pax_global_header00006660000000000000000000000064147733401260014521gustar00rootroot0000000000000052 comment=1c1a32ed2f4c7799830d50bf4cb159222aafec48 libpg_query-17-6.1.0/000077500000000000000000000000001477334012600142745ustar00rootroot00000000000000libpg_query-17-6.1.0/.gitattributes000066400000000000000000000000141477334012600171620ustar00rootroot00000000000000*.sql binarylibpg_query-17-6.1.0/.github/000077500000000000000000000000001477334012600156345ustar00rootroot00000000000000libpg_query-17-6.1.0/.github/workflows/000077500000000000000000000000001477334012600176715ustar00rootroot00000000000000libpg_query-17-6.1.0/.github/workflows/ci.yml000066400000000000000000000065641477334012600210220ustar00rootroot00000000000000name: 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@v4 - name: Cache protobuf library if: matrix.protobuf_lib == 'protobuf-cpp' id: cache-protobuf uses: actions/cache@v4 with: path: protobuf-25.1 key: ${{ runner.os }}-protobuf-25.1 - name: Build protobuf library if: matrix.protobuf_lib == 'protobuf-cpp' && steps.cache-protobuf.outputs.cache-hit != 'true' run: | git clone --depth 1 --branch v25.1 https://github.com/protocolbuffers/protobuf.git protobuf-25.1 cd protobuf-25.1 git submodule update --init --recursive cmake . cmake --build . --parallel 10 - name: Install protobuf library if: matrix.protobuf_lib == 'protobuf-cpp' run: | cd protobuf-25.1 sudo make install sudo ldconfig - name: Install Valgrind if: matrix.valgrind == 'valgrind' run: sudo apt update && 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) }} build_macos: runs-on: macos-latest steps: - name: Check out code uses: actions/checkout@v4 - name: Build and run tests run: make build_windows_msvc: runs-on: windows-latest strategy: fail-fast: false matrix: arch: [x64, x86] steps: - name: Configure MSVC developer console uses: ilammy/msvc-dev-cmd@v1 with: arch: ${{ matrix.arch }} - name: Check out code uses: actions/checkout@v4 - name: Build and run tests run: nmake /F Makefile.msvc build_windows_msys2: runs-on: windows-latest strategy: fail-fast: false matrix: sys: [mingw64, mingw32, ucrt64, clang64] steps: - name: Set up MSYS2 and compiler uses: msys2/setup-msys2@v2 with: msystem: ${{matrix.sys}} pacboy: >- toolchain:p install: >- make diffutils - name: Check out code uses: actions/checkout@v4 - name: Build and run tests shell: msys2 {0} run: | make libpg_query-17-6.1.0/.gitignore000066400000000000000000000003141477334012600162620ustar00rootroot00000000000000postgres/* postgres.tar.bz2 *.o *.a *.obj pg_query.lib examples/* !examples/*.c test/* !test/*.c !test/*.sql !test/*.expected.json !test/valgrind.supp !test/**/ test/*.dSYM tmp/* !tmp/.gitkeep .vs/* libpg_query-17-6.1.0/.ruby-version000066400000000000000000000000061477334012600167350ustar00rootroot000000000000003.1.2 libpg_query-17-6.1.0/CHANGELOG.md000066400000000000000000000515021477334012600161100ustar00rootroot00000000000000# Changelog All versions are tagged by the major Postgres version, plus an individual semver for this library itself. ## 17-6.1.0 2025-04-02 * Update to Postgres 17.4, and add recent patches scheduled for Postgres 17.5 (not yet released) - Notably, this pulls in support for macOS 15.4 which defines strchrnul in its standard library, fixing builds on up-to-date macOS versions. - Deparser improvements - Add parenthesis around AT LOCAL / AT TIMEZONE if needed - Correctness improvements related to expressions and function calls ## 17-6.0.0 2024-09-27 * Upgrade to Postgres 17 * Deparser: - Add support for deparsing `JSON_TABLE`, `JSON_QUERY`, `JSON_EXISTS`, `JSON_VALUE` - Add support for deparsing `JSON`, `JSON_SCALAR`, `JSON_SERIALIZE` - Add support for deparsing `COPY ... FORCE_NULL(*)` - Add support for deparsing `ALTER COLUMN ... SET EXPRESSION AS` - Add support for deparsing `SET STATISTICS DEFAULT` - Add support for deparsing `SET ACCESS METHOD DEFAULT` - Add support for deparsing `... AT LOCAL` - Add support for deparsing `merge_action()` - Add support for deparsing `MERGE ... RETURNING` - Add support for deparsing `NOT MATCHED [ BY TARGET ]` ## 16-5.1.0 2024-01-08 * Add support for compiling on Windows - In order to build on Windows when using MSVC, use the new "Makefile.msvc" with nmake, or directly compile all .c files in the src folder into a library - If compiling directly, add src/postgres/include/port/win32 to the include path, and when using MSVC also add src/postgres/include/port/win32_msvc * Add support for compiling on 32-bit systems - The relevant code is enabled at compile time by checking the pointer size (__SIZEOF_POINTER__ == 4) * Move internal headers and included .c files to src/include folder - This avoids having any .c files in the top-level src/ folder that can't be directly compiled, and thus lets us simplify the logic for defining which source units are to be compiled. * Remove strnlen fallback implementation * Avoid use of mmap, asprintf and strndup to improve portability * Improve compatibility with non-POSIX systems and C89 compilers ## 16-5.0.0 2023-12-22 * Update to Postgres 16.1 * Drop support for arbitrary trailing junk on integer literals - Support for parsing junk after parameters, e.g. `$1OR` is retained * Deparser: - Fix deparsing of `SYSTEM_USER` - Add support for deparsing `STORAGE` mode - Add support for deparsing `REVOKE ... CASCADE` - Rework a_expr/b_expr/c_expr deparsing to match gram.y structure - Add support for deparsing `COMPRESSION` option for columns - Add support for deparsing `NULLS NOT DISTINCT` in unique constraints - Add support for deparsing new SQL/JSON functionality ## 15-4.2.4 2023-12-20 * Scanner: Add token `ASCII_36` ("$") to support queries like "SELECT $identifier" [#211](https://github.com/pganalyze/libpg_query/pull/211), [#219](https://github.com/pganalyze/libpg_query/pull/219) - Whilst these queries are not valid SQL and would fail parsing, this token can show up when using `pg_query_scan` or `pg_query_split_with_scanner` directly * Normalize: Fix incorrect type cast [#223](https://github.com/pganalyze/libpg_query/pull/223) * Deparser: - Fix some `BooleanTest` cases [#206](https://github.com/pganalyze/libpg_query/issues/206) - Fix `ALTER TABLE ... ENABLE TRIGGER ALL` [#222](https://github.com/pganalyze/libpg_query/pull/222) - Add parens around type casts in `IndexElem` [#214](https://github.com/pganalyze/libpg_query/pull/214) - Treat type casts in `func_expr_windowless` as functions [#214](https://github.com/pganalyze/libpg_query/pull/214) * Support changing parse mode and config settings affecting the parser [#216](https://github.com/pganalyze/libpg_query/pull/216) - Alternate parse modes are useful for parsing PL/pgSQL expressions, as well as type names - Additionally, you can now change config settings that affect parsing, like `standard_conforming_strings` - To pass options, use the new methods ending in `_opts`, e.g. `pg_query_parse_opts` ## 15-4.2.3 2023-07-07 * Fix builds when compiling with `glibc >= 2.38` [#203](https://github.com/pganalyze/libpg_query/pull/203) * Deparser: Add support for COALESCE and other expressions in LIMIT clause [#199](https://github.com/pganalyze/libpg_query/pull/199) ## 15-4.2.2 2023-07-07 * Deparser: - Add support for multi-statement CREATE PROCEDURE definitions [#197](https://github.com/pganalyze/libpg_query/pull/197) - Correctly quote identifier in ALTER TABLE ... ADD CONSTRAINT [x] [#196](https://github.com/pganalyze/libpg_query/pull/196) - Add support for index fillfactor within CREATE TABLE, fix SHOW ALL [#193](https://github.com/pganalyze/libpg_query/pull/193) - Move to dedicated file for easier inclusion in third-party projects [#192](https://github.com/pganalyze/libpg_query/pull/192) ## 15-4.2.1 2023-05-17 * Deparser: Handle INTERVAL correctly when used in SET statements [#184](https://github.com/pganalyze/libpg_query/pull/184) * Deparser: Ensure index names are quoted as identifiers [#182](https://github.com/pganalyze/libpg_query/pull/182) * Remove limits.h from pg_query_deparse.c [#181](https://github.com/pganalyze/libpg_query/pull/181) ## 15-4.2.0 2023-02-06 * Update copyright notice years and authors [#175](https://github.com/pganalyze/libpg_query/pull/175) * Allow trailing junk in numeric literals [#177](https://github.com/pganalyze/libpg_query/pull/177) - Allows parsing queries like `SELECT * FROM a WHERE b=$1ORc=$2` * NetBSD support [#172](https://github.com/pganalyze/libpg_query/pull/172/) ## 15-4.1.0 2022-12-28 * Add `Boolean` fingerprinting - `Boolean` nodes are now output during fingerprinting * Fix parsing issue on 32-bit big endian machines - Now we use `size_t` to indicate the protobuf message size ## 15-4.0.0 2022-11-29 * Update to Postgres 15.1 * Add support for `MERGE` statements * Add support for `ALTER TABLE ALL IN TABLESPACE ...` statements * Add support for publication objects - E.g. `CREATE PUBLICATION foo FOR TABLES IN SCHEMA CURRENT_SCHEMA` * Deparser now attempts to deparse `COPY` statements first using the old Postgres 8.4-style syntax (e.g. `COPY foo FROM STDIN FREEZE CSV`). ## 14-3.0.0 2022-11-17 Special thanks to @wolfgangwalther and @tlisanti for most of the work done on this release. * Update to Postgres 14.6 * Drop support for `?` parameter syntax * Update `fingerprint.json` to include newly added tests, regeneate tests ## 13-2.2.0 2022-11-02 * Update to Postgres 13.8 patch release [#156](https://github.com/pganalyze/libpg_query/pull/156) * Backport Xcode 14.1 build fix from upcoming 13.9 release [#156](https://github.com/pganalyze/libpg_query/pull/156) * Fingerprinting version 3.1 [#155](https://github.com/pganalyze/libpg_query/pull/155) - Fixes issue with "SELECT DISTINCT" having the same fingerprint as "SELECT" (fingerprints for "SELECT DISTINCT" will change with this revision) - Group additional DDL statements together that otherwise generate a lot of unique fingerprints (ListenStmt, UnlistenStmt, NotifyStmt, CreateFunctionStmt, FunctionParameter and DoStmt) * Normalize additional DDL statements [#155](https://github.com/pganalyze/libpg_query/pull/155) - Normalizes arguments to CreateFunctionStmt, DoStmt, CreateSubscriptionStmt, AlterSubscriptionStmt, CreateUserMapping and AlterUserMapping. - Note that this is different from pg_stat_statements itself, which does not normalize utility statements at all today. ## 13-2.1.2 2022-06-28 * Add support for analyzing PL/pgSQL code inside DO blocks [#142](https://github.com/pganalyze/libpg_query/pull/142) * Fix memory leak in pg_query_fingerprint error handling [#141](https://github.com/pganalyze/libpg_query/pull/141) ## 13-2.1.1 2022-05-03 * PL/pgSQL parser - Add support for Assert [#135](https://github.com/pganalyze/libpg_query/pull/135) - Add support for SET, COMMIT, ROLLBACK and CALL [#130](https://github.com/pganalyze/libpg_query/pull/130) * Add support for parsing more operators that include a `?` character (special cased to support old pg_stat_statements query texts) - ltree extension [#136](https://github.com/pganalyze/libpg_query/pull/136) - promscale extension [#133](https://github.com/pganalyze/libpg_query/pull/133) * Deparser improvements - Prefix errors with "deparse", and remove some asserts [#131](https://github.com/pganalyze/libpg_query/pull/131) - Fix potential segfault when passing invalid protobuf (RawStmt without Stmt) [#128](https://github.com/pganalyze/libpg_query/pull/128) ## 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-17-6.1.0/LICENSE000066400000000000000000000030311477334012600152760ustar00rootroot00000000000000Copyright (c) 2015, Lukas Fittl Copyright (c) 2016-2023, Duboce Labs, Inc. (pganalyze) 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-17-6.1.0/Makefile000066400000000000000000000352741477334012600157470ustar00rootroot00000000000000root_dir := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) word-dot = $(word $2,$(subst ., ,$1)) TARGET = pg_query ARLIB = lib$(TARGET).a PGDIR = $(root_dir)/tmp/postgres PGDIRBZ2 = $(root_dir)/tmp/postgres.tar.bz2 PGDIRZIP = $(root_dir)/tmp/postgres.zip PG_VERSION = 17.4 PG_VERSION_MAJOR = $(call word-dot,$(PG_VERSION),1) PG_VERSION_NUM = 170004 PG_BRANCH = REL_17_STABLE PROTOC_VERSION = 25.1 VERSION = 6.1.0 VERSION_MAJOR = $(call word-dot,$(VERSION),1) VERSION_MINOR = $(call word-dot,$(VERSION),2) VERSION_PATCH = $(call word-dot,$(VERSION),3) SO_VERSION = $(shell printf '%02d%02d' $(PG_VERSION_MAJOR) $(VERSION_MAJOR)).$(VERSION_MINOR) ifeq ($(shell uname -s), Darwin) SOLIB = lib$(TARGET).dylib SONAME = lib$(TARGET).$(SO_VERSION).dylib SOLIBVER = lib$(TARGET).$(SO_VERSION).$(VERSION_PATCH).dylib SOFLAG = -install_name else SOLIB = lib$(TARGET).so SONAME = $(SOLIB).$(SO_VERSION) SOLIBVER = $(SONAME).$(VERSION_PATCH) SOFLAG = -soname endif SRC_FILES := $(wildcard src/*.c src/postgres/*.c) vendor/protobuf-c/protobuf-c.c vendor/xxhash/xxhash.c protobuf/pg_query.pb-c.c OBJ_FILES := $(SRC_FILES:.c=.o) override CFLAGS += -g -I. -I./vendor -I./src/include -I./src/postgres/include -Wall -Wno-unused-function -Wno-unused-value -Wno-unused-variable -fno-strict-aliasing -fwrapv -fPIC ifeq ($(OS),Windows_NT) override CFLAGS += -I./src/postgres/include/port/win32 endif override PG_CONFIGURE_FLAGS += -q --without-readline --without-zlib --without-icu override TEST_CFLAGS += -g -I. -I./vendor -Wall 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) $(PGDIRZIP) AR ?= ar 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 --num-callers=50 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/include -I./src/postgres/include -DHAVE_PTHREAD -std=c++17 -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++ -lm # 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 := $(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) $(PGDIRZIP) .PHONY: all clean build build_shared extract_source examples test install $(PGDIR): # We temporarily build off REL_17_STABLE to pull in https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=6da2ba1d8a031984eb016fed6741bb2ac945f19d # TODO: Go back to upstream tarball once 17.5 is released # tar -xjf $(PGDIRBZ2) # curl -o $(PGDIRBZ2) https://ftp.postgresql.org/pub/source/v$(PG_VERSION)/postgresql-$(PG_VERSION).tar.bz2 # mv $(root_dir)/postgresql-$(PG_VERSION) $(PGDIR) curl -L -o $(PGDIRZIP) https://github.com/postgres/postgres/archive/refs/heads/$(PG_BRANCH).zip unzip $(PGDIRZIP) mv $(root_dir)/postgres-$(PG_BRANCH) $(PGDIR) cd $(PGDIR); patch -p1 < $(root_dir)/patches/01_parser_additional_param_ref_support.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); patch -p1 < $(root_dir)/patches/09_allow_param_junk.patch cd $(PGDIR); patch -p1 < $(root_dir)/patches/10_avoid_namespace_hashtab_impl_gen.patch cd $(PGDIR); ./configure $(PG_CONFIGURE_FLAGS) cd $(PGDIR); make -C src/pl/plpgsql/src pl_gram.h plerrcodes.h pl_reserved_kwlist_d.h pl_unreserved_kwlist_d.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 cd $(PGDIR); make -C src/common kwlist_d.h # Avoid problems with static asserts echo "#undef StaticAssertDecl" >> $(PGDIR)/src/include/c.h echo "#define StaticAssertDecl(condition, errmessage)" >> $(PGDIR)/src/include/c.h # Add pg_config.h overrides cat scripts/pg_config_overrides.h >> $(PGDIR)/src/include/pg_config.h # Only define strlcpy when needed sed -i "" '$(shell echo 's/\#include "c.h"/#include "c.h"\n#if HAVE_DECL_STRLCPY == 0/')' $(PGDIR)/src/port/strlcpy.c echo "#endif // HAVE_DECL_STRLCPY == 0" >> $(PGDIR)/src/port/strlcpy.c # Define symbols needed by elog.c that are commonly defined by win32/signal.c echo "#ifdef WIN32" >> $(PGDIR)/src/backend/utils/error/elog.c echo "volatile int pg_signal_queue;" >> $(PGDIR)/src/backend/utils/error/elog.c echo "int pg_signal_mask;" >> $(PGDIR)/src/backend/utils/error/elog.c echo "void pgwin32_dispatch_queued_signals(void) {}" >> $(PGDIR)/src/backend/utils/error/elog.c echo "#endif" >> $(PGDIR)/src/backend/utils/error/elog.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/ # Override OS-specific pg_config_os.h to only load Win32 logic (the primary port logic that matters for libpg_query), if needed echo "#if defined(_WIN32) || defined(_WIN64)" > ./src/postgres/include/pg_config_os.h echo "#include \"port/win32.h\"" >> ./src/postgres/include/pg_config_os.h # Don't mark anything as visible based on how Postgres defines it echo "#undef PGDLLIMPORT" >> ./src/postgres/include/pg_config_os.h echo "#undef PGDLLEXPORT" >> ./src/postgres/include/pg_config_os.h # Avoid getting incorrect sigsetjmp overrides echo "#ifdef __clang__" >> ./src/postgres/include/pg_config_os.h echo "#undef __MINGW64__" >> ./src/postgres/include/pg_config_os.h echo "#endif /* __clang__ */" >> ./src/postgres/include/pg_config_os.h echo "#endif" >> ./src/postgres/include/pg_config_os.h # Adjust version string to ignore differences in build environments sed -i "" '$(shell echo 's/\#define PG_VERSION_STR .*/#define PG_VERSION_STR "PostgreSQL $(PG_VERSION) \(libpg_query\)"/')' ./src/postgres/include/pg_config.h # Copy version information so its easily accessible sed -i "" '$(shell echo 's/\#define PG_MAJORVERSION .*/#define PG_MAJORVERSION "$(PG_VERSION_MAJOR)"/')' pg_query.h sed -i "" '$(shell echo 's/\#define PG_VERSION .*/#define PG_VERSION "$(PG_VERSION)"/')' pg_query.h sed -i "" '$(shell echo 's/\#define PG_VERSION_NUM .*/#define PG_VERSION_NUM $(PG_VERSION_NUM)/')' pg_query.h # Copy regress SQL files so we can use them in tests rm -f ./test/sql/postgres_regress/*.sql rm -f ./test/sql/plpgsql_regress/*.sql cp $(PGDIR)/src/test/regress/sql/*.sql ./test/sql/postgres_regress/ cp $(PGDIR)/src/pl/plpgsql/src/sql/*.sql ./test/sql/plpgsql_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,$(SOFLAG),$(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/fingerprint_opts test/normalize test/normalize_utility test/parse test/parse_opts test/parse_protobuf test/parse_protobuf_opts 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/fingerprint_opts || (cat test/valgrind.log && false) $(VALGRIND_MEMCHECK) test/normalize || (cat test/valgrind.log && false) $(VALGRIND_MEMCHECK) test/normalize_utility || (cat test/valgrind.log && false) $(VALGRIND_MEMCHECK) test/parse || (cat test/valgrind.log && false) $(VALGRIND_MEMCHECK) test/parse_opts || (cat test/valgrind.log && false) $(VALGRIND_MEMCHECK) test/parse_protobuf || (cat test/valgrind.log && false) $(VALGRIND_MEMCHECK) test/parse_protobuf_opts || (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/fingerprint_opts test/normalize test/normalize_utility test/parse test/parse_opts test/parse_protobuf test/parse_protobuf_opts 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/fingerprint_opts: test/fingerprint_opts.c test/fingerprint_opts_tests.c $(ARLIB) # We have "-Isrc/" because this test uses pg_query_fingerprint_with_opts $(CC) $(TEST_CFLAGS) -o $@ -Isrc/ test/fingerprint_opts.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/normalize_utility: test/normalize_utility.c test/normalize_utility_tests.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ test/normalize_utility.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_opts: test/parse_opts.c test/parse_opts_tests.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ test/parse_opts.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/parse_protobuf_opts: test/parse_protobuf_opts.c test/parse_opts_tests.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ test/parse_protobuf_opts.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-17-6.1.0/Makefile.msvc000066400000000000000000000074001477334012600167040ustar00rootroot00000000000000# Makefile for "nmake", part of Microsoft Visual Studio Compiler (MSVC) on Windows TARGET = pg_query ARLIB = $(TARGET).lib SRC_FILES = src/*.c src/postgres/*.c vendor/protobuf-c/protobuf-c.c vendor/xxhash/xxhash.c protobuf/pg_query.pb-c.c CFLAGS = -I. -I./vendor -I./src/postgres/include -I./src/include -I./src/postgres/include/port/win32 -I./src/postgres/include/port/win32_msvc RM = del all: examples test build build: $(ARLIB) clean: $(RM) *.obj $(RM) pg_query.lib .PHONY: all clean build build_shared extract_source examples test install $(ARLIB): clean $(SRC_FILES) $(CC) $(CFLAGS) /c $(SRC_FILES) lib /OUT:pg_query.lib *.obj 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) $(CFLAGS) -o $@ examples/simple.c $(ARLIB) examples/scan: examples/scan.c $(ARLIB) $(CC) $(CFLAGS) -o $@ examples/scan.c $(ARLIB) examples/normalize: examples/normalize.c $(ARLIB) $(CC) $(CFLAGS) -o $@ examples/normalize.c $(ARLIB) examples/simple_error: examples/simple_error.c $(ARLIB) $(CC) $(CFLAGS) -o $@ examples/simple_error.c $(ARLIB) examples/normalize_error: examples/normalize_error.c $(ARLIB) $(CC) $(CFLAGS) -o $@ examples/normalize_error.c $(ARLIB) examples/simple_plpgsql: examples/simple_plpgsql.c $(ARLIB) $(CC) $(CFLAGS) -o $@ examples/simple_plpgsql.c $(ARLIB) TESTS = test/deparse test/fingerprint test/fingerprint_opts test/normalize test/parse test/parse_opts test/parse_protobuf test/parse_protobuf_opts test/parse_plpgsql test/scan test/split test: $(TESTS) .\test\deparse .\test\fingerprint .\test\fingerprint_opts .\test\normalize .\test\parse .\test\parse_opts .\test\parse_protobuf .\test\parse_protobuf_opts .\test\scan .\test\split # Doesn't work because of C2026: string too big, trailing characters truncated #test/complex: test/complex.c $(ARLIB) # We have "-Isrc/" because this test uses pg_query_fingerprint_with_opts # $(CC) $(CFLAGS) -o $@ -Isrc/ test/complex.c $(ARLIB) # Doesn't work since this requires pthreads #test/concurrency: test/concurrency.c test/parse_tests.c $(ARLIB) # $(CC) $(CFLAGS) -o $@ test/concurrency.c $(ARLIB) test/deparse: test/deparse.c test/deparse_tests.c $(ARLIB) $(CC) $(CFLAGS) -o $@ test/deparse.c $(ARLIB) test/fingerprint: test/fingerprint.c test/fingerprint_tests.c $(ARLIB) # We have "-Isrc/" because this test uses pg_query_fingerprint_with_opts $(CC) $(CFLAGS) -o $@ -Isrc/ test/fingerprint.c $(ARLIB) test/fingerprint_opts: test/fingerprint_opts.c test/fingerprint_opts_tests.c $(ARLIB) # We have "-Isrc/" because this test uses pg_query_fingerprint_with_opts $(CC) $(CFLAGS) -o $@ -Isrc/ test/fingerprint_opts.c $(ARLIB) test/normalize: test/normalize.c test/normalize_tests.c $(ARLIB) $(CC) $(CFLAGS) -o $@ test/normalize.c $(ARLIB) test/parse: test/parse.c test/parse_tests.c $(ARLIB) $(CC) $(CFLAGS) -o $@ test/parse.c $(ARLIB) test/parse_opts: test/parse_opts.c test/parse_opts_tests.c $(ARLIB) $(CC) $(CFLAGS) -o $@ test/parse_opts.c $(ARLIB) test/parse_plpgsql: test/parse_plpgsql.c test/parse_tests.c $(ARLIB) $(CC) $(CFLAGS) -o $@ test/parse_plpgsql.c $(ARLIB) test/parse_protobuf: test/parse_protobuf.c test/parse_tests.c $(ARLIB) $(CC) $(CFLAGS) -o $@ test/parse_protobuf.c $(ARLIB) test/parse_protobuf_opts: test/parse_protobuf_opts.c test/parse_opts_tests.c $(ARLIB) $(CC) $(CFLAGS) -o $@ test/parse_protobuf_opts.c $(ARLIB) test/scan: test/scan.c test/scan_tests.c $(ARLIB) $(CC) $(CFLAGS) -o $@ test/scan.c $(ARLIB) test/split: test/split.c test/split_tests.c $(ARLIB) $(CC) $(CFLAGS) -o $@ test/split.c $(ARLIB) libpg_query-17-6.1.0/README.md000066400000000000000000000246171477334012600155650ustar00rootroot00000000000000# 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), [pg_query.rs](https://github.com/pganalyze/pg_query.rs) (Rust), [pgsql-parser](https://github.com/launchql/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 17-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). When compiling on Windows with Visual Studio, instead use `nmake` with the `Makefile.msvc`: ```sh nmake /F Makefile.msvc ``` ## 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": 170004, "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: 170004, 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 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 | |--------------------------|------------|---------------------| | 17 | 17-latest | Active development | | 16 | 16-latest | Critical fixes only | | 15 | 15-latest | Critical fixes only | | 14 | 14-latest | Critical fixes only | | 13 | 13-latest | Critical fixes only | | 12 | (n/a) | Not supported | | 11 | (n/a) | Not supported | | 10 | 10-latest | No longer supported | | 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/launchql/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), [psqlparse2](https://github.com/dani-maarouf/psqlparse2) * OCaml: [pg_query-ocaml](https://github.com/roddyyaga/pg_query-ocaml) * Rust: [pg_query.rs](https://github.com/pganalyze/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)) * [pgspot](https://github.com/timescale/pgspot) * [Postgres Language Server](https://github.com/supabase/postgres_lsp) * 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-2023, 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) 2015, Lukas Fittl Copyright (c) 2016-2025, Duboce Labs, Inc. (pganalyze) libpg_query-17-6.1.0/examples/000077500000000000000000000000001477334012600161125ustar00rootroot00000000000000libpg_query-17-6.1.0/examples/normalize.c000066400000000000000000000007531477334012600202630ustar00rootroot00000000000000#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-17-6.1.0/examples/normalize_error.c000066400000000000000000000010671477334012600214730ustar00rootroot00000000000000#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-17-6.1.0/examples/scan.c000066400000000000000000000117751477334012600172150ustar00rootroot00000000000000#include #include #include #include "protobuf/pg_query.pb-c.h" size_t testCount = 13; 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 '!', 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: %zu, size: %zu\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-17-6.1.0/examples/simple.c000066400000000000000000000020371477334012600175510ustar00rootroot00000000000000// 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 = 6; const char* tests[] = { "SELECT 1", "SELECT * FROM x WHERE z = 2", "SELECT 5.41414", "SELECT $1", "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-17-6.1.0/examples/simple_error.c000066400000000000000000000011221477334012600207540ustar00rootroot00000000000000#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-17-6.1.0/examples/simple_plpgsql.c000066400000000000000000000014461477334012600213160ustar00rootroot00000000000000#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-17-6.1.0/patches/000077500000000000000000000000001477334012600157235ustar00rootroot00000000000000libpg_query-17-6.1.0/patches/01_parser_additional_param_ref_support.patch000066400000000000000000000153621477334012600265470ustar00rootroot00000000000000commit 708fe3468d0f373c2208ae927d0de52247f2fda8 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 215d47e5a2..452e17edf2 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -177,6 +177,8 @@ static Node *makeBoolAConst(bool state, int location); static Node *makeBitStringConst(char *str, int location); static Node *makeNullAConst(int location); static Node *makeAConst(Node *v, 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); @@ -1210,6 +1212,11 @@ AlterOptRoleElem: $$ = makeDefElem("password", (Node *) makeString($2), @1); } + | PASSWORD PARAM + { + $$ = makeDefElem("password", + (Node *)makeParamRef($2, @2), @1); + } | PASSWORD NULL_P { $$ = makeDefElem("password", NULL, @1); @@ -1224,6 +1231,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, @@ -1737,6 +1754,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); @@ -1758,6 +1783,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); @@ -1767,6 +1800,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); @@ -1809,6 +1850,8 @@ var_value: opt_boolean_or_string { $$ = makeStringConst($1, @1); } | NumericOnly { $$ = makeAConst($1, @1); } + | PARAM + { $$ = makeParamRef($1, @1); } ; iso_level: READ UNCOMMITTED { $$ = "read uncommitted"; } @@ -1842,6 +1885,10 @@ zone_value: { $$ = makeStringConst($1, @1); } + | PARAM + { + $$ = makeParamRef($1, @1); + } | IDENT { $$ = makeStringConst($1, @1); @@ -16590,6 +16637,10 @@ extract_list: { $$ = list_make2(makeStringConst($1, @1), $3); } + | PARAM FROM a_expr + { + $$ = list_make2(makeParamRef($1, @1), $3); + } ; /* Allow delimited string Sconst in extract_arg as an SQL extension. @@ -17246,6 +17297,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); @@ -17265,6 +17355,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, @2, 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); @@ -18698,6 +18805,24 @@ makeAConst(Node *v, int location) return n; } +/* 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-17-6.1.0/patches/03_lexer_track_yyllocend.patch000066400000000000000000000062001477334012600236310ustar00rootroot00000000000000commit 386cf95ca17d28ae4bc7db92a784ab8f6dde9f8b 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 3248fb5108..28fdd262b1 100644 --- a/src/backend/parser/scan.l +++ b/src/backend/parser/scan.l @@ -538,6 +538,7 @@ other . { /* If NCHAR isn't a keyword, just return "n" */ yylval->str = pstrdup("n"); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return IDENT; } } @@ -606,9 +607,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: @@ -621,9 +624,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"); @@ -761,6 +766,7 @@ other . yyextra->dolqstart = NULL; BEGIN(INITIAL); yylval->str = litbufdup(yyscanner); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return SCONST; } else @@ -806,6 +812,7 @@ other . if (yyextra->literallen >= NAMEDATALEN) truncate_identifier(ident, yyextra->literallen, true); yylval->str = ident; + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return IDENT; } {dquote} { @@ -814,6 +821,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} { @@ -833,6 +841,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; } @@ -1097,6 +1106,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 d6293b1e87..59f492c6de 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-17-6.1.0/patches/04_lexer_comments_as_tokens.patch000066400000000000000000000100561477334012600243430ustar00rootroot00000000000000commit 17aa7e51f4a3bf12d4662720ef39f6f60336dc83 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 452e17edf2..87e6e1c858 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -695,6 +695,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 118488c3f3..551b37a09a 100644 --- a/src/backend/parser/parser.c +++ b/src/backend/parser/parser.c @@ -156,6 +156,9 @@ base_yylex(YYSTYPE *lvalp, YYLTYPE *llocp, core_yyscan_t yyscanner) case WITHOUT: cur_token_length = 7; 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 28fdd262b1..5c930dfda2 100644 --- a/src/backend/parser/scan.l +++ b/src/backend/parser/scan.l @@ -226,7 +226,7 @@ non_newline [^\n\r] comment ("--"{non_newline}*) -whitespace ({space}+|{comment}) +whitespace ({space}+) /* * SQL requires at least one newline in the whitespace separating @@ -235,8 +235,8 @@ whitespace ({space}+|{comment}) * it, whereas {whitespace} should generally have a * after it... */ -special_whitespace ({space}+|{comment}{newline}) -non_newline_whitespace ({non_newline_space}|{comment}) +special_whitespace ({space}+) +non_newline_whitespace ({non_newline_space}) whitespace_with_newline ({non_newline_whitespace}*{newline}{special_whitespace}*) quote ' @@ -444,6 +444,11 @@ other . /* ignore */ } +{comment} { + SET_YYLLOC(); + return SQL_COMMENT; + } + {xcstart} { /* Set location in case of syntax error in comment */ SET_YYLLOC(); @@ -462,7 +467,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 9daeee3303..1c32d3ccce 100644 --- a/src/interfaces/ecpg/preproc/parser.c +++ b/src/interfaces/ecpg/preproc/parser.c @@ -86,6 +86,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 97be9239e3..165b9b0a8c 100644 --- a/src/pl/plpgsql/src/pl_gram.y +++ b/src/pl/plpgsql/src/pl_gram.y @@ -232,6 +232,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 9407da51ef..51919febe5 100644 --- a/src/pl/plpgsql/src/pl_scanner.c +++ b/src/pl/plpgsql/src/pl_scanner.c @@ -359,6 +359,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-17-6.1.0/patches/05_limit_option_enum_value_default.patch000066400000000000000000000025621477334012600257070ustar00rootroot00000000000000commit e855d8c81a0cd73aa1913825e7b4395961e6f2c9 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 e6f1fb1562..24da52d62c 100644 --- a/src/backend/executor/nodeLimit.c +++ b/src/backend/executor/nodeLimit.c @@ -153,7 +153,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 855009fd6e..7cc3ca38dc 100644 --- a/src/include/nodes/nodes.h +++ b/src/include/nodes/nodes.h @@ -427,6 +427,7 @@ 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 */ } LimitOption; libpg_query-17-6.1.0/patches/06_alloc_set_delete_free_list.patch000066400000000000000000000034451477334012600246020ustar00rootroot00000000000000commit f716536100e86bb410341daf3f84cf23f4e3adc2 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 dede30dd86..16306c3216 100644 --- a/src/backend/utils/mmgr/aset.c +++ b/src/backend/utils/mmgr/aset.c @@ -1722,3 +1722,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 cd9596ff21..fac1271673 100644 --- a/src/include/utils/memutils.h +++ b/src/include/utils/memutils.h @@ -114,6 +114,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-17-6.1.0/patches/07_plpgsql_start_finish_datums.patch000066400000000000000000000042721477334012600250730ustar00rootroot00000000000000commit 4850baf8039f2714d01c45a64af7ccbd12bbbd64 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 f1bce708d6..bc9ca26eca 100644 --- a/src/pl/plpgsql/src/pl_comp.c +++ b/src/pl/plpgsql/src/pl_comp.c @@ -106,8 +106,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, @@ -2292,7 +2290,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; @@ -2326,7 +2324,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 50c3b28472..418516edb9 100644 --- a/src/pl/plpgsql/src/plpgsql.h +++ b/src/pl/plpgsql/src/plpgsql.h @@ -1261,6 +1261,8 @@ extern PLpgSQL_recfield *plpgsql_build_recfield(PLpgSQL_rec *rec, extern PGDLLEXPORT 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-17-6.1.0/patches/08_avoid_zero_length_delimiter_in_regression_tests.patch000066400000000000000000000114001477334012600311570ustar00rootroot00000000000000commit 48cc023e889e02f8f172c5130a6f958c92da3ddf 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 61a19cdc4c..dea5308f64 100644 --- a/src/test/regress/expected/copy2.out +++ b/src/test/regress/expected/copy2.out @@ -510,9 +510,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 @@ -520,17 +520,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 35d4cf1d46..4a24834dab 100644 --- a/src/test/regress/expected/create_am.out +++ b/src/test/regress/expected/create_am.out @@ -537,10 +537,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 8b14962194..9a5eaf3a6d 100644 --- a/src/test/regress/sql/copy2.sql +++ b/src/test/regress/sql/copy2.sql @@ -325,21 +325,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 @@ -353,21 +353,21 @@ ROLLBACK; -- 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 *, FORCE_NULL *); -4,,"" +4,,"notempty" \. COMMIT; SELECT b, c FROM forcetest WHERE a = 4; -- should succeed with effect ("b" remains an empty string) BEGIN; COPY forcetest (a, b, c) FROM STDIN WITH (FORMAT csv, FORCE_NOT_NULL *); -5,,"" +5,,"notempty" \. COMMIT; SELECT b, c FROM forcetest WHERE a = 5; -- should succeed with effect ("c" remains NULL) BEGIN; COPY forcetest (a, b, c) FROM STDIN WITH (FORMAT csv, FORCE_NULL *); -6,"b","" +6,"b","notempty" \. COMMIT; SELECT b, c FROM forcetest WHERE a = 6; diff --git a/src/test/regress/sql/create_am.sql b/src/test/regress/sql/create_am.sql index 825aed325e..f305bf68ce 100644 --- a/src/test/regress/sql/create_am.sql +++ b/src/test/regress/sql/create_am.sql @@ -343,7 +343,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-17-6.1.0/patches/09_allow_param_junk.patch000066400000000000000000000011251477334012600226000ustar00rootroot00000000000000diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l index c97db94611..a0212898f9 100644 --- a/src/backend/parser/scan.l +++ b/src/backend/parser/scan.l @@ -435,7 +435,6 @@ param \${decdigit}+ integer_junk {decinteger}{identifier} numeric_junk {numeric}{identifier} real_junk {real}{identifier} -param_junk \${decdigit}+{identifier} other . @@ -1010,10 +1009,6 @@ other . yylval->ival = atol(yytext + 1); return PARAM; } -{param_junk} { - SET_YYLLOC(); - yyerror("trailing junk after parameter"); - } {decinteger} { SET_YYLLOC(); libpg_query-17-6.1.0/patches/10_avoid_namespace_hashtab_impl_gen.patch000066400000000000000000000015411477334012600257270ustar00rootroot00000000000000commit f664bdae4be383875bf3bfb0b6919d527942a146 Author: msepga Date: Mon Sep 23 12:52:44 2024 -0400 Avoid generating hash table functions for namespace catalog If the helper `spcachekey_hash` and `spcachekey_equal` static functions are not included in the source, this fails to build. We instead just avoid generating the hashtable function implementations entirely. diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c index 43b707699d..41bed2c9fd 100644 --- a/src/backend/catalog/namespace.c +++ b/src/backend/catalog/namespace.c @@ -285,7 +285,7 @@ spcachekey_equal(SearchPathCacheKey a, SearchPathCacheKey b) #define SH_EQUAL(tb, a, b) spcachekey_equal(a, b) #define SH_SCOPE static inline #define SH_DECLARE -#define SH_DEFINE +// #define SH_DEFINE #include "lib/simplehash.h" /* libpg_query-17-6.1.0/pg_query.h000066400000000000000000000110501477334012600162750ustar00rootroot00000000000000#ifndef PG_QUERY_H #define PG_QUERY_H #include #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 { size_t 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; // Postgres parser options (parse mode and GUCs that affect parsing) typedef enum { PG_QUERY_PARSE_DEFAULT = 0, PG_QUERY_PARSE_TYPE_NAME, PG_QUERY_PARSE_PLPGSQL_EXPR, PG_QUERY_PARSE_PLPGSQL_ASSIGN1, PG_QUERY_PARSE_PLPGSQL_ASSIGN2, PG_QUERY_PARSE_PLPGSQL_ASSIGN3 } PgQueryParseMode; // We technically only need 3 bits to store parse mode, but // having 4 bits avoids API breaks if another one gets added. #define PG_QUERY_PARSE_MODE_BITS 4 #define PG_QUERY_PARSE_MODE_BITMASK ((1 << PG_QUERY_PARSE_MODE_BITS) - 1) #define PG_QUERY_DISABLE_BACKSLASH_QUOTE 16 // backslash_quote = off (default is safe_encoding, which is effectively on) #define PG_QUERY_DISABLE_STANDARD_CONFORMING_STRINGS 32 // standard_conforming_strings = off (default is on) #define PG_QUERY_DISABLE_ESCAPE_STRING_WARNING 64 // escape_string_warning = off (default is on) #ifdef __cplusplus extern "C" { #endif PgQueryNormalizeResult pg_query_normalize(const char* input); PgQueryNormalizeResult pg_query_normalize_utility(const char* input); PgQueryScanResult pg_query_scan(const char* input); PgQueryParseResult pg_query_parse(const char* input); PgQueryParseResult pg_query_parse_opts(const char* input, int parser_options); PgQueryProtobufParseResult pg_query_parse_protobuf(const char* input); PgQueryProtobufParseResult pg_query_parse_protobuf_opts(const char* input, int parser_options); PgQueryPlpgsqlParseResult pg_query_parse_plpgsql(const char* input); PgQueryFingerprintResult pg_query_fingerprint(const char* input); PgQueryFingerprintResult pg_query_fingerprint_opts(const char* input, int parser_options); // 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_MAJORVERSION "17" #define PG_VERSION "17.4" #define PG_VERSION_NUM 170004 // 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-17-6.1.0/protobuf/000077500000000000000000000000001477334012600161345ustar00rootroot00000000000000libpg_query-17-6.1.0/protobuf/pg_query.pb-c.c000066400000000000000000053120301477334012600207570ustar00rootroot00000000000000/* 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__boolean__init (PgQuery__Boolean *message) { static const PgQuery__Boolean init_value = PG_QUERY__BOOLEAN__INIT; *message = init_value; } size_t pg_query__boolean__get_packed_size (const PgQuery__Boolean *message) { assert(message->base.descriptor == &pg_query__boolean__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__boolean__pack (const PgQuery__Boolean *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__boolean__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__boolean__pack_to_buffer (const PgQuery__Boolean *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__boolean__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Boolean * pg_query__boolean__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Boolean *) protobuf_c_message_unpack (&pg_query__boolean__descriptor, allocator, len, data); } void pg_query__boolean__free_unpacked (PgQuery__Boolean *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__boolean__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__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__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__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__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__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__window_func_run_condition__init (PgQuery__WindowFuncRunCondition *message) { static const PgQuery__WindowFuncRunCondition init_value = PG_QUERY__WINDOW_FUNC_RUN_CONDITION__INIT; *message = init_value; } size_t pg_query__window_func_run_condition__get_packed_size (const PgQuery__WindowFuncRunCondition *message) { assert(message->base.descriptor == &pg_query__window_func_run_condition__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__window_func_run_condition__pack (const PgQuery__WindowFuncRunCondition *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__window_func_run_condition__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__window_func_run_condition__pack_to_buffer (const PgQuery__WindowFuncRunCondition *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__window_func_run_condition__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__WindowFuncRunCondition * pg_query__window_func_run_condition__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__WindowFuncRunCondition *) protobuf_c_message_unpack (&pg_query__window_func_run_condition__descriptor, allocator, len, data); } void pg_query__window_func_run_condition__free_unpacked (PgQuery__WindowFuncRunCondition *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__window_func_run_condition__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__merge_support_func__init (PgQuery__MergeSupportFunc *message) { static const PgQuery__MergeSupportFunc init_value = PG_QUERY__MERGE_SUPPORT_FUNC__INIT; *message = init_value; } size_t pg_query__merge_support_func__get_packed_size (const PgQuery__MergeSupportFunc *message) { assert(message->base.descriptor == &pg_query__merge_support_func__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__merge_support_func__pack (const PgQuery__MergeSupportFunc *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__merge_support_func__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__merge_support_func__pack_to_buffer (const PgQuery__MergeSupportFunc *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__merge_support_func__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__MergeSupportFunc * pg_query__merge_support_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__MergeSupportFunc *) protobuf_c_message_unpack (&pg_query__merge_support_func__descriptor, allocator, len, data); } void pg_query__merge_support_func__free_unpacked (PgQuery__MergeSupportFunc *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__merge_support_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__json_format__init (PgQuery__JsonFormat *message) { static const PgQuery__JsonFormat init_value = PG_QUERY__JSON_FORMAT__INIT; *message = init_value; } size_t pg_query__json_format__get_packed_size (const PgQuery__JsonFormat *message) { assert(message->base.descriptor == &pg_query__json_format__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_format__pack (const PgQuery__JsonFormat *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_format__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_format__pack_to_buffer (const PgQuery__JsonFormat *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_format__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonFormat * pg_query__json_format__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonFormat *) protobuf_c_message_unpack (&pg_query__json_format__descriptor, allocator, len, data); } void pg_query__json_format__free_unpacked (PgQuery__JsonFormat *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_format__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_returning__init (PgQuery__JsonReturning *message) { static const PgQuery__JsonReturning init_value = PG_QUERY__JSON_RETURNING__INIT; *message = init_value; } size_t pg_query__json_returning__get_packed_size (const PgQuery__JsonReturning *message) { assert(message->base.descriptor == &pg_query__json_returning__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_returning__pack (const PgQuery__JsonReturning *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_returning__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_returning__pack_to_buffer (const PgQuery__JsonReturning *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_returning__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonReturning * pg_query__json_returning__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonReturning *) protobuf_c_message_unpack (&pg_query__json_returning__descriptor, allocator, len, data); } void pg_query__json_returning__free_unpacked (PgQuery__JsonReturning *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_returning__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_value_expr__init (PgQuery__JsonValueExpr *message) { static const PgQuery__JsonValueExpr init_value = PG_QUERY__JSON_VALUE_EXPR__INIT; *message = init_value; } size_t pg_query__json_value_expr__get_packed_size (const PgQuery__JsonValueExpr *message) { assert(message->base.descriptor == &pg_query__json_value_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_value_expr__pack (const PgQuery__JsonValueExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_value_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_value_expr__pack_to_buffer (const PgQuery__JsonValueExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_value_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonValueExpr * pg_query__json_value_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonValueExpr *) protobuf_c_message_unpack (&pg_query__json_value_expr__descriptor, allocator, len, data); } void pg_query__json_value_expr__free_unpacked (PgQuery__JsonValueExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_value_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_constructor_expr__init (PgQuery__JsonConstructorExpr *message) { static const PgQuery__JsonConstructorExpr init_value = PG_QUERY__JSON_CONSTRUCTOR_EXPR__INIT; *message = init_value; } size_t pg_query__json_constructor_expr__get_packed_size (const PgQuery__JsonConstructorExpr *message) { assert(message->base.descriptor == &pg_query__json_constructor_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_constructor_expr__pack (const PgQuery__JsonConstructorExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_constructor_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_constructor_expr__pack_to_buffer (const PgQuery__JsonConstructorExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_constructor_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonConstructorExpr * pg_query__json_constructor_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonConstructorExpr *) protobuf_c_message_unpack (&pg_query__json_constructor_expr__descriptor, allocator, len, data); } void pg_query__json_constructor_expr__free_unpacked (PgQuery__JsonConstructorExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_constructor_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_is_predicate__init (PgQuery__JsonIsPredicate *message) { static const PgQuery__JsonIsPredicate init_value = PG_QUERY__JSON_IS_PREDICATE__INIT; *message = init_value; } size_t pg_query__json_is_predicate__get_packed_size (const PgQuery__JsonIsPredicate *message) { assert(message->base.descriptor == &pg_query__json_is_predicate__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_is_predicate__pack (const PgQuery__JsonIsPredicate *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_is_predicate__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_is_predicate__pack_to_buffer (const PgQuery__JsonIsPredicate *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_is_predicate__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonIsPredicate * pg_query__json_is_predicate__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonIsPredicate *) protobuf_c_message_unpack (&pg_query__json_is_predicate__descriptor, allocator, len, data); } void pg_query__json_is_predicate__free_unpacked (PgQuery__JsonIsPredicate *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_is_predicate__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_behavior__init (PgQuery__JsonBehavior *message) { static const PgQuery__JsonBehavior init_value = PG_QUERY__JSON_BEHAVIOR__INIT; *message = init_value; } size_t pg_query__json_behavior__get_packed_size (const PgQuery__JsonBehavior *message) { assert(message->base.descriptor == &pg_query__json_behavior__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_behavior__pack (const PgQuery__JsonBehavior *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_behavior__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_behavior__pack_to_buffer (const PgQuery__JsonBehavior *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_behavior__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonBehavior * pg_query__json_behavior__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonBehavior *) protobuf_c_message_unpack (&pg_query__json_behavior__descriptor, allocator, len, data); } void pg_query__json_behavior__free_unpacked (PgQuery__JsonBehavior *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_behavior__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_expr__init (PgQuery__JsonExpr *message) { static const PgQuery__JsonExpr init_value = PG_QUERY__JSON_EXPR__INIT; *message = init_value; } size_t pg_query__json_expr__get_packed_size (const PgQuery__JsonExpr *message) { assert(message->base.descriptor == &pg_query__json_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_expr__pack (const PgQuery__JsonExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_expr__pack_to_buffer (const PgQuery__JsonExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonExpr * pg_query__json_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonExpr *) protobuf_c_message_unpack (&pg_query__json_expr__descriptor, allocator, len, data); } void pg_query__json_expr__free_unpacked (PgQuery__JsonExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_table_path__init (PgQuery__JsonTablePath *message) { static const PgQuery__JsonTablePath init_value = PG_QUERY__JSON_TABLE_PATH__INIT; *message = init_value; } size_t pg_query__json_table_path__get_packed_size (const PgQuery__JsonTablePath *message) { assert(message->base.descriptor == &pg_query__json_table_path__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_table_path__pack (const PgQuery__JsonTablePath *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_table_path__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_table_path__pack_to_buffer (const PgQuery__JsonTablePath *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_table_path__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonTablePath * pg_query__json_table_path__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonTablePath *) protobuf_c_message_unpack (&pg_query__json_table_path__descriptor, allocator, len, data); } void pg_query__json_table_path__free_unpacked (PgQuery__JsonTablePath *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_table_path__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_table_path_scan__init (PgQuery__JsonTablePathScan *message) { static const PgQuery__JsonTablePathScan init_value = PG_QUERY__JSON_TABLE_PATH_SCAN__INIT; *message = init_value; } size_t pg_query__json_table_path_scan__get_packed_size (const PgQuery__JsonTablePathScan *message) { assert(message->base.descriptor == &pg_query__json_table_path_scan__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_table_path_scan__pack (const PgQuery__JsonTablePathScan *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_table_path_scan__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_table_path_scan__pack_to_buffer (const PgQuery__JsonTablePathScan *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_table_path_scan__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonTablePathScan * pg_query__json_table_path_scan__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonTablePathScan *) protobuf_c_message_unpack (&pg_query__json_table_path_scan__descriptor, allocator, len, data); } void pg_query__json_table_path_scan__free_unpacked (PgQuery__JsonTablePathScan *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_table_path_scan__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_table_sibling_join__init (PgQuery__JsonTableSiblingJoin *message) { static const PgQuery__JsonTableSiblingJoin init_value = PG_QUERY__JSON_TABLE_SIBLING_JOIN__INIT; *message = init_value; } size_t pg_query__json_table_sibling_join__get_packed_size (const PgQuery__JsonTableSiblingJoin *message) { assert(message->base.descriptor == &pg_query__json_table_sibling_join__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_table_sibling_join__pack (const PgQuery__JsonTableSiblingJoin *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_table_sibling_join__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_table_sibling_join__pack_to_buffer (const PgQuery__JsonTableSiblingJoin *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_table_sibling_join__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonTableSiblingJoin * pg_query__json_table_sibling_join__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonTableSiblingJoin *) protobuf_c_message_unpack (&pg_query__json_table_sibling_join__descriptor, allocator, len, data); } void pg_query__json_table_sibling_join__free_unpacked (PgQuery__JsonTableSiblingJoin *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_table_sibling_join__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__merge_action__init (PgQuery__MergeAction *message) { static const PgQuery__MergeAction init_value = PG_QUERY__MERGE_ACTION__INIT; *message = init_value; } size_t pg_query__merge_action__get_packed_size (const PgQuery__MergeAction *message) { assert(message->base.descriptor == &pg_query__merge_action__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__merge_action__pack (const PgQuery__MergeAction *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__merge_action__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__merge_action__pack_to_buffer (const PgQuery__MergeAction *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__merge_action__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__MergeAction * pg_query__merge_action__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__MergeAction *) protobuf_c_message_unpack (&pg_query__merge_action__descriptor, allocator, len, data); } void pg_query__merge_action__free_unpacked (PgQuery__MergeAction *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__merge_action__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__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__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_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__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__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__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__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__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_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__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__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__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__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__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__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__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__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__single_partition_spec__init (PgQuery__SinglePartitionSpec *message) { static const PgQuery__SinglePartitionSpec init_value = PG_QUERY__SINGLE_PARTITION_SPEC__INIT; *message = init_value; } size_t pg_query__single_partition_spec__get_packed_size (const PgQuery__SinglePartitionSpec *message) { assert(message->base.descriptor == &pg_query__single_partition_spec__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__single_partition_spec__pack (const PgQuery__SinglePartitionSpec *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__single_partition_spec__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__single_partition_spec__pack_to_buffer (const PgQuery__SinglePartitionSpec *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__single_partition_spec__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SinglePartitionSpec * pg_query__single_partition_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SinglePartitionSpec *) protobuf_c_message_unpack (&pg_query__single_partition_spec__descriptor, allocator, len, data); } void pg_query__single_partition_spec__free_unpacked (PgQuery__SinglePartitionSpec *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__single_partition_spec__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__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__rtepermission_info__init (PgQuery__RTEPermissionInfo *message) { static const PgQuery__RTEPermissionInfo init_value = PG_QUERY__RTEPERMISSION_INFO__INIT; *message = init_value; } size_t pg_query__rtepermission_info__get_packed_size (const PgQuery__RTEPermissionInfo *message) { assert(message->base.descriptor == &pg_query__rtepermission_info__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__rtepermission_info__pack (const PgQuery__RTEPermissionInfo *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__rtepermission_info__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__rtepermission_info__pack_to_buffer (const PgQuery__RTEPermissionInfo *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__rtepermission_info__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RTEPermissionInfo * pg_query__rtepermission_info__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RTEPermissionInfo *) protobuf_c_message_unpack (&pg_query__rtepermission_info__descriptor, allocator, len, data); } void pg_query__rtepermission_info__free_unpacked (PgQuery__RTEPermissionInfo *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__rtepermission_info__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__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__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__ctesearch_clause__init (PgQuery__CTESearchClause *message) { static const PgQuery__CTESearchClause init_value = PG_QUERY__CTESEARCH_CLAUSE__INIT; *message = init_value; } size_t pg_query__ctesearch_clause__get_packed_size (const PgQuery__CTESearchClause *message) { assert(message->base.descriptor == &pg_query__ctesearch_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__ctesearch_clause__pack (const PgQuery__CTESearchClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__ctesearch_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__ctesearch_clause__pack_to_buffer (const PgQuery__CTESearchClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__ctesearch_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CTESearchClause * pg_query__ctesearch_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CTESearchClause *) protobuf_c_message_unpack (&pg_query__ctesearch_clause__descriptor, allocator, len, data); } void pg_query__ctesearch_clause__free_unpacked (PgQuery__CTESearchClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__ctesearch_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__ctecycle_clause__init (PgQuery__CTECycleClause *message) { static const PgQuery__CTECycleClause init_value = PG_QUERY__CTECYCLE_CLAUSE__INIT; *message = init_value; } size_t pg_query__ctecycle_clause__get_packed_size (const PgQuery__CTECycleClause *message) { assert(message->base.descriptor == &pg_query__ctecycle_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__ctecycle_clause__pack (const PgQuery__CTECycleClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__ctecycle_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__ctecycle_clause__pack_to_buffer (const PgQuery__CTECycleClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__ctecycle_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CTECycleClause * pg_query__ctecycle_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CTECycleClause *) protobuf_c_message_unpack (&pg_query__ctecycle_clause__descriptor, allocator, len, data); } void pg_query__ctecycle_clause__free_unpacked (PgQuery__CTECycleClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__ctecycle_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__merge_when_clause__init (PgQuery__MergeWhenClause *message) { static const PgQuery__MergeWhenClause init_value = PG_QUERY__MERGE_WHEN_CLAUSE__INIT; *message = init_value; } size_t pg_query__merge_when_clause__get_packed_size (const PgQuery__MergeWhenClause *message) { assert(message->base.descriptor == &pg_query__merge_when_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__merge_when_clause__pack (const PgQuery__MergeWhenClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__merge_when_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__merge_when_clause__pack_to_buffer (const PgQuery__MergeWhenClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__merge_when_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__MergeWhenClause * pg_query__merge_when_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__MergeWhenClause *) protobuf_c_message_unpack (&pg_query__merge_when_clause__descriptor, allocator, len, data); } void pg_query__merge_when_clause__free_unpacked (PgQuery__MergeWhenClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__merge_when_clause__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__json_output__init (PgQuery__JsonOutput *message) { static const PgQuery__JsonOutput init_value = PG_QUERY__JSON_OUTPUT__INIT; *message = init_value; } size_t pg_query__json_output__get_packed_size (const PgQuery__JsonOutput *message) { assert(message->base.descriptor == &pg_query__json_output__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_output__pack (const PgQuery__JsonOutput *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_output__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_output__pack_to_buffer (const PgQuery__JsonOutput *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_output__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonOutput * pg_query__json_output__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonOutput *) protobuf_c_message_unpack (&pg_query__json_output__descriptor, allocator, len, data); } void pg_query__json_output__free_unpacked (PgQuery__JsonOutput *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_output__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_argument__init (PgQuery__JsonArgument *message) { static const PgQuery__JsonArgument init_value = PG_QUERY__JSON_ARGUMENT__INIT; *message = init_value; } size_t pg_query__json_argument__get_packed_size (const PgQuery__JsonArgument *message) { assert(message->base.descriptor == &pg_query__json_argument__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_argument__pack (const PgQuery__JsonArgument *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_argument__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_argument__pack_to_buffer (const PgQuery__JsonArgument *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_argument__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonArgument * pg_query__json_argument__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonArgument *) protobuf_c_message_unpack (&pg_query__json_argument__descriptor, allocator, len, data); } void pg_query__json_argument__free_unpacked (PgQuery__JsonArgument *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_argument__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_func_expr__init (PgQuery__JsonFuncExpr *message) { static const PgQuery__JsonFuncExpr init_value = PG_QUERY__JSON_FUNC_EXPR__INIT; *message = init_value; } size_t pg_query__json_func_expr__get_packed_size (const PgQuery__JsonFuncExpr *message) { assert(message->base.descriptor == &pg_query__json_func_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_func_expr__pack (const PgQuery__JsonFuncExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_func_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_func_expr__pack_to_buffer (const PgQuery__JsonFuncExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_func_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonFuncExpr * pg_query__json_func_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonFuncExpr *) protobuf_c_message_unpack (&pg_query__json_func_expr__descriptor, allocator, len, data); } void pg_query__json_func_expr__free_unpacked (PgQuery__JsonFuncExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_func_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_table_path_spec__init (PgQuery__JsonTablePathSpec *message) { static const PgQuery__JsonTablePathSpec init_value = PG_QUERY__JSON_TABLE_PATH_SPEC__INIT; *message = init_value; } size_t pg_query__json_table_path_spec__get_packed_size (const PgQuery__JsonTablePathSpec *message) { assert(message->base.descriptor == &pg_query__json_table_path_spec__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_table_path_spec__pack (const PgQuery__JsonTablePathSpec *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_table_path_spec__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_table_path_spec__pack_to_buffer (const PgQuery__JsonTablePathSpec *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_table_path_spec__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonTablePathSpec * pg_query__json_table_path_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonTablePathSpec *) protobuf_c_message_unpack (&pg_query__json_table_path_spec__descriptor, allocator, len, data); } void pg_query__json_table_path_spec__free_unpacked (PgQuery__JsonTablePathSpec *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_table_path_spec__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_table__init (PgQuery__JsonTable *message) { static const PgQuery__JsonTable init_value = PG_QUERY__JSON_TABLE__INIT; *message = init_value; } size_t pg_query__json_table__get_packed_size (const PgQuery__JsonTable *message) { assert(message->base.descriptor == &pg_query__json_table__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_table__pack (const PgQuery__JsonTable *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_table__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_table__pack_to_buffer (const PgQuery__JsonTable *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_table__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonTable * pg_query__json_table__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonTable *) protobuf_c_message_unpack (&pg_query__json_table__descriptor, allocator, len, data); } void pg_query__json_table__free_unpacked (PgQuery__JsonTable *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_table__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_table_column__init (PgQuery__JsonTableColumn *message) { static const PgQuery__JsonTableColumn init_value = PG_QUERY__JSON_TABLE_COLUMN__INIT; *message = init_value; } size_t pg_query__json_table_column__get_packed_size (const PgQuery__JsonTableColumn *message) { assert(message->base.descriptor == &pg_query__json_table_column__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_table_column__pack (const PgQuery__JsonTableColumn *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_table_column__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_table_column__pack_to_buffer (const PgQuery__JsonTableColumn *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_table_column__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonTableColumn * pg_query__json_table_column__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonTableColumn *) protobuf_c_message_unpack (&pg_query__json_table_column__descriptor, allocator, len, data); } void pg_query__json_table_column__free_unpacked (PgQuery__JsonTableColumn *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_table_column__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_key_value__init (PgQuery__JsonKeyValue *message) { static const PgQuery__JsonKeyValue init_value = PG_QUERY__JSON_KEY_VALUE__INIT; *message = init_value; } size_t pg_query__json_key_value__get_packed_size (const PgQuery__JsonKeyValue *message) { assert(message->base.descriptor == &pg_query__json_key_value__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_key_value__pack (const PgQuery__JsonKeyValue *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_key_value__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_key_value__pack_to_buffer (const PgQuery__JsonKeyValue *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_key_value__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonKeyValue * pg_query__json_key_value__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonKeyValue *) protobuf_c_message_unpack (&pg_query__json_key_value__descriptor, allocator, len, data); } void pg_query__json_key_value__free_unpacked (PgQuery__JsonKeyValue *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_key_value__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_parse_expr__init (PgQuery__JsonParseExpr *message) { static const PgQuery__JsonParseExpr init_value = PG_QUERY__JSON_PARSE_EXPR__INIT; *message = init_value; } size_t pg_query__json_parse_expr__get_packed_size (const PgQuery__JsonParseExpr *message) { assert(message->base.descriptor == &pg_query__json_parse_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_parse_expr__pack (const PgQuery__JsonParseExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_parse_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_parse_expr__pack_to_buffer (const PgQuery__JsonParseExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_parse_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonParseExpr * pg_query__json_parse_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonParseExpr *) protobuf_c_message_unpack (&pg_query__json_parse_expr__descriptor, allocator, len, data); } void pg_query__json_parse_expr__free_unpacked (PgQuery__JsonParseExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_parse_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_scalar_expr__init (PgQuery__JsonScalarExpr *message) { static const PgQuery__JsonScalarExpr init_value = PG_QUERY__JSON_SCALAR_EXPR__INIT; *message = init_value; } size_t pg_query__json_scalar_expr__get_packed_size (const PgQuery__JsonScalarExpr *message) { assert(message->base.descriptor == &pg_query__json_scalar_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_scalar_expr__pack (const PgQuery__JsonScalarExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_scalar_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_scalar_expr__pack_to_buffer (const PgQuery__JsonScalarExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_scalar_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonScalarExpr * pg_query__json_scalar_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonScalarExpr *) protobuf_c_message_unpack (&pg_query__json_scalar_expr__descriptor, allocator, len, data); } void pg_query__json_scalar_expr__free_unpacked (PgQuery__JsonScalarExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_scalar_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_serialize_expr__init (PgQuery__JsonSerializeExpr *message) { static const PgQuery__JsonSerializeExpr init_value = PG_QUERY__JSON_SERIALIZE_EXPR__INIT; *message = init_value; } size_t pg_query__json_serialize_expr__get_packed_size (const PgQuery__JsonSerializeExpr *message) { assert(message->base.descriptor == &pg_query__json_serialize_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_serialize_expr__pack (const PgQuery__JsonSerializeExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_serialize_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_serialize_expr__pack_to_buffer (const PgQuery__JsonSerializeExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_serialize_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonSerializeExpr * pg_query__json_serialize_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonSerializeExpr *) protobuf_c_message_unpack (&pg_query__json_serialize_expr__descriptor, allocator, len, data); } void pg_query__json_serialize_expr__free_unpacked (PgQuery__JsonSerializeExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_serialize_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_object_constructor__init (PgQuery__JsonObjectConstructor *message) { static const PgQuery__JsonObjectConstructor init_value = PG_QUERY__JSON_OBJECT_CONSTRUCTOR__INIT; *message = init_value; } size_t pg_query__json_object_constructor__get_packed_size (const PgQuery__JsonObjectConstructor *message) { assert(message->base.descriptor == &pg_query__json_object_constructor__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_object_constructor__pack (const PgQuery__JsonObjectConstructor *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_object_constructor__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_object_constructor__pack_to_buffer (const PgQuery__JsonObjectConstructor *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_object_constructor__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonObjectConstructor * pg_query__json_object_constructor__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonObjectConstructor *) protobuf_c_message_unpack (&pg_query__json_object_constructor__descriptor, allocator, len, data); } void pg_query__json_object_constructor__free_unpacked (PgQuery__JsonObjectConstructor *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_object_constructor__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_array_constructor__init (PgQuery__JsonArrayConstructor *message) { static const PgQuery__JsonArrayConstructor init_value = PG_QUERY__JSON_ARRAY_CONSTRUCTOR__INIT; *message = init_value; } size_t pg_query__json_array_constructor__get_packed_size (const PgQuery__JsonArrayConstructor *message) { assert(message->base.descriptor == &pg_query__json_array_constructor__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_array_constructor__pack (const PgQuery__JsonArrayConstructor *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_array_constructor__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_array_constructor__pack_to_buffer (const PgQuery__JsonArrayConstructor *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_array_constructor__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonArrayConstructor * pg_query__json_array_constructor__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonArrayConstructor *) protobuf_c_message_unpack (&pg_query__json_array_constructor__descriptor, allocator, len, data); } void pg_query__json_array_constructor__free_unpacked (PgQuery__JsonArrayConstructor *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_array_constructor__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_array_query_constructor__init (PgQuery__JsonArrayQueryConstructor *message) { static const PgQuery__JsonArrayQueryConstructor init_value = PG_QUERY__JSON_ARRAY_QUERY_CONSTRUCTOR__INIT; *message = init_value; } size_t pg_query__json_array_query_constructor__get_packed_size (const PgQuery__JsonArrayQueryConstructor *message) { assert(message->base.descriptor == &pg_query__json_array_query_constructor__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_array_query_constructor__pack (const PgQuery__JsonArrayQueryConstructor *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_array_query_constructor__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_array_query_constructor__pack_to_buffer (const PgQuery__JsonArrayQueryConstructor *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_array_query_constructor__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonArrayQueryConstructor * pg_query__json_array_query_constructor__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonArrayQueryConstructor *) protobuf_c_message_unpack (&pg_query__json_array_query_constructor__descriptor, allocator, len, data); } void pg_query__json_array_query_constructor__free_unpacked (PgQuery__JsonArrayQueryConstructor *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_array_query_constructor__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_agg_constructor__init (PgQuery__JsonAggConstructor *message) { static const PgQuery__JsonAggConstructor init_value = PG_QUERY__JSON_AGG_CONSTRUCTOR__INIT; *message = init_value; } size_t pg_query__json_agg_constructor__get_packed_size (const PgQuery__JsonAggConstructor *message) { assert(message->base.descriptor == &pg_query__json_agg_constructor__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_agg_constructor__pack (const PgQuery__JsonAggConstructor *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_agg_constructor__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_agg_constructor__pack_to_buffer (const PgQuery__JsonAggConstructor *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_agg_constructor__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonAggConstructor * pg_query__json_agg_constructor__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonAggConstructor *) protobuf_c_message_unpack (&pg_query__json_agg_constructor__descriptor, allocator, len, data); } void pg_query__json_agg_constructor__free_unpacked (PgQuery__JsonAggConstructor *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_agg_constructor__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_object_agg__init (PgQuery__JsonObjectAgg *message) { static const PgQuery__JsonObjectAgg init_value = PG_QUERY__JSON_OBJECT_AGG__INIT; *message = init_value; } size_t pg_query__json_object_agg__get_packed_size (const PgQuery__JsonObjectAgg *message) { assert(message->base.descriptor == &pg_query__json_object_agg__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_object_agg__pack (const PgQuery__JsonObjectAgg *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_object_agg__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_object_agg__pack_to_buffer (const PgQuery__JsonObjectAgg *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_object_agg__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonObjectAgg * pg_query__json_object_agg__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonObjectAgg *) protobuf_c_message_unpack (&pg_query__json_object_agg__descriptor, allocator, len, data); } void pg_query__json_object_agg__free_unpacked (PgQuery__JsonObjectAgg *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_object_agg__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__json_array_agg__init (PgQuery__JsonArrayAgg *message) { static const PgQuery__JsonArrayAgg init_value = PG_QUERY__JSON_ARRAY_AGG__INIT; *message = init_value; } size_t pg_query__json_array_agg__get_packed_size (const PgQuery__JsonArrayAgg *message) { assert(message->base.descriptor == &pg_query__json_array_agg__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__json_array_agg__pack (const PgQuery__JsonArrayAgg *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__json_array_agg__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__json_array_agg__pack_to_buffer (const PgQuery__JsonArrayAgg *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__json_array_agg__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JsonArrayAgg * pg_query__json_array_agg__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JsonArrayAgg *) protobuf_c_message_unpack (&pg_query__json_array_agg__descriptor, allocator, len, data); } void pg_query__json_array_agg__free_unpacked (PgQuery__JsonArrayAgg *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__json_array_agg__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__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__merge_stmt__init (PgQuery__MergeStmt *message) { static const PgQuery__MergeStmt init_value = PG_QUERY__MERGE_STMT__INIT; *message = init_value; } size_t pg_query__merge_stmt__get_packed_size (const PgQuery__MergeStmt *message) { assert(message->base.descriptor == &pg_query__merge_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__merge_stmt__pack (const PgQuery__MergeStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__merge_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__merge_stmt__pack_to_buffer (const PgQuery__MergeStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__merge_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__MergeStmt * pg_query__merge_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__MergeStmt *) protobuf_c_message_unpack (&pg_query__merge_stmt__descriptor, allocator, len, data); } void pg_query__merge_stmt__free_unpacked (PgQuery__MergeStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__merge_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__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__return_stmt__init (PgQuery__ReturnStmt *message) { static const PgQuery__ReturnStmt init_value = PG_QUERY__RETURN_STMT__INIT; *message = init_value; } size_t pg_query__return_stmt__get_packed_size (const PgQuery__ReturnStmt *message) { assert(message->base.descriptor == &pg_query__return_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__return_stmt__pack (const PgQuery__ReturnStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__return_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__return_stmt__pack_to_buffer (const PgQuery__ReturnStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__return_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ReturnStmt * pg_query__return_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ReturnStmt *) protobuf_c_message_unpack (&pg_query__return_stmt__descriptor, allocator, len, data); } void pg_query__return_stmt__free_unpacked (PgQuery__ReturnStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__return_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__plassign_stmt__init (PgQuery__PLAssignStmt *message) { static const PgQuery__PLAssignStmt init_value = PG_QUERY__PLASSIGN_STMT__INIT; *message = init_value; } size_t pg_query__plassign_stmt__get_packed_size (const PgQuery__PLAssignStmt *message) { assert(message->base.descriptor == &pg_query__plassign_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__plassign_stmt__pack (const PgQuery__PLAssignStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__plassign_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__plassign_stmt__pack_to_buffer (const PgQuery__PLAssignStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__plassign_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PLAssignStmt * pg_query__plassign_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PLAssignStmt *) protobuf_c_message_unpack (&pg_query__plassign_stmt__descriptor, allocator, len, data); } void pg_query__plassign_stmt__free_unpacked (PgQuery__PLAssignStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__plassign_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_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__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_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_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__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__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__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__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__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__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__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__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__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_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__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_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_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__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__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_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_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_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_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__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__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__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__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__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__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__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_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__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__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__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__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__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__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_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__stats_elem__init (PgQuery__StatsElem *message) { static const PgQuery__StatsElem init_value = PG_QUERY__STATS_ELEM__INIT; *message = init_value; } size_t pg_query__stats_elem__get_packed_size (const PgQuery__StatsElem *message) { assert(message->base.descriptor == &pg_query__stats_elem__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__stats_elem__pack (const PgQuery__StatsElem *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__stats_elem__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__stats_elem__pack_to_buffer (const PgQuery__StatsElem *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__stats_elem__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__StatsElem * pg_query__stats_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__StatsElem *) protobuf_c_message_unpack (&pg_query__stats_elem__descriptor, allocator, len, data); } void pg_query__stats_elem__free_unpacked (PgQuery__StatsElem *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__stats_elem__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__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__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__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__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_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__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__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__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__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__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__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__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__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_refresh_coll_stmt__init (PgQuery__AlterDatabaseRefreshCollStmt *message) { static const PgQuery__AlterDatabaseRefreshCollStmt init_value = PG_QUERY__ALTER_DATABASE_REFRESH_COLL_STMT__INIT; *message = init_value; } size_t pg_query__alter_database_refresh_coll_stmt__get_packed_size (const PgQuery__AlterDatabaseRefreshCollStmt *message) { assert(message->base.descriptor == &pg_query__alter_database_refresh_coll_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_database_refresh_coll_stmt__pack (const PgQuery__AlterDatabaseRefreshCollStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_database_refresh_coll_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_database_refresh_coll_stmt__pack_to_buffer (const PgQuery__AlterDatabaseRefreshCollStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_database_refresh_coll_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterDatabaseRefreshCollStmt * pg_query__alter_database_refresh_coll_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterDatabaseRefreshCollStmt *) protobuf_c_message_unpack (&pg_query__alter_database_refresh_coll_stmt__descriptor, allocator, len, data); } void pg_query__alter_database_refresh_coll_stmt__free_unpacked (PgQuery__AlterDatabaseRefreshCollStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_database_refresh_coll_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__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__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__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__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__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__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__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__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__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__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__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_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__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__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__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__publication_table__init (PgQuery__PublicationTable *message) { static const PgQuery__PublicationTable init_value = PG_QUERY__PUBLICATION_TABLE__INIT; *message = init_value; } size_t pg_query__publication_table__get_packed_size (const PgQuery__PublicationTable *message) { assert(message->base.descriptor == &pg_query__publication_table__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__publication_table__pack (const PgQuery__PublicationTable *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__publication_table__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__publication_table__pack_to_buffer (const PgQuery__PublicationTable *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__publication_table__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PublicationTable * pg_query__publication_table__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PublicationTable *) protobuf_c_message_unpack (&pg_query__publication_table__descriptor, allocator, len, data); } void pg_query__publication_table__free_unpacked (PgQuery__PublicationTable *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__publication_table__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__publication_obj_spec__init (PgQuery__PublicationObjSpec *message) { static const PgQuery__PublicationObjSpec init_value = PG_QUERY__PUBLICATION_OBJ_SPEC__INIT; *message = init_value; } size_t pg_query__publication_obj_spec__get_packed_size (const PgQuery__PublicationObjSpec *message) { assert(message->base.descriptor == &pg_query__publication_obj_spec__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__publication_obj_spec__pack (const PgQuery__PublicationObjSpec *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__publication_obj_spec__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__publication_obj_spec__pack_to_buffer (const PgQuery__PublicationObjSpec *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__publication_obj_spec__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PublicationObjSpec * pg_query__publication_obj_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PublicationObjSpec *) protobuf_c_message_unpack (&pg_query__publication_obj_spec__descriptor, allocator, len, data); } void pg_query__publication_obj_spec__free_unpacked (PgQuery__PublicationObjSpec *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__publication_obj_spec__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__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[268] = { { "alias", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alias), &pg_query__alias__descriptor, NULL, 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, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "into_clause", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, into_clause), &pg_query__into_clause__descriptor, NULL, 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, 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, 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, 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, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "window_func_run_condition", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, window_func_run_condition), &pg_query__window_func_run_condition__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "merge_support_func", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, merge_support_func), &pg_query__merge_support_func__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "subscripting_ref", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, subscripting_ref), &pg_query__subscripting_ref__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func_expr", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, func_expr), &pg_query__func_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "named_arg_expr", 14, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "op_expr", 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, op_expr), &pg_query__op_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "distinct_expr", 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, distinct_expr), &pg_query__distinct_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "null_if_expr", 17, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "scalar_array_op_expr", 18, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "bool_expr", 19, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, bool_expr), &pg_query__bool_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sub_link", 20, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sub_link), &pg_query__sub_link__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sub_plan", 21, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sub_plan), &pg_query__sub_plan__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alternative_sub_plan", 22, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "field_select", 23, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, field_select), &pg_query__field_select__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "field_store", 24, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, field_store), &pg_query__field_store__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relabel_type", 25, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, relabel_type), &pg_query__relabel_type__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coerce_via_io", 26, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "array_coerce_expr", 27, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "convert_rowtype_expr", 28, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collate_expr", 29, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, collate_expr), &pg_query__collate_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "case_expr", 30, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, case_expr), &pg_query__case_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "case_when", 31, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, case_when), &pg_query__case_when__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "case_test_expr", 32, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "array_expr", 33, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, array_expr), &pg_query__array_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row_expr", 34, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, row_expr), &pg_query__row_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row_compare_expr", 35, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coalesce_expr", 36, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, coalesce_expr), &pg_query__coalesce_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "min_max_expr", 37, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sqlvalue_function", 38, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sqlvalue_function), &pg_query__sqlvalue_function__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "xml_expr", 39, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, xml_expr), &pg_query__xml_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_format", 40, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_format), &pg_query__json_format__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_returning", 41, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_returning), &pg_query__json_returning__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_value_expr", 42, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_value_expr), &pg_query__json_value_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_constructor_expr", 43, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_constructor_expr), &pg_query__json_constructor_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_is_predicate", 44, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_is_predicate), &pg_query__json_is_predicate__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_behavior", 45, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_behavior), &pg_query__json_behavior__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_expr", 46, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_expr), &pg_query__json_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_table_path", 47, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_table_path), &pg_query__json_table_path__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_table_path_scan", 48, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_table_path_scan), &pg_query__json_table_path_scan__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_table_sibling_join", 49, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_table_sibling_join), &pg_query__json_table_sibling_join__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "null_test", 50, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, null_test), &pg_query__null_test__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "boolean_test", 51, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, boolean_test), &pg_query__boolean_test__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "merge_action", 52, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, merge_action), &pg_query__merge_action__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coerce_to_domain", 53, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coerce_to_domain_value", 54, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "set_to_default", 55, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "current_of_expr", 56, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "next_value_expr", 57, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inference_elem", 58, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, inference_elem), &pg_query__inference_elem__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "target_entry", 59, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, target_entry), &pg_query__target_entry__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_tbl_ref", 60, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "join_expr", 61, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, join_expr), &pg_query__join_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "from_expr", 62, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, from_expr), &pg_query__from_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_conflict_expr", 63, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "query", 64, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, query), &pg_query__query__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 65, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, type_name), &pg_query__type_name__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "column_ref", 66, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, column_ref), &pg_query__column_ref__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "param_ref", 67, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, param_ref), &pg_query__param_ref__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_expr", 68, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_expr), &pg_query__a__expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_cast", 69, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, type_cast), &pg_query__type_cast__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collate_clause", 70, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, collate_clause), &pg_query__collate_clause__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "role_spec", 71, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, role_spec), &pg_query__role_spec__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func_call", 72, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, func_call), &pg_query__func_call__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_star", 73, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_star), &pg_query__a__star__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_indices", 74, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_indices), &pg_query__a__indices__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_indirection", 75, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_indirection), &pg_query__a__indirection__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_array_expr", 76, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "res_target", 77, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, res_target), &pg_query__res_target__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "multi_assign_ref", 78, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sort_by", 79, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sort_by), &pg_query__sort_by__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "window_def", 80, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, window_def), &pg_query__window_def__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_subselect", 81, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_subselect), &pg_query__range_subselect__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_function", 82, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_function), &pg_query__range_function__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_table_func", 83, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_table_func_col", 84, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_table_sample", 85, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "column_def", 86, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, column_def), &pg_query__column_def__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_like_clause", 87, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "index_elem", 88, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, index_elem), &pg_query__index_elem__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "def_elem", 89, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, def_elem), &pg_query__def_elem__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "locking_clause", 90, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, locking_clause), &pg_query__locking_clause__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "xml_serialize", 91, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, xml_serialize), &pg_query__xml_serialize__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_elem", 92, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, partition_elem), &pg_query__partition_elem__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_spec", 93, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, partition_spec), &pg_query__partition_spec__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_bound_spec", 94, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_range_datum", 95, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "single_partition_spec", 96, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, single_partition_spec), &pg_query__single_partition_spec__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_cmd", 97, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, partition_cmd), &pg_query__partition_cmd__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_tbl_entry", 98, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rtepermission_info", 99, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, rtepermission_info), &pg_query__rtepermission_info__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_tbl_function", 100, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_sample_clause", 101, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_check_option", 102, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sort_group_clause", 103, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grouping_set", 104, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, grouping_set), &pg_query__grouping_set__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "window_clause", 105, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, window_clause), &pg_query__window_clause__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row_mark_clause", 106, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_clause", 107, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, with_clause), &pg_query__with_clause__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "infer_clause", 108, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, infer_clause), &pg_query__infer_clause__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_conflict_clause", 109, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ctesearch_clause", 110, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, ctesearch_clause), &pg_query__ctesearch_clause__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ctecycle_clause", 111, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, ctecycle_clause), &pg_query__ctecycle_clause__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "common_table_expr", 112, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "merge_when_clause", 113, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, merge_when_clause), &pg_query__merge_when_clause__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "trigger_transition", 114, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, trigger_transition), &pg_query__trigger_transition__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_output", 115, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_output), &pg_query__json_output__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_argument", 116, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_argument), &pg_query__json_argument__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_func_expr", 117, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_func_expr), &pg_query__json_func_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_table_path_spec", 118, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_table_path_spec), &pg_query__json_table_path_spec__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_table", 119, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_table), &pg_query__json_table__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_table_column", 120, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_table_column), &pg_query__json_table_column__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_key_value", 121, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_key_value), &pg_query__json_key_value__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_parse_expr", 122, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_parse_expr), &pg_query__json_parse_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_scalar_expr", 123, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_scalar_expr), &pg_query__json_scalar_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_serialize_expr", 124, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_serialize_expr), &pg_query__json_serialize_expr__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_object_constructor", 125, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_object_constructor), &pg_query__json_object_constructor__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_array_constructor", 126, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_array_constructor), &pg_query__json_array_constructor__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_array_query_constructor", 127, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_array_query_constructor), &pg_query__json_array_query_constructor__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_agg_constructor", 128, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_agg_constructor), &pg_query__json_agg_constructor__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_object_agg", 129, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_object_agg), &pg_query__json_object_agg__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "json_array_agg", 130, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, json_array_agg), &pg_query__json_array_agg__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "raw_stmt", 131, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, raw_stmt), &pg_query__raw_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "insert_stmt", 132, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, insert_stmt), &pg_query__insert_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "delete_stmt", 133, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, delete_stmt), &pg_query__delete_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "update_stmt", 134, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, update_stmt), &pg_query__update_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "merge_stmt", 135, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, merge_stmt), &pg_query__merge_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "select_stmt", 136, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, select_stmt), &pg_query__select_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "set_operation_stmt", 137, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "return_stmt", 138, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, return_stmt), &pg_query__return_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plassign_stmt", 139, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, plassign_stmt), &pg_query__plassign_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_schema_stmt", 140, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_table_stmt", 141, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "replica_identity_stmt", 142, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_table_cmd", 143, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_collation_stmt", 144, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_domain_stmt", 145, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grant_stmt", 146, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, grant_stmt), &pg_query__grant_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object_with_args", 147, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "access_priv", 148, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, access_priv), &pg_query__access_priv__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grant_role_stmt", 149, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_default_privileges_stmt", 150, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "copy_stmt", 151, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, copy_stmt), &pg_query__copy_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "variable_set_stmt", 152, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "variable_show_stmt", 153, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_stmt", 154, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_stmt), &pg_query__create_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "constraint", 155, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, constraint), &pg_query__constraint__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_table_space_stmt", 156, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_table_space_stmt", 157, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_table_space_options_stmt", 158, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_table_move_all_stmt", 159, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_extension_stmt", 160, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_extension_stmt", 161, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_extension_contents_stmt", 162, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_fdw_stmt", 163, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_fdw_stmt", 164, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_foreign_server_stmt", 165, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_foreign_server_stmt", 166, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_foreign_table_stmt", 167, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_user_mapping_stmt", 168, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_user_mapping_stmt", 169, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_user_mapping_stmt", 170, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "import_foreign_schema_stmt", 171, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_policy_stmt", 172, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_policy_stmt", 173, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_am_stmt", 174, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_trig_stmt", 175, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_event_trig_stmt", 176, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_event_trig_stmt", 177, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_plang_stmt", 178, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_role_stmt", 179, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_role_stmt", 180, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_role_set_stmt", 181, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_role_stmt", 182, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_seq_stmt", 183, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_seq_stmt", 184, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "define_stmt", 185, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, define_stmt), &pg_query__define_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_domain_stmt", 186, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_op_class_stmt", 187, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_op_class_item", 188, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_op_family_stmt", 189, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_op_family_stmt", 190, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_stmt", 191, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, drop_stmt), &pg_query__drop_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "truncate_stmt", 192, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, truncate_stmt), &pg_query__truncate_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "comment_stmt", 193, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, comment_stmt), &pg_query__comment_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sec_label_stmt", 194, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "declare_cursor_stmt", 195, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "close_portal_stmt", 196, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fetch_stmt", 197, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, fetch_stmt), &pg_query__fetch_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "index_stmt", 198, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, index_stmt), &pg_query__index_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_stats_stmt", 199, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "stats_elem", 200, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, stats_elem), &pg_query__stats_elem__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_stats_stmt", 201, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_function_stmt", 202, 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, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_function_stmt", 204, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "do_stmt", 205, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, do_stmt), &pg_query__do_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inline_code_block", 206, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "call_stmt", 207, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, call_stmt), &pg_query__call_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "call_context", 208, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, call_context), &pg_query__call_context__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rename_stmt", 209, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, rename_stmt), &pg_query__rename_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_object_depends_stmt", 210, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_object_schema_stmt", 211, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_owner_stmt", 212, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_operator_stmt", 213, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_type_stmt", 214, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rule_stmt", 215, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, rule_stmt), &pg_query__rule_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "notify_stmt", 216, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, notify_stmt), &pg_query__notify_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "listen_stmt", 217, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, listen_stmt), &pg_query__listen_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "unlisten_stmt", 218, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, unlisten_stmt), &pg_query__unlisten_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "transaction_stmt", 219, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, transaction_stmt), &pg_query__transaction_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "composite_type_stmt", 220, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_enum_stmt", 221, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_range_stmt", 222, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_enum_stmt", 223, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "view_stmt", 224, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, view_stmt), &pg_query__view_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "load_stmt", 225, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, load_stmt), &pg_query__load_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "createdb_stmt", 226, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, createdb_stmt), &pg_query__createdb_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_database_stmt", 227, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_database_refresh_coll_stmt", 228, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_database_refresh_coll_stmt), &pg_query__alter_database_refresh_coll_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_database_set_stmt", 229, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "dropdb_stmt", 230, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, dropdb_stmt), &pg_query__dropdb_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_system_stmt", 231, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cluster_stmt", 232, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, cluster_stmt), &pg_query__cluster_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "vacuum_stmt", 233, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, vacuum_stmt), &pg_query__vacuum_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "vacuum_relation", 234, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, vacuum_relation), &pg_query__vacuum_relation__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "explain_stmt", 235, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, explain_stmt), &pg_query__explain_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_table_as_stmt", 236, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "refresh_mat_view_stmt", 237, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "check_point_stmt", 238, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "discard_stmt", 239, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, discard_stmt), &pg_query__discard_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lock_stmt", 240, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, lock_stmt), &pg_query__lock_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "constraints_set_stmt", 241, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "reindex_stmt", 242, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, reindex_stmt), &pg_query__reindex_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_conversion_stmt", 243, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_cast_stmt", 244, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_transform_stmt", 245, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "prepare_stmt", 246, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, prepare_stmt), &pg_query__prepare_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "execute_stmt", 247, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, execute_stmt), &pg_query__execute_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "deallocate_stmt", 248, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, deallocate_stmt), &pg_query__deallocate_stmt__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_owned_stmt", 249, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "reassign_owned_stmt", 250, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_tsdictionary_stmt", 251, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_tsconfiguration_stmt", 252, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "publication_table", 253, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, publication_table), &pg_query__publication_table__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "publication_obj_spec", 254, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, publication_obj_spec), &pg_query__publication_obj_spec__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_publication_stmt", 255, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_publication_stmt", 256, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_subscription_stmt", 257, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_subscription_stmt", 258, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_subscription_stmt", 259, 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, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "integer", 260, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, integer), &pg_query__integer__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "float", 261, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, float_), &pg_query__float__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "boolean", 262, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, boolean), &pg_query__boolean__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "string", 263, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, string), &pg_query__string__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "bit_string", 264, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, bit_string), &pg_query__bit_string__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "list", 265, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, list), &pg_query__list__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "int_list", 266, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, int_list), &pg_query__int_list__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "oid_list", 267, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, oid_list), &pg_query__oid_list__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_const", 268, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_const), &pg_query__a__const__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__node__field_indices_by_name[] = { 75, /* field[75] = a_array_expr */ 267, /* field[267] = a_const */ 67, /* field[67] = a_expr */ 73, /* field[73] = a_indices */ 74, /* field[74] = a_indirection */ 72, /* field[72] = a_star */ 147, /* field[147] = access_priv */ 6, /* field[6] = aggref */ 0, /* field[0] = alias */ 143, /* field[143] = alter_collation_stmt */ 227, /* field[227] = alter_database_refresh_coll_stmt */ 228, /* field[228] = alter_database_set_stmt */ 226, /* field[226] = alter_database_stmt */ 149, /* field[149] = alter_default_privileges_stmt */ 144, /* field[144] = alter_domain_stmt */ 222, /* field[222] = alter_enum_stmt */ 176, /* field[176] = alter_event_trig_stmt */ 161, /* field[161] = alter_extension_contents_stmt */ 160, /* field[160] = alter_extension_stmt */ 163, /* field[163] = alter_fdw_stmt */ 165, /* field[165] = alter_foreign_server_stmt */ 203, /* field[203] = alter_function_stmt */ 209, /* field[209] = alter_object_depends_stmt */ 210, /* field[210] = alter_object_schema_stmt */ 189, /* field[189] = alter_op_family_stmt */ 212, /* field[212] = alter_operator_stmt */ 211, /* field[211] = alter_owner_stmt */ 172, /* field[172] = alter_policy_stmt */ 255, /* field[255] = alter_publication_stmt */ 180, /* field[180] = alter_role_set_stmt */ 179, /* field[179] = alter_role_stmt */ 183, /* field[183] = alter_seq_stmt */ 200, /* field[200] = alter_stats_stmt */ 257, /* field[257] = alter_subscription_stmt */ 230, /* field[230] = alter_system_stmt */ 142, /* field[142] = alter_table_cmd */ 158, /* field[158] = alter_table_move_all_stmt */ 157, /* field[157] = alter_table_space_options_stmt */ 140, /* field[140] = alter_table_stmt */ 251, /* field[251] = alter_tsconfiguration_stmt */ 250, /* field[250] = alter_tsdictionary_stmt */ 213, /* field[213] = alter_type_stmt */ 168, /* field[168] = alter_user_mapping_stmt */ 21, /* field[21] = alternative_sub_plan */ 26, /* field[26] = array_coerce_expr */ 32, /* field[32] = array_expr */ 263, /* field[263] = bit_string */ 18, /* field[18] = bool_expr */ 261, /* field[261] = boolean */ 50, /* field[50] = boolean_test */ 207, /* field[207] = call_context */ 206, /* field[206] = call_stmt */ 29, /* field[29] = case_expr */ 31, /* field[31] = case_test_expr */ 30, /* field[30] = case_when */ 237, /* field[237] = check_point_stmt */ 195, /* field[195] = close_portal_stmt */ 231, /* field[231] = cluster_stmt */ 35, /* field[35] = coalesce_expr */ 52, /* field[52] = coerce_to_domain */ 53, /* field[53] = coerce_to_domain_value */ 25, /* field[25] = coerce_via_io */ 69, /* field[69] = collate_clause */ 28, /* field[28] = collate_expr */ 85, /* field[85] = column_def */ 65, /* field[65] = column_ref */ 192, /* field[192] = comment_stmt */ 111, /* field[111] = common_table_expr */ 219, /* field[219] = composite_type_stmt */ 154, /* field[154] = constraint */ 240, /* field[240] = constraints_set_stmt */ 27, /* field[27] = convert_rowtype_expr */ 150, /* field[150] = copy_stmt */ 173, /* field[173] = create_am_stmt */ 243, /* field[243] = create_cast_stmt */ 242, /* field[242] = create_conversion_stmt */ 185, /* field[185] = create_domain_stmt */ 220, /* field[220] = create_enum_stmt */ 175, /* field[175] = create_event_trig_stmt */ 159, /* field[159] = create_extension_stmt */ 162, /* field[162] = create_fdw_stmt */ 164, /* field[164] = create_foreign_server_stmt */ 166, /* field[166] = create_foreign_table_stmt */ 201, /* field[201] = create_function_stmt */ 187, /* field[187] = create_op_class_item */ 186, /* field[186] = create_op_class_stmt */ 188, /* field[188] = create_op_family_stmt */ 177, /* field[177] = create_plang_stmt */ 171, /* field[171] = create_policy_stmt */ 254, /* field[254] = create_publication_stmt */ 221, /* field[221] = create_range_stmt */ 178, /* field[178] = create_role_stmt */ 139, /* field[139] = create_schema_stmt */ 182, /* field[182] = create_seq_stmt */ 198, /* field[198] = create_stats_stmt */ 153, /* field[153] = create_stmt */ 256, /* field[256] = create_subscription_stmt */ 235, /* field[235] = create_table_as_stmt */ 155, /* field[155] = create_table_space_stmt */ 244, /* field[244] = create_transform_stmt */ 174, /* field[174] = create_trig_stmt */ 167, /* field[167] = create_user_mapping_stmt */ 225, /* field[225] = createdb_stmt */ 110, /* field[110] = ctecycle_clause */ 109, /* field[109] = ctesearch_clause */ 55, /* field[55] = current_of_expr */ 247, /* field[247] = deallocate_stmt */ 194, /* field[194] = declare_cursor_stmt */ 88, /* field[88] = def_elem */ 184, /* field[184] = define_stmt */ 132, /* field[132] = delete_stmt */ 238, /* field[238] = discard_stmt */ 15, /* field[15] = distinct_expr */ 204, /* field[204] = do_stmt */ 248, /* field[248] = drop_owned_stmt */ 181, /* field[181] = drop_role_stmt */ 190, /* field[190] = drop_stmt */ 258, /* field[258] = drop_subscription_stmt */ 156, /* field[156] = drop_table_space_stmt */ 169, /* field[169] = drop_user_mapping_stmt */ 229, /* field[229] = dropdb_stmt */ 246, /* field[246] = execute_stmt */ 234, /* field[234] = explain_stmt */ 196, /* field[196] = fetch_stmt */ 22, /* field[22] = field_select */ 23, /* field[23] = field_store */ 260, /* field[260] = float */ 61, /* field[61] = from_expr */ 71, /* field[71] = func_call */ 12, /* field[12] = func_expr */ 202, /* field[202] = function_parameter */ 148, /* field[148] = grant_role_stmt */ 145, /* field[145] = grant_stmt */ 7, /* field[7] = grouping_func */ 103, /* field[103] = grouping_set */ 170, /* field[170] = import_foreign_schema_stmt */ 87, /* field[87] = index_elem */ 197, /* field[197] = index_stmt */ 107, /* field[107] = infer_clause */ 57, /* field[57] = inference_elem */ 205, /* field[205] = inline_code_block */ 131, /* field[131] = insert_stmt */ 265, /* field[265] = int_list */ 259, /* field[259] = integer */ 3, /* field[3] = into_clause */ 60, /* field[60] = join_expr */ 127, /* field[127] = json_agg_constructor */ 115, /* field[115] = json_argument */ 129, /* field[129] = json_array_agg */ 125, /* field[125] = json_array_constructor */ 126, /* field[126] = json_array_query_constructor */ 44, /* field[44] = json_behavior */ 42, /* field[42] = json_constructor_expr */ 45, /* field[45] = json_expr */ 39, /* field[39] = json_format */ 116, /* field[116] = json_func_expr */ 43, /* field[43] = json_is_predicate */ 120, /* field[120] = json_key_value */ 128, /* field[128] = json_object_agg */ 124, /* field[124] = json_object_constructor */ 114, /* field[114] = json_output */ 121, /* field[121] = json_parse_expr */ 40, /* field[40] = json_returning */ 122, /* field[122] = json_scalar_expr */ 123, /* field[123] = json_serialize_expr */ 118, /* field[118] = json_table */ 119, /* field[119] = json_table_column */ 46, /* field[46] = json_table_path */ 47, /* field[47] = json_table_path_scan */ 117, /* field[117] = json_table_path_spec */ 48, /* field[48] = json_table_sibling_join */ 41, /* field[41] = json_value_expr */ 264, /* field[264] = list */ 216, /* field[216] = listen_stmt */ 224, /* field[224] = load_stmt */ 239, /* field[239] = lock_stmt */ 89, /* field[89] = locking_clause */ 51, /* field[51] = merge_action */ 134, /* field[134] = merge_stmt */ 10, /* field[10] = merge_support_func */ 112, /* field[112] = merge_when_clause */ 36, /* field[36] = min_max_expr */ 77, /* field[77] = multi_assign_ref */ 13, /* field[13] = named_arg_expr */ 56, /* field[56] = next_value_expr */ 215, /* field[215] = notify_stmt */ 16, /* field[16] = null_if_expr */ 49, /* field[49] = null_test */ 146, /* field[146] = object_with_args */ 266, /* field[266] = oid_list */ 108, /* field[108] = on_conflict_clause */ 62, /* field[62] = on_conflict_expr */ 14, /* field[14] = op_expr */ 5, /* field[5] = param */ 66, /* field[66] = param_ref */ 93, /* field[93] = partition_bound_spec */ 96, /* field[96] = partition_cmd */ 91, /* field[91] = partition_elem */ 94, /* field[94] = partition_range_datum */ 92, /* field[92] = partition_spec */ 138, /* field[138] = plassign_stmt */ 245, /* field[245] = prepare_stmt */ 253, /* field[253] = publication_obj_spec */ 252, /* field[252] = publication_table */ 63, /* field[63] = query */ 81, /* field[81] = range_function */ 80, /* field[80] = range_subselect */ 82, /* field[82] = range_table_func */ 83, /* field[83] = range_table_func_col */ 84, /* field[84] = range_table_sample */ 97, /* field[97] = range_tbl_entry */ 99, /* field[99] = range_tbl_function */ 59, /* field[59] = range_tbl_ref */ 1, /* field[1] = range_var */ 130, /* field[130] = raw_stmt */ 249, /* field[249] = reassign_owned_stmt */ 236, /* field[236] = refresh_mat_view_stmt */ 241, /* field[241] = reindex_stmt */ 24, /* field[24] = relabel_type */ 208, /* field[208] = rename_stmt */ 141, /* field[141] = replica_identity_stmt */ 76, /* field[76] = res_target */ 137, /* field[137] = return_stmt */ 70, /* field[70] = role_spec */ 34, /* field[34] = row_compare_expr */ 33, /* field[33] = row_expr */ 105, /* field[105] = row_mark_clause */ 98, /* field[98] = rtepermission_info */ 214, /* field[214] = rule_stmt */ 17, /* field[17] = scalar_array_op_expr */ 193, /* field[193] = sec_label_stmt */ 135, /* field[135] = select_stmt */ 136, /* field[136] = set_operation_stmt */ 54, /* field[54] = set_to_default */ 95, /* field[95] = single_partition_spec */ 78, /* field[78] = sort_by */ 102, /* field[102] = sort_group_clause */ 37, /* field[37] = sqlvalue_function */ 199, /* field[199] = stats_elem */ 262, /* field[262] = string */ 19, /* field[19] = sub_link */ 20, /* field[20] = sub_plan */ 11, /* field[11] = subscripting_ref */ 2, /* field[2] = table_func */ 86, /* field[86] = table_like_clause */ 100, /* field[100] = table_sample_clause */ 58, /* field[58] = target_entry */ 218, /* field[218] = transaction_stmt */ 113, /* field[113] = trigger_transition */ 191, /* field[191] = truncate_stmt */ 68, /* field[68] = type_cast */ 64, /* field[64] = type_name */ 217, /* field[217] = unlisten_stmt */ 133, /* field[133] = update_stmt */ 233, /* field[233] = vacuum_relation */ 232, /* field[232] = vacuum_stmt */ 4, /* field[4] = var */ 151, /* field[151] = variable_set_stmt */ 152, /* field[152] = variable_show_stmt */ 223, /* field[223] = view_stmt */ 104, /* field[104] = window_clause */ 79, /* field[79] = window_def */ 8, /* field[8] = window_func */ 9, /* field[9] = window_func_run_condition */ 101, /* field[101] = with_check_option */ 106, /* field[106] = with_clause */ 38, /* field[38] = xml_expr */ 90, /* field[90] = xml_serialize */ }; static const ProtobufCIntRange pg_query__node__number_ranges[1 + 1] = { { 1, 0 }, { 0, 268 } }; const ProtobufCMessageDescriptor pg_query__node__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Node", "Node", "PgQuery__Node", "pg_query", sizeof(PgQuery__Node), 268, 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] = { { "fval", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Float, fval), 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] = fval */ }; 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__boolean__field_descriptors[1] = { { "boolval", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Boolean, boolval), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__boolean__field_indices_by_name[] = { 0, /* field[0] = boolval */ }; static const ProtobufCIntRange pg_query__boolean__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__boolean__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Boolean", "Boolean", "PgQuery__Boolean", "pg_query", sizeof(PgQuery__Boolean), 1, pg_query__boolean__field_descriptors, pg_query__boolean__field_indices_by_name, 1, pg_query__boolean__number_ranges, (ProtobufCMessageInit) pg_query__boolean__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__string__field_descriptors[1] = { { "sval", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__String, sval), 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] = sval */ }; 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] = { { "bsval", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__BitString, bsval), 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] = bsval */ }; 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] */ }; 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__a__const__field_descriptors[7] = { { "ival", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AConst, val_case), offsetof(PgQuery__AConst, ival), &pg_query__integer__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fval", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AConst, val_case), offsetof(PgQuery__AConst, fval), &pg_query__float__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "boolval", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AConst, val_case), offsetof(PgQuery__AConst, boolval), &pg_query__boolean__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sval", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AConst, val_case), offsetof(PgQuery__AConst, sval), &pg_query__string__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "bsval", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AConst, val_case), offsetof(PgQuery__AConst, bsval), &pg_query__bit_string__descriptor, NULL, PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "isnull", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AConst, isnull), 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__AConst, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__a__const__field_indices_by_name[] = { 2, /* field[2] = boolval */ 4, /* field[4] = bsval */ 1, /* field[1] = fval */ 5, /* field[5] = isnull */ 0, /* field[0] = ival */ 6, /* field[6] = location */ 3, /* field[3] = sval */ }; static const ProtobufCIntRange pg_query__a__const__number_ranges[2 + 1] = { { 1, 0 }, { 10, 5 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__a__const__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.A_Const", "AConst", "PgQuery__AConst", "pg_query", sizeof(PgQuery__AConst), 7, pg_query__a__const__field_descriptors, pg_query__a__const__field_indices_by_name, 2, pg_query__a__const__number_ranges, (ProtobufCMessageInit) pg_query__a__const__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[17] = { { "functype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__TableFunc, functype), &pg_query__table_func_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ns_uris", 2, 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", 3, 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", 4, 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", 5, 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", 6, 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", 7, 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", 8, 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", 9, 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", 10, 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", 11, 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 */ }, { "colvalexprs", 12, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_colvalexprs), offsetof(PgQuery__TableFunc, colvalexprs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "passingvalexprs", 13, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_passingvalexprs), offsetof(PgQuery__TableFunc, passingvalexprs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "notnulls", 14, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__TableFunc, n_notnulls), offsetof(PgQuery__TableFunc, notnulls), NULL, NULL, PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plan", 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TableFunc, plan), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ordinalitycol", 16, 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", 17, 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[] = { 8, /* field[8] = colcollations */ 10, /* field[10] = coldefexprs */ 9, /* field[9] = colexprs */ 5, /* field[5] = colnames */ 6, /* field[6] = coltypes */ 7, /* field[7] = coltypmods */ 11, /* field[11] = colvalexprs */ 3, /* field[3] = docexpr */ 0, /* field[0] = functype */ 16, /* field[16] = location */ 13, /* field[13] = notnulls */ 2, /* field[2] = ns_names */ 1, /* field[1] = ns_uris */ 15, /* field[15] = ordinalitycol */ 12, /* field[12] = passingvalexprs */ 14, /* field[14] = plan */ 4, /* field[4] = rowexpr */ }; static const ProtobufCIntRange pg_query__table_func__number_ranges[1 + 1] = { { 1, 0 }, { 0, 17 } }; const ProtobufCMessageDescriptor pg_query__table_func__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TableFunc", "TableFunc", "PgQuery__TableFunc", "pg_query", sizeof(PgQuery__TableFunc), 17, 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] */ }; 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__var__field_descriptors[9] = { { "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_INT32, 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 */ }, { "varnullingrels", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__Var, n_varnullingrels), offsetof(PgQuery__Var, varnullingrels), NULL, NULL, PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "varlevelsup", 8, 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 */ }, { "location", 9, 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[] = { 8, /* field[8] = location */ 2, /* field[2] = varattno */ 5, /* field[5] = varcollid */ 7, /* field[7] = varlevelsup */ 1, /* field[1] = varno */ 6, /* field[6] = varnullingrels */ 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, 9 } }; const ProtobufCMessageDescriptor pg_query__var__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Var", "Var", "PgQuery__Var", "pg_query", sizeof(PgQuery__Var), 9, 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[19] = { { "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 */ }, { "aggargtypes", 6, 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", 7, 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", 8, 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", 9, 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", 10, 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", 11, 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", 12, 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", 13, 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", 14, 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", 15, 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", 16, 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 */ }, { "aggno", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggtransno", 18, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggtransno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 19, 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[] = { 5, /* field[5] = aggargtypes */ 3, /* field[3] = aggcollid */ 6, /* field[6] = aggdirectargs */ 9, /* field[9] = aggdistinct */ 10, /* field[10] = aggfilter */ 1, /* field[1] = aggfnoid */ 13, /* field[13] = aggkind */ 14, /* field[14] = agglevelsup */ 16, /* field[16] = aggno */ 8, /* field[8] = aggorder */ 15, /* field[15] = aggsplit */ 11, /* field[11] = aggstar */ 17, /* field[17] = aggtransno */ 2, /* field[2] = aggtype */ 12, /* field[12] = aggvariadic */ 7, /* field[7] = args */ 4, /* field[4] = inputcollid */ 18, /* field[18] = location */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__aggref__number_ranges[1 + 1] = { { 1, 0 }, { 0, 19 } }; const ProtobufCMessageDescriptor pg_query__aggref__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Aggref", "Aggref", "PgQuery__Aggref", "pg_query", sizeof(PgQuery__Aggref), 19, 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[5] = { { "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 */ }, { "agglevelsup", 4, 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", 5, 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[] = { 3, /* field[3] = agglevelsup */ 1, /* field[1] = args */ 4, /* field[4] = location */ 2, /* field[2] = refs */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__grouping_func__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__grouping_func__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.GroupingFunc", "GroupingFunc", "PgQuery__GroupingFunc", "pg_query", sizeof(PgQuery__GroupingFunc), 5, 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[12] = { { "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 */ }, { "run_condition", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__WindowFunc, n_run_condition), offsetof(PgQuery__WindowFunc, run_condition), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "winref", 9, 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", 10, 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", 11, 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", 12, 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 */ 11, /* field[11] = location */ 7, /* field[7] = run_condition */ 10, /* field[10] = winagg */ 3, /* field[3] = wincollid */ 1, /* field[1] = winfnoid */ 8, /* field[8] = winref */ 9, /* field[9] = winstar */ 2, /* field[2] = wintype */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__window_func__number_ranges[1 + 1] = { { 1, 0 }, { 0, 12 } }; const ProtobufCMessageDescriptor pg_query__window_func__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.WindowFunc", "WindowFunc", "PgQuery__WindowFunc", "pg_query", sizeof(PgQuery__WindowFunc), 12, 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__window_func_run_condition__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFuncRunCondition, 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__WindowFuncRunCondition, opno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFuncRunCondition, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "wfunc_left", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFuncRunCondition, wfunc_left), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFuncRunCondition, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__window_func_run_condition__field_indices_by_name[] = { 4, /* field[4] = arg */ 2, /* field[2] = inputcollid */ 1, /* field[1] = opno */ 3, /* field[3] = wfunc_left */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__window_func_run_condition__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__window_func_run_condition__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.WindowFuncRunCondition", "WindowFuncRunCondition", "PgQuery__WindowFuncRunCondition", "pg_query", sizeof(PgQuery__WindowFuncRunCondition), 5, pg_query__window_func_run_condition__field_descriptors, pg_query__window_func_run_condition__field_indices_by_name, 1, pg_query__window_func_run_condition__number_ranges, (ProtobufCMessageInit) pg_query__window_func_run_condition__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__merge_support_func__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__MergeSupportFunc, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "msftype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__MergeSupportFunc, msftype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "msfcollid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__MergeSupportFunc, msfcollid), 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__MergeSupportFunc, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__merge_support_func__field_indices_by_name[] = { 3, /* field[3] = location */ 2, /* field[2] = msfcollid */ 1, /* field[1] = msftype */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__merge_support_func__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__merge_support_func__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.MergeSupportFunc", "MergeSupportFunc", "PgQuery__MergeSupportFunc", "pg_query", sizeof(PgQuery__MergeSupportFunc), 4, pg_query__merge_support_func__field_descriptors, pg_query__merge_support_func__field_indices_by_name, 1, pg_query__merge_support_func__number_ranges, (ProtobufCMessageInit) pg_query__merge_support_func__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__subscripting_ref__field_descriptors[10] = { { "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 */ }, { "refrestype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubscriptingRef, refrestype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "reftypmod", 5, 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", 6, 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", 7, 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", 8, 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", 9, 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", 10, 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[] = { 9, /* field[9] = refassgnexpr */ 5, /* field[5] = refcollid */ 1, /* field[1] = refcontainertype */ 2, /* field[2] = refelemtype */ 8, /* field[8] = refexpr */ 7, /* field[7] = reflowerindexpr */ 3, /* field[3] = refrestype */ 4, /* field[4] = reftypmod */ 6, /* field[6] = refupperindexpr */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__subscripting_ref__number_ranges[1 + 1] = { { 1, 0 }, { 0, 10 } }; const ProtobufCMessageDescriptor pg_query__subscripting_ref__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SubscriptingRef", "SubscriptingRef", "PgQuery__SubscriptingRef", "pg_query", sizeof(PgQuery__SubscriptingRef), 10, 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[8] = { { "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 */ }, { "opresulttype", 3, 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", 4, 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", 5, 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", 6, 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", 7, 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", 8, 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[] = { 6, /* field[6] = args */ 5, /* field[5] = inputcollid */ 7, /* field[7] = location */ 4, /* field[4] = opcollid */ 1, /* field[1] = opno */ 2, /* field[2] = opresulttype */ 3, /* field[3] = opretset */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__op_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__op_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.OpExpr", "OpExpr", "PgQuery__OpExpr", "pg_query", sizeof(PgQuery__OpExpr), 8, 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[8] = { { "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 */ }, { "opresulttype", 3, 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", 4, 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", 5, 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", 6, 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", 7, 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", 8, 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[] = { 6, /* field[6] = args */ 5, /* field[5] = inputcollid */ 7, /* field[7] = location */ 4, /* field[4] = opcollid */ 1, /* field[1] = opno */ 2, /* field[2] = opresulttype */ 3, /* field[3] = opretset */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__distinct_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__distinct_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DistinctExpr", "DistinctExpr", "PgQuery__DistinctExpr", "pg_query", sizeof(PgQuery__DistinctExpr), 8, 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[8] = { { "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 */ }, { "opresulttype", 3, 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", 4, 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", 5, 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", 6, 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", 7, 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", 8, 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[] = { 6, /* field[6] = args */ 5, /* field[5] = inputcollid */ 7, /* field[7] = location */ 4, /* field[4] = opcollid */ 1, /* field[1] = opno */ 2, /* field[2] = opresulttype */ 3, /* field[3] = opretset */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__null_if_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__null_if_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.NullIfExpr", "NullIfExpr", "PgQuery__NullIfExpr", "pg_query", sizeof(PgQuery__NullIfExpr), 8, 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[6] = { { "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 */ }, { "use_or", 3, 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", 4, 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", 5, 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", 6, 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[] = { 4, /* field[4] = args */ 3, /* field[3] = inputcollid */ 5, /* field[5] = location */ 1, /* field[1] = opno */ 2, /* field[2] = use_or */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__scalar_array_op_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; 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), 6, 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[11] = { { "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 */ }, { "indent", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, indent), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type", 9, 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", 10, 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", 11, 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 */ 7, /* field[7] = indent */ 10, /* field[10] = location */ 2, /* field[2] = name */ 3, /* field[3] = named_args */ 1, /* field[1] = op */ 8, /* field[8] = type */ 9, /* field[9] = typmod */ 6, /* field[6] = xmloption */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__xml_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 11 } }; const ProtobufCMessageDescriptor pg_query__xml_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.XmlExpr", "XmlExpr", "PgQuery__XmlExpr", "pg_query", sizeof(PgQuery__XmlExpr), 11, 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__json_format__field_descriptors[3] = { { "format_type", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__JsonFormat, format_type), &pg_query__json_format_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "encoding", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__JsonFormat, encoding), &pg_query__json_encoding__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__JsonFormat, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_format__field_indices_by_name[] = { 1, /* field[1] = encoding */ 0, /* field[0] = format_type */ 2, /* field[2] = location */ }; static const ProtobufCIntRange pg_query__json_format__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__json_format__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonFormat", "JsonFormat", "PgQuery__JsonFormat", "pg_query", sizeof(PgQuery__JsonFormat), 3, pg_query__json_format__field_descriptors, pg_query__json_format__field_indices_by_name, 1, pg_query__json_format__number_ranges, (ProtobufCMessageInit) pg_query__json_format__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_returning__field_descriptors[3] = { { "format", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonReturning, format), &pg_query__json_format__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "typid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__JsonReturning, typid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "typmod", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__JsonReturning, typmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_returning__field_indices_by_name[] = { 0, /* field[0] = format */ 1, /* field[1] = typid */ 2, /* field[2] = typmod */ }; static const ProtobufCIntRange pg_query__json_returning__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__json_returning__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonReturning", "JsonReturning", "PgQuery__JsonReturning", "pg_query", sizeof(PgQuery__JsonReturning), 3, pg_query__json_returning__field_descriptors, pg_query__json_returning__field_indices_by_name, 1, pg_query__json_returning__number_ranges, (ProtobufCMessageInit) pg_query__json_returning__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_value_expr__field_descriptors[3] = { { "raw_expr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonValueExpr, raw_expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "formatted_expr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonValueExpr, formatted_expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "format", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonValueExpr, format), &pg_query__json_format__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_value_expr__field_indices_by_name[] = { 2, /* field[2] = format */ 1, /* field[1] = formatted_expr */ 0, /* field[0] = raw_expr */ }; static const ProtobufCIntRange pg_query__json_value_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__json_value_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonValueExpr", "JsonValueExpr", "PgQuery__JsonValueExpr", "pg_query", sizeof(PgQuery__JsonValueExpr), 3, pg_query__json_value_expr__field_descriptors, pg_query__json_value_expr__field_indices_by_name, 1, pg_query__json_value_expr__number_ranges, (ProtobufCMessageInit) pg_query__json_value_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_constructor_expr__field_descriptors[9] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonConstructorExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__JsonConstructorExpr, type), &pg_query__json_constructor_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__JsonConstructorExpr, n_args), offsetof(PgQuery__JsonConstructorExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonConstructorExpr, func), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coercion", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonConstructorExpr, coercion), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "returning", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonConstructorExpr, returning), &pg_query__json_returning__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "absent_on_null", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonConstructorExpr, absent_on_null), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "unique", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonConstructorExpr, unique), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__JsonConstructorExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_constructor_expr__field_indices_by_name[] = { 6, /* field[6] = absent_on_null */ 2, /* field[2] = args */ 4, /* field[4] = coercion */ 3, /* field[3] = func */ 8, /* field[8] = location */ 5, /* field[5] = returning */ 1, /* field[1] = type */ 7, /* field[7] = unique */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__json_constructor_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 9 } }; const ProtobufCMessageDescriptor pg_query__json_constructor_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonConstructorExpr", "JsonConstructorExpr", "PgQuery__JsonConstructorExpr", "pg_query", sizeof(PgQuery__JsonConstructorExpr), 9, pg_query__json_constructor_expr__field_descriptors, pg_query__json_constructor_expr__field_indices_by_name, 1, pg_query__json_constructor_expr__number_ranges, (ProtobufCMessageInit) pg_query__json_constructor_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_is_predicate__field_descriptors[5] = { { "expr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonIsPredicate, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "format", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonIsPredicate, format), &pg_query__json_format__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "item_type", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__JsonIsPredicate, item_type), &pg_query__json_value_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "unique_keys", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonIsPredicate, unique_keys), 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__JsonIsPredicate, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_is_predicate__field_indices_by_name[] = { 0, /* field[0] = expr */ 1, /* field[1] = format */ 2, /* field[2] = item_type */ 4, /* field[4] = location */ 3, /* field[3] = unique_keys */ }; static const ProtobufCIntRange pg_query__json_is_predicate__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__json_is_predicate__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonIsPredicate", "JsonIsPredicate", "PgQuery__JsonIsPredicate", "pg_query", sizeof(PgQuery__JsonIsPredicate), 5, pg_query__json_is_predicate__field_descriptors, pg_query__json_is_predicate__field_indices_by_name, 1, pg_query__json_is_predicate__number_ranges, (ProtobufCMessageInit) pg_query__json_is_predicate__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_behavior__field_descriptors[4] = { { "btype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__JsonBehavior, btype), &pg_query__json_behavior_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__JsonBehavior, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coerce", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonBehavior, coerce), 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__JsonBehavior, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_behavior__field_indices_by_name[] = { 0, /* field[0] = btype */ 2, /* field[2] = coerce */ 1, /* field[1] = expr */ 3, /* field[3] = location */ }; static const ProtobufCIntRange pg_query__json_behavior__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__json_behavior__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonBehavior", "JsonBehavior", "PgQuery__JsonBehavior", "pg_query", sizeof(PgQuery__JsonBehavior), 4, pg_query__json_behavior__field_descriptors, pg_query__json_behavior__field_indices_by_name, 1, pg_query__json_behavior__number_ranges, (ProtobufCMessageInit) pg_query__json_behavior__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_expr__field_descriptors[17] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonExpr, 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__JsonExpr, op), &pg_query__json_expr_op__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "column_name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__JsonExpr, column_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "formatted_expr", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonExpr, formatted_expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "format", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonExpr, format), &pg_query__json_format__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "path_spec", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonExpr, path_spec), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "returning", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonExpr, returning), &pg_query__json_returning__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "passing_names", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__JsonExpr, n_passing_names), offsetof(PgQuery__JsonExpr, passing_names), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "passing_values", 9, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__JsonExpr, n_passing_values), offsetof(PgQuery__JsonExpr, passing_values), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_empty", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonExpr, on_empty), &pg_query__json_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_error", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonExpr, on_error), &pg_query__json_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "use_io_coercion", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonExpr, use_io_coercion), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "use_json_coercion", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonExpr, use_json_coercion), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "wrapper", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__JsonExpr, wrapper), &pg_query__json_wrapper__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "omit_quotes", 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonExpr, omit_quotes), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collation", 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__JsonExpr, collation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__JsonExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_expr__field_indices_by_name[] = { 15, /* field[15] = collation */ 2, /* field[2] = column_name */ 4, /* field[4] = format */ 3, /* field[3] = formatted_expr */ 16, /* field[16] = location */ 14, /* field[14] = omit_quotes */ 9, /* field[9] = on_empty */ 10, /* field[10] = on_error */ 1, /* field[1] = op */ 7, /* field[7] = passing_names */ 8, /* field[8] = passing_values */ 5, /* field[5] = path_spec */ 6, /* field[6] = returning */ 11, /* field[11] = use_io_coercion */ 12, /* field[12] = use_json_coercion */ 13, /* field[13] = wrapper */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__json_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 17 } }; const ProtobufCMessageDescriptor pg_query__json_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonExpr", "JsonExpr", "PgQuery__JsonExpr", "pg_query", sizeof(PgQuery__JsonExpr), 17, pg_query__json_expr__field_descriptors, pg_query__json_expr__field_indices_by_name, 1, pg_query__json_expr__number_ranges, (ProtobufCMessageInit) pg_query__json_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_table_path__field_descriptors[1] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTablePath, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_table_path__field_indices_by_name[] = { 0, /* field[0] = name */ }; static const ProtobufCIntRange pg_query__json_table_path__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__json_table_path__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonTablePath", "JsonTablePath", "PgQuery__JsonTablePath", "pg_query", sizeof(PgQuery__JsonTablePath), 1, pg_query__json_table_path__field_descriptors, pg_query__json_table_path__field_indices_by_name, 1, pg_query__json_table_path__number_ranges, (ProtobufCMessageInit) pg_query__json_table_path__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_table_path_scan__field_descriptors[6] = { { "plan", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTablePathScan, plan), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "path", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTablePathScan, path), &pg_query__json_table_path__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "error_on_error", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTablePathScan, error_on_error), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "child", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTablePathScan, child), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "col_min", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTablePathScan, col_min), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "col_max", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTablePathScan, col_max), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_table_path_scan__field_indices_by_name[] = { 3, /* field[3] = child */ 5, /* field[5] = col_max */ 4, /* field[4] = col_min */ 2, /* field[2] = error_on_error */ 1, /* field[1] = path */ 0, /* field[0] = plan */ }; static const ProtobufCIntRange pg_query__json_table_path_scan__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__json_table_path_scan__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonTablePathScan", "JsonTablePathScan", "PgQuery__JsonTablePathScan", "pg_query", sizeof(PgQuery__JsonTablePathScan), 6, pg_query__json_table_path_scan__field_descriptors, pg_query__json_table_path_scan__field_indices_by_name, 1, pg_query__json_table_path_scan__number_ranges, (ProtobufCMessageInit) pg_query__json_table_path_scan__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_table_sibling_join__field_descriptors[3] = { { "plan", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTableSiblingJoin, plan), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lplan", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTableSiblingJoin, lplan), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rplan", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTableSiblingJoin, rplan), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_table_sibling_join__field_indices_by_name[] = { 1, /* field[1] = lplan */ 0, /* field[0] = plan */ 2, /* field[2] = rplan */ }; static const ProtobufCIntRange pg_query__json_table_sibling_join__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__json_table_sibling_join__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonTableSiblingJoin", "JsonTableSiblingJoin", "PgQuery__JsonTableSiblingJoin", "pg_query", sizeof(PgQuery__JsonTableSiblingJoin), 3, pg_query__json_table_sibling_join__field_descriptors, pg_query__json_table_sibling_join__field_indices_by_name, 1, pg_query__json_table_sibling_join__number_ranges, (ProtobufCMessageInit) pg_query__json_table_sibling_join__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__merge_action__field_descriptors[6] = { { "match_kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__MergeAction, match_kind), &pg_query__merge_match_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "command_type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__MergeAction, command_type), &pg_query__cmd_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "override", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__MergeAction, override), &pg_query__overriding_kind__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__MergeAction, qual), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "target_list", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__MergeAction, n_target_list), offsetof(PgQuery__MergeAction, target_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "update_colnos", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__MergeAction, n_update_colnos), offsetof(PgQuery__MergeAction, update_colnos), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__merge_action__field_indices_by_name[] = { 1, /* field[1] = command_type */ 0, /* field[0] = match_kind */ 2, /* field[2] = override */ 3, /* field[3] = qual */ 4, /* field[4] = target_list */ 5, /* field[5] = update_colnos */ }; static const ProtobufCIntRange pg_query__merge_action__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__merge_action__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.MergeAction", "MergeAction", "PgQuery__MergeAction", "pg_query", sizeof(PgQuery__MergeAction), 6, pg_query__merge_action__field_descriptors, pg_query__merge_action__field_indices_by_name, 1, pg_query__merge_action__number_ranges, (ProtobufCMessageInit) pg_query__merge_action__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[9] = { { "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 */ }, { "join_using_alias", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JoinExpr, join_using_alias), &pg_query__alias__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "quals", 7, 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", 8, 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", 9, 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[] = { 7, /* field[7] = alias */ 1, /* field[1] = is_natural */ 5, /* field[5] = join_using_alias */ 0, /* field[0] = jointype */ 2, /* field[2] = larg */ 6, /* field[6] = quals */ 3, /* field[3] = rarg */ 8, /* field[8] = rtindex */ 4, /* field[4] = using_clause */ }; static const ProtobufCIntRange pg_query__join_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 9 } }; const ProtobufCMessageDescriptor pg_query__join_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JoinExpr", "JoinExpr", "PgQuery__JoinExpr", "pg_query", sizeof(PgQuery__JoinExpr), 9, 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__query__field_descriptors[42] = { { "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 */ }, { "is_return", 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Query, is_return), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cte_list", 16, 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", 17, 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 */ }, { "rteperminfos", 18, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Query, n_rteperminfos), offsetof(PgQuery__Query, rteperminfos), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "jointree", 19, 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 */ }, { "merge_action_list", 20, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Query, n_merge_action_list), offsetof(PgQuery__Query, merge_action_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "merge_target_relation", 21, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Query, merge_target_relation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "merge_join_condition", 22, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Query, merge_join_condition), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "target_list", 23, 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", 24, 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", 25, 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", 26, 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", 27, 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 */ }, { "group_distinct", 28, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Query, group_distinct), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grouping_sets", 29, 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", 30, 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", 31, 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", 32, 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", 33, 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", 34, 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", 35, 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", 36, 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", 37, 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", 38, 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", 39, 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", 40, 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", 41, 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", 42, 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 */ 38, /* field[38] = constraint_deps */ 15, /* field[15] = cte_list */ 31, /* field[31] = distinct_clause */ 26, /* field[26] = group_clause */ 27, /* field[27] = group_distinct */ 28, /* field[28] = 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 */ 29, /* field[29] = having_qual */ 14, /* field[14] = is_return */ 18, /* field[18] = jointree */ 34, /* field[34] = limit_count */ 33, /* field[33] = limit_offset */ 35, /* field[35] = limit_option */ 19, /* field[19] = merge_action_list */ 21, /* field[21] = merge_join_condition */ 20, /* field[20] = merge_target_relation */ 24, /* field[24] = on_conflict */ 23, /* field[23] = override */ 1, /* field[1] = query_source */ 4, /* field[4] = result_relation */ 25, /* field[25] = returning_list */ 36, /* field[36] = row_marks */ 16, /* field[16] = rtable */ 17, /* field[17] = rteperminfos */ 37, /* field[37] = set_operations */ 32, /* field[32] = sort_clause */ 41, /* field[41] = stmt_len */ 40, /* field[40] = stmt_location */ 22, /* field[22] = target_list */ 3, /* field[3] = utility_stmt */ 30, /* field[30] = window_clause */ 39, /* field[39] = with_check_options */ }; static const ProtobufCIntRange pg_query__query__number_ranges[1 + 1] = { { 1, 0 }, { 0, 42 } }; const ProtobufCMessageDescriptor pg_query__query__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Query", "Query", "PgQuery__Query", "pg_query", sizeof(PgQuery__Query), 42, 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__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_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__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__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__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__func_call__field_descriptors[11] = { { "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 */ }, { "over", 5, 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 */ }, { "agg_within_group", 6, 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", 7, 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", 8, 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", 9, 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 */ }, { "funcformat", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__FuncCall, funcformat), &pg_query__coercion_form__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 11, 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[] = { 7, /* field[7] = agg_distinct */ 3, /* field[3] = agg_filter */ 2, /* field[2] = agg_order */ 6, /* field[6] = agg_star */ 5, /* field[5] = agg_within_group */ 1, /* field[1] = args */ 8, /* field[8] = func_variadic */ 9, /* field[9] = funcformat */ 0, /* field[0] = funcname */ 10, /* field[10] = location */ 4, /* field[4] = over */ }; static const ProtobufCIntRange pg_query__func_call__number_ranges[1 + 1] = { { 1, 0 }, { 0, 11 } }; const ProtobufCMessageDescriptor pg_query__func_call__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.FuncCall", "FuncCall", "PgQuery__FuncCall", "pg_query", sizeof(PgQuery__FuncCall), 11, 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__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_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__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__column_def__field_descriptors[19] = { { "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 */ }, { "compression", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, compression), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inhcount", 4, 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", 5, 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", 6, 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", 7, 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", 8, 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 */ }, { "storage_name", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, storage_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "raw_default", 10, 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", 11, 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", 12, 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", 13, 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", 14, 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", 15, 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", 16, 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", 17, 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", 18, 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", 19, 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[] = { 14, /* field[14] = coll_clause */ 15, /* field[15] = coll_oid */ 0, /* field[0] = colname */ 2, /* field[2] = compression */ 16, /* field[16] = constraints */ 10, /* field[10] = cooked_default */ 17, /* field[17] = fdwoptions */ 13, /* field[13] = generated */ 11, /* field[11] = identity */ 12, /* field[12] = identity_sequence */ 3, /* field[3] = inhcount */ 6, /* field[6] = is_from_type */ 4, /* field[4] = is_local */ 5, /* field[5] = is_not_null */ 18, /* field[18] = location */ 9, /* field[9] = raw_default */ 7, /* field[7] = storage */ 8, /* field[8] = storage_name */ 1, /* field[1] = type_name */ }; static const ProtobufCIntRange pg_query__column_def__number_ranges[1 + 1] = { { 1, 0 }, { 0, 19 } }; const ProtobufCMessageDescriptor pg_query__column_def__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ColumnDef", "ColumnDef", "PgQuery__ColumnDef", "pg_query", sizeof(PgQuery__ColumnDef), 19, 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__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__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__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__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__xml_serialize__field_descriptors[5] = { { "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 */ }, { "indent", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__XmlSerialize, indent), 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__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] = indent */ 4, /* field[4] = location */ 2, /* field[2] = type_name */ 0, /* field[0] = xmloption */ }; static const ProtobufCIntRange pg_query__xml_serialize__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__xml_serialize__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.XmlSerialize", "XmlSerialize", "PgQuery__XmlSerialize", "pg_query", sizeof(PgQuery__XmlSerialize), 5, 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__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_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionSpec, strategy), &pg_query__partition_strategy__descriptor, NULL, 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] */ }; #define pg_query__single_partition_spec__field_descriptors NULL #define pg_query__single_partition_spec__field_indices_by_name NULL #define pg_query__single_partition_spec__number_ranges NULL const ProtobufCMessageDescriptor pg_query__single_partition_spec__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SinglePartitionSpec", "SinglePartitionSpec", "PgQuery__SinglePartitionSpec", "pg_query", sizeof(PgQuery__SinglePartitionSpec), 0, pg_query__single_partition_spec__field_descriptors, pg_query__single_partition_spec__field_indices_by_name, 0, pg_query__single_partition_spec__number_ranges, (ProtobufCMessageInit) pg_query__single_partition_spec__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__partition_cmd__field_descriptors[3] = { { "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 */ }, { "concurrent", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionCmd, concurrent), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__partition_cmd__field_indices_by_name[] = { 1, /* field[1] = bound */ 2, /* field[2] = concurrent */ 0, /* field[0] = name */ }; static const ProtobufCIntRange pg_query__partition_cmd__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__partition_cmd__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PartitionCmd", "PartitionCmd", "PgQuery__PartitionCmd", "pg_query", sizeof(PgQuery__PartitionCmd), 3, 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__range_tbl_entry__field_descriptors[32] = { { "alias", 1, 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", 2, 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 */ }, { "rtekind", 3, 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", 4, 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 */ }, { "inh", 5, 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 */ }, { "relkind", 6, 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", 7, 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 */ }, { "perminfoindex", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, perminfoindex), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tablesample", 9, 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", 10, 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", 11, 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", 12, 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", 13, 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", 14, 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", 15, 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", 16, 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 */ }, { "join_using_alias", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, join_using_alias), &pg_query__alias__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "functions", 18, 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", 19, 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", 20, 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", 21, 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", 22, 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", 23, 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", 24, 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", 25, 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", 26, 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", 27, 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", 28, 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", 29, 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 */ }, { "lateral", 30, 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 */ }, { "in_from_cl", 31, 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 */ }, { "security_quals", 32, 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[] = { 0, /* field[0] = alias */ 26, /* field[26] = colcollations */ 24, /* field[24] = coltypes */ 25, /* field[25] = coltypmods */ 22, /* field[22] = ctelevelsup */ 21, /* field[21] = ctename */ 27, /* field[27] = enrname */ 28, /* field[28] = enrtuples */ 1, /* field[1] = eref */ 18, /* field[18] = funcordinality */ 17, /* field[17] = functions */ 30, /* field[30] = in_from_cl */ 4, /* field[4] = inh */ 16, /* field[16] = join_using_alias */ 13, /* field[13] = joinaliasvars */ 14, /* field[14] = joinleftcols */ 12, /* field[12] = joinmergedcols */ 15, /* field[15] = joinrightcols */ 11, /* field[11] = jointype */ 29, /* field[29] = lateral */ 7, /* field[7] = perminfoindex */ 3, /* field[3] = relid */ 5, /* field[5] = relkind */ 6, /* field[6] = rellockmode */ 2, /* field[2] = rtekind */ 10, /* field[10] = security_barrier */ 31, /* field[31] = security_quals */ 23, /* field[23] = self_reference */ 9, /* field[9] = subquery */ 19, /* field[19] = tablefunc */ 8, /* field[8] = tablesample */ 20, /* field[20] = values_lists */ }; static const ProtobufCIntRange pg_query__range_tbl_entry__number_ranges[1 + 1] = { { 1, 0 }, { 0, 32 } }; const ProtobufCMessageDescriptor pg_query__range_tbl_entry__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeTblEntry", "RangeTblEntry", "PgQuery__RangeTblEntry", "pg_query", sizeof(PgQuery__RangeTblEntry), 32, 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__rtepermission_info__field_descriptors[7] = { { "relid", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RTEPermissionInfo, relid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inh", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RTEPermissionInfo, inh), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "required_perms", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT64, 0, /* quantifier_offset */ offsetof(PgQuery__RTEPermissionInfo, required_perms), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "check_as_user", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RTEPermissionInfo, check_as_user), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "selected_cols", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__RTEPermissionInfo, n_selected_cols), offsetof(PgQuery__RTEPermissionInfo, selected_cols), NULL, NULL, PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inserted_cols", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__RTEPermissionInfo, n_inserted_cols), offsetof(PgQuery__RTEPermissionInfo, inserted_cols), NULL, NULL, PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "updated_cols", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__RTEPermissionInfo, n_updated_cols), offsetof(PgQuery__RTEPermissionInfo, updated_cols), NULL, NULL, PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__rtepermission_info__field_indices_by_name[] = { 3, /* field[3] = check_as_user */ 1, /* field[1] = inh */ 5, /* field[5] = inserted_cols */ 0, /* field[0] = relid */ 2, /* field[2] = required_perms */ 4, /* field[4] = selected_cols */ 6, /* field[6] = updated_cols */ }; static const ProtobufCIntRange pg_query__rtepermission_info__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__rtepermission_info__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RTEPermissionInfo", "RTEPermissionInfo", "PgQuery__RTEPermissionInfo", "pg_query", sizeof(PgQuery__RTEPermissionInfo), 7, pg_query__rtepermission_info__field_descriptors, pg_query__rtepermission_info__field_indices_by_name, 1, pg_query__rtepermission_info__number_ranges, (ProtobufCMessageInit) pg_query__rtepermission_info__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, 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__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__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__ctesearch_clause__field_descriptors[4] = { { "search_col_list", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CTESearchClause, n_search_col_list), offsetof(PgQuery__CTESearchClause, search_col_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "search_breadth_first", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CTESearchClause, search_breadth_first), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "search_seq_column", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CTESearchClause, search_seq_column), 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__CTESearchClause, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__ctesearch_clause__field_indices_by_name[] = { 3, /* field[3] = location */ 1, /* field[1] = search_breadth_first */ 0, /* field[0] = search_col_list */ 2, /* field[2] = search_seq_column */ }; static const ProtobufCIntRange pg_query__ctesearch_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__ctesearch_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CTESearchClause", "CTESearchClause", "PgQuery__CTESearchClause", "pg_query", sizeof(PgQuery__CTESearchClause), 4, pg_query__ctesearch_clause__field_descriptors, pg_query__ctesearch_clause__field_indices_by_name, 1, pg_query__ctesearch_clause__number_ranges, (ProtobufCMessageInit) pg_query__ctesearch_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__ctecycle_clause__field_descriptors[10] = { { "cycle_col_list", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CTECycleClause, n_cycle_col_list), offsetof(PgQuery__CTECycleClause, cycle_col_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cycle_mark_column", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CTECycleClause, cycle_mark_column), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cycle_mark_value", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CTECycleClause, cycle_mark_value), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cycle_mark_default", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CTECycleClause, cycle_mark_default), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cycle_path_column", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CTECycleClause, cycle_path_column), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CTECycleClause, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cycle_mark_type", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CTECycleClause, cycle_mark_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cycle_mark_typmod", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CTECycleClause, cycle_mark_typmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cycle_mark_collation", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CTECycleClause, cycle_mark_collation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cycle_mark_neop", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CTECycleClause, cycle_mark_neop), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__ctecycle_clause__field_indices_by_name[] = { 0, /* field[0] = cycle_col_list */ 8, /* field[8] = cycle_mark_collation */ 1, /* field[1] = cycle_mark_column */ 3, /* field[3] = cycle_mark_default */ 9, /* field[9] = cycle_mark_neop */ 6, /* field[6] = cycle_mark_type */ 7, /* field[7] = cycle_mark_typmod */ 2, /* field[2] = cycle_mark_value */ 4, /* field[4] = cycle_path_column */ 5, /* field[5] = location */ }; static const ProtobufCIntRange pg_query__ctecycle_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 10 } }; const ProtobufCMessageDescriptor pg_query__ctecycle_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CTECycleClause", "CTECycleClause", "PgQuery__CTECycleClause", "pg_query", sizeof(PgQuery__CTECycleClause), 10, pg_query__ctecycle_clause__field_descriptors, pg_query__ctecycle_clause__field_indices_by_name, 1, pg_query__ctecycle_clause__number_ranges, (ProtobufCMessageInit) pg_query__ctecycle_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__common_table_expr__field_descriptors[13] = { { "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 */ }, { "search_clause", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CommonTableExpr, search_clause), &pg_query__ctesearch_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cycle_clause", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CommonTableExpr, cycle_clause), &pg_query__ctecycle_clause__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__CommonTableExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cterecursive", 8, 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", 9, 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", 10, 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", 11, 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", 12, 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", 13, 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 */ 12, /* field[12] = ctecolcollations */ 9, /* field[9] = ctecolnames */ 10, /* field[10] = ctecoltypes */ 11, /* field[11] = ctecoltypmods */ 2, /* field[2] = ctematerialized */ 0, /* field[0] = ctename */ 3, /* field[3] = ctequery */ 7, /* field[7] = cterecursive */ 8, /* field[8] = cterefcount */ 5, /* field[5] = cycle_clause */ 6, /* field[6] = location */ 4, /* field[4] = search_clause */ }; static const ProtobufCIntRange pg_query__common_table_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 13 } }; const ProtobufCMessageDescriptor pg_query__common_table_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CommonTableExpr", "CommonTableExpr", "PgQuery__CommonTableExpr", "pg_query", sizeof(PgQuery__CommonTableExpr), 13, 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__merge_when_clause__field_descriptors[6] = { { "match_kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__MergeWhenClause, match_kind), &pg_query__merge_match_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "command_type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__MergeWhenClause, command_type), &pg_query__cmd_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "override", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__MergeWhenClause, override), &pg_query__overriding_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "condition", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__MergeWhenClause, condition), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "target_list", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__MergeWhenClause, n_target_list), offsetof(PgQuery__MergeWhenClause, target_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "values", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__MergeWhenClause, n_values), offsetof(PgQuery__MergeWhenClause, values), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__merge_when_clause__field_indices_by_name[] = { 1, /* field[1] = command_type */ 3, /* field[3] = condition */ 0, /* field[0] = match_kind */ 2, /* field[2] = override */ 4, /* field[4] = target_list */ 5, /* field[5] = values */ }; static const ProtobufCIntRange pg_query__merge_when_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__merge_when_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.MergeWhenClause", "MergeWhenClause", "PgQuery__MergeWhenClause", "pg_query", sizeof(PgQuery__MergeWhenClause), 6, pg_query__merge_when_clause__field_descriptors, pg_query__merge_when_clause__field_indices_by_name, 1, pg_query__merge_when_clause__number_ranges, (ProtobufCMessageInit) pg_query__merge_when_clause__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__json_output__field_descriptors[2] = { { "type_name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonOutput, type_name), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "returning", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonOutput, returning), &pg_query__json_returning__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_output__field_indices_by_name[] = { 1, /* field[1] = returning */ 0, /* field[0] = type_name */ }; static const ProtobufCIntRange pg_query__json_output__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__json_output__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonOutput", "JsonOutput", "PgQuery__JsonOutput", "pg_query", sizeof(PgQuery__JsonOutput), 2, pg_query__json_output__field_descriptors, pg_query__json_output__field_indices_by_name, 1, pg_query__json_output__number_ranges, (ProtobufCMessageInit) pg_query__json_output__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_argument__field_descriptors[2] = { { "val", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonArgument, val), &pg_query__json_value_expr__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__JsonArgument, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_argument__field_indices_by_name[] = { 1, /* field[1] = name */ 0, /* field[0] = val */ }; static const ProtobufCIntRange pg_query__json_argument__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__json_argument__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonArgument", "JsonArgument", "PgQuery__JsonArgument", "pg_query", sizeof(PgQuery__JsonArgument), 2, pg_query__json_argument__field_descriptors, pg_query__json_argument__field_indices_by_name, 1, pg_query__json_argument__number_ranges, (ProtobufCMessageInit) pg_query__json_argument__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_func_expr__field_descriptors[11] = { { "op", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__JsonFuncExpr, op), &pg_query__json_expr_op__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "column_name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__JsonFuncExpr, column_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "context_item", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonFuncExpr, context_item), &pg_query__json_value_expr__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "pathspec", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonFuncExpr, pathspec), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "passing", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__JsonFuncExpr, n_passing), offsetof(PgQuery__JsonFuncExpr, passing), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "output", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonFuncExpr, output), &pg_query__json_output__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_empty", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonFuncExpr, on_empty), &pg_query__json_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_error", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonFuncExpr, on_error), &pg_query__json_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "wrapper", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__JsonFuncExpr, wrapper), &pg_query__json_wrapper__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "quotes", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__JsonFuncExpr, quotes), &pg_query__json_quotes__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__JsonFuncExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_func_expr__field_indices_by_name[] = { 1, /* field[1] = column_name */ 2, /* field[2] = context_item */ 10, /* field[10] = location */ 6, /* field[6] = on_empty */ 7, /* field[7] = on_error */ 0, /* field[0] = op */ 5, /* field[5] = output */ 4, /* field[4] = passing */ 3, /* field[3] = pathspec */ 9, /* field[9] = quotes */ 8, /* field[8] = wrapper */ }; static const ProtobufCIntRange pg_query__json_func_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 11 } }; const ProtobufCMessageDescriptor pg_query__json_func_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonFuncExpr", "JsonFuncExpr", "PgQuery__JsonFuncExpr", "pg_query", sizeof(PgQuery__JsonFuncExpr), 11, pg_query__json_func_expr__field_descriptors, pg_query__json_func_expr__field_indices_by_name, 1, pg_query__json_func_expr__number_ranges, (ProtobufCMessageInit) pg_query__json_func_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_table_path_spec__field_descriptors[4] = { { "string", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTablePathSpec, string), &pg_query__node__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__JsonTablePathSpec, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name_location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTablePathSpec, name_location), 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__JsonTablePathSpec, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_table_path_spec__field_indices_by_name[] = { 3, /* field[3] = location */ 1, /* field[1] = name */ 2, /* field[2] = name_location */ 0, /* field[0] = string */ }; static const ProtobufCIntRange pg_query__json_table_path_spec__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__json_table_path_spec__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonTablePathSpec", "JsonTablePathSpec", "PgQuery__JsonTablePathSpec", "pg_query", sizeof(PgQuery__JsonTablePathSpec), 4, pg_query__json_table_path_spec__field_descriptors, pg_query__json_table_path_spec__field_indices_by_name, 1, pg_query__json_table_path_spec__number_ranges, (ProtobufCMessageInit) pg_query__json_table_path_spec__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_table__field_descriptors[8] = { { "context_item", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTable, context_item), &pg_query__json_value_expr__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "pathspec", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTable, pathspec), &pg_query__json_table_path_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "passing", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__JsonTable, n_passing), offsetof(PgQuery__JsonTable, passing), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "columns", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__JsonTable, n_columns), offsetof(PgQuery__JsonTable, columns), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_error", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTable, on_error), &pg_query__json_behavior__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__JsonTable, alias), &pg_query__alias__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lateral", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTable, lateral), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTable, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_table__field_indices_by_name[] = { 5, /* field[5] = alias */ 3, /* field[3] = columns */ 0, /* field[0] = context_item */ 6, /* field[6] = lateral */ 7, /* field[7] = location */ 4, /* field[4] = on_error */ 2, /* field[2] = passing */ 1, /* field[1] = pathspec */ }; static const ProtobufCIntRange pg_query__json_table__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__json_table__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonTable", "JsonTable", "PgQuery__JsonTable", "pg_query", sizeof(PgQuery__JsonTable), 8, pg_query__json_table__field_descriptors, pg_query__json_table__field_indices_by_name, 1, pg_query__json_table__number_ranges, (ProtobufCMessageInit) pg_query__json_table__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_table_column__field_descriptors[11] = { { "coltype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTableColumn, coltype), &pg_query__json_table_column_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__JsonTableColumn, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTableColumn, type_name), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "pathspec", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTableColumn, pathspec), &pg_query__json_table_path_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "format", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTableColumn, format), &pg_query__json_format__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "wrapper", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTableColumn, wrapper), &pg_query__json_wrapper__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "quotes", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTableColumn, quotes), &pg_query__json_quotes__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "columns", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__JsonTableColumn, n_columns), offsetof(PgQuery__JsonTableColumn, columns), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_empty", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTableColumn, on_empty), &pg_query__json_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_error", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTableColumn, on_error), &pg_query__json_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__JsonTableColumn, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_table_column__field_indices_by_name[] = { 0, /* field[0] = coltype */ 7, /* field[7] = columns */ 4, /* field[4] = format */ 10, /* field[10] = location */ 1, /* field[1] = name */ 8, /* field[8] = on_empty */ 9, /* field[9] = on_error */ 3, /* field[3] = pathspec */ 6, /* field[6] = quotes */ 2, /* field[2] = type_name */ 5, /* field[5] = wrapper */ }; static const ProtobufCIntRange pg_query__json_table_column__number_ranges[1 + 1] = { { 1, 0 }, { 0, 11 } }; const ProtobufCMessageDescriptor pg_query__json_table_column__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonTableColumn", "JsonTableColumn", "PgQuery__JsonTableColumn", "pg_query", sizeof(PgQuery__JsonTableColumn), 11, pg_query__json_table_column__field_descriptors, pg_query__json_table_column__field_indices_by_name, 1, pg_query__json_table_column__number_ranges, (ProtobufCMessageInit) pg_query__json_table_column__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_key_value__field_descriptors[2] = { { "key", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonKeyValue, key), &pg_query__node__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__JsonKeyValue, value), &pg_query__json_value_expr__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_key_value__field_indices_by_name[] = { 0, /* field[0] = key */ 1, /* field[1] = value */ }; static const ProtobufCIntRange pg_query__json_key_value__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__json_key_value__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonKeyValue", "JsonKeyValue", "PgQuery__JsonKeyValue", "pg_query", sizeof(PgQuery__JsonKeyValue), 2, pg_query__json_key_value__field_descriptors, pg_query__json_key_value__field_indices_by_name, 1, pg_query__json_key_value__number_ranges, (ProtobufCMessageInit) pg_query__json_key_value__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_parse_expr__field_descriptors[4] = { { "expr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonParseExpr, expr), &pg_query__json_value_expr__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "output", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonParseExpr, output), &pg_query__json_output__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "unique_keys", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonParseExpr, unique_keys), 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__JsonParseExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_parse_expr__field_indices_by_name[] = { 0, /* field[0] = expr */ 3, /* field[3] = location */ 1, /* field[1] = output */ 2, /* field[2] = unique_keys */ }; static const ProtobufCIntRange pg_query__json_parse_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__json_parse_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonParseExpr", "JsonParseExpr", "PgQuery__JsonParseExpr", "pg_query", sizeof(PgQuery__JsonParseExpr), 4, pg_query__json_parse_expr__field_descriptors, pg_query__json_parse_expr__field_indices_by_name, 1, pg_query__json_parse_expr__number_ranges, (ProtobufCMessageInit) pg_query__json_parse_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_scalar_expr__field_descriptors[3] = { { "expr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonScalarExpr, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "output", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonScalarExpr, output), &pg_query__json_output__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__JsonScalarExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_scalar_expr__field_indices_by_name[] = { 0, /* field[0] = expr */ 2, /* field[2] = location */ 1, /* field[1] = output */ }; static const ProtobufCIntRange pg_query__json_scalar_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__json_scalar_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonScalarExpr", "JsonScalarExpr", "PgQuery__JsonScalarExpr", "pg_query", sizeof(PgQuery__JsonScalarExpr), 3, pg_query__json_scalar_expr__field_descriptors, pg_query__json_scalar_expr__field_indices_by_name, 1, pg_query__json_scalar_expr__number_ranges, (ProtobufCMessageInit) pg_query__json_scalar_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_serialize_expr__field_descriptors[3] = { { "expr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonSerializeExpr, expr), &pg_query__json_value_expr__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "output", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonSerializeExpr, output), &pg_query__json_output__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__JsonSerializeExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_serialize_expr__field_indices_by_name[] = { 0, /* field[0] = expr */ 2, /* field[2] = location */ 1, /* field[1] = output */ }; static const ProtobufCIntRange pg_query__json_serialize_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__json_serialize_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonSerializeExpr", "JsonSerializeExpr", "PgQuery__JsonSerializeExpr", "pg_query", sizeof(PgQuery__JsonSerializeExpr), 3, pg_query__json_serialize_expr__field_descriptors, pg_query__json_serialize_expr__field_indices_by_name, 1, pg_query__json_serialize_expr__number_ranges, (ProtobufCMessageInit) pg_query__json_serialize_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_object_constructor__field_descriptors[5] = { { "exprs", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__JsonObjectConstructor, n_exprs), offsetof(PgQuery__JsonObjectConstructor, exprs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "output", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonObjectConstructor, output), &pg_query__json_output__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "absent_on_null", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonObjectConstructor, absent_on_null), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "unique", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonObjectConstructor, unique), 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__JsonObjectConstructor, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_object_constructor__field_indices_by_name[] = { 2, /* field[2] = absent_on_null */ 0, /* field[0] = exprs */ 4, /* field[4] = location */ 1, /* field[1] = output */ 3, /* field[3] = unique */ }; static const ProtobufCIntRange pg_query__json_object_constructor__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__json_object_constructor__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonObjectConstructor", "JsonObjectConstructor", "PgQuery__JsonObjectConstructor", "pg_query", sizeof(PgQuery__JsonObjectConstructor), 5, pg_query__json_object_constructor__field_descriptors, pg_query__json_object_constructor__field_indices_by_name, 1, pg_query__json_object_constructor__number_ranges, (ProtobufCMessageInit) pg_query__json_object_constructor__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_array_constructor__field_descriptors[4] = { { "exprs", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__JsonArrayConstructor, n_exprs), offsetof(PgQuery__JsonArrayConstructor, exprs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "output", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonArrayConstructor, output), &pg_query__json_output__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "absent_on_null", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonArrayConstructor, absent_on_null), 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__JsonArrayConstructor, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_array_constructor__field_indices_by_name[] = { 2, /* field[2] = absent_on_null */ 0, /* field[0] = exprs */ 3, /* field[3] = location */ 1, /* field[1] = output */ }; static const ProtobufCIntRange pg_query__json_array_constructor__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__json_array_constructor__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonArrayConstructor", "JsonArrayConstructor", "PgQuery__JsonArrayConstructor", "pg_query", sizeof(PgQuery__JsonArrayConstructor), 4, pg_query__json_array_constructor__field_descriptors, pg_query__json_array_constructor__field_indices_by_name, 1, pg_query__json_array_constructor__number_ranges, (ProtobufCMessageInit) pg_query__json_array_constructor__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_array_query_constructor__field_descriptors[5] = { { "query", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonArrayQueryConstructor, query), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "output", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonArrayQueryConstructor, output), &pg_query__json_output__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "format", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonArrayQueryConstructor, format), &pg_query__json_format__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "absent_on_null", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonArrayQueryConstructor, absent_on_null), 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__JsonArrayQueryConstructor, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_array_query_constructor__field_indices_by_name[] = { 3, /* field[3] = absent_on_null */ 2, /* field[2] = format */ 4, /* field[4] = location */ 1, /* field[1] = output */ 0, /* field[0] = query */ }; static const ProtobufCIntRange pg_query__json_array_query_constructor__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__json_array_query_constructor__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonArrayQueryConstructor", "JsonArrayQueryConstructor", "PgQuery__JsonArrayQueryConstructor", "pg_query", sizeof(PgQuery__JsonArrayQueryConstructor), 5, pg_query__json_array_query_constructor__field_descriptors, pg_query__json_array_query_constructor__field_indices_by_name, 1, pg_query__json_array_query_constructor__number_ranges, (ProtobufCMessageInit) pg_query__json_array_query_constructor__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_agg_constructor__field_descriptors[5] = { { "output", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonAggConstructor, output), &pg_query__json_output__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "agg_filter", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonAggConstructor, agg_filter), &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__JsonAggConstructor, n_agg_order), offsetof(PgQuery__JsonAggConstructor, agg_order), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "over", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonAggConstructor, over), &pg_query__window_def__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__JsonAggConstructor, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_agg_constructor__field_indices_by_name[] = { 1, /* field[1] = agg_filter */ 2, /* field[2] = agg_order */ 4, /* field[4] = location */ 0, /* field[0] = output */ 3, /* field[3] = over */ }; static const ProtobufCIntRange pg_query__json_agg_constructor__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__json_agg_constructor__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonAggConstructor", "JsonAggConstructor", "PgQuery__JsonAggConstructor", "pg_query", sizeof(PgQuery__JsonAggConstructor), 5, pg_query__json_agg_constructor__field_descriptors, pg_query__json_agg_constructor__field_indices_by_name, 1, pg_query__json_agg_constructor__number_ranges, (ProtobufCMessageInit) pg_query__json_agg_constructor__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_object_agg__field_descriptors[4] = { { "constructor", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonObjectAgg, constructor), &pg_query__json_agg_constructor__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__JsonObjectAgg, arg), &pg_query__json_key_value__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "absent_on_null", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonObjectAgg, absent_on_null), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "unique", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonObjectAgg, unique), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_object_agg__field_indices_by_name[] = { 2, /* field[2] = absent_on_null */ 1, /* field[1] = arg */ 0, /* field[0] = constructor */ 3, /* field[3] = unique */ }; static const ProtobufCIntRange pg_query__json_object_agg__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__json_object_agg__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonObjectAgg", "JsonObjectAgg", "PgQuery__JsonObjectAgg", "pg_query", sizeof(PgQuery__JsonObjectAgg), 4, pg_query__json_object_agg__field_descriptors, pg_query__json_object_agg__field_indices_by_name, 1, pg_query__json_object_agg__number_ranges, (ProtobufCMessageInit) pg_query__json_object_agg__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__json_array_agg__field_descriptors[3] = { { "constructor", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JsonArrayAgg, constructor), &pg_query__json_agg_constructor__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__JsonArrayAgg, arg), &pg_query__json_value_expr__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "absent_on_null", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JsonArrayAgg, absent_on_null), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__json_array_agg__field_indices_by_name[] = { 2, /* field[2] = absent_on_null */ 1, /* field[1] = arg */ 0, /* field[0] = constructor */ }; static const ProtobufCIntRange pg_query__json_array_agg__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__json_array_agg__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JsonArrayAgg", "JsonArrayAgg", "PgQuery__JsonArrayAgg", "pg_query", sizeof(PgQuery__JsonArrayAgg), 3, pg_query__json_array_agg__field_descriptors, pg_query__json_array_agg__field_indices_by_name, 1, pg_query__json_array_agg__number_ranges, (ProtobufCMessageInit) pg_query__json_array_agg__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__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__merge_stmt__field_descriptors[6] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__MergeStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "source_relation", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__MergeStmt, source_relation), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "join_condition", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__MergeStmt, join_condition), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "merge_when_clauses", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__MergeStmt, n_merge_when_clauses), offsetof(PgQuery__MergeStmt, merge_when_clauses), &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__MergeStmt, n_returning_list), offsetof(PgQuery__MergeStmt, 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__MergeStmt, with_clause), &pg_query__with_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__merge_stmt__field_indices_by_name[] = { 2, /* field[2] = join_condition */ 3, /* field[3] = merge_when_clauses */ 0, /* field[0] = relation */ 4, /* field[4] = returning_list */ 1, /* field[1] = source_relation */ 5, /* field[5] = with_clause */ }; static const ProtobufCIntRange pg_query__merge_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__merge_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.MergeStmt", "MergeStmt", "PgQuery__MergeStmt", "pg_query", sizeof(PgQuery__MergeStmt), 6, pg_query__merge_stmt__field_descriptors, pg_query__merge_stmt__field_indices_by_name, 1, pg_query__merge_stmt__number_ranges, (ProtobufCMessageInit) pg_query__merge_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__select_stmt__field_descriptors[20] = { { "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 */ }, { "group_distinct", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__SelectStmt, group_distinct), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "having_clause", 8, 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", 9, 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", 10, 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", 11, 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", 12, 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", 13, 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", 14, 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", 15, 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", 16, 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", 17, 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", 18, 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", 19, 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", 20, 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[] = { 17, /* field[17] = all */ 0, /* field[0] = distinct_clause */ 3, /* field[3] = from_clause */ 5, /* field[5] = group_clause */ 6, /* field[6] = group_distinct */ 7, /* field[7] = having_clause */ 1, /* field[1] = into_clause */ 18, /* field[18] = larg */ 12, /* field[12] = limit_count */ 11, /* field[11] = limit_offset */ 13, /* field[13] = limit_option */ 14, /* field[14] = locking_clause */ 16, /* field[16] = op */ 19, /* field[19] = rarg */ 10, /* field[10] = sort_clause */ 2, /* field[2] = target_list */ 9, /* field[9] = values_lists */ 4, /* field[4] = where_clause */ 8, /* field[8] = window_clause */ 15, /* field[15] = with_clause */ }; static const ProtobufCIntRange pg_query__select_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 20 } }; const ProtobufCMessageDescriptor pg_query__select_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SelectStmt", "SelectStmt", "PgQuery__SelectStmt", "pg_query", sizeof(PgQuery__SelectStmt), 20, 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__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__return_stmt__field_descriptors[1] = { { "returnval", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ReturnStmt, returnval), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__return_stmt__field_indices_by_name[] = { 0, /* field[0] = returnval */ }; static const ProtobufCIntRange pg_query__return_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__return_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ReturnStmt", "ReturnStmt", "PgQuery__ReturnStmt", "pg_query", sizeof(PgQuery__ReturnStmt), 1, pg_query__return_stmt__field_descriptors, pg_query__return_stmt__field_indices_by_name, 1, pg_query__return_stmt__number_ranges, (ProtobufCMessageInit) pg_query__return_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__plassign_stmt__field_descriptors[5] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__PLAssignStmt, 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__PLAssignStmt, n_indirection), offsetof(PgQuery__PLAssignStmt, indirection), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "nnames", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__PLAssignStmt, nnames), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "val", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__PLAssignStmt, val), &pg_query__select_stmt__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__PLAssignStmt, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__plassign_stmt__field_indices_by_name[] = { 1, /* field[1] = indirection */ 4, /* field[4] = location */ 0, /* field[0] = name */ 2, /* field[2] = nnames */ 3, /* field[3] = val */ }; static const ProtobufCIntRange pg_query__plassign_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__plassign_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PLAssignStmt", "PLAssignStmt", "PgQuery__PLAssignStmt", "pg_query", sizeof(PgQuery__PLAssignStmt), 5, pg_query__plassign_stmt__field_descriptors, pg_query__plassign_stmt__field_indices_by_name, 1, pg_query__plassign_stmt__number_ranges, (ProtobufCMessageInit) pg_query__plassign_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_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 */ }, { "objtype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableStmt, objtype), &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 */ 2, /* field[2] = objtype */ 0, /* field[0] = relation */ }; 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__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_table_cmd__field_descriptors[8] = { { "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 */ }, { "recurse", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableCmd, recurse), 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 */ 7, /* field[7] = recurse */ 0, /* field[0] = subtype */ }; static const ProtobufCIntRange pg_query__alter_table_cmd__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__alter_table_cmd__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterTableCmd", "AlterTableCmd", "PgQuery__AlterTableCmd", "pg_query", sizeof(PgQuery__AlterTableCmd), 8, 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_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__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__grant_stmt__field_descriptors[9] = { { "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 */ }, { "grantor", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__GrantStmt, grantor), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 9, 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[] = { 8, /* field[8] = behavior */ 6, /* field[6] = grant_option */ 5, /* field[5] = grantees */ 7, /* field[7] = grantor */ 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, 9 } }; const ProtobufCMessageDescriptor pg_query__grant_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.GrantStmt", "GrantStmt", "PgQuery__GrantStmt", "pg_query", sizeof(PgQuery__GrantStmt), 9, 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__object_with_args__field_descriptors[4] = { { "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 */ }, { "objfuncargs", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ObjectWithArgs, n_objfuncargs), offsetof(PgQuery__ObjectWithArgs, objfuncargs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args_unspecified", 4, 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[] = { 3, /* field[3] = args_unspecified */ 1, /* field[1] = objargs */ 2, /* field[2] = objfuncargs */ 0, /* field[0] = objname */ }; static const ProtobufCIntRange pg_query__object_with_args__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__object_with_args__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ObjectWithArgs", "ObjectWithArgs", "PgQuery__ObjectWithArgs", "pg_query", sizeof(PgQuery__ObjectWithArgs), 4, 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__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 */ }, { "opt", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GrantRoleStmt, n_opt), offsetof(PgQuery__GrantRoleStmt, opt), &pg_query__node__descriptor, 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[] = { 5, /* field[5] = behavior */ 0, /* field[0] = granted_roles */ 1, /* field[1] = grantee_roles */ 4, /* field[4] = grantor */ 2, /* field[2] = is_grant */ 3, /* field[3] = opt */ }; 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__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__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__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__constraint__field_descriptors[31] = { { "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 */ }, { "skip_validation", 5, 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", 6, 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 */ }, { "is_no_inherit", 7, 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", 8, 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", 9, 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", 10, 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 */ }, { "inhcount", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, inhcount), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "nulls_not_distinct", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, nulls_not_distinct), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "keys", 13, 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", 14, 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", 15, 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", 16, 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", 17, 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", 18, 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", 19, 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", 20, 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", 21, 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", 22, 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", 23, 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", 24, 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", 25, 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", 26, 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", 27, 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 */ }, { "fk_del_set_cols", 28, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Constraint, n_fk_del_set_cols), offsetof(PgQuery__Constraint, fk_del_set_cols), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "old_conpfeqop", 29, 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", 30, 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 */ }, { "location", 31, 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 */ }, }; static const unsigned pg_query__constraint__field_indices_by_name[] = { 19, /* field[19] = access_method */ 1, /* field[1] = conname */ 0, /* field[0] = contype */ 8, /* field[8] = cooked_expr */ 2, /* field[2] = deferrable */ 14, /* field[14] = exclusions */ 22, /* field[22] = fk_attrs */ 26, /* field[26] = fk_del_action */ 27, /* field[27] = fk_del_set_cols */ 24, /* field[24] = fk_matchtype */ 25, /* field[25] = fk_upd_action */ 9, /* field[9] = generated_when */ 13, /* field[13] = including */ 16, /* field[16] = indexname */ 17, /* field[17] = indexspace */ 10, /* field[10] = inhcount */ 3, /* field[3] = initdeferred */ 5, /* field[5] = initially_valid */ 6, /* field[6] = is_no_inherit */ 12, /* field[12] = keys */ 30, /* field[30] = location */ 11, /* field[11] = nulls_not_distinct */ 28, /* field[28] = old_conpfeqop */ 29, /* field[29] = old_pktable_oid */ 15, /* field[15] = options */ 23, /* field[23] = pk_attrs */ 21, /* field[21] = pktable */ 7, /* field[7] = raw_expr */ 18, /* field[18] = reset_default_tblspc */ 4, /* field[4] = skip_validation */ 20, /* field[20] = where_clause */ }; static const ProtobufCIntRange pg_query__constraint__number_ranges[1 + 1] = { { 1, 0 }, { 0, 31 } }; const ProtobufCMessageDescriptor pg_query__constraint__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Constraint", "Constraint", "PgQuery__Constraint", "pg_query", sizeof(PgQuery__Constraint), 31, 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__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_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__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_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_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__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__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_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_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_trig_stmt__field_descriptors[15] = { { "replace", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTrigStmt, replace), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "isconstraint", 2, 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 */ }, { "trigname", 3, 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", 4, 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", 5, 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", 6, 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", 7, 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", 8, 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", 9, 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", 10, 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", 11, 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 */ }, { "transition_rels", 12, 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", 13, 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", 14, 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", 15, 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[] = { 5, /* field[5] = args */ 9, /* field[9] = columns */ 14, /* field[14] = constrrel */ 12, /* field[12] = deferrable */ 8, /* field[8] = events */ 4, /* field[4] = funcname */ 13, /* field[13] = initdeferred */ 1, /* field[1] = isconstraint */ 3, /* field[3] = relation */ 0, /* field[0] = replace */ 6, /* field[6] = row */ 7, /* field[7] = timing */ 11, /* field[11] = transition_rels */ 2, /* field[2] = trigname */ 10, /* field[10] = when_clause */ }; static const ProtobufCIntRange pg_query__create_trig_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 15 } }; const ProtobufCMessageDescriptor pg_query__create_trig_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateTrigStmt", "CreateTrigStmt", "PgQuery__CreateTrigStmt", "pg_query", sizeof(PgQuery__CreateTrigStmt), 15, 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_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__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__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__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__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__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__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__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_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__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__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__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__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__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__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[24] = { { "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_number", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, old_number), 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_relfilelocator_subid", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, old_first_relfilelocator_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 */ }, { "nulls_not_distinct", 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, nulls_not_distinct), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "primary", 17, 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", 18, 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", 19, 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", 20, 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", 21, 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", 22, 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", 23, 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", 24, 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 */ 21, /* field[21] = concurrent */ 18, /* field[18] = deferrable */ 8, /* field[8] = exclude_op_names */ 9, /* field[9] = idxcomment */ 0, /* field[0] = idxname */ 22, /* field[22] = if_not_exists */ 5, /* field[5] = index_including_params */ 10, /* field[10] = index_oid */ 4, /* field[4] = index_params */ 19, /* field[19] = initdeferred */ 17, /* field[17] = isconstraint */ 15, /* field[15] = nulls_not_distinct */ 12, /* field[12] = old_create_subid */ 13, /* field[13] = old_first_relfilelocator_subid */ 11, /* field[11] = old_number */ 6, /* field[6] = options */ 16, /* field[16] = primary */ 1, /* field[1] = relation */ 23, /* field[23] = reset_default_tblspc */ 3, /* field[3] = table_space */ 20, /* field[20] = transformed */ 14, /* field[14] = unique */ 7, /* field[7] = where_clause */ }; static const ProtobufCIntRange pg_query__index_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 24 } }; const ProtobufCMessageDescriptor pg_query__index_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.IndexStmt", "IndexStmt", "PgQuery__IndexStmt", "pg_query", sizeof(PgQuery__IndexStmt), 24, 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_stats_stmt__field_descriptors[7] = { { "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 */ }, { "transformed", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStatsStmt, transformed), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 7, 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 */ 6, /* field[6] = if_not_exists */ 3, /* field[3] = relations */ 1, /* field[1] = stat_types */ 4, /* field[4] = stxcomment */ 5, /* field[5] = transformed */ }; static const ProtobufCIntRange pg_query__create_stats_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__create_stats_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateStatsStmt", "CreateStatsStmt", "PgQuery__CreateStatsStmt", "pg_query", sizeof(PgQuery__CreateStatsStmt), 7, 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__stats_elem__field_descriptors[2] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__StatsElem, 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__StatsElem, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__stats_elem__field_indices_by_name[] = { 1, /* field[1] = expr */ 0, /* field[0] = name */ }; static const ProtobufCIntRange pg_query__stats_elem__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__stats_elem__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.StatsElem", "StatsElem", "PgQuery__StatsElem", "pg_query", sizeof(PgQuery__StatsElem), 2, pg_query__stats_elem__field_descriptors, pg_query__stats_elem__field_indices_by_name, 1, pg_query__stats_elem__number_ranges, (ProtobufCMessageInit) pg_query__stats_elem__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_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterStatsStmt, stxstattarget), &pg_query__node__descriptor, 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__create_function_stmt__field_descriptors[7] = { { "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 */ }, { "sql_body", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateFunctionStmt, sql_body), &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 */ 6, /* field[6] = sql_body */ }; static const ProtobufCIntRange pg_query__create_function_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__create_function_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateFunctionStmt", "CreateFunctionStmt", "PgQuery__CreateFunctionStmt", "pg_query", sizeof(PgQuery__CreateFunctionStmt), 7, 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__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__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__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_stmt__field_descriptors[3] = { { "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 */ }, { "outargs", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CallStmt, n_outargs), offsetof(PgQuery__CallStmt, outargs), &pg_query__node__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 */ 2, /* field[2] = outargs */ }; static const ProtobufCIntRange pg_query__call_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__call_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CallStmt", "CallStmt", "PgQuery__CallStmt", "pg_query", sizeof(PgQuery__CallStmt), 3, 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__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__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__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__string__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__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[6] = { { "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 */ }, { "location", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TransactionStmt, location), 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 */ 5, /* field[5] = location */ 1, /* field[1] = options */ 2, /* field[2] = savepoint_name */ }; static const ProtobufCIntRange pg_query__transaction_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__transaction_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TransactionStmt", "TransactionStmt", "PgQuery__TransactionStmt", "pg_query", sizeof(PgQuery__TransactionStmt), 6, 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__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__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__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__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_refresh_coll_stmt__field_descriptors[1] = { { "dbname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDatabaseRefreshCollStmt, dbname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_database_refresh_coll_stmt__field_indices_by_name[] = { 0, /* field[0] = dbname */ }; static const ProtobufCIntRange pg_query__alter_database_refresh_coll_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__alter_database_refresh_coll_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterDatabaseRefreshCollStmt", "AlterDatabaseRefreshCollStmt", "PgQuery__AlterDatabaseRefreshCollStmt", "pg_query", sizeof(PgQuery__AlterDatabaseRefreshCollStmt), 1, pg_query__alter_database_refresh_coll_stmt__field_descriptors, pg_query__alter_database_refresh_coll_stmt__field_indices_by_name, 1, pg_query__alter_database_refresh_coll_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_database_refresh_coll_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__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__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__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 */ }, { "params", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ClusterStmt, n_params), offsetof(PgQuery__ClusterStmt, params), &pg_query__node__descriptor, 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] = params */ 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__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__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__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 */ }, { "objtype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTableAsStmt, objtype), &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 */ 2, /* field[2] = objtype */ 0, /* field[0] = query */ }; 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__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] */ }; #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__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__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[4] = { { "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 */ }, { "params", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ReindexStmt, n_params), offsetof(PgQuery__ReindexStmt, params), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__reindex_stmt__field_indices_by_name[] = { 0, /* field[0] = kind */ 2, /* field[2] = name */ 3, /* field[3] = params */ 1, /* field[1] = relation */ }; static const ProtobufCIntRange pg_query__reindex_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__reindex_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ReindexStmt", "ReindexStmt", "PgQuery__ReindexStmt", "pg_query", sizeof(PgQuery__ReindexStmt), 4, 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] */ }; 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_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__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[3] = { { "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 */ }, { "isall", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DeallocateStmt, isall), 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__DeallocateStmt, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__deallocate_stmt__field_indices_by_name[] = { 1, /* field[1] = isall */ 2, /* field[2] = location */ 0, /* field[0] = name */ }; static const ProtobufCIntRange pg_query__deallocate_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__deallocate_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DeallocateStmt", "DeallocateStmt", "PgQuery__DeallocateStmt", "pg_query", sizeof(PgQuery__DeallocateStmt), 3, 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__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__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__publication_table__field_descriptors[3] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__PublicationTable, relation), &pg_query__range_var__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__PublicationTable, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "columns", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PublicationTable, n_columns), offsetof(PgQuery__PublicationTable, columns), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__publication_table__field_indices_by_name[] = { 2, /* field[2] = columns */ 0, /* field[0] = relation */ 1, /* field[1] = where_clause */ }; static const ProtobufCIntRange pg_query__publication_table__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__publication_table__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PublicationTable", "PublicationTable", "PgQuery__PublicationTable", "pg_query", sizeof(PgQuery__PublicationTable), 3, pg_query__publication_table__field_descriptors, pg_query__publication_table__field_indices_by_name, 1, pg_query__publication_table__number_ranges, (ProtobufCMessageInit) pg_query__publication_table__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__publication_obj_spec__field_descriptors[4] = { { "pubobjtype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__PublicationObjSpec, pubobjtype), &pg_query__publication_obj_spec_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__PublicationObjSpec, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "pubtable", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__PublicationObjSpec, pubtable), &pg_query__publication_table__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__PublicationObjSpec, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__publication_obj_spec__field_indices_by_name[] = { 3, /* field[3] = location */ 1, /* field[1] = name */ 0, /* field[0] = pubobjtype */ 2, /* field[2] = pubtable */ }; static const ProtobufCIntRange pg_query__publication_obj_spec__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__publication_obj_spec__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PublicationObjSpec", "PublicationObjSpec", "PgQuery__PublicationObjSpec", "pg_query", sizeof(PgQuery__PublicationObjSpec), 4, pg_query__publication_obj_spec__field_descriptors, pg_query__publication_obj_spec__field_indices_by_name, 1, pg_query__publication_obj_spec__number_ranges, (ProtobufCMessageInit) pg_query__publication_obj_spec__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 */ }, { "pubobjects", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreatePublicationStmt, n_pubobjects), offsetof(PgQuery__CreatePublicationStmt, pubobjects), &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] = pubobjects */ }; 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 */ }, { "pubobjects", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterPublicationStmt, n_pubobjects), offsetof(PgQuery__AlterPublicationStmt, pubobjects), &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 */ }, { "action", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterPublicationStmt, action), &pg_query__alter_publication_action__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_publication_stmt__field_indices_by_name[] = { 4, /* field[4] = action */ 3, /* field[3] = for_all_tables */ 1, /* field[1] = options */ 0, /* field[0] = pubname */ 2, /* field[2] = pubobjects */ }; 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__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__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__set_quantifier__enum_values_by_number[4] = { { "SET_QUANTIFIER_UNDEFINED", "PG_QUERY__SET_QUANTIFIER__SET_QUANTIFIER_UNDEFINED", 0 }, { "SET_QUANTIFIER_DEFAULT", "PG_QUERY__SET_QUANTIFIER__SET_QUANTIFIER_DEFAULT", 1 }, { "SET_QUANTIFIER_ALL", "PG_QUERY__SET_QUANTIFIER__SET_QUANTIFIER_ALL", 2 }, { "SET_QUANTIFIER_DISTINCT", "PG_QUERY__SET_QUANTIFIER__SET_QUANTIFIER_DISTINCT", 3 }, }; static const ProtobufCIntRange pg_query__set_quantifier__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__set_quantifier__enum_values_by_name[4] = { { "SET_QUANTIFIER_ALL", 2 }, { "SET_QUANTIFIER_DEFAULT", 1 }, { "SET_QUANTIFIER_DISTINCT", 3 }, { "SET_QUANTIFIER_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__set_quantifier__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.SetQuantifier", "SetQuantifier", "PgQuery__SetQuantifier", "pg_query", 4, pg_query__set_quantifier__enum_values_by_number, 4, pg_query__set_quantifier__enum_values_by_name, 1, pg_query__set_quantifier__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__a__expr__kind__enum_values_by_number[15] = { { "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_IN", "PG_QUERY__A__EXPR__KIND__AEXPR_IN", 7 }, { "AEXPR_LIKE", "PG_QUERY__A__EXPR__KIND__AEXPR_LIKE", 8 }, { "AEXPR_ILIKE", "PG_QUERY__A__EXPR__KIND__AEXPR_ILIKE", 9 }, { "AEXPR_SIMILAR", "PG_QUERY__A__EXPR__KIND__AEXPR_SIMILAR", 10 }, { "AEXPR_BETWEEN", "PG_QUERY__A__EXPR__KIND__AEXPR_BETWEEN", 11 }, { "AEXPR_NOT_BETWEEN", "PG_QUERY__A__EXPR__KIND__AEXPR_NOT_BETWEEN", 12 }, { "AEXPR_BETWEEN_SYM", "PG_QUERY__A__EXPR__KIND__AEXPR_BETWEEN_SYM", 13 }, { "AEXPR_NOT_BETWEEN_SYM", "PG_QUERY__A__EXPR__KIND__AEXPR_NOT_BETWEEN_SYM", 14 }, }; static const ProtobufCIntRange pg_query__a__expr__kind__value_ranges[] = { {0, 0},{0, 15} }; static const ProtobufCEnumValueIndex pg_query__a__expr__kind__enum_values_by_name[15] = { { "AEXPR_BETWEEN", 11 }, { "AEXPR_BETWEEN_SYM", 13 }, { "AEXPR_DISTINCT", 4 }, { "AEXPR_ILIKE", 9 }, { "AEXPR_IN", 7 }, { "AEXPR_LIKE", 8 }, { "AEXPR_NOT_BETWEEN", 12 }, { "AEXPR_NOT_BETWEEN_SYM", 14 }, { "AEXPR_NOT_DISTINCT", 5 }, { "AEXPR_NULLIF", 6 }, { "AEXPR_OP", 1 }, { "AEXPR_OP_ALL", 3 }, { "AEXPR_OP_ANY", 2 }, { "AEXPR_SIMILAR", 10 }, { "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", 15, pg_query__a__expr__kind__enum_values_by_number, 15, 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[6] = { { "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_ROLE", "PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_CURRENT_ROLE", 2 }, { "ROLESPEC_CURRENT_USER", "PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_CURRENT_USER", 3 }, { "ROLESPEC_SESSION_USER", "PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_SESSION_USER", 4 }, { "ROLESPEC_PUBLIC", "PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_PUBLIC", 5 }, }; static const ProtobufCIntRange pg_query__role_spec_type__value_ranges[] = { {0, 0},{0, 6} }; static const ProtobufCEnumValueIndex pg_query__role_spec_type__enum_values_by_name[6] = { { "ROLESPEC_CSTRING", 1 }, { "ROLESPEC_CURRENT_ROLE", 2 }, { "ROLESPEC_CURRENT_USER", 3 }, { "ROLESPEC_PUBLIC", 5 }, { "ROLESPEC_SESSION_USER", 4 }, { "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", 6, pg_query__role_spec_type__enum_values_by_number, 6, 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[11] = { { "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_COMPRESSION", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_COMPRESSION", 2 }, { "CREATE_TABLE_LIKE_CONSTRAINTS", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_CONSTRAINTS", 3 }, { "CREATE_TABLE_LIKE_DEFAULTS", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_DEFAULTS", 4 }, { "CREATE_TABLE_LIKE_GENERATED", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_GENERATED", 5 }, { "CREATE_TABLE_LIKE_IDENTITY", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_IDENTITY", 6 }, { "CREATE_TABLE_LIKE_INDEXES", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_INDEXES", 7 }, { "CREATE_TABLE_LIKE_STATISTICS", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_STATISTICS", 8 }, { "CREATE_TABLE_LIKE_STORAGE", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_STORAGE", 9 }, { "CREATE_TABLE_LIKE_ALL", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_ALL", 10 }, }; static const ProtobufCIntRange pg_query__table_like_option__value_ranges[] = { {0, 0},{0, 11} }; static const ProtobufCEnumValueIndex pg_query__table_like_option__enum_values_by_name[11] = { { "CREATE_TABLE_LIKE_ALL", 10 }, { "CREATE_TABLE_LIKE_COMMENTS", 1 }, { "CREATE_TABLE_LIKE_COMPRESSION", 2 }, { "CREATE_TABLE_LIKE_CONSTRAINTS", 3 }, { "CREATE_TABLE_LIKE_DEFAULTS", 4 }, { "CREATE_TABLE_LIKE_GENERATED", 5 }, { "CREATE_TABLE_LIKE_IDENTITY", 6 }, { "CREATE_TABLE_LIKE_INDEXES", 7 }, { "CREATE_TABLE_LIKE_STATISTICS", 8 }, { "CREATE_TABLE_LIKE_STORAGE", 9 }, { "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", 11, pg_query__table_like_option__enum_values_by_number, 11, 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_strategy__enum_values_by_number[4] = { { "PARTITION_STRATEGY_UNDEFINED", "PG_QUERY__PARTITION_STRATEGY__PARTITION_STRATEGY_UNDEFINED", 0 }, { "PARTITION_STRATEGY_LIST", "PG_QUERY__PARTITION_STRATEGY__PARTITION_STRATEGY_LIST", 1 }, { "PARTITION_STRATEGY_RANGE", "PG_QUERY__PARTITION_STRATEGY__PARTITION_STRATEGY_RANGE", 2 }, { "PARTITION_STRATEGY_HASH", "PG_QUERY__PARTITION_STRATEGY__PARTITION_STRATEGY_HASH", 3 }, }; static const ProtobufCIntRange pg_query__partition_strategy__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__partition_strategy__enum_values_by_name[4] = { { "PARTITION_STRATEGY_HASH", 3 }, { "PARTITION_STRATEGY_LIST", 1 }, { "PARTITION_STRATEGY_RANGE", 2 }, { "PARTITION_STRATEGY_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__partition_strategy__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.PartitionStrategy", "PartitionStrategy", "PgQuery__PartitionStrategy", "pg_query", 4, pg_query__partition_strategy__enum_values_by_number, 4, pg_query__partition_strategy__enum_values_by_name, 1, pg_query__partition_strategy__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[7] = { { "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 }, { "WCO_RLS_MERGE_UPDATE_CHECK", "PG_QUERY__WCOKIND__WCO_RLS_MERGE_UPDATE_CHECK", 5 }, { "WCO_RLS_MERGE_DELETE_CHECK", "PG_QUERY__WCOKIND__WCO_RLS_MERGE_DELETE_CHECK", 6 }, }; static const ProtobufCIntRange pg_query__wcokind__value_ranges[] = { {0, 0},{0, 7} }; static const ProtobufCEnumValueIndex pg_query__wcokind__enum_values_by_name[7] = { { "WCOKIND_UNDEFINED", 0 }, { "WCO_RLS_CONFLICT_CHECK", 4 }, { "WCO_RLS_INSERT_CHECK", 2 }, { "WCO_RLS_MERGE_DELETE_CHECK", 6 }, { "WCO_RLS_MERGE_UPDATE_CHECK", 5 }, { "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", 7, pg_query__wcokind__enum_values_by_number, 7, 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__json_quotes__enum_values_by_number[4] = { { "JSON_QUOTES_UNDEFINED", "PG_QUERY__JSON_QUOTES__JSON_QUOTES_UNDEFINED", 0 }, { "JS_QUOTES_UNSPEC", "PG_QUERY__JSON_QUOTES__JS_QUOTES_UNSPEC", 1 }, { "JS_QUOTES_KEEP", "PG_QUERY__JSON_QUOTES__JS_QUOTES_KEEP", 2 }, { "JS_QUOTES_OMIT", "PG_QUERY__JSON_QUOTES__JS_QUOTES_OMIT", 3 }, }; static const ProtobufCIntRange pg_query__json_quotes__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__json_quotes__enum_values_by_name[4] = { { "JSON_QUOTES_UNDEFINED", 0 }, { "JS_QUOTES_KEEP", 2 }, { "JS_QUOTES_OMIT", 3 }, { "JS_QUOTES_UNSPEC", 1 }, }; const ProtobufCEnumDescriptor pg_query__json_quotes__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.JsonQuotes", "JsonQuotes", "PgQuery__JsonQuotes", "pg_query", 4, pg_query__json_quotes__enum_values_by_number, 4, pg_query__json_quotes__enum_values_by_name, 1, pg_query__json_quotes__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__json_table_column_type__enum_values_by_number[6] = { { "JSON_TABLE_COLUMN_TYPE_UNDEFINED", "PG_QUERY__JSON_TABLE_COLUMN_TYPE__JSON_TABLE_COLUMN_TYPE_UNDEFINED", 0 }, { "JTC_FOR_ORDINALITY", "PG_QUERY__JSON_TABLE_COLUMN_TYPE__JTC_FOR_ORDINALITY", 1 }, { "JTC_REGULAR", "PG_QUERY__JSON_TABLE_COLUMN_TYPE__JTC_REGULAR", 2 }, { "JTC_EXISTS", "PG_QUERY__JSON_TABLE_COLUMN_TYPE__JTC_EXISTS", 3 }, { "JTC_FORMATTED", "PG_QUERY__JSON_TABLE_COLUMN_TYPE__JTC_FORMATTED", 4 }, { "JTC_NESTED", "PG_QUERY__JSON_TABLE_COLUMN_TYPE__JTC_NESTED", 5 }, }; static const ProtobufCIntRange pg_query__json_table_column_type__value_ranges[] = { {0, 0},{0, 6} }; static const ProtobufCEnumValueIndex pg_query__json_table_column_type__enum_values_by_name[6] = { { "JSON_TABLE_COLUMN_TYPE_UNDEFINED", 0 }, { "JTC_EXISTS", 3 }, { "JTC_FORMATTED", 4 }, { "JTC_FOR_ORDINALITY", 1 }, { "JTC_NESTED", 5 }, { "JTC_REGULAR", 2 }, }; const ProtobufCEnumDescriptor pg_query__json_table_column_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.JsonTableColumnType", "JsonTableColumnType", "PgQuery__JsonTableColumnType", "pg_query", 6, pg_query__json_table_column_type__enum_values_by_number, 6, pg_query__json_table_column_type__enum_values_by_name, 1, pg_query__json_table_column_type__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[53] = { { "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_PARAMETER_ACL", "PG_QUERY__OBJECT_TYPE__OBJECT_PARAMETER_ACL", 28 }, { "OBJECT_POLICY", "PG_QUERY__OBJECT_TYPE__OBJECT_POLICY", 29 }, { "OBJECT_PROCEDURE", "PG_QUERY__OBJECT_TYPE__OBJECT_PROCEDURE", 30 }, { "OBJECT_PUBLICATION", "PG_QUERY__OBJECT_TYPE__OBJECT_PUBLICATION", 31 }, { "OBJECT_PUBLICATION_NAMESPACE", "PG_QUERY__OBJECT_TYPE__OBJECT_PUBLICATION_NAMESPACE", 32 }, { "OBJECT_PUBLICATION_REL", "PG_QUERY__OBJECT_TYPE__OBJECT_PUBLICATION_REL", 33 }, { "OBJECT_ROLE", "PG_QUERY__OBJECT_TYPE__OBJECT_ROLE", 34 }, { "OBJECT_ROUTINE", "PG_QUERY__OBJECT_TYPE__OBJECT_ROUTINE", 35 }, { "OBJECT_RULE", "PG_QUERY__OBJECT_TYPE__OBJECT_RULE", 36 }, { "OBJECT_SCHEMA", "PG_QUERY__OBJECT_TYPE__OBJECT_SCHEMA", 37 }, { "OBJECT_SEQUENCE", "PG_QUERY__OBJECT_TYPE__OBJECT_SEQUENCE", 38 }, { "OBJECT_SUBSCRIPTION", "PG_QUERY__OBJECT_TYPE__OBJECT_SUBSCRIPTION", 39 }, { "OBJECT_STATISTIC_EXT", "PG_QUERY__OBJECT_TYPE__OBJECT_STATISTIC_EXT", 40 }, { "OBJECT_TABCONSTRAINT", "PG_QUERY__OBJECT_TYPE__OBJECT_TABCONSTRAINT", 41 }, { "OBJECT_TABLE", "PG_QUERY__OBJECT_TYPE__OBJECT_TABLE", 42 }, { "OBJECT_TABLESPACE", "PG_QUERY__OBJECT_TYPE__OBJECT_TABLESPACE", 43 }, { "OBJECT_TRANSFORM", "PG_QUERY__OBJECT_TYPE__OBJECT_TRANSFORM", 44 }, { "OBJECT_TRIGGER", "PG_QUERY__OBJECT_TYPE__OBJECT_TRIGGER", 45 }, { "OBJECT_TSCONFIGURATION", "PG_QUERY__OBJECT_TYPE__OBJECT_TSCONFIGURATION", 46 }, { "OBJECT_TSDICTIONARY", "PG_QUERY__OBJECT_TYPE__OBJECT_TSDICTIONARY", 47 }, { "OBJECT_TSPARSER", "PG_QUERY__OBJECT_TYPE__OBJECT_TSPARSER", 48 }, { "OBJECT_TSTEMPLATE", "PG_QUERY__OBJECT_TYPE__OBJECT_TSTEMPLATE", 49 }, { "OBJECT_TYPE", "PG_QUERY__OBJECT_TYPE__OBJECT_TYPE", 50 }, { "OBJECT_USER_MAPPING", "PG_QUERY__OBJECT_TYPE__OBJECT_USER_MAPPING", 51 }, { "OBJECT_VIEW", "PG_QUERY__OBJECT_TYPE__OBJECT_VIEW", 52 }, }; static const ProtobufCIntRange pg_query__object_type__value_ranges[] = { {0, 0},{0, 53} }; static const ProtobufCEnumValueIndex pg_query__object_type__enum_values_by_name[53] = { { "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_PARAMETER_ACL", 28 }, { "OBJECT_POLICY", 29 }, { "OBJECT_PROCEDURE", 30 }, { "OBJECT_PUBLICATION", 31 }, { "OBJECT_PUBLICATION_NAMESPACE", 32 }, { "OBJECT_PUBLICATION_REL", 33 }, { "OBJECT_ROLE", 34 }, { "OBJECT_ROUTINE", 35 }, { "OBJECT_RULE", 36 }, { "OBJECT_SCHEMA", 37 }, { "OBJECT_SEQUENCE", 38 }, { "OBJECT_STATISTIC_EXT", 40 }, { "OBJECT_SUBSCRIPTION", 39 }, { "OBJECT_TABCONSTRAINT", 41 }, { "OBJECT_TABLE", 42 }, { "OBJECT_TABLESPACE", 43 }, { "OBJECT_TRANSFORM", 44 }, { "OBJECT_TRIGGER", 45 }, { "OBJECT_TSCONFIGURATION", 46 }, { "OBJECT_TSDICTIONARY", 47 }, { "OBJECT_TSPARSER", 48 }, { "OBJECT_TSTEMPLATE", 49 }, { "OBJECT_TYPE", 50 }, { "OBJECT_TYPE_UNDEFINED", 0 }, { "OBJECT_USER_MAPPING", 51 }, { "OBJECT_VIEW", 52 }, }; const ProtobufCEnumDescriptor pg_query__object_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.ObjectType", "ObjectType", "PgQuery__ObjectType", "pg_query", 53, pg_query__object_type__enum_values_by_number, 53, 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_AddColumnToView", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumnToView", 2 }, { "AT_ColumnDefault", "PG_QUERY__ALTER_TABLE_TYPE__AT_ColumnDefault", 3 }, { "AT_CookedColumnDefault", "PG_QUERY__ALTER_TABLE_TYPE__AT_CookedColumnDefault", 4 }, { "AT_DropNotNull", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropNotNull", 5 }, { "AT_SetNotNull", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetNotNull", 6 }, { "AT_SetExpression", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetExpression", 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_SetCompression", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetCompression", 14 }, { "AT_DropColumn", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropColumn", 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_ReAddConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddConstraint", 19 }, { "AT_ReAddDomainConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddDomainConstraint", 20 }, { "AT_AlterConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_AlterConstraint", 21 }, { "AT_ValidateConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_ValidateConstraint", 22 }, { "AT_AddIndexConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddIndexConstraint", 23 }, { "AT_DropConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropConstraint", 24 }, { "AT_ReAddComment", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddComment", 25 }, { "AT_AlterColumnType", "PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnType", 26 }, { "AT_AlterColumnGenericOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnGenericOptions", 27 }, { "AT_ChangeOwner", "PG_QUERY__ALTER_TABLE_TYPE__AT_ChangeOwner", 28 }, { "AT_ClusterOn", "PG_QUERY__ALTER_TABLE_TYPE__AT_ClusterOn", 29 }, { "AT_DropCluster", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropCluster", 30 }, { "AT_SetLogged", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetLogged", 31 }, { "AT_SetUnLogged", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetUnLogged", 32 }, { "AT_DropOids", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropOids", 33 }, { "AT_SetAccessMethod", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetAccessMethod", 34 }, { "AT_SetTableSpace", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetTableSpace", 35 }, { "AT_SetRelOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetRelOptions", 36 }, { "AT_ResetRelOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_ResetRelOptions", 37 }, { "AT_ReplaceRelOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReplaceRelOptions", 38 }, { "AT_EnableTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrig", 39 }, { "AT_EnableAlwaysTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysTrig", 40 }, { "AT_EnableReplicaTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaTrig", 41 }, { "AT_DisableTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrig", 42 }, { "AT_EnableTrigAll", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigAll", 43 }, { "AT_DisableTrigAll", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigAll", 44 }, { "AT_EnableTrigUser", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigUser", 45 }, { "AT_DisableTrigUser", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigUser", 46 }, { "AT_EnableRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRule", 47 }, { "AT_EnableAlwaysRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysRule", 48 }, { "AT_EnableReplicaRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaRule", 49 }, { "AT_DisableRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRule", 50 }, { "AT_AddInherit", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddInherit", 51 }, { "AT_DropInherit", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropInherit", 52 }, { "AT_AddOf", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddOf", 53 }, { "AT_DropOf", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropOf", 54 }, { "AT_ReplicaIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReplicaIdentity", 55 }, { "AT_EnableRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRowSecurity", 56 }, { "AT_DisableRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRowSecurity", 57 }, { "AT_ForceRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_ForceRowSecurity", 58 }, { "AT_NoForceRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_NoForceRowSecurity", 59 }, { "AT_GenericOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_GenericOptions", 60 }, { "AT_AttachPartition", "PG_QUERY__ALTER_TABLE_TYPE__AT_AttachPartition", 61 }, { "AT_DetachPartition", "PG_QUERY__ALTER_TABLE_TYPE__AT_DetachPartition", 62 }, { "AT_DetachPartitionFinalize", "PG_QUERY__ALTER_TABLE_TYPE__AT_DetachPartitionFinalize", 63 }, { "AT_AddIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddIdentity", 64 }, { "AT_SetIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetIdentity", 65 }, { "AT_DropIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropIdentity", 66 }, { "AT_ReAddStatistics", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddStatistics", 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_AddColumnToView", 2 }, { "AT_AddConstraint", 18 }, { "AT_AddIdentity", 64 }, { "AT_AddIndex", 16 }, { "AT_AddIndexConstraint", 23 }, { "AT_AddInherit", 51 }, { "AT_AddOf", 53 }, { "AT_AlterColumnGenericOptions", 27 }, { "AT_AlterColumnType", 26 }, { "AT_AlterConstraint", 21 }, { "AT_AttachPartition", 61 }, { "AT_ChangeOwner", 28 }, { "AT_CheckNotNull", 9 }, { "AT_ClusterOn", 29 }, { "AT_ColumnDefault", 3 }, { "AT_CookedColumnDefault", 4 }, { "AT_DetachPartition", 62 }, { "AT_DetachPartitionFinalize", 63 }, { "AT_DisableRowSecurity", 57 }, { "AT_DisableRule", 50 }, { "AT_DisableTrig", 42 }, { "AT_DisableTrigAll", 44 }, { "AT_DisableTrigUser", 46 }, { "AT_DropCluster", 30 }, { "AT_DropColumn", 15 }, { "AT_DropConstraint", 24 }, { "AT_DropExpression", 8 }, { "AT_DropIdentity", 66 }, { "AT_DropInherit", 52 }, { "AT_DropNotNull", 5 }, { "AT_DropOf", 54 }, { "AT_DropOids", 33 }, { "AT_EnableAlwaysRule", 48 }, { "AT_EnableAlwaysTrig", 40 }, { "AT_EnableReplicaRule", 49 }, { "AT_EnableReplicaTrig", 41 }, { "AT_EnableRowSecurity", 56 }, { "AT_EnableRule", 47 }, { "AT_EnableTrig", 39 }, { "AT_EnableTrigAll", 43 }, { "AT_EnableTrigUser", 45 }, { "AT_ForceRowSecurity", 58 }, { "AT_GenericOptions", 60 }, { "AT_NoForceRowSecurity", 59 }, { "AT_ReAddComment", 25 }, { "AT_ReAddConstraint", 19 }, { "AT_ReAddDomainConstraint", 20 }, { "AT_ReAddIndex", 17 }, { "AT_ReAddStatistics", 67 }, { "AT_ReplaceRelOptions", 38 }, { "AT_ReplicaIdentity", 55 }, { "AT_ResetOptions", 12 }, { "AT_ResetRelOptions", 37 }, { "AT_SetAccessMethod", 34 }, { "AT_SetCompression", 14 }, { "AT_SetExpression", 7 }, { "AT_SetIdentity", 65 }, { "AT_SetLogged", 31 }, { "AT_SetNotNull", 6 }, { "AT_SetOptions", 11 }, { "AT_SetRelOptions", 36 }, { "AT_SetStatistics", 10 }, { "AT_SetStorage", 13 }, { "AT_SetTableSpace", 35 }, { "AT_SetUnLogged", 32 }, { "AT_ValidateConstraint", 22 }, }; 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[7] = { { "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 }, { "FUNC_PARAM_DEFAULT", "PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_DEFAULT", 6 }, }; static const ProtobufCIntRange pg_query__function_parameter_mode__value_ranges[] = { {0, 0},{0, 7} }; static const ProtobufCEnumValueIndex pg_query__function_parameter_mode__enum_values_by_name[7] = { { "FUNCTION_PARAMETER_MODE_UNDEFINED", 0 }, { "FUNC_PARAM_DEFAULT", 6 }, { "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", 7, pg_query__function_parameter_mode__enum_values_by_number, 7, 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__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__publication_obj_spec_type__enum_values_by_number[5] = { { "PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED", "PG_QUERY__PUBLICATION_OBJ_SPEC_TYPE__PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED", 0 }, { "PUBLICATIONOBJ_TABLE", "PG_QUERY__PUBLICATION_OBJ_SPEC_TYPE__PUBLICATIONOBJ_TABLE", 1 }, { "PUBLICATIONOBJ_TABLES_IN_SCHEMA", "PG_QUERY__PUBLICATION_OBJ_SPEC_TYPE__PUBLICATIONOBJ_TABLES_IN_SCHEMA", 2 }, { "PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA", "PG_QUERY__PUBLICATION_OBJ_SPEC_TYPE__PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA", 3 }, { "PUBLICATIONOBJ_CONTINUATION", "PG_QUERY__PUBLICATION_OBJ_SPEC_TYPE__PUBLICATIONOBJ_CONTINUATION", 4 }, }; static const ProtobufCIntRange pg_query__publication_obj_spec_type__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__publication_obj_spec_type__enum_values_by_name[5] = { { "PUBLICATIONOBJ_CONTINUATION", 4 }, { "PUBLICATIONOBJ_TABLE", 1 }, { "PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA", 3 }, { "PUBLICATIONOBJ_TABLES_IN_SCHEMA", 2 }, { "PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__publication_obj_spec_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.PublicationObjSpecType", "PublicationObjSpecType", "PgQuery__PublicationObjSpecType", "pg_query", 5, pg_query__publication_obj_spec_type__enum_values_by_number, 5, pg_query__publication_obj_spec_type__enum_values_by_name, 1, pg_query__publication_obj_spec_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__alter_publication_action__enum_values_by_number[4] = { { "ALTER_PUBLICATION_ACTION_UNDEFINED", "PG_QUERY__ALTER_PUBLICATION_ACTION__ALTER_PUBLICATION_ACTION_UNDEFINED", 0 }, { "AP_AddObjects", "PG_QUERY__ALTER_PUBLICATION_ACTION__AP_AddObjects", 1 }, { "AP_DropObjects", "PG_QUERY__ALTER_PUBLICATION_ACTION__AP_DropObjects", 2 }, { "AP_SetObjects", "PG_QUERY__ALTER_PUBLICATION_ACTION__AP_SetObjects", 3 }, }; static const ProtobufCIntRange pg_query__alter_publication_action__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__alter_publication_action__enum_values_by_name[4] = { { "ALTER_PUBLICATION_ACTION_UNDEFINED", 0 }, { "AP_AddObjects", 1 }, { "AP_DropObjects", 2 }, { "AP_SetObjects", 3 }, }; const ProtobufCEnumDescriptor pg_query__alter_publication_action__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.AlterPublicationAction", "AlterPublicationAction", "PgQuery__AlterPublicationAction", "pg_query", 4, pg_query__alter_publication_action__enum_values_by_number, 4, pg_query__alter_publication_action__enum_values_by_name, 1, pg_query__alter_publication_action__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__alter_subscription_type__enum_values_by_number[9] = { { "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_SET_PUBLICATION", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_SET_PUBLICATION", 3 }, { "ALTER_SUBSCRIPTION_ADD_PUBLICATION", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_ADD_PUBLICATION", 4 }, { "ALTER_SUBSCRIPTION_DROP_PUBLICATION", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_DROP_PUBLICATION", 5 }, { "ALTER_SUBSCRIPTION_REFRESH", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_REFRESH", 6 }, { "ALTER_SUBSCRIPTION_ENABLED", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_ENABLED", 7 }, { "ALTER_SUBSCRIPTION_SKIP", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_SKIP", 8 }, }; static const ProtobufCIntRange pg_query__alter_subscription_type__value_ranges[] = { {0, 0},{0, 9} }; static const ProtobufCEnumValueIndex pg_query__alter_subscription_type__enum_values_by_name[9] = { { "ALTER_SUBSCRIPTION_ADD_PUBLICATION", 4 }, { "ALTER_SUBSCRIPTION_CONNECTION", 2 }, { "ALTER_SUBSCRIPTION_DROP_PUBLICATION", 5 }, { "ALTER_SUBSCRIPTION_ENABLED", 7 }, { "ALTER_SUBSCRIPTION_OPTIONS", 1 }, { "ALTER_SUBSCRIPTION_REFRESH", 6 }, { "ALTER_SUBSCRIPTION_SET_PUBLICATION", 3 }, { "ALTER_SUBSCRIPTION_SKIP", 8 }, { "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", 9, pg_query__alter_subscription_type__enum_values_by_number, 9, 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__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__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__table_func_type__enum_values_by_number[3] = { { "TABLE_FUNC_TYPE_UNDEFINED", "PG_QUERY__TABLE_FUNC_TYPE__TABLE_FUNC_TYPE_UNDEFINED", 0 }, { "TFT_XMLTABLE", "PG_QUERY__TABLE_FUNC_TYPE__TFT_XMLTABLE", 1 }, { "TFT_JSON_TABLE", "PG_QUERY__TABLE_FUNC_TYPE__TFT_JSON_TABLE", 2 }, }; static const ProtobufCIntRange pg_query__table_func_type__value_ranges[] = { {0, 0},{0, 3} }; static const ProtobufCEnumValueIndex pg_query__table_func_type__enum_values_by_name[3] = { { "TABLE_FUNC_TYPE_UNDEFINED", 0 }, { "TFT_JSON_TABLE", 2 }, { "TFT_XMLTABLE", 1 }, }; const ProtobufCEnumDescriptor pg_query__table_func_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.TableFuncType", "TableFuncType", "PgQuery__TableFuncType", "pg_query", 3, pg_query__table_func_type__enum_values_by_number, 3, pg_query__table_func_type__enum_values_by_name, 1, pg_query__table_func_type__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[5] = { { "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_PLPGSQL", "PG_QUERY__COERCION_CONTEXT__COERCION_PLPGSQL", 3 }, { "COERCION_EXPLICIT", "PG_QUERY__COERCION_CONTEXT__COERCION_EXPLICIT", 4 }, }; static const ProtobufCIntRange pg_query__coercion_context__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__coercion_context__enum_values_by_name[5] = { { "COERCION_ASSIGNMENT", 2 }, { "COERCION_CONTEXT_UNDEFINED", 0 }, { "COERCION_EXPLICIT", 4 }, { "COERCION_IMPLICIT", 1 }, { "COERCION_PLPGSQL", 3 }, }; const ProtobufCEnumDescriptor pg_query__coercion_context__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.CoercionContext", "CoercionContext", "PgQuery__CoercionContext", "pg_query", 5, pg_query__coercion_context__enum_values_by_number, 5, 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[5] = { { "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 }, { "COERCE_SQL_SYNTAX", "PG_QUERY__COERCION_FORM__COERCE_SQL_SYNTAX", 4 }, }; static const ProtobufCIntRange pg_query__coercion_form__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__coercion_form__enum_values_by_name[5] = { { "COERCE_EXPLICIT_CALL", 1 }, { "COERCE_EXPLICIT_CAST", 2 }, { "COERCE_IMPLICIT_CAST", 3 }, { "COERCE_SQL_SYNTAX", 4 }, { "COERCION_FORM_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__coercion_form__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.CoercionForm", "CoercionForm", "PgQuery__CoercionForm", "pg_query", 5, pg_query__coercion_form__enum_values_by_number, 5, 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__json_encoding__enum_values_by_number[5] = { { "JSON_ENCODING_UNDEFINED", "PG_QUERY__JSON_ENCODING__JSON_ENCODING_UNDEFINED", 0 }, { "JS_ENC_DEFAULT", "PG_QUERY__JSON_ENCODING__JS_ENC_DEFAULT", 1 }, { "JS_ENC_UTF8", "PG_QUERY__JSON_ENCODING__JS_ENC_UTF8", 2 }, { "JS_ENC_UTF16", "PG_QUERY__JSON_ENCODING__JS_ENC_UTF16", 3 }, { "JS_ENC_UTF32", "PG_QUERY__JSON_ENCODING__JS_ENC_UTF32", 4 }, }; static const ProtobufCIntRange pg_query__json_encoding__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__json_encoding__enum_values_by_name[5] = { { "JSON_ENCODING_UNDEFINED", 0 }, { "JS_ENC_DEFAULT", 1 }, { "JS_ENC_UTF16", 3 }, { "JS_ENC_UTF32", 4 }, { "JS_ENC_UTF8", 2 }, }; const ProtobufCEnumDescriptor pg_query__json_encoding__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.JsonEncoding", "JsonEncoding", "PgQuery__JsonEncoding", "pg_query", 5, pg_query__json_encoding__enum_values_by_number, 5, pg_query__json_encoding__enum_values_by_name, 1, pg_query__json_encoding__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__json_format_type__enum_values_by_number[4] = { { "JSON_FORMAT_TYPE_UNDEFINED", "PG_QUERY__JSON_FORMAT_TYPE__JSON_FORMAT_TYPE_UNDEFINED", 0 }, { "JS_FORMAT_DEFAULT", "PG_QUERY__JSON_FORMAT_TYPE__JS_FORMAT_DEFAULT", 1 }, { "JS_FORMAT_JSON", "PG_QUERY__JSON_FORMAT_TYPE__JS_FORMAT_JSON", 2 }, { "JS_FORMAT_JSONB", "PG_QUERY__JSON_FORMAT_TYPE__JS_FORMAT_JSONB", 3 }, }; static const ProtobufCIntRange pg_query__json_format_type__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__json_format_type__enum_values_by_name[4] = { { "JSON_FORMAT_TYPE_UNDEFINED", 0 }, { "JS_FORMAT_DEFAULT", 1 }, { "JS_FORMAT_JSON", 2 }, { "JS_FORMAT_JSONB", 3 }, }; const ProtobufCEnumDescriptor pg_query__json_format_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.JsonFormatType", "JsonFormatType", "PgQuery__JsonFormatType", "pg_query", 4, pg_query__json_format_type__enum_values_by_number, 4, pg_query__json_format_type__enum_values_by_name, 1, pg_query__json_format_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__json_constructor_type__enum_values_by_number[8] = { { "JSON_CONSTRUCTOR_TYPE_UNDEFINED", "PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSON_CONSTRUCTOR_TYPE_UNDEFINED", 0 }, { "JSCTOR_JSON_OBJECT", "PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSCTOR_JSON_OBJECT", 1 }, { "JSCTOR_JSON_ARRAY", "PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSCTOR_JSON_ARRAY", 2 }, { "JSCTOR_JSON_OBJECTAGG", "PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSCTOR_JSON_OBJECTAGG", 3 }, { "JSCTOR_JSON_ARRAYAGG", "PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSCTOR_JSON_ARRAYAGG", 4 }, { "JSCTOR_JSON_PARSE", "PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSCTOR_JSON_PARSE", 5 }, { "JSCTOR_JSON_SCALAR", "PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSCTOR_JSON_SCALAR", 6 }, { "JSCTOR_JSON_SERIALIZE", "PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSCTOR_JSON_SERIALIZE", 7 }, }; static const ProtobufCIntRange pg_query__json_constructor_type__value_ranges[] = { {0, 0},{0, 8} }; static const ProtobufCEnumValueIndex pg_query__json_constructor_type__enum_values_by_name[8] = { { "JSCTOR_JSON_ARRAY", 2 }, { "JSCTOR_JSON_ARRAYAGG", 4 }, { "JSCTOR_JSON_OBJECT", 1 }, { "JSCTOR_JSON_OBJECTAGG", 3 }, { "JSCTOR_JSON_PARSE", 5 }, { "JSCTOR_JSON_SCALAR", 6 }, { "JSCTOR_JSON_SERIALIZE", 7 }, { "JSON_CONSTRUCTOR_TYPE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__json_constructor_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.JsonConstructorType", "JsonConstructorType", "PgQuery__JsonConstructorType", "pg_query", 8, pg_query__json_constructor_type__enum_values_by_number, 8, pg_query__json_constructor_type__enum_values_by_name, 1, pg_query__json_constructor_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__json_value_type__enum_values_by_number[5] = { { "JSON_VALUE_TYPE_UNDEFINED", "PG_QUERY__JSON_VALUE_TYPE__JSON_VALUE_TYPE_UNDEFINED", 0 }, { "JS_TYPE_ANY", "PG_QUERY__JSON_VALUE_TYPE__JS_TYPE_ANY", 1 }, { "JS_TYPE_OBJECT", "PG_QUERY__JSON_VALUE_TYPE__JS_TYPE_OBJECT", 2 }, { "JS_TYPE_ARRAY", "PG_QUERY__JSON_VALUE_TYPE__JS_TYPE_ARRAY", 3 }, { "JS_TYPE_SCALAR", "PG_QUERY__JSON_VALUE_TYPE__JS_TYPE_SCALAR", 4 }, }; static const ProtobufCIntRange pg_query__json_value_type__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__json_value_type__enum_values_by_name[5] = { { "JSON_VALUE_TYPE_UNDEFINED", 0 }, { "JS_TYPE_ANY", 1 }, { "JS_TYPE_ARRAY", 3 }, { "JS_TYPE_OBJECT", 2 }, { "JS_TYPE_SCALAR", 4 }, }; const ProtobufCEnumDescriptor pg_query__json_value_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.JsonValueType", "JsonValueType", "PgQuery__JsonValueType", "pg_query", 5, pg_query__json_value_type__enum_values_by_number, 5, pg_query__json_value_type__enum_values_by_name, 1, pg_query__json_value_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__json_wrapper__enum_values_by_number[5] = { { "JSON_WRAPPER_UNDEFINED", "PG_QUERY__JSON_WRAPPER__JSON_WRAPPER_UNDEFINED", 0 }, { "JSW_UNSPEC", "PG_QUERY__JSON_WRAPPER__JSW_UNSPEC", 1 }, { "JSW_NONE", "PG_QUERY__JSON_WRAPPER__JSW_NONE", 2 }, { "JSW_CONDITIONAL", "PG_QUERY__JSON_WRAPPER__JSW_CONDITIONAL", 3 }, { "JSW_UNCONDITIONAL", "PG_QUERY__JSON_WRAPPER__JSW_UNCONDITIONAL", 4 }, }; static const ProtobufCIntRange pg_query__json_wrapper__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__json_wrapper__enum_values_by_name[5] = { { "JSON_WRAPPER_UNDEFINED", 0 }, { "JSW_CONDITIONAL", 3 }, { "JSW_NONE", 2 }, { "JSW_UNCONDITIONAL", 4 }, { "JSW_UNSPEC", 1 }, }; const ProtobufCEnumDescriptor pg_query__json_wrapper__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.JsonWrapper", "JsonWrapper", "PgQuery__JsonWrapper", "pg_query", 5, pg_query__json_wrapper__enum_values_by_number, 5, pg_query__json_wrapper__enum_values_by_name, 1, pg_query__json_wrapper__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__json_behavior_type__enum_values_by_number[10] = { { "JSON_BEHAVIOR_TYPE_UNDEFINED", "PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_TYPE_UNDEFINED", 0 }, { "JSON_BEHAVIOR_NULL", "PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_NULL", 1 }, { "JSON_BEHAVIOR_ERROR", "PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_ERROR", 2 }, { "JSON_BEHAVIOR_EMPTY", "PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_EMPTY", 3 }, { "JSON_BEHAVIOR_TRUE", "PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_TRUE", 4 }, { "JSON_BEHAVIOR_FALSE", "PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_FALSE", 5 }, { "JSON_BEHAVIOR_UNKNOWN", "PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_UNKNOWN", 6 }, { "JSON_BEHAVIOR_EMPTY_ARRAY", "PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_EMPTY_ARRAY", 7 }, { "JSON_BEHAVIOR_EMPTY_OBJECT", "PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_EMPTY_OBJECT", 8 }, { "JSON_BEHAVIOR_DEFAULT", "PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_DEFAULT", 9 }, }; static const ProtobufCIntRange pg_query__json_behavior_type__value_ranges[] = { {0, 0},{0, 10} }; static const ProtobufCEnumValueIndex pg_query__json_behavior_type__enum_values_by_name[10] = { { "JSON_BEHAVIOR_DEFAULT", 9 }, { "JSON_BEHAVIOR_EMPTY", 3 }, { "JSON_BEHAVIOR_EMPTY_ARRAY", 7 }, { "JSON_BEHAVIOR_EMPTY_OBJECT", 8 }, { "JSON_BEHAVIOR_ERROR", 2 }, { "JSON_BEHAVIOR_FALSE", 5 }, { "JSON_BEHAVIOR_NULL", 1 }, { "JSON_BEHAVIOR_TRUE", 4 }, { "JSON_BEHAVIOR_TYPE_UNDEFINED", 0 }, { "JSON_BEHAVIOR_UNKNOWN", 6 }, }; const ProtobufCEnumDescriptor pg_query__json_behavior_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.JsonBehaviorType", "JsonBehaviorType", "PgQuery__JsonBehaviorType", "pg_query", 10, pg_query__json_behavior_type__enum_values_by_number, 10, pg_query__json_behavior_type__enum_values_by_name, 1, pg_query__json_behavior_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__json_expr_op__enum_values_by_number[5] = { { "JSON_EXPR_OP_UNDEFINED", "PG_QUERY__JSON_EXPR_OP__JSON_EXPR_OP_UNDEFINED", 0 }, { "JSON_EXISTS_OP", "PG_QUERY__JSON_EXPR_OP__JSON_EXISTS_OP", 1 }, { "JSON_QUERY_OP", "PG_QUERY__JSON_EXPR_OP__JSON_QUERY_OP", 2 }, { "JSON_VALUE_OP", "PG_QUERY__JSON_EXPR_OP__JSON_VALUE_OP", 3 }, { "JSON_TABLE_OP", "PG_QUERY__JSON_EXPR_OP__JSON_TABLE_OP", 4 }, }; static const ProtobufCIntRange pg_query__json_expr_op__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__json_expr_op__enum_values_by_name[5] = { { "JSON_EXISTS_OP", 1 }, { "JSON_EXPR_OP_UNDEFINED", 0 }, { "JSON_QUERY_OP", 2 }, { "JSON_TABLE_OP", 4 }, { "JSON_VALUE_OP", 3 }, }; const ProtobufCEnumDescriptor pg_query__json_expr_op__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.JsonExprOp", "JsonExprOp", "PgQuery__JsonExprOp", "pg_query", 5, pg_query__json_expr_op__enum_values_by_number, 5, pg_query__json_expr_op__enum_values_by_name, 1, pg_query__json_expr_op__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__merge_match_kind__enum_values_by_number[4] = { { "MERGE_MATCH_KIND_UNDEFINED", "PG_QUERY__MERGE_MATCH_KIND__MERGE_MATCH_KIND_UNDEFINED", 0 }, { "MERGE_WHEN_MATCHED", "PG_QUERY__MERGE_MATCH_KIND__MERGE_WHEN_MATCHED", 1 }, { "MERGE_WHEN_NOT_MATCHED_BY_SOURCE", "PG_QUERY__MERGE_MATCH_KIND__MERGE_WHEN_NOT_MATCHED_BY_SOURCE", 2 }, { "MERGE_WHEN_NOT_MATCHED_BY_TARGET", "PG_QUERY__MERGE_MATCH_KIND__MERGE_WHEN_NOT_MATCHED_BY_TARGET", 3 }, }; static const ProtobufCIntRange pg_query__merge_match_kind__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__merge_match_kind__enum_values_by_name[4] = { { "MERGE_MATCH_KIND_UNDEFINED", 0 }, { "MERGE_WHEN_MATCHED", 1 }, { "MERGE_WHEN_NOT_MATCHED_BY_SOURCE", 2 }, { "MERGE_WHEN_NOT_MATCHED_BY_TARGET", 3 }, }; const ProtobufCEnumDescriptor pg_query__merge_match_kind__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.MergeMatchKind", "MergeMatchKind", "PgQuery__MergeMatchKind", "pg_query", 4, pg_query__merge_match_kind__enum_values_by_number, 4, pg_query__merge_match_kind__enum_values_by_name, 1, pg_query__merge_match_kind__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__cmd_type__enum_values_by_number[9] = { { "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_MERGE", "PG_QUERY__CMD_TYPE__CMD_MERGE", 6 }, { "CMD_UTILITY", "PG_QUERY__CMD_TYPE__CMD_UTILITY", 7 }, { "CMD_NOTHING", "PG_QUERY__CMD_TYPE__CMD_NOTHING", 8 }, }; static const ProtobufCIntRange pg_query__cmd_type__value_ranges[] = { {0, 0},{0, 9} }; static const ProtobufCEnumValueIndex pg_query__cmd_type__enum_values_by_name[9] = { { "CMD_DELETE", 5 }, { "CMD_INSERT", 4 }, { "CMD_MERGE", 6 }, { "CMD_NOTHING", 8 }, { "CMD_SELECT", 2 }, { "CMD_TYPE_UNDEFINED", 0 }, { "CMD_UNKNOWN", 1 }, { "CMD_UPDATE", 3 }, { "CMD_UTILITY", 7 }, }; const ProtobufCEnumDescriptor pg_query__cmd_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.CmdType", "CmdType", "PgQuery__CmdType", "pg_query", 9, pg_query__cmd_type__enum_values_by_number, 9, 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[10] = { { "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_RIGHT_ANTI", "PG_QUERY__JOIN_TYPE__JOIN_RIGHT_ANTI", 7 }, { "JOIN_UNIQUE_OUTER", "PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_OUTER", 8 }, { "JOIN_UNIQUE_INNER", "PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_INNER", 9 }, }; static const ProtobufCIntRange pg_query__join_type__value_ranges[] = { {0, 0},{0, 10} }; static const ProtobufCEnumValueIndex pg_query__join_type__enum_values_by_name[10] = { { "JOIN_ANTI", 6 }, { "JOIN_FULL", 3 }, { "JOIN_INNER", 1 }, { "JOIN_LEFT", 2 }, { "JOIN_RIGHT", 4 }, { "JOIN_RIGHT_ANTI", 7 }, { "JOIN_SEMI", 5 }, { "JOIN_TYPE_UNDEFINED", 0 }, { "JOIN_UNIQUE_INNER", 9 }, { "JOIN_UNIQUE_OUTER", 8 }, }; const ProtobufCEnumDescriptor pg_query__join_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.JoinType", "JoinType", "PgQuery__JoinType", "pg_query", 10, pg_query__join_type__enum_values_by_number, 10, 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[542] = { { "NUL", "PG_QUERY__TOKEN__NUL", 0 }, { "ASCII_36", "PG_QUERY__TOKEN__ASCII_36", 36 }, { "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 }, { "ABSENT", "PG_QUERY__TOKEN__ABSENT", 278 }, { "ABSOLUTE_P", "PG_QUERY__TOKEN__ABSOLUTE_P", 279 }, { "ACCESS", "PG_QUERY__TOKEN__ACCESS", 280 }, { "ACTION", "PG_QUERY__TOKEN__ACTION", 281 }, { "ADD_P", "PG_QUERY__TOKEN__ADD_P", 282 }, { "ADMIN", "PG_QUERY__TOKEN__ADMIN", 283 }, { "AFTER", "PG_QUERY__TOKEN__AFTER", 284 }, { "AGGREGATE", "PG_QUERY__TOKEN__AGGREGATE", 285 }, { "ALL", "PG_QUERY__TOKEN__ALL", 286 }, { "ALSO", "PG_QUERY__TOKEN__ALSO", 287 }, { "ALTER", "PG_QUERY__TOKEN__ALTER", 288 }, { "ALWAYS", "PG_QUERY__TOKEN__ALWAYS", 289 }, { "ANALYSE", "PG_QUERY__TOKEN__ANALYSE", 290 }, { "ANALYZE", "PG_QUERY__TOKEN__ANALYZE", 291 }, { "AND", "PG_QUERY__TOKEN__AND", 292 }, { "ANY", "PG_QUERY__TOKEN__ANY", 293 }, { "ARRAY", "PG_QUERY__TOKEN__ARRAY", 294 }, { "AS", "PG_QUERY__TOKEN__AS", 295 }, { "ASC", "PG_QUERY__TOKEN__ASC", 296 }, { "ASENSITIVE", "PG_QUERY__TOKEN__ASENSITIVE", 297 }, { "ASSERTION", "PG_QUERY__TOKEN__ASSERTION", 298 }, { "ASSIGNMENT", "PG_QUERY__TOKEN__ASSIGNMENT", 299 }, { "ASYMMETRIC", "PG_QUERY__TOKEN__ASYMMETRIC", 300 }, { "ATOMIC", "PG_QUERY__TOKEN__ATOMIC", 301 }, { "AT", "PG_QUERY__TOKEN__AT", 302 }, { "ATTACH", "PG_QUERY__TOKEN__ATTACH", 303 }, { "ATTRIBUTE", "PG_QUERY__TOKEN__ATTRIBUTE", 304 }, { "AUTHORIZATION", "PG_QUERY__TOKEN__AUTHORIZATION", 305 }, { "BACKWARD", "PG_QUERY__TOKEN__BACKWARD", 306 }, { "BEFORE", "PG_QUERY__TOKEN__BEFORE", 307 }, { "BEGIN_P", "PG_QUERY__TOKEN__BEGIN_P", 308 }, { "BETWEEN", "PG_QUERY__TOKEN__BETWEEN", 309 }, { "BIGINT", "PG_QUERY__TOKEN__BIGINT", 310 }, { "BINARY", "PG_QUERY__TOKEN__BINARY", 311 }, { "BIT", "PG_QUERY__TOKEN__BIT", 312 }, { "BOOLEAN_P", "PG_QUERY__TOKEN__BOOLEAN_P", 313 }, { "BOTH", "PG_QUERY__TOKEN__BOTH", 314 }, { "BREADTH", "PG_QUERY__TOKEN__BREADTH", 315 }, { "BY", "PG_QUERY__TOKEN__BY", 316 }, { "CACHE", "PG_QUERY__TOKEN__CACHE", 317 }, { "CALL", "PG_QUERY__TOKEN__CALL", 318 }, { "CALLED", "PG_QUERY__TOKEN__CALLED", 319 }, { "CASCADE", "PG_QUERY__TOKEN__CASCADE", 320 }, { "CASCADED", "PG_QUERY__TOKEN__CASCADED", 321 }, { "CASE", "PG_QUERY__TOKEN__CASE", 322 }, { "CAST", "PG_QUERY__TOKEN__CAST", 323 }, { "CATALOG_P", "PG_QUERY__TOKEN__CATALOG_P", 324 }, { "CHAIN", "PG_QUERY__TOKEN__CHAIN", 325 }, { "CHAR_P", "PG_QUERY__TOKEN__CHAR_P", 326 }, { "CHARACTER", "PG_QUERY__TOKEN__CHARACTER", 327 }, { "CHARACTERISTICS", "PG_QUERY__TOKEN__CHARACTERISTICS", 328 }, { "CHECK", "PG_QUERY__TOKEN__CHECK", 329 }, { "CHECKPOINT", "PG_QUERY__TOKEN__CHECKPOINT", 330 }, { "CLASS", "PG_QUERY__TOKEN__CLASS", 331 }, { "CLOSE", "PG_QUERY__TOKEN__CLOSE", 332 }, { "CLUSTER", "PG_QUERY__TOKEN__CLUSTER", 333 }, { "COALESCE", "PG_QUERY__TOKEN__COALESCE", 334 }, { "COLLATE", "PG_QUERY__TOKEN__COLLATE", 335 }, { "COLLATION", "PG_QUERY__TOKEN__COLLATION", 336 }, { "COLUMN", "PG_QUERY__TOKEN__COLUMN", 337 }, { "COLUMNS", "PG_QUERY__TOKEN__COLUMNS", 338 }, { "COMMENT", "PG_QUERY__TOKEN__COMMENT", 339 }, { "COMMENTS", "PG_QUERY__TOKEN__COMMENTS", 340 }, { "COMMIT", "PG_QUERY__TOKEN__COMMIT", 341 }, { "COMMITTED", "PG_QUERY__TOKEN__COMMITTED", 342 }, { "COMPRESSION", "PG_QUERY__TOKEN__COMPRESSION", 343 }, { "CONCURRENTLY", "PG_QUERY__TOKEN__CONCURRENTLY", 344 }, { "CONDITIONAL", "PG_QUERY__TOKEN__CONDITIONAL", 345 }, { "CONFIGURATION", "PG_QUERY__TOKEN__CONFIGURATION", 346 }, { "CONFLICT", "PG_QUERY__TOKEN__CONFLICT", 347 }, { "CONNECTION", "PG_QUERY__TOKEN__CONNECTION", 348 }, { "CONSTRAINT", "PG_QUERY__TOKEN__CONSTRAINT", 349 }, { "CONSTRAINTS", "PG_QUERY__TOKEN__CONSTRAINTS", 350 }, { "CONTENT_P", "PG_QUERY__TOKEN__CONTENT_P", 351 }, { "CONTINUE_P", "PG_QUERY__TOKEN__CONTINUE_P", 352 }, { "CONVERSION_P", "PG_QUERY__TOKEN__CONVERSION_P", 353 }, { "COPY", "PG_QUERY__TOKEN__COPY", 354 }, { "COST", "PG_QUERY__TOKEN__COST", 355 }, { "CREATE", "PG_QUERY__TOKEN__CREATE", 356 }, { "CROSS", "PG_QUERY__TOKEN__CROSS", 357 }, { "CSV", "PG_QUERY__TOKEN__CSV", 358 }, { "CUBE", "PG_QUERY__TOKEN__CUBE", 359 }, { "CURRENT_P", "PG_QUERY__TOKEN__CURRENT_P", 360 }, { "CURRENT_CATALOG", "PG_QUERY__TOKEN__CURRENT_CATALOG", 361 }, { "CURRENT_DATE", "PG_QUERY__TOKEN__CURRENT_DATE", 362 }, { "CURRENT_ROLE", "PG_QUERY__TOKEN__CURRENT_ROLE", 363 }, { "CURRENT_SCHEMA", "PG_QUERY__TOKEN__CURRENT_SCHEMA", 364 }, { "CURRENT_TIME", "PG_QUERY__TOKEN__CURRENT_TIME", 365 }, { "CURRENT_TIMESTAMP", "PG_QUERY__TOKEN__CURRENT_TIMESTAMP", 366 }, { "CURRENT_USER", "PG_QUERY__TOKEN__CURRENT_USER", 367 }, { "CURSOR", "PG_QUERY__TOKEN__CURSOR", 368 }, { "CYCLE", "PG_QUERY__TOKEN__CYCLE", 369 }, { "DATA_P", "PG_QUERY__TOKEN__DATA_P", 370 }, { "DATABASE", "PG_QUERY__TOKEN__DATABASE", 371 }, { "DAY_P", "PG_QUERY__TOKEN__DAY_P", 372 }, { "DEALLOCATE", "PG_QUERY__TOKEN__DEALLOCATE", 373 }, { "DEC", "PG_QUERY__TOKEN__DEC", 374 }, { "DECIMAL_P", "PG_QUERY__TOKEN__DECIMAL_P", 375 }, { "DECLARE", "PG_QUERY__TOKEN__DECLARE", 376 }, { "DEFAULT", "PG_QUERY__TOKEN__DEFAULT", 377 }, { "DEFAULTS", "PG_QUERY__TOKEN__DEFAULTS", 378 }, { "DEFERRABLE", "PG_QUERY__TOKEN__DEFERRABLE", 379 }, { "DEFERRED", "PG_QUERY__TOKEN__DEFERRED", 380 }, { "DEFINER", "PG_QUERY__TOKEN__DEFINER", 381 }, { "DELETE_P", "PG_QUERY__TOKEN__DELETE_P", 382 }, { "DELIMITER", "PG_QUERY__TOKEN__DELIMITER", 383 }, { "DELIMITERS", "PG_QUERY__TOKEN__DELIMITERS", 384 }, { "DEPENDS", "PG_QUERY__TOKEN__DEPENDS", 385 }, { "DEPTH", "PG_QUERY__TOKEN__DEPTH", 386 }, { "DESC", "PG_QUERY__TOKEN__DESC", 387 }, { "DETACH", "PG_QUERY__TOKEN__DETACH", 388 }, { "DICTIONARY", "PG_QUERY__TOKEN__DICTIONARY", 389 }, { "DISABLE_P", "PG_QUERY__TOKEN__DISABLE_P", 390 }, { "DISCARD", "PG_QUERY__TOKEN__DISCARD", 391 }, { "DISTINCT", "PG_QUERY__TOKEN__DISTINCT", 392 }, { "DO", "PG_QUERY__TOKEN__DO", 393 }, { "DOCUMENT_P", "PG_QUERY__TOKEN__DOCUMENT_P", 394 }, { "DOMAIN_P", "PG_QUERY__TOKEN__DOMAIN_P", 395 }, { "DOUBLE_P", "PG_QUERY__TOKEN__DOUBLE_P", 396 }, { "DROP", "PG_QUERY__TOKEN__DROP", 397 }, { "EACH", "PG_QUERY__TOKEN__EACH", 398 }, { "ELSE", "PG_QUERY__TOKEN__ELSE", 399 }, { "EMPTY_P", "PG_QUERY__TOKEN__EMPTY_P", 400 }, { "ENABLE_P", "PG_QUERY__TOKEN__ENABLE_P", 401 }, { "ENCODING", "PG_QUERY__TOKEN__ENCODING", 402 }, { "ENCRYPTED", "PG_QUERY__TOKEN__ENCRYPTED", 403 }, { "END_P", "PG_QUERY__TOKEN__END_P", 404 }, { "ENUM_P", "PG_QUERY__TOKEN__ENUM_P", 405 }, { "ERROR_P", "PG_QUERY__TOKEN__ERROR_P", 406 }, { "ESCAPE", "PG_QUERY__TOKEN__ESCAPE", 407 }, { "EVENT", "PG_QUERY__TOKEN__EVENT", 408 }, { "EXCEPT", "PG_QUERY__TOKEN__EXCEPT", 409 }, { "EXCLUDE", "PG_QUERY__TOKEN__EXCLUDE", 410 }, { "EXCLUDING", "PG_QUERY__TOKEN__EXCLUDING", 411 }, { "EXCLUSIVE", "PG_QUERY__TOKEN__EXCLUSIVE", 412 }, { "EXECUTE", "PG_QUERY__TOKEN__EXECUTE", 413 }, { "EXISTS", "PG_QUERY__TOKEN__EXISTS", 414 }, { "EXPLAIN", "PG_QUERY__TOKEN__EXPLAIN", 415 }, { "EXPRESSION", "PG_QUERY__TOKEN__EXPRESSION", 416 }, { "EXTENSION", "PG_QUERY__TOKEN__EXTENSION", 417 }, { "EXTERNAL", "PG_QUERY__TOKEN__EXTERNAL", 418 }, { "EXTRACT", "PG_QUERY__TOKEN__EXTRACT", 419 }, { "FALSE_P", "PG_QUERY__TOKEN__FALSE_P", 420 }, { "FAMILY", "PG_QUERY__TOKEN__FAMILY", 421 }, { "FETCH", "PG_QUERY__TOKEN__FETCH", 422 }, { "FILTER", "PG_QUERY__TOKEN__FILTER", 423 }, { "FINALIZE", "PG_QUERY__TOKEN__FINALIZE", 424 }, { "FIRST_P", "PG_QUERY__TOKEN__FIRST_P", 425 }, { "FLOAT_P", "PG_QUERY__TOKEN__FLOAT_P", 426 }, { "FOLLOWING", "PG_QUERY__TOKEN__FOLLOWING", 427 }, { "FOR", "PG_QUERY__TOKEN__FOR", 428 }, { "FORCE", "PG_QUERY__TOKEN__FORCE", 429 }, { "FOREIGN", "PG_QUERY__TOKEN__FOREIGN", 430 }, { "FORMAT", "PG_QUERY__TOKEN__FORMAT", 431 }, { "FORWARD", "PG_QUERY__TOKEN__FORWARD", 432 }, { "FREEZE", "PG_QUERY__TOKEN__FREEZE", 433 }, { "FROM", "PG_QUERY__TOKEN__FROM", 434 }, { "FULL", "PG_QUERY__TOKEN__FULL", 435 }, { "FUNCTION", "PG_QUERY__TOKEN__FUNCTION", 436 }, { "FUNCTIONS", "PG_QUERY__TOKEN__FUNCTIONS", 437 }, { "GENERATED", "PG_QUERY__TOKEN__GENERATED", 438 }, { "GLOBAL", "PG_QUERY__TOKEN__GLOBAL", 439 }, { "GRANT", "PG_QUERY__TOKEN__GRANT", 440 }, { "GRANTED", "PG_QUERY__TOKEN__GRANTED", 441 }, { "GREATEST", "PG_QUERY__TOKEN__GREATEST", 442 }, { "GROUP_P", "PG_QUERY__TOKEN__GROUP_P", 443 }, { "GROUPING", "PG_QUERY__TOKEN__GROUPING", 444 }, { "GROUPS", "PG_QUERY__TOKEN__GROUPS", 445 }, { "HANDLER", "PG_QUERY__TOKEN__HANDLER", 446 }, { "HAVING", "PG_QUERY__TOKEN__HAVING", 447 }, { "HEADER_P", "PG_QUERY__TOKEN__HEADER_P", 448 }, { "HOLD", "PG_QUERY__TOKEN__HOLD", 449 }, { "HOUR_P", "PG_QUERY__TOKEN__HOUR_P", 450 }, { "IDENTITY_P", "PG_QUERY__TOKEN__IDENTITY_P", 451 }, { "IF_P", "PG_QUERY__TOKEN__IF_P", 452 }, { "ILIKE", "PG_QUERY__TOKEN__ILIKE", 453 }, { "IMMEDIATE", "PG_QUERY__TOKEN__IMMEDIATE", 454 }, { "IMMUTABLE", "PG_QUERY__TOKEN__IMMUTABLE", 455 }, { "IMPLICIT_P", "PG_QUERY__TOKEN__IMPLICIT_P", 456 }, { "IMPORT_P", "PG_QUERY__TOKEN__IMPORT_P", 457 }, { "IN_P", "PG_QUERY__TOKEN__IN_P", 458 }, { "INCLUDE", "PG_QUERY__TOKEN__INCLUDE", 459 }, { "INCLUDING", "PG_QUERY__TOKEN__INCLUDING", 460 }, { "INCREMENT", "PG_QUERY__TOKEN__INCREMENT", 461 }, { "INDENT", "PG_QUERY__TOKEN__INDENT", 462 }, { "INDEX", "PG_QUERY__TOKEN__INDEX", 463 }, { "INDEXES", "PG_QUERY__TOKEN__INDEXES", 464 }, { "INHERIT", "PG_QUERY__TOKEN__INHERIT", 465 }, { "INHERITS", "PG_QUERY__TOKEN__INHERITS", 466 }, { "INITIALLY", "PG_QUERY__TOKEN__INITIALLY", 467 }, { "INLINE_P", "PG_QUERY__TOKEN__INLINE_P", 468 }, { "INNER_P", "PG_QUERY__TOKEN__INNER_P", 469 }, { "INOUT", "PG_QUERY__TOKEN__INOUT", 470 }, { "INPUT_P", "PG_QUERY__TOKEN__INPUT_P", 471 }, { "INSENSITIVE", "PG_QUERY__TOKEN__INSENSITIVE", 472 }, { "INSERT", "PG_QUERY__TOKEN__INSERT", 473 }, { "INSTEAD", "PG_QUERY__TOKEN__INSTEAD", 474 }, { "INT_P", "PG_QUERY__TOKEN__INT_P", 475 }, { "INTEGER", "PG_QUERY__TOKEN__INTEGER", 476 }, { "INTERSECT", "PG_QUERY__TOKEN__INTERSECT", 477 }, { "INTERVAL", "PG_QUERY__TOKEN__INTERVAL", 478 }, { "INTO", "PG_QUERY__TOKEN__INTO", 479 }, { "INVOKER", "PG_QUERY__TOKEN__INVOKER", 480 }, { "IS", "PG_QUERY__TOKEN__IS", 481 }, { "ISNULL", "PG_QUERY__TOKEN__ISNULL", 482 }, { "ISOLATION", "PG_QUERY__TOKEN__ISOLATION", 483 }, { "JOIN", "PG_QUERY__TOKEN__JOIN", 484 }, { "JSON", "PG_QUERY__TOKEN__JSON", 485 }, { "JSON_ARRAY", "PG_QUERY__TOKEN__JSON_ARRAY", 486 }, { "JSON_ARRAYAGG", "PG_QUERY__TOKEN__JSON_ARRAYAGG", 487 }, { "JSON_EXISTS", "PG_QUERY__TOKEN__JSON_EXISTS", 488 }, { "JSON_OBJECT", "PG_QUERY__TOKEN__JSON_OBJECT", 489 }, { "JSON_OBJECTAGG", "PG_QUERY__TOKEN__JSON_OBJECTAGG", 490 }, { "JSON_QUERY", "PG_QUERY__TOKEN__JSON_QUERY", 491 }, { "JSON_SCALAR", "PG_QUERY__TOKEN__JSON_SCALAR", 492 }, { "JSON_SERIALIZE", "PG_QUERY__TOKEN__JSON_SERIALIZE", 493 }, { "JSON_TABLE", "PG_QUERY__TOKEN__JSON_TABLE", 494 }, { "JSON_VALUE", "PG_QUERY__TOKEN__JSON_VALUE", 495 }, { "KEEP", "PG_QUERY__TOKEN__KEEP", 496 }, { "KEY", "PG_QUERY__TOKEN__KEY", 497 }, { "KEYS", "PG_QUERY__TOKEN__KEYS", 498 }, { "LABEL", "PG_QUERY__TOKEN__LABEL", 499 }, { "LANGUAGE", "PG_QUERY__TOKEN__LANGUAGE", 500 }, { "LARGE_P", "PG_QUERY__TOKEN__LARGE_P", 501 }, { "LAST_P", "PG_QUERY__TOKEN__LAST_P", 502 }, { "LATERAL_P", "PG_QUERY__TOKEN__LATERAL_P", 503 }, { "LEADING", "PG_QUERY__TOKEN__LEADING", 504 }, { "LEAKPROOF", "PG_QUERY__TOKEN__LEAKPROOF", 505 }, { "LEAST", "PG_QUERY__TOKEN__LEAST", 506 }, { "LEFT", "PG_QUERY__TOKEN__LEFT", 507 }, { "LEVEL", "PG_QUERY__TOKEN__LEVEL", 508 }, { "LIKE", "PG_QUERY__TOKEN__LIKE", 509 }, { "LIMIT", "PG_QUERY__TOKEN__LIMIT", 510 }, { "LISTEN", "PG_QUERY__TOKEN__LISTEN", 511 }, { "LOAD", "PG_QUERY__TOKEN__LOAD", 512 }, { "LOCAL", "PG_QUERY__TOKEN__LOCAL", 513 }, { "LOCALTIME", "PG_QUERY__TOKEN__LOCALTIME", 514 }, { "LOCALTIMESTAMP", "PG_QUERY__TOKEN__LOCALTIMESTAMP", 515 }, { "LOCATION", "PG_QUERY__TOKEN__LOCATION", 516 }, { "LOCK_P", "PG_QUERY__TOKEN__LOCK_P", 517 }, { "LOCKED", "PG_QUERY__TOKEN__LOCKED", 518 }, { "LOGGED", "PG_QUERY__TOKEN__LOGGED", 519 }, { "MAPPING", "PG_QUERY__TOKEN__MAPPING", 520 }, { "MATCH", "PG_QUERY__TOKEN__MATCH", 521 }, { "MATCHED", "PG_QUERY__TOKEN__MATCHED", 522 }, { "MATERIALIZED", "PG_QUERY__TOKEN__MATERIALIZED", 523 }, { "MAXVALUE", "PG_QUERY__TOKEN__MAXVALUE", 524 }, { "MERGE", "PG_QUERY__TOKEN__MERGE", 525 }, { "MERGE_ACTION", "PG_QUERY__TOKEN__MERGE_ACTION", 526 }, { "METHOD", "PG_QUERY__TOKEN__METHOD", 527 }, { "MINUTE_P", "PG_QUERY__TOKEN__MINUTE_P", 528 }, { "MINVALUE", "PG_QUERY__TOKEN__MINVALUE", 529 }, { "MODE", "PG_QUERY__TOKEN__MODE", 530 }, { "MONTH_P", "PG_QUERY__TOKEN__MONTH_P", 531 }, { "MOVE", "PG_QUERY__TOKEN__MOVE", 532 }, { "NAME_P", "PG_QUERY__TOKEN__NAME_P", 533 }, { "NAMES", "PG_QUERY__TOKEN__NAMES", 534 }, { "NATIONAL", "PG_QUERY__TOKEN__NATIONAL", 535 }, { "NATURAL", "PG_QUERY__TOKEN__NATURAL", 536 }, { "NCHAR", "PG_QUERY__TOKEN__NCHAR", 537 }, { "NESTED", "PG_QUERY__TOKEN__NESTED", 538 }, { "NEW", "PG_QUERY__TOKEN__NEW", 539 }, { "NEXT", "PG_QUERY__TOKEN__NEXT", 540 }, { "NFC", "PG_QUERY__TOKEN__NFC", 541 }, { "NFD", "PG_QUERY__TOKEN__NFD", 542 }, { "NFKC", "PG_QUERY__TOKEN__NFKC", 543 }, { "NFKD", "PG_QUERY__TOKEN__NFKD", 544 }, { "NO", "PG_QUERY__TOKEN__NO", 545 }, { "NONE", "PG_QUERY__TOKEN__NONE", 546 }, { "NORMALIZE", "PG_QUERY__TOKEN__NORMALIZE", 547 }, { "NORMALIZED", "PG_QUERY__TOKEN__NORMALIZED", 548 }, { "NOT", "PG_QUERY__TOKEN__NOT", 549 }, { "NOTHING", "PG_QUERY__TOKEN__NOTHING", 550 }, { "NOTIFY", "PG_QUERY__TOKEN__NOTIFY", 551 }, { "NOTNULL", "PG_QUERY__TOKEN__NOTNULL", 552 }, { "NOWAIT", "PG_QUERY__TOKEN__NOWAIT", 553 }, { "NULL_P", "PG_QUERY__TOKEN__NULL_P", 554 }, { "NULLIF", "PG_QUERY__TOKEN__NULLIF", 555 }, { "NULLS_P", "PG_QUERY__TOKEN__NULLS_P", 556 }, { "NUMERIC", "PG_QUERY__TOKEN__NUMERIC", 557 }, { "OBJECT_P", "PG_QUERY__TOKEN__OBJECT_P", 558 }, { "OF", "PG_QUERY__TOKEN__OF", 559 }, { "OFF", "PG_QUERY__TOKEN__OFF", 560 }, { "OFFSET", "PG_QUERY__TOKEN__OFFSET", 561 }, { "OIDS", "PG_QUERY__TOKEN__OIDS", 562 }, { "OLD", "PG_QUERY__TOKEN__OLD", 563 }, { "OMIT", "PG_QUERY__TOKEN__OMIT", 564 }, { "ON", "PG_QUERY__TOKEN__ON", 565 }, { "ONLY", "PG_QUERY__TOKEN__ONLY", 566 }, { "OPERATOR", "PG_QUERY__TOKEN__OPERATOR", 567 }, { "OPTION", "PG_QUERY__TOKEN__OPTION", 568 }, { "OPTIONS", "PG_QUERY__TOKEN__OPTIONS", 569 }, { "OR", "PG_QUERY__TOKEN__OR", 570 }, { "ORDER", "PG_QUERY__TOKEN__ORDER", 571 }, { "ORDINALITY", "PG_QUERY__TOKEN__ORDINALITY", 572 }, { "OTHERS", "PG_QUERY__TOKEN__OTHERS", 573 }, { "OUT_P", "PG_QUERY__TOKEN__OUT_P", 574 }, { "OUTER_P", "PG_QUERY__TOKEN__OUTER_P", 575 }, { "OVER", "PG_QUERY__TOKEN__OVER", 576 }, { "OVERLAPS", "PG_QUERY__TOKEN__OVERLAPS", 577 }, { "OVERLAY", "PG_QUERY__TOKEN__OVERLAY", 578 }, { "OVERRIDING", "PG_QUERY__TOKEN__OVERRIDING", 579 }, { "OWNED", "PG_QUERY__TOKEN__OWNED", 580 }, { "OWNER", "PG_QUERY__TOKEN__OWNER", 581 }, { "PARALLEL", "PG_QUERY__TOKEN__PARALLEL", 582 }, { "PARAMETER", "PG_QUERY__TOKEN__PARAMETER", 583 }, { "PARSER", "PG_QUERY__TOKEN__PARSER", 584 }, { "PARTIAL", "PG_QUERY__TOKEN__PARTIAL", 585 }, { "PARTITION", "PG_QUERY__TOKEN__PARTITION", 586 }, { "PASSING", "PG_QUERY__TOKEN__PASSING", 587 }, { "PASSWORD", "PG_QUERY__TOKEN__PASSWORD", 588 }, { "PATH", "PG_QUERY__TOKEN__PATH", 589 }, { "PLACING", "PG_QUERY__TOKEN__PLACING", 590 }, { "PLAN", "PG_QUERY__TOKEN__PLAN", 591 }, { "PLANS", "PG_QUERY__TOKEN__PLANS", 592 }, { "POLICY", "PG_QUERY__TOKEN__POLICY", 593 }, { "POSITION", "PG_QUERY__TOKEN__POSITION", 594 }, { "PRECEDING", "PG_QUERY__TOKEN__PRECEDING", 595 }, { "PRECISION", "PG_QUERY__TOKEN__PRECISION", 596 }, { "PRESERVE", "PG_QUERY__TOKEN__PRESERVE", 597 }, { "PREPARE", "PG_QUERY__TOKEN__PREPARE", 598 }, { "PREPARED", "PG_QUERY__TOKEN__PREPARED", 599 }, { "PRIMARY", "PG_QUERY__TOKEN__PRIMARY", 600 }, { "PRIOR", "PG_QUERY__TOKEN__PRIOR", 601 }, { "PRIVILEGES", "PG_QUERY__TOKEN__PRIVILEGES", 602 }, { "PROCEDURAL", "PG_QUERY__TOKEN__PROCEDURAL", 603 }, { "PROCEDURE", "PG_QUERY__TOKEN__PROCEDURE", 604 }, { "PROCEDURES", "PG_QUERY__TOKEN__PROCEDURES", 605 }, { "PROGRAM", "PG_QUERY__TOKEN__PROGRAM", 606 }, { "PUBLICATION", "PG_QUERY__TOKEN__PUBLICATION", 607 }, { "QUOTE", "PG_QUERY__TOKEN__QUOTE", 608 }, { "QUOTES", "PG_QUERY__TOKEN__QUOTES", 609 }, { "RANGE", "PG_QUERY__TOKEN__RANGE", 610 }, { "READ", "PG_QUERY__TOKEN__READ", 611 }, { "REAL", "PG_QUERY__TOKEN__REAL", 612 }, { "REASSIGN", "PG_QUERY__TOKEN__REASSIGN", 613 }, { "RECHECK", "PG_QUERY__TOKEN__RECHECK", 614 }, { "RECURSIVE", "PG_QUERY__TOKEN__RECURSIVE", 615 }, { "REF_P", "PG_QUERY__TOKEN__REF_P", 616 }, { "REFERENCES", "PG_QUERY__TOKEN__REFERENCES", 617 }, { "REFERENCING", "PG_QUERY__TOKEN__REFERENCING", 618 }, { "REFRESH", "PG_QUERY__TOKEN__REFRESH", 619 }, { "REINDEX", "PG_QUERY__TOKEN__REINDEX", 620 }, { "RELATIVE_P", "PG_QUERY__TOKEN__RELATIVE_P", 621 }, { "RELEASE", "PG_QUERY__TOKEN__RELEASE", 622 }, { "RENAME", "PG_QUERY__TOKEN__RENAME", 623 }, { "REPEATABLE", "PG_QUERY__TOKEN__REPEATABLE", 624 }, { "REPLACE", "PG_QUERY__TOKEN__REPLACE", 625 }, { "REPLICA", "PG_QUERY__TOKEN__REPLICA", 626 }, { "RESET", "PG_QUERY__TOKEN__RESET", 627 }, { "RESTART", "PG_QUERY__TOKEN__RESTART", 628 }, { "RESTRICT", "PG_QUERY__TOKEN__RESTRICT", 629 }, { "RETURN", "PG_QUERY__TOKEN__RETURN", 630 }, { "RETURNING", "PG_QUERY__TOKEN__RETURNING", 631 }, { "RETURNS", "PG_QUERY__TOKEN__RETURNS", 632 }, { "REVOKE", "PG_QUERY__TOKEN__REVOKE", 633 }, { "RIGHT", "PG_QUERY__TOKEN__RIGHT", 634 }, { "ROLE", "PG_QUERY__TOKEN__ROLE", 635 }, { "ROLLBACK", "PG_QUERY__TOKEN__ROLLBACK", 636 }, { "ROLLUP", "PG_QUERY__TOKEN__ROLLUP", 637 }, { "ROUTINE", "PG_QUERY__TOKEN__ROUTINE", 638 }, { "ROUTINES", "PG_QUERY__TOKEN__ROUTINES", 639 }, { "ROW", "PG_QUERY__TOKEN__ROW", 640 }, { "ROWS", "PG_QUERY__TOKEN__ROWS", 641 }, { "RULE", "PG_QUERY__TOKEN__RULE", 642 }, { "SAVEPOINT", "PG_QUERY__TOKEN__SAVEPOINT", 643 }, { "SCALAR", "PG_QUERY__TOKEN__SCALAR", 644 }, { "SCHEMA", "PG_QUERY__TOKEN__SCHEMA", 645 }, { "SCHEMAS", "PG_QUERY__TOKEN__SCHEMAS", 646 }, { "SCROLL", "PG_QUERY__TOKEN__SCROLL", 647 }, { "SEARCH", "PG_QUERY__TOKEN__SEARCH", 648 }, { "SECOND_P", "PG_QUERY__TOKEN__SECOND_P", 649 }, { "SECURITY", "PG_QUERY__TOKEN__SECURITY", 650 }, { "SELECT", "PG_QUERY__TOKEN__SELECT", 651 }, { "SEQUENCE", "PG_QUERY__TOKEN__SEQUENCE", 652 }, { "SEQUENCES", "PG_QUERY__TOKEN__SEQUENCES", 653 }, { "SERIALIZABLE", "PG_QUERY__TOKEN__SERIALIZABLE", 654 }, { "SERVER", "PG_QUERY__TOKEN__SERVER", 655 }, { "SESSION", "PG_QUERY__TOKEN__SESSION", 656 }, { "SESSION_USER", "PG_QUERY__TOKEN__SESSION_USER", 657 }, { "SET", "PG_QUERY__TOKEN__SET", 658 }, { "SETS", "PG_QUERY__TOKEN__SETS", 659 }, { "SETOF", "PG_QUERY__TOKEN__SETOF", 660 }, { "SHARE", "PG_QUERY__TOKEN__SHARE", 661 }, { "SHOW", "PG_QUERY__TOKEN__SHOW", 662 }, { "SIMILAR", "PG_QUERY__TOKEN__SIMILAR", 663 }, { "SIMPLE", "PG_QUERY__TOKEN__SIMPLE", 664 }, { "SKIP", "PG_QUERY__TOKEN__SKIP", 665 }, { "SMALLINT", "PG_QUERY__TOKEN__SMALLINT", 666 }, { "SNAPSHOT", "PG_QUERY__TOKEN__SNAPSHOT", 667 }, { "SOME", "PG_QUERY__TOKEN__SOME", 668 }, { "SOURCE", "PG_QUERY__TOKEN__SOURCE", 669 }, { "SQL_P", "PG_QUERY__TOKEN__SQL_P", 670 }, { "STABLE", "PG_QUERY__TOKEN__STABLE", 671 }, { "STANDALONE_P", "PG_QUERY__TOKEN__STANDALONE_P", 672 }, { "START", "PG_QUERY__TOKEN__START", 673 }, { "STATEMENT", "PG_QUERY__TOKEN__STATEMENT", 674 }, { "STATISTICS", "PG_QUERY__TOKEN__STATISTICS", 675 }, { "STDIN", "PG_QUERY__TOKEN__STDIN", 676 }, { "STDOUT", "PG_QUERY__TOKEN__STDOUT", 677 }, { "STORAGE", "PG_QUERY__TOKEN__STORAGE", 678 }, { "STORED", "PG_QUERY__TOKEN__STORED", 679 }, { "STRICT_P", "PG_QUERY__TOKEN__STRICT_P", 680 }, { "STRING_P", "PG_QUERY__TOKEN__STRING_P", 681 }, { "STRIP_P", "PG_QUERY__TOKEN__STRIP_P", 682 }, { "SUBSCRIPTION", "PG_QUERY__TOKEN__SUBSCRIPTION", 683 }, { "SUBSTRING", "PG_QUERY__TOKEN__SUBSTRING", 684 }, { "SUPPORT", "PG_QUERY__TOKEN__SUPPORT", 685 }, { "SYMMETRIC", "PG_QUERY__TOKEN__SYMMETRIC", 686 }, { "SYSID", "PG_QUERY__TOKEN__SYSID", 687 }, { "SYSTEM_P", "PG_QUERY__TOKEN__SYSTEM_P", 688 }, { "SYSTEM_USER", "PG_QUERY__TOKEN__SYSTEM_USER", 689 }, { "TABLE", "PG_QUERY__TOKEN__TABLE", 690 }, { "TABLES", "PG_QUERY__TOKEN__TABLES", 691 }, { "TABLESAMPLE", "PG_QUERY__TOKEN__TABLESAMPLE", 692 }, { "TABLESPACE", "PG_QUERY__TOKEN__TABLESPACE", 693 }, { "TARGET", "PG_QUERY__TOKEN__TARGET", 694 }, { "TEMP", "PG_QUERY__TOKEN__TEMP", 695 }, { "TEMPLATE", "PG_QUERY__TOKEN__TEMPLATE", 696 }, { "TEMPORARY", "PG_QUERY__TOKEN__TEMPORARY", 697 }, { "TEXT_P", "PG_QUERY__TOKEN__TEXT_P", 698 }, { "THEN", "PG_QUERY__TOKEN__THEN", 699 }, { "TIES", "PG_QUERY__TOKEN__TIES", 700 }, { "TIME", "PG_QUERY__TOKEN__TIME", 701 }, { "TIMESTAMP", "PG_QUERY__TOKEN__TIMESTAMP", 702 }, { "TO", "PG_QUERY__TOKEN__TO", 703 }, { "TRAILING", "PG_QUERY__TOKEN__TRAILING", 704 }, { "TRANSACTION", "PG_QUERY__TOKEN__TRANSACTION", 705 }, { "TRANSFORM", "PG_QUERY__TOKEN__TRANSFORM", 706 }, { "TREAT", "PG_QUERY__TOKEN__TREAT", 707 }, { "TRIGGER", "PG_QUERY__TOKEN__TRIGGER", 708 }, { "TRIM", "PG_QUERY__TOKEN__TRIM", 709 }, { "TRUE_P", "PG_QUERY__TOKEN__TRUE_P", 710 }, { "TRUNCATE", "PG_QUERY__TOKEN__TRUNCATE", 711 }, { "TRUSTED", "PG_QUERY__TOKEN__TRUSTED", 712 }, { "TYPE_P", "PG_QUERY__TOKEN__TYPE_P", 713 }, { "TYPES_P", "PG_QUERY__TOKEN__TYPES_P", 714 }, { "UESCAPE", "PG_QUERY__TOKEN__UESCAPE", 715 }, { "UNBOUNDED", "PG_QUERY__TOKEN__UNBOUNDED", 716 }, { "UNCONDITIONAL", "PG_QUERY__TOKEN__UNCONDITIONAL", 717 }, { "UNCOMMITTED", "PG_QUERY__TOKEN__UNCOMMITTED", 718 }, { "UNENCRYPTED", "PG_QUERY__TOKEN__UNENCRYPTED", 719 }, { "UNION", "PG_QUERY__TOKEN__UNION", 720 }, { "UNIQUE", "PG_QUERY__TOKEN__UNIQUE", 721 }, { "UNKNOWN", "PG_QUERY__TOKEN__UNKNOWN", 722 }, { "UNLISTEN", "PG_QUERY__TOKEN__UNLISTEN", 723 }, { "UNLOGGED", "PG_QUERY__TOKEN__UNLOGGED", 724 }, { "UNTIL", "PG_QUERY__TOKEN__UNTIL", 725 }, { "UPDATE", "PG_QUERY__TOKEN__UPDATE", 726 }, { "USER", "PG_QUERY__TOKEN__USER", 727 }, { "USING", "PG_QUERY__TOKEN__USING", 728 }, { "VACUUM", "PG_QUERY__TOKEN__VACUUM", 729 }, { "VALID", "PG_QUERY__TOKEN__VALID", 730 }, { "VALIDATE", "PG_QUERY__TOKEN__VALIDATE", 731 }, { "VALIDATOR", "PG_QUERY__TOKEN__VALIDATOR", 732 }, { "VALUE_P", "PG_QUERY__TOKEN__VALUE_P", 733 }, { "VALUES", "PG_QUERY__TOKEN__VALUES", 734 }, { "VARCHAR", "PG_QUERY__TOKEN__VARCHAR", 735 }, { "VARIADIC", "PG_QUERY__TOKEN__VARIADIC", 736 }, { "VARYING", "PG_QUERY__TOKEN__VARYING", 737 }, { "VERBOSE", "PG_QUERY__TOKEN__VERBOSE", 738 }, { "VERSION_P", "PG_QUERY__TOKEN__VERSION_P", 739 }, { "VIEW", "PG_QUERY__TOKEN__VIEW", 740 }, { "VIEWS", "PG_QUERY__TOKEN__VIEWS", 741 }, { "VOLATILE", "PG_QUERY__TOKEN__VOLATILE", 742 }, { "WHEN", "PG_QUERY__TOKEN__WHEN", 743 }, { "WHERE", "PG_QUERY__TOKEN__WHERE", 744 }, { "WHITESPACE_P", "PG_QUERY__TOKEN__WHITESPACE_P", 745 }, { "WINDOW", "PG_QUERY__TOKEN__WINDOW", 746 }, { "WITH", "PG_QUERY__TOKEN__WITH", 747 }, { "WITHIN", "PG_QUERY__TOKEN__WITHIN", 748 }, { "WITHOUT", "PG_QUERY__TOKEN__WITHOUT", 749 }, { "WORK", "PG_QUERY__TOKEN__WORK", 750 }, { "WRAPPER", "PG_QUERY__TOKEN__WRAPPER", 751 }, { "WRITE", "PG_QUERY__TOKEN__WRITE", 752 }, { "XML_P", "PG_QUERY__TOKEN__XML_P", 753 }, { "XMLATTRIBUTES", "PG_QUERY__TOKEN__XMLATTRIBUTES", 754 }, { "XMLCONCAT", "PG_QUERY__TOKEN__XMLCONCAT", 755 }, { "XMLELEMENT", "PG_QUERY__TOKEN__XMLELEMENT", 756 }, { "XMLEXISTS", "PG_QUERY__TOKEN__XMLEXISTS", 757 }, { "XMLFOREST", "PG_QUERY__TOKEN__XMLFOREST", 758 }, { "XMLNAMESPACES", "PG_QUERY__TOKEN__XMLNAMESPACES", 759 }, { "XMLPARSE", "PG_QUERY__TOKEN__XMLPARSE", 760 }, { "XMLPI", "PG_QUERY__TOKEN__XMLPI", 761 }, { "XMLROOT", "PG_QUERY__TOKEN__XMLROOT", 762 }, { "XMLSERIALIZE", "PG_QUERY__TOKEN__XMLSERIALIZE", 763 }, { "XMLTABLE", "PG_QUERY__TOKEN__XMLTABLE", 764 }, { "YEAR_P", "PG_QUERY__TOKEN__YEAR_P", 765 }, { "YES_P", "PG_QUERY__TOKEN__YES_P", 766 }, { "ZONE", "PG_QUERY__TOKEN__ZONE", 767 }, { "FORMAT_LA", "PG_QUERY__TOKEN__FORMAT_LA", 768 }, { "NOT_LA", "PG_QUERY__TOKEN__NOT_LA", 769 }, { "NULLS_LA", "PG_QUERY__TOKEN__NULLS_LA", 770 }, { "WITH_LA", "PG_QUERY__TOKEN__WITH_LA", 771 }, { "WITHOUT_LA", "PG_QUERY__TOKEN__WITHOUT_LA", 772 }, { "MODE_TYPE_NAME", "PG_QUERY__TOKEN__MODE_TYPE_NAME", 773 }, { "MODE_PLPGSQL_EXPR", "PG_QUERY__TOKEN__MODE_PLPGSQL_EXPR", 774 }, { "MODE_PLPGSQL_ASSIGN1", "PG_QUERY__TOKEN__MODE_PLPGSQL_ASSIGN1", 775 }, { "MODE_PLPGSQL_ASSIGN2", "PG_QUERY__TOKEN__MODE_PLPGSQL_ASSIGN2", 776 }, { "MODE_PLPGSQL_ASSIGN3", "PG_QUERY__TOKEN__MODE_PLPGSQL_ASSIGN3", 777 }, { "UMINUS", "PG_QUERY__TOKEN__UMINUS", 778 }, }; static const ProtobufCIntRange pg_query__token__value_ranges[] = { {0, 0},{36, 1},{40, 3},{58, 11},{91, 17},{258, 21},{0, 542} }; static const ProtobufCEnumValueIndex pg_query__token__enum_values_by_name[542] = { { "ABORT_P", 40 }, { "ABSENT", 41 }, { "ABSOLUTE_P", 42 }, { "ACCESS", 43 }, { "ACTION", 44 }, { "ADD_P", 45 }, { "ADMIN", 46 }, { "AFTER", 47 }, { "AGGREGATE", 48 }, { "ALL", 49 }, { "ALSO", 50 }, { "ALTER", 51 }, { "ALWAYS", 52 }, { "ANALYSE", 53 }, { "ANALYZE", 54 }, { "AND", 55 }, { "ANY", 56 }, { "ARRAY", 57 }, { "AS", 58 }, { "ASC", 59 }, { "ASCII_36", 1 }, { "ASCII_37", 2 }, { "ASCII_40", 3 }, { "ASCII_41", 4 }, { "ASCII_42", 5 }, { "ASCII_43", 6 }, { "ASCII_44", 7 }, { "ASCII_45", 8 }, { "ASCII_46", 9 }, { "ASCII_47", 10 }, { "ASCII_58", 11 }, { "ASCII_59", 12 }, { "ASCII_60", 13 }, { "ASCII_61", 14 }, { "ASCII_62", 15 }, { "ASCII_63", 16 }, { "ASCII_91", 17 }, { "ASCII_92", 18 }, { "ASCII_93", 19 }, { "ASCII_94", 20 }, { "ASENSITIVE", 60 }, { "ASSERTION", 61 }, { "ASSIGNMENT", 62 }, { "ASYMMETRIC", 63 }, { "AT", 65 }, { "ATOMIC", 64 }, { "ATTACH", 66 }, { "ATTRIBUTE", 67 }, { "AUTHORIZATION", 68 }, { "BACKWARD", 69 }, { "BCONST", 26 }, { "BEFORE", 70 }, { "BEGIN_P", 71 }, { "BETWEEN", 72 }, { "BIGINT", 73 }, { "BINARY", 74 }, { "BIT", 75 }, { "BOOLEAN_P", 76 }, { "BOTH", 77 }, { "BREADTH", 78 }, { "BY", 79 }, { "CACHE", 80 }, { "CALL", 81 }, { "CALLED", 82 }, { "CASCADE", 83 }, { "CASCADED", 84 }, { "CASE", 85 }, { "CAST", 86 }, { "CATALOG_P", 87 }, { "CHAIN", 88 }, { "CHARACTER", 90 }, { "CHARACTERISTICS", 91 }, { "CHAR_P", 89 }, { "CHECK", 92 }, { "CHECKPOINT", 93 }, { "CLASS", 94 }, { "CLOSE", 95 }, { "CLUSTER", 96 }, { "COALESCE", 97 }, { "COLLATE", 98 }, { "COLLATION", 99 }, { "COLON_EQUALS", 33 }, { "COLUMN", 100 }, { "COLUMNS", 101 }, { "COMMENT", 102 }, { "COMMENTS", 103 }, { "COMMIT", 104 }, { "COMMITTED", 105 }, { "COMPRESSION", 106 }, { "CONCURRENTLY", 107 }, { "CONDITIONAL", 108 }, { "CONFIGURATION", 109 }, { "CONFLICT", 110 }, { "CONNECTION", 111 }, { "CONSTRAINT", 112 }, { "CONSTRAINTS", 113 }, { "CONTENT_P", 114 }, { "CONTINUE_P", 115 }, { "CONVERSION_P", 116 }, { "COPY", 117 }, { "COST", 118 }, { "CREATE", 119 }, { "CROSS", 120 }, { "CSV", 121 }, { "CUBE", 122 }, { "CURRENT_CATALOG", 124 }, { "CURRENT_DATE", 125 }, { "CURRENT_P", 123 }, { "CURRENT_ROLE", 126 }, { "CURRENT_SCHEMA", 127 }, { "CURRENT_TIME", 128 }, { "CURRENT_TIMESTAMP", 129 }, { "CURRENT_USER", 130 }, { "CURSOR", 131 }, { "CYCLE", 132 }, { "C_COMMENT", 39 }, { "DATABASE", 134 }, { "DATA_P", 133 }, { "DAY_P", 135 }, { "DEALLOCATE", 136 }, { "DEC", 137 }, { "DECIMAL_P", 138 }, { "DECLARE", 139 }, { "DEFAULT", 140 }, { "DEFAULTS", 141 }, { "DEFERRABLE", 142 }, { "DEFERRED", 143 }, { "DEFINER", 144 }, { "DELETE_P", 145 }, { "DELIMITER", 146 }, { "DELIMITERS", 147 }, { "DEPENDS", 148 }, { "DEPTH", 149 }, { "DESC", 150 }, { "DETACH", 151 }, { "DICTIONARY", 152 }, { "DISABLE_P", 153 }, { "DISCARD", 154 }, { "DISTINCT", 155 }, { "DO", 156 }, { "DOCUMENT_P", 157 }, { "DOMAIN_P", 158 }, { "DOT_DOT", 32 }, { "DOUBLE_P", 159 }, { "DROP", 160 }, { "EACH", 161 }, { "ELSE", 162 }, { "EMPTY_P", 163 }, { "ENABLE_P", 164 }, { "ENCODING", 165 }, { "ENCRYPTED", 166 }, { "END_P", 167 }, { "ENUM_P", 168 }, { "EQUALS_GREATER", 34 }, { "ERROR_P", 169 }, { "ESCAPE", 170 }, { "EVENT", 171 }, { "EXCEPT", 172 }, { "EXCLUDE", 173 }, { "EXCLUDING", 174 }, { "EXCLUSIVE", 175 }, { "EXECUTE", 176 }, { "EXISTS", 177 }, { "EXPLAIN", 178 }, { "EXPRESSION", 179 }, { "EXTENSION", 180 }, { "EXTERNAL", 181 }, { "EXTRACT", 182 }, { "FALSE_P", 183 }, { "FAMILY", 184 }, { "FCONST", 23 }, { "FETCH", 185 }, { "FILTER", 186 }, { "FINALIZE", 187 }, { "FIRST_P", 188 }, { "FLOAT_P", 189 }, { "FOLLOWING", 190 }, { "FOR", 191 }, { "FORCE", 192 }, { "FOREIGN", 193 }, { "FORMAT", 194 }, { "FORMAT_LA", 531 }, { "FORWARD", 195 }, { "FREEZE", 196 }, { "FROM", 197 }, { "FULL", 198 }, { "FUNCTION", 199 }, { "FUNCTIONS", 200 }, { "GENERATED", 201 }, { "GLOBAL", 202 }, { "GRANT", 203 }, { "GRANTED", 204 }, { "GREATER_EQUALS", 36 }, { "GREATEST", 205 }, { "GROUPING", 207 }, { "GROUPS", 208 }, { "GROUP_P", 206 }, { "HANDLER", 209 }, { "HAVING", 210 }, { "HEADER_P", 211 }, { "HOLD", 212 }, { "HOUR_P", 213 }, { "ICONST", 29 }, { "IDENT", 21 }, { "IDENTITY_P", 214 }, { "IF_P", 215 }, { "ILIKE", 216 }, { "IMMEDIATE", 217 }, { "IMMUTABLE", 218 }, { "IMPLICIT_P", 219 }, { "IMPORT_P", 220 }, { "INCLUDE", 222 }, { "INCLUDING", 223 }, { "INCREMENT", 224 }, { "INDENT", 225 }, { "INDEX", 226 }, { "INDEXES", 227 }, { "INHERIT", 228 }, { "INHERITS", 229 }, { "INITIALLY", 230 }, { "INLINE_P", 231 }, { "INNER_P", 232 }, { "INOUT", 233 }, { "INPUT_P", 234 }, { "INSENSITIVE", 235 }, { "INSERT", 236 }, { "INSTEAD", 237 }, { "INTEGER", 239 }, { "INTERSECT", 240 }, { "INTERVAL", 241 }, { "INTO", 242 }, { "INT_P", 238 }, { "INVOKER", 243 }, { "IN_P", 221 }, { "IS", 244 }, { "ISNULL", 245 }, { "ISOLATION", 246 }, { "JOIN", 247 }, { "JSON", 248 }, { "JSON_ARRAY", 249 }, { "JSON_ARRAYAGG", 250 }, { "JSON_EXISTS", 251 }, { "JSON_OBJECT", 252 }, { "JSON_OBJECTAGG", 253 }, { "JSON_QUERY", 254 }, { "JSON_SCALAR", 255 }, { "JSON_SERIALIZE", 256 }, { "JSON_TABLE", 257 }, { "JSON_VALUE", 258 }, { "KEEP", 259 }, { "KEY", 260 }, { "KEYS", 261 }, { "LABEL", 262 }, { "LANGUAGE", 263 }, { "LARGE_P", 264 }, { "LAST_P", 265 }, { "LATERAL_P", 266 }, { "LEADING", 267 }, { "LEAKPROOF", 268 }, { "LEAST", 269 }, { "LEFT", 270 }, { "LESS_EQUALS", 35 }, { "LEVEL", 271 }, { "LIKE", 272 }, { "LIMIT", 273 }, { "LISTEN", 274 }, { "LOAD", 275 }, { "LOCAL", 276 }, { "LOCALTIME", 277 }, { "LOCALTIMESTAMP", 278 }, { "LOCATION", 279 }, { "LOCKED", 281 }, { "LOCK_P", 280 }, { "LOGGED", 282 }, { "MAPPING", 283 }, { "MATCH", 284 }, { "MATCHED", 285 }, { "MATERIALIZED", 286 }, { "MAXVALUE", 287 }, { "MERGE", 288 }, { "MERGE_ACTION", 289 }, { "METHOD", 290 }, { "MINUTE_P", 291 }, { "MINVALUE", 292 }, { "MODE", 293 }, { "MODE_PLPGSQL_ASSIGN1", 538 }, { "MODE_PLPGSQL_ASSIGN2", 539 }, { "MODE_PLPGSQL_ASSIGN3", 540 }, { "MODE_PLPGSQL_EXPR", 537 }, { "MODE_TYPE_NAME", 536 }, { "MONTH_P", 294 }, { "MOVE", 295 }, { "NAMES", 297 }, { "NAME_P", 296 }, { "NATIONAL", 298 }, { "NATURAL", 299 }, { "NCHAR", 300 }, { "NESTED", 301 }, { "NEW", 302 }, { "NEXT", 303 }, { "NFC", 304 }, { "NFD", 305 }, { "NFKC", 306 }, { "NFKD", 307 }, { "NO", 308 }, { "NONE", 309 }, { "NORMALIZE", 310 }, { "NORMALIZED", 311 }, { "NOT", 312 }, { "NOTHING", 313 }, { "NOTIFY", 314 }, { "NOTNULL", 315 }, { "NOT_EQUALS", 37 }, { "NOT_LA", 532 }, { "NOWAIT", 316 }, { "NUL", 0 }, { "NULLIF", 318 }, { "NULLS_LA", 533 }, { "NULLS_P", 319 }, { "NULL_P", 317 }, { "NUMERIC", 320 }, { "OBJECT_P", 321 }, { "OF", 322 }, { "OFF", 323 }, { "OFFSET", 324 }, { "OIDS", 325 }, { "OLD", 326 }, { "OMIT", 327 }, { "ON", 328 }, { "ONLY", 329 }, { "OPERATOR", 330 }, { "OPTION", 331 }, { "OPTIONS", 332 }, { "OR", 333 }, { "ORDER", 334 }, { "ORDINALITY", 335 }, { "OTHERS", 336 }, { "OUTER_P", 338 }, { "OUT_P", 337 }, { "OVER", 339 }, { "OVERLAPS", 340 }, { "OVERLAY", 341 }, { "OVERRIDING", 342 }, { "OWNED", 343 }, { "OWNER", 344 }, { "Op", 28 }, { "PARALLEL", 345 }, { "PARAM", 30 }, { "PARAMETER", 346 }, { "PARSER", 347 }, { "PARTIAL", 348 }, { "PARTITION", 349 }, { "PASSING", 350 }, { "PASSWORD", 351 }, { "PATH", 352 }, { "PLACING", 353 }, { "PLAN", 354 }, { "PLANS", 355 }, { "POLICY", 356 }, { "POSITION", 357 }, { "PRECEDING", 358 }, { "PRECISION", 359 }, { "PREPARE", 361 }, { "PREPARED", 362 }, { "PRESERVE", 360 }, { "PRIMARY", 363 }, { "PRIOR", 364 }, { "PRIVILEGES", 365 }, { "PROCEDURAL", 366 }, { "PROCEDURE", 367 }, { "PROCEDURES", 368 }, { "PROGRAM", 369 }, { "PUBLICATION", 370 }, { "QUOTE", 371 }, { "QUOTES", 372 }, { "RANGE", 373 }, { "READ", 374 }, { "REAL", 375 }, { "REASSIGN", 376 }, { "RECHECK", 377 }, { "RECURSIVE", 378 }, { "REFERENCES", 380 }, { "REFERENCING", 381 }, { "REFRESH", 382 }, { "REF_P", 379 }, { "REINDEX", 383 }, { "RELATIVE_P", 384 }, { "RELEASE", 385 }, { "RENAME", 386 }, { "REPEATABLE", 387 }, { "REPLACE", 388 }, { "REPLICA", 389 }, { "RESET", 390 }, { "RESTART", 391 }, { "RESTRICT", 392 }, { "RETURN", 393 }, { "RETURNING", 394 }, { "RETURNS", 395 }, { "REVOKE", 396 }, { "RIGHT", 397 }, { "ROLE", 398 }, { "ROLLBACK", 399 }, { "ROLLUP", 400 }, { "ROUTINE", 401 }, { "ROUTINES", 402 }, { "ROW", 403 }, { "ROWS", 404 }, { "RULE", 405 }, { "SAVEPOINT", 406 }, { "SCALAR", 407 }, { "SCHEMA", 408 }, { "SCHEMAS", 409 }, { "SCONST", 24 }, { "SCROLL", 410 }, { "SEARCH", 411 }, { "SECOND_P", 412 }, { "SECURITY", 413 }, { "SELECT", 414 }, { "SEQUENCE", 415 }, { "SEQUENCES", 416 }, { "SERIALIZABLE", 417 }, { "SERVER", 418 }, { "SESSION", 419 }, { "SESSION_USER", 420 }, { "SET", 421 }, { "SETOF", 423 }, { "SETS", 422 }, { "SHARE", 424 }, { "SHOW", 425 }, { "SIMILAR", 426 }, { "SIMPLE", 427 }, { "SKIP", 428 }, { "SMALLINT", 429 }, { "SNAPSHOT", 430 }, { "SOME", 431 }, { "SOURCE", 432 }, { "SQL_COMMENT", 38 }, { "SQL_P", 433 }, { "STABLE", 434 }, { "STANDALONE_P", 435 }, { "START", 436 }, { "STATEMENT", 437 }, { "STATISTICS", 438 }, { "STDIN", 439 }, { "STDOUT", 440 }, { "STORAGE", 441 }, { "STORED", 442 }, { "STRICT_P", 443 }, { "STRING_P", 444 }, { "STRIP_P", 445 }, { "SUBSCRIPTION", 446 }, { "SUBSTRING", 447 }, { "SUPPORT", 448 }, { "SYMMETRIC", 449 }, { "SYSID", 450 }, { "SYSTEM_P", 451 }, { "SYSTEM_USER", 452 }, { "TABLE", 453 }, { "TABLES", 454 }, { "TABLESAMPLE", 455 }, { "TABLESPACE", 456 }, { "TARGET", 457 }, { "TEMP", 458 }, { "TEMPLATE", 459 }, { "TEMPORARY", 460 }, { "TEXT_P", 461 }, { "THEN", 462 }, { "TIES", 463 }, { "TIME", 464 }, { "TIMESTAMP", 465 }, { "TO", 466 }, { "TRAILING", 467 }, { "TRANSACTION", 468 }, { "TRANSFORM", 469 }, { "TREAT", 470 }, { "TRIGGER", 471 }, { "TRIM", 472 }, { "TRUE_P", 473 }, { "TRUNCATE", 474 }, { "TRUSTED", 475 }, { "TYPECAST", 31 }, { "TYPES_P", 477 }, { "TYPE_P", 476 }, { "UESCAPE", 478 }, { "UIDENT", 22 }, { "UMINUS", 541 }, { "UNBOUNDED", 479 }, { "UNCOMMITTED", 481 }, { "UNCONDITIONAL", 480 }, { "UNENCRYPTED", 482 }, { "UNION", 483 }, { "UNIQUE", 484 }, { "UNKNOWN", 485 }, { "UNLISTEN", 486 }, { "UNLOGGED", 487 }, { "UNTIL", 488 }, { "UPDATE", 489 }, { "USCONST", 25 }, { "USER", 490 }, { "USING", 491 }, { "VACUUM", 492 }, { "VALID", 493 }, { "VALIDATE", 494 }, { "VALIDATOR", 495 }, { "VALUES", 497 }, { "VALUE_P", 496 }, { "VARCHAR", 498 }, { "VARIADIC", 499 }, { "VARYING", 500 }, { "VERBOSE", 501 }, { "VERSION_P", 502 }, { "VIEW", 503 }, { "VIEWS", 504 }, { "VOLATILE", 505 }, { "WHEN", 506 }, { "WHERE", 507 }, { "WHITESPACE_P", 508 }, { "WINDOW", 509 }, { "WITH", 510 }, { "WITHIN", 511 }, { "WITHOUT", 512 }, { "WITHOUT_LA", 535 }, { "WITH_LA", 534 }, { "WORK", 513 }, { "WRAPPER", 514 }, { "WRITE", 515 }, { "XCONST", 27 }, { "XMLATTRIBUTES", 517 }, { "XMLCONCAT", 518 }, { "XMLELEMENT", 519 }, { "XMLEXISTS", 520 }, { "XMLFOREST", 521 }, { "XMLNAMESPACES", 522 }, { "XMLPARSE", 523 }, { "XMLPI", 524 }, { "XMLROOT", 525 }, { "XMLSERIALIZE", 526 }, { "XMLTABLE", 527 }, { "XML_P", 516 }, { "YEAR_P", 528 }, { "YES_P", 529 }, { "ZONE", 530 }, }; const ProtobufCEnumDescriptor pg_query__token__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.Token", "Token", "PgQuery__Token", "pg_query", 542, pg_query__token__enum_values_by_number, 542, pg_query__token__enum_values_by_name, 6, pg_query__token__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; libpg_query-17-6.1.0/protobuf/pg_query.pb-c.h000066400000000000000000020211321477334012600207610ustar00rootroot00000000000000/* 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 1005000 < 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__Boolean PgQuery__Boolean; typedef struct PgQuery__String PgQuery__String; typedef struct PgQuery__BitString PgQuery__BitString; typedef struct PgQuery__List PgQuery__List; typedef struct PgQuery__OidList PgQuery__OidList; typedef struct PgQuery__IntList PgQuery__IntList; typedef struct PgQuery__AConst PgQuery__AConst; typedef struct PgQuery__Alias PgQuery__Alias; typedef struct PgQuery__RangeVar PgQuery__RangeVar; typedef struct PgQuery__TableFunc PgQuery__TableFunc; typedef struct PgQuery__IntoClause PgQuery__IntoClause; 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__WindowFuncRunCondition PgQuery__WindowFuncRunCondition; typedef struct PgQuery__MergeSupportFunc PgQuery__MergeSupportFunc; 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__JsonFormat PgQuery__JsonFormat; typedef struct PgQuery__JsonReturning PgQuery__JsonReturning; typedef struct PgQuery__JsonValueExpr PgQuery__JsonValueExpr; typedef struct PgQuery__JsonConstructorExpr PgQuery__JsonConstructorExpr; typedef struct PgQuery__JsonIsPredicate PgQuery__JsonIsPredicate; typedef struct PgQuery__JsonBehavior PgQuery__JsonBehavior; typedef struct PgQuery__JsonExpr PgQuery__JsonExpr; typedef struct PgQuery__JsonTablePath PgQuery__JsonTablePath; typedef struct PgQuery__JsonTablePathScan PgQuery__JsonTablePathScan; typedef struct PgQuery__JsonTableSiblingJoin PgQuery__JsonTableSiblingJoin; typedef struct PgQuery__NullTest PgQuery__NullTest; typedef struct PgQuery__BooleanTest PgQuery__BooleanTest; typedef struct PgQuery__MergeAction PgQuery__MergeAction; 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__Query PgQuery__Query; typedef struct PgQuery__TypeName PgQuery__TypeName; typedef struct PgQuery__ColumnRef PgQuery__ColumnRef; typedef struct PgQuery__ParamRef PgQuery__ParamRef; typedef struct PgQuery__AExpr PgQuery__AExpr; typedef struct PgQuery__TypeCast PgQuery__TypeCast; typedef struct PgQuery__CollateClause PgQuery__CollateClause; typedef struct PgQuery__RoleSpec PgQuery__RoleSpec; 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__SortBy PgQuery__SortBy; typedef struct PgQuery__WindowDef PgQuery__WindowDef; typedef struct PgQuery__RangeSubselect PgQuery__RangeSubselect; typedef struct PgQuery__RangeFunction PgQuery__RangeFunction; typedef struct PgQuery__RangeTableFunc PgQuery__RangeTableFunc; typedef struct PgQuery__RangeTableFuncCol PgQuery__RangeTableFuncCol; typedef struct PgQuery__RangeTableSample PgQuery__RangeTableSample; typedef struct PgQuery__ColumnDef PgQuery__ColumnDef; typedef struct PgQuery__TableLikeClause PgQuery__TableLikeClause; typedef struct PgQuery__IndexElem PgQuery__IndexElem; typedef struct PgQuery__DefElem PgQuery__DefElem; typedef struct PgQuery__LockingClause PgQuery__LockingClause; typedef struct PgQuery__XmlSerialize PgQuery__XmlSerialize; 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__SinglePartitionSpec PgQuery__SinglePartitionSpec; typedef struct PgQuery__PartitionCmd PgQuery__PartitionCmd; typedef struct PgQuery__RangeTblEntry PgQuery__RangeTblEntry; typedef struct PgQuery__RTEPermissionInfo PgQuery__RTEPermissionInfo; 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__RowMarkClause PgQuery__RowMarkClause; typedef struct PgQuery__WithClause PgQuery__WithClause; typedef struct PgQuery__InferClause PgQuery__InferClause; typedef struct PgQuery__OnConflictClause PgQuery__OnConflictClause; typedef struct PgQuery__CTESearchClause PgQuery__CTESearchClause; typedef struct PgQuery__CTECycleClause PgQuery__CTECycleClause; typedef struct PgQuery__CommonTableExpr PgQuery__CommonTableExpr; typedef struct PgQuery__MergeWhenClause PgQuery__MergeWhenClause; typedef struct PgQuery__TriggerTransition PgQuery__TriggerTransition; typedef struct PgQuery__JsonOutput PgQuery__JsonOutput; typedef struct PgQuery__JsonArgument PgQuery__JsonArgument; typedef struct PgQuery__JsonFuncExpr PgQuery__JsonFuncExpr; typedef struct PgQuery__JsonTablePathSpec PgQuery__JsonTablePathSpec; typedef struct PgQuery__JsonTable PgQuery__JsonTable; typedef struct PgQuery__JsonTableColumn PgQuery__JsonTableColumn; typedef struct PgQuery__JsonKeyValue PgQuery__JsonKeyValue; typedef struct PgQuery__JsonParseExpr PgQuery__JsonParseExpr; typedef struct PgQuery__JsonScalarExpr PgQuery__JsonScalarExpr; typedef struct PgQuery__JsonSerializeExpr PgQuery__JsonSerializeExpr; typedef struct PgQuery__JsonObjectConstructor PgQuery__JsonObjectConstructor; typedef struct PgQuery__JsonArrayConstructor PgQuery__JsonArrayConstructor; typedef struct PgQuery__JsonArrayQueryConstructor PgQuery__JsonArrayQueryConstructor; typedef struct PgQuery__JsonAggConstructor PgQuery__JsonAggConstructor; typedef struct PgQuery__JsonObjectAgg PgQuery__JsonObjectAgg; typedef struct PgQuery__JsonArrayAgg PgQuery__JsonArrayAgg; typedef struct PgQuery__RawStmt PgQuery__RawStmt; typedef struct PgQuery__InsertStmt PgQuery__InsertStmt; typedef struct PgQuery__DeleteStmt PgQuery__DeleteStmt; typedef struct PgQuery__UpdateStmt PgQuery__UpdateStmt; typedef struct PgQuery__MergeStmt PgQuery__MergeStmt; typedef struct PgQuery__SelectStmt PgQuery__SelectStmt; typedef struct PgQuery__SetOperationStmt PgQuery__SetOperationStmt; typedef struct PgQuery__ReturnStmt PgQuery__ReturnStmt; typedef struct PgQuery__PLAssignStmt PgQuery__PLAssignStmt; typedef struct PgQuery__CreateSchemaStmt PgQuery__CreateSchemaStmt; typedef struct PgQuery__AlterTableStmt PgQuery__AlterTableStmt; typedef struct PgQuery__ReplicaIdentityStmt PgQuery__ReplicaIdentityStmt; typedef struct PgQuery__AlterTableCmd PgQuery__AlterTableCmd; typedef struct PgQuery__AlterCollationStmt PgQuery__AlterCollationStmt; typedef struct PgQuery__AlterDomainStmt PgQuery__AlterDomainStmt; typedef struct PgQuery__GrantStmt PgQuery__GrantStmt; typedef struct PgQuery__ObjectWithArgs PgQuery__ObjectWithArgs; typedef struct PgQuery__AccessPriv PgQuery__AccessPriv; typedef struct PgQuery__GrantRoleStmt PgQuery__GrantRoleStmt; typedef struct PgQuery__AlterDefaultPrivilegesStmt PgQuery__AlterDefaultPrivilegesStmt; typedef struct PgQuery__CopyStmt PgQuery__CopyStmt; typedef struct PgQuery__VariableSetStmt PgQuery__VariableSetStmt; typedef struct PgQuery__VariableShowStmt PgQuery__VariableShowStmt; typedef struct PgQuery__CreateStmt PgQuery__CreateStmt; typedef struct PgQuery__Constraint PgQuery__Constraint; typedef struct PgQuery__CreateTableSpaceStmt PgQuery__CreateTableSpaceStmt; typedef struct PgQuery__DropTableSpaceStmt PgQuery__DropTableSpaceStmt; typedef struct PgQuery__AlterTableSpaceOptionsStmt PgQuery__AlterTableSpaceOptionsStmt; typedef struct PgQuery__AlterTableMoveAllStmt PgQuery__AlterTableMoveAllStmt; typedef struct PgQuery__CreateExtensionStmt PgQuery__CreateExtensionStmt; typedef struct PgQuery__AlterExtensionStmt PgQuery__AlterExtensionStmt; typedef struct PgQuery__AlterExtensionContentsStmt PgQuery__AlterExtensionContentsStmt; 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__CreateForeignTableStmt PgQuery__CreateForeignTableStmt; typedef struct PgQuery__CreateUserMappingStmt PgQuery__CreateUserMappingStmt; typedef struct PgQuery__AlterUserMappingStmt PgQuery__AlterUserMappingStmt; typedef struct PgQuery__DropUserMappingStmt PgQuery__DropUserMappingStmt; typedef struct PgQuery__ImportForeignSchemaStmt PgQuery__ImportForeignSchemaStmt; typedef struct PgQuery__CreatePolicyStmt PgQuery__CreatePolicyStmt; typedef struct PgQuery__AlterPolicyStmt PgQuery__AlterPolicyStmt; typedef struct PgQuery__CreateAmStmt PgQuery__CreateAmStmt; typedef struct PgQuery__CreateTrigStmt PgQuery__CreateTrigStmt; typedef struct PgQuery__CreateEventTrigStmt PgQuery__CreateEventTrigStmt; typedef struct PgQuery__AlterEventTrigStmt PgQuery__AlterEventTrigStmt; typedef struct PgQuery__CreatePLangStmt PgQuery__CreatePLangStmt; typedef struct PgQuery__CreateRoleStmt PgQuery__CreateRoleStmt; typedef struct PgQuery__AlterRoleStmt PgQuery__AlterRoleStmt; typedef struct PgQuery__AlterRoleSetStmt PgQuery__AlterRoleSetStmt; typedef struct PgQuery__DropRoleStmt PgQuery__DropRoleStmt; typedef struct PgQuery__CreateSeqStmt PgQuery__CreateSeqStmt; typedef struct PgQuery__AlterSeqStmt PgQuery__AlterSeqStmt; typedef struct PgQuery__DefineStmt PgQuery__DefineStmt; typedef struct PgQuery__CreateDomainStmt PgQuery__CreateDomainStmt; typedef struct PgQuery__CreateOpClassStmt PgQuery__CreateOpClassStmt; typedef struct PgQuery__CreateOpClassItem PgQuery__CreateOpClassItem; typedef struct PgQuery__CreateOpFamilyStmt PgQuery__CreateOpFamilyStmt; typedef struct PgQuery__AlterOpFamilyStmt PgQuery__AlterOpFamilyStmt; typedef struct PgQuery__DropStmt PgQuery__DropStmt; typedef struct PgQuery__TruncateStmt PgQuery__TruncateStmt; typedef struct PgQuery__CommentStmt PgQuery__CommentStmt; typedef struct PgQuery__SecLabelStmt PgQuery__SecLabelStmt; typedef struct PgQuery__DeclareCursorStmt PgQuery__DeclareCursorStmt; typedef struct PgQuery__ClosePortalStmt PgQuery__ClosePortalStmt; typedef struct PgQuery__FetchStmt PgQuery__FetchStmt; typedef struct PgQuery__IndexStmt PgQuery__IndexStmt; typedef struct PgQuery__CreateStatsStmt PgQuery__CreateStatsStmt; typedef struct PgQuery__StatsElem PgQuery__StatsElem; typedef struct PgQuery__AlterStatsStmt PgQuery__AlterStatsStmt; typedef struct PgQuery__CreateFunctionStmt PgQuery__CreateFunctionStmt; typedef struct PgQuery__FunctionParameter PgQuery__FunctionParameter; typedef struct PgQuery__AlterFunctionStmt PgQuery__AlterFunctionStmt; typedef struct PgQuery__DoStmt PgQuery__DoStmt; typedef struct PgQuery__InlineCodeBlock PgQuery__InlineCodeBlock; typedef struct PgQuery__CallStmt PgQuery__CallStmt; typedef struct PgQuery__CallContext PgQuery__CallContext; typedef struct PgQuery__RenameStmt PgQuery__RenameStmt; 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__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__CompositeTypeStmt PgQuery__CompositeTypeStmt; typedef struct PgQuery__CreateEnumStmt PgQuery__CreateEnumStmt; typedef struct PgQuery__CreateRangeStmt PgQuery__CreateRangeStmt; typedef struct PgQuery__AlterEnumStmt PgQuery__AlterEnumStmt; typedef struct PgQuery__ViewStmt PgQuery__ViewStmt; typedef struct PgQuery__LoadStmt PgQuery__LoadStmt; typedef struct PgQuery__CreatedbStmt PgQuery__CreatedbStmt; typedef struct PgQuery__AlterDatabaseStmt PgQuery__AlterDatabaseStmt; typedef struct PgQuery__AlterDatabaseRefreshCollStmt PgQuery__AlterDatabaseRefreshCollStmt; typedef struct PgQuery__AlterDatabaseSetStmt PgQuery__AlterDatabaseSetStmt; typedef struct PgQuery__DropdbStmt PgQuery__DropdbStmt; typedef struct PgQuery__AlterSystemStmt PgQuery__AlterSystemStmt; typedef struct PgQuery__ClusterStmt PgQuery__ClusterStmt; typedef struct PgQuery__VacuumStmt PgQuery__VacuumStmt; typedef struct PgQuery__VacuumRelation PgQuery__VacuumRelation; typedef struct PgQuery__ExplainStmt PgQuery__ExplainStmt; typedef struct PgQuery__CreateTableAsStmt PgQuery__CreateTableAsStmt; typedef struct PgQuery__RefreshMatViewStmt PgQuery__RefreshMatViewStmt; typedef struct PgQuery__CheckPointStmt PgQuery__CheckPointStmt; typedef struct PgQuery__DiscardStmt PgQuery__DiscardStmt; typedef struct PgQuery__LockStmt PgQuery__LockStmt; typedef struct PgQuery__ConstraintsSetStmt PgQuery__ConstraintsSetStmt; typedef struct PgQuery__ReindexStmt PgQuery__ReindexStmt; typedef struct PgQuery__CreateConversionStmt PgQuery__CreateConversionStmt; typedef struct PgQuery__CreateCastStmt PgQuery__CreateCastStmt; typedef struct PgQuery__CreateTransformStmt PgQuery__CreateTransformStmt; typedef struct PgQuery__PrepareStmt PgQuery__PrepareStmt; typedef struct PgQuery__ExecuteStmt PgQuery__ExecuteStmt; typedef struct PgQuery__DeallocateStmt PgQuery__DeallocateStmt; typedef struct PgQuery__DropOwnedStmt PgQuery__DropOwnedStmt; typedef struct PgQuery__ReassignOwnedStmt PgQuery__ReassignOwnedStmt; typedef struct PgQuery__AlterTSDictionaryStmt PgQuery__AlterTSDictionaryStmt; typedef struct PgQuery__AlterTSConfigurationStmt PgQuery__AlterTSConfigurationStmt; typedef struct PgQuery__PublicationTable PgQuery__PublicationTable; typedef struct PgQuery__PublicationObjSpec PgQuery__PublicationObjSpec; 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__ScanToken PgQuery__ScanToken; /* --- enums --- */ 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__SetQuantifier { PG_QUERY__SET_QUANTIFIER__SET_QUANTIFIER_UNDEFINED = 0, PG_QUERY__SET_QUANTIFIER__SET_QUANTIFIER_DEFAULT = 1, PG_QUERY__SET_QUANTIFIER__SET_QUANTIFIER_ALL = 2, PG_QUERY__SET_QUANTIFIER__SET_QUANTIFIER_DISTINCT = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SET_QUANTIFIER) } PgQuery__SetQuantifier; 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_IN = 7, PG_QUERY__A__EXPR__KIND__AEXPR_LIKE = 8, PG_QUERY__A__EXPR__KIND__AEXPR_ILIKE = 9, PG_QUERY__A__EXPR__KIND__AEXPR_SIMILAR = 10, PG_QUERY__A__EXPR__KIND__AEXPR_BETWEEN = 11, PG_QUERY__A__EXPR__KIND__AEXPR_NOT_BETWEEN = 12, PG_QUERY__A__EXPR__KIND__AEXPR_BETWEEN_SYM = 13, PG_QUERY__A__EXPR__KIND__AEXPR_NOT_BETWEEN_SYM = 14 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_ROLE = 2, PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_CURRENT_USER = 3, PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_SESSION_USER = 4, PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_PUBLIC = 5 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_COMPRESSION = 2, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_CONSTRAINTS = 3, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_DEFAULTS = 4, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_GENERATED = 5, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_IDENTITY = 6, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_INDEXES = 7, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_STATISTICS = 8, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_STORAGE = 9, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_ALL = 10 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__PartitionStrategy { PG_QUERY__PARTITION_STRATEGY__PARTITION_STRATEGY_UNDEFINED = 0, PG_QUERY__PARTITION_STRATEGY__PARTITION_STRATEGY_LIST = 1, PG_QUERY__PARTITION_STRATEGY__PARTITION_STRATEGY_RANGE = 2, PG_QUERY__PARTITION_STRATEGY__PARTITION_STRATEGY_HASH = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__PARTITION_STRATEGY) } PgQuery__PartitionStrategy; 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, PG_QUERY__WCOKIND__WCO_RLS_MERGE_UPDATE_CHECK = 5, PG_QUERY__WCOKIND__WCO_RLS_MERGE_DELETE_CHECK = 6 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__JsonQuotes { PG_QUERY__JSON_QUOTES__JSON_QUOTES_UNDEFINED = 0, PG_QUERY__JSON_QUOTES__JS_QUOTES_UNSPEC = 1, PG_QUERY__JSON_QUOTES__JS_QUOTES_KEEP = 2, PG_QUERY__JSON_QUOTES__JS_QUOTES_OMIT = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__JSON_QUOTES) } PgQuery__JsonQuotes; typedef enum _PgQuery__JsonTableColumnType { PG_QUERY__JSON_TABLE_COLUMN_TYPE__JSON_TABLE_COLUMN_TYPE_UNDEFINED = 0, PG_QUERY__JSON_TABLE_COLUMN_TYPE__JTC_FOR_ORDINALITY = 1, PG_QUERY__JSON_TABLE_COLUMN_TYPE__JTC_REGULAR = 2, PG_QUERY__JSON_TABLE_COLUMN_TYPE__JTC_EXISTS = 3, PG_QUERY__JSON_TABLE_COLUMN_TYPE__JTC_FORMATTED = 4, PG_QUERY__JSON_TABLE_COLUMN_TYPE__JTC_NESTED = 5 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__JSON_TABLE_COLUMN_TYPE) } PgQuery__JsonTableColumnType; 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_PARAMETER_ACL = 28, PG_QUERY__OBJECT_TYPE__OBJECT_POLICY = 29, PG_QUERY__OBJECT_TYPE__OBJECT_PROCEDURE = 30, PG_QUERY__OBJECT_TYPE__OBJECT_PUBLICATION = 31, PG_QUERY__OBJECT_TYPE__OBJECT_PUBLICATION_NAMESPACE = 32, PG_QUERY__OBJECT_TYPE__OBJECT_PUBLICATION_REL = 33, PG_QUERY__OBJECT_TYPE__OBJECT_ROLE = 34, PG_QUERY__OBJECT_TYPE__OBJECT_ROUTINE = 35, PG_QUERY__OBJECT_TYPE__OBJECT_RULE = 36, PG_QUERY__OBJECT_TYPE__OBJECT_SCHEMA = 37, PG_QUERY__OBJECT_TYPE__OBJECT_SEQUENCE = 38, PG_QUERY__OBJECT_TYPE__OBJECT_SUBSCRIPTION = 39, PG_QUERY__OBJECT_TYPE__OBJECT_STATISTIC_EXT = 40, PG_QUERY__OBJECT_TYPE__OBJECT_TABCONSTRAINT = 41, PG_QUERY__OBJECT_TYPE__OBJECT_TABLE = 42, PG_QUERY__OBJECT_TYPE__OBJECT_TABLESPACE = 43, PG_QUERY__OBJECT_TYPE__OBJECT_TRANSFORM = 44, PG_QUERY__OBJECT_TYPE__OBJECT_TRIGGER = 45, PG_QUERY__OBJECT_TYPE__OBJECT_TSCONFIGURATION = 46, PG_QUERY__OBJECT_TYPE__OBJECT_TSDICTIONARY = 47, PG_QUERY__OBJECT_TYPE__OBJECT_TSPARSER = 48, PG_QUERY__OBJECT_TYPE__OBJECT_TSTEMPLATE = 49, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE = 50, PG_QUERY__OBJECT_TYPE__OBJECT_USER_MAPPING = 51, PG_QUERY__OBJECT_TYPE__OBJECT_VIEW = 52 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_AddColumnToView = 2, PG_QUERY__ALTER_TABLE_TYPE__AT_ColumnDefault = 3, PG_QUERY__ALTER_TABLE_TYPE__AT_CookedColumnDefault = 4, PG_QUERY__ALTER_TABLE_TYPE__AT_DropNotNull = 5, PG_QUERY__ALTER_TABLE_TYPE__AT_SetNotNull = 6, PG_QUERY__ALTER_TABLE_TYPE__AT_SetExpression = 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_SetCompression = 14, PG_QUERY__ALTER_TABLE_TYPE__AT_DropColumn = 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_ReAddConstraint = 19, PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddDomainConstraint = 20, PG_QUERY__ALTER_TABLE_TYPE__AT_AlterConstraint = 21, PG_QUERY__ALTER_TABLE_TYPE__AT_ValidateConstraint = 22, PG_QUERY__ALTER_TABLE_TYPE__AT_AddIndexConstraint = 23, PG_QUERY__ALTER_TABLE_TYPE__AT_DropConstraint = 24, PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddComment = 25, PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnType = 26, PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnGenericOptions = 27, PG_QUERY__ALTER_TABLE_TYPE__AT_ChangeOwner = 28, PG_QUERY__ALTER_TABLE_TYPE__AT_ClusterOn = 29, PG_QUERY__ALTER_TABLE_TYPE__AT_DropCluster = 30, PG_QUERY__ALTER_TABLE_TYPE__AT_SetLogged = 31, PG_QUERY__ALTER_TABLE_TYPE__AT_SetUnLogged = 32, PG_QUERY__ALTER_TABLE_TYPE__AT_DropOids = 33, PG_QUERY__ALTER_TABLE_TYPE__AT_SetAccessMethod = 34, PG_QUERY__ALTER_TABLE_TYPE__AT_SetTableSpace = 35, PG_QUERY__ALTER_TABLE_TYPE__AT_SetRelOptions = 36, PG_QUERY__ALTER_TABLE_TYPE__AT_ResetRelOptions = 37, PG_QUERY__ALTER_TABLE_TYPE__AT_ReplaceRelOptions = 38, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrig = 39, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysTrig = 40, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaTrig = 41, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrig = 42, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigAll = 43, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigAll = 44, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigUser = 45, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigUser = 46, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRule = 47, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysRule = 48, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaRule = 49, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRule = 50, PG_QUERY__ALTER_TABLE_TYPE__AT_AddInherit = 51, PG_QUERY__ALTER_TABLE_TYPE__AT_DropInherit = 52, PG_QUERY__ALTER_TABLE_TYPE__AT_AddOf = 53, PG_QUERY__ALTER_TABLE_TYPE__AT_DropOf = 54, PG_QUERY__ALTER_TABLE_TYPE__AT_ReplicaIdentity = 55, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRowSecurity = 56, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRowSecurity = 57, PG_QUERY__ALTER_TABLE_TYPE__AT_ForceRowSecurity = 58, PG_QUERY__ALTER_TABLE_TYPE__AT_NoForceRowSecurity = 59, PG_QUERY__ALTER_TABLE_TYPE__AT_GenericOptions = 60, PG_QUERY__ALTER_TABLE_TYPE__AT_AttachPartition = 61, PG_QUERY__ALTER_TABLE_TYPE__AT_DetachPartition = 62, PG_QUERY__ALTER_TABLE_TYPE__AT_DetachPartitionFinalize = 63, PG_QUERY__ALTER_TABLE_TYPE__AT_AddIdentity = 64, PG_QUERY__ALTER_TABLE_TYPE__AT_SetIdentity = 65, PG_QUERY__ALTER_TABLE_TYPE__AT_DropIdentity = 66, PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddStatistics = 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, PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_DEFAULT = 6 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__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__PublicationObjSpecType { PG_QUERY__PUBLICATION_OBJ_SPEC_TYPE__PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED = 0, PG_QUERY__PUBLICATION_OBJ_SPEC_TYPE__PUBLICATIONOBJ_TABLE = 1, PG_QUERY__PUBLICATION_OBJ_SPEC_TYPE__PUBLICATIONOBJ_TABLES_IN_SCHEMA = 2, PG_QUERY__PUBLICATION_OBJ_SPEC_TYPE__PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA = 3, PG_QUERY__PUBLICATION_OBJ_SPEC_TYPE__PUBLICATIONOBJ_CONTINUATION = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__PUBLICATION_OBJ_SPEC_TYPE) } PgQuery__PublicationObjSpecType; typedef enum _PgQuery__AlterPublicationAction { PG_QUERY__ALTER_PUBLICATION_ACTION__ALTER_PUBLICATION_ACTION_UNDEFINED = 0, PG_QUERY__ALTER_PUBLICATION_ACTION__AP_AddObjects = 1, PG_QUERY__ALTER_PUBLICATION_ACTION__AP_DropObjects = 2, PG_QUERY__ALTER_PUBLICATION_ACTION__AP_SetObjects = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ALTER_PUBLICATION_ACTION) } PgQuery__AlterPublicationAction; 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_SET_PUBLICATION = 3, PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_ADD_PUBLICATION = 4, PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_DROP_PUBLICATION = 5, PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_REFRESH = 6, PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_ENABLED = 7, PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_SKIP = 8 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ALTER_SUBSCRIPTION_TYPE) } PgQuery__AlterSubscriptionType; 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__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__TableFuncType { PG_QUERY__TABLE_FUNC_TYPE__TABLE_FUNC_TYPE_UNDEFINED = 0, PG_QUERY__TABLE_FUNC_TYPE__TFT_XMLTABLE = 1, PG_QUERY__TABLE_FUNC_TYPE__TFT_JSON_TABLE = 2 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__TABLE_FUNC_TYPE) } PgQuery__TableFuncType; 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_PLPGSQL = 3, PG_QUERY__COERCION_CONTEXT__COERCION_EXPLICIT = 4 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, PG_QUERY__COERCION_FORM__COERCE_SQL_SYNTAX = 4 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__JsonEncoding { PG_QUERY__JSON_ENCODING__JSON_ENCODING_UNDEFINED = 0, PG_QUERY__JSON_ENCODING__JS_ENC_DEFAULT = 1, PG_QUERY__JSON_ENCODING__JS_ENC_UTF8 = 2, PG_QUERY__JSON_ENCODING__JS_ENC_UTF16 = 3, PG_QUERY__JSON_ENCODING__JS_ENC_UTF32 = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__JSON_ENCODING) } PgQuery__JsonEncoding; typedef enum _PgQuery__JsonFormatType { PG_QUERY__JSON_FORMAT_TYPE__JSON_FORMAT_TYPE_UNDEFINED = 0, PG_QUERY__JSON_FORMAT_TYPE__JS_FORMAT_DEFAULT = 1, PG_QUERY__JSON_FORMAT_TYPE__JS_FORMAT_JSON = 2, PG_QUERY__JSON_FORMAT_TYPE__JS_FORMAT_JSONB = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__JSON_FORMAT_TYPE) } PgQuery__JsonFormatType; typedef enum _PgQuery__JsonConstructorType { PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSON_CONSTRUCTOR_TYPE_UNDEFINED = 0, PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSCTOR_JSON_OBJECT = 1, PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSCTOR_JSON_ARRAY = 2, PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSCTOR_JSON_OBJECTAGG = 3, PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSCTOR_JSON_ARRAYAGG = 4, PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSCTOR_JSON_PARSE = 5, PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSCTOR_JSON_SCALAR = 6, PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSCTOR_JSON_SERIALIZE = 7 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__JSON_CONSTRUCTOR_TYPE) } PgQuery__JsonConstructorType; typedef enum _PgQuery__JsonValueType { PG_QUERY__JSON_VALUE_TYPE__JSON_VALUE_TYPE_UNDEFINED = 0, PG_QUERY__JSON_VALUE_TYPE__JS_TYPE_ANY = 1, PG_QUERY__JSON_VALUE_TYPE__JS_TYPE_OBJECT = 2, PG_QUERY__JSON_VALUE_TYPE__JS_TYPE_ARRAY = 3, PG_QUERY__JSON_VALUE_TYPE__JS_TYPE_SCALAR = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__JSON_VALUE_TYPE) } PgQuery__JsonValueType; typedef enum _PgQuery__JsonWrapper { PG_QUERY__JSON_WRAPPER__JSON_WRAPPER_UNDEFINED = 0, PG_QUERY__JSON_WRAPPER__JSW_UNSPEC = 1, PG_QUERY__JSON_WRAPPER__JSW_NONE = 2, PG_QUERY__JSON_WRAPPER__JSW_CONDITIONAL = 3, PG_QUERY__JSON_WRAPPER__JSW_UNCONDITIONAL = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__JSON_WRAPPER) } PgQuery__JsonWrapper; typedef enum _PgQuery__JsonBehaviorType { PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_TYPE_UNDEFINED = 0, PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_NULL = 1, PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_ERROR = 2, PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_EMPTY = 3, PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_TRUE = 4, PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_FALSE = 5, PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_UNKNOWN = 6, PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_EMPTY_ARRAY = 7, PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_EMPTY_OBJECT = 8, PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_DEFAULT = 9 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__JSON_BEHAVIOR_TYPE) } PgQuery__JsonBehaviorType; typedef enum _PgQuery__JsonExprOp { PG_QUERY__JSON_EXPR_OP__JSON_EXPR_OP_UNDEFINED = 0, PG_QUERY__JSON_EXPR_OP__JSON_EXISTS_OP = 1, PG_QUERY__JSON_EXPR_OP__JSON_QUERY_OP = 2, PG_QUERY__JSON_EXPR_OP__JSON_VALUE_OP = 3, PG_QUERY__JSON_EXPR_OP__JSON_TABLE_OP = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__JSON_EXPR_OP) } PgQuery__JsonExprOp; 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__MergeMatchKind { PG_QUERY__MERGE_MATCH_KIND__MERGE_MATCH_KIND_UNDEFINED = 0, PG_QUERY__MERGE_MATCH_KIND__MERGE_WHEN_MATCHED = 1, PG_QUERY__MERGE_MATCH_KIND__MERGE_WHEN_NOT_MATCHED_BY_SOURCE = 2, PG_QUERY__MERGE_MATCH_KIND__MERGE_WHEN_NOT_MATCHED_BY_TARGET = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__MERGE_MATCH_KIND) } PgQuery__MergeMatchKind; 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_MERGE = 6, PG_QUERY__CMD_TYPE__CMD_UTILITY = 7, PG_QUERY__CMD_TYPE__CMD_NOTHING = 8 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_RIGHT_ANTI = 7, PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_OUTER = 8, PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_INNER = 9 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_36 = 36, /* * "%" */ 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__ABSENT = 278, PG_QUERY__TOKEN__ABSOLUTE_P = 279, PG_QUERY__TOKEN__ACCESS = 280, PG_QUERY__TOKEN__ACTION = 281, PG_QUERY__TOKEN__ADD_P = 282, PG_QUERY__TOKEN__ADMIN = 283, PG_QUERY__TOKEN__AFTER = 284, PG_QUERY__TOKEN__AGGREGATE = 285, PG_QUERY__TOKEN__ALL = 286, PG_QUERY__TOKEN__ALSO = 287, PG_QUERY__TOKEN__ALTER = 288, PG_QUERY__TOKEN__ALWAYS = 289, PG_QUERY__TOKEN__ANALYSE = 290, PG_QUERY__TOKEN__ANALYZE = 291, PG_QUERY__TOKEN__AND = 292, PG_QUERY__TOKEN__ANY = 293, PG_QUERY__TOKEN__ARRAY = 294, PG_QUERY__TOKEN__AS = 295, PG_QUERY__TOKEN__ASC = 296, PG_QUERY__TOKEN__ASENSITIVE = 297, PG_QUERY__TOKEN__ASSERTION = 298, PG_QUERY__TOKEN__ASSIGNMENT = 299, PG_QUERY__TOKEN__ASYMMETRIC = 300, PG_QUERY__TOKEN__ATOMIC = 301, PG_QUERY__TOKEN__AT = 302, PG_QUERY__TOKEN__ATTACH = 303, PG_QUERY__TOKEN__ATTRIBUTE = 304, PG_QUERY__TOKEN__AUTHORIZATION = 305, PG_QUERY__TOKEN__BACKWARD = 306, PG_QUERY__TOKEN__BEFORE = 307, PG_QUERY__TOKEN__BEGIN_P = 308, PG_QUERY__TOKEN__BETWEEN = 309, PG_QUERY__TOKEN__BIGINT = 310, PG_QUERY__TOKEN__BINARY = 311, PG_QUERY__TOKEN__BIT = 312, PG_QUERY__TOKEN__BOOLEAN_P = 313, PG_QUERY__TOKEN__BOTH = 314, PG_QUERY__TOKEN__BREADTH = 315, PG_QUERY__TOKEN__BY = 316, PG_QUERY__TOKEN__CACHE = 317, PG_QUERY__TOKEN__CALL = 318, PG_QUERY__TOKEN__CALLED = 319, PG_QUERY__TOKEN__CASCADE = 320, PG_QUERY__TOKEN__CASCADED = 321, PG_QUERY__TOKEN__CASE = 322, PG_QUERY__TOKEN__CAST = 323, PG_QUERY__TOKEN__CATALOG_P = 324, PG_QUERY__TOKEN__CHAIN = 325, PG_QUERY__TOKEN__CHAR_P = 326, PG_QUERY__TOKEN__CHARACTER = 327, PG_QUERY__TOKEN__CHARACTERISTICS = 328, PG_QUERY__TOKEN__CHECK = 329, PG_QUERY__TOKEN__CHECKPOINT = 330, PG_QUERY__TOKEN__CLASS = 331, PG_QUERY__TOKEN__CLOSE = 332, PG_QUERY__TOKEN__CLUSTER = 333, PG_QUERY__TOKEN__COALESCE = 334, PG_QUERY__TOKEN__COLLATE = 335, PG_QUERY__TOKEN__COLLATION = 336, PG_QUERY__TOKEN__COLUMN = 337, PG_QUERY__TOKEN__COLUMNS = 338, PG_QUERY__TOKEN__COMMENT = 339, PG_QUERY__TOKEN__COMMENTS = 340, PG_QUERY__TOKEN__COMMIT = 341, PG_QUERY__TOKEN__COMMITTED = 342, PG_QUERY__TOKEN__COMPRESSION = 343, PG_QUERY__TOKEN__CONCURRENTLY = 344, PG_QUERY__TOKEN__CONDITIONAL = 345, PG_QUERY__TOKEN__CONFIGURATION = 346, PG_QUERY__TOKEN__CONFLICT = 347, PG_QUERY__TOKEN__CONNECTION = 348, PG_QUERY__TOKEN__CONSTRAINT = 349, PG_QUERY__TOKEN__CONSTRAINTS = 350, PG_QUERY__TOKEN__CONTENT_P = 351, PG_QUERY__TOKEN__CONTINUE_P = 352, PG_QUERY__TOKEN__CONVERSION_P = 353, PG_QUERY__TOKEN__COPY = 354, PG_QUERY__TOKEN__COST = 355, PG_QUERY__TOKEN__CREATE = 356, PG_QUERY__TOKEN__CROSS = 357, PG_QUERY__TOKEN__CSV = 358, PG_QUERY__TOKEN__CUBE = 359, PG_QUERY__TOKEN__CURRENT_P = 360, PG_QUERY__TOKEN__CURRENT_CATALOG = 361, PG_QUERY__TOKEN__CURRENT_DATE = 362, PG_QUERY__TOKEN__CURRENT_ROLE = 363, PG_QUERY__TOKEN__CURRENT_SCHEMA = 364, PG_QUERY__TOKEN__CURRENT_TIME = 365, PG_QUERY__TOKEN__CURRENT_TIMESTAMP = 366, PG_QUERY__TOKEN__CURRENT_USER = 367, PG_QUERY__TOKEN__CURSOR = 368, PG_QUERY__TOKEN__CYCLE = 369, PG_QUERY__TOKEN__DATA_P = 370, PG_QUERY__TOKEN__DATABASE = 371, PG_QUERY__TOKEN__DAY_P = 372, PG_QUERY__TOKEN__DEALLOCATE = 373, PG_QUERY__TOKEN__DEC = 374, PG_QUERY__TOKEN__DECIMAL_P = 375, PG_QUERY__TOKEN__DECLARE = 376, PG_QUERY__TOKEN__DEFAULT = 377, PG_QUERY__TOKEN__DEFAULTS = 378, PG_QUERY__TOKEN__DEFERRABLE = 379, PG_QUERY__TOKEN__DEFERRED = 380, PG_QUERY__TOKEN__DEFINER = 381, PG_QUERY__TOKEN__DELETE_P = 382, PG_QUERY__TOKEN__DELIMITER = 383, PG_QUERY__TOKEN__DELIMITERS = 384, PG_QUERY__TOKEN__DEPENDS = 385, PG_QUERY__TOKEN__DEPTH = 386, PG_QUERY__TOKEN__DESC = 387, PG_QUERY__TOKEN__DETACH = 388, PG_QUERY__TOKEN__DICTIONARY = 389, PG_QUERY__TOKEN__DISABLE_P = 390, PG_QUERY__TOKEN__DISCARD = 391, PG_QUERY__TOKEN__DISTINCT = 392, PG_QUERY__TOKEN__DO = 393, PG_QUERY__TOKEN__DOCUMENT_P = 394, PG_QUERY__TOKEN__DOMAIN_P = 395, PG_QUERY__TOKEN__DOUBLE_P = 396, PG_QUERY__TOKEN__DROP = 397, PG_QUERY__TOKEN__EACH = 398, PG_QUERY__TOKEN__ELSE = 399, PG_QUERY__TOKEN__EMPTY_P = 400, PG_QUERY__TOKEN__ENABLE_P = 401, PG_QUERY__TOKEN__ENCODING = 402, PG_QUERY__TOKEN__ENCRYPTED = 403, PG_QUERY__TOKEN__END_P = 404, PG_QUERY__TOKEN__ENUM_P = 405, PG_QUERY__TOKEN__ERROR_P = 406, PG_QUERY__TOKEN__ESCAPE = 407, PG_QUERY__TOKEN__EVENT = 408, PG_QUERY__TOKEN__EXCEPT = 409, PG_QUERY__TOKEN__EXCLUDE = 410, PG_QUERY__TOKEN__EXCLUDING = 411, PG_QUERY__TOKEN__EXCLUSIVE = 412, PG_QUERY__TOKEN__EXECUTE = 413, PG_QUERY__TOKEN__EXISTS = 414, PG_QUERY__TOKEN__EXPLAIN = 415, PG_QUERY__TOKEN__EXPRESSION = 416, PG_QUERY__TOKEN__EXTENSION = 417, PG_QUERY__TOKEN__EXTERNAL = 418, PG_QUERY__TOKEN__EXTRACT = 419, PG_QUERY__TOKEN__FALSE_P = 420, PG_QUERY__TOKEN__FAMILY = 421, PG_QUERY__TOKEN__FETCH = 422, PG_QUERY__TOKEN__FILTER = 423, PG_QUERY__TOKEN__FINALIZE = 424, PG_QUERY__TOKEN__FIRST_P = 425, PG_QUERY__TOKEN__FLOAT_P = 426, PG_QUERY__TOKEN__FOLLOWING = 427, PG_QUERY__TOKEN__FOR = 428, PG_QUERY__TOKEN__FORCE = 429, PG_QUERY__TOKEN__FOREIGN = 430, PG_QUERY__TOKEN__FORMAT = 431, PG_QUERY__TOKEN__FORWARD = 432, PG_QUERY__TOKEN__FREEZE = 433, PG_QUERY__TOKEN__FROM = 434, PG_QUERY__TOKEN__FULL = 435, PG_QUERY__TOKEN__FUNCTION = 436, PG_QUERY__TOKEN__FUNCTIONS = 437, PG_QUERY__TOKEN__GENERATED = 438, PG_QUERY__TOKEN__GLOBAL = 439, PG_QUERY__TOKEN__GRANT = 440, PG_QUERY__TOKEN__GRANTED = 441, PG_QUERY__TOKEN__GREATEST = 442, PG_QUERY__TOKEN__GROUP_P = 443, PG_QUERY__TOKEN__GROUPING = 444, PG_QUERY__TOKEN__GROUPS = 445, PG_QUERY__TOKEN__HANDLER = 446, PG_QUERY__TOKEN__HAVING = 447, PG_QUERY__TOKEN__HEADER_P = 448, PG_QUERY__TOKEN__HOLD = 449, PG_QUERY__TOKEN__HOUR_P = 450, PG_QUERY__TOKEN__IDENTITY_P = 451, PG_QUERY__TOKEN__IF_P = 452, PG_QUERY__TOKEN__ILIKE = 453, PG_QUERY__TOKEN__IMMEDIATE = 454, PG_QUERY__TOKEN__IMMUTABLE = 455, PG_QUERY__TOKEN__IMPLICIT_P = 456, PG_QUERY__TOKEN__IMPORT_P = 457, PG_QUERY__TOKEN__IN_P = 458, PG_QUERY__TOKEN__INCLUDE = 459, PG_QUERY__TOKEN__INCLUDING = 460, PG_QUERY__TOKEN__INCREMENT = 461, PG_QUERY__TOKEN__INDENT = 462, PG_QUERY__TOKEN__INDEX = 463, PG_QUERY__TOKEN__INDEXES = 464, PG_QUERY__TOKEN__INHERIT = 465, PG_QUERY__TOKEN__INHERITS = 466, PG_QUERY__TOKEN__INITIALLY = 467, PG_QUERY__TOKEN__INLINE_P = 468, PG_QUERY__TOKEN__INNER_P = 469, PG_QUERY__TOKEN__INOUT = 470, PG_QUERY__TOKEN__INPUT_P = 471, PG_QUERY__TOKEN__INSENSITIVE = 472, PG_QUERY__TOKEN__INSERT = 473, PG_QUERY__TOKEN__INSTEAD = 474, PG_QUERY__TOKEN__INT_P = 475, PG_QUERY__TOKEN__INTEGER = 476, PG_QUERY__TOKEN__INTERSECT = 477, PG_QUERY__TOKEN__INTERVAL = 478, PG_QUERY__TOKEN__INTO = 479, PG_QUERY__TOKEN__INVOKER = 480, PG_QUERY__TOKEN__IS = 481, PG_QUERY__TOKEN__ISNULL = 482, PG_QUERY__TOKEN__ISOLATION = 483, PG_QUERY__TOKEN__JOIN = 484, PG_QUERY__TOKEN__JSON = 485, PG_QUERY__TOKEN__JSON_ARRAY = 486, PG_QUERY__TOKEN__JSON_ARRAYAGG = 487, PG_QUERY__TOKEN__JSON_EXISTS = 488, PG_QUERY__TOKEN__JSON_OBJECT = 489, PG_QUERY__TOKEN__JSON_OBJECTAGG = 490, PG_QUERY__TOKEN__JSON_QUERY = 491, PG_QUERY__TOKEN__JSON_SCALAR = 492, PG_QUERY__TOKEN__JSON_SERIALIZE = 493, PG_QUERY__TOKEN__JSON_TABLE = 494, PG_QUERY__TOKEN__JSON_VALUE = 495, PG_QUERY__TOKEN__KEEP = 496, PG_QUERY__TOKEN__KEY = 497, PG_QUERY__TOKEN__KEYS = 498, PG_QUERY__TOKEN__LABEL = 499, PG_QUERY__TOKEN__LANGUAGE = 500, PG_QUERY__TOKEN__LARGE_P = 501, PG_QUERY__TOKEN__LAST_P = 502, PG_QUERY__TOKEN__LATERAL_P = 503, PG_QUERY__TOKEN__LEADING = 504, PG_QUERY__TOKEN__LEAKPROOF = 505, PG_QUERY__TOKEN__LEAST = 506, PG_QUERY__TOKEN__LEFT = 507, PG_QUERY__TOKEN__LEVEL = 508, PG_QUERY__TOKEN__LIKE = 509, PG_QUERY__TOKEN__LIMIT = 510, PG_QUERY__TOKEN__LISTEN = 511, PG_QUERY__TOKEN__LOAD = 512, PG_QUERY__TOKEN__LOCAL = 513, PG_QUERY__TOKEN__LOCALTIME = 514, PG_QUERY__TOKEN__LOCALTIMESTAMP = 515, PG_QUERY__TOKEN__LOCATION = 516, PG_QUERY__TOKEN__LOCK_P = 517, PG_QUERY__TOKEN__LOCKED = 518, PG_QUERY__TOKEN__LOGGED = 519, PG_QUERY__TOKEN__MAPPING = 520, PG_QUERY__TOKEN__MATCH = 521, PG_QUERY__TOKEN__MATCHED = 522, PG_QUERY__TOKEN__MATERIALIZED = 523, PG_QUERY__TOKEN__MAXVALUE = 524, PG_QUERY__TOKEN__MERGE = 525, PG_QUERY__TOKEN__MERGE_ACTION = 526, PG_QUERY__TOKEN__METHOD = 527, PG_QUERY__TOKEN__MINUTE_P = 528, PG_QUERY__TOKEN__MINVALUE = 529, PG_QUERY__TOKEN__MODE = 530, PG_QUERY__TOKEN__MONTH_P = 531, PG_QUERY__TOKEN__MOVE = 532, PG_QUERY__TOKEN__NAME_P = 533, PG_QUERY__TOKEN__NAMES = 534, PG_QUERY__TOKEN__NATIONAL = 535, PG_QUERY__TOKEN__NATURAL = 536, PG_QUERY__TOKEN__NCHAR = 537, PG_QUERY__TOKEN__NESTED = 538, PG_QUERY__TOKEN__NEW = 539, PG_QUERY__TOKEN__NEXT = 540, PG_QUERY__TOKEN__NFC = 541, PG_QUERY__TOKEN__NFD = 542, PG_QUERY__TOKEN__NFKC = 543, PG_QUERY__TOKEN__NFKD = 544, PG_QUERY__TOKEN__NO = 545, PG_QUERY__TOKEN__NONE = 546, PG_QUERY__TOKEN__NORMALIZE = 547, PG_QUERY__TOKEN__NORMALIZED = 548, PG_QUERY__TOKEN__NOT = 549, PG_QUERY__TOKEN__NOTHING = 550, PG_QUERY__TOKEN__NOTIFY = 551, PG_QUERY__TOKEN__NOTNULL = 552, PG_QUERY__TOKEN__NOWAIT = 553, PG_QUERY__TOKEN__NULL_P = 554, PG_QUERY__TOKEN__NULLIF = 555, PG_QUERY__TOKEN__NULLS_P = 556, PG_QUERY__TOKEN__NUMERIC = 557, PG_QUERY__TOKEN__OBJECT_P = 558, PG_QUERY__TOKEN__OF = 559, PG_QUERY__TOKEN__OFF = 560, PG_QUERY__TOKEN__OFFSET = 561, PG_QUERY__TOKEN__OIDS = 562, PG_QUERY__TOKEN__OLD = 563, PG_QUERY__TOKEN__OMIT = 564, PG_QUERY__TOKEN__ON = 565, PG_QUERY__TOKEN__ONLY = 566, PG_QUERY__TOKEN__OPERATOR = 567, PG_QUERY__TOKEN__OPTION = 568, PG_QUERY__TOKEN__OPTIONS = 569, PG_QUERY__TOKEN__OR = 570, PG_QUERY__TOKEN__ORDER = 571, PG_QUERY__TOKEN__ORDINALITY = 572, PG_QUERY__TOKEN__OTHERS = 573, PG_QUERY__TOKEN__OUT_P = 574, PG_QUERY__TOKEN__OUTER_P = 575, PG_QUERY__TOKEN__OVER = 576, PG_QUERY__TOKEN__OVERLAPS = 577, PG_QUERY__TOKEN__OVERLAY = 578, PG_QUERY__TOKEN__OVERRIDING = 579, PG_QUERY__TOKEN__OWNED = 580, PG_QUERY__TOKEN__OWNER = 581, PG_QUERY__TOKEN__PARALLEL = 582, PG_QUERY__TOKEN__PARAMETER = 583, PG_QUERY__TOKEN__PARSER = 584, PG_QUERY__TOKEN__PARTIAL = 585, PG_QUERY__TOKEN__PARTITION = 586, PG_QUERY__TOKEN__PASSING = 587, PG_QUERY__TOKEN__PASSWORD = 588, PG_QUERY__TOKEN__PATH = 589, PG_QUERY__TOKEN__PLACING = 590, PG_QUERY__TOKEN__PLAN = 591, PG_QUERY__TOKEN__PLANS = 592, PG_QUERY__TOKEN__POLICY = 593, PG_QUERY__TOKEN__POSITION = 594, PG_QUERY__TOKEN__PRECEDING = 595, PG_QUERY__TOKEN__PRECISION = 596, PG_QUERY__TOKEN__PRESERVE = 597, PG_QUERY__TOKEN__PREPARE = 598, PG_QUERY__TOKEN__PREPARED = 599, PG_QUERY__TOKEN__PRIMARY = 600, PG_QUERY__TOKEN__PRIOR = 601, PG_QUERY__TOKEN__PRIVILEGES = 602, PG_QUERY__TOKEN__PROCEDURAL = 603, PG_QUERY__TOKEN__PROCEDURE = 604, PG_QUERY__TOKEN__PROCEDURES = 605, PG_QUERY__TOKEN__PROGRAM = 606, PG_QUERY__TOKEN__PUBLICATION = 607, PG_QUERY__TOKEN__QUOTE = 608, PG_QUERY__TOKEN__QUOTES = 609, PG_QUERY__TOKEN__RANGE = 610, PG_QUERY__TOKEN__READ = 611, PG_QUERY__TOKEN__REAL = 612, PG_QUERY__TOKEN__REASSIGN = 613, PG_QUERY__TOKEN__RECHECK = 614, PG_QUERY__TOKEN__RECURSIVE = 615, PG_QUERY__TOKEN__REF_P = 616, PG_QUERY__TOKEN__REFERENCES = 617, PG_QUERY__TOKEN__REFERENCING = 618, PG_QUERY__TOKEN__REFRESH = 619, PG_QUERY__TOKEN__REINDEX = 620, PG_QUERY__TOKEN__RELATIVE_P = 621, PG_QUERY__TOKEN__RELEASE = 622, PG_QUERY__TOKEN__RENAME = 623, PG_QUERY__TOKEN__REPEATABLE = 624, PG_QUERY__TOKEN__REPLACE = 625, PG_QUERY__TOKEN__REPLICA = 626, PG_QUERY__TOKEN__RESET = 627, PG_QUERY__TOKEN__RESTART = 628, PG_QUERY__TOKEN__RESTRICT = 629, PG_QUERY__TOKEN__RETURN = 630, PG_QUERY__TOKEN__RETURNING = 631, PG_QUERY__TOKEN__RETURNS = 632, PG_QUERY__TOKEN__REVOKE = 633, PG_QUERY__TOKEN__RIGHT = 634, PG_QUERY__TOKEN__ROLE = 635, PG_QUERY__TOKEN__ROLLBACK = 636, PG_QUERY__TOKEN__ROLLUP = 637, PG_QUERY__TOKEN__ROUTINE = 638, PG_QUERY__TOKEN__ROUTINES = 639, PG_QUERY__TOKEN__ROW = 640, PG_QUERY__TOKEN__ROWS = 641, PG_QUERY__TOKEN__RULE = 642, PG_QUERY__TOKEN__SAVEPOINT = 643, PG_QUERY__TOKEN__SCALAR = 644, PG_QUERY__TOKEN__SCHEMA = 645, PG_QUERY__TOKEN__SCHEMAS = 646, PG_QUERY__TOKEN__SCROLL = 647, PG_QUERY__TOKEN__SEARCH = 648, PG_QUERY__TOKEN__SECOND_P = 649, PG_QUERY__TOKEN__SECURITY = 650, PG_QUERY__TOKEN__SELECT = 651, PG_QUERY__TOKEN__SEQUENCE = 652, PG_QUERY__TOKEN__SEQUENCES = 653, PG_QUERY__TOKEN__SERIALIZABLE = 654, PG_QUERY__TOKEN__SERVER = 655, PG_QUERY__TOKEN__SESSION = 656, PG_QUERY__TOKEN__SESSION_USER = 657, PG_QUERY__TOKEN__SET = 658, PG_QUERY__TOKEN__SETS = 659, PG_QUERY__TOKEN__SETOF = 660, PG_QUERY__TOKEN__SHARE = 661, PG_QUERY__TOKEN__SHOW = 662, PG_QUERY__TOKEN__SIMILAR = 663, PG_QUERY__TOKEN__SIMPLE = 664, PG_QUERY__TOKEN__SKIP = 665, PG_QUERY__TOKEN__SMALLINT = 666, PG_QUERY__TOKEN__SNAPSHOT = 667, PG_QUERY__TOKEN__SOME = 668, PG_QUERY__TOKEN__SOURCE = 669, PG_QUERY__TOKEN__SQL_P = 670, PG_QUERY__TOKEN__STABLE = 671, PG_QUERY__TOKEN__STANDALONE_P = 672, PG_QUERY__TOKEN__START = 673, PG_QUERY__TOKEN__STATEMENT = 674, PG_QUERY__TOKEN__STATISTICS = 675, PG_QUERY__TOKEN__STDIN = 676, PG_QUERY__TOKEN__STDOUT = 677, PG_QUERY__TOKEN__STORAGE = 678, PG_QUERY__TOKEN__STORED = 679, PG_QUERY__TOKEN__STRICT_P = 680, PG_QUERY__TOKEN__STRING_P = 681, PG_QUERY__TOKEN__STRIP_P = 682, PG_QUERY__TOKEN__SUBSCRIPTION = 683, PG_QUERY__TOKEN__SUBSTRING = 684, PG_QUERY__TOKEN__SUPPORT = 685, PG_QUERY__TOKEN__SYMMETRIC = 686, PG_QUERY__TOKEN__SYSID = 687, PG_QUERY__TOKEN__SYSTEM_P = 688, PG_QUERY__TOKEN__SYSTEM_USER = 689, PG_QUERY__TOKEN__TABLE = 690, PG_QUERY__TOKEN__TABLES = 691, PG_QUERY__TOKEN__TABLESAMPLE = 692, PG_QUERY__TOKEN__TABLESPACE = 693, PG_QUERY__TOKEN__TARGET = 694, PG_QUERY__TOKEN__TEMP = 695, PG_QUERY__TOKEN__TEMPLATE = 696, PG_QUERY__TOKEN__TEMPORARY = 697, PG_QUERY__TOKEN__TEXT_P = 698, PG_QUERY__TOKEN__THEN = 699, PG_QUERY__TOKEN__TIES = 700, PG_QUERY__TOKEN__TIME = 701, PG_QUERY__TOKEN__TIMESTAMP = 702, PG_QUERY__TOKEN__TO = 703, PG_QUERY__TOKEN__TRAILING = 704, PG_QUERY__TOKEN__TRANSACTION = 705, PG_QUERY__TOKEN__TRANSFORM = 706, PG_QUERY__TOKEN__TREAT = 707, PG_QUERY__TOKEN__TRIGGER = 708, PG_QUERY__TOKEN__TRIM = 709, PG_QUERY__TOKEN__TRUE_P = 710, PG_QUERY__TOKEN__TRUNCATE = 711, PG_QUERY__TOKEN__TRUSTED = 712, PG_QUERY__TOKEN__TYPE_P = 713, PG_QUERY__TOKEN__TYPES_P = 714, PG_QUERY__TOKEN__UESCAPE = 715, PG_QUERY__TOKEN__UNBOUNDED = 716, PG_QUERY__TOKEN__UNCONDITIONAL = 717, PG_QUERY__TOKEN__UNCOMMITTED = 718, PG_QUERY__TOKEN__UNENCRYPTED = 719, PG_QUERY__TOKEN__UNION = 720, PG_QUERY__TOKEN__UNIQUE = 721, PG_QUERY__TOKEN__UNKNOWN = 722, PG_QUERY__TOKEN__UNLISTEN = 723, PG_QUERY__TOKEN__UNLOGGED = 724, PG_QUERY__TOKEN__UNTIL = 725, PG_QUERY__TOKEN__UPDATE = 726, PG_QUERY__TOKEN__USER = 727, PG_QUERY__TOKEN__USING = 728, PG_QUERY__TOKEN__VACUUM = 729, PG_QUERY__TOKEN__VALID = 730, PG_QUERY__TOKEN__VALIDATE = 731, PG_QUERY__TOKEN__VALIDATOR = 732, PG_QUERY__TOKEN__VALUE_P = 733, PG_QUERY__TOKEN__VALUES = 734, PG_QUERY__TOKEN__VARCHAR = 735, PG_QUERY__TOKEN__VARIADIC = 736, PG_QUERY__TOKEN__VARYING = 737, PG_QUERY__TOKEN__VERBOSE = 738, PG_QUERY__TOKEN__VERSION_P = 739, PG_QUERY__TOKEN__VIEW = 740, PG_QUERY__TOKEN__VIEWS = 741, PG_QUERY__TOKEN__VOLATILE = 742, PG_QUERY__TOKEN__WHEN = 743, PG_QUERY__TOKEN__WHERE = 744, PG_QUERY__TOKEN__WHITESPACE_P = 745, PG_QUERY__TOKEN__WINDOW = 746, PG_QUERY__TOKEN__WITH = 747, PG_QUERY__TOKEN__WITHIN = 748, PG_QUERY__TOKEN__WITHOUT = 749, PG_QUERY__TOKEN__WORK = 750, PG_QUERY__TOKEN__WRAPPER = 751, PG_QUERY__TOKEN__WRITE = 752, PG_QUERY__TOKEN__XML_P = 753, PG_QUERY__TOKEN__XMLATTRIBUTES = 754, PG_QUERY__TOKEN__XMLCONCAT = 755, PG_QUERY__TOKEN__XMLELEMENT = 756, PG_QUERY__TOKEN__XMLEXISTS = 757, PG_QUERY__TOKEN__XMLFOREST = 758, PG_QUERY__TOKEN__XMLNAMESPACES = 759, PG_QUERY__TOKEN__XMLPARSE = 760, PG_QUERY__TOKEN__XMLPI = 761, PG_QUERY__TOKEN__XMLROOT = 762, PG_QUERY__TOKEN__XMLSERIALIZE = 763, PG_QUERY__TOKEN__XMLTABLE = 764, PG_QUERY__TOKEN__YEAR_P = 765, PG_QUERY__TOKEN__YES_P = 766, PG_QUERY__TOKEN__ZONE = 767, PG_QUERY__TOKEN__FORMAT_LA = 768, PG_QUERY__TOKEN__NOT_LA = 769, PG_QUERY__TOKEN__NULLS_LA = 770, PG_QUERY__TOKEN__WITH_LA = 771, PG_QUERY__TOKEN__WITHOUT_LA = 772, PG_QUERY__TOKEN__MODE_TYPE_NAME = 773, PG_QUERY__TOKEN__MODE_PLPGSQL_EXPR = 774, PG_QUERY__TOKEN__MODE_PLPGSQL_ASSIGN1 = 775, PG_QUERY__TOKEN__MODE_PLPGSQL_ASSIGN2 = 776, PG_QUERY__TOKEN__MODE_PLPGSQL_ASSIGN3 = 777, PG_QUERY__TOKEN__UMINUS = 778 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_INTO_CLAUSE = 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_WINDOW_FUNC_RUN_CONDITION = 10, PG_QUERY__NODE__NODE_MERGE_SUPPORT_FUNC = 11, PG_QUERY__NODE__NODE_SUBSCRIPTING_REF = 12, PG_QUERY__NODE__NODE_FUNC_EXPR = 13, PG_QUERY__NODE__NODE_NAMED_ARG_EXPR = 14, PG_QUERY__NODE__NODE_OP_EXPR = 15, PG_QUERY__NODE__NODE_DISTINCT_EXPR = 16, PG_QUERY__NODE__NODE_NULL_IF_EXPR = 17, PG_QUERY__NODE__NODE_SCALAR_ARRAY_OP_EXPR = 18, PG_QUERY__NODE__NODE_BOOL_EXPR = 19, PG_QUERY__NODE__NODE_SUB_LINK = 20, PG_QUERY__NODE__NODE_SUB_PLAN = 21, PG_QUERY__NODE__NODE_ALTERNATIVE_SUB_PLAN = 22, PG_QUERY__NODE__NODE_FIELD_SELECT = 23, PG_QUERY__NODE__NODE_FIELD_STORE = 24, PG_QUERY__NODE__NODE_RELABEL_TYPE = 25, PG_QUERY__NODE__NODE_COERCE_VIA_IO = 26, PG_QUERY__NODE__NODE_ARRAY_COERCE_EXPR = 27, PG_QUERY__NODE__NODE_CONVERT_ROWTYPE_EXPR = 28, PG_QUERY__NODE__NODE_COLLATE_EXPR = 29, PG_QUERY__NODE__NODE_CASE_EXPR = 30, PG_QUERY__NODE__NODE_CASE_WHEN = 31, PG_QUERY__NODE__NODE_CASE_TEST_EXPR = 32, PG_QUERY__NODE__NODE_ARRAY_EXPR = 33, PG_QUERY__NODE__NODE_ROW_EXPR = 34, PG_QUERY__NODE__NODE_ROW_COMPARE_EXPR = 35, PG_QUERY__NODE__NODE_COALESCE_EXPR = 36, PG_QUERY__NODE__NODE_MIN_MAX_EXPR = 37, PG_QUERY__NODE__NODE_SQLVALUE_FUNCTION = 38, PG_QUERY__NODE__NODE_XML_EXPR = 39, PG_QUERY__NODE__NODE_JSON_FORMAT = 40, PG_QUERY__NODE__NODE_JSON_RETURNING = 41, PG_QUERY__NODE__NODE_JSON_VALUE_EXPR = 42, PG_QUERY__NODE__NODE_JSON_CONSTRUCTOR_EXPR = 43, PG_QUERY__NODE__NODE_JSON_IS_PREDICATE = 44, PG_QUERY__NODE__NODE_JSON_BEHAVIOR = 45, PG_QUERY__NODE__NODE_JSON_EXPR = 46, PG_QUERY__NODE__NODE_JSON_TABLE_PATH = 47, PG_QUERY__NODE__NODE_JSON_TABLE_PATH_SCAN = 48, PG_QUERY__NODE__NODE_JSON_TABLE_SIBLING_JOIN = 49, PG_QUERY__NODE__NODE_NULL_TEST = 50, PG_QUERY__NODE__NODE_BOOLEAN_TEST = 51, PG_QUERY__NODE__NODE_MERGE_ACTION = 52, PG_QUERY__NODE__NODE_COERCE_TO_DOMAIN = 53, PG_QUERY__NODE__NODE_COERCE_TO_DOMAIN_VALUE = 54, PG_QUERY__NODE__NODE_SET_TO_DEFAULT = 55, PG_QUERY__NODE__NODE_CURRENT_OF_EXPR = 56, PG_QUERY__NODE__NODE_NEXT_VALUE_EXPR = 57, PG_QUERY__NODE__NODE_INFERENCE_ELEM = 58, PG_QUERY__NODE__NODE_TARGET_ENTRY = 59, PG_QUERY__NODE__NODE_RANGE_TBL_REF = 60, PG_QUERY__NODE__NODE_JOIN_EXPR = 61, PG_QUERY__NODE__NODE_FROM_EXPR = 62, PG_QUERY__NODE__NODE_ON_CONFLICT_EXPR = 63, PG_QUERY__NODE__NODE_QUERY = 64, PG_QUERY__NODE__NODE_TYPE_NAME = 65, PG_QUERY__NODE__NODE_COLUMN_REF = 66, PG_QUERY__NODE__NODE_PARAM_REF = 67, PG_QUERY__NODE__NODE_A_EXPR = 68, PG_QUERY__NODE__NODE_TYPE_CAST = 69, PG_QUERY__NODE__NODE_COLLATE_CLAUSE = 70, PG_QUERY__NODE__NODE_ROLE_SPEC = 71, PG_QUERY__NODE__NODE_FUNC_CALL = 72, PG_QUERY__NODE__NODE_A_STAR = 73, PG_QUERY__NODE__NODE_A_INDICES = 74, PG_QUERY__NODE__NODE_A_INDIRECTION = 75, PG_QUERY__NODE__NODE_A_ARRAY_EXPR = 76, PG_QUERY__NODE__NODE_RES_TARGET = 77, PG_QUERY__NODE__NODE_MULTI_ASSIGN_REF = 78, PG_QUERY__NODE__NODE_SORT_BY = 79, PG_QUERY__NODE__NODE_WINDOW_DEF = 80, PG_QUERY__NODE__NODE_RANGE_SUBSELECT = 81, PG_QUERY__NODE__NODE_RANGE_FUNCTION = 82, PG_QUERY__NODE__NODE_RANGE_TABLE_FUNC = 83, PG_QUERY__NODE__NODE_RANGE_TABLE_FUNC_COL = 84, PG_QUERY__NODE__NODE_RANGE_TABLE_SAMPLE = 85, PG_QUERY__NODE__NODE_COLUMN_DEF = 86, PG_QUERY__NODE__NODE_TABLE_LIKE_CLAUSE = 87, PG_QUERY__NODE__NODE_INDEX_ELEM = 88, PG_QUERY__NODE__NODE_DEF_ELEM = 89, PG_QUERY__NODE__NODE_LOCKING_CLAUSE = 90, PG_QUERY__NODE__NODE_XML_SERIALIZE = 91, PG_QUERY__NODE__NODE_PARTITION_ELEM = 92, PG_QUERY__NODE__NODE_PARTITION_SPEC = 93, PG_QUERY__NODE__NODE_PARTITION_BOUND_SPEC = 94, PG_QUERY__NODE__NODE_PARTITION_RANGE_DATUM = 95, PG_QUERY__NODE__NODE_SINGLE_PARTITION_SPEC = 96, PG_QUERY__NODE__NODE_PARTITION_CMD = 97, PG_QUERY__NODE__NODE_RANGE_TBL_ENTRY = 98, PG_QUERY__NODE__NODE_RTEPERMISSION_INFO = 99, PG_QUERY__NODE__NODE_RANGE_TBL_FUNCTION = 100, PG_QUERY__NODE__NODE_TABLE_SAMPLE_CLAUSE = 101, PG_QUERY__NODE__NODE_WITH_CHECK_OPTION = 102, PG_QUERY__NODE__NODE_SORT_GROUP_CLAUSE = 103, PG_QUERY__NODE__NODE_GROUPING_SET = 104, PG_QUERY__NODE__NODE_WINDOW_CLAUSE = 105, PG_QUERY__NODE__NODE_ROW_MARK_CLAUSE = 106, PG_QUERY__NODE__NODE_WITH_CLAUSE = 107, PG_QUERY__NODE__NODE_INFER_CLAUSE = 108, PG_QUERY__NODE__NODE_ON_CONFLICT_CLAUSE = 109, PG_QUERY__NODE__NODE_CTESEARCH_CLAUSE = 110, PG_QUERY__NODE__NODE_CTECYCLE_CLAUSE = 111, PG_QUERY__NODE__NODE_COMMON_TABLE_EXPR = 112, PG_QUERY__NODE__NODE_MERGE_WHEN_CLAUSE = 113, PG_QUERY__NODE__NODE_TRIGGER_TRANSITION = 114, PG_QUERY__NODE__NODE_JSON_OUTPUT = 115, PG_QUERY__NODE__NODE_JSON_ARGUMENT = 116, PG_QUERY__NODE__NODE_JSON_FUNC_EXPR = 117, PG_QUERY__NODE__NODE_JSON_TABLE_PATH_SPEC = 118, PG_QUERY__NODE__NODE_JSON_TABLE = 119, PG_QUERY__NODE__NODE_JSON_TABLE_COLUMN = 120, PG_QUERY__NODE__NODE_JSON_KEY_VALUE = 121, PG_QUERY__NODE__NODE_JSON_PARSE_EXPR = 122, PG_QUERY__NODE__NODE_JSON_SCALAR_EXPR = 123, PG_QUERY__NODE__NODE_JSON_SERIALIZE_EXPR = 124, PG_QUERY__NODE__NODE_JSON_OBJECT_CONSTRUCTOR = 125, PG_QUERY__NODE__NODE_JSON_ARRAY_CONSTRUCTOR = 126, PG_QUERY__NODE__NODE_JSON_ARRAY_QUERY_CONSTRUCTOR = 127, PG_QUERY__NODE__NODE_JSON_AGG_CONSTRUCTOR = 128, PG_QUERY__NODE__NODE_JSON_OBJECT_AGG = 129, PG_QUERY__NODE__NODE_JSON_ARRAY_AGG = 130, PG_QUERY__NODE__NODE_RAW_STMT = 131, PG_QUERY__NODE__NODE_INSERT_STMT = 132, PG_QUERY__NODE__NODE_DELETE_STMT = 133, PG_QUERY__NODE__NODE_UPDATE_STMT = 134, PG_QUERY__NODE__NODE_MERGE_STMT = 135, PG_QUERY__NODE__NODE_SELECT_STMT = 136, PG_QUERY__NODE__NODE_SET_OPERATION_STMT = 137, PG_QUERY__NODE__NODE_RETURN_STMT = 138, PG_QUERY__NODE__NODE_PLASSIGN_STMT = 139, PG_QUERY__NODE__NODE_CREATE_SCHEMA_STMT = 140, PG_QUERY__NODE__NODE_ALTER_TABLE_STMT = 141, PG_QUERY__NODE__NODE_REPLICA_IDENTITY_STMT = 142, PG_QUERY__NODE__NODE_ALTER_TABLE_CMD = 143, PG_QUERY__NODE__NODE_ALTER_COLLATION_STMT = 144, PG_QUERY__NODE__NODE_ALTER_DOMAIN_STMT = 145, PG_QUERY__NODE__NODE_GRANT_STMT = 146, PG_QUERY__NODE__NODE_OBJECT_WITH_ARGS = 147, PG_QUERY__NODE__NODE_ACCESS_PRIV = 148, PG_QUERY__NODE__NODE_GRANT_ROLE_STMT = 149, PG_QUERY__NODE__NODE_ALTER_DEFAULT_PRIVILEGES_STMT = 150, PG_QUERY__NODE__NODE_COPY_STMT = 151, PG_QUERY__NODE__NODE_VARIABLE_SET_STMT = 152, PG_QUERY__NODE__NODE_VARIABLE_SHOW_STMT = 153, PG_QUERY__NODE__NODE_CREATE_STMT = 154, PG_QUERY__NODE__NODE_CONSTRAINT = 155, PG_QUERY__NODE__NODE_CREATE_TABLE_SPACE_STMT = 156, PG_QUERY__NODE__NODE_DROP_TABLE_SPACE_STMT = 157, PG_QUERY__NODE__NODE_ALTER_TABLE_SPACE_OPTIONS_STMT = 158, PG_QUERY__NODE__NODE_ALTER_TABLE_MOVE_ALL_STMT = 159, PG_QUERY__NODE__NODE_CREATE_EXTENSION_STMT = 160, PG_QUERY__NODE__NODE_ALTER_EXTENSION_STMT = 161, PG_QUERY__NODE__NODE_ALTER_EXTENSION_CONTENTS_STMT = 162, PG_QUERY__NODE__NODE_CREATE_FDW_STMT = 163, PG_QUERY__NODE__NODE_ALTER_FDW_STMT = 164, PG_QUERY__NODE__NODE_CREATE_FOREIGN_SERVER_STMT = 165, PG_QUERY__NODE__NODE_ALTER_FOREIGN_SERVER_STMT = 166, PG_QUERY__NODE__NODE_CREATE_FOREIGN_TABLE_STMT = 167, PG_QUERY__NODE__NODE_CREATE_USER_MAPPING_STMT = 168, PG_QUERY__NODE__NODE_ALTER_USER_MAPPING_STMT = 169, PG_QUERY__NODE__NODE_DROP_USER_MAPPING_STMT = 170, PG_QUERY__NODE__NODE_IMPORT_FOREIGN_SCHEMA_STMT = 171, PG_QUERY__NODE__NODE_CREATE_POLICY_STMT = 172, PG_QUERY__NODE__NODE_ALTER_POLICY_STMT = 173, PG_QUERY__NODE__NODE_CREATE_AM_STMT = 174, PG_QUERY__NODE__NODE_CREATE_TRIG_STMT = 175, PG_QUERY__NODE__NODE_CREATE_EVENT_TRIG_STMT = 176, PG_QUERY__NODE__NODE_ALTER_EVENT_TRIG_STMT = 177, PG_QUERY__NODE__NODE_CREATE_PLANG_STMT = 178, PG_QUERY__NODE__NODE_CREATE_ROLE_STMT = 179, PG_QUERY__NODE__NODE_ALTER_ROLE_STMT = 180, PG_QUERY__NODE__NODE_ALTER_ROLE_SET_STMT = 181, PG_QUERY__NODE__NODE_DROP_ROLE_STMT = 182, PG_QUERY__NODE__NODE_CREATE_SEQ_STMT = 183, PG_QUERY__NODE__NODE_ALTER_SEQ_STMT = 184, PG_QUERY__NODE__NODE_DEFINE_STMT = 185, PG_QUERY__NODE__NODE_CREATE_DOMAIN_STMT = 186, PG_QUERY__NODE__NODE_CREATE_OP_CLASS_STMT = 187, PG_QUERY__NODE__NODE_CREATE_OP_CLASS_ITEM = 188, PG_QUERY__NODE__NODE_CREATE_OP_FAMILY_STMT = 189, PG_QUERY__NODE__NODE_ALTER_OP_FAMILY_STMT = 190, PG_QUERY__NODE__NODE_DROP_STMT = 191, PG_QUERY__NODE__NODE_TRUNCATE_STMT = 192, PG_QUERY__NODE__NODE_COMMENT_STMT = 193, PG_QUERY__NODE__NODE_SEC_LABEL_STMT = 194, PG_QUERY__NODE__NODE_DECLARE_CURSOR_STMT = 195, PG_QUERY__NODE__NODE_CLOSE_PORTAL_STMT = 196, PG_QUERY__NODE__NODE_FETCH_STMT = 197, PG_QUERY__NODE__NODE_INDEX_STMT = 198, PG_QUERY__NODE__NODE_CREATE_STATS_STMT = 199, PG_QUERY__NODE__NODE_STATS_ELEM = 200, PG_QUERY__NODE__NODE_ALTER_STATS_STMT = 201, PG_QUERY__NODE__NODE_CREATE_FUNCTION_STMT = 202, PG_QUERY__NODE__NODE_FUNCTION_PARAMETER = 203, PG_QUERY__NODE__NODE_ALTER_FUNCTION_STMT = 204, PG_QUERY__NODE__NODE_DO_STMT = 205, PG_QUERY__NODE__NODE_INLINE_CODE_BLOCK = 206, PG_QUERY__NODE__NODE_CALL_STMT = 207, PG_QUERY__NODE__NODE_CALL_CONTEXT = 208, PG_QUERY__NODE__NODE_RENAME_STMT = 209, PG_QUERY__NODE__NODE_ALTER_OBJECT_DEPENDS_STMT = 210, PG_QUERY__NODE__NODE_ALTER_OBJECT_SCHEMA_STMT = 211, PG_QUERY__NODE__NODE_ALTER_OWNER_STMT = 212, PG_QUERY__NODE__NODE_ALTER_OPERATOR_STMT = 213, PG_QUERY__NODE__NODE_ALTER_TYPE_STMT = 214, PG_QUERY__NODE__NODE_RULE_STMT = 215, PG_QUERY__NODE__NODE_NOTIFY_STMT = 216, PG_QUERY__NODE__NODE_LISTEN_STMT = 217, PG_QUERY__NODE__NODE_UNLISTEN_STMT = 218, PG_QUERY__NODE__NODE_TRANSACTION_STMT = 219, PG_QUERY__NODE__NODE_COMPOSITE_TYPE_STMT = 220, PG_QUERY__NODE__NODE_CREATE_ENUM_STMT = 221, PG_QUERY__NODE__NODE_CREATE_RANGE_STMT = 222, PG_QUERY__NODE__NODE_ALTER_ENUM_STMT = 223, PG_QUERY__NODE__NODE_VIEW_STMT = 224, PG_QUERY__NODE__NODE_LOAD_STMT = 225, PG_QUERY__NODE__NODE_CREATEDB_STMT = 226, PG_QUERY__NODE__NODE_ALTER_DATABASE_STMT = 227, PG_QUERY__NODE__NODE_ALTER_DATABASE_REFRESH_COLL_STMT = 228, PG_QUERY__NODE__NODE_ALTER_DATABASE_SET_STMT = 229, PG_QUERY__NODE__NODE_DROPDB_STMT = 230, PG_QUERY__NODE__NODE_ALTER_SYSTEM_STMT = 231, PG_QUERY__NODE__NODE_CLUSTER_STMT = 232, PG_QUERY__NODE__NODE_VACUUM_STMT = 233, PG_QUERY__NODE__NODE_VACUUM_RELATION = 234, PG_QUERY__NODE__NODE_EXPLAIN_STMT = 235, PG_QUERY__NODE__NODE_CREATE_TABLE_AS_STMT = 236, PG_QUERY__NODE__NODE_REFRESH_MAT_VIEW_STMT = 237, PG_QUERY__NODE__NODE_CHECK_POINT_STMT = 238, PG_QUERY__NODE__NODE_DISCARD_STMT = 239, PG_QUERY__NODE__NODE_LOCK_STMT = 240, PG_QUERY__NODE__NODE_CONSTRAINTS_SET_STMT = 241, PG_QUERY__NODE__NODE_REINDEX_STMT = 242, PG_QUERY__NODE__NODE_CREATE_CONVERSION_STMT = 243, PG_QUERY__NODE__NODE_CREATE_CAST_STMT = 244, PG_QUERY__NODE__NODE_CREATE_TRANSFORM_STMT = 245, PG_QUERY__NODE__NODE_PREPARE_STMT = 246, PG_QUERY__NODE__NODE_EXECUTE_STMT = 247, PG_QUERY__NODE__NODE_DEALLOCATE_STMT = 248, PG_QUERY__NODE__NODE_DROP_OWNED_STMT = 249, PG_QUERY__NODE__NODE_REASSIGN_OWNED_STMT = 250, PG_QUERY__NODE__NODE_ALTER_TSDICTIONARY_STMT = 251, PG_QUERY__NODE__NODE_ALTER_TSCONFIGURATION_STMT = 252, PG_QUERY__NODE__NODE_PUBLICATION_TABLE = 253, PG_QUERY__NODE__NODE_PUBLICATION_OBJ_SPEC = 254, PG_QUERY__NODE__NODE_CREATE_PUBLICATION_STMT = 255, PG_QUERY__NODE__NODE_ALTER_PUBLICATION_STMT = 256, PG_QUERY__NODE__NODE_CREATE_SUBSCRIPTION_STMT = 257, PG_QUERY__NODE__NODE_ALTER_SUBSCRIPTION_STMT = 258, PG_QUERY__NODE__NODE_DROP_SUBSCRIPTION_STMT = 259, PG_QUERY__NODE__NODE_INTEGER = 260, PG_QUERY__NODE__NODE_FLOAT = 261, PG_QUERY__NODE__NODE_BOOLEAN = 262, PG_QUERY__NODE__NODE_STRING = 263, PG_QUERY__NODE__NODE_BIT_STRING = 264, PG_QUERY__NODE__NODE_LIST = 265, PG_QUERY__NODE__NODE_INT_LIST = 266, PG_QUERY__NODE__NODE_OID_LIST = 267, PG_QUERY__NODE__NODE_A_CONST = 268 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__IntoClause *into_clause; PgQuery__Var *var; PgQuery__Param *param; PgQuery__Aggref *aggref; PgQuery__GroupingFunc *grouping_func; PgQuery__WindowFunc *window_func; PgQuery__WindowFuncRunCondition *window_func_run_condition; PgQuery__MergeSupportFunc *merge_support_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__JsonFormat *json_format; PgQuery__JsonReturning *json_returning; PgQuery__JsonValueExpr *json_value_expr; PgQuery__JsonConstructorExpr *json_constructor_expr; PgQuery__JsonIsPredicate *json_is_predicate; PgQuery__JsonBehavior *json_behavior; PgQuery__JsonExpr *json_expr; PgQuery__JsonTablePath *json_table_path; PgQuery__JsonTablePathScan *json_table_path_scan; PgQuery__JsonTableSiblingJoin *json_table_sibling_join; PgQuery__NullTest *null_test; PgQuery__BooleanTest *boolean_test; PgQuery__MergeAction *merge_action; 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__Query *query; PgQuery__TypeName *type_name; PgQuery__ColumnRef *column_ref; PgQuery__ParamRef *param_ref; PgQuery__AExpr *a_expr; PgQuery__TypeCast *type_cast; PgQuery__CollateClause *collate_clause; PgQuery__RoleSpec *role_spec; 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__SortBy *sort_by; PgQuery__WindowDef *window_def; PgQuery__RangeSubselect *range_subselect; PgQuery__RangeFunction *range_function; PgQuery__RangeTableFunc *range_table_func; PgQuery__RangeTableFuncCol *range_table_func_col; PgQuery__RangeTableSample *range_table_sample; PgQuery__ColumnDef *column_def; PgQuery__TableLikeClause *table_like_clause; PgQuery__IndexElem *index_elem; PgQuery__DefElem *def_elem; PgQuery__LockingClause *locking_clause; PgQuery__XmlSerialize *xml_serialize; PgQuery__PartitionElem *partition_elem; PgQuery__PartitionSpec *partition_spec; PgQuery__PartitionBoundSpec *partition_bound_spec; PgQuery__PartitionRangeDatum *partition_range_datum; PgQuery__SinglePartitionSpec *single_partition_spec; PgQuery__PartitionCmd *partition_cmd; PgQuery__RangeTblEntry *range_tbl_entry; PgQuery__RTEPermissionInfo *rtepermission_info; 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__RowMarkClause *row_mark_clause; PgQuery__WithClause *with_clause; PgQuery__InferClause *infer_clause; PgQuery__OnConflictClause *on_conflict_clause; PgQuery__CTESearchClause *ctesearch_clause; PgQuery__CTECycleClause *ctecycle_clause; PgQuery__CommonTableExpr *common_table_expr; PgQuery__MergeWhenClause *merge_when_clause; PgQuery__TriggerTransition *trigger_transition; PgQuery__JsonOutput *json_output; PgQuery__JsonArgument *json_argument; PgQuery__JsonFuncExpr *json_func_expr; PgQuery__JsonTablePathSpec *json_table_path_spec; PgQuery__JsonTable *json_table; PgQuery__JsonTableColumn *json_table_column; PgQuery__JsonKeyValue *json_key_value; PgQuery__JsonParseExpr *json_parse_expr; PgQuery__JsonScalarExpr *json_scalar_expr; PgQuery__JsonSerializeExpr *json_serialize_expr; PgQuery__JsonObjectConstructor *json_object_constructor; PgQuery__JsonArrayConstructor *json_array_constructor; PgQuery__JsonArrayQueryConstructor *json_array_query_constructor; PgQuery__JsonAggConstructor *json_agg_constructor; PgQuery__JsonObjectAgg *json_object_agg; PgQuery__JsonArrayAgg *json_array_agg; PgQuery__RawStmt *raw_stmt; PgQuery__InsertStmt *insert_stmt; PgQuery__DeleteStmt *delete_stmt; PgQuery__UpdateStmt *update_stmt; PgQuery__MergeStmt *merge_stmt; PgQuery__SelectStmt *select_stmt; PgQuery__SetOperationStmt *set_operation_stmt; PgQuery__ReturnStmt *return_stmt; PgQuery__PLAssignStmt *plassign_stmt; PgQuery__CreateSchemaStmt *create_schema_stmt; PgQuery__AlterTableStmt *alter_table_stmt; PgQuery__ReplicaIdentityStmt *replica_identity_stmt; PgQuery__AlterTableCmd *alter_table_cmd; PgQuery__AlterCollationStmt *alter_collation_stmt; PgQuery__AlterDomainStmt *alter_domain_stmt; PgQuery__GrantStmt *grant_stmt; PgQuery__ObjectWithArgs *object_with_args; PgQuery__AccessPriv *access_priv; PgQuery__GrantRoleStmt *grant_role_stmt; PgQuery__AlterDefaultPrivilegesStmt *alter_default_privileges_stmt; PgQuery__CopyStmt *copy_stmt; PgQuery__VariableSetStmt *variable_set_stmt; PgQuery__VariableShowStmt *variable_show_stmt; PgQuery__CreateStmt *create_stmt; PgQuery__Constraint *constraint; PgQuery__CreateTableSpaceStmt *create_table_space_stmt; PgQuery__DropTableSpaceStmt *drop_table_space_stmt; PgQuery__AlterTableSpaceOptionsStmt *alter_table_space_options_stmt; PgQuery__AlterTableMoveAllStmt *alter_table_move_all_stmt; PgQuery__CreateExtensionStmt *create_extension_stmt; PgQuery__AlterExtensionStmt *alter_extension_stmt; PgQuery__AlterExtensionContentsStmt *alter_extension_contents_stmt; PgQuery__CreateFdwStmt *create_fdw_stmt; PgQuery__AlterFdwStmt *alter_fdw_stmt; PgQuery__CreateForeignServerStmt *create_foreign_server_stmt; PgQuery__AlterForeignServerStmt *alter_foreign_server_stmt; PgQuery__CreateForeignTableStmt *create_foreign_table_stmt; PgQuery__CreateUserMappingStmt *create_user_mapping_stmt; PgQuery__AlterUserMappingStmt *alter_user_mapping_stmt; PgQuery__DropUserMappingStmt *drop_user_mapping_stmt; PgQuery__ImportForeignSchemaStmt *import_foreign_schema_stmt; PgQuery__CreatePolicyStmt *create_policy_stmt; PgQuery__AlterPolicyStmt *alter_policy_stmt; PgQuery__CreateAmStmt *create_am_stmt; PgQuery__CreateTrigStmt *create_trig_stmt; PgQuery__CreateEventTrigStmt *create_event_trig_stmt; PgQuery__AlterEventTrigStmt *alter_event_trig_stmt; PgQuery__CreatePLangStmt *create_plang_stmt; PgQuery__CreateRoleStmt *create_role_stmt; PgQuery__AlterRoleStmt *alter_role_stmt; PgQuery__AlterRoleSetStmt *alter_role_set_stmt; PgQuery__DropRoleStmt *drop_role_stmt; PgQuery__CreateSeqStmt *create_seq_stmt; PgQuery__AlterSeqStmt *alter_seq_stmt; PgQuery__DefineStmt *define_stmt; PgQuery__CreateDomainStmt *create_domain_stmt; PgQuery__CreateOpClassStmt *create_op_class_stmt; PgQuery__CreateOpClassItem *create_op_class_item; PgQuery__CreateOpFamilyStmt *create_op_family_stmt; PgQuery__AlterOpFamilyStmt *alter_op_family_stmt; PgQuery__DropStmt *drop_stmt; PgQuery__TruncateStmt *truncate_stmt; PgQuery__CommentStmt *comment_stmt; PgQuery__SecLabelStmt *sec_label_stmt; PgQuery__DeclareCursorStmt *declare_cursor_stmt; PgQuery__ClosePortalStmt *close_portal_stmt; PgQuery__FetchStmt *fetch_stmt; PgQuery__IndexStmt *index_stmt; PgQuery__CreateStatsStmt *create_stats_stmt; PgQuery__StatsElem *stats_elem; PgQuery__AlterStatsStmt *alter_stats_stmt; PgQuery__CreateFunctionStmt *create_function_stmt; PgQuery__FunctionParameter *function_parameter; PgQuery__AlterFunctionStmt *alter_function_stmt; PgQuery__DoStmt *do_stmt; PgQuery__InlineCodeBlock *inline_code_block; PgQuery__CallStmt *call_stmt; PgQuery__CallContext *call_context; PgQuery__RenameStmt *rename_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__RuleStmt *rule_stmt; PgQuery__NotifyStmt *notify_stmt; PgQuery__ListenStmt *listen_stmt; PgQuery__UnlistenStmt *unlisten_stmt; PgQuery__TransactionStmt *transaction_stmt; PgQuery__CompositeTypeStmt *composite_type_stmt; PgQuery__CreateEnumStmt *create_enum_stmt; PgQuery__CreateRangeStmt *create_range_stmt; PgQuery__AlterEnumStmt *alter_enum_stmt; PgQuery__ViewStmt *view_stmt; PgQuery__LoadStmt *load_stmt; PgQuery__CreatedbStmt *createdb_stmt; PgQuery__AlterDatabaseStmt *alter_database_stmt; PgQuery__AlterDatabaseRefreshCollStmt *alter_database_refresh_coll_stmt; PgQuery__AlterDatabaseSetStmt *alter_database_set_stmt; PgQuery__DropdbStmt *dropdb_stmt; PgQuery__AlterSystemStmt *alter_system_stmt; PgQuery__ClusterStmt *cluster_stmt; PgQuery__VacuumStmt *vacuum_stmt; PgQuery__VacuumRelation *vacuum_relation; PgQuery__ExplainStmt *explain_stmt; PgQuery__CreateTableAsStmt *create_table_as_stmt; PgQuery__RefreshMatViewStmt *refresh_mat_view_stmt; PgQuery__CheckPointStmt *check_point_stmt; PgQuery__DiscardStmt *discard_stmt; PgQuery__LockStmt *lock_stmt; PgQuery__ConstraintsSetStmt *constraints_set_stmt; PgQuery__ReindexStmt *reindex_stmt; PgQuery__CreateConversionStmt *create_conversion_stmt; PgQuery__CreateCastStmt *create_cast_stmt; PgQuery__CreateTransformStmt *create_transform_stmt; PgQuery__PrepareStmt *prepare_stmt; PgQuery__ExecuteStmt *execute_stmt; PgQuery__DeallocateStmt *deallocate_stmt; PgQuery__DropOwnedStmt *drop_owned_stmt; PgQuery__ReassignOwnedStmt *reassign_owned_stmt; PgQuery__AlterTSDictionaryStmt *alter_tsdictionary_stmt; PgQuery__AlterTSConfigurationStmt *alter_tsconfiguration_stmt; PgQuery__PublicationTable *publication_table; PgQuery__PublicationObjSpec *publication_obj_spec; 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__Integer *integer; PgQuery__Float *float_; PgQuery__Boolean *boolean; PgQuery__String *string; PgQuery__BitString *bit_string; PgQuery__List *list; PgQuery__IntList *int_list; PgQuery__OidList *oid_list; PgQuery__AConst *a_const; }; }; #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 *fval; }; #define PG_QUERY__FLOAT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__float__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__Boolean { ProtobufCMessage base; protobuf_c_boolean boolval; }; #define PG_QUERY__BOOLEAN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__boolean__descriptor) \ , 0 } struct PgQuery__String { ProtobufCMessage base; /* * string */ char *sval; }; #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 *bsval; }; #define PG_QUERY__BIT_STRING__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__bit_string__descriptor) \ , (char *)protobuf_c_empty_string } 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 } typedef enum { PG_QUERY__A__CONST__VAL__NOT_SET = 0, PG_QUERY__A__CONST__VAL_IVAL = 1, PG_QUERY__A__CONST__VAL_FVAL = 2, PG_QUERY__A__CONST__VAL_BOOLVAL = 3, PG_QUERY__A__CONST__VAL_SVAL = 4, PG_QUERY__A__CONST__VAL_BSVAL = 5 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__A__CONST__VAL__CASE) } PgQuery__AConst__ValCase; struct PgQuery__AConst { ProtobufCMessage base; protobuf_c_boolean isnull; int32_t location; PgQuery__AConst__ValCase val_case; union { PgQuery__Integer *ival; PgQuery__Float *fval; PgQuery__Boolean *boolval; PgQuery__String *sval; PgQuery__BitString *bsval; }; }; #define PG_QUERY__A__CONST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__a__const__descriptor) \ , 0, 0, PG_QUERY__A__CONST__VAL__NOT_SET, {0} } 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; PgQuery__TableFuncType functype; 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_colvalexprs; PgQuery__Node **colvalexprs; size_t n_passingvalexprs; PgQuery__Node **passingvalexprs; size_t n_notnulls; uint64_t *notnulls; PgQuery__Node *plan; int32_t ordinalitycol; int32_t location; }; #define PG_QUERY__TABLE_FUNC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__table_func__descriptor) \ , PG_QUERY__TABLE_FUNC_TYPE__TABLE_FUNC_TYPE_UNDEFINED, 0,NULL, 0,NULL, NULL, NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, NULL, 0, 0 } 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__Var { ProtobufCMessage base; PgQuery__Node *xpr; int32_t varno; int32_t varattno; uint32_t vartype; int32_t vartypmod; uint32_t varcollid; size_t n_varnullingrels; uint64_t *varnullingrels; uint32_t varlevelsup; int32_t location; }; #define PG_QUERY__VAR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__var__descriptor) \ , NULL, 0, 0, 0, 0, 0, 0,NULL, 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; 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 aggno; int32_t aggtransno; int32_t location; }; #define PG_QUERY__AGGREF__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__aggref__descriptor) \ , NULL, 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, 0, 0 } struct PgQuery__GroupingFunc { ProtobufCMessage base; PgQuery__Node *xpr; size_t n_args; PgQuery__Node **args; size_t n_refs; PgQuery__Node **refs; 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, 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; size_t n_run_condition; PgQuery__Node **run_condition; 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,NULL, 0, 0, 0, 0 } struct PgQuery__WindowFuncRunCondition { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t opno; uint32_t inputcollid; protobuf_c_boolean wfunc_left; PgQuery__Node *arg; }; #define PG_QUERY__WINDOW_FUNC_RUN_CONDITION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__window_func_run_condition__descriptor) \ , NULL, 0, 0, 0, NULL } struct PgQuery__MergeSupportFunc { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t msftype; uint32_t msfcollid; int32_t location; }; #define PG_QUERY__MERGE_SUPPORT_FUNC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__merge_support_func__descriptor) \ , NULL, 0, 0, 0 } struct PgQuery__SubscriptingRef { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t refcontainertype; uint32_t refelemtype; uint32_t refrestype; 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, 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 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,NULL, 0 } struct PgQuery__DistinctExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t opno; 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,NULL, 0 } struct PgQuery__NullIfExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t opno; 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,NULL, 0 } struct PgQuery__ScalarArrayOpExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t opno; 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,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; protobuf_c_boolean indent; 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, 0 } struct PgQuery__JsonFormat { ProtobufCMessage base; PgQuery__JsonFormatType format_type; PgQuery__JsonEncoding encoding; int32_t location; }; #define PG_QUERY__JSON_FORMAT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_format__descriptor) \ , PG_QUERY__JSON_FORMAT_TYPE__JSON_FORMAT_TYPE_UNDEFINED, PG_QUERY__JSON_ENCODING__JSON_ENCODING_UNDEFINED, 0 } struct PgQuery__JsonReturning { ProtobufCMessage base; PgQuery__JsonFormat *format; uint32_t typid; int32_t typmod; }; #define PG_QUERY__JSON_RETURNING__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_returning__descriptor) \ , NULL, 0, 0 } struct PgQuery__JsonValueExpr { ProtobufCMessage base; PgQuery__Node *raw_expr; PgQuery__Node *formatted_expr; PgQuery__JsonFormat *format; }; #define PG_QUERY__JSON_VALUE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_value_expr__descriptor) \ , NULL, NULL, NULL } struct PgQuery__JsonConstructorExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__JsonConstructorType type; size_t n_args; PgQuery__Node **args; PgQuery__Node *func; PgQuery__Node *coercion; PgQuery__JsonReturning *returning; protobuf_c_boolean absent_on_null; protobuf_c_boolean unique; int32_t location; }; #define PG_QUERY__JSON_CONSTRUCTOR_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_constructor_expr__descriptor) \ , NULL, PG_QUERY__JSON_CONSTRUCTOR_TYPE__JSON_CONSTRUCTOR_TYPE_UNDEFINED, 0,NULL, NULL, NULL, NULL, 0, 0, 0 } struct PgQuery__JsonIsPredicate { ProtobufCMessage base; PgQuery__Node *expr; PgQuery__JsonFormat *format; PgQuery__JsonValueType item_type; protobuf_c_boolean unique_keys; int32_t location; }; #define PG_QUERY__JSON_IS_PREDICATE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_is_predicate__descriptor) \ , NULL, NULL, PG_QUERY__JSON_VALUE_TYPE__JSON_VALUE_TYPE_UNDEFINED, 0, 0 } struct PgQuery__JsonBehavior { ProtobufCMessage base; PgQuery__JsonBehaviorType btype; PgQuery__Node *expr; protobuf_c_boolean coerce; int32_t location; }; #define PG_QUERY__JSON_BEHAVIOR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_behavior__descriptor) \ , PG_QUERY__JSON_BEHAVIOR_TYPE__JSON_BEHAVIOR_TYPE_UNDEFINED, NULL, 0, 0 } struct PgQuery__JsonExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__JsonExprOp op; char *column_name; PgQuery__Node *formatted_expr; PgQuery__JsonFormat *format; PgQuery__Node *path_spec; PgQuery__JsonReturning *returning; size_t n_passing_names; PgQuery__Node **passing_names; size_t n_passing_values; PgQuery__Node **passing_values; PgQuery__JsonBehavior *on_empty; PgQuery__JsonBehavior *on_error; protobuf_c_boolean use_io_coercion; protobuf_c_boolean use_json_coercion; PgQuery__JsonWrapper wrapper; protobuf_c_boolean omit_quotes; uint32_t collation; int32_t location; }; #define PG_QUERY__JSON_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_expr__descriptor) \ , NULL, PG_QUERY__JSON_EXPR_OP__JSON_EXPR_OP_UNDEFINED, (char *)protobuf_c_empty_string, NULL, NULL, NULL, NULL, 0,NULL, 0,NULL, NULL, NULL, 0, 0, PG_QUERY__JSON_WRAPPER__JSON_WRAPPER_UNDEFINED, 0, 0, 0 } struct PgQuery__JsonTablePath { ProtobufCMessage base; char *name; }; #define PG_QUERY__JSON_TABLE_PATH__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_table_path__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__JsonTablePathScan { ProtobufCMessage base; PgQuery__Node *plan; PgQuery__JsonTablePath *path; protobuf_c_boolean error_on_error; PgQuery__Node *child; int32_t col_min; int32_t col_max; }; #define PG_QUERY__JSON_TABLE_PATH_SCAN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_table_path_scan__descriptor) \ , NULL, NULL, 0, NULL, 0, 0 } struct PgQuery__JsonTableSiblingJoin { ProtobufCMessage base; PgQuery__Node *plan; PgQuery__Node *lplan; PgQuery__Node *rplan; }; #define PG_QUERY__JSON_TABLE_SIBLING_JOIN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_table_sibling_join__descriptor) \ , NULL, NULL, NULL } 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__MergeAction { ProtobufCMessage base; PgQuery__MergeMatchKind match_kind; PgQuery__CmdType command_type; PgQuery__OverridingKind override; PgQuery__Node *qual; size_t n_target_list; PgQuery__Node **target_list; size_t n_update_colnos; PgQuery__Node **update_colnos; }; #define PG_QUERY__MERGE_ACTION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__merge_action__descriptor) \ , PG_QUERY__MERGE_MATCH_KIND__MERGE_MATCH_KIND_UNDEFINED, PG_QUERY__CMD_TYPE__CMD_TYPE_UNDEFINED, PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED, NULL, 0,NULL, 0,NULL } 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__Alias *join_using_alias; 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, 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__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; protobuf_c_boolean is_return; size_t n_cte_list; PgQuery__Node **cte_list; size_t n_rtable; PgQuery__Node **rtable; size_t n_rteperminfos; PgQuery__Node **rteperminfos; PgQuery__FromExpr *jointree; size_t n_merge_action_list; PgQuery__Node **merge_action_list; int32_t merge_target_relation; PgQuery__Node *merge_join_condition; 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; protobuf_c_boolean group_distinct; 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, 0,NULL, 0,NULL, 0,NULL, NULL, 0,NULL, 0, NULL, 0,NULL, PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED, NULL, 0,NULL, 0,NULL, 0, 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__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__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__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__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__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__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; PgQuery__WindowDef *over; protobuf_c_boolean agg_within_group; protobuf_c_boolean agg_star; protobuf_c_boolean agg_distinct; protobuf_c_boolean func_variadic; PgQuery__CoercionForm funcformat; 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, NULL, 0, 0, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 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__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__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__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__ColumnDef { ProtobufCMessage base; char *colname; PgQuery__TypeName *type_name; char *compression; int32_t inhcount; protobuf_c_boolean is_local; protobuf_c_boolean is_not_null; protobuf_c_boolean is_from_type; char *storage; char *storage_name; 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, (char *)protobuf_c_empty_string, 0, 0, 0, 0, (char *)protobuf_c_empty_string, (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__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__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__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__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__XmlSerialize { ProtobufCMessage base; PgQuery__XmlOptionType xmloption; PgQuery__Node *expr; PgQuery__TypeName *type_name; protobuf_c_boolean indent; 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, 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; PgQuery__PartitionStrategy 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) \ , PG_QUERY__PARTITION_STRATEGY__PARTITION_STRATEGY_UNDEFINED, 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__SinglePartitionSpec { ProtobufCMessage base; }; #define PG_QUERY__SINGLE_PARTITION_SPEC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__single_partition_spec__descriptor) \ } struct PgQuery__PartitionCmd { ProtobufCMessage base; PgQuery__RangeVar *name; PgQuery__PartitionBoundSpec *bound; protobuf_c_boolean concurrent; }; #define PG_QUERY__PARTITION_CMD__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_cmd__descriptor) \ , NULL, NULL, 0 } struct PgQuery__RangeTblEntry { ProtobufCMessage base; PgQuery__Alias *alias; PgQuery__Alias *eref; PgQuery__RTEKind rtekind; uint32_t relid; protobuf_c_boolean inh; char *relkind; int32_t rellockmode; uint32_t perminfoindex; 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; PgQuery__Alias *join_using_alias; 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; protobuf_c_boolean lateral; protobuf_c_boolean in_from_cl; 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) \ , NULL, NULL, PG_QUERY__RTEKIND__RTEKIND_UNDEFINED, 0, 0, (char *)protobuf_c_empty_string, 0, 0, NULL, NULL, 0, PG_QUERY__JOIN_TYPE__JOIN_TYPE_UNDEFINED, 0, 0,NULL, 0,NULL, 0,NULL, 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, 0, 0, 0,NULL } struct PgQuery__RTEPermissionInfo { ProtobufCMessage base; uint32_t relid; protobuf_c_boolean inh; uint64_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; }; #define PG_QUERY__RTEPERMISSION_INFO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__rtepermission_info__descriptor) \ , 0, 0, 0, 0, 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__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__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__CTESearchClause { ProtobufCMessage base; size_t n_search_col_list; PgQuery__Node **search_col_list; protobuf_c_boolean search_breadth_first; char *search_seq_column; int32_t location; }; #define PG_QUERY__CTESEARCH_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__ctesearch_clause__descriptor) \ , 0,NULL, 0, (char *)protobuf_c_empty_string, 0 } struct PgQuery__CTECycleClause { ProtobufCMessage base; size_t n_cycle_col_list; PgQuery__Node **cycle_col_list; char *cycle_mark_column; PgQuery__Node *cycle_mark_value; PgQuery__Node *cycle_mark_default; char *cycle_path_column; int32_t location; uint32_t cycle_mark_type; int32_t cycle_mark_typmod; uint32_t cycle_mark_collation; uint32_t cycle_mark_neop; }; #define PG_QUERY__CTECYCLE_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__ctecycle_clause__descriptor) \ , 0,NULL, (char *)protobuf_c_empty_string, NULL, NULL, (char *)protobuf_c_empty_string, 0, 0, 0, 0, 0 } struct PgQuery__CommonTableExpr { ProtobufCMessage base; char *ctename; size_t n_aliascolnames; PgQuery__Node **aliascolnames; PgQuery__CTEMaterialize ctematerialized; PgQuery__Node *ctequery; PgQuery__CTESearchClause *search_clause; PgQuery__CTECycleClause *cycle_clause; 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, NULL, NULL, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL } struct PgQuery__MergeWhenClause { ProtobufCMessage base; PgQuery__MergeMatchKind match_kind; PgQuery__CmdType command_type; PgQuery__OverridingKind override; PgQuery__Node *condition; size_t n_target_list; PgQuery__Node **target_list; size_t n_values; PgQuery__Node **values; }; #define PG_QUERY__MERGE_WHEN_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__merge_when_clause__descriptor) \ , PG_QUERY__MERGE_MATCH_KIND__MERGE_MATCH_KIND_UNDEFINED, PG_QUERY__CMD_TYPE__CMD_TYPE_UNDEFINED, PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED, NULL, 0,NULL, 0,NULL } 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__JsonOutput { ProtobufCMessage base; PgQuery__TypeName *type_name; PgQuery__JsonReturning *returning; }; #define PG_QUERY__JSON_OUTPUT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_output__descriptor) \ , NULL, NULL } struct PgQuery__JsonArgument { ProtobufCMessage base; PgQuery__JsonValueExpr *val; char *name; }; #define PG_QUERY__JSON_ARGUMENT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_argument__descriptor) \ , NULL, (char *)protobuf_c_empty_string } struct PgQuery__JsonFuncExpr { ProtobufCMessage base; PgQuery__JsonExprOp op; char *column_name; PgQuery__JsonValueExpr *context_item; PgQuery__Node *pathspec; size_t n_passing; PgQuery__Node **passing; PgQuery__JsonOutput *output; PgQuery__JsonBehavior *on_empty; PgQuery__JsonBehavior *on_error; PgQuery__JsonWrapper wrapper; PgQuery__JsonQuotes quotes; int32_t location; }; #define PG_QUERY__JSON_FUNC_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_func_expr__descriptor) \ , PG_QUERY__JSON_EXPR_OP__JSON_EXPR_OP_UNDEFINED, (char *)protobuf_c_empty_string, NULL, NULL, 0,NULL, NULL, NULL, NULL, PG_QUERY__JSON_WRAPPER__JSON_WRAPPER_UNDEFINED, PG_QUERY__JSON_QUOTES__JSON_QUOTES_UNDEFINED, 0 } struct PgQuery__JsonTablePathSpec { ProtobufCMessage base; PgQuery__Node *string; char *name; int32_t name_location; int32_t location; }; #define PG_QUERY__JSON_TABLE_PATH_SPEC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_table_path_spec__descriptor) \ , NULL, (char *)protobuf_c_empty_string, 0, 0 } struct PgQuery__JsonTable { ProtobufCMessage base; PgQuery__JsonValueExpr *context_item; PgQuery__JsonTablePathSpec *pathspec; size_t n_passing; PgQuery__Node **passing; size_t n_columns; PgQuery__Node **columns; PgQuery__JsonBehavior *on_error; PgQuery__Alias *alias; protobuf_c_boolean lateral; int32_t location; }; #define PG_QUERY__JSON_TABLE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_table__descriptor) \ , NULL, NULL, 0,NULL, 0,NULL, NULL, NULL, 0, 0 } struct PgQuery__JsonTableColumn { ProtobufCMessage base; PgQuery__JsonTableColumnType coltype; char *name; PgQuery__TypeName *type_name; PgQuery__JsonTablePathSpec *pathspec; PgQuery__JsonFormat *format; PgQuery__JsonWrapper wrapper; PgQuery__JsonQuotes quotes; size_t n_columns; PgQuery__Node **columns; PgQuery__JsonBehavior *on_empty; PgQuery__JsonBehavior *on_error; int32_t location; }; #define PG_QUERY__JSON_TABLE_COLUMN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_table_column__descriptor) \ , PG_QUERY__JSON_TABLE_COLUMN_TYPE__JSON_TABLE_COLUMN_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, NULL, NULL, NULL, PG_QUERY__JSON_WRAPPER__JSON_WRAPPER_UNDEFINED, PG_QUERY__JSON_QUOTES__JSON_QUOTES_UNDEFINED, 0,NULL, NULL, NULL, 0 } struct PgQuery__JsonKeyValue { ProtobufCMessage base; PgQuery__Node *key; PgQuery__JsonValueExpr *value; }; #define PG_QUERY__JSON_KEY_VALUE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_key_value__descriptor) \ , NULL, NULL } struct PgQuery__JsonParseExpr { ProtobufCMessage base; PgQuery__JsonValueExpr *expr; PgQuery__JsonOutput *output; protobuf_c_boolean unique_keys; int32_t location; }; #define PG_QUERY__JSON_PARSE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_parse_expr__descriptor) \ , NULL, NULL, 0, 0 } struct PgQuery__JsonScalarExpr { ProtobufCMessage base; PgQuery__Node *expr; PgQuery__JsonOutput *output; int32_t location; }; #define PG_QUERY__JSON_SCALAR_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_scalar_expr__descriptor) \ , NULL, NULL, 0 } struct PgQuery__JsonSerializeExpr { ProtobufCMessage base; PgQuery__JsonValueExpr *expr; PgQuery__JsonOutput *output; int32_t location; }; #define PG_QUERY__JSON_SERIALIZE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_serialize_expr__descriptor) \ , NULL, NULL, 0 } struct PgQuery__JsonObjectConstructor { ProtobufCMessage base; size_t n_exprs; PgQuery__Node **exprs; PgQuery__JsonOutput *output; protobuf_c_boolean absent_on_null; protobuf_c_boolean unique; int32_t location; }; #define PG_QUERY__JSON_OBJECT_CONSTRUCTOR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_object_constructor__descriptor) \ , 0,NULL, NULL, 0, 0, 0 } struct PgQuery__JsonArrayConstructor { ProtobufCMessage base; size_t n_exprs; PgQuery__Node **exprs; PgQuery__JsonOutput *output; protobuf_c_boolean absent_on_null; int32_t location; }; #define PG_QUERY__JSON_ARRAY_CONSTRUCTOR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_array_constructor__descriptor) \ , 0,NULL, NULL, 0, 0 } struct PgQuery__JsonArrayQueryConstructor { ProtobufCMessage base; PgQuery__Node *query; PgQuery__JsonOutput *output; PgQuery__JsonFormat *format; protobuf_c_boolean absent_on_null; int32_t location; }; #define PG_QUERY__JSON_ARRAY_QUERY_CONSTRUCTOR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_array_query_constructor__descriptor) \ , NULL, NULL, NULL, 0, 0 } struct PgQuery__JsonAggConstructor { ProtobufCMessage base; PgQuery__JsonOutput *output; PgQuery__Node *agg_filter; size_t n_agg_order; PgQuery__Node **agg_order; PgQuery__WindowDef *over; int32_t location; }; #define PG_QUERY__JSON_AGG_CONSTRUCTOR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_agg_constructor__descriptor) \ , NULL, NULL, 0,NULL, NULL, 0 } struct PgQuery__JsonObjectAgg { ProtobufCMessage base; PgQuery__JsonAggConstructor *constructor; PgQuery__JsonKeyValue *arg; protobuf_c_boolean absent_on_null; protobuf_c_boolean unique; }; #define PG_QUERY__JSON_OBJECT_AGG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_object_agg__descriptor) \ , NULL, NULL, 0, 0 } struct PgQuery__JsonArrayAgg { ProtobufCMessage base; PgQuery__JsonAggConstructor *constructor; PgQuery__JsonValueExpr *arg; protobuf_c_boolean absent_on_null; }; #define PG_QUERY__JSON_ARRAY_AGG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__json_array_agg__descriptor) \ , NULL, 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__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__MergeStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; PgQuery__Node *source_relation; PgQuery__Node *join_condition; size_t n_merge_when_clauses; PgQuery__Node **merge_when_clauses; size_t n_returning_list; PgQuery__Node **returning_list; PgQuery__WithClause *with_clause; }; #define PG_QUERY__MERGE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__merge_stmt__descriptor) \ , NULL, 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; protobuf_c_boolean group_distinct; 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, 0, 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__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__ReturnStmt { ProtobufCMessage base; PgQuery__Node *returnval; }; #define PG_QUERY__RETURN_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__return_stmt__descriptor) \ , NULL } struct PgQuery__PLAssignStmt { ProtobufCMessage base; char *name; size_t n_indirection; PgQuery__Node **indirection; int32_t nnames; PgQuery__SelectStmt *val; int32_t location; }; #define PG_QUERY__PLASSIGN_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__plassign_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, 0, NULL, 0 } 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__AlterTableStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; size_t n_cmds; PgQuery__Node **cmds; PgQuery__ObjectType objtype; 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__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__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; protobuf_c_boolean recurse; }; #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, 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__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__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__RoleSpec *grantor; 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, NULL, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED } struct PgQuery__ObjectWithArgs { ProtobufCMessage base; size_t n_objname; PgQuery__Node **objname; size_t n_objargs; PgQuery__Node **objargs; size_t n_objfuncargs; PgQuery__Node **objfuncargs; 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,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__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; size_t n_opt; PgQuery__Node **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, 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__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__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__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__Constraint { ProtobufCMessage base; PgQuery__ConstrType contype; char *conname; protobuf_c_boolean deferrable; protobuf_c_boolean initdeferred; protobuf_c_boolean skip_validation; protobuf_c_boolean initially_valid; protobuf_c_boolean is_no_inherit; PgQuery__Node *raw_expr; char *cooked_expr; char *generated_when; int32_t inhcount; protobuf_c_boolean nulls_not_distinct; 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_fk_del_set_cols; PgQuery__Node **fk_del_set_cols; size_t n_old_conpfeqop; PgQuery__Node **old_conpfeqop; uint32_t old_pktable_oid; int32_t location; }; #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, 0, NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, 0, 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,NULL, 0, 0 } 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__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__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__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__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__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__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__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__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__CreateTrigStmt { ProtobufCMessage base; protobuf_c_boolean replace; protobuf_c_boolean isconstraint; 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; 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) \ , 0, 0, (char *)protobuf_c_empty_string, NULL, 0,NULL, 0,NULL, 0, 0, 0, 0,NULL, NULL, 0,NULL, 0, 0, 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__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__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__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__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__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__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__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__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__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__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__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__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__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__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_number; uint32_t old_create_subid; uint32_t old_first_relfilelocator_subid; protobuf_c_boolean unique; protobuf_c_boolean nulls_not_distinct; 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, 0 } 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 transformed; 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, 0 } struct PgQuery__StatsElem { ProtobufCMessage base; char *name; PgQuery__Node *expr; }; #define PG_QUERY__STATS_ELEM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__stats_elem__descriptor) \ , (char *)protobuf_c_empty_string, NULL } struct PgQuery__AlterStatsStmt { ProtobufCMessage base; size_t n_defnames; PgQuery__Node **defnames; PgQuery__Node *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, NULL, 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; PgQuery__Node *sql_body; }; #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, NULL } 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__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__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__CallStmt { ProtobufCMessage base; PgQuery__FuncCall *funccall; PgQuery__FuncExpr *funcexpr; size_t n_outargs; PgQuery__Node **outargs; }; #define PG_QUERY__CALL_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__call_stmt__descriptor) \ , NULL, NULL, 0,NULL } 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__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__AlterObjectDependsStmt { ProtobufCMessage base; PgQuery__ObjectType object_type; PgQuery__RangeVar *relation; PgQuery__Node *object; PgQuery__String *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__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; int32_t location; }; #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, 0 } 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__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__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__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__AlterDatabaseRefreshCollStmt { ProtobufCMessage base; char *dbname; }; #define PG_QUERY__ALTER_DATABASE_REFRESH_COLL_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_database_refresh_coll_stmt__descriptor) \ , (char *)protobuf_c_empty_string } 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__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__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__ClusterStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; char *indexname; size_t n_params; PgQuery__Node **params; }; #define PG_QUERY__CLUSTER_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__cluster_stmt__descriptor) \ , NULL, (char *)protobuf_c_empty_string, 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__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__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 objtype; 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__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__CheckPointStmt { ProtobufCMessage base; }; #define PG_QUERY__CHECK_POINT_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__check_point_stmt__descriptor) \ } 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__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; size_t n_params; PgQuery__Node **params; }; #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,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__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__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; protobuf_c_boolean isall; int32_t location; }; #define PG_QUERY__DEALLOCATE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__deallocate_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0, 0 } 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__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__PublicationTable { ProtobufCMessage base; PgQuery__RangeVar *relation; PgQuery__Node *where_clause; size_t n_columns; PgQuery__Node **columns; }; #define PG_QUERY__PUBLICATION_TABLE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__publication_table__descriptor) \ , NULL, NULL, 0,NULL } struct PgQuery__PublicationObjSpec { ProtobufCMessage base; PgQuery__PublicationObjSpecType pubobjtype; char *name; PgQuery__PublicationTable *pubtable; int32_t location; }; #define PG_QUERY__PUBLICATION_OBJ_SPEC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__publication_obj_spec__descriptor) \ , PG_QUERY__PUBLICATION_OBJ_SPEC_TYPE__PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, NULL, 0 } struct PgQuery__CreatePublicationStmt { ProtobufCMessage base; char *pubname; size_t n_options; PgQuery__Node **options; size_t n_pubobjects; PgQuery__Node **pubobjects; 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_pubobjects; PgQuery__Node **pubobjects; protobuf_c_boolean for_all_tables; PgQuery__AlterPublicationAction 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__ALTER_PUBLICATION_ACTION__ALTER_PUBLICATION_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__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__Boolean methods */ void pg_query__boolean__init (PgQuery__Boolean *message); size_t pg_query__boolean__get_packed_size (const PgQuery__Boolean *message); size_t pg_query__boolean__pack (const PgQuery__Boolean *message, uint8_t *out); size_t pg_query__boolean__pack_to_buffer (const PgQuery__Boolean *message, ProtobufCBuffer *buffer); PgQuery__Boolean * pg_query__boolean__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__boolean__free_unpacked (PgQuery__Boolean *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__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__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__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__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__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__WindowFuncRunCondition methods */ void pg_query__window_func_run_condition__init (PgQuery__WindowFuncRunCondition *message); size_t pg_query__window_func_run_condition__get_packed_size (const PgQuery__WindowFuncRunCondition *message); size_t pg_query__window_func_run_condition__pack (const PgQuery__WindowFuncRunCondition *message, uint8_t *out); size_t pg_query__window_func_run_condition__pack_to_buffer (const PgQuery__WindowFuncRunCondition *message, ProtobufCBuffer *buffer); PgQuery__WindowFuncRunCondition * pg_query__window_func_run_condition__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__window_func_run_condition__free_unpacked (PgQuery__WindowFuncRunCondition *message, ProtobufCAllocator *allocator); /* PgQuery__MergeSupportFunc methods */ void pg_query__merge_support_func__init (PgQuery__MergeSupportFunc *message); size_t pg_query__merge_support_func__get_packed_size (const PgQuery__MergeSupportFunc *message); size_t pg_query__merge_support_func__pack (const PgQuery__MergeSupportFunc *message, uint8_t *out); size_t pg_query__merge_support_func__pack_to_buffer (const PgQuery__MergeSupportFunc *message, ProtobufCBuffer *buffer); PgQuery__MergeSupportFunc * pg_query__merge_support_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__merge_support_func__free_unpacked (PgQuery__MergeSupportFunc *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__JsonFormat methods */ void pg_query__json_format__init (PgQuery__JsonFormat *message); size_t pg_query__json_format__get_packed_size (const PgQuery__JsonFormat *message); size_t pg_query__json_format__pack (const PgQuery__JsonFormat *message, uint8_t *out); size_t pg_query__json_format__pack_to_buffer (const PgQuery__JsonFormat *message, ProtobufCBuffer *buffer); PgQuery__JsonFormat * pg_query__json_format__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_format__free_unpacked (PgQuery__JsonFormat *message, ProtobufCAllocator *allocator); /* PgQuery__JsonReturning methods */ void pg_query__json_returning__init (PgQuery__JsonReturning *message); size_t pg_query__json_returning__get_packed_size (const PgQuery__JsonReturning *message); size_t pg_query__json_returning__pack (const PgQuery__JsonReturning *message, uint8_t *out); size_t pg_query__json_returning__pack_to_buffer (const PgQuery__JsonReturning *message, ProtobufCBuffer *buffer); PgQuery__JsonReturning * pg_query__json_returning__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_returning__free_unpacked (PgQuery__JsonReturning *message, ProtobufCAllocator *allocator); /* PgQuery__JsonValueExpr methods */ void pg_query__json_value_expr__init (PgQuery__JsonValueExpr *message); size_t pg_query__json_value_expr__get_packed_size (const PgQuery__JsonValueExpr *message); size_t pg_query__json_value_expr__pack (const PgQuery__JsonValueExpr *message, uint8_t *out); size_t pg_query__json_value_expr__pack_to_buffer (const PgQuery__JsonValueExpr *message, ProtobufCBuffer *buffer); PgQuery__JsonValueExpr * pg_query__json_value_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_value_expr__free_unpacked (PgQuery__JsonValueExpr *message, ProtobufCAllocator *allocator); /* PgQuery__JsonConstructorExpr methods */ void pg_query__json_constructor_expr__init (PgQuery__JsonConstructorExpr *message); size_t pg_query__json_constructor_expr__get_packed_size (const PgQuery__JsonConstructorExpr *message); size_t pg_query__json_constructor_expr__pack (const PgQuery__JsonConstructorExpr *message, uint8_t *out); size_t pg_query__json_constructor_expr__pack_to_buffer (const PgQuery__JsonConstructorExpr *message, ProtobufCBuffer *buffer); PgQuery__JsonConstructorExpr * pg_query__json_constructor_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_constructor_expr__free_unpacked (PgQuery__JsonConstructorExpr *message, ProtobufCAllocator *allocator); /* PgQuery__JsonIsPredicate methods */ void pg_query__json_is_predicate__init (PgQuery__JsonIsPredicate *message); size_t pg_query__json_is_predicate__get_packed_size (const PgQuery__JsonIsPredicate *message); size_t pg_query__json_is_predicate__pack (const PgQuery__JsonIsPredicate *message, uint8_t *out); size_t pg_query__json_is_predicate__pack_to_buffer (const PgQuery__JsonIsPredicate *message, ProtobufCBuffer *buffer); PgQuery__JsonIsPredicate * pg_query__json_is_predicate__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_is_predicate__free_unpacked (PgQuery__JsonIsPredicate *message, ProtobufCAllocator *allocator); /* PgQuery__JsonBehavior methods */ void pg_query__json_behavior__init (PgQuery__JsonBehavior *message); size_t pg_query__json_behavior__get_packed_size (const PgQuery__JsonBehavior *message); size_t pg_query__json_behavior__pack (const PgQuery__JsonBehavior *message, uint8_t *out); size_t pg_query__json_behavior__pack_to_buffer (const PgQuery__JsonBehavior *message, ProtobufCBuffer *buffer); PgQuery__JsonBehavior * pg_query__json_behavior__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_behavior__free_unpacked (PgQuery__JsonBehavior *message, ProtobufCAllocator *allocator); /* PgQuery__JsonExpr methods */ void pg_query__json_expr__init (PgQuery__JsonExpr *message); size_t pg_query__json_expr__get_packed_size (const PgQuery__JsonExpr *message); size_t pg_query__json_expr__pack (const PgQuery__JsonExpr *message, uint8_t *out); size_t pg_query__json_expr__pack_to_buffer (const PgQuery__JsonExpr *message, ProtobufCBuffer *buffer); PgQuery__JsonExpr * pg_query__json_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_expr__free_unpacked (PgQuery__JsonExpr *message, ProtobufCAllocator *allocator); /* PgQuery__JsonTablePath methods */ void pg_query__json_table_path__init (PgQuery__JsonTablePath *message); size_t pg_query__json_table_path__get_packed_size (const PgQuery__JsonTablePath *message); size_t pg_query__json_table_path__pack (const PgQuery__JsonTablePath *message, uint8_t *out); size_t pg_query__json_table_path__pack_to_buffer (const PgQuery__JsonTablePath *message, ProtobufCBuffer *buffer); PgQuery__JsonTablePath * pg_query__json_table_path__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_table_path__free_unpacked (PgQuery__JsonTablePath *message, ProtobufCAllocator *allocator); /* PgQuery__JsonTablePathScan methods */ void pg_query__json_table_path_scan__init (PgQuery__JsonTablePathScan *message); size_t pg_query__json_table_path_scan__get_packed_size (const PgQuery__JsonTablePathScan *message); size_t pg_query__json_table_path_scan__pack (const PgQuery__JsonTablePathScan *message, uint8_t *out); size_t pg_query__json_table_path_scan__pack_to_buffer (const PgQuery__JsonTablePathScan *message, ProtobufCBuffer *buffer); PgQuery__JsonTablePathScan * pg_query__json_table_path_scan__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_table_path_scan__free_unpacked (PgQuery__JsonTablePathScan *message, ProtobufCAllocator *allocator); /* PgQuery__JsonTableSiblingJoin methods */ void pg_query__json_table_sibling_join__init (PgQuery__JsonTableSiblingJoin *message); size_t pg_query__json_table_sibling_join__get_packed_size (const PgQuery__JsonTableSiblingJoin *message); size_t pg_query__json_table_sibling_join__pack (const PgQuery__JsonTableSiblingJoin *message, uint8_t *out); size_t pg_query__json_table_sibling_join__pack_to_buffer (const PgQuery__JsonTableSiblingJoin *message, ProtobufCBuffer *buffer); PgQuery__JsonTableSiblingJoin * pg_query__json_table_sibling_join__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_table_sibling_join__free_unpacked (PgQuery__JsonTableSiblingJoin *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__MergeAction methods */ void pg_query__merge_action__init (PgQuery__MergeAction *message); size_t pg_query__merge_action__get_packed_size (const PgQuery__MergeAction *message); size_t pg_query__merge_action__pack (const PgQuery__MergeAction *message, uint8_t *out); size_t pg_query__merge_action__pack_to_buffer (const PgQuery__MergeAction *message, ProtobufCBuffer *buffer); PgQuery__MergeAction * pg_query__merge_action__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__merge_action__free_unpacked (PgQuery__MergeAction *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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__SinglePartitionSpec methods */ void pg_query__single_partition_spec__init (PgQuery__SinglePartitionSpec *message); size_t pg_query__single_partition_spec__get_packed_size (const PgQuery__SinglePartitionSpec *message); size_t pg_query__single_partition_spec__pack (const PgQuery__SinglePartitionSpec *message, uint8_t *out); size_t pg_query__single_partition_spec__pack_to_buffer (const PgQuery__SinglePartitionSpec *message, ProtobufCBuffer *buffer); PgQuery__SinglePartitionSpec * pg_query__single_partition_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__single_partition_spec__free_unpacked (PgQuery__SinglePartitionSpec *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__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__RTEPermissionInfo methods */ void pg_query__rtepermission_info__init (PgQuery__RTEPermissionInfo *message); size_t pg_query__rtepermission_info__get_packed_size (const PgQuery__RTEPermissionInfo *message); size_t pg_query__rtepermission_info__pack (const PgQuery__RTEPermissionInfo *message, uint8_t *out); size_t pg_query__rtepermission_info__pack_to_buffer (const PgQuery__RTEPermissionInfo *message, ProtobufCBuffer *buffer); PgQuery__RTEPermissionInfo * pg_query__rtepermission_info__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__rtepermission_info__free_unpacked (PgQuery__RTEPermissionInfo *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__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__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__CTESearchClause methods */ void pg_query__ctesearch_clause__init (PgQuery__CTESearchClause *message); size_t pg_query__ctesearch_clause__get_packed_size (const PgQuery__CTESearchClause *message); size_t pg_query__ctesearch_clause__pack (const PgQuery__CTESearchClause *message, uint8_t *out); size_t pg_query__ctesearch_clause__pack_to_buffer (const PgQuery__CTESearchClause *message, ProtobufCBuffer *buffer); PgQuery__CTESearchClause * pg_query__ctesearch_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__ctesearch_clause__free_unpacked (PgQuery__CTESearchClause *message, ProtobufCAllocator *allocator); /* PgQuery__CTECycleClause methods */ void pg_query__ctecycle_clause__init (PgQuery__CTECycleClause *message); size_t pg_query__ctecycle_clause__get_packed_size (const PgQuery__CTECycleClause *message); size_t pg_query__ctecycle_clause__pack (const PgQuery__CTECycleClause *message, uint8_t *out); size_t pg_query__ctecycle_clause__pack_to_buffer (const PgQuery__CTECycleClause *message, ProtobufCBuffer *buffer); PgQuery__CTECycleClause * pg_query__ctecycle_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__ctecycle_clause__free_unpacked (PgQuery__CTECycleClause *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__MergeWhenClause methods */ void pg_query__merge_when_clause__init (PgQuery__MergeWhenClause *message); size_t pg_query__merge_when_clause__get_packed_size (const PgQuery__MergeWhenClause *message); size_t pg_query__merge_when_clause__pack (const PgQuery__MergeWhenClause *message, uint8_t *out); size_t pg_query__merge_when_clause__pack_to_buffer (const PgQuery__MergeWhenClause *message, ProtobufCBuffer *buffer); PgQuery__MergeWhenClause * pg_query__merge_when_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__merge_when_clause__free_unpacked (PgQuery__MergeWhenClause *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__JsonOutput methods */ void pg_query__json_output__init (PgQuery__JsonOutput *message); size_t pg_query__json_output__get_packed_size (const PgQuery__JsonOutput *message); size_t pg_query__json_output__pack (const PgQuery__JsonOutput *message, uint8_t *out); size_t pg_query__json_output__pack_to_buffer (const PgQuery__JsonOutput *message, ProtobufCBuffer *buffer); PgQuery__JsonOutput * pg_query__json_output__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_output__free_unpacked (PgQuery__JsonOutput *message, ProtobufCAllocator *allocator); /* PgQuery__JsonArgument methods */ void pg_query__json_argument__init (PgQuery__JsonArgument *message); size_t pg_query__json_argument__get_packed_size (const PgQuery__JsonArgument *message); size_t pg_query__json_argument__pack (const PgQuery__JsonArgument *message, uint8_t *out); size_t pg_query__json_argument__pack_to_buffer (const PgQuery__JsonArgument *message, ProtobufCBuffer *buffer); PgQuery__JsonArgument * pg_query__json_argument__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_argument__free_unpacked (PgQuery__JsonArgument *message, ProtobufCAllocator *allocator); /* PgQuery__JsonFuncExpr methods */ void pg_query__json_func_expr__init (PgQuery__JsonFuncExpr *message); size_t pg_query__json_func_expr__get_packed_size (const PgQuery__JsonFuncExpr *message); size_t pg_query__json_func_expr__pack (const PgQuery__JsonFuncExpr *message, uint8_t *out); size_t pg_query__json_func_expr__pack_to_buffer (const PgQuery__JsonFuncExpr *message, ProtobufCBuffer *buffer); PgQuery__JsonFuncExpr * pg_query__json_func_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_func_expr__free_unpacked (PgQuery__JsonFuncExpr *message, ProtobufCAllocator *allocator); /* PgQuery__JsonTablePathSpec methods */ void pg_query__json_table_path_spec__init (PgQuery__JsonTablePathSpec *message); size_t pg_query__json_table_path_spec__get_packed_size (const PgQuery__JsonTablePathSpec *message); size_t pg_query__json_table_path_spec__pack (const PgQuery__JsonTablePathSpec *message, uint8_t *out); size_t pg_query__json_table_path_spec__pack_to_buffer (const PgQuery__JsonTablePathSpec *message, ProtobufCBuffer *buffer); PgQuery__JsonTablePathSpec * pg_query__json_table_path_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_table_path_spec__free_unpacked (PgQuery__JsonTablePathSpec *message, ProtobufCAllocator *allocator); /* PgQuery__JsonTable methods */ void pg_query__json_table__init (PgQuery__JsonTable *message); size_t pg_query__json_table__get_packed_size (const PgQuery__JsonTable *message); size_t pg_query__json_table__pack (const PgQuery__JsonTable *message, uint8_t *out); size_t pg_query__json_table__pack_to_buffer (const PgQuery__JsonTable *message, ProtobufCBuffer *buffer); PgQuery__JsonTable * pg_query__json_table__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_table__free_unpacked (PgQuery__JsonTable *message, ProtobufCAllocator *allocator); /* PgQuery__JsonTableColumn methods */ void pg_query__json_table_column__init (PgQuery__JsonTableColumn *message); size_t pg_query__json_table_column__get_packed_size (const PgQuery__JsonTableColumn *message); size_t pg_query__json_table_column__pack (const PgQuery__JsonTableColumn *message, uint8_t *out); size_t pg_query__json_table_column__pack_to_buffer (const PgQuery__JsonTableColumn *message, ProtobufCBuffer *buffer); PgQuery__JsonTableColumn * pg_query__json_table_column__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_table_column__free_unpacked (PgQuery__JsonTableColumn *message, ProtobufCAllocator *allocator); /* PgQuery__JsonKeyValue methods */ void pg_query__json_key_value__init (PgQuery__JsonKeyValue *message); size_t pg_query__json_key_value__get_packed_size (const PgQuery__JsonKeyValue *message); size_t pg_query__json_key_value__pack (const PgQuery__JsonKeyValue *message, uint8_t *out); size_t pg_query__json_key_value__pack_to_buffer (const PgQuery__JsonKeyValue *message, ProtobufCBuffer *buffer); PgQuery__JsonKeyValue * pg_query__json_key_value__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_key_value__free_unpacked (PgQuery__JsonKeyValue *message, ProtobufCAllocator *allocator); /* PgQuery__JsonParseExpr methods */ void pg_query__json_parse_expr__init (PgQuery__JsonParseExpr *message); size_t pg_query__json_parse_expr__get_packed_size (const PgQuery__JsonParseExpr *message); size_t pg_query__json_parse_expr__pack (const PgQuery__JsonParseExpr *message, uint8_t *out); size_t pg_query__json_parse_expr__pack_to_buffer (const PgQuery__JsonParseExpr *message, ProtobufCBuffer *buffer); PgQuery__JsonParseExpr * pg_query__json_parse_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_parse_expr__free_unpacked (PgQuery__JsonParseExpr *message, ProtobufCAllocator *allocator); /* PgQuery__JsonScalarExpr methods */ void pg_query__json_scalar_expr__init (PgQuery__JsonScalarExpr *message); size_t pg_query__json_scalar_expr__get_packed_size (const PgQuery__JsonScalarExpr *message); size_t pg_query__json_scalar_expr__pack (const PgQuery__JsonScalarExpr *message, uint8_t *out); size_t pg_query__json_scalar_expr__pack_to_buffer (const PgQuery__JsonScalarExpr *message, ProtobufCBuffer *buffer); PgQuery__JsonScalarExpr * pg_query__json_scalar_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_scalar_expr__free_unpacked (PgQuery__JsonScalarExpr *message, ProtobufCAllocator *allocator); /* PgQuery__JsonSerializeExpr methods */ void pg_query__json_serialize_expr__init (PgQuery__JsonSerializeExpr *message); size_t pg_query__json_serialize_expr__get_packed_size (const PgQuery__JsonSerializeExpr *message); size_t pg_query__json_serialize_expr__pack (const PgQuery__JsonSerializeExpr *message, uint8_t *out); size_t pg_query__json_serialize_expr__pack_to_buffer (const PgQuery__JsonSerializeExpr *message, ProtobufCBuffer *buffer); PgQuery__JsonSerializeExpr * pg_query__json_serialize_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_serialize_expr__free_unpacked (PgQuery__JsonSerializeExpr *message, ProtobufCAllocator *allocator); /* PgQuery__JsonObjectConstructor methods */ void pg_query__json_object_constructor__init (PgQuery__JsonObjectConstructor *message); size_t pg_query__json_object_constructor__get_packed_size (const PgQuery__JsonObjectConstructor *message); size_t pg_query__json_object_constructor__pack (const PgQuery__JsonObjectConstructor *message, uint8_t *out); size_t pg_query__json_object_constructor__pack_to_buffer (const PgQuery__JsonObjectConstructor *message, ProtobufCBuffer *buffer); PgQuery__JsonObjectConstructor * pg_query__json_object_constructor__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_object_constructor__free_unpacked (PgQuery__JsonObjectConstructor *message, ProtobufCAllocator *allocator); /* PgQuery__JsonArrayConstructor methods */ void pg_query__json_array_constructor__init (PgQuery__JsonArrayConstructor *message); size_t pg_query__json_array_constructor__get_packed_size (const PgQuery__JsonArrayConstructor *message); size_t pg_query__json_array_constructor__pack (const PgQuery__JsonArrayConstructor *message, uint8_t *out); size_t pg_query__json_array_constructor__pack_to_buffer (const PgQuery__JsonArrayConstructor *message, ProtobufCBuffer *buffer); PgQuery__JsonArrayConstructor * pg_query__json_array_constructor__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_array_constructor__free_unpacked (PgQuery__JsonArrayConstructor *message, ProtobufCAllocator *allocator); /* PgQuery__JsonArrayQueryConstructor methods */ void pg_query__json_array_query_constructor__init (PgQuery__JsonArrayQueryConstructor *message); size_t pg_query__json_array_query_constructor__get_packed_size (const PgQuery__JsonArrayQueryConstructor *message); size_t pg_query__json_array_query_constructor__pack (const PgQuery__JsonArrayQueryConstructor *message, uint8_t *out); size_t pg_query__json_array_query_constructor__pack_to_buffer (const PgQuery__JsonArrayQueryConstructor *message, ProtobufCBuffer *buffer); PgQuery__JsonArrayQueryConstructor * pg_query__json_array_query_constructor__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_array_query_constructor__free_unpacked (PgQuery__JsonArrayQueryConstructor *message, ProtobufCAllocator *allocator); /* PgQuery__JsonAggConstructor methods */ void pg_query__json_agg_constructor__init (PgQuery__JsonAggConstructor *message); size_t pg_query__json_agg_constructor__get_packed_size (const PgQuery__JsonAggConstructor *message); size_t pg_query__json_agg_constructor__pack (const PgQuery__JsonAggConstructor *message, uint8_t *out); size_t pg_query__json_agg_constructor__pack_to_buffer (const PgQuery__JsonAggConstructor *message, ProtobufCBuffer *buffer); PgQuery__JsonAggConstructor * pg_query__json_agg_constructor__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_agg_constructor__free_unpacked (PgQuery__JsonAggConstructor *message, ProtobufCAllocator *allocator); /* PgQuery__JsonObjectAgg methods */ void pg_query__json_object_agg__init (PgQuery__JsonObjectAgg *message); size_t pg_query__json_object_agg__get_packed_size (const PgQuery__JsonObjectAgg *message); size_t pg_query__json_object_agg__pack (const PgQuery__JsonObjectAgg *message, uint8_t *out); size_t pg_query__json_object_agg__pack_to_buffer (const PgQuery__JsonObjectAgg *message, ProtobufCBuffer *buffer); PgQuery__JsonObjectAgg * pg_query__json_object_agg__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_object_agg__free_unpacked (PgQuery__JsonObjectAgg *message, ProtobufCAllocator *allocator); /* PgQuery__JsonArrayAgg methods */ void pg_query__json_array_agg__init (PgQuery__JsonArrayAgg *message); size_t pg_query__json_array_agg__get_packed_size (const PgQuery__JsonArrayAgg *message); size_t pg_query__json_array_agg__pack (const PgQuery__JsonArrayAgg *message, uint8_t *out); size_t pg_query__json_array_agg__pack_to_buffer (const PgQuery__JsonArrayAgg *message, ProtobufCBuffer *buffer); PgQuery__JsonArrayAgg * pg_query__json_array_agg__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__json_array_agg__free_unpacked (PgQuery__JsonArrayAgg *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__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__MergeStmt methods */ void pg_query__merge_stmt__init (PgQuery__MergeStmt *message); size_t pg_query__merge_stmt__get_packed_size (const PgQuery__MergeStmt *message); size_t pg_query__merge_stmt__pack (const PgQuery__MergeStmt *message, uint8_t *out); size_t pg_query__merge_stmt__pack_to_buffer (const PgQuery__MergeStmt *message, ProtobufCBuffer *buffer); PgQuery__MergeStmt * pg_query__merge_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__merge_stmt__free_unpacked (PgQuery__MergeStmt *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__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__ReturnStmt methods */ void pg_query__return_stmt__init (PgQuery__ReturnStmt *message); size_t pg_query__return_stmt__get_packed_size (const PgQuery__ReturnStmt *message); size_t pg_query__return_stmt__pack (const PgQuery__ReturnStmt *message, uint8_t *out); size_t pg_query__return_stmt__pack_to_buffer (const PgQuery__ReturnStmt *message, ProtobufCBuffer *buffer); PgQuery__ReturnStmt * pg_query__return_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__return_stmt__free_unpacked (PgQuery__ReturnStmt *message, ProtobufCAllocator *allocator); /* PgQuery__PLAssignStmt methods */ void pg_query__plassign_stmt__init (PgQuery__PLAssignStmt *message); size_t pg_query__plassign_stmt__get_packed_size (const PgQuery__PLAssignStmt *message); size_t pg_query__plassign_stmt__pack (const PgQuery__PLAssignStmt *message, uint8_t *out); size_t pg_query__plassign_stmt__pack_to_buffer (const PgQuery__PLAssignStmt *message, ProtobufCBuffer *buffer); PgQuery__PLAssignStmt * pg_query__plassign_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__plassign_stmt__free_unpacked (PgQuery__PLAssignStmt *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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__StatsElem methods */ void pg_query__stats_elem__init (PgQuery__StatsElem *message); size_t pg_query__stats_elem__get_packed_size (const PgQuery__StatsElem *message); size_t pg_query__stats_elem__pack (const PgQuery__StatsElem *message, uint8_t *out); size_t pg_query__stats_elem__pack_to_buffer (const PgQuery__StatsElem *message, ProtobufCBuffer *buffer); PgQuery__StatsElem * pg_query__stats_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__stats_elem__free_unpacked (PgQuery__StatsElem *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__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__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__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__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__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__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__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__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__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__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__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__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__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__AlterDatabaseRefreshCollStmt methods */ void pg_query__alter_database_refresh_coll_stmt__init (PgQuery__AlterDatabaseRefreshCollStmt *message); size_t pg_query__alter_database_refresh_coll_stmt__get_packed_size (const PgQuery__AlterDatabaseRefreshCollStmt *message); size_t pg_query__alter_database_refresh_coll_stmt__pack (const PgQuery__AlterDatabaseRefreshCollStmt *message, uint8_t *out); size_t pg_query__alter_database_refresh_coll_stmt__pack_to_buffer (const PgQuery__AlterDatabaseRefreshCollStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterDatabaseRefreshCollStmt * pg_query__alter_database_refresh_coll_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_database_refresh_coll_stmt__free_unpacked (PgQuery__AlterDatabaseRefreshCollStmt *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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__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__PublicationTable methods */ void pg_query__publication_table__init (PgQuery__PublicationTable *message); size_t pg_query__publication_table__get_packed_size (const PgQuery__PublicationTable *message); size_t pg_query__publication_table__pack (const PgQuery__PublicationTable *message, uint8_t *out); size_t pg_query__publication_table__pack_to_buffer (const PgQuery__PublicationTable *message, ProtobufCBuffer *buffer); PgQuery__PublicationTable * pg_query__publication_table__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__publication_table__free_unpacked (PgQuery__PublicationTable *message, ProtobufCAllocator *allocator); /* PgQuery__PublicationObjSpec methods */ void pg_query__publication_obj_spec__init (PgQuery__PublicationObjSpec *message); size_t pg_query__publication_obj_spec__get_packed_size (const PgQuery__PublicationObjSpec *message); size_t pg_query__publication_obj_spec__pack (const PgQuery__PublicationObjSpec *message, uint8_t *out); size_t pg_query__publication_obj_spec__pack_to_buffer (const PgQuery__PublicationObjSpec *message, ProtobufCBuffer *buffer); PgQuery__PublicationObjSpec * pg_query__publication_obj_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__publication_obj_spec__free_unpacked (PgQuery__PublicationObjSpec *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__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__Boolean_Closure) (const PgQuery__Boolean *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__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__AConst_Closure) (const PgQuery__AConst *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__IntoClause_Closure) (const PgQuery__IntoClause *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__WindowFuncRunCondition_Closure) (const PgQuery__WindowFuncRunCondition *message, void *closure_data); typedef void (*PgQuery__MergeSupportFunc_Closure) (const PgQuery__MergeSupportFunc *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__JsonFormat_Closure) (const PgQuery__JsonFormat *message, void *closure_data); typedef void (*PgQuery__JsonReturning_Closure) (const PgQuery__JsonReturning *message, void *closure_data); typedef void (*PgQuery__JsonValueExpr_Closure) (const PgQuery__JsonValueExpr *message, void *closure_data); typedef void (*PgQuery__JsonConstructorExpr_Closure) (const PgQuery__JsonConstructorExpr *message, void *closure_data); typedef void (*PgQuery__JsonIsPredicate_Closure) (const PgQuery__JsonIsPredicate *message, void *closure_data); typedef void (*PgQuery__JsonBehavior_Closure) (const PgQuery__JsonBehavior *message, void *closure_data); typedef void (*PgQuery__JsonExpr_Closure) (const PgQuery__JsonExpr *message, void *closure_data); typedef void (*PgQuery__JsonTablePath_Closure) (const PgQuery__JsonTablePath *message, void *closure_data); typedef void (*PgQuery__JsonTablePathScan_Closure) (const PgQuery__JsonTablePathScan *message, void *closure_data); typedef void (*PgQuery__JsonTableSiblingJoin_Closure) (const PgQuery__JsonTableSiblingJoin *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__MergeAction_Closure) (const PgQuery__MergeAction *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__Query_Closure) (const PgQuery__Query *message, void *closure_data); typedef void (*PgQuery__TypeName_Closure) (const PgQuery__TypeName *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__AExpr_Closure) (const PgQuery__AExpr *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__RoleSpec_Closure) (const PgQuery__RoleSpec *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__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__RangeTableFunc_Closure) (const PgQuery__RangeTableFunc *message, void *closure_data); typedef void (*PgQuery__RangeTableFuncCol_Closure) (const PgQuery__RangeTableFuncCol *message, void *closure_data); typedef void (*PgQuery__RangeTableSample_Closure) (const PgQuery__RangeTableSample *message, void *closure_data); typedef void (*PgQuery__ColumnDef_Closure) (const PgQuery__ColumnDef *message, void *closure_data); typedef void (*PgQuery__TableLikeClause_Closure) (const PgQuery__TableLikeClause *message, void *closure_data); typedef void (*PgQuery__IndexElem_Closure) (const PgQuery__IndexElem *message, void *closure_data); typedef void (*PgQuery__DefElem_Closure) (const PgQuery__DefElem *message, void *closure_data); typedef void (*PgQuery__LockingClause_Closure) (const PgQuery__LockingClause *message, void *closure_data); typedef void (*PgQuery__XmlSerialize_Closure) (const PgQuery__XmlSerialize *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__SinglePartitionSpec_Closure) (const PgQuery__SinglePartitionSpec *message, void *closure_data); typedef void (*PgQuery__PartitionCmd_Closure) (const PgQuery__PartitionCmd *message, void *closure_data); typedef void (*PgQuery__RangeTblEntry_Closure) (const PgQuery__RangeTblEntry *message, void *closure_data); typedef void (*PgQuery__RTEPermissionInfo_Closure) (const PgQuery__RTEPermissionInfo *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__RowMarkClause_Closure) (const PgQuery__RowMarkClause *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__CTESearchClause_Closure) (const PgQuery__CTESearchClause *message, void *closure_data); typedef void (*PgQuery__CTECycleClause_Closure) (const PgQuery__CTECycleClause *message, void *closure_data); typedef void (*PgQuery__CommonTableExpr_Closure) (const PgQuery__CommonTableExpr *message, void *closure_data); typedef void (*PgQuery__MergeWhenClause_Closure) (const PgQuery__MergeWhenClause *message, void *closure_data); typedef void (*PgQuery__TriggerTransition_Closure) (const PgQuery__TriggerTransition *message, void *closure_data); typedef void (*PgQuery__JsonOutput_Closure) (const PgQuery__JsonOutput *message, void *closure_data); typedef void (*PgQuery__JsonArgument_Closure) (const PgQuery__JsonArgument *message, void *closure_data); typedef void (*PgQuery__JsonFuncExpr_Closure) (const PgQuery__JsonFuncExpr *message, void *closure_data); typedef void (*PgQuery__JsonTablePathSpec_Closure) (const PgQuery__JsonTablePathSpec *message, void *closure_data); typedef void (*PgQuery__JsonTable_Closure) (const PgQuery__JsonTable *message, void *closure_data); typedef void (*PgQuery__JsonTableColumn_Closure) (const PgQuery__JsonTableColumn *message, void *closure_data); typedef void (*PgQuery__JsonKeyValue_Closure) (const PgQuery__JsonKeyValue *message, void *closure_data); typedef void (*PgQuery__JsonParseExpr_Closure) (const PgQuery__JsonParseExpr *message, void *closure_data); typedef void (*PgQuery__JsonScalarExpr_Closure) (const PgQuery__JsonScalarExpr *message, void *closure_data); typedef void (*PgQuery__JsonSerializeExpr_Closure) (const PgQuery__JsonSerializeExpr *message, void *closure_data); typedef void (*PgQuery__JsonObjectConstructor_Closure) (const PgQuery__JsonObjectConstructor *message, void *closure_data); typedef void (*PgQuery__JsonArrayConstructor_Closure) (const PgQuery__JsonArrayConstructor *message, void *closure_data); typedef void (*PgQuery__JsonArrayQueryConstructor_Closure) (const PgQuery__JsonArrayQueryConstructor *message, void *closure_data); typedef void (*PgQuery__JsonAggConstructor_Closure) (const PgQuery__JsonAggConstructor *message, void *closure_data); typedef void (*PgQuery__JsonObjectAgg_Closure) (const PgQuery__JsonObjectAgg *message, void *closure_data); typedef void (*PgQuery__JsonArrayAgg_Closure) (const PgQuery__JsonArrayAgg *message, void *closure_data); typedef void (*PgQuery__RawStmt_Closure) (const PgQuery__RawStmt *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__MergeStmt_Closure) (const PgQuery__MergeStmt *message, void *closure_data); typedef void (*PgQuery__SelectStmt_Closure) (const PgQuery__SelectStmt *message, void *closure_data); typedef void (*PgQuery__SetOperationStmt_Closure) (const PgQuery__SetOperationStmt *message, void *closure_data); typedef void (*PgQuery__ReturnStmt_Closure) (const PgQuery__ReturnStmt *message, void *closure_data); typedef void (*PgQuery__PLAssignStmt_Closure) (const PgQuery__PLAssignStmt *message, void *closure_data); typedef void (*PgQuery__CreateSchemaStmt_Closure) (const PgQuery__CreateSchemaStmt *message, void *closure_data); typedef void (*PgQuery__AlterTableStmt_Closure) (const PgQuery__AlterTableStmt *message, void *closure_data); typedef void (*PgQuery__ReplicaIdentityStmt_Closure) (const PgQuery__ReplicaIdentityStmt *message, void *closure_data); typedef void (*PgQuery__AlterTableCmd_Closure) (const PgQuery__AlterTableCmd *message, void *closure_data); typedef void (*PgQuery__AlterCollationStmt_Closure) (const PgQuery__AlterCollationStmt *message, void *closure_data); typedef void (*PgQuery__AlterDomainStmt_Closure) (const PgQuery__AlterDomainStmt *message, void *closure_data); typedef void (*PgQuery__GrantStmt_Closure) (const PgQuery__GrantStmt *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__GrantRoleStmt_Closure) (const PgQuery__GrantRoleStmt *message, void *closure_data); typedef void (*PgQuery__AlterDefaultPrivilegesStmt_Closure) (const PgQuery__AlterDefaultPrivilegesStmt *message, void *closure_data); typedef void (*PgQuery__CopyStmt_Closure) (const PgQuery__CopyStmt *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__CreateStmt_Closure) (const PgQuery__CreateStmt *message, void *closure_data); typedef void (*PgQuery__Constraint_Closure) (const PgQuery__Constraint *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__AlterTableSpaceOptionsStmt_Closure) (const PgQuery__AlterTableSpaceOptionsStmt *message, void *closure_data); typedef void (*PgQuery__AlterTableMoveAllStmt_Closure) (const PgQuery__AlterTableMoveAllStmt *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__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__CreateForeignTableStmt_Closure) (const PgQuery__CreateForeignTableStmt *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__ImportForeignSchemaStmt_Closure) (const PgQuery__ImportForeignSchemaStmt *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__CreateAmStmt_Closure) (const PgQuery__CreateAmStmt *message, void *closure_data); typedef void (*PgQuery__CreateTrigStmt_Closure) (const PgQuery__CreateTrigStmt *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__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__AlterRoleSetStmt_Closure) (const PgQuery__AlterRoleSetStmt *message, void *closure_data); typedef void (*PgQuery__DropRoleStmt_Closure) (const PgQuery__DropRoleStmt *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__DefineStmt_Closure) (const PgQuery__DefineStmt *message, void *closure_data); typedef void (*PgQuery__CreateDomainStmt_Closure) (const PgQuery__CreateDomainStmt *message, void *closure_data); typedef void (*PgQuery__CreateOpClassStmt_Closure) (const PgQuery__CreateOpClassStmt *message, void *closure_data); typedef void (*PgQuery__CreateOpClassItem_Closure) (const PgQuery__CreateOpClassItem *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__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__SecLabelStmt_Closure) (const PgQuery__SecLabelStmt *message, void *closure_data); typedef void (*PgQuery__DeclareCursorStmt_Closure) (const PgQuery__DeclareCursorStmt *message, void *closure_data); typedef void (*PgQuery__ClosePortalStmt_Closure) (const PgQuery__ClosePortalStmt *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__CreateStatsStmt_Closure) (const PgQuery__CreateStatsStmt *message, void *closure_data); typedef void (*PgQuery__StatsElem_Closure) (const PgQuery__StatsElem *message, void *closure_data); typedef void (*PgQuery__AlterStatsStmt_Closure) (const PgQuery__AlterStatsStmt *message, void *closure_data); typedef void (*PgQuery__CreateFunctionStmt_Closure) (const PgQuery__CreateFunctionStmt *message, void *closure_data); typedef void (*PgQuery__FunctionParameter_Closure) (const PgQuery__FunctionParameter *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__InlineCodeBlock_Closure) (const PgQuery__InlineCodeBlock *message, void *closure_data); typedef void (*PgQuery__CallStmt_Closure) (const PgQuery__CallStmt *message, void *closure_data); typedef void (*PgQuery__CallContext_Closure) (const PgQuery__CallContext *message, void *closure_data); typedef void (*PgQuery__RenameStmt_Closure) (const PgQuery__RenameStmt *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__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__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__ViewStmt_Closure) (const PgQuery__ViewStmt *message, void *closure_data); typedef void (*PgQuery__LoadStmt_Closure) (const PgQuery__LoadStmt *message, void *closure_data); typedef void (*PgQuery__CreatedbStmt_Closure) (const PgQuery__CreatedbStmt *message, void *closure_data); typedef void (*PgQuery__AlterDatabaseStmt_Closure) (const PgQuery__AlterDatabaseStmt *message, void *closure_data); typedef void (*PgQuery__AlterDatabaseRefreshCollStmt_Closure) (const PgQuery__AlterDatabaseRefreshCollStmt *message, void *closure_data); typedef void (*PgQuery__AlterDatabaseSetStmt_Closure) (const PgQuery__AlterDatabaseSetStmt *message, void *closure_data); typedef void (*PgQuery__DropdbStmt_Closure) (const PgQuery__DropdbStmt *message, void *closure_data); typedef void (*PgQuery__AlterSystemStmt_Closure) (const PgQuery__AlterSystemStmt *message, void *closure_data); typedef void (*PgQuery__ClusterStmt_Closure) (const PgQuery__ClusterStmt *message, void *closure_data); typedef void (*PgQuery__VacuumStmt_Closure) (const PgQuery__VacuumStmt *message, void *closure_data); typedef void (*PgQuery__VacuumRelation_Closure) (const PgQuery__VacuumRelation *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__RefreshMatViewStmt_Closure) (const PgQuery__RefreshMatViewStmt *message, void *closure_data); typedef void (*PgQuery__CheckPointStmt_Closure) (const PgQuery__CheckPointStmt *message, void *closure_data); typedef void (*PgQuery__DiscardStmt_Closure) (const PgQuery__DiscardStmt *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__CreateConversionStmt_Closure) (const PgQuery__CreateConversionStmt *message, void *closure_data); typedef void (*PgQuery__CreateCastStmt_Closure) (const PgQuery__CreateCastStmt *message, void *closure_data); typedef void (*PgQuery__CreateTransformStmt_Closure) (const PgQuery__CreateTransformStmt *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__DropOwnedStmt_Closure) (const PgQuery__DropOwnedStmt *message, void *closure_data); typedef void (*PgQuery__ReassignOwnedStmt_Closure) (const PgQuery__ReassignOwnedStmt *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__PublicationTable_Closure) (const PgQuery__PublicationTable *message, void *closure_data); typedef void (*PgQuery__PublicationObjSpec_Closure) (const PgQuery__PublicationObjSpec *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__ScanToken_Closure) (const PgQuery__ScanToken *message, void *closure_data); /* --- services --- */ /* --- descriptors --- */ 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__set_quantifier__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_strategy__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__json_quotes__descriptor; extern const ProtobufCEnumDescriptor pg_query__json_table_column_type__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__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__publication_obj_spec_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__alter_publication_action__descriptor; extern const ProtobufCEnumDescriptor pg_query__alter_subscription_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__overriding_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__on_commit_action__descriptor; extern const ProtobufCEnumDescriptor pg_query__table_func_type__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__json_encoding__descriptor; extern const ProtobufCEnumDescriptor pg_query__json_format_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__json_constructor_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__json_value_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__json_wrapper__descriptor; extern const ProtobufCEnumDescriptor pg_query__json_behavior_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__json_expr_op__descriptor; extern const ProtobufCEnumDescriptor pg_query__null_test_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__bool_test_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__merge_match_kind__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__boolean__descriptor; extern const ProtobufCMessageDescriptor pg_query__string__descriptor; extern const ProtobufCMessageDescriptor pg_query__bit_string__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__a__const__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__into_clause__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__window_func_run_condition__descriptor; extern const ProtobufCMessageDescriptor pg_query__merge_support_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__json_format__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_returning__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_value_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_constructor_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_is_predicate__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_behavior__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_table_path__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_table_path_scan__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_table_sibling_join__descriptor; extern const ProtobufCMessageDescriptor pg_query__null_test__descriptor; extern const ProtobufCMessageDescriptor pg_query__boolean_test__descriptor; extern const ProtobufCMessageDescriptor pg_query__merge_action__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__query__descriptor; extern const ProtobufCMessageDescriptor pg_query__type_name__descriptor; extern const ProtobufCMessageDescriptor pg_query__column_ref__descriptor; extern const ProtobufCMessageDescriptor pg_query__param_ref__descriptor; extern const ProtobufCMessageDescriptor pg_query__a__expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__type_cast__descriptor; extern const ProtobufCMessageDescriptor pg_query__collate_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__role_spec__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__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_func__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_table_func_col__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_table_sample__descriptor; extern const ProtobufCMessageDescriptor pg_query__column_def__descriptor; extern const ProtobufCMessageDescriptor pg_query__table_like_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__index_elem__descriptor; extern const ProtobufCMessageDescriptor pg_query__def_elem__descriptor; extern const ProtobufCMessageDescriptor pg_query__locking_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__xml_serialize__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__single_partition_spec__descriptor; extern const ProtobufCMessageDescriptor pg_query__partition_cmd__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_tbl_entry__descriptor; extern const ProtobufCMessageDescriptor pg_query__rtepermission_info__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__row_mark_clause__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__ctesearch_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__ctecycle_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__common_table_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__merge_when_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__trigger_transition__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_output__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_argument__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_func_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_table_path_spec__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_table__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_table_column__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_key_value__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_parse_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_scalar_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_serialize_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_object_constructor__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_array_constructor__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_array_query_constructor__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_agg_constructor__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_object_agg__descriptor; extern const ProtobufCMessageDescriptor pg_query__json_array_agg__descriptor; extern const ProtobufCMessageDescriptor pg_query__raw_stmt__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__merge_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__select_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__set_operation_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__return_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__plassign_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_schema_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_table_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__replica_identity_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_table_cmd__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_collation_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_domain_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__grant_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__object_with_args__descriptor; extern const ProtobufCMessageDescriptor pg_query__access_priv__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__copy_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__create_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__constraint__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_table_space_options_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_table_move_all_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_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_foreign_table_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__import_foreign_schema_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_am_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_trig_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__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__alter_role_set_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__drop_role_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__define_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_domain_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_op_class_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_op_class_item__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__drop_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__truncate_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__comment_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__sec_label_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__declare_cursor_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__close_portal_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__fetch_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__index_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_stats_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__stats_elem__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_stats_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_function_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__function_parameter__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_function_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__do_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__inline_code_block__descriptor; extern const ProtobufCMessageDescriptor pg_query__call_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__call_context__descriptor; extern const ProtobufCMessageDescriptor pg_query__rename_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__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__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__view_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__load_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__createdb_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_database_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_database_refresh_coll_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_database_set_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__dropdb_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_system_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__cluster_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__vacuum_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__vacuum_relation__descriptor; extern const ProtobufCMessageDescriptor pg_query__explain_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_table_as_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__refresh_mat_view_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__check_point_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__discard_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__create_conversion_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_cast_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_transform_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__drop_owned_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__reassign_owned_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__publication_table__descriptor; extern const ProtobufCMessageDescriptor pg_query__publication_obj_spec__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__scan_token__descriptor; PROTOBUF_C__END_DECLS #endif /* PROTOBUF_C_protobuf_2fpg_5fquery_2eproto__INCLUDED */ libpg_query-17-6.1.0/protobuf/pg_query.pb.cc000066400000000000000000237061341477334012600207160ustar00rootroot00000000000000// Generated by the protocol buffer compiler. DO NOT EDIT! // source: protobuf/pg_query.proto #include "protobuf/pg_query.pb.h" #include #include "google/protobuf/io/coded_stream.h" #include "google/protobuf/extension_set.h" #include "google/protobuf/wire_format_lite.h" #include "google/protobuf/descriptor.h" #include "google/protobuf/generated_message_reflection.h" #include "google/protobuf/reflection_ops.h" #include "google/protobuf/wire_format.h" #include "google/protobuf/generated_message_tctable_impl.h" // @@protoc_insertion_point(includes) // Must be included last. #include "google/protobuf/port_def.inc" PROTOBUF_PRAGMA_INIT_SEG namespace _pb = ::google::protobuf; namespace _pbi = ::google::protobuf::internal; namespace _fl = ::google::protobuf::internal::field_layout; namespace pg_query { inline constexpr VariableShowStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR VariableShowStmt::VariableShowStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct VariableShowStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR VariableShowStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~VariableShowStmtDefaultTypeInternal() {} union { VariableShowStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 VariableShowStmtDefaultTypeInternal _VariableShowStmt_default_instance_; inline constexpr UnlistenStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : conditionname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR UnlistenStmt::UnlistenStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct UnlistenStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR UnlistenStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~UnlistenStmtDefaultTypeInternal() {} union { UnlistenStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 UnlistenStmtDefaultTypeInternal _UnlistenStmt_default_instance_; inline constexpr TriggerTransition::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), is_new_{false}, is_table_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR TriggerTransition::TriggerTransition(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct TriggerTransitionDefaultTypeInternal { PROTOBUF_CONSTEXPR TriggerTransitionDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~TriggerTransitionDefaultTypeInternal() {} union { TriggerTransition _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TriggerTransitionDefaultTypeInternal _TriggerTransition_default_instance_; inline constexpr String::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : sval_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR String::String(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct StringDefaultTypeInternal { PROTOBUF_CONSTEXPR StringDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~StringDefaultTypeInternal() {} union { String _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 StringDefaultTypeInternal _String_default_instance_; inline constexpr SortGroupClause::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : tle_sort_group_ref_{0u}, eqop_{0u}, sortop_{0u}, nulls_first_{false}, hashable_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR SortGroupClause::SortGroupClause(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct SortGroupClauseDefaultTypeInternal { PROTOBUF_CONSTEXPR SortGroupClauseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~SortGroupClauseDefaultTypeInternal() {} union { SortGroupClause _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SortGroupClauseDefaultTypeInternal _SortGroupClause_default_instance_; template PROTOBUF_CONSTEXPR SinglePartitionSpec::SinglePartitionSpec(::_pbi::ConstantInitialized) {} struct SinglePartitionSpecDefaultTypeInternal { PROTOBUF_CONSTEXPR SinglePartitionSpecDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~SinglePartitionSpecDefaultTypeInternal() {} union { SinglePartitionSpec _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SinglePartitionSpecDefaultTypeInternal _SinglePartitionSpec_default_instance_; inline constexpr ScanToken::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : start_{0}, end_{0}, token_{static_cast< ::pg_query::Token >(0)}, keyword_kind_{static_cast< ::pg_query::KeywordKind >(0)}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR ScanToken::ScanToken(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ScanTokenDefaultTypeInternal { PROTOBUF_CONSTEXPR ScanTokenDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ScanTokenDefaultTypeInternal() {} union { ScanToken _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ScanTokenDefaultTypeInternal _ScanToken_default_instance_; inline constexpr RowMarkClause::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : rti_{0u}, strength_{static_cast< ::pg_query::LockClauseStrength >(0)}, wait_policy_{static_cast< ::pg_query::LockWaitPolicy >(0)}, pushed_down_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR RowMarkClause::RowMarkClause(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RowMarkClauseDefaultTypeInternal { PROTOBUF_CONSTEXPR RowMarkClauseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RowMarkClauseDefaultTypeInternal() {} union { RowMarkClause _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RowMarkClauseDefaultTypeInternal _RowMarkClause_default_instance_; inline constexpr RoleSpec::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : rolename_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), roletype_{static_cast< ::pg_query::RoleSpecType >(0)}, location_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR RoleSpec::RoleSpec(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RoleSpecDefaultTypeInternal { PROTOBUF_CONSTEXPR RoleSpecDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RoleSpecDefaultTypeInternal() {} union { RoleSpec _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RoleSpecDefaultTypeInternal _RoleSpec_default_instance_; inline constexpr ReplicaIdentityStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : identity_type_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR ReplicaIdentityStmt::ReplicaIdentityStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ReplicaIdentityStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR ReplicaIdentityStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ReplicaIdentityStmtDefaultTypeInternal() {} union { ReplicaIdentityStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ReplicaIdentityStmtDefaultTypeInternal _ReplicaIdentityStmt_default_instance_; inline constexpr RangeTblRef::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : rtindex_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR RangeTblRef::RangeTblRef(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RangeTblRefDefaultTypeInternal { PROTOBUF_CONSTEXPR RangeTblRefDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RangeTblRefDefaultTypeInternal() {} union { RangeTblRef _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RangeTblRefDefaultTypeInternal _RangeTblRef_default_instance_; inline constexpr RTEPermissionInfo::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : selected_cols_{}, _selected_cols_cached_byte_size_{0}, inserted_cols_{}, _inserted_cols_cached_byte_size_{0}, updated_cols_{}, _updated_cols_cached_byte_size_{0}, relid_{0u}, inh_{false}, required_perms_{::uint64_t{0u}}, check_as_user_{0u}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR RTEPermissionInfo::RTEPermissionInfo(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RTEPermissionInfoDefaultTypeInternal { PROTOBUF_CONSTEXPR RTEPermissionInfoDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RTEPermissionInfoDefaultTypeInternal() {} union { RTEPermissionInfo _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RTEPermissionInfoDefaultTypeInternal _RTEPermissionInfo_default_instance_; inline constexpr ParamRef::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : number_{0}, location_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR ParamRef::ParamRef(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ParamRefDefaultTypeInternal { PROTOBUF_CONSTEXPR ParamRefDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ParamRefDefaultTypeInternal() {} union { ParamRef _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ParamRefDefaultTypeInternal _ParamRef_default_instance_; inline constexpr NotifyStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : conditionname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), payload_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR NotifyStmt::NotifyStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct NotifyStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR NotifyStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~NotifyStmtDefaultTypeInternal() {} union { NotifyStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 NotifyStmtDefaultTypeInternal _NotifyStmt_default_instance_; inline constexpr LoadStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : filename_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR LoadStmt::LoadStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct LoadStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR LoadStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~LoadStmtDefaultTypeInternal() {} union { LoadStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 LoadStmtDefaultTypeInternal _LoadStmt_default_instance_; inline constexpr ListenStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : conditionname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR ListenStmt::ListenStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ListenStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR ListenStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ListenStmtDefaultTypeInternal() {} union { ListenStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ListenStmtDefaultTypeInternal _ListenStmt_default_instance_; inline constexpr JsonTablePath::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR JsonTablePath::JsonTablePath(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonTablePathDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonTablePathDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonTablePathDefaultTypeInternal() {} union { JsonTablePath _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonTablePathDefaultTypeInternal _JsonTablePath_default_instance_; inline constexpr JsonFormat::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : format_type_{static_cast< ::pg_query::JsonFormatType >(0)}, encoding_{static_cast< ::pg_query::JsonEncoding >(0)}, location_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR JsonFormat::JsonFormat(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonFormatDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonFormatDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonFormatDefaultTypeInternal() {} union { JsonFormat _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonFormatDefaultTypeInternal _JsonFormat_default_instance_; inline constexpr Integer::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : ival_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR Integer::Integer(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct IntegerDefaultTypeInternal { PROTOBUF_CONSTEXPR IntegerDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~IntegerDefaultTypeInternal() {} union { Integer _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 IntegerDefaultTypeInternal _Integer_default_instance_; inline constexpr InlineCodeBlock::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : source_text_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), lang_oid_{0u}, lang_is_trusted_{false}, atomic_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR InlineCodeBlock::InlineCodeBlock(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct InlineCodeBlockDefaultTypeInternal { PROTOBUF_CONSTEXPR InlineCodeBlockDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~InlineCodeBlockDefaultTypeInternal() {} union { InlineCodeBlock _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 InlineCodeBlockDefaultTypeInternal _InlineCodeBlock_default_instance_; inline constexpr Float::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : fval_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR Float::Float(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct FloatDefaultTypeInternal { PROTOBUF_CONSTEXPR FloatDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~FloatDefaultTypeInternal() {} union { Float _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FloatDefaultTypeInternal _Float_default_instance_; inline constexpr FetchStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : portalname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), how_many_{::int64_t{0}}, direction_{static_cast< ::pg_query::FetchDirection >(0)}, ismove_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR FetchStmt::FetchStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct FetchStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR FetchStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~FetchStmtDefaultTypeInternal() {} union { FetchStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FetchStmtDefaultTypeInternal _FetchStmt_default_instance_; inline constexpr DropTableSpaceStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : tablespacename_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), missing_ok_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR DropTableSpaceStmt::DropTableSpaceStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DropTableSpaceStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR DropTableSpaceStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DropTableSpaceStmtDefaultTypeInternal() {} union { DropTableSpaceStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DropTableSpaceStmtDefaultTypeInternal _DropTableSpaceStmt_default_instance_; inline constexpr DropSubscriptionStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : subname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), missing_ok_{false}, behavior_{static_cast< ::pg_query::DropBehavior >(0)}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR DropSubscriptionStmt::DropSubscriptionStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DropSubscriptionStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR DropSubscriptionStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DropSubscriptionStmtDefaultTypeInternal() {} union { DropSubscriptionStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DropSubscriptionStmtDefaultTypeInternal _DropSubscriptionStmt_default_instance_; inline constexpr DiscardStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : target_{static_cast< ::pg_query::DiscardMode >(0)}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR DiscardStmt::DiscardStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DiscardStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR DiscardStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DiscardStmtDefaultTypeInternal() {} union { DiscardStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DiscardStmtDefaultTypeInternal _DiscardStmt_default_instance_; inline constexpr DeallocateStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), isall_{false}, location_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR DeallocateStmt::DeallocateStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DeallocateStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR DeallocateStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DeallocateStmtDefaultTypeInternal() {} union { DeallocateStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeallocateStmtDefaultTypeInternal _DeallocateStmt_default_instance_; inline constexpr ClosePortalStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : portalname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR ClosePortalStmt::ClosePortalStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ClosePortalStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR ClosePortalStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ClosePortalStmtDefaultTypeInternal() {} union { ClosePortalStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ClosePortalStmtDefaultTypeInternal _ClosePortalStmt_default_instance_; template PROTOBUF_CONSTEXPR CheckPointStmt::CheckPointStmt(::_pbi::ConstantInitialized) {} struct CheckPointStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CheckPointStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CheckPointStmtDefaultTypeInternal() {} union { CheckPointStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CheckPointStmtDefaultTypeInternal _CheckPointStmt_default_instance_; inline constexpr CallContext::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : atomic_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR CallContext::CallContext(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CallContextDefaultTypeInternal { PROTOBUF_CONSTEXPR CallContextDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CallContextDefaultTypeInternal() {} union { CallContext _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CallContextDefaultTypeInternal _CallContext_default_instance_; inline constexpr Boolean::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : boolval_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR Boolean::Boolean(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct BooleanDefaultTypeInternal { PROTOBUF_CONSTEXPR BooleanDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~BooleanDefaultTypeInternal() {} union { Boolean _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 BooleanDefaultTypeInternal _Boolean_default_instance_; inline constexpr BitString::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : bsval_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR BitString::BitString(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct BitStringDefaultTypeInternal { PROTOBUF_CONSTEXPR BitStringDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~BitStringDefaultTypeInternal() {} union { BitString _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 BitStringDefaultTypeInternal _BitString_default_instance_; inline constexpr AlterEventTrigStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : trigname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), tgenabled_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterEventTrigStmt::AlterEventTrigStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterEventTrigStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterEventTrigStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterEventTrigStmtDefaultTypeInternal() {} union { AlterEventTrigStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterEventTrigStmtDefaultTypeInternal _AlterEventTrigStmt_default_instance_; inline constexpr AlterDatabaseRefreshCollStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : dbname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterDatabaseRefreshCollStmt::AlterDatabaseRefreshCollStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterDatabaseRefreshCollStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterDatabaseRefreshCollStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterDatabaseRefreshCollStmtDefaultTypeInternal() {} union { AlterDatabaseRefreshCollStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterDatabaseRefreshCollStmtDefaultTypeInternal _AlterDatabaseRefreshCollStmt_default_instance_; template PROTOBUF_CONSTEXPR A_Star::A_Star(::_pbi::ConstantInitialized) {} struct A_StarDefaultTypeInternal { PROTOBUF_CONSTEXPR A_StarDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~A_StarDefaultTypeInternal() {} union { A_Star _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 A_StarDefaultTypeInternal _A_Star_default_instance_; inline constexpr ScanResult::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : tokens_{}, version_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR ScanResult::ScanResult(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ScanResultDefaultTypeInternal { PROTOBUF_CONSTEXPR ScanResultDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ScanResultDefaultTypeInternal() {} union { ScanResult _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ScanResultDefaultTypeInternal _ScanResult_default_instance_; inline constexpr JsonReturning::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, format_{nullptr}, typid_{0u}, typmod_{0} {} template PROTOBUF_CONSTEXPR JsonReturning::JsonReturning(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonReturningDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonReturningDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonReturningDefaultTypeInternal() {} union { JsonReturning _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonReturningDefaultTypeInternal _JsonReturning_default_instance_; inline constexpr DropUserMappingStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, servername_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), user_{nullptr}, missing_ok_{false} {} template PROTOBUF_CONSTEXPR DropUserMappingStmt::DropUserMappingStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DropUserMappingStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR DropUserMappingStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DropUserMappingStmtDefaultTypeInternal() {} union { DropUserMappingStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DropUserMappingStmtDefaultTypeInternal _DropUserMappingStmt_default_instance_; inline constexpr A_Const::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : isnull_{false}, location_{0}, val_{}, _cached_size_{0}, _oneof_case_{} {} template PROTOBUF_CONSTEXPR A_Const::A_Const(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct A_ConstDefaultTypeInternal { PROTOBUF_CONSTEXPR A_ConstDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~A_ConstDefaultTypeInternal() {} union { A_Const _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 A_ConstDefaultTypeInternal _A_Const_default_instance_; inline constexpr A_ArrayExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : elements_{}, location_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR A_ArrayExpr::A_ArrayExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct A_ArrayExprDefaultTypeInternal { PROTOBUF_CONSTEXPR A_ArrayExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~A_ArrayExprDefaultTypeInternal() {} union { A_ArrayExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 A_ArrayExprDefaultTypeInternal _A_ArrayExpr_default_instance_; inline constexpr A_Expr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, name_{}, lexpr_{nullptr}, rexpr_{nullptr}, kind_{static_cast< ::pg_query::A_Expr_Kind >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR A_Expr::A_Expr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct A_ExprDefaultTypeInternal { PROTOBUF_CONSTEXPR A_ExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~A_ExprDefaultTypeInternal() {} union { A_Expr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 A_ExprDefaultTypeInternal _A_Expr_default_instance_; inline constexpr A_Indices::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, lidx_{nullptr}, uidx_{nullptr}, is_slice_{false} {} template PROTOBUF_CONSTEXPR A_Indices::A_Indices(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct A_IndicesDefaultTypeInternal { PROTOBUF_CONSTEXPR A_IndicesDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~A_IndicesDefaultTypeInternal() {} union { A_Indices _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 A_IndicesDefaultTypeInternal _A_Indices_default_instance_; inline constexpr A_Indirection::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, indirection_{}, arg_{nullptr} {} template PROTOBUF_CONSTEXPR A_Indirection::A_Indirection(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct A_IndirectionDefaultTypeInternal { PROTOBUF_CONSTEXPR A_IndirectionDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~A_IndirectionDefaultTypeInternal() {} union { A_Indirection _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 A_IndirectionDefaultTypeInternal _A_Indirection_default_instance_; inline constexpr AccessPriv::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : cols_{}, priv_name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR AccessPriv::AccessPriv(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AccessPrivDefaultTypeInternal { PROTOBUF_CONSTEXPR AccessPrivDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AccessPrivDefaultTypeInternal() {} union { AccessPriv _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AccessPrivDefaultTypeInternal _AccessPriv_default_instance_; inline constexpr Aggref::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, aggargtypes_{}, aggdirectargs_{}, args_{}, aggorder_{}, aggdistinct_{}, aggkind_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), xpr_{nullptr}, aggfilter_{nullptr}, aggfnoid_{0u}, aggtype_{0u}, aggcollid_{0u}, inputcollid_{0u}, aggstar_{false}, aggvariadic_{false}, agglevelsup_{0u}, aggsplit_{static_cast< ::pg_query::AggSplit >(0)}, aggno_{0}, aggtransno_{0}, location_{0} {} template PROTOBUF_CONSTEXPR Aggref::Aggref(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AggrefDefaultTypeInternal { PROTOBUF_CONSTEXPR AggrefDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AggrefDefaultTypeInternal() {} union { Aggref _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AggrefDefaultTypeInternal _Aggref_default_instance_; inline constexpr Alias::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : colnames_{}, aliasname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR Alias::Alias(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AliasDefaultTypeInternal { PROTOBUF_CONSTEXPR AliasDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AliasDefaultTypeInternal() {} union { Alias _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AliasDefaultTypeInternal _Alias_default_instance_; inline constexpr AlterCollationStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : collname_{}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterCollationStmt::AlterCollationStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterCollationStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterCollationStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterCollationStmtDefaultTypeInternal() {} union { AlterCollationStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterCollationStmtDefaultTypeInternal _AlterCollationStmt_default_instance_; inline constexpr AlterDatabaseSetStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, dbname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), setstmt_{nullptr} {} template PROTOBUF_CONSTEXPR AlterDatabaseSetStmt::AlterDatabaseSetStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterDatabaseSetStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterDatabaseSetStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterDatabaseSetStmtDefaultTypeInternal() {} union { AlterDatabaseSetStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterDatabaseSetStmtDefaultTypeInternal _AlterDatabaseSetStmt_default_instance_; inline constexpr AlterDatabaseStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : options_{}, dbname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterDatabaseStmt::AlterDatabaseStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterDatabaseStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterDatabaseStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterDatabaseStmtDefaultTypeInternal() {} union { AlterDatabaseStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterDatabaseStmtDefaultTypeInternal _AlterDatabaseStmt_default_instance_; inline constexpr AlterDefaultPrivilegesStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, options_{}, action_{nullptr} {} template PROTOBUF_CONSTEXPR AlterDefaultPrivilegesStmt::AlterDefaultPrivilegesStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterDefaultPrivilegesStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterDefaultPrivilegesStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterDefaultPrivilegesStmtDefaultTypeInternal() {} union { AlterDefaultPrivilegesStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterDefaultPrivilegesStmtDefaultTypeInternal _AlterDefaultPrivilegesStmt_default_instance_; inline constexpr AlterDomainStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, type_name_{}, subtype_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), def_{nullptr}, behavior_{static_cast< ::pg_query::DropBehavior >(0)}, missing_ok_{false} {} template PROTOBUF_CONSTEXPR AlterDomainStmt::AlterDomainStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterDomainStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterDomainStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterDomainStmtDefaultTypeInternal() {} union { AlterDomainStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterDomainStmtDefaultTypeInternal _AlterDomainStmt_default_instance_; inline constexpr AlterEnumStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : type_name_{}, old_val_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), new_val_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), new_val_neighbor_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), new_val_is_after_{false}, skip_if_new_val_exists_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterEnumStmt::AlterEnumStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterEnumStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterEnumStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterEnumStmtDefaultTypeInternal() {} union { AlterEnumStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterEnumStmtDefaultTypeInternal _AlterEnumStmt_default_instance_; inline constexpr AlterExtensionContentsStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, extname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), object_{nullptr}, action_{0}, objtype_{static_cast< ::pg_query::ObjectType >(0)} {} template PROTOBUF_CONSTEXPR AlterExtensionContentsStmt::AlterExtensionContentsStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterExtensionContentsStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterExtensionContentsStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterExtensionContentsStmtDefaultTypeInternal() {} union { AlterExtensionContentsStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterExtensionContentsStmtDefaultTypeInternal _AlterExtensionContentsStmt_default_instance_; inline constexpr AlterExtensionStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : options_{}, extname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterExtensionStmt::AlterExtensionStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterExtensionStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterExtensionStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterExtensionStmtDefaultTypeInternal() {} union { AlterExtensionStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterExtensionStmtDefaultTypeInternal _AlterExtensionStmt_default_instance_; inline constexpr AlterFdwStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : func_options_{}, options_{}, fdwname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterFdwStmt::AlterFdwStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterFdwStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterFdwStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterFdwStmtDefaultTypeInternal() {} union { AlterFdwStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterFdwStmtDefaultTypeInternal _AlterFdwStmt_default_instance_; inline constexpr AlterForeignServerStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : options_{}, servername_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), version_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), has_version_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterForeignServerStmt::AlterForeignServerStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterForeignServerStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterForeignServerStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterForeignServerStmtDefaultTypeInternal() {} union { AlterForeignServerStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterForeignServerStmtDefaultTypeInternal _AlterForeignServerStmt_default_instance_; inline constexpr AlterFunctionStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, actions_{}, func_{nullptr}, objtype_{static_cast< ::pg_query::ObjectType >(0)} {} template PROTOBUF_CONSTEXPR AlterFunctionStmt::AlterFunctionStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterFunctionStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterFunctionStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterFunctionStmtDefaultTypeInternal() {} union { AlterFunctionStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterFunctionStmtDefaultTypeInternal _AlterFunctionStmt_default_instance_; inline constexpr AlterObjectDependsStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, relation_{nullptr}, object_{nullptr}, extname_{nullptr}, object_type_{static_cast< ::pg_query::ObjectType >(0)}, remove_{false} {} template PROTOBUF_CONSTEXPR AlterObjectDependsStmt::AlterObjectDependsStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterObjectDependsStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterObjectDependsStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterObjectDependsStmtDefaultTypeInternal() {} union { AlterObjectDependsStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterObjectDependsStmtDefaultTypeInternal _AlterObjectDependsStmt_default_instance_; inline constexpr AlterObjectSchemaStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, newschema_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), relation_{nullptr}, object_{nullptr}, object_type_{static_cast< ::pg_query::ObjectType >(0)}, missing_ok_{false} {} template PROTOBUF_CONSTEXPR AlterObjectSchemaStmt::AlterObjectSchemaStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterObjectSchemaStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterObjectSchemaStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterObjectSchemaStmtDefaultTypeInternal() {} union { AlterObjectSchemaStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterObjectSchemaStmtDefaultTypeInternal _AlterObjectSchemaStmt_default_instance_; inline constexpr AlterOpFamilyStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : opfamilyname_{}, items_{}, amname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), is_drop_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterOpFamilyStmt::AlterOpFamilyStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterOpFamilyStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterOpFamilyStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterOpFamilyStmtDefaultTypeInternal() {} union { AlterOpFamilyStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterOpFamilyStmtDefaultTypeInternal _AlterOpFamilyStmt_default_instance_; inline constexpr AlterOperatorStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, options_{}, opername_{nullptr} {} template PROTOBUF_CONSTEXPR AlterOperatorStmt::AlterOperatorStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterOperatorStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterOperatorStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterOperatorStmtDefaultTypeInternal() {} union { AlterOperatorStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterOperatorStmtDefaultTypeInternal _AlterOperatorStmt_default_instance_; inline constexpr AlterOwnerStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, relation_{nullptr}, object_{nullptr}, newowner_{nullptr}, object_type_{static_cast< ::pg_query::ObjectType >(0)} {} template PROTOBUF_CONSTEXPR AlterOwnerStmt::AlterOwnerStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterOwnerStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterOwnerStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterOwnerStmtDefaultTypeInternal() {} union { AlterOwnerStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterOwnerStmtDefaultTypeInternal _AlterOwnerStmt_default_instance_; inline constexpr AlterPolicyStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, roles_{}, policy_name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), table_{nullptr}, qual_{nullptr}, with_check_{nullptr} {} template PROTOBUF_CONSTEXPR AlterPolicyStmt::AlterPolicyStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterPolicyStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterPolicyStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterPolicyStmtDefaultTypeInternal() {} union { AlterPolicyStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterPolicyStmtDefaultTypeInternal _AlterPolicyStmt_default_instance_; inline constexpr AlterPublicationStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : options_{}, pubobjects_{}, pubname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), for_all_tables_{false}, action_{static_cast< ::pg_query::AlterPublicationAction >(0)}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterPublicationStmt::AlterPublicationStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterPublicationStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterPublicationStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterPublicationStmtDefaultTypeInternal() {} union { AlterPublicationStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterPublicationStmtDefaultTypeInternal _AlterPublicationStmt_default_instance_; inline constexpr AlterRoleSetStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, database_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), role_{nullptr}, setstmt_{nullptr} {} template PROTOBUF_CONSTEXPR AlterRoleSetStmt::AlterRoleSetStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterRoleSetStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterRoleSetStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterRoleSetStmtDefaultTypeInternal() {} union { AlterRoleSetStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterRoleSetStmtDefaultTypeInternal _AlterRoleSetStmt_default_instance_; inline constexpr AlterRoleStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, options_{}, role_{nullptr}, action_{0} {} template PROTOBUF_CONSTEXPR AlterRoleStmt::AlterRoleStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterRoleStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterRoleStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterRoleStmtDefaultTypeInternal() {} union { AlterRoleStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterRoleStmtDefaultTypeInternal _AlterRoleStmt_default_instance_; inline constexpr AlterSeqStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, options_{}, sequence_{nullptr}, for_identity_{false}, missing_ok_{false} {} template PROTOBUF_CONSTEXPR AlterSeqStmt::AlterSeqStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterSeqStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterSeqStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterSeqStmtDefaultTypeInternal() {} union { AlterSeqStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterSeqStmtDefaultTypeInternal _AlterSeqStmt_default_instance_; inline constexpr AlterStatsStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, defnames_{}, stxstattarget_{nullptr}, missing_ok_{false} {} template PROTOBUF_CONSTEXPR AlterStatsStmt::AlterStatsStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterStatsStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterStatsStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterStatsStmtDefaultTypeInternal() {} union { AlterStatsStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterStatsStmtDefaultTypeInternal _AlterStatsStmt_default_instance_; inline constexpr AlterSubscriptionStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : publication_{}, options_{}, subname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), conninfo_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), kind_{static_cast< ::pg_query::AlterSubscriptionType >(0)}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterSubscriptionStmt::AlterSubscriptionStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterSubscriptionStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterSubscriptionStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterSubscriptionStmtDefaultTypeInternal() {} union { AlterSubscriptionStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterSubscriptionStmtDefaultTypeInternal _AlterSubscriptionStmt_default_instance_; inline constexpr AlterSystemStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, setstmt_{nullptr} {} template PROTOBUF_CONSTEXPR AlterSystemStmt::AlterSystemStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterSystemStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterSystemStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterSystemStmtDefaultTypeInternal() {} union { AlterSystemStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterSystemStmtDefaultTypeInternal _AlterSystemStmt_default_instance_; inline constexpr AlterTSConfigurationStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : cfgname_{}, tokentype_{}, dicts_{}, kind_{static_cast< ::pg_query::AlterTSConfigType >(0)}, override_{false}, replace_{false}, missing_ok_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterTSConfigurationStmt::AlterTSConfigurationStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterTSConfigurationStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterTSConfigurationStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterTSConfigurationStmtDefaultTypeInternal() {} union { AlterTSConfigurationStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterTSConfigurationStmtDefaultTypeInternal _AlterTSConfigurationStmt_default_instance_; inline constexpr AlterTSDictionaryStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : dictname_{}, options_{}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterTSDictionaryStmt::AlterTSDictionaryStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterTSDictionaryStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterTSDictionaryStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterTSDictionaryStmtDefaultTypeInternal() {} union { AlterTSDictionaryStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterTSDictionaryStmtDefaultTypeInternal _AlterTSDictionaryStmt_default_instance_; inline constexpr AlterTableCmd::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), newowner_{nullptr}, def_{nullptr}, subtype_{static_cast< ::pg_query::AlterTableType >(0)}, num_{0}, behavior_{static_cast< ::pg_query::DropBehavior >(0)}, missing_ok_{false}, recurse_{false} {} template PROTOBUF_CONSTEXPR AlterTableCmd::AlterTableCmd(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterTableCmdDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterTableCmdDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterTableCmdDefaultTypeInternal() {} union { AlterTableCmd _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterTableCmdDefaultTypeInternal _AlterTableCmd_default_instance_; inline constexpr AlterTableMoveAllStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : roles_{}, orig_tablespacename_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), new_tablespacename_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), objtype_{static_cast< ::pg_query::ObjectType >(0)}, nowait_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterTableMoveAllStmt::AlterTableMoveAllStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterTableMoveAllStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterTableMoveAllStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterTableMoveAllStmtDefaultTypeInternal() {} union { AlterTableMoveAllStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterTableMoveAllStmtDefaultTypeInternal _AlterTableMoveAllStmt_default_instance_; inline constexpr AlterTableSpaceOptionsStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : options_{}, tablespacename_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), is_reset_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterTableSpaceOptionsStmt::AlterTableSpaceOptionsStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterTableSpaceOptionsStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterTableSpaceOptionsStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterTableSpaceOptionsStmtDefaultTypeInternal() {} union { AlterTableSpaceOptionsStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterTableSpaceOptionsStmtDefaultTypeInternal _AlterTableSpaceOptionsStmt_default_instance_; inline constexpr AlterTableStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, cmds_{}, relation_{nullptr}, objtype_{static_cast< ::pg_query::ObjectType >(0)}, missing_ok_{false} {} template PROTOBUF_CONSTEXPR AlterTableStmt::AlterTableStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterTableStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterTableStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterTableStmtDefaultTypeInternal() {} union { AlterTableStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterTableStmtDefaultTypeInternal _AlterTableStmt_default_instance_; inline constexpr AlterTypeStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : type_name_{}, options_{}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR AlterTypeStmt::AlterTypeStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterTypeStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterTypeStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterTypeStmtDefaultTypeInternal() {} union { AlterTypeStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterTypeStmtDefaultTypeInternal _AlterTypeStmt_default_instance_; inline constexpr AlterUserMappingStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, options_{}, servername_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), user_{nullptr} {} template PROTOBUF_CONSTEXPR AlterUserMappingStmt::AlterUserMappingStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlterUserMappingStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR AlterUserMappingStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlterUserMappingStmtDefaultTypeInternal() {} union { AlterUserMappingStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlterUserMappingStmtDefaultTypeInternal _AlterUserMappingStmt_default_instance_; inline constexpr AlternativeSubPlan::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, subplans_{}, xpr_{nullptr} {} template PROTOBUF_CONSTEXPR AlternativeSubPlan::AlternativeSubPlan(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct AlternativeSubPlanDefaultTypeInternal { PROTOBUF_CONSTEXPR AlternativeSubPlanDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~AlternativeSubPlanDefaultTypeInternal() {} union { AlternativeSubPlan _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AlternativeSubPlanDefaultTypeInternal _AlternativeSubPlan_default_instance_; inline constexpr ArrayCoerceExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, arg_{nullptr}, elemexpr_{nullptr}, resulttype_{0u}, resulttypmod_{0}, resultcollid_{0u}, coerceformat_{static_cast< ::pg_query::CoercionForm >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR ArrayCoerceExpr::ArrayCoerceExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ArrayCoerceExprDefaultTypeInternal { PROTOBUF_CONSTEXPR ArrayCoerceExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ArrayCoerceExprDefaultTypeInternal() {} union { ArrayCoerceExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ArrayCoerceExprDefaultTypeInternal _ArrayCoerceExpr_default_instance_; inline constexpr ArrayExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, elements_{}, xpr_{nullptr}, array_typeid_{0u}, array_collid_{0u}, element_typeid_{0u}, multidims_{false}, location_{0} {} template PROTOBUF_CONSTEXPR ArrayExpr::ArrayExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ArrayExprDefaultTypeInternal { PROTOBUF_CONSTEXPR ArrayExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ArrayExprDefaultTypeInternal() {} union { ArrayExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ArrayExprDefaultTypeInternal _ArrayExpr_default_instance_; inline constexpr BoolExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, args_{}, xpr_{nullptr}, boolop_{static_cast< ::pg_query::BoolExprType >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR BoolExpr::BoolExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct BoolExprDefaultTypeInternal { PROTOBUF_CONSTEXPR BoolExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~BoolExprDefaultTypeInternal() {} union { BoolExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 BoolExprDefaultTypeInternal _BoolExpr_default_instance_; inline constexpr BooleanTest::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, arg_{nullptr}, booltesttype_{static_cast< ::pg_query::BoolTestType >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR BooleanTest::BooleanTest(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct BooleanTestDefaultTypeInternal { PROTOBUF_CONSTEXPR BooleanTestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~BooleanTestDefaultTypeInternal() {} union { BooleanTest _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 BooleanTestDefaultTypeInternal _BooleanTest_default_instance_; inline constexpr CTECycleClause::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, cycle_col_list_{}, cycle_mark_column_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), cycle_path_column_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), cycle_mark_value_{nullptr}, cycle_mark_default_{nullptr}, location_{0}, cycle_mark_type_{0u}, cycle_mark_typmod_{0}, cycle_mark_collation_{0u}, cycle_mark_neop_{0u} {} template PROTOBUF_CONSTEXPR CTECycleClause::CTECycleClause(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CTECycleClauseDefaultTypeInternal { PROTOBUF_CONSTEXPR CTECycleClauseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CTECycleClauseDefaultTypeInternal() {} union { CTECycleClause _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CTECycleClauseDefaultTypeInternal _CTECycleClause_default_instance_; inline constexpr CTESearchClause::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : search_col_list_{}, search_seq_column_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), search_breadth_first_{false}, location_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR CTESearchClause::CTESearchClause(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CTESearchClauseDefaultTypeInternal { PROTOBUF_CONSTEXPR CTESearchClauseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CTESearchClauseDefaultTypeInternal() {} union { CTESearchClause _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CTESearchClauseDefaultTypeInternal _CTESearchClause_default_instance_; inline constexpr CallStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, outargs_{}, funccall_{nullptr}, funcexpr_{nullptr} {} template PROTOBUF_CONSTEXPR CallStmt::CallStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CallStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CallStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CallStmtDefaultTypeInternal() {} union { CallStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CallStmtDefaultTypeInternal _CallStmt_default_instance_; inline constexpr CaseExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, args_{}, xpr_{nullptr}, arg_{nullptr}, defresult_{nullptr}, casetype_{0u}, casecollid_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR CaseExpr::CaseExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CaseExprDefaultTypeInternal { PROTOBUF_CONSTEXPR CaseExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CaseExprDefaultTypeInternal() {} union { CaseExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CaseExprDefaultTypeInternal _CaseExpr_default_instance_; inline constexpr CaseTestExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, type_id_{0u}, type_mod_{0}, collation_{0u} {} template PROTOBUF_CONSTEXPR CaseTestExpr::CaseTestExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CaseTestExprDefaultTypeInternal { PROTOBUF_CONSTEXPR CaseTestExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CaseTestExprDefaultTypeInternal() {} union { CaseTestExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CaseTestExprDefaultTypeInternal _CaseTestExpr_default_instance_; inline constexpr CaseWhen::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, expr_{nullptr}, result_{nullptr}, location_{0} {} template PROTOBUF_CONSTEXPR CaseWhen::CaseWhen(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CaseWhenDefaultTypeInternal { PROTOBUF_CONSTEXPR CaseWhenDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CaseWhenDefaultTypeInternal() {} union { CaseWhen _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CaseWhenDefaultTypeInternal _CaseWhen_default_instance_; inline constexpr ClusterStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, params_{}, indexname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), relation_{nullptr} {} template PROTOBUF_CONSTEXPR ClusterStmt::ClusterStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ClusterStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR ClusterStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ClusterStmtDefaultTypeInternal() {} union { ClusterStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ClusterStmtDefaultTypeInternal _ClusterStmt_default_instance_; inline constexpr CoalesceExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, args_{}, xpr_{nullptr}, coalescetype_{0u}, coalescecollid_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR CoalesceExpr::CoalesceExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CoalesceExprDefaultTypeInternal { PROTOBUF_CONSTEXPR CoalesceExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CoalesceExprDefaultTypeInternal() {} union { CoalesceExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CoalesceExprDefaultTypeInternal _CoalesceExpr_default_instance_; inline constexpr CoerceToDomain::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, arg_{nullptr}, resulttype_{0u}, resulttypmod_{0}, resultcollid_{0u}, coercionformat_{static_cast< ::pg_query::CoercionForm >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR CoerceToDomain::CoerceToDomain(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CoerceToDomainDefaultTypeInternal { PROTOBUF_CONSTEXPR CoerceToDomainDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CoerceToDomainDefaultTypeInternal() {} union { CoerceToDomain _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CoerceToDomainDefaultTypeInternal _CoerceToDomain_default_instance_; inline constexpr CoerceToDomainValue::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, type_id_{0u}, type_mod_{0}, collation_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR CoerceToDomainValue::CoerceToDomainValue(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CoerceToDomainValueDefaultTypeInternal { PROTOBUF_CONSTEXPR CoerceToDomainValueDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CoerceToDomainValueDefaultTypeInternal() {} union { CoerceToDomainValue _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CoerceToDomainValueDefaultTypeInternal _CoerceToDomainValue_default_instance_; inline constexpr CoerceViaIO::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, arg_{nullptr}, resulttype_{0u}, resultcollid_{0u}, coerceformat_{static_cast< ::pg_query::CoercionForm >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR CoerceViaIO::CoerceViaIO(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CoerceViaIODefaultTypeInternal { PROTOBUF_CONSTEXPR CoerceViaIODefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CoerceViaIODefaultTypeInternal() {} union { CoerceViaIO _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CoerceViaIODefaultTypeInternal _CoerceViaIO_default_instance_; inline constexpr CollateClause::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, collname_{}, arg_{nullptr}, location_{0} {} template PROTOBUF_CONSTEXPR CollateClause::CollateClause(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CollateClauseDefaultTypeInternal { PROTOBUF_CONSTEXPR CollateClauseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CollateClauseDefaultTypeInternal() {} union { CollateClause _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CollateClauseDefaultTypeInternal _CollateClause_default_instance_; inline constexpr CollateExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, arg_{nullptr}, coll_oid_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR CollateExpr::CollateExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CollateExprDefaultTypeInternal { PROTOBUF_CONSTEXPR CollateExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CollateExprDefaultTypeInternal() {} union { CollateExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CollateExprDefaultTypeInternal _CollateExpr_default_instance_; inline constexpr ColumnDef::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, constraints_{}, fdwoptions_{}, colname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), compression_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), storage_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), storage_name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), identity_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), generated_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), type_name_{nullptr}, raw_default_{nullptr}, cooked_default_{nullptr}, identity_sequence_{nullptr}, coll_clause_{nullptr}, inhcount_{0}, is_local_{false}, is_not_null_{false}, is_from_type_{false}, coll_oid_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR ColumnDef::ColumnDef(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ColumnDefDefaultTypeInternal { PROTOBUF_CONSTEXPR ColumnDefDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ColumnDefDefaultTypeInternal() {} union { ColumnDef _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ColumnDefDefaultTypeInternal _ColumnDef_default_instance_; inline constexpr ColumnRef::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : fields_{}, location_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR ColumnRef::ColumnRef(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ColumnRefDefaultTypeInternal { PROTOBUF_CONSTEXPR ColumnRefDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ColumnRefDefaultTypeInternal() {} union { ColumnRef _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ColumnRefDefaultTypeInternal _ColumnRef_default_instance_; inline constexpr CommentStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, comment_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), object_{nullptr}, objtype_{static_cast< ::pg_query::ObjectType >(0)} {} template PROTOBUF_CONSTEXPR CommentStmt::CommentStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CommentStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CommentStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CommentStmtDefaultTypeInternal() {} union { CommentStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CommentStmtDefaultTypeInternal _CommentStmt_default_instance_; inline constexpr CommonTableExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, aliascolnames_{}, ctecolnames_{}, ctecoltypes_{}, ctecoltypmods_{}, ctecolcollations_{}, ctename_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), ctequery_{nullptr}, search_clause_{nullptr}, cycle_clause_{nullptr}, ctematerialized_{static_cast< ::pg_query::CTEMaterialize >(0)}, location_{0}, cterecursive_{false}, cterefcount_{0} {} template PROTOBUF_CONSTEXPR CommonTableExpr::CommonTableExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CommonTableExprDefaultTypeInternal { PROTOBUF_CONSTEXPR CommonTableExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CommonTableExprDefaultTypeInternal() {} union { CommonTableExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CommonTableExprDefaultTypeInternal _CommonTableExpr_default_instance_; inline constexpr CompositeTypeStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, coldeflist_{}, typevar_{nullptr} {} template PROTOBUF_CONSTEXPR CompositeTypeStmt::CompositeTypeStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CompositeTypeStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CompositeTypeStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CompositeTypeStmtDefaultTypeInternal() {} union { CompositeTypeStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CompositeTypeStmtDefaultTypeInternal _CompositeTypeStmt_default_instance_; inline constexpr Constraint::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, keys_{}, including_{}, exclusions_{}, options_{}, fk_attrs_{}, pk_attrs_{}, fk_del_set_cols_{}, old_conpfeqop_{}, conname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), cooked_expr_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), generated_when_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), indexname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), indexspace_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), access_method_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), fk_matchtype_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), fk_upd_action_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), fk_del_action_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), raw_expr_{nullptr}, where_clause_{nullptr}, pktable_{nullptr}, contype_{static_cast< ::pg_query::ConstrType >(0)}, deferrable_{false}, initdeferred_{false}, skip_validation_{false}, initially_valid_{false}, inhcount_{0}, is_no_inherit_{false}, nulls_not_distinct_{false}, reset_default_tblspc_{false}, old_pktable_oid_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR Constraint::Constraint(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ConstraintDefaultTypeInternal { PROTOBUF_CONSTEXPR ConstraintDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ConstraintDefaultTypeInternal() {} union { Constraint _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ConstraintDefaultTypeInternal _Constraint_default_instance_; inline constexpr ConstraintsSetStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : constraints_{}, deferred_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR ConstraintsSetStmt::ConstraintsSetStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ConstraintsSetStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR ConstraintsSetStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ConstraintsSetStmtDefaultTypeInternal() {} union { ConstraintsSetStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ConstraintsSetStmtDefaultTypeInternal _ConstraintsSetStmt_default_instance_; inline constexpr ConvertRowtypeExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, arg_{nullptr}, resulttype_{0u}, convertformat_{static_cast< ::pg_query::CoercionForm >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR ConvertRowtypeExpr::ConvertRowtypeExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ConvertRowtypeExprDefaultTypeInternal { PROTOBUF_CONSTEXPR ConvertRowtypeExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ConvertRowtypeExprDefaultTypeInternal() {} union { ConvertRowtypeExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ConvertRowtypeExprDefaultTypeInternal _ConvertRowtypeExpr_default_instance_; inline constexpr CopyStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, attlist_{}, options_{}, filename_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), relation_{nullptr}, query_{nullptr}, where_clause_{nullptr}, is_from_{false}, is_program_{false} {} template PROTOBUF_CONSTEXPR CopyStmt::CopyStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CopyStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CopyStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CopyStmtDefaultTypeInternal() {} union { CopyStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CopyStmtDefaultTypeInternal _CopyStmt_default_instance_; inline constexpr CreateAmStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : handler_name_{}, amname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), amtype_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreateAmStmt::CreateAmStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateAmStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateAmStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateAmStmtDefaultTypeInternal() {} union { CreateAmStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateAmStmtDefaultTypeInternal _CreateAmStmt_default_instance_; inline constexpr CreateCastStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, sourcetype_{nullptr}, targettype_{nullptr}, func_{nullptr}, context_{static_cast< ::pg_query::CoercionContext >(0)}, inout_{false} {} template PROTOBUF_CONSTEXPR CreateCastStmt::CreateCastStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateCastStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateCastStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateCastStmtDefaultTypeInternal() {} union { CreateCastStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateCastStmtDefaultTypeInternal _CreateCastStmt_default_instance_; inline constexpr CreateConversionStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : conversion_name_{}, func_name_{}, for_encoding_name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), to_encoding_name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), def_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreateConversionStmt::CreateConversionStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateConversionStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateConversionStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateConversionStmtDefaultTypeInternal() {} union { CreateConversionStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateConversionStmtDefaultTypeInternal _CreateConversionStmt_default_instance_; inline constexpr CreateDomainStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, domainname_{}, constraints_{}, type_name_{nullptr}, coll_clause_{nullptr} {} template PROTOBUF_CONSTEXPR CreateDomainStmt::CreateDomainStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateDomainStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateDomainStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateDomainStmtDefaultTypeInternal() {} union { CreateDomainStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateDomainStmtDefaultTypeInternal _CreateDomainStmt_default_instance_; inline constexpr CreateEnumStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : type_name_{}, vals_{}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreateEnumStmt::CreateEnumStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateEnumStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateEnumStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateEnumStmtDefaultTypeInternal() {} union { CreateEnumStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateEnumStmtDefaultTypeInternal _CreateEnumStmt_default_instance_; inline constexpr CreateEventTrigStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : whenclause_{}, funcname_{}, trigname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), eventname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreateEventTrigStmt::CreateEventTrigStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateEventTrigStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateEventTrigStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateEventTrigStmtDefaultTypeInternal() {} union { CreateEventTrigStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateEventTrigStmtDefaultTypeInternal _CreateEventTrigStmt_default_instance_; inline constexpr CreateExtensionStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : options_{}, extname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), if_not_exists_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreateExtensionStmt::CreateExtensionStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateExtensionStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateExtensionStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateExtensionStmtDefaultTypeInternal() {} union { CreateExtensionStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateExtensionStmtDefaultTypeInternal _CreateExtensionStmt_default_instance_; inline constexpr CreateFdwStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : func_options_{}, options_{}, fdwname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreateFdwStmt::CreateFdwStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateFdwStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateFdwStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateFdwStmtDefaultTypeInternal() {} union { CreateFdwStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateFdwStmtDefaultTypeInternal _CreateFdwStmt_default_instance_; inline constexpr CreateForeignServerStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : options_{}, servername_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), servertype_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), version_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), fdwname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), if_not_exists_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreateForeignServerStmt::CreateForeignServerStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateForeignServerStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateForeignServerStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateForeignServerStmtDefaultTypeInternal() {} union { CreateForeignServerStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateForeignServerStmtDefaultTypeInternal _CreateForeignServerStmt_default_instance_; inline constexpr CreateForeignTableStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, options_{}, servername_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), base_stmt_{nullptr} {} template PROTOBUF_CONSTEXPR CreateForeignTableStmt::CreateForeignTableStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateForeignTableStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateForeignTableStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateForeignTableStmtDefaultTypeInternal() {} union { CreateForeignTableStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateForeignTableStmtDefaultTypeInternal _CreateForeignTableStmt_default_instance_; inline constexpr CreateFunctionStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, funcname_{}, parameters_{}, options_{}, return_type_{nullptr}, sql_body_{nullptr}, is_procedure_{false}, replace_{false} {} template PROTOBUF_CONSTEXPR CreateFunctionStmt::CreateFunctionStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateFunctionStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateFunctionStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateFunctionStmtDefaultTypeInternal() {} union { CreateFunctionStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateFunctionStmtDefaultTypeInternal _CreateFunctionStmt_default_instance_; inline constexpr CreateOpClassItem::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, order_family_{}, class_args_{}, name_{nullptr}, storedtype_{nullptr}, itemtype_{0}, number_{0} {} template PROTOBUF_CONSTEXPR CreateOpClassItem::CreateOpClassItem(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateOpClassItemDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateOpClassItemDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateOpClassItemDefaultTypeInternal() {} union { CreateOpClassItem _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateOpClassItemDefaultTypeInternal _CreateOpClassItem_default_instance_; inline constexpr CreateOpClassStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, opclassname_{}, opfamilyname_{}, items_{}, amname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), datatype_{nullptr}, is_default_{false} {} template PROTOBUF_CONSTEXPR CreateOpClassStmt::CreateOpClassStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateOpClassStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateOpClassStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateOpClassStmtDefaultTypeInternal() {} union { CreateOpClassStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateOpClassStmtDefaultTypeInternal _CreateOpClassStmt_default_instance_; inline constexpr CreateOpFamilyStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : opfamilyname_{}, amname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreateOpFamilyStmt::CreateOpFamilyStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateOpFamilyStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateOpFamilyStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateOpFamilyStmtDefaultTypeInternal() {} union { CreateOpFamilyStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateOpFamilyStmtDefaultTypeInternal _CreateOpFamilyStmt_default_instance_; inline constexpr CreatePLangStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : plhandler_{}, plinline_{}, plvalidator_{}, plname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), replace_{false}, pltrusted_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreatePLangStmt::CreatePLangStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreatePLangStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreatePLangStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreatePLangStmtDefaultTypeInternal() {} union { CreatePLangStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreatePLangStmtDefaultTypeInternal _CreatePLangStmt_default_instance_; inline constexpr CreatePolicyStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, roles_{}, policy_name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), cmd_name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), table_{nullptr}, qual_{nullptr}, with_check_{nullptr}, permissive_{false} {} template PROTOBUF_CONSTEXPR CreatePolicyStmt::CreatePolicyStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreatePolicyStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreatePolicyStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreatePolicyStmtDefaultTypeInternal() {} union { CreatePolicyStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreatePolicyStmtDefaultTypeInternal _CreatePolicyStmt_default_instance_; inline constexpr CreatePublicationStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : options_{}, pubobjects_{}, pubname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), for_all_tables_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreatePublicationStmt::CreatePublicationStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreatePublicationStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreatePublicationStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreatePublicationStmtDefaultTypeInternal() {} union { CreatePublicationStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreatePublicationStmtDefaultTypeInternal _CreatePublicationStmt_default_instance_; inline constexpr CreateRangeStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : type_name_{}, params_{}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreateRangeStmt::CreateRangeStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateRangeStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateRangeStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateRangeStmtDefaultTypeInternal() {} union { CreateRangeStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateRangeStmtDefaultTypeInternal _CreateRangeStmt_default_instance_; inline constexpr CreateRoleStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : options_{}, role_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), stmt_type_{static_cast< ::pg_query::RoleStmtType >(0)}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreateRoleStmt::CreateRoleStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateRoleStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateRoleStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateRoleStmtDefaultTypeInternal() {} union { CreateRoleStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateRoleStmtDefaultTypeInternal _CreateRoleStmt_default_instance_; inline constexpr CreateSchemaStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, schema_elts_{}, schemaname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), authrole_{nullptr}, if_not_exists_{false} {} template PROTOBUF_CONSTEXPR CreateSchemaStmt::CreateSchemaStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateSchemaStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateSchemaStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateSchemaStmtDefaultTypeInternal() {} union { CreateSchemaStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateSchemaStmtDefaultTypeInternal _CreateSchemaStmt_default_instance_; inline constexpr CreateSeqStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, options_{}, sequence_{nullptr}, owner_id_{0u}, for_identity_{false}, if_not_exists_{false} {} template PROTOBUF_CONSTEXPR CreateSeqStmt::CreateSeqStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateSeqStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateSeqStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateSeqStmtDefaultTypeInternal() {} union { CreateSeqStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateSeqStmtDefaultTypeInternal _CreateSeqStmt_default_instance_; inline constexpr CreateStatsStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : defnames_{}, stat_types_{}, exprs_{}, relations_{}, stxcomment_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), transformed_{false}, if_not_exists_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreateStatsStmt::CreateStatsStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateStatsStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateStatsStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateStatsStmtDefaultTypeInternal() {} union { CreateStatsStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateStatsStmtDefaultTypeInternal _CreateStatsStmt_default_instance_; inline constexpr CreateStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, table_elts_{}, inh_relations_{}, constraints_{}, options_{}, tablespacename_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), access_method_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), relation_{nullptr}, partbound_{nullptr}, partspec_{nullptr}, of_typename_{nullptr}, oncommit_{static_cast< ::pg_query::OnCommitAction >(0)}, if_not_exists_{false} {} template PROTOBUF_CONSTEXPR CreateStmt::CreateStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateStmtDefaultTypeInternal() {} union { CreateStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateStmtDefaultTypeInternal _CreateStmt_default_instance_; inline constexpr CreateSubscriptionStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : publication_{}, options_{}, subname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), conninfo_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreateSubscriptionStmt::CreateSubscriptionStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateSubscriptionStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateSubscriptionStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateSubscriptionStmtDefaultTypeInternal() {} union { CreateSubscriptionStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateSubscriptionStmtDefaultTypeInternal _CreateSubscriptionStmt_default_instance_; inline constexpr CreateTableAsStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, query_{nullptr}, into_{nullptr}, objtype_{static_cast< ::pg_query::ObjectType >(0)}, is_select_into_{false}, if_not_exists_{false} {} template PROTOBUF_CONSTEXPR CreateTableAsStmt::CreateTableAsStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateTableAsStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateTableAsStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateTableAsStmtDefaultTypeInternal() {} union { CreateTableAsStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateTableAsStmtDefaultTypeInternal _CreateTableAsStmt_default_instance_; inline constexpr CreateTableSpaceStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, options_{}, tablespacename_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), location_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), owner_{nullptr} {} template PROTOBUF_CONSTEXPR CreateTableSpaceStmt::CreateTableSpaceStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateTableSpaceStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateTableSpaceStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateTableSpaceStmtDefaultTypeInternal() {} union { CreateTableSpaceStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateTableSpaceStmtDefaultTypeInternal _CreateTableSpaceStmt_default_instance_; inline constexpr CreateTransformStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, lang_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), type_name_{nullptr}, fromsql_{nullptr}, tosql_{nullptr}, replace_{false} {} template PROTOBUF_CONSTEXPR CreateTransformStmt::CreateTransformStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateTransformStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateTransformStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateTransformStmtDefaultTypeInternal() {} union { CreateTransformStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateTransformStmtDefaultTypeInternal _CreateTransformStmt_default_instance_; inline constexpr CreateTrigStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, funcname_{}, args_{}, columns_{}, transition_rels_{}, trigname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), relation_{nullptr}, when_clause_{nullptr}, constrrel_{nullptr}, replace_{false}, isconstraint_{false}, row_{false}, deferrable_{false}, timing_{0}, events_{0}, initdeferred_{false} {} template PROTOBUF_CONSTEXPR CreateTrigStmt::CreateTrigStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateTrigStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateTrigStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateTrigStmtDefaultTypeInternal() {} union { CreateTrigStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateTrigStmtDefaultTypeInternal _CreateTrigStmt_default_instance_; inline constexpr CreateUserMappingStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, options_{}, servername_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), user_{nullptr}, if_not_exists_{false} {} template PROTOBUF_CONSTEXPR CreateUserMappingStmt::CreateUserMappingStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreateUserMappingStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreateUserMappingStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreateUserMappingStmtDefaultTypeInternal() {} union { CreateUserMappingStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreateUserMappingStmtDefaultTypeInternal _CreateUserMappingStmt_default_instance_; inline constexpr CreatedbStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : options_{}, dbname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR CreatedbStmt::CreatedbStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CreatedbStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR CreatedbStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CreatedbStmtDefaultTypeInternal() {} union { CreatedbStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CreatedbStmtDefaultTypeInternal _CreatedbStmt_default_instance_; inline constexpr CurrentOfExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, cursor_name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), xpr_{nullptr}, cvarno_{0u}, cursor_param_{0} {} template PROTOBUF_CONSTEXPR CurrentOfExpr::CurrentOfExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct CurrentOfExprDefaultTypeInternal { PROTOBUF_CONSTEXPR CurrentOfExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~CurrentOfExprDefaultTypeInternal() {} union { CurrentOfExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CurrentOfExprDefaultTypeInternal _CurrentOfExpr_default_instance_; inline constexpr DeclareCursorStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, portalname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), query_{nullptr}, options_{0} {} template PROTOBUF_CONSTEXPR DeclareCursorStmt::DeclareCursorStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DeclareCursorStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR DeclareCursorStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DeclareCursorStmtDefaultTypeInternal() {} union { DeclareCursorStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeclareCursorStmtDefaultTypeInternal _DeclareCursorStmt_default_instance_; inline constexpr DefElem::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, defnamespace_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), defname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), arg_{nullptr}, defaction_{static_cast< ::pg_query::DefElemAction >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR DefElem::DefElem(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DefElemDefaultTypeInternal { PROTOBUF_CONSTEXPR DefElemDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DefElemDefaultTypeInternal() {} union { DefElem _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DefElemDefaultTypeInternal _DefElem_default_instance_; inline constexpr DefineStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : defnames_{}, args_{}, definition_{}, kind_{static_cast< ::pg_query::ObjectType >(0)}, oldstyle_{false}, if_not_exists_{false}, replace_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR DefineStmt::DefineStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DefineStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR DefineStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DefineStmtDefaultTypeInternal() {} union { DefineStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DefineStmtDefaultTypeInternal _DefineStmt_default_instance_; inline constexpr DeleteStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, using_clause_{}, returning_list_{}, relation_{nullptr}, where_clause_{nullptr}, with_clause_{nullptr} {} template PROTOBUF_CONSTEXPR DeleteStmt::DeleteStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DeleteStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR DeleteStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DeleteStmtDefaultTypeInternal() {} union { DeleteStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeleteStmtDefaultTypeInternal _DeleteStmt_default_instance_; inline constexpr DistinctExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, args_{}, xpr_{nullptr}, opno_{0u}, opresulttype_{0u}, opretset_{false}, opcollid_{0u}, inputcollid_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR DistinctExpr::DistinctExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DistinctExprDefaultTypeInternal { PROTOBUF_CONSTEXPR DistinctExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DistinctExprDefaultTypeInternal() {} union { DistinctExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DistinctExprDefaultTypeInternal _DistinctExpr_default_instance_; inline constexpr DoStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : args_{}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR DoStmt::DoStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DoStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR DoStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DoStmtDefaultTypeInternal() {} union { DoStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DoStmtDefaultTypeInternal _DoStmt_default_instance_; inline constexpr DropOwnedStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : roles_{}, behavior_{static_cast< ::pg_query::DropBehavior >(0)}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR DropOwnedStmt::DropOwnedStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DropOwnedStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR DropOwnedStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DropOwnedStmtDefaultTypeInternal() {} union { DropOwnedStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DropOwnedStmtDefaultTypeInternal _DropOwnedStmt_default_instance_; inline constexpr DropRoleStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : roles_{}, missing_ok_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR DropRoleStmt::DropRoleStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DropRoleStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR DropRoleStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DropRoleStmtDefaultTypeInternal() {} union { DropRoleStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DropRoleStmtDefaultTypeInternal _DropRoleStmt_default_instance_; inline constexpr DropStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : objects_{}, remove_type_{static_cast< ::pg_query::ObjectType >(0)}, behavior_{static_cast< ::pg_query::DropBehavior >(0)}, missing_ok_{false}, concurrent_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR DropStmt::DropStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DropStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR DropStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DropStmtDefaultTypeInternal() {} union { DropStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DropStmtDefaultTypeInternal _DropStmt_default_instance_; inline constexpr DropdbStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : options_{}, dbname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), missing_ok_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR DropdbStmt::DropdbStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct DropdbStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR DropdbStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~DropdbStmtDefaultTypeInternal() {} union { DropdbStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DropdbStmtDefaultTypeInternal _DropdbStmt_default_instance_; inline constexpr ExecuteStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : params_{}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), _cached_size_{0} {} template PROTOBUF_CONSTEXPR ExecuteStmt::ExecuteStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ExecuteStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR ExecuteStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ExecuteStmtDefaultTypeInternal() {} union { ExecuteStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ExecuteStmtDefaultTypeInternal _ExecuteStmt_default_instance_; inline constexpr ExplainStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, options_{}, query_{nullptr} {} template PROTOBUF_CONSTEXPR ExplainStmt::ExplainStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ExplainStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR ExplainStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ExplainStmtDefaultTypeInternal() {} union { ExplainStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ExplainStmtDefaultTypeInternal _ExplainStmt_default_instance_; inline constexpr FieldSelect::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, arg_{nullptr}, fieldnum_{0}, resulttype_{0u}, resulttypmod_{0}, resultcollid_{0u} {} template PROTOBUF_CONSTEXPR FieldSelect::FieldSelect(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct FieldSelectDefaultTypeInternal { PROTOBUF_CONSTEXPR FieldSelectDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~FieldSelectDefaultTypeInternal() {} union { FieldSelect _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FieldSelectDefaultTypeInternal _FieldSelect_default_instance_; inline constexpr FieldStore::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, newvals_{}, fieldnums_{}, xpr_{nullptr}, arg_{nullptr}, resulttype_{0u} {} template PROTOBUF_CONSTEXPR FieldStore::FieldStore(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct FieldStoreDefaultTypeInternal { PROTOBUF_CONSTEXPR FieldStoreDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~FieldStoreDefaultTypeInternal() {} union { FieldStore _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FieldStoreDefaultTypeInternal _FieldStore_default_instance_; inline constexpr FromExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, fromlist_{}, quals_{nullptr} {} template PROTOBUF_CONSTEXPR FromExpr::FromExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct FromExprDefaultTypeInternal { PROTOBUF_CONSTEXPR FromExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~FromExprDefaultTypeInternal() {} union { FromExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FromExprDefaultTypeInternal _FromExpr_default_instance_; inline constexpr FuncCall::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, funcname_{}, args_{}, agg_order_{}, agg_filter_{nullptr}, over_{nullptr}, agg_within_group_{false}, agg_star_{false}, agg_distinct_{false}, func_variadic_{false}, funcformat_{static_cast< ::pg_query::CoercionForm >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR FuncCall::FuncCall(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct FuncCallDefaultTypeInternal { PROTOBUF_CONSTEXPR FuncCallDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~FuncCallDefaultTypeInternal() {} union { FuncCall _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FuncCallDefaultTypeInternal _FuncCall_default_instance_; inline constexpr FuncExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, args_{}, xpr_{nullptr}, funcid_{0u}, funcresulttype_{0u}, funcretset_{false}, funcvariadic_{false}, funcformat_{static_cast< ::pg_query::CoercionForm >(0)}, funccollid_{0u}, inputcollid_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR FuncExpr::FuncExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct FuncExprDefaultTypeInternal { PROTOBUF_CONSTEXPR FuncExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~FuncExprDefaultTypeInternal() {} union { FuncExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FuncExprDefaultTypeInternal _FuncExpr_default_instance_; inline constexpr FunctionParameter::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), arg_type_{nullptr}, defexpr_{nullptr}, mode_{static_cast< ::pg_query::FunctionParameterMode >(0)} {} template PROTOBUF_CONSTEXPR FunctionParameter::FunctionParameter(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct FunctionParameterDefaultTypeInternal { PROTOBUF_CONSTEXPR FunctionParameterDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~FunctionParameterDefaultTypeInternal() {} union { FunctionParameter _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FunctionParameterDefaultTypeInternal _FunctionParameter_default_instance_; inline constexpr GrantRoleStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, granted_roles_{}, grantee_roles_{}, opt_{}, grantor_{nullptr}, is_grant_{false}, behavior_{static_cast< ::pg_query::DropBehavior >(0)} {} template PROTOBUF_CONSTEXPR GrantRoleStmt::GrantRoleStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct GrantRoleStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR GrantRoleStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~GrantRoleStmtDefaultTypeInternal() {} union { GrantRoleStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GrantRoleStmtDefaultTypeInternal _GrantRoleStmt_default_instance_; inline constexpr GrantStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, objects_{}, privileges_{}, grantees_{}, grantor_{nullptr}, targtype_{static_cast< ::pg_query::GrantTargetType >(0)}, objtype_{static_cast< ::pg_query::ObjectType >(0)}, is_grant_{false}, grant_option_{false}, behavior_{static_cast< ::pg_query::DropBehavior >(0)} {} template PROTOBUF_CONSTEXPR GrantStmt::GrantStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct GrantStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR GrantStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~GrantStmtDefaultTypeInternal() {} union { GrantStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GrantStmtDefaultTypeInternal _GrantStmt_default_instance_; inline constexpr GroupingFunc::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, args_{}, refs_{}, xpr_{nullptr}, agglevelsup_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR GroupingFunc::GroupingFunc(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct GroupingFuncDefaultTypeInternal { PROTOBUF_CONSTEXPR GroupingFuncDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~GroupingFuncDefaultTypeInternal() {} union { GroupingFunc _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GroupingFuncDefaultTypeInternal _GroupingFunc_default_instance_; inline constexpr GroupingSet::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : content_{}, kind_{static_cast< ::pg_query::GroupingSetKind >(0)}, location_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR GroupingSet::GroupingSet(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct GroupingSetDefaultTypeInternal { PROTOBUF_CONSTEXPR GroupingSetDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~GroupingSetDefaultTypeInternal() {} union { GroupingSet _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GroupingSetDefaultTypeInternal _GroupingSet_default_instance_; inline constexpr ImportForeignSchemaStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : table_list_{}, options_{}, server_name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), remote_schema_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), local_schema_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), list_type_{static_cast< ::pg_query::ImportForeignSchemaType >(0)}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR ImportForeignSchemaStmt::ImportForeignSchemaStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ImportForeignSchemaStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR ImportForeignSchemaStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ImportForeignSchemaStmtDefaultTypeInternal() {} union { ImportForeignSchemaStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ImportForeignSchemaStmtDefaultTypeInternal _ImportForeignSchemaStmt_default_instance_; inline constexpr IndexElem::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, collation_{}, opclass_{}, opclassopts_{}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), indexcolname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), expr_{nullptr}, ordering_{static_cast< ::pg_query::SortByDir >(0)}, nulls_ordering_{static_cast< ::pg_query::SortByNulls >(0)} {} template PROTOBUF_CONSTEXPR IndexElem::IndexElem(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct IndexElemDefaultTypeInternal { PROTOBUF_CONSTEXPR IndexElemDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~IndexElemDefaultTypeInternal() {} union { IndexElem _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 IndexElemDefaultTypeInternal _IndexElem_default_instance_; inline constexpr IndexStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, index_params_{}, index_including_params_{}, options_{}, exclude_op_names_{}, idxname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), access_method_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), table_space_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), idxcomment_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), relation_{nullptr}, where_clause_{nullptr}, index_oid_{0u}, old_number_{0u}, old_create_subid_{0u}, old_first_relfilelocator_subid_{0u}, unique_{false}, nulls_not_distinct_{false}, primary_{false}, isconstraint_{false}, deferrable_{false}, initdeferred_{false}, transformed_{false}, concurrent_{false}, if_not_exists_{false}, reset_default_tblspc_{false} {} template PROTOBUF_CONSTEXPR IndexStmt::IndexStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct IndexStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR IndexStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~IndexStmtDefaultTypeInternal() {} union { IndexStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 IndexStmtDefaultTypeInternal _IndexStmt_default_instance_; inline constexpr InferClause::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, index_elems_{}, conname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), where_clause_{nullptr}, location_{0} {} template PROTOBUF_CONSTEXPR InferClause::InferClause(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct InferClauseDefaultTypeInternal { PROTOBUF_CONSTEXPR InferClauseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~InferClauseDefaultTypeInternal() {} union { InferClause _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 InferClauseDefaultTypeInternal _InferClause_default_instance_; inline constexpr InferenceElem::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, expr_{nullptr}, infercollid_{0u}, inferopclass_{0u} {} template PROTOBUF_CONSTEXPR InferenceElem::InferenceElem(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct InferenceElemDefaultTypeInternal { PROTOBUF_CONSTEXPR InferenceElemDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~InferenceElemDefaultTypeInternal() {} union { InferenceElem _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 InferenceElemDefaultTypeInternal _InferenceElem_default_instance_; inline constexpr InsertStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, cols_{}, returning_list_{}, relation_{nullptr}, select_stmt_{nullptr}, on_conflict_clause_{nullptr}, with_clause_{nullptr}, override_{static_cast< ::pg_query::OverridingKind >(0)} {} template PROTOBUF_CONSTEXPR InsertStmt::InsertStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct InsertStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR InsertStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~InsertStmtDefaultTypeInternal() {} union { InsertStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 InsertStmtDefaultTypeInternal _InsertStmt_default_instance_; inline constexpr IntList::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : items_{}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR IntList::IntList(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct IntListDefaultTypeInternal { PROTOBUF_CONSTEXPR IntListDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~IntListDefaultTypeInternal() {} union { IntList _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 IntListDefaultTypeInternal _IntList_default_instance_; inline constexpr IntoClause::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, col_names_{}, options_{}, access_method_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), table_space_name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), rel_{nullptr}, view_query_{nullptr}, on_commit_{static_cast< ::pg_query::OnCommitAction >(0)}, skip_data_{false} {} template PROTOBUF_CONSTEXPR IntoClause::IntoClause(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct IntoClauseDefaultTypeInternal { PROTOBUF_CONSTEXPR IntoClauseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~IntoClauseDefaultTypeInternal() {} union { IntoClause _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 IntoClauseDefaultTypeInternal _IntoClause_default_instance_; inline constexpr JoinExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, using_clause_{}, larg_{nullptr}, rarg_{nullptr}, join_using_alias_{nullptr}, quals_{nullptr}, alias_{nullptr}, jointype_{static_cast< ::pg_query::JoinType >(0)}, is_natural_{false}, rtindex_{0} {} template PROTOBUF_CONSTEXPR JoinExpr::JoinExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JoinExprDefaultTypeInternal { PROTOBUF_CONSTEXPR JoinExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JoinExprDefaultTypeInternal() {} union { JoinExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JoinExprDefaultTypeInternal _JoinExpr_default_instance_; inline constexpr JsonAggConstructor::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, agg_order_{}, output_{nullptr}, agg_filter_{nullptr}, over_{nullptr}, location_{0} {} template PROTOBUF_CONSTEXPR JsonAggConstructor::JsonAggConstructor(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonAggConstructorDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonAggConstructorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonAggConstructorDefaultTypeInternal() {} union { JsonAggConstructor _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonAggConstructorDefaultTypeInternal _JsonAggConstructor_default_instance_; inline constexpr JsonArgument::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), val_{nullptr} {} template PROTOBUF_CONSTEXPR JsonArgument::JsonArgument(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonArgumentDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonArgumentDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonArgumentDefaultTypeInternal() {} union { JsonArgument _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonArgumentDefaultTypeInternal _JsonArgument_default_instance_; inline constexpr JsonArrayAgg::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, constructor_{nullptr}, arg_{nullptr}, absent_on_null_{false} {} template PROTOBUF_CONSTEXPR JsonArrayAgg::JsonArrayAgg(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonArrayAggDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonArrayAggDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonArrayAggDefaultTypeInternal() {} union { JsonArrayAgg _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonArrayAggDefaultTypeInternal _JsonArrayAgg_default_instance_; inline constexpr JsonArrayConstructor::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, exprs_{}, output_{nullptr}, absent_on_null_{false}, location_{0} {} template PROTOBUF_CONSTEXPR JsonArrayConstructor::JsonArrayConstructor(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonArrayConstructorDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonArrayConstructorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonArrayConstructorDefaultTypeInternal() {} union { JsonArrayConstructor _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonArrayConstructorDefaultTypeInternal _JsonArrayConstructor_default_instance_; inline constexpr JsonArrayQueryConstructor::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, query_{nullptr}, output_{nullptr}, format_{nullptr}, absent_on_null_{false}, location_{0} {} template PROTOBUF_CONSTEXPR JsonArrayQueryConstructor::JsonArrayQueryConstructor(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonArrayQueryConstructorDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonArrayQueryConstructorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonArrayQueryConstructorDefaultTypeInternal() {} union { JsonArrayQueryConstructor _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonArrayQueryConstructorDefaultTypeInternal _JsonArrayQueryConstructor_default_instance_; inline constexpr JsonBehavior::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, expr_{nullptr}, btype_{static_cast< ::pg_query::JsonBehaviorType >(0)}, coerce_{false}, location_{0} {} template PROTOBUF_CONSTEXPR JsonBehavior::JsonBehavior(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonBehaviorDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonBehaviorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonBehaviorDefaultTypeInternal() {} union { JsonBehavior _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonBehaviorDefaultTypeInternal _JsonBehavior_default_instance_; inline constexpr JsonConstructorExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, args_{}, xpr_{nullptr}, func_{nullptr}, coercion_{nullptr}, returning_{nullptr}, type_{static_cast< ::pg_query::JsonConstructorType >(0)}, absent_on_null_{false}, unique_{false}, location_{0} {} template PROTOBUF_CONSTEXPR JsonConstructorExpr::JsonConstructorExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonConstructorExprDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonConstructorExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonConstructorExprDefaultTypeInternal() {} union { JsonConstructorExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonConstructorExprDefaultTypeInternal _JsonConstructorExpr_default_instance_; inline constexpr JsonExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, passing_names_{}, passing_values_{}, column_name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), xpr_{nullptr}, formatted_expr_{nullptr}, format_{nullptr}, path_spec_{nullptr}, returning_{nullptr}, on_empty_{nullptr}, on_error_{nullptr}, op_{static_cast< ::pg_query::JsonExprOp >(0)}, use_io_coercion_{false}, use_json_coercion_{false}, omit_quotes_{false}, wrapper_{static_cast< ::pg_query::JsonWrapper >(0)}, collation_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR JsonExpr::JsonExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonExprDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonExprDefaultTypeInternal() {} union { JsonExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonExprDefaultTypeInternal _JsonExpr_default_instance_; inline constexpr JsonFuncExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, passing_{}, column_name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), context_item_{nullptr}, pathspec_{nullptr}, output_{nullptr}, on_empty_{nullptr}, on_error_{nullptr}, op_{static_cast< ::pg_query::JsonExprOp >(0)}, wrapper_{static_cast< ::pg_query::JsonWrapper >(0)}, quotes_{static_cast< ::pg_query::JsonQuotes >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR JsonFuncExpr::JsonFuncExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonFuncExprDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonFuncExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonFuncExprDefaultTypeInternal() {} union { JsonFuncExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonFuncExprDefaultTypeInternal _JsonFuncExpr_default_instance_; inline constexpr JsonIsPredicate::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, expr_{nullptr}, format_{nullptr}, item_type_{static_cast< ::pg_query::JsonValueType >(0)}, unique_keys_{false}, location_{0} {} template PROTOBUF_CONSTEXPR JsonIsPredicate::JsonIsPredicate(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonIsPredicateDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonIsPredicateDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonIsPredicateDefaultTypeInternal() {} union { JsonIsPredicate _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonIsPredicateDefaultTypeInternal _JsonIsPredicate_default_instance_; inline constexpr JsonKeyValue::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, key_{nullptr}, value_{nullptr} {} template PROTOBUF_CONSTEXPR JsonKeyValue::JsonKeyValue(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonKeyValueDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonKeyValueDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonKeyValueDefaultTypeInternal() {} union { JsonKeyValue _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonKeyValueDefaultTypeInternal _JsonKeyValue_default_instance_; inline constexpr JsonObjectAgg::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, constructor_{nullptr}, arg_{nullptr}, absent_on_null_{false}, unique_{false} {} template PROTOBUF_CONSTEXPR JsonObjectAgg::JsonObjectAgg(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonObjectAggDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonObjectAggDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonObjectAggDefaultTypeInternal() {} union { JsonObjectAgg _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonObjectAggDefaultTypeInternal _JsonObjectAgg_default_instance_; inline constexpr JsonObjectConstructor::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, exprs_{}, output_{nullptr}, absent_on_null_{false}, unique_{false}, location_{0} {} template PROTOBUF_CONSTEXPR JsonObjectConstructor::JsonObjectConstructor(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonObjectConstructorDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonObjectConstructorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonObjectConstructorDefaultTypeInternal() {} union { JsonObjectConstructor _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonObjectConstructorDefaultTypeInternal _JsonObjectConstructor_default_instance_; inline constexpr JsonOutput::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, type_name_{nullptr}, returning_{nullptr} {} template PROTOBUF_CONSTEXPR JsonOutput::JsonOutput(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonOutputDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonOutputDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonOutputDefaultTypeInternal() {} union { JsonOutput _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonOutputDefaultTypeInternal _JsonOutput_default_instance_; inline constexpr JsonParseExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, expr_{nullptr}, output_{nullptr}, unique_keys_{false}, location_{0} {} template PROTOBUF_CONSTEXPR JsonParseExpr::JsonParseExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonParseExprDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonParseExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonParseExprDefaultTypeInternal() {} union { JsonParseExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonParseExprDefaultTypeInternal _JsonParseExpr_default_instance_; inline constexpr JsonScalarExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, expr_{nullptr}, output_{nullptr}, location_{0} {} template PROTOBUF_CONSTEXPR JsonScalarExpr::JsonScalarExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonScalarExprDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonScalarExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonScalarExprDefaultTypeInternal() {} union { JsonScalarExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonScalarExprDefaultTypeInternal _JsonScalarExpr_default_instance_; inline constexpr JsonSerializeExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, expr_{nullptr}, output_{nullptr}, location_{0} {} template PROTOBUF_CONSTEXPR JsonSerializeExpr::JsonSerializeExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonSerializeExprDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonSerializeExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonSerializeExprDefaultTypeInternal() {} union { JsonSerializeExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonSerializeExprDefaultTypeInternal _JsonSerializeExpr_default_instance_; inline constexpr JsonTable::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, passing_{}, columns_{}, context_item_{nullptr}, pathspec_{nullptr}, on_error_{nullptr}, alias_{nullptr}, lateral_{false}, location_{0} {} template PROTOBUF_CONSTEXPR JsonTable::JsonTable(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonTableDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonTableDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonTableDefaultTypeInternal() {} union { JsonTable _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonTableDefaultTypeInternal _JsonTable_default_instance_; inline constexpr JsonTableColumn::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, columns_{}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), type_name_{nullptr}, pathspec_{nullptr}, format_{nullptr}, on_empty_{nullptr}, on_error_{nullptr}, coltype_{static_cast< ::pg_query::JsonTableColumnType >(0)}, wrapper_{static_cast< ::pg_query::JsonWrapper >(0)}, quotes_{static_cast< ::pg_query::JsonQuotes >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR JsonTableColumn::JsonTableColumn(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonTableColumnDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonTableColumnDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonTableColumnDefaultTypeInternal() {} union { JsonTableColumn _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonTableColumnDefaultTypeInternal _JsonTableColumn_default_instance_; inline constexpr JsonTablePathScan::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, plan_{nullptr}, path_{nullptr}, child_{nullptr}, error_on_error_{false}, col_min_{0}, col_max_{0} {} template PROTOBUF_CONSTEXPR JsonTablePathScan::JsonTablePathScan(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonTablePathScanDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonTablePathScanDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonTablePathScanDefaultTypeInternal() {} union { JsonTablePathScan _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonTablePathScanDefaultTypeInternal _JsonTablePathScan_default_instance_; inline constexpr JsonTablePathSpec::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), string_{nullptr}, name_location_{0}, location_{0} {} template PROTOBUF_CONSTEXPR JsonTablePathSpec::JsonTablePathSpec(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonTablePathSpecDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonTablePathSpecDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonTablePathSpecDefaultTypeInternal() {} union { JsonTablePathSpec _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonTablePathSpecDefaultTypeInternal _JsonTablePathSpec_default_instance_; inline constexpr JsonTableSiblingJoin::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, plan_{nullptr}, lplan_{nullptr}, rplan_{nullptr} {} template PROTOBUF_CONSTEXPR JsonTableSiblingJoin::JsonTableSiblingJoin(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonTableSiblingJoinDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonTableSiblingJoinDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonTableSiblingJoinDefaultTypeInternal() {} union { JsonTableSiblingJoin _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonTableSiblingJoinDefaultTypeInternal _JsonTableSiblingJoin_default_instance_; inline constexpr JsonValueExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, raw_expr_{nullptr}, formatted_expr_{nullptr}, format_{nullptr} {} template PROTOBUF_CONSTEXPR JsonValueExpr::JsonValueExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct JsonValueExprDefaultTypeInternal { PROTOBUF_CONSTEXPR JsonValueExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~JsonValueExprDefaultTypeInternal() {} union { JsonValueExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 JsonValueExprDefaultTypeInternal _JsonValueExpr_default_instance_; inline constexpr List::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : items_{}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR List::List(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ListDefaultTypeInternal { PROTOBUF_CONSTEXPR ListDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ListDefaultTypeInternal() {} union { List _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ListDefaultTypeInternal _List_default_instance_; inline constexpr LockStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : relations_{}, mode_{0}, nowait_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR LockStmt::LockStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct LockStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR LockStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~LockStmtDefaultTypeInternal() {} union { LockStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 LockStmtDefaultTypeInternal _LockStmt_default_instance_; inline constexpr LockingClause::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : locked_rels_{}, strength_{static_cast< ::pg_query::LockClauseStrength >(0)}, wait_policy_{static_cast< ::pg_query::LockWaitPolicy >(0)}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR LockingClause::LockingClause(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct LockingClauseDefaultTypeInternal { PROTOBUF_CONSTEXPR LockingClauseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~LockingClauseDefaultTypeInternal() {} union { LockingClause _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 LockingClauseDefaultTypeInternal _LockingClause_default_instance_; inline constexpr MergeAction::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, target_list_{}, update_colnos_{}, qual_{nullptr}, match_kind_{static_cast< ::pg_query::MergeMatchKind >(0)}, command_type_{static_cast< ::pg_query::CmdType >(0)}, override_{static_cast< ::pg_query::OverridingKind >(0)} {} template PROTOBUF_CONSTEXPR MergeAction::MergeAction(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct MergeActionDefaultTypeInternal { PROTOBUF_CONSTEXPR MergeActionDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~MergeActionDefaultTypeInternal() {} union { MergeAction _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MergeActionDefaultTypeInternal _MergeAction_default_instance_; inline constexpr MergeStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, merge_when_clauses_{}, returning_list_{}, relation_{nullptr}, source_relation_{nullptr}, join_condition_{nullptr}, with_clause_{nullptr} {} template PROTOBUF_CONSTEXPR MergeStmt::MergeStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct MergeStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR MergeStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~MergeStmtDefaultTypeInternal() {} union { MergeStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MergeStmtDefaultTypeInternal _MergeStmt_default_instance_; inline constexpr MergeSupportFunc::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, msftype_{0u}, msfcollid_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR MergeSupportFunc::MergeSupportFunc(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct MergeSupportFuncDefaultTypeInternal { PROTOBUF_CONSTEXPR MergeSupportFuncDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~MergeSupportFuncDefaultTypeInternal() {} union { MergeSupportFunc _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MergeSupportFuncDefaultTypeInternal _MergeSupportFunc_default_instance_; inline constexpr MergeWhenClause::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, target_list_{}, values_{}, condition_{nullptr}, match_kind_{static_cast< ::pg_query::MergeMatchKind >(0)}, command_type_{static_cast< ::pg_query::CmdType >(0)}, override_{static_cast< ::pg_query::OverridingKind >(0)} {} template PROTOBUF_CONSTEXPR MergeWhenClause::MergeWhenClause(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct MergeWhenClauseDefaultTypeInternal { PROTOBUF_CONSTEXPR MergeWhenClauseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~MergeWhenClauseDefaultTypeInternal() {} union { MergeWhenClause _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MergeWhenClauseDefaultTypeInternal _MergeWhenClause_default_instance_; inline constexpr MinMaxExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, args_{}, xpr_{nullptr}, minmaxtype_{0u}, minmaxcollid_{0u}, inputcollid_{0u}, op_{static_cast< ::pg_query::MinMaxOp >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR MinMaxExpr::MinMaxExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct MinMaxExprDefaultTypeInternal { PROTOBUF_CONSTEXPR MinMaxExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~MinMaxExprDefaultTypeInternal() {} union { MinMaxExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MinMaxExprDefaultTypeInternal _MinMaxExpr_default_instance_; inline constexpr MultiAssignRef::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, source_{nullptr}, colno_{0}, ncolumns_{0} {} template PROTOBUF_CONSTEXPR MultiAssignRef::MultiAssignRef(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct MultiAssignRefDefaultTypeInternal { PROTOBUF_CONSTEXPR MultiAssignRefDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~MultiAssignRefDefaultTypeInternal() {} union { MultiAssignRef _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MultiAssignRefDefaultTypeInternal _MultiAssignRef_default_instance_; inline constexpr NamedArgExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), xpr_{nullptr}, arg_{nullptr}, argnumber_{0}, location_{0} {} template PROTOBUF_CONSTEXPR NamedArgExpr::NamedArgExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct NamedArgExprDefaultTypeInternal { PROTOBUF_CONSTEXPR NamedArgExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~NamedArgExprDefaultTypeInternal() {} union { NamedArgExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 NamedArgExprDefaultTypeInternal _NamedArgExpr_default_instance_; inline constexpr NextValueExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, seqid_{0u}, type_id_{0u} {} template PROTOBUF_CONSTEXPR NextValueExpr::NextValueExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct NextValueExprDefaultTypeInternal { PROTOBUF_CONSTEXPR NextValueExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~NextValueExprDefaultTypeInternal() {} union { NextValueExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 NextValueExprDefaultTypeInternal _NextValueExpr_default_instance_; inline constexpr Node::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : node_{}, _cached_size_{0}, _oneof_case_{} {} template PROTOBUF_CONSTEXPR Node::Node(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct NodeDefaultTypeInternal { PROTOBUF_CONSTEXPR NodeDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~NodeDefaultTypeInternal() {} union { Node _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 NodeDefaultTypeInternal _Node_default_instance_; inline constexpr NullIfExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, args_{}, xpr_{nullptr}, opno_{0u}, opresulttype_{0u}, opretset_{false}, opcollid_{0u}, inputcollid_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR NullIfExpr::NullIfExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct NullIfExprDefaultTypeInternal { PROTOBUF_CONSTEXPR NullIfExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~NullIfExprDefaultTypeInternal() {} union { NullIfExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 NullIfExprDefaultTypeInternal _NullIfExpr_default_instance_; inline constexpr NullTest::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, arg_{nullptr}, nulltesttype_{static_cast< ::pg_query::NullTestType >(0)}, argisrow_{false}, location_{0} {} template PROTOBUF_CONSTEXPR NullTest::NullTest(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct NullTestDefaultTypeInternal { PROTOBUF_CONSTEXPR NullTestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~NullTestDefaultTypeInternal() {} union { NullTest _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 NullTestDefaultTypeInternal _NullTest_default_instance_; inline constexpr ObjectWithArgs::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : objname_{}, objargs_{}, objfuncargs_{}, args_unspecified_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR ObjectWithArgs::ObjectWithArgs(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ObjectWithArgsDefaultTypeInternal { PROTOBUF_CONSTEXPR ObjectWithArgsDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ObjectWithArgsDefaultTypeInternal() {} union { ObjectWithArgs _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ObjectWithArgsDefaultTypeInternal _ObjectWithArgs_default_instance_; inline constexpr OidList::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : items_{}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR OidList::OidList(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct OidListDefaultTypeInternal { PROTOBUF_CONSTEXPR OidListDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~OidListDefaultTypeInternal() {} union { OidList _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 OidListDefaultTypeInternal _OidList_default_instance_; inline constexpr OnConflictClause::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, target_list_{}, infer_{nullptr}, where_clause_{nullptr}, action_{static_cast< ::pg_query::OnConflictAction >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR OnConflictClause::OnConflictClause(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct OnConflictClauseDefaultTypeInternal { PROTOBUF_CONSTEXPR OnConflictClauseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~OnConflictClauseDefaultTypeInternal() {} union { OnConflictClause _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 OnConflictClauseDefaultTypeInternal _OnConflictClause_default_instance_; inline constexpr OnConflictExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, arbiter_elems_{}, on_conflict_set_{}, excl_rel_tlist_{}, arbiter_where_{nullptr}, on_conflict_where_{nullptr}, action_{static_cast< ::pg_query::OnConflictAction >(0)}, constraint_{0u}, excl_rel_index_{0} {} template PROTOBUF_CONSTEXPR OnConflictExpr::OnConflictExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct OnConflictExprDefaultTypeInternal { PROTOBUF_CONSTEXPR OnConflictExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~OnConflictExprDefaultTypeInternal() {} union { OnConflictExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 OnConflictExprDefaultTypeInternal _OnConflictExpr_default_instance_; inline constexpr OpExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, args_{}, xpr_{nullptr}, opno_{0u}, opresulttype_{0u}, opretset_{false}, opcollid_{0u}, inputcollid_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR OpExpr::OpExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct OpExprDefaultTypeInternal { PROTOBUF_CONSTEXPR OpExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~OpExprDefaultTypeInternal() {} union { OpExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 OpExprDefaultTypeInternal _OpExpr_default_instance_; inline constexpr PLAssignStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, indirection_{}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), val_{nullptr}, nnames_{0}, location_{0} {} template PROTOBUF_CONSTEXPR PLAssignStmt::PLAssignStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct PLAssignStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR PLAssignStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~PLAssignStmtDefaultTypeInternal() {} union { PLAssignStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PLAssignStmtDefaultTypeInternal _PLAssignStmt_default_instance_; inline constexpr Param::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, paramkind_{static_cast< ::pg_query::ParamKind >(0)}, paramid_{0}, paramtype_{0u}, paramtypmod_{0}, paramcollid_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR Param::Param(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ParamDefaultTypeInternal { PROTOBUF_CONSTEXPR ParamDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ParamDefaultTypeInternal() {} union { Param _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ParamDefaultTypeInternal _Param_default_instance_; inline constexpr PartitionBoundSpec::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : listdatums_{}, lowerdatums_{}, upperdatums_{}, strategy_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), is_default_{false}, modulus_{0}, remainder_{0}, location_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR PartitionBoundSpec::PartitionBoundSpec(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct PartitionBoundSpecDefaultTypeInternal { PROTOBUF_CONSTEXPR PartitionBoundSpecDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~PartitionBoundSpecDefaultTypeInternal() {} union { PartitionBoundSpec _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PartitionBoundSpecDefaultTypeInternal _PartitionBoundSpec_default_instance_; inline constexpr PartitionCmd::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, name_{nullptr}, bound_{nullptr}, concurrent_{false} {} template PROTOBUF_CONSTEXPR PartitionCmd::PartitionCmd(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct PartitionCmdDefaultTypeInternal { PROTOBUF_CONSTEXPR PartitionCmdDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~PartitionCmdDefaultTypeInternal() {} union { PartitionCmd _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PartitionCmdDefaultTypeInternal _PartitionCmd_default_instance_; inline constexpr PartitionElem::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, collation_{}, opclass_{}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), expr_{nullptr}, location_{0} {} template PROTOBUF_CONSTEXPR PartitionElem::PartitionElem(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct PartitionElemDefaultTypeInternal { PROTOBUF_CONSTEXPR PartitionElemDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~PartitionElemDefaultTypeInternal() {} union { PartitionElem _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PartitionElemDefaultTypeInternal _PartitionElem_default_instance_; inline constexpr PartitionRangeDatum::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, value_{nullptr}, kind_{static_cast< ::pg_query::PartitionRangeDatumKind >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR PartitionRangeDatum::PartitionRangeDatum(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct PartitionRangeDatumDefaultTypeInternal { PROTOBUF_CONSTEXPR PartitionRangeDatumDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~PartitionRangeDatumDefaultTypeInternal() {} union { PartitionRangeDatum _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PartitionRangeDatumDefaultTypeInternal _PartitionRangeDatum_default_instance_; inline constexpr PartitionSpec::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : part_params_{}, strategy_{static_cast< ::pg_query::PartitionStrategy >(0)}, location_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR PartitionSpec::PartitionSpec(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct PartitionSpecDefaultTypeInternal { PROTOBUF_CONSTEXPR PartitionSpecDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~PartitionSpecDefaultTypeInternal() {} union { PartitionSpec _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PartitionSpecDefaultTypeInternal _PartitionSpec_default_instance_; inline constexpr PrepareStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, argtypes_{}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), query_{nullptr} {} template PROTOBUF_CONSTEXPR PrepareStmt::PrepareStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct PrepareStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR PrepareStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~PrepareStmtDefaultTypeInternal() {} union { PrepareStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PrepareStmtDefaultTypeInternal _PrepareStmt_default_instance_; inline constexpr PublicationObjSpec::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), pubtable_{nullptr}, pubobjtype_{static_cast< ::pg_query::PublicationObjSpecType >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR PublicationObjSpec::PublicationObjSpec(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct PublicationObjSpecDefaultTypeInternal { PROTOBUF_CONSTEXPR PublicationObjSpecDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~PublicationObjSpecDefaultTypeInternal() {} union { PublicationObjSpec _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PublicationObjSpecDefaultTypeInternal _PublicationObjSpec_default_instance_; inline constexpr PublicationTable::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, columns_{}, relation_{nullptr}, where_clause_{nullptr} {} template PROTOBUF_CONSTEXPR PublicationTable::PublicationTable(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct PublicationTableDefaultTypeInternal { PROTOBUF_CONSTEXPR PublicationTableDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~PublicationTableDefaultTypeInternal() {} union { PublicationTable _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PublicationTableDefaultTypeInternal _PublicationTable_default_instance_; inline constexpr Query::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, cte_list_{}, rtable_{}, rteperminfos_{}, merge_action_list_{}, target_list_{}, returning_list_{}, group_clause_{}, grouping_sets_{}, window_clause_{}, distinct_clause_{}, sort_clause_{}, row_marks_{}, constraint_deps_{}, with_check_options_{}, utility_stmt_{nullptr}, jointree_{nullptr}, merge_join_condition_{nullptr}, on_conflict_{nullptr}, having_qual_{nullptr}, limit_offset_{nullptr}, limit_count_{nullptr}, set_operations_{nullptr}, command_type_{static_cast< ::pg_query::CmdType >(0)}, query_source_{static_cast< ::pg_query::QuerySource >(0)}, result_relation_{0}, can_set_tag_{false}, has_aggs_{false}, has_window_funcs_{false}, has_target_srfs_{false}, has_sub_links_{false}, has_distinct_on_{false}, has_recursive_{false}, has_modifying_cte_{false}, has_for_update_{false}, has_row_security_{false}, is_return_{false}, group_distinct_{false}, merge_target_relation_{0}, override_{static_cast< ::pg_query::OverridingKind >(0)}, limit_option_{static_cast< ::pg_query::LimitOption >(0)}, stmt_location_{0}, stmt_len_{0} {} template PROTOBUF_CONSTEXPR Query::Query(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct QueryDefaultTypeInternal { PROTOBUF_CONSTEXPR QueryDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~QueryDefaultTypeInternal() {} union { Query _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 QueryDefaultTypeInternal _Query_default_instance_; inline constexpr RangeFunction::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, functions_{}, coldeflist_{}, alias_{nullptr}, lateral_{false}, ordinality_{false}, is_rowsfrom_{false} {} template PROTOBUF_CONSTEXPR RangeFunction::RangeFunction(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RangeFunctionDefaultTypeInternal { PROTOBUF_CONSTEXPR RangeFunctionDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RangeFunctionDefaultTypeInternal() {} union { RangeFunction _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RangeFunctionDefaultTypeInternal _RangeFunction_default_instance_; inline constexpr RangeSubselect::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, subquery_{nullptr}, alias_{nullptr}, lateral_{false} {} template PROTOBUF_CONSTEXPR RangeSubselect::RangeSubselect(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RangeSubselectDefaultTypeInternal { PROTOBUF_CONSTEXPR RangeSubselectDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RangeSubselectDefaultTypeInternal() {} union { RangeSubselect _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RangeSubselectDefaultTypeInternal _RangeSubselect_default_instance_; inline constexpr RangeTableFunc::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, namespaces_{}, columns_{}, docexpr_{nullptr}, rowexpr_{nullptr}, alias_{nullptr}, lateral_{false}, location_{0} {} template PROTOBUF_CONSTEXPR RangeTableFunc::RangeTableFunc(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RangeTableFuncDefaultTypeInternal { PROTOBUF_CONSTEXPR RangeTableFuncDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RangeTableFuncDefaultTypeInternal() {} union { RangeTableFunc _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RangeTableFuncDefaultTypeInternal _RangeTableFunc_default_instance_; inline constexpr RangeTableFuncCol::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, colname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), type_name_{nullptr}, colexpr_{nullptr}, coldefexpr_{nullptr}, for_ordinality_{false}, is_not_null_{false}, location_{0} {} template PROTOBUF_CONSTEXPR RangeTableFuncCol::RangeTableFuncCol(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RangeTableFuncColDefaultTypeInternal { PROTOBUF_CONSTEXPR RangeTableFuncColDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RangeTableFuncColDefaultTypeInternal() {} union { RangeTableFuncCol _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RangeTableFuncColDefaultTypeInternal _RangeTableFuncCol_default_instance_; inline constexpr RangeTableSample::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, method_{}, args_{}, relation_{nullptr}, repeatable_{nullptr}, location_{0} {} template PROTOBUF_CONSTEXPR RangeTableSample::RangeTableSample(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RangeTableSampleDefaultTypeInternal { PROTOBUF_CONSTEXPR RangeTableSampleDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RangeTableSampleDefaultTypeInternal() {} union { RangeTableSample _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RangeTableSampleDefaultTypeInternal _RangeTableSample_default_instance_; inline constexpr RangeTblEntry::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, joinaliasvars_{}, joinleftcols_{}, joinrightcols_{}, functions_{}, values_lists_{}, coltypes_{}, coltypmods_{}, colcollations_{}, security_quals_{}, relkind_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), ctename_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), enrname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), alias_{nullptr}, eref_{nullptr}, tablesample_{nullptr}, subquery_{nullptr}, join_using_alias_{nullptr}, tablefunc_{nullptr}, rtekind_{static_cast< ::pg_query::RTEKind >(0)}, relid_{0u}, rellockmode_{0}, perminfoindex_{0u}, jointype_{static_cast< ::pg_query::JoinType >(0)}, joinmergedcols_{0}, inh_{false}, security_barrier_{false}, funcordinality_{false}, self_reference_{false}, ctelevelsup_{0u}, enrtuples_{0}, lateral_{false}, in_from_cl_{false} {} template PROTOBUF_CONSTEXPR RangeTblEntry::RangeTblEntry(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RangeTblEntryDefaultTypeInternal { PROTOBUF_CONSTEXPR RangeTblEntryDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RangeTblEntryDefaultTypeInternal() {} union { RangeTblEntry _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RangeTblEntryDefaultTypeInternal _RangeTblEntry_default_instance_; inline constexpr RangeTblFunction::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, funccolnames_{}, funccoltypes_{}, funccoltypmods_{}, funccolcollations_{}, funcparams_{}, _funcparams_cached_byte_size_{0}, funcexpr_{nullptr}, funccolcount_{0} {} template PROTOBUF_CONSTEXPR RangeTblFunction::RangeTblFunction(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RangeTblFunctionDefaultTypeInternal { PROTOBUF_CONSTEXPR RangeTblFunctionDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RangeTblFunctionDefaultTypeInternal() {} union { RangeTblFunction _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RangeTblFunctionDefaultTypeInternal _RangeTblFunction_default_instance_; inline constexpr RangeVar::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, catalogname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), schemaname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), relname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), relpersistence_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), alias_{nullptr}, inh_{false}, location_{0} {} template PROTOBUF_CONSTEXPR RangeVar::RangeVar(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RangeVarDefaultTypeInternal { PROTOBUF_CONSTEXPR RangeVarDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RangeVarDefaultTypeInternal() {} union { RangeVar _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RangeVarDefaultTypeInternal _RangeVar_default_instance_; inline constexpr RawStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, stmt_{nullptr}, stmt_location_{0}, stmt_len_{0} {} template PROTOBUF_CONSTEXPR RawStmt::RawStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RawStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR RawStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RawStmtDefaultTypeInternal() {} union { RawStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RawStmtDefaultTypeInternal _RawStmt_default_instance_; inline constexpr ReassignOwnedStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, roles_{}, newrole_{nullptr} {} template PROTOBUF_CONSTEXPR ReassignOwnedStmt::ReassignOwnedStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ReassignOwnedStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR ReassignOwnedStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ReassignOwnedStmtDefaultTypeInternal() {} union { ReassignOwnedStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ReassignOwnedStmtDefaultTypeInternal _ReassignOwnedStmt_default_instance_; inline constexpr RefreshMatViewStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, relation_{nullptr}, concurrent_{false}, skip_data_{false} {} template PROTOBUF_CONSTEXPR RefreshMatViewStmt::RefreshMatViewStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RefreshMatViewStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR RefreshMatViewStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RefreshMatViewStmtDefaultTypeInternal() {} union { RefreshMatViewStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RefreshMatViewStmtDefaultTypeInternal _RefreshMatViewStmt_default_instance_; inline constexpr ReindexStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, params_{}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), relation_{nullptr}, kind_{static_cast< ::pg_query::ReindexObjectType >(0)} {} template PROTOBUF_CONSTEXPR ReindexStmt::ReindexStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ReindexStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR ReindexStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ReindexStmtDefaultTypeInternal() {} union { ReindexStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ReindexStmtDefaultTypeInternal _ReindexStmt_default_instance_; inline constexpr RelabelType::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, arg_{nullptr}, resulttype_{0u}, resulttypmod_{0}, resultcollid_{0u}, relabelformat_{static_cast< ::pg_query::CoercionForm >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR RelabelType::RelabelType(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RelabelTypeDefaultTypeInternal { PROTOBUF_CONSTEXPR RelabelTypeDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RelabelTypeDefaultTypeInternal() {} union { RelabelType _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RelabelTypeDefaultTypeInternal _RelabelType_default_instance_; inline constexpr RenameStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, subname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), newname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), relation_{nullptr}, object_{nullptr}, rename_type_{static_cast< ::pg_query::ObjectType >(0)}, relation_type_{static_cast< ::pg_query::ObjectType >(0)}, behavior_{static_cast< ::pg_query::DropBehavior >(0)}, missing_ok_{false} {} template PROTOBUF_CONSTEXPR RenameStmt::RenameStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RenameStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR RenameStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RenameStmtDefaultTypeInternal() {} union { RenameStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RenameStmtDefaultTypeInternal _RenameStmt_default_instance_; inline constexpr ResTarget::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, indirection_{}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), val_{nullptr}, location_{0} {} template PROTOBUF_CONSTEXPR ResTarget::ResTarget(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ResTargetDefaultTypeInternal { PROTOBUF_CONSTEXPR ResTargetDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ResTargetDefaultTypeInternal() {} union { ResTarget _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ResTargetDefaultTypeInternal _ResTarget_default_instance_; inline constexpr ReturnStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, returnval_{nullptr} {} template PROTOBUF_CONSTEXPR ReturnStmt::ReturnStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ReturnStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR ReturnStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ReturnStmtDefaultTypeInternal() {} union { ReturnStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ReturnStmtDefaultTypeInternal _ReturnStmt_default_instance_; inline constexpr RowCompareExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, opnos_{}, opfamilies_{}, inputcollids_{}, largs_{}, rargs_{}, xpr_{nullptr}, rctype_{static_cast< ::pg_query::RowCompareType >(0)} {} template PROTOBUF_CONSTEXPR RowCompareExpr::RowCompareExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RowCompareExprDefaultTypeInternal { PROTOBUF_CONSTEXPR RowCompareExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RowCompareExprDefaultTypeInternal() {} union { RowCompareExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RowCompareExprDefaultTypeInternal _RowCompareExpr_default_instance_; inline constexpr RowExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, args_{}, colnames_{}, xpr_{nullptr}, row_typeid_{0u}, row_format_{static_cast< ::pg_query::CoercionForm >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR RowExpr::RowExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RowExprDefaultTypeInternal { PROTOBUF_CONSTEXPR RowExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RowExprDefaultTypeInternal() {} union { RowExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RowExprDefaultTypeInternal _RowExpr_default_instance_; inline constexpr RuleStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, actions_{}, rulename_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), relation_{nullptr}, where_clause_{nullptr}, event_{static_cast< ::pg_query::CmdType >(0)}, instead_{false}, replace_{false} {} template PROTOBUF_CONSTEXPR RuleStmt::RuleStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct RuleStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR RuleStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~RuleStmtDefaultTypeInternal() {} union { RuleStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RuleStmtDefaultTypeInternal _RuleStmt_default_instance_; inline constexpr SQLValueFunction::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, op_{static_cast< ::pg_query::SQLValueFunctionOp >(0)}, type_{0u}, typmod_{0}, location_{0} {} template PROTOBUF_CONSTEXPR SQLValueFunction::SQLValueFunction(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct SQLValueFunctionDefaultTypeInternal { PROTOBUF_CONSTEXPR SQLValueFunctionDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~SQLValueFunctionDefaultTypeInternal() {} union { SQLValueFunction _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SQLValueFunctionDefaultTypeInternal _SQLValueFunction_default_instance_; inline constexpr ScalarArrayOpExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, args_{}, xpr_{nullptr}, opno_{0u}, use_or_{false}, inputcollid_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR ScalarArrayOpExpr::ScalarArrayOpExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ScalarArrayOpExprDefaultTypeInternal { PROTOBUF_CONSTEXPR ScalarArrayOpExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ScalarArrayOpExprDefaultTypeInternal() {} union { ScalarArrayOpExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ScalarArrayOpExprDefaultTypeInternal _ScalarArrayOpExpr_default_instance_; inline constexpr SecLabelStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, provider_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), label_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), object_{nullptr}, objtype_{static_cast< ::pg_query::ObjectType >(0)} {} template PROTOBUF_CONSTEXPR SecLabelStmt::SecLabelStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct SecLabelStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR SecLabelStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~SecLabelStmtDefaultTypeInternal() {} union { SecLabelStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SecLabelStmtDefaultTypeInternal _SecLabelStmt_default_instance_; inline constexpr SelectStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, distinct_clause_{}, target_list_{}, from_clause_{}, group_clause_{}, window_clause_{}, values_lists_{}, sort_clause_{}, locking_clause_{}, into_clause_{nullptr}, where_clause_{nullptr}, having_clause_{nullptr}, limit_offset_{nullptr}, limit_count_{nullptr}, with_clause_{nullptr}, larg_{nullptr}, rarg_{nullptr}, group_distinct_{false}, all_{false}, limit_option_{static_cast< ::pg_query::LimitOption >(0)}, op_{static_cast< ::pg_query::SetOperation >(0)} {} template PROTOBUF_CONSTEXPR SelectStmt::SelectStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct SelectStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR SelectStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~SelectStmtDefaultTypeInternal() {} union { SelectStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SelectStmtDefaultTypeInternal _SelectStmt_default_instance_; inline constexpr SetOperationStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, col_types_{}, col_typmods_{}, col_collations_{}, group_clauses_{}, larg_{nullptr}, rarg_{nullptr}, op_{static_cast< ::pg_query::SetOperation >(0)}, all_{false} {} template PROTOBUF_CONSTEXPR SetOperationStmt::SetOperationStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct SetOperationStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR SetOperationStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~SetOperationStmtDefaultTypeInternal() {} union { SetOperationStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SetOperationStmtDefaultTypeInternal _SetOperationStmt_default_instance_; inline constexpr SetToDefault::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, type_id_{0u}, type_mod_{0}, collation_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR SetToDefault::SetToDefault(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct SetToDefaultDefaultTypeInternal { PROTOBUF_CONSTEXPR SetToDefaultDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~SetToDefaultDefaultTypeInternal() {} union { SetToDefault _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SetToDefaultDefaultTypeInternal _SetToDefault_default_instance_; inline constexpr SortBy::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, use_op_{}, node_{nullptr}, sortby_dir_{static_cast< ::pg_query::SortByDir >(0)}, sortby_nulls_{static_cast< ::pg_query::SortByNulls >(0)}, location_{0} {} template PROTOBUF_CONSTEXPR SortBy::SortBy(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct SortByDefaultTypeInternal { PROTOBUF_CONSTEXPR SortByDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~SortByDefaultTypeInternal() {} union { SortBy _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SortByDefaultTypeInternal _SortBy_default_instance_; inline constexpr StatsElem::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), expr_{nullptr} {} template PROTOBUF_CONSTEXPR StatsElem::StatsElem(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct StatsElemDefaultTypeInternal { PROTOBUF_CONSTEXPR StatsElemDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~StatsElemDefaultTypeInternal() {} union { StatsElem _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 StatsElemDefaultTypeInternal _StatsElem_default_instance_; inline constexpr SubLink::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, oper_name_{}, xpr_{nullptr}, testexpr_{nullptr}, subselect_{nullptr}, sub_link_type_{static_cast< ::pg_query::SubLinkType >(0)}, sub_link_id_{0}, location_{0} {} template PROTOBUF_CONSTEXPR SubLink::SubLink(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct SubLinkDefaultTypeInternal { PROTOBUF_CONSTEXPR SubLinkDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~SubLinkDefaultTypeInternal() {} union { SubLink _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SubLinkDefaultTypeInternal _SubLink_default_instance_; inline constexpr SubPlan::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, param_ids_{}, set_param_{}, par_param_{}, args_{}, plan_name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), xpr_{nullptr}, testexpr_{nullptr}, sub_link_type_{static_cast< ::pg_query::SubLinkType >(0)}, plan_id_{0}, first_col_type_{0u}, first_col_typmod_{0}, first_col_collation_{0u}, use_hash_table_{false}, unknown_eq_false_{false}, parallel_safe_{false}, startup_cost_{0}, per_call_cost_{0} {} template PROTOBUF_CONSTEXPR SubPlan::SubPlan(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct SubPlanDefaultTypeInternal { PROTOBUF_CONSTEXPR SubPlanDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~SubPlanDefaultTypeInternal() {} union { SubPlan _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SubPlanDefaultTypeInternal _SubPlan_default_instance_; inline constexpr SubscriptingRef::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, refupperindexpr_{}, reflowerindexpr_{}, xpr_{nullptr}, refexpr_{nullptr}, refassgnexpr_{nullptr}, refcontainertype_{0u}, refelemtype_{0u}, refrestype_{0u}, reftypmod_{0}, refcollid_{0u} {} template PROTOBUF_CONSTEXPR SubscriptingRef::SubscriptingRef(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct SubscriptingRefDefaultTypeInternal { PROTOBUF_CONSTEXPR SubscriptingRefDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~SubscriptingRefDefaultTypeInternal() {} union { SubscriptingRef _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SubscriptingRefDefaultTypeInternal _SubscriptingRef_default_instance_; inline constexpr TableFunc::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, ns_uris_{}, ns_names_{}, colnames_{}, coltypes_{}, coltypmods_{}, colcollations_{}, colexprs_{}, coldefexprs_{}, colvalexprs_{}, passingvalexprs_{}, notnulls_{}, _notnulls_cached_byte_size_{0}, docexpr_{nullptr}, rowexpr_{nullptr}, plan_{nullptr}, functype_{static_cast< ::pg_query::TableFuncType >(0)}, ordinalitycol_{0}, location_{0} {} template PROTOBUF_CONSTEXPR TableFunc::TableFunc(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct TableFuncDefaultTypeInternal { PROTOBUF_CONSTEXPR TableFuncDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~TableFuncDefaultTypeInternal() {} union { TableFunc _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TableFuncDefaultTypeInternal _TableFunc_default_instance_; inline constexpr TableLikeClause::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, relation_{nullptr}, options_{0u}, relation_oid_{0u} {} template PROTOBUF_CONSTEXPR TableLikeClause::TableLikeClause(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct TableLikeClauseDefaultTypeInternal { PROTOBUF_CONSTEXPR TableLikeClauseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~TableLikeClauseDefaultTypeInternal() {} union { TableLikeClause _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TableLikeClauseDefaultTypeInternal _TableLikeClause_default_instance_; inline constexpr TableSampleClause::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, args_{}, repeatable_{nullptr}, tsmhandler_{0u} {} template PROTOBUF_CONSTEXPR TableSampleClause::TableSampleClause(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct TableSampleClauseDefaultTypeInternal { PROTOBUF_CONSTEXPR TableSampleClauseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~TableSampleClauseDefaultTypeInternal() {} union { TableSampleClause _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TableSampleClauseDefaultTypeInternal _TableSampleClause_default_instance_; inline constexpr TargetEntry::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, resname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), xpr_{nullptr}, expr_{nullptr}, resno_{0}, ressortgroupref_{0u}, resorigtbl_{0u}, resorigcol_{0}, resjunk_{false} {} template PROTOBUF_CONSTEXPR TargetEntry::TargetEntry(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct TargetEntryDefaultTypeInternal { PROTOBUF_CONSTEXPR TargetEntryDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~TargetEntryDefaultTypeInternal() {} union { TargetEntry _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TargetEntryDefaultTypeInternal _TargetEntry_default_instance_; inline constexpr TransactionStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : options_{}, savepoint_name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), gid_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), kind_{static_cast< ::pg_query::TransactionStmtKind >(0)}, chain_{false}, location_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR TransactionStmt::TransactionStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct TransactionStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR TransactionStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~TransactionStmtDefaultTypeInternal() {} union { TransactionStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TransactionStmtDefaultTypeInternal _TransactionStmt_default_instance_; inline constexpr TruncateStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : relations_{}, restart_seqs_{false}, behavior_{static_cast< ::pg_query::DropBehavior >(0)}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR TruncateStmt::TruncateStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct TruncateStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR TruncateStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~TruncateStmtDefaultTypeInternal() {} union { TruncateStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TruncateStmtDefaultTypeInternal _TruncateStmt_default_instance_; inline constexpr TypeCast::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, arg_{nullptr}, type_name_{nullptr}, location_{0} {} template PROTOBUF_CONSTEXPR TypeCast::TypeCast(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct TypeCastDefaultTypeInternal { PROTOBUF_CONSTEXPR TypeCastDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~TypeCastDefaultTypeInternal() {} union { TypeCast _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TypeCastDefaultTypeInternal _TypeCast_default_instance_; inline constexpr TypeName::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : names_{}, typmods_{}, array_bounds_{}, type_oid_{0u}, setof_{false}, pct_type_{false}, typemod_{0}, location_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR TypeName::TypeName(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct TypeNameDefaultTypeInternal { PROTOBUF_CONSTEXPR TypeNameDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~TypeNameDefaultTypeInternal() {} union { TypeName _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TypeNameDefaultTypeInternal _TypeName_default_instance_; inline constexpr UpdateStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, target_list_{}, from_clause_{}, returning_list_{}, relation_{nullptr}, where_clause_{nullptr}, with_clause_{nullptr} {} template PROTOBUF_CONSTEXPR UpdateStmt::UpdateStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct UpdateStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR UpdateStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~UpdateStmtDefaultTypeInternal() {} union { UpdateStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 UpdateStmtDefaultTypeInternal _UpdateStmt_default_instance_; inline constexpr VacuumRelation::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, va_cols_{}, relation_{nullptr}, oid_{0u} {} template PROTOBUF_CONSTEXPR VacuumRelation::VacuumRelation(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct VacuumRelationDefaultTypeInternal { PROTOBUF_CONSTEXPR VacuumRelationDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~VacuumRelationDefaultTypeInternal() {} union { VacuumRelation _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 VacuumRelationDefaultTypeInternal _VacuumRelation_default_instance_; inline constexpr VacuumStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : options_{}, rels_{}, is_vacuumcmd_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR VacuumStmt::VacuumStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct VacuumStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR VacuumStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~VacuumStmtDefaultTypeInternal() {} union { VacuumStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 VacuumStmtDefaultTypeInternal _VacuumStmt_default_instance_; inline constexpr Var::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, varnullingrels_{}, _varnullingrels_cached_byte_size_{0}, xpr_{nullptr}, varno_{0}, varattno_{0}, vartype_{0u}, vartypmod_{0}, varcollid_{0u}, varlevelsup_{0u}, location_{0} {} template PROTOBUF_CONSTEXPR Var::Var(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct VarDefaultTypeInternal { PROTOBUF_CONSTEXPR VarDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~VarDefaultTypeInternal() {} union { Var _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 VarDefaultTypeInternal _Var_default_instance_; inline constexpr VariableSetStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : args_{}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), kind_{static_cast< ::pg_query::VariableSetKind >(0)}, is_local_{false}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR VariableSetStmt::VariableSetStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct VariableSetStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR VariableSetStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~VariableSetStmtDefaultTypeInternal() {} union { VariableSetStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 VariableSetStmtDefaultTypeInternal _VariableSetStmt_default_instance_; inline constexpr ViewStmt::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, aliases_{}, options_{}, view_{nullptr}, query_{nullptr}, replace_{false}, with_check_option_{static_cast< ::pg_query::ViewCheckOption >(0)} {} template PROTOBUF_CONSTEXPR ViewStmt::ViewStmt(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ViewStmtDefaultTypeInternal { PROTOBUF_CONSTEXPR ViewStmtDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ViewStmtDefaultTypeInternal() {} union { ViewStmt _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ViewStmtDefaultTypeInternal _ViewStmt_default_instance_; inline constexpr WindowClause::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, partition_clause_{}, order_clause_{}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), refname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), start_offset_{nullptr}, end_offset_{nullptr}, frame_options_{0}, start_in_range_func_{0u}, end_in_range_func_{0u}, in_range_coll_{0u}, in_range_asc_{false}, in_range_nulls_first_{false}, copied_order_{false}, winref_{0u} {} template PROTOBUF_CONSTEXPR WindowClause::WindowClause(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct WindowClauseDefaultTypeInternal { PROTOBUF_CONSTEXPR WindowClauseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~WindowClauseDefaultTypeInternal() {} union { WindowClause _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 WindowClauseDefaultTypeInternal _WindowClause_default_instance_; inline constexpr WindowDef::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, partition_clause_{}, order_clause_{}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), refname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), start_offset_{nullptr}, end_offset_{nullptr}, frame_options_{0}, location_{0} {} template PROTOBUF_CONSTEXPR WindowDef::WindowDef(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct WindowDefDefaultTypeInternal { PROTOBUF_CONSTEXPR WindowDefDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~WindowDefDefaultTypeInternal() {} union { WindowDef _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 WindowDefDefaultTypeInternal _WindowDef_default_instance_; inline constexpr WindowFunc::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, args_{}, run_condition_{}, xpr_{nullptr}, aggfilter_{nullptr}, winfnoid_{0u}, wintype_{0u}, wincollid_{0u}, inputcollid_{0u}, winref_{0u}, winstar_{false}, winagg_{false}, location_{0} {} template PROTOBUF_CONSTEXPR WindowFunc::WindowFunc(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct WindowFuncDefaultTypeInternal { PROTOBUF_CONSTEXPR WindowFuncDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~WindowFuncDefaultTypeInternal() {} union { WindowFunc _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 WindowFuncDefaultTypeInternal _WindowFunc_default_instance_; inline constexpr WindowFuncRunCondition::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, xpr_{nullptr}, arg_{nullptr}, opno_{0u}, inputcollid_{0u}, wfunc_left_{false} {} template PROTOBUF_CONSTEXPR WindowFuncRunCondition::WindowFuncRunCondition(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct WindowFuncRunConditionDefaultTypeInternal { PROTOBUF_CONSTEXPR WindowFuncRunConditionDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~WindowFuncRunConditionDefaultTypeInternal() {} union { WindowFuncRunCondition _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 WindowFuncRunConditionDefaultTypeInternal _WindowFuncRunCondition_default_instance_; inline constexpr WithCheckOption::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, relname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), polname_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), qual_{nullptr}, kind_{static_cast< ::pg_query::WCOKind >(0)}, cascaded_{false} {} template PROTOBUF_CONSTEXPR WithCheckOption::WithCheckOption(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct WithCheckOptionDefaultTypeInternal { PROTOBUF_CONSTEXPR WithCheckOptionDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~WithCheckOptionDefaultTypeInternal() {} union { WithCheckOption _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 WithCheckOptionDefaultTypeInternal _WithCheckOption_default_instance_; inline constexpr WithClause::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : ctes_{}, recursive_{false}, location_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR WithClause::WithClause(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct WithClauseDefaultTypeInternal { PROTOBUF_CONSTEXPR WithClauseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~WithClauseDefaultTypeInternal() {} union { WithClause _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 WithClauseDefaultTypeInternal _WithClause_default_instance_; inline constexpr XmlExpr::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, named_args_{}, arg_names_{}, args_{}, name_( &::google::protobuf::internal::fixed_address_empty_string, ::_pbi::ConstantInitialized()), xpr_{nullptr}, op_{static_cast< ::pg_query::XmlExprOp >(0)}, xmloption_{static_cast< ::pg_query::XmlOptionType >(0)}, indent_{false}, type_{0u}, typmod_{0}, location_{0} {} template PROTOBUF_CONSTEXPR XmlExpr::XmlExpr(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct XmlExprDefaultTypeInternal { PROTOBUF_CONSTEXPR XmlExprDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~XmlExprDefaultTypeInternal() {} union { XmlExpr _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 XmlExprDefaultTypeInternal _XmlExpr_default_instance_; inline constexpr XmlSerialize::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, expr_{nullptr}, type_name_{nullptr}, xmloption_{static_cast< ::pg_query::XmlOptionType >(0)}, indent_{false}, location_{0} {} template PROTOBUF_CONSTEXPR XmlSerialize::XmlSerialize(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct XmlSerializeDefaultTypeInternal { PROTOBUF_CONSTEXPR XmlSerializeDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~XmlSerializeDefaultTypeInternal() {} union { XmlSerialize _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 XmlSerializeDefaultTypeInternal _XmlSerialize_default_instance_; inline constexpr ParseResult::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : stmts_{}, version_{0}, _cached_size_{0} {} template PROTOBUF_CONSTEXPR ParseResult::ParseResult(::_pbi::ConstantInitialized) : _impl_(::_pbi::ConstantInitialized()) {} struct ParseResultDefaultTypeInternal { PROTOBUF_CONSTEXPR ParseResultDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} ~ParseResultDefaultTypeInternal() {} union { ParseResult _instance; }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ParseResultDefaultTypeInternal _ParseResult_default_instance_; } // namespace pg_query static ::_pb::Metadata file_level_metadata_protobuf_2fpg_5fquery_2eproto[272]; static const ::_pb::EnumDescriptor* file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[71]; static constexpr const ::_pb::ServiceDescriptor** file_level_service_descriptors_protobuf_2fpg_5fquery_2eproto = nullptr; const ::uint32_t 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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ParseResult, _impl_.version_), PROTOBUF_FIELD_OFFSET(::pg_query::ParseResult, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ScanResult, _impl_.version_), PROTOBUF_FIELD_OFFSET(::pg_query::ScanResult, _impl_.tokens_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Node, _internal_metadata_), ~0u, // no _extensions_ PROTOBUF_FIELD_OFFSET(::pg_query::Node, _impl_._oneof_case_[0]), ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, PROTOBUF_FIELD_OFFSET(::pg_query::Node, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::Integer, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::Float, _impl_.fval_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Boolean, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::Boolean, _impl_.boolval_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::String, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::String, _impl_.sval_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::BitString, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::BitString, _impl_.bsval_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::List, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::List, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::OidList, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::IntList, _impl_.items_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::A_Const, _internal_metadata_), ~0u, // no _extensions_ PROTOBUF_FIELD_OFFSET(::pg_query::A_Const, _impl_._oneof_case_[0]), ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, PROTOBUF_FIELD_OFFSET(::pg_query::A_Const, _impl_.isnull_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Const, _impl_.location_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Const, _impl_.val_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Alias, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::Alias, _impl_.aliasname_), PROTOBUF_FIELD_OFFSET(::pg_query::Alias, _impl_.colnames_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, _impl_.catalogname_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, _impl_.schemaname_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, _impl_.relname_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, _impl_.inh_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, _impl_.relpersistence_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, _impl_.alias_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, _impl_.location_), ~0u, ~0u, ~0u, ~0u, ~0u, 0, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.functype_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.ns_uris_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.ns_names_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.docexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.rowexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.colnames_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.coltypes_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.coltypmods_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.colcollations_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.colexprs_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.coldefexprs_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.colvalexprs_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.passingvalexprs_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.notnulls_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.plan_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.ordinalitycol_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _impl_.location_), ~0u, ~0u, ~0u, 0, 1, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, 2, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, _impl_.rel_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, _impl_.col_names_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, _impl_.access_method_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, _impl_.on_commit_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, _impl_.table_space_name_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, _impl_.view_query_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, _impl_.skip_data_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, 1, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::Var, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::Var, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, _impl_.varno_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, _impl_.varattno_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, _impl_.vartype_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, _impl_.vartypmod_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, _impl_.varcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, _impl_.varnullingrels_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, _impl_.varlevelsup_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::Param, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::Param, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::Param, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::Param, _impl_.paramkind_), PROTOBUF_FIELD_OFFSET(::pg_query::Param, _impl_.paramid_), PROTOBUF_FIELD_OFFSET(::pg_query::Param, _impl_.paramtype_), PROTOBUF_FIELD_OFFSET(::pg_query::Param, _impl_.paramtypmod_), PROTOBUF_FIELD_OFFSET(::pg_query::Param, _impl_.paramcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::Param, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.aggfnoid_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.aggtype_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.aggcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.aggargtypes_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.aggdirectargs_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.aggorder_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.aggdistinct_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.aggfilter_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.aggstar_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.aggvariadic_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.aggkind_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.agglevelsup_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.aggsplit_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.aggno_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.aggtransno_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, 1, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::GroupingFunc, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::GroupingFunc, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::GroupingFunc, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::GroupingFunc, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::GroupingFunc, _impl_.refs_), PROTOBUF_FIELD_OFFSET(::pg_query::GroupingFunc, _impl_.agglevelsup_), PROTOBUF_FIELD_OFFSET(::pg_query::GroupingFunc, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _impl_.winfnoid_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _impl_.wintype_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _impl_.wincollid_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _impl_.inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _impl_.aggfilter_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _impl_.run_condition_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _impl_.winref_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _impl_.winstar_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _impl_.winagg_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, 1, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::WindowFuncRunCondition, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFuncRunCondition, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::WindowFuncRunCondition, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFuncRunCondition, _impl_.opno_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFuncRunCondition, _impl_.inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFuncRunCondition, _impl_.wfunc_left_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFuncRunCondition, _impl_.arg_), 0, ~0u, ~0u, ~0u, 1, PROTOBUF_FIELD_OFFSET(::pg_query::MergeSupportFunc, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeSupportFunc, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::MergeSupportFunc, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeSupportFunc, _impl_.msftype_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeSupportFunc, _impl_.msfcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeSupportFunc, _impl_.location_), 0, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, _impl_.refcontainertype_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, _impl_.refelemtype_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, _impl_.refrestype_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, _impl_.reftypmod_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, _impl_.refcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, _impl_.refupperindexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, _impl_.reflowerindexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, _impl_.refexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, _impl_.refassgnexpr_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, 1, 2, PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, _impl_.funcid_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, _impl_.funcresulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, _impl_.funcretset_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, _impl_.funcvariadic_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, _impl_.funcformat_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, _impl_.funccollid_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, _impl_.inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::NamedArgExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::NamedArgExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::NamedArgExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::NamedArgExpr, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::NamedArgExpr, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::NamedArgExpr, _impl_.argnumber_), PROTOBUF_FIELD_OFFSET(::pg_query::NamedArgExpr, _impl_.location_), 0, 1, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, _impl_.opno_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, _impl_.opresulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, _impl_.opretset_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, _impl_.opcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, _impl_.inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, _impl_.opno_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, _impl_.opresulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, _impl_.opretset_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, _impl_.opcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, _impl_.inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, _impl_.opno_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, _impl_.opresulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, _impl_.opretset_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, _impl_.opcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, _impl_.inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, _impl_.opno_), PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, _impl_.use_or_), PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, _impl_.inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::BoolExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::BoolExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::BoolExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::BoolExpr, _impl_.boolop_), PROTOBUF_FIELD_OFFSET(::pg_query::BoolExpr, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::BoolExpr, _impl_.location_), 0, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, _impl_.sub_link_type_), PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, _impl_.sub_link_id_), PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, _impl_.testexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, _impl_.oper_name_), PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, _impl_.subselect_), PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, _impl_.location_), 0, ~0u, ~0u, 1, ~0u, 2, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.sub_link_type_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.testexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.param_ids_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.plan_id_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.plan_name_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.first_col_type_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.first_col_typmod_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.first_col_collation_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.use_hash_table_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.unknown_eq_false_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.parallel_safe_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.set_param_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.par_param_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.startup_cost_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _impl_.per_call_cost_), 0, ~0u, 1, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::AlternativeSubPlan, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlternativeSubPlan, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlternativeSubPlan, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::AlternativeSubPlan, _impl_.subplans_), 0, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, _impl_.fieldnum_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, _impl_.resulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, _impl_.resulttypmod_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, _impl_.resultcollid_), 0, 1, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::FieldStore, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldStore, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::FieldStore, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldStore, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldStore, _impl_.newvals_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldStore, _impl_.fieldnums_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldStore, _impl_.resulttype_), 0, 1, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, _impl_.resulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, _impl_.resulttypmod_), PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, _impl_.resultcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, _impl_.relabelformat_), PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, _impl_.location_), 0, 1, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, _impl_.resulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, _impl_.resultcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, _impl_.coerceformat_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, _impl_.location_), 0, 1, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, _impl_.elemexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, _impl_.resulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, _impl_.resulttypmod_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, _impl_.resultcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, _impl_.coerceformat_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, _impl_.location_), 0, 1, 2, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::ConvertRowtypeExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::ConvertRowtypeExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ConvertRowtypeExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::ConvertRowtypeExpr, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::ConvertRowtypeExpr, _impl_.resulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::ConvertRowtypeExpr, _impl_.convertformat_), PROTOBUF_FIELD_OFFSET(::pg_query::ConvertRowtypeExpr, _impl_.location_), 0, 1, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CollateExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CollateExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CollateExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CollateExpr, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::CollateExpr, _impl_.coll_oid_), PROTOBUF_FIELD_OFFSET(::pg_query::CollateExpr, _impl_.location_), 0, 1, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, _impl_.casetype_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, _impl_.casecollid_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, _impl_.defresult_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, _impl_.location_), 0, ~0u, ~0u, 1, ~0u, 2, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CaseWhen, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseWhen, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CaseWhen, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseWhen, _impl_.expr_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseWhen, _impl_.result_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseWhen, _impl_.location_), 0, 1, 2, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CaseTestExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseTestExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CaseTestExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseTestExpr, _impl_.type_id_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseTestExpr, _impl_.type_mod_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseTestExpr, _impl_.collation_), 0, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, _impl_.array_typeid_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, _impl_.array_collid_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, _impl_.element_typeid_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, _impl_.elements_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, _impl_.multidims_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, _impl_.row_typeid_), PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, _impl_.row_format_), PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, _impl_.colnames_), PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, _impl_.rctype_), PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, _impl_.opnos_), PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, _impl_.opfamilies_), PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, _impl_.inputcollids_), PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, _impl_.largs_), PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, _impl_.rargs_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CoalesceExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CoalesceExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CoalesceExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CoalesceExpr, _impl_.coalescetype_), PROTOBUF_FIELD_OFFSET(::pg_query::CoalesceExpr, _impl_.coalescecollid_), PROTOBUF_FIELD_OFFSET(::pg_query::CoalesceExpr, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::CoalesceExpr, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, _impl_.minmaxtype_), PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, _impl_.minmaxcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, _impl_.inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, _impl_.op_), PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::SQLValueFunction, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::SQLValueFunction, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::SQLValueFunction, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SQLValueFunction, _impl_.op_), PROTOBUF_FIELD_OFFSET(::pg_query::SQLValueFunction, _impl_.type_), PROTOBUF_FIELD_OFFSET(::pg_query::SQLValueFunction, _impl_.typmod_), PROTOBUF_FIELD_OFFSET(::pg_query::SQLValueFunction, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, _impl_.op_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, _impl_.named_args_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, _impl_.arg_names_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, _impl_.xmloption_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, _impl_.indent_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, _impl_.type_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, _impl_.typmod_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::JsonFormat, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonFormat, _impl_.format_type_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonFormat, _impl_.encoding_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonFormat, _impl_.location_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonReturning, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonReturning, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonReturning, _impl_.format_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonReturning, _impl_.typid_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonReturning, _impl_.typmod_), 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonValueExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonValueExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonValueExpr, _impl_.raw_expr_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonValueExpr, _impl_.formatted_expr_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonValueExpr, _impl_.format_), 0, 1, 2, PROTOBUF_FIELD_OFFSET(::pg_query::JsonConstructorExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonConstructorExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonConstructorExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonConstructorExpr, _impl_.type_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonConstructorExpr, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonConstructorExpr, _impl_.func_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonConstructorExpr, _impl_.coercion_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonConstructorExpr, _impl_.returning_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonConstructorExpr, _impl_.absent_on_null_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonConstructorExpr, _impl_.unique_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonConstructorExpr, _impl_.location_), 0, ~0u, ~0u, 1, 2, 3, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonIsPredicate, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonIsPredicate, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonIsPredicate, _impl_.expr_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonIsPredicate, _impl_.format_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonIsPredicate, _impl_.item_type_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonIsPredicate, _impl_.unique_keys_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonIsPredicate, _impl_.location_), 0, 1, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonBehavior, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonBehavior, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonBehavior, _impl_.btype_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonBehavior, _impl_.expr_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonBehavior, _impl_.coerce_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonBehavior, _impl_.location_), ~0u, 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.op_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.column_name_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.formatted_expr_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.format_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.path_spec_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.returning_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.passing_names_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.passing_values_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.on_empty_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.on_error_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.use_io_coercion_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.use_json_coercion_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.wrapper_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.omit_quotes_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.collation_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonExpr, _impl_.location_), 0, ~0u, ~0u, 1, 2, 3, 4, ~0u, ~0u, 5, 6, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePath, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePath, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePathScan, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePathScan, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePathScan, _impl_.plan_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePathScan, _impl_.path_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePathScan, _impl_.error_on_error_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePathScan, _impl_.child_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePathScan, _impl_.col_min_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePathScan, _impl_.col_max_), 0, 1, ~0u, 2, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableSiblingJoin, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableSiblingJoin, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableSiblingJoin, _impl_.plan_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableSiblingJoin, _impl_.lplan_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableSiblingJoin, _impl_.rplan_), 0, 1, 2, PROTOBUF_FIELD_OFFSET(::pg_query::NullTest, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::NullTest, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::NullTest, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::NullTest, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::NullTest, _impl_.nulltesttype_), PROTOBUF_FIELD_OFFSET(::pg_query::NullTest, _impl_.argisrow_), PROTOBUF_FIELD_OFFSET(::pg_query::NullTest, _impl_.location_), 0, 1, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::BooleanTest, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::BooleanTest, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::BooleanTest, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::BooleanTest, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::BooleanTest, _impl_.booltesttype_), PROTOBUF_FIELD_OFFSET(::pg_query::BooleanTest, _impl_.location_), 0, 1, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::MergeAction, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeAction, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::MergeAction, _impl_.match_kind_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeAction, _impl_.command_type_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeAction, _impl_.override_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeAction, _impl_.qual_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeAction, _impl_.target_list_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeAction, _impl_.update_colnos_), ~0u, ~0u, ~0u, 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, _impl_.resulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, _impl_.resulttypmod_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, _impl_.resultcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, _impl_.coercionformat_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, _impl_.location_), 0, 1, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomainValue, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomainValue, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomainValue, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomainValue, _impl_.type_id_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomainValue, _impl_.type_mod_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomainValue, _impl_.collation_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomainValue, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::SetToDefault, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::SetToDefault, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::SetToDefault, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SetToDefault, _impl_.type_id_), PROTOBUF_FIELD_OFFSET(::pg_query::SetToDefault, _impl_.type_mod_), PROTOBUF_FIELD_OFFSET(::pg_query::SetToDefault, _impl_.collation_), PROTOBUF_FIELD_OFFSET(::pg_query::SetToDefault, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CurrentOfExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CurrentOfExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CurrentOfExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CurrentOfExpr, _impl_.cvarno_), PROTOBUF_FIELD_OFFSET(::pg_query::CurrentOfExpr, _impl_.cursor_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CurrentOfExpr, _impl_.cursor_param_), 0, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::NextValueExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::NextValueExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::NextValueExpr, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::NextValueExpr, _impl_.seqid_), PROTOBUF_FIELD_OFFSET(::pg_query::NextValueExpr, _impl_.type_id_), 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::InferenceElem, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::InferenceElem, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::InferenceElem, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::InferenceElem, _impl_.expr_), PROTOBUF_FIELD_OFFSET(::pg_query::InferenceElem, _impl_.infercollid_), PROTOBUF_FIELD_OFFSET(::pg_query::InferenceElem, _impl_.inferopclass_), 0, 1, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, _impl_.xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, _impl_.expr_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, _impl_.resno_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, _impl_.resname_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, _impl_.ressortgroupref_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, _impl_.resorigtbl_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, _impl_.resorigcol_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, _impl_.resjunk_), 0, 1, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblRef, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblRef, _impl_.rtindex_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, _impl_.jointype_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, _impl_.is_natural_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, _impl_.larg_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, _impl_.rarg_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, _impl_.using_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, _impl_.join_using_alias_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, _impl_.quals_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, _impl_.alias_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, _impl_.rtindex_), ~0u, ~0u, 0, 1, ~0u, 2, 3, 4, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::FromExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::FromExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::FromExpr, _impl_.fromlist_), PROTOBUF_FIELD_OFFSET(::pg_query::FromExpr, _impl_.quals_), ~0u, 0, PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, _impl_.action_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, _impl_.arbiter_elems_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, _impl_.arbiter_where_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, _impl_.constraint_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, _impl_.on_conflict_set_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, _impl_.on_conflict_where_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, _impl_.excl_rel_index_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, _impl_.excl_rel_tlist_), ~0u, ~0u, 0, ~0u, ~0u, 1, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.command_type_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.query_source_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.can_set_tag_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.utility_stmt_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.result_relation_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.has_aggs_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.has_window_funcs_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.has_target_srfs_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.has_sub_links_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.has_distinct_on_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.has_recursive_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.has_modifying_cte_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.has_for_update_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.has_row_security_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.is_return_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.cte_list_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.rtable_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.rteperminfos_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.jointree_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.merge_action_list_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.merge_target_relation_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.merge_join_condition_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.target_list_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.override_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.on_conflict_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.returning_list_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.group_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.group_distinct_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.grouping_sets_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.having_qual_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.window_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.distinct_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.sort_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.limit_offset_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.limit_count_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.limit_option_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.row_marks_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.set_operations_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.constraint_deps_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.with_check_options_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.stmt_location_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, _impl_.stmt_len_), ~0u, ~0u, ~0u, 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, 1, ~0u, ~0u, 2, ~0u, ~0u, 3, ~0u, ~0u, ~0u, ~0u, 4, ~0u, ~0u, ~0u, 5, 6, ~0u, ~0u, 7, ~0u, ~0u, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, _impl_.names_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, _impl_.type_oid_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, _impl_.setof_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, _impl_.pct_type_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, _impl_.typmods_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, _impl_.typemod_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, _impl_.array_bounds_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ColumnRef, _impl_.fields_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnRef, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ParamRef, _impl_.number_), PROTOBUF_FIELD_OFFSET(::pg_query::ParamRef, _impl_.location_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Expr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Expr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::A_Expr, _impl_.kind_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Expr, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Expr, _impl_.lexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Expr, _impl_.rexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Expr, _impl_.location_), ~0u, ~0u, 0, 1, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::TypeCast, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeCast, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::TypeCast, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeCast, _impl_.type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeCast, _impl_.location_), 0, 1, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CollateClause, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CollateClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CollateClause, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::CollateClause, _impl_.collname_), PROTOBUF_FIELD_OFFSET(::pg_query::CollateClause, _impl_.location_), 0, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RoleSpec, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RoleSpec, _impl_.roletype_), PROTOBUF_FIELD_OFFSET(::pg_query::RoleSpec, _impl_.rolename_), PROTOBUF_FIELD_OFFSET(::pg_query::RoleSpec, _impl_.location_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, _impl_.funcname_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, _impl_.agg_order_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, _impl_.agg_filter_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, _impl_.over_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, _impl_.agg_within_group_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, _impl_.agg_star_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, _impl_.agg_distinct_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, _impl_.func_variadic_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, _impl_.funcformat_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, _impl_.location_), ~0u, ~0u, ~0u, 0, 1, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~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 _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::A_Indices, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Indices, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::A_Indices, _impl_.is_slice_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Indices, _impl_.lidx_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Indices, _impl_.uidx_), ~0u, 0, 1, PROTOBUF_FIELD_OFFSET(::pg_query::A_Indirection, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Indirection, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::A_Indirection, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Indirection, _impl_.indirection_), 0, ~0u, ~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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::A_ArrayExpr, _impl_.elements_), PROTOBUF_FIELD_OFFSET(::pg_query::A_ArrayExpr, _impl_.location_), PROTOBUF_FIELD_OFFSET(::pg_query::ResTarget, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::ResTarget, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ResTarget, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::ResTarget, _impl_.indirection_), PROTOBUF_FIELD_OFFSET(::pg_query::ResTarget, _impl_.val_), PROTOBUF_FIELD_OFFSET(::pg_query::ResTarget, _impl_.location_), ~0u, ~0u, 0, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::MultiAssignRef, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::MultiAssignRef, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::MultiAssignRef, _impl_.source_), PROTOBUF_FIELD_OFFSET(::pg_query::MultiAssignRef, _impl_.colno_), PROTOBUF_FIELD_OFFSET(::pg_query::MultiAssignRef, _impl_.ncolumns_), 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::SortBy, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::SortBy, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::SortBy, _impl_.node_), PROTOBUF_FIELD_OFFSET(::pg_query::SortBy, _impl_.sortby_dir_), PROTOBUF_FIELD_OFFSET(::pg_query::SortBy, _impl_.sortby_nulls_), PROTOBUF_FIELD_OFFSET(::pg_query::SortBy, _impl_.use_op_), PROTOBUF_FIELD_OFFSET(::pg_query::SortBy, _impl_.location_), 0, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, _impl_.refname_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, _impl_.partition_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, _impl_.order_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, _impl_.frame_options_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, _impl_.start_offset_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, _impl_.end_offset_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, _impl_.location_), ~0u, ~0u, ~0u, ~0u, ~0u, 0, 1, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::RangeSubselect, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeSubselect, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RangeSubselect, _impl_.lateral_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeSubselect, _impl_.subquery_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeSubselect, _impl_.alias_), ~0u, 0, 1, PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, _impl_.lateral_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, _impl_.ordinality_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, _impl_.is_rowsfrom_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, _impl_.functions_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, _impl_.alias_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, _impl_.coldeflist_), ~0u, ~0u, ~0u, ~0u, 0, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, _impl_.lateral_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, _impl_.docexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, _impl_.rowexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, _impl_.namespaces_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, _impl_.columns_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, _impl_.alias_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, _impl_.location_), ~0u, 0, 1, ~0u, ~0u, 2, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, _impl_.colname_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, _impl_.type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, _impl_.for_ordinality_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, _impl_.is_not_null_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, _impl_.colexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, _impl_.coldefexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, _impl_.location_), ~0u, 0, ~0u, ~0u, 1, 2, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableSample, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableSample, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableSample, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableSample, _impl_.method_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableSample, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableSample, _impl_.repeatable_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableSample, _impl_.location_), 0, ~0u, ~0u, 1, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.colname_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.compression_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.inhcount_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.is_local_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.is_not_null_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.is_from_type_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.storage_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.storage_name_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.raw_default_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.cooked_default_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.identity_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.identity_sequence_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.generated_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.coll_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.coll_oid_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.constraints_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.fdwoptions_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _impl_.location_), ~0u, 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, 1, 2, ~0u, 3, ~0u, 4, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::TableLikeClause, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::TableLikeClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::TableLikeClause, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::TableLikeClause, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::TableLikeClause, _impl_.relation_oid_), 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, _impl_.expr_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, _impl_.indexcolname_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, _impl_.collation_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, _impl_.opclass_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, _impl_.opclassopts_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, _impl_.ordering_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, _impl_.nulls_ordering_), ~0u, 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::DefElem, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::DefElem, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DefElem, _impl_.defnamespace_), PROTOBUF_FIELD_OFFSET(::pg_query::DefElem, _impl_.defname_), PROTOBUF_FIELD_OFFSET(::pg_query::DefElem, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::DefElem, _impl_.defaction_), PROTOBUF_FIELD_OFFSET(::pg_query::DefElem, _impl_.location_), ~0u, ~0u, 0, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::LockingClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::LockingClause, _impl_.locked_rels_), PROTOBUF_FIELD_OFFSET(::pg_query::LockingClause, _impl_.strength_), PROTOBUF_FIELD_OFFSET(::pg_query::LockingClause, _impl_.wait_policy_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlSerialize, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlSerialize, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::XmlSerialize, _impl_.xmloption_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlSerialize, _impl_.expr_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlSerialize, _impl_.type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlSerialize, _impl_.indent_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlSerialize, _impl_.location_), ~0u, 0, 1, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::PartitionElem, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionElem, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::PartitionElem, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionElem, _impl_.expr_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionElem, _impl_.collation_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionElem, _impl_.opclass_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionElem, _impl_.location_), ~0u, 0, ~0u, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::PartitionSpec, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::PartitionSpec, _impl_.strategy_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionSpec, _impl_.part_params_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionSpec, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, _impl_.strategy_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, _impl_.is_default_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, _impl_.modulus_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, _impl_.remainder_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, _impl_.listdatums_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, _impl_.lowerdatums_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, _impl_.upperdatums_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, _impl_.location_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionRangeDatum, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionRangeDatum, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::PartitionRangeDatum, _impl_.kind_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionRangeDatum, _impl_.value_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionRangeDatum, _impl_.location_), ~0u, 0, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::SinglePartitionSpec, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::PartitionCmd, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionCmd, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::PartitionCmd, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionCmd, _impl_.bound_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionCmd, _impl_.concurrent_), 0, 1, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.alias_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.eref_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.rtekind_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.relid_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.inh_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.relkind_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.rellockmode_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.perminfoindex_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.tablesample_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.subquery_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.security_barrier_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.jointype_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.joinmergedcols_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.joinaliasvars_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.joinleftcols_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.joinrightcols_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.join_using_alias_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.functions_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.funcordinality_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.tablefunc_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.values_lists_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.ctename_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.ctelevelsup_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.self_reference_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.coltypes_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.coltypmods_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.colcollations_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.enrname_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.enrtuples_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.lateral_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.in_from_cl_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _impl_.security_quals_), 0, 1, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, 2, 3, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, 4, ~0u, ~0u, 5, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RTEPermissionInfo, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RTEPermissionInfo, _impl_.relid_), PROTOBUF_FIELD_OFFSET(::pg_query::RTEPermissionInfo, _impl_.inh_), PROTOBUF_FIELD_OFFSET(::pg_query::RTEPermissionInfo, _impl_.required_perms_), PROTOBUF_FIELD_OFFSET(::pg_query::RTEPermissionInfo, _impl_.check_as_user_), PROTOBUF_FIELD_OFFSET(::pg_query::RTEPermissionInfo, _impl_.selected_cols_), PROTOBUF_FIELD_OFFSET(::pg_query::RTEPermissionInfo, _impl_.inserted_cols_), PROTOBUF_FIELD_OFFSET(::pg_query::RTEPermissionInfo, _impl_.updated_cols_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, _impl_.funcexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, _impl_.funccolcount_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, _impl_.funccolnames_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, _impl_.funccoltypes_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, _impl_.funccoltypmods_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, _impl_.funccolcollations_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, _impl_.funcparams_), 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::TableSampleClause, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::TableSampleClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::TableSampleClause, _impl_.tsmhandler_), PROTOBUF_FIELD_OFFSET(::pg_query::TableSampleClause, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::TableSampleClause, _impl_.repeatable_), ~0u, ~0u, 0, PROTOBUF_FIELD_OFFSET(::pg_query::WithCheckOption, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::WithCheckOption, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::WithCheckOption, _impl_.kind_), PROTOBUF_FIELD_OFFSET(::pg_query::WithCheckOption, _impl_.relname_), PROTOBUF_FIELD_OFFSET(::pg_query::WithCheckOption, _impl_.polname_), PROTOBUF_FIELD_OFFSET(::pg_query::WithCheckOption, _impl_.qual_), PROTOBUF_FIELD_OFFSET(::pg_query::WithCheckOption, _impl_.cascaded_), ~0u, ~0u, ~0u, 0, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::SortGroupClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::SortGroupClause, _impl_.tle_sort_group_ref_), PROTOBUF_FIELD_OFFSET(::pg_query::SortGroupClause, _impl_.eqop_), PROTOBUF_FIELD_OFFSET(::pg_query::SortGroupClause, _impl_.sortop_), PROTOBUF_FIELD_OFFSET(::pg_query::SortGroupClause, _impl_.nulls_first_), PROTOBUF_FIELD_OFFSET(::pg_query::SortGroupClause, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::GroupingSet, _impl_.kind_), PROTOBUF_FIELD_OFFSET(::pg_query::GroupingSet, _impl_.content_), PROTOBUF_FIELD_OFFSET(::pg_query::GroupingSet, _impl_.location_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_.refname_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_.partition_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_.order_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_.frame_options_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_.start_offset_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_.end_offset_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_.start_in_range_func_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_.end_in_range_func_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_.in_range_coll_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_.in_range_asc_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_.in_range_nulls_first_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_.winref_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _impl_.copied_order_), ~0u, ~0u, ~0u, ~0u, ~0u, 0, 1, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RowMarkClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RowMarkClause, _impl_.rti_), PROTOBUF_FIELD_OFFSET(::pg_query::RowMarkClause, _impl_.strength_), PROTOBUF_FIELD_OFFSET(::pg_query::RowMarkClause, _impl_.wait_policy_), PROTOBUF_FIELD_OFFSET(::pg_query::RowMarkClause, _impl_.pushed_down_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::WithClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::WithClause, _impl_.ctes_), PROTOBUF_FIELD_OFFSET(::pg_query::WithClause, _impl_.recursive_), PROTOBUF_FIELD_OFFSET(::pg_query::WithClause, _impl_.location_), PROTOBUF_FIELD_OFFSET(::pg_query::InferClause, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::InferClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::InferClause, _impl_.index_elems_), PROTOBUF_FIELD_OFFSET(::pg_query::InferClause, _impl_.where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::InferClause, _impl_.conname_), PROTOBUF_FIELD_OFFSET(::pg_query::InferClause, _impl_.location_), ~0u, 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictClause, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictClause, _impl_.action_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictClause, _impl_.infer_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictClause, _impl_.target_list_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictClause, _impl_.where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictClause, _impl_.location_), ~0u, 0, ~0u, 1, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CTESearchClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CTESearchClause, _impl_.search_col_list_), PROTOBUF_FIELD_OFFSET(::pg_query::CTESearchClause, _impl_.search_breadth_first_), PROTOBUF_FIELD_OFFSET(::pg_query::CTESearchClause, _impl_.search_seq_column_), PROTOBUF_FIELD_OFFSET(::pg_query::CTESearchClause, _impl_.location_), PROTOBUF_FIELD_OFFSET(::pg_query::CTECycleClause, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CTECycleClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CTECycleClause, _impl_.cycle_col_list_), PROTOBUF_FIELD_OFFSET(::pg_query::CTECycleClause, _impl_.cycle_mark_column_), PROTOBUF_FIELD_OFFSET(::pg_query::CTECycleClause, _impl_.cycle_mark_value_), PROTOBUF_FIELD_OFFSET(::pg_query::CTECycleClause, _impl_.cycle_mark_default_), PROTOBUF_FIELD_OFFSET(::pg_query::CTECycleClause, _impl_.cycle_path_column_), PROTOBUF_FIELD_OFFSET(::pg_query::CTECycleClause, _impl_.location_), PROTOBUF_FIELD_OFFSET(::pg_query::CTECycleClause, _impl_.cycle_mark_type_), PROTOBUF_FIELD_OFFSET(::pg_query::CTECycleClause, _impl_.cycle_mark_typmod_), PROTOBUF_FIELD_OFFSET(::pg_query::CTECycleClause, _impl_.cycle_mark_collation_), PROTOBUF_FIELD_OFFSET(::pg_query::CTECycleClause, _impl_.cycle_mark_neop_), ~0u, ~0u, 0, 1, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _impl_.ctename_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _impl_.aliascolnames_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _impl_.ctematerialized_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _impl_.ctequery_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _impl_.search_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _impl_.cycle_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _impl_.location_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _impl_.cterecursive_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _impl_.cterefcount_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _impl_.ctecolnames_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _impl_.ctecoltypes_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _impl_.ctecoltypmods_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _impl_.ctecolcollations_), ~0u, ~0u, ~0u, 0, 1, 2, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::MergeWhenClause, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeWhenClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::MergeWhenClause, _impl_.match_kind_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeWhenClause, _impl_.command_type_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeWhenClause, _impl_.override_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeWhenClause, _impl_.condition_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeWhenClause, _impl_.target_list_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeWhenClause, _impl_.values_), ~0u, ~0u, ~0u, 0, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::TriggerTransition, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::TriggerTransition, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::TriggerTransition, _impl_.is_new_), PROTOBUF_FIELD_OFFSET(::pg_query::TriggerTransition, _impl_.is_table_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonOutput, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonOutput, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonOutput, _impl_.type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonOutput, _impl_.returning_), 0, 1, PROTOBUF_FIELD_OFFSET(::pg_query::JsonArgument, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonArgument, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonArgument, _impl_.val_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonArgument, _impl_.name_), 0, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonFuncExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonFuncExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonFuncExpr, _impl_.op_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonFuncExpr, _impl_.column_name_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonFuncExpr, _impl_.context_item_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonFuncExpr, _impl_.pathspec_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonFuncExpr, _impl_.passing_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonFuncExpr, _impl_.output_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonFuncExpr, _impl_.on_empty_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonFuncExpr, _impl_.on_error_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonFuncExpr, _impl_.wrapper_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonFuncExpr, _impl_.quotes_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonFuncExpr, _impl_.location_), ~0u, ~0u, 0, 1, ~0u, 2, 3, 4, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePathSpec, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePathSpec, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePathSpec, _impl_.string_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePathSpec, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePathSpec, _impl_.name_location_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTablePathSpec, _impl_.location_), 0, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonTable, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTable, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonTable, _impl_.context_item_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTable, _impl_.pathspec_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTable, _impl_.passing_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTable, _impl_.columns_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTable, _impl_.on_error_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTable, _impl_.alias_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTable, _impl_.lateral_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTable, _impl_.location_), 0, 1, ~0u, ~0u, 2, 3, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableColumn, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableColumn, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableColumn, _impl_.coltype_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableColumn, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableColumn, _impl_.type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableColumn, _impl_.pathspec_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableColumn, _impl_.format_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableColumn, _impl_.wrapper_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableColumn, _impl_.quotes_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableColumn, _impl_.columns_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableColumn, _impl_.on_empty_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableColumn, _impl_.on_error_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonTableColumn, _impl_.location_), ~0u, ~0u, 0, 1, 2, ~0u, ~0u, ~0u, 3, 4, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonKeyValue, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonKeyValue, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonKeyValue, _impl_.key_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonKeyValue, _impl_.value_), 0, 1, PROTOBUF_FIELD_OFFSET(::pg_query::JsonParseExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonParseExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonParseExpr, _impl_.expr_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonParseExpr, _impl_.output_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonParseExpr, _impl_.unique_keys_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonParseExpr, _impl_.location_), 0, 1, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonScalarExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonScalarExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonScalarExpr, _impl_.expr_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonScalarExpr, _impl_.output_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonScalarExpr, _impl_.location_), 0, 1, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonSerializeExpr, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonSerializeExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonSerializeExpr, _impl_.expr_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonSerializeExpr, _impl_.output_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonSerializeExpr, _impl_.location_), 0, 1, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonObjectConstructor, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonObjectConstructor, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonObjectConstructor, _impl_.exprs_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonObjectConstructor, _impl_.output_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonObjectConstructor, _impl_.absent_on_null_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonObjectConstructor, _impl_.unique_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonObjectConstructor, _impl_.location_), ~0u, 0, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayConstructor, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayConstructor, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayConstructor, _impl_.exprs_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayConstructor, _impl_.output_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayConstructor, _impl_.absent_on_null_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayConstructor, _impl_.location_), ~0u, 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayQueryConstructor, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayQueryConstructor, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayQueryConstructor, _impl_.query_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayQueryConstructor, _impl_.output_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayQueryConstructor, _impl_.format_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayQueryConstructor, _impl_.absent_on_null_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayQueryConstructor, _impl_.location_), 0, 1, 2, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonAggConstructor, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonAggConstructor, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonAggConstructor, _impl_.output_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonAggConstructor, _impl_.agg_filter_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonAggConstructor, _impl_.agg_order_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonAggConstructor, _impl_.over_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonAggConstructor, _impl_.location_), 0, 1, ~0u, 2, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonObjectAgg, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonObjectAgg, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonObjectAgg, _impl_.constructor_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonObjectAgg, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonObjectAgg, _impl_.absent_on_null_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonObjectAgg, _impl_.unique_), 0, 1, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayAgg, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayAgg, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayAgg, _impl_.constructor_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayAgg, _impl_.arg_), PROTOBUF_FIELD_OFFSET(::pg_query::JsonArrayAgg, _impl_.absent_on_null_), 0, 1, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::RawStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RawStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RawStmt, _impl_.stmt_), PROTOBUF_FIELD_OFFSET(::pg_query::RawStmt, _impl_.stmt_location_), PROTOBUF_FIELD_OFFSET(::pg_query::RawStmt, _impl_.stmt_len_), 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, _impl_.cols_), PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, _impl_.select_stmt_), PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, _impl_.on_conflict_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, _impl_.returning_list_), PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, _impl_.with_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, _impl_.override_), 0, ~0u, 1, 2, ~0u, 3, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::DeleteStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::DeleteStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DeleteStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::DeleteStmt, _impl_.using_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::DeleteStmt, _impl_.where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::DeleteStmt, _impl_.returning_list_), PROTOBUF_FIELD_OFFSET(::pg_query::DeleteStmt, _impl_.with_clause_), 0, ~0u, 1, ~0u, 2, PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, _impl_.target_list_), PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, _impl_.where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, _impl_.from_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, _impl_.returning_list_), PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, _impl_.with_clause_), 0, ~0u, 1, ~0u, ~0u, 2, PROTOBUF_FIELD_OFFSET(::pg_query::MergeStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::MergeStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeStmt, _impl_.source_relation_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeStmt, _impl_.join_condition_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeStmt, _impl_.merge_when_clauses_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeStmt, _impl_.returning_list_), PROTOBUF_FIELD_OFFSET(::pg_query::MergeStmt, _impl_.with_clause_), 0, 1, 2, ~0u, ~0u, 3, PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.distinct_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.into_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.target_list_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.from_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.group_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.group_distinct_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.having_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.window_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.values_lists_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.sort_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.limit_offset_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.limit_count_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.limit_option_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.locking_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.with_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.op_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.all_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.larg_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _impl_.rarg_), ~0u, 0, ~0u, ~0u, 1, ~0u, ~0u, 2, ~0u, ~0u, ~0u, 3, 4, ~0u, ~0u, 5, ~0u, ~0u, 6, 7, PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, _impl_.op_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, _impl_.all_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, _impl_.larg_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, _impl_.rarg_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, _impl_.col_types_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, _impl_.col_typmods_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, _impl_.col_collations_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, _impl_.group_clauses_), ~0u, ~0u, 0, 1, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::ReturnStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::ReturnStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ReturnStmt, _impl_.returnval_), 0, PROTOBUF_FIELD_OFFSET(::pg_query::PLAssignStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::PLAssignStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::PLAssignStmt, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::PLAssignStmt, _impl_.indirection_), PROTOBUF_FIELD_OFFSET(::pg_query::PLAssignStmt, _impl_.nnames_), PROTOBUF_FIELD_OFFSET(::pg_query::PLAssignStmt, _impl_.val_), PROTOBUF_FIELD_OFFSET(::pg_query::PLAssignStmt, _impl_.location_), ~0u, ~0u, ~0u, 0, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CreateSchemaStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSchemaStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateSchemaStmt, _impl_.schemaname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSchemaStmt, _impl_.authrole_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSchemaStmt, _impl_.schema_elts_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSchemaStmt, _impl_.if_not_exists_), ~0u, 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableStmt, _impl_.cmds_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableStmt, _impl_.objtype_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableStmt, _impl_.missing_ok_), 0, ~0u, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ReplicaIdentityStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ReplicaIdentityStmt, _impl_.identity_type_), PROTOBUF_FIELD_OFFSET(::pg_query::ReplicaIdentityStmt, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, _impl_.subtype_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, _impl_.num_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, _impl_.newowner_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, _impl_.def_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, _impl_.behavior_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, _impl_.missing_ok_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, _impl_.recurse_), ~0u, ~0u, ~0u, 0, 1, ~0u, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterCollationStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterCollationStmt, _impl_.collname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, _impl_.subtype_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, _impl_.type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, _impl_.def_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, _impl_.behavior_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, _impl_.missing_ok_), ~0u, ~0u, ~0u, 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, _impl_.is_grant_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, _impl_.targtype_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, _impl_.objtype_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, _impl_.objects_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, _impl_.privileges_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, _impl_.grantees_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, _impl_.grant_option_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, _impl_.grantor_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, _impl_.behavior_), ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, 0, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ObjectWithArgs, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ObjectWithArgs, _impl_.objname_), PROTOBUF_FIELD_OFFSET(::pg_query::ObjectWithArgs, _impl_.objargs_), PROTOBUF_FIELD_OFFSET(::pg_query::ObjectWithArgs, _impl_.objfuncargs_), PROTOBUF_FIELD_OFFSET(::pg_query::ObjectWithArgs, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AccessPriv, _impl_.priv_name_), PROTOBUF_FIELD_OFFSET(::pg_query::AccessPriv, _impl_.cols_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, _impl_.granted_roles_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, _impl_.grantee_roles_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, _impl_.is_grant_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, _impl_.opt_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, _impl_.grantor_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, _impl_.behavior_), ~0u, ~0u, ~0u, ~0u, 0, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::AlterDefaultPrivilegesStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDefaultPrivilegesStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterDefaultPrivilegesStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDefaultPrivilegesStmt, _impl_.action_), ~0u, 0, PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, _impl_.query_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, _impl_.attlist_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, _impl_.is_from_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, _impl_.is_program_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, _impl_.filename_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, _impl_.where_clause_), 0, 1, ~0u, ~0u, ~0u, ~0u, ~0u, 2, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::VariableSetStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::VariableSetStmt, _impl_.kind_), PROTOBUF_FIELD_OFFSET(::pg_query::VariableSetStmt, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::VariableSetStmt, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::VariableSetStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::VariableShowStmt, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _impl_.table_elts_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _impl_.inh_relations_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _impl_.partbound_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _impl_.partspec_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _impl_.of_typename_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _impl_.constraints_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _impl_.oncommit_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _impl_.tablespacename_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _impl_.access_method_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _impl_.if_not_exists_), 0, ~0u, ~0u, 1, 2, 3, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.contype_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.conname_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.deferrable_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.initdeferred_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.skip_validation_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.initially_valid_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.is_no_inherit_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.raw_expr_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.cooked_expr_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.generated_when_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.inhcount_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.nulls_not_distinct_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.keys_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.including_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.exclusions_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.indexname_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.indexspace_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.reset_default_tblspc_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.access_method_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.pktable_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.fk_attrs_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.pk_attrs_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.fk_matchtype_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.fk_upd_action_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.fk_del_action_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.fk_del_set_cols_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.old_conpfeqop_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.old_pktable_oid_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _impl_.location_), ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, 1, 2, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableSpaceStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableSpaceStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableSpaceStmt, _impl_.tablespacename_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableSpaceStmt, _impl_.owner_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableSpaceStmt, _impl_.location_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableSpaceStmt, _impl_.options_), ~0u, 0, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DropTableSpaceStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DropTableSpaceStmt, _impl_.tablespacename_), PROTOBUF_FIELD_OFFSET(::pg_query::DropTableSpaceStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableSpaceOptionsStmt, _impl_.tablespacename_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableSpaceOptionsStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableSpaceOptionsStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableMoveAllStmt, _impl_.orig_tablespacename_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableMoveAllStmt, _impl_.objtype_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableMoveAllStmt, _impl_.roles_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableMoveAllStmt, _impl_.new_tablespacename_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableMoveAllStmt, _impl_.nowait_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateExtensionStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateExtensionStmt, _impl_.extname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateExtensionStmt, _impl_.if_not_exists_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateExtensionStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionStmt, _impl_.extname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionContentsStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionContentsStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionContentsStmt, _impl_.extname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionContentsStmt, _impl_.action_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionContentsStmt, _impl_.objtype_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionContentsStmt, _impl_.object_), ~0u, ~0u, ~0u, 0, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateFdwStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateFdwStmt, _impl_.fdwname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFdwStmt, _impl_.func_options_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFdwStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterFdwStmt, _impl_.fdwname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterFdwStmt, _impl_.func_options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterFdwStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignServerStmt, _impl_.servername_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignServerStmt, _impl_.servertype_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignServerStmt, _impl_.version_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignServerStmt, _impl_.fdwname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignServerStmt, _impl_.if_not_exists_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignServerStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterForeignServerStmt, _impl_.servername_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterForeignServerStmt, _impl_.version_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterForeignServerStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterForeignServerStmt, _impl_.has_version_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignTableStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignTableStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignTableStmt, _impl_.base_stmt_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignTableStmt, _impl_.servername_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignTableStmt, _impl_.options_), 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CreateUserMappingStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateUserMappingStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateUserMappingStmt, _impl_.user_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateUserMappingStmt, _impl_.servername_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateUserMappingStmt, _impl_.if_not_exists_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateUserMappingStmt, _impl_.options_), 0, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::AlterUserMappingStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterUserMappingStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterUserMappingStmt, _impl_.user_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterUserMappingStmt, _impl_.servername_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterUserMappingStmt, _impl_.options_), 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::DropUserMappingStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::DropUserMappingStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DropUserMappingStmt, _impl_.user_), PROTOBUF_FIELD_OFFSET(::pg_query::DropUserMappingStmt, _impl_.servername_), PROTOBUF_FIELD_OFFSET(::pg_query::DropUserMappingStmt, _impl_.missing_ok_), 0, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ImportForeignSchemaStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ImportForeignSchemaStmt, _impl_.server_name_), PROTOBUF_FIELD_OFFSET(::pg_query::ImportForeignSchemaStmt, _impl_.remote_schema_), PROTOBUF_FIELD_OFFSET(::pg_query::ImportForeignSchemaStmt, _impl_.local_schema_), PROTOBUF_FIELD_OFFSET(::pg_query::ImportForeignSchemaStmt, _impl_.list_type_), PROTOBUF_FIELD_OFFSET(::pg_query::ImportForeignSchemaStmt, _impl_.table_list_), PROTOBUF_FIELD_OFFSET(::pg_query::ImportForeignSchemaStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, _impl_.policy_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, _impl_.table_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, _impl_.cmd_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, _impl_.permissive_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, _impl_.roles_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, _impl_.qual_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, _impl_.with_check_), ~0u, 0, ~0u, ~0u, ~0u, 1, 2, PROTOBUF_FIELD_OFFSET(::pg_query::AlterPolicyStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPolicyStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterPolicyStmt, _impl_.policy_name_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPolicyStmt, _impl_.table_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPolicyStmt, _impl_.roles_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPolicyStmt, _impl_.qual_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPolicyStmt, _impl_.with_check_), ~0u, 0, ~0u, 1, 2, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateAmStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateAmStmt, _impl_.amname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateAmStmt, _impl_.handler_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateAmStmt, _impl_.amtype_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.replace_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.isconstraint_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.trigname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.funcname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.row_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.timing_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.events_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.columns_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.when_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.transition_rels_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.deferrable_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.initdeferred_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _impl_.constrrel_), ~0u, ~0u, ~0u, 0, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, 1, ~0u, ~0u, ~0u, 2, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateEventTrigStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateEventTrigStmt, _impl_.trigname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateEventTrigStmt, _impl_.eventname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateEventTrigStmt, _impl_.whenclause_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateEventTrigStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterEventTrigStmt, _impl_.trigname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterEventTrigStmt, _impl_.tgenabled_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreatePLangStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreatePLangStmt, _impl_.replace_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePLangStmt, _impl_.plname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePLangStmt, _impl_.plhandler_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePLangStmt, _impl_.plinline_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePLangStmt, _impl_.plvalidator_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePLangStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateRoleStmt, _impl_.stmt_type_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateRoleStmt, _impl_.role_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateRoleStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleStmt, _impl_.role_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleStmt, _impl_.action_), 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleSetStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleSetStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleSetStmt, _impl_.role_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleSetStmt, _impl_.database_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleSetStmt, _impl_.setstmt_), 0, ~0u, 1, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DropRoleStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DropRoleStmt, _impl_.roles_), PROTOBUF_FIELD_OFFSET(::pg_query::DropRoleStmt, _impl_.missing_ok_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSeqStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSeqStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateSeqStmt, _impl_.sequence_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSeqStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSeqStmt, _impl_.owner_id_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSeqStmt, _impl_.for_identity_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSeqStmt, _impl_.if_not_exists_), 0, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::AlterSeqStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSeqStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterSeqStmt, _impl_.sequence_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSeqStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSeqStmt, _impl_.for_identity_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSeqStmt, _impl_.missing_ok_), 0, ~0u, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, _impl_.kind_), PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, _impl_.oldstyle_), PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, _impl_.defnames_), PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, _impl_.args_), PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, _impl_.definition_), PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, _impl_.if_not_exists_), PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, _impl_.replace_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateDomainStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateDomainStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateDomainStmt, _impl_.domainname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateDomainStmt, _impl_.type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateDomainStmt, _impl_.coll_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateDomainStmt, _impl_.constraints_), ~0u, 0, 1, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, _impl_.opclassname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, _impl_.opfamilyname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, _impl_.amname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, _impl_.datatype_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, _impl_.items_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, _impl_.is_default_), ~0u, ~0u, ~0u, 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, _impl_.itemtype_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, _impl_.number_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, _impl_.order_family_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, _impl_.class_args_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, _impl_.storedtype_), ~0u, 0, ~0u, ~0u, ~0u, 1, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpFamilyStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpFamilyStmt, _impl_.opfamilyname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpFamilyStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterOpFamilyStmt, _impl_.opfamilyname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOpFamilyStmt, _impl_.amname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOpFamilyStmt, _impl_.is_drop_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOpFamilyStmt, _impl_.items_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DropStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DropStmt, _impl_.objects_), PROTOBUF_FIELD_OFFSET(::pg_query::DropStmt, _impl_.remove_type_), PROTOBUF_FIELD_OFFSET(::pg_query::DropStmt, _impl_.behavior_), PROTOBUF_FIELD_OFFSET(::pg_query::DropStmt, _impl_.missing_ok_), PROTOBUF_FIELD_OFFSET(::pg_query::DropStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::TruncateStmt, _impl_.relations_), PROTOBUF_FIELD_OFFSET(::pg_query::TruncateStmt, _impl_.restart_seqs_), PROTOBUF_FIELD_OFFSET(::pg_query::TruncateStmt, _impl_.behavior_), PROTOBUF_FIELD_OFFSET(::pg_query::CommentStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CommentStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CommentStmt, _impl_.objtype_), PROTOBUF_FIELD_OFFSET(::pg_query::CommentStmt, _impl_.object_), PROTOBUF_FIELD_OFFSET(::pg_query::CommentStmt, _impl_.comment_), ~0u, 0, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::SecLabelStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::SecLabelStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::SecLabelStmt, _impl_.objtype_), PROTOBUF_FIELD_OFFSET(::pg_query::SecLabelStmt, _impl_.object_), PROTOBUF_FIELD_OFFSET(::pg_query::SecLabelStmt, _impl_.provider_), PROTOBUF_FIELD_OFFSET(::pg_query::SecLabelStmt, _impl_.label_), ~0u, 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::DeclareCursorStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::DeclareCursorStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DeclareCursorStmt, _impl_.portalname_), PROTOBUF_FIELD_OFFSET(::pg_query::DeclareCursorStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::DeclareCursorStmt, _impl_.query_), ~0u, ~0u, 0, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ClosePortalStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ClosePortalStmt, _impl_.portalname_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::FetchStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::FetchStmt, _impl_.direction_), PROTOBUF_FIELD_OFFSET(::pg_query::FetchStmt, _impl_.how_many_), PROTOBUF_FIELD_OFFSET(::pg_query::FetchStmt, _impl_.portalname_), PROTOBUF_FIELD_OFFSET(::pg_query::FetchStmt, _impl_.ismove_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.idxname_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.access_method_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.table_space_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.index_params_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.index_including_params_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.exclude_op_names_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.idxcomment_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.index_oid_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.old_number_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.old_create_subid_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.old_first_relfilelocator_subid_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.unique_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.nulls_not_distinct_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.primary_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.isconstraint_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.deferrable_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.initdeferred_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.transformed_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.concurrent_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.if_not_exists_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _impl_.reset_default_tblspc_), ~0u, 0, ~0u, ~0u, ~0u, ~0u, ~0u, 1, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, _impl_.defnames_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, _impl_.stat_types_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, _impl_.exprs_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, _impl_.relations_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, _impl_.stxcomment_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, _impl_.transformed_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, _impl_.if_not_exists_), PROTOBUF_FIELD_OFFSET(::pg_query::StatsElem, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::StatsElem, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::StatsElem, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::StatsElem, _impl_.expr_), ~0u, 0, PROTOBUF_FIELD_OFFSET(::pg_query::AlterStatsStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterStatsStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterStatsStmt, _impl_.defnames_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterStatsStmt, _impl_.stxstattarget_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterStatsStmt, _impl_.missing_ok_), ~0u, 0, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, _impl_.is_procedure_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, _impl_.replace_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, _impl_.funcname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, _impl_.parameters_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, _impl_.return_type_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, _impl_.sql_body_), ~0u, ~0u, ~0u, ~0u, 0, ~0u, 1, PROTOBUF_FIELD_OFFSET(::pg_query::FunctionParameter, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::FunctionParameter, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::FunctionParameter, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::FunctionParameter, _impl_.arg_type_), PROTOBUF_FIELD_OFFSET(::pg_query::FunctionParameter, _impl_.mode_), PROTOBUF_FIELD_OFFSET(::pg_query::FunctionParameter, _impl_.defexpr_), ~0u, 0, ~0u, 1, PROTOBUF_FIELD_OFFSET(::pg_query::AlterFunctionStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterFunctionStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterFunctionStmt, _impl_.objtype_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterFunctionStmt, _impl_.func_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterFunctionStmt, _impl_.actions_), ~0u, 0, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DoStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DoStmt, _impl_.args_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::InlineCodeBlock, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::InlineCodeBlock, _impl_.source_text_), PROTOBUF_FIELD_OFFSET(::pg_query::InlineCodeBlock, _impl_.lang_oid_), PROTOBUF_FIELD_OFFSET(::pg_query::InlineCodeBlock, _impl_.lang_is_trusted_), PROTOBUF_FIELD_OFFSET(::pg_query::InlineCodeBlock, _impl_.atomic_), PROTOBUF_FIELD_OFFSET(::pg_query::CallStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CallStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CallStmt, _impl_.funccall_), PROTOBUF_FIELD_OFFSET(::pg_query::CallStmt, _impl_.funcexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CallStmt, _impl_.outargs_), 0, 1, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CallContext, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CallContext, _impl_.atomic_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, _impl_.rename_type_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, _impl_.relation_type_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, _impl_.object_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, _impl_.subname_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, _impl_.newname_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, _impl_.behavior_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, _impl_.missing_ok_), ~0u, ~0u, 0, 1, ~0u, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectDependsStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectDependsStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectDependsStmt, _impl_.object_type_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectDependsStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectDependsStmt, _impl_.object_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectDependsStmt, _impl_.extname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectDependsStmt, _impl_.remove_), ~0u, 0, 1, 2, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectSchemaStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectSchemaStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectSchemaStmt, _impl_.object_type_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectSchemaStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectSchemaStmt, _impl_.object_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectSchemaStmt, _impl_.newschema_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectSchemaStmt, _impl_.missing_ok_), ~0u, 0, 1, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::AlterOwnerStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOwnerStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterOwnerStmt, _impl_.object_type_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOwnerStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOwnerStmt, _impl_.object_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOwnerStmt, _impl_.newowner_), ~0u, 0, 1, 2, PROTOBUF_FIELD_OFFSET(::pg_query::AlterOperatorStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOperatorStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterOperatorStmt, _impl_.opername_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOperatorStmt, _impl_.options_), 0, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTypeStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterTypeStmt, _impl_.type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTypeStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, _impl_.rulename_), PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, _impl_.where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, _impl_.event_), PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, _impl_.instead_), PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, _impl_.actions_), PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, _impl_.replace_), 0, ~0u, 1, ~0u, ~0u, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::NotifyStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::NotifyStmt, _impl_.conditionname_), PROTOBUF_FIELD_OFFSET(::pg_query::NotifyStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ListenStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::UnlistenStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::TransactionStmt, _impl_.kind_), PROTOBUF_FIELD_OFFSET(::pg_query::TransactionStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::TransactionStmt, _impl_.savepoint_name_), PROTOBUF_FIELD_OFFSET(::pg_query::TransactionStmt, _impl_.gid_), PROTOBUF_FIELD_OFFSET(::pg_query::TransactionStmt, _impl_.chain_), PROTOBUF_FIELD_OFFSET(::pg_query::TransactionStmt, _impl_.location_), PROTOBUF_FIELD_OFFSET(::pg_query::CompositeTypeStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CompositeTypeStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CompositeTypeStmt, _impl_.typevar_), PROTOBUF_FIELD_OFFSET(::pg_query::CompositeTypeStmt, _impl_.coldeflist_), 0, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateEnumStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateEnumStmt, _impl_.type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateEnumStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateRangeStmt, _impl_.type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateRangeStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterEnumStmt, _impl_.type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterEnumStmt, _impl_.old_val_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterEnumStmt, _impl_.new_val_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterEnumStmt, _impl_.new_val_neighbor_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterEnumStmt, _impl_.new_val_is_after_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterEnumStmt, _impl_.skip_if_new_val_exists_), PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, _impl_.view_), PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, _impl_.aliases_), PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, _impl_.query_), PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, _impl_.replace_), PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, _impl_.with_check_option_), 0, ~0u, 1, ~0u, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::LoadStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::LoadStmt, _impl_.filename_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreatedbStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreatedbStmt, _impl_.dbname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatedbStmt, _impl_.options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseStmt, _impl_.dbname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseStmt, _impl_.options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseRefreshCollStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseRefreshCollStmt, _impl_.dbname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseSetStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseSetStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseSetStmt, _impl_.dbname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseSetStmt, _impl_.setstmt_), ~0u, 0, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DropdbStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DropdbStmt, _impl_.dbname_), PROTOBUF_FIELD_OFFSET(::pg_query::DropdbStmt, _impl_.missing_ok_), PROTOBUF_FIELD_OFFSET(::pg_query::DropdbStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSystemStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSystemStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterSystemStmt, _impl_.setstmt_), 0, PROTOBUF_FIELD_OFFSET(::pg_query::ClusterStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::ClusterStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ClusterStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::ClusterStmt, _impl_.indexname_), PROTOBUF_FIELD_OFFSET(::pg_query::ClusterStmt, _impl_.params_), 0, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::VacuumStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::VacuumStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::VacuumStmt, _impl_.rels_), PROTOBUF_FIELD_OFFSET(::pg_query::VacuumStmt, _impl_.is_vacuumcmd_), PROTOBUF_FIELD_OFFSET(::pg_query::VacuumRelation, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::VacuumRelation, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::VacuumRelation, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::VacuumRelation, _impl_.oid_), PROTOBUF_FIELD_OFFSET(::pg_query::VacuumRelation, _impl_.va_cols_), 0, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::ExplainStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::ExplainStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ExplainStmt, _impl_.query_), PROTOBUF_FIELD_OFFSET(::pg_query::ExplainStmt, _impl_.options_), 0, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableAsStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableAsStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableAsStmt, _impl_.query_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableAsStmt, _impl_.into_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableAsStmt, _impl_.objtype_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableAsStmt, _impl_.is_select_into_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableAsStmt, _impl_.if_not_exists_), 0, 1, ~0u, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::RefreshMatViewStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::RefreshMatViewStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::RefreshMatViewStmt, _impl_.concurrent_), PROTOBUF_FIELD_OFFSET(::pg_query::RefreshMatViewStmt, _impl_.skip_data_), PROTOBUF_FIELD_OFFSET(::pg_query::RefreshMatViewStmt, _impl_.relation_), ~0u, ~0u, 0, ~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 _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DiscardStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DiscardStmt, _impl_.target_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::LockStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::LockStmt, _impl_.relations_), PROTOBUF_FIELD_OFFSET(::pg_query::LockStmt, _impl_.mode_), PROTOBUF_FIELD_OFFSET(::pg_query::LockStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ConstraintsSetStmt, _impl_.constraints_), PROTOBUF_FIELD_OFFSET(::pg_query::ConstraintsSetStmt, _impl_.deferred_), PROTOBUF_FIELD_OFFSET(::pg_query::ReindexStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::ReindexStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ReindexStmt, _impl_.kind_), PROTOBUF_FIELD_OFFSET(::pg_query::ReindexStmt, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::ReindexStmt, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::ReindexStmt, _impl_.params_), ~0u, 0, ~0u, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateConversionStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateConversionStmt, _impl_.conversion_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateConversionStmt, _impl_.for_encoding_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateConversionStmt, _impl_.to_encoding_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateConversionStmt, _impl_.func_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateConversionStmt, _impl_.def_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateCastStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateCastStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateCastStmt, _impl_.sourcetype_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateCastStmt, _impl_.targettype_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateCastStmt, _impl_.func_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateCastStmt, _impl_.context_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateCastStmt, _impl_.inout_), 0, 1, 2, ~0u, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::CreateTransformStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTransformStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateTransformStmt, _impl_.replace_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTransformStmt, _impl_.type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTransformStmt, _impl_.lang_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTransformStmt, _impl_.fromsql_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTransformStmt, _impl_.tosql_), ~0u, 0, ~0u, 1, 2, PROTOBUF_FIELD_OFFSET(::pg_query::PrepareStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::PrepareStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::PrepareStmt, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::PrepareStmt, _impl_.argtypes_), PROTOBUF_FIELD_OFFSET(::pg_query::PrepareStmt, _impl_.query_), ~0u, ~0u, 0, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ExecuteStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ExecuteStmt, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::ExecuteStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DeallocateStmt, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::DeallocateStmt, _impl_.isall_), PROTOBUF_FIELD_OFFSET(::pg_query::DeallocateStmt, _impl_.location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DropOwnedStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DropOwnedStmt, _impl_.roles_), PROTOBUF_FIELD_OFFSET(::pg_query::DropOwnedStmt, _impl_.behavior_), PROTOBUF_FIELD_OFFSET(::pg_query::ReassignOwnedStmt, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::ReassignOwnedStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ReassignOwnedStmt, _impl_.roles_), PROTOBUF_FIELD_OFFSET(::pg_query::ReassignOwnedStmt, _impl_.newrole_), ~0u, 0, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSDictionaryStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSDictionaryStmt, _impl_.dictname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSDictionaryStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, _impl_.kind_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, _impl_.cfgname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, _impl_.tokentype_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, _impl_.dicts_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, _impl_.override_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, _impl_.replace_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, _impl_.missing_ok_), PROTOBUF_FIELD_OFFSET(::pg_query::PublicationTable, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::PublicationTable, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::PublicationTable, _impl_.relation_), PROTOBUF_FIELD_OFFSET(::pg_query::PublicationTable, _impl_.where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::PublicationTable, _impl_.columns_), 0, 1, ~0u, PROTOBUF_FIELD_OFFSET(::pg_query::PublicationObjSpec, _impl_._has_bits_), PROTOBUF_FIELD_OFFSET(::pg_query::PublicationObjSpec, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::PublicationObjSpec, _impl_.pubobjtype_), PROTOBUF_FIELD_OFFSET(::pg_query::PublicationObjSpec, _impl_.name_), PROTOBUF_FIELD_OFFSET(::pg_query::PublicationObjSpec, _impl_.pubtable_), PROTOBUF_FIELD_OFFSET(::pg_query::PublicationObjSpec, _impl_.location_), ~0u, ~0u, 0, ~0u, ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreatePublicationStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreatePublicationStmt, _impl_.pubname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePublicationStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePublicationStmt, _impl_.pubobjects_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePublicationStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterPublicationStmt, _impl_.pubname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPublicationStmt, _impl_.options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPublicationStmt, _impl_.pubobjects_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPublicationStmt, _impl_.for_all_tables_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPublicationStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::CreateSubscriptionStmt, _impl_.subname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSubscriptionStmt, _impl_.conninfo_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSubscriptionStmt, _impl_.publication_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSubscriptionStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::AlterSubscriptionStmt, _impl_.kind_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSubscriptionStmt, _impl_.subname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSubscriptionStmt, _impl_.conninfo_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSubscriptionStmt, _impl_.publication_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSubscriptionStmt, _impl_.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_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::DropSubscriptionStmt, _impl_.subname_), PROTOBUF_FIELD_OFFSET(::pg_query::DropSubscriptionStmt, _impl_.missing_ok_), PROTOBUF_FIELD_OFFSET(::pg_query::DropSubscriptionStmt, _impl_.behavior_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ScanToken, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _inlined_string_donated_ ~0u, // no _split_ ~0u, // no sizeof(Split) PROTOBUF_FIELD_OFFSET(::pg_query::ScanToken, _impl_.start_), PROTOBUF_FIELD_OFFSET(::pg_query::ScanToken, _impl_.end_), PROTOBUF_FIELD_OFFSET(::pg_query::ScanToken, _impl_.token_), PROTOBUF_FIELD_OFFSET(::pg_query::ScanToken, _impl_.keyword_kind_), }; static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { {0, -1, -1, sizeof(::pg_query::ParseResult)}, {10, -1, -1, sizeof(::pg_query::ScanResult)}, {20, -1, -1, sizeof(::pg_query::Node)}, {297, -1, -1, sizeof(::pg_query::Integer)}, {306, -1, -1, sizeof(::pg_query::Float)}, {315, -1, -1, sizeof(::pg_query::Boolean)}, {324, -1, -1, sizeof(::pg_query::String)}, {333, -1, -1, sizeof(::pg_query::BitString)}, {342, -1, -1, sizeof(::pg_query::List)}, {351, -1, -1, sizeof(::pg_query::OidList)}, {360, -1, -1, sizeof(::pg_query::IntList)}, {369, -1, -1, sizeof(::pg_query::A_Const)}, {385, -1, -1, sizeof(::pg_query::Alias)}, {395, 410, -1, sizeof(::pg_query::RangeVar)}, {417, 442, -1, sizeof(::pg_query::TableFunc)}, {459, 475, -1, sizeof(::pg_query::IntoClause)}, {483, 500, -1, sizeof(::pg_query::Var)}, {509, 524, -1, sizeof(::pg_query::Param)}, {531, 558, -1, sizeof(::pg_query::Aggref)}, {577, 590, -1, sizeof(::pg_query::GroupingFunc)}, {595, 615, -1, sizeof(::pg_query::WindowFunc)}, {627, 640, -1, sizeof(::pg_query::WindowFuncRunCondition)}, {645, 657, -1, sizeof(::pg_query::MergeSupportFunc)}, {661, 679, -1, sizeof(::pg_query::SubscriptingRef)}, {689, 707, -1, sizeof(::pg_query::FuncExpr)}, {717, 730, -1, sizeof(::pg_query::NamedArgExpr)}, {735, 751, -1, sizeof(::pg_query::OpExpr)}, {759, 775, -1, sizeof(::pg_query::DistinctExpr)}, {783, 799, -1, sizeof(::pg_query::NullIfExpr)}, {807, 821, -1, sizeof(::pg_query::ScalarArrayOpExpr)}, {827, 839, -1, sizeof(::pg_query::BoolExpr)}, {843, 858, -1, sizeof(::pg_query::SubLink)}, {865, 890, -1, sizeof(::pg_query::SubPlan)}, {907, 917, -1, sizeof(::pg_query::AlternativeSubPlan)}, {919, 933, -1, sizeof(::pg_query::FieldSelect)}, {939, 952, -1, sizeof(::pg_query::FieldStore)}, {957, 972, -1, sizeof(::pg_query::RelabelType)}, {979, 993, -1, sizeof(::pg_query::CoerceViaIO)}, {999, 1015, -1, sizeof(::pg_query::ArrayCoerceExpr)}, {1023, 1036, -1, sizeof(::pg_query::ConvertRowtypeExpr)}, {1041, 1053, -1, sizeof(::pg_query::CollateExpr)}, {1057, 1072, -1, sizeof(::pg_query::CaseExpr)}, {1079, 1091, -1, sizeof(::pg_query::CaseWhen)}, {1095, 1107, -1, sizeof(::pg_query::CaseTestExpr)}, {1111, 1126, -1, sizeof(::pg_query::ArrayExpr)}, {1133, 1147, -1, sizeof(::pg_query::RowExpr)}, {1153, 1168, -1, sizeof(::pg_query::RowCompareExpr)}, {1175, 1188, -1, sizeof(::pg_query::CoalesceExpr)}, {1193, 1208, -1, sizeof(::pg_query::MinMaxExpr)}, {1215, 1228, -1, sizeof(::pg_query::SQLValueFunction)}, {1233, 1252, -1, sizeof(::pg_query::XmlExpr)}, {1263, -1, -1, sizeof(::pg_query::JsonFormat)}, {1274, 1285, -1, sizeof(::pg_query::JsonReturning)}, {1288, 1299, -1, sizeof(::pg_query::JsonValueExpr)}, {1302, 1319, -1, sizeof(::pg_query::JsonConstructorExpr)}, {1328, 1341, -1, sizeof(::pg_query::JsonIsPredicate)}, {1346, 1358, -1, sizeof(::pg_query::JsonBehavior)}, {1362, 1387, -1, sizeof(::pg_query::JsonExpr)}, {1404, -1, -1, sizeof(::pg_query::JsonTablePath)}, {1413, 1427, -1, sizeof(::pg_query::JsonTablePathScan)}, {1433, 1444, -1, sizeof(::pg_query::JsonTableSiblingJoin)}, {1447, 1460, -1, sizeof(::pg_query::NullTest)}, {1465, 1477, -1, sizeof(::pg_query::BooleanTest)}, {1481, 1495, -1, sizeof(::pg_query::MergeAction)}, {1501, 1516, -1, sizeof(::pg_query::CoerceToDomain)}, {1523, 1536, -1, sizeof(::pg_query::CoerceToDomainValue)}, {1541, 1554, -1, sizeof(::pg_query::SetToDefault)}, {1559, 1571, -1, sizeof(::pg_query::CurrentOfExpr)}, {1575, 1586, -1, sizeof(::pg_query::NextValueExpr)}, {1589, 1601, -1, sizeof(::pg_query::InferenceElem)}, {1605, 1621, -1, sizeof(::pg_query::TargetEntry)}, {1629, -1, -1, sizeof(::pg_query::RangeTblRef)}, {1638, 1655, -1, sizeof(::pg_query::JoinExpr)}, {1664, 1674, -1, sizeof(::pg_query::FromExpr)}, {1676, 1692, -1, sizeof(::pg_query::OnConflictExpr)}, {1700, 1750, -1, sizeof(::pg_query::Query)}, {1792, -1, -1, sizeof(::pg_query::TypeName)}, {1808, -1, -1, sizeof(::pg_query::ColumnRef)}, {1818, -1, -1, sizeof(::pg_query::ParamRef)}, {1828, 1841, -1, sizeof(::pg_query::A_Expr)}, {1846, 1857, -1, sizeof(::pg_query::TypeCast)}, {1860, 1871, -1, sizeof(::pg_query::CollateClause)}, {1874, -1, -1, sizeof(::pg_query::RoleSpec)}, {1885, 1904, -1, sizeof(::pg_query::FuncCall)}, {1915, -1, -1, sizeof(::pg_query::A_Star)}, {1923, 1934, -1, sizeof(::pg_query::A_Indices)}, {1937, 1947, -1, sizeof(::pg_query::A_Indirection)}, {1949, -1, -1, sizeof(::pg_query::A_ArrayExpr)}, {1959, 1971, -1, sizeof(::pg_query::ResTarget)}, {1975, 1986, -1, sizeof(::pg_query::MultiAssignRef)}, {1989, 2002, -1, sizeof(::pg_query::SortBy)}, {2007, 2023, -1, sizeof(::pg_query::WindowDef)}, {2031, 2042, -1, sizeof(::pg_query::RangeSubselect)}, {2045, 2059, -1, sizeof(::pg_query::RangeFunction)}, {2065, 2080, -1, sizeof(::pg_query::RangeTableFunc)}, {2087, 2102, -1, sizeof(::pg_query::RangeTableFuncCol)}, {2109, 2122, -1, sizeof(::pg_query::RangeTableSample)}, {2127, 2154, -1, sizeof(::pg_query::ColumnDef)}, {2173, 2184, -1, sizeof(::pg_query::TableLikeClause)}, {2187, 2203, -1, sizeof(::pg_query::IndexElem)}, {2211, 2224, -1, sizeof(::pg_query::DefElem)}, {2229, -1, -1, sizeof(::pg_query::LockingClause)}, {2240, 2253, -1, sizeof(::pg_query::XmlSerialize)}, {2258, 2271, -1, sizeof(::pg_query::PartitionElem)}, {2276, -1, -1, sizeof(::pg_query::PartitionSpec)}, {2287, -1, -1, sizeof(::pg_query::PartitionBoundSpec)}, {2303, 2314, -1, sizeof(::pg_query::PartitionRangeDatum)}, {2317, -1, -1, sizeof(::pg_query::SinglePartitionSpec)}, {2325, 2336, -1, sizeof(::pg_query::PartitionCmd)}, {2339, 2379, -1, sizeof(::pg_query::RangeTblEntry)}, {2411, -1, -1, sizeof(::pg_query::RTEPermissionInfo)}, {2426, 2441, -1, sizeof(::pg_query::RangeTblFunction)}, {2448, 2459, -1, sizeof(::pg_query::TableSampleClause)}, {2462, 2475, -1, sizeof(::pg_query::WithCheckOption)}, {2480, -1, -1, sizeof(::pg_query::SortGroupClause)}, {2493, -1, -1, sizeof(::pg_query::GroupingSet)}, {2504, 2526, -1, sizeof(::pg_query::WindowClause)}, {2540, -1, -1, sizeof(::pg_query::RowMarkClause)}, {2552, -1, -1, sizeof(::pg_query::WithClause)}, {2563, 2575, -1, sizeof(::pg_query::InferClause)}, {2579, 2592, -1, sizeof(::pg_query::OnConflictClause)}, {2597, -1, -1, sizeof(::pg_query::CTESearchClause)}, {2609, 2627, -1, sizeof(::pg_query::CTECycleClause)}, {2637, 2658, -1, sizeof(::pg_query::CommonTableExpr)}, {2671, 2685, -1, sizeof(::pg_query::MergeWhenClause)}, {2691, -1, -1, sizeof(::pg_query::TriggerTransition)}, {2702, 2712, -1, sizeof(::pg_query::JsonOutput)}, {2714, 2724, -1, sizeof(::pg_query::JsonArgument)}, {2726, 2745, -1, sizeof(::pg_query::JsonFuncExpr)}, {2756, 2768, -1, sizeof(::pg_query::JsonTablePathSpec)}, {2772, 2788, -1, sizeof(::pg_query::JsonTable)}, {2796, 2815, -1, sizeof(::pg_query::JsonTableColumn)}, {2826, 2836, -1, sizeof(::pg_query::JsonKeyValue)}, {2838, 2850, -1, sizeof(::pg_query::JsonParseExpr)}, {2854, 2865, -1, sizeof(::pg_query::JsonScalarExpr)}, {2868, 2879, -1, sizeof(::pg_query::JsonSerializeExpr)}, {2882, 2895, -1, sizeof(::pg_query::JsonObjectConstructor)}, {2900, 2912, -1, sizeof(::pg_query::JsonArrayConstructor)}, {2916, 2929, -1, sizeof(::pg_query::JsonArrayQueryConstructor)}, {2934, 2947, -1, sizeof(::pg_query::JsonAggConstructor)}, {2952, 2964, -1, sizeof(::pg_query::JsonObjectAgg)}, {2968, 2979, -1, sizeof(::pg_query::JsonArrayAgg)}, {2982, 2993, -1, sizeof(::pg_query::RawStmt)}, {2996, 3011, -1, sizeof(::pg_query::InsertStmt)}, {3018, 3031, -1, sizeof(::pg_query::DeleteStmt)}, {3036, 3050, -1, sizeof(::pg_query::UpdateStmt)}, {3056, 3070, -1, sizeof(::pg_query::MergeStmt)}, {3076, 3104, -1, sizeof(::pg_query::SelectStmt)}, {3124, 3140, -1, sizeof(::pg_query::SetOperationStmt)}, {3148, 3157, -1, sizeof(::pg_query::ReturnStmt)}, {3158, 3171, -1, sizeof(::pg_query::PLAssignStmt)}, {3176, 3188, -1, sizeof(::pg_query::CreateSchemaStmt)}, {3192, 3204, -1, sizeof(::pg_query::AlterTableStmt)}, {3208, -1, -1, sizeof(::pg_query::ReplicaIdentityStmt)}, {3218, 3234, -1, sizeof(::pg_query::AlterTableCmd)}, {3242, -1, -1, sizeof(::pg_query::AlterCollationStmt)}, {3251, 3265, -1, sizeof(::pg_query::AlterDomainStmt)}, {3271, 3288, -1, sizeof(::pg_query::GrantStmt)}, {3297, -1, -1, sizeof(::pg_query::ObjectWithArgs)}, {3309, -1, -1, sizeof(::pg_query::AccessPriv)}, {3319, 3333, -1, sizeof(::pg_query::GrantRoleStmt)}, {3339, 3349, -1, sizeof(::pg_query::AlterDefaultPrivilegesStmt)}, {3351, 3367, -1, sizeof(::pg_query::CopyStmt)}, {3375, -1, -1, sizeof(::pg_query::VariableSetStmt)}, {3387, -1, -1, sizeof(::pg_query::VariableShowStmt)}, {3396, 3416, -1, sizeof(::pg_query::CreateStmt)}, {3428, 3467, -1, sizeof(::pg_query::Constraint)}, {3498, 3510, -1, sizeof(::pg_query::CreateTableSpaceStmt)}, {3514, -1, -1, sizeof(::pg_query::DropTableSpaceStmt)}, {3524, -1, -1, sizeof(::pg_query::AlterTableSpaceOptionsStmt)}, {3535, -1, -1, sizeof(::pg_query::AlterTableMoveAllStmt)}, {3548, -1, -1, sizeof(::pg_query::CreateExtensionStmt)}, {3559, -1, -1, sizeof(::pg_query::AlterExtensionStmt)}, {3569, 3581, -1, sizeof(::pg_query::AlterExtensionContentsStmt)}, {3585, -1, -1, sizeof(::pg_query::CreateFdwStmt)}, {3596, -1, -1, sizeof(::pg_query::AlterFdwStmt)}, {3607, -1, -1, sizeof(::pg_query::CreateForeignServerStmt)}, {3621, -1, -1, sizeof(::pg_query::AlterForeignServerStmt)}, {3633, 3644, -1, sizeof(::pg_query::CreateForeignTableStmt)}, {3647, 3659, -1, sizeof(::pg_query::CreateUserMappingStmt)}, {3663, 3674, -1, sizeof(::pg_query::AlterUserMappingStmt)}, {3677, 3688, -1, sizeof(::pg_query::DropUserMappingStmt)}, {3691, -1, -1, sizeof(::pg_query::ImportForeignSchemaStmt)}, {3705, 3720, -1, sizeof(::pg_query::CreatePolicyStmt)}, {3727, 3740, -1, sizeof(::pg_query::AlterPolicyStmt)}, {3745, -1, -1, sizeof(::pg_query::CreateAmStmt)}, {3756, 3779, -1, sizeof(::pg_query::CreateTrigStmt)}, {3794, -1, -1, sizeof(::pg_query::CreateEventTrigStmt)}, {3806, -1, -1, sizeof(::pg_query::AlterEventTrigStmt)}, {3816, -1, -1, sizeof(::pg_query::CreatePLangStmt)}, {3830, -1, -1, sizeof(::pg_query::CreateRoleStmt)}, {3841, 3852, -1, sizeof(::pg_query::AlterRoleStmt)}, {3855, 3866, -1, sizeof(::pg_query::AlterRoleSetStmt)}, {3869, -1, -1, sizeof(::pg_query::DropRoleStmt)}, {3879, 3892, -1, sizeof(::pg_query::CreateSeqStmt)}, {3897, 3909, -1, sizeof(::pg_query::AlterSeqStmt)}, {3913, -1, -1, sizeof(::pg_query::DefineStmt)}, {3928, 3940, -1, sizeof(::pg_query::CreateDomainStmt)}, {3944, 3958, -1, sizeof(::pg_query::CreateOpClassStmt)}, {3964, 3978, -1, sizeof(::pg_query::CreateOpClassItem)}, {3984, -1, -1, sizeof(::pg_query::CreateOpFamilyStmt)}, {3994, -1, -1, sizeof(::pg_query::AlterOpFamilyStmt)}, {4006, -1, -1, sizeof(::pg_query::DropStmt)}, {4019, -1, -1, sizeof(::pg_query::TruncateStmt)}, {4030, 4041, -1, sizeof(::pg_query::CommentStmt)}, {4044, 4056, -1, sizeof(::pg_query::SecLabelStmt)}, {4060, 4071, -1, sizeof(::pg_query::DeclareCursorStmt)}, {4074, -1, -1, sizeof(::pg_query::ClosePortalStmt)}, {4083, -1, -1, sizeof(::pg_query::FetchStmt)}, {4095, 4127, -1, sizeof(::pg_query::IndexStmt)}, {4151, -1, -1, sizeof(::pg_query::CreateStatsStmt)}, {4166, 4176, -1, sizeof(::pg_query::StatsElem)}, {4178, 4189, -1, sizeof(::pg_query::AlterStatsStmt)}, {4192, 4207, -1, sizeof(::pg_query::CreateFunctionStmt)}, {4214, 4226, -1, sizeof(::pg_query::FunctionParameter)}, {4230, 4241, -1, sizeof(::pg_query::AlterFunctionStmt)}, {4244, -1, -1, sizeof(::pg_query::DoStmt)}, {4253, -1, -1, sizeof(::pg_query::InlineCodeBlock)}, {4265, 4276, -1, sizeof(::pg_query::CallStmt)}, {4279, -1, -1, sizeof(::pg_query::CallContext)}, {4288, 4304, -1, sizeof(::pg_query::RenameStmt)}, {4312, 4325, -1, sizeof(::pg_query::AlterObjectDependsStmt)}, {4330, 4343, -1, sizeof(::pg_query::AlterObjectSchemaStmt)}, {4348, 4360, -1, sizeof(::pg_query::AlterOwnerStmt)}, {4364, 4374, -1, sizeof(::pg_query::AlterOperatorStmt)}, {4376, -1, -1, sizeof(::pg_query::AlterTypeStmt)}, {4386, 4401, -1, sizeof(::pg_query::RuleStmt)}, {4408, -1, -1, sizeof(::pg_query::NotifyStmt)}, {4418, -1, -1, sizeof(::pg_query::ListenStmt)}, {4427, -1, -1, sizeof(::pg_query::UnlistenStmt)}, {4436, -1, -1, sizeof(::pg_query::TransactionStmt)}, {4450, 4460, -1, sizeof(::pg_query::CompositeTypeStmt)}, {4462, -1, -1, sizeof(::pg_query::CreateEnumStmt)}, {4472, -1, -1, sizeof(::pg_query::CreateRangeStmt)}, {4482, -1, -1, sizeof(::pg_query::AlterEnumStmt)}, {4496, 4510, -1, sizeof(::pg_query::ViewStmt)}, {4516, -1, -1, sizeof(::pg_query::LoadStmt)}, {4525, -1, -1, sizeof(::pg_query::CreatedbStmt)}, {4535, -1, -1, sizeof(::pg_query::AlterDatabaseStmt)}, {4545, -1, -1, sizeof(::pg_query::AlterDatabaseRefreshCollStmt)}, {4554, 4564, -1, sizeof(::pg_query::AlterDatabaseSetStmt)}, {4566, -1, -1, sizeof(::pg_query::DropdbStmt)}, {4577, 4586, -1, sizeof(::pg_query::AlterSystemStmt)}, {4587, 4598, -1, sizeof(::pg_query::ClusterStmt)}, {4601, -1, -1, sizeof(::pg_query::VacuumStmt)}, {4612, 4623, -1, sizeof(::pg_query::VacuumRelation)}, {4626, 4636, -1, sizeof(::pg_query::ExplainStmt)}, {4638, 4651, -1, sizeof(::pg_query::CreateTableAsStmt)}, {4656, 4667, -1, sizeof(::pg_query::RefreshMatViewStmt)}, {4670, -1, -1, sizeof(::pg_query::CheckPointStmt)}, {4678, -1, -1, sizeof(::pg_query::DiscardStmt)}, {4687, -1, -1, sizeof(::pg_query::LockStmt)}, {4698, -1, -1, sizeof(::pg_query::ConstraintsSetStmt)}, {4708, 4720, -1, sizeof(::pg_query::ReindexStmt)}, {4724, -1, -1, sizeof(::pg_query::CreateConversionStmt)}, {4737, 4750, -1, sizeof(::pg_query::CreateCastStmt)}, {4755, 4768, -1, sizeof(::pg_query::CreateTransformStmt)}, {4773, 4784, -1, sizeof(::pg_query::PrepareStmt)}, {4787, -1, -1, sizeof(::pg_query::ExecuteStmt)}, {4797, -1, -1, sizeof(::pg_query::DeallocateStmt)}, {4808, -1, -1, sizeof(::pg_query::DropOwnedStmt)}, {4818, 4828, -1, sizeof(::pg_query::ReassignOwnedStmt)}, {4830, -1, -1, sizeof(::pg_query::AlterTSDictionaryStmt)}, {4840, -1, -1, sizeof(::pg_query::AlterTSConfigurationStmt)}, {4855, 4866, -1, sizeof(::pg_query::PublicationTable)}, {4869, 4881, -1, sizeof(::pg_query::PublicationObjSpec)}, {4885, -1, -1, sizeof(::pg_query::CreatePublicationStmt)}, {4897, -1, -1, sizeof(::pg_query::AlterPublicationStmt)}, {4910, -1, -1, sizeof(::pg_query::CreateSubscriptionStmt)}, {4922, -1, -1, sizeof(::pg_query::AlterSubscriptionStmt)}, {4935, -1, -1, sizeof(::pg_query::DropSubscriptionStmt)}, {4946, -1, -1, sizeof(::pg_query::ScanToken)}, }; static const ::_pb::Message* const file_default_instances[] = { &::pg_query::_ParseResult_default_instance_._instance, &::pg_query::_ScanResult_default_instance_._instance, &::pg_query::_Node_default_instance_._instance, &::pg_query::_Integer_default_instance_._instance, &::pg_query::_Float_default_instance_._instance, &::pg_query::_Boolean_default_instance_._instance, &::pg_query::_String_default_instance_._instance, &::pg_query::_BitString_default_instance_._instance, &::pg_query::_List_default_instance_._instance, &::pg_query::_OidList_default_instance_._instance, &::pg_query::_IntList_default_instance_._instance, &::pg_query::_A_Const_default_instance_._instance, &::pg_query::_Alias_default_instance_._instance, &::pg_query::_RangeVar_default_instance_._instance, &::pg_query::_TableFunc_default_instance_._instance, &::pg_query::_IntoClause_default_instance_._instance, &::pg_query::_Var_default_instance_._instance, &::pg_query::_Param_default_instance_._instance, &::pg_query::_Aggref_default_instance_._instance, &::pg_query::_GroupingFunc_default_instance_._instance, &::pg_query::_WindowFunc_default_instance_._instance, &::pg_query::_WindowFuncRunCondition_default_instance_._instance, &::pg_query::_MergeSupportFunc_default_instance_._instance, &::pg_query::_SubscriptingRef_default_instance_._instance, &::pg_query::_FuncExpr_default_instance_._instance, &::pg_query::_NamedArgExpr_default_instance_._instance, &::pg_query::_OpExpr_default_instance_._instance, &::pg_query::_DistinctExpr_default_instance_._instance, &::pg_query::_NullIfExpr_default_instance_._instance, &::pg_query::_ScalarArrayOpExpr_default_instance_._instance, &::pg_query::_BoolExpr_default_instance_._instance, &::pg_query::_SubLink_default_instance_._instance, &::pg_query::_SubPlan_default_instance_._instance, &::pg_query::_AlternativeSubPlan_default_instance_._instance, &::pg_query::_FieldSelect_default_instance_._instance, &::pg_query::_FieldStore_default_instance_._instance, &::pg_query::_RelabelType_default_instance_._instance, &::pg_query::_CoerceViaIO_default_instance_._instance, &::pg_query::_ArrayCoerceExpr_default_instance_._instance, &::pg_query::_ConvertRowtypeExpr_default_instance_._instance, &::pg_query::_CollateExpr_default_instance_._instance, &::pg_query::_CaseExpr_default_instance_._instance, &::pg_query::_CaseWhen_default_instance_._instance, &::pg_query::_CaseTestExpr_default_instance_._instance, &::pg_query::_ArrayExpr_default_instance_._instance, &::pg_query::_RowExpr_default_instance_._instance, &::pg_query::_RowCompareExpr_default_instance_._instance, &::pg_query::_CoalesceExpr_default_instance_._instance, &::pg_query::_MinMaxExpr_default_instance_._instance, &::pg_query::_SQLValueFunction_default_instance_._instance, &::pg_query::_XmlExpr_default_instance_._instance, &::pg_query::_JsonFormat_default_instance_._instance, &::pg_query::_JsonReturning_default_instance_._instance, &::pg_query::_JsonValueExpr_default_instance_._instance, &::pg_query::_JsonConstructorExpr_default_instance_._instance, &::pg_query::_JsonIsPredicate_default_instance_._instance, &::pg_query::_JsonBehavior_default_instance_._instance, &::pg_query::_JsonExpr_default_instance_._instance, &::pg_query::_JsonTablePath_default_instance_._instance, &::pg_query::_JsonTablePathScan_default_instance_._instance, &::pg_query::_JsonTableSiblingJoin_default_instance_._instance, &::pg_query::_NullTest_default_instance_._instance, &::pg_query::_BooleanTest_default_instance_._instance, &::pg_query::_MergeAction_default_instance_._instance, &::pg_query::_CoerceToDomain_default_instance_._instance, &::pg_query::_CoerceToDomainValue_default_instance_._instance, &::pg_query::_SetToDefault_default_instance_._instance, &::pg_query::_CurrentOfExpr_default_instance_._instance, &::pg_query::_NextValueExpr_default_instance_._instance, &::pg_query::_InferenceElem_default_instance_._instance, &::pg_query::_TargetEntry_default_instance_._instance, &::pg_query::_RangeTblRef_default_instance_._instance, &::pg_query::_JoinExpr_default_instance_._instance, &::pg_query::_FromExpr_default_instance_._instance, &::pg_query::_OnConflictExpr_default_instance_._instance, &::pg_query::_Query_default_instance_._instance, &::pg_query::_TypeName_default_instance_._instance, &::pg_query::_ColumnRef_default_instance_._instance, &::pg_query::_ParamRef_default_instance_._instance, &::pg_query::_A_Expr_default_instance_._instance, &::pg_query::_TypeCast_default_instance_._instance, &::pg_query::_CollateClause_default_instance_._instance, &::pg_query::_RoleSpec_default_instance_._instance, &::pg_query::_FuncCall_default_instance_._instance, &::pg_query::_A_Star_default_instance_._instance, &::pg_query::_A_Indices_default_instance_._instance, &::pg_query::_A_Indirection_default_instance_._instance, &::pg_query::_A_ArrayExpr_default_instance_._instance, &::pg_query::_ResTarget_default_instance_._instance, &::pg_query::_MultiAssignRef_default_instance_._instance, &::pg_query::_SortBy_default_instance_._instance, &::pg_query::_WindowDef_default_instance_._instance, &::pg_query::_RangeSubselect_default_instance_._instance, &::pg_query::_RangeFunction_default_instance_._instance, &::pg_query::_RangeTableFunc_default_instance_._instance, &::pg_query::_RangeTableFuncCol_default_instance_._instance, &::pg_query::_RangeTableSample_default_instance_._instance, &::pg_query::_ColumnDef_default_instance_._instance, &::pg_query::_TableLikeClause_default_instance_._instance, &::pg_query::_IndexElem_default_instance_._instance, &::pg_query::_DefElem_default_instance_._instance, &::pg_query::_LockingClause_default_instance_._instance, &::pg_query::_XmlSerialize_default_instance_._instance, &::pg_query::_PartitionElem_default_instance_._instance, &::pg_query::_PartitionSpec_default_instance_._instance, &::pg_query::_PartitionBoundSpec_default_instance_._instance, &::pg_query::_PartitionRangeDatum_default_instance_._instance, &::pg_query::_SinglePartitionSpec_default_instance_._instance, &::pg_query::_PartitionCmd_default_instance_._instance, &::pg_query::_RangeTblEntry_default_instance_._instance, &::pg_query::_RTEPermissionInfo_default_instance_._instance, &::pg_query::_RangeTblFunction_default_instance_._instance, &::pg_query::_TableSampleClause_default_instance_._instance, &::pg_query::_WithCheckOption_default_instance_._instance, &::pg_query::_SortGroupClause_default_instance_._instance, &::pg_query::_GroupingSet_default_instance_._instance, &::pg_query::_WindowClause_default_instance_._instance, &::pg_query::_RowMarkClause_default_instance_._instance, &::pg_query::_WithClause_default_instance_._instance, &::pg_query::_InferClause_default_instance_._instance, &::pg_query::_OnConflictClause_default_instance_._instance, &::pg_query::_CTESearchClause_default_instance_._instance, &::pg_query::_CTECycleClause_default_instance_._instance, &::pg_query::_CommonTableExpr_default_instance_._instance, &::pg_query::_MergeWhenClause_default_instance_._instance, &::pg_query::_TriggerTransition_default_instance_._instance, &::pg_query::_JsonOutput_default_instance_._instance, &::pg_query::_JsonArgument_default_instance_._instance, &::pg_query::_JsonFuncExpr_default_instance_._instance, &::pg_query::_JsonTablePathSpec_default_instance_._instance, &::pg_query::_JsonTable_default_instance_._instance, &::pg_query::_JsonTableColumn_default_instance_._instance, &::pg_query::_JsonKeyValue_default_instance_._instance, &::pg_query::_JsonParseExpr_default_instance_._instance, &::pg_query::_JsonScalarExpr_default_instance_._instance, &::pg_query::_JsonSerializeExpr_default_instance_._instance, &::pg_query::_JsonObjectConstructor_default_instance_._instance, &::pg_query::_JsonArrayConstructor_default_instance_._instance, &::pg_query::_JsonArrayQueryConstructor_default_instance_._instance, &::pg_query::_JsonAggConstructor_default_instance_._instance, &::pg_query::_JsonObjectAgg_default_instance_._instance, &::pg_query::_JsonArrayAgg_default_instance_._instance, &::pg_query::_RawStmt_default_instance_._instance, &::pg_query::_InsertStmt_default_instance_._instance, &::pg_query::_DeleteStmt_default_instance_._instance, &::pg_query::_UpdateStmt_default_instance_._instance, &::pg_query::_MergeStmt_default_instance_._instance, &::pg_query::_SelectStmt_default_instance_._instance, &::pg_query::_SetOperationStmt_default_instance_._instance, &::pg_query::_ReturnStmt_default_instance_._instance, &::pg_query::_PLAssignStmt_default_instance_._instance, &::pg_query::_CreateSchemaStmt_default_instance_._instance, &::pg_query::_AlterTableStmt_default_instance_._instance, &::pg_query::_ReplicaIdentityStmt_default_instance_._instance, &::pg_query::_AlterTableCmd_default_instance_._instance, &::pg_query::_AlterCollationStmt_default_instance_._instance, &::pg_query::_AlterDomainStmt_default_instance_._instance, &::pg_query::_GrantStmt_default_instance_._instance, &::pg_query::_ObjectWithArgs_default_instance_._instance, &::pg_query::_AccessPriv_default_instance_._instance, &::pg_query::_GrantRoleStmt_default_instance_._instance, &::pg_query::_AlterDefaultPrivilegesStmt_default_instance_._instance, &::pg_query::_CopyStmt_default_instance_._instance, &::pg_query::_VariableSetStmt_default_instance_._instance, &::pg_query::_VariableShowStmt_default_instance_._instance, &::pg_query::_CreateStmt_default_instance_._instance, &::pg_query::_Constraint_default_instance_._instance, &::pg_query::_CreateTableSpaceStmt_default_instance_._instance, &::pg_query::_DropTableSpaceStmt_default_instance_._instance, &::pg_query::_AlterTableSpaceOptionsStmt_default_instance_._instance, &::pg_query::_AlterTableMoveAllStmt_default_instance_._instance, &::pg_query::_CreateExtensionStmt_default_instance_._instance, &::pg_query::_AlterExtensionStmt_default_instance_._instance, &::pg_query::_AlterExtensionContentsStmt_default_instance_._instance, &::pg_query::_CreateFdwStmt_default_instance_._instance, &::pg_query::_AlterFdwStmt_default_instance_._instance, &::pg_query::_CreateForeignServerStmt_default_instance_._instance, &::pg_query::_AlterForeignServerStmt_default_instance_._instance, &::pg_query::_CreateForeignTableStmt_default_instance_._instance, &::pg_query::_CreateUserMappingStmt_default_instance_._instance, &::pg_query::_AlterUserMappingStmt_default_instance_._instance, &::pg_query::_DropUserMappingStmt_default_instance_._instance, &::pg_query::_ImportForeignSchemaStmt_default_instance_._instance, &::pg_query::_CreatePolicyStmt_default_instance_._instance, &::pg_query::_AlterPolicyStmt_default_instance_._instance, &::pg_query::_CreateAmStmt_default_instance_._instance, &::pg_query::_CreateTrigStmt_default_instance_._instance, &::pg_query::_CreateEventTrigStmt_default_instance_._instance, &::pg_query::_AlterEventTrigStmt_default_instance_._instance, &::pg_query::_CreatePLangStmt_default_instance_._instance, &::pg_query::_CreateRoleStmt_default_instance_._instance, &::pg_query::_AlterRoleStmt_default_instance_._instance, &::pg_query::_AlterRoleSetStmt_default_instance_._instance, &::pg_query::_DropRoleStmt_default_instance_._instance, &::pg_query::_CreateSeqStmt_default_instance_._instance, &::pg_query::_AlterSeqStmt_default_instance_._instance, &::pg_query::_DefineStmt_default_instance_._instance, &::pg_query::_CreateDomainStmt_default_instance_._instance, &::pg_query::_CreateOpClassStmt_default_instance_._instance, &::pg_query::_CreateOpClassItem_default_instance_._instance, &::pg_query::_CreateOpFamilyStmt_default_instance_._instance, &::pg_query::_AlterOpFamilyStmt_default_instance_._instance, &::pg_query::_DropStmt_default_instance_._instance, &::pg_query::_TruncateStmt_default_instance_._instance, &::pg_query::_CommentStmt_default_instance_._instance, &::pg_query::_SecLabelStmt_default_instance_._instance, &::pg_query::_DeclareCursorStmt_default_instance_._instance, &::pg_query::_ClosePortalStmt_default_instance_._instance, &::pg_query::_FetchStmt_default_instance_._instance, &::pg_query::_IndexStmt_default_instance_._instance, &::pg_query::_CreateStatsStmt_default_instance_._instance, &::pg_query::_StatsElem_default_instance_._instance, &::pg_query::_AlterStatsStmt_default_instance_._instance, &::pg_query::_CreateFunctionStmt_default_instance_._instance, &::pg_query::_FunctionParameter_default_instance_._instance, &::pg_query::_AlterFunctionStmt_default_instance_._instance, &::pg_query::_DoStmt_default_instance_._instance, &::pg_query::_InlineCodeBlock_default_instance_._instance, &::pg_query::_CallStmt_default_instance_._instance, &::pg_query::_CallContext_default_instance_._instance, &::pg_query::_RenameStmt_default_instance_._instance, &::pg_query::_AlterObjectDependsStmt_default_instance_._instance, &::pg_query::_AlterObjectSchemaStmt_default_instance_._instance, &::pg_query::_AlterOwnerStmt_default_instance_._instance, &::pg_query::_AlterOperatorStmt_default_instance_._instance, &::pg_query::_AlterTypeStmt_default_instance_._instance, &::pg_query::_RuleStmt_default_instance_._instance, &::pg_query::_NotifyStmt_default_instance_._instance, &::pg_query::_ListenStmt_default_instance_._instance, &::pg_query::_UnlistenStmt_default_instance_._instance, &::pg_query::_TransactionStmt_default_instance_._instance, &::pg_query::_CompositeTypeStmt_default_instance_._instance, &::pg_query::_CreateEnumStmt_default_instance_._instance, &::pg_query::_CreateRangeStmt_default_instance_._instance, &::pg_query::_AlterEnumStmt_default_instance_._instance, &::pg_query::_ViewStmt_default_instance_._instance, &::pg_query::_LoadStmt_default_instance_._instance, &::pg_query::_CreatedbStmt_default_instance_._instance, &::pg_query::_AlterDatabaseStmt_default_instance_._instance, &::pg_query::_AlterDatabaseRefreshCollStmt_default_instance_._instance, &::pg_query::_AlterDatabaseSetStmt_default_instance_._instance, &::pg_query::_DropdbStmt_default_instance_._instance, &::pg_query::_AlterSystemStmt_default_instance_._instance, &::pg_query::_ClusterStmt_default_instance_._instance, &::pg_query::_VacuumStmt_default_instance_._instance, &::pg_query::_VacuumRelation_default_instance_._instance, &::pg_query::_ExplainStmt_default_instance_._instance, &::pg_query::_CreateTableAsStmt_default_instance_._instance, &::pg_query::_RefreshMatViewStmt_default_instance_._instance, &::pg_query::_CheckPointStmt_default_instance_._instance, &::pg_query::_DiscardStmt_default_instance_._instance, &::pg_query::_LockStmt_default_instance_._instance, &::pg_query::_ConstraintsSetStmt_default_instance_._instance, &::pg_query::_ReindexStmt_default_instance_._instance, &::pg_query::_CreateConversionStmt_default_instance_._instance, &::pg_query::_CreateCastStmt_default_instance_._instance, &::pg_query::_CreateTransformStmt_default_instance_._instance, &::pg_query::_PrepareStmt_default_instance_._instance, &::pg_query::_ExecuteStmt_default_instance_._instance, &::pg_query::_DeallocateStmt_default_instance_._instance, &::pg_query::_DropOwnedStmt_default_instance_._instance, &::pg_query::_ReassignOwnedStmt_default_instance_._instance, &::pg_query::_AlterTSDictionaryStmt_default_instance_._instance, &::pg_query::_AlterTSConfigurationStmt_default_instance_._instance, &::pg_query::_PublicationTable_default_instance_._instance, &::pg_query::_PublicationObjSpec_default_instance_._instance, &::pg_query::_CreatePublicationStmt_default_instance_._instance, &::pg_query::_AlterPublicationStmt_default_instance_._instance, &::pg_query::_CreateSubscriptionStmt_default_instance_._instance, &::pg_query::_AlterSubscriptionStmt_default_instance_._instance, &::pg_query::_DropSubscriptionStmt_default_instance_._instance, &::pg_query::_ScanToken_default_instance_._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', '\"', '\325', '\216', '\001', '\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', '7', '\n', '\013', 'i', 'n', 't', 'o', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\004', ' ', '\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', '\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', ']', '\n', '\031', 'w', 'i', 'n', 'd', 'o', 'w', '_', 'f', 'u', 'n', 'c', '_', 'r', 'u', 'n', '_', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\030', '\n', ' ', '\001', '(', '\013', '2', ' ', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'W', 'i', 'n', 'd', 'o', 'w', 'F', 'u', 'n', 'c', 'R', 'u', 'n', 'C', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\026', 'W', 'i', 'n', 'd', 'o', 'w', 'F', 'u', 'n', 'c', 'R', 'u', 'n', 'C', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\022', 'J', '\n', '\022', 'm', 'e', 'r', 'g', 'e', '_', 's', 'u', 'p', 'p', 'o', 'r', 't', '_', 'f', 'u', 'n', 'c', '\030', '\013', ' ', '\001', '(', '\013', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'M', 'e', 'r', 'g', 'e', 'S', 'u', 'p', 'p', 'o', 'r', 't', 'F', 'u', 'n', 'c', 'H', '\000', 'R', '\020', 'M', 'e', 'r', 'g', 'e', 'S', 'u', 'p', 'p', 'o', 'r', 't', 'F', 'u', 'n', 'c', '\022', 'F', '\n', '\020', 's', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'n', 'g', '_', 'r', 'e', 'f', '\030', '\014', ' ', '\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', '\r', ' ', '\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', '\016', ' ', '\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', '\017', ' ', '\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', '\020', ' ', '\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', '\021', ' ', '\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', '\022', ' ', '\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', '\023', ' ', '\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', '\024', ' ', '\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', '\025', ' ', '\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', '\026', ' ', '\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', '\027', ' ', '\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', '\030', ' ', '\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', '\031', ' ', '\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', '\032', ' ', '\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', '\033', ' ', '\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', '\034', ' ', '\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', '\035', ' ', '\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', '\036', ' ', '\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', '\037', ' ', '\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', ' ', ' ', '\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', '!', ' ', '\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', '7', '\n', '\013', 'j', 's', 'o', 'n', '_', 'f', 'o', 'r', 'm', 'a', 't', '\030', '(', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'H', '\000', 'R', '\n', 'J', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', '\022', '@', '\n', '\016', 'j', 's', 'o', 'n', '_', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', '\030', ')', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'R', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', 'H', '\000', 'R', '\r', 'J', 's', 'o', 'n', 'R', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', '\022', 'A', '\n', '\017', 'j', 's', 'o', 'n', '_', 'v', 'a', 'l', 'u', 'e', '_', 'e', 'x', 'p', 'r', '\030', '*', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'V', 'a', 'l', 'u', 'e', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\r', 'J', 's', 'o', 'n', 'V', 'a', 'l', 'u', 'e', 'E', 'x', 'p', 'r', '\022', 'S', '\n', '\025', 'j', 's', 'o', 'n', '_', 'c', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '_', 'e', 'x', 'p', 'r', '\030', '+', ' ', '\001', '(', '\013', '2', '\035', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\023', 'J', 's', 'o', 'n', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', 'E', 'x', 'p', 'r', '\022', 'G', '\n', '\021', 'j', 's', 'o', 'n', '_', 'i', 's', '_', 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\030', ',', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'I', 's', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'H', '\000', 'R', '\017', 'J', 's', 'o', 'n', 'I', 's', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', '=', '\n', '\r', 'j', 's', 'o', 'n', '_', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\030', '-', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'H', '\000', 'R', '\014', 'J', 's', 'o', 'n', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\022', '1', '\n', '\t', 'j', 's', 'o', 'n', '_', 'e', 'x', 'p', 'r', '\030', '.', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\010', 'J', 's', 'o', 'n', 'E', 'x', 'p', 'r', '\022', 'A', '\n', '\017', 'j', 's', 'o', 'n', '_', 't', 'a', 'b', 'l', 'e', '_', 'p', 'a', 't', 'h', '\030', '/', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 't', 'h', 'H', '\000', 'R', '\r', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 't', 'h', '\022', 'N', '\n', '\024', 'j', 's', 'o', 'n', '_', 't', 'a', 'b', 'l', 'e', '_', 'p', 'a', 't', 'h', '_', 's', 'c', 'a', 'n', '\030', '0', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 't', 'h', 'S', 'c', 'a', 'n', 'H', '\000', 'R', '\021', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 't', 'h', 'S', 'c', 'a', 'n', '\022', 'W', '\n', '\027', 'j', 's', 'o', 'n', '_', 't', 'a', 'b', 'l', 'e', '_', 's', 'i', 'b', 'l', 'i', 'n', 'g', '_', 'j', 'o', 'i', 'n', '\030', '1', ' ', '\001', '(', '\013', '2', '\036', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'S', 'i', 'b', 'l', 'i', 'n', 'g', 'J', 'o', 'i', 'n', 'H', '\000', 'R', '\024', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'S', 'i', 'b', 'l', 'i', 'n', 'g', 'J', 'o', 'i', 'n', '\022', '1', '\n', '\t', 'n', 'u', 'l', 'l', '_', 't', 'e', 's', 't', '\030', '2', ' ', '\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', '3', ' ', '\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', ':', '\n', '\014', 'm', 'e', 'r', 'g', 'e', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '4', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'M', 'e', 'r', 'g', 'e', 'A', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\013', 'M', 'e', 'r', 'g', 'e', 'A', 'c', 't', 'i', 'o', 'n', '\022', 'D', '\n', '\020', 'c', 'o', 'e', 'r', 'c', 'e', '_', 't', 'o', '_', 'd', 'o', 'm', 'a', 'i', 'n', '\030', '5', ' ', '\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', '6', ' ', '\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', '7', ' ', '\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', '8', ' ', '\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', '9', ' ', '\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', '=', ' ', '\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', '>', ' ', '\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', '?', ' ', '\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', '\'', '\n', '\005', 'q', 'u', 'e', 'r', 'y', '\030', '@', ' ', '\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', '1', '\n', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\030', 'A', ' ', '\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', '4', '\n', '\n', 'c', 'o', 'l', 'u', 'm', 'n', '_', 'r', 'e', 'f', '\030', 'B', ' ', '\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', '1', '\n', '\t', 'p', 'a', 'r', 'a', 'm', '_', 'r', 'e', 'f', '\030', 'C', ' ', '\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', '\006', 'a', '_', 'e', 'x', 'p', 'r', '\030', 'D', ' ', '\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', '1', '\n', '\t', 't', 'y', 'p', 'e', '_', 'c', 'a', 's', 't', '\030', 'E', ' ', '\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', '@', '\n', '\016', 'c', 'o', 'l', 'l', 'a', 't', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', 'F', ' ', '\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', '1', '\n', '\t', 'r', 'o', 'l', 'e', '_', 's', 'p', 'e', 'c', '\030', 'G', ' ', '\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', '1', '\n', '\t', 'f', 'u', 'n', 'c', '_', 'c', 'a', 'l', 'l', '\030', 'H', ' ', '\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', 'I', ' ', '\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', '3', '\n', '\t', 'a', '_', 'i', 'n', 'd', 'i', 'c', 'e', 's', '\030', 'J', ' ', '\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', 'K', ' ', '\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', 'L', ' ', '\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', '4', '\n', '\n', 'r', 'e', 's', '_', 't', 'a', 'r', 'g', 'e', 't', '\030', 'M', ' ', '\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', 'D', '\n', '\020', 'm', 'u', 'l', 't', 'i', '_', 'a', 's', 's', 'i', 'g', 'n', '_', 'r', 'e', 'f', '\030', 'N', ' ', '\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', '+', '\n', '\007', 's', 'o', 'r', 't', '_', 'b', 'y', '\030', 'O', ' ', '\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', '4', '\n', '\n', 'w', 'i', 'n', 'd', 'o', 'w', '_', 'd', 'e', 'f', '\030', 'P', ' ', '\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', 'C', '\n', '\017', 'r', 'a', 'n', 'g', 'e', '_', 's', 'u', 'b', 's', 'e', 'l', 'e', 'c', 't', '\030', 'Q', ' ', '\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', '@', '\n', '\016', 'r', 'a', 'n', 'g', 'e', '_', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\030', 'R', ' ', '\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', 'D', '\n', '\020', 'r', 'a', 'n', 'g', 'e', '_', 't', 'a', 'b', 'l', 'e', '_', 'f', 'u', 'n', 'c', '\030', 'S', ' ', '\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', 'N', '\n', '\024', 'r', 'a', 'n', 'g', 'e', '_', 't', 'a', 'b', 'l', 'e', '_', 'f', 'u', 'n', 'c', '_', 'c', 'o', 'l', '\030', 'T', ' ', '\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', 'J', '\n', '\022', 'r', 'a', 'n', 'g', 'e', '_', 't', 'a', 'b', 'l', 'e', '_', 's', 'a', 'm', 'p', 'l', 'e', '\030', 'U', ' ', '\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', '4', '\n', '\n', 'c', 'o', 'l', 'u', 'm', 'n', '_', 'd', 'e', 'f', '\030', 'V', ' ', '\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', 'G', '\n', '\021', 't', 'a', 'b', 'l', 'e', '_', 'l', 'i', 'k', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', 'W', ' ', '\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', '4', '\n', '\n', 'i', 'n', 'd', 'e', 'x', '_', 'e', 'l', 'e', 'm', '\030', 'X', ' ', '\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', '.', '\n', '\010', 'd', 'e', 'f', '_', 'e', 'l', 'e', 'm', '\030', 'Y', ' ', '\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', '@', '\n', '\016', 'l', 'o', 'c', 'k', 'i', 'n', 'g', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', 'Z', ' ', '\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', '=', '\n', '\r', 'x', 'm', 'l', '_', 's', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', '\030', '[', ' ', '\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', '@', '\n', '\016', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '_', 'e', 'l', 'e', 'm', '\030', '\\', ' ', '\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', '@', '\n', '\016', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '_', 's', 'p', 'e', 'c', '\030', ']', ' ', '\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', 'P', '\n', '\024', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '_', 'b', 'o', 'u', 'n', 'd', '_', 's', 'p', 'e', 'c', '\030', '^', ' ', '\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', 'S', '\n', '\025', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '_', 'r', 'a', 'n', 'g', 'e', '_', 'd', 'a', 't', 'u', 'm', '\030', '_', ' ', '\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', 'S', '\n', '\025', 's', 'i', 'n', 'g', 'l', 'e', '_', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '_', 's', 'p', 'e', 'c', '\030', '`', ' ', '\001', '(', '\013', '2', '\035', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'i', 'n', 'g', 'l', 'e', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'S', 'p', 'e', 'c', 'H', '\000', 'R', '\023', 'S', 'i', 'n', 'g', 'l', 'e', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'S', 'p', 'e', 'c', '\022', '=', '\n', '\r', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '_', 'c', 'm', 'd', '\030', 'a', ' ', '\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', 'A', '\n', '\017', 'r', 'a', 'n', 'g', 'e', '_', 't', 'b', 'l', '_', 'e', 'n', 't', 'r', 'y', '\030', 'b', ' ', '\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', 'L', '\n', '\022', 'r', 't', 'e', 'p', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', 'c', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'T', 'E', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', 'H', '\000', 'R', '\021', 'R', 'T', 'E', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', 'J', '\n', '\022', 'r', 'a', 'n', 'g', 'e', '_', 't', 'b', 'l', '_', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\030', 'd', ' ', '\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', 'M', '\n', '\023', 't', 'a', 'b', 'l', 'e', '_', 's', 'a', 'm', 'p', 'l', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', 'e', ' ', '\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', 'G', '\n', '\021', 'w', 'i', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', 'f', ' ', '\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', 'G', '\n', '\021', 's', 'o', 'r', 't', '_', 'g', 'r', 'o', 'u', 'p', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', 'g', ' ', '\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', 'h', ' ', '\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', 'i', ' ', '\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', 'A', '\n', '\017', 'r', 'o', 'w', '_', 'm', 'a', 'r', 'k', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', 'j', ' ', '\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', '7', '\n', '\013', 'w', 'i', 't', 'h', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', 'k', ' ', '\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', 'l', ' ', '\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', 'J', '\n', '\022', 'o', 'n', '_', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', 'm', ' ', '\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', 'F', '\n', '\020', 'c', 't', 'e', 's', 'e', 'a', 'r', 'c', 'h', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', 'n', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'T', 'E', 'S', 'e', 'a', 'r', 'c', 'h', 'C', 'l', 'a', 'u', 's', 'e', 'H', '\000', 'R', '\017', 'C', 'T', 'E', 'S', 'e', 'a', 'r', 'c', 'h', 'C', 'l', 'a', 'u', 's', 'e', '\022', 'C', '\n', '\017', 'c', 't', 'e', 'c', 'y', 'c', 'l', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', 'o', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'T', 'E', 'C', 'y', 'c', 'l', 'e', 'C', 'l', 'a', 'u', 's', 'e', 'H', '\000', 'R', '\016', 'C', 'T', 'E', 'C', 'y', 'c', 'l', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', 'G', '\n', '\021', 'c', 'o', 'm', 'm', 'o', 'n', '_', 't', 'a', 'b', 'l', 'e', '_', 'e', 'x', 'p', 'r', '\030', 'p', ' ', '\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', 'G', '\n', '\021', 'm', 'e', 'r', 'g', 'e', '_', 'w', 'h', 'e', 'n', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', 'q', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'M', 'e', 'r', 'g', 'e', 'W', 'h', 'e', 'n', 'C', 'l', 'a', 'u', 's', 'e', 'H', '\000', 'R', '\017', 'M', 'e', 'r', 'g', 'e', 'W', 'h', 'e', 'n', 'C', 'l', 'a', 'u', 's', 'e', '\022', 'L', '\n', '\022', 't', 'r', 'i', 'g', 'g', 'e', 'r', '_', 't', 'r', 'a', 'n', 's', 'i', 't', 'i', 'o', 'n', '\030', 'r', ' ', '\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', '7', '\n', '\013', 'j', 's', 'o', 'n', '_', 'o', 'u', 't', 'p', 'u', 't', '\030', 's', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'O', 'u', 't', 'p', 'u', 't', 'H', '\000', 'R', '\n', 'J', 's', 'o', 'n', 'O', 'u', 't', 'p', 'u', 't', '\022', '=', '\n', '\r', 'j', 's', 'o', 'n', '_', 'a', 'r', 'g', 'u', 'm', 'e', 'n', 't', '\030', 't', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'A', 'r', 'g', 'u', 'm', 'e', 'n', 't', 'H', '\000', 'R', '\014', 'J', 's', 'o', 'n', 'A', 'r', 'g', 'u', 'm', 'e', 'n', 't', '\022', '>', '\n', '\016', 'j', 's', 'o', 'n', '_', 'f', 'u', 'n', 'c', '_', 'e', 'x', 'p', 'r', '\030', 'u', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'F', 'u', 'n', 'c', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\014', 'J', 's', 'o', 'n', 'F', 'u', 'n', 'c', 'E', 'x', 'p', 'r', '\022', 'N', '\n', '\024', 'j', 's', 'o', 'n', '_', 't', 'a', 'b', 'l', 'e', '_', 'p', 'a', 't', 'h', '_', 's', 'p', 'e', 'c', '\030', 'v', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 't', 'h', 'S', 'p', 'e', 'c', 'H', '\000', 'R', '\021', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 't', 'h', 'S', 'p', 'e', 'c', '\022', '4', '\n', '\n', 'j', 's', 'o', 'n', '_', 't', 'a', 'b', 'l', 'e', '\030', 'w', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'H', '\000', 'R', '\t', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', '\022', 'G', '\n', '\021', 'j', 's', 'o', 'n', '_', 't', 'a', 'b', 'l', 'e', '_', 'c', 'o', 'l', 'u', 'm', 'n', '\030', 'x', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'C', 'o', 'l', 'u', 'm', 'n', 'H', '\000', 'R', '\017', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'C', 'o', 'l', 'u', 'm', 'n', '\022', '>', '\n', '\016', 'j', 's', 'o', 'n', '_', 'k', 'e', 'y', '_', 'v', 'a', 'l', 'u', 'e', '\030', 'y', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'K', 'e', 'y', 'V', 'a', 'l', 'u', 'e', 'H', '\000', 'R', '\014', 'J', 's', 'o', 'n', 'K', 'e', 'y', 'V', 'a', 'l', 'u', 'e', '\022', 'A', '\n', '\017', 'j', 's', 'o', 'n', '_', 'p', 'a', 'r', 's', 'e', '_', 'e', 'x', 'p', 'r', '\030', 'z', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'P', 'a', 'r', 's', 'e', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\r', 'J', 's', 'o', 'n', 'P', 'a', 'r', 's', 'e', 'E', 'x', 'p', 'r', '\022', 'D', '\n', '\020', 'j', 's', 'o', 'n', '_', 's', 'c', 'a', 'l', 'a', 'r', '_', 'e', 'x', 'p', 'r', '\030', '{', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'S', 'c', 'a', 'l', 'a', 'r', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\016', 'J', 's', 'o', 'n', 'S', 'c', 'a', 'l', 'a', 'r', 'E', 'x', 'p', 'r', '\022', 'M', '\n', '\023', 'j', 's', 'o', 'n', '_', 's', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', '_', 'e', 'x', 'p', 'r', '\030', '|', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'S', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\021', 'J', 's', 'o', 'n', 'S', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', 'E', 'x', 'p', 'r', '\022', 'Y', '\n', '\027', 'j', 's', 'o', 'n', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 'c', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\030', '}', ' ', '\001', '(', '\013', '2', '\037', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'O', 'b', 'j', 'e', 'c', 't', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', 'H', '\000', 'R', '\025', 'J', 's', 'o', 'n', 'O', 'b', 'j', 'e', 'c', 't', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\022', 'V', '\n', '\026', 'j', 's', 'o', 'n', '_', 'a', 'r', 'r', 'a', 'y', '_', 'c', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\030', '~', ' ', '\001', '(', '\013', '2', '\036', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'A', 'r', 'r', 'a', 'y', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', 'H', '\000', 'R', '\024', 'J', 's', 'o', 'n', 'A', 'r', 'r', 'a', 'y', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\022', 'f', '\n', '\034', 'j', 's', 'o', 'n', '_', 'a', 'r', 'r', 'a', 'y', '_', 'q', 'u', 'e', 'r', 'y', '_', 'c', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\030', '\177', ' ', '\001', '(', '\013', '2', '#', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'A', 'r', 'r', 'a', 'y', 'Q', 'u', 'e', 'r', 'y', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', 'H', '\000', 'R', '\031', 'J', 's', 'o', 'n', 'A', 'r', 'r', 'a', 'y', 'Q', 'u', 'e', 'r', 'y', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\022', 'Q', '\n', '\024', 'j', 's', 'o', 'n', '_', 'a', 'g', 'g', '_', 'c', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\030', '\200', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'A', 'g', 'g', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', 'H', '\000', 'R', '\022', 'J', 's', 'o', 'n', 'A', 'g', 'g', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\022', 'B', '\n', '\017', 'j', 's', 'o', 'n', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 'a', 'g', 'g', '\030', '\201', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'O', 'b', 'j', 'e', 'c', 't', 'A', 'g', 'g', 'H', '\000', 'R', '\r', 'J', 's', 'o', 'n', 'O', 'b', 'j', 'e', 'c', 't', 'A', 'g', 'g', '\022', '?', '\n', '\016', 'j', 's', 'o', 'n', '_', 'a', 'r', 'r', 'a', 'y', '_', 'a', 'g', 'g', '\030', '\202', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'A', 'r', 'r', 'a', 'y', 'A', 'g', 'g', 'H', '\000', 'R', '\014', 'J', 's', 'o', 'n', 'A', 'r', 'r', 'a', 'y', 'A', 'g', 'g', '\022', '/', '\n', '\010', 'r', 'a', 'w', '_', 's', 't', 'm', 't', '\030', '\203', '\001', ' ', '\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', '8', '\n', '\013', 'i', 'n', 's', 'e', 'r', 't', '_', 's', 't', 'm', 't', '\030', '\204', '\001', ' ', '\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', '8', '\n', '\013', 'd', 'e', 'l', 'e', 't', 'e', '_', 's', 't', 'm', 't', '\030', '\205', '\001', ' ', '\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', '8', '\n', '\013', 'u', 'p', 'd', 'a', 't', 'e', '_', 's', 't', 'm', 't', '\030', '\206', '\001', ' ', '\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', '5', '\n', '\n', 'm', 'e', 'r', 'g', 'e', '_', 's', 't', 'm', 't', '\030', '\207', '\001', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'M', 'e', 'r', 'g', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\t', 'M', 'e', 'r', 'g', 'e', 'S', 't', 'm', 't', '\022', '8', '\n', '\013', 's', 'e', 'l', 'e', 'c', 't', '_', 's', 't', 'm', 't', '\030', '\210', '\001', ' ', '\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', 'K', '\n', '\022', 's', 'e', 't', '_', 'o', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\211', '\001', ' ', '\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', '8', '\n', '\013', 'r', 'e', 't', 'u', 'r', 'n', '_', 's', 't', 'm', 't', '\030', '\212', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'e', 't', 'u', 'r', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\n', 'R', 'e', 't', 'u', 'r', 'n', 'S', 't', 'm', 't', '\022', '>', '\n', '\r', 'p', 'l', 'a', 's', 's', 'i', 'g', 'n', '_', 's', 't', 'm', 't', '\030', '\213', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'L', 'A', 's', 's', 'i', 'g', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\014', 'P', 'L', 'A', 's', 's', 'i', 'g', 'n', 'S', 't', 'm', 't', '\022', 'K', '\n', '\022', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 'c', 'h', 'e', 'm', 'a', '_', 's', 't', 'm', 't', '\030', '\214', '\001', ' ', '\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', 'E', '\n', '\020', 'a', 'l', 't', 'e', 'r', '_', 't', 'a', 'b', 'l', 'e', '_', 's', 't', 'm', 't', '\030', '\215', '\001', ' ', '\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', 'T', '\n', '\025', 'r', 'e', 'p', 'l', 'i', 'c', 'a', '_', 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', '_', 's', 't', 'm', 't', '\030', '\216', '\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', 'B', '\n', '\017', 'a', 'l', 't', 'e', 'r', '_', 't', 'a', 'b', 'l', 'e', '_', 'c', 'm', 'd', '\030', '\217', '\001', ' ', '\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', 'Q', '\n', '\024', 'a', 'l', 't', 'e', 'r', '_', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\220', '\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', 'H', '\n', '\021', 'a', 'l', 't', 'e', 'r', '_', 'd', 'o', 'm', 'a', 'i', 'n', '_', 's', 't', 'm', 't', '\030', '\221', '\001', ' ', '\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', '5', '\n', '\n', 'g', 'r', 'a', 'n', 't', '_', 's', 't', 'm', 't', '\030', '\222', '\001', ' ', '\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', 'E', '\n', '\020', 'o', 'b', 'j', 'e', 'c', 't', '_', 'w', 'i', 't', 'h', '_', 'a', 'r', 'g', 's', '\030', '\223', '\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', '\224', '\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', 'B', '\n', '\017', 'g', 'r', 'a', 'n', 't', '_', 'r', 'o', 'l', 'e', '_', 's', 't', 'm', 't', '\030', '\225', '\001', ' ', '\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', 'j', '\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', '\226', '\001', ' ', '\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', '2', '\n', '\t', 'c', 'o', 'p', 'y', '_', 's', 't', 'm', 't', '\030', '\227', '\001', ' ', '\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', 'H', '\n', '\021', 'v', 'a', 'r', 'i', 'a', 'b', 'l', 'e', '_', 's', 'e', 't', '_', 's', 't', 'm', 't', '\030', '\230', '\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', 'H', '\000', 'R', '\017', 'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 'e', 't', 'S', 't', 'm', 't', '\022', 'K', '\n', '\022', 'v', 'a', 'r', 'i', 'a', 'b', 'l', 'e', '_', 's', 'h', 'o', 'w', '_', 's', 't', 'm', 't', '\030', '\231', '\001', ' ', '\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', '8', '\n', '\013', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 't', 'm', 't', '\030', '\232', '\001', ' ', '\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', '\n', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\030', '\233', '\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', 'X', '\n', '\027', 'c', 'r', 'e', 'a', 't', 'e', '_', 't', 'a', 'b', 'l', 'e', '_', 's', 'p', 'a', 'c', 'e', '_', 's', 't', 'm', 't', '\030', '\234', '\001', ' ', '\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', 'R', '\n', '\025', 'd', 'r', 'o', 'p', '_', 't', 'a', 'b', 'l', 'e', '_', 's', 'p', 'a', 'c', 'e', '_', 's', 't', 'm', 't', '\030', '\235', '\001', ' ', '\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', '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', '\236', '\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', '\237', '\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', 'T', '\n', '\025', 'c', 'r', 'e', 'a', 't', 'e', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\240', '\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', '\241', '\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', '\242', '\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', 'B', '\n', '\017', 'c', 'r', 'e', 'a', 't', 'e', '_', 'f', 'd', 'w', '_', 's', 't', 'm', 't', '\030', '\243', '\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', '\244', '\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', '\245', '\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', '\246', '\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', '\031', 'c', 'r', 'e', 'a', 't', 'e', '_', 'f', 'o', 'r', 'e', 'i', 'g', 'n', '_', 't', 'a', 'b', 'l', 'e', '_', 's', 't', 'm', 't', '\030', '\247', '\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', '[', '\n', '\030', 'c', 'r', 'e', 'a', 't', 'e', '_', 'u', 's', 'e', 'r', '_', 'm', 'a', 'p', 'p', 'i', 'n', 'g', '_', 's', 't', 'm', 't', '\030', '\250', '\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', '\251', '\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', '\252', '\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', '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', '\253', '\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', 'K', '\n', '\022', 'c', 'r', 'e', 'a', 't', 'e', '_', 'p', 'o', 'l', 'i', 'c', 'y', '_', 's', 't', 'm', 't', '\030', '\254', '\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', '\255', '\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', '?', '\n', '\016', 'c', 'r', 'e', 'a', 't', 'e', '_', 'a', 'm', '_', 's', 't', 'm', 't', '\030', '\256', '\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', 'E', '\n', '\020', 'c', 'r', 'e', 'a', 't', 'e', '_', 't', 'r', 'i', 'g', '_', 's', 't', 'm', 't', '\030', '\257', '\001', ' ', '\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', 'U', '\n', '\026', 'c', 'r', 'e', 'a', 't', 'e', '_', 'e', 'v', 'e', 'n', 't', '_', 't', 'r', 'i', 'g', '_', 's', 't', 'm', 't', '\030', '\260', '\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', '\261', '\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', 'H', '\n', '\021', 'c', 'r', 'e', 'a', 't', 'e', '_', 'p', 'l', 'a', 'n', 'g', '_', 's', 't', 'm', 't', '\030', '\262', '\001', ' ', '\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', 'E', '\n', '\020', 'c', 'r', 'e', 'a', 't', 'e', '_', 'r', 'o', 'l', 'e', '_', 's', 't', 'm', 't', '\030', '\263', '\001', ' ', '\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', 'B', '\n', '\017', 'a', 'l', 't', 'e', 'r', '_', 'r', 'o', 'l', 'e', '_', 's', 't', 'm', 't', '\030', '\264', '\001', ' ', '\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', 'L', '\n', '\023', 'a', 'l', 't', 'e', 'r', '_', 'r', 'o', 'l', 'e', '_', 's', 'e', 't', '_', 's', 't', 'm', 't', '\030', '\265', '\001', ' ', '\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', '?', '\n', '\016', 'd', 'r', 'o', 'p', '_', 'r', 'o', 'l', 'e', '_', 's', 't', 'm', 't', '\030', '\266', '\001', ' ', '\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', 'B', '\n', '\017', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 'e', 'q', '_', 's', 't', 'm', 't', '\030', '\267', '\001', ' ', '\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', '\270', '\001', ' ', '\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', '8', '\n', '\013', 'd', 'e', 'f', 'i', 'n', 'e', '_', 's', 't', 'm', 't', '\030', '\271', '\001', ' ', '\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', 'K', '\n', '\022', 'c', 'r', 'e', 'a', 't', 'e', '_', 'd', 'o', 'm', 'a', 'i', 'n', '_', 's', 't', 'm', 't', '\030', '\272', '\001', ' ', '\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', 'O', '\n', '\024', 'c', 'r', 'e', 'a', 't', 'e', '_', 'o', 'p', '_', 'c', 'l', 'a', 's', 's', '_', 's', 't', 'm', 't', '\030', '\273', '\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', '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', 'O', '\n', '\024', 'c', 'r', 'e', 'a', 't', 'e', '_', 'o', 'p', '_', 'c', 'l', 'a', 's', 's', '_', 'i', 't', 'e', 'm', '\030', '\274', '\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', 'R', '\n', '\025', 'c', 'r', 'e', 'a', 't', 'e', '_', 'o', 'p', '_', 'f', 'a', 'm', 'i', 'l', 'y', '_', 's', 't', 'm', 't', '\030', '\275', '\001', ' ', '\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', 'O', '\n', '\024', 'a', 'l', 't', 'e', 'r', '_', 'o', 'p', '_', 'f', 'a', 'm', 'i', 'l', 'y', '_', 's', 't', 'm', 't', '\030', '\276', '\001', ' ', '\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', '2', '\n', '\t', 'd', 'r', 'o', 'p', '_', 's', 't', 'm', 't', '\030', '\277', '\001', ' ', '\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', '\300', '\001', ' ', '\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', '\301', '\001', ' ', '\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', '?', '\n', '\016', 's', 'e', 'c', '_', 'l', 'a', 'b', 'e', 'l', '_', 's', 't', 'm', 't', '\030', '\302', '\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', '\n', '\023', 'd', 'e', 'c', 'l', 'a', 'r', 'e', '_', 'c', 'u', 'r', 's', 'o', 'r', '_', 's', 't', 'm', 't', '\030', '\303', '\001', ' ', '\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', 'H', '\n', '\021', 'c', 'l', 'o', 's', 'e', '_', 'p', 'o', 'r', 't', 'a', 'l', '_', 's', 't', 'm', 't', '\030', '\304', '\001', ' ', '\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', '5', '\n', '\n', 'f', 'e', 't', 'c', 'h', '_', 's', 't', 'm', 't', '\030', '\305', '\001', ' ', '\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', '5', '\n', '\n', 'i', 'n', 'd', 'e', 'x', '_', 's', 't', 'm', 't', '\030', '\306', '\001', ' ', '\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', 'H', '\n', '\021', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 't', 'a', 't', 's', '_', 's', 't', 'm', 't', '\030', '\307', '\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', '5', '\n', '\n', 's', 't', 'a', 't', 's', '_', 'e', 'l', 'e', 'm', '\030', '\310', '\001', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 't', 'a', 't', 's', 'E', 'l', 'e', 'm', 'H', '\000', 'R', '\t', 'S', 't', 'a', 't', 's', 'E', 'l', 'e', 'm', '\022', 'E', '\n', '\020', 'a', 'l', 't', 'e', 'r', '_', 's', 't', 'a', 't', 's', '_', 's', 't', 'm', 't', '\030', '\311', '\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', 'Q', '\n', '\024', 'c', 'r', 'e', 'a', 't', 'e', '_', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\312', '\001', ' ', '\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', '\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', 'N', '\n', '\023', 'a', 'l', 't', 'e', 'r', '_', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\314', '\001', ' ', '\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', '\315', '\001', ' ', '\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', 'H', '\n', '\021', 'i', 'n', 'l', 'i', 'n', 'e', '_', 'c', 'o', 'd', 'e', '_', 'b', 'l', 'o', 'c', 'k', '\030', '\316', '\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', '2', '\n', '\t', 'c', 'a', 'l', 'l', '_', 's', 't', 'm', 't', '\030', '\317', '\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', ';', '\n', '\014', 'c', 'a', 'l', 'l', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\320', '\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', '8', '\n', '\013', 'r', 'e', 'n', 'a', 'm', 'e', '_', 's', 't', 'm', 't', '\030', '\321', '\001', ' ', '\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', '^', '\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', '\322', '\001', ' ', '\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', '[', '\n', '\030', 'a', 'l', 't', 'e', 'r', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 's', 'c', 'h', 'e', 'm', 'a', '_', 's', 't', 'm', 't', '\030', '\323', '\001', ' ', '\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', 'E', '\n', '\020', 'a', 'l', 't', 'e', 'r', '_', 'o', 'w', 'n', 'e', 'r', '_', 's', 't', 'm', 't', '\030', '\324', '\001', ' ', '\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', 'N', '\n', '\023', 'a', 'l', 't', 'e', 'r', '_', 'o', 'p', 'e', 'r', 'a', 't', 'o', 'r', '_', 's', 't', 'm', 't', '\030', '\325', '\001', ' ', '\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', 'B', '\n', '\017', 'a', 'l', 't', 'e', 'r', '_', 't', 'y', 'p', 'e', '_', 's', 't', 'm', 't', '\030', '\326', '\001', ' ', '\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', '2', '\n', '\t', 'r', 'u', 'l', 'e', '_', 's', 't', 'm', 't', '\030', '\327', '\001', ' ', '\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', '8', '\n', '\013', 'n', 'o', 't', 'i', 'f', 'y', '_', 's', 't', 'm', 't', '\030', '\330', '\001', ' ', '\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', '8', '\n', '\013', 'l', 'i', 's', 't', 'e', 'n', '_', 's', 't', 'm', 't', '\030', '\331', '\001', ' ', '\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', '\332', '\001', ' ', '\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', 'G', '\n', '\020', 't', 'r', 'a', 'n', 's', 'a', 'c', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\333', '\001', ' ', '\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', 'N', '\n', '\023', 'c', 'o', 'm', 'p', 'o', 's', 'i', 't', 'e', '_', 't', 'y', 'p', 'e', '_', 's', 't', 'm', 't', '\030', '\334', '\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', '\335', '\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', '\336', '\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', '\337', '\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', '2', '\n', '\t', 'v', 'i', 'e', 'w', '_', 's', 't', 'm', 't', '\030', '\340', '\001', ' ', '\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', '2', '\n', '\t', 'l', 'o', 'a', 'd', '_', 's', 't', 'm', 't', '\030', '\341', '\001', ' ', '\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', '>', '\n', '\r', 'c', 'r', 'e', 'a', 't', 'e', 'd', 'b', '_', 's', 't', 'm', 't', '\030', '\342', '\001', ' ', '\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', 'N', '\n', '\023', 'a', 'l', 't', 'e', 'r', '_', 'd', 'a', 't', 'a', 'b', 'a', 's', 'e', '_', 's', 't', 'm', 't', '\030', '\343', '\001', ' ', '\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', 'q', '\n', ' ', 'a', 'l', 't', 'e', 'r', '_', 'd', 'a', 't', 'a', 'b', 'a', 's', 'e', '_', 'r', 'e', 'f', 'r', 'e', 's', 'h', '_', 'c', 'o', 'l', 'l', '_', 's', 't', 'm', 't', '\030', '\344', '\001', ' ', '\001', '(', '\013', '2', '&', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'D', 'a', 't', 'a', 'b', 'a', 's', 'e', 'R', 'e', 'f', 'r', 'e', 's', 'h', 'C', 'o', 'l', 'l', 'S', 't', 'm', 't', 'H', '\000', 'R', '\034', 'A', 'l', 't', 'e', 'r', 'D', 'a', 't', 'a', 'b', 'a', 's', 'e', 'R', 'e', 'f', 'r', 'e', 's', 'h', 'C', 'o', 'l', 'l', 'S', 't', 'm', 't', '\022', 'X', '\n', '\027', 'a', 'l', 't', 'e', 'r', '_', 'd', 'a', 't', 'a', 'b', 'a', 's', 'e', '_', 's', 'e', 't', '_', 's', 't', 'm', 't', '\030', '\345', '\001', ' ', '\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', '8', '\n', '\013', 'd', 'r', 'o', 'p', 'd', 'b', '_', 's', 't', 'm', 't', '\030', '\346', '\001', ' ', '\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', 'H', '\n', '\021', 'a', 'l', 't', 'e', 'r', '_', 's', 'y', 's', 't', 'e', 'm', '_', 's', 't', 'm', 't', '\030', '\347', '\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', ';', '\n', '\014', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', 't', 'm', 't', '\030', '\350', '\001', ' ', '\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', '8', '\n', '\013', 'v', 'a', 'c', 'u', 'u', 'm', '_', 's', 't', 'm', 't', '\030', '\351', '\001', ' ', '\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', 'D', '\n', '\017', 'v', 'a', 'c', 'u', 'u', 'm', '_', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\352', '\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', ';', '\n', '\014', 'e', 'x', 'p', 'l', 'a', 'i', 'n', '_', 's', 't', 'm', 't', '\030', '\353', '\001', ' ', '\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', 'O', '\n', '\024', 'c', 'r', 'e', 'a', 't', 'e', '_', 't', 'a', 'b', 'l', 'e', '_', 'a', 's', '_', 's', 't', 'm', 't', '\030', '\354', '\001', ' ', '\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', 'R', '\n', '\025', 'r', 'e', 'f', 'r', 'e', 's', 'h', '_', 'm', 'a', 't', '_', 'v', 'i', 'e', 'w', '_', 's', 't', 'm', 't', '\030', '\355', '\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', 'E', '\n', '\020', 'c', 'h', 'e', 'c', 'k', '_', 'p', 'o', 'i', 'n', 't', '_', 's', 't', 'm', 't', '\030', '\356', '\001', ' ', '\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', ';', '\n', '\014', 'd', 'i', 's', 'c', 'a', 'r', 'd', '_', 's', 't', 'm', 't', '\030', '\357', '\001', ' ', '\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', '2', '\n', '\t', 'l', 'o', 'c', 'k', '_', 's', 't', 'm', 't', '\030', '\360', '\001', ' ', '\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', 'Q', '\n', '\024', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '_', 's', 'e', 't', '_', 's', 't', 'm', 't', '\030', '\361', '\001', ' ', '\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', '\362', '\001', ' ', '\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', 'W', '\n', '\026', 'c', 'r', 'e', 'a', 't', 'e', '_', 'c', 'o', 'n', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\363', '\001', ' ', '\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', 'E', '\n', '\020', 'c', 'r', 'e', 'a', 't', 'e', '_', 'c', 'a', 's', 't', '_', 's', 't', 'm', 't', '\030', '\364', '\001', ' ', '\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', 'T', '\n', '\025', 'c', 'r', 'e', 'a', 't', 'e', '_', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', '_', 's', 't', 'm', 't', '\030', '\365', '\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', '\014', 'p', 'r', 'e', 'p', 'a', 'r', 'e', '_', 's', 't', 'm', 't', '\030', '\366', '\001', ' ', '\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', '\367', '\001', ' ', '\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', 'D', '\n', '\017', 'd', 'e', 'a', 'l', 'l', 'o', 'c', 'a', 't', 'e', '_', 's', 't', 'm', 't', '\030', '\370', '\001', ' ', '\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', 'B', '\n', '\017', 'd', 'r', 'o', 'p', '_', 'o', 'w', 'n', 'e', 'd', '_', 's', 't', 'm', 't', '\030', '\371', '\001', ' ', '\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', 'N', '\n', '\023', 'r', 'e', 'a', 's', 's', 'i', 'g', 'n', '_', 'o', 'w', 'n', 'e', 'd', '_', 's', 't', 'm', 't', '\030', '\372', '\001', ' ', '\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', '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', '\373', '\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', '\374', '\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', 'J', '\n', '\021', 'p', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', '_', 't', 'a', 'b', 'l', 'e', '\030', '\375', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'H', '\000', 'R', '\020', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'T', 'a', 'b', 'l', 'e', '\022', 'Q', '\n', '\024', 'p', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', '_', 'o', 'b', 'j', '_', 's', 'p', 'e', 'c', '\030', '\376', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'O', 'b', 'j', 'S', 'p', 'e', 'c', 'H', '\000', 'R', '\022', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'O', 'b', 'j', 'S', 'p', 'e', 'c', '\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', '\377', '\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', '\200', '\002', ' ', '\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', '\201', '\002', ' ', '\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', '\202', '\002', ' ', '\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', '\203', '\002', ' ', '\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', '.', '\n', '\007', 'i', 'n', 't', 'e', 'g', 'e', 'r', '\030', '\204', '\002', ' ', '\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', '\205', '\002', ' ', '\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', '\007', 'b', 'o', 'o', 'l', 'e', 'a', 'n', '\030', '\206', '\002', ' ', '\001', '(', '\013', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'B', 'o', 'o', 'l', 'e', 'a', 'n', 'H', '\000', 'R', '\007', 'B', 'o', 'o', 'l', 'e', 'a', 'n', '\022', '+', '\n', '\006', 's', 't', 'r', 'i', 'n', 'g', '\030', '\207', '\002', ' ', '\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', '\210', '\002', ' ', '\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', 'l', 'i', 's', 't', '\030', '\211', '\002', ' ', '\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', '\212', '\002', ' ', '\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', '\213', '\002', ' ', '\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', '\022', '.', '\n', '\007', 'a', '_', 'c', 'o', 'n', 's', 't', '\030', '\214', '\002', ' ', '\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', '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', '\"', '\025', '\n', '\005', 'F', 'l', 'o', 'a', 't', '\022', '\014', '\n', '\004', 'f', 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\t', '\"', '\032', '\n', '\007', 'B', 'o', 'o', 'l', 'e', 'a', 'n', '\022', '\017', '\n', '\007', 'b', 'o', 'o', 'l', 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\010', '\"', '\026', '\n', '\006', 'S', 't', 'r', 'i', 'n', 'g', '\022', '\014', '\n', '\004', 's', 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\t', '\"', '\032', '\n', '\t', 'B', 'i', 't', 'S', 't', 'r', 'i', 'n', 'g', '\022', '\r', '\n', '\005', 'b', 's', 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\t', '\"', '%', '\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', '\"', '\344', '\001', '\n', '\007', 'A', '_', 'C', 'o', 'n', 's', 't', '\022', '!', '\n', '\004', 'i', 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'n', 't', 'e', 'g', 'e', 'r', 'H', '\000', '\022', '\037', '\n', '\004', 'f', 'v', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'F', 'l', 'o', 'a', 't', 'H', '\000', '\022', '$', '\n', '\007', 'b', 'o', 'o', 'l', 'v', 'a', 'l', '\030', '\003', ' ', '\001', '(', '\013', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'B', 'o', 'o', 'l', 'e', 'a', 'n', 'H', '\000', '\022', ' ', '\n', '\004', 's', 'v', 'a', 'l', '\030', '\004', ' ', '\001', '(', '\013', '2', '\020', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 't', 'r', 'i', 'n', 'g', 'H', '\000', '\022', '$', '\n', '\005', 'b', 's', 'v', 'a', 'l', '\030', '\005', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'B', 'i', 't', 'S', 't', 'r', 'i', 'n', 'g', 'H', '\000', '\022', '\016', '\n', '\006', 'i', 's', 'n', 'u', 'l', 'l', '\030', '\n', ' ', '\001', '(', '\010', '\022', '\020', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\013', ' ', '\001', '(', '\005', 'B', '\005', '\n', '\003', 'v', 'a', 'l', '\"', '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', '\"', '\364', '\005', '\n', '\t', 'T', 'a', 'b', 'l', 'e', 'F', 'u', 'n', 'c', '\022', '3', '\n', '\010', 'f', 'u', 'n', 'c', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'a', 'b', 'l', 'e', 'F', 'u', 'n', 'c', 'T', 'y', 'p', 'e', 'R', '\010', 'f', 'u', 'n', 'c', 't', 'y', 'p', 'e', '\022', '(', '\n', '\007', 'n', 's', '_', 'u', 'r', 'i', 's', '\030', '\002', ' ', '\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', '\003', ' ', '\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', '\004', ' ', '\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', '\005', ' ', '\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', '\006', ' ', '\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', '\007', ' ', '\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', '\010', ' ', '\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', '\t', ' ', '\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', '\n', ' ', '\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', '\013', ' ', '\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', '0', '\n', '\013', 'c', 'o', 'l', 'v', 'a', 'l', 'e', 'x', 'p', 'r', 's', '\030', '\014', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'c', 'o', 'l', 'v', 'a', 'l', 'e', 'x', 'p', 'r', 's', '\022', '8', '\n', '\017', 'p', 'a', 's', 's', 'i', 'n', 'g', 'v', 'a', 'l', 'e', 'x', 'p', 'r', 's', '\030', '\r', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\017', 'p', 'a', 's', 's', 'i', 'n', 'g', 'v', 'a', 'l', 'e', 'x', 'p', 'r', 's', '\022', '\032', '\n', '\010', 'n', 'o', 't', 'n', 'u', 'l', 'l', 's', '\030', '\016', ' ', '\003', '(', '\004', 'R', '\010', 'n', 'o', 't', 'n', 'u', 'l', 'l', 's', '\022', '\"', '\n', '\004', 'p', 'l', 'a', 'n', '\030', '\017', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'p', 'l', 'a', 'n', '\022', '$', '\n', '\r', 'o', 'r', 'd', 'i', 'n', 'a', 'l', 'i', 't', 'y', 'c', 'o', 'l', '\030', '\020', ' ', '\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', '\021', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\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', '\"', '\225', '\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', '(', '\005', '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', '\016', 'v', 'a', 'r', 'n', 'u', 'l', 'l', 'i', 'n', 'g', 'r', 'e', 'l', 's', '\030', '\007', ' ', '\003', '(', '\004', 'R', '\016', 'v', 'a', 'r', 'n', 'u', 'l', 'l', 'i', 'n', 'g', 'r', 'e', 'l', 's', '\022', ' ', '\n', '\013', 'v', 'a', 'r', 'l', 'e', 'v', 'e', 'l', 's', 'u', 'p', '\030', '\010', ' ', '\001', '(', '\r', 'R', '\013', 'v', 'a', 'r', 'l', 'e', 'v', 'e', 'l', 's', 'u', 'p', '\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', '\"', '\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', '\"', '\262', '\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', '0', '\n', '\013', 'a', 'g', 'g', 'a', 'r', 'g', 't', 'y', 'p', 'e', 's', '\030', '\006', ' ', '\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', '\007', ' ', '\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', '\010', ' ', '\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', '\t', ' ', '\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', '\n', ' ', '\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', '\013', ' ', '\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', '\014', ' ', '\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', '\r', ' ', '\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', '\016', ' ', '\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', '\017', ' ', '\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', '\020', ' ', '\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', '\024', '\n', '\005', 'a', 'g', 'g', 'n', 'o', '\030', '\021', ' ', '\001', '(', '\005', 'R', '\005', 'a', 'g', 'g', 'n', 'o', '\022', '\036', '\n', '\n', 'a', 'g', 'g', 't', 'r', 'a', 'n', 's', 'n', 'o', '\030', '\022', ' ', '\001', '(', '\005', 'R', '\n', 'a', 'g', 'g', 't', 'r', 'a', 'n', 's', 'n', 'o', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\023', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\266', '\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', '\013', 'a', 'g', 'g', 'l', 'e', 'v', 'e', 'l', 's', 'u', 'p', '\030', '\004', ' ', '\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', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\221', '\003', '\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', '3', '\n', '\r', 'r', 'u', 'n', '_', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\030', '\010', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'r', 'u', 'n', 'C', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\022', '\026', '\n', '\006', 'w', 'i', 'n', 'r', 'e', 'f', '\030', '\t', ' ', '\001', '(', '\r', 'R', '\006', 'w', 'i', 'n', 'r', 'e', 'f', '\022', '\030', '\n', '\007', 'w', 'i', 'n', 's', 't', 'a', 'r', '\030', '\n', ' ', '\001', '(', '\010', 'R', '\007', 'w', 'i', 'n', 's', 't', 'a', 'r', '\022', '\026', '\n', '\006', 'w', 'i', 'n', 'a', 'g', 'g', '\030', '\013', ' ', '\001', '(', '\010', 'R', '\006', 'w', 'i', 'n', 'a', 'g', 'g', '\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', '\"', '\262', '\001', '\n', '\026', 'W', 'i', 'n', 'd', 'o', 'w', 'F', 'u', 'n', 'c', 'R', 'u', 'n', 'C', 'o', 'n', 'd', 'i', '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', '\022', '\n', '\004', 'o', 'p', 'n', 'o', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\004', 'o', 'p', 'n', 'o', '\022', ' ', '\n', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\036', '\n', '\n', 'w', 'f', 'u', 'n', 'c', '_', 'l', 'e', 'f', 't', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\n', 'w', 'f', 'u', 'n', 'c', '_', 'l', 'e', 'f', 't', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\005', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\"', '\210', '\001', '\n', '\020', 'M', 'e', 'r', 'g', 'e', 'S', 'u', 'p', 'p', 'o', 'r', 't', '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', '\030', '\n', '\007', 'm', 's', 'f', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\007', 'm', 's', 'f', 't', 'y', 'p', 'e', '\022', '\034', '\n', '\t', 'm', 's', 'f', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\t', 'm', 's', 'f', 'c', 'o', 'l', 'l', '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', '\"', '\257', '\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', '\036', '\n', '\n', 'r', 'e', 'f', 'r', 'e', 's', 't', 'y', 'p', 'e', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\n', 'r', 'e', 'f', 'r', 'e', 's', 't', 'y', 'p', 'e', '\022', '\034', '\n', '\t', 'r', 'e', 'f', 't', 'y', 'p', 'm', 'o', 'd', '\030', '\005', ' ', '\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', '\006', ' ', '\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', '\007', ' ', '\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', '\010', ' ', '\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', '\t', ' ', '\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', '\n', ' ', '\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', '\"', '\374', '\001', '\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', '\"', '\n', '\014', 'o', 'p', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\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', '\004', ' ', '\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', '\005', ' ', '\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', '\006', ' ', '\001', '(', '\r', 'R', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\007', ' ', '\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', '\010', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\202', '\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', '\"', '\n', '\014', 'o', 'p', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\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', '\004', ' ', '\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', '\005', ' ', '\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', '\006', ' ', '\001', '(', '\r', 'R', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\007', ' ', '\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', '\010', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\200', '\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', '\"', '\n', '\014', 'o', 'p', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\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', '\004', ' ', '\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', '\005', ' ', '\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', '\006', ' ', '\001', '(', '\r', 'R', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\007', ' ', '\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', '\010', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\302', '\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', '\025', '\n', '\006', 'u', 's', 'e', '_', 'o', 'r', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\005', 'u', 's', 'e', 'O', 'r', '\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', '\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', '\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', '\"', '\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', '\"', '\375', '\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', '\026', '\n', '\006', 'i', 'n', 'd', 'e', 'n', 't', '\030', '\010', ' ', '\001', '(', '\010', 'R', '\006', 'i', 'n', 'd', 'e', 'n', 't', '\022', '\022', '\n', '\004', 't', 'y', 'p', 'e', '\030', '\t', ' ', '\001', '(', '\r', 'R', '\004', 't', 'y', 'p', 'e', '\022', '\026', '\n', '\006', 't', 'y', 'p', 'm', 'o', 'd', '\030', '\n', ' ', '\001', '(', '\005', 'R', '\006', 't', 'y', 'p', 'm', 'o', 'd', '\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', '\"', '\230', '\001', '\n', '\n', 'J', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', '\022', ':', '\n', '\013', 'f', 'o', 'r', 'm', 'a', 't', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'T', 'y', 'p', 'e', 'R', '\013', 'f', 'o', 'r', 'm', 'a', 't', '_', 't', 'y', 'p', 'e', '\022', '2', '\n', '\010', 'e', 'n', 'c', 'o', 'd', 'i', 'n', 'g', '\030', '\002', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'E', 'n', 'c', 'o', 'd', 'i', 'n', 'g', 'R', '\010', 'e', 'n', 'c', 'o', 'd', 'i', 'n', 'g', '\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', '\"', 'k', '\n', '\r', 'J', 's', 'o', 'n', 'R', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', '\022', ',', '\n', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'R', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\022', '\024', '\n', '\005', 't', 'y', 'p', 'i', 'd', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\005', 't', 'y', 'p', 'i', 'd', '\022', '\026', '\n', '\006', 't', 'y', 'p', 'm', 'o', 'd', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\006', 't', 'y', 'p', 'm', 'o', 'd', '\"', '\241', '\001', '\n', '\r', 'J', 's', 'o', 'n', 'V', 'a', 'l', 'u', 'e', 'E', 'x', 'p', 'r', '\022', '*', '\n', '\010', 'r', 'a', 'w', '_', 'e', 'x', 'p', 'r', '\030', '\001', ' ', '\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', '6', '\n', '\016', 'f', 'o', 'r', 'm', 'a', 't', 't', 'e', 'd', '_', 'e', 'x', 'p', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\016', 'f', 'o', 'r', 'm', 'a', 't', 't', 'e', 'd', '_', 'e', 'x', 'p', 'r', '\022', ',', '\n', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'R', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\"', '\361', '\002', '\n', '\023', 'J', 's', 'o', 'n', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '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', '1', '\n', '\004', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\016', '2', '\035', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', 'T', 'y', 'p', 'e', 'R', '\004', 't', 'y', 'p', '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', '\"', '\n', '\004', 'f', 'u', 'n', 'c', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'f', 'u', 'n', 'c', '\022', '*', '\n', '\010', 'c', 'o', 'e', 'r', 'c', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'c', 'o', 'e', 'r', 'c', 'i', 'o', 'n', '\022', '5', '\n', '\t', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', '\030', '\006', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'R', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', 'R', '\t', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', '\022', '&', '\n', '\016', 'a', 'b', 's', 'e', 'n', 't', '_', 'o', 'n', '_', 'n', 'u', 'l', 'l', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\016', 'a', 'b', 's', 'e', 'n', 't', '_', 'o', 'n', '_', 'n', 'u', 'l', 'l', '\022', '\026', '\n', '\006', 'u', 'n', 'i', 'q', 'u', 'e', '\030', '\010', ' ', '\001', '(', '\010', 'R', '\006', 'u', 'n', 'i', 'q', 'u', 'e', '\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', '\"', '\330', '\001', '\n', '\017', 'J', 's', 'o', 'n', 'I', 's', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', '\"', '\n', '\004', 'e', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'e', 'x', 'p', 'r', '\022', ',', '\n', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'R', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\022', '5', '\n', '\t', 'i', 't', 'e', 'm', '_', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\016', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'V', 'a', 'l', 'u', 'e', 'T', 'y', 'p', 'e', 'R', '\t', 'i', 't', 'e', 'm', '_', 't', 'y', 'p', 'e', '\022', ' ', '\n', '\013', 'u', 'n', 'i', 'q', 'u', 'e', '_', 'k', 'e', 'y', 's', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\013', 'u', 'n', 'i', 'q', 'u', 'e', '_', 'k', 'e', 'y', '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', '\"', '\230', '\001', '\n', '\014', 'J', 's', 'o', 'n', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\022', '0', '\n', '\005', 'b', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'T', 'y', 'p', 'e', 'R', '\005', 'b', 't', 'y', 'p', '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', '\026', '\n', '\006', 'c', 'o', 'e', 'r', 'c', 'e', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\006', 'c', 'o', 'e', 'r', 'c', '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', '\"', '\372', '\005', '\n', '\010', 'J', 's', 'o', 'n', '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', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'E', 'x', 'p', 'r', 'O', 'p', 'R', '\002', 'o', 'p', '\022', ' ', '\n', '\013', 'c', 'o', 'l', 'u', 'm', 'n', '_', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\013', 'c', 'o', 'l', 'u', 'm', 'n', '_', 'n', 'a', 'm', 'e', '\022', '6', '\n', '\016', 'f', 'o', 'r', 'm', 'a', 't', 't', 'e', 'd', '_', 'e', 'x', 'p', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\016', 'f', 'o', 'r', 'm', 'a', 't', 't', 'e', 'd', '_', 'e', 'x', 'p', 'r', '\022', ',', '\n', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\005', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'R', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\022', ',', '\n', '\t', 'p', 'a', 't', 'h', '_', 's', 'p', 'e', 'c', '\030', '\006', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'p', 'a', 't', 'h', '_', 's', 'p', 'e', 'c', '\022', '5', '\n', '\t', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', '\030', '\007', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'R', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', 'R', '\t', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', '\022', '4', '\n', '\r', 'p', 'a', 's', 's', 'i', 'n', 'g', '_', 'n', 'a', 'm', 'e', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'p', 'a', 's', 's', 'i', 'n', 'g', '_', 'n', 'a', 'm', 'e', 's', '\022', '6', '\n', '\016', 'p', 'a', 's', 's', 'i', 'n', 'g', '_', 'v', 'a', 'l', 'u', 'e', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\016', 'p', 'a', 's', 's', 'i', 'n', 'g', '_', 'v', 'a', 'l', 'u', 'e', 's', '\022', '2', '\n', '\010', 'o', 'n', '_', 'e', 'm', 'p', 't', 'y', '\030', '\n', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'o', 'n', '_', 'e', 'm', 'p', 't', 'y', '\022', '2', '\n', '\010', 'o', 'n', '_', 'e', 'r', 'r', 'o', 'r', '\030', '\013', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'o', 'n', '_', 'e', 'r', 'r', 'o', 'r', '\022', '(', '\n', '\017', 'u', 's', 'e', '_', 'i', 'o', '_', 'c', 'o', 'e', 'r', 'c', 'i', 'o', 'n', '\030', '\014', ' ', '\001', '(', '\010', 'R', '\017', 'u', 's', 'e', '_', 'i', 'o', '_', 'c', 'o', 'e', 'r', 'c', 'i', 'o', 'n', '\022', ',', '\n', '\021', 'u', 's', 'e', '_', 'j', 's', 'o', 'n', '_', 'c', 'o', 'e', 'r', 'c', 'i', 'o', 'n', '\030', '\r', ' ', '\001', '(', '\010', 'R', '\021', 'u', 's', 'e', '_', 'j', 's', 'o', 'n', '_', 'c', 'o', 'e', 'r', 'c', 'i', 'o', 'n', '\022', '/', '\n', '\007', 'w', 'r', 'a', 'p', 'p', 'e', 'r', '\030', '\016', ' ', '\001', '(', '\016', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'W', 'r', 'a', 'p', 'p', 'e', 'r', 'R', '\007', 'w', 'r', 'a', 'p', 'p', 'e', 'r', '\022', ' ', '\n', '\013', 'o', 'm', 'i', 't', '_', 'q', 'u', 'o', 't', 'e', 's', '\030', '\017', ' ', '\001', '(', '\010', 'R', '\013', 'o', 'm', 'i', 't', '_', 'q', 'u', 'o', 't', 'e', 's', '\022', '\034', '\n', '\t', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\020', ' ', '\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', '\021', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '#', '\n', '\r', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 't', 'h', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\"', '\342', '\001', '\n', '\021', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 't', 'h', 'S', 'c', 'a', 'n', '\022', '\"', '\n', '\004', 'p', 'l', 'a', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'p', 'l', 'a', 'n', '\022', '+', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\002', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 't', 'h', 'R', '\004', 'p', 'a', 't', 'h', '\022', '$', '\n', '\016', 'e', 'r', 'r', 'o', 'r', '_', 'o', 'n', '_', 'e', 'r', 'r', 'o', 'r', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\014', 'e', 'r', 'r', 'o', 'r', 'O', 'n', 'E', 'r', 'r', 'o', 'r', '\022', '$', '\n', '\005', 'c', 'h', 'i', 'l', 'd', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'c', 'h', 'i', 'l', 'd', '\022', '\027', '\n', '\007', 'c', 'o', 'l', '_', 'm', 'i', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\006', 'c', 'o', 'l', 'M', 'i', 'n', '\022', '\027', '\n', '\007', 'c', 'o', 'l', '_', 'm', 'a', 'x', '\030', '\006', ' ', '\001', '(', '\005', 'R', '\006', 'c', 'o', 'l', 'M', 'a', 'x', '\"', '\206', '\001', '\n', '\024', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'S', 'i', 'b', 'l', 'i', 'n', 'g', 'J', 'o', 'i', 'n', '\022', '\"', '\n', '\004', 'p', 'l', 'a', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'p', 'l', 'a', 'n', '\022', '$', '\n', '\005', 'l', 'p', 'l', 'a', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'l', 'p', 'l', 'a', 'n', '\022', '$', '\n', '\005', 'r', 'p', 'l', 'a', 'n', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'r', 'p', 'l', 'a', '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', '\"', '\274', '\002', '\n', '\013', 'M', 'e', 'r', 'g', 'e', 'A', 'c', 't', 'i', 'o', 'n', '\022', '7', '\n', '\n', 'm', 'a', 't', 'c', 'h', '_', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'M', 'e', 'r', 'g', 'e', 'M', 'a', 't', 'c', 'h', 'K', 'i', 'n', 'd', 'R', '\t', 'm', 'a', 't', 'c', 'h', 'K', 'i', 'n', 'd', '\022', '4', '\n', '\014', 'c', 'o', 'm', 'm', 'a', 'n', 'd', '_', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\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', '4', '\n', '\010', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '\030', '\003', ' ', '\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', '\"', '\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', '\013', 't', 'a', 'r', 'g', 'e', 't', '_', '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', 'r', 'g', 'e', 't', 'L', 'i', 's', 't', '\022', '3', '\n', '\r', 'u', 'p', 'd', 'a', 't', 'e', '_', 'c', 'o', 'l', 'n', 'o', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'u', 'p', 'd', 'a', 't', 'e', 'C', 'o', 'l', 'n', 'o', 's', '\"', '\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', '\"', '\370', '\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', '\020', 'j', 'o', 'i', 'n', '_', 'u', 's', 'i', 'n', 'g', '_', 'a', 'l', 'i', 'a', 's', '\030', '\006', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 'i', 'a', 's', 'R', '\020', 'j', 'o', 'i', 'n', '_', 'u', 's', 'i', 'n', 'g', '_', 'a', 'l', 'i', 'a', 's', '\022', '$', '\n', '\005', 'q', 'u', 'a', 'l', 's', '\030', '\007', ' ', '\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', '\010', ' ', '\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', '\t', ' ', '\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', '\"', '\306', '\017', '\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', '\033', '\n', '\t', 'i', 's', '_', 'r', 'e', 't', 'u', 'r', 'n', '\030', '\017', ' ', '\001', '(', '\010', 'R', '\010', 'i', 's', 'R', 'e', 't', 'u', 'r', 'n', '\022', ')', '\n', '\010', 'c', 't', 'e', '_', 'l', 'i', 's', 't', '\030', '\020', ' ', '\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', '\021', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'r', 't', 'a', 'b', 'l', 'e', '\022', '2', '\n', '\014', 'r', 't', 'e', 'p', 'e', 'r', 'm', 'i', 'n', 'f', 'o', 's', '\030', '\022', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'r', 't', 'e', 'p', 'e', 'r', 'm', 'i', 'n', 'f', 'o', 's', '\022', '.', '\n', '\010', 'j', 'o', 'i', 'n', 't', 'r', 'e', 'e', '\030', '\023', ' ', '\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', '\021', 'm', 'e', 'r', 'g', 'e', '_', 'a', 'c', 't', 'i', 'o', 'n', '_', 'l', 'i', 's', 't', '\030', '\024', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\017', 'm', 'e', 'r', 'g', 'e', 'A', 'c', 't', 'i', 'o', 'n', 'L', 'i', 's', 't', '\022', '2', '\n', '\025', 'm', 'e', 'r', 'g', 'e', '_', 't', 'a', 'r', 'g', 'e', 't', '_', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\025', ' ', '\001', '(', '\005', 'R', '\023', 'm', 'e', 'r', 'g', 'e', 'T', 'a', 'r', 'g', 'e', 't', 'R', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '@', '\n', '\024', 'm', 'e', 'r', 'g', 'e', '_', 'j', 'o', 'i', 'n', '_', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\030', '\026', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\022', 'm', 'e', 'r', 'g', 'e', 'J', 'o', 'i', 'n', 'C', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\022', '/', '\n', '\013', 't', 'a', 'r', 'g', 'e', 't', '_', 'l', 'i', 's', 't', '\030', '\027', ' ', '\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', '\030', ' ', '\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', '\031', ' ', '\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', '\032', ' ', '\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', '\033', ' ', '\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', '%', '\n', '\016', 'g', 'r', 'o', 'u', 'p', '_', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', '\030', '\034', ' ', '\001', '(', '\010', 'R', '\r', 'g', 'r', 'o', 'u', 'p', 'D', 'i', 's', 't', 'i', 'n', 'c', 't', '\022', '3', '\n', '\r', 'g', 'r', 'o', 'u', 'p', 'i', 'n', 'g', '_', 's', 'e', 't', 's', '\030', '\035', ' ', '\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', '\036', ' ', '\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', '\037', ' ', '\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', ' ', ' ', '\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', '!', ' ', '\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', '\"', ' ', '\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', '#', ' ', '\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', '$', ' ', '\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', '%', ' ', '\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', '\"', '\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', '\"', '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', '\"', '\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', '\"', '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', '\"', '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', '\"', '\307', '\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', '\004', 'o', 'v', 'e', 'r', '\030', '\005', ' ', '\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', '*', '\n', '\020', 'a', 'g', 'g', '_', 'w', 'i', 't', 'h', 'i', 'n', '_', 'g', 'r', 'o', 'u', 'p', '\030', '\006', ' ', '\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', '\007', ' ', '\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', '\010', ' ', '\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', '\t', ' ', '\001', '(', '\010', 'R', '\r', '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', '\n', ' ', '\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', '\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', '\"', '\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', '\"', '\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', '\"', '\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', '\"', '\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', '\"', '\354', '\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', ' ', '\n', '\013', 'c', 'o', 'm', 'p', 'r', 'e', 's', 's', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\013', 'c', 'o', 'm', 'p', 'r', 'e', 's', 's', 'i', 'o', 'n', '\022', '\032', '\n', '\010', 'i', 'n', 'h', 'c', 'o', 'u', 'n', 't', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\010', 'i', 'n', 'h', 'c', 'o', 'u', 'n', 't', '\022', '\032', '\n', '\010', 'i', 's', '_', 'l', 'o', 'c', 'a', 'l', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\010', 'i', 's', '_', 'l', 'o', 'c', 'a', 'l', '\022', ' ', '\n', '\013', 'i', 's', '_', 'n', 'o', 't', '_', 'n', 'u', 'l', 'l', '\030', '\006', ' ', '\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', '\007', ' ', '\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', '\010', ' ', '\001', '(', '\t', 'R', '\007', 's', 't', 'o', 'r', 'a', 'g', 'e', '\022', '\"', '\n', '\014', 's', 't', 'o', 'r', 'a', 'g', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\t', ' ', '\001', '(', '\t', 'R', '\014', 's', 't', 'o', 'r', 'a', 'g', 'e', '_', 'n', 'a', 'm', 'e', '\022', '0', '\n', '\013', 'r', 'a', 'w', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '\030', '\n', ' ', '\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', '\013', ' ', '\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', '\014', ' ', '\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', '\r', ' ', '\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', '\016', ' ', '\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', '\017', ' ', '\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', '\020', ' ', '\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', '\021', ' ', '\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', '\022', ' ', '\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', '\023', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '~', '\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', '\022', '!', '\n', '\014', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '_', 'o', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\013', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', 'O', 'i', 'd', '\"', '\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', '\"', '\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', '\"', '\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', '\"', '\316', '\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', '\026', '\n', '\006', 'i', 'n', 'd', 'e', 'n', 't', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\006', 'i', 'n', 'd', 'e', 'n', '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', '\"', '\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', '\"', '\225', '\001', '\n', '\r', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'S', 'p', 'e', 'c', '\022', '7', '\n', '\010', 's', 't', 'r', 'a', 't', 'e', 'g', 'y', '\030', '\001', ' ', '\001', '(', '\016', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'S', 't', 'r', 'a', 't', 'e', 'g', 'y', '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', '\"', '\025', '\n', '\023', 'S', 'i', 'n', 'g', 'l', 'e', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'S', 'p', 'e', 'c', '\"', '\212', '\001', '\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', '\022', '\036', '\n', '\n', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 't', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\n', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 't', '\"', '\271', '\n', '\n', '\r', 'R', 'a', 'n', 'g', 'e', 'T', 'b', 'l', 'E', 'n', 't', 'r', 'y', '\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', 'R', '\005', 'a', 'l', 'i', 'a', 's', '\022', '#', '\n', '\004', 'e', 'r', 'e', 'f', '\030', '\002', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 'i', 'a', 's', 'R', '\004', 'e', 'r', 'e', 'f', '\022', '+', '\n', '\007', 'r', 't', 'e', 'k', 'i', 'n', 'd', '\030', '\003', ' ', '\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', '\004', ' ', '\001', '(', '\r', 'R', '\005', 'r', 'e', 'l', 'i', 'd', '\022', '\020', '\n', '\003', 'i', 'n', 'h', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\003', 'i', 'n', 'h', '\022', '\030', '\n', '\007', 'r', 'e', 'l', 'k', 'i', 'n', 'd', '\030', '\006', ' ', '\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', '\007', ' ', '\001', '(', '\005', 'R', '\013', 'r', 'e', 'l', 'l', 'o', 'c', 'k', 'm', 'o', 'd', 'e', '\022', '$', '\n', '\r', 'p', 'e', 'r', 'm', 'i', 'n', 'f', 'o', 'i', 'n', 'd', 'e', 'x', '\030', '\010', ' ', '\001', '(', '\r', 'R', '\r', 'p', 'e', 'r', 'm', 'i', 'n', 'f', 'o', 'i', 'n', 'd', 'e', 'x', '\022', '=', '\n', '\013', 't', 'a', 'b', 'l', 'e', 's', 'a', 'm', 'p', 'l', 'e', '\030', '\t', ' ', '\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', '\n', ' ', '\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', '\013', ' ', '\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', '\014', ' ', '\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', '\r', ' ', '\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', '\016', ' ', '\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', '\017', ' ', '\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', '\020', ' ', '\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', '\020', 'j', 'o', 'i', 'n', '_', 'u', 's', 'i', 'n', 'g', '_', 'a', 'l', 'i', 'a', 's', '\030', '\021', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 'i', 'a', 's', 'R', '\020', 'j', 'o', 'i', 'n', '_', 'u', 's', 'i', 'n', 'g', '_', 'a', 'l', 'i', 'a', 's', '\022', ',', '\n', '\t', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's', '\030', '\022', ' ', '\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', '\023', ' ', '\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', '\024', ' ', '\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', '\025', ' ', '\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', '\026', ' ', '\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', '\027', ' ', '\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', '\030', ' ', '\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', '\031', ' ', '\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', '\032', ' ', '\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', '\033', ' ', '\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', '\034', ' ', '\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', '\035', ' ', '\001', '(', '\001', 'R', '\t', 'e', 'n', 'r', 't', 'u', 'p', 'l', 'e', 's', '\022', '\030', '\n', '\007', 'l', 'a', 't', 'e', 'r', 'a', 'l', '\030', '\036', ' ', '\001', '(', '\010', 'R', '\007', 'l', 'a', 't', 'e', 'r', 'a', 'l', '\022', '\034', '\n', '\n', 'i', 'n', '_', 'f', 'r', 'o', 'm', '_', 'c', 'l', '\030', '\037', ' ', '\001', '(', '\010', 'R', '\010', 'i', 'n', 'F', 'r', 'o', 'm', 'C', 'l', '\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', '\"', '\363', '\001', '\n', '\021', 'R', 'T', 'E', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', '\024', '\n', '\005', 'r', 'e', 'l', 'i', 'd', '\030', '\001', ' ', '\001', '(', '\r', 'R', '\005', 'r', 'e', 'l', 'i', 'd', '\022', '\020', '\n', '\003', 'i', 'n', 'h', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\003', 'i', 'n', 'h', '\022', '%', '\n', '\016', 'r', 'e', 'q', 'u', 'i', 'r', 'e', 'd', '_', 'p', 'e', 'r', 'm', 's', '\030', '\003', ' ', '\001', '(', '\004', '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', '\004', ' ', '\001', '(', '\r', 'R', '\013', 'c', 'h', 'e', 'c', 'k', 'A', 's', 'U', 's', 'e', 'r', '\022', '#', '\n', '\r', 's', 'e', 'l', 'e', 'c', 't', 'e', 'd', '_', 'c', 'o', 'l', 's', '\030', '\005', ' ', '\003', '(', '\004', 'R', '\014', 's', 'e', 'l', 'e', 'c', 't', 'e', 'd', 'C', 'o', 'l', 's', '\022', '#', '\n', '\r', 'i', 'n', 's', 'e', 'r', 't', 'e', 'd', '_', 'c', 'o', 'l', 's', '\030', '\006', ' ', '\003', '(', '\004', 'R', '\014', 'i', 'n', 's', 'e', 'r', 't', 'e', 'd', 'C', 'o', 'l', 's', '\022', '!', '\n', '\014', 'u', 'p', 'd', 'a', 't', 'e', 'd', '_', 'c', 'o', 'l', 's', '\030', '\007', ' ', '\003', '(', '\004', 'R', '\013', 'u', 'p', 'd', 'a', 't', 'e', 'd', 'C', 'o', 'l', 's', '\"', '\340', '\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', '\022', '\036', '\n', '\n', 'f', 'u', 'n', 'c', 'p', 'a', 'r', 'a', 'm', 's', '\030', '\007', ' ', '\003', '(', '\004', 'R', '\n', 'f', 'u', 'n', 'c', 'p', 'a', 'r', 'a', 'm', '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', '\"', '\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', '\"', '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', '\"', '\311', '\001', '\n', '\017', 'C', 'T', 'E', 'S', 'e', 'a', 'r', 'c', 'h', 'C', 'l', 'a', 'u', 's', 'e', '\022', '8', '\n', '\017', 's', 'e', 'a', 'r', 'c', 'h', '_', 'c', 'o', 'l', '_', 'l', 'i', 's', 't', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\017', 's', 'e', 'a', 'r', 'c', 'h', '_', 'c', 'o', 'l', '_', 'l', 'i', 's', 't', '\022', '2', '\n', '\024', 's', 'e', 'a', 'r', 'c', 'h', '_', 'b', 'r', 'e', 'a', 'd', 't', 'h', '_', 'f', 'i', 'r', 's', 't', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\024', 's', 'e', 'a', 'r', 'c', 'h', '_', 'b', 'r', 'e', 'a', 'd', 't', 'h', '_', 'f', 'i', 'r', 's', 't', '\022', ',', '\n', '\021', 's', 'e', 'a', 'r', 'c', 'h', '_', 's', 'e', 'q', '_', 'c', 'o', 'l', 'u', 'm', 'n', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\021', 's', 'e', 'a', 'r', 'c', 'h', '_', 's', 'e', 'q', '_', 'c', 'o', 'l', 'u', 'm', 'n', '\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', '\"', '\362', '\003', '\n', '\016', 'C', 'T', 'E', 'C', 'y', 'c', 'l', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', '6', '\n', '\016', 'c', 'y', 'c', 'l', 'e', '_', 'c', 'o', 'l', '_', 'l', 'i', 's', 't', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\016', 'c', 'y', 'c', 'l', 'e', '_', 'c', 'o', 'l', '_', 'l', 'i', 's', 't', '\022', ',', '\n', '\021', 'c', 'y', 'c', 'l', 'e', '_', 'm', 'a', 'r', 'k', '_', 'c', 'o', 'l', 'u', 'm', 'n', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\021', 'c', 'y', 'c', 'l', 'e', '_', 'm', 'a', 'r', 'k', '_', 'c', 'o', 'l', 'u', 'm', 'n', '\022', ':', '\n', '\020', 'c', 'y', 'c', 'l', 'e', '_', 'm', 'a', 'r', 'k', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\020', 'c', 'y', 'c', 'l', 'e', '_', 'm', 'a', 'r', 'k', '_', 'v', 'a', 'l', 'u', 'e', '\022', '>', '\n', '\022', 'c', 'y', 'c', 'l', 'e', '_', 'm', 'a', 'r', 'k', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\022', 'c', 'y', 'c', 'l', 'e', '_', 'm', 'a', 'r', 'k', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '\022', ',', '\n', '\021', 'c', 'y', 'c', 'l', 'e', '_', 'p', 'a', 't', 'h', '_', 'c', 'o', 'l', 'u', 'm', 'n', '\030', '\005', ' ', '\001', '(', '\t', 'R', '\021', 'c', 'y', 'c', 'l', 'e', '_', 'p', 'a', 't', 'h', '_', 'c', 'o', 'l', 'u', 'm', 'n', '\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', '\022', '(', '\n', '\017', 'c', 'y', 'c', 'l', 'e', '_', 'm', 'a', 'r', 'k', '_', 't', 'y', 'p', 'e', '\030', '\007', ' ', '\001', '(', '\r', 'R', '\017', 'c', 'y', 'c', 'l', 'e', '_', 'm', 'a', 'r', 'k', '_', 't', 'y', 'p', 'e', '\022', ',', '\n', '\021', 'c', 'y', 'c', 'l', 'e', '_', 'm', 'a', 'r', 'k', '_', 't', 'y', 'p', 'm', 'o', 'd', '\030', '\010', ' ', '\001', '(', '\005', 'R', '\021', 'c', 'y', 'c', 'l', 'e', '_', 'm', 'a', 'r', 'k', '_', 't', 'y', 'p', 'm', 'o', 'd', '\022', '2', '\n', '\024', 'c', 'y', 'c', 'l', 'e', '_', 'm', 'a', 'r', 'k', '_', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\t', ' ', '\001', '(', '\r', 'R', '\024', 'c', 'y', 'c', 'l', 'e', '_', 'm', 'a', 'r', 'k', '_', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\022', '(', '\n', '\017', 'c', 'y', 'c', 'l', 'e', '_', 'm', 'a', 'r', 'k', '_', 'n', 'e', 'o', 'p', '\030', '\n', ' ', '\001', '(', '\r', 'R', '\017', 'c', 'y', 'c', 'l', 'e', '_', 'm', 'a', 'r', 'k', '_', 'n', 'e', 'o', 'p', '\"', '\210', '\005', '\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', '?', '\n', '\r', 's', 'e', 'a', 'r', 'c', 'h', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\005', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'T', 'E', 'S', 'e', 'a', 'r', 'c', 'h', 'C', 'l', 'a', 'u', 's', 'e', 'R', '\r', 's', 'e', 'a', 'r', 'c', 'h', '_', 'c', 'l', 'a', 'u', 's', 'e', '\022', '<', '\n', '\014', 'c', 'y', 'c', 'l', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\006', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'T', 'E', 'C', 'y', 'c', 'l', 'e', 'C', 'l', 'a', 'u', 's', 'e', 'R', '\014', 'c', 'y', 'c', 'l', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\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', '\022', '\"', '\n', '\014', 'c', 't', 'e', 'r', 'e', 'c', 'u', 'r', 's', 'i', 'v', 'e', '\030', '\010', ' ', '\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', '\t', ' ', '\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', '\n', ' ', '\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', '\013', ' ', '\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', '\014', ' ', '\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', '\r', ' ', '\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', '\"', '\275', '\002', '\n', '\017', 'M', 'e', 'r', 'g', 'e', 'W', 'h', 'e', 'n', 'C', 'l', 'a', 'u', 's', 'e', '\022', '7', '\n', '\n', 'm', 'a', 't', 'c', 'h', '_', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'M', 'e', 'r', 'g', 'e', 'M', 'a', 't', 'c', 'h', 'K', 'i', 'n', 'd', 'R', '\t', 'm', 'a', 't', 'c', 'h', 'K', 'i', 'n', 'd', '\022', '4', '\n', '\014', 'c', 'o', 'm', 'm', 'a', 'n', 'd', '_', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\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', '4', '\n', '\010', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '\030', '\003', ' ', '\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', ',', '\n', '\t', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\022', '/', '\n', '\013', 't', 'a', 'r', 'g', 'e', 't', '_', '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', 'r', 'g', 'e', 't', 'L', 'i', 's', 't', '\022', '&', '\n', '\006', 'v', 'a', 'l', 'u', 'e', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'v', 'a', 'l', 'u', 'e', 's', '\"', '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', '\"', 't', '\n', '\n', 'J', 's', 'o', 'n', 'O', 'u', 't', 'p', 'u', 't', '\022', '/', '\n', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\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', '5', '\n', '\t', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'R', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', 'R', '\t', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', '\"', 'M', '\n', '\014', 'J', 's', 'o', 'n', 'A', 'r', 'g', 'u', 'm', 'e', 'n', 't', '\022', ')', '\n', '\003', 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'V', 'a', 'l', 'u', 'e', 'E', 'x', 'p', 'r', 'R', '\003', 'v', 'a', 'l', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\"', '\372', '\003', '\n', '\014', 'J', 's', 'o', 'n', 'F', 'u', 'n', 'c', 'E', 'x', 'p', 'r', '\022', '$', '\n', '\002', 'o', 'p', '\030', '\001', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'E', 'x', 'p', 'r', 'O', 'p', 'R', '\002', 'o', 'p', '\022', ' ', '\n', '\013', 'c', 'o', 'l', 'u', 'm', 'n', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\013', 'c', 'o', 'l', 'u', 'm', 'n', '_', 'n', 'a', 'm', 'e', '\022', ';', '\n', '\014', 'c', 'o', 'n', 't', 'e', 'x', 't', '_', 'i', 't', 'e', 'm', '\030', '\003', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'V', 'a', 'l', 'u', 'e', 'E', 'x', 'p', 'r', 'R', '\014', 'c', 'o', 'n', 't', 'e', 'x', 't', '_', 'i', 't', 'e', 'm', '\022', '*', '\n', '\010', 'p', 'a', 't', 'h', 's', 'p', 'e', 'c', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'p', 'a', 't', 'h', 's', 'p', 'e', 'c', '\022', '(', '\n', '\007', 'p', 'a', 's', 's', 'i', 'n', 'g', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'p', 'a', 's', 's', 'i', 'n', 'g', '\022', ',', '\n', '\006', 'o', 'u', 't', 'p', 'u', 't', '\030', '\006', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'O', 'u', 't', 'p', 'u', 't', 'R', '\006', 'o', 'u', 't', 'p', 'u', 't', '\022', '2', '\n', '\010', 'o', 'n', '_', 'e', 'm', 'p', 't', 'y', '\030', '\007', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'o', 'n', '_', 'e', 'm', 'p', 't', 'y', '\022', '2', '\n', '\010', 'o', 'n', '_', 'e', 'r', 'r', 'o', 'r', '\030', '\010', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'o', 'n', '_', 'e', 'r', 'r', 'o', 'r', '\022', '/', '\n', '\007', 'w', 'r', 'a', 'p', 'p', 'e', 'r', '\030', '\t', ' ', '\001', '(', '\016', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'W', 'r', 'a', 'p', 'p', 'e', 'r', 'R', '\007', 'w', 'r', 'a', 'p', 'p', 'e', 'r', '\022', ',', '\n', '\006', 'q', 'u', 'o', 't', 'e', 's', '\030', '\n', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'Q', 'u', 'o', 't', 'e', 's', 'R', '\006', 'q', 'u', 'o', 't', 'e', 's', '\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', '\"', '\221', '\001', '\n', '\021', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 't', 'h', 'S', 'p', 'e', 'c', '\022', '&', '\n', '\006', 's', 't', 'r', 'i', 'n', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 's', 't', 'r', 'i', 'n', 'g', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '$', '\n', '\r', 'n', 'a', 'm', 'e', '_', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\r', 'n', 'a', 'm', 'e', '_', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\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', '\"', '\346', '\002', '\n', '\t', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', '\022', ';', '\n', '\014', 'c', 'o', 'n', 't', 'e', 'x', 't', '_', 'i', 't', 'e', 'm', '\030', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'V', 'a', 'l', 'u', 'e', 'E', 'x', 'p', 'r', 'R', '\014', 'c', 'o', 'n', 't', 'e', 'x', 't', '_', 'i', 't', 'e', 'm', '\022', '7', '\n', '\010', 'p', 'a', 't', 'h', 's', 'p', 'e', 'c', '\030', '\002', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 't', 'h', 'S', 'p', 'e', 'c', 'R', '\010', 'p', 'a', 't', 'h', 's', 'p', 'e', 'c', '\022', '(', '\n', '\007', 'p', 'a', 's', 's', 'i', 'n', 'g', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'p', 'a', 's', 's', 'i', 'n', 'g', '\022', '(', '\n', '\007', 'c', 'o', 'l', 'u', 'm', 'n', 's', '\030', '\004', ' ', '\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', '2', '\n', '\010', 'o', 'n', '_', 'e', 'r', 'r', 'o', 'r', '\030', '\005', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'o', 'n', '_', 'e', 'r', 'r', 'o', 'r', '\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', '\030', '\n', '\007', 'l', 'a', 't', 'e', 'r', 'a', 'l', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\007', 'l', 'a', 't', 'e', 'r', 'a', 'l', '\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', '\"', '\203', '\004', '\n', '\017', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'C', 'o', 'l', 'u', 'm', 'n', '\022', '7', '\n', '\007', 'c', 'o', 'l', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\035', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'C', 'o', 'l', 'u', 'm', 'n', 'T', 'y', 'p', 'e', 'R', '\007', 'c', 'o', 'l', 't', 'y', 'p', 'e', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\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', '7', '\n', '\010', 'p', 'a', 't', 'h', 's', 'p', 'e', 'c', '\030', '\004', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 't', 'h', 'S', 'p', 'e', 'c', 'R', '\010', 'p', 'a', 't', 'h', 's', 'p', 'e', 'c', '\022', ',', '\n', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\005', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'R', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\022', '/', '\n', '\007', 'w', 'r', 'a', 'p', 'p', 'e', 'r', '\030', '\006', ' ', '\001', '(', '\016', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'W', 'r', 'a', 'p', 'p', 'e', 'r', 'R', '\007', 'w', 'r', 'a', 'p', 'p', 'e', 'r', '\022', ',', '\n', '\006', 'q', 'u', 'o', 't', 'e', 's', '\030', '\007', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'Q', 'u', 'o', 't', 'e', 's', 'R', '\006', 'q', 'u', 'o', 't', 'e', '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', '2', '\n', '\010', 'o', 'n', '_', 'e', 'm', 'p', 't', 'y', '\030', '\t', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'o', 'n', '_', 'e', 'm', 'p', 't', 'y', '\022', '2', '\n', '\010', 'o', 'n', '_', 'e', 'r', 'r', 'o', 'r', '\030', '\n', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'o', 'n', '_', 'e', 'r', 'r', 'o', 'r', '\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', '\"', '_', '\n', '\014', 'J', 's', 'o', 'n', 'K', 'e', 'y', 'V', 'a', 'l', 'u', 'e', '\022', ' ', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'k', 'e', 'y', '\022', '-', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'V', 'a', 'l', 'u', 'e', 'E', 'x', 'p', 'r', 'R', '\005', 'v', 'a', 'l', 'u', 'e', '\"', '\250', '\001', '\n', '\r', 'J', 's', 'o', 'n', 'P', 'a', 'r', 's', 'e', 'E', 'x', 'p', 'r', '\022', '+', '\n', '\004', 'e', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'V', 'a', 'l', 'u', 'e', 'E', 'x', 'p', 'r', 'R', '\004', 'e', 'x', 'p', 'r', '\022', ',', '\n', '\006', 'o', 'u', 't', 'p', 'u', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'O', 'u', 't', 'p', 'u', 't', 'R', '\006', 'o', 'u', 't', 'p', 'u', 't', '\022', ' ', '\n', '\013', 'u', 'n', 'i', 'q', 'u', 'e', '_', 'k', 'e', 'y', 's', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\013', 'u', 'n', 'i', 'q', 'u', 'e', '_', 'k', 'e', 'y', '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', '\"', '~', '\n', '\016', 'J', 's', 'o', 'n', 'S', 'c', 'a', 'l', 'a', 'r', 'E', 'x', 'p', 'r', '\022', '\"', '\n', '\004', 'e', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'e', 'x', 'p', 'r', '\022', ',', '\n', '\006', 'o', 'u', 't', 'p', 'u', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'O', 'u', 't', 'p', 'u', 't', 'R', '\006', 'o', 'u', 't', 'p', 'u', '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', '\"', '\212', '\001', '\n', '\021', 'J', 's', 'o', 'n', 'S', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', 'E', 'x', 'p', 'r', '\022', '+', '\n', '\004', 'e', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'V', 'a', 'l', 'u', 'e', 'E', 'x', 'p', 'r', 'R', '\004', 'e', 'x', 'p', 'r', '\022', ',', '\n', '\006', 'o', 'u', 't', 'p', 'u', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'O', 'u', 't', 'p', 'u', 't', 'R', '\006', 'o', 'u', 't', 'p', 'u', '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', '\"', '\307', '\001', '\n', '\025', 'J', 's', 'o', 'n', 'O', 'b', 'j', 'e', 'c', 't', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\022', '$', '\n', '\005', 'e', 'x', 'p', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'e', 'x', 'p', 'r', 's', '\022', ',', '\n', '\006', 'o', 'u', 't', 'p', 'u', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'O', 'u', 't', 'p', 'u', 't', 'R', '\006', 'o', 'u', 't', 'p', 'u', 't', '\022', '&', '\n', '\016', 'a', 'b', 's', 'e', 'n', 't', '_', 'o', 'n', '_', 'n', 'u', 'l', 'l', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\016', 'a', 'b', 's', 'e', 'n', 't', '_', 'o', 'n', '_', 'n', 'u', 'l', 'l', '\022', '\026', '\n', '\006', 'u', 'n', 'i', 'q', 'u', 'e', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\006', 'u', 'n', 'i', 'q', 'u', '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', '\"', '\256', '\001', '\n', '\024', 'J', 's', 'o', 'n', 'A', 'r', 'r', 'a', 'y', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\022', '$', '\n', '\005', 'e', 'x', 'p', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'e', 'x', 'p', 'r', 's', '\022', ',', '\n', '\006', 'o', 'u', 't', 'p', 'u', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'O', 'u', 't', 'p', 'u', 't', 'R', '\006', 'o', 'u', 't', 'p', 'u', 't', '\022', '&', '\n', '\016', 'a', 'b', 's', 'e', 'n', 't', '_', 'o', 'n', '_', 'n', 'u', 'l', 'l', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\016', 'a', 'b', 's', 'e', 'n', 't', '_', 'o', 'n', '_', 'n', 'u', 'l', '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', '\"', '\341', '\001', '\n', '\031', 'J', 's', 'o', 'n', 'A', 'r', 'r', 'a', 'y', 'Q', 'u', 'e', 'r', 'y', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\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', '\006', 'o', 'u', 't', 'p', 'u', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'O', 'u', 't', 'p', 'u', 't', 'R', '\006', 'o', 'u', 't', 'p', 'u', 't', '\022', ',', '\n', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'R', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\022', '&', '\n', '\016', 'a', 'b', 's', 'e', 'n', 't', '_', 'o', 'n', '_', 'n', 'u', 'l', 'l', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\016', 'a', 'b', 's', 'e', 'n', 't', '_', 'o', 'n', '_', 'n', 'u', 'l', 'l', '\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', '\001', '\n', '\022', 'J', 's', 'o', 'n', 'A', 'g', 'g', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\022', ',', '\n', '\006', 'o', 'u', 't', 'p', 'u', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'O', 'u', 't', 'p', 'u', 't', 'R', '\006', 'o', 'u', 't', 'p', 'u', 't', '\022', '.', '\n', '\n', 'a', 'g', 'g', '_', 'f', 'i', 'l', 't', 'e', 'r', '\030', '\002', ' ', '\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', '\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', '\004', 'o', 'v', 'e', 'r', '\030', '\004', ' ', '\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', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\271', '\001', '\n', '\r', 'J', 's', 'o', 'n', 'O', 'b', 'j', 'e', 'c', 't', 'A', 'g', 'g', '\022', '>', '\n', '\013', 'c', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'A', 'g', 'g', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', 'R', '\013', 'c', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\022', '(', '\n', '\003', 'a', 'r', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'K', 'e', 'y', 'V', 'a', 'l', 'u', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '&', '\n', '\016', 'a', 'b', 's', 'e', 'n', 't', '_', 'o', 'n', '_', 'n', 'u', 'l', 'l', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\016', 'a', 'b', 's', 'e', 'n', 't', '_', 'o', 'n', '_', 'n', 'u', 'l', 'l', '\022', '\026', '\n', '\006', 'u', 'n', 'i', 'q', 'u', 'e', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\006', 'u', 'n', 'i', 'q', 'u', 'e', '\"', '\241', '\001', '\n', '\014', 'J', 's', 'o', 'n', 'A', 'r', 'r', 'a', 'y', 'A', 'g', 'g', '\022', '>', '\n', '\013', 'c', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'A', 'g', 'g', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', 'R', '\013', 'c', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', '\022', ')', '\n', '\003', 'a', 'r', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 's', 'o', 'n', 'V', 'a', 'l', 'u', 'e', 'E', 'x', 'p', 'r', 'R', '\003', 'a', 'r', 'g', '\022', '&', '\n', '\016', 'a', 'b', 's', 'e', 'n', 't', '_', 'o', 'n', '_', 'n', 'u', 'l', 'l', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\016', 'a', 'b', 's', 'e', 'n', 't', '_', 'o', 'n', '_', 'n', 'u', 'l', 'l', '\"', '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', '\"', '\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', '\"', '\327', '\002', '\n', '\t', 'M', 'e', 'r', 'g', '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', '7', '\n', '\017', 's', 'o', 'u', 'r', 'c', 'e', '_', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\016', 's', 'o', 'u', 'r', 'c', 'e', 'R', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '5', '\n', '\016', 'j', 'o', 'i', 'n', '_', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'j', 'o', 'i', 'n', 'C', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', '\022', '<', '\n', '\022', 'm', 'e', 'r', 'g', 'e', '_', 'w', 'h', 'e', 'n', '_', 'c', 'l', 'a', 'u', 's', 'e', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\020', 'm', 'e', 'r', 'g', 'e', 'W', 'h', 'e', 'n', 'C', 'l', 'a', 'u', 's', 'e', 's', '\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', '\"', '\323', '\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', '%', '\n', '\016', 'g', 'r', 'o', 'u', 'p', '_', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\r', 'g', 'r', 'o', 'u', 'p', 'D', 'i', 's', 't', 'i', 'n', 'c', 't', '\022', '3', '\n', '\r', 'h', 'a', 'v', 'i', 'n', 'g', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\010', ' ', '\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', '\t', ' ', '\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', '\n', ' ', '\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', '\013', ' ', '\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', '\014', ' ', '\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', '\r', ' ', '\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', '\016', ' ', '\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', '\017', ' ', '\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', '\020', ' ', '\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', '\021', ' ', '\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', '\022', ' ', '\001', '(', '\010', 'R', '\003', 'a', 'l', 'l', '\022', '(', '\n', '\004', 'l', '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', 'l', 'a', 'r', 'g', '\022', '(', '\n', '\004', 'r', 'a', 'r', 'g', '\030', '\024', ' ', '\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', '\"', '\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', '\"', ':', '\n', '\n', 'R', 'e', 't', 'u', 'r', 'n', 'S', 't', 'm', 't', '\022', ',', '\n', '\t', 'r', 'e', 't', 'u', 'r', 'n', 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'r', 'e', 't', 'u', 'r', 'n', 'v', 'a', 'l', '\"', '\260', '\001', '\n', '\014', 'P', 'L', 'A', 's', 's', 'i', 'g', 'n', 'S', 't', 'm', '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', '\026', '\n', '\006', 'n', 'n', 'a', 'm', 'e', 's', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\006', 'n', 'n', 'a', 'm', 'e', 's', '\022', '&', '\n', '\003', 'v', 'a', 'l', '\030', '\004', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'e', 'l', 'e', 'c', 't', 'S', 't', 'm', 't', 'R', '\003', 'v', 'a', 'l', '\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', '\"', '\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', '\"', '\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', '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', '\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', '\"', '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', '\"', '\251', '\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', '\022', '\030', '\n', '\007', 'r', 'e', 'c', 'u', 'r', 's', 'e', '\030', '\010', ' ', '\001', '(', '\010', 'R', '\007', 'r', 'e', 'c', 'u', 'r', 's', 'e', '\"', '@', '\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', '\"', '\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', '\"', '\232', '\003', '\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', ',', '\n', '\007', 'g', 'r', 'a', 'n', 't', 'o', 'r', '\030', '\010', ' ', '\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', '\t', ' ', '\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', '\"', '\302', '\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', '0', '\n', '\013', 'o', 'b', 'j', 'f', 'u', 'n', 'c', 'a', 'r', 'g', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'o', 'b', 'j', 'f', 'u', 'n', 'c', 'a', 'r', 'g', 's', '\022', '*', '\n', '\020', 'a', 'r', 'g', 's', '_', 'u', 'n', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'd', '\030', '\004', ' ', '\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', '\"', '\233', '\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', ' ', '\n', '\003', 'o', 'p', 't', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', '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', '\"', '\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', '\"', '\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', '\"', '\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', '\"', '\372', '\t', '\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', '(', '\n', '\017', 's', 'k', 'i', 'p', '_', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\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', '\006', ' ', '\001', '(', '\010', 'R', '\017', 'i', 'n', 'i', 't', 'i', 'a', 'l', 'l', 'y', '_', 'v', 'a', 'l', 'i', 'd', '\022', '$', '\n', '\r', 'i', 's', '_', 'n', 'o', '_', 'i', 'n', 'h', 'e', 'r', 'i', 't', '\030', '\007', ' ', '\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', '\010', ' ', '\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', '\t', ' ', '\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', '\n', ' ', '\001', '(', '\t', 'R', '\016', 'g', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', '_', 'w', 'h', 'e', 'n', '\022', '\032', '\n', '\010', 'i', 'n', 'h', 'c', 'o', 'u', 'n', 't', '\030', '\013', ' ', '\001', '(', '\005', 'R', '\010', 'i', 'n', 'h', 'c', 'o', 'u', 'n', 't', '\022', '.', '\n', '\022', 'n', 'u', 'l', 'l', 's', '_', 'n', 'o', 't', '_', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', '\030', '\014', ' ', '\001', '(', '\010', 'R', '\022', 'n', 'u', 'l', 'l', 's', '_', 'n', 'o', 't', '_', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', '\022', '\"', '\n', '\004', 'k', 'e', 'y', 's', '\030', '\r', ' ', '\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', '\016', ' ', '\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', '\017', ' ', '\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', '\020', ' ', '\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', '\021', ' ', '\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', '\022', ' ', '\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', '\023', ' ', '\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', '\024', ' ', '\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', '\025', ' ', '\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', '\026', ' ', '\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', '\027', ' ', '\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', '\030', ' ', '\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', '\031', ' ', '\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', '\032', ' ', '\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', '\033', ' ', '\001', '(', '\t', 'R', '\r', 'f', 'k', '_', 'd', 'e', 'l', '_', 'a', 'c', 't', 'i', 'o', 'n', '\022', '8', '\n', '\017', 'f', 'k', '_', 'd', 'e', 'l', '_', 's', 'e', 't', '_', 'c', 'o', 'l', 's', '\030', '\034', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\017', 'f', 'k', '_', 'd', 'e', 'l', '_', 's', 'e', 't', '_', 'c', 'o', 'l', 's', '\022', '4', '\n', '\r', 'o', 'l', 'd', '_', 'c', 'o', 'n', 'p', 'f', 'e', 'q', 'o', 'p', '\030', '\035', ' ', '\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', '\036', ' ', '\001', '(', '\r', 'R', '\017', 'o', 'l', 'd', '_', 'p', 'k', 't', 'a', 'b', 'l', 'e', '_', 'o', 'i', 'd', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\037', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\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', '\"', '\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', '\"', '\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', '\"', '\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', '\"', '\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', '\"', '\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', '\"', '\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', '\"', '\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', '\"', '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', '\"', '\266', '\004', '\n', '\016', 'C', 'r', 'e', 'a', 't', 'e', 'T', 'r', 'i', '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', '\"', '\n', '\014', 'i', 's', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\014', 'i', 's', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\022', '\032', '\n', '\010', 't', 'r', 'i', 'g', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\010', 't', 'r', 'i', 'g', 'n', 'a', 'm', 'e', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\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', '\005', ' ', '\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', '\006', ' ', '\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', '\007', ' ', '\001', '(', '\010', 'R', '\003', 'r', 'o', 'w', '\022', '\026', '\n', '\006', 't', 'i', 'm', 'i', 'n', 'g', '\030', '\010', ' ', '\001', '(', '\005', 'R', '\006', 't', 'i', 'm', 'i', 'n', 'g', '\022', '\026', '\n', '\006', 'e', 'v', 'e', 'n', 't', 's', '\030', '\t', ' ', '\001', '(', '\005', 'R', '\006', 'e', 'v', 'e', 'n', 't', 's', '\022', '(', '\n', '\007', 'c', 'o', 'l', 'u', 'm', 'n', 's', '\030', '\n', ' ', '\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', '\013', ' ', '\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', '7', '\n', '\017', 't', 'r', 'a', 'n', 's', 'i', 't', 'i', 'o', 'n', '_', 'r', 'e', 'l', 's', '\030', '\014', ' ', '\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', '\r', ' ', '\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', '\016', ' ', '\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', '\017', ' ', '\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', '\"', '\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', '\"', '\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', '\"', '\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', '\"', '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', '\"', '\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', '\"', '\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', '\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', '\"', '\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', '\"', '\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', '\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', '\"', '\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', '\"', '\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', '\"', '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', '\"', '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', '\"', '\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', '\"', '\334', '\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', '\035', '\n', '\n', 'o', 'l', 'd', '_', 'n', 'u', 'm', 'b', 'e', 'r', '\030', '\014', ' ', '\001', '(', '\r', 'R', '\t', 'o', 'l', 'd', 'N', 'u', 'm', 'b', 'e', 'r', '\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', 'C', '\n', '\036', 'o', 'l', 'd', '_', 'f', 'i', 'r', 's', 't', '_', 'r', 'e', 'l', 'f', 'i', 'l', 'e', 'l', 'o', 'c', 'a', 't', 'o', 'r', '_', 's', 'u', 'b', 'i', 'd', '\030', '\016', ' ', '\001', '(', '\r', 'R', '\033', 'o', 'l', 'd', 'F', 'i', 'r', 's', 't', 'R', 'e', 'l', 'f', 'i', 'l', 'e', 'l', 'o', 'c', 'a', 't', 'o', 'r', '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', '.', '\n', '\022', 'n', 'u', 'l', 'l', 's', '_', 'n', 'o', 't', '_', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', '\030', '\020', ' ', '\001', '(', '\010', 'R', '\022', 'n', 'u', 'l', 'l', 's', '_', 'n', 'o', 't', '_', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', '\022', '\030', '\n', '\007', 'p', 'r', 'i', 'm', 'a', 'r', 'y', '\030', '\021', ' ', '\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', '\022', ' ', '\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', '\023', ' ', '\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', '\024', ' ', '\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', '\025', ' ', '\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', '\026', ' ', '\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', '\027', ' ', '\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', '\030', ' ', '\001', '(', '\010', 'R', '\024', 'r', 'e', 's', 'e', 't', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 't', 'b', 'l', 's', 'p', 'c', '\"', '\251', '\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', '\013', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'e', 'd', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\013', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'e', 'd', '\022', '$', '\n', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\"', 'C', '\n', '\t', 'S', 't', 'a', 't', 's', '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', '\"', '\222', '\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', '4', '\n', '\r', 's', 't', 'x', 's', 't', 'a', 't', 't', 'a', 'r', 'g', 'e', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', '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', '\"', '\271', '\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', '\022', '*', '\n', '\010', 's', 'q', 'l', '_', 'b', 'o', 'd', 'y', '\030', '\007', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 's', 'q', 'l', '_', 'b', 'o', 'd', 'y', '\"', '\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', '\"', '\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', '\"', '\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', '\"', '\224', '\001', '\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', '\022', '(', '\n', '\007', 'o', 'u', 't', 'a', 'r', 'g', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'u', 't', 'a', 'r', 'g', 's', '\"', '%', '\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', '\"', '\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', '\"', '\353', '\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', '\020', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 't', 'r', 'i', 'n', 'g', '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', '\"', '\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', '\"', '\332', '\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', '\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', '\"', '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', '\"', '\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', '\"', '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', '\"', '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', '\"', '6', '\n', '\034', 'A', 'l', 't', 'e', 'r', 'D', 'a', 't', 'a', 'b', 'a', 's', 'e', 'R', 'e', 'f', 'r', 'e', 's', 'h', 'C', 'o', 'l', 'l', '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', '\"', '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', '\"', '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', '\"', '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', '\"', '\203', '\001', '\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', '&', '\n', '\006', 'p', 'a', 'r', 'a', 'm', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'p', 'a', 'r', 'a', 'm', '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', '\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', '\"', ']', '\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', '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', '\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', '\"', '\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', '\"', '\020', '\n', '\016', 'C', 'h', 'e', 'c', 'k', 'P', 'o', 'i', 'n', 't', 'S', 't', 'm', 't', '\"', '<', '\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', '\"', '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', '\"', '\252', '\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', '&', '\n', '\006', 'p', 'a', 'r', 'a', 'm', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'p', 'a', 'r', 'a', 'm', 's', '\"', '\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', '\"', '\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', '\"', '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', '\"', 'V', '\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', '\022', '\024', '\n', '\005', 'i', 's', 'a', 'l', 'l', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\005', 'i', 's', 'a', 'l', 'l', '\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', '\"', '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', '\"', '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', '\"', '\237', '\001', '\n', '\020', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'T', 'a', 'b', 'l', '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', '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', '(', '\n', '\007', 'c', 'o', 'l', 'u', 'm', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'c', 'o', 'l', 'u', 'm', 'n', 's', '\"', '\276', '\001', '\n', '\022', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'O', 'b', 'j', 'S', 'p', 'e', 'c', '\022', '@', '\n', '\n', 'p', 'u', 'b', 'o', 'b', 'j', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', ' ', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'O', 'b', 'j', 'S', 'p', 'e', 'c', 'T', 'y', 'p', 'e', 'R', '\n', 'p', 'u', 'b', 'o', 'b', 'j', 't', 'y', 'p', 'e', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '6', '\n', '\010', 'p', 'u', 'b', 't', 'a', 'b', 'l', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'R', '\010', 'p', 'u', 'b', 't', 'a', 'b', 'l', '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', '\"', '\263', '\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', '\n', 'p', 'u', 'b', 'o', 'b', 'j', 'e', 'c', 't', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'p', 'u', 'b', 'o', 'b', 'j', 'e', 'c', 't', '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', '\"', '\354', '\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', '\n', 'p', 'u', 'b', 'o', 'b', 'j', 'e', 'c', 't', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'p', 'u', 'b', 'o', 'b', 'j', 'e', 'c', 't', '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', '8', '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\016', '2', ' ', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'A', 'c', 't', 'i', 'o', 'n', 'R', '\006', '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', '\"', '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', '*', '\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', '*', '~', '\n', '\r', 'S', 'e', 't', 'Q', 'u', 'a', 'n', 't', 'i', 'f', 'i', 'e', 'r', '\022', '\034', '\n', '\030', 'S', 'E', 'T', '_', 'Q', 'U', 'A', 'N', 'T', 'I', 'F', 'I', 'E', 'R', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\032', '\n', '\026', 'S', 'E', 'T', '_', 'Q', 'U', 'A', 'N', 'T', 'I', 'F', 'I', 'E', 'R', '_', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\001', '\022', '\026', '\n', '\022', 'S', 'E', 'T', '_', 'Q', 'U', 'A', 'N', 'T', 'I', 'F', 'I', 'E', 'R', '_', 'A', 'L', 'L', '\020', '\002', '\022', '\033', '\n', '\027', 'S', 'E', 'T', '_', 'Q', 'U', 'A', 'N', 'T', 'I', 'F', 'I', 'E', 'R', '_', 'D', 'I', 'S', 'T', 'I', 'N', 'C', 'T', '\020', '\003', '*', '\266', '\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', '_', 'I', 'N', '\020', '\007', '\022', '\016', '\n', '\n', 'A', 'E', 'X', 'P', 'R', '_', 'L', 'I', 'K', 'E', '\020', '\010', '\022', '\017', '\n', '\013', 'A', 'E', 'X', 'P', 'R', '_', 'I', 'L', 'I', 'K', 'E', '\020', '\t', '\022', '\021', '\n', '\r', 'A', 'E', 'X', 'P', 'R', '_', 'S', 'I', 'M', 'I', 'L', 'A', 'R', '\020', '\n', '\022', '\021', '\n', '\r', 'A', 'E', 'X', 'P', 'R', '_', 'B', 'E', 'T', 'W', 'E', 'E', 'N', '\020', '\013', '\022', '\025', '\n', '\021', 'A', 'E', 'X', 'P', 'R', '_', 'N', 'O', 'T', '_', 'B', 'E', 'T', 'W', 'E', 'E', 'N', '\020', '\014', '\022', '\025', '\n', '\021', 'A', 'E', 'X', 'P', 'R', '_', 'B', 'E', 'T', 'W', 'E', 'E', 'N', '_', 'S', 'Y', 'M', '\020', '\r', '\022', '\031', '\n', '\025', 'A', 'E', 'X', 'P', 'R', '_', 'N', 'O', 'T', '_', 'B', 'E', 'T', 'W', 'E', 'E', 'N', '_', 'S', 'Y', 'M', '\020', '\016', '*', '\250', '\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', '_', 'R', 'O', 'L', 'E', '\020', '\002', '\022', '\031', '\n', '\025', 'R', 'O', 'L', 'E', 'S', 'P', 'E', 'C', '_', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'U', 'S', 'E', 'R', '\020', '\003', '\022', '\031', '\n', '\025', 'R', 'O', 'L', 'E', 'S', 'P', 'E', 'C', '_', 'S', 'E', 'S', 'S', 'I', 'O', 'N', '_', 'U', 'S', 'E', 'R', '\020', '\004', '\022', '\023', '\n', '\017', 'R', 'O', 'L', 'E', 'S', 'P', 'E', 'C', '_', 'P', 'U', 'B', 'L', 'I', 'C', '\020', '\005', '*', '\364', '\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', 'M', 'P', 'R', 'E', 'S', 'S', 'I', 'O', 'N', '\020', '\002', '\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', '\003', '\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', '\004', '\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', '\005', '\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', '\006', '\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', '\007', '\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', '\010', '\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', '\t', '\022', '\031', '\n', '\025', 'C', 'R', 'E', 'A', 'T', 'E', '_', 'T', 'A', 'B', 'L', 'E', '_', 'L', 'I', 'K', 'E', '_', 'A', 'L', 'L', '\020', '\n', '*', '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', '*', '\215', '\001', '\n', '\021', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'S', 't', 'r', 'a', 't', 'e', 'g', 'y', '\022', ' ', '\n', '\034', 'P', 'A', 'R', 'T', 'I', 'T', 'I', 'O', 'N', '_', 'S', 'T', 'R', 'A', 'T', 'E', 'G', 'Y', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\033', '\n', '\027', 'P', 'A', 'R', 'T', 'I', 'T', 'I', 'O', 'N', '_', 'S', 'T', 'R', 'A', 'T', 'E', 'G', 'Y', '_', 'L', 'I', 'S', 'T', '\020', '\001', '\022', '\034', '\n', '\030', 'P', 'A', 'R', 'T', 'I', 'T', 'I', 'O', 'N', '_', 'S', 'T', 'R', 'A', 'T', 'E', 'G', 'Y', '_', 'R', 'A', 'N', 'G', 'E', '\020', '\002', '\022', '\033', '\n', '\027', 'P', 'A', 'R', 'T', 'I', 'T', 'I', 'O', 'N', '_', 'S', 'T', 'R', 'A', 'T', 'E', 'G', 'Y', '_', 'H', 'A', 'S', 'H', '\020', '\003', '*', '\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', '*', '\304', '\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', '\022', '\036', '\n', '\032', 'W', 'C', 'O', '_', 'R', 'L', 'S', '_', 'M', 'E', 'R', 'G', 'E', '_', 'U', 'P', 'D', 'A', 'T', 'E', '_', 'C', 'H', 'E', 'C', 'K', '\020', '\005', '\022', '\036', '\n', '\032', 'W', 'C', 'O', '_', 'R', 'L', 'S', '_', 'M', 'E', 'R', 'G', 'E', '_', 'D', 'E', 'L', 'E', 'T', 'E', '_', 'C', 'H', 'E', 'C', 'K', '\020', '\006', '*', '\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', '*', 'e', '\n', '\n', 'J', 's', 'o', 'n', 'Q', 'u', 'o', 't', 'e', 's', '\022', '\031', '\n', '\025', 'J', 'S', 'O', 'N', '_', 'Q', 'U', 'O', 'T', 'E', 'S', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\024', '\n', '\020', 'J', 'S', '_', 'Q', 'U', 'O', 'T', 'E', 'S', '_', 'U', 'N', 'S', 'P', 'E', 'C', '\020', '\001', '\022', '\022', '\n', '\016', 'J', 'S', '_', 'Q', 'U', 'O', 'T', 'E', 'S', '_', 'K', 'E', 'E', 'P', '\020', '\002', '\022', '\022', '\n', '\016', 'J', 'S', '_', 'Q', 'U', 'O', 'T', 'E', 'S', '_', 'O', 'M', 'I', 'T', '\020', '\003', '*', '\227', '\001', '\n', '\023', 'J', 's', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'C', 'o', 'l', 'u', 'm', 'n', 'T', 'y', 'p', 'e', '\022', '$', '\n', ' ', 'J', 'S', 'O', 'N', '_', 'T', 'A', 'B', 'L', 'E', '_', 'C', 'O', 'L', 'U', 'M', 'N', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\026', '\n', '\022', 'J', 'T', 'C', '_', 'F', 'O', 'R', '_', 'O', 'R', 'D', 'I', 'N', 'A', 'L', 'I', 'T', 'Y', '\020', '\001', '\022', '\017', '\n', '\013', 'J', 'T', 'C', '_', 'R', 'E', 'G', 'U', 'L', 'A', 'R', '\020', '\002', '\022', '\016', '\n', '\n', 'J', 'T', 'C', '_', 'E', 'X', 'I', 'S', 'T', 'S', '\020', '\003', '\022', '\021', '\n', '\r', 'J', 'T', 'C', '_', 'F', 'O', 'R', 'M', 'A', 'T', 'T', 'E', 'D', '\020', '\004', '\022', '\016', '\n', '\n', 'J', 'T', 'C', '_', 'N', 'E', 'S', 'T', 'E', 'D', '\020', '\005', '*', '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', '*', '\231', '\t', '\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', '\030', '\n', '\024', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'P', 'A', 'R', 'A', 'M', 'E', 'T', 'E', 'R', '_', 'A', 'C', 'L', '\020', '\034', '\022', '\021', '\n', '\r', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'P', 'O', 'L', 'I', 'C', 'Y', '\020', '\035', '\022', '\024', '\n', '\020', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'P', 'R', 'O', 'C', 'E', 'D', 'U', 'R', 'E', '\020', '\036', '\022', '\026', '\n', '\022', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', '\020', '\037', '\022', ' ', '\n', '\034', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', '_', 'N', 'A', 'M', 'E', 'S', 'P', 'A', 'C', 'E', '\020', ' ', '\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', '!', '\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', '0', '\022', '\025', '\n', '\021', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'S', 'T', 'E', 'M', 'P', 'L', 'A', 'T', 'E', '\020', '1', '\022', '\017', '\n', '\013', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'Y', 'P', 'E', '\020', '2', '\022', '\027', '\n', '\023', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'U', 'S', 'E', 'R', '_', 'M', 'A', 'P', 'P', 'I', 'N', 'G', '\020', '3', '\022', '\017', '\n', '\013', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'V', 'I', 'E', 'W', '\020', '4', '*', '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', '*', '\214', '\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', '\026', '\n', '\022', 'A', 'T', '_', 'A', 'd', 'd', 'C', 'o', 'l', 'u', 'm', 'n', 'T', 'o', 'V', 'i', 'e', 'w', '\020', '\002', '\022', '\024', '\n', '\020', 'A', 'T', '_', 'C', 'o', 'l', 'u', 'm', 'n', 'D', 'e', 'f', 'a', 'u', 'l', 't', '\020', '\003', '\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', '\004', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'N', 'o', 't', 'N', 'u', 'l', 'l', '\020', '\005', '\022', '\021', '\n', '\r', 'A', 'T', '_', 'S', 'e', 't', 'N', 'o', 't', 'N', 'u', 'l', 'l', '\020', '\006', '\022', '\024', '\n', '\020', 'A', 'T', '_', 'S', 'e', 't', 'E', 'x', 'p', 'r', 'e', 's', 's', 'i', 'o', 'n', '\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', '\025', '\n', '\021', 'A', 'T', '_', 'S', 'e', 't', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'i', 'o', 'n', '\020', '\016', '\022', '\021', '\n', '\r', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'C', 'o', 'l', 'u', 'm', 'n', '\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', '\026', '\n', '\022', 'A', 'T', '_', 'R', 'e', 'A', 'd', 'd', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\020', '\023', '\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', '\024', '\022', '\026', '\n', '\022', 'A', 'T', '_', 'A', 'l', 't', 'e', 'r', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\020', '\025', '\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', '\026', '\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', '\027', '\022', '\025', '\n', '\021', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\020', '\030', '\022', '\023', '\n', '\017', 'A', 'T', '_', 'R', 'e', 'A', 'd', 'd', 'C', 'o', 'm', 'm', 'e', 'n', 't', '\020', '\031', '\022', '\026', '\n', '\022', 'A', 'T', '_', 'A', 'l', 't', 'e', 'r', 'C', 'o', 'l', 'u', 'm', 'n', 'T', 'y', 'p', 'e', '\020', '\032', '\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', '\033', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'C', 'h', 'a', 'n', 'g', 'e', 'O', 'w', 'n', 'e', 'r', '\020', '\034', '\022', '\020', '\n', '\014', 'A', 'T', '_', 'C', 'l', 'u', 's', 't', 'e', 'r', 'O', 'n', '\020', '\035', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'C', 'l', 'u', 's', 't', 'e', 'r', '\020', '\036', '\022', '\020', '\n', '\014', 'A', 'T', '_', 'S', 'e', 't', 'L', 'o', 'g', 'g', 'e', 'd', '\020', '\037', '\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', '\026', '\n', '\022', 'A', 'T', '_', 'S', 'e', 't', 'A', 'c', 'c', 'e', 's', 's', 'M', 'e', 't', 'h', 'o', 'd', '\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', '.', '\022', '\021', '\n', '\r', 'A', 'T', '_', 'E', 'n', 'a', 'b', 'l', 'e', 'R', 'u', 'l', 'e', '\020', '/', '\022', '\027', '\n', '\023', 'A', 'T', '_', 'E', 'n', 'a', 'b', 'l', 'e', 'A', 'l', 'w', 'a', 'y', 's', 'R', 'u', 'l', 'e', '\020', '0', '\022', '\030', '\n', '\024', 'A', 'T', '_', 'E', 'n', 'a', 'b', 'l', 'e', 'R', 'e', 'p', 'l', 'i', 'c', 'a', 'R', 'u', 'l', 'e', '\020', '1', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'D', 'i', 's', 'a', 'b', 'l', 'e', 'R', 'u', 'l', 'e', '\020', '2', '\022', '\021', '\n', '\r', 'A', 'T', '_', 'A', 'd', 'd', 'I', 'n', 'h', 'e', 'r', 'i', 't', '\020', '3', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'I', 'n', 'h', 'e', 'r', 'i', 't', '\020', '4', '\022', '\014', '\n', '\010', 'A', 'T', '_', 'A', 'd', 'd', 'O', 'f', '\020', '5', '\022', '\r', '\n', '\t', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'O', 'f', '\020', '6', '\022', '\026', '\n', '\022', 'A', 'T', '_', 'R', 'e', 'p', 'l', 'i', 'c', 'a', 'I', 'd', 'e', 'n', 't', 'i', 't', 'y', '\020', '7', '\022', '\030', '\n', '\024', 'A', 'T', '_', 'E', 'n', 'a', 'b', 'l', 'e', 'R', 'o', 'w', 'S', 'e', 'c', 'u', 'r', 'i', 't', 'y', '\020', '8', '\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', '9', '\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', '\036', '\n', '\032', 'A', 'T', '_', 'D', 'e', 't', 'a', 'c', 'h', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'F', 'i', 'n', 'a', 'l', 'i', 'z', 'e', '\020', '?', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'A', 'd', 'd', 'I', 'd', 'e', 'n', 't', 'i', 't', 'y', '\020', '@', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'S', 'e', 't', 'I', 'd', 'e', 'n', 't', 'i', 't', 'y', '\020', 'A', '\022', '\023', '\n', '\017', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'I', 'd', 'e', 'n', 't', 'i', 't', 'y', '\020', 'B', '\022', '\026', '\n', '\022', 'A', 'T', '_', 'R', 'e', 'A', 'd', 'd', 'S', 't', 'a', 't', 'i', 's', 't', 'i', 'c', 's', '\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', '*', '\302', '\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', '\022', '\026', '\n', '\022', 'F', 'U', 'N', 'C', '_', 'P', 'A', 'R', 'A', 'M', '_', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\006', '*', '\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', '*', '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', '*', '\312', '\001', '\n', '\026', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'O', 'b', 'j', 'S', 'p', 'e', 'c', 'T', 'y', 'p', 'e', '\022', '\'', '\n', '#', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', '_', 'O', 'B', 'J', '_', 'S', 'P', 'E', 'C', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\030', '\n', '\024', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', 'O', 'B', 'J', '_', 'T', 'A', 'B', 'L', 'E', '\020', '\001', '\022', '#', '\n', '\037', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', 'O', 'B', 'J', '_', 'T', 'A', 'B', 'L', 'E', 'S', '_', 'I', 'N', '_', 'S', 'C', 'H', 'E', 'M', 'A', '\020', '\002', '\022', '\'', '\n', '#', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', 'O', 'B', 'J', '_', 'T', 'A', 'B', 'L', 'E', 'S', '_', 'I', 'N', '_', 'C', 'U', 'R', '_', 'S', 'C', 'H', 'E', 'M', 'A', '\020', '\003', '\022', '\037', '\n', '\033', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', 'O', 'B', 'J', '_', 'C', 'O', 'N', 'T', 'I', 'N', 'U', 'A', 'T', 'I', 'O', 'N', '\020', '\004', '*', 'z', '\n', '\026', 'A', 'l', 't', 'e', 'r', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'A', 'c', 't', 'i', 'o', 'n', '\022', '&', '\n', '\"', 'A', 'L', 'T', 'E', 'R', '_', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', '_', 'A', 'C', 'T', 'I', 'O', 'N', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\021', '\n', '\r', 'A', 'P', '_', 'A', 'd', 'd', 'O', 'b', 'j', 'e', 'c', 't', 's', '\020', '\001', '\022', '\022', '\n', '\016', 'A', 'P', '_', 'D', 'r', 'o', 'p', 'O', 'b', 'j', 'e', 'c', 't', 's', '\020', '\002', '\022', '\021', '\n', '\r', 'A', 'P', '_', 'S', 'e', 't', 'O', 'b', 'j', 'e', 'c', 't', 's', '\020', '\003', '*', '\327', '\002', '\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', '\"', 'A', 'L', 'T', 'E', 'R', '_', 'S', 'U', 'B', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N', '_', 'S', 'E', 'T', '_', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', '\020', '\003', '\022', '&', '\n', '\"', 'A', 'L', 'T', 'E', 'R', '_', 'S', 'U', 'B', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N', '_', 'A', 'D', 'D', '_', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', '\020', '\004', '\022', '\'', '\n', '#', 'A', 'L', 'T', 'E', 'R', '_', 'S', 'U', 'B', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N', '_', 'D', 'R', 'O', 'P', '_', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', '\020', '\005', '\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', '\006', '\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', '\007', '\022', '\033', '\n', '\027', 'A', 'L', 'T', 'E', 'R', '_', 'S', 'U', 'B', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N', '_', 'S', 'K', 'I', 'P', '\020', '\010', '*', '\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', '*', '\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', '*', 'T', '\n', '\r', 'T', 'a', 'b', 'l', 'e', 'F', 'u', 'n', 'c', 'T', 'y', 'p', 'e', '\022', '\035', '\n', '\031', 'T', 'A', 'B', 'L', 'E', '_', 'F', 'U', 'N', 'C', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\020', '\n', '\014', 'T', 'F', 'T', '_', 'X', 'M', 'L', 'T', 'A', 'B', 'L', 'E', '\020', '\001', '\022', '\022', '\n', '\016', 'T', 'F', 'T', '_', 'J', 'S', 'O', 'N', '_', 'T', 'A', 'B', 'L', 'E', '\020', '\002', '*', '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', '*', '\216', '\001', '\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', '\024', '\n', '\020', 'C', 'O', 'E', 'R', 'C', 'I', 'O', 'N', '_', 'P', 'L', 'P', 'G', 'S', 'Q', 'L', '\020', '\003', '\022', '\025', '\n', '\021', 'C', 'O', 'E', 'R', 'C', 'I', 'O', 'N', '_', 'E', 'X', 'P', 'L', 'I', 'C', 'I', 'T', '\020', '\004', '*', '\220', '\001', '\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', '\022', '\025', '\n', '\021', 'C', 'O', 'E', 'R', 'C', 'E', '_', 'S', 'Q', 'L', '_', 'S', 'Y', 'N', 'T', 'A', 'X', '\020', '\004', '*', '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', '*', 't', '\n', '\014', 'J', 's', 'o', 'n', 'E', 'n', 'c', 'o', 'd', 'i', 'n', 'g', '\022', '\033', '\n', '\027', 'J', 'S', 'O', 'N', '_', 'E', 'N', 'C', 'O', 'D', 'I', 'N', 'G', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\022', '\n', '\016', 'J', 'S', '_', 'E', 'N', 'C', '_', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\001', '\022', '\017', '\n', '\013', 'J', 'S', '_', 'E', 'N', 'C', '_', 'U', 'T', 'F', '8', '\020', '\002', '\022', '\020', '\n', '\014', 'J', 'S', '_', 'E', 'N', 'C', '_', 'U', 'T', 'F', '1', '6', '\020', '\003', '\022', '\020', '\n', '\014', 'J', 'S', '_', 'E', 'N', 'C', '_', 'U', 'T', 'F', '3', '2', '\020', '\004', '*', 'p', '\n', '\016', 'J', 's', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'T', 'y', 'p', 'e', '\022', '\036', '\n', '\032', 'J', 'S', 'O', 'N', '_', 'F', 'O', 'R', 'M', 'A', 'T', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\025', '\n', '\021', 'J', 'S', '_', 'F', 'O', 'R', 'M', 'A', 'T', '_', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\001', '\022', '\022', '\n', '\016', 'J', 'S', '_', 'F', 'O', 'R', 'M', 'A', 'T', '_', 'J', 'S', 'O', 'N', '\020', '\002', '\022', '\023', '\n', '\017', 'J', 'S', '_', 'F', 'O', 'R', 'M', 'A', 'T', '_', 'J', 'S', 'O', 'N', 'B', '\020', '\003', '*', '\350', '\001', '\n', '\023', 'J', 's', 'o', 'n', 'C', 'o', 'n', 's', 't', 'r', 'u', 'c', 't', 'o', 'r', 'T', 'y', 'p', 'e', '\022', '#', '\n', '\037', 'J', 'S', 'O', 'N', '_', 'C', 'O', 'N', 'S', 'T', 'R', 'U', 'C', 'T', 'O', 'R', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\026', '\n', '\022', 'J', 'S', 'C', 'T', 'O', 'R', '_', 'J', 'S', 'O', 'N', '_', 'O', 'B', 'J', 'E', 'C', 'T', '\020', '\001', '\022', '\025', '\n', '\021', 'J', 'S', 'C', 'T', 'O', 'R', '_', 'J', 'S', 'O', 'N', '_', 'A', 'R', 'R', 'A', 'Y', '\020', '\002', '\022', '\031', '\n', '\025', 'J', 'S', 'C', 'T', 'O', 'R', '_', 'J', 'S', 'O', 'N', '_', 'O', 'B', 'J', 'E', 'C', 'T', 'A', 'G', 'G', '\020', '\003', '\022', '\030', '\n', '\024', 'J', 'S', 'C', 'T', 'O', 'R', '_', 'J', 'S', 'O', 'N', '_', 'A', 'R', 'R', 'A', 'Y', 'A', 'G', 'G', '\020', '\004', '\022', '\025', '\n', '\021', 'J', 'S', 'C', 'T', 'O', 'R', '_', 'J', 'S', 'O', 'N', '_', 'P', 'A', 'R', 'S', 'E', '\020', '\005', '\022', '\026', '\n', '\022', 'J', 'S', 'C', 'T', 'O', 'R', '_', 'J', 'S', 'O', 'N', '_', 'S', 'C', 'A', 'L', 'A', 'R', '\020', '\006', '\022', '\031', '\n', '\025', 'J', 'S', 'C', 'T', 'O', 'R', '_', 'J', 'S', 'O', 'N', '_', 'S', 'E', 'R', 'I', 'A', 'L', 'I', 'Z', 'E', '\020', '\007', '*', 'z', '\n', '\r', 'J', 's', 'o', 'n', 'V', 'a', 'l', 'u', 'e', 'T', 'y', 'p', 'e', '\022', '\035', '\n', '\031', 'J', 'S', 'O', 'N', '_', 'V', 'A', 'L', 'U', 'E', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\017', '\n', '\013', 'J', 'S', '_', 'T', 'Y', 'P', 'E', '_', 'A', 'N', 'Y', '\020', '\001', '\022', '\022', '\n', '\016', 'J', 'S', '_', 'T', 'Y', 'P', 'E', '_', 'O', 'B', 'J', 'E', 'C', 'T', '\020', '\002', '\022', '\021', '\n', '\r', 'J', 'S', '_', 'T', 'Y', 'P', 'E', '_', 'A', 'R', 'R', 'A', 'Y', '\020', '\003', '\022', '\022', '\n', '\016', 'J', 'S', '_', 'T', 'Y', 'P', 'E', '_', 'S', 'C', 'A', 'L', 'A', 'R', '\020', '\004', '*', 's', '\n', '\013', 'J', 's', 'o', 'n', 'W', 'r', 'a', 'p', 'p', 'e', 'r', '\022', '\032', '\n', '\026', 'J', 'S', 'O', 'N', '_', 'W', 'R', 'A', 'P', 'P', 'E', 'R', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\016', '\n', '\n', 'J', 'S', 'W', '_', 'U', 'N', 'S', 'P', 'E', 'C', '\020', '\001', '\022', '\014', '\n', '\010', 'J', 'S', 'W', '_', 'N', 'O', 'N', 'E', '\020', '\002', '\022', '\023', '\n', '\017', 'J', 'S', 'W', '_', 'C', 'O', 'N', 'D', 'I', 'T', 'I', 'O', 'N', 'A', 'L', '\020', '\003', '\022', '\025', '\n', '\021', 'J', 'S', 'W', '_', 'U', 'N', 'C', 'O', 'N', 'D', 'I', 'T', 'I', 'O', 'N', 'A', 'L', '\020', '\004', '*', '\244', '\002', '\n', '\020', 'J', 's', 'o', 'n', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'T', 'y', 'p', 'e', '\022', ' ', '\n', '\034', 'J', 'S', 'O', 'N', '_', 'B', 'E', 'H', 'A', 'V', 'I', 'O', 'R', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\026', '\n', '\022', 'J', 'S', 'O', 'N', '_', 'B', 'E', 'H', 'A', 'V', 'I', 'O', 'R', '_', 'N', 'U', 'L', 'L', '\020', '\001', '\022', '\027', '\n', '\023', 'J', 'S', 'O', 'N', '_', 'B', 'E', 'H', 'A', 'V', 'I', 'O', 'R', '_', 'E', 'R', 'R', 'O', 'R', '\020', '\002', '\022', '\027', '\n', '\023', 'J', 'S', 'O', 'N', '_', 'B', 'E', 'H', 'A', 'V', 'I', 'O', 'R', '_', 'E', 'M', 'P', 'T', 'Y', '\020', '\003', '\022', '\026', '\n', '\022', 'J', 'S', 'O', 'N', '_', 'B', 'E', 'H', 'A', 'V', 'I', 'O', 'R', '_', 'T', 'R', 'U', 'E', '\020', '\004', '\022', '\027', '\n', '\023', 'J', 'S', 'O', 'N', '_', 'B', 'E', 'H', 'A', 'V', 'I', 'O', 'R', '_', 'F', 'A', 'L', 'S', 'E', '\020', '\005', '\022', '\031', '\n', '\025', 'J', 'S', 'O', 'N', '_', 'B', 'E', 'H', 'A', 'V', 'I', 'O', 'R', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\006', '\022', '\035', '\n', '\031', 'J', 'S', 'O', 'N', '_', 'B', 'E', 'H', 'A', 'V', 'I', 'O', 'R', '_', 'E', 'M', 'P', 'T', 'Y', '_', 'A', 'R', 'R', 'A', 'Y', '\020', '\007', '\022', '\036', '\n', '\032', 'J', 'S', 'O', 'N', '_', 'B', 'E', 'H', 'A', 'V', 'I', 'O', 'R', '_', 'E', 'M', 'P', 'T', 'Y', '_', 'O', 'B', 'J', 'E', 'C', 'T', '\020', '\010', '\022', '\031', '\n', '\025', 'J', 'S', 'O', 'N', '_', 'B', 'E', 'H', 'A', 'V', 'I', 'O', 'R', '_', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\t', '*', 'u', '\n', '\n', 'J', 's', 'o', 'n', 'E', 'x', 'p', 'r', 'O', 'p', '\022', '\032', '\n', '\026', 'J', 'S', 'O', 'N', '_', 'E', 'X', 'P', 'R', '_', 'O', 'P', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\022', '\n', '\016', 'J', 'S', 'O', 'N', '_', 'E', 'X', 'I', 'S', 'T', 'S', '_', 'O', 'P', '\020', '\001', '\022', '\021', '\n', '\r', 'J', 'S', 'O', 'N', '_', 'Q', 'U', 'E', 'R', 'Y', '_', 'O', 'P', '\020', '\002', '\022', '\021', '\n', '\r', 'J', 'S', 'O', 'N', '_', 'V', 'A', 'L', 'U', 'E', '_', 'O', 'P', '\020', '\003', '\022', '\021', '\n', '\r', 'J', 'S', 'O', 'N', '_', 'T', 'A', 'B', 'L', 'E', '_', 'O', 'P', '\020', '\004', '*', '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', '\016', 'M', 'e', 'r', 'g', 'e', 'M', 'a', 't', 'c', 'h', 'K', 'i', 'n', 'd', '\022', '\036', '\n', '\032', 'M', 'E', 'R', 'G', 'E', '_', 'M', 'A', 'T', 'C', 'H', '_', 'K', 'I', 'N', 'D', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\026', '\n', '\022', 'M', 'E', 'R', 'G', 'E', '_', 'W', 'H', 'E', 'N', '_', 'M', 'A', 'T', 'C', 'H', 'E', 'D', '\020', '\001', '\022', '$', '\n', ' ', 'M', 'E', 'R', 'G', 'E', '_', 'W', 'H', 'E', 'N', '_', 'N', 'O', 'T', '_', 'M', 'A', 'T', 'C', 'H', 'E', 'D', '_', 'B', 'Y', '_', 'S', 'O', 'U', 'R', 'C', 'E', '\020', '\002', '\022', '$', '\n', ' ', 'M', 'E', 'R', 'G', 'E', '_', 'W', 'H', 'E', 'N', '_', 'N', 'O', 'T', '_', 'M', 'A', 'T', 'C', 'H', 'E', 'D', '_', 'B', 'Y', '_', 'T', 'A', 'R', 'G', 'E', 'T', '\020', '\003', '*', '\243', '\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', '\r', '\n', '\t', 'C', 'M', 'D', '_', 'M', 'E', 'R', 'G', 'E', '\020', '\006', '\022', '\017', '\n', '\013', 'C', 'M', 'D', '_', 'U', 'T', 'I', 'L', 'I', 'T', 'Y', '\020', '\007', '\022', '\017', '\n', '\013', 'C', 'M', 'D', '_', 'N', 'O', 'T', 'H', 'I', 'N', 'G', '\020', '\010', '*', '\302', '\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', '\023', '\n', '\017', 'J', 'O', 'I', 'N', '_', 'R', 'I', 'G', 'H', 'T', '_', 'A', 'N', 'T', 'I', '\020', '\007', '\022', '\025', '\n', '\021', 'J', 'O', 'I', 'N', '_', 'U', 'N', 'I', 'Q', 'U', 'E', '_', 'O', 'U', 'T', 'E', 'R', '\020', '\010', '\022', '\025', '\n', '\021', 'J', 'O', 'I', 'N', '_', 'U', 'N', 'I', 'Q', 'U', 'E', '_', 'I', 'N', 'N', 'E', 'R', '\020', '\t', '*', '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', '*', '\350', ';', '\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', '6', '\020', '$', '\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', '2', '\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', '\013', '\n', '\006', 'A', 'B', 'S', 'E', 'N', 'T', '\020', '\226', '\002', '\022', '\017', '\n', '\n', 'A', 'B', 'S', 'O', 'L', 'U', 'T', 'E', '_', 'P', '\020', '\227', '\002', '\022', '\013', '\n', '\006', 'A', 'C', 'C', 'E', 'S', 'S', '\020', '\230', '\002', '\022', '\013', '\n', '\006', 'A', 'C', 'T', 'I', 'O', 'N', '\020', '\231', '\002', '\022', '\n', '\n', '\005', 'A', 'D', 'D', '_', 'P', '\020', '\232', '\002', '\022', '\n', '\n', '\005', 'A', 'D', 'M', 'I', 'N', '\020', '\233', '\002', '\022', '\n', '\n', '\005', 'A', 'F', 'T', 'E', 'R', '\020', '\234', '\002', '\022', '\016', '\n', '\t', 'A', 'G', 'G', 'R', 'E', 'G', 'A', 'T', 'E', '\020', '\235', '\002', '\022', '\010', '\n', '\003', 'A', 'L', 'L', '\020', '\236', '\002', '\022', '\t', '\n', '\004', 'A', 'L', 'S', 'O', '\020', '\237', '\002', '\022', '\n', '\n', '\005', 'A', 'L', 'T', 'E', 'R', '\020', '\240', '\002', '\022', '\013', '\n', '\006', 'A', 'L', 'W', 'A', 'Y', 'S', '\020', '\241', '\002', '\022', '\014', '\n', '\007', 'A', 'N', 'A', 'L', 'Y', 'S', 'E', '\020', '\242', '\002', '\022', '\014', '\n', '\007', 'A', 'N', 'A', 'L', 'Y', 'Z', 'E', '\020', '\243', '\002', '\022', '\010', '\n', '\003', 'A', 'N', 'D', '\020', '\244', '\002', '\022', '\010', '\n', '\003', 'A', 'N', 'Y', '\020', '\245', '\002', '\022', '\n', '\n', '\005', 'A', 'R', 'R', 'A', 'Y', '\020', '\246', '\002', '\022', '\007', '\n', '\002', 'A', 'S', '\020', '\247', '\002', '\022', '\010', '\n', '\003', 'A', 'S', 'C', '\020', '\250', '\002', '\022', '\017', '\n', '\n', 'A', 'S', 'E', 'N', 'S', 'I', 'T', 'I', 'V', 'E', '\020', '\251', '\002', '\022', '\016', '\n', '\t', 'A', 'S', 'S', 'E', 'R', 'T', 'I', 'O', 'N', '\020', '\252', '\002', '\022', '\017', '\n', '\n', 'A', 'S', 'S', 'I', 'G', 'N', 'M', 'E', 'N', 'T', '\020', '\253', '\002', '\022', '\017', '\n', '\n', 'A', 'S', 'Y', 'M', 'M', 'E', 'T', 'R', 'I', 'C', '\020', '\254', '\002', '\022', '\013', '\n', '\006', 'A', 'T', 'O', 'M', 'I', 'C', '\020', '\255', '\002', '\022', '\007', '\n', '\002', 'A', 'T', '\020', '\256', '\002', '\022', '\013', '\n', '\006', 'A', 'T', 'T', 'A', 'C', 'H', '\020', '\257', '\002', '\022', '\016', '\n', '\t', 'A', 'T', 'T', 'R', 'I', 'B', 'U', 'T', 'E', '\020', '\260', '\002', '\022', '\022', '\n', '\r', 'A', 'U', 'T', 'H', 'O', 'R', 'I', 'Z', 'A', 'T', 'I', 'O', 'N', '\020', '\261', '\002', '\022', '\r', '\n', '\010', 'B', 'A', 'C', 'K', 'W', 'A', 'R', 'D', '\020', '\262', '\002', '\022', '\013', '\n', '\006', 'B', 'E', 'F', 'O', 'R', 'E', '\020', '\263', '\002', '\022', '\014', '\n', '\007', 'B', 'E', 'G', 'I', 'N', '_', 'P', '\020', '\264', '\002', '\022', '\014', '\n', '\007', 'B', 'E', 'T', 'W', 'E', 'E', 'N', '\020', '\265', '\002', '\022', '\013', '\n', '\006', 'B', 'I', 'G', 'I', 'N', 'T', '\020', '\266', '\002', '\022', '\013', '\n', '\006', 'B', 'I', 'N', 'A', 'R', 'Y', '\020', '\267', '\002', '\022', '\010', '\n', '\003', 'B', 'I', 'T', '\020', '\270', '\002', '\022', '\016', '\n', '\t', 'B', 'O', 'O', 'L', 'E', 'A', 'N', '_', 'P', '\020', '\271', '\002', '\022', '\t', '\n', '\004', 'B', 'O', 'T', 'H', '\020', '\272', '\002', '\022', '\014', '\n', '\007', 'B', 'R', 'E', 'A', 'D', 'T', 'H', '\020', '\273', '\002', '\022', '\007', '\n', '\002', 'B', 'Y', '\020', '\274', '\002', '\022', '\n', '\n', '\005', 'C', 'A', 'C', 'H', 'E', '\020', '\275', '\002', '\022', '\t', '\n', '\004', 'C', 'A', 'L', 'L', '\020', '\276', '\002', '\022', '\013', '\n', '\006', 'C', 'A', 'L', 'L', 'E', 'D', '\020', '\277', '\002', '\022', '\014', '\n', '\007', 'C', 'A', 'S', 'C', 'A', 'D', 'E', '\020', '\300', '\002', '\022', '\r', '\n', '\010', 'C', 'A', 'S', 'C', 'A', 'D', 'E', 'D', '\020', '\301', '\002', '\022', '\t', '\n', '\004', 'C', 'A', 'S', 'E', '\020', '\302', '\002', '\022', '\t', '\n', '\004', 'C', 'A', 'S', 'T', '\020', '\303', '\002', '\022', '\016', '\n', '\t', 'C', 'A', 'T', 'A', 'L', 'O', 'G', '_', 'P', '\020', '\304', '\002', '\022', '\n', '\n', '\005', 'C', 'H', 'A', 'I', 'N', '\020', '\305', '\002', '\022', '\013', '\n', '\006', 'C', 'H', 'A', 'R', '_', 'P', '\020', '\306', '\002', '\022', '\016', '\n', '\t', 'C', 'H', 'A', 'R', 'A', 'C', 'T', 'E', 'R', '\020', '\307', '\002', '\022', '\024', '\n', '\017', 'C', 'H', 'A', 'R', 'A', 'C', 'T', 'E', 'R', 'I', 'S', 'T', 'I', 'C', 'S', '\020', '\310', '\002', '\022', '\n', '\n', '\005', 'C', 'H', 'E', 'C', 'K', '\020', '\311', '\002', '\022', '\017', '\n', '\n', 'C', 'H', 'E', 'C', 'K', 'P', 'O', 'I', 'N', 'T', '\020', '\312', '\002', '\022', '\n', '\n', '\005', 'C', 'L', 'A', 'S', 'S', '\020', '\313', '\002', '\022', '\n', '\n', '\005', 'C', 'L', 'O', 'S', 'E', '\020', '\314', '\002', '\022', '\014', '\n', '\007', 'C', 'L', 'U', 'S', 'T', 'E', 'R', '\020', '\315', '\002', '\022', '\r', '\n', '\010', 'C', 'O', 'A', 'L', 'E', 'S', 'C', 'E', '\020', '\316', '\002', '\022', '\014', '\n', '\007', 'C', 'O', 'L', 'L', 'A', 'T', 'E', '\020', '\317', '\002', '\022', '\016', '\n', '\t', 'C', 'O', 'L', 'L', 'A', 'T', 'I', 'O', 'N', '\020', '\320', '\002', '\022', '\013', '\n', '\006', 'C', 'O', 'L', 'U', 'M', 'N', '\020', '\321', '\002', '\022', '\014', '\n', '\007', 'C', 'O', 'L', 'U', 'M', 'N', 'S', '\020', '\322', '\002', '\022', '\014', '\n', '\007', 'C', 'O', 'M', 'M', 'E', 'N', 'T', '\020', '\323', '\002', '\022', '\r', '\n', '\010', 'C', 'O', 'M', 'M', 'E', 'N', 'T', 'S', '\020', '\324', '\002', '\022', '\013', '\n', '\006', 'C', 'O', 'M', 'M', 'I', 'T', '\020', '\325', '\002', '\022', '\016', '\n', '\t', 'C', 'O', 'M', 'M', 'I', 'T', 'T', 'E', 'D', '\020', '\326', '\002', '\022', '\020', '\n', '\013', 'C', 'O', 'M', 'P', 'R', 'E', 'S', 'S', 'I', 'O', 'N', '\020', '\327', '\002', '\022', '\021', '\n', '\014', 'C', 'O', 'N', 'C', 'U', 'R', 'R', 'E', 'N', 'T', 'L', 'Y', '\020', '\330', '\002', '\022', '\020', '\n', '\013', 'C', 'O', 'N', 'D', 'I', 'T', 'I', 'O', 'N', 'A', 'L', '\020', '\331', '\002', '\022', '\022', '\n', '\r', 'C', 'O', 'N', 'F', 'I', 'G', 'U', 'R', 'A', 'T', 'I', 'O', 'N', '\020', '\332', '\002', '\022', '\r', '\n', '\010', 'C', 'O', 'N', 'F', 'L', 'I', 'C', 'T', '\020', '\333', '\002', '\022', '\017', '\n', '\n', 'C', 'O', 'N', 'N', 'E', 'C', 'T', 'I', 'O', 'N', '\020', '\334', '\002', '\022', '\017', '\n', '\n', 'C', 'O', 'N', 'S', 'T', 'R', 'A', 'I', 'N', 'T', '\020', '\335', '\002', '\022', '\020', '\n', '\013', 'C', 'O', 'N', 'S', 'T', 'R', 'A', 'I', 'N', 'T', 'S', '\020', '\336', '\002', '\022', '\016', '\n', '\t', 'C', 'O', 'N', 'T', 'E', 'N', 'T', '_', 'P', '\020', '\337', '\002', '\022', '\017', '\n', '\n', 'C', 'O', 'N', 'T', 'I', 'N', 'U', 'E', '_', 'P', '\020', '\340', '\002', '\022', '\021', '\n', '\014', 'C', 'O', 'N', 'V', 'E', 'R', 'S', 'I', 'O', 'N', '_', 'P', '\020', '\341', '\002', '\022', '\t', '\n', '\004', 'C', 'O', 'P', 'Y', '\020', '\342', '\002', '\022', '\t', '\n', '\004', 'C', 'O', 'S', 'T', '\020', '\343', '\002', '\022', '\013', '\n', '\006', 'C', 'R', 'E', 'A', 'T', 'E', '\020', '\344', '\002', '\022', '\n', '\n', '\005', 'C', 'R', 'O', 'S', 'S', '\020', '\345', '\002', '\022', '\010', '\n', '\003', 'C', 'S', 'V', '\020', '\346', '\002', '\022', '\t', '\n', '\004', 'C', 'U', 'B', 'E', '\020', '\347', '\002', '\022', '\016', '\n', '\t', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'P', '\020', '\350', '\002', '\022', '\024', '\n', '\017', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'C', 'A', 'T', 'A', 'L', 'O', 'G', '\020', '\351', '\002', '\022', '\021', '\n', '\014', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'D', 'A', 'T', 'E', '\020', '\352', '\002', '\022', '\021', '\n', '\014', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'R', 'O', 'L', 'E', '\020', '\353', '\002', '\022', '\023', '\n', '\016', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'S', 'C', 'H', 'E', 'M', 'A', '\020', '\354', '\002', '\022', '\021', '\n', '\014', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'T', 'I', 'M', 'E', '\020', '\355', '\002', '\022', '\026', '\n', '\021', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'T', 'I', 'M', 'E', 'S', 'T', 'A', 'M', 'P', '\020', '\356', '\002', '\022', '\021', '\n', '\014', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'U', 'S', 'E', 'R', '\020', '\357', '\002', '\022', '\013', '\n', '\006', 'C', 'U', 'R', 'S', 'O', 'R', '\020', '\360', '\002', '\022', '\n', '\n', '\005', 'C', 'Y', 'C', 'L', 'E', '\020', '\361', '\002', '\022', '\013', '\n', '\006', 'D', 'A', 'T', 'A', '_', 'P', '\020', '\362', '\002', '\022', '\r', '\n', '\010', 'D', 'A', 'T', 'A', 'B', 'A', 'S', 'E', '\020', '\363', '\002', '\022', '\n', '\n', '\005', 'D', 'A', 'Y', '_', 'P', '\020', '\364', '\002', '\022', '\017', '\n', '\n', 'D', 'E', 'A', 'L', 'L', 'O', 'C', 'A', 'T', 'E', '\020', '\365', '\002', '\022', '\010', '\n', '\003', 'D', 'E', 'C', '\020', '\366', '\002', '\022', '\016', '\n', '\t', 'D', 'E', 'C', 'I', 'M', 'A', 'L', '_', 'P', '\020', '\367', '\002', '\022', '\014', '\n', '\007', 'D', 'E', 'C', 'L', 'A', 'R', 'E', '\020', '\370', '\002', '\022', '\014', '\n', '\007', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\371', '\002', '\022', '\r', '\n', '\010', 'D', 'E', 'F', 'A', 'U', 'L', 'T', 'S', '\020', '\372', '\002', '\022', '\017', '\n', '\n', 'D', 'E', 'F', 'E', 'R', 'R', 'A', 'B', 'L', 'E', '\020', '\373', '\002', '\022', '\r', '\n', '\010', 'D', 'E', 'F', 'E', 'R', 'R', 'E', 'D', '\020', '\374', '\002', '\022', '\014', '\n', '\007', 'D', 'E', 'F', 'I', 'N', 'E', 'R', '\020', '\375', '\002', '\022', '\r', '\n', '\010', 'D', 'E', 'L', 'E', 'T', 'E', '_', 'P', '\020', '\376', '\002', '\022', '\016', '\n', '\t', 'D', 'E', 'L', 'I', 'M', 'I', 'T', 'E', 'R', '\020', '\377', '\002', '\022', '\017', '\n', '\n', 'D', 'E', 'L', 'I', 'M', 'I', 'T', 'E', 'R', 'S', '\020', '\200', '\003', '\022', '\014', '\n', '\007', 'D', 'E', 'P', 'E', 'N', 'D', 'S', '\020', '\201', '\003', '\022', '\n', '\n', '\005', 'D', 'E', 'P', 'T', 'H', '\020', '\202', '\003', '\022', '\t', '\n', '\004', 'D', 'E', 'S', 'C', '\020', '\203', '\003', '\022', '\013', '\n', '\006', 'D', 'E', 'T', 'A', 'C', 'H', '\020', '\204', '\003', '\022', '\017', '\n', '\n', 'D', 'I', 'C', 'T', 'I', 'O', 'N', 'A', 'R', 'Y', '\020', '\205', '\003', '\022', '\016', '\n', '\t', 'D', 'I', 'S', 'A', 'B', 'L', 'E', '_', 'P', '\020', '\206', '\003', '\022', '\014', '\n', '\007', 'D', 'I', 'S', 'C', 'A', 'R', 'D', '\020', '\207', '\003', '\022', '\r', '\n', '\010', 'D', 'I', 'S', 'T', 'I', 'N', 'C', 'T', '\020', '\210', '\003', '\022', '\007', '\n', '\002', 'D', 'O', '\020', '\211', '\003', '\022', '\017', '\n', '\n', 'D', 'O', 'C', 'U', 'M', 'E', 'N', 'T', '_', 'P', '\020', '\212', '\003', '\022', '\r', '\n', '\010', 'D', 'O', 'M', 'A', 'I', 'N', '_', 'P', '\020', '\213', '\003', '\022', '\r', '\n', '\010', 'D', 'O', 'U', 'B', 'L', 'E', '_', 'P', '\020', '\214', '\003', '\022', '\t', '\n', '\004', 'D', 'R', 'O', 'P', '\020', '\215', '\003', '\022', '\t', '\n', '\004', 'E', 'A', 'C', 'H', '\020', '\216', '\003', '\022', '\t', '\n', '\004', 'E', 'L', 'S', 'E', '\020', '\217', '\003', '\022', '\014', '\n', '\007', 'E', 'M', 'P', 'T', 'Y', '_', 'P', '\020', '\220', '\003', '\022', '\r', '\n', '\010', 'E', 'N', 'A', 'B', 'L', 'E', '_', 'P', '\020', '\221', '\003', '\022', '\r', '\n', '\010', 'E', 'N', 'C', 'O', 'D', 'I', 'N', 'G', '\020', '\222', '\003', '\022', '\016', '\n', '\t', 'E', 'N', 'C', 'R', 'Y', 'P', 'T', 'E', 'D', '\020', '\223', '\003', '\022', '\n', '\n', '\005', 'E', 'N', 'D', '_', 'P', '\020', '\224', '\003', '\022', '\013', '\n', '\006', 'E', 'N', 'U', 'M', '_', 'P', '\020', '\225', '\003', '\022', '\014', '\n', '\007', 'E', 'R', 'R', 'O', 'R', '_', 'P', '\020', '\226', '\003', '\022', '\013', '\n', '\006', 'E', 'S', 'C', 'A', 'P', 'E', '\020', '\227', '\003', '\022', '\n', '\n', '\005', 'E', 'V', 'E', 'N', 'T', '\020', '\230', '\003', '\022', '\013', '\n', '\006', 'E', 'X', 'C', 'E', 'P', 'T', '\020', '\231', '\003', '\022', '\014', '\n', '\007', 'E', 'X', 'C', 'L', 'U', 'D', 'E', '\020', '\232', '\003', '\022', '\016', '\n', '\t', 'E', 'X', 'C', 'L', 'U', 'D', 'I', 'N', 'G', '\020', '\233', '\003', '\022', '\016', '\n', '\t', 'E', 'X', 'C', 'L', 'U', 'S', 'I', 'V', 'E', '\020', '\234', '\003', '\022', '\014', '\n', '\007', 'E', 'X', 'E', 'C', 'U', 'T', 'E', '\020', '\235', '\003', '\022', '\013', '\n', '\006', 'E', 'X', 'I', 'S', 'T', 'S', '\020', '\236', '\003', '\022', '\014', '\n', '\007', 'E', 'X', 'P', 'L', 'A', 'I', 'N', '\020', '\237', '\003', '\022', '\017', '\n', '\n', 'E', 'X', 'P', 'R', 'E', 'S', 'S', 'I', 'O', 'N', '\020', '\240', '\003', '\022', '\016', '\n', '\t', 'E', 'X', 'T', 'E', 'N', 'S', 'I', 'O', 'N', '\020', '\241', '\003', '\022', '\r', '\n', '\010', 'E', 'X', 'T', 'E', 'R', 'N', 'A', 'L', '\020', '\242', '\003', '\022', '\014', '\n', '\007', 'E', 'X', 'T', 'R', 'A', 'C', 'T', '\020', '\243', '\003', '\022', '\014', '\n', '\007', 'F', 'A', 'L', 'S', 'E', '_', 'P', '\020', '\244', '\003', '\022', '\013', '\n', '\006', 'F', 'A', 'M', 'I', 'L', 'Y', '\020', '\245', '\003', '\022', '\n', '\n', '\005', 'F', 'E', 'T', 'C', 'H', '\020', '\246', '\003', '\022', '\013', '\n', '\006', 'F', 'I', 'L', 'T', 'E', 'R', '\020', '\247', '\003', '\022', '\r', '\n', '\010', 'F', 'I', 'N', 'A', 'L', 'I', 'Z', 'E', '\020', '\250', '\003', '\022', '\014', '\n', '\007', 'F', 'I', 'R', 'S', 'T', '_', 'P', '\020', '\251', '\003', '\022', '\014', '\n', '\007', 'F', 'L', 'O', 'A', 'T', '_', 'P', '\020', '\252', '\003', '\022', '\016', '\n', '\t', 'F', 'O', 'L', 'L', 'O', 'W', 'I', 'N', 'G', '\020', '\253', '\003', '\022', '\010', '\n', '\003', 'F', 'O', 'R', '\020', '\254', '\003', '\022', '\n', '\n', '\005', 'F', 'O', 'R', 'C', 'E', '\020', '\255', '\003', '\022', '\014', '\n', '\007', 'F', 'O', 'R', 'E', 'I', 'G', 'N', '\020', '\256', '\003', '\022', '\013', '\n', '\006', 'F', 'O', 'R', 'M', 'A', 'T', '\020', '\257', '\003', '\022', '\014', '\n', '\007', 'F', 'O', 'R', 'W', 'A', 'R', 'D', '\020', '\260', '\003', '\022', '\013', '\n', '\006', 'F', 'R', 'E', 'E', 'Z', 'E', '\020', '\261', '\003', '\022', '\t', '\n', '\004', 'F', 'R', 'O', 'M', '\020', '\262', '\003', '\022', '\t', '\n', '\004', 'F', 'U', 'L', 'L', '\020', '\263', '\003', '\022', '\r', '\n', '\010', 'F', 'U', 'N', 'C', 'T', 'I', 'O', 'N', '\020', '\264', '\003', '\022', '\016', '\n', '\t', 'F', 'U', 'N', 'C', 'T', 'I', 'O', 'N', 'S', '\020', '\265', '\003', '\022', '\016', '\n', '\t', 'G', 'E', 'N', 'E', 'R', 'A', 'T', 'E', 'D', '\020', '\266', '\003', '\022', '\013', '\n', '\006', 'G', 'L', 'O', 'B', 'A', 'L', '\020', '\267', '\003', '\022', '\n', '\n', '\005', 'G', 'R', 'A', 'N', 'T', '\020', '\270', '\003', '\022', '\014', '\n', '\007', 'G', 'R', 'A', 'N', 'T', 'E', 'D', '\020', '\271', '\003', '\022', '\r', '\n', '\010', 'G', 'R', 'E', 'A', 'T', 'E', 'S', 'T', '\020', '\272', '\003', '\022', '\014', '\n', '\007', 'G', 'R', 'O', 'U', 'P', '_', 'P', '\020', '\273', '\003', '\022', '\r', '\n', '\010', 'G', 'R', 'O', 'U', 'P', 'I', 'N', 'G', '\020', '\274', '\003', '\022', '\013', '\n', '\006', 'G', 'R', 'O', 'U', 'P', 'S', '\020', '\275', '\003', '\022', '\014', '\n', '\007', 'H', 'A', 'N', 'D', 'L', 'E', 'R', '\020', '\276', '\003', '\022', '\013', '\n', '\006', 'H', 'A', 'V', 'I', 'N', 'G', '\020', '\277', '\003', '\022', '\r', '\n', '\010', 'H', 'E', 'A', 'D', 'E', 'R', '_', 'P', '\020', '\300', '\003', '\022', '\t', '\n', '\004', 'H', 'O', 'L', 'D', '\020', '\301', '\003', '\022', '\013', '\n', '\006', 'H', 'O', 'U', 'R', '_', 'P', '\020', '\302', '\003', '\022', '\017', '\n', '\n', 'I', 'D', 'E', 'N', 'T', 'I', 'T', 'Y', '_', 'P', '\020', '\303', '\003', '\022', '\t', '\n', '\004', 'I', 'F', '_', 'P', '\020', '\304', '\003', '\022', '\n', '\n', '\005', 'I', 'L', 'I', 'K', 'E', '\020', '\305', '\003', '\022', '\016', '\n', '\t', 'I', 'M', 'M', 'E', 'D', 'I', 'A', 'T', 'E', '\020', '\306', '\003', '\022', '\016', '\n', '\t', 'I', 'M', 'M', 'U', 'T', 'A', 'B', 'L', 'E', '\020', '\307', '\003', '\022', '\017', '\n', '\n', 'I', 'M', 'P', 'L', 'I', 'C', 'I', 'T', '_', 'P', '\020', '\310', '\003', '\022', '\r', '\n', '\010', 'I', 'M', 'P', 'O', 'R', 'T', '_', 'P', '\020', '\311', '\003', '\022', '\t', '\n', '\004', 'I', 'N', '_', 'P', '\020', '\312', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'C', 'L', 'U', 'D', 'E', '\020', '\313', '\003', '\022', '\016', '\n', '\t', 'I', 'N', 'C', 'L', 'U', 'D', 'I', 'N', 'G', '\020', '\314', '\003', '\022', '\016', '\n', '\t', 'I', 'N', 'C', 'R', 'E', 'M', 'E', 'N', 'T', '\020', '\315', '\003', '\022', '\013', '\n', '\006', 'I', 'N', 'D', 'E', 'N', 'T', '\020', '\316', '\003', '\022', '\n', '\n', '\005', 'I', 'N', 'D', 'E', 'X', '\020', '\317', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'D', 'E', 'X', 'E', 'S', '\020', '\320', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'H', 'E', 'R', 'I', 'T', '\020', '\321', '\003', '\022', '\r', '\n', '\010', 'I', 'N', 'H', 'E', 'R', 'I', 'T', 'S', '\020', '\322', '\003', '\022', '\016', '\n', '\t', 'I', 'N', 'I', 'T', 'I', 'A', 'L', 'L', 'Y', '\020', '\323', '\003', '\022', '\r', '\n', '\010', 'I', 'N', 'L', 'I', 'N', 'E', '_', 'P', '\020', '\324', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'N', 'E', 'R', '_', 'P', '\020', '\325', '\003', '\022', '\n', '\n', '\005', 'I', 'N', 'O', 'U', 'T', '\020', '\326', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'P', 'U', 'T', '_', 'P', '\020', '\327', '\003', '\022', '\020', '\n', '\013', 'I', 'N', 'S', 'E', 'N', 'S', 'I', 'T', 'I', 'V', 'E', '\020', '\330', '\003', '\022', '\013', '\n', '\006', 'I', 'N', 'S', 'E', 'R', 'T', '\020', '\331', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'S', 'T', 'E', 'A', 'D', '\020', '\332', '\003', '\022', '\n', '\n', '\005', 'I', 'N', 'T', '_', 'P', '\020', '\333', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'T', 'E', 'G', 'E', 'R', '\020', '\334', '\003', '\022', '\016', '\n', '\t', 'I', 'N', 'T', 'E', 'R', 'S', 'E', 'C', 'T', '\020', '\335', '\003', '\022', '\r', '\n', '\010', 'I', 'N', 'T', 'E', 'R', 'V', 'A', 'L', '\020', '\336', '\003', '\022', '\t', '\n', '\004', 'I', 'N', 'T', 'O', '\020', '\337', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'V', 'O', 'K', 'E', 'R', '\020', '\340', '\003', '\022', '\007', '\n', '\002', 'I', 'S', '\020', '\341', '\003', '\022', '\013', '\n', '\006', 'I', 'S', 'N', 'U', 'L', 'L', '\020', '\342', '\003', '\022', '\016', '\n', '\t', 'I', 'S', 'O', 'L', 'A', 'T', 'I', 'O', 'N', '\020', '\343', '\003', '\022', '\t', '\n', '\004', 'J', 'O', 'I', 'N', '\020', '\344', '\003', '\022', '\t', '\n', '\004', 'J', 'S', 'O', 'N', '\020', '\345', '\003', '\022', '\017', '\n', '\n', 'J', 'S', 'O', 'N', '_', 'A', 'R', 'R', 'A', 'Y', '\020', '\346', '\003', '\022', '\022', '\n', '\r', 'J', 'S', 'O', 'N', '_', 'A', 'R', 'R', 'A', 'Y', 'A', 'G', 'G', '\020', '\347', '\003', '\022', '\020', '\n', '\013', 'J', 'S', 'O', 'N', '_', 'E', 'X', 'I', 'S', 'T', 'S', '\020', '\350', '\003', '\022', '\020', '\n', '\013', 'J', 'S', 'O', 'N', '_', 'O', 'B', 'J', 'E', 'C', 'T', '\020', '\351', '\003', '\022', '\023', '\n', '\016', 'J', 'S', 'O', 'N', '_', 'O', 'B', 'J', 'E', 'C', 'T', 'A', 'G', 'G', '\020', '\352', '\003', '\022', '\017', '\n', '\n', 'J', 'S', 'O', 'N', '_', 'Q', 'U', 'E', 'R', 'Y', '\020', '\353', '\003', '\022', '\020', '\n', '\013', 'J', 'S', 'O', 'N', '_', 'S', 'C', 'A', 'L', 'A', 'R', '\020', '\354', '\003', '\022', '\023', '\n', '\016', 'J', 'S', 'O', 'N', '_', 'S', 'E', 'R', 'I', 'A', 'L', 'I', 'Z', 'E', '\020', '\355', '\003', '\022', '\017', '\n', '\n', 'J', 'S', 'O', 'N', '_', 'T', 'A', 'B', 'L', 'E', '\020', '\356', '\003', '\022', '\017', '\n', '\n', 'J', 'S', 'O', 'N', '_', 'V', 'A', 'L', 'U', 'E', '\020', '\357', '\003', '\022', '\t', '\n', '\004', 'K', 'E', 'E', 'P', '\020', '\360', '\003', '\022', '\010', '\n', '\003', 'K', 'E', 'Y', '\020', '\361', '\003', '\022', '\t', '\n', '\004', 'K', 'E', 'Y', 'S', '\020', '\362', '\003', '\022', '\n', '\n', '\005', 'L', 'A', 'B', 'E', 'L', '\020', '\363', '\003', '\022', '\r', '\n', '\010', 'L', 'A', 'N', 'G', 'U', 'A', 'G', 'E', '\020', '\364', '\003', '\022', '\014', '\n', '\007', 'L', 'A', 'R', 'G', 'E', '_', 'P', '\020', '\365', '\003', '\022', '\013', '\n', '\006', 'L', 'A', 'S', 'T', '_', 'P', '\020', '\366', '\003', '\022', '\016', '\n', '\t', 'L', 'A', 'T', 'E', 'R', 'A', 'L', '_', 'P', '\020', '\367', '\003', '\022', '\014', '\n', '\007', 'L', 'E', 'A', 'D', 'I', 'N', 'G', '\020', '\370', '\003', '\022', '\016', '\n', '\t', 'L', 'E', 'A', 'K', 'P', 'R', 'O', 'O', 'F', '\020', '\371', '\003', '\022', '\n', '\n', '\005', 'L', 'E', 'A', 'S', 'T', '\020', '\372', '\003', '\022', '\t', '\n', '\004', 'L', 'E', 'F', 'T', '\020', '\373', '\003', '\022', '\n', '\n', '\005', 'L', 'E', 'V', 'E', 'L', '\020', '\374', '\003', '\022', '\t', '\n', '\004', 'L', 'I', 'K', 'E', '\020', '\375', '\003', '\022', '\n', '\n', '\005', 'L', 'I', 'M', 'I', 'T', '\020', '\376', '\003', '\022', '\013', '\n', '\006', 'L', 'I', 'S', 'T', 'E', 'N', '\020', '\377', '\003', '\022', '\t', '\n', '\004', 'L', 'O', 'A', 'D', '\020', '\200', '\004', '\022', '\n', '\n', '\005', 'L', 'O', 'C', 'A', 'L', '\020', '\201', '\004', '\022', '\016', '\n', '\t', 'L', 'O', 'C', 'A', 'L', 'T', 'I', 'M', 'E', '\020', '\202', '\004', '\022', '\023', '\n', '\016', 'L', 'O', 'C', 'A', 'L', 'T', 'I', 'M', 'E', 'S', 'T', 'A', 'M', 'P', '\020', '\203', '\004', '\022', '\r', '\n', '\010', 'L', 'O', 'C', 'A', 'T', 'I', 'O', 'N', '\020', '\204', '\004', '\022', '\013', '\n', '\006', 'L', 'O', 'C', 'K', '_', 'P', '\020', '\205', '\004', '\022', '\013', '\n', '\006', 'L', 'O', 'C', 'K', 'E', 'D', '\020', '\206', '\004', '\022', '\013', '\n', '\006', 'L', 'O', 'G', 'G', 'E', 'D', '\020', '\207', '\004', '\022', '\014', '\n', '\007', 'M', 'A', 'P', 'P', 'I', 'N', 'G', '\020', '\210', '\004', '\022', '\n', '\n', '\005', 'M', 'A', 'T', 'C', 'H', '\020', '\211', '\004', '\022', '\014', '\n', '\007', 'M', 'A', 'T', 'C', 'H', 'E', 'D', '\020', '\212', '\004', '\022', '\021', '\n', '\014', 'M', 'A', 'T', 'E', 'R', 'I', 'A', 'L', 'I', 'Z', 'E', 'D', '\020', '\213', '\004', '\022', '\r', '\n', '\010', 'M', 'A', 'X', 'V', 'A', 'L', 'U', 'E', '\020', '\214', '\004', '\022', '\n', '\n', '\005', 'M', 'E', 'R', 'G', 'E', '\020', '\215', '\004', '\022', '\021', '\n', '\014', 'M', 'E', 'R', 'G', 'E', '_', 'A', 'C', 'T', 'I', 'O', 'N', '\020', '\216', '\004', '\022', '\013', '\n', '\006', 'M', 'E', 'T', 'H', 'O', 'D', '\020', '\217', '\004', '\022', '\r', '\n', '\010', 'M', 'I', 'N', 'U', 'T', 'E', '_', 'P', '\020', '\220', '\004', '\022', '\r', '\n', '\010', 'M', 'I', 'N', 'V', 'A', 'L', 'U', 'E', '\020', '\221', '\004', '\022', '\t', '\n', '\004', 'M', 'O', 'D', 'E', '\020', '\222', '\004', '\022', '\014', '\n', '\007', 'M', 'O', 'N', 'T', 'H', '_', 'P', '\020', '\223', '\004', '\022', '\t', '\n', '\004', 'M', 'O', 'V', 'E', '\020', '\224', '\004', '\022', '\013', '\n', '\006', 'N', 'A', 'M', 'E', '_', 'P', '\020', '\225', '\004', '\022', '\n', '\n', '\005', 'N', 'A', 'M', 'E', 'S', '\020', '\226', '\004', '\022', '\r', '\n', '\010', 'N', 'A', 'T', 'I', 'O', 'N', 'A', 'L', '\020', '\227', '\004', '\022', '\014', '\n', '\007', 'N', 'A', 'T', 'U', 'R', 'A', 'L', '\020', '\230', '\004', '\022', '\n', '\n', '\005', 'N', 'C', 'H', 'A', 'R', '\020', '\231', '\004', '\022', '\013', '\n', '\006', 'N', 'E', 'S', 'T', 'E', 'D', '\020', '\232', '\004', '\022', '\010', '\n', '\003', 'N', 'E', 'W', '\020', '\233', '\004', '\022', '\t', '\n', '\004', 'N', 'E', 'X', 'T', '\020', '\234', '\004', '\022', '\010', '\n', '\003', 'N', 'F', 'C', '\020', '\235', '\004', '\022', '\010', '\n', '\003', 'N', 'F', 'D', '\020', '\236', '\004', '\022', '\t', '\n', '\004', 'N', 'F', 'K', 'C', '\020', '\237', '\004', '\022', '\t', '\n', '\004', 'N', 'F', 'K', 'D', '\020', '\240', '\004', '\022', '\007', '\n', '\002', 'N', 'O', '\020', '\241', '\004', '\022', '\t', '\n', '\004', 'N', 'O', 'N', 'E', '\020', '\242', '\004', '\022', '\016', '\n', '\t', 'N', 'O', 'R', 'M', 'A', 'L', 'I', 'Z', 'E', '\020', '\243', '\004', '\022', '\017', '\n', '\n', 'N', 'O', 'R', 'M', 'A', 'L', 'I', 'Z', 'E', 'D', '\020', '\244', '\004', '\022', '\010', '\n', '\003', 'N', 'O', 'T', '\020', '\245', '\004', '\022', '\014', '\n', '\007', 'N', 'O', 'T', 'H', 'I', 'N', 'G', '\020', '\246', '\004', '\022', '\013', '\n', '\006', 'N', 'O', 'T', 'I', 'F', 'Y', '\020', '\247', '\004', '\022', '\014', '\n', '\007', 'N', 'O', 'T', 'N', 'U', 'L', 'L', '\020', '\250', '\004', '\022', '\013', '\n', '\006', 'N', 'O', 'W', 'A', 'I', 'T', '\020', '\251', '\004', '\022', '\013', '\n', '\006', 'N', 'U', 'L', 'L', '_', 'P', '\020', '\252', '\004', '\022', '\013', '\n', '\006', 'N', 'U', 'L', 'L', 'I', 'F', '\020', '\253', '\004', '\022', '\014', '\n', '\007', 'N', 'U', 'L', 'L', 'S', '_', 'P', '\020', '\254', '\004', '\022', '\014', '\n', '\007', 'N', 'U', 'M', 'E', 'R', 'I', 'C', '\020', '\255', '\004', '\022', '\r', '\n', '\010', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'P', '\020', '\256', '\004', '\022', '\007', '\n', '\002', 'O', 'F', '\020', '\257', '\004', '\022', '\010', '\n', '\003', 'O', 'F', 'F', '\020', '\260', '\004', '\022', '\013', '\n', '\006', 'O', 'F', 'F', 'S', 'E', 'T', '\020', '\261', '\004', '\022', '\t', '\n', '\004', 'O', 'I', 'D', 'S', '\020', '\262', '\004', '\022', '\010', '\n', '\003', 'O', 'L', 'D', '\020', '\263', '\004', '\022', '\t', '\n', '\004', 'O', 'M', 'I', 'T', '\020', '\264', '\004', '\022', '\007', '\n', '\002', 'O', 'N', '\020', '\265', '\004', '\022', '\t', '\n', '\004', 'O', 'N', 'L', 'Y', '\020', '\266', '\004', '\022', '\r', '\n', '\010', 'O', 'P', 'E', 'R', 'A', 'T', 'O', 'R', '\020', '\267', '\004', '\022', '\013', '\n', '\006', 'O', 'P', 'T', 'I', 'O', 'N', '\020', '\270', '\004', '\022', '\014', '\n', '\007', 'O', 'P', 'T', 'I', 'O', 'N', 'S', '\020', '\271', '\004', '\022', '\007', '\n', '\002', 'O', 'R', '\020', '\272', '\004', '\022', '\n', '\n', '\005', 'O', 'R', 'D', 'E', 'R', '\020', '\273', '\004', '\022', '\017', '\n', '\n', 'O', 'R', 'D', 'I', 'N', 'A', 'L', 'I', 'T', 'Y', '\020', '\274', '\004', '\022', '\013', '\n', '\006', 'O', 'T', 'H', 'E', 'R', 'S', '\020', '\275', '\004', '\022', '\n', '\n', '\005', 'O', 'U', 'T', '_', 'P', '\020', '\276', '\004', '\022', '\014', '\n', '\007', 'O', 'U', 'T', 'E', 'R', '_', 'P', '\020', '\277', '\004', '\022', '\t', '\n', '\004', 'O', 'V', 'E', 'R', '\020', '\300', '\004', '\022', '\r', '\n', '\010', 'O', 'V', 'E', 'R', 'L', 'A', 'P', 'S', '\020', '\301', '\004', '\022', '\014', '\n', '\007', 'O', 'V', 'E', 'R', 'L', 'A', 'Y', '\020', '\302', '\004', '\022', '\017', '\n', '\n', 'O', 'V', 'E', 'R', 'R', 'I', 'D', 'I', 'N', 'G', '\020', '\303', '\004', '\022', '\n', '\n', '\005', 'O', 'W', 'N', 'E', 'D', '\020', '\304', '\004', '\022', '\n', '\n', '\005', 'O', 'W', 'N', 'E', 'R', '\020', '\305', '\004', '\022', '\r', '\n', '\010', 'P', 'A', 'R', 'A', 'L', 'L', 'E', 'L', '\020', '\306', '\004', '\022', '\016', '\n', '\t', 'P', 'A', 'R', 'A', 'M', 'E', 'T', 'E', 'R', '\020', '\307', '\004', '\022', '\013', '\n', '\006', 'P', 'A', 'R', 'S', 'E', 'R', '\020', '\310', '\004', '\022', '\014', '\n', '\007', 'P', 'A', 'R', 'T', 'I', 'A', 'L', '\020', '\311', '\004', '\022', '\016', '\n', '\t', 'P', 'A', 'R', 'T', 'I', 'T', 'I', 'O', 'N', '\020', '\312', '\004', '\022', '\014', '\n', '\007', 'P', 'A', 'S', 'S', 'I', 'N', 'G', '\020', '\313', '\004', '\022', '\r', '\n', '\010', 'P', 'A', 'S', 'S', 'W', 'O', 'R', 'D', '\020', '\314', '\004', '\022', '\t', '\n', '\004', 'P', 'A', 'T', 'H', '\020', '\315', '\004', '\022', '\014', '\n', '\007', 'P', 'L', 'A', 'C', 'I', 'N', 'G', '\020', '\316', '\004', '\022', '\t', '\n', '\004', 'P', 'L', 'A', 'N', '\020', '\317', '\004', '\022', '\n', '\n', '\005', 'P', 'L', 'A', 'N', 'S', '\020', '\320', '\004', '\022', '\013', '\n', '\006', 'P', 'O', 'L', 'I', 'C', 'Y', '\020', '\321', '\004', '\022', '\r', '\n', '\010', 'P', 'O', 'S', 'I', 'T', 'I', 'O', 'N', '\020', '\322', '\004', '\022', '\016', '\n', '\t', 'P', 'R', 'E', 'C', 'E', 'D', 'I', 'N', 'G', '\020', '\323', '\004', '\022', '\016', '\n', '\t', 'P', 'R', 'E', 'C', 'I', 'S', 'I', 'O', 'N', '\020', '\324', '\004', '\022', '\r', '\n', '\010', 'P', 'R', 'E', 'S', 'E', 'R', 'V', 'E', '\020', '\325', '\004', '\022', '\014', '\n', '\007', 'P', 'R', 'E', 'P', 'A', 'R', 'E', '\020', '\326', '\004', '\022', '\r', '\n', '\010', 'P', 'R', 'E', 'P', 'A', 'R', 'E', 'D', '\020', '\327', '\004', '\022', '\014', '\n', '\007', 'P', 'R', 'I', 'M', 'A', 'R', 'Y', '\020', '\330', '\004', '\022', '\n', '\n', '\005', 'P', 'R', 'I', 'O', 'R', '\020', '\331', '\004', '\022', '\017', '\n', '\n', 'P', 'R', 'I', 'V', 'I', 'L', 'E', 'G', 'E', 'S', '\020', '\332', '\004', '\022', '\017', '\n', '\n', 'P', 'R', 'O', 'C', 'E', 'D', 'U', 'R', 'A', 'L', '\020', '\333', '\004', '\022', '\016', '\n', '\t', 'P', 'R', 'O', 'C', 'E', 'D', 'U', 'R', 'E', '\020', '\334', '\004', '\022', '\017', '\n', '\n', 'P', 'R', 'O', 'C', 'E', 'D', 'U', 'R', 'E', 'S', '\020', '\335', '\004', '\022', '\014', '\n', '\007', 'P', 'R', 'O', 'G', 'R', 'A', 'M', '\020', '\336', '\004', '\022', '\020', '\n', '\013', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', '\020', '\337', '\004', '\022', '\n', '\n', '\005', 'Q', 'U', 'O', 'T', 'E', '\020', '\340', '\004', '\022', '\013', '\n', '\006', 'Q', 'U', 'O', 'T', 'E', 'S', '\020', '\341', '\004', '\022', '\n', '\n', '\005', 'R', 'A', 'N', 'G', 'E', '\020', '\342', '\004', '\022', '\t', '\n', '\004', 'R', 'E', 'A', 'D', '\020', '\343', '\004', '\022', '\t', '\n', '\004', 'R', 'E', 'A', 'L', '\020', '\344', '\004', '\022', '\r', '\n', '\010', 'R', 'E', 'A', 'S', 'S', 'I', 'G', 'N', '\020', '\345', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'C', 'H', 'E', 'C', 'K', '\020', '\346', '\004', '\022', '\016', '\n', '\t', 'R', 'E', 'C', 'U', 'R', 'S', 'I', 'V', 'E', '\020', '\347', '\004', '\022', '\n', '\n', '\005', 'R', 'E', 'F', '_', 'P', '\020', '\350', '\004', '\022', '\017', '\n', '\n', 'R', 'E', 'F', 'E', 'R', 'E', 'N', 'C', 'E', 'S', '\020', '\351', '\004', '\022', '\020', '\n', '\013', 'R', 'E', 'F', 'E', 'R', 'E', 'N', 'C', 'I', 'N', 'G', '\020', '\352', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'F', 'R', 'E', 'S', 'H', '\020', '\353', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'I', 'N', 'D', 'E', 'X', '\020', '\354', '\004', '\022', '\017', '\n', '\n', 'R', 'E', 'L', 'A', 'T', 'I', 'V', 'E', '_', 'P', '\020', '\355', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'L', 'E', 'A', 'S', 'E', '\020', '\356', '\004', '\022', '\013', '\n', '\006', 'R', 'E', 'N', 'A', 'M', 'E', '\020', '\357', '\004', '\022', '\017', '\n', '\n', 'R', 'E', 'P', 'E', 'A', 'T', 'A', 'B', 'L', 'E', '\020', '\360', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'P', 'L', 'A', 'C', 'E', '\020', '\361', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'P', 'L', 'I', 'C', 'A', '\020', '\362', '\004', '\022', '\n', '\n', '\005', 'R', 'E', 'S', 'E', 'T', '\020', '\363', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'S', 'T', 'A', 'R', 'T', '\020', '\364', '\004', '\022', '\r', '\n', '\010', 'R', 'E', 'S', 'T', 'R', 'I', 'C', 'T', '\020', '\365', '\004', '\022', '\013', '\n', '\006', 'R', 'E', 'T', 'U', 'R', 'N', '\020', '\366', '\004', '\022', '\016', '\n', '\t', 'R', 'E', 'T', 'U', 'R', 'N', 'I', 'N', 'G', '\020', '\367', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'T', 'U', 'R', 'N', 'S', '\020', '\370', '\004', '\022', '\013', '\n', '\006', 'R', 'E', 'V', 'O', 'K', 'E', '\020', '\371', '\004', '\022', '\n', '\n', '\005', 'R', 'I', 'G', 'H', 'T', '\020', '\372', '\004', '\022', '\t', '\n', '\004', 'R', 'O', 'L', 'E', '\020', '\373', '\004', '\022', '\r', '\n', '\010', 'R', 'O', 'L', 'L', 'B', 'A', 'C', 'K', '\020', '\374', '\004', '\022', '\013', '\n', '\006', 'R', 'O', 'L', 'L', 'U', 'P', '\020', '\375', '\004', '\022', '\014', '\n', '\007', 'R', 'O', 'U', 'T', 'I', 'N', 'E', '\020', '\376', '\004', '\022', '\r', '\n', '\010', 'R', 'O', 'U', 'T', 'I', 'N', 'E', 'S', '\020', '\377', '\004', '\022', '\010', '\n', '\003', 'R', 'O', 'W', '\020', '\200', '\005', '\022', '\t', '\n', '\004', 'R', 'O', 'W', 'S', '\020', '\201', '\005', '\022', '\t', '\n', '\004', 'R', 'U', 'L', 'E', '\020', '\202', '\005', '\022', '\016', '\n', '\t', 'S', 'A', 'V', 'E', 'P', 'O', 'I', 'N', 'T', '\020', '\203', '\005', '\022', '\013', '\n', '\006', 'S', 'C', 'A', 'L', 'A', 'R', '\020', '\204', '\005', '\022', '\013', '\n', '\006', 'S', 'C', 'H', 'E', 'M', 'A', '\020', '\205', '\005', '\022', '\014', '\n', '\007', 'S', 'C', 'H', 'E', 'M', 'A', 'S', '\020', '\206', '\005', '\022', '\013', '\n', '\006', 'S', 'C', 'R', 'O', 'L', 'L', '\020', '\207', '\005', '\022', '\013', '\n', '\006', 'S', 'E', 'A', 'R', 'C', 'H', '\020', '\210', '\005', '\022', '\r', '\n', '\010', 'S', 'E', 'C', 'O', 'N', 'D', '_', 'P', '\020', '\211', '\005', '\022', '\r', '\n', '\010', 'S', 'E', 'C', 'U', 'R', 'I', 'T', 'Y', '\020', '\212', '\005', '\022', '\013', '\n', '\006', 'S', 'E', 'L', 'E', 'C', 'T', '\020', '\213', '\005', '\022', '\r', '\n', '\010', 'S', 'E', 'Q', 'U', 'E', 'N', 'C', 'E', '\020', '\214', '\005', '\022', '\016', '\n', '\t', 'S', 'E', 'Q', 'U', 'E', 'N', 'C', 'E', 'S', '\020', '\215', '\005', '\022', '\021', '\n', '\014', 'S', 'E', 'R', 'I', 'A', 'L', 'I', 'Z', 'A', 'B', 'L', 'E', '\020', '\216', '\005', '\022', '\013', '\n', '\006', 'S', 'E', 'R', 'V', 'E', 'R', '\020', '\217', '\005', '\022', '\014', '\n', '\007', 'S', 'E', 'S', 'S', 'I', 'O', 'N', '\020', '\220', '\005', '\022', '\021', '\n', '\014', 'S', 'E', 'S', 'S', 'I', 'O', 'N', '_', 'U', 'S', 'E', 'R', '\020', '\221', '\005', '\022', '\010', '\n', '\003', 'S', 'E', 'T', '\020', '\222', '\005', '\022', '\t', '\n', '\004', 'S', 'E', 'T', 'S', '\020', '\223', '\005', '\022', '\n', '\n', '\005', 'S', 'E', 'T', 'O', 'F', '\020', '\224', '\005', '\022', '\n', '\n', '\005', 'S', 'H', 'A', 'R', 'E', '\020', '\225', '\005', '\022', '\t', '\n', '\004', 'S', 'H', 'O', 'W', '\020', '\226', '\005', '\022', '\014', '\n', '\007', 'S', 'I', 'M', 'I', 'L', 'A', 'R', '\020', '\227', '\005', '\022', '\013', '\n', '\006', 'S', 'I', 'M', 'P', 'L', 'E', '\020', '\230', '\005', '\022', '\t', '\n', '\004', 'S', 'K', 'I', 'P', '\020', '\231', '\005', '\022', '\r', '\n', '\010', 'S', 'M', 'A', 'L', 'L', 'I', 'N', 'T', '\020', '\232', '\005', '\022', '\r', '\n', '\010', 'S', 'N', 'A', 'P', 'S', 'H', 'O', 'T', '\020', '\233', '\005', '\022', '\t', '\n', '\004', 'S', 'O', 'M', 'E', '\020', '\234', '\005', '\022', '\013', '\n', '\006', 'S', 'O', 'U', 'R', 'C', 'E', '\020', '\235', '\005', '\022', '\n', '\n', '\005', 'S', 'Q', 'L', '_', 'P', '\020', '\236', '\005', '\022', '\013', '\n', '\006', 'S', 'T', 'A', 'B', 'L', 'E', '\020', '\237', '\005', '\022', '\021', '\n', '\014', 'S', 'T', 'A', 'N', 'D', 'A', 'L', 'O', 'N', 'E', '_', 'P', '\020', '\240', '\005', '\022', '\n', '\n', '\005', 'S', 'T', 'A', 'R', 'T', '\020', '\241', '\005', '\022', '\016', '\n', '\t', 'S', 'T', 'A', 'T', 'E', 'M', 'E', 'N', 'T', '\020', '\242', '\005', '\022', '\017', '\n', '\n', 'S', 'T', 'A', 'T', 'I', 'S', 'T', 'I', 'C', 'S', '\020', '\243', '\005', '\022', '\n', '\n', '\005', 'S', 'T', 'D', 'I', 'N', '\020', '\244', '\005', '\022', '\013', '\n', '\006', 'S', 'T', 'D', 'O', 'U', 'T', '\020', '\245', '\005', '\022', '\014', '\n', '\007', 'S', 'T', 'O', 'R', 'A', 'G', 'E', '\020', '\246', '\005', '\022', '\013', '\n', '\006', 'S', 'T', 'O', 'R', 'E', 'D', '\020', '\247', '\005', '\022', '\r', '\n', '\010', 'S', 'T', 'R', 'I', 'C', 'T', '_', 'P', '\020', '\250', '\005', '\022', '\r', '\n', '\010', 'S', 'T', 'R', 'I', 'N', 'G', '_', 'P', '\020', '\251', '\005', '\022', '\014', '\n', '\007', 'S', 'T', 'R', 'I', 'P', '_', 'P', '\020', '\252', '\005', '\022', '\021', '\n', '\014', 'S', 'U', 'B', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N', '\020', '\253', '\005', '\022', '\016', '\n', '\t', 'S', 'U', 'B', 'S', 'T', 'R', 'I', 'N', 'G', '\020', '\254', '\005', '\022', '\014', '\n', '\007', 'S', 'U', 'P', 'P', 'O', 'R', 'T', '\020', '\255', '\005', '\022', '\016', '\n', '\t', 'S', 'Y', 'M', 'M', 'E', 'T', 'R', 'I', 'C', '\020', '\256', '\005', '\022', '\n', '\n', '\005', 'S', 'Y', 'S', 'I', 'D', '\020', '\257', '\005', '\022', '\r', '\n', '\010', 'S', 'Y', 'S', 'T', 'E', 'M', '_', 'P', '\020', '\260', '\005', '\022', '\020', '\n', '\013', 'S', 'Y', 'S', 'T', 'E', 'M', '_', 'U', 'S', 'E', 'R', '\020', '\261', '\005', '\022', '\n', '\n', '\005', 'T', 'A', 'B', 'L', 'E', '\020', '\262', '\005', '\022', '\013', '\n', '\006', 'T', 'A', 'B', 'L', 'E', 'S', '\020', '\263', '\005', '\022', '\020', '\n', '\013', 'T', 'A', 'B', 'L', 'E', 'S', 'A', 'M', 'P', 'L', 'E', '\020', '\264', '\005', '\022', '\017', '\n', '\n', 'T', 'A', 'B', 'L', 'E', 'S', 'P', 'A', 'C', 'E', '\020', '\265', '\005', '\022', '\013', '\n', '\006', 'T', 'A', 'R', 'G', 'E', 'T', '\020', '\266', '\005', '\022', '\t', '\n', '\004', 'T', 'E', 'M', 'P', '\020', '\267', '\005', '\022', '\r', '\n', '\010', 'T', 'E', 'M', 'P', 'L', 'A', 'T', 'E', '\020', '\270', '\005', '\022', '\016', '\n', '\t', 'T', 'E', 'M', 'P', 'O', 'R', 'A', 'R', 'Y', '\020', '\271', '\005', '\022', '\013', '\n', '\006', 'T', 'E', 'X', 'T', '_', 'P', '\020', '\272', '\005', '\022', '\t', '\n', '\004', 'T', 'H', 'E', 'N', '\020', '\273', '\005', '\022', '\t', '\n', '\004', 'T', 'I', 'E', 'S', '\020', '\274', '\005', '\022', '\t', '\n', '\004', 'T', 'I', 'M', 'E', '\020', '\275', '\005', '\022', '\016', '\n', '\t', 'T', 'I', 'M', 'E', 'S', 'T', 'A', 'M', 'P', '\020', '\276', '\005', '\022', '\007', '\n', '\002', 'T', 'O', '\020', '\277', '\005', '\022', '\r', '\n', '\010', 'T', 'R', 'A', 'I', 'L', 'I', 'N', 'G', '\020', '\300', '\005', '\022', '\020', '\n', '\013', 'T', 'R', 'A', 'N', 'S', 'A', 'C', 'T', 'I', 'O', 'N', '\020', '\301', '\005', '\022', '\016', '\n', '\t', 'T', 'R', 'A', 'N', 'S', 'F', 'O', 'R', 'M', '\020', '\302', '\005', '\022', '\n', '\n', '\005', 'T', 'R', 'E', 'A', 'T', '\020', '\303', '\005', '\022', '\014', '\n', '\007', 'T', 'R', 'I', 'G', 'G', 'E', 'R', '\020', '\304', '\005', '\022', '\t', '\n', '\004', 'T', 'R', 'I', 'M', '\020', '\305', '\005', '\022', '\013', '\n', '\006', 'T', 'R', 'U', 'E', '_', 'P', '\020', '\306', '\005', '\022', '\r', '\n', '\010', 'T', 'R', 'U', 'N', 'C', 'A', 'T', 'E', '\020', '\307', '\005', '\022', '\014', '\n', '\007', 'T', 'R', 'U', 'S', 'T', 'E', 'D', '\020', '\310', '\005', '\022', '\013', '\n', '\006', 'T', 'Y', 'P', 'E', '_', 'P', '\020', '\311', '\005', '\022', '\014', '\n', '\007', 'T', 'Y', 'P', 'E', 'S', '_', 'P', '\020', '\312', '\005', '\022', '\014', '\n', '\007', 'U', 'E', 'S', 'C', 'A', 'P', 'E', '\020', '\313', '\005', '\022', '\016', '\n', '\t', 'U', 'N', 'B', 'O', 'U', 'N', 'D', 'E', 'D', '\020', '\314', '\005', '\022', '\022', '\n', '\r', 'U', 'N', 'C', 'O', 'N', 'D', 'I', 'T', 'I', 'O', 'N', 'A', 'L', '\020', '\315', '\005', '\022', '\020', '\n', '\013', 'U', 'N', 'C', 'O', 'M', 'M', 'I', 'T', 'T', 'E', 'D', '\020', '\316', '\005', '\022', '\020', '\n', '\013', 'U', 'N', 'E', 'N', 'C', 'R', 'Y', 'P', 'T', 'E', 'D', '\020', '\317', '\005', '\022', '\n', '\n', '\005', 'U', 'N', 'I', 'O', 'N', '\020', '\320', '\005', '\022', '\013', '\n', '\006', 'U', 'N', 'I', 'Q', 'U', 'E', '\020', '\321', '\005', '\022', '\014', '\n', '\007', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\322', '\005', '\022', '\r', '\n', '\010', 'U', 'N', 'L', 'I', 'S', 'T', 'E', 'N', '\020', '\323', '\005', '\022', '\r', '\n', '\010', 'U', 'N', 'L', 'O', 'G', 'G', 'E', 'D', '\020', '\324', '\005', '\022', '\n', '\n', '\005', 'U', 'N', 'T', 'I', 'L', '\020', '\325', '\005', '\022', '\013', '\n', '\006', 'U', 'P', 'D', 'A', 'T', 'E', '\020', '\326', '\005', '\022', '\t', '\n', '\004', 'U', 'S', 'E', 'R', '\020', '\327', '\005', '\022', '\n', '\n', '\005', 'U', 'S', 'I', 'N', 'G', '\020', '\330', '\005', '\022', '\013', '\n', '\006', 'V', 'A', 'C', 'U', 'U', 'M', '\020', '\331', '\005', '\022', '\n', '\n', '\005', 'V', 'A', 'L', 'I', 'D', '\020', '\332', '\005', '\022', '\r', '\n', '\010', 'V', 'A', 'L', 'I', 'D', 'A', 'T', 'E', '\020', '\333', '\005', '\022', '\016', '\n', '\t', 'V', 'A', 'L', 'I', 'D', 'A', 'T', 'O', 'R', '\020', '\334', '\005', '\022', '\014', '\n', '\007', 'V', 'A', 'L', 'U', 'E', '_', 'P', '\020', '\335', '\005', '\022', '\013', '\n', '\006', 'V', 'A', 'L', 'U', 'E', 'S', '\020', '\336', '\005', '\022', '\014', '\n', '\007', 'V', 'A', 'R', 'C', 'H', 'A', 'R', '\020', '\337', '\005', '\022', '\r', '\n', '\010', 'V', 'A', 'R', 'I', 'A', 'D', 'I', 'C', '\020', '\340', '\005', '\022', '\014', '\n', '\007', 'V', 'A', 'R', 'Y', 'I', 'N', 'G', '\020', '\341', '\005', '\022', '\014', '\n', '\007', 'V', 'E', 'R', 'B', 'O', 'S', 'E', '\020', '\342', '\005', '\022', '\016', '\n', '\t', 'V', 'E', 'R', 'S', 'I', 'O', 'N', '_', 'P', '\020', '\343', '\005', '\022', '\t', '\n', '\004', 'V', 'I', 'E', 'W', '\020', '\344', '\005', '\022', '\n', '\n', '\005', 'V', 'I', 'E', 'W', 'S', '\020', '\345', '\005', '\022', '\r', '\n', '\010', 'V', 'O', 'L', 'A', 'T', 'I', 'L', 'E', '\020', '\346', '\005', '\022', '\t', '\n', '\004', 'W', 'H', 'E', 'N', '\020', '\347', '\005', '\022', '\n', '\n', '\005', 'W', 'H', 'E', 'R', 'E', '\020', '\350', '\005', '\022', '\021', '\n', '\014', 'W', 'H', 'I', 'T', 'E', 'S', 'P', 'A', 'C', 'E', '_', 'P', '\020', '\351', '\005', '\022', '\013', '\n', '\006', 'W', 'I', 'N', 'D', 'O', 'W', '\020', '\352', '\005', '\022', '\t', '\n', '\004', 'W', 'I', 'T', 'H', '\020', '\353', '\005', '\022', '\013', '\n', '\006', 'W', 'I', 'T', 'H', 'I', 'N', '\020', '\354', '\005', '\022', '\014', '\n', '\007', 'W', 'I', 'T', 'H', 'O', 'U', 'T', '\020', '\355', '\005', '\022', '\t', '\n', '\004', 'W', 'O', 'R', 'K', '\020', '\356', '\005', '\022', '\014', '\n', '\007', 'W', 'R', 'A', 'P', 'P', 'E', 'R', '\020', '\357', '\005', '\022', '\n', '\n', '\005', 'W', 'R', 'I', 'T', 'E', '\020', '\360', '\005', '\022', '\n', '\n', '\005', 'X', 'M', 'L', '_', 'P', '\020', '\361', '\005', '\022', '\022', '\n', '\r', 'X', 'M', 'L', 'A', 'T', 'T', 'R', 'I', 'B', 'U', 'T', 'E', 'S', '\020', '\362', '\005', '\022', '\016', '\n', '\t', 'X', 'M', 'L', 'C', 'O', 'N', 'C', 'A', 'T', '\020', '\363', '\005', '\022', '\017', '\n', '\n', 'X', 'M', 'L', 'E', 'L', 'E', 'M', 'E', 'N', 'T', '\020', '\364', '\005', '\022', '\016', '\n', '\t', 'X', 'M', 'L', 'E', 'X', 'I', 'S', 'T', 'S', '\020', '\365', '\005', '\022', '\016', '\n', '\t', 'X', 'M', 'L', 'F', 'O', 'R', 'E', 'S', 'T', '\020', '\366', '\005', '\022', '\022', '\n', '\r', 'X', 'M', 'L', 'N', 'A', 'M', 'E', 'S', 'P', 'A', 'C', 'E', 'S', '\020', '\367', '\005', '\022', '\r', '\n', '\010', 'X', 'M', 'L', 'P', 'A', 'R', 'S', 'E', '\020', '\370', '\005', '\022', '\n', '\n', '\005', 'X', 'M', 'L', 'P', 'I', '\020', '\371', '\005', '\022', '\014', '\n', '\007', 'X', 'M', 'L', 'R', 'O', 'O', 'T', '\020', '\372', '\005', '\022', '\021', '\n', '\014', 'X', 'M', 'L', 'S', 'E', 'R', 'I', 'A', 'L', 'I', 'Z', 'E', '\020', '\373', '\005', '\022', '\r', '\n', '\010', 'X', 'M', 'L', 'T', 'A', 'B', 'L', 'E', '\020', '\374', '\005', '\022', '\013', '\n', '\006', 'Y', 'E', 'A', 'R', '_', 'P', '\020', '\375', '\005', '\022', '\n', '\n', '\005', 'Y', 'E', 'S', '_', 'P', '\020', '\376', '\005', '\022', '\t', '\n', '\004', 'Z', 'O', 'N', 'E', '\020', '\377', '\005', '\022', '\016', '\n', '\t', 'F', 'O', 'R', 'M', 'A', 'T', '_', 'L', 'A', '\020', '\200', '\006', '\022', '\013', '\n', '\006', 'N', 'O', 'T', '_', 'L', 'A', '\020', '\201', '\006', '\022', '\r', '\n', '\010', 'N', 'U', 'L', 'L', 'S', '_', 'L', 'A', '\020', '\202', '\006', '\022', '\014', '\n', '\007', 'W', 'I', 'T', 'H', '_', 'L', 'A', '\020', '\203', '\006', '\022', '\017', '\n', '\n', 'W', 'I', 'T', 'H', 'O', 'U', 'T', '_', 'L', 'A', '\020', '\204', '\006', '\022', '\023', '\n', '\016', 'M', 'O', 'D', 'E', '_', 'T', 'Y', 'P', 'E', '_', 'N', 'A', 'M', 'E', '\020', '\205', '\006', '\022', '\026', '\n', '\021', 'M', 'O', 'D', 'E', '_', 'P', 'L', 'P', 'G', 'S', 'Q', 'L', '_', 'E', 'X', 'P', 'R', '\020', '\206', '\006', '\022', '\031', '\n', '\024', 'M', 'O', 'D', 'E', '_', 'P', 'L', 'P', 'G', 'S', 'Q', 'L', '_', 'A', 'S', 'S', 'I', 'G', 'N', '1', '\020', '\207', '\006', '\022', '\031', '\n', '\024', 'M', 'O', 'D', 'E', '_', 'P', 'L', 'P', 'G', 'S', 'Q', 'L', '_', 'A', 'S', 'S', 'I', 'G', 'N', '2', '\020', '\210', '\006', '\022', '\031', '\n', '\024', 'M', 'O', 'D', 'E', '_', 'P', 'L', 'P', 'G', 'S', 'Q', 'L', '_', 'A', 'S', 'S', 'I', 'G', 'N', '3', '\020', '\211', '\006', '\022', '\013', '\n', '\006', 'U', 'M', 'I', 'N', 'U', 'S', '\020', '\212', '\006', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', }; static ::absl::once_flag descriptor_table_protobuf_2fpg_5fquery_2eproto_once; const ::_pbi::DescriptorTable descriptor_table_protobuf_2fpg_5fquery_2eproto = { false, false, 98901, descriptor_table_protodef_protobuf_2fpg_5fquery_2eproto, "protobuf/pg_query.proto", &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, nullptr, 0, 272, schemas, file_default_instances, TableStruct_protobuf_2fpg_5fquery_2eproto::offsets, file_level_metadata_protobuf_2fpg_5fquery_2eproto, file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto, file_level_service_descriptors_protobuf_2fpg_5fquery_2eproto, }; // This function exists to be marked as weak. // It can significantly speed up compilation by breaking up LLVM's SCC // in the .pb.cc translation units. Large translation units see a // reduction of more than 35% of walltime for optimized builds. Without // the weak attribute all the messages in the file, including all the // vtables and everything they use become part of the same SCC through // a cycle like: // GetMetadata -> descriptor table -> default instances -> // vtables -> GetMetadata // By adding a weak function here we break the connection from the // individual vtables back into the descriptor table. PROTOBUF_ATTRIBUTE_WEAK const ::_pbi::DescriptorTable* descriptor_table_protobuf_2fpg_5fquery_2eproto_getter() { return &descriptor_table_protobuf_2fpg_5fquery_2eproto; } // Force running AddDescriptors() at dynamic initialization time. PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::_pbi::AddDescriptorsRunner dynamic_init_dummy_protobuf_2fpg_5fquery_2eproto(&descriptor_table_protobuf_2fpg_5fquery_2eproto); namespace pg_query { const ::google::protobuf::EnumDescriptor* QuerySource_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[0]; } PROTOBUF_CONSTINIT const uint32_t QuerySource_internal_data_[] = { 393216u, 0u, }; bool QuerySource_IsValid(int value) { return 0 <= value && value <= 5; } const ::google::protobuf::EnumDescriptor* SortByDir_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[1]; } PROTOBUF_CONSTINIT const uint32_t SortByDir_internal_data_[] = { 327680u, 0u, }; bool SortByDir_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* SortByNulls_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[2]; } PROTOBUF_CONSTINIT const uint32_t SortByNulls_internal_data_[] = { 262144u, 0u, }; bool SortByNulls_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* SetQuantifier_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[3]; } PROTOBUF_CONSTINIT const uint32_t SetQuantifier_internal_data_[] = { 262144u, 0u, }; bool SetQuantifier_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* A_Expr_Kind_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[4]; } PROTOBUF_CONSTINIT const uint32_t A_Expr_Kind_internal_data_[] = { 983040u, 0u, }; bool A_Expr_Kind_IsValid(int value) { return 0 <= value && value <= 14; } const ::google::protobuf::EnumDescriptor* RoleSpecType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[5]; } PROTOBUF_CONSTINIT const uint32_t RoleSpecType_internal_data_[] = { 393216u, 0u, }; bool RoleSpecType_IsValid(int value) { return 0 <= value && value <= 5; } const ::google::protobuf::EnumDescriptor* TableLikeOption_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[6]; } PROTOBUF_CONSTINIT const uint32_t TableLikeOption_internal_data_[] = { 720896u, 0u, }; bool TableLikeOption_IsValid(int value) { return 0 <= value && value <= 10; } const ::google::protobuf::EnumDescriptor* DefElemAction_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[7]; } PROTOBUF_CONSTINIT const uint32_t DefElemAction_internal_data_[] = { 327680u, 0u, }; bool DefElemAction_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* PartitionStrategy_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[8]; } PROTOBUF_CONSTINIT const uint32_t PartitionStrategy_internal_data_[] = { 262144u, 0u, }; bool PartitionStrategy_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* PartitionRangeDatumKind_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[9]; } PROTOBUF_CONSTINIT const uint32_t PartitionRangeDatumKind_internal_data_[] = { 262144u, 0u, }; bool PartitionRangeDatumKind_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* RTEKind_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[10]; } PROTOBUF_CONSTINIT const uint32_t RTEKind_internal_data_[] = { 655360u, 0u, }; bool RTEKind_IsValid(int value) { return 0 <= value && value <= 9; } const ::google::protobuf::EnumDescriptor* WCOKind_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[11]; } PROTOBUF_CONSTINIT const uint32_t WCOKind_internal_data_[] = { 458752u, 0u, }; bool WCOKind_IsValid(int value) { return 0 <= value && value <= 6; } const ::google::protobuf::EnumDescriptor* GroupingSetKind_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[12]; } PROTOBUF_CONSTINIT const uint32_t GroupingSetKind_internal_data_[] = { 393216u, 0u, }; bool GroupingSetKind_IsValid(int value) { return 0 <= value && value <= 5; } const ::google::protobuf::EnumDescriptor* CTEMaterialize_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[13]; } PROTOBUF_CONSTINIT const uint32_t CTEMaterialize_internal_data_[] = { 262144u, 0u, }; bool CTEMaterialize_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* JsonQuotes_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[14]; } PROTOBUF_CONSTINIT const uint32_t JsonQuotes_internal_data_[] = { 262144u, 0u, }; bool JsonQuotes_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* JsonTableColumnType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[15]; } PROTOBUF_CONSTINIT const uint32_t JsonTableColumnType_internal_data_[] = { 393216u, 0u, }; bool JsonTableColumnType_IsValid(int value) { return 0 <= value && value <= 5; } const ::google::protobuf::EnumDescriptor* SetOperation_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[16]; } PROTOBUF_CONSTINIT const uint32_t SetOperation_internal_data_[] = { 327680u, 0u, }; bool SetOperation_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* ObjectType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[17]; } PROTOBUF_CONSTINIT const uint32_t ObjectType_internal_data_[] = { 3473408u, 0u, }; bool ObjectType_IsValid(int value) { return 0 <= value && value <= 52; } const ::google::protobuf::EnumDescriptor* DropBehavior_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[18]; } PROTOBUF_CONSTINIT const uint32_t DropBehavior_internal_data_[] = { 196608u, 0u, }; bool DropBehavior_IsValid(int value) { return 0 <= value && value <= 2; } const ::google::protobuf::EnumDescriptor* AlterTableType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[19]; } PROTOBUF_CONSTINIT const uint32_t AlterTableType_internal_data_[] = { 4456448u, 0u, }; bool AlterTableType_IsValid(int value) { return 0 <= value && value <= 67; } const ::google::protobuf::EnumDescriptor* GrantTargetType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[20]; } PROTOBUF_CONSTINIT const uint32_t GrantTargetType_internal_data_[] = { 262144u, 0u, }; bool GrantTargetType_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* VariableSetKind_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[21]; } PROTOBUF_CONSTINIT const uint32_t VariableSetKind_internal_data_[] = { 458752u, 0u, }; bool VariableSetKind_IsValid(int value) { return 0 <= value && value <= 6; } const ::google::protobuf::EnumDescriptor* ConstrType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[22]; } PROTOBUF_CONSTINIT const uint32_t ConstrType_internal_data_[] = { 983040u, 0u, }; bool ConstrType_IsValid(int value) { return 0 <= value && value <= 14; } const ::google::protobuf::EnumDescriptor* ImportForeignSchemaType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[23]; } PROTOBUF_CONSTINIT const uint32_t ImportForeignSchemaType_internal_data_[] = { 262144u, 0u, }; bool ImportForeignSchemaType_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* RoleStmtType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[24]; } PROTOBUF_CONSTINIT const uint32_t RoleStmtType_internal_data_[] = { 262144u, 0u, }; bool RoleStmtType_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* FetchDirection_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[25]; } PROTOBUF_CONSTINIT const uint32_t FetchDirection_internal_data_[] = { 327680u, 0u, }; bool FetchDirection_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* FunctionParameterMode_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[26]; } PROTOBUF_CONSTINIT const uint32_t FunctionParameterMode_internal_data_[] = { 458752u, 0u, }; bool FunctionParameterMode_IsValid(int value) { return 0 <= value && value <= 6; } const ::google::protobuf::EnumDescriptor* TransactionStmtKind_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[27]; } PROTOBUF_CONSTINIT const uint32_t TransactionStmtKind_internal_data_[] = { 720896u, 0u, }; bool TransactionStmtKind_IsValid(int value) { return 0 <= value && value <= 10; } const ::google::protobuf::EnumDescriptor* ViewCheckOption_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[28]; } PROTOBUF_CONSTINIT const uint32_t ViewCheckOption_internal_data_[] = { 262144u, 0u, }; bool ViewCheckOption_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* DiscardMode_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[29]; } PROTOBUF_CONSTINIT const uint32_t DiscardMode_internal_data_[] = { 327680u, 0u, }; bool DiscardMode_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* ReindexObjectType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[30]; } PROTOBUF_CONSTINIT const uint32_t ReindexObjectType_internal_data_[] = { 393216u, 0u, }; bool ReindexObjectType_IsValid(int value) { return 0 <= value && value <= 5; } const ::google::protobuf::EnumDescriptor* AlterTSConfigType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[31]; } PROTOBUF_CONSTINIT const uint32_t AlterTSConfigType_internal_data_[] = { 393216u, 0u, }; bool AlterTSConfigType_IsValid(int value) { return 0 <= value && value <= 5; } const ::google::protobuf::EnumDescriptor* PublicationObjSpecType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[32]; } PROTOBUF_CONSTINIT const uint32_t PublicationObjSpecType_internal_data_[] = { 327680u, 0u, }; bool PublicationObjSpecType_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* AlterPublicationAction_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[33]; } PROTOBUF_CONSTINIT const uint32_t AlterPublicationAction_internal_data_[] = { 262144u, 0u, }; bool AlterPublicationAction_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* AlterSubscriptionType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[34]; } PROTOBUF_CONSTINIT const uint32_t AlterSubscriptionType_internal_data_[] = { 589824u, 0u, }; bool AlterSubscriptionType_IsValid(int value) { return 0 <= value && value <= 8; } const ::google::protobuf::EnumDescriptor* OverridingKind_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[35]; } PROTOBUF_CONSTINIT const uint32_t OverridingKind_internal_data_[] = { 262144u, 0u, }; bool OverridingKind_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* OnCommitAction_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[36]; } PROTOBUF_CONSTINIT const uint32_t OnCommitAction_internal_data_[] = { 327680u, 0u, }; bool OnCommitAction_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* TableFuncType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[37]; } PROTOBUF_CONSTINIT const uint32_t TableFuncType_internal_data_[] = { 196608u, 0u, }; bool TableFuncType_IsValid(int value) { return 0 <= value && value <= 2; } const ::google::protobuf::EnumDescriptor* ParamKind_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[38]; } PROTOBUF_CONSTINIT const uint32_t ParamKind_internal_data_[] = { 327680u, 0u, }; bool ParamKind_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* CoercionContext_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[39]; } PROTOBUF_CONSTINIT const uint32_t CoercionContext_internal_data_[] = { 327680u, 0u, }; bool CoercionContext_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* CoercionForm_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[40]; } PROTOBUF_CONSTINIT const uint32_t CoercionForm_internal_data_[] = { 327680u, 0u, }; bool CoercionForm_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* BoolExprType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[41]; } PROTOBUF_CONSTINIT const uint32_t BoolExprType_internal_data_[] = { 262144u, 0u, }; bool BoolExprType_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* SubLinkType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[42]; } PROTOBUF_CONSTINIT const uint32_t SubLinkType_internal_data_[] = { 589824u, 0u, }; bool SubLinkType_IsValid(int value) { return 0 <= value && value <= 8; } const ::google::protobuf::EnumDescriptor* RowCompareType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[43]; } PROTOBUF_CONSTINIT const uint32_t RowCompareType_internal_data_[] = { 458752u, 0u, }; bool RowCompareType_IsValid(int value) { return 0 <= value && value <= 6; } const ::google::protobuf::EnumDescriptor* MinMaxOp_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[44]; } PROTOBUF_CONSTINIT const uint32_t MinMaxOp_internal_data_[] = { 196608u, 0u, }; bool MinMaxOp_IsValid(int value) { return 0 <= value && value <= 2; } const ::google::protobuf::EnumDescriptor* SQLValueFunctionOp_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[45]; } PROTOBUF_CONSTINIT const uint32_t SQLValueFunctionOp_internal_data_[] = { 1048576u, 0u, }; bool SQLValueFunctionOp_IsValid(int value) { return 0 <= value && value <= 15; } const ::google::protobuf::EnumDescriptor* XmlExprOp_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[46]; } PROTOBUF_CONSTINIT const uint32_t XmlExprOp_internal_data_[] = { 589824u, 0u, }; bool XmlExprOp_IsValid(int value) { return 0 <= value && value <= 8; } const ::google::protobuf::EnumDescriptor* XmlOptionType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[47]; } PROTOBUF_CONSTINIT const uint32_t XmlOptionType_internal_data_[] = { 196608u, 0u, }; bool XmlOptionType_IsValid(int value) { return 0 <= value && value <= 2; } const ::google::protobuf::EnumDescriptor* JsonEncoding_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[48]; } PROTOBUF_CONSTINIT const uint32_t JsonEncoding_internal_data_[] = { 327680u, 0u, }; bool JsonEncoding_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* JsonFormatType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[49]; } PROTOBUF_CONSTINIT const uint32_t JsonFormatType_internal_data_[] = { 262144u, 0u, }; bool JsonFormatType_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* JsonConstructorType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[50]; } PROTOBUF_CONSTINIT const uint32_t JsonConstructorType_internal_data_[] = { 524288u, 0u, }; bool JsonConstructorType_IsValid(int value) { return 0 <= value && value <= 7; } const ::google::protobuf::EnumDescriptor* JsonValueType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[51]; } PROTOBUF_CONSTINIT const uint32_t JsonValueType_internal_data_[] = { 327680u, 0u, }; bool JsonValueType_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* JsonWrapper_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[52]; } PROTOBUF_CONSTINIT const uint32_t JsonWrapper_internal_data_[] = { 327680u, 0u, }; bool JsonWrapper_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* JsonBehaviorType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[53]; } PROTOBUF_CONSTINIT const uint32_t JsonBehaviorType_internal_data_[] = { 655360u, 0u, }; bool JsonBehaviorType_IsValid(int value) { return 0 <= value && value <= 9; } const ::google::protobuf::EnumDescriptor* JsonExprOp_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[54]; } PROTOBUF_CONSTINIT const uint32_t JsonExprOp_internal_data_[] = { 327680u, 0u, }; bool JsonExprOp_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* NullTestType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[55]; } PROTOBUF_CONSTINIT const uint32_t NullTestType_internal_data_[] = { 196608u, 0u, }; bool NullTestType_IsValid(int value) { return 0 <= value && value <= 2; } const ::google::protobuf::EnumDescriptor* BoolTestType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[56]; } PROTOBUF_CONSTINIT const uint32_t BoolTestType_internal_data_[] = { 458752u, 0u, }; bool BoolTestType_IsValid(int value) { return 0 <= value && value <= 6; } const ::google::protobuf::EnumDescriptor* MergeMatchKind_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[57]; } PROTOBUF_CONSTINIT const uint32_t MergeMatchKind_internal_data_[] = { 262144u, 0u, }; bool MergeMatchKind_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* CmdType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[58]; } PROTOBUF_CONSTINIT const uint32_t CmdType_internal_data_[] = { 589824u, 0u, }; bool CmdType_IsValid(int value) { return 0 <= value && value <= 8; } const ::google::protobuf::EnumDescriptor* JoinType_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[59]; } PROTOBUF_CONSTINIT const uint32_t JoinType_internal_data_[] = { 655360u, 0u, }; bool JoinType_IsValid(int value) { return 0 <= value && value <= 9; } const ::google::protobuf::EnumDescriptor* AggStrategy_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[60]; } PROTOBUF_CONSTINIT const uint32_t AggStrategy_internal_data_[] = { 327680u, 0u, }; bool AggStrategy_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* AggSplit_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[61]; } PROTOBUF_CONSTINIT const uint32_t AggSplit_internal_data_[] = { 262144u, 0u, }; bool AggSplit_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* SetOpCmd_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[62]; } PROTOBUF_CONSTINIT const uint32_t SetOpCmd_internal_data_[] = { 327680u, 0u, }; bool SetOpCmd_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* SetOpStrategy_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[63]; } PROTOBUF_CONSTINIT const uint32_t SetOpStrategy_internal_data_[] = { 196608u, 0u, }; bool SetOpStrategy_IsValid(int value) { return 0 <= value && value <= 2; } const ::google::protobuf::EnumDescriptor* OnConflictAction_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[64]; } PROTOBUF_CONSTINIT const uint32_t OnConflictAction_internal_data_[] = { 262144u, 0u, }; bool OnConflictAction_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* LimitOption_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[65]; } PROTOBUF_CONSTINIT const uint32_t LimitOption_internal_data_[] = { 262144u, 0u, }; bool LimitOption_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* LockClauseStrength_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[66]; } PROTOBUF_CONSTINIT const uint32_t LockClauseStrength_internal_data_[] = { 393216u, 0u, }; bool LockClauseStrength_IsValid(int value) { return 0 <= value && value <= 5; } const ::google::protobuf::EnumDescriptor* LockWaitPolicy_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[67]; } PROTOBUF_CONSTINIT const uint32_t LockWaitPolicy_internal_data_[] = { 262144u, 0u, }; bool LockWaitPolicy_IsValid(int value) { return 0 <= value && value <= 3; } const ::google::protobuf::EnumDescriptor* LockTupleMode_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[68]; } PROTOBUF_CONSTINIT const uint32_t LockTupleMode_internal_data_[] = { 327680u, 0u, }; bool LockTupleMode_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* KeywordKind_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[69]; } PROTOBUF_CONSTINIT const uint32_t KeywordKind_internal_data_[] = { 327680u, 0u, }; bool KeywordKind_IsValid(int value) { return 0 <= value && value <= 4; } const ::google::protobuf::EnumDescriptor* Token_descriptor() { ::google::protobuf::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[70]; } PROTOBUF_CONSTINIT const uint32_t Token_internal_data_[] = { 65536u, 800u, 0u, 2113961880u, 1006632960u, 0u, 0u, 0u, 0u, 0u, 4294967294u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u, 1023u, }; bool Token_IsValid(int value) { return ::_pbi::ValidateEnum(value, Token_internal_data_); } // =================================================================== class ParseResult::_Internal { public: }; ParseResult::ParseResult(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ParseResult) } inline PROTOBUF_NDEBUG_INLINE ParseResult::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : stmts_{visibility, arena, from.stmts_}, _cached_size_{0} {} ParseResult::ParseResult( ::google::protobuf::Arena* arena, const ParseResult& from) : ::google::protobuf::Message(arena) { ParseResult* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.version_ = from._impl_.version_; // @@protoc_insertion_point(copy_constructor:pg_query.ParseResult) } inline PROTOBUF_NDEBUG_INLINE ParseResult::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : stmts_{visibility, arena}, _cached_size_{0} {} inline void ParseResult::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.version_ = {}; } ParseResult::~ParseResult() { // @@protoc_insertion_point(destructor:pg_query.ParseResult) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ParseResult::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void ParseResult::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ParseResult) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.stmts_.Clear(); _impl_.version_ = 0; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ParseResult::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 0, 2> ParseResult::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ParseResult_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.RawStmt stmts = 2; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(ParseResult, _impl_.stmts_)}}, // int32 version = 1; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ParseResult, _impl_.version_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(ParseResult, _impl_.version_)}}, }}, {{ 65535, 65535 }}, {{ // int32 version = 1; {PROTOBUF_FIELD_OFFSET(ParseResult, _impl_.version_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // repeated .pg_query.RawStmt stmts = 2; {PROTOBUF_FIELD_OFFSET(ParseResult, _impl_.stmts_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RawStmt>()}, }}, {{ }}, }; ::uint8_t* ParseResult::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ParseResult) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // int32 version = 1; if (this->_internal_version() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<1>( stream, this->_internal_version(), target); } // repeated .pg_query.RawStmt stmts = 2; for (unsigned i = 0, n = static_cast(this->_internal_stmts_size()); i < n; i++) { const auto& repfield = this->_internal_stmts().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_stmts()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // int32 version = 1; if (this->_internal_version() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_version()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ParseResult::_class_data_ = { ParseResult::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ParseResult::GetClassData() const { return &_class_data_; } void ParseResult::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ParseResult) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_stmts()->MergeFrom( from._internal_stmts()); if (from._internal_version() != 0) { _this->_internal_set_version(from._internal_version()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ParseResult::CopyFrom(const ParseResult& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ParseResult) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ParseResult::IsInitialized() const { return true; } ::_pbi::CachedSize* ParseResult::AccessCachedSize() const { return &_impl_._cached_size_; } void ParseResult::InternalSwap(ParseResult* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.stmts_.InternalSwap(&other->_impl_.stmts_); swap(_impl_.version_, other->_impl_.version_); } ::google::protobuf::Metadata ParseResult::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[0]); } // =================================================================== class ScanResult::_Internal { public: }; ScanResult::ScanResult(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ScanResult) } inline PROTOBUF_NDEBUG_INLINE ScanResult::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : tokens_{visibility, arena, from.tokens_}, _cached_size_{0} {} ScanResult::ScanResult( ::google::protobuf::Arena* arena, const ScanResult& from) : ::google::protobuf::Message(arena) { ScanResult* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.version_ = from._impl_.version_; // @@protoc_insertion_point(copy_constructor:pg_query.ScanResult) } inline PROTOBUF_NDEBUG_INLINE ScanResult::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : tokens_{visibility, arena}, _cached_size_{0} {} inline void ScanResult::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.version_ = {}; } ScanResult::~ScanResult() { // @@protoc_insertion_point(destructor:pg_query.ScanResult) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ScanResult::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void ScanResult::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ScanResult) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.tokens_.Clear(); _impl_.version_ = 0; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ScanResult::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 0, 2> ScanResult::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ScanResult_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.ScanToken tokens = 2; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(ScanResult, _impl_.tokens_)}}, // int32 version = 1; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ScanResult, _impl_.version_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(ScanResult, _impl_.version_)}}, }}, {{ 65535, 65535 }}, {{ // int32 version = 1; {PROTOBUF_FIELD_OFFSET(ScanResult, _impl_.version_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // repeated .pg_query.ScanToken tokens = 2; {PROTOBUF_FIELD_OFFSET(ScanResult, _impl_.tokens_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::ScanToken>()}, }}, {{ }}, }; ::uint8_t* ScanResult::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ScanResult) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // int32 version = 1; if (this->_internal_version() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<1>( stream, this->_internal_version(), target); } // repeated .pg_query.ScanToken tokens = 2; for (unsigned i = 0, n = static_cast(this->_internal_tokens_size()); i < n; i++) { const auto& repfield = this->_internal_tokens().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_tokens()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // int32 version = 1; if (this->_internal_version() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_version()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ScanResult::_class_data_ = { ScanResult::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ScanResult::GetClassData() const { return &_class_data_; } void ScanResult::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ScanResult) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_tokens()->MergeFrom( from._internal_tokens()); if (from._internal_version() != 0) { _this->_internal_set_version(from._internal_version()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ScanResult::CopyFrom(const ScanResult& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ScanResult) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ScanResult::IsInitialized() const { return true; } ::_pbi::CachedSize* ScanResult::AccessCachedSize() const { return &_impl_._cached_size_; } void ScanResult::InternalSwap(ScanResult* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.tokens_.InternalSwap(&other->_impl_.tokens_); swap(_impl_.version_, other->_impl_.version_); } ::google::protobuf::Metadata ScanResult::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[1]); } // =================================================================== class Node::_Internal { public: static constexpr ::int32_t kOneofCaseOffset = PROTOBUF_FIELD_OFFSET(::pg_query::Node, _impl_._oneof_case_); 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::IntoClause& into_clause(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::WindowFuncRunCondition& window_func_run_condition(const Node* msg); static const ::pg_query::MergeSupportFunc& merge_support_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::JsonFormat& json_format(const Node* msg); static const ::pg_query::JsonReturning& json_returning(const Node* msg); static const ::pg_query::JsonValueExpr& json_value_expr(const Node* msg); static const ::pg_query::JsonConstructorExpr& json_constructor_expr(const Node* msg); static const ::pg_query::JsonIsPredicate& json_is_predicate(const Node* msg); static const ::pg_query::JsonBehavior& json_behavior(const Node* msg); static const ::pg_query::JsonExpr& json_expr(const Node* msg); static const ::pg_query::JsonTablePath& json_table_path(const Node* msg); static const ::pg_query::JsonTablePathScan& json_table_path_scan(const Node* msg); static const ::pg_query::JsonTableSiblingJoin& json_table_sibling_join(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::MergeAction& merge_action(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::Query& query(const Node* msg); static const ::pg_query::TypeName& type_name(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_Expr& a_expr(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::RoleSpec& role_spec(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::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::RangeTableFunc& range_table_func(const Node* msg); static const ::pg_query::RangeTableFuncCol& range_table_func_col(const Node* msg); static const ::pg_query::RangeTableSample& range_table_sample(const Node* msg); static const ::pg_query::ColumnDef& column_def(const Node* msg); static const ::pg_query::TableLikeClause& table_like_clause(const Node* msg); static const ::pg_query::IndexElem& index_elem(const Node* msg); static const ::pg_query::DefElem& def_elem(const Node* msg); static const ::pg_query::LockingClause& locking_clause(const Node* msg); static const ::pg_query::XmlSerialize& xml_serialize(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::SinglePartitionSpec& single_partition_spec(const Node* msg); static const ::pg_query::PartitionCmd& partition_cmd(const Node* msg); static const ::pg_query::RangeTblEntry& range_tbl_entry(const Node* msg); static const ::pg_query::RTEPermissionInfo& rtepermission_info(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::RowMarkClause& row_mark_clause(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::CTESearchClause& ctesearch_clause(const Node* msg); static const ::pg_query::CTECycleClause& ctecycle_clause(const Node* msg); static const ::pg_query::CommonTableExpr& common_table_expr(const Node* msg); static const ::pg_query::MergeWhenClause& merge_when_clause(const Node* msg); static const ::pg_query::TriggerTransition& trigger_transition(const Node* msg); static const ::pg_query::JsonOutput& json_output(const Node* msg); static const ::pg_query::JsonArgument& json_argument(const Node* msg); static const ::pg_query::JsonFuncExpr& json_func_expr(const Node* msg); static const ::pg_query::JsonTablePathSpec& json_table_path_spec(const Node* msg); static const ::pg_query::JsonTable& json_table(const Node* msg); static const ::pg_query::JsonTableColumn& json_table_column(const Node* msg); static const ::pg_query::JsonKeyValue& json_key_value(const Node* msg); static const ::pg_query::JsonParseExpr& json_parse_expr(const Node* msg); static const ::pg_query::JsonScalarExpr& json_scalar_expr(const Node* msg); static const ::pg_query::JsonSerializeExpr& json_serialize_expr(const Node* msg); static const ::pg_query::JsonObjectConstructor& json_object_constructor(const Node* msg); static const ::pg_query::JsonArrayConstructor& json_array_constructor(const Node* msg); static const ::pg_query::JsonArrayQueryConstructor& json_array_query_constructor(const Node* msg); static const ::pg_query::JsonAggConstructor& json_agg_constructor(const Node* msg); static const ::pg_query::JsonObjectAgg& json_object_agg(const Node* msg); static const ::pg_query::JsonArrayAgg& json_array_agg(const Node* msg); static const ::pg_query::RawStmt& raw_stmt(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::MergeStmt& merge_stmt(const Node* msg); static const ::pg_query::SelectStmt& select_stmt(const Node* msg); static const ::pg_query::SetOperationStmt& set_operation_stmt(const Node* msg); static const ::pg_query::ReturnStmt& return_stmt(const Node* msg); static const ::pg_query::PLAssignStmt& plassign_stmt(const Node* msg); static const ::pg_query::CreateSchemaStmt& create_schema_stmt(const Node* msg); static const ::pg_query::AlterTableStmt& alter_table_stmt(const Node* msg); static const ::pg_query::ReplicaIdentityStmt& replica_identity_stmt(const Node* msg); static const ::pg_query::AlterTableCmd& alter_table_cmd(const Node* msg); static const ::pg_query::AlterCollationStmt& alter_collation_stmt(const Node* msg); static const ::pg_query::AlterDomainStmt& alter_domain_stmt(const Node* msg); static const ::pg_query::GrantStmt& grant_stmt(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::GrantRoleStmt& grant_role_stmt(const Node* msg); static const ::pg_query::AlterDefaultPrivilegesStmt& alter_default_privileges_stmt(const Node* msg); static const ::pg_query::CopyStmt& copy_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::CreateStmt& create_stmt(const Node* msg); static const ::pg_query::Constraint& constraint(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::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::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::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::CreateForeignTableStmt& create_foreign_table_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::ImportForeignSchemaStmt& import_foreign_schema_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::CreateAmStmt& create_am_stmt(const Node* msg); static const ::pg_query::CreateTrigStmt& create_trig_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::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::AlterRoleSetStmt& alter_role_set_stmt(const Node* msg); static const ::pg_query::DropRoleStmt& drop_role_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::DefineStmt& define_stmt(const Node* msg); static const ::pg_query::CreateDomainStmt& create_domain_stmt(const Node* msg); static const ::pg_query::CreateOpClassStmt& create_op_class_stmt(const Node* msg); static const ::pg_query::CreateOpClassItem& create_op_class_item(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::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::SecLabelStmt& sec_label_stmt(const Node* msg); static const ::pg_query::DeclareCursorStmt& declare_cursor_stmt(const Node* msg); static const ::pg_query::ClosePortalStmt& close_portal_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::CreateStatsStmt& create_stats_stmt(const Node* msg); static const ::pg_query::StatsElem& stats_elem(const Node* msg); static const ::pg_query::AlterStatsStmt& alter_stats_stmt(const Node* msg); static const ::pg_query::CreateFunctionStmt& create_function_stmt(const Node* msg); static const ::pg_query::FunctionParameter& function_parameter(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::InlineCodeBlock& inline_code_block(const Node* msg); static const ::pg_query::CallStmt& call_stmt(const Node* msg); static const ::pg_query::CallContext& call_context(const Node* msg); static const ::pg_query::RenameStmt& rename_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::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::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::ViewStmt& view_stmt(const Node* msg); static const ::pg_query::LoadStmt& load_stmt(const Node* msg); static const ::pg_query::CreatedbStmt& createdb_stmt(const Node* msg); static const ::pg_query::AlterDatabaseStmt& alter_database_stmt(const Node* msg); static const ::pg_query::AlterDatabaseRefreshCollStmt& alter_database_refresh_coll_stmt(const Node* msg); static const ::pg_query::AlterDatabaseSetStmt& alter_database_set_stmt(const Node* msg); static const ::pg_query::DropdbStmt& dropdb_stmt(const Node* msg); static const ::pg_query::AlterSystemStmt& alter_system_stmt(const Node* msg); static const ::pg_query::ClusterStmt& cluster_stmt(const Node* msg); static const ::pg_query::VacuumStmt& vacuum_stmt(const Node* msg); static const ::pg_query::VacuumRelation& vacuum_relation(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::RefreshMatViewStmt& refresh_mat_view_stmt(const Node* msg); static const ::pg_query::CheckPointStmt& check_point_stmt(const Node* msg); static const ::pg_query::DiscardStmt& discard_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::CreateConversionStmt& create_conversion_stmt(const Node* msg); static const ::pg_query::CreateCastStmt& create_cast_stmt(const Node* msg); static const ::pg_query::CreateTransformStmt& create_transform_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::DropOwnedStmt& drop_owned_stmt(const Node* msg); static const ::pg_query::ReassignOwnedStmt& reassign_owned_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::PublicationTable& publication_table(const Node* msg); static const ::pg_query::PublicationObjSpec& publication_obj_spec(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::Integer& integer(const Node* msg); static const ::pg_query::Float& float_(const Node* msg); static const ::pg_query::Boolean& boolean(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::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); static const ::pg_query::A_Const& a_const(const Node* msg); }; const ::pg_query::Alias& Node::_Internal::alias(const Node* msg) { return *msg->_impl_.node_.alias_; } const ::pg_query::RangeVar& Node::_Internal::range_var(const Node* msg) { return *msg->_impl_.node_.range_var_; } const ::pg_query::TableFunc& Node::_Internal::table_func(const Node* msg) { return *msg->_impl_.node_.table_func_; } const ::pg_query::IntoClause& Node::_Internal::into_clause(const Node* msg) { return *msg->_impl_.node_.into_clause_; } const ::pg_query::Var& Node::_Internal::var(const Node* msg) { return *msg->_impl_.node_.var_; } const ::pg_query::Param& Node::_Internal::param(const Node* msg) { return *msg->_impl_.node_.param_; } const ::pg_query::Aggref& Node::_Internal::aggref(const Node* msg) { return *msg->_impl_.node_.aggref_; } const ::pg_query::GroupingFunc& Node::_Internal::grouping_func(const Node* msg) { return *msg->_impl_.node_.grouping_func_; } const ::pg_query::WindowFunc& Node::_Internal::window_func(const Node* msg) { return *msg->_impl_.node_.window_func_; } const ::pg_query::WindowFuncRunCondition& Node::_Internal::window_func_run_condition(const Node* msg) { return *msg->_impl_.node_.window_func_run_condition_; } const ::pg_query::MergeSupportFunc& Node::_Internal::merge_support_func(const Node* msg) { return *msg->_impl_.node_.merge_support_func_; } const ::pg_query::SubscriptingRef& Node::_Internal::subscripting_ref(const Node* msg) { return *msg->_impl_.node_.subscripting_ref_; } const ::pg_query::FuncExpr& Node::_Internal::func_expr(const Node* msg) { return *msg->_impl_.node_.func_expr_; } const ::pg_query::NamedArgExpr& Node::_Internal::named_arg_expr(const Node* msg) { return *msg->_impl_.node_.named_arg_expr_; } const ::pg_query::OpExpr& Node::_Internal::op_expr(const Node* msg) { return *msg->_impl_.node_.op_expr_; } const ::pg_query::DistinctExpr& Node::_Internal::distinct_expr(const Node* msg) { return *msg->_impl_.node_.distinct_expr_; } const ::pg_query::NullIfExpr& Node::_Internal::null_if_expr(const Node* msg) { return *msg->_impl_.node_.null_if_expr_; } const ::pg_query::ScalarArrayOpExpr& Node::_Internal::scalar_array_op_expr(const Node* msg) { return *msg->_impl_.node_.scalar_array_op_expr_; } const ::pg_query::BoolExpr& Node::_Internal::bool_expr(const Node* msg) { return *msg->_impl_.node_.bool_expr_; } const ::pg_query::SubLink& Node::_Internal::sub_link(const Node* msg) { return *msg->_impl_.node_.sub_link_; } const ::pg_query::SubPlan& Node::_Internal::sub_plan(const Node* msg) { return *msg->_impl_.node_.sub_plan_; } const ::pg_query::AlternativeSubPlan& Node::_Internal::alternative_sub_plan(const Node* msg) { return *msg->_impl_.node_.alternative_sub_plan_; } const ::pg_query::FieldSelect& Node::_Internal::field_select(const Node* msg) { return *msg->_impl_.node_.field_select_; } const ::pg_query::FieldStore& Node::_Internal::field_store(const Node* msg) { return *msg->_impl_.node_.field_store_; } const ::pg_query::RelabelType& Node::_Internal::relabel_type(const Node* msg) { return *msg->_impl_.node_.relabel_type_; } const ::pg_query::CoerceViaIO& Node::_Internal::coerce_via_io(const Node* msg) { return *msg->_impl_.node_.coerce_via_io_; } const ::pg_query::ArrayCoerceExpr& Node::_Internal::array_coerce_expr(const Node* msg) { return *msg->_impl_.node_.array_coerce_expr_; } const ::pg_query::ConvertRowtypeExpr& Node::_Internal::convert_rowtype_expr(const Node* msg) { return *msg->_impl_.node_.convert_rowtype_expr_; } const ::pg_query::CollateExpr& Node::_Internal::collate_expr(const Node* msg) { return *msg->_impl_.node_.collate_expr_; } const ::pg_query::CaseExpr& Node::_Internal::case_expr(const Node* msg) { return *msg->_impl_.node_.case_expr_; } const ::pg_query::CaseWhen& Node::_Internal::case_when(const Node* msg) { return *msg->_impl_.node_.case_when_; } const ::pg_query::CaseTestExpr& Node::_Internal::case_test_expr(const Node* msg) { return *msg->_impl_.node_.case_test_expr_; } const ::pg_query::ArrayExpr& Node::_Internal::array_expr(const Node* msg) { return *msg->_impl_.node_.array_expr_; } const ::pg_query::RowExpr& Node::_Internal::row_expr(const Node* msg) { return *msg->_impl_.node_.row_expr_; } const ::pg_query::RowCompareExpr& Node::_Internal::row_compare_expr(const Node* msg) { return *msg->_impl_.node_.row_compare_expr_; } const ::pg_query::CoalesceExpr& Node::_Internal::coalesce_expr(const Node* msg) { return *msg->_impl_.node_.coalesce_expr_; } const ::pg_query::MinMaxExpr& Node::_Internal::min_max_expr(const Node* msg) { return *msg->_impl_.node_.min_max_expr_; } const ::pg_query::SQLValueFunction& Node::_Internal::sqlvalue_function(const Node* msg) { return *msg->_impl_.node_.sqlvalue_function_; } const ::pg_query::XmlExpr& Node::_Internal::xml_expr(const Node* msg) { return *msg->_impl_.node_.xml_expr_; } const ::pg_query::JsonFormat& Node::_Internal::json_format(const Node* msg) { return *msg->_impl_.node_.json_format_; } const ::pg_query::JsonReturning& Node::_Internal::json_returning(const Node* msg) { return *msg->_impl_.node_.json_returning_; } const ::pg_query::JsonValueExpr& Node::_Internal::json_value_expr(const Node* msg) { return *msg->_impl_.node_.json_value_expr_; } const ::pg_query::JsonConstructorExpr& Node::_Internal::json_constructor_expr(const Node* msg) { return *msg->_impl_.node_.json_constructor_expr_; } const ::pg_query::JsonIsPredicate& Node::_Internal::json_is_predicate(const Node* msg) { return *msg->_impl_.node_.json_is_predicate_; } const ::pg_query::JsonBehavior& Node::_Internal::json_behavior(const Node* msg) { return *msg->_impl_.node_.json_behavior_; } const ::pg_query::JsonExpr& Node::_Internal::json_expr(const Node* msg) { return *msg->_impl_.node_.json_expr_; } const ::pg_query::JsonTablePath& Node::_Internal::json_table_path(const Node* msg) { return *msg->_impl_.node_.json_table_path_; } const ::pg_query::JsonTablePathScan& Node::_Internal::json_table_path_scan(const Node* msg) { return *msg->_impl_.node_.json_table_path_scan_; } const ::pg_query::JsonTableSiblingJoin& Node::_Internal::json_table_sibling_join(const Node* msg) { return *msg->_impl_.node_.json_table_sibling_join_; } const ::pg_query::NullTest& Node::_Internal::null_test(const Node* msg) { return *msg->_impl_.node_.null_test_; } const ::pg_query::BooleanTest& Node::_Internal::boolean_test(const Node* msg) { return *msg->_impl_.node_.boolean_test_; } const ::pg_query::MergeAction& Node::_Internal::merge_action(const Node* msg) { return *msg->_impl_.node_.merge_action_; } const ::pg_query::CoerceToDomain& Node::_Internal::coerce_to_domain(const Node* msg) { return *msg->_impl_.node_.coerce_to_domain_; } const ::pg_query::CoerceToDomainValue& Node::_Internal::coerce_to_domain_value(const Node* msg) { return *msg->_impl_.node_.coerce_to_domain_value_; } const ::pg_query::SetToDefault& Node::_Internal::set_to_default(const Node* msg) { return *msg->_impl_.node_.set_to_default_; } const ::pg_query::CurrentOfExpr& Node::_Internal::current_of_expr(const Node* msg) { return *msg->_impl_.node_.current_of_expr_; } const ::pg_query::NextValueExpr& Node::_Internal::next_value_expr(const Node* msg) { return *msg->_impl_.node_.next_value_expr_; } const ::pg_query::InferenceElem& Node::_Internal::inference_elem(const Node* msg) { return *msg->_impl_.node_.inference_elem_; } const ::pg_query::TargetEntry& Node::_Internal::target_entry(const Node* msg) { return *msg->_impl_.node_.target_entry_; } const ::pg_query::RangeTblRef& Node::_Internal::range_tbl_ref(const Node* msg) { return *msg->_impl_.node_.range_tbl_ref_; } const ::pg_query::JoinExpr& Node::_Internal::join_expr(const Node* msg) { return *msg->_impl_.node_.join_expr_; } const ::pg_query::FromExpr& Node::_Internal::from_expr(const Node* msg) { return *msg->_impl_.node_.from_expr_; } const ::pg_query::OnConflictExpr& Node::_Internal::on_conflict_expr(const Node* msg) { return *msg->_impl_.node_.on_conflict_expr_; } const ::pg_query::Query& Node::_Internal::query(const Node* msg) { return *msg->_impl_.node_.query_; } const ::pg_query::TypeName& Node::_Internal::type_name(const Node* msg) { return *msg->_impl_.node_.type_name_; } const ::pg_query::ColumnRef& Node::_Internal::column_ref(const Node* msg) { return *msg->_impl_.node_.column_ref_; } const ::pg_query::ParamRef& Node::_Internal::param_ref(const Node* msg) { return *msg->_impl_.node_.param_ref_; } const ::pg_query::A_Expr& Node::_Internal::a_expr(const Node* msg) { return *msg->_impl_.node_.a_expr_; } const ::pg_query::TypeCast& Node::_Internal::type_cast(const Node* msg) { return *msg->_impl_.node_.type_cast_; } const ::pg_query::CollateClause& Node::_Internal::collate_clause(const Node* msg) { return *msg->_impl_.node_.collate_clause_; } const ::pg_query::RoleSpec& Node::_Internal::role_spec(const Node* msg) { return *msg->_impl_.node_.role_spec_; } const ::pg_query::FuncCall& Node::_Internal::func_call(const Node* msg) { return *msg->_impl_.node_.func_call_; } const ::pg_query::A_Star& Node::_Internal::a_star(const Node* msg) { return *msg->_impl_.node_.a_star_; } const ::pg_query::A_Indices& Node::_Internal::a_indices(const Node* msg) { return *msg->_impl_.node_.a_indices_; } const ::pg_query::A_Indirection& Node::_Internal::a_indirection(const Node* msg) { return *msg->_impl_.node_.a_indirection_; } const ::pg_query::A_ArrayExpr& Node::_Internal::a_array_expr(const Node* msg) { return *msg->_impl_.node_.a_array_expr_; } const ::pg_query::ResTarget& Node::_Internal::res_target(const Node* msg) { return *msg->_impl_.node_.res_target_; } const ::pg_query::MultiAssignRef& Node::_Internal::multi_assign_ref(const Node* msg) { return *msg->_impl_.node_.multi_assign_ref_; } const ::pg_query::SortBy& Node::_Internal::sort_by(const Node* msg) { return *msg->_impl_.node_.sort_by_; } const ::pg_query::WindowDef& Node::_Internal::window_def(const Node* msg) { return *msg->_impl_.node_.window_def_; } const ::pg_query::RangeSubselect& Node::_Internal::range_subselect(const Node* msg) { return *msg->_impl_.node_.range_subselect_; } const ::pg_query::RangeFunction& Node::_Internal::range_function(const Node* msg) { return *msg->_impl_.node_.range_function_; } const ::pg_query::RangeTableFunc& Node::_Internal::range_table_func(const Node* msg) { return *msg->_impl_.node_.range_table_func_; } const ::pg_query::RangeTableFuncCol& Node::_Internal::range_table_func_col(const Node* msg) { return *msg->_impl_.node_.range_table_func_col_; } const ::pg_query::RangeTableSample& Node::_Internal::range_table_sample(const Node* msg) { return *msg->_impl_.node_.range_table_sample_; } const ::pg_query::ColumnDef& Node::_Internal::column_def(const Node* msg) { return *msg->_impl_.node_.column_def_; } const ::pg_query::TableLikeClause& Node::_Internal::table_like_clause(const Node* msg) { return *msg->_impl_.node_.table_like_clause_; } const ::pg_query::IndexElem& Node::_Internal::index_elem(const Node* msg) { return *msg->_impl_.node_.index_elem_; } const ::pg_query::DefElem& Node::_Internal::def_elem(const Node* msg) { return *msg->_impl_.node_.def_elem_; } const ::pg_query::LockingClause& Node::_Internal::locking_clause(const Node* msg) { return *msg->_impl_.node_.locking_clause_; } const ::pg_query::XmlSerialize& Node::_Internal::xml_serialize(const Node* msg) { return *msg->_impl_.node_.xml_serialize_; } const ::pg_query::PartitionElem& Node::_Internal::partition_elem(const Node* msg) { return *msg->_impl_.node_.partition_elem_; } const ::pg_query::PartitionSpec& Node::_Internal::partition_spec(const Node* msg) { return *msg->_impl_.node_.partition_spec_; } const ::pg_query::PartitionBoundSpec& Node::_Internal::partition_bound_spec(const Node* msg) { return *msg->_impl_.node_.partition_bound_spec_; } const ::pg_query::PartitionRangeDatum& Node::_Internal::partition_range_datum(const Node* msg) { return *msg->_impl_.node_.partition_range_datum_; } const ::pg_query::SinglePartitionSpec& Node::_Internal::single_partition_spec(const Node* msg) { return *msg->_impl_.node_.single_partition_spec_; } const ::pg_query::PartitionCmd& Node::_Internal::partition_cmd(const Node* msg) { return *msg->_impl_.node_.partition_cmd_; } const ::pg_query::RangeTblEntry& Node::_Internal::range_tbl_entry(const Node* msg) { return *msg->_impl_.node_.range_tbl_entry_; } const ::pg_query::RTEPermissionInfo& Node::_Internal::rtepermission_info(const Node* msg) { return *msg->_impl_.node_.rtepermission_info_; } const ::pg_query::RangeTblFunction& Node::_Internal::range_tbl_function(const Node* msg) { return *msg->_impl_.node_.range_tbl_function_; } const ::pg_query::TableSampleClause& Node::_Internal::table_sample_clause(const Node* msg) { return *msg->_impl_.node_.table_sample_clause_; } const ::pg_query::WithCheckOption& Node::_Internal::with_check_option(const Node* msg) { return *msg->_impl_.node_.with_check_option_; } const ::pg_query::SortGroupClause& Node::_Internal::sort_group_clause(const Node* msg) { return *msg->_impl_.node_.sort_group_clause_; } const ::pg_query::GroupingSet& Node::_Internal::grouping_set(const Node* msg) { return *msg->_impl_.node_.grouping_set_; } const ::pg_query::WindowClause& Node::_Internal::window_clause(const Node* msg) { return *msg->_impl_.node_.window_clause_; } const ::pg_query::RowMarkClause& Node::_Internal::row_mark_clause(const Node* msg) { return *msg->_impl_.node_.row_mark_clause_; } const ::pg_query::WithClause& Node::_Internal::with_clause(const Node* msg) { return *msg->_impl_.node_.with_clause_; } const ::pg_query::InferClause& Node::_Internal::infer_clause(const Node* msg) { return *msg->_impl_.node_.infer_clause_; } const ::pg_query::OnConflictClause& Node::_Internal::on_conflict_clause(const Node* msg) { return *msg->_impl_.node_.on_conflict_clause_; } const ::pg_query::CTESearchClause& Node::_Internal::ctesearch_clause(const Node* msg) { return *msg->_impl_.node_.ctesearch_clause_; } const ::pg_query::CTECycleClause& Node::_Internal::ctecycle_clause(const Node* msg) { return *msg->_impl_.node_.ctecycle_clause_; } const ::pg_query::CommonTableExpr& Node::_Internal::common_table_expr(const Node* msg) { return *msg->_impl_.node_.common_table_expr_; } const ::pg_query::MergeWhenClause& Node::_Internal::merge_when_clause(const Node* msg) { return *msg->_impl_.node_.merge_when_clause_; } const ::pg_query::TriggerTransition& Node::_Internal::trigger_transition(const Node* msg) { return *msg->_impl_.node_.trigger_transition_; } const ::pg_query::JsonOutput& Node::_Internal::json_output(const Node* msg) { return *msg->_impl_.node_.json_output_; } const ::pg_query::JsonArgument& Node::_Internal::json_argument(const Node* msg) { return *msg->_impl_.node_.json_argument_; } const ::pg_query::JsonFuncExpr& Node::_Internal::json_func_expr(const Node* msg) { return *msg->_impl_.node_.json_func_expr_; } const ::pg_query::JsonTablePathSpec& Node::_Internal::json_table_path_spec(const Node* msg) { return *msg->_impl_.node_.json_table_path_spec_; } const ::pg_query::JsonTable& Node::_Internal::json_table(const Node* msg) { return *msg->_impl_.node_.json_table_; } const ::pg_query::JsonTableColumn& Node::_Internal::json_table_column(const Node* msg) { return *msg->_impl_.node_.json_table_column_; } const ::pg_query::JsonKeyValue& Node::_Internal::json_key_value(const Node* msg) { return *msg->_impl_.node_.json_key_value_; } const ::pg_query::JsonParseExpr& Node::_Internal::json_parse_expr(const Node* msg) { return *msg->_impl_.node_.json_parse_expr_; } const ::pg_query::JsonScalarExpr& Node::_Internal::json_scalar_expr(const Node* msg) { return *msg->_impl_.node_.json_scalar_expr_; } const ::pg_query::JsonSerializeExpr& Node::_Internal::json_serialize_expr(const Node* msg) { return *msg->_impl_.node_.json_serialize_expr_; } const ::pg_query::JsonObjectConstructor& Node::_Internal::json_object_constructor(const Node* msg) { return *msg->_impl_.node_.json_object_constructor_; } const ::pg_query::JsonArrayConstructor& Node::_Internal::json_array_constructor(const Node* msg) { return *msg->_impl_.node_.json_array_constructor_; } const ::pg_query::JsonArrayQueryConstructor& Node::_Internal::json_array_query_constructor(const Node* msg) { return *msg->_impl_.node_.json_array_query_constructor_; } const ::pg_query::JsonAggConstructor& Node::_Internal::json_agg_constructor(const Node* msg) { return *msg->_impl_.node_.json_agg_constructor_; } const ::pg_query::JsonObjectAgg& Node::_Internal::json_object_agg(const Node* msg) { return *msg->_impl_.node_.json_object_agg_; } const ::pg_query::JsonArrayAgg& Node::_Internal::json_array_agg(const Node* msg) { return *msg->_impl_.node_.json_array_agg_; } const ::pg_query::RawStmt& Node::_Internal::raw_stmt(const Node* msg) { return *msg->_impl_.node_.raw_stmt_; } const ::pg_query::InsertStmt& Node::_Internal::insert_stmt(const Node* msg) { return *msg->_impl_.node_.insert_stmt_; } const ::pg_query::DeleteStmt& Node::_Internal::delete_stmt(const Node* msg) { return *msg->_impl_.node_.delete_stmt_; } const ::pg_query::UpdateStmt& Node::_Internal::update_stmt(const Node* msg) { return *msg->_impl_.node_.update_stmt_; } const ::pg_query::MergeStmt& Node::_Internal::merge_stmt(const Node* msg) { return *msg->_impl_.node_.merge_stmt_; } const ::pg_query::SelectStmt& Node::_Internal::select_stmt(const Node* msg) { return *msg->_impl_.node_.select_stmt_; } const ::pg_query::SetOperationStmt& Node::_Internal::set_operation_stmt(const Node* msg) { return *msg->_impl_.node_.set_operation_stmt_; } const ::pg_query::ReturnStmt& Node::_Internal::return_stmt(const Node* msg) { return *msg->_impl_.node_.return_stmt_; } const ::pg_query::PLAssignStmt& Node::_Internal::plassign_stmt(const Node* msg) { return *msg->_impl_.node_.plassign_stmt_; } const ::pg_query::CreateSchemaStmt& Node::_Internal::create_schema_stmt(const Node* msg) { return *msg->_impl_.node_.create_schema_stmt_; } const ::pg_query::AlterTableStmt& Node::_Internal::alter_table_stmt(const Node* msg) { return *msg->_impl_.node_.alter_table_stmt_; } const ::pg_query::ReplicaIdentityStmt& Node::_Internal::replica_identity_stmt(const Node* msg) { return *msg->_impl_.node_.replica_identity_stmt_; } const ::pg_query::AlterTableCmd& Node::_Internal::alter_table_cmd(const Node* msg) { return *msg->_impl_.node_.alter_table_cmd_; } const ::pg_query::AlterCollationStmt& Node::_Internal::alter_collation_stmt(const Node* msg) { return *msg->_impl_.node_.alter_collation_stmt_; } const ::pg_query::AlterDomainStmt& Node::_Internal::alter_domain_stmt(const Node* msg) { return *msg->_impl_.node_.alter_domain_stmt_; } const ::pg_query::GrantStmt& Node::_Internal::grant_stmt(const Node* msg) { return *msg->_impl_.node_.grant_stmt_; } const ::pg_query::ObjectWithArgs& Node::_Internal::object_with_args(const Node* msg) { return *msg->_impl_.node_.object_with_args_; } const ::pg_query::AccessPriv& Node::_Internal::access_priv(const Node* msg) { return *msg->_impl_.node_.access_priv_; } const ::pg_query::GrantRoleStmt& Node::_Internal::grant_role_stmt(const Node* msg) { return *msg->_impl_.node_.grant_role_stmt_; } const ::pg_query::AlterDefaultPrivilegesStmt& Node::_Internal::alter_default_privileges_stmt(const Node* msg) { return *msg->_impl_.node_.alter_default_privileges_stmt_; } const ::pg_query::CopyStmt& Node::_Internal::copy_stmt(const Node* msg) { return *msg->_impl_.node_.copy_stmt_; } const ::pg_query::VariableSetStmt& Node::_Internal::variable_set_stmt(const Node* msg) { return *msg->_impl_.node_.variable_set_stmt_; } const ::pg_query::VariableShowStmt& Node::_Internal::variable_show_stmt(const Node* msg) { return *msg->_impl_.node_.variable_show_stmt_; } const ::pg_query::CreateStmt& Node::_Internal::create_stmt(const Node* msg) { return *msg->_impl_.node_.create_stmt_; } const ::pg_query::Constraint& Node::_Internal::constraint(const Node* msg) { return *msg->_impl_.node_.constraint_; } const ::pg_query::CreateTableSpaceStmt& Node::_Internal::create_table_space_stmt(const Node* msg) { return *msg->_impl_.node_.create_table_space_stmt_; } const ::pg_query::DropTableSpaceStmt& Node::_Internal::drop_table_space_stmt(const Node* msg) { return *msg->_impl_.node_.drop_table_space_stmt_; } const ::pg_query::AlterTableSpaceOptionsStmt& Node::_Internal::alter_table_space_options_stmt(const Node* msg) { return *msg->_impl_.node_.alter_table_space_options_stmt_; } const ::pg_query::AlterTableMoveAllStmt& Node::_Internal::alter_table_move_all_stmt(const Node* msg) { return *msg->_impl_.node_.alter_table_move_all_stmt_; } const ::pg_query::CreateExtensionStmt& Node::_Internal::create_extension_stmt(const Node* msg) { return *msg->_impl_.node_.create_extension_stmt_; } const ::pg_query::AlterExtensionStmt& Node::_Internal::alter_extension_stmt(const Node* msg) { return *msg->_impl_.node_.alter_extension_stmt_; } const ::pg_query::AlterExtensionContentsStmt& Node::_Internal::alter_extension_contents_stmt(const Node* msg) { return *msg->_impl_.node_.alter_extension_contents_stmt_; } const ::pg_query::CreateFdwStmt& Node::_Internal::create_fdw_stmt(const Node* msg) { return *msg->_impl_.node_.create_fdw_stmt_; } const ::pg_query::AlterFdwStmt& Node::_Internal::alter_fdw_stmt(const Node* msg) { return *msg->_impl_.node_.alter_fdw_stmt_; } const ::pg_query::CreateForeignServerStmt& Node::_Internal::create_foreign_server_stmt(const Node* msg) { return *msg->_impl_.node_.create_foreign_server_stmt_; } const ::pg_query::AlterForeignServerStmt& Node::_Internal::alter_foreign_server_stmt(const Node* msg) { return *msg->_impl_.node_.alter_foreign_server_stmt_; } const ::pg_query::CreateForeignTableStmt& Node::_Internal::create_foreign_table_stmt(const Node* msg) { return *msg->_impl_.node_.create_foreign_table_stmt_; } const ::pg_query::CreateUserMappingStmt& Node::_Internal::create_user_mapping_stmt(const Node* msg) { return *msg->_impl_.node_.create_user_mapping_stmt_; } const ::pg_query::AlterUserMappingStmt& Node::_Internal::alter_user_mapping_stmt(const Node* msg) { return *msg->_impl_.node_.alter_user_mapping_stmt_; } const ::pg_query::DropUserMappingStmt& Node::_Internal::drop_user_mapping_stmt(const Node* msg) { return *msg->_impl_.node_.drop_user_mapping_stmt_; } const ::pg_query::ImportForeignSchemaStmt& Node::_Internal::import_foreign_schema_stmt(const Node* msg) { return *msg->_impl_.node_.import_foreign_schema_stmt_; } const ::pg_query::CreatePolicyStmt& Node::_Internal::create_policy_stmt(const Node* msg) { return *msg->_impl_.node_.create_policy_stmt_; } const ::pg_query::AlterPolicyStmt& Node::_Internal::alter_policy_stmt(const Node* msg) { return *msg->_impl_.node_.alter_policy_stmt_; } const ::pg_query::CreateAmStmt& Node::_Internal::create_am_stmt(const Node* msg) { return *msg->_impl_.node_.create_am_stmt_; } const ::pg_query::CreateTrigStmt& Node::_Internal::create_trig_stmt(const Node* msg) { return *msg->_impl_.node_.create_trig_stmt_; } const ::pg_query::CreateEventTrigStmt& Node::_Internal::create_event_trig_stmt(const Node* msg) { return *msg->_impl_.node_.create_event_trig_stmt_; } const ::pg_query::AlterEventTrigStmt& Node::_Internal::alter_event_trig_stmt(const Node* msg) { return *msg->_impl_.node_.alter_event_trig_stmt_; } const ::pg_query::CreatePLangStmt& Node::_Internal::create_plang_stmt(const Node* msg) { return *msg->_impl_.node_.create_plang_stmt_; } const ::pg_query::CreateRoleStmt& Node::_Internal::create_role_stmt(const Node* msg) { return *msg->_impl_.node_.create_role_stmt_; } const ::pg_query::AlterRoleStmt& Node::_Internal::alter_role_stmt(const Node* msg) { return *msg->_impl_.node_.alter_role_stmt_; } const ::pg_query::AlterRoleSetStmt& Node::_Internal::alter_role_set_stmt(const Node* msg) { return *msg->_impl_.node_.alter_role_set_stmt_; } const ::pg_query::DropRoleStmt& Node::_Internal::drop_role_stmt(const Node* msg) { return *msg->_impl_.node_.drop_role_stmt_; } const ::pg_query::CreateSeqStmt& Node::_Internal::create_seq_stmt(const Node* msg) { return *msg->_impl_.node_.create_seq_stmt_; } const ::pg_query::AlterSeqStmt& Node::_Internal::alter_seq_stmt(const Node* msg) { return *msg->_impl_.node_.alter_seq_stmt_; } const ::pg_query::DefineStmt& Node::_Internal::define_stmt(const Node* msg) { return *msg->_impl_.node_.define_stmt_; } const ::pg_query::CreateDomainStmt& Node::_Internal::create_domain_stmt(const Node* msg) { return *msg->_impl_.node_.create_domain_stmt_; } const ::pg_query::CreateOpClassStmt& Node::_Internal::create_op_class_stmt(const Node* msg) { return *msg->_impl_.node_.create_op_class_stmt_; } const ::pg_query::CreateOpClassItem& Node::_Internal::create_op_class_item(const Node* msg) { return *msg->_impl_.node_.create_op_class_item_; } const ::pg_query::CreateOpFamilyStmt& Node::_Internal::create_op_family_stmt(const Node* msg) { return *msg->_impl_.node_.create_op_family_stmt_; } const ::pg_query::AlterOpFamilyStmt& Node::_Internal::alter_op_family_stmt(const Node* msg) { return *msg->_impl_.node_.alter_op_family_stmt_; } const ::pg_query::DropStmt& Node::_Internal::drop_stmt(const Node* msg) { return *msg->_impl_.node_.drop_stmt_; } const ::pg_query::TruncateStmt& Node::_Internal::truncate_stmt(const Node* msg) { return *msg->_impl_.node_.truncate_stmt_; } const ::pg_query::CommentStmt& Node::_Internal::comment_stmt(const Node* msg) { return *msg->_impl_.node_.comment_stmt_; } const ::pg_query::SecLabelStmt& Node::_Internal::sec_label_stmt(const Node* msg) { return *msg->_impl_.node_.sec_label_stmt_; } const ::pg_query::DeclareCursorStmt& Node::_Internal::declare_cursor_stmt(const Node* msg) { return *msg->_impl_.node_.declare_cursor_stmt_; } const ::pg_query::ClosePortalStmt& Node::_Internal::close_portal_stmt(const Node* msg) { return *msg->_impl_.node_.close_portal_stmt_; } const ::pg_query::FetchStmt& Node::_Internal::fetch_stmt(const Node* msg) { return *msg->_impl_.node_.fetch_stmt_; } const ::pg_query::IndexStmt& Node::_Internal::index_stmt(const Node* msg) { return *msg->_impl_.node_.index_stmt_; } const ::pg_query::CreateStatsStmt& Node::_Internal::create_stats_stmt(const Node* msg) { return *msg->_impl_.node_.create_stats_stmt_; } const ::pg_query::StatsElem& Node::_Internal::stats_elem(const Node* msg) { return *msg->_impl_.node_.stats_elem_; } const ::pg_query::AlterStatsStmt& Node::_Internal::alter_stats_stmt(const Node* msg) { return *msg->_impl_.node_.alter_stats_stmt_; } const ::pg_query::CreateFunctionStmt& Node::_Internal::create_function_stmt(const Node* msg) { return *msg->_impl_.node_.create_function_stmt_; } const ::pg_query::FunctionParameter& Node::_Internal::function_parameter(const Node* msg) { return *msg->_impl_.node_.function_parameter_; } const ::pg_query::AlterFunctionStmt& Node::_Internal::alter_function_stmt(const Node* msg) { return *msg->_impl_.node_.alter_function_stmt_; } const ::pg_query::DoStmt& Node::_Internal::do_stmt(const Node* msg) { return *msg->_impl_.node_.do_stmt_; } const ::pg_query::InlineCodeBlock& Node::_Internal::inline_code_block(const Node* msg) { return *msg->_impl_.node_.inline_code_block_; } const ::pg_query::CallStmt& Node::_Internal::call_stmt(const Node* msg) { return *msg->_impl_.node_.call_stmt_; } const ::pg_query::CallContext& Node::_Internal::call_context(const Node* msg) { return *msg->_impl_.node_.call_context_; } const ::pg_query::RenameStmt& Node::_Internal::rename_stmt(const Node* msg) { return *msg->_impl_.node_.rename_stmt_; } const ::pg_query::AlterObjectDependsStmt& Node::_Internal::alter_object_depends_stmt(const Node* msg) { return *msg->_impl_.node_.alter_object_depends_stmt_; } const ::pg_query::AlterObjectSchemaStmt& Node::_Internal::alter_object_schema_stmt(const Node* msg) { return *msg->_impl_.node_.alter_object_schema_stmt_; } const ::pg_query::AlterOwnerStmt& Node::_Internal::alter_owner_stmt(const Node* msg) { return *msg->_impl_.node_.alter_owner_stmt_; } const ::pg_query::AlterOperatorStmt& Node::_Internal::alter_operator_stmt(const Node* msg) { return *msg->_impl_.node_.alter_operator_stmt_; } const ::pg_query::AlterTypeStmt& Node::_Internal::alter_type_stmt(const Node* msg) { return *msg->_impl_.node_.alter_type_stmt_; } const ::pg_query::RuleStmt& Node::_Internal::rule_stmt(const Node* msg) { return *msg->_impl_.node_.rule_stmt_; } const ::pg_query::NotifyStmt& Node::_Internal::notify_stmt(const Node* msg) { return *msg->_impl_.node_.notify_stmt_; } const ::pg_query::ListenStmt& Node::_Internal::listen_stmt(const Node* msg) { return *msg->_impl_.node_.listen_stmt_; } const ::pg_query::UnlistenStmt& Node::_Internal::unlisten_stmt(const Node* msg) { return *msg->_impl_.node_.unlisten_stmt_; } const ::pg_query::TransactionStmt& Node::_Internal::transaction_stmt(const Node* msg) { return *msg->_impl_.node_.transaction_stmt_; } const ::pg_query::CompositeTypeStmt& Node::_Internal::composite_type_stmt(const Node* msg) { return *msg->_impl_.node_.composite_type_stmt_; } const ::pg_query::CreateEnumStmt& Node::_Internal::create_enum_stmt(const Node* msg) { return *msg->_impl_.node_.create_enum_stmt_; } const ::pg_query::CreateRangeStmt& Node::_Internal::create_range_stmt(const Node* msg) { return *msg->_impl_.node_.create_range_stmt_; } const ::pg_query::AlterEnumStmt& Node::_Internal::alter_enum_stmt(const Node* msg) { return *msg->_impl_.node_.alter_enum_stmt_; } const ::pg_query::ViewStmt& Node::_Internal::view_stmt(const Node* msg) { return *msg->_impl_.node_.view_stmt_; } const ::pg_query::LoadStmt& Node::_Internal::load_stmt(const Node* msg) { return *msg->_impl_.node_.load_stmt_; } const ::pg_query::CreatedbStmt& Node::_Internal::createdb_stmt(const Node* msg) { return *msg->_impl_.node_.createdb_stmt_; } const ::pg_query::AlterDatabaseStmt& Node::_Internal::alter_database_stmt(const Node* msg) { return *msg->_impl_.node_.alter_database_stmt_; } const ::pg_query::AlterDatabaseRefreshCollStmt& Node::_Internal::alter_database_refresh_coll_stmt(const Node* msg) { return *msg->_impl_.node_.alter_database_refresh_coll_stmt_; } const ::pg_query::AlterDatabaseSetStmt& Node::_Internal::alter_database_set_stmt(const Node* msg) { return *msg->_impl_.node_.alter_database_set_stmt_; } const ::pg_query::DropdbStmt& Node::_Internal::dropdb_stmt(const Node* msg) { return *msg->_impl_.node_.dropdb_stmt_; } const ::pg_query::AlterSystemStmt& Node::_Internal::alter_system_stmt(const Node* msg) { return *msg->_impl_.node_.alter_system_stmt_; } const ::pg_query::ClusterStmt& Node::_Internal::cluster_stmt(const Node* msg) { return *msg->_impl_.node_.cluster_stmt_; } const ::pg_query::VacuumStmt& Node::_Internal::vacuum_stmt(const Node* msg) { return *msg->_impl_.node_.vacuum_stmt_; } const ::pg_query::VacuumRelation& Node::_Internal::vacuum_relation(const Node* msg) { return *msg->_impl_.node_.vacuum_relation_; } const ::pg_query::ExplainStmt& Node::_Internal::explain_stmt(const Node* msg) { return *msg->_impl_.node_.explain_stmt_; } const ::pg_query::CreateTableAsStmt& Node::_Internal::create_table_as_stmt(const Node* msg) { return *msg->_impl_.node_.create_table_as_stmt_; } const ::pg_query::RefreshMatViewStmt& Node::_Internal::refresh_mat_view_stmt(const Node* msg) { return *msg->_impl_.node_.refresh_mat_view_stmt_; } const ::pg_query::CheckPointStmt& Node::_Internal::check_point_stmt(const Node* msg) { return *msg->_impl_.node_.check_point_stmt_; } const ::pg_query::DiscardStmt& Node::_Internal::discard_stmt(const Node* msg) { return *msg->_impl_.node_.discard_stmt_; } const ::pg_query::LockStmt& Node::_Internal::lock_stmt(const Node* msg) { return *msg->_impl_.node_.lock_stmt_; } const ::pg_query::ConstraintsSetStmt& Node::_Internal::constraints_set_stmt(const Node* msg) { return *msg->_impl_.node_.constraints_set_stmt_; } const ::pg_query::ReindexStmt& Node::_Internal::reindex_stmt(const Node* msg) { return *msg->_impl_.node_.reindex_stmt_; } const ::pg_query::CreateConversionStmt& Node::_Internal::create_conversion_stmt(const Node* msg) { return *msg->_impl_.node_.create_conversion_stmt_; } const ::pg_query::CreateCastStmt& Node::_Internal::create_cast_stmt(const Node* msg) { return *msg->_impl_.node_.create_cast_stmt_; } const ::pg_query::CreateTransformStmt& Node::_Internal::create_transform_stmt(const Node* msg) { return *msg->_impl_.node_.create_transform_stmt_; } const ::pg_query::PrepareStmt& Node::_Internal::prepare_stmt(const Node* msg) { return *msg->_impl_.node_.prepare_stmt_; } const ::pg_query::ExecuteStmt& Node::_Internal::execute_stmt(const Node* msg) { return *msg->_impl_.node_.execute_stmt_; } const ::pg_query::DeallocateStmt& Node::_Internal::deallocate_stmt(const Node* msg) { return *msg->_impl_.node_.deallocate_stmt_; } const ::pg_query::DropOwnedStmt& Node::_Internal::drop_owned_stmt(const Node* msg) { return *msg->_impl_.node_.drop_owned_stmt_; } const ::pg_query::ReassignOwnedStmt& Node::_Internal::reassign_owned_stmt(const Node* msg) { return *msg->_impl_.node_.reassign_owned_stmt_; } const ::pg_query::AlterTSDictionaryStmt& Node::_Internal::alter_tsdictionary_stmt(const Node* msg) { return *msg->_impl_.node_.alter_tsdictionary_stmt_; } const ::pg_query::AlterTSConfigurationStmt& Node::_Internal::alter_tsconfiguration_stmt(const Node* msg) { return *msg->_impl_.node_.alter_tsconfiguration_stmt_; } const ::pg_query::PublicationTable& Node::_Internal::publication_table(const Node* msg) { return *msg->_impl_.node_.publication_table_; } const ::pg_query::PublicationObjSpec& Node::_Internal::publication_obj_spec(const Node* msg) { return *msg->_impl_.node_.publication_obj_spec_; } const ::pg_query::CreatePublicationStmt& Node::_Internal::create_publication_stmt(const Node* msg) { return *msg->_impl_.node_.create_publication_stmt_; } const ::pg_query::AlterPublicationStmt& Node::_Internal::alter_publication_stmt(const Node* msg) { return *msg->_impl_.node_.alter_publication_stmt_; } const ::pg_query::CreateSubscriptionStmt& Node::_Internal::create_subscription_stmt(const Node* msg) { return *msg->_impl_.node_.create_subscription_stmt_; } const ::pg_query::AlterSubscriptionStmt& Node::_Internal::alter_subscription_stmt(const Node* msg) { return *msg->_impl_.node_.alter_subscription_stmt_; } const ::pg_query::DropSubscriptionStmt& Node::_Internal::drop_subscription_stmt(const Node* msg) { return *msg->_impl_.node_.drop_subscription_stmt_; } const ::pg_query::Integer& Node::_Internal::integer(const Node* msg) { return *msg->_impl_.node_.integer_; } const ::pg_query::Float& Node::_Internal::float_(const Node* msg) { return *msg->_impl_.node_.float__; } const ::pg_query::Boolean& Node::_Internal::boolean(const Node* msg) { return *msg->_impl_.node_.boolean_; } const ::pg_query::String& Node::_Internal::string(const Node* msg) { return *msg->_impl_.node_.string_; } const ::pg_query::BitString& Node::_Internal::bit_string(const Node* msg) { return *msg->_impl_.node_.bit_string_; } const ::pg_query::List& Node::_Internal::list(const Node* msg) { return *msg->_impl_.node_.list_; } const ::pg_query::IntList& Node::_Internal::int_list(const Node* msg) { return *msg->_impl_.node_.int_list_; } const ::pg_query::OidList& Node::_Internal::oid_list(const Node* msg) { return *msg->_impl_.node_.oid_list_; } const ::pg_query::A_Const& Node::_Internal::a_const(const Node* msg) { return *msg->_impl_.node_.a_const_; } void Node::set_allocated_alias(::pg_query::Alias* alias) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alias) { ::google::protobuf::Arena* submessage_arena = alias->GetArena(); if (message_arena != submessage_arena) { alias = ::google::protobuf::internal::GetOwnedMessage(message_arena, alias, submessage_arena); } set_has_alias(); _impl_.node_.alias_ = alias; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alias) } void Node::set_allocated_range_var(::pg_query::RangeVar* range_var) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (range_var) { ::google::protobuf::Arena* submessage_arena = range_var->GetArena(); if (message_arena != submessage_arena) { range_var = ::google::protobuf::internal::GetOwnedMessage(message_arena, range_var, submessage_arena); } set_has_range_var(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (table_func) { ::google::protobuf::Arena* submessage_arena = table_func->GetArena(); if (message_arena != submessage_arena) { table_func = ::google::protobuf::internal::GetOwnedMessage(message_arena, table_func, submessage_arena); } set_has_table_func(); _impl_.node_.table_func_ = table_func; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.table_func) } void Node::set_allocated_into_clause(::pg_query::IntoClause* into_clause) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (into_clause) { ::google::protobuf::Arena* submessage_arena = into_clause->GetArena(); if (message_arena != submessage_arena) { into_clause = ::google::protobuf::internal::GetOwnedMessage(message_arena, into_clause, submessage_arena); } set_has_into_clause(); _impl_.node_.into_clause_ = into_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.into_clause) } void Node::set_allocated_var(::pg_query::Var* var) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (var) { ::google::protobuf::Arena* submessage_arena = var->GetArena(); if (message_arena != submessage_arena) { var = ::google::protobuf::internal::GetOwnedMessage(message_arena, var, submessage_arena); } set_has_var(); _impl_.node_.var_ = var; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.var) } void Node::set_allocated_param(::pg_query::Param* param) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (param) { ::google::protobuf::Arena* submessage_arena = param->GetArena(); if (message_arena != submessage_arena) { param = ::google::protobuf::internal::GetOwnedMessage(message_arena, param, submessage_arena); } set_has_param(); _impl_.node_.param_ = param; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.param) } void Node::set_allocated_aggref(::pg_query::Aggref* aggref) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (aggref) { ::google::protobuf::Arena* submessage_arena = aggref->GetArena(); if (message_arena != submessage_arena) { aggref = ::google::protobuf::internal::GetOwnedMessage(message_arena, aggref, submessage_arena); } set_has_aggref(); _impl_.node_.aggref_ = aggref; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.aggref) } void Node::set_allocated_grouping_func(::pg_query::GroupingFunc* grouping_func) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (grouping_func) { ::google::protobuf::Arena* submessage_arena = grouping_func->GetArena(); if (message_arena != submessage_arena) { grouping_func = ::google::protobuf::internal::GetOwnedMessage(message_arena, grouping_func, submessage_arena); } set_has_grouping_func(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (window_func) { ::google::protobuf::Arena* submessage_arena = window_func->GetArena(); if (message_arena != submessage_arena) { window_func = ::google::protobuf::internal::GetOwnedMessage(message_arena, window_func, submessage_arena); } set_has_window_func(); _impl_.node_.window_func_ = window_func; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.window_func) } void Node::set_allocated_window_func_run_condition(::pg_query::WindowFuncRunCondition* window_func_run_condition) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (window_func_run_condition) { ::google::protobuf::Arena* submessage_arena = window_func_run_condition->GetArena(); if (message_arena != submessage_arena) { window_func_run_condition = ::google::protobuf::internal::GetOwnedMessage(message_arena, window_func_run_condition, submessage_arena); } set_has_window_func_run_condition(); _impl_.node_.window_func_run_condition_ = window_func_run_condition; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.window_func_run_condition) } void Node::set_allocated_merge_support_func(::pg_query::MergeSupportFunc* merge_support_func) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (merge_support_func) { ::google::protobuf::Arena* submessage_arena = merge_support_func->GetArena(); if (message_arena != submessage_arena) { merge_support_func = ::google::protobuf::internal::GetOwnedMessage(message_arena, merge_support_func, submessage_arena); } set_has_merge_support_func(); _impl_.node_.merge_support_func_ = merge_support_func; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.merge_support_func) } void Node::set_allocated_subscripting_ref(::pg_query::SubscriptingRef* subscripting_ref) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (subscripting_ref) { ::google::protobuf::Arena* submessage_arena = subscripting_ref->GetArena(); if (message_arena != submessage_arena) { subscripting_ref = ::google::protobuf::internal::GetOwnedMessage(message_arena, subscripting_ref, submessage_arena); } set_has_subscripting_ref(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (func_expr) { ::google::protobuf::Arena* submessage_arena = func_expr->GetArena(); if (message_arena != submessage_arena) { func_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, func_expr, submessage_arena); } set_has_func_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (named_arg_expr) { ::google::protobuf::Arena* submessage_arena = named_arg_expr->GetArena(); if (message_arena != submessage_arena) { named_arg_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, named_arg_expr, submessage_arena); } set_has_named_arg_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (op_expr) { ::google::protobuf::Arena* submessage_arena = op_expr->GetArena(); if (message_arena != submessage_arena) { op_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, op_expr, submessage_arena); } set_has_op_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (distinct_expr) { ::google::protobuf::Arena* submessage_arena = distinct_expr->GetArena(); if (message_arena != submessage_arena) { distinct_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, distinct_expr, submessage_arena); } set_has_distinct_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (null_if_expr) { ::google::protobuf::Arena* submessage_arena = null_if_expr->GetArena(); if (message_arena != submessage_arena) { null_if_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, null_if_expr, submessage_arena); } set_has_null_if_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (scalar_array_op_expr) { ::google::protobuf::Arena* submessage_arena = scalar_array_op_expr->GetArena(); if (message_arena != submessage_arena) { scalar_array_op_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, scalar_array_op_expr, submessage_arena); } set_has_scalar_array_op_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (bool_expr) { ::google::protobuf::Arena* submessage_arena = bool_expr->GetArena(); if (message_arena != submessage_arena) { bool_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, bool_expr, submessage_arena); } set_has_bool_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (sub_link) { ::google::protobuf::Arena* submessage_arena = sub_link->GetArena(); if (message_arena != submessage_arena) { sub_link = ::google::protobuf::internal::GetOwnedMessage(message_arena, sub_link, submessage_arena); } set_has_sub_link(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (sub_plan) { ::google::protobuf::Arena* submessage_arena = sub_plan->GetArena(); if (message_arena != submessage_arena) { sub_plan = ::google::protobuf::internal::GetOwnedMessage(message_arena, sub_plan, submessage_arena); } set_has_sub_plan(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alternative_sub_plan) { ::google::protobuf::Arena* submessage_arena = alternative_sub_plan->GetArena(); if (message_arena != submessage_arena) { alternative_sub_plan = ::google::protobuf::internal::GetOwnedMessage(message_arena, alternative_sub_plan, submessage_arena); } set_has_alternative_sub_plan(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (field_select) { ::google::protobuf::Arena* submessage_arena = field_select->GetArena(); if (message_arena != submessage_arena) { field_select = ::google::protobuf::internal::GetOwnedMessage(message_arena, field_select, submessage_arena); } set_has_field_select(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (field_store) { ::google::protobuf::Arena* submessage_arena = field_store->GetArena(); if (message_arena != submessage_arena) { field_store = ::google::protobuf::internal::GetOwnedMessage(message_arena, field_store, submessage_arena); } set_has_field_store(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (relabel_type) { ::google::protobuf::Arena* submessage_arena = relabel_type->GetArena(); if (message_arena != submessage_arena) { relabel_type = ::google::protobuf::internal::GetOwnedMessage(message_arena, relabel_type, submessage_arena); } set_has_relabel_type(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (coerce_via_io) { ::google::protobuf::Arena* submessage_arena = coerce_via_io->GetArena(); if (message_arena != submessage_arena) { coerce_via_io = ::google::protobuf::internal::GetOwnedMessage(message_arena, coerce_via_io, submessage_arena); } set_has_coerce_via_io(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (array_coerce_expr) { ::google::protobuf::Arena* submessage_arena = array_coerce_expr->GetArena(); if (message_arena != submessage_arena) { array_coerce_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, array_coerce_expr, submessage_arena); } set_has_array_coerce_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (convert_rowtype_expr) { ::google::protobuf::Arena* submessage_arena = convert_rowtype_expr->GetArena(); if (message_arena != submessage_arena) { convert_rowtype_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, convert_rowtype_expr, submessage_arena); } set_has_convert_rowtype_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (collate_expr) { ::google::protobuf::Arena* submessage_arena = collate_expr->GetArena(); if (message_arena != submessage_arena) { collate_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, collate_expr, submessage_arena); } set_has_collate_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (case_expr) { ::google::protobuf::Arena* submessage_arena = case_expr->GetArena(); if (message_arena != submessage_arena) { case_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, case_expr, submessage_arena); } set_has_case_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (case_when) { ::google::protobuf::Arena* submessage_arena = case_when->GetArena(); if (message_arena != submessage_arena) { case_when = ::google::protobuf::internal::GetOwnedMessage(message_arena, case_when, submessage_arena); } set_has_case_when(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (case_test_expr) { ::google::protobuf::Arena* submessage_arena = case_test_expr->GetArena(); if (message_arena != submessage_arena) { case_test_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, case_test_expr, submessage_arena); } set_has_case_test_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (array_expr) { ::google::protobuf::Arena* submessage_arena = array_expr->GetArena(); if (message_arena != submessage_arena) { array_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, array_expr, submessage_arena); } set_has_array_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (row_expr) { ::google::protobuf::Arena* submessage_arena = row_expr->GetArena(); if (message_arena != submessage_arena) { row_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, row_expr, submessage_arena); } set_has_row_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (row_compare_expr) { ::google::protobuf::Arena* submessage_arena = row_compare_expr->GetArena(); if (message_arena != submessage_arena) { row_compare_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, row_compare_expr, submessage_arena); } set_has_row_compare_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (coalesce_expr) { ::google::protobuf::Arena* submessage_arena = coalesce_expr->GetArena(); if (message_arena != submessage_arena) { coalesce_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, coalesce_expr, submessage_arena); } set_has_coalesce_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (min_max_expr) { ::google::protobuf::Arena* submessage_arena = min_max_expr->GetArena(); if (message_arena != submessage_arena) { min_max_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, min_max_expr, submessage_arena); } set_has_min_max_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (sqlvalue_function) { ::google::protobuf::Arena* submessage_arena = sqlvalue_function->GetArena(); if (message_arena != submessage_arena) { sqlvalue_function = ::google::protobuf::internal::GetOwnedMessage(message_arena, sqlvalue_function, submessage_arena); } set_has_sqlvalue_function(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (xml_expr) { ::google::protobuf::Arena* submessage_arena = xml_expr->GetArena(); if (message_arena != submessage_arena) { xml_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, xml_expr, submessage_arena); } set_has_xml_expr(); _impl_.node_.xml_expr_ = xml_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.xml_expr) } void Node::set_allocated_json_format(::pg_query::JsonFormat* json_format) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_format) { ::google::protobuf::Arena* submessage_arena = json_format->GetArena(); if (message_arena != submessage_arena) { json_format = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_format, submessage_arena); } set_has_json_format(); _impl_.node_.json_format_ = json_format; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_format) } void Node::set_allocated_json_returning(::pg_query::JsonReturning* json_returning) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_returning) { ::google::protobuf::Arena* submessage_arena = json_returning->GetArena(); if (message_arena != submessage_arena) { json_returning = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_returning, submessage_arena); } set_has_json_returning(); _impl_.node_.json_returning_ = json_returning; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_returning) } void Node::set_allocated_json_value_expr(::pg_query::JsonValueExpr* json_value_expr) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_value_expr) { ::google::protobuf::Arena* submessage_arena = json_value_expr->GetArena(); if (message_arena != submessage_arena) { json_value_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_value_expr, submessage_arena); } set_has_json_value_expr(); _impl_.node_.json_value_expr_ = json_value_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_value_expr) } void Node::set_allocated_json_constructor_expr(::pg_query::JsonConstructorExpr* json_constructor_expr) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_constructor_expr) { ::google::protobuf::Arena* submessage_arena = json_constructor_expr->GetArena(); if (message_arena != submessage_arena) { json_constructor_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_constructor_expr, submessage_arena); } set_has_json_constructor_expr(); _impl_.node_.json_constructor_expr_ = json_constructor_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_constructor_expr) } void Node::set_allocated_json_is_predicate(::pg_query::JsonIsPredicate* json_is_predicate) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_is_predicate) { ::google::protobuf::Arena* submessage_arena = json_is_predicate->GetArena(); if (message_arena != submessage_arena) { json_is_predicate = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_is_predicate, submessage_arena); } set_has_json_is_predicate(); _impl_.node_.json_is_predicate_ = json_is_predicate; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_is_predicate) } void Node::set_allocated_json_behavior(::pg_query::JsonBehavior* json_behavior) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_behavior) { ::google::protobuf::Arena* submessage_arena = json_behavior->GetArena(); if (message_arena != submessage_arena) { json_behavior = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_behavior, submessage_arena); } set_has_json_behavior(); _impl_.node_.json_behavior_ = json_behavior; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_behavior) } void Node::set_allocated_json_expr(::pg_query::JsonExpr* json_expr) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_expr) { ::google::protobuf::Arena* submessage_arena = json_expr->GetArena(); if (message_arena != submessage_arena) { json_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_expr, submessage_arena); } set_has_json_expr(); _impl_.node_.json_expr_ = json_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_expr) } void Node::set_allocated_json_table_path(::pg_query::JsonTablePath* json_table_path) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_table_path) { ::google::protobuf::Arena* submessage_arena = json_table_path->GetArena(); if (message_arena != submessage_arena) { json_table_path = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_table_path, submessage_arena); } set_has_json_table_path(); _impl_.node_.json_table_path_ = json_table_path; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_table_path) } void Node::set_allocated_json_table_path_scan(::pg_query::JsonTablePathScan* json_table_path_scan) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_table_path_scan) { ::google::protobuf::Arena* submessage_arena = json_table_path_scan->GetArena(); if (message_arena != submessage_arena) { json_table_path_scan = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_table_path_scan, submessage_arena); } set_has_json_table_path_scan(); _impl_.node_.json_table_path_scan_ = json_table_path_scan; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_table_path_scan) } void Node::set_allocated_json_table_sibling_join(::pg_query::JsonTableSiblingJoin* json_table_sibling_join) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_table_sibling_join) { ::google::protobuf::Arena* submessage_arena = json_table_sibling_join->GetArena(); if (message_arena != submessage_arena) { json_table_sibling_join = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_table_sibling_join, submessage_arena); } set_has_json_table_sibling_join(); _impl_.node_.json_table_sibling_join_ = json_table_sibling_join; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_table_sibling_join) } void Node::set_allocated_null_test(::pg_query::NullTest* null_test) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (null_test) { ::google::protobuf::Arena* submessage_arena = null_test->GetArena(); if (message_arena != submessage_arena) { null_test = ::google::protobuf::internal::GetOwnedMessage(message_arena, null_test, submessage_arena); } set_has_null_test(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (boolean_test) { ::google::protobuf::Arena* submessage_arena = boolean_test->GetArena(); if (message_arena != submessage_arena) { boolean_test = ::google::protobuf::internal::GetOwnedMessage(message_arena, boolean_test, submessage_arena); } set_has_boolean_test(); _impl_.node_.boolean_test_ = boolean_test; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.boolean_test) } void Node::set_allocated_merge_action(::pg_query::MergeAction* merge_action) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (merge_action) { ::google::protobuf::Arena* submessage_arena = merge_action->GetArena(); if (message_arena != submessage_arena) { merge_action = ::google::protobuf::internal::GetOwnedMessage(message_arena, merge_action, submessage_arena); } set_has_merge_action(); _impl_.node_.merge_action_ = merge_action; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.merge_action) } void Node::set_allocated_coerce_to_domain(::pg_query::CoerceToDomain* coerce_to_domain) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (coerce_to_domain) { ::google::protobuf::Arena* submessage_arena = coerce_to_domain->GetArena(); if (message_arena != submessage_arena) { coerce_to_domain = ::google::protobuf::internal::GetOwnedMessage(message_arena, coerce_to_domain, submessage_arena); } set_has_coerce_to_domain(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (coerce_to_domain_value) { ::google::protobuf::Arena* submessage_arena = coerce_to_domain_value->GetArena(); if (message_arena != submessage_arena) { coerce_to_domain_value = ::google::protobuf::internal::GetOwnedMessage(message_arena, coerce_to_domain_value, submessage_arena); } set_has_coerce_to_domain_value(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (set_to_default) { ::google::protobuf::Arena* submessage_arena = set_to_default->GetArena(); if (message_arena != submessage_arena) { set_to_default = ::google::protobuf::internal::GetOwnedMessage(message_arena, set_to_default, submessage_arena); } set_has_set_to_default(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (current_of_expr) { ::google::protobuf::Arena* submessage_arena = current_of_expr->GetArena(); if (message_arena != submessage_arena) { current_of_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, current_of_expr, submessage_arena); } set_has_current_of_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (next_value_expr) { ::google::protobuf::Arena* submessage_arena = next_value_expr->GetArena(); if (message_arena != submessage_arena) { next_value_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, next_value_expr, submessage_arena); } set_has_next_value_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (inference_elem) { ::google::protobuf::Arena* submessage_arena = inference_elem->GetArena(); if (message_arena != submessage_arena) { inference_elem = ::google::protobuf::internal::GetOwnedMessage(message_arena, inference_elem, submessage_arena); } set_has_inference_elem(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (target_entry) { ::google::protobuf::Arena* submessage_arena = target_entry->GetArena(); if (message_arena != submessage_arena) { target_entry = ::google::protobuf::internal::GetOwnedMessage(message_arena, target_entry, submessage_arena); } set_has_target_entry(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (range_tbl_ref) { ::google::protobuf::Arena* submessage_arena = range_tbl_ref->GetArena(); if (message_arena != submessage_arena) { range_tbl_ref = ::google::protobuf::internal::GetOwnedMessage(message_arena, range_tbl_ref, submessage_arena); } set_has_range_tbl_ref(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (join_expr) { ::google::protobuf::Arena* submessage_arena = join_expr->GetArena(); if (message_arena != submessage_arena) { join_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, join_expr, submessage_arena); } set_has_join_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (from_expr) { ::google::protobuf::Arena* submessage_arena = from_expr->GetArena(); if (message_arena != submessage_arena) { from_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, from_expr, submessage_arena); } set_has_from_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (on_conflict_expr) { ::google::protobuf::Arena* submessage_arena = on_conflict_expr->GetArena(); if (message_arena != submessage_arena) { on_conflict_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, on_conflict_expr, submessage_arena); } set_has_on_conflict_expr(); _impl_.node_.on_conflict_expr_ = on_conflict_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.on_conflict_expr) } void Node::set_allocated_query(::pg_query::Query* query) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (query) { ::google::protobuf::Arena* submessage_arena = query->GetArena(); if (message_arena != submessage_arena) { query = ::google::protobuf::internal::GetOwnedMessage(message_arena, query, submessage_arena); } set_has_query(); _impl_.node_.query_ = query; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.query) } void Node::set_allocated_type_name(::pg_query::TypeName* type_name) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (type_name) { ::google::protobuf::Arena* submessage_arena = type_name->GetArena(); if (message_arena != submessage_arena) { type_name = ::google::protobuf::internal::GetOwnedMessage(message_arena, type_name, submessage_arena); } set_has_type_name(); _impl_.node_.type_name_ = type_name; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.type_name) } void Node::set_allocated_column_ref(::pg_query::ColumnRef* column_ref) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (column_ref) { ::google::protobuf::Arena* submessage_arena = column_ref->GetArena(); if (message_arena != submessage_arena) { column_ref = ::google::protobuf::internal::GetOwnedMessage(message_arena, column_ref, submessage_arena); } set_has_column_ref(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (param_ref) { ::google::protobuf::Arena* submessage_arena = param_ref->GetArena(); if (message_arena != submessage_arena) { param_ref = ::google::protobuf::internal::GetOwnedMessage(message_arena, param_ref, submessage_arena); } set_has_param_ref(); _impl_.node_.param_ref_ = param_ref; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.param_ref) } void Node::set_allocated_a_expr(::pg_query::A_Expr* a_expr) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (a_expr) { ::google::protobuf::Arena* submessage_arena = a_expr->GetArena(); if (message_arena != submessage_arena) { a_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, a_expr, submessage_arena); } set_has_a_expr(); _impl_.node_.a_expr_ = a_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.a_expr) } void Node::set_allocated_type_cast(::pg_query::TypeCast* type_cast) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (type_cast) { ::google::protobuf::Arena* submessage_arena = type_cast->GetArena(); if (message_arena != submessage_arena) { type_cast = ::google::protobuf::internal::GetOwnedMessage(message_arena, type_cast, submessage_arena); } set_has_type_cast(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (collate_clause) { ::google::protobuf::Arena* submessage_arena = collate_clause->GetArena(); if (message_arena != submessage_arena) { collate_clause = ::google::protobuf::internal::GetOwnedMessage(message_arena, collate_clause, submessage_arena); } set_has_collate_clause(); _impl_.node_.collate_clause_ = collate_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.collate_clause) } void Node::set_allocated_role_spec(::pg_query::RoleSpec* role_spec) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (role_spec) { ::google::protobuf::Arena* submessage_arena = role_spec->GetArena(); if (message_arena != submessage_arena) { role_spec = ::google::protobuf::internal::GetOwnedMessage(message_arena, role_spec, submessage_arena); } set_has_role_spec(); _impl_.node_.role_spec_ = role_spec; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.role_spec) } void Node::set_allocated_func_call(::pg_query::FuncCall* func_call) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (func_call) { ::google::protobuf::Arena* submessage_arena = func_call->GetArena(); if (message_arena != submessage_arena) { func_call = ::google::protobuf::internal::GetOwnedMessage(message_arena, func_call, submessage_arena); } set_has_func_call(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (a_star) { ::google::protobuf::Arena* submessage_arena = a_star->GetArena(); if (message_arena != submessage_arena) { a_star = ::google::protobuf::internal::GetOwnedMessage(message_arena, a_star, submessage_arena); } set_has_a_star(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (a_indices) { ::google::protobuf::Arena* submessage_arena = a_indices->GetArena(); if (message_arena != submessage_arena) { a_indices = ::google::protobuf::internal::GetOwnedMessage(message_arena, a_indices, submessage_arena); } set_has_a_indices(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (a_indirection) { ::google::protobuf::Arena* submessage_arena = a_indirection->GetArena(); if (message_arena != submessage_arena) { a_indirection = ::google::protobuf::internal::GetOwnedMessage(message_arena, a_indirection, submessage_arena); } set_has_a_indirection(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (a_array_expr) { ::google::protobuf::Arena* submessage_arena = a_array_expr->GetArena(); if (message_arena != submessage_arena) { a_array_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, a_array_expr, submessage_arena); } set_has_a_array_expr(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (res_target) { ::google::protobuf::Arena* submessage_arena = res_target->GetArena(); if (message_arena != submessage_arena) { res_target = ::google::protobuf::internal::GetOwnedMessage(message_arena, res_target, submessage_arena); } set_has_res_target(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (multi_assign_ref) { ::google::protobuf::Arena* submessage_arena = multi_assign_ref->GetArena(); if (message_arena != submessage_arena) { multi_assign_ref = ::google::protobuf::internal::GetOwnedMessage(message_arena, multi_assign_ref, submessage_arena); } set_has_multi_assign_ref(); _impl_.node_.multi_assign_ref_ = multi_assign_ref; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.multi_assign_ref) } void Node::set_allocated_sort_by(::pg_query::SortBy* sort_by) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (sort_by) { ::google::protobuf::Arena* submessage_arena = sort_by->GetArena(); if (message_arena != submessage_arena) { sort_by = ::google::protobuf::internal::GetOwnedMessage(message_arena, sort_by, submessage_arena); } set_has_sort_by(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (window_def) { ::google::protobuf::Arena* submessage_arena = window_def->GetArena(); if (message_arena != submessage_arena) { window_def = ::google::protobuf::internal::GetOwnedMessage(message_arena, window_def, submessage_arena); } set_has_window_def(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (range_subselect) { ::google::protobuf::Arena* submessage_arena = range_subselect->GetArena(); if (message_arena != submessage_arena) { range_subselect = ::google::protobuf::internal::GetOwnedMessage(message_arena, range_subselect, submessage_arena); } set_has_range_subselect(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (range_function) { ::google::protobuf::Arena* submessage_arena = range_function->GetArena(); if (message_arena != submessage_arena) { range_function = ::google::protobuf::internal::GetOwnedMessage(message_arena, range_function, submessage_arena); } set_has_range_function(); _impl_.node_.range_function_ = range_function; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.range_function) } void Node::set_allocated_range_table_func(::pg_query::RangeTableFunc* range_table_func) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (range_table_func) { ::google::protobuf::Arena* submessage_arena = range_table_func->GetArena(); if (message_arena != submessage_arena) { range_table_func = ::google::protobuf::internal::GetOwnedMessage(message_arena, range_table_func, submessage_arena); } set_has_range_table_func(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (range_table_func_col) { ::google::protobuf::Arena* submessage_arena = range_table_func_col->GetArena(); if (message_arena != submessage_arena) { range_table_func_col = ::google::protobuf::internal::GetOwnedMessage(message_arena, range_table_func_col, submessage_arena); } set_has_range_table_func_col(); _impl_.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_range_table_sample(::pg_query::RangeTableSample* range_table_sample) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (range_table_sample) { ::google::protobuf::Arena* submessage_arena = range_table_sample->GetArena(); if (message_arena != submessage_arena) { range_table_sample = ::google::protobuf::internal::GetOwnedMessage(message_arena, range_table_sample, submessage_arena); } set_has_range_table_sample(); _impl_.node_.range_table_sample_ = range_table_sample; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.range_table_sample) } void Node::set_allocated_column_def(::pg_query::ColumnDef* column_def) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (column_def) { ::google::protobuf::Arena* submessage_arena = column_def->GetArena(); if (message_arena != submessage_arena) { column_def = ::google::protobuf::internal::GetOwnedMessage(message_arena, column_def, submessage_arena); } set_has_column_def(); _impl_.node_.column_def_ = column_def; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.column_def) } void Node::set_allocated_table_like_clause(::pg_query::TableLikeClause* table_like_clause) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (table_like_clause) { ::google::protobuf::Arena* submessage_arena = table_like_clause->GetArena(); if (message_arena != submessage_arena) { table_like_clause = ::google::protobuf::internal::GetOwnedMessage(message_arena, table_like_clause, submessage_arena); } set_has_table_like_clause(); _impl_.node_.table_like_clause_ = table_like_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.table_like_clause) } void Node::set_allocated_index_elem(::pg_query::IndexElem* index_elem) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (index_elem) { ::google::protobuf::Arena* submessage_arena = index_elem->GetArena(); if (message_arena != submessage_arena) { index_elem = ::google::protobuf::internal::GetOwnedMessage(message_arena, index_elem, submessage_arena); } set_has_index_elem(); _impl_.node_.index_elem_ = index_elem; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.index_elem) } void Node::set_allocated_def_elem(::pg_query::DefElem* def_elem) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (def_elem) { ::google::protobuf::Arena* submessage_arena = def_elem->GetArena(); if (message_arena != submessage_arena) { def_elem = ::google::protobuf::internal::GetOwnedMessage(message_arena, def_elem, submessage_arena); } set_has_def_elem(); _impl_.node_.def_elem_ = def_elem; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.def_elem) } void Node::set_allocated_locking_clause(::pg_query::LockingClause* locking_clause) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (locking_clause) { ::google::protobuf::Arena* submessage_arena = locking_clause->GetArena(); if (message_arena != submessage_arena) { locking_clause = ::google::protobuf::internal::GetOwnedMessage(message_arena, locking_clause, submessage_arena); } set_has_locking_clause(); _impl_.node_.locking_clause_ = locking_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.locking_clause) } void Node::set_allocated_xml_serialize(::pg_query::XmlSerialize* xml_serialize) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (xml_serialize) { ::google::protobuf::Arena* submessage_arena = xml_serialize->GetArena(); if (message_arena != submessage_arena) { xml_serialize = ::google::protobuf::internal::GetOwnedMessage(message_arena, xml_serialize, submessage_arena); } set_has_xml_serialize(); _impl_.node_.xml_serialize_ = xml_serialize; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.xml_serialize) } void Node::set_allocated_partition_elem(::pg_query::PartitionElem* partition_elem) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (partition_elem) { ::google::protobuf::Arena* submessage_arena = partition_elem->GetArena(); if (message_arena != submessage_arena) { partition_elem = ::google::protobuf::internal::GetOwnedMessage(message_arena, partition_elem, submessage_arena); } set_has_partition_elem(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (partition_spec) { ::google::protobuf::Arena* submessage_arena = partition_spec->GetArena(); if (message_arena != submessage_arena) { partition_spec = ::google::protobuf::internal::GetOwnedMessage(message_arena, partition_spec, submessage_arena); } set_has_partition_spec(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (partition_bound_spec) { ::google::protobuf::Arena* submessage_arena = partition_bound_spec->GetArena(); if (message_arena != submessage_arena) { partition_bound_spec = ::google::protobuf::internal::GetOwnedMessage(message_arena, partition_bound_spec, submessage_arena); } set_has_partition_bound_spec(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (partition_range_datum) { ::google::protobuf::Arena* submessage_arena = partition_range_datum->GetArena(); if (message_arena != submessage_arena) { partition_range_datum = ::google::protobuf::internal::GetOwnedMessage(message_arena, partition_range_datum, submessage_arena); } set_has_partition_range_datum(); _impl_.node_.partition_range_datum_ = partition_range_datum; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.partition_range_datum) } void Node::set_allocated_single_partition_spec(::pg_query::SinglePartitionSpec* single_partition_spec) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (single_partition_spec) { ::google::protobuf::Arena* submessage_arena = single_partition_spec->GetArena(); if (message_arena != submessage_arena) { single_partition_spec = ::google::protobuf::internal::GetOwnedMessage(message_arena, single_partition_spec, submessage_arena); } set_has_single_partition_spec(); _impl_.node_.single_partition_spec_ = single_partition_spec; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.single_partition_spec) } void Node::set_allocated_partition_cmd(::pg_query::PartitionCmd* partition_cmd) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (partition_cmd) { ::google::protobuf::Arena* submessage_arena = partition_cmd->GetArena(); if (message_arena != submessage_arena) { partition_cmd = ::google::protobuf::internal::GetOwnedMessage(message_arena, partition_cmd, submessage_arena); } set_has_partition_cmd(); _impl_.node_.partition_cmd_ = partition_cmd; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.partition_cmd) } void Node::set_allocated_range_tbl_entry(::pg_query::RangeTblEntry* range_tbl_entry) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (range_tbl_entry) { ::google::protobuf::Arena* submessage_arena = range_tbl_entry->GetArena(); if (message_arena != submessage_arena) { range_tbl_entry = ::google::protobuf::internal::GetOwnedMessage(message_arena, range_tbl_entry, submessage_arena); } set_has_range_tbl_entry(); _impl_.node_.range_tbl_entry_ = range_tbl_entry; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.range_tbl_entry) } void Node::set_allocated_rtepermission_info(::pg_query::RTEPermissionInfo* rtepermission_info) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (rtepermission_info) { ::google::protobuf::Arena* submessage_arena = rtepermission_info->GetArena(); if (message_arena != submessage_arena) { rtepermission_info = ::google::protobuf::internal::GetOwnedMessage(message_arena, rtepermission_info, submessage_arena); } set_has_rtepermission_info(); _impl_.node_.rtepermission_info_ = rtepermission_info; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.rtepermission_info) } void Node::set_allocated_range_tbl_function(::pg_query::RangeTblFunction* range_tbl_function) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (range_tbl_function) { ::google::protobuf::Arena* submessage_arena = range_tbl_function->GetArena(); if (message_arena != submessage_arena) { range_tbl_function = ::google::protobuf::internal::GetOwnedMessage(message_arena, range_tbl_function, submessage_arena); } set_has_range_tbl_function(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (table_sample_clause) { ::google::protobuf::Arena* submessage_arena = table_sample_clause->GetArena(); if (message_arena != submessage_arena) { table_sample_clause = ::google::protobuf::internal::GetOwnedMessage(message_arena, table_sample_clause, submessage_arena); } set_has_table_sample_clause(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (with_check_option) { ::google::protobuf::Arena* submessage_arena = with_check_option->GetArena(); if (message_arena != submessage_arena) { with_check_option = ::google::protobuf::internal::GetOwnedMessage(message_arena, with_check_option, submessage_arena); } set_has_with_check_option(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (sort_group_clause) { ::google::protobuf::Arena* submessage_arena = sort_group_clause->GetArena(); if (message_arena != submessage_arena) { sort_group_clause = ::google::protobuf::internal::GetOwnedMessage(message_arena, sort_group_clause, submessage_arena); } set_has_sort_group_clause(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (grouping_set) { ::google::protobuf::Arena* submessage_arena = grouping_set->GetArena(); if (message_arena != submessage_arena) { grouping_set = ::google::protobuf::internal::GetOwnedMessage(message_arena, grouping_set, submessage_arena); } set_has_grouping_set(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (window_clause) { ::google::protobuf::Arena* submessage_arena = window_clause->GetArena(); if (message_arena != submessage_arena) { window_clause = ::google::protobuf::internal::GetOwnedMessage(message_arena, window_clause, submessage_arena); } set_has_window_clause(); _impl_.node_.window_clause_ = window_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.window_clause) } void Node::set_allocated_row_mark_clause(::pg_query::RowMarkClause* row_mark_clause) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (row_mark_clause) { ::google::protobuf::Arena* submessage_arena = row_mark_clause->GetArena(); if (message_arena != submessage_arena) { row_mark_clause = ::google::protobuf::internal::GetOwnedMessage(message_arena, row_mark_clause, submessage_arena); } set_has_row_mark_clause(); _impl_.node_.row_mark_clause_ = row_mark_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.row_mark_clause) } void Node::set_allocated_with_clause(::pg_query::WithClause* with_clause) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (with_clause) { ::google::protobuf::Arena* submessage_arena = with_clause->GetArena(); if (message_arena != submessage_arena) { with_clause = ::google::protobuf::internal::GetOwnedMessage(message_arena, with_clause, submessage_arena); } set_has_with_clause(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (infer_clause) { ::google::protobuf::Arena* submessage_arena = infer_clause->GetArena(); if (message_arena != submessage_arena) { infer_clause = ::google::protobuf::internal::GetOwnedMessage(message_arena, infer_clause, submessage_arena); } set_has_infer_clause(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (on_conflict_clause) { ::google::protobuf::Arena* submessage_arena = on_conflict_clause->GetArena(); if (message_arena != submessage_arena) { on_conflict_clause = ::google::protobuf::internal::GetOwnedMessage(message_arena, on_conflict_clause, submessage_arena); } set_has_on_conflict_clause(); _impl_.node_.on_conflict_clause_ = on_conflict_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.on_conflict_clause) } void Node::set_allocated_ctesearch_clause(::pg_query::CTESearchClause* ctesearch_clause) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (ctesearch_clause) { ::google::protobuf::Arena* submessage_arena = ctesearch_clause->GetArena(); if (message_arena != submessage_arena) { ctesearch_clause = ::google::protobuf::internal::GetOwnedMessage(message_arena, ctesearch_clause, submessage_arena); } set_has_ctesearch_clause(); _impl_.node_.ctesearch_clause_ = ctesearch_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.ctesearch_clause) } void Node::set_allocated_ctecycle_clause(::pg_query::CTECycleClause* ctecycle_clause) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (ctecycle_clause) { ::google::protobuf::Arena* submessage_arena = ctecycle_clause->GetArena(); if (message_arena != submessage_arena) { ctecycle_clause = ::google::protobuf::internal::GetOwnedMessage(message_arena, ctecycle_clause, submessage_arena); } set_has_ctecycle_clause(); _impl_.node_.ctecycle_clause_ = ctecycle_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.ctecycle_clause) } void Node::set_allocated_common_table_expr(::pg_query::CommonTableExpr* common_table_expr) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (common_table_expr) { ::google::protobuf::Arena* submessage_arena = common_table_expr->GetArena(); if (message_arena != submessage_arena) { common_table_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, common_table_expr, submessage_arena); } set_has_common_table_expr(); _impl_.node_.common_table_expr_ = common_table_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.common_table_expr) } void Node::set_allocated_merge_when_clause(::pg_query::MergeWhenClause* merge_when_clause) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (merge_when_clause) { ::google::protobuf::Arena* submessage_arena = merge_when_clause->GetArena(); if (message_arena != submessage_arena) { merge_when_clause = ::google::protobuf::internal::GetOwnedMessage(message_arena, merge_when_clause, submessage_arena); } set_has_merge_when_clause(); _impl_.node_.merge_when_clause_ = merge_when_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.merge_when_clause) } void Node::set_allocated_trigger_transition(::pg_query::TriggerTransition* trigger_transition) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (trigger_transition) { ::google::protobuf::Arena* submessage_arena = trigger_transition->GetArena(); if (message_arena != submessage_arena) { trigger_transition = ::google::protobuf::internal::GetOwnedMessage(message_arena, trigger_transition, submessage_arena); } set_has_trigger_transition(); _impl_.node_.trigger_transition_ = trigger_transition; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.trigger_transition) } void Node::set_allocated_json_output(::pg_query::JsonOutput* json_output) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_output) { ::google::protobuf::Arena* submessage_arena = json_output->GetArena(); if (message_arena != submessage_arena) { json_output = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_output, submessage_arena); } set_has_json_output(); _impl_.node_.json_output_ = json_output; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_output) } void Node::set_allocated_json_argument(::pg_query::JsonArgument* json_argument) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_argument) { ::google::protobuf::Arena* submessage_arena = json_argument->GetArena(); if (message_arena != submessage_arena) { json_argument = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_argument, submessage_arena); } set_has_json_argument(); _impl_.node_.json_argument_ = json_argument; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_argument) } void Node::set_allocated_json_func_expr(::pg_query::JsonFuncExpr* json_func_expr) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_func_expr) { ::google::protobuf::Arena* submessage_arena = json_func_expr->GetArena(); if (message_arena != submessage_arena) { json_func_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_func_expr, submessage_arena); } set_has_json_func_expr(); _impl_.node_.json_func_expr_ = json_func_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_func_expr) } void Node::set_allocated_json_table_path_spec(::pg_query::JsonTablePathSpec* json_table_path_spec) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_table_path_spec) { ::google::protobuf::Arena* submessage_arena = json_table_path_spec->GetArena(); if (message_arena != submessage_arena) { json_table_path_spec = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_table_path_spec, submessage_arena); } set_has_json_table_path_spec(); _impl_.node_.json_table_path_spec_ = json_table_path_spec; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_table_path_spec) } void Node::set_allocated_json_table(::pg_query::JsonTable* json_table) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_table) { ::google::protobuf::Arena* submessage_arena = json_table->GetArena(); if (message_arena != submessage_arena) { json_table = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_table, submessage_arena); } set_has_json_table(); _impl_.node_.json_table_ = json_table; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_table) } void Node::set_allocated_json_table_column(::pg_query::JsonTableColumn* json_table_column) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_table_column) { ::google::protobuf::Arena* submessage_arena = json_table_column->GetArena(); if (message_arena != submessage_arena) { json_table_column = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_table_column, submessage_arena); } set_has_json_table_column(); _impl_.node_.json_table_column_ = json_table_column; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_table_column) } void Node::set_allocated_json_key_value(::pg_query::JsonKeyValue* json_key_value) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_key_value) { ::google::protobuf::Arena* submessage_arena = json_key_value->GetArena(); if (message_arena != submessage_arena) { json_key_value = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_key_value, submessage_arena); } set_has_json_key_value(); _impl_.node_.json_key_value_ = json_key_value; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_key_value) } void Node::set_allocated_json_parse_expr(::pg_query::JsonParseExpr* json_parse_expr) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_parse_expr) { ::google::protobuf::Arena* submessage_arena = json_parse_expr->GetArena(); if (message_arena != submessage_arena) { json_parse_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_parse_expr, submessage_arena); } set_has_json_parse_expr(); _impl_.node_.json_parse_expr_ = json_parse_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_parse_expr) } void Node::set_allocated_json_scalar_expr(::pg_query::JsonScalarExpr* json_scalar_expr) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_scalar_expr) { ::google::protobuf::Arena* submessage_arena = json_scalar_expr->GetArena(); if (message_arena != submessage_arena) { json_scalar_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_scalar_expr, submessage_arena); } set_has_json_scalar_expr(); _impl_.node_.json_scalar_expr_ = json_scalar_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_scalar_expr) } void Node::set_allocated_json_serialize_expr(::pg_query::JsonSerializeExpr* json_serialize_expr) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_serialize_expr) { ::google::protobuf::Arena* submessage_arena = json_serialize_expr->GetArena(); if (message_arena != submessage_arena) { json_serialize_expr = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_serialize_expr, submessage_arena); } set_has_json_serialize_expr(); _impl_.node_.json_serialize_expr_ = json_serialize_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_serialize_expr) } void Node::set_allocated_json_object_constructor(::pg_query::JsonObjectConstructor* json_object_constructor) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_object_constructor) { ::google::protobuf::Arena* submessage_arena = json_object_constructor->GetArena(); if (message_arena != submessage_arena) { json_object_constructor = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_object_constructor, submessage_arena); } set_has_json_object_constructor(); _impl_.node_.json_object_constructor_ = json_object_constructor; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_object_constructor) } void Node::set_allocated_json_array_constructor(::pg_query::JsonArrayConstructor* json_array_constructor) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_array_constructor) { ::google::protobuf::Arena* submessage_arena = json_array_constructor->GetArena(); if (message_arena != submessage_arena) { json_array_constructor = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_array_constructor, submessage_arena); } set_has_json_array_constructor(); _impl_.node_.json_array_constructor_ = json_array_constructor; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_array_constructor) } void Node::set_allocated_json_array_query_constructor(::pg_query::JsonArrayQueryConstructor* json_array_query_constructor) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_array_query_constructor) { ::google::protobuf::Arena* submessage_arena = json_array_query_constructor->GetArena(); if (message_arena != submessage_arena) { json_array_query_constructor = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_array_query_constructor, submessage_arena); } set_has_json_array_query_constructor(); _impl_.node_.json_array_query_constructor_ = json_array_query_constructor; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_array_query_constructor) } void Node::set_allocated_json_agg_constructor(::pg_query::JsonAggConstructor* json_agg_constructor) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_agg_constructor) { ::google::protobuf::Arena* submessage_arena = json_agg_constructor->GetArena(); if (message_arena != submessage_arena) { json_agg_constructor = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_agg_constructor, submessage_arena); } set_has_json_agg_constructor(); _impl_.node_.json_agg_constructor_ = json_agg_constructor; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_agg_constructor) } void Node::set_allocated_json_object_agg(::pg_query::JsonObjectAgg* json_object_agg) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_object_agg) { ::google::protobuf::Arena* submessage_arena = json_object_agg->GetArena(); if (message_arena != submessage_arena) { json_object_agg = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_object_agg, submessage_arena); } set_has_json_object_agg(); _impl_.node_.json_object_agg_ = json_object_agg; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_object_agg) } void Node::set_allocated_json_array_agg(::pg_query::JsonArrayAgg* json_array_agg) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (json_array_agg) { ::google::protobuf::Arena* submessage_arena = json_array_agg->GetArena(); if (message_arena != submessage_arena) { json_array_agg = ::google::protobuf::internal::GetOwnedMessage(message_arena, json_array_agg, submessage_arena); } set_has_json_array_agg(); _impl_.node_.json_array_agg_ = json_array_agg; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.json_array_agg) } void Node::set_allocated_raw_stmt(::pg_query::RawStmt* raw_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (raw_stmt) { ::google::protobuf::Arena* submessage_arena = raw_stmt->GetArena(); if (message_arena != submessage_arena) { raw_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, raw_stmt, submessage_arena); } set_has_raw_stmt(); _impl_.node_.raw_stmt_ = raw_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.raw_stmt) } void Node::set_allocated_insert_stmt(::pg_query::InsertStmt* insert_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (insert_stmt) { ::google::protobuf::Arena* submessage_arena = insert_stmt->GetArena(); if (message_arena != submessage_arena) { insert_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, insert_stmt, submessage_arena); } set_has_insert_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (delete_stmt) { ::google::protobuf::Arena* submessage_arena = delete_stmt->GetArena(); if (message_arena != submessage_arena) { delete_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, delete_stmt, submessage_arena); } set_has_delete_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (update_stmt) { ::google::protobuf::Arena* submessage_arena = update_stmt->GetArena(); if (message_arena != submessage_arena) { update_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, update_stmt, submessage_arena); } set_has_update_stmt(); _impl_.node_.update_stmt_ = update_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.update_stmt) } void Node::set_allocated_merge_stmt(::pg_query::MergeStmt* merge_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (merge_stmt) { ::google::protobuf::Arena* submessage_arena = merge_stmt->GetArena(); if (message_arena != submessage_arena) { merge_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, merge_stmt, submessage_arena); } set_has_merge_stmt(); _impl_.node_.merge_stmt_ = merge_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.merge_stmt) } void Node::set_allocated_select_stmt(::pg_query::SelectStmt* select_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (select_stmt) { ::google::protobuf::Arena* submessage_arena = select_stmt->GetArena(); if (message_arena != submessage_arena) { select_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, select_stmt, submessage_arena); } set_has_select_stmt(); _impl_.node_.select_stmt_ = select_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.select_stmt) } void Node::set_allocated_set_operation_stmt(::pg_query::SetOperationStmt* set_operation_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (set_operation_stmt) { ::google::protobuf::Arena* submessage_arena = set_operation_stmt->GetArena(); if (message_arena != submessage_arena) { set_operation_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, set_operation_stmt, submessage_arena); } set_has_set_operation_stmt(); _impl_.node_.set_operation_stmt_ = set_operation_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.set_operation_stmt) } void Node::set_allocated_return_stmt(::pg_query::ReturnStmt* return_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (return_stmt) { ::google::protobuf::Arena* submessage_arena = return_stmt->GetArena(); if (message_arena != submessage_arena) { return_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, return_stmt, submessage_arena); } set_has_return_stmt(); _impl_.node_.return_stmt_ = return_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.return_stmt) } void Node::set_allocated_plassign_stmt(::pg_query::PLAssignStmt* plassign_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (plassign_stmt) { ::google::protobuf::Arena* submessage_arena = plassign_stmt->GetArena(); if (message_arena != submessage_arena) { plassign_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, plassign_stmt, submessage_arena); } set_has_plassign_stmt(); _impl_.node_.plassign_stmt_ = plassign_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.plassign_stmt) } void Node::set_allocated_create_schema_stmt(::pg_query::CreateSchemaStmt* create_schema_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_schema_stmt) { ::google::protobuf::Arena* submessage_arena = create_schema_stmt->GetArena(); if (message_arena != submessage_arena) { create_schema_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_schema_stmt, submessage_arena); } set_has_create_schema_stmt(); _impl_.node_.create_schema_stmt_ = create_schema_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_schema_stmt) } void Node::set_allocated_alter_table_stmt(::pg_query::AlterTableStmt* alter_table_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_table_stmt) { ::google::protobuf::Arena* submessage_arena = alter_table_stmt->GetArena(); if (message_arena != submessage_arena) { alter_table_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_table_stmt, submessage_arena); } set_has_alter_table_stmt(); _impl_.node_.alter_table_stmt_ = alter_table_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_table_stmt) } void Node::set_allocated_replica_identity_stmt(::pg_query::ReplicaIdentityStmt* replica_identity_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (replica_identity_stmt) { ::google::protobuf::Arena* submessage_arena = replica_identity_stmt->GetArena(); if (message_arena != submessage_arena) { replica_identity_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, replica_identity_stmt, submessage_arena); } set_has_replica_identity_stmt(); _impl_.node_.replica_identity_stmt_ = replica_identity_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.replica_identity_stmt) } void Node::set_allocated_alter_table_cmd(::pg_query::AlterTableCmd* alter_table_cmd) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_table_cmd) { ::google::protobuf::Arena* submessage_arena = alter_table_cmd->GetArena(); if (message_arena != submessage_arena) { alter_table_cmd = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_table_cmd, submessage_arena); } set_has_alter_table_cmd(); _impl_.node_.alter_table_cmd_ = alter_table_cmd; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_table_cmd) } void Node::set_allocated_alter_collation_stmt(::pg_query::AlterCollationStmt* alter_collation_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_collation_stmt) { ::google::protobuf::Arena* submessage_arena = alter_collation_stmt->GetArena(); if (message_arena != submessage_arena) { alter_collation_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_collation_stmt, submessage_arena); } set_has_alter_collation_stmt(); _impl_.node_.alter_collation_stmt_ = alter_collation_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_collation_stmt) } void Node::set_allocated_alter_domain_stmt(::pg_query::AlterDomainStmt* alter_domain_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_domain_stmt) { ::google::protobuf::Arena* submessage_arena = alter_domain_stmt->GetArena(); if (message_arena != submessage_arena) { alter_domain_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_domain_stmt, submessage_arena); } set_has_alter_domain_stmt(); _impl_.node_.alter_domain_stmt_ = alter_domain_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_domain_stmt) } void Node::set_allocated_grant_stmt(::pg_query::GrantStmt* grant_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (grant_stmt) { ::google::protobuf::Arena* submessage_arena = grant_stmt->GetArena(); if (message_arena != submessage_arena) { grant_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, grant_stmt, submessage_arena); } set_has_grant_stmt(); _impl_.node_.grant_stmt_ = grant_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.grant_stmt) } void Node::set_allocated_object_with_args(::pg_query::ObjectWithArgs* object_with_args) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (object_with_args) { ::google::protobuf::Arena* submessage_arena = object_with_args->GetArena(); if (message_arena != submessage_arena) { object_with_args = ::google::protobuf::internal::GetOwnedMessage(message_arena, object_with_args, submessage_arena); } set_has_object_with_args(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (access_priv) { ::google::protobuf::Arena* submessage_arena = access_priv->GetArena(); if (message_arena != submessage_arena) { access_priv = ::google::protobuf::internal::GetOwnedMessage(message_arena, access_priv, submessage_arena); } set_has_access_priv(); _impl_.node_.access_priv_ = access_priv; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.access_priv) } void Node::set_allocated_grant_role_stmt(::pg_query::GrantRoleStmt* grant_role_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (grant_role_stmt) { ::google::protobuf::Arena* submessage_arena = grant_role_stmt->GetArena(); if (message_arena != submessage_arena) { grant_role_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, grant_role_stmt, submessage_arena); } set_has_grant_role_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_default_privileges_stmt) { ::google::protobuf::Arena* submessage_arena = alter_default_privileges_stmt->GetArena(); if (message_arena != submessage_arena) { alter_default_privileges_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_default_privileges_stmt, submessage_arena); } set_has_alter_default_privileges_stmt(); _impl_.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_copy_stmt(::pg_query::CopyStmt* copy_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (copy_stmt) { ::google::protobuf::Arena* submessage_arena = copy_stmt->GetArena(); if (message_arena != submessage_arena) { copy_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, copy_stmt, submessage_arena); } set_has_copy_stmt(); _impl_.node_.copy_stmt_ = copy_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.copy_stmt) } void Node::set_allocated_variable_set_stmt(::pg_query::VariableSetStmt* variable_set_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (variable_set_stmt) { ::google::protobuf::Arena* submessage_arena = variable_set_stmt->GetArena(); if (message_arena != submessage_arena) { variable_set_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, variable_set_stmt, submessage_arena); } set_has_variable_set_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (variable_show_stmt) { ::google::protobuf::Arena* submessage_arena = variable_show_stmt->GetArena(); if (message_arena != submessage_arena) { variable_show_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, variable_show_stmt, submessage_arena); } set_has_variable_show_stmt(); _impl_.node_.variable_show_stmt_ = variable_show_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.variable_show_stmt) } void Node::set_allocated_create_stmt(::pg_query::CreateStmt* create_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_stmt) { ::google::protobuf::Arena* submessage_arena = create_stmt->GetArena(); if (message_arena != submessage_arena) { create_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_stmt, submessage_arena); } set_has_create_stmt(); _impl_.node_.create_stmt_ = create_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_stmt) } void Node::set_allocated_constraint(::pg_query::Constraint* constraint) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (constraint) { ::google::protobuf::Arena* submessage_arena = constraint->GetArena(); if (message_arena != submessage_arena) { constraint = ::google::protobuf::internal::GetOwnedMessage(message_arena, constraint, submessage_arena); } set_has_constraint(); _impl_.node_.constraint_ = constraint; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.constraint) } void Node::set_allocated_create_table_space_stmt(::pg_query::CreateTableSpaceStmt* create_table_space_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_table_space_stmt) { ::google::protobuf::Arena* submessage_arena = create_table_space_stmt->GetArena(); if (message_arena != submessage_arena) { create_table_space_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_table_space_stmt, submessage_arena); } set_has_create_table_space_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (drop_table_space_stmt) { ::google::protobuf::Arena* submessage_arena = drop_table_space_stmt->GetArena(); if (message_arena != submessage_arena) { drop_table_space_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, drop_table_space_stmt, submessage_arena); } set_has_drop_table_space_stmt(); _impl_.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_table_space_options_stmt(::pg_query::AlterTableSpaceOptionsStmt* alter_table_space_options_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_table_space_options_stmt) { ::google::protobuf::Arena* submessage_arena = alter_table_space_options_stmt->GetArena(); if (message_arena != submessage_arena) { alter_table_space_options_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_table_space_options_stmt, submessage_arena); } set_has_alter_table_space_options_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_table_move_all_stmt) { ::google::protobuf::Arena* submessage_arena = alter_table_move_all_stmt->GetArena(); if (message_arena != submessage_arena) { alter_table_move_all_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_table_move_all_stmt, submessage_arena); } set_has_alter_table_move_all_stmt(); _impl_.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_create_extension_stmt(::pg_query::CreateExtensionStmt* create_extension_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_extension_stmt) { ::google::protobuf::Arena* submessage_arena = create_extension_stmt->GetArena(); if (message_arena != submessage_arena) { create_extension_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_extension_stmt, submessage_arena); } set_has_create_extension_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_extension_stmt) { ::google::protobuf::Arena* submessage_arena = alter_extension_stmt->GetArena(); if (message_arena != submessage_arena) { alter_extension_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_extension_stmt, submessage_arena); } set_has_alter_extension_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_extension_contents_stmt) { ::google::protobuf::Arena* submessage_arena = alter_extension_contents_stmt->GetArena(); if (message_arena != submessage_arena) { alter_extension_contents_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_extension_contents_stmt, submessage_arena); } set_has_alter_extension_contents_stmt(); _impl_.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_fdw_stmt(::pg_query::CreateFdwStmt* create_fdw_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_fdw_stmt) { ::google::protobuf::Arena* submessage_arena = create_fdw_stmt->GetArena(); if (message_arena != submessage_arena) { create_fdw_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_fdw_stmt, submessage_arena); } set_has_create_fdw_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_fdw_stmt) { ::google::protobuf::Arena* submessage_arena = alter_fdw_stmt->GetArena(); if (message_arena != submessage_arena) { alter_fdw_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_fdw_stmt, submessage_arena); } set_has_alter_fdw_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_foreign_server_stmt) { ::google::protobuf::Arena* submessage_arena = create_foreign_server_stmt->GetArena(); if (message_arena != submessage_arena) { create_foreign_server_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_foreign_server_stmt, submessage_arena); } set_has_create_foreign_server_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_foreign_server_stmt) { ::google::protobuf::Arena* submessage_arena = alter_foreign_server_stmt->GetArena(); if (message_arena != submessage_arena) { alter_foreign_server_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_foreign_server_stmt, submessage_arena); } set_has_alter_foreign_server_stmt(); _impl_.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_foreign_table_stmt(::pg_query::CreateForeignTableStmt* create_foreign_table_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_foreign_table_stmt) { ::google::protobuf::Arena* submessage_arena = create_foreign_table_stmt->GetArena(); if (message_arena != submessage_arena) { create_foreign_table_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_foreign_table_stmt, submessage_arena); } set_has_create_foreign_table_stmt(); _impl_.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_create_user_mapping_stmt(::pg_query::CreateUserMappingStmt* create_user_mapping_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_user_mapping_stmt) { ::google::protobuf::Arena* submessage_arena = create_user_mapping_stmt->GetArena(); if (message_arena != submessage_arena) { create_user_mapping_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_user_mapping_stmt, submessage_arena); } set_has_create_user_mapping_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_user_mapping_stmt) { ::google::protobuf::Arena* submessage_arena = alter_user_mapping_stmt->GetArena(); if (message_arena != submessage_arena) { alter_user_mapping_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_user_mapping_stmt, submessage_arena); } set_has_alter_user_mapping_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (drop_user_mapping_stmt) { ::google::protobuf::Arena* submessage_arena = drop_user_mapping_stmt->GetArena(); if (message_arena != submessage_arena) { drop_user_mapping_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, drop_user_mapping_stmt, submessage_arena); } set_has_drop_user_mapping_stmt(); _impl_.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_import_foreign_schema_stmt(::pg_query::ImportForeignSchemaStmt* import_foreign_schema_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (import_foreign_schema_stmt) { ::google::protobuf::Arena* submessage_arena = import_foreign_schema_stmt->GetArena(); if (message_arena != submessage_arena) { import_foreign_schema_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, import_foreign_schema_stmt, submessage_arena); } set_has_import_foreign_schema_stmt(); _impl_.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_policy_stmt(::pg_query::CreatePolicyStmt* create_policy_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_policy_stmt) { ::google::protobuf::Arena* submessage_arena = create_policy_stmt->GetArena(); if (message_arena != submessage_arena) { create_policy_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_policy_stmt, submessage_arena); } set_has_create_policy_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_policy_stmt) { ::google::protobuf::Arena* submessage_arena = alter_policy_stmt->GetArena(); if (message_arena != submessage_arena) { alter_policy_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_policy_stmt, submessage_arena); } set_has_alter_policy_stmt(); _impl_.node_.alter_policy_stmt_ = alter_policy_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_policy_stmt) } void Node::set_allocated_create_am_stmt(::pg_query::CreateAmStmt* create_am_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_am_stmt) { ::google::protobuf::Arena* submessage_arena = create_am_stmt->GetArena(); if (message_arena != submessage_arena) { create_am_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_am_stmt, submessage_arena); } set_has_create_am_stmt(); _impl_.node_.create_am_stmt_ = create_am_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_am_stmt) } void Node::set_allocated_create_trig_stmt(::pg_query::CreateTrigStmt* create_trig_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_trig_stmt) { ::google::protobuf::Arena* submessage_arena = create_trig_stmt->GetArena(); if (message_arena != submessage_arena) { create_trig_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_trig_stmt, submessage_arena); } set_has_create_trig_stmt(); _impl_.node_.create_trig_stmt_ = create_trig_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_trig_stmt) } void Node::set_allocated_create_event_trig_stmt(::pg_query::CreateEventTrigStmt* create_event_trig_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_event_trig_stmt) { ::google::protobuf::Arena* submessage_arena = create_event_trig_stmt->GetArena(); if (message_arena != submessage_arena) { create_event_trig_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_event_trig_stmt, submessage_arena); } set_has_create_event_trig_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_event_trig_stmt) { ::google::protobuf::Arena* submessage_arena = alter_event_trig_stmt->GetArena(); if (message_arena != submessage_arena) { alter_event_trig_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_event_trig_stmt, submessage_arena); } set_has_alter_event_trig_stmt(); _impl_.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_create_plang_stmt(::pg_query::CreatePLangStmt* create_plang_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_plang_stmt) { ::google::protobuf::Arena* submessage_arena = create_plang_stmt->GetArena(); if (message_arena != submessage_arena) { create_plang_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_plang_stmt, submessage_arena); } set_has_create_plang_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_role_stmt) { ::google::protobuf::Arena* submessage_arena = create_role_stmt->GetArena(); if (message_arena != submessage_arena) { create_role_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_role_stmt, submessage_arena); } set_has_create_role_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_role_stmt) { ::google::protobuf::Arena* submessage_arena = alter_role_stmt->GetArena(); if (message_arena != submessage_arena) { alter_role_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_role_stmt, submessage_arena); } set_has_alter_role_stmt(); _impl_.node_.alter_role_stmt_ = alter_role_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_role_stmt) } void Node::set_allocated_alter_role_set_stmt(::pg_query::AlterRoleSetStmt* alter_role_set_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_role_set_stmt) { ::google::protobuf::Arena* submessage_arena = alter_role_set_stmt->GetArena(); if (message_arena != submessage_arena) { alter_role_set_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_role_set_stmt, submessage_arena); } set_has_alter_role_set_stmt(); _impl_.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_drop_role_stmt(::pg_query::DropRoleStmt* drop_role_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (drop_role_stmt) { ::google::protobuf::Arena* submessage_arena = drop_role_stmt->GetArena(); if (message_arena != submessage_arena) { drop_role_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, drop_role_stmt, submessage_arena); } set_has_drop_role_stmt(); _impl_.node_.drop_role_stmt_ = drop_role_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.drop_role_stmt) } void Node::set_allocated_create_seq_stmt(::pg_query::CreateSeqStmt* create_seq_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_seq_stmt) { ::google::protobuf::Arena* submessage_arena = create_seq_stmt->GetArena(); if (message_arena != submessage_arena) { create_seq_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_seq_stmt, submessage_arena); } set_has_create_seq_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_seq_stmt) { ::google::protobuf::Arena* submessage_arena = alter_seq_stmt->GetArena(); if (message_arena != submessage_arena) { alter_seq_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_seq_stmt, submessage_arena); } set_has_alter_seq_stmt(); _impl_.node_.alter_seq_stmt_ = alter_seq_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_seq_stmt) } void Node::set_allocated_define_stmt(::pg_query::DefineStmt* define_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (define_stmt) { ::google::protobuf::Arena* submessage_arena = define_stmt->GetArena(); if (message_arena != submessage_arena) { define_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, define_stmt, submessage_arena); } set_has_define_stmt(); _impl_.node_.define_stmt_ = define_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.define_stmt) } void Node::set_allocated_create_domain_stmt(::pg_query::CreateDomainStmt* create_domain_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_domain_stmt) { ::google::protobuf::Arena* submessage_arena = create_domain_stmt->GetArena(); if (message_arena != submessage_arena) { create_domain_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_domain_stmt, submessage_arena); } set_has_create_domain_stmt(); _impl_.node_.create_domain_stmt_ = create_domain_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_domain_stmt) } void Node::set_allocated_create_op_class_stmt(::pg_query::CreateOpClassStmt* create_op_class_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_op_class_stmt) { ::google::protobuf::Arena* submessage_arena = create_op_class_stmt->GetArena(); if (message_arena != submessage_arena) { create_op_class_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_op_class_stmt, submessage_arena); } set_has_create_op_class_stmt(); _impl_.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_class_item(::pg_query::CreateOpClassItem* create_op_class_item) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_op_class_item) { ::google::protobuf::Arena* submessage_arena = create_op_class_item->GetArena(); if (message_arena != submessage_arena) { create_op_class_item = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_op_class_item, submessage_arena); } set_has_create_op_class_item(); _impl_.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_create_op_family_stmt(::pg_query::CreateOpFamilyStmt* create_op_family_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_op_family_stmt) { ::google::protobuf::Arena* submessage_arena = create_op_family_stmt->GetArena(); if (message_arena != submessage_arena) { create_op_family_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_op_family_stmt, submessage_arena); } set_has_create_op_family_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_op_family_stmt) { ::google::protobuf::Arena* submessage_arena = alter_op_family_stmt->GetArena(); if (message_arena != submessage_arena) { alter_op_family_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_op_family_stmt, submessage_arena); } set_has_alter_op_family_stmt(); _impl_.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_drop_stmt(::pg_query::DropStmt* drop_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (drop_stmt) { ::google::protobuf::Arena* submessage_arena = drop_stmt->GetArena(); if (message_arena != submessage_arena) { drop_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, drop_stmt, submessage_arena); } set_has_drop_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (truncate_stmt) { ::google::protobuf::Arena* submessage_arena = truncate_stmt->GetArena(); if (message_arena != submessage_arena) { truncate_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, truncate_stmt, submessage_arena); } set_has_truncate_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (comment_stmt) { ::google::protobuf::Arena* submessage_arena = comment_stmt->GetArena(); if (message_arena != submessage_arena) { comment_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, comment_stmt, submessage_arena); } set_has_comment_stmt(); _impl_.node_.comment_stmt_ = comment_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.comment_stmt) } void Node::set_allocated_sec_label_stmt(::pg_query::SecLabelStmt* sec_label_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (sec_label_stmt) { ::google::protobuf::Arena* submessage_arena = sec_label_stmt->GetArena(); if (message_arena != submessage_arena) { sec_label_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, sec_label_stmt, submessage_arena); } set_has_sec_label_stmt(); _impl_.node_.sec_label_stmt_ = sec_label_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.sec_label_stmt) } void Node::set_allocated_declare_cursor_stmt(::pg_query::DeclareCursorStmt* declare_cursor_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (declare_cursor_stmt) { ::google::protobuf::Arena* submessage_arena = declare_cursor_stmt->GetArena(); if (message_arena != submessage_arena) { declare_cursor_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, declare_cursor_stmt, submessage_arena); } set_has_declare_cursor_stmt(); _impl_.node_.declare_cursor_stmt_ = declare_cursor_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.declare_cursor_stmt) } void Node::set_allocated_close_portal_stmt(::pg_query::ClosePortalStmt* close_portal_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (close_portal_stmt) { ::google::protobuf::Arena* submessage_arena = close_portal_stmt->GetArena(); if (message_arena != submessage_arena) { close_portal_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, close_portal_stmt, submessage_arena); } set_has_close_portal_stmt(); _impl_.node_.close_portal_stmt_ = close_portal_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.close_portal_stmt) } void Node::set_allocated_fetch_stmt(::pg_query::FetchStmt* fetch_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (fetch_stmt) { ::google::protobuf::Arena* submessage_arena = fetch_stmt->GetArena(); if (message_arena != submessage_arena) { fetch_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, fetch_stmt, submessage_arena); } set_has_fetch_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (index_stmt) { ::google::protobuf::Arena* submessage_arena = index_stmt->GetArena(); if (message_arena != submessage_arena) { index_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, index_stmt, submessage_arena); } set_has_index_stmt(); _impl_.node_.index_stmt_ = index_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.index_stmt) } void Node::set_allocated_create_stats_stmt(::pg_query::CreateStatsStmt* create_stats_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_stats_stmt) { ::google::protobuf::Arena* submessage_arena = create_stats_stmt->GetArena(); if (message_arena != submessage_arena) { create_stats_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_stats_stmt, submessage_arena); } set_has_create_stats_stmt(); _impl_.node_.create_stats_stmt_ = create_stats_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_stats_stmt) } void Node::set_allocated_stats_elem(::pg_query::StatsElem* stats_elem) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (stats_elem) { ::google::protobuf::Arena* submessage_arena = stats_elem->GetArena(); if (message_arena != submessage_arena) { stats_elem = ::google::protobuf::internal::GetOwnedMessage(message_arena, stats_elem, submessage_arena); } set_has_stats_elem(); _impl_.node_.stats_elem_ = stats_elem; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.stats_elem) } void Node::set_allocated_alter_stats_stmt(::pg_query::AlterStatsStmt* alter_stats_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_stats_stmt) { ::google::protobuf::Arena* submessage_arena = alter_stats_stmt->GetArena(); if (message_arena != submessage_arena) { alter_stats_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_stats_stmt, submessage_arena); } set_has_alter_stats_stmt(); _impl_.node_.alter_stats_stmt_ = alter_stats_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_stats_stmt) } void Node::set_allocated_create_function_stmt(::pg_query::CreateFunctionStmt* create_function_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_function_stmt) { ::google::protobuf::Arena* submessage_arena = create_function_stmt->GetArena(); if (message_arena != submessage_arena) { create_function_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_function_stmt, submessage_arena); } set_has_create_function_stmt(); _impl_.node_.create_function_stmt_ = create_function_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_function_stmt) } void Node::set_allocated_function_parameter(::pg_query::FunctionParameter* function_parameter) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (function_parameter) { ::google::protobuf::Arena* submessage_arena = function_parameter->GetArena(); if (message_arena != submessage_arena) { function_parameter = ::google::protobuf::internal::GetOwnedMessage(message_arena, function_parameter, submessage_arena); } set_has_function_parameter(); _impl_.node_.function_parameter_ = function_parameter; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.function_parameter) } void Node::set_allocated_alter_function_stmt(::pg_query::AlterFunctionStmt* alter_function_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_function_stmt) { ::google::protobuf::Arena* submessage_arena = alter_function_stmt->GetArena(); if (message_arena != submessage_arena) { alter_function_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_function_stmt, submessage_arena); } set_has_alter_function_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (do_stmt) { ::google::protobuf::Arena* submessage_arena = do_stmt->GetArena(); if (message_arena != submessage_arena) { do_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, do_stmt, submessage_arena); } set_has_do_stmt(); _impl_.node_.do_stmt_ = do_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.do_stmt) } void Node::set_allocated_inline_code_block(::pg_query::InlineCodeBlock* inline_code_block) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (inline_code_block) { ::google::protobuf::Arena* submessage_arena = inline_code_block->GetArena(); if (message_arena != submessage_arena) { inline_code_block = ::google::protobuf::internal::GetOwnedMessage(message_arena, inline_code_block, submessage_arena); } set_has_inline_code_block(); _impl_.node_.inline_code_block_ = inline_code_block; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.inline_code_block) } void Node::set_allocated_call_stmt(::pg_query::CallStmt* call_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (call_stmt) { ::google::protobuf::Arena* submessage_arena = call_stmt->GetArena(); if (message_arena != submessage_arena) { call_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, call_stmt, submessage_arena); } set_has_call_stmt(); _impl_.node_.call_stmt_ = call_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.call_stmt) } void Node::set_allocated_call_context(::pg_query::CallContext* call_context) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (call_context) { ::google::protobuf::Arena* submessage_arena = call_context->GetArena(); if (message_arena != submessage_arena) { call_context = ::google::protobuf::internal::GetOwnedMessage(message_arena, call_context, submessage_arena); } set_has_call_context(); _impl_.node_.call_context_ = call_context; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.call_context) } void Node::set_allocated_rename_stmt(::pg_query::RenameStmt* rename_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (rename_stmt) { ::google::protobuf::Arena* submessage_arena = rename_stmt->GetArena(); if (message_arena != submessage_arena) { rename_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, rename_stmt, submessage_arena); } set_has_rename_stmt(); _impl_.node_.rename_stmt_ = rename_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.rename_stmt) } void Node::set_allocated_alter_object_depends_stmt(::pg_query::AlterObjectDependsStmt* alter_object_depends_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_object_depends_stmt) { ::google::protobuf::Arena* submessage_arena = alter_object_depends_stmt->GetArena(); if (message_arena != submessage_arena) { alter_object_depends_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_object_depends_stmt, submessage_arena); } set_has_alter_object_depends_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_object_schema_stmt) { ::google::protobuf::Arena* submessage_arena = alter_object_schema_stmt->GetArena(); if (message_arena != submessage_arena) { alter_object_schema_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_object_schema_stmt, submessage_arena); } set_has_alter_object_schema_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_owner_stmt) { ::google::protobuf::Arena* submessage_arena = alter_owner_stmt->GetArena(); if (message_arena != submessage_arena) { alter_owner_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_owner_stmt, submessage_arena); } set_has_alter_owner_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_operator_stmt) { ::google::protobuf::Arena* submessage_arena = alter_operator_stmt->GetArena(); if (message_arena != submessage_arena) { alter_operator_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_operator_stmt, submessage_arena); } set_has_alter_operator_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_type_stmt) { ::google::protobuf::Arena* submessage_arena = alter_type_stmt->GetArena(); if (message_arena != submessage_arena) { alter_type_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_type_stmt, submessage_arena); } set_has_alter_type_stmt(); _impl_.node_.alter_type_stmt_ = alter_type_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_type_stmt) } void Node::set_allocated_rule_stmt(::pg_query::RuleStmt* rule_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (rule_stmt) { ::google::protobuf::Arena* submessage_arena = rule_stmt->GetArena(); if (message_arena != submessage_arena) { rule_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, rule_stmt, submessage_arena); } set_has_rule_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (notify_stmt) { ::google::protobuf::Arena* submessage_arena = notify_stmt->GetArena(); if (message_arena != submessage_arena) { notify_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, notify_stmt, submessage_arena); } set_has_notify_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (listen_stmt) { ::google::protobuf::Arena* submessage_arena = listen_stmt->GetArena(); if (message_arena != submessage_arena) { listen_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, listen_stmt, submessage_arena); } set_has_listen_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (unlisten_stmt) { ::google::protobuf::Arena* submessage_arena = unlisten_stmt->GetArena(); if (message_arena != submessage_arena) { unlisten_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, unlisten_stmt, submessage_arena); } set_has_unlisten_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (transaction_stmt) { ::google::protobuf::Arena* submessage_arena = transaction_stmt->GetArena(); if (message_arena != submessage_arena) { transaction_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, transaction_stmt, submessage_arena); } set_has_transaction_stmt(); _impl_.node_.transaction_stmt_ = transaction_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.transaction_stmt) } void Node::set_allocated_composite_type_stmt(::pg_query::CompositeTypeStmt* composite_type_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (composite_type_stmt) { ::google::protobuf::Arena* submessage_arena = composite_type_stmt->GetArena(); if (message_arena != submessage_arena) { composite_type_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, composite_type_stmt, submessage_arena); } set_has_composite_type_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_enum_stmt) { ::google::protobuf::Arena* submessage_arena = create_enum_stmt->GetArena(); if (message_arena != submessage_arena) { create_enum_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_enum_stmt, submessage_arena); } set_has_create_enum_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_range_stmt) { ::google::protobuf::Arena* submessage_arena = create_range_stmt->GetArena(); if (message_arena != submessage_arena) { create_range_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_range_stmt, submessage_arena); } set_has_create_range_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_enum_stmt) { ::google::protobuf::Arena* submessage_arena = alter_enum_stmt->GetArena(); if (message_arena != submessage_arena) { alter_enum_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_enum_stmt, submessage_arena); } set_has_alter_enum_stmt(); _impl_.node_.alter_enum_stmt_ = alter_enum_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_enum_stmt) } void Node::set_allocated_view_stmt(::pg_query::ViewStmt* view_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (view_stmt) { ::google::protobuf::Arena* submessage_arena = view_stmt->GetArena(); if (message_arena != submessage_arena) { view_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, view_stmt, submessage_arena); } set_has_view_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (load_stmt) { ::google::protobuf::Arena* submessage_arena = load_stmt->GetArena(); if (message_arena != submessage_arena) { load_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, load_stmt, submessage_arena); } set_has_load_stmt(); _impl_.node_.load_stmt_ = load_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.load_stmt) } void Node::set_allocated_createdb_stmt(::pg_query::CreatedbStmt* createdb_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (createdb_stmt) { ::google::protobuf::Arena* submessage_arena = createdb_stmt->GetArena(); if (message_arena != submessage_arena) { createdb_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, createdb_stmt, submessage_arena); } set_has_createdb_stmt(); _impl_.node_.createdb_stmt_ = createdb_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.createdb_stmt) } void Node::set_allocated_alter_database_stmt(::pg_query::AlterDatabaseStmt* alter_database_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_database_stmt) { ::google::protobuf::Arena* submessage_arena = alter_database_stmt->GetArena(); if (message_arena != submessage_arena) { alter_database_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_database_stmt, submessage_arena); } set_has_alter_database_stmt(); _impl_.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_refresh_coll_stmt(::pg_query::AlterDatabaseRefreshCollStmt* alter_database_refresh_coll_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_database_refresh_coll_stmt) { ::google::protobuf::Arena* submessage_arena = alter_database_refresh_coll_stmt->GetArena(); if (message_arena != submessage_arena) { alter_database_refresh_coll_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_database_refresh_coll_stmt, submessage_arena); } set_has_alter_database_refresh_coll_stmt(); _impl_.node_.alter_database_refresh_coll_stmt_ = alter_database_refresh_coll_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_database_refresh_coll_stmt) } void Node::set_allocated_alter_database_set_stmt(::pg_query::AlterDatabaseSetStmt* alter_database_set_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_database_set_stmt) { ::google::protobuf::Arena* submessage_arena = alter_database_set_stmt->GetArena(); if (message_arena != submessage_arena) { alter_database_set_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_database_set_stmt, submessage_arena); } set_has_alter_database_set_stmt(); _impl_.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_dropdb_stmt(::pg_query::DropdbStmt* dropdb_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (dropdb_stmt) { ::google::protobuf::Arena* submessage_arena = dropdb_stmt->GetArena(); if (message_arena != submessage_arena) { dropdb_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, dropdb_stmt, submessage_arena); } set_has_dropdb_stmt(); _impl_.node_.dropdb_stmt_ = dropdb_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.dropdb_stmt) } void Node::set_allocated_alter_system_stmt(::pg_query::AlterSystemStmt* alter_system_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_system_stmt) { ::google::protobuf::Arena* submessage_arena = alter_system_stmt->GetArena(); if (message_arena != submessage_arena) { alter_system_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_system_stmt, submessage_arena); } set_has_alter_system_stmt(); _impl_.node_.alter_system_stmt_ = alter_system_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_system_stmt) } void Node::set_allocated_cluster_stmt(::pg_query::ClusterStmt* cluster_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (cluster_stmt) { ::google::protobuf::Arena* submessage_arena = cluster_stmt->GetArena(); if (message_arena != submessage_arena) { cluster_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, cluster_stmt, submessage_arena); } set_has_cluster_stmt(); _impl_.node_.cluster_stmt_ = cluster_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.cluster_stmt) } void Node::set_allocated_vacuum_stmt(::pg_query::VacuumStmt* vacuum_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (vacuum_stmt) { ::google::protobuf::Arena* submessage_arena = vacuum_stmt->GetArena(); if (message_arena != submessage_arena) { vacuum_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, vacuum_stmt, submessage_arena); } set_has_vacuum_stmt(); _impl_.node_.vacuum_stmt_ = vacuum_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.vacuum_stmt) } void Node::set_allocated_vacuum_relation(::pg_query::VacuumRelation* vacuum_relation) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (vacuum_relation) { ::google::protobuf::Arena* submessage_arena = vacuum_relation->GetArena(); if (message_arena != submessage_arena) { vacuum_relation = ::google::protobuf::internal::GetOwnedMessage(message_arena, vacuum_relation, submessage_arena); } set_has_vacuum_relation(); _impl_.node_.vacuum_relation_ = vacuum_relation; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.vacuum_relation) } void Node::set_allocated_explain_stmt(::pg_query::ExplainStmt* explain_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (explain_stmt) { ::google::protobuf::Arena* submessage_arena = explain_stmt->GetArena(); if (message_arena != submessage_arena) { explain_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, explain_stmt, submessage_arena); } set_has_explain_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_table_as_stmt) { ::google::protobuf::Arena* submessage_arena = create_table_as_stmt->GetArena(); if (message_arena != submessage_arena) { create_table_as_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_table_as_stmt, submessage_arena); } set_has_create_table_as_stmt(); _impl_.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_refresh_mat_view_stmt(::pg_query::RefreshMatViewStmt* refresh_mat_view_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (refresh_mat_view_stmt) { ::google::protobuf::Arena* submessage_arena = refresh_mat_view_stmt->GetArena(); if (message_arena != submessage_arena) { refresh_mat_view_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, refresh_mat_view_stmt, submessage_arena); } set_has_refresh_mat_view_stmt(); _impl_.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_check_point_stmt(::pg_query::CheckPointStmt* check_point_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (check_point_stmt) { ::google::protobuf::Arena* submessage_arena = check_point_stmt->GetArena(); if (message_arena != submessage_arena) { check_point_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, check_point_stmt, submessage_arena); } set_has_check_point_stmt(); _impl_.node_.check_point_stmt_ = check_point_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.check_point_stmt) } void Node::set_allocated_discard_stmt(::pg_query::DiscardStmt* discard_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (discard_stmt) { ::google::protobuf::Arena* submessage_arena = discard_stmt->GetArena(); if (message_arena != submessage_arena) { discard_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, discard_stmt, submessage_arena); } set_has_discard_stmt(); _impl_.node_.discard_stmt_ = discard_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.discard_stmt) } void Node::set_allocated_lock_stmt(::pg_query::LockStmt* lock_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (lock_stmt) { ::google::protobuf::Arena* submessage_arena = lock_stmt->GetArena(); if (message_arena != submessage_arena) { lock_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, lock_stmt, submessage_arena); } set_has_lock_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (constraints_set_stmt) { ::google::protobuf::Arena* submessage_arena = constraints_set_stmt->GetArena(); if (message_arena != submessage_arena) { constraints_set_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, constraints_set_stmt, submessage_arena); } set_has_constraints_set_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (reindex_stmt) { ::google::protobuf::Arena* submessage_arena = reindex_stmt->GetArena(); if (message_arena != submessage_arena) { reindex_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, reindex_stmt, submessage_arena); } set_has_reindex_stmt(); _impl_.node_.reindex_stmt_ = reindex_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.reindex_stmt) } void Node::set_allocated_create_conversion_stmt(::pg_query::CreateConversionStmt* create_conversion_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_conversion_stmt) { ::google::protobuf::Arena* submessage_arena = create_conversion_stmt->GetArena(); if (message_arena != submessage_arena) { create_conversion_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_conversion_stmt, submessage_arena); } set_has_create_conversion_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_cast_stmt) { ::google::protobuf::Arena* submessage_arena = create_cast_stmt->GetArena(); if (message_arena != submessage_arena) { create_cast_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_cast_stmt, submessage_arena); } set_has_create_cast_stmt(); _impl_.node_.create_cast_stmt_ = create_cast_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_cast_stmt) } void Node::set_allocated_create_transform_stmt(::pg_query::CreateTransformStmt* create_transform_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_transform_stmt) { ::google::protobuf::Arena* submessage_arena = create_transform_stmt->GetArena(); if (message_arena != submessage_arena) { create_transform_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_transform_stmt, submessage_arena); } set_has_create_transform_stmt(); _impl_.node_.create_transform_stmt_ = create_transform_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_transform_stmt) } void Node::set_allocated_prepare_stmt(::pg_query::PrepareStmt* prepare_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (prepare_stmt) { ::google::protobuf::Arena* submessage_arena = prepare_stmt->GetArena(); if (message_arena != submessage_arena) { prepare_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, prepare_stmt, submessage_arena); } set_has_prepare_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (execute_stmt) { ::google::protobuf::Arena* submessage_arena = execute_stmt->GetArena(); if (message_arena != submessage_arena) { execute_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, execute_stmt, submessage_arena); } set_has_execute_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (deallocate_stmt) { ::google::protobuf::Arena* submessage_arena = deallocate_stmt->GetArena(); if (message_arena != submessage_arena) { deallocate_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, deallocate_stmt, submessage_arena); } set_has_deallocate_stmt(); _impl_.node_.deallocate_stmt_ = deallocate_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.deallocate_stmt) } void Node::set_allocated_drop_owned_stmt(::pg_query::DropOwnedStmt* drop_owned_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (drop_owned_stmt) { ::google::protobuf::Arena* submessage_arena = drop_owned_stmt->GetArena(); if (message_arena != submessage_arena) { drop_owned_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, drop_owned_stmt, submessage_arena); } set_has_drop_owned_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (reassign_owned_stmt) { ::google::protobuf::Arena* submessage_arena = reassign_owned_stmt->GetArena(); if (message_arena != submessage_arena) { reassign_owned_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, reassign_owned_stmt, submessage_arena); } set_has_reassign_owned_stmt(); _impl_.node_.reassign_owned_stmt_ = reassign_owned_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.reassign_owned_stmt) } void Node::set_allocated_alter_tsdictionary_stmt(::pg_query::AlterTSDictionaryStmt* alter_tsdictionary_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_tsdictionary_stmt) { ::google::protobuf::Arena* submessage_arena = alter_tsdictionary_stmt->GetArena(); if (message_arena != submessage_arena) { alter_tsdictionary_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_tsdictionary_stmt, submessage_arena); } set_has_alter_tsdictionary_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_tsconfiguration_stmt) { ::google::protobuf::Arena* submessage_arena = alter_tsconfiguration_stmt->GetArena(); if (message_arena != submessage_arena) { alter_tsconfiguration_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_tsconfiguration_stmt, submessage_arena); } set_has_alter_tsconfiguration_stmt(); _impl_.node_.alter_tsconfiguration_stmt_ = alter_tsconfiguration_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_tsconfiguration_stmt) } void Node::set_allocated_publication_table(::pg_query::PublicationTable* publication_table) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (publication_table) { ::google::protobuf::Arena* submessage_arena = publication_table->GetArena(); if (message_arena != submessage_arena) { publication_table = ::google::protobuf::internal::GetOwnedMessage(message_arena, publication_table, submessage_arena); } set_has_publication_table(); _impl_.node_.publication_table_ = publication_table; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.publication_table) } void Node::set_allocated_publication_obj_spec(::pg_query::PublicationObjSpec* publication_obj_spec) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (publication_obj_spec) { ::google::protobuf::Arena* submessage_arena = publication_obj_spec->GetArena(); if (message_arena != submessage_arena) { publication_obj_spec = ::google::protobuf::internal::GetOwnedMessage(message_arena, publication_obj_spec, submessage_arena); } set_has_publication_obj_spec(); _impl_.node_.publication_obj_spec_ = publication_obj_spec; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.publication_obj_spec) } void Node::set_allocated_create_publication_stmt(::pg_query::CreatePublicationStmt* create_publication_stmt) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_publication_stmt) { ::google::protobuf::Arena* submessage_arena = create_publication_stmt->GetArena(); if (message_arena != submessage_arena) { create_publication_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_publication_stmt, submessage_arena); } set_has_create_publication_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_publication_stmt) { ::google::protobuf::Arena* submessage_arena = alter_publication_stmt->GetArena(); if (message_arena != submessage_arena) { alter_publication_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_publication_stmt, submessage_arena); } set_has_alter_publication_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (create_subscription_stmt) { ::google::protobuf::Arena* submessage_arena = create_subscription_stmt->GetArena(); if (message_arena != submessage_arena) { create_subscription_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, create_subscription_stmt, submessage_arena); } set_has_create_subscription_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (alter_subscription_stmt) { ::google::protobuf::Arena* submessage_arena = alter_subscription_stmt->GetArena(); if (message_arena != submessage_arena) { alter_subscription_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, alter_subscription_stmt, submessage_arena); } set_has_alter_subscription_stmt(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (drop_subscription_stmt) { ::google::protobuf::Arena* submessage_arena = drop_subscription_stmt->GetArena(); if (message_arena != submessage_arena) { drop_subscription_stmt = ::google::protobuf::internal::GetOwnedMessage(message_arena, drop_subscription_stmt, submessage_arena); } set_has_drop_subscription_stmt(); _impl_.node_.drop_subscription_stmt_ = drop_subscription_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.drop_subscription_stmt) } void Node::set_allocated_integer(::pg_query::Integer* integer) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (integer) { ::google::protobuf::Arena* submessage_arena = integer->GetArena(); if (message_arena != submessage_arena) { integer = ::google::protobuf::internal::GetOwnedMessage(message_arena, integer, submessage_arena); } set_has_integer(); _impl_.node_.integer_ = integer; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.integer) } void Node::set_allocated_float_(::pg_query::Float* float_) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (float_) { ::google::protobuf::Arena* submessage_arena = float_->GetArena(); if (message_arena != submessage_arena) { float_ = ::google::protobuf::internal::GetOwnedMessage(message_arena, float_, submessage_arena); } set_has_float_(); _impl_.node_.float__ = float_; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.float) } void Node::set_allocated_boolean(::pg_query::Boolean* boolean) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (boolean) { ::google::protobuf::Arena* submessage_arena = boolean->GetArena(); if (message_arena != submessage_arena) { boolean = ::google::protobuf::internal::GetOwnedMessage(message_arena, boolean, submessage_arena); } set_has_boolean(); _impl_.node_.boolean_ = boolean; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.boolean) } void Node::set_allocated_string(::pg_query::String* string) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (string) { ::google::protobuf::Arena* submessage_arena = string->GetArena(); if (message_arena != submessage_arena) { string = ::google::protobuf::internal::GetOwnedMessage(message_arena, string, submessage_arena); } set_has_string(); _impl_.node_.string_ = string; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.string) } void Node::set_allocated_bit_string(::pg_query::BitString* bit_string) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (bit_string) { ::google::protobuf::Arena* submessage_arena = bit_string->GetArena(); if (message_arena != submessage_arena) { bit_string = ::google::protobuf::internal::GetOwnedMessage(message_arena, bit_string, submessage_arena); } set_has_bit_string(); _impl_.node_.bit_string_ = bit_string; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.bit_string) } void Node::set_allocated_list(::pg_query::List* list) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (list) { ::google::protobuf::Arena* submessage_arena = list->GetArena(); if (message_arena != submessage_arena) { list = ::google::protobuf::internal::GetOwnedMessage(message_arena, list, submessage_arena); } set_has_list(); _impl_.node_.list_ = list; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.list) } void Node::set_allocated_int_list(::pg_query::IntList* int_list) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (int_list) { ::google::protobuf::Arena* submessage_arena = int_list->GetArena(); if (message_arena != submessage_arena) { int_list = ::google::protobuf::internal::GetOwnedMessage(message_arena, int_list, submessage_arena); } set_has_int_list(); _impl_.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) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (oid_list) { ::google::protobuf::Arena* submessage_arena = oid_list->GetArena(); if (message_arena != submessage_arena) { oid_list = ::google::protobuf::internal::GetOwnedMessage(message_arena, oid_list, submessage_arena); } set_has_oid_list(); _impl_.node_.oid_list_ = oid_list; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.oid_list) } void Node::set_allocated_a_const(::pg_query::A_Const* a_const) { ::google::protobuf::Arena* message_arena = GetArena(); clear_node(); if (a_const) { ::google::protobuf::Arena* submessage_arena = a_const->GetArena(); if (message_arena != submessage_arena) { a_const = ::google::protobuf::internal::GetOwnedMessage(message_arena, a_const, submessage_arena); } set_has_a_const(); _impl_.node_.a_const_ = a_const; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.a_const) } Node::Node(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Node) } inline PROTOBUF_NDEBUG_INLINE Node::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : node_{}, _cached_size_{0}, _oneof_case_{from._oneof_case_[0]} {} Node::Node( ::google::protobuf::Arena* arena, const Node& from) : ::google::protobuf::Message(arena) { Node* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); switch (node_case()) { case NODE_NOT_SET: break; case kAlias: _impl_.node_.alias_ = CreateMaybeMessage<::pg_query::Alias>(arena, *from._impl_.node_.alias_); break; case kRangeVar: _impl_.node_.range_var_ = CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.node_.range_var_); break; case kTableFunc: _impl_.node_.table_func_ = CreateMaybeMessage<::pg_query::TableFunc>(arena, *from._impl_.node_.table_func_); break; case kIntoClause: _impl_.node_.into_clause_ = CreateMaybeMessage<::pg_query::IntoClause>(arena, *from._impl_.node_.into_clause_); break; case kVar: _impl_.node_.var_ = CreateMaybeMessage<::pg_query::Var>(arena, *from._impl_.node_.var_); break; case kParam: _impl_.node_.param_ = CreateMaybeMessage<::pg_query::Param>(arena, *from._impl_.node_.param_); break; case kAggref: _impl_.node_.aggref_ = CreateMaybeMessage<::pg_query::Aggref>(arena, *from._impl_.node_.aggref_); break; case kGroupingFunc: _impl_.node_.grouping_func_ = CreateMaybeMessage<::pg_query::GroupingFunc>(arena, *from._impl_.node_.grouping_func_); break; case kWindowFunc: _impl_.node_.window_func_ = CreateMaybeMessage<::pg_query::WindowFunc>(arena, *from._impl_.node_.window_func_); break; case kWindowFuncRunCondition: _impl_.node_.window_func_run_condition_ = CreateMaybeMessage<::pg_query::WindowFuncRunCondition>(arena, *from._impl_.node_.window_func_run_condition_); break; case kMergeSupportFunc: _impl_.node_.merge_support_func_ = CreateMaybeMessage<::pg_query::MergeSupportFunc>(arena, *from._impl_.node_.merge_support_func_); break; case kSubscriptingRef: _impl_.node_.subscripting_ref_ = CreateMaybeMessage<::pg_query::SubscriptingRef>(arena, *from._impl_.node_.subscripting_ref_); break; case kFuncExpr: _impl_.node_.func_expr_ = CreateMaybeMessage<::pg_query::FuncExpr>(arena, *from._impl_.node_.func_expr_); break; case kNamedArgExpr: _impl_.node_.named_arg_expr_ = CreateMaybeMessage<::pg_query::NamedArgExpr>(arena, *from._impl_.node_.named_arg_expr_); break; case kOpExpr: _impl_.node_.op_expr_ = CreateMaybeMessage<::pg_query::OpExpr>(arena, *from._impl_.node_.op_expr_); break; case kDistinctExpr: _impl_.node_.distinct_expr_ = CreateMaybeMessage<::pg_query::DistinctExpr>(arena, *from._impl_.node_.distinct_expr_); break; case kNullIfExpr: _impl_.node_.null_if_expr_ = CreateMaybeMessage<::pg_query::NullIfExpr>(arena, *from._impl_.node_.null_if_expr_); break; case kScalarArrayOpExpr: _impl_.node_.scalar_array_op_expr_ = CreateMaybeMessage<::pg_query::ScalarArrayOpExpr>(arena, *from._impl_.node_.scalar_array_op_expr_); break; case kBoolExpr: _impl_.node_.bool_expr_ = CreateMaybeMessage<::pg_query::BoolExpr>(arena, *from._impl_.node_.bool_expr_); break; case kSubLink: _impl_.node_.sub_link_ = CreateMaybeMessage<::pg_query::SubLink>(arena, *from._impl_.node_.sub_link_); break; case kSubPlan: _impl_.node_.sub_plan_ = CreateMaybeMessage<::pg_query::SubPlan>(arena, *from._impl_.node_.sub_plan_); break; case kAlternativeSubPlan: _impl_.node_.alternative_sub_plan_ = CreateMaybeMessage<::pg_query::AlternativeSubPlan>(arena, *from._impl_.node_.alternative_sub_plan_); break; case kFieldSelect: _impl_.node_.field_select_ = CreateMaybeMessage<::pg_query::FieldSelect>(arena, *from._impl_.node_.field_select_); break; case kFieldStore: _impl_.node_.field_store_ = CreateMaybeMessage<::pg_query::FieldStore>(arena, *from._impl_.node_.field_store_); break; case kRelabelType: _impl_.node_.relabel_type_ = CreateMaybeMessage<::pg_query::RelabelType>(arena, *from._impl_.node_.relabel_type_); break; case kCoerceViaIo: _impl_.node_.coerce_via_io_ = CreateMaybeMessage<::pg_query::CoerceViaIO>(arena, *from._impl_.node_.coerce_via_io_); break; case kArrayCoerceExpr: _impl_.node_.array_coerce_expr_ = CreateMaybeMessage<::pg_query::ArrayCoerceExpr>(arena, *from._impl_.node_.array_coerce_expr_); break; case kConvertRowtypeExpr: _impl_.node_.convert_rowtype_expr_ = CreateMaybeMessage<::pg_query::ConvertRowtypeExpr>(arena, *from._impl_.node_.convert_rowtype_expr_); break; case kCollateExpr: _impl_.node_.collate_expr_ = CreateMaybeMessage<::pg_query::CollateExpr>(arena, *from._impl_.node_.collate_expr_); break; case kCaseExpr: _impl_.node_.case_expr_ = CreateMaybeMessage<::pg_query::CaseExpr>(arena, *from._impl_.node_.case_expr_); break; case kCaseWhen: _impl_.node_.case_when_ = CreateMaybeMessage<::pg_query::CaseWhen>(arena, *from._impl_.node_.case_when_); break; case kCaseTestExpr: _impl_.node_.case_test_expr_ = CreateMaybeMessage<::pg_query::CaseTestExpr>(arena, *from._impl_.node_.case_test_expr_); break; case kArrayExpr: _impl_.node_.array_expr_ = CreateMaybeMessage<::pg_query::ArrayExpr>(arena, *from._impl_.node_.array_expr_); break; case kRowExpr: _impl_.node_.row_expr_ = CreateMaybeMessage<::pg_query::RowExpr>(arena, *from._impl_.node_.row_expr_); break; case kRowCompareExpr: _impl_.node_.row_compare_expr_ = CreateMaybeMessage<::pg_query::RowCompareExpr>(arena, *from._impl_.node_.row_compare_expr_); break; case kCoalesceExpr: _impl_.node_.coalesce_expr_ = CreateMaybeMessage<::pg_query::CoalesceExpr>(arena, *from._impl_.node_.coalesce_expr_); break; case kMinMaxExpr: _impl_.node_.min_max_expr_ = CreateMaybeMessage<::pg_query::MinMaxExpr>(arena, *from._impl_.node_.min_max_expr_); break; case kSqlvalueFunction: _impl_.node_.sqlvalue_function_ = CreateMaybeMessage<::pg_query::SQLValueFunction>(arena, *from._impl_.node_.sqlvalue_function_); break; case kXmlExpr: _impl_.node_.xml_expr_ = CreateMaybeMessage<::pg_query::XmlExpr>(arena, *from._impl_.node_.xml_expr_); break; case kJsonFormat: _impl_.node_.json_format_ = CreateMaybeMessage<::pg_query::JsonFormat>(arena, *from._impl_.node_.json_format_); break; case kJsonReturning: _impl_.node_.json_returning_ = CreateMaybeMessage<::pg_query::JsonReturning>(arena, *from._impl_.node_.json_returning_); break; case kJsonValueExpr: _impl_.node_.json_value_expr_ = CreateMaybeMessage<::pg_query::JsonValueExpr>(arena, *from._impl_.node_.json_value_expr_); break; case kJsonConstructorExpr: _impl_.node_.json_constructor_expr_ = CreateMaybeMessage<::pg_query::JsonConstructorExpr>(arena, *from._impl_.node_.json_constructor_expr_); break; case kJsonIsPredicate: _impl_.node_.json_is_predicate_ = CreateMaybeMessage<::pg_query::JsonIsPredicate>(arena, *from._impl_.node_.json_is_predicate_); break; case kJsonBehavior: _impl_.node_.json_behavior_ = CreateMaybeMessage<::pg_query::JsonBehavior>(arena, *from._impl_.node_.json_behavior_); break; case kJsonExpr: _impl_.node_.json_expr_ = CreateMaybeMessage<::pg_query::JsonExpr>(arena, *from._impl_.node_.json_expr_); break; case kJsonTablePath: _impl_.node_.json_table_path_ = CreateMaybeMessage<::pg_query::JsonTablePath>(arena, *from._impl_.node_.json_table_path_); break; case kJsonTablePathScan: _impl_.node_.json_table_path_scan_ = CreateMaybeMessage<::pg_query::JsonTablePathScan>(arena, *from._impl_.node_.json_table_path_scan_); break; case kJsonTableSiblingJoin: _impl_.node_.json_table_sibling_join_ = CreateMaybeMessage<::pg_query::JsonTableSiblingJoin>(arena, *from._impl_.node_.json_table_sibling_join_); break; case kNullTest: _impl_.node_.null_test_ = CreateMaybeMessage<::pg_query::NullTest>(arena, *from._impl_.node_.null_test_); break; case kBooleanTest: _impl_.node_.boolean_test_ = CreateMaybeMessage<::pg_query::BooleanTest>(arena, *from._impl_.node_.boolean_test_); break; case kMergeAction: _impl_.node_.merge_action_ = CreateMaybeMessage<::pg_query::MergeAction>(arena, *from._impl_.node_.merge_action_); break; case kCoerceToDomain: _impl_.node_.coerce_to_domain_ = CreateMaybeMessage<::pg_query::CoerceToDomain>(arena, *from._impl_.node_.coerce_to_domain_); break; case kCoerceToDomainValue: _impl_.node_.coerce_to_domain_value_ = CreateMaybeMessage<::pg_query::CoerceToDomainValue>(arena, *from._impl_.node_.coerce_to_domain_value_); break; case kSetToDefault: _impl_.node_.set_to_default_ = CreateMaybeMessage<::pg_query::SetToDefault>(arena, *from._impl_.node_.set_to_default_); break; case kCurrentOfExpr: _impl_.node_.current_of_expr_ = CreateMaybeMessage<::pg_query::CurrentOfExpr>(arena, *from._impl_.node_.current_of_expr_); break; case kNextValueExpr: _impl_.node_.next_value_expr_ = CreateMaybeMessage<::pg_query::NextValueExpr>(arena, *from._impl_.node_.next_value_expr_); break; case kInferenceElem: _impl_.node_.inference_elem_ = CreateMaybeMessage<::pg_query::InferenceElem>(arena, *from._impl_.node_.inference_elem_); break; case kTargetEntry: _impl_.node_.target_entry_ = CreateMaybeMessage<::pg_query::TargetEntry>(arena, *from._impl_.node_.target_entry_); break; case kRangeTblRef: _impl_.node_.range_tbl_ref_ = CreateMaybeMessage<::pg_query::RangeTblRef>(arena, *from._impl_.node_.range_tbl_ref_); break; case kJoinExpr: _impl_.node_.join_expr_ = CreateMaybeMessage<::pg_query::JoinExpr>(arena, *from._impl_.node_.join_expr_); break; case kFromExpr: _impl_.node_.from_expr_ = CreateMaybeMessage<::pg_query::FromExpr>(arena, *from._impl_.node_.from_expr_); break; case kOnConflictExpr: _impl_.node_.on_conflict_expr_ = CreateMaybeMessage<::pg_query::OnConflictExpr>(arena, *from._impl_.node_.on_conflict_expr_); break; case kQuery: _impl_.node_.query_ = CreateMaybeMessage<::pg_query::Query>(arena, *from._impl_.node_.query_); break; case kTypeName: _impl_.node_.type_name_ = CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.node_.type_name_); break; case kColumnRef: _impl_.node_.column_ref_ = CreateMaybeMessage<::pg_query::ColumnRef>(arena, *from._impl_.node_.column_ref_); break; case kParamRef: _impl_.node_.param_ref_ = CreateMaybeMessage<::pg_query::ParamRef>(arena, *from._impl_.node_.param_ref_); break; case kAExpr: _impl_.node_.a_expr_ = CreateMaybeMessage<::pg_query::A_Expr>(arena, *from._impl_.node_.a_expr_); break; case kTypeCast: _impl_.node_.type_cast_ = CreateMaybeMessage<::pg_query::TypeCast>(arena, *from._impl_.node_.type_cast_); break; case kCollateClause: _impl_.node_.collate_clause_ = CreateMaybeMessage<::pg_query::CollateClause>(arena, *from._impl_.node_.collate_clause_); break; case kRoleSpec: _impl_.node_.role_spec_ = CreateMaybeMessage<::pg_query::RoleSpec>(arena, *from._impl_.node_.role_spec_); break; case kFuncCall: _impl_.node_.func_call_ = CreateMaybeMessage<::pg_query::FuncCall>(arena, *from._impl_.node_.func_call_); break; case kAStar: _impl_.node_.a_star_ = CreateMaybeMessage<::pg_query::A_Star>(arena, *from._impl_.node_.a_star_); break; case kAIndices: _impl_.node_.a_indices_ = CreateMaybeMessage<::pg_query::A_Indices>(arena, *from._impl_.node_.a_indices_); break; case kAIndirection: _impl_.node_.a_indirection_ = CreateMaybeMessage<::pg_query::A_Indirection>(arena, *from._impl_.node_.a_indirection_); break; case kAArrayExpr: _impl_.node_.a_array_expr_ = CreateMaybeMessage<::pg_query::A_ArrayExpr>(arena, *from._impl_.node_.a_array_expr_); break; case kResTarget: _impl_.node_.res_target_ = CreateMaybeMessage<::pg_query::ResTarget>(arena, *from._impl_.node_.res_target_); break; case kMultiAssignRef: _impl_.node_.multi_assign_ref_ = CreateMaybeMessage<::pg_query::MultiAssignRef>(arena, *from._impl_.node_.multi_assign_ref_); break; case kSortBy: _impl_.node_.sort_by_ = CreateMaybeMessage<::pg_query::SortBy>(arena, *from._impl_.node_.sort_by_); break; case kWindowDef: _impl_.node_.window_def_ = CreateMaybeMessage<::pg_query::WindowDef>(arena, *from._impl_.node_.window_def_); break; case kRangeSubselect: _impl_.node_.range_subselect_ = CreateMaybeMessage<::pg_query::RangeSubselect>(arena, *from._impl_.node_.range_subselect_); break; case kRangeFunction: _impl_.node_.range_function_ = CreateMaybeMessage<::pg_query::RangeFunction>(arena, *from._impl_.node_.range_function_); break; case kRangeTableFunc: _impl_.node_.range_table_func_ = CreateMaybeMessage<::pg_query::RangeTableFunc>(arena, *from._impl_.node_.range_table_func_); break; case kRangeTableFuncCol: _impl_.node_.range_table_func_col_ = CreateMaybeMessage<::pg_query::RangeTableFuncCol>(arena, *from._impl_.node_.range_table_func_col_); break; case kRangeTableSample: _impl_.node_.range_table_sample_ = CreateMaybeMessage<::pg_query::RangeTableSample>(arena, *from._impl_.node_.range_table_sample_); break; case kColumnDef: _impl_.node_.column_def_ = CreateMaybeMessage<::pg_query::ColumnDef>(arena, *from._impl_.node_.column_def_); break; case kTableLikeClause: _impl_.node_.table_like_clause_ = CreateMaybeMessage<::pg_query::TableLikeClause>(arena, *from._impl_.node_.table_like_clause_); break; case kIndexElem: _impl_.node_.index_elem_ = CreateMaybeMessage<::pg_query::IndexElem>(arena, *from._impl_.node_.index_elem_); break; case kDefElem: _impl_.node_.def_elem_ = CreateMaybeMessage<::pg_query::DefElem>(arena, *from._impl_.node_.def_elem_); break; case kLockingClause: _impl_.node_.locking_clause_ = CreateMaybeMessage<::pg_query::LockingClause>(arena, *from._impl_.node_.locking_clause_); break; case kXmlSerialize: _impl_.node_.xml_serialize_ = CreateMaybeMessage<::pg_query::XmlSerialize>(arena, *from._impl_.node_.xml_serialize_); break; case kPartitionElem: _impl_.node_.partition_elem_ = CreateMaybeMessage<::pg_query::PartitionElem>(arena, *from._impl_.node_.partition_elem_); break; case kPartitionSpec: _impl_.node_.partition_spec_ = CreateMaybeMessage<::pg_query::PartitionSpec>(arena, *from._impl_.node_.partition_spec_); break; case kPartitionBoundSpec: _impl_.node_.partition_bound_spec_ = CreateMaybeMessage<::pg_query::PartitionBoundSpec>(arena, *from._impl_.node_.partition_bound_spec_); break; case kPartitionRangeDatum: _impl_.node_.partition_range_datum_ = CreateMaybeMessage<::pg_query::PartitionRangeDatum>(arena, *from._impl_.node_.partition_range_datum_); break; case kSinglePartitionSpec: _impl_.node_.single_partition_spec_ = CreateMaybeMessage<::pg_query::SinglePartitionSpec>(arena, *from._impl_.node_.single_partition_spec_); break; case kPartitionCmd: _impl_.node_.partition_cmd_ = CreateMaybeMessage<::pg_query::PartitionCmd>(arena, *from._impl_.node_.partition_cmd_); break; case kRangeTblEntry: _impl_.node_.range_tbl_entry_ = CreateMaybeMessage<::pg_query::RangeTblEntry>(arena, *from._impl_.node_.range_tbl_entry_); break; case kRtepermissionInfo: _impl_.node_.rtepermission_info_ = CreateMaybeMessage<::pg_query::RTEPermissionInfo>(arena, *from._impl_.node_.rtepermission_info_); break; case kRangeTblFunction: _impl_.node_.range_tbl_function_ = CreateMaybeMessage<::pg_query::RangeTblFunction>(arena, *from._impl_.node_.range_tbl_function_); break; case kTableSampleClause: _impl_.node_.table_sample_clause_ = CreateMaybeMessage<::pg_query::TableSampleClause>(arena, *from._impl_.node_.table_sample_clause_); break; case kWithCheckOption: _impl_.node_.with_check_option_ = CreateMaybeMessage<::pg_query::WithCheckOption>(arena, *from._impl_.node_.with_check_option_); break; case kSortGroupClause: _impl_.node_.sort_group_clause_ = CreateMaybeMessage<::pg_query::SortGroupClause>(arena, *from._impl_.node_.sort_group_clause_); break; case kGroupingSet: _impl_.node_.grouping_set_ = CreateMaybeMessage<::pg_query::GroupingSet>(arena, *from._impl_.node_.grouping_set_); break; case kWindowClause: _impl_.node_.window_clause_ = CreateMaybeMessage<::pg_query::WindowClause>(arena, *from._impl_.node_.window_clause_); break; case kRowMarkClause: _impl_.node_.row_mark_clause_ = CreateMaybeMessage<::pg_query::RowMarkClause>(arena, *from._impl_.node_.row_mark_clause_); break; case kWithClause: _impl_.node_.with_clause_ = CreateMaybeMessage<::pg_query::WithClause>(arena, *from._impl_.node_.with_clause_); break; case kInferClause: _impl_.node_.infer_clause_ = CreateMaybeMessage<::pg_query::InferClause>(arena, *from._impl_.node_.infer_clause_); break; case kOnConflictClause: _impl_.node_.on_conflict_clause_ = CreateMaybeMessage<::pg_query::OnConflictClause>(arena, *from._impl_.node_.on_conflict_clause_); break; case kCtesearchClause: _impl_.node_.ctesearch_clause_ = CreateMaybeMessage<::pg_query::CTESearchClause>(arena, *from._impl_.node_.ctesearch_clause_); break; case kCtecycleClause: _impl_.node_.ctecycle_clause_ = CreateMaybeMessage<::pg_query::CTECycleClause>(arena, *from._impl_.node_.ctecycle_clause_); break; case kCommonTableExpr: _impl_.node_.common_table_expr_ = CreateMaybeMessage<::pg_query::CommonTableExpr>(arena, *from._impl_.node_.common_table_expr_); break; case kMergeWhenClause: _impl_.node_.merge_when_clause_ = CreateMaybeMessage<::pg_query::MergeWhenClause>(arena, *from._impl_.node_.merge_when_clause_); break; case kTriggerTransition: _impl_.node_.trigger_transition_ = CreateMaybeMessage<::pg_query::TriggerTransition>(arena, *from._impl_.node_.trigger_transition_); break; case kJsonOutput: _impl_.node_.json_output_ = CreateMaybeMessage<::pg_query::JsonOutput>(arena, *from._impl_.node_.json_output_); break; case kJsonArgument: _impl_.node_.json_argument_ = CreateMaybeMessage<::pg_query::JsonArgument>(arena, *from._impl_.node_.json_argument_); break; case kJsonFuncExpr: _impl_.node_.json_func_expr_ = CreateMaybeMessage<::pg_query::JsonFuncExpr>(arena, *from._impl_.node_.json_func_expr_); break; case kJsonTablePathSpec: _impl_.node_.json_table_path_spec_ = CreateMaybeMessage<::pg_query::JsonTablePathSpec>(arena, *from._impl_.node_.json_table_path_spec_); break; case kJsonTable: _impl_.node_.json_table_ = CreateMaybeMessage<::pg_query::JsonTable>(arena, *from._impl_.node_.json_table_); break; case kJsonTableColumn: _impl_.node_.json_table_column_ = CreateMaybeMessage<::pg_query::JsonTableColumn>(arena, *from._impl_.node_.json_table_column_); break; case kJsonKeyValue: _impl_.node_.json_key_value_ = CreateMaybeMessage<::pg_query::JsonKeyValue>(arena, *from._impl_.node_.json_key_value_); break; case kJsonParseExpr: _impl_.node_.json_parse_expr_ = CreateMaybeMessage<::pg_query::JsonParseExpr>(arena, *from._impl_.node_.json_parse_expr_); break; case kJsonScalarExpr: _impl_.node_.json_scalar_expr_ = CreateMaybeMessage<::pg_query::JsonScalarExpr>(arena, *from._impl_.node_.json_scalar_expr_); break; case kJsonSerializeExpr: _impl_.node_.json_serialize_expr_ = CreateMaybeMessage<::pg_query::JsonSerializeExpr>(arena, *from._impl_.node_.json_serialize_expr_); break; case kJsonObjectConstructor: _impl_.node_.json_object_constructor_ = CreateMaybeMessage<::pg_query::JsonObjectConstructor>(arena, *from._impl_.node_.json_object_constructor_); break; case kJsonArrayConstructor: _impl_.node_.json_array_constructor_ = CreateMaybeMessage<::pg_query::JsonArrayConstructor>(arena, *from._impl_.node_.json_array_constructor_); break; case kJsonArrayQueryConstructor: _impl_.node_.json_array_query_constructor_ = CreateMaybeMessage<::pg_query::JsonArrayQueryConstructor>(arena, *from._impl_.node_.json_array_query_constructor_); break; case kJsonAggConstructor: _impl_.node_.json_agg_constructor_ = CreateMaybeMessage<::pg_query::JsonAggConstructor>(arena, *from._impl_.node_.json_agg_constructor_); break; case kJsonObjectAgg: _impl_.node_.json_object_agg_ = CreateMaybeMessage<::pg_query::JsonObjectAgg>(arena, *from._impl_.node_.json_object_agg_); break; case kJsonArrayAgg: _impl_.node_.json_array_agg_ = CreateMaybeMessage<::pg_query::JsonArrayAgg>(arena, *from._impl_.node_.json_array_agg_); break; case kRawStmt: _impl_.node_.raw_stmt_ = CreateMaybeMessage<::pg_query::RawStmt>(arena, *from._impl_.node_.raw_stmt_); break; case kInsertStmt: _impl_.node_.insert_stmt_ = CreateMaybeMessage<::pg_query::InsertStmt>(arena, *from._impl_.node_.insert_stmt_); break; case kDeleteStmt: _impl_.node_.delete_stmt_ = CreateMaybeMessage<::pg_query::DeleteStmt>(arena, *from._impl_.node_.delete_stmt_); break; case kUpdateStmt: _impl_.node_.update_stmt_ = CreateMaybeMessage<::pg_query::UpdateStmt>(arena, *from._impl_.node_.update_stmt_); break; case kMergeStmt: _impl_.node_.merge_stmt_ = CreateMaybeMessage<::pg_query::MergeStmt>(arena, *from._impl_.node_.merge_stmt_); break; case kSelectStmt: _impl_.node_.select_stmt_ = CreateMaybeMessage<::pg_query::SelectStmt>(arena, *from._impl_.node_.select_stmt_); break; case kSetOperationStmt: _impl_.node_.set_operation_stmt_ = CreateMaybeMessage<::pg_query::SetOperationStmt>(arena, *from._impl_.node_.set_operation_stmt_); break; case kReturnStmt: _impl_.node_.return_stmt_ = CreateMaybeMessage<::pg_query::ReturnStmt>(arena, *from._impl_.node_.return_stmt_); break; case kPlassignStmt: _impl_.node_.plassign_stmt_ = CreateMaybeMessage<::pg_query::PLAssignStmt>(arena, *from._impl_.node_.plassign_stmt_); break; case kCreateSchemaStmt: _impl_.node_.create_schema_stmt_ = CreateMaybeMessage<::pg_query::CreateSchemaStmt>(arena, *from._impl_.node_.create_schema_stmt_); break; case kAlterTableStmt: _impl_.node_.alter_table_stmt_ = CreateMaybeMessage<::pg_query::AlterTableStmt>(arena, *from._impl_.node_.alter_table_stmt_); break; case kReplicaIdentityStmt: _impl_.node_.replica_identity_stmt_ = CreateMaybeMessage<::pg_query::ReplicaIdentityStmt>(arena, *from._impl_.node_.replica_identity_stmt_); break; case kAlterTableCmd: _impl_.node_.alter_table_cmd_ = CreateMaybeMessage<::pg_query::AlterTableCmd>(arena, *from._impl_.node_.alter_table_cmd_); break; case kAlterCollationStmt: _impl_.node_.alter_collation_stmt_ = CreateMaybeMessage<::pg_query::AlterCollationStmt>(arena, *from._impl_.node_.alter_collation_stmt_); break; case kAlterDomainStmt: _impl_.node_.alter_domain_stmt_ = CreateMaybeMessage<::pg_query::AlterDomainStmt>(arena, *from._impl_.node_.alter_domain_stmt_); break; case kGrantStmt: _impl_.node_.grant_stmt_ = CreateMaybeMessage<::pg_query::GrantStmt>(arena, *from._impl_.node_.grant_stmt_); break; case kObjectWithArgs: _impl_.node_.object_with_args_ = CreateMaybeMessage<::pg_query::ObjectWithArgs>(arena, *from._impl_.node_.object_with_args_); break; case kAccessPriv: _impl_.node_.access_priv_ = CreateMaybeMessage<::pg_query::AccessPriv>(arena, *from._impl_.node_.access_priv_); break; case kGrantRoleStmt: _impl_.node_.grant_role_stmt_ = CreateMaybeMessage<::pg_query::GrantRoleStmt>(arena, *from._impl_.node_.grant_role_stmt_); break; case kAlterDefaultPrivilegesStmt: _impl_.node_.alter_default_privileges_stmt_ = CreateMaybeMessage<::pg_query::AlterDefaultPrivilegesStmt>(arena, *from._impl_.node_.alter_default_privileges_stmt_); break; case kCopyStmt: _impl_.node_.copy_stmt_ = CreateMaybeMessage<::pg_query::CopyStmt>(arena, *from._impl_.node_.copy_stmt_); break; case kVariableSetStmt: _impl_.node_.variable_set_stmt_ = CreateMaybeMessage<::pg_query::VariableSetStmt>(arena, *from._impl_.node_.variable_set_stmt_); break; case kVariableShowStmt: _impl_.node_.variable_show_stmt_ = CreateMaybeMessage<::pg_query::VariableShowStmt>(arena, *from._impl_.node_.variable_show_stmt_); break; case kCreateStmt: _impl_.node_.create_stmt_ = CreateMaybeMessage<::pg_query::CreateStmt>(arena, *from._impl_.node_.create_stmt_); break; case kConstraint: _impl_.node_.constraint_ = CreateMaybeMessage<::pg_query::Constraint>(arena, *from._impl_.node_.constraint_); break; case kCreateTableSpaceStmt: _impl_.node_.create_table_space_stmt_ = CreateMaybeMessage<::pg_query::CreateTableSpaceStmt>(arena, *from._impl_.node_.create_table_space_stmt_); break; case kDropTableSpaceStmt: _impl_.node_.drop_table_space_stmt_ = CreateMaybeMessage<::pg_query::DropTableSpaceStmt>(arena, *from._impl_.node_.drop_table_space_stmt_); break; case kAlterTableSpaceOptionsStmt: _impl_.node_.alter_table_space_options_stmt_ = CreateMaybeMessage<::pg_query::AlterTableSpaceOptionsStmt>(arena, *from._impl_.node_.alter_table_space_options_stmt_); break; case kAlterTableMoveAllStmt: _impl_.node_.alter_table_move_all_stmt_ = CreateMaybeMessage<::pg_query::AlterTableMoveAllStmt>(arena, *from._impl_.node_.alter_table_move_all_stmt_); break; case kCreateExtensionStmt: _impl_.node_.create_extension_stmt_ = CreateMaybeMessage<::pg_query::CreateExtensionStmt>(arena, *from._impl_.node_.create_extension_stmt_); break; case kAlterExtensionStmt: _impl_.node_.alter_extension_stmt_ = CreateMaybeMessage<::pg_query::AlterExtensionStmt>(arena, *from._impl_.node_.alter_extension_stmt_); break; case kAlterExtensionContentsStmt: _impl_.node_.alter_extension_contents_stmt_ = CreateMaybeMessage<::pg_query::AlterExtensionContentsStmt>(arena, *from._impl_.node_.alter_extension_contents_stmt_); break; case kCreateFdwStmt: _impl_.node_.create_fdw_stmt_ = CreateMaybeMessage<::pg_query::CreateFdwStmt>(arena, *from._impl_.node_.create_fdw_stmt_); break; case kAlterFdwStmt: _impl_.node_.alter_fdw_stmt_ = CreateMaybeMessage<::pg_query::AlterFdwStmt>(arena, *from._impl_.node_.alter_fdw_stmt_); break; case kCreateForeignServerStmt: _impl_.node_.create_foreign_server_stmt_ = CreateMaybeMessage<::pg_query::CreateForeignServerStmt>(arena, *from._impl_.node_.create_foreign_server_stmt_); break; case kAlterForeignServerStmt: _impl_.node_.alter_foreign_server_stmt_ = CreateMaybeMessage<::pg_query::AlterForeignServerStmt>(arena, *from._impl_.node_.alter_foreign_server_stmt_); break; case kCreateForeignTableStmt: _impl_.node_.create_foreign_table_stmt_ = CreateMaybeMessage<::pg_query::CreateForeignTableStmt>(arena, *from._impl_.node_.create_foreign_table_stmt_); break; case kCreateUserMappingStmt: _impl_.node_.create_user_mapping_stmt_ = CreateMaybeMessage<::pg_query::CreateUserMappingStmt>(arena, *from._impl_.node_.create_user_mapping_stmt_); break; case kAlterUserMappingStmt: _impl_.node_.alter_user_mapping_stmt_ = CreateMaybeMessage<::pg_query::AlterUserMappingStmt>(arena, *from._impl_.node_.alter_user_mapping_stmt_); break; case kDropUserMappingStmt: _impl_.node_.drop_user_mapping_stmt_ = CreateMaybeMessage<::pg_query::DropUserMappingStmt>(arena, *from._impl_.node_.drop_user_mapping_stmt_); break; case kImportForeignSchemaStmt: _impl_.node_.import_foreign_schema_stmt_ = CreateMaybeMessage<::pg_query::ImportForeignSchemaStmt>(arena, *from._impl_.node_.import_foreign_schema_stmt_); break; case kCreatePolicyStmt: _impl_.node_.create_policy_stmt_ = CreateMaybeMessage<::pg_query::CreatePolicyStmt>(arena, *from._impl_.node_.create_policy_stmt_); break; case kAlterPolicyStmt: _impl_.node_.alter_policy_stmt_ = CreateMaybeMessage<::pg_query::AlterPolicyStmt>(arena, *from._impl_.node_.alter_policy_stmt_); break; case kCreateAmStmt: _impl_.node_.create_am_stmt_ = CreateMaybeMessage<::pg_query::CreateAmStmt>(arena, *from._impl_.node_.create_am_stmt_); break; case kCreateTrigStmt: _impl_.node_.create_trig_stmt_ = CreateMaybeMessage<::pg_query::CreateTrigStmt>(arena, *from._impl_.node_.create_trig_stmt_); break; case kCreateEventTrigStmt: _impl_.node_.create_event_trig_stmt_ = CreateMaybeMessage<::pg_query::CreateEventTrigStmt>(arena, *from._impl_.node_.create_event_trig_stmt_); break; case kAlterEventTrigStmt: _impl_.node_.alter_event_trig_stmt_ = CreateMaybeMessage<::pg_query::AlterEventTrigStmt>(arena, *from._impl_.node_.alter_event_trig_stmt_); break; case kCreatePlangStmt: _impl_.node_.create_plang_stmt_ = CreateMaybeMessage<::pg_query::CreatePLangStmt>(arena, *from._impl_.node_.create_plang_stmt_); break; case kCreateRoleStmt: _impl_.node_.create_role_stmt_ = CreateMaybeMessage<::pg_query::CreateRoleStmt>(arena, *from._impl_.node_.create_role_stmt_); break; case kAlterRoleStmt: _impl_.node_.alter_role_stmt_ = CreateMaybeMessage<::pg_query::AlterRoleStmt>(arena, *from._impl_.node_.alter_role_stmt_); break; case kAlterRoleSetStmt: _impl_.node_.alter_role_set_stmt_ = CreateMaybeMessage<::pg_query::AlterRoleSetStmt>(arena, *from._impl_.node_.alter_role_set_stmt_); break; case kDropRoleStmt: _impl_.node_.drop_role_stmt_ = CreateMaybeMessage<::pg_query::DropRoleStmt>(arena, *from._impl_.node_.drop_role_stmt_); break; case kCreateSeqStmt: _impl_.node_.create_seq_stmt_ = CreateMaybeMessage<::pg_query::CreateSeqStmt>(arena, *from._impl_.node_.create_seq_stmt_); break; case kAlterSeqStmt: _impl_.node_.alter_seq_stmt_ = CreateMaybeMessage<::pg_query::AlterSeqStmt>(arena, *from._impl_.node_.alter_seq_stmt_); break; case kDefineStmt: _impl_.node_.define_stmt_ = CreateMaybeMessage<::pg_query::DefineStmt>(arena, *from._impl_.node_.define_stmt_); break; case kCreateDomainStmt: _impl_.node_.create_domain_stmt_ = CreateMaybeMessage<::pg_query::CreateDomainStmt>(arena, *from._impl_.node_.create_domain_stmt_); break; case kCreateOpClassStmt: _impl_.node_.create_op_class_stmt_ = CreateMaybeMessage<::pg_query::CreateOpClassStmt>(arena, *from._impl_.node_.create_op_class_stmt_); break; case kCreateOpClassItem: _impl_.node_.create_op_class_item_ = CreateMaybeMessage<::pg_query::CreateOpClassItem>(arena, *from._impl_.node_.create_op_class_item_); break; case kCreateOpFamilyStmt: _impl_.node_.create_op_family_stmt_ = CreateMaybeMessage<::pg_query::CreateOpFamilyStmt>(arena, *from._impl_.node_.create_op_family_stmt_); break; case kAlterOpFamilyStmt: _impl_.node_.alter_op_family_stmt_ = CreateMaybeMessage<::pg_query::AlterOpFamilyStmt>(arena, *from._impl_.node_.alter_op_family_stmt_); break; case kDropStmt: _impl_.node_.drop_stmt_ = CreateMaybeMessage<::pg_query::DropStmt>(arena, *from._impl_.node_.drop_stmt_); break; case kTruncateStmt: _impl_.node_.truncate_stmt_ = CreateMaybeMessage<::pg_query::TruncateStmt>(arena, *from._impl_.node_.truncate_stmt_); break; case kCommentStmt: _impl_.node_.comment_stmt_ = CreateMaybeMessage<::pg_query::CommentStmt>(arena, *from._impl_.node_.comment_stmt_); break; case kSecLabelStmt: _impl_.node_.sec_label_stmt_ = CreateMaybeMessage<::pg_query::SecLabelStmt>(arena, *from._impl_.node_.sec_label_stmt_); break; case kDeclareCursorStmt: _impl_.node_.declare_cursor_stmt_ = CreateMaybeMessage<::pg_query::DeclareCursorStmt>(arena, *from._impl_.node_.declare_cursor_stmt_); break; case kClosePortalStmt: _impl_.node_.close_portal_stmt_ = CreateMaybeMessage<::pg_query::ClosePortalStmt>(arena, *from._impl_.node_.close_portal_stmt_); break; case kFetchStmt: _impl_.node_.fetch_stmt_ = CreateMaybeMessage<::pg_query::FetchStmt>(arena, *from._impl_.node_.fetch_stmt_); break; case kIndexStmt: _impl_.node_.index_stmt_ = CreateMaybeMessage<::pg_query::IndexStmt>(arena, *from._impl_.node_.index_stmt_); break; case kCreateStatsStmt: _impl_.node_.create_stats_stmt_ = CreateMaybeMessage<::pg_query::CreateStatsStmt>(arena, *from._impl_.node_.create_stats_stmt_); break; case kStatsElem: _impl_.node_.stats_elem_ = CreateMaybeMessage<::pg_query::StatsElem>(arena, *from._impl_.node_.stats_elem_); break; case kAlterStatsStmt: _impl_.node_.alter_stats_stmt_ = CreateMaybeMessage<::pg_query::AlterStatsStmt>(arena, *from._impl_.node_.alter_stats_stmt_); break; case kCreateFunctionStmt: _impl_.node_.create_function_stmt_ = CreateMaybeMessage<::pg_query::CreateFunctionStmt>(arena, *from._impl_.node_.create_function_stmt_); break; case kFunctionParameter: _impl_.node_.function_parameter_ = CreateMaybeMessage<::pg_query::FunctionParameter>(arena, *from._impl_.node_.function_parameter_); break; case kAlterFunctionStmt: _impl_.node_.alter_function_stmt_ = CreateMaybeMessage<::pg_query::AlterFunctionStmt>(arena, *from._impl_.node_.alter_function_stmt_); break; case kDoStmt: _impl_.node_.do_stmt_ = CreateMaybeMessage<::pg_query::DoStmt>(arena, *from._impl_.node_.do_stmt_); break; case kInlineCodeBlock: _impl_.node_.inline_code_block_ = CreateMaybeMessage<::pg_query::InlineCodeBlock>(arena, *from._impl_.node_.inline_code_block_); break; case kCallStmt: _impl_.node_.call_stmt_ = CreateMaybeMessage<::pg_query::CallStmt>(arena, *from._impl_.node_.call_stmt_); break; case kCallContext: _impl_.node_.call_context_ = CreateMaybeMessage<::pg_query::CallContext>(arena, *from._impl_.node_.call_context_); break; case kRenameStmt: _impl_.node_.rename_stmt_ = CreateMaybeMessage<::pg_query::RenameStmt>(arena, *from._impl_.node_.rename_stmt_); break; case kAlterObjectDependsStmt: _impl_.node_.alter_object_depends_stmt_ = CreateMaybeMessage<::pg_query::AlterObjectDependsStmt>(arena, *from._impl_.node_.alter_object_depends_stmt_); break; case kAlterObjectSchemaStmt: _impl_.node_.alter_object_schema_stmt_ = CreateMaybeMessage<::pg_query::AlterObjectSchemaStmt>(arena, *from._impl_.node_.alter_object_schema_stmt_); break; case kAlterOwnerStmt: _impl_.node_.alter_owner_stmt_ = CreateMaybeMessage<::pg_query::AlterOwnerStmt>(arena, *from._impl_.node_.alter_owner_stmt_); break; case kAlterOperatorStmt: _impl_.node_.alter_operator_stmt_ = CreateMaybeMessage<::pg_query::AlterOperatorStmt>(arena, *from._impl_.node_.alter_operator_stmt_); break; case kAlterTypeStmt: _impl_.node_.alter_type_stmt_ = CreateMaybeMessage<::pg_query::AlterTypeStmt>(arena, *from._impl_.node_.alter_type_stmt_); break; case kRuleStmt: _impl_.node_.rule_stmt_ = CreateMaybeMessage<::pg_query::RuleStmt>(arena, *from._impl_.node_.rule_stmt_); break; case kNotifyStmt: _impl_.node_.notify_stmt_ = CreateMaybeMessage<::pg_query::NotifyStmt>(arena, *from._impl_.node_.notify_stmt_); break; case kListenStmt: _impl_.node_.listen_stmt_ = CreateMaybeMessage<::pg_query::ListenStmt>(arena, *from._impl_.node_.listen_stmt_); break; case kUnlistenStmt: _impl_.node_.unlisten_stmt_ = CreateMaybeMessage<::pg_query::UnlistenStmt>(arena, *from._impl_.node_.unlisten_stmt_); break; case kTransactionStmt: _impl_.node_.transaction_stmt_ = CreateMaybeMessage<::pg_query::TransactionStmt>(arena, *from._impl_.node_.transaction_stmt_); break; case kCompositeTypeStmt: _impl_.node_.composite_type_stmt_ = CreateMaybeMessage<::pg_query::CompositeTypeStmt>(arena, *from._impl_.node_.composite_type_stmt_); break; case kCreateEnumStmt: _impl_.node_.create_enum_stmt_ = CreateMaybeMessage<::pg_query::CreateEnumStmt>(arena, *from._impl_.node_.create_enum_stmt_); break; case kCreateRangeStmt: _impl_.node_.create_range_stmt_ = CreateMaybeMessage<::pg_query::CreateRangeStmt>(arena, *from._impl_.node_.create_range_stmt_); break; case kAlterEnumStmt: _impl_.node_.alter_enum_stmt_ = CreateMaybeMessage<::pg_query::AlterEnumStmt>(arena, *from._impl_.node_.alter_enum_stmt_); break; case kViewStmt: _impl_.node_.view_stmt_ = CreateMaybeMessage<::pg_query::ViewStmt>(arena, *from._impl_.node_.view_stmt_); break; case kLoadStmt: _impl_.node_.load_stmt_ = CreateMaybeMessage<::pg_query::LoadStmt>(arena, *from._impl_.node_.load_stmt_); break; case kCreatedbStmt: _impl_.node_.createdb_stmt_ = CreateMaybeMessage<::pg_query::CreatedbStmt>(arena, *from._impl_.node_.createdb_stmt_); break; case kAlterDatabaseStmt: _impl_.node_.alter_database_stmt_ = CreateMaybeMessage<::pg_query::AlterDatabaseStmt>(arena, *from._impl_.node_.alter_database_stmt_); break; case kAlterDatabaseRefreshCollStmt: _impl_.node_.alter_database_refresh_coll_stmt_ = CreateMaybeMessage<::pg_query::AlterDatabaseRefreshCollStmt>(arena, *from._impl_.node_.alter_database_refresh_coll_stmt_); break; case kAlterDatabaseSetStmt: _impl_.node_.alter_database_set_stmt_ = CreateMaybeMessage<::pg_query::AlterDatabaseSetStmt>(arena, *from._impl_.node_.alter_database_set_stmt_); break; case kDropdbStmt: _impl_.node_.dropdb_stmt_ = CreateMaybeMessage<::pg_query::DropdbStmt>(arena, *from._impl_.node_.dropdb_stmt_); break; case kAlterSystemStmt: _impl_.node_.alter_system_stmt_ = CreateMaybeMessage<::pg_query::AlterSystemStmt>(arena, *from._impl_.node_.alter_system_stmt_); break; case kClusterStmt: _impl_.node_.cluster_stmt_ = CreateMaybeMessage<::pg_query::ClusterStmt>(arena, *from._impl_.node_.cluster_stmt_); break; case kVacuumStmt: _impl_.node_.vacuum_stmt_ = CreateMaybeMessage<::pg_query::VacuumStmt>(arena, *from._impl_.node_.vacuum_stmt_); break; case kVacuumRelation: _impl_.node_.vacuum_relation_ = CreateMaybeMessage<::pg_query::VacuumRelation>(arena, *from._impl_.node_.vacuum_relation_); break; case kExplainStmt: _impl_.node_.explain_stmt_ = CreateMaybeMessage<::pg_query::ExplainStmt>(arena, *from._impl_.node_.explain_stmt_); break; case kCreateTableAsStmt: _impl_.node_.create_table_as_stmt_ = CreateMaybeMessage<::pg_query::CreateTableAsStmt>(arena, *from._impl_.node_.create_table_as_stmt_); break; case kRefreshMatViewStmt: _impl_.node_.refresh_mat_view_stmt_ = CreateMaybeMessage<::pg_query::RefreshMatViewStmt>(arena, *from._impl_.node_.refresh_mat_view_stmt_); break; case kCheckPointStmt: _impl_.node_.check_point_stmt_ = CreateMaybeMessage<::pg_query::CheckPointStmt>(arena, *from._impl_.node_.check_point_stmt_); break; case kDiscardStmt: _impl_.node_.discard_stmt_ = CreateMaybeMessage<::pg_query::DiscardStmt>(arena, *from._impl_.node_.discard_stmt_); break; case kLockStmt: _impl_.node_.lock_stmt_ = CreateMaybeMessage<::pg_query::LockStmt>(arena, *from._impl_.node_.lock_stmt_); break; case kConstraintsSetStmt: _impl_.node_.constraints_set_stmt_ = CreateMaybeMessage<::pg_query::ConstraintsSetStmt>(arena, *from._impl_.node_.constraints_set_stmt_); break; case kReindexStmt: _impl_.node_.reindex_stmt_ = CreateMaybeMessage<::pg_query::ReindexStmt>(arena, *from._impl_.node_.reindex_stmt_); break; case kCreateConversionStmt: _impl_.node_.create_conversion_stmt_ = CreateMaybeMessage<::pg_query::CreateConversionStmt>(arena, *from._impl_.node_.create_conversion_stmt_); break; case kCreateCastStmt: _impl_.node_.create_cast_stmt_ = CreateMaybeMessage<::pg_query::CreateCastStmt>(arena, *from._impl_.node_.create_cast_stmt_); break; case kCreateTransformStmt: _impl_.node_.create_transform_stmt_ = CreateMaybeMessage<::pg_query::CreateTransformStmt>(arena, *from._impl_.node_.create_transform_stmt_); break; case kPrepareStmt: _impl_.node_.prepare_stmt_ = CreateMaybeMessage<::pg_query::PrepareStmt>(arena, *from._impl_.node_.prepare_stmt_); break; case kExecuteStmt: _impl_.node_.execute_stmt_ = CreateMaybeMessage<::pg_query::ExecuteStmt>(arena, *from._impl_.node_.execute_stmt_); break; case kDeallocateStmt: _impl_.node_.deallocate_stmt_ = CreateMaybeMessage<::pg_query::DeallocateStmt>(arena, *from._impl_.node_.deallocate_stmt_); break; case kDropOwnedStmt: _impl_.node_.drop_owned_stmt_ = CreateMaybeMessage<::pg_query::DropOwnedStmt>(arena, *from._impl_.node_.drop_owned_stmt_); break; case kReassignOwnedStmt: _impl_.node_.reassign_owned_stmt_ = CreateMaybeMessage<::pg_query::ReassignOwnedStmt>(arena, *from._impl_.node_.reassign_owned_stmt_); break; case kAlterTsdictionaryStmt: _impl_.node_.alter_tsdictionary_stmt_ = CreateMaybeMessage<::pg_query::AlterTSDictionaryStmt>(arena, *from._impl_.node_.alter_tsdictionary_stmt_); break; case kAlterTsconfigurationStmt: _impl_.node_.alter_tsconfiguration_stmt_ = CreateMaybeMessage<::pg_query::AlterTSConfigurationStmt>(arena, *from._impl_.node_.alter_tsconfiguration_stmt_); break; case kPublicationTable: _impl_.node_.publication_table_ = CreateMaybeMessage<::pg_query::PublicationTable>(arena, *from._impl_.node_.publication_table_); break; case kPublicationObjSpec: _impl_.node_.publication_obj_spec_ = CreateMaybeMessage<::pg_query::PublicationObjSpec>(arena, *from._impl_.node_.publication_obj_spec_); break; case kCreatePublicationStmt: _impl_.node_.create_publication_stmt_ = CreateMaybeMessage<::pg_query::CreatePublicationStmt>(arena, *from._impl_.node_.create_publication_stmt_); break; case kAlterPublicationStmt: _impl_.node_.alter_publication_stmt_ = CreateMaybeMessage<::pg_query::AlterPublicationStmt>(arena, *from._impl_.node_.alter_publication_stmt_); break; case kCreateSubscriptionStmt: _impl_.node_.create_subscription_stmt_ = CreateMaybeMessage<::pg_query::CreateSubscriptionStmt>(arena, *from._impl_.node_.create_subscription_stmt_); break; case kAlterSubscriptionStmt: _impl_.node_.alter_subscription_stmt_ = CreateMaybeMessage<::pg_query::AlterSubscriptionStmt>(arena, *from._impl_.node_.alter_subscription_stmt_); break; case kDropSubscriptionStmt: _impl_.node_.drop_subscription_stmt_ = CreateMaybeMessage<::pg_query::DropSubscriptionStmt>(arena, *from._impl_.node_.drop_subscription_stmt_); break; case kInteger: _impl_.node_.integer_ = CreateMaybeMessage<::pg_query::Integer>(arena, *from._impl_.node_.integer_); break; case kFloat: _impl_.node_.float__ = CreateMaybeMessage<::pg_query::Float>(arena, *from._impl_.node_.float__); break; case kBoolean: _impl_.node_.boolean_ = CreateMaybeMessage<::pg_query::Boolean>(arena, *from._impl_.node_.boolean_); break; case kString: _impl_.node_.string_ = CreateMaybeMessage<::pg_query::String>(arena, *from._impl_.node_.string_); break; case kBitString: _impl_.node_.bit_string_ = CreateMaybeMessage<::pg_query::BitString>(arena, *from._impl_.node_.bit_string_); break; case kList: _impl_.node_.list_ = CreateMaybeMessage<::pg_query::List>(arena, *from._impl_.node_.list_); break; case kIntList: _impl_.node_.int_list_ = CreateMaybeMessage<::pg_query::IntList>(arena, *from._impl_.node_.int_list_); break; case kOidList: _impl_.node_.oid_list_ = CreateMaybeMessage<::pg_query::OidList>(arena, *from._impl_.node_.oid_list_); break; case kAConst: _impl_.node_.a_const_ = CreateMaybeMessage<::pg_query::A_Const>(arena, *from._impl_.node_.a_const_); break; } // @@protoc_insertion_point(copy_constructor:pg_query.Node) } inline PROTOBUF_NDEBUG_INLINE Node::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : node_{}, _cached_size_{0}, _oneof_case_{} {} inline void Node::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } Node::~Node() { // @@protoc_insertion_point(destructor:pg_query.Node) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void Node::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); if (has_node()) { clear_node(); } _impl_.~Impl_(); } void Node::clear_node() { // @@protoc_insertion_point(one_of_clear_start:pg_query.Node) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); switch (node_case()) { case kAlias: { if (GetArena() == nullptr) { delete _impl_.node_.alias_; } break; } case kRangeVar: { if (GetArena() == nullptr) { delete _impl_.node_.range_var_; } break; } case kTableFunc: { if (GetArena() == nullptr) { delete _impl_.node_.table_func_; } break; } case kIntoClause: { if (GetArena() == nullptr) { delete _impl_.node_.into_clause_; } break; } case kVar: { if (GetArena() == nullptr) { delete _impl_.node_.var_; } break; } case kParam: { if (GetArena() == nullptr) { delete _impl_.node_.param_; } break; } case kAggref: { if (GetArena() == nullptr) { delete _impl_.node_.aggref_; } break; } case kGroupingFunc: { if (GetArena() == nullptr) { delete _impl_.node_.grouping_func_; } break; } case kWindowFunc: { if (GetArena() == nullptr) { delete _impl_.node_.window_func_; } break; } case kWindowFuncRunCondition: { if (GetArena() == nullptr) { delete _impl_.node_.window_func_run_condition_; } break; } case kMergeSupportFunc: { if (GetArena() == nullptr) { delete _impl_.node_.merge_support_func_; } break; } case kSubscriptingRef: { if (GetArena() == nullptr) { delete _impl_.node_.subscripting_ref_; } break; } case kFuncExpr: { if (GetArena() == nullptr) { delete _impl_.node_.func_expr_; } break; } case kNamedArgExpr: { if (GetArena() == nullptr) { delete _impl_.node_.named_arg_expr_; } break; } case kOpExpr: { if (GetArena() == nullptr) { delete _impl_.node_.op_expr_; } break; } case kDistinctExpr: { if (GetArena() == nullptr) { delete _impl_.node_.distinct_expr_; } break; } case kNullIfExpr: { if (GetArena() == nullptr) { delete _impl_.node_.null_if_expr_; } break; } case kScalarArrayOpExpr: { if (GetArena() == nullptr) { delete _impl_.node_.scalar_array_op_expr_; } break; } case kBoolExpr: { if (GetArena() == nullptr) { delete _impl_.node_.bool_expr_; } break; } case kSubLink: { if (GetArena() == nullptr) { delete _impl_.node_.sub_link_; } break; } case kSubPlan: { if (GetArena() == nullptr) { delete _impl_.node_.sub_plan_; } break; } case kAlternativeSubPlan: { if (GetArena() == nullptr) { delete _impl_.node_.alternative_sub_plan_; } break; } case kFieldSelect: { if (GetArena() == nullptr) { delete _impl_.node_.field_select_; } break; } case kFieldStore: { if (GetArena() == nullptr) { delete _impl_.node_.field_store_; } break; } case kRelabelType: { if (GetArena() == nullptr) { delete _impl_.node_.relabel_type_; } break; } case kCoerceViaIo: { if (GetArena() == nullptr) { delete _impl_.node_.coerce_via_io_; } break; } case kArrayCoerceExpr: { if (GetArena() == nullptr) { delete _impl_.node_.array_coerce_expr_; } break; } case kConvertRowtypeExpr: { if (GetArena() == nullptr) { delete _impl_.node_.convert_rowtype_expr_; } break; } case kCollateExpr: { if (GetArena() == nullptr) { delete _impl_.node_.collate_expr_; } break; } case kCaseExpr: { if (GetArena() == nullptr) { delete _impl_.node_.case_expr_; } break; } case kCaseWhen: { if (GetArena() == nullptr) { delete _impl_.node_.case_when_; } break; } case kCaseTestExpr: { if (GetArena() == nullptr) { delete _impl_.node_.case_test_expr_; } break; } case kArrayExpr: { if (GetArena() == nullptr) { delete _impl_.node_.array_expr_; } break; } case kRowExpr: { if (GetArena() == nullptr) { delete _impl_.node_.row_expr_; } break; } case kRowCompareExpr: { if (GetArena() == nullptr) { delete _impl_.node_.row_compare_expr_; } break; } case kCoalesceExpr: { if (GetArena() == nullptr) { delete _impl_.node_.coalesce_expr_; } break; } case kMinMaxExpr: { if (GetArena() == nullptr) { delete _impl_.node_.min_max_expr_; } break; } case kSqlvalueFunction: { if (GetArena() == nullptr) { delete _impl_.node_.sqlvalue_function_; } break; } case kXmlExpr: { if (GetArena() == nullptr) { delete _impl_.node_.xml_expr_; } break; } case kJsonFormat: { if (GetArena() == nullptr) { delete _impl_.node_.json_format_; } break; } case kJsonReturning: { if (GetArena() == nullptr) { delete _impl_.node_.json_returning_; } break; } case kJsonValueExpr: { if (GetArena() == nullptr) { delete _impl_.node_.json_value_expr_; } break; } case kJsonConstructorExpr: { if (GetArena() == nullptr) { delete _impl_.node_.json_constructor_expr_; } break; } case kJsonIsPredicate: { if (GetArena() == nullptr) { delete _impl_.node_.json_is_predicate_; } break; } case kJsonBehavior: { if (GetArena() == nullptr) { delete _impl_.node_.json_behavior_; } break; } case kJsonExpr: { if (GetArena() == nullptr) { delete _impl_.node_.json_expr_; } break; } case kJsonTablePath: { if (GetArena() == nullptr) { delete _impl_.node_.json_table_path_; } break; } case kJsonTablePathScan: { if (GetArena() == nullptr) { delete _impl_.node_.json_table_path_scan_; } break; } case kJsonTableSiblingJoin: { if (GetArena() == nullptr) { delete _impl_.node_.json_table_sibling_join_; } break; } case kNullTest: { if (GetArena() == nullptr) { delete _impl_.node_.null_test_; } break; } case kBooleanTest: { if (GetArena() == nullptr) { delete _impl_.node_.boolean_test_; } break; } case kMergeAction: { if (GetArena() == nullptr) { delete _impl_.node_.merge_action_; } break; } case kCoerceToDomain: { if (GetArena() == nullptr) { delete _impl_.node_.coerce_to_domain_; } break; } case kCoerceToDomainValue: { if (GetArena() == nullptr) { delete _impl_.node_.coerce_to_domain_value_; } break; } case kSetToDefault: { if (GetArena() == nullptr) { delete _impl_.node_.set_to_default_; } break; } case kCurrentOfExpr: { if (GetArena() == nullptr) { delete _impl_.node_.current_of_expr_; } break; } case kNextValueExpr: { if (GetArena() == nullptr) { delete _impl_.node_.next_value_expr_; } break; } case kInferenceElem: { if (GetArena() == nullptr) { delete _impl_.node_.inference_elem_; } break; } case kTargetEntry: { if (GetArena() == nullptr) { delete _impl_.node_.target_entry_; } break; } case kRangeTblRef: { if (GetArena() == nullptr) { delete _impl_.node_.range_tbl_ref_; } break; } case kJoinExpr: { if (GetArena() == nullptr) { delete _impl_.node_.join_expr_; } break; } case kFromExpr: { if (GetArena() == nullptr) { delete _impl_.node_.from_expr_; } break; } case kOnConflictExpr: { if (GetArena() == nullptr) { delete _impl_.node_.on_conflict_expr_; } break; } case kQuery: { if (GetArena() == nullptr) { delete _impl_.node_.query_; } break; } case kTypeName: { if (GetArena() == nullptr) { delete _impl_.node_.type_name_; } break; } case kColumnRef: { if (GetArena() == nullptr) { delete _impl_.node_.column_ref_; } break; } case kParamRef: { if (GetArena() == nullptr) { delete _impl_.node_.param_ref_; } break; } case kAExpr: { if (GetArena() == nullptr) { delete _impl_.node_.a_expr_; } break; } case kTypeCast: { if (GetArena() == nullptr) { delete _impl_.node_.type_cast_; } break; } case kCollateClause: { if (GetArena() == nullptr) { delete _impl_.node_.collate_clause_; } break; } case kRoleSpec: { if (GetArena() == nullptr) { delete _impl_.node_.role_spec_; } break; } case kFuncCall: { if (GetArena() == nullptr) { delete _impl_.node_.func_call_; } break; } case kAStar: { if (GetArena() == nullptr) { delete _impl_.node_.a_star_; } break; } case kAIndices: { if (GetArena() == nullptr) { delete _impl_.node_.a_indices_; } break; } case kAIndirection: { if (GetArena() == nullptr) { delete _impl_.node_.a_indirection_; } break; } case kAArrayExpr: { if (GetArena() == nullptr) { delete _impl_.node_.a_array_expr_; } break; } case kResTarget: { if (GetArena() == nullptr) { delete _impl_.node_.res_target_; } break; } case kMultiAssignRef: { if (GetArena() == nullptr) { delete _impl_.node_.multi_assign_ref_; } break; } case kSortBy: { if (GetArena() == nullptr) { delete _impl_.node_.sort_by_; } break; } case kWindowDef: { if (GetArena() == nullptr) { delete _impl_.node_.window_def_; } break; } case kRangeSubselect: { if (GetArena() == nullptr) { delete _impl_.node_.range_subselect_; } break; } case kRangeFunction: { if (GetArena() == nullptr) { delete _impl_.node_.range_function_; } break; } case kRangeTableFunc: { if (GetArena() == nullptr) { delete _impl_.node_.range_table_func_; } break; } case kRangeTableFuncCol: { if (GetArena() == nullptr) { delete _impl_.node_.range_table_func_col_; } break; } case kRangeTableSample: { if (GetArena() == nullptr) { delete _impl_.node_.range_table_sample_; } break; } case kColumnDef: { if (GetArena() == nullptr) { delete _impl_.node_.column_def_; } break; } case kTableLikeClause: { if (GetArena() == nullptr) { delete _impl_.node_.table_like_clause_; } break; } case kIndexElem: { if (GetArena() == nullptr) { delete _impl_.node_.index_elem_; } break; } case kDefElem: { if (GetArena() == nullptr) { delete _impl_.node_.def_elem_; } break; } case kLockingClause: { if (GetArena() == nullptr) { delete _impl_.node_.locking_clause_; } break; } case kXmlSerialize: { if (GetArena() == nullptr) { delete _impl_.node_.xml_serialize_; } break; } case kPartitionElem: { if (GetArena() == nullptr) { delete _impl_.node_.partition_elem_; } break; } case kPartitionSpec: { if (GetArena() == nullptr) { delete _impl_.node_.partition_spec_; } break; } case kPartitionBoundSpec: { if (GetArena() == nullptr) { delete _impl_.node_.partition_bound_spec_; } break; } case kPartitionRangeDatum: { if (GetArena() == nullptr) { delete _impl_.node_.partition_range_datum_; } break; } case kSinglePartitionSpec: { if (GetArena() == nullptr) { delete _impl_.node_.single_partition_spec_; } break; } case kPartitionCmd: { if (GetArena() == nullptr) { delete _impl_.node_.partition_cmd_; } break; } case kRangeTblEntry: { if (GetArena() == nullptr) { delete _impl_.node_.range_tbl_entry_; } break; } case kRtepermissionInfo: { if (GetArena() == nullptr) { delete _impl_.node_.rtepermission_info_; } break; } case kRangeTblFunction: { if (GetArena() == nullptr) { delete _impl_.node_.range_tbl_function_; } break; } case kTableSampleClause: { if (GetArena() == nullptr) { delete _impl_.node_.table_sample_clause_; } break; } case kWithCheckOption: { if (GetArena() == nullptr) { delete _impl_.node_.with_check_option_; } break; } case kSortGroupClause: { if (GetArena() == nullptr) { delete _impl_.node_.sort_group_clause_; } break; } case kGroupingSet: { if (GetArena() == nullptr) { delete _impl_.node_.grouping_set_; } break; } case kWindowClause: { if (GetArena() == nullptr) { delete _impl_.node_.window_clause_; } break; } case kRowMarkClause: { if (GetArena() == nullptr) { delete _impl_.node_.row_mark_clause_; } break; } case kWithClause: { if (GetArena() == nullptr) { delete _impl_.node_.with_clause_; } break; } case kInferClause: { if (GetArena() == nullptr) { delete _impl_.node_.infer_clause_; } break; } case kOnConflictClause: { if (GetArena() == nullptr) { delete _impl_.node_.on_conflict_clause_; } break; } case kCtesearchClause: { if (GetArena() == nullptr) { delete _impl_.node_.ctesearch_clause_; } break; } case kCtecycleClause: { if (GetArena() == nullptr) { delete _impl_.node_.ctecycle_clause_; } break; } case kCommonTableExpr: { if (GetArena() == nullptr) { delete _impl_.node_.common_table_expr_; } break; } case kMergeWhenClause: { if (GetArena() == nullptr) { delete _impl_.node_.merge_when_clause_; } break; } case kTriggerTransition: { if (GetArena() == nullptr) { delete _impl_.node_.trigger_transition_; } break; } case kJsonOutput: { if (GetArena() == nullptr) { delete _impl_.node_.json_output_; } break; } case kJsonArgument: { if (GetArena() == nullptr) { delete _impl_.node_.json_argument_; } break; } case kJsonFuncExpr: { if (GetArena() == nullptr) { delete _impl_.node_.json_func_expr_; } break; } case kJsonTablePathSpec: { if (GetArena() == nullptr) { delete _impl_.node_.json_table_path_spec_; } break; } case kJsonTable: { if (GetArena() == nullptr) { delete _impl_.node_.json_table_; } break; } case kJsonTableColumn: { if (GetArena() == nullptr) { delete _impl_.node_.json_table_column_; } break; } case kJsonKeyValue: { if (GetArena() == nullptr) { delete _impl_.node_.json_key_value_; } break; } case kJsonParseExpr: { if (GetArena() == nullptr) { delete _impl_.node_.json_parse_expr_; } break; } case kJsonScalarExpr: { if (GetArena() == nullptr) { delete _impl_.node_.json_scalar_expr_; } break; } case kJsonSerializeExpr: { if (GetArena() == nullptr) { delete _impl_.node_.json_serialize_expr_; } break; } case kJsonObjectConstructor: { if (GetArena() == nullptr) { delete _impl_.node_.json_object_constructor_; } break; } case kJsonArrayConstructor: { if (GetArena() == nullptr) { delete _impl_.node_.json_array_constructor_; } break; } case kJsonArrayQueryConstructor: { if (GetArena() == nullptr) { delete _impl_.node_.json_array_query_constructor_; } break; } case kJsonAggConstructor: { if (GetArena() == nullptr) { delete _impl_.node_.json_agg_constructor_; } break; } case kJsonObjectAgg: { if (GetArena() == nullptr) { delete _impl_.node_.json_object_agg_; } break; } case kJsonArrayAgg: { if (GetArena() == nullptr) { delete _impl_.node_.json_array_agg_; } break; } case kRawStmt: { if (GetArena() == nullptr) { delete _impl_.node_.raw_stmt_; } break; } case kInsertStmt: { if (GetArena() == nullptr) { delete _impl_.node_.insert_stmt_; } break; } case kDeleteStmt: { if (GetArena() == nullptr) { delete _impl_.node_.delete_stmt_; } break; } case kUpdateStmt: { if (GetArena() == nullptr) { delete _impl_.node_.update_stmt_; } break; } case kMergeStmt: { if (GetArena() == nullptr) { delete _impl_.node_.merge_stmt_; } break; } case kSelectStmt: { if (GetArena() == nullptr) { delete _impl_.node_.select_stmt_; } break; } case kSetOperationStmt: { if (GetArena() == nullptr) { delete _impl_.node_.set_operation_stmt_; } break; } case kReturnStmt: { if (GetArena() == nullptr) { delete _impl_.node_.return_stmt_; } break; } case kPlassignStmt: { if (GetArena() == nullptr) { delete _impl_.node_.plassign_stmt_; } break; } case kCreateSchemaStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_schema_stmt_; } break; } case kAlterTableStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_table_stmt_; } break; } case kReplicaIdentityStmt: { if (GetArena() == nullptr) { delete _impl_.node_.replica_identity_stmt_; } break; } case kAlterTableCmd: { if (GetArena() == nullptr) { delete _impl_.node_.alter_table_cmd_; } break; } case kAlterCollationStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_collation_stmt_; } break; } case kAlterDomainStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_domain_stmt_; } break; } case kGrantStmt: { if (GetArena() == nullptr) { delete _impl_.node_.grant_stmt_; } break; } case kObjectWithArgs: { if (GetArena() == nullptr) { delete _impl_.node_.object_with_args_; } break; } case kAccessPriv: { if (GetArena() == nullptr) { delete _impl_.node_.access_priv_; } break; } case kGrantRoleStmt: { if (GetArena() == nullptr) { delete _impl_.node_.grant_role_stmt_; } break; } case kAlterDefaultPrivilegesStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_default_privileges_stmt_; } break; } case kCopyStmt: { if (GetArena() == nullptr) { delete _impl_.node_.copy_stmt_; } break; } case kVariableSetStmt: { if (GetArena() == nullptr) { delete _impl_.node_.variable_set_stmt_; } break; } case kVariableShowStmt: { if (GetArena() == nullptr) { delete _impl_.node_.variable_show_stmt_; } break; } case kCreateStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_stmt_; } break; } case kConstraint: { if (GetArena() == nullptr) { delete _impl_.node_.constraint_; } break; } case kCreateTableSpaceStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_table_space_stmt_; } break; } case kDropTableSpaceStmt: { if (GetArena() == nullptr) { delete _impl_.node_.drop_table_space_stmt_; } break; } case kAlterTableSpaceOptionsStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_table_space_options_stmt_; } break; } case kAlterTableMoveAllStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_table_move_all_stmt_; } break; } case kCreateExtensionStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_extension_stmt_; } break; } case kAlterExtensionStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_extension_stmt_; } break; } case kAlterExtensionContentsStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_extension_contents_stmt_; } break; } case kCreateFdwStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_fdw_stmt_; } break; } case kAlterFdwStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_fdw_stmt_; } break; } case kCreateForeignServerStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_foreign_server_stmt_; } break; } case kAlterForeignServerStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_foreign_server_stmt_; } break; } case kCreateForeignTableStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_foreign_table_stmt_; } break; } case kCreateUserMappingStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_user_mapping_stmt_; } break; } case kAlterUserMappingStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_user_mapping_stmt_; } break; } case kDropUserMappingStmt: { if (GetArena() == nullptr) { delete _impl_.node_.drop_user_mapping_stmt_; } break; } case kImportForeignSchemaStmt: { if (GetArena() == nullptr) { delete _impl_.node_.import_foreign_schema_stmt_; } break; } case kCreatePolicyStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_policy_stmt_; } break; } case kAlterPolicyStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_policy_stmt_; } break; } case kCreateAmStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_am_stmt_; } break; } case kCreateTrigStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_trig_stmt_; } break; } case kCreateEventTrigStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_event_trig_stmt_; } break; } case kAlterEventTrigStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_event_trig_stmt_; } break; } case kCreatePlangStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_plang_stmt_; } break; } case kCreateRoleStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_role_stmt_; } break; } case kAlterRoleStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_role_stmt_; } break; } case kAlterRoleSetStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_role_set_stmt_; } break; } case kDropRoleStmt: { if (GetArena() == nullptr) { delete _impl_.node_.drop_role_stmt_; } break; } case kCreateSeqStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_seq_stmt_; } break; } case kAlterSeqStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_seq_stmt_; } break; } case kDefineStmt: { if (GetArena() == nullptr) { delete _impl_.node_.define_stmt_; } break; } case kCreateDomainStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_domain_stmt_; } break; } case kCreateOpClassStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_op_class_stmt_; } break; } case kCreateOpClassItem: { if (GetArena() == nullptr) { delete _impl_.node_.create_op_class_item_; } break; } case kCreateOpFamilyStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_op_family_stmt_; } break; } case kAlterOpFamilyStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_op_family_stmt_; } break; } case kDropStmt: { if (GetArena() == nullptr) { delete _impl_.node_.drop_stmt_; } break; } case kTruncateStmt: { if (GetArena() == nullptr) { delete _impl_.node_.truncate_stmt_; } break; } case kCommentStmt: { if (GetArena() == nullptr) { delete _impl_.node_.comment_stmt_; } break; } case kSecLabelStmt: { if (GetArena() == nullptr) { delete _impl_.node_.sec_label_stmt_; } break; } case kDeclareCursorStmt: { if (GetArena() == nullptr) { delete _impl_.node_.declare_cursor_stmt_; } break; } case kClosePortalStmt: { if (GetArena() == nullptr) { delete _impl_.node_.close_portal_stmt_; } break; } case kFetchStmt: { if (GetArena() == nullptr) { delete _impl_.node_.fetch_stmt_; } break; } case kIndexStmt: { if (GetArena() == nullptr) { delete _impl_.node_.index_stmt_; } break; } case kCreateStatsStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_stats_stmt_; } break; } case kStatsElem: { if (GetArena() == nullptr) { delete _impl_.node_.stats_elem_; } break; } case kAlterStatsStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_stats_stmt_; } break; } case kCreateFunctionStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_function_stmt_; } break; } case kFunctionParameter: { if (GetArena() == nullptr) { delete _impl_.node_.function_parameter_; } break; } case kAlterFunctionStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_function_stmt_; } break; } case kDoStmt: { if (GetArena() == nullptr) { delete _impl_.node_.do_stmt_; } break; } case kInlineCodeBlock: { if (GetArena() == nullptr) { delete _impl_.node_.inline_code_block_; } break; } case kCallStmt: { if (GetArena() == nullptr) { delete _impl_.node_.call_stmt_; } break; } case kCallContext: { if (GetArena() == nullptr) { delete _impl_.node_.call_context_; } break; } case kRenameStmt: { if (GetArena() == nullptr) { delete _impl_.node_.rename_stmt_; } break; } case kAlterObjectDependsStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_object_depends_stmt_; } break; } case kAlterObjectSchemaStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_object_schema_stmt_; } break; } case kAlterOwnerStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_owner_stmt_; } break; } case kAlterOperatorStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_operator_stmt_; } break; } case kAlterTypeStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_type_stmt_; } break; } case kRuleStmt: { if (GetArena() == nullptr) { delete _impl_.node_.rule_stmt_; } break; } case kNotifyStmt: { if (GetArena() == nullptr) { delete _impl_.node_.notify_stmt_; } break; } case kListenStmt: { if (GetArena() == nullptr) { delete _impl_.node_.listen_stmt_; } break; } case kUnlistenStmt: { if (GetArena() == nullptr) { delete _impl_.node_.unlisten_stmt_; } break; } case kTransactionStmt: { if (GetArena() == nullptr) { delete _impl_.node_.transaction_stmt_; } break; } case kCompositeTypeStmt: { if (GetArena() == nullptr) { delete _impl_.node_.composite_type_stmt_; } break; } case kCreateEnumStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_enum_stmt_; } break; } case kCreateRangeStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_range_stmt_; } break; } case kAlterEnumStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_enum_stmt_; } break; } case kViewStmt: { if (GetArena() == nullptr) { delete _impl_.node_.view_stmt_; } break; } case kLoadStmt: { if (GetArena() == nullptr) { delete _impl_.node_.load_stmt_; } break; } case kCreatedbStmt: { if (GetArena() == nullptr) { delete _impl_.node_.createdb_stmt_; } break; } case kAlterDatabaseStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_database_stmt_; } break; } case kAlterDatabaseRefreshCollStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_database_refresh_coll_stmt_; } break; } case kAlterDatabaseSetStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_database_set_stmt_; } break; } case kDropdbStmt: { if (GetArena() == nullptr) { delete _impl_.node_.dropdb_stmt_; } break; } case kAlterSystemStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_system_stmt_; } break; } case kClusterStmt: { if (GetArena() == nullptr) { delete _impl_.node_.cluster_stmt_; } break; } case kVacuumStmt: { if (GetArena() == nullptr) { delete _impl_.node_.vacuum_stmt_; } break; } case kVacuumRelation: { if (GetArena() == nullptr) { delete _impl_.node_.vacuum_relation_; } break; } case kExplainStmt: { if (GetArena() == nullptr) { delete _impl_.node_.explain_stmt_; } break; } case kCreateTableAsStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_table_as_stmt_; } break; } case kRefreshMatViewStmt: { if (GetArena() == nullptr) { delete _impl_.node_.refresh_mat_view_stmt_; } break; } case kCheckPointStmt: { if (GetArena() == nullptr) { delete _impl_.node_.check_point_stmt_; } break; } case kDiscardStmt: { if (GetArena() == nullptr) { delete _impl_.node_.discard_stmt_; } break; } case kLockStmt: { if (GetArena() == nullptr) { delete _impl_.node_.lock_stmt_; } break; } case kConstraintsSetStmt: { if (GetArena() == nullptr) { delete _impl_.node_.constraints_set_stmt_; } break; } case kReindexStmt: { if (GetArena() == nullptr) { delete _impl_.node_.reindex_stmt_; } break; } case kCreateConversionStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_conversion_stmt_; } break; } case kCreateCastStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_cast_stmt_; } break; } case kCreateTransformStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_transform_stmt_; } break; } case kPrepareStmt: { if (GetArena() == nullptr) { delete _impl_.node_.prepare_stmt_; } break; } case kExecuteStmt: { if (GetArena() == nullptr) { delete _impl_.node_.execute_stmt_; } break; } case kDeallocateStmt: { if (GetArena() == nullptr) { delete _impl_.node_.deallocate_stmt_; } break; } case kDropOwnedStmt: { if (GetArena() == nullptr) { delete _impl_.node_.drop_owned_stmt_; } break; } case kReassignOwnedStmt: { if (GetArena() == nullptr) { delete _impl_.node_.reassign_owned_stmt_; } break; } case kAlterTsdictionaryStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_tsdictionary_stmt_; } break; } case kAlterTsconfigurationStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_tsconfiguration_stmt_; } break; } case kPublicationTable: { if (GetArena() == nullptr) { delete _impl_.node_.publication_table_; } break; } case kPublicationObjSpec: { if (GetArena() == nullptr) { delete _impl_.node_.publication_obj_spec_; } break; } case kCreatePublicationStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_publication_stmt_; } break; } case kAlterPublicationStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_publication_stmt_; } break; } case kCreateSubscriptionStmt: { if (GetArena() == nullptr) { delete _impl_.node_.create_subscription_stmt_; } break; } case kAlterSubscriptionStmt: { if (GetArena() == nullptr) { delete _impl_.node_.alter_subscription_stmt_; } break; } case kDropSubscriptionStmt: { if (GetArena() == nullptr) { delete _impl_.node_.drop_subscription_stmt_; } break; } case kInteger: { if (GetArena() == nullptr) { delete _impl_.node_.integer_; } break; } case kFloat: { if (GetArena() == nullptr) { delete _impl_.node_.float__; } break; } case kBoolean: { if (GetArena() == nullptr) { delete _impl_.node_.boolean_; } break; } case kString: { if (GetArena() == nullptr) { delete _impl_.node_.string_; } break; } case kBitString: { if (GetArena() == nullptr) { delete _impl_.node_.bit_string_; } break; } case kList: { if (GetArena() == nullptr) { delete _impl_.node_.list_; } break; } case kIntList: { if (GetArena() == nullptr) { delete _impl_.node_.int_list_; } break; } case kOidList: { if (GetArena() == nullptr) { delete _impl_.node_.oid_list_; } break; } case kAConst: { if (GetArena() == nullptr) { delete _impl_.node_.a_const_; } break; } case NODE_NOT_SET: { break; } } _impl_._oneof_case_[0] = NODE_NOT_SET; } PROTOBUF_NOINLINE void Node::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Node) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; clear_node(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* Node::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 268, 268, 0, 35> Node::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 268, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 0, // skipmap offsetof(decltype(_table_), field_entries), 268, // num_field_entries 268, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_Node_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, }}, {{ 33, 0, 15, 0, 32, 0, 48, 0, 64, 0, 80, 0, 96, 0, 112, 0, 128, 0, 144, 0, 160, 0, 176, 0, 192, 0, 208, 0, 224, 0, 240, 61440, 256, 65535, 65535 }}, {{ // .pg_query.Alias alias = 1 [json_name = "Alias"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alias_), _Internal::kOneofCaseOffset + 0, 0, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RangeVar range_var = 2 [json_name = "RangeVar"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.range_var_), _Internal::kOneofCaseOffset + 0, 1, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TableFunc table_func = 3 [json_name = "TableFunc"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.table_func_), _Internal::kOneofCaseOffset + 0, 2, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.IntoClause into_clause = 4 [json_name = "IntoClause"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.into_clause_), _Internal::kOneofCaseOffset + 0, 3, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Var var = 5 [json_name = "Var"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.var_), _Internal::kOneofCaseOffset + 0, 4, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Param param = 6 [json_name = "Param"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.param_), _Internal::kOneofCaseOffset + 0, 5, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Aggref aggref = 7 [json_name = "Aggref"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.aggref_), _Internal::kOneofCaseOffset + 0, 6, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.GroupingFunc grouping_func = 8 [json_name = "GroupingFunc"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.grouping_func_), _Internal::kOneofCaseOffset + 0, 7, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.WindowFunc window_func = 9 [json_name = "WindowFunc"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.window_func_), _Internal::kOneofCaseOffset + 0, 8, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.WindowFuncRunCondition window_func_run_condition = 10 [json_name = "WindowFuncRunCondition"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.window_func_run_condition_), _Internal::kOneofCaseOffset + 0, 9, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.MergeSupportFunc merge_support_func = 11 [json_name = "MergeSupportFunc"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.merge_support_func_), _Internal::kOneofCaseOffset + 0, 10, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SubscriptingRef subscripting_ref = 12 [json_name = "SubscriptingRef"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.subscripting_ref_), _Internal::kOneofCaseOffset + 0, 11, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.FuncExpr func_expr = 13 [json_name = "FuncExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.func_expr_), _Internal::kOneofCaseOffset + 0, 12, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.NamedArgExpr named_arg_expr = 14 [json_name = "NamedArgExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.named_arg_expr_), _Internal::kOneofCaseOffset + 0, 13, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.OpExpr op_expr = 15 [json_name = "OpExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.op_expr_), _Internal::kOneofCaseOffset + 0, 14, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DistinctExpr distinct_expr = 16 [json_name = "DistinctExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.distinct_expr_), _Internal::kOneofCaseOffset + 0, 15, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.NullIfExpr null_if_expr = 17 [json_name = "NullIfExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.null_if_expr_), _Internal::kOneofCaseOffset + 0, 16, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ScalarArrayOpExpr scalar_array_op_expr = 18 [json_name = "ScalarArrayOpExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.scalar_array_op_expr_), _Internal::kOneofCaseOffset + 0, 17, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.BoolExpr bool_expr = 19 [json_name = "BoolExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.bool_expr_), _Internal::kOneofCaseOffset + 0, 18, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SubLink sub_link = 20 [json_name = "SubLink"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.sub_link_), _Internal::kOneofCaseOffset + 0, 19, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SubPlan sub_plan = 21 [json_name = "SubPlan"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.sub_plan_), _Internal::kOneofCaseOffset + 0, 20, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlternativeSubPlan alternative_sub_plan = 22 [json_name = "AlternativeSubPlan"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alternative_sub_plan_), _Internal::kOneofCaseOffset + 0, 21, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.FieldSelect field_select = 23 [json_name = "FieldSelect"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.field_select_), _Internal::kOneofCaseOffset + 0, 22, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.FieldStore field_store = 24 [json_name = "FieldStore"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.field_store_), _Internal::kOneofCaseOffset + 0, 23, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RelabelType relabel_type = 25 [json_name = "RelabelType"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.relabel_type_), _Internal::kOneofCaseOffset + 0, 24, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CoerceViaIO coerce_via_io = 26 [json_name = "CoerceViaIO"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.coerce_via_io_), _Internal::kOneofCaseOffset + 0, 25, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ArrayCoerceExpr array_coerce_expr = 27 [json_name = "ArrayCoerceExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.array_coerce_expr_), _Internal::kOneofCaseOffset + 0, 26, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ConvertRowtypeExpr convert_rowtype_expr = 28 [json_name = "ConvertRowtypeExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.convert_rowtype_expr_), _Internal::kOneofCaseOffset + 0, 27, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CollateExpr collate_expr = 29 [json_name = "CollateExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.collate_expr_), _Internal::kOneofCaseOffset + 0, 28, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CaseExpr case_expr = 30 [json_name = "CaseExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.case_expr_), _Internal::kOneofCaseOffset + 0, 29, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CaseWhen case_when = 31 [json_name = "CaseWhen"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.case_when_), _Internal::kOneofCaseOffset + 0, 30, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CaseTestExpr case_test_expr = 32 [json_name = "CaseTestExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.case_test_expr_), _Internal::kOneofCaseOffset + 0, 31, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ArrayExpr array_expr = 33 [json_name = "ArrayExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.array_expr_), _Internal::kOneofCaseOffset + 0, 32, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RowExpr row_expr = 34 [json_name = "RowExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.row_expr_), _Internal::kOneofCaseOffset + 0, 33, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RowCompareExpr row_compare_expr = 35 [json_name = "RowCompareExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.row_compare_expr_), _Internal::kOneofCaseOffset + 0, 34, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CoalesceExpr coalesce_expr = 36 [json_name = "CoalesceExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.coalesce_expr_), _Internal::kOneofCaseOffset + 0, 35, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.MinMaxExpr min_max_expr = 37 [json_name = "MinMaxExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.min_max_expr_), _Internal::kOneofCaseOffset + 0, 36, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SQLValueFunction sqlvalue_function = 38 [json_name = "SQLValueFunction"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.sqlvalue_function_), _Internal::kOneofCaseOffset + 0, 37, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.XmlExpr xml_expr = 39 [json_name = "XmlExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.xml_expr_), _Internal::kOneofCaseOffset + 0, 38, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonFormat json_format = 40 [json_name = "JsonFormat"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_format_), _Internal::kOneofCaseOffset + 0, 39, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonReturning json_returning = 41 [json_name = "JsonReturning"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_returning_), _Internal::kOneofCaseOffset + 0, 40, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonValueExpr json_value_expr = 42 [json_name = "JsonValueExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_value_expr_), _Internal::kOneofCaseOffset + 0, 41, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonConstructorExpr json_constructor_expr = 43 [json_name = "JsonConstructorExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_constructor_expr_), _Internal::kOneofCaseOffset + 0, 42, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonIsPredicate json_is_predicate = 44 [json_name = "JsonIsPredicate"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_is_predicate_), _Internal::kOneofCaseOffset + 0, 43, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonBehavior json_behavior = 45 [json_name = "JsonBehavior"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_behavior_), _Internal::kOneofCaseOffset + 0, 44, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonExpr json_expr = 46 [json_name = "JsonExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_expr_), _Internal::kOneofCaseOffset + 0, 45, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonTablePath json_table_path = 47 [json_name = "JsonTablePath"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_table_path_), _Internal::kOneofCaseOffset + 0, 46, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonTablePathScan json_table_path_scan = 48 [json_name = "JsonTablePathScan"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_table_path_scan_), _Internal::kOneofCaseOffset + 0, 47, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonTableSiblingJoin json_table_sibling_join = 49 [json_name = "JsonTableSiblingJoin"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_table_sibling_join_), _Internal::kOneofCaseOffset + 0, 48, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.NullTest null_test = 50 [json_name = "NullTest"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.null_test_), _Internal::kOneofCaseOffset + 0, 49, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.BooleanTest boolean_test = 51 [json_name = "BooleanTest"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.boolean_test_), _Internal::kOneofCaseOffset + 0, 50, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.MergeAction merge_action = 52 [json_name = "MergeAction"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.merge_action_), _Internal::kOneofCaseOffset + 0, 51, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CoerceToDomain coerce_to_domain = 53 [json_name = "CoerceToDomain"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.coerce_to_domain_), _Internal::kOneofCaseOffset + 0, 52, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CoerceToDomainValue coerce_to_domain_value = 54 [json_name = "CoerceToDomainValue"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.coerce_to_domain_value_), _Internal::kOneofCaseOffset + 0, 53, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SetToDefault set_to_default = 55 [json_name = "SetToDefault"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.set_to_default_), _Internal::kOneofCaseOffset + 0, 54, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CurrentOfExpr current_of_expr = 56 [json_name = "CurrentOfExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.current_of_expr_), _Internal::kOneofCaseOffset + 0, 55, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.NextValueExpr next_value_expr = 57 [json_name = "NextValueExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.next_value_expr_), _Internal::kOneofCaseOffset + 0, 56, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.InferenceElem inference_elem = 58 [json_name = "InferenceElem"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.inference_elem_), _Internal::kOneofCaseOffset + 0, 57, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TargetEntry target_entry = 59 [json_name = "TargetEntry"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.target_entry_), _Internal::kOneofCaseOffset + 0, 58, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RangeTblRef range_tbl_ref = 60 [json_name = "RangeTblRef"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.range_tbl_ref_), _Internal::kOneofCaseOffset + 0, 59, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JoinExpr join_expr = 61 [json_name = "JoinExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.join_expr_), _Internal::kOneofCaseOffset + 0, 60, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.FromExpr from_expr = 62 [json_name = "FromExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.from_expr_), _Internal::kOneofCaseOffset + 0, 61, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.OnConflictExpr on_conflict_expr = 63 [json_name = "OnConflictExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.on_conflict_expr_), _Internal::kOneofCaseOffset + 0, 62, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Query query = 64 [json_name = "Query"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.query_), _Internal::kOneofCaseOffset + 0, 63, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TypeName type_name = 65 [json_name = "TypeName"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.type_name_), _Internal::kOneofCaseOffset + 0, 64, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ColumnRef column_ref = 66 [json_name = "ColumnRef"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.column_ref_), _Internal::kOneofCaseOffset + 0, 65, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ParamRef param_ref = 67 [json_name = "ParamRef"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.param_ref_), _Internal::kOneofCaseOffset + 0, 66, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.A_Expr a_expr = 68 [json_name = "A_Expr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.a_expr_), _Internal::kOneofCaseOffset + 0, 67, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TypeCast type_cast = 69 [json_name = "TypeCast"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.type_cast_), _Internal::kOneofCaseOffset + 0, 68, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CollateClause collate_clause = 70 [json_name = "CollateClause"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.collate_clause_), _Internal::kOneofCaseOffset + 0, 69, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RoleSpec role_spec = 71 [json_name = "RoleSpec"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.role_spec_), _Internal::kOneofCaseOffset + 0, 70, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.FuncCall func_call = 72 [json_name = "FuncCall"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.func_call_), _Internal::kOneofCaseOffset + 0, 71, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.A_Star a_star = 73 [json_name = "A_Star"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.a_star_), _Internal::kOneofCaseOffset + 0, 72, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvDefault)}, // .pg_query.A_Indices a_indices = 74 [json_name = "A_Indices"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.a_indices_), _Internal::kOneofCaseOffset + 0, 73, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.A_Indirection a_indirection = 75 [json_name = "A_Indirection"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.a_indirection_), _Internal::kOneofCaseOffset + 0, 74, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.A_ArrayExpr a_array_expr = 76 [json_name = "A_ArrayExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.a_array_expr_), _Internal::kOneofCaseOffset + 0, 75, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ResTarget res_target = 77 [json_name = "ResTarget"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.res_target_), _Internal::kOneofCaseOffset + 0, 76, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.MultiAssignRef multi_assign_ref = 78 [json_name = "MultiAssignRef"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.multi_assign_ref_), _Internal::kOneofCaseOffset + 0, 77, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SortBy sort_by = 79 [json_name = "SortBy"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.sort_by_), _Internal::kOneofCaseOffset + 0, 78, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.WindowDef window_def = 80 [json_name = "WindowDef"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.window_def_), _Internal::kOneofCaseOffset + 0, 79, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RangeSubselect range_subselect = 81 [json_name = "RangeSubselect"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.range_subselect_), _Internal::kOneofCaseOffset + 0, 80, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RangeFunction range_function = 82 [json_name = "RangeFunction"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.range_function_), _Internal::kOneofCaseOffset + 0, 81, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RangeTableFunc range_table_func = 83 [json_name = "RangeTableFunc"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.range_table_func_), _Internal::kOneofCaseOffset + 0, 82, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RangeTableFuncCol range_table_func_col = 84 [json_name = "RangeTableFuncCol"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.range_table_func_col_), _Internal::kOneofCaseOffset + 0, 83, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RangeTableSample range_table_sample = 85 [json_name = "RangeTableSample"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.range_table_sample_), _Internal::kOneofCaseOffset + 0, 84, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ColumnDef column_def = 86 [json_name = "ColumnDef"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.column_def_), _Internal::kOneofCaseOffset + 0, 85, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TableLikeClause table_like_clause = 87 [json_name = "TableLikeClause"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.table_like_clause_), _Internal::kOneofCaseOffset + 0, 86, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.IndexElem index_elem = 88 [json_name = "IndexElem"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.index_elem_), _Internal::kOneofCaseOffset + 0, 87, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DefElem def_elem = 89 [json_name = "DefElem"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.def_elem_), _Internal::kOneofCaseOffset + 0, 88, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.LockingClause locking_clause = 90 [json_name = "LockingClause"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.locking_clause_), _Internal::kOneofCaseOffset + 0, 89, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.XmlSerialize xml_serialize = 91 [json_name = "XmlSerialize"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.xml_serialize_), _Internal::kOneofCaseOffset + 0, 90, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.PartitionElem partition_elem = 92 [json_name = "PartitionElem"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.partition_elem_), _Internal::kOneofCaseOffset + 0, 91, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.PartitionSpec partition_spec = 93 [json_name = "PartitionSpec"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.partition_spec_), _Internal::kOneofCaseOffset + 0, 92, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.PartitionBoundSpec partition_bound_spec = 94 [json_name = "PartitionBoundSpec"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.partition_bound_spec_), _Internal::kOneofCaseOffset + 0, 93, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.PartitionRangeDatum partition_range_datum = 95 [json_name = "PartitionRangeDatum"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.partition_range_datum_), _Internal::kOneofCaseOffset + 0, 94, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SinglePartitionSpec single_partition_spec = 96 [json_name = "SinglePartitionSpec"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.single_partition_spec_), _Internal::kOneofCaseOffset + 0, 95, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvDefault)}, // .pg_query.PartitionCmd partition_cmd = 97 [json_name = "PartitionCmd"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.partition_cmd_), _Internal::kOneofCaseOffset + 0, 96, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RangeTblEntry range_tbl_entry = 98 [json_name = "RangeTblEntry"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.range_tbl_entry_), _Internal::kOneofCaseOffset + 0, 97, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RTEPermissionInfo rtepermission_info = 99 [json_name = "RTEPermissionInfo"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.rtepermission_info_), _Internal::kOneofCaseOffset + 0, 98, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RangeTblFunction range_tbl_function = 100 [json_name = "RangeTblFunction"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.range_tbl_function_), _Internal::kOneofCaseOffset + 0, 99, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TableSampleClause table_sample_clause = 101 [json_name = "TableSampleClause"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.table_sample_clause_), _Internal::kOneofCaseOffset + 0, 100, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.WithCheckOption with_check_option = 102 [json_name = "WithCheckOption"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.with_check_option_), _Internal::kOneofCaseOffset + 0, 101, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SortGroupClause sort_group_clause = 103 [json_name = "SortGroupClause"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.sort_group_clause_), _Internal::kOneofCaseOffset + 0, 102, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.GroupingSet grouping_set = 104 [json_name = "GroupingSet"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.grouping_set_), _Internal::kOneofCaseOffset + 0, 103, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.WindowClause window_clause = 105 [json_name = "WindowClause"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.window_clause_), _Internal::kOneofCaseOffset + 0, 104, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RowMarkClause row_mark_clause = 106 [json_name = "RowMarkClause"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.row_mark_clause_), _Internal::kOneofCaseOffset + 0, 105, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.WithClause with_clause = 107 [json_name = "WithClause"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.with_clause_), _Internal::kOneofCaseOffset + 0, 106, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.InferClause infer_clause = 108 [json_name = "InferClause"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.infer_clause_), _Internal::kOneofCaseOffset + 0, 107, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.OnConflictClause on_conflict_clause = 109 [json_name = "OnConflictClause"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.on_conflict_clause_), _Internal::kOneofCaseOffset + 0, 108, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CTESearchClause ctesearch_clause = 110 [json_name = "CTESearchClause"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.ctesearch_clause_), _Internal::kOneofCaseOffset + 0, 109, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CTECycleClause ctecycle_clause = 111 [json_name = "CTECycleClause"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.ctecycle_clause_), _Internal::kOneofCaseOffset + 0, 110, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CommonTableExpr common_table_expr = 112 [json_name = "CommonTableExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.common_table_expr_), _Internal::kOneofCaseOffset + 0, 111, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.MergeWhenClause merge_when_clause = 113 [json_name = "MergeWhenClause"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.merge_when_clause_), _Internal::kOneofCaseOffset + 0, 112, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TriggerTransition trigger_transition = 114 [json_name = "TriggerTransition"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.trigger_transition_), _Internal::kOneofCaseOffset + 0, 113, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonOutput json_output = 115 [json_name = "JsonOutput"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_output_), _Internal::kOneofCaseOffset + 0, 114, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonArgument json_argument = 116 [json_name = "JsonArgument"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_argument_), _Internal::kOneofCaseOffset + 0, 115, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonFuncExpr json_func_expr = 117 [json_name = "JsonFuncExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_func_expr_), _Internal::kOneofCaseOffset + 0, 116, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonTablePathSpec json_table_path_spec = 118 [json_name = "JsonTablePathSpec"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_table_path_spec_), _Internal::kOneofCaseOffset + 0, 117, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonTable json_table = 119 [json_name = "JsonTable"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_table_), _Internal::kOneofCaseOffset + 0, 118, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonTableColumn json_table_column = 120 [json_name = "JsonTableColumn"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_table_column_), _Internal::kOneofCaseOffset + 0, 119, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonKeyValue json_key_value = 121 [json_name = "JsonKeyValue"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_key_value_), _Internal::kOneofCaseOffset + 0, 120, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonParseExpr json_parse_expr = 122 [json_name = "JsonParseExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_parse_expr_), _Internal::kOneofCaseOffset + 0, 121, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonScalarExpr json_scalar_expr = 123 [json_name = "JsonScalarExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_scalar_expr_), _Internal::kOneofCaseOffset + 0, 122, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonSerializeExpr json_serialize_expr = 124 [json_name = "JsonSerializeExpr"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_serialize_expr_), _Internal::kOneofCaseOffset + 0, 123, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonObjectConstructor json_object_constructor = 125 [json_name = "JsonObjectConstructor"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_object_constructor_), _Internal::kOneofCaseOffset + 0, 124, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonArrayConstructor json_array_constructor = 126 [json_name = "JsonArrayConstructor"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_array_constructor_), _Internal::kOneofCaseOffset + 0, 125, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonArrayQueryConstructor json_array_query_constructor = 127 [json_name = "JsonArrayQueryConstructor"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_array_query_constructor_), _Internal::kOneofCaseOffset + 0, 126, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonAggConstructor json_agg_constructor = 128 [json_name = "JsonAggConstructor"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_agg_constructor_), _Internal::kOneofCaseOffset + 0, 127, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonObjectAgg json_object_agg = 129 [json_name = "JsonObjectAgg"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_object_agg_), _Internal::kOneofCaseOffset + 0, 128, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonArrayAgg json_array_agg = 130 [json_name = "JsonArrayAgg"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.json_array_agg_), _Internal::kOneofCaseOffset + 0, 129, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RawStmt raw_stmt = 131 [json_name = "RawStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.raw_stmt_), _Internal::kOneofCaseOffset + 0, 130, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.InsertStmt insert_stmt = 132 [json_name = "InsertStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.insert_stmt_), _Internal::kOneofCaseOffset + 0, 131, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DeleteStmt delete_stmt = 133 [json_name = "DeleteStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.delete_stmt_), _Internal::kOneofCaseOffset + 0, 132, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.UpdateStmt update_stmt = 134 [json_name = "UpdateStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.update_stmt_), _Internal::kOneofCaseOffset + 0, 133, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.MergeStmt merge_stmt = 135 [json_name = "MergeStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.merge_stmt_), _Internal::kOneofCaseOffset + 0, 134, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SelectStmt select_stmt = 136 [json_name = "SelectStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.select_stmt_), _Internal::kOneofCaseOffset + 0, 135, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SetOperationStmt set_operation_stmt = 137 [json_name = "SetOperationStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.set_operation_stmt_), _Internal::kOneofCaseOffset + 0, 136, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ReturnStmt return_stmt = 138 [json_name = "ReturnStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.return_stmt_), _Internal::kOneofCaseOffset + 0, 137, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.PLAssignStmt plassign_stmt = 139 [json_name = "PLAssignStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.plassign_stmt_), _Internal::kOneofCaseOffset + 0, 138, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateSchemaStmt create_schema_stmt = 140 [json_name = "CreateSchemaStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_schema_stmt_), _Internal::kOneofCaseOffset + 0, 139, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterTableStmt alter_table_stmt = 141 [json_name = "AlterTableStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_table_stmt_), _Internal::kOneofCaseOffset + 0, 140, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ReplicaIdentityStmt replica_identity_stmt = 142 [json_name = "ReplicaIdentityStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.replica_identity_stmt_), _Internal::kOneofCaseOffset + 0, 141, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterTableCmd alter_table_cmd = 143 [json_name = "AlterTableCmd"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_table_cmd_), _Internal::kOneofCaseOffset + 0, 142, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterCollationStmt alter_collation_stmt = 144 [json_name = "AlterCollationStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_collation_stmt_), _Internal::kOneofCaseOffset + 0, 143, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterDomainStmt alter_domain_stmt = 145 [json_name = "AlterDomainStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_domain_stmt_), _Internal::kOneofCaseOffset + 0, 144, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.GrantStmt grant_stmt = 146 [json_name = "GrantStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.grant_stmt_), _Internal::kOneofCaseOffset + 0, 145, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ObjectWithArgs object_with_args = 147 [json_name = "ObjectWithArgs"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.object_with_args_), _Internal::kOneofCaseOffset + 0, 146, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AccessPriv access_priv = 148 [json_name = "AccessPriv"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.access_priv_), _Internal::kOneofCaseOffset + 0, 147, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.GrantRoleStmt grant_role_stmt = 149 [json_name = "GrantRoleStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.grant_role_stmt_), _Internal::kOneofCaseOffset + 0, 148, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterDefaultPrivilegesStmt alter_default_privileges_stmt = 150 [json_name = "AlterDefaultPrivilegesStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_default_privileges_stmt_), _Internal::kOneofCaseOffset + 0, 149, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CopyStmt copy_stmt = 151 [json_name = "CopyStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.copy_stmt_), _Internal::kOneofCaseOffset + 0, 150, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.VariableSetStmt variable_set_stmt = 152 [json_name = "VariableSetStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.variable_set_stmt_), _Internal::kOneofCaseOffset + 0, 151, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.VariableShowStmt variable_show_stmt = 153 [json_name = "VariableShowStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.variable_show_stmt_), _Internal::kOneofCaseOffset + 0, 152, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateStmt create_stmt = 154 [json_name = "CreateStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_stmt_), _Internal::kOneofCaseOffset + 0, 153, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Constraint constraint = 155 [json_name = "Constraint"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.constraint_), _Internal::kOneofCaseOffset + 0, 154, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateTableSpaceStmt create_table_space_stmt = 156 [json_name = "CreateTableSpaceStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_table_space_stmt_), _Internal::kOneofCaseOffset + 0, 155, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DropTableSpaceStmt drop_table_space_stmt = 157 [json_name = "DropTableSpaceStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.drop_table_space_stmt_), _Internal::kOneofCaseOffset + 0, 156, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 158 [json_name = "AlterTableSpaceOptionsStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_table_space_options_stmt_), _Internal::kOneofCaseOffset + 0, 157, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterTableMoveAllStmt alter_table_move_all_stmt = 159 [json_name = "AlterTableMoveAllStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_table_move_all_stmt_), _Internal::kOneofCaseOffset + 0, 158, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateExtensionStmt create_extension_stmt = 160 [json_name = "CreateExtensionStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_extension_stmt_), _Internal::kOneofCaseOffset + 0, 159, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterExtensionStmt alter_extension_stmt = 161 [json_name = "AlterExtensionStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_extension_stmt_), _Internal::kOneofCaseOffset + 0, 160, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterExtensionContentsStmt alter_extension_contents_stmt = 162 [json_name = "AlterExtensionContentsStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_extension_contents_stmt_), _Internal::kOneofCaseOffset + 0, 161, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateFdwStmt create_fdw_stmt = 163 [json_name = "CreateFdwStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_fdw_stmt_), _Internal::kOneofCaseOffset + 0, 162, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterFdwStmt alter_fdw_stmt = 164 [json_name = "AlterFdwStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_fdw_stmt_), _Internal::kOneofCaseOffset + 0, 163, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateForeignServerStmt create_foreign_server_stmt = 165 [json_name = "CreateForeignServerStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_foreign_server_stmt_), _Internal::kOneofCaseOffset + 0, 164, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterForeignServerStmt alter_foreign_server_stmt = 166 [json_name = "AlterForeignServerStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_foreign_server_stmt_), _Internal::kOneofCaseOffset + 0, 165, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateForeignTableStmt create_foreign_table_stmt = 167 [json_name = "CreateForeignTableStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_foreign_table_stmt_), _Internal::kOneofCaseOffset + 0, 166, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateUserMappingStmt create_user_mapping_stmt = 168 [json_name = "CreateUserMappingStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_user_mapping_stmt_), _Internal::kOneofCaseOffset + 0, 167, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterUserMappingStmt alter_user_mapping_stmt = 169 [json_name = "AlterUserMappingStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_user_mapping_stmt_), _Internal::kOneofCaseOffset + 0, 168, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DropUserMappingStmt drop_user_mapping_stmt = 170 [json_name = "DropUserMappingStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.drop_user_mapping_stmt_), _Internal::kOneofCaseOffset + 0, 169, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ImportForeignSchemaStmt import_foreign_schema_stmt = 171 [json_name = "ImportForeignSchemaStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.import_foreign_schema_stmt_), _Internal::kOneofCaseOffset + 0, 170, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreatePolicyStmt create_policy_stmt = 172 [json_name = "CreatePolicyStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_policy_stmt_), _Internal::kOneofCaseOffset + 0, 171, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterPolicyStmt alter_policy_stmt = 173 [json_name = "AlterPolicyStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_policy_stmt_), _Internal::kOneofCaseOffset + 0, 172, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateAmStmt create_am_stmt = 174 [json_name = "CreateAmStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_am_stmt_), _Internal::kOneofCaseOffset + 0, 173, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateTrigStmt create_trig_stmt = 175 [json_name = "CreateTrigStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_trig_stmt_), _Internal::kOneofCaseOffset + 0, 174, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateEventTrigStmt create_event_trig_stmt = 176 [json_name = "CreateEventTrigStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_event_trig_stmt_), _Internal::kOneofCaseOffset + 0, 175, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterEventTrigStmt alter_event_trig_stmt = 177 [json_name = "AlterEventTrigStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_event_trig_stmt_), _Internal::kOneofCaseOffset + 0, 176, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreatePLangStmt create_plang_stmt = 178 [json_name = "CreatePLangStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_plang_stmt_), _Internal::kOneofCaseOffset + 0, 177, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateRoleStmt create_role_stmt = 179 [json_name = "CreateRoleStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_role_stmt_), _Internal::kOneofCaseOffset + 0, 178, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterRoleStmt alter_role_stmt = 180 [json_name = "AlterRoleStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_role_stmt_), _Internal::kOneofCaseOffset + 0, 179, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterRoleSetStmt alter_role_set_stmt = 181 [json_name = "AlterRoleSetStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_role_set_stmt_), _Internal::kOneofCaseOffset + 0, 180, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DropRoleStmt drop_role_stmt = 182 [json_name = "DropRoleStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.drop_role_stmt_), _Internal::kOneofCaseOffset + 0, 181, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateSeqStmt create_seq_stmt = 183 [json_name = "CreateSeqStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_seq_stmt_), _Internal::kOneofCaseOffset + 0, 182, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterSeqStmt alter_seq_stmt = 184 [json_name = "AlterSeqStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_seq_stmt_), _Internal::kOneofCaseOffset + 0, 183, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DefineStmt define_stmt = 185 [json_name = "DefineStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.define_stmt_), _Internal::kOneofCaseOffset + 0, 184, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateDomainStmt create_domain_stmt = 186 [json_name = "CreateDomainStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_domain_stmt_), _Internal::kOneofCaseOffset + 0, 185, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateOpClassStmt create_op_class_stmt = 187 [json_name = "CreateOpClassStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_op_class_stmt_), _Internal::kOneofCaseOffset + 0, 186, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateOpClassItem create_op_class_item = 188 [json_name = "CreateOpClassItem"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_op_class_item_), _Internal::kOneofCaseOffset + 0, 187, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateOpFamilyStmt create_op_family_stmt = 189 [json_name = "CreateOpFamilyStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_op_family_stmt_), _Internal::kOneofCaseOffset + 0, 188, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterOpFamilyStmt alter_op_family_stmt = 190 [json_name = "AlterOpFamilyStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_op_family_stmt_), _Internal::kOneofCaseOffset + 0, 189, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DropStmt drop_stmt = 191 [json_name = "DropStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.drop_stmt_), _Internal::kOneofCaseOffset + 0, 190, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TruncateStmt truncate_stmt = 192 [json_name = "TruncateStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.truncate_stmt_), _Internal::kOneofCaseOffset + 0, 191, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CommentStmt comment_stmt = 193 [json_name = "CommentStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.comment_stmt_), _Internal::kOneofCaseOffset + 0, 192, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SecLabelStmt sec_label_stmt = 194 [json_name = "SecLabelStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.sec_label_stmt_), _Internal::kOneofCaseOffset + 0, 193, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DeclareCursorStmt declare_cursor_stmt = 195 [json_name = "DeclareCursorStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.declare_cursor_stmt_), _Internal::kOneofCaseOffset + 0, 194, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ClosePortalStmt close_portal_stmt = 196 [json_name = "ClosePortalStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.close_portal_stmt_), _Internal::kOneofCaseOffset + 0, 195, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.FetchStmt fetch_stmt = 197 [json_name = "FetchStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.fetch_stmt_), _Internal::kOneofCaseOffset + 0, 196, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.IndexStmt index_stmt = 198 [json_name = "IndexStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.index_stmt_), _Internal::kOneofCaseOffset + 0, 197, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateStatsStmt create_stats_stmt = 199 [json_name = "CreateStatsStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_stats_stmt_), _Internal::kOneofCaseOffset + 0, 198, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.StatsElem stats_elem = 200 [json_name = "StatsElem"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.stats_elem_), _Internal::kOneofCaseOffset + 0, 199, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterStatsStmt alter_stats_stmt = 201 [json_name = "AlterStatsStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_stats_stmt_), _Internal::kOneofCaseOffset + 0, 200, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateFunctionStmt create_function_stmt = 202 [json_name = "CreateFunctionStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_function_stmt_), _Internal::kOneofCaseOffset + 0, 201, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.FunctionParameter function_parameter = 203 [json_name = "FunctionParameter"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.function_parameter_), _Internal::kOneofCaseOffset + 0, 202, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterFunctionStmt alter_function_stmt = 204 [json_name = "AlterFunctionStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_function_stmt_), _Internal::kOneofCaseOffset + 0, 203, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DoStmt do_stmt = 205 [json_name = "DoStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.do_stmt_), _Internal::kOneofCaseOffset + 0, 204, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.InlineCodeBlock inline_code_block = 206 [json_name = "InlineCodeBlock"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.inline_code_block_), _Internal::kOneofCaseOffset + 0, 205, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CallStmt call_stmt = 207 [json_name = "CallStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.call_stmt_), _Internal::kOneofCaseOffset + 0, 206, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CallContext call_context = 208 [json_name = "CallContext"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.call_context_), _Internal::kOneofCaseOffset + 0, 207, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RenameStmt rename_stmt = 209 [json_name = "RenameStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.rename_stmt_), _Internal::kOneofCaseOffset + 0, 208, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterObjectDependsStmt alter_object_depends_stmt = 210 [json_name = "AlterObjectDependsStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_object_depends_stmt_), _Internal::kOneofCaseOffset + 0, 209, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterObjectSchemaStmt alter_object_schema_stmt = 211 [json_name = "AlterObjectSchemaStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_object_schema_stmt_), _Internal::kOneofCaseOffset + 0, 210, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterOwnerStmt alter_owner_stmt = 212 [json_name = "AlterOwnerStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_owner_stmt_), _Internal::kOneofCaseOffset + 0, 211, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterOperatorStmt alter_operator_stmt = 213 [json_name = "AlterOperatorStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_operator_stmt_), _Internal::kOneofCaseOffset + 0, 212, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterTypeStmt alter_type_stmt = 214 [json_name = "AlterTypeStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_type_stmt_), _Internal::kOneofCaseOffset + 0, 213, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RuleStmt rule_stmt = 215 [json_name = "RuleStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.rule_stmt_), _Internal::kOneofCaseOffset + 0, 214, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.NotifyStmt notify_stmt = 216 [json_name = "NotifyStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.notify_stmt_), _Internal::kOneofCaseOffset + 0, 215, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ListenStmt listen_stmt = 217 [json_name = "ListenStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.listen_stmt_), _Internal::kOneofCaseOffset + 0, 216, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.UnlistenStmt unlisten_stmt = 218 [json_name = "UnlistenStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.unlisten_stmt_), _Internal::kOneofCaseOffset + 0, 217, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TransactionStmt transaction_stmt = 219 [json_name = "TransactionStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.transaction_stmt_), _Internal::kOneofCaseOffset + 0, 218, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CompositeTypeStmt composite_type_stmt = 220 [json_name = "CompositeTypeStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.composite_type_stmt_), _Internal::kOneofCaseOffset + 0, 219, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateEnumStmt create_enum_stmt = 221 [json_name = "CreateEnumStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_enum_stmt_), _Internal::kOneofCaseOffset + 0, 220, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateRangeStmt create_range_stmt = 222 [json_name = "CreateRangeStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_range_stmt_), _Internal::kOneofCaseOffset + 0, 221, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterEnumStmt alter_enum_stmt = 223 [json_name = "AlterEnumStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_enum_stmt_), _Internal::kOneofCaseOffset + 0, 222, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ViewStmt view_stmt = 224 [json_name = "ViewStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.view_stmt_), _Internal::kOneofCaseOffset + 0, 223, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.LoadStmt load_stmt = 225 [json_name = "LoadStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.load_stmt_), _Internal::kOneofCaseOffset + 0, 224, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreatedbStmt createdb_stmt = 226 [json_name = "CreatedbStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.createdb_stmt_), _Internal::kOneofCaseOffset + 0, 225, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterDatabaseStmt alter_database_stmt = 227 [json_name = "AlterDatabaseStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_database_stmt_), _Internal::kOneofCaseOffset + 0, 226, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterDatabaseRefreshCollStmt alter_database_refresh_coll_stmt = 228 [json_name = "AlterDatabaseRefreshCollStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_database_refresh_coll_stmt_), _Internal::kOneofCaseOffset + 0, 227, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterDatabaseSetStmt alter_database_set_stmt = 229 [json_name = "AlterDatabaseSetStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_database_set_stmt_), _Internal::kOneofCaseOffset + 0, 228, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DropdbStmt dropdb_stmt = 230 [json_name = "DropdbStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.dropdb_stmt_), _Internal::kOneofCaseOffset + 0, 229, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterSystemStmt alter_system_stmt = 231 [json_name = "AlterSystemStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_system_stmt_), _Internal::kOneofCaseOffset + 0, 230, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ClusterStmt cluster_stmt = 232 [json_name = "ClusterStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.cluster_stmt_), _Internal::kOneofCaseOffset + 0, 231, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.VacuumStmt vacuum_stmt = 233 [json_name = "VacuumStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.vacuum_stmt_), _Internal::kOneofCaseOffset + 0, 232, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.VacuumRelation vacuum_relation = 234 [json_name = "VacuumRelation"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.vacuum_relation_), _Internal::kOneofCaseOffset + 0, 233, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ExplainStmt explain_stmt = 235 [json_name = "ExplainStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.explain_stmt_), _Internal::kOneofCaseOffset + 0, 234, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateTableAsStmt create_table_as_stmt = 236 [json_name = "CreateTableAsStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_table_as_stmt_), _Internal::kOneofCaseOffset + 0, 235, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RefreshMatViewStmt refresh_mat_view_stmt = 237 [json_name = "RefreshMatViewStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.refresh_mat_view_stmt_), _Internal::kOneofCaseOffset + 0, 236, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CheckPointStmt check_point_stmt = 238 [json_name = "CheckPointStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.check_point_stmt_), _Internal::kOneofCaseOffset + 0, 237, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvDefault)}, // .pg_query.DiscardStmt discard_stmt = 239 [json_name = "DiscardStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.discard_stmt_), _Internal::kOneofCaseOffset + 0, 238, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.LockStmt lock_stmt = 240 [json_name = "LockStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.lock_stmt_), _Internal::kOneofCaseOffset + 0, 239, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ConstraintsSetStmt constraints_set_stmt = 241 [json_name = "ConstraintsSetStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.constraints_set_stmt_), _Internal::kOneofCaseOffset + 0, 240, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ReindexStmt reindex_stmt = 242 [json_name = "ReindexStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.reindex_stmt_), _Internal::kOneofCaseOffset + 0, 241, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateConversionStmt create_conversion_stmt = 243 [json_name = "CreateConversionStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_conversion_stmt_), _Internal::kOneofCaseOffset + 0, 242, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateCastStmt create_cast_stmt = 244 [json_name = "CreateCastStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_cast_stmt_), _Internal::kOneofCaseOffset + 0, 243, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateTransformStmt create_transform_stmt = 245 [json_name = "CreateTransformStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_transform_stmt_), _Internal::kOneofCaseOffset + 0, 244, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.PrepareStmt prepare_stmt = 246 [json_name = "PrepareStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.prepare_stmt_), _Internal::kOneofCaseOffset + 0, 245, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ExecuteStmt execute_stmt = 247 [json_name = "ExecuteStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.execute_stmt_), _Internal::kOneofCaseOffset + 0, 246, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DeallocateStmt deallocate_stmt = 248 [json_name = "DeallocateStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.deallocate_stmt_), _Internal::kOneofCaseOffset + 0, 247, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DropOwnedStmt drop_owned_stmt = 249 [json_name = "DropOwnedStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.drop_owned_stmt_), _Internal::kOneofCaseOffset + 0, 248, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ReassignOwnedStmt reassign_owned_stmt = 250 [json_name = "ReassignOwnedStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.reassign_owned_stmt_), _Internal::kOneofCaseOffset + 0, 249, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterTSDictionaryStmt alter_tsdictionary_stmt = 251 [json_name = "AlterTSDictionaryStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_tsdictionary_stmt_), _Internal::kOneofCaseOffset + 0, 250, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterTSConfigurationStmt alter_tsconfiguration_stmt = 252 [json_name = "AlterTSConfigurationStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_tsconfiguration_stmt_), _Internal::kOneofCaseOffset + 0, 251, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.PublicationTable publication_table = 253 [json_name = "PublicationTable"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.publication_table_), _Internal::kOneofCaseOffset + 0, 252, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.PublicationObjSpec publication_obj_spec = 254 [json_name = "PublicationObjSpec"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.publication_obj_spec_), _Internal::kOneofCaseOffset + 0, 253, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreatePublicationStmt create_publication_stmt = 255 [json_name = "CreatePublicationStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_publication_stmt_), _Internal::kOneofCaseOffset + 0, 254, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterPublicationStmt alter_publication_stmt = 256 [json_name = "AlterPublicationStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_publication_stmt_), _Internal::kOneofCaseOffset + 0, 255, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CreateSubscriptionStmt create_subscription_stmt = 257 [json_name = "CreateSubscriptionStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.create_subscription_stmt_), _Internal::kOneofCaseOffset + 0, 256, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.AlterSubscriptionStmt alter_subscription_stmt = 258 [json_name = "AlterSubscriptionStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.alter_subscription_stmt_), _Internal::kOneofCaseOffset + 0, 257, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DropSubscriptionStmt drop_subscription_stmt = 259 [json_name = "DropSubscriptionStmt"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.drop_subscription_stmt_), _Internal::kOneofCaseOffset + 0, 258, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Integer integer = 260 [json_name = "Integer"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.integer_), _Internal::kOneofCaseOffset + 0, 259, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Float float = 261 [json_name = "Float"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.float__), _Internal::kOneofCaseOffset + 0, 260, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Boolean boolean = 262 [json_name = "Boolean"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.boolean_), _Internal::kOneofCaseOffset + 0, 261, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.String string = 263 [json_name = "String"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.string_), _Internal::kOneofCaseOffset + 0, 262, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.BitString bit_string = 264 [json_name = "BitString"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.bit_string_), _Internal::kOneofCaseOffset + 0, 263, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.List list = 265 [json_name = "List"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.list_), _Internal::kOneofCaseOffset + 0, 264, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.IntList int_list = 266 [json_name = "IntList"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.int_list_), _Internal::kOneofCaseOffset + 0, 265, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.OidList oid_list = 267 [json_name = "OidList"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.oid_list_), _Internal::kOneofCaseOffset + 0, 266, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.A_Const a_const = 268 [json_name = "A_Const"]; {PROTOBUF_FIELD_OFFSET(Node, _impl_.node_.a_const_), _Internal::kOneofCaseOffset + 0, 267, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Alias>()}, {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::TableFunc>()}, {::_pbi::TcParser::GetTable<::pg_query::IntoClause>()}, {::_pbi::TcParser::GetTable<::pg_query::Var>()}, {::_pbi::TcParser::GetTable<::pg_query::Param>()}, {::_pbi::TcParser::GetTable<::pg_query::Aggref>()}, {::_pbi::TcParser::GetTable<::pg_query::GroupingFunc>()}, {::_pbi::TcParser::GetTable<::pg_query::WindowFunc>()}, {::_pbi::TcParser::GetTable<::pg_query::WindowFuncRunCondition>()}, {::_pbi::TcParser::GetTable<::pg_query::MergeSupportFunc>()}, {::_pbi::TcParser::GetTable<::pg_query::SubscriptingRef>()}, {::_pbi::TcParser::GetTable<::pg_query::FuncExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::NamedArgExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::OpExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::DistinctExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::NullIfExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::ScalarArrayOpExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::BoolExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::SubLink>()}, {::_pbi::TcParser::GetTable<::pg_query::SubPlan>()}, {::_pbi::TcParser::GetTable<::pg_query::AlternativeSubPlan>()}, {::_pbi::TcParser::GetTable<::pg_query::FieldSelect>()}, {::_pbi::TcParser::GetTable<::pg_query::FieldStore>()}, {::_pbi::TcParser::GetTable<::pg_query::RelabelType>()}, {::_pbi::TcParser::GetTable<::pg_query::CoerceViaIO>()}, {::_pbi::TcParser::GetTable<::pg_query::ArrayCoerceExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::ConvertRowtypeExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::CollateExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::CaseExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::CaseWhen>()}, {::_pbi::TcParser::GetTable<::pg_query::CaseTestExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::ArrayExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::RowExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::RowCompareExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::CoalesceExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::MinMaxExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::SQLValueFunction>()}, {::_pbi::TcParser::GetTable<::pg_query::XmlExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonFormat>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonReturning>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonValueExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonConstructorExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonIsPredicate>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonBehavior>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonTablePath>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonTablePathScan>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonTableSiblingJoin>()}, {::_pbi::TcParser::GetTable<::pg_query::NullTest>()}, {::_pbi::TcParser::GetTable<::pg_query::BooleanTest>()}, {::_pbi::TcParser::GetTable<::pg_query::MergeAction>()}, {::_pbi::TcParser::GetTable<::pg_query::CoerceToDomain>()}, {::_pbi::TcParser::GetTable<::pg_query::CoerceToDomainValue>()}, {::_pbi::TcParser::GetTable<::pg_query::SetToDefault>()}, {::_pbi::TcParser::GetTable<::pg_query::CurrentOfExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::NextValueExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::InferenceElem>()}, {::_pbi::TcParser::GetTable<::pg_query::TargetEntry>()}, {::_pbi::TcParser::GetTable<::pg_query::RangeTblRef>()}, {::_pbi::TcParser::GetTable<::pg_query::JoinExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::FromExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::OnConflictExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::Query>()}, {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, {::_pbi::TcParser::GetTable<::pg_query::ColumnRef>()}, {::_pbi::TcParser::GetTable<::pg_query::ParamRef>()}, {::_pbi::TcParser::GetTable<::pg_query::A_Expr>()}, {::_pbi::TcParser::GetTable<::pg_query::TypeCast>()}, {::_pbi::TcParser::GetTable<::pg_query::CollateClause>()}, {::_pbi::TcParser::GetTable<::pg_query::RoleSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::FuncCall>()}, {::_pbi::FieldAuxDefaultMessage{}, &::pg_query::_A_Star_default_instance_}, {::_pbi::TcParser::GetTable<::pg_query::A_Indices>()}, {::_pbi::TcParser::GetTable<::pg_query::A_Indirection>()}, {::_pbi::TcParser::GetTable<::pg_query::A_ArrayExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::ResTarget>()}, {::_pbi::TcParser::GetTable<::pg_query::MultiAssignRef>()}, {::_pbi::TcParser::GetTable<::pg_query::SortBy>()}, {::_pbi::TcParser::GetTable<::pg_query::WindowDef>()}, {::_pbi::TcParser::GetTable<::pg_query::RangeSubselect>()}, {::_pbi::TcParser::GetTable<::pg_query::RangeFunction>()}, {::_pbi::TcParser::GetTable<::pg_query::RangeTableFunc>()}, {::_pbi::TcParser::GetTable<::pg_query::RangeTableFuncCol>()}, {::_pbi::TcParser::GetTable<::pg_query::RangeTableSample>()}, {::_pbi::TcParser::GetTable<::pg_query::ColumnDef>()}, {::_pbi::TcParser::GetTable<::pg_query::TableLikeClause>()}, {::_pbi::TcParser::GetTable<::pg_query::IndexElem>()}, {::_pbi::TcParser::GetTable<::pg_query::DefElem>()}, {::_pbi::TcParser::GetTable<::pg_query::LockingClause>()}, {::_pbi::TcParser::GetTable<::pg_query::XmlSerialize>()}, {::_pbi::TcParser::GetTable<::pg_query::PartitionElem>()}, {::_pbi::TcParser::GetTable<::pg_query::PartitionSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::PartitionBoundSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::PartitionRangeDatum>()}, {::_pbi::FieldAuxDefaultMessage{}, &::pg_query::_SinglePartitionSpec_default_instance_}, {::_pbi::TcParser::GetTable<::pg_query::PartitionCmd>()}, {::_pbi::TcParser::GetTable<::pg_query::RangeTblEntry>()}, {::_pbi::TcParser::GetTable<::pg_query::RTEPermissionInfo>()}, {::_pbi::TcParser::GetTable<::pg_query::RangeTblFunction>()}, {::_pbi::TcParser::GetTable<::pg_query::TableSampleClause>()}, {::_pbi::TcParser::GetTable<::pg_query::WithCheckOption>()}, {::_pbi::TcParser::GetTable<::pg_query::SortGroupClause>()}, {::_pbi::TcParser::GetTable<::pg_query::GroupingSet>()}, {::_pbi::TcParser::GetTable<::pg_query::WindowClause>()}, {::_pbi::TcParser::GetTable<::pg_query::RowMarkClause>()}, {::_pbi::TcParser::GetTable<::pg_query::WithClause>()}, {::_pbi::TcParser::GetTable<::pg_query::InferClause>()}, {::_pbi::TcParser::GetTable<::pg_query::OnConflictClause>()}, {::_pbi::TcParser::GetTable<::pg_query::CTESearchClause>()}, {::_pbi::TcParser::GetTable<::pg_query::CTECycleClause>()}, {::_pbi::TcParser::GetTable<::pg_query::CommonTableExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::MergeWhenClause>()}, {::_pbi::TcParser::GetTable<::pg_query::TriggerTransition>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonOutput>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonArgument>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonFuncExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonTablePathSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonTable>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonTableColumn>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonKeyValue>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonParseExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonScalarExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonSerializeExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonObjectConstructor>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonArrayConstructor>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonArrayQueryConstructor>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonAggConstructor>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonObjectAgg>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonArrayAgg>()}, {::_pbi::TcParser::GetTable<::pg_query::RawStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::InsertStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::DeleteStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::UpdateStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::MergeStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::SelectStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::SetOperationStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::ReturnStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::PLAssignStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateSchemaStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterTableStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::ReplicaIdentityStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterTableCmd>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterCollationStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterDomainStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::GrantStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::ObjectWithArgs>()}, {::_pbi::TcParser::GetTable<::pg_query::AccessPriv>()}, {::_pbi::TcParser::GetTable<::pg_query::GrantRoleStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterDefaultPrivilegesStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CopyStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::VariableSetStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::VariableShowStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::Constraint>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateTableSpaceStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::DropTableSpaceStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterTableSpaceOptionsStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterTableMoveAllStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateExtensionStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterExtensionStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterExtensionContentsStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateFdwStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterFdwStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateForeignServerStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterForeignServerStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateForeignTableStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateUserMappingStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterUserMappingStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::DropUserMappingStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::ImportForeignSchemaStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreatePolicyStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterPolicyStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateAmStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateTrigStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateEventTrigStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterEventTrigStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreatePLangStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateRoleStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterRoleStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterRoleSetStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::DropRoleStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateSeqStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterSeqStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::DefineStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateDomainStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateOpClassStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateOpClassItem>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateOpFamilyStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterOpFamilyStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::DropStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::TruncateStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CommentStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::SecLabelStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::DeclareCursorStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::ClosePortalStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::FetchStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::IndexStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateStatsStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::StatsElem>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterStatsStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateFunctionStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::FunctionParameter>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterFunctionStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::DoStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::InlineCodeBlock>()}, {::_pbi::TcParser::GetTable<::pg_query::CallStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CallContext>()}, {::_pbi::TcParser::GetTable<::pg_query::RenameStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterObjectDependsStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterObjectSchemaStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterOwnerStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterOperatorStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterTypeStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::RuleStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::NotifyStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::ListenStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::UnlistenStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::TransactionStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CompositeTypeStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateEnumStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateRangeStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterEnumStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::ViewStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::LoadStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreatedbStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterDatabaseStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterDatabaseRefreshCollStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterDatabaseSetStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::DropdbStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterSystemStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::ClusterStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::VacuumStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::VacuumRelation>()}, {::_pbi::TcParser::GetTable<::pg_query::ExplainStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateTableAsStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::RefreshMatViewStmt>()}, {::_pbi::FieldAuxDefaultMessage{}, &::pg_query::_CheckPointStmt_default_instance_}, {::_pbi::TcParser::GetTable<::pg_query::DiscardStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::LockStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::ConstraintsSetStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::ReindexStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateConversionStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateCastStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateTransformStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::PrepareStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::ExecuteStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::DeallocateStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::DropOwnedStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::ReassignOwnedStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterTSDictionaryStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterTSConfigurationStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::PublicationTable>()}, {::_pbi::TcParser::GetTable<::pg_query::PublicationObjSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::CreatePublicationStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterPublicationStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::CreateSubscriptionStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::AlterSubscriptionStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::DropSubscriptionStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::Integer>()}, {::_pbi::TcParser::GetTable<::pg_query::Float>()}, {::_pbi::TcParser::GetTable<::pg_query::Boolean>()}, {::_pbi::TcParser::GetTable<::pg_query::String>()}, {::_pbi::TcParser::GetTable<::pg_query::BitString>()}, {::_pbi::TcParser::GetTable<::pg_query::List>()}, {::_pbi::TcParser::GetTable<::pg_query::IntList>()}, {::_pbi::TcParser::GetTable<::pg_query::OidList>()}, {::_pbi::TcParser::GetTable<::pg_query::A_Const>()}, }}, {{ }}, }; ::uint8_t* Node::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Node) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; switch (node_case()) { case kAlias: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::alias(this), _Internal::alias(this).GetCachedSize(), target, stream); break; } case kRangeVar: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::range_var(this), _Internal::range_var(this).GetCachedSize(), target, stream); break; } case kTableFunc: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::table_func(this), _Internal::table_func(this).GetCachedSize(), target, stream); break; } case kIntoClause: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::into_clause(this), _Internal::into_clause(this).GetCachedSize(), target, stream); break; } case kVar: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::var(this), _Internal::var(this).GetCachedSize(), target, stream); break; } case kParam: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::param(this), _Internal::param(this).GetCachedSize(), target, stream); break; } case kAggref: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 7, _Internal::aggref(this), _Internal::aggref(this).GetCachedSize(), target, stream); break; } case kGroupingFunc: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 8, _Internal::grouping_func(this), _Internal::grouping_func(this).GetCachedSize(), target, stream); break; } case kWindowFunc: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 9, _Internal::window_func(this), _Internal::window_func(this).GetCachedSize(), target, stream); break; } case kWindowFuncRunCondition: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 10, _Internal::window_func_run_condition(this), _Internal::window_func_run_condition(this).GetCachedSize(), target, stream); break; } case kMergeSupportFunc: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 11, _Internal::merge_support_func(this), _Internal::merge_support_func(this).GetCachedSize(), target, stream); break; } case kSubscriptingRef: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 12, _Internal::subscripting_ref(this), _Internal::subscripting_ref(this).GetCachedSize(), target, stream); break; } case kFuncExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 13, _Internal::func_expr(this), _Internal::func_expr(this).GetCachedSize(), target, stream); break; } case kNamedArgExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 14, _Internal::named_arg_expr(this), _Internal::named_arg_expr(this).GetCachedSize(), target, stream); break; } case kOpExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 15, _Internal::op_expr(this), _Internal::op_expr(this).GetCachedSize(), target, stream); break; } case kDistinctExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 16, _Internal::distinct_expr(this), _Internal::distinct_expr(this).GetCachedSize(), target, stream); break; } case kNullIfExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 17, _Internal::null_if_expr(this), _Internal::null_if_expr(this).GetCachedSize(), target, stream); break; } case kScalarArrayOpExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 18, _Internal::scalar_array_op_expr(this), _Internal::scalar_array_op_expr(this).GetCachedSize(), target, stream); break; } case kBoolExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 19, _Internal::bool_expr(this), _Internal::bool_expr(this).GetCachedSize(), target, stream); break; } case kSubLink: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 20, _Internal::sub_link(this), _Internal::sub_link(this).GetCachedSize(), target, stream); break; } case kSubPlan: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 21, _Internal::sub_plan(this), _Internal::sub_plan(this).GetCachedSize(), target, stream); break; } case kAlternativeSubPlan: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 22, _Internal::alternative_sub_plan(this), _Internal::alternative_sub_plan(this).GetCachedSize(), target, stream); break; } case kFieldSelect: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 23, _Internal::field_select(this), _Internal::field_select(this).GetCachedSize(), target, stream); break; } case kFieldStore: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 24, _Internal::field_store(this), _Internal::field_store(this).GetCachedSize(), target, stream); break; } case kRelabelType: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 25, _Internal::relabel_type(this), _Internal::relabel_type(this).GetCachedSize(), target, stream); break; } case kCoerceViaIo: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 26, _Internal::coerce_via_io(this), _Internal::coerce_via_io(this).GetCachedSize(), target, stream); break; } case kArrayCoerceExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 27, _Internal::array_coerce_expr(this), _Internal::array_coerce_expr(this).GetCachedSize(), target, stream); break; } case kConvertRowtypeExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 28, _Internal::convert_rowtype_expr(this), _Internal::convert_rowtype_expr(this).GetCachedSize(), target, stream); break; } case kCollateExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 29, _Internal::collate_expr(this), _Internal::collate_expr(this).GetCachedSize(), target, stream); break; } case kCaseExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 30, _Internal::case_expr(this), _Internal::case_expr(this).GetCachedSize(), target, stream); break; } case kCaseWhen: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 31, _Internal::case_when(this), _Internal::case_when(this).GetCachedSize(), target, stream); break; } case kCaseTestExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 32, _Internal::case_test_expr(this), _Internal::case_test_expr(this).GetCachedSize(), target, stream); break; } case kArrayExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 33, _Internal::array_expr(this), _Internal::array_expr(this).GetCachedSize(), target, stream); break; } case kRowExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 34, _Internal::row_expr(this), _Internal::row_expr(this).GetCachedSize(), target, stream); break; } case kRowCompareExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 35, _Internal::row_compare_expr(this), _Internal::row_compare_expr(this).GetCachedSize(), target, stream); break; } case kCoalesceExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 36, _Internal::coalesce_expr(this), _Internal::coalesce_expr(this).GetCachedSize(), target, stream); break; } case kMinMaxExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 37, _Internal::min_max_expr(this), _Internal::min_max_expr(this).GetCachedSize(), target, stream); break; } case kSqlvalueFunction: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 38, _Internal::sqlvalue_function(this), _Internal::sqlvalue_function(this).GetCachedSize(), target, stream); break; } case kXmlExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 39, _Internal::xml_expr(this), _Internal::xml_expr(this).GetCachedSize(), target, stream); break; } case kJsonFormat: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 40, _Internal::json_format(this), _Internal::json_format(this).GetCachedSize(), target, stream); break; } case kJsonReturning: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 41, _Internal::json_returning(this), _Internal::json_returning(this).GetCachedSize(), target, stream); break; } case kJsonValueExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 42, _Internal::json_value_expr(this), _Internal::json_value_expr(this).GetCachedSize(), target, stream); break; } case kJsonConstructorExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 43, _Internal::json_constructor_expr(this), _Internal::json_constructor_expr(this).GetCachedSize(), target, stream); break; } case kJsonIsPredicate: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 44, _Internal::json_is_predicate(this), _Internal::json_is_predicate(this).GetCachedSize(), target, stream); break; } case kJsonBehavior: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 45, _Internal::json_behavior(this), _Internal::json_behavior(this).GetCachedSize(), target, stream); break; } case kJsonExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 46, _Internal::json_expr(this), _Internal::json_expr(this).GetCachedSize(), target, stream); break; } case kJsonTablePath: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 47, _Internal::json_table_path(this), _Internal::json_table_path(this).GetCachedSize(), target, stream); break; } case kJsonTablePathScan: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 48, _Internal::json_table_path_scan(this), _Internal::json_table_path_scan(this).GetCachedSize(), target, stream); break; } case kJsonTableSiblingJoin: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 49, _Internal::json_table_sibling_join(this), _Internal::json_table_sibling_join(this).GetCachedSize(), target, stream); break; } case kNullTest: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 50, _Internal::null_test(this), _Internal::null_test(this).GetCachedSize(), target, stream); break; } case kBooleanTest: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 51, _Internal::boolean_test(this), _Internal::boolean_test(this).GetCachedSize(), target, stream); break; } case kMergeAction: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 52, _Internal::merge_action(this), _Internal::merge_action(this).GetCachedSize(), target, stream); break; } case kCoerceToDomain: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 53, _Internal::coerce_to_domain(this), _Internal::coerce_to_domain(this).GetCachedSize(), target, stream); break; } case kCoerceToDomainValue: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 54, _Internal::coerce_to_domain_value(this), _Internal::coerce_to_domain_value(this).GetCachedSize(), target, stream); break; } case kSetToDefault: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 55, _Internal::set_to_default(this), _Internal::set_to_default(this).GetCachedSize(), target, stream); break; } case kCurrentOfExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 56, _Internal::current_of_expr(this), _Internal::current_of_expr(this).GetCachedSize(), target, stream); break; } case kNextValueExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 57, _Internal::next_value_expr(this), _Internal::next_value_expr(this).GetCachedSize(), target, stream); break; } case kInferenceElem: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 58, _Internal::inference_elem(this), _Internal::inference_elem(this).GetCachedSize(), target, stream); break; } case kTargetEntry: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 59, _Internal::target_entry(this), _Internal::target_entry(this).GetCachedSize(), target, stream); break; } case kRangeTblRef: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 60, _Internal::range_tbl_ref(this), _Internal::range_tbl_ref(this).GetCachedSize(), target, stream); break; } case kJoinExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 61, _Internal::join_expr(this), _Internal::join_expr(this).GetCachedSize(), target, stream); break; } case kFromExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 62, _Internal::from_expr(this), _Internal::from_expr(this).GetCachedSize(), target, stream); break; } case kOnConflictExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 63, _Internal::on_conflict_expr(this), _Internal::on_conflict_expr(this).GetCachedSize(), target, stream); break; } case kQuery: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 64, _Internal::query(this), _Internal::query(this).GetCachedSize(), target, stream); break; } case kTypeName: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 65, _Internal::type_name(this), _Internal::type_name(this).GetCachedSize(), target, stream); break; } case kColumnRef: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 66, _Internal::column_ref(this), _Internal::column_ref(this).GetCachedSize(), target, stream); break; } case kParamRef: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 67, _Internal::param_ref(this), _Internal::param_ref(this).GetCachedSize(), target, stream); break; } case kAExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 68, _Internal::a_expr(this), _Internal::a_expr(this).GetCachedSize(), target, stream); break; } case kTypeCast: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 69, _Internal::type_cast(this), _Internal::type_cast(this).GetCachedSize(), target, stream); break; } case kCollateClause: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 70, _Internal::collate_clause(this), _Internal::collate_clause(this).GetCachedSize(), target, stream); break; } case kRoleSpec: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 71, _Internal::role_spec(this), _Internal::role_spec(this).GetCachedSize(), target, stream); break; } case kFuncCall: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 72, _Internal::func_call(this), _Internal::func_call(this).GetCachedSize(), target, stream); break; } case kAStar: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 73, _Internal::a_star(this), _Internal::a_star(this).GetCachedSize(), target, stream); break; } case kAIndices: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 74, _Internal::a_indices(this), _Internal::a_indices(this).GetCachedSize(), target, stream); break; } case kAIndirection: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 75, _Internal::a_indirection(this), _Internal::a_indirection(this).GetCachedSize(), target, stream); break; } case kAArrayExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 76, _Internal::a_array_expr(this), _Internal::a_array_expr(this).GetCachedSize(), target, stream); break; } case kResTarget: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 77, _Internal::res_target(this), _Internal::res_target(this).GetCachedSize(), target, stream); break; } case kMultiAssignRef: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 78, _Internal::multi_assign_ref(this), _Internal::multi_assign_ref(this).GetCachedSize(), target, stream); break; } case kSortBy: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 79, _Internal::sort_by(this), _Internal::sort_by(this).GetCachedSize(), target, stream); break; } case kWindowDef: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 80, _Internal::window_def(this), _Internal::window_def(this).GetCachedSize(), target, stream); break; } case kRangeSubselect: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 81, _Internal::range_subselect(this), _Internal::range_subselect(this).GetCachedSize(), target, stream); break; } case kRangeFunction: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 82, _Internal::range_function(this), _Internal::range_function(this).GetCachedSize(), target, stream); break; } case kRangeTableFunc: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 83, _Internal::range_table_func(this), _Internal::range_table_func(this).GetCachedSize(), target, stream); break; } case kRangeTableFuncCol: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 84, _Internal::range_table_func_col(this), _Internal::range_table_func_col(this).GetCachedSize(), target, stream); break; } case kRangeTableSample: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 85, _Internal::range_table_sample(this), _Internal::range_table_sample(this).GetCachedSize(), target, stream); break; } case kColumnDef: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 86, _Internal::column_def(this), _Internal::column_def(this).GetCachedSize(), target, stream); break; } case kTableLikeClause: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 87, _Internal::table_like_clause(this), _Internal::table_like_clause(this).GetCachedSize(), target, stream); break; } case kIndexElem: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 88, _Internal::index_elem(this), _Internal::index_elem(this).GetCachedSize(), target, stream); break; } case kDefElem: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 89, _Internal::def_elem(this), _Internal::def_elem(this).GetCachedSize(), target, stream); break; } case kLockingClause: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 90, _Internal::locking_clause(this), _Internal::locking_clause(this).GetCachedSize(), target, stream); break; } case kXmlSerialize: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 91, _Internal::xml_serialize(this), _Internal::xml_serialize(this).GetCachedSize(), target, stream); break; } case kPartitionElem: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 92, _Internal::partition_elem(this), _Internal::partition_elem(this).GetCachedSize(), target, stream); break; } case kPartitionSpec: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 93, _Internal::partition_spec(this), _Internal::partition_spec(this).GetCachedSize(), target, stream); break; } case kPartitionBoundSpec: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 94, _Internal::partition_bound_spec(this), _Internal::partition_bound_spec(this).GetCachedSize(), target, stream); break; } case kPartitionRangeDatum: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 95, _Internal::partition_range_datum(this), _Internal::partition_range_datum(this).GetCachedSize(), target, stream); break; } case kSinglePartitionSpec: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 96, _Internal::single_partition_spec(this), _Internal::single_partition_spec(this).GetCachedSize(), target, stream); break; } case kPartitionCmd: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 97, _Internal::partition_cmd(this), _Internal::partition_cmd(this).GetCachedSize(), target, stream); break; } case kRangeTblEntry: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 98, _Internal::range_tbl_entry(this), _Internal::range_tbl_entry(this).GetCachedSize(), target, stream); break; } case kRtepermissionInfo: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 99, _Internal::rtepermission_info(this), _Internal::rtepermission_info(this).GetCachedSize(), target, stream); break; } case kRangeTblFunction: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 100, _Internal::range_tbl_function(this), _Internal::range_tbl_function(this).GetCachedSize(), target, stream); break; } case kTableSampleClause: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 101, _Internal::table_sample_clause(this), _Internal::table_sample_clause(this).GetCachedSize(), target, stream); break; } case kWithCheckOption: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 102, _Internal::with_check_option(this), _Internal::with_check_option(this).GetCachedSize(), target, stream); break; } case kSortGroupClause: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 103, _Internal::sort_group_clause(this), _Internal::sort_group_clause(this).GetCachedSize(), target, stream); break; } case kGroupingSet: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 104, _Internal::grouping_set(this), _Internal::grouping_set(this).GetCachedSize(), target, stream); break; } case kWindowClause: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 105, _Internal::window_clause(this), _Internal::window_clause(this).GetCachedSize(), target, stream); break; } case kRowMarkClause: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 106, _Internal::row_mark_clause(this), _Internal::row_mark_clause(this).GetCachedSize(), target, stream); break; } case kWithClause: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 107, _Internal::with_clause(this), _Internal::with_clause(this).GetCachedSize(), target, stream); break; } case kInferClause: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 108, _Internal::infer_clause(this), _Internal::infer_clause(this).GetCachedSize(), target, stream); break; } case kOnConflictClause: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 109, _Internal::on_conflict_clause(this), _Internal::on_conflict_clause(this).GetCachedSize(), target, stream); break; } case kCtesearchClause: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 110, _Internal::ctesearch_clause(this), _Internal::ctesearch_clause(this).GetCachedSize(), target, stream); break; } case kCtecycleClause: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 111, _Internal::ctecycle_clause(this), _Internal::ctecycle_clause(this).GetCachedSize(), target, stream); break; } case kCommonTableExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 112, _Internal::common_table_expr(this), _Internal::common_table_expr(this).GetCachedSize(), target, stream); break; } case kMergeWhenClause: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 113, _Internal::merge_when_clause(this), _Internal::merge_when_clause(this).GetCachedSize(), target, stream); break; } case kTriggerTransition: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 114, _Internal::trigger_transition(this), _Internal::trigger_transition(this).GetCachedSize(), target, stream); break; } case kJsonOutput: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 115, _Internal::json_output(this), _Internal::json_output(this).GetCachedSize(), target, stream); break; } case kJsonArgument: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 116, _Internal::json_argument(this), _Internal::json_argument(this).GetCachedSize(), target, stream); break; } case kJsonFuncExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 117, _Internal::json_func_expr(this), _Internal::json_func_expr(this).GetCachedSize(), target, stream); break; } case kJsonTablePathSpec: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 118, _Internal::json_table_path_spec(this), _Internal::json_table_path_spec(this).GetCachedSize(), target, stream); break; } case kJsonTable: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 119, _Internal::json_table(this), _Internal::json_table(this).GetCachedSize(), target, stream); break; } case kJsonTableColumn: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 120, _Internal::json_table_column(this), _Internal::json_table_column(this).GetCachedSize(), target, stream); break; } case kJsonKeyValue: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 121, _Internal::json_key_value(this), _Internal::json_key_value(this).GetCachedSize(), target, stream); break; } case kJsonParseExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 122, _Internal::json_parse_expr(this), _Internal::json_parse_expr(this).GetCachedSize(), target, stream); break; } case kJsonScalarExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 123, _Internal::json_scalar_expr(this), _Internal::json_scalar_expr(this).GetCachedSize(), target, stream); break; } case kJsonSerializeExpr: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 124, _Internal::json_serialize_expr(this), _Internal::json_serialize_expr(this).GetCachedSize(), target, stream); break; } case kJsonObjectConstructor: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 125, _Internal::json_object_constructor(this), _Internal::json_object_constructor(this).GetCachedSize(), target, stream); break; } case kJsonArrayConstructor: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 126, _Internal::json_array_constructor(this), _Internal::json_array_constructor(this).GetCachedSize(), target, stream); break; } case kJsonArrayQueryConstructor: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 127, _Internal::json_array_query_constructor(this), _Internal::json_array_query_constructor(this).GetCachedSize(), target, stream); break; } case kJsonAggConstructor: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 128, _Internal::json_agg_constructor(this), _Internal::json_agg_constructor(this).GetCachedSize(), target, stream); break; } case kJsonObjectAgg: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 129, _Internal::json_object_agg(this), _Internal::json_object_agg(this).GetCachedSize(), target, stream); break; } case kJsonArrayAgg: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 130, _Internal::json_array_agg(this), _Internal::json_array_agg(this).GetCachedSize(), target, stream); break; } case kRawStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 131, _Internal::raw_stmt(this), _Internal::raw_stmt(this).GetCachedSize(), target, stream); break; } case kInsertStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 132, _Internal::insert_stmt(this), _Internal::insert_stmt(this).GetCachedSize(), target, stream); break; } case kDeleteStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 133, _Internal::delete_stmt(this), _Internal::delete_stmt(this).GetCachedSize(), target, stream); break; } case kUpdateStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 134, _Internal::update_stmt(this), _Internal::update_stmt(this).GetCachedSize(), target, stream); break; } case kMergeStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 135, _Internal::merge_stmt(this), _Internal::merge_stmt(this).GetCachedSize(), target, stream); break; } case kSelectStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 136, _Internal::select_stmt(this), _Internal::select_stmt(this).GetCachedSize(), target, stream); break; } case kSetOperationStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 137, _Internal::set_operation_stmt(this), _Internal::set_operation_stmt(this).GetCachedSize(), target, stream); break; } case kReturnStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 138, _Internal::return_stmt(this), _Internal::return_stmt(this).GetCachedSize(), target, stream); break; } case kPlassignStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 139, _Internal::plassign_stmt(this), _Internal::plassign_stmt(this).GetCachedSize(), target, stream); break; } case kCreateSchemaStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 140, _Internal::create_schema_stmt(this), _Internal::create_schema_stmt(this).GetCachedSize(), target, stream); break; } case kAlterTableStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 141, _Internal::alter_table_stmt(this), _Internal::alter_table_stmt(this).GetCachedSize(), target, stream); break; } case kReplicaIdentityStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 142, _Internal::replica_identity_stmt(this), _Internal::replica_identity_stmt(this).GetCachedSize(), target, stream); break; } case kAlterTableCmd: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 143, _Internal::alter_table_cmd(this), _Internal::alter_table_cmd(this).GetCachedSize(), target, stream); break; } case kAlterCollationStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 144, _Internal::alter_collation_stmt(this), _Internal::alter_collation_stmt(this).GetCachedSize(), target, stream); break; } case kAlterDomainStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 145, _Internal::alter_domain_stmt(this), _Internal::alter_domain_stmt(this).GetCachedSize(), target, stream); break; } case kGrantStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 146, _Internal::grant_stmt(this), _Internal::grant_stmt(this).GetCachedSize(), target, stream); break; } case kObjectWithArgs: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 147, _Internal::object_with_args(this), _Internal::object_with_args(this).GetCachedSize(), target, stream); break; } case kAccessPriv: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 148, _Internal::access_priv(this), _Internal::access_priv(this).GetCachedSize(), target, stream); break; } case kGrantRoleStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 149, _Internal::grant_role_stmt(this), _Internal::grant_role_stmt(this).GetCachedSize(), target, stream); break; } case kAlterDefaultPrivilegesStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 150, _Internal::alter_default_privileges_stmt(this), _Internal::alter_default_privileges_stmt(this).GetCachedSize(), target, stream); break; } case kCopyStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 151, _Internal::copy_stmt(this), _Internal::copy_stmt(this).GetCachedSize(), target, stream); break; } case kVariableSetStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 152, _Internal::variable_set_stmt(this), _Internal::variable_set_stmt(this).GetCachedSize(), target, stream); break; } case kVariableShowStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 153, _Internal::variable_show_stmt(this), _Internal::variable_show_stmt(this).GetCachedSize(), target, stream); break; } case kCreateStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 154, _Internal::create_stmt(this), _Internal::create_stmt(this).GetCachedSize(), target, stream); break; } case kConstraint: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 155, _Internal::constraint(this), _Internal::constraint(this).GetCachedSize(), target, stream); break; } case kCreateTableSpaceStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 156, _Internal::create_table_space_stmt(this), _Internal::create_table_space_stmt(this).GetCachedSize(), target, stream); break; } case kDropTableSpaceStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 157, _Internal::drop_table_space_stmt(this), _Internal::drop_table_space_stmt(this).GetCachedSize(), target, stream); break; } case kAlterTableSpaceOptionsStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 158, _Internal::alter_table_space_options_stmt(this), _Internal::alter_table_space_options_stmt(this).GetCachedSize(), target, stream); break; } case kAlterTableMoveAllStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 159, _Internal::alter_table_move_all_stmt(this), _Internal::alter_table_move_all_stmt(this).GetCachedSize(), target, stream); break; } case kCreateExtensionStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 160, _Internal::create_extension_stmt(this), _Internal::create_extension_stmt(this).GetCachedSize(), target, stream); break; } case kAlterExtensionStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 161, _Internal::alter_extension_stmt(this), _Internal::alter_extension_stmt(this).GetCachedSize(), target, stream); break; } case kAlterExtensionContentsStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 162, _Internal::alter_extension_contents_stmt(this), _Internal::alter_extension_contents_stmt(this).GetCachedSize(), target, stream); break; } case kCreateFdwStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 163, _Internal::create_fdw_stmt(this), _Internal::create_fdw_stmt(this).GetCachedSize(), target, stream); break; } case kAlterFdwStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 164, _Internal::alter_fdw_stmt(this), _Internal::alter_fdw_stmt(this).GetCachedSize(), target, stream); break; } case kCreateForeignServerStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 165, _Internal::create_foreign_server_stmt(this), _Internal::create_foreign_server_stmt(this).GetCachedSize(), target, stream); break; } case kAlterForeignServerStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 166, _Internal::alter_foreign_server_stmt(this), _Internal::alter_foreign_server_stmt(this).GetCachedSize(), target, stream); break; } case kCreateForeignTableStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 167, _Internal::create_foreign_table_stmt(this), _Internal::create_foreign_table_stmt(this).GetCachedSize(), target, stream); break; } case kCreateUserMappingStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 168, _Internal::create_user_mapping_stmt(this), _Internal::create_user_mapping_stmt(this).GetCachedSize(), target, stream); break; } case kAlterUserMappingStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 169, _Internal::alter_user_mapping_stmt(this), _Internal::alter_user_mapping_stmt(this).GetCachedSize(), target, stream); break; } case kDropUserMappingStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 170, _Internal::drop_user_mapping_stmt(this), _Internal::drop_user_mapping_stmt(this).GetCachedSize(), target, stream); break; } case kImportForeignSchemaStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 171, _Internal::import_foreign_schema_stmt(this), _Internal::import_foreign_schema_stmt(this).GetCachedSize(), target, stream); break; } case kCreatePolicyStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 172, _Internal::create_policy_stmt(this), _Internal::create_policy_stmt(this).GetCachedSize(), target, stream); break; } case kAlterPolicyStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 173, _Internal::alter_policy_stmt(this), _Internal::alter_policy_stmt(this).GetCachedSize(), target, stream); break; } case kCreateAmStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 174, _Internal::create_am_stmt(this), _Internal::create_am_stmt(this).GetCachedSize(), target, stream); break; } case kCreateTrigStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 175, _Internal::create_trig_stmt(this), _Internal::create_trig_stmt(this).GetCachedSize(), target, stream); break; } case kCreateEventTrigStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 176, _Internal::create_event_trig_stmt(this), _Internal::create_event_trig_stmt(this).GetCachedSize(), target, stream); break; } case kAlterEventTrigStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 177, _Internal::alter_event_trig_stmt(this), _Internal::alter_event_trig_stmt(this).GetCachedSize(), target, stream); break; } case kCreatePlangStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 178, _Internal::create_plang_stmt(this), _Internal::create_plang_stmt(this).GetCachedSize(), target, stream); break; } case kCreateRoleStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 179, _Internal::create_role_stmt(this), _Internal::create_role_stmt(this).GetCachedSize(), target, stream); break; } case kAlterRoleStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 180, _Internal::alter_role_stmt(this), _Internal::alter_role_stmt(this).GetCachedSize(), target, stream); break; } case kAlterRoleSetStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 181, _Internal::alter_role_set_stmt(this), _Internal::alter_role_set_stmt(this).GetCachedSize(), target, stream); break; } case kDropRoleStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 182, _Internal::drop_role_stmt(this), _Internal::drop_role_stmt(this).GetCachedSize(), target, stream); break; } case kCreateSeqStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 183, _Internal::create_seq_stmt(this), _Internal::create_seq_stmt(this).GetCachedSize(), target, stream); break; } case kAlterSeqStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 184, _Internal::alter_seq_stmt(this), _Internal::alter_seq_stmt(this).GetCachedSize(), target, stream); break; } case kDefineStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 185, _Internal::define_stmt(this), _Internal::define_stmt(this).GetCachedSize(), target, stream); break; } case kCreateDomainStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 186, _Internal::create_domain_stmt(this), _Internal::create_domain_stmt(this).GetCachedSize(), target, stream); break; } case kCreateOpClassStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 187, _Internal::create_op_class_stmt(this), _Internal::create_op_class_stmt(this).GetCachedSize(), target, stream); break; } case kCreateOpClassItem: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 188, _Internal::create_op_class_item(this), _Internal::create_op_class_item(this).GetCachedSize(), target, stream); break; } case kCreateOpFamilyStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 189, _Internal::create_op_family_stmt(this), _Internal::create_op_family_stmt(this).GetCachedSize(), target, stream); break; } case kAlterOpFamilyStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 190, _Internal::alter_op_family_stmt(this), _Internal::alter_op_family_stmt(this).GetCachedSize(), target, stream); break; } case kDropStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 191, _Internal::drop_stmt(this), _Internal::drop_stmt(this).GetCachedSize(), target, stream); break; } case kTruncateStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 192, _Internal::truncate_stmt(this), _Internal::truncate_stmt(this).GetCachedSize(), target, stream); break; } case kCommentStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 193, _Internal::comment_stmt(this), _Internal::comment_stmt(this).GetCachedSize(), target, stream); break; } case kSecLabelStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 194, _Internal::sec_label_stmt(this), _Internal::sec_label_stmt(this).GetCachedSize(), target, stream); break; } case kDeclareCursorStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 195, _Internal::declare_cursor_stmt(this), _Internal::declare_cursor_stmt(this).GetCachedSize(), target, stream); break; } case kClosePortalStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 196, _Internal::close_portal_stmt(this), _Internal::close_portal_stmt(this).GetCachedSize(), target, stream); break; } case kFetchStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 197, _Internal::fetch_stmt(this), _Internal::fetch_stmt(this).GetCachedSize(), target, stream); break; } case kIndexStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 198, _Internal::index_stmt(this), _Internal::index_stmt(this).GetCachedSize(), target, stream); break; } case kCreateStatsStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 199, _Internal::create_stats_stmt(this), _Internal::create_stats_stmt(this).GetCachedSize(), target, stream); break; } case kStatsElem: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 200, _Internal::stats_elem(this), _Internal::stats_elem(this).GetCachedSize(), target, stream); break; } case kAlterStatsStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 201, _Internal::alter_stats_stmt(this), _Internal::alter_stats_stmt(this).GetCachedSize(), target, stream); break; } case kCreateFunctionStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 202, _Internal::create_function_stmt(this), _Internal::create_function_stmt(this).GetCachedSize(), target, stream); break; } case kFunctionParameter: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 203, _Internal::function_parameter(this), _Internal::function_parameter(this).GetCachedSize(), target, stream); break; } case kAlterFunctionStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 204, _Internal::alter_function_stmt(this), _Internal::alter_function_stmt(this).GetCachedSize(), target, stream); break; } case kDoStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 205, _Internal::do_stmt(this), _Internal::do_stmt(this).GetCachedSize(), target, stream); break; } case kInlineCodeBlock: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 206, _Internal::inline_code_block(this), _Internal::inline_code_block(this).GetCachedSize(), target, stream); break; } case kCallStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 207, _Internal::call_stmt(this), _Internal::call_stmt(this).GetCachedSize(), target, stream); break; } case kCallContext: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 208, _Internal::call_context(this), _Internal::call_context(this).GetCachedSize(), target, stream); break; } case kRenameStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 209, _Internal::rename_stmt(this), _Internal::rename_stmt(this).GetCachedSize(), target, stream); break; } case kAlterObjectDependsStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 210, _Internal::alter_object_depends_stmt(this), _Internal::alter_object_depends_stmt(this).GetCachedSize(), target, stream); break; } case kAlterObjectSchemaStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 211, _Internal::alter_object_schema_stmt(this), _Internal::alter_object_schema_stmt(this).GetCachedSize(), target, stream); break; } case kAlterOwnerStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 212, _Internal::alter_owner_stmt(this), _Internal::alter_owner_stmt(this).GetCachedSize(), target, stream); break; } case kAlterOperatorStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 213, _Internal::alter_operator_stmt(this), _Internal::alter_operator_stmt(this).GetCachedSize(), target, stream); break; } case kAlterTypeStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 214, _Internal::alter_type_stmt(this), _Internal::alter_type_stmt(this).GetCachedSize(), target, stream); break; } case kRuleStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 215, _Internal::rule_stmt(this), _Internal::rule_stmt(this).GetCachedSize(), target, stream); break; } case kNotifyStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 216, _Internal::notify_stmt(this), _Internal::notify_stmt(this).GetCachedSize(), target, stream); break; } case kListenStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 217, _Internal::listen_stmt(this), _Internal::listen_stmt(this).GetCachedSize(), target, stream); break; } case kUnlistenStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 218, _Internal::unlisten_stmt(this), _Internal::unlisten_stmt(this).GetCachedSize(), target, stream); break; } case kTransactionStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 219, _Internal::transaction_stmt(this), _Internal::transaction_stmt(this).GetCachedSize(), target, stream); break; } case kCompositeTypeStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 220, _Internal::composite_type_stmt(this), _Internal::composite_type_stmt(this).GetCachedSize(), target, stream); break; } case kCreateEnumStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 221, _Internal::create_enum_stmt(this), _Internal::create_enum_stmt(this).GetCachedSize(), target, stream); break; } case kCreateRangeStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 222, _Internal::create_range_stmt(this), _Internal::create_range_stmt(this).GetCachedSize(), target, stream); break; } case kAlterEnumStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 223, _Internal::alter_enum_stmt(this), _Internal::alter_enum_stmt(this).GetCachedSize(), target, stream); break; } case kViewStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 224, _Internal::view_stmt(this), _Internal::view_stmt(this).GetCachedSize(), target, stream); break; } case kLoadStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 225, _Internal::load_stmt(this), _Internal::load_stmt(this).GetCachedSize(), target, stream); break; } case kCreatedbStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 226, _Internal::createdb_stmt(this), _Internal::createdb_stmt(this).GetCachedSize(), target, stream); break; } case kAlterDatabaseStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 227, _Internal::alter_database_stmt(this), _Internal::alter_database_stmt(this).GetCachedSize(), target, stream); break; } case kAlterDatabaseRefreshCollStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 228, _Internal::alter_database_refresh_coll_stmt(this), _Internal::alter_database_refresh_coll_stmt(this).GetCachedSize(), target, stream); break; } case kAlterDatabaseSetStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 229, _Internal::alter_database_set_stmt(this), _Internal::alter_database_set_stmt(this).GetCachedSize(), target, stream); break; } case kDropdbStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 230, _Internal::dropdb_stmt(this), _Internal::dropdb_stmt(this).GetCachedSize(), target, stream); break; } case kAlterSystemStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 231, _Internal::alter_system_stmt(this), _Internal::alter_system_stmt(this).GetCachedSize(), target, stream); break; } case kClusterStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 232, _Internal::cluster_stmt(this), _Internal::cluster_stmt(this).GetCachedSize(), target, stream); break; } case kVacuumStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 233, _Internal::vacuum_stmt(this), _Internal::vacuum_stmt(this).GetCachedSize(), target, stream); break; } case kVacuumRelation: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 234, _Internal::vacuum_relation(this), _Internal::vacuum_relation(this).GetCachedSize(), target, stream); break; } case kExplainStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 235, _Internal::explain_stmt(this), _Internal::explain_stmt(this).GetCachedSize(), target, stream); break; } case kCreateTableAsStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 236, _Internal::create_table_as_stmt(this), _Internal::create_table_as_stmt(this).GetCachedSize(), target, stream); break; } case kRefreshMatViewStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 237, _Internal::refresh_mat_view_stmt(this), _Internal::refresh_mat_view_stmt(this).GetCachedSize(), target, stream); break; } case kCheckPointStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 238, _Internal::check_point_stmt(this), _Internal::check_point_stmt(this).GetCachedSize(), target, stream); break; } case kDiscardStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 239, _Internal::discard_stmt(this), _Internal::discard_stmt(this).GetCachedSize(), target, stream); break; } case kLockStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 240, _Internal::lock_stmt(this), _Internal::lock_stmt(this).GetCachedSize(), target, stream); break; } case kConstraintsSetStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 241, _Internal::constraints_set_stmt(this), _Internal::constraints_set_stmt(this).GetCachedSize(), target, stream); break; } case kReindexStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 242, _Internal::reindex_stmt(this), _Internal::reindex_stmt(this).GetCachedSize(), target, stream); break; } case kCreateConversionStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 243, _Internal::create_conversion_stmt(this), _Internal::create_conversion_stmt(this).GetCachedSize(), target, stream); break; } case kCreateCastStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 244, _Internal::create_cast_stmt(this), _Internal::create_cast_stmt(this).GetCachedSize(), target, stream); break; } case kCreateTransformStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 245, _Internal::create_transform_stmt(this), _Internal::create_transform_stmt(this).GetCachedSize(), target, stream); break; } case kPrepareStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 246, _Internal::prepare_stmt(this), _Internal::prepare_stmt(this).GetCachedSize(), target, stream); break; } case kExecuteStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 247, _Internal::execute_stmt(this), _Internal::execute_stmt(this).GetCachedSize(), target, stream); break; } case kDeallocateStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 248, _Internal::deallocate_stmt(this), _Internal::deallocate_stmt(this).GetCachedSize(), target, stream); break; } case kDropOwnedStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 249, _Internal::drop_owned_stmt(this), _Internal::drop_owned_stmt(this).GetCachedSize(), target, stream); break; } case kReassignOwnedStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 250, _Internal::reassign_owned_stmt(this), _Internal::reassign_owned_stmt(this).GetCachedSize(), target, stream); break; } case kAlterTsdictionaryStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 251, _Internal::alter_tsdictionary_stmt(this), _Internal::alter_tsdictionary_stmt(this).GetCachedSize(), target, stream); break; } case kAlterTsconfigurationStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 252, _Internal::alter_tsconfiguration_stmt(this), _Internal::alter_tsconfiguration_stmt(this).GetCachedSize(), target, stream); break; } case kPublicationTable: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 253, _Internal::publication_table(this), _Internal::publication_table(this).GetCachedSize(), target, stream); break; } case kPublicationObjSpec: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 254, _Internal::publication_obj_spec(this), _Internal::publication_obj_spec(this).GetCachedSize(), target, stream); break; } case kCreatePublicationStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 255, _Internal::create_publication_stmt(this), _Internal::create_publication_stmt(this).GetCachedSize(), target, stream); break; } case kAlterPublicationStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 256, _Internal::alter_publication_stmt(this), _Internal::alter_publication_stmt(this).GetCachedSize(), target, stream); break; } case kCreateSubscriptionStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 257, _Internal::create_subscription_stmt(this), _Internal::create_subscription_stmt(this).GetCachedSize(), target, stream); break; } case kAlterSubscriptionStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 258, _Internal::alter_subscription_stmt(this), _Internal::alter_subscription_stmt(this).GetCachedSize(), target, stream); break; } case kDropSubscriptionStmt: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 259, _Internal::drop_subscription_stmt(this), _Internal::drop_subscription_stmt(this).GetCachedSize(), target, stream); break; } case kInteger: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 260, _Internal::integer(this), _Internal::integer(this).GetCachedSize(), target, stream); break; } case kFloat: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 261, _Internal::float_(this), _Internal::float_(this).GetCachedSize(), target, stream); break; } case kBoolean: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 262, _Internal::boolean(this), _Internal::boolean(this).GetCachedSize(), target, stream); break; } case kString: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 263, _Internal::string(this), _Internal::string(this).GetCachedSize(), target, stream); break; } case kBitString: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 264, _Internal::bit_string(this), _Internal::bit_string(this).GetCachedSize(), target, stream); break; } case kList: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 265, _Internal::list(this), _Internal::list(this).GetCachedSize(), target, stream); break; } case kIntList: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 266, _Internal::int_list(this), _Internal::int_list(this).GetCachedSize(), target, stream); break; } case kOidList: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 267, _Internal::oid_list(this), _Internal::oid_list(this).GetCachedSize(), target, stream); break; } case kAConst: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 268, _Internal::a_const(this), _Internal::a_const(this).GetCachedSize(), target, stream); break; } default: break; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alias_); break; } // .pg_query.RangeVar range_var = 2 [json_name = "RangeVar"]; case kRangeVar: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.range_var_); break; } // .pg_query.TableFunc table_func = 3 [json_name = "TableFunc"]; case kTableFunc: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.table_func_); break; } // .pg_query.IntoClause into_clause = 4 [json_name = "IntoClause"]; case kIntoClause: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.into_clause_); break; } // .pg_query.Var var = 5 [json_name = "Var"]; case kVar: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.var_); break; } // .pg_query.Param param = 6 [json_name = "Param"]; case kParam: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.param_); break; } // .pg_query.Aggref aggref = 7 [json_name = "Aggref"]; case kAggref: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.aggref_); break; } // .pg_query.GroupingFunc grouping_func = 8 [json_name = "GroupingFunc"]; case kGroupingFunc: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.grouping_func_); break; } // .pg_query.WindowFunc window_func = 9 [json_name = "WindowFunc"]; case kWindowFunc: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.window_func_); break; } // .pg_query.WindowFuncRunCondition window_func_run_condition = 10 [json_name = "WindowFuncRunCondition"]; case kWindowFuncRunCondition: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.window_func_run_condition_); break; } // .pg_query.MergeSupportFunc merge_support_func = 11 [json_name = "MergeSupportFunc"]; case kMergeSupportFunc: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.merge_support_func_); break; } // .pg_query.SubscriptingRef subscripting_ref = 12 [json_name = "SubscriptingRef"]; case kSubscriptingRef: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.subscripting_ref_); break; } // .pg_query.FuncExpr func_expr = 13 [json_name = "FuncExpr"]; case kFuncExpr: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.func_expr_); break; } // .pg_query.NamedArgExpr named_arg_expr = 14 [json_name = "NamedArgExpr"]; case kNamedArgExpr: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.named_arg_expr_); break; } // .pg_query.OpExpr op_expr = 15 [json_name = "OpExpr"]; case kOpExpr: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.op_expr_); break; } // .pg_query.DistinctExpr distinct_expr = 16 [json_name = "DistinctExpr"]; case kDistinctExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.distinct_expr_); break; } // .pg_query.NullIfExpr null_if_expr = 17 [json_name = "NullIfExpr"]; case kNullIfExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.null_if_expr_); break; } // .pg_query.ScalarArrayOpExpr scalar_array_op_expr = 18 [json_name = "ScalarArrayOpExpr"]; case kScalarArrayOpExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.scalar_array_op_expr_); break; } // .pg_query.BoolExpr bool_expr = 19 [json_name = "BoolExpr"]; case kBoolExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.bool_expr_); break; } // .pg_query.SubLink sub_link = 20 [json_name = "SubLink"]; case kSubLink: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.sub_link_); break; } // .pg_query.SubPlan sub_plan = 21 [json_name = "SubPlan"]; case kSubPlan: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.sub_plan_); break; } // .pg_query.AlternativeSubPlan alternative_sub_plan = 22 [json_name = "AlternativeSubPlan"]; case kAlternativeSubPlan: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alternative_sub_plan_); break; } // .pg_query.FieldSelect field_select = 23 [json_name = "FieldSelect"]; case kFieldSelect: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.field_select_); break; } // .pg_query.FieldStore field_store = 24 [json_name = "FieldStore"]; case kFieldStore: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.field_store_); break; } // .pg_query.RelabelType relabel_type = 25 [json_name = "RelabelType"]; case kRelabelType: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.relabel_type_); break; } // .pg_query.CoerceViaIO coerce_via_io = 26 [json_name = "CoerceViaIO"]; case kCoerceViaIo: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.coerce_via_io_); break; } // .pg_query.ArrayCoerceExpr array_coerce_expr = 27 [json_name = "ArrayCoerceExpr"]; case kArrayCoerceExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.array_coerce_expr_); break; } // .pg_query.ConvertRowtypeExpr convert_rowtype_expr = 28 [json_name = "ConvertRowtypeExpr"]; case kConvertRowtypeExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.convert_rowtype_expr_); break; } // .pg_query.CollateExpr collate_expr = 29 [json_name = "CollateExpr"]; case kCollateExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.collate_expr_); break; } // .pg_query.CaseExpr case_expr = 30 [json_name = "CaseExpr"]; case kCaseExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.case_expr_); break; } // .pg_query.CaseWhen case_when = 31 [json_name = "CaseWhen"]; case kCaseWhen: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.case_when_); break; } // .pg_query.CaseTestExpr case_test_expr = 32 [json_name = "CaseTestExpr"]; case kCaseTestExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.case_test_expr_); break; } // .pg_query.ArrayExpr array_expr = 33 [json_name = "ArrayExpr"]; case kArrayExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.array_expr_); break; } // .pg_query.RowExpr row_expr = 34 [json_name = "RowExpr"]; case kRowExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.row_expr_); break; } // .pg_query.RowCompareExpr row_compare_expr = 35 [json_name = "RowCompareExpr"]; case kRowCompareExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.row_compare_expr_); break; } // .pg_query.CoalesceExpr coalesce_expr = 36 [json_name = "CoalesceExpr"]; case kCoalesceExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.coalesce_expr_); break; } // .pg_query.MinMaxExpr min_max_expr = 37 [json_name = "MinMaxExpr"]; case kMinMaxExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.min_max_expr_); break; } // .pg_query.SQLValueFunction sqlvalue_function = 38 [json_name = "SQLValueFunction"]; case kSqlvalueFunction: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.sqlvalue_function_); break; } // .pg_query.XmlExpr xml_expr = 39 [json_name = "XmlExpr"]; case kXmlExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.xml_expr_); break; } // .pg_query.JsonFormat json_format = 40 [json_name = "JsonFormat"]; case kJsonFormat: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_format_); break; } // .pg_query.JsonReturning json_returning = 41 [json_name = "JsonReturning"]; case kJsonReturning: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_returning_); break; } // .pg_query.JsonValueExpr json_value_expr = 42 [json_name = "JsonValueExpr"]; case kJsonValueExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_value_expr_); break; } // .pg_query.JsonConstructorExpr json_constructor_expr = 43 [json_name = "JsonConstructorExpr"]; case kJsonConstructorExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_constructor_expr_); break; } // .pg_query.JsonIsPredicate json_is_predicate = 44 [json_name = "JsonIsPredicate"]; case kJsonIsPredicate: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_is_predicate_); break; } // .pg_query.JsonBehavior json_behavior = 45 [json_name = "JsonBehavior"]; case kJsonBehavior: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_behavior_); break; } // .pg_query.JsonExpr json_expr = 46 [json_name = "JsonExpr"]; case kJsonExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_expr_); break; } // .pg_query.JsonTablePath json_table_path = 47 [json_name = "JsonTablePath"]; case kJsonTablePath: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_table_path_); break; } // .pg_query.JsonTablePathScan json_table_path_scan = 48 [json_name = "JsonTablePathScan"]; case kJsonTablePathScan: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_table_path_scan_); break; } // .pg_query.JsonTableSiblingJoin json_table_sibling_join = 49 [json_name = "JsonTableSiblingJoin"]; case kJsonTableSiblingJoin: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_table_sibling_join_); break; } // .pg_query.NullTest null_test = 50 [json_name = "NullTest"]; case kNullTest: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.null_test_); break; } // .pg_query.BooleanTest boolean_test = 51 [json_name = "BooleanTest"]; case kBooleanTest: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.boolean_test_); break; } // .pg_query.MergeAction merge_action = 52 [json_name = "MergeAction"]; case kMergeAction: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.merge_action_); break; } // .pg_query.CoerceToDomain coerce_to_domain = 53 [json_name = "CoerceToDomain"]; case kCoerceToDomain: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.coerce_to_domain_); break; } // .pg_query.CoerceToDomainValue coerce_to_domain_value = 54 [json_name = "CoerceToDomainValue"]; case kCoerceToDomainValue: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.coerce_to_domain_value_); break; } // .pg_query.SetToDefault set_to_default = 55 [json_name = "SetToDefault"]; case kSetToDefault: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.set_to_default_); break; } // .pg_query.CurrentOfExpr current_of_expr = 56 [json_name = "CurrentOfExpr"]; case kCurrentOfExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.current_of_expr_); break; } // .pg_query.NextValueExpr next_value_expr = 57 [json_name = "NextValueExpr"]; case kNextValueExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.next_value_expr_); break; } // .pg_query.InferenceElem inference_elem = 58 [json_name = "InferenceElem"]; case kInferenceElem: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.inference_elem_); break; } // .pg_query.TargetEntry target_entry = 59 [json_name = "TargetEntry"]; case kTargetEntry: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.target_entry_); break; } // .pg_query.RangeTblRef range_tbl_ref = 60 [json_name = "RangeTblRef"]; case kRangeTblRef: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.range_tbl_ref_); break; } // .pg_query.JoinExpr join_expr = 61 [json_name = "JoinExpr"]; case kJoinExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.join_expr_); break; } // .pg_query.FromExpr from_expr = 62 [json_name = "FromExpr"]; case kFromExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.from_expr_); break; } // .pg_query.OnConflictExpr on_conflict_expr = 63 [json_name = "OnConflictExpr"]; case kOnConflictExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.on_conflict_expr_); break; } // .pg_query.Query query = 64 [json_name = "Query"]; case kQuery: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.query_); break; } // .pg_query.TypeName type_name = 65 [json_name = "TypeName"]; case kTypeName: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.type_name_); break; } // .pg_query.ColumnRef column_ref = 66 [json_name = "ColumnRef"]; case kColumnRef: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.column_ref_); break; } // .pg_query.ParamRef param_ref = 67 [json_name = "ParamRef"]; case kParamRef: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.param_ref_); break; } // .pg_query.A_Expr a_expr = 68 [json_name = "A_Expr"]; case kAExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.a_expr_); break; } // .pg_query.TypeCast type_cast = 69 [json_name = "TypeCast"]; case kTypeCast: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.type_cast_); break; } // .pg_query.CollateClause collate_clause = 70 [json_name = "CollateClause"]; case kCollateClause: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.collate_clause_); break; } // .pg_query.RoleSpec role_spec = 71 [json_name = "RoleSpec"]; case kRoleSpec: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.role_spec_); break; } // .pg_query.FuncCall func_call = 72 [json_name = "FuncCall"]; case kFuncCall: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.func_call_); break; } // .pg_query.A_Star a_star = 73 [json_name = "A_Star"]; case kAStar: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.a_star_); break; } // .pg_query.A_Indices a_indices = 74 [json_name = "A_Indices"]; case kAIndices: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.a_indices_); break; } // .pg_query.A_Indirection a_indirection = 75 [json_name = "A_Indirection"]; case kAIndirection: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.a_indirection_); break; } // .pg_query.A_ArrayExpr a_array_expr = 76 [json_name = "A_ArrayExpr"]; case kAArrayExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.a_array_expr_); break; } // .pg_query.ResTarget res_target = 77 [json_name = "ResTarget"]; case kResTarget: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.res_target_); break; } // .pg_query.MultiAssignRef multi_assign_ref = 78 [json_name = "MultiAssignRef"]; case kMultiAssignRef: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.multi_assign_ref_); break; } // .pg_query.SortBy sort_by = 79 [json_name = "SortBy"]; case kSortBy: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.sort_by_); break; } // .pg_query.WindowDef window_def = 80 [json_name = "WindowDef"]; case kWindowDef: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.window_def_); break; } // .pg_query.RangeSubselect range_subselect = 81 [json_name = "RangeSubselect"]; case kRangeSubselect: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.range_subselect_); break; } // .pg_query.RangeFunction range_function = 82 [json_name = "RangeFunction"]; case kRangeFunction: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.range_function_); break; } // .pg_query.RangeTableFunc range_table_func = 83 [json_name = "RangeTableFunc"]; case kRangeTableFunc: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.range_table_func_); break; } // .pg_query.RangeTableFuncCol range_table_func_col = 84 [json_name = "RangeTableFuncCol"]; case kRangeTableFuncCol: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.range_table_func_col_); break; } // .pg_query.RangeTableSample range_table_sample = 85 [json_name = "RangeTableSample"]; case kRangeTableSample: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.range_table_sample_); break; } // .pg_query.ColumnDef column_def = 86 [json_name = "ColumnDef"]; case kColumnDef: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.column_def_); break; } // .pg_query.TableLikeClause table_like_clause = 87 [json_name = "TableLikeClause"]; case kTableLikeClause: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.table_like_clause_); break; } // .pg_query.IndexElem index_elem = 88 [json_name = "IndexElem"]; case kIndexElem: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.index_elem_); break; } // .pg_query.DefElem def_elem = 89 [json_name = "DefElem"]; case kDefElem: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.def_elem_); break; } // .pg_query.LockingClause locking_clause = 90 [json_name = "LockingClause"]; case kLockingClause: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.locking_clause_); break; } // .pg_query.XmlSerialize xml_serialize = 91 [json_name = "XmlSerialize"]; case kXmlSerialize: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.xml_serialize_); break; } // .pg_query.PartitionElem partition_elem = 92 [json_name = "PartitionElem"]; case kPartitionElem: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.partition_elem_); break; } // .pg_query.PartitionSpec partition_spec = 93 [json_name = "PartitionSpec"]; case kPartitionSpec: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.partition_spec_); break; } // .pg_query.PartitionBoundSpec partition_bound_spec = 94 [json_name = "PartitionBoundSpec"]; case kPartitionBoundSpec: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.partition_bound_spec_); break; } // .pg_query.PartitionRangeDatum partition_range_datum = 95 [json_name = "PartitionRangeDatum"]; case kPartitionRangeDatum: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.partition_range_datum_); break; } // .pg_query.SinglePartitionSpec single_partition_spec = 96 [json_name = "SinglePartitionSpec"]; case kSinglePartitionSpec: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.single_partition_spec_); break; } // .pg_query.PartitionCmd partition_cmd = 97 [json_name = "PartitionCmd"]; case kPartitionCmd: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.partition_cmd_); break; } // .pg_query.RangeTblEntry range_tbl_entry = 98 [json_name = "RangeTblEntry"]; case kRangeTblEntry: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.range_tbl_entry_); break; } // .pg_query.RTEPermissionInfo rtepermission_info = 99 [json_name = "RTEPermissionInfo"]; case kRtepermissionInfo: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.rtepermission_info_); break; } // .pg_query.RangeTblFunction range_tbl_function = 100 [json_name = "RangeTblFunction"]; case kRangeTblFunction: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.range_tbl_function_); break; } // .pg_query.TableSampleClause table_sample_clause = 101 [json_name = "TableSampleClause"]; case kTableSampleClause: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.table_sample_clause_); break; } // .pg_query.WithCheckOption with_check_option = 102 [json_name = "WithCheckOption"]; case kWithCheckOption: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.with_check_option_); break; } // .pg_query.SortGroupClause sort_group_clause = 103 [json_name = "SortGroupClause"]; case kSortGroupClause: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.sort_group_clause_); break; } // .pg_query.GroupingSet grouping_set = 104 [json_name = "GroupingSet"]; case kGroupingSet: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.grouping_set_); break; } // .pg_query.WindowClause window_clause = 105 [json_name = "WindowClause"]; case kWindowClause: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.window_clause_); break; } // .pg_query.RowMarkClause row_mark_clause = 106 [json_name = "RowMarkClause"]; case kRowMarkClause: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.row_mark_clause_); break; } // .pg_query.WithClause with_clause = 107 [json_name = "WithClause"]; case kWithClause: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.with_clause_); break; } // .pg_query.InferClause infer_clause = 108 [json_name = "InferClause"]; case kInferClause: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.infer_clause_); break; } // .pg_query.OnConflictClause on_conflict_clause = 109 [json_name = "OnConflictClause"]; case kOnConflictClause: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.on_conflict_clause_); break; } // .pg_query.CTESearchClause ctesearch_clause = 110 [json_name = "CTESearchClause"]; case kCtesearchClause: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.ctesearch_clause_); break; } // .pg_query.CTECycleClause ctecycle_clause = 111 [json_name = "CTECycleClause"]; case kCtecycleClause: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.ctecycle_clause_); break; } // .pg_query.CommonTableExpr common_table_expr = 112 [json_name = "CommonTableExpr"]; case kCommonTableExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.common_table_expr_); break; } // .pg_query.MergeWhenClause merge_when_clause = 113 [json_name = "MergeWhenClause"]; case kMergeWhenClause: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.merge_when_clause_); break; } // .pg_query.TriggerTransition trigger_transition = 114 [json_name = "TriggerTransition"]; case kTriggerTransition: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.trigger_transition_); break; } // .pg_query.JsonOutput json_output = 115 [json_name = "JsonOutput"]; case kJsonOutput: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_output_); break; } // .pg_query.JsonArgument json_argument = 116 [json_name = "JsonArgument"]; case kJsonArgument: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_argument_); break; } // .pg_query.JsonFuncExpr json_func_expr = 117 [json_name = "JsonFuncExpr"]; case kJsonFuncExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_func_expr_); break; } // .pg_query.JsonTablePathSpec json_table_path_spec = 118 [json_name = "JsonTablePathSpec"]; case kJsonTablePathSpec: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_table_path_spec_); break; } // .pg_query.JsonTable json_table = 119 [json_name = "JsonTable"]; case kJsonTable: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_table_); break; } // .pg_query.JsonTableColumn json_table_column = 120 [json_name = "JsonTableColumn"]; case kJsonTableColumn: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_table_column_); break; } // .pg_query.JsonKeyValue json_key_value = 121 [json_name = "JsonKeyValue"]; case kJsonKeyValue: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_key_value_); break; } // .pg_query.JsonParseExpr json_parse_expr = 122 [json_name = "JsonParseExpr"]; case kJsonParseExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_parse_expr_); break; } // .pg_query.JsonScalarExpr json_scalar_expr = 123 [json_name = "JsonScalarExpr"]; case kJsonScalarExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_scalar_expr_); break; } // .pg_query.JsonSerializeExpr json_serialize_expr = 124 [json_name = "JsonSerializeExpr"]; case kJsonSerializeExpr: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_serialize_expr_); break; } // .pg_query.JsonObjectConstructor json_object_constructor = 125 [json_name = "JsonObjectConstructor"]; case kJsonObjectConstructor: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_object_constructor_); break; } // .pg_query.JsonArrayConstructor json_array_constructor = 126 [json_name = "JsonArrayConstructor"]; case kJsonArrayConstructor: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_array_constructor_); break; } // .pg_query.JsonArrayQueryConstructor json_array_query_constructor = 127 [json_name = "JsonArrayQueryConstructor"]; case kJsonArrayQueryConstructor: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_array_query_constructor_); break; } // .pg_query.JsonAggConstructor json_agg_constructor = 128 [json_name = "JsonAggConstructor"]; case kJsonAggConstructor: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_agg_constructor_); break; } // .pg_query.JsonObjectAgg json_object_agg = 129 [json_name = "JsonObjectAgg"]; case kJsonObjectAgg: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_object_agg_); break; } // .pg_query.JsonArrayAgg json_array_agg = 130 [json_name = "JsonArrayAgg"]; case kJsonArrayAgg: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.json_array_agg_); break; } // .pg_query.RawStmt raw_stmt = 131 [json_name = "RawStmt"]; case kRawStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.raw_stmt_); break; } // .pg_query.InsertStmt insert_stmt = 132 [json_name = "InsertStmt"]; case kInsertStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.insert_stmt_); break; } // .pg_query.DeleteStmt delete_stmt = 133 [json_name = "DeleteStmt"]; case kDeleteStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.delete_stmt_); break; } // .pg_query.UpdateStmt update_stmt = 134 [json_name = "UpdateStmt"]; case kUpdateStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.update_stmt_); break; } // .pg_query.MergeStmt merge_stmt = 135 [json_name = "MergeStmt"]; case kMergeStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.merge_stmt_); break; } // .pg_query.SelectStmt select_stmt = 136 [json_name = "SelectStmt"]; case kSelectStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.select_stmt_); break; } // .pg_query.SetOperationStmt set_operation_stmt = 137 [json_name = "SetOperationStmt"]; case kSetOperationStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.set_operation_stmt_); break; } // .pg_query.ReturnStmt return_stmt = 138 [json_name = "ReturnStmt"]; case kReturnStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.return_stmt_); break; } // .pg_query.PLAssignStmt plassign_stmt = 139 [json_name = "PLAssignStmt"]; case kPlassignStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.plassign_stmt_); break; } // .pg_query.CreateSchemaStmt create_schema_stmt = 140 [json_name = "CreateSchemaStmt"]; case kCreateSchemaStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_schema_stmt_); break; } // .pg_query.AlterTableStmt alter_table_stmt = 141 [json_name = "AlterTableStmt"]; case kAlterTableStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_table_stmt_); break; } // .pg_query.ReplicaIdentityStmt replica_identity_stmt = 142 [json_name = "ReplicaIdentityStmt"]; case kReplicaIdentityStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.replica_identity_stmt_); break; } // .pg_query.AlterTableCmd alter_table_cmd = 143 [json_name = "AlterTableCmd"]; case kAlterTableCmd: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_table_cmd_); break; } // .pg_query.AlterCollationStmt alter_collation_stmt = 144 [json_name = "AlterCollationStmt"]; case kAlterCollationStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_collation_stmt_); break; } // .pg_query.AlterDomainStmt alter_domain_stmt = 145 [json_name = "AlterDomainStmt"]; case kAlterDomainStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_domain_stmt_); break; } // .pg_query.GrantStmt grant_stmt = 146 [json_name = "GrantStmt"]; case kGrantStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.grant_stmt_); break; } // .pg_query.ObjectWithArgs object_with_args = 147 [json_name = "ObjectWithArgs"]; case kObjectWithArgs: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.object_with_args_); break; } // .pg_query.AccessPriv access_priv = 148 [json_name = "AccessPriv"]; case kAccessPriv: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.access_priv_); break; } // .pg_query.GrantRoleStmt grant_role_stmt = 149 [json_name = "GrantRoleStmt"]; case kGrantRoleStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.grant_role_stmt_); break; } // .pg_query.AlterDefaultPrivilegesStmt alter_default_privileges_stmt = 150 [json_name = "AlterDefaultPrivilegesStmt"]; case kAlterDefaultPrivilegesStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_default_privileges_stmt_); break; } // .pg_query.CopyStmt copy_stmt = 151 [json_name = "CopyStmt"]; case kCopyStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.copy_stmt_); break; } // .pg_query.VariableSetStmt variable_set_stmt = 152 [json_name = "VariableSetStmt"]; case kVariableSetStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.variable_set_stmt_); break; } // .pg_query.VariableShowStmt variable_show_stmt = 153 [json_name = "VariableShowStmt"]; case kVariableShowStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.variable_show_stmt_); break; } // .pg_query.CreateStmt create_stmt = 154 [json_name = "CreateStmt"]; case kCreateStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_stmt_); break; } // .pg_query.Constraint constraint = 155 [json_name = "Constraint"]; case kConstraint: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.constraint_); break; } // .pg_query.CreateTableSpaceStmt create_table_space_stmt = 156 [json_name = "CreateTableSpaceStmt"]; case kCreateTableSpaceStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_table_space_stmt_); break; } // .pg_query.DropTableSpaceStmt drop_table_space_stmt = 157 [json_name = "DropTableSpaceStmt"]; case kDropTableSpaceStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.drop_table_space_stmt_); break; } // .pg_query.AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 158 [json_name = "AlterTableSpaceOptionsStmt"]; case kAlterTableSpaceOptionsStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_table_space_options_stmt_); break; } // .pg_query.AlterTableMoveAllStmt alter_table_move_all_stmt = 159 [json_name = "AlterTableMoveAllStmt"]; case kAlterTableMoveAllStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_table_move_all_stmt_); break; } // .pg_query.CreateExtensionStmt create_extension_stmt = 160 [json_name = "CreateExtensionStmt"]; case kCreateExtensionStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_extension_stmt_); break; } // .pg_query.AlterExtensionStmt alter_extension_stmt = 161 [json_name = "AlterExtensionStmt"]; case kAlterExtensionStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_extension_stmt_); break; } // .pg_query.AlterExtensionContentsStmt alter_extension_contents_stmt = 162 [json_name = "AlterExtensionContentsStmt"]; case kAlterExtensionContentsStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_extension_contents_stmt_); break; } // .pg_query.CreateFdwStmt create_fdw_stmt = 163 [json_name = "CreateFdwStmt"]; case kCreateFdwStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_fdw_stmt_); break; } // .pg_query.AlterFdwStmt alter_fdw_stmt = 164 [json_name = "AlterFdwStmt"]; case kAlterFdwStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_fdw_stmt_); break; } // .pg_query.CreateForeignServerStmt create_foreign_server_stmt = 165 [json_name = "CreateForeignServerStmt"]; case kCreateForeignServerStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_foreign_server_stmt_); break; } // .pg_query.AlterForeignServerStmt alter_foreign_server_stmt = 166 [json_name = "AlterForeignServerStmt"]; case kAlterForeignServerStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_foreign_server_stmt_); break; } // .pg_query.CreateForeignTableStmt create_foreign_table_stmt = 167 [json_name = "CreateForeignTableStmt"]; case kCreateForeignTableStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_foreign_table_stmt_); break; } // .pg_query.CreateUserMappingStmt create_user_mapping_stmt = 168 [json_name = "CreateUserMappingStmt"]; case kCreateUserMappingStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_user_mapping_stmt_); break; } // .pg_query.AlterUserMappingStmt alter_user_mapping_stmt = 169 [json_name = "AlterUserMappingStmt"]; case kAlterUserMappingStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_user_mapping_stmt_); break; } // .pg_query.DropUserMappingStmt drop_user_mapping_stmt = 170 [json_name = "DropUserMappingStmt"]; case kDropUserMappingStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.drop_user_mapping_stmt_); break; } // .pg_query.ImportForeignSchemaStmt import_foreign_schema_stmt = 171 [json_name = "ImportForeignSchemaStmt"]; case kImportForeignSchemaStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.import_foreign_schema_stmt_); break; } // .pg_query.CreatePolicyStmt create_policy_stmt = 172 [json_name = "CreatePolicyStmt"]; case kCreatePolicyStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_policy_stmt_); break; } // .pg_query.AlterPolicyStmt alter_policy_stmt = 173 [json_name = "AlterPolicyStmt"]; case kAlterPolicyStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_policy_stmt_); break; } // .pg_query.CreateAmStmt create_am_stmt = 174 [json_name = "CreateAmStmt"]; case kCreateAmStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_am_stmt_); break; } // .pg_query.CreateTrigStmt create_trig_stmt = 175 [json_name = "CreateTrigStmt"]; case kCreateTrigStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_trig_stmt_); break; } // .pg_query.CreateEventTrigStmt create_event_trig_stmt = 176 [json_name = "CreateEventTrigStmt"]; case kCreateEventTrigStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_event_trig_stmt_); break; } // .pg_query.AlterEventTrigStmt alter_event_trig_stmt = 177 [json_name = "AlterEventTrigStmt"]; case kAlterEventTrigStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_event_trig_stmt_); break; } // .pg_query.CreatePLangStmt create_plang_stmt = 178 [json_name = "CreatePLangStmt"]; case kCreatePlangStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_plang_stmt_); break; } // .pg_query.CreateRoleStmt create_role_stmt = 179 [json_name = "CreateRoleStmt"]; case kCreateRoleStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_role_stmt_); break; } // .pg_query.AlterRoleStmt alter_role_stmt = 180 [json_name = "AlterRoleStmt"]; case kAlterRoleStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_role_stmt_); break; } // .pg_query.AlterRoleSetStmt alter_role_set_stmt = 181 [json_name = "AlterRoleSetStmt"]; case kAlterRoleSetStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_role_set_stmt_); break; } // .pg_query.DropRoleStmt drop_role_stmt = 182 [json_name = "DropRoleStmt"]; case kDropRoleStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.drop_role_stmt_); break; } // .pg_query.CreateSeqStmt create_seq_stmt = 183 [json_name = "CreateSeqStmt"]; case kCreateSeqStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_seq_stmt_); break; } // .pg_query.AlterSeqStmt alter_seq_stmt = 184 [json_name = "AlterSeqStmt"]; case kAlterSeqStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_seq_stmt_); break; } // .pg_query.DefineStmt define_stmt = 185 [json_name = "DefineStmt"]; case kDefineStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.define_stmt_); break; } // .pg_query.CreateDomainStmt create_domain_stmt = 186 [json_name = "CreateDomainStmt"]; case kCreateDomainStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_domain_stmt_); break; } // .pg_query.CreateOpClassStmt create_op_class_stmt = 187 [json_name = "CreateOpClassStmt"]; case kCreateOpClassStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_op_class_stmt_); break; } // .pg_query.CreateOpClassItem create_op_class_item = 188 [json_name = "CreateOpClassItem"]; case kCreateOpClassItem: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_op_class_item_); break; } // .pg_query.CreateOpFamilyStmt create_op_family_stmt = 189 [json_name = "CreateOpFamilyStmt"]; case kCreateOpFamilyStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_op_family_stmt_); break; } // .pg_query.AlterOpFamilyStmt alter_op_family_stmt = 190 [json_name = "AlterOpFamilyStmt"]; case kAlterOpFamilyStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_op_family_stmt_); break; } // .pg_query.DropStmt drop_stmt = 191 [json_name = "DropStmt"]; case kDropStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.drop_stmt_); break; } // .pg_query.TruncateStmt truncate_stmt = 192 [json_name = "TruncateStmt"]; case kTruncateStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.truncate_stmt_); break; } // .pg_query.CommentStmt comment_stmt = 193 [json_name = "CommentStmt"]; case kCommentStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.comment_stmt_); break; } // .pg_query.SecLabelStmt sec_label_stmt = 194 [json_name = "SecLabelStmt"]; case kSecLabelStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.sec_label_stmt_); break; } // .pg_query.DeclareCursorStmt declare_cursor_stmt = 195 [json_name = "DeclareCursorStmt"]; case kDeclareCursorStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.declare_cursor_stmt_); break; } // .pg_query.ClosePortalStmt close_portal_stmt = 196 [json_name = "ClosePortalStmt"]; case kClosePortalStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.close_portal_stmt_); break; } // .pg_query.FetchStmt fetch_stmt = 197 [json_name = "FetchStmt"]; case kFetchStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.fetch_stmt_); break; } // .pg_query.IndexStmt index_stmt = 198 [json_name = "IndexStmt"]; case kIndexStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.index_stmt_); break; } // .pg_query.CreateStatsStmt create_stats_stmt = 199 [json_name = "CreateStatsStmt"]; case kCreateStatsStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_stats_stmt_); break; } // .pg_query.StatsElem stats_elem = 200 [json_name = "StatsElem"]; case kStatsElem: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.stats_elem_); break; } // .pg_query.AlterStatsStmt alter_stats_stmt = 201 [json_name = "AlterStatsStmt"]; case kAlterStatsStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_stats_stmt_); break; } // .pg_query.CreateFunctionStmt create_function_stmt = 202 [json_name = "CreateFunctionStmt"]; case kCreateFunctionStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_function_stmt_); break; } // .pg_query.FunctionParameter function_parameter = 203 [json_name = "FunctionParameter"]; case kFunctionParameter: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.function_parameter_); break; } // .pg_query.AlterFunctionStmt alter_function_stmt = 204 [json_name = "AlterFunctionStmt"]; case kAlterFunctionStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_function_stmt_); break; } // .pg_query.DoStmt do_stmt = 205 [json_name = "DoStmt"]; case kDoStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.do_stmt_); break; } // .pg_query.InlineCodeBlock inline_code_block = 206 [json_name = "InlineCodeBlock"]; case kInlineCodeBlock: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.inline_code_block_); break; } // .pg_query.CallStmt call_stmt = 207 [json_name = "CallStmt"]; case kCallStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.call_stmt_); break; } // .pg_query.CallContext call_context = 208 [json_name = "CallContext"]; case kCallContext: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.call_context_); break; } // .pg_query.RenameStmt rename_stmt = 209 [json_name = "RenameStmt"]; case kRenameStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.rename_stmt_); break; } // .pg_query.AlterObjectDependsStmt alter_object_depends_stmt = 210 [json_name = "AlterObjectDependsStmt"]; case kAlterObjectDependsStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_object_depends_stmt_); break; } // .pg_query.AlterObjectSchemaStmt alter_object_schema_stmt = 211 [json_name = "AlterObjectSchemaStmt"]; case kAlterObjectSchemaStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_object_schema_stmt_); break; } // .pg_query.AlterOwnerStmt alter_owner_stmt = 212 [json_name = "AlterOwnerStmt"]; case kAlterOwnerStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_owner_stmt_); break; } // .pg_query.AlterOperatorStmt alter_operator_stmt = 213 [json_name = "AlterOperatorStmt"]; case kAlterOperatorStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_operator_stmt_); break; } // .pg_query.AlterTypeStmt alter_type_stmt = 214 [json_name = "AlterTypeStmt"]; case kAlterTypeStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_type_stmt_); break; } // .pg_query.RuleStmt rule_stmt = 215 [json_name = "RuleStmt"]; case kRuleStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.rule_stmt_); break; } // .pg_query.NotifyStmt notify_stmt = 216 [json_name = "NotifyStmt"]; case kNotifyStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.notify_stmt_); break; } // .pg_query.ListenStmt listen_stmt = 217 [json_name = "ListenStmt"]; case kListenStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.listen_stmt_); break; } // .pg_query.UnlistenStmt unlisten_stmt = 218 [json_name = "UnlistenStmt"]; case kUnlistenStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.unlisten_stmt_); break; } // .pg_query.TransactionStmt transaction_stmt = 219 [json_name = "TransactionStmt"]; case kTransactionStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.transaction_stmt_); break; } // .pg_query.CompositeTypeStmt composite_type_stmt = 220 [json_name = "CompositeTypeStmt"]; case kCompositeTypeStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.composite_type_stmt_); break; } // .pg_query.CreateEnumStmt create_enum_stmt = 221 [json_name = "CreateEnumStmt"]; case kCreateEnumStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_enum_stmt_); break; } // .pg_query.CreateRangeStmt create_range_stmt = 222 [json_name = "CreateRangeStmt"]; case kCreateRangeStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_range_stmt_); break; } // .pg_query.AlterEnumStmt alter_enum_stmt = 223 [json_name = "AlterEnumStmt"]; case kAlterEnumStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_enum_stmt_); break; } // .pg_query.ViewStmt view_stmt = 224 [json_name = "ViewStmt"]; case kViewStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.view_stmt_); break; } // .pg_query.LoadStmt load_stmt = 225 [json_name = "LoadStmt"]; case kLoadStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.load_stmt_); break; } // .pg_query.CreatedbStmt createdb_stmt = 226 [json_name = "CreatedbStmt"]; case kCreatedbStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.createdb_stmt_); break; } // .pg_query.AlterDatabaseStmt alter_database_stmt = 227 [json_name = "AlterDatabaseStmt"]; case kAlterDatabaseStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_database_stmt_); break; } // .pg_query.AlterDatabaseRefreshCollStmt alter_database_refresh_coll_stmt = 228 [json_name = "AlterDatabaseRefreshCollStmt"]; case kAlterDatabaseRefreshCollStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_database_refresh_coll_stmt_); break; } // .pg_query.AlterDatabaseSetStmt alter_database_set_stmt = 229 [json_name = "AlterDatabaseSetStmt"]; case kAlterDatabaseSetStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_database_set_stmt_); break; } // .pg_query.DropdbStmt dropdb_stmt = 230 [json_name = "DropdbStmt"]; case kDropdbStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.dropdb_stmt_); break; } // .pg_query.AlterSystemStmt alter_system_stmt = 231 [json_name = "AlterSystemStmt"]; case kAlterSystemStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_system_stmt_); break; } // .pg_query.ClusterStmt cluster_stmt = 232 [json_name = "ClusterStmt"]; case kClusterStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.cluster_stmt_); break; } // .pg_query.VacuumStmt vacuum_stmt = 233 [json_name = "VacuumStmt"]; case kVacuumStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.vacuum_stmt_); break; } // .pg_query.VacuumRelation vacuum_relation = 234 [json_name = "VacuumRelation"]; case kVacuumRelation: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.vacuum_relation_); break; } // .pg_query.ExplainStmt explain_stmt = 235 [json_name = "ExplainStmt"]; case kExplainStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.explain_stmt_); break; } // .pg_query.CreateTableAsStmt create_table_as_stmt = 236 [json_name = "CreateTableAsStmt"]; case kCreateTableAsStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_table_as_stmt_); break; } // .pg_query.RefreshMatViewStmt refresh_mat_view_stmt = 237 [json_name = "RefreshMatViewStmt"]; case kRefreshMatViewStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.refresh_mat_view_stmt_); break; } // .pg_query.CheckPointStmt check_point_stmt = 238 [json_name = "CheckPointStmt"]; case kCheckPointStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.check_point_stmt_); break; } // .pg_query.DiscardStmt discard_stmt = 239 [json_name = "DiscardStmt"]; case kDiscardStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.discard_stmt_); break; } // .pg_query.LockStmt lock_stmt = 240 [json_name = "LockStmt"]; case kLockStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.lock_stmt_); break; } // .pg_query.ConstraintsSetStmt constraints_set_stmt = 241 [json_name = "ConstraintsSetStmt"]; case kConstraintsSetStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.constraints_set_stmt_); break; } // .pg_query.ReindexStmt reindex_stmt = 242 [json_name = "ReindexStmt"]; case kReindexStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.reindex_stmt_); break; } // .pg_query.CreateConversionStmt create_conversion_stmt = 243 [json_name = "CreateConversionStmt"]; case kCreateConversionStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_conversion_stmt_); break; } // .pg_query.CreateCastStmt create_cast_stmt = 244 [json_name = "CreateCastStmt"]; case kCreateCastStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_cast_stmt_); break; } // .pg_query.CreateTransformStmt create_transform_stmt = 245 [json_name = "CreateTransformStmt"]; case kCreateTransformStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_transform_stmt_); break; } // .pg_query.PrepareStmt prepare_stmt = 246 [json_name = "PrepareStmt"]; case kPrepareStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.prepare_stmt_); break; } // .pg_query.ExecuteStmt execute_stmt = 247 [json_name = "ExecuteStmt"]; case kExecuteStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.execute_stmt_); break; } // .pg_query.DeallocateStmt deallocate_stmt = 248 [json_name = "DeallocateStmt"]; case kDeallocateStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.deallocate_stmt_); break; } // .pg_query.DropOwnedStmt drop_owned_stmt = 249 [json_name = "DropOwnedStmt"]; case kDropOwnedStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.drop_owned_stmt_); break; } // .pg_query.ReassignOwnedStmt reassign_owned_stmt = 250 [json_name = "ReassignOwnedStmt"]; case kReassignOwnedStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.reassign_owned_stmt_); break; } // .pg_query.AlterTSDictionaryStmt alter_tsdictionary_stmt = 251 [json_name = "AlterTSDictionaryStmt"]; case kAlterTsdictionaryStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_tsdictionary_stmt_); break; } // .pg_query.AlterTSConfigurationStmt alter_tsconfiguration_stmt = 252 [json_name = "AlterTSConfigurationStmt"]; case kAlterTsconfigurationStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_tsconfiguration_stmt_); break; } // .pg_query.PublicationTable publication_table = 253 [json_name = "PublicationTable"]; case kPublicationTable: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.publication_table_); break; } // .pg_query.PublicationObjSpec publication_obj_spec = 254 [json_name = "PublicationObjSpec"]; case kPublicationObjSpec: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.publication_obj_spec_); break; } // .pg_query.CreatePublicationStmt create_publication_stmt = 255 [json_name = "CreatePublicationStmt"]; case kCreatePublicationStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_publication_stmt_); break; } // .pg_query.AlterPublicationStmt alter_publication_stmt = 256 [json_name = "AlterPublicationStmt"]; case kAlterPublicationStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_publication_stmt_); break; } // .pg_query.CreateSubscriptionStmt create_subscription_stmt = 257 [json_name = "CreateSubscriptionStmt"]; case kCreateSubscriptionStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.create_subscription_stmt_); break; } // .pg_query.AlterSubscriptionStmt alter_subscription_stmt = 258 [json_name = "AlterSubscriptionStmt"]; case kAlterSubscriptionStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.alter_subscription_stmt_); break; } // .pg_query.DropSubscriptionStmt drop_subscription_stmt = 259 [json_name = "DropSubscriptionStmt"]; case kDropSubscriptionStmt: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.drop_subscription_stmt_); break; } // .pg_query.Integer integer = 260 [json_name = "Integer"]; case kInteger: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.integer_); break; } // .pg_query.Float float = 261 [json_name = "Float"]; case kFloat: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.float__); break; } // .pg_query.Boolean boolean = 262 [json_name = "Boolean"]; case kBoolean: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.boolean_); break; } // .pg_query.String string = 263 [json_name = "String"]; case kString: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.string_); break; } // .pg_query.BitString bit_string = 264 [json_name = "BitString"]; case kBitString: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.bit_string_); break; } // .pg_query.List list = 265 [json_name = "List"]; case kList: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.list_); break; } // .pg_query.IntList int_list = 266 [json_name = "IntList"]; case kIntList: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.int_list_); break; } // .pg_query.OidList oid_list = 267 [json_name = "OidList"]; case kOidList: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.oid_list_); break; } // .pg_query.A_Const a_const = 268 [json_name = "A_Const"]; case kAConst: { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_.a_const_); break; } case NODE_NOT_SET: { break; } } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData Node::_class_data_ = { Node::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* Node::GetClassData() const { return &_class_data_; } void Node::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Node) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; switch (from.node_case()) { case kAlias: { _this->_internal_mutable_alias()->::pg_query::Alias::MergeFrom( from._internal_alias()); break; } case kRangeVar: { _this->_internal_mutable_range_var()->::pg_query::RangeVar::MergeFrom( from._internal_range_var()); break; } case kTableFunc: { _this->_internal_mutable_table_func()->::pg_query::TableFunc::MergeFrom( from._internal_table_func()); break; } case kIntoClause: { _this->_internal_mutable_into_clause()->::pg_query::IntoClause::MergeFrom( from._internal_into_clause()); break; } case kVar: { _this->_internal_mutable_var()->::pg_query::Var::MergeFrom( from._internal_var()); break; } case kParam: { _this->_internal_mutable_param()->::pg_query::Param::MergeFrom( from._internal_param()); break; } case kAggref: { _this->_internal_mutable_aggref()->::pg_query::Aggref::MergeFrom( from._internal_aggref()); break; } case kGroupingFunc: { _this->_internal_mutable_grouping_func()->::pg_query::GroupingFunc::MergeFrom( from._internal_grouping_func()); break; } case kWindowFunc: { _this->_internal_mutable_window_func()->::pg_query::WindowFunc::MergeFrom( from._internal_window_func()); break; } case kWindowFuncRunCondition: { _this->_internal_mutable_window_func_run_condition()->::pg_query::WindowFuncRunCondition::MergeFrom( from._internal_window_func_run_condition()); break; } case kMergeSupportFunc: { _this->_internal_mutable_merge_support_func()->::pg_query::MergeSupportFunc::MergeFrom( from._internal_merge_support_func()); break; } case kSubscriptingRef: { _this->_internal_mutable_subscripting_ref()->::pg_query::SubscriptingRef::MergeFrom( from._internal_subscripting_ref()); break; } case kFuncExpr: { _this->_internal_mutable_func_expr()->::pg_query::FuncExpr::MergeFrom( from._internal_func_expr()); break; } case kNamedArgExpr: { _this->_internal_mutable_named_arg_expr()->::pg_query::NamedArgExpr::MergeFrom( from._internal_named_arg_expr()); break; } case kOpExpr: { _this->_internal_mutable_op_expr()->::pg_query::OpExpr::MergeFrom( from._internal_op_expr()); break; } case kDistinctExpr: { _this->_internal_mutable_distinct_expr()->::pg_query::DistinctExpr::MergeFrom( from._internal_distinct_expr()); break; } case kNullIfExpr: { _this->_internal_mutable_null_if_expr()->::pg_query::NullIfExpr::MergeFrom( from._internal_null_if_expr()); break; } case kScalarArrayOpExpr: { _this->_internal_mutable_scalar_array_op_expr()->::pg_query::ScalarArrayOpExpr::MergeFrom( from._internal_scalar_array_op_expr()); break; } case kBoolExpr: { _this->_internal_mutable_bool_expr()->::pg_query::BoolExpr::MergeFrom( from._internal_bool_expr()); break; } case kSubLink: { _this->_internal_mutable_sub_link()->::pg_query::SubLink::MergeFrom( from._internal_sub_link()); break; } case kSubPlan: { _this->_internal_mutable_sub_plan()->::pg_query::SubPlan::MergeFrom( from._internal_sub_plan()); break; } case kAlternativeSubPlan: { _this->_internal_mutable_alternative_sub_plan()->::pg_query::AlternativeSubPlan::MergeFrom( from._internal_alternative_sub_plan()); break; } case kFieldSelect: { _this->_internal_mutable_field_select()->::pg_query::FieldSelect::MergeFrom( from._internal_field_select()); break; } case kFieldStore: { _this->_internal_mutable_field_store()->::pg_query::FieldStore::MergeFrom( from._internal_field_store()); break; } case kRelabelType: { _this->_internal_mutable_relabel_type()->::pg_query::RelabelType::MergeFrom( from._internal_relabel_type()); break; } case kCoerceViaIo: { _this->_internal_mutable_coerce_via_io()->::pg_query::CoerceViaIO::MergeFrom( from._internal_coerce_via_io()); break; } case kArrayCoerceExpr: { _this->_internal_mutable_array_coerce_expr()->::pg_query::ArrayCoerceExpr::MergeFrom( from._internal_array_coerce_expr()); break; } case kConvertRowtypeExpr: { _this->_internal_mutable_convert_rowtype_expr()->::pg_query::ConvertRowtypeExpr::MergeFrom( from._internal_convert_rowtype_expr()); break; } case kCollateExpr: { _this->_internal_mutable_collate_expr()->::pg_query::CollateExpr::MergeFrom( from._internal_collate_expr()); break; } case kCaseExpr: { _this->_internal_mutable_case_expr()->::pg_query::CaseExpr::MergeFrom( from._internal_case_expr()); break; } case kCaseWhen: { _this->_internal_mutable_case_when()->::pg_query::CaseWhen::MergeFrom( from._internal_case_when()); break; } case kCaseTestExpr: { _this->_internal_mutable_case_test_expr()->::pg_query::CaseTestExpr::MergeFrom( from._internal_case_test_expr()); break; } case kArrayExpr: { _this->_internal_mutable_array_expr()->::pg_query::ArrayExpr::MergeFrom( from._internal_array_expr()); break; } case kRowExpr: { _this->_internal_mutable_row_expr()->::pg_query::RowExpr::MergeFrom( from._internal_row_expr()); break; } case kRowCompareExpr: { _this->_internal_mutable_row_compare_expr()->::pg_query::RowCompareExpr::MergeFrom( from._internal_row_compare_expr()); break; } case kCoalesceExpr: { _this->_internal_mutable_coalesce_expr()->::pg_query::CoalesceExpr::MergeFrom( from._internal_coalesce_expr()); break; } case kMinMaxExpr: { _this->_internal_mutable_min_max_expr()->::pg_query::MinMaxExpr::MergeFrom( from._internal_min_max_expr()); break; } case kSqlvalueFunction: { _this->_internal_mutable_sqlvalue_function()->::pg_query::SQLValueFunction::MergeFrom( from._internal_sqlvalue_function()); break; } case kXmlExpr: { _this->_internal_mutable_xml_expr()->::pg_query::XmlExpr::MergeFrom( from._internal_xml_expr()); break; } case kJsonFormat: { _this->_internal_mutable_json_format()->::pg_query::JsonFormat::MergeFrom( from._internal_json_format()); break; } case kJsonReturning: { _this->_internal_mutable_json_returning()->::pg_query::JsonReturning::MergeFrom( from._internal_json_returning()); break; } case kJsonValueExpr: { _this->_internal_mutable_json_value_expr()->::pg_query::JsonValueExpr::MergeFrom( from._internal_json_value_expr()); break; } case kJsonConstructorExpr: { _this->_internal_mutable_json_constructor_expr()->::pg_query::JsonConstructorExpr::MergeFrom( from._internal_json_constructor_expr()); break; } case kJsonIsPredicate: { _this->_internal_mutable_json_is_predicate()->::pg_query::JsonIsPredicate::MergeFrom( from._internal_json_is_predicate()); break; } case kJsonBehavior: { _this->_internal_mutable_json_behavior()->::pg_query::JsonBehavior::MergeFrom( from._internal_json_behavior()); break; } case kJsonExpr: { _this->_internal_mutable_json_expr()->::pg_query::JsonExpr::MergeFrom( from._internal_json_expr()); break; } case kJsonTablePath: { _this->_internal_mutable_json_table_path()->::pg_query::JsonTablePath::MergeFrom( from._internal_json_table_path()); break; } case kJsonTablePathScan: { _this->_internal_mutable_json_table_path_scan()->::pg_query::JsonTablePathScan::MergeFrom( from._internal_json_table_path_scan()); break; } case kJsonTableSiblingJoin: { _this->_internal_mutable_json_table_sibling_join()->::pg_query::JsonTableSiblingJoin::MergeFrom( from._internal_json_table_sibling_join()); break; } case kNullTest: { _this->_internal_mutable_null_test()->::pg_query::NullTest::MergeFrom( from._internal_null_test()); break; } case kBooleanTest: { _this->_internal_mutable_boolean_test()->::pg_query::BooleanTest::MergeFrom( from._internal_boolean_test()); break; } case kMergeAction: { _this->_internal_mutable_merge_action()->::pg_query::MergeAction::MergeFrom( from._internal_merge_action()); break; } case kCoerceToDomain: { _this->_internal_mutable_coerce_to_domain()->::pg_query::CoerceToDomain::MergeFrom( from._internal_coerce_to_domain()); break; } case kCoerceToDomainValue: { _this->_internal_mutable_coerce_to_domain_value()->::pg_query::CoerceToDomainValue::MergeFrom( from._internal_coerce_to_domain_value()); break; } case kSetToDefault: { _this->_internal_mutable_set_to_default()->::pg_query::SetToDefault::MergeFrom( from._internal_set_to_default()); break; } case kCurrentOfExpr: { _this->_internal_mutable_current_of_expr()->::pg_query::CurrentOfExpr::MergeFrom( from._internal_current_of_expr()); break; } case kNextValueExpr: { _this->_internal_mutable_next_value_expr()->::pg_query::NextValueExpr::MergeFrom( from._internal_next_value_expr()); break; } case kInferenceElem: { _this->_internal_mutable_inference_elem()->::pg_query::InferenceElem::MergeFrom( from._internal_inference_elem()); break; } case kTargetEntry: { _this->_internal_mutable_target_entry()->::pg_query::TargetEntry::MergeFrom( from._internal_target_entry()); break; } case kRangeTblRef: { _this->_internal_mutable_range_tbl_ref()->::pg_query::RangeTblRef::MergeFrom( from._internal_range_tbl_ref()); break; } case kJoinExpr: { _this->_internal_mutable_join_expr()->::pg_query::JoinExpr::MergeFrom( from._internal_join_expr()); break; } case kFromExpr: { _this->_internal_mutable_from_expr()->::pg_query::FromExpr::MergeFrom( from._internal_from_expr()); break; } case kOnConflictExpr: { _this->_internal_mutable_on_conflict_expr()->::pg_query::OnConflictExpr::MergeFrom( from._internal_on_conflict_expr()); break; } case kQuery: { _this->_internal_mutable_query()->::pg_query::Query::MergeFrom( from._internal_query()); break; } case kTypeName: { _this->_internal_mutable_type_name()->::pg_query::TypeName::MergeFrom( from._internal_type_name()); break; } case kColumnRef: { _this->_internal_mutable_column_ref()->::pg_query::ColumnRef::MergeFrom( from._internal_column_ref()); break; } case kParamRef: { _this->_internal_mutable_param_ref()->::pg_query::ParamRef::MergeFrom( from._internal_param_ref()); break; } case kAExpr: { _this->_internal_mutable_a_expr()->::pg_query::A_Expr::MergeFrom( from._internal_a_expr()); break; } case kTypeCast: { _this->_internal_mutable_type_cast()->::pg_query::TypeCast::MergeFrom( from._internal_type_cast()); break; } case kCollateClause: { _this->_internal_mutable_collate_clause()->::pg_query::CollateClause::MergeFrom( from._internal_collate_clause()); break; } case kRoleSpec: { _this->_internal_mutable_role_spec()->::pg_query::RoleSpec::MergeFrom( from._internal_role_spec()); break; } case kFuncCall: { _this->_internal_mutable_func_call()->::pg_query::FuncCall::MergeFrom( from._internal_func_call()); break; } case kAStar: { _this->_internal_mutable_a_star()->::pg_query::A_Star::MergeFrom( from._internal_a_star()); break; } case kAIndices: { _this->_internal_mutable_a_indices()->::pg_query::A_Indices::MergeFrom( from._internal_a_indices()); break; } case kAIndirection: { _this->_internal_mutable_a_indirection()->::pg_query::A_Indirection::MergeFrom( from._internal_a_indirection()); break; } case kAArrayExpr: { _this->_internal_mutable_a_array_expr()->::pg_query::A_ArrayExpr::MergeFrom( from._internal_a_array_expr()); break; } case kResTarget: { _this->_internal_mutable_res_target()->::pg_query::ResTarget::MergeFrom( from._internal_res_target()); break; } case kMultiAssignRef: { _this->_internal_mutable_multi_assign_ref()->::pg_query::MultiAssignRef::MergeFrom( from._internal_multi_assign_ref()); break; } case kSortBy: { _this->_internal_mutable_sort_by()->::pg_query::SortBy::MergeFrom( from._internal_sort_by()); break; } case kWindowDef: { _this->_internal_mutable_window_def()->::pg_query::WindowDef::MergeFrom( from._internal_window_def()); break; } case kRangeSubselect: { _this->_internal_mutable_range_subselect()->::pg_query::RangeSubselect::MergeFrom( from._internal_range_subselect()); break; } case kRangeFunction: { _this->_internal_mutable_range_function()->::pg_query::RangeFunction::MergeFrom( from._internal_range_function()); break; } case kRangeTableFunc: { _this->_internal_mutable_range_table_func()->::pg_query::RangeTableFunc::MergeFrom( from._internal_range_table_func()); break; } case kRangeTableFuncCol: { _this->_internal_mutable_range_table_func_col()->::pg_query::RangeTableFuncCol::MergeFrom( from._internal_range_table_func_col()); break; } case kRangeTableSample: { _this->_internal_mutable_range_table_sample()->::pg_query::RangeTableSample::MergeFrom( from._internal_range_table_sample()); break; } case kColumnDef: { _this->_internal_mutable_column_def()->::pg_query::ColumnDef::MergeFrom( from._internal_column_def()); break; } case kTableLikeClause: { _this->_internal_mutable_table_like_clause()->::pg_query::TableLikeClause::MergeFrom( from._internal_table_like_clause()); break; } case kIndexElem: { _this->_internal_mutable_index_elem()->::pg_query::IndexElem::MergeFrom( from._internal_index_elem()); break; } case kDefElem: { _this->_internal_mutable_def_elem()->::pg_query::DefElem::MergeFrom( from._internal_def_elem()); break; } case kLockingClause: { _this->_internal_mutable_locking_clause()->::pg_query::LockingClause::MergeFrom( from._internal_locking_clause()); break; } case kXmlSerialize: { _this->_internal_mutable_xml_serialize()->::pg_query::XmlSerialize::MergeFrom( from._internal_xml_serialize()); break; } case kPartitionElem: { _this->_internal_mutable_partition_elem()->::pg_query::PartitionElem::MergeFrom( from._internal_partition_elem()); break; } case kPartitionSpec: { _this->_internal_mutable_partition_spec()->::pg_query::PartitionSpec::MergeFrom( from._internal_partition_spec()); break; } case kPartitionBoundSpec: { _this->_internal_mutable_partition_bound_spec()->::pg_query::PartitionBoundSpec::MergeFrom( from._internal_partition_bound_spec()); break; } case kPartitionRangeDatum: { _this->_internal_mutable_partition_range_datum()->::pg_query::PartitionRangeDatum::MergeFrom( from._internal_partition_range_datum()); break; } case kSinglePartitionSpec: { _this->_internal_mutable_single_partition_spec()->::pg_query::SinglePartitionSpec::MergeFrom( from._internal_single_partition_spec()); break; } case kPartitionCmd: { _this->_internal_mutable_partition_cmd()->::pg_query::PartitionCmd::MergeFrom( from._internal_partition_cmd()); break; } case kRangeTblEntry: { _this->_internal_mutable_range_tbl_entry()->::pg_query::RangeTblEntry::MergeFrom( from._internal_range_tbl_entry()); break; } case kRtepermissionInfo: { _this->_internal_mutable_rtepermission_info()->::pg_query::RTEPermissionInfo::MergeFrom( from._internal_rtepermission_info()); break; } case kRangeTblFunction: { _this->_internal_mutable_range_tbl_function()->::pg_query::RangeTblFunction::MergeFrom( from._internal_range_tbl_function()); break; } case kTableSampleClause: { _this->_internal_mutable_table_sample_clause()->::pg_query::TableSampleClause::MergeFrom( from._internal_table_sample_clause()); break; } case kWithCheckOption: { _this->_internal_mutable_with_check_option()->::pg_query::WithCheckOption::MergeFrom( from._internal_with_check_option()); break; } case kSortGroupClause: { _this->_internal_mutable_sort_group_clause()->::pg_query::SortGroupClause::MergeFrom( from._internal_sort_group_clause()); break; } case kGroupingSet: { _this->_internal_mutable_grouping_set()->::pg_query::GroupingSet::MergeFrom( from._internal_grouping_set()); break; } case kWindowClause: { _this->_internal_mutable_window_clause()->::pg_query::WindowClause::MergeFrom( from._internal_window_clause()); break; } case kRowMarkClause: { _this->_internal_mutable_row_mark_clause()->::pg_query::RowMarkClause::MergeFrom( from._internal_row_mark_clause()); break; } case kWithClause: { _this->_internal_mutable_with_clause()->::pg_query::WithClause::MergeFrom( from._internal_with_clause()); break; } case kInferClause: { _this->_internal_mutable_infer_clause()->::pg_query::InferClause::MergeFrom( from._internal_infer_clause()); break; } case kOnConflictClause: { _this->_internal_mutable_on_conflict_clause()->::pg_query::OnConflictClause::MergeFrom( from._internal_on_conflict_clause()); break; } case kCtesearchClause: { _this->_internal_mutable_ctesearch_clause()->::pg_query::CTESearchClause::MergeFrom( from._internal_ctesearch_clause()); break; } case kCtecycleClause: { _this->_internal_mutable_ctecycle_clause()->::pg_query::CTECycleClause::MergeFrom( from._internal_ctecycle_clause()); break; } case kCommonTableExpr: { _this->_internal_mutable_common_table_expr()->::pg_query::CommonTableExpr::MergeFrom( from._internal_common_table_expr()); break; } case kMergeWhenClause: { _this->_internal_mutable_merge_when_clause()->::pg_query::MergeWhenClause::MergeFrom( from._internal_merge_when_clause()); break; } case kTriggerTransition: { _this->_internal_mutable_trigger_transition()->::pg_query::TriggerTransition::MergeFrom( from._internal_trigger_transition()); break; } case kJsonOutput: { _this->_internal_mutable_json_output()->::pg_query::JsonOutput::MergeFrom( from._internal_json_output()); break; } case kJsonArgument: { _this->_internal_mutable_json_argument()->::pg_query::JsonArgument::MergeFrom( from._internal_json_argument()); break; } case kJsonFuncExpr: { _this->_internal_mutable_json_func_expr()->::pg_query::JsonFuncExpr::MergeFrom( from._internal_json_func_expr()); break; } case kJsonTablePathSpec: { _this->_internal_mutable_json_table_path_spec()->::pg_query::JsonTablePathSpec::MergeFrom( from._internal_json_table_path_spec()); break; } case kJsonTable: { _this->_internal_mutable_json_table()->::pg_query::JsonTable::MergeFrom( from._internal_json_table()); break; } case kJsonTableColumn: { _this->_internal_mutable_json_table_column()->::pg_query::JsonTableColumn::MergeFrom( from._internal_json_table_column()); break; } case kJsonKeyValue: { _this->_internal_mutable_json_key_value()->::pg_query::JsonKeyValue::MergeFrom( from._internal_json_key_value()); break; } case kJsonParseExpr: { _this->_internal_mutable_json_parse_expr()->::pg_query::JsonParseExpr::MergeFrom( from._internal_json_parse_expr()); break; } case kJsonScalarExpr: { _this->_internal_mutable_json_scalar_expr()->::pg_query::JsonScalarExpr::MergeFrom( from._internal_json_scalar_expr()); break; } case kJsonSerializeExpr: { _this->_internal_mutable_json_serialize_expr()->::pg_query::JsonSerializeExpr::MergeFrom( from._internal_json_serialize_expr()); break; } case kJsonObjectConstructor: { _this->_internal_mutable_json_object_constructor()->::pg_query::JsonObjectConstructor::MergeFrom( from._internal_json_object_constructor()); break; } case kJsonArrayConstructor: { _this->_internal_mutable_json_array_constructor()->::pg_query::JsonArrayConstructor::MergeFrom( from._internal_json_array_constructor()); break; } case kJsonArrayQueryConstructor: { _this->_internal_mutable_json_array_query_constructor()->::pg_query::JsonArrayQueryConstructor::MergeFrom( from._internal_json_array_query_constructor()); break; } case kJsonAggConstructor: { _this->_internal_mutable_json_agg_constructor()->::pg_query::JsonAggConstructor::MergeFrom( from._internal_json_agg_constructor()); break; } case kJsonObjectAgg: { _this->_internal_mutable_json_object_agg()->::pg_query::JsonObjectAgg::MergeFrom( from._internal_json_object_agg()); break; } case kJsonArrayAgg: { _this->_internal_mutable_json_array_agg()->::pg_query::JsonArrayAgg::MergeFrom( from._internal_json_array_agg()); break; } case kRawStmt: { _this->_internal_mutable_raw_stmt()->::pg_query::RawStmt::MergeFrom( from._internal_raw_stmt()); break; } case kInsertStmt: { _this->_internal_mutable_insert_stmt()->::pg_query::InsertStmt::MergeFrom( from._internal_insert_stmt()); break; } case kDeleteStmt: { _this->_internal_mutable_delete_stmt()->::pg_query::DeleteStmt::MergeFrom( from._internal_delete_stmt()); break; } case kUpdateStmt: { _this->_internal_mutable_update_stmt()->::pg_query::UpdateStmt::MergeFrom( from._internal_update_stmt()); break; } case kMergeStmt: { _this->_internal_mutable_merge_stmt()->::pg_query::MergeStmt::MergeFrom( from._internal_merge_stmt()); break; } case kSelectStmt: { _this->_internal_mutable_select_stmt()->::pg_query::SelectStmt::MergeFrom( from._internal_select_stmt()); break; } case kSetOperationStmt: { _this->_internal_mutable_set_operation_stmt()->::pg_query::SetOperationStmt::MergeFrom( from._internal_set_operation_stmt()); break; } case kReturnStmt: { _this->_internal_mutable_return_stmt()->::pg_query::ReturnStmt::MergeFrom( from._internal_return_stmt()); break; } case kPlassignStmt: { _this->_internal_mutable_plassign_stmt()->::pg_query::PLAssignStmt::MergeFrom( from._internal_plassign_stmt()); break; } case kCreateSchemaStmt: { _this->_internal_mutable_create_schema_stmt()->::pg_query::CreateSchemaStmt::MergeFrom( from._internal_create_schema_stmt()); break; } case kAlterTableStmt: { _this->_internal_mutable_alter_table_stmt()->::pg_query::AlterTableStmt::MergeFrom( from._internal_alter_table_stmt()); break; } case kReplicaIdentityStmt: { _this->_internal_mutable_replica_identity_stmt()->::pg_query::ReplicaIdentityStmt::MergeFrom( from._internal_replica_identity_stmt()); break; } case kAlterTableCmd: { _this->_internal_mutable_alter_table_cmd()->::pg_query::AlterTableCmd::MergeFrom( from._internal_alter_table_cmd()); break; } case kAlterCollationStmt: { _this->_internal_mutable_alter_collation_stmt()->::pg_query::AlterCollationStmt::MergeFrom( from._internal_alter_collation_stmt()); break; } case kAlterDomainStmt: { _this->_internal_mutable_alter_domain_stmt()->::pg_query::AlterDomainStmt::MergeFrom( from._internal_alter_domain_stmt()); break; } case kGrantStmt: { _this->_internal_mutable_grant_stmt()->::pg_query::GrantStmt::MergeFrom( from._internal_grant_stmt()); break; } case kObjectWithArgs: { _this->_internal_mutable_object_with_args()->::pg_query::ObjectWithArgs::MergeFrom( from._internal_object_with_args()); break; } case kAccessPriv: { _this->_internal_mutable_access_priv()->::pg_query::AccessPriv::MergeFrom( from._internal_access_priv()); break; } case kGrantRoleStmt: { _this->_internal_mutable_grant_role_stmt()->::pg_query::GrantRoleStmt::MergeFrom( from._internal_grant_role_stmt()); break; } case kAlterDefaultPrivilegesStmt: { _this->_internal_mutable_alter_default_privileges_stmt()->::pg_query::AlterDefaultPrivilegesStmt::MergeFrom( from._internal_alter_default_privileges_stmt()); break; } case kCopyStmt: { _this->_internal_mutable_copy_stmt()->::pg_query::CopyStmt::MergeFrom( from._internal_copy_stmt()); break; } case kVariableSetStmt: { _this->_internal_mutable_variable_set_stmt()->::pg_query::VariableSetStmt::MergeFrom( from._internal_variable_set_stmt()); break; } case kVariableShowStmt: { _this->_internal_mutable_variable_show_stmt()->::pg_query::VariableShowStmt::MergeFrom( from._internal_variable_show_stmt()); break; } case kCreateStmt: { _this->_internal_mutable_create_stmt()->::pg_query::CreateStmt::MergeFrom( from._internal_create_stmt()); break; } case kConstraint: { _this->_internal_mutable_constraint()->::pg_query::Constraint::MergeFrom( from._internal_constraint()); break; } case kCreateTableSpaceStmt: { _this->_internal_mutable_create_table_space_stmt()->::pg_query::CreateTableSpaceStmt::MergeFrom( from._internal_create_table_space_stmt()); break; } case kDropTableSpaceStmt: { _this->_internal_mutable_drop_table_space_stmt()->::pg_query::DropTableSpaceStmt::MergeFrom( from._internal_drop_table_space_stmt()); break; } case kAlterTableSpaceOptionsStmt: { _this->_internal_mutable_alter_table_space_options_stmt()->::pg_query::AlterTableSpaceOptionsStmt::MergeFrom( from._internal_alter_table_space_options_stmt()); break; } case kAlterTableMoveAllStmt: { _this->_internal_mutable_alter_table_move_all_stmt()->::pg_query::AlterTableMoveAllStmt::MergeFrom( from._internal_alter_table_move_all_stmt()); break; } case kCreateExtensionStmt: { _this->_internal_mutable_create_extension_stmt()->::pg_query::CreateExtensionStmt::MergeFrom( from._internal_create_extension_stmt()); break; } case kAlterExtensionStmt: { _this->_internal_mutable_alter_extension_stmt()->::pg_query::AlterExtensionStmt::MergeFrom( from._internal_alter_extension_stmt()); break; } case kAlterExtensionContentsStmt: { _this->_internal_mutable_alter_extension_contents_stmt()->::pg_query::AlterExtensionContentsStmt::MergeFrom( from._internal_alter_extension_contents_stmt()); break; } case kCreateFdwStmt: { _this->_internal_mutable_create_fdw_stmt()->::pg_query::CreateFdwStmt::MergeFrom( from._internal_create_fdw_stmt()); break; } case kAlterFdwStmt: { _this->_internal_mutable_alter_fdw_stmt()->::pg_query::AlterFdwStmt::MergeFrom( from._internal_alter_fdw_stmt()); break; } case kCreateForeignServerStmt: { _this->_internal_mutable_create_foreign_server_stmt()->::pg_query::CreateForeignServerStmt::MergeFrom( from._internal_create_foreign_server_stmt()); break; } case kAlterForeignServerStmt: { _this->_internal_mutable_alter_foreign_server_stmt()->::pg_query::AlterForeignServerStmt::MergeFrom( from._internal_alter_foreign_server_stmt()); break; } case kCreateForeignTableStmt: { _this->_internal_mutable_create_foreign_table_stmt()->::pg_query::CreateForeignTableStmt::MergeFrom( from._internal_create_foreign_table_stmt()); break; } case kCreateUserMappingStmt: { _this->_internal_mutable_create_user_mapping_stmt()->::pg_query::CreateUserMappingStmt::MergeFrom( from._internal_create_user_mapping_stmt()); break; } case kAlterUserMappingStmt: { _this->_internal_mutable_alter_user_mapping_stmt()->::pg_query::AlterUserMappingStmt::MergeFrom( from._internal_alter_user_mapping_stmt()); break; } case kDropUserMappingStmt: { _this->_internal_mutable_drop_user_mapping_stmt()->::pg_query::DropUserMappingStmt::MergeFrom( from._internal_drop_user_mapping_stmt()); break; } case kImportForeignSchemaStmt: { _this->_internal_mutable_import_foreign_schema_stmt()->::pg_query::ImportForeignSchemaStmt::MergeFrom( from._internal_import_foreign_schema_stmt()); break; } case kCreatePolicyStmt: { _this->_internal_mutable_create_policy_stmt()->::pg_query::CreatePolicyStmt::MergeFrom( from._internal_create_policy_stmt()); break; } case kAlterPolicyStmt: { _this->_internal_mutable_alter_policy_stmt()->::pg_query::AlterPolicyStmt::MergeFrom( from._internal_alter_policy_stmt()); break; } case kCreateAmStmt: { _this->_internal_mutable_create_am_stmt()->::pg_query::CreateAmStmt::MergeFrom( from._internal_create_am_stmt()); break; } case kCreateTrigStmt: { _this->_internal_mutable_create_trig_stmt()->::pg_query::CreateTrigStmt::MergeFrom( from._internal_create_trig_stmt()); break; } case kCreateEventTrigStmt: { _this->_internal_mutable_create_event_trig_stmt()->::pg_query::CreateEventTrigStmt::MergeFrom( from._internal_create_event_trig_stmt()); break; } case kAlterEventTrigStmt: { _this->_internal_mutable_alter_event_trig_stmt()->::pg_query::AlterEventTrigStmt::MergeFrom( from._internal_alter_event_trig_stmt()); break; } case kCreatePlangStmt: { _this->_internal_mutable_create_plang_stmt()->::pg_query::CreatePLangStmt::MergeFrom( from._internal_create_plang_stmt()); break; } case kCreateRoleStmt: { _this->_internal_mutable_create_role_stmt()->::pg_query::CreateRoleStmt::MergeFrom( from._internal_create_role_stmt()); break; } case kAlterRoleStmt: { _this->_internal_mutable_alter_role_stmt()->::pg_query::AlterRoleStmt::MergeFrom( from._internal_alter_role_stmt()); break; } case kAlterRoleSetStmt: { _this->_internal_mutable_alter_role_set_stmt()->::pg_query::AlterRoleSetStmt::MergeFrom( from._internal_alter_role_set_stmt()); break; } case kDropRoleStmt: { _this->_internal_mutable_drop_role_stmt()->::pg_query::DropRoleStmt::MergeFrom( from._internal_drop_role_stmt()); break; } case kCreateSeqStmt: { _this->_internal_mutable_create_seq_stmt()->::pg_query::CreateSeqStmt::MergeFrom( from._internal_create_seq_stmt()); break; } case kAlterSeqStmt: { _this->_internal_mutable_alter_seq_stmt()->::pg_query::AlterSeqStmt::MergeFrom( from._internal_alter_seq_stmt()); break; } case kDefineStmt: { _this->_internal_mutable_define_stmt()->::pg_query::DefineStmt::MergeFrom( from._internal_define_stmt()); break; } case kCreateDomainStmt: { _this->_internal_mutable_create_domain_stmt()->::pg_query::CreateDomainStmt::MergeFrom( from._internal_create_domain_stmt()); break; } case kCreateOpClassStmt: { _this->_internal_mutable_create_op_class_stmt()->::pg_query::CreateOpClassStmt::MergeFrom( from._internal_create_op_class_stmt()); break; } case kCreateOpClassItem: { _this->_internal_mutable_create_op_class_item()->::pg_query::CreateOpClassItem::MergeFrom( from._internal_create_op_class_item()); break; } case kCreateOpFamilyStmt: { _this->_internal_mutable_create_op_family_stmt()->::pg_query::CreateOpFamilyStmt::MergeFrom( from._internal_create_op_family_stmt()); break; } case kAlterOpFamilyStmt: { _this->_internal_mutable_alter_op_family_stmt()->::pg_query::AlterOpFamilyStmt::MergeFrom( from._internal_alter_op_family_stmt()); break; } case kDropStmt: { _this->_internal_mutable_drop_stmt()->::pg_query::DropStmt::MergeFrom( from._internal_drop_stmt()); break; } case kTruncateStmt: { _this->_internal_mutable_truncate_stmt()->::pg_query::TruncateStmt::MergeFrom( from._internal_truncate_stmt()); break; } case kCommentStmt: { _this->_internal_mutable_comment_stmt()->::pg_query::CommentStmt::MergeFrom( from._internal_comment_stmt()); break; } case kSecLabelStmt: { _this->_internal_mutable_sec_label_stmt()->::pg_query::SecLabelStmt::MergeFrom( from._internal_sec_label_stmt()); break; } case kDeclareCursorStmt: { _this->_internal_mutable_declare_cursor_stmt()->::pg_query::DeclareCursorStmt::MergeFrom( from._internal_declare_cursor_stmt()); break; } case kClosePortalStmt: { _this->_internal_mutable_close_portal_stmt()->::pg_query::ClosePortalStmt::MergeFrom( from._internal_close_portal_stmt()); break; } case kFetchStmt: { _this->_internal_mutable_fetch_stmt()->::pg_query::FetchStmt::MergeFrom( from._internal_fetch_stmt()); break; } case kIndexStmt: { _this->_internal_mutable_index_stmt()->::pg_query::IndexStmt::MergeFrom( from._internal_index_stmt()); break; } case kCreateStatsStmt: { _this->_internal_mutable_create_stats_stmt()->::pg_query::CreateStatsStmt::MergeFrom( from._internal_create_stats_stmt()); break; } case kStatsElem: { _this->_internal_mutable_stats_elem()->::pg_query::StatsElem::MergeFrom( from._internal_stats_elem()); break; } case kAlterStatsStmt: { _this->_internal_mutable_alter_stats_stmt()->::pg_query::AlterStatsStmt::MergeFrom( from._internal_alter_stats_stmt()); break; } case kCreateFunctionStmt: { _this->_internal_mutable_create_function_stmt()->::pg_query::CreateFunctionStmt::MergeFrom( from._internal_create_function_stmt()); break; } case kFunctionParameter: { _this->_internal_mutable_function_parameter()->::pg_query::FunctionParameter::MergeFrom( from._internal_function_parameter()); break; } case kAlterFunctionStmt: { _this->_internal_mutable_alter_function_stmt()->::pg_query::AlterFunctionStmt::MergeFrom( from._internal_alter_function_stmt()); break; } case kDoStmt: { _this->_internal_mutable_do_stmt()->::pg_query::DoStmt::MergeFrom( from._internal_do_stmt()); break; } case kInlineCodeBlock: { _this->_internal_mutable_inline_code_block()->::pg_query::InlineCodeBlock::MergeFrom( from._internal_inline_code_block()); break; } case kCallStmt: { _this->_internal_mutable_call_stmt()->::pg_query::CallStmt::MergeFrom( from._internal_call_stmt()); break; } case kCallContext: { _this->_internal_mutable_call_context()->::pg_query::CallContext::MergeFrom( from._internal_call_context()); break; } case kRenameStmt: { _this->_internal_mutable_rename_stmt()->::pg_query::RenameStmt::MergeFrom( from._internal_rename_stmt()); break; } case kAlterObjectDependsStmt: { _this->_internal_mutable_alter_object_depends_stmt()->::pg_query::AlterObjectDependsStmt::MergeFrom( from._internal_alter_object_depends_stmt()); break; } case kAlterObjectSchemaStmt: { _this->_internal_mutable_alter_object_schema_stmt()->::pg_query::AlterObjectSchemaStmt::MergeFrom( from._internal_alter_object_schema_stmt()); break; } case kAlterOwnerStmt: { _this->_internal_mutable_alter_owner_stmt()->::pg_query::AlterOwnerStmt::MergeFrom( from._internal_alter_owner_stmt()); break; } case kAlterOperatorStmt: { _this->_internal_mutable_alter_operator_stmt()->::pg_query::AlterOperatorStmt::MergeFrom( from._internal_alter_operator_stmt()); break; } case kAlterTypeStmt: { _this->_internal_mutable_alter_type_stmt()->::pg_query::AlterTypeStmt::MergeFrom( from._internal_alter_type_stmt()); break; } case kRuleStmt: { _this->_internal_mutable_rule_stmt()->::pg_query::RuleStmt::MergeFrom( from._internal_rule_stmt()); break; } case kNotifyStmt: { _this->_internal_mutable_notify_stmt()->::pg_query::NotifyStmt::MergeFrom( from._internal_notify_stmt()); break; } case kListenStmt: { _this->_internal_mutable_listen_stmt()->::pg_query::ListenStmt::MergeFrom( from._internal_listen_stmt()); break; } case kUnlistenStmt: { _this->_internal_mutable_unlisten_stmt()->::pg_query::UnlistenStmt::MergeFrom( from._internal_unlisten_stmt()); break; } case kTransactionStmt: { _this->_internal_mutable_transaction_stmt()->::pg_query::TransactionStmt::MergeFrom( from._internal_transaction_stmt()); break; } case kCompositeTypeStmt: { _this->_internal_mutable_composite_type_stmt()->::pg_query::CompositeTypeStmt::MergeFrom( from._internal_composite_type_stmt()); break; } case kCreateEnumStmt: { _this->_internal_mutable_create_enum_stmt()->::pg_query::CreateEnumStmt::MergeFrom( from._internal_create_enum_stmt()); break; } case kCreateRangeStmt: { _this->_internal_mutable_create_range_stmt()->::pg_query::CreateRangeStmt::MergeFrom( from._internal_create_range_stmt()); break; } case kAlterEnumStmt: { _this->_internal_mutable_alter_enum_stmt()->::pg_query::AlterEnumStmt::MergeFrom( from._internal_alter_enum_stmt()); break; } case kViewStmt: { _this->_internal_mutable_view_stmt()->::pg_query::ViewStmt::MergeFrom( from._internal_view_stmt()); break; } case kLoadStmt: { _this->_internal_mutable_load_stmt()->::pg_query::LoadStmt::MergeFrom( from._internal_load_stmt()); break; } case kCreatedbStmt: { _this->_internal_mutable_createdb_stmt()->::pg_query::CreatedbStmt::MergeFrom( from._internal_createdb_stmt()); break; } case kAlterDatabaseStmt: { _this->_internal_mutable_alter_database_stmt()->::pg_query::AlterDatabaseStmt::MergeFrom( from._internal_alter_database_stmt()); break; } case kAlterDatabaseRefreshCollStmt: { _this->_internal_mutable_alter_database_refresh_coll_stmt()->::pg_query::AlterDatabaseRefreshCollStmt::MergeFrom( from._internal_alter_database_refresh_coll_stmt()); break; } case kAlterDatabaseSetStmt: { _this->_internal_mutable_alter_database_set_stmt()->::pg_query::AlterDatabaseSetStmt::MergeFrom( from._internal_alter_database_set_stmt()); break; } case kDropdbStmt: { _this->_internal_mutable_dropdb_stmt()->::pg_query::DropdbStmt::MergeFrom( from._internal_dropdb_stmt()); break; } case kAlterSystemStmt: { _this->_internal_mutable_alter_system_stmt()->::pg_query::AlterSystemStmt::MergeFrom( from._internal_alter_system_stmt()); break; } case kClusterStmt: { _this->_internal_mutable_cluster_stmt()->::pg_query::ClusterStmt::MergeFrom( from._internal_cluster_stmt()); break; } case kVacuumStmt: { _this->_internal_mutable_vacuum_stmt()->::pg_query::VacuumStmt::MergeFrom( from._internal_vacuum_stmt()); break; } case kVacuumRelation: { _this->_internal_mutable_vacuum_relation()->::pg_query::VacuumRelation::MergeFrom( from._internal_vacuum_relation()); break; } case kExplainStmt: { _this->_internal_mutable_explain_stmt()->::pg_query::ExplainStmt::MergeFrom( from._internal_explain_stmt()); break; } case kCreateTableAsStmt: { _this->_internal_mutable_create_table_as_stmt()->::pg_query::CreateTableAsStmt::MergeFrom( from._internal_create_table_as_stmt()); break; } case kRefreshMatViewStmt: { _this->_internal_mutable_refresh_mat_view_stmt()->::pg_query::RefreshMatViewStmt::MergeFrom( from._internal_refresh_mat_view_stmt()); break; } case kCheckPointStmt: { _this->_internal_mutable_check_point_stmt()->::pg_query::CheckPointStmt::MergeFrom( from._internal_check_point_stmt()); break; } case kDiscardStmt: { _this->_internal_mutable_discard_stmt()->::pg_query::DiscardStmt::MergeFrom( from._internal_discard_stmt()); break; } case kLockStmt: { _this->_internal_mutable_lock_stmt()->::pg_query::LockStmt::MergeFrom( from._internal_lock_stmt()); break; } case kConstraintsSetStmt: { _this->_internal_mutable_constraints_set_stmt()->::pg_query::ConstraintsSetStmt::MergeFrom( from._internal_constraints_set_stmt()); break; } case kReindexStmt: { _this->_internal_mutable_reindex_stmt()->::pg_query::ReindexStmt::MergeFrom( from._internal_reindex_stmt()); break; } case kCreateConversionStmt: { _this->_internal_mutable_create_conversion_stmt()->::pg_query::CreateConversionStmt::MergeFrom( from._internal_create_conversion_stmt()); break; } case kCreateCastStmt: { _this->_internal_mutable_create_cast_stmt()->::pg_query::CreateCastStmt::MergeFrom( from._internal_create_cast_stmt()); break; } case kCreateTransformStmt: { _this->_internal_mutable_create_transform_stmt()->::pg_query::CreateTransformStmt::MergeFrom( from._internal_create_transform_stmt()); break; } case kPrepareStmt: { _this->_internal_mutable_prepare_stmt()->::pg_query::PrepareStmt::MergeFrom( from._internal_prepare_stmt()); break; } case kExecuteStmt: { _this->_internal_mutable_execute_stmt()->::pg_query::ExecuteStmt::MergeFrom( from._internal_execute_stmt()); break; } case kDeallocateStmt: { _this->_internal_mutable_deallocate_stmt()->::pg_query::DeallocateStmt::MergeFrom( from._internal_deallocate_stmt()); break; } case kDropOwnedStmt: { _this->_internal_mutable_drop_owned_stmt()->::pg_query::DropOwnedStmt::MergeFrom( from._internal_drop_owned_stmt()); break; } case kReassignOwnedStmt: { _this->_internal_mutable_reassign_owned_stmt()->::pg_query::ReassignOwnedStmt::MergeFrom( from._internal_reassign_owned_stmt()); break; } case kAlterTsdictionaryStmt: { _this->_internal_mutable_alter_tsdictionary_stmt()->::pg_query::AlterTSDictionaryStmt::MergeFrom( from._internal_alter_tsdictionary_stmt()); break; } case kAlterTsconfigurationStmt: { _this->_internal_mutable_alter_tsconfiguration_stmt()->::pg_query::AlterTSConfigurationStmt::MergeFrom( from._internal_alter_tsconfiguration_stmt()); break; } case kPublicationTable: { _this->_internal_mutable_publication_table()->::pg_query::PublicationTable::MergeFrom( from._internal_publication_table()); break; } case kPublicationObjSpec: { _this->_internal_mutable_publication_obj_spec()->::pg_query::PublicationObjSpec::MergeFrom( from._internal_publication_obj_spec()); break; } case kCreatePublicationStmt: { _this->_internal_mutable_create_publication_stmt()->::pg_query::CreatePublicationStmt::MergeFrom( from._internal_create_publication_stmt()); break; } case kAlterPublicationStmt: { _this->_internal_mutable_alter_publication_stmt()->::pg_query::AlterPublicationStmt::MergeFrom( from._internal_alter_publication_stmt()); break; } case kCreateSubscriptionStmt: { _this->_internal_mutable_create_subscription_stmt()->::pg_query::CreateSubscriptionStmt::MergeFrom( from._internal_create_subscription_stmt()); break; } case kAlterSubscriptionStmt: { _this->_internal_mutable_alter_subscription_stmt()->::pg_query::AlterSubscriptionStmt::MergeFrom( from._internal_alter_subscription_stmt()); break; } case kDropSubscriptionStmt: { _this->_internal_mutable_drop_subscription_stmt()->::pg_query::DropSubscriptionStmt::MergeFrom( from._internal_drop_subscription_stmt()); break; } case kInteger: { _this->_internal_mutable_integer()->::pg_query::Integer::MergeFrom( from._internal_integer()); break; } case kFloat: { _this->_internal_mutable_float_()->::pg_query::Float::MergeFrom( from._internal_float_()); break; } case kBoolean: { _this->_internal_mutable_boolean()->::pg_query::Boolean::MergeFrom( from._internal_boolean()); break; } case kString: { _this->_internal_mutable_string()->::pg_query::String::MergeFrom( from._internal_string()); break; } case kBitString: { _this->_internal_mutable_bit_string()->::pg_query::BitString::MergeFrom( from._internal_bit_string()); break; } case kList: { _this->_internal_mutable_list()->::pg_query::List::MergeFrom( from._internal_list()); break; } case kIntList: { _this->_internal_mutable_int_list()->::pg_query::IntList::MergeFrom( from._internal_int_list()); break; } case kOidList: { _this->_internal_mutable_oid_list()->::pg_query::OidList::MergeFrom( from._internal_oid_list()); break; } case kAConst: { _this->_internal_mutable_a_const()->::pg_query::A_Const::MergeFrom( from._internal_a_const()); break; } case NODE_NOT_SET: { break; } } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void Node::CopyFrom(const Node& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Node) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool Node::IsInitialized() const { return true; } ::_pbi::CachedSize* Node::AccessCachedSize() const { return &_impl_._cached_size_; } void Node::InternalSwap(Node* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_.node_, other->_impl_.node_); swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]); } ::google::protobuf::Metadata Node::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[2]); } // =================================================================== class Integer::_Internal { public: }; Integer::Integer(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Integer) } Integer::Integer( ::google::protobuf::Arena* arena, const Integer& from) : Integer(arena) { MergeFrom(from); } inline PROTOBUF_NDEBUG_INLINE Integer::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void Integer::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.ival_ = {}; } Integer::~Integer() { // @@protoc_insertion_point(destructor:pg_query.Integer) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void Integer::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void Integer::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Integer) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.ival_ = 0; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* Integer::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 0, 2> Integer::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_Integer_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 ival = 1; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Integer, _impl_.ival_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(Integer, _impl_.ival_)}}, }}, {{ 65535, 65535 }}, {{ // int32 ival = 1; {PROTOBUF_FIELD_OFFSET(Integer, _impl_.ival_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, // no aux_entries {{ }}, }; ::uint8_t* Integer::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Integer) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // int32 ival = 1; if (this->_internal_ival() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<1>( stream, this->_internal_ival(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // int32 ival = 1; if (this->_internal_ival() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_ival()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData Integer::_class_data_ = { Integer::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* Integer::GetClassData() const { return &_class_data_; } void Integer::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Integer) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (from._internal_ival() != 0) { _this->_internal_set_ival(from._internal_ival()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void Integer::CopyFrom(const Integer& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Integer) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool Integer::IsInitialized() const { return true; } ::_pbi::CachedSize* Integer::AccessCachedSize() const { return &_impl_._cached_size_; } void Integer::InternalSwap(Integer* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_.ival_, other->_impl_.ival_); } ::google::protobuf::Metadata Integer::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[3]); } // =================================================================== class Float::_Internal { public: }; Float::Float(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Float) } inline PROTOBUF_NDEBUG_INLINE Float::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : fval_(arena, from.fval_), _cached_size_{0} {} Float::Float( ::google::protobuf::Arena* arena, const Float& from) : ::google::protobuf::Message(arena) { Float* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.Float) } inline PROTOBUF_NDEBUG_INLINE Float::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : fval_(arena), _cached_size_{0} {} inline void Float::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } Float::~Float() { // @@protoc_insertion_point(destructor:pg_query.Float) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void Float::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.fval_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void Float::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Float) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.fval_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* Float::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 27, 2> Float::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_Float_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string fval = 1; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(Float, _impl_.fval_)}}, }}, {{ 65535, 65535 }}, {{ // string fval = 1; {PROTOBUF_FIELD_OFFSET(Float, _impl_.fval_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, // no aux_entries {{ "\16\4\0\0\0\0\0\0" "pg_query.Float" "fval" }}, }; ::uint8_t* Float::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Float) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string fval = 1; if (!this->_internal_fval().empty()) { const std::string& _s = this->_internal_fval(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.Float.fval"); target = stream->WriteStringMaybeAliased(1, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string fval = 1; if (!this->_internal_fval().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_fval()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData Float::_class_data_ = { Float::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* Float::GetClassData() const { return &_class_data_; } void Float::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Float) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_fval().empty()) { _this->_internal_set_fval(from._internal_fval()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void Float::CopyFrom(const Float& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Float) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool Float::IsInitialized() const { return true; } ::_pbi::CachedSize* Float::AccessCachedSize() const { return &_impl_._cached_size_; } void Float::InternalSwap(Float* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.fval_, &other->_impl_.fval_, arena); } ::google::protobuf::Metadata Float::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[4]); } // =================================================================== class Boolean::_Internal { public: }; Boolean::Boolean(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Boolean) } Boolean::Boolean( ::google::protobuf::Arena* arena, const Boolean& from) : Boolean(arena) { MergeFrom(from); } inline PROTOBUF_NDEBUG_INLINE Boolean::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void Boolean::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.boolval_ = {}; } Boolean::~Boolean() { // @@protoc_insertion_point(destructor:pg_query.Boolean) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void Boolean::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void Boolean::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Boolean) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.boolval_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* Boolean::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 0, 2> Boolean::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_Boolean_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool boolval = 1; {::_pbi::TcParser::SingularVarintNoZag1(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(Boolean, _impl_.boolval_)}}, }}, {{ 65535, 65535 }}, {{ // bool boolval = 1; {PROTOBUF_FIELD_OFFSET(Boolean, _impl_.boolval_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, // no aux_entries {{ }}, }; ::uint8_t* Boolean::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Boolean) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // bool boolval = 1; if (this->_internal_boolval() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 1, this->_internal_boolval(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.Boolean) return target; } ::size_t Boolean::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.Boolean) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // bool boolval = 1; if (this->_internal_boolval() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData Boolean::_class_data_ = { Boolean::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* Boolean::GetClassData() const { return &_class_data_; } void Boolean::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Boolean) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (from._internal_boolval() != 0) { _this->_internal_set_boolval(from._internal_boolval()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void Boolean::CopyFrom(const Boolean& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Boolean) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool Boolean::IsInitialized() const { return true; } ::_pbi::CachedSize* Boolean::AccessCachedSize() const { return &_impl_._cached_size_; } void Boolean::InternalSwap(Boolean* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_.boolval_, other->_impl_.boolval_); } ::google::protobuf::Metadata Boolean::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[5]); } // =================================================================== class String::_Internal { public: }; String::String(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.String) } inline PROTOBUF_NDEBUG_INLINE String::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : sval_(arena, from.sval_), _cached_size_{0} {} String::String( ::google::protobuf::Arena* arena, const String& from) : ::google::protobuf::Message(arena) { String* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.String) } inline PROTOBUF_NDEBUG_INLINE String::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : sval_(arena), _cached_size_{0} {} inline void String::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } String::~String() { // @@protoc_insertion_point(destructor:pg_query.String) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void String::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.sval_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void String::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.String) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.sval_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* String::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 28, 2> String::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_String_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string sval = 1; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(String, _impl_.sval_)}}, }}, {{ 65535, 65535 }}, {{ // string sval = 1; {PROTOBUF_FIELD_OFFSET(String, _impl_.sval_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, // no aux_entries {{ "\17\4\0\0\0\0\0\0" "pg_query.String" "sval" }}, }; ::uint8_t* String::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.String) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string sval = 1; if (!this->_internal_sval().empty()) { const std::string& _s = this->_internal_sval(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.String.sval"); target = stream->WriteStringMaybeAliased(1, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string sval = 1; if (!this->_internal_sval().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_sval()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData String::_class_data_ = { String::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* String::GetClassData() const { return &_class_data_; } void String::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.String) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_sval().empty()) { _this->_internal_set_sval(from._internal_sval()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void String::CopyFrom(const String& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.String) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool String::IsInitialized() const { return true; } ::_pbi::CachedSize* String::AccessCachedSize() const { return &_impl_._cached_size_; } void String::InternalSwap(String* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.sval_, &other->_impl_.sval_, arena); } ::google::protobuf::Metadata String::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[6]); } // =================================================================== class BitString::_Internal { public: }; BitString::BitString(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.BitString) } inline PROTOBUF_NDEBUG_INLINE BitString::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : bsval_(arena, from.bsval_), _cached_size_{0} {} BitString::BitString( ::google::protobuf::Arena* arena, const BitString& from) : ::google::protobuf::Message(arena) { BitString* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.BitString) } inline PROTOBUF_NDEBUG_INLINE BitString::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : bsval_(arena), _cached_size_{0} {} inline void BitString::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } BitString::~BitString() { // @@protoc_insertion_point(destructor:pg_query.BitString) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void BitString::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.bsval_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void BitString::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.BitString) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.bsval_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* BitString::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 32, 2> BitString::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_BitString_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string bsval = 1; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(BitString, _impl_.bsval_)}}, }}, {{ 65535, 65535 }}, {{ // string bsval = 1; {PROTOBUF_FIELD_OFFSET(BitString, _impl_.bsval_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, // no aux_entries {{ "\22\5\0\0\0\0\0\0" "pg_query.BitString" "bsval" }}, }; ::uint8_t* BitString::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.BitString) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string bsval = 1; if (!this->_internal_bsval().empty()) { const std::string& _s = this->_internal_bsval(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.BitString.bsval"); target = stream->WriteStringMaybeAliased(1, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string bsval = 1; if (!this->_internal_bsval().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_bsval()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData BitString::_class_data_ = { BitString::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* BitString::GetClassData() const { return &_class_data_; } void BitString::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.BitString) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_bsval().empty()) { _this->_internal_set_bsval(from._internal_bsval()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void BitString::CopyFrom(const BitString& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.BitString) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool BitString::IsInitialized() const { return true; } ::_pbi::CachedSize* BitString::AccessCachedSize() const { return &_impl_._cached_size_; } void BitString::InternalSwap(BitString* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.bsval_, &other->_impl_.bsval_, arena); } ::google::protobuf::Metadata BitString::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[7]); } // =================================================================== class List::_Internal { public: }; List::List(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.List) } inline PROTOBUF_NDEBUG_INLINE List::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : items_{visibility, arena, from.items_}, _cached_size_{0} {} List::List( ::google::protobuf::Arena* arena, const List& from) : ::google::protobuf::Message(arena) { List* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.List) } inline PROTOBUF_NDEBUG_INLINE List::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : items_{visibility, arena}, _cached_size_{0} {} inline void List::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } List::~List() { // @@protoc_insertion_point(destructor:pg_query.List) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void List::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void List::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.List) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.items_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* List::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 1, 0, 2> List::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_List_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node items = 1; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(List, _impl_.items_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node items = 1; {PROTOBUF_FIELD_OFFSET(List, _impl_.items_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* List::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.List) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node items = 1; for (unsigned i = 0, n = static_cast(this->_internal_items_size()); i < n; i++) { const auto& repfield = this->_internal_items().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_items()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData List::_class_data_ = { List::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* List::GetClassData() const { return &_class_data_; } void List::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.List) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_items()->MergeFrom( from._internal_items()); _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void List::CopyFrom(const List& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.List) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool List::IsInitialized() const { return true; } ::_pbi::CachedSize* List::AccessCachedSize() const { return &_impl_._cached_size_; } void List::InternalSwap(List* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.items_.InternalSwap(&other->_impl_.items_); } ::google::protobuf::Metadata List::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[8]); } // =================================================================== class OidList::_Internal { public: }; OidList::OidList(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.OidList) } inline PROTOBUF_NDEBUG_INLINE OidList::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : items_{visibility, arena, from.items_}, _cached_size_{0} {} OidList::OidList( ::google::protobuf::Arena* arena, const OidList& from) : ::google::protobuf::Message(arena) { OidList* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.OidList) } inline PROTOBUF_NDEBUG_INLINE OidList::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : items_{visibility, arena}, _cached_size_{0} {} inline void OidList::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } OidList::~OidList() { // @@protoc_insertion_point(destructor:pg_query.OidList) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void OidList::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void OidList::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.OidList) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.items_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* OidList::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 1, 0, 2> OidList::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_OidList_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node items = 1; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(OidList, _impl_.items_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node items = 1; {PROTOBUF_FIELD_OFFSET(OidList, _impl_.items_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* OidList::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.OidList) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node items = 1; for (unsigned i = 0, n = static_cast(this->_internal_items_size()); i < n; i++) { const auto& repfield = this->_internal_items().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_items()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData OidList::_class_data_ = { OidList::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* OidList::GetClassData() const { return &_class_data_; } void OidList::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.OidList) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_items()->MergeFrom( from._internal_items()); _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void OidList::CopyFrom(const OidList& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.OidList) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool OidList::IsInitialized() const { return true; } ::_pbi::CachedSize* OidList::AccessCachedSize() const { return &_impl_._cached_size_; } void OidList::InternalSwap(OidList* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.items_.InternalSwap(&other->_impl_.items_); } ::google::protobuf::Metadata OidList::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[9]); } // =================================================================== class IntList::_Internal { public: }; IntList::IntList(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.IntList) } inline PROTOBUF_NDEBUG_INLINE IntList::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : items_{visibility, arena, from.items_}, _cached_size_{0} {} IntList::IntList( ::google::protobuf::Arena* arena, const IntList& from) : ::google::protobuf::Message(arena) { IntList* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.IntList) } inline PROTOBUF_NDEBUG_INLINE IntList::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : items_{visibility, arena}, _cached_size_{0} {} inline void IntList::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } IntList::~IntList() { // @@protoc_insertion_point(destructor:pg_query.IntList) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void IntList::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void IntList::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.IntList) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.items_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* IntList::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 1, 0, 2> IntList::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_IntList_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node items = 1; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(IntList, _impl_.items_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node items = 1; {PROTOBUF_FIELD_OFFSET(IntList, _impl_.items_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* IntList::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.IntList) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node items = 1; for (unsigned i = 0, n = static_cast(this->_internal_items_size()); i < n; i++) { const auto& repfield = this->_internal_items().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_items()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData IntList::_class_data_ = { IntList::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* IntList::GetClassData() const { return &_class_data_; } void IntList::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.IntList) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_items()->MergeFrom( from._internal_items()); _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void IntList::CopyFrom(const IntList& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.IntList) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool IntList::IsInitialized() const { return true; } ::_pbi::CachedSize* IntList::AccessCachedSize() const { return &_impl_._cached_size_; } void IntList::InternalSwap(IntList* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.items_.InternalSwap(&other->_impl_.items_); } ::google::protobuf::Metadata IntList::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[10]); } // =================================================================== class A_Const::_Internal { public: static constexpr ::int32_t kOneofCaseOffset = PROTOBUF_FIELD_OFFSET(::pg_query::A_Const, _impl_._oneof_case_); static const ::pg_query::Integer& ival(const A_Const* msg); static const ::pg_query::Float& fval(const A_Const* msg); static const ::pg_query::Boolean& boolval(const A_Const* msg); static const ::pg_query::String& sval(const A_Const* msg); static const ::pg_query::BitString& bsval(const A_Const* msg); }; const ::pg_query::Integer& A_Const::_Internal::ival(const A_Const* msg) { return *msg->_impl_.val_.ival_; } const ::pg_query::Float& A_Const::_Internal::fval(const A_Const* msg) { return *msg->_impl_.val_.fval_; } const ::pg_query::Boolean& A_Const::_Internal::boolval(const A_Const* msg) { return *msg->_impl_.val_.boolval_; } const ::pg_query::String& A_Const::_Internal::sval(const A_Const* msg) { return *msg->_impl_.val_.sval_; } const ::pg_query::BitString& A_Const::_Internal::bsval(const A_Const* msg) { return *msg->_impl_.val_.bsval_; } void A_Const::set_allocated_ival(::pg_query::Integer* ival) { ::google::protobuf::Arena* message_arena = GetArena(); clear_val(); if (ival) { ::google::protobuf::Arena* submessage_arena = ival->GetArena(); if (message_arena != submessage_arena) { ival = ::google::protobuf::internal::GetOwnedMessage(message_arena, ival, submessage_arena); } set_has_ival(); _impl_.val_.ival_ = ival; } // @@protoc_insertion_point(field_set_allocated:pg_query.A_Const.ival) } void A_Const::set_allocated_fval(::pg_query::Float* fval) { ::google::protobuf::Arena* message_arena = GetArena(); clear_val(); if (fval) { ::google::protobuf::Arena* submessage_arena = fval->GetArena(); if (message_arena != submessage_arena) { fval = ::google::protobuf::internal::GetOwnedMessage(message_arena, fval, submessage_arena); } set_has_fval(); _impl_.val_.fval_ = fval; } // @@protoc_insertion_point(field_set_allocated:pg_query.A_Const.fval) } void A_Const::set_allocated_boolval(::pg_query::Boolean* boolval) { ::google::protobuf::Arena* message_arena = GetArena(); clear_val(); if (boolval) { ::google::protobuf::Arena* submessage_arena = boolval->GetArena(); if (message_arena != submessage_arena) { boolval = ::google::protobuf::internal::GetOwnedMessage(message_arena, boolval, submessage_arena); } set_has_boolval(); _impl_.val_.boolval_ = boolval; } // @@protoc_insertion_point(field_set_allocated:pg_query.A_Const.boolval) } void A_Const::set_allocated_sval(::pg_query::String* sval) { ::google::protobuf::Arena* message_arena = GetArena(); clear_val(); if (sval) { ::google::protobuf::Arena* submessage_arena = sval->GetArena(); if (message_arena != submessage_arena) { sval = ::google::protobuf::internal::GetOwnedMessage(message_arena, sval, submessage_arena); } set_has_sval(); _impl_.val_.sval_ = sval; } // @@protoc_insertion_point(field_set_allocated:pg_query.A_Const.sval) } void A_Const::set_allocated_bsval(::pg_query::BitString* bsval) { ::google::protobuf::Arena* message_arena = GetArena(); clear_val(); if (bsval) { ::google::protobuf::Arena* submessage_arena = bsval->GetArena(); if (message_arena != submessage_arena) { bsval = ::google::protobuf::internal::GetOwnedMessage(message_arena, bsval, submessage_arena); } set_has_bsval(); _impl_.val_.bsval_ = bsval; } // @@protoc_insertion_point(field_set_allocated:pg_query.A_Const.bsval) } A_Const::A_Const(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.A_Const) } inline PROTOBUF_NDEBUG_INLINE A_Const::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : val_{}, _cached_size_{0}, _oneof_case_{from._oneof_case_[0]} {} A_Const::A_Const( ::google::protobuf::Arena* arena, const A_Const& from) : ::google::protobuf::Message(arena) { A_Const* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, isnull_), reinterpret_cast(&from._impl_) + offsetof(Impl_, isnull_), offsetof(Impl_, location_) - offsetof(Impl_, isnull_) + sizeof(Impl_::location_)); switch (val_case()) { case VAL_NOT_SET: break; case kIval: _impl_.val_.ival_ = CreateMaybeMessage<::pg_query::Integer>(arena, *from._impl_.val_.ival_); break; case kFval: _impl_.val_.fval_ = CreateMaybeMessage<::pg_query::Float>(arena, *from._impl_.val_.fval_); break; case kBoolval: _impl_.val_.boolval_ = CreateMaybeMessage<::pg_query::Boolean>(arena, *from._impl_.val_.boolval_); break; case kSval: _impl_.val_.sval_ = CreateMaybeMessage<::pg_query::String>(arena, *from._impl_.val_.sval_); break; case kBsval: _impl_.val_.bsval_ = CreateMaybeMessage<::pg_query::BitString>(arena, *from._impl_.val_.bsval_); break; } // @@protoc_insertion_point(copy_constructor:pg_query.A_Const) } inline PROTOBUF_NDEBUG_INLINE A_Const::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : val_{}, _cached_size_{0}, _oneof_case_{} {} inline void A_Const::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, isnull_), 0, offsetof(Impl_, location_) - offsetof(Impl_, isnull_) + sizeof(Impl_::location_)); } A_Const::~A_Const() { // @@protoc_insertion_point(destructor:pg_query.A_Const) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void A_Const::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); if (has_val()) { clear_val(); } _impl_.~Impl_(); } void A_Const::clear_val() { // @@protoc_insertion_point(one_of_clear_start:pg_query.A_Const) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); switch (val_case()) { case kIval: { if (GetArena() == nullptr) { delete _impl_.val_.ival_; } break; } case kFval: { if (GetArena() == nullptr) { delete _impl_.val_.fval_; } break; } case kBoolval: { if (GetArena() == nullptr) { delete _impl_.val_.boolval_; } break; } case kSval: { if (GetArena() == nullptr) { delete _impl_.val_.sval_; } break; } case kBsval: { if (GetArena() == nullptr) { delete _impl_.val_.bsval_; } break; } case VAL_NOT_SET: { break; } } _impl_._oneof_case_[0] = VAL_NOT_SET; } PROTOBUF_NOINLINE void A_Const::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.A_Const) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; ::memset(&_impl_.isnull_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.isnull_)) + sizeof(_impl_.location_)); clear_val(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* A_Const::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 7, 5, 0, 2> A_Const::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 11, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294965728, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 5, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_A_Const_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool isnull = 10; {::_pbi::TcParser::SingularVarintNoZag1(), {80, 63, 0, PROTOBUF_FIELD_OFFSET(A_Const, _impl_.isnull_)}}, // int32 location = 11; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(A_Const, _impl_.location_), 63>(), {88, 63, 0, PROTOBUF_FIELD_OFFSET(A_Const, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Integer ival = 1; {PROTOBUF_FIELD_OFFSET(A_Const, _impl_.val_.ival_), _Internal::kOneofCaseOffset + 0, 0, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Float fval = 2; {PROTOBUF_FIELD_OFFSET(A_Const, _impl_.val_.fval_), _Internal::kOneofCaseOffset + 0, 1, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Boolean boolval = 3; {PROTOBUF_FIELD_OFFSET(A_Const, _impl_.val_.boolval_), _Internal::kOneofCaseOffset + 0, 2, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.String sval = 4; {PROTOBUF_FIELD_OFFSET(A_Const, _impl_.val_.sval_), _Internal::kOneofCaseOffset + 0, 3, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.BitString bsval = 5; {PROTOBUF_FIELD_OFFSET(A_Const, _impl_.val_.bsval_), _Internal::kOneofCaseOffset + 0, 4, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)}, // bool isnull = 10; {PROTOBUF_FIELD_OFFSET(A_Const, _impl_.isnull_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 11; {PROTOBUF_FIELD_OFFSET(A_Const, _impl_.location_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Integer>()}, {::_pbi::TcParser::GetTable<::pg_query::Float>()}, {::_pbi::TcParser::GetTable<::pg_query::Boolean>()}, {::_pbi::TcParser::GetTable<::pg_query::String>()}, {::_pbi::TcParser::GetTable<::pg_query::BitString>()}, }}, {{ }}, }; ::uint8_t* A_Const::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.A_Const) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; switch (val_case()) { case kIval: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::ival(this), _Internal::ival(this).GetCachedSize(), target, stream); break; } case kFval: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::fval(this), _Internal::fval(this).GetCachedSize(), target, stream); break; } case kBoolval: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::boolval(this), _Internal::boolval(this).GetCachedSize(), target, stream); break; } case kSval: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::sval(this), _Internal::sval(this).GetCachedSize(), target, stream); break; } case kBsval: { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::bsval(this), _Internal::bsval(this).GetCachedSize(), target, stream); break; } default: break; } // bool isnull = 10; if (this->_internal_isnull() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 10, this->_internal_isnull(), target); } // int32 location = 11; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<11>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // bool isnull = 10; if (this->_internal_isnull() != 0) { total_size += 2; } // int32 location = 11; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } switch (val_case()) { // .pg_query.Integer ival = 1; case kIval: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.val_.ival_); break; } // .pg_query.Float fval = 2; case kFval: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.val_.fval_); break; } // .pg_query.Boolean boolval = 3; case kBoolval: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.val_.boolval_); break; } // .pg_query.String sval = 4; case kSval: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.val_.sval_); break; } // .pg_query.BitString bsval = 5; case kBsval: { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.val_.bsval_); break; } case VAL_NOT_SET: { break; } } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData A_Const::_class_data_ = { A_Const::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* A_Const::GetClassData() const { return &_class_data_; } void A_Const::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.A_Const) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (from._internal_isnull() != 0) { _this->_internal_set_isnull(from._internal_isnull()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } switch (from.val_case()) { case kIval: { _this->_internal_mutable_ival()->::pg_query::Integer::MergeFrom( from._internal_ival()); break; } case kFval: { _this->_internal_mutable_fval()->::pg_query::Float::MergeFrom( from._internal_fval()); break; } case kBoolval: { _this->_internal_mutable_boolval()->::pg_query::Boolean::MergeFrom( from._internal_boolval()); break; } case kSval: { _this->_internal_mutable_sval()->::pg_query::String::MergeFrom( from._internal_sval()); break; } case kBsval: { _this->_internal_mutable_bsval()->::pg_query::BitString::MergeFrom( from._internal_bsval()); break; } case VAL_NOT_SET: { break; } } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } 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); } PROTOBUF_NOINLINE bool A_Const::IsInitialized() const { return true; } ::_pbi::CachedSize* A_Const::AccessCachedSize() const { return &_impl_._cached_size_; } void A_Const::InternalSwap(A_Const* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(A_Const, _impl_.location_) + sizeof(A_Const::_impl_.location_) - PROTOBUF_FIELD_OFFSET(A_Const, _impl_.isnull_)>( reinterpret_cast(&_impl_.isnull_), reinterpret_cast(&other->_impl_.isnull_)); swap(_impl_.val_, other->_impl_.val_); swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]); } ::google::protobuf::Metadata A_Const::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[11]); } // =================================================================== class Alias::_Internal { public: }; Alias::Alias(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Alias) } inline PROTOBUF_NDEBUG_INLINE Alias::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : colnames_{visibility, arena, from.colnames_}, aliasname_(arena, from.aliasname_), _cached_size_{0} {} Alias::Alias( ::google::protobuf::Arena* arena, const Alias& from) : ::google::protobuf::Message(arena) { Alias* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.Alias) } inline PROTOBUF_NDEBUG_INLINE Alias::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : colnames_{visibility, arena}, aliasname_(arena), _cached_size_{0} {} inline void Alias::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } Alias::~Alias() { // @@protoc_insertion_point(destructor:pg_query.Alias) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void Alias::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.aliasname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void Alias::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Alias) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.colnames_.Clear(); _impl_.aliasname_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* Alias::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 32, 2> Alias::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_Alias_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node colnames = 2 [json_name = "colnames"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(Alias, _impl_.colnames_)}}, // string aliasname = 1 [json_name = "aliasname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(Alias, _impl_.aliasname_)}}, }}, {{ 65535, 65535 }}, {{ // string aliasname = 1 [json_name = "aliasname"]; {PROTOBUF_FIELD_OFFSET(Alias, _impl_.aliasname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node colnames = 2 [json_name = "colnames"]; {PROTOBUF_FIELD_OFFSET(Alias, _impl_.colnames_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\16\11\0\0\0\0\0\0" "pg_query.Alias" "aliasname" }}, }; ::uint8_t* Alias::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Alias) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string aliasname = 1 [json_name = "aliasname"]; if (!this->_internal_aliasname().empty()) { const std::string& _s = this->_internal_aliasname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.Alias.aliasname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node colnames = 2 [json_name = "colnames"]; for (unsigned i = 0, n = static_cast(this->_internal_colnames_size()); i < n; i++) { const auto& repfield = this->_internal_colnames().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_colnames()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string aliasname = 1 [json_name = "aliasname"]; if (!this->_internal_aliasname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_aliasname()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData Alias::_class_data_ = { Alias::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* Alias::GetClassData() const { return &_class_data_; } void Alias::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Alias) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_colnames()->MergeFrom( from._internal_colnames()); if (!from._internal_aliasname().empty()) { _this->_internal_set_aliasname(from._internal_aliasname()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void Alias::CopyFrom(const Alias& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Alias) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool Alias::IsInitialized() const { return true; } ::_pbi::CachedSize* Alias::AccessCachedSize() const { return &_impl_._cached_size_; } void Alias::InternalSwap(Alias* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.colnames_.InternalSwap(&other->_impl_.colnames_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.aliasname_, &other->_impl_.aliasname_, arena); } ::google::protobuf::Metadata Alias::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[12]); } // =================================================================== class RangeVar::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RangeVar, _impl_._has_bits_); static const ::pg_query::Alias& alias(const RangeVar* msg); static void set_has_alias(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Alias& RangeVar::_Internal::alias(const RangeVar* msg) { return *msg->_impl_.alias_; } RangeVar::RangeVar(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeVar) } inline PROTOBUF_NDEBUG_INLINE RangeVar::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, catalogname_(arena, from.catalogname_), schemaname_(arena, from.schemaname_), relname_(arena, from.relname_), relpersistence_(arena, from.relpersistence_) {} RangeVar::RangeVar( ::google::protobuf::Arena* arena, const RangeVar& from) : ::google::protobuf::Message(arena) { RangeVar* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.alias_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Alias>(arena, *from._impl_.alias_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, inh_), reinterpret_cast(&from._impl_) + offsetof(Impl_, inh_), offsetof(Impl_, location_) - offsetof(Impl_, inh_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.RangeVar) } inline PROTOBUF_NDEBUG_INLINE RangeVar::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, catalogname_(arena), schemaname_(arena), relname_(arena), relpersistence_(arena) {} inline void RangeVar::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, alias_), 0, offsetof(Impl_, location_) - offsetof(Impl_, alias_) + sizeof(Impl_::location_)); } RangeVar::~RangeVar() { // @@protoc_insertion_point(destructor:pg_query.RangeVar) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RangeVar::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.catalogname_.Destroy(); _impl_.schemaname_.Destroy(); _impl_.relname_.Destroy(); _impl_.relpersistence_.Destroy(); delete _impl_.alias_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RangeVar::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeVar) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.catalogname_.ClearToEmpty(); _impl_.schemaname_.ClearToEmpty(); _impl_.relname_.ClearToEmpty(); _impl_.relpersistence_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.alias_ != nullptr); _impl_.alias_->Clear(); } ::memset(&_impl_.inh_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.inh_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RangeVar::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 1, 68, 2> RangeVar::_table_ = { { PROTOBUF_FIELD_OFFSET(RangeVar, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RangeVar_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string catalogname = 1 [json_name = "catalogname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.catalogname_)}}, // string schemaname = 2 [json_name = "schemaname"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.schemaname_)}}, // string relname = 3 [json_name = "relname"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.relname_)}}, // bool inh = 4 [json_name = "inh"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.inh_)}}, // string relpersistence = 5 [json_name = "relpersistence"]; {::_pbi::TcParser::FastUS1, {42, 63, 0, PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.relpersistence_)}}, // .pg_query.Alias alias = 6 [json_name = "alias"]; {::_pbi::TcParser::FastMtS1, {50, 0, 0, PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.alias_)}}, // int32 location = 7 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RangeVar, _impl_.location_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // string catalogname = 1 [json_name = "catalogname"]; {PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.catalogname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string schemaname = 2 [json_name = "schemaname"]; {PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.schemaname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string relname = 3 [json_name = "relname"]; {PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.relname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool inh = 4 [json_name = "inh"]; {PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.inh_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // string relpersistence = 5 [json_name = "relpersistence"]; {PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.relpersistence_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.Alias alias = 6 [json_name = "alias"]; {PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.alias_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 7 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Alias>()}, }}, {{ "\21\13\12\7\0\16\0\0" "pg_query.RangeVar" "catalogname" "schemaname" "relname" "relpersistence" }}, }; ::uint8_t* RangeVar::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeVar) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string catalogname = 1 [json_name = "catalogname"]; if (!this->_internal_catalogname().empty()) { const std::string& _s = this->_internal_catalogname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.RangeVar.catalogname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // string schemaname = 2 [json_name = "schemaname"]; if (!this->_internal_schemaname().empty()) { const std::string& _s = this->_internal_schemaname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.RangeVar.schemaname"); target = stream->WriteStringMaybeAliased(2, _s, target); } // string relname = 3 [json_name = "relname"]; if (!this->_internal_relname().empty()) { const std::string& _s = this->_internal_relname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.RangeVar.relname"); target = stream->WriteStringMaybeAliased(3, _s, target); } // bool inh = 4 [json_name = "inh"]; if (this->_internal_inh() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_inh(), target); } // string relpersistence = 5 [json_name = "relpersistence"]; if (!this->_internal_relpersistence().empty()) { const std::string& _s = this->_internal_relpersistence(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.RangeVar.relpersistence"); target = stream->WriteStringMaybeAliased(5, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Alias alias = 6 [json_name = "alias"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::alias(this), _Internal::alias(this).GetCachedSize(), target, stream); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<7>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_catalogname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_catalogname()); } // string schemaname = 2 [json_name = "schemaname"]; if (!this->_internal_schemaname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_schemaname()); } // string relname = 3 [json_name = "relname"]; if (!this->_internal_relname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_relname()); } // string relpersistence = 5 [json_name = "relpersistence"]; if (!this->_internal_relpersistence().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_relpersistence()); } // .pg_query.Alias alias = 6 [json_name = "alias"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.alias_); } // bool inh = 4 [json_name = "inh"]; if (this->_internal_inh() != 0) { total_size += 2; } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RangeVar::_class_data_ = { RangeVar::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RangeVar::GetClassData() const { return &_class_data_; } void RangeVar::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeVar) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_catalogname().empty()) { _this->_internal_set_catalogname(from._internal_catalogname()); } if (!from._internal_schemaname().empty()) { _this->_internal_set_schemaname(from._internal_schemaname()); } if (!from._internal_relname().empty()) { _this->_internal_set_relname(from._internal_relname()); } if (!from._internal_relpersistence().empty()) { _this->_internal_set_relpersistence(from._internal_relpersistence()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_alias()->::pg_query::Alias::MergeFrom( from._internal_alias()); } if (from._internal_inh() != 0) { _this->_internal_set_inh(from._internal_inh()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RangeVar::CopyFrom(const RangeVar& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeVar) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RangeVar::IsInitialized() const { return true; } ::_pbi::CachedSize* RangeVar::AccessCachedSize() const { return &_impl_._cached_size_; } void RangeVar::InternalSwap(RangeVar* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.catalogname_, &other->_impl_.catalogname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.schemaname_, &other->_impl_.schemaname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.relname_, &other->_impl_.relname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.relpersistence_, &other->_impl_.relpersistence_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.location_) + sizeof(RangeVar::_impl_.location_) - PROTOBUF_FIELD_OFFSET(RangeVar, _impl_.alias_)>( reinterpret_cast(&_impl_.alias_), reinterpret_cast(&other->_impl_.alias_)); } ::google::protobuf::Metadata RangeVar::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[13]); } // =================================================================== class TableFunc::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(TableFunc, _impl_._has_bits_); static const ::pg_query::Node& docexpr(const TableFunc* msg); static void set_has_docexpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& rowexpr(const TableFunc* msg); static void set_has_rowexpr(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& plan(const TableFunc* msg); static void set_has_plan(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::Node& TableFunc::_Internal::docexpr(const TableFunc* msg) { return *msg->_impl_.docexpr_; } const ::pg_query::Node& TableFunc::_Internal::rowexpr(const TableFunc* msg) { return *msg->_impl_.rowexpr_; } const ::pg_query::Node& TableFunc::_Internal::plan(const TableFunc* msg) { return *msg->_impl_.plan_; } TableFunc::TableFunc(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TableFunc) } inline PROTOBUF_NDEBUG_INLINE TableFunc::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, ns_uris_{visibility, arena, from.ns_uris_}, ns_names_{visibility, arena, from.ns_names_}, colnames_{visibility, arena, from.colnames_}, coltypes_{visibility, arena, from.coltypes_}, coltypmods_{visibility, arena, from.coltypmods_}, colcollations_{visibility, arena, from.colcollations_}, colexprs_{visibility, arena, from.colexprs_}, coldefexprs_{visibility, arena, from.coldefexprs_}, colvalexprs_{visibility, arena, from.colvalexprs_}, passingvalexprs_{visibility, arena, from.passingvalexprs_}, notnulls_{visibility, arena, from.notnulls_}, _notnulls_cached_byte_size_{0} {} TableFunc::TableFunc( ::google::protobuf::Arena* arena, const TableFunc& from) : ::google::protobuf::Message(arena) { TableFunc* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.docexpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.docexpr_) : nullptr; _impl_.rowexpr_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.rowexpr_) : nullptr; _impl_.plan_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.plan_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, functype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, functype_), offsetof(Impl_, location_) - offsetof(Impl_, functype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.TableFunc) } inline PROTOBUF_NDEBUG_INLINE TableFunc::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, ns_uris_{visibility, arena}, ns_names_{visibility, arena}, colnames_{visibility, arena}, coltypes_{visibility, arena}, coltypmods_{visibility, arena}, colcollations_{visibility, arena}, colexprs_{visibility, arena}, coldefexprs_{visibility, arena}, colvalexprs_{visibility, arena}, passingvalexprs_{visibility, arena}, notnulls_{visibility, arena}, _notnulls_cached_byte_size_{0} {} inline void TableFunc::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, docexpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, docexpr_) + sizeof(Impl_::location_)); } TableFunc::~TableFunc() { // @@protoc_insertion_point(destructor:pg_query.TableFunc) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void TableFunc::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.docexpr_; delete _impl_.rowexpr_; delete _impl_.plan_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void TableFunc::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TableFunc) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.ns_uris_.Clear(); _impl_.ns_names_.Clear(); _impl_.colnames_.Clear(); _impl_.coltypes_.Clear(); _impl_.coltypmods_.Clear(); _impl_.colcollations_.Clear(); _impl_.colexprs_.Clear(); _impl_.coldefexprs_.Clear(); _impl_.colvalexprs_.Clear(); _impl_.passingvalexprs_.Clear(); _impl_.notnulls_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.docexpr_ != nullptr); _impl_.docexpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.rowexpr_ != nullptr); _impl_.rowexpr_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.plan_ != nullptr); _impl_.plan_->Clear(); } } ::memset(&_impl_.functype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.functype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* TableFunc::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<5, 17, 13, 0, 2> TableFunc::_table_ = { { PROTOBUF_FIELD_OFFSET(TableFunc, _impl_._has_bits_), 0, // no _extensions_ 17, 248, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294836224, // skipmap offsetof(decltype(_table_), field_entries), 17, // num_field_entries 13, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_TableFunc_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.TableFuncType functype = 1 [json_name = "functype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TableFunc, _impl_.functype_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.functype_)}}, // repeated .pg_query.Node ns_uris = 2 [json_name = "ns_uris"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.ns_uris_)}}, // repeated .pg_query.Node ns_names = 3 [json_name = "ns_names"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.ns_names_)}}, // .pg_query.Node docexpr = 4 [json_name = "docexpr"]; {::_pbi::TcParser::FastMtS1, {34, 0, 2, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.docexpr_)}}, // .pg_query.Node rowexpr = 5 [json_name = "rowexpr"]; {::_pbi::TcParser::FastMtS1, {42, 1, 3, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.rowexpr_)}}, // repeated .pg_query.Node colnames = 6 [json_name = "colnames"]; {::_pbi::TcParser::FastMtR1, {50, 63, 4, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.colnames_)}}, // repeated .pg_query.Node coltypes = 7 [json_name = "coltypes"]; {::_pbi::TcParser::FastMtR1, {58, 63, 5, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.coltypes_)}}, // repeated .pg_query.Node coltypmods = 8 [json_name = "coltypmods"]; {::_pbi::TcParser::FastMtR1, {66, 63, 6, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.coltypmods_)}}, // repeated .pg_query.Node colcollations = 9 [json_name = "colcollations"]; {::_pbi::TcParser::FastMtR1, {74, 63, 7, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.colcollations_)}}, // repeated .pg_query.Node colexprs = 10 [json_name = "colexprs"]; {::_pbi::TcParser::FastMtR1, {82, 63, 8, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.colexprs_)}}, // repeated .pg_query.Node coldefexprs = 11 [json_name = "coldefexprs"]; {::_pbi::TcParser::FastMtR1, {90, 63, 9, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.coldefexprs_)}}, // repeated .pg_query.Node colvalexprs = 12 [json_name = "colvalexprs"]; {::_pbi::TcParser::FastMtR1, {98, 63, 10, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.colvalexprs_)}}, // repeated .pg_query.Node passingvalexprs = 13 [json_name = "passingvalexprs"]; {::_pbi::TcParser::FastMtR1, {106, 63, 11, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.passingvalexprs_)}}, // repeated uint64 notnulls = 14 [json_name = "notnulls"]; {::_pbi::TcParser::FastV64P1, {114, 63, 0, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.notnulls_)}}, // .pg_query.Node plan = 15 [json_name = "plan"]; {::_pbi::TcParser::FastMtS1, {122, 2, 12, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.plan_)}}, // int32 ordinalitycol = 16 [json_name = "ordinalitycol"]; {::_pbi::TcParser::FastV32S2, {384, 63, 0, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.ordinalitycol_)}}, // int32 location = 17 [json_name = "location"]; {::_pbi::TcParser::FastV32S2, {392, 63, 0, PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.TableFuncType functype = 1 [json_name = "functype"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.functype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node ns_uris = 2 [json_name = "ns_uris"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.ns_uris_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node ns_names = 3 [json_name = "ns_names"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.ns_names_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node docexpr = 4 [json_name = "docexpr"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.docexpr_), _Internal::kHasBitsOffset + 0, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node rowexpr = 5 [json_name = "rowexpr"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.rowexpr_), _Internal::kHasBitsOffset + 1, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node colnames = 6 [json_name = "colnames"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.colnames_), -1, 4, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node coltypes = 7 [json_name = "coltypes"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.coltypes_), -1, 5, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node coltypmods = 8 [json_name = "coltypmods"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.coltypmods_), -1, 6, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node colcollations = 9 [json_name = "colcollations"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.colcollations_), -1, 7, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node colexprs = 10 [json_name = "colexprs"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.colexprs_), -1, 8, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node coldefexprs = 11 [json_name = "coldefexprs"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.coldefexprs_), -1, 9, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node colvalexprs = 12 [json_name = "colvalexprs"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.colvalexprs_), -1, 10, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node passingvalexprs = 13 [json_name = "passingvalexprs"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.passingvalexprs_), -1, 11, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated uint64 notnulls = 14 [json_name = "notnulls"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.notnulls_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kPackedUInt64)}, // .pg_query.Node plan = 15 [json_name = "plan"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.plan_), _Internal::kHasBitsOffset + 2, 12, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 ordinalitycol = 16 [json_name = "ordinalitycol"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.ordinalitycol_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 location = 17 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* TableFunc::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TableFunc) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.TableFuncType functype = 1 [json_name = "functype"]; if (this->_internal_functype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_functype(), target); } // repeated .pg_query.Node ns_uris = 2 [json_name = "ns_uris"]; for (unsigned i = 0, n = static_cast(this->_internal_ns_uris_size()); i < n; i++) { const auto& repfield = this->_internal_ns_uris().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node ns_names = 3 [json_name = "ns_names"]; for (unsigned i = 0, n = static_cast(this->_internal_ns_names_size()); i < n; i++) { const auto& repfield = this->_internal_ns_names().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node docexpr = 4 [json_name = "docexpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::docexpr(this), _Internal::docexpr(this).GetCachedSize(), target, stream); } // .pg_query.Node rowexpr = 5 [json_name = "rowexpr"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::rowexpr(this), _Internal::rowexpr(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node colnames = 6 [json_name = "colnames"]; for (unsigned i = 0, n = static_cast(this->_internal_colnames_size()); i < n; i++) { const auto& repfield = this->_internal_colnames().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node coltypes = 7 [json_name = "coltypes"]; for (unsigned i = 0, n = static_cast(this->_internal_coltypes_size()); i < n; i++) { const auto& repfield = this->_internal_coltypes().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node coltypmods = 8 [json_name = "coltypmods"]; for (unsigned i = 0, n = static_cast(this->_internal_coltypmods_size()); i < n; i++) { const auto& repfield = this->_internal_coltypmods().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(8, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node colcollations = 9 [json_name = "colcollations"]; for (unsigned i = 0, n = static_cast(this->_internal_colcollations_size()); i < n; i++) { const auto& repfield = this->_internal_colcollations().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(9, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node colexprs = 10 [json_name = "colexprs"]; for (unsigned i = 0, n = static_cast(this->_internal_colexprs_size()); i < n; i++) { const auto& repfield = this->_internal_colexprs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(10, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node coldefexprs = 11 [json_name = "coldefexprs"]; for (unsigned i = 0, n = static_cast(this->_internal_coldefexprs_size()); i < n; i++) { const auto& repfield = this->_internal_coldefexprs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(11, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node colvalexprs = 12 [json_name = "colvalexprs"]; for (unsigned i = 0, n = static_cast(this->_internal_colvalexprs_size()); i < n; i++) { const auto& repfield = this->_internal_colvalexprs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(12, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node passingvalexprs = 13 [json_name = "passingvalexprs"]; for (unsigned i = 0, n = static_cast(this->_internal_passingvalexprs_size()); i < n; i++) { const auto& repfield = this->_internal_passingvalexprs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(13, repfield, repfield.GetCachedSize(), target, stream); } // repeated uint64 notnulls = 14 [json_name = "notnulls"]; { int byte_size = _impl_._notnulls_cached_byte_size_.Get(); if (byte_size > 0) { target = stream->WriteUInt64Packed( 14, _internal_notnulls(), byte_size, target); } } // .pg_query.Node plan = 15 [json_name = "plan"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 15, _Internal::plan(this), _Internal::plan(this).GetCachedSize(), target, stream); } // int32 ordinalitycol = 16 [json_name = "ordinalitycol"]; if (this->_internal_ordinalitycol() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteInt32ToArray( 16, this->_internal_ordinalitycol(), target); } // int32 location = 17 [json_name = "location"]; if (this->_internal_location() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteInt32ToArray( 17, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node ns_uris = 2 [json_name = "ns_uris"]; total_size += 1UL * this->_internal_ns_uris_size(); for (const auto& msg : this->_internal_ns_uris()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node ns_names = 3 [json_name = "ns_names"]; total_size += 1UL * this->_internal_ns_names_size(); for (const auto& msg : this->_internal_ns_names()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node colnames = 6 [json_name = "colnames"]; total_size += 1UL * this->_internal_colnames_size(); for (const auto& msg : this->_internal_colnames()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node coltypes = 7 [json_name = "coltypes"]; total_size += 1UL * this->_internal_coltypes_size(); for (const auto& msg : this->_internal_coltypes()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node coltypmods = 8 [json_name = "coltypmods"]; total_size += 1UL * this->_internal_coltypmods_size(); for (const auto& msg : this->_internal_coltypmods()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node colcollations = 9 [json_name = "colcollations"]; total_size += 1UL * this->_internal_colcollations_size(); for (const auto& msg : this->_internal_colcollations()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node colexprs = 10 [json_name = "colexprs"]; total_size += 1UL * this->_internal_colexprs_size(); for (const auto& msg : this->_internal_colexprs()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node coldefexprs = 11 [json_name = "coldefexprs"]; total_size += 1UL * this->_internal_coldefexprs_size(); for (const auto& msg : this->_internal_coldefexprs()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node colvalexprs = 12 [json_name = "colvalexprs"]; total_size += 1UL * this->_internal_colvalexprs_size(); for (const auto& msg : this->_internal_colvalexprs()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node passingvalexprs = 13 [json_name = "passingvalexprs"]; total_size += 1UL * this->_internal_passingvalexprs_size(); for (const auto& msg : this->_internal_passingvalexprs()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated uint64 notnulls = 14 [json_name = "notnulls"]; { std::size_t data_size = ::_pbi::WireFormatLite::UInt64Size( this->_internal_notnulls()) ; _impl_._notnulls_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size)); std::size_t tag_size = data_size == 0 ? 0 : 1 + ::_pbi::WireFormatLite::Int32Size( static_cast(data_size)) ; total_size += tag_size + data_size; } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.Node docexpr = 4 [json_name = "docexpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.docexpr_); } // .pg_query.Node rowexpr = 5 [json_name = "rowexpr"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.rowexpr_); } // .pg_query.Node plan = 15 [json_name = "plan"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.plan_); } } // .pg_query.TableFuncType functype = 1 [json_name = "functype"]; if (this->_internal_functype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_functype()); } // int32 ordinalitycol = 16 [json_name = "ordinalitycol"]; if (this->_internal_ordinalitycol() != 0) { total_size += 2 + ::_pbi::WireFormatLite::Int32Size( this->_internal_ordinalitycol()); } // int32 location = 17 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += 2 + ::_pbi::WireFormatLite::Int32Size( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData TableFunc::_class_data_ = { TableFunc::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* TableFunc::GetClassData() const { return &_class_data_; } void TableFunc::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TableFunc) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_ns_uris()->MergeFrom( from._internal_ns_uris()); _this->_internal_mutable_ns_names()->MergeFrom( from._internal_ns_names()); _this->_internal_mutable_colnames()->MergeFrom( from._internal_colnames()); _this->_internal_mutable_coltypes()->MergeFrom( from._internal_coltypes()); _this->_internal_mutable_coltypmods()->MergeFrom( from._internal_coltypmods()); _this->_internal_mutable_colcollations()->MergeFrom( from._internal_colcollations()); _this->_internal_mutable_colexprs()->MergeFrom( from._internal_colexprs()); _this->_internal_mutable_coldefexprs()->MergeFrom( from._internal_coldefexprs()); _this->_internal_mutable_colvalexprs()->MergeFrom( from._internal_colvalexprs()); _this->_internal_mutable_passingvalexprs()->MergeFrom( from._internal_passingvalexprs()); _this->_internal_mutable_notnulls()->MergeFrom(from._internal_notnulls()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_docexpr()->::pg_query::Node::MergeFrom( from._internal_docexpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_rowexpr()->::pg_query::Node::MergeFrom( from._internal_rowexpr()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_plan()->::pg_query::Node::MergeFrom( from._internal_plan()); } } if (from._internal_functype() != 0) { _this->_internal_set_functype(from._internal_functype()); } if (from._internal_ordinalitycol() != 0) { _this->_internal_set_ordinalitycol(from._internal_ordinalitycol()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void TableFunc::CopyFrom(const TableFunc& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TableFunc) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool TableFunc::IsInitialized() const { return true; } ::_pbi::CachedSize* TableFunc::AccessCachedSize() const { return &_impl_._cached_size_; } void TableFunc::InternalSwap(TableFunc* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.ns_uris_.InternalSwap(&other->_impl_.ns_uris_); _impl_.ns_names_.InternalSwap(&other->_impl_.ns_names_); _impl_.colnames_.InternalSwap(&other->_impl_.colnames_); _impl_.coltypes_.InternalSwap(&other->_impl_.coltypes_); _impl_.coltypmods_.InternalSwap(&other->_impl_.coltypmods_); _impl_.colcollations_.InternalSwap(&other->_impl_.colcollations_); _impl_.colexprs_.InternalSwap(&other->_impl_.colexprs_); _impl_.coldefexprs_.InternalSwap(&other->_impl_.coldefexprs_); _impl_.colvalexprs_.InternalSwap(&other->_impl_.colvalexprs_); _impl_.passingvalexprs_.InternalSwap(&other->_impl_.passingvalexprs_); _impl_.notnulls_.InternalSwap(&other->_impl_.notnulls_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.location_) + sizeof(TableFunc::_impl_.location_) - PROTOBUF_FIELD_OFFSET(TableFunc, _impl_.docexpr_)>( reinterpret_cast(&_impl_.docexpr_), reinterpret_cast(&other->_impl_.docexpr_)); } ::google::protobuf::Metadata TableFunc::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[14]); } // =================================================================== class IntoClause::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(IntoClause, _impl_._has_bits_); static const ::pg_query::RangeVar& rel(const IntoClause* msg); static void set_has_rel(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& view_query(const IntoClause* msg); static void set_has_view_query(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::RangeVar& IntoClause::_Internal::rel(const IntoClause* msg) { return *msg->_impl_.rel_; } const ::pg_query::Node& IntoClause::_Internal::view_query(const IntoClause* msg) { return *msg->_impl_.view_query_; } IntoClause::IntoClause(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.IntoClause) } inline PROTOBUF_NDEBUG_INLINE IntoClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, col_names_{visibility, arena, from.col_names_}, options_{visibility, arena, from.options_}, access_method_(arena, from.access_method_), table_space_name_(arena, from.table_space_name_) {} IntoClause::IntoClause( ::google::protobuf::Arena* arena, const IntoClause& from) : ::google::protobuf::Message(arena) { IntoClause* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.rel_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.rel_) : nullptr; _impl_.view_query_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.view_query_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, on_commit_), reinterpret_cast(&from._impl_) + offsetof(Impl_, on_commit_), offsetof(Impl_, skip_data_) - offsetof(Impl_, on_commit_) + sizeof(Impl_::skip_data_)); // @@protoc_insertion_point(copy_constructor:pg_query.IntoClause) } inline PROTOBUF_NDEBUG_INLINE IntoClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, col_names_{visibility, arena}, options_{visibility, arena}, access_method_(arena), table_space_name_(arena) {} inline void IntoClause::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, rel_), 0, offsetof(Impl_, skip_data_) - offsetof(Impl_, rel_) + sizeof(Impl_::skip_data_)); } IntoClause::~IntoClause() { // @@protoc_insertion_point(destructor:pg_query.IntoClause) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void IntoClause::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.access_method_.Destroy(); _impl_.table_space_name_.Destroy(); delete _impl_.rel_; delete _impl_.view_query_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void IntoClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.IntoClause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.col_names_.Clear(); _impl_.options_.Clear(); _impl_.access_method_.ClearToEmpty(); _impl_.table_space_name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.rel_ != nullptr); _impl_.rel_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.view_query_ != nullptr); _impl_.view_query_->Clear(); } } ::memset(&_impl_.on_commit_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.skip_data_) - reinterpret_cast(&_impl_.on_commit_)) + sizeof(_impl_.skip_data_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* IntoClause::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 4, 65, 2> IntoClause::_table_ = { { PROTOBUF_FIELD_OFFSET(IntoClause, _impl_._has_bits_), 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_IntoClause_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool skip_data = 8 [json_name = "skipData"]; {::_pbi::TcParser::SingularVarintNoZag1(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.skip_data_)}}, // .pg_query.RangeVar rel = 1 [json_name = "rel"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.rel_)}}, // repeated .pg_query.Node col_names = 2 [json_name = "colNames"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.col_names_)}}, // string access_method = 3 [json_name = "accessMethod"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.access_method_)}}, // repeated .pg_query.Node options = 4 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {34, 63, 2, PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.options_)}}, // .pg_query.OnCommitAction on_commit = 5 [json_name = "onCommit"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(IntoClause, _impl_.on_commit_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.on_commit_)}}, // string table_space_name = 6 [json_name = "tableSpaceName"]; {::_pbi::TcParser::FastUS1, {50, 63, 0, PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.table_space_name_)}}, // .pg_query.Node view_query = 7 [json_name = "viewQuery"]; {::_pbi::TcParser::FastMtS1, {58, 1, 3, PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.view_query_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar rel = 1 [json_name = "rel"]; {PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.rel_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node col_names = 2 [json_name = "colNames"]; {PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.col_names_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string access_method = 3 [json_name = "accessMethod"]; {PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.access_method_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node options = 4 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.options_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.OnCommitAction on_commit = 5 [json_name = "onCommit"]; {PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.on_commit_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // string table_space_name = 6 [json_name = "tableSpaceName"]; {PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.table_space_name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.Node view_query = 7 [json_name = "viewQuery"]; {PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.view_query_), _Internal::kHasBitsOffset + 1, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool skip_data = 8 [json_name = "skipData"]; {PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.skip_data_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\23\0\0\15\0\0\20\0\0\0\0\0\0\0\0\0" "pg_query.IntoClause" "access_method" "table_space_name" }}, }; ::uint8_t* IntoClause::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.IntoClause) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar rel = 1 [json_name = "rel"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::rel(this), _Internal::rel(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node col_names = 2 [json_name = "colNames"]; for (unsigned i = 0, n = static_cast(this->_internal_col_names_size()); i < n; i++) { const auto& repfield = this->_internal_col_names().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // string access_method = 3 [json_name = "accessMethod"]; if (!this->_internal_access_method().empty()) { const std::string& _s = this->_internal_access_method(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.IntoClause.access_method"); target = stream->WriteStringMaybeAliased(3, _s, target); } // repeated .pg_query.Node options = 4 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.OnCommitAction on_commit = 5 [json_name = "onCommit"]; if (this->_internal_on_commit() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 5, this->_internal_on_commit(), target); } // string table_space_name = 6 [json_name = "tableSpaceName"]; if (!this->_internal_table_space_name().empty()) { const std::string& _s = this->_internal_table_space_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.IntoClause.table_space_name"); target = stream->WriteStringMaybeAliased(6, _s, target); } // .pg_query.Node view_query = 7 [json_name = "viewQuery"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 7, _Internal::view_query(this), _Internal::view_query(this).GetCachedSize(), target, stream); } // bool skip_data = 8 [json_name = "skipData"]; if (this->_internal_skip_data() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 8, this->_internal_skip_data(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_col_names()) { total_size += ::google::protobuf::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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string access_method = 3 [json_name = "accessMethod"]; if (!this->_internal_access_method().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_access_method()); } // string table_space_name = 6 [json_name = "tableSpaceName"]; if (!this->_internal_table_space_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_table_space_name()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.RangeVar rel = 1 [json_name = "rel"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.rel_); } // .pg_query.Node view_query = 7 [json_name = "viewQuery"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.view_query_); } } // .pg_query.OnCommitAction on_commit = 5 [json_name = "onCommit"]; if (this->_internal_on_commit() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_on_commit()); } // bool skip_data = 8 [json_name = "skipData"]; if (this->_internal_skip_data() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData IntoClause::_class_data_ = { IntoClause::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* IntoClause::GetClassData() const { return &_class_data_; } void IntoClause::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.IntoClause) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_col_names()->MergeFrom( from._internal_col_names()); _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_access_method().empty()) { _this->_internal_set_access_method(from._internal_access_method()); } if (!from._internal_table_space_name().empty()) { _this->_internal_set_table_space_name(from._internal_table_space_name()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_rel()->::pg_query::RangeVar::MergeFrom( from._internal_rel()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_view_query()->::pg_query::Node::MergeFrom( from._internal_view_query()); } } if (from._internal_on_commit() != 0) { _this->_internal_set_on_commit(from._internal_on_commit()); } if (from._internal_skip_data() != 0) { _this->_internal_set_skip_data(from._internal_skip_data()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void IntoClause::CopyFrom(const IntoClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.IntoClause) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool IntoClause::IsInitialized() const { return true; } ::_pbi::CachedSize* IntoClause::AccessCachedSize() const { return &_impl_._cached_size_; } void IntoClause::InternalSwap(IntoClause* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.col_names_.InternalSwap(&other->_impl_.col_names_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.access_method_, &other->_impl_.access_method_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.table_space_name_, &other->_impl_.table_space_name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.skip_data_) + sizeof(IntoClause::_impl_.skip_data_) - PROTOBUF_FIELD_OFFSET(IntoClause, _impl_.rel_)>( reinterpret_cast(&_impl_.rel_), reinterpret_cast(&other->_impl_.rel_)); } ::google::protobuf::Metadata IntoClause::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[15]); } // =================================================================== class Var::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(Var, _impl_._has_bits_); static const ::pg_query::Node& xpr(const Var* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& Var::_Internal::xpr(const Var* msg) { return *msg->_impl_.xpr_; } Var::Var(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Var) } inline PROTOBUF_NDEBUG_INLINE Var::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, varnullingrels_{visibility, arena, from.varnullingrels_}, _varnullingrels_cached_byte_size_{0} {} Var::Var( ::google::protobuf::Arena* arena, const Var& from) : ::google::protobuf::Message(arena) { Var* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, varno_), reinterpret_cast(&from._impl_) + offsetof(Impl_, varno_), offsetof(Impl_, location_) - offsetof(Impl_, varno_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.Var) } inline PROTOBUF_NDEBUG_INLINE Var::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, varnullingrels_{visibility, arena}, _varnullingrels_cached_byte_size_{0} {} inline void Var::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } Var::~Var() { // @@protoc_insertion_point(destructor:pg_query.Var) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void Var::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void Var::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Var) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.varnullingrels_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.varno_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.varno_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* Var::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 9, 1, 0, 2> Var::_table_ = { { PROTOBUF_FIELD_OFFSET(Var, _impl_._has_bits_), 0, // no _extensions_ 9, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294966784, // skipmap offsetof(decltype(_table_), field_entries), 9, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_Var_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(Var, _impl_.xpr_)}}, // int32 varno = 2 [json_name = "varno"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Var, _impl_.varno_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(Var, _impl_.varno_)}}, // int32 varattno = 3 [json_name = "varattno"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Var, _impl_.varattno_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(Var, _impl_.varattno_)}}, // uint32 vartype = 4 [json_name = "vartype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Var, _impl_.vartype_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(Var, _impl_.vartype_)}}, // int32 vartypmod = 5 [json_name = "vartypmod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Var, _impl_.vartypmod_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(Var, _impl_.vartypmod_)}}, // uint32 varcollid = 6 [json_name = "varcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Var, _impl_.varcollid_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(Var, _impl_.varcollid_)}}, // repeated uint64 varnullingrels = 7 [json_name = "varnullingrels"]; {::_pbi::TcParser::FastV64P1, {58, 63, 0, PROTOBUF_FIELD_OFFSET(Var, _impl_.varnullingrels_)}}, // uint32 varlevelsup = 8 [json_name = "varlevelsup"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Var, _impl_.varlevelsup_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(Var, _impl_.varlevelsup_)}}, // int32 location = 9 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Var, _impl_.location_), 63>(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(Var, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(Var, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 varno = 2 [json_name = "varno"]; {PROTOBUF_FIELD_OFFSET(Var, _impl_.varno_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 varattno = 3 [json_name = "varattno"]; {PROTOBUF_FIELD_OFFSET(Var, _impl_.varattno_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 vartype = 4 [json_name = "vartype"]; {PROTOBUF_FIELD_OFFSET(Var, _impl_.vartype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 vartypmod = 5 [json_name = "vartypmod"]; {PROTOBUF_FIELD_OFFSET(Var, _impl_.vartypmod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 varcollid = 6 [json_name = "varcollid"]; {PROTOBUF_FIELD_OFFSET(Var, _impl_.varcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated uint64 varnullingrels = 7 [json_name = "varnullingrels"]; {PROTOBUF_FIELD_OFFSET(Var, _impl_.varnullingrels_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kPackedUInt64)}, // uint32 varlevelsup = 8 [json_name = "varlevelsup"]; {PROTOBUF_FIELD_OFFSET(Var, _impl_.varlevelsup_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 location = 9 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(Var, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* Var::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Var) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // int32 varno = 2 [json_name = "varno"]; if (this->_internal_varno() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<2>( stream, this->_internal_varno(), target); } // int32 varattno = 3 [json_name = "varattno"]; if (this->_internal_varattno() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_varattno(), target); } // uint32 vartype = 4 [json_name = "vartype"]; if (this->_internal_vartype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_vartype(), target); } // int32 vartypmod = 5 [json_name = "vartypmod"]; if (this->_internal_vartypmod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_vartypmod(), target); } // uint32 varcollid = 6 [json_name = "varcollid"]; if (this->_internal_varcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 6, this->_internal_varcollid(), target); } // repeated uint64 varnullingrels = 7 [json_name = "varnullingrels"]; { int byte_size = _impl_._varnullingrels_cached_byte_size_.Get(); if (byte_size > 0) { target = stream->WriteUInt64Packed( 7, _internal_varnullingrels(), byte_size, target); } } // uint32 varlevelsup = 8 [json_name = "varlevelsup"]; if (this->_internal_varlevelsup() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 8, this->_internal_varlevelsup(), target); } // int32 location = 9 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<9>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated uint64 varnullingrels = 7 [json_name = "varnullingrels"]; { std::size_t data_size = ::_pbi::WireFormatLite::UInt64Size( this->_internal_varnullingrels()) ; _impl_._varnullingrels_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size)); std::size_t tag_size = data_size == 0 ? 0 : 1 + ::_pbi::WireFormatLite::Int32Size( static_cast(data_size)) ; total_size += tag_size + data_size; } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // int32 varno = 2 [json_name = "varno"]; if (this->_internal_varno() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_varno()); } // int32 varattno = 3 [json_name = "varattno"]; if (this->_internal_varattno() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_varattno()); } // uint32 vartype = 4 [json_name = "vartype"]; if (this->_internal_vartype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_vartype()); } // int32 vartypmod = 5 [json_name = "vartypmod"]; if (this->_internal_vartypmod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_vartypmod()); } // uint32 varcollid = 6 [json_name = "varcollid"]; if (this->_internal_varcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_varcollid()); } // uint32 varlevelsup = 8 [json_name = "varlevelsup"]; if (this->_internal_varlevelsup() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_varlevelsup()); } // int32 location = 9 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData Var::_class_data_ = { Var::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* Var::GetClassData() const { return &_class_data_; } void Var::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Var) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_varnullingrels()->MergeFrom(from._internal_varnullingrels()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_varno() != 0) { _this->_internal_set_varno(from._internal_varno()); } if (from._internal_varattno() != 0) { _this->_internal_set_varattno(from._internal_varattno()); } if (from._internal_vartype() != 0) { _this->_internal_set_vartype(from._internal_vartype()); } if (from._internal_vartypmod() != 0) { _this->_internal_set_vartypmod(from._internal_vartypmod()); } if (from._internal_varcollid() != 0) { _this->_internal_set_varcollid(from._internal_varcollid()); } if (from._internal_varlevelsup() != 0) { _this->_internal_set_varlevelsup(from._internal_varlevelsup()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void Var::CopyFrom(const Var& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Var) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool Var::IsInitialized() const { return true; } ::_pbi::CachedSize* Var::AccessCachedSize() const { return &_impl_._cached_size_; } void Var::InternalSwap(Var* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.varnullingrels_.InternalSwap(&other->_impl_.varnullingrels_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(Var, _impl_.location_) + sizeof(Var::_impl_.location_) - PROTOBUF_FIELD_OFFSET(Var, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata Var::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[16]); } // =================================================================== class Param::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(Param, _impl_._has_bits_); static const ::pg_query::Node& xpr(const Param* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& Param::_Internal::xpr(const Param* msg) { return *msg->_impl_.xpr_; } Param::Param(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Param) } inline PROTOBUF_NDEBUG_INLINE Param::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} Param::Param( ::google::protobuf::Arena* arena, const Param& from) : ::google::protobuf::Message(arena) { Param* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, paramkind_), reinterpret_cast(&from._impl_) + offsetof(Impl_, paramkind_), offsetof(Impl_, location_) - offsetof(Impl_, paramkind_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.Param) } inline PROTOBUF_NDEBUG_INLINE Param::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void Param::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } Param::~Param() { // @@protoc_insertion_point(destructor:pg_query.Param) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void Param::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void Param::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Param) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.paramkind_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.paramkind_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* Param::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 1, 0, 2> Param::_table_ = { { PROTOBUF_FIELD_OFFSET(Param, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_Param_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(Param, _impl_.xpr_)}}, // .pg_query.ParamKind paramkind = 2 [json_name = "paramkind"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Param, _impl_.paramkind_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(Param, _impl_.paramkind_)}}, // int32 paramid = 3 [json_name = "paramid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Param, _impl_.paramid_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(Param, _impl_.paramid_)}}, // uint32 paramtype = 4 [json_name = "paramtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Param, _impl_.paramtype_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(Param, _impl_.paramtype_)}}, // int32 paramtypmod = 5 [json_name = "paramtypmod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Param, _impl_.paramtypmod_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(Param, _impl_.paramtypmod_)}}, // uint32 paramcollid = 6 [json_name = "paramcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Param, _impl_.paramcollid_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(Param, _impl_.paramcollid_)}}, // int32 location = 7 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Param, _impl_.location_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(Param, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(Param, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ParamKind paramkind = 2 [json_name = "paramkind"]; {PROTOBUF_FIELD_OFFSET(Param, _impl_.paramkind_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int32 paramid = 3 [json_name = "paramid"]; {PROTOBUF_FIELD_OFFSET(Param, _impl_.paramid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 paramtype = 4 [json_name = "paramtype"]; {PROTOBUF_FIELD_OFFSET(Param, _impl_.paramtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 paramtypmod = 5 [json_name = "paramtypmod"]; {PROTOBUF_FIELD_OFFSET(Param, _impl_.paramtypmod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 paramcollid = 6 [json_name = "paramcollid"]; {PROTOBUF_FIELD_OFFSET(Param, _impl_.paramcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 location = 7 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(Param, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* Param::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Param) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.ParamKind paramkind = 2 [json_name = "paramkind"]; if (this->_internal_paramkind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_paramkind(), target); } // int32 paramid = 3 [json_name = "paramid"]; if (this->_internal_paramid() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_paramid(), target); } // uint32 paramtype = 4 [json_name = "paramtype"]; if (this->_internal_paramtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_paramtype(), target); } // int32 paramtypmod = 5 [json_name = "paramtypmod"]; if (this->_internal_paramtypmod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_paramtypmod(), target); } // uint32 paramcollid = 6 [json_name = "paramcollid"]; if (this->_internal_paramcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 6, this->_internal_paramcollid(), target); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<7>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.ParamKind paramkind = 2 [json_name = "paramkind"]; if (this->_internal_paramkind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_paramkind()); } // int32 paramid = 3 [json_name = "paramid"]; if (this->_internal_paramid() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_paramid()); } // uint32 paramtype = 4 [json_name = "paramtype"]; if (this->_internal_paramtype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_paramtype()); } // int32 paramtypmod = 5 [json_name = "paramtypmod"]; if (this->_internal_paramtypmod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_paramtypmod()); } // uint32 paramcollid = 6 [json_name = "paramcollid"]; if (this->_internal_paramcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_paramcollid()); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData Param::_class_data_ = { Param::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* Param::GetClassData() const { return &_class_data_; } void Param::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Param) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_paramkind() != 0) { _this->_internal_set_paramkind(from._internal_paramkind()); } if (from._internal_paramid() != 0) { _this->_internal_set_paramid(from._internal_paramid()); } if (from._internal_paramtype() != 0) { _this->_internal_set_paramtype(from._internal_paramtype()); } if (from._internal_paramtypmod() != 0) { _this->_internal_set_paramtypmod(from._internal_paramtypmod()); } if (from._internal_paramcollid() != 0) { _this->_internal_set_paramcollid(from._internal_paramcollid()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void Param::CopyFrom(const Param& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Param) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool Param::IsInitialized() const { return true; } ::_pbi::CachedSize* Param::AccessCachedSize() const { return &_impl_._cached_size_; } void Param::InternalSwap(Param* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(Param, _impl_.location_) + sizeof(Param::_impl_.location_) - PROTOBUF_FIELD_OFFSET(Param, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata Param::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[17]); } // =================================================================== class Aggref::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(Aggref, _impl_._has_bits_); static const ::pg_query::Node& xpr(const Aggref* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& aggfilter(const Aggref* msg); static void set_has_aggfilter(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& Aggref::_Internal::xpr(const Aggref* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& Aggref::_Internal::aggfilter(const Aggref* msg) { return *msg->_impl_.aggfilter_; } Aggref::Aggref(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Aggref) } inline PROTOBUF_NDEBUG_INLINE Aggref::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, aggargtypes_{visibility, arena, from.aggargtypes_}, aggdirectargs_{visibility, arena, from.aggdirectargs_}, args_{visibility, arena, from.args_}, aggorder_{visibility, arena, from.aggorder_}, aggdistinct_{visibility, arena, from.aggdistinct_}, aggkind_(arena, from.aggkind_) {} Aggref::Aggref( ::google::protobuf::Arena* arena, const Aggref& from) : ::google::protobuf::Message(arena) { Aggref* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.aggfilter_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.aggfilter_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, aggfnoid_), reinterpret_cast(&from._impl_) + offsetof(Impl_, aggfnoid_), offsetof(Impl_, location_) - offsetof(Impl_, aggfnoid_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.Aggref) } inline PROTOBUF_NDEBUG_INLINE Aggref::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, aggargtypes_{visibility, arena}, aggdirectargs_{visibility, arena}, args_{visibility, arena}, aggorder_{visibility, arena}, aggdistinct_{visibility, arena}, aggkind_(arena) {} inline void Aggref::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } Aggref::~Aggref() { // @@protoc_insertion_point(destructor:pg_query.Aggref) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void Aggref::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.aggkind_.Destroy(); delete _impl_.xpr_; delete _impl_.aggfilter_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void Aggref::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Aggref) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.aggargtypes_.Clear(); _impl_.aggdirectargs_.Clear(); _impl_.args_.Clear(); _impl_.aggorder_.Clear(); _impl_.aggdistinct_.Clear(); _impl_.aggkind_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.aggfilter_ != nullptr); _impl_.aggfilter_->Clear(); } } ::memset(&_impl_.aggfnoid_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.aggfnoid_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* Aggref::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<5, 19, 7, 47, 2> Aggref::_table_ = { { PROTOBUF_FIELD_OFFSET(Aggref, _impl_._has_bits_), 0, // no _extensions_ 19, 248, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294443008, // skipmap offsetof(decltype(_table_), field_entries), 19, // num_field_entries 7, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_Aggref_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.xpr_)}}, // uint32 aggfnoid = 2 [json_name = "aggfnoid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Aggref, _impl_.aggfnoid_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggfnoid_)}}, // uint32 aggtype = 3 [json_name = "aggtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Aggref, _impl_.aggtype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggtype_)}}, // uint32 aggcollid = 4 [json_name = "aggcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Aggref, _impl_.aggcollid_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggcollid_)}}, // uint32 inputcollid = 5 [json_name = "inputcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Aggref, _impl_.inputcollid_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.inputcollid_)}}, // repeated .pg_query.Node aggargtypes = 6 [json_name = "aggargtypes"]; {::_pbi::TcParser::FastMtR1, {50, 63, 1, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggargtypes_)}}, // repeated .pg_query.Node aggdirectargs = 7 [json_name = "aggdirectargs"]; {::_pbi::TcParser::FastMtR1, {58, 63, 2, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggdirectargs_)}}, // repeated .pg_query.Node args = 8 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {66, 63, 3, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.args_)}}, // repeated .pg_query.Node aggorder = 9 [json_name = "aggorder"]; {::_pbi::TcParser::FastMtR1, {74, 63, 4, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggorder_)}}, // repeated .pg_query.Node aggdistinct = 10 [json_name = "aggdistinct"]; {::_pbi::TcParser::FastMtR1, {82, 63, 5, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggdistinct_)}}, // .pg_query.Node aggfilter = 11 [json_name = "aggfilter"]; {::_pbi::TcParser::FastMtS1, {90, 1, 6, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggfilter_)}}, // bool aggstar = 12 [json_name = "aggstar"]; {::_pbi::TcParser::SingularVarintNoZag1(), {96, 63, 0, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggstar_)}}, // bool aggvariadic = 13 [json_name = "aggvariadic"]; {::_pbi::TcParser::SingularVarintNoZag1(), {104, 63, 0, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggvariadic_)}}, // string aggkind = 14 [json_name = "aggkind"]; {::_pbi::TcParser::FastUS1, {114, 63, 0, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggkind_)}}, // uint32 agglevelsup = 15 [json_name = "agglevelsup"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Aggref, _impl_.agglevelsup_), 63>(), {120, 63, 0, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.agglevelsup_)}}, // .pg_query.AggSplit aggsplit = 16 [json_name = "aggsplit"]; {::_pbi::TcParser::FastV32S2, {384, 63, 0, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggsplit_)}}, // int32 aggno = 17 [json_name = "aggno"]; {::_pbi::TcParser::FastV32S2, {392, 63, 0, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggno_)}}, // int32 aggtransno = 18 [json_name = "aggtransno"]; {::_pbi::TcParser::FastV32S2, {400, 63, 0, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggtransno_)}}, // int32 location = 19 [json_name = "location"]; {::_pbi::TcParser::FastV32S2, {408, 63, 0, PROTOBUF_FIELD_OFFSET(Aggref, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 aggfnoid = 2 [json_name = "aggfnoid"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggfnoid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 aggtype = 3 [json_name = "aggtype"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 aggcollid = 4 [json_name = "aggcollid"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 inputcollid = 5 [json_name = "inputcollid"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.inputcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated .pg_query.Node aggargtypes = 6 [json_name = "aggargtypes"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggargtypes_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node aggdirectargs = 7 [json_name = "aggdirectargs"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggdirectargs_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node args = 8 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.args_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node aggorder = 9 [json_name = "aggorder"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggorder_), -1, 4, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node aggdistinct = 10 [json_name = "aggdistinct"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggdistinct_), -1, 5, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node aggfilter = 11 [json_name = "aggfilter"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggfilter_), _Internal::kHasBitsOffset + 1, 6, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool aggstar = 12 [json_name = "aggstar"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggstar_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool aggvariadic = 13 [json_name = "aggvariadic"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggvariadic_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // string aggkind = 14 [json_name = "aggkind"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggkind_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // uint32 agglevelsup = 15 [json_name = "agglevelsup"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.agglevelsup_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // .pg_query.AggSplit aggsplit = 16 [json_name = "aggsplit"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggsplit_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int32 aggno = 17 [json_name = "aggno"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggno_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 aggtransno = 18 [json_name = "aggtransno"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.aggtransno_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 location = 19 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(Aggref, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\17\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\0\0\0\0\0\0\0\0" "pg_query.Aggref" "aggkind" }}, }; ::uint8_t* Aggref::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Aggref) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 aggfnoid = 2 [json_name = "aggfnoid"]; if (this->_internal_aggfnoid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_aggfnoid(), target); } // uint32 aggtype = 3 [json_name = "aggtype"]; if (this->_internal_aggtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_aggtype(), target); } // uint32 aggcollid = 4 [json_name = "aggcollid"]; if (this->_internal_aggcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_aggcollid(), target); } // uint32 inputcollid = 5 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 5, this->_internal_inputcollid(), target); } // repeated .pg_query.Node aggargtypes = 6 [json_name = "aggargtypes"]; for (unsigned i = 0, n = static_cast(this->_internal_aggargtypes_size()); i < n; i++) { const auto& repfield = this->_internal_aggargtypes().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node aggdirectargs = 7 [json_name = "aggdirectargs"]; for (unsigned i = 0, n = static_cast(this->_internal_aggdirectargs_size()); i < n; i++) { const auto& repfield = this->_internal_aggdirectargs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node args = 8 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(8, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node aggorder = 9 [json_name = "aggorder"]; for (unsigned i = 0, n = static_cast(this->_internal_aggorder_size()); i < n; i++) { const auto& repfield = this->_internal_aggorder().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(9, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node aggdistinct = 10 [json_name = "aggdistinct"]; for (unsigned i = 0, n = static_cast(this->_internal_aggdistinct_size()); i < n; i++) { const auto& repfield = this->_internal_aggdistinct().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(10, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node aggfilter = 11 [json_name = "aggfilter"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 11, _Internal::aggfilter(this), _Internal::aggfilter(this).GetCachedSize(), target, stream); } // bool aggstar = 12 [json_name = "aggstar"]; if (this->_internal_aggstar() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 12, this->_internal_aggstar(), target); } // bool aggvariadic = 13 [json_name = "aggvariadic"]; if (this->_internal_aggvariadic() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 13, this->_internal_aggvariadic(), target); } // string aggkind = 14 [json_name = "aggkind"]; if (!this->_internal_aggkind().empty()) { const std::string& _s = this->_internal_aggkind(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.Aggref.aggkind"); target = stream->WriteStringMaybeAliased(14, _s, target); } // uint32 agglevelsup = 15 [json_name = "agglevelsup"]; if (this->_internal_agglevelsup() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 15, this->_internal_agglevelsup(), target); } // .pg_query.AggSplit aggsplit = 16 [json_name = "aggsplit"]; if (this->_internal_aggsplit() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 16, this->_internal_aggsplit(), target); } // int32 aggno = 17 [json_name = "aggno"]; if (this->_internal_aggno() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteInt32ToArray( 17, this->_internal_aggno(), target); } // int32 aggtransno = 18 [json_name = "aggtransno"]; if (this->_internal_aggtransno() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteInt32ToArray( 18, this->_internal_aggtransno(), target); } // int32 location = 19 [json_name = "location"]; if (this->_internal_location() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteInt32ToArray( 19, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node aggargtypes = 6 [json_name = "aggargtypes"]; total_size += 1UL * this->_internal_aggargtypes_size(); for (const auto& msg : this->_internal_aggargtypes()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node aggdirectargs = 7 [json_name = "aggdirectargs"]; total_size += 1UL * this->_internal_aggdirectargs_size(); for (const auto& msg : this->_internal_aggdirectargs()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node args = 8 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node aggorder = 9 [json_name = "aggorder"]; total_size += 1UL * this->_internal_aggorder_size(); for (const auto& msg : this->_internal_aggorder()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node aggdistinct = 10 [json_name = "aggdistinct"]; total_size += 1UL * this->_internal_aggdistinct_size(); for (const auto& msg : this->_internal_aggdistinct()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string aggkind = 14 [json_name = "aggkind"]; if (!this->_internal_aggkind().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_aggkind()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node aggfilter = 11 [json_name = "aggfilter"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.aggfilter_); } } // uint32 aggfnoid = 2 [json_name = "aggfnoid"]; if (this->_internal_aggfnoid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_aggfnoid()); } // uint32 aggtype = 3 [json_name = "aggtype"]; if (this->_internal_aggtype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_aggtype()); } // uint32 aggcollid = 4 [json_name = "aggcollid"]; if (this->_internal_aggcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_aggcollid()); } // uint32 inputcollid = 5 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_inputcollid()); } // bool aggstar = 12 [json_name = "aggstar"]; if (this->_internal_aggstar() != 0) { total_size += 2; } // bool aggvariadic = 13 [json_name = "aggvariadic"]; if (this->_internal_aggvariadic() != 0) { total_size += 2; } // uint32 agglevelsup = 15 [json_name = "agglevelsup"]; if (this->_internal_agglevelsup() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_agglevelsup()); } // .pg_query.AggSplit aggsplit = 16 [json_name = "aggsplit"]; if (this->_internal_aggsplit() != 0) { total_size += 2 + ::_pbi::WireFormatLite::EnumSize(this->_internal_aggsplit()); } // int32 aggno = 17 [json_name = "aggno"]; if (this->_internal_aggno() != 0) { total_size += 2 + ::_pbi::WireFormatLite::Int32Size( this->_internal_aggno()); } // int32 aggtransno = 18 [json_name = "aggtransno"]; if (this->_internal_aggtransno() != 0) { total_size += 2 + ::_pbi::WireFormatLite::Int32Size( this->_internal_aggtransno()); } // int32 location = 19 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += 2 + ::_pbi::WireFormatLite::Int32Size( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData Aggref::_class_data_ = { Aggref::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* Aggref::GetClassData() const { return &_class_data_; } void Aggref::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Aggref) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_aggargtypes()->MergeFrom( from._internal_aggargtypes()); _this->_internal_mutable_aggdirectargs()->MergeFrom( from._internal_aggdirectargs()); _this->_internal_mutable_args()->MergeFrom( from._internal_args()); _this->_internal_mutable_aggorder()->MergeFrom( from._internal_aggorder()); _this->_internal_mutable_aggdistinct()->MergeFrom( from._internal_aggdistinct()); if (!from._internal_aggkind().empty()) { _this->_internal_set_aggkind(from._internal_aggkind()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_aggfilter()->::pg_query::Node::MergeFrom( from._internal_aggfilter()); } } if (from._internal_aggfnoid() != 0) { _this->_internal_set_aggfnoid(from._internal_aggfnoid()); } if (from._internal_aggtype() != 0) { _this->_internal_set_aggtype(from._internal_aggtype()); } if (from._internal_aggcollid() != 0) { _this->_internal_set_aggcollid(from._internal_aggcollid()); } if (from._internal_inputcollid() != 0) { _this->_internal_set_inputcollid(from._internal_inputcollid()); } if (from._internal_aggstar() != 0) { _this->_internal_set_aggstar(from._internal_aggstar()); } if (from._internal_aggvariadic() != 0) { _this->_internal_set_aggvariadic(from._internal_aggvariadic()); } if (from._internal_agglevelsup() != 0) { _this->_internal_set_agglevelsup(from._internal_agglevelsup()); } if (from._internal_aggsplit() != 0) { _this->_internal_set_aggsplit(from._internal_aggsplit()); } if (from._internal_aggno() != 0) { _this->_internal_set_aggno(from._internal_aggno()); } if (from._internal_aggtransno() != 0) { _this->_internal_set_aggtransno(from._internal_aggtransno()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void Aggref::CopyFrom(const Aggref& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Aggref) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool Aggref::IsInitialized() const { return true; } ::_pbi::CachedSize* Aggref::AccessCachedSize() const { return &_impl_._cached_size_; } void Aggref::InternalSwap(Aggref* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.aggargtypes_.InternalSwap(&other->_impl_.aggargtypes_); _impl_.aggdirectargs_.InternalSwap(&other->_impl_.aggdirectargs_); _impl_.args_.InternalSwap(&other->_impl_.args_); _impl_.aggorder_.InternalSwap(&other->_impl_.aggorder_); _impl_.aggdistinct_.InternalSwap(&other->_impl_.aggdistinct_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.aggkind_, &other->_impl_.aggkind_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(Aggref, _impl_.location_) + sizeof(Aggref::_impl_.location_) - PROTOBUF_FIELD_OFFSET(Aggref, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata Aggref::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[18]); } // =================================================================== class GroupingFunc::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(GroupingFunc, _impl_._has_bits_); static const ::pg_query::Node& xpr(const GroupingFunc* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& GroupingFunc::_Internal::xpr(const GroupingFunc* msg) { return *msg->_impl_.xpr_; } GroupingFunc::GroupingFunc(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.GroupingFunc) } inline PROTOBUF_NDEBUG_INLINE GroupingFunc::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, args_{visibility, arena, from.args_}, refs_{visibility, arena, from.refs_} {} GroupingFunc::GroupingFunc( ::google::protobuf::Arena* arena, const GroupingFunc& from) : ::google::protobuf::Message(arena) { GroupingFunc* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, agglevelsup_), reinterpret_cast(&from._impl_) + offsetof(Impl_, agglevelsup_), offsetof(Impl_, location_) - offsetof(Impl_, agglevelsup_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.GroupingFunc) } inline PROTOBUF_NDEBUG_INLINE GroupingFunc::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, args_{visibility, arena}, refs_{visibility, arena} {} inline void GroupingFunc::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } GroupingFunc::~GroupingFunc() { // @@protoc_insertion_point(destructor:pg_query.GroupingFunc) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void GroupingFunc::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void GroupingFunc::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.GroupingFunc) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); _impl_.refs_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.agglevelsup_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.agglevelsup_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* GroupingFunc::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 3, 0, 2> GroupingFunc::_table_ = { { PROTOBUF_FIELD_OFFSET(GroupingFunc, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_GroupingFunc_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(GroupingFunc, _impl_.xpr_)}}, // repeated .pg_query.Node args = 2 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(GroupingFunc, _impl_.args_)}}, // repeated .pg_query.Node refs = 3 [json_name = "refs"]; {::_pbi::TcParser::FastMtR1, {26, 63, 2, PROTOBUF_FIELD_OFFSET(GroupingFunc, _impl_.refs_)}}, // uint32 agglevelsup = 4 [json_name = "agglevelsup"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(GroupingFunc, _impl_.agglevelsup_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(GroupingFunc, _impl_.agglevelsup_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(GroupingFunc, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(GroupingFunc, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(GroupingFunc, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node args = 2 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(GroupingFunc, _impl_.args_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node refs = 3 [json_name = "refs"]; {PROTOBUF_FIELD_OFFSET(GroupingFunc, _impl_.refs_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 agglevelsup = 4 [json_name = "agglevelsup"]; {PROTOBUF_FIELD_OFFSET(GroupingFunc, _impl_.agglevelsup_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(GroupingFunc, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* GroupingFunc::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.GroupingFunc) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node args = 2 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node refs = 3 [json_name = "refs"]; for (unsigned i = 0, n = static_cast(this->_internal_refs_size()); i < n; i++) { const auto& repfield = this->_internal_refs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // uint32 agglevelsup = 4 [json_name = "agglevelsup"]; if (this->_internal_agglevelsup() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_agglevelsup(), target); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_args()) { total_size += ::google::protobuf::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->_internal_refs()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 agglevelsup = 4 [json_name = "agglevelsup"]; if (this->_internal_agglevelsup() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_agglevelsup()); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData GroupingFunc::_class_data_ = { GroupingFunc::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* GroupingFunc::GetClassData() const { return &_class_data_; } void GroupingFunc::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.GroupingFunc) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); _this->_internal_mutable_refs()->MergeFrom( from._internal_refs()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_agglevelsup() != 0) { _this->_internal_set_agglevelsup(from._internal_agglevelsup()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void GroupingFunc::CopyFrom(const GroupingFunc& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.GroupingFunc) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool GroupingFunc::IsInitialized() const { return true; } ::_pbi::CachedSize* GroupingFunc::AccessCachedSize() const { return &_impl_._cached_size_; } void GroupingFunc::InternalSwap(GroupingFunc* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.args_.InternalSwap(&other->_impl_.args_); _impl_.refs_.InternalSwap(&other->_impl_.refs_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(GroupingFunc, _impl_.location_) + sizeof(GroupingFunc::_impl_.location_) - PROTOBUF_FIELD_OFFSET(GroupingFunc, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata GroupingFunc::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[19]); } // =================================================================== class WindowFunc::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_._has_bits_); static const ::pg_query::Node& xpr(const WindowFunc* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& aggfilter(const WindowFunc* msg); static void set_has_aggfilter(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& WindowFunc::_Internal::xpr(const WindowFunc* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& WindowFunc::_Internal::aggfilter(const WindowFunc* msg) { return *msg->_impl_.aggfilter_; } WindowFunc::WindowFunc(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.WindowFunc) } inline PROTOBUF_NDEBUG_INLINE WindowFunc::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, args_{visibility, arena, from.args_}, run_condition_{visibility, arena, from.run_condition_} {} WindowFunc::WindowFunc( ::google::protobuf::Arena* arena, const WindowFunc& from) : ::google::protobuf::Message(arena) { WindowFunc* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.aggfilter_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.aggfilter_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, winfnoid_), reinterpret_cast(&from._impl_) + offsetof(Impl_, winfnoid_), offsetof(Impl_, location_) - offsetof(Impl_, winfnoid_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.WindowFunc) } inline PROTOBUF_NDEBUG_INLINE WindowFunc::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, args_{visibility, arena}, run_condition_{visibility, arena} {} inline void WindowFunc::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } WindowFunc::~WindowFunc() { // @@protoc_insertion_point(destructor:pg_query.WindowFunc) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void WindowFunc::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.aggfilter_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void WindowFunc::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.WindowFunc) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); _impl_.run_condition_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.aggfilter_ != nullptr); _impl_.aggfilter_->Clear(); } } ::memset(&_impl_.winfnoid_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.winfnoid_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* WindowFunc::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 12, 4, 0, 2> WindowFunc::_table_ = { { PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_._has_bits_), 0, // no _extensions_ 12, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294963200, // skipmap offsetof(decltype(_table_), field_entries), 12, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_WindowFunc_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.xpr_)}}, // uint32 winfnoid = 2 [json_name = "winfnoid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowFunc, _impl_.winfnoid_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.winfnoid_)}}, // uint32 wintype = 3 [json_name = "wintype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowFunc, _impl_.wintype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.wintype_)}}, // uint32 wincollid = 4 [json_name = "wincollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowFunc, _impl_.wincollid_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.wincollid_)}}, // uint32 inputcollid = 5 [json_name = "inputcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowFunc, _impl_.inputcollid_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.inputcollid_)}}, // repeated .pg_query.Node args = 6 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {50, 63, 1, PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.args_)}}, // .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; {::_pbi::TcParser::FastMtS1, {58, 1, 2, PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.aggfilter_)}}, // repeated .pg_query.Node run_condition = 8 [json_name = "runCondition"]; {::_pbi::TcParser::FastMtR1, {66, 63, 3, PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.run_condition_)}}, // uint32 winref = 9 [json_name = "winref"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowFunc, _impl_.winref_), 63>(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.winref_)}}, // bool winstar = 10 [json_name = "winstar"]; {::_pbi::TcParser::SingularVarintNoZag1(), {80, 63, 0, PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.winstar_)}}, // bool winagg = 11 [json_name = "winagg"]; {::_pbi::TcParser::SingularVarintNoZag1(), {88, 63, 0, PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.winagg_)}}, // int32 location = 12 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowFunc, _impl_.location_), 63>(), {96, 63, 0, PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 winfnoid = 2 [json_name = "winfnoid"]; {PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.winfnoid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 wintype = 3 [json_name = "wintype"]; {PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.wintype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 wincollid = 4 [json_name = "wincollid"]; {PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.wincollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 inputcollid = 5 [json_name = "inputcollid"]; {PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.inputcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated .pg_query.Node args = 6 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.args_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; {PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.aggfilter_), _Internal::kHasBitsOffset + 1, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node run_condition = 8 [json_name = "runCondition"]; {PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.run_condition_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 winref = 9 [json_name = "winref"]; {PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.winref_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool winstar = 10 [json_name = "winstar"]; {PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.winstar_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool winagg = 11 [json_name = "winagg"]; {PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.winagg_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 12 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* WindowFunc::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.WindowFunc) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 winfnoid = 2 [json_name = "winfnoid"]; if (this->_internal_winfnoid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_winfnoid(), target); } // uint32 wintype = 3 [json_name = "wintype"]; if (this->_internal_wintype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_wintype(), target); } // uint32 wincollid = 4 [json_name = "wincollid"]; if (this->_internal_wincollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_wincollid(), target); } // uint32 inputcollid = 5 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 5, this->_internal_inputcollid(), target); } // repeated .pg_query.Node args = 6 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 7, _Internal::aggfilter(this), _Internal::aggfilter(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node run_condition = 8 [json_name = "runCondition"]; for (unsigned i = 0, n = static_cast(this->_internal_run_condition_size()); i < n; i++) { const auto& repfield = this->_internal_run_condition().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(8, repfield, repfield.GetCachedSize(), target, stream); } // uint32 winref = 9 [json_name = "winref"]; if (this->_internal_winref() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 9, this->_internal_winref(), target); } // bool winstar = 10 [json_name = "winstar"]; if (this->_internal_winstar() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 10, this->_internal_winstar(), target); } // bool winagg = 11 [json_name = "winagg"]; if (this->_internal_winagg() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 11, this->_internal_winagg(), target); } // int32 location = 12 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<12>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node run_condition = 8 [json_name = "runCondition"]; total_size += 1UL * this->_internal_run_condition_size(); for (const auto& msg : this->_internal_run_condition()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.aggfilter_); } } // uint32 winfnoid = 2 [json_name = "winfnoid"]; if (this->_internal_winfnoid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_winfnoid()); } // uint32 wintype = 3 [json_name = "wintype"]; if (this->_internal_wintype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_wintype()); } // uint32 wincollid = 4 [json_name = "wincollid"]; if (this->_internal_wincollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_wincollid()); } // uint32 inputcollid = 5 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_inputcollid()); } // uint32 winref = 9 [json_name = "winref"]; if (this->_internal_winref() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_winref()); } // bool winstar = 10 [json_name = "winstar"]; if (this->_internal_winstar() != 0) { total_size += 2; } // bool winagg = 11 [json_name = "winagg"]; if (this->_internal_winagg() != 0) { total_size += 2; } // int32 location = 12 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData WindowFunc::_class_data_ = { WindowFunc::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* WindowFunc::GetClassData() const { return &_class_data_; } void WindowFunc::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.WindowFunc) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); _this->_internal_mutable_run_condition()->MergeFrom( from._internal_run_condition()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_aggfilter()->::pg_query::Node::MergeFrom( from._internal_aggfilter()); } } if (from._internal_winfnoid() != 0) { _this->_internal_set_winfnoid(from._internal_winfnoid()); } if (from._internal_wintype() != 0) { _this->_internal_set_wintype(from._internal_wintype()); } if (from._internal_wincollid() != 0) { _this->_internal_set_wincollid(from._internal_wincollid()); } if (from._internal_inputcollid() != 0) { _this->_internal_set_inputcollid(from._internal_inputcollid()); } if (from._internal_winref() != 0) { _this->_internal_set_winref(from._internal_winref()); } if (from._internal_winstar() != 0) { _this->_internal_set_winstar(from._internal_winstar()); } if (from._internal_winagg() != 0) { _this->_internal_set_winagg(from._internal_winagg()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void WindowFunc::CopyFrom(const WindowFunc& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.WindowFunc) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool WindowFunc::IsInitialized() const { return true; } ::_pbi::CachedSize* WindowFunc::AccessCachedSize() const { return &_impl_._cached_size_; } void WindowFunc::InternalSwap(WindowFunc* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.args_.InternalSwap(&other->_impl_.args_); _impl_.run_condition_.InternalSwap(&other->_impl_.run_condition_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.location_) + sizeof(WindowFunc::_impl_.location_) - PROTOBUF_FIELD_OFFSET(WindowFunc, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata WindowFunc::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[20]); } // =================================================================== class WindowFuncRunCondition::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(WindowFuncRunCondition, _impl_._has_bits_); static const ::pg_query::Node& xpr(const WindowFuncRunCondition* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& arg(const WindowFuncRunCondition* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& WindowFuncRunCondition::_Internal::xpr(const WindowFuncRunCondition* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& WindowFuncRunCondition::_Internal::arg(const WindowFuncRunCondition* msg) { return *msg->_impl_.arg_; } WindowFuncRunCondition::WindowFuncRunCondition(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.WindowFuncRunCondition) } inline PROTOBUF_NDEBUG_INLINE WindowFuncRunCondition::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} WindowFuncRunCondition::WindowFuncRunCondition( ::google::protobuf::Arena* arena, const WindowFuncRunCondition& from) : ::google::protobuf::Message(arena) { WindowFuncRunCondition* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, opno_), reinterpret_cast(&from._impl_) + offsetof(Impl_, opno_), offsetof(Impl_, wfunc_left_) - offsetof(Impl_, opno_) + sizeof(Impl_::wfunc_left_)); // @@protoc_insertion_point(copy_constructor:pg_query.WindowFuncRunCondition) } inline PROTOBUF_NDEBUG_INLINE WindowFuncRunCondition::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void WindowFuncRunCondition::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, wfunc_left_) - offsetof(Impl_, xpr_) + sizeof(Impl_::wfunc_left_)); } WindowFuncRunCondition::~WindowFuncRunCondition() { // @@protoc_insertion_point(destructor:pg_query.WindowFuncRunCondition) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void WindowFuncRunCondition::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void WindowFuncRunCondition::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.WindowFuncRunCondition) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } } ::memset(&_impl_.opno_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.wfunc_left_) - reinterpret_cast(&_impl_.opno_)) + sizeof(_impl_.wfunc_left_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* WindowFuncRunCondition::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 0, 2> WindowFuncRunCondition::_table_ = { { PROTOBUF_FIELD_OFFSET(WindowFuncRunCondition, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_WindowFuncRunCondition_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(WindowFuncRunCondition, _impl_.xpr_)}}, // uint32 opno = 2 [json_name = "opno"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowFuncRunCondition, _impl_.opno_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(WindowFuncRunCondition, _impl_.opno_)}}, // uint32 inputcollid = 3 [json_name = "inputcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowFuncRunCondition, _impl_.inputcollid_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(WindowFuncRunCondition, _impl_.inputcollid_)}}, // bool wfunc_left = 4 [json_name = "wfunc_left"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(WindowFuncRunCondition, _impl_.wfunc_left_)}}, // .pg_query.Node arg = 5 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {42, 1, 1, PROTOBUF_FIELD_OFFSET(WindowFuncRunCondition, _impl_.arg_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(WindowFuncRunCondition, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 opno = 2 [json_name = "opno"]; {PROTOBUF_FIELD_OFFSET(WindowFuncRunCondition, _impl_.opno_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 inputcollid = 3 [json_name = "inputcollid"]; {PROTOBUF_FIELD_OFFSET(WindowFuncRunCondition, _impl_.inputcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool wfunc_left = 4 [json_name = "wfunc_left"]; {PROTOBUF_FIELD_OFFSET(WindowFuncRunCondition, _impl_.wfunc_left_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.Node arg = 5 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(WindowFuncRunCondition, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* WindowFuncRunCondition::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.WindowFuncRunCondition) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 opno = 2 [json_name = "opno"]; if (this->_internal_opno() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_opno(), target); } // uint32 inputcollid = 3 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_inputcollid(), target); } // bool wfunc_left = 4 [json_name = "wfunc_left"]; if (this->_internal_wfunc_left() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_wfunc_left(), target); } // .pg_query.Node arg = 5 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.WindowFuncRunCondition) return target; } ::size_t WindowFuncRunCondition::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.WindowFuncRunCondition) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node arg = 5 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } } // uint32 opno = 2 [json_name = "opno"]; if (this->_internal_opno() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_opno()); } // uint32 inputcollid = 3 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_inputcollid()); } // bool wfunc_left = 4 [json_name = "wfunc_left"]; if (this->_internal_wfunc_left() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData WindowFuncRunCondition::_class_data_ = { WindowFuncRunCondition::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* WindowFuncRunCondition::GetClassData() const { return &_class_data_; } void WindowFuncRunCondition::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.WindowFuncRunCondition) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } } if (from._internal_opno() != 0) { _this->_internal_set_opno(from._internal_opno()); } if (from._internal_inputcollid() != 0) { _this->_internal_set_inputcollid(from._internal_inputcollid()); } if (from._internal_wfunc_left() != 0) { _this->_internal_set_wfunc_left(from._internal_wfunc_left()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void WindowFuncRunCondition::CopyFrom(const WindowFuncRunCondition& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.WindowFuncRunCondition) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool WindowFuncRunCondition::IsInitialized() const { return true; } ::_pbi::CachedSize* WindowFuncRunCondition::AccessCachedSize() const { return &_impl_._cached_size_; } void WindowFuncRunCondition::InternalSwap(WindowFuncRunCondition* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(WindowFuncRunCondition, _impl_.wfunc_left_) + sizeof(WindowFuncRunCondition::_impl_.wfunc_left_) - PROTOBUF_FIELD_OFFSET(WindowFuncRunCondition, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata WindowFuncRunCondition::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[21]); } // =================================================================== class MergeSupportFunc::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(MergeSupportFunc, _impl_._has_bits_); static const ::pg_query::Node& xpr(const MergeSupportFunc* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& MergeSupportFunc::_Internal::xpr(const MergeSupportFunc* msg) { return *msg->_impl_.xpr_; } MergeSupportFunc::MergeSupportFunc(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.MergeSupportFunc) } inline PROTOBUF_NDEBUG_INLINE MergeSupportFunc::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} MergeSupportFunc::MergeSupportFunc( ::google::protobuf::Arena* arena, const MergeSupportFunc& from) : ::google::protobuf::Message(arena) { MergeSupportFunc* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, msftype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, msftype_), offsetof(Impl_, location_) - offsetof(Impl_, msftype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.MergeSupportFunc) } inline PROTOBUF_NDEBUG_INLINE MergeSupportFunc::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void MergeSupportFunc::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } MergeSupportFunc::~MergeSupportFunc() { // @@protoc_insertion_point(destructor:pg_query.MergeSupportFunc) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void MergeSupportFunc::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void MergeSupportFunc::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.MergeSupportFunc) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.msftype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.msftype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* MergeSupportFunc::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 1, 0, 2> MergeSupportFunc::_table_ = { { PROTOBUF_FIELD_OFFSET(MergeSupportFunc, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_MergeSupportFunc_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 4 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MergeSupportFunc, _impl_.location_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(MergeSupportFunc, _impl_.location_)}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(MergeSupportFunc, _impl_.xpr_)}}, // uint32 msftype = 2 [json_name = "msftype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MergeSupportFunc, _impl_.msftype_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(MergeSupportFunc, _impl_.msftype_)}}, // uint32 msfcollid = 3 [json_name = "msfcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MergeSupportFunc, _impl_.msfcollid_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(MergeSupportFunc, _impl_.msfcollid_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(MergeSupportFunc, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 msftype = 2 [json_name = "msftype"]; {PROTOBUF_FIELD_OFFSET(MergeSupportFunc, _impl_.msftype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 msfcollid = 3 [json_name = "msfcollid"]; {PROTOBUF_FIELD_OFFSET(MergeSupportFunc, _impl_.msfcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 location = 4 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(MergeSupportFunc, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* MergeSupportFunc::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.MergeSupportFunc) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 msftype = 2 [json_name = "msftype"]; if (this->_internal_msftype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_msftype(), target); } // uint32 msfcollid = 3 [json_name = "msfcollid"]; if (this->_internal_msfcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_msfcollid(), target); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.MergeSupportFunc) return target; } ::size_t MergeSupportFunc::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.MergeSupportFunc) ::size_t total_size = 0; ::uint32_t 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"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 msftype = 2 [json_name = "msftype"]; if (this->_internal_msftype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_msftype()); } // uint32 msfcollid = 3 [json_name = "msfcollid"]; if (this->_internal_msfcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_msfcollid()); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData MergeSupportFunc::_class_data_ = { MergeSupportFunc::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* MergeSupportFunc::GetClassData() const { return &_class_data_; } void MergeSupportFunc::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.MergeSupportFunc) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_msftype() != 0) { _this->_internal_set_msftype(from._internal_msftype()); } if (from._internal_msfcollid() != 0) { _this->_internal_set_msfcollid(from._internal_msfcollid()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void MergeSupportFunc::CopyFrom(const MergeSupportFunc& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.MergeSupportFunc) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool MergeSupportFunc::IsInitialized() const { return true; } ::_pbi::CachedSize* MergeSupportFunc::AccessCachedSize() const { return &_impl_._cached_size_; } void MergeSupportFunc::InternalSwap(MergeSupportFunc* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(MergeSupportFunc, _impl_.location_) + sizeof(MergeSupportFunc::_impl_.location_) - PROTOBUF_FIELD_OFFSET(MergeSupportFunc, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata MergeSupportFunc::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[22]); } // =================================================================== class SubscriptingRef::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_._has_bits_); static const ::pg_query::Node& xpr(const SubscriptingRef* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& refexpr(const SubscriptingRef* msg); static void set_has_refexpr(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& refassgnexpr(const SubscriptingRef* msg); static void set_has_refassgnexpr(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::Node& SubscriptingRef::_Internal::xpr(const SubscriptingRef* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& SubscriptingRef::_Internal::refexpr(const SubscriptingRef* msg) { return *msg->_impl_.refexpr_; } const ::pg_query::Node& SubscriptingRef::_Internal::refassgnexpr(const SubscriptingRef* msg) { return *msg->_impl_.refassgnexpr_; } SubscriptingRef::SubscriptingRef(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SubscriptingRef) } inline PROTOBUF_NDEBUG_INLINE SubscriptingRef::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, refupperindexpr_{visibility, arena, from.refupperindexpr_}, reflowerindexpr_{visibility, arena, from.reflowerindexpr_} {} SubscriptingRef::SubscriptingRef( ::google::protobuf::Arena* arena, const SubscriptingRef& from) : ::google::protobuf::Message(arena) { SubscriptingRef* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.refexpr_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.refexpr_) : nullptr; _impl_.refassgnexpr_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.refassgnexpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, refcontainertype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, refcontainertype_), offsetof(Impl_, refcollid_) - offsetof(Impl_, refcontainertype_) + sizeof(Impl_::refcollid_)); // @@protoc_insertion_point(copy_constructor:pg_query.SubscriptingRef) } inline PROTOBUF_NDEBUG_INLINE SubscriptingRef::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, refupperindexpr_{visibility, arena}, reflowerindexpr_{visibility, arena} {} inline void SubscriptingRef::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, refcollid_) - offsetof(Impl_, xpr_) + sizeof(Impl_::refcollid_)); } SubscriptingRef::~SubscriptingRef() { // @@protoc_insertion_point(destructor:pg_query.SubscriptingRef) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void SubscriptingRef::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.refexpr_; delete _impl_.refassgnexpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void SubscriptingRef::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SubscriptingRef) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.refupperindexpr_.Clear(); _impl_.reflowerindexpr_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.refexpr_ != nullptr); _impl_.refexpr_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.refassgnexpr_ != nullptr); _impl_.refassgnexpr_->Clear(); } } ::memset(&_impl_.refcontainertype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.refcollid_) - reinterpret_cast(&_impl_.refcontainertype_)) + sizeof(_impl_.refcollid_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* SubscriptingRef::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 10, 5, 0, 2> SubscriptingRef::_table_ = { { PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_._has_bits_), 0, // no _extensions_ 10, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294966272, // skipmap offsetof(decltype(_table_), field_entries), 10, // num_field_entries 5, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_SubscriptingRef_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.xpr_)}}, // uint32 refcontainertype = 2 [json_name = "refcontainertype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SubscriptingRef, _impl_.refcontainertype_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refcontainertype_)}}, // uint32 refelemtype = 3 [json_name = "refelemtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SubscriptingRef, _impl_.refelemtype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refelemtype_)}}, // uint32 refrestype = 4 [json_name = "refrestype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SubscriptingRef, _impl_.refrestype_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refrestype_)}}, // int32 reftypmod = 5 [json_name = "reftypmod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SubscriptingRef, _impl_.reftypmod_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.reftypmod_)}}, // uint32 refcollid = 6 [json_name = "refcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SubscriptingRef, _impl_.refcollid_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refcollid_)}}, // repeated .pg_query.Node refupperindexpr = 7 [json_name = "refupperindexpr"]; {::_pbi::TcParser::FastMtR1, {58, 63, 1, PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refupperindexpr_)}}, // repeated .pg_query.Node reflowerindexpr = 8 [json_name = "reflowerindexpr"]; {::_pbi::TcParser::FastMtR1, {66, 63, 2, PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.reflowerindexpr_)}}, // .pg_query.Node refexpr = 9 [json_name = "refexpr"]; {::_pbi::TcParser::FastMtS1, {74, 1, 3, PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refexpr_)}}, // .pg_query.Node refassgnexpr = 10 [json_name = "refassgnexpr"]; {::_pbi::TcParser::FastMtS1, {82, 2, 4, PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refassgnexpr_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 refcontainertype = 2 [json_name = "refcontainertype"]; {PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refcontainertype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 refelemtype = 3 [json_name = "refelemtype"]; {PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refelemtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 refrestype = 4 [json_name = "refrestype"]; {PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refrestype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 reftypmod = 5 [json_name = "reftypmod"]; {PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.reftypmod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 refcollid = 6 [json_name = "refcollid"]; {PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated .pg_query.Node refupperindexpr = 7 [json_name = "refupperindexpr"]; {PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refupperindexpr_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node reflowerindexpr = 8 [json_name = "reflowerindexpr"]; {PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.reflowerindexpr_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node refexpr = 9 [json_name = "refexpr"]; {PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refexpr_), _Internal::kHasBitsOffset + 1, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node refassgnexpr = 10 [json_name = "refassgnexpr"]; {PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refassgnexpr_), _Internal::kHasBitsOffset + 2, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* SubscriptingRef::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SubscriptingRef) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 refcontainertype = 2 [json_name = "refcontainertype"]; if (this->_internal_refcontainertype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_refcontainertype(), target); } // uint32 refelemtype = 3 [json_name = "refelemtype"]; if (this->_internal_refelemtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_refelemtype(), target); } // uint32 refrestype = 4 [json_name = "refrestype"]; if (this->_internal_refrestype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_refrestype(), target); } // int32 reftypmod = 5 [json_name = "reftypmod"]; if (this->_internal_reftypmod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_reftypmod(), target); } // uint32 refcollid = 6 [json_name = "refcollid"]; if (this->_internal_refcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 6, this->_internal_refcollid(), target); } // repeated .pg_query.Node refupperindexpr = 7 [json_name = "refupperindexpr"]; for (unsigned i = 0, n = static_cast(this->_internal_refupperindexpr_size()); i < n; i++) { const auto& repfield = this->_internal_refupperindexpr().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node reflowerindexpr = 8 [json_name = "reflowerindexpr"]; for (unsigned i = 0, n = static_cast(this->_internal_reflowerindexpr_size()); i < n; i++) { const auto& repfield = this->_internal_reflowerindexpr().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(8, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node refexpr = 9 [json_name = "refexpr"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 9, _Internal::refexpr(this), _Internal::refexpr(this).GetCachedSize(), target, stream); } // .pg_query.Node refassgnexpr = 10 [json_name = "refassgnexpr"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 10, _Internal::refassgnexpr(this), _Internal::refassgnexpr(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node refupperindexpr = 7 [json_name = "refupperindexpr"]; total_size += 1UL * this->_internal_refupperindexpr_size(); for (const auto& msg : this->_internal_refupperindexpr()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node reflowerindexpr = 8 [json_name = "reflowerindexpr"]; total_size += 1UL * this->_internal_reflowerindexpr_size(); for (const auto& msg : this->_internal_reflowerindexpr()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node refexpr = 9 [json_name = "refexpr"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.refexpr_); } // .pg_query.Node refassgnexpr = 10 [json_name = "refassgnexpr"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.refassgnexpr_); } } // uint32 refcontainertype = 2 [json_name = "refcontainertype"]; if (this->_internal_refcontainertype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_refcontainertype()); } // uint32 refelemtype = 3 [json_name = "refelemtype"]; if (this->_internal_refelemtype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_refelemtype()); } // uint32 refrestype = 4 [json_name = "refrestype"]; if (this->_internal_refrestype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_refrestype()); } // int32 reftypmod = 5 [json_name = "reftypmod"]; if (this->_internal_reftypmod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_reftypmod()); } // uint32 refcollid = 6 [json_name = "refcollid"]; if (this->_internal_refcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_refcollid()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData SubscriptingRef::_class_data_ = { SubscriptingRef::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* SubscriptingRef::GetClassData() const { return &_class_data_; } void SubscriptingRef::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SubscriptingRef) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_refupperindexpr()->MergeFrom( from._internal_refupperindexpr()); _this->_internal_mutable_reflowerindexpr()->MergeFrom( from._internal_reflowerindexpr()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_refexpr()->::pg_query::Node::MergeFrom( from._internal_refexpr()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_refassgnexpr()->::pg_query::Node::MergeFrom( from._internal_refassgnexpr()); } } if (from._internal_refcontainertype() != 0) { _this->_internal_set_refcontainertype(from._internal_refcontainertype()); } if (from._internal_refelemtype() != 0) { _this->_internal_set_refelemtype(from._internal_refelemtype()); } if (from._internal_refrestype() != 0) { _this->_internal_set_refrestype(from._internal_refrestype()); } if (from._internal_reftypmod() != 0) { _this->_internal_set_reftypmod(from._internal_reftypmod()); } if (from._internal_refcollid() != 0) { _this->_internal_set_refcollid(from._internal_refcollid()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void SubscriptingRef::CopyFrom(const SubscriptingRef& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SubscriptingRef) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool SubscriptingRef::IsInitialized() const { return true; } ::_pbi::CachedSize* SubscriptingRef::AccessCachedSize() const { return &_impl_._cached_size_; } void SubscriptingRef::InternalSwap(SubscriptingRef* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.refupperindexpr_.InternalSwap(&other->_impl_.refupperindexpr_); _impl_.reflowerindexpr_.InternalSwap(&other->_impl_.reflowerindexpr_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.refcollid_) + sizeof(SubscriptingRef::_impl_.refcollid_) - PROTOBUF_FIELD_OFFSET(SubscriptingRef, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata SubscriptingRef::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[23]); } // =================================================================== class FuncExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const FuncExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& FuncExpr::_Internal::xpr(const FuncExpr* msg) { return *msg->_impl_.xpr_; } FuncExpr::FuncExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.FuncExpr) } inline PROTOBUF_NDEBUG_INLINE FuncExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, args_{visibility, arena, from.args_} {} FuncExpr::FuncExpr( ::google::protobuf::Arena* arena, const FuncExpr& from) : ::google::protobuf::Message(arena) { FuncExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, funcid_), reinterpret_cast(&from._impl_) + offsetof(Impl_, funcid_), offsetof(Impl_, location_) - offsetof(Impl_, funcid_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.FuncExpr) } inline PROTOBUF_NDEBUG_INLINE FuncExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, args_{visibility, arena} {} inline void FuncExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } FuncExpr::~FuncExpr() { // @@protoc_insertion_point(destructor:pg_query.FuncExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void FuncExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void FuncExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.FuncExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.funcid_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.funcid_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* FuncExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 10, 2, 0, 2> FuncExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_._has_bits_), 0, // no _extensions_ 10, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294966272, // skipmap offsetof(decltype(_table_), field_entries), 10, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_FuncExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.xpr_)}}, // uint32 funcid = 2 [json_name = "funcid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FuncExpr, _impl_.funcid_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.funcid_)}}, // uint32 funcresulttype = 3 [json_name = "funcresulttype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FuncExpr, _impl_.funcresulttype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.funcresulttype_)}}, // bool funcretset = 4 [json_name = "funcretset"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.funcretset_)}}, // bool funcvariadic = 5 [json_name = "funcvariadic"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.funcvariadic_)}}, // .pg_query.CoercionForm funcformat = 6 [json_name = "funcformat"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FuncExpr, _impl_.funcformat_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.funcformat_)}}, // uint32 funccollid = 7 [json_name = "funccollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FuncExpr, _impl_.funccollid_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.funccollid_)}}, // uint32 inputcollid = 8 [json_name = "inputcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FuncExpr, _impl_.inputcollid_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.inputcollid_)}}, // repeated .pg_query.Node args = 9 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {74, 63, 1, PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.args_)}}, // int32 location = 10 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FuncExpr, _impl_.location_), 63>(), {80, 63, 0, PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 funcid = 2 [json_name = "funcid"]; {PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.funcid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 funcresulttype = 3 [json_name = "funcresulttype"]; {PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.funcresulttype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool funcretset = 4 [json_name = "funcretset"]; {PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.funcretset_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool funcvariadic = 5 [json_name = "funcvariadic"]; {PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.funcvariadic_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.CoercionForm funcformat = 6 [json_name = "funcformat"]; {PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.funcformat_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // uint32 funccollid = 7 [json_name = "funccollid"]; {PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.funccollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 inputcollid = 8 [json_name = "inputcollid"]; {PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.inputcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated .pg_query.Node args = 9 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.args_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 10 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* FuncExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.FuncExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 funcid = 2 [json_name = "funcid"]; if (this->_internal_funcid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_funcid(), target); } // uint32 funcresulttype = 3 [json_name = "funcresulttype"]; if (this->_internal_funcresulttype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_funcresulttype(), target); } // bool funcretset = 4 [json_name = "funcretset"]; if (this->_internal_funcretset() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_funcretset(), target); } // bool funcvariadic = 5 [json_name = "funcvariadic"]; if (this->_internal_funcvariadic() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_funcvariadic(), target); } // .pg_query.CoercionForm funcformat = 6 [json_name = "funcformat"]; if (this->_internal_funcformat() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 6, this->_internal_funcformat(), target); } // uint32 funccollid = 7 [json_name = "funccollid"]; if (this->_internal_funccollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 7, this->_internal_funccollid(), target); } // uint32 inputcollid = 8 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 8, this->_internal_inputcollid(), target); } // repeated .pg_query.Node args = 9 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(9, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 10 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<10>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 funcid = 2 [json_name = "funcid"]; if (this->_internal_funcid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_funcid()); } // uint32 funcresulttype = 3 [json_name = "funcresulttype"]; if (this->_internal_funcresulttype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_funcresulttype()); } // bool funcretset = 4 [json_name = "funcretset"]; if (this->_internal_funcretset() != 0) { total_size += 2; } // bool funcvariadic = 5 [json_name = "funcvariadic"]; if (this->_internal_funcvariadic() != 0) { total_size += 2; } // .pg_query.CoercionForm funcformat = 6 [json_name = "funcformat"]; if (this->_internal_funcformat() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_funcformat()); } // uint32 funccollid = 7 [json_name = "funccollid"]; if (this->_internal_funccollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_funccollid()); } // uint32 inputcollid = 8 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_inputcollid()); } // int32 location = 10 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData FuncExpr::_class_data_ = { FuncExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* FuncExpr::GetClassData() const { return &_class_data_; } void FuncExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.FuncExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_funcid() != 0) { _this->_internal_set_funcid(from._internal_funcid()); } if (from._internal_funcresulttype() != 0) { _this->_internal_set_funcresulttype(from._internal_funcresulttype()); } if (from._internal_funcretset() != 0) { _this->_internal_set_funcretset(from._internal_funcretset()); } if (from._internal_funcvariadic() != 0) { _this->_internal_set_funcvariadic(from._internal_funcvariadic()); } if (from._internal_funcformat() != 0) { _this->_internal_set_funcformat(from._internal_funcformat()); } if (from._internal_funccollid() != 0) { _this->_internal_set_funccollid(from._internal_funccollid()); } if (from._internal_inputcollid() != 0) { _this->_internal_set_inputcollid(from._internal_inputcollid()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void FuncExpr::CopyFrom(const FuncExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.FuncExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool FuncExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* FuncExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void FuncExpr::InternalSwap(FuncExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.args_.InternalSwap(&other->_impl_.args_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.location_) + sizeof(FuncExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(FuncExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata FuncExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[24]); } // =================================================================== class NamedArgExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(NamedArgExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const NamedArgExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& arg(const NamedArgExpr* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& NamedArgExpr::_Internal::xpr(const NamedArgExpr* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& NamedArgExpr::_Internal::arg(const NamedArgExpr* msg) { return *msg->_impl_.arg_; } NamedArgExpr::NamedArgExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.NamedArgExpr) } inline PROTOBUF_NDEBUG_INLINE NamedArgExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, name_(arena, from.name_) {} NamedArgExpr::NamedArgExpr( ::google::protobuf::Arena* arena, const NamedArgExpr& from) : ::google::protobuf::Message(arena) { NamedArgExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, argnumber_), reinterpret_cast(&from._impl_) + offsetof(Impl_, argnumber_), offsetof(Impl_, location_) - offsetof(Impl_, argnumber_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.NamedArgExpr) } inline PROTOBUF_NDEBUG_INLINE NamedArgExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, name_(arena) {} inline void NamedArgExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } NamedArgExpr::~NamedArgExpr() { // @@protoc_insertion_point(destructor:pg_query.NamedArgExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void NamedArgExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); delete _impl_.xpr_; delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void NamedArgExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.NamedArgExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } } ::memset(&_impl_.argnumber_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.argnumber_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* NamedArgExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 34, 2> NamedArgExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(NamedArgExpr, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_NamedArgExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(NamedArgExpr, _impl_.xpr_)}}, // .pg_query.Node arg = 2 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(NamedArgExpr, _impl_.arg_)}}, // string name = 3 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(NamedArgExpr, _impl_.name_)}}, // int32 argnumber = 4 [json_name = "argnumber"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NamedArgExpr, _impl_.argnumber_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(NamedArgExpr, _impl_.argnumber_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NamedArgExpr, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(NamedArgExpr, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(NamedArgExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node arg = 2 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(NamedArgExpr, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string name = 3 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(NamedArgExpr, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // int32 argnumber = 4 [json_name = "argnumber"]; {PROTOBUF_FIELD_OFFSET(NamedArgExpr, _impl_.argnumber_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(NamedArgExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\25\0\0\4\0\0\0\0" "pg_query.NamedArgExpr" "name" }}, }; ::uint8_t* NamedArgExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.NamedArgExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // string name = 3 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.NamedArgExpr.name"); target = stream->WriteStringMaybeAliased(3, _s, target); } // int32 argnumber = 4 [json_name = "argnumber"]; if (this->_internal_argnumber() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_argnumber(), target); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } } // int32 argnumber = 4 [json_name = "argnumber"]; if (this->_internal_argnumber() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_argnumber()); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData NamedArgExpr::_class_data_ = { NamedArgExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* NamedArgExpr::GetClassData() const { return &_class_data_; } void NamedArgExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.NamedArgExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } } if (from._internal_argnumber() != 0) { _this->_internal_set_argnumber(from._internal_argnumber()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void NamedArgExpr::CopyFrom(const NamedArgExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.NamedArgExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool NamedArgExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* NamedArgExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void NamedArgExpr::InternalSwap(NamedArgExpr* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(NamedArgExpr, _impl_.location_) + sizeof(NamedArgExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(NamedArgExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata NamedArgExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[25]); } // =================================================================== class OpExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(OpExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const OpExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& OpExpr::_Internal::xpr(const OpExpr* msg) { return *msg->_impl_.xpr_; } OpExpr::OpExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.OpExpr) } inline PROTOBUF_NDEBUG_INLINE OpExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, args_{visibility, arena, from.args_} {} OpExpr::OpExpr( ::google::protobuf::Arena* arena, const OpExpr& from) : ::google::protobuf::Message(arena) { OpExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, opno_), reinterpret_cast(&from._impl_) + offsetof(Impl_, opno_), offsetof(Impl_, location_) - offsetof(Impl_, opno_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.OpExpr) } inline PROTOBUF_NDEBUG_INLINE OpExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, args_{visibility, arena} {} inline void OpExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } OpExpr::~OpExpr() { // @@protoc_insertion_point(destructor:pg_query.OpExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void OpExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void OpExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.OpExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.opno_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.opno_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* OpExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 2, 0, 2> OpExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(OpExpr, _impl_._has_bits_), 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_OpExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 8 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(OpExpr, _impl_.location_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.location_)}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.xpr_)}}, // uint32 opno = 2 [json_name = "opno"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(OpExpr, _impl_.opno_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.opno_)}}, // uint32 opresulttype = 3 [json_name = "opresulttype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(OpExpr, _impl_.opresulttype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.opresulttype_)}}, // bool opretset = 4 [json_name = "opretset"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.opretset_)}}, // uint32 opcollid = 5 [json_name = "opcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(OpExpr, _impl_.opcollid_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.opcollid_)}}, // uint32 inputcollid = 6 [json_name = "inputcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(OpExpr, _impl_.inputcollid_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.inputcollid_)}}, // repeated .pg_query.Node args = 7 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {58, 63, 1, PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.args_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 opno = 2 [json_name = "opno"]; {PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.opno_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 opresulttype = 3 [json_name = "opresulttype"]; {PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.opresulttype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool opretset = 4 [json_name = "opretset"]; {PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.opretset_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // uint32 opcollid = 5 [json_name = "opcollid"]; {PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.opcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 inputcollid = 6 [json_name = "inputcollid"]; {PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.inputcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated .pg_query.Node args = 7 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.args_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 8 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* OpExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.OpExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 opno = 2 [json_name = "opno"]; if (this->_internal_opno() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_opno(), target); } // uint32 opresulttype = 3 [json_name = "opresulttype"]; if (this->_internal_opresulttype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_opresulttype(), target); } // bool opretset = 4 [json_name = "opretset"]; if (this->_internal_opretset() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_opretset(), target); } // uint32 opcollid = 5 [json_name = "opcollid"]; if (this->_internal_opcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 5, this->_internal_opcollid(), target); } // uint32 inputcollid = 6 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 6, this->_internal_inputcollid(), target); } // repeated .pg_query.Node args = 7 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<8>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 7 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 opno = 2 [json_name = "opno"]; if (this->_internal_opno() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_opno()); } // uint32 opresulttype = 3 [json_name = "opresulttype"]; if (this->_internal_opresulttype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_opresulttype()); } // bool opretset = 4 [json_name = "opretset"]; if (this->_internal_opretset() != 0) { total_size += 2; } // uint32 opcollid = 5 [json_name = "opcollid"]; if (this->_internal_opcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_opcollid()); } // uint32 inputcollid = 6 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_inputcollid()); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData OpExpr::_class_data_ = { OpExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* OpExpr::GetClassData() const { return &_class_data_; } void OpExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.OpExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_opno() != 0) { _this->_internal_set_opno(from._internal_opno()); } if (from._internal_opresulttype() != 0) { _this->_internal_set_opresulttype(from._internal_opresulttype()); } if (from._internal_opretset() != 0) { _this->_internal_set_opretset(from._internal_opretset()); } if (from._internal_opcollid() != 0) { _this->_internal_set_opcollid(from._internal_opcollid()); } if (from._internal_inputcollid() != 0) { _this->_internal_set_inputcollid(from._internal_inputcollid()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void OpExpr::CopyFrom(const OpExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.OpExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool OpExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* OpExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void OpExpr::InternalSwap(OpExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.args_.InternalSwap(&other->_impl_.args_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.location_) + sizeof(OpExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(OpExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata OpExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[26]); } // =================================================================== class DistinctExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const DistinctExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& DistinctExpr::_Internal::xpr(const DistinctExpr* msg) { return *msg->_impl_.xpr_; } DistinctExpr::DistinctExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DistinctExpr) } inline PROTOBUF_NDEBUG_INLINE DistinctExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, args_{visibility, arena, from.args_} {} DistinctExpr::DistinctExpr( ::google::protobuf::Arena* arena, const DistinctExpr& from) : ::google::protobuf::Message(arena) { DistinctExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, opno_), reinterpret_cast(&from._impl_) + offsetof(Impl_, opno_), offsetof(Impl_, location_) - offsetof(Impl_, opno_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.DistinctExpr) } inline PROTOBUF_NDEBUG_INLINE DistinctExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, args_{visibility, arena} {} inline void DistinctExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } DistinctExpr::~DistinctExpr() { // @@protoc_insertion_point(destructor:pg_query.DistinctExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DistinctExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void DistinctExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DistinctExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.opno_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.opno_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DistinctExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 2, 0, 2> DistinctExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_._has_bits_), 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_DistinctExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 8 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DistinctExpr, _impl_.location_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.location_)}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.xpr_)}}, // uint32 opno = 2 [json_name = "opno"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DistinctExpr, _impl_.opno_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.opno_)}}, // uint32 opresulttype = 3 [json_name = "opresulttype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DistinctExpr, _impl_.opresulttype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.opresulttype_)}}, // bool opretset = 4 [json_name = "opretset"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.opretset_)}}, // uint32 opcollid = 5 [json_name = "opcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DistinctExpr, _impl_.opcollid_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.opcollid_)}}, // uint32 inputcollid = 6 [json_name = "inputcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DistinctExpr, _impl_.inputcollid_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.inputcollid_)}}, // repeated .pg_query.Node args = 7 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {58, 63, 1, PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.args_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 opno = 2 [json_name = "opno"]; {PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.opno_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 opresulttype = 3 [json_name = "opresulttype"]; {PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.opresulttype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool opretset = 4 [json_name = "opretset"]; {PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.opretset_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // uint32 opcollid = 5 [json_name = "opcollid"]; {PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.opcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 inputcollid = 6 [json_name = "inputcollid"]; {PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.inputcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated .pg_query.Node args = 7 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.args_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 8 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* DistinctExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DistinctExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 opno = 2 [json_name = "opno"]; if (this->_internal_opno() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_opno(), target); } // uint32 opresulttype = 3 [json_name = "opresulttype"]; if (this->_internal_opresulttype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_opresulttype(), target); } // bool opretset = 4 [json_name = "opretset"]; if (this->_internal_opretset() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_opretset(), target); } // uint32 opcollid = 5 [json_name = "opcollid"]; if (this->_internal_opcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 5, this->_internal_opcollid(), target); } // uint32 inputcollid = 6 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 6, this->_internal_inputcollid(), target); } // repeated .pg_query.Node args = 7 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<8>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 7 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 opno = 2 [json_name = "opno"]; if (this->_internal_opno() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_opno()); } // uint32 opresulttype = 3 [json_name = "opresulttype"]; if (this->_internal_opresulttype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_opresulttype()); } // bool opretset = 4 [json_name = "opretset"]; if (this->_internal_opretset() != 0) { total_size += 2; } // uint32 opcollid = 5 [json_name = "opcollid"]; if (this->_internal_opcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_opcollid()); } // uint32 inputcollid = 6 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_inputcollid()); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DistinctExpr::_class_data_ = { DistinctExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DistinctExpr::GetClassData() const { return &_class_data_; } void DistinctExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DistinctExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_opno() != 0) { _this->_internal_set_opno(from._internal_opno()); } if (from._internal_opresulttype() != 0) { _this->_internal_set_opresulttype(from._internal_opresulttype()); } if (from._internal_opretset() != 0) { _this->_internal_set_opretset(from._internal_opretset()); } if (from._internal_opcollid() != 0) { _this->_internal_set_opcollid(from._internal_opcollid()); } if (from._internal_inputcollid() != 0) { _this->_internal_set_inputcollid(from._internal_inputcollid()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DistinctExpr::CopyFrom(const DistinctExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DistinctExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DistinctExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* DistinctExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void DistinctExpr::InternalSwap(DistinctExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.args_.InternalSwap(&other->_impl_.args_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.location_) + sizeof(DistinctExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(DistinctExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata DistinctExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[27]); } // =================================================================== class NullIfExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const NullIfExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& NullIfExpr::_Internal::xpr(const NullIfExpr* msg) { return *msg->_impl_.xpr_; } NullIfExpr::NullIfExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.NullIfExpr) } inline PROTOBUF_NDEBUG_INLINE NullIfExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, args_{visibility, arena, from.args_} {} NullIfExpr::NullIfExpr( ::google::protobuf::Arena* arena, const NullIfExpr& from) : ::google::protobuf::Message(arena) { NullIfExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, opno_), reinterpret_cast(&from._impl_) + offsetof(Impl_, opno_), offsetof(Impl_, location_) - offsetof(Impl_, opno_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.NullIfExpr) } inline PROTOBUF_NDEBUG_INLINE NullIfExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, args_{visibility, arena} {} inline void NullIfExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } NullIfExpr::~NullIfExpr() { // @@protoc_insertion_point(destructor:pg_query.NullIfExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void NullIfExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void NullIfExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.NullIfExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.opno_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.opno_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* NullIfExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 2, 0, 2> NullIfExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_._has_bits_), 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_NullIfExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 8 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NullIfExpr, _impl_.location_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.location_)}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.xpr_)}}, // uint32 opno = 2 [json_name = "opno"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NullIfExpr, _impl_.opno_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.opno_)}}, // uint32 opresulttype = 3 [json_name = "opresulttype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NullIfExpr, _impl_.opresulttype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.opresulttype_)}}, // bool opretset = 4 [json_name = "opretset"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.opretset_)}}, // uint32 opcollid = 5 [json_name = "opcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NullIfExpr, _impl_.opcollid_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.opcollid_)}}, // uint32 inputcollid = 6 [json_name = "inputcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NullIfExpr, _impl_.inputcollid_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.inputcollid_)}}, // repeated .pg_query.Node args = 7 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {58, 63, 1, PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.args_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 opno = 2 [json_name = "opno"]; {PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.opno_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 opresulttype = 3 [json_name = "opresulttype"]; {PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.opresulttype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool opretset = 4 [json_name = "opretset"]; {PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.opretset_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // uint32 opcollid = 5 [json_name = "opcollid"]; {PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.opcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 inputcollid = 6 [json_name = "inputcollid"]; {PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.inputcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated .pg_query.Node args = 7 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.args_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 8 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* NullIfExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.NullIfExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 opno = 2 [json_name = "opno"]; if (this->_internal_opno() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_opno(), target); } // uint32 opresulttype = 3 [json_name = "opresulttype"]; if (this->_internal_opresulttype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_opresulttype(), target); } // bool opretset = 4 [json_name = "opretset"]; if (this->_internal_opretset() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_opretset(), target); } // uint32 opcollid = 5 [json_name = "opcollid"]; if (this->_internal_opcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 5, this->_internal_opcollid(), target); } // uint32 inputcollid = 6 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 6, this->_internal_inputcollid(), target); } // repeated .pg_query.Node args = 7 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<8>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 7 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 opno = 2 [json_name = "opno"]; if (this->_internal_opno() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_opno()); } // uint32 opresulttype = 3 [json_name = "opresulttype"]; if (this->_internal_opresulttype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_opresulttype()); } // bool opretset = 4 [json_name = "opretset"]; if (this->_internal_opretset() != 0) { total_size += 2; } // uint32 opcollid = 5 [json_name = "opcollid"]; if (this->_internal_opcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_opcollid()); } // uint32 inputcollid = 6 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_inputcollid()); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData NullIfExpr::_class_data_ = { NullIfExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* NullIfExpr::GetClassData() const { return &_class_data_; } void NullIfExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.NullIfExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_opno() != 0) { _this->_internal_set_opno(from._internal_opno()); } if (from._internal_opresulttype() != 0) { _this->_internal_set_opresulttype(from._internal_opresulttype()); } if (from._internal_opretset() != 0) { _this->_internal_set_opretset(from._internal_opretset()); } if (from._internal_opcollid() != 0) { _this->_internal_set_opcollid(from._internal_opcollid()); } if (from._internal_inputcollid() != 0) { _this->_internal_set_inputcollid(from._internal_inputcollid()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void NullIfExpr::CopyFrom(const NullIfExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.NullIfExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool NullIfExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* NullIfExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void NullIfExpr::InternalSwap(NullIfExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.args_.InternalSwap(&other->_impl_.args_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.location_) + sizeof(NullIfExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(NullIfExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata NullIfExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[28]); } // =================================================================== class ScalarArrayOpExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const ScalarArrayOpExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& ScalarArrayOpExpr::_Internal::xpr(const ScalarArrayOpExpr* msg) { return *msg->_impl_.xpr_; } ScalarArrayOpExpr::ScalarArrayOpExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ScalarArrayOpExpr) } inline PROTOBUF_NDEBUG_INLINE ScalarArrayOpExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, args_{visibility, arena, from.args_} {} ScalarArrayOpExpr::ScalarArrayOpExpr( ::google::protobuf::Arena* arena, const ScalarArrayOpExpr& from) : ::google::protobuf::Message(arena) { ScalarArrayOpExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, opno_), reinterpret_cast(&from._impl_) + offsetof(Impl_, opno_), offsetof(Impl_, location_) - offsetof(Impl_, opno_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.ScalarArrayOpExpr) } inline PROTOBUF_NDEBUG_INLINE ScalarArrayOpExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, args_{visibility, arena} {} inline void ScalarArrayOpExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } ScalarArrayOpExpr::~ScalarArrayOpExpr() { // @@protoc_insertion_point(destructor:pg_query.ScalarArrayOpExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ScalarArrayOpExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void ScalarArrayOpExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ScalarArrayOpExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.opno_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.opno_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ScalarArrayOpExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 2, 0, 2> ScalarArrayOpExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ScalarArrayOpExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_.xpr_)}}, // uint32 opno = 2 [json_name = "opno"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ScalarArrayOpExpr, _impl_.opno_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_.opno_)}}, // bool use_or = 3 [json_name = "useOr"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_.use_or_)}}, // uint32 inputcollid = 4 [json_name = "inputcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ScalarArrayOpExpr, _impl_.inputcollid_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_.inputcollid_)}}, // repeated .pg_query.Node args = 5 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {42, 63, 1, PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_.args_)}}, // int32 location = 6 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ScalarArrayOpExpr, _impl_.location_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 opno = 2 [json_name = "opno"]; {PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_.opno_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool use_or = 3 [json_name = "useOr"]; {PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_.use_or_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // uint32 inputcollid = 4 [json_name = "inputcollid"]; {PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_.inputcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated .pg_query.Node args = 5 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_.args_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 6 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* ScalarArrayOpExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ScalarArrayOpExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 opno = 2 [json_name = "opno"]; if (this->_internal_opno() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_opno(), target); } // bool use_or = 3 [json_name = "useOr"]; if (this->_internal_use_or() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_use_or(), target); } // uint32 inputcollid = 4 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_inputcollid(), target); } // repeated .pg_query.Node args = 5 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 6 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<6>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 opno = 2 [json_name = "opno"]; if (this->_internal_opno() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_opno()); } // bool use_or = 3 [json_name = "useOr"]; if (this->_internal_use_or() != 0) { total_size += 2; } // uint32 inputcollid = 4 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_inputcollid()); } // int32 location = 6 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ScalarArrayOpExpr::_class_data_ = { ScalarArrayOpExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ScalarArrayOpExpr::GetClassData() const { return &_class_data_; } void ScalarArrayOpExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ScalarArrayOpExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_opno() != 0) { _this->_internal_set_opno(from._internal_opno()); } if (from._internal_use_or() != 0) { _this->_internal_set_use_or(from._internal_use_or()); } if (from._internal_inputcollid() != 0) { _this->_internal_set_inputcollid(from._internal_inputcollid()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ScalarArrayOpExpr::CopyFrom(const ScalarArrayOpExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ScalarArrayOpExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ScalarArrayOpExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* ScalarArrayOpExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void ScalarArrayOpExpr::InternalSwap(ScalarArrayOpExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.args_.InternalSwap(&other->_impl_.args_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_.location_) + sizeof(ScalarArrayOpExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata ScalarArrayOpExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[29]); } // =================================================================== class BoolExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(BoolExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const BoolExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& BoolExpr::_Internal::xpr(const BoolExpr* msg) { return *msg->_impl_.xpr_; } BoolExpr::BoolExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.BoolExpr) } inline PROTOBUF_NDEBUG_INLINE BoolExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, args_{visibility, arena, from.args_} {} BoolExpr::BoolExpr( ::google::protobuf::Arena* arena, const BoolExpr& from) : ::google::protobuf::Message(arena) { BoolExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, boolop_), reinterpret_cast(&from._impl_) + offsetof(Impl_, boolop_), offsetof(Impl_, location_) - offsetof(Impl_, boolop_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.BoolExpr) } inline PROTOBUF_NDEBUG_INLINE BoolExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, args_{visibility, arena} {} inline void BoolExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } BoolExpr::~BoolExpr() { // @@protoc_insertion_point(destructor:pg_query.BoolExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void BoolExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void BoolExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.BoolExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.boolop_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.boolop_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* BoolExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 0, 2> BoolExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(BoolExpr, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_BoolExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 4 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(BoolExpr, _impl_.location_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(BoolExpr, _impl_.location_)}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(BoolExpr, _impl_.xpr_)}}, // .pg_query.BoolExprType boolop = 2 [json_name = "boolop"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(BoolExpr, _impl_.boolop_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(BoolExpr, _impl_.boolop_)}}, // repeated .pg_query.Node args = 3 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(BoolExpr, _impl_.args_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(BoolExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.BoolExprType boolop = 2 [json_name = "boolop"]; {PROTOBUF_FIELD_OFFSET(BoolExpr, _impl_.boolop_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node args = 3 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(BoolExpr, _impl_.args_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 4 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(BoolExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* BoolExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.BoolExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.BoolExprType boolop = 2 [json_name = "boolop"]; if (this->_internal_boolop() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_boolop(), target); } // repeated .pg_query.Node args = 3 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.BoolExprType boolop = 2 [json_name = "boolop"]; if (this->_internal_boolop() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_boolop()); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData BoolExpr::_class_data_ = { BoolExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* BoolExpr::GetClassData() const { return &_class_data_; } void BoolExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.BoolExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_boolop() != 0) { _this->_internal_set_boolop(from._internal_boolop()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void BoolExpr::CopyFrom(const BoolExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.BoolExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool BoolExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* BoolExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void BoolExpr::InternalSwap(BoolExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.args_.InternalSwap(&other->_impl_.args_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(BoolExpr, _impl_.location_) + sizeof(BoolExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(BoolExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata BoolExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[30]); } // =================================================================== class SubLink::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(SubLink, _impl_._has_bits_); static const ::pg_query::Node& xpr(const SubLink* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& testexpr(const SubLink* msg); static void set_has_testexpr(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& subselect(const SubLink* msg); static void set_has_subselect(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::Node& SubLink::_Internal::xpr(const SubLink* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& SubLink::_Internal::testexpr(const SubLink* msg) { return *msg->_impl_.testexpr_; } const ::pg_query::Node& SubLink::_Internal::subselect(const SubLink* msg) { return *msg->_impl_.subselect_; } SubLink::SubLink(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SubLink) } inline PROTOBUF_NDEBUG_INLINE SubLink::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, oper_name_{visibility, arena, from.oper_name_} {} SubLink::SubLink( ::google::protobuf::Arena* arena, const SubLink& from) : ::google::protobuf::Message(arena) { SubLink* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.testexpr_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.testexpr_) : nullptr; _impl_.subselect_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.subselect_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, sub_link_type_), reinterpret_cast(&from._impl_) + offsetof(Impl_, sub_link_type_), offsetof(Impl_, location_) - offsetof(Impl_, sub_link_type_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.SubLink) } inline PROTOBUF_NDEBUG_INLINE SubLink::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, oper_name_{visibility, arena} {} inline void SubLink::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } SubLink::~SubLink() { // @@protoc_insertion_point(destructor:pg_query.SubLink) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void SubLink::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.testexpr_; delete _impl_.subselect_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void SubLink::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SubLink) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.oper_name_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.testexpr_ != nullptr); _impl_.testexpr_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.subselect_ != nullptr); _impl_.subselect_->Clear(); } } ::memset(&_impl_.sub_link_type_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.sub_link_type_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* SubLink::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 4, 0, 2> SubLink::_table_ = { { PROTOBUF_FIELD_OFFSET(SubLink, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_SubLink_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(SubLink, _impl_.xpr_)}}, // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SubLink, _impl_.sub_link_type_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(SubLink, _impl_.sub_link_type_)}}, // int32 sub_link_id = 3 [json_name = "subLinkId"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SubLink, _impl_.sub_link_id_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(SubLink, _impl_.sub_link_id_)}}, // .pg_query.Node testexpr = 4 [json_name = "testexpr"]; {::_pbi::TcParser::FastMtS1, {34, 1, 1, PROTOBUF_FIELD_OFFSET(SubLink, _impl_.testexpr_)}}, // repeated .pg_query.Node oper_name = 5 [json_name = "operName"]; {::_pbi::TcParser::FastMtR1, {42, 63, 2, PROTOBUF_FIELD_OFFSET(SubLink, _impl_.oper_name_)}}, // .pg_query.Node subselect = 6 [json_name = "subselect"]; {::_pbi::TcParser::FastMtS1, {50, 2, 3, PROTOBUF_FIELD_OFFSET(SubLink, _impl_.subselect_)}}, // int32 location = 7 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SubLink, _impl_.location_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(SubLink, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(SubLink, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; {PROTOBUF_FIELD_OFFSET(SubLink, _impl_.sub_link_type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int32 sub_link_id = 3 [json_name = "subLinkId"]; {PROTOBUF_FIELD_OFFSET(SubLink, _impl_.sub_link_id_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // .pg_query.Node testexpr = 4 [json_name = "testexpr"]; {PROTOBUF_FIELD_OFFSET(SubLink, _impl_.testexpr_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node oper_name = 5 [json_name = "operName"]; {PROTOBUF_FIELD_OFFSET(SubLink, _impl_.oper_name_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node subselect = 6 [json_name = "subselect"]; {PROTOBUF_FIELD_OFFSET(SubLink, _impl_.subselect_), _Internal::kHasBitsOffset + 2, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 7 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(SubLink, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* SubLink::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SubLink) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; if (this->_internal_sub_link_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_sub_link_type(), target); } // int32 sub_link_id = 3 [json_name = "subLinkId"]; if (this->_internal_sub_link_id() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_sub_link_id(), target); } // .pg_query.Node testexpr = 4 [json_name = "testexpr"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::testexpr(this), _Internal::testexpr(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node oper_name = 5 [json_name = "operName"]; for (unsigned i = 0, n = static_cast(this->_internal_oper_name_size()); i < n; i++) { const auto& repfield = this->_internal_oper_name().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node subselect = 6 [json_name = "subselect"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::subselect(this), _Internal::subselect(this).GetCachedSize(), target, stream); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<7>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_oper_name()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node testexpr = 4 [json_name = "testexpr"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.testexpr_); } // .pg_query.Node subselect = 6 [json_name = "subselect"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.subselect_); } } // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; if (this->_internal_sub_link_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_sub_link_type()); } // int32 sub_link_id = 3 [json_name = "subLinkId"]; if (this->_internal_sub_link_id() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_sub_link_id()); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData SubLink::_class_data_ = { SubLink::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* SubLink::GetClassData() const { return &_class_data_; } void SubLink::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SubLink) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_oper_name()->MergeFrom( from._internal_oper_name()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_testexpr()->::pg_query::Node::MergeFrom( from._internal_testexpr()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_subselect()->::pg_query::Node::MergeFrom( from._internal_subselect()); } } if (from._internal_sub_link_type() != 0) { _this->_internal_set_sub_link_type(from._internal_sub_link_type()); } if (from._internal_sub_link_id() != 0) { _this->_internal_set_sub_link_id(from._internal_sub_link_id()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void SubLink::CopyFrom(const SubLink& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SubLink) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool SubLink::IsInitialized() const { return true; } ::_pbi::CachedSize* SubLink::AccessCachedSize() const { return &_impl_._cached_size_; } void SubLink::InternalSwap(SubLink* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.oper_name_.InternalSwap(&other->_impl_.oper_name_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(SubLink, _impl_.location_) + sizeof(SubLink::_impl_.location_) - PROTOBUF_FIELD_OFFSET(SubLink, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata SubLink::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[31]); } // =================================================================== class SubPlan::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(SubPlan, _impl_._has_bits_); static const ::pg_query::Node& xpr(const SubPlan* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& testexpr(const SubPlan* msg); static void set_has_testexpr(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& SubPlan::_Internal::xpr(const SubPlan* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& SubPlan::_Internal::testexpr(const SubPlan* msg) { return *msg->_impl_.testexpr_; } SubPlan::SubPlan(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SubPlan) } inline PROTOBUF_NDEBUG_INLINE SubPlan::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, param_ids_{visibility, arena, from.param_ids_}, set_param_{visibility, arena, from.set_param_}, par_param_{visibility, arena, from.par_param_}, args_{visibility, arena, from.args_}, plan_name_(arena, from.plan_name_) {} SubPlan::SubPlan( ::google::protobuf::Arena* arena, const SubPlan& from) : ::google::protobuf::Message(arena) { SubPlan* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.testexpr_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.testexpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, sub_link_type_), reinterpret_cast(&from._impl_) + offsetof(Impl_, sub_link_type_), offsetof(Impl_, per_call_cost_) - offsetof(Impl_, sub_link_type_) + sizeof(Impl_::per_call_cost_)); // @@protoc_insertion_point(copy_constructor:pg_query.SubPlan) } inline PROTOBUF_NDEBUG_INLINE SubPlan::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, param_ids_{visibility, arena}, set_param_{visibility, arena}, par_param_{visibility, arena}, args_{visibility, arena}, plan_name_(arena) {} inline void SubPlan::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, per_call_cost_) - offsetof(Impl_, xpr_) + sizeof(Impl_::per_call_cost_)); } SubPlan::~SubPlan() { // @@protoc_insertion_point(destructor:pg_query.SubPlan) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void SubPlan::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.plan_name_.Destroy(); delete _impl_.xpr_; delete _impl_.testexpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void SubPlan::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SubPlan) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.param_ids_.Clear(); _impl_.set_param_.Clear(); _impl_.par_param_.Clear(); _impl_.args_.Clear(); _impl_.plan_name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.testexpr_ != nullptr); _impl_.testexpr_->Clear(); } } ::memset(&_impl_.sub_link_type_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.per_call_cost_) - reinterpret_cast(&_impl_.sub_link_type_)) + sizeof(_impl_.per_call_cost_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* SubPlan::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<5, 17, 6, 50, 2> SubPlan::_table_ = { { PROTOBUF_FIELD_OFFSET(SubPlan, _impl_._has_bits_), 0, // no _extensions_ 17, 248, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294836224, // skipmap offsetof(decltype(_table_), field_entries), 17, // num_field_entries 6, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_SubPlan_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.xpr_)}}, // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SubPlan, _impl_.sub_link_type_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.sub_link_type_)}}, // .pg_query.Node testexpr = 3 [json_name = "testexpr"]; {::_pbi::TcParser::FastMtS1, {26, 1, 1, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.testexpr_)}}, // repeated .pg_query.Node param_ids = 4 [json_name = "paramIds"]; {::_pbi::TcParser::FastMtR1, {34, 63, 2, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.param_ids_)}}, // int32 plan_id = 5 [json_name = "plan_id"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SubPlan, _impl_.plan_id_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.plan_id_)}}, // string plan_name = 6 [json_name = "plan_name"]; {::_pbi::TcParser::FastUS1, {50, 63, 0, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.plan_name_)}}, // uint32 first_col_type = 7 [json_name = "firstColType"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SubPlan, _impl_.first_col_type_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.first_col_type_)}}, // int32 first_col_typmod = 8 [json_name = "firstColTypmod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SubPlan, _impl_.first_col_typmod_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.first_col_typmod_)}}, // uint32 first_col_collation = 9 [json_name = "firstColCollation"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SubPlan, _impl_.first_col_collation_), 63>(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.first_col_collation_)}}, // bool use_hash_table = 10 [json_name = "useHashTable"]; {::_pbi::TcParser::SingularVarintNoZag1(), {80, 63, 0, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.use_hash_table_)}}, // bool unknown_eq_false = 11 [json_name = "unknownEqFalse"]; {::_pbi::TcParser::SingularVarintNoZag1(), {88, 63, 0, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.unknown_eq_false_)}}, // bool parallel_safe = 12 [json_name = "parallel_safe"]; {::_pbi::TcParser::SingularVarintNoZag1(), {96, 63, 0, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.parallel_safe_)}}, // repeated .pg_query.Node set_param = 13 [json_name = "setParam"]; {::_pbi::TcParser::FastMtR1, {106, 63, 3, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.set_param_)}}, // repeated .pg_query.Node par_param = 14 [json_name = "parParam"]; {::_pbi::TcParser::FastMtR1, {114, 63, 4, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.par_param_)}}, // repeated .pg_query.Node args = 15 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {122, 63, 5, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.args_)}}, // double startup_cost = 16 [json_name = "startup_cost"]; {::_pbi::TcParser::FastF64S2, {385, 63, 0, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.startup_cost_)}}, // double per_call_cost = 17 [json_name = "per_call_cost"]; {::_pbi::TcParser::FastF64S2, {393, 63, 0, PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.per_call_cost_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.sub_link_type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.Node testexpr = 3 [json_name = "testexpr"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.testexpr_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node param_ids = 4 [json_name = "paramIds"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.param_ids_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 plan_id = 5 [json_name = "plan_id"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.plan_id_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // string plan_name = 6 [json_name = "plan_name"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.plan_name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // uint32 first_col_type = 7 [json_name = "firstColType"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.first_col_type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 first_col_typmod = 8 [json_name = "firstColTypmod"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.first_col_typmod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 first_col_collation = 9 [json_name = "firstColCollation"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.first_col_collation_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool use_hash_table = 10 [json_name = "useHashTable"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.use_hash_table_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool unknown_eq_false = 11 [json_name = "unknownEqFalse"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.unknown_eq_false_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool parallel_safe = 12 [json_name = "parallel_safe"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.parallel_safe_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node set_param = 13 [json_name = "setParam"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.set_param_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node par_param = 14 [json_name = "parParam"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.par_param_), -1, 4, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node args = 15 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.args_), -1, 5, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // double startup_cost = 16 [json_name = "startup_cost"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.startup_cost_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kDouble)}, // double per_call_cost = 17 [json_name = "per_call_cost"]; {PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.per_call_cost_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kDouble)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\20\0\0\0\0\0\11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "pg_query.SubPlan" "plan_name" }}, }; ::uint8_t* SubPlan::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SubPlan) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; if (this->_internal_sub_link_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_sub_link_type(), target); } // .pg_query.Node testexpr = 3 [json_name = "testexpr"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::testexpr(this), _Internal::testexpr(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node param_ids = 4 [json_name = "paramIds"]; for (unsigned i = 0, n = static_cast(this->_internal_param_ids_size()); i < n; i++) { const auto& repfield = this->_internal_param_ids().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // int32 plan_id = 5 [json_name = "plan_id"]; if (this->_internal_plan_id() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_plan_id(), target); } // string plan_name = 6 [json_name = "plan_name"]; if (!this->_internal_plan_name().empty()) { const std::string& _s = this->_internal_plan_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.SubPlan.plan_name"); target = stream->WriteStringMaybeAliased(6, _s, target); } // uint32 first_col_type = 7 [json_name = "firstColType"]; if (this->_internal_first_col_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 7, this->_internal_first_col_type(), target); } // int32 first_col_typmod = 8 [json_name = "firstColTypmod"]; if (this->_internal_first_col_typmod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<8>( stream, this->_internal_first_col_typmod(), target); } // uint32 first_col_collation = 9 [json_name = "firstColCollation"]; if (this->_internal_first_col_collation() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 9, this->_internal_first_col_collation(), target); } // bool use_hash_table = 10 [json_name = "useHashTable"]; if (this->_internal_use_hash_table() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 10, this->_internal_use_hash_table(), target); } // bool unknown_eq_false = 11 [json_name = "unknownEqFalse"]; if (this->_internal_unknown_eq_false() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 11, this->_internal_unknown_eq_false(), target); } // bool parallel_safe = 12 [json_name = "parallel_safe"]; if (this->_internal_parallel_safe() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 12, this->_internal_parallel_safe(), target); } // repeated .pg_query.Node set_param = 13 [json_name = "setParam"]; for (unsigned i = 0, n = static_cast(this->_internal_set_param_size()); i < n; i++) { const auto& repfield = this->_internal_set_param().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(13, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node par_param = 14 [json_name = "parParam"]; for (unsigned i = 0, n = static_cast(this->_internal_par_param_size()); i < n; i++) { const auto& repfield = this->_internal_par_param().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(14, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node args = 15 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(15, repfield, repfield.GetCachedSize(), target, stream); } // double startup_cost = 16 [json_name = "startup_cost"]; static_assert(sizeof(::uint64_t) == sizeof(double), "Code assumes ::uint64_t and double are the same size."); double tmp_startup_cost = this->_internal_startup_cost(); ::uint64_t raw_startup_cost; memcpy(&raw_startup_cost, &tmp_startup_cost, sizeof(tmp_startup_cost)); if (raw_startup_cost != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteDoubleToArray( 16, this->_internal_startup_cost(), target); } // double per_call_cost = 17 [json_name = "per_call_cost"]; static_assert(sizeof(::uint64_t) == sizeof(double), "Code assumes ::uint64_t and double are the same size."); double tmp_per_call_cost = this->_internal_per_call_cost(); ::uint64_t raw_per_call_cost; memcpy(&raw_per_call_cost, &tmp_per_call_cost, sizeof(tmp_per_call_cost)); if (raw_per_call_cost != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteDoubleToArray( 17, this->_internal_per_call_cost(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_param_ids()) { total_size += ::google::protobuf::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->_internal_set_param()) { total_size += ::google::protobuf::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->_internal_par_param()) { total_size += ::google::protobuf::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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string plan_name = 6 [json_name = "plan_name"]; if (!this->_internal_plan_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_plan_name()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node testexpr = 3 [json_name = "testexpr"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.testexpr_); } } // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; if (this->_internal_sub_link_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_sub_link_type()); } // int32 plan_id = 5 [json_name = "plan_id"]; if (this->_internal_plan_id() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_plan_id()); } // uint32 first_col_type = 7 [json_name = "firstColType"]; if (this->_internal_first_col_type() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_first_col_type()); } // int32 first_col_typmod = 8 [json_name = "firstColTypmod"]; if (this->_internal_first_col_typmod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_first_col_typmod()); } // uint32 first_col_collation = 9 [json_name = "firstColCollation"]; if (this->_internal_first_col_collation() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_first_col_collation()); } // bool use_hash_table = 10 [json_name = "useHashTable"]; if (this->_internal_use_hash_table() != 0) { total_size += 2; } // bool unknown_eq_false = 11 [json_name = "unknownEqFalse"]; if (this->_internal_unknown_eq_false() != 0) { total_size += 2; } // bool parallel_safe = 12 [json_name = "parallel_safe"]; if (this->_internal_parallel_safe() != 0) { total_size += 2; } // double startup_cost = 16 [json_name = "startup_cost"]; static_assert(sizeof(::uint64_t) == sizeof(double), "Code assumes ::uint64_t and double are the same size."); double tmp_startup_cost = this->_internal_startup_cost(); ::uint64_t raw_startup_cost; memcpy(&raw_startup_cost, &tmp_startup_cost, sizeof(tmp_startup_cost)); if (raw_startup_cost != 0) { total_size += 10; } // double per_call_cost = 17 [json_name = "per_call_cost"]; static_assert(sizeof(::uint64_t) == sizeof(double), "Code assumes ::uint64_t and double are the same size."); double tmp_per_call_cost = this->_internal_per_call_cost(); ::uint64_t raw_per_call_cost; memcpy(&raw_per_call_cost, &tmp_per_call_cost, sizeof(tmp_per_call_cost)); if (raw_per_call_cost != 0) { total_size += 10; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData SubPlan::_class_data_ = { SubPlan::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* SubPlan::GetClassData() const { return &_class_data_; } void SubPlan::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SubPlan) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_param_ids()->MergeFrom( from._internal_param_ids()); _this->_internal_mutable_set_param()->MergeFrom( from._internal_set_param()); _this->_internal_mutable_par_param()->MergeFrom( from._internal_par_param()); _this->_internal_mutable_args()->MergeFrom( from._internal_args()); if (!from._internal_plan_name().empty()) { _this->_internal_set_plan_name(from._internal_plan_name()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_testexpr()->::pg_query::Node::MergeFrom( from._internal_testexpr()); } } if (from._internal_sub_link_type() != 0) { _this->_internal_set_sub_link_type(from._internal_sub_link_type()); } if (from._internal_plan_id() != 0) { _this->_internal_set_plan_id(from._internal_plan_id()); } if (from._internal_first_col_type() != 0) { _this->_internal_set_first_col_type(from._internal_first_col_type()); } if (from._internal_first_col_typmod() != 0) { _this->_internal_set_first_col_typmod(from._internal_first_col_typmod()); } if (from._internal_first_col_collation() != 0) { _this->_internal_set_first_col_collation(from._internal_first_col_collation()); } if (from._internal_use_hash_table() != 0) { _this->_internal_set_use_hash_table(from._internal_use_hash_table()); } if (from._internal_unknown_eq_false() != 0) { _this->_internal_set_unknown_eq_false(from._internal_unknown_eq_false()); } if (from._internal_parallel_safe() != 0) { _this->_internal_set_parallel_safe(from._internal_parallel_safe()); } static_assert(sizeof(::uint64_t) == sizeof(double), "Code assumes ::uint64_t and double are the same size."); double tmp_startup_cost = from._internal_startup_cost(); ::uint64_t raw_startup_cost; memcpy(&raw_startup_cost, &tmp_startup_cost, sizeof(tmp_startup_cost)); if (raw_startup_cost != 0) { _this->_internal_set_startup_cost(from._internal_startup_cost()); } static_assert(sizeof(::uint64_t) == sizeof(double), "Code assumes ::uint64_t and double are the same size."); double tmp_per_call_cost = from._internal_per_call_cost(); ::uint64_t raw_per_call_cost; memcpy(&raw_per_call_cost, &tmp_per_call_cost, sizeof(tmp_per_call_cost)); if (raw_per_call_cost != 0) { _this->_internal_set_per_call_cost(from._internal_per_call_cost()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void SubPlan::CopyFrom(const SubPlan& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SubPlan) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool SubPlan::IsInitialized() const { return true; } ::_pbi::CachedSize* SubPlan::AccessCachedSize() const { return &_impl_._cached_size_; } void SubPlan::InternalSwap(SubPlan* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.param_ids_.InternalSwap(&other->_impl_.param_ids_); _impl_.set_param_.InternalSwap(&other->_impl_.set_param_); _impl_.par_param_.InternalSwap(&other->_impl_.par_param_); _impl_.args_.InternalSwap(&other->_impl_.args_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.plan_name_, &other->_impl_.plan_name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.per_call_cost_) + sizeof(SubPlan::_impl_.per_call_cost_) - PROTOBUF_FIELD_OFFSET(SubPlan, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata SubPlan::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[32]); } // =================================================================== class AlternativeSubPlan::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlternativeSubPlan, _impl_._has_bits_); static const ::pg_query::Node& xpr(const AlternativeSubPlan* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& AlternativeSubPlan::_Internal::xpr(const AlternativeSubPlan* msg) { return *msg->_impl_.xpr_; } AlternativeSubPlan::AlternativeSubPlan(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlternativeSubPlan) } inline PROTOBUF_NDEBUG_INLINE AlternativeSubPlan::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, subplans_{visibility, arena, from.subplans_} {} AlternativeSubPlan::AlternativeSubPlan( ::google::protobuf::Arena* arena, const AlternativeSubPlan& from) : ::google::protobuf::Message(arena) { AlternativeSubPlan* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.AlternativeSubPlan) } inline PROTOBUF_NDEBUG_INLINE AlternativeSubPlan::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, subplans_{visibility, arena} {} inline void AlternativeSubPlan::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.xpr_ = {}; } AlternativeSubPlan::~AlternativeSubPlan() { // @@protoc_insertion_point(destructor:pg_query.AlternativeSubPlan) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlternativeSubPlan::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlternativeSubPlan::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlternativeSubPlan) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.subplans_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlternativeSubPlan::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 2, 0, 2> AlternativeSubPlan::_table_ = { { PROTOBUF_FIELD_OFFSET(AlternativeSubPlan, _impl_._has_bits_), 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlternativeSubPlan_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node subplans = 2 [json_name = "subplans"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(AlternativeSubPlan, _impl_.subplans_)}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(AlternativeSubPlan, _impl_.xpr_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(AlternativeSubPlan, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node subplans = 2 [json_name = "subplans"]; {PROTOBUF_FIELD_OFFSET(AlternativeSubPlan, _impl_.subplans_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* AlternativeSubPlan::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlternativeSubPlan) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node subplans = 2 [json_name = "subplans"]; for (unsigned i = 0, n = static_cast(this->_internal_subplans_size()); i < n; i++) { const auto& repfield = this->_internal_subplans().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_subplans()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlternativeSubPlan::_class_data_ = { AlternativeSubPlan::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlternativeSubPlan::GetClassData() const { return &_class_data_; } void AlternativeSubPlan::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlternativeSubPlan) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_subplans()->MergeFrom( from._internal_subplans()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlternativeSubPlan::CopyFrom(const AlternativeSubPlan& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlternativeSubPlan) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlternativeSubPlan::IsInitialized() const { return true; } ::_pbi::CachedSize* AlternativeSubPlan::AccessCachedSize() const { return &_impl_._cached_size_; } void AlternativeSubPlan::InternalSwap(AlternativeSubPlan* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.subplans_.InternalSwap(&other->_impl_.subplans_); swap(_impl_.xpr_, other->_impl_.xpr_); } ::google::protobuf::Metadata AlternativeSubPlan::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[33]); } // =================================================================== class FieldSelect::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_._has_bits_); static const ::pg_query::Node& xpr(const FieldSelect* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& arg(const FieldSelect* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& FieldSelect::_Internal::xpr(const FieldSelect* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& FieldSelect::_Internal::arg(const FieldSelect* msg) { return *msg->_impl_.arg_; } FieldSelect::FieldSelect(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.FieldSelect) } inline PROTOBUF_NDEBUG_INLINE FieldSelect::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} FieldSelect::FieldSelect( ::google::protobuf::Arena* arena, const FieldSelect& from) : ::google::protobuf::Message(arena) { FieldSelect* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, fieldnum_), reinterpret_cast(&from._impl_) + offsetof(Impl_, fieldnum_), offsetof(Impl_, resultcollid_) - offsetof(Impl_, fieldnum_) + sizeof(Impl_::resultcollid_)); // @@protoc_insertion_point(copy_constructor:pg_query.FieldSelect) } inline PROTOBUF_NDEBUG_INLINE FieldSelect::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void FieldSelect::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, resultcollid_) - offsetof(Impl_, xpr_) + sizeof(Impl_::resultcollid_)); } FieldSelect::~FieldSelect() { // @@protoc_insertion_point(destructor:pg_query.FieldSelect) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void FieldSelect::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void FieldSelect::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.FieldSelect) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } } ::memset(&_impl_.fieldnum_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.resultcollid_) - reinterpret_cast(&_impl_.fieldnum_)) + sizeof(_impl_.resultcollid_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* FieldSelect::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 2, 0, 2> FieldSelect::_table_ = { { PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_FieldSelect_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_.xpr_)}}, // .pg_query.Node arg = 2 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_.arg_)}}, // int32 fieldnum = 3 [json_name = "fieldnum"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FieldSelect, _impl_.fieldnum_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_.fieldnum_)}}, // uint32 resulttype = 4 [json_name = "resulttype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FieldSelect, _impl_.resulttype_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_.resulttype_)}}, // int32 resulttypmod = 5 [json_name = "resulttypmod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FieldSelect, _impl_.resulttypmod_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_.resulttypmod_)}}, // uint32 resultcollid = 6 [json_name = "resultcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FieldSelect, _impl_.resultcollid_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_.resultcollid_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node arg = 2 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 fieldnum = 3 [json_name = "fieldnum"]; {PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_.fieldnum_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 resulttype = 4 [json_name = "resulttype"]; {PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_.resulttype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 resulttypmod = 5 [json_name = "resulttypmod"]; {PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_.resulttypmod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 resultcollid = 6 [json_name = "resultcollid"]; {PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_.resultcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* FieldSelect::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.FieldSelect) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // int32 fieldnum = 3 [json_name = "fieldnum"]; if (this->_internal_fieldnum() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_fieldnum(), target); } // uint32 resulttype = 4 [json_name = "resulttype"]; if (this->_internal_resulttype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_resulttype(), target); } // int32 resulttypmod = 5 [json_name = "resulttypmod"]; if (this->_internal_resulttypmod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_resulttypmod(), target); } // uint32 resultcollid = 6 [json_name = "resultcollid"]; if (this->_internal_resultcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 6, this->_internal_resultcollid(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } } // int32 fieldnum = 3 [json_name = "fieldnum"]; if (this->_internal_fieldnum() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_fieldnum()); } // uint32 resulttype = 4 [json_name = "resulttype"]; if (this->_internal_resulttype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_resulttype()); } // int32 resulttypmod = 5 [json_name = "resulttypmod"]; if (this->_internal_resulttypmod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_resulttypmod()); } // uint32 resultcollid = 6 [json_name = "resultcollid"]; if (this->_internal_resultcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_resultcollid()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData FieldSelect::_class_data_ = { FieldSelect::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* FieldSelect::GetClassData() const { return &_class_data_; } void FieldSelect::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.FieldSelect) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } } if (from._internal_fieldnum() != 0) { _this->_internal_set_fieldnum(from._internal_fieldnum()); } if (from._internal_resulttype() != 0) { _this->_internal_set_resulttype(from._internal_resulttype()); } if (from._internal_resulttypmod() != 0) { _this->_internal_set_resulttypmod(from._internal_resulttypmod()); } if (from._internal_resultcollid() != 0) { _this->_internal_set_resultcollid(from._internal_resultcollid()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void FieldSelect::CopyFrom(const FieldSelect& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.FieldSelect) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool FieldSelect::IsInitialized() const { return true; } ::_pbi::CachedSize* FieldSelect::AccessCachedSize() const { return &_impl_._cached_size_; } void FieldSelect::InternalSwap(FieldSelect* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_.resultcollid_) + sizeof(FieldSelect::_impl_.resultcollid_) - PROTOBUF_FIELD_OFFSET(FieldSelect, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata FieldSelect::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[34]); } // =================================================================== class FieldStore::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(FieldStore, _impl_._has_bits_); static const ::pg_query::Node& xpr(const FieldStore* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& arg(const FieldStore* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& FieldStore::_Internal::xpr(const FieldStore* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& FieldStore::_Internal::arg(const FieldStore* msg) { return *msg->_impl_.arg_; } FieldStore::FieldStore(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.FieldStore) } inline PROTOBUF_NDEBUG_INLINE FieldStore::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, newvals_{visibility, arena, from.newvals_}, fieldnums_{visibility, arena, from.fieldnums_} {} FieldStore::FieldStore( ::google::protobuf::Arena* arena, const FieldStore& from) : ::google::protobuf::Message(arena) { FieldStore* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; _impl_.resulttype_ = from._impl_.resulttype_; // @@protoc_insertion_point(copy_constructor:pg_query.FieldStore) } inline PROTOBUF_NDEBUG_INLINE FieldStore::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, newvals_{visibility, arena}, fieldnums_{visibility, arena} {} inline void FieldStore::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, resulttype_) - offsetof(Impl_, xpr_) + sizeof(Impl_::resulttype_)); } FieldStore::~FieldStore() { // @@protoc_insertion_point(destructor:pg_query.FieldStore) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void FieldStore::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void FieldStore::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.FieldStore) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.newvals_.Clear(); _impl_.fieldnums_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } } _impl_.resulttype_ = 0u; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* FieldStore::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 4, 0, 2> FieldStore::_table_ = { { PROTOBUF_FIELD_OFFSET(FieldStore, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_FieldStore_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(FieldStore, _impl_.xpr_)}}, // .pg_query.Node arg = 2 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(FieldStore, _impl_.arg_)}}, // repeated .pg_query.Node newvals = 3 [json_name = "newvals"]; {::_pbi::TcParser::FastMtR1, {26, 63, 2, PROTOBUF_FIELD_OFFSET(FieldStore, _impl_.newvals_)}}, // repeated .pg_query.Node fieldnums = 4 [json_name = "fieldnums"]; {::_pbi::TcParser::FastMtR1, {34, 63, 3, PROTOBUF_FIELD_OFFSET(FieldStore, _impl_.fieldnums_)}}, // uint32 resulttype = 5 [json_name = "resulttype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FieldStore, _impl_.resulttype_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(FieldStore, _impl_.resulttype_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(FieldStore, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node arg = 2 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(FieldStore, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node newvals = 3 [json_name = "newvals"]; {PROTOBUF_FIELD_OFFSET(FieldStore, _impl_.newvals_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node fieldnums = 4 [json_name = "fieldnums"]; {PROTOBUF_FIELD_OFFSET(FieldStore, _impl_.fieldnums_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 resulttype = 5 [json_name = "resulttype"]; {PROTOBUF_FIELD_OFFSET(FieldStore, _impl_.resulttype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* FieldStore::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.FieldStore) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node newvals = 3 [json_name = "newvals"]; for (unsigned i = 0, n = static_cast(this->_internal_newvals_size()); i < n; i++) { const auto& repfield = this->_internal_newvals().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node fieldnums = 4 [json_name = "fieldnums"]; for (unsigned i = 0, n = static_cast(this->_internal_fieldnums_size()); i < n; i++) { const auto& repfield = this->_internal_fieldnums().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // uint32 resulttype = 5 [json_name = "resulttype"]; if (this->_internal_resulttype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 5, this->_internal_resulttype(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_newvals()) { total_size += ::google::protobuf::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->_internal_fieldnums()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } } // uint32 resulttype = 5 [json_name = "resulttype"]; if (this->_internal_resulttype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_resulttype()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData FieldStore::_class_data_ = { FieldStore::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* FieldStore::GetClassData() const { return &_class_data_; } void FieldStore::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.FieldStore) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_newvals()->MergeFrom( from._internal_newvals()); _this->_internal_mutable_fieldnums()->MergeFrom( from._internal_fieldnums()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } } if (from._internal_resulttype() != 0) { _this->_internal_set_resulttype(from._internal_resulttype()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void FieldStore::CopyFrom(const FieldStore& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.FieldStore) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool FieldStore::IsInitialized() const { return true; } ::_pbi::CachedSize* FieldStore::AccessCachedSize() const { return &_impl_._cached_size_; } void FieldStore::InternalSwap(FieldStore* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.newvals_.InternalSwap(&other->_impl_.newvals_); _impl_.fieldnums_.InternalSwap(&other->_impl_.fieldnums_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(FieldStore, _impl_.resulttype_) + sizeof(FieldStore::_impl_.resulttype_) - PROTOBUF_FIELD_OFFSET(FieldStore, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata FieldStore::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[35]); } // =================================================================== class RelabelType::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RelabelType, _impl_._has_bits_); static const ::pg_query::Node& xpr(const RelabelType* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& arg(const RelabelType* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& RelabelType::_Internal::xpr(const RelabelType* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& RelabelType::_Internal::arg(const RelabelType* msg) { return *msg->_impl_.arg_; } RelabelType::RelabelType(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RelabelType) } inline PROTOBUF_NDEBUG_INLINE RelabelType::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} RelabelType::RelabelType( ::google::protobuf::Arena* arena, const RelabelType& from) : ::google::protobuf::Message(arena) { RelabelType* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, resulttype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, resulttype_), offsetof(Impl_, location_) - offsetof(Impl_, resulttype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.RelabelType) } inline PROTOBUF_NDEBUG_INLINE RelabelType::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void RelabelType::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } RelabelType::~RelabelType() { // @@protoc_insertion_point(destructor:pg_query.RelabelType) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RelabelType::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RelabelType::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RelabelType) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } } ::memset(&_impl_.resulttype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.resulttype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RelabelType::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 2, 0, 2> RelabelType::_table_ = { { PROTOBUF_FIELD_OFFSET(RelabelType, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RelabelType_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.xpr_)}}, // .pg_query.Node arg = 2 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.arg_)}}, // uint32 resulttype = 3 [json_name = "resulttype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RelabelType, _impl_.resulttype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.resulttype_)}}, // int32 resulttypmod = 4 [json_name = "resulttypmod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RelabelType, _impl_.resulttypmod_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.resulttypmod_)}}, // uint32 resultcollid = 5 [json_name = "resultcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RelabelType, _impl_.resultcollid_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.resultcollid_)}}, // .pg_query.CoercionForm relabelformat = 6 [json_name = "relabelformat"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RelabelType, _impl_.relabelformat_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.relabelformat_)}}, // int32 location = 7 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RelabelType, _impl_.location_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node arg = 2 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 resulttype = 3 [json_name = "resulttype"]; {PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.resulttype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 resulttypmod = 4 [json_name = "resulttypmod"]; {PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.resulttypmod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 resultcollid = 5 [json_name = "resultcollid"]; {PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.resultcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // .pg_query.CoercionForm relabelformat = 6 [json_name = "relabelformat"]; {PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.relabelformat_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int32 location = 7 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* RelabelType::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RelabelType) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->_internal_resulttype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_resulttype(), target); } // int32 resulttypmod = 4 [json_name = "resulttypmod"]; if (this->_internal_resulttypmod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_resulttypmod(), target); } // uint32 resultcollid = 5 [json_name = "resultcollid"]; if (this->_internal_resultcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 5, this->_internal_resultcollid(), target); } // .pg_query.CoercionForm relabelformat = 6 [json_name = "relabelformat"]; if (this->_internal_relabelformat() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 6, this->_internal_relabelformat(), target); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<7>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->_internal_resulttype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_resulttype()); } // int32 resulttypmod = 4 [json_name = "resulttypmod"]; if (this->_internal_resulttypmod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_resulttypmod()); } // uint32 resultcollid = 5 [json_name = "resultcollid"]; if (this->_internal_resultcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_resultcollid()); } // .pg_query.CoercionForm relabelformat = 6 [json_name = "relabelformat"]; if (this->_internal_relabelformat() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_relabelformat()); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RelabelType::_class_data_ = { RelabelType::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RelabelType::GetClassData() const { return &_class_data_; } void RelabelType::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RelabelType) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } } if (from._internal_resulttype() != 0) { _this->_internal_set_resulttype(from._internal_resulttype()); } if (from._internal_resulttypmod() != 0) { _this->_internal_set_resulttypmod(from._internal_resulttypmod()); } if (from._internal_resultcollid() != 0) { _this->_internal_set_resultcollid(from._internal_resultcollid()); } if (from._internal_relabelformat() != 0) { _this->_internal_set_relabelformat(from._internal_relabelformat()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RelabelType::CopyFrom(const RelabelType& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RelabelType) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RelabelType::IsInitialized() const { return true; } ::_pbi::CachedSize* RelabelType::AccessCachedSize() const { return &_impl_._cached_size_; } void RelabelType::InternalSwap(RelabelType* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.location_) + sizeof(RelabelType::_impl_.location_) - PROTOBUF_FIELD_OFFSET(RelabelType, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata RelabelType::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[36]); } // =================================================================== class CoerceViaIO::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_._has_bits_); static const ::pg_query::Node& xpr(const CoerceViaIO* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& arg(const CoerceViaIO* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& CoerceViaIO::_Internal::xpr(const CoerceViaIO* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& CoerceViaIO::_Internal::arg(const CoerceViaIO* msg) { return *msg->_impl_.arg_; } CoerceViaIO::CoerceViaIO(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CoerceViaIO) } inline PROTOBUF_NDEBUG_INLINE CoerceViaIO::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} CoerceViaIO::CoerceViaIO( ::google::protobuf::Arena* arena, const CoerceViaIO& from) : ::google::protobuf::Message(arena) { CoerceViaIO* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, resulttype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, resulttype_), offsetof(Impl_, location_) - offsetof(Impl_, resulttype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.CoerceViaIO) } inline PROTOBUF_NDEBUG_INLINE CoerceViaIO::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void CoerceViaIO::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } CoerceViaIO::~CoerceViaIO() { // @@protoc_insertion_point(destructor:pg_query.CoerceViaIO) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CoerceViaIO::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CoerceViaIO::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CoerceViaIO) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } } ::memset(&_impl_.resulttype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.resulttype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CoerceViaIO::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 2, 0, 2> CoerceViaIO::_table_ = { { PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CoerceViaIO_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_.xpr_)}}, // .pg_query.Node arg = 2 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_.arg_)}}, // uint32 resulttype = 3 [json_name = "resulttype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoerceViaIO, _impl_.resulttype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_.resulttype_)}}, // uint32 resultcollid = 4 [json_name = "resultcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoerceViaIO, _impl_.resultcollid_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_.resultcollid_)}}, // .pg_query.CoercionForm coerceformat = 5 [json_name = "coerceformat"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoerceViaIO, _impl_.coerceformat_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_.coerceformat_)}}, // int32 location = 6 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoerceViaIO, _impl_.location_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node arg = 2 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 resulttype = 3 [json_name = "resulttype"]; {PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_.resulttype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 resultcollid = 4 [json_name = "resultcollid"]; {PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_.resultcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // .pg_query.CoercionForm coerceformat = 5 [json_name = "coerceformat"]; {PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_.coerceformat_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int32 location = 6 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CoerceViaIO::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CoerceViaIO) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->_internal_resulttype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_resulttype(), target); } // uint32 resultcollid = 4 [json_name = "resultcollid"]; if (this->_internal_resultcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_resultcollid(), target); } // .pg_query.CoercionForm coerceformat = 5 [json_name = "coerceformat"]; if (this->_internal_coerceformat() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 5, this->_internal_coerceformat(), target); } // int32 location = 6 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<6>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->_internal_resulttype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_resulttype()); } // uint32 resultcollid = 4 [json_name = "resultcollid"]; if (this->_internal_resultcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_resultcollid()); } // .pg_query.CoercionForm coerceformat = 5 [json_name = "coerceformat"]; if (this->_internal_coerceformat() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_coerceformat()); } // int32 location = 6 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CoerceViaIO::_class_data_ = { CoerceViaIO::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CoerceViaIO::GetClassData() const { return &_class_data_; } void CoerceViaIO::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CoerceViaIO) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } } if (from._internal_resulttype() != 0) { _this->_internal_set_resulttype(from._internal_resulttype()); } if (from._internal_resultcollid() != 0) { _this->_internal_set_resultcollid(from._internal_resultcollid()); } if (from._internal_coerceformat() != 0) { _this->_internal_set_coerceformat(from._internal_coerceformat()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CoerceViaIO::CopyFrom(const CoerceViaIO& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CoerceViaIO) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CoerceViaIO::IsInitialized() const { return true; } ::_pbi::CachedSize* CoerceViaIO::AccessCachedSize() const { return &_impl_._cached_size_; } void CoerceViaIO::InternalSwap(CoerceViaIO* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_.location_) + sizeof(CoerceViaIO::_impl_.location_) - PROTOBUF_FIELD_OFFSET(CoerceViaIO, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata CoerceViaIO::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[37]); } // =================================================================== class ArrayCoerceExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const ArrayCoerceExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& arg(const ArrayCoerceExpr* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& elemexpr(const ArrayCoerceExpr* msg); static void set_has_elemexpr(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::Node& ArrayCoerceExpr::_Internal::xpr(const ArrayCoerceExpr* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& ArrayCoerceExpr::_Internal::arg(const ArrayCoerceExpr* msg) { return *msg->_impl_.arg_; } const ::pg_query::Node& ArrayCoerceExpr::_Internal::elemexpr(const ArrayCoerceExpr* msg) { return *msg->_impl_.elemexpr_; } ArrayCoerceExpr::ArrayCoerceExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ArrayCoerceExpr) } inline PROTOBUF_NDEBUG_INLINE ArrayCoerceExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} ArrayCoerceExpr::ArrayCoerceExpr( ::google::protobuf::Arena* arena, const ArrayCoerceExpr& from) : ::google::protobuf::Message(arena) { ArrayCoerceExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; _impl_.elemexpr_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.elemexpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, resulttype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, resulttype_), offsetof(Impl_, location_) - offsetof(Impl_, resulttype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.ArrayCoerceExpr) } inline PROTOBUF_NDEBUG_INLINE ArrayCoerceExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void ArrayCoerceExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } ArrayCoerceExpr::~ArrayCoerceExpr() { // @@protoc_insertion_point(destructor:pg_query.ArrayCoerceExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ArrayCoerceExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.arg_; delete _impl_.elemexpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void ArrayCoerceExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ArrayCoerceExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.elemexpr_ != nullptr); _impl_.elemexpr_->Clear(); } } ::memset(&_impl_.resulttype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.resulttype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ArrayCoerceExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 3, 0, 2> ArrayCoerceExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_._has_bits_), 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ArrayCoerceExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 8 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ArrayCoerceExpr, _impl_.location_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.location_)}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.xpr_)}}, // .pg_query.Node arg = 2 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.arg_)}}, // .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; {::_pbi::TcParser::FastMtS1, {26, 2, 2, PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.elemexpr_)}}, // uint32 resulttype = 4 [json_name = "resulttype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ArrayCoerceExpr, _impl_.resulttype_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.resulttype_)}}, // int32 resulttypmod = 5 [json_name = "resulttypmod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ArrayCoerceExpr, _impl_.resulttypmod_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.resulttypmod_)}}, // uint32 resultcollid = 6 [json_name = "resultcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ArrayCoerceExpr, _impl_.resultcollid_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.resultcollid_)}}, // .pg_query.CoercionForm coerceformat = 7 [json_name = "coerceformat"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ArrayCoerceExpr, _impl_.coerceformat_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.coerceformat_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node arg = 2 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; {PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.elemexpr_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 resulttype = 4 [json_name = "resulttype"]; {PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.resulttype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 resulttypmod = 5 [json_name = "resulttypmod"]; {PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.resulttypmod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 resultcollid = 6 [json_name = "resultcollid"]; {PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.resultcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // .pg_query.CoercionForm coerceformat = 7 [json_name = "coerceformat"]; {PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.coerceformat_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int32 location = 8 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* ArrayCoerceExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ArrayCoerceExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::elemexpr(this), _Internal::elemexpr(this).GetCachedSize(), target, stream); } // uint32 resulttype = 4 [json_name = "resulttype"]; if (this->_internal_resulttype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_resulttype(), target); } // int32 resulttypmod = 5 [json_name = "resulttypmod"]; if (this->_internal_resulttypmod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_resulttypmod(), target); } // uint32 resultcollid = 6 [json_name = "resultcollid"]; if (this->_internal_resultcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 6, this->_internal_resultcollid(), target); } // .pg_query.CoercionForm coerceformat = 7 [json_name = "coerceformat"]; if (this->_internal_coerceformat() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 7, this->_internal_coerceformat(), target); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<8>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } // .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.elemexpr_); } } // uint32 resulttype = 4 [json_name = "resulttype"]; if (this->_internal_resulttype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_resulttype()); } // int32 resulttypmod = 5 [json_name = "resulttypmod"]; if (this->_internal_resulttypmod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_resulttypmod()); } // uint32 resultcollid = 6 [json_name = "resultcollid"]; if (this->_internal_resultcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_resultcollid()); } // .pg_query.CoercionForm coerceformat = 7 [json_name = "coerceformat"]; if (this->_internal_coerceformat() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_coerceformat()); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ArrayCoerceExpr::_class_data_ = { ArrayCoerceExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ArrayCoerceExpr::GetClassData() const { return &_class_data_; } void ArrayCoerceExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ArrayCoerceExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_elemexpr()->::pg_query::Node::MergeFrom( from._internal_elemexpr()); } } if (from._internal_resulttype() != 0) { _this->_internal_set_resulttype(from._internal_resulttype()); } if (from._internal_resulttypmod() != 0) { _this->_internal_set_resulttypmod(from._internal_resulttypmod()); } if (from._internal_resultcollid() != 0) { _this->_internal_set_resultcollid(from._internal_resultcollid()); } if (from._internal_coerceformat() != 0) { _this->_internal_set_coerceformat(from._internal_coerceformat()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ArrayCoerceExpr::CopyFrom(const ArrayCoerceExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ArrayCoerceExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ArrayCoerceExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* ArrayCoerceExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void ArrayCoerceExpr::InternalSwap(ArrayCoerceExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.location_) + sizeof(ArrayCoerceExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata ArrayCoerceExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[38]); } // =================================================================== class ConvertRowtypeExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const ConvertRowtypeExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& arg(const ConvertRowtypeExpr* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& ConvertRowtypeExpr::_Internal::xpr(const ConvertRowtypeExpr* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& ConvertRowtypeExpr::_Internal::arg(const ConvertRowtypeExpr* msg) { return *msg->_impl_.arg_; } ConvertRowtypeExpr::ConvertRowtypeExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ConvertRowtypeExpr) } inline PROTOBUF_NDEBUG_INLINE ConvertRowtypeExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} ConvertRowtypeExpr::ConvertRowtypeExpr( ::google::protobuf::Arena* arena, const ConvertRowtypeExpr& from) : ::google::protobuf::Message(arena) { ConvertRowtypeExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, resulttype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, resulttype_), offsetof(Impl_, location_) - offsetof(Impl_, resulttype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.ConvertRowtypeExpr) } inline PROTOBUF_NDEBUG_INLINE ConvertRowtypeExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void ConvertRowtypeExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } ConvertRowtypeExpr::~ConvertRowtypeExpr() { // @@protoc_insertion_point(destructor:pg_query.ConvertRowtypeExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ConvertRowtypeExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void ConvertRowtypeExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ConvertRowtypeExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } } ::memset(&_impl_.resulttype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.resulttype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ConvertRowtypeExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 0, 2> ConvertRowtypeExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ConvertRowtypeExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, _impl_.xpr_)}}, // .pg_query.Node arg = 2 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, _impl_.arg_)}}, // uint32 resulttype = 3 [json_name = "resulttype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ConvertRowtypeExpr, _impl_.resulttype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, _impl_.resulttype_)}}, // .pg_query.CoercionForm convertformat = 4 [json_name = "convertformat"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ConvertRowtypeExpr, _impl_.convertformat_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, _impl_.convertformat_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ConvertRowtypeExpr, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node arg = 2 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 resulttype = 3 [json_name = "resulttype"]; {PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, _impl_.resulttype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // .pg_query.CoercionForm convertformat = 4 [json_name = "convertformat"]; {PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, _impl_.convertformat_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* ConvertRowtypeExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ConvertRowtypeExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->_internal_resulttype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_resulttype(), target); } // .pg_query.CoercionForm convertformat = 4 [json_name = "convertformat"]; if (this->_internal_convertformat() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 4, this->_internal_convertformat(), target); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->_internal_resulttype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_resulttype()); } // .pg_query.CoercionForm convertformat = 4 [json_name = "convertformat"]; if (this->_internal_convertformat() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_convertformat()); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ConvertRowtypeExpr::_class_data_ = { ConvertRowtypeExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ConvertRowtypeExpr::GetClassData() const { return &_class_data_; } void ConvertRowtypeExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ConvertRowtypeExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } } if (from._internal_resulttype() != 0) { _this->_internal_set_resulttype(from._internal_resulttype()); } if (from._internal_convertformat() != 0) { _this->_internal_set_convertformat(from._internal_convertformat()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ConvertRowtypeExpr::CopyFrom(const ConvertRowtypeExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ConvertRowtypeExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ConvertRowtypeExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* ConvertRowtypeExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void ConvertRowtypeExpr::InternalSwap(ConvertRowtypeExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, _impl_.location_) + sizeof(ConvertRowtypeExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata ConvertRowtypeExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[39]); } // =================================================================== class CollateExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CollateExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const CollateExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& arg(const CollateExpr* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& CollateExpr::_Internal::xpr(const CollateExpr* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& CollateExpr::_Internal::arg(const CollateExpr* msg) { return *msg->_impl_.arg_; } CollateExpr::CollateExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CollateExpr) } inline PROTOBUF_NDEBUG_INLINE CollateExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} CollateExpr::CollateExpr( ::google::protobuf::Arena* arena, const CollateExpr& from) : ::google::protobuf::Message(arena) { CollateExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, coll_oid_), reinterpret_cast(&from._impl_) + offsetof(Impl_, coll_oid_), offsetof(Impl_, location_) - offsetof(Impl_, coll_oid_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.CollateExpr) } inline PROTOBUF_NDEBUG_INLINE CollateExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void CollateExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } CollateExpr::~CollateExpr() { // @@protoc_insertion_point(destructor:pg_query.CollateExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CollateExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CollateExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CollateExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } } ::memset(&_impl_.coll_oid_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.coll_oid_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CollateExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 0, 2> CollateExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(CollateExpr, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CollateExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 4 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CollateExpr, _impl_.location_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CollateExpr, _impl_.location_)}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CollateExpr, _impl_.xpr_)}}, // .pg_query.Node arg = 2 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(CollateExpr, _impl_.arg_)}}, // uint32 coll_oid = 3 [json_name = "collOid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CollateExpr, _impl_.coll_oid_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(CollateExpr, _impl_.coll_oid_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(CollateExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node arg = 2 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(CollateExpr, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 coll_oid = 3 [json_name = "collOid"]; {PROTOBUF_FIELD_OFFSET(CollateExpr, _impl_.coll_oid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 location = 4 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(CollateExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CollateExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CollateExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // uint32 coll_oid = 3 [json_name = "collOid"]; if (this->_internal_coll_oid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_coll_oid(), target); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } } // uint32 coll_oid = 3 [json_name = "collOid"]; if (this->_internal_coll_oid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_coll_oid()); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CollateExpr::_class_data_ = { CollateExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CollateExpr::GetClassData() const { return &_class_data_; } void CollateExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CollateExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } } if (from._internal_coll_oid() != 0) { _this->_internal_set_coll_oid(from._internal_coll_oid()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CollateExpr::CopyFrom(const CollateExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CollateExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CollateExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* CollateExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void CollateExpr::InternalSwap(CollateExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CollateExpr, _impl_.location_) + sizeof(CollateExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(CollateExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata CollateExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[40]); } // =================================================================== class CaseExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const CaseExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& arg(const CaseExpr* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& defresult(const CaseExpr* msg); static void set_has_defresult(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::Node& CaseExpr::_Internal::xpr(const CaseExpr* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& CaseExpr::_Internal::arg(const CaseExpr* msg) { return *msg->_impl_.arg_; } const ::pg_query::Node& CaseExpr::_Internal::defresult(const CaseExpr* msg) { return *msg->_impl_.defresult_; } CaseExpr::CaseExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CaseExpr) } inline PROTOBUF_NDEBUG_INLINE CaseExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, args_{visibility, arena, from.args_} {} CaseExpr::CaseExpr( ::google::protobuf::Arena* arena, const CaseExpr& from) : ::google::protobuf::Message(arena) { CaseExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; _impl_.defresult_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.defresult_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, casetype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, casetype_), offsetof(Impl_, location_) - offsetof(Impl_, casetype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.CaseExpr) } inline PROTOBUF_NDEBUG_INLINE CaseExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, args_{visibility, arena} {} inline void CaseExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } CaseExpr::~CaseExpr() { // @@protoc_insertion_point(destructor:pg_query.CaseExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CaseExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.arg_; delete _impl_.defresult_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CaseExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CaseExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.defresult_ != nullptr); _impl_.defresult_->Clear(); } } ::memset(&_impl_.casetype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.casetype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CaseExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 4, 0, 2> CaseExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CaseExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.xpr_)}}, // uint32 casetype = 2 [json_name = "casetype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CaseExpr, _impl_.casetype_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.casetype_)}}, // uint32 casecollid = 3 [json_name = "casecollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CaseExpr, _impl_.casecollid_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.casecollid_)}}, // .pg_query.Node arg = 4 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {34, 1, 1, PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.arg_)}}, // repeated .pg_query.Node args = 5 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {42, 63, 2, PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.args_)}}, // .pg_query.Node defresult = 6 [json_name = "defresult"]; {::_pbi::TcParser::FastMtS1, {50, 2, 3, PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.defresult_)}}, // int32 location = 7 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CaseExpr, _impl_.location_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 casetype = 2 [json_name = "casetype"]; {PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.casetype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 casecollid = 3 [json_name = "casecollid"]; {PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.casecollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // .pg_query.Node arg = 4 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node args = 5 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.args_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node defresult = 6 [json_name = "defresult"]; {PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.defresult_), _Internal::kHasBitsOffset + 2, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 7 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CaseExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CaseExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 casetype = 2 [json_name = "casetype"]; if (this->_internal_casetype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_casetype(), target); } // uint32 casecollid = 3 [json_name = "casecollid"]; if (this->_internal_casecollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_casecollid(), target); } // .pg_query.Node arg = 4 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node args = 5 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node defresult = 6 [json_name = "defresult"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::defresult(this), _Internal::defresult(this).GetCachedSize(), target, stream); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<7>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node arg = 4 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } // .pg_query.Node defresult = 6 [json_name = "defresult"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.defresult_); } } // uint32 casetype = 2 [json_name = "casetype"]; if (this->_internal_casetype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_casetype()); } // uint32 casecollid = 3 [json_name = "casecollid"]; if (this->_internal_casecollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_casecollid()); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CaseExpr::_class_data_ = { CaseExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CaseExpr::GetClassData() const { return &_class_data_; } void CaseExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CaseExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_defresult()->::pg_query::Node::MergeFrom( from._internal_defresult()); } } if (from._internal_casetype() != 0) { _this->_internal_set_casetype(from._internal_casetype()); } if (from._internal_casecollid() != 0) { _this->_internal_set_casecollid(from._internal_casecollid()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CaseExpr::CopyFrom(const CaseExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CaseExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CaseExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* CaseExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void CaseExpr::InternalSwap(CaseExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.args_.InternalSwap(&other->_impl_.args_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.location_) + sizeof(CaseExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(CaseExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata CaseExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[41]); } // =================================================================== class CaseWhen::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CaseWhen, _impl_._has_bits_); static const ::pg_query::Node& xpr(const CaseWhen* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& expr(const CaseWhen* msg); static void set_has_expr(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& result(const CaseWhen* msg); static void set_has_result(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::Node& CaseWhen::_Internal::xpr(const CaseWhen* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& CaseWhen::_Internal::expr(const CaseWhen* msg) { return *msg->_impl_.expr_; } const ::pg_query::Node& CaseWhen::_Internal::result(const CaseWhen* msg) { return *msg->_impl_.result_; } CaseWhen::CaseWhen(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CaseWhen) } inline PROTOBUF_NDEBUG_INLINE CaseWhen::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} CaseWhen::CaseWhen( ::google::protobuf::Arena* arena, const CaseWhen& from) : ::google::protobuf::Message(arena) { CaseWhen* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.expr_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.expr_) : nullptr; _impl_.result_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.result_) : nullptr; _impl_.location_ = from._impl_.location_; // @@protoc_insertion_point(copy_constructor:pg_query.CaseWhen) } inline PROTOBUF_NDEBUG_INLINE CaseWhen::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void CaseWhen::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } CaseWhen::~CaseWhen() { // @@protoc_insertion_point(destructor:pg_query.CaseWhen) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CaseWhen::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.expr_; delete _impl_.result_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CaseWhen::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CaseWhen) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.expr_ != nullptr); _impl_.expr_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.result_ != nullptr); _impl_.result_->Clear(); } } _impl_.location_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CaseWhen::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 3, 0, 2> CaseWhen::_table_ = { { PROTOBUF_FIELD_OFFSET(CaseWhen, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CaseWhen_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 4 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CaseWhen, _impl_.location_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CaseWhen, _impl_.location_)}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CaseWhen, _impl_.xpr_)}}, // .pg_query.Node expr = 2 [json_name = "expr"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(CaseWhen, _impl_.expr_)}}, // .pg_query.Node result = 3 [json_name = "result"]; {::_pbi::TcParser::FastMtS1, {26, 2, 2, PROTOBUF_FIELD_OFFSET(CaseWhen, _impl_.result_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(CaseWhen, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node expr = 2 [json_name = "expr"]; {PROTOBUF_FIELD_OFFSET(CaseWhen, _impl_.expr_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node result = 3 [json_name = "result"]; {PROTOBUF_FIELD_OFFSET(CaseWhen, _impl_.result_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 4 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(CaseWhen, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CaseWhen::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CaseWhen) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::expr(this), _Internal::expr(this).GetCachedSize(), target, stream); } // .pg_query.Node result = 3 [json_name = "result"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::result(this), _Internal::result(this).GetCachedSize(), target, stream); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.expr_); } // .pg_query.Node result = 3 [json_name = "result"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.result_); } } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CaseWhen::_class_data_ = { CaseWhen::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CaseWhen::GetClassData() const { return &_class_data_; } void CaseWhen::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CaseWhen) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_expr()->::pg_query::Node::MergeFrom( from._internal_expr()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_result()->::pg_query::Node::MergeFrom( from._internal_result()); } } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CaseWhen::CopyFrom(const CaseWhen& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CaseWhen) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CaseWhen::IsInitialized() const { return true; } ::_pbi::CachedSize* CaseWhen::AccessCachedSize() const { return &_impl_._cached_size_; } void CaseWhen::InternalSwap(CaseWhen* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CaseWhen, _impl_.location_) + sizeof(CaseWhen::_impl_.location_) - PROTOBUF_FIELD_OFFSET(CaseWhen, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata CaseWhen::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[42]); } // =================================================================== class CaseTestExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CaseTestExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const CaseTestExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& CaseTestExpr::_Internal::xpr(const CaseTestExpr* msg) { return *msg->_impl_.xpr_; } CaseTestExpr::CaseTestExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CaseTestExpr) } inline PROTOBUF_NDEBUG_INLINE CaseTestExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} CaseTestExpr::CaseTestExpr( ::google::protobuf::Arena* arena, const CaseTestExpr& from) : ::google::protobuf::Message(arena) { CaseTestExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, type_id_), reinterpret_cast(&from._impl_) + offsetof(Impl_, type_id_), offsetof(Impl_, collation_) - offsetof(Impl_, type_id_) + sizeof(Impl_::collation_)); // @@protoc_insertion_point(copy_constructor:pg_query.CaseTestExpr) } inline PROTOBUF_NDEBUG_INLINE CaseTestExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void CaseTestExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, collation_) - offsetof(Impl_, xpr_) + sizeof(Impl_::collation_)); } CaseTestExpr::~CaseTestExpr() { // @@protoc_insertion_point(destructor:pg_query.CaseTestExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CaseTestExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CaseTestExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CaseTestExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.type_id_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.collation_) - reinterpret_cast(&_impl_.type_id_)) + sizeof(_impl_.collation_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CaseTestExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 1, 0, 2> CaseTestExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(CaseTestExpr, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CaseTestExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // uint32 collation = 4 [json_name = "collation"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CaseTestExpr, _impl_.collation_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CaseTestExpr, _impl_.collation_)}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CaseTestExpr, _impl_.xpr_)}}, // uint32 type_id = 2 [json_name = "typeId"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CaseTestExpr, _impl_.type_id_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(CaseTestExpr, _impl_.type_id_)}}, // int32 type_mod = 3 [json_name = "typeMod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CaseTestExpr, _impl_.type_mod_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(CaseTestExpr, _impl_.type_mod_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(CaseTestExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 type_id = 2 [json_name = "typeId"]; {PROTOBUF_FIELD_OFFSET(CaseTestExpr, _impl_.type_id_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 type_mod = 3 [json_name = "typeMod"]; {PROTOBUF_FIELD_OFFSET(CaseTestExpr, _impl_.type_mod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 collation = 4 [json_name = "collation"]; {PROTOBUF_FIELD_OFFSET(CaseTestExpr, _impl_.collation_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CaseTestExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CaseTestExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 type_id = 2 [json_name = "typeId"]; if (this->_internal_type_id() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_type_id(), target); } // int32 type_mod = 3 [json_name = "typeMod"]; if (this->_internal_type_mod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_type_mod(), target); } // uint32 collation = 4 [json_name = "collation"]; if (this->_internal_collation() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_collation(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 type_id = 2 [json_name = "typeId"]; if (this->_internal_type_id() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_type_id()); } // int32 type_mod = 3 [json_name = "typeMod"]; if (this->_internal_type_mod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_type_mod()); } // uint32 collation = 4 [json_name = "collation"]; if (this->_internal_collation() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_collation()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CaseTestExpr::_class_data_ = { CaseTestExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CaseTestExpr::GetClassData() const { return &_class_data_; } void CaseTestExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CaseTestExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_type_id() != 0) { _this->_internal_set_type_id(from._internal_type_id()); } if (from._internal_type_mod() != 0) { _this->_internal_set_type_mod(from._internal_type_mod()); } if (from._internal_collation() != 0) { _this->_internal_set_collation(from._internal_collation()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CaseTestExpr::CopyFrom(const CaseTestExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CaseTestExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CaseTestExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* CaseTestExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void CaseTestExpr::InternalSwap(CaseTestExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CaseTestExpr, _impl_.collation_) + sizeof(CaseTestExpr::_impl_.collation_) - PROTOBUF_FIELD_OFFSET(CaseTestExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata CaseTestExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[43]); } // =================================================================== class ArrayExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const ArrayExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& ArrayExpr::_Internal::xpr(const ArrayExpr* msg) { return *msg->_impl_.xpr_; } ArrayExpr::ArrayExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ArrayExpr) } inline PROTOBUF_NDEBUG_INLINE ArrayExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, elements_{visibility, arena, from.elements_} {} ArrayExpr::ArrayExpr( ::google::protobuf::Arena* arena, const ArrayExpr& from) : ::google::protobuf::Message(arena) { ArrayExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, array_typeid_), reinterpret_cast(&from._impl_) + offsetof(Impl_, array_typeid_), offsetof(Impl_, location_) - offsetof(Impl_, array_typeid_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.ArrayExpr) } inline PROTOBUF_NDEBUG_INLINE ArrayExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, elements_{visibility, arena} {} inline void ArrayExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } ArrayExpr::~ArrayExpr() { // @@protoc_insertion_point(destructor:pg_query.ArrayExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ArrayExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void ArrayExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ArrayExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.elements_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.array_typeid_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.array_typeid_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ArrayExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 2, 0, 2> ArrayExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ArrayExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.xpr_)}}, // uint32 array_typeid = 2 [json_name = "array_typeid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ArrayExpr, _impl_.array_typeid_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.array_typeid_)}}, // uint32 array_collid = 3 [json_name = "array_collid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ArrayExpr, _impl_.array_collid_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.array_collid_)}}, // uint32 element_typeid = 4 [json_name = "element_typeid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ArrayExpr, _impl_.element_typeid_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.element_typeid_)}}, // repeated .pg_query.Node elements = 5 [json_name = "elements"]; {::_pbi::TcParser::FastMtR1, {42, 63, 1, PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.elements_)}}, // bool multidims = 6 [json_name = "multidims"]; {::_pbi::TcParser::SingularVarintNoZag1(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.multidims_)}}, // int32 location = 7 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ArrayExpr, _impl_.location_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 array_typeid = 2 [json_name = "array_typeid"]; {PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.array_typeid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 array_collid = 3 [json_name = "array_collid"]; {PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.array_collid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 element_typeid = 4 [json_name = "element_typeid"]; {PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.element_typeid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated .pg_query.Node elements = 5 [json_name = "elements"]; {PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.elements_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool multidims = 6 [json_name = "multidims"]; {PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.multidims_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 7 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* ArrayExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ArrayExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 array_typeid = 2 [json_name = "array_typeid"]; if (this->_internal_array_typeid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_array_typeid(), target); } // uint32 array_collid = 3 [json_name = "array_collid"]; if (this->_internal_array_collid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_array_collid(), target); } // uint32 element_typeid = 4 [json_name = "element_typeid"]; if (this->_internal_element_typeid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_element_typeid(), target); } // repeated .pg_query.Node elements = 5 [json_name = "elements"]; for (unsigned i = 0, n = static_cast(this->_internal_elements_size()); i < n; i++) { const auto& repfield = this->_internal_elements().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // bool multidims = 6 [json_name = "multidims"]; if (this->_internal_multidims() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 6, this->_internal_multidims(), target); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<7>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_elements()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 array_typeid = 2 [json_name = "array_typeid"]; if (this->_internal_array_typeid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_array_typeid()); } // uint32 array_collid = 3 [json_name = "array_collid"]; if (this->_internal_array_collid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_array_collid()); } // uint32 element_typeid = 4 [json_name = "element_typeid"]; if (this->_internal_element_typeid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_element_typeid()); } // bool multidims = 6 [json_name = "multidims"]; if (this->_internal_multidims() != 0) { total_size += 2; } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ArrayExpr::_class_data_ = { ArrayExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ArrayExpr::GetClassData() const { return &_class_data_; } void ArrayExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ArrayExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_elements()->MergeFrom( from._internal_elements()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_array_typeid() != 0) { _this->_internal_set_array_typeid(from._internal_array_typeid()); } if (from._internal_array_collid() != 0) { _this->_internal_set_array_collid(from._internal_array_collid()); } if (from._internal_element_typeid() != 0) { _this->_internal_set_element_typeid(from._internal_element_typeid()); } if (from._internal_multidims() != 0) { _this->_internal_set_multidims(from._internal_multidims()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ArrayExpr::CopyFrom(const ArrayExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ArrayExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ArrayExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* ArrayExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void ArrayExpr::InternalSwap(ArrayExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.elements_.InternalSwap(&other->_impl_.elements_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.location_) + sizeof(ArrayExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(ArrayExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata ArrayExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[44]); } // =================================================================== class RowExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RowExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const RowExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& RowExpr::_Internal::xpr(const RowExpr* msg) { return *msg->_impl_.xpr_; } RowExpr::RowExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RowExpr) } inline PROTOBUF_NDEBUG_INLINE RowExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, args_{visibility, arena, from.args_}, colnames_{visibility, arena, from.colnames_} {} RowExpr::RowExpr( ::google::protobuf::Arena* arena, const RowExpr& from) : ::google::protobuf::Message(arena) { RowExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, row_typeid_), reinterpret_cast(&from._impl_) + offsetof(Impl_, row_typeid_), offsetof(Impl_, location_) - offsetof(Impl_, row_typeid_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.RowExpr) } inline PROTOBUF_NDEBUG_INLINE RowExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, args_{visibility, arena}, colnames_{visibility, arena} {} inline void RowExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } RowExpr::~RowExpr() { // @@protoc_insertion_point(destructor:pg_query.RowExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RowExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RowExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RowExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); _impl_.colnames_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.row_typeid_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.row_typeid_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RowExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 3, 0, 2> RowExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(RowExpr, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RowExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(RowExpr, _impl_.xpr_)}}, // repeated .pg_query.Node args = 2 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(RowExpr, _impl_.args_)}}, // uint32 row_typeid = 3 [json_name = "row_typeid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RowExpr, _impl_.row_typeid_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(RowExpr, _impl_.row_typeid_)}}, // .pg_query.CoercionForm row_format = 4 [json_name = "row_format"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RowExpr, _impl_.row_format_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(RowExpr, _impl_.row_format_)}}, // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; {::_pbi::TcParser::FastMtR1, {42, 63, 2, PROTOBUF_FIELD_OFFSET(RowExpr, _impl_.colnames_)}}, // int32 location = 6 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RowExpr, _impl_.location_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(RowExpr, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(RowExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node args = 2 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(RowExpr, _impl_.args_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 row_typeid = 3 [json_name = "row_typeid"]; {PROTOBUF_FIELD_OFFSET(RowExpr, _impl_.row_typeid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // .pg_query.CoercionForm row_format = 4 [json_name = "row_format"]; {PROTOBUF_FIELD_OFFSET(RowExpr, _impl_.row_format_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; {PROTOBUF_FIELD_OFFSET(RowExpr, _impl_.colnames_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 6 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(RowExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* RowExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RowExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node args = 2 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // uint32 row_typeid = 3 [json_name = "row_typeid"]; if (this->_internal_row_typeid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_row_typeid(), target); } // .pg_query.CoercionForm row_format = 4 [json_name = "row_format"]; if (this->_internal_row_format() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 4, this->_internal_row_format(), target); } // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; for (unsigned i = 0, n = static_cast(this->_internal_colnames_size()); i < n; i++) { const auto& repfield = this->_internal_colnames().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 6 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<6>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_args()) { total_size += ::google::protobuf::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->_internal_colnames()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 row_typeid = 3 [json_name = "row_typeid"]; if (this->_internal_row_typeid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_row_typeid()); } // .pg_query.CoercionForm row_format = 4 [json_name = "row_format"]; if (this->_internal_row_format() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_row_format()); } // int32 location = 6 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RowExpr::_class_data_ = { RowExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RowExpr::GetClassData() const { return &_class_data_; } void RowExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RowExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); _this->_internal_mutable_colnames()->MergeFrom( from._internal_colnames()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_row_typeid() != 0) { _this->_internal_set_row_typeid(from._internal_row_typeid()); } if (from._internal_row_format() != 0) { _this->_internal_set_row_format(from._internal_row_format()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RowExpr::CopyFrom(const RowExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RowExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RowExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* RowExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void RowExpr::InternalSwap(RowExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.args_.InternalSwap(&other->_impl_.args_); _impl_.colnames_.InternalSwap(&other->_impl_.colnames_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RowExpr, _impl_.location_) + sizeof(RowExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(RowExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata RowExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[45]); } // =================================================================== class RowCompareExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const RowCompareExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& RowCompareExpr::_Internal::xpr(const RowCompareExpr* msg) { return *msg->_impl_.xpr_; } RowCompareExpr::RowCompareExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RowCompareExpr) } inline PROTOBUF_NDEBUG_INLINE RowCompareExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, opnos_{visibility, arena, from.opnos_}, opfamilies_{visibility, arena, from.opfamilies_}, inputcollids_{visibility, arena, from.inputcollids_}, largs_{visibility, arena, from.largs_}, rargs_{visibility, arena, from.rargs_} {} RowCompareExpr::RowCompareExpr( ::google::protobuf::Arena* arena, const RowCompareExpr& from) : ::google::protobuf::Message(arena) { RowCompareExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.rctype_ = from._impl_.rctype_; // @@protoc_insertion_point(copy_constructor:pg_query.RowCompareExpr) } inline PROTOBUF_NDEBUG_INLINE RowCompareExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, opnos_{visibility, arena}, opfamilies_{visibility, arena}, inputcollids_{visibility, arena}, largs_{visibility, arena}, rargs_{visibility, arena} {} inline void RowCompareExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, rctype_) - offsetof(Impl_, xpr_) + sizeof(Impl_::rctype_)); } RowCompareExpr::~RowCompareExpr() { // @@protoc_insertion_point(destructor:pg_query.RowCompareExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RowCompareExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RowCompareExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RowCompareExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.opnos_.Clear(); _impl_.opfamilies_.Clear(); _impl_.inputcollids_.Clear(); _impl_.largs_.Clear(); _impl_.rargs_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } _impl_.rctype_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RowCompareExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 6, 0, 2> RowCompareExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 6, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RowCompareExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.xpr_)}}, // .pg_query.RowCompareType rctype = 2 [json_name = "rctype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RowCompareExpr, _impl_.rctype_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.rctype_)}}, // repeated .pg_query.Node opnos = 3 [json_name = "opnos"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.opnos_)}}, // repeated .pg_query.Node opfamilies = 4 [json_name = "opfamilies"]; {::_pbi::TcParser::FastMtR1, {34, 63, 2, PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.opfamilies_)}}, // repeated .pg_query.Node inputcollids = 5 [json_name = "inputcollids"]; {::_pbi::TcParser::FastMtR1, {42, 63, 3, PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.inputcollids_)}}, // repeated .pg_query.Node largs = 6 [json_name = "largs"]; {::_pbi::TcParser::FastMtR1, {50, 63, 4, PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.largs_)}}, // repeated .pg_query.Node rargs = 7 [json_name = "rargs"]; {::_pbi::TcParser::FastMtR1, {58, 63, 5, PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.rargs_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RowCompareType rctype = 2 [json_name = "rctype"]; {PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.rctype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node opnos = 3 [json_name = "opnos"]; {PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.opnos_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node opfamilies = 4 [json_name = "opfamilies"]; {PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.opfamilies_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node inputcollids = 5 [json_name = "inputcollids"]; {PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.inputcollids_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node largs = 6 [json_name = "largs"]; {PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.largs_), -1, 4, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node rargs = 7 [json_name = "rargs"]; {PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.rargs_), -1, 5, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* RowCompareExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RowCompareExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.RowCompareType rctype = 2 [json_name = "rctype"]; if (this->_internal_rctype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_rctype(), target); } // repeated .pg_query.Node opnos = 3 [json_name = "opnos"]; for (unsigned i = 0, n = static_cast(this->_internal_opnos_size()); i < n; i++) { const auto& repfield = this->_internal_opnos().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node opfamilies = 4 [json_name = "opfamilies"]; for (unsigned i = 0, n = static_cast(this->_internal_opfamilies_size()); i < n; i++) { const auto& repfield = this->_internal_opfamilies().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node inputcollids = 5 [json_name = "inputcollids"]; for (unsigned i = 0, n = static_cast(this->_internal_inputcollids_size()); i < n; i++) { const auto& repfield = this->_internal_inputcollids().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node largs = 6 [json_name = "largs"]; for (unsigned i = 0, n = static_cast(this->_internal_largs_size()); i < n; i++) { const auto& repfield = this->_internal_largs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node rargs = 7 [json_name = "rargs"]; for (unsigned i = 0, n = static_cast(this->_internal_rargs_size()); i < n; i++) { const auto& repfield = this->_internal_rargs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_opnos()) { total_size += ::google::protobuf::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->_internal_opfamilies()) { total_size += ::google::protobuf::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->_internal_inputcollids()) { total_size += ::google::protobuf::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->_internal_largs()) { total_size += ::google::protobuf::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->_internal_rargs()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.RowCompareType rctype = 2 [json_name = "rctype"]; if (this->_internal_rctype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_rctype()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RowCompareExpr::_class_data_ = { RowCompareExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RowCompareExpr::GetClassData() const { return &_class_data_; } void RowCompareExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RowCompareExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_opnos()->MergeFrom( from._internal_opnos()); _this->_internal_mutable_opfamilies()->MergeFrom( from._internal_opfamilies()); _this->_internal_mutable_inputcollids()->MergeFrom( from._internal_inputcollids()); _this->_internal_mutable_largs()->MergeFrom( from._internal_largs()); _this->_internal_mutable_rargs()->MergeFrom( from._internal_rargs()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_rctype() != 0) { _this->_internal_set_rctype(from._internal_rctype()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RowCompareExpr::CopyFrom(const RowCompareExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RowCompareExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RowCompareExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* RowCompareExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void RowCompareExpr::InternalSwap(RowCompareExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.opnos_.InternalSwap(&other->_impl_.opnos_); _impl_.opfamilies_.InternalSwap(&other->_impl_.opfamilies_); _impl_.inputcollids_.InternalSwap(&other->_impl_.inputcollids_); _impl_.largs_.InternalSwap(&other->_impl_.largs_); _impl_.rargs_.InternalSwap(&other->_impl_.rargs_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.rctype_) + sizeof(RowCompareExpr::_impl_.rctype_) - PROTOBUF_FIELD_OFFSET(RowCompareExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata RowCompareExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[46]); } // =================================================================== class CoalesceExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CoalesceExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const CoalesceExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& CoalesceExpr::_Internal::xpr(const CoalesceExpr* msg) { return *msg->_impl_.xpr_; } CoalesceExpr::CoalesceExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CoalesceExpr) } inline PROTOBUF_NDEBUG_INLINE CoalesceExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, args_{visibility, arena, from.args_} {} CoalesceExpr::CoalesceExpr( ::google::protobuf::Arena* arena, const CoalesceExpr& from) : ::google::protobuf::Message(arena) { CoalesceExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, coalescetype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, coalescetype_), offsetof(Impl_, location_) - offsetof(Impl_, coalescetype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.CoalesceExpr) } inline PROTOBUF_NDEBUG_INLINE CoalesceExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, args_{visibility, arena} {} inline void CoalesceExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } CoalesceExpr::~CoalesceExpr() { // @@protoc_insertion_point(destructor:pg_query.CoalesceExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CoalesceExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CoalesceExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CoalesceExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.coalescetype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.coalescetype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CoalesceExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 0, 2> CoalesceExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(CoalesceExpr, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CoalesceExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CoalesceExpr, _impl_.xpr_)}}, // uint32 coalescetype = 2 [json_name = "coalescetype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoalesceExpr, _impl_.coalescetype_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(CoalesceExpr, _impl_.coalescetype_)}}, // uint32 coalescecollid = 3 [json_name = "coalescecollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoalesceExpr, _impl_.coalescecollid_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(CoalesceExpr, _impl_.coalescecollid_)}}, // repeated .pg_query.Node args = 4 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(CoalesceExpr, _impl_.args_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoalesceExpr, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(CoalesceExpr, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(CoalesceExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 coalescetype = 2 [json_name = "coalescetype"]; {PROTOBUF_FIELD_OFFSET(CoalesceExpr, _impl_.coalescetype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 coalescecollid = 3 [json_name = "coalescecollid"]; {PROTOBUF_FIELD_OFFSET(CoalesceExpr, _impl_.coalescecollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated .pg_query.Node args = 4 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(CoalesceExpr, _impl_.args_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(CoalesceExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CoalesceExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CoalesceExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 coalescetype = 2 [json_name = "coalescetype"]; if (this->_internal_coalescetype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_coalescetype(), target); } // uint32 coalescecollid = 3 [json_name = "coalescecollid"]; if (this->_internal_coalescecollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_coalescecollid(), target); } // repeated .pg_query.Node args = 4 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 coalescetype = 2 [json_name = "coalescetype"]; if (this->_internal_coalescetype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_coalescetype()); } // uint32 coalescecollid = 3 [json_name = "coalescecollid"]; if (this->_internal_coalescecollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_coalescecollid()); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CoalesceExpr::_class_data_ = { CoalesceExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CoalesceExpr::GetClassData() const { return &_class_data_; } void CoalesceExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CoalesceExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_coalescetype() != 0) { _this->_internal_set_coalescetype(from._internal_coalescetype()); } if (from._internal_coalescecollid() != 0) { _this->_internal_set_coalescecollid(from._internal_coalescecollid()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CoalesceExpr::CopyFrom(const CoalesceExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CoalesceExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CoalesceExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* CoalesceExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void CoalesceExpr::InternalSwap(CoalesceExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.args_.InternalSwap(&other->_impl_.args_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CoalesceExpr, _impl_.location_) + sizeof(CoalesceExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(CoalesceExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata CoalesceExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[47]); } // =================================================================== class MinMaxExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const MinMaxExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& MinMaxExpr::_Internal::xpr(const MinMaxExpr* msg) { return *msg->_impl_.xpr_; } MinMaxExpr::MinMaxExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.MinMaxExpr) } inline PROTOBUF_NDEBUG_INLINE MinMaxExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, args_{visibility, arena, from.args_} {} MinMaxExpr::MinMaxExpr( ::google::protobuf::Arena* arena, const MinMaxExpr& from) : ::google::protobuf::Message(arena) { MinMaxExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, minmaxtype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, minmaxtype_), offsetof(Impl_, location_) - offsetof(Impl_, minmaxtype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.MinMaxExpr) } inline PROTOBUF_NDEBUG_INLINE MinMaxExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, args_{visibility, arena} {} inline void MinMaxExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } MinMaxExpr::~MinMaxExpr() { // @@protoc_insertion_point(destructor:pg_query.MinMaxExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void MinMaxExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void MinMaxExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.MinMaxExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.minmaxtype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.minmaxtype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* MinMaxExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 2, 0, 2> MinMaxExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_MinMaxExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.xpr_)}}, // uint32 minmaxtype = 2 [json_name = "minmaxtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MinMaxExpr, _impl_.minmaxtype_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.minmaxtype_)}}, // uint32 minmaxcollid = 3 [json_name = "minmaxcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MinMaxExpr, _impl_.minmaxcollid_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.minmaxcollid_)}}, // uint32 inputcollid = 4 [json_name = "inputcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MinMaxExpr, _impl_.inputcollid_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.inputcollid_)}}, // .pg_query.MinMaxOp op = 5 [json_name = "op"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MinMaxExpr, _impl_.op_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.op_)}}, // repeated .pg_query.Node args = 6 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {50, 63, 1, PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.args_)}}, // int32 location = 7 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MinMaxExpr, _impl_.location_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 minmaxtype = 2 [json_name = "minmaxtype"]; {PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.minmaxtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 minmaxcollid = 3 [json_name = "minmaxcollid"]; {PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.minmaxcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 inputcollid = 4 [json_name = "inputcollid"]; {PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.inputcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // .pg_query.MinMaxOp op = 5 [json_name = "op"]; {PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.op_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node args = 6 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.args_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 7 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* MinMaxExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.MinMaxExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 minmaxtype = 2 [json_name = "minmaxtype"]; if (this->_internal_minmaxtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_minmaxtype(), target); } // uint32 minmaxcollid = 3 [json_name = "minmaxcollid"]; if (this->_internal_minmaxcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_minmaxcollid(), target); } // uint32 inputcollid = 4 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_inputcollid(), target); } // .pg_query.MinMaxOp op = 5 [json_name = "op"]; if (this->_internal_op() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 5, this->_internal_op(), target); } // repeated .pg_query.Node args = 6 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<7>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 minmaxtype = 2 [json_name = "minmaxtype"]; if (this->_internal_minmaxtype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_minmaxtype()); } // uint32 minmaxcollid = 3 [json_name = "minmaxcollid"]; if (this->_internal_minmaxcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_minmaxcollid()); } // uint32 inputcollid = 4 [json_name = "inputcollid"]; if (this->_internal_inputcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_inputcollid()); } // .pg_query.MinMaxOp op = 5 [json_name = "op"]; if (this->_internal_op() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_op()); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData MinMaxExpr::_class_data_ = { MinMaxExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* MinMaxExpr::GetClassData() const { return &_class_data_; } void MinMaxExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.MinMaxExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_minmaxtype() != 0) { _this->_internal_set_minmaxtype(from._internal_minmaxtype()); } if (from._internal_minmaxcollid() != 0) { _this->_internal_set_minmaxcollid(from._internal_minmaxcollid()); } if (from._internal_inputcollid() != 0) { _this->_internal_set_inputcollid(from._internal_inputcollid()); } if (from._internal_op() != 0) { _this->_internal_set_op(from._internal_op()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void MinMaxExpr::CopyFrom(const MinMaxExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.MinMaxExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool MinMaxExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* MinMaxExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void MinMaxExpr::InternalSwap(MinMaxExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.args_.InternalSwap(&other->_impl_.args_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.location_) + sizeof(MinMaxExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(MinMaxExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata MinMaxExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[48]); } // =================================================================== class SQLValueFunction::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(SQLValueFunction, _impl_._has_bits_); static const ::pg_query::Node& xpr(const SQLValueFunction* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& SQLValueFunction::_Internal::xpr(const SQLValueFunction* msg) { return *msg->_impl_.xpr_; } SQLValueFunction::SQLValueFunction(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SQLValueFunction) } inline PROTOBUF_NDEBUG_INLINE SQLValueFunction::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} SQLValueFunction::SQLValueFunction( ::google::protobuf::Arena* arena, const SQLValueFunction& from) : ::google::protobuf::Message(arena) { SQLValueFunction* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, op_), reinterpret_cast(&from._impl_) + offsetof(Impl_, op_), offsetof(Impl_, location_) - offsetof(Impl_, op_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.SQLValueFunction) } inline PROTOBUF_NDEBUG_INLINE SQLValueFunction::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void SQLValueFunction::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } SQLValueFunction::~SQLValueFunction() { // @@protoc_insertion_point(destructor:pg_query.SQLValueFunction) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void SQLValueFunction::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void SQLValueFunction::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SQLValueFunction) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.op_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.op_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* SQLValueFunction::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 1, 0, 2> SQLValueFunction::_table_ = { { PROTOBUF_FIELD_OFFSET(SQLValueFunction, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_SQLValueFunction_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(SQLValueFunction, _impl_.xpr_)}}, // .pg_query.SQLValueFunctionOp op = 2 [json_name = "op"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SQLValueFunction, _impl_.op_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(SQLValueFunction, _impl_.op_)}}, // uint32 type = 3 [json_name = "type"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SQLValueFunction, _impl_.type_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(SQLValueFunction, _impl_.type_)}}, // int32 typmod = 4 [json_name = "typmod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SQLValueFunction, _impl_.typmod_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(SQLValueFunction, _impl_.typmod_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SQLValueFunction, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(SQLValueFunction, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(SQLValueFunction, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SQLValueFunctionOp op = 2 [json_name = "op"]; {PROTOBUF_FIELD_OFFSET(SQLValueFunction, _impl_.op_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // uint32 type = 3 [json_name = "type"]; {PROTOBUF_FIELD_OFFSET(SQLValueFunction, _impl_.type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 typmod = 4 [json_name = "typmod"]; {PROTOBUF_FIELD_OFFSET(SQLValueFunction, _impl_.typmod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(SQLValueFunction, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* SQLValueFunction::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SQLValueFunction) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.SQLValueFunctionOp op = 2 [json_name = "op"]; if (this->_internal_op() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_op(), target); } // uint32 type = 3 [json_name = "type"]; if (this->_internal_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_type(), target); } // int32 typmod = 4 [json_name = "typmod"]; if (this->_internal_typmod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_typmod(), target); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.SQLValueFunctionOp op = 2 [json_name = "op"]; if (this->_internal_op() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_op()); } // uint32 type = 3 [json_name = "type"]; if (this->_internal_type() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_type()); } // int32 typmod = 4 [json_name = "typmod"]; if (this->_internal_typmod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_typmod()); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData SQLValueFunction::_class_data_ = { SQLValueFunction::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* SQLValueFunction::GetClassData() const { return &_class_data_; } void SQLValueFunction::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SQLValueFunction) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_op() != 0) { _this->_internal_set_op(from._internal_op()); } if (from._internal_type() != 0) { _this->_internal_set_type(from._internal_type()); } if (from._internal_typmod() != 0) { _this->_internal_set_typmod(from._internal_typmod()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void SQLValueFunction::CopyFrom(const SQLValueFunction& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SQLValueFunction) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool SQLValueFunction::IsInitialized() const { return true; } ::_pbi::CachedSize* SQLValueFunction::AccessCachedSize() const { return &_impl_._cached_size_; } void SQLValueFunction::InternalSwap(SQLValueFunction* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(SQLValueFunction, _impl_.location_) + sizeof(SQLValueFunction::_impl_.location_) - PROTOBUF_FIELD_OFFSET(SQLValueFunction, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata SQLValueFunction::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[49]); } // =================================================================== class XmlExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const XmlExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& XmlExpr::_Internal::xpr(const XmlExpr* msg) { return *msg->_impl_.xpr_; } XmlExpr::XmlExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.XmlExpr) } inline PROTOBUF_NDEBUG_INLINE XmlExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, named_args_{visibility, arena, from.named_args_}, arg_names_{visibility, arena, from.arg_names_}, args_{visibility, arena, from.args_}, name_(arena, from.name_) {} XmlExpr::XmlExpr( ::google::protobuf::Arena* arena, const XmlExpr& from) : ::google::protobuf::Message(arena) { XmlExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, op_), reinterpret_cast(&from._impl_) + offsetof(Impl_, op_), offsetof(Impl_, location_) - offsetof(Impl_, op_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.XmlExpr) } inline PROTOBUF_NDEBUG_INLINE XmlExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, named_args_{visibility, arena}, arg_names_{visibility, arena}, args_{visibility, arena}, name_(arena) {} inline void XmlExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } XmlExpr::~XmlExpr() { // @@protoc_insertion_point(destructor:pg_query.XmlExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void XmlExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void XmlExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.XmlExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.named_args_.Clear(); _impl_.arg_names_.Clear(); _impl_.args_.Clear(); _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.op_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.op_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* XmlExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 11, 4, 37, 2> XmlExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_._has_bits_), 0, // no _extensions_ 11, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294965248, // skipmap offsetof(decltype(_table_), field_entries), 11, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_XmlExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.xpr_)}}, // .pg_query.XmlExprOp op = 2 [json_name = "op"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(XmlExpr, _impl_.op_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.op_)}}, // string name = 3 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.name_)}}, // repeated .pg_query.Node named_args = 4 [json_name = "named_args"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.named_args_)}}, // repeated .pg_query.Node arg_names = 5 [json_name = "arg_names"]; {::_pbi::TcParser::FastMtR1, {42, 63, 2, PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.arg_names_)}}, // repeated .pg_query.Node args = 6 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {50, 63, 3, PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.args_)}}, // .pg_query.XmlOptionType xmloption = 7 [json_name = "xmloption"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(XmlExpr, _impl_.xmloption_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.xmloption_)}}, // bool indent = 8 [json_name = "indent"]; {::_pbi::TcParser::SingularVarintNoZag1(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.indent_)}}, // uint32 type = 9 [json_name = "type"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(XmlExpr, _impl_.type_), 63>(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.type_)}}, // int32 typmod = 10 [json_name = "typmod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(XmlExpr, _impl_.typmod_), 63>(), {80, 63, 0, PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.typmod_)}}, // int32 location = 11 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(XmlExpr, _impl_.location_), 63>(), {88, 63, 0, PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.XmlExprOp op = 2 [json_name = "op"]; {PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.op_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // string name = 3 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node named_args = 4 [json_name = "named_args"]; {PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.named_args_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node arg_names = 5 [json_name = "arg_names"]; {PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.arg_names_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node args = 6 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.args_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.XmlOptionType xmloption = 7 [json_name = "xmloption"]; {PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.xmloption_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool indent = 8 [json_name = "indent"]; {PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.indent_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // uint32 type = 9 [json_name = "type"]; {PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 typmod = 10 [json_name = "typmod"]; {PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.typmod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 location = 11 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\20\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0" "pg_query.XmlExpr" "name" }}, }; ::uint8_t* XmlExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.XmlExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.XmlExprOp op = 2 [json_name = "op"]; if (this->_internal_op() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_op(), target); } // string name = 3 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.XmlExpr.name"); target = stream->WriteStringMaybeAliased(3, _s, target); } // repeated .pg_query.Node named_args = 4 [json_name = "named_args"]; for (unsigned i = 0, n = static_cast(this->_internal_named_args_size()); i < n; i++) { const auto& repfield = this->_internal_named_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node arg_names = 5 [json_name = "arg_names"]; for (unsigned i = 0, n = static_cast(this->_internal_arg_names_size()); i < n; i++) { const auto& repfield = this->_internal_arg_names().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node args = 6 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.XmlOptionType xmloption = 7 [json_name = "xmloption"]; if (this->_internal_xmloption() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 7, this->_internal_xmloption(), target); } // bool indent = 8 [json_name = "indent"]; if (this->_internal_indent() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 8, this->_internal_indent(), target); } // uint32 type = 9 [json_name = "type"]; if (this->_internal_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 9, this->_internal_type(), target); } // int32 typmod = 10 [json_name = "typmod"]; if (this->_internal_typmod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<10>( stream, this->_internal_typmod(), target); } // int32 location = 11 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<11>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_named_args()) { total_size += ::google::protobuf::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->_internal_arg_names()) { total_size += ::google::protobuf::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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string name = 3 [json_name = "name"]; if (!this->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.XmlExprOp op = 2 [json_name = "op"]; if (this->_internal_op() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_op()); } // .pg_query.XmlOptionType xmloption = 7 [json_name = "xmloption"]; if (this->_internal_xmloption() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_xmloption()); } // bool indent = 8 [json_name = "indent"]; if (this->_internal_indent() != 0) { total_size += 2; } // uint32 type = 9 [json_name = "type"]; if (this->_internal_type() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_type()); } // int32 typmod = 10 [json_name = "typmod"]; if (this->_internal_typmod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_typmod()); } // int32 location = 11 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData XmlExpr::_class_data_ = { XmlExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* XmlExpr::GetClassData() const { return &_class_data_; } void XmlExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.XmlExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_named_args()->MergeFrom( from._internal_named_args()); _this->_internal_mutable_arg_names()->MergeFrom( from._internal_arg_names()); _this->_internal_mutable_args()->MergeFrom( from._internal_args()); if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_op() != 0) { _this->_internal_set_op(from._internal_op()); } if (from._internal_xmloption() != 0) { _this->_internal_set_xmloption(from._internal_xmloption()); } if (from._internal_indent() != 0) { _this->_internal_set_indent(from._internal_indent()); } if (from._internal_type() != 0) { _this->_internal_set_type(from._internal_type()); } if (from._internal_typmod() != 0) { _this->_internal_set_typmod(from._internal_typmod()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void XmlExpr::CopyFrom(const XmlExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.XmlExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool XmlExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* XmlExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void XmlExpr::InternalSwap(XmlExpr* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.named_args_.InternalSwap(&other->_impl_.named_args_); _impl_.arg_names_.InternalSwap(&other->_impl_.arg_names_); _impl_.args_.InternalSwap(&other->_impl_.args_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.location_) + sizeof(XmlExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(XmlExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata XmlExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[50]); } // =================================================================== class JsonFormat::_Internal { public: }; JsonFormat::JsonFormat(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonFormat) } JsonFormat::JsonFormat( ::google::protobuf::Arena* arena, const JsonFormat& from) : JsonFormat(arena) { MergeFrom(from); } inline PROTOBUF_NDEBUG_INLINE JsonFormat::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonFormat::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, format_type_), 0, offsetof(Impl_, location_) - offsetof(Impl_, format_type_) + sizeof(Impl_::location_)); } JsonFormat::~JsonFormat() { // @@protoc_insertion_point(destructor:pg_query.JsonFormat) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonFormat::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonFormat::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonFormat) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; ::memset(&_impl_.format_type_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.format_type_)) + sizeof(_impl_.location_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonFormat::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 0, 0, 2> JsonFormat::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_JsonFormat_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.JsonFormatType format_type = 1 [json_name = "format_type"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonFormat, _impl_.format_type_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(JsonFormat, _impl_.format_type_)}}, // .pg_query.JsonEncoding encoding = 2 [json_name = "encoding"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonFormat, _impl_.encoding_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(JsonFormat, _impl_.encoding_)}}, // int32 location = 3 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonFormat, _impl_.location_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(JsonFormat, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.JsonFormatType format_type = 1 [json_name = "format_type"]; {PROTOBUF_FIELD_OFFSET(JsonFormat, _impl_.format_type_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.JsonEncoding encoding = 2 [json_name = "encoding"]; {PROTOBUF_FIELD_OFFSET(JsonFormat, _impl_.encoding_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int32 location = 3 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonFormat, _impl_.location_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, // no aux_entries {{ }}, }; ::uint8_t* JsonFormat::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonFormat) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.JsonFormatType format_type = 1 [json_name = "format_type"]; if (this->_internal_format_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_format_type(), target); } // .pg_query.JsonEncoding encoding = 2 [json_name = "encoding"]; if (this->_internal_encoding() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_encoding(), target); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonFormat) return target; } ::size_t JsonFormat::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonFormat) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.JsonFormatType format_type = 1 [json_name = "format_type"]; if (this->_internal_format_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_format_type()); } // .pg_query.JsonEncoding encoding = 2 [json_name = "encoding"]; if (this->_internal_encoding() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_encoding()); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonFormat::_class_data_ = { JsonFormat::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonFormat::GetClassData() const { return &_class_data_; } void JsonFormat::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonFormat) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (from._internal_format_type() != 0) { _this->_internal_set_format_type(from._internal_format_type()); } if (from._internal_encoding() != 0) { _this->_internal_set_encoding(from._internal_encoding()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonFormat::CopyFrom(const JsonFormat& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonFormat) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonFormat::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonFormat::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonFormat::InternalSwap(JsonFormat* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonFormat, _impl_.location_) + sizeof(JsonFormat::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonFormat, _impl_.format_type_)>( reinterpret_cast(&_impl_.format_type_), reinterpret_cast(&other->_impl_.format_type_)); } ::google::protobuf::Metadata JsonFormat::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[51]); } // =================================================================== class JsonReturning::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonReturning, _impl_._has_bits_); static const ::pg_query::JsonFormat& format(const JsonReturning* msg); static void set_has_format(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::JsonFormat& JsonReturning::_Internal::format(const JsonReturning* msg) { return *msg->_impl_.format_; } JsonReturning::JsonReturning(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonReturning) } inline PROTOBUF_NDEBUG_INLINE JsonReturning::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} JsonReturning::JsonReturning( ::google::protobuf::Arena* arena, const JsonReturning& from) : ::google::protobuf::Message(arena) { JsonReturning* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.format_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::JsonFormat>(arena, *from._impl_.format_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, typid_), reinterpret_cast(&from._impl_) + offsetof(Impl_, typid_), offsetof(Impl_, typmod_) - offsetof(Impl_, typid_) + sizeof(Impl_::typmod_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonReturning) } inline PROTOBUF_NDEBUG_INLINE JsonReturning::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonReturning::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, format_), 0, offsetof(Impl_, typmod_) - offsetof(Impl_, format_) + sizeof(Impl_::typmod_)); } JsonReturning::~JsonReturning() { // @@protoc_insertion_point(destructor:pg_query.JsonReturning) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonReturning::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.format_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonReturning::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonReturning) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.format_ != nullptr); _impl_.format_->Clear(); } ::memset(&_impl_.typid_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.typmod_) - reinterpret_cast(&_impl_.typid_)) + sizeof(_impl_.typmod_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonReturning::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> JsonReturning::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonReturning, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonReturning_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.JsonFormat format = 1 [json_name = "format"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonReturning, _impl_.format_)}}, // uint32 typid = 2 [json_name = "typid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonReturning, _impl_.typid_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(JsonReturning, _impl_.typid_)}}, // int32 typmod = 3 [json_name = "typmod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonReturning, _impl_.typmod_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(JsonReturning, _impl_.typmod_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.JsonFormat format = 1 [json_name = "format"]; {PROTOBUF_FIELD_OFFSET(JsonReturning, _impl_.format_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 typid = 2 [json_name = "typid"]; {PROTOBUF_FIELD_OFFSET(JsonReturning, _impl_.typid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 typmod = 3 [json_name = "typmod"]; {PROTOBUF_FIELD_OFFSET(JsonReturning, _impl_.typmod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::JsonFormat>()}, }}, {{ }}, }; ::uint8_t* JsonReturning::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonReturning) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.JsonFormat format = 1 [json_name = "format"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::format(this), _Internal::format(this).GetCachedSize(), target, stream); } // uint32 typid = 2 [json_name = "typid"]; if (this->_internal_typid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_typid(), target); } // int32 typmod = 3 [json_name = "typmod"]; if (this->_internal_typmod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_typmod(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonReturning) return target; } ::size_t JsonReturning::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonReturning) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.JsonFormat format = 1 [json_name = "format"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.format_); } // uint32 typid = 2 [json_name = "typid"]; if (this->_internal_typid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_typid()); } // int32 typmod = 3 [json_name = "typmod"]; if (this->_internal_typmod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_typmod()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonReturning::_class_data_ = { JsonReturning::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonReturning::GetClassData() const { return &_class_data_; } void JsonReturning::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonReturning) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_format()->::pg_query::JsonFormat::MergeFrom( from._internal_format()); } if (from._internal_typid() != 0) { _this->_internal_set_typid(from._internal_typid()); } if (from._internal_typmod() != 0) { _this->_internal_set_typmod(from._internal_typmod()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonReturning::CopyFrom(const JsonReturning& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonReturning) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonReturning::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonReturning::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonReturning::InternalSwap(JsonReturning* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonReturning, _impl_.typmod_) + sizeof(JsonReturning::_impl_.typmod_) - PROTOBUF_FIELD_OFFSET(JsonReturning, _impl_.format_)>( reinterpret_cast(&_impl_.format_), reinterpret_cast(&other->_impl_.format_)); } ::google::protobuf::Metadata JsonReturning::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[52]); } // =================================================================== class JsonValueExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonValueExpr, _impl_._has_bits_); static const ::pg_query::Node& raw_expr(const JsonValueExpr* msg); static void set_has_raw_expr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& formatted_expr(const JsonValueExpr* msg); static void set_has_formatted_expr(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::JsonFormat& format(const JsonValueExpr* msg); static void set_has_format(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::Node& JsonValueExpr::_Internal::raw_expr(const JsonValueExpr* msg) { return *msg->_impl_.raw_expr_; } const ::pg_query::Node& JsonValueExpr::_Internal::formatted_expr(const JsonValueExpr* msg) { return *msg->_impl_.formatted_expr_; } const ::pg_query::JsonFormat& JsonValueExpr::_Internal::format(const JsonValueExpr* msg) { return *msg->_impl_.format_; } JsonValueExpr::JsonValueExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonValueExpr) } inline PROTOBUF_NDEBUG_INLINE JsonValueExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} JsonValueExpr::JsonValueExpr( ::google::protobuf::Arena* arena, const JsonValueExpr& from) : ::google::protobuf::Message(arena) { JsonValueExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.raw_expr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.raw_expr_) : nullptr; _impl_.formatted_expr_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.formatted_expr_) : nullptr; _impl_.format_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::JsonFormat>(arena, *from._impl_.format_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.JsonValueExpr) } inline PROTOBUF_NDEBUG_INLINE JsonValueExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonValueExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, raw_expr_), 0, offsetof(Impl_, format_) - offsetof(Impl_, raw_expr_) + sizeof(Impl_::format_)); } JsonValueExpr::~JsonValueExpr() { // @@protoc_insertion_point(destructor:pg_query.JsonValueExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonValueExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.raw_expr_; delete _impl_.formatted_expr_; delete _impl_.format_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonValueExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonValueExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.raw_expr_ != nullptr); _impl_.raw_expr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.formatted_expr_ != nullptr); _impl_.formatted_expr_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.format_ != nullptr); _impl_.format_->Clear(); } } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonValueExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 3, 0, 2> JsonValueExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonValueExpr, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonValueExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node raw_expr = 1 [json_name = "raw_expr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonValueExpr, _impl_.raw_expr_)}}, // .pg_query.Node formatted_expr = 2 [json_name = "formatted_expr"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(JsonValueExpr, _impl_.formatted_expr_)}}, // .pg_query.JsonFormat format = 3 [json_name = "format"]; {::_pbi::TcParser::FastMtS1, {26, 2, 2, PROTOBUF_FIELD_OFFSET(JsonValueExpr, _impl_.format_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node raw_expr = 1 [json_name = "raw_expr"]; {PROTOBUF_FIELD_OFFSET(JsonValueExpr, _impl_.raw_expr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node formatted_expr = 2 [json_name = "formatted_expr"]; {PROTOBUF_FIELD_OFFSET(JsonValueExpr, _impl_.formatted_expr_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonFormat format = 3 [json_name = "format"]; {PROTOBUF_FIELD_OFFSET(JsonValueExpr, _impl_.format_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonFormat>()}, }}, {{ }}, }; ::uint8_t* JsonValueExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonValueExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node raw_expr = 1 [json_name = "raw_expr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::raw_expr(this), _Internal::raw_expr(this).GetCachedSize(), target, stream); } // .pg_query.Node formatted_expr = 2 [json_name = "formatted_expr"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::formatted_expr(this), _Internal::formatted_expr(this).GetCachedSize(), target, stream); } // .pg_query.JsonFormat format = 3 [json_name = "format"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::format(this), _Internal::format(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonValueExpr) return target; } ::size_t JsonValueExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonValueExpr) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.Node raw_expr = 1 [json_name = "raw_expr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.raw_expr_); } // .pg_query.Node formatted_expr = 2 [json_name = "formatted_expr"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.formatted_expr_); } // .pg_query.JsonFormat format = 3 [json_name = "format"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.format_); } } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonValueExpr::_class_data_ = { JsonValueExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonValueExpr::GetClassData() const { return &_class_data_; } void JsonValueExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonValueExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_raw_expr()->::pg_query::Node::MergeFrom( from._internal_raw_expr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_formatted_expr()->::pg_query::Node::MergeFrom( from._internal_formatted_expr()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_format()->::pg_query::JsonFormat::MergeFrom( from._internal_format()); } } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonValueExpr::CopyFrom(const JsonValueExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonValueExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonValueExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonValueExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonValueExpr::InternalSwap(JsonValueExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonValueExpr, _impl_.format_) + sizeof(JsonValueExpr::_impl_.format_) - PROTOBUF_FIELD_OFFSET(JsonValueExpr, _impl_.raw_expr_)>( reinterpret_cast(&_impl_.raw_expr_), reinterpret_cast(&other->_impl_.raw_expr_)); } ::google::protobuf::Metadata JsonValueExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[53]); } // =================================================================== class JsonConstructorExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const JsonConstructorExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& func(const JsonConstructorExpr* msg); static void set_has_func(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& coercion(const JsonConstructorExpr* msg); static void set_has_coercion(HasBits* has_bits) { (*has_bits)[0] |= 4u; } static const ::pg_query::JsonReturning& returning(const JsonConstructorExpr* msg); static void set_has_returning(HasBits* has_bits) { (*has_bits)[0] |= 8u; } }; const ::pg_query::Node& JsonConstructorExpr::_Internal::xpr(const JsonConstructorExpr* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& JsonConstructorExpr::_Internal::func(const JsonConstructorExpr* msg) { return *msg->_impl_.func_; } const ::pg_query::Node& JsonConstructorExpr::_Internal::coercion(const JsonConstructorExpr* msg) { return *msg->_impl_.coercion_; } const ::pg_query::JsonReturning& JsonConstructorExpr::_Internal::returning(const JsonConstructorExpr* msg) { return *msg->_impl_.returning_; } JsonConstructorExpr::JsonConstructorExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonConstructorExpr) } inline PROTOBUF_NDEBUG_INLINE JsonConstructorExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, args_{visibility, arena, from.args_} {} JsonConstructorExpr::JsonConstructorExpr( ::google::protobuf::Arena* arena, const JsonConstructorExpr& from) : ::google::protobuf::Message(arena) { JsonConstructorExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.func_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.func_) : nullptr; _impl_.coercion_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.coercion_) : nullptr; _impl_.returning_ = (cached_has_bits & 0x00000008u) ? CreateMaybeMessage<::pg_query::JsonReturning>(arena, *from._impl_.returning_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, type_), reinterpret_cast(&from._impl_) + offsetof(Impl_, type_), offsetof(Impl_, location_) - offsetof(Impl_, type_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonConstructorExpr) } inline PROTOBUF_NDEBUG_INLINE JsonConstructorExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, args_{visibility, arena} {} inline void JsonConstructorExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } JsonConstructorExpr::~JsonConstructorExpr() { // @@protoc_insertion_point(destructor:pg_query.JsonConstructorExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonConstructorExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.func_; delete _impl_.coercion_; delete _impl_.returning_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonConstructorExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonConstructorExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.func_ != nullptr); _impl_.func_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.coercion_ != nullptr); _impl_.coercion_->Clear(); } if (cached_has_bits & 0x00000008u) { ABSL_DCHECK(_impl_.returning_ != nullptr); _impl_.returning_->Clear(); } } ::memset(&_impl_.type_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.type_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonConstructorExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 9, 5, 0, 2> JsonConstructorExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_._has_bits_), 0, // no _extensions_ 9, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294966784, // skipmap offsetof(decltype(_table_), field_entries), 9, // num_field_entries 5, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonConstructorExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.xpr_)}}, // .pg_query.JsonConstructorType type = 2 [json_name = "type"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonConstructorExpr, _impl_.type_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.type_)}}, // repeated .pg_query.Node args = 3 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.args_)}}, // .pg_query.Node func = 4 [json_name = "func"]; {::_pbi::TcParser::FastMtS1, {34, 1, 2, PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.func_)}}, // .pg_query.Node coercion = 5 [json_name = "coercion"]; {::_pbi::TcParser::FastMtS1, {42, 2, 3, PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.coercion_)}}, // .pg_query.JsonReturning returning = 6 [json_name = "returning"]; {::_pbi::TcParser::FastMtS1, {50, 3, 4, PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.returning_)}}, // bool absent_on_null = 7 [json_name = "absent_on_null"]; {::_pbi::TcParser::SingularVarintNoZag1(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.absent_on_null_)}}, // bool unique = 8 [json_name = "unique"]; {::_pbi::TcParser::SingularVarintNoZag1(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.unique_)}}, // int32 location = 9 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonConstructorExpr, _impl_.location_), 63>(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonConstructorType type = 2 [json_name = "type"]; {PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node args = 3 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.args_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node func = 4 [json_name = "func"]; {PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.func_), _Internal::kHasBitsOffset + 1, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node coercion = 5 [json_name = "coercion"]; {PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.coercion_), _Internal::kHasBitsOffset + 2, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonReturning returning = 6 [json_name = "returning"]; {PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.returning_), _Internal::kHasBitsOffset + 3, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool absent_on_null = 7 [json_name = "absent_on_null"]; {PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.absent_on_null_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool unique = 8 [json_name = "unique"]; {PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.unique_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 9 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonReturning>()}, }}, {{ }}, }; ::uint8_t* JsonConstructorExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonConstructorExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.JsonConstructorType type = 2 [json_name = "type"]; if (this->_internal_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_type(), target); } // repeated .pg_query.Node args = 3 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node func = 4 [json_name = "func"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::func(this), _Internal::func(this).GetCachedSize(), target, stream); } // .pg_query.Node coercion = 5 [json_name = "coercion"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::coercion(this), _Internal::coercion(this).GetCachedSize(), target, stream); } // .pg_query.JsonReturning returning = 6 [json_name = "returning"]; if (cached_has_bits & 0x00000008u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::returning(this), _Internal::returning(this).GetCachedSize(), target, stream); } // bool absent_on_null = 7 [json_name = "absent_on_null"]; if (this->_internal_absent_on_null() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 7, this->_internal_absent_on_null(), target); } // bool unique = 8 [json_name = "unique"]; if (this->_internal_unique() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 8, this->_internal_unique(), target); } // int32 location = 9 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<9>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonConstructorExpr) return target; } ::size_t JsonConstructorExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonConstructorExpr) ::size_t total_size = 0; ::uint32_t 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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node func = 4 [json_name = "func"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.func_); } // .pg_query.Node coercion = 5 [json_name = "coercion"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.coercion_); } // .pg_query.JsonReturning returning = 6 [json_name = "returning"]; if (cached_has_bits & 0x00000008u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.returning_); } } // .pg_query.JsonConstructorType type = 2 [json_name = "type"]; if (this->_internal_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_type()); } // bool absent_on_null = 7 [json_name = "absent_on_null"]; if (this->_internal_absent_on_null() != 0) { total_size += 2; } // bool unique = 8 [json_name = "unique"]; if (this->_internal_unique() != 0) { total_size += 2; } // int32 location = 9 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonConstructorExpr::_class_data_ = { JsonConstructorExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonConstructorExpr::GetClassData() const { return &_class_data_; } void JsonConstructorExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonConstructorExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_func()->::pg_query::Node::MergeFrom( from._internal_func()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_coercion()->::pg_query::Node::MergeFrom( from._internal_coercion()); } if (cached_has_bits & 0x00000008u) { _this->_internal_mutable_returning()->::pg_query::JsonReturning::MergeFrom( from._internal_returning()); } } if (from._internal_type() != 0) { _this->_internal_set_type(from._internal_type()); } if (from._internal_absent_on_null() != 0) { _this->_internal_set_absent_on_null(from._internal_absent_on_null()); } if (from._internal_unique() != 0) { _this->_internal_set_unique(from._internal_unique()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonConstructorExpr::CopyFrom(const JsonConstructorExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonConstructorExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonConstructorExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonConstructorExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonConstructorExpr::InternalSwap(JsonConstructorExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.args_.InternalSwap(&other->_impl_.args_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.location_) + sizeof(JsonConstructorExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonConstructorExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata JsonConstructorExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[54]); } // =================================================================== class JsonIsPredicate::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonIsPredicate, _impl_._has_bits_); static const ::pg_query::Node& expr(const JsonIsPredicate* msg); static void set_has_expr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::JsonFormat& format(const JsonIsPredicate* msg); static void set_has_format(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& JsonIsPredicate::_Internal::expr(const JsonIsPredicate* msg) { return *msg->_impl_.expr_; } const ::pg_query::JsonFormat& JsonIsPredicate::_Internal::format(const JsonIsPredicate* msg) { return *msg->_impl_.format_; } JsonIsPredicate::JsonIsPredicate(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonIsPredicate) } inline PROTOBUF_NDEBUG_INLINE JsonIsPredicate::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} JsonIsPredicate::JsonIsPredicate( ::google::protobuf::Arena* arena, const JsonIsPredicate& from) : ::google::protobuf::Message(arena) { JsonIsPredicate* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.expr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.expr_) : nullptr; _impl_.format_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::JsonFormat>(arena, *from._impl_.format_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, item_type_), reinterpret_cast(&from._impl_) + offsetof(Impl_, item_type_), offsetof(Impl_, location_) - offsetof(Impl_, item_type_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonIsPredicate) } inline PROTOBUF_NDEBUG_INLINE JsonIsPredicate::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonIsPredicate::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, expr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, expr_) + sizeof(Impl_::location_)); } JsonIsPredicate::~JsonIsPredicate() { // @@protoc_insertion_point(destructor:pg_query.JsonIsPredicate) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonIsPredicate::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.expr_; delete _impl_.format_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonIsPredicate::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonIsPredicate) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.expr_ != nullptr); _impl_.expr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.format_ != nullptr); _impl_.format_->Clear(); } } ::memset(&_impl_.item_type_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.item_type_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonIsPredicate::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 0, 2> JsonIsPredicate::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonIsPredicate, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonIsPredicate_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node expr = 1 [json_name = "expr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonIsPredicate, _impl_.expr_)}}, // .pg_query.JsonFormat format = 2 [json_name = "format"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(JsonIsPredicate, _impl_.format_)}}, // .pg_query.JsonValueType item_type = 3 [json_name = "item_type"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonIsPredicate, _impl_.item_type_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(JsonIsPredicate, _impl_.item_type_)}}, // bool unique_keys = 4 [json_name = "unique_keys"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(JsonIsPredicate, _impl_.unique_keys_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonIsPredicate, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(JsonIsPredicate, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node expr = 1 [json_name = "expr"]; {PROTOBUF_FIELD_OFFSET(JsonIsPredicate, _impl_.expr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonFormat format = 2 [json_name = "format"]; {PROTOBUF_FIELD_OFFSET(JsonIsPredicate, _impl_.format_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonValueType item_type = 3 [json_name = "item_type"]; {PROTOBUF_FIELD_OFFSET(JsonIsPredicate, _impl_.item_type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool unique_keys = 4 [json_name = "unique_keys"]; {PROTOBUF_FIELD_OFFSET(JsonIsPredicate, _impl_.unique_keys_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonIsPredicate, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonFormat>()}, }}, {{ }}, }; ::uint8_t* JsonIsPredicate::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonIsPredicate) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node expr = 1 [json_name = "expr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::expr(this), _Internal::expr(this).GetCachedSize(), target, stream); } // .pg_query.JsonFormat format = 2 [json_name = "format"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::format(this), _Internal::format(this).GetCachedSize(), target, stream); } // .pg_query.JsonValueType item_type = 3 [json_name = "item_type"]; if (this->_internal_item_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_item_type(), target); } // bool unique_keys = 4 [json_name = "unique_keys"]; if (this->_internal_unique_keys() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_unique_keys(), target); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonIsPredicate) return target; } ::size_t JsonIsPredicate::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonIsPredicate) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node expr = 1 [json_name = "expr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.expr_); } // .pg_query.JsonFormat format = 2 [json_name = "format"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.format_); } } // .pg_query.JsonValueType item_type = 3 [json_name = "item_type"]; if (this->_internal_item_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_item_type()); } // bool unique_keys = 4 [json_name = "unique_keys"]; if (this->_internal_unique_keys() != 0) { total_size += 2; } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonIsPredicate::_class_data_ = { JsonIsPredicate::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonIsPredicate::GetClassData() const { return &_class_data_; } void JsonIsPredicate::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonIsPredicate) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_expr()->::pg_query::Node::MergeFrom( from._internal_expr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_format()->::pg_query::JsonFormat::MergeFrom( from._internal_format()); } } if (from._internal_item_type() != 0) { _this->_internal_set_item_type(from._internal_item_type()); } if (from._internal_unique_keys() != 0) { _this->_internal_set_unique_keys(from._internal_unique_keys()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonIsPredicate::CopyFrom(const JsonIsPredicate& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonIsPredicate) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonIsPredicate::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonIsPredicate::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonIsPredicate::InternalSwap(JsonIsPredicate* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonIsPredicate, _impl_.location_) + sizeof(JsonIsPredicate::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonIsPredicate, _impl_.expr_)>( reinterpret_cast(&_impl_.expr_), reinterpret_cast(&other->_impl_.expr_)); } ::google::protobuf::Metadata JsonIsPredicate::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[55]); } // =================================================================== class JsonBehavior::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonBehavior, _impl_._has_bits_); static const ::pg_query::Node& expr(const JsonBehavior* msg); static void set_has_expr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& JsonBehavior::_Internal::expr(const JsonBehavior* msg) { return *msg->_impl_.expr_; } JsonBehavior::JsonBehavior(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonBehavior) } inline PROTOBUF_NDEBUG_INLINE JsonBehavior::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} JsonBehavior::JsonBehavior( ::google::protobuf::Arena* arena, const JsonBehavior& from) : ::google::protobuf::Message(arena) { JsonBehavior* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.expr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.expr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, btype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, btype_), offsetof(Impl_, location_) - offsetof(Impl_, btype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonBehavior) } inline PROTOBUF_NDEBUG_INLINE JsonBehavior::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonBehavior::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, expr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, expr_) + sizeof(Impl_::location_)); } JsonBehavior::~JsonBehavior() { // @@protoc_insertion_point(destructor:pg_query.JsonBehavior) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonBehavior::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.expr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonBehavior::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonBehavior) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.expr_ != nullptr); _impl_.expr_->Clear(); } ::memset(&_impl_.btype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.btype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonBehavior::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 1, 0, 2> JsonBehavior::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonBehavior, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonBehavior_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 4 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonBehavior, _impl_.location_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(JsonBehavior, _impl_.location_)}}, // .pg_query.JsonBehaviorType btype = 1 [json_name = "btype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonBehavior, _impl_.btype_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(JsonBehavior, _impl_.btype_)}}, // .pg_query.Node expr = 2 [json_name = "expr"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(JsonBehavior, _impl_.expr_)}}, // bool coerce = 3 [json_name = "coerce"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(JsonBehavior, _impl_.coerce_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.JsonBehaviorType btype = 1 [json_name = "btype"]; {PROTOBUF_FIELD_OFFSET(JsonBehavior, _impl_.btype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.Node expr = 2 [json_name = "expr"]; {PROTOBUF_FIELD_OFFSET(JsonBehavior, _impl_.expr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool coerce = 3 [json_name = "coerce"]; {PROTOBUF_FIELD_OFFSET(JsonBehavior, _impl_.coerce_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 4 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonBehavior, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* JsonBehavior::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonBehavior) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.JsonBehaviorType btype = 1 [json_name = "btype"]; if (this->_internal_btype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_btype(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node expr = 2 [json_name = "expr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::expr(this), _Internal::expr(this).GetCachedSize(), target, stream); } // bool coerce = 3 [json_name = "coerce"]; if (this->_internal_coerce() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_coerce(), target); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonBehavior) return target; } ::size_t JsonBehavior::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonBehavior) ::size_t total_size = 0; ::uint32_t 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"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.expr_); } // .pg_query.JsonBehaviorType btype = 1 [json_name = "btype"]; if (this->_internal_btype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_btype()); } // bool coerce = 3 [json_name = "coerce"]; if (this->_internal_coerce() != 0) { total_size += 2; } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonBehavior::_class_data_ = { JsonBehavior::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonBehavior::GetClassData() const { return &_class_data_; } void JsonBehavior::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonBehavior) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_expr()->::pg_query::Node::MergeFrom( from._internal_expr()); } if (from._internal_btype() != 0) { _this->_internal_set_btype(from._internal_btype()); } if (from._internal_coerce() != 0) { _this->_internal_set_coerce(from._internal_coerce()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonBehavior::CopyFrom(const JsonBehavior& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonBehavior) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonBehavior::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonBehavior::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonBehavior::InternalSwap(JsonBehavior* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonBehavior, _impl_.location_) + sizeof(JsonBehavior::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonBehavior, _impl_.expr_)>( reinterpret_cast(&_impl_.expr_), reinterpret_cast(&other->_impl_.expr_)); } ::google::protobuf::Metadata JsonBehavior::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[56]); } // =================================================================== class JsonExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const JsonExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& formatted_expr(const JsonExpr* msg); static void set_has_formatted_expr(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::JsonFormat& format(const JsonExpr* msg); static void set_has_format(HasBits* has_bits) { (*has_bits)[0] |= 4u; } static const ::pg_query::Node& path_spec(const JsonExpr* msg); static void set_has_path_spec(HasBits* has_bits) { (*has_bits)[0] |= 8u; } static const ::pg_query::JsonReturning& returning(const JsonExpr* msg); static void set_has_returning(HasBits* has_bits) { (*has_bits)[0] |= 16u; } static const ::pg_query::JsonBehavior& on_empty(const JsonExpr* msg); static void set_has_on_empty(HasBits* has_bits) { (*has_bits)[0] |= 32u; } static const ::pg_query::JsonBehavior& on_error(const JsonExpr* msg); static void set_has_on_error(HasBits* has_bits) { (*has_bits)[0] |= 64u; } }; const ::pg_query::Node& JsonExpr::_Internal::xpr(const JsonExpr* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& JsonExpr::_Internal::formatted_expr(const JsonExpr* msg) { return *msg->_impl_.formatted_expr_; } const ::pg_query::JsonFormat& JsonExpr::_Internal::format(const JsonExpr* msg) { return *msg->_impl_.format_; } const ::pg_query::Node& JsonExpr::_Internal::path_spec(const JsonExpr* msg) { return *msg->_impl_.path_spec_; } const ::pg_query::JsonReturning& JsonExpr::_Internal::returning(const JsonExpr* msg) { return *msg->_impl_.returning_; } const ::pg_query::JsonBehavior& JsonExpr::_Internal::on_empty(const JsonExpr* msg) { return *msg->_impl_.on_empty_; } const ::pg_query::JsonBehavior& JsonExpr::_Internal::on_error(const JsonExpr* msg) { return *msg->_impl_.on_error_; } JsonExpr::JsonExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonExpr) } inline PROTOBUF_NDEBUG_INLINE JsonExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, passing_names_{visibility, arena, from.passing_names_}, passing_values_{visibility, arena, from.passing_values_}, column_name_(arena, from.column_name_) {} JsonExpr::JsonExpr( ::google::protobuf::Arena* arena, const JsonExpr& from) : ::google::protobuf::Message(arena) { JsonExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.formatted_expr_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.formatted_expr_) : nullptr; _impl_.format_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::JsonFormat>(arena, *from._impl_.format_) : nullptr; _impl_.path_spec_ = (cached_has_bits & 0x00000008u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.path_spec_) : nullptr; _impl_.returning_ = (cached_has_bits & 0x00000010u) ? CreateMaybeMessage<::pg_query::JsonReturning>(arena, *from._impl_.returning_) : nullptr; _impl_.on_empty_ = (cached_has_bits & 0x00000020u) ? CreateMaybeMessage<::pg_query::JsonBehavior>(arena, *from._impl_.on_empty_) : nullptr; _impl_.on_error_ = (cached_has_bits & 0x00000040u) ? CreateMaybeMessage<::pg_query::JsonBehavior>(arena, *from._impl_.on_error_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, op_), reinterpret_cast(&from._impl_) + offsetof(Impl_, op_), offsetof(Impl_, location_) - offsetof(Impl_, op_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonExpr) } inline PROTOBUF_NDEBUG_INLINE JsonExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, passing_names_{visibility, arena}, passing_values_{visibility, arena}, column_name_(arena) {} inline void JsonExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } JsonExpr::~JsonExpr() { // @@protoc_insertion_point(destructor:pg_query.JsonExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.column_name_.Destroy(); delete _impl_.xpr_; delete _impl_.formatted_expr_; delete _impl_.format_; delete _impl_.path_spec_; delete _impl_.returning_; delete _impl_.on_empty_; delete _impl_.on_error_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.passing_names_.Clear(); _impl_.passing_values_.Clear(); _impl_.column_name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000007fu) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.formatted_expr_ != nullptr); _impl_.formatted_expr_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.format_ != nullptr); _impl_.format_->Clear(); } if (cached_has_bits & 0x00000008u) { ABSL_DCHECK(_impl_.path_spec_ != nullptr); _impl_.path_spec_->Clear(); } if (cached_has_bits & 0x00000010u) { ABSL_DCHECK(_impl_.returning_ != nullptr); _impl_.returning_->Clear(); } if (cached_has_bits & 0x00000020u) { ABSL_DCHECK(_impl_.on_empty_ != nullptr); _impl_.on_empty_->Clear(); } if (cached_has_bits & 0x00000040u) { ABSL_DCHECK(_impl_.on_error_ != nullptr); _impl_.on_error_->Clear(); } } ::memset(&_impl_.op_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.op_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<5, 17, 9, 53, 2> JsonExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_._has_bits_), 0, // no _extensions_ 17, 248, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294836224, // skipmap offsetof(decltype(_table_), field_entries), 17, // num_field_entries 9, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.xpr_)}}, // .pg_query.JsonExprOp op = 2 [json_name = "op"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonExpr, _impl_.op_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.op_)}}, // string column_name = 3 [json_name = "column_name"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.column_name_)}}, // .pg_query.Node formatted_expr = 4 [json_name = "formatted_expr"]; {::_pbi::TcParser::FastMtS1, {34, 1, 1, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.formatted_expr_)}}, // .pg_query.JsonFormat format = 5 [json_name = "format"]; {::_pbi::TcParser::FastMtS1, {42, 2, 2, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.format_)}}, // .pg_query.Node path_spec = 6 [json_name = "path_spec"]; {::_pbi::TcParser::FastMtS1, {50, 3, 3, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.path_spec_)}}, // .pg_query.JsonReturning returning = 7 [json_name = "returning"]; {::_pbi::TcParser::FastMtS1, {58, 4, 4, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.returning_)}}, // repeated .pg_query.Node passing_names = 8 [json_name = "passing_names"]; {::_pbi::TcParser::FastMtR1, {66, 63, 5, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.passing_names_)}}, // repeated .pg_query.Node passing_values = 9 [json_name = "passing_values"]; {::_pbi::TcParser::FastMtR1, {74, 63, 6, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.passing_values_)}}, // .pg_query.JsonBehavior on_empty = 10 [json_name = "on_empty"]; {::_pbi::TcParser::FastMtS1, {82, 5, 7, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.on_empty_)}}, // .pg_query.JsonBehavior on_error = 11 [json_name = "on_error"]; {::_pbi::TcParser::FastMtS1, {90, 6, 8, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.on_error_)}}, // bool use_io_coercion = 12 [json_name = "use_io_coercion"]; {::_pbi::TcParser::SingularVarintNoZag1(), {96, 63, 0, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.use_io_coercion_)}}, // bool use_json_coercion = 13 [json_name = "use_json_coercion"]; {::_pbi::TcParser::SingularVarintNoZag1(), {104, 63, 0, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.use_json_coercion_)}}, // .pg_query.JsonWrapper wrapper = 14 [json_name = "wrapper"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonExpr, _impl_.wrapper_), 63>(), {112, 63, 0, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.wrapper_)}}, // bool omit_quotes = 15 [json_name = "omit_quotes"]; {::_pbi::TcParser::SingularVarintNoZag1(), {120, 63, 0, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.omit_quotes_)}}, // uint32 collation = 16 [json_name = "collation"]; {::_pbi::TcParser::FastV32S2, {384, 63, 0, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.collation_)}}, // int32 location = 17 [json_name = "location"]; {::_pbi::TcParser::FastV32S2, {392, 63, 0, PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonExprOp op = 2 [json_name = "op"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.op_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // string column_name = 3 [json_name = "column_name"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.column_name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.Node formatted_expr = 4 [json_name = "formatted_expr"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.formatted_expr_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonFormat format = 5 [json_name = "format"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.format_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node path_spec = 6 [json_name = "path_spec"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.path_spec_), _Internal::kHasBitsOffset + 3, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonReturning returning = 7 [json_name = "returning"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.returning_), _Internal::kHasBitsOffset + 4, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node passing_names = 8 [json_name = "passing_names"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.passing_names_), -1, 5, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node passing_values = 9 [json_name = "passing_values"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.passing_values_), -1, 6, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonBehavior on_empty = 10 [json_name = "on_empty"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.on_empty_), _Internal::kHasBitsOffset + 5, 7, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonBehavior on_error = 11 [json_name = "on_error"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.on_error_), _Internal::kHasBitsOffset + 6, 8, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool use_io_coercion = 12 [json_name = "use_io_coercion"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.use_io_coercion_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool use_json_coercion = 13 [json_name = "use_json_coercion"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.use_json_coercion_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.JsonWrapper wrapper = 14 [json_name = "wrapper"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.wrapper_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool omit_quotes = 15 [json_name = "omit_quotes"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.omit_quotes_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // uint32 collation = 16 [json_name = "collation"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.collation_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 location = 17 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonFormat>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonReturning>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonBehavior>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonBehavior>()}, }}, {{ "\21\0\0\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "pg_query.JsonExpr" "column_name" }}, }; ::uint8_t* JsonExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.JsonExprOp op = 2 [json_name = "op"]; if (this->_internal_op() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_op(), target); } // string column_name = 3 [json_name = "column_name"]; if (!this->_internal_column_name().empty()) { const std::string& _s = this->_internal_column_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.JsonExpr.column_name"); target = stream->WriteStringMaybeAliased(3, _s, target); } // .pg_query.Node formatted_expr = 4 [json_name = "formatted_expr"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::formatted_expr(this), _Internal::formatted_expr(this).GetCachedSize(), target, stream); } // .pg_query.JsonFormat format = 5 [json_name = "format"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::format(this), _Internal::format(this).GetCachedSize(), target, stream); } // .pg_query.Node path_spec = 6 [json_name = "path_spec"]; if (cached_has_bits & 0x00000008u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::path_spec(this), _Internal::path_spec(this).GetCachedSize(), target, stream); } // .pg_query.JsonReturning returning = 7 [json_name = "returning"]; if (cached_has_bits & 0x00000010u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 7, _Internal::returning(this), _Internal::returning(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node passing_names = 8 [json_name = "passing_names"]; for (unsigned i = 0, n = static_cast(this->_internal_passing_names_size()); i < n; i++) { const auto& repfield = this->_internal_passing_names().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(8, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node passing_values = 9 [json_name = "passing_values"]; for (unsigned i = 0, n = static_cast(this->_internal_passing_values_size()); i < n; i++) { const auto& repfield = this->_internal_passing_values().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(9, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.JsonBehavior on_empty = 10 [json_name = "on_empty"]; if (cached_has_bits & 0x00000020u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 10, _Internal::on_empty(this), _Internal::on_empty(this).GetCachedSize(), target, stream); } // .pg_query.JsonBehavior on_error = 11 [json_name = "on_error"]; if (cached_has_bits & 0x00000040u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 11, _Internal::on_error(this), _Internal::on_error(this).GetCachedSize(), target, stream); } // bool use_io_coercion = 12 [json_name = "use_io_coercion"]; if (this->_internal_use_io_coercion() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 12, this->_internal_use_io_coercion(), target); } // bool use_json_coercion = 13 [json_name = "use_json_coercion"]; if (this->_internal_use_json_coercion() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 13, this->_internal_use_json_coercion(), target); } // .pg_query.JsonWrapper wrapper = 14 [json_name = "wrapper"]; if (this->_internal_wrapper() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 14, this->_internal_wrapper(), target); } // bool omit_quotes = 15 [json_name = "omit_quotes"]; if (this->_internal_omit_quotes() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 15, this->_internal_omit_quotes(), target); } // uint32 collation = 16 [json_name = "collation"]; if (this->_internal_collation() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 16, this->_internal_collation(), target); } // int32 location = 17 [json_name = "location"]; if (this->_internal_location() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteInt32ToArray( 17, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonExpr) return target; } ::size_t JsonExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonExpr) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node passing_names = 8 [json_name = "passing_names"]; total_size += 1UL * this->_internal_passing_names_size(); for (const auto& msg : this->_internal_passing_names()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node passing_values = 9 [json_name = "passing_values"]; total_size += 1UL * this->_internal_passing_values_size(); for (const auto& msg : this->_internal_passing_values()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string column_name = 3 [json_name = "column_name"]; if (!this->_internal_column_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_column_name()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000007fu) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node formatted_expr = 4 [json_name = "formatted_expr"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.formatted_expr_); } // .pg_query.JsonFormat format = 5 [json_name = "format"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.format_); } // .pg_query.Node path_spec = 6 [json_name = "path_spec"]; if (cached_has_bits & 0x00000008u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.path_spec_); } // .pg_query.JsonReturning returning = 7 [json_name = "returning"]; if (cached_has_bits & 0x00000010u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.returning_); } // .pg_query.JsonBehavior on_empty = 10 [json_name = "on_empty"]; if (cached_has_bits & 0x00000020u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.on_empty_); } // .pg_query.JsonBehavior on_error = 11 [json_name = "on_error"]; if (cached_has_bits & 0x00000040u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.on_error_); } } // .pg_query.JsonExprOp op = 2 [json_name = "op"]; if (this->_internal_op() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_op()); } // bool use_io_coercion = 12 [json_name = "use_io_coercion"]; if (this->_internal_use_io_coercion() != 0) { total_size += 2; } // bool use_json_coercion = 13 [json_name = "use_json_coercion"]; if (this->_internal_use_json_coercion() != 0) { total_size += 2; } // bool omit_quotes = 15 [json_name = "omit_quotes"]; if (this->_internal_omit_quotes() != 0) { total_size += 2; } // .pg_query.JsonWrapper wrapper = 14 [json_name = "wrapper"]; if (this->_internal_wrapper() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_wrapper()); } // uint32 collation = 16 [json_name = "collation"]; if (this->_internal_collation() != 0) { total_size += 2 + ::_pbi::WireFormatLite::UInt32Size( this->_internal_collation()); } // int32 location = 17 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += 2 + ::_pbi::WireFormatLite::Int32Size( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonExpr::_class_data_ = { JsonExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonExpr::GetClassData() const { return &_class_data_; } void JsonExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_passing_names()->MergeFrom( from._internal_passing_names()); _this->_internal_mutable_passing_values()->MergeFrom( from._internal_passing_values()); if (!from._internal_column_name().empty()) { _this->_internal_set_column_name(from._internal_column_name()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x0000007fu) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_formatted_expr()->::pg_query::Node::MergeFrom( from._internal_formatted_expr()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_format()->::pg_query::JsonFormat::MergeFrom( from._internal_format()); } if (cached_has_bits & 0x00000008u) { _this->_internal_mutable_path_spec()->::pg_query::Node::MergeFrom( from._internal_path_spec()); } if (cached_has_bits & 0x00000010u) { _this->_internal_mutable_returning()->::pg_query::JsonReturning::MergeFrom( from._internal_returning()); } if (cached_has_bits & 0x00000020u) { _this->_internal_mutable_on_empty()->::pg_query::JsonBehavior::MergeFrom( from._internal_on_empty()); } if (cached_has_bits & 0x00000040u) { _this->_internal_mutable_on_error()->::pg_query::JsonBehavior::MergeFrom( from._internal_on_error()); } } if (from._internal_op() != 0) { _this->_internal_set_op(from._internal_op()); } if (from._internal_use_io_coercion() != 0) { _this->_internal_set_use_io_coercion(from._internal_use_io_coercion()); } if (from._internal_use_json_coercion() != 0) { _this->_internal_set_use_json_coercion(from._internal_use_json_coercion()); } if (from._internal_omit_quotes() != 0) { _this->_internal_set_omit_quotes(from._internal_omit_quotes()); } if (from._internal_wrapper() != 0) { _this->_internal_set_wrapper(from._internal_wrapper()); } if (from._internal_collation() != 0) { _this->_internal_set_collation(from._internal_collation()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonExpr::CopyFrom(const JsonExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonExpr::InternalSwap(JsonExpr* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.passing_names_.InternalSwap(&other->_impl_.passing_names_); _impl_.passing_values_.InternalSwap(&other->_impl_.passing_values_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.column_name_, &other->_impl_.column_name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.location_) + sizeof(JsonExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata JsonExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[57]); } // =================================================================== class JsonTablePath::_Internal { public: }; JsonTablePath::JsonTablePath(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonTablePath) } inline PROTOBUF_NDEBUG_INLINE JsonTablePath::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : name_(arena, from.name_), _cached_size_{0} {} JsonTablePath::JsonTablePath( ::google::protobuf::Arena* arena, const JsonTablePath& from) : ::google::protobuf::Message(arena) { JsonTablePath* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.JsonTablePath) } inline PROTOBUF_NDEBUG_INLINE JsonTablePath::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : name_(arena), _cached_size_{0} {} inline void JsonTablePath::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } JsonTablePath::~JsonTablePath() { // @@protoc_insertion_point(destructor:pg_query.JsonTablePath) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonTablePath::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonTablePath::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonTablePath) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.name_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonTablePath::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 35, 2> JsonTablePath::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_JsonTablePath_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string name = 1 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(JsonTablePath, _impl_.name_)}}, }}, {{ 65535, 65535 }}, {{ // string name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(JsonTablePath, _impl_.name_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, // no aux_entries {{ "\26\4\0\0\0\0\0\0" "pg_query.JsonTablePath" "name" }}, }; ::uint8_t* JsonTablePath::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonTablePath) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.JsonTablePath.name"); target = stream->WriteStringMaybeAliased(1, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonTablePath) return target; } ::size_t JsonTablePath::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonTablePath) ::size_t total_size = 0; ::uint32_t 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->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonTablePath::_class_data_ = { JsonTablePath::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonTablePath::GetClassData() const { return &_class_data_; } void JsonTablePath::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonTablePath) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonTablePath::CopyFrom(const JsonTablePath& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonTablePath) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonTablePath::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonTablePath::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonTablePath::InternalSwap(JsonTablePath* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); } ::google::protobuf::Metadata JsonTablePath::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[58]); } // =================================================================== class JsonTablePathScan::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_._has_bits_); static const ::pg_query::Node& plan(const JsonTablePathScan* msg); static void set_has_plan(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::JsonTablePath& path(const JsonTablePathScan* msg); static void set_has_path(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& child(const JsonTablePathScan* msg); static void set_has_child(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::Node& JsonTablePathScan::_Internal::plan(const JsonTablePathScan* msg) { return *msg->_impl_.plan_; } const ::pg_query::JsonTablePath& JsonTablePathScan::_Internal::path(const JsonTablePathScan* msg) { return *msg->_impl_.path_; } const ::pg_query::Node& JsonTablePathScan::_Internal::child(const JsonTablePathScan* msg) { return *msg->_impl_.child_; } JsonTablePathScan::JsonTablePathScan(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonTablePathScan) } inline PROTOBUF_NDEBUG_INLINE JsonTablePathScan::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} JsonTablePathScan::JsonTablePathScan( ::google::protobuf::Arena* arena, const JsonTablePathScan& from) : ::google::protobuf::Message(arena) { JsonTablePathScan* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.plan_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.plan_) : nullptr; _impl_.path_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::JsonTablePath>(arena, *from._impl_.path_) : nullptr; _impl_.child_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.child_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, error_on_error_), reinterpret_cast(&from._impl_) + offsetof(Impl_, error_on_error_), offsetof(Impl_, col_max_) - offsetof(Impl_, error_on_error_) + sizeof(Impl_::col_max_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonTablePathScan) } inline PROTOBUF_NDEBUG_INLINE JsonTablePathScan::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonTablePathScan::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, plan_), 0, offsetof(Impl_, col_max_) - offsetof(Impl_, plan_) + sizeof(Impl_::col_max_)); } JsonTablePathScan::~JsonTablePathScan() { // @@protoc_insertion_point(destructor:pg_query.JsonTablePathScan) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonTablePathScan::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.plan_; delete _impl_.path_; delete _impl_.child_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonTablePathScan::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonTablePathScan) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.plan_ != nullptr); _impl_.plan_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.path_ != nullptr); _impl_.path_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.child_ != nullptr); _impl_.child_->Clear(); } } ::memset(&_impl_.error_on_error_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.col_max_) - reinterpret_cast(&_impl_.error_on_error_)) + sizeof(_impl_.col_max_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonTablePathScan::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 3, 0, 2> JsonTablePathScan::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonTablePathScan_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node plan = 1 [json_name = "plan"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_.plan_)}}, // .pg_query.JsonTablePath path = 2 [json_name = "path"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_.path_)}}, // bool error_on_error = 3 [json_name = "errorOnError"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_.error_on_error_)}}, // .pg_query.Node child = 4 [json_name = "child"]; {::_pbi::TcParser::FastMtS1, {34, 2, 2, PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_.child_)}}, // int32 col_min = 5 [json_name = "colMin"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonTablePathScan, _impl_.col_min_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_.col_min_)}}, // int32 col_max = 6 [json_name = "colMax"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonTablePathScan, _impl_.col_max_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_.col_max_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node plan = 1 [json_name = "plan"]; {PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_.plan_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonTablePath path = 2 [json_name = "path"]; {PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_.path_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool error_on_error = 3 [json_name = "errorOnError"]; {PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_.error_on_error_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.Node child = 4 [json_name = "child"]; {PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_.child_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 col_min = 5 [json_name = "colMin"]; {PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_.col_min_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 col_max = 6 [json_name = "colMax"]; {PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_.col_max_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonTablePath>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* JsonTablePathScan::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonTablePathScan) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node plan = 1 [json_name = "plan"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::plan(this), _Internal::plan(this).GetCachedSize(), target, stream); } // .pg_query.JsonTablePath path = 2 [json_name = "path"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::path(this), _Internal::path(this).GetCachedSize(), target, stream); } // bool error_on_error = 3 [json_name = "errorOnError"]; if (this->_internal_error_on_error() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_error_on_error(), target); } // .pg_query.Node child = 4 [json_name = "child"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::child(this), _Internal::child(this).GetCachedSize(), target, stream); } // int32 col_min = 5 [json_name = "colMin"]; if (this->_internal_col_min() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_col_min(), target); } // int32 col_max = 6 [json_name = "colMax"]; if (this->_internal_col_max() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<6>( stream, this->_internal_col_max(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonTablePathScan) return target; } ::size_t JsonTablePathScan::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonTablePathScan) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.Node plan = 1 [json_name = "plan"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.plan_); } // .pg_query.JsonTablePath path = 2 [json_name = "path"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.path_); } // .pg_query.Node child = 4 [json_name = "child"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.child_); } } // bool error_on_error = 3 [json_name = "errorOnError"]; if (this->_internal_error_on_error() != 0) { total_size += 2; } // int32 col_min = 5 [json_name = "colMin"]; if (this->_internal_col_min() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_col_min()); } // int32 col_max = 6 [json_name = "colMax"]; if (this->_internal_col_max() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_col_max()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonTablePathScan::_class_data_ = { JsonTablePathScan::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonTablePathScan::GetClassData() const { return &_class_data_; } void JsonTablePathScan::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonTablePathScan) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_plan()->::pg_query::Node::MergeFrom( from._internal_plan()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_path()->::pg_query::JsonTablePath::MergeFrom( from._internal_path()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_child()->::pg_query::Node::MergeFrom( from._internal_child()); } } if (from._internal_error_on_error() != 0) { _this->_internal_set_error_on_error(from._internal_error_on_error()); } if (from._internal_col_min() != 0) { _this->_internal_set_col_min(from._internal_col_min()); } if (from._internal_col_max() != 0) { _this->_internal_set_col_max(from._internal_col_max()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonTablePathScan::CopyFrom(const JsonTablePathScan& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonTablePathScan) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonTablePathScan::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonTablePathScan::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonTablePathScan::InternalSwap(JsonTablePathScan* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_.col_max_) + sizeof(JsonTablePathScan::_impl_.col_max_) - PROTOBUF_FIELD_OFFSET(JsonTablePathScan, _impl_.plan_)>( reinterpret_cast(&_impl_.plan_), reinterpret_cast(&other->_impl_.plan_)); } ::google::protobuf::Metadata JsonTablePathScan::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[59]); } // =================================================================== class JsonTableSiblingJoin::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonTableSiblingJoin, _impl_._has_bits_); static const ::pg_query::Node& plan(const JsonTableSiblingJoin* msg); static void set_has_plan(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& lplan(const JsonTableSiblingJoin* msg); static void set_has_lplan(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& rplan(const JsonTableSiblingJoin* msg); static void set_has_rplan(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::Node& JsonTableSiblingJoin::_Internal::plan(const JsonTableSiblingJoin* msg) { return *msg->_impl_.plan_; } const ::pg_query::Node& JsonTableSiblingJoin::_Internal::lplan(const JsonTableSiblingJoin* msg) { return *msg->_impl_.lplan_; } const ::pg_query::Node& JsonTableSiblingJoin::_Internal::rplan(const JsonTableSiblingJoin* msg) { return *msg->_impl_.rplan_; } JsonTableSiblingJoin::JsonTableSiblingJoin(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonTableSiblingJoin) } inline PROTOBUF_NDEBUG_INLINE JsonTableSiblingJoin::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} JsonTableSiblingJoin::JsonTableSiblingJoin( ::google::protobuf::Arena* arena, const JsonTableSiblingJoin& from) : ::google::protobuf::Message(arena) { JsonTableSiblingJoin* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.plan_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.plan_) : nullptr; _impl_.lplan_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.lplan_) : nullptr; _impl_.rplan_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.rplan_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.JsonTableSiblingJoin) } inline PROTOBUF_NDEBUG_INLINE JsonTableSiblingJoin::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonTableSiblingJoin::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, plan_), 0, offsetof(Impl_, rplan_) - offsetof(Impl_, plan_) + sizeof(Impl_::rplan_)); } JsonTableSiblingJoin::~JsonTableSiblingJoin() { // @@protoc_insertion_point(destructor:pg_query.JsonTableSiblingJoin) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonTableSiblingJoin::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.plan_; delete _impl_.lplan_; delete _impl_.rplan_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonTableSiblingJoin::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonTableSiblingJoin) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.plan_ != nullptr); _impl_.plan_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.lplan_ != nullptr); _impl_.lplan_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.rplan_ != nullptr); _impl_.rplan_->Clear(); } } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonTableSiblingJoin::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 3, 0, 2> JsonTableSiblingJoin::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonTableSiblingJoin, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonTableSiblingJoin_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node plan = 1 [json_name = "plan"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonTableSiblingJoin, _impl_.plan_)}}, // .pg_query.Node lplan = 2 [json_name = "lplan"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(JsonTableSiblingJoin, _impl_.lplan_)}}, // .pg_query.Node rplan = 3 [json_name = "rplan"]; {::_pbi::TcParser::FastMtS1, {26, 2, 2, PROTOBUF_FIELD_OFFSET(JsonTableSiblingJoin, _impl_.rplan_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node plan = 1 [json_name = "plan"]; {PROTOBUF_FIELD_OFFSET(JsonTableSiblingJoin, _impl_.plan_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node lplan = 2 [json_name = "lplan"]; {PROTOBUF_FIELD_OFFSET(JsonTableSiblingJoin, _impl_.lplan_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node rplan = 3 [json_name = "rplan"]; {PROTOBUF_FIELD_OFFSET(JsonTableSiblingJoin, _impl_.rplan_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* JsonTableSiblingJoin::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonTableSiblingJoin) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node plan = 1 [json_name = "plan"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::plan(this), _Internal::plan(this).GetCachedSize(), target, stream); } // .pg_query.Node lplan = 2 [json_name = "lplan"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::lplan(this), _Internal::lplan(this).GetCachedSize(), target, stream); } // .pg_query.Node rplan = 3 [json_name = "rplan"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::rplan(this), _Internal::rplan(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonTableSiblingJoin) return target; } ::size_t JsonTableSiblingJoin::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonTableSiblingJoin) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.Node plan = 1 [json_name = "plan"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.plan_); } // .pg_query.Node lplan = 2 [json_name = "lplan"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.lplan_); } // .pg_query.Node rplan = 3 [json_name = "rplan"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.rplan_); } } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonTableSiblingJoin::_class_data_ = { JsonTableSiblingJoin::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonTableSiblingJoin::GetClassData() const { return &_class_data_; } void JsonTableSiblingJoin::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonTableSiblingJoin) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_plan()->::pg_query::Node::MergeFrom( from._internal_plan()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_lplan()->::pg_query::Node::MergeFrom( from._internal_lplan()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_rplan()->::pg_query::Node::MergeFrom( from._internal_rplan()); } } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonTableSiblingJoin::CopyFrom(const JsonTableSiblingJoin& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonTableSiblingJoin) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonTableSiblingJoin::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonTableSiblingJoin::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonTableSiblingJoin::InternalSwap(JsonTableSiblingJoin* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonTableSiblingJoin, _impl_.rplan_) + sizeof(JsonTableSiblingJoin::_impl_.rplan_) - PROTOBUF_FIELD_OFFSET(JsonTableSiblingJoin, _impl_.plan_)>( reinterpret_cast(&_impl_.plan_), reinterpret_cast(&other->_impl_.plan_)); } ::google::protobuf::Metadata JsonTableSiblingJoin::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[60]); } // =================================================================== class NullTest::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(NullTest, _impl_._has_bits_); static const ::pg_query::Node& xpr(const NullTest* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& arg(const NullTest* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& NullTest::_Internal::xpr(const NullTest* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& NullTest::_Internal::arg(const NullTest* msg) { return *msg->_impl_.arg_; } NullTest::NullTest(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.NullTest) } inline PROTOBUF_NDEBUG_INLINE NullTest::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} NullTest::NullTest( ::google::protobuf::Arena* arena, const NullTest& from) : ::google::protobuf::Message(arena) { NullTest* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, nulltesttype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, nulltesttype_), offsetof(Impl_, location_) - offsetof(Impl_, nulltesttype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.NullTest) } inline PROTOBUF_NDEBUG_INLINE NullTest::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void NullTest::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } NullTest::~NullTest() { // @@protoc_insertion_point(destructor:pg_query.NullTest) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void NullTest::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void NullTest::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.NullTest) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } } ::memset(&_impl_.nulltesttype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.nulltesttype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* NullTest::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 0, 2> NullTest::_table_ = { { PROTOBUF_FIELD_OFFSET(NullTest, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_NullTest_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(NullTest, _impl_.xpr_)}}, // .pg_query.Node arg = 2 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(NullTest, _impl_.arg_)}}, // .pg_query.NullTestType nulltesttype = 3 [json_name = "nulltesttype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NullTest, _impl_.nulltesttype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(NullTest, _impl_.nulltesttype_)}}, // bool argisrow = 4 [json_name = "argisrow"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(NullTest, _impl_.argisrow_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NullTest, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(NullTest, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(NullTest, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node arg = 2 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(NullTest, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.NullTestType nulltesttype = 3 [json_name = "nulltesttype"]; {PROTOBUF_FIELD_OFFSET(NullTest, _impl_.nulltesttype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool argisrow = 4 [json_name = "argisrow"]; {PROTOBUF_FIELD_OFFSET(NullTest, _impl_.argisrow_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(NullTest, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* NullTest::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.NullTest) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // .pg_query.NullTestType nulltesttype = 3 [json_name = "nulltesttype"]; if (this->_internal_nulltesttype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_nulltesttype(), target); } // bool argisrow = 4 [json_name = "argisrow"]; if (this->_internal_argisrow() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_argisrow(), target); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } } // .pg_query.NullTestType nulltesttype = 3 [json_name = "nulltesttype"]; if (this->_internal_nulltesttype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_nulltesttype()); } // bool argisrow = 4 [json_name = "argisrow"]; if (this->_internal_argisrow() != 0) { total_size += 2; } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData NullTest::_class_data_ = { NullTest::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* NullTest::GetClassData() const { return &_class_data_; } void NullTest::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.NullTest) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } } if (from._internal_nulltesttype() != 0) { _this->_internal_set_nulltesttype(from._internal_nulltesttype()); } if (from._internal_argisrow() != 0) { _this->_internal_set_argisrow(from._internal_argisrow()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void NullTest::CopyFrom(const NullTest& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.NullTest) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool NullTest::IsInitialized() const { return true; } ::_pbi::CachedSize* NullTest::AccessCachedSize() const { return &_impl_._cached_size_; } void NullTest::InternalSwap(NullTest* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(NullTest, _impl_.location_) + sizeof(NullTest::_impl_.location_) - PROTOBUF_FIELD_OFFSET(NullTest, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata NullTest::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[61]); } // =================================================================== class BooleanTest::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(BooleanTest, _impl_._has_bits_); static const ::pg_query::Node& xpr(const BooleanTest* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& arg(const BooleanTest* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& BooleanTest::_Internal::xpr(const BooleanTest* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& BooleanTest::_Internal::arg(const BooleanTest* msg) { return *msg->_impl_.arg_; } BooleanTest::BooleanTest(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.BooleanTest) } inline PROTOBUF_NDEBUG_INLINE BooleanTest::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} BooleanTest::BooleanTest( ::google::protobuf::Arena* arena, const BooleanTest& from) : ::google::protobuf::Message(arena) { BooleanTest* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, booltesttype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, booltesttype_), offsetof(Impl_, location_) - offsetof(Impl_, booltesttype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.BooleanTest) } inline PROTOBUF_NDEBUG_INLINE BooleanTest::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void BooleanTest::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } BooleanTest::~BooleanTest() { // @@protoc_insertion_point(destructor:pg_query.BooleanTest) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void BooleanTest::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void BooleanTest::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.BooleanTest) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } } ::memset(&_impl_.booltesttype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.booltesttype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* BooleanTest::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 0, 2> BooleanTest::_table_ = { { PROTOBUF_FIELD_OFFSET(BooleanTest, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_BooleanTest_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 4 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(BooleanTest, _impl_.location_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(BooleanTest, _impl_.location_)}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(BooleanTest, _impl_.xpr_)}}, // .pg_query.Node arg = 2 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(BooleanTest, _impl_.arg_)}}, // .pg_query.BoolTestType booltesttype = 3 [json_name = "booltesttype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(BooleanTest, _impl_.booltesttype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(BooleanTest, _impl_.booltesttype_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(BooleanTest, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node arg = 2 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(BooleanTest, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.BoolTestType booltesttype = 3 [json_name = "booltesttype"]; {PROTOBUF_FIELD_OFFSET(BooleanTest, _impl_.booltesttype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int32 location = 4 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(BooleanTest, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* BooleanTest::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.BooleanTest) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // .pg_query.BoolTestType booltesttype = 3 [json_name = "booltesttype"]; if (this->_internal_booltesttype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_booltesttype(), target); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } } // .pg_query.BoolTestType booltesttype = 3 [json_name = "booltesttype"]; if (this->_internal_booltesttype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_booltesttype()); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData BooleanTest::_class_data_ = { BooleanTest::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* BooleanTest::GetClassData() const { return &_class_data_; } void BooleanTest::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.BooleanTest) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } } if (from._internal_booltesttype() != 0) { _this->_internal_set_booltesttype(from._internal_booltesttype()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void BooleanTest::CopyFrom(const BooleanTest& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.BooleanTest) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool BooleanTest::IsInitialized() const { return true; } ::_pbi::CachedSize* BooleanTest::AccessCachedSize() const { return &_impl_._cached_size_; } void BooleanTest::InternalSwap(BooleanTest* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(BooleanTest, _impl_.location_) + sizeof(BooleanTest::_impl_.location_) - PROTOBUF_FIELD_OFFSET(BooleanTest, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata BooleanTest::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[62]); } // =================================================================== class MergeAction::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(MergeAction, _impl_._has_bits_); static const ::pg_query::Node& qual(const MergeAction* msg); static void set_has_qual(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& MergeAction::_Internal::qual(const MergeAction* msg) { return *msg->_impl_.qual_; } MergeAction::MergeAction(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.MergeAction) } inline PROTOBUF_NDEBUG_INLINE MergeAction::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, target_list_{visibility, arena, from.target_list_}, update_colnos_{visibility, arena, from.update_colnos_} {} MergeAction::MergeAction( ::google::protobuf::Arena* arena, const MergeAction& from) : ::google::protobuf::Message(arena) { MergeAction* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.qual_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.qual_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, match_kind_), reinterpret_cast(&from._impl_) + offsetof(Impl_, match_kind_), offsetof(Impl_, override_) - offsetof(Impl_, match_kind_) + sizeof(Impl_::override_)); // @@protoc_insertion_point(copy_constructor:pg_query.MergeAction) } inline PROTOBUF_NDEBUG_INLINE MergeAction::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, target_list_{visibility, arena}, update_colnos_{visibility, arena} {} inline void MergeAction::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, qual_), 0, offsetof(Impl_, override_) - offsetof(Impl_, qual_) + sizeof(Impl_::override_)); } MergeAction::~MergeAction() { // @@protoc_insertion_point(destructor:pg_query.MergeAction) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void MergeAction::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.qual_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void MergeAction::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.MergeAction) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.target_list_.Clear(); _impl_.update_colnos_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.qual_ != nullptr); _impl_.qual_->Clear(); } ::memset(&_impl_.match_kind_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.override_) - reinterpret_cast(&_impl_.match_kind_)) + sizeof(_impl_.override_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* MergeAction::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 3, 0, 2> MergeAction::_table_ = { { PROTOBUF_FIELD_OFFSET(MergeAction, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_MergeAction_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.MergeMatchKind match_kind = 1 [json_name = "matchKind"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MergeAction, _impl_.match_kind_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(MergeAction, _impl_.match_kind_)}}, // .pg_query.CmdType command_type = 2 [json_name = "commandType"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MergeAction, _impl_.command_type_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(MergeAction, _impl_.command_type_)}}, // .pg_query.OverridingKind override = 3 [json_name = "override"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MergeAction, _impl_.override_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(MergeAction, _impl_.override_)}}, // .pg_query.Node qual = 4 [json_name = "qual"]; {::_pbi::TcParser::FastMtS1, {34, 0, 0, PROTOBUF_FIELD_OFFSET(MergeAction, _impl_.qual_)}}, // repeated .pg_query.Node target_list = 5 [json_name = "targetList"]; {::_pbi::TcParser::FastMtR1, {42, 63, 1, PROTOBUF_FIELD_OFFSET(MergeAction, _impl_.target_list_)}}, // repeated .pg_query.Node update_colnos = 6 [json_name = "updateColnos"]; {::_pbi::TcParser::FastMtR1, {50, 63, 2, PROTOBUF_FIELD_OFFSET(MergeAction, _impl_.update_colnos_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.MergeMatchKind match_kind = 1 [json_name = "matchKind"]; {PROTOBUF_FIELD_OFFSET(MergeAction, _impl_.match_kind_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.CmdType command_type = 2 [json_name = "commandType"]; {PROTOBUF_FIELD_OFFSET(MergeAction, _impl_.command_type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.OverridingKind override = 3 [json_name = "override"]; {PROTOBUF_FIELD_OFFSET(MergeAction, _impl_.override_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.Node qual = 4 [json_name = "qual"]; {PROTOBUF_FIELD_OFFSET(MergeAction, _impl_.qual_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node target_list = 5 [json_name = "targetList"]; {PROTOBUF_FIELD_OFFSET(MergeAction, _impl_.target_list_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node update_colnos = 6 [json_name = "updateColnos"]; {PROTOBUF_FIELD_OFFSET(MergeAction, _impl_.update_colnos_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* MergeAction::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.MergeAction) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.MergeMatchKind match_kind = 1 [json_name = "matchKind"]; if (this->_internal_match_kind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_match_kind(), target); } // .pg_query.CmdType command_type = 2 [json_name = "commandType"]; if (this->_internal_command_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_command_type(), target); } // .pg_query.OverridingKind override = 3 [json_name = "override"]; if (this->_internal_override() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_override(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node qual = 4 [json_name = "qual"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::qual(this), _Internal::qual(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node target_list = 5 [json_name = "targetList"]; for (unsigned i = 0, n = static_cast(this->_internal_target_list_size()); i < n; i++) { const auto& repfield = this->_internal_target_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node update_colnos = 6 [json_name = "updateColnos"]; for (unsigned i = 0, n = static_cast(this->_internal_update_colnos_size()); i < n; i++) { const auto& repfield = this->_internal_update_colnos().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.MergeAction) return target; } ::size_t MergeAction::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.MergeAction) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node target_list = 5 [json_name = "targetList"]; total_size += 1UL * this->_internal_target_list_size(); for (const auto& msg : this->_internal_target_list()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node update_colnos = 6 [json_name = "updateColnos"]; total_size += 1UL * this->_internal_update_colnos_size(); for (const auto& msg : this->_internal_update_colnos()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node qual = 4 [json_name = "qual"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.qual_); } // .pg_query.MergeMatchKind match_kind = 1 [json_name = "matchKind"]; if (this->_internal_match_kind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_match_kind()); } // .pg_query.CmdType command_type = 2 [json_name = "commandType"]; if (this->_internal_command_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_command_type()); } // .pg_query.OverridingKind override = 3 [json_name = "override"]; if (this->_internal_override() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_override()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData MergeAction::_class_data_ = { MergeAction::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* MergeAction::GetClassData() const { return &_class_data_; } void MergeAction::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.MergeAction) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_target_list()->MergeFrom( from._internal_target_list()); _this->_internal_mutable_update_colnos()->MergeFrom( from._internal_update_colnos()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_qual()->::pg_query::Node::MergeFrom( from._internal_qual()); } if (from._internal_match_kind() != 0) { _this->_internal_set_match_kind(from._internal_match_kind()); } if (from._internal_command_type() != 0) { _this->_internal_set_command_type(from._internal_command_type()); } if (from._internal_override() != 0) { _this->_internal_set_override(from._internal_override()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void MergeAction::CopyFrom(const MergeAction& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.MergeAction) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool MergeAction::IsInitialized() const { return true; } ::_pbi::CachedSize* MergeAction::AccessCachedSize() const { return &_impl_._cached_size_; } void MergeAction::InternalSwap(MergeAction* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.target_list_.InternalSwap(&other->_impl_.target_list_); _impl_.update_colnos_.InternalSwap(&other->_impl_.update_colnos_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(MergeAction, _impl_.override_) + sizeof(MergeAction::_impl_.override_) - PROTOBUF_FIELD_OFFSET(MergeAction, _impl_.qual_)>( reinterpret_cast(&_impl_.qual_), reinterpret_cast(&other->_impl_.qual_)); } ::google::protobuf::Metadata MergeAction::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[63]); } // =================================================================== class CoerceToDomain::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_._has_bits_); static const ::pg_query::Node& xpr(const CoerceToDomain* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& arg(const CoerceToDomain* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& CoerceToDomain::_Internal::xpr(const CoerceToDomain* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& CoerceToDomain::_Internal::arg(const CoerceToDomain* msg) { return *msg->_impl_.arg_; } CoerceToDomain::CoerceToDomain(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CoerceToDomain) } inline PROTOBUF_NDEBUG_INLINE CoerceToDomain::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} CoerceToDomain::CoerceToDomain( ::google::protobuf::Arena* arena, const CoerceToDomain& from) : ::google::protobuf::Message(arena) { CoerceToDomain* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, resulttype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, resulttype_), offsetof(Impl_, location_) - offsetof(Impl_, resulttype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.CoerceToDomain) } inline PROTOBUF_NDEBUG_INLINE CoerceToDomain::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void CoerceToDomain::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } CoerceToDomain::~CoerceToDomain() { // @@protoc_insertion_point(destructor:pg_query.CoerceToDomain) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CoerceToDomain::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CoerceToDomain::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CoerceToDomain) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } } ::memset(&_impl_.resulttype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.resulttype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CoerceToDomain::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 2, 0, 2> CoerceToDomain::_table_ = { { PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CoerceToDomain_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.xpr_)}}, // .pg_query.Node arg = 2 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.arg_)}}, // uint32 resulttype = 3 [json_name = "resulttype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoerceToDomain, _impl_.resulttype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.resulttype_)}}, // int32 resulttypmod = 4 [json_name = "resulttypmod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoerceToDomain, _impl_.resulttypmod_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.resulttypmod_)}}, // uint32 resultcollid = 5 [json_name = "resultcollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoerceToDomain, _impl_.resultcollid_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.resultcollid_)}}, // .pg_query.CoercionForm coercionformat = 6 [json_name = "coercionformat"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoerceToDomain, _impl_.coercionformat_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.coercionformat_)}}, // int32 location = 7 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoerceToDomain, _impl_.location_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node arg = 2 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 resulttype = 3 [json_name = "resulttype"]; {PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.resulttype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 resulttypmod = 4 [json_name = "resulttypmod"]; {PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.resulttypmod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 resultcollid = 5 [json_name = "resultcollid"]; {PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.resultcollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // .pg_query.CoercionForm coercionformat = 6 [json_name = "coercionformat"]; {PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.coercionformat_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int32 location = 7 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CoerceToDomain::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CoerceToDomain) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->_internal_resulttype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_resulttype(), target); } // int32 resulttypmod = 4 [json_name = "resulttypmod"]; if (this->_internal_resulttypmod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_resulttypmod(), target); } // uint32 resultcollid = 5 [json_name = "resultcollid"]; if (this->_internal_resultcollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 5, this->_internal_resultcollid(), target); } // .pg_query.CoercionForm coercionformat = 6 [json_name = "coercionformat"]; if (this->_internal_coercionformat() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 6, this->_internal_coercionformat(), target); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<7>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->_internal_resulttype() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_resulttype()); } // int32 resulttypmod = 4 [json_name = "resulttypmod"]; if (this->_internal_resulttypmod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_resulttypmod()); } // uint32 resultcollid = 5 [json_name = "resultcollid"]; if (this->_internal_resultcollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_resultcollid()); } // .pg_query.CoercionForm coercionformat = 6 [json_name = "coercionformat"]; if (this->_internal_coercionformat() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_coercionformat()); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CoerceToDomain::_class_data_ = { CoerceToDomain::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CoerceToDomain::GetClassData() const { return &_class_data_; } void CoerceToDomain::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CoerceToDomain) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } } if (from._internal_resulttype() != 0) { _this->_internal_set_resulttype(from._internal_resulttype()); } if (from._internal_resulttypmod() != 0) { _this->_internal_set_resulttypmod(from._internal_resulttypmod()); } if (from._internal_resultcollid() != 0) { _this->_internal_set_resultcollid(from._internal_resultcollid()); } if (from._internal_coercionformat() != 0) { _this->_internal_set_coercionformat(from._internal_coercionformat()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CoerceToDomain::CopyFrom(const CoerceToDomain& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CoerceToDomain) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CoerceToDomain::IsInitialized() const { return true; } ::_pbi::CachedSize* CoerceToDomain::AccessCachedSize() const { return &_impl_._cached_size_; } void CoerceToDomain::InternalSwap(CoerceToDomain* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.location_) + sizeof(CoerceToDomain::_impl_.location_) - PROTOBUF_FIELD_OFFSET(CoerceToDomain, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata CoerceToDomain::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[64]); } // =================================================================== class CoerceToDomainValue::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, _impl_._has_bits_); static const ::pg_query::Node& xpr(const CoerceToDomainValue* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& CoerceToDomainValue::_Internal::xpr(const CoerceToDomainValue* msg) { return *msg->_impl_.xpr_; } CoerceToDomainValue::CoerceToDomainValue(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CoerceToDomainValue) } inline PROTOBUF_NDEBUG_INLINE CoerceToDomainValue::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} CoerceToDomainValue::CoerceToDomainValue( ::google::protobuf::Arena* arena, const CoerceToDomainValue& from) : ::google::protobuf::Message(arena) { CoerceToDomainValue* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, type_id_), reinterpret_cast(&from._impl_) + offsetof(Impl_, type_id_), offsetof(Impl_, location_) - offsetof(Impl_, type_id_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.CoerceToDomainValue) } inline PROTOBUF_NDEBUG_INLINE CoerceToDomainValue::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void CoerceToDomainValue::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } CoerceToDomainValue::~CoerceToDomainValue() { // @@protoc_insertion_point(destructor:pg_query.CoerceToDomainValue) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CoerceToDomainValue::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CoerceToDomainValue::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CoerceToDomainValue) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.type_id_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.type_id_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CoerceToDomainValue::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 1, 0, 2> CoerceToDomainValue::_table_ = { { PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CoerceToDomainValue_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, _impl_.xpr_)}}, // uint32 type_id = 2 [json_name = "typeId"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoerceToDomainValue, _impl_.type_id_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, _impl_.type_id_)}}, // int32 type_mod = 3 [json_name = "typeMod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoerceToDomainValue, _impl_.type_mod_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, _impl_.type_mod_)}}, // uint32 collation = 4 [json_name = "collation"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoerceToDomainValue, _impl_.collation_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, _impl_.collation_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CoerceToDomainValue, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 type_id = 2 [json_name = "typeId"]; {PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, _impl_.type_id_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 type_mod = 3 [json_name = "typeMod"]; {PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, _impl_.type_mod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 collation = 4 [json_name = "collation"]; {PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, _impl_.collation_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CoerceToDomainValue::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CoerceToDomainValue) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 type_id = 2 [json_name = "typeId"]; if (this->_internal_type_id() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_type_id(), target); } // int32 type_mod = 3 [json_name = "typeMod"]; if (this->_internal_type_mod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_type_mod(), target); } // uint32 collation = 4 [json_name = "collation"]; if (this->_internal_collation() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_collation(), target); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 type_id = 2 [json_name = "typeId"]; if (this->_internal_type_id() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_type_id()); } // int32 type_mod = 3 [json_name = "typeMod"]; if (this->_internal_type_mod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_type_mod()); } // uint32 collation = 4 [json_name = "collation"]; if (this->_internal_collation() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_collation()); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CoerceToDomainValue::_class_data_ = { CoerceToDomainValue::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CoerceToDomainValue::GetClassData() const { return &_class_data_; } void CoerceToDomainValue::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CoerceToDomainValue) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_type_id() != 0) { _this->_internal_set_type_id(from._internal_type_id()); } if (from._internal_type_mod() != 0) { _this->_internal_set_type_mod(from._internal_type_mod()); } if (from._internal_collation() != 0) { _this->_internal_set_collation(from._internal_collation()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CoerceToDomainValue::CopyFrom(const CoerceToDomainValue& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CoerceToDomainValue) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CoerceToDomainValue::IsInitialized() const { return true; } ::_pbi::CachedSize* CoerceToDomainValue::AccessCachedSize() const { return &_impl_._cached_size_; } void CoerceToDomainValue::InternalSwap(CoerceToDomainValue* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, _impl_.location_) + sizeof(CoerceToDomainValue::_impl_.location_) - PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata CoerceToDomainValue::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[65]); } // =================================================================== class SetToDefault::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(SetToDefault, _impl_._has_bits_); static const ::pg_query::Node& xpr(const SetToDefault* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& SetToDefault::_Internal::xpr(const SetToDefault* msg) { return *msg->_impl_.xpr_; } SetToDefault::SetToDefault(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SetToDefault) } inline PROTOBUF_NDEBUG_INLINE SetToDefault::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} SetToDefault::SetToDefault( ::google::protobuf::Arena* arena, const SetToDefault& from) : ::google::protobuf::Message(arena) { SetToDefault* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, type_id_), reinterpret_cast(&from._impl_) + offsetof(Impl_, type_id_), offsetof(Impl_, location_) - offsetof(Impl_, type_id_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.SetToDefault) } inline PROTOBUF_NDEBUG_INLINE SetToDefault::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void SetToDefault::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, xpr_) + sizeof(Impl_::location_)); } SetToDefault::~SetToDefault() { // @@protoc_insertion_point(destructor:pg_query.SetToDefault) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void SetToDefault::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void SetToDefault::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SetToDefault) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.type_id_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.type_id_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* SetToDefault::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 1, 0, 2> SetToDefault::_table_ = { { PROTOBUF_FIELD_OFFSET(SetToDefault, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_SetToDefault_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(SetToDefault, _impl_.xpr_)}}, // uint32 type_id = 2 [json_name = "typeId"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SetToDefault, _impl_.type_id_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(SetToDefault, _impl_.type_id_)}}, // int32 type_mod = 3 [json_name = "typeMod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SetToDefault, _impl_.type_mod_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(SetToDefault, _impl_.type_mod_)}}, // uint32 collation = 4 [json_name = "collation"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SetToDefault, _impl_.collation_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(SetToDefault, _impl_.collation_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SetToDefault, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(SetToDefault, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(SetToDefault, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 type_id = 2 [json_name = "typeId"]; {PROTOBUF_FIELD_OFFSET(SetToDefault, _impl_.type_id_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 type_mod = 3 [json_name = "typeMod"]; {PROTOBUF_FIELD_OFFSET(SetToDefault, _impl_.type_mod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 collation = 4 [json_name = "collation"]; {PROTOBUF_FIELD_OFFSET(SetToDefault, _impl_.collation_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(SetToDefault, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* SetToDefault::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SetToDefault) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 type_id = 2 [json_name = "typeId"]; if (this->_internal_type_id() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_type_id(), target); } // int32 type_mod = 3 [json_name = "typeMod"]; if (this->_internal_type_mod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_type_mod(), target); } // uint32 collation = 4 [json_name = "collation"]; if (this->_internal_collation() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_collation(), target); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 type_id = 2 [json_name = "typeId"]; if (this->_internal_type_id() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_type_id()); } // int32 type_mod = 3 [json_name = "typeMod"]; if (this->_internal_type_mod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_type_mod()); } // uint32 collation = 4 [json_name = "collation"]; if (this->_internal_collation() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_collation()); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData SetToDefault::_class_data_ = { SetToDefault::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* SetToDefault::GetClassData() const { return &_class_data_; } void SetToDefault::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SetToDefault) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_type_id() != 0) { _this->_internal_set_type_id(from._internal_type_id()); } if (from._internal_type_mod() != 0) { _this->_internal_set_type_mod(from._internal_type_mod()); } if (from._internal_collation() != 0) { _this->_internal_set_collation(from._internal_collation()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void SetToDefault::CopyFrom(const SetToDefault& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SetToDefault) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool SetToDefault::IsInitialized() const { return true; } ::_pbi::CachedSize* SetToDefault::AccessCachedSize() const { return &_impl_._cached_size_; } void SetToDefault::InternalSwap(SetToDefault* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(SetToDefault, _impl_.location_) + sizeof(SetToDefault::_impl_.location_) - PROTOBUF_FIELD_OFFSET(SetToDefault, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata SetToDefault::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[66]); } // =================================================================== class CurrentOfExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CurrentOfExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const CurrentOfExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& CurrentOfExpr::_Internal::xpr(const CurrentOfExpr* msg) { return *msg->_impl_.xpr_; } CurrentOfExpr::CurrentOfExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CurrentOfExpr) } inline PROTOBUF_NDEBUG_INLINE CurrentOfExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, cursor_name_(arena, from.cursor_name_) {} CurrentOfExpr::CurrentOfExpr( ::google::protobuf::Arena* arena, const CurrentOfExpr& from) : ::google::protobuf::Message(arena) { CurrentOfExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, cvarno_), reinterpret_cast(&from._impl_) + offsetof(Impl_, cvarno_), offsetof(Impl_, cursor_param_) - offsetof(Impl_, cvarno_) + sizeof(Impl_::cursor_param_)); // @@protoc_insertion_point(copy_constructor:pg_query.CurrentOfExpr) } inline PROTOBUF_NDEBUG_INLINE CurrentOfExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, cursor_name_(arena) {} inline void CurrentOfExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, cursor_param_) - offsetof(Impl_, xpr_) + sizeof(Impl_::cursor_param_)); } CurrentOfExpr::~CurrentOfExpr() { // @@protoc_insertion_point(destructor:pg_query.CurrentOfExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CurrentOfExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.cursor_name_.Destroy(); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CurrentOfExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CurrentOfExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.cursor_name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.cvarno_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.cursor_param_) - reinterpret_cast(&_impl_.cvarno_)) + sizeof(_impl_.cursor_param_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CurrentOfExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 1, 42, 2> CurrentOfExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(CurrentOfExpr, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CurrentOfExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 cursor_param = 4 [json_name = "cursor_param"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CurrentOfExpr, _impl_.cursor_param_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CurrentOfExpr, _impl_.cursor_param_)}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CurrentOfExpr, _impl_.xpr_)}}, // uint32 cvarno = 2 [json_name = "cvarno"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CurrentOfExpr, _impl_.cvarno_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(CurrentOfExpr, _impl_.cvarno_)}}, // string cursor_name = 3 [json_name = "cursor_name"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CurrentOfExpr, _impl_.cursor_name_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(CurrentOfExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 cvarno = 2 [json_name = "cvarno"]; {PROTOBUF_FIELD_OFFSET(CurrentOfExpr, _impl_.cvarno_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // string cursor_name = 3 [json_name = "cursor_name"]; {PROTOBUF_FIELD_OFFSET(CurrentOfExpr, _impl_.cursor_name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // int32 cursor_param = 4 [json_name = "cursor_param"]; {PROTOBUF_FIELD_OFFSET(CurrentOfExpr, _impl_.cursor_param_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\26\0\0\13\0\0\0\0" "pg_query.CurrentOfExpr" "cursor_name" }}, }; ::uint8_t* CurrentOfExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CurrentOfExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 cvarno = 2 [json_name = "cvarno"]; if (this->_internal_cvarno() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_cvarno(), target); } // string cursor_name = 3 [json_name = "cursor_name"]; if (!this->_internal_cursor_name().empty()) { const std::string& _s = this->_internal_cursor_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CurrentOfExpr.cursor_name"); target = stream->WriteStringMaybeAliased(3, _s, target); } // int32 cursor_param = 4 [json_name = "cursor_param"]; if (this->_internal_cursor_param() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_cursor_param(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_cursor_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_cursor_name()); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 cvarno = 2 [json_name = "cvarno"]; if (this->_internal_cvarno() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_cvarno()); } // int32 cursor_param = 4 [json_name = "cursor_param"]; if (this->_internal_cursor_param() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_cursor_param()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CurrentOfExpr::_class_data_ = { CurrentOfExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CurrentOfExpr::GetClassData() const { return &_class_data_; } void CurrentOfExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CurrentOfExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_cursor_name().empty()) { _this->_internal_set_cursor_name(from._internal_cursor_name()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_cvarno() != 0) { _this->_internal_set_cvarno(from._internal_cvarno()); } if (from._internal_cursor_param() != 0) { _this->_internal_set_cursor_param(from._internal_cursor_param()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CurrentOfExpr::CopyFrom(const CurrentOfExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CurrentOfExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CurrentOfExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* CurrentOfExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void CurrentOfExpr::InternalSwap(CurrentOfExpr* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.cursor_name_, &other->_impl_.cursor_name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CurrentOfExpr, _impl_.cursor_param_) + sizeof(CurrentOfExpr::_impl_.cursor_param_) - PROTOBUF_FIELD_OFFSET(CurrentOfExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata CurrentOfExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[67]); } // =================================================================== class NextValueExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(NextValueExpr, _impl_._has_bits_); static const ::pg_query::Node& xpr(const NextValueExpr* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& NextValueExpr::_Internal::xpr(const NextValueExpr* msg) { return *msg->_impl_.xpr_; } NextValueExpr::NextValueExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.NextValueExpr) } inline PROTOBUF_NDEBUG_INLINE NextValueExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} NextValueExpr::NextValueExpr( ::google::protobuf::Arena* arena, const NextValueExpr& from) : ::google::protobuf::Message(arena) { NextValueExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, seqid_), reinterpret_cast(&from._impl_) + offsetof(Impl_, seqid_), offsetof(Impl_, type_id_) - offsetof(Impl_, seqid_) + sizeof(Impl_::type_id_)); // @@protoc_insertion_point(copy_constructor:pg_query.NextValueExpr) } inline PROTOBUF_NDEBUG_INLINE NextValueExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void NextValueExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, type_id_) - offsetof(Impl_, xpr_) + sizeof(Impl_::type_id_)); } NextValueExpr::~NextValueExpr() { // @@protoc_insertion_point(destructor:pg_query.NextValueExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void NextValueExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void NextValueExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.NextValueExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } ::memset(&_impl_.seqid_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.type_id_) - reinterpret_cast(&_impl_.seqid_)) + sizeof(_impl_.type_id_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* NextValueExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> NextValueExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(NextValueExpr, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_NextValueExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(NextValueExpr, _impl_.xpr_)}}, // uint32 seqid = 2 [json_name = "seqid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NextValueExpr, _impl_.seqid_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(NextValueExpr, _impl_.seqid_)}}, // uint32 type_id = 3 [json_name = "typeId"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NextValueExpr, _impl_.type_id_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(NextValueExpr, _impl_.type_id_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(NextValueExpr, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 seqid = 2 [json_name = "seqid"]; {PROTOBUF_FIELD_OFFSET(NextValueExpr, _impl_.seqid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 type_id = 3 [json_name = "typeId"]; {PROTOBUF_FIELD_OFFSET(NextValueExpr, _impl_.type_id_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* NextValueExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.NextValueExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // uint32 seqid = 2 [json_name = "seqid"]; if (this->_internal_seqid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_seqid(), target); } // uint32 type_id = 3 [json_name = "typeId"]; if (this->_internal_type_id() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_type_id(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // uint32 seqid = 2 [json_name = "seqid"]; if (this->_internal_seqid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_seqid()); } // uint32 type_id = 3 [json_name = "typeId"]; if (this->_internal_type_id() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_type_id()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData NextValueExpr::_class_data_ = { NextValueExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* NextValueExpr::GetClassData() const { return &_class_data_; } void NextValueExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.NextValueExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (from._internal_seqid() != 0) { _this->_internal_set_seqid(from._internal_seqid()); } if (from._internal_type_id() != 0) { _this->_internal_set_type_id(from._internal_type_id()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void NextValueExpr::CopyFrom(const NextValueExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.NextValueExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool NextValueExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* NextValueExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void NextValueExpr::InternalSwap(NextValueExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(NextValueExpr, _impl_.type_id_) + sizeof(NextValueExpr::_impl_.type_id_) - PROTOBUF_FIELD_OFFSET(NextValueExpr, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata NextValueExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[68]); } // =================================================================== class InferenceElem::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(InferenceElem, _impl_._has_bits_); static const ::pg_query::Node& xpr(const InferenceElem* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& expr(const InferenceElem* msg); static void set_has_expr(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& InferenceElem::_Internal::xpr(const InferenceElem* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& InferenceElem::_Internal::expr(const InferenceElem* msg) { return *msg->_impl_.expr_; } InferenceElem::InferenceElem(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.InferenceElem) } inline PROTOBUF_NDEBUG_INLINE InferenceElem::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} InferenceElem::InferenceElem( ::google::protobuf::Arena* arena, const InferenceElem& from) : ::google::protobuf::Message(arena) { InferenceElem* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.expr_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.expr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, infercollid_), reinterpret_cast(&from._impl_) + offsetof(Impl_, infercollid_), offsetof(Impl_, inferopclass_) - offsetof(Impl_, infercollid_) + sizeof(Impl_::inferopclass_)); // @@protoc_insertion_point(copy_constructor:pg_query.InferenceElem) } inline PROTOBUF_NDEBUG_INLINE InferenceElem::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void InferenceElem::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, inferopclass_) - offsetof(Impl_, xpr_) + sizeof(Impl_::inferopclass_)); } InferenceElem::~InferenceElem() { // @@protoc_insertion_point(destructor:pg_query.InferenceElem) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void InferenceElem::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.xpr_; delete _impl_.expr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void InferenceElem::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.InferenceElem) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.expr_ != nullptr); _impl_.expr_->Clear(); } } ::memset(&_impl_.infercollid_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.inferopclass_) - reinterpret_cast(&_impl_.infercollid_)) + sizeof(_impl_.inferopclass_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* InferenceElem::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 0, 2> InferenceElem::_table_ = { { PROTOBUF_FIELD_OFFSET(InferenceElem, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_InferenceElem_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // uint32 inferopclass = 4 [json_name = "inferopclass"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InferenceElem, _impl_.inferopclass_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(InferenceElem, _impl_.inferopclass_)}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(InferenceElem, _impl_.xpr_)}}, // .pg_query.Node expr = 2 [json_name = "expr"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(InferenceElem, _impl_.expr_)}}, // uint32 infercollid = 3 [json_name = "infercollid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InferenceElem, _impl_.infercollid_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(InferenceElem, _impl_.infercollid_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(InferenceElem, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node expr = 2 [json_name = "expr"]; {PROTOBUF_FIELD_OFFSET(InferenceElem, _impl_.expr_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 infercollid = 3 [json_name = "infercollid"]; {PROTOBUF_FIELD_OFFSET(InferenceElem, _impl_.infercollid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 inferopclass = 4 [json_name = "inferopclass"]; {PROTOBUF_FIELD_OFFSET(InferenceElem, _impl_.inferopclass_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* InferenceElem::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.InferenceElem) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::expr(this), _Internal::expr(this).GetCachedSize(), target, stream); } // uint32 infercollid = 3 [json_name = "infercollid"]; if (this->_internal_infercollid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_infercollid(), target); } // uint32 inferopclass = 4 [json_name = "inferopclass"]; if (this->_internal_inferopclass() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_inferopclass(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.expr_); } } // uint32 infercollid = 3 [json_name = "infercollid"]; if (this->_internal_infercollid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_infercollid()); } // uint32 inferopclass = 4 [json_name = "inferopclass"]; if (this->_internal_inferopclass() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_inferopclass()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData InferenceElem::_class_data_ = { InferenceElem::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* InferenceElem::GetClassData() const { return &_class_data_; } void InferenceElem::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.InferenceElem) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_expr()->::pg_query::Node::MergeFrom( from._internal_expr()); } } if (from._internal_infercollid() != 0) { _this->_internal_set_infercollid(from._internal_infercollid()); } if (from._internal_inferopclass() != 0) { _this->_internal_set_inferopclass(from._internal_inferopclass()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void InferenceElem::CopyFrom(const InferenceElem& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.InferenceElem) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool InferenceElem::IsInitialized() const { return true; } ::_pbi::CachedSize* InferenceElem::AccessCachedSize() const { return &_impl_._cached_size_; } void InferenceElem::InternalSwap(InferenceElem* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(InferenceElem, _impl_.inferopclass_) + sizeof(InferenceElem::_impl_.inferopclass_) - PROTOBUF_FIELD_OFFSET(InferenceElem, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata InferenceElem::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[69]); } // =================================================================== class TargetEntry::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_._has_bits_); static const ::pg_query::Node& xpr(const TargetEntry* msg); static void set_has_xpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& expr(const TargetEntry* msg); static void set_has_expr(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& TargetEntry::_Internal::xpr(const TargetEntry* msg) { return *msg->_impl_.xpr_; } const ::pg_query::Node& TargetEntry::_Internal::expr(const TargetEntry* msg) { return *msg->_impl_.expr_; } TargetEntry::TargetEntry(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TargetEntry) } inline PROTOBUF_NDEBUG_INLINE TargetEntry::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, resname_(arena, from.resname_) {} TargetEntry::TargetEntry( ::google::protobuf::Arena* arena, const TargetEntry& from) : ::google::protobuf::Message(arena) { TargetEntry* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.xpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.xpr_) : nullptr; _impl_.expr_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.expr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, resno_), reinterpret_cast(&from._impl_) + offsetof(Impl_, resno_), offsetof(Impl_, resjunk_) - offsetof(Impl_, resno_) + sizeof(Impl_::resjunk_)); // @@protoc_insertion_point(copy_constructor:pg_query.TargetEntry) } inline PROTOBUF_NDEBUG_INLINE TargetEntry::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, resname_(arena) {} inline void TargetEntry::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, xpr_), 0, offsetof(Impl_, resjunk_) - offsetof(Impl_, xpr_) + sizeof(Impl_::resjunk_)); } TargetEntry::~TargetEntry() { // @@protoc_insertion_point(destructor:pg_query.TargetEntry) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void TargetEntry::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.resname_.Destroy(); delete _impl_.xpr_; delete _impl_.expr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void TargetEntry::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TargetEntry) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.resname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.xpr_ != nullptr); _impl_.xpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.expr_ != nullptr); _impl_.expr_->Clear(); } } ::memset(&_impl_.resno_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.resjunk_) - reinterpret_cast(&_impl_.resno_)) + sizeof(_impl_.resjunk_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* TargetEntry::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 2, 44, 2> TargetEntry::_table_ = { { PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_._has_bits_), 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_TargetEntry_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool resjunk = 8 [json_name = "resjunk"]; {::_pbi::TcParser::SingularVarintNoZag1(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.resjunk_)}}, // .pg_query.Node xpr = 1 [json_name = "xpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.xpr_)}}, // .pg_query.Node expr = 2 [json_name = "expr"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.expr_)}}, // int32 resno = 3 [json_name = "resno"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TargetEntry, _impl_.resno_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.resno_)}}, // string resname = 4 [json_name = "resname"]; {::_pbi::TcParser::FastUS1, {34, 63, 0, PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.resname_)}}, // uint32 ressortgroupref = 5 [json_name = "ressortgroupref"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TargetEntry, _impl_.ressortgroupref_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.ressortgroupref_)}}, // uint32 resorigtbl = 6 [json_name = "resorigtbl"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TargetEntry, _impl_.resorigtbl_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.resorigtbl_)}}, // int32 resorigcol = 7 [json_name = "resorigcol"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TargetEntry, _impl_.resorigcol_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.resorigcol_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node xpr = 1 [json_name = "xpr"]; {PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.xpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node expr = 2 [json_name = "expr"]; {PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.expr_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 resno = 3 [json_name = "resno"]; {PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.resno_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // string resname = 4 [json_name = "resname"]; {PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.resname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // uint32 ressortgroupref = 5 [json_name = "ressortgroupref"]; {PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.ressortgroupref_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 resorigtbl = 6 [json_name = "resorigtbl"]; {PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.resorigtbl_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 resorigcol = 7 [json_name = "resorigcol"]; {PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.resorigcol_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // bool resjunk = 8 [json_name = "resjunk"]; {PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.resjunk_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\24\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0" "pg_query.TargetEntry" "resname" }}, }; ::uint8_t* TargetEntry::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TargetEntry) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::xpr(this), _Internal::xpr(this).GetCachedSize(), target, stream); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::expr(this), _Internal::expr(this).GetCachedSize(), target, stream); } // int32 resno = 3 [json_name = "resno"]; if (this->_internal_resno() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_resno(), target); } // string resname = 4 [json_name = "resname"]; if (!this->_internal_resname().empty()) { const std::string& _s = this->_internal_resname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.TargetEntry.resname"); target = stream->WriteStringMaybeAliased(4, _s, target); } // uint32 ressortgroupref = 5 [json_name = "ressortgroupref"]; if (this->_internal_ressortgroupref() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 5, this->_internal_ressortgroupref(), target); } // uint32 resorigtbl = 6 [json_name = "resorigtbl"]; if (this->_internal_resorigtbl() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 6, this->_internal_resorigtbl(), target); } // int32 resorigcol = 7 [json_name = "resorigcol"]; if (this->_internal_resorigcol() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<7>( stream, this->_internal_resorigcol(), target); } // bool resjunk = 8 [json_name = "resjunk"]; if (this->_internal_resjunk() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 8, this->_internal_resjunk(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_resname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_resname()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.xpr_); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.expr_); } } // int32 resno = 3 [json_name = "resno"]; if (this->_internal_resno() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_resno()); } // uint32 ressortgroupref = 5 [json_name = "ressortgroupref"]; if (this->_internal_ressortgroupref() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_ressortgroupref()); } // uint32 resorigtbl = 6 [json_name = "resorigtbl"]; if (this->_internal_resorigtbl() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_resorigtbl()); } // int32 resorigcol = 7 [json_name = "resorigcol"]; if (this->_internal_resorigcol() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_resorigcol()); } // bool resjunk = 8 [json_name = "resjunk"]; if (this->_internal_resjunk() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData TargetEntry::_class_data_ = { TargetEntry::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* TargetEntry::GetClassData() const { return &_class_data_; } void TargetEntry::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TargetEntry) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_resname().empty()) { _this->_internal_set_resname(from._internal_resname()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_xpr()->::pg_query::Node::MergeFrom( from._internal_xpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_expr()->::pg_query::Node::MergeFrom( from._internal_expr()); } } if (from._internal_resno() != 0) { _this->_internal_set_resno(from._internal_resno()); } if (from._internal_ressortgroupref() != 0) { _this->_internal_set_ressortgroupref(from._internal_ressortgroupref()); } if (from._internal_resorigtbl() != 0) { _this->_internal_set_resorigtbl(from._internal_resorigtbl()); } if (from._internal_resorigcol() != 0) { _this->_internal_set_resorigcol(from._internal_resorigcol()); } if (from._internal_resjunk() != 0) { _this->_internal_set_resjunk(from._internal_resjunk()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void TargetEntry::CopyFrom(const TargetEntry& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TargetEntry) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool TargetEntry::IsInitialized() const { return true; } ::_pbi::CachedSize* TargetEntry::AccessCachedSize() const { return &_impl_._cached_size_; } void TargetEntry::InternalSwap(TargetEntry* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.resname_, &other->_impl_.resname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.resjunk_) + sizeof(TargetEntry::_impl_.resjunk_) - PROTOBUF_FIELD_OFFSET(TargetEntry, _impl_.xpr_)>( reinterpret_cast(&_impl_.xpr_), reinterpret_cast(&other->_impl_.xpr_)); } ::google::protobuf::Metadata TargetEntry::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[70]); } // =================================================================== class RangeTblRef::_Internal { public: }; RangeTblRef::RangeTblRef(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeTblRef) } RangeTblRef::RangeTblRef( ::google::protobuf::Arena* arena, const RangeTblRef& from) : RangeTblRef(arena) { MergeFrom(from); } inline PROTOBUF_NDEBUG_INLINE RangeTblRef::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void RangeTblRef::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.rtindex_ = {}; } RangeTblRef::~RangeTblRef() { // @@protoc_insertion_point(destructor:pg_query.RangeTblRef) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RangeTblRef::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void RangeTblRef::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeTblRef) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.rtindex_ = 0; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RangeTblRef::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 0, 2> RangeTblRef::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_RangeTblRef_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 rtindex = 1 [json_name = "rtindex"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RangeTblRef, _impl_.rtindex_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblRef, _impl_.rtindex_)}}, }}, {{ 65535, 65535 }}, {{ // int32 rtindex = 1 [json_name = "rtindex"]; {PROTOBUF_FIELD_OFFSET(RangeTblRef, _impl_.rtindex_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, // no aux_entries {{ }}, }; ::uint8_t* RangeTblRef::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeTblRef) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // int32 rtindex = 1 [json_name = "rtindex"]; if (this->_internal_rtindex() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<1>( stream, this->_internal_rtindex(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_rtindex() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_rtindex()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RangeTblRef::_class_data_ = { RangeTblRef::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RangeTblRef::GetClassData() const { return &_class_data_; } void RangeTblRef::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeTblRef) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (from._internal_rtindex() != 0) { _this->_internal_set_rtindex(from._internal_rtindex()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RangeTblRef::CopyFrom(const RangeTblRef& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeTblRef) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RangeTblRef::IsInitialized() const { return true; } ::_pbi::CachedSize* RangeTblRef::AccessCachedSize() const { return &_impl_._cached_size_; } void RangeTblRef::InternalSwap(RangeTblRef* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_.rtindex_, other->_impl_.rtindex_); } ::google::protobuf::Metadata RangeTblRef::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[71]); } // =================================================================== class JoinExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_._has_bits_); static const ::pg_query::Node& larg(const JoinExpr* msg); static void set_has_larg(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& rarg(const JoinExpr* msg); static void set_has_rarg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Alias& join_using_alias(const JoinExpr* msg); static void set_has_join_using_alias(HasBits* has_bits) { (*has_bits)[0] |= 4u; } static const ::pg_query::Node& quals(const JoinExpr* msg); static void set_has_quals(HasBits* has_bits) { (*has_bits)[0] |= 8u; } static const ::pg_query::Alias& alias(const JoinExpr* msg); static void set_has_alias(HasBits* has_bits) { (*has_bits)[0] |= 16u; } }; const ::pg_query::Node& JoinExpr::_Internal::larg(const JoinExpr* msg) { return *msg->_impl_.larg_; } const ::pg_query::Node& JoinExpr::_Internal::rarg(const JoinExpr* msg) { return *msg->_impl_.rarg_; } const ::pg_query::Alias& JoinExpr::_Internal::join_using_alias(const JoinExpr* msg) { return *msg->_impl_.join_using_alias_; } const ::pg_query::Node& JoinExpr::_Internal::quals(const JoinExpr* msg) { return *msg->_impl_.quals_; } const ::pg_query::Alias& JoinExpr::_Internal::alias(const JoinExpr* msg) { return *msg->_impl_.alias_; } JoinExpr::JoinExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JoinExpr) } inline PROTOBUF_NDEBUG_INLINE JoinExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, using_clause_{visibility, arena, from.using_clause_} {} JoinExpr::JoinExpr( ::google::protobuf::Arena* arena, const JoinExpr& from) : ::google::protobuf::Message(arena) { JoinExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.larg_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.larg_) : nullptr; _impl_.rarg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.rarg_) : nullptr; _impl_.join_using_alias_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Alias>(arena, *from._impl_.join_using_alias_) : nullptr; _impl_.quals_ = (cached_has_bits & 0x00000008u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.quals_) : nullptr; _impl_.alias_ = (cached_has_bits & 0x00000010u) ? CreateMaybeMessage<::pg_query::Alias>(arena, *from._impl_.alias_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, jointype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, jointype_), offsetof(Impl_, rtindex_) - offsetof(Impl_, jointype_) + sizeof(Impl_::rtindex_)); // @@protoc_insertion_point(copy_constructor:pg_query.JoinExpr) } inline PROTOBUF_NDEBUG_INLINE JoinExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, using_clause_{visibility, arena} {} inline void JoinExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, larg_), 0, offsetof(Impl_, rtindex_) - offsetof(Impl_, larg_) + sizeof(Impl_::rtindex_)); } JoinExpr::~JoinExpr() { // @@protoc_insertion_point(destructor:pg_query.JoinExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JoinExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.larg_; delete _impl_.rarg_; delete _impl_.join_using_alias_; delete _impl_.quals_; delete _impl_.alias_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JoinExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JoinExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.using_clause_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000001fu) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.larg_ != nullptr); _impl_.larg_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.rarg_ != nullptr); _impl_.rarg_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.join_using_alias_ != nullptr); _impl_.join_using_alias_->Clear(); } if (cached_has_bits & 0x00000008u) { ABSL_DCHECK(_impl_.quals_ != nullptr); _impl_.quals_->Clear(); } if (cached_has_bits & 0x00000010u) { ABSL_DCHECK(_impl_.alias_ != nullptr); _impl_.alias_->Clear(); } } ::memset(&_impl_.jointype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.rtindex_) - reinterpret_cast(&_impl_.jointype_)) + sizeof(_impl_.rtindex_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JoinExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 9, 6, 0, 2> JoinExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_._has_bits_), 0, // no _extensions_ 9, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294966784, // skipmap offsetof(decltype(_table_), field_entries), 9, // num_field_entries 6, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JoinExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.JoinType jointype = 1 [json_name = "jointype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JoinExpr, _impl_.jointype_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.jointype_)}}, // bool is_natural = 2 [json_name = "isNatural"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.is_natural_)}}, // .pg_query.Node larg = 3 [json_name = "larg"]; {::_pbi::TcParser::FastMtS1, {26, 0, 0, PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.larg_)}}, // .pg_query.Node rarg = 4 [json_name = "rarg"]; {::_pbi::TcParser::FastMtS1, {34, 1, 1, PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.rarg_)}}, // repeated .pg_query.Node using_clause = 5 [json_name = "usingClause"]; {::_pbi::TcParser::FastMtR1, {42, 63, 2, PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.using_clause_)}}, // .pg_query.Alias join_using_alias = 6 [json_name = "join_using_alias"]; {::_pbi::TcParser::FastMtS1, {50, 2, 3, PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.join_using_alias_)}}, // .pg_query.Node quals = 7 [json_name = "quals"]; {::_pbi::TcParser::FastMtS1, {58, 3, 4, PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.quals_)}}, // .pg_query.Alias alias = 8 [json_name = "alias"]; {::_pbi::TcParser::FastMtS1, {66, 4, 5, PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.alias_)}}, // int32 rtindex = 9 [json_name = "rtindex"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JoinExpr, _impl_.rtindex_), 63>(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.rtindex_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.JoinType jointype = 1 [json_name = "jointype"]; {PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.jointype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool is_natural = 2 [json_name = "isNatural"]; {PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.is_natural_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.Node larg = 3 [json_name = "larg"]; {PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.larg_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node rarg = 4 [json_name = "rarg"]; {PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.rarg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node using_clause = 5 [json_name = "usingClause"]; {PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.using_clause_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Alias join_using_alias = 6 [json_name = "join_using_alias"]; {PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.join_using_alias_), _Internal::kHasBitsOffset + 2, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node quals = 7 [json_name = "quals"]; {PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.quals_), _Internal::kHasBitsOffset + 3, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Alias alias = 8 [json_name = "alias"]; {PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.alias_), _Internal::kHasBitsOffset + 4, 5, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 rtindex = 9 [json_name = "rtindex"]; {PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.rtindex_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Alias>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Alias>()}, }}, {{ }}, }; ::uint8_t* JoinExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JoinExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.JoinType jointype = 1 [json_name = "jointype"]; if (this->_internal_jointype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_jointype(), target); } // bool is_natural = 2 [json_name = "isNatural"]; if (this->_internal_is_natural() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_is_natural(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node larg = 3 [json_name = "larg"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::larg(this), _Internal::larg(this).GetCachedSize(), target, stream); } // .pg_query.Node rarg = 4 [json_name = "rarg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::rarg(this), _Internal::rarg(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node using_clause = 5 [json_name = "usingClause"]; for (unsigned i = 0, n = static_cast(this->_internal_using_clause_size()); i < n; i++) { const auto& repfield = this->_internal_using_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Alias join_using_alias = 6 [json_name = "join_using_alias"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::join_using_alias(this), _Internal::join_using_alias(this).GetCachedSize(), target, stream); } // .pg_query.Node quals = 7 [json_name = "quals"]; if (cached_has_bits & 0x00000008u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 7, _Internal::quals(this), _Internal::quals(this).GetCachedSize(), target, stream); } // .pg_query.Alias alias = 8 [json_name = "alias"]; if (cached_has_bits & 0x00000010u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 8, _Internal::alias(this), _Internal::alias(this).GetCachedSize(), target, stream); } // int32 rtindex = 9 [json_name = "rtindex"]; if (this->_internal_rtindex() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<9>( stream, this->_internal_rtindex(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_using_clause()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000001fu) { // .pg_query.Node larg = 3 [json_name = "larg"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.larg_); } // .pg_query.Node rarg = 4 [json_name = "rarg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.rarg_); } // .pg_query.Alias join_using_alias = 6 [json_name = "join_using_alias"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.join_using_alias_); } // .pg_query.Node quals = 7 [json_name = "quals"]; if (cached_has_bits & 0x00000008u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.quals_); } // .pg_query.Alias alias = 8 [json_name = "alias"]; if (cached_has_bits & 0x00000010u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.alias_); } } // .pg_query.JoinType jointype = 1 [json_name = "jointype"]; if (this->_internal_jointype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_jointype()); } // bool is_natural = 2 [json_name = "isNatural"]; if (this->_internal_is_natural() != 0) { total_size += 2; } // int32 rtindex = 9 [json_name = "rtindex"]; if (this->_internal_rtindex() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_rtindex()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JoinExpr::_class_data_ = { JoinExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JoinExpr::GetClassData() const { return &_class_data_; } void JoinExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JoinExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_using_clause()->MergeFrom( from._internal_using_clause()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x0000001fu) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_larg()->::pg_query::Node::MergeFrom( from._internal_larg()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_rarg()->::pg_query::Node::MergeFrom( from._internal_rarg()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_join_using_alias()->::pg_query::Alias::MergeFrom( from._internal_join_using_alias()); } if (cached_has_bits & 0x00000008u) { _this->_internal_mutable_quals()->::pg_query::Node::MergeFrom( from._internal_quals()); } if (cached_has_bits & 0x00000010u) { _this->_internal_mutable_alias()->::pg_query::Alias::MergeFrom( from._internal_alias()); } } if (from._internal_jointype() != 0) { _this->_internal_set_jointype(from._internal_jointype()); } if (from._internal_is_natural() != 0) { _this->_internal_set_is_natural(from._internal_is_natural()); } if (from._internal_rtindex() != 0) { _this->_internal_set_rtindex(from._internal_rtindex()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JoinExpr::CopyFrom(const JoinExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JoinExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JoinExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* JoinExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void JoinExpr::InternalSwap(JoinExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.using_clause_.InternalSwap(&other->_impl_.using_clause_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.rtindex_) + sizeof(JoinExpr::_impl_.rtindex_) - PROTOBUF_FIELD_OFFSET(JoinExpr, _impl_.larg_)>( reinterpret_cast(&_impl_.larg_), reinterpret_cast(&other->_impl_.larg_)); } ::google::protobuf::Metadata JoinExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[72]); } // =================================================================== class FromExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(FromExpr, _impl_._has_bits_); static const ::pg_query::Node& quals(const FromExpr* msg); static void set_has_quals(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& FromExpr::_Internal::quals(const FromExpr* msg) { return *msg->_impl_.quals_; } FromExpr::FromExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.FromExpr) } inline PROTOBUF_NDEBUG_INLINE FromExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, fromlist_{visibility, arena, from.fromlist_} {} FromExpr::FromExpr( ::google::protobuf::Arena* arena, const FromExpr& from) : ::google::protobuf::Message(arena) { FromExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.quals_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.quals_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.FromExpr) } inline PROTOBUF_NDEBUG_INLINE FromExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, fromlist_{visibility, arena} {} inline void FromExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.quals_ = {}; } FromExpr::~FromExpr() { // @@protoc_insertion_point(destructor:pg_query.FromExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void FromExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.quals_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void FromExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.FromExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.fromlist_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.quals_ != nullptr); _impl_.quals_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* FromExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 2, 0, 2> FromExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(FromExpr, _impl_._has_bits_), 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_FromExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.Node quals = 2 [json_name = "quals"]; {::_pbi::TcParser::FastMtS1, {18, 0, 1, PROTOBUF_FIELD_OFFSET(FromExpr, _impl_.quals_)}}, // repeated .pg_query.Node fromlist = 1 [json_name = "fromlist"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(FromExpr, _impl_.fromlist_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node fromlist = 1 [json_name = "fromlist"]; {PROTOBUF_FIELD_OFFSET(FromExpr, _impl_.fromlist_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node quals = 2 [json_name = "quals"]; {PROTOBUF_FIELD_OFFSET(FromExpr, _impl_.quals_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* FromExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.FromExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node fromlist = 1 [json_name = "fromlist"]; for (unsigned i = 0, n = static_cast(this->_internal_fromlist_size()); i < n; i++) { const auto& repfield = this->_internal_fromlist().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node quals = 2 [json_name = "quals"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::quals(this), _Internal::quals(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_fromlist()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node quals = 2 [json_name = "quals"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.quals_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData FromExpr::_class_data_ = { FromExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* FromExpr::GetClassData() const { return &_class_data_; } void FromExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.FromExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_fromlist()->MergeFrom( from._internal_fromlist()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_quals()->::pg_query::Node::MergeFrom( from._internal_quals()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void FromExpr::CopyFrom(const FromExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.FromExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool FromExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* FromExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void FromExpr::InternalSwap(FromExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.fromlist_.InternalSwap(&other->_impl_.fromlist_); swap(_impl_.quals_, other->_impl_.quals_); } ::google::protobuf::Metadata FromExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[73]); } // =================================================================== class OnConflictExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_._has_bits_); static const ::pg_query::Node& arbiter_where(const OnConflictExpr* msg); static void set_has_arbiter_where(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& on_conflict_where(const OnConflictExpr* msg); static void set_has_on_conflict_where(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& OnConflictExpr::_Internal::arbiter_where(const OnConflictExpr* msg) { return *msg->_impl_.arbiter_where_; } const ::pg_query::Node& OnConflictExpr::_Internal::on_conflict_where(const OnConflictExpr* msg) { return *msg->_impl_.on_conflict_where_; } OnConflictExpr::OnConflictExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.OnConflictExpr) } inline PROTOBUF_NDEBUG_INLINE OnConflictExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, arbiter_elems_{visibility, arena, from.arbiter_elems_}, on_conflict_set_{visibility, arena, from.on_conflict_set_}, excl_rel_tlist_{visibility, arena, from.excl_rel_tlist_} {} OnConflictExpr::OnConflictExpr( ::google::protobuf::Arena* arena, const OnConflictExpr& from) : ::google::protobuf::Message(arena) { OnConflictExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.arbiter_where_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arbiter_where_) : nullptr; _impl_.on_conflict_where_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.on_conflict_where_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, action_), reinterpret_cast(&from._impl_) + offsetof(Impl_, action_), offsetof(Impl_, excl_rel_index_) - offsetof(Impl_, action_) + sizeof(Impl_::excl_rel_index_)); // @@protoc_insertion_point(copy_constructor:pg_query.OnConflictExpr) } inline PROTOBUF_NDEBUG_INLINE OnConflictExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, arbiter_elems_{visibility, arena}, on_conflict_set_{visibility, arena}, excl_rel_tlist_{visibility, arena} {} inline void OnConflictExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, arbiter_where_), 0, offsetof(Impl_, excl_rel_index_) - offsetof(Impl_, arbiter_where_) + sizeof(Impl_::excl_rel_index_)); } OnConflictExpr::~OnConflictExpr() { // @@protoc_insertion_point(destructor:pg_query.OnConflictExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void OnConflictExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.arbiter_where_; delete _impl_.on_conflict_where_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void OnConflictExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.OnConflictExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.arbiter_elems_.Clear(); _impl_.on_conflict_set_.Clear(); _impl_.excl_rel_tlist_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.arbiter_where_ != nullptr); _impl_.arbiter_where_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.on_conflict_where_ != nullptr); _impl_.on_conflict_where_->Clear(); } } ::memset(&_impl_.action_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.excl_rel_index_) - reinterpret_cast(&_impl_.action_)) + sizeof(_impl_.excl_rel_index_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* OnConflictExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 5, 0, 2> OnConflictExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_._has_bits_), 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 5, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_OnConflictExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node excl_rel_tlist = 8 [json_name = "exclRelTlist"]; {::_pbi::TcParser::FastMtR1, {66, 63, 4, PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.excl_rel_tlist_)}}, // .pg_query.OnConflictAction action = 1 [json_name = "action"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(OnConflictExpr, _impl_.action_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.action_)}}, // repeated .pg_query.Node arbiter_elems = 2 [json_name = "arbiterElems"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.arbiter_elems_)}}, // .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; {::_pbi::TcParser::FastMtS1, {26, 0, 1, PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.arbiter_where_)}}, // uint32 constraint = 4 [json_name = "constraint"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(OnConflictExpr, _impl_.constraint_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.constraint_)}}, // repeated .pg_query.Node on_conflict_set = 5 [json_name = "onConflictSet"]; {::_pbi::TcParser::FastMtR1, {42, 63, 2, PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.on_conflict_set_)}}, // .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; {::_pbi::TcParser::FastMtS1, {50, 1, 3, PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.on_conflict_where_)}}, // int32 excl_rel_index = 7 [json_name = "exclRelIndex"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(OnConflictExpr, _impl_.excl_rel_index_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.excl_rel_index_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.OnConflictAction action = 1 [json_name = "action"]; {PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.action_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node arbiter_elems = 2 [json_name = "arbiterElems"]; {PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.arbiter_elems_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; {PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.arbiter_where_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 constraint = 4 [json_name = "constraint"]; {PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.constraint_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated .pg_query.Node on_conflict_set = 5 [json_name = "onConflictSet"]; {PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.on_conflict_set_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; {PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.on_conflict_where_), _Internal::kHasBitsOffset + 1, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 excl_rel_index = 7 [json_name = "exclRelIndex"]; {PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.excl_rel_index_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // repeated .pg_query.Node excl_rel_tlist = 8 [json_name = "exclRelTlist"]; {PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.excl_rel_tlist_), -1, 4, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* OnConflictExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.OnConflictExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.OnConflictAction action = 1 [json_name = "action"]; if (this->_internal_action() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_action(), target); } // repeated .pg_query.Node arbiter_elems = 2 [json_name = "arbiterElems"]; for (unsigned i = 0, n = static_cast(this->_internal_arbiter_elems_size()); i < n; i++) { const auto& repfield = this->_internal_arbiter_elems().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::arbiter_where(this), _Internal::arbiter_where(this).GetCachedSize(), target, stream); } // uint32 constraint = 4 [json_name = "constraint"]; if (this->_internal_constraint() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_constraint(), target); } // repeated .pg_query.Node on_conflict_set = 5 [json_name = "onConflictSet"]; for (unsigned i = 0, n = static_cast(this->_internal_on_conflict_set_size()); i < n; i++) { const auto& repfield = this->_internal_on_conflict_set().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::on_conflict_where(this), _Internal::on_conflict_where(this).GetCachedSize(), target, stream); } // int32 excl_rel_index = 7 [json_name = "exclRelIndex"]; if (this->_internal_excl_rel_index() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<7>( stream, this->_internal_excl_rel_index(), target); } // repeated .pg_query.Node excl_rel_tlist = 8 [json_name = "exclRelTlist"]; for (unsigned i = 0, n = static_cast(this->_internal_excl_rel_tlist_size()); i < n; i++) { const auto& repfield = this->_internal_excl_rel_tlist().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(8, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_arbiter_elems()) { total_size += ::google::protobuf::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->_internal_on_conflict_set()) { total_size += ::google::protobuf::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->_internal_excl_rel_tlist()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arbiter_where_); } // .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.on_conflict_where_); } } // .pg_query.OnConflictAction action = 1 [json_name = "action"]; if (this->_internal_action() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_action()); } // uint32 constraint = 4 [json_name = "constraint"]; if (this->_internal_constraint() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_constraint()); } // int32 excl_rel_index = 7 [json_name = "exclRelIndex"]; if (this->_internal_excl_rel_index() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_excl_rel_index()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData OnConflictExpr::_class_data_ = { OnConflictExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* OnConflictExpr::GetClassData() const { return &_class_data_; } void OnConflictExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.OnConflictExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_arbiter_elems()->MergeFrom( from._internal_arbiter_elems()); _this->_internal_mutable_on_conflict_set()->MergeFrom( from._internal_on_conflict_set()); _this->_internal_mutable_excl_rel_tlist()->MergeFrom( from._internal_excl_rel_tlist()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_arbiter_where()->::pg_query::Node::MergeFrom( from._internal_arbiter_where()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_on_conflict_where()->::pg_query::Node::MergeFrom( from._internal_on_conflict_where()); } } if (from._internal_action() != 0) { _this->_internal_set_action(from._internal_action()); } if (from._internal_constraint() != 0) { _this->_internal_set_constraint(from._internal_constraint()); } if (from._internal_excl_rel_index() != 0) { _this->_internal_set_excl_rel_index(from._internal_excl_rel_index()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void OnConflictExpr::CopyFrom(const OnConflictExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.OnConflictExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool OnConflictExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* OnConflictExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void OnConflictExpr::InternalSwap(OnConflictExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.arbiter_elems_.InternalSwap(&other->_impl_.arbiter_elems_); _impl_.on_conflict_set_.InternalSwap(&other->_impl_.on_conflict_set_); _impl_.excl_rel_tlist_.InternalSwap(&other->_impl_.excl_rel_tlist_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.excl_rel_index_) + sizeof(OnConflictExpr::_impl_.excl_rel_index_) - PROTOBUF_FIELD_OFFSET(OnConflictExpr, _impl_.arbiter_where_)>( reinterpret_cast(&_impl_.arbiter_where_), reinterpret_cast(&other->_impl_.arbiter_where_)); } ::google::protobuf::Metadata OnConflictExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[74]); } // =================================================================== class Query::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(Query, _impl_._has_bits_); static const ::pg_query::Node& utility_stmt(const Query* msg); static void set_has_utility_stmt(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::FromExpr& jointree(const Query* msg); static void set_has_jointree(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& merge_join_condition(const Query* msg); static void set_has_merge_join_condition(HasBits* has_bits) { (*has_bits)[0] |= 4u; } static const ::pg_query::OnConflictExpr& on_conflict(const Query* msg); static void set_has_on_conflict(HasBits* has_bits) { (*has_bits)[0] |= 8u; } static const ::pg_query::Node& having_qual(const Query* msg); static void set_has_having_qual(HasBits* has_bits) { (*has_bits)[0] |= 16u; } static const ::pg_query::Node& limit_offset(const Query* msg); static void set_has_limit_offset(HasBits* has_bits) { (*has_bits)[0] |= 32u; } static const ::pg_query::Node& limit_count(const Query* msg); static void set_has_limit_count(HasBits* has_bits) { (*has_bits)[0] |= 64u; } static const ::pg_query::Node& set_operations(const Query* msg); static void set_has_set_operations(HasBits* has_bits) { (*has_bits)[0] |= 128u; } }; const ::pg_query::Node& Query::_Internal::utility_stmt(const Query* msg) { return *msg->_impl_.utility_stmt_; } const ::pg_query::FromExpr& Query::_Internal::jointree(const Query* msg) { return *msg->_impl_.jointree_; } const ::pg_query::Node& Query::_Internal::merge_join_condition(const Query* msg) { return *msg->_impl_.merge_join_condition_; } const ::pg_query::OnConflictExpr& Query::_Internal::on_conflict(const Query* msg) { return *msg->_impl_.on_conflict_; } const ::pg_query::Node& Query::_Internal::having_qual(const Query* msg) { return *msg->_impl_.having_qual_; } const ::pg_query::Node& Query::_Internal::limit_offset(const Query* msg) { return *msg->_impl_.limit_offset_; } const ::pg_query::Node& Query::_Internal::limit_count(const Query* msg) { return *msg->_impl_.limit_count_; } const ::pg_query::Node& Query::_Internal::set_operations(const Query* msg) { return *msg->_impl_.set_operations_; } Query::Query(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Query) } inline PROTOBUF_NDEBUG_INLINE Query::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, cte_list_{visibility, arena, from.cte_list_}, rtable_{visibility, arena, from.rtable_}, rteperminfos_{visibility, arena, from.rteperminfos_}, merge_action_list_{visibility, arena, from.merge_action_list_}, target_list_{visibility, arena, from.target_list_}, returning_list_{visibility, arena, from.returning_list_}, group_clause_{visibility, arena, from.group_clause_}, grouping_sets_{visibility, arena, from.grouping_sets_}, window_clause_{visibility, arena, from.window_clause_}, distinct_clause_{visibility, arena, from.distinct_clause_}, sort_clause_{visibility, arena, from.sort_clause_}, row_marks_{visibility, arena, from.row_marks_}, constraint_deps_{visibility, arena, from.constraint_deps_}, with_check_options_{visibility, arena, from.with_check_options_} {} Query::Query( ::google::protobuf::Arena* arena, const Query& from) : ::google::protobuf::Message(arena) { Query* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.utility_stmt_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.utility_stmt_) : nullptr; _impl_.jointree_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::FromExpr>(arena, *from._impl_.jointree_) : nullptr; _impl_.merge_join_condition_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.merge_join_condition_) : nullptr; _impl_.on_conflict_ = (cached_has_bits & 0x00000008u) ? CreateMaybeMessage<::pg_query::OnConflictExpr>(arena, *from._impl_.on_conflict_) : nullptr; _impl_.having_qual_ = (cached_has_bits & 0x00000010u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.having_qual_) : nullptr; _impl_.limit_offset_ = (cached_has_bits & 0x00000020u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.limit_offset_) : nullptr; _impl_.limit_count_ = (cached_has_bits & 0x00000040u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.limit_count_) : nullptr; _impl_.set_operations_ = (cached_has_bits & 0x00000080u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.set_operations_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, command_type_), reinterpret_cast(&from._impl_) + offsetof(Impl_, command_type_), offsetof(Impl_, stmt_len_) - offsetof(Impl_, command_type_) + sizeof(Impl_::stmt_len_)); // @@protoc_insertion_point(copy_constructor:pg_query.Query) } inline PROTOBUF_NDEBUG_INLINE Query::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, cte_list_{visibility, arena}, rtable_{visibility, arena}, rteperminfos_{visibility, arena}, merge_action_list_{visibility, arena}, target_list_{visibility, arena}, returning_list_{visibility, arena}, group_clause_{visibility, arena}, grouping_sets_{visibility, arena}, window_clause_{visibility, arena}, distinct_clause_{visibility, arena}, sort_clause_{visibility, arena}, row_marks_{visibility, arena}, constraint_deps_{visibility, arena}, with_check_options_{visibility, arena} {} inline void Query::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, utility_stmt_), 0, offsetof(Impl_, stmt_len_) - offsetof(Impl_, utility_stmt_) + sizeof(Impl_::stmt_len_)); } Query::~Query() { // @@protoc_insertion_point(destructor:pg_query.Query) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void Query::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.utility_stmt_; delete _impl_.jointree_; delete _impl_.merge_join_condition_; delete _impl_.on_conflict_; delete _impl_.having_qual_; delete _impl_.limit_offset_; delete _impl_.limit_count_; delete _impl_.set_operations_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void Query::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Query) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.cte_list_.Clear(); _impl_.rtable_.Clear(); _impl_.rteperminfos_.Clear(); _impl_.merge_action_list_.Clear(); _impl_.target_list_.Clear(); _impl_.returning_list_.Clear(); _impl_.group_clause_.Clear(); _impl_.grouping_sets_.Clear(); _impl_.window_clause_.Clear(); _impl_.distinct_clause_.Clear(); _impl_.sort_clause_.Clear(); _impl_.row_marks_.Clear(); _impl_.constraint_deps_.Clear(); _impl_.with_check_options_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x000000ffu) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.utility_stmt_ != nullptr); _impl_.utility_stmt_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.jointree_ != nullptr); _impl_.jointree_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.merge_join_condition_ != nullptr); _impl_.merge_join_condition_->Clear(); } if (cached_has_bits & 0x00000008u) { ABSL_DCHECK(_impl_.on_conflict_ != nullptr); _impl_.on_conflict_->Clear(); } if (cached_has_bits & 0x00000010u) { ABSL_DCHECK(_impl_.having_qual_ != nullptr); _impl_.having_qual_->Clear(); } if (cached_has_bits & 0x00000020u) { ABSL_DCHECK(_impl_.limit_offset_ != nullptr); _impl_.limit_offset_->Clear(); } if (cached_has_bits & 0x00000040u) { ABSL_DCHECK(_impl_.limit_count_ != nullptr); _impl_.limit_count_->Clear(); } if (cached_has_bits & 0x00000080u) { ABSL_DCHECK(_impl_.set_operations_ != nullptr); _impl_.set_operations_->Clear(); } } ::memset(&_impl_.command_type_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.stmt_len_) - reinterpret_cast(&_impl_.command_type_)) + sizeof(_impl_.stmt_len_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* Query::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<5, 42, 22, 0, 7> Query::_table_ = { { PROTOBUF_FIELD_OFFSET(Query, _impl_._has_bits_), 0, // no _extensions_ 42, 248, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 0, // skipmap offsetof(decltype(_table_), field_entries), 42, // num_field_entries 22, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_Query_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.CmdType command_type = 1 [json_name = "commandType"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Query, _impl_.command_type_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.command_type_)}}, // .pg_query.QuerySource query_source = 2 [json_name = "querySource"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Query, _impl_.query_source_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.query_source_)}}, // bool can_set_tag = 3 [json_name = "canSetTag"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.can_set_tag_)}}, // .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; {::_pbi::TcParser::FastMtS1, {34, 0, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.utility_stmt_)}}, // int32 result_relation = 5 [json_name = "resultRelation"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Query, _impl_.result_relation_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.result_relation_)}}, // bool has_aggs = 6 [json_name = "hasAggs"]; {::_pbi::TcParser::SingularVarintNoZag1(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.has_aggs_)}}, // bool has_window_funcs = 7 [json_name = "hasWindowFuncs"]; {::_pbi::TcParser::SingularVarintNoZag1(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.has_window_funcs_)}}, // bool has_target_srfs = 8 [json_name = "hasTargetSRFs"]; {::_pbi::TcParser::SingularVarintNoZag1(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.has_target_srfs_)}}, // bool has_sub_links = 9 [json_name = "hasSubLinks"]; {::_pbi::TcParser::SingularVarintNoZag1(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.has_sub_links_)}}, // bool has_distinct_on = 10 [json_name = "hasDistinctOn"]; {::_pbi::TcParser::SingularVarintNoZag1(), {80, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.has_distinct_on_)}}, // bool has_recursive = 11 [json_name = "hasRecursive"]; {::_pbi::TcParser::SingularVarintNoZag1(), {88, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.has_recursive_)}}, // bool has_modifying_cte = 12 [json_name = "hasModifyingCTE"]; {::_pbi::TcParser::SingularVarintNoZag1(), {96, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.has_modifying_cte_)}}, // bool has_for_update = 13 [json_name = "hasForUpdate"]; {::_pbi::TcParser::SingularVarintNoZag1(), {104, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.has_for_update_)}}, // bool has_row_security = 14 [json_name = "hasRowSecurity"]; {::_pbi::TcParser::SingularVarintNoZag1(), {112, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.has_row_security_)}}, // bool is_return = 15 [json_name = "isReturn"]; {::_pbi::TcParser::SingularVarintNoZag1(), {120, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.is_return_)}}, // repeated .pg_query.Node cte_list = 16 [json_name = "cteList"]; {::_pbi::TcParser::FastMtR2, {386, 63, 1, PROTOBUF_FIELD_OFFSET(Query, _impl_.cte_list_)}}, // repeated .pg_query.Node rtable = 17 [json_name = "rtable"]; {::_pbi::TcParser::FastMtR2, {394, 63, 2, PROTOBUF_FIELD_OFFSET(Query, _impl_.rtable_)}}, // repeated .pg_query.Node rteperminfos = 18 [json_name = "rteperminfos"]; {::_pbi::TcParser::FastMtR2, {402, 63, 3, PROTOBUF_FIELD_OFFSET(Query, _impl_.rteperminfos_)}}, // .pg_query.FromExpr jointree = 19 [json_name = "jointree"]; {::_pbi::TcParser::FastMtS2, {410, 1, 4, PROTOBUF_FIELD_OFFSET(Query, _impl_.jointree_)}}, // repeated .pg_query.Node merge_action_list = 20 [json_name = "mergeActionList"]; {::_pbi::TcParser::FastMtR2, {418, 63, 5, PROTOBUF_FIELD_OFFSET(Query, _impl_.merge_action_list_)}}, // int32 merge_target_relation = 21 [json_name = "mergeTargetRelation"]; {::_pbi::TcParser::FastV32S2, {424, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.merge_target_relation_)}}, // .pg_query.Node merge_join_condition = 22 [json_name = "mergeJoinCondition"]; {::_pbi::TcParser::FastMtS2, {434, 2, 6, PROTOBUF_FIELD_OFFSET(Query, _impl_.merge_join_condition_)}}, // repeated .pg_query.Node target_list = 23 [json_name = "targetList"]; {::_pbi::TcParser::FastMtR2, {442, 63, 7, PROTOBUF_FIELD_OFFSET(Query, _impl_.target_list_)}}, // .pg_query.OverridingKind override = 24 [json_name = "override"]; {::_pbi::TcParser::FastV32S2, {448, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.override_)}}, // .pg_query.OnConflictExpr on_conflict = 25 [json_name = "onConflict"]; {::_pbi::TcParser::FastMtS2, {458, 3, 8, PROTOBUF_FIELD_OFFSET(Query, _impl_.on_conflict_)}}, // repeated .pg_query.Node returning_list = 26 [json_name = "returningList"]; {::_pbi::TcParser::FastMtR2, {466, 63, 9, PROTOBUF_FIELD_OFFSET(Query, _impl_.returning_list_)}}, // repeated .pg_query.Node group_clause = 27 [json_name = "groupClause"]; {::_pbi::TcParser::FastMtR2, {474, 63, 10, PROTOBUF_FIELD_OFFSET(Query, _impl_.group_clause_)}}, // bool group_distinct = 28 [json_name = "groupDistinct"]; {::_pbi::TcParser::FastV8S2, {480, 63, 0, PROTOBUF_FIELD_OFFSET(Query, _impl_.group_distinct_)}}, // repeated .pg_query.Node grouping_sets = 29 [json_name = "groupingSets"]; {::_pbi::TcParser::FastMtR2, {490, 63, 11, PROTOBUF_FIELD_OFFSET(Query, _impl_.grouping_sets_)}}, // .pg_query.Node having_qual = 30 [json_name = "havingQual"]; {::_pbi::TcParser::FastMtS2, {498, 4, 12, PROTOBUF_FIELD_OFFSET(Query, _impl_.having_qual_)}}, // repeated .pg_query.Node window_clause = 31 [json_name = "windowClause"]; {::_pbi::TcParser::FastMtR2, {506, 63, 13, PROTOBUF_FIELD_OFFSET(Query, _impl_.window_clause_)}}, }}, {{ 33, 0, 1, 64512, 32, 65535, 65535 }}, {{ // .pg_query.CmdType command_type = 1 [json_name = "commandType"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.command_type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.QuerySource query_source = 2 [json_name = "querySource"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.query_source_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool can_set_tag = 3 [json_name = "canSetTag"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.can_set_tag_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.utility_stmt_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 result_relation = 5 [json_name = "resultRelation"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.result_relation_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // bool has_aggs = 6 [json_name = "hasAggs"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.has_aggs_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool has_window_funcs = 7 [json_name = "hasWindowFuncs"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.has_window_funcs_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool has_target_srfs = 8 [json_name = "hasTargetSRFs"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.has_target_srfs_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool has_sub_links = 9 [json_name = "hasSubLinks"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.has_sub_links_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool has_distinct_on = 10 [json_name = "hasDistinctOn"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.has_distinct_on_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool has_recursive = 11 [json_name = "hasRecursive"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.has_recursive_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool has_modifying_cte = 12 [json_name = "hasModifyingCTE"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.has_modifying_cte_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool has_for_update = 13 [json_name = "hasForUpdate"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.has_for_update_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool has_row_security = 14 [json_name = "hasRowSecurity"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.has_row_security_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool is_return = 15 [json_name = "isReturn"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.is_return_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node cte_list = 16 [json_name = "cteList"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.cte_list_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node rtable = 17 [json_name = "rtable"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.rtable_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node rteperminfos = 18 [json_name = "rteperminfos"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.rteperminfos_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.FromExpr jointree = 19 [json_name = "jointree"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.jointree_), _Internal::kHasBitsOffset + 1, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node merge_action_list = 20 [json_name = "mergeActionList"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.merge_action_list_), -1, 5, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 merge_target_relation = 21 [json_name = "mergeTargetRelation"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.merge_target_relation_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // .pg_query.Node merge_join_condition = 22 [json_name = "mergeJoinCondition"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.merge_join_condition_), _Internal::kHasBitsOffset + 2, 6, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node target_list = 23 [json_name = "targetList"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.target_list_), -1, 7, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.OverridingKind override = 24 [json_name = "override"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.override_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.OnConflictExpr on_conflict = 25 [json_name = "onConflict"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.on_conflict_), _Internal::kHasBitsOffset + 3, 8, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node returning_list = 26 [json_name = "returningList"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.returning_list_), -1, 9, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node group_clause = 27 [json_name = "groupClause"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.group_clause_), -1, 10, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool group_distinct = 28 [json_name = "groupDistinct"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.group_distinct_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node grouping_sets = 29 [json_name = "groupingSets"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.grouping_sets_), -1, 11, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node having_qual = 30 [json_name = "havingQual"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.having_qual_), _Internal::kHasBitsOffset + 4, 12, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node window_clause = 31 [json_name = "windowClause"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.window_clause_), -1, 13, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node distinct_clause = 32 [json_name = "distinctClause"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.distinct_clause_), -1, 14, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node sort_clause = 33 [json_name = "sortClause"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.sort_clause_), -1, 15, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node limit_offset = 34 [json_name = "limitOffset"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.limit_offset_), _Internal::kHasBitsOffset + 5, 16, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node limit_count = 35 [json_name = "limitCount"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.limit_count_), _Internal::kHasBitsOffset + 6, 17, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.LimitOption limit_option = 36 [json_name = "limitOption"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.limit_option_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node row_marks = 37 [json_name = "rowMarks"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.row_marks_), -1, 18, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node set_operations = 38 [json_name = "setOperations"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.set_operations_), _Internal::kHasBitsOffset + 7, 19, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node constraint_deps = 39 [json_name = "constraintDeps"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.constraint_deps_), -1, 20, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node with_check_options = 40 [json_name = "withCheckOptions"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.with_check_options_), -1, 21, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 stmt_location = 41 [json_name = "stmt_location"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.stmt_location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 stmt_len = 42 [json_name = "stmt_len"]; {PROTOBUF_FIELD_OFFSET(Query, _impl_.stmt_len_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::FromExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::OnConflictExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* Query::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Query) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.CmdType command_type = 1 [json_name = "commandType"]; if (this->_internal_command_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_command_type(), target); } // .pg_query.QuerySource query_source = 2 [json_name = "querySource"]; if (this->_internal_query_source() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_query_source(), target); } // bool can_set_tag = 3 [json_name = "canSetTag"]; if (this->_internal_can_set_tag() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_can_set_tag(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::utility_stmt(this), _Internal::utility_stmt(this).GetCachedSize(), target, stream); } // int32 result_relation = 5 [json_name = "resultRelation"]; if (this->_internal_result_relation() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_result_relation(), target); } // bool has_aggs = 6 [json_name = "hasAggs"]; if (this->_internal_has_aggs() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 6, this->_internal_has_aggs(), target); } // bool has_window_funcs = 7 [json_name = "hasWindowFuncs"]; if (this->_internal_has_window_funcs() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 7, this->_internal_has_window_funcs(), target); } // bool has_target_srfs = 8 [json_name = "hasTargetSRFs"]; if (this->_internal_has_target_srfs() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 8, this->_internal_has_target_srfs(), target); } // bool has_sub_links = 9 [json_name = "hasSubLinks"]; if (this->_internal_has_sub_links() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 9, this->_internal_has_sub_links(), target); } // bool has_distinct_on = 10 [json_name = "hasDistinctOn"]; if (this->_internal_has_distinct_on() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 10, this->_internal_has_distinct_on(), target); } // bool has_recursive = 11 [json_name = "hasRecursive"]; if (this->_internal_has_recursive() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 11, this->_internal_has_recursive(), target); } // bool has_modifying_cte = 12 [json_name = "hasModifyingCTE"]; if (this->_internal_has_modifying_cte() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 12, this->_internal_has_modifying_cte(), target); } // bool has_for_update = 13 [json_name = "hasForUpdate"]; if (this->_internal_has_for_update() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 13, this->_internal_has_for_update(), target); } // bool has_row_security = 14 [json_name = "hasRowSecurity"]; if (this->_internal_has_row_security() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 14, this->_internal_has_row_security(), target); } // bool is_return = 15 [json_name = "isReturn"]; if (this->_internal_is_return() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 15, this->_internal_is_return(), target); } // repeated .pg_query.Node cte_list = 16 [json_name = "cteList"]; for (unsigned i = 0, n = static_cast(this->_internal_cte_list_size()); i < n; i++) { const auto& repfield = this->_internal_cte_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(16, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node rtable = 17 [json_name = "rtable"]; for (unsigned i = 0, n = static_cast(this->_internal_rtable_size()); i < n; i++) { const auto& repfield = this->_internal_rtable().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(17, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node rteperminfos = 18 [json_name = "rteperminfos"]; for (unsigned i = 0, n = static_cast(this->_internal_rteperminfos_size()); i < n; i++) { const auto& repfield = this->_internal_rteperminfos().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(18, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.FromExpr jointree = 19 [json_name = "jointree"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 19, _Internal::jointree(this), _Internal::jointree(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node merge_action_list = 20 [json_name = "mergeActionList"]; for (unsigned i = 0, n = static_cast(this->_internal_merge_action_list_size()); i < n; i++) { const auto& repfield = this->_internal_merge_action_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(20, repfield, repfield.GetCachedSize(), target, stream); } // int32 merge_target_relation = 21 [json_name = "mergeTargetRelation"]; if (this->_internal_merge_target_relation() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteInt32ToArray( 21, this->_internal_merge_target_relation(), target); } // .pg_query.Node merge_join_condition = 22 [json_name = "mergeJoinCondition"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 22, _Internal::merge_join_condition(this), _Internal::merge_join_condition(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node target_list = 23 [json_name = "targetList"]; for (unsigned i = 0, n = static_cast(this->_internal_target_list_size()); i < n; i++) { const auto& repfield = this->_internal_target_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(23, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.OverridingKind override = 24 [json_name = "override"]; if (this->_internal_override() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 24, this->_internal_override(), target); } // .pg_query.OnConflictExpr on_conflict = 25 [json_name = "onConflict"]; if (cached_has_bits & 0x00000008u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 25, _Internal::on_conflict(this), _Internal::on_conflict(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node returning_list = 26 [json_name = "returningList"]; for (unsigned i = 0, n = static_cast(this->_internal_returning_list_size()); i < n; i++) { const auto& repfield = this->_internal_returning_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(26, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node group_clause = 27 [json_name = "groupClause"]; for (unsigned i = 0, n = static_cast(this->_internal_group_clause_size()); i < n; i++) { const auto& repfield = this->_internal_group_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(27, repfield, repfield.GetCachedSize(), target, stream); } // bool group_distinct = 28 [json_name = "groupDistinct"]; if (this->_internal_group_distinct() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 28, this->_internal_group_distinct(), target); } // repeated .pg_query.Node grouping_sets = 29 [json_name = "groupingSets"]; for (unsigned i = 0, n = static_cast(this->_internal_grouping_sets_size()); i < n; i++) { const auto& repfield = this->_internal_grouping_sets().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(29, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node having_qual = 30 [json_name = "havingQual"]; if (cached_has_bits & 0x00000010u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 30, _Internal::having_qual(this), _Internal::having_qual(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node window_clause = 31 [json_name = "windowClause"]; for (unsigned i = 0, n = static_cast(this->_internal_window_clause_size()); i < n; i++) { const auto& repfield = this->_internal_window_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(31, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node distinct_clause = 32 [json_name = "distinctClause"]; for (unsigned i = 0, n = static_cast(this->_internal_distinct_clause_size()); i < n; i++) { const auto& repfield = this->_internal_distinct_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(32, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node sort_clause = 33 [json_name = "sortClause"]; for (unsigned i = 0, n = static_cast(this->_internal_sort_clause_size()); i < n; i++) { const auto& repfield = this->_internal_sort_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(33, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node limit_offset = 34 [json_name = "limitOffset"]; if (cached_has_bits & 0x00000020u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 34, _Internal::limit_offset(this), _Internal::limit_offset(this).GetCachedSize(), target, stream); } // .pg_query.Node limit_count = 35 [json_name = "limitCount"]; if (cached_has_bits & 0x00000040u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 35, _Internal::limit_count(this), _Internal::limit_count(this).GetCachedSize(), target, stream); } // .pg_query.LimitOption limit_option = 36 [json_name = "limitOption"]; if (this->_internal_limit_option() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 36, this->_internal_limit_option(), target); } // repeated .pg_query.Node row_marks = 37 [json_name = "rowMarks"]; for (unsigned i = 0, n = static_cast(this->_internal_row_marks_size()); i < n; i++) { const auto& repfield = this->_internal_row_marks().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(37, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node set_operations = 38 [json_name = "setOperations"]; if (cached_has_bits & 0x00000080u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 38, _Internal::set_operations(this), _Internal::set_operations(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node constraint_deps = 39 [json_name = "constraintDeps"]; for (unsigned i = 0, n = static_cast(this->_internal_constraint_deps_size()); i < n; i++) { const auto& repfield = this->_internal_constraint_deps().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(39, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node with_check_options = 40 [json_name = "withCheckOptions"]; for (unsigned i = 0, n = static_cast(this->_internal_with_check_options_size()); i < n; i++) { const auto& repfield = this->_internal_with_check_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(40, repfield, repfield.GetCachedSize(), target, stream); } // int32 stmt_location = 41 [json_name = "stmt_location"]; if (this->_internal_stmt_location() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteInt32ToArray( 41, this->_internal_stmt_location(), target); } // int32 stmt_len = 42 [json_name = "stmt_len"]; if (this->_internal_stmt_len() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteInt32ToArray( 42, this->_internal_stmt_len(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node cte_list = 16 [json_name = "cteList"]; total_size += 2UL * this->_internal_cte_list_size(); for (const auto& msg : this->_internal_cte_list()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node rtable = 17 [json_name = "rtable"]; total_size += 2UL * this->_internal_rtable_size(); for (const auto& msg : this->_internal_rtable()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node rteperminfos = 18 [json_name = "rteperminfos"]; total_size += 2UL * this->_internal_rteperminfos_size(); for (const auto& msg : this->_internal_rteperminfos()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node merge_action_list = 20 [json_name = "mergeActionList"]; total_size += 2UL * this->_internal_merge_action_list_size(); for (const auto& msg : this->_internal_merge_action_list()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node target_list = 23 [json_name = "targetList"]; total_size += 2UL * this->_internal_target_list_size(); for (const auto& msg : this->_internal_target_list()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node returning_list = 26 [json_name = "returningList"]; total_size += 2UL * this->_internal_returning_list_size(); for (const auto& msg : this->_internal_returning_list()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node group_clause = 27 [json_name = "groupClause"]; total_size += 2UL * this->_internal_group_clause_size(); for (const auto& msg : this->_internal_group_clause()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node grouping_sets = 29 [json_name = "groupingSets"]; total_size += 2UL * this->_internal_grouping_sets_size(); for (const auto& msg : this->_internal_grouping_sets()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node window_clause = 31 [json_name = "windowClause"]; total_size += 2UL * this->_internal_window_clause_size(); for (const auto& msg : this->_internal_window_clause()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node distinct_clause = 32 [json_name = "distinctClause"]; total_size += 2UL * this->_internal_distinct_clause_size(); for (const auto& msg : this->_internal_distinct_clause()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node sort_clause = 33 [json_name = "sortClause"]; total_size += 2UL * this->_internal_sort_clause_size(); for (const auto& msg : this->_internal_sort_clause()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node row_marks = 37 [json_name = "rowMarks"]; total_size += 2UL * this->_internal_row_marks_size(); for (const auto& msg : this->_internal_row_marks()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node constraint_deps = 39 [json_name = "constraintDeps"]; total_size += 2UL * this->_internal_constraint_deps_size(); for (const auto& msg : this->_internal_constraint_deps()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node with_check_options = 40 [json_name = "withCheckOptions"]; total_size += 2UL * this->_internal_with_check_options_size(); for (const auto& msg : this->_internal_with_check_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x000000ffu) { // .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.utility_stmt_); } // .pg_query.FromExpr jointree = 19 [json_name = "jointree"]; if (cached_has_bits & 0x00000002u) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.jointree_); } // .pg_query.Node merge_join_condition = 22 [json_name = "mergeJoinCondition"]; if (cached_has_bits & 0x00000004u) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.merge_join_condition_); } // .pg_query.OnConflictExpr on_conflict = 25 [json_name = "onConflict"]; if (cached_has_bits & 0x00000008u) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.on_conflict_); } // .pg_query.Node having_qual = 30 [json_name = "havingQual"]; if (cached_has_bits & 0x00000010u) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.having_qual_); } // .pg_query.Node limit_offset = 34 [json_name = "limitOffset"]; if (cached_has_bits & 0x00000020u) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.limit_offset_); } // .pg_query.Node limit_count = 35 [json_name = "limitCount"]; if (cached_has_bits & 0x00000040u) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.limit_count_); } // .pg_query.Node set_operations = 38 [json_name = "setOperations"]; if (cached_has_bits & 0x00000080u) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.set_operations_); } } // .pg_query.CmdType command_type = 1 [json_name = "commandType"]; if (this->_internal_command_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_command_type()); } // .pg_query.QuerySource query_source = 2 [json_name = "querySource"]; if (this->_internal_query_source() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_query_source()); } // int32 result_relation = 5 [json_name = "resultRelation"]; if (this->_internal_result_relation() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_result_relation()); } // bool can_set_tag = 3 [json_name = "canSetTag"]; if (this->_internal_can_set_tag() != 0) { total_size += 2; } // bool has_aggs = 6 [json_name = "hasAggs"]; if (this->_internal_has_aggs() != 0) { total_size += 2; } // bool has_window_funcs = 7 [json_name = "hasWindowFuncs"]; if (this->_internal_has_window_funcs() != 0) { total_size += 2; } // bool has_target_srfs = 8 [json_name = "hasTargetSRFs"]; if (this->_internal_has_target_srfs() != 0) { total_size += 2; } // bool has_sub_links = 9 [json_name = "hasSubLinks"]; if (this->_internal_has_sub_links() != 0) { total_size += 2; } // bool has_distinct_on = 10 [json_name = "hasDistinctOn"]; if (this->_internal_has_distinct_on() != 0) { total_size += 2; } // bool has_recursive = 11 [json_name = "hasRecursive"]; if (this->_internal_has_recursive() != 0) { total_size += 2; } // bool has_modifying_cte = 12 [json_name = "hasModifyingCTE"]; if (this->_internal_has_modifying_cte() != 0) { total_size += 2; } // bool has_for_update = 13 [json_name = "hasForUpdate"]; if (this->_internal_has_for_update() != 0) { total_size += 2; } // bool has_row_security = 14 [json_name = "hasRowSecurity"]; if (this->_internal_has_row_security() != 0) { total_size += 2; } // bool is_return = 15 [json_name = "isReturn"]; if (this->_internal_is_return() != 0) { total_size += 2; } // bool group_distinct = 28 [json_name = "groupDistinct"]; if (this->_internal_group_distinct() != 0) { total_size += 3; } // int32 merge_target_relation = 21 [json_name = "mergeTargetRelation"]; if (this->_internal_merge_target_relation() != 0) { total_size += 2 + ::_pbi::WireFormatLite::Int32Size( this->_internal_merge_target_relation()); } // .pg_query.OverridingKind override = 24 [json_name = "override"]; if (this->_internal_override() != 0) { total_size += 2 + ::_pbi::WireFormatLite::EnumSize(this->_internal_override()); } // .pg_query.LimitOption limit_option = 36 [json_name = "limitOption"]; if (this->_internal_limit_option() != 0) { total_size += 2 + ::_pbi::WireFormatLite::EnumSize(this->_internal_limit_option()); } // int32 stmt_location = 41 [json_name = "stmt_location"]; if (this->_internal_stmt_location() != 0) { total_size += 2 + ::_pbi::WireFormatLite::Int32Size( this->_internal_stmt_location()); } // int32 stmt_len = 42 [json_name = "stmt_len"]; if (this->_internal_stmt_len() != 0) { total_size += 2 + ::_pbi::WireFormatLite::Int32Size( this->_internal_stmt_len()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData Query::_class_data_ = { Query::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* Query::GetClassData() const { return &_class_data_; } void Query::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Query) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_cte_list()->MergeFrom( from._internal_cte_list()); _this->_internal_mutable_rtable()->MergeFrom( from._internal_rtable()); _this->_internal_mutable_rteperminfos()->MergeFrom( from._internal_rteperminfos()); _this->_internal_mutable_merge_action_list()->MergeFrom( from._internal_merge_action_list()); _this->_internal_mutable_target_list()->MergeFrom( from._internal_target_list()); _this->_internal_mutable_returning_list()->MergeFrom( from._internal_returning_list()); _this->_internal_mutable_group_clause()->MergeFrom( from._internal_group_clause()); _this->_internal_mutable_grouping_sets()->MergeFrom( from._internal_grouping_sets()); _this->_internal_mutable_window_clause()->MergeFrom( from._internal_window_clause()); _this->_internal_mutable_distinct_clause()->MergeFrom( from._internal_distinct_clause()); _this->_internal_mutable_sort_clause()->MergeFrom( from._internal_sort_clause()); _this->_internal_mutable_row_marks()->MergeFrom( from._internal_row_marks()); _this->_internal_mutable_constraint_deps()->MergeFrom( from._internal_constraint_deps()); _this->_internal_mutable_with_check_options()->MergeFrom( from._internal_with_check_options()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x000000ffu) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_utility_stmt()->::pg_query::Node::MergeFrom( from._internal_utility_stmt()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_jointree()->::pg_query::FromExpr::MergeFrom( from._internal_jointree()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_merge_join_condition()->::pg_query::Node::MergeFrom( from._internal_merge_join_condition()); } if (cached_has_bits & 0x00000008u) { _this->_internal_mutable_on_conflict()->::pg_query::OnConflictExpr::MergeFrom( from._internal_on_conflict()); } if (cached_has_bits & 0x00000010u) { _this->_internal_mutable_having_qual()->::pg_query::Node::MergeFrom( from._internal_having_qual()); } if (cached_has_bits & 0x00000020u) { _this->_internal_mutable_limit_offset()->::pg_query::Node::MergeFrom( from._internal_limit_offset()); } if (cached_has_bits & 0x00000040u) { _this->_internal_mutable_limit_count()->::pg_query::Node::MergeFrom( from._internal_limit_count()); } if (cached_has_bits & 0x00000080u) { _this->_internal_mutable_set_operations()->::pg_query::Node::MergeFrom( from._internal_set_operations()); } } if (from._internal_command_type() != 0) { _this->_internal_set_command_type(from._internal_command_type()); } if (from._internal_query_source() != 0) { _this->_internal_set_query_source(from._internal_query_source()); } if (from._internal_result_relation() != 0) { _this->_internal_set_result_relation(from._internal_result_relation()); } if (from._internal_can_set_tag() != 0) { _this->_internal_set_can_set_tag(from._internal_can_set_tag()); } if (from._internal_has_aggs() != 0) { _this->_internal_set_has_aggs(from._internal_has_aggs()); } if (from._internal_has_window_funcs() != 0) { _this->_internal_set_has_window_funcs(from._internal_has_window_funcs()); } if (from._internal_has_target_srfs() != 0) { _this->_internal_set_has_target_srfs(from._internal_has_target_srfs()); } if (from._internal_has_sub_links() != 0) { _this->_internal_set_has_sub_links(from._internal_has_sub_links()); } if (from._internal_has_distinct_on() != 0) { _this->_internal_set_has_distinct_on(from._internal_has_distinct_on()); } if (from._internal_has_recursive() != 0) { _this->_internal_set_has_recursive(from._internal_has_recursive()); } if (from._internal_has_modifying_cte() != 0) { _this->_internal_set_has_modifying_cte(from._internal_has_modifying_cte()); } if (from._internal_has_for_update() != 0) { _this->_internal_set_has_for_update(from._internal_has_for_update()); } if (from._internal_has_row_security() != 0) { _this->_internal_set_has_row_security(from._internal_has_row_security()); } if (from._internal_is_return() != 0) { _this->_internal_set_is_return(from._internal_is_return()); } if (from._internal_group_distinct() != 0) { _this->_internal_set_group_distinct(from._internal_group_distinct()); } if (from._internal_merge_target_relation() != 0) { _this->_internal_set_merge_target_relation(from._internal_merge_target_relation()); } if (from._internal_override() != 0) { _this->_internal_set_override(from._internal_override()); } if (from._internal_limit_option() != 0) { _this->_internal_set_limit_option(from._internal_limit_option()); } if (from._internal_stmt_location() != 0) { _this->_internal_set_stmt_location(from._internal_stmt_location()); } if (from._internal_stmt_len() != 0) { _this->_internal_set_stmt_len(from._internal_stmt_len()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void Query::CopyFrom(const Query& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Query) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool Query::IsInitialized() const { return true; } ::_pbi::CachedSize* Query::AccessCachedSize() const { return &_impl_._cached_size_; } void Query::InternalSwap(Query* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.cte_list_.InternalSwap(&other->_impl_.cte_list_); _impl_.rtable_.InternalSwap(&other->_impl_.rtable_); _impl_.rteperminfos_.InternalSwap(&other->_impl_.rteperminfos_); _impl_.merge_action_list_.InternalSwap(&other->_impl_.merge_action_list_); _impl_.target_list_.InternalSwap(&other->_impl_.target_list_); _impl_.returning_list_.InternalSwap(&other->_impl_.returning_list_); _impl_.group_clause_.InternalSwap(&other->_impl_.group_clause_); _impl_.grouping_sets_.InternalSwap(&other->_impl_.grouping_sets_); _impl_.window_clause_.InternalSwap(&other->_impl_.window_clause_); _impl_.distinct_clause_.InternalSwap(&other->_impl_.distinct_clause_); _impl_.sort_clause_.InternalSwap(&other->_impl_.sort_clause_); _impl_.row_marks_.InternalSwap(&other->_impl_.row_marks_); _impl_.constraint_deps_.InternalSwap(&other->_impl_.constraint_deps_); _impl_.with_check_options_.InternalSwap(&other->_impl_.with_check_options_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(Query, _impl_.stmt_len_) + sizeof(Query::_impl_.stmt_len_) - PROTOBUF_FIELD_OFFSET(Query, _impl_.utility_stmt_)>( reinterpret_cast(&_impl_.utility_stmt_), reinterpret_cast(&other->_impl_.utility_stmt_)); } ::google::protobuf::Metadata Query::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[75]); } // =================================================================== class TypeName::_Internal { public: }; TypeName::TypeName(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TypeName) } inline PROTOBUF_NDEBUG_INLINE TypeName::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : names_{visibility, arena, from.names_}, typmods_{visibility, arena, from.typmods_}, array_bounds_{visibility, arena, from.array_bounds_}, _cached_size_{0} {} TypeName::TypeName( ::google::protobuf::Arena* arena, const TypeName& from) : ::google::protobuf::Message(arena) { TypeName* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, type_oid_), reinterpret_cast(&from._impl_) + offsetof(Impl_, type_oid_), offsetof(Impl_, location_) - offsetof(Impl_, type_oid_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.TypeName) } inline PROTOBUF_NDEBUG_INLINE TypeName::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : names_{visibility, arena}, typmods_{visibility, arena}, array_bounds_{visibility, arena}, _cached_size_{0} {} inline void TypeName::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, type_oid_), 0, offsetof(Impl_, location_) - offsetof(Impl_, type_oid_) + sizeof(Impl_::location_)); } TypeName::~TypeName() { // @@protoc_insertion_point(destructor:pg_query.TypeName) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void TypeName::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void TypeName::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TypeName) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.names_.Clear(); _impl_.typmods_.Clear(); _impl_.array_bounds_.Clear(); ::memset(&_impl_.type_oid_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.type_oid_)) + sizeof(_impl_.location_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* TypeName::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 3, 0, 2> TypeName::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_TypeName_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 8 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TypeName, _impl_.location_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(TypeName, _impl_.location_)}}, // repeated .pg_query.Node names = 1 [json_name = "names"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(TypeName, _impl_.names_)}}, // uint32 type_oid = 2 [json_name = "typeOid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TypeName, _impl_.type_oid_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(TypeName, _impl_.type_oid_)}}, // bool setof = 3 [json_name = "setof"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(TypeName, _impl_.setof_)}}, // bool pct_type = 4 [json_name = "pct_type"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(TypeName, _impl_.pct_type_)}}, // repeated .pg_query.Node typmods = 5 [json_name = "typmods"]; {::_pbi::TcParser::FastMtR1, {42, 63, 1, PROTOBUF_FIELD_OFFSET(TypeName, _impl_.typmods_)}}, // int32 typemod = 6 [json_name = "typemod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TypeName, _impl_.typemod_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(TypeName, _impl_.typemod_)}}, // repeated .pg_query.Node array_bounds = 7 [json_name = "arrayBounds"]; {::_pbi::TcParser::FastMtR1, {58, 63, 2, PROTOBUF_FIELD_OFFSET(TypeName, _impl_.array_bounds_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node names = 1 [json_name = "names"]; {PROTOBUF_FIELD_OFFSET(TypeName, _impl_.names_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 type_oid = 2 [json_name = "typeOid"]; {PROTOBUF_FIELD_OFFSET(TypeName, _impl_.type_oid_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool setof = 3 [json_name = "setof"]; {PROTOBUF_FIELD_OFFSET(TypeName, _impl_.setof_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool pct_type = 4 [json_name = "pct_type"]; {PROTOBUF_FIELD_OFFSET(TypeName, _impl_.pct_type_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node typmods = 5 [json_name = "typmods"]; {PROTOBUF_FIELD_OFFSET(TypeName, _impl_.typmods_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 typemod = 6 [json_name = "typemod"]; {PROTOBUF_FIELD_OFFSET(TypeName, _impl_.typemod_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // repeated .pg_query.Node array_bounds = 7 [json_name = "arrayBounds"]; {PROTOBUF_FIELD_OFFSET(TypeName, _impl_.array_bounds_), 0, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 8 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(TypeName, _impl_.location_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* TypeName::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TypeName) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node names = 1 [json_name = "names"]; for (unsigned i = 0, n = static_cast(this->_internal_names_size()); i < n; i++) { const auto& repfield = this->_internal_names().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // uint32 type_oid = 2 [json_name = "typeOid"]; if (this->_internal_type_oid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_type_oid(), target); } // bool setof = 3 [json_name = "setof"]; if (this->_internal_setof() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_setof(), target); } // bool pct_type = 4 [json_name = "pct_type"]; if (this->_internal_pct_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_pct_type(), target); } // repeated .pg_query.Node typmods = 5 [json_name = "typmods"]; for (unsigned i = 0, n = static_cast(this->_internal_typmods_size()); i < n; i++) { const auto& repfield = this->_internal_typmods().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // int32 typemod = 6 [json_name = "typemod"]; if (this->_internal_typemod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<6>( stream, this->_internal_typemod(), target); } // repeated .pg_query.Node array_bounds = 7 [json_name = "arrayBounds"]; for (unsigned i = 0, n = static_cast(this->_internal_array_bounds_size()); i < n; i++) { const auto& repfield = this->_internal_array_bounds().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<8>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_names()) { total_size += ::google::protobuf::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->_internal_typmods()) { total_size += ::google::protobuf::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->_internal_array_bounds()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // uint32 type_oid = 2 [json_name = "typeOid"]; if (this->_internal_type_oid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_type_oid()); } // bool setof = 3 [json_name = "setof"]; if (this->_internal_setof() != 0) { total_size += 2; } // bool pct_type = 4 [json_name = "pct_type"]; if (this->_internal_pct_type() != 0) { total_size += 2; } // int32 typemod = 6 [json_name = "typemod"]; if (this->_internal_typemod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_typemod()); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData TypeName::_class_data_ = { TypeName::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* TypeName::GetClassData() const { return &_class_data_; } void TypeName::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TypeName) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_names()->MergeFrom( from._internal_names()); _this->_internal_mutable_typmods()->MergeFrom( from._internal_typmods()); _this->_internal_mutable_array_bounds()->MergeFrom( from._internal_array_bounds()); if (from._internal_type_oid() != 0) { _this->_internal_set_type_oid(from._internal_type_oid()); } if (from._internal_setof() != 0) { _this->_internal_set_setof(from._internal_setof()); } if (from._internal_pct_type() != 0) { _this->_internal_set_pct_type(from._internal_pct_type()); } if (from._internal_typemod() != 0) { _this->_internal_set_typemod(from._internal_typemod()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void TypeName::CopyFrom(const TypeName& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TypeName) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool TypeName::IsInitialized() const { return true; } ::_pbi::CachedSize* TypeName::AccessCachedSize() const { return &_impl_._cached_size_; } void TypeName::InternalSwap(TypeName* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.names_.InternalSwap(&other->_impl_.names_); _impl_.typmods_.InternalSwap(&other->_impl_.typmods_); _impl_.array_bounds_.InternalSwap(&other->_impl_.array_bounds_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(TypeName, _impl_.location_) + sizeof(TypeName::_impl_.location_) - PROTOBUF_FIELD_OFFSET(TypeName, _impl_.type_oid_)>( reinterpret_cast(&_impl_.type_oid_), reinterpret_cast(&other->_impl_.type_oid_)); } ::google::protobuf::Metadata TypeName::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[76]); } // =================================================================== class ColumnRef::_Internal { public: }; ColumnRef::ColumnRef(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ColumnRef) } inline PROTOBUF_NDEBUG_INLINE ColumnRef::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : fields_{visibility, arena, from.fields_}, _cached_size_{0} {} ColumnRef::ColumnRef( ::google::protobuf::Arena* arena, const ColumnRef& from) : ::google::protobuf::Message(arena) { ColumnRef* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.location_ = from._impl_.location_; // @@protoc_insertion_point(copy_constructor:pg_query.ColumnRef) } inline PROTOBUF_NDEBUG_INLINE ColumnRef::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : fields_{visibility, arena}, _cached_size_{0} {} inline void ColumnRef::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.location_ = {}; } ColumnRef::~ColumnRef() { // @@protoc_insertion_point(destructor:pg_query.ColumnRef) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ColumnRef::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void ColumnRef::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ColumnRef) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.fields_.Clear(); _impl_.location_ = 0; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ColumnRef::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 0, 2> ColumnRef::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ColumnRef_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 2 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ColumnRef, _impl_.location_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(ColumnRef, _impl_.location_)}}, // repeated .pg_query.Node fields = 1 [json_name = "fields"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(ColumnRef, _impl_.fields_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node fields = 1 [json_name = "fields"]; {PROTOBUF_FIELD_OFFSET(ColumnRef, _impl_.fields_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 2 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(ColumnRef, _impl_.location_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* ColumnRef::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ColumnRef) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node fields = 1 [json_name = "fields"]; for (unsigned i = 0, n = static_cast(this->_internal_fields_size()); i < n; i++) { const auto& repfield = this->_internal_fields().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 2 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<2>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_fields()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // int32 location = 2 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ColumnRef::_class_data_ = { ColumnRef::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ColumnRef::GetClassData() const { return &_class_data_; } void ColumnRef::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ColumnRef) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_fields()->MergeFrom( from._internal_fields()); if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ColumnRef::CopyFrom(const ColumnRef& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ColumnRef) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ColumnRef::IsInitialized() const { return true; } ::_pbi::CachedSize* ColumnRef::AccessCachedSize() const { return &_impl_._cached_size_; } void ColumnRef::InternalSwap(ColumnRef* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.fields_.InternalSwap(&other->_impl_.fields_); swap(_impl_.location_, other->_impl_.location_); } ::google::protobuf::Metadata ColumnRef::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[77]); } // =================================================================== class ParamRef::_Internal { public: }; ParamRef::ParamRef(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ParamRef) } ParamRef::ParamRef( ::google::protobuf::Arena* arena, const ParamRef& from) : ParamRef(arena) { MergeFrom(from); } inline PROTOBUF_NDEBUG_INLINE ParamRef::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void ParamRef::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, number_), 0, offsetof(Impl_, location_) - offsetof(Impl_, number_) + sizeof(Impl_::location_)); } ParamRef::~ParamRef() { // @@protoc_insertion_point(destructor:pg_query.ParamRef) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ParamRef::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void ParamRef::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ParamRef) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; ::memset(&_impl_.number_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.number_)) + sizeof(_impl_.location_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ParamRef::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 0, 0, 2> ParamRef::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_ParamRef_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 2 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ParamRef, _impl_.location_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(ParamRef, _impl_.location_)}}, // int32 number = 1 [json_name = "number"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ParamRef, _impl_.number_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(ParamRef, _impl_.number_)}}, }}, {{ 65535, 65535 }}, {{ // int32 number = 1 [json_name = "number"]; {PROTOBUF_FIELD_OFFSET(ParamRef, _impl_.number_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 location = 2 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(ParamRef, _impl_.location_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, // no aux_entries {{ }}, }; ::uint8_t* ParamRef::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ParamRef) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // int32 number = 1 [json_name = "number"]; if (this->_internal_number() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<1>( stream, this->_internal_number(), target); } // int32 location = 2 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<2>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_number() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_number()); } // int32 location = 2 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ParamRef::_class_data_ = { ParamRef::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ParamRef::GetClassData() const { return &_class_data_; } void ParamRef::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ParamRef) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (from._internal_number() != 0) { _this->_internal_set_number(from._internal_number()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ParamRef::CopyFrom(const ParamRef& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ParamRef) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ParamRef::IsInitialized() const { return true; } ::_pbi::CachedSize* ParamRef::AccessCachedSize() const { return &_impl_._cached_size_; } void ParamRef::InternalSwap(ParamRef* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(ParamRef, _impl_.location_) + sizeof(ParamRef::_impl_.location_) - PROTOBUF_FIELD_OFFSET(ParamRef, _impl_.number_)>( reinterpret_cast(&_impl_.number_), reinterpret_cast(&other->_impl_.number_)); } ::google::protobuf::Metadata ParamRef::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[78]); } // =================================================================== class A_Expr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(A_Expr, _impl_._has_bits_); static const ::pg_query::Node& lexpr(const A_Expr* msg); static void set_has_lexpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& rexpr(const A_Expr* msg); static void set_has_rexpr(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& A_Expr::_Internal::lexpr(const A_Expr* msg) { return *msg->_impl_.lexpr_; } const ::pg_query::Node& A_Expr::_Internal::rexpr(const A_Expr* msg) { return *msg->_impl_.rexpr_; } A_Expr::A_Expr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.A_Expr) } inline PROTOBUF_NDEBUG_INLINE A_Expr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, name_{visibility, arena, from.name_} {} A_Expr::A_Expr( ::google::protobuf::Arena* arena, const A_Expr& from) : ::google::protobuf::Message(arena) { A_Expr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.lexpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.lexpr_) : nullptr; _impl_.rexpr_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.rexpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, kind_), reinterpret_cast(&from._impl_) + offsetof(Impl_, kind_), offsetof(Impl_, location_) - offsetof(Impl_, kind_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.A_Expr) } inline PROTOBUF_NDEBUG_INLINE A_Expr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, name_{visibility, arena} {} inline void A_Expr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, lexpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, lexpr_) + sizeof(Impl_::location_)); } A_Expr::~A_Expr() { // @@protoc_insertion_point(destructor:pg_query.A_Expr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void A_Expr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.lexpr_; delete _impl_.rexpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void A_Expr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.A_Expr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.name_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.lexpr_ != nullptr); _impl_.lexpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.rexpr_ != nullptr); _impl_.rexpr_->Clear(); } } ::memset(&_impl_.kind_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.kind_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* A_Expr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 3, 0, 2> A_Expr::_table_ = { { PROTOBUF_FIELD_OFFSET(A_Expr, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_A_Expr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.A_Expr_Kind kind = 1 [json_name = "kind"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(A_Expr, _impl_.kind_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(A_Expr, _impl_.kind_)}}, // repeated .pg_query.Node name = 2 [json_name = "name"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(A_Expr, _impl_.name_)}}, // .pg_query.Node lexpr = 3 [json_name = "lexpr"]; {::_pbi::TcParser::FastMtS1, {26, 0, 1, PROTOBUF_FIELD_OFFSET(A_Expr, _impl_.lexpr_)}}, // .pg_query.Node rexpr = 4 [json_name = "rexpr"]; {::_pbi::TcParser::FastMtS1, {34, 1, 2, PROTOBUF_FIELD_OFFSET(A_Expr, _impl_.rexpr_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(A_Expr, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(A_Expr, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.A_Expr_Kind kind = 1 [json_name = "kind"]; {PROTOBUF_FIELD_OFFSET(A_Expr, _impl_.kind_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node name = 2 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(A_Expr, _impl_.name_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node lexpr = 3 [json_name = "lexpr"]; {PROTOBUF_FIELD_OFFSET(A_Expr, _impl_.lexpr_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node rexpr = 4 [json_name = "rexpr"]; {PROTOBUF_FIELD_OFFSET(A_Expr, _impl_.rexpr_), _Internal::kHasBitsOffset + 1, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(A_Expr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* A_Expr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.A_Expr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.A_Expr_Kind kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // repeated .pg_query.Node name = 2 [json_name = "name"]; for (unsigned i = 0, n = static_cast(this->_internal_name_size()); i < n; i++) { const auto& repfield = this->_internal_name().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node lexpr = 3 [json_name = "lexpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::lexpr(this), _Internal::lexpr(this).GetCachedSize(), target, stream); } // .pg_query.Node rexpr = 4 [json_name = "rexpr"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::rexpr(this), _Internal::rexpr(this).GetCachedSize(), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_name()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node lexpr = 3 [json_name = "lexpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.lexpr_); } // .pg_query.Node rexpr = 4 [json_name = "rexpr"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.rexpr_); } } // .pg_query.A_Expr_Kind kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_kind()); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData A_Expr::_class_data_ = { A_Expr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* A_Expr::GetClassData() const { return &_class_data_; } void A_Expr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.A_Expr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_name()->MergeFrom( from._internal_name()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_lexpr()->::pg_query::Node::MergeFrom( from._internal_lexpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_rexpr()->::pg_query::Node::MergeFrom( from._internal_rexpr()); } } if (from._internal_kind() != 0) { _this->_internal_set_kind(from._internal_kind()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } 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); } PROTOBUF_NOINLINE bool A_Expr::IsInitialized() const { return true; } ::_pbi::CachedSize* A_Expr::AccessCachedSize() const { return &_impl_._cached_size_; } void A_Expr::InternalSwap(A_Expr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.name_.InternalSwap(&other->_impl_.name_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(A_Expr, _impl_.location_) + sizeof(A_Expr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(A_Expr, _impl_.lexpr_)>( reinterpret_cast(&_impl_.lexpr_), reinterpret_cast(&other->_impl_.lexpr_)); } ::google::protobuf::Metadata A_Expr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[79]); } // =================================================================== class TypeCast::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(TypeCast, _impl_._has_bits_); static const ::pg_query::Node& arg(const TypeCast* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::TypeName& type_name(const TypeCast* msg); static void set_has_type_name(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& TypeCast::_Internal::arg(const TypeCast* msg) { return *msg->_impl_.arg_; } const ::pg_query::TypeName& TypeCast::_Internal::type_name(const TypeCast* msg) { return *msg->_impl_.type_name_; } TypeCast::TypeCast(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TypeCast) } inline PROTOBUF_NDEBUG_INLINE TypeCast::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} TypeCast::TypeCast( ::google::protobuf::Arena* arena, const TypeCast& from) : ::google::protobuf::Message(arena) { TypeCast* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.arg_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; _impl_.type_name_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.type_name_) : nullptr; _impl_.location_ = from._impl_.location_; // @@protoc_insertion_point(copy_constructor:pg_query.TypeCast) } inline PROTOBUF_NDEBUG_INLINE TypeCast::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void TypeCast::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, arg_), 0, offsetof(Impl_, location_) - offsetof(Impl_, arg_) + sizeof(Impl_::location_)); } TypeCast::~TypeCast() { // @@protoc_insertion_point(destructor:pg_query.TypeCast) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void TypeCast::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.arg_; delete _impl_.type_name_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void TypeCast::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TypeCast) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.type_name_ != nullptr); _impl_.type_name_->Clear(); } } _impl_.location_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* TypeCast::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 0, 2> TypeCast::_table_ = { { PROTOBUF_FIELD_OFFSET(TypeCast, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_TypeCast_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node arg = 1 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(TypeCast, _impl_.arg_)}}, // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(TypeCast, _impl_.type_name_)}}, // int32 location = 3 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TypeCast, _impl_.location_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(TypeCast, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node arg = 1 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(TypeCast, _impl_.arg_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; {PROTOBUF_FIELD_OFFSET(TypeCast, _impl_.type_name_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 3 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(TypeCast, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, }}, {{ }}, }; ::uint8_t* TypeCast::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TypeCast) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node arg = 1 [json_name = "arg"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::type_name(this), _Internal::type_name(this).GetCachedSize(), target, stream); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node arg = 1 [json_name = "arg"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.type_name_); } } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData TypeCast::_class_data_ = { TypeCast::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* TypeCast::GetClassData() const { return &_class_data_; } void TypeCast::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TypeCast) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_type_name()->::pg_query::TypeName::MergeFrom( from._internal_type_name()); } } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void TypeCast::CopyFrom(const TypeCast& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TypeCast) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool TypeCast::IsInitialized() const { return true; } ::_pbi::CachedSize* TypeCast::AccessCachedSize() const { return &_impl_._cached_size_; } void TypeCast::InternalSwap(TypeCast* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(TypeCast, _impl_.location_) + sizeof(TypeCast::_impl_.location_) - PROTOBUF_FIELD_OFFSET(TypeCast, _impl_.arg_)>( reinterpret_cast(&_impl_.arg_), reinterpret_cast(&other->_impl_.arg_)); } ::google::protobuf::Metadata TypeCast::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[80]); } // =================================================================== class CollateClause::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CollateClause, _impl_._has_bits_); static const ::pg_query::Node& arg(const CollateClause* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& CollateClause::_Internal::arg(const CollateClause* msg) { return *msg->_impl_.arg_; } CollateClause::CollateClause(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CollateClause) } inline PROTOBUF_NDEBUG_INLINE CollateClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, collname_{visibility, arena, from.collname_} {} CollateClause::CollateClause( ::google::protobuf::Arena* arena, const CollateClause& from) : ::google::protobuf::Message(arena) { CollateClause* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.arg_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; _impl_.location_ = from._impl_.location_; // @@protoc_insertion_point(copy_constructor:pg_query.CollateClause) } inline PROTOBUF_NDEBUG_INLINE CollateClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, collname_{visibility, arena} {} inline void CollateClause::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, arg_), 0, offsetof(Impl_, location_) - offsetof(Impl_, arg_) + sizeof(Impl_::location_)); } CollateClause::~CollateClause() { // @@protoc_insertion_point(destructor:pg_query.CollateClause) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CollateClause::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CollateClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CollateClause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.collname_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } _impl_.location_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CollateClause::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 0, 2> CollateClause::_table_ = { { PROTOBUF_FIELD_OFFSET(CollateClause, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CollateClause_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node arg = 1 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CollateClause, _impl_.arg_)}}, // repeated .pg_query.Node collname = 2 [json_name = "collname"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(CollateClause, _impl_.collname_)}}, // int32 location = 3 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CollateClause, _impl_.location_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(CollateClause, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node arg = 1 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(CollateClause, _impl_.arg_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node collname = 2 [json_name = "collname"]; {PROTOBUF_FIELD_OFFSET(CollateClause, _impl_.collname_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 3 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(CollateClause, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CollateClause::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CollateClause) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node arg = 1 [json_name = "arg"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node collname = 2 [json_name = "collname"]; for (unsigned i = 0, n = static_cast(this->_internal_collname_size()); i < n; i++) { const auto& repfield = this->_internal_collname().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_collname()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node arg = 1 [json_name = "arg"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CollateClause::_class_data_ = { CollateClause::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CollateClause::GetClassData() const { return &_class_data_; } void CollateClause::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CollateClause) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_collname()->MergeFrom( from._internal_collname()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CollateClause::CopyFrom(const CollateClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CollateClause) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CollateClause::IsInitialized() const { return true; } ::_pbi::CachedSize* CollateClause::AccessCachedSize() const { return &_impl_._cached_size_; } void CollateClause::InternalSwap(CollateClause* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.collname_.InternalSwap(&other->_impl_.collname_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CollateClause, _impl_.location_) + sizeof(CollateClause::_impl_.location_) - PROTOBUF_FIELD_OFFSET(CollateClause, _impl_.arg_)>( reinterpret_cast(&_impl_.arg_), reinterpret_cast(&other->_impl_.arg_)); } ::google::protobuf::Metadata CollateClause::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[81]); } // =================================================================== class RoleSpec::_Internal { public: }; RoleSpec::RoleSpec(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RoleSpec) } inline PROTOBUF_NDEBUG_INLINE RoleSpec::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : rolename_(arena, from.rolename_), _cached_size_{0} {} RoleSpec::RoleSpec( ::google::protobuf::Arena* arena, const RoleSpec& from) : ::google::protobuf::Message(arena) { RoleSpec* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, roletype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, roletype_), offsetof(Impl_, location_) - offsetof(Impl_, roletype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.RoleSpec) } inline PROTOBUF_NDEBUG_INLINE RoleSpec::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : rolename_(arena), _cached_size_{0} {} inline void RoleSpec::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, roletype_), 0, offsetof(Impl_, location_) - offsetof(Impl_, roletype_) + sizeof(Impl_::location_)); } RoleSpec::~RoleSpec() { // @@protoc_insertion_point(destructor:pg_query.RoleSpec) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RoleSpec::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.rolename_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void RoleSpec::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RoleSpec) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.rolename_.ClearToEmpty(); ::memset(&_impl_.roletype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.roletype_)) + sizeof(_impl_.location_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RoleSpec::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 0, 34, 2> RoleSpec::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_RoleSpec_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RoleSpecType roletype = 1 [json_name = "roletype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoleSpec, _impl_.roletype_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(RoleSpec, _impl_.roletype_)}}, // string rolename = 2 [json_name = "rolename"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(RoleSpec, _impl_.rolename_)}}, // int32 location = 3 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoleSpec, _impl_.location_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(RoleSpec, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RoleSpecType roletype = 1 [json_name = "roletype"]; {PROTOBUF_FIELD_OFFSET(RoleSpec, _impl_.roletype_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // string rolename = 2 [json_name = "rolename"]; {PROTOBUF_FIELD_OFFSET(RoleSpec, _impl_.rolename_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // int32 location = 3 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(RoleSpec, _impl_.location_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, // no aux_entries {{ "\21\0\10\0\0\0\0\0" "pg_query.RoleSpec" "rolename" }}, }; ::uint8_t* RoleSpec::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RoleSpec) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.RoleSpecType roletype = 1 [json_name = "roletype"]; if (this->_internal_roletype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_roletype(), target); } // string rolename = 2 [json_name = "rolename"]; if (!this->_internal_rolename().empty()) { const std::string& _s = this->_internal_rolename(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.RoleSpec.rolename"); target = stream->WriteStringMaybeAliased(2, _s, target); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_rolename().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_rolename()); } // .pg_query.RoleSpecType roletype = 1 [json_name = "roletype"]; if (this->_internal_roletype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_roletype()); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RoleSpec::_class_data_ = { RoleSpec::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RoleSpec::GetClassData() const { return &_class_data_; } void RoleSpec::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RoleSpec) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_rolename().empty()) { _this->_internal_set_rolename(from._internal_rolename()); } if (from._internal_roletype() != 0) { _this->_internal_set_roletype(from._internal_roletype()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RoleSpec::CopyFrom(const RoleSpec& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RoleSpec) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RoleSpec::IsInitialized() const { return true; } ::_pbi::CachedSize* RoleSpec::AccessCachedSize() const { return &_impl_._cached_size_; } void RoleSpec::InternalSwap(RoleSpec* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.rolename_, &other->_impl_.rolename_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RoleSpec, _impl_.location_) + sizeof(RoleSpec::_impl_.location_) - PROTOBUF_FIELD_OFFSET(RoleSpec, _impl_.roletype_)>( reinterpret_cast(&_impl_.roletype_), reinterpret_cast(&other->_impl_.roletype_)); } ::google::protobuf::Metadata RoleSpec::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[82]); } // =================================================================== class FuncCall::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(FuncCall, _impl_._has_bits_); static const ::pg_query::Node& agg_filter(const FuncCall* msg); static void set_has_agg_filter(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::WindowDef& over(const FuncCall* msg); static void set_has_over(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& FuncCall::_Internal::agg_filter(const FuncCall* msg) { return *msg->_impl_.agg_filter_; } const ::pg_query::WindowDef& FuncCall::_Internal::over(const FuncCall* msg) { return *msg->_impl_.over_; } FuncCall::FuncCall(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.FuncCall) } inline PROTOBUF_NDEBUG_INLINE FuncCall::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, funcname_{visibility, arena, from.funcname_}, args_{visibility, arena, from.args_}, agg_order_{visibility, arena, from.agg_order_} {} FuncCall::FuncCall( ::google::protobuf::Arena* arena, const FuncCall& from) : ::google::protobuf::Message(arena) { FuncCall* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.agg_filter_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.agg_filter_) : nullptr; _impl_.over_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::WindowDef>(arena, *from._impl_.over_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, agg_within_group_), reinterpret_cast(&from._impl_) + offsetof(Impl_, agg_within_group_), offsetof(Impl_, location_) - offsetof(Impl_, agg_within_group_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.FuncCall) } inline PROTOBUF_NDEBUG_INLINE FuncCall::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, funcname_{visibility, arena}, args_{visibility, arena}, agg_order_{visibility, arena} {} inline void FuncCall::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, agg_filter_), 0, offsetof(Impl_, location_) - offsetof(Impl_, agg_filter_) + sizeof(Impl_::location_)); } FuncCall::~FuncCall() { // @@protoc_insertion_point(destructor:pg_query.FuncCall) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void FuncCall::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.agg_filter_; delete _impl_.over_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void FuncCall::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.FuncCall) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.funcname_.Clear(); _impl_.args_.Clear(); _impl_.agg_order_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.agg_filter_ != nullptr); _impl_.agg_filter_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.over_ != nullptr); _impl_.over_->Clear(); } } ::memset(&_impl_.agg_within_group_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.agg_within_group_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* FuncCall::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 11, 5, 0, 2> FuncCall::_table_ = { { PROTOBUF_FIELD_OFFSET(FuncCall, _impl_._has_bits_), 0, // no _extensions_ 11, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294965248, // skipmap offsetof(decltype(_table_), field_entries), 11, // num_field_entries 5, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_FuncCall_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node funcname = 1 [json_name = "funcname"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.funcname_)}}, // repeated .pg_query.Node args = 2 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.args_)}}, // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; {::_pbi::TcParser::FastMtR1, {26, 63, 2, PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.agg_order_)}}, // .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; {::_pbi::TcParser::FastMtS1, {34, 0, 3, PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.agg_filter_)}}, // .pg_query.WindowDef over = 5 [json_name = "over"]; {::_pbi::TcParser::FastMtS1, {42, 1, 4, PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.over_)}}, // bool agg_within_group = 6 [json_name = "agg_within_group"]; {::_pbi::TcParser::SingularVarintNoZag1(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.agg_within_group_)}}, // bool agg_star = 7 [json_name = "agg_star"]; {::_pbi::TcParser::SingularVarintNoZag1(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.agg_star_)}}, // bool agg_distinct = 8 [json_name = "agg_distinct"]; {::_pbi::TcParser::SingularVarintNoZag1(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.agg_distinct_)}}, // bool func_variadic = 9 [json_name = "func_variadic"]; {::_pbi::TcParser::SingularVarintNoZag1(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.func_variadic_)}}, // .pg_query.CoercionForm funcformat = 10 [json_name = "funcformat"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FuncCall, _impl_.funcformat_), 63>(), {80, 63, 0, PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.funcformat_)}}, // int32 location = 11 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FuncCall, _impl_.location_), 63>(), {88, 63, 0, PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node funcname = 1 [json_name = "funcname"]; {PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.funcname_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node args = 2 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.args_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; {PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.agg_order_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; {PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.agg_filter_), _Internal::kHasBitsOffset + 0, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.WindowDef over = 5 [json_name = "over"]; {PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.over_), _Internal::kHasBitsOffset + 1, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool agg_within_group = 6 [json_name = "agg_within_group"]; {PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.agg_within_group_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool agg_star = 7 [json_name = "agg_star"]; {PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.agg_star_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool agg_distinct = 8 [json_name = "agg_distinct"]; {PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.agg_distinct_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool func_variadic = 9 [json_name = "func_variadic"]; {PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.func_variadic_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.CoercionForm funcformat = 10 [json_name = "funcformat"]; {PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.funcformat_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int32 location = 11 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::WindowDef>()}, }}, {{ }}, }; ::uint8_t* FuncCall::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.FuncCall) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node funcname = 1 [json_name = "funcname"]; for (unsigned i = 0, n = static_cast(this->_internal_funcname_size()); i < n; i++) { const auto& repfield = this->_internal_funcname().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node args = 2 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; for (unsigned i = 0, n = static_cast(this->_internal_agg_order_size()); i < n; i++) { const auto& repfield = this->_internal_agg_order().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::agg_filter(this), _Internal::agg_filter(this).GetCachedSize(), target, stream); } // .pg_query.WindowDef over = 5 [json_name = "over"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::over(this), _Internal::over(this).GetCachedSize(), target, stream); } // bool agg_within_group = 6 [json_name = "agg_within_group"]; if (this->_internal_agg_within_group() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 6, this->_internal_agg_within_group(), target); } // bool agg_star = 7 [json_name = "agg_star"]; if (this->_internal_agg_star() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 7, this->_internal_agg_star(), target); } // bool agg_distinct = 8 [json_name = "agg_distinct"]; if (this->_internal_agg_distinct() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 8, this->_internal_agg_distinct(), target); } // bool func_variadic = 9 [json_name = "func_variadic"]; if (this->_internal_func_variadic() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 9, this->_internal_func_variadic(), target); } // .pg_query.CoercionForm funcformat = 10 [json_name = "funcformat"]; if (this->_internal_funcformat() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 10, this->_internal_funcformat(), target); } // int32 location = 11 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<11>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_funcname()) { total_size += ::google::protobuf::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->_internal_args()) { total_size += ::google::protobuf::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->_internal_agg_order()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.agg_filter_); } // .pg_query.WindowDef over = 5 [json_name = "over"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.over_); } } // bool agg_within_group = 6 [json_name = "agg_within_group"]; if (this->_internal_agg_within_group() != 0) { total_size += 2; } // bool agg_star = 7 [json_name = "agg_star"]; if (this->_internal_agg_star() != 0) { total_size += 2; } // bool agg_distinct = 8 [json_name = "agg_distinct"]; if (this->_internal_agg_distinct() != 0) { total_size += 2; } // bool func_variadic = 9 [json_name = "func_variadic"]; if (this->_internal_func_variadic() != 0) { total_size += 2; } // .pg_query.CoercionForm funcformat = 10 [json_name = "funcformat"]; if (this->_internal_funcformat() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_funcformat()); } // int32 location = 11 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData FuncCall::_class_data_ = { FuncCall::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* FuncCall::GetClassData() const { return &_class_data_; } void FuncCall::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.FuncCall) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_funcname()->MergeFrom( from._internal_funcname()); _this->_internal_mutable_args()->MergeFrom( from._internal_args()); _this->_internal_mutable_agg_order()->MergeFrom( from._internal_agg_order()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_agg_filter()->::pg_query::Node::MergeFrom( from._internal_agg_filter()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_over()->::pg_query::WindowDef::MergeFrom( from._internal_over()); } } if (from._internal_agg_within_group() != 0) { _this->_internal_set_agg_within_group(from._internal_agg_within_group()); } if (from._internal_agg_star() != 0) { _this->_internal_set_agg_star(from._internal_agg_star()); } if (from._internal_agg_distinct() != 0) { _this->_internal_set_agg_distinct(from._internal_agg_distinct()); } if (from._internal_func_variadic() != 0) { _this->_internal_set_func_variadic(from._internal_func_variadic()); } if (from._internal_funcformat() != 0) { _this->_internal_set_funcformat(from._internal_funcformat()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void FuncCall::CopyFrom(const FuncCall& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.FuncCall) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool FuncCall::IsInitialized() const { return true; } ::_pbi::CachedSize* FuncCall::AccessCachedSize() const { return &_impl_._cached_size_; } void FuncCall::InternalSwap(FuncCall* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.funcname_.InternalSwap(&other->_impl_.funcname_); _impl_.args_.InternalSwap(&other->_impl_.args_); _impl_.agg_order_.InternalSwap(&other->_impl_.agg_order_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.location_) + sizeof(FuncCall::_impl_.location_) - PROTOBUF_FIELD_OFFSET(FuncCall, _impl_.agg_filter_)>( reinterpret_cast(&_impl_.agg_filter_), reinterpret_cast(&other->_impl_.agg_filter_)); } ::google::protobuf::Metadata FuncCall::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[83]); } // =================================================================== class A_Star::_Internal { public: }; A_Star::A_Star(::google::protobuf::Arena* arena) : ::google::protobuf::internal::ZeroFieldsBase(arena) { // @@protoc_insertion_point(arena_constructor:pg_query.A_Star) } A_Star::A_Star( ::google::protobuf::Arena* arena, const A_Star& from) : ::google::protobuf::internal::ZeroFieldsBase(arena) { A_Star* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.A_Star) } ::google::protobuf::Metadata A_Star::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[84]); } // =================================================================== class A_Indices::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(A_Indices, _impl_._has_bits_); static const ::pg_query::Node& lidx(const A_Indices* msg); static void set_has_lidx(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& uidx(const A_Indices* msg); static void set_has_uidx(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& A_Indices::_Internal::lidx(const A_Indices* msg) { return *msg->_impl_.lidx_; } const ::pg_query::Node& A_Indices::_Internal::uidx(const A_Indices* msg) { return *msg->_impl_.uidx_; } A_Indices::A_Indices(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.A_Indices) } inline PROTOBUF_NDEBUG_INLINE A_Indices::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} A_Indices::A_Indices( ::google::protobuf::Arena* arena, const A_Indices& from) : ::google::protobuf::Message(arena) { A_Indices* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.lidx_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.lidx_) : nullptr; _impl_.uidx_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.uidx_) : nullptr; _impl_.is_slice_ = from._impl_.is_slice_; // @@protoc_insertion_point(copy_constructor:pg_query.A_Indices) } inline PROTOBUF_NDEBUG_INLINE A_Indices::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void A_Indices::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, lidx_), 0, offsetof(Impl_, is_slice_) - offsetof(Impl_, lidx_) + sizeof(Impl_::is_slice_)); } A_Indices::~A_Indices() { // @@protoc_insertion_point(destructor:pg_query.A_Indices) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void A_Indices::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.lidx_; delete _impl_.uidx_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void A_Indices::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.A_Indices) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.lidx_ != nullptr); _impl_.lidx_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.uidx_ != nullptr); _impl_.uidx_->Clear(); } } _impl_.is_slice_ = false; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* A_Indices::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 0, 2> A_Indices::_table_ = { { PROTOBUF_FIELD_OFFSET(A_Indices, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_A_Indices_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // bool is_slice = 1 [json_name = "is_slice"]; {::_pbi::TcParser::SingularVarintNoZag1(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(A_Indices, _impl_.is_slice_)}}, // .pg_query.Node lidx = 2 [json_name = "lidx"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(A_Indices, _impl_.lidx_)}}, // .pg_query.Node uidx = 3 [json_name = "uidx"]; {::_pbi::TcParser::FastMtS1, {26, 1, 1, PROTOBUF_FIELD_OFFSET(A_Indices, _impl_.uidx_)}}, }}, {{ 65535, 65535 }}, {{ // bool is_slice = 1 [json_name = "is_slice"]; {PROTOBUF_FIELD_OFFSET(A_Indices, _impl_.is_slice_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.Node lidx = 2 [json_name = "lidx"]; {PROTOBUF_FIELD_OFFSET(A_Indices, _impl_.lidx_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node uidx = 3 [json_name = "uidx"]; {PROTOBUF_FIELD_OFFSET(A_Indices, _impl_.uidx_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* A_Indices::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.A_Indices) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // bool is_slice = 1 [json_name = "is_slice"]; if (this->_internal_is_slice() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 1, this->_internal_is_slice(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node lidx = 2 [json_name = "lidx"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::lidx(this), _Internal::lidx(this).GetCachedSize(), target, stream); } // .pg_query.Node uidx = 3 [json_name = "uidx"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::uidx(this), _Internal::uidx(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node lidx = 2 [json_name = "lidx"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.lidx_); } // .pg_query.Node uidx = 3 [json_name = "uidx"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.uidx_); } } // bool is_slice = 1 [json_name = "is_slice"]; if (this->_internal_is_slice() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData A_Indices::_class_data_ = { A_Indices::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* A_Indices::GetClassData() const { return &_class_data_; } void A_Indices::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.A_Indices) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_lidx()->::pg_query::Node::MergeFrom( from._internal_lidx()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_uidx()->::pg_query::Node::MergeFrom( from._internal_uidx()); } } if (from._internal_is_slice() != 0) { _this->_internal_set_is_slice(from._internal_is_slice()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } 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); } PROTOBUF_NOINLINE bool A_Indices::IsInitialized() const { return true; } ::_pbi::CachedSize* A_Indices::AccessCachedSize() const { return &_impl_._cached_size_; } void A_Indices::InternalSwap(A_Indices* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(A_Indices, _impl_.is_slice_) + sizeof(A_Indices::_impl_.is_slice_) - PROTOBUF_FIELD_OFFSET(A_Indices, _impl_.lidx_)>( reinterpret_cast(&_impl_.lidx_), reinterpret_cast(&other->_impl_.lidx_)); } ::google::protobuf::Metadata A_Indices::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[85]); } // =================================================================== class A_Indirection::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(A_Indirection, _impl_._has_bits_); static const ::pg_query::Node& arg(const A_Indirection* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& A_Indirection::_Internal::arg(const A_Indirection* msg) { return *msg->_impl_.arg_; } A_Indirection::A_Indirection(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.A_Indirection) } inline PROTOBUF_NDEBUG_INLINE A_Indirection::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, indirection_{visibility, arena, from.indirection_} {} A_Indirection::A_Indirection( ::google::protobuf::Arena* arena, const A_Indirection& from) : ::google::protobuf::Message(arena) { A_Indirection* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.arg_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.A_Indirection) } inline PROTOBUF_NDEBUG_INLINE A_Indirection::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, indirection_{visibility, arena} {} inline void A_Indirection::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.arg_ = {}; } A_Indirection::~A_Indirection() { // @@protoc_insertion_point(destructor:pg_query.A_Indirection) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void A_Indirection::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void A_Indirection::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.A_Indirection) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.indirection_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* A_Indirection::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 2, 0, 2> A_Indirection::_table_ = { { PROTOBUF_FIELD_OFFSET(A_Indirection, _impl_._has_bits_), 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_A_Indirection_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(A_Indirection, _impl_.indirection_)}}, // .pg_query.Node arg = 1 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(A_Indirection, _impl_.arg_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node arg = 1 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(A_Indirection, _impl_.arg_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; {PROTOBUF_FIELD_OFFSET(A_Indirection, _impl_.indirection_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* A_Indirection::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.A_Indirection) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node arg = 1 [json_name = "arg"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; for (unsigned i = 0, n = static_cast(this->_internal_indirection_size()); i < n; i++) { const auto& repfield = this->_internal_indirection().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_indirection()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node arg = 1 [json_name = "arg"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData A_Indirection::_class_data_ = { A_Indirection::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* A_Indirection::GetClassData() const { return &_class_data_; } void A_Indirection::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.A_Indirection) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_indirection()->MergeFrom( from._internal_indirection()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } 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); } PROTOBUF_NOINLINE bool A_Indirection::IsInitialized() const { return true; } ::_pbi::CachedSize* A_Indirection::AccessCachedSize() const { return &_impl_._cached_size_; } void A_Indirection::InternalSwap(A_Indirection* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.indirection_.InternalSwap(&other->_impl_.indirection_); swap(_impl_.arg_, other->_impl_.arg_); } ::google::protobuf::Metadata A_Indirection::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[86]); } // =================================================================== class A_ArrayExpr::_Internal { public: }; A_ArrayExpr::A_ArrayExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.A_ArrayExpr) } inline PROTOBUF_NDEBUG_INLINE A_ArrayExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : elements_{visibility, arena, from.elements_}, _cached_size_{0} {} A_ArrayExpr::A_ArrayExpr( ::google::protobuf::Arena* arena, const A_ArrayExpr& from) : ::google::protobuf::Message(arena) { A_ArrayExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.location_ = from._impl_.location_; // @@protoc_insertion_point(copy_constructor:pg_query.A_ArrayExpr) } inline PROTOBUF_NDEBUG_INLINE A_ArrayExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : elements_{visibility, arena}, _cached_size_{0} {} inline void A_ArrayExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.location_ = {}; } A_ArrayExpr::~A_ArrayExpr() { // @@protoc_insertion_point(destructor:pg_query.A_ArrayExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void A_ArrayExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void A_ArrayExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.A_ArrayExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.elements_.Clear(); _impl_.location_ = 0; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* A_ArrayExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 0, 2> A_ArrayExpr::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_A_ArrayExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 2 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(A_ArrayExpr, _impl_.location_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(A_ArrayExpr, _impl_.location_)}}, // repeated .pg_query.Node elements = 1 [json_name = "elements"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(A_ArrayExpr, _impl_.elements_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node elements = 1 [json_name = "elements"]; {PROTOBUF_FIELD_OFFSET(A_ArrayExpr, _impl_.elements_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 2 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(A_ArrayExpr, _impl_.location_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* A_ArrayExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.A_ArrayExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node elements = 1 [json_name = "elements"]; for (unsigned i = 0, n = static_cast(this->_internal_elements_size()); i < n; i++) { const auto& repfield = this->_internal_elements().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 2 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<2>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_elements()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // int32 location = 2 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData A_ArrayExpr::_class_data_ = { A_ArrayExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* A_ArrayExpr::GetClassData() const { return &_class_data_; } void A_ArrayExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.A_ArrayExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_elements()->MergeFrom( from._internal_elements()); if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } 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); } PROTOBUF_NOINLINE bool A_ArrayExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* A_ArrayExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void A_ArrayExpr::InternalSwap(A_ArrayExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.elements_.InternalSwap(&other->_impl_.elements_); swap(_impl_.location_, other->_impl_.location_); } ::google::protobuf::Metadata A_ArrayExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[87]); } // =================================================================== class ResTarget::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(ResTarget, _impl_._has_bits_); static const ::pg_query::Node& val(const ResTarget* msg); static void set_has_val(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& ResTarget::_Internal::val(const ResTarget* msg) { return *msg->_impl_.val_; } ResTarget::ResTarget(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ResTarget) } inline PROTOBUF_NDEBUG_INLINE ResTarget::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, indirection_{visibility, arena, from.indirection_}, name_(arena, from.name_) {} ResTarget::ResTarget( ::google::protobuf::Arena* arena, const ResTarget& from) : ::google::protobuf::Message(arena) { ResTarget* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.val_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.val_) : nullptr; _impl_.location_ = from._impl_.location_; // @@protoc_insertion_point(copy_constructor:pg_query.ResTarget) } inline PROTOBUF_NDEBUG_INLINE ResTarget::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, indirection_{visibility, arena}, name_(arena) {} inline void ResTarget::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, val_), 0, offsetof(Impl_, location_) - offsetof(Impl_, val_) + sizeof(Impl_::location_)); } ResTarget::~ResTarget() { // @@protoc_insertion_point(destructor:pg_query.ResTarget) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ResTarget::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); delete _impl_.val_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void ResTarget::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ResTarget) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.indirection_.Clear(); _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.val_ != nullptr); _impl_.val_->Clear(); } _impl_.location_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ResTarget::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 31, 2> ResTarget::_table_ = { { PROTOBUF_FIELD_OFFSET(ResTarget, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ResTarget_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 4 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ResTarget, _impl_.location_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(ResTarget, _impl_.location_)}}, // string name = 1 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(ResTarget, _impl_.name_)}}, // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(ResTarget, _impl_.indirection_)}}, // .pg_query.Node val = 3 [json_name = "val"]; {::_pbi::TcParser::FastMtS1, {26, 0, 1, PROTOBUF_FIELD_OFFSET(ResTarget, _impl_.val_)}}, }}, {{ 65535, 65535 }}, {{ // string name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(ResTarget, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; {PROTOBUF_FIELD_OFFSET(ResTarget, _impl_.indirection_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node val = 3 [json_name = "val"]; {PROTOBUF_FIELD_OFFSET(ResTarget, _impl_.val_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 4 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(ResTarget, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\22\4\0\0\0\0\0\0" "pg_query.ResTarget" "name" }}, }; ::uint8_t* ResTarget::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ResTarget) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ResTarget.name"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; for (unsigned i = 0, n = static_cast(this->_internal_indirection_size()); i < n; i++) { const auto& repfield = this->_internal_indirection().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node val = 3 [json_name = "val"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::val(this), _Internal::val(this).GetCachedSize(), target, stream); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_indirection()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.Node val = 3 [json_name = "val"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.val_); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ResTarget::_class_data_ = { ResTarget::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ResTarget::GetClassData() const { return &_class_data_; } void ResTarget::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ResTarget) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_indirection()->MergeFrom( from._internal_indirection()); if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_val()->::pg_query::Node::MergeFrom( from._internal_val()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ResTarget::CopyFrom(const ResTarget& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ResTarget) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ResTarget::IsInitialized() const { return true; } ::_pbi::CachedSize* ResTarget::AccessCachedSize() const { return &_impl_._cached_size_; } void ResTarget::InternalSwap(ResTarget* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.indirection_.InternalSwap(&other->_impl_.indirection_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(ResTarget, _impl_.location_) + sizeof(ResTarget::_impl_.location_) - PROTOBUF_FIELD_OFFSET(ResTarget, _impl_.val_)>( reinterpret_cast(&_impl_.val_), reinterpret_cast(&other->_impl_.val_)); } ::google::protobuf::Metadata ResTarget::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[88]); } // =================================================================== class MultiAssignRef::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(MultiAssignRef, _impl_._has_bits_); static const ::pg_query::Node& source(const MultiAssignRef* msg); static void set_has_source(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& MultiAssignRef::_Internal::source(const MultiAssignRef* msg) { return *msg->_impl_.source_; } MultiAssignRef::MultiAssignRef(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.MultiAssignRef) } inline PROTOBUF_NDEBUG_INLINE MultiAssignRef::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} MultiAssignRef::MultiAssignRef( ::google::protobuf::Arena* arena, const MultiAssignRef& from) : ::google::protobuf::Message(arena) { MultiAssignRef* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.source_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.source_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, colno_), reinterpret_cast(&from._impl_) + offsetof(Impl_, colno_), offsetof(Impl_, ncolumns_) - offsetof(Impl_, colno_) + sizeof(Impl_::ncolumns_)); // @@protoc_insertion_point(copy_constructor:pg_query.MultiAssignRef) } inline PROTOBUF_NDEBUG_INLINE MultiAssignRef::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void MultiAssignRef::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, source_), 0, offsetof(Impl_, ncolumns_) - offsetof(Impl_, source_) + sizeof(Impl_::ncolumns_)); } MultiAssignRef::~MultiAssignRef() { // @@protoc_insertion_point(destructor:pg_query.MultiAssignRef) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void MultiAssignRef::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.source_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void MultiAssignRef::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.MultiAssignRef) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.source_ != nullptr); _impl_.source_->Clear(); } ::memset(&_impl_.colno_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.ncolumns_) - reinterpret_cast(&_impl_.colno_)) + sizeof(_impl_.ncolumns_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* MultiAssignRef::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> MultiAssignRef::_table_ = { { PROTOBUF_FIELD_OFFSET(MultiAssignRef, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_MultiAssignRef_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node source = 1 [json_name = "source"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(MultiAssignRef, _impl_.source_)}}, // int32 colno = 2 [json_name = "colno"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MultiAssignRef, _impl_.colno_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(MultiAssignRef, _impl_.colno_)}}, // int32 ncolumns = 3 [json_name = "ncolumns"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MultiAssignRef, _impl_.ncolumns_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(MultiAssignRef, _impl_.ncolumns_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node source = 1 [json_name = "source"]; {PROTOBUF_FIELD_OFFSET(MultiAssignRef, _impl_.source_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 colno = 2 [json_name = "colno"]; {PROTOBUF_FIELD_OFFSET(MultiAssignRef, _impl_.colno_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 ncolumns = 3 [json_name = "ncolumns"]; {PROTOBUF_FIELD_OFFSET(MultiAssignRef, _impl_.ncolumns_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* MultiAssignRef::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.MultiAssignRef) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node source = 1 [json_name = "source"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::source(this), _Internal::source(this).GetCachedSize(), target, stream); } // int32 colno = 2 [json_name = "colno"]; if (this->_internal_colno() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<2>( stream, this->_internal_colno(), target); } // int32 ncolumns = 3 [json_name = "ncolumns"]; if (this->_internal_ncolumns() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_ncolumns(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.source_); } // int32 colno = 2 [json_name = "colno"]; if (this->_internal_colno() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_colno()); } // int32 ncolumns = 3 [json_name = "ncolumns"]; if (this->_internal_ncolumns() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_ncolumns()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData MultiAssignRef::_class_data_ = { MultiAssignRef::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* MultiAssignRef::GetClassData() const { return &_class_data_; } void MultiAssignRef::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.MultiAssignRef) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_source()->::pg_query::Node::MergeFrom( from._internal_source()); } if (from._internal_colno() != 0) { _this->_internal_set_colno(from._internal_colno()); } if (from._internal_ncolumns() != 0) { _this->_internal_set_ncolumns(from._internal_ncolumns()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void MultiAssignRef::CopyFrom(const MultiAssignRef& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.MultiAssignRef) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool MultiAssignRef::IsInitialized() const { return true; } ::_pbi::CachedSize* MultiAssignRef::AccessCachedSize() const { return &_impl_._cached_size_; } void MultiAssignRef::InternalSwap(MultiAssignRef* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(MultiAssignRef, _impl_.ncolumns_) + sizeof(MultiAssignRef::_impl_.ncolumns_) - PROTOBUF_FIELD_OFFSET(MultiAssignRef, _impl_.source_)>( reinterpret_cast(&_impl_.source_), reinterpret_cast(&other->_impl_.source_)); } ::google::protobuf::Metadata MultiAssignRef::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[89]); } // =================================================================== class SortBy::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(SortBy, _impl_._has_bits_); static const ::pg_query::Node& node(const SortBy* msg); static void set_has_node(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& SortBy::_Internal::node(const SortBy* msg) { return *msg->_impl_.node_; } SortBy::SortBy(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SortBy) } inline PROTOBUF_NDEBUG_INLINE SortBy::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, use_op_{visibility, arena, from.use_op_} {} SortBy::SortBy( ::google::protobuf::Arena* arena, const SortBy& from) : ::google::protobuf::Message(arena) { SortBy* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.node_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.node_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, sortby_dir_), reinterpret_cast(&from._impl_) + offsetof(Impl_, sortby_dir_), offsetof(Impl_, location_) - offsetof(Impl_, sortby_dir_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.SortBy) } inline PROTOBUF_NDEBUG_INLINE SortBy::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, use_op_{visibility, arena} {} inline void SortBy::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, node_), 0, offsetof(Impl_, location_) - offsetof(Impl_, node_) + sizeof(Impl_::location_)); } SortBy::~SortBy() { // @@protoc_insertion_point(destructor:pg_query.SortBy) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void SortBy::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.node_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void SortBy::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SortBy) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.use_op_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.node_ != nullptr); _impl_.node_->Clear(); } ::memset(&_impl_.sortby_dir_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.sortby_dir_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* SortBy::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 0, 2> SortBy::_table_ = { { PROTOBUF_FIELD_OFFSET(SortBy, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_SortBy_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node node = 1 [json_name = "node"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(SortBy, _impl_.node_)}}, // .pg_query.SortByDir sortby_dir = 2 [json_name = "sortby_dir"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SortBy, _impl_.sortby_dir_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(SortBy, _impl_.sortby_dir_)}}, // .pg_query.SortByNulls sortby_nulls = 3 [json_name = "sortby_nulls"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SortBy, _impl_.sortby_nulls_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(SortBy, _impl_.sortby_nulls_)}}, // repeated .pg_query.Node use_op = 4 [json_name = "useOp"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(SortBy, _impl_.use_op_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SortBy, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(SortBy, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node node = 1 [json_name = "node"]; {PROTOBUF_FIELD_OFFSET(SortBy, _impl_.node_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SortByDir sortby_dir = 2 [json_name = "sortby_dir"]; {PROTOBUF_FIELD_OFFSET(SortBy, _impl_.sortby_dir_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.SortByNulls sortby_nulls = 3 [json_name = "sortby_nulls"]; {PROTOBUF_FIELD_OFFSET(SortBy, _impl_.sortby_nulls_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node use_op = 4 [json_name = "useOp"]; {PROTOBUF_FIELD_OFFSET(SortBy, _impl_.use_op_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(SortBy, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* SortBy::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SortBy) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node node = 1 [json_name = "node"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::node(this), _Internal::node(this).GetCachedSize(), target, stream); } // .pg_query.SortByDir sortby_dir = 2 [json_name = "sortby_dir"]; if (this->_internal_sortby_dir() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_sortby_dir(), target); } // .pg_query.SortByNulls sortby_nulls = 3 [json_name = "sortby_nulls"]; if (this->_internal_sortby_nulls() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_sortby_nulls(), target); } // repeated .pg_query.Node use_op = 4 [json_name = "useOp"]; for (unsigned i = 0, n = static_cast(this->_internal_use_op_size()); i < n; i++) { const auto& repfield = this->_internal_use_op().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_use_op()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node node = 1 [json_name = "node"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.node_); } // .pg_query.SortByDir sortby_dir = 2 [json_name = "sortby_dir"]; if (this->_internal_sortby_dir() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_sortby_dir()); } // .pg_query.SortByNulls sortby_nulls = 3 [json_name = "sortby_nulls"]; if (this->_internal_sortby_nulls() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_sortby_nulls()); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData SortBy::_class_data_ = { SortBy::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* SortBy::GetClassData() const { return &_class_data_; } void SortBy::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SortBy) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_use_op()->MergeFrom( from._internal_use_op()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_node()->::pg_query::Node::MergeFrom( from._internal_node()); } if (from._internal_sortby_dir() != 0) { _this->_internal_set_sortby_dir(from._internal_sortby_dir()); } if (from._internal_sortby_nulls() != 0) { _this->_internal_set_sortby_nulls(from._internal_sortby_nulls()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void SortBy::CopyFrom(const SortBy& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SortBy) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool SortBy::IsInitialized() const { return true; } ::_pbi::CachedSize* SortBy::AccessCachedSize() const { return &_impl_._cached_size_; } void SortBy::InternalSwap(SortBy* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.use_op_.InternalSwap(&other->_impl_.use_op_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(SortBy, _impl_.location_) + sizeof(SortBy::_impl_.location_) - PROTOBUF_FIELD_OFFSET(SortBy, _impl_.node_)>( reinterpret_cast(&_impl_.node_), reinterpret_cast(&other->_impl_.node_)); } ::google::protobuf::Metadata SortBy::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[90]); } // =================================================================== class WindowDef::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(WindowDef, _impl_._has_bits_); static const ::pg_query::Node& start_offset(const WindowDef* msg); static void set_has_start_offset(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& end_offset(const WindowDef* msg); static void set_has_end_offset(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& WindowDef::_Internal::start_offset(const WindowDef* msg) { return *msg->_impl_.start_offset_; } const ::pg_query::Node& WindowDef::_Internal::end_offset(const WindowDef* msg) { return *msg->_impl_.end_offset_; } WindowDef::WindowDef(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.WindowDef) } inline PROTOBUF_NDEBUG_INLINE WindowDef::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, partition_clause_{visibility, arena, from.partition_clause_}, order_clause_{visibility, arena, from.order_clause_}, name_(arena, from.name_), refname_(arena, from.refname_) {} WindowDef::WindowDef( ::google::protobuf::Arena* arena, const WindowDef& from) : ::google::protobuf::Message(arena) { WindowDef* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.start_offset_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.start_offset_) : nullptr; _impl_.end_offset_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.end_offset_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, frame_options_), reinterpret_cast(&from._impl_) + offsetof(Impl_, frame_options_), offsetof(Impl_, location_) - offsetof(Impl_, frame_options_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.WindowDef) } inline PROTOBUF_NDEBUG_INLINE WindowDef::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, partition_clause_{visibility, arena}, order_clause_{visibility, arena}, name_(arena), refname_(arena) {} inline void WindowDef::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, start_offset_), 0, offsetof(Impl_, location_) - offsetof(Impl_, start_offset_) + sizeof(Impl_::location_)); } WindowDef::~WindowDef() { // @@protoc_insertion_point(destructor:pg_query.WindowDef) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void WindowDef::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); _impl_.refname_.Destroy(); delete _impl_.start_offset_; delete _impl_.end_offset_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void WindowDef::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.WindowDef) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.partition_clause_.Clear(); _impl_.order_clause_.Clear(); _impl_.name_.ClearToEmpty(); _impl_.refname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.start_offset_ != nullptr); _impl_.start_offset_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.end_offset_ != nullptr); _impl_.end_offset_->Clear(); } } ::memset(&_impl_.frame_options_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.frame_options_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* WindowDef::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 4, 46, 2> WindowDef::_table_ = { { PROTOBUF_FIELD_OFFSET(WindowDef, _impl_._has_bits_), 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_WindowDef_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 8 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowDef, _impl_.location_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.location_)}}, // string name = 1 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.name_)}}, // string refname = 2 [json_name = "refname"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.refname_)}}, // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; {::_pbi::TcParser::FastMtR1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.partition_clause_)}}, // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.order_clause_)}}, // int32 frame_options = 5 [json_name = "frameOptions"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowDef, _impl_.frame_options_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.frame_options_)}}, // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; {::_pbi::TcParser::FastMtS1, {50, 0, 2, PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.start_offset_)}}, // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; {::_pbi::TcParser::FastMtS1, {58, 1, 3, PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.end_offset_)}}, }}, {{ 65535, 65535 }}, {{ // string name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string refname = 2 [json_name = "refname"]; {PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.refname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; {PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.partition_clause_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; {PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.order_clause_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 frame_options = 5 [json_name = "frameOptions"]; {PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.frame_options_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; {PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.start_offset_), _Internal::kHasBitsOffset + 0, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; {PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.end_offset_), _Internal::kHasBitsOffset + 1, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 8 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\22\4\7\0\0\0\0\0\0\0\0\0\0\0\0\0" "pg_query.WindowDef" "name" "refname" }}, }; ::uint8_t* WindowDef::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.WindowDef) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.WindowDef.name"); target = stream->WriteStringMaybeAliased(1, _s, target); } // string refname = 2 [json_name = "refname"]; if (!this->_internal_refname().empty()) { const std::string& _s = this->_internal_refname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.WindowDef.refname"); target = stream->WriteStringMaybeAliased(2, _s, target); } // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; for (unsigned i = 0, n = static_cast(this->_internal_partition_clause_size()); i < n; i++) { const auto& repfield = this->_internal_partition_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; for (unsigned i = 0, n = static_cast(this->_internal_order_clause_size()); i < n; i++) { const auto& repfield = this->_internal_order_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // int32 frame_options = 5 [json_name = "frameOptions"]; if (this->_internal_frame_options() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_frame_options(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::start_offset(this), _Internal::start_offset(this).GetCachedSize(), target, stream); } // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 7, _Internal::end_offset(this), _Internal::end_offset(this).GetCachedSize(), target, stream); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<8>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_partition_clause()) { total_size += ::google::protobuf::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->_internal_order_clause()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // string refname = 2 [json_name = "refname"]; if (!this->_internal_refname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_refname()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.start_offset_); } // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.end_offset_); } } // int32 frame_options = 5 [json_name = "frameOptions"]; if (this->_internal_frame_options() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_frame_options()); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData WindowDef::_class_data_ = { WindowDef::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* WindowDef::GetClassData() const { return &_class_data_; } void WindowDef::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.WindowDef) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_partition_clause()->MergeFrom( from._internal_partition_clause()); _this->_internal_mutable_order_clause()->MergeFrom( from._internal_order_clause()); if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if (!from._internal_refname().empty()) { _this->_internal_set_refname(from._internal_refname()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_start_offset()->::pg_query::Node::MergeFrom( from._internal_start_offset()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_end_offset()->::pg_query::Node::MergeFrom( from._internal_end_offset()); } } if (from._internal_frame_options() != 0) { _this->_internal_set_frame_options(from._internal_frame_options()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void WindowDef::CopyFrom(const WindowDef& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.WindowDef) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool WindowDef::IsInitialized() const { return true; } ::_pbi::CachedSize* WindowDef::AccessCachedSize() const { return &_impl_._cached_size_; } void WindowDef::InternalSwap(WindowDef* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.partition_clause_.InternalSwap(&other->_impl_.partition_clause_); _impl_.order_clause_.InternalSwap(&other->_impl_.order_clause_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.refname_, &other->_impl_.refname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.location_) + sizeof(WindowDef::_impl_.location_) - PROTOBUF_FIELD_OFFSET(WindowDef, _impl_.start_offset_)>( reinterpret_cast(&_impl_.start_offset_), reinterpret_cast(&other->_impl_.start_offset_)); } ::google::protobuf::Metadata WindowDef::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[91]); } // =================================================================== class RangeSubselect::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RangeSubselect, _impl_._has_bits_); static const ::pg_query::Node& subquery(const RangeSubselect* msg); static void set_has_subquery(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Alias& alias(const RangeSubselect* msg); static void set_has_alias(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& RangeSubselect::_Internal::subquery(const RangeSubselect* msg) { return *msg->_impl_.subquery_; } const ::pg_query::Alias& RangeSubselect::_Internal::alias(const RangeSubselect* msg) { return *msg->_impl_.alias_; } RangeSubselect::RangeSubselect(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeSubselect) } inline PROTOBUF_NDEBUG_INLINE RangeSubselect::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} RangeSubselect::RangeSubselect( ::google::protobuf::Arena* arena, const RangeSubselect& from) : ::google::protobuf::Message(arena) { RangeSubselect* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.subquery_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.subquery_) : nullptr; _impl_.alias_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Alias>(arena, *from._impl_.alias_) : nullptr; _impl_.lateral_ = from._impl_.lateral_; // @@protoc_insertion_point(copy_constructor:pg_query.RangeSubselect) } inline PROTOBUF_NDEBUG_INLINE RangeSubselect::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void RangeSubselect::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, subquery_), 0, offsetof(Impl_, lateral_) - offsetof(Impl_, subquery_) + sizeof(Impl_::lateral_)); } RangeSubselect::~RangeSubselect() { // @@protoc_insertion_point(destructor:pg_query.RangeSubselect) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RangeSubselect::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.subquery_; delete _impl_.alias_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RangeSubselect::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeSubselect) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.subquery_ != nullptr); _impl_.subquery_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.alias_ != nullptr); _impl_.alias_->Clear(); } } _impl_.lateral_ = false; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RangeSubselect::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 0, 2> RangeSubselect::_table_ = { { PROTOBUF_FIELD_OFFSET(RangeSubselect, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RangeSubselect_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // bool lateral = 1 [json_name = "lateral"]; {::_pbi::TcParser::SingularVarintNoZag1(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(RangeSubselect, _impl_.lateral_)}}, // .pg_query.Node subquery = 2 [json_name = "subquery"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(RangeSubselect, _impl_.subquery_)}}, // .pg_query.Alias alias = 3 [json_name = "alias"]; {::_pbi::TcParser::FastMtS1, {26, 1, 1, PROTOBUF_FIELD_OFFSET(RangeSubselect, _impl_.alias_)}}, }}, {{ 65535, 65535 }}, {{ // bool lateral = 1 [json_name = "lateral"]; {PROTOBUF_FIELD_OFFSET(RangeSubselect, _impl_.lateral_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.Node subquery = 2 [json_name = "subquery"]; {PROTOBUF_FIELD_OFFSET(RangeSubselect, _impl_.subquery_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Alias alias = 3 [json_name = "alias"]; {PROTOBUF_FIELD_OFFSET(RangeSubselect, _impl_.alias_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Alias>()}, }}, {{ }}, }; ::uint8_t* RangeSubselect::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeSubselect) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // bool lateral = 1 [json_name = "lateral"]; if (this->_internal_lateral() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 1, this->_internal_lateral(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node subquery = 2 [json_name = "subquery"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::subquery(this), _Internal::subquery(this).GetCachedSize(), target, stream); } // .pg_query.Alias alias = 3 [json_name = "alias"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::alias(this), _Internal::alias(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node subquery = 2 [json_name = "subquery"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.subquery_); } // .pg_query.Alias alias = 3 [json_name = "alias"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.alias_); } } // bool lateral = 1 [json_name = "lateral"]; if (this->_internal_lateral() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RangeSubselect::_class_data_ = { RangeSubselect::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RangeSubselect::GetClassData() const { return &_class_data_; } void RangeSubselect::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeSubselect) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_subquery()->::pg_query::Node::MergeFrom( from._internal_subquery()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_alias()->::pg_query::Alias::MergeFrom( from._internal_alias()); } } if (from._internal_lateral() != 0) { _this->_internal_set_lateral(from._internal_lateral()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RangeSubselect::CopyFrom(const RangeSubselect& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeSubselect) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RangeSubselect::IsInitialized() const { return true; } ::_pbi::CachedSize* RangeSubselect::AccessCachedSize() const { return &_impl_._cached_size_; } void RangeSubselect::InternalSwap(RangeSubselect* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeSubselect, _impl_.lateral_) + sizeof(RangeSubselect::_impl_.lateral_) - PROTOBUF_FIELD_OFFSET(RangeSubselect, _impl_.subquery_)>( reinterpret_cast(&_impl_.subquery_), reinterpret_cast(&other->_impl_.subquery_)); } ::google::protobuf::Metadata RangeSubselect::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[92]); } // =================================================================== class RangeFunction::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_._has_bits_); static const ::pg_query::Alias& alias(const RangeFunction* msg); static void set_has_alias(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Alias& RangeFunction::_Internal::alias(const RangeFunction* msg) { return *msg->_impl_.alias_; } RangeFunction::RangeFunction(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeFunction) } inline PROTOBUF_NDEBUG_INLINE RangeFunction::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, functions_{visibility, arena, from.functions_}, coldeflist_{visibility, arena, from.coldeflist_} {} RangeFunction::RangeFunction( ::google::protobuf::Arena* arena, const RangeFunction& from) : ::google::protobuf::Message(arena) { RangeFunction* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.alias_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Alias>(arena, *from._impl_.alias_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, lateral_), reinterpret_cast(&from._impl_) + offsetof(Impl_, lateral_), offsetof(Impl_, is_rowsfrom_) - offsetof(Impl_, lateral_) + sizeof(Impl_::is_rowsfrom_)); // @@protoc_insertion_point(copy_constructor:pg_query.RangeFunction) } inline PROTOBUF_NDEBUG_INLINE RangeFunction::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, functions_{visibility, arena}, coldeflist_{visibility, arena} {} inline void RangeFunction::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, alias_), 0, offsetof(Impl_, is_rowsfrom_) - offsetof(Impl_, alias_) + sizeof(Impl_::is_rowsfrom_)); } RangeFunction::~RangeFunction() { // @@protoc_insertion_point(destructor:pg_query.RangeFunction) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RangeFunction::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.alias_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RangeFunction::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeFunction) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.functions_.Clear(); _impl_.coldeflist_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.alias_ != nullptr); _impl_.alias_->Clear(); } ::memset(&_impl_.lateral_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.is_rowsfrom_) - reinterpret_cast(&_impl_.lateral_)) + sizeof(_impl_.is_rowsfrom_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RangeFunction::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 3, 0, 2> RangeFunction::_table_ = { { PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RangeFunction_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // bool lateral = 1 [json_name = "lateral"]; {::_pbi::TcParser::SingularVarintNoZag1(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_.lateral_)}}, // bool ordinality = 2 [json_name = "ordinality"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_.ordinality_)}}, // bool is_rowsfrom = 3 [json_name = "is_rowsfrom"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_.is_rowsfrom_)}}, // repeated .pg_query.Node functions = 4 [json_name = "functions"]; {::_pbi::TcParser::FastMtR1, {34, 63, 0, PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_.functions_)}}, // .pg_query.Alias alias = 5 [json_name = "alias"]; {::_pbi::TcParser::FastMtS1, {42, 0, 1, PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_.alias_)}}, // repeated .pg_query.Node coldeflist = 6 [json_name = "coldeflist"]; {::_pbi::TcParser::FastMtR1, {50, 63, 2, PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_.coldeflist_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // bool lateral = 1 [json_name = "lateral"]; {PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_.lateral_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool ordinality = 2 [json_name = "ordinality"]; {PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_.ordinality_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool is_rowsfrom = 3 [json_name = "is_rowsfrom"]; {PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_.is_rowsfrom_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node functions = 4 [json_name = "functions"]; {PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_.functions_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Alias alias = 5 [json_name = "alias"]; {PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_.alias_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node coldeflist = 6 [json_name = "coldeflist"]; {PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_.coldeflist_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Alias>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* RangeFunction::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeFunction) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // bool lateral = 1 [json_name = "lateral"]; if (this->_internal_lateral() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 1, this->_internal_lateral(), target); } // bool ordinality = 2 [json_name = "ordinality"]; if (this->_internal_ordinality() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_ordinality(), target); } // bool is_rowsfrom = 3 [json_name = "is_rowsfrom"]; if (this->_internal_is_rowsfrom() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_is_rowsfrom(), target); } // repeated .pg_query.Node functions = 4 [json_name = "functions"]; for (unsigned i = 0, n = static_cast(this->_internal_functions_size()); i < n; i++) { const auto& repfield = this->_internal_functions().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Alias alias = 5 [json_name = "alias"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::alias(this), _Internal::alias(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node coldeflist = 6 [json_name = "coldeflist"]; for (unsigned i = 0, n = static_cast(this->_internal_coldeflist_size()); i < n; i++) { const auto& repfield = this->_internal_coldeflist().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_functions()) { total_size += ::google::protobuf::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->_internal_coldeflist()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Alias alias = 5 [json_name = "alias"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.alias_); } // bool lateral = 1 [json_name = "lateral"]; if (this->_internal_lateral() != 0) { total_size += 2; } // bool ordinality = 2 [json_name = "ordinality"]; if (this->_internal_ordinality() != 0) { total_size += 2; } // bool is_rowsfrom = 3 [json_name = "is_rowsfrom"]; if (this->_internal_is_rowsfrom() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RangeFunction::_class_data_ = { RangeFunction::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RangeFunction::GetClassData() const { return &_class_data_; } void RangeFunction::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeFunction) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_functions()->MergeFrom( from._internal_functions()); _this->_internal_mutable_coldeflist()->MergeFrom( from._internal_coldeflist()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_alias()->::pg_query::Alias::MergeFrom( from._internal_alias()); } if (from._internal_lateral() != 0) { _this->_internal_set_lateral(from._internal_lateral()); } if (from._internal_ordinality() != 0) { _this->_internal_set_ordinality(from._internal_ordinality()); } if (from._internal_is_rowsfrom() != 0) { _this->_internal_set_is_rowsfrom(from._internal_is_rowsfrom()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RangeFunction::CopyFrom(const RangeFunction& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeFunction) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RangeFunction::IsInitialized() const { return true; } ::_pbi::CachedSize* RangeFunction::AccessCachedSize() const { return &_impl_._cached_size_; } void RangeFunction::InternalSwap(RangeFunction* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.functions_.InternalSwap(&other->_impl_.functions_); _impl_.coldeflist_.InternalSwap(&other->_impl_.coldeflist_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_.is_rowsfrom_) + sizeof(RangeFunction::_impl_.is_rowsfrom_) - PROTOBUF_FIELD_OFFSET(RangeFunction, _impl_.alias_)>( reinterpret_cast(&_impl_.alias_), reinterpret_cast(&other->_impl_.alias_)); } ::google::protobuf::Metadata RangeFunction::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[93]); } // =================================================================== class RangeTableFunc::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_._has_bits_); static const ::pg_query::Node& docexpr(const RangeTableFunc* msg); static void set_has_docexpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& rowexpr(const RangeTableFunc* msg); static void set_has_rowexpr(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Alias& alias(const RangeTableFunc* msg); static void set_has_alias(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::Node& RangeTableFunc::_Internal::docexpr(const RangeTableFunc* msg) { return *msg->_impl_.docexpr_; } const ::pg_query::Node& RangeTableFunc::_Internal::rowexpr(const RangeTableFunc* msg) { return *msg->_impl_.rowexpr_; } const ::pg_query::Alias& RangeTableFunc::_Internal::alias(const RangeTableFunc* msg) { return *msg->_impl_.alias_; } RangeTableFunc::RangeTableFunc(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeTableFunc) } inline PROTOBUF_NDEBUG_INLINE RangeTableFunc::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, namespaces_{visibility, arena, from.namespaces_}, columns_{visibility, arena, from.columns_} {} RangeTableFunc::RangeTableFunc( ::google::protobuf::Arena* arena, const RangeTableFunc& from) : ::google::protobuf::Message(arena) { RangeTableFunc* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.docexpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.docexpr_) : nullptr; _impl_.rowexpr_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.rowexpr_) : nullptr; _impl_.alias_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Alias>(arena, *from._impl_.alias_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, lateral_), reinterpret_cast(&from._impl_) + offsetof(Impl_, lateral_), offsetof(Impl_, location_) - offsetof(Impl_, lateral_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.RangeTableFunc) } inline PROTOBUF_NDEBUG_INLINE RangeTableFunc::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, namespaces_{visibility, arena}, columns_{visibility, arena} {} inline void RangeTableFunc::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, docexpr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, docexpr_) + sizeof(Impl_::location_)); } RangeTableFunc::~RangeTableFunc() { // @@protoc_insertion_point(destructor:pg_query.RangeTableFunc) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RangeTableFunc::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.docexpr_; delete _impl_.rowexpr_; delete _impl_.alias_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RangeTableFunc::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeTableFunc) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.namespaces_.Clear(); _impl_.columns_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.docexpr_ != nullptr); _impl_.docexpr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.rowexpr_ != nullptr); _impl_.rowexpr_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.alias_ != nullptr); _impl_.alias_->Clear(); } } ::memset(&_impl_.lateral_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.lateral_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RangeTableFunc::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 5, 0, 2> RangeTableFunc::_table_ = { { PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 5, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RangeTableFunc_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // bool lateral = 1 [json_name = "lateral"]; {::_pbi::TcParser::SingularVarintNoZag1(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.lateral_)}}, // .pg_query.Node docexpr = 2 [json_name = "docexpr"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.docexpr_)}}, // .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; {::_pbi::TcParser::FastMtS1, {26, 1, 1, PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.rowexpr_)}}, // repeated .pg_query.Node namespaces = 4 [json_name = "namespaces"]; {::_pbi::TcParser::FastMtR1, {34, 63, 2, PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.namespaces_)}}, // repeated .pg_query.Node columns = 5 [json_name = "columns"]; {::_pbi::TcParser::FastMtR1, {42, 63, 3, PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.columns_)}}, // .pg_query.Alias alias = 6 [json_name = "alias"]; {::_pbi::TcParser::FastMtS1, {50, 2, 4, PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.alias_)}}, // int32 location = 7 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RangeTableFunc, _impl_.location_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // bool lateral = 1 [json_name = "lateral"]; {PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.lateral_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.Node docexpr = 2 [json_name = "docexpr"]; {PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.docexpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; {PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.rowexpr_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node namespaces = 4 [json_name = "namespaces"]; {PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.namespaces_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node columns = 5 [json_name = "columns"]; {PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.columns_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Alias alias = 6 [json_name = "alias"]; {PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.alias_), _Internal::kHasBitsOffset + 2, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 7 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Alias>()}, }}, {{ }}, }; ::uint8_t* RangeTableFunc::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeTableFunc) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // bool lateral = 1 [json_name = "lateral"]; if (this->_internal_lateral() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 1, this->_internal_lateral(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node docexpr = 2 [json_name = "docexpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::docexpr(this), _Internal::docexpr(this).GetCachedSize(), target, stream); } // .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::rowexpr(this), _Internal::rowexpr(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node namespaces = 4 [json_name = "namespaces"]; for (unsigned i = 0, n = static_cast(this->_internal_namespaces_size()); i < n; i++) { const auto& repfield = this->_internal_namespaces().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node columns = 5 [json_name = "columns"]; for (unsigned i = 0, n = static_cast(this->_internal_columns_size()); i < n; i++) { const auto& repfield = this->_internal_columns().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Alias alias = 6 [json_name = "alias"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::alias(this), _Internal::alias(this).GetCachedSize(), target, stream); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<7>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_namespaces()) { total_size += ::google::protobuf::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->_internal_columns()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.Node docexpr = 2 [json_name = "docexpr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.docexpr_); } // .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.rowexpr_); } // .pg_query.Alias alias = 6 [json_name = "alias"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.alias_); } } // bool lateral = 1 [json_name = "lateral"]; if (this->_internal_lateral() != 0) { total_size += 2; } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RangeTableFunc::_class_data_ = { RangeTableFunc::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RangeTableFunc::GetClassData() const { return &_class_data_; } void RangeTableFunc::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeTableFunc) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_namespaces()->MergeFrom( from._internal_namespaces()); _this->_internal_mutable_columns()->MergeFrom( from._internal_columns()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_docexpr()->::pg_query::Node::MergeFrom( from._internal_docexpr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_rowexpr()->::pg_query::Node::MergeFrom( from._internal_rowexpr()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_alias()->::pg_query::Alias::MergeFrom( from._internal_alias()); } } if (from._internal_lateral() != 0) { _this->_internal_set_lateral(from._internal_lateral()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RangeTableFunc::CopyFrom(const RangeTableFunc& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeTableFunc) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RangeTableFunc::IsInitialized() const { return true; } ::_pbi::CachedSize* RangeTableFunc::AccessCachedSize() const { return &_impl_._cached_size_; } void RangeTableFunc::InternalSwap(RangeTableFunc* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.namespaces_.InternalSwap(&other->_impl_.namespaces_); _impl_.columns_.InternalSwap(&other->_impl_.columns_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.location_) + sizeof(RangeTableFunc::_impl_.location_) - PROTOBUF_FIELD_OFFSET(RangeTableFunc, _impl_.docexpr_)>( reinterpret_cast(&_impl_.docexpr_), reinterpret_cast(&other->_impl_.docexpr_)); } ::google::protobuf::Metadata RangeTableFunc::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[94]); } // =================================================================== class RangeTableFuncCol::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_._has_bits_); static const ::pg_query::TypeName& type_name(const RangeTableFuncCol* msg); static void set_has_type_name(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& colexpr(const RangeTableFuncCol* msg); static void set_has_colexpr(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& coldefexpr(const RangeTableFuncCol* msg); static void set_has_coldefexpr(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::TypeName& RangeTableFuncCol::_Internal::type_name(const RangeTableFuncCol* msg) { return *msg->_impl_.type_name_; } const ::pg_query::Node& RangeTableFuncCol::_Internal::colexpr(const RangeTableFuncCol* msg) { return *msg->_impl_.colexpr_; } const ::pg_query::Node& RangeTableFuncCol::_Internal::coldefexpr(const RangeTableFuncCol* msg) { return *msg->_impl_.coldefexpr_; } RangeTableFuncCol::RangeTableFuncCol(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeTableFuncCol) } inline PROTOBUF_NDEBUG_INLINE RangeTableFuncCol::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, colname_(arena, from.colname_) {} RangeTableFuncCol::RangeTableFuncCol( ::google::protobuf::Arena* arena, const RangeTableFuncCol& from) : ::google::protobuf::Message(arena) { RangeTableFuncCol* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.type_name_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.type_name_) : nullptr; _impl_.colexpr_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.colexpr_) : nullptr; _impl_.coldefexpr_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.coldefexpr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, for_ordinality_), reinterpret_cast(&from._impl_) + offsetof(Impl_, for_ordinality_), offsetof(Impl_, location_) - offsetof(Impl_, for_ordinality_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.RangeTableFuncCol) } inline PROTOBUF_NDEBUG_INLINE RangeTableFuncCol::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, colname_(arena) {} inline void RangeTableFuncCol::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, type_name_), 0, offsetof(Impl_, location_) - offsetof(Impl_, type_name_) + sizeof(Impl_::location_)); } RangeTableFuncCol::~RangeTableFuncCol() { // @@protoc_insertion_point(destructor:pg_query.RangeTableFuncCol) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RangeTableFuncCol::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.colname_.Destroy(); delete _impl_.type_name_; delete _impl_.colexpr_; delete _impl_.coldefexpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RangeTableFuncCol::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeTableFuncCol) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.colname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.type_name_ != nullptr); _impl_.type_name_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.colexpr_ != nullptr); _impl_.colexpr_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.coldefexpr_ != nullptr); _impl_.coldefexpr_->Clear(); } } ::memset(&_impl_.for_ordinality_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.for_ordinality_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RangeTableFuncCol::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 3, 42, 2> RangeTableFuncCol::_table_ = { { PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RangeTableFuncCol_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string colname = 1 [json_name = "colname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.colname_)}}, // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.type_name_)}}, // bool for_ordinality = 3 [json_name = "for_ordinality"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.for_ordinality_)}}, // bool is_not_null = 4 [json_name = "is_not_null"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.is_not_null_)}}, // .pg_query.Node colexpr = 5 [json_name = "colexpr"]; {::_pbi::TcParser::FastMtS1, {42, 1, 1, PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.colexpr_)}}, // .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; {::_pbi::TcParser::FastMtS1, {50, 2, 2, PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.coldefexpr_)}}, // int32 location = 7 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RangeTableFuncCol, _impl_.location_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // string colname = 1 [json_name = "colname"]; {PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.colname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; {PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.type_name_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool for_ordinality = 3 [json_name = "for_ordinality"]; {PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.for_ordinality_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool is_not_null = 4 [json_name = "is_not_null"]; {PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.is_not_null_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.Node colexpr = 5 [json_name = "colexpr"]; {PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.colexpr_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; {PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.coldefexpr_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 7 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\32\7\0\0\0\0\0\0" "pg_query.RangeTableFuncCol" "colname" }}, }; ::uint8_t* RangeTableFuncCol::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeTableFuncCol) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string colname = 1 [json_name = "colname"]; if (!this->_internal_colname().empty()) { const std::string& _s = this->_internal_colname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.RangeTableFuncCol.colname"); target = stream->WriteStringMaybeAliased(1, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::type_name(this), _Internal::type_name(this).GetCachedSize(), target, stream); } // bool for_ordinality = 3 [json_name = "for_ordinality"]; if (this->_internal_for_ordinality() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_for_ordinality(), target); } // bool is_not_null = 4 [json_name = "is_not_null"]; if (this->_internal_is_not_null() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_is_not_null(), target); } // .pg_query.Node colexpr = 5 [json_name = "colexpr"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::colexpr(this), _Internal::colexpr(this).GetCachedSize(), target, stream); } // .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::coldefexpr(this), _Internal::coldefexpr(this).GetCachedSize(), target, stream); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<7>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_colname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_colname()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.type_name_); } // .pg_query.Node colexpr = 5 [json_name = "colexpr"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.colexpr_); } // .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.coldefexpr_); } } // bool for_ordinality = 3 [json_name = "for_ordinality"]; if (this->_internal_for_ordinality() != 0) { total_size += 2; } // bool is_not_null = 4 [json_name = "is_not_null"]; if (this->_internal_is_not_null() != 0) { total_size += 2; } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RangeTableFuncCol::_class_data_ = { RangeTableFuncCol::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RangeTableFuncCol::GetClassData() const { return &_class_data_; } void RangeTableFuncCol::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeTableFuncCol) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_colname().empty()) { _this->_internal_set_colname(from._internal_colname()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_type_name()->::pg_query::TypeName::MergeFrom( from._internal_type_name()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_colexpr()->::pg_query::Node::MergeFrom( from._internal_colexpr()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_coldefexpr()->::pg_query::Node::MergeFrom( from._internal_coldefexpr()); } } if (from._internal_for_ordinality() != 0) { _this->_internal_set_for_ordinality(from._internal_for_ordinality()); } if (from._internal_is_not_null() != 0) { _this->_internal_set_is_not_null(from._internal_is_not_null()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RangeTableFuncCol::CopyFrom(const RangeTableFuncCol& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeTableFuncCol) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RangeTableFuncCol::IsInitialized() const { return true; } ::_pbi::CachedSize* RangeTableFuncCol::AccessCachedSize() const { return &_impl_._cached_size_; } void RangeTableFuncCol::InternalSwap(RangeTableFuncCol* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.colname_, &other->_impl_.colname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.location_) + sizeof(RangeTableFuncCol::_impl_.location_) - PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, _impl_.type_name_)>( reinterpret_cast(&_impl_.type_name_), reinterpret_cast(&other->_impl_.type_name_)); } ::google::protobuf::Metadata RangeTableFuncCol::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[95]); } // =================================================================== class RangeTableSample::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RangeTableSample, _impl_._has_bits_); static const ::pg_query::Node& relation(const RangeTableSample* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& repeatable(const RangeTableSample* msg); static void set_has_repeatable(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& RangeTableSample::_Internal::relation(const RangeTableSample* msg) { return *msg->_impl_.relation_; } const ::pg_query::Node& RangeTableSample::_Internal::repeatable(const RangeTableSample* msg) { return *msg->_impl_.repeatable_; } RangeTableSample::RangeTableSample(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeTableSample) } inline PROTOBUF_NDEBUG_INLINE RangeTableSample::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, method_{visibility, arena, from.method_}, args_{visibility, arena, from.args_} {} RangeTableSample::RangeTableSample( ::google::protobuf::Arena* arena, const RangeTableSample& from) : ::google::protobuf::Message(arena) { RangeTableSample* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.relation_) : nullptr; _impl_.repeatable_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.repeatable_) : nullptr; _impl_.location_ = from._impl_.location_; // @@protoc_insertion_point(copy_constructor:pg_query.RangeTableSample) } inline PROTOBUF_NDEBUG_INLINE RangeTableSample::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, method_{visibility, arena}, args_{visibility, arena} {} inline void RangeTableSample::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, location_) - offsetof(Impl_, relation_) + sizeof(Impl_::location_)); } RangeTableSample::~RangeTableSample() { // @@protoc_insertion_point(destructor:pg_query.RangeTableSample) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RangeTableSample::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.relation_; delete _impl_.repeatable_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RangeTableSample::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeTableSample) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.method_.Clear(); _impl_.args_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.repeatable_ != nullptr); _impl_.repeatable_->Clear(); } } _impl_.location_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RangeTableSample::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 4, 0, 2> RangeTableSample::_table_ = { { PROTOBUF_FIELD_OFFSET(RangeTableSample, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RangeTableSample_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node relation = 1 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(RangeTableSample, _impl_.relation_)}}, // repeated .pg_query.Node method = 2 [json_name = "method"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(RangeTableSample, _impl_.method_)}}, // repeated .pg_query.Node args = 3 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {26, 63, 2, PROTOBUF_FIELD_OFFSET(RangeTableSample, _impl_.args_)}}, // .pg_query.Node repeatable = 4 [json_name = "repeatable"]; {::_pbi::TcParser::FastMtS1, {34, 1, 3, PROTOBUF_FIELD_OFFSET(RangeTableSample, _impl_.repeatable_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RangeTableSample, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTableSample, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node relation = 1 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(RangeTableSample, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node method = 2 [json_name = "method"]; {PROTOBUF_FIELD_OFFSET(RangeTableSample, _impl_.method_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node args = 3 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(RangeTableSample, _impl_.args_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node repeatable = 4 [json_name = "repeatable"]; {PROTOBUF_FIELD_OFFSET(RangeTableSample, _impl_.repeatable_), _Internal::kHasBitsOffset + 1, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(RangeTableSample, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* RangeTableSample::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeTableSample) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node method = 2 [json_name = "method"]; for (unsigned i = 0, n = static_cast(this->_internal_method_size()); i < n; i++) { const auto& repfield = this->_internal_method().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node args = 3 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node repeatable = 4 [json_name = "repeatable"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::repeatable(this), _Internal::repeatable(this).GetCachedSize(), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_method()) { total_size += ::google::protobuf::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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.Node repeatable = 4 [json_name = "repeatable"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.repeatable_); } } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RangeTableSample::_class_data_ = { RangeTableSample::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RangeTableSample::GetClassData() const { return &_class_data_; } void RangeTableSample::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeTableSample) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_method()->MergeFrom( from._internal_method()); _this->_internal_mutable_args()->MergeFrom( from._internal_args()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::Node::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_repeatable()->::pg_query::Node::MergeFrom( from._internal_repeatable()); } } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RangeTableSample::CopyFrom(const RangeTableSample& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeTableSample) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RangeTableSample::IsInitialized() const { return true; } ::_pbi::CachedSize* RangeTableSample::AccessCachedSize() const { return &_impl_._cached_size_; } void RangeTableSample::InternalSwap(RangeTableSample* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.method_.InternalSwap(&other->_impl_.method_); _impl_.args_.InternalSwap(&other->_impl_.args_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeTableSample, _impl_.location_) + sizeof(RangeTableSample::_impl_.location_) - PROTOBUF_FIELD_OFFSET(RangeTableSample, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata RangeTableSample::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[96]); } // =================================================================== class ColumnDef::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_._has_bits_); static const ::pg_query::TypeName& type_name(const ColumnDef* msg); static void set_has_type_name(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& raw_default(const ColumnDef* msg); static void set_has_raw_default(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& cooked_default(const ColumnDef* msg); static void set_has_cooked_default(HasBits* has_bits) { (*has_bits)[0] |= 4u; } static const ::pg_query::RangeVar& identity_sequence(const ColumnDef* msg); static void set_has_identity_sequence(HasBits* has_bits) { (*has_bits)[0] |= 8u; } static const ::pg_query::CollateClause& coll_clause(const ColumnDef* msg); static void set_has_coll_clause(HasBits* has_bits) { (*has_bits)[0] |= 16u; } }; const ::pg_query::TypeName& ColumnDef::_Internal::type_name(const ColumnDef* msg) { return *msg->_impl_.type_name_; } const ::pg_query::Node& ColumnDef::_Internal::raw_default(const ColumnDef* msg) { return *msg->_impl_.raw_default_; } const ::pg_query::Node& ColumnDef::_Internal::cooked_default(const ColumnDef* msg) { return *msg->_impl_.cooked_default_; } const ::pg_query::RangeVar& ColumnDef::_Internal::identity_sequence(const ColumnDef* msg) { return *msg->_impl_.identity_sequence_; } const ::pg_query::CollateClause& ColumnDef::_Internal::coll_clause(const ColumnDef* msg) { return *msg->_impl_.coll_clause_; } ColumnDef::ColumnDef(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ColumnDef) } inline PROTOBUF_NDEBUG_INLINE ColumnDef::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, constraints_{visibility, arena, from.constraints_}, fdwoptions_{visibility, arena, from.fdwoptions_}, colname_(arena, from.colname_), compression_(arena, from.compression_), storage_(arena, from.storage_), storage_name_(arena, from.storage_name_), identity_(arena, from.identity_), generated_(arena, from.generated_) {} ColumnDef::ColumnDef( ::google::protobuf::Arena* arena, const ColumnDef& from) : ::google::protobuf::Message(arena) { ColumnDef* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.type_name_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.type_name_) : nullptr; _impl_.raw_default_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.raw_default_) : nullptr; _impl_.cooked_default_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.cooked_default_) : nullptr; _impl_.identity_sequence_ = (cached_has_bits & 0x00000008u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.identity_sequence_) : nullptr; _impl_.coll_clause_ = (cached_has_bits & 0x00000010u) ? CreateMaybeMessage<::pg_query::CollateClause>(arena, *from._impl_.coll_clause_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, inhcount_), reinterpret_cast(&from._impl_) + offsetof(Impl_, inhcount_), offsetof(Impl_, location_) - offsetof(Impl_, inhcount_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.ColumnDef) } inline PROTOBUF_NDEBUG_INLINE ColumnDef::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, constraints_{visibility, arena}, fdwoptions_{visibility, arena}, colname_(arena), compression_(arena), storage_(arena), storage_name_(arena), identity_(arena), generated_(arena) {} inline void ColumnDef::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, type_name_), 0, offsetof(Impl_, location_) - offsetof(Impl_, type_name_) + sizeof(Impl_::location_)); } ColumnDef::~ColumnDef() { // @@protoc_insertion_point(destructor:pg_query.ColumnDef) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ColumnDef::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.colname_.Destroy(); _impl_.compression_.Destroy(); _impl_.storage_.Destroy(); _impl_.storage_name_.Destroy(); _impl_.identity_.Destroy(); _impl_.generated_.Destroy(); delete _impl_.type_name_; delete _impl_.raw_default_; delete _impl_.cooked_default_; delete _impl_.identity_sequence_; delete _impl_.coll_clause_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void ColumnDef::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ColumnDef) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.constraints_.Clear(); _impl_.fdwoptions_.Clear(); _impl_.colname_.ClearToEmpty(); _impl_.compression_.ClearToEmpty(); _impl_.storage_.ClearToEmpty(); _impl_.storage_name_.ClearToEmpty(); _impl_.identity_.ClearToEmpty(); _impl_.generated_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000001fu) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.type_name_ != nullptr); _impl_.type_name_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.raw_default_ != nullptr); _impl_.raw_default_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.cooked_default_ != nullptr); _impl_.cooked_default_->Clear(); } if (cached_has_bits & 0x00000008u) { ABSL_DCHECK(_impl_.identity_sequence_ != nullptr); _impl_.identity_sequence_->Clear(); } if (cached_has_bits & 0x00000010u) { ABSL_DCHECK(_impl_.coll_clause_ != nullptr); _impl_.coll_clause_->Clear(); } } ::memset(&_impl_.inhcount_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.inhcount_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ColumnDef::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<5, 19, 7, 97, 2> ColumnDef::_table_ = { { PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_._has_bits_), 0, // no _extensions_ 19, 248, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294443008, // skipmap offsetof(decltype(_table_), field_entries), 19, // num_field_entries 7, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ColumnDef_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string colname = 1 [json_name = "colname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.colname_)}}, // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.type_name_)}}, // string compression = 3 [json_name = "compression"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.compression_)}}, // int32 inhcount = 4 [json_name = "inhcount"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ColumnDef, _impl_.inhcount_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.inhcount_)}}, // bool is_local = 5 [json_name = "is_local"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.is_local_)}}, // bool is_not_null = 6 [json_name = "is_not_null"]; {::_pbi::TcParser::SingularVarintNoZag1(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.is_not_null_)}}, // bool is_from_type = 7 [json_name = "is_from_type"]; {::_pbi::TcParser::SingularVarintNoZag1(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.is_from_type_)}}, // string storage = 8 [json_name = "storage"]; {::_pbi::TcParser::FastUS1, {66, 63, 0, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.storage_)}}, // string storage_name = 9 [json_name = "storage_name"]; {::_pbi::TcParser::FastUS1, {74, 63, 0, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.storage_name_)}}, // .pg_query.Node raw_default = 10 [json_name = "raw_default"]; {::_pbi::TcParser::FastMtS1, {82, 1, 1, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.raw_default_)}}, // .pg_query.Node cooked_default = 11 [json_name = "cooked_default"]; {::_pbi::TcParser::FastMtS1, {90, 2, 2, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.cooked_default_)}}, // string identity = 12 [json_name = "identity"]; {::_pbi::TcParser::FastUS1, {98, 63, 0, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.identity_)}}, // .pg_query.RangeVar identity_sequence = 13 [json_name = "identitySequence"]; {::_pbi::TcParser::FastMtS1, {106, 3, 3, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.identity_sequence_)}}, // string generated = 14 [json_name = "generated"]; {::_pbi::TcParser::FastUS1, {114, 63, 0, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.generated_)}}, // .pg_query.CollateClause coll_clause = 15 [json_name = "collClause"]; {::_pbi::TcParser::FastMtS1, {122, 4, 4, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.coll_clause_)}}, // uint32 coll_oid = 16 [json_name = "collOid"]; {::_pbi::TcParser::FastV32S2, {384, 63, 0, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.coll_oid_)}}, // repeated .pg_query.Node constraints = 17 [json_name = "constraints"]; {::_pbi::TcParser::FastMtR2, {394, 63, 5, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.constraints_)}}, // repeated .pg_query.Node fdwoptions = 18 [json_name = "fdwoptions"]; {::_pbi::TcParser::FastMtR2, {402, 63, 6, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.fdwoptions_)}}, // int32 location = 19 [json_name = "location"]; {::_pbi::TcParser::FastV32S2, {408, 63, 0, PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // string colname = 1 [json_name = "colname"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.colname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.type_name_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string compression = 3 [json_name = "compression"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.compression_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // int32 inhcount = 4 [json_name = "inhcount"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.inhcount_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // bool is_local = 5 [json_name = "is_local"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.is_local_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool is_not_null = 6 [json_name = "is_not_null"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.is_not_null_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool is_from_type = 7 [json_name = "is_from_type"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.is_from_type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // string storage = 8 [json_name = "storage"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.storage_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string storage_name = 9 [json_name = "storage_name"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.storage_name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.Node raw_default = 10 [json_name = "raw_default"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.raw_default_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node cooked_default = 11 [json_name = "cooked_default"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.cooked_default_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string identity = 12 [json_name = "identity"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.identity_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.RangeVar identity_sequence = 13 [json_name = "identitySequence"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.identity_sequence_), _Internal::kHasBitsOffset + 3, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string generated = 14 [json_name = "generated"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.generated_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.CollateClause coll_clause = 15 [json_name = "collClause"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.coll_clause_), _Internal::kHasBitsOffset + 4, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 coll_oid = 16 [json_name = "collOid"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.coll_oid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated .pg_query.Node constraints = 17 [json_name = "constraints"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.constraints_), -1, 5, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node fdwoptions = 18 [json_name = "fdwoptions"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.fdwoptions_), -1, 6, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 19 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::CollateClause>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\22\7\0\13\0\0\0\0\7\14\0\0\10\0\11\0\0\0\0\0\0\0\0\0" "pg_query.ColumnDef" "colname" "compression" "storage" "storage_name" "identity" "generated" }}, }; ::uint8_t* ColumnDef::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ColumnDef) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string colname = 1 [json_name = "colname"]; if (!this->_internal_colname().empty()) { const std::string& _s = this->_internal_colname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ColumnDef.colname"); target = stream->WriteStringMaybeAliased(1, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::type_name(this), _Internal::type_name(this).GetCachedSize(), target, stream); } // string compression = 3 [json_name = "compression"]; if (!this->_internal_compression().empty()) { const std::string& _s = this->_internal_compression(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ColumnDef.compression"); target = stream->WriteStringMaybeAliased(3, _s, target); } // int32 inhcount = 4 [json_name = "inhcount"]; if (this->_internal_inhcount() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_inhcount(), target); } // bool is_local = 5 [json_name = "is_local"]; if (this->_internal_is_local() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_is_local(), target); } // bool is_not_null = 6 [json_name = "is_not_null"]; if (this->_internal_is_not_null() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 6, this->_internal_is_not_null(), target); } // bool is_from_type = 7 [json_name = "is_from_type"]; if (this->_internal_is_from_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 7, this->_internal_is_from_type(), target); } // string storage = 8 [json_name = "storage"]; if (!this->_internal_storage().empty()) { const std::string& _s = this->_internal_storage(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ColumnDef.storage"); target = stream->WriteStringMaybeAliased(8, _s, target); } // string storage_name = 9 [json_name = "storage_name"]; if (!this->_internal_storage_name().empty()) { const std::string& _s = this->_internal_storage_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ColumnDef.storage_name"); target = stream->WriteStringMaybeAliased(9, _s, target); } // .pg_query.Node raw_default = 10 [json_name = "raw_default"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 10, _Internal::raw_default(this), _Internal::raw_default(this).GetCachedSize(), target, stream); } // .pg_query.Node cooked_default = 11 [json_name = "cooked_default"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 11, _Internal::cooked_default(this), _Internal::cooked_default(this).GetCachedSize(), target, stream); } // string identity = 12 [json_name = "identity"]; if (!this->_internal_identity().empty()) { const std::string& _s = this->_internal_identity(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ColumnDef.identity"); target = stream->WriteStringMaybeAliased(12, _s, target); } // .pg_query.RangeVar identity_sequence = 13 [json_name = "identitySequence"]; if (cached_has_bits & 0x00000008u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 13, _Internal::identity_sequence(this), _Internal::identity_sequence(this).GetCachedSize(), target, stream); } // string generated = 14 [json_name = "generated"]; if (!this->_internal_generated().empty()) { const std::string& _s = this->_internal_generated(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ColumnDef.generated"); target = stream->WriteStringMaybeAliased(14, _s, target); } // .pg_query.CollateClause coll_clause = 15 [json_name = "collClause"]; if (cached_has_bits & 0x00000010u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 15, _Internal::coll_clause(this), _Internal::coll_clause(this).GetCachedSize(), target, stream); } // uint32 coll_oid = 16 [json_name = "collOid"]; if (this->_internal_coll_oid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 16, this->_internal_coll_oid(), target); } // repeated .pg_query.Node constraints = 17 [json_name = "constraints"]; for (unsigned i = 0, n = static_cast(this->_internal_constraints_size()); i < n; i++) { const auto& repfield = this->_internal_constraints().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(17, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node fdwoptions = 18 [json_name = "fdwoptions"]; for (unsigned i = 0, n = static_cast(this->_internal_fdwoptions_size()); i < n; i++) { const auto& repfield = this->_internal_fdwoptions().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(18, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 19 [json_name = "location"]; if (this->_internal_location() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteInt32ToArray( 19, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node constraints = 17 [json_name = "constraints"]; total_size += 2UL * this->_internal_constraints_size(); for (const auto& msg : this->_internal_constraints()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node fdwoptions = 18 [json_name = "fdwoptions"]; total_size += 2UL * this->_internal_fdwoptions_size(); for (const auto& msg : this->_internal_fdwoptions()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string colname = 1 [json_name = "colname"]; if (!this->_internal_colname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_colname()); } // string compression = 3 [json_name = "compression"]; if (!this->_internal_compression().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_compression()); } // string storage = 8 [json_name = "storage"]; if (!this->_internal_storage().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_storage()); } // string storage_name = 9 [json_name = "storage_name"]; if (!this->_internal_storage_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_storage_name()); } // string identity = 12 [json_name = "identity"]; if (!this->_internal_identity().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_identity()); } // string generated = 14 [json_name = "generated"]; if (!this->_internal_generated().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_generated()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000001fu) { // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.type_name_); } // .pg_query.Node raw_default = 10 [json_name = "raw_default"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.raw_default_); } // .pg_query.Node cooked_default = 11 [json_name = "cooked_default"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.cooked_default_); } // .pg_query.RangeVar identity_sequence = 13 [json_name = "identitySequence"]; if (cached_has_bits & 0x00000008u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.identity_sequence_); } // .pg_query.CollateClause coll_clause = 15 [json_name = "collClause"]; if (cached_has_bits & 0x00000010u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.coll_clause_); } } // int32 inhcount = 4 [json_name = "inhcount"]; if (this->_internal_inhcount() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_inhcount()); } // bool is_local = 5 [json_name = "is_local"]; if (this->_internal_is_local() != 0) { total_size += 2; } // bool is_not_null = 6 [json_name = "is_not_null"]; if (this->_internal_is_not_null() != 0) { total_size += 2; } // bool is_from_type = 7 [json_name = "is_from_type"]; if (this->_internal_is_from_type() != 0) { total_size += 2; } // uint32 coll_oid = 16 [json_name = "collOid"]; if (this->_internal_coll_oid() != 0) { total_size += 2 + ::_pbi::WireFormatLite::UInt32Size( this->_internal_coll_oid()); } // int32 location = 19 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += 2 + ::_pbi::WireFormatLite::Int32Size( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ColumnDef::_class_data_ = { ColumnDef::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ColumnDef::GetClassData() const { return &_class_data_; } void ColumnDef::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ColumnDef) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_constraints()->MergeFrom( from._internal_constraints()); _this->_internal_mutable_fdwoptions()->MergeFrom( from._internal_fdwoptions()); if (!from._internal_colname().empty()) { _this->_internal_set_colname(from._internal_colname()); } if (!from._internal_compression().empty()) { _this->_internal_set_compression(from._internal_compression()); } if (!from._internal_storage().empty()) { _this->_internal_set_storage(from._internal_storage()); } if (!from._internal_storage_name().empty()) { _this->_internal_set_storage_name(from._internal_storage_name()); } if (!from._internal_identity().empty()) { _this->_internal_set_identity(from._internal_identity()); } if (!from._internal_generated().empty()) { _this->_internal_set_generated(from._internal_generated()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x0000001fu) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_type_name()->::pg_query::TypeName::MergeFrom( from._internal_type_name()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_raw_default()->::pg_query::Node::MergeFrom( from._internal_raw_default()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_cooked_default()->::pg_query::Node::MergeFrom( from._internal_cooked_default()); } if (cached_has_bits & 0x00000008u) { _this->_internal_mutable_identity_sequence()->::pg_query::RangeVar::MergeFrom( from._internal_identity_sequence()); } if (cached_has_bits & 0x00000010u) { _this->_internal_mutable_coll_clause()->::pg_query::CollateClause::MergeFrom( from._internal_coll_clause()); } } if (from._internal_inhcount() != 0) { _this->_internal_set_inhcount(from._internal_inhcount()); } if (from._internal_is_local() != 0) { _this->_internal_set_is_local(from._internal_is_local()); } if (from._internal_is_not_null() != 0) { _this->_internal_set_is_not_null(from._internal_is_not_null()); } if (from._internal_is_from_type() != 0) { _this->_internal_set_is_from_type(from._internal_is_from_type()); } if (from._internal_coll_oid() != 0) { _this->_internal_set_coll_oid(from._internal_coll_oid()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ColumnDef::CopyFrom(const ColumnDef& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ColumnDef) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ColumnDef::IsInitialized() const { return true; } ::_pbi::CachedSize* ColumnDef::AccessCachedSize() const { return &_impl_._cached_size_; } void ColumnDef::InternalSwap(ColumnDef* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.constraints_.InternalSwap(&other->_impl_.constraints_); _impl_.fdwoptions_.InternalSwap(&other->_impl_.fdwoptions_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.colname_, &other->_impl_.colname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.compression_, &other->_impl_.compression_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.storage_, &other->_impl_.storage_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.storage_name_, &other->_impl_.storage_name_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.identity_, &other->_impl_.identity_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.generated_, &other->_impl_.generated_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.location_) + sizeof(ColumnDef::_impl_.location_) - PROTOBUF_FIELD_OFFSET(ColumnDef, _impl_.type_name_)>( reinterpret_cast(&_impl_.type_name_), reinterpret_cast(&other->_impl_.type_name_)); } ::google::protobuf::Metadata ColumnDef::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[97]); } // =================================================================== class TableLikeClause::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(TableLikeClause, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const TableLikeClause* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RangeVar& TableLikeClause::_Internal::relation(const TableLikeClause* msg) { return *msg->_impl_.relation_; } TableLikeClause::TableLikeClause(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TableLikeClause) } inline PROTOBUF_NDEBUG_INLINE TableLikeClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} TableLikeClause::TableLikeClause( ::google::protobuf::Arena* arena, const TableLikeClause& from) : ::google::protobuf::Message(arena) { TableLikeClause* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, options_), reinterpret_cast(&from._impl_) + offsetof(Impl_, options_), offsetof(Impl_, relation_oid_) - offsetof(Impl_, options_) + sizeof(Impl_::relation_oid_)); // @@protoc_insertion_point(copy_constructor:pg_query.TableLikeClause) } inline PROTOBUF_NDEBUG_INLINE TableLikeClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void TableLikeClause::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, relation_oid_) - offsetof(Impl_, relation_) + sizeof(Impl_::relation_oid_)); } TableLikeClause::~TableLikeClause() { // @@protoc_insertion_point(destructor:pg_query.TableLikeClause) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void TableLikeClause::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.relation_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void TableLikeClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TableLikeClause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } ::memset(&_impl_.options_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.relation_oid_) - reinterpret_cast(&_impl_.options_)) + sizeof(_impl_.relation_oid_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* TableLikeClause::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> TableLikeClause::_table_ = { { PROTOBUF_FIELD_OFFSET(TableLikeClause, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_TableLikeClause_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(TableLikeClause, _impl_.relation_)}}, // uint32 options = 2 [json_name = "options"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TableLikeClause, _impl_.options_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(TableLikeClause, _impl_.options_)}}, // uint32 relation_oid = 3 [json_name = "relationOid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TableLikeClause, _impl_.relation_oid_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(TableLikeClause, _impl_.relation_oid_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(TableLikeClause, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(TableLikeClause, _impl_.options_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 relation_oid = 3 [json_name = "relationOid"]; {PROTOBUF_FIELD_OFFSET(TableLikeClause, _impl_.relation_oid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, }}, {{ }}, }; ::uint8_t* TableLikeClause::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TableLikeClause) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // uint32 options = 2 [json_name = "options"]; if (this->_internal_options() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_options(), target); } // uint32 relation_oid = 3 [json_name = "relationOid"]; if (this->_internal_relation_oid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_relation_oid(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // uint32 options = 2 [json_name = "options"]; if (this->_internal_options() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_options()); } // uint32 relation_oid = 3 [json_name = "relationOid"]; if (this->_internal_relation_oid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_relation_oid()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData TableLikeClause::_class_data_ = { TableLikeClause::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* TableLikeClause::GetClassData() const { return &_class_data_; } void TableLikeClause::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TableLikeClause) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (from._internal_options() != 0) { _this->_internal_set_options(from._internal_options()); } if (from._internal_relation_oid() != 0) { _this->_internal_set_relation_oid(from._internal_relation_oid()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void TableLikeClause::CopyFrom(const TableLikeClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TableLikeClause) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool TableLikeClause::IsInitialized() const { return true; } ::_pbi::CachedSize* TableLikeClause::AccessCachedSize() const { return &_impl_._cached_size_; } void TableLikeClause::InternalSwap(TableLikeClause* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(TableLikeClause, _impl_.relation_oid_) + sizeof(TableLikeClause::_impl_.relation_oid_) - PROTOBUF_FIELD_OFFSET(TableLikeClause, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata TableLikeClause::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[98]); } // =================================================================== class IndexElem::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(IndexElem, _impl_._has_bits_); static const ::pg_query::Node& expr(const IndexElem* msg); static void set_has_expr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& IndexElem::_Internal::expr(const IndexElem* msg) { return *msg->_impl_.expr_; } IndexElem::IndexElem(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.IndexElem) } inline PROTOBUF_NDEBUG_INLINE IndexElem::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, collation_{visibility, arena, from.collation_}, opclass_{visibility, arena, from.opclass_}, opclassopts_{visibility, arena, from.opclassopts_}, name_(arena, from.name_), indexcolname_(arena, from.indexcolname_) {} IndexElem::IndexElem( ::google::protobuf::Arena* arena, const IndexElem& from) : ::google::protobuf::Message(arena) { IndexElem* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.expr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.expr_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, ordering_), reinterpret_cast(&from._impl_) + offsetof(Impl_, ordering_), offsetof(Impl_, nulls_ordering_) - offsetof(Impl_, ordering_) + sizeof(Impl_::nulls_ordering_)); // @@protoc_insertion_point(copy_constructor:pg_query.IndexElem) } inline PROTOBUF_NDEBUG_INLINE IndexElem::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, collation_{visibility, arena}, opclass_{visibility, arena}, opclassopts_{visibility, arena}, name_(arena), indexcolname_(arena) {} inline void IndexElem::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, expr_), 0, offsetof(Impl_, nulls_ordering_) - offsetof(Impl_, expr_) + sizeof(Impl_::nulls_ordering_)); } IndexElem::~IndexElem() { // @@protoc_insertion_point(destructor:pg_query.IndexElem) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void IndexElem::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); _impl_.indexcolname_.Destroy(); delete _impl_.expr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void IndexElem::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.IndexElem) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.collation_.Clear(); _impl_.opclass_.Clear(); _impl_.opclassopts_.Clear(); _impl_.name_.ClearToEmpty(); _impl_.indexcolname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.expr_ != nullptr); _impl_.expr_->Clear(); } ::memset(&_impl_.ordering_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.nulls_ordering_) - reinterpret_cast(&_impl_.ordering_)) + sizeof(_impl_.nulls_ordering_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* IndexElem::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 4, 51, 2> IndexElem::_table_ = { { PROTOBUF_FIELD_OFFSET(IndexElem, _impl_._has_bits_), 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_IndexElem_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.SortByNulls nulls_ordering = 8 [json_name = "nulls_ordering"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(IndexElem, _impl_.nulls_ordering_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.nulls_ordering_)}}, // string name = 1 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.name_)}}, // .pg_query.Node expr = 2 [json_name = "expr"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.expr_)}}, // string indexcolname = 3 [json_name = "indexcolname"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.indexcolname_)}}, // repeated .pg_query.Node collation = 4 [json_name = "collation"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.collation_)}}, // repeated .pg_query.Node opclass = 5 [json_name = "opclass"]; {::_pbi::TcParser::FastMtR1, {42, 63, 2, PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.opclass_)}}, // repeated .pg_query.Node opclassopts = 6 [json_name = "opclassopts"]; {::_pbi::TcParser::FastMtR1, {50, 63, 3, PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.opclassopts_)}}, // .pg_query.SortByDir ordering = 7 [json_name = "ordering"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(IndexElem, _impl_.ordering_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.ordering_)}}, }}, {{ 65535, 65535 }}, {{ // string name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.Node expr = 2 [json_name = "expr"]; {PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.expr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string indexcolname = 3 [json_name = "indexcolname"]; {PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.indexcolname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node collation = 4 [json_name = "collation"]; {PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.collation_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node opclass = 5 [json_name = "opclass"]; {PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.opclass_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node opclassopts = 6 [json_name = "opclassopts"]; {PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.opclassopts_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SortByDir ordering = 7 [json_name = "ordering"]; {PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.ordering_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.SortByNulls nulls_ordering = 8 [json_name = "nulls_ordering"]; {PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.nulls_ordering_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\22\4\0\14\0\0\0\0\0\0\0\0\0\0\0\0" "pg_query.IndexElem" "name" "indexcolname" }}, }; ::uint8_t* IndexElem::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.IndexElem) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.IndexElem.name"); target = stream->WriteStringMaybeAliased(1, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node expr = 2 [json_name = "expr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::expr(this), _Internal::expr(this).GetCachedSize(), target, stream); } // string indexcolname = 3 [json_name = "indexcolname"]; if (!this->_internal_indexcolname().empty()) { const std::string& _s = this->_internal_indexcolname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.IndexElem.indexcolname"); target = stream->WriteStringMaybeAliased(3, _s, target); } // repeated .pg_query.Node collation = 4 [json_name = "collation"]; for (unsigned i = 0, n = static_cast(this->_internal_collation_size()); i < n; i++) { const auto& repfield = this->_internal_collation().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node opclass = 5 [json_name = "opclass"]; for (unsigned i = 0, n = static_cast(this->_internal_opclass_size()); i < n; i++) { const auto& repfield = this->_internal_opclass().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node opclassopts = 6 [json_name = "opclassopts"]; for (unsigned i = 0, n = static_cast(this->_internal_opclassopts_size()); i < n; i++) { const auto& repfield = this->_internal_opclassopts().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.SortByDir ordering = 7 [json_name = "ordering"]; if (this->_internal_ordering() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 7, this->_internal_ordering(), target); } // .pg_query.SortByNulls nulls_ordering = 8 [json_name = "nulls_ordering"]; if (this->_internal_nulls_ordering() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 8, this->_internal_nulls_ordering(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_collation()) { total_size += ::google::protobuf::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->_internal_opclass()) { total_size += ::google::protobuf::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->_internal_opclassopts()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // string indexcolname = 3 [json_name = "indexcolname"]; if (!this->_internal_indexcolname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_indexcolname()); } // .pg_query.Node expr = 2 [json_name = "expr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.expr_); } // .pg_query.SortByDir ordering = 7 [json_name = "ordering"]; if (this->_internal_ordering() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_ordering()); } // .pg_query.SortByNulls nulls_ordering = 8 [json_name = "nulls_ordering"]; if (this->_internal_nulls_ordering() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_nulls_ordering()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData IndexElem::_class_data_ = { IndexElem::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* IndexElem::GetClassData() const { return &_class_data_; } void IndexElem::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.IndexElem) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_collation()->MergeFrom( from._internal_collation()); _this->_internal_mutable_opclass()->MergeFrom( from._internal_opclass()); _this->_internal_mutable_opclassopts()->MergeFrom( from._internal_opclassopts()); if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if (!from._internal_indexcolname().empty()) { _this->_internal_set_indexcolname(from._internal_indexcolname()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_expr()->::pg_query::Node::MergeFrom( from._internal_expr()); } if (from._internal_ordering() != 0) { _this->_internal_set_ordering(from._internal_ordering()); } if (from._internal_nulls_ordering() != 0) { _this->_internal_set_nulls_ordering(from._internal_nulls_ordering()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void IndexElem::CopyFrom(const IndexElem& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.IndexElem) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool IndexElem::IsInitialized() const { return true; } ::_pbi::CachedSize* IndexElem::AccessCachedSize() const { return &_impl_._cached_size_; } void IndexElem::InternalSwap(IndexElem* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.collation_.InternalSwap(&other->_impl_.collation_); _impl_.opclass_.InternalSwap(&other->_impl_.opclass_); _impl_.opclassopts_.InternalSwap(&other->_impl_.opclassopts_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.indexcolname_, &other->_impl_.indexcolname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.nulls_ordering_) + sizeof(IndexElem::_impl_.nulls_ordering_) - PROTOBUF_FIELD_OFFSET(IndexElem, _impl_.expr_)>( reinterpret_cast(&_impl_.expr_), reinterpret_cast(&other->_impl_.expr_)); } ::google::protobuf::Metadata IndexElem::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[99]); } // =================================================================== class DefElem::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(DefElem, _impl_._has_bits_); static const ::pg_query::Node& arg(const DefElem* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& DefElem::_Internal::arg(const DefElem* msg) { return *msg->_impl_.arg_; } DefElem::DefElem(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DefElem) } inline PROTOBUF_NDEBUG_INLINE DefElem::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, defnamespace_(arena, from.defnamespace_), defname_(arena, from.defname_) {} DefElem::DefElem( ::google::protobuf::Arena* arena, const DefElem& from) : ::google::protobuf::Message(arena) { DefElem* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.arg_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.arg_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, defaction_), reinterpret_cast(&from._impl_) + offsetof(Impl_, defaction_), offsetof(Impl_, location_) - offsetof(Impl_, defaction_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.DefElem) } inline PROTOBUF_NDEBUG_INLINE DefElem::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, defnamespace_(arena), defname_(arena) {} inline void DefElem::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, arg_), 0, offsetof(Impl_, location_) - offsetof(Impl_, arg_) + sizeof(Impl_::location_)); } DefElem::~DefElem() { // @@protoc_insertion_point(destructor:pg_query.DefElem) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DefElem::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.defnamespace_.Destroy(); _impl_.defname_.Destroy(); delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void DefElem::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DefElem) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.defnamespace_.ClearToEmpty(); _impl_.defname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } ::memset(&_impl_.defaction_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.defaction_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DefElem::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 1, 44, 2> DefElem::_table_ = { { PROTOBUF_FIELD_OFFSET(DefElem, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_DefElem_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string defnamespace = 1 [json_name = "defnamespace"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(DefElem, _impl_.defnamespace_)}}, // string defname = 2 [json_name = "defname"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(DefElem, _impl_.defname_)}}, // .pg_query.Node arg = 3 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {26, 0, 0, PROTOBUF_FIELD_OFFSET(DefElem, _impl_.arg_)}}, // .pg_query.DefElemAction defaction = 4 [json_name = "defaction"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DefElem, _impl_.defaction_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(DefElem, _impl_.defaction_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DefElem, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(DefElem, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // string defnamespace = 1 [json_name = "defnamespace"]; {PROTOBUF_FIELD_OFFSET(DefElem, _impl_.defnamespace_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string defname = 2 [json_name = "defname"]; {PROTOBUF_FIELD_OFFSET(DefElem, _impl_.defname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.Node arg = 3 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(DefElem, _impl_.arg_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DefElemAction defaction = 4 [json_name = "defaction"]; {PROTOBUF_FIELD_OFFSET(DefElem, _impl_.defaction_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(DefElem, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\20\14\7\0\0\0\0\0" "pg_query.DefElem" "defnamespace" "defname" }}, }; ::uint8_t* DefElem::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DefElem) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string defnamespace = 1 [json_name = "defnamespace"]; if (!this->_internal_defnamespace().empty()) { const std::string& _s = this->_internal_defnamespace(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.DefElem.defnamespace"); target = stream->WriteStringMaybeAliased(1, _s, target); } // string defname = 2 [json_name = "defname"]; if (!this->_internal_defname().empty()) { const std::string& _s = this->_internal_defname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.DefElem.defname"); target = stream->WriteStringMaybeAliased(2, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node arg = 3 [json_name = "arg"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // .pg_query.DefElemAction defaction = 4 [json_name = "defaction"]; if (this->_internal_defaction() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 4, this->_internal_defaction(), target); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_defnamespace().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_defnamespace()); } // string defname = 2 [json_name = "defname"]; if (!this->_internal_defname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_defname()); } // .pg_query.Node arg = 3 [json_name = "arg"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } // .pg_query.DefElemAction defaction = 4 [json_name = "defaction"]; if (this->_internal_defaction() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_defaction()); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DefElem::_class_data_ = { DefElem::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DefElem::GetClassData() const { return &_class_data_; } void DefElem::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DefElem) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_defnamespace().empty()) { _this->_internal_set_defnamespace(from._internal_defnamespace()); } if (!from._internal_defname().empty()) { _this->_internal_set_defname(from._internal_defname()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_arg()->::pg_query::Node::MergeFrom( from._internal_arg()); } if (from._internal_defaction() != 0) { _this->_internal_set_defaction(from._internal_defaction()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DefElem::CopyFrom(const DefElem& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DefElem) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DefElem::IsInitialized() const { return true; } ::_pbi::CachedSize* DefElem::AccessCachedSize() const { return &_impl_._cached_size_; } void DefElem::InternalSwap(DefElem* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.defnamespace_, &other->_impl_.defnamespace_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.defname_, &other->_impl_.defname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(DefElem, _impl_.location_) + sizeof(DefElem::_impl_.location_) - PROTOBUF_FIELD_OFFSET(DefElem, _impl_.arg_)>( reinterpret_cast(&_impl_.arg_), reinterpret_cast(&other->_impl_.arg_)); } ::google::protobuf::Metadata DefElem::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[100]); } // =================================================================== class LockingClause::_Internal { public: }; LockingClause::LockingClause(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.LockingClause) } inline PROTOBUF_NDEBUG_INLINE LockingClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : locked_rels_{visibility, arena, from.locked_rels_}, _cached_size_{0} {} LockingClause::LockingClause( ::google::protobuf::Arena* arena, const LockingClause& from) : ::google::protobuf::Message(arena) { LockingClause* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, strength_), reinterpret_cast(&from._impl_) + offsetof(Impl_, strength_), offsetof(Impl_, wait_policy_) - offsetof(Impl_, strength_) + sizeof(Impl_::wait_policy_)); // @@protoc_insertion_point(copy_constructor:pg_query.LockingClause) } inline PROTOBUF_NDEBUG_INLINE LockingClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : locked_rels_{visibility, arena}, _cached_size_{0} {} inline void LockingClause::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, strength_), 0, offsetof(Impl_, wait_policy_) - offsetof(Impl_, strength_) + sizeof(Impl_::wait_policy_)); } LockingClause::~LockingClause() { // @@protoc_insertion_point(destructor:pg_query.LockingClause) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void LockingClause::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void LockingClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.LockingClause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.locked_rels_.Clear(); ::memset(&_impl_.strength_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.wait_policy_) - reinterpret_cast(&_impl_.strength_)) + sizeof(_impl_.wait_policy_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* LockingClause::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> LockingClause::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_LockingClause_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node locked_rels = 1 [json_name = "lockedRels"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(LockingClause, _impl_.locked_rels_)}}, // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(LockingClause, _impl_.strength_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(LockingClause, _impl_.strength_)}}, // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(LockingClause, _impl_.wait_policy_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(LockingClause, _impl_.wait_policy_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node locked_rels = 1 [json_name = "lockedRels"]; {PROTOBUF_FIELD_OFFSET(LockingClause, _impl_.locked_rels_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; {PROTOBUF_FIELD_OFFSET(LockingClause, _impl_.strength_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; {PROTOBUF_FIELD_OFFSET(LockingClause, _impl_.wait_policy_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* LockingClause::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.LockingClause) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node locked_rels = 1 [json_name = "lockedRels"]; for (unsigned i = 0, n = static_cast(this->_internal_locked_rels_size()); i < n; i++) { const auto& repfield = this->_internal_locked_rels().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; if (this->_internal_strength() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_strength(), target); } // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; if (this->_internal_wait_policy() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_wait_policy(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_locked_rels()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; if (this->_internal_strength() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_strength()); } // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; if (this->_internal_wait_policy() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_wait_policy()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData LockingClause::_class_data_ = { LockingClause::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* LockingClause::GetClassData() const { return &_class_data_; } void LockingClause::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.LockingClause) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_locked_rels()->MergeFrom( from._internal_locked_rels()); if (from._internal_strength() != 0) { _this->_internal_set_strength(from._internal_strength()); } if (from._internal_wait_policy() != 0) { _this->_internal_set_wait_policy(from._internal_wait_policy()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void LockingClause::CopyFrom(const LockingClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.LockingClause) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool LockingClause::IsInitialized() const { return true; } ::_pbi::CachedSize* LockingClause::AccessCachedSize() const { return &_impl_._cached_size_; } void LockingClause::InternalSwap(LockingClause* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.locked_rels_.InternalSwap(&other->_impl_.locked_rels_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(LockingClause, _impl_.wait_policy_) + sizeof(LockingClause::_impl_.wait_policy_) - PROTOBUF_FIELD_OFFSET(LockingClause, _impl_.strength_)>( reinterpret_cast(&_impl_.strength_), reinterpret_cast(&other->_impl_.strength_)); } ::google::protobuf::Metadata LockingClause::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[101]); } // =================================================================== class XmlSerialize::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(XmlSerialize, _impl_._has_bits_); static const ::pg_query::Node& expr(const XmlSerialize* msg); static void set_has_expr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::TypeName& type_name(const XmlSerialize* msg); static void set_has_type_name(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& XmlSerialize::_Internal::expr(const XmlSerialize* msg) { return *msg->_impl_.expr_; } const ::pg_query::TypeName& XmlSerialize::_Internal::type_name(const XmlSerialize* msg) { return *msg->_impl_.type_name_; } XmlSerialize::XmlSerialize(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.XmlSerialize) } inline PROTOBUF_NDEBUG_INLINE XmlSerialize::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} XmlSerialize::XmlSerialize( ::google::protobuf::Arena* arena, const XmlSerialize& from) : ::google::protobuf::Message(arena) { XmlSerialize* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.expr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.expr_) : nullptr; _impl_.type_name_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.type_name_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, xmloption_), reinterpret_cast(&from._impl_) + offsetof(Impl_, xmloption_), offsetof(Impl_, location_) - offsetof(Impl_, xmloption_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.XmlSerialize) } inline PROTOBUF_NDEBUG_INLINE XmlSerialize::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void XmlSerialize::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, expr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, expr_) + sizeof(Impl_::location_)); } XmlSerialize::~XmlSerialize() { // @@protoc_insertion_point(destructor:pg_query.XmlSerialize) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void XmlSerialize::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.expr_; delete _impl_.type_name_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void XmlSerialize::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.XmlSerialize) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.expr_ != nullptr); _impl_.expr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.type_name_ != nullptr); _impl_.type_name_->Clear(); } } ::memset(&_impl_.xmloption_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.xmloption_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* XmlSerialize::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 0, 2> XmlSerialize::_table_ = { { PROTOBUF_FIELD_OFFSET(XmlSerialize, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_XmlSerialize_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.XmlOptionType xmloption = 1 [json_name = "xmloption"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(XmlSerialize, _impl_.xmloption_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(XmlSerialize, _impl_.xmloption_)}}, // .pg_query.Node expr = 2 [json_name = "expr"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(XmlSerialize, _impl_.expr_)}}, // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; {::_pbi::TcParser::FastMtS1, {26, 1, 1, PROTOBUF_FIELD_OFFSET(XmlSerialize, _impl_.type_name_)}}, // bool indent = 4 [json_name = "indent"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(XmlSerialize, _impl_.indent_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(XmlSerialize, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(XmlSerialize, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.XmlOptionType xmloption = 1 [json_name = "xmloption"]; {PROTOBUF_FIELD_OFFSET(XmlSerialize, _impl_.xmloption_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.Node expr = 2 [json_name = "expr"]; {PROTOBUF_FIELD_OFFSET(XmlSerialize, _impl_.expr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; {PROTOBUF_FIELD_OFFSET(XmlSerialize, _impl_.type_name_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool indent = 4 [json_name = "indent"]; {PROTOBUF_FIELD_OFFSET(XmlSerialize, _impl_.indent_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(XmlSerialize, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, }}, {{ }}, }; ::uint8_t* XmlSerialize::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.XmlSerialize) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.XmlOptionType xmloption = 1 [json_name = "xmloption"]; if (this->_internal_xmloption() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_xmloption(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node expr = 2 [json_name = "expr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::expr(this), _Internal::expr(this).GetCachedSize(), target, stream); } // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::type_name(this), _Internal::type_name(this).GetCachedSize(), target, stream); } // bool indent = 4 [json_name = "indent"]; if (this->_internal_indent() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_indent(), target); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node expr = 2 [json_name = "expr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.expr_); } // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.type_name_); } } // .pg_query.XmlOptionType xmloption = 1 [json_name = "xmloption"]; if (this->_internal_xmloption() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_xmloption()); } // bool indent = 4 [json_name = "indent"]; if (this->_internal_indent() != 0) { total_size += 2; } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData XmlSerialize::_class_data_ = { XmlSerialize::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* XmlSerialize::GetClassData() const { return &_class_data_; } void XmlSerialize::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.XmlSerialize) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_expr()->::pg_query::Node::MergeFrom( from._internal_expr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_type_name()->::pg_query::TypeName::MergeFrom( from._internal_type_name()); } } if (from._internal_xmloption() != 0) { _this->_internal_set_xmloption(from._internal_xmloption()); } if (from._internal_indent() != 0) { _this->_internal_set_indent(from._internal_indent()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void XmlSerialize::CopyFrom(const XmlSerialize& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.XmlSerialize) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool XmlSerialize::IsInitialized() const { return true; } ::_pbi::CachedSize* XmlSerialize::AccessCachedSize() const { return &_impl_._cached_size_; } void XmlSerialize::InternalSwap(XmlSerialize* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(XmlSerialize, _impl_.location_) + sizeof(XmlSerialize::_impl_.location_) - PROTOBUF_FIELD_OFFSET(XmlSerialize, _impl_.expr_)>( reinterpret_cast(&_impl_.expr_), reinterpret_cast(&other->_impl_.expr_)); } ::google::protobuf::Metadata XmlSerialize::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[102]); } // =================================================================== class PartitionElem::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(PartitionElem, _impl_._has_bits_); static const ::pg_query::Node& expr(const PartitionElem* msg); static void set_has_expr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& PartitionElem::_Internal::expr(const PartitionElem* msg) { return *msg->_impl_.expr_; } PartitionElem::PartitionElem(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PartitionElem) } inline PROTOBUF_NDEBUG_INLINE PartitionElem::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, collation_{visibility, arena, from.collation_}, opclass_{visibility, arena, from.opclass_}, name_(arena, from.name_) {} PartitionElem::PartitionElem( ::google::protobuf::Arena* arena, const PartitionElem& from) : ::google::protobuf::Message(arena) { PartitionElem* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.expr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.expr_) : nullptr; _impl_.location_ = from._impl_.location_; // @@protoc_insertion_point(copy_constructor:pg_query.PartitionElem) } inline PROTOBUF_NDEBUG_INLINE PartitionElem::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, collation_{visibility, arena}, opclass_{visibility, arena}, name_(arena) {} inline void PartitionElem::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, expr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, expr_) + sizeof(Impl_::location_)); } PartitionElem::~PartitionElem() { // @@protoc_insertion_point(destructor:pg_query.PartitionElem) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void PartitionElem::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); delete _impl_.expr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void PartitionElem::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PartitionElem) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.collation_.Clear(); _impl_.opclass_.Clear(); _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.expr_ != nullptr); _impl_.expr_->Clear(); } _impl_.location_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* PartitionElem::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 3, 35, 2> PartitionElem::_table_ = { { PROTOBUF_FIELD_OFFSET(PartitionElem, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_PartitionElem_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string name = 1 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(PartitionElem, _impl_.name_)}}, // .pg_query.Node expr = 2 [json_name = "expr"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(PartitionElem, _impl_.expr_)}}, // repeated .pg_query.Node collation = 3 [json_name = "collation"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(PartitionElem, _impl_.collation_)}}, // repeated .pg_query.Node opclass = 4 [json_name = "opclass"]; {::_pbi::TcParser::FastMtR1, {34, 63, 2, PROTOBUF_FIELD_OFFSET(PartitionElem, _impl_.opclass_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PartitionElem, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(PartitionElem, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // string name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(PartitionElem, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.Node expr = 2 [json_name = "expr"]; {PROTOBUF_FIELD_OFFSET(PartitionElem, _impl_.expr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node collation = 3 [json_name = "collation"]; {PROTOBUF_FIELD_OFFSET(PartitionElem, _impl_.collation_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node opclass = 4 [json_name = "opclass"]; {PROTOBUF_FIELD_OFFSET(PartitionElem, _impl_.opclass_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(PartitionElem, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\26\4\0\0\0\0\0\0" "pg_query.PartitionElem" "name" }}, }; ::uint8_t* PartitionElem::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PartitionElem) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.PartitionElem.name"); target = stream->WriteStringMaybeAliased(1, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node expr = 2 [json_name = "expr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::expr(this), _Internal::expr(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node collation = 3 [json_name = "collation"]; for (unsigned i = 0, n = static_cast(this->_internal_collation_size()); i < n; i++) { const auto& repfield = this->_internal_collation().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node opclass = 4 [json_name = "opclass"]; for (unsigned i = 0, n = static_cast(this->_internal_opclass_size()); i < n; i++) { const auto& repfield = this->_internal_opclass().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_collation()) { total_size += ::google::protobuf::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->_internal_opclass()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.Node expr = 2 [json_name = "expr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.expr_); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData PartitionElem::_class_data_ = { PartitionElem::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* PartitionElem::GetClassData() const { return &_class_data_; } void PartitionElem::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PartitionElem) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_collation()->MergeFrom( from._internal_collation()); _this->_internal_mutable_opclass()->MergeFrom( from._internal_opclass()); if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_expr()->::pg_query::Node::MergeFrom( from._internal_expr()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void PartitionElem::CopyFrom(const PartitionElem& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PartitionElem) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool PartitionElem::IsInitialized() const { return true; } ::_pbi::CachedSize* PartitionElem::AccessCachedSize() const { return &_impl_._cached_size_; } void PartitionElem::InternalSwap(PartitionElem* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.collation_.InternalSwap(&other->_impl_.collation_); _impl_.opclass_.InternalSwap(&other->_impl_.opclass_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(PartitionElem, _impl_.location_) + sizeof(PartitionElem::_impl_.location_) - PROTOBUF_FIELD_OFFSET(PartitionElem, _impl_.expr_)>( reinterpret_cast(&_impl_.expr_), reinterpret_cast(&other->_impl_.expr_)); } ::google::protobuf::Metadata PartitionElem::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[103]); } // =================================================================== class PartitionSpec::_Internal { public: }; PartitionSpec::PartitionSpec(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PartitionSpec) } inline PROTOBUF_NDEBUG_INLINE PartitionSpec::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : part_params_{visibility, arena, from.part_params_}, _cached_size_{0} {} PartitionSpec::PartitionSpec( ::google::protobuf::Arena* arena, const PartitionSpec& from) : ::google::protobuf::Message(arena) { PartitionSpec* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, strategy_), reinterpret_cast(&from._impl_) + offsetof(Impl_, strategy_), offsetof(Impl_, location_) - offsetof(Impl_, strategy_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.PartitionSpec) } inline PROTOBUF_NDEBUG_INLINE PartitionSpec::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : part_params_{visibility, arena}, _cached_size_{0} {} inline void PartitionSpec::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, strategy_), 0, offsetof(Impl_, location_) - offsetof(Impl_, strategy_) + sizeof(Impl_::location_)); } PartitionSpec::~PartitionSpec() { // @@protoc_insertion_point(destructor:pg_query.PartitionSpec) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void PartitionSpec::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void PartitionSpec::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PartitionSpec) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.part_params_.Clear(); ::memset(&_impl_.strategy_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.strategy_)) + sizeof(_impl_.location_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* PartitionSpec::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> PartitionSpec::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_PartitionSpec_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.PartitionStrategy strategy = 1 [json_name = "strategy"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PartitionSpec, _impl_.strategy_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(PartitionSpec, _impl_.strategy_)}}, // repeated .pg_query.Node part_params = 2 [json_name = "partParams"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(PartitionSpec, _impl_.part_params_)}}, // int32 location = 3 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PartitionSpec, _impl_.location_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(PartitionSpec, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.PartitionStrategy strategy = 1 [json_name = "strategy"]; {PROTOBUF_FIELD_OFFSET(PartitionSpec, _impl_.strategy_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node part_params = 2 [json_name = "partParams"]; {PROTOBUF_FIELD_OFFSET(PartitionSpec, _impl_.part_params_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 3 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(PartitionSpec, _impl_.location_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* PartitionSpec::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PartitionSpec) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.PartitionStrategy strategy = 1 [json_name = "strategy"]; if (this->_internal_strategy() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_strategy(), target); } // repeated .pg_query.Node part_params = 2 [json_name = "partParams"]; for (unsigned i = 0, n = static_cast(this->_internal_part_params_size()); i < n; i++) { const auto& repfield = this->_internal_part_params().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_part_params()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.PartitionStrategy strategy = 1 [json_name = "strategy"]; if (this->_internal_strategy() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_strategy()); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData PartitionSpec::_class_data_ = { PartitionSpec::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* PartitionSpec::GetClassData() const { return &_class_data_; } void PartitionSpec::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PartitionSpec) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_part_params()->MergeFrom( from._internal_part_params()); if (from._internal_strategy() != 0) { _this->_internal_set_strategy(from._internal_strategy()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void PartitionSpec::CopyFrom(const PartitionSpec& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PartitionSpec) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool PartitionSpec::IsInitialized() const { return true; } ::_pbi::CachedSize* PartitionSpec::AccessCachedSize() const { return &_impl_._cached_size_; } void PartitionSpec::InternalSwap(PartitionSpec* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.part_params_.InternalSwap(&other->_impl_.part_params_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(PartitionSpec, _impl_.location_) + sizeof(PartitionSpec::_impl_.location_) - PROTOBUF_FIELD_OFFSET(PartitionSpec, _impl_.strategy_)>( reinterpret_cast(&_impl_.strategy_), reinterpret_cast(&other->_impl_.strategy_)); } ::google::protobuf::Metadata PartitionSpec::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[104]); } // =================================================================== class PartitionBoundSpec::_Internal { public: }; PartitionBoundSpec::PartitionBoundSpec(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PartitionBoundSpec) } inline PROTOBUF_NDEBUG_INLINE PartitionBoundSpec::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : listdatums_{visibility, arena, from.listdatums_}, lowerdatums_{visibility, arena, from.lowerdatums_}, upperdatums_{visibility, arena, from.upperdatums_}, strategy_(arena, from.strategy_), _cached_size_{0} {} PartitionBoundSpec::PartitionBoundSpec( ::google::protobuf::Arena* arena, const PartitionBoundSpec& from) : ::google::protobuf::Message(arena) { PartitionBoundSpec* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, is_default_), reinterpret_cast(&from._impl_) + offsetof(Impl_, is_default_), offsetof(Impl_, location_) - offsetof(Impl_, is_default_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.PartitionBoundSpec) } inline PROTOBUF_NDEBUG_INLINE PartitionBoundSpec::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : listdatums_{visibility, arena}, lowerdatums_{visibility, arena}, upperdatums_{visibility, arena}, strategy_(arena), _cached_size_{0} {} inline void PartitionBoundSpec::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, is_default_), 0, offsetof(Impl_, location_) - offsetof(Impl_, is_default_) + sizeof(Impl_::location_)); } PartitionBoundSpec::~PartitionBoundSpec() { // @@protoc_insertion_point(destructor:pg_query.PartitionBoundSpec) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void PartitionBoundSpec::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.strategy_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void PartitionBoundSpec::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PartitionBoundSpec) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.listdatums_.Clear(); _impl_.lowerdatums_.Clear(); _impl_.upperdatums_.Clear(); _impl_.strategy_.ClearToEmpty(); ::memset(&_impl_.is_default_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.is_default_)) + sizeof(_impl_.location_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* PartitionBoundSpec::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 3, 52, 2> PartitionBoundSpec::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_PartitionBoundSpec_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 8 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PartitionBoundSpec, _impl_.location_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.location_)}}, // string strategy = 1 [json_name = "strategy"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.strategy_)}}, // bool is_default = 2 [json_name = "is_default"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.is_default_)}}, // int32 modulus = 3 [json_name = "modulus"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PartitionBoundSpec, _impl_.modulus_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.modulus_)}}, // int32 remainder = 4 [json_name = "remainder"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PartitionBoundSpec, _impl_.remainder_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.remainder_)}}, // repeated .pg_query.Node listdatums = 5 [json_name = "listdatums"]; {::_pbi::TcParser::FastMtR1, {42, 63, 0, PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.listdatums_)}}, // repeated .pg_query.Node lowerdatums = 6 [json_name = "lowerdatums"]; {::_pbi::TcParser::FastMtR1, {50, 63, 1, PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.lowerdatums_)}}, // repeated .pg_query.Node upperdatums = 7 [json_name = "upperdatums"]; {::_pbi::TcParser::FastMtR1, {58, 63, 2, PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.upperdatums_)}}, }}, {{ 65535, 65535 }}, {{ // string strategy = 1 [json_name = "strategy"]; {PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.strategy_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool is_default = 2 [json_name = "is_default"]; {PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.is_default_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 modulus = 3 [json_name = "modulus"]; {PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.modulus_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 remainder = 4 [json_name = "remainder"]; {PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.remainder_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // repeated .pg_query.Node listdatums = 5 [json_name = "listdatums"]; {PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.listdatums_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node lowerdatums = 6 [json_name = "lowerdatums"]; {PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.lowerdatums_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node upperdatums = 7 [json_name = "upperdatums"]; {PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.upperdatums_), 0, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 8 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.location_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\33\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "pg_query.PartitionBoundSpec" "strategy" }}, }; ::uint8_t* PartitionBoundSpec::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PartitionBoundSpec) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string strategy = 1 [json_name = "strategy"]; if (!this->_internal_strategy().empty()) { const std::string& _s = this->_internal_strategy(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.PartitionBoundSpec.strategy"); target = stream->WriteStringMaybeAliased(1, _s, target); } // bool is_default = 2 [json_name = "is_default"]; if (this->_internal_is_default() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_is_default(), target); } // int32 modulus = 3 [json_name = "modulus"]; if (this->_internal_modulus() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_modulus(), target); } // int32 remainder = 4 [json_name = "remainder"]; if (this->_internal_remainder() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_remainder(), target); } // repeated .pg_query.Node listdatums = 5 [json_name = "listdatums"]; for (unsigned i = 0, n = static_cast(this->_internal_listdatums_size()); i < n; i++) { const auto& repfield = this->_internal_listdatums().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node lowerdatums = 6 [json_name = "lowerdatums"]; for (unsigned i = 0, n = static_cast(this->_internal_lowerdatums_size()); i < n; i++) { const auto& repfield = this->_internal_lowerdatums().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node upperdatums = 7 [json_name = "upperdatums"]; for (unsigned i = 0, n = static_cast(this->_internal_upperdatums_size()); i < n; i++) { const auto& repfield = this->_internal_upperdatums().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<8>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_listdatums()) { total_size += ::google::protobuf::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->_internal_lowerdatums()) { total_size += ::google::protobuf::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->_internal_upperdatums()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string strategy = 1 [json_name = "strategy"]; if (!this->_internal_strategy().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_strategy()); } // bool is_default = 2 [json_name = "is_default"]; if (this->_internal_is_default() != 0) { total_size += 2; } // int32 modulus = 3 [json_name = "modulus"]; if (this->_internal_modulus() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_modulus()); } // int32 remainder = 4 [json_name = "remainder"]; if (this->_internal_remainder() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_remainder()); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData PartitionBoundSpec::_class_data_ = { PartitionBoundSpec::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* PartitionBoundSpec::GetClassData() const { return &_class_data_; } void PartitionBoundSpec::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PartitionBoundSpec) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_listdatums()->MergeFrom( from._internal_listdatums()); _this->_internal_mutable_lowerdatums()->MergeFrom( from._internal_lowerdatums()); _this->_internal_mutable_upperdatums()->MergeFrom( from._internal_upperdatums()); if (!from._internal_strategy().empty()) { _this->_internal_set_strategy(from._internal_strategy()); } if (from._internal_is_default() != 0) { _this->_internal_set_is_default(from._internal_is_default()); } if (from._internal_modulus() != 0) { _this->_internal_set_modulus(from._internal_modulus()); } if (from._internal_remainder() != 0) { _this->_internal_set_remainder(from._internal_remainder()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void PartitionBoundSpec::CopyFrom(const PartitionBoundSpec& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PartitionBoundSpec) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool PartitionBoundSpec::IsInitialized() const { return true; } ::_pbi::CachedSize* PartitionBoundSpec::AccessCachedSize() const { return &_impl_._cached_size_; } void PartitionBoundSpec::InternalSwap(PartitionBoundSpec* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.listdatums_.InternalSwap(&other->_impl_.listdatums_); _impl_.lowerdatums_.InternalSwap(&other->_impl_.lowerdatums_); _impl_.upperdatums_.InternalSwap(&other->_impl_.upperdatums_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.strategy_, &other->_impl_.strategy_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.location_) + sizeof(PartitionBoundSpec::_impl_.location_) - PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, _impl_.is_default_)>( reinterpret_cast(&_impl_.is_default_), reinterpret_cast(&other->_impl_.is_default_)); } ::google::protobuf::Metadata PartitionBoundSpec::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[105]); } // =================================================================== class PartitionRangeDatum::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(PartitionRangeDatum, _impl_._has_bits_); static const ::pg_query::Node& value(const PartitionRangeDatum* msg); static void set_has_value(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& PartitionRangeDatum::_Internal::value(const PartitionRangeDatum* msg) { return *msg->_impl_.value_; } PartitionRangeDatum::PartitionRangeDatum(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PartitionRangeDatum) } inline PROTOBUF_NDEBUG_INLINE PartitionRangeDatum::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} PartitionRangeDatum::PartitionRangeDatum( ::google::protobuf::Arena* arena, const PartitionRangeDatum& from) : ::google::protobuf::Message(arena) { PartitionRangeDatum* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.value_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.value_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, kind_), reinterpret_cast(&from._impl_) + offsetof(Impl_, kind_), offsetof(Impl_, location_) - offsetof(Impl_, kind_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.PartitionRangeDatum) } inline PROTOBUF_NDEBUG_INLINE PartitionRangeDatum::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void PartitionRangeDatum::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, value_), 0, offsetof(Impl_, location_) - offsetof(Impl_, value_) + sizeof(Impl_::location_)); } PartitionRangeDatum::~PartitionRangeDatum() { // @@protoc_insertion_point(destructor:pg_query.PartitionRangeDatum) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void PartitionRangeDatum::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.value_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void PartitionRangeDatum::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PartitionRangeDatum) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.value_ != nullptr); _impl_.value_->Clear(); } ::memset(&_impl_.kind_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.kind_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* PartitionRangeDatum::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> PartitionRangeDatum::_table_ = { { PROTOBUF_FIELD_OFFSET(PartitionRangeDatum, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_PartitionRangeDatum_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.PartitionRangeDatumKind kind = 1 [json_name = "kind"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PartitionRangeDatum, _impl_.kind_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(PartitionRangeDatum, _impl_.kind_)}}, // .pg_query.Node value = 2 [json_name = "value"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(PartitionRangeDatum, _impl_.value_)}}, // int32 location = 3 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PartitionRangeDatum, _impl_.location_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(PartitionRangeDatum, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.PartitionRangeDatumKind kind = 1 [json_name = "kind"]; {PROTOBUF_FIELD_OFFSET(PartitionRangeDatum, _impl_.kind_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.Node value = 2 [json_name = "value"]; {PROTOBUF_FIELD_OFFSET(PartitionRangeDatum, _impl_.value_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 3 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(PartitionRangeDatum, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* PartitionRangeDatum::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PartitionRangeDatum) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.PartitionRangeDatumKind kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node value = 2 [json_name = "value"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::value(this), _Internal::value(this).GetCachedSize(), target, stream); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.value_); } // .pg_query.PartitionRangeDatumKind kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_kind()); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData PartitionRangeDatum::_class_data_ = { PartitionRangeDatum::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* PartitionRangeDatum::GetClassData() const { return &_class_data_; } void PartitionRangeDatum::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PartitionRangeDatum) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_value()->::pg_query::Node::MergeFrom( from._internal_value()); } if (from._internal_kind() != 0) { _this->_internal_set_kind(from._internal_kind()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void PartitionRangeDatum::CopyFrom(const PartitionRangeDatum& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PartitionRangeDatum) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool PartitionRangeDatum::IsInitialized() const { return true; } ::_pbi::CachedSize* PartitionRangeDatum::AccessCachedSize() const { return &_impl_._cached_size_; } void PartitionRangeDatum::InternalSwap(PartitionRangeDatum* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(PartitionRangeDatum, _impl_.location_) + sizeof(PartitionRangeDatum::_impl_.location_) - PROTOBUF_FIELD_OFFSET(PartitionRangeDatum, _impl_.value_)>( reinterpret_cast(&_impl_.value_), reinterpret_cast(&other->_impl_.value_)); } ::google::protobuf::Metadata PartitionRangeDatum::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[106]); } // =================================================================== class SinglePartitionSpec::_Internal { public: }; SinglePartitionSpec::SinglePartitionSpec(::google::protobuf::Arena* arena) : ::google::protobuf::internal::ZeroFieldsBase(arena) { // @@protoc_insertion_point(arena_constructor:pg_query.SinglePartitionSpec) } SinglePartitionSpec::SinglePartitionSpec( ::google::protobuf::Arena* arena, const SinglePartitionSpec& from) : ::google::protobuf::internal::ZeroFieldsBase(arena) { SinglePartitionSpec* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.SinglePartitionSpec) } ::google::protobuf::Metadata SinglePartitionSpec::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[107]); } // =================================================================== class PartitionCmd::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(PartitionCmd, _impl_._has_bits_); static const ::pg_query::RangeVar& name(const PartitionCmd* msg); static void set_has_name(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::PartitionBoundSpec& bound(const PartitionCmd* msg); static void set_has_bound(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::RangeVar& PartitionCmd::_Internal::name(const PartitionCmd* msg) { return *msg->_impl_.name_; } const ::pg_query::PartitionBoundSpec& PartitionCmd::_Internal::bound(const PartitionCmd* msg) { return *msg->_impl_.bound_; } PartitionCmd::PartitionCmd(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PartitionCmd) } inline PROTOBUF_NDEBUG_INLINE PartitionCmd::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} PartitionCmd::PartitionCmd( ::google::protobuf::Arena* arena, const PartitionCmd& from) : ::google::protobuf::Message(arena) { PartitionCmd* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.name_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.name_) : nullptr; _impl_.bound_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::PartitionBoundSpec>(arena, *from._impl_.bound_) : nullptr; _impl_.concurrent_ = from._impl_.concurrent_; // @@protoc_insertion_point(copy_constructor:pg_query.PartitionCmd) } inline PROTOBUF_NDEBUG_INLINE PartitionCmd::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void PartitionCmd::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, name_), 0, offsetof(Impl_, concurrent_) - offsetof(Impl_, name_) + sizeof(Impl_::concurrent_)); } PartitionCmd::~PartitionCmd() { // @@protoc_insertion_point(destructor:pg_query.PartitionCmd) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void PartitionCmd::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.name_; delete _impl_.bound_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void PartitionCmd::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PartitionCmd) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.name_ != nullptr); _impl_.name_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.bound_ != nullptr); _impl_.bound_->Clear(); } } _impl_.concurrent_ = false; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* PartitionCmd::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 0, 2> PartitionCmd::_table_ = { { PROTOBUF_FIELD_OFFSET(PartitionCmd, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_PartitionCmd_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RangeVar name = 1 [json_name = "name"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(PartitionCmd, _impl_.name_)}}, // .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(PartitionCmd, _impl_.bound_)}}, // bool concurrent = 3 [json_name = "concurrent"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(PartitionCmd, _impl_.concurrent_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(PartitionCmd, _impl_.name_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; {PROTOBUF_FIELD_OFFSET(PartitionCmd, _impl_.bound_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool concurrent = 3 [json_name = "concurrent"]; {PROTOBUF_FIELD_OFFSET(PartitionCmd, _impl_.concurrent_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::PartitionBoundSpec>()}, }}, {{ }}, }; ::uint8_t* PartitionCmd::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PartitionCmd) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar name = 1 [json_name = "name"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::name(this), _Internal::name(this).GetCachedSize(), target, stream); } // .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::bound(this), _Internal::bound(this).GetCachedSize(), target, stream); } // bool concurrent = 3 [json_name = "concurrent"]; if (this->_internal_concurrent() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_concurrent(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.RangeVar name = 1 [json_name = "name"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.name_); } // .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.bound_); } } // bool concurrent = 3 [json_name = "concurrent"]; if (this->_internal_concurrent() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData PartitionCmd::_class_data_ = { PartitionCmd::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* PartitionCmd::GetClassData() const { return &_class_data_; } void PartitionCmd::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PartitionCmd) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_name()->::pg_query::RangeVar::MergeFrom( from._internal_name()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_bound()->::pg_query::PartitionBoundSpec::MergeFrom( from._internal_bound()); } } if (from._internal_concurrent() != 0) { _this->_internal_set_concurrent(from._internal_concurrent()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void PartitionCmd::CopyFrom(const PartitionCmd& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PartitionCmd) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool PartitionCmd::IsInitialized() const { return true; } ::_pbi::CachedSize* PartitionCmd::AccessCachedSize() const { return &_impl_._cached_size_; } void PartitionCmd::InternalSwap(PartitionCmd* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(PartitionCmd, _impl_.concurrent_) + sizeof(PartitionCmd::_impl_.concurrent_) - PROTOBUF_FIELD_OFFSET(PartitionCmd, _impl_.name_)>( reinterpret_cast(&_impl_.name_), reinterpret_cast(&other->_impl_.name_)); } ::google::protobuf::Metadata PartitionCmd::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[108]); } // =================================================================== class RangeTblEntry::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_._has_bits_); static const ::pg_query::Alias& alias(const RangeTblEntry* msg); static void set_has_alias(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Alias& eref(const RangeTblEntry* msg); static void set_has_eref(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::TableSampleClause& tablesample(const RangeTblEntry* msg); static void set_has_tablesample(HasBits* has_bits) { (*has_bits)[0] |= 4u; } static const ::pg_query::Query& subquery(const RangeTblEntry* msg); static void set_has_subquery(HasBits* has_bits) { (*has_bits)[0] |= 8u; } static const ::pg_query::Alias& join_using_alias(const RangeTblEntry* msg); static void set_has_join_using_alias(HasBits* has_bits) { (*has_bits)[0] |= 16u; } static const ::pg_query::TableFunc& tablefunc(const RangeTblEntry* msg); static void set_has_tablefunc(HasBits* has_bits) { (*has_bits)[0] |= 32u; } }; const ::pg_query::Alias& RangeTblEntry::_Internal::alias(const RangeTblEntry* msg) { return *msg->_impl_.alias_; } const ::pg_query::Alias& RangeTblEntry::_Internal::eref(const RangeTblEntry* msg) { return *msg->_impl_.eref_; } const ::pg_query::TableSampleClause& RangeTblEntry::_Internal::tablesample(const RangeTblEntry* msg) { return *msg->_impl_.tablesample_; } const ::pg_query::Query& RangeTblEntry::_Internal::subquery(const RangeTblEntry* msg) { return *msg->_impl_.subquery_; } const ::pg_query::Alias& RangeTblEntry::_Internal::join_using_alias(const RangeTblEntry* msg) { return *msg->_impl_.join_using_alias_; } const ::pg_query::TableFunc& RangeTblEntry::_Internal::tablefunc(const RangeTblEntry* msg) { return *msg->_impl_.tablefunc_; } RangeTblEntry::RangeTblEntry(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeTblEntry) } inline PROTOBUF_NDEBUG_INLINE RangeTblEntry::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, joinaliasvars_{visibility, arena, from.joinaliasvars_}, joinleftcols_{visibility, arena, from.joinleftcols_}, joinrightcols_{visibility, arena, from.joinrightcols_}, functions_{visibility, arena, from.functions_}, values_lists_{visibility, arena, from.values_lists_}, coltypes_{visibility, arena, from.coltypes_}, coltypmods_{visibility, arena, from.coltypmods_}, colcollations_{visibility, arena, from.colcollations_}, security_quals_{visibility, arena, from.security_quals_}, relkind_(arena, from.relkind_), ctename_(arena, from.ctename_), enrname_(arena, from.enrname_) {} RangeTblEntry::RangeTblEntry( ::google::protobuf::Arena* arena, const RangeTblEntry& from) : ::google::protobuf::Message(arena) { RangeTblEntry* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.alias_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Alias>(arena, *from._impl_.alias_) : nullptr; _impl_.eref_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Alias>(arena, *from._impl_.eref_) : nullptr; _impl_.tablesample_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::TableSampleClause>(arena, *from._impl_.tablesample_) : nullptr; _impl_.subquery_ = (cached_has_bits & 0x00000008u) ? CreateMaybeMessage<::pg_query::Query>(arena, *from._impl_.subquery_) : nullptr; _impl_.join_using_alias_ = (cached_has_bits & 0x00000010u) ? CreateMaybeMessage<::pg_query::Alias>(arena, *from._impl_.join_using_alias_) : nullptr; _impl_.tablefunc_ = (cached_has_bits & 0x00000020u) ? CreateMaybeMessage<::pg_query::TableFunc>(arena, *from._impl_.tablefunc_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, rtekind_), reinterpret_cast(&from._impl_) + offsetof(Impl_, rtekind_), offsetof(Impl_, in_from_cl_) - offsetof(Impl_, rtekind_) + sizeof(Impl_::in_from_cl_)); // @@protoc_insertion_point(copy_constructor:pg_query.RangeTblEntry) } inline PROTOBUF_NDEBUG_INLINE RangeTblEntry::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, joinaliasvars_{visibility, arena}, joinleftcols_{visibility, arena}, joinrightcols_{visibility, arena}, functions_{visibility, arena}, values_lists_{visibility, arena}, coltypes_{visibility, arena}, coltypmods_{visibility, arena}, colcollations_{visibility, arena}, security_quals_{visibility, arena}, relkind_(arena), ctename_(arena), enrname_(arena) {} inline void RangeTblEntry::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, alias_), 0, offsetof(Impl_, in_from_cl_) - offsetof(Impl_, alias_) + sizeof(Impl_::in_from_cl_)); } RangeTblEntry::~RangeTblEntry() { // @@protoc_insertion_point(destructor:pg_query.RangeTblEntry) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RangeTblEntry::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.relkind_.Destroy(); _impl_.ctename_.Destroy(); _impl_.enrname_.Destroy(); delete _impl_.alias_; delete _impl_.eref_; delete _impl_.tablesample_; delete _impl_.subquery_; delete _impl_.join_using_alias_; delete _impl_.tablefunc_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RangeTblEntry::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeTblEntry) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.joinaliasvars_.Clear(); _impl_.joinleftcols_.Clear(); _impl_.joinrightcols_.Clear(); _impl_.functions_.Clear(); _impl_.values_lists_.Clear(); _impl_.coltypes_.Clear(); _impl_.coltypmods_.Clear(); _impl_.colcollations_.Clear(); _impl_.security_quals_.Clear(); _impl_.relkind_.ClearToEmpty(); _impl_.ctename_.ClearToEmpty(); _impl_.enrname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000003fu) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.alias_ != nullptr); _impl_.alias_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.eref_ != nullptr); _impl_.eref_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.tablesample_ != nullptr); _impl_.tablesample_->Clear(); } if (cached_has_bits & 0x00000008u) { ABSL_DCHECK(_impl_.subquery_ != nullptr); _impl_.subquery_->Clear(); } if (cached_has_bits & 0x00000010u) { ABSL_DCHECK(_impl_.join_using_alias_ != nullptr); _impl_.join_using_alias_->Clear(); } if (cached_has_bits & 0x00000020u) { ABSL_DCHECK(_impl_.tablefunc_ != nullptr); _impl_.tablefunc_->Clear(); } } ::memset(&_impl_.rtekind_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.in_from_cl_) - reinterpret_cast(&_impl_.rtekind_)) + sizeof(_impl_.in_from_cl_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RangeTblEntry::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<5, 32, 15, 84, 2> RangeTblEntry::_table_ = { { PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_._has_bits_), 0, // no _extensions_ 32, 248, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 0, // skipmap offsetof(decltype(_table_), field_entries), 32, // num_field_entries 15, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RangeTblEntry_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Alias alias = 1 [json_name = "alias"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.alias_)}}, // .pg_query.Alias eref = 2 [json_name = "eref"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.eref_)}}, // .pg_query.RTEKind rtekind = 3 [json_name = "rtekind"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RangeTblEntry, _impl_.rtekind_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.rtekind_)}}, // uint32 relid = 4 [json_name = "relid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RangeTblEntry, _impl_.relid_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.relid_)}}, // bool inh = 5 [json_name = "inh"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.inh_)}}, // string relkind = 6 [json_name = "relkind"]; {::_pbi::TcParser::FastUS1, {50, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.relkind_)}}, // int32 rellockmode = 7 [json_name = "rellockmode"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RangeTblEntry, _impl_.rellockmode_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.rellockmode_)}}, // uint32 perminfoindex = 8 [json_name = "perminfoindex"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RangeTblEntry, _impl_.perminfoindex_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.perminfoindex_)}}, // .pg_query.TableSampleClause tablesample = 9 [json_name = "tablesample"]; {::_pbi::TcParser::FastMtS1, {74, 2, 2, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.tablesample_)}}, // .pg_query.Query subquery = 10 [json_name = "subquery"]; {::_pbi::TcParser::FastMtS1, {82, 3, 3, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.subquery_)}}, // bool security_barrier = 11 [json_name = "security_barrier"]; {::_pbi::TcParser::SingularVarintNoZag1(), {88, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.security_barrier_)}}, // .pg_query.JoinType jointype = 12 [json_name = "jointype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RangeTblEntry, _impl_.jointype_), 63>(), {96, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.jointype_)}}, // int32 joinmergedcols = 13 [json_name = "joinmergedcols"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RangeTblEntry, _impl_.joinmergedcols_), 63>(), {104, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.joinmergedcols_)}}, // repeated .pg_query.Node joinaliasvars = 14 [json_name = "joinaliasvars"]; {::_pbi::TcParser::FastMtR1, {114, 63, 4, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.joinaliasvars_)}}, // repeated .pg_query.Node joinleftcols = 15 [json_name = "joinleftcols"]; {::_pbi::TcParser::FastMtR1, {122, 63, 5, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.joinleftcols_)}}, // repeated .pg_query.Node joinrightcols = 16 [json_name = "joinrightcols"]; {::_pbi::TcParser::FastMtR2, {386, 63, 6, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.joinrightcols_)}}, // .pg_query.Alias join_using_alias = 17 [json_name = "join_using_alias"]; {::_pbi::TcParser::FastMtS2, {394, 4, 7, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.join_using_alias_)}}, // repeated .pg_query.Node functions = 18 [json_name = "functions"]; {::_pbi::TcParser::FastMtR2, {402, 63, 8, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.functions_)}}, // bool funcordinality = 19 [json_name = "funcordinality"]; {::_pbi::TcParser::FastV8S2, {408, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.funcordinality_)}}, // .pg_query.TableFunc tablefunc = 20 [json_name = "tablefunc"]; {::_pbi::TcParser::FastMtS2, {418, 5, 9, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.tablefunc_)}}, // repeated .pg_query.Node values_lists = 21 [json_name = "values_lists"]; {::_pbi::TcParser::FastMtR2, {426, 63, 10, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.values_lists_)}}, // string ctename = 22 [json_name = "ctename"]; {::_pbi::TcParser::FastUS2, {434, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.ctename_)}}, // uint32 ctelevelsup = 23 [json_name = "ctelevelsup"]; {::_pbi::TcParser::FastV32S2, {440, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.ctelevelsup_)}}, // bool self_reference = 24 [json_name = "self_reference"]; {::_pbi::TcParser::FastV8S2, {448, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.self_reference_)}}, // repeated .pg_query.Node coltypes = 25 [json_name = "coltypes"]; {::_pbi::TcParser::FastMtR2, {458, 63, 11, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.coltypes_)}}, // repeated .pg_query.Node coltypmods = 26 [json_name = "coltypmods"]; {::_pbi::TcParser::FastMtR2, {466, 63, 12, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.coltypmods_)}}, // repeated .pg_query.Node colcollations = 27 [json_name = "colcollations"]; {::_pbi::TcParser::FastMtR2, {474, 63, 13, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.colcollations_)}}, // string enrname = 28 [json_name = "enrname"]; {::_pbi::TcParser::FastUS2, {482, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.enrname_)}}, // double enrtuples = 29 [json_name = "enrtuples"]; {::_pbi::TcParser::FastF64S2, {489, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.enrtuples_)}}, // bool lateral = 30 [json_name = "lateral"]; {::_pbi::TcParser::FastV8S2, {496, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.lateral_)}}, // bool in_from_cl = 31 [json_name = "inFromCl"]; {::_pbi::TcParser::FastV8S2, {504, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.in_from_cl_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Alias alias = 1 [json_name = "alias"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.alias_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Alias eref = 2 [json_name = "eref"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.eref_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RTEKind rtekind = 3 [json_name = "rtekind"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.rtekind_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // uint32 relid = 4 [json_name = "relid"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.relid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool inh = 5 [json_name = "inh"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.inh_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // string relkind = 6 [json_name = "relkind"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.relkind_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // int32 rellockmode = 7 [json_name = "rellockmode"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.rellockmode_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 perminfoindex = 8 [json_name = "perminfoindex"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.perminfoindex_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // .pg_query.TableSampleClause tablesample = 9 [json_name = "tablesample"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.tablesample_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Query subquery = 10 [json_name = "subquery"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.subquery_), _Internal::kHasBitsOffset + 3, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool security_barrier = 11 [json_name = "security_barrier"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.security_barrier_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.JoinType jointype = 12 [json_name = "jointype"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.jointype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int32 joinmergedcols = 13 [json_name = "joinmergedcols"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.joinmergedcols_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // repeated .pg_query.Node joinaliasvars = 14 [json_name = "joinaliasvars"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.joinaliasvars_), -1, 4, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node joinleftcols = 15 [json_name = "joinleftcols"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.joinleftcols_), -1, 5, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node joinrightcols = 16 [json_name = "joinrightcols"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.joinrightcols_), -1, 6, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Alias join_using_alias = 17 [json_name = "join_using_alias"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.join_using_alias_), _Internal::kHasBitsOffset + 4, 7, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node functions = 18 [json_name = "functions"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.functions_), -1, 8, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool funcordinality = 19 [json_name = "funcordinality"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.funcordinality_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.TableFunc tablefunc = 20 [json_name = "tablefunc"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.tablefunc_), _Internal::kHasBitsOffset + 5, 9, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node values_lists = 21 [json_name = "values_lists"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.values_lists_), -1, 10, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string ctename = 22 [json_name = "ctename"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.ctename_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // uint32 ctelevelsup = 23 [json_name = "ctelevelsup"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.ctelevelsup_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool self_reference = 24 [json_name = "self_reference"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.self_reference_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node coltypes = 25 [json_name = "coltypes"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.coltypes_), -1, 11, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node coltypmods = 26 [json_name = "coltypmods"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.coltypmods_), -1, 12, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node colcollations = 27 [json_name = "colcollations"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.colcollations_), -1, 13, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string enrname = 28 [json_name = "enrname"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.enrname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // double enrtuples = 29 [json_name = "enrtuples"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.enrtuples_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kDouble)}, // bool lateral = 30 [json_name = "lateral"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.lateral_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool in_from_cl = 31 [json_name = "inFromCl"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.in_from_cl_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node security_quals = 32 [json_name = "securityQuals"]; {PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.security_quals_), -1, 14, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Alias>()}, {::_pbi::TcParser::GetTable<::pg_query::Alias>()}, {::_pbi::TcParser::GetTable<::pg_query::TableSampleClause>()}, {::_pbi::TcParser::GetTable<::pg_query::Query>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Alias>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::TableFunc>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\26\0\0\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\0\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0" "pg_query.RangeTblEntry" "relkind" "ctename" "enrname" }}, }; ::uint8_t* RangeTblEntry::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeTblEntry) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Alias alias = 1 [json_name = "alias"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::alias(this), _Internal::alias(this).GetCachedSize(), target, stream); } // .pg_query.Alias eref = 2 [json_name = "eref"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::eref(this), _Internal::eref(this).GetCachedSize(), target, stream); } // .pg_query.RTEKind rtekind = 3 [json_name = "rtekind"]; if (this->_internal_rtekind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_rtekind(), target); } // uint32 relid = 4 [json_name = "relid"]; if (this->_internal_relid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_relid(), target); } // bool inh = 5 [json_name = "inh"]; if (this->_internal_inh() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_inh(), target); } // string relkind = 6 [json_name = "relkind"]; if (!this->_internal_relkind().empty()) { const std::string& _s = this->_internal_relkind(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.RangeTblEntry.relkind"); target = stream->WriteStringMaybeAliased(6, _s, target); } // int32 rellockmode = 7 [json_name = "rellockmode"]; if (this->_internal_rellockmode() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<7>( stream, this->_internal_rellockmode(), target); } // uint32 perminfoindex = 8 [json_name = "perminfoindex"]; if (this->_internal_perminfoindex() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 8, this->_internal_perminfoindex(), target); } // .pg_query.TableSampleClause tablesample = 9 [json_name = "tablesample"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 9, _Internal::tablesample(this), _Internal::tablesample(this).GetCachedSize(), target, stream); } // .pg_query.Query subquery = 10 [json_name = "subquery"]; if (cached_has_bits & 0x00000008u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 10, _Internal::subquery(this), _Internal::subquery(this).GetCachedSize(), target, stream); } // bool security_barrier = 11 [json_name = "security_barrier"]; if (this->_internal_security_barrier() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 11, this->_internal_security_barrier(), target); } // .pg_query.JoinType jointype = 12 [json_name = "jointype"]; if (this->_internal_jointype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 12, this->_internal_jointype(), target); } // int32 joinmergedcols = 13 [json_name = "joinmergedcols"]; if (this->_internal_joinmergedcols() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<13>( stream, this->_internal_joinmergedcols(), target); } // repeated .pg_query.Node joinaliasvars = 14 [json_name = "joinaliasvars"]; for (unsigned i = 0, n = static_cast(this->_internal_joinaliasvars_size()); i < n; i++) { const auto& repfield = this->_internal_joinaliasvars().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(14, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node joinleftcols = 15 [json_name = "joinleftcols"]; for (unsigned i = 0, n = static_cast(this->_internal_joinleftcols_size()); i < n; i++) { const auto& repfield = this->_internal_joinleftcols().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(15, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node joinrightcols = 16 [json_name = "joinrightcols"]; for (unsigned i = 0, n = static_cast(this->_internal_joinrightcols_size()); i < n; i++) { const auto& repfield = this->_internal_joinrightcols().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(16, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Alias join_using_alias = 17 [json_name = "join_using_alias"]; if (cached_has_bits & 0x00000010u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 17, _Internal::join_using_alias(this), _Internal::join_using_alias(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node functions = 18 [json_name = "functions"]; for (unsigned i = 0, n = static_cast(this->_internal_functions_size()); i < n; i++) { const auto& repfield = this->_internal_functions().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(18, repfield, repfield.GetCachedSize(), target, stream); } // bool funcordinality = 19 [json_name = "funcordinality"]; if (this->_internal_funcordinality() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 19, this->_internal_funcordinality(), target); } // .pg_query.TableFunc tablefunc = 20 [json_name = "tablefunc"]; if (cached_has_bits & 0x00000020u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 20, _Internal::tablefunc(this), _Internal::tablefunc(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node values_lists = 21 [json_name = "values_lists"]; for (unsigned i = 0, n = static_cast(this->_internal_values_lists_size()); i < n; i++) { const auto& repfield = this->_internal_values_lists().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(21, repfield, repfield.GetCachedSize(), target, stream); } // string ctename = 22 [json_name = "ctename"]; if (!this->_internal_ctename().empty()) { const std::string& _s = this->_internal_ctename(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.RangeTblEntry.ctename"); target = stream->WriteStringMaybeAliased(22, _s, target); } // uint32 ctelevelsup = 23 [json_name = "ctelevelsup"]; if (this->_internal_ctelevelsup() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 23, this->_internal_ctelevelsup(), target); } // bool self_reference = 24 [json_name = "self_reference"]; if (this->_internal_self_reference() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 24, this->_internal_self_reference(), target); } // repeated .pg_query.Node coltypes = 25 [json_name = "coltypes"]; for (unsigned i = 0, n = static_cast(this->_internal_coltypes_size()); i < n; i++) { const auto& repfield = this->_internal_coltypes().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(25, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node coltypmods = 26 [json_name = "coltypmods"]; for (unsigned i = 0, n = static_cast(this->_internal_coltypmods_size()); i < n; i++) { const auto& repfield = this->_internal_coltypmods().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(26, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node colcollations = 27 [json_name = "colcollations"]; for (unsigned i = 0, n = static_cast(this->_internal_colcollations_size()); i < n; i++) { const auto& repfield = this->_internal_colcollations().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(27, repfield, repfield.GetCachedSize(), target, stream); } // string enrname = 28 [json_name = "enrname"]; if (!this->_internal_enrname().empty()) { const std::string& _s = this->_internal_enrname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.RangeTblEntry.enrname"); target = stream->WriteStringMaybeAliased(28, _s, target); } // double enrtuples = 29 [json_name = "enrtuples"]; static_assert(sizeof(::uint64_t) == sizeof(double), "Code assumes ::uint64_t and double are the same size."); double tmp_enrtuples = this->_internal_enrtuples(); ::uint64_t raw_enrtuples; memcpy(&raw_enrtuples, &tmp_enrtuples, sizeof(tmp_enrtuples)); if (raw_enrtuples != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteDoubleToArray( 29, this->_internal_enrtuples(), target); } // bool lateral = 30 [json_name = "lateral"]; if (this->_internal_lateral() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 30, this->_internal_lateral(), target); } // bool in_from_cl = 31 [json_name = "inFromCl"]; if (this->_internal_in_from_cl() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 31, this->_internal_in_from_cl(), target); } // repeated .pg_query.Node security_quals = 32 [json_name = "securityQuals"]; for (unsigned i = 0, n = static_cast(this->_internal_security_quals_size()); i < n; i++) { const auto& repfield = this->_internal_security_quals().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(32, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node joinaliasvars = 14 [json_name = "joinaliasvars"]; total_size += 1UL * this->_internal_joinaliasvars_size(); for (const auto& msg : this->_internal_joinaliasvars()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node joinleftcols = 15 [json_name = "joinleftcols"]; total_size += 1UL * this->_internal_joinleftcols_size(); for (const auto& msg : this->_internal_joinleftcols()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node joinrightcols = 16 [json_name = "joinrightcols"]; total_size += 2UL * this->_internal_joinrightcols_size(); for (const auto& msg : this->_internal_joinrightcols()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node functions = 18 [json_name = "functions"]; total_size += 2UL * this->_internal_functions_size(); for (const auto& msg : this->_internal_functions()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node values_lists = 21 [json_name = "values_lists"]; total_size += 2UL * this->_internal_values_lists_size(); for (const auto& msg : this->_internal_values_lists()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node coltypes = 25 [json_name = "coltypes"]; total_size += 2UL * this->_internal_coltypes_size(); for (const auto& msg : this->_internal_coltypes()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node coltypmods = 26 [json_name = "coltypmods"]; total_size += 2UL * this->_internal_coltypmods_size(); for (const auto& msg : this->_internal_coltypmods()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node colcollations = 27 [json_name = "colcollations"]; total_size += 2UL * this->_internal_colcollations_size(); for (const auto& msg : this->_internal_colcollations()) { total_size += ::google::protobuf::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->_internal_security_quals()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string relkind = 6 [json_name = "relkind"]; if (!this->_internal_relkind().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_relkind()); } // string ctename = 22 [json_name = "ctename"]; if (!this->_internal_ctename().empty()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_ctename()); } // string enrname = 28 [json_name = "enrname"]; if (!this->_internal_enrname().empty()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_enrname()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000003fu) { // .pg_query.Alias alias = 1 [json_name = "alias"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.alias_); } // .pg_query.Alias eref = 2 [json_name = "eref"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.eref_); } // .pg_query.TableSampleClause tablesample = 9 [json_name = "tablesample"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.tablesample_); } // .pg_query.Query subquery = 10 [json_name = "subquery"]; if (cached_has_bits & 0x00000008u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.subquery_); } // .pg_query.Alias join_using_alias = 17 [json_name = "join_using_alias"]; if (cached_has_bits & 0x00000010u) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.join_using_alias_); } // .pg_query.TableFunc tablefunc = 20 [json_name = "tablefunc"]; if (cached_has_bits & 0x00000020u) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.tablefunc_); } } // .pg_query.RTEKind rtekind = 3 [json_name = "rtekind"]; if (this->_internal_rtekind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_rtekind()); } // uint32 relid = 4 [json_name = "relid"]; if (this->_internal_relid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_relid()); } // int32 rellockmode = 7 [json_name = "rellockmode"]; if (this->_internal_rellockmode() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_rellockmode()); } // uint32 perminfoindex = 8 [json_name = "perminfoindex"]; if (this->_internal_perminfoindex() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_perminfoindex()); } // .pg_query.JoinType jointype = 12 [json_name = "jointype"]; if (this->_internal_jointype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_jointype()); } // int32 joinmergedcols = 13 [json_name = "joinmergedcols"]; if (this->_internal_joinmergedcols() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_joinmergedcols()); } // bool inh = 5 [json_name = "inh"]; if (this->_internal_inh() != 0) { total_size += 2; } // bool security_barrier = 11 [json_name = "security_barrier"]; if (this->_internal_security_barrier() != 0) { total_size += 2; } // bool funcordinality = 19 [json_name = "funcordinality"]; if (this->_internal_funcordinality() != 0) { total_size += 3; } // bool self_reference = 24 [json_name = "self_reference"]; if (this->_internal_self_reference() != 0) { total_size += 3; } // uint32 ctelevelsup = 23 [json_name = "ctelevelsup"]; if (this->_internal_ctelevelsup() != 0) { total_size += 2 + ::_pbi::WireFormatLite::UInt32Size( this->_internal_ctelevelsup()); } // double enrtuples = 29 [json_name = "enrtuples"]; static_assert(sizeof(::uint64_t) == sizeof(double), "Code assumes ::uint64_t and double are the same size."); double tmp_enrtuples = this->_internal_enrtuples(); ::uint64_t raw_enrtuples; memcpy(&raw_enrtuples, &tmp_enrtuples, sizeof(tmp_enrtuples)); if (raw_enrtuples != 0) { total_size += 10; } // bool lateral = 30 [json_name = "lateral"]; if (this->_internal_lateral() != 0) { total_size += 3; } // bool in_from_cl = 31 [json_name = "inFromCl"]; if (this->_internal_in_from_cl() != 0) { total_size += 3; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RangeTblEntry::_class_data_ = { RangeTblEntry::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RangeTblEntry::GetClassData() const { return &_class_data_; } void RangeTblEntry::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeTblEntry) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_joinaliasvars()->MergeFrom( from._internal_joinaliasvars()); _this->_internal_mutable_joinleftcols()->MergeFrom( from._internal_joinleftcols()); _this->_internal_mutable_joinrightcols()->MergeFrom( from._internal_joinrightcols()); _this->_internal_mutable_functions()->MergeFrom( from._internal_functions()); _this->_internal_mutable_values_lists()->MergeFrom( from._internal_values_lists()); _this->_internal_mutable_coltypes()->MergeFrom( from._internal_coltypes()); _this->_internal_mutable_coltypmods()->MergeFrom( from._internal_coltypmods()); _this->_internal_mutable_colcollations()->MergeFrom( from._internal_colcollations()); _this->_internal_mutable_security_quals()->MergeFrom( from._internal_security_quals()); if (!from._internal_relkind().empty()) { _this->_internal_set_relkind(from._internal_relkind()); } if (!from._internal_ctename().empty()) { _this->_internal_set_ctename(from._internal_ctename()); } if (!from._internal_enrname().empty()) { _this->_internal_set_enrname(from._internal_enrname()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x0000003fu) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_alias()->::pg_query::Alias::MergeFrom( from._internal_alias()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_eref()->::pg_query::Alias::MergeFrom( from._internal_eref()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_tablesample()->::pg_query::TableSampleClause::MergeFrom( from._internal_tablesample()); } if (cached_has_bits & 0x00000008u) { _this->_internal_mutable_subquery()->::pg_query::Query::MergeFrom( from._internal_subquery()); } if (cached_has_bits & 0x00000010u) { _this->_internal_mutable_join_using_alias()->::pg_query::Alias::MergeFrom( from._internal_join_using_alias()); } if (cached_has_bits & 0x00000020u) { _this->_internal_mutable_tablefunc()->::pg_query::TableFunc::MergeFrom( from._internal_tablefunc()); } } if (from._internal_rtekind() != 0) { _this->_internal_set_rtekind(from._internal_rtekind()); } if (from._internal_relid() != 0) { _this->_internal_set_relid(from._internal_relid()); } if (from._internal_rellockmode() != 0) { _this->_internal_set_rellockmode(from._internal_rellockmode()); } if (from._internal_perminfoindex() != 0) { _this->_internal_set_perminfoindex(from._internal_perminfoindex()); } if (from._internal_jointype() != 0) { _this->_internal_set_jointype(from._internal_jointype()); } if (from._internal_joinmergedcols() != 0) { _this->_internal_set_joinmergedcols(from._internal_joinmergedcols()); } if (from._internal_inh() != 0) { _this->_internal_set_inh(from._internal_inh()); } if (from._internal_security_barrier() != 0) { _this->_internal_set_security_barrier(from._internal_security_barrier()); } if (from._internal_funcordinality() != 0) { _this->_internal_set_funcordinality(from._internal_funcordinality()); } if (from._internal_self_reference() != 0) { _this->_internal_set_self_reference(from._internal_self_reference()); } if (from._internal_ctelevelsup() != 0) { _this->_internal_set_ctelevelsup(from._internal_ctelevelsup()); } static_assert(sizeof(::uint64_t) == sizeof(double), "Code assumes ::uint64_t and double are the same size."); double tmp_enrtuples = from._internal_enrtuples(); ::uint64_t raw_enrtuples; memcpy(&raw_enrtuples, &tmp_enrtuples, sizeof(tmp_enrtuples)); if (raw_enrtuples != 0) { _this->_internal_set_enrtuples(from._internal_enrtuples()); } if (from._internal_lateral() != 0) { _this->_internal_set_lateral(from._internal_lateral()); } if (from._internal_in_from_cl() != 0) { _this->_internal_set_in_from_cl(from._internal_in_from_cl()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RangeTblEntry::CopyFrom(const RangeTblEntry& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeTblEntry) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RangeTblEntry::IsInitialized() const { return true; } ::_pbi::CachedSize* RangeTblEntry::AccessCachedSize() const { return &_impl_._cached_size_; } void RangeTblEntry::InternalSwap(RangeTblEntry* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.joinaliasvars_.InternalSwap(&other->_impl_.joinaliasvars_); _impl_.joinleftcols_.InternalSwap(&other->_impl_.joinleftcols_); _impl_.joinrightcols_.InternalSwap(&other->_impl_.joinrightcols_); _impl_.functions_.InternalSwap(&other->_impl_.functions_); _impl_.values_lists_.InternalSwap(&other->_impl_.values_lists_); _impl_.coltypes_.InternalSwap(&other->_impl_.coltypes_); _impl_.coltypmods_.InternalSwap(&other->_impl_.coltypmods_); _impl_.colcollations_.InternalSwap(&other->_impl_.colcollations_); _impl_.security_quals_.InternalSwap(&other->_impl_.security_quals_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.relkind_, &other->_impl_.relkind_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.ctename_, &other->_impl_.ctename_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.enrname_, &other->_impl_.enrname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.in_from_cl_) + sizeof(RangeTblEntry::_impl_.in_from_cl_) - PROTOBUF_FIELD_OFFSET(RangeTblEntry, _impl_.alias_)>( reinterpret_cast(&_impl_.alias_), reinterpret_cast(&other->_impl_.alias_)); } ::google::protobuf::Metadata RangeTblEntry::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[109]); } // =================================================================== class RTEPermissionInfo::_Internal { public: }; RTEPermissionInfo::RTEPermissionInfo(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RTEPermissionInfo) } inline PROTOBUF_NDEBUG_INLINE RTEPermissionInfo::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : selected_cols_{visibility, arena, from.selected_cols_}, _selected_cols_cached_byte_size_{0}, inserted_cols_{visibility, arena, from.inserted_cols_}, _inserted_cols_cached_byte_size_{0}, updated_cols_{visibility, arena, from.updated_cols_}, _updated_cols_cached_byte_size_{0}, _cached_size_{0} {} RTEPermissionInfo::RTEPermissionInfo( ::google::protobuf::Arena* arena, const RTEPermissionInfo& from) : ::google::protobuf::Message(arena) { RTEPermissionInfo* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, relid_), reinterpret_cast(&from._impl_) + offsetof(Impl_, relid_), offsetof(Impl_, check_as_user_) - offsetof(Impl_, relid_) + sizeof(Impl_::check_as_user_)); // @@protoc_insertion_point(copy_constructor:pg_query.RTEPermissionInfo) } inline PROTOBUF_NDEBUG_INLINE RTEPermissionInfo::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : selected_cols_{visibility, arena}, _selected_cols_cached_byte_size_{0}, inserted_cols_{visibility, arena}, _inserted_cols_cached_byte_size_{0}, updated_cols_{visibility, arena}, _updated_cols_cached_byte_size_{0}, _cached_size_{0} {} inline void RTEPermissionInfo::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relid_), 0, offsetof(Impl_, check_as_user_) - offsetof(Impl_, relid_) + sizeof(Impl_::check_as_user_)); } RTEPermissionInfo::~RTEPermissionInfo() { // @@protoc_insertion_point(destructor:pg_query.RTEPermissionInfo) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RTEPermissionInfo::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void RTEPermissionInfo::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RTEPermissionInfo) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.selected_cols_.Clear(); _impl_.inserted_cols_.Clear(); _impl_.updated_cols_.Clear(); ::memset(&_impl_.relid_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.check_as_user_) - reinterpret_cast(&_impl_.relid_)) + sizeof(_impl_.check_as_user_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RTEPermissionInfo::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 0, 0, 2> RTEPermissionInfo::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_RTEPermissionInfo_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // uint32 relid = 1 [json_name = "relid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RTEPermissionInfo, _impl_.relid_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.relid_)}}, // bool inh = 2 [json_name = "inh"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.inh_)}}, // uint64 required_perms = 3 [json_name = "requiredPerms"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(RTEPermissionInfo, _impl_.required_perms_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.required_perms_)}}, // uint32 check_as_user = 4 [json_name = "checkAsUser"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RTEPermissionInfo, _impl_.check_as_user_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.check_as_user_)}}, // repeated uint64 selected_cols = 5 [json_name = "selectedCols"]; {::_pbi::TcParser::FastV64P1, {42, 63, 0, PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.selected_cols_)}}, // repeated uint64 inserted_cols = 6 [json_name = "insertedCols"]; {::_pbi::TcParser::FastV64P1, {50, 63, 0, PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.inserted_cols_)}}, // repeated uint64 updated_cols = 7 [json_name = "updatedCols"]; {::_pbi::TcParser::FastV64P1, {58, 63, 0, PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.updated_cols_)}}, }}, {{ 65535, 65535 }}, {{ // uint32 relid = 1 [json_name = "relid"]; {PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.relid_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool inh = 2 [json_name = "inh"]; {PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.inh_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // uint64 required_perms = 3 [json_name = "requiredPerms"]; {PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.required_perms_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt64)}, // uint32 check_as_user = 4 [json_name = "checkAsUser"]; {PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.check_as_user_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated uint64 selected_cols = 5 [json_name = "selectedCols"]; {PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.selected_cols_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kPackedUInt64)}, // repeated uint64 inserted_cols = 6 [json_name = "insertedCols"]; {PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.inserted_cols_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kPackedUInt64)}, // repeated uint64 updated_cols = 7 [json_name = "updatedCols"]; {PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.updated_cols_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kPackedUInt64)}, }}, // no aux_entries {{ }}, }; ::uint8_t* RTEPermissionInfo::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RTEPermissionInfo) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // uint32 relid = 1 [json_name = "relid"]; if (this->_internal_relid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 1, this->_internal_relid(), target); } // bool inh = 2 [json_name = "inh"]; if (this->_internal_inh() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_inh(), target); } // uint64 required_perms = 3 [json_name = "requiredPerms"]; if (this->_internal_required_perms() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt64ToArray( 3, this->_internal_required_perms(), target); } // uint32 check_as_user = 4 [json_name = "checkAsUser"]; if (this->_internal_check_as_user() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 4, this->_internal_check_as_user(), target); } // repeated uint64 selected_cols = 5 [json_name = "selectedCols"]; { int byte_size = _impl_._selected_cols_cached_byte_size_.Get(); if (byte_size > 0) { target = stream->WriteUInt64Packed( 5, _internal_selected_cols(), byte_size, target); } } // repeated uint64 inserted_cols = 6 [json_name = "insertedCols"]; { int byte_size = _impl_._inserted_cols_cached_byte_size_.Get(); if (byte_size > 0) { target = stream->WriteUInt64Packed( 6, _internal_inserted_cols(), byte_size, target); } } // repeated uint64 updated_cols = 7 [json_name = "updatedCols"]; { int byte_size = _impl_._updated_cols_cached_byte_size_.Get(); if (byte_size > 0) { target = stream->WriteUInt64Packed( 7, _internal_updated_cols(), byte_size, target); } } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RTEPermissionInfo) return target; } ::size_t RTEPermissionInfo::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RTEPermissionInfo) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated uint64 selected_cols = 5 [json_name = "selectedCols"]; { std::size_t data_size = ::_pbi::WireFormatLite::UInt64Size( this->_internal_selected_cols()) ; _impl_._selected_cols_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size)); std::size_t tag_size = data_size == 0 ? 0 : 1 + ::_pbi::WireFormatLite::Int32Size( static_cast(data_size)) ; total_size += tag_size + data_size; } // repeated uint64 inserted_cols = 6 [json_name = "insertedCols"]; { std::size_t data_size = ::_pbi::WireFormatLite::UInt64Size( this->_internal_inserted_cols()) ; _impl_._inserted_cols_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size)); std::size_t tag_size = data_size == 0 ? 0 : 1 + ::_pbi::WireFormatLite::Int32Size( static_cast(data_size)) ; total_size += tag_size + data_size; } // repeated uint64 updated_cols = 7 [json_name = "updatedCols"]; { std::size_t data_size = ::_pbi::WireFormatLite::UInt64Size( this->_internal_updated_cols()) ; _impl_._updated_cols_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size)); std::size_t tag_size = data_size == 0 ? 0 : 1 + ::_pbi::WireFormatLite::Int32Size( static_cast(data_size)) ; total_size += tag_size + data_size; } // uint32 relid = 1 [json_name = "relid"]; if (this->_internal_relid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_relid()); } // bool inh = 2 [json_name = "inh"]; if (this->_internal_inh() != 0) { total_size += 2; } // uint64 required_perms = 3 [json_name = "requiredPerms"]; if (this->_internal_required_perms() != 0) { total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne( this->_internal_required_perms()); } // uint32 check_as_user = 4 [json_name = "checkAsUser"]; if (this->_internal_check_as_user() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_check_as_user()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RTEPermissionInfo::_class_data_ = { RTEPermissionInfo::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RTEPermissionInfo::GetClassData() const { return &_class_data_; } void RTEPermissionInfo::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RTEPermissionInfo) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_selected_cols()->MergeFrom(from._internal_selected_cols()); _this->_internal_mutable_inserted_cols()->MergeFrom(from._internal_inserted_cols()); _this->_internal_mutable_updated_cols()->MergeFrom(from._internal_updated_cols()); if (from._internal_relid() != 0) { _this->_internal_set_relid(from._internal_relid()); } if (from._internal_inh() != 0) { _this->_internal_set_inh(from._internal_inh()); } if (from._internal_required_perms() != 0) { _this->_internal_set_required_perms(from._internal_required_perms()); } if (from._internal_check_as_user() != 0) { _this->_internal_set_check_as_user(from._internal_check_as_user()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RTEPermissionInfo::CopyFrom(const RTEPermissionInfo& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RTEPermissionInfo) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RTEPermissionInfo::IsInitialized() const { return true; } ::_pbi::CachedSize* RTEPermissionInfo::AccessCachedSize() const { return &_impl_._cached_size_; } void RTEPermissionInfo::InternalSwap(RTEPermissionInfo* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.selected_cols_.InternalSwap(&other->_impl_.selected_cols_); _impl_.inserted_cols_.InternalSwap(&other->_impl_.inserted_cols_); _impl_.updated_cols_.InternalSwap(&other->_impl_.updated_cols_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.check_as_user_) + sizeof(RTEPermissionInfo::_impl_.check_as_user_) - PROTOBUF_FIELD_OFFSET(RTEPermissionInfo, _impl_.relid_)>( reinterpret_cast(&_impl_.relid_), reinterpret_cast(&other->_impl_.relid_)); } ::google::protobuf::Metadata RTEPermissionInfo::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[110]); } // =================================================================== class RangeTblFunction::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_._has_bits_); static const ::pg_query::Node& funcexpr(const RangeTblFunction* msg); static void set_has_funcexpr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& RangeTblFunction::_Internal::funcexpr(const RangeTblFunction* msg) { return *msg->_impl_.funcexpr_; } RangeTblFunction::RangeTblFunction(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeTblFunction) } inline PROTOBUF_NDEBUG_INLINE RangeTblFunction::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, funccolnames_{visibility, arena, from.funccolnames_}, funccoltypes_{visibility, arena, from.funccoltypes_}, funccoltypmods_{visibility, arena, from.funccoltypmods_}, funccolcollations_{visibility, arena, from.funccolcollations_}, funcparams_{visibility, arena, from.funcparams_}, _funcparams_cached_byte_size_{0} {} RangeTblFunction::RangeTblFunction( ::google::protobuf::Arena* arena, const RangeTblFunction& from) : ::google::protobuf::Message(arena) { RangeTblFunction* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.funcexpr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.funcexpr_) : nullptr; _impl_.funccolcount_ = from._impl_.funccolcount_; // @@protoc_insertion_point(copy_constructor:pg_query.RangeTblFunction) } inline PROTOBUF_NDEBUG_INLINE RangeTblFunction::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, funccolnames_{visibility, arena}, funccoltypes_{visibility, arena}, funccoltypmods_{visibility, arena}, funccolcollations_{visibility, arena}, funcparams_{visibility, arena}, _funcparams_cached_byte_size_{0} {} inline void RangeTblFunction::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, funcexpr_), 0, offsetof(Impl_, funccolcount_) - offsetof(Impl_, funcexpr_) + sizeof(Impl_::funccolcount_)); } RangeTblFunction::~RangeTblFunction() { // @@protoc_insertion_point(destructor:pg_query.RangeTblFunction) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RangeTblFunction::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.funcexpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RangeTblFunction::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeTblFunction) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.funccolnames_.Clear(); _impl_.funccoltypes_.Clear(); _impl_.funccoltypmods_.Clear(); _impl_.funccolcollations_.Clear(); _impl_.funcparams_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.funcexpr_ != nullptr); _impl_.funcexpr_->Clear(); } _impl_.funccolcount_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RangeTblFunction::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 5, 0, 2> RangeTblFunction::_table_ = { { PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 5, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RangeTblFunction_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funcexpr_)}}, // int32 funccolcount = 2 [json_name = "funccolcount"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RangeTblFunction, _impl_.funccolcount_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funccolcount_)}}, // repeated .pg_query.Node funccolnames = 3 [json_name = "funccolnames"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funccolnames_)}}, // repeated .pg_query.Node funccoltypes = 4 [json_name = "funccoltypes"]; {::_pbi::TcParser::FastMtR1, {34, 63, 2, PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funccoltypes_)}}, // repeated .pg_query.Node funccoltypmods = 5 [json_name = "funccoltypmods"]; {::_pbi::TcParser::FastMtR1, {42, 63, 3, PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funccoltypmods_)}}, // repeated .pg_query.Node funccolcollations = 6 [json_name = "funccolcollations"]; {::_pbi::TcParser::FastMtR1, {50, 63, 4, PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funccolcollations_)}}, // repeated uint64 funcparams = 7 [json_name = "funcparams"]; {::_pbi::TcParser::FastV64P1, {58, 63, 0, PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funcparams_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; {PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funcexpr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 funccolcount = 2 [json_name = "funccolcount"]; {PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funccolcount_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // repeated .pg_query.Node funccolnames = 3 [json_name = "funccolnames"]; {PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funccolnames_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node funccoltypes = 4 [json_name = "funccoltypes"]; {PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funccoltypes_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node funccoltypmods = 5 [json_name = "funccoltypmods"]; {PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funccoltypmods_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node funccolcollations = 6 [json_name = "funccolcollations"]; {PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funccolcollations_), -1, 4, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated uint64 funcparams = 7 [json_name = "funcparams"]; {PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funcparams_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kPackedUInt64)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* RangeTblFunction::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeTblFunction) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::funcexpr(this), _Internal::funcexpr(this).GetCachedSize(), target, stream); } // int32 funccolcount = 2 [json_name = "funccolcount"]; if (this->_internal_funccolcount() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<2>( stream, this->_internal_funccolcount(), target); } // repeated .pg_query.Node funccolnames = 3 [json_name = "funccolnames"]; for (unsigned i = 0, n = static_cast(this->_internal_funccolnames_size()); i < n; i++) { const auto& repfield = this->_internal_funccolnames().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node funccoltypes = 4 [json_name = "funccoltypes"]; for (unsigned i = 0, n = static_cast(this->_internal_funccoltypes_size()); i < n; i++) { const auto& repfield = this->_internal_funccoltypes().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node funccoltypmods = 5 [json_name = "funccoltypmods"]; for (unsigned i = 0, n = static_cast(this->_internal_funccoltypmods_size()); i < n; i++) { const auto& repfield = this->_internal_funccoltypmods().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node funccolcollations = 6 [json_name = "funccolcollations"]; for (unsigned i = 0, n = static_cast(this->_internal_funccolcollations_size()); i < n; i++) { const auto& repfield = this->_internal_funccolcollations().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // repeated uint64 funcparams = 7 [json_name = "funcparams"]; { int byte_size = _impl_._funcparams_cached_byte_size_.Get(); if (byte_size > 0) { target = stream->WriteUInt64Packed( 7, _internal_funcparams(), byte_size, target); } } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_funccolnames()) { total_size += ::google::protobuf::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->_internal_funccoltypes()) { total_size += ::google::protobuf::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->_internal_funccoltypmods()) { total_size += ::google::protobuf::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->_internal_funccolcollations()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated uint64 funcparams = 7 [json_name = "funcparams"]; { std::size_t data_size = ::_pbi::WireFormatLite::UInt64Size( this->_internal_funcparams()) ; _impl_._funcparams_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size)); std::size_t tag_size = data_size == 0 ? 0 : 1 + ::_pbi::WireFormatLite::Int32Size( static_cast(data_size)) ; total_size += tag_size + data_size; } // .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.funcexpr_); } // int32 funccolcount = 2 [json_name = "funccolcount"]; if (this->_internal_funccolcount() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_funccolcount()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RangeTblFunction::_class_data_ = { RangeTblFunction::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RangeTblFunction::GetClassData() const { return &_class_data_; } void RangeTblFunction::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeTblFunction) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_funccolnames()->MergeFrom( from._internal_funccolnames()); _this->_internal_mutable_funccoltypes()->MergeFrom( from._internal_funccoltypes()); _this->_internal_mutable_funccoltypmods()->MergeFrom( from._internal_funccoltypmods()); _this->_internal_mutable_funccolcollations()->MergeFrom( from._internal_funccolcollations()); _this->_internal_mutable_funcparams()->MergeFrom(from._internal_funcparams()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_funcexpr()->::pg_query::Node::MergeFrom( from._internal_funcexpr()); } if (from._internal_funccolcount() != 0) { _this->_internal_set_funccolcount(from._internal_funccolcount()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RangeTblFunction::CopyFrom(const RangeTblFunction& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeTblFunction) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RangeTblFunction::IsInitialized() const { return true; } ::_pbi::CachedSize* RangeTblFunction::AccessCachedSize() const { return &_impl_._cached_size_; } void RangeTblFunction::InternalSwap(RangeTblFunction* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.funccolnames_.InternalSwap(&other->_impl_.funccolnames_); _impl_.funccoltypes_.InternalSwap(&other->_impl_.funccoltypes_); _impl_.funccoltypmods_.InternalSwap(&other->_impl_.funccoltypmods_); _impl_.funccolcollations_.InternalSwap(&other->_impl_.funccolcollations_); _impl_.funcparams_.InternalSwap(&other->_impl_.funcparams_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funccolcount_) + sizeof(RangeTblFunction::_impl_.funccolcount_) - PROTOBUF_FIELD_OFFSET(RangeTblFunction, _impl_.funcexpr_)>( reinterpret_cast(&_impl_.funcexpr_), reinterpret_cast(&other->_impl_.funcexpr_)); } ::google::protobuf::Metadata RangeTblFunction::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[111]); } // =================================================================== class TableSampleClause::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(TableSampleClause, _impl_._has_bits_); static const ::pg_query::Node& repeatable(const TableSampleClause* msg); static void set_has_repeatable(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& TableSampleClause::_Internal::repeatable(const TableSampleClause* msg) { return *msg->_impl_.repeatable_; } TableSampleClause::TableSampleClause(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TableSampleClause) } inline PROTOBUF_NDEBUG_INLINE TableSampleClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, args_{visibility, arena, from.args_} {} TableSampleClause::TableSampleClause( ::google::protobuf::Arena* arena, const TableSampleClause& from) : ::google::protobuf::Message(arena) { TableSampleClause* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.repeatable_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.repeatable_) : nullptr; _impl_.tsmhandler_ = from._impl_.tsmhandler_; // @@protoc_insertion_point(copy_constructor:pg_query.TableSampleClause) } inline PROTOBUF_NDEBUG_INLINE TableSampleClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, args_{visibility, arena} {} inline void TableSampleClause::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, repeatable_), 0, offsetof(Impl_, tsmhandler_) - offsetof(Impl_, repeatable_) + sizeof(Impl_::tsmhandler_)); } TableSampleClause::~TableSampleClause() { // @@protoc_insertion_point(destructor:pg_query.TableSampleClause) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void TableSampleClause::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.repeatable_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void TableSampleClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TableSampleClause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.repeatable_ != nullptr); _impl_.repeatable_->Clear(); } _impl_.tsmhandler_ = 0u; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* TableSampleClause::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 0, 2> TableSampleClause::_table_ = { { PROTOBUF_FIELD_OFFSET(TableSampleClause, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_TableSampleClause_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // uint32 tsmhandler = 1 [json_name = "tsmhandler"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TableSampleClause, _impl_.tsmhandler_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(TableSampleClause, _impl_.tsmhandler_)}}, // repeated .pg_query.Node args = 2 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(TableSampleClause, _impl_.args_)}}, // .pg_query.Node repeatable = 3 [json_name = "repeatable"]; {::_pbi::TcParser::FastMtS1, {26, 0, 1, PROTOBUF_FIELD_OFFSET(TableSampleClause, _impl_.repeatable_)}}, }}, {{ 65535, 65535 }}, {{ // uint32 tsmhandler = 1 [json_name = "tsmhandler"]; {PROTOBUF_FIELD_OFFSET(TableSampleClause, _impl_.tsmhandler_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated .pg_query.Node args = 2 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(TableSampleClause, _impl_.args_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node repeatable = 3 [json_name = "repeatable"]; {PROTOBUF_FIELD_OFFSET(TableSampleClause, _impl_.repeatable_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* TableSampleClause::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TableSampleClause) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // uint32 tsmhandler = 1 [json_name = "tsmhandler"]; if (this->_internal_tsmhandler() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 1, this->_internal_tsmhandler(), target); } // repeated .pg_query.Node args = 2 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node repeatable = 3 [json_name = "repeatable"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::repeatable(this), _Internal::repeatable(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node repeatable = 3 [json_name = "repeatable"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.repeatable_); } // uint32 tsmhandler = 1 [json_name = "tsmhandler"]; if (this->_internal_tsmhandler() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_tsmhandler()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData TableSampleClause::_class_data_ = { TableSampleClause::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* TableSampleClause::GetClassData() const { return &_class_data_; } void TableSampleClause::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TableSampleClause) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_repeatable()->::pg_query::Node::MergeFrom( from._internal_repeatable()); } if (from._internal_tsmhandler() != 0) { _this->_internal_set_tsmhandler(from._internal_tsmhandler()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void TableSampleClause::CopyFrom(const TableSampleClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TableSampleClause) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool TableSampleClause::IsInitialized() const { return true; } ::_pbi::CachedSize* TableSampleClause::AccessCachedSize() const { return &_impl_._cached_size_; } void TableSampleClause::InternalSwap(TableSampleClause* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.args_.InternalSwap(&other->_impl_.args_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(TableSampleClause, _impl_.tsmhandler_) + sizeof(TableSampleClause::_impl_.tsmhandler_) - PROTOBUF_FIELD_OFFSET(TableSampleClause, _impl_.repeatable_)>( reinterpret_cast(&_impl_.repeatable_), reinterpret_cast(&other->_impl_.repeatable_)); } ::google::protobuf::Metadata TableSampleClause::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[112]); } // =================================================================== class WithCheckOption::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(WithCheckOption, _impl_._has_bits_); static const ::pg_query::Node& qual(const WithCheckOption* msg); static void set_has_qual(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& WithCheckOption::_Internal::qual(const WithCheckOption* msg) { return *msg->_impl_.qual_; } WithCheckOption::WithCheckOption(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.WithCheckOption) } inline PROTOBUF_NDEBUG_INLINE WithCheckOption::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, relname_(arena, from.relname_), polname_(arena, from.polname_) {} WithCheckOption::WithCheckOption( ::google::protobuf::Arena* arena, const WithCheckOption& from) : ::google::protobuf::Message(arena) { WithCheckOption* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.qual_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.qual_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, kind_), reinterpret_cast(&from._impl_) + offsetof(Impl_, kind_), offsetof(Impl_, cascaded_) - offsetof(Impl_, kind_) + sizeof(Impl_::cascaded_)); // @@protoc_insertion_point(copy_constructor:pg_query.WithCheckOption) } inline PROTOBUF_NDEBUG_INLINE WithCheckOption::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, relname_(arena), polname_(arena) {} inline void WithCheckOption::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, qual_), 0, offsetof(Impl_, cascaded_) - offsetof(Impl_, qual_) + sizeof(Impl_::cascaded_)); } WithCheckOption::~WithCheckOption() { // @@protoc_insertion_point(destructor:pg_query.WithCheckOption) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void WithCheckOption::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.relname_.Destroy(); _impl_.polname_.Destroy(); delete _impl_.qual_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void WithCheckOption::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.WithCheckOption) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.relname_.ClearToEmpty(); _impl_.polname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.qual_ != nullptr); _impl_.qual_->Clear(); } ::memset(&_impl_.kind_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.cascaded_) - reinterpret_cast(&_impl_.kind_)) + sizeof(_impl_.cascaded_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* WithCheckOption::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 1, 47, 2> WithCheckOption::_table_ = { { PROTOBUF_FIELD_OFFSET(WithCheckOption, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_WithCheckOption_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.WCOKind kind = 1 [json_name = "kind"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WithCheckOption, _impl_.kind_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(WithCheckOption, _impl_.kind_)}}, // string relname = 2 [json_name = "relname"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(WithCheckOption, _impl_.relname_)}}, // string polname = 3 [json_name = "polname"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(WithCheckOption, _impl_.polname_)}}, // .pg_query.Node qual = 4 [json_name = "qual"]; {::_pbi::TcParser::FastMtS1, {34, 0, 0, PROTOBUF_FIELD_OFFSET(WithCheckOption, _impl_.qual_)}}, // bool cascaded = 5 [json_name = "cascaded"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(WithCheckOption, _impl_.cascaded_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.WCOKind kind = 1 [json_name = "kind"]; {PROTOBUF_FIELD_OFFSET(WithCheckOption, _impl_.kind_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // string relname = 2 [json_name = "relname"]; {PROTOBUF_FIELD_OFFSET(WithCheckOption, _impl_.relname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string polname = 3 [json_name = "polname"]; {PROTOBUF_FIELD_OFFSET(WithCheckOption, _impl_.polname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.Node qual = 4 [json_name = "qual"]; {PROTOBUF_FIELD_OFFSET(WithCheckOption, _impl_.qual_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool cascaded = 5 [json_name = "cascaded"]; {PROTOBUF_FIELD_OFFSET(WithCheckOption, _impl_.cascaded_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\30\0\7\7\0\0\0\0" "pg_query.WithCheckOption" "relname" "polname" }}, }; ::uint8_t* WithCheckOption::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.WithCheckOption) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.WCOKind kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // string relname = 2 [json_name = "relname"]; if (!this->_internal_relname().empty()) { const std::string& _s = this->_internal_relname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.WithCheckOption.relname"); target = stream->WriteStringMaybeAliased(2, _s, target); } // string polname = 3 [json_name = "polname"]; if (!this->_internal_polname().empty()) { const std::string& _s = this->_internal_polname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.WithCheckOption.polname"); target = stream->WriteStringMaybeAliased(3, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node qual = 4 [json_name = "qual"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::qual(this), _Internal::qual(this).GetCachedSize(), target, stream); } // bool cascaded = 5 [json_name = "cascaded"]; if (this->_internal_cascaded() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_cascaded(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_relname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_relname()); } // string polname = 3 [json_name = "polname"]; if (!this->_internal_polname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_polname()); } // .pg_query.Node qual = 4 [json_name = "qual"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.qual_); } // .pg_query.WCOKind kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_kind()); } // bool cascaded = 5 [json_name = "cascaded"]; if (this->_internal_cascaded() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData WithCheckOption::_class_data_ = { WithCheckOption::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* WithCheckOption::GetClassData() const { return &_class_data_; } void WithCheckOption::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.WithCheckOption) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_relname().empty()) { _this->_internal_set_relname(from._internal_relname()); } if (!from._internal_polname().empty()) { _this->_internal_set_polname(from._internal_polname()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_qual()->::pg_query::Node::MergeFrom( from._internal_qual()); } if (from._internal_kind() != 0) { _this->_internal_set_kind(from._internal_kind()); } if (from._internal_cascaded() != 0) { _this->_internal_set_cascaded(from._internal_cascaded()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void WithCheckOption::CopyFrom(const WithCheckOption& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.WithCheckOption) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool WithCheckOption::IsInitialized() const { return true; } ::_pbi::CachedSize* WithCheckOption::AccessCachedSize() const { return &_impl_._cached_size_; } void WithCheckOption::InternalSwap(WithCheckOption* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.relname_, &other->_impl_.relname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.polname_, &other->_impl_.polname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(WithCheckOption, _impl_.cascaded_) + sizeof(WithCheckOption::_impl_.cascaded_) - PROTOBUF_FIELD_OFFSET(WithCheckOption, _impl_.qual_)>( reinterpret_cast(&_impl_.qual_), reinterpret_cast(&other->_impl_.qual_)); } ::google::protobuf::Metadata WithCheckOption::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[113]); } // =================================================================== class SortGroupClause::_Internal { public: }; SortGroupClause::SortGroupClause(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SortGroupClause) } SortGroupClause::SortGroupClause( ::google::protobuf::Arena* arena, const SortGroupClause& from) : SortGroupClause(arena) { MergeFrom(from); } inline PROTOBUF_NDEBUG_INLINE SortGroupClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void SortGroupClause::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, tle_sort_group_ref_), 0, offsetof(Impl_, hashable_) - offsetof(Impl_, tle_sort_group_ref_) + sizeof(Impl_::hashable_)); } SortGroupClause::~SortGroupClause() { // @@protoc_insertion_point(destructor:pg_query.SortGroupClause) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void SortGroupClause::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void SortGroupClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SortGroupClause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; ::memset(&_impl_.tle_sort_group_ref_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.hashable_) - reinterpret_cast(&_impl_.tle_sort_group_ref_)) + sizeof(_impl_.hashable_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* SortGroupClause::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 0, 0, 2> SortGroupClause::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_SortGroupClause_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // uint32 tle_sort_group_ref = 1 [json_name = "tleSortGroupRef"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SortGroupClause, _impl_.tle_sort_group_ref_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(SortGroupClause, _impl_.tle_sort_group_ref_)}}, // uint32 eqop = 2 [json_name = "eqop"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SortGroupClause, _impl_.eqop_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(SortGroupClause, _impl_.eqop_)}}, // uint32 sortop = 3 [json_name = "sortop"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SortGroupClause, _impl_.sortop_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(SortGroupClause, _impl_.sortop_)}}, // bool nulls_first = 4 [json_name = "nulls_first"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(SortGroupClause, _impl_.nulls_first_)}}, // bool hashable = 5 [json_name = "hashable"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(SortGroupClause, _impl_.hashable_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // uint32 tle_sort_group_ref = 1 [json_name = "tleSortGroupRef"]; {PROTOBUF_FIELD_OFFSET(SortGroupClause, _impl_.tle_sort_group_ref_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 eqop = 2 [json_name = "eqop"]; {PROTOBUF_FIELD_OFFSET(SortGroupClause, _impl_.eqop_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 sortop = 3 [json_name = "sortop"]; {PROTOBUF_FIELD_OFFSET(SortGroupClause, _impl_.sortop_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool nulls_first = 4 [json_name = "nulls_first"]; {PROTOBUF_FIELD_OFFSET(SortGroupClause, _impl_.nulls_first_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool hashable = 5 [json_name = "hashable"]; {PROTOBUF_FIELD_OFFSET(SortGroupClause, _impl_.hashable_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, // no aux_entries {{ }}, }; ::uint8_t* SortGroupClause::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SortGroupClause) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // uint32 tle_sort_group_ref = 1 [json_name = "tleSortGroupRef"]; if (this->_internal_tle_sort_group_ref() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 1, this->_internal_tle_sort_group_ref(), target); } // uint32 eqop = 2 [json_name = "eqop"]; if (this->_internal_eqop() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_eqop(), target); } // uint32 sortop = 3 [json_name = "sortop"]; if (this->_internal_sortop() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_sortop(), target); } // bool nulls_first = 4 [json_name = "nulls_first"]; if (this->_internal_nulls_first() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_nulls_first(), target); } // bool hashable = 5 [json_name = "hashable"]; if (this->_internal_hashable() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_hashable(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_tle_sort_group_ref() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_tle_sort_group_ref()); } // uint32 eqop = 2 [json_name = "eqop"]; if (this->_internal_eqop() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_eqop()); } // uint32 sortop = 3 [json_name = "sortop"]; if (this->_internal_sortop() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_sortop()); } // bool nulls_first = 4 [json_name = "nulls_first"]; if (this->_internal_nulls_first() != 0) { total_size += 2; } // bool hashable = 5 [json_name = "hashable"]; if (this->_internal_hashable() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData SortGroupClause::_class_data_ = { SortGroupClause::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* SortGroupClause::GetClassData() const { return &_class_data_; } void SortGroupClause::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SortGroupClause) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (from._internal_tle_sort_group_ref() != 0) { _this->_internal_set_tle_sort_group_ref(from._internal_tle_sort_group_ref()); } if (from._internal_eqop() != 0) { _this->_internal_set_eqop(from._internal_eqop()); } if (from._internal_sortop() != 0) { _this->_internal_set_sortop(from._internal_sortop()); } if (from._internal_nulls_first() != 0) { _this->_internal_set_nulls_first(from._internal_nulls_first()); } if (from._internal_hashable() != 0) { _this->_internal_set_hashable(from._internal_hashable()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void SortGroupClause::CopyFrom(const SortGroupClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SortGroupClause) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool SortGroupClause::IsInitialized() const { return true; } ::_pbi::CachedSize* SortGroupClause::AccessCachedSize() const { return &_impl_._cached_size_; } void SortGroupClause::InternalSwap(SortGroupClause* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(SortGroupClause, _impl_.hashable_) + sizeof(SortGroupClause::_impl_.hashable_) - PROTOBUF_FIELD_OFFSET(SortGroupClause, _impl_.tle_sort_group_ref_)>( reinterpret_cast(&_impl_.tle_sort_group_ref_), reinterpret_cast(&other->_impl_.tle_sort_group_ref_)); } ::google::protobuf::Metadata SortGroupClause::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[114]); } // =================================================================== class GroupingSet::_Internal { public: }; GroupingSet::GroupingSet(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.GroupingSet) } inline PROTOBUF_NDEBUG_INLINE GroupingSet::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : content_{visibility, arena, from.content_}, _cached_size_{0} {} GroupingSet::GroupingSet( ::google::protobuf::Arena* arena, const GroupingSet& from) : ::google::protobuf::Message(arena) { GroupingSet* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, kind_), reinterpret_cast(&from._impl_) + offsetof(Impl_, kind_), offsetof(Impl_, location_) - offsetof(Impl_, kind_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.GroupingSet) } inline PROTOBUF_NDEBUG_INLINE GroupingSet::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : content_{visibility, arena}, _cached_size_{0} {} inline void GroupingSet::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, kind_), 0, offsetof(Impl_, location_) - offsetof(Impl_, kind_) + sizeof(Impl_::location_)); } GroupingSet::~GroupingSet() { // @@protoc_insertion_point(destructor:pg_query.GroupingSet) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void GroupingSet::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void GroupingSet::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.GroupingSet) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.content_.Clear(); ::memset(&_impl_.kind_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.kind_)) + sizeof(_impl_.location_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* GroupingSet::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> GroupingSet::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_GroupingSet_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.GroupingSetKind kind = 1 [json_name = "kind"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(GroupingSet, _impl_.kind_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(GroupingSet, _impl_.kind_)}}, // repeated .pg_query.Node content = 2 [json_name = "content"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(GroupingSet, _impl_.content_)}}, // int32 location = 3 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(GroupingSet, _impl_.location_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(GroupingSet, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.GroupingSetKind kind = 1 [json_name = "kind"]; {PROTOBUF_FIELD_OFFSET(GroupingSet, _impl_.kind_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node content = 2 [json_name = "content"]; {PROTOBUF_FIELD_OFFSET(GroupingSet, _impl_.content_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 3 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(GroupingSet, _impl_.location_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* GroupingSet::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.GroupingSet) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.GroupingSetKind kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // repeated .pg_query.Node content = 2 [json_name = "content"]; for (unsigned i = 0, n = static_cast(this->_internal_content_size()); i < n; i++) { const auto& repfield = this->_internal_content().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_content()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.GroupingSetKind kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_kind()); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData GroupingSet::_class_data_ = { GroupingSet::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* GroupingSet::GetClassData() const { return &_class_data_; } void GroupingSet::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.GroupingSet) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_content()->MergeFrom( from._internal_content()); if (from._internal_kind() != 0) { _this->_internal_set_kind(from._internal_kind()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void GroupingSet::CopyFrom(const GroupingSet& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.GroupingSet) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool GroupingSet::IsInitialized() const { return true; } ::_pbi::CachedSize* GroupingSet::AccessCachedSize() const { return &_impl_._cached_size_; } void GroupingSet::InternalSwap(GroupingSet* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.content_.InternalSwap(&other->_impl_.content_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(GroupingSet, _impl_.location_) + sizeof(GroupingSet::_impl_.location_) - PROTOBUF_FIELD_OFFSET(GroupingSet, _impl_.kind_)>( reinterpret_cast(&_impl_.kind_), reinterpret_cast(&other->_impl_.kind_)); } ::google::protobuf::Metadata GroupingSet::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[115]); } // =================================================================== class WindowClause::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(WindowClause, _impl_._has_bits_); static const ::pg_query::Node& start_offset(const WindowClause* msg); static void set_has_start_offset(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& end_offset(const WindowClause* msg); static void set_has_end_offset(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& WindowClause::_Internal::start_offset(const WindowClause* msg) { return *msg->_impl_.start_offset_; } const ::pg_query::Node& WindowClause::_Internal::end_offset(const WindowClause* msg) { return *msg->_impl_.end_offset_; } WindowClause::WindowClause(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.WindowClause) } inline PROTOBUF_NDEBUG_INLINE WindowClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, partition_clause_{visibility, arena, from.partition_clause_}, order_clause_{visibility, arena, from.order_clause_}, name_(arena, from.name_), refname_(arena, from.refname_) {} WindowClause::WindowClause( ::google::protobuf::Arena* arena, const WindowClause& from) : ::google::protobuf::Message(arena) { WindowClause* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.start_offset_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.start_offset_) : nullptr; _impl_.end_offset_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.end_offset_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, frame_options_), reinterpret_cast(&from._impl_) + offsetof(Impl_, frame_options_), offsetof(Impl_, winref_) - offsetof(Impl_, frame_options_) + sizeof(Impl_::winref_)); // @@protoc_insertion_point(copy_constructor:pg_query.WindowClause) } inline PROTOBUF_NDEBUG_INLINE WindowClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, partition_clause_{visibility, arena}, order_clause_{visibility, arena}, name_(arena), refname_(arena) {} inline void WindowClause::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, start_offset_), 0, offsetof(Impl_, winref_) - offsetof(Impl_, start_offset_) + sizeof(Impl_::winref_)); } WindowClause::~WindowClause() { // @@protoc_insertion_point(destructor:pg_query.WindowClause) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void WindowClause::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); _impl_.refname_.Destroy(); delete _impl_.start_offset_; delete _impl_.end_offset_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void WindowClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.WindowClause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.partition_clause_.Clear(); _impl_.order_clause_.Clear(); _impl_.name_.ClearToEmpty(); _impl_.refname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.start_offset_ != nullptr); _impl_.start_offset_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.end_offset_ != nullptr); _impl_.end_offset_->Clear(); } } ::memset(&_impl_.frame_options_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.winref_) - reinterpret_cast(&_impl_.frame_options_)) + sizeof(_impl_.winref_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* WindowClause::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 14, 4, 49, 2> WindowClause::_table_ = { { PROTOBUF_FIELD_OFFSET(WindowClause, _impl_._has_bits_), 0, // no _extensions_ 14, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294950912, // skipmap offsetof(decltype(_table_), field_entries), 14, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_WindowClause_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string name = 1 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.name_)}}, // string refname = 2 [json_name = "refname"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.refname_)}}, // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; {::_pbi::TcParser::FastMtR1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.partition_clause_)}}, // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.order_clause_)}}, // int32 frame_options = 5 [json_name = "frameOptions"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowClause, _impl_.frame_options_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.frame_options_)}}, // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; {::_pbi::TcParser::FastMtS1, {50, 0, 2, PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.start_offset_)}}, // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; {::_pbi::TcParser::FastMtS1, {58, 1, 3, PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.end_offset_)}}, // uint32 start_in_range_func = 8 [json_name = "startInRangeFunc"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowClause, _impl_.start_in_range_func_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.start_in_range_func_)}}, // uint32 end_in_range_func = 9 [json_name = "endInRangeFunc"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowClause, _impl_.end_in_range_func_), 63>(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.end_in_range_func_)}}, // uint32 in_range_coll = 10 [json_name = "inRangeColl"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowClause, _impl_.in_range_coll_), 63>(), {80, 63, 0, PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.in_range_coll_)}}, // bool in_range_asc = 11 [json_name = "inRangeAsc"]; {::_pbi::TcParser::SingularVarintNoZag1(), {88, 63, 0, PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.in_range_asc_)}}, // bool in_range_nulls_first = 12 [json_name = "inRangeNullsFirst"]; {::_pbi::TcParser::SingularVarintNoZag1(), {96, 63, 0, PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.in_range_nulls_first_)}}, // uint32 winref = 13 [json_name = "winref"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowClause, _impl_.winref_), 63>(), {104, 63, 0, PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.winref_)}}, // bool copied_order = 14 [json_name = "copiedOrder"]; {::_pbi::TcParser::SingularVarintNoZag1(), {112, 63, 0, PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.copied_order_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // string name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string refname = 2 [json_name = "refname"]; {PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.refname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; {PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.partition_clause_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; {PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.order_clause_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 frame_options = 5 [json_name = "frameOptions"]; {PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.frame_options_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; {PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.start_offset_), _Internal::kHasBitsOffset + 0, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; {PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.end_offset_), _Internal::kHasBitsOffset + 1, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 start_in_range_func = 8 [json_name = "startInRangeFunc"]; {PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.start_in_range_func_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 end_in_range_func = 9 [json_name = "endInRangeFunc"]; {PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.end_in_range_func_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 in_range_coll = 10 [json_name = "inRangeColl"]; {PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.in_range_coll_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool in_range_asc = 11 [json_name = "inRangeAsc"]; {PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.in_range_asc_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool in_range_nulls_first = 12 [json_name = "inRangeNullsFirst"]; {PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.in_range_nulls_first_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // uint32 winref = 13 [json_name = "winref"]; {PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.winref_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool copied_order = 14 [json_name = "copiedOrder"]; {PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.copied_order_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\25\4\7\0\0\0\0\0\0\0\0\0\0\0\0\0" "pg_query.WindowClause" "name" "refname" }}, }; ::uint8_t* WindowClause::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.WindowClause) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.WindowClause.name"); target = stream->WriteStringMaybeAliased(1, _s, target); } // string refname = 2 [json_name = "refname"]; if (!this->_internal_refname().empty()) { const std::string& _s = this->_internal_refname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.WindowClause.refname"); target = stream->WriteStringMaybeAliased(2, _s, target); } // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; for (unsigned i = 0, n = static_cast(this->_internal_partition_clause_size()); i < n; i++) { const auto& repfield = this->_internal_partition_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; for (unsigned i = 0, n = static_cast(this->_internal_order_clause_size()); i < n; i++) { const auto& repfield = this->_internal_order_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // int32 frame_options = 5 [json_name = "frameOptions"]; if (this->_internal_frame_options() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_frame_options(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::start_offset(this), _Internal::start_offset(this).GetCachedSize(), target, stream); } // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 7, _Internal::end_offset(this), _Internal::end_offset(this).GetCachedSize(), target, stream); } // uint32 start_in_range_func = 8 [json_name = "startInRangeFunc"]; if (this->_internal_start_in_range_func() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 8, this->_internal_start_in_range_func(), target); } // uint32 end_in_range_func = 9 [json_name = "endInRangeFunc"]; if (this->_internal_end_in_range_func() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 9, this->_internal_end_in_range_func(), target); } // uint32 in_range_coll = 10 [json_name = "inRangeColl"]; if (this->_internal_in_range_coll() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 10, this->_internal_in_range_coll(), target); } // bool in_range_asc = 11 [json_name = "inRangeAsc"]; if (this->_internal_in_range_asc() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 11, this->_internal_in_range_asc(), target); } // bool in_range_nulls_first = 12 [json_name = "inRangeNullsFirst"]; if (this->_internal_in_range_nulls_first() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 12, this->_internal_in_range_nulls_first(), target); } // uint32 winref = 13 [json_name = "winref"]; if (this->_internal_winref() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 13, this->_internal_winref(), target); } // bool copied_order = 14 [json_name = "copiedOrder"]; if (this->_internal_copied_order() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 14, this->_internal_copied_order(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_partition_clause()) { total_size += ::google::protobuf::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->_internal_order_clause()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // string refname = 2 [json_name = "refname"]; if (!this->_internal_refname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_refname()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.start_offset_); } // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.end_offset_); } } // int32 frame_options = 5 [json_name = "frameOptions"]; if (this->_internal_frame_options() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_frame_options()); } // uint32 start_in_range_func = 8 [json_name = "startInRangeFunc"]; if (this->_internal_start_in_range_func() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_start_in_range_func()); } // uint32 end_in_range_func = 9 [json_name = "endInRangeFunc"]; if (this->_internal_end_in_range_func() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_end_in_range_func()); } // uint32 in_range_coll = 10 [json_name = "inRangeColl"]; if (this->_internal_in_range_coll() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_in_range_coll()); } // bool in_range_asc = 11 [json_name = "inRangeAsc"]; if (this->_internal_in_range_asc() != 0) { total_size += 2; } // bool in_range_nulls_first = 12 [json_name = "inRangeNullsFirst"]; if (this->_internal_in_range_nulls_first() != 0) { total_size += 2; } // bool copied_order = 14 [json_name = "copiedOrder"]; if (this->_internal_copied_order() != 0) { total_size += 2; } // uint32 winref = 13 [json_name = "winref"]; if (this->_internal_winref() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_winref()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData WindowClause::_class_data_ = { WindowClause::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* WindowClause::GetClassData() const { return &_class_data_; } void WindowClause::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.WindowClause) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_partition_clause()->MergeFrom( from._internal_partition_clause()); _this->_internal_mutable_order_clause()->MergeFrom( from._internal_order_clause()); if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if (!from._internal_refname().empty()) { _this->_internal_set_refname(from._internal_refname()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_start_offset()->::pg_query::Node::MergeFrom( from._internal_start_offset()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_end_offset()->::pg_query::Node::MergeFrom( from._internal_end_offset()); } } if (from._internal_frame_options() != 0) { _this->_internal_set_frame_options(from._internal_frame_options()); } if (from._internal_start_in_range_func() != 0) { _this->_internal_set_start_in_range_func(from._internal_start_in_range_func()); } if (from._internal_end_in_range_func() != 0) { _this->_internal_set_end_in_range_func(from._internal_end_in_range_func()); } if (from._internal_in_range_coll() != 0) { _this->_internal_set_in_range_coll(from._internal_in_range_coll()); } if (from._internal_in_range_asc() != 0) { _this->_internal_set_in_range_asc(from._internal_in_range_asc()); } if (from._internal_in_range_nulls_first() != 0) { _this->_internal_set_in_range_nulls_first(from._internal_in_range_nulls_first()); } if (from._internal_copied_order() != 0) { _this->_internal_set_copied_order(from._internal_copied_order()); } if (from._internal_winref() != 0) { _this->_internal_set_winref(from._internal_winref()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void WindowClause::CopyFrom(const WindowClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.WindowClause) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool WindowClause::IsInitialized() const { return true; } ::_pbi::CachedSize* WindowClause::AccessCachedSize() const { return &_impl_._cached_size_; } void WindowClause::InternalSwap(WindowClause* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.partition_clause_.InternalSwap(&other->_impl_.partition_clause_); _impl_.order_clause_.InternalSwap(&other->_impl_.order_clause_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.refname_, &other->_impl_.refname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.winref_) + sizeof(WindowClause::_impl_.winref_) - PROTOBUF_FIELD_OFFSET(WindowClause, _impl_.start_offset_)>( reinterpret_cast(&_impl_.start_offset_), reinterpret_cast(&other->_impl_.start_offset_)); } ::google::protobuf::Metadata WindowClause::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[116]); } // =================================================================== class RowMarkClause::_Internal { public: }; RowMarkClause::RowMarkClause(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RowMarkClause) } RowMarkClause::RowMarkClause( ::google::protobuf::Arena* arena, const RowMarkClause& from) : RowMarkClause(arena) { MergeFrom(from); } inline PROTOBUF_NDEBUG_INLINE RowMarkClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void RowMarkClause::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, rti_), 0, offsetof(Impl_, pushed_down_) - offsetof(Impl_, rti_) + sizeof(Impl_::pushed_down_)); } RowMarkClause::~RowMarkClause() { // @@protoc_insertion_point(destructor:pg_query.RowMarkClause) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RowMarkClause::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void RowMarkClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RowMarkClause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; ::memset(&_impl_.rti_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.pushed_down_) - reinterpret_cast(&_impl_.rti_)) + sizeof(_impl_.pushed_down_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RowMarkClause::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 0, 0, 2> RowMarkClause::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_RowMarkClause_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool pushed_down = 4 [json_name = "pushedDown"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(RowMarkClause, _impl_.pushed_down_)}}, // uint32 rti = 1 [json_name = "rti"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RowMarkClause, _impl_.rti_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(RowMarkClause, _impl_.rti_)}}, // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RowMarkClause, _impl_.strength_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(RowMarkClause, _impl_.strength_)}}, // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RowMarkClause, _impl_.wait_policy_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(RowMarkClause, _impl_.wait_policy_)}}, }}, {{ 65535, 65535 }}, {{ // uint32 rti = 1 [json_name = "rti"]; {PROTOBUF_FIELD_OFFSET(RowMarkClause, _impl_.rti_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; {PROTOBUF_FIELD_OFFSET(RowMarkClause, _impl_.strength_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; {PROTOBUF_FIELD_OFFSET(RowMarkClause, _impl_.wait_policy_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool pushed_down = 4 [json_name = "pushedDown"]; {PROTOBUF_FIELD_OFFSET(RowMarkClause, _impl_.pushed_down_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, // no aux_entries {{ }}, }; ::uint8_t* RowMarkClause::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RowMarkClause) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // uint32 rti = 1 [json_name = "rti"]; if (this->_internal_rti() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 1, this->_internal_rti(), target); } // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; if (this->_internal_strength() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_strength(), target); } // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; if (this->_internal_wait_policy() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_wait_policy(), target); } // bool pushed_down = 4 [json_name = "pushedDown"]; if (this->_internal_pushed_down() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_pushed_down(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_rti() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_rti()); } // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; if (this->_internal_strength() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_strength()); } // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; if (this->_internal_wait_policy() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_wait_policy()); } // bool pushed_down = 4 [json_name = "pushedDown"]; if (this->_internal_pushed_down() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RowMarkClause::_class_data_ = { RowMarkClause::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RowMarkClause::GetClassData() const { return &_class_data_; } void RowMarkClause::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RowMarkClause) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (from._internal_rti() != 0) { _this->_internal_set_rti(from._internal_rti()); } if (from._internal_strength() != 0) { _this->_internal_set_strength(from._internal_strength()); } if (from._internal_wait_policy() != 0) { _this->_internal_set_wait_policy(from._internal_wait_policy()); } if (from._internal_pushed_down() != 0) { _this->_internal_set_pushed_down(from._internal_pushed_down()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RowMarkClause::CopyFrom(const RowMarkClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RowMarkClause) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RowMarkClause::IsInitialized() const { return true; } ::_pbi::CachedSize* RowMarkClause::AccessCachedSize() const { return &_impl_._cached_size_; } void RowMarkClause::InternalSwap(RowMarkClause* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RowMarkClause, _impl_.pushed_down_) + sizeof(RowMarkClause::_impl_.pushed_down_) - PROTOBUF_FIELD_OFFSET(RowMarkClause, _impl_.rti_)>( reinterpret_cast(&_impl_.rti_), reinterpret_cast(&other->_impl_.rti_)); } ::google::protobuf::Metadata RowMarkClause::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[117]); } // =================================================================== class WithClause::_Internal { public: }; WithClause::WithClause(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.WithClause) } inline PROTOBUF_NDEBUG_INLINE WithClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : ctes_{visibility, arena, from.ctes_}, _cached_size_{0} {} WithClause::WithClause( ::google::protobuf::Arena* arena, const WithClause& from) : ::google::protobuf::Message(arena) { WithClause* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, recursive_), reinterpret_cast(&from._impl_) + offsetof(Impl_, recursive_), offsetof(Impl_, location_) - offsetof(Impl_, recursive_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.WithClause) } inline PROTOBUF_NDEBUG_INLINE WithClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : ctes_{visibility, arena}, _cached_size_{0} {} inline void WithClause::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, recursive_), 0, offsetof(Impl_, location_) - offsetof(Impl_, recursive_) + sizeof(Impl_::location_)); } WithClause::~WithClause() { // @@protoc_insertion_point(destructor:pg_query.WithClause) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void WithClause::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void WithClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.WithClause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.ctes_.Clear(); ::memset(&_impl_.recursive_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.recursive_)) + sizeof(_impl_.location_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* WithClause::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> WithClause::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_WithClause_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node ctes = 1 [json_name = "ctes"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(WithClause, _impl_.ctes_)}}, // bool recursive = 2 [json_name = "recursive"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(WithClause, _impl_.recursive_)}}, // int32 location = 3 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WithClause, _impl_.location_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(WithClause, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node ctes = 1 [json_name = "ctes"]; {PROTOBUF_FIELD_OFFSET(WithClause, _impl_.ctes_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool recursive = 2 [json_name = "recursive"]; {PROTOBUF_FIELD_OFFSET(WithClause, _impl_.recursive_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 3 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(WithClause, _impl_.location_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* WithClause::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.WithClause) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node ctes = 1 [json_name = "ctes"]; for (unsigned i = 0, n = static_cast(this->_internal_ctes_size()); i < n; i++) { const auto& repfield = this->_internal_ctes().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // bool recursive = 2 [json_name = "recursive"]; if (this->_internal_recursive() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_recursive(), target); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_ctes()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // bool recursive = 2 [json_name = "recursive"]; if (this->_internal_recursive() != 0) { total_size += 2; } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData WithClause::_class_data_ = { WithClause::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* WithClause::GetClassData() const { return &_class_data_; } void WithClause::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.WithClause) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_ctes()->MergeFrom( from._internal_ctes()); if (from._internal_recursive() != 0) { _this->_internal_set_recursive(from._internal_recursive()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void WithClause::CopyFrom(const WithClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.WithClause) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool WithClause::IsInitialized() const { return true; } ::_pbi::CachedSize* WithClause::AccessCachedSize() const { return &_impl_._cached_size_; } void WithClause::InternalSwap(WithClause* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.ctes_.InternalSwap(&other->_impl_.ctes_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(WithClause, _impl_.location_) + sizeof(WithClause::_impl_.location_) - PROTOBUF_FIELD_OFFSET(WithClause, _impl_.recursive_)>( reinterpret_cast(&_impl_.recursive_), reinterpret_cast(&other->_impl_.recursive_)); } ::google::protobuf::Metadata WithClause::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[118]); } // =================================================================== class InferClause::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(InferClause, _impl_._has_bits_); static const ::pg_query::Node& where_clause(const InferClause* msg); static void set_has_where_clause(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& InferClause::_Internal::where_clause(const InferClause* msg) { return *msg->_impl_.where_clause_; } InferClause::InferClause(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.InferClause) } inline PROTOBUF_NDEBUG_INLINE InferClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, index_elems_{visibility, arena, from.index_elems_}, conname_(arena, from.conname_) {} InferClause::InferClause( ::google::protobuf::Arena* arena, const InferClause& from) : ::google::protobuf::Message(arena) { InferClause* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.where_clause_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.where_clause_) : nullptr; _impl_.location_ = from._impl_.location_; // @@protoc_insertion_point(copy_constructor:pg_query.InferClause) } inline PROTOBUF_NDEBUG_INLINE InferClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, index_elems_{visibility, arena}, conname_(arena) {} inline void InferClause::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, where_clause_), 0, offsetof(Impl_, location_) - offsetof(Impl_, where_clause_) + sizeof(Impl_::location_)); } InferClause::~InferClause() { // @@protoc_insertion_point(destructor:pg_query.InferClause) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void InferClause::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.conname_.Destroy(); delete _impl_.where_clause_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void InferClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.InferClause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.index_elems_.Clear(); _impl_.conname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.where_clause_ != nullptr); _impl_.where_clause_->Clear(); } _impl_.location_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* InferClause::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 36, 2> InferClause::_table_ = { { PROTOBUF_FIELD_OFFSET(InferClause, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_InferClause_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 4 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InferClause, _impl_.location_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(InferClause, _impl_.location_)}}, // repeated .pg_query.Node index_elems = 1 [json_name = "indexElems"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(InferClause, _impl_.index_elems_)}}, // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; {::_pbi::TcParser::FastMtS1, {18, 0, 1, PROTOBUF_FIELD_OFFSET(InferClause, _impl_.where_clause_)}}, // string conname = 3 [json_name = "conname"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(InferClause, _impl_.conname_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node index_elems = 1 [json_name = "indexElems"]; {PROTOBUF_FIELD_OFFSET(InferClause, _impl_.index_elems_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; {PROTOBUF_FIELD_OFFSET(InferClause, _impl_.where_clause_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string conname = 3 [json_name = "conname"]; {PROTOBUF_FIELD_OFFSET(InferClause, _impl_.conname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // int32 location = 4 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(InferClause, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\24\0\0\7\0\0\0\0" "pg_query.InferClause" "conname" }}, }; ::uint8_t* InferClause::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.InferClause) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node index_elems = 1 [json_name = "indexElems"]; for (unsigned i = 0, n = static_cast(this->_internal_index_elems_size()); i < n; i++) { const auto& repfield = this->_internal_index_elems().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::where_clause(this), _Internal::where_clause(this).GetCachedSize(), target, stream); } // string conname = 3 [json_name = "conname"]; if (!this->_internal_conname().empty()) { const std::string& _s = this->_internal_conname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.InferClause.conname"); target = stream->WriteStringMaybeAliased(3, _s, target); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_index_elems()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string conname = 3 [json_name = "conname"]; if (!this->_internal_conname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_conname()); } // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.where_clause_); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData InferClause::_class_data_ = { InferClause::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* InferClause::GetClassData() const { return &_class_data_; } void InferClause::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.InferClause) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_index_elems()->MergeFrom( from._internal_index_elems()); if (!from._internal_conname().empty()) { _this->_internal_set_conname(from._internal_conname()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_where_clause()->::pg_query::Node::MergeFrom( from._internal_where_clause()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void InferClause::CopyFrom(const InferClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.InferClause) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool InferClause::IsInitialized() const { return true; } ::_pbi::CachedSize* InferClause::AccessCachedSize() const { return &_impl_._cached_size_; } void InferClause::InternalSwap(InferClause* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.index_elems_.InternalSwap(&other->_impl_.index_elems_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.conname_, &other->_impl_.conname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(InferClause, _impl_.location_) + sizeof(InferClause::_impl_.location_) - PROTOBUF_FIELD_OFFSET(InferClause, _impl_.where_clause_)>( reinterpret_cast(&_impl_.where_clause_), reinterpret_cast(&other->_impl_.where_clause_)); } ::google::protobuf::Metadata InferClause::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[119]); } // =================================================================== class OnConflictClause::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(OnConflictClause, _impl_._has_bits_); static const ::pg_query::InferClause& infer(const OnConflictClause* msg); static void set_has_infer(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& where_clause(const OnConflictClause* msg); static void set_has_where_clause(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::InferClause& OnConflictClause::_Internal::infer(const OnConflictClause* msg) { return *msg->_impl_.infer_; } const ::pg_query::Node& OnConflictClause::_Internal::where_clause(const OnConflictClause* msg) { return *msg->_impl_.where_clause_; } OnConflictClause::OnConflictClause(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.OnConflictClause) } inline PROTOBUF_NDEBUG_INLINE OnConflictClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, target_list_{visibility, arena, from.target_list_} {} OnConflictClause::OnConflictClause( ::google::protobuf::Arena* arena, const OnConflictClause& from) : ::google::protobuf::Message(arena) { OnConflictClause* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.infer_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::InferClause>(arena, *from._impl_.infer_) : nullptr; _impl_.where_clause_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.where_clause_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, action_), reinterpret_cast(&from._impl_) + offsetof(Impl_, action_), offsetof(Impl_, location_) - offsetof(Impl_, action_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.OnConflictClause) } inline PROTOBUF_NDEBUG_INLINE OnConflictClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, target_list_{visibility, arena} {} inline void OnConflictClause::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, infer_), 0, offsetof(Impl_, location_) - offsetof(Impl_, infer_) + sizeof(Impl_::location_)); } OnConflictClause::~OnConflictClause() { // @@protoc_insertion_point(destructor:pg_query.OnConflictClause) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void OnConflictClause::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.infer_; delete _impl_.where_clause_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void OnConflictClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.OnConflictClause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.target_list_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.infer_ != nullptr); _impl_.infer_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.where_clause_ != nullptr); _impl_.where_clause_->Clear(); } } ::memset(&_impl_.action_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.action_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* OnConflictClause::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 3, 0, 2> OnConflictClause::_table_ = { { PROTOBUF_FIELD_OFFSET(OnConflictClause, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_OnConflictClause_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.OnConflictAction action = 1 [json_name = "action"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(OnConflictClause, _impl_.action_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(OnConflictClause, _impl_.action_)}}, // .pg_query.InferClause infer = 2 [json_name = "infer"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(OnConflictClause, _impl_.infer_)}}, // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(OnConflictClause, _impl_.target_list_)}}, // .pg_query.Node where_clause = 4 [json_name = "whereClause"]; {::_pbi::TcParser::FastMtS1, {34, 1, 2, PROTOBUF_FIELD_OFFSET(OnConflictClause, _impl_.where_clause_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(OnConflictClause, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(OnConflictClause, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.OnConflictAction action = 1 [json_name = "action"]; {PROTOBUF_FIELD_OFFSET(OnConflictClause, _impl_.action_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.InferClause infer = 2 [json_name = "infer"]; {PROTOBUF_FIELD_OFFSET(OnConflictClause, _impl_.infer_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; {PROTOBUF_FIELD_OFFSET(OnConflictClause, _impl_.target_list_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node where_clause = 4 [json_name = "whereClause"]; {PROTOBUF_FIELD_OFFSET(OnConflictClause, _impl_.where_clause_), _Internal::kHasBitsOffset + 1, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(OnConflictClause, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::InferClause>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* OnConflictClause::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.OnConflictClause) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.OnConflictAction action = 1 [json_name = "action"]; if (this->_internal_action() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_action(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.InferClause infer = 2 [json_name = "infer"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::infer(this), _Internal::infer(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; for (unsigned i = 0, n = static_cast(this->_internal_target_list_size()); i < n; i++) { const auto& repfield = this->_internal_target_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node where_clause = 4 [json_name = "whereClause"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::where_clause(this), _Internal::where_clause(this).GetCachedSize(), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_target_list()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.InferClause infer = 2 [json_name = "infer"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.infer_); } // .pg_query.Node where_clause = 4 [json_name = "whereClause"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.where_clause_); } } // .pg_query.OnConflictAction action = 1 [json_name = "action"]; if (this->_internal_action() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_action()); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData OnConflictClause::_class_data_ = { OnConflictClause::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* OnConflictClause::GetClassData() const { return &_class_data_; } void OnConflictClause::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.OnConflictClause) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_target_list()->MergeFrom( from._internal_target_list()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_infer()->::pg_query::InferClause::MergeFrom( from._internal_infer()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_where_clause()->::pg_query::Node::MergeFrom( from._internal_where_clause()); } } if (from._internal_action() != 0) { _this->_internal_set_action(from._internal_action()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void OnConflictClause::CopyFrom(const OnConflictClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.OnConflictClause) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool OnConflictClause::IsInitialized() const { return true; } ::_pbi::CachedSize* OnConflictClause::AccessCachedSize() const { return &_impl_._cached_size_; } void OnConflictClause::InternalSwap(OnConflictClause* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.target_list_.InternalSwap(&other->_impl_.target_list_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(OnConflictClause, _impl_.location_) + sizeof(OnConflictClause::_impl_.location_) - PROTOBUF_FIELD_OFFSET(OnConflictClause, _impl_.infer_)>( reinterpret_cast(&_impl_.infer_), reinterpret_cast(&other->_impl_.infer_)); } ::google::protobuf::Metadata OnConflictClause::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[120]); } // =================================================================== class CTESearchClause::_Internal { public: }; CTESearchClause::CTESearchClause(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CTESearchClause) } inline PROTOBUF_NDEBUG_INLINE CTESearchClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : search_col_list_{visibility, arena, from.search_col_list_}, search_seq_column_(arena, from.search_seq_column_), _cached_size_{0} {} CTESearchClause::CTESearchClause( ::google::protobuf::Arena* arena, const CTESearchClause& from) : ::google::protobuf::Message(arena) { CTESearchClause* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, search_breadth_first_), reinterpret_cast(&from._impl_) + offsetof(Impl_, search_breadth_first_), offsetof(Impl_, location_) - offsetof(Impl_, search_breadth_first_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.CTESearchClause) } inline PROTOBUF_NDEBUG_INLINE CTESearchClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : search_col_list_{visibility, arena}, search_seq_column_(arena), _cached_size_{0} {} inline void CTESearchClause::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, search_breadth_first_), 0, offsetof(Impl_, location_) - offsetof(Impl_, search_breadth_first_) + sizeof(Impl_::location_)); } CTESearchClause::~CTESearchClause() { // @@protoc_insertion_point(destructor:pg_query.CTESearchClause) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CTESearchClause::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.search_seq_column_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CTESearchClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CTESearchClause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.search_col_list_.Clear(); _impl_.search_seq_column_.ClearToEmpty(); ::memset(&_impl_.search_breadth_first_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.search_breadth_first_)) + sizeof(_impl_.location_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CTESearchClause::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 1, 50, 2> CTESearchClause::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CTESearchClause_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 4 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CTESearchClause, _impl_.location_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CTESearchClause, _impl_.location_)}}, // repeated .pg_query.Node search_col_list = 1 [json_name = "search_col_list"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CTESearchClause, _impl_.search_col_list_)}}, // bool search_breadth_first = 2 [json_name = "search_breadth_first"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(CTESearchClause, _impl_.search_breadth_first_)}}, // string search_seq_column = 3 [json_name = "search_seq_column"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CTESearchClause, _impl_.search_seq_column_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node search_col_list = 1 [json_name = "search_col_list"]; {PROTOBUF_FIELD_OFFSET(CTESearchClause, _impl_.search_col_list_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool search_breadth_first = 2 [json_name = "search_breadth_first"]; {PROTOBUF_FIELD_OFFSET(CTESearchClause, _impl_.search_breadth_first_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // string search_seq_column = 3 [json_name = "search_seq_column"]; {PROTOBUF_FIELD_OFFSET(CTESearchClause, _impl_.search_seq_column_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // int32 location = 4 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(CTESearchClause, _impl_.location_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\30\0\0\21\0\0\0\0" "pg_query.CTESearchClause" "search_seq_column" }}, }; ::uint8_t* CTESearchClause::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CTESearchClause) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node search_col_list = 1 [json_name = "search_col_list"]; for (unsigned i = 0, n = static_cast(this->_internal_search_col_list_size()); i < n; i++) { const auto& repfield = this->_internal_search_col_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // bool search_breadth_first = 2 [json_name = "search_breadth_first"]; if (this->_internal_search_breadth_first() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_search_breadth_first(), target); } // string search_seq_column = 3 [json_name = "search_seq_column"]; if (!this->_internal_search_seq_column().empty()) { const std::string& _s = this->_internal_search_seq_column(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CTESearchClause.search_seq_column"); target = stream->WriteStringMaybeAliased(3, _s, target); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CTESearchClause) return target; } ::size_t CTESearchClause::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CTESearchClause) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node search_col_list = 1 [json_name = "search_col_list"]; total_size += 1UL * this->_internal_search_col_list_size(); for (const auto& msg : this->_internal_search_col_list()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string search_seq_column = 3 [json_name = "search_seq_column"]; if (!this->_internal_search_seq_column().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_search_seq_column()); } // bool search_breadth_first = 2 [json_name = "search_breadth_first"]; if (this->_internal_search_breadth_first() != 0) { total_size += 2; } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CTESearchClause::_class_data_ = { CTESearchClause::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CTESearchClause::GetClassData() const { return &_class_data_; } void CTESearchClause::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CTESearchClause) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_search_col_list()->MergeFrom( from._internal_search_col_list()); if (!from._internal_search_seq_column().empty()) { _this->_internal_set_search_seq_column(from._internal_search_seq_column()); } if (from._internal_search_breadth_first() != 0) { _this->_internal_set_search_breadth_first(from._internal_search_breadth_first()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CTESearchClause::CopyFrom(const CTESearchClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CTESearchClause) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CTESearchClause::IsInitialized() const { return true; } ::_pbi::CachedSize* CTESearchClause::AccessCachedSize() const { return &_impl_._cached_size_; } void CTESearchClause::InternalSwap(CTESearchClause* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.search_col_list_.InternalSwap(&other->_impl_.search_col_list_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.search_seq_column_, &other->_impl_.search_seq_column_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CTESearchClause, _impl_.location_) + sizeof(CTESearchClause::_impl_.location_) - PROTOBUF_FIELD_OFFSET(CTESearchClause, _impl_.search_breadth_first_)>( reinterpret_cast(&_impl_.search_breadth_first_), reinterpret_cast(&other->_impl_.search_breadth_first_)); } ::google::protobuf::Metadata CTESearchClause::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[121]); } // =================================================================== class CTECycleClause::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_._has_bits_); static const ::pg_query::Node& cycle_mark_value(const CTECycleClause* msg); static void set_has_cycle_mark_value(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& cycle_mark_default(const CTECycleClause* msg); static void set_has_cycle_mark_default(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& CTECycleClause::_Internal::cycle_mark_value(const CTECycleClause* msg) { return *msg->_impl_.cycle_mark_value_; } const ::pg_query::Node& CTECycleClause::_Internal::cycle_mark_default(const CTECycleClause* msg) { return *msg->_impl_.cycle_mark_default_; } CTECycleClause::CTECycleClause(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CTECycleClause) } inline PROTOBUF_NDEBUG_INLINE CTECycleClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, cycle_col_list_{visibility, arena, from.cycle_col_list_}, cycle_mark_column_(arena, from.cycle_mark_column_), cycle_path_column_(arena, from.cycle_path_column_) {} CTECycleClause::CTECycleClause( ::google::protobuf::Arena* arena, const CTECycleClause& from) : ::google::protobuf::Message(arena) { CTECycleClause* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.cycle_mark_value_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.cycle_mark_value_) : nullptr; _impl_.cycle_mark_default_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.cycle_mark_default_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, location_), reinterpret_cast(&from._impl_) + offsetof(Impl_, location_), offsetof(Impl_, cycle_mark_neop_) - offsetof(Impl_, location_) + sizeof(Impl_::cycle_mark_neop_)); // @@protoc_insertion_point(copy_constructor:pg_query.CTECycleClause) } inline PROTOBUF_NDEBUG_INLINE CTECycleClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, cycle_col_list_{visibility, arena}, cycle_mark_column_(arena), cycle_path_column_(arena) {} inline void CTECycleClause::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, cycle_mark_value_), 0, offsetof(Impl_, cycle_mark_neop_) - offsetof(Impl_, cycle_mark_value_) + sizeof(Impl_::cycle_mark_neop_)); } CTECycleClause::~CTECycleClause() { // @@protoc_insertion_point(destructor:pg_query.CTECycleClause) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CTECycleClause::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.cycle_mark_column_.Destroy(); _impl_.cycle_path_column_.Destroy(); delete _impl_.cycle_mark_value_; delete _impl_.cycle_mark_default_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CTECycleClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CTECycleClause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.cycle_col_list_.Clear(); _impl_.cycle_mark_column_.ClearToEmpty(); _impl_.cycle_path_column_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.cycle_mark_value_ != nullptr); _impl_.cycle_mark_value_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.cycle_mark_default_ != nullptr); _impl_.cycle_mark_default_->Clear(); } } ::memset(&_impl_.location_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.cycle_mark_neop_) - reinterpret_cast(&_impl_.location_)) + sizeof(_impl_.cycle_mark_neop_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CTECycleClause::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 10, 3, 74, 2> CTECycleClause::_table_ = { { PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_._has_bits_), 0, // no _extensions_ 10, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294966272, // skipmap offsetof(decltype(_table_), field_entries), 10, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CTECycleClause_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node cycle_col_list = 1 [json_name = "cycle_col_list"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_col_list_)}}, // string cycle_mark_column = 2 [json_name = "cycle_mark_column"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_column_)}}, // .pg_query.Node cycle_mark_value = 3 [json_name = "cycle_mark_value"]; {::_pbi::TcParser::FastMtS1, {26, 0, 1, PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_value_)}}, // .pg_query.Node cycle_mark_default = 4 [json_name = "cycle_mark_default"]; {::_pbi::TcParser::FastMtS1, {34, 1, 2, PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_default_)}}, // string cycle_path_column = 5 [json_name = "cycle_path_column"]; {::_pbi::TcParser::FastUS1, {42, 63, 0, PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_path_column_)}}, // int32 location = 6 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CTECycleClause, _impl_.location_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.location_)}}, // uint32 cycle_mark_type = 7 [json_name = "cycle_mark_type"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CTECycleClause, _impl_.cycle_mark_type_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_type_)}}, // int32 cycle_mark_typmod = 8 [json_name = "cycle_mark_typmod"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CTECycleClause, _impl_.cycle_mark_typmod_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_typmod_)}}, // uint32 cycle_mark_collation = 9 [json_name = "cycle_mark_collation"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CTECycleClause, _impl_.cycle_mark_collation_), 63>(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_collation_)}}, // uint32 cycle_mark_neop = 10 [json_name = "cycle_mark_neop"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CTECycleClause, _impl_.cycle_mark_neop_), 63>(), {80, 63, 0, PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_neop_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node cycle_col_list = 1 [json_name = "cycle_col_list"]; {PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_col_list_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string cycle_mark_column = 2 [json_name = "cycle_mark_column"]; {PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_column_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.Node cycle_mark_value = 3 [json_name = "cycle_mark_value"]; {PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_value_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node cycle_mark_default = 4 [json_name = "cycle_mark_default"]; {PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_default_), _Internal::kHasBitsOffset + 1, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string cycle_path_column = 5 [json_name = "cycle_path_column"]; {PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_path_column_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // int32 location = 6 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 cycle_mark_type = 7 [json_name = "cycle_mark_type"]; {PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 cycle_mark_typmod = 8 [json_name = "cycle_mark_typmod"]; {PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_typmod_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // uint32 cycle_mark_collation = 9 [json_name = "cycle_mark_collation"]; {PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_collation_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 cycle_mark_neop = 10 [json_name = "cycle_mark_neop"]; {PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_neop_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\27\0\21\0\0\21\0\0\0\0\0\0\0\0\0\0" "pg_query.CTECycleClause" "cycle_mark_column" "cycle_path_column" }}, }; ::uint8_t* CTECycleClause::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CTECycleClause) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node cycle_col_list = 1 [json_name = "cycle_col_list"]; for (unsigned i = 0, n = static_cast(this->_internal_cycle_col_list_size()); i < n; i++) { const auto& repfield = this->_internal_cycle_col_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // string cycle_mark_column = 2 [json_name = "cycle_mark_column"]; if (!this->_internal_cycle_mark_column().empty()) { const std::string& _s = this->_internal_cycle_mark_column(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CTECycleClause.cycle_mark_column"); target = stream->WriteStringMaybeAliased(2, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node cycle_mark_value = 3 [json_name = "cycle_mark_value"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::cycle_mark_value(this), _Internal::cycle_mark_value(this).GetCachedSize(), target, stream); } // .pg_query.Node cycle_mark_default = 4 [json_name = "cycle_mark_default"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::cycle_mark_default(this), _Internal::cycle_mark_default(this).GetCachedSize(), target, stream); } // string cycle_path_column = 5 [json_name = "cycle_path_column"]; if (!this->_internal_cycle_path_column().empty()) { const std::string& _s = this->_internal_cycle_path_column(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CTECycleClause.cycle_path_column"); target = stream->WriteStringMaybeAliased(5, _s, target); } // int32 location = 6 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<6>( stream, this->_internal_location(), target); } // uint32 cycle_mark_type = 7 [json_name = "cycle_mark_type"]; if (this->_internal_cycle_mark_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 7, this->_internal_cycle_mark_type(), target); } // int32 cycle_mark_typmod = 8 [json_name = "cycle_mark_typmod"]; if (this->_internal_cycle_mark_typmod() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<8>( stream, this->_internal_cycle_mark_typmod(), target); } // uint32 cycle_mark_collation = 9 [json_name = "cycle_mark_collation"]; if (this->_internal_cycle_mark_collation() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 9, this->_internal_cycle_mark_collation(), target); } // uint32 cycle_mark_neop = 10 [json_name = "cycle_mark_neop"]; if (this->_internal_cycle_mark_neop() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 10, this->_internal_cycle_mark_neop(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CTECycleClause) return target; } ::size_t CTECycleClause::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CTECycleClause) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node cycle_col_list = 1 [json_name = "cycle_col_list"]; total_size += 1UL * this->_internal_cycle_col_list_size(); for (const auto& msg : this->_internal_cycle_col_list()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string cycle_mark_column = 2 [json_name = "cycle_mark_column"]; if (!this->_internal_cycle_mark_column().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_cycle_mark_column()); } // string cycle_path_column = 5 [json_name = "cycle_path_column"]; if (!this->_internal_cycle_path_column().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_cycle_path_column()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node cycle_mark_value = 3 [json_name = "cycle_mark_value"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.cycle_mark_value_); } // .pg_query.Node cycle_mark_default = 4 [json_name = "cycle_mark_default"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.cycle_mark_default_); } } // int32 location = 6 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } // uint32 cycle_mark_type = 7 [json_name = "cycle_mark_type"]; if (this->_internal_cycle_mark_type() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_cycle_mark_type()); } // int32 cycle_mark_typmod = 8 [json_name = "cycle_mark_typmod"]; if (this->_internal_cycle_mark_typmod() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_cycle_mark_typmod()); } // uint32 cycle_mark_collation = 9 [json_name = "cycle_mark_collation"]; if (this->_internal_cycle_mark_collation() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_cycle_mark_collation()); } // uint32 cycle_mark_neop = 10 [json_name = "cycle_mark_neop"]; if (this->_internal_cycle_mark_neop() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_cycle_mark_neop()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CTECycleClause::_class_data_ = { CTECycleClause::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CTECycleClause::GetClassData() const { return &_class_data_; } void CTECycleClause::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CTECycleClause) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_cycle_col_list()->MergeFrom( from._internal_cycle_col_list()); if (!from._internal_cycle_mark_column().empty()) { _this->_internal_set_cycle_mark_column(from._internal_cycle_mark_column()); } if (!from._internal_cycle_path_column().empty()) { _this->_internal_set_cycle_path_column(from._internal_cycle_path_column()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_cycle_mark_value()->::pg_query::Node::MergeFrom( from._internal_cycle_mark_value()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_cycle_mark_default()->::pg_query::Node::MergeFrom( from._internal_cycle_mark_default()); } } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } if (from._internal_cycle_mark_type() != 0) { _this->_internal_set_cycle_mark_type(from._internal_cycle_mark_type()); } if (from._internal_cycle_mark_typmod() != 0) { _this->_internal_set_cycle_mark_typmod(from._internal_cycle_mark_typmod()); } if (from._internal_cycle_mark_collation() != 0) { _this->_internal_set_cycle_mark_collation(from._internal_cycle_mark_collation()); } if (from._internal_cycle_mark_neop() != 0) { _this->_internal_set_cycle_mark_neop(from._internal_cycle_mark_neop()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CTECycleClause::CopyFrom(const CTECycleClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CTECycleClause) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CTECycleClause::IsInitialized() const { return true; } ::_pbi::CachedSize* CTECycleClause::AccessCachedSize() const { return &_impl_._cached_size_; } void CTECycleClause::InternalSwap(CTECycleClause* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.cycle_col_list_.InternalSwap(&other->_impl_.cycle_col_list_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.cycle_mark_column_, &other->_impl_.cycle_mark_column_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.cycle_path_column_, &other->_impl_.cycle_path_column_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_neop_) + sizeof(CTECycleClause::_impl_.cycle_mark_neop_) - PROTOBUF_FIELD_OFFSET(CTECycleClause, _impl_.cycle_mark_value_)>( reinterpret_cast(&_impl_.cycle_mark_value_), reinterpret_cast(&other->_impl_.cycle_mark_value_)); } ::google::protobuf::Metadata CTECycleClause::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[122]); } // =================================================================== class CommonTableExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_._has_bits_); static const ::pg_query::Node& ctequery(const CommonTableExpr* msg); static void set_has_ctequery(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::CTESearchClause& search_clause(const CommonTableExpr* msg); static void set_has_search_clause(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::CTECycleClause& cycle_clause(const CommonTableExpr* msg); static void set_has_cycle_clause(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::Node& CommonTableExpr::_Internal::ctequery(const CommonTableExpr* msg) { return *msg->_impl_.ctequery_; } const ::pg_query::CTESearchClause& CommonTableExpr::_Internal::search_clause(const CommonTableExpr* msg) { return *msg->_impl_.search_clause_; } const ::pg_query::CTECycleClause& CommonTableExpr::_Internal::cycle_clause(const CommonTableExpr* msg) { return *msg->_impl_.cycle_clause_; } CommonTableExpr::CommonTableExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CommonTableExpr) } inline PROTOBUF_NDEBUG_INLINE CommonTableExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, aliascolnames_{visibility, arena, from.aliascolnames_}, ctecolnames_{visibility, arena, from.ctecolnames_}, ctecoltypes_{visibility, arena, from.ctecoltypes_}, ctecoltypmods_{visibility, arena, from.ctecoltypmods_}, ctecolcollations_{visibility, arena, from.ctecolcollations_}, ctename_(arena, from.ctename_) {} CommonTableExpr::CommonTableExpr( ::google::protobuf::Arena* arena, const CommonTableExpr& from) : ::google::protobuf::Message(arena) { CommonTableExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.ctequery_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.ctequery_) : nullptr; _impl_.search_clause_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::CTESearchClause>(arena, *from._impl_.search_clause_) : nullptr; _impl_.cycle_clause_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::CTECycleClause>(arena, *from._impl_.cycle_clause_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, ctematerialized_), reinterpret_cast(&from._impl_) + offsetof(Impl_, ctematerialized_), offsetof(Impl_, cterefcount_) - offsetof(Impl_, ctematerialized_) + sizeof(Impl_::cterefcount_)); // @@protoc_insertion_point(copy_constructor:pg_query.CommonTableExpr) } inline PROTOBUF_NDEBUG_INLINE CommonTableExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, aliascolnames_{visibility, arena}, ctecolnames_{visibility, arena}, ctecoltypes_{visibility, arena}, ctecoltypmods_{visibility, arena}, ctecolcollations_{visibility, arena}, ctename_(arena) {} inline void CommonTableExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, ctequery_), 0, offsetof(Impl_, cterefcount_) - offsetof(Impl_, ctequery_) + sizeof(Impl_::cterefcount_)); } CommonTableExpr::~CommonTableExpr() { // @@protoc_insertion_point(destructor:pg_query.CommonTableExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CommonTableExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.ctename_.Destroy(); delete _impl_.ctequery_; delete _impl_.search_clause_; delete _impl_.cycle_clause_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CommonTableExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CommonTableExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.aliascolnames_.Clear(); _impl_.ctecolnames_.Clear(); _impl_.ctecoltypes_.Clear(); _impl_.ctecoltypmods_.Clear(); _impl_.ctecolcollations_.Clear(); _impl_.ctename_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.ctequery_ != nullptr); _impl_.ctequery_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.search_clause_ != nullptr); _impl_.search_clause_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.cycle_clause_ != nullptr); _impl_.cycle_clause_->Clear(); } } ::memset(&_impl_.ctematerialized_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.cterefcount_) - reinterpret_cast(&_impl_.ctematerialized_)) + sizeof(_impl_.cterefcount_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CommonTableExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 13, 8, 48, 2> CommonTableExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_._has_bits_), 0, // no _extensions_ 13, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294959104, // skipmap offsetof(decltype(_table_), field_entries), 13, // num_field_entries 8, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CommonTableExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string ctename = 1 [json_name = "ctename"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctename_)}}, // repeated .pg_query.Node aliascolnames = 2 [json_name = "aliascolnames"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.aliascolnames_)}}, // .pg_query.CTEMaterialize ctematerialized = 3 [json_name = "ctematerialized"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CommonTableExpr, _impl_.ctematerialized_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctematerialized_)}}, // .pg_query.Node ctequery = 4 [json_name = "ctequery"]; {::_pbi::TcParser::FastMtS1, {34, 0, 1, PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctequery_)}}, // .pg_query.CTESearchClause search_clause = 5 [json_name = "search_clause"]; {::_pbi::TcParser::FastMtS1, {42, 1, 2, PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.search_clause_)}}, // .pg_query.CTECycleClause cycle_clause = 6 [json_name = "cycle_clause"]; {::_pbi::TcParser::FastMtS1, {50, 2, 3, PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.cycle_clause_)}}, // int32 location = 7 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CommonTableExpr, _impl_.location_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.location_)}}, // bool cterecursive = 8 [json_name = "cterecursive"]; {::_pbi::TcParser::SingularVarintNoZag1(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.cterecursive_)}}, // int32 cterefcount = 9 [json_name = "cterefcount"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CommonTableExpr, _impl_.cterefcount_), 63>(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.cterefcount_)}}, // repeated .pg_query.Node ctecolnames = 10 [json_name = "ctecolnames"]; {::_pbi::TcParser::FastMtR1, {82, 63, 4, PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctecolnames_)}}, // repeated .pg_query.Node ctecoltypes = 11 [json_name = "ctecoltypes"]; {::_pbi::TcParser::FastMtR1, {90, 63, 5, PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctecoltypes_)}}, // repeated .pg_query.Node ctecoltypmods = 12 [json_name = "ctecoltypmods"]; {::_pbi::TcParser::FastMtR1, {98, 63, 6, PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctecoltypmods_)}}, // repeated .pg_query.Node ctecolcollations = 13 [json_name = "ctecolcollations"]; {::_pbi::TcParser::FastMtR1, {106, 63, 7, PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctecolcollations_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // string ctename = 1 [json_name = "ctename"]; {PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctename_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node aliascolnames = 2 [json_name = "aliascolnames"]; {PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.aliascolnames_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CTEMaterialize ctematerialized = 3 [json_name = "ctematerialized"]; {PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctematerialized_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.Node ctequery = 4 [json_name = "ctequery"]; {PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctequery_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CTESearchClause search_clause = 5 [json_name = "search_clause"]; {PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.search_clause_), _Internal::kHasBitsOffset + 1, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CTECycleClause cycle_clause = 6 [json_name = "cycle_clause"]; {PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.cycle_clause_), _Internal::kHasBitsOffset + 2, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 7 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // bool cterecursive = 8 [json_name = "cterecursive"]; {PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.cterecursive_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 cterefcount = 9 [json_name = "cterefcount"]; {PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.cterefcount_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // repeated .pg_query.Node ctecolnames = 10 [json_name = "ctecolnames"]; {PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctecolnames_), -1, 4, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node ctecoltypes = 11 [json_name = "ctecoltypes"]; {PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctecoltypes_), -1, 5, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node ctecoltypmods = 12 [json_name = "ctecoltypmods"]; {PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctecoltypmods_), -1, 6, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node ctecolcollations = 13 [json_name = "ctecolcollations"]; {PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctecolcollations_), -1, 7, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::CTESearchClause>()}, {::_pbi::TcParser::GetTable<::pg_query::CTECycleClause>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\30\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "pg_query.CommonTableExpr" "ctename" }}, }; ::uint8_t* CommonTableExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CommonTableExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string ctename = 1 [json_name = "ctename"]; if (!this->_internal_ctename().empty()) { const std::string& _s = this->_internal_ctename(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CommonTableExpr.ctename"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node aliascolnames = 2 [json_name = "aliascolnames"]; for (unsigned i = 0, n = static_cast(this->_internal_aliascolnames_size()); i < n; i++) { const auto& repfield = this->_internal_aliascolnames().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.CTEMaterialize ctematerialized = 3 [json_name = "ctematerialized"]; if (this->_internal_ctematerialized() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_ctematerialized(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node ctequery = 4 [json_name = "ctequery"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::ctequery(this), _Internal::ctequery(this).GetCachedSize(), target, stream); } // .pg_query.CTESearchClause search_clause = 5 [json_name = "search_clause"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::search_clause(this), _Internal::search_clause(this).GetCachedSize(), target, stream); } // .pg_query.CTECycleClause cycle_clause = 6 [json_name = "cycle_clause"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::cycle_clause(this), _Internal::cycle_clause(this).GetCachedSize(), target, stream); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<7>( stream, this->_internal_location(), target); } // bool cterecursive = 8 [json_name = "cterecursive"]; if (this->_internal_cterecursive() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 8, this->_internal_cterecursive(), target); } // int32 cterefcount = 9 [json_name = "cterefcount"]; if (this->_internal_cterefcount() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<9>( stream, this->_internal_cterefcount(), target); } // repeated .pg_query.Node ctecolnames = 10 [json_name = "ctecolnames"]; for (unsigned i = 0, n = static_cast(this->_internal_ctecolnames_size()); i < n; i++) { const auto& repfield = this->_internal_ctecolnames().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(10, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node ctecoltypes = 11 [json_name = "ctecoltypes"]; for (unsigned i = 0, n = static_cast(this->_internal_ctecoltypes_size()); i < n; i++) { const auto& repfield = this->_internal_ctecoltypes().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(11, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node ctecoltypmods = 12 [json_name = "ctecoltypmods"]; for (unsigned i = 0, n = static_cast(this->_internal_ctecoltypmods_size()); i < n; i++) { const auto& repfield = this->_internal_ctecoltypmods().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(12, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node ctecolcollations = 13 [json_name = "ctecolcollations"]; for (unsigned i = 0, n = static_cast(this->_internal_ctecolcollations_size()); i < n; i++) { const auto& repfield = this->_internal_ctecolcollations().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(13, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_aliascolnames()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node ctecolnames = 10 [json_name = "ctecolnames"]; total_size += 1UL * this->_internal_ctecolnames_size(); for (const auto& msg : this->_internal_ctecolnames()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node ctecoltypes = 11 [json_name = "ctecoltypes"]; total_size += 1UL * this->_internal_ctecoltypes_size(); for (const auto& msg : this->_internal_ctecoltypes()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node ctecoltypmods = 12 [json_name = "ctecoltypmods"]; total_size += 1UL * this->_internal_ctecoltypmods_size(); for (const auto& msg : this->_internal_ctecoltypmods()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node ctecolcollations = 13 [json_name = "ctecolcollations"]; total_size += 1UL * this->_internal_ctecolcollations_size(); for (const auto& msg : this->_internal_ctecolcollations()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string ctename = 1 [json_name = "ctename"]; if (!this->_internal_ctename().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_ctename()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.Node ctequery = 4 [json_name = "ctequery"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.ctequery_); } // .pg_query.CTESearchClause search_clause = 5 [json_name = "search_clause"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.search_clause_); } // .pg_query.CTECycleClause cycle_clause = 6 [json_name = "cycle_clause"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.cycle_clause_); } } // .pg_query.CTEMaterialize ctematerialized = 3 [json_name = "ctematerialized"]; if (this->_internal_ctematerialized() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_ctematerialized()); } // int32 location = 7 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } // bool cterecursive = 8 [json_name = "cterecursive"]; if (this->_internal_cterecursive() != 0) { total_size += 2; } // int32 cterefcount = 9 [json_name = "cterefcount"]; if (this->_internal_cterefcount() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_cterefcount()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CommonTableExpr::_class_data_ = { CommonTableExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CommonTableExpr::GetClassData() const { return &_class_data_; } void CommonTableExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CommonTableExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_aliascolnames()->MergeFrom( from._internal_aliascolnames()); _this->_internal_mutable_ctecolnames()->MergeFrom( from._internal_ctecolnames()); _this->_internal_mutable_ctecoltypes()->MergeFrom( from._internal_ctecoltypes()); _this->_internal_mutable_ctecoltypmods()->MergeFrom( from._internal_ctecoltypmods()); _this->_internal_mutable_ctecolcollations()->MergeFrom( from._internal_ctecolcollations()); if (!from._internal_ctename().empty()) { _this->_internal_set_ctename(from._internal_ctename()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_ctequery()->::pg_query::Node::MergeFrom( from._internal_ctequery()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_search_clause()->::pg_query::CTESearchClause::MergeFrom( from._internal_search_clause()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_cycle_clause()->::pg_query::CTECycleClause::MergeFrom( from._internal_cycle_clause()); } } if (from._internal_ctematerialized() != 0) { _this->_internal_set_ctematerialized(from._internal_ctematerialized()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } if (from._internal_cterecursive() != 0) { _this->_internal_set_cterecursive(from._internal_cterecursive()); } if (from._internal_cterefcount() != 0) { _this->_internal_set_cterefcount(from._internal_cterefcount()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CommonTableExpr::CopyFrom(const CommonTableExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CommonTableExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CommonTableExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* CommonTableExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void CommonTableExpr::InternalSwap(CommonTableExpr* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.aliascolnames_.InternalSwap(&other->_impl_.aliascolnames_); _impl_.ctecolnames_.InternalSwap(&other->_impl_.ctecolnames_); _impl_.ctecoltypes_.InternalSwap(&other->_impl_.ctecoltypes_); _impl_.ctecoltypmods_.InternalSwap(&other->_impl_.ctecoltypmods_); _impl_.ctecolcollations_.InternalSwap(&other->_impl_.ctecolcollations_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.ctename_, &other->_impl_.ctename_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.cterefcount_) + sizeof(CommonTableExpr::_impl_.cterefcount_) - PROTOBUF_FIELD_OFFSET(CommonTableExpr, _impl_.ctequery_)>( reinterpret_cast(&_impl_.ctequery_), reinterpret_cast(&other->_impl_.ctequery_)); } ::google::protobuf::Metadata CommonTableExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[123]); } // =================================================================== class MergeWhenClause::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_._has_bits_); static const ::pg_query::Node& condition(const MergeWhenClause* msg); static void set_has_condition(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& MergeWhenClause::_Internal::condition(const MergeWhenClause* msg) { return *msg->_impl_.condition_; } MergeWhenClause::MergeWhenClause(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.MergeWhenClause) } inline PROTOBUF_NDEBUG_INLINE MergeWhenClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, target_list_{visibility, arena, from.target_list_}, values_{visibility, arena, from.values_} {} MergeWhenClause::MergeWhenClause( ::google::protobuf::Arena* arena, const MergeWhenClause& from) : ::google::protobuf::Message(arena) { MergeWhenClause* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.condition_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.condition_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, match_kind_), reinterpret_cast(&from._impl_) + offsetof(Impl_, match_kind_), offsetof(Impl_, override_) - offsetof(Impl_, match_kind_) + sizeof(Impl_::override_)); // @@protoc_insertion_point(copy_constructor:pg_query.MergeWhenClause) } inline PROTOBUF_NDEBUG_INLINE MergeWhenClause::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, target_list_{visibility, arena}, values_{visibility, arena} {} inline void MergeWhenClause::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, condition_), 0, offsetof(Impl_, override_) - offsetof(Impl_, condition_) + sizeof(Impl_::override_)); } MergeWhenClause::~MergeWhenClause() { // @@protoc_insertion_point(destructor:pg_query.MergeWhenClause) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void MergeWhenClause::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.condition_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void MergeWhenClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.MergeWhenClause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.target_list_.Clear(); _impl_.values_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.condition_ != nullptr); _impl_.condition_->Clear(); } ::memset(&_impl_.match_kind_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.override_) - reinterpret_cast(&_impl_.match_kind_)) + sizeof(_impl_.override_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* MergeWhenClause::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 3, 0, 2> MergeWhenClause::_table_ = { { PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_MergeWhenClause_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.MergeMatchKind match_kind = 1 [json_name = "matchKind"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MergeWhenClause, _impl_.match_kind_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_.match_kind_)}}, // .pg_query.CmdType command_type = 2 [json_name = "commandType"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MergeWhenClause, _impl_.command_type_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_.command_type_)}}, // .pg_query.OverridingKind override = 3 [json_name = "override"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MergeWhenClause, _impl_.override_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_.override_)}}, // .pg_query.Node condition = 4 [json_name = "condition"]; {::_pbi::TcParser::FastMtS1, {34, 0, 0, PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_.condition_)}}, // repeated .pg_query.Node target_list = 5 [json_name = "targetList"]; {::_pbi::TcParser::FastMtR1, {42, 63, 1, PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_.target_list_)}}, // repeated .pg_query.Node values = 6 [json_name = "values"]; {::_pbi::TcParser::FastMtR1, {50, 63, 2, PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_.values_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.MergeMatchKind match_kind = 1 [json_name = "matchKind"]; {PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_.match_kind_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.CmdType command_type = 2 [json_name = "commandType"]; {PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_.command_type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.OverridingKind override = 3 [json_name = "override"]; {PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_.override_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.Node condition = 4 [json_name = "condition"]; {PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_.condition_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node target_list = 5 [json_name = "targetList"]; {PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_.target_list_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node values = 6 [json_name = "values"]; {PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_.values_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* MergeWhenClause::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.MergeWhenClause) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.MergeMatchKind match_kind = 1 [json_name = "matchKind"]; if (this->_internal_match_kind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_match_kind(), target); } // .pg_query.CmdType command_type = 2 [json_name = "commandType"]; if (this->_internal_command_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_command_type(), target); } // .pg_query.OverridingKind override = 3 [json_name = "override"]; if (this->_internal_override() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_override(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node condition = 4 [json_name = "condition"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::condition(this), _Internal::condition(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node target_list = 5 [json_name = "targetList"]; for (unsigned i = 0, n = static_cast(this->_internal_target_list_size()); i < n; i++) { const auto& repfield = this->_internal_target_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node values = 6 [json_name = "values"]; for (unsigned i = 0, n = static_cast(this->_internal_values_size()); i < n; i++) { const auto& repfield = this->_internal_values().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.MergeWhenClause) return target; } ::size_t MergeWhenClause::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.MergeWhenClause) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node target_list = 5 [json_name = "targetList"]; total_size += 1UL * this->_internal_target_list_size(); for (const auto& msg : this->_internal_target_list()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node values = 6 [json_name = "values"]; total_size += 1UL * this->_internal_values_size(); for (const auto& msg : this->_internal_values()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node condition = 4 [json_name = "condition"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.condition_); } // .pg_query.MergeMatchKind match_kind = 1 [json_name = "matchKind"]; if (this->_internal_match_kind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_match_kind()); } // .pg_query.CmdType command_type = 2 [json_name = "commandType"]; if (this->_internal_command_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_command_type()); } // .pg_query.OverridingKind override = 3 [json_name = "override"]; if (this->_internal_override() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_override()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData MergeWhenClause::_class_data_ = { MergeWhenClause::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* MergeWhenClause::GetClassData() const { return &_class_data_; } void MergeWhenClause::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.MergeWhenClause) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_target_list()->MergeFrom( from._internal_target_list()); _this->_internal_mutable_values()->MergeFrom( from._internal_values()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_condition()->::pg_query::Node::MergeFrom( from._internal_condition()); } if (from._internal_match_kind() != 0) { _this->_internal_set_match_kind(from._internal_match_kind()); } if (from._internal_command_type() != 0) { _this->_internal_set_command_type(from._internal_command_type()); } if (from._internal_override() != 0) { _this->_internal_set_override(from._internal_override()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void MergeWhenClause::CopyFrom(const MergeWhenClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.MergeWhenClause) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool MergeWhenClause::IsInitialized() const { return true; } ::_pbi::CachedSize* MergeWhenClause::AccessCachedSize() const { return &_impl_._cached_size_; } void MergeWhenClause::InternalSwap(MergeWhenClause* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.target_list_.InternalSwap(&other->_impl_.target_list_); _impl_.values_.InternalSwap(&other->_impl_.values_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_.override_) + sizeof(MergeWhenClause::_impl_.override_) - PROTOBUF_FIELD_OFFSET(MergeWhenClause, _impl_.condition_)>( reinterpret_cast(&_impl_.condition_), reinterpret_cast(&other->_impl_.condition_)); } ::google::protobuf::Metadata MergeWhenClause::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[124]); } // =================================================================== class TriggerTransition::_Internal { public: }; TriggerTransition::TriggerTransition(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TriggerTransition) } inline PROTOBUF_NDEBUG_INLINE TriggerTransition::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : name_(arena, from.name_), _cached_size_{0} {} TriggerTransition::TriggerTransition( ::google::protobuf::Arena* arena, const TriggerTransition& from) : ::google::protobuf::Message(arena) { TriggerTransition* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, is_new_), reinterpret_cast(&from._impl_) + offsetof(Impl_, is_new_), offsetof(Impl_, is_table_) - offsetof(Impl_, is_new_) + sizeof(Impl_::is_table_)); // @@protoc_insertion_point(copy_constructor:pg_query.TriggerTransition) } inline PROTOBUF_NDEBUG_INLINE TriggerTransition::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : name_(arena), _cached_size_{0} {} inline void TriggerTransition::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, is_new_), 0, offsetof(Impl_, is_table_) - offsetof(Impl_, is_new_) + sizeof(Impl_::is_table_)); } TriggerTransition::~TriggerTransition() { // @@protoc_insertion_point(destructor:pg_query.TriggerTransition) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void TriggerTransition::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void TriggerTransition::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TriggerTransition) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.name_.ClearToEmpty(); ::memset(&_impl_.is_new_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.is_table_) - reinterpret_cast(&_impl_.is_new_)) + sizeof(_impl_.is_table_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* TriggerTransition::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 0, 39, 2> TriggerTransition::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_TriggerTransition_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string name = 1 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(TriggerTransition, _impl_.name_)}}, // bool is_new = 2 [json_name = "isNew"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(TriggerTransition, _impl_.is_new_)}}, // bool is_table = 3 [json_name = "isTable"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(TriggerTransition, _impl_.is_table_)}}, }}, {{ 65535, 65535 }}, {{ // string name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(TriggerTransition, _impl_.name_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool is_new = 2 [json_name = "isNew"]; {PROTOBUF_FIELD_OFFSET(TriggerTransition, _impl_.is_new_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool is_table = 3 [json_name = "isTable"]; {PROTOBUF_FIELD_OFFSET(TriggerTransition, _impl_.is_table_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, // no aux_entries {{ "\32\4\0\0\0\0\0\0" "pg_query.TriggerTransition" "name" }}, }; ::uint8_t* TriggerTransition::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TriggerTransition) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.TriggerTransition.name"); target = stream->WriteStringMaybeAliased(1, _s, target); } // bool is_new = 2 [json_name = "isNew"]; if (this->_internal_is_new() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_is_new(), target); } // bool is_table = 3 [json_name = "isTable"]; if (this->_internal_is_table() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_is_table(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // bool is_new = 2 [json_name = "isNew"]; if (this->_internal_is_new() != 0) { total_size += 2; } // bool is_table = 3 [json_name = "isTable"]; if (this->_internal_is_table() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData TriggerTransition::_class_data_ = { TriggerTransition::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* TriggerTransition::GetClassData() const { return &_class_data_; } void TriggerTransition::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TriggerTransition) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if (from._internal_is_new() != 0) { _this->_internal_set_is_new(from._internal_is_new()); } if (from._internal_is_table() != 0) { _this->_internal_set_is_table(from._internal_is_table()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void TriggerTransition::CopyFrom(const TriggerTransition& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TriggerTransition) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool TriggerTransition::IsInitialized() const { return true; } ::_pbi::CachedSize* TriggerTransition::AccessCachedSize() const { return &_impl_._cached_size_; } void TriggerTransition::InternalSwap(TriggerTransition* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(TriggerTransition, _impl_.is_table_) + sizeof(TriggerTransition::_impl_.is_table_) - PROTOBUF_FIELD_OFFSET(TriggerTransition, _impl_.is_new_)>( reinterpret_cast(&_impl_.is_new_), reinterpret_cast(&other->_impl_.is_new_)); } ::google::protobuf::Metadata TriggerTransition::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[125]); } // =================================================================== class JsonOutput::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonOutput, _impl_._has_bits_); static const ::pg_query::TypeName& type_name(const JsonOutput* msg); static void set_has_type_name(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::JsonReturning& returning(const JsonOutput* msg); static void set_has_returning(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::TypeName& JsonOutput::_Internal::type_name(const JsonOutput* msg) { return *msg->_impl_.type_name_; } const ::pg_query::JsonReturning& JsonOutput::_Internal::returning(const JsonOutput* msg) { return *msg->_impl_.returning_; } JsonOutput::JsonOutput(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonOutput) } inline PROTOBUF_NDEBUG_INLINE JsonOutput::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} JsonOutput::JsonOutput( ::google::protobuf::Arena* arena, const JsonOutput& from) : ::google::protobuf::Message(arena) { JsonOutput* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.type_name_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.type_name_) : nullptr; _impl_.returning_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::JsonReturning>(arena, *from._impl_.returning_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.JsonOutput) } inline PROTOBUF_NDEBUG_INLINE JsonOutput::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonOutput::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, type_name_), 0, offsetof(Impl_, returning_) - offsetof(Impl_, type_name_) + sizeof(Impl_::returning_)); } JsonOutput::~JsonOutput() { // @@protoc_insertion_point(destructor:pg_query.JsonOutput) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonOutput::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.type_name_; delete _impl_.returning_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonOutput::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonOutput) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.type_name_ != nullptr); _impl_.type_name_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.returning_ != nullptr); _impl_.returning_->Clear(); } } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonOutput::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 2, 0, 2> JsonOutput::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonOutput, _impl_._has_bits_), 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonOutput_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.JsonReturning returning = 2 [json_name = "returning"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(JsonOutput, _impl_.returning_)}}, // .pg_query.TypeName type_name = 1 [json_name = "typeName"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonOutput, _impl_.type_name_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.TypeName type_name = 1 [json_name = "typeName"]; {PROTOBUF_FIELD_OFFSET(JsonOutput, _impl_.type_name_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonReturning returning = 2 [json_name = "returning"]; {PROTOBUF_FIELD_OFFSET(JsonOutput, _impl_.returning_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonReturning>()}, }}, {{ }}, }; ::uint8_t* JsonOutput::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonOutput) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.TypeName type_name = 1 [json_name = "typeName"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::type_name(this), _Internal::type_name(this).GetCachedSize(), target, stream); } // .pg_query.JsonReturning returning = 2 [json_name = "returning"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::returning(this), _Internal::returning(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonOutput) return target; } ::size_t JsonOutput::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonOutput) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.TypeName type_name = 1 [json_name = "typeName"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.type_name_); } // .pg_query.JsonReturning returning = 2 [json_name = "returning"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.returning_); } } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonOutput::_class_data_ = { JsonOutput::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonOutput::GetClassData() const { return &_class_data_; } void JsonOutput::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonOutput) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_type_name()->::pg_query::TypeName::MergeFrom( from._internal_type_name()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_returning()->::pg_query::JsonReturning::MergeFrom( from._internal_returning()); } } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonOutput::CopyFrom(const JsonOutput& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonOutput) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonOutput::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonOutput::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonOutput::InternalSwap(JsonOutput* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonOutput, _impl_.returning_) + sizeof(JsonOutput::_impl_.returning_) - PROTOBUF_FIELD_OFFSET(JsonOutput, _impl_.type_name_)>( reinterpret_cast(&_impl_.type_name_), reinterpret_cast(&other->_impl_.type_name_)); } ::google::protobuf::Metadata JsonOutput::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[126]); } // =================================================================== class JsonArgument::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonArgument, _impl_._has_bits_); static const ::pg_query::JsonValueExpr& val(const JsonArgument* msg); static void set_has_val(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::JsonValueExpr& JsonArgument::_Internal::val(const JsonArgument* msg) { return *msg->_impl_.val_; } JsonArgument::JsonArgument(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonArgument) } inline PROTOBUF_NDEBUG_INLINE JsonArgument::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, name_(arena, from.name_) {} JsonArgument::JsonArgument( ::google::protobuf::Arena* arena, const JsonArgument& from) : ::google::protobuf::Message(arena) { JsonArgument* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.val_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::JsonValueExpr>(arena, *from._impl_.val_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.JsonArgument) } inline PROTOBUF_NDEBUG_INLINE JsonArgument::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, name_(arena) {} inline void JsonArgument::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.val_ = {}; } JsonArgument::~JsonArgument() { // @@protoc_insertion_point(destructor:pg_query.JsonArgument) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonArgument::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); delete _impl_.val_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonArgument::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonArgument) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.val_ != nullptr); _impl_.val_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonArgument::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 34, 2> JsonArgument::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonArgument, _impl_._has_bits_), 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonArgument_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string name = 2 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(JsonArgument, _impl_.name_)}}, // .pg_query.JsonValueExpr val = 1 [json_name = "val"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonArgument, _impl_.val_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.JsonValueExpr val = 1 [json_name = "val"]; {PROTOBUF_FIELD_OFFSET(JsonArgument, _impl_.val_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string name = 2 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(JsonArgument, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::JsonValueExpr>()}, }}, {{ "\25\0\4\0\0\0\0\0" "pg_query.JsonArgument" "name" }}, }; ::uint8_t* JsonArgument::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonArgument) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.JsonValueExpr val = 1 [json_name = "val"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::val(this), _Internal::val(this).GetCachedSize(), target, stream); } // string name = 2 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.JsonArgument.name"); target = stream->WriteStringMaybeAliased(2, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonArgument) return target; } ::size_t JsonArgument::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonArgument) ::size_t total_size = 0; ::uint32_t 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->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.JsonValueExpr val = 1 [json_name = "val"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.val_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonArgument::_class_data_ = { JsonArgument::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonArgument::GetClassData() const { return &_class_data_; } void JsonArgument::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonArgument) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_val()->::pg_query::JsonValueExpr::MergeFrom( from._internal_val()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonArgument::CopyFrom(const JsonArgument& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonArgument) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonArgument::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonArgument::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonArgument::InternalSwap(JsonArgument* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); swap(_impl_.val_, other->_impl_.val_); } ::google::protobuf::Metadata JsonArgument::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[127]); } // =================================================================== class JsonFuncExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_._has_bits_); static const ::pg_query::JsonValueExpr& context_item(const JsonFuncExpr* msg); static void set_has_context_item(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& pathspec(const JsonFuncExpr* msg); static void set_has_pathspec(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::JsonOutput& output(const JsonFuncExpr* msg); static void set_has_output(HasBits* has_bits) { (*has_bits)[0] |= 4u; } static const ::pg_query::JsonBehavior& on_empty(const JsonFuncExpr* msg); static void set_has_on_empty(HasBits* has_bits) { (*has_bits)[0] |= 8u; } static const ::pg_query::JsonBehavior& on_error(const JsonFuncExpr* msg); static void set_has_on_error(HasBits* has_bits) { (*has_bits)[0] |= 16u; } }; const ::pg_query::JsonValueExpr& JsonFuncExpr::_Internal::context_item(const JsonFuncExpr* msg) { return *msg->_impl_.context_item_; } const ::pg_query::Node& JsonFuncExpr::_Internal::pathspec(const JsonFuncExpr* msg) { return *msg->_impl_.pathspec_; } const ::pg_query::JsonOutput& JsonFuncExpr::_Internal::output(const JsonFuncExpr* msg) { return *msg->_impl_.output_; } const ::pg_query::JsonBehavior& JsonFuncExpr::_Internal::on_empty(const JsonFuncExpr* msg) { return *msg->_impl_.on_empty_; } const ::pg_query::JsonBehavior& JsonFuncExpr::_Internal::on_error(const JsonFuncExpr* msg) { return *msg->_impl_.on_error_; } JsonFuncExpr::JsonFuncExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonFuncExpr) } inline PROTOBUF_NDEBUG_INLINE JsonFuncExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, passing_{visibility, arena, from.passing_}, column_name_(arena, from.column_name_) {} JsonFuncExpr::JsonFuncExpr( ::google::protobuf::Arena* arena, const JsonFuncExpr& from) : ::google::protobuf::Message(arena) { JsonFuncExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.context_item_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::JsonValueExpr>(arena, *from._impl_.context_item_) : nullptr; _impl_.pathspec_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.pathspec_) : nullptr; _impl_.output_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::JsonOutput>(arena, *from._impl_.output_) : nullptr; _impl_.on_empty_ = (cached_has_bits & 0x00000008u) ? CreateMaybeMessage<::pg_query::JsonBehavior>(arena, *from._impl_.on_empty_) : nullptr; _impl_.on_error_ = (cached_has_bits & 0x00000010u) ? CreateMaybeMessage<::pg_query::JsonBehavior>(arena, *from._impl_.on_error_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, op_), reinterpret_cast(&from._impl_) + offsetof(Impl_, op_), offsetof(Impl_, location_) - offsetof(Impl_, op_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonFuncExpr) } inline PROTOBUF_NDEBUG_INLINE JsonFuncExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, passing_{visibility, arena}, column_name_(arena) {} inline void JsonFuncExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, context_item_), 0, offsetof(Impl_, location_) - offsetof(Impl_, context_item_) + sizeof(Impl_::location_)); } JsonFuncExpr::~JsonFuncExpr() { // @@protoc_insertion_point(destructor:pg_query.JsonFuncExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonFuncExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.column_name_.Destroy(); delete _impl_.context_item_; delete _impl_.pathspec_; delete _impl_.output_; delete _impl_.on_empty_; delete _impl_.on_error_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonFuncExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonFuncExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.passing_.Clear(); _impl_.column_name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000001fu) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.context_item_ != nullptr); _impl_.context_item_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.pathspec_ != nullptr); _impl_.pathspec_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.output_ != nullptr); _impl_.output_->Clear(); } if (cached_has_bits & 0x00000008u) { ABSL_DCHECK(_impl_.on_empty_ != nullptr); _impl_.on_empty_->Clear(); } if (cached_has_bits & 0x00000010u) { ABSL_DCHECK(_impl_.on_error_ != nullptr); _impl_.on_error_->Clear(); } } ::memset(&_impl_.op_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.op_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonFuncExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 11, 6, 49, 2> JsonFuncExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_._has_bits_), 0, // no _extensions_ 11, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294965248, // skipmap offsetof(decltype(_table_), field_entries), 11, // num_field_entries 6, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonFuncExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.JsonExprOp op = 1 [json_name = "op"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonFuncExpr, _impl_.op_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.op_)}}, // string column_name = 2 [json_name = "column_name"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.column_name_)}}, // .pg_query.JsonValueExpr context_item = 3 [json_name = "context_item"]; {::_pbi::TcParser::FastMtS1, {26, 0, 0, PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.context_item_)}}, // .pg_query.Node pathspec = 4 [json_name = "pathspec"]; {::_pbi::TcParser::FastMtS1, {34, 1, 1, PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.pathspec_)}}, // repeated .pg_query.Node passing = 5 [json_name = "passing"]; {::_pbi::TcParser::FastMtR1, {42, 63, 2, PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.passing_)}}, // .pg_query.JsonOutput output = 6 [json_name = "output"]; {::_pbi::TcParser::FastMtS1, {50, 2, 3, PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.output_)}}, // .pg_query.JsonBehavior on_empty = 7 [json_name = "on_empty"]; {::_pbi::TcParser::FastMtS1, {58, 3, 4, PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.on_empty_)}}, // .pg_query.JsonBehavior on_error = 8 [json_name = "on_error"]; {::_pbi::TcParser::FastMtS1, {66, 4, 5, PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.on_error_)}}, // .pg_query.JsonWrapper wrapper = 9 [json_name = "wrapper"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonFuncExpr, _impl_.wrapper_), 63>(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.wrapper_)}}, // .pg_query.JsonQuotes quotes = 10 [json_name = "quotes"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonFuncExpr, _impl_.quotes_), 63>(), {80, 63, 0, PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.quotes_)}}, // int32 location = 11 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonFuncExpr, _impl_.location_), 63>(), {88, 63, 0, PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.JsonExprOp op = 1 [json_name = "op"]; {PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.op_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // string column_name = 2 [json_name = "column_name"]; {PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.column_name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.JsonValueExpr context_item = 3 [json_name = "context_item"]; {PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.context_item_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node pathspec = 4 [json_name = "pathspec"]; {PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.pathspec_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node passing = 5 [json_name = "passing"]; {PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.passing_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonOutput output = 6 [json_name = "output"]; {PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.output_), _Internal::kHasBitsOffset + 2, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonBehavior on_empty = 7 [json_name = "on_empty"]; {PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.on_empty_), _Internal::kHasBitsOffset + 3, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonBehavior on_error = 8 [json_name = "on_error"]; {PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.on_error_), _Internal::kHasBitsOffset + 4, 5, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonWrapper wrapper = 9 [json_name = "wrapper"]; {PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.wrapper_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.JsonQuotes quotes = 10 [json_name = "quotes"]; {PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.quotes_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int32 location = 11 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::JsonValueExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonOutput>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonBehavior>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonBehavior>()}, }}, {{ "\25\0\13\0\0\0\0\0\0\0\0\0\0\0\0\0" "pg_query.JsonFuncExpr" "column_name" }}, }; ::uint8_t* JsonFuncExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonFuncExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.JsonExprOp op = 1 [json_name = "op"]; if (this->_internal_op() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_op(), target); } // string column_name = 2 [json_name = "column_name"]; if (!this->_internal_column_name().empty()) { const std::string& _s = this->_internal_column_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.JsonFuncExpr.column_name"); target = stream->WriteStringMaybeAliased(2, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.JsonValueExpr context_item = 3 [json_name = "context_item"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::context_item(this), _Internal::context_item(this).GetCachedSize(), target, stream); } // .pg_query.Node pathspec = 4 [json_name = "pathspec"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::pathspec(this), _Internal::pathspec(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node passing = 5 [json_name = "passing"]; for (unsigned i = 0, n = static_cast(this->_internal_passing_size()); i < n; i++) { const auto& repfield = this->_internal_passing().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.JsonOutput output = 6 [json_name = "output"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::output(this), _Internal::output(this).GetCachedSize(), target, stream); } // .pg_query.JsonBehavior on_empty = 7 [json_name = "on_empty"]; if (cached_has_bits & 0x00000008u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 7, _Internal::on_empty(this), _Internal::on_empty(this).GetCachedSize(), target, stream); } // .pg_query.JsonBehavior on_error = 8 [json_name = "on_error"]; if (cached_has_bits & 0x00000010u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 8, _Internal::on_error(this), _Internal::on_error(this).GetCachedSize(), target, stream); } // .pg_query.JsonWrapper wrapper = 9 [json_name = "wrapper"]; if (this->_internal_wrapper() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 9, this->_internal_wrapper(), target); } // .pg_query.JsonQuotes quotes = 10 [json_name = "quotes"]; if (this->_internal_quotes() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 10, this->_internal_quotes(), target); } // int32 location = 11 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<11>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonFuncExpr) return target; } ::size_t JsonFuncExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonFuncExpr) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node passing = 5 [json_name = "passing"]; total_size += 1UL * this->_internal_passing_size(); for (const auto& msg : this->_internal_passing()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string column_name = 2 [json_name = "column_name"]; if (!this->_internal_column_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_column_name()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000001fu) { // .pg_query.JsonValueExpr context_item = 3 [json_name = "context_item"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.context_item_); } // .pg_query.Node pathspec = 4 [json_name = "pathspec"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.pathspec_); } // .pg_query.JsonOutput output = 6 [json_name = "output"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.output_); } // .pg_query.JsonBehavior on_empty = 7 [json_name = "on_empty"]; if (cached_has_bits & 0x00000008u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.on_empty_); } // .pg_query.JsonBehavior on_error = 8 [json_name = "on_error"]; if (cached_has_bits & 0x00000010u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.on_error_); } } // .pg_query.JsonExprOp op = 1 [json_name = "op"]; if (this->_internal_op() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_op()); } // .pg_query.JsonWrapper wrapper = 9 [json_name = "wrapper"]; if (this->_internal_wrapper() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_wrapper()); } // .pg_query.JsonQuotes quotes = 10 [json_name = "quotes"]; if (this->_internal_quotes() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_quotes()); } // int32 location = 11 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonFuncExpr::_class_data_ = { JsonFuncExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonFuncExpr::GetClassData() const { return &_class_data_; } void JsonFuncExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonFuncExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_passing()->MergeFrom( from._internal_passing()); if (!from._internal_column_name().empty()) { _this->_internal_set_column_name(from._internal_column_name()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x0000001fu) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_context_item()->::pg_query::JsonValueExpr::MergeFrom( from._internal_context_item()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_pathspec()->::pg_query::Node::MergeFrom( from._internal_pathspec()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_output()->::pg_query::JsonOutput::MergeFrom( from._internal_output()); } if (cached_has_bits & 0x00000008u) { _this->_internal_mutable_on_empty()->::pg_query::JsonBehavior::MergeFrom( from._internal_on_empty()); } if (cached_has_bits & 0x00000010u) { _this->_internal_mutable_on_error()->::pg_query::JsonBehavior::MergeFrom( from._internal_on_error()); } } if (from._internal_op() != 0) { _this->_internal_set_op(from._internal_op()); } if (from._internal_wrapper() != 0) { _this->_internal_set_wrapper(from._internal_wrapper()); } if (from._internal_quotes() != 0) { _this->_internal_set_quotes(from._internal_quotes()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonFuncExpr::CopyFrom(const JsonFuncExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonFuncExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonFuncExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonFuncExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonFuncExpr::InternalSwap(JsonFuncExpr* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.passing_.InternalSwap(&other->_impl_.passing_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.column_name_, &other->_impl_.column_name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.location_) + sizeof(JsonFuncExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonFuncExpr, _impl_.context_item_)>( reinterpret_cast(&_impl_.context_item_), reinterpret_cast(&other->_impl_.context_item_)); } ::google::protobuf::Metadata JsonFuncExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[128]); } // =================================================================== class JsonTablePathSpec::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonTablePathSpec, _impl_._has_bits_); static const ::pg_query::Node& string(const JsonTablePathSpec* msg); static void set_has_string(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& JsonTablePathSpec::_Internal::string(const JsonTablePathSpec* msg) { return *msg->_impl_.string_; } JsonTablePathSpec::JsonTablePathSpec(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonTablePathSpec) } inline PROTOBUF_NDEBUG_INLINE JsonTablePathSpec::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, name_(arena, from.name_) {} JsonTablePathSpec::JsonTablePathSpec( ::google::protobuf::Arena* arena, const JsonTablePathSpec& from) : ::google::protobuf::Message(arena) { JsonTablePathSpec* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.string_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.string_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, name_location_), reinterpret_cast(&from._impl_) + offsetof(Impl_, name_location_), offsetof(Impl_, location_) - offsetof(Impl_, name_location_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonTablePathSpec) } inline PROTOBUF_NDEBUG_INLINE JsonTablePathSpec::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, name_(arena) {} inline void JsonTablePathSpec::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, string_), 0, offsetof(Impl_, location_) - offsetof(Impl_, string_) + sizeof(Impl_::location_)); } JsonTablePathSpec::~JsonTablePathSpec() { // @@protoc_insertion_point(destructor:pg_query.JsonTablePathSpec) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonTablePathSpec::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); delete _impl_.string_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonTablePathSpec::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonTablePathSpec) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.string_ != nullptr); _impl_.string_->Clear(); } ::memset(&_impl_.name_location_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.name_location_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonTablePathSpec::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 1, 39, 2> JsonTablePathSpec::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonTablePathSpec, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonTablePathSpec_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 4 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonTablePathSpec, _impl_.location_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(JsonTablePathSpec, _impl_.location_)}}, // .pg_query.Node string = 1 [json_name = "string"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonTablePathSpec, _impl_.string_)}}, // string name = 2 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(JsonTablePathSpec, _impl_.name_)}}, // int32 name_location = 3 [json_name = "name_location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonTablePathSpec, _impl_.name_location_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(JsonTablePathSpec, _impl_.name_location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node string = 1 [json_name = "string"]; {PROTOBUF_FIELD_OFFSET(JsonTablePathSpec, _impl_.string_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string name = 2 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(JsonTablePathSpec, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // int32 name_location = 3 [json_name = "name_location"]; {PROTOBUF_FIELD_OFFSET(JsonTablePathSpec, _impl_.name_location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 location = 4 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonTablePathSpec, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\32\0\4\0\0\0\0\0" "pg_query.JsonTablePathSpec" "name" }}, }; ::uint8_t* JsonTablePathSpec::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonTablePathSpec) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node string = 1 [json_name = "string"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::string(this), _Internal::string(this).GetCachedSize(), target, stream); } // string name = 2 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.JsonTablePathSpec.name"); target = stream->WriteStringMaybeAliased(2, _s, target); } // int32 name_location = 3 [json_name = "name_location"]; if (this->_internal_name_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_name_location(), target); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonTablePathSpec) return target; } ::size_t JsonTablePathSpec::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonTablePathSpec) ::size_t total_size = 0; ::uint32_t 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->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.Node string = 1 [json_name = "string"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.string_); } // int32 name_location = 3 [json_name = "name_location"]; if (this->_internal_name_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_name_location()); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonTablePathSpec::_class_data_ = { JsonTablePathSpec::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonTablePathSpec::GetClassData() const { return &_class_data_; } void JsonTablePathSpec::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonTablePathSpec) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_string()->::pg_query::Node::MergeFrom( from._internal_string()); } if (from._internal_name_location() != 0) { _this->_internal_set_name_location(from._internal_name_location()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonTablePathSpec::CopyFrom(const JsonTablePathSpec& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonTablePathSpec) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonTablePathSpec::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonTablePathSpec::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonTablePathSpec::InternalSwap(JsonTablePathSpec* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonTablePathSpec, _impl_.location_) + sizeof(JsonTablePathSpec::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonTablePathSpec, _impl_.string_)>( reinterpret_cast(&_impl_.string_), reinterpret_cast(&other->_impl_.string_)); } ::google::protobuf::Metadata JsonTablePathSpec::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[129]); } // =================================================================== class JsonTable::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonTable, _impl_._has_bits_); static const ::pg_query::JsonValueExpr& context_item(const JsonTable* msg); static void set_has_context_item(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::JsonTablePathSpec& pathspec(const JsonTable* msg); static void set_has_pathspec(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::JsonBehavior& on_error(const JsonTable* msg); static void set_has_on_error(HasBits* has_bits) { (*has_bits)[0] |= 4u; } static const ::pg_query::Alias& alias(const JsonTable* msg); static void set_has_alias(HasBits* has_bits) { (*has_bits)[0] |= 8u; } }; const ::pg_query::JsonValueExpr& JsonTable::_Internal::context_item(const JsonTable* msg) { return *msg->_impl_.context_item_; } const ::pg_query::JsonTablePathSpec& JsonTable::_Internal::pathspec(const JsonTable* msg) { return *msg->_impl_.pathspec_; } const ::pg_query::JsonBehavior& JsonTable::_Internal::on_error(const JsonTable* msg) { return *msg->_impl_.on_error_; } const ::pg_query::Alias& JsonTable::_Internal::alias(const JsonTable* msg) { return *msg->_impl_.alias_; } JsonTable::JsonTable(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonTable) } inline PROTOBUF_NDEBUG_INLINE JsonTable::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, passing_{visibility, arena, from.passing_}, columns_{visibility, arena, from.columns_} {} JsonTable::JsonTable( ::google::protobuf::Arena* arena, const JsonTable& from) : ::google::protobuf::Message(arena) { JsonTable* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.context_item_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::JsonValueExpr>(arena, *from._impl_.context_item_) : nullptr; _impl_.pathspec_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::JsonTablePathSpec>(arena, *from._impl_.pathspec_) : nullptr; _impl_.on_error_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::JsonBehavior>(arena, *from._impl_.on_error_) : nullptr; _impl_.alias_ = (cached_has_bits & 0x00000008u) ? CreateMaybeMessage<::pg_query::Alias>(arena, *from._impl_.alias_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, lateral_), reinterpret_cast(&from._impl_) + offsetof(Impl_, lateral_), offsetof(Impl_, location_) - offsetof(Impl_, lateral_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonTable) } inline PROTOBUF_NDEBUG_INLINE JsonTable::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, passing_{visibility, arena}, columns_{visibility, arena} {} inline void JsonTable::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, context_item_), 0, offsetof(Impl_, location_) - offsetof(Impl_, context_item_) + sizeof(Impl_::location_)); } JsonTable::~JsonTable() { // @@protoc_insertion_point(destructor:pg_query.JsonTable) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonTable::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.context_item_; delete _impl_.pathspec_; delete _impl_.on_error_; delete _impl_.alias_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonTable::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonTable) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.passing_.Clear(); _impl_.columns_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.context_item_ != nullptr); _impl_.context_item_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.pathspec_ != nullptr); _impl_.pathspec_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.on_error_ != nullptr); _impl_.on_error_->Clear(); } if (cached_has_bits & 0x00000008u) { ABSL_DCHECK(_impl_.alias_ != nullptr); _impl_.alias_->Clear(); } } ::memset(&_impl_.lateral_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.lateral_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonTable::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 6, 0, 2> JsonTable::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonTable, _impl_._has_bits_), 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 6, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonTable_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 8 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonTable, _impl_.location_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.location_)}}, // .pg_query.JsonValueExpr context_item = 1 [json_name = "context_item"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.context_item_)}}, // .pg_query.JsonTablePathSpec pathspec = 2 [json_name = "pathspec"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.pathspec_)}}, // repeated .pg_query.Node passing = 3 [json_name = "passing"]; {::_pbi::TcParser::FastMtR1, {26, 63, 2, PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.passing_)}}, // repeated .pg_query.Node columns = 4 [json_name = "columns"]; {::_pbi::TcParser::FastMtR1, {34, 63, 3, PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.columns_)}}, // .pg_query.JsonBehavior on_error = 5 [json_name = "on_error"]; {::_pbi::TcParser::FastMtS1, {42, 2, 4, PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.on_error_)}}, // .pg_query.Alias alias = 6 [json_name = "alias"]; {::_pbi::TcParser::FastMtS1, {50, 3, 5, PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.alias_)}}, // bool lateral = 7 [json_name = "lateral"]; {::_pbi::TcParser::SingularVarintNoZag1(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.lateral_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.JsonValueExpr context_item = 1 [json_name = "context_item"]; {PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.context_item_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonTablePathSpec pathspec = 2 [json_name = "pathspec"]; {PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.pathspec_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node passing = 3 [json_name = "passing"]; {PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.passing_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node columns = 4 [json_name = "columns"]; {PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.columns_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonBehavior on_error = 5 [json_name = "on_error"]; {PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.on_error_), _Internal::kHasBitsOffset + 2, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Alias alias = 6 [json_name = "alias"]; {PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.alias_), _Internal::kHasBitsOffset + 3, 5, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool lateral = 7 [json_name = "lateral"]; {PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.lateral_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 8 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::JsonValueExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonTablePathSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonBehavior>()}, {::_pbi::TcParser::GetTable<::pg_query::Alias>()}, }}, {{ }}, }; ::uint8_t* JsonTable::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonTable) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.JsonValueExpr context_item = 1 [json_name = "context_item"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::context_item(this), _Internal::context_item(this).GetCachedSize(), target, stream); } // .pg_query.JsonTablePathSpec pathspec = 2 [json_name = "pathspec"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::pathspec(this), _Internal::pathspec(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node passing = 3 [json_name = "passing"]; for (unsigned i = 0, n = static_cast(this->_internal_passing_size()); i < n; i++) { const auto& repfield = this->_internal_passing().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node columns = 4 [json_name = "columns"]; for (unsigned i = 0, n = static_cast(this->_internal_columns_size()); i < n; i++) { const auto& repfield = this->_internal_columns().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.JsonBehavior on_error = 5 [json_name = "on_error"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::on_error(this), _Internal::on_error(this).GetCachedSize(), target, stream); } // .pg_query.Alias alias = 6 [json_name = "alias"]; if (cached_has_bits & 0x00000008u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::alias(this), _Internal::alias(this).GetCachedSize(), target, stream); } // bool lateral = 7 [json_name = "lateral"]; if (this->_internal_lateral() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 7, this->_internal_lateral(), target); } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<8>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonTable) return target; } ::size_t JsonTable::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonTable) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node passing = 3 [json_name = "passing"]; total_size += 1UL * this->_internal_passing_size(); for (const auto& msg : this->_internal_passing()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node columns = 4 [json_name = "columns"]; total_size += 1UL * this->_internal_columns_size(); for (const auto& msg : this->_internal_columns()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { // .pg_query.JsonValueExpr context_item = 1 [json_name = "context_item"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.context_item_); } // .pg_query.JsonTablePathSpec pathspec = 2 [json_name = "pathspec"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.pathspec_); } // .pg_query.JsonBehavior on_error = 5 [json_name = "on_error"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.on_error_); } // .pg_query.Alias alias = 6 [json_name = "alias"]; if (cached_has_bits & 0x00000008u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.alias_); } } // bool lateral = 7 [json_name = "lateral"]; if (this->_internal_lateral() != 0) { total_size += 2; } // int32 location = 8 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonTable::_class_data_ = { JsonTable::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonTable::GetClassData() const { return &_class_data_; } void JsonTable::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonTable) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_passing()->MergeFrom( from._internal_passing()); _this->_internal_mutable_columns()->MergeFrom( from._internal_columns()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_context_item()->::pg_query::JsonValueExpr::MergeFrom( from._internal_context_item()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_pathspec()->::pg_query::JsonTablePathSpec::MergeFrom( from._internal_pathspec()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_on_error()->::pg_query::JsonBehavior::MergeFrom( from._internal_on_error()); } if (cached_has_bits & 0x00000008u) { _this->_internal_mutable_alias()->::pg_query::Alias::MergeFrom( from._internal_alias()); } } if (from._internal_lateral() != 0) { _this->_internal_set_lateral(from._internal_lateral()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonTable::CopyFrom(const JsonTable& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonTable) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonTable::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonTable::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonTable::InternalSwap(JsonTable* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.passing_.InternalSwap(&other->_impl_.passing_); _impl_.columns_.InternalSwap(&other->_impl_.columns_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.location_) + sizeof(JsonTable::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonTable, _impl_.context_item_)>( reinterpret_cast(&_impl_.context_item_), reinterpret_cast(&other->_impl_.context_item_)); } ::google::protobuf::Metadata JsonTable::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[130]); } // =================================================================== class JsonTableColumn::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_._has_bits_); static const ::pg_query::TypeName& type_name(const JsonTableColumn* msg); static void set_has_type_name(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::JsonTablePathSpec& pathspec(const JsonTableColumn* msg); static void set_has_pathspec(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::JsonFormat& format(const JsonTableColumn* msg); static void set_has_format(HasBits* has_bits) { (*has_bits)[0] |= 4u; } static const ::pg_query::JsonBehavior& on_empty(const JsonTableColumn* msg); static void set_has_on_empty(HasBits* has_bits) { (*has_bits)[0] |= 8u; } static const ::pg_query::JsonBehavior& on_error(const JsonTableColumn* msg); static void set_has_on_error(HasBits* has_bits) { (*has_bits)[0] |= 16u; } }; const ::pg_query::TypeName& JsonTableColumn::_Internal::type_name(const JsonTableColumn* msg) { return *msg->_impl_.type_name_; } const ::pg_query::JsonTablePathSpec& JsonTableColumn::_Internal::pathspec(const JsonTableColumn* msg) { return *msg->_impl_.pathspec_; } const ::pg_query::JsonFormat& JsonTableColumn::_Internal::format(const JsonTableColumn* msg) { return *msg->_impl_.format_; } const ::pg_query::JsonBehavior& JsonTableColumn::_Internal::on_empty(const JsonTableColumn* msg) { return *msg->_impl_.on_empty_; } const ::pg_query::JsonBehavior& JsonTableColumn::_Internal::on_error(const JsonTableColumn* msg) { return *msg->_impl_.on_error_; } JsonTableColumn::JsonTableColumn(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonTableColumn) } inline PROTOBUF_NDEBUG_INLINE JsonTableColumn::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, columns_{visibility, arena, from.columns_}, name_(arena, from.name_) {} JsonTableColumn::JsonTableColumn( ::google::protobuf::Arena* arena, const JsonTableColumn& from) : ::google::protobuf::Message(arena) { JsonTableColumn* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.type_name_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.type_name_) : nullptr; _impl_.pathspec_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::JsonTablePathSpec>(arena, *from._impl_.pathspec_) : nullptr; _impl_.format_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::JsonFormat>(arena, *from._impl_.format_) : nullptr; _impl_.on_empty_ = (cached_has_bits & 0x00000008u) ? CreateMaybeMessage<::pg_query::JsonBehavior>(arena, *from._impl_.on_empty_) : nullptr; _impl_.on_error_ = (cached_has_bits & 0x00000010u) ? CreateMaybeMessage<::pg_query::JsonBehavior>(arena, *from._impl_.on_error_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, coltype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, coltype_), offsetof(Impl_, location_) - offsetof(Impl_, coltype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonTableColumn) } inline PROTOBUF_NDEBUG_INLINE JsonTableColumn::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, columns_{visibility, arena}, name_(arena) {} inline void JsonTableColumn::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, type_name_), 0, offsetof(Impl_, location_) - offsetof(Impl_, type_name_) + sizeof(Impl_::location_)); } JsonTableColumn::~JsonTableColumn() { // @@protoc_insertion_point(destructor:pg_query.JsonTableColumn) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonTableColumn::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); delete _impl_.type_name_; delete _impl_.pathspec_; delete _impl_.format_; delete _impl_.on_empty_; delete _impl_.on_error_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonTableColumn::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonTableColumn) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.columns_.Clear(); _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000001fu) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.type_name_ != nullptr); _impl_.type_name_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.pathspec_ != nullptr); _impl_.pathspec_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.format_ != nullptr); _impl_.format_->Clear(); } if (cached_has_bits & 0x00000008u) { ABSL_DCHECK(_impl_.on_empty_ != nullptr); _impl_.on_empty_->Clear(); } if (cached_has_bits & 0x00000010u) { ABSL_DCHECK(_impl_.on_error_ != nullptr); _impl_.on_error_->Clear(); } } ::memset(&_impl_.coltype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.coltype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonTableColumn::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 11, 6, 45, 2> JsonTableColumn::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_._has_bits_), 0, // no _extensions_ 11, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294965248, // skipmap offsetof(decltype(_table_), field_entries), 11, // num_field_entries 6, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonTableColumn_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.JsonTableColumnType coltype = 1 [json_name = "coltype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonTableColumn, _impl_.coltype_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.coltype_)}}, // string name = 2 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.name_)}}, // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; {::_pbi::TcParser::FastMtS1, {26, 0, 0, PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.type_name_)}}, // .pg_query.JsonTablePathSpec pathspec = 4 [json_name = "pathspec"]; {::_pbi::TcParser::FastMtS1, {34, 1, 1, PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.pathspec_)}}, // .pg_query.JsonFormat format = 5 [json_name = "format"]; {::_pbi::TcParser::FastMtS1, {42, 2, 2, PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.format_)}}, // .pg_query.JsonWrapper wrapper = 6 [json_name = "wrapper"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonTableColumn, _impl_.wrapper_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.wrapper_)}}, // .pg_query.JsonQuotes quotes = 7 [json_name = "quotes"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonTableColumn, _impl_.quotes_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.quotes_)}}, // repeated .pg_query.Node columns = 8 [json_name = "columns"]; {::_pbi::TcParser::FastMtR1, {66, 63, 3, PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.columns_)}}, // .pg_query.JsonBehavior on_empty = 9 [json_name = "on_empty"]; {::_pbi::TcParser::FastMtS1, {74, 3, 4, PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.on_empty_)}}, // .pg_query.JsonBehavior on_error = 10 [json_name = "on_error"]; {::_pbi::TcParser::FastMtS1, {82, 4, 5, PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.on_error_)}}, // int32 location = 11 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonTableColumn, _impl_.location_), 63>(), {88, 63, 0, PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.JsonTableColumnType coltype = 1 [json_name = "coltype"]; {PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.coltype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // string name = 2 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; {PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.type_name_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonTablePathSpec pathspec = 4 [json_name = "pathspec"]; {PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.pathspec_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonFormat format = 5 [json_name = "format"]; {PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.format_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonWrapper wrapper = 6 [json_name = "wrapper"]; {PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.wrapper_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.JsonQuotes quotes = 7 [json_name = "quotes"]; {PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.quotes_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node columns = 8 [json_name = "columns"]; {PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.columns_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonBehavior on_empty = 9 [json_name = "on_empty"]; {PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.on_empty_), _Internal::kHasBitsOffset + 3, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonBehavior on_error = 10 [json_name = "on_error"]; {PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.on_error_), _Internal::kHasBitsOffset + 4, 5, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 11 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonTablePathSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonFormat>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonBehavior>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonBehavior>()}, }}, {{ "\30\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0" "pg_query.JsonTableColumn" "name" }}, }; ::uint8_t* JsonTableColumn::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonTableColumn) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.JsonTableColumnType coltype = 1 [json_name = "coltype"]; if (this->_internal_coltype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_coltype(), target); } // string name = 2 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.JsonTableColumn.name"); target = stream->WriteStringMaybeAliased(2, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::type_name(this), _Internal::type_name(this).GetCachedSize(), target, stream); } // .pg_query.JsonTablePathSpec pathspec = 4 [json_name = "pathspec"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::pathspec(this), _Internal::pathspec(this).GetCachedSize(), target, stream); } // .pg_query.JsonFormat format = 5 [json_name = "format"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::format(this), _Internal::format(this).GetCachedSize(), target, stream); } // .pg_query.JsonWrapper wrapper = 6 [json_name = "wrapper"]; if (this->_internal_wrapper() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 6, this->_internal_wrapper(), target); } // .pg_query.JsonQuotes quotes = 7 [json_name = "quotes"]; if (this->_internal_quotes() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 7, this->_internal_quotes(), target); } // repeated .pg_query.Node columns = 8 [json_name = "columns"]; for (unsigned i = 0, n = static_cast(this->_internal_columns_size()); i < n; i++) { const auto& repfield = this->_internal_columns().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(8, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.JsonBehavior on_empty = 9 [json_name = "on_empty"]; if (cached_has_bits & 0x00000008u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 9, _Internal::on_empty(this), _Internal::on_empty(this).GetCachedSize(), target, stream); } // .pg_query.JsonBehavior on_error = 10 [json_name = "on_error"]; if (cached_has_bits & 0x00000010u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 10, _Internal::on_error(this), _Internal::on_error(this).GetCachedSize(), target, stream); } // int32 location = 11 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<11>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonTableColumn) return target; } ::size_t JsonTableColumn::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonTableColumn) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node columns = 8 [json_name = "columns"]; total_size += 1UL * this->_internal_columns_size(); for (const auto& msg : this->_internal_columns()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string name = 2 [json_name = "name"]; if (!this->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000001fu) { // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.type_name_); } // .pg_query.JsonTablePathSpec pathspec = 4 [json_name = "pathspec"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.pathspec_); } // .pg_query.JsonFormat format = 5 [json_name = "format"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.format_); } // .pg_query.JsonBehavior on_empty = 9 [json_name = "on_empty"]; if (cached_has_bits & 0x00000008u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.on_empty_); } // .pg_query.JsonBehavior on_error = 10 [json_name = "on_error"]; if (cached_has_bits & 0x00000010u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.on_error_); } } // .pg_query.JsonTableColumnType coltype = 1 [json_name = "coltype"]; if (this->_internal_coltype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_coltype()); } // .pg_query.JsonWrapper wrapper = 6 [json_name = "wrapper"]; if (this->_internal_wrapper() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_wrapper()); } // .pg_query.JsonQuotes quotes = 7 [json_name = "quotes"]; if (this->_internal_quotes() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_quotes()); } // int32 location = 11 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonTableColumn::_class_data_ = { JsonTableColumn::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonTableColumn::GetClassData() const { return &_class_data_; } void JsonTableColumn::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonTableColumn) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_columns()->MergeFrom( from._internal_columns()); if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x0000001fu) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_type_name()->::pg_query::TypeName::MergeFrom( from._internal_type_name()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_pathspec()->::pg_query::JsonTablePathSpec::MergeFrom( from._internal_pathspec()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_format()->::pg_query::JsonFormat::MergeFrom( from._internal_format()); } if (cached_has_bits & 0x00000008u) { _this->_internal_mutable_on_empty()->::pg_query::JsonBehavior::MergeFrom( from._internal_on_empty()); } if (cached_has_bits & 0x00000010u) { _this->_internal_mutable_on_error()->::pg_query::JsonBehavior::MergeFrom( from._internal_on_error()); } } if (from._internal_coltype() != 0) { _this->_internal_set_coltype(from._internal_coltype()); } if (from._internal_wrapper() != 0) { _this->_internal_set_wrapper(from._internal_wrapper()); } if (from._internal_quotes() != 0) { _this->_internal_set_quotes(from._internal_quotes()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonTableColumn::CopyFrom(const JsonTableColumn& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonTableColumn) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonTableColumn::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonTableColumn::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonTableColumn::InternalSwap(JsonTableColumn* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.columns_.InternalSwap(&other->_impl_.columns_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.location_) + sizeof(JsonTableColumn::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonTableColumn, _impl_.type_name_)>( reinterpret_cast(&_impl_.type_name_), reinterpret_cast(&other->_impl_.type_name_)); } ::google::protobuf::Metadata JsonTableColumn::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[131]); } // =================================================================== class JsonKeyValue::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonKeyValue, _impl_._has_bits_); static const ::pg_query::Node& key(const JsonKeyValue* msg); static void set_has_key(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::JsonValueExpr& value(const JsonKeyValue* msg); static void set_has_value(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& JsonKeyValue::_Internal::key(const JsonKeyValue* msg) { return *msg->_impl_.key_; } const ::pg_query::JsonValueExpr& JsonKeyValue::_Internal::value(const JsonKeyValue* msg) { return *msg->_impl_.value_; } JsonKeyValue::JsonKeyValue(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonKeyValue) } inline PROTOBUF_NDEBUG_INLINE JsonKeyValue::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} JsonKeyValue::JsonKeyValue( ::google::protobuf::Arena* arena, const JsonKeyValue& from) : ::google::protobuf::Message(arena) { JsonKeyValue* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.key_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.key_) : nullptr; _impl_.value_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::JsonValueExpr>(arena, *from._impl_.value_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.JsonKeyValue) } inline PROTOBUF_NDEBUG_INLINE JsonKeyValue::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonKeyValue::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, key_), 0, offsetof(Impl_, value_) - offsetof(Impl_, key_) + sizeof(Impl_::value_)); } JsonKeyValue::~JsonKeyValue() { // @@protoc_insertion_point(destructor:pg_query.JsonKeyValue) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonKeyValue::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.key_; delete _impl_.value_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonKeyValue::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonKeyValue) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.key_ != nullptr); _impl_.key_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.value_ != nullptr); _impl_.value_->Clear(); } } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonKeyValue::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 2, 0, 2> JsonKeyValue::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonKeyValue, _impl_._has_bits_), 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonKeyValue_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.JsonValueExpr value = 2 [json_name = "value"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(JsonKeyValue, _impl_.value_)}}, // .pg_query.Node key = 1 [json_name = "key"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonKeyValue, _impl_.key_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node key = 1 [json_name = "key"]; {PROTOBUF_FIELD_OFFSET(JsonKeyValue, _impl_.key_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonValueExpr value = 2 [json_name = "value"]; {PROTOBUF_FIELD_OFFSET(JsonKeyValue, _impl_.value_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonValueExpr>()}, }}, {{ }}, }; ::uint8_t* JsonKeyValue::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonKeyValue) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node key = 1 [json_name = "key"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::key(this), _Internal::key(this).GetCachedSize(), target, stream); } // .pg_query.JsonValueExpr value = 2 [json_name = "value"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::value(this), _Internal::value(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonKeyValue) return target; } ::size_t JsonKeyValue::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonKeyValue) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node key = 1 [json_name = "key"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.key_); } // .pg_query.JsonValueExpr value = 2 [json_name = "value"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.value_); } } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonKeyValue::_class_data_ = { JsonKeyValue::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonKeyValue::GetClassData() const { return &_class_data_; } void JsonKeyValue::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonKeyValue) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_key()->::pg_query::Node::MergeFrom( from._internal_key()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_value()->::pg_query::JsonValueExpr::MergeFrom( from._internal_value()); } } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonKeyValue::CopyFrom(const JsonKeyValue& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonKeyValue) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonKeyValue::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonKeyValue::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonKeyValue::InternalSwap(JsonKeyValue* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonKeyValue, _impl_.value_) + sizeof(JsonKeyValue::_impl_.value_) - PROTOBUF_FIELD_OFFSET(JsonKeyValue, _impl_.key_)>( reinterpret_cast(&_impl_.key_), reinterpret_cast(&other->_impl_.key_)); } ::google::protobuf::Metadata JsonKeyValue::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[132]); } // =================================================================== class JsonParseExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonParseExpr, _impl_._has_bits_); static const ::pg_query::JsonValueExpr& expr(const JsonParseExpr* msg); static void set_has_expr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::JsonOutput& output(const JsonParseExpr* msg); static void set_has_output(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::JsonValueExpr& JsonParseExpr::_Internal::expr(const JsonParseExpr* msg) { return *msg->_impl_.expr_; } const ::pg_query::JsonOutput& JsonParseExpr::_Internal::output(const JsonParseExpr* msg) { return *msg->_impl_.output_; } JsonParseExpr::JsonParseExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonParseExpr) } inline PROTOBUF_NDEBUG_INLINE JsonParseExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} JsonParseExpr::JsonParseExpr( ::google::protobuf::Arena* arena, const JsonParseExpr& from) : ::google::protobuf::Message(arena) { JsonParseExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.expr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::JsonValueExpr>(arena, *from._impl_.expr_) : nullptr; _impl_.output_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::JsonOutput>(arena, *from._impl_.output_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, unique_keys_), reinterpret_cast(&from._impl_) + offsetof(Impl_, unique_keys_), offsetof(Impl_, location_) - offsetof(Impl_, unique_keys_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonParseExpr) } inline PROTOBUF_NDEBUG_INLINE JsonParseExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonParseExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, expr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, expr_) + sizeof(Impl_::location_)); } JsonParseExpr::~JsonParseExpr() { // @@protoc_insertion_point(destructor:pg_query.JsonParseExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonParseExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.expr_; delete _impl_.output_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonParseExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonParseExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.expr_ != nullptr); _impl_.expr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.output_ != nullptr); _impl_.output_->Clear(); } } ::memset(&_impl_.unique_keys_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.unique_keys_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonParseExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 0, 2> JsonParseExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonParseExpr, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonParseExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 4 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonParseExpr, _impl_.location_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(JsonParseExpr, _impl_.location_)}}, // .pg_query.JsonValueExpr expr = 1 [json_name = "expr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonParseExpr, _impl_.expr_)}}, // .pg_query.JsonOutput output = 2 [json_name = "output"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(JsonParseExpr, _impl_.output_)}}, // bool unique_keys = 3 [json_name = "unique_keys"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(JsonParseExpr, _impl_.unique_keys_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.JsonValueExpr expr = 1 [json_name = "expr"]; {PROTOBUF_FIELD_OFFSET(JsonParseExpr, _impl_.expr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonOutput output = 2 [json_name = "output"]; {PROTOBUF_FIELD_OFFSET(JsonParseExpr, _impl_.output_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool unique_keys = 3 [json_name = "unique_keys"]; {PROTOBUF_FIELD_OFFSET(JsonParseExpr, _impl_.unique_keys_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 4 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonParseExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::JsonValueExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonOutput>()}, }}, {{ }}, }; ::uint8_t* JsonParseExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonParseExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.JsonValueExpr expr = 1 [json_name = "expr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::expr(this), _Internal::expr(this).GetCachedSize(), target, stream); } // .pg_query.JsonOutput output = 2 [json_name = "output"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::output(this), _Internal::output(this).GetCachedSize(), target, stream); } // bool unique_keys = 3 [json_name = "unique_keys"]; if (this->_internal_unique_keys() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_unique_keys(), target); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonParseExpr) return target; } ::size_t JsonParseExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonParseExpr) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.JsonValueExpr expr = 1 [json_name = "expr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.expr_); } // .pg_query.JsonOutput output = 2 [json_name = "output"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.output_); } } // bool unique_keys = 3 [json_name = "unique_keys"]; if (this->_internal_unique_keys() != 0) { total_size += 2; } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonParseExpr::_class_data_ = { JsonParseExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonParseExpr::GetClassData() const { return &_class_data_; } void JsonParseExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonParseExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_expr()->::pg_query::JsonValueExpr::MergeFrom( from._internal_expr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_output()->::pg_query::JsonOutput::MergeFrom( from._internal_output()); } } if (from._internal_unique_keys() != 0) { _this->_internal_set_unique_keys(from._internal_unique_keys()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonParseExpr::CopyFrom(const JsonParseExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonParseExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonParseExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonParseExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonParseExpr::InternalSwap(JsonParseExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonParseExpr, _impl_.location_) + sizeof(JsonParseExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonParseExpr, _impl_.expr_)>( reinterpret_cast(&_impl_.expr_), reinterpret_cast(&other->_impl_.expr_)); } ::google::protobuf::Metadata JsonParseExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[133]); } // =================================================================== class JsonScalarExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonScalarExpr, _impl_._has_bits_); static const ::pg_query::Node& expr(const JsonScalarExpr* msg); static void set_has_expr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::JsonOutput& output(const JsonScalarExpr* msg); static void set_has_output(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& JsonScalarExpr::_Internal::expr(const JsonScalarExpr* msg) { return *msg->_impl_.expr_; } const ::pg_query::JsonOutput& JsonScalarExpr::_Internal::output(const JsonScalarExpr* msg) { return *msg->_impl_.output_; } JsonScalarExpr::JsonScalarExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonScalarExpr) } inline PROTOBUF_NDEBUG_INLINE JsonScalarExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} JsonScalarExpr::JsonScalarExpr( ::google::protobuf::Arena* arena, const JsonScalarExpr& from) : ::google::protobuf::Message(arena) { JsonScalarExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.expr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.expr_) : nullptr; _impl_.output_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::JsonOutput>(arena, *from._impl_.output_) : nullptr; _impl_.location_ = from._impl_.location_; // @@protoc_insertion_point(copy_constructor:pg_query.JsonScalarExpr) } inline PROTOBUF_NDEBUG_INLINE JsonScalarExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonScalarExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, expr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, expr_) + sizeof(Impl_::location_)); } JsonScalarExpr::~JsonScalarExpr() { // @@protoc_insertion_point(destructor:pg_query.JsonScalarExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonScalarExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.expr_; delete _impl_.output_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonScalarExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonScalarExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.expr_ != nullptr); _impl_.expr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.output_ != nullptr); _impl_.output_->Clear(); } } _impl_.location_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonScalarExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 0, 2> JsonScalarExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonScalarExpr, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonScalarExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node expr = 1 [json_name = "expr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonScalarExpr, _impl_.expr_)}}, // .pg_query.JsonOutput output = 2 [json_name = "output"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(JsonScalarExpr, _impl_.output_)}}, // int32 location = 3 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonScalarExpr, _impl_.location_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(JsonScalarExpr, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node expr = 1 [json_name = "expr"]; {PROTOBUF_FIELD_OFFSET(JsonScalarExpr, _impl_.expr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonOutput output = 2 [json_name = "output"]; {PROTOBUF_FIELD_OFFSET(JsonScalarExpr, _impl_.output_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 3 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonScalarExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonOutput>()}, }}, {{ }}, }; ::uint8_t* JsonScalarExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonScalarExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node expr = 1 [json_name = "expr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::expr(this), _Internal::expr(this).GetCachedSize(), target, stream); } // .pg_query.JsonOutput output = 2 [json_name = "output"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::output(this), _Internal::output(this).GetCachedSize(), target, stream); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonScalarExpr) return target; } ::size_t JsonScalarExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonScalarExpr) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node expr = 1 [json_name = "expr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.expr_); } // .pg_query.JsonOutput output = 2 [json_name = "output"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.output_); } } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonScalarExpr::_class_data_ = { JsonScalarExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonScalarExpr::GetClassData() const { return &_class_data_; } void JsonScalarExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonScalarExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_expr()->::pg_query::Node::MergeFrom( from._internal_expr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_output()->::pg_query::JsonOutput::MergeFrom( from._internal_output()); } } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonScalarExpr::CopyFrom(const JsonScalarExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonScalarExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonScalarExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonScalarExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonScalarExpr::InternalSwap(JsonScalarExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonScalarExpr, _impl_.location_) + sizeof(JsonScalarExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonScalarExpr, _impl_.expr_)>( reinterpret_cast(&_impl_.expr_), reinterpret_cast(&other->_impl_.expr_)); } ::google::protobuf::Metadata JsonScalarExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[134]); } // =================================================================== class JsonSerializeExpr::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonSerializeExpr, _impl_._has_bits_); static const ::pg_query::JsonValueExpr& expr(const JsonSerializeExpr* msg); static void set_has_expr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::JsonOutput& output(const JsonSerializeExpr* msg); static void set_has_output(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::JsonValueExpr& JsonSerializeExpr::_Internal::expr(const JsonSerializeExpr* msg) { return *msg->_impl_.expr_; } const ::pg_query::JsonOutput& JsonSerializeExpr::_Internal::output(const JsonSerializeExpr* msg) { return *msg->_impl_.output_; } JsonSerializeExpr::JsonSerializeExpr(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonSerializeExpr) } inline PROTOBUF_NDEBUG_INLINE JsonSerializeExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} JsonSerializeExpr::JsonSerializeExpr( ::google::protobuf::Arena* arena, const JsonSerializeExpr& from) : ::google::protobuf::Message(arena) { JsonSerializeExpr* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.expr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::JsonValueExpr>(arena, *from._impl_.expr_) : nullptr; _impl_.output_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::JsonOutput>(arena, *from._impl_.output_) : nullptr; _impl_.location_ = from._impl_.location_; // @@protoc_insertion_point(copy_constructor:pg_query.JsonSerializeExpr) } inline PROTOBUF_NDEBUG_INLINE JsonSerializeExpr::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonSerializeExpr::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, expr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, expr_) + sizeof(Impl_::location_)); } JsonSerializeExpr::~JsonSerializeExpr() { // @@protoc_insertion_point(destructor:pg_query.JsonSerializeExpr) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonSerializeExpr::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.expr_; delete _impl_.output_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonSerializeExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonSerializeExpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.expr_ != nullptr); _impl_.expr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.output_ != nullptr); _impl_.output_->Clear(); } } _impl_.location_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonSerializeExpr::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 0, 2> JsonSerializeExpr::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonSerializeExpr, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonSerializeExpr_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.JsonValueExpr expr = 1 [json_name = "expr"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonSerializeExpr, _impl_.expr_)}}, // .pg_query.JsonOutput output = 2 [json_name = "output"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(JsonSerializeExpr, _impl_.output_)}}, // int32 location = 3 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonSerializeExpr, _impl_.location_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(JsonSerializeExpr, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.JsonValueExpr expr = 1 [json_name = "expr"]; {PROTOBUF_FIELD_OFFSET(JsonSerializeExpr, _impl_.expr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonOutput output = 2 [json_name = "output"]; {PROTOBUF_FIELD_OFFSET(JsonSerializeExpr, _impl_.output_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 3 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonSerializeExpr, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::JsonValueExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonOutput>()}, }}, {{ }}, }; ::uint8_t* JsonSerializeExpr::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonSerializeExpr) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.JsonValueExpr expr = 1 [json_name = "expr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::expr(this), _Internal::expr(this).GetCachedSize(), target, stream); } // .pg_query.JsonOutput output = 2 [json_name = "output"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::output(this), _Internal::output(this).GetCachedSize(), target, stream); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonSerializeExpr) return target; } ::size_t JsonSerializeExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonSerializeExpr) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.JsonValueExpr expr = 1 [json_name = "expr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.expr_); } // .pg_query.JsonOutput output = 2 [json_name = "output"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.output_); } } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonSerializeExpr::_class_data_ = { JsonSerializeExpr::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonSerializeExpr::GetClassData() const { return &_class_data_; } void JsonSerializeExpr::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonSerializeExpr) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_expr()->::pg_query::JsonValueExpr::MergeFrom( from._internal_expr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_output()->::pg_query::JsonOutput::MergeFrom( from._internal_output()); } } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonSerializeExpr::CopyFrom(const JsonSerializeExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonSerializeExpr) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonSerializeExpr::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonSerializeExpr::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonSerializeExpr::InternalSwap(JsonSerializeExpr* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonSerializeExpr, _impl_.location_) + sizeof(JsonSerializeExpr::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonSerializeExpr, _impl_.expr_)>( reinterpret_cast(&_impl_.expr_), reinterpret_cast(&other->_impl_.expr_)); } ::google::protobuf::Metadata JsonSerializeExpr::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[135]); } // =================================================================== class JsonObjectConstructor::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonObjectConstructor, _impl_._has_bits_); static const ::pg_query::JsonOutput& output(const JsonObjectConstructor* msg); static void set_has_output(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::JsonOutput& JsonObjectConstructor::_Internal::output(const JsonObjectConstructor* msg) { return *msg->_impl_.output_; } JsonObjectConstructor::JsonObjectConstructor(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonObjectConstructor) } inline PROTOBUF_NDEBUG_INLINE JsonObjectConstructor::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, exprs_{visibility, arena, from.exprs_} {} JsonObjectConstructor::JsonObjectConstructor( ::google::protobuf::Arena* arena, const JsonObjectConstructor& from) : ::google::protobuf::Message(arena) { JsonObjectConstructor* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.output_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::JsonOutput>(arena, *from._impl_.output_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, absent_on_null_), reinterpret_cast(&from._impl_) + offsetof(Impl_, absent_on_null_), offsetof(Impl_, location_) - offsetof(Impl_, absent_on_null_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonObjectConstructor) } inline PROTOBUF_NDEBUG_INLINE JsonObjectConstructor::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, exprs_{visibility, arena} {} inline void JsonObjectConstructor::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, output_), 0, offsetof(Impl_, location_) - offsetof(Impl_, output_) + sizeof(Impl_::location_)); } JsonObjectConstructor::~JsonObjectConstructor() { // @@protoc_insertion_point(destructor:pg_query.JsonObjectConstructor) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonObjectConstructor::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.output_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonObjectConstructor::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonObjectConstructor) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.exprs_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.output_ != nullptr); _impl_.output_->Clear(); } ::memset(&_impl_.absent_on_null_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.absent_on_null_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonObjectConstructor::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 0, 2> JsonObjectConstructor::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonObjectConstructor, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonObjectConstructor_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node exprs = 1 [json_name = "exprs"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(JsonObjectConstructor, _impl_.exprs_)}}, // .pg_query.JsonOutput output = 2 [json_name = "output"]; {::_pbi::TcParser::FastMtS1, {18, 0, 1, PROTOBUF_FIELD_OFFSET(JsonObjectConstructor, _impl_.output_)}}, // bool absent_on_null = 3 [json_name = "absent_on_null"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(JsonObjectConstructor, _impl_.absent_on_null_)}}, // bool unique = 4 [json_name = "unique"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(JsonObjectConstructor, _impl_.unique_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonObjectConstructor, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(JsonObjectConstructor, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node exprs = 1 [json_name = "exprs"]; {PROTOBUF_FIELD_OFFSET(JsonObjectConstructor, _impl_.exprs_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonOutput output = 2 [json_name = "output"]; {PROTOBUF_FIELD_OFFSET(JsonObjectConstructor, _impl_.output_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool absent_on_null = 3 [json_name = "absent_on_null"]; {PROTOBUF_FIELD_OFFSET(JsonObjectConstructor, _impl_.absent_on_null_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool unique = 4 [json_name = "unique"]; {PROTOBUF_FIELD_OFFSET(JsonObjectConstructor, _impl_.unique_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonObjectConstructor, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonOutput>()}, }}, {{ }}, }; ::uint8_t* JsonObjectConstructor::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonObjectConstructor) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node exprs = 1 [json_name = "exprs"]; for (unsigned i = 0, n = static_cast(this->_internal_exprs_size()); i < n; i++) { const auto& repfield = this->_internal_exprs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.JsonOutput output = 2 [json_name = "output"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::output(this), _Internal::output(this).GetCachedSize(), target, stream); } // bool absent_on_null = 3 [json_name = "absent_on_null"]; if (this->_internal_absent_on_null() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_absent_on_null(), target); } // bool unique = 4 [json_name = "unique"]; if (this->_internal_unique() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_unique(), target); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonObjectConstructor) return target; } ::size_t JsonObjectConstructor::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonObjectConstructor) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node exprs = 1 [json_name = "exprs"]; total_size += 1UL * this->_internal_exprs_size(); for (const auto& msg : this->_internal_exprs()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.JsonOutput output = 2 [json_name = "output"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.output_); } // bool absent_on_null = 3 [json_name = "absent_on_null"]; if (this->_internal_absent_on_null() != 0) { total_size += 2; } // bool unique = 4 [json_name = "unique"]; if (this->_internal_unique() != 0) { total_size += 2; } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonObjectConstructor::_class_data_ = { JsonObjectConstructor::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonObjectConstructor::GetClassData() const { return &_class_data_; } void JsonObjectConstructor::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonObjectConstructor) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_exprs()->MergeFrom( from._internal_exprs()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_output()->::pg_query::JsonOutput::MergeFrom( from._internal_output()); } if (from._internal_absent_on_null() != 0) { _this->_internal_set_absent_on_null(from._internal_absent_on_null()); } if (from._internal_unique() != 0) { _this->_internal_set_unique(from._internal_unique()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonObjectConstructor::CopyFrom(const JsonObjectConstructor& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonObjectConstructor) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonObjectConstructor::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonObjectConstructor::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonObjectConstructor::InternalSwap(JsonObjectConstructor* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.exprs_.InternalSwap(&other->_impl_.exprs_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonObjectConstructor, _impl_.location_) + sizeof(JsonObjectConstructor::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonObjectConstructor, _impl_.output_)>( reinterpret_cast(&_impl_.output_), reinterpret_cast(&other->_impl_.output_)); } ::google::protobuf::Metadata JsonObjectConstructor::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[136]); } // =================================================================== class JsonArrayConstructor::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonArrayConstructor, _impl_._has_bits_); static const ::pg_query::JsonOutput& output(const JsonArrayConstructor* msg); static void set_has_output(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::JsonOutput& JsonArrayConstructor::_Internal::output(const JsonArrayConstructor* msg) { return *msg->_impl_.output_; } JsonArrayConstructor::JsonArrayConstructor(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonArrayConstructor) } inline PROTOBUF_NDEBUG_INLINE JsonArrayConstructor::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, exprs_{visibility, arena, from.exprs_} {} JsonArrayConstructor::JsonArrayConstructor( ::google::protobuf::Arena* arena, const JsonArrayConstructor& from) : ::google::protobuf::Message(arena) { JsonArrayConstructor* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.output_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::JsonOutput>(arena, *from._impl_.output_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, absent_on_null_), reinterpret_cast(&from._impl_) + offsetof(Impl_, absent_on_null_), offsetof(Impl_, location_) - offsetof(Impl_, absent_on_null_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonArrayConstructor) } inline PROTOBUF_NDEBUG_INLINE JsonArrayConstructor::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, exprs_{visibility, arena} {} inline void JsonArrayConstructor::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, output_), 0, offsetof(Impl_, location_) - offsetof(Impl_, output_) + sizeof(Impl_::location_)); } JsonArrayConstructor::~JsonArrayConstructor() { // @@protoc_insertion_point(destructor:pg_query.JsonArrayConstructor) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonArrayConstructor::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.output_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonArrayConstructor::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonArrayConstructor) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.exprs_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.output_ != nullptr); _impl_.output_->Clear(); } ::memset(&_impl_.absent_on_null_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.absent_on_null_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonArrayConstructor::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 0, 2> JsonArrayConstructor::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonArrayConstructor, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonArrayConstructor_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 4 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonArrayConstructor, _impl_.location_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(JsonArrayConstructor, _impl_.location_)}}, // repeated .pg_query.Node exprs = 1 [json_name = "exprs"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(JsonArrayConstructor, _impl_.exprs_)}}, // .pg_query.JsonOutput output = 2 [json_name = "output"]; {::_pbi::TcParser::FastMtS1, {18, 0, 1, PROTOBUF_FIELD_OFFSET(JsonArrayConstructor, _impl_.output_)}}, // bool absent_on_null = 3 [json_name = "absent_on_null"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(JsonArrayConstructor, _impl_.absent_on_null_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node exprs = 1 [json_name = "exprs"]; {PROTOBUF_FIELD_OFFSET(JsonArrayConstructor, _impl_.exprs_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonOutput output = 2 [json_name = "output"]; {PROTOBUF_FIELD_OFFSET(JsonArrayConstructor, _impl_.output_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool absent_on_null = 3 [json_name = "absent_on_null"]; {PROTOBUF_FIELD_OFFSET(JsonArrayConstructor, _impl_.absent_on_null_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 4 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonArrayConstructor, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonOutput>()}, }}, {{ }}, }; ::uint8_t* JsonArrayConstructor::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonArrayConstructor) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node exprs = 1 [json_name = "exprs"]; for (unsigned i = 0, n = static_cast(this->_internal_exprs_size()); i < n; i++) { const auto& repfield = this->_internal_exprs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.JsonOutput output = 2 [json_name = "output"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::output(this), _Internal::output(this).GetCachedSize(), target, stream); } // bool absent_on_null = 3 [json_name = "absent_on_null"]; if (this->_internal_absent_on_null() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_absent_on_null(), target); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonArrayConstructor) return target; } ::size_t JsonArrayConstructor::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonArrayConstructor) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node exprs = 1 [json_name = "exprs"]; total_size += 1UL * this->_internal_exprs_size(); for (const auto& msg : this->_internal_exprs()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.JsonOutput output = 2 [json_name = "output"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.output_); } // bool absent_on_null = 3 [json_name = "absent_on_null"]; if (this->_internal_absent_on_null() != 0) { total_size += 2; } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonArrayConstructor::_class_data_ = { JsonArrayConstructor::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonArrayConstructor::GetClassData() const { return &_class_data_; } void JsonArrayConstructor::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonArrayConstructor) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_exprs()->MergeFrom( from._internal_exprs()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_output()->::pg_query::JsonOutput::MergeFrom( from._internal_output()); } if (from._internal_absent_on_null() != 0) { _this->_internal_set_absent_on_null(from._internal_absent_on_null()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonArrayConstructor::CopyFrom(const JsonArrayConstructor& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonArrayConstructor) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonArrayConstructor::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonArrayConstructor::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonArrayConstructor::InternalSwap(JsonArrayConstructor* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.exprs_.InternalSwap(&other->_impl_.exprs_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonArrayConstructor, _impl_.location_) + sizeof(JsonArrayConstructor::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonArrayConstructor, _impl_.output_)>( reinterpret_cast(&_impl_.output_), reinterpret_cast(&other->_impl_.output_)); } ::google::protobuf::Metadata JsonArrayConstructor::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[137]); } // =================================================================== class JsonArrayQueryConstructor::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonArrayQueryConstructor, _impl_._has_bits_); static const ::pg_query::Node& query(const JsonArrayQueryConstructor* msg); static void set_has_query(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::JsonOutput& output(const JsonArrayQueryConstructor* msg); static void set_has_output(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::JsonFormat& format(const JsonArrayQueryConstructor* msg); static void set_has_format(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::Node& JsonArrayQueryConstructor::_Internal::query(const JsonArrayQueryConstructor* msg) { return *msg->_impl_.query_; } const ::pg_query::JsonOutput& JsonArrayQueryConstructor::_Internal::output(const JsonArrayQueryConstructor* msg) { return *msg->_impl_.output_; } const ::pg_query::JsonFormat& JsonArrayQueryConstructor::_Internal::format(const JsonArrayQueryConstructor* msg) { return *msg->_impl_.format_; } JsonArrayQueryConstructor::JsonArrayQueryConstructor(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonArrayQueryConstructor) } inline PROTOBUF_NDEBUG_INLINE JsonArrayQueryConstructor::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} JsonArrayQueryConstructor::JsonArrayQueryConstructor( ::google::protobuf::Arena* arena, const JsonArrayQueryConstructor& from) : ::google::protobuf::Message(arena) { JsonArrayQueryConstructor* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.query_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.query_) : nullptr; _impl_.output_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::JsonOutput>(arena, *from._impl_.output_) : nullptr; _impl_.format_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::JsonFormat>(arena, *from._impl_.format_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, absent_on_null_), reinterpret_cast(&from._impl_) + offsetof(Impl_, absent_on_null_), offsetof(Impl_, location_) - offsetof(Impl_, absent_on_null_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonArrayQueryConstructor) } inline PROTOBUF_NDEBUG_INLINE JsonArrayQueryConstructor::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonArrayQueryConstructor::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, query_), 0, offsetof(Impl_, location_) - offsetof(Impl_, query_) + sizeof(Impl_::location_)); } JsonArrayQueryConstructor::~JsonArrayQueryConstructor() { // @@protoc_insertion_point(destructor:pg_query.JsonArrayQueryConstructor) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonArrayQueryConstructor::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.query_; delete _impl_.output_; delete _impl_.format_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonArrayQueryConstructor::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonArrayQueryConstructor) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.query_ != nullptr); _impl_.query_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.output_ != nullptr); _impl_.output_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.format_ != nullptr); _impl_.format_->Clear(); } } ::memset(&_impl_.absent_on_null_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.absent_on_null_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonArrayQueryConstructor::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 3, 0, 2> JsonArrayQueryConstructor::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonArrayQueryConstructor, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonArrayQueryConstructor_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node query = 1 [json_name = "query"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonArrayQueryConstructor, _impl_.query_)}}, // .pg_query.JsonOutput output = 2 [json_name = "output"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(JsonArrayQueryConstructor, _impl_.output_)}}, // .pg_query.JsonFormat format = 3 [json_name = "format"]; {::_pbi::TcParser::FastMtS1, {26, 2, 2, PROTOBUF_FIELD_OFFSET(JsonArrayQueryConstructor, _impl_.format_)}}, // bool absent_on_null = 4 [json_name = "absent_on_null"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(JsonArrayQueryConstructor, _impl_.absent_on_null_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonArrayQueryConstructor, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(JsonArrayQueryConstructor, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node query = 1 [json_name = "query"]; {PROTOBUF_FIELD_OFFSET(JsonArrayQueryConstructor, _impl_.query_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonOutput output = 2 [json_name = "output"]; {PROTOBUF_FIELD_OFFSET(JsonArrayQueryConstructor, _impl_.output_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonFormat format = 3 [json_name = "format"]; {PROTOBUF_FIELD_OFFSET(JsonArrayQueryConstructor, _impl_.format_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool absent_on_null = 4 [json_name = "absent_on_null"]; {PROTOBUF_FIELD_OFFSET(JsonArrayQueryConstructor, _impl_.absent_on_null_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonArrayQueryConstructor, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonOutput>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonFormat>()}, }}, {{ }}, }; ::uint8_t* JsonArrayQueryConstructor::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonArrayQueryConstructor) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node query = 1 [json_name = "query"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::query(this), _Internal::query(this).GetCachedSize(), target, stream); } // .pg_query.JsonOutput output = 2 [json_name = "output"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::output(this), _Internal::output(this).GetCachedSize(), target, stream); } // .pg_query.JsonFormat format = 3 [json_name = "format"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::format(this), _Internal::format(this).GetCachedSize(), target, stream); } // bool absent_on_null = 4 [json_name = "absent_on_null"]; if (this->_internal_absent_on_null() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_absent_on_null(), target); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonArrayQueryConstructor) return target; } ::size_t JsonArrayQueryConstructor::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonArrayQueryConstructor) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.Node query = 1 [json_name = "query"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.query_); } // .pg_query.JsonOutput output = 2 [json_name = "output"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.output_); } // .pg_query.JsonFormat format = 3 [json_name = "format"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.format_); } } // bool absent_on_null = 4 [json_name = "absent_on_null"]; if (this->_internal_absent_on_null() != 0) { total_size += 2; } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonArrayQueryConstructor::_class_data_ = { JsonArrayQueryConstructor::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonArrayQueryConstructor::GetClassData() const { return &_class_data_; } void JsonArrayQueryConstructor::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonArrayQueryConstructor) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_query()->::pg_query::Node::MergeFrom( from._internal_query()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_output()->::pg_query::JsonOutput::MergeFrom( from._internal_output()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_format()->::pg_query::JsonFormat::MergeFrom( from._internal_format()); } } if (from._internal_absent_on_null() != 0) { _this->_internal_set_absent_on_null(from._internal_absent_on_null()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonArrayQueryConstructor::CopyFrom(const JsonArrayQueryConstructor& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonArrayQueryConstructor) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonArrayQueryConstructor::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonArrayQueryConstructor::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonArrayQueryConstructor::InternalSwap(JsonArrayQueryConstructor* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonArrayQueryConstructor, _impl_.location_) + sizeof(JsonArrayQueryConstructor::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonArrayQueryConstructor, _impl_.query_)>( reinterpret_cast(&_impl_.query_), reinterpret_cast(&other->_impl_.query_)); } ::google::protobuf::Metadata JsonArrayQueryConstructor::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[138]); } // =================================================================== class JsonAggConstructor::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonAggConstructor, _impl_._has_bits_); static const ::pg_query::JsonOutput& output(const JsonAggConstructor* msg); static void set_has_output(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& agg_filter(const JsonAggConstructor* msg); static void set_has_agg_filter(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::WindowDef& over(const JsonAggConstructor* msg); static void set_has_over(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::JsonOutput& JsonAggConstructor::_Internal::output(const JsonAggConstructor* msg) { return *msg->_impl_.output_; } const ::pg_query::Node& JsonAggConstructor::_Internal::agg_filter(const JsonAggConstructor* msg) { return *msg->_impl_.agg_filter_; } const ::pg_query::WindowDef& JsonAggConstructor::_Internal::over(const JsonAggConstructor* msg) { return *msg->_impl_.over_; } JsonAggConstructor::JsonAggConstructor(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonAggConstructor) } inline PROTOBUF_NDEBUG_INLINE JsonAggConstructor::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, agg_order_{visibility, arena, from.agg_order_} {} JsonAggConstructor::JsonAggConstructor( ::google::protobuf::Arena* arena, const JsonAggConstructor& from) : ::google::protobuf::Message(arena) { JsonAggConstructor* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.output_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::JsonOutput>(arena, *from._impl_.output_) : nullptr; _impl_.agg_filter_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.agg_filter_) : nullptr; _impl_.over_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::WindowDef>(arena, *from._impl_.over_) : nullptr; _impl_.location_ = from._impl_.location_; // @@protoc_insertion_point(copy_constructor:pg_query.JsonAggConstructor) } inline PROTOBUF_NDEBUG_INLINE JsonAggConstructor::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, agg_order_{visibility, arena} {} inline void JsonAggConstructor::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, output_), 0, offsetof(Impl_, location_) - offsetof(Impl_, output_) + sizeof(Impl_::location_)); } JsonAggConstructor::~JsonAggConstructor() { // @@protoc_insertion_point(destructor:pg_query.JsonAggConstructor) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonAggConstructor::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.output_; delete _impl_.agg_filter_; delete _impl_.over_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonAggConstructor::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonAggConstructor) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.agg_order_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.output_ != nullptr); _impl_.output_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.agg_filter_ != nullptr); _impl_.agg_filter_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.over_ != nullptr); _impl_.over_->Clear(); } } _impl_.location_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonAggConstructor::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 4, 0, 2> JsonAggConstructor::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonAggConstructor, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonAggConstructor_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.JsonOutput output = 1 [json_name = "output"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonAggConstructor, _impl_.output_)}}, // .pg_query.Node agg_filter = 2 [json_name = "agg_filter"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(JsonAggConstructor, _impl_.agg_filter_)}}, // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; {::_pbi::TcParser::FastMtR1, {26, 63, 2, PROTOBUF_FIELD_OFFSET(JsonAggConstructor, _impl_.agg_order_)}}, // .pg_query.WindowDef over = 4 [json_name = "over"]; {::_pbi::TcParser::FastMtS1, {34, 2, 3, PROTOBUF_FIELD_OFFSET(JsonAggConstructor, _impl_.over_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(JsonAggConstructor, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(JsonAggConstructor, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.JsonOutput output = 1 [json_name = "output"]; {PROTOBUF_FIELD_OFFSET(JsonAggConstructor, _impl_.output_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node agg_filter = 2 [json_name = "agg_filter"]; {PROTOBUF_FIELD_OFFSET(JsonAggConstructor, _impl_.agg_filter_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; {PROTOBUF_FIELD_OFFSET(JsonAggConstructor, _impl_.agg_order_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.WindowDef over = 4 [json_name = "over"]; {PROTOBUF_FIELD_OFFSET(JsonAggConstructor, _impl_.over_), _Internal::kHasBitsOffset + 2, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(JsonAggConstructor, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::JsonOutput>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::WindowDef>()}, }}, {{ }}, }; ::uint8_t* JsonAggConstructor::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonAggConstructor) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.JsonOutput output = 1 [json_name = "output"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::output(this), _Internal::output(this).GetCachedSize(), target, stream); } // .pg_query.Node agg_filter = 2 [json_name = "agg_filter"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::agg_filter(this), _Internal::agg_filter(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; for (unsigned i = 0, n = static_cast(this->_internal_agg_order_size()); i < n; i++) { const auto& repfield = this->_internal_agg_order().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.WindowDef over = 4 [json_name = "over"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::over(this), _Internal::over(this).GetCachedSize(), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonAggConstructor) return target; } ::size_t JsonAggConstructor::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonAggConstructor) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; total_size += 1UL * this->_internal_agg_order_size(); for (const auto& msg : this->_internal_agg_order()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.JsonOutput output = 1 [json_name = "output"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.output_); } // .pg_query.Node agg_filter = 2 [json_name = "agg_filter"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.agg_filter_); } // .pg_query.WindowDef over = 4 [json_name = "over"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.over_); } } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonAggConstructor::_class_data_ = { JsonAggConstructor::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonAggConstructor::GetClassData() const { return &_class_data_; } void JsonAggConstructor::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonAggConstructor) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_agg_order()->MergeFrom( from._internal_agg_order()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_output()->::pg_query::JsonOutput::MergeFrom( from._internal_output()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_agg_filter()->::pg_query::Node::MergeFrom( from._internal_agg_filter()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_over()->::pg_query::WindowDef::MergeFrom( from._internal_over()); } } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonAggConstructor::CopyFrom(const JsonAggConstructor& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonAggConstructor) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonAggConstructor::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonAggConstructor::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonAggConstructor::InternalSwap(JsonAggConstructor* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.agg_order_.InternalSwap(&other->_impl_.agg_order_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonAggConstructor, _impl_.location_) + sizeof(JsonAggConstructor::_impl_.location_) - PROTOBUF_FIELD_OFFSET(JsonAggConstructor, _impl_.output_)>( reinterpret_cast(&_impl_.output_), reinterpret_cast(&other->_impl_.output_)); } ::google::protobuf::Metadata JsonAggConstructor::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[139]); } // =================================================================== class JsonObjectAgg::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonObjectAgg, _impl_._has_bits_); static const ::pg_query::JsonAggConstructor& constructor(const JsonObjectAgg* msg); static void set_has_constructor(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::JsonKeyValue& arg(const JsonObjectAgg* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::JsonAggConstructor& JsonObjectAgg::_Internal::constructor(const JsonObjectAgg* msg) { return *msg->_impl_.constructor_; } const ::pg_query::JsonKeyValue& JsonObjectAgg::_Internal::arg(const JsonObjectAgg* msg) { return *msg->_impl_.arg_; } JsonObjectAgg::JsonObjectAgg(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonObjectAgg) } inline PROTOBUF_NDEBUG_INLINE JsonObjectAgg::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} JsonObjectAgg::JsonObjectAgg( ::google::protobuf::Arena* arena, const JsonObjectAgg& from) : ::google::protobuf::Message(arena) { JsonObjectAgg* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.constructor_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::JsonAggConstructor>(arena, *from._impl_.constructor_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::JsonKeyValue>(arena, *from._impl_.arg_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, absent_on_null_), reinterpret_cast(&from._impl_) + offsetof(Impl_, absent_on_null_), offsetof(Impl_, unique_) - offsetof(Impl_, absent_on_null_) + sizeof(Impl_::unique_)); // @@protoc_insertion_point(copy_constructor:pg_query.JsonObjectAgg) } inline PROTOBUF_NDEBUG_INLINE JsonObjectAgg::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonObjectAgg::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, constructor_), 0, offsetof(Impl_, unique_) - offsetof(Impl_, constructor_) + sizeof(Impl_::unique_)); } JsonObjectAgg::~JsonObjectAgg() { // @@protoc_insertion_point(destructor:pg_query.JsonObjectAgg) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonObjectAgg::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.constructor_; delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonObjectAgg::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonObjectAgg) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.constructor_ != nullptr); _impl_.constructor_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } } ::memset(&_impl_.absent_on_null_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.unique_) - reinterpret_cast(&_impl_.absent_on_null_)) + sizeof(_impl_.unique_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonObjectAgg::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 0, 2> JsonObjectAgg::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonObjectAgg, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonObjectAgg_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool unique = 4 [json_name = "unique"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(JsonObjectAgg, _impl_.unique_)}}, // .pg_query.JsonAggConstructor constructor = 1 [json_name = "constructor"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonObjectAgg, _impl_.constructor_)}}, // .pg_query.JsonKeyValue arg = 2 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(JsonObjectAgg, _impl_.arg_)}}, // bool absent_on_null = 3 [json_name = "absent_on_null"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(JsonObjectAgg, _impl_.absent_on_null_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.JsonAggConstructor constructor = 1 [json_name = "constructor"]; {PROTOBUF_FIELD_OFFSET(JsonObjectAgg, _impl_.constructor_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonKeyValue arg = 2 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(JsonObjectAgg, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool absent_on_null = 3 [json_name = "absent_on_null"]; {PROTOBUF_FIELD_OFFSET(JsonObjectAgg, _impl_.absent_on_null_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool unique = 4 [json_name = "unique"]; {PROTOBUF_FIELD_OFFSET(JsonObjectAgg, _impl_.unique_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::JsonAggConstructor>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonKeyValue>()}, }}, {{ }}, }; ::uint8_t* JsonObjectAgg::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonObjectAgg) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.JsonAggConstructor constructor = 1 [json_name = "constructor"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::constructor(this), _Internal::constructor(this).GetCachedSize(), target, stream); } // .pg_query.JsonKeyValue arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // bool absent_on_null = 3 [json_name = "absent_on_null"]; if (this->_internal_absent_on_null() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_absent_on_null(), target); } // bool unique = 4 [json_name = "unique"]; if (this->_internal_unique() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_unique(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonObjectAgg) return target; } ::size_t JsonObjectAgg::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonObjectAgg) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.JsonAggConstructor constructor = 1 [json_name = "constructor"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.constructor_); } // .pg_query.JsonKeyValue arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } } // bool absent_on_null = 3 [json_name = "absent_on_null"]; if (this->_internal_absent_on_null() != 0) { total_size += 2; } // bool unique = 4 [json_name = "unique"]; if (this->_internal_unique() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonObjectAgg::_class_data_ = { JsonObjectAgg::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonObjectAgg::GetClassData() const { return &_class_data_; } void JsonObjectAgg::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonObjectAgg) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_constructor()->::pg_query::JsonAggConstructor::MergeFrom( from._internal_constructor()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::JsonKeyValue::MergeFrom( from._internal_arg()); } } if (from._internal_absent_on_null() != 0) { _this->_internal_set_absent_on_null(from._internal_absent_on_null()); } if (from._internal_unique() != 0) { _this->_internal_set_unique(from._internal_unique()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonObjectAgg::CopyFrom(const JsonObjectAgg& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonObjectAgg) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonObjectAgg::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonObjectAgg::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonObjectAgg::InternalSwap(JsonObjectAgg* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonObjectAgg, _impl_.unique_) + sizeof(JsonObjectAgg::_impl_.unique_) - PROTOBUF_FIELD_OFFSET(JsonObjectAgg, _impl_.constructor_)>( reinterpret_cast(&_impl_.constructor_), reinterpret_cast(&other->_impl_.constructor_)); } ::google::protobuf::Metadata JsonObjectAgg::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[140]); } // =================================================================== class JsonArrayAgg::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(JsonArrayAgg, _impl_._has_bits_); static const ::pg_query::JsonAggConstructor& constructor(const JsonArrayAgg* msg); static void set_has_constructor(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::JsonValueExpr& arg(const JsonArrayAgg* msg); static void set_has_arg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::JsonAggConstructor& JsonArrayAgg::_Internal::constructor(const JsonArrayAgg* msg) { return *msg->_impl_.constructor_; } const ::pg_query::JsonValueExpr& JsonArrayAgg::_Internal::arg(const JsonArrayAgg* msg) { return *msg->_impl_.arg_; } JsonArrayAgg::JsonArrayAgg(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JsonArrayAgg) } inline PROTOBUF_NDEBUG_INLINE JsonArrayAgg::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} JsonArrayAgg::JsonArrayAgg( ::google::protobuf::Arena* arena, const JsonArrayAgg& from) : ::google::protobuf::Message(arena) { JsonArrayAgg* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.constructor_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::JsonAggConstructor>(arena, *from._impl_.constructor_) : nullptr; _impl_.arg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::JsonValueExpr>(arena, *from._impl_.arg_) : nullptr; _impl_.absent_on_null_ = from._impl_.absent_on_null_; // @@protoc_insertion_point(copy_constructor:pg_query.JsonArrayAgg) } inline PROTOBUF_NDEBUG_INLINE JsonArrayAgg::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void JsonArrayAgg::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, constructor_), 0, offsetof(Impl_, absent_on_null_) - offsetof(Impl_, constructor_) + sizeof(Impl_::absent_on_null_)); } JsonArrayAgg::~JsonArrayAgg() { // @@protoc_insertion_point(destructor:pg_query.JsonArrayAgg) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void JsonArrayAgg::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.constructor_; delete _impl_.arg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void JsonArrayAgg::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JsonArrayAgg) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.constructor_ != nullptr); _impl_.constructor_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.arg_ != nullptr); _impl_.arg_->Clear(); } } _impl_.absent_on_null_ = false; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* JsonArrayAgg::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 0, 2> JsonArrayAgg::_table_ = { { PROTOBUF_FIELD_OFFSET(JsonArrayAgg, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_JsonArrayAgg_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.JsonAggConstructor constructor = 1 [json_name = "constructor"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(JsonArrayAgg, _impl_.constructor_)}}, // .pg_query.JsonValueExpr arg = 2 [json_name = "arg"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(JsonArrayAgg, _impl_.arg_)}}, // bool absent_on_null = 3 [json_name = "absent_on_null"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(JsonArrayAgg, _impl_.absent_on_null_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.JsonAggConstructor constructor = 1 [json_name = "constructor"]; {PROTOBUF_FIELD_OFFSET(JsonArrayAgg, _impl_.constructor_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.JsonValueExpr arg = 2 [json_name = "arg"]; {PROTOBUF_FIELD_OFFSET(JsonArrayAgg, _impl_.arg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool absent_on_null = 3 [json_name = "absent_on_null"]; {PROTOBUF_FIELD_OFFSET(JsonArrayAgg, _impl_.absent_on_null_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::JsonAggConstructor>()}, {::_pbi::TcParser::GetTable<::pg_query::JsonValueExpr>()}, }}, {{ }}, }; ::uint8_t* JsonArrayAgg::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JsonArrayAgg) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.JsonAggConstructor constructor = 1 [json_name = "constructor"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::constructor(this), _Internal::constructor(this).GetCachedSize(), target, stream); } // .pg_query.JsonValueExpr arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::arg(this), _Internal::arg(this).GetCachedSize(), target, stream); } // bool absent_on_null = 3 [json_name = "absent_on_null"]; if (this->_internal_absent_on_null() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_absent_on_null(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JsonArrayAgg) return target; } ::size_t JsonArrayAgg::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JsonArrayAgg) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.JsonAggConstructor constructor = 1 [json_name = "constructor"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.constructor_); } // .pg_query.JsonValueExpr arg = 2 [json_name = "arg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_); } } // bool absent_on_null = 3 [json_name = "absent_on_null"]; if (this->_internal_absent_on_null() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData JsonArrayAgg::_class_data_ = { JsonArrayAgg::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* JsonArrayAgg::GetClassData() const { return &_class_data_; } void JsonArrayAgg::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JsonArrayAgg) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_constructor()->::pg_query::JsonAggConstructor::MergeFrom( from._internal_constructor()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_arg()->::pg_query::JsonValueExpr::MergeFrom( from._internal_arg()); } } if (from._internal_absent_on_null() != 0) { _this->_internal_set_absent_on_null(from._internal_absent_on_null()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void JsonArrayAgg::CopyFrom(const JsonArrayAgg& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JsonArrayAgg) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool JsonArrayAgg::IsInitialized() const { return true; } ::_pbi::CachedSize* JsonArrayAgg::AccessCachedSize() const { return &_impl_._cached_size_; } void JsonArrayAgg::InternalSwap(JsonArrayAgg* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(JsonArrayAgg, _impl_.absent_on_null_) + sizeof(JsonArrayAgg::_impl_.absent_on_null_) - PROTOBUF_FIELD_OFFSET(JsonArrayAgg, _impl_.constructor_)>( reinterpret_cast(&_impl_.constructor_), reinterpret_cast(&other->_impl_.constructor_)); } ::google::protobuf::Metadata JsonArrayAgg::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[141]); } // =================================================================== class RawStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RawStmt, _impl_._has_bits_); static const ::pg_query::Node& stmt(const RawStmt* msg); static void set_has_stmt(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& RawStmt::_Internal::stmt(const RawStmt* msg) { return *msg->_impl_.stmt_; } RawStmt::RawStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RawStmt) } inline PROTOBUF_NDEBUG_INLINE RawStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} RawStmt::RawStmt( ::google::protobuf::Arena* arena, const RawStmt& from) : ::google::protobuf::Message(arena) { RawStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.stmt_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.stmt_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, stmt_location_), reinterpret_cast(&from._impl_) + offsetof(Impl_, stmt_location_), offsetof(Impl_, stmt_len_) - offsetof(Impl_, stmt_location_) + sizeof(Impl_::stmt_len_)); // @@protoc_insertion_point(copy_constructor:pg_query.RawStmt) } inline PROTOBUF_NDEBUG_INLINE RawStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void RawStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, stmt_), 0, offsetof(Impl_, stmt_len_) - offsetof(Impl_, stmt_) + sizeof(Impl_::stmt_len_)); } RawStmt::~RawStmt() { // @@protoc_insertion_point(destructor:pg_query.RawStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RawStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.stmt_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RawStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RawStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.stmt_ != nullptr); _impl_.stmt_->Clear(); } ::memset(&_impl_.stmt_location_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.stmt_len_) - reinterpret_cast(&_impl_.stmt_location_)) + sizeof(_impl_.stmt_len_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RawStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> RawStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(RawStmt, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RawStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node stmt = 1 [json_name = "stmt"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(RawStmt, _impl_.stmt_)}}, // int32 stmt_location = 2 [json_name = "stmt_location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RawStmt, _impl_.stmt_location_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(RawStmt, _impl_.stmt_location_)}}, // int32 stmt_len = 3 [json_name = "stmt_len"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RawStmt, _impl_.stmt_len_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(RawStmt, _impl_.stmt_len_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node stmt = 1 [json_name = "stmt"]; {PROTOBUF_FIELD_OFFSET(RawStmt, _impl_.stmt_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 stmt_location = 2 [json_name = "stmt_location"]; {PROTOBUF_FIELD_OFFSET(RawStmt, _impl_.stmt_location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 stmt_len = 3 [json_name = "stmt_len"]; {PROTOBUF_FIELD_OFFSET(RawStmt, _impl_.stmt_len_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* RawStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RawStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node stmt = 1 [json_name = "stmt"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::stmt(this), _Internal::stmt(this).GetCachedSize(), target, stream); } // int32 stmt_location = 2 [json_name = "stmt_location"]; if (this->_internal_stmt_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<2>( stream, this->_internal_stmt_location(), target); } // int32 stmt_len = 3 [json_name = "stmt_len"]; if (this->_internal_stmt_len() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_stmt_len(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.stmt_); } // int32 stmt_location = 2 [json_name = "stmt_location"]; if (this->_internal_stmt_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_stmt_location()); } // int32 stmt_len = 3 [json_name = "stmt_len"]; if (this->_internal_stmt_len() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_stmt_len()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RawStmt::_class_data_ = { RawStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RawStmt::GetClassData() const { return &_class_data_; } void RawStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RawStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_stmt()->::pg_query::Node::MergeFrom( from._internal_stmt()); } if (from._internal_stmt_location() != 0) { _this->_internal_set_stmt_location(from._internal_stmt_location()); } if (from._internal_stmt_len() != 0) { _this->_internal_set_stmt_len(from._internal_stmt_len()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RawStmt::CopyFrom(const RawStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RawStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RawStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* RawStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void RawStmt::InternalSwap(RawStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RawStmt, _impl_.stmt_len_) + sizeof(RawStmt::_impl_.stmt_len_) - PROTOBUF_FIELD_OFFSET(RawStmt, _impl_.stmt_)>( reinterpret_cast(&_impl_.stmt_), reinterpret_cast(&other->_impl_.stmt_)); } ::google::protobuf::Metadata RawStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[142]); } // =================================================================== class InsertStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const InsertStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& select_stmt(const InsertStmt* msg); static void set_has_select_stmt(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::OnConflictClause& on_conflict_clause(const InsertStmt* msg); static void set_has_on_conflict_clause(HasBits* has_bits) { (*has_bits)[0] |= 4u; } static const ::pg_query::WithClause& with_clause(const InsertStmt* msg); static void set_has_with_clause(HasBits* has_bits) { (*has_bits)[0] |= 8u; } }; const ::pg_query::RangeVar& InsertStmt::_Internal::relation(const InsertStmt* msg) { return *msg->_impl_.relation_; } const ::pg_query::Node& InsertStmt::_Internal::select_stmt(const InsertStmt* msg) { return *msg->_impl_.select_stmt_; } const ::pg_query::OnConflictClause& InsertStmt::_Internal::on_conflict_clause(const InsertStmt* msg) { return *msg->_impl_.on_conflict_clause_; } const ::pg_query::WithClause& InsertStmt::_Internal::with_clause(const InsertStmt* msg) { return *msg->_impl_.with_clause_; } InsertStmt::InsertStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.InsertStmt) } inline PROTOBUF_NDEBUG_INLINE InsertStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, cols_{visibility, arena, from.cols_}, returning_list_{visibility, arena, from.returning_list_} {} InsertStmt::InsertStmt( ::google::protobuf::Arena* arena, const InsertStmt& from) : ::google::protobuf::Message(arena) { InsertStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.select_stmt_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.select_stmt_) : nullptr; _impl_.on_conflict_clause_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::OnConflictClause>(arena, *from._impl_.on_conflict_clause_) : nullptr; _impl_.with_clause_ = (cached_has_bits & 0x00000008u) ? CreateMaybeMessage<::pg_query::WithClause>(arena, *from._impl_.with_clause_) : nullptr; _impl_.override_ = from._impl_.override_; // @@protoc_insertion_point(copy_constructor:pg_query.InsertStmt) } inline PROTOBUF_NDEBUG_INLINE InsertStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, cols_{visibility, arena}, returning_list_{visibility, arena} {} inline void InsertStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, override_) - offsetof(Impl_, relation_) + sizeof(Impl_::override_)); } InsertStmt::~InsertStmt() { // @@protoc_insertion_point(destructor:pg_query.InsertStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void InsertStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.relation_; delete _impl_.select_stmt_; delete _impl_.on_conflict_clause_; delete _impl_.with_clause_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void InsertStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.InsertStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.cols_.Clear(); _impl_.returning_list_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.select_stmt_ != nullptr); _impl_.select_stmt_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.on_conflict_clause_ != nullptr); _impl_.on_conflict_clause_->Clear(); } if (cached_has_bits & 0x00000008u) { ABSL_DCHECK(_impl_.with_clause_ != nullptr); _impl_.with_clause_->Clear(); } } _impl_.override_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* InsertStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 6, 0, 2> InsertStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 6, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_InsertStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.relation_)}}, // repeated .pg_query.Node cols = 2 [json_name = "cols"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.cols_)}}, // .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; {::_pbi::TcParser::FastMtS1, {26, 1, 2, PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.select_stmt_)}}, // .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; {::_pbi::TcParser::FastMtS1, {34, 2, 3, PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.on_conflict_clause_)}}, // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; {::_pbi::TcParser::FastMtR1, {42, 63, 4, PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.returning_list_)}}, // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; {::_pbi::TcParser::FastMtS1, {50, 3, 5, PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.with_clause_)}}, // .pg_query.OverridingKind override = 7 [json_name = "override"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InsertStmt, _impl_.override_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.override_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node cols = 2 [json_name = "cols"]; {PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.cols_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; {PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.select_stmt_), _Internal::kHasBitsOffset + 1, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; {PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.on_conflict_clause_), _Internal::kHasBitsOffset + 2, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; {PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.returning_list_), -1, 4, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; {PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.with_clause_), _Internal::kHasBitsOffset + 3, 5, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.OverridingKind override = 7 [json_name = "override"]; {PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.override_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::OnConflictClause>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::WithClause>()}, }}, {{ }}, }; ::uint8_t* InsertStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.InsertStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node cols = 2 [json_name = "cols"]; for (unsigned i = 0, n = static_cast(this->_internal_cols_size()); i < n; i++) { const auto& repfield = this->_internal_cols().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::select_stmt(this), _Internal::select_stmt(this).GetCachedSize(), target, stream); } // .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::on_conflict_clause(this), _Internal::on_conflict_clause(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; for (unsigned i = 0, n = static_cast(this->_internal_returning_list_size()); i < n; i++) { const auto& repfield = this->_internal_returning_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; if (cached_has_bits & 0x00000008u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::with_clause(this), _Internal::with_clause(this).GetCachedSize(), target, stream); } // .pg_query.OverridingKind override = 7 [json_name = "override"]; if (this->_internal_override() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 7, this->_internal_override(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_cols()) { total_size += ::google::protobuf::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->_internal_returning_list()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.select_stmt_); } // .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.on_conflict_clause_); } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; if (cached_has_bits & 0x00000008u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.with_clause_); } } // .pg_query.OverridingKind override = 7 [json_name = "override"]; if (this->_internal_override() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_override()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData InsertStmt::_class_data_ = { InsertStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* InsertStmt::GetClassData() const { return &_class_data_; } void InsertStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.InsertStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_cols()->MergeFrom( from._internal_cols()); _this->_internal_mutable_returning_list()->MergeFrom( from._internal_returning_list()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_select_stmt()->::pg_query::Node::MergeFrom( from._internal_select_stmt()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_on_conflict_clause()->::pg_query::OnConflictClause::MergeFrom( from._internal_on_conflict_clause()); } if (cached_has_bits & 0x00000008u) { _this->_internal_mutable_with_clause()->::pg_query::WithClause::MergeFrom( from._internal_with_clause()); } } if (from._internal_override() != 0) { _this->_internal_set_override(from._internal_override()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void InsertStmt::CopyFrom(const InsertStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.InsertStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool InsertStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* InsertStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void InsertStmt::InternalSwap(InsertStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.cols_.InternalSwap(&other->_impl_.cols_); _impl_.returning_list_.InternalSwap(&other->_impl_.returning_list_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.override_) + sizeof(InsertStmt::_impl_.override_) - PROTOBUF_FIELD_OFFSET(InsertStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata InsertStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[143]); } // =================================================================== class DeleteStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(DeleteStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const DeleteStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& where_clause(const DeleteStmt* msg); static void set_has_where_clause(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::WithClause& with_clause(const DeleteStmt* msg); static void set_has_with_clause(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::RangeVar& DeleteStmt::_Internal::relation(const DeleteStmt* msg) { return *msg->_impl_.relation_; } const ::pg_query::Node& DeleteStmt::_Internal::where_clause(const DeleteStmt* msg) { return *msg->_impl_.where_clause_; } const ::pg_query::WithClause& DeleteStmt::_Internal::with_clause(const DeleteStmt* msg) { return *msg->_impl_.with_clause_; } DeleteStmt::DeleteStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DeleteStmt) } inline PROTOBUF_NDEBUG_INLINE DeleteStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, using_clause_{visibility, arena, from.using_clause_}, returning_list_{visibility, arena, from.returning_list_} {} DeleteStmt::DeleteStmt( ::google::protobuf::Arena* arena, const DeleteStmt& from) : ::google::protobuf::Message(arena) { DeleteStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.where_clause_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.where_clause_) : nullptr; _impl_.with_clause_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::WithClause>(arena, *from._impl_.with_clause_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.DeleteStmt) } inline PROTOBUF_NDEBUG_INLINE DeleteStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, using_clause_{visibility, arena}, returning_list_{visibility, arena} {} inline void DeleteStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, with_clause_) - offsetof(Impl_, relation_) + sizeof(Impl_::with_clause_)); } DeleteStmt::~DeleteStmt() { // @@protoc_insertion_point(destructor:pg_query.DeleteStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DeleteStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.relation_; delete _impl_.where_clause_; delete _impl_.with_clause_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void DeleteStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DeleteStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.using_clause_.Clear(); _impl_.returning_list_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.where_clause_ != nullptr); _impl_.where_clause_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.with_clause_ != nullptr); _impl_.with_clause_->Clear(); } } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DeleteStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 5, 0, 2> DeleteStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(DeleteStmt, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 5, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_DeleteStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(DeleteStmt, _impl_.relation_)}}, // repeated .pg_query.Node using_clause = 2 [json_name = "usingClause"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(DeleteStmt, _impl_.using_clause_)}}, // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; {::_pbi::TcParser::FastMtS1, {26, 1, 2, PROTOBUF_FIELD_OFFSET(DeleteStmt, _impl_.where_clause_)}}, // repeated .pg_query.Node returning_list = 4 [json_name = "returningList"]; {::_pbi::TcParser::FastMtR1, {34, 63, 3, PROTOBUF_FIELD_OFFSET(DeleteStmt, _impl_.returning_list_)}}, // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; {::_pbi::TcParser::FastMtS1, {42, 2, 4, PROTOBUF_FIELD_OFFSET(DeleteStmt, _impl_.with_clause_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(DeleteStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node using_clause = 2 [json_name = "usingClause"]; {PROTOBUF_FIELD_OFFSET(DeleteStmt, _impl_.using_clause_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; {PROTOBUF_FIELD_OFFSET(DeleteStmt, _impl_.where_clause_), _Internal::kHasBitsOffset + 1, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node returning_list = 4 [json_name = "returningList"]; {PROTOBUF_FIELD_OFFSET(DeleteStmt, _impl_.returning_list_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; {PROTOBUF_FIELD_OFFSET(DeleteStmt, _impl_.with_clause_), _Internal::kHasBitsOffset + 2, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::WithClause>()}, }}, {{ }}, }; ::uint8_t* DeleteStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DeleteStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node using_clause = 2 [json_name = "usingClause"]; for (unsigned i = 0, n = static_cast(this->_internal_using_clause_size()); i < n; i++) { const auto& repfield = this->_internal_using_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::where_clause(this), _Internal::where_clause(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node returning_list = 4 [json_name = "returningList"]; for (unsigned i = 0, n = static_cast(this->_internal_returning_list_size()); i < n; i++) { const auto& repfield = this->_internal_returning_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::with_clause(this), _Internal::with_clause(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_using_clause()) { total_size += ::google::protobuf::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->_internal_returning_list()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.where_clause_); } // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.with_clause_); } } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DeleteStmt::_class_data_ = { DeleteStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DeleteStmt::GetClassData() const { return &_class_data_; } void DeleteStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DeleteStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_using_clause()->MergeFrom( from._internal_using_clause()); _this->_internal_mutable_returning_list()->MergeFrom( from._internal_returning_list()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_where_clause()->::pg_query::Node::MergeFrom( from._internal_where_clause()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_with_clause()->::pg_query::WithClause::MergeFrom( from._internal_with_clause()); } } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DeleteStmt::CopyFrom(const DeleteStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DeleteStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DeleteStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* DeleteStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void DeleteStmt::InternalSwap(DeleteStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.using_clause_.InternalSwap(&other->_impl_.using_clause_); _impl_.returning_list_.InternalSwap(&other->_impl_.returning_list_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(DeleteStmt, _impl_.with_clause_) + sizeof(DeleteStmt::_impl_.with_clause_) - PROTOBUF_FIELD_OFFSET(DeleteStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata DeleteStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[144]); } // =================================================================== class UpdateStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const UpdateStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& where_clause(const UpdateStmt* msg); static void set_has_where_clause(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::WithClause& with_clause(const UpdateStmt* msg); static void set_has_with_clause(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::RangeVar& UpdateStmt::_Internal::relation(const UpdateStmt* msg) { return *msg->_impl_.relation_; } const ::pg_query::Node& UpdateStmt::_Internal::where_clause(const UpdateStmt* msg) { return *msg->_impl_.where_clause_; } const ::pg_query::WithClause& UpdateStmt::_Internal::with_clause(const UpdateStmt* msg) { return *msg->_impl_.with_clause_; } UpdateStmt::UpdateStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.UpdateStmt) } inline PROTOBUF_NDEBUG_INLINE UpdateStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, target_list_{visibility, arena, from.target_list_}, from_clause_{visibility, arena, from.from_clause_}, returning_list_{visibility, arena, from.returning_list_} {} UpdateStmt::UpdateStmt( ::google::protobuf::Arena* arena, const UpdateStmt& from) : ::google::protobuf::Message(arena) { UpdateStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.where_clause_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.where_clause_) : nullptr; _impl_.with_clause_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::WithClause>(arena, *from._impl_.with_clause_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.UpdateStmt) } inline PROTOBUF_NDEBUG_INLINE UpdateStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, target_list_{visibility, arena}, from_clause_{visibility, arena}, returning_list_{visibility, arena} {} inline void UpdateStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, with_clause_) - offsetof(Impl_, relation_) + sizeof(Impl_::with_clause_)); } UpdateStmt::~UpdateStmt() { // @@protoc_insertion_point(destructor:pg_query.UpdateStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void UpdateStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.relation_; delete _impl_.where_clause_; delete _impl_.with_clause_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void UpdateStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.UpdateStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.target_list_.Clear(); _impl_.from_clause_.Clear(); _impl_.returning_list_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.where_clause_ != nullptr); _impl_.where_clause_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.with_clause_ != nullptr); _impl_.with_clause_->Clear(); } } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* UpdateStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 6, 0, 2> UpdateStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 6, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_UpdateStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_.relation_)}}, // repeated .pg_query.Node target_list = 2 [json_name = "targetList"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_.target_list_)}}, // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; {::_pbi::TcParser::FastMtS1, {26, 1, 2, PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_.where_clause_)}}, // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; {::_pbi::TcParser::FastMtR1, {34, 63, 3, PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_.from_clause_)}}, // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; {::_pbi::TcParser::FastMtR1, {42, 63, 4, PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_.returning_list_)}}, // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; {::_pbi::TcParser::FastMtS1, {50, 2, 5, PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_.with_clause_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node target_list = 2 [json_name = "targetList"]; {PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_.target_list_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; {PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_.where_clause_), _Internal::kHasBitsOffset + 1, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; {PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_.from_clause_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; {PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_.returning_list_), -1, 4, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; {PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_.with_clause_), _Internal::kHasBitsOffset + 2, 5, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::WithClause>()}, }}, {{ }}, }; ::uint8_t* UpdateStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.UpdateStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node target_list = 2 [json_name = "targetList"]; for (unsigned i = 0, n = static_cast(this->_internal_target_list_size()); i < n; i++) { const auto& repfield = this->_internal_target_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::where_clause(this), _Internal::where_clause(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; for (unsigned i = 0, n = static_cast(this->_internal_from_clause_size()); i < n; i++) { const auto& repfield = this->_internal_from_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; for (unsigned i = 0, n = static_cast(this->_internal_returning_list_size()); i < n; i++) { const auto& repfield = this->_internal_returning_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::with_clause(this), _Internal::with_clause(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_target_list()) { total_size += ::google::protobuf::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->_internal_from_clause()) { total_size += ::google::protobuf::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->_internal_returning_list()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.where_clause_); } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.with_clause_); } } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData UpdateStmt::_class_data_ = { UpdateStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* UpdateStmt::GetClassData() const { return &_class_data_; } void UpdateStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.UpdateStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_target_list()->MergeFrom( from._internal_target_list()); _this->_internal_mutable_from_clause()->MergeFrom( from._internal_from_clause()); _this->_internal_mutable_returning_list()->MergeFrom( from._internal_returning_list()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_where_clause()->::pg_query::Node::MergeFrom( from._internal_where_clause()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_with_clause()->::pg_query::WithClause::MergeFrom( from._internal_with_clause()); } } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void UpdateStmt::CopyFrom(const UpdateStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.UpdateStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool UpdateStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* UpdateStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void UpdateStmt::InternalSwap(UpdateStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.target_list_.InternalSwap(&other->_impl_.target_list_); _impl_.from_clause_.InternalSwap(&other->_impl_.from_clause_); _impl_.returning_list_.InternalSwap(&other->_impl_.returning_list_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_.with_clause_) + sizeof(UpdateStmt::_impl_.with_clause_) - PROTOBUF_FIELD_OFFSET(UpdateStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata UpdateStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[145]); } // =================================================================== class MergeStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const MergeStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& source_relation(const MergeStmt* msg); static void set_has_source_relation(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& join_condition(const MergeStmt* msg); static void set_has_join_condition(HasBits* has_bits) { (*has_bits)[0] |= 4u; } static const ::pg_query::WithClause& with_clause(const MergeStmt* msg); static void set_has_with_clause(HasBits* has_bits) { (*has_bits)[0] |= 8u; } }; const ::pg_query::RangeVar& MergeStmt::_Internal::relation(const MergeStmt* msg) { return *msg->_impl_.relation_; } const ::pg_query::Node& MergeStmt::_Internal::source_relation(const MergeStmt* msg) { return *msg->_impl_.source_relation_; } const ::pg_query::Node& MergeStmt::_Internal::join_condition(const MergeStmt* msg) { return *msg->_impl_.join_condition_; } const ::pg_query::WithClause& MergeStmt::_Internal::with_clause(const MergeStmt* msg) { return *msg->_impl_.with_clause_; } MergeStmt::MergeStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.MergeStmt) } inline PROTOBUF_NDEBUG_INLINE MergeStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, merge_when_clauses_{visibility, arena, from.merge_when_clauses_}, returning_list_{visibility, arena, from.returning_list_} {} MergeStmt::MergeStmt( ::google::protobuf::Arena* arena, const MergeStmt& from) : ::google::protobuf::Message(arena) { MergeStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.source_relation_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.source_relation_) : nullptr; _impl_.join_condition_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.join_condition_) : nullptr; _impl_.with_clause_ = (cached_has_bits & 0x00000008u) ? CreateMaybeMessage<::pg_query::WithClause>(arena, *from._impl_.with_clause_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.MergeStmt) } inline PROTOBUF_NDEBUG_INLINE MergeStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, merge_when_clauses_{visibility, arena}, returning_list_{visibility, arena} {} inline void MergeStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, with_clause_) - offsetof(Impl_, relation_) + sizeof(Impl_::with_clause_)); } MergeStmt::~MergeStmt() { // @@protoc_insertion_point(destructor:pg_query.MergeStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void MergeStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.relation_; delete _impl_.source_relation_; delete _impl_.join_condition_; delete _impl_.with_clause_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void MergeStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.MergeStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.merge_when_clauses_.Clear(); _impl_.returning_list_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.source_relation_ != nullptr); _impl_.source_relation_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.join_condition_ != nullptr); _impl_.join_condition_->Clear(); } if (cached_has_bits & 0x00000008u) { ABSL_DCHECK(_impl_.with_clause_ != nullptr); _impl_.with_clause_->Clear(); } } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* MergeStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 6, 0, 2> MergeStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 6, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_MergeStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_.relation_)}}, // .pg_query.Node source_relation = 2 [json_name = "sourceRelation"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_.source_relation_)}}, // .pg_query.Node join_condition = 3 [json_name = "joinCondition"]; {::_pbi::TcParser::FastMtS1, {26, 2, 2, PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_.join_condition_)}}, // repeated .pg_query.Node merge_when_clauses = 4 [json_name = "mergeWhenClauses"]; {::_pbi::TcParser::FastMtR1, {34, 63, 3, PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_.merge_when_clauses_)}}, // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; {::_pbi::TcParser::FastMtR1, {42, 63, 4, PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_.returning_list_)}}, // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; {::_pbi::TcParser::FastMtS1, {50, 3, 5, PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_.with_clause_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node source_relation = 2 [json_name = "sourceRelation"]; {PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_.source_relation_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node join_condition = 3 [json_name = "joinCondition"]; {PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_.join_condition_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node merge_when_clauses = 4 [json_name = "mergeWhenClauses"]; {PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_.merge_when_clauses_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; {PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_.returning_list_), -1, 4, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; {PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_.with_clause_), _Internal::kHasBitsOffset + 3, 5, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::WithClause>()}, }}, {{ }}, }; ::uint8_t* MergeStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.MergeStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // .pg_query.Node source_relation = 2 [json_name = "sourceRelation"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::source_relation(this), _Internal::source_relation(this).GetCachedSize(), target, stream); } // .pg_query.Node join_condition = 3 [json_name = "joinCondition"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::join_condition(this), _Internal::join_condition(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node merge_when_clauses = 4 [json_name = "mergeWhenClauses"]; for (unsigned i = 0, n = static_cast(this->_internal_merge_when_clauses_size()); i < n; i++) { const auto& repfield = this->_internal_merge_when_clauses().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; for (unsigned i = 0, n = static_cast(this->_internal_returning_list_size()); i < n; i++) { const auto& repfield = this->_internal_returning_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; if (cached_has_bits & 0x00000008u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::with_clause(this), _Internal::with_clause(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.MergeStmt) return target; } ::size_t MergeStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.MergeStmt) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node merge_when_clauses = 4 [json_name = "mergeWhenClauses"]; total_size += 1UL * this->_internal_merge_when_clauses_size(); for (const auto& msg : this->_internal_merge_when_clauses()) { total_size += ::google::protobuf::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->_internal_returning_list()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.Node source_relation = 2 [json_name = "sourceRelation"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.source_relation_); } // .pg_query.Node join_condition = 3 [json_name = "joinCondition"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.join_condition_); } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; if (cached_has_bits & 0x00000008u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.with_clause_); } } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData MergeStmt::_class_data_ = { MergeStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* MergeStmt::GetClassData() const { return &_class_data_; } void MergeStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.MergeStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_merge_when_clauses()->MergeFrom( from._internal_merge_when_clauses()); _this->_internal_mutable_returning_list()->MergeFrom( from._internal_returning_list()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_source_relation()->::pg_query::Node::MergeFrom( from._internal_source_relation()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_join_condition()->::pg_query::Node::MergeFrom( from._internal_join_condition()); } if (cached_has_bits & 0x00000008u) { _this->_internal_mutable_with_clause()->::pg_query::WithClause::MergeFrom( from._internal_with_clause()); } } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void MergeStmt::CopyFrom(const MergeStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.MergeStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool MergeStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* MergeStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void MergeStmt::InternalSwap(MergeStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.merge_when_clauses_.InternalSwap(&other->_impl_.merge_when_clauses_); _impl_.returning_list_.InternalSwap(&other->_impl_.returning_list_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_.with_clause_) + sizeof(MergeStmt::_impl_.with_clause_) - PROTOBUF_FIELD_OFFSET(MergeStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata MergeStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[146]); } // =================================================================== class SelectStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_._has_bits_); static const ::pg_query::IntoClause& into_clause(const SelectStmt* msg); static void set_has_into_clause(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& where_clause(const SelectStmt* msg); static void set_has_where_clause(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& having_clause(const SelectStmt* msg); static void set_has_having_clause(HasBits* has_bits) { (*has_bits)[0] |= 4u; } static const ::pg_query::Node& limit_offset(const SelectStmt* msg); static void set_has_limit_offset(HasBits* has_bits) { (*has_bits)[0] |= 8u; } static const ::pg_query::Node& limit_count(const SelectStmt* msg); static void set_has_limit_count(HasBits* has_bits) { (*has_bits)[0] |= 16u; } static const ::pg_query::WithClause& with_clause(const SelectStmt* msg); static void set_has_with_clause(HasBits* has_bits) { (*has_bits)[0] |= 32u; } static const ::pg_query::SelectStmt& larg(const SelectStmt* msg); static void set_has_larg(HasBits* has_bits) { (*has_bits)[0] |= 64u; } static const ::pg_query::SelectStmt& rarg(const SelectStmt* msg); static void set_has_rarg(HasBits* has_bits) { (*has_bits)[0] |= 128u; } }; const ::pg_query::IntoClause& SelectStmt::_Internal::into_clause(const SelectStmt* msg) { return *msg->_impl_.into_clause_; } const ::pg_query::Node& SelectStmt::_Internal::where_clause(const SelectStmt* msg) { return *msg->_impl_.where_clause_; } const ::pg_query::Node& SelectStmt::_Internal::having_clause(const SelectStmt* msg) { return *msg->_impl_.having_clause_; } const ::pg_query::Node& SelectStmt::_Internal::limit_offset(const SelectStmt* msg) { return *msg->_impl_.limit_offset_; } const ::pg_query::Node& SelectStmt::_Internal::limit_count(const SelectStmt* msg) { return *msg->_impl_.limit_count_; } const ::pg_query::WithClause& SelectStmt::_Internal::with_clause(const SelectStmt* msg) { return *msg->_impl_.with_clause_; } const ::pg_query::SelectStmt& SelectStmt::_Internal::larg(const SelectStmt* msg) { return *msg->_impl_.larg_; } const ::pg_query::SelectStmt& SelectStmt::_Internal::rarg(const SelectStmt* msg) { return *msg->_impl_.rarg_; } SelectStmt::SelectStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SelectStmt) } inline PROTOBUF_NDEBUG_INLINE SelectStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, distinct_clause_{visibility, arena, from.distinct_clause_}, target_list_{visibility, arena, from.target_list_}, from_clause_{visibility, arena, from.from_clause_}, group_clause_{visibility, arena, from.group_clause_}, window_clause_{visibility, arena, from.window_clause_}, values_lists_{visibility, arena, from.values_lists_}, sort_clause_{visibility, arena, from.sort_clause_}, locking_clause_{visibility, arena, from.locking_clause_} {} SelectStmt::SelectStmt( ::google::protobuf::Arena* arena, const SelectStmt& from) : ::google::protobuf::Message(arena) { SelectStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.into_clause_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::IntoClause>(arena, *from._impl_.into_clause_) : nullptr; _impl_.where_clause_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.where_clause_) : nullptr; _impl_.having_clause_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.having_clause_) : nullptr; _impl_.limit_offset_ = (cached_has_bits & 0x00000008u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.limit_offset_) : nullptr; _impl_.limit_count_ = (cached_has_bits & 0x00000010u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.limit_count_) : nullptr; _impl_.with_clause_ = (cached_has_bits & 0x00000020u) ? CreateMaybeMessage<::pg_query::WithClause>(arena, *from._impl_.with_clause_) : nullptr; _impl_.larg_ = (cached_has_bits & 0x00000040u) ? CreateMaybeMessage<::pg_query::SelectStmt>(arena, *from._impl_.larg_) : nullptr; _impl_.rarg_ = (cached_has_bits & 0x00000080u) ? CreateMaybeMessage<::pg_query::SelectStmt>(arena, *from._impl_.rarg_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, group_distinct_), reinterpret_cast(&from._impl_) + offsetof(Impl_, group_distinct_), offsetof(Impl_, op_) - offsetof(Impl_, group_distinct_) + sizeof(Impl_::op_)); // @@protoc_insertion_point(copy_constructor:pg_query.SelectStmt) } inline PROTOBUF_NDEBUG_INLINE SelectStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, distinct_clause_{visibility, arena}, target_list_{visibility, arena}, from_clause_{visibility, arena}, group_clause_{visibility, arena}, window_clause_{visibility, arena}, values_lists_{visibility, arena}, sort_clause_{visibility, arena}, locking_clause_{visibility, arena} {} inline void SelectStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, into_clause_), 0, offsetof(Impl_, op_) - offsetof(Impl_, into_clause_) + sizeof(Impl_::op_)); } SelectStmt::~SelectStmt() { // @@protoc_insertion_point(destructor:pg_query.SelectStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void SelectStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.into_clause_; delete _impl_.where_clause_; delete _impl_.having_clause_; delete _impl_.limit_offset_; delete _impl_.limit_count_; delete _impl_.with_clause_; delete _impl_.larg_; delete _impl_.rarg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void SelectStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SelectStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.distinct_clause_.Clear(); _impl_.target_list_.Clear(); _impl_.from_clause_.Clear(); _impl_.group_clause_.Clear(); _impl_.window_clause_.Clear(); _impl_.values_lists_.Clear(); _impl_.sort_clause_.Clear(); _impl_.locking_clause_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x000000ffu) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.into_clause_ != nullptr); _impl_.into_clause_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.where_clause_ != nullptr); _impl_.where_clause_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.having_clause_ != nullptr); _impl_.having_clause_->Clear(); } if (cached_has_bits & 0x00000008u) { ABSL_DCHECK(_impl_.limit_offset_ != nullptr); _impl_.limit_offset_->Clear(); } if (cached_has_bits & 0x00000010u) { ABSL_DCHECK(_impl_.limit_count_ != nullptr); _impl_.limit_count_->Clear(); } if (cached_has_bits & 0x00000020u) { ABSL_DCHECK(_impl_.with_clause_ != nullptr); _impl_.with_clause_->Clear(); } if (cached_has_bits & 0x00000040u) { ABSL_DCHECK(_impl_.larg_ != nullptr); _impl_.larg_->Clear(); } if (cached_has_bits & 0x00000080u) { ABSL_DCHECK(_impl_.rarg_ != nullptr); _impl_.rarg_->Clear(); } } ::memset(&_impl_.group_distinct_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.op_) - reinterpret_cast(&_impl_.group_distinct_)) + sizeof(_impl_.op_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* SelectStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<5, 20, 16, 0, 2> SelectStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_._has_bits_), 0, // no _extensions_ 20, 248, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4293918720, // skipmap offsetof(decltype(_table_), field_entries), 20, // num_field_entries 16, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_SelectStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node distinct_clause = 1 [json_name = "distinctClause"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.distinct_clause_)}}, // .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; {::_pbi::TcParser::FastMtS1, {18, 0, 1, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.into_clause_)}}, // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; {::_pbi::TcParser::FastMtR1, {26, 63, 2, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.target_list_)}}, // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; {::_pbi::TcParser::FastMtR1, {34, 63, 3, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.from_clause_)}}, // .pg_query.Node where_clause = 5 [json_name = "whereClause"]; {::_pbi::TcParser::FastMtS1, {42, 1, 4, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.where_clause_)}}, // repeated .pg_query.Node group_clause = 6 [json_name = "groupClause"]; {::_pbi::TcParser::FastMtR1, {50, 63, 5, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.group_clause_)}}, // bool group_distinct = 7 [json_name = "groupDistinct"]; {::_pbi::TcParser::SingularVarintNoZag1(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.group_distinct_)}}, // .pg_query.Node having_clause = 8 [json_name = "havingClause"]; {::_pbi::TcParser::FastMtS1, {66, 2, 6, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.having_clause_)}}, // repeated .pg_query.Node window_clause = 9 [json_name = "windowClause"]; {::_pbi::TcParser::FastMtR1, {74, 63, 7, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.window_clause_)}}, // repeated .pg_query.Node values_lists = 10 [json_name = "valuesLists"]; {::_pbi::TcParser::FastMtR1, {82, 63, 8, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.values_lists_)}}, // repeated .pg_query.Node sort_clause = 11 [json_name = "sortClause"]; {::_pbi::TcParser::FastMtR1, {90, 63, 9, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.sort_clause_)}}, // .pg_query.Node limit_offset = 12 [json_name = "limitOffset"]; {::_pbi::TcParser::FastMtS1, {98, 3, 10, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.limit_offset_)}}, // .pg_query.Node limit_count = 13 [json_name = "limitCount"]; {::_pbi::TcParser::FastMtS1, {106, 4, 11, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.limit_count_)}}, // .pg_query.LimitOption limit_option = 14 [json_name = "limitOption"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SelectStmt, _impl_.limit_option_), 63>(), {112, 63, 0, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.limit_option_)}}, // repeated .pg_query.Node locking_clause = 15 [json_name = "lockingClause"]; {::_pbi::TcParser::FastMtR1, {122, 63, 12, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.locking_clause_)}}, // .pg_query.WithClause with_clause = 16 [json_name = "withClause"]; {::_pbi::TcParser::FastMtS2, {386, 5, 13, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.with_clause_)}}, // .pg_query.SetOperation op = 17 [json_name = "op"]; {::_pbi::TcParser::FastV32S2, {392, 63, 0, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.op_)}}, // bool all = 18 [json_name = "all"]; {::_pbi::TcParser::FastV8S2, {400, 63, 0, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.all_)}}, // .pg_query.SelectStmt larg = 19 [json_name = "larg"]; {::_pbi::TcParser::FastMtS2, {410, 6, 14, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.larg_)}}, // .pg_query.SelectStmt rarg = 20 [json_name = "rarg"]; {::_pbi::TcParser::FastMtS2, {418, 7, 15, PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.rarg_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node distinct_clause = 1 [json_name = "distinctClause"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.distinct_clause_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.into_clause_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.target_list_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.from_clause_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node where_clause = 5 [json_name = "whereClause"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.where_clause_), _Internal::kHasBitsOffset + 1, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node group_clause = 6 [json_name = "groupClause"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.group_clause_), -1, 5, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool group_distinct = 7 [json_name = "groupDistinct"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.group_distinct_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.Node having_clause = 8 [json_name = "havingClause"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.having_clause_), _Internal::kHasBitsOffset + 2, 6, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node window_clause = 9 [json_name = "windowClause"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.window_clause_), -1, 7, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node values_lists = 10 [json_name = "valuesLists"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.values_lists_), -1, 8, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node sort_clause = 11 [json_name = "sortClause"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.sort_clause_), -1, 9, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node limit_offset = 12 [json_name = "limitOffset"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.limit_offset_), _Internal::kHasBitsOffset + 3, 10, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node limit_count = 13 [json_name = "limitCount"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.limit_count_), _Internal::kHasBitsOffset + 4, 11, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.LimitOption limit_option = 14 [json_name = "limitOption"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.limit_option_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node locking_clause = 15 [json_name = "lockingClause"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.locking_clause_), -1, 12, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.WithClause with_clause = 16 [json_name = "withClause"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.with_clause_), _Internal::kHasBitsOffset + 5, 13, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SetOperation op = 17 [json_name = "op"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.op_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool all = 18 [json_name = "all"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.all_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.SelectStmt larg = 19 [json_name = "larg"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.larg_), _Internal::kHasBitsOffset + 6, 14, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.SelectStmt rarg = 20 [json_name = "rarg"]; {PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.rarg_), _Internal::kHasBitsOffset + 7, 15, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::IntoClause>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::WithClause>()}, {::_pbi::TcParser::GetTable<::pg_query::SelectStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::SelectStmt>()}, }}, {{ }}, }; ::uint8_t* SelectStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SelectStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node distinct_clause = 1 [json_name = "distinctClause"]; for (unsigned i = 0, n = static_cast(this->_internal_distinct_clause_size()); i < n; i++) { const auto& repfield = this->_internal_distinct_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::into_clause(this), _Internal::into_clause(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; for (unsigned i = 0, n = static_cast(this->_internal_target_list_size()); i < n; i++) { const auto& repfield = this->_internal_target_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; for (unsigned i = 0, n = static_cast(this->_internal_from_clause_size()); i < n; i++) { const auto& repfield = this->_internal_from_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node where_clause = 5 [json_name = "whereClause"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::where_clause(this), _Internal::where_clause(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node group_clause = 6 [json_name = "groupClause"]; for (unsigned i = 0, n = static_cast(this->_internal_group_clause_size()); i < n; i++) { const auto& repfield = this->_internal_group_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // bool group_distinct = 7 [json_name = "groupDistinct"]; if (this->_internal_group_distinct() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 7, this->_internal_group_distinct(), target); } // .pg_query.Node having_clause = 8 [json_name = "havingClause"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 8, _Internal::having_clause(this), _Internal::having_clause(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node window_clause = 9 [json_name = "windowClause"]; for (unsigned i = 0, n = static_cast(this->_internal_window_clause_size()); i < n; i++) { const auto& repfield = this->_internal_window_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(9, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node values_lists = 10 [json_name = "valuesLists"]; for (unsigned i = 0, n = static_cast(this->_internal_values_lists_size()); i < n; i++) { const auto& repfield = this->_internal_values_lists().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(10, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node sort_clause = 11 [json_name = "sortClause"]; for (unsigned i = 0, n = static_cast(this->_internal_sort_clause_size()); i < n; i++) { const auto& repfield = this->_internal_sort_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(11, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node limit_offset = 12 [json_name = "limitOffset"]; if (cached_has_bits & 0x00000008u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 12, _Internal::limit_offset(this), _Internal::limit_offset(this).GetCachedSize(), target, stream); } // .pg_query.Node limit_count = 13 [json_name = "limitCount"]; if (cached_has_bits & 0x00000010u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 13, _Internal::limit_count(this), _Internal::limit_count(this).GetCachedSize(), target, stream); } // .pg_query.LimitOption limit_option = 14 [json_name = "limitOption"]; if (this->_internal_limit_option() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 14, this->_internal_limit_option(), target); } // repeated .pg_query.Node locking_clause = 15 [json_name = "lockingClause"]; for (unsigned i = 0, n = static_cast(this->_internal_locking_clause_size()); i < n; i++) { const auto& repfield = this->_internal_locking_clause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(15, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.WithClause with_clause = 16 [json_name = "withClause"]; if (cached_has_bits & 0x00000020u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 16, _Internal::with_clause(this), _Internal::with_clause(this).GetCachedSize(), target, stream); } // .pg_query.SetOperation op = 17 [json_name = "op"]; if (this->_internal_op() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 17, this->_internal_op(), target); } // bool all = 18 [json_name = "all"]; if (this->_internal_all() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 18, this->_internal_all(), target); } // .pg_query.SelectStmt larg = 19 [json_name = "larg"]; if (cached_has_bits & 0x00000040u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 19, _Internal::larg(this), _Internal::larg(this).GetCachedSize(), target, stream); } // .pg_query.SelectStmt rarg = 20 [json_name = "rarg"]; if (cached_has_bits & 0x00000080u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 20, _Internal::rarg(this), _Internal::rarg(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_distinct_clause()) { total_size += ::google::protobuf::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->_internal_target_list()) { total_size += ::google::protobuf::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->_internal_from_clause()) { total_size += ::google::protobuf::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->_internal_group_clause()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node window_clause = 9 [json_name = "windowClause"]; total_size += 1UL * this->_internal_window_clause_size(); for (const auto& msg : this->_internal_window_clause()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node values_lists = 10 [json_name = "valuesLists"]; total_size += 1UL * this->_internal_values_lists_size(); for (const auto& msg : this->_internal_values_lists()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node sort_clause = 11 [json_name = "sortClause"]; total_size += 1UL * this->_internal_sort_clause_size(); for (const auto& msg : this->_internal_sort_clause()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node locking_clause = 15 [json_name = "lockingClause"]; total_size += 1UL * this->_internal_locking_clause_size(); for (const auto& msg : this->_internal_locking_clause()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x000000ffu) { // .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.into_clause_); } // .pg_query.Node where_clause = 5 [json_name = "whereClause"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.where_clause_); } // .pg_query.Node having_clause = 8 [json_name = "havingClause"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.having_clause_); } // .pg_query.Node limit_offset = 12 [json_name = "limitOffset"]; if (cached_has_bits & 0x00000008u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.limit_offset_); } // .pg_query.Node limit_count = 13 [json_name = "limitCount"]; if (cached_has_bits & 0x00000010u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.limit_count_); } // .pg_query.WithClause with_clause = 16 [json_name = "withClause"]; if (cached_has_bits & 0x00000020u) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.with_clause_); } // .pg_query.SelectStmt larg = 19 [json_name = "larg"]; if (cached_has_bits & 0x00000040u) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.larg_); } // .pg_query.SelectStmt rarg = 20 [json_name = "rarg"]; if (cached_has_bits & 0x00000080u) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.rarg_); } } // bool group_distinct = 7 [json_name = "groupDistinct"]; if (this->_internal_group_distinct() != 0) { total_size += 2; } // bool all = 18 [json_name = "all"]; if (this->_internal_all() != 0) { total_size += 3; } // .pg_query.LimitOption limit_option = 14 [json_name = "limitOption"]; if (this->_internal_limit_option() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_limit_option()); } // .pg_query.SetOperation op = 17 [json_name = "op"]; if (this->_internal_op() != 0) { total_size += 2 + ::_pbi::WireFormatLite::EnumSize(this->_internal_op()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData SelectStmt::_class_data_ = { SelectStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* SelectStmt::GetClassData() const { return &_class_data_; } void SelectStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SelectStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_distinct_clause()->MergeFrom( from._internal_distinct_clause()); _this->_internal_mutable_target_list()->MergeFrom( from._internal_target_list()); _this->_internal_mutable_from_clause()->MergeFrom( from._internal_from_clause()); _this->_internal_mutable_group_clause()->MergeFrom( from._internal_group_clause()); _this->_internal_mutable_window_clause()->MergeFrom( from._internal_window_clause()); _this->_internal_mutable_values_lists()->MergeFrom( from._internal_values_lists()); _this->_internal_mutable_sort_clause()->MergeFrom( from._internal_sort_clause()); _this->_internal_mutable_locking_clause()->MergeFrom( from._internal_locking_clause()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x000000ffu) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_into_clause()->::pg_query::IntoClause::MergeFrom( from._internal_into_clause()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_where_clause()->::pg_query::Node::MergeFrom( from._internal_where_clause()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_having_clause()->::pg_query::Node::MergeFrom( from._internal_having_clause()); } if (cached_has_bits & 0x00000008u) { _this->_internal_mutable_limit_offset()->::pg_query::Node::MergeFrom( from._internal_limit_offset()); } if (cached_has_bits & 0x00000010u) { _this->_internal_mutable_limit_count()->::pg_query::Node::MergeFrom( from._internal_limit_count()); } if (cached_has_bits & 0x00000020u) { _this->_internal_mutable_with_clause()->::pg_query::WithClause::MergeFrom( from._internal_with_clause()); } if (cached_has_bits & 0x00000040u) { _this->_internal_mutable_larg()->::pg_query::SelectStmt::MergeFrom( from._internal_larg()); } if (cached_has_bits & 0x00000080u) { _this->_internal_mutable_rarg()->::pg_query::SelectStmt::MergeFrom( from._internal_rarg()); } } if (from._internal_group_distinct() != 0) { _this->_internal_set_group_distinct(from._internal_group_distinct()); } if (from._internal_all() != 0) { _this->_internal_set_all(from._internal_all()); } if (from._internal_limit_option() != 0) { _this->_internal_set_limit_option(from._internal_limit_option()); } if (from._internal_op() != 0) { _this->_internal_set_op(from._internal_op()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void SelectStmt::CopyFrom(const SelectStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SelectStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool SelectStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* SelectStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void SelectStmt::InternalSwap(SelectStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.distinct_clause_.InternalSwap(&other->_impl_.distinct_clause_); _impl_.target_list_.InternalSwap(&other->_impl_.target_list_); _impl_.from_clause_.InternalSwap(&other->_impl_.from_clause_); _impl_.group_clause_.InternalSwap(&other->_impl_.group_clause_); _impl_.window_clause_.InternalSwap(&other->_impl_.window_clause_); _impl_.values_lists_.InternalSwap(&other->_impl_.values_lists_); _impl_.sort_clause_.InternalSwap(&other->_impl_.sort_clause_); _impl_.locking_clause_.InternalSwap(&other->_impl_.locking_clause_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.op_) + sizeof(SelectStmt::_impl_.op_) - PROTOBUF_FIELD_OFFSET(SelectStmt, _impl_.into_clause_)>( reinterpret_cast(&_impl_.into_clause_), reinterpret_cast(&other->_impl_.into_clause_)); } ::google::protobuf::Metadata SelectStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[147]); } // =================================================================== class SetOperationStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_._has_bits_); static const ::pg_query::Node& larg(const SetOperationStmt* msg); static void set_has_larg(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& rarg(const SetOperationStmt* msg); static void set_has_rarg(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& SetOperationStmt::_Internal::larg(const SetOperationStmt* msg) { return *msg->_impl_.larg_; } const ::pg_query::Node& SetOperationStmt::_Internal::rarg(const SetOperationStmt* msg) { return *msg->_impl_.rarg_; } SetOperationStmt::SetOperationStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SetOperationStmt) } inline PROTOBUF_NDEBUG_INLINE SetOperationStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, col_types_{visibility, arena, from.col_types_}, col_typmods_{visibility, arena, from.col_typmods_}, col_collations_{visibility, arena, from.col_collations_}, group_clauses_{visibility, arena, from.group_clauses_} {} SetOperationStmt::SetOperationStmt( ::google::protobuf::Arena* arena, const SetOperationStmt& from) : ::google::protobuf::Message(arena) { SetOperationStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.larg_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.larg_) : nullptr; _impl_.rarg_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.rarg_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, op_), reinterpret_cast(&from._impl_) + offsetof(Impl_, op_), offsetof(Impl_, all_) - offsetof(Impl_, op_) + sizeof(Impl_::all_)); // @@protoc_insertion_point(copy_constructor:pg_query.SetOperationStmt) } inline PROTOBUF_NDEBUG_INLINE SetOperationStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, col_types_{visibility, arena}, col_typmods_{visibility, arena}, col_collations_{visibility, arena}, group_clauses_{visibility, arena} {} inline void SetOperationStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, larg_), 0, offsetof(Impl_, all_) - offsetof(Impl_, larg_) + sizeof(Impl_::all_)); } SetOperationStmt::~SetOperationStmt() { // @@protoc_insertion_point(destructor:pg_query.SetOperationStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void SetOperationStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.larg_; delete _impl_.rarg_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void SetOperationStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SetOperationStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.col_types_.Clear(); _impl_.col_typmods_.Clear(); _impl_.col_collations_.Clear(); _impl_.group_clauses_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.larg_ != nullptr); _impl_.larg_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.rarg_ != nullptr); _impl_.rarg_->Clear(); } } ::memset(&_impl_.op_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.all_) - reinterpret_cast(&_impl_.op_)) + sizeof(_impl_.all_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* SetOperationStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 6, 0, 2> SetOperationStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_._has_bits_), 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 6, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_SetOperationStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node group_clauses = 8 [json_name = "groupClauses"]; {::_pbi::TcParser::FastMtR1, {66, 63, 5, PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.group_clauses_)}}, // .pg_query.SetOperation op = 1 [json_name = "op"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SetOperationStmt, _impl_.op_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.op_)}}, // bool all = 2 [json_name = "all"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.all_)}}, // .pg_query.Node larg = 3 [json_name = "larg"]; {::_pbi::TcParser::FastMtS1, {26, 0, 0, PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.larg_)}}, // .pg_query.Node rarg = 4 [json_name = "rarg"]; {::_pbi::TcParser::FastMtS1, {34, 1, 1, PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.rarg_)}}, // repeated .pg_query.Node col_types = 5 [json_name = "colTypes"]; {::_pbi::TcParser::FastMtR1, {42, 63, 2, PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.col_types_)}}, // repeated .pg_query.Node col_typmods = 6 [json_name = "colTypmods"]; {::_pbi::TcParser::FastMtR1, {50, 63, 3, PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.col_typmods_)}}, // repeated .pg_query.Node col_collations = 7 [json_name = "colCollations"]; {::_pbi::TcParser::FastMtR1, {58, 63, 4, PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.col_collations_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.SetOperation op = 1 [json_name = "op"]; {PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.op_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool all = 2 [json_name = "all"]; {PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.all_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.Node larg = 3 [json_name = "larg"]; {PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.larg_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node rarg = 4 [json_name = "rarg"]; {PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.rarg_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node col_types = 5 [json_name = "colTypes"]; {PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.col_types_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node col_typmods = 6 [json_name = "colTypmods"]; {PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.col_typmods_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node col_collations = 7 [json_name = "colCollations"]; {PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.col_collations_), -1, 4, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node group_clauses = 8 [json_name = "groupClauses"]; {PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.group_clauses_), -1, 5, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* SetOperationStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SetOperationStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.SetOperation op = 1 [json_name = "op"]; if (this->_internal_op() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_op(), target); } // bool all = 2 [json_name = "all"]; if (this->_internal_all() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_all(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node larg = 3 [json_name = "larg"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::larg(this), _Internal::larg(this).GetCachedSize(), target, stream); } // .pg_query.Node rarg = 4 [json_name = "rarg"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::rarg(this), _Internal::rarg(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node col_types = 5 [json_name = "colTypes"]; for (unsigned i = 0, n = static_cast(this->_internal_col_types_size()); i < n; i++) { const auto& repfield = this->_internal_col_types().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node col_typmods = 6 [json_name = "colTypmods"]; for (unsigned i = 0, n = static_cast(this->_internal_col_typmods_size()); i < n; i++) { const auto& repfield = this->_internal_col_typmods().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node col_collations = 7 [json_name = "colCollations"]; for (unsigned i = 0, n = static_cast(this->_internal_col_collations_size()); i < n; i++) { const auto& repfield = this->_internal_col_collations().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node group_clauses = 8 [json_name = "groupClauses"]; for (unsigned i = 0, n = static_cast(this->_internal_group_clauses_size()); i < n; i++) { const auto& repfield = this->_internal_group_clauses().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(8, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_col_types()) { total_size += ::google::protobuf::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->_internal_col_typmods()) { total_size += ::google::protobuf::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->_internal_col_collations()) { total_size += ::google::protobuf::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->_internal_group_clauses()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node larg = 3 [json_name = "larg"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.larg_); } // .pg_query.Node rarg = 4 [json_name = "rarg"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.rarg_); } } // .pg_query.SetOperation op = 1 [json_name = "op"]; if (this->_internal_op() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_op()); } // bool all = 2 [json_name = "all"]; if (this->_internal_all() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData SetOperationStmt::_class_data_ = { SetOperationStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* SetOperationStmt::GetClassData() const { return &_class_data_; } void SetOperationStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SetOperationStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_col_types()->MergeFrom( from._internal_col_types()); _this->_internal_mutable_col_typmods()->MergeFrom( from._internal_col_typmods()); _this->_internal_mutable_col_collations()->MergeFrom( from._internal_col_collations()); _this->_internal_mutable_group_clauses()->MergeFrom( from._internal_group_clauses()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_larg()->::pg_query::Node::MergeFrom( from._internal_larg()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_rarg()->::pg_query::Node::MergeFrom( from._internal_rarg()); } } if (from._internal_op() != 0) { _this->_internal_set_op(from._internal_op()); } if (from._internal_all() != 0) { _this->_internal_set_all(from._internal_all()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void SetOperationStmt::CopyFrom(const SetOperationStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SetOperationStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool SetOperationStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* SetOperationStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void SetOperationStmt::InternalSwap(SetOperationStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.col_types_.InternalSwap(&other->_impl_.col_types_); _impl_.col_typmods_.InternalSwap(&other->_impl_.col_typmods_); _impl_.col_collations_.InternalSwap(&other->_impl_.col_collations_); _impl_.group_clauses_.InternalSwap(&other->_impl_.group_clauses_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.all_) + sizeof(SetOperationStmt::_impl_.all_) - PROTOBUF_FIELD_OFFSET(SetOperationStmt, _impl_.larg_)>( reinterpret_cast(&_impl_.larg_), reinterpret_cast(&other->_impl_.larg_)); } ::google::protobuf::Metadata SetOperationStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[148]); } // =================================================================== class ReturnStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(ReturnStmt, _impl_._has_bits_); static const ::pg_query::Node& returnval(const ReturnStmt* msg); static void set_has_returnval(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& ReturnStmt::_Internal::returnval(const ReturnStmt* msg) { return *msg->_impl_.returnval_; } ReturnStmt::ReturnStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ReturnStmt) } inline PROTOBUF_NDEBUG_INLINE ReturnStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} ReturnStmt::ReturnStmt( ::google::protobuf::Arena* arena, const ReturnStmt& from) : ::google::protobuf::Message(arena) { ReturnStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.returnval_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.returnval_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.ReturnStmt) } inline PROTOBUF_NDEBUG_INLINE ReturnStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void ReturnStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.returnval_ = {}; } ReturnStmt::~ReturnStmt() { // @@protoc_insertion_point(destructor:pg_query.ReturnStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ReturnStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.returnval_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void ReturnStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ReturnStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.returnval_ != nullptr); _impl_.returnval_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ReturnStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 1, 0, 2> ReturnStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(ReturnStmt, _impl_._has_bits_), 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ReturnStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.Node returnval = 1 [json_name = "returnval"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(ReturnStmt, _impl_.returnval_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node returnval = 1 [json_name = "returnval"]; {PROTOBUF_FIELD_OFFSET(ReturnStmt, _impl_.returnval_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* ReturnStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ReturnStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node returnval = 1 [json_name = "returnval"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::returnval(this), _Internal::returnval(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ReturnStmt) return target; } ::size_t ReturnStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ReturnStmt) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node returnval = 1 [json_name = "returnval"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.returnval_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ReturnStmt::_class_data_ = { ReturnStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ReturnStmt::GetClassData() const { return &_class_data_; } void ReturnStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ReturnStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_returnval()->::pg_query::Node::MergeFrom( from._internal_returnval()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ReturnStmt::CopyFrom(const ReturnStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ReturnStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ReturnStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* ReturnStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void ReturnStmt::InternalSwap(ReturnStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); swap(_impl_.returnval_, other->_impl_.returnval_); } ::google::protobuf::Metadata ReturnStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[149]); } // =================================================================== class PLAssignStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(PLAssignStmt, _impl_._has_bits_); static const ::pg_query::SelectStmt& val(const PLAssignStmt* msg); static void set_has_val(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::SelectStmt& PLAssignStmt::_Internal::val(const PLAssignStmt* msg) { return *msg->_impl_.val_; } PLAssignStmt::PLAssignStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PLAssignStmt) } inline PROTOBUF_NDEBUG_INLINE PLAssignStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, indirection_{visibility, arena, from.indirection_}, name_(arena, from.name_) {} PLAssignStmt::PLAssignStmt( ::google::protobuf::Arena* arena, const PLAssignStmt& from) : ::google::protobuf::Message(arena) { PLAssignStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.val_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::SelectStmt>(arena, *from._impl_.val_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, nnames_), reinterpret_cast(&from._impl_) + offsetof(Impl_, nnames_), offsetof(Impl_, location_) - offsetof(Impl_, nnames_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.PLAssignStmt) } inline PROTOBUF_NDEBUG_INLINE PLAssignStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, indirection_{visibility, arena}, name_(arena) {} inline void PLAssignStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, val_), 0, offsetof(Impl_, location_) - offsetof(Impl_, val_) + sizeof(Impl_::location_)); } PLAssignStmt::~PLAssignStmt() { // @@protoc_insertion_point(destructor:pg_query.PLAssignStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void PLAssignStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); delete _impl_.val_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void PLAssignStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PLAssignStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.indirection_.Clear(); _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.val_ != nullptr); _impl_.val_->Clear(); } ::memset(&_impl_.nnames_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.nnames_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* PLAssignStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 34, 2> PLAssignStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(PLAssignStmt, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_PLAssignStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string name = 1 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(PLAssignStmt, _impl_.name_)}}, // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(PLAssignStmt, _impl_.indirection_)}}, // int32 nnames = 3 [json_name = "nnames"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PLAssignStmt, _impl_.nnames_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(PLAssignStmt, _impl_.nnames_)}}, // .pg_query.SelectStmt val = 4 [json_name = "val"]; {::_pbi::TcParser::FastMtS1, {34, 0, 1, PROTOBUF_FIELD_OFFSET(PLAssignStmt, _impl_.val_)}}, // int32 location = 5 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PLAssignStmt, _impl_.location_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(PLAssignStmt, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // string name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(PLAssignStmt, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; {PROTOBUF_FIELD_OFFSET(PLAssignStmt, _impl_.indirection_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 nnames = 3 [json_name = "nnames"]; {PROTOBUF_FIELD_OFFSET(PLAssignStmt, _impl_.nnames_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // .pg_query.SelectStmt val = 4 [json_name = "val"]; {PROTOBUF_FIELD_OFFSET(PLAssignStmt, _impl_.val_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 5 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(PLAssignStmt, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::SelectStmt>()}, }}, {{ "\25\4\0\0\0\0\0\0" "pg_query.PLAssignStmt" "name" }}, }; ::uint8_t* PLAssignStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PLAssignStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.PLAssignStmt.name"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; for (unsigned i = 0, n = static_cast(this->_internal_indirection_size()); i < n; i++) { const auto& repfield = this->_internal_indirection().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // int32 nnames = 3 [json_name = "nnames"]; if (this->_internal_nnames() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_nnames(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.SelectStmt val = 4 [json_name = "val"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::val(this), _Internal::val(this).GetCachedSize(), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<5>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.PLAssignStmt) return target; } ::size_t PLAssignStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.PLAssignStmt) ::size_t total_size = 0; ::uint32_t 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->_internal_indirection()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.SelectStmt val = 4 [json_name = "val"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.val_); } // int32 nnames = 3 [json_name = "nnames"]; if (this->_internal_nnames() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_nnames()); } // int32 location = 5 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData PLAssignStmt::_class_data_ = { PLAssignStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* PLAssignStmt::GetClassData() const { return &_class_data_; } void PLAssignStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PLAssignStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_indirection()->MergeFrom( from._internal_indirection()); if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_val()->::pg_query::SelectStmt::MergeFrom( from._internal_val()); } if (from._internal_nnames() != 0) { _this->_internal_set_nnames(from._internal_nnames()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void PLAssignStmt::CopyFrom(const PLAssignStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PLAssignStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool PLAssignStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* PLAssignStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void PLAssignStmt::InternalSwap(PLAssignStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.indirection_.InternalSwap(&other->_impl_.indirection_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(PLAssignStmt, _impl_.location_) + sizeof(PLAssignStmt::_impl_.location_) - PROTOBUF_FIELD_OFFSET(PLAssignStmt, _impl_.val_)>( reinterpret_cast(&_impl_.val_), reinterpret_cast(&other->_impl_.val_)); } ::google::protobuf::Metadata PLAssignStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[150]); } // =================================================================== class CreateSchemaStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreateSchemaStmt, _impl_._has_bits_); static const ::pg_query::RoleSpec& authrole(const CreateSchemaStmt* msg); static void set_has_authrole(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RoleSpec& CreateSchemaStmt::_Internal::authrole(const CreateSchemaStmt* msg) { return *msg->_impl_.authrole_; } CreateSchemaStmt::CreateSchemaStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateSchemaStmt) } inline PROTOBUF_NDEBUG_INLINE CreateSchemaStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, schema_elts_{visibility, arena, from.schema_elts_}, schemaname_(arena, from.schemaname_) {} CreateSchemaStmt::CreateSchemaStmt( ::google::protobuf::Arena* arena, const CreateSchemaStmt& from) : ::google::protobuf::Message(arena) { CreateSchemaStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.authrole_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RoleSpec>(arena, *from._impl_.authrole_) : nullptr; _impl_.if_not_exists_ = from._impl_.if_not_exists_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateSchemaStmt) } inline PROTOBUF_NDEBUG_INLINE CreateSchemaStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, schema_elts_{visibility, arena}, schemaname_(arena) {} inline void CreateSchemaStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, authrole_), 0, offsetof(Impl_, if_not_exists_) - offsetof(Impl_, authrole_) + sizeof(Impl_::if_not_exists_)); } CreateSchemaStmt::~CreateSchemaStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateSchemaStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateSchemaStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.schemaname_.Destroy(); delete _impl_.authrole_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateSchemaStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateSchemaStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.schema_elts_.Clear(); _impl_.schemaname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.authrole_ != nullptr); _impl_.authrole_->Clear(); } _impl_.if_not_exists_ = false; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateSchemaStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 44, 2> CreateSchemaStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CreateSchemaStmt, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateSchemaStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool if_not_exists = 4 [json_name = "if_not_exists"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSchemaStmt, _impl_.if_not_exists_)}}, // string schemaname = 1 [json_name = "schemaname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSchemaStmt, _impl_.schemaname_)}}, // .pg_query.RoleSpec authrole = 2 [json_name = "authrole"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(CreateSchemaStmt, _impl_.authrole_)}}, // repeated .pg_query.Node schema_elts = 3 [json_name = "schemaElts"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(CreateSchemaStmt, _impl_.schema_elts_)}}, }}, {{ 65535, 65535 }}, {{ // string schemaname = 1 [json_name = "schemaname"]; {PROTOBUF_FIELD_OFFSET(CreateSchemaStmt, _impl_.schemaname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.RoleSpec authrole = 2 [json_name = "authrole"]; {PROTOBUF_FIELD_OFFSET(CreateSchemaStmt, _impl_.authrole_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node schema_elts = 3 [json_name = "schemaElts"]; {PROTOBUF_FIELD_OFFSET(CreateSchemaStmt, _impl_.schema_elts_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool if_not_exists = 4 [json_name = "if_not_exists"]; {PROTOBUF_FIELD_OFFSET(CreateSchemaStmt, _impl_.if_not_exists_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RoleSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\31\12\0\0\0\0\0\0" "pg_query.CreateSchemaStmt" "schemaname" }}, }; ::uint8_t* CreateSchemaStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateSchemaStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string schemaname = 1 [json_name = "schemaname"]; if (!this->_internal_schemaname().empty()) { const std::string& _s = this->_internal_schemaname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateSchemaStmt.schemaname"); target = stream->WriteStringMaybeAliased(1, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RoleSpec authrole = 2 [json_name = "authrole"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::authrole(this), _Internal::authrole(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node schema_elts = 3 [json_name = "schemaElts"]; for (unsigned i = 0, n = static_cast(this->_internal_schema_elts_size()); i < n; i++) { const auto& repfield = this->_internal_schema_elts().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // bool if_not_exists = 4 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_if_not_exists(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_schema_elts()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string schemaname = 1 [json_name = "schemaname"]; if (!this->_internal_schemaname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_schemaname()); } // .pg_query.RoleSpec authrole = 2 [json_name = "authrole"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.authrole_); } // bool if_not_exists = 4 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateSchemaStmt::_class_data_ = { CreateSchemaStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateSchemaStmt::GetClassData() const { return &_class_data_; } void CreateSchemaStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateSchemaStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_schema_elts()->MergeFrom( from._internal_schema_elts()); if (!from._internal_schemaname().empty()) { _this->_internal_set_schemaname(from._internal_schemaname()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_authrole()->::pg_query::RoleSpec::MergeFrom( from._internal_authrole()); } if (from._internal_if_not_exists() != 0) { _this->_internal_set_if_not_exists(from._internal_if_not_exists()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateSchemaStmt::CopyFrom(const CreateSchemaStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateSchemaStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateSchemaStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateSchemaStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateSchemaStmt::InternalSwap(CreateSchemaStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.schema_elts_.InternalSwap(&other->_impl_.schema_elts_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.schemaname_, &other->_impl_.schemaname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateSchemaStmt, _impl_.if_not_exists_) + sizeof(CreateSchemaStmt::_impl_.if_not_exists_) - PROTOBUF_FIELD_OFFSET(CreateSchemaStmt, _impl_.authrole_)>( reinterpret_cast(&_impl_.authrole_), reinterpret_cast(&other->_impl_.authrole_)); } ::google::protobuf::Metadata CreateSchemaStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[151]); } // =================================================================== class AlterTableStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterTableStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const AlterTableStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RangeVar& AlterTableStmt::_Internal::relation(const AlterTableStmt* msg) { return *msg->_impl_.relation_; } AlterTableStmt::AlterTableStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterTableStmt) } inline PROTOBUF_NDEBUG_INLINE AlterTableStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, cmds_{visibility, arena, from.cmds_} {} AlterTableStmt::AlterTableStmt( ::google::protobuf::Arena* arena, const AlterTableStmt& from) : ::google::protobuf::Message(arena) { AlterTableStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, objtype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, objtype_), offsetof(Impl_, missing_ok_) - offsetof(Impl_, objtype_) + sizeof(Impl_::missing_ok_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterTableStmt) } inline PROTOBUF_NDEBUG_INLINE AlterTableStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, cmds_{visibility, arena} {} inline void AlterTableStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, missing_ok_) - offsetof(Impl_, relation_) + sizeof(Impl_::missing_ok_)); } AlterTableStmt::~AlterTableStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterTableStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterTableStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.relation_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterTableStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterTableStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.cmds_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } ::memset(&_impl_.objtype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.missing_ok_) - reinterpret_cast(&_impl_.objtype_)) + sizeof(_impl_.missing_ok_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterTableStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 0, 2> AlterTableStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterTableStmt, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterTableStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool missing_ok = 4 [json_name = "missing_ok"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableStmt, _impl_.missing_ok_)}}, // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(AlterTableStmt, _impl_.relation_)}}, // repeated .pg_query.Node cmds = 2 [json_name = "cmds"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(AlterTableStmt, _impl_.cmds_)}}, // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterTableStmt, _impl_.objtype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableStmt, _impl_.objtype_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(AlterTableStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node cmds = 2 [json_name = "cmds"]; {PROTOBUF_FIELD_OFFSET(AlterTableStmt, _impl_.cmds_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; {PROTOBUF_FIELD_OFFSET(AlterTableStmt, _impl_.objtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool missing_ok = 4 [json_name = "missing_ok"]; {PROTOBUF_FIELD_OFFSET(AlterTableStmt, _impl_.missing_ok_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* AlterTableStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterTableStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node cmds = 2 [json_name = "cmds"]; for (unsigned i = 0, n = static_cast(this->_internal_cmds_size()); i < n; i++) { const auto& repfield = this->_internal_cmds().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_objtype(), target); } // bool missing_ok = 4 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_cmds()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RangeVar relation = 1 [json_name = "relation"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_objtype()); } // bool missing_ok = 4 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterTableStmt::_class_data_ = { AlterTableStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterTableStmt::GetClassData() const { return &_class_data_; } void AlterTableStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterTableStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_cmds()->MergeFrom( from._internal_cmds()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (from._internal_objtype() != 0) { _this->_internal_set_objtype(from._internal_objtype()); } if (from._internal_missing_ok() != 0) { _this->_internal_set_missing_ok(from._internal_missing_ok()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterTableStmt::CopyFrom(const AlterTableStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterTableStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterTableStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterTableStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterTableStmt::InternalSwap(AlterTableStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.cmds_.InternalSwap(&other->_impl_.cmds_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterTableStmt, _impl_.missing_ok_) + sizeof(AlterTableStmt::_impl_.missing_ok_) - PROTOBUF_FIELD_OFFSET(AlterTableStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata AlterTableStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[152]); } // =================================================================== class ReplicaIdentityStmt::_Internal { public: }; ReplicaIdentityStmt::ReplicaIdentityStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ReplicaIdentityStmt) } inline PROTOBUF_NDEBUG_INLINE ReplicaIdentityStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : identity_type_(arena, from.identity_type_), name_(arena, from.name_), _cached_size_{0} {} ReplicaIdentityStmt::ReplicaIdentityStmt( ::google::protobuf::Arena* arena, const ReplicaIdentityStmt& from) : ::google::protobuf::Message(arena) { ReplicaIdentityStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.ReplicaIdentityStmt) } inline PROTOBUF_NDEBUG_INLINE ReplicaIdentityStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : identity_type_(arena), name_(arena), _cached_size_{0} {} inline void ReplicaIdentityStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } ReplicaIdentityStmt::~ReplicaIdentityStmt() { // @@protoc_insertion_point(destructor:pg_query.ReplicaIdentityStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ReplicaIdentityStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.identity_type_.Destroy(); _impl_.name_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void ReplicaIdentityStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ReplicaIdentityStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.identity_type_.ClearToEmpty(); _impl_.name_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ReplicaIdentityStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 0, 54, 2> ReplicaIdentityStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_ReplicaIdentityStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string name = 2 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(ReplicaIdentityStmt, _impl_.name_)}}, // string identity_type = 1 [json_name = "identity_type"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(ReplicaIdentityStmt, _impl_.identity_type_)}}, }}, {{ 65535, 65535 }}, {{ // string identity_type = 1 [json_name = "identity_type"]; {PROTOBUF_FIELD_OFFSET(ReplicaIdentityStmt, _impl_.identity_type_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string name = 2 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(ReplicaIdentityStmt, _impl_.name_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, // no aux_entries {{ "\34\15\4\0\0\0\0\0" "pg_query.ReplicaIdentityStmt" "identity_type" "name" }}, }; ::uint8_t* ReplicaIdentityStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ReplicaIdentityStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string identity_type = 1 [json_name = "identity_type"]; if (!this->_internal_identity_type().empty()) { const std::string& _s = this->_internal_identity_type(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ReplicaIdentityStmt.identity_type"); target = stream->WriteStringMaybeAliased(1, _s, target); } // string name = 2 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ReplicaIdentityStmt.name"); target = stream->WriteStringMaybeAliased(2, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_identity_type().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_identity_type()); } // string name = 2 [json_name = "name"]; if (!this->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ReplicaIdentityStmt::_class_data_ = { ReplicaIdentityStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ReplicaIdentityStmt::GetClassData() const { return &_class_data_; } void ReplicaIdentityStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ReplicaIdentityStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_identity_type().empty()) { _this->_internal_set_identity_type(from._internal_identity_type()); } if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ReplicaIdentityStmt::CopyFrom(const ReplicaIdentityStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ReplicaIdentityStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ReplicaIdentityStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* ReplicaIdentityStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void ReplicaIdentityStmt::InternalSwap(ReplicaIdentityStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.identity_type_, &other->_impl_.identity_type_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); } ::google::protobuf::Metadata ReplicaIdentityStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[153]); } // =================================================================== class AlterTableCmd::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_._has_bits_); static const ::pg_query::RoleSpec& newowner(const AlterTableCmd* msg); static void set_has_newowner(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& def(const AlterTableCmd* msg); static void set_has_def(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::RoleSpec& AlterTableCmd::_Internal::newowner(const AlterTableCmd* msg) { return *msg->_impl_.newowner_; } const ::pg_query::Node& AlterTableCmd::_Internal::def(const AlterTableCmd* msg) { return *msg->_impl_.def_; } AlterTableCmd::AlterTableCmd(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterTableCmd) } inline PROTOBUF_NDEBUG_INLINE AlterTableCmd::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, name_(arena, from.name_) {} AlterTableCmd::AlterTableCmd( ::google::protobuf::Arena* arena, const AlterTableCmd& from) : ::google::protobuf::Message(arena) { AlterTableCmd* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.newowner_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RoleSpec>(arena, *from._impl_.newowner_) : nullptr; _impl_.def_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.def_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, subtype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, subtype_), offsetof(Impl_, recurse_) - offsetof(Impl_, subtype_) + sizeof(Impl_::recurse_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterTableCmd) } inline PROTOBUF_NDEBUG_INLINE AlterTableCmd::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, name_(arena) {} inline void AlterTableCmd::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, newowner_), 0, offsetof(Impl_, recurse_) - offsetof(Impl_, newowner_) + sizeof(Impl_::recurse_)); } AlterTableCmd::~AlterTableCmd() { // @@protoc_insertion_point(destructor:pg_query.AlterTableCmd) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterTableCmd::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); delete _impl_.newowner_; delete _impl_.def_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterTableCmd::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterTableCmd) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.newowner_ != nullptr); _impl_.newowner_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.def_ != nullptr); _impl_.def_->Clear(); } } ::memset(&_impl_.subtype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.recurse_) - reinterpret_cast(&_impl_.subtype_)) + sizeof(_impl_.recurse_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterTableCmd::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 2, 43, 2> AlterTableCmd::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_._has_bits_), 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterTableCmd_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool recurse = 8 [json_name = "recurse"]; {::_pbi::TcParser::SingularVarintNoZag1(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.recurse_)}}, // .pg_query.AlterTableType subtype = 1 [json_name = "subtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterTableCmd, _impl_.subtype_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.subtype_)}}, // string name = 2 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.name_)}}, // int32 num = 3 [json_name = "num"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterTableCmd, _impl_.num_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.num_)}}, // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; {::_pbi::TcParser::FastMtS1, {34, 0, 0, PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.newowner_)}}, // .pg_query.Node def = 5 [json_name = "def"]; {::_pbi::TcParser::FastMtS1, {42, 1, 1, PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.def_)}}, // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterTableCmd, _impl_.behavior_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.behavior_)}}, // bool missing_ok = 7 [json_name = "missing_ok"]; {::_pbi::TcParser::SingularVarintNoZag1(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.missing_ok_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.AlterTableType subtype = 1 [json_name = "subtype"]; {PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.subtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // string name = 2 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // int32 num = 3 [json_name = "num"]; {PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.num_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; {PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.newowner_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node def = 5 [json_name = "def"]; {PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.def_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; {PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.behavior_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool missing_ok = 7 [json_name = "missing_ok"]; {PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.missing_ok_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool recurse = 8 [json_name = "recurse"]; {PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.recurse_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RoleSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\26\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0" "pg_query.AlterTableCmd" "name" }}, }; ::uint8_t* AlterTableCmd::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterTableCmd) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.AlterTableType subtype = 1 [json_name = "subtype"]; if (this->_internal_subtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_subtype(), target); } // string name = 2 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterTableCmd.name"); target = stream->WriteStringMaybeAliased(2, _s, target); } // int32 num = 3 [json_name = "num"]; if (this->_internal_num() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_num(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::newowner(this), _Internal::newowner(this).GetCachedSize(), target, stream); } // .pg_query.Node def = 5 [json_name = "def"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::def(this), _Internal::def(this).GetCachedSize(), target, stream); } // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 6, this->_internal_behavior(), target); } // bool missing_ok = 7 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 7, this->_internal_missing_ok(), target); } // bool recurse = 8 [json_name = "recurse"]; if (this->_internal_recurse() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 8, this->_internal_recurse(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.newowner_); } // .pg_query.Node def = 5 [json_name = "def"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.def_); } } // .pg_query.AlterTableType subtype = 1 [json_name = "subtype"]; if (this->_internal_subtype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_subtype()); } // int32 num = 3 [json_name = "num"]; if (this->_internal_num() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_num()); } // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_behavior()); } // bool missing_ok = 7 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { total_size += 2; } // bool recurse = 8 [json_name = "recurse"]; if (this->_internal_recurse() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterTableCmd::_class_data_ = { AlterTableCmd::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterTableCmd::GetClassData() const { return &_class_data_; } void AlterTableCmd::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterTableCmd) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_newowner()->::pg_query::RoleSpec::MergeFrom( from._internal_newowner()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_def()->::pg_query::Node::MergeFrom( from._internal_def()); } } if (from._internal_subtype() != 0) { _this->_internal_set_subtype(from._internal_subtype()); } if (from._internal_num() != 0) { _this->_internal_set_num(from._internal_num()); } if (from._internal_behavior() != 0) { _this->_internal_set_behavior(from._internal_behavior()); } if (from._internal_missing_ok() != 0) { _this->_internal_set_missing_ok(from._internal_missing_ok()); } if (from._internal_recurse() != 0) { _this->_internal_set_recurse(from._internal_recurse()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterTableCmd::CopyFrom(const AlterTableCmd& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterTableCmd) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterTableCmd::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterTableCmd::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterTableCmd::InternalSwap(AlterTableCmd* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.recurse_) + sizeof(AlterTableCmd::_impl_.recurse_) - PROTOBUF_FIELD_OFFSET(AlterTableCmd, _impl_.newowner_)>( reinterpret_cast(&_impl_.newowner_), reinterpret_cast(&other->_impl_.newowner_)); } ::google::protobuf::Metadata AlterTableCmd::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[154]); } // =================================================================== class AlterCollationStmt::_Internal { public: }; AlterCollationStmt::AlterCollationStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterCollationStmt) } inline PROTOBUF_NDEBUG_INLINE AlterCollationStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : collname_{visibility, arena, from.collname_}, _cached_size_{0} {} AlterCollationStmt::AlterCollationStmt( ::google::protobuf::Arena* arena, const AlterCollationStmt& from) : ::google::protobuf::Message(arena) { AlterCollationStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.AlterCollationStmt) } inline PROTOBUF_NDEBUG_INLINE AlterCollationStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : collname_{visibility, arena}, _cached_size_{0} {} inline void AlterCollationStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } AlterCollationStmt::~AlterCollationStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterCollationStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterCollationStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterCollationStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterCollationStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.collname_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterCollationStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 1, 0, 2> AlterCollationStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterCollationStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node collname = 1 [json_name = "collname"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterCollationStmt, _impl_.collname_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node collname = 1 [json_name = "collname"]; {PROTOBUF_FIELD_OFFSET(AlterCollationStmt, _impl_.collname_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* AlterCollationStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterCollationStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node collname = 1 [json_name = "collname"]; for (unsigned i = 0, n = static_cast(this->_internal_collname_size()); i < n; i++) { const auto& repfield = this->_internal_collname().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_collname()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterCollationStmt::_class_data_ = { AlterCollationStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterCollationStmt::GetClassData() const { return &_class_data_; } void AlterCollationStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterCollationStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_collname()->MergeFrom( from._internal_collname()); _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterCollationStmt::CopyFrom(const AlterCollationStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterCollationStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterCollationStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterCollationStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterCollationStmt::InternalSwap(AlterCollationStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.collname_.InternalSwap(&other->_impl_.collname_); } ::google::protobuf::Metadata AlterCollationStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[155]); } // =================================================================== class AlterDomainStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_._has_bits_); static const ::pg_query::Node& def(const AlterDomainStmt* msg); static void set_has_def(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& AlterDomainStmt::_Internal::def(const AlterDomainStmt* msg) { return *msg->_impl_.def_; } AlterDomainStmt::AlterDomainStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterDomainStmt) } inline PROTOBUF_NDEBUG_INLINE AlterDomainStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, type_name_{visibility, arena, from.type_name_}, subtype_(arena, from.subtype_), name_(arena, from.name_) {} AlterDomainStmt::AlterDomainStmt( ::google::protobuf::Arena* arena, const AlterDomainStmt& from) : ::google::protobuf::Message(arena) { AlterDomainStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.def_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.def_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, behavior_), reinterpret_cast(&from._impl_) + offsetof(Impl_, behavior_), offsetof(Impl_, missing_ok_) - offsetof(Impl_, behavior_) + sizeof(Impl_::missing_ok_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterDomainStmt) } inline PROTOBUF_NDEBUG_INLINE AlterDomainStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, type_name_{visibility, arena}, subtype_(arena), name_(arena) {} inline void AlterDomainStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, def_), 0, offsetof(Impl_, missing_ok_) - offsetof(Impl_, def_) + sizeof(Impl_::missing_ok_)); } AlterDomainStmt::~AlterDomainStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterDomainStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterDomainStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.subtype_.Destroy(); _impl_.name_.Destroy(); delete _impl_.def_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterDomainStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterDomainStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.type_name_.Clear(); _impl_.subtype_.ClearToEmpty(); _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.def_ != nullptr); _impl_.def_->Clear(); } ::memset(&_impl_.behavior_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.missing_ok_) - reinterpret_cast(&_impl_.behavior_)) + sizeof(_impl_.missing_ok_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterDomainStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 2, 44, 2> AlterDomainStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterDomainStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string subtype = 1 [json_name = "subtype"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_.subtype_)}}, // repeated .pg_query.Node type_name = 2 [json_name = "typeName"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_.type_name_)}}, // string name = 3 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_.name_)}}, // .pg_query.Node def = 4 [json_name = "def"]; {::_pbi::TcParser::FastMtS1, {34, 0, 1, PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_.def_)}}, // .pg_query.DropBehavior behavior = 5 [json_name = "behavior"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterDomainStmt, _impl_.behavior_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_.behavior_)}}, // bool missing_ok = 6 [json_name = "missing_ok"]; {::_pbi::TcParser::SingularVarintNoZag1(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_.missing_ok_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // string subtype = 1 [json_name = "subtype"]; {PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_.subtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node type_name = 2 [json_name = "typeName"]; {PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_.type_name_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string name = 3 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.Node def = 4 [json_name = "def"]; {PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_.def_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DropBehavior behavior = 5 [json_name = "behavior"]; {PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_.behavior_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool missing_ok = 6 [json_name = "missing_ok"]; {PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_.missing_ok_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\30\7\0\4\0\0\0\0" "pg_query.AlterDomainStmt" "subtype" "name" }}, }; ::uint8_t* AlterDomainStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterDomainStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string subtype = 1 [json_name = "subtype"]; if (!this->_internal_subtype().empty()) { const std::string& _s = this->_internal_subtype(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterDomainStmt.subtype"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node type_name = 2 [json_name = "typeName"]; for (unsigned i = 0, n = static_cast(this->_internal_type_name_size()); i < n; i++) { const auto& repfield = this->_internal_type_name().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // string name = 3 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterDomainStmt.name"); target = stream->WriteStringMaybeAliased(3, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node def = 4 [json_name = "def"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::def(this), _Internal::def(this).GetCachedSize(), target, stream); } // .pg_query.DropBehavior behavior = 5 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 5, this->_internal_behavior(), target); } // bool missing_ok = 6 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 6, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_type_name()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string subtype = 1 [json_name = "subtype"]; if (!this->_internal_subtype().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_subtype()); } // string name = 3 [json_name = "name"]; if (!this->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.Node def = 4 [json_name = "def"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.def_); } // .pg_query.DropBehavior behavior = 5 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_behavior()); } // bool missing_ok = 6 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterDomainStmt::_class_data_ = { AlterDomainStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterDomainStmt::GetClassData() const { return &_class_data_; } void AlterDomainStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterDomainStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_type_name()->MergeFrom( from._internal_type_name()); if (!from._internal_subtype().empty()) { _this->_internal_set_subtype(from._internal_subtype()); } if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_def()->::pg_query::Node::MergeFrom( from._internal_def()); } if (from._internal_behavior() != 0) { _this->_internal_set_behavior(from._internal_behavior()); } if (from._internal_missing_ok() != 0) { _this->_internal_set_missing_ok(from._internal_missing_ok()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterDomainStmt::CopyFrom(const AlterDomainStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterDomainStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterDomainStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterDomainStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterDomainStmt::InternalSwap(AlterDomainStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.type_name_.InternalSwap(&other->_impl_.type_name_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.subtype_, &other->_impl_.subtype_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_.missing_ok_) + sizeof(AlterDomainStmt::_impl_.missing_ok_) - PROTOBUF_FIELD_OFFSET(AlterDomainStmt, _impl_.def_)>( reinterpret_cast(&_impl_.def_), reinterpret_cast(&other->_impl_.def_)); } ::google::protobuf::Metadata AlterDomainStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[156]); } // =================================================================== class GrantStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_._has_bits_); static const ::pg_query::RoleSpec& grantor(const GrantStmt* msg); static void set_has_grantor(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RoleSpec& GrantStmt::_Internal::grantor(const GrantStmt* msg) { return *msg->_impl_.grantor_; } GrantStmt::GrantStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.GrantStmt) } inline PROTOBUF_NDEBUG_INLINE GrantStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, objects_{visibility, arena, from.objects_}, privileges_{visibility, arena, from.privileges_}, grantees_{visibility, arena, from.grantees_} {} GrantStmt::GrantStmt( ::google::protobuf::Arena* arena, const GrantStmt& from) : ::google::protobuf::Message(arena) { GrantStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.grantor_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RoleSpec>(arena, *from._impl_.grantor_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, targtype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, targtype_), offsetof(Impl_, behavior_) - offsetof(Impl_, targtype_) + sizeof(Impl_::behavior_)); // @@protoc_insertion_point(copy_constructor:pg_query.GrantStmt) } inline PROTOBUF_NDEBUG_INLINE GrantStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, objects_{visibility, arena}, privileges_{visibility, arena}, grantees_{visibility, arena} {} inline void GrantStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, grantor_), 0, offsetof(Impl_, behavior_) - offsetof(Impl_, grantor_) + sizeof(Impl_::behavior_)); } GrantStmt::~GrantStmt() { // @@protoc_insertion_point(destructor:pg_query.GrantStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void GrantStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.grantor_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void GrantStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.GrantStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.objects_.Clear(); _impl_.privileges_.Clear(); _impl_.grantees_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.grantor_ != nullptr); _impl_.grantor_->Clear(); } ::memset(&_impl_.targtype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.behavior_) - reinterpret_cast(&_impl_.targtype_)) + sizeof(_impl_.behavior_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* GrantStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 9, 4, 0, 2> GrantStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_._has_bits_), 0, // no _extensions_ 9, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294966784, // skipmap offsetof(decltype(_table_), field_entries), 9, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_GrantStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // bool is_grant = 1 [json_name = "is_grant"]; {::_pbi::TcParser::SingularVarintNoZag1(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.is_grant_)}}, // .pg_query.GrantTargetType targtype = 2 [json_name = "targtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(GrantStmt, _impl_.targtype_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.targtype_)}}, // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(GrantStmt, _impl_.objtype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.objtype_)}}, // repeated .pg_query.Node objects = 4 [json_name = "objects"]; {::_pbi::TcParser::FastMtR1, {34, 63, 0, PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.objects_)}}, // repeated .pg_query.Node privileges = 5 [json_name = "privileges"]; {::_pbi::TcParser::FastMtR1, {42, 63, 1, PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.privileges_)}}, // repeated .pg_query.Node grantees = 6 [json_name = "grantees"]; {::_pbi::TcParser::FastMtR1, {50, 63, 2, PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.grantees_)}}, // bool grant_option = 7 [json_name = "grant_option"]; {::_pbi::TcParser::SingularVarintNoZag1(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.grant_option_)}}, // .pg_query.RoleSpec grantor = 8 [json_name = "grantor"]; {::_pbi::TcParser::FastMtS1, {66, 0, 3, PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.grantor_)}}, // .pg_query.DropBehavior behavior = 9 [json_name = "behavior"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(GrantStmt, _impl_.behavior_), 63>(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.behavior_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // bool is_grant = 1 [json_name = "is_grant"]; {PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.is_grant_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.GrantTargetType targtype = 2 [json_name = "targtype"]; {PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.targtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; {PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.objtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node objects = 4 [json_name = "objects"]; {PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.objects_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node privileges = 5 [json_name = "privileges"]; {PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.privileges_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node grantees = 6 [json_name = "grantees"]; {PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.grantees_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool grant_option = 7 [json_name = "grant_option"]; {PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.grant_option_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.RoleSpec grantor = 8 [json_name = "grantor"]; {PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.grantor_), _Internal::kHasBitsOffset + 0, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DropBehavior behavior = 9 [json_name = "behavior"]; {PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.behavior_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::RoleSpec>()}, }}, {{ }}, }; ::uint8_t* GrantStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.GrantStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // bool is_grant = 1 [json_name = "is_grant"]; if (this->_internal_is_grant() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 1, this->_internal_is_grant(), target); } // .pg_query.GrantTargetType targtype = 2 [json_name = "targtype"]; if (this->_internal_targtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_targtype(), target); } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_objtype(), target); } // repeated .pg_query.Node objects = 4 [json_name = "objects"]; for (unsigned i = 0, n = static_cast(this->_internal_objects_size()); i < n; i++) { const auto& repfield = this->_internal_objects().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node privileges = 5 [json_name = "privileges"]; for (unsigned i = 0, n = static_cast(this->_internal_privileges_size()); i < n; i++) { const auto& repfield = this->_internal_privileges().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node grantees = 6 [json_name = "grantees"]; for (unsigned i = 0, n = static_cast(this->_internal_grantees_size()); i < n; i++) { const auto& repfield = this->_internal_grantees().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // bool grant_option = 7 [json_name = "grant_option"]; if (this->_internal_grant_option() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 7, this->_internal_grant_option(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RoleSpec grantor = 8 [json_name = "grantor"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 8, _Internal::grantor(this), _Internal::grantor(this).GetCachedSize(), target, stream); } // .pg_query.DropBehavior behavior = 9 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 9, this->_internal_behavior(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_objects()) { total_size += ::google::protobuf::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->_internal_privileges()) { total_size += ::google::protobuf::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->_internal_grantees()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RoleSpec grantor = 8 [json_name = "grantor"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.grantor_); } // .pg_query.GrantTargetType targtype = 2 [json_name = "targtype"]; if (this->_internal_targtype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_targtype()); } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_objtype()); } // bool is_grant = 1 [json_name = "is_grant"]; if (this->_internal_is_grant() != 0) { total_size += 2; } // bool grant_option = 7 [json_name = "grant_option"]; if (this->_internal_grant_option() != 0) { total_size += 2; } // .pg_query.DropBehavior behavior = 9 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_behavior()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData GrantStmt::_class_data_ = { GrantStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* GrantStmt::GetClassData() const { return &_class_data_; } void GrantStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.GrantStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_objects()->MergeFrom( from._internal_objects()); _this->_internal_mutable_privileges()->MergeFrom( from._internal_privileges()); _this->_internal_mutable_grantees()->MergeFrom( from._internal_grantees()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_grantor()->::pg_query::RoleSpec::MergeFrom( from._internal_grantor()); } if (from._internal_targtype() != 0) { _this->_internal_set_targtype(from._internal_targtype()); } if (from._internal_objtype() != 0) { _this->_internal_set_objtype(from._internal_objtype()); } if (from._internal_is_grant() != 0) { _this->_internal_set_is_grant(from._internal_is_grant()); } if (from._internal_grant_option() != 0) { _this->_internal_set_grant_option(from._internal_grant_option()); } if (from._internal_behavior() != 0) { _this->_internal_set_behavior(from._internal_behavior()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void GrantStmt::CopyFrom(const GrantStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.GrantStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool GrantStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* GrantStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void GrantStmt::InternalSwap(GrantStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.objects_.InternalSwap(&other->_impl_.objects_); _impl_.privileges_.InternalSwap(&other->_impl_.privileges_); _impl_.grantees_.InternalSwap(&other->_impl_.grantees_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.behavior_) + sizeof(GrantStmt::_impl_.behavior_) - PROTOBUF_FIELD_OFFSET(GrantStmt, _impl_.grantor_)>( reinterpret_cast(&_impl_.grantor_), reinterpret_cast(&other->_impl_.grantor_)); } ::google::protobuf::Metadata GrantStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[157]); } // =================================================================== class ObjectWithArgs::_Internal { public: }; ObjectWithArgs::ObjectWithArgs(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ObjectWithArgs) } inline PROTOBUF_NDEBUG_INLINE ObjectWithArgs::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : objname_{visibility, arena, from.objname_}, objargs_{visibility, arena, from.objargs_}, objfuncargs_{visibility, arena, from.objfuncargs_}, _cached_size_{0} {} ObjectWithArgs::ObjectWithArgs( ::google::protobuf::Arena* arena, const ObjectWithArgs& from) : ::google::protobuf::Message(arena) { ObjectWithArgs* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.args_unspecified_ = from._impl_.args_unspecified_; // @@protoc_insertion_point(copy_constructor:pg_query.ObjectWithArgs) } inline PROTOBUF_NDEBUG_INLINE ObjectWithArgs::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : objname_{visibility, arena}, objargs_{visibility, arena}, objfuncargs_{visibility, arena}, _cached_size_{0} {} inline void ObjectWithArgs::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.args_unspecified_ = {}; } ObjectWithArgs::~ObjectWithArgs() { // @@protoc_insertion_point(destructor:pg_query.ObjectWithArgs) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ObjectWithArgs::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void ObjectWithArgs::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ObjectWithArgs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.objname_.Clear(); _impl_.objargs_.Clear(); _impl_.objfuncargs_.Clear(); _impl_.args_unspecified_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ObjectWithArgs::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 3, 0, 2> ObjectWithArgs::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ObjectWithArgs_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool args_unspecified = 4 [json_name = "args_unspecified"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(ObjectWithArgs, _impl_.args_unspecified_)}}, // repeated .pg_query.Node objname = 1 [json_name = "objname"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(ObjectWithArgs, _impl_.objname_)}}, // repeated .pg_query.Node objargs = 2 [json_name = "objargs"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(ObjectWithArgs, _impl_.objargs_)}}, // repeated .pg_query.Node objfuncargs = 3 [json_name = "objfuncargs"]; {::_pbi::TcParser::FastMtR1, {26, 63, 2, PROTOBUF_FIELD_OFFSET(ObjectWithArgs, _impl_.objfuncargs_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node objname = 1 [json_name = "objname"]; {PROTOBUF_FIELD_OFFSET(ObjectWithArgs, _impl_.objname_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node objargs = 2 [json_name = "objargs"]; {PROTOBUF_FIELD_OFFSET(ObjectWithArgs, _impl_.objargs_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node objfuncargs = 3 [json_name = "objfuncargs"]; {PROTOBUF_FIELD_OFFSET(ObjectWithArgs, _impl_.objfuncargs_), 0, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool args_unspecified = 4 [json_name = "args_unspecified"]; {PROTOBUF_FIELD_OFFSET(ObjectWithArgs, _impl_.args_unspecified_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* ObjectWithArgs::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ObjectWithArgs) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node objname = 1 [json_name = "objname"]; for (unsigned i = 0, n = static_cast(this->_internal_objname_size()); i < n; i++) { const auto& repfield = this->_internal_objname().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node objargs = 2 [json_name = "objargs"]; for (unsigned i = 0, n = static_cast(this->_internal_objargs_size()); i < n; i++) { const auto& repfield = this->_internal_objargs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node objfuncargs = 3 [json_name = "objfuncargs"]; for (unsigned i = 0, n = static_cast(this->_internal_objfuncargs_size()); i < n; i++) { const auto& repfield = this->_internal_objfuncargs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // bool args_unspecified = 4 [json_name = "args_unspecified"]; if (this->_internal_args_unspecified() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_args_unspecified(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_objname()) { total_size += ::google::protobuf::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->_internal_objargs()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node objfuncargs = 3 [json_name = "objfuncargs"]; total_size += 1UL * this->_internal_objfuncargs_size(); for (const auto& msg : this->_internal_objfuncargs()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // bool args_unspecified = 4 [json_name = "args_unspecified"]; if (this->_internal_args_unspecified() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ObjectWithArgs::_class_data_ = { ObjectWithArgs::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ObjectWithArgs::GetClassData() const { return &_class_data_; } void ObjectWithArgs::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ObjectWithArgs) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_objname()->MergeFrom( from._internal_objname()); _this->_internal_mutable_objargs()->MergeFrom( from._internal_objargs()); _this->_internal_mutable_objfuncargs()->MergeFrom( from._internal_objfuncargs()); if (from._internal_args_unspecified() != 0) { _this->_internal_set_args_unspecified(from._internal_args_unspecified()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ObjectWithArgs::CopyFrom(const ObjectWithArgs& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ObjectWithArgs) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ObjectWithArgs::IsInitialized() const { return true; } ::_pbi::CachedSize* ObjectWithArgs::AccessCachedSize() const { return &_impl_._cached_size_; } void ObjectWithArgs::InternalSwap(ObjectWithArgs* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.objname_.InternalSwap(&other->_impl_.objname_); _impl_.objargs_.InternalSwap(&other->_impl_.objargs_); _impl_.objfuncargs_.InternalSwap(&other->_impl_.objfuncargs_); swap(_impl_.args_unspecified_, other->_impl_.args_unspecified_); } ::google::protobuf::Metadata ObjectWithArgs::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[158]); } // =================================================================== class AccessPriv::_Internal { public: }; AccessPriv::AccessPriv(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AccessPriv) } inline PROTOBUF_NDEBUG_INLINE AccessPriv::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : cols_{visibility, arena, from.cols_}, priv_name_(arena, from.priv_name_), _cached_size_{0} {} AccessPriv::AccessPriv( ::google::protobuf::Arena* arena, const AccessPriv& from) : ::google::protobuf::Message(arena) { AccessPriv* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.AccessPriv) } inline PROTOBUF_NDEBUG_INLINE AccessPriv::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : cols_{visibility, arena}, priv_name_(arena), _cached_size_{0} {} inline void AccessPriv::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } AccessPriv::~AccessPriv() { // @@protoc_insertion_point(destructor:pg_query.AccessPriv) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AccessPriv::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.priv_name_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AccessPriv::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AccessPriv) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.cols_.Clear(); _impl_.priv_name_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AccessPriv::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 37, 2> AccessPriv::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AccessPriv_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node cols = 2 [json_name = "cols"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AccessPriv, _impl_.cols_)}}, // string priv_name = 1 [json_name = "priv_name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AccessPriv, _impl_.priv_name_)}}, }}, {{ 65535, 65535 }}, {{ // string priv_name = 1 [json_name = "priv_name"]; {PROTOBUF_FIELD_OFFSET(AccessPriv, _impl_.priv_name_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node cols = 2 [json_name = "cols"]; {PROTOBUF_FIELD_OFFSET(AccessPriv, _impl_.cols_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\23\11\0\0\0\0\0\0" "pg_query.AccessPriv" "priv_name" }}, }; ::uint8_t* AccessPriv::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AccessPriv) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string priv_name = 1 [json_name = "priv_name"]; if (!this->_internal_priv_name().empty()) { const std::string& _s = this->_internal_priv_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AccessPriv.priv_name"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node cols = 2 [json_name = "cols"]; for (unsigned i = 0, n = static_cast(this->_internal_cols_size()); i < n; i++) { const auto& repfield = this->_internal_cols().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_cols()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string priv_name = 1 [json_name = "priv_name"]; if (!this->_internal_priv_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_priv_name()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AccessPriv::_class_data_ = { AccessPriv::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AccessPriv::GetClassData() const { return &_class_data_; } void AccessPriv::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AccessPriv) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_cols()->MergeFrom( from._internal_cols()); if (!from._internal_priv_name().empty()) { _this->_internal_set_priv_name(from._internal_priv_name()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AccessPriv::CopyFrom(const AccessPriv& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AccessPriv) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AccessPriv::IsInitialized() const { return true; } ::_pbi::CachedSize* AccessPriv::AccessCachedSize() const { return &_impl_._cached_size_; } void AccessPriv::InternalSwap(AccessPriv* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.cols_.InternalSwap(&other->_impl_.cols_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.priv_name_, &other->_impl_.priv_name_, arena); } ::google::protobuf::Metadata AccessPriv::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[159]); } // =================================================================== class GrantRoleStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_._has_bits_); static const ::pg_query::RoleSpec& grantor(const GrantRoleStmt* msg); static void set_has_grantor(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RoleSpec& GrantRoleStmt::_Internal::grantor(const GrantRoleStmt* msg) { return *msg->_impl_.grantor_; } GrantRoleStmt::GrantRoleStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.GrantRoleStmt) } inline PROTOBUF_NDEBUG_INLINE GrantRoleStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, granted_roles_{visibility, arena, from.granted_roles_}, grantee_roles_{visibility, arena, from.grantee_roles_}, opt_{visibility, arena, from.opt_} {} GrantRoleStmt::GrantRoleStmt( ::google::protobuf::Arena* arena, const GrantRoleStmt& from) : ::google::protobuf::Message(arena) { GrantRoleStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.grantor_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RoleSpec>(arena, *from._impl_.grantor_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, is_grant_), reinterpret_cast(&from._impl_) + offsetof(Impl_, is_grant_), offsetof(Impl_, behavior_) - offsetof(Impl_, is_grant_) + sizeof(Impl_::behavior_)); // @@protoc_insertion_point(copy_constructor:pg_query.GrantRoleStmt) } inline PROTOBUF_NDEBUG_INLINE GrantRoleStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, granted_roles_{visibility, arena}, grantee_roles_{visibility, arena}, opt_{visibility, arena} {} inline void GrantRoleStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, grantor_), 0, offsetof(Impl_, behavior_) - offsetof(Impl_, grantor_) + sizeof(Impl_::behavior_)); } GrantRoleStmt::~GrantRoleStmt() { // @@protoc_insertion_point(destructor:pg_query.GrantRoleStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void GrantRoleStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.grantor_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void GrantRoleStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.GrantRoleStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.granted_roles_.Clear(); _impl_.grantee_roles_.Clear(); _impl_.opt_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.grantor_ != nullptr); _impl_.grantor_->Clear(); } ::memset(&_impl_.is_grant_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.behavior_) - reinterpret_cast(&_impl_.is_grant_)) + sizeof(_impl_.behavior_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* GrantRoleStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 4, 0, 2> GrantRoleStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_GrantRoleStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node granted_roles = 1 [json_name = "granted_roles"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_.granted_roles_)}}, // repeated .pg_query.Node grantee_roles = 2 [json_name = "grantee_roles"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_.grantee_roles_)}}, // bool is_grant = 3 [json_name = "is_grant"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_.is_grant_)}}, // repeated .pg_query.Node opt = 4 [json_name = "opt"]; {::_pbi::TcParser::FastMtR1, {34, 63, 2, PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_.opt_)}}, // .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; {::_pbi::TcParser::FastMtS1, {42, 0, 3, PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_.grantor_)}}, // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(GrantRoleStmt, _impl_.behavior_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_.behavior_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node granted_roles = 1 [json_name = "granted_roles"]; {PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_.granted_roles_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node grantee_roles = 2 [json_name = "grantee_roles"]; {PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_.grantee_roles_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool is_grant = 3 [json_name = "is_grant"]; {PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_.is_grant_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node opt = 4 [json_name = "opt"]; {PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_.opt_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; {PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_.grantor_), _Internal::kHasBitsOffset + 0, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; {PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_.behavior_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::RoleSpec>()}, }}, {{ }}, }; ::uint8_t* GrantRoleStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.GrantRoleStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node granted_roles = 1 [json_name = "granted_roles"]; for (unsigned i = 0, n = static_cast(this->_internal_granted_roles_size()); i < n; i++) { const auto& repfield = this->_internal_granted_roles().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node grantee_roles = 2 [json_name = "grantee_roles"]; for (unsigned i = 0, n = static_cast(this->_internal_grantee_roles_size()); i < n; i++) { const auto& repfield = this->_internal_grantee_roles().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // bool is_grant = 3 [json_name = "is_grant"]; if (this->_internal_is_grant() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_is_grant(), target); } // repeated .pg_query.Node opt = 4 [json_name = "opt"]; for (unsigned i = 0, n = static_cast(this->_internal_opt_size()); i < n; i++) { const auto& repfield = this->_internal_opt().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::grantor(this), _Internal::grantor(this).GetCachedSize(), target, stream); } // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 6, this->_internal_behavior(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_granted_roles()) { total_size += ::google::protobuf::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->_internal_grantee_roles()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node opt = 4 [json_name = "opt"]; total_size += 1UL * this->_internal_opt_size(); for (const auto& msg : this->_internal_opt()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.grantor_); } // bool is_grant = 3 [json_name = "is_grant"]; if (this->_internal_is_grant() != 0) { total_size += 2; } // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_behavior()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData GrantRoleStmt::_class_data_ = { GrantRoleStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* GrantRoleStmt::GetClassData() const { return &_class_data_; } void GrantRoleStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.GrantRoleStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_granted_roles()->MergeFrom( from._internal_granted_roles()); _this->_internal_mutable_grantee_roles()->MergeFrom( from._internal_grantee_roles()); _this->_internal_mutable_opt()->MergeFrom( from._internal_opt()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_grantor()->::pg_query::RoleSpec::MergeFrom( from._internal_grantor()); } if (from._internal_is_grant() != 0) { _this->_internal_set_is_grant(from._internal_is_grant()); } if (from._internal_behavior() != 0) { _this->_internal_set_behavior(from._internal_behavior()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void GrantRoleStmt::CopyFrom(const GrantRoleStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.GrantRoleStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool GrantRoleStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* GrantRoleStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void GrantRoleStmt::InternalSwap(GrantRoleStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.granted_roles_.InternalSwap(&other->_impl_.granted_roles_); _impl_.grantee_roles_.InternalSwap(&other->_impl_.grantee_roles_); _impl_.opt_.InternalSwap(&other->_impl_.opt_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_.behavior_) + sizeof(GrantRoleStmt::_impl_.behavior_) - PROTOBUF_FIELD_OFFSET(GrantRoleStmt, _impl_.grantor_)>( reinterpret_cast(&_impl_.grantor_), reinterpret_cast(&other->_impl_.grantor_)); } ::google::protobuf::Metadata GrantRoleStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[160]); } // =================================================================== class AlterDefaultPrivilegesStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterDefaultPrivilegesStmt, _impl_._has_bits_); static const ::pg_query::GrantStmt& action(const AlterDefaultPrivilegesStmt* msg); static void set_has_action(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::GrantStmt& AlterDefaultPrivilegesStmt::_Internal::action(const AlterDefaultPrivilegesStmt* msg) { return *msg->_impl_.action_; } AlterDefaultPrivilegesStmt::AlterDefaultPrivilegesStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterDefaultPrivilegesStmt) } inline PROTOBUF_NDEBUG_INLINE AlterDefaultPrivilegesStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, options_{visibility, arena, from.options_} {} AlterDefaultPrivilegesStmt::AlterDefaultPrivilegesStmt( ::google::protobuf::Arena* arena, const AlterDefaultPrivilegesStmt& from) : ::google::protobuf::Message(arena) { AlterDefaultPrivilegesStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.action_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::GrantStmt>(arena, *from._impl_.action_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.AlterDefaultPrivilegesStmt) } inline PROTOBUF_NDEBUG_INLINE AlterDefaultPrivilegesStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, options_{visibility, arena} {} inline void AlterDefaultPrivilegesStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.action_ = {}; } AlterDefaultPrivilegesStmt::~AlterDefaultPrivilegesStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterDefaultPrivilegesStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterDefaultPrivilegesStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.action_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterDefaultPrivilegesStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterDefaultPrivilegesStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.action_ != nullptr); _impl_.action_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterDefaultPrivilegesStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 2, 0, 2> AlterDefaultPrivilegesStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterDefaultPrivilegesStmt, _impl_._has_bits_), 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterDefaultPrivilegesStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.GrantStmt action = 2 [json_name = "action"]; {::_pbi::TcParser::FastMtS1, {18, 0, 1, PROTOBUF_FIELD_OFFSET(AlterDefaultPrivilegesStmt, _impl_.action_)}}, // repeated .pg_query.Node options = 1 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterDefaultPrivilegesStmt, _impl_.options_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node options = 1 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(AlterDefaultPrivilegesStmt, _impl_.options_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.GrantStmt action = 2 [json_name = "action"]; {PROTOBUF_FIELD_OFFSET(AlterDefaultPrivilegesStmt, _impl_.action_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::GrantStmt>()}, }}, {{ }}, }; ::uint8_t* AlterDefaultPrivilegesStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterDefaultPrivilegesStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node options = 1 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.GrantStmt action = 2 [json_name = "action"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::action(this), _Internal::action(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.GrantStmt action = 2 [json_name = "action"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.action_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterDefaultPrivilegesStmt::_class_data_ = { AlterDefaultPrivilegesStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterDefaultPrivilegesStmt::GetClassData() const { return &_class_data_; } void AlterDefaultPrivilegesStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterDefaultPrivilegesStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_action()->::pg_query::GrantStmt::MergeFrom( from._internal_action()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterDefaultPrivilegesStmt::CopyFrom(const AlterDefaultPrivilegesStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterDefaultPrivilegesStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterDefaultPrivilegesStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterDefaultPrivilegesStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterDefaultPrivilegesStmt::InternalSwap(AlterDefaultPrivilegesStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.options_.InternalSwap(&other->_impl_.options_); swap(_impl_.action_, other->_impl_.action_); } ::google::protobuf::Metadata AlterDefaultPrivilegesStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[161]); } // =================================================================== class CopyStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const CopyStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& query(const CopyStmt* msg); static void set_has_query(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& where_clause(const CopyStmt* msg); static void set_has_where_clause(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::RangeVar& CopyStmt::_Internal::relation(const CopyStmt* msg) { return *msg->_impl_.relation_; } const ::pg_query::Node& CopyStmt::_Internal::query(const CopyStmt* msg) { return *msg->_impl_.query_; } const ::pg_query::Node& CopyStmt::_Internal::where_clause(const CopyStmt* msg) { return *msg->_impl_.where_clause_; } CopyStmt::CopyStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CopyStmt) } inline PROTOBUF_NDEBUG_INLINE CopyStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, attlist_{visibility, arena, from.attlist_}, options_{visibility, arena, from.options_}, filename_(arena, from.filename_) {} CopyStmt::CopyStmt( ::google::protobuf::Arena* arena, const CopyStmt& from) : ::google::protobuf::Message(arena) { CopyStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.query_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.query_) : nullptr; _impl_.where_clause_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.where_clause_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, is_from_), reinterpret_cast(&from._impl_) + offsetof(Impl_, is_from_), offsetof(Impl_, is_program_) - offsetof(Impl_, is_from_) + sizeof(Impl_::is_program_)); // @@protoc_insertion_point(copy_constructor:pg_query.CopyStmt) } inline PROTOBUF_NDEBUG_INLINE CopyStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, attlist_{visibility, arena}, options_{visibility, arena}, filename_(arena) {} inline void CopyStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, is_program_) - offsetof(Impl_, relation_) + sizeof(Impl_::is_program_)); } CopyStmt::~CopyStmt() { // @@protoc_insertion_point(destructor:pg_query.CopyStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CopyStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.filename_.Destroy(); delete _impl_.relation_; delete _impl_.query_; delete _impl_.where_clause_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CopyStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CopyStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.attlist_.Clear(); _impl_.options_.Clear(); _impl_.filename_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.query_ != nullptr); _impl_.query_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.where_clause_ != nullptr); _impl_.where_clause_->Clear(); } } ::memset(&_impl_.is_from_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.is_program_) - reinterpret_cast(&_impl_.is_from_)) + sizeof(_impl_.is_program_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CopyStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 5, 42, 2> CopyStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_._has_bits_), 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 5, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CopyStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; {::_pbi::TcParser::FastMtS1, {66, 2, 4, PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.where_clause_)}}, // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.relation_)}}, // .pg_query.Node query = 2 [json_name = "query"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.query_)}}, // repeated .pg_query.Node attlist = 3 [json_name = "attlist"]; {::_pbi::TcParser::FastMtR1, {26, 63, 2, PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.attlist_)}}, // bool is_from = 4 [json_name = "is_from"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.is_from_)}}, // bool is_program = 5 [json_name = "is_program"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.is_program_)}}, // string filename = 6 [json_name = "filename"]; {::_pbi::TcParser::FastUS1, {50, 63, 0, PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.filename_)}}, // repeated .pg_query.Node options = 7 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {58, 63, 3, PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.options_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node query = 2 [json_name = "query"]; {PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.query_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node attlist = 3 [json_name = "attlist"]; {PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.attlist_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool is_from = 4 [json_name = "is_from"]; {PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.is_from_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool is_program = 5 [json_name = "is_program"]; {PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.is_program_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // string filename = 6 [json_name = "filename"]; {PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.filename_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node options = 7 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.options_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; {PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.where_clause_), _Internal::kHasBitsOffset + 2, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\21\0\0\0\0\0\10\0\0\0\0\0\0\0\0\0" "pg_query.CopyStmt" "filename" }}, }; ::uint8_t* CopyStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CopyStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // .pg_query.Node query = 2 [json_name = "query"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::query(this), _Internal::query(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node attlist = 3 [json_name = "attlist"]; for (unsigned i = 0, n = static_cast(this->_internal_attlist_size()); i < n; i++) { const auto& repfield = this->_internal_attlist().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // bool is_from = 4 [json_name = "is_from"]; if (this->_internal_is_from() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_is_from(), target); } // bool is_program = 5 [json_name = "is_program"]; if (this->_internal_is_program() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_is_program(), target); } // string filename = 6 [json_name = "filename"]; if (!this->_internal_filename().empty()) { const std::string& _s = this->_internal_filename(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CopyStmt.filename"); target = stream->WriteStringMaybeAliased(6, _s, target); } // repeated .pg_query.Node options = 7 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 8, _Internal::where_clause(this), _Internal::where_clause(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_attlist()) { total_size += ::google::protobuf::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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string filename = 6 [json_name = "filename"]; if (!this->_internal_filename().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_filename()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.Node query = 2 [json_name = "query"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.query_); } // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.where_clause_); } } // bool is_from = 4 [json_name = "is_from"]; if (this->_internal_is_from() != 0) { total_size += 2; } // bool is_program = 5 [json_name = "is_program"]; if (this->_internal_is_program() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CopyStmt::_class_data_ = { CopyStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CopyStmt::GetClassData() const { return &_class_data_; } void CopyStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CopyStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_attlist()->MergeFrom( from._internal_attlist()); _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_filename().empty()) { _this->_internal_set_filename(from._internal_filename()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_query()->::pg_query::Node::MergeFrom( from._internal_query()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_where_clause()->::pg_query::Node::MergeFrom( from._internal_where_clause()); } } if (from._internal_is_from() != 0) { _this->_internal_set_is_from(from._internal_is_from()); } if (from._internal_is_program() != 0) { _this->_internal_set_is_program(from._internal_is_program()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CopyStmt::CopyFrom(const CopyStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CopyStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CopyStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CopyStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CopyStmt::InternalSwap(CopyStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.attlist_.InternalSwap(&other->_impl_.attlist_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.filename_, &other->_impl_.filename_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.is_program_) + sizeof(CopyStmt::_impl_.is_program_) - PROTOBUF_FIELD_OFFSET(CopyStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata CopyStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[162]); } // =================================================================== class VariableSetStmt::_Internal { public: }; VariableSetStmt::VariableSetStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.VariableSetStmt) } inline PROTOBUF_NDEBUG_INLINE VariableSetStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : args_{visibility, arena, from.args_}, name_(arena, from.name_), _cached_size_{0} {} VariableSetStmt::VariableSetStmt( ::google::protobuf::Arena* arena, const VariableSetStmt& from) : ::google::protobuf::Message(arena) { VariableSetStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, kind_), reinterpret_cast(&from._impl_) + offsetof(Impl_, kind_), offsetof(Impl_, is_local_) - offsetof(Impl_, kind_) + sizeof(Impl_::is_local_)); // @@protoc_insertion_point(copy_constructor:pg_query.VariableSetStmt) } inline PROTOBUF_NDEBUG_INLINE VariableSetStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : args_{visibility, arena}, name_(arena), _cached_size_{0} {} inline void VariableSetStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, kind_), 0, offsetof(Impl_, is_local_) - offsetof(Impl_, kind_) + sizeof(Impl_::is_local_)); } VariableSetStmt::~VariableSetStmt() { // @@protoc_insertion_point(destructor:pg_query.VariableSetStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void VariableSetStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void VariableSetStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.VariableSetStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); _impl_.name_.ClearToEmpty(); ::memset(&_impl_.kind_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.is_local_) - reinterpret_cast(&_impl_.kind_)) + sizeof(_impl_.is_local_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* VariableSetStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 1, 37, 2> VariableSetStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_VariableSetStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool is_local = 4 [json_name = "is_local"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(VariableSetStmt, _impl_.is_local_)}}, // .pg_query.VariableSetKind kind = 1 [json_name = "kind"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(VariableSetStmt, _impl_.kind_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(VariableSetStmt, _impl_.kind_)}}, // string name = 2 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(VariableSetStmt, _impl_.name_)}}, // repeated .pg_query.Node args = 3 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(VariableSetStmt, _impl_.args_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.VariableSetKind kind = 1 [json_name = "kind"]; {PROTOBUF_FIELD_OFFSET(VariableSetStmt, _impl_.kind_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // string name = 2 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(VariableSetStmt, _impl_.name_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node args = 3 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(VariableSetStmt, _impl_.args_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool is_local = 4 [json_name = "is_local"]; {PROTOBUF_FIELD_OFFSET(VariableSetStmt, _impl_.is_local_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\30\0\4\0\0\0\0\0" "pg_query.VariableSetStmt" "name" }}, }; ::uint8_t* VariableSetStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.VariableSetStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.VariableSetKind kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // string name = 2 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.VariableSetStmt.name"); target = stream->WriteStringMaybeAliased(2, _s, target); } // repeated .pg_query.Node args = 3 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // bool is_local = 4 [json_name = "is_local"]; if (this->_internal_is_local() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_is_local(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string name = 2 [json_name = "name"]; if (!this->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.VariableSetKind kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_kind()); } // bool is_local = 4 [json_name = "is_local"]; if (this->_internal_is_local() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData VariableSetStmt::_class_data_ = { VariableSetStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* VariableSetStmt::GetClassData() const { return &_class_data_; } void VariableSetStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.VariableSetStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if (from._internal_kind() != 0) { _this->_internal_set_kind(from._internal_kind()); } if (from._internal_is_local() != 0) { _this->_internal_set_is_local(from._internal_is_local()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void VariableSetStmt::CopyFrom(const VariableSetStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.VariableSetStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool VariableSetStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* VariableSetStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void VariableSetStmt::InternalSwap(VariableSetStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.args_.InternalSwap(&other->_impl_.args_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(VariableSetStmt, _impl_.is_local_) + sizeof(VariableSetStmt::_impl_.is_local_) - PROTOBUF_FIELD_OFFSET(VariableSetStmt, _impl_.kind_)>( reinterpret_cast(&_impl_.kind_), reinterpret_cast(&other->_impl_.kind_)); } ::google::protobuf::Metadata VariableSetStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[163]); } // =================================================================== class VariableShowStmt::_Internal { public: }; VariableShowStmt::VariableShowStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.VariableShowStmt) } inline PROTOBUF_NDEBUG_INLINE VariableShowStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : name_(arena, from.name_), _cached_size_{0} {} VariableShowStmt::VariableShowStmt( ::google::protobuf::Arena* arena, const VariableShowStmt& from) : ::google::protobuf::Message(arena) { VariableShowStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.VariableShowStmt) } inline PROTOBUF_NDEBUG_INLINE VariableShowStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : name_(arena), _cached_size_{0} {} inline void VariableShowStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } VariableShowStmt::~VariableShowStmt() { // @@protoc_insertion_point(destructor:pg_query.VariableShowStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void VariableShowStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void VariableShowStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.VariableShowStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.name_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* VariableShowStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 38, 2> VariableShowStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_VariableShowStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string name = 1 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(VariableShowStmt, _impl_.name_)}}, }}, {{ 65535, 65535 }}, {{ // string name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(VariableShowStmt, _impl_.name_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, // no aux_entries {{ "\31\4\0\0\0\0\0\0" "pg_query.VariableShowStmt" "name" }}, }; ::uint8_t* VariableShowStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.VariableShowStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.VariableShowStmt.name"); target = stream->WriteStringMaybeAliased(1, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData VariableShowStmt::_class_data_ = { VariableShowStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* VariableShowStmt::GetClassData() const { return &_class_data_; } void VariableShowStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.VariableShowStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void VariableShowStmt::CopyFrom(const VariableShowStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.VariableShowStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool VariableShowStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* VariableShowStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void VariableShowStmt::InternalSwap(VariableShowStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); } ::google::protobuf::Metadata VariableShowStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[164]); } // =================================================================== class CreateStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const CreateStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::PartitionBoundSpec& partbound(const CreateStmt* msg); static void set_has_partbound(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::PartitionSpec& partspec(const CreateStmt* msg); static void set_has_partspec(HasBits* has_bits) { (*has_bits)[0] |= 4u; } static const ::pg_query::TypeName& of_typename(const CreateStmt* msg); static void set_has_of_typename(HasBits* has_bits) { (*has_bits)[0] |= 8u; } }; const ::pg_query::RangeVar& CreateStmt::_Internal::relation(const CreateStmt* msg) { return *msg->_impl_.relation_; } const ::pg_query::PartitionBoundSpec& CreateStmt::_Internal::partbound(const CreateStmt* msg) { return *msg->_impl_.partbound_; } const ::pg_query::PartitionSpec& CreateStmt::_Internal::partspec(const CreateStmt* msg) { return *msg->_impl_.partspec_; } const ::pg_query::TypeName& CreateStmt::_Internal::of_typename(const CreateStmt* msg) { return *msg->_impl_.of_typename_; } CreateStmt::CreateStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateStmt) } inline PROTOBUF_NDEBUG_INLINE CreateStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, table_elts_{visibility, arena, from.table_elts_}, inh_relations_{visibility, arena, from.inh_relations_}, constraints_{visibility, arena, from.constraints_}, options_{visibility, arena, from.options_}, tablespacename_(arena, from.tablespacename_), access_method_(arena, from.access_method_) {} CreateStmt::CreateStmt( ::google::protobuf::Arena* arena, const CreateStmt& from) : ::google::protobuf::Message(arena) { CreateStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.partbound_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::PartitionBoundSpec>(arena, *from._impl_.partbound_) : nullptr; _impl_.partspec_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::PartitionSpec>(arena, *from._impl_.partspec_) : nullptr; _impl_.of_typename_ = (cached_has_bits & 0x00000008u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.of_typename_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, oncommit_), reinterpret_cast(&from._impl_) + offsetof(Impl_, oncommit_), offsetof(Impl_, if_not_exists_) - offsetof(Impl_, oncommit_) + sizeof(Impl_::if_not_exists_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateStmt) } inline PROTOBUF_NDEBUG_INLINE CreateStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, table_elts_{visibility, arena}, inh_relations_{visibility, arena}, constraints_{visibility, arena}, options_{visibility, arena}, tablespacename_(arena), access_method_(arena) {} inline void CreateStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, if_not_exists_) - offsetof(Impl_, relation_) + sizeof(Impl_::if_not_exists_)); } CreateStmt::~CreateStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.tablespacename_.Destroy(); _impl_.access_method_.Destroy(); delete _impl_.relation_; delete _impl_.partbound_; delete _impl_.partspec_; delete _impl_.of_typename_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.table_elts_.Clear(); _impl_.inh_relations_.Clear(); _impl_.constraints_.Clear(); _impl_.options_.Clear(); _impl_.tablespacename_.ClearToEmpty(); _impl_.access_method_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.partbound_ != nullptr); _impl_.partbound_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.partspec_ != nullptr); _impl_.partspec_->Clear(); } if (cached_has_bits & 0x00000008u) { ABSL_DCHECK(_impl_.of_typename_ != nullptr); _impl_.of_typename_->Clear(); } } ::memset(&_impl_.oncommit_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.if_not_exists_) - reinterpret_cast(&_impl_.oncommit_)) + sizeof(_impl_.if_not_exists_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 12, 8, 63, 2> CreateStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_._has_bits_), 0, // no _extensions_ 12, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294963200, // skipmap offsetof(decltype(_table_), field_entries), 12, // num_field_entries 8, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.relation_)}}, // repeated .pg_query.Node table_elts = 2 [json_name = "tableElts"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.table_elts_)}}, // repeated .pg_query.Node inh_relations = 3 [json_name = "inhRelations"]; {::_pbi::TcParser::FastMtR1, {26, 63, 2, PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.inh_relations_)}}, // .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; {::_pbi::TcParser::FastMtS1, {34, 1, 3, PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.partbound_)}}, // .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; {::_pbi::TcParser::FastMtS1, {42, 2, 4, PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.partspec_)}}, // .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; {::_pbi::TcParser::FastMtS1, {50, 3, 5, PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.of_typename_)}}, // repeated .pg_query.Node constraints = 7 [json_name = "constraints"]; {::_pbi::TcParser::FastMtR1, {58, 63, 6, PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.constraints_)}}, // repeated .pg_query.Node options = 8 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {66, 63, 7, PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.options_)}}, // .pg_query.OnCommitAction oncommit = 9 [json_name = "oncommit"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateStmt, _impl_.oncommit_), 63>(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.oncommit_)}}, // string tablespacename = 10 [json_name = "tablespacename"]; {::_pbi::TcParser::FastUS1, {82, 63, 0, PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.tablespacename_)}}, // string access_method = 11 [json_name = "accessMethod"]; {::_pbi::TcParser::FastUS1, {90, 63, 0, PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.access_method_)}}, // bool if_not_exists = 12 [json_name = "if_not_exists"]; {::_pbi::TcParser::SingularVarintNoZag1(), {96, 63, 0, PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.if_not_exists_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node table_elts = 2 [json_name = "tableElts"]; {PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.table_elts_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node inh_relations = 3 [json_name = "inhRelations"]; {PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.inh_relations_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; {PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.partbound_), _Internal::kHasBitsOffset + 1, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; {PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.partspec_), _Internal::kHasBitsOffset + 2, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; {PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.of_typename_), _Internal::kHasBitsOffset + 3, 5, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node constraints = 7 [json_name = "constraints"]; {PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.constraints_), -1, 6, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 8 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.options_), -1, 7, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.OnCommitAction oncommit = 9 [json_name = "oncommit"]; {PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.oncommit_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // string tablespacename = 10 [json_name = "tablespacename"]; {PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.tablespacename_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string access_method = 11 [json_name = "accessMethod"]; {PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.access_method_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool if_not_exists = 12 [json_name = "if_not_exists"]; {PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.if_not_exists_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::PartitionBoundSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::PartitionSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\23\0\0\0\0\0\0\0\0\0\16\15\0\0\0\0" "pg_query.CreateStmt" "tablespacename" "access_method" }}, }; ::uint8_t* CreateStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node table_elts = 2 [json_name = "tableElts"]; for (unsigned i = 0, n = static_cast(this->_internal_table_elts_size()); i < n; i++) { const auto& repfield = this->_internal_table_elts().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node inh_relations = 3 [json_name = "inhRelations"]; for (unsigned i = 0, n = static_cast(this->_internal_inh_relations_size()); i < n; i++) { const auto& repfield = this->_internal_inh_relations().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::partbound(this), _Internal::partbound(this).GetCachedSize(), target, stream); } // .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::partspec(this), _Internal::partspec(this).GetCachedSize(), target, stream); } // .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; if (cached_has_bits & 0x00000008u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::of_typename(this), _Internal::of_typename(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node constraints = 7 [json_name = "constraints"]; for (unsigned i = 0, n = static_cast(this->_internal_constraints_size()); i < n; i++) { const auto& repfield = this->_internal_constraints().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 8 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(8, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.OnCommitAction oncommit = 9 [json_name = "oncommit"]; if (this->_internal_oncommit() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 9, this->_internal_oncommit(), target); } // string tablespacename = 10 [json_name = "tablespacename"]; if (!this->_internal_tablespacename().empty()) { const std::string& _s = this->_internal_tablespacename(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateStmt.tablespacename"); target = stream->WriteStringMaybeAliased(10, _s, target); } // string access_method = 11 [json_name = "accessMethod"]; if (!this->_internal_access_method().empty()) { const std::string& _s = this->_internal_access_method(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateStmt.access_method"); target = stream->WriteStringMaybeAliased(11, _s, target); } // bool if_not_exists = 12 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 12, this->_internal_if_not_exists(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_table_elts()) { total_size += ::google::protobuf::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->_internal_inh_relations()) { total_size += ::google::protobuf::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->_internal_constraints()) { total_size += ::google::protobuf::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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string tablespacename = 10 [json_name = "tablespacename"]; if (!this->_internal_tablespacename().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_tablespacename()); } // string access_method = 11 [json_name = "accessMethod"]; if (!this->_internal_access_method().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_access_method()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.partbound_); } // .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.partspec_); } // .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; if (cached_has_bits & 0x00000008u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.of_typename_); } } // .pg_query.OnCommitAction oncommit = 9 [json_name = "oncommit"]; if (this->_internal_oncommit() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_oncommit()); } // bool if_not_exists = 12 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateStmt::_class_data_ = { CreateStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateStmt::GetClassData() const { return &_class_data_; } void CreateStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_table_elts()->MergeFrom( from._internal_table_elts()); _this->_internal_mutable_inh_relations()->MergeFrom( from._internal_inh_relations()); _this->_internal_mutable_constraints()->MergeFrom( from._internal_constraints()); _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_tablespacename().empty()) { _this->_internal_set_tablespacename(from._internal_tablespacename()); } if (!from._internal_access_method().empty()) { _this->_internal_set_access_method(from._internal_access_method()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x0000000fu) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_partbound()->::pg_query::PartitionBoundSpec::MergeFrom( from._internal_partbound()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_partspec()->::pg_query::PartitionSpec::MergeFrom( from._internal_partspec()); } if (cached_has_bits & 0x00000008u) { _this->_internal_mutable_of_typename()->::pg_query::TypeName::MergeFrom( from._internal_of_typename()); } } if (from._internal_oncommit() != 0) { _this->_internal_set_oncommit(from._internal_oncommit()); } if (from._internal_if_not_exists() != 0) { _this->_internal_set_if_not_exists(from._internal_if_not_exists()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateStmt::CopyFrom(const CreateStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateStmt::InternalSwap(CreateStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.table_elts_.InternalSwap(&other->_impl_.table_elts_); _impl_.inh_relations_.InternalSwap(&other->_impl_.inh_relations_); _impl_.constraints_.InternalSwap(&other->_impl_.constraints_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.tablespacename_, &other->_impl_.tablespacename_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.access_method_, &other->_impl_.access_method_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.if_not_exists_) + sizeof(CreateStmt::_impl_.if_not_exists_) - PROTOBUF_FIELD_OFFSET(CreateStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata CreateStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[165]); } // =================================================================== class Constraint::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(Constraint, _impl_._has_bits_); static const ::pg_query::Node& raw_expr(const Constraint* msg); static void set_has_raw_expr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& where_clause(const Constraint* msg); static void set_has_where_clause(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::RangeVar& pktable(const Constraint* msg); static void set_has_pktable(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::Node& Constraint::_Internal::raw_expr(const Constraint* msg) { return *msg->_impl_.raw_expr_; } const ::pg_query::Node& Constraint::_Internal::where_clause(const Constraint* msg) { return *msg->_impl_.where_clause_; } const ::pg_query::RangeVar& Constraint::_Internal::pktable(const Constraint* msg) { return *msg->_impl_.pktable_; } Constraint::Constraint(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Constraint) } inline PROTOBUF_NDEBUG_INLINE Constraint::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, keys_{visibility, arena, from.keys_}, including_{visibility, arena, from.including_}, exclusions_{visibility, arena, from.exclusions_}, options_{visibility, arena, from.options_}, fk_attrs_{visibility, arena, from.fk_attrs_}, pk_attrs_{visibility, arena, from.pk_attrs_}, fk_del_set_cols_{visibility, arena, from.fk_del_set_cols_}, old_conpfeqop_{visibility, arena, from.old_conpfeqop_}, conname_(arena, from.conname_), cooked_expr_(arena, from.cooked_expr_), generated_when_(arena, from.generated_when_), indexname_(arena, from.indexname_), indexspace_(arena, from.indexspace_), access_method_(arena, from.access_method_), fk_matchtype_(arena, from.fk_matchtype_), fk_upd_action_(arena, from.fk_upd_action_), fk_del_action_(arena, from.fk_del_action_) {} Constraint::Constraint( ::google::protobuf::Arena* arena, const Constraint& from) : ::google::protobuf::Message(arena) { Constraint* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.raw_expr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.raw_expr_) : nullptr; _impl_.where_clause_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.where_clause_) : nullptr; _impl_.pktable_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.pktable_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, contype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, contype_), offsetof(Impl_, location_) - offsetof(Impl_, contype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.Constraint) } inline PROTOBUF_NDEBUG_INLINE Constraint::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, keys_{visibility, arena}, including_{visibility, arena}, exclusions_{visibility, arena}, options_{visibility, arena}, fk_attrs_{visibility, arena}, pk_attrs_{visibility, arena}, fk_del_set_cols_{visibility, arena}, old_conpfeqop_{visibility, arena}, conname_(arena), cooked_expr_(arena), generated_when_(arena), indexname_(arena), indexspace_(arena), access_method_(arena), fk_matchtype_(arena), fk_upd_action_(arena), fk_del_action_(arena) {} inline void Constraint::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, raw_expr_), 0, offsetof(Impl_, location_) - offsetof(Impl_, raw_expr_) + sizeof(Impl_::location_)); } Constraint::~Constraint() { // @@protoc_insertion_point(destructor:pg_query.Constraint) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void Constraint::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.conname_.Destroy(); _impl_.cooked_expr_.Destroy(); _impl_.generated_when_.Destroy(); _impl_.indexname_.Destroy(); _impl_.indexspace_.Destroy(); _impl_.access_method_.Destroy(); _impl_.fk_matchtype_.Destroy(); _impl_.fk_upd_action_.Destroy(); _impl_.fk_del_action_.Destroy(); delete _impl_.raw_expr_; delete _impl_.where_clause_; delete _impl_.pktable_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void Constraint::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Constraint) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.keys_.Clear(); _impl_.including_.Clear(); _impl_.exclusions_.Clear(); _impl_.options_.Clear(); _impl_.fk_attrs_.Clear(); _impl_.pk_attrs_.Clear(); _impl_.fk_del_set_cols_.Clear(); _impl_.old_conpfeqop_.Clear(); _impl_.conname_.ClearToEmpty(); _impl_.cooked_expr_.ClearToEmpty(); _impl_.generated_when_.ClearToEmpty(); _impl_.indexname_.ClearToEmpty(); _impl_.indexspace_.ClearToEmpty(); _impl_.access_method_.ClearToEmpty(); _impl_.fk_matchtype_.ClearToEmpty(); _impl_.fk_upd_action_.ClearToEmpty(); _impl_.fk_del_action_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.raw_expr_ != nullptr); _impl_.raw_expr_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.where_clause_ != nullptr); _impl_.where_clause_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.pktable_ != nullptr); _impl_.pktable_->Clear(); } } ::memset(&_impl_.contype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.contype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* Constraint::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<5, 31, 11, 154, 2> Constraint::_table_ = { { PROTOBUF_FIELD_OFFSET(Constraint, _impl_._has_bits_), 0, // no _extensions_ 31, 248, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 2147483648, // skipmap offsetof(decltype(_table_), field_entries), 31, // num_field_entries 11, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_Constraint_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.ConstrType contype = 1 [json_name = "contype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Constraint, _impl_.contype_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.contype_)}}, // string conname = 2 [json_name = "conname"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.conname_)}}, // bool deferrable = 3 [json_name = "deferrable"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.deferrable_)}}, // bool initdeferred = 4 [json_name = "initdeferred"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.initdeferred_)}}, // bool skip_validation = 5 [json_name = "skip_validation"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.skip_validation_)}}, // bool initially_valid = 6 [json_name = "initially_valid"]; {::_pbi::TcParser::SingularVarintNoZag1(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.initially_valid_)}}, // bool is_no_inherit = 7 [json_name = "is_no_inherit"]; {::_pbi::TcParser::SingularVarintNoZag1(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.is_no_inherit_)}}, // .pg_query.Node raw_expr = 8 [json_name = "raw_expr"]; {::_pbi::TcParser::FastMtS1, {66, 0, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.raw_expr_)}}, // string cooked_expr = 9 [json_name = "cooked_expr"]; {::_pbi::TcParser::FastUS1, {74, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.cooked_expr_)}}, // string generated_when = 10 [json_name = "generated_when"]; {::_pbi::TcParser::FastUS1, {82, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.generated_when_)}}, // int32 inhcount = 11 [json_name = "inhcount"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Constraint, _impl_.inhcount_), 63>(), {88, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.inhcount_)}}, // bool nulls_not_distinct = 12 [json_name = "nulls_not_distinct"]; {::_pbi::TcParser::SingularVarintNoZag1(), {96, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.nulls_not_distinct_)}}, // repeated .pg_query.Node keys = 13 [json_name = "keys"]; {::_pbi::TcParser::FastMtR1, {106, 63, 1, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.keys_)}}, // repeated .pg_query.Node including = 14 [json_name = "including"]; {::_pbi::TcParser::FastMtR1, {114, 63, 2, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.including_)}}, // repeated .pg_query.Node exclusions = 15 [json_name = "exclusions"]; {::_pbi::TcParser::FastMtR1, {122, 63, 3, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.exclusions_)}}, // repeated .pg_query.Node options = 16 [json_name = "options"]; {::_pbi::TcParser::FastMtR2, {386, 63, 4, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.options_)}}, // string indexname = 17 [json_name = "indexname"]; {::_pbi::TcParser::FastUS2, {394, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.indexname_)}}, // string indexspace = 18 [json_name = "indexspace"]; {::_pbi::TcParser::FastUS2, {402, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.indexspace_)}}, // bool reset_default_tblspc = 19 [json_name = "reset_default_tblspc"]; {::_pbi::TcParser::FastV8S2, {408, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.reset_default_tblspc_)}}, // string access_method = 20 [json_name = "access_method"]; {::_pbi::TcParser::FastUS2, {418, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.access_method_)}}, // .pg_query.Node where_clause = 21 [json_name = "where_clause"]; {::_pbi::TcParser::FastMtS2, {426, 1, 5, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.where_clause_)}}, // .pg_query.RangeVar pktable = 22 [json_name = "pktable"]; {::_pbi::TcParser::FastMtS2, {434, 2, 6, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.pktable_)}}, // repeated .pg_query.Node fk_attrs = 23 [json_name = "fk_attrs"]; {::_pbi::TcParser::FastMtR2, {442, 63, 7, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.fk_attrs_)}}, // repeated .pg_query.Node pk_attrs = 24 [json_name = "pk_attrs"]; {::_pbi::TcParser::FastMtR2, {450, 63, 8, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.pk_attrs_)}}, // string fk_matchtype = 25 [json_name = "fk_matchtype"]; {::_pbi::TcParser::FastUS2, {458, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.fk_matchtype_)}}, // string fk_upd_action = 26 [json_name = "fk_upd_action"]; {::_pbi::TcParser::FastUS2, {466, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.fk_upd_action_)}}, // string fk_del_action = 27 [json_name = "fk_del_action"]; {::_pbi::TcParser::FastUS2, {474, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.fk_del_action_)}}, // repeated .pg_query.Node fk_del_set_cols = 28 [json_name = "fk_del_set_cols"]; {::_pbi::TcParser::FastMtR2, {482, 63, 9, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.fk_del_set_cols_)}}, // repeated .pg_query.Node old_conpfeqop = 29 [json_name = "old_conpfeqop"]; {::_pbi::TcParser::FastMtR2, {490, 63, 10, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.old_conpfeqop_)}}, // uint32 old_pktable_oid = 30 [json_name = "old_pktable_oid"]; {::_pbi::TcParser::FastV32S2, {496, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.old_pktable_oid_)}}, // int32 location = 31 [json_name = "location"]; {::_pbi::TcParser::FastV32S2, {504, 63, 0, PROTOBUF_FIELD_OFFSET(Constraint, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.ConstrType contype = 1 [json_name = "contype"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.contype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // string conname = 2 [json_name = "conname"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.conname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool deferrable = 3 [json_name = "deferrable"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.deferrable_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool initdeferred = 4 [json_name = "initdeferred"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.initdeferred_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool skip_validation = 5 [json_name = "skip_validation"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.skip_validation_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool initially_valid = 6 [json_name = "initially_valid"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.initially_valid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool is_no_inherit = 7 [json_name = "is_no_inherit"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.is_no_inherit_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.Node raw_expr = 8 [json_name = "raw_expr"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.raw_expr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string cooked_expr = 9 [json_name = "cooked_expr"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.cooked_expr_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string generated_when = 10 [json_name = "generated_when"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.generated_when_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // int32 inhcount = 11 [json_name = "inhcount"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.inhcount_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // bool nulls_not_distinct = 12 [json_name = "nulls_not_distinct"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.nulls_not_distinct_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node keys = 13 [json_name = "keys"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.keys_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node including = 14 [json_name = "including"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.including_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node exclusions = 15 [json_name = "exclusions"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.exclusions_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 16 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.options_), -1, 4, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string indexname = 17 [json_name = "indexname"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.indexname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string indexspace = 18 [json_name = "indexspace"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.indexspace_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool reset_default_tblspc = 19 [json_name = "reset_default_tblspc"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.reset_default_tblspc_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // string access_method = 20 [json_name = "access_method"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.access_method_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.Node where_clause = 21 [json_name = "where_clause"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.where_clause_), _Internal::kHasBitsOffset + 1, 5, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RangeVar pktable = 22 [json_name = "pktable"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.pktable_), _Internal::kHasBitsOffset + 2, 6, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node fk_attrs = 23 [json_name = "fk_attrs"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.fk_attrs_), -1, 7, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node pk_attrs = 24 [json_name = "pk_attrs"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.pk_attrs_), -1, 8, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string fk_matchtype = 25 [json_name = "fk_matchtype"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.fk_matchtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string fk_upd_action = 26 [json_name = "fk_upd_action"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.fk_upd_action_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string fk_del_action = 27 [json_name = "fk_del_action"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.fk_del_action_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node fk_del_set_cols = 28 [json_name = "fk_del_set_cols"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.fk_del_set_cols_), -1, 9, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node old_conpfeqop = 29 [json_name = "old_conpfeqop"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.old_conpfeqop_), -1, 10, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 old_pktable_oid = 30 [json_name = "old_pktable_oid"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.old_pktable_oid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // int32 location = 31 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(Constraint, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\23\0\7\0\0\0\0\0\0\13\16\0\0\0\0\0\0\11\12\0\15\0\0\0\0\14\15\15\0\0\0\0" "pg_query.Constraint" "conname" "cooked_expr" "generated_when" "indexname" "indexspace" "access_method" "fk_matchtype" "fk_upd_action" "fk_del_action" }}, }; ::uint8_t* Constraint::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Constraint) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.ConstrType contype = 1 [json_name = "contype"]; if (this->_internal_contype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_contype(), target); } // string conname = 2 [json_name = "conname"]; if (!this->_internal_conname().empty()) { const std::string& _s = this->_internal_conname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.conname"); target = stream->WriteStringMaybeAliased(2, _s, target); } // bool deferrable = 3 [json_name = "deferrable"]; if (this->_internal_deferrable() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_deferrable(), target); } // bool initdeferred = 4 [json_name = "initdeferred"]; if (this->_internal_initdeferred() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_initdeferred(), target); } // bool skip_validation = 5 [json_name = "skip_validation"]; if (this->_internal_skip_validation() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_skip_validation(), target); } // bool initially_valid = 6 [json_name = "initially_valid"]; if (this->_internal_initially_valid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 6, this->_internal_initially_valid(), target); } // bool is_no_inherit = 7 [json_name = "is_no_inherit"]; if (this->_internal_is_no_inherit() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 7, this->_internal_is_no_inherit(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node raw_expr = 8 [json_name = "raw_expr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 8, _Internal::raw_expr(this), _Internal::raw_expr(this).GetCachedSize(), target, stream); } // string cooked_expr = 9 [json_name = "cooked_expr"]; if (!this->_internal_cooked_expr().empty()) { const std::string& _s = this->_internal_cooked_expr(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.cooked_expr"); target = stream->WriteStringMaybeAliased(9, _s, target); } // string generated_when = 10 [json_name = "generated_when"]; if (!this->_internal_generated_when().empty()) { const std::string& _s = this->_internal_generated_when(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.generated_when"); target = stream->WriteStringMaybeAliased(10, _s, target); } // int32 inhcount = 11 [json_name = "inhcount"]; if (this->_internal_inhcount() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<11>( stream, this->_internal_inhcount(), target); } // bool nulls_not_distinct = 12 [json_name = "nulls_not_distinct"]; if (this->_internal_nulls_not_distinct() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 12, this->_internal_nulls_not_distinct(), target); } // repeated .pg_query.Node keys = 13 [json_name = "keys"]; for (unsigned i = 0, n = static_cast(this->_internal_keys_size()); i < n; i++) { const auto& repfield = this->_internal_keys().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(13, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node including = 14 [json_name = "including"]; for (unsigned i = 0, n = static_cast(this->_internal_including_size()); i < n; i++) { const auto& repfield = this->_internal_including().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(14, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node exclusions = 15 [json_name = "exclusions"]; for (unsigned i = 0, n = static_cast(this->_internal_exclusions_size()); i < n; i++) { const auto& repfield = this->_internal_exclusions().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(15, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 16 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(16, repfield, repfield.GetCachedSize(), target, stream); } // string indexname = 17 [json_name = "indexname"]; if (!this->_internal_indexname().empty()) { const std::string& _s = this->_internal_indexname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.indexname"); target = stream->WriteStringMaybeAliased(17, _s, target); } // string indexspace = 18 [json_name = "indexspace"]; if (!this->_internal_indexspace().empty()) { const std::string& _s = this->_internal_indexspace(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.indexspace"); target = stream->WriteStringMaybeAliased(18, _s, target); } // bool reset_default_tblspc = 19 [json_name = "reset_default_tblspc"]; if (this->_internal_reset_default_tblspc() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 19, this->_internal_reset_default_tblspc(), target); } // string access_method = 20 [json_name = "access_method"]; if (!this->_internal_access_method().empty()) { const std::string& _s = this->_internal_access_method(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.access_method"); target = stream->WriteStringMaybeAliased(20, _s, target); } // .pg_query.Node where_clause = 21 [json_name = "where_clause"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 21, _Internal::where_clause(this), _Internal::where_clause(this).GetCachedSize(), target, stream); } // .pg_query.RangeVar pktable = 22 [json_name = "pktable"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 22, _Internal::pktable(this), _Internal::pktable(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node fk_attrs = 23 [json_name = "fk_attrs"]; for (unsigned i = 0, n = static_cast(this->_internal_fk_attrs_size()); i < n; i++) { const auto& repfield = this->_internal_fk_attrs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(23, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node pk_attrs = 24 [json_name = "pk_attrs"]; for (unsigned i = 0, n = static_cast(this->_internal_pk_attrs_size()); i < n; i++) { const auto& repfield = this->_internal_pk_attrs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(24, repfield, repfield.GetCachedSize(), target, stream); } // string fk_matchtype = 25 [json_name = "fk_matchtype"]; if (!this->_internal_fk_matchtype().empty()) { const std::string& _s = this->_internal_fk_matchtype(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.fk_matchtype"); target = stream->WriteStringMaybeAliased(25, _s, target); } // string fk_upd_action = 26 [json_name = "fk_upd_action"]; if (!this->_internal_fk_upd_action().empty()) { const std::string& _s = this->_internal_fk_upd_action(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.fk_upd_action"); target = stream->WriteStringMaybeAliased(26, _s, target); } // string fk_del_action = 27 [json_name = "fk_del_action"]; if (!this->_internal_fk_del_action().empty()) { const std::string& _s = this->_internal_fk_del_action(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.fk_del_action"); target = stream->WriteStringMaybeAliased(27, _s, target); } // repeated .pg_query.Node fk_del_set_cols = 28 [json_name = "fk_del_set_cols"]; for (unsigned i = 0, n = static_cast(this->_internal_fk_del_set_cols_size()); i < n; i++) { const auto& repfield = this->_internal_fk_del_set_cols().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(28, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node old_conpfeqop = 29 [json_name = "old_conpfeqop"]; for (unsigned i = 0, n = static_cast(this->_internal_old_conpfeqop_size()); i < n; i++) { const auto& repfield = this->_internal_old_conpfeqop().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(29, repfield, repfield.GetCachedSize(), target, stream); } // uint32 old_pktable_oid = 30 [json_name = "old_pktable_oid"]; if (this->_internal_old_pktable_oid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 30, this->_internal_old_pktable_oid(), target); } // int32 location = 31 [json_name = "location"]; if (this->_internal_location() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteInt32ToArray( 31, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node keys = 13 [json_name = "keys"]; total_size += 1UL * this->_internal_keys_size(); for (const auto& msg : this->_internal_keys()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node including = 14 [json_name = "including"]; total_size += 1UL * this->_internal_including_size(); for (const auto& msg : this->_internal_including()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node exclusions = 15 [json_name = "exclusions"]; total_size += 1UL * this->_internal_exclusions_size(); for (const auto& msg : this->_internal_exclusions()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 16 [json_name = "options"]; total_size += 2UL * this->_internal_options_size(); for (const auto& msg : this->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node fk_attrs = 23 [json_name = "fk_attrs"]; total_size += 2UL * this->_internal_fk_attrs_size(); for (const auto& msg : this->_internal_fk_attrs()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node pk_attrs = 24 [json_name = "pk_attrs"]; total_size += 2UL * this->_internal_pk_attrs_size(); for (const auto& msg : this->_internal_pk_attrs()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node fk_del_set_cols = 28 [json_name = "fk_del_set_cols"]; total_size += 2UL * this->_internal_fk_del_set_cols_size(); for (const auto& msg : this->_internal_fk_del_set_cols()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node old_conpfeqop = 29 [json_name = "old_conpfeqop"]; total_size += 2UL * this->_internal_old_conpfeqop_size(); for (const auto& msg : this->_internal_old_conpfeqop()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string conname = 2 [json_name = "conname"]; if (!this->_internal_conname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_conname()); } // string cooked_expr = 9 [json_name = "cooked_expr"]; if (!this->_internal_cooked_expr().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_cooked_expr()); } // string generated_when = 10 [json_name = "generated_when"]; if (!this->_internal_generated_when().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_generated_when()); } // string indexname = 17 [json_name = "indexname"]; if (!this->_internal_indexname().empty()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_indexname()); } // string indexspace = 18 [json_name = "indexspace"]; if (!this->_internal_indexspace().empty()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_indexspace()); } // string access_method = 20 [json_name = "access_method"]; if (!this->_internal_access_method().empty()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_access_method()); } // string fk_matchtype = 25 [json_name = "fk_matchtype"]; if (!this->_internal_fk_matchtype().empty()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_fk_matchtype()); } // string fk_upd_action = 26 [json_name = "fk_upd_action"]; if (!this->_internal_fk_upd_action().empty()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_fk_upd_action()); } // string fk_del_action = 27 [json_name = "fk_del_action"]; if (!this->_internal_fk_del_action().empty()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_fk_del_action()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.Node raw_expr = 8 [json_name = "raw_expr"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.raw_expr_); } // .pg_query.Node where_clause = 21 [json_name = "where_clause"]; if (cached_has_bits & 0x00000002u) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.where_clause_); } // .pg_query.RangeVar pktable = 22 [json_name = "pktable"]; if (cached_has_bits & 0x00000004u) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.pktable_); } } // .pg_query.ConstrType contype = 1 [json_name = "contype"]; if (this->_internal_contype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_contype()); } // bool deferrable = 3 [json_name = "deferrable"]; if (this->_internal_deferrable() != 0) { total_size += 2; } // bool initdeferred = 4 [json_name = "initdeferred"]; if (this->_internal_initdeferred() != 0) { total_size += 2; } // bool skip_validation = 5 [json_name = "skip_validation"]; if (this->_internal_skip_validation() != 0) { total_size += 2; } // bool initially_valid = 6 [json_name = "initially_valid"]; if (this->_internal_initially_valid() != 0) { total_size += 2; } // int32 inhcount = 11 [json_name = "inhcount"]; if (this->_internal_inhcount() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_inhcount()); } // bool is_no_inherit = 7 [json_name = "is_no_inherit"]; if (this->_internal_is_no_inherit() != 0) { total_size += 2; } // bool nulls_not_distinct = 12 [json_name = "nulls_not_distinct"]; if (this->_internal_nulls_not_distinct() != 0) { total_size += 2; } // bool reset_default_tblspc = 19 [json_name = "reset_default_tblspc"]; if (this->_internal_reset_default_tblspc() != 0) { total_size += 3; } // uint32 old_pktable_oid = 30 [json_name = "old_pktable_oid"]; if (this->_internal_old_pktable_oid() != 0) { total_size += 2 + ::_pbi::WireFormatLite::UInt32Size( this->_internal_old_pktable_oid()); } // int32 location = 31 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += 2 + ::_pbi::WireFormatLite::Int32Size( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData Constraint::_class_data_ = { Constraint::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* Constraint::GetClassData() const { return &_class_data_; } void Constraint::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Constraint) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_keys()->MergeFrom( from._internal_keys()); _this->_internal_mutable_including()->MergeFrom( from._internal_including()); _this->_internal_mutable_exclusions()->MergeFrom( from._internal_exclusions()); _this->_internal_mutable_options()->MergeFrom( from._internal_options()); _this->_internal_mutable_fk_attrs()->MergeFrom( from._internal_fk_attrs()); _this->_internal_mutable_pk_attrs()->MergeFrom( from._internal_pk_attrs()); _this->_internal_mutable_fk_del_set_cols()->MergeFrom( from._internal_fk_del_set_cols()); _this->_internal_mutable_old_conpfeqop()->MergeFrom( from._internal_old_conpfeqop()); if (!from._internal_conname().empty()) { _this->_internal_set_conname(from._internal_conname()); } if (!from._internal_cooked_expr().empty()) { _this->_internal_set_cooked_expr(from._internal_cooked_expr()); } if (!from._internal_generated_when().empty()) { _this->_internal_set_generated_when(from._internal_generated_when()); } if (!from._internal_indexname().empty()) { _this->_internal_set_indexname(from._internal_indexname()); } if (!from._internal_indexspace().empty()) { _this->_internal_set_indexspace(from._internal_indexspace()); } if (!from._internal_access_method().empty()) { _this->_internal_set_access_method(from._internal_access_method()); } if (!from._internal_fk_matchtype().empty()) { _this->_internal_set_fk_matchtype(from._internal_fk_matchtype()); } if (!from._internal_fk_upd_action().empty()) { _this->_internal_set_fk_upd_action(from._internal_fk_upd_action()); } if (!from._internal_fk_del_action().empty()) { _this->_internal_set_fk_del_action(from._internal_fk_del_action()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_raw_expr()->::pg_query::Node::MergeFrom( from._internal_raw_expr()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_where_clause()->::pg_query::Node::MergeFrom( from._internal_where_clause()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_pktable()->::pg_query::RangeVar::MergeFrom( from._internal_pktable()); } } if (from._internal_contype() != 0) { _this->_internal_set_contype(from._internal_contype()); } if (from._internal_deferrable() != 0) { _this->_internal_set_deferrable(from._internal_deferrable()); } if (from._internal_initdeferred() != 0) { _this->_internal_set_initdeferred(from._internal_initdeferred()); } if (from._internal_skip_validation() != 0) { _this->_internal_set_skip_validation(from._internal_skip_validation()); } if (from._internal_initially_valid() != 0) { _this->_internal_set_initially_valid(from._internal_initially_valid()); } if (from._internal_inhcount() != 0) { _this->_internal_set_inhcount(from._internal_inhcount()); } if (from._internal_is_no_inherit() != 0) { _this->_internal_set_is_no_inherit(from._internal_is_no_inherit()); } if (from._internal_nulls_not_distinct() != 0) { _this->_internal_set_nulls_not_distinct(from._internal_nulls_not_distinct()); } if (from._internal_reset_default_tblspc() != 0) { _this->_internal_set_reset_default_tblspc(from._internal_reset_default_tblspc()); } if (from._internal_old_pktable_oid() != 0) { _this->_internal_set_old_pktable_oid(from._internal_old_pktable_oid()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void Constraint::CopyFrom(const Constraint& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Constraint) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool Constraint::IsInitialized() const { return true; } ::_pbi::CachedSize* Constraint::AccessCachedSize() const { return &_impl_._cached_size_; } void Constraint::InternalSwap(Constraint* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.keys_.InternalSwap(&other->_impl_.keys_); _impl_.including_.InternalSwap(&other->_impl_.including_); _impl_.exclusions_.InternalSwap(&other->_impl_.exclusions_); _impl_.options_.InternalSwap(&other->_impl_.options_); _impl_.fk_attrs_.InternalSwap(&other->_impl_.fk_attrs_); _impl_.pk_attrs_.InternalSwap(&other->_impl_.pk_attrs_); _impl_.fk_del_set_cols_.InternalSwap(&other->_impl_.fk_del_set_cols_); _impl_.old_conpfeqop_.InternalSwap(&other->_impl_.old_conpfeqop_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.conname_, &other->_impl_.conname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.cooked_expr_, &other->_impl_.cooked_expr_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.generated_when_, &other->_impl_.generated_when_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.indexname_, &other->_impl_.indexname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.indexspace_, &other->_impl_.indexspace_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.access_method_, &other->_impl_.access_method_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.fk_matchtype_, &other->_impl_.fk_matchtype_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.fk_upd_action_, &other->_impl_.fk_upd_action_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.fk_del_action_, &other->_impl_.fk_del_action_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(Constraint, _impl_.location_) + sizeof(Constraint::_impl_.location_) - PROTOBUF_FIELD_OFFSET(Constraint, _impl_.raw_expr_)>( reinterpret_cast(&_impl_.raw_expr_), reinterpret_cast(&other->_impl_.raw_expr_)); } ::google::protobuf::Metadata Constraint::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[166]); } // =================================================================== class CreateTableSpaceStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreateTableSpaceStmt, _impl_._has_bits_); static const ::pg_query::RoleSpec& owner(const CreateTableSpaceStmt* msg); static void set_has_owner(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RoleSpec& CreateTableSpaceStmt::_Internal::owner(const CreateTableSpaceStmt* msg) { return *msg->_impl_.owner_; } CreateTableSpaceStmt::CreateTableSpaceStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateTableSpaceStmt) } inline PROTOBUF_NDEBUG_INLINE CreateTableSpaceStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, options_{visibility, arena, from.options_}, tablespacename_(arena, from.tablespacename_), location_(arena, from.location_) {} CreateTableSpaceStmt::CreateTableSpaceStmt( ::google::protobuf::Arena* arena, const CreateTableSpaceStmt& from) : ::google::protobuf::Message(arena) { CreateTableSpaceStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.owner_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RoleSpec>(arena, *from._impl_.owner_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.CreateTableSpaceStmt) } inline PROTOBUF_NDEBUG_INLINE CreateTableSpaceStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, options_{visibility, arena}, tablespacename_(arena), location_(arena) {} inline void CreateTableSpaceStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.owner_ = {}; } CreateTableSpaceStmt::~CreateTableSpaceStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateTableSpaceStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateTableSpaceStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.tablespacename_.Destroy(); _impl_.location_.Destroy(); delete _impl_.owner_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateTableSpaceStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateTableSpaceStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.tablespacename_.ClearToEmpty(); _impl_.location_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.owner_ != nullptr); _impl_.owner_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateTableSpaceStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 60, 2> CreateTableSpaceStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CreateTableSpaceStmt, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateTableSpaceStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node options = 4 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(CreateTableSpaceStmt, _impl_.options_)}}, // string tablespacename = 1 [json_name = "tablespacename"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTableSpaceStmt, _impl_.tablespacename_)}}, // .pg_query.RoleSpec owner = 2 [json_name = "owner"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(CreateTableSpaceStmt, _impl_.owner_)}}, // string location = 3 [json_name = "location"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTableSpaceStmt, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // string tablespacename = 1 [json_name = "tablespacename"]; {PROTOBUF_FIELD_OFFSET(CreateTableSpaceStmt, _impl_.tablespacename_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.RoleSpec owner = 2 [json_name = "owner"]; {PROTOBUF_FIELD_OFFSET(CreateTableSpaceStmt, _impl_.owner_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string location = 3 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(CreateTableSpaceStmt, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node options = 4 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(CreateTableSpaceStmt, _impl_.options_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RoleSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\35\16\0\10\0\0\0\0" "pg_query.CreateTableSpaceStmt" "tablespacename" "location" }}, }; ::uint8_t* CreateTableSpaceStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateTableSpaceStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string tablespacename = 1 [json_name = "tablespacename"]; if (!this->_internal_tablespacename().empty()) { const std::string& _s = this->_internal_tablespacename(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateTableSpaceStmt.tablespacename"); target = stream->WriteStringMaybeAliased(1, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RoleSpec owner = 2 [json_name = "owner"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::owner(this), _Internal::owner(this).GetCachedSize(), target, stream); } // string location = 3 [json_name = "location"]; if (!this->_internal_location().empty()) { const std::string& _s = this->_internal_location(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateTableSpaceStmt.location"); target = stream->WriteStringMaybeAliased(3, _s, target); } // repeated .pg_query.Node options = 4 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string tablespacename = 1 [json_name = "tablespacename"]; if (!this->_internal_tablespacename().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_tablespacename()); } // string location = 3 [json_name = "location"]; if (!this->_internal_location().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_location()); } // .pg_query.RoleSpec owner = 2 [json_name = "owner"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.owner_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateTableSpaceStmt::_class_data_ = { CreateTableSpaceStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateTableSpaceStmt::GetClassData() const { return &_class_data_; } void CreateTableSpaceStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateTableSpaceStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_tablespacename().empty()) { _this->_internal_set_tablespacename(from._internal_tablespacename()); } if (!from._internal_location().empty()) { _this->_internal_set_location(from._internal_location()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_owner()->::pg_query::RoleSpec::MergeFrom( from._internal_owner()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateTableSpaceStmt::CopyFrom(const CreateTableSpaceStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateTableSpaceStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateTableSpaceStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateTableSpaceStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateTableSpaceStmt::InternalSwap(CreateTableSpaceStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.tablespacename_, &other->_impl_.tablespacename_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.location_, &other->_impl_.location_, arena); swap(_impl_.owner_, other->_impl_.owner_); } ::google::protobuf::Metadata CreateTableSpaceStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[167]); } // =================================================================== class DropTableSpaceStmt::_Internal { public: }; DropTableSpaceStmt::DropTableSpaceStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DropTableSpaceStmt) } inline PROTOBUF_NDEBUG_INLINE DropTableSpaceStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : tablespacename_(arena, from.tablespacename_), _cached_size_{0} {} DropTableSpaceStmt::DropTableSpaceStmt( ::google::protobuf::Arena* arena, const DropTableSpaceStmt& from) : ::google::protobuf::Message(arena) { DropTableSpaceStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.missing_ok_ = from._impl_.missing_ok_; // @@protoc_insertion_point(copy_constructor:pg_query.DropTableSpaceStmt) } inline PROTOBUF_NDEBUG_INLINE DropTableSpaceStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : tablespacename_(arena), _cached_size_{0} {} inline void DropTableSpaceStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.missing_ok_ = {}; } DropTableSpaceStmt::~DropTableSpaceStmt() { // @@protoc_insertion_point(destructor:pg_query.DropTableSpaceStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DropTableSpaceStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.tablespacename_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void DropTableSpaceStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DropTableSpaceStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.tablespacename_.ClearToEmpty(); _impl_.missing_ok_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DropTableSpaceStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 0, 50, 2> DropTableSpaceStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_DropTableSpaceStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool missing_ok = 2 [json_name = "missing_ok"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(DropTableSpaceStmt, _impl_.missing_ok_)}}, // string tablespacename = 1 [json_name = "tablespacename"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(DropTableSpaceStmt, _impl_.tablespacename_)}}, }}, {{ 65535, 65535 }}, {{ // string tablespacename = 1 [json_name = "tablespacename"]; {PROTOBUF_FIELD_OFFSET(DropTableSpaceStmt, _impl_.tablespacename_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool missing_ok = 2 [json_name = "missing_ok"]; {PROTOBUF_FIELD_OFFSET(DropTableSpaceStmt, _impl_.missing_ok_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, // no aux_entries {{ "\33\16\0\0\0\0\0\0" "pg_query.DropTableSpaceStmt" "tablespacename" }}, }; ::uint8_t* DropTableSpaceStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DropTableSpaceStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string tablespacename = 1 [json_name = "tablespacename"]; if (!this->_internal_tablespacename().empty()) { const std::string& _s = this->_internal_tablespacename(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.DropTableSpaceStmt.tablespacename"); target = stream->WriteStringMaybeAliased(1, _s, target); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_tablespacename().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_tablespacename()); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DropTableSpaceStmt::_class_data_ = { DropTableSpaceStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DropTableSpaceStmt::GetClassData() const { return &_class_data_; } void DropTableSpaceStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DropTableSpaceStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_tablespacename().empty()) { _this->_internal_set_tablespacename(from._internal_tablespacename()); } if (from._internal_missing_ok() != 0) { _this->_internal_set_missing_ok(from._internal_missing_ok()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DropTableSpaceStmt::CopyFrom(const DropTableSpaceStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DropTableSpaceStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DropTableSpaceStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* DropTableSpaceStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void DropTableSpaceStmt::InternalSwap(DropTableSpaceStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.tablespacename_, &other->_impl_.tablespacename_, arena); swap(_impl_.missing_ok_, other->_impl_.missing_ok_); } ::google::protobuf::Metadata DropTableSpaceStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[168]); } // =================================================================== class AlterTableSpaceOptionsStmt::_Internal { public: }; AlterTableSpaceOptionsStmt::AlterTableSpaceOptionsStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterTableSpaceOptionsStmt) } inline PROTOBUF_NDEBUG_INLINE AlterTableSpaceOptionsStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : options_{visibility, arena, from.options_}, tablespacename_(arena, from.tablespacename_), _cached_size_{0} {} AlterTableSpaceOptionsStmt::AlterTableSpaceOptionsStmt( ::google::protobuf::Arena* arena, const AlterTableSpaceOptionsStmt& from) : ::google::protobuf::Message(arena) { AlterTableSpaceOptionsStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.is_reset_ = from._impl_.is_reset_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterTableSpaceOptionsStmt) } inline PROTOBUF_NDEBUG_INLINE AlterTableSpaceOptionsStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : options_{visibility, arena}, tablespacename_(arena), _cached_size_{0} {} inline void AlterTableSpaceOptionsStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.is_reset_ = {}; } AlterTableSpaceOptionsStmt::~AlterTableSpaceOptionsStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterTableSpaceOptionsStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterTableSpaceOptionsStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.tablespacename_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterTableSpaceOptionsStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterTableSpaceOptionsStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.tablespacename_.ClearToEmpty(); _impl_.is_reset_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterTableSpaceOptionsStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 58, 2> AlterTableSpaceOptionsStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterTableSpaceOptionsStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string tablespacename = 1 [json_name = "tablespacename"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableSpaceOptionsStmt, _impl_.tablespacename_)}}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableSpaceOptionsStmt, _impl_.options_)}}, // bool is_reset = 3 [json_name = "isReset"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableSpaceOptionsStmt, _impl_.is_reset_)}}, }}, {{ 65535, 65535 }}, {{ // string tablespacename = 1 [json_name = "tablespacename"]; {PROTOBUF_FIELD_OFFSET(AlterTableSpaceOptionsStmt, _impl_.tablespacename_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(AlterTableSpaceOptionsStmt, _impl_.options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool is_reset = 3 [json_name = "isReset"]; {PROTOBUF_FIELD_OFFSET(AlterTableSpaceOptionsStmt, _impl_.is_reset_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\43\16\0\0\0\0\0\0" "pg_query.AlterTableSpaceOptionsStmt" "tablespacename" }}, }; ::uint8_t* AlterTableSpaceOptionsStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterTableSpaceOptionsStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string tablespacename = 1 [json_name = "tablespacename"]; if (!this->_internal_tablespacename().empty()) { const std::string& _s = this->_internal_tablespacename(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterTableSpaceOptionsStmt.tablespacename"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // bool is_reset = 3 [json_name = "isReset"]; if (this->_internal_is_reset() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_is_reset(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string tablespacename = 1 [json_name = "tablespacename"]; if (!this->_internal_tablespacename().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_tablespacename()); } // bool is_reset = 3 [json_name = "isReset"]; if (this->_internal_is_reset() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterTableSpaceOptionsStmt::_class_data_ = { AlterTableSpaceOptionsStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterTableSpaceOptionsStmt::GetClassData() const { return &_class_data_; } void AlterTableSpaceOptionsStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterTableSpaceOptionsStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_tablespacename().empty()) { _this->_internal_set_tablespacename(from._internal_tablespacename()); } if (from._internal_is_reset() != 0) { _this->_internal_set_is_reset(from._internal_is_reset()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterTableSpaceOptionsStmt::CopyFrom(const AlterTableSpaceOptionsStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterTableSpaceOptionsStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterTableSpaceOptionsStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterTableSpaceOptionsStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterTableSpaceOptionsStmt::InternalSwap(AlterTableSpaceOptionsStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.tablespacename_, &other->_impl_.tablespacename_, arena); swap(_impl_.is_reset_, other->_impl_.is_reset_); } ::google::protobuf::Metadata AlterTableSpaceOptionsStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[169]); } // =================================================================== class AlterTableMoveAllStmt::_Internal { public: }; AlterTableMoveAllStmt::AlterTableMoveAllStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterTableMoveAllStmt) } inline PROTOBUF_NDEBUG_INLINE AlterTableMoveAllStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : roles_{visibility, arena, from.roles_}, orig_tablespacename_(arena, from.orig_tablespacename_), new_tablespacename_(arena, from.new_tablespacename_), _cached_size_{0} {} AlterTableMoveAllStmt::AlterTableMoveAllStmt( ::google::protobuf::Arena* arena, const AlterTableMoveAllStmt& from) : ::google::protobuf::Message(arena) { AlterTableMoveAllStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, objtype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, objtype_), offsetof(Impl_, nowait_) - offsetof(Impl_, objtype_) + sizeof(Impl_::nowait_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterTableMoveAllStmt) } inline PROTOBUF_NDEBUG_INLINE AlterTableMoveAllStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : roles_{visibility, arena}, orig_tablespacename_(arena), new_tablespacename_(arena), _cached_size_{0} {} inline void AlterTableMoveAllStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, objtype_), 0, offsetof(Impl_, nowait_) - offsetof(Impl_, objtype_) + sizeof(Impl_::nowait_)); } AlterTableMoveAllStmt::~AlterTableMoveAllStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterTableMoveAllStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterTableMoveAllStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.orig_tablespacename_.Destroy(); _impl_.new_tablespacename_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterTableMoveAllStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterTableMoveAllStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.roles_.Clear(); _impl_.orig_tablespacename_.ClearToEmpty(); _impl_.new_tablespacename_.ClearToEmpty(); ::memset(&_impl_.objtype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.nowait_) - reinterpret_cast(&_impl_.objtype_)) + sizeof(_impl_.nowait_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterTableMoveAllStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 1, 76, 2> AlterTableMoveAllStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterTableMoveAllStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableMoveAllStmt, _impl_.orig_tablespacename_)}}, // .pg_query.ObjectType objtype = 2 [json_name = "objtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterTableMoveAllStmt, _impl_.objtype_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableMoveAllStmt, _impl_.objtype_)}}, // repeated .pg_query.Node roles = 3 [json_name = "roles"]; {::_pbi::TcParser::FastMtR1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableMoveAllStmt, _impl_.roles_)}}, // string new_tablespacename = 4 [json_name = "new_tablespacename"]; {::_pbi::TcParser::FastUS1, {34, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableMoveAllStmt, _impl_.new_tablespacename_)}}, // bool nowait = 5 [json_name = "nowait"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTableMoveAllStmt, _impl_.nowait_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; {PROTOBUF_FIELD_OFFSET(AlterTableMoveAllStmt, _impl_.orig_tablespacename_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.ObjectType objtype = 2 [json_name = "objtype"]; {PROTOBUF_FIELD_OFFSET(AlterTableMoveAllStmt, _impl_.objtype_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node roles = 3 [json_name = "roles"]; {PROTOBUF_FIELD_OFFSET(AlterTableMoveAllStmt, _impl_.roles_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string new_tablespacename = 4 [json_name = "new_tablespacename"]; {PROTOBUF_FIELD_OFFSET(AlterTableMoveAllStmt, _impl_.new_tablespacename_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool nowait = 5 [json_name = "nowait"]; {PROTOBUF_FIELD_OFFSET(AlterTableMoveAllStmt, _impl_.nowait_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\36\23\0\0\22\0\0\0" "pg_query.AlterTableMoveAllStmt" "orig_tablespacename" "new_tablespacename" }}, }; ::uint8_t* AlterTableMoveAllStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterTableMoveAllStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; if (!this->_internal_orig_tablespacename().empty()) { const std::string& _s = this->_internal_orig_tablespacename(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterTableMoveAllStmt.orig_tablespacename"); target = stream->WriteStringMaybeAliased(1, _s, target); } // .pg_query.ObjectType objtype = 2 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_objtype(), target); } // repeated .pg_query.Node roles = 3 [json_name = "roles"]; for (unsigned i = 0, n = static_cast(this->_internal_roles_size()); i < n; i++) { const auto& repfield = this->_internal_roles().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // string new_tablespacename = 4 [json_name = "new_tablespacename"]; if (!this->_internal_new_tablespacename().empty()) { const std::string& _s = this->_internal_new_tablespacename(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterTableMoveAllStmt.new_tablespacename"); target = stream->WriteStringMaybeAliased(4, _s, target); } // bool nowait = 5 [json_name = "nowait"]; if (this->_internal_nowait() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_nowait(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_roles()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; if (!this->_internal_orig_tablespacename().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_orig_tablespacename()); } // string new_tablespacename = 4 [json_name = "new_tablespacename"]; if (!this->_internal_new_tablespacename().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_new_tablespacename()); } // .pg_query.ObjectType objtype = 2 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_objtype()); } // bool nowait = 5 [json_name = "nowait"]; if (this->_internal_nowait() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterTableMoveAllStmt::_class_data_ = { AlterTableMoveAllStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterTableMoveAllStmt::GetClassData() const { return &_class_data_; } void AlterTableMoveAllStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterTableMoveAllStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_roles()->MergeFrom( from._internal_roles()); if (!from._internal_orig_tablespacename().empty()) { _this->_internal_set_orig_tablespacename(from._internal_orig_tablespacename()); } if (!from._internal_new_tablespacename().empty()) { _this->_internal_set_new_tablespacename(from._internal_new_tablespacename()); } if (from._internal_objtype() != 0) { _this->_internal_set_objtype(from._internal_objtype()); } if (from._internal_nowait() != 0) { _this->_internal_set_nowait(from._internal_nowait()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterTableMoveAllStmt::CopyFrom(const AlterTableMoveAllStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterTableMoveAllStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterTableMoveAllStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterTableMoveAllStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterTableMoveAllStmt::InternalSwap(AlterTableMoveAllStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.roles_.InternalSwap(&other->_impl_.roles_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.orig_tablespacename_, &other->_impl_.orig_tablespacename_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.new_tablespacename_, &other->_impl_.new_tablespacename_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterTableMoveAllStmt, _impl_.nowait_) + sizeof(AlterTableMoveAllStmt::_impl_.nowait_) - PROTOBUF_FIELD_OFFSET(AlterTableMoveAllStmt, _impl_.objtype_)>( reinterpret_cast(&_impl_.objtype_), reinterpret_cast(&other->_impl_.objtype_)); } ::google::protobuf::Metadata AlterTableMoveAllStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[170]); } // =================================================================== class CreateExtensionStmt::_Internal { public: }; CreateExtensionStmt::CreateExtensionStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateExtensionStmt) } inline PROTOBUF_NDEBUG_INLINE CreateExtensionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : options_{visibility, arena, from.options_}, extname_(arena, from.extname_), _cached_size_{0} {} CreateExtensionStmt::CreateExtensionStmt( ::google::protobuf::Arena* arena, const CreateExtensionStmt& from) : ::google::protobuf::Message(arena) { CreateExtensionStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.if_not_exists_ = from._impl_.if_not_exists_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateExtensionStmt) } inline PROTOBUF_NDEBUG_INLINE CreateExtensionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : options_{visibility, arena}, extname_(arena), _cached_size_{0} {} inline void CreateExtensionStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.if_not_exists_ = {}; } CreateExtensionStmt::~CreateExtensionStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateExtensionStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateExtensionStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.extname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateExtensionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateExtensionStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.extname_.ClearToEmpty(); _impl_.if_not_exists_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateExtensionStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 44, 2> CreateExtensionStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateExtensionStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string extname = 1 [json_name = "extname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateExtensionStmt, _impl_.extname_)}}, // bool if_not_exists = 2 [json_name = "if_not_exists"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(CreateExtensionStmt, _impl_.if_not_exists_)}}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CreateExtensionStmt, _impl_.options_)}}, }}, {{ 65535, 65535 }}, {{ // string extname = 1 [json_name = "extname"]; {PROTOBUF_FIELD_OFFSET(CreateExtensionStmt, _impl_.extname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool if_not_exists = 2 [json_name = "if_not_exists"]; {PROTOBUF_FIELD_OFFSET(CreateExtensionStmt, _impl_.if_not_exists_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(CreateExtensionStmt, _impl_.options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\34\7\0\0\0\0\0\0" "pg_query.CreateExtensionStmt" "extname" }}, }; ::uint8_t* CreateExtensionStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateExtensionStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string extname = 1 [json_name = "extname"]; if (!this->_internal_extname().empty()) { const std::string& _s = this->_internal_extname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateExtensionStmt.extname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // bool if_not_exists = 2 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_if_not_exists(), target); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string extname = 1 [json_name = "extname"]; if (!this->_internal_extname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_extname()); } // bool if_not_exists = 2 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateExtensionStmt::_class_data_ = { CreateExtensionStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateExtensionStmt::GetClassData() const { return &_class_data_; } void CreateExtensionStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateExtensionStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_extname().empty()) { _this->_internal_set_extname(from._internal_extname()); } if (from._internal_if_not_exists() != 0) { _this->_internal_set_if_not_exists(from._internal_if_not_exists()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateExtensionStmt::CopyFrom(const CreateExtensionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateExtensionStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateExtensionStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateExtensionStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateExtensionStmt::InternalSwap(CreateExtensionStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.extname_, &other->_impl_.extname_, arena); swap(_impl_.if_not_exists_, other->_impl_.if_not_exists_); } ::google::protobuf::Metadata CreateExtensionStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[171]); } // =================================================================== class AlterExtensionStmt::_Internal { public: }; AlterExtensionStmt::AlterExtensionStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterExtensionStmt) } inline PROTOBUF_NDEBUG_INLINE AlterExtensionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : options_{visibility, arena, from.options_}, extname_(arena, from.extname_), _cached_size_{0} {} AlterExtensionStmt::AlterExtensionStmt( ::google::protobuf::Arena* arena, const AlterExtensionStmt& from) : ::google::protobuf::Message(arena) { AlterExtensionStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.AlterExtensionStmt) } inline PROTOBUF_NDEBUG_INLINE AlterExtensionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : options_{visibility, arena}, extname_(arena), _cached_size_{0} {} inline void AlterExtensionStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } AlterExtensionStmt::~AlterExtensionStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterExtensionStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterExtensionStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.extname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterExtensionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterExtensionStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.extname_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterExtensionStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 43, 2> AlterExtensionStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterExtensionStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node options = 2 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterExtensionStmt, _impl_.options_)}}, // string extname = 1 [json_name = "extname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterExtensionStmt, _impl_.extname_)}}, }}, {{ 65535, 65535 }}, {{ // string extname = 1 [json_name = "extname"]; {PROTOBUF_FIELD_OFFSET(AlterExtensionStmt, _impl_.extname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(AlterExtensionStmt, _impl_.options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\33\7\0\0\0\0\0\0" "pg_query.AlterExtensionStmt" "extname" }}, }; ::uint8_t* AlterExtensionStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterExtensionStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string extname = 1 [json_name = "extname"]; if (!this->_internal_extname().empty()) { const std::string& _s = this->_internal_extname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterExtensionStmt.extname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string extname = 1 [json_name = "extname"]; if (!this->_internal_extname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_extname()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterExtensionStmt::_class_data_ = { AlterExtensionStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterExtensionStmt::GetClassData() const { return &_class_data_; } void AlterExtensionStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterExtensionStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_extname().empty()) { _this->_internal_set_extname(from._internal_extname()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterExtensionStmt::CopyFrom(const AlterExtensionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterExtensionStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterExtensionStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterExtensionStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterExtensionStmt::InternalSwap(AlterExtensionStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.extname_, &other->_impl_.extname_, arena); } ::google::protobuf::Metadata AlterExtensionStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[172]); } // =================================================================== class AlterExtensionContentsStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterExtensionContentsStmt, _impl_._has_bits_); static const ::pg_query::Node& object(const AlterExtensionContentsStmt* msg); static void set_has_object(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& AlterExtensionContentsStmt::_Internal::object(const AlterExtensionContentsStmt* msg) { return *msg->_impl_.object_; } AlterExtensionContentsStmt::AlterExtensionContentsStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterExtensionContentsStmt) } inline PROTOBUF_NDEBUG_INLINE AlterExtensionContentsStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, extname_(arena, from.extname_) {} AlterExtensionContentsStmt::AlterExtensionContentsStmt( ::google::protobuf::Arena* arena, const AlterExtensionContentsStmt& from) : ::google::protobuf::Message(arena) { AlterExtensionContentsStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.object_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.object_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, action_), reinterpret_cast(&from._impl_) + offsetof(Impl_, action_), offsetof(Impl_, objtype_) - offsetof(Impl_, action_) + sizeof(Impl_::objtype_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterExtensionContentsStmt) } inline PROTOBUF_NDEBUG_INLINE AlterExtensionContentsStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, extname_(arena) {} inline void AlterExtensionContentsStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, object_), 0, offsetof(Impl_, objtype_) - offsetof(Impl_, object_) + sizeof(Impl_::objtype_)); } AlterExtensionContentsStmt::~AlterExtensionContentsStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterExtensionContentsStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterExtensionContentsStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.extname_.Destroy(); delete _impl_.object_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterExtensionContentsStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterExtensionContentsStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.extname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.object_ != nullptr); _impl_.object_->Clear(); } ::memset(&_impl_.action_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.objtype_) - reinterpret_cast(&_impl_.action_)) + sizeof(_impl_.objtype_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterExtensionContentsStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 1, 51, 2> AlterExtensionContentsStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterExtensionContentsStmt, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterExtensionContentsStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.Node object = 4 [json_name = "object"]; {::_pbi::TcParser::FastMtS1, {34, 0, 0, PROTOBUF_FIELD_OFFSET(AlterExtensionContentsStmt, _impl_.object_)}}, // string extname = 1 [json_name = "extname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterExtensionContentsStmt, _impl_.extname_)}}, // int32 action = 2 [json_name = "action"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterExtensionContentsStmt, _impl_.action_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(AlterExtensionContentsStmt, _impl_.action_)}}, // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterExtensionContentsStmt, _impl_.objtype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(AlterExtensionContentsStmt, _impl_.objtype_)}}, }}, {{ 65535, 65535 }}, {{ // string extname = 1 [json_name = "extname"]; {PROTOBUF_FIELD_OFFSET(AlterExtensionContentsStmt, _impl_.extname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // int32 action = 2 [json_name = "action"]; {PROTOBUF_FIELD_OFFSET(AlterExtensionContentsStmt, _impl_.action_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; {PROTOBUF_FIELD_OFFSET(AlterExtensionContentsStmt, _impl_.objtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.Node object = 4 [json_name = "object"]; {PROTOBUF_FIELD_OFFSET(AlterExtensionContentsStmt, _impl_.object_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\43\7\0\0\0\0\0\0" "pg_query.AlterExtensionContentsStmt" "extname" }}, }; ::uint8_t* AlterExtensionContentsStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterExtensionContentsStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string extname = 1 [json_name = "extname"]; if (!this->_internal_extname().empty()) { const std::string& _s = this->_internal_extname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterExtensionContentsStmt.extname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // int32 action = 2 [json_name = "action"]; if (this->_internal_action() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<2>( stream, this->_internal_action(), target); } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_objtype(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node object = 4 [json_name = "object"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::object(this), _Internal::object(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_extname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_extname()); } // .pg_query.Node object = 4 [json_name = "object"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.object_); } // int32 action = 2 [json_name = "action"]; if (this->_internal_action() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_action()); } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_objtype()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterExtensionContentsStmt::_class_data_ = { AlterExtensionContentsStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterExtensionContentsStmt::GetClassData() const { return &_class_data_; } void AlterExtensionContentsStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterExtensionContentsStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_extname().empty()) { _this->_internal_set_extname(from._internal_extname()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_object()->::pg_query::Node::MergeFrom( from._internal_object()); } if (from._internal_action() != 0) { _this->_internal_set_action(from._internal_action()); } if (from._internal_objtype() != 0) { _this->_internal_set_objtype(from._internal_objtype()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterExtensionContentsStmt::CopyFrom(const AlterExtensionContentsStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterExtensionContentsStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterExtensionContentsStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterExtensionContentsStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterExtensionContentsStmt::InternalSwap(AlterExtensionContentsStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.extname_, &other->_impl_.extname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterExtensionContentsStmt, _impl_.objtype_) + sizeof(AlterExtensionContentsStmt::_impl_.objtype_) - PROTOBUF_FIELD_OFFSET(AlterExtensionContentsStmt, _impl_.object_)>( reinterpret_cast(&_impl_.object_), reinterpret_cast(&other->_impl_.object_)); } ::google::protobuf::Metadata AlterExtensionContentsStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[173]); } // =================================================================== class CreateFdwStmt::_Internal { public: }; CreateFdwStmt::CreateFdwStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateFdwStmt) } inline PROTOBUF_NDEBUG_INLINE CreateFdwStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : func_options_{visibility, arena, from.func_options_}, options_{visibility, arena, from.options_}, fdwname_(arena, from.fdwname_), _cached_size_{0} {} CreateFdwStmt::CreateFdwStmt( ::google::protobuf::Arena* arena, const CreateFdwStmt& from) : ::google::protobuf::Message(arena) { CreateFdwStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.CreateFdwStmt) } inline PROTOBUF_NDEBUG_INLINE CreateFdwStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : func_options_{visibility, arena}, options_{visibility, arena}, fdwname_(arena), _cached_size_{0} {} inline void CreateFdwStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } CreateFdwStmt::~CreateFdwStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateFdwStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateFdwStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.fdwname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateFdwStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateFdwStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.func_options_.Clear(); _impl_.options_.Clear(); _impl_.fdwname_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateFdwStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 38, 2> CreateFdwStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateFdwStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string fdwname = 1 [json_name = "fdwname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateFdwStmt, _impl_.fdwname_)}}, // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CreateFdwStmt, _impl_.func_options_)}}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(CreateFdwStmt, _impl_.options_)}}, }}, {{ 65535, 65535 }}, {{ // string fdwname = 1 [json_name = "fdwname"]; {PROTOBUF_FIELD_OFFSET(CreateFdwStmt, _impl_.fdwname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; {PROTOBUF_FIELD_OFFSET(CreateFdwStmt, _impl_.func_options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(CreateFdwStmt, _impl_.options_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\26\7\0\0\0\0\0\0" "pg_query.CreateFdwStmt" "fdwname" }}, }; ::uint8_t* CreateFdwStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateFdwStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string fdwname = 1 [json_name = "fdwname"]; if (!this->_internal_fdwname().empty()) { const std::string& _s = this->_internal_fdwname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateFdwStmt.fdwname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; for (unsigned i = 0, n = static_cast(this->_internal_func_options_size()); i < n; i++) { const auto& repfield = this->_internal_func_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_func_options()) { total_size += ::google::protobuf::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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string fdwname = 1 [json_name = "fdwname"]; if (!this->_internal_fdwname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_fdwname()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateFdwStmt::_class_data_ = { CreateFdwStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateFdwStmt::GetClassData() const { return &_class_data_; } void CreateFdwStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateFdwStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_func_options()->MergeFrom( from._internal_func_options()); _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_fdwname().empty()) { _this->_internal_set_fdwname(from._internal_fdwname()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateFdwStmt::CopyFrom(const CreateFdwStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateFdwStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateFdwStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateFdwStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateFdwStmt::InternalSwap(CreateFdwStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.func_options_.InternalSwap(&other->_impl_.func_options_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.fdwname_, &other->_impl_.fdwname_, arena); } ::google::protobuf::Metadata CreateFdwStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[174]); } // =================================================================== class AlterFdwStmt::_Internal { public: }; AlterFdwStmt::AlterFdwStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterFdwStmt) } inline PROTOBUF_NDEBUG_INLINE AlterFdwStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : func_options_{visibility, arena, from.func_options_}, options_{visibility, arena, from.options_}, fdwname_(arena, from.fdwname_), _cached_size_{0} {} AlterFdwStmt::AlterFdwStmt( ::google::protobuf::Arena* arena, const AlterFdwStmt& from) : ::google::protobuf::Message(arena) { AlterFdwStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.AlterFdwStmt) } inline PROTOBUF_NDEBUG_INLINE AlterFdwStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : func_options_{visibility, arena}, options_{visibility, arena}, fdwname_(arena), _cached_size_{0} {} inline void AlterFdwStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } AlterFdwStmt::~AlterFdwStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterFdwStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterFdwStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.fdwname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterFdwStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterFdwStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.func_options_.Clear(); _impl_.options_.Clear(); _impl_.fdwname_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterFdwStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 37, 2> AlterFdwStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterFdwStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string fdwname = 1 [json_name = "fdwname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterFdwStmt, _impl_.fdwname_)}}, // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterFdwStmt, _impl_.func_options_)}}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(AlterFdwStmt, _impl_.options_)}}, }}, {{ 65535, 65535 }}, {{ // string fdwname = 1 [json_name = "fdwname"]; {PROTOBUF_FIELD_OFFSET(AlterFdwStmt, _impl_.fdwname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; {PROTOBUF_FIELD_OFFSET(AlterFdwStmt, _impl_.func_options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(AlterFdwStmt, _impl_.options_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\25\7\0\0\0\0\0\0" "pg_query.AlterFdwStmt" "fdwname" }}, }; ::uint8_t* AlterFdwStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterFdwStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string fdwname = 1 [json_name = "fdwname"]; if (!this->_internal_fdwname().empty()) { const std::string& _s = this->_internal_fdwname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterFdwStmt.fdwname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; for (unsigned i = 0, n = static_cast(this->_internal_func_options_size()); i < n; i++) { const auto& repfield = this->_internal_func_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_func_options()) { total_size += ::google::protobuf::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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string fdwname = 1 [json_name = "fdwname"]; if (!this->_internal_fdwname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_fdwname()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterFdwStmt::_class_data_ = { AlterFdwStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterFdwStmt::GetClassData() const { return &_class_data_; } void AlterFdwStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterFdwStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_func_options()->MergeFrom( from._internal_func_options()); _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_fdwname().empty()) { _this->_internal_set_fdwname(from._internal_fdwname()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterFdwStmt::CopyFrom(const AlterFdwStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterFdwStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterFdwStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterFdwStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterFdwStmt::InternalSwap(AlterFdwStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.func_options_.InternalSwap(&other->_impl_.func_options_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.fdwname_, &other->_impl_.fdwname_, arena); } ::google::protobuf::Metadata AlterFdwStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[175]); } // =================================================================== class CreateForeignServerStmt::_Internal { public: }; CreateForeignServerStmt::CreateForeignServerStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateForeignServerStmt) } inline PROTOBUF_NDEBUG_INLINE CreateForeignServerStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : options_{visibility, arena, from.options_}, servername_(arena, from.servername_), servertype_(arena, from.servertype_), version_(arena, from.version_), fdwname_(arena, from.fdwname_), _cached_size_{0} {} CreateForeignServerStmt::CreateForeignServerStmt( ::google::protobuf::Arena* arena, const CreateForeignServerStmt& from) : ::google::protobuf::Message(arena) { CreateForeignServerStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.if_not_exists_ = from._impl_.if_not_exists_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateForeignServerStmt) } inline PROTOBUF_NDEBUG_INLINE CreateForeignServerStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : options_{visibility, arena}, servername_(arena), servertype_(arena), version_(arena), fdwname_(arena), _cached_size_{0} {} inline void CreateForeignServerStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.if_not_exists_ = {}; } CreateForeignServerStmt::~CreateForeignServerStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateForeignServerStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateForeignServerStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.servername_.Destroy(); _impl_.servertype_.Destroy(); _impl_.version_.Destroy(); _impl_.fdwname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateForeignServerStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateForeignServerStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.servername_.ClearToEmpty(); _impl_.servertype_.ClearToEmpty(); _impl_.version_.ClearToEmpty(); _impl_.fdwname_.ClearToEmpty(); _impl_.if_not_exists_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateForeignServerStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 1, 75, 2> CreateForeignServerStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateForeignServerStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string servername = 1 [json_name = "servername"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateForeignServerStmt, _impl_.servername_)}}, // string servertype = 2 [json_name = "servertype"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CreateForeignServerStmt, _impl_.servertype_)}}, // string version = 3 [json_name = "version"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CreateForeignServerStmt, _impl_.version_)}}, // string fdwname = 4 [json_name = "fdwname"]; {::_pbi::TcParser::FastUS1, {34, 63, 0, PROTOBUF_FIELD_OFFSET(CreateForeignServerStmt, _impl_.fdwname_)}}, // bool if_not_exists = 5 [json_name = "if_not_exists"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(CreateForeignServerStmt, _impl_.if_not_exists_)}}, // repeated .pg_query.Node options = 6 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {50, 63, 0, PROTOBUF_FIELD_OFFSET(CreateForeignServerStmt, _impl_.options_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // string servername = 1 [json_name = "servername"]; {PROTOBUF_FIELD_OFFSET(CreateForeignServerStmt, _impl_.servername_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string servertype = 2 [json_name = "servertype"]; {PROTOBUF_FIELD_OFFSET(CreateForeignServerStmt, _impl_.servertype_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string version = 3 [json_name = "version"]; {PROTOBUF_FIELD_OFFSET(CreateForeignServerStmt, _impl_.version_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string fdwname = 4 [json_name = "fdwname"]; {PROTOBUF_FIELD_OFFSET(CreateForeignServerStmt, _impl_.fdwname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool if_not_exists = 5 [json_name = "if_not_exists"]; {PROTOBUF_FIELD_OFFSET(CreateForeignServerStmt, _impl_.if_not_exists_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node options = 6 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(CreateForeignServerStmt, _impl_.options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\40\12\12\7\7\0\0\0" "pg_query.CreateForeignServerStmt" "servername" "servertype" "version" "fdwname" }}, }; ::uint8_t* CreateForeignServerStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateForeignServerStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string servername = 1 [json_name = "servername"]; if (!this->_internal_servername().empty()) { const std::string& _s = this->_internal_servername(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateForeignServerStmt.servername"); target = stream->WriteStringMaybeAliased(1, _s, target); } // string servertype = 2 [json_name = "servertype"]; if (!this->_internal_servertype().empty()) { const std::string& _s = this->_internal_servertype(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateForeignServerStmt.servertype"); target = stream->WriteStringMaybeAliased(2, _s, target); } // string version = 3 [json_name = "version"]; if (!this->_internal_version().empty()) { const std::string& _s = this->_internal_version(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateForeignServerStmt.version"); target = stream->WriteStringMaybeAliased(3, _s, target); } // string fdwname = 4 [json_name = "fdwname"]; if (!this->_internal_fdwname().empty()) { const std::string& _s = this->_internal_fdwname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateForeignServerStmt.fdwname"); target = stream->WriteStringMaybeAliased(4, _s, target); } // bool if_not_exists = 5 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_if_not_exists(), target); } // repeated .pg_query.Node options = 6 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string servername = 1 [json_name = "servername"]; if (!this->_internal_servername().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_servername()); } // string servertype = 2 [json_name = "servertype"]; if (!this->_internal_servertype().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_servertype()); } // string version = 3 [json_name = "version"]; if (!this->_internal_version().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_version()); } // string fdwname = 4 [json_name = "fdwname"]; if (!this->_internal_fdwname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_fdwname()); } // bool if_not_exists = 5 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateForeignServerStmt::_class_data_ = { CreateForeignServerStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateForeignServerStmt::GetClassData() const { return &_class_data_; } void CreateForeignServerStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateForeignServerStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_servername().empty()) { _this->_internal_set_servername(from._internal_servername()); } if (!from._internal_servertype().empty()) { _this->_internal_set_servertype(from._internal_servertype()); } if (!from._internal_version().empty()) { _this->_internal_set_version(from._internal_version()); } if (!from._internal_fdwname().empty()) { _this->_internal_set_fdwname(from._internal_fdwname()); } if (from._internal_if_not_exists() != 0) { _this->_internal_set_if_not_exists(from._internal_if_not_exists()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateForeignServerStmt::CopyFrom(const CreateForeignServerStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateForeignServerStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateForeignServerStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateForeignServerStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateForeignServerStmt::InternalSwap(CreateForeignServerStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.servername_, &other->_impl_.servername_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.servertype_, &other->_impl_.servertype_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.version_, &other->_impl_.version_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.fdwname_, &other->_impl_.fdwname_, arena); swap(_impl_.if_not_exists_, other->_impl_.if_not_exists_); } ::google::protobuf::Metadata CreateForeignServerStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[176]); } // =================================================================== class AlterForeignServerStmt::_Internal { public: }; AlterForeignServerStmt::AlterForeignServerStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterForeignServerStmt) } inline PROTOBUF_NDEBUG_INLINE AlterForeignServerStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : options_{visibility, arena, from.options_}, servername_(arena, from.servername_), version_(arena, from.version_), _cached_size_{0} {} AlterForeignServerStmt::AlterForeignServerStmt( ::google::protobuf::Arena* arena, const AlterForeignServerStmt& from) : ::google::protobuf::Message(arena) { AlterForeignServerStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.has_version_ = from._impl_.has_version_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterForeignServerStmt) } inline PROTOBUF_NDEBUG_INLINE AlterForeignServerStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : options_{visibility, arena}, servername_(arena), version_(arena), _cached_size_{0} {} inline void AlterForeignServerStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.has_version_ = {}; } AlterForeignServerStmt::~AlterForeignServerStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterForeignServerStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterForeignServerStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.servername_.Destroy(); _impl_.version_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterForeignServerStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterForeignServerStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.servername_.ClearToEmpty(); _impl_.version_.ClearToEmpty(); _impl_.has_version_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterForeignServerStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 1, 57, 2> AlterForeignServerStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterForeignServerStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool has_version = 4 [json_name = "has_version"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(AlterForeignServerStmt, _impl_.has_version_)}}, // string servername = 1 [json_name = "servername"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterForeignServerStmt, _impl_.servername_)}}, // string version = 2 [json_name = "version"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterForeignServerStmt, _impl_.version_)}}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(AlterForeignServerStmt, _impl_.options_)}}, }}, {{ 65535, 65535 }}, {{ // string servername = 1 [json_name = "servername"]; {PROTOBUF_FIELD_OFFSET(AlterForeignServerStmt, _impl_.servername_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string version = 2 [json_name = "version"]; {PROTOBUF_FIELD_OFFSET(AlterForeignServerStmt, _impl_.version_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(AlterForeignServerStmt, _impl_.options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool has_version = 4 [json_name = "has_version"]; {PROTOBUF_FIELD_OFFSET(AlterForeignServerStmt, _impl_.has_version_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\37\12\7\0\0\0\0\0" "pg_query.AlterForeignServerStmt" "servername" "version" }}, }; ::uint8_t* AlterForeignServerStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterForeignServerStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string servername = 1 [json_name = "servername"]; if (!this->_internal_servername().empty()) { const std::string& _s = this->_internal_servername(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterForeignServerStmt.servername"); target = stream->WriteStringMaybeAliased(1, _s, target); } // string version = 2 [json_name = "version"]; if (!this->_internal_version().empty()) { const std::string& _s = this->_internal_version(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterForeignServerStmt.version"); target = stream->WriteStringMaybeAliased(2, _s, target); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // bool has_version = 4 [json_name = "has_version"]; if (this->_internal_has_version() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_has_version(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string servername = 1 [json_name = "servername"]; if (!this->_internal_servername().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_servername()); } // string version = 2 [json_name = "version"]; if (!this->_internal_version().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_version()); } // bool has_version = 4 [json_name = "has_version"]; if (this->_internal_has_version() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterForeignServerStmt::_class_data_ = { AlterForeignServerStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterForeignServerStmt::GetClassData() const { return &_class_data_; } void AlterForeignServerStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterForeignServerStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_servername().empty()) { _this->_internal_set_servername(from._internal_servername()); } if (!from._internal_version().empty()) { _this->_internal_set_version(from._internal_version()); } if (from._internal_has_version() != 0) { _this->_internal_set_has_version(from._internal_has_version()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterForeignServerStmt::CopyFrom(const AlterForeignServerStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterForeignServerStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterForeignServerStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterForeignServerStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterForeignServerStmt::InternalSwap(AlterForeignServerStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.servername_, &other->_impl_.servername_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.version_, &other->_impl_.version_, arena); swap(_impl_.has_version_, other->_impl_.has_version_); } ::google::protobuf::Metadata AlterForeignServerStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[177]); } // =================================================================== class CreateForeignTableStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreateForeignTableStmt, _impl_._has_bits_); static const ::pg_query::CreateStmt& base_stmt(const CreateForeignTableStmt* msg); static void set_has_base_stmt(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::CreateStmt& CreateForeignTableStmt::_Internal::base_stmt(const CreateForeignTableStmt* msg) { return *msg->_impl_.base_stmt_; } CreateForeignTableStmt::CreateForeignTableStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateForeignTableStmt) } inline PROTOBUF_NDEBUG_INLINE CreateForeignTableStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, options_{visibility, arena, from.options_}, servername_(arena, from.servername_) {} CreateForeignTableStmt::CreateForeignTableStmt( ::google::protobuf::Arena* arena, const CreateForeignTableStmt& from) : ::google::protobuf::Message(arena) { CreateForeignTableStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.base_stmt_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::CreateStmt>(arena, *from._impl_.base_stmt_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.CreateForeignTableStmt) } inline PROTOBUF_NDEBUG_INLINE CreateForeignTableStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, options_{visibility, arena}, servername_(arena) {} inline void CreateForeignTableStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.base_stmt_ = {}; } CreateForeignTableStmt::~CreateForeignTableStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateForeignTableStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateForeignTableStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.servername_.Destroy(); delete _impl_.base_stmt_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateForeignTableStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateForeignTableStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.servername_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.base_stmt_ != nullptr); _impl_.base_stmt_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateForeignTableStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 50, 2> CreateForeignTableStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CreateForeignTableStmt, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateForeignTableStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.CreateStmt base_stmt = 1 [json_name = "base"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CreateForeignTableStmt, _impl_.base_stmt_)}}, // string servername = 2 [json_name = "servername"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CreateForeignTableStmt, _impl_.servername_)}}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(CreateForeignTableStmt, _impl_.options_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.CreateStmt base_stmt = 1 [json_name = "base"]; {PROTOBUF_FIELD_OFFSET(CreateForeignTableStmt, _impl_.base_stmt_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string servername = 2 [json_name = "servername"]; {PROTOBUF_FIELD_OFFSET(CreateForeignTableStmt, _impl_.servername_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(CreateForeignTableStmt, _impl_.options_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::CreateStmt>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\37\0\12\0\0\0\0\0" "pg_query.CreateForeignTableStmt" "servername" }}, }; ::uint8_t* CreateForeignTableStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateForeignTableStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.CreateStmt base_stmt = 1 [json_name = "base"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::base_stmt(this), _Internal::base_stmt(this).GetCachedSize(), target, stream); } // string servername = 2 [json_name = "servername"]; if (!this->_internal_servername().empty()) { const std::string& _s = this->_internal_servername(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateForeignTableStmt.servername"); target = stream->WriteStringMaybeAliased(2, _s, target); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string servername = 2 [json_name = "servername"]; if (!this->_internal_servername().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_servername()); } // .pg_query.CreateStmt base_stmt = 1 [json_name = "base"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.base_stmt_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateForeignTableStmt::_class_data_ = { CreateForeignTableStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateForeignTableStmt::GetClassData() const { return &_class_data_; } void CreateForeignTableStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateForeignTableStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_servername().empty()) { _this->_internal_set_servername(from._internal_servername()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_base_stmt()->::pg_query::CreateStmt::MergeFrom( from._internal_base_stmt()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateForeignTableStmt::CopyFrom(const CreateForeignTableStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateForeignTableStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateForeignTableStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateForeignTableStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateForeignTableStmt::InternalSwap(CreateForeignTableStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.servername_, &other->_impl_.servername_, arena); swap(_impl_.base_stmt_, other->_impl_.base_stmt_); } ::google::protobuf::Metadata CreateForeignTableStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[178]); } // =================================================================== class CreateUserMappingStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreateUserMappingStmt, _impl_._has_bits_); static const ::pg_query::RoleSpec& user(const CreateUserMappingStmt* msg); static void set_has_user(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RoleSpec& CreateUserMappingStmt::_Internal::user(const CreateUserMappingStmt* msg) { return *msg->_impl_.user_; } CreateUserMappingStmt::CreateUserMappingStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateUserMappingStmt) } inline PROTOBUF_NDEBUG_INLINE CreateUserMappingStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, options_{visibility, arena, from.options_}, servername_(arena, from.servername_) {} CreateUserMappingStmt::CreateUserMappingStmt( ::google::protobuf::Arena* arena, const CreateUserMappingStmt& from) : ::google::protobuf::Message(arena) { CreateUserMappingStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.user_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RoleSpec>(arena, *from._impl_.user_) : nullptr; _impl_.if_not_exists_ = from._impl_.if_not_exists_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateUserMappingStmt) } inline PROTOBUF_NDEBUG_INLINE CreateUserMappingStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, options_{visibility, arena}, servername_(arena) {} inline void CreateUserMappingStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, user_), 0, offsetof(Impl_, if_not_exists_) - offsetof(Impl_, user_) + sizeof(Impl_::if_not_exists_)); } CreateUserMappingStmt::~CreateUserMappingStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateUserMappingStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateUserMappingStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.servername_.Destroy(); delete _impl_.user_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateUserMappingStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateUserMappingStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.servername_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.user_ != nullptr); _impl_.user_->Clear(); } _impl_.if_not_exists_ = false; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateUserMappingStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 49, 2> CreateUserMappingStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CreateUserMappingStmt, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateUserMappingStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node options = 4 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(CreateUserMappingStmt, _impl_.options_)}}, // .pg_query.RoleSpec user = 1 [json_name = "user"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CreateUserMappingStmt, _impl_.user_)}}, // string servername = 2 [json_name = "servername"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CreateUserMappingStmt, _impl_.servername_)}}, // bool if_not_exists = 3 [json_name = "if_not_exists"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(CreateUserMappingStmt, _impl_.if_not_exists_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RoleSpec user = 1 [json_name = "user"]; {PROTOBUF_FIELD_OFFSET(CreateUserMappingStmt, _impl_.user_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string servername = 2 [json_name = "servername"]; {PROTOBUF_FIELD_OFFSET(CreateUserMappingStmt, _impl_.servername_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool if_not_exists = 3 [json_name = "if_not_exists"]; {PROTOBUF_FIELD_OFFSET(CreateUserMappingStmt, _impl_.if_not_exists_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node options = 4 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(CreateUserMappingStmt, _impl_.options_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RoleSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\36\0\12\0\0\0\0\0" "pg_query.CreateUserMappingStmt" "servername" }}, }; ::uint8_t* CreateUserMappingStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateUserMappingStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RoleSpec user = 1 [json_name = "user"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::user(this), _Internal::user(this).GetCachedSize(), target, stream); } // string servername = 2 [json_name = "servername"]; if (!this->_internal_servername().empty()) { const std::string& _s = this->_internal_servername(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateUserMappingStmt.servername"); target = stream->WriteStringMaybeAliased(2, _s, target); } // bool if_not_exists = 3 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_if_not_exists(), target); } // repeated .pg_query.Node options = 4 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string servername = 2 [json_name = "servername"]; if (!this->_internal_servername().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_servername()); } // .pg_query.RoleSpec user = 1 [json_name = "user"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.user_); } // bool if_not_exists = 3 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateUserMappingStmt::_class_data_ = { CreateUserMappingStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateUserMappingStmt::GetClassData() const { return &_class_data_; } void CreateUserMappingStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateUserMappingStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_servername().empty()) { _this->_internal_set_servername(from._internal_servername()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_user()->::pg_query::RoleSpec::MergeFrom( from._internal_user()); } if (from._internal_if_not_exists() != 0) { _this->_internal_set_if_not_exists(from._internal_if_not_exists()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateUserMappingStmt::CopyFrom(const CreateUserMappingStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateUserMappingStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateUserMappingStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateUserMappingStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateUserMappingStmt::InternalSwap(CreateUserMappingStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.servername_, &other->_impl_.servername_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateUserMappingStmt, _impl_.if_not_exists_) + sizeof(CreateUserMappingStmt::_impl_.if_not_exists_) - PROTOBUF_FIELD_OFFSET(CreateUserMappingStmt, _impl_.user_)>( reinterpret_cast(&_impl_.user_), reinterpret_cast(&other->_impl_.user_)); } ::google::protobuf::Metadata CreateUserMappingStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[179]); } // =================================================================== class AlterUserMappingStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterUserMappingStmt, _impl_._has_bits_); static const ::pg_query::RoleSpec& user(const AlterUserMappingStmt* msg); static void set_has_user(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RoleSpec& AlterUserMappingStmt::_Internal::user(const AlterUserMappingStmt* msg) { return *msg->_impl_.user_; } AlterUserMappingStmt::AlterUserMappingStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterUserMappingStmt) } inline PROTOBUF_NDEBUG_INLINE AlterUserMappingStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, options_{visibility, arena, from.options_}, servername_(arena, from.servername_) {} AlterUserMappingStmt::AlterUserMappingStmt( ::google::protobuf::Arena* arena, const AlterUserMappingStmt& from) : ::google::protobuf::Message(arena) { AlterUserMappingStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.user_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RoleSpec>(arena, *from._impl_.user_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.AlterUserMappingStmt) } inline PROTOBUF_NDEBUG_INLINE AlterUserMappingStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, options_{visibility, arena}, servername_(arena) {} inline void AlterUserMappingStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.user_ = {}; } AlterUserMappingStmt::~AlterUserMappingStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterUserMappingStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterUserMappingStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.servername_.Destroy(); delete _impl_.user_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterUserMappingStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterUserMappingStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.servername_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.user_ != nullptr); _impl_.user_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterUserMappingStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 48, 2> AlterUserMappingStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterUserMappingStmt, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterUserMappingStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RoleSpec user = 1 [json_name = "user"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(AlterUserMappingStmt, _impl_.user_)}}, // string servername = 2 [json_name = "servername"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterUserMappingStmt, _impl_.servername_)}}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(AlterUserMappingStmt, _impl_.options_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RoleSpec user = 1 [json_name = "user"]; {PROTOBUF_FIELD_OFFSET(AlterUserMappingStmt, _impl_.user_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string servername = 2 [json_name = "servername"]; {PROTOBUF_FIELD_OFFSET(AlterUserMappingStmt, _impl_.servername_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(AlterUserMappingStmt, _impl_.options_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RoleSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\35\0\12\0\0\0\0\0" "pg_query.AlterUserMappingStmt" "servername" }}, }; ::uint8_t* AlterUserMappingStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterUserMappingStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RoleSpec user = 1 [json_name = "user"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::user(this), _Internal::user(this).GetCachedSize(), target, stream); } // string servername = 2 [json_name = "servername"]; if (!this->_internal_servername().empty()) { const std::string& _s = this->_internal_servername(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterUserMappingStmt.servername"); target = stream->WriteStringMaybeAliased(2, _s, target); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string servername = 2 [json_name = "servername"]; if (!this->_internal_servername().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_servername()); } // .pg_query.RoleSpec user = 1 [json_name = "user"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.user_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterUserMappingStmt::_class_data_ = { AlterUserMappingStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterUserMappingStmt::GetClassData() const { return &_class_data_; } void AlterUserMappingStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterUserMappingStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_servername().empty()) { _this->_internal_set_servername(from._internal_servername()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_user()->::pg_query::RoleSpec::MergeFrom( from._internal_user()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterUserMappingStmt::CopyFrom(const AlterUserMappingStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterUserMappingStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterUserMappingStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterUserMappingStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterUserMappingStmt::InternalSwap(AlterUserMappingStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.servername_, &other->_impl_.servername_, arena); swap(_impl_.user_, other->_impl_.user_); } ::google::protobuf::Metadata AlterUserMappingStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[180]); } // =================================================================== class DropUserMappingStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(DropUserMappingStmt, _impl_._has_bits_); static const ::pg_query::RoleSpec& user(const DropUserMappingStmt* msg); static void set_has_user(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RoleSpec& DropUserMappingStmt::_Internal::user(const DropUserMappingStmt* msg) { return *msg->_impl_.user_; } DropUserMappingStmt::DropUserMappingStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DropUserMappingStmt) } inline PROTOBUF_NDEBUG_INLINE DropUserMappingStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, servername_(arena, from.servername_) {} DropUserMappingStmt::DropUserMappingStmt( ::google::protobuf::Arena* arena, const DropUserMappingStmt& from) : ::google::protobuf::Message(arena) { DropUserMappingStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.user_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RoleSpec>(arena, *from._impl_.user_) : nullptr; _impl_.missing_ok_ = from._impl_.missing_ok_; // @@protoc_insertion_point(copy_constructor:pg_query.DropUserMappingStmt) } inline PROTOBUF_NDEBUG_INLINE DropUserMappingStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, servername_(arena) {} inline void DropUserMappingStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, user_), 0, offsetof(Impl_, missing_ok_) - offsetof(Impl_, user_) + sizeof(Impl_::missing_ok_)); } DropUserMappingStmt::~DropUserMappingStmt() { // @@protoc_insertion_point(destructor:pg_query.DropUserMappingStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DropUserMappingStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.servername_.Destroy(); delete _impl_.user_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void DropUserMappingStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DropUserMappingStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.servername_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.user_ != nullptr); _impl_.user_->Clear(); } _impl_.missing_ok_ = false; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DropUserMappingStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 47, 2> DropUserMappingStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(DropUserMappingStmt, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_DropUserMappingStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RoleSpec user = 1 [json_name = "user"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(DropUserMappingStmt, _impl_.user_)}}, // string servername = 2 [json_name = "servername"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(DropUserMappingStmt, _impl_.servername_)}}, // bool missing_ok = 3 [json_name = "missing_ok"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(DropUserMappingStmt, _impl_.missing_ok_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RoleSpec user = 1 [json_name = "user"]; {PROTOBUF_FIELD_OFFSET(DropUserMappingStmt, _impl_.user_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string servername = 2 [json_name = "servername"]; {PROTOBUF_FIELD_OFFSET(DropUserMappingStmt, _impl_.servername_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool missing_ok = 3 [json_name = "missing_ok"]; {PROTOBUF_FIELD_OFFSET(DropUserMappingStmt, _impl_.missing_ok_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RoleSpec>()}, }}, {{ "\34\0\12\0\0\0\0\0" "pg_query.DropUserMappingStmt" "servername" }}, }; ::uint8_t* DropUserMappingStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DropUserMappingStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RoleSpec user = 1 [json_name = "user"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::user(this), _Internal::user(this).GetCachedSize(), target, stream); } // string servername = 2 [json_name = "servername"]; if (!this->_internal_servername().empty()) { const std::string& _s = this->_internal_servername(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.DropUserMappingStmt.servername"); target = stream->WriteStringMaybeAliased(2, _s, target); } // bool missing_ok = 3 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_servername().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_servername()); } // .pg_query.RoleSpec user = 1 [json_name = "user"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.user_); } // bool missing_ok = 3 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DropUserMappingStmt::_class_data_ = { DropUserMappingStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DropUserMappingStmt::GetClassData() const { return &_class_data_; } void DropUserMappingStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DropUserMappingStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_servername().empty()) { _this->_internal_set_servername(from._internal_servername()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_user()->::pg_query::RoleSpec::MergeFrom( from._internal_user()); } if (from._internal_missing_ok() != 0) { _this->_internal_set_missing_ok(from._internal_missing_ok()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DropUserMappingStmt::CopyFrom(const DropUserMappingStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DropUserMappingStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DropUserMappingStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* DropUserMappingStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void DropUserMappingStmt::InternalSwap(DropUserMappingStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.servername_, &other->_impl_.servername_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(DropUserMappingStmt, _impl_.missing_ok_) + sizeof(DropUserMappingStmt::_impl_.missing_ok_) - PROTOBUF_FIELD_OFFSET(DropUserMappingStmt, _impl_.user_)>( reinterpret_cast(&_impl_.user_), reinterpret_cast(&other->_impl_.user_)); } ::google::protobuf::Metadata DropUserMappingStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[181]); } // =================================================================== class ImportForeignSchemaStmt::_Internal { public: }; ImportForeignSchemaStmt::ImportForeignSchemaStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ImportForeignSchemaStmt) } inline PROTOBUF_NDEBUG_INLINE ImportForeignSchemaStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : table_list_{visibility, arena, from.table_list_}, options_{visibility, arena, from.options_}, server_name_(arena, from.server_name_), remote_schema_(arena, from.remote_schema_), local_schema_(arena, from.local_schema_), _cached_size_{0} {} ImportForeignSchemaStmt::ImportForeignSchemaStmt( ::google::protobuf::Arena* arena, const ImportForeignSchemaStmt& from) : ::google::protobuf::Message(arena) { ImportForeignSchemaStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.list_type_ = from._impl_.list_type_; // @@protoc_insertion_point(copy_constructor:pg_query.ImportForeignSchemaStmt) } inline PROTOBUF_NDEBUG_INLINE ImportForeignSchemaStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : table_list_{visibility, arena}, options_{visibility, arena}, server_name_(arena), remote_schema_(arena), local_schema_(arena), _cached_size_{0} {} inline void ImportForeignSchemaStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.list_type_ = {}; } ImportForeignSchemaStmt::~ImportForeignSchemaStmt() { // @@protoc_insertion_point(destructor:pg_query.ImportForeignSchemaStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ImportForeignSchemaStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.server_name_.Destroy(); _impl_.remote_schema_.Destroy(); _impl_.local_schema_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void ImportForeignSchemaStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ImportForeignSchemaStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.table_list_.Clear(); _impl_.options_.Clear(); _impl_.server_name_.ClearToEmpty(); _impl_.remote_schema_.ClearToEmpty(); _impl_.local_schema_.ClearToEmpty(); _impl_.list_type_ = 0; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ImportForeignSchemaStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 2, 77, 2> ImportForeignSchemaStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ImportForeignSchemaStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string server_name = 1 [json_name = "server_name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(ImportForeignSchemaStmt, _impl_.server_name_)}}, // string remote_schema = 2 [json_name = "remote_schema"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(ImportForeignSchemaStmt, _impl_.remote_schema_)}}, // string local_schema = 3 [json_name = "local_schema"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(ImportForeignSchemaStmt, _impl_.local_schema_)}}, // .pg_query.ImportForeignSchemaType list_type = 4 [json_name = "list_type"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ImportForeignSchemaStmt, _impl_.list_type_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(ImportForeignSchemaStmt, _impl_.list_type_)}}, // repeated .pg_query.Node table_list = 5 [json_name = "table_list"]; {::_pbi::TcParser::FastMtR1, {42, 63, 0, PROTOBUF_FIELD_OFFSET(ImportForeignSchemaStmt, _impl_.table_list_)}}, // repeated .pg_query.Node options = 6 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {50, 63, 1, PROTOBUF_FIELD_OFFSET(ImportForeignSchemaStmt, _impl_.options_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // string server_name = 1 [json_name = "server_name"]; {PROTOBUF_FIELD_OFFSET(ImportForeignSchemaStmt, _impl_.server_name_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string remote_schema = 2 [json_name = "remote_schema"]; {PROTOBUF_FIELD_OFFSET(ImportForeignSchemaStmt, _impl_.remote_schema_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string local_schema = 3 [json_name = "local_schema"]; {PROTOBUF_FIELD_OFFSET(ImportForeignSchemaStmt, _impl_.local_schema_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.ImportForeignSchemaType list_type = 4 [json_name = "list_type"]; {PROTOBUF_FIELD_OFFSET(ImportForeignSchemaStmt, _impl_.list_type_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node table_list = 5 [json_name = "table_list"]; {PROTOBUF_FIELD_OFFSET(ImportForeignSchemaStmt, _impl_.table_list_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 6 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(ImportForeignSchemaStmt, _impl_.options_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\40\13\15\14\0\0\0\0" "pg_query.ImportForeignSchemaStmt" "server_name" "remote_schema" "local_schema" }}, }; ::uint8_t* ImportForeignSchemaStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ImportForeignSchemaStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string server_name = 1 [json_name = "server_name"]; if (!this->_internal_server_name().empty()) { const std::string& _s = this->_internal_server_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ImportForeignSchemaStmt.server_name"); target = stream->WriteStringMaybeAliased(1, _s, target); } // string remote_schema = 2 [json_name = "remote_schema"]; if (!this->_internal_remote_schema().empty()) { const std::string& _s = this->_internal_remote_schema(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ImportForeignSchemaStmt.remote_schema"); target = stream->WriteStringMaybeAliased(2, _s, target); } // string local_schema = 3 [json_name = "local_schema"]; if (!this->_internal_local_schema().empty()) { const std::string& _s = this->_internal_local_schema(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ImportForeignSchemaStmt.local_schema"); target = stream->WriteStringMaybeAliased(3, _s, target); } // .pg_query.ImportForeignSchemaType list_type = 4 [json_name = "list_type"]; if (this->_internal_list_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 4, this->_internal_list_type(), target); } // repeated .pg_query.Node table_list = 5 [json_name = "table_list"]; for (unsigned i = 0, n = static_cast(this->_internal_table_list_size()); i < n; i++) { const auto& repfield = this->_internal_table_list().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 6 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_table_list()) { total_size += ::google::protobuf::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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string server_name = 1 [json_name = "server_name"]; if (!this->_internal_server_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_server_name()); } // string remote_schema = 2 [json_name = "remote_schema"]; if (!this->_internal_remote_schema().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_remote_schema()); } // string local_schema = 3 [json_name = "local_schema"]; if (!this->_internal_local_schema().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_local_schema()); } // .pg_query.ImportForeignSchemaType list_type = 4 [json_name = "list_type"]; if (this->_internal_list_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_list_type()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ImportForeignSchemaStmt::_class_data_ = { ImportForeignSchemaStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ImportForeignSchemaStmt::GetClassData() const { return &_class_data_; } void ImportForeignSchemaStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ImportForeignSchemaStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_table_list()->MergeFrom( from._internal_table_list()); _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_server_name().empty()) { _this->_internal_set_server_name(from._internal_server_name()); } if (!from._internal_remote_schema().empty()) { _this->_internal_set_remote_schema(from._internal_remote_schema()); } if (!from._internal_local_schema().empty()) { _this->_internal_set_local_schema(from._internal_local_schema()); } if (from._internal_list_type() != 0) { _this->_internal_set_list_type(from._internal_list_type()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ImportForeignSchemaStmt::CopyFrom(const ImportForeignSchemaStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ImportForeignSchemaStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ImportForeignSchemaStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* ImportForeignSchemaStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void ImportForeignSchemaStmt::InternalSwap(ImportForeignSchemaStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.table_list_.InternalSwap(&other->_impl_.table_list_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.server_name_, &other->_impl_.server_name_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.remote_schema_, &other->_impl_.remote_schema_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.local_schema_, &other->_impl_.local_schema_, arena); swap(_impl_.list_type_, other->_impl_.list_type_); } ::google::protobuf::Metadata ImportForeignSchemaStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[182]); } // =================================================================== class CreatePolicyStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& table(const CreatePolicyStmt* msg); static void set_has_table(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& qual(const CreatePolicyStmt* msg); static void set_has_qual(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& with_check(const CreatePolicyStmt* msg); static void set_has_with_check(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::RangeVar& CreatePolicyStmt::_Internal::table(const CreatePolicyStmt* msg) { return *msg->_impl_.table_; } const ::pg_query::Node& CreatePolicyStmt::_Internal::qual(const CreatePolicyStmt* msg) { return *msg->_impl_.qual_; } const ::pg_query::Node& CreatePolicyStmt::_Internal::with_check(const CreatePolicyStmt* msg) { return *msg->_impl_.with_check_; } CreatePolicyStmt::CreatePolicyStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreatePolicyStmt) } inline PROTOBUF_NDEBUG_INLINE CreatePolicyStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, roles_{visibility, arena, from.roles_}, policy_name_(arena, from.policy_name_), cmd_name_(arena, from.cmd_name_) {} CreatePolicyStmt::CreatePolicyStmt( ::google::protobuf::Arena* arena, const CreatePolicyStmt& from) : ::google::protobuf::Message(arena) { CreatePolicyStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.table_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.table_) : nullptr; _impl_.qual_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.qual_) : nullptr; _impl_.with_check_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.with_check_) : nullptr; _impl_.permissive_ = from._impl_.permissive_; // @@protoc_insertion_point(copy_constructor:pg_query.CreatePolicyStmt) } inline PROTOBUF_NDEBUG_INLINE CreatePolicyStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, roles_{visibility, arena}, policy_name_(arena), cmd_name_(arena) {} inline void CreatePolicyStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, table_), 0, offsetof(Impl_, permissive_) - offsetof(Impl_, table_) + sizeof(Impl_::permissive_)); } CreatePolicyStmt::~CreatePolicyStmt() { // @@protoc_insertion_point(destructor:pg_query.CreatePolicyStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreatePolicyStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.policy_name_.Destroy(); _impl_.cmd_name_.Destroy(); delete _impl_.table_; delete _impl_.qual_; delete _impl_.with_check_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreatePolicyStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreatePolicyStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.roles_.Clear(); _impl_.policy_name_.ClearToEmpty(); _impl_.cmd_name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.table_ != nullptr); _impl_.table_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.qual_ != nullptr); _impl_.qual_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.with_check_ != nullptr); _impl_.with_check_->Clear(); } } _impl_.permissive_ = false; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreatePolicyStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 4, 53, 2> CreatePolicyStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreatePolicyStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string policy_name = 1 [json_name = "policy_name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.policy_name_)}}, // .pg_query.RangeVar table = 2 [json_name = "table"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.table_)}}, // string cmd_name = 3 [json_name = "cmd_name"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.cmd_name_)}}, // bool permissive = 4 [json_name = "permissive"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.permissive_)}}, // repeated .pg_query.Node roles = 5 [json_name = "roles"]; {::_pbi::TcParser::FastMtR1, {42, 63, 1, PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.roles_)}}, // .pg_query.Node qual = 6 [json_name = "qual"]; {::_pbi::TcParser::FastMtS1, {50, 1, 2, PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.qual_)}}, // .pg_query.Node with_check = 7 [json_name = "with_check"]; {::_pbi::TcParser::FastMtS1, {58, 2, 3, PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.with_check_)}}, }}, {{ 65535, 65535 }}, {{ // string policy_name = 1 [json_name = "policy_name"]; {PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.policy_name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.RangeVar table = 2 [json_name = "table"]; {PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.table_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string cmd_name = 3 [json_name = "cmd_name"]; {PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.cmd_name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool permissive = 4 [json_name = "permissive"]; {PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.permissive_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node roles = 5 [json_name = "roles"]; {PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.roles_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node qual = 6 [json_name = "qual"]; {PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.qual_), _Internal::kHasBitsOffset + 1, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node with_check = 7 [json_name = "with_check"]; {PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.with_check_), _Internal::kHasBitsOffset + 2, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\31\13\0\10\0\0\0\0" "pg_query.CreatePolicyStmt" "policy_name" "cmd_name" }}, }; ::uint8_t* CreatePolicyStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreatePolicyStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string policy_name = 1 [json_name = "policy_name"]; if (!this->_internal_policy_name().empty()) { const std::string& _s = this->_internal_policy_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreatePolicyStmt.policy_name"); target = stream->WriteStringMaybeAliased(1, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar table = 2 [json_name = "table"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::table(this), _Internal::table(this).GetCachedSize(), target, stream); } // string cmd_name = 3 [json_name = "cmd_name"]; if (!this->_internal_cmd_name().empty()) { const std::string& _s = this->_internal_cmd_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreatePolicyStmt.cmd_name"); target = stream->WriteStringMaybeAliased(3, _s, target); } // bool permissive = 4 [json_name = "permissive"]; if (this->_internal_permissive() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_permissive(), target); } // repeated .pg_query.Node roles = 5 [json_name = "roles"]; for (unsigned i = 0, n = static_cast(this->_internal_roles_size()); i < n; i++) { const auto& repfield = this->_internal_roles().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node qual = 6 [json_name = "qual"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::qual(this), _Internal::qual(this).GetCachedSize(), target, stream); } // .pg_query.Node with_check = 7 [json_name = "with_check"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 7, _Internal::with_check(this), _Internal::with_check(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_roles()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string policy_name = 1 [json_name = "policy_name"]; if (!this->_internal_policy_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_policy_name()); } // string cmd_name = 3 [json_name = "cmd_name"]; if (!this->_internal_cmd_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_cmd_name()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.RangeVar table = 2 [json_name = "table"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.table_); } // .pg_query.Node qual = 6 [json_name = "qual"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.qual_); } // .pg_query.Node with_check = 7 [json_name = "with_check"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.with_check_); } } // bool permissive = 4 [json_name = "permissive"]; if (this->_internal_permissive() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreatePolicyStmt::_class_data_ = { CreatePolicyStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreatePolicyStmt::GetClassData() const { return &_class_data_; } void CreatePolicyStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreatePolicyStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_roles()->MergeFrom( from._internal_roles()); if (!from._internal_policy_name().empty()) { _this->_internal_set_policy_name(from._internal_policy_name()); } if (!from._internal_cmd_name().empty()) { _this->_internal_set_cmd_name(from._internal_cmd_name()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_table()->::pg_query::RangeVar::MergeFrom( from._internal_table()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_qual()->::pg_query::Node::MergeFrom( from._internal_qual()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_with_check()->::pg_query::Node::MergeFrom( from._internal_with_check()); } } if (from._internal_permissive() != 0) { _this->_internal_set_permissive(from._internal_permissive()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreatePolicyStmt::CopyFrom(const CreatePolicyStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreatePolicyStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreatePolicyStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreatePolicyStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreatePolicyStmt::InternalSwap(CreatePolicyStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.roles_.InternalSwap(&other->_impl_.roles_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.policy_name_, &other->_impl_.policy_name_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.cmd_name_, &other->_impl_.cmd_name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.permissive_) + sizeof(CreatePolicyStmt::_impl_.permissive_) - PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, _impl_.table_)>( reinterpret_cast(&_impl_.table_), reinterpret_cast(&other->_impl_.table_)); } ::google::protobuf::Metadata CreatePolicyStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[183]); } // =================================================================== class AlterPolicyStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& table(const AlterPolicyStmt* msg); static void set_has_table(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& qual(const AlterPolicyStmt* msg); static void set_has_qual(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::Node& with_check(const AlterPolicyStmt* msg); static void set_has_with_check(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::RangeVar& AlterPolicyStmt::_Internal::table(const AlterPolicyStmt* msg) { return *msg->_impl_.table_; } const ::pg_query::Node& AlterPolicyStmt::_Internal::qual(const AlterPolicyStmt* msg) { return *msg->_impl_.qual_; } const ::pg_query::Node& AlterPolicyStmt::_Internal::with_check(const AlterPolicyStmt* msg) { return *msg->_impl_.with_check_; } AlterPolicyStmt::AlterPolicyStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterPolicyStmt) } inline PROTOBUF_NDEBUG_INLINE AlterPolicyStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, roles_{visibility, arena, from.roles_}, policy_name_(arena, from.policy_name_) {} AlterPolicyStmt::AlterPolicyStmt( ::google::protobuf::Arena* arena, const AlterPolicyStmt& from) : ::google::protobuf::Message(arena) { AlterPolicyStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.table_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.table_) : nullptr; _impl_.qual_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.qual_) : nullptr; _impl_.with_check_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.with_check_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.AlterPolicyStmt) } inline PROTOBUF_NDEBUG_INLINE AlterPolicyStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, roles_{visibility, arena}, policy_name_(arena) {} inline void AlterPolicyStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, table_), 0, offsetof(Impl_, with_check_) - offsetof(Impl_, table_) + sizeof(Impl_::with_check_)); } AlterPolicyStmt::~AlterPolicyStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterPolicyStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterPolicyStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.policy_name_.Destroy(); delete _impl_.table_; delete _impl_.qual_; delete _impl_.with_check_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterPolicyStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterPolicyStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.roles_.Clear(); _impl_.policy_name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.table_ != nullptr); _impl_.table_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.qual_ != nullptr); _impl_.qual_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.with_check_ != nullptr); _impl_.with_check_->Clear(); } } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterPolicyStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 4, 44, 2> AlterPolicyStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterPolicyStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string policy_name = 1 [json_name = "policy_name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, _impl_.policy_name_)}}, // .pg_query.RangeVar table = 2 [json_name = "table"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, _impl_.table_)}}, // repeated .pg_query.Node roles = 3 [json_name = "roles"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, _impl_.roles_)}}, // .pg_query.Node qual = 4 [json_name = "qual"]; {::_pbi::TcParser::FastMtS1, {34, 1, 2, PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, _impl_.qual_)}}, // .pg_query.Node with_check = 5 [json_name = "with_check"]; {::_pbi::TcParser::FastMtS1, {42, 2, 3, PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, _impl_.with_check_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // string policy_name = 1 [json_name = "policy_name"]; {PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, _impl_.policy_name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.RangeVar table = 2 [json_name = "table"]; {PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, _impl_.table_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node roles = 3 [json_name = "roles"]; {PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, _impl_.roles_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node qual = 4 [json_name = "qual"]; {PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, _impl_.qual_), _Internal::kHasBitsOffset + 1, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node with_check = 5 [json_name = "with_check"]; {PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, _impl_.with_check_), _Internal::kHasBitsOffset + 2, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\30\13\0\0\0\0\0\0" "pg_query.AlterPolicyStmt" "policy_name" }}, }; ::uint8_t* AlterPolicyStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterPolicyStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string policy_name = 1 [json_name = "policy_name"]; if (!this->_internal_policy_name().empty()) { const std::string& _s = this->_internal_policy_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterPolicyStmt.policy_name"); target = stream->WriteStringMaybeAliased(1, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar table = 2 [json_name = "table"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::table(this), _Internal::table(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node roles = 3 [json_name = "roles"]; for (unsigned i = 0, n = static_cast(this->_internal_roles_size()); i < n; i++) { const auto& repfield = this->_internal_roles().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node qual = 4 [json_name = "qual"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::qual(this), _Internal::qual(this).GetCachedSize(), target, stream); } // .pg_query.Node with_check = 5 [json_name = "with_check"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::with_check(this), _Internal::with_check(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_roles()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string policy_name = 1 [json_name = "policy_name"]; if (!this->_internal_policy_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_policy_name()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.RangeVar table = 2 [json_name = "table"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.table_); } // .pg_query.Node qual = 4 [json_name = "qual"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.qual_); } // .pg_query.Node with_check = 5 [json_name = "with_check"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.with_check_); } } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterPolicyStmt::_class_data_ = { AlterPolicyStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterPolicyStmt::GetClassData() const { return &_class_data_; } void AlterPolicyStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterPolicyStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_roles()->MergeFrom( from._internal_roles()); if (!from._internal_policy_name().empty()) { _this->_internal_set_policy_name(from._internal_policy_name()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_table()->::pg_query::RangeVar::MergeFrom( from._internal_table()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_qual()->::pg_query::Node::MergeFrom( from._internal_qual()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_with_check()->::pg_query::Node::MergeFrom( from._internal_with_check()); } } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterPolicyStmt::CopyFrom(const AlterPolicyStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterPolicyStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterPolicyStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterPolicyStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterPolicyStmt::InternalSwap(AlterPolicyStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.roles_.InternalSwap(&other->_impl_.roles_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.policy_name_, &other->_impl_.policy_name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, _impl_.with_check_) + sizeof(AlterPolicyStmt::_impl_.with_check_) - PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, _impl_.table_)>( reinterpret_cast(&_impl_.table_), reinterpret_cast(&other->_impl_.table_)); } ::google::protobuf::Metadata AlterPolicyStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[184]); } // =================================================================== class CreateAmStmt::_Internal { public: }; CreateAmStmt::CreateAmStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateAmStmt) } inline PROTOBUF_NDEBUG_INLINE CreateAmStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : handler_name_{visibility, arena, from.handler_name_}, amname_(arena, from.amname_), amtype_(arena, from.amtype_), _cached_size_{0} {} CreateAmStmt::CreateAmStmt( ::google::protobuf::Arena* arena, const CreateAmStmt& from) : ::google::protobuf::Message(arena) { CreateAmStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.CreateAmStmt) } inline PROTOBUF_NDEBUG_INLINE CreateAmStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : handler_name_{visibility, arena}, amname_(arena), amtype_(arena), _cached_size_{0} {} inline void CreateAmStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } CreateAmStmt::~CreateAmStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateAmStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateAmStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.amname_.Destroy(); _impl_.amtype_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateAmStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateAmStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.handler_name_.Clear(); _impl_.amname_.ClearToEmpty(); _impl_.amtype_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateAmStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 42, 2> CreateAmStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateAmStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string amname = 1 [json_name = "amname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateAmStmt, _impl_.amname_)}}, // repeated .pg_query.Node handler_name = 2 [json_name = "handler_name"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CreateAmStmt, _impl_.handler_name_)}}, // string amtype = 3 [json_name = "amtype"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CreateAmStmt, _impl_.amtype_)}}, }}, {{ 65535, 65535 }}, {{ // string amname = 1 [json_name = "amname"]; {PROTOBUF_FIELD_OFFSET(CreateAmStmt, _impl_.amname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node handler_name = 2 [json_name = "handler_name"]; {PROTOBUF_FIELD_OFFSET(CreateAmStmt, _impl_.handler_name_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string amtype = 3 [json_name = "amtype"]; {PROTOBUF_FIELD_OFFSET(CreateAmStmt, _impl_.amtype_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\25\6\0\6\0\0\0\0" "pg_query.CreateAmStmt" "amname" "amtype" }}, }; ::uint8_t* CreateAmStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateAmStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string amname = 1 [json_name = "amname"]; if (!this->_internal_amname().empty()) { const std::string& _s = this->_internal_amname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateAmStmt.amname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node handler_name = 2 [json_name = "handler_name"]; for (unsigned i = 0, n = static_cast(this->_internal_handler_name_size()); i < n; i++) { const auto& repfield = this->_internal_handler_name().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // string amtype = 3 [json_name = "amtype"]; if (!this->_internal_amtype().empty()) { const std::string& _s = this->_internal_amtype(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateAmStmt.amtype"); target = stream->WriteStringMaybeAliased(3, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_handler_name()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string amname = 1 [json_name = "amname"]; if (!this->_internal_amname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_amname()); } // string amtype = 3 [json_name = "amtype"]; if (!this->_internal_amtype().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_amtype()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateAmStmt::_class_data_ = { CreateAmStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateAmStmt::GetClassData() const { return &_class_data_; } void CreateAmStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateAmStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_handler_name()->MergeFrom( from._internal_handler_name()); if (!from._internal_amname().empty()) { _this->_internal_set_amname(from._internal_amname()); } if (!from._internal_amtype().empty()) { _this->_internal_set_amtype(from._internal_amtype()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateAmStmt::CopyFrom(const CreateAmStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateAmStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateAmStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateAmStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateAmStmt::InternalSwap(CreateAmStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.handler_name_.InternalSwap(&other->_impl_.handler_name_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.amname_, &other->_impl_.amname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.amtype_, &other->_impl_.amtype_, arena); } ::google::protobuf::Metadata CreateAmStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[185]); } // =================================================================== class CreateTrigStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const CreateTrigStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& when_clause(const CreateTrigStmt* msg); static void set_has_when_clause(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::RangeVar& constrrel(const CreateTrigStmt* msg); static void set_has_constrrel(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::RangeVar& CreateTrigStmt::_Internal::relation(const CreateTrigStmt* msg) { return *msg->_impl_.relation_; } const ::pg_query::Node& CreateTrigStmt::_Internal::when_clause(const CreateTrigStmt* msg) { return *msg->_impl_.when_clause_; } const ::pg_query::RangeVar& CreateTrigStmt::_Internal::constrrel(const CreateTrigStmt* msg) { return *msg->_impl_.constrrel_; } CreateTrigStmt::CreateTrigStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateTrigStmt) } inline PROTOBUF_NDEBUG_INLINE CreateTrigStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, funcname_{visibility, arena, from.funcname_}, args_{visibility, arena, from.args_}, columns_{visibility, arena, from.columns_}, transition_rels_{visibility, arena, from.transition_rels_}, trigname_(arena, from.trigname_) {} CreateTrigStmt::CreateTrigStmt( ::google::protobuf::Arena* arena, const CreateTrigStmt& from) : ::google::protobuf::Message(arena) { CreateTrigStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.when_clause_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.when_clause_) : nullptr; _impl_.constrrel_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.constrrel_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, replace_), reinterpret_cast(&from._impl_) + offsetof(Impl_, replace_), offsetof(Impl_, initdeferred_) - offsetof(Impl_, replace_) + sizeof(Impl_::initdeferred_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateTrigStmt) } inline PROTOBUF_NDEBUG_INLINE CreateTrigStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, funcname_{visibility, arena}, args_{visibility, arena}, columns_{visibility, arena}, transition_rels_{visibility, arena}, trigname_(arena) {} inline void CreateTrigStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, initdeferred_) - offsetof(Impl_, relation_) + sizeof(Impl_::initdeferred_)); } CreateTrigStmt::~CreateTrigStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateTrigStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateTrigStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.trigname_.Destroy(); delete _impl_.relation_; delete _impl_.when_clause_; delete _impl_.constrrel_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateTrigStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateTrigStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.funcname_.Clear(); _impl_.args_.Clear(); _impl_.columns_.Clear(); _impl_.transition_rels_.Clear(); _impl_.trigname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.when_clause_ != nullptr); _impl_.when_clause_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.constrrel_ != nullptr); _impl_.constrrel_->Clear(); } } ::memset(&_impl_.replace_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.initdeferred_) - reinterpret_cast(&_impl_.replace_)) + sizeof(_impl_.initdeferred_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateTrigStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<4, 15, 7, 48, 2> CreateTrigStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_._has_bits_), 0, // no _extensions_ 15, 120, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294934528, // skipmap offsetof(decltype(_table_), field_entries), 15, // num_field_entries 7, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateTrigStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // bool replace = 1 [json_name = "replace"]; {::_pbi::TcParser::SingularVarintNoZag1(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.replace_)}}, // bool isconstraint = 2 [json_name = "isconstraint"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.isconstraint_)}}, // string trigname = 3 [json_name = "trigname"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.trigname_)}}, // .pg_query.RangeVar relation = 4 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {34, 0, 0, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.relation_)}}, // repeated .pg_query.Node funcname = 5 [json_name = "funcname"]; {::_pbi::TcParser::FastMtR1, {42, 63, 1, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.funcname_)}}, // repeated .pg_query.Node args = 6 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {50, 63, 2, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.args_)}}, // bool row = 7 [json_name = "row"]; {::_pbi::TcParser::SingularVarintNoZag1(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.row_)}}, // int32 timing = 8 [json_name = "timing"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateTrigStmt, _impl_.timing_), 63>(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.timing_)}}, // int32 events = 9 [json_name = "events"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateTrigStmt, _impl_.events_), 63>(), {72, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.events_)}}, // repeated .pg_query.Node columns = 10 [json_name = "columns"]; {::_pbi::TcParser::FastMtR1, {82, 63, 3, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.columns_)}}, // .pg_query.Node when_clause = 11 [json_name = "whenClause"]; {::_pbi::TcParser::FastMtS1, {90, 1, 4, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.when_clause_)}}, // repeated .pg_query.Node transition_rels = 12 [json_name = "transitionRels"]; {::_pbi::TcParser::FastMtR1, {98, 63, 5, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.transition_rels_)}}, // bool deferrable = 13 [json_name = "deferrable"]; {::_pbi::TcParser::SingularVarintNoZag1(), {104, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.deferrable_)}}, // bool initdeferred = 14 [json_name = "initdeferred"]; {::_pbi::TcParser::SingularVarintNoZag1(), {112, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.initdeferred_)}}, // .pg_query.RangeVar constrrel = 15 [json_name = "constrrel"]; {::_pbi::TcParser::FastMtS1, {122, 2, 6, PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.constrrel_)}}, }}, {{ 65535, 65535 }}, {{ // bool replace = 1 [json_name = "replace"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.replace_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool isconstraint = 2 [json_name = "isconstraint"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.isconstraint_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // string trigname = 3 [json_name = "trigname"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.trigname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.RangeVar relation = 4 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node funcname = 5 [json_name = "funcname"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.funcname_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node args = 6 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.args_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool row = 7 [json_name = "row"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.row_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 timing = 8 [json_name = "timing"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.timing_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 events = 9 [json_name = "events"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.events_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // repeated .pg_query.Node columns = 10 [json_name = "columns"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.columns_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node when_clause = 11 [json_name = "whenClause"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.when_clause_), _Internal::kHasBitsOffset + 1, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node transition_rels = 12 [json_name = "transitionRels"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.transition_rels_), -1, 5, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool deferrable = 13 [json_name = "deferrable"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.deferrable_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool initdeferred = 14 [json_name = "initdeferred"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.initdeferred_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.RangeVar constrrel = 15 [json_name = "constrrel"]; {PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.constrrel_), _Internal::kHasBitsOffset + 2, 6, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, }}, {{ "\27\0\0\10\0\0\0\0\0\0\0\0\0\0\0\0" "pg_query.CreateTrigStmt" "trigname" }}, }; ::uint8_t* CreateTrigStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateTrigStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // bool replace = 1 [json_name = "replace"]; if (this->_internal_replace() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 1, this->_internal_replace(), target); } // bool isconstraint = 2 [json_name = "isconstraint"]; if (this->_internal_isconstraint() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_isconstraint(), target); } // string trigname = 3 [json_name = "trigname"]; if (!this->_internal_trigname().empty()) { const std::string& _s = this->_internal_trigname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateTrigStmt.trigname"); target = stream->WriteStringMaybeAliased(3, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 4 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node funcname = 5 [json_name = "funcname"]; for (unsigned i = 0, n = static_cast(this->_internal_funcname_size()); i < n; i++) { const auto& repfield = this->_internal_funcname().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node args = 6 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // bool row = 7 [json_name = "row"]; if (this->_internal_row() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 7, this->_internal_row(), target); } // int32 timing = 8 [json_name = "timing"]; if (this->_internal_timing() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<8>( stream, this->_internal_timing(), target); } // int32 events = 9 [json_name = "events"]; if (this->_internal_events() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<9>( stream, this->_internal_events(), target); } // repeated .pg_query.Node columns = 10 [json_name = "columns"]; for (unsigned i = 0, n = static_cast(this->_internal_columns_size()); i < n; i++) { const auto& repfield = this->_internal_columns().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(10, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node when_clause = 11 [json_name = "whenClause"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 11, _Internal::when_clause(this), _Internal::when_clause(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node transition_rels = 12 [json_name = "transitionRels"]; for (unsigned i = 0, n = static_cast(this->_internal_transition_rels_size()); i < n; i++) { const auto& repfield = this->_internal_transition_rels().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(12, repfield, repfield.GetCachedSize(), target, stream); } // bool deferrable = 13 [json_name = "deferrable"]; if (this->_internal_deferrable() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 13, this->_internal_deferrable(), target); } // bool initdeferred = 14 [json_name = "initdeferred"]; if (this->_internal_initdeferred() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 14, this->_internal_initdeferred(), target); } // .pg_query.RangeVar constrrel = 15 [json_name = "constrrel"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 15, _Internal::constrrel(this), _Internal::constrrel(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node funcname = 5 [json_name = "funcname"]; total_size += 1UL * this->_internal_funcname_size(); for (const auto& msg : this->_internal_funcname()) { total_size += ::google::protobuf::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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node columns = 10 [json_name = "columns"]; total_size += 1UL * this->_internal_columns_size(); for (const auto& msg : this->_internal_columns()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node transition_rels = 12 [json_name = "transitionRels"]; total_size += 1UL * this->_internal_transition_rels_size(); for (const auto& msg : this->_internal_transition_rels()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string trigname = 3 [json_name = "trigname"]; if (!this->_internal_trigname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_trigname()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.RangeVar relation = 4 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.Node when_clause = 11 [json_name = "whenClause"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.when_clause_); } // .pg_query.RangeVar constrrel = 15 [json_name = "constrrel"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.constrrel_); } } // bool replace = 1 [json_name = "replace"]; if (this->_internal_replace() != 0) { total_size += 2; } // bool isconstraint = 2 [json_name = "isconstraint"]; if (this->_internal_isconstraint() != 0) { total_size += 2; } // bool row = 7 [json_name = "row"]; if (this->_internal_row() != 0) { total_size += 2; } // bool deferrable = 13 [json_name = "deferrable"]; if (this->_internal_deferrable() != 0) { total_size += 2; } // int32 timing = 8 [json_name = "timing"]; if (this->_internal_timing() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_timing()); } // int32 events = 9 [json_name = "events"]; if (this->_internal_events() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_events()); } // bool initdeferred = 14 [json_name = "initdeferred"]; if (this->_internal_initdeferred() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateTrigStmt::_class_data_ = { CreateTrigStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateTrigStmt::GetClassData() const { return &_class_data_; } void CreateTrigStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateTrigStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_funcname()->MergeFrom( from._internal_funcname()); _this->_internal_mutable_args()->MergeFrom( from._internal_args()); _this->_internal_mutable_columns()->MergeFrom( from._internal_columns()); _this->_internal_mutable_transition_rels()->MergeFrom( from._internal_transition_rels()); if (!from._internal_trigname().empty()) { _this->_internal_set_trigname(from._internal_trigname()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_when_clause()->::pg_query::Node::MergeFrom( from._internal_when_clause()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_constrrel()->::pg_query::RangeVar::MergeFrom( from._internal_constrrel()); } } if (from._internal_replace() != 0) { _this->_internal_set_replace(from._internal_replace()); } if (from._internal_isconstraint() != 0) { _this->_internal_set_isconstraint(from._internal_isconstraint()); } if (from._internal_row() != 0) { _this->_internal_set_row(from._internal_row()); } if (from._internal_deferrable() != 0) { _this->_internal_set_deferrable(from._internal_deferrable()); } if (from._internal_timing() != 0) { _this->_internal_set_timing(from._internal_timing()); } if (from._internal_events() != 0) { _this->_internal_set_events(from._internal_events()); } if (from._internal_initdeferred() != 0) { _this->_internal_set_initdeferred(from._internal_initdeferred()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateTrigStmt::CopyFrom(const CreateTrigStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateTrigStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateTrigStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateTrigStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateTrigStmt::InternalSwap(CreateTrigStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.funcname_.InternalSwap(&other->_impl_.funcname_); _impl_.args_.InternalSwap(&other->_impl_.args_); _impl_.columns_.InternalSwap(&other->_impl_.columns_); _impl_.transition_rels_.InternalSwap(&other->_impl_.transition_rels_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.trigname_, &other->_impl_.trigname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.initdeferred_) + sizeof(CreateTrigStmt::_impl_.initdeferred_) - PROTOBUF_FIELD_OFFSET(CreateTrigStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata CreateTrigStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[186]); } // =================================================================== class CreateEventTrigStmt::_Internal { public: }; CreateEventTrigStmt::CreateEventTrigStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateEventTrigStmt) } inline PROTOBUF_NDEBUG_INLINE CreateEventTrigStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : whenclause_{visibility, arena, from.whenclause_}, funcname_{visibility, arena, from.funcname_}, trigname_(arena, from.trigname_), eventname_(arena, from.eventname_), _cached_size_{0} {} CreateEventTrigStmt::CreateEventTrigStmt( ::google::protobuf::Arena* arena, const CreateEventTrigStmt& from) : ::google::protobuf::Message(arena) { CreateEventTrigStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.CreateEventTrigStmt) } inline PROTOBUF_NDEBUG_INLINE CreateEventTrigStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : whenclause_{visibility, arena}, funcname_{visibility, arena}, trigname_(arena), eventname_(arena), _cached_size_{0} {} inline void CreateEventTrigStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } CreateEventTrigStmt::~CreateEventTrigStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateEventTrigStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateEventTrigStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.trigname_.Destroy(); _impl_.eventname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateEventTrigStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateEventTrigStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.whenclause_.Clear(); _impl_.funcname_.Clear(); _impl_.trigname_.ClearToEmpty(); _impl_.eventname_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateEventTrigStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 54, 2> CreateEventTrigStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateEventTrigStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node funcname = 4 [json_name = "funcname"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(CreateEventTrigStmt, _impl_.funcname_)}}, // string trigname = 1 [json_name = "trigname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateEventTrigStmt, _impl_.trigname_)}}, // string eventname = 2 [json_name = "eventname"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CreateEventTrigStmt, _impl_.eventname_)}}, // repeated .pg_query.Node whenclause = 3 [json_name = "whenclause"]; {::_pbi::TcParser::FastMtR1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CreateEventTrigStmt, _impl_.whenclause_)}}, }}, {{ 65535, 65535 }}, {{ // string trigname = 1 [json_name = "trigname"]; {PROTOBUF_FIELD_OFFSET(CreateEventTrigStmt, _impl_.trigname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string eventname = 2 [json_name = "eventname"]; {PROTOBUF_FIELD_OFFSET(CreateEventTrigStmt, _impl_.eventname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node whenclause = 3 [json_name = "whenclause"]; {PROTOBUF_FIELD_OFFSET(CreateEventTrigStmt, _impl_.whenclause_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node funcname = 4 [json_name = "funcname"]; {PROTOBUF_FIELD_OFFSET(CreateEventTrigStmt, _impl_.funcname_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\34\10\11\0\0\0\0\0" "pg_query.CreateEventTrigStmt" "trigname" "eventname" }}, }; ::uint8_t* CreateEventTrigStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateEventTrigStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string trigname = 1 [json_name = "trigname"]; if (!this->_internal_trigname().empty()) { const std::string& _s = this->_internal_trigname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateEventTrigStmt.trigname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // string eventname = 2 [json_name = "eventname"]; if (!this->_internal_eventname().empty()) { const std::string& _s = this->_internal_eventname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateEventTrigStmt.eventname"); target = stream->WriteStringMaybeAliased(2, _s, target); } // repeated .pg_query.Node whenclause = 3 [json_name = "whenclause"]; for (unsigned i = 0, n = static_cast(this->_internal_whenclause_size()); i < n; i++) { const auto& repfield = this->_internal_whenclause().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node funcname = 4 [json_name = "funcname"]; for (unsigned i = 0, n = static_cast(this->_internal_funcname_size()); i < n; i++) { const auto& repfield = this->_internal_funcname().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_whenclause()) { total_size += ::google::protobuf::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->_internal_funcname()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string trigname = 1 [json_name = "trigname"]; if (!this->_internal_trigname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_trigname()); } // string eventname = 2 [json_name = "eventname"]; if (!this->_internal_eventname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_eventname()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateEventTrigStmt::_class_data_ = { CreateEventTrigStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateEventTrigStmt::GetClassData() const { return &_class_data_; } void CreateEventTrigStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateEventTrigStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_whenclause()->MergeFrom( from._internal_whenclause()); _this->_internal_mutable_funcname()->MergeFrom( from._internal_funcname()); if (!from._internal_trigname().empty()) { _this->_internal_set_trigname(from._internal_trigname()); } if (!from._internal_eventname().empty()) { _this->_internal_set_eventname(from._internal_eventname()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateEventTrigStmt::CopyFrom(const CreateEventTrigStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateEventTrigStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateEventTrigStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateEventTrigStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateEventTrigStmt::InternalSwap(CreateEventTrigStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.whenclause_.InternalSwap(&other->_impl_.whenclause_); _impl_.funcname_.InternalSwap(&other->_impl_.funcname_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.trigname_, &other->_impl_.trigname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.eventname_, &other->_impl_.eventname_, arena); } ::google::protobuf::Metadata CreateEventTrigStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[187]); } // =================================================================== class AlterEventTrigStmt::_Internal { public: }; AlterEventTrigStmt::AlterEventTrigStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterEventTrigStmt) } inline PROTOBUF_NDEBUG_INLINE AlterEventTrigStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : trigname_(arena, from.trigname_), tgenabled_(arena, from.tgenabled_), _cached_size_{0} {} AlterEventTrigStmt::AlterEventTrigStmt( ::google::protobuf::Arena* arena, const AlterEventTrigStmt& from) : ::google::protobuf::Message(arena) { AlterEventTrigStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.AlterEventTrigStmt) } inline PROTOBUF_NDEBUG_INLINE AlterEventTrigStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : trigname_(arena), tgenabled_(arena), _cached_size_{0} {} inline void AlterEventTrigStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } AlterEventTrigStmt::~AlterEventTrigStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterEventTrigStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterEventTrigStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.trigname_.Destroy(); _impl_.tgenabled_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterEventTrigStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterEventTrigStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.trigname_.ClearToEmpty(); _impl_.tgenabled_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterEventTrigStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 0, 53, 2> AlterEventTrigStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_AlterEventTrigStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string tgenabled = 2 [json_name = "tgenabled"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterEventTrigStmt, _impl_.tgenabled_)}}, // string trigname = 1 [json_name = "trigname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterEventTrigStmt, _impl_.trigname_)}}, }}, {{ 65535, 65535 }}, {{ // string trigname = 1 [json_name = "trigname"]; {PROTOBUF_FIELD_OFFSET(AlterEventTrigStmt, _impl_.trigname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string tgenabled = 2 [json_name = "tgenabled"]; {PROTOBUF_FIELD_OFFSET(AlterEventTrigStmt, _impl_.tgenabled_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, // no aux_entries {{ "\33\10\11\0\0\0\0\0" "pg_query.AlterEventTrigStmt" "trigname" "tgenabled" }}, }; ::uint8_t* AlterEventTrigStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterEventTrigStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string trigname = 1 [json_name = "trigname"]; if (!this->_internal_trigname().empty()) { const std::string& _s = this->_internal_trigname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterEventTrigStmt.trigname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // string tgenabled = 2 [json_name = "tgenabled"]; if (!this->_internal_tgenabled().empty()) { const std::string& _s = this->_internal_tgenabled(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterEventTrigStmt.tgenabled"); target = stream->WriteStringMaybeAliased(2, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_trigname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_trigname()); } // string tgenabled = 2 [json_name = "tgenabled"]; if (!this->_internal_tgenabled().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_tgenabled()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterEventTrigStmt::_class_data_ = { AlterEventTrigStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterEventTrigStmt::GetClassData() const { return &_class_data_; } void AlterEventTrigStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterEventTrigStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_trigname().empty()) { _this->_internal_set_trigname(from._internal_trigname()); } if (!from._internal_tgenabled().empty()) { _this->_internal_set_tgenabled(from._internal_tgenabled()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterEventTrigStmt::CopyFrom(const AlterEventTrigStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterEventTrigStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterEventTrigStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterEventTrigStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterEventTrigStmt::InternalSwap(AlterEventTrigStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.trigname_, &other->_impl_.trigname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.tgenabled_, &other->_impl_.tgenabled_, arena); } ::google::protobuf::Metadata AlterEventTrigStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[188]); } // =================================================================== class CreatePLangStmt::_Internal { public: }; CreatePLangStmt::CreatePLangStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreatePLangStmt) } inline PROTOBUF_NDEBUG_INLINE CreatePLangStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : plhandler_{visibility, arena, from.plhandler_}, plinline_{visibility, arena, from.plinline_}, plvalidator_{visibility, arena, from.plvalidator_}, plname_(arena, from.plname_), _cached_size_{0} {} CreatePLangStmt::CreatePLangStmt( ::google::protobuf::Arena* arena, const CreatePLangStmt& from) : ::google::protobuf::Message(arena) { CreatePLangStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, replace_), reinterpret_cast(&from._impl_) + offsetof(Impl_, replace_), offsetof(Impl_, pltrusted_) - offsetof(Impl_, replace_) + sizeof(Impl_::pltrusted_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreatePLangStmt) } inline PROTOBUF_NDEBUG_INLINE CreatePLangStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : plhandler_{visibility, arena}, plinline_{visibility, arena}, plvalidator_{visibility, arena}, plname_(arena), _cached_size_{0} {} inline void CreatePLangStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, replace_), 0, offsetof(Impl_, pltrusted_) - offsetof(Impl_, replace_) + sizeof(Impl_::pltrusted_)); } CreatePLangStmt::~CreatePLangStmt() { // @@protoc_insertion_point(destructor:pg_query.CreatePLangStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreatePLangStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.plname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreatePLangStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreatePLangStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.plhandler_.Clear(); _impl_.plinline_.Clear(); _impl_.plvalidator_.Clear(); _impl_.plname_.ClearToEmpty(); ::memset(&_impl_.replace_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.pltrusted_) - reinterpret_cast(&_impl_.replace_)) + sizeof(_impl_.pltrusted_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreatePLangStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 3, 39, 2> CreatePLangStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreatePLangStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // bool replace = 1 [json_name = "replace"]; {::_pbi::TcParser::SingularVarintNoZag1(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePLangStmt, _impl_.replace_)}}, // string plname = 2 [json_name = "plname"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePLangStmt, _impl_.plname_)}}, // repeated .pg_query.Node plhandler = 3 [json_name = "plhandler"]; {::_pbi::TcParser::FastMtR1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePLangStmt, _impl_.plhandler_)}}, // repeated .pg_query.Node plinline = 4 [json_name = "plinline"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(CreatePLangStmt, _impl_.plinline_)}}, // repeated .pg_query.Node plvalidator = 5 [json_name = "plvalidator"]; {::_pbi::TcParser::FastMtR1, {42, 63, 2, PROTOBUF_FIELD_OFFSET(CreatePLangStmt, _impl_.plvalidator_)}}, // bool pltrusted = 6 [json_name = "pltrusted"]; {::_pbi::TcParser::SingularVarintNoZag1(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePLangStmt, _impl_.pltrusted_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // bool replace = 1 [json_name = "replace"]; {PROTOBUF_FIELD_OFFSET(CreatePLangStmt, _impl_.replace_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // string plname = 2 [json_name = "plname"]; {PROTOBUF_FIELD_OFFSET(CreatePLangStmt, _impl_.plname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node plhandler = 3 [json_name = "plhandler"]; {PROTOBUF_FIELD_OFFSET(CreatePLangStmt, _impl_.plhandler_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node plinline = 4 [json_name = "plinline"]; {PROTOBUF_FIELD_OFFSET(CreatePLangStmt, _impl_.plinline_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node plvalidator = 5 [json_name = "plvalidator"]; {PROTOBUF_FIELD_OFFSET(CreatePLangStmt, _impl_.plvalidator_), 0, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool pltrusted = 6 [json_name = "pltrusted"]; {PROTOBUF_FIELD_OFFSET(CreatePLangStmt, _impl_.pltrusted_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\30\0\6\0\0\0\0\0" "pg_query.CreatePLangStmt" "plname" }}, }; ::uint8_t* CreatePLangStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreatePLangStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // bool replace = 1 [json_name = "replace"]; if (this->_internal_replace() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 1, this->_internal_replace(), target); } // string plname = 2 [json_name = "plname"]; if (!this->_internal_plname().empty()) { const std::string& _s = this->_internal_plname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreatePLangStmt.plname"); target = stream->WriteStringMaybeAliased(2, _s, target); } // repeated .pg_query.Node plhandler = 3 [json_name = "plhandler"]; for (unsigned i = 0, n = static_cast(this->_internal_plhandler_size()); i < n; i++) { const auto& repfield = this->_internal_plhandler().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node plinline = 4 [json_name = "plinline"]; for (unsigned i = 0, n = static_cast(this->_internal_plinline_size()); i < n; i++) { const auto& repfield = this->_internal_plinline().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node plvalidator = 5 [json_name = "plvalidator"]; for (unsigned i = 0, n = static_cast(this->_internal_plvalidator_size()); i < n; i++) { const auto& repfield = this->_internal_plvalidator().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // bool pltrusted = 6 [json_name = "pltrusted"]; if (this->_internal_pltrusted() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 6, this->_internal_pltrusted(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_plhandler()) { total_size += ::google::protobuf::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->_internal_plinline()) { total_size += ::google::protobuf::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->_internal_plvalidator()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string plname = 2 [json_name = "plname"]; if (!this->_internal_plname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_plname()); } // bool replace = 1 [json_name = "replace"]; if (this->_internal_replace() != 0) { total_size += 2; } // bool pltrusted = 6 [json_name = "pltrusted"]; if (this->_internal_pltrusted() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreatePLangStmt::_class_data_ = { CreatePLangStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreatePLangStmt::GetClassData() const { return &_class_data_; } void CreatePLangStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreatePLangStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_plhandler()->MergeFrom( from._internal_plhandler()); _this->_internal_mutable_plinline()->MergeFrom( from._internal_plinline()); _this->_internal_mutable_plvalidator()->MergeFrom( from._internal_plvalidator()); if (!from._internal_plname().empty()) { _this->_internal_set_plname(from._internal_plname()); } if (from._internal_replace() != 0) { _this->_internal_set_replace(from._internal_replace()); } if (from._internal_pltrusted() != 0) { _this->_internal_set_pltrusted(from._internal_pltrusted()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreatePLangStmt::CopyFrom(const CreatePLangStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreatePLangStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreatePLangStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreatePLangStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreatePLangStmt::InternalSwap(CreatePLangStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.plhandler_.InternalSwap(&other->_impl_.plhandler_); _impl_.plinline_.InternalSwap(&other->_impl_.plinline_); _impl_.plvalidator_.InternalSwap(&other->_impl_.plvalidator_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.plname_, &other->_impl_.plname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreatePLangStmt, _impl_.pltrusted_) + sizeof(CreatePLangStmt::_impl_.pltrusted_) - PROTOBUF_FIELD_OFFSET(CreatePLangStmt, _impl_.replace_)>( reinterpret_cast(&_impl_.replace_), reinterpret_cast(&other->_impl_.replace_)); } ::google::protobuf::Metadata CreatePLangStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[189]); } // =================================================================== class CreateRoleStmt::_Internal { public: }; CreateRoleStmt::CreateRoleStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateRoleStmt) } inline PROTOBUF_NDEBUG_INLINE CreateRoleStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : options_{visibility, arena, from.options_}, role_(arena, from.role_), _cached_size_{0} {} CreateRoleStmt::CreateRoleStmt( ::google::protobuf::Arena* arena, const CreateRoleStmt& from) : ::google::protobuf::Message(arena) { CreateRoleStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.stmt_type_ = from._impl_.stmt_type_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateRoleStmt) } inline PROTOBUF_NDEBUG_INLINE CreateRoleStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : options_{visibility, arena}, role_(arena), _cached_size_{0} {} inline void CreateRoleStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.stmt_type_ = {}; } CreateRoleStmt::~CreateRoleStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateRoleStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateRoleStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.role_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateRoleStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateRoleStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.role_.ClearToEmpty(); _impl_.stmt_type_ = 0; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateRoleStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 36, 2> CreateRoleStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateRoleStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RoleStmtType stmt_type = 1 [json_name = "stmt_type"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateRoleStmt, _impl_.stmt_type_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(CreateRoleStmt, _impl_.stmt_type_)}}, // string role = 2 [json_name = "role"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CreateRoleStmt, _impl_.role_)}}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CreateRoleStmt, _impl_.options_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RoleStmtType stmt_type = 1 [json_name = "stmt_type"]; {PROTOBUF_FIELD_OFFSET(CreateRoleStmt, _impl_.stmt_type_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // string role = 2 [json_name = "role"]; {PROTOBUF_FIELD_OFFSET(CreateRoleStmt, _impl_.role_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(CreateRoleStmt, _impl_.options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\27\0\4\0\0\0\0\0" "pg_query.CreateRoleStmt" "role" }}, }; ::uint8_t* CreateRoleStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateRoleStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.RoleStmtType stmt_type = 1 [json_name = "stmt_type"]; if (this->_internal_stmt_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_stmt_type(), target); } // string role = 2 [json_name = "role"]; if (!this->_internal_role().empty()) { const std::string& _s = this->_internal_role(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateRoleStmt.role"); target = stream->WriteStringMaybeAliased(2, _s, target); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string role = 2 [json_name = "role"]; if (!this->_internal_role().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_role()); } // .pg_query.RoleStmtType stmt_type = 1 [json_name = "stmt_type"]; if (this->_internal_stmt_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_stmt_type()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateRoleStmt::_class_data_ = { CreateRoleStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateRoleStmt::GetClassData() const { return &_class_data_; } void CreateRoleStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateRoleStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_role().empty()) { _this->_internal_set_role(from._internal_role()); } if (from._internal_stmt_type() != 0) { _this->_internal_set_stmt_type(from._internal_stmt_type()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateRoleStmt::CopyFrom(const CreateRoleStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateRoleStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateRoleStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateRoleStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateRoleStmt::InternalSwap(CreateRoleStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.role_, &other->_impl_.role_, arena); swap(_impl_.stmt_type_, other->_impl_.stmt_type_); } ::google::protobuf::Metadata CreateRoleStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[190]); } // =================================================================== class AlterRoleStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterRoleStmt, _impl_._has_bits_); static const ::pg_query::RoleSpec& role(const AlterRoleStmt* msg); static void set_has_role(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RoleSpec& AlterRoleStmt::_Internal::role(const AlterRoleStmt* msg) { return *msg->_impl_.role_; } AlterRoleStmt::AlterRoleStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterRoleStmt) } inline PROTOBUF_NDEBUG_INLINE AlterRoleStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, options_{visibility, arena, from.options_} {} AlterRoleStmt::AlterRoleStmt( ::google::protobuf::Arena* arena, const AlterRoleStmt& from) : ::google::protobuf::Message(arena) { AlterRoleStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.role_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RoleSpec>(arena, *from._impl_.role_) : nullptr; _impl_.action_ = from._impl_.action_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterRoleStmt) } inline PROTOBUF_NDEBUG_INLINE AlterRoleStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, options_{visibility, arena} {} inline void AlterRoleStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, role_), 0, offsetof(Impl_, action_) - offsetof(Impl_, role_) + sizeof(Impl_::action_)); } AlterRoleStmt::~AlterRoleStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterRoleStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterRoleStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.role_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterRoleStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterRoleStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.role_ != nullptr); _impl_.role_->Clear(); } _impl_.action_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterRoleStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 0, 2> AlterRoleStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterRoleStmt, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterRoleStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RoleSpec role = 1 [json_name = "role"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(AlterRoleStmt, _impl_.role_)}}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(AlterRoleStmt, _impl_.options_)}}, // int32 action = 3 [json_name = "action"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterRoleStmt, _impl_.action_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(AlterRoleStmt, _impl_.action_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RoleSpec role = 1 [json_name = "role"]; {PROTOBUF_FIELD_OFFSET(AlterRoleStmt, _impl_.role_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(AlterRoleStmt, _impl_.options_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 action = 3 [json_name = "action"]; {PROTOBUF_FIELD_OFFSET(AlterRoleStmt, _impl_.action_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RoleSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* AlterRoleStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterRoleStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RoleSpec role = 1 [json_name = "role"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::role(this), _Internal::role(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // int32 action = 3 [json_name = "action"]; if (this->_internal_action() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_action(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RoleSpec role = 1 [json_name = "role"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.role_); } // int32 action = 3 [json_name = "action"]; if (this->_internal_action() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_action()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterRoleStmt::_class_data_ = { AlterRoleStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterRoleStmt::GetClassData() const { return &_class_data_; } void AlterRoleStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterRoleStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_role()->::pg_query::RoleSpec::MergeFrom( from._internal_role()); } if (from._internal_action() != 0) { _this->_internal_set_action(from._internal_action()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterRoleStmt::CopyFrom(const AlterRoleStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterRoleStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterRoleStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterRoleStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterRoleStmt::InternalSwap(AlterRoleStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.options_.InternalSwap(&other->_impl_.options_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterRoleStmt, _impl_.action_) + sizeof(AlterRoleStmt::_impl_.action_) - PROTOBUF_FIELD_OFFSET(AlterRoleStmt, _impl_.role_)>( reinterpret_cast(&_impl_.role_), reinterpret_cast(&other->_impl_.role_)); } ::google::protobuf::Metadata AlterRoleStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[191]); } // =================================================================== class AlterRoleSetStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterRoleSetStmt, _impl_._has_bits_); static const ::pg_query::RoleSpec& role(const AlterRoleSetStmt* msg); static void set_has_role(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::VariableSetStmt& setstmt(const AlterRoleSetStmt* msg); static void set_has_setstmt(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::RoleSpec& AlterRoleSetStmt::_Internal::role(const AlterRoleSetStmt* msg) { return *msg->_impl_.role_; } const ::pg_query::VariableSetStmt& AlterRoleSetStmt::_Internal::setstmt(const AlterRoleSetStmt* msg) { return *msg->_impl_.setstmt_; } AlterRoleSetStmt::AlterRoleSetStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterRoleSetStmt) } inline PROTOBUF_NDEBUG_INLINE AlterRoleSetStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, database_(arena, from.database_) {} AlterRoleSetStmt::AlterRoleSetStmt( ::google::protobuf::Arena* arena, const AlterRoleSetStmt& from) : ::google::protobuf::Message(arena) { AlterRoleSetStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.role_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RoleSpec>(arena, *from._impl_.role_) : nullptr; _impl_.setstmt_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::VariableSetStmt>(arena, *from._impl_.setstmt_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.AlterRoleSetStmt) } inline PROTOBUF_NDEBUG_INLINE AlterRoleSetStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, database_(arena) {} inline void AlterRoleSetStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, role_), 0, offsetof(Impl_, setstmt_) - offsetof(Impl_, role_) + sizeof(Impl_::setstmt_)); } AlterRoleSetStmt::~AlterRoleSetStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterRoleSetStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterRoleSetStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.database_.Destroy(); delete _impl_.role_; delete _impl_.setstmt_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterRoleSetStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterRoleSetStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.database_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.role_ != nullptr); _impl_.role_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.setstmt_ != nullptr); _impl_.setstmt_->Clear(); } } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterRoleSetStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 42, 2> AlterRoleSetStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterRoleSetStmt, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterRoleSetStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RoleSpec role = 1 [json_name = "role"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(AlterRoleSetStmt, _impl_.role_)}}, // string database = 2 [json_name = "database"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterRoleSetStmt, _impl_.database_)}}, // .pg_query.VariableSetStmt setstmt = 3 [json_name = "setstmt"]; {::_pbi::TcParser::FastMtS1, {26, 1, 1, PROTOBUF_FIELD_OFFSET(AlterRoleSetStmt, _impl_.setstmt_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RoleSpec role = 1 [json_name = "role"]; {PROTOBUF_FIELD_OFFSET(AlterRoleSetStmt, _impl_.role_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string database = 2 [json_name = "database"]; {PROTOBUF_FIELD_OFFSET(AlterRoleSetStmt, _impl_.database_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.VariableSetStmt setstmt = 3 [json_name = "setstmt"]; {PROTOBUF_FIELD_OFFSET(AlterRoleSetStmt, _impl_.setstmt_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RoleSpec>()}, {::_pbi::TcParser::GetTable<::pg_query::VariableSetStmt>()}, }}, {{ "\31\0\10\0\0\0\0\0" "pg_query.AlterRoleSetStmt" "database" }}, }; ::uint8_t* AlterRoleSetStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterRoleSetStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RoleSpec role = 1 [json_name = "role"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::role(this), _Internal::role(this).GetCachedSize(), target, stream); } // string database = 2 [json_name = "database"]; if (!this->_internal_database().empty()) { const std::string& _s = this->_internal_database(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterRoleSetStmt.database"); target = stream->WriteStringMaybeAliased(2, _s, target); } // .pg_query.VariableSetStmt setstmt = 3 [json_name = "setstmt"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::setstmt(this), _Internal::setstmt(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_database().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_database()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.RoleSpec role = 1 [json_name = "role"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.role_); } // .pg_query.VariableSetStmt setstmt = 3 [json_name = "setstmt"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.setstmt_); } } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterRoleSetStmt::_class_data_ = { AlterRoleSetStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterRoleSetStmt::GetClassData() const { return &_class_data_; } void AlterRoleSetStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterRoleSetStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_database().empty()) { _this->_internal_set_database(from._internal_database()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_role()->::pg_query::RoleSpec::MergeFrom( from._internal_role()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_setstmt()->::pg_query::VariableSetStmt::MergeFrom( from._internal_setstmt()); } } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterRoleSetStmt::CopyFrom(const AlterRoleSetStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterRoleSetStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterRoleSetStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterRoleSetStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterRoleSetStmt::InternalSwap(AlterRoleSetStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.database_, &other->_impl_.database_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterRoleSetStmt, _impl_.setstmt_) + sizeof(AlterRoleSetStmt::_impl_.setstmt_) - PROTOBUF_FIELD_OFFSET(AlterRoleSetStmt, _impl_.role_)>( reinterpret_cast(&_impl_.role_), reinterpret_cast(&other->_impl_.role_)); } ::google::protobuf::Metadata AlterRoleSetStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[192]); } // =================================================================== class DropRoleStmt::_Internal { public: }; DropRoleStmt::DropRoleStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DropRoleStmt) } inline PROTOBUF_NDEBUG_INLINE DropRoleStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : roles_{visibility, arena, from.roles_}, _cached_size_{0} {} DropRoleStmt::DropRoleStmt( ::google::protobuf::Arena* arena, const DropRoleStmt& from) : ::google::protobuf::Message(arena) { DropRoleStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.missing_ok_ = from._impl_.missing_ok_; // @@protoc_insertion_point(copy_constructor:pg_query.DropRoleStmt) } inline PROTOBUF_NDEBUG_INLINE DropRoleStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : roles_{visibility, arena}, _cached_size_{0} {} inline void DropRoleStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.missing_ok_ = {}; } DropRoleStmt::~DropRoleStmt() { // @@protoc_insertion_point(destructor:pg_query.DropRoleStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DropRoleStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void DropRoleStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DropRoleStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.roles_.Clear(); _impl_.missing_ok_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DropRoleStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 0, 2> DropRoleStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_DropRoleStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool missing_ok = 2 [json_name = "missing_ok"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(DropRoleStmt, _impl_.missing_ok_)}}, // repeated .pg_query.Node roles = 1 [json_name = "roles"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(DropRoleStmt, _impl_.roles_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node roles = 1 [json_name = "roles"]; {PROTOBUF_FIELD_OFFSET(DropRoleStmt, _impl_.roles_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool missing_ok = 2 [json_name = "missing_ok"]; {PROTOBUF_FIELD_OFFSET(DropRoleStmt, _impl_.missing_ok_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* DropRoleStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DropRoleStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node roles = 1 [json_name = "roles"]; for (unsigned i = 0, n = static_cast(this->_internal_roles_size()); i < n; i++) { const auto& repfield = this->_internal_roles().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_roles()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DropRoleStmt::_class_data_ = { DropRoleStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DropRoleStmt::GetClassData() const { return &_class_data_; } void DropRoleStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DropRoleStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_roles()->MergeFrom( from._internal_roles()); if (from._internal_missing_ok() != 0) { _this->_internal_set_missing_ok(from._internal_missing_ok()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DropRoleStmt::CopyFrom(const DropRoleStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DropRoleStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DropRoleStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* DropRoleStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void DropRoleStmt::InternalSwap(DropRoleStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.roles_.InternalSwap(&other->_impl_.roles_); swap(_impl_.missing_ok_, other->_impl_.missing_ok_); } ::google::protobuf::Metadata DropRoleStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[193]); } // =================================================================== class CreateSeqStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreateSeqStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& sequence(const CreateSeqStmt* msg); static void set_has_sequence(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RangeVar& CreateSeqStmt::_Internal::sequence(const CreateSeqStmt* msg) { return *msg->_impl_.sequence_; } CreateSeqStmt::CreateSeqStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateSeqStmt) } inline PROTOBUF_NDEBUG_INLINE CreateSeqStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, options_{visibility, arena, from.options_} {} CreateSeqStmt::CreateSeqStmt( ::google::protobuf::Arena* arena, const CreateSeqStmt& from) : ::google::protobuf::Message(arena) { CreateSeqStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.sequence_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.sequence_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, owner_id_), reinterpret_cast(&from._impl_) + offsetof(Impl_, owner_id_), offsetof(Impl_, if_not_exists_) - offsetof(Impl_, owner_id_) + sizeof(Impl_::if_not_exists_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateSeqStmt) } inline PROTOBUF_NDEBUG_INLINE CreateSeqStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, options_{visibility, arena} {} inline void CreateSeqStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, sequence_), 0, offsetof(Impl_, if_not_exists_) - offsetof(Impl_, sequence_) + sizeof(Impl_::if_not_exists_)); } CreateSeqStmt::~CreateSeqStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateSeqStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateSeqStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.sequence_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateSeqStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateSeqStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.sequence_ != nullptr); _impl_.sequence_->Clear(); } ::memset(&_impl_.owner_id_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.if_not_exists_) - reinterpret_cast(&_impl_.owner_id_)) + sizeof(_impl_.if_not_exists_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateSeqStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 0, 2> CreateSeqStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CreateSeqStmt, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateSeqStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CreateSeqStmt, _impl_.sequence_)}}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(CreateSeqStmt, _impl_.options_)}}, // uint32 owner_id = 3 [json_name = "ownerId"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateSeqStmt, _impl_.owner_id_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSeqStmt, _impl_.owner_id_)}}, // bool for_identity = 4 [json_name = "for_identity"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSeqStmt, _impl_.for_identity_)}}, // bool if_not_exists = 5 [json_name = "if_not_exists"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSeqStmt, _impl_.if_not_exists_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; {PROTOBUF_FIELD_OFFSET(CreateSeqStmt, _impl_.sequence_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(CreateSeqStmt, _impl_.options_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 owner_id = 3 [json_name = "ownerId"]; {PROTOBUF_FIELD_OFFSET(CreateSeqStmt, _impl_.owner_id_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool for_identity = 4 [json_name = "for_identity"]; {PROTOBUF_FIELD_OFFSET(CreateSeqStmt, _impl_.for_identity_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool if_not_exists = 5 [json_name = "if_not_exists"]; {PROTOBUF_FIELD_OFFSET(CreateSeqStmt, _impl_.if_not_exists_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CreateSeqStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateSeqStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::sequence(this), _Internal::sequence(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // uint32 owner_id = 3 [json_name = "ownerId"]; if (this->_internal_owner_id() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 3, this->_internal_owner_id(), target); } // bool for_identity = 4 [json_name = "for_identity"]; if (this->_internal_for_identity() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_for_identity(), target); } // bool if_not_exists = 5 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_if_not_exists(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.sequence_); } // uint32 owner_id = 3 [json_name = "ownerId"]; if (this->_internal_owner_id() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_owner_id()); } // bool for_identity = 4 [json_name = "for_identity"]; if (this->_internal_for_identity() != 0) { total_size += 2; } // bool if_not_exists = 5 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateSeqStmt::_class_data_ = { CreateSeqStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateSeqStmt::GetClassData() const { return &_class_data_; } void CreateSeqStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateSeqStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_sequence()->::pg_query::RangeVar::MergeFrom( from._internal_sequence()); } if (from._internal_owner_id() != 0) { _this->_internal_set_owner_id(from._internal_owner_id()); } if (from._internal_for_identity() != 0) { _this->_internal_set_for_identity(from._internal_for_identity()); } if (from._internal_if_not_exists() != 0) { _this->_internal_set_if_not_exists(from._internal_if_not_exists()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateSeqStmt::CopyFrom(const CreateSeqStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateSeqStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateSeqStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateSeqStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateSeqStmt::InternalSwap(CreateSeqStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.options_.InternalSwap(&other->_impl_.options_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateSeqStmt, _impl_.if_not_exists_) + sizeof(CreateSeqStmt::_impl_.if_not_exists_) - PROTOBUF_FIELD_OFFSET(CreateSeqStmt, _impl_.sequence_)>( reinterpret_cast(&_impl_.sequence_), reinterpret_cast(&other->_impl_.sequence_)); } ::google::protobuf::Metadata CreateSeqStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[194]); } // =================================================================== class AlterSeqStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterSeqStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& sequence(const AlterSeqStmt* msg); static void set_has_sequence(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RangeVar& AlterSeqStmt::_Internal::sequence(const AlterSeqStmt* msg) { return *msg->_impl_.sequence_; } AlterSeqStmt::AlterSeqStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterSeqStmt) } inline PROTOBUF_NDEBUG_INLINE AlterSeqStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, options_{visibility, arena, from.options_} {} AlterSeqStmt::AlterSeqStmt( ::google::protobuf::Arena* arena, const AlterSeqStmt& from) : ::google::protobuf::Message(arena) { AlterSeqStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.sequence_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.sequence_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, for_identity_), reinterpret_cast(&from._impl_) + offsetof(Impl_, for_identity_), offsetof(Impl_, missing_ok_) - offsetof(Impl_, for_identity_) + sizeof(Impl_::missing_ok_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterSeqStmt) } inline PROTOBUF_NDEBUG_INLINE AlterSeqStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, options_{visibility, arena} {} inline void AlterSeqStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, sequence_), 0, offsetof(Impl_, missing_ok_) - offsetof(Impl_, sequence_) + sizeof(Impl_::missing_ok_)); } AlterSeqStmt::~AlterSeqStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterSeqStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterSeqStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.sequence_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterSeqStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterSeqStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.sequence_ != nullptr); _impl_.sequence_->Clear(); } ::memset(&_impl_.for_identity_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.missing_ok_) - reinterpret_cast(&_impl_.for_identity_)) + sizeof(_impl_.missing_ok_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterSeqStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 0, 2> AlterSeqStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterSeqStmt, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterSeqStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool missing_ok = 4 [json_name = "missing_ok"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(AlterSeqStmt, _impl_.missing_ok_)}}, // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(AlterSeqStmt, _impl_.sequence_)}}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(AlterSeqStmt, _impl_.options_)}}, // bool for_identity = 3 [json_name = "for_identity"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(AlterSeqStmt, _impl_.for_identity_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; {PROTOBUF_FIELD_OFFSET(AlterSeqStmt, _impl_.sequence_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(AlterSeqStmt, _impl_.options_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool for_identity = 3 [json_name = "for_identity"]; {PROTOBUF_FIELD_OFFSET(AlterSeqStmt, _impl_.for_identity_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool missing_ok = 4 [json_name = "missing_ok"]; {PROTOBUF_FIELD_OFFSET(AlterSeqStmt, _impl_.missing_ok_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* AlterSeqStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterSeqStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::sequence(this), _Internal::sequence(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // bool for_identity = 3 [json_name = "for_identity"]; if (this->_internal_for_identity() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_for_identity(), target); } // bool missing_ok = 4 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.sequence_); } // bool for_identity = 3 [json_name = "for_identity"]; if (this->_internal_for_identity() != 0) { total_size += 2; } // bool missing_ok = 4 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterSeqStmt::_class_data_ = { AlterSeqStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterSeqStmt::GetClassData() const { return &_class_data_; } void AlterSeqStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterSeqStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_sequence()->::pg_query::RangeVar::MergeFrom( from._internal_sequence()); } if (from._internal_for_identity() != 0) { _this->_internal_set_for_identity(from._internal_for_identity()); } if (from._internal_missing_ok() != 0) { _this->_internal_set_missing_ok(from._internal_missing_ok()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterSeqStmt::CopyFrom(const AlterSeqStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterSeqStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterSeqStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterSeqStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterSeqStmt::InternalSwap(AlterSeqStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.options_.InternalSwap(&other->_impl_.options_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterSeqStmt, _impl_.missing_ok_) + sizeof(AlterSeqStmt::_impl_.missing_ok_) - PROTOBUF_FIELD_OFFSET(AlterSeqStmt, _impl_.sequence_)>( reinterpret_cast(&_impl_.sequence_), reinterpret_cast(&other->_impl_.sequence_)); } ::google::protobuf::Metadata AlterSeqStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[195]); } // =================================================================== class DefineStmt::_Internal { public: }; DefineStmt::DefineStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DefineStmt) } inline PROTOBUF_NDEBUG_INLINE DefineStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : defnames_{visibility, arena, from.defnames_}, args_{visibility, arena, from.args_}, definition_{visibility, arena, from.definition_}, _cached_size_{0} {} DefineStmt::DefineStmt( ::google::protobuf::Arena* arena, const DefineStmt& from) : ::google::protobuf::Message(arena) { DefineStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, kind_), reinterpret_cast(&from._impl_) + offsetof(Impl_, kind_), offsetof(Impl_, replace_) - offsetof(Impl_, kind_) + sizeof(Impl_::replace_)); // @@protoc_insertion_point(copy_constructor:pg_query.DefineStmt) } inline PROTOBUF_NDEBUG_INLINE DefineStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : defnames_{visibility, arena}, args_{visibility, arena}, definition_{visibility, arena}, _cached_size_{0} {} inline void DefineStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, kind_), 0, offsetof(Impl_, replace_) - offsetof(Impl_, kind_) + sizeof(Impl_::replace_)); } DefineStmt::~DefineStmt() { // @@protoc_insertion_point(destructor:pg_query.DefineStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DefineStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void DefineStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DefineStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.defnames_.Clear(); _impl_.args_.Clear(); _impl_.definition_.Clear(); ::memset(&_impl_.kind_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.replace_) - reinterpret_cast(&_impl_.kind_)) + sizeof(_impl_.replace_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DefineStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 3, 0, 2> DefineStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_DefineStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.ObjectType kind = 1 [json_name = "kind"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DefineStmt, _impl_.kind_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.kind_)}}, // bool oldstyle = 2 [json_name = "oldstyle"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.oldstyle_)}}, // repeated .pg_query.Node defnames = 3 [json_name = "defnames"]; {::_pbi::TcParser::FastMtR1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.defnames_)}}, // repeated .pg_query.Node args = 4 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.args_)}}, // repeated .pg_query.Node definition = 5 [json_name = "definition"]; {::_pbi::TcParser::FastMtR1, {42, 63, 2, PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.definition_)}}, // bool if_not_exists = 6 [json_name = "if_not_exists"]; {::_pbi::TcParser::SingularVarintNoZag1(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.if_not_exists_)}}, // bool replace = 7 [json_name = "replace"]; {::_pbi::TcParser::SingularVarintNoZag1(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.replace_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.ObjectType kind = 1 [json_name = "kind"]; {PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.kind_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool oldstyle = 2 [json_name = "oldstyle"]; {PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.oldstyle_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node defnames = 3 [json_name = "defnames"]; {PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.defnames_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node args = 4 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.args_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node definition = 5 [json_name = "definition"]; {PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.definition_), 0, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool if_not_exists = 6 [json_name = "if_not_exists"]; {PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.if_not_exists_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool replace = 7 [json_name = "replace"]; {PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.replace_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* DefineStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DefineStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.ObjectType kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // bool oldstyle = 2 [json_name = "oldstyle"]; if (this->_internal_oldstyle() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_oldstyle(), target); } // repeated .pg_query.Node defnames = 3 [json_name = "defnames"]; for (unsigned i = 0, n = static_cast(this->_internal_defnames_size()); i < n; i++) { const auto& repfield = this->_internal_defnames().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node args = 4 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node definition = 5 [json_name = "definition"]; for (unsigned i = 0, n = static_cast(this->_internal_definition_size()); i < n; i++) { const auto& repfield = this->_internal_definition().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // bool if_not_exists = 6 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 6, this->_internal_if_not_exists(), target); } // bool replace = 7 [json_name = "replace"]; if (this->_internal_replace() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 7, this->_internal_replace(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_defnames()) { total_size += ::google::protobuf::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->_internal_args()) { total_size += ::google::protobuf::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->_internal_definition()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.ObjectType kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_kind()); } // bool oldstyle = 2 [json_name = "oldstyle"]; if (this->_internal_oldstyle() != 0) { total_size += 2; } // bool if_not_exists = 6 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { total_size += 2; } // bool replace = 7 [json_name = "replace"]; if (this->_internal_replace() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DefineStmt::_class_data_ = { DefineStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DefineStmt::GetClassData() const { return &_class_data_; } void DefineStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DefineStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_defnames()->MergeFrom( from._internal_defnames()); _this->_internal_mutable_args()->MergeFrom( from._internal_args()); _this->_internal_mutable_definition()->MergeFrom( from._internal_definition()); if (from._internal_kind() != 0) { _this->_internal_set_kind(from._internal_kind()); } if (from._internal_oldstyle() != 0) { _this->_internal_set_oldstyle(from._internal_oldstyle()); } if (from._internal_if_not_exists() != 0) { _this->_internal_set_if_not_exists(from._internal_if_not_exists()); } if (from._internal_replace() != 0) { _this->_internal_set_replace(from._internal_replace()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DefineStmt::CopyFrom(const DefineStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DefineStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DefineStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* DefineStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void DefineStmt::InternalSwap(DefineStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.defnames_.InternalSwap(&other->_impl_.defnames_); _impl_.args_.InternalSwap(&other->_impl_.args_); _impl_.definition_.InternalSwap(&other->_impl_.definition_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.replace_) + sizeof(DefineStmt::_impl_.replace_) - PROTOBUF_FIELD_OFFSET(DefineStmt, _impl_.kind_)>( reinterpret_cast(&_impl_.kind_), reinterpret_cast(&other->_impl_.kind_)); } ::google::protobuf::Metadata DefineStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[196]); } // =================================================================== class CreateDomainStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreateDomainStmt, _impl_._has_bits_); static const ::pg_query::TypeName& type_name(const CreateDomainStmt* msg); static void set_has_type_name(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::CollateClause& coll_clause(const CreateDomainStmt* msg); static void set_has_coll_clause(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::TypeName& CreateDomainStmt::_Internal::type_name(const CreateDomainStmt* msg) { return *msg->_impl_.type_name_; } const ::pg_query::CollateClause& CreateDomainStmt::_Internal::coll_clause(const CreateDomainStmt* msg) { return *msg->_impl_.coll_clause_; } CreateDomainStmt::CreateDomainStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateDomainStmt) } inline PROTOBUF_NDEBUG_INLINE CreateDomainStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, domainname_{visibility, arena, from.domainname_}, constraints_{visibility, arena, from.constraints_} {} CreateDomainStmt::CreateDomainStmt( ::google::protobuf::Arena* arena, const CreateDomainStmt& from) : ::google::protobuf::Message(arena) { CreateDomainStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.type_name_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.type_name_) : nullptr; _impl_.coll_clause_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::CollateClause>(arena, *from._impl_.coll_clause_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.CreateDomainStmt) } inline PROTOBUF_NDEBUG_INLINE CreateDomainStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, domainname_{visibility, arena}, constraints_{visibility, arena} {} inline void CreateDomainStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, type_name_), 0, offsetof(Impl_, coll_clause_) - offsetof(Impl_, type_name_) + sizeof(Impl_::coll_clause_)); } CreateDomainStmt::~CreateDomainStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateDomainStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateDomainStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.type_name_; delete _impl_.coll_clause_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateDomainStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateDomainStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.domainname_.Clear(); _impl_.constraints_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.type_name_ != nullptr); _impl_.type_name_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.coll_clause_ != nullptr); _impl_.coll_clause_->Clear(); } } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateDomainStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 4, 0, 2> CreateDomainStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CreateDomainStmt, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateDomainStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node constraints = 4 [json_name = "constraints"]; {::_pbi::TcParser::FastMtR1, {34, 63, 3, PROTOBUF_FIELD_OFFSET(CreateDomainStmt, _impl_.constraints_)}}, // repeated .pg_query.Node domainname = 1 [json_name = "domainname"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateDomainStmt, _impl_.domainname_)}}, // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; {::_pbi::TcParser::FastMtS1, {18, 0, 1, PROTOBUF_FIELD_OFFSET(CreateDomainStmt, _impl_.type_name_)}}, // .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; {::_pbi::TcParser::FastMtS1, {26, 1, 2, PROTOBUF_FIELD_OFFSET(CreateDomainStmt, _impl_.coll_clause_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node domainname = 1 [json_name = "domainname"]; {PROTOBUF_FIELD_OFFSET(CreateDomainStmt, _impl_.domainname_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; {PROTOBUF_FIELD_OFFSET(CreateDomainStmt, _impl_.type_name_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; {PROTOBUF_FIELD_OFFSET(CreateDomainStmt, _impl_.coll_clause_), _Internal::kHasBitsOffset + 1, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node constraints = 4 [json_name = "constraints"]; {PROTOBUF_FIELD_OFFSET(CreateDomainStmt, _impl_.constraints_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, {::_pbi::TcParser::GetTable<::pg_query::CollateClause>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CreateDomainStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateDomainStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node domainname = 1 [json_name = "domainname"]; for (unsigned i = 0, n = static_cast(this->_internal_domainname_size()); i < n; i++) { const auto& repfield = this->_internal_domainname().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::type_name(this), _Internal::type_name(this).GetCachedSize(), target, stream); } // .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::coll_clause(this), _Internal::coll_clause(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node constraints = 4 [json_name = "constraints"]; for (unsigned i = 0, n = static_cast(this->_internal_constraints_size()); i < n; i++) { const auto& repfield = this->_internal_constraints().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_domainname()) { total_size += ::google::protobuf::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->_internal_constraints()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.type_name_); } // .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.coll_clause_); } } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateDomainStmt::_class_data_ = { CreateDomainStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateDomainStmt::GetClassData() const { return &_class_data_; } void CreateDomainStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateDomainStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_domainname()->MergeFrom( from._internal_domainname()); _this->_internal_mutable_constraints()->MergeFrom( from._internal_constraints()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_type_name()->::pg_query::TypeName::MergeFrom( from._internal_type_name()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_coll_clause()->::pg_query::CollateClause::MergeFrom( from._internal_coll_clause()); } } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateDomainStmt::CopyFrom(const CreateDomainStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateDomainStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateDomainStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateDomainStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateDomainStmt::InternalSwap(CreateDomainStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.domainname_.InternalSwap(&other->_impl_.domainname_); _impl_.constraints_.InternalSwap(&other->_impl_.constraints_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateDomainStmt, _impl_.coll_clause_) + sizeof(CreateDomainStmt::_impl_.coll_clause_) - PROTOBUF_FIELD_OFFSET(CreateDomainStmt, _impl_.type_name_)>( reinterpret_cast(&_impl_.type_name_), reinterpret_cast(&other->_impl_.type_name_)); } ::google::protobuf::Metadata CreateDomainStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[197]); } // =================================================================== class CreateOpClassStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_._has_bits_); static const ::pg_query::TypeName& datatype(const CreateOpClassStmt* msg); static void set_has_datatype(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::TypeName& CreateOpClassStmt::_Internal::datatype(const CreateOpClassStmt* msg) { return *msg->_impl_.datatype_; } CreateOpClassStmt::CreateOpClassStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateOpClassStmt) } inline PROTOBUF_NDEBUG_INLINE CreateOpClassStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, opclassname_{visibility, arena, from.opclassname_}, opfamilyname_{visibility, arena, from.opfamilyname_}, items_{visibility, arena, from.items_}, amname_(arena, from.amname_) {} CreateOpClassStmt::CreateOpClassStmt( ::google::protobuf::Arena* arena, const CreateOpClassStmt& from) : ::google::protobuf::Message(arena) { CreateOpClassStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.datatype_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.datatype_) : nullptr; _impl_.is_default_ = from._impl_.is_default_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateOpClassStmt) } inline PROTOBUF_NDEBUG_INLINE CreateOpClassStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, opclassname_{visibility, arena}, opfamilyname_{visibility, arena}, items_{visibility, arena}, amname_(arena) {} inline void CreateOpClassStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, datatype_), 0, offsetof(Impl_, is_default_) - offsetof(Impl_, datatype_) + sizeof(Impl_::is_default_)); } CreateOpClassStmt::~CreateOpClassStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateOpClassStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateOpClassStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.amname_.Destroy(); delete _impl_.datatype_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateOpClassStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateOpClassStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.opclassname_.Clear(); _impl_.opfamilyname_.Clear(); _impl_.items_.Clear(); _impl_.amname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.datatype_ != nullptr); _impl_.datatype_->Clear(); } _impl_.is_default_ = false; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateOpClassStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 4, 41, 2> CreateOpClassStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateOpClassStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node opclassname = 1 [json_name = "opclassname"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_.opclassname_)}}, // repeated .pg_query.Node opfamilyname = 2 [json_name = "opfamilyname"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_.opfamilyname_)}}, // string amname = 3 [json_name = "amname"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_.amname_)}}, // .pg_query.TypeName datatype = 4 [json_name = "datatype"]; {::_pbi::TcParser::FastMtS1, {34, 0, 2, PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_.datatype_)}}, // repeated .pg_query.Node items = 5 [json_name = "items"]; {::_pbi::TcParser::FastMtR1, {42, 63, 3, PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_.items_)}}, // bool is_default = 6 [json_name = "isDefault"]; {::_pbi::TcParser::SingularVarintNoZag1(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_.is_default_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node opclassname = 1 [json_name = "opclassname"]; {PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_.opclassname_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node opfamilyname = 2 [json_name = "opfamilyname"]; {PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_.opfamilyname_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string amname = 3 [json_name = "amname"]; {PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_.amname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.TypeName datatype = 4 [json_name = "datatype"]; {PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_.datatype_), _Internal::kHasBitsOffset + 0, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node items = 5 [json_name = "items"]; {PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_.items_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool is_default = 6 [json_name = "isDefault"]; {PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_.is_default_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\32\0\0\6\0\0\0\0" "pg_query.CreateOpClassStmt" "amname" }}, }; ::uint8_t* CreateOpClassStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateOpClassStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node opclassname = 1 [json_name = "opclassname"]; for (unsigned i = 0, n = static_cast(this->_internal_opclassname_size()); i < n; i++) { const auto& repfield = this->_internal_opclassname().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node opfamilyname = 2 [json_name = "opfamilyname"]; for (unsigned i = 0, n = static_cast(this->_internal_opfamilyname_size()); i < n; i++) { const auto& repfield = this->_internal_opfamilyname().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // string amname = 3 [json_name = "amname"]; if (!this->_internal_amname().empty()) { const std::string& _s = this->_internal_amname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateOpClassStmt.amname"); target = stream->WriteStringMaybeAliased(3, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.TypeName datatype = 4 [json_name = "datatype"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::datatype(this), _Internal::datatype(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node items = 5 [json_name = "items"]; for (unsigned i = 0, n = static_cast(this->_internal_items_size()); i < n; i++) { const auto& repfield = this->_internal_items().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // bool is_default = 6 [json_name = "isDefault"]; if (this->_internal_is_default() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 6, this->_internal_is_default(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_opclassname()) { total_size += ::google::protobuf::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->_internal_opfamilyname()) { total_size += ::google::protobuf::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->_internal_items()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string amname = 3 [json_name = "amname"]; if (!this->_internal_amname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_amname()); } // .pg_query.TypeName datatype = 4 [json_name = "datatype"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.datatype_); } // bool is_default = 6 [json_name = "isDefault"]; if (this->_internal_is_default() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateOpClassStmt::_class_data_ = { CreateOpClassStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateOpClassStmt::GetClassData() const { return &_class_data_; } void CreateOpClassStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateOpClassStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_opclassname()->MergeFrom( from._internal_opclassname()); _this->_internal_mutable_opfamilyname()->MergeFrom( from._internal_opfamilyname()); _this->_internal_mutable_items()->MergeFrom( from._internal_items()); if (!from._internal_amname().empty()) { _this->_internal_set_amname(from._internal_amname()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_datatype()->::pg_query::TypeName::MergeFrom( from._internal_datatype()); } if (from._internal_is_default() != 0) { _this->_internal_set_is_default(from._internal_is_default()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateOpClassStmt::CopyFrom(const CreateOpClassStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateOpClassStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateOpClassStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateOpClassStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateOpClassStmt::InternalSwap(CreateOpClassStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.opclassname_.InternalSwap(&other->_impl_.opclassname_); _impl_.opfamilyname_.InternalSwap(&other->_impl_.opfamilyname_); _impl_.items_.InternalSwap(&other->_impl_.items_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.amname_, &other->_impl_.amname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_.is_default_) + sizeof(CreateOpClassStmt::_impl_.is_default_) - PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, _impl_.datatype_)>( reinterpret_cast(&_impl_.datatype_), reinterpret_cast(&other->_impl_.datatype_)); } ::google::protobuf::Metadata CreateOpClassStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[198]); } // =================================================================== class CreateOpClassItem::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_._has_bits_); static const ::pg_query::ObjectWithArgs& name(const CreateOpClassItem* msg); static void set_has_name(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::TypeName& storedtype(const CreateOpClassItem* msg); static void set_has_storedtype(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::ObjectWithArgs& CreateOpClassItem::_Internal::name(const CreateOpClassItem* msg) { return *msg->_impl_.name_; } const ::pg_query::TypeName& CreateOpClassItem::_Internal::storedtype(const CreateOpClassItem* msg) { return *msg->_impl_.storedtype_; } CreateOpClassItem::CreateOpClassItem(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateOpClassItem) } inline PROTOBUF_NDEBUG_INLINE CreateOpClassItem::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, order_family_{visibility, arena, from.order_family_}, class_args_{visibility, arena, from.class_args_} {} CreateOpClassItem::CreateOpClassItem( ::google::protobuf::Arena* arena, const CreateOpClassItem& from) : ::google::protobuf::Message(arena) { CreateOpClassItem* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.name_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::ObjectWithArgs>(arena, *from._impl_.name_) : nullptr; _impl_.storedtype_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.storedtype_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, itemtype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, itemtype_), offsetof(Impl_, number_) - offsetof(Impl_, itemtype_) + sizeof(Impl_::number_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateOpClassItem) } inline PROTOBUF_NDEBUG_INLINE CreateOpClassItem::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, order_family_{visibility, arena}, class_args_{visibility, arena} {} inline void CreateOpClassItem::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, name_), 0, offsetof(Impl_, number_) - offsetof(Impl_, name_) + sizeof(Impl_::number_)); } CreateOpClassItem::~CreateOpClassItem() { // @@protoc_insertion_point(destructor:pg_query.CreateOpClassItem) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateOpClassItem::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.name_; delete _impl_.storedtype_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateOpClassItem::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateOpClassItem) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.order_family_.Clear(); _impl_.class_args_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.name_ != nullptr); _impl_.name_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.storedtype_ != nullptr); _impl_.storedtype_->Clear(); } } ::memset(&_impl_.itemtype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.number_) - reinterpret_cast(&_impl_.itemtype_)) + sizeof(_impl_.number_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateOpClassItem::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 4, 0, 2> CreateOpClassItem::_table_ = { { PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateOpClassItem_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // int32 itemtype = 1 [json_name = "itemtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateOpClassItem, _impl_.itemtype_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_.itemtype_)}}, // .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_.name_)}}, // int32 number = 3 [json_name = "number"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateOpClassItem, _impl_.number_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_.number_)}}, // repeated .pg_query.Node order_family = 4 [json_name = "order_family"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_.order_family_)}}, // repeated .pg_query.Node class_args = 5 [json_name = "class_args"]; {::_pbi::TcParser::FastMtR1, {42, 63, 2, PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_.class_args_)}}, // .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; {::_pbi::TcParser::FastMtS1, {50, 1, 3, PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_.storedtype_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // int32 itemtype = 1 [json_name = "itemtype"]; {PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_.itemtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_.name_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 number = 3 [json_name = "number"]; {PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_.number_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // repeated .pg_query.Node order_family = 4 [json_name = "order_family"]; {PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_.order_family_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node class_args = 5 [json_name = "class_args"]; {PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_.class_args_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; {PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_.storedtype_), _Internal::kHasBitsOffset + 1, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::ObjectWithArgs>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, }}, {{ }}, }; ::uint8_t* CreateOpClassItem::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateOpClassItem) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // int32 itemtype = 1 [json_name = "itemtype"]; if (this->_internal_itemtype() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<1>( stream, this->_internal_itemtype(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::name(this), _Internal::name(this).GetCachedSize(), target, stream); } // int32 number = 3 [json_name = "number"]; if (this->_internal_number() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_number(), target); } // repeated .pg_query.Node order_family = 4 [json_name = "order_family"]; for (unsigned i = 0, n = static_cast(this->_internal_order_family_size()); i < n; i++) { const auto& repfield = this->_internal_order_family().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node class_args = 5 [json_name = "class_args"]; for (unsigned i = 0, n = static_cast(this->_internal_class_args_size()); i < n; i++) { const auto& repfield = this->_internal_class_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 6, _Internal::storedtype(this), _Internal::storedtype(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_order_family()) { total_size += ::google::protobuf::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->_internal_class_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.name_); } // .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.storedtype_); } } // int32 itemtype = 1 [json_name = "itemtype"]; if (this->_internal_itemtype() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_itemtype()); } // int32 number = 3 [json_name = "number"]; if (this->_internal_number() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_number()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateOpClassItem::_class_data_ = { CreateOpClassItem::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateOpClassItem::GetClassData() const { return &_class_data_; } void CreateOpClassItem::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateOpClassItem) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_order_family()->MergeFrom( from._internal_order_family()); _this->_internal_mutable_class_args()->MergeFrom( from._internal_class_args()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_name()->::pg_query::ObjectWithArgs::MergeFrom( from._internal_name()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_storedtype()->::pg_query::TypeName::MergeFrom( from._internal_storedtype()); } } if (from._internal_itemtype() != 0) { _this->_internal_set_itemtype(from._internal_itemtype()); } if (from._internal_number() != 0) { _this->_internal_set_number(from._internal_number()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateOpClassItem::CopyFrom(const CreateOpClassItem& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateOpClassItem) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateOpClassItem::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateOpClassItem::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateOpClassItem::InternalSwap(CreateOpClassItem* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.order_family_.InternalSwap(&other->_impl_.order_family_); _impl_.class_args_.InternalSwap(&other->_impl_.class_args_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_.number_) + sizeof(CreateOpClassItem::_impl_.number_) - PROTOBUF_FIELD_OFFSET(CreateOpClassItem, _impl_.name_)>( reinterpret_cast(&_impl_.name_), reinterpret_cast(&other->_impl_.name_)); } ::google::protobuf::Metadata CreateOpClassItem::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[199]); } // =================================================================== class CreateOpFamilyStmt::_Internal { public: }; CreateOpFamilyStmt::CreateOpFamilyStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateOpFamilyStmt) } inline PROTOBUF_NDEBUG_INLINE CreateOpFamilyStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : opfamilyname_{visibility, arena, from.opfamilyname_}, amname_(arena, from.amname_), _cached_size_{0} {} CreateOpFamilyStmt::CreateOpFamilyStmt( ::google::protobuf::Arena* arena, const CreateOpFamilyStmt& from) : ::google::protobuf::Message(arena) { CreateOpFamilyStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.CreateOpFamilyStmt) } inline PROTOBUF_NDEBUG_INLINE CreateOpFamilyStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : opfamilyname_{visibility, arena}, amname_(arena), _cached_size_{0} {} inline void CreateOpFamilyStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } CreateOpFamilyStmt::~CreateOpFamilyStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateOpFamilyStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateOpFamilyStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.amname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateOpFamilyStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateOpFamilyStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.opfamilyname_.Clear(); _impl_.amname_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateOpFamilyStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 42, 2> CreateOpFamilyStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateOpFamilyStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string amname = 2 [json_name = "amname"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CreateOpFamilyStmt, _impl_.amname_)}}, // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateOpFamilyStmt, _impl_.opfamilyname_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; {PROTOBUF_FIELD_OFFSET(CreateOpFamilyStmt, _impl_.opfamilyname_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string amname = 2 [json_name = "amname"]; {PROTOBUF_FIELD_OFFSET(CreateOpFamilyStmt, _impl_.amname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\33\0\6\0\0\0\0\0" "pg_query.CreateOpFamilyStmt" "amname" }}, }; ::uint8_t* CreateOpFamilyStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateOpFamilyStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; for (unsigned i = 0, n = static_cast(this->_internal_opfamilyname_size()); i < n; i++) { const auto& repfield = this->_internal_opfamilyname().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // string amname = 2 [json_name = "amname"]; if (!this->_internal_amname().empty()) { const std::string& _s = this->_internal_amname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateOpFamilyStmt.amname"); target = stream->WriteStringMaybeAliased(2, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_opfamilyname()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string amname = 2 [json_name = "amname"]; if (!this->_internal_amname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_amname()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateOpFamilyStmt::_class_data_ = { CreateOpFamilyStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateOpFamilyStmt::GetClassData() const { return &_class_data_; } void CreateOpFamilyStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateOpFamilyStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_opfamilyname()->MergeFrom( from._internal_opfamilyname()); if (!from._internal_amname().empty()) { _this->_internal_set_amname(from._internal_amname()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateOpFamilyStmt::CopyFrom(const CreateOpFamilyStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateOpFamilyStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateOpFamilyStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateOpFamilyStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateOpFamilyStmt::InternalSwap(CreateOpFamilyStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.opfamilyname_.InternalSwap(&other->_impl_.opfamilyname_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.amname_, &other->_impl_.amname_, arena); } ::google::protobuf::Metadata CreateOpFamilyStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[200]); } // =================================================================== class AlterOpFamilyStmt::_Internal { public: }; AlterOpFamilyStmt::AlterOpFamilyStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterOpFamilyStmt) } inline PROTOBUF_NDEBUG_INLINE AlterOpFamilyStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : opfamilyname_{visibility, arena, from.opfamilyname_}, items_{visibility, arena, from.items_}, amname_(arena, from.amname_), _cached_size_{0} {} AlterOpFamilyStmt::AlterOpFamilyStmt( ::google::protobuf::Arena* arena, const AlterOpFamilyStmt& from) : ::google::protobuf::Message(arena) { AlterOpFamilyStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.is_drop_ = from._impl_.is_drop_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterOpFamilyStmt) } inline PROTOBUF_NDEBUG_INLINE AlterOpFamilyStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : opfamilyname_{visibility, arena}, items_{visibility, arena}, amname_(arena), _cached_size_{0} {} inline void AlterOpFamilyStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.is_drop_ = {}; } AlterOpFamilyStmt::~AlterOpFamilyStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterOpFamilyStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterOpFamilyStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.amname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterOpFamilyStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterOpFamilyStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.opfamilyname_.Clear(); _impl_.items_.Clear(); _impl_.amname_.ClearToEmpty(); _impl_.is_drop_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterOpFamilyStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 41, 2> AlterOpFamilyStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterOpFamilyStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node items = 4 [json_name = "items"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(AlterOpFamilyStmt, _impl_.items_)}}, // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterOpFamilyStmt, _impl_.opfamilyname_)}}, // string amname = 2 [json_name = "amname"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterOpFamilyStmt, _impl_.amname_)}}, // bool is_drop = 3 [json_name = "isDrop"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(AlterOpFamilyStmt, _impl_.is_drop_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; {PROTOBUF_FIELD_OFFSET(AlterOpFamilyStmt, _impl_.opfamilyname_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string amname = 2 [json_name = "amname"]; {PROTOBUF_FIELD_OFFSET(AlterOpFamilyStmt, _impl_.amname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool is_drop = 3 [json_name = "isDrop"]; {PROTOBUF_FIELD_OFFSET(AlterOpFamilyStmt, _impl_.is_drop_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node items = 4 [json_name = "items"]; {PROTOBUF_FIELD_OFFSET(AlterOpFamilyStmt, _impl_.items_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\32\0\6\0\0\0\0\0" "pg_query.AlterOpFamilyStmt" "amname" }}, }; ::uint8_t* AlterOpFamilyStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterOpFamilyStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; for (unsigned i = 0, n = static_cast(this->_internal_opfamilyname_size()); i < n; i++) { const auto& repfield = this->_internal_opfamilyname().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // string amname = 2 [json_name = "amname"]; if (!this->_internal_amname().empty()) { const std::string& _s = this->_internal_amname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterOpFamilyStmt.amname"); target = stream->WriteStringMaybeAliased(2, _s, target); } // bool is_drop = 3 [json_name = "isDrop"]; if (this->_internal_is_drop() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_is_drop(), target); } // repeated .pg_query.Node items = 4 [json_name = "items"]; for (unsigned i = 0, n = static_cast(this->_internal_items_size()); i < n; i++) { const auto& repfield = this->_internal_items().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_opfamilyname()) { total_size += ::google::protobuf::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->_internal_items()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string amname = 2 [json_name = "amname"]; if (!this->_internal_amname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_amname()); } // bool is_drop = 3 [json_name = "isDrop"]; if (this->_internal_is_drop() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterOpFamilyStmt::_class_data_ = { AlterOpFamilyStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterOpFamilyStmt::GetClassData() const { return &_class_data_; } void AlterOpFamilyStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterOpFamilyStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_opfamilyname()->MergeFrom( from._internal_opfamilyname()); _this->_internal_mutable_items()->MergeFrom( from._internal_items()); if (!from._internal_amname().empty()) { _this->_internal_set_amname(from._internal_amname()); } if (from._internal_is_drop() != 0) { _this->_internal_set_is_drop(from._internal_is_drop()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterOpFamilyStmt::CopyFrom(const AlterOpFamilyStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterOpFamilyStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterOpFamilyStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterOpFamilyStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterOpFamilyStmt::InternalSwap(AlterOpFamilyStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.opfamilyname_.InternalSwap(&other->_impl_.opfamilyname_); _impl_.items_.InternalSwap(&other->_impl_.items_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.amname_, &other->_impl_.amname_, arena); swap(_impl_.is_drop_, other->_impl_.is_drop_); } ::google::protobuf::Metadata AlterOpFamilyStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[201]); } // =================================================================== class DropStmt::_Internal { public: }; DropStmt::DropStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DropStmt) } inline PROTOBUF_NDEBUG_INLINE DropStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : objects_{visibility, arena, from.objects_}, _cached_size_{0} {} DropStmt::DropStmt( ::google::protobuf::Arena* arena, const DropStmt& from) : ::google::protobuf::Message(arena) { DropStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, remove_type_), reinterpret_cast(&from._impl_) + offsetof(Impl_, remove_type_), offsetof(Impl_, concurrent_) - offsetof(Impl_, remove_type_) + sizeof(Impl_::concurrent_)); // @@protoc_insertion_point(copy_constructor:pg_query.DropStmt) } inline PROTOBUF_NDEBUG_INLINE DropStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : objects_{visibility, arena}, _cached_size_{0} {} inline void DropStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, remove_type_), 0, offsetof(Impl_, concurrent_) - offsetof(Impl_, remove_type_) + sizeof(Impl_::concurrent_)); } DropStmt::~DropStmt() { // @@protoc_insertion_point(destructor:pg_query.DropStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DropStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void DropStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DropStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.objects_.Clear(); ::memset(&_impl_.remove_type_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.concurrent_) - reinterpret_cast(&_impl_.remove_type_)) + sizeof(_impl_.concurrent_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DropStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 1, 0, 2> DropStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_DropStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node objects = 1 [json_name = "objects"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(DropStmt, _impl_.objects_)}}, // .pg_query.ObjectType remove_type = 2 [json_name = "removeType"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DropStmt, _impl_.remove_type_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(DropStmt, _impl_.remove_type_)}}, // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DropStmt, _impl_.behavior_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(DropStmt, _impl_.behavior_)}}, // bool missing_ok = 4 [json_name = "missing_ok"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(DropStmt, _impl_.missing_ok_)}}, // bool concurrent = 5 [json_name = "concurrent"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(DropStmt, _impl_.concurrent_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node objects = 1 [json_name = "objects"]; {PROTOBUF_FIELD_OFFSET(DropStmt, _impl_.objects_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ObjectType remove_type = 2 [json_name = "removeType"]; {PROTOBUF_FIELD_OFFSET(DropStmt, _impl_.remove_type_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; {PROTOBUF_FIELD_OFFSET(DropStmt, _impl_.behavior_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool missing_ok = 4 [json_name = "missing_ok"]; {PROTOBUF_FIELD_OFFSET(DropStmt, _impl_.missing_ok_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool concurrent = 5 [json_name = "concurrent"]; {PROTOBUF_FIELD_OFFSET(DropStmt, _impl_.concurrent_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* DropStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DropStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node objects = 1 [json_name = "objects"]; for (unsigned i = 0, n = static_cast(this->_internal_objects_size()); i < n; i++) { const auto& repfield = this->_internal_objects().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.ObjectType remove_type = 2 [json_name = "removeType"]; if (this->_internal_remove_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_remove_type(), target); } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_behavior(), target); } // bool missing_ok = 4 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_missing_ok(), target); } // bool concurrent = 5 [json_name = "concurrent"]; if (this->_internal_concurrent() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_concurrent(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_objects()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.ObjectType remove_type = 2 [json_name = "removeType"]; if (this->_internal_remove_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_remove_type()); } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_behavior()); } // bool missing_ok = 4 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { total_size += 2; } // bool concurrent = 5 [json_name = "concurrent"]; if (this->_internal_concurrent() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DropStmt::_class_data_ = { DropStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DropStmt::GetClassData() const { return &_class_data_; } void DropStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DropStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_objects()->MergeFrom( from._internal_objects()); if (from._internal_remove_type() != 0) { _this->_internal_set_remove_type(from._internal_remove_type()); } if (from._internal_behavior() != 0) { _this->_internal_set_behavior(from._internal_behavior()); } if (from._internal_missing_ok() != 0) { _this->_internal_set_missing_ok(from._internal_missing_ok()); } if (from._internal_concurrent() != 0) { _this->_internal_set_concurrent(from._internal_concurrent()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DropStmt::CopyFrom(const DropStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DropStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DropStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* DropStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void DropStmt::InternalSwap(DropStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.objects_.InternalSwap(&other->_impl_.objects_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(DropStmt, _impl_.concurrent_) + sizeof(DropStmt::_impl_.concurrent_) - PROTOBUF_FIELD_OFFSET(DropStmt, _impl_.remove_type_)>( reinterpret_cast(&_impl_.remove_type_), reinterpret_cast(&other->_impl_.remove_type_)); } ::google::protobuf::Metadata DropStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[202]); } // =================================================================== class TruncateStmt::_Internal { public: }; TruncateStmt::TruncateStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TruncateStmt) } inline PROTOBUF_NDEBUG_INLINE TruncateStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : relations_{visibility, arena, from.relations_}, _cached_size_{0} {} TruncateStmt::TruncateStmt( ::google::protobuf::Arena* arena, const TruncateStmt& from) : ::google::protobuf::Message(arena) { TruncateStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, restart_seqs_), reinterpret_cast(&from._impl_) + offsetof(Impl_, restart_seqs_), offsetof(Impl_, behavior_) - offsetof(Impl_, restart_seqs_) + sizeof(Impl_::behavior_)); // @@protoc_insertion_point(copy_constructor:pg_query.TruncateStmt) } inline PROTOBUF_NDEBUG_INLINE TruncateStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : relations_{visibility, arena}, _cached_size_{0} {} inline void TruncateStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, restart_seqs_), 0, offsetof(Impl_, behavior_) - offsetof(Impl_, restart_seqs_) + sizeof(Impl_::behavior_)); } TruncateStmt::~TruncateStmt() { // @@protoc_insertion_point(destructor:pg_query.TruncateStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void TruncateStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void TruncateStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TruncateStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.relations_.Clear(); ::memset(&_impl_.restart_seqs_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.behavior_) - reinterpret_cast(&_impl_.restart_seqs_)) + sizeof(_impl_.behavior_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* TruncateStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> TruncateStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_TruncateStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node relations = 1 [json_name = "relations"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(TruncateStmt, _impl_.relations_)}}, // bool restart_seqs = 2 [json_name = "restart_seqs"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(TruncateStmt, _impl_.restart_seqs_)}}, // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TruncateStmt, _impl_.behavior_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(TruncateStmt, _impl_.behavior_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node relations = 1 [json_name = "relations"]; {PROTOBUF_FIELD_OFFSET(TruncateStmt, _impl_.relations_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool restart_seqs = 2 [json_name = "restart_seqs"]; {PROTOBUF_FIELD_OFFSET(TruncateStmt, _impl_.restart_seqs_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; {PROTOBUF_FIELD_OFFSET(TruncateStmt, _impl_.behavior_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* TruncateStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TruncateStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node relations = 1 [json_name = "relations"]; for (unsigned i = 0, n = static_cast(this->_internal_relations_size()); i < n; i++) { const auto& repfield = this->_internal_relations().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // bool restart_seqs = 2 [json_name = "restart_seqs"]; if (this->_internal_restart_seqs() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_restart_seqs(), target); } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_behavior(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_relations()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // bool restart_seqs = 2 [json_name = "restart_seqs"]; if (this->_internal_restart_seqs() != 0) { total_size += 2; } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_behavior()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData TruncateStmt::_class_data_ = { TruncateStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* TruncateStmt::GetClassData() const { return &_class_data_; } void TruncateStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TruncateStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_relations()->MergeFrom( from._internal_relations()); if (from._internal_restart_seqs() != 0) { _this->_internal_set_restart_seqs(from._internal_restart_seqs()); } if (from._internal_behavior() != 0) { _this->_internal_set_behavior(from._internal_behavior()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void TruncateStmt::CopyFrom(const TruncateStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TruncateStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool TruncateStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* TruncateStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void TruncateStmt::InternalSwap(TruncateStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.relations_.InternalSwap(&other->_impl_.relations_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(TruncateStmt, _impl_.behavior_) + sizeof(TruncateStmt::_impl_.behavior_) - PROTOBUF_FIELD_OFFSET(TruncateStmt, _impl_.restart_seqs_)>( reinterpret_cast(&_impl_.restart_seqs_), reinterpret_cast(&other->_impl_.restart_seqs_)); } ::google::protobuf::Metadata TruncateStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[203]); } // =================================================================== class CommentStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CommentStmt, _impl_._has_bits_); static const ::pg_query::Node& object(const CommentStmt* msg); static void set_has_object(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& CommentStmt::_Internal::object(const CommentStmt* msg) { return *msg->_impl_.object_; } CommentStmt::CommentStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CommentStmt) } inline PROTOBUF_NDEBUG_INLINE CommentStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, comment_(arena, from.comment_) {} CommentStmt::CommentStmt( ::google::protobuf::Arena* arena, const CommentStmt& from) : ::google::protobuf::Message(arena) { CommentStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.object_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.object_) : nullptr; _impl_.objtype_ = from._impl_.objtype_; // @@protoc_insertion_point(copy_constructor:pg_query.CommentStmt) } inline PROTOBUF_NDEBUG_INLINE CommentStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, comment_(arena) {} inline void CommentStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, object_), 0, offsetof(Impl_, objtype_) - offsetof(Impl_, object_) + sizeof(Impl_::objtype_)); } CommentStmt::~CommentStmt() { // @@protoc_insertion_point(destructor:pg_query.CommentStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CommentStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.comment_.Destroy(); delete _impl_.object_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CommentStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CommentStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.comment_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.object_ != nullptr); _impl_.object_->Clear(); } _impl_.objtype_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CommentStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 36, 2> CommentStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CommentStmt, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CommentStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CommentStmt, _impl_.objtype_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(CommentStmt, _impl_.objtype_)}}, // .pg_query.Node object = 2 [json_name = "object"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(CommentStmt, _impl_.object_)}}, // string comment = 3 [json_name = "comment"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CommentStmt, _impl_.comment_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; {PROTOBUF_FIELD_OFFSET(CommentStmt, _impl_.objtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.Node object = 2 [json_name = "object"]; {PROTOBUF_FIELD_OFFSET(CommentStmt, _impl_.object_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string comment = 3 [json_name = "comment"]; {PROTOBUF_FIELD_OFFSET(CommentStmt, _impl_.comment_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\24\0\0\7\0\0\0\0" "pg_query.CommentStmt" "comment" }}, }; ::uint8_t* CommentStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CommentStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_objtype(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node object = 2 [json_name = "object"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::object(this), _Internal::object(this).GetCachedSize(), target, stream); } // string comment = 3 [json_name = "comment"]; if (!this->_internal_comment().empty()) { const std::string& _s = this->_internal_comment(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CommentStmt.comment"); target = stream->WriteStringMaybeAliased(3, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_comment().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_comment()); } // .pg_query.Node object = 2 [json_name = "object"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.object_); } // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_objtype()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CommentStmt::_class_data_ = { CommentStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CommentStmt::GetClassData() const { return &_class_data_; } void CommentStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CommentStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_comment().empty()) { _this->_internal_set_comment(from._internal_comment()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_object()->::pg_query::Node::MergeFrom( from._internal_object()); } if (from._internal_objtype() != 0) { _this->_internal_set_objtype(from._internal_objtype()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CommentStmt::CopyFrom(const CommentStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CommentStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CommentStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CommentStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CommentStmt::InternalSwap(CommentStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.comment_, &other->_impl_.comment_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CommentStmt, _impl_.objtype_) + sizeof(CommentStmt::_impl_.objtype_) - PROTOBUF_FIELD_OFFSET(CommentStmt, _impl_.object_)>( reinterpret_cast(&_impl_.object_), reinterpret_cast(&other->_impl_.object_)); } ::google::protobuf::Metadata CommentStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[204]); } // =================================================================== class SecLabelStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(SecLabelStmt, _impl_._has_bits_); static const ::pg_query::Node& object(const SecLabelStmt* msg); static void set_has_object(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& SecLabelStmt::_Internal::object(const SecLabelStmt* msg) { return *msg->_impl_.object_; } SecLabelStmt::SecLabelStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SecLabelStmt) } inline PROTOBUF_NDEBUG_INLINE SecLabelStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, provider_(arena, from.provider_), label_(arena, from.label_) {} SecLabelStmt::SecLabelStmt( ::google::protobuf::Arena* arena, const SecLabelStmt& from) : ::google::protobuf::Message(arena) { SecLabelStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.object_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.object_) : nullptr; _impl_.objtype_ = from._impl_.objtype_; // @@protoc_insertion_point(copy_constructor:pg_query.SecLabelStmt) } inline PROTOBUF_NDEBUG_INLINE SecLabelStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, provider_(arena), label_(arena) {} inline void SecLabelStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, object_), 0, offsetof(Impl_, objtype_) - offsetof(Impl_, object_) + sizeof(Impl_::objtype_)); } SecLabelStmt::~SecLabelStmt() { // @@protoc_insertion_point(destructor:pg_query.SecLabelStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void SecLabelStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.provider_.Destroy(); _impl_.label_.Destroy(); delete _impl_.object_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void SecLabelStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SecLabelStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.provider_.ClearToEmpty(); _impl_.label_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.object_ != nullptr); _impl_.object_->Clear(); } _impl_.objtype_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* SecLabelStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 1, 43, 2> SecLabelStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(SecLabelStmt, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_SecLabelStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string label = 4 [json_name = "label"]; {::_pbi::TcParser::FastUS1, {34, 63, 0, PROTOBUF_FIELD_OFFSET(SecLabelStmt, _impl_.label_)}}, // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SecLabelStmt, _impl_.objtype_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(SecLabelStmt, _impl_.objtype_)}}, // .pg_query.Node object = 2 [json_name = "object"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(SecLabelStmt, _impl_.object_)}}, // string provider = 3 [json_name = "provider"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(SecLabelStmt, _impl_.provider_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; {PROTOBUF_FIELD_OFFSET(SecLabelStmt, _impl_.objtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.Node object = 2 [json_name = "object"]; {PROTOBUF_FIELD_OFFSET(SecLabelStmt, _impl_.object_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string provider = 3 [json_name = "provider"]; {PROTOBUF_FIELD_OFFSET(SecLabelStmt, _impl_.provider_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string label = 4 [json_name = "label"]; {PROTOBUF_FIELD_OFFSET(SecLabelStmt, _impl_.label_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\25\0\0\10\5\0\0\0" "pg_query.SecLabelStmt" "provider" "label" }}, }; ::uint8_t* SecLabelStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SecLabelStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_objtype(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node object = 2 [json_name = "object"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::object(this), _Internal::object(this).GetCachedSize(), target, stream); } // string provider = 3 [json_name = "provider"]; if (!this->_internal_provider().empty()) { const std::string& _s = this->_internal_provider(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.SecLabelStmt.provider"); target = stream->WriteStringMaybeAliased(3, _s, target); } // string label = 4 [json_name = "label"]; if (!this->_internal_label().empty()) { const std::string& _s = this->_internal_label(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.SecLabelStmt.label"); target = stream->WriteStringMaybeAliased(4, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_provider().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_provider()); } // string label = 4 [json_name = "label"]; if (!this->_internal_label().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_label()); } // .pg_query.Node object = 2 [json_name = "object"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.object_); } // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_objtype()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData SecLabelStmt::_class_data_ = { SecLabelStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* SecLabelStmt::GetClassData() const { return &_class_data_; } void SecLabelStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SecLabelStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_provider().empty()) { _this->_internal_set_provider(from._internal_provider()); } if (!from._internal_label().empty()) { _this->_internal_set_label(from._internal_label()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_object()->::pg_query::Node::MergeFrom( from._internal_object()); } if (from._internal_objtype() != 0) { _this->_internal_set_objtype(from._internal_objtype()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void SecLabelStmt::CopyFrom(const SecLabelStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SecLabelStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool SecLabelStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* SecLabelStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void SecLabelStmt::InternalSwap(SecLabelStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.provider_, &other->_impl_.provider_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.label_, &other->_impl_.label_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(SecLabelStmt, _impl_.objtype_) + sizeof(SecLabelStmt::_impl_.objtype_) - PROTOBUF_FIELD_OFFSET(SecLabelStmt, _impl_.object_)>( reinterpret_cast(&_impl_.object_), reinterpret_cast(&other->_impl_.object_)); } ::google::protobuf::Metadata SecLabelStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[205]); } // =================================================================== class DeclareCursorStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(DeclareCursorStmt, _impl_._has_bits_); static const ::pg_query::Node& query(const DeclareCursorStmt* msg); static void set_has_query(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& DeclareCursorStmt::_Internal::query(const DeclareCursorStmt* msg) { return *msg->_impl_.query_; } DeclareCursorStmt::DeclareCursorStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DeclareCursorStmt) } inline PROTOBUF_NDEBUG_INLINE DeclareCursorStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, portalname_(arena, from.portalname_) {} DeclareCursorStmt::DeclareCursorStmt( ::google::protobuf::Arena* arena, const DeclareCursorStmt& from) : ::google::protobuf::Message(arena) { DeclareCursorStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.query_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.query_) : nullptr; _impl_.options_ = from._impl_.options_; // @@protoc_insertion_point(copy_constructor:pg_query.DeclareCursorStmt) } inline PROTOBUF_NDEBUG_INLINE DeclareCursorStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, portalname_(arena) {} inline void DeclareCursorStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, query_), 0, offsetof(Impl_, options_) - offsetof(Impl_, query_) + sizeof(Impl_::options_)); } DeclareCursorStmt::~DeclareCursorStmt() { // @@protoc_insertion_point(destructor:pg_query.DeclareCursorStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DeclareCursorStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.portalname_.Destroy(); delete _impl_.query_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void DeclareCursorStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DeclareCursorStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.portalname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.query_ != nullptr); _impl_.query_->Clear(); } _impl_.options_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DeclareCursorStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 45, 2> DeclareCursorStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(DeclareCursorStmt, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_DeclareCursorStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string portalname = 1 [json_name = "portalname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(DeclareCursorStmt, _impl_.portalname_)}}, // int32 options = 2 [json_name = "options"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DeclareCursorStmt, _impl_.options_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(DeclareCursorStmt, _impl_.options_)}}, // .pg_query.Node query = 3 [json_name = "query"]; {::_pbi::TcParser::FastMtS1, {26, 0, 0, PROTOBUF_FIELD_OFFSET(DeclareCursorStmt, _impl_.query_)}}, }}, {{ 65535, 65535 }}, {{ // string portalname = 1 [json_name = "portalname"]; {PROTOBUF_FIELD_OFFSET(DeclareCursorStmt, _impl_.portalname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // int32 options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(DeclareCursorStmt, _impl_.options_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // .pg_query.Node query = 3 [json_name = "query"]; {PROTOBUF_FIELD_OFFSET(DeclareCursorStmt, _impl_.query_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\32\12\0\0\0\0\0\0" "pg_query.DeclareCursorStmt" "portalname" }}, }; ::uint8_t* DeclareCursorStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DeclareCursorStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string portalname = 1 [json_name = "portalname"]; if (!this->_internal_portalname().empty()) { const std::string& _s = this->_internal_portalname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.DeclareCursorStmt.portalname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // int32 options = 2 [json_name = "options"]; if (this->_internal_options() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<2>( stream, this->_internal_options(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node query = 3 [json_name = "query"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::query(this), _Internal::query(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_portalname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_portalname()); } // .pg_query.Node query = 3 [json_name = "query"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.query_); } // int32 options = 2 [json_name = "options"]; if (this->_internal_options() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_options()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DeclareCursorStmt::_class_data_ = { DeclareCursorStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DeclareCursorStmt::GetClassData() const { return &_class_data_; } void DeclareCursorStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DeclareCursorStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_portalname().empty()) { _this->_internal_set_portalname(from._internal_portalname()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_query()->::pg_query::Node::MergeFrom( from._internal_query()); } if (from._internal_options() != 0) { _this->_internal_set_options(from._internal_options()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DeclareCursorStmt::CopyFrom(const DeclareCursorStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DeclareCursorStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DeclareCursorStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* DeclareCursorStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void DeclareCursorStmt::InternalSwap(DeclareCursorStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.portalname_, &other->_impl_.portalname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(DeclareCursorStmt, _impl_.options_) + sizeof(DeclareCursorStmt::_impl_.options_) - PROTOBUF_FIELD_OFFSET(DeclareCursorStmt, _impl_.query_)>( reinterpret_cast(&_impl_.query_), reinterpret_cast(&other->_impl_.query_)); } ::google::protobuf::Metadata DeclareCursorStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[206]); } // =================================================================== class ClosePortalStmt::_Internal { public: }; ClosePortalStmt::ClosePortalStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ClosePortalStmt) } inline PROTOBUF_NDEBUG_INLINE ClosePortalStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : portalname_(arena, from.portalname_), _cached_size_{0} {} ClosePortalStmt::ClosePortalStmt( ::google::protobuf::Arena* arena, const ClosePortalStmt& from) : ::google::protobuf::Message(arena) { ClosePortalStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.ClosePortalStmt) } inline PROTOBUF_NDEBUG_INLINE ClosePortalStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : portalname_(arena), _cached_size_{0} {} inline void ClosePortalStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } ClosePortalStmt::~ClosePortalStmt() { // @@protoc_insertion_point(destructor:pg_query.ClosePortalStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ClosePortalStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.portalname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void ClosePortalStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ClosePortalStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.portalname_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ClosePortalStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 43, 2> ClosePortalStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_ClosePortalStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string portalname = 1 [json_name = "portalname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(ClosePortalStmt, _impl_.portalname_)}}, }}, {{ 65535, 65535 }}, {{ // string portalname = 1 [json_name = "portalname"]; {PROTOBUF_FIELD_OFFSET(ClosePortalStmt, _impl_.portalname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, // no aux_entries {{ "\30\12\0\0\0\0\0\0" "pg_query.ClosePortalStmt" "portalname" }}, }; ::uint8_t* ClosePortalStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ClosePortalStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string portalname = 1 [json_name = "portalname"]; if (!this->_internal_portalname().empty()) { const std::string& _s = this->_internal_portalname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ClosePortalStmt.portalname"); target = stream->WriteStringMaybeAliased(1, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_portalname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_portalname()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ClosePortalStmt::_class_data_ = { ClosePortalStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ClosePortalStmt::GetClassData() const { return &_class_data_; } void ClosePortalStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ClosePortalStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_portalname().empty()) { _this->_internal_set_portalname(from._internal_portalname()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ClosePortalStmt::CopyFrom(const ClosePortalStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ClosePortalStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ClosePortalStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* ClosePortalStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void ClosePortalStmt::InternalSwap(ClosePortalStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.portalname_, &other->_impl_.portalname_, arena); } ::google::protobuf::Metadata ClosePortalStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[207]); } // =================================================================== class FetchStmt::_Internal { public: }; FetchStmt::FetchStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.FetchStmt) } inline PROTOBUF_NDEBUG_INLINE FetchStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : portalname_(arena, from.portalname_), _cached_size_{0} {} FetchStmt::FetchStmt( ::google::protobuf::Arena* arena, const FetchStmt& from) : ::google::protobuf::Message(arena) { FetchStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, how_many_), reinterpret_cast(&from._impl_) + offsetof(Impl_, how_many_), offsetof(Impl_, ismove_) - offsetof(Impl_, how_many_) + sizeof(Impl_::ismove_)); // @@protoc_insertion_point(copy_constructor:pg_query.FetchStmt) } inline PROTOBUF_NDEBUG_INLINE FetchStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : portalname_(arena), _cached_size_{0} {} inline void FetchStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, how_many_), 0, offsetof(Impl_, ismove_) - offsetof(Impl_, how_many_) + sizeof(Impl_::ismove_)); } FetchStmt::~FetchStmt() { // @@protoc_insertion_point(destructor:pg_query.FetchStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void FetchStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.portalname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void FetchStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.FetchStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.portalname_.ClearToEmpty(); ::memset(&_impl_.how_many_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.ismove_) - reinterpret_cast(&_impl_.how_many_)) + sizeof(_impl_.ismove_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* FetchStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 0, 37, 2> FetchStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_FetchStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool ismove = 4 [json_name = "ismove"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(FetchStmt, _impl_.ismove_)}}, // .pg_query.FetchDirection direction = 1 [json_name = "direction"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FetchStmt, _impl_.direction_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(FetchStmt, _impl_.direction_)}}, // int64 how_many = 2 [json_name = "howMany"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(FetchStmt, _impl_.how_many_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(FetchStmt, _impl_.how_many_)}}, // string portalname = 3 [json_name = "portalname"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(FetchStmt, _impl_.portalname_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.FetchDirection direction = 1 [json_name = "direction"]; {PROTOBUF_FIELD_OFFSET(FetchStmt, _impl_.direction_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // int64 how_many = 2 [json_name = "howMany"]; {PROTOBUF_FIELD_OFFSET(FetchStmt, _impl_.how_many_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt64)}, // string portalname = 3 [json_name = "portalname"]; {PROTOBUF_FIELD_OFFSET(FetchStmt, _impl_.portalname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool ismove = 4 [json_name = "ismove"]; {PROTOBUF_FIELD_OFFSET(FetchStmt, _impl_.ismove_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, // no aux_entries {{ "\22\0\0\12\0\0\0\0" "pg_query.FetchStmt" "portalname" }}, }; ::uint8_t* FetchStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.FetchStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.FetchDirection direction = 1 [json_name = "direction"]; if (this->_internal_direction() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_direction(), target); } // int64 how_many = 2 [json_name = "howMany"]; if (this->_internal_how_many() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt64ToArrayWithField<2>( stream, this->_internal_how_many(), target); } // string portalname = 3 [json_name = "portalname"]; if (!this->_internal_portalname().empty()) { const std::string& _s = this->_internal_portalname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.FetchStmt.portalname"); target = stream->WriteStringMaybeAliased(3, _s, target); } // bool ismove = 4 [json_name = "ismove"]; if (this->_internal_ismove() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_ismove(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_portalname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_portalname()); } // int64 how_many = 2 [json_name = "howMany"]; if (this->_internal_how_many() != 0) { total_size += ::_pbi::WireFormatLite::Int64SizePlusOne( this->_internal_how_many()); } // .pg_query.FetchDirection direction = 1 [json_name = "direction"]; if (this->_internal_direction() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_direction()); } // bool ismove = 4 [json_name = "ismove"]; if (this->_internal_ismove() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData FetchStmt::_class_data_ = { FetchStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* FetchStmt::GetClassData() const { return &_class_data_; } void FetchStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.FetchStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_portalname().empty()) { _this->_internal_set_portalname(from._internal_portalname()); } if (from._internal_how_many() != 0) { _this->_internal_set_how_many(from._internal_how_many()); } if (from._internal_direction() != 0) { _this->_internal_set_direction(from._internal_direction()); } if (from._internal_ismove() != 0) { _this->_internal_set_ismove(from._internal_ismove()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void FetchStmt::CopyFrom(const FetchStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.FetchStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool FetchStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* FetchStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void FetchStmt::InternalSwap(FetchStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.portalname_, &other->_impl_.portalname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(FetchStmt, _impl_.ismove_) + sizeof(FetchStmt::_impl_.ismove_) - PROTOBUF_FIELD_OFFSET(FetchStmt, _impl_.how_many_)>( reinterpret_cast(&_impl_.how_many_), reinterpret_cast(&other->_impl_.how_many_)); } ::google::protobuf::Metadata FetchStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[208]); } // =================================================================== class IndexStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const IndexStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& where_clause(const IndexStmt* msg); static void set_has_where_clause(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::RangeVar& IndexStmt::_Internal::relation(const IndexStmt* msg) { return *msg->_impl_.relation_; } const ::pg_query::Node& IndexStmt::_Internal::where_clause(const IndexStmt* msg) { return *msg->_impl_.where_clause_; } IndexStmt::IndexStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.IndexStmt) } inline PROTOBUF_NDEBUG_INLINE IndexStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, index_params_{visibility, arena, from.index_params_}, index_including_params_{visibility, arena, from.index_including_params_}, options_{visibility, arena, from.options_}, exclude_op_names_{visibility, arena, from.exclude_op_names_}, idxname_(arena, from.idxname_), access_method_(arena, from.access_method_), table_space_(arena, from.table_space_), idxcomment_(arena, from.idxcomment_) {} IndexStmt::IndexStmt( ::google::protobuf::Arena* arena, const IndexStmt& from) : ::google::protobuf::Message(arena) { IndexStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.where_clause_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.where_clause_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, index_oid_), reinterpret_cast(&from._impl_) + offsetof(Impl_, index_oid_), offsetof(Impl_, reset_default_tblspc_) - offsetof(Impl_, index_oid_) + sizeof(Impl_::reset_default_tblspc_)); // @@protoc_insertion_point(copy_constructor:pg_query.IndexStmt) } inline PROTOBUF_NDEBUG_INLINE IndexStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, index_params_{visibility, arena}, index_including_params_{visibility, arena}, options_{visibility, arena}, exclude_op_names_{visibility, arena}, idxname_(arena), access_method_(arena), table_space_(arena), idxcomment_(arena) {} inline void IndexStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, reset_default_tblspc_) - offsetof(Impl_, relation_) + sizeof(Impl_::reset_default_tblspc_)); } IndexStmt::~IndexStmt() { // @@protoc_insertion_point(destructor:pg_query.IndexStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void IndexStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.idxname_.Destroy(); _impl_.access_method_.Destroy(); _impl_.table_space_.Destroy(); _impl_.idxcomment_.Destroy(); delete _impl_.relation_; delete _impl_.where_clause_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void IndexStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.IndexStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.index_params_.Clear(); _impl_.index_including_params_.Clear(); _impl_.options_.Clear(); _impl_.exclude_op_names_.Clear(); _impl_.idxname_.ClearToEmpty(); _impl_.access_method_.ClearToEmpty(); _impl_.table_space_.ClearToEmpty(); _impl_.idxcomment_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.where_clause_ != nullptr); _impl_.where_clause_->Clear(); } } ::memset(&_impl_.index_oid_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.reset_default_tblspc_) - reinterpret_cast(&_impl_.index_oid_)) + sizeof(_impl_.reset_default_tblspc_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* IndexStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<5, 24, 6, 92, 2> IndexStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_._has_bits_), 0, // no _extensions_ 24, 248, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4278190080, // skipmap offsetof(decltype(_table_), field_entries), 24, // num_field_entries 6, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_IndexStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string idxname = 1 [json_name = "idxname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.idxname_)}}, // .pg_query.RangeVar relation = 2 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.relation_)}}, // string access_method = 3 [json_name = "accessMethod"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.access_method_)}}, // string table_space = 4 [json_name = "tableSpace"]; {::_pbi::TcParser::FastUS1, {34, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.table_space_)}}, // repeated .pg_query.Node index_params = 5 [json_name = "indexParams"]; {::_pbi::TcParser::FastMtR1, {42, 63, 1, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.index_params_)}}, // repeated .pg_query.Node index_including_params = 6 [json_name = "indexIncludingParams"]; {::_pbi::TcParser::FastMtR1, {50, 63, 2, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.index_including_params_)}}, // repeated .pg_query.Node options = 7 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {58, 63, 3, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.options_)}}, // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; {::_pbi::TcParser::FastMtS1, {66, 1, 4, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.where_clause_)}}, // repeated .pg_query.Node exclude_op_names = 9 [json_name = "excludeOpNames"]; {::_pbi::TcParser::FastMtR1, {74, 63, 5, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.exclude_op_names_)}}, // string idxcomment = 10 [json_name = "idxcomment"]; {::_pbi::TcParser::FastUS1, {82, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.idxcomment_)}}, // uint32 index_oid = 11 [json_name = "indexOid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(IndexStmt, _impl_.index_oid_), 63>(), {88, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.index_oid_)}}, // uint32 old_number = 12 [json_name = "oldNumber"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(IndexStmt, _impl_.old_number_), 63>(), {96, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.old_number_)}}, // uint32 old_create_subid = 13 [json_name = "oldCreateSubid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(IndexStmt, _impl_.old_create_subid_), 63>(), {104, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.old_create_subid_)}}, // uint32 old_first_relfilelocator_subid = 14 [json_name = "oldFirstRelfilelocatorSubid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(IndexStmt, _impl_.old_first_relfilelocator_subid_), 63>(), {112, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.old_first_relfilelocator_subid_)}}, // bool unique = 15 [json_name = "unique"]; {::_pbi::TcParser::SingularVarintNoZag1(), {120, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.unique_)}}, // bool nulls_not_distinct = 16 [json_name = "nulls_not_distinct"]; {::_pbi::TcParser::FastV8S2, {384, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.nulls_not_distinct_)}}, // bool primary = 17 [json_name = "primary"]; {::_pbi::TcParser::FastV8S2, {392, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.primary_)}}, // bool isconstraint = 18 [json_name = "isconstraint"]; {::_pbi::TcParser::FastV8S2, {400, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.isconstraint_)}}, // bool deferrable = 19 [json_name = "deferrable"]; {::_pbi::TcParser::FastV8S2, {408, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.deferrable_)}}, // bool initdeferred = 20 [json_name = "initdeferred"]; {::_pbi::TcParser::FastV8S2, {416, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.initdeferred_)}}, // bool transformed = 21 [json_name = "transformed"]; {::_pbi::TcParser::FastV8S2, {424, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.transformed_)}}, // bool concurrent = 22 [json_name = "concurrent"]; {::_pbi::TcParser::FastV8S2, {432, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.concurrent_)}}, // bool if_not_exists = 23 [json_name = "if_not_exists"]; {::_pbi::TcParser::FastV8S2, {440, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.if_not_exists_)}}, // bool reset_default_tblspc = 24 [json_name = "reset_default_tblspc"]; {::_pbi::TcParser::FastV8S2, {448, 63, 0, PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.reset_default_tblspc_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // string idxname = 1 [json_name = "idxname"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.idxname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.RangeVar relation = 2 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string access_method = 3 [json_name = "accessMethod"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.access_method_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string table_space = 4 [json_name = "tableSpace"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.table_space_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node index_params = 5 [json_name = "indexParams"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.index_params_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node index_including_params = 6 [json_name = "indexIncludingParams"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.index_including_params_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 7 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.options_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.where_clause_), _Internal::kHasBitsOffset + 1, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node exclude_op_names = 9 [json_name = "excludeOpNames"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.exclude_op_names_), -1, 5, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string idxcomment = 10 [json_name = "idxcomment"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.idxcomment_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // uint32 index_oid = 11 [json_name = "indexOid"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.index_oid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 old_number = 12 [json_name = "oldNumber"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.old_number_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 old_create_subid = 13 [json_name = "oldCreateSubid"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.old_create_subid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // uint32 old_first_relfilelocator_subid = 14 [json_name = "oldFirstRelfilelocatorSubid"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.old_first_relfilelocator_subid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool unique = 15 [json_name = "unique"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.unique_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool nulls_not_distinct = 16 [json_name = "nulls_not_distinct"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.nulls_not_distinct_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool primary = 17 [json_name = "primary"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.primary_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool isconstraint = 18 [json_name = "isconstraint"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.isconstraint_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool deferrable = 19 [json_name = "deferrable"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.deferrable_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool initdeferred = 20 [json_name = "initdeferred"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.initdeferred_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool transformed = 21 [json_name = "transformed"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.transformed_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool concurrent = 22 [json_name = "concurrent"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.concurrent_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool if_not_exists = 23 [json_name = "if_not_exists"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.if_not_exists_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool reset_default_tblspc = 24 [json_name = "reset_default_tblspc"]; {PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.reset_default_tblspc_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\22\7\0\15\13\0\0\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "pg_query.IndexStmt" "idxname" "access_method" "table_space" "idxcomment" }}, }; ::uint8_t* IndexStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.IndexStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string idxname = 1 [json_name = "idxname"]; if (!this->_internal_idxname().empty()) { const std::string& _s = this->_internal_idxname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.IndexStmt.idxname"); target = stream->WriteStringMaybeAliased(1, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // string access_method = 3 [json_name = "accessMethod"]; if (!this->_internal_access_method().empty()) { const std::string& _s = this->_internal_access_method(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.IndexStmt.access_method"); target = stream->WriteStringMaybeAliased(3, _s, target); } // string table_space = 4 [json_name = "tableSpace"]; if (!this->_internal_table_space().empty()) { const std::string& _s = this->_internal_table_space(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.IndexStmt.table_space"); target = stream->WriteStringMaybeAliased(4, _s, target); } // repeated .pg_query.Node index_params = 5 [json_name = "indexParams"]; for (unsigned i = 0, n = static_cast(this->_internal_index_params_size()); i < n; i++) { const auto& repfield = this->_internal_index_params().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node index_including_params = 6 [json_name = "indexIncludingParams"]; for (unsigned i = 0, n = static_cast(this->_internal_index_including_params_size()); i < n; i++) { const auto& repfield = this->_internal_index_including_params().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 7 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 8, _Internal::where_clause(this), _Internal::where_clause(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node exclude_op_names = 9 [json_name = "excludeOpNames"]; for (unsigned i = 0, n = static_cast(this->_internal_exclude_op_names_size()); i < n; i++) { const auto& repfield = this->_internal_exclude_op_names().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(9, repfield, repfield.GetCachedSize(), target, stream); } // string idxcomment = 10 [json_name = "idxcomment"]; if (!this->_internal_idxcomment().empty()) { const std::string& _s = this->_internal_idxcomment(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.IndexStmt.idxcomment"); target = stream->WriteStringMaybeAliased(10, _s, target); } // uint32 index_oid = 11 [json_name = "indexOid"]; if (this->_internal_index_oid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 11, this->_internal_index_oid(), target); } // uint32 old_number = 12 [json_name = "oldNumber"]; if (this->_internal_old_number() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 12, this->_internal_old_number(), target); } // uint32 old_create_subid = 13 [json_name = "oldCreateSubid"]; if (this->_internal_old_create_subid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 13, this->_internal_old_create_subid(), target); } // uint32 old_first_relfilelocator_subid = 14 [json_name = "oldFirstRelfilelocatorSubid"]; if (this->_internal_old_first_relfilelocator_subid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 14, this->_internal_old_first_relfilelocator_subid(), target); } // bool unique = 15 [json_name = "unique"]; if (this->_internal_unique() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 15, this->_internal_unique(), target); } // bool nulls_not_distinct = 16 [json_name = "nulls_not_distinct"]; if (this->_internal_nulls_not_distinct() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 16, this->_internal_nulls_not_distinct(), target); } // bool primary = 17 [json_name = "primary"]; if (this->_internal_primary() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 17, this->_internal_primary(), target); } // bool isconstraint = 18 [json_name = "isconstraint"]; if (this->_internal_isconstraint() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 18, this->_internal_isconstraint(), target); } // bool deferrable = 19 [json_name = "deferrable"]; if (this->_internal_deferrable() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 19, this->_internal_deferrable(), target); } // bool initdeferred = 20 [json_name = "initdeferred"]; if (this->_internal_initdeferred() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 20, this->_internal_initdeferred(), target); } // bool transformed = 21 [json_name = "transformed"]; if (this->_internal_transformed() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 21, this->_internal_transformed(), target); } // bool concurrent = 22 [json_name = "concurrent"]; if (this->_internal_concurrent() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 22, this->_internal_concurrent(), target); } // bool if_not_exists = 23 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 23, this->_internal_if_not_exists(), target); } // bool reset_default_tblspc = 24 [json_name = "reset_default_tblspc"]; if (this->_internal_reset_default_tblspc() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 24, this->_internal_reset_default_tblspc(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_index_params()) { total_size += ::google::protobuf::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->_internal_index_including_params()) { total_size += ::google::protobuf::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->_internal_options()) { total_size += ::google::protobuf::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->_internal_exclude_op_names()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string idxname = 1 [json_name = "idxname"]; if (!this->_internal_idxname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_idxname()); } // string access_method = 3 [json_name = "accessMethod"]; if (!this->_internal_access_method().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_access_method()); } // string table_space = 4 [json_name = "tableSpace"]; if (!this->_internal_table_space().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_table_space()); } // string idxcomment = 10 [json_name = "idxcomment"]; if (!this->_internal_idxcomment().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_idxcomment()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.where_clause_); } } // uint32 index_oid = 11 [json_name = "indexOid"]; if (this->_internal_index_oid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_index_oid()); } // uint32 old_number = 12 [json_name = "oldNumber"]; if (this->_internal_old_number() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_old_number()); } // uint32 old_create_subid = 13 [json_name = "oldCreateSubid"]; if (this->_internal_old_create_subid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_old_create_subid()); } // uint32 old_first_relfilelocator_subid = 14 [json_name = "oldFirstRelfilelocatorSubid"]; if (this->_internal_old_first_relfilelocator_subid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_old_first_relfilelocator_subid()); } // bool unique = 15 [json_name = "unique"]; if (this->_internal_unique() != 0) { total_size += 2; } // bool nulls_not_distinct = 16 [json_name = "nulls_not_distinct"]; if (this->_internal_nulls_not_distinct() != 0) { total_size += 3; } // bool primary = 17 [json_name = "primary"]; if (this->_internal_primary() != 0) { total_size += 3; } // bool isconstraint = 18 [json_name = "isconstraint"]; if (this->_internal_isconstraint() != 0) { total_size += 3; } // bool deferrable = 19 [json_name = "deferrable"]; if (this->_internal_deferrable() != 0) { total_size += 3; } // bool initdeferred = 20 [json_name = "initdeferred"]; if (this->_internal_initdeferred() != 0) { total_size += 3; } // bool transformed = 21 [json_name = "transformed"]; if (this->_internal_transformed() != 0) { total_size += 3; } // bool concurrent = 22 [json_name = "concurrent"]; if (this->_internal_concurrent() != 0) { total_size += 3; } // bool if_not_exists = 23 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { total_size += 3; } // bool reset_default_tblspc = 24 [json_name = "reset_default_tblspc"]; if (this->_internal_reset_default_tblspc() != 0) { total_size += 3; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData IndexStmt::_class_data_ = { IndexStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* IndexStmt::GetClassData() const { return &_class_data_; } void IndexStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.IndexStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_index_params()->MergeFrom( from._internal_index_params()); _this->_internal_mutable_index_including_params()->MergeFrom( from._internal_index_including_params()); _this->_internal_mutable_options()->MergeFrom( from._internal_options()); _this->_internal_mutable_exclude_op_names()->MergeFrom( from._internal_exclude_op_names()); if (!from._internal_idxname().empty()) { _this->_internal_set_idxname(from._internal_idxname()); } if (!from._internal_access_method().empty()) { _this->_internal_set_access_method(from._internal_access_method()); } if (!from._internal_table_space().empty()) { _this->_internal_set_table_space(from._internal_table_space()); } if (!from._internal_idxcomment().empty()) { _this->_internal_set_idxcomment(from._internal_idxcomment()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_where_clause()->::pg_query::Node::MergeFrom( from._internal_where_clause()); } } if (from._internal_index_oid() != 0) { _this->_internal_set_index_oid(from._internal_index_oid()); } if (from._internal_old_number() != 0) { _this->_internal_set_old_number(from._internal_old_number()); } if (from._internal_old_create_subid() != 0) { _this->_internal_set_old_create_subid(from._internal_old_create_subid()); } if (from._internal_old_first_relfilelocator_subid() != 0) { _this->_internal_set_old_first_relfilelocator_subid(from._internal_old_first_relfilelocator_subid()); } if (from._internal_unique() != 0) { _this->_internal_set_unique(from._internal_unique()); } if (from._internal_nulls_not_distinct() != 0) { _this->_internal_set_nulls_not_distinct(from._internal_nulls_not_distinct()); } if (from._internal_primary() != 0) { _this->_internal_set_primary(from._internal_primary()); } if (from._internal_isconstraint() != 0) { _this->_internal_set_isconstraint(from._internal_isconstraint()); } if (from._internal_deferrable() != 0) { _this->_internal_set_deferrable(from._internal_deferrable()); } if (from._internal_initdeferred() != 0) { _this->_internal_set_initdeferred(from._internal_initdeferred()); } if (from._internal_transformed() != 0) { _this->_internal_set_transformed(from._internal_transformed()); } if (from._internal_concurrent() != 0) { _this->_internal_set_concurrent(from._internal_concurrent()); } if (from._internal_if_not_exists() != 0) { _this->_internal_set_if_not_exists(from._internal_if_not_exists()); } if (from._internal_reset_default_tblspc() != 0) { _this->_internal_set_reset_default_tblspc(from._internal_reset_default_tblspc()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void IndexStmt::CopyFrom(const IndexStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.IndexStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool IndexStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* IndexStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void IndexStmt::InternalSwap(IndexStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.index_params_.InternalSwap(&other->_impl_.index_params_); _impl_.index_including_params_.InternalSwap(&other->_impl_.index_including_params_); _impl_.options_.InternalSwap(&other->_impl_.options_); _impl_.exclude_op_names_.InternalSwap(&other->_impl_.exclude_op_names_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.idxname_, &other->_impl_.idxname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.access_method_, &other->_impl_.access_method_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.table_space_, &other->_impl_.table_space_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.idxcomment_, &other->_impl_.idxcomment_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.reset_default_tblspc_) + sizeof(IndexStmt::_impl_.reset_default_tblspc_) - PROTOBUF_FIELD_OFFSET(IndexStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata IndexStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[209]); } // =================================================================== class CreateStatsStmt::_Internal { public: }; CreateStatsStmt::CreateStatsStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateStatsStmt) } inline PROTOBUF_NDEBUG_INLINE CreateStatsStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : defnames_{visibility, arena, from.defnames_}, stat_types_{visibility, arena, from.stat_types_}, exprs_{visibility, arena, from.exprs_}, relations_{visibility, arena, from.relations_}, stxcomment_(arena, from.stxcomment_), _cached_size_{0} {} CreateStatsStmt::CreateStatsStmt( ::google::protobuf::Arena* arena, const CreateStatsStmt& from) : ::google::protobuf::Message(arena) { CreateStatsStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, transformed_), reinterpret_cast(&from._impl_) + offsetof(Impl_, transformed_), offsetof(Impl_, if_not_exists_) - offsetof(Impl_, transformed_) + sizeof(Impl_::if_not_exists_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateStatsStmt) } inline PROTOBUF_NDEBUG_INLINE CreateStatsStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : defnames_{visibility, arena}, stat_types_{visibility, arena}, exprs_{visibility, arena}, relations_{visibility, arena}, stxcomment_(arena), _cached_size_{0} {} inline void CreateStatsStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, transformed_), 0, offsetof(Impl_, if_not_exists_) - offsetof(Impl_, transformed_) + sizeof(Impl_::if_not_exists_)); } CreateStatsStmt::~CreateStatsStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateStatsStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateStatsStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.stxcomment_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateStatsStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateStatsStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.defnames_.Clear(); _impl_.stat_types_.Clear(); _impl_.exprs_.Clear(); _impl_.relations_.Clear(); _impl_.stxcomment_.ClearToEmpty(); ::memset(&_impl_.transformed_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.if_not_exists_) - reinterpret_cast(&_impl_.transformed_)) + sizeof(_impl_.if_not_exists_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateStatsStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 4, 43, 2> CreateStatsStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateStatsStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.defnames_)}}, // repeated .pg_query.Node stat_types = 2 [json_name = "stat_types"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.stat_types_)}}, // repeated .pg_query.Node exprs = 3 [json_name = "exprs"]; {::_pbi::TcParser::FastMtR1, {26, 63, 2, PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.exprs_)}}, // repeated .pg_query.Node relations = 4 [json_name = "relations"]; {::_pbi::TcParser::FastMtR1, {34, 63, 3, PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.relations_)}}, // string stxcomment = 5 [json_name = "stxcomment"]; {::_pbi::TcParser::FastUS1, {42, 63, 0, PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.stxcomment_)}}, // bool transformed = 6 [json_name = "transformed"]; {::_pbi::TcParser::SingularVarintNoZag1(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.transformed_)}}, // bool if_not_exists = 7 [json_name = "if_not_exists"]; {::_pbi::TcParser::SingularVarintNoZag1(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.if_not_exists_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; {PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.defnames_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node stat_types = 2 [json_name = "stat_types"]; {PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.stat_types_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node exprs = 3 [json_name = "exprs"]; {PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.exprs_), 0, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node relations = 4 [json_name = "relations"]; {PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.relations_), 0, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string stxcomment = 5 [json_name = "stxcomment"]; {PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.stxcomment_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool transformed = 6 [json_name = "transformed"]; {PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.transformed_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool if_not_exists = 7 [json_name = "if_not_exists"]; {PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.if_not_exists_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\30\0\0\0\0\12\0\0" "pg_query.CreateStatsStmt" "stxcomment" }}, }; ::uint8_t* CreateStatsStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateStatsStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; for (unsigned i = 0, n = static_cast(this->_internal_defnames_size()); i < n; i++) { const auto& repfield = this->_internal_defnames().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node stat_types = 2 [json_name = "stat_types"]; for (unsigned i = 0, n = static_cast(this->_internal_stat_types_size()); i < n; i++) { const auto& repfield = this->_internal_stat_types().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node exprs = 3 [json_name = "exprs"]; for (unsigned i = 0, n = static_cast(this->_internal_exprs_size()); i < n; i++) { const auto& repfield = this->_internal_exprs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node relations = 4 [json_name = "relations"]; for (unsigned i = 0, n = static_cast(this->_internal_relations_size()); i < n; i++) { const auto& repfield = this->_internal_relations().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // string stxcomment = 5 [json_name = "stxcomment"]; if (!this->_internal_stxcomment().empty()) { const std::string& _s = this->_internal_stxcomment(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateStatsStmt.stxcomment"); target = stream->WriteStringMaybeAliased(5, _s, target); } // bool transformed = 6 [json_name = "transformed"]; if (this->_internal_transformed() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 6, this->_internal_transformed(), target); } // bool if_not_exists = 7 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 7, this->_internal_if_not_exists(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_defnames()) { total_size += ::google::protobuf::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->_internal_stat_types()) { total_size += ::google::protobuf::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->_internal_exprs()) { total_size += ::google::protobuf::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->_internal_relations()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string stxcomment = 5 [json_name = "stxcomment"]; if (!this->_internal_stxcomment().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_stxcomment()); } // bool transformed = 6 [json_name = "transformed"]; if (this->_internal_transformed() != 0) { total_size += 2; } // bool if_not_exists = 7 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateStatsStmt::_class_data_ = { CreateStatsStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateStatsStmt::GetClassData() const { return &_class_data_; } void CreateStatsStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateStatsStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_defnames()->MergeFrom( from._internal_defnames()); _this->_internal_mutable_stat_types()->MergeFrom( from._internal_stat_types()); _this->_internal_mutable_exprs()->MergeFrom( from._internal_exprs()); _this->_internal_mutable_relations()->MergeFrom( from._internal_relations()); if (!from._internal_stxcomment().empty()) { _this->_internal_set_stxcomment(from._internal_stxcomment()); } if (from._internal_transformed() != 0) { _this->_internal_set_transformed(from._internal_transformed()); } if (from._internal_if_not_exists() != 0) { _this->_internal_set_if_not_exists(from._internal_if_not_exists()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateStatsStmt::CopyFrom(const CreateStatsStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateStatsStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateStatsStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateStatsStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateStatsStmt::InternalSwap(CreateStatsStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.defnames_.InternalSwap(&other->_impl_.defnames_); _impl_.stat_types_.InternalSwap(&other->_impl_.stat_types_); _impl_.exprs_.InternalSwap(&other->_impl_.exprs_); _impl_.relations_.InternalSwap(&other->_impl_.relations_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.stxcomment_, &other->_impl_.stxcomment_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.if_not_exists_) + sizeof(CreateStatsStmt::_impl_.if_not_exists_) - PROTOBUF_FIELD_OFFSET(CreateStatsStmt, _impl_.transformed_)>( reinterpret_cast(&_impl_.transformed_), reinterpret_cast(&other->_impl_.transformed_)); } ::google::protobuf::Metadata CreateStatsStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[210]); } // =================================================================== class StatsElem::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(StatsElem, _impl_._has_bits_); static const ::pg_query::Node& expr(const StatsElem* msg); static void set_has_expr(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& StatsElem::_Internal::expr(const StatsElem* msg) { return *msg->_impl_.expr_; } StatsElem::StatsElem(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.StatsElem) } inline PROTOBUF_NDEBUG_INLINE StatsElem::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, name_(arena, from.name_) {} StatsElem::StatsElem( ::google::protobuf::Arena* arena, const StatsElem& from) : ::google::protobuf::Message(arena) { StatsElem* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.expr_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.expr_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.StatsElem) } inline PROTOBUF_NDEBUG_INLINE StatsElem::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, name_(arena) {} inline void StatsElem::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.expr_ = {}; } StatsElem::~StatsElem() { // @@protoc_insertion_point(destructor:pg_query.StatsElem) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void StatsElem::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); delete _impl_.expr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void StatsElem::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.StatsElem) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.expr_ != nullptr); _impl_.expr_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* StatsElem::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 31, 2> StatsElem::_table_ = { { PROTOBUF_FIELD_OFFSET(StatsElem, _impl_._has_bits_), 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_StatsElem_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.Node expr = 2 [json_name = "expr"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(StatsElem, _impl_.expr_)}}, // string name = 1 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(StatsElem, _impl_.name_)}}, }}, {{ 65535, 65535 }}, {{ // string name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(StatsElem, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.Node expr = 2 [json_name = "expr"]; {PROTOBUF_FIELD_OFFSET(StatsElem, _impl_.expr_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\22\4\0\0\0\0\0\0" "pg_query.StatsElem" "name" }}, }; ::uint8_t* StatsElem::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.StatsElem) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.StatsElem.name"); target = stream->WriteStringMaybeAliased(1, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node expr = 2 [json_name = "expr"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::expr(this), _Internal::expr(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.StatsElem) return target; } ::size_t StatsElem::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.StatsElem) ::size_t total_size = 0; ::uint32_t 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->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.Node expr = 2 [json_name = "expr"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.expr_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData StatsElem::_class_data_ = { StatsElem::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* StatsElem::GetClassData() const { return &_class_data_; } void StatsElem::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.StatsElem) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_expr()->::pg_query::Node::MergeFrom( from._internal_expr()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void StatsElem::CopyFrom(const StatsElem& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.StatsElem) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool StatsElem::IsInitialized() const { return true; } ::_pbi::CachedSize* StatsElem::AccessCachedSize() const { return &_impl_._cached_size_; } void StatsElem::InternalSwap(StatsElem* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); swap(_impl_.expr_, other->_impl_.expr_); } ::google::protobuf::Metadata StatsElem::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[211]); } // =================================================================== class AlterStatsStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterStatsStmt, _impl_._has_bits_); static const ::pg_query::Node& stxstattarget(const AlterStatsStmt* msg); static void set_has_stxstattarget(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& AlterStatsStmt::_Internal::stxstattarget(const AlterStatsStmt* msg) { return *msg->_impl_.stxstattarget_; } AlterStatsStmt::AlterStatsStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterStatsStmt) } inline PROTOBUF_NDEBUG_INLINE AlterStatsStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, defnames_{visibility, arena, from.defnames_} {} AlterStatsStmt::AlterStatsStmt( ::google::protobuf::Arena* arena, const AlterStatsStmt& from) : ::google::protobuf::Message(arena) { AlterStatsStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.stxstattarget_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.stxstattarget_) : nullptr; _impl_.missing_ok_ = from._impl_.missing_ok_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterStatsStmt) } inline PROTOBUF_NDEBUG_INLINE AlterStatsStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, defnames_{visibility, arena} {} inline void AlterStatsStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, stxstattarget_), 0, offsetof(Impl_, missing_ok_) - offsetof(Impl_, stxstattarget_) + sizeof(Impl_::missing_ok_)); } AlterStatsStmt::~AlterStatsStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterStatsStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterStatsStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.stxstattarget_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterStatsStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterStatsStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.defnames_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.stxstattarget_ != nullptr); _impl_.stxstattarget_->Clear(); } _impl_.missing_ok_ = false; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterStatsStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 0, 2> AlterStatsStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterStatsStmt, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterStatsStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterStatsStmt, _impl_.defnames_)}}, // .pg_query.Node stxstattarget = 2 [json_name = "stxstattarget"]; {::_pbi::TcParser::FastMtS1, {18, 0, 1, PROTOBUF_FIELD_OFFSET(AlterStatsStmt, _impl_.stxstattarget_)}}, // bool missing_ok = 3 [json_name = "missing_ok"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(AlterStatsStmt, _impl_.missing_ok_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; {PROTOBUF_FIELD_OFFSET(AlterStatsStmt, _impl_.defnames_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node stxstattarget = 2 [json_name = "stxstattarget"]; {PROTOBUF_FIELD_OFFSET(AlterStatsStmt, _impl_.stxstattarget_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool missing_ok = 3 [json_name = "missing_ok"]; {PROTOBUF_FIELD_OFFSET(AlterStatsStmt, _impl_.missing_ok_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* AlterStatsStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterStatsStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; for (unsigned i = 0, n = static_cast(this->_internal_defnames_size()); i < n; i++) { const auto& repfield = this->_internal_defnames().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node stxstattarget = 2 [json_name = "stxstattarget"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::stxstattarget(this), _Internal::stxstattarget(this).GetCachedSize(), target, stream); } // bool missing_ok = 3 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_defnames()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node stxstattarget = 2 [json_name = "stxstattarget"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.stxstattarget_); } // bool missing_ok = 3 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterStatsStmt::_class_data_ = { AlterStatsStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterStatsStmt::GetClassData() const { return &_class_data_; } void AlterStatsStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterStatsStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_defnames()->MergeFrom( from._internal_defnames()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_stxstattarget()->::pg_query::Node::MergeFrom( from._internal_stxstattarget()); } if (from._internal_missing_ok() != 0) { _this->_internal_set_missing_ok(from._internal_missing_ok()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterStatsStmt::CopyFrom(const AlterStatsStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterStatsStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterStatsStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterStatsStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterStatsStmt::InternalSwap(AlterStatsStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.defnames_.InternalSwap(&other->_impl_.defnames_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterStatsStmt, _impl_.missing_ok_) + sizeof(AlterStatsStmt::_impl_.missing_ok_) - PROTOBUF_FIELD_OFFSET(AlterStatsStmt, _impl_.stxstattarget_)>( reinterpret_cast(&_impl_.stxstattarget_), reinterpret_cast(&other->_impl_.stxstattarget_)); } ::google::protobuf::Metadata AlterStatsStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[212]); } // =================================================================== class CreateFunctionStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_._has_bits_); static const ::pg_query::TypeName& return_type(const CreateFunctionStmt* msg); static void set_has_return_type(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& sql_body(const CreateFunctionStmt* msg); static void set_has_sql_body(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::TypeName& CreateFunctionStmt::_Internal::return_type(const CreateFunctionStmt* msg) { return *msg->_impl_.return_type_; } const ::pg_query::Node& CreateFunctionStmt::_Internal::sql_body(const CreateFunctionStmt* msg) { return *msg->_impl_.sql_body_; } CreateFunctionStmt::CreateFunctionStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateFunctionStmt) } inline PROTOBUF_NDEBUG_INLINE CreateFunctionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, funcname_{visibility, arena, from.funcname_}, parameters_{visibility, arena, from.parameters_}, options_{visibility, arena, from.options_} {} CreateFunctionStmt::CreateFunctionStmt( ::google::protobuf::Arena* arena, const CreateFunctionStmt& from) : ::google::protobuf::Message(arena) { CreateFunctionStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.return_type_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.return_type_) : nullptr; _impl_.sql_body_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.sql_body_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, is_procedure_), reinterpret_cast(&from._impl_) + offsetof(Impl_, is_procedure_), offsetof(Impl_, replace_) - offsetof(Impl_, is_procedure_) + sizeof(Impl_::replace_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateFunctionStmt) } inline PROTOBUF_NDEBUG_INLINE CreateFunctionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, funcname_{visibility, arena}, parameters_{visibility, arena}, options_{visibility, arena} {} inline void CreateFunctionStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, return_type_), 0, offsetof(Impl_, replace_) - offsetof(Impl_, return_type_) + sizeof(Impl_::replace_)); } CreateFunctionStmt::~CreateFunctionStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateFunctionStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateFunctionStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.return_type_; delete _impl_.sql_body_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateFunctionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateFunctionStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.funcname_.Clear(); _impl_.parameters_.Clear(); _impl_.options_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.return_type_ != nullptr); _impl_.return_type_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.sql_body_ != nullptr); _impl_.sql_body_->Clear(); } } ::memset(&_impl_.is_procedure_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.replace_) - reinterpret_cast(&_impl_.is_procedure_)) + sizeof(_impl_.replace_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateFunctionStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 5, 0, 2> CreateFunctionStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 5, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateFunctionStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // bool is_procedure = 1 [json_name = "is_procedure"]; {::_pbi::TcParser::SingularVarintNoZag1(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.is_procedure_)}}, // bool replace = 2 [json_name = "replace"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.replace_)}}, // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; {::_pbi::TcParser::FastMtR1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.funcname_)}}, // repeated .pg_query.Node parameters = 4 [json_name = "parameters"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.parameters_)}}, // .pg_query.TypeName return_type = 5 [json_name = "returnType"]; {::_pbi::TcParser::FastMtS1, {42, 0, 2, PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.return_type_)}}, // repeated .pg_query.Node options = 6 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {50, 63, 3, PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.options_)}}, // .pg_query.Node sql_body = 7 [json_name = "sql_body"]; {::_pbi::TcParser::FastMtS1, {58, 1, 4, PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.sql_body_)}}, }}, {{ 65535, 65535 }}, {{ // bool is_procedure = 1 [json_name = "is_procedure"]; {PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.is_procedure_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool replace = 2 [json_name = "replace"]; {PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.replace_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; {PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.funcname_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node parameters = 4 [json_name = "parameters"]; {PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.parameters_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TypeName return_type = 5 [json_name = "returnType"]; {PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.return_type_), _Internal::kHasBitsOffset + 0, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 6 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.options_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node sql_body = 7 [json_name = "sql_body"]; {PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.sql_body_), _Internal::kHasBitsOffset + 1, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CreateFunctionStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateFunctionStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // bool is_procedure = 1 [json_name = "is_procedure"]; if (this->_internal_is_procedure() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 1, this->_internal_is_procedure(), target); } // bool replace = 2 [json_name = "replace"]; if (this->_internal_replace() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_replace(), target); } // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; for (unsigned i = 0, n = static_cast(this->_internal_funcname_size()); i < n; i++) { const auto& repfield = this->_internal_funcname().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node parameters = 4 [json_name = "parameters"]; for (unsigned i = 0, n = static_cast(this->_internal_parameters_size()); i < n; i++) { const auto& repfield = this->_internal_parameters().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.TypeName return_type = 5 [json_name = "returnType"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::return_type(this), _Internal::return_type(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 6 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node sql_body = 7 [json_name = "sql_body"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 7, _Internal::sql_body(this), _Internal::sql_body(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_funcname()) { total_size += ::google::protobuf::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->_internal_parameters()) { total_size += ::google::protobuf::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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.TypeName return_type = 5 [json_name = "returnType"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.return_type_); } // .pg_query.Node sql_body = 7 [json_name = "sql_body"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.sql_body_); } } // bool is_procedure = 1 [json_name = "is_procedure"]; if (this->_internal_is_procedure() != 0) { total_size += 2; } // bool replace = 2 [json_name = "replace"]; if (this->_internal_replace() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateFunctionStmt::_class_data_ = { CreateFunctionStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateFunctionStmt::GetClassData() const { return &_class_data_; } void CreateFunctionStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateFunctionStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_funcname()->MergeFrom( from._internal_funcname()); _this->_internal_mutable_parameters()->MergeFrom( from._internal_parameters()); _this->_internal_mutable_options()->MergeFrom( from._internal_options()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_return_type()->::pg_query::TypeName::MergeFrom( from._internal_return_type()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_sql_body()->::pg_query::Node::MergeFrom( from._internal_sql_body()); } } if (from._internal_is_procedure() != 0) { _this->_internal_set_is_procedure(from._internal_is_procedure()); } if (from._internal_replace() != 0) { _this->_internal_set_replace(from._internal_replace()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateFunctionStmt::CopyFrom(const CreateFunctionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateFunctionStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateFunctionStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateFunctionStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateFunctionStmt::InternalSwap(CreateFunctionStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.funcname_.InternalSwap(&other->_impl_.funcname_); _impl_.parameters_.InternalSwap(&other->_impl_.parameters_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.replace_) + sizeof(CreateFunctionStmt::_impl_.replace_) - PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, _impl_.return_type_)>( reinterpret_cast(&_impl_.return_type_), reinterpret_cast(&other->_impl_.return_type_)); } ::google::protobuf::Metadata CreateFunctionStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[213]); } // =================================================================== class FunctionParameter::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(FunctionParameter, _impl_._has_bits_); static const ::pg_query::TypeName& arg_type(const FunctionParameter* msg); static void set_has_arg_type(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& defexpr(const FunctionParameter* msg); static void set_has_defexpr(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::TypeName& FunctionParameter::_Internal::arg_type(const FunctionParameter* msg) { return *msg->_impl_.arg_type_; } const ::pg_query::Node& FunctionParameter::_Internal::defexpr(const FunctionParameter* msg) { return *msg->_impl_.defexpr_; } FunctionParameter::FunctionParameter(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.FunctionParameter) } inline PROTOBUF_NDEBUG_INLINE FunctionParameter::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, name_(arena, from.name_) {} FunctionParameter::FunctionParameter( ::google::protobuf::Arena* arena, const FunctionParameter& from) : ::google::protobuf::Message(arena) { FunctionParameter* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.arg_type_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.arg_type_) : nullptr; _impl_.defexpr_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.defexpr_) : nullptr; _impl_.mode_ = from._impl_.mode_; // @@protoc_insertion_point(copy_constructor:pg_query.FunctionParameter) } inline PROTOBUF_NDEBUG_INLINE FunctionParameter::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, name_(arena) {} inline void FunctionParameter::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, arg_type_), 0, offsetof(Impl_, mode_) - offsetof(Impl_, arg_type_) + sizeof(Impl_::mode_)); } FunctionParameter::~FunctionParameter() { // @@protoc_insertion_point(destructor:pg_query.FunctionParameter) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void FunctionParameter::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); delete _impl_.arg_type_; delete _impl_.defexpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void FunctionParameter::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.FunctionParameter) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.arg_type_ != nullptr); _impl_.arg_type_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.defexpr_ != nullptr); _impl_.defexpr_->Clear(); } } _impl_.mode_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* FunctionParameter::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 39, 2> FunctionParameter::_table_ = { { PROTOBUF_FIELD_OFFSET(FunctionParameter, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_FunctionParameter_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.Node defexpr = 4 [json_name = "defexpr"]; {::_pbi::TcParser::FastMtS1, {34, 1, 1, PROTOBUF_FIELD_OFFSET(FunctionParameter, _impl_.defexpr_)}}, // string name = 1 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(FunctionParameter, _impl_.name_)}}, // .pg_query.TypeName arg_type = 2 [json_name = "argType"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(FunctionParameter, _impl_.arg_type_)}}, // .pg_query.FunctionParameterMode mode = 3 [json_name = "mode"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FunctionParameter, _impl_.mode_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(FunctionParameter, _impl_.mode_)}}, }}, {{ 65535, 65535 }}, {{ // string name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(FunctionParameter, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.TypeName arg_type = 2 [json_name = "argType"]; {PROTOBUF_FIELD_OFFSET(FunctionParameter, _impl_.arg_type_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.FunctionParameterMode mode = 3 [json_name = "mode"]; {PROTOBUF_FIELD_OFFSET(FunctionParameter, _impl_.mode_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.Node defexpr = 4 [json_name = "defexpr"]; {PROTOBUF_FIELD_OFFSET(FunctionParameter, _impl_.defexpr_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\32\4\0\0\0\0\0\0" "pg_query.FunctionParameter" "name" }}, }; ::uint8_t* FunctionParameter::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.FunctionParameter) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.FunctionParameter.name"); target = stream->WriteStringMaybeAliased(1, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.TypeName arg_type = 2 [json_name = "argType"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::arg_type(this), _Internal::arg_type(this).GetCachedSize(), target, stream); } // .pg_query.FunctionParameterMode mode = 3 [json_name = "mode"]; if (this->_internal_mode() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_mode(), target); } // .pg_query.Node defexpr = 4 [json_name = "defexpr"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::defexpr(this), _Internal::defexpr(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.TypeName arg_type = 2 [json_name = "argType"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.arg_type_); } // .pg_query.Node defexpr = 4 [json_name = "defexpr"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.defexpr_); } } // .pg_query.FunctionParameterMode mode = 3 [json_name = "mode"]; if (this->_internal_mode() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_mode()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData FunctionParameter::_class_data_ = { FunctionParameter::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* FunctionParameter::GetClassData() const { return &_class_data_; } void FunctionParameter::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.FunctionParameter) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_arg_type()->::pg_query::TypeName::MergeFrom( from._internal_arg_type()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_defexpr()->::pg_query::Node::MergeFrom( from._internal_defexpr()); } } if (from._internal_mode() != 0) { _this->_internal_set_mode(from._internal_mode()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void FunctionParameter::CopyFrom(const FunctionParameter& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.FunctionParameter) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool FunctionParameter::IsInitialized() const { return true; } ::_pbi::CachedSize* FunctionParameter::AccessCachedSize() const { return &_impl_._cached_size_; } void FunctionParameter::InternalSwap(FunctionParameter* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(FunctionParameter, _impl_.mode_) + sizeof(FunctionParameter::_impl_.mode_) - PROTOBUF_FIELD_OFFSET(FunctionParameter, _impl_.arg_type_)>( reinterpret_cast(&_impl_.arg_type_), reinterpret_cast(&other->_impl_.arg_type_)); } ::google::protobuf::Metadata FunctionParameter::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[214]); } // =================================================================== class AlterFunctionStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterFunctionStmt, _impl_._has_bits_); static const ::pg_query::ObjectWithArgs& func(const AlterFunctionStmt* msg); static void set_has_func(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::ObjectWithArgs& AlterFunctionStmt::_Internal::func(const AlterFunctionStmt* msg) { return *msg->_impl_.func_; } AlterFunctionStmt::AlterFunctionStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterFunctionStmt) } inline PROTOBUF_NDEBUG_INLINE AlterFunctionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, actions_{visibility, arena, from.actions_} {} AlterFunctionStmt::AlterFunctionStmt( ::google::protobuf::Arena* arena, const AlterFunctionStmt& from) : ::google::protobuf::Message(arena) { AlterFunctionStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.func_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::ObjectWithArgs>(arena, *from._impl_.func_) : nullptr; _impl_.objtype_ = from._impl_.objtype_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterFunctionStmt) } inline PROTOBUF_NDEBUG_INLINE AlterFunctionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, actions_{visibility, arena} {} inline void AlterFunctionStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, func_), 0, offsetof(Impl_, objtype_) - offsetof(Impl_, func_) + sizeof(Impl_::objtype_)); } AlterFunctionStmt::~AlterFunctionStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterFunctionStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterFunctionStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.func_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterFunctionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterFunctionStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.actions_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.func_ != nullptr); _impl_.func_->Clear(); } _impl_.objtype_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterFunctionStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 0, 2> AlterFunctionStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterFunctionStmt, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterFunctionStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterFunctionStmt, _impl_.objtype_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(AlterFunctionStmt, _impl_.objtype_)}}, // .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(AlterFunctionStmt, _impl_.func_)}}, // repeated .pg_query.Node actions = 3 [json_name = "actions"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(AlterFunctionStmt, _impl_.actions_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; {PROTOBUF_FIELD_OFFSET(AlterFunctionStmt, _impl_.objtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; {PROTOBUF_FIELD_OFFSET(AlterFunctionStmt, _impl_.func_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node actions = 3 [json_name = "actions"]; {PROTOBUF_FIELD_OFFSET(AlterFunctionStmt, _impl_.actions_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::ObjectWithArgs>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* AlterFunctionStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterFunctionStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_objtype(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::func(this), _Internal::func(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node actions = 3 [json_name = "actions"]; for (unsigned i = 0, n = static_cast(this->_internal_actions_size()); i < n; i++) { const auto& repfield = this->_internal_actions().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_actions()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.func_); } // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_objtype()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterFunctionStmt::_class_data_ = { AlterFunctionStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterFunctionStmt::GetClassData() const { return &_class_data_; } void AlterFunctionStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterFunctionStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_actions()->MergeFrom( from._internal_actions()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_func()->::pg_query::ObjectWithArgs::MergeFrom( from._internal_func()); } if (from._internal_objtype() != 0) { _this->_internal_set_objtype(from._internal_objtype()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterFunctionStmt::CopyFrom(const AlterFunctionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterFunctionStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterFunctionStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterFunctionStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterFunctionStmt::InternalSwap(AlterFunctionStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.actions_.InternalSwap(&other->_impl_.actions_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterFunctionStmt, _impl_.objtype_) + sizeof(AlterFunctionStmt::_impl_.objtype_) - PROTOBUF_FIELD_OFFSET(AlterFunctionStmt, _impl_.func_)>( reinterpret_cast(&_impl_.func_), reinterpret_cast(&other->_impl_.func_)); } ::google::protobuf::Metadata AlterFunctionStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[215]); } // =================================================================== class DoStmt::_Internal { public: }; DoStmt::DoStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DoStmt) } inline PROTOBUF_NDEBUG_INLINE DoStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : args_{visibility, arena, from.args_}, _cached_size_{0} {} DoStmt::DoStmt( ::google::protobuf::Arena* arena, const DoStmt& from) : ::google::protobuf::Message(arena) { DoStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.DoStmt) } inline PROTOBUF_NDEBUG_INLINE DoStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : args_{visibility, arena}, _cached_size_{0} {} inline void DoStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } DoStmt::~DoStmt() { // @@protoc_insertion_point(destructor:pg_query.DoStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DoStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void DoStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DoStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.args_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DoStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 1, 0, 2> DoStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_DoStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node args = 1 [json_name = "args"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(DoStmt, _impl_.args_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node args = 1 [json_name = "args"]; {PROTOBUF_FIELD_OFFSET(DoStmt, _impl_.args_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* DoStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DoStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node args = 1 [json_name = "args"]; for (unsigned i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { const auto& repfield = this->_internal_args().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_args()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DoStmt::_class_data_ = { DoStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DoStmt::GetClassData() const { return &_class_data_; } void DoStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DoStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_args()->MergeFrom( from._internal_args()); _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DoStmt::CopyFrom(const DoStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DoStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DoStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* DoStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void DoStmt::InternalSwap(DoStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.args_.InternalSwap(&other->_impl_.args_); } ::google::protobuf::Metadata DoStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[216]); } // =================================================================== class InlineCodeBlock::_Internal { public: }; InlineCodeBlock::InlineCodeBlock(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.InlineCodeBlock) } inline PROTOBUF_NDEBUG_INLINE InlineCodeBlock::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : source_text_(arena, from.source_text_), _cached_size_{0} {} InlineCodeBlock::InlineCodeBlock( ::google::protobuf::Arena* arena, const InlineCodeBlock& from) : ::google::protobuf::Message(arena) { InlineCodeBlock* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, lang_oid_), reinterpret_cast(&from._impl_) + offsetof(Impl_, lang_oid_), offsetof(Impl_, atomic_) - offsetof(Impl_, lang_oid_) + sizeof(Impl_::atomic_)); // @@protoc_insertion_point(copy_constructor:pg_query.InlineCodeBlock) } inline PROTOBUF_NDEBUG_INLINE InlineCodeBlock::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : source_text_(arena), _cached_size_{0} {} inline void InlineCodeBlock::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, lang_oid_), 0, offsetof(Impl_, atomic_) - offsetof(Impl_, lang_oid_) + sizeof(Impl_::atomic_)); } InlineCodeBlock::~InlineCodeBlock() { // @@protoc_insertion_point(destructor:pg_query.InlineCodeBlock) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void InlineCodeBlock::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.source_text_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void InlineCodeBlock::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.InlineCodeBlock) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.source_text_.ClearToEmpty(); ::memset(&_impl_.lang_oid_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.atomic_) - reinterpret_cast(&_impl_.lang_oid_)) + sizeof(_impl_.atomic_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* InlineCodeBlock::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 0, 44, 2> InlineCodeBlock::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_InlineCodeBlock_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool atomic = 4 [json_name = "atomic"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(InlineCodeBlock, _impl_.atomic_)}}, // string source_text = 1 [json_name = "source_text"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(InlineCodeBlock, _impl_.source_text_)}}, // uint32 lang_oid = 2 [json_name = "langOid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InlineCodeBlock, _impl_.lang_oid_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(InlineCodeBlock, _impl_.lang_oid_)}}, // bool lang_is_trusted = 3 [json_name = "langIsTrusted"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(InlineCodeBlock, _impl_.lang_is_trusted_)}}, }}, {{ 65535, 65535 }}, {{ // string source_text = 1 [json_name = "source_text"]; {PROTOBUF_FIELD_OFFSET(InlineCodeBlock, _impl_.source_text_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // uint32 lang_oid = 2 [json_name = "langOid"]; {PROTOBUF_FIELD_OFFSET(InlineCodeBlock, _impl_.lang_oid_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // bool lang_is_trusted = 3 [json_name = "langIsTrusted"]; {PROTOBUF_FIELD_OFFSET(InlineCodeBlock, _impl_.lang_is_trusted_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool atomic = 4 [json_name = "atomic"]; {PROTOBUF_FIELD_OFFSET(InlineCodeBlock, _impl_.atomic_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, // no aux_entries {{ "\30\13\0\0\0\0\0\0" "pg_query.InlineCodeBlock" "source_text" }}, }; ::uint8_t* InlineCodeBlock::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.InlineCodeBlock) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string source_text = 1 [json_name = "source_text"]; if (!this->_internal_source_text().empty()) { const std::string& _s = this->_internal_source_text(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.InlineCodeBlock.source_text"); target = stream->WriteStringMaybeAliased(1, _s, target); } // uint32 lang_oid = 2 [json_name = "langOid"]; if (this->_internal_lang_oid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_lang_oid(), target); } // bool lang_is_trusted = 3 [json_name = "langIsTrusted"]; if (this->_internal_lang_is_trusted() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_lang_is_trusted(), target); } // bool atomic = 4 [json_name = "atomic"]; if (this->_internal_atomic() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_atomic(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_source_text().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_source_text()); } // uint32 lang_oid = 2 [json_name = "langOid"]; if (this->_internal_lang_oid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_lang_oid()); } // bool lang_is_trusted = 3 [json_name = "langIsTrusted"]; if (this->_internal_lang_is_trusted() != 0) { total_size += 2; } // bool atomic = 4 [json_name = "atomic"]; if (this->_internal_atomic() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData InlineCodeBlock::_class_data_ = { InlineCodeBlock::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* InlineCodeBlock::GetClassData() const { return &_class_data_; } void InlineCodeBlock::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.InlineCodeBlock) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_source_text().empty()) { _this->_internal_set_source_text(from._internal_source_text()); } if (from._internal_lang_oid() != 0) { _this->_internal_set_lang_oid(from._internal_lang_oid()); } if (from._internal_lang_is_trusted() != 0) { _this->_internal_set_lang_is_trusted(from._internal_lang_is_trusted()); } if (from._internal_atomic() != 0) { _this->_internal_set_atomic(from._internal_atomic()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void InlineCodeBlock::CopyFrom(const InlineCodeBlock& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.InlineCodeBlock) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool InlineCodeBlock::IsInitialized() const { return true; } ::_pbi::CachedSize* InlineCodeBlock::AccessCachedSize() const { return &_impl_._cached_size_; } void InlineCodeBlock::InternalSwap(InlineCodeBlock* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.source_text_, &other->_impl_.source_text_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(InlineCodeBlock, _impl_.atomic_) + sizeof(InlineCodeBlock::_impl_.atomic_) - PROTOBUF_FIELD_OFFSET(InlineCodeBlock, _impl_.lang_oid_)>( reinterpret_cast(&_impl_.lang_oid_), reinterpret_cast(&other->_impl_.lang_oid_)); } ::google::protobuf::Metadata InlineCodeBlock::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[217]); } // =================================================================== class CallStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CallStmt, _impl_._has_bits_); static const ::pg_query::FuncCall& funccall(const CallStmt* msg); static void set_has_funccall(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::FuncExpr& funcexpr(const CallStmt* msg); static void set_has_funcexpr(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::FuncCall& CallStmt::_Internal::funccall(const CallStmt* msg) { return *msg->_impl_.funccall_; } const ::pg_query::FuncExpr& CallStmt::_Internal::funcexpr(const CallStmt* msg) { return *msg->_impl_.funcexpr_; } CallStmt::CallStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CallStmt) } inline PROTOBUF_NDEBUG_INLINE CallStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, outargs_{visibility, arena, from.outargs_} {} CallStmt::CallStmt( ::google::protobuf::Arena* arena, const CallStmt& from) : ::google::protobuf::Message(arena) { CallStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.funccall_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::FuncCall>(arena, *from._impl_.funccall_) : nullptr; _impl_.funcexpr_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::FuncExpr>(arena, *from._impl_.funcexpr_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.CallStmt) } inline PROTOBUF_NDEBUG_INLINE CallStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, outargs_{visibility, arena} {} inline void CallStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, funccall_), 0, offsetof(Impl_, funcexpr_) - offsetof(Impl_, funccall_) + sizeof(Impl_::funcexpr_)); } CallStmt::~CallStmt() { // @@protoc_insertion_point(destructor:pg_query.CallStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CallStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.funccall_; delete _impl_.funcexpr_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CallStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CallStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.outargs_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.funccall_ != nullptr); _impl_.funccall_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.funcexpr_ != nullptr); _impl_.funcexpr_->Clear(); } } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CallStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 3, 0, 2> CallStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CallStmt, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CallStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CallStmt, _impl_.funccall_)}}, // .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(CallStmt, _impl_.funcexpr_)}}, // repeated .pg_query.Node outargs = 3 [json_name = "outargs"]; {::_pbi::TcParser::FastMtR1, {26, 63, 2, PROTOBUF_FIELD_OFFSET(CallStmt, _impl_.outargs_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; {PROTOBUF_FIELD_OFFSET(CallStmt, _impl_.funccall_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; {PROTOBUF_FIELD_OFFSET(CallStmt, _impl_.funcexpr_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node outargs = 3 [json_name = "outargs"]; {PROTOBUF_FIELD_OFFSET(CallStmt, _impl_.outargs_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::FuncCall>()}, {::_pbi::TcParser::GetTable<::pg_query::FuncExpr>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CallStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CallStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::funccall(this), _Internal::funccall(this).GetCachedSize(), target, stream); } // .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::funcexpr(this), _Internal::funcexpr(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node outargs = 3 [json_name = "outargs"]; for (unsigned i = 0, n = static_cast(this->_internal_outargs_size()); i < n; i++) { const auto& repfield = this->_internal_outargs().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node outargs = 3 [json_name = "outargs"]; total_size += 1UL * this->_internal_outargs_size(); for (const auto& msg : this->_internal_outargs()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.funccall_); } // .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.funcexpr_); } } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CallStmt::_class_data_ = { CallStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CallStmt::GetClassData() const { return &_class_data_; } void CallStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CallStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_outargs()->MergeFrom( from._internal_outargs()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_funccall()->::pg_query::FuncCall::MergeFrom( from._internal_funccall()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_funcexpr()->::pg_query::FuncExpr::MergeFrom( from._internal_funcexpr()); } } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CallStmt::CopyFrom(const CallStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CallStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CallStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CallStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CallStmt::InternalSwap(CallStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.outargs_.InternalSwap(&other->_impl_.outargs_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CallStmt, _impl_.funcexpr_) + sizeof(CallStmt::_impl_.funcexpr_) - PROTOBUF_FIELD_OFFSET(CallStmt, _impl_.funccall_)>( reinterpret_cast(&_impl_.funccall_), reinterpret_cast(&other->_impl_.funccall_)); } ::google::protobuf::Metadata CallStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[218]); } // =================================================================== class CallContext::_Internal { public: }; CallContext::CallContext(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CallContext) } CallContext::CallContext( ::google::protobuf::Arena* arena, const CallContext& from) : CallContext(arena) { MergeFrom(from); } inline PROTOBUF_NDEBUG_INLINE CallContext::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void CallContext::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.atomic_ = {}; } CallContext::~CallContext() { // @@protoc_insertion_point(destructor:pg_query.CallContext) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CallContext::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CallContext::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CallContext) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.atomic_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CallContext::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 0, 2> CallContext::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_CallContext_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool atomic = 1 [json_name = "atomic"]; {::_pbi::TcParser::SingularVarintNoZag1(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(CallContext, _impl_.atomic_)}}, }}, {{ 65535, 65535 }}, {{ // bool atomic = 1 [json_name = "atomic"]; {PROTOBUF_FIELD_OFFSET(CallContext, _impl_.atomic_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, // no aux_entries {{ }}, }; ::uint8_t* CallContext::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CallContext) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // bool atomic = 1 [json_name = "atomic"]; if (this->_internal_atomic() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 1, this->_internal_atomic(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_atomic() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CallContext::_class_data_ = { CallContext::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CallContext::GetClassData() const { return &_class_data_; } void CallContext::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CallContext) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (from._internal_atomic() != 0) { _this->_internal_set_atomic(from._internal_atomic()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CallContext::CopyFrom(const CallContext& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CallContext) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CallContext::IsInitialized() const { return true; } ::_pbi::CachedSize* CallContext::AccessCachedSize() const { return &_impl_._cached_size_; } void CallContext::InternalSwap(CallContext* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_.atomic_, other->_impl_.atomic_); } ::google::protobuf::Metadata CallContext::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[219]); } // =================================================================== class RenameStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const RenameStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& object(const RenameStmt* msg); static void set_has_object(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::RangeVar& RenameStmt::_Internal::relation(const RenameStmt* msg) { return *msg->_impl_.relation_; } const ::pg_query::Node& RenameStmt::_Internal::object(const RenameStmt* msg) { return *msg->_impl_.object_; } RenameStmt::RenameStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RenameStmt) } inline PROTOBUF_NDEBUG_INLINE RenameStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, subname_(arena, from.subname_), newname_(arena, from.newname_) {} RenameStmt::RenameStmt( ::google::protobuf::Arena* arena, const RenameStmt& from) : ::google::protobuf::Message(arena) { RenameStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.object_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.object_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, rename_type_), reinterpret_cast(&from._impl_) + offsetof(Impl_, rename_type_), offsetof(Impl_, missing_ok_) - offsetof(Impl_, rename_type_) + sizeof(Impl_::missing_ok_)); // @@protoc_insertion_point(copy_constructor:pg_query.RenameStmt) } inline PROTOBUF_NDEBUG_INLINE RenameStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, subname_(arena), newname_(arena) {} inline void RenameStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, missing_ok_) - offsetof(Impl_, relation_) + sizeof(Impl_::missing_ok_)); } RenameStmt::~RenameStmt() { // @@protoc_insertion_point(destructor:pg_query.RenameStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RenameStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.subname_.Destroy(); _impl_.newname_.Destroy(); delete _impl_.relation_; delete _impl_.object_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RenameStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RenameStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.subname_.ClearToEmpty(); _impl_.newname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.object_ != nullptr); _impl_.object_->Clear(); } } ::memset(&_impl_.rename_type_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.missing_ok_) - reinterpret_cast(&_impl_.rename_type_)) + sizeof(_impl_.missing_ok_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RenameStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 8, 2, 50, 2> RenameStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_._has_bits_), 0, // no _extensions_ 8, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967040, // skipmap offsetof(decltype(_table_), field_entries), 8, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RenameStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool missing_ok = 8 [json_name = "missing_ok"]; {::_pbi::TcParser::SingularVarintNoZag1(), {64, 63, 0, PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.missing_ok_)}}, // .pg_query.ObjectType rename_type = 1 [json_name = "renameType"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RenameStmt, _impl_.rename_type_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.rename_type_)}}, // .pg_query.ObjectType relation_type = 2 [json_name = "relationType"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RenameStmt, _impl_.relation_type_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.relation_type_)}}, // .pg_query.RangeVar relation = 3 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {26, 0, 0, PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.relation_)}}, // .pg_query.Node object = 4 [json_name = "object"]; {::_pbi::TcParser::FastMtS1, {34, 1, 1, PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.object_)}}, // string subname = 5 [json_name = "subname"]; {::_pbi::TcParser::FastUS1, {42, 63, 0, PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.subname_)}}, // string newname = 6 [json_name = "newname"]; {::_pbi::TcParser::FastUS1, {50, 63, 0, PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.newname_)}}, // .pg_query.DropBehavior behavior = 7 [json_name = "behavior"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RenameStmt, _impl_.behavior_), 63>(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.behavior_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.ObjectType rename_type = 1 [json_name = "renameType"]; {PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.rename_type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.ObjectType relation_type = 2 [json_name = "relationType"]; {PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.relation_type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.RangeVar relation = 3 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node object = 4 [json_name = "object"]; {PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.object_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string subname = 5 [json_name = "subname"]; {PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.subname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string newname = 6 [json_name = "newname"]; {PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.newname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.DropBehavior behavior = 7 [json_name = "behavior"]; {PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.behavior_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool missing_ok = 8 [json_name = "missing_ok"]; {PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.missing_ok_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\23\0\0\0\0\7\7\0\0\0\0\0\0\0\0\0" "pg_query.RenameStmt" "subname" "newname" }}, }; ::uint8_t* RenameStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RenameStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.ObjectType rename_type = 1 [json_name = "renameType"]; if (this->_internal_rename_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_rename_type(), target); } // .pg_query.ObjectType relation_type = 2 [json_name = "relationType"]; if (this->_internal_relation_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_relation_type(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 3 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // .pg_query.Node object = 4 [json_name = "object"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::object(this), _Internal::object(this).GetCachedSize(), target, stream); } // string subname = 5 [json_name = "subname"]; if (!this->_internal_subname().empty()) { const std::string& _s = this->_internal_subname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.RenameStmt.subname"); target = stream->WriteStringMaybeAliased(5, _s, target); } // string newname = 6 [json_name = "newname"]; if (!this->_internal_newname().empty()) { const std::string& _s = this->_internal_newname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.RenameStmt.newname"); target = stream->WriteStringMaybeAliased(6, _s, target); } // .pg_query.DropBehavior behavior = 7 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 7, this->_internal_behavior(), target); } // bool missing_ok = 8 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 8, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_subname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_subname()); } // string newname = 6 [json_name = "newname"]; if (!this->_internal_newname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_newname()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.RangeVar relation = 3 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.Node object = 4 [json_name = "object"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.object_); } } // .pg_query.ObjectType rename_type = 1 [json_name = "renameType"]; if (this->_internal_rename_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_rename_type()); } // .pg_query.ObjectType relation_type = 2 [json_name = "relationType"]; if (this->_internal_relation_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_relation_type()); } // .pg_query.DropBehavior behavior = 7 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_behavior()); } // bool missing_ok = 8 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RenameStmt::_class_data_ = { RenameStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RenameStmt::GetClassData() const { return &_class_data_; } void RenameStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RenameStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_subname().empty()) { _this->_internal_set_subname(from._internal_subname()); } if (!from._internal_newname().empty()) { _this->_internal_set_newname(from._internal_newname()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_object()->::pg_query::Node::MergeFrom( from._internal_object()); } } if (from._internal_rename_type() != 0) { _this->_internal_set_rename_type(from._internal_rename_type()); } if (from._internal_relation_type() != 0) { _this->_internal_set_relation_type(from._internal_relation_type()); } if (from._internal_behavior() != 0) { _this->_internal_set_behavior(from._internal_behavior()); } if (from._internal_missing_ok() != 0) { _this->_internal_set_missing_ok(from._internal_missing_ok()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RenameStmt::CopyFrom(const RenameStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RenameStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RenameStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* RenameStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void RenameStmt::InternalSwap(RenameStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.subname_, &other->_impl_.subname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.newname_, &other->_impl_.newname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.missing_ok_) + sizeof(RenameStmt::_impl_.missing_ok_) - PROTOBUF_FIELD_OFFSET(RenameStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata RenameStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[220]); } // =================================================================== class AlterObjectDependsStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const AlterObjectDependsStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& object(const AlterObjectDependsStmt* msg); static void set_has_object(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::String& extname(const AlterObjectDependsStmt* msg); static void set_has_extname(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::RangeVar& AlterObjectDependsStmt::_Internal::relation(const AlterObjectDependsStmt* msg) { return *msg->_impl_.relation_; } const ::pg_query::Node& AlterObjectDependsStmt::_Internal::object(const AlterObjectDependsStmt* msg) { return *msg->_impl_.object_; } const ::pg_query::String& AlterObjectDependsStmt::_Internal::extname(const AlterObjectDependsStmt* msg) { return *msg->_impl_.extname_; } AlterObjectDependsStmt::AlterObjectDependsStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterObjectDependsStmt) } inline PROTOBUF_NDEBUG_INLINE AlterObjectDependsStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} AlterObjectDependsStmt::AlterObjectDependsStmt( ::google::protobuf::Arena* arena, const AlterObjectDependsStmt& from) : ::google::protobuf::Message(arena) { AlterObjectDependsStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.object_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.object_) : nullptr; _impl_.extname_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::String>(arena, *from._impl_.extname_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, object_type_), reinterpret_cast(&from._impl_) + offsetof(Impl_, object_type_), offsetof(Impl_, remove_) - offsetof(Impl_, object_type_) + sizeof(Impl_::remove_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterObjectDependsStmt) } inline PROTOBUF_NDEBUG_INLINE AlterObjectDependsStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void AlterObjectDependsStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, remove_) - offsetof(Impl_, relation_) + sizeof(Impl_::remove_)); } AlterObjectDependsStmt::~AlterObjectDependsStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterObjectDependsStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterObjectDependsStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.relation_; delete _impl_.object_; delete _impl_.extname_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterObjectDependsStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterObjectDependsStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.object_ != nullptr); _impl_.object_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.extname_ != nullptr); _impl_.extname_->Clear(); } } ::memset(&_impl_.object_type_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.remove_) - reinterpret_cast(&_impl_.object_type_)) + sizeof(_impl_.remove_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterObjectDependsStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 3, 0, 2> AlterObjectDependsStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterObjectDependsStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterObjectDependsStmt, _impl_.object_type_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, _impl_.object_type_)}}, // .pg_query.RangeVar relation = 2 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, _impl_.relation_)}}, // .pg_query.Node object = 3 [json_name = "object"]; {::_pbi::TcParser::FastMtS1, {26, 1, 1, PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, _impl_.object_)}}, // .pg_query.String extname = 4 [json_name = "extname"]; {::_pbi::TcParser::FastMtS1, {34, 2, 2, PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, _impl_.extname_)}}, // bool remove = 5 [json_name = "remove"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, _impl_.remove_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; {PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, _impl_.object_type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.RangeVar relation = 2 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node object = 3 [json_name = "object"]; {PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, _impl_.object_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.String extname = 4 [json_name = "extname"]; {PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, _impl_.extname_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool remove = 5 [json_name = "remove"]; {PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, _impl_.remove_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::String>()}, }}, {{ }}, }; ::uint8_t* AlterObjectDependsStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterObjectDependsStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; if (this->_internal_object_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_object_type(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // .pg_query.Node object = 3 [json_name = "object"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::object(this), _Internal::object(this).GetCachedSize(), target, stream); } // .pg_query.String extname = 4 [json_name = "extname"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::extname(this), _Internal::extname(this).GetCachedSize(), target, stream); } // bool remove = 5 [json_name = "remove"]; if (this->_internal_remove() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_remove(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.Node object = 3 [json_name = "object"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.object_); } // .pg_query.String extname = 4 [json_name = "extname"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.extname_); } } // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; if (this->_internal_object_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_object_type()); } // bool remove = 5 [json_name = "remove"]; if (this->_internal_remove() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterObjectDependsStmt::_class_data_ = { AlterObjectDependsStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterObjectDependsStmt::GetClassData() const { return &_class_data_; } void AlterObjectDependsStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterObjectDependsStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_object()->::pg_query::Node::MergeFrom( from._internal_object()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_extname()->::pg_query::String::MergeFrom( from._internal_extname()); } } if (from._internal_object_type() != 0) { _this->_internal_set_object_type(from._internal_object_type()); } if (from._internal_remove() != 0) { _this->_internal_set_remove(from._internal_remove()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterObjectDependsStmt::CopyFrom(const AlterObjectDependsStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterObjectDependsStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterObjectDependsStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterObjectDependsStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterObjectDependsStmt::InternalSwap(AlterObjectDependsStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, _impl_.remove_) + sizeof(AlterObjectDependsStmt::_impl_.remove_) - PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata AlterObjectDependsStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[221]); } // =================================================================== class AlterObjectSchemaStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const AlterObjectSchemaStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& object(const AlterObjectSchemaStmt* msg); static void set_has_object(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::RangeVar& AlterObjectSchemaStmt::_Internal::relation(const AlterObjectSchemaStmt* msg) { return *msg->_impl_.relation_; } const ::pg_query::Node& AlterObjectSchemaStmt::_Internal::object(const AlterObjectSchemaStmt* msg) { return *msg->_impl_.object_; } AlterObjectSchemaStmt::AlterObjectSchemaStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterObjectSchemaStmt) } inline PROTOBUF_NDEBUG_INLINE AlterObjectSchemaStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, newschema_(arena, from.newschema_) {} AlterObjectSchemaStmt::AlterObjectSchemaStmt( ::google::protobuf::Arena* arena, const AlterObjectSchemaStmt& from) : ::google::protobuf::Message(arena) { AlterObjectSchemaStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.object_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.object_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, object_type_), reinterpret_cast(&from._impl_) + offsetof(Impl_, object_type_), offsetof(Impl_, missing_ok_) - offsetof(Impl_, object_type_) + sizeof(Impl_::missing_ok_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterObjectSchemaStmt) } inline PROTOBUF_NDEBUG_INLINE AlterObjectSchemaStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, newschema_(arena) {} inline void AlterObjectSchemaStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, missing_ok_) - offsetof(Impl_, relation_) + sizeof(Impl_::missing_ok_)); } AlterObjectSchemaStmt::~AlterObjectSchemaStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterObjectSchemaStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterObjectSchemaStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.newschema_.Destroy(); delete _impl_.relation_; delete _impl_.object_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterObjectSchemaStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterObjectSchemaStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.newschema_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.object_ != nullptr); _impl_.object_->Clear(); } } ::memset(&_impl_.object_type_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.missing_ok_) - reinterpret_cast(&_impl_.object_type_)) + sizeof(_impl_.missing_ok_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterObjectSchemaStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 48, 2> AlterObjectSchemaStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterObjectSchemaStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterObjectSchemaStmt, _impl_.object_type_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, _impl_.object_type_)}}, // .pg_query.RangeVar relation = 2 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, _impl_.relation_)}}, // .pg_query.Node object = 3 [json_name = "object"]; {::_pbi::TcParser::FastMtS1, {26, 1, 1, PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, _impl_.object_)}}, // string newschema = 4 [json_name = "newschema"]; {::_pbi::TcParser::FastUS1, {34, 63, 0, PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, _impl_.newschema_)}}, // bool missing_ok = 5 [json_name = "missing_ok"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, _impl_.missing_ok_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; {PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, _impl_.object_type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.RangeVar relation = 2 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node object = 3 [json_name = "object"]; {PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, _impl_.object_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string newschema = 4 [json_name = "newschema"]; {PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, _impl_.newschema_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool missing_ok = 5 [json_name = "missing_ok"]; {PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, _impl_.missing_ok_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\36\0\0\0\11\0\0\0" "pg_query.AlterObjectSchemaStmt" "newschema" }}, }; ::uint8_t* AlterObjectSchemaStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterObjectSchemaStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; if (this->_internal_object_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_object_type(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // .pg_query.Node object = 3 [json_name = "object"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::object(this), _Internal::object(this).GetCachedSize(), target, stream); } // string newschema = 4 [json_name = "newschema"]; if (!this->_internal_newschema().empty()) { const std::string& _s = this->_internal_newschema(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterObjectSchemaStmt.newschema"); target = stream->WriteStringMaybeAliased(4, _s, target); } // bool missing_ok = 5 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_newschema().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_newschema()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.Node object = 3 [json_name = "object"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.object_); } } // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; if (this->_internal_object_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_object_type()); } // bool missing_ok = 5 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterObjectSchemaStmt::_class_data_ = { AlterObjectSchemaStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterObjectSchemaStmt::GetClassData() const { return &_class_data_; } void AlterObjectSchemaStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterObjectSchemaStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_newschema().empty()) { _this->_internal_set_newschema(from._internal_newschema()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_object()->::pg_query::Node::MergeFrom( from._internal_object()); } } if (from._internal_object_type() != 0) { _this->_internal_set_object_type(from._internal_object_type()); } if (from._internal_missing_ok() != 0) { _this->_internal_set_missing_ok(from._internal_missing_ok()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterObjectSchemaStmt::CopyFrom(const AlterObjectSchemaStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterObjectSchemaStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterObjectSchemaStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterObjectSchemaStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterObjectSchemaStmt::InternalSwap(AlterObjectSchemaStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.newschema_, &other->_impl_.newschema_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, _impl_.missing_ok_) + sizeof(AlterObjectSchemaStmt::_impl_.missing_ok_) - PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata AlterObjectSchemaStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[222]); } // =================================================================== class AlterOwnerStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterOwnerStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const AlterOwnerStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& object(const AlterOwnerStmt* msg); static void set_has_object(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::RoleSpec& newowner(const AlterOwnerStmt* msg); static void set_has_newowner(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::RangeVar& AlterOwnerStmt::_Internal::relation(const AlterOwnerStmt* msg) { return *msg->_impl_.relation_; } const ::pg_query::Node& AlterOwnerStmt::_Internal::object(const AlterOwnerStmt* msg) { return *msg->_impl_.object_; } const ::pg_query::RoleSpec& AlterOwnerStmt::_Internal::newowner(const AlterOwnerStmt* msg) { return *msg->_impl_.newowner_; } AlterOwnerStmt::AlterOwnerStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterOwnerStmt) } inline PROTOBUF_NDEBUG_INLINE AlterOwnerStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} AlterOwnerStmt::AlterOwnerStmt( ::google::protobuf::Arena* arena, const AlterOwnerStmt& from) : ::google::protobuf::Message(arena) { AlterOwnerStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.object_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.object_) : nullptr; _impl_.newowner_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::RoleSpec>(arena, *from._impl_.newowner_) : nullptr; _impl_.object_type_ = from._impl_.object_type_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterOwnerStmt) } inline PROTOBUF_NDEBUG_INLINE AlterOwnerStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void AlterOwnerStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, object_type_) - offsetof(Impl_, relation_) + sizeof(Impl_::object_type_)); } AlterOwnerStmt::~AlterOwnerStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterOwnerStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterOwnerStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.relation_; delete _impl_.object_; delete _impl_.newowner_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterOwnerStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterOwnerStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.object_ != nullptr); _impl_.object_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.newowner_ != nullptr); _impl_.newowner_->Clear(); } } _impl_.object_type_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterOwnerStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 3, 0, 2> AlterOwnerStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterOwnerStmt, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterOwnerStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; {::_pbi::TcParser::FastMtS1, {34, 2, 2, PROTOBUF_FIELD_OFFSET(AlterOwnerStmt, _impl_.newowner_)}}, // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterOwnerStmt, _impl_.object_type_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(AlterOwnerStmt, _impl_.object_type_)}}, // .pg_query.RangeVar relation = 2 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(AlterOwnerStmt, _impl_.relation_)}}, // .pg_query.Node object = 3 [json_name = "object"]; {::_pbi::TcParser::FastMtS1, {26, 1, 1, PROTOBUF_FIELD_OFFSET(AlterOwnerStmt, _impl_.object_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; {PROTOBUF_FIELD_OFFSET(AlterOwnerStmt, _impl_.object_type_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.RangeVar relation = 2 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(AlterOwnerStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node object = 3 [json_name = "object"]; {PROTOBUF_FIELD_OFFSET(AlterOwnerStmt, _impl_.object_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; {PROTOBUF_FIELD_OFFSET(AlterOwnerStmt, _impl_.newowner_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::RoleSpec>()}, }}, {{ }}, }; ::uint8_t* AlterOwnerStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterOwnerStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; if (this->_internal_object_type() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_object_type(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // .pg_query.Node object = 3 [json_name = "object"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::object(this), _Internal::object(this).GetCachedSize(), target, stream); } // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::newowner(this), _Internal::newowner(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.Node object = 3 [json_name = "object"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.object_); } // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.newowner_); } } // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; if (this->_internal_object_type() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_object_type()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterOwnerStmt::_class_data_ = { AlterOwnerStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterOwnerStmt::GetClassData() const { return &_class_data_; } void AlterOwnerStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterOwnerStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_object()->::pg_query::Node::MergeFrom( from._internal_object()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_newowner()->::pg_query::RoleSpec::MergeFrom( from._internal_newowner()); } } if (from._internal_object_type() != 0) { _this->_internal_set_object_type(from._internal_object_type()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterOwnerStmt::CopyFrom(const AlterOwnerStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterOwnerStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterOwnerStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterOwnerStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterOwnerStmt::InternalSwap(AlterOwnerStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterOwnerStmt, _impl_.object_type_) + sizeof(AlterOwnerStmt::_impl_.object_type_) - PROTOBUF_FIELD_OFFSET(AlterOwnerStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata AlterOwnerStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[223]); } // =================================================================== class AlterOperatorStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterOperatorStmt, _impl_._has_bits_); static const ::pg_query::ObjectWithArgs& opername(const AlterOperatorStmt* msg); static void set_has_opername(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::ObjectWithArgs& AlterOperatorStmt::_Internal::opername(const AlterOperatorStmt* msg) { return *msg->_impl_.opername_; } AlterOperatorStmt::AlterOperatorStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterOperatorStmt) } inline PROTOBUF_NDEBUG_INLINE AlterOperatorStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, options_{visibility, arena, from.options_} {} AlterOperatorStmt::AlterOperatorStmt( ::google::protobuf::Arena* arena, const AlterOperatorStmt& from) : ::google::protobuf::Message(arena) { AlterOperatorStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.opername_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::ObjectWithArgs>(arena, *from._impl_.opername_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.AlterOperatorStmt) } inline PROTOBUF_NDEBUG_INLINE AlterOperatorStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, options_{visibility, arena} {} inline void AlterOperatorStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.opername_ = {}; } AlterOperatorStmt::~AlterOperatorStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterOperatorStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterOperatorStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.opername_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterOperatorStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterOperatorStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.opername_ != nullptr); _impl_.opername_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterOperatorStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 2, 0, 2> AlterOperatorStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterOperatorStmt, _impl_._has_bits_), 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterOperatorStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node options = 2 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(AlterOperatorStmt, _impl_.options_)}}, // .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(AlterOperatorStmt, _impl_.opername_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; {PROTOBUF_FIELD_OFFSET(AlterOperatorStmt, _impl_.opername_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(AlterOperatorStmt, _impl_.options_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::ObjectWithArgs>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* AlterOperatorStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterOperatorStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::opername(this), _Internal::opername(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.opername_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterOperatorStmt::_class_data_ = { AlterOperatorStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterOperatorStmt::GetClassData() const { return &_class_data_; } void AlterOperatorStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterOperatorStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_opername()->::pg_query::ObjectWithArgs::MergeFrom( from._internal_opername()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterOperatorStmt::CopyFrom(const AlterOperatorStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterOperatorStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterOperatorStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterOperatorStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterOperatorStmt::InternalSwap(AlterOperatorStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.options_.InternalSwap(&other->_impl_.options_); swap(_impl_.opername_, other->_impl_.opername_); } ::google::protobuf::Metadata AlterOperatorStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[224]); } // =================================================================== class AlterTypeStmt::_Internal { public: }; AlterTypeStmt::AlterTypeStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterTypeStmt) } inline PROTOBUF_NDEBUG_INLINE AlterTypeStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : type_name_{visibility, arena, from.type_name_}, options_{visibility, arena, from.options_}, _cached_size_{0} {} AlterTypeStmt::AlterTypeStmt( ::google::protobuf::Arena* arena, const AlterTypeStmt& from) : ::google::protobuf::Message(arena) { AlterTypeStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.AlterTypeStmt) } inline PROTOBUF_NDEBUG_INLINE AlterTypeStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : type_name_{visibility, arena}, options_{visibility, arena}, _cached_size_{0} {} inline void AlterTypeStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } AlterTypeStmt::~AlterTypeStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterTypeStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterTypeStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterTypeStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterTypeStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.type_name_.Clear(); _impl_.options_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterTypeStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 2, 0, 2> AlterTypeStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterTypeStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node options = 2 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(AlterTypeStmt, _impl_.options_)}}, // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTypeStmt, _impl_.type_name_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; {PROTOBUF_FIELD_OFFSET(AlterTypeStmt, _impl_.type_name_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(AlterTypeStmt, _impl_.options_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* AlterTypeStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterTypeStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; for (unsigned i = 0, n = static_cast(this->_internal_type_name_size()); i < n; i++) { const auto& repfield = this->_internal_type_name().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_type_name()) { total_size += ::google::protobuf::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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterTypeStmt::_class_data_ = { AlterTypeStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterTypeStmt::GetClassData() const { return &_class_data_; } void AlterTypeStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterTypeStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_type_name()->MergeFrom( from._internal_type_name()); _this->_internal_mutable_options()->MergeFrom( from._internal_options()); _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterTypeStmt::CopyFrom(const AlterTypeStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterTypeStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterTypeStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterTypeStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterTypeStmt::InternalSwap(AlterTypeStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.type_name_.InternalSwap(&other->_impl_.type_name_); _impl_.options_.InternalSwap(&other->_impl_.options_); } ::google::protobuf::Metadata AlterTypeStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[225]); } // =================================================================== class RuleStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const RuleStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& where_clause(const RuleStmt* msg); static void set_has_where_clause(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::RangeVar& RuleStmt::_Internal::relation(const RuleStmt* msg) { return *msg->_impl_.relation_; } const ::pg_query::Node& RuleStmt::_Internal::where_clause(const RuleStmt* msg) { return *msg->_impl_.where_clause_; } RuleStmt::RuleStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RuleStmt) } inline PROTOBUF_NDEBUG_INLINE RuleStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, actions_{visibility, arena, from.actions_}, rulename_(arena, from.rulename_) {} RuleStmt::RuleStmt( ::google::protobuf::Arena* arena, const RuleStmt& from) : ::google::protobuf::Message(arena) { RuleStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.where_clause_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.where_clause_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, event_), reinterpret_cast(&from._impl_) + offsetof(Impl_, event_), offsetof(Impl_, replace_) - offsetof(Impl_, event_) + sizeof(Impl_::replace_)); // @@protoc_insertion_point(copy_constructor:pg_query.RuleStmt) } inline PROTOBUF_NDEBUG_INLINE RuleStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, actions_{visibility, arena}, rulename_(arena) {} inline void RuleStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, replace_) - offsetof(Impl_, relation_) + sizeof(Impl_::replace_)); } RuleStmt::~RuleStmt() { // @@protoc_insertion_point(destructor:pg_query.RuleStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RuleStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.rulename_.Destroy(); delete _impl_.relation_; delete _impl_.where_clause_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RuleStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RuleStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.actions_.Clear(); _impl_.rulename_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.where_clause_ != nullptr); _impl_.where_clause_->Clear(); } } ::memset(&_impl_.event_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.replace_) - reinterpret_cast(&_impl_.event_)) + sizeof(_impl_.replace_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RuleStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 3, 34, 2> RuleStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_._has_bits_), 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RuleStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.relation_)}}, // string rulename = 2 [json_name = "rulename"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.rulename_)}}, // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; {::_pbi::TcParser::FastMtS1, {26, 1, 1, PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.where_clause_)}}, // .pg_query.CmdType event = 4 [json_name = "event"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RuleStmt, _impl_.event_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.event_)}}, // bool instead = 5 [json_name = "instead"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.instead_)}}, // repeated .pg_query.Node actions = 6 [json_name = "actions"]; {::_pbi::TcParser::FastMtR1, {50, 63, 2, PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.actions_)}}, // bool replace = 7 [json_name = "replace"]; {::_pbi::TcParser::SingularVarintNoZag1(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.replace_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string rulename = 2 [json_name = "rulename"]; {PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.rulename_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; {PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.where_clause_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CmdType event = 4 [json_name = "event"]; {PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.event_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool instead = 5 [json_name = "instead"]; {PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.instead_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node actions = 6 [json_name = "actions"]; {PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.actions_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool replace = 7 [json_name = "replace"]; {PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.replace_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\21\0\10\0\0\0\0\0" "pg_query.RuleStmt" "rulename" }}, }; ::uint8_t* RuleStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RuleStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // string rulename = 2 [json_name = "rulename"]; if (!this->_internal_rulename().empty()) { const std::string& _s = this->_internal_rulename(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.RuleStmt.rulename"); target = stream->WriteStringMaybeAliased(2, _s, target); } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::where_clause(this), _Internal::where_clause(this).GetCachedSize(), target, stream); } // .pg_query.CmdType event = 4 [json_name = "event"]; if (this->_internal_event() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 4, this->_internal_event(), target); } // bool instead = 5 [json_name = "instead"]; if (this->_internal_instead() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_instead(), target); } // repeated .pg_query.Node actions = 6 [json_name = "actions"]; for (unsigned i = 0, n = static_cast(this->_internal_actions_size()); i < n; i++) { const auto& repfield = this->_internal_actions().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream); } // bool replace = 7 [json_name = "replace"]; if (this->_internal_replace() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 7, this->_internal_replace(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_actions()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string rulename = 2 [json_name = "rulename"]; if (!this->_internal_rulename().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_rulename()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.where_clause_); } } // .pg_query.CmdType event = 4 [json_name = "event"]; if (this->_internal_event() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_event()); } // bool instead = 5 [json_name = "instead"]; if (this->_internal_instead() != 0) { total_size += 2; } // bool replace = 7 [json_name = "replace"]; if (this->_internal_replace() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RuleStmt::_class_data_ = { RuleStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RuleStmt::GetClassData() const { return &_class_data_; } void RuleStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RuleStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_actions()->MergeFrom( from._internal_actions()); if (!from._internal_rulename().empty()) { _this->_internal_set_rulename(from._internal_rulename()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_where_clause()->::pg_query::Node::MergeFrom( from._internal_where_clause()); } } if (from._internal_event() != 0) { _this->_internal_set_event(from._internal_event()); } if (from._internal_instead() != 0) { _this->_internal_set_instead(from._internal_instead()); } if (from._internal_replace() != 0) { _this->_internal_set_replace(from._internal_replace()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RuleStmt::CopyFrom(const RuleStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RuleStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RuleStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* RuleStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void RuleStmt::InternalSwap(RuleStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.actions_.InternalSwap(&other->_impl_.actions_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.rulename_, &other->_impl_.rulename_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.replace_) + sizeof(RuleStmt::_impl_.replace_) - PROTOBUF_FIELD_OFFSET(RuleStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata RuleStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[226]); } // =================================================================== class NotifyStmt::_Internal { public: }; NotifyStmt::NotifyStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.NotifyStmt) } inline PROTOBUF_NDEBUG_INLINE NotifyStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : conditionname_(arena, from.conditionname_), payload_(arena, from.payload_), _cached_size_{0} {} NotifyStmt::NotifyStmt( ::google::protobuf::Arena* arena, const NotifyStmt& from) : ::google::protobuf::Message(arena) { NotifyStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.NotifyStmt) } inline PROTOBUF_NDEBUG_INLINE NotifyStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : conditionname_(arena), payload_(arena), _cached_size_{0} {} inline void NotifyStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } NotifyStmt::~NotifyStmt() { // @@protoc_insertion_point(destructor:pg_query.NotifyStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void NotifyStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.conditionname_.Destroy(); _impl_.payload_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void NotifyStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.NotifyStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.conditionname_.ClearToEmpty(); _impl_.payload_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* NotifyStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 0, 48, 2> NotifyStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_NotifyStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string payload = 2 [json_name = "payload"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(NotifyStmt, _impl_.payload_)}}, // string conditionname = 1 [json_name = "conditionname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(NotifyStmt, _impl_.conditionname_)}}, }}, {{ 65535, 65535 }}, {{ // string conditionname = 1 [json_name = "conditionname"]; {PROTOBUF_FIELD_OFFSET(NotifyStmt, _impl_.conditionname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string payload = 2 [json_name = "payload"]; {PROTOBUF_FIELD_OFFSET(NotifyStmt, _impl_.payload_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, // no aux_entries {{ "\23\15\7\0\0\0\0\0" "pg_query.NotifyStmt" "conditionname" "payload" }}, }; ::uint8_t* NotifyStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.NotifyStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string conditionname = 1 [json_name = "conditionname"]; if (!this->_internal_conditionname().empty()) { const std::string& _s = this->_internal_conditionname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.NotifyStmt.conditionname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // string payload = 2 [json_name = "payload"]; if (!this->_internal_payload().empty()) { const std::string& _s = this->_internal_payload(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.NotifyStmt.payload"); target = stream->WriteStringMaybeAliased(2, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_conditionname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_conditionname()); } // string payload = 2 [json_name = "payload"]; if (!this->_internal_payload().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_payload()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData NotifyStmt::_class_data_ = { NotifyStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* NotifyStmt::GetClassData() const { return &_class_data_; } void NotifyStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.NotifyStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_conditionname().empty()) { _this->_internal_set_conditionname(from._internal_conditionname()); } if (!from._internal_payload().empty()) { _this->_internal_set_payload(from._internal_payload()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void NotifyStmt::CopyFrom(const NotifyStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.NotifyStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool NotifyStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* NotifyStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void NotifyStmt::InternalSwap(NotifyStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.conditionname_, &other->_impl_.conditionname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.payload_, &other->_impl_.payload_, arena); } ::google::protobuf::Metadata NotifyStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[227]); } // =================================================================== class ListenStmt::_Internal { public: }; ListenStmt::ListenStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ListenStmt) } inline PROTOBUF_NDEBUG_INLINE ListenStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : conditionname_(arena, from.conditionname_), _cached_size_{0} {} ListenStmt::ListenStmt( ::google::protobuf::Arena* arena, const ListenStmt& from) : ::google::protobuf::Message(arena) { ListenStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.ListenStmt) } inline PROTOBUF_NDEBUG_INLINE ListenStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : conditionname_(arena), _cached_size_{0} {} inline void ListenStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } ListenStmt::~ListenStmt() { // @@protoc_insertion_point(destructor:pg_query.ListenStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ListenStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.conditionname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void ListenStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ListenStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.conditionname_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ListenStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 41, 2> ListenStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_ListenStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string conditionname = 1 [json_name = "conditionname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(ListenStmt, _impl_.conditionname_)}}, }}, {{ 65535, 65535 }}, {{ // string conditionname = 1 [json_name = "conditionname"]; {PROTOBUF_FIELD_OFFSET(ListenStmt, _impl_.conditionname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, // no aux_entries {{ "\23\15\0\0\0\0\0\0" "pg_query.ListenStmt" "conditionname" }}, }; ::uint8_t* ListenStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ListenStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string conditionname = 1 [json_name = "conditionname"]; if (!this->_internal_conditionname().empty()) { const std::string& _s = this->_internal_conditionname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ListenStmt.conditionname"); target = stream->WriteStringMaybeAliased(1, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_conditionname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_conditionname()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ListenStmt::_class_data_ = { ListenStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ListenStmt::GetClassData() const { return &_class_data_; } void ListenStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ListenStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_conditionname().empty()) { _this->_internal_set_conditionname(from._internal_conditionname()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ListenStmt::CopyFrom(const ListenStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ListenStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ListenStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* ListenStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void ListenStmt::InternalSwap(ListenStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.conditionname_, &other->_impl_.conditionname_, arena); } ::google::protobuf::Metadata ListenStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[228]); } // =================================================================== class UnlistenStmt::_Internal { public: }; UnlistenStmt::UnlistenStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.UnlistenStmt) } inline PROTOBUF_NDEBUG_INLINE UnlistenStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : conditionname_(arena, from.conditionname_), _cached_size_{0} {} UnlistenStmt::UnlistenStmt( ::google::protobuf::Arena* arena, const UnlistenStmt& from) : ::google::protobuf::Message(arena) { UnlistenStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.UnlistenStmt) } inline PROTOBUF_NDEBUG_INLINE UnlistenStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : conditionname_(arena), _cached_size_{0} {} inline void UnlistenStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } UnlistenStmt::~UnlistenStmt() { // @@protoc_insertion_point(destructor:pg_query.UnlistenStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void UnlistenStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.conditionname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void UnlistenStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.UnlistenStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.conditionname_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* UnlistenStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 43, 2> UnlistenStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_UnlistenStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string conditionname = 1 [json_name = "conditionname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(UnlistenStmt, _impl_.conditionname_)}}, }}, {{ 65535, 65535 }}, {{ // string conditionname = 1 [json_name = "conditionname"]; {PROTOBUF_FIELD_OFFSET(UnlistenStmt, _impl_.conditionname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, // no aux_entries {{ "\25\15\0\0\0\0\0\0" "pg_query.UnlistenStmt" "conditionname" }}, }; ::uint8_t* UnlistenStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.UnlistenStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string conditionname = 1 [json_name = "conditionname"]; if (!this->_internal_conditionname().empty()) { const std::string& _s = this->_internal_conditionname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.UnlistenStmt.conditionname"); target = stream->WriteStringMaybeAliased(1, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_conditionname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_conditionname()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData UnlistenStmt::_class_data_ = { UnlistenStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* UnlistenStmt::GetClassData() const { return &_class_data_; } void UnlistenStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.UnlistenStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_conditionname().empty()) { _this->_internal_set_conditionname(from._internal_conditionname()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void UnlistenStmt::CopyFrom(const UnlistenStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.UnlistenStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool UnlistenStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* UnlistenStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void UnlistenStmt::InternalSwap(UnlistenStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.conditionname_, &other->_impl_.conditionname_, arena); } ::google::protobuf::Metadata UnlistenStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[229]); } // =================================================================== class TransactionStmt::_Internal { public: }; TransactionStmt::TransactionStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TransactionStmt) } inline PROTOBUF_NDEBUG_INLINE TransactionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : options_{visibility, arena, from.options_}, savepoint_name_(arena, from.savepoint_name_), gid_(arena, from.gid_), _cached_size_{0} {} TransactionStmt::TransactionStmt( ::google::protobuf::Arena* arena, const TransactionStmt& from) : ::google::protobuf::Message(arena) { TransactionStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, kind_), reinterpret_cast(&from._impl_) + offsetof(Impl_, kind_), offsetof(Impl_, location_) - offsetof(Impl_, kind_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.TransactionStmt) } inline PROTOBUF_NDEBUG_INLINE TransactionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : options_{visibility, arena}, savepoint_name_(arena), gid_(arena), _cached_size_{0} {} inline void TransactionStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, kind_), 0, offsetof(Impl_, location_) - offsetof(Impl_, kind_) + sizeof(Impl_::location_)); } TransactionStmt::~TransactionStmt() { // @@protoc_insertion_point(destructor:pg_query.TransactionStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void TransactionStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.savepoint_name_.Destroy(); _impl_.gid_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void TransactionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TransactionStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.savepoint_name_.ClearToEmpty(); _impl_.gid_.ClearToEmpty(); ::memset(&_impl_.kind_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.kind_)) + sizeof(_impl_.location_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* TransactionStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 1, 50, 2> TransactionStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_TransactionStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.TransactionStmtKind kind = 1 [json_name = "kind"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TransactionStmt, _impl_.kind_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(TransactionStmt, _impl_.kind_)}}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(TransactionStmt, _impl_.options_)}}, // string savepoint_name = 3 [json_name = "savepoint_name"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(TransactionStmt, _impl_.savepoint_name_)}}, // string gid = 4 [json_name = "gid"]; {::_pbi::TcParser::FastUS1, {34, 63, 0, PROTOBUF_FIELD_OFFSET(TransactionStmt, _impl_.gid_)}}, // bool chain = 5 [json_name = "chain"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(TransactionStmt, _impl_.chain_)}}, // int32 location = 6 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TransactionStmt, _impl_.location_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(TransactionStmt, _impl_.location_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.TransactionStmtKind kind = 1 [json_name = "kind"]; {PROTOBUF_FIELD_OFFSET(TransactionStmt, _impl_.kind_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(TransactionStmt, _impl_.options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string savepoint_name = 3 [json_name = "savepoint_name"]; {PROTOBUF_FIELD_OFFSET(TransactionStmt, _impl_.savepoint_name_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string gid = 4 [json_name = "gid"]; {PROTOBUF_FIELD_OFFSET(TransactionStmt, _impl_.gid_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool chain = 5 [json_name = "chain"]; {PROTOBUF_FIELD_OFFSET(TransactionStmt, _impl_.chain_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 6 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(TransactionStmt, _impl_.location_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\30\0\0\16\3\0\0\0" "pg_query.TransactionStmt" "savepoint_name" "gid" }}, }; ::uint8_t* TransactionStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TransactionStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.TransactionStmtKind kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // string savepoint_name = 3 [json_name = "savepoint_name"]; if (!this->_internal_savepoint_name().empty()) { const std::string& _s = this->_internal_savepoint_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.TransactionStmt.savepoint_name"); target = stream->WriteStringMaybeAliased(3, _s, target); } // string gid = 4 [json_name = "gid"]; if (!this->_internal_gid().empty()) { const std::string& _s = this->_internal_gid(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.TransactionStmt.gid"); target = stream->WriteStringMaybeAliased(4, _s, target); } // bool chain = 5 [json_name = "chain"]; if (this->_internal_chain() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_chain(), target); } // int32 location = 6 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<6>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string savepoint_name = 3 [json_name = "savepoint_name"]; if (!this->_internal_savepoint_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_savepoint_name()); } // string gid = 4 [json_name = "gid"]; if (!this->_internal_gid().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_gid()); } // .pg_query.TransactionStmtKind kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_kind()); } // bool chain = 5 [json_name = "chain"]; if (this->_internal_chain() != 0) { total_size += 2; } // int32 location = 6 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData TransactionStmt::_class_data_ = { TransactionStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* TransactionStmt::GetClassData() const { return &_class_data_; } void TransactionStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TransactionStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_savepoint_name().empty()) { _this->_internal_set_savepoint_name(from._internal_savepoint_name()); } if (!from._internal_gid().empty()) { _this->_internal_set_gid(from._internal_gid()); } if (from._internal_kind() != 0) { _this->_internal_set_kind(from._internal_kind()); } if (from._internal_chain() != 0) { _this->_internal_set_chain(from._internal_chain()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void TransactionStmt::CopyFrom(const TransactionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TransactionStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool TransactionStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* TransactionStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void TransactionStmt::InternalSwap(TransactionStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.savepoint_name_, &other->_impl_.savepoint_name_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.gid_, &other->_impl_.gid_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(TransactionStmt, _impl_.location_) + sizeof(TransactionStmt::_impl_.location_) - PROTOBUF_FIELD_OFFSET(TransactionStmt, _impl_.kind_)>( reinterpret_cast(&_impl_.kind_), reinterpret_cast(&other->_impl_.kind_)); } ::google::protobuf::Metadata TransactionStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[230]); } // =================================================================== class CompositeTypeStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CompositeTypeStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& typevar(const CompositeTypeStmt* msg); static void set_has_typevar(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RangeVar& CompositeTypeStmt::_Internal::typevar(const CompositeTypeStmt* msg) { return *msg->_impl_.typevar_; } CompositeTypeStmt::CompositeTypeStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CompositeTypeStmt) } inline PROTOBUF_NDEBUG_INLINE CompositeTypeStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, coldeflist_{visibility, arena, from.coldeflist_} {} CompositeTypeStmt::CompositeTypeStmt( ::google::protobuf::Arena* arena, const CompositeTypeStmt& from) : ::google::protobuf::Message(arena) { CompositeTypeStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.typevar_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.typevar_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.CompositeTypeStmt) } inline PROTOBUF_NDEBUG_INLINE CompositeTypeStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, coldeflist_{visibility, arena} {} inline void CompositeTypeStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.typevar_ = {}; } CompositeTypeStmt::~CompositeTypeStmt() { // @@protoc_insertion_point(destructor:pg_query.CompositeTypeStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CompositeTypeStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.typevar_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CompositeTypeStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CompositeTypeStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.coldeflist_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.typevar_ != nullptr); _impl_.typevar_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CompositeTypeStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 2, 0, 2> CompositeTypeStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CompositeTypeStmt, _impl_._has_bits_), 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CompositeTypeStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node coldeflist = 2 [json_name = "coldeflist"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(CompositeTypeStmt, _impl_.coldeflist_)}}, // .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CompositeTypeStmt, _impl_.typevar_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; {PROTOBUF_FIELD_OFFSET(CompositeTypeStmt, _impl_.typevar_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node coldeflist = 2 [json_name = "coldeflist"]; {PROTOBUF_FIELD_OFFSET(CompositeTypeStmt, _impl_.coldeflist_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CompositeTypeStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CompositeTypeStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::typevar(this), _Internal::typevar(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node coldeflist = 2 [json_name = "coldeflist"]; for (unsigned i = 0, n = static_cast(this->_internal_coldeflist_size()); i < n; i++) { const auto& repfield = this->_internal_coldeflist().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_coldeflist()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.typevar_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CompositeTypeStmt::_class_data_ = { CompositeTypeStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CompositeTypeStmt::GetClassData() const { return &_class_data_; } void CompositeTypeStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CompositeTypeStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_coldeflist()->MergeFrom( from._internal_coldeflist()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_typevar()->::pg_query::RangeVar::MergeFrom( from._internal_typevar()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CompositeTypeStmt::CopyFrom(const CompositeTypeStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CompositeTypeStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CompositeTypeStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CompositeTypeStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CompositeTypeStmt::InternalSwap(CompositeTypeStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.coldeflist_.InternalSwap(&other->_impl_.coldeflist_); swap(_impl_.typevar_, other->_impl_.typevar_); } ::google::protobuf::Metadata CompositeTypeStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[231]); } // =================================================================== class CreateEnumStmt::_Internal { public: }; CreateEnumStmt::CreateEnumStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateEnumStmt) } inline PROTOBUF_NDEBUG_INLINE CreateEnumStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : type_name_{visibility, arena, from.type_name_}, vals_{visibility, arena, from.vals_}, _cached_size_{0} {} CreateEnumStmt::CreateEnumStmt( ::google::protobuf::Arena* arena, const CreateEnumStmt& from) : ::google::protobuf::Message(arena) { CreateEnumStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.CreateEnumStmt) } inline PROTOBUF_NDEBUG_INLINE CreateEnumStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : type_name_{visibility, arena}, vals_{visibility, arena}, _cached_size_{0} {} inline void CreateEnumStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } CreateEnumStmt::~CreateEnumStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateEnumStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateEnumStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateEnumStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateEnumStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.type_name_.Clear(); _impl_.vals_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateEnumStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 2, 0, 2> CreateEnumStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateEnumStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node vals = 2 [json_name = "vals"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(CreateEnumStmt, _impl_.vals_)}}, // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateEnumStmt, _impl_.type_name_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; {PROTOBUF_FIELD_OFFSET(CreateEnumStmt, _impl_.type_name_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node vals = 2 [json_name = "vals"]; {PROTOBUF_FIELD_OFFSET(CreateEnumStmt, _impl_.vals_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CreateEnumStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateEnumStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; for (unsigned i = 0, n = static_cast(this->_internal_type_name_size()); i < n; i++) { const auto& repfield = this->_internal_type_name().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node vals = 2 [json_name = "vals"]; for (unsigned i = 0, n = static_cast(this->_internal_vals_size()); i < n; i++) { const auto& repfield = this->_internal_vals().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_type_name()) { total_size += ::google::protobuf::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->_internal_vals()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateEnumStmt::_class_data_ = { CreateEnumStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateEnumStmt::GetClassData() const { return &_class_data_; } void CreateEnumStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateEnumStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_type_name()->MergeFrom( from._internal_type_name()); _this->_internal_mutable_vals()->MergeFrom( from._internal_vals()); _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateEnumStmt::CopyFrom(const CreateEnumStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateEnumStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateEnumStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateEnumStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateEnumStmt::InternalSwap(CreateEnumStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.type_name_.InternalSwap(&other->_impl_.type_name_); _impl_.vals_.InternalSwap(&other->_impl_.vals_); } ::google::protobuf::Metadata CreateEnumStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[232]); } // =================================================================== class CreateRangeStmt::_Internal { public: }; CreateRangeStmt::CreateRangeStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateRangeStmt) } inline PROTOBUF_NDEBUG_INLINE CreateRangeStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : type_name_{visibility, arena, from.type_name_}, params_{visibility, arena, from.params_}, _cached_size_{0} {} CreateRangeStmt::CreateRangeStmt( ::google::protobuf::Arena* arena, const CreateRangeStmt& from) : ::google::protobuf::Message(arena) { CreateRangeStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.CreateRangeStmt) } inline PROTOBUF_NDEBUG_INLINE CreateRangeStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : type_name_{visibility, arena}, params_{visibility, arena}, _cached_size_{0} {} inline void CreateRangeStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } CreateRangeStmt::~CreateRangeStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateRangeStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateRangeStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateRangeStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateRangeStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.type_name_.Clear(); _impl_.params_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateRangeStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 2, 0, 2> CreateRangeStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateRangeStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node params = 2 [json_name = "params"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(CreateRangeStmt, _impl_.params_)}}, // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateRangeStmt, _impl_.type_name_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; {PROTOBUF_FIELD_OFFSET(CreateRangeStmt, _impl_.type_name_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node params = 2 [json_name = "params"]; {PROTOBUF_FIELD_OFFSET(CreateRangeStmt, _impl_.params_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* CreateRangeStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateRangeStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; for (unsigned i = 0, n = static_cast(this->_internal_type_name_size()); i < n; i++) { const auto& repfield = this->_internal_type_name().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node params = 2 [json_name = "params"]; for (unsigned i = 0, n = static_cast(this->_internal_params_size()); i < n; i++) { const auto& repfield = this->_internal_params().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_type_name()) { total_size += ::google::protobuf::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->_internal_params()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateRangeStmt::_class_data_ = { CreateRangeStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateRangeStmt::GetClassData() const { return &_class_data_; } void CreateRangeStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateRangeStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_type_name()->MergeFrom( from._internal_type_name()); _this->_internal_mutable_params()->MergeFrom( from._internal_params()); _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateRangeStmt::CopyFrom(const CreateRangeStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateRangeStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateRangeStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateRangeStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateRangeStmt::InternalSwap(CreateRangeStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.type_name_.InternalSwap(&other->_impl_.type_name_); _impl_.params_.InternalSwap(&other->_impl_.params_); } ::google::protobuf::Metadata CreateRangeStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[233]); } // =================================================================== class AlterEnumStmt::_Internal { public: }; AlterEnumStmt::AlterEnumStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterEnumStmt) } inline PROTOBUF_NDEBUG_INLINE AlterEnumStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : type_name_{visibility, arena, from.type_name_}, old_val_(arena, from.old_val_), new_val_(arena, from.new_val_), new_val_neighbor_(arena, from.new_val_neighbor_), _cached_size_{0} {} AlterEnumStmt::AlterEnumStmt( ::google::protobuf::Arena* arena, const AlterEnumStmt& from) : ::google::protobuf::Message(arena) { AlterEnumStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, new_val_is_after_), reinterpret_cast(&from._impl_) + offsetof(Impl_, new_val_is_after_), offsetof(Impl_, skip_if_new_val_exists_) - offsetof(Impl_, new_val_is_after_) + sizeof(Impl_::skip_if_new_val_exists_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterEnumStmt) } inline PROTOBUF_NDEBUG_INLINE AlterEnumStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : type_name_{visibility, arena}, old_val_(arena), new_val_(arena), new_val_neighbor_(arena), _cached_size_{0} {} inline void AlterEnumStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, new_val_is_after_), 0, offsetof(Impl_, skip_if_new_val_exists_) - offsetof(Impl_, new_val_is_after_) + sizeof(Impl_::skip_if_new_val_exists_)); } AlterEnumStmt::~AlterEnumStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterEnumStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterEnumStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.old_val_.Destroy(); _impl_.new_val_.Destroy(); _impl_.new_val_neighbor_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterEnumStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterEnumStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.type_name_.Clear(); _impl_.old_val_.ClearToEmpty(); _impl_.new_val_.ClearToEmpty(); _impl_.new_val_neighbor_.ClearToEmpty(); ::memset(&_impl_.new_val_is_after_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.skip_if_new_val_exists_) - reinterpret_cast(&_impl_.new_val_is_after_)) + sizeof(_impl_.skip_if_new_val_exists_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterEnumStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 1, 61, 2> AlterEnumStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterEnumStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterEnumStmt, _impl_.type_name_)}}, // string old_val = 2 [json_name = "oldVal"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterEnumStmt, _impl_.old_val_)}}, // string new_val = 3 [json_name = "newVal"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(AlterEnumStmt, _impl_.new_val_)}}, // string new_val_neighbor = 4 [json_name = "newValNeighbor"]; {::_pbi::TcParser::FastUS1, {34, 63, 0, PROTOBUF_FIELD_OFFSET(AlterEnumStmt, _impl_.new_val_neighbor_)}}, // bool new_val_is_after = 5 [json_name = "newValIsAfter"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(AlterEnumStmt, _impl_.new_val_is_after_)}}, // bool skip_if_new_val_exists = 6 [json_name = "skipIfNewValExists"]; {::_pbi::TcParser::SingularVarintNoZag1(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(AlterEnumStmt, _impl_.skip_if_new_val_exists_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; {PROTOBUF_FIELD_OFFSET(AlterEnumStmt, _impl_.type_name_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string old_val = 2 [json_name = "oldVal"]; {PROTOBUF_FIELD_OFFSET(AlterEnumStmt, _impl_.old_val_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string new_val = 3 [json_name = "newVal"]; {PROTOBUF_FIELD_OFFSET(AlterEnumStmt, _impl_.new_val_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string new_val_neighbor = 4 [json_name = "newValNeighbor"]; {PROTOBUF_FIELD_OFFSET(AlterEnumStmt, _impl_.new_val_neighbor_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool new_val_is_after = 5 [json_name = "newValIsAfter"]; {PROTOBUF_FIELD_OFFSET(AlterEnumStmt, _impl_.new_val_is_after_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool skip_if_new_val_exists = 6 [json_name = "skipIfNewValExists"]; {PROTOBUF_FIELD_OFFSET(AlterEnumStmt, _impl_.skip_if_new_val_exists_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\26\0\7\7\20\0\0\0" "pg_query.AlterEnumStmt" "old_val" "new_val" "new_val_neighbor" }}, }; ::uint8_t* AlterEnumStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterEnumStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; for (unsigned i = 0, n = static_cast(this->_internal_type_name_size()); i < n; i++) { const auto& repfield = this->_internal_type_name().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // string old_val = 2 [json_name = "oldVal"]; if (!this->_internal_old_val().empty()) { const std::string& _s = this->_internal_old_val(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterEnumStmt.old_val"); target = stream->WriteStringMaybeAliased(2, _s, target); } // string new_val = 3 [json_name = "newVal"]; if (!this->_internal_new_val().empty()) { const std::string& _s = this->_internal_new_val(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterEnumStmt.new_val"); target = stream->WriteStringMaybeAliased(3, _s, target); } // string new_val_neighbor = 4 [json_name = "newValNeighbor"]; if (!this->_internal_new_val_neighbor().empty()) { const std::string& _s = this->_internal_new_val_neighbor(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterEnumStmt.new_val_neighbor"); target = stream->WriteStringMaybeAliased(4, _s, target); } // bool new_val_is_after = 5 [json_name = "newValIsAfter"]; if (this->_internal_new_val_is_after() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_new_val_is_after(), target); } // bool skip_if_new_val_exists = 6 [json_name = "skipIfNewValExists"]; if (this->_internal_skip_if_new_val_exists() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 6, this->_internal_skip_if_new_val_exists(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_type_name()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string old_val = 2 [json_name = "oldVal"]; if (!this->_internal_old_val().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_old_val()); } // string new_val = 3 [json_name = "newVal"]; if (!this->_internal_new_val().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_new_val()); } // string new_val_neighbor = 4 [json_name = "newValNeighbor"]; if (!this->_internal_new_val_neighbor().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_new_val_neighbor()); } // bool new_val_is_after = 5 [json_name = "newValIsAfter"]; if (this->_internal_new_val_is_after() != 0) { total_size += 2; } // bool skip_if_new_val_exists = 6 [json_name = "skipIfNewValExists"]; if (this->_internal_skip_if_new_val_exists() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterEnumStmt::_class_data_ = { AlterEnumStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterEnumStmt::GetClassData() const { return &_class_data_; } void AlterEnumStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterEnumStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_type_name()->MergeFrom( from._internal_type_name()); if (!from._internal_old_val().empty()) { _this->_internal_set_old_val(from._internal_old_val()); } if (!from._internal_new_val().empty()) { _this->_internal_set_new_val(from._internal_new_val()); } if (!from._internal_new_val_neighbor().empty()) { _this->_internal_set_new_val_neighbor(from._internal_new_val_neighbor()); } if (from._internal_new_val_is_after() != 0) { _this->_internal_set_new_val_is_after(from._internal_new_val_is_after()); } if (from._internal_skip_if_new_val_exists() != 0) { _this->_internal_set_skip_if_new_val_exists(from._internal_skip_if_new_val_exists()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterEnumStmt::CopyFrom(const AlterEnumStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterEnumStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterEnumStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterEnumStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterEnumStmt::InternalSwap(AlterEnumStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.type_name_.InternalSwap(&other->_impl_.type_name_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.old_val_, &other->_impl_.old_val_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.new_val_, &other->_impl_.new_val_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.new_val_neighbor_, &other->_impl_.new_val_neighbor_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterEnumStmt, _impl_.skip_if_new_val_exists_) + sizeof(AlterEnumStmt::_impl_.skip_if_new_val_exists_) - PROTOBUF_FIELD_OFFSET(AlterEnumStmt, _impl_.new_val_is_after_)>( reinterpret_cast(&_impl_.new_val_is_after_), reinterpret_cast(&other->_impl_.new_val_is_after_)); } ::google::protobuf::Metadata AlterEnumStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[234]); } // =================================================================== class ViewStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& view(const ViewStmt* msg); static void set_has_view(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& query(const ViewStmt* msg); static void set_has_query(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::RangeVar& ViewStmt::_Internal::view(const ViewStmt* msg) { return *msg->_impl_.view_; } const ::pg_query::Node& ViewStmt::_Internal::query(const ViewStmt* msg) { return *msg->_impl_.query_; } ViewStmt::ViewStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ViewStmt) } inline PROTOBUF_NDEBUG_INLINE ViewStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, aliases_{visibility, arena, from.aliases_}, options_{visibility, arena, from.options_} {} ViewStmt::ViewStmt( ::google::protobuf::Arena* arena, const ViewStmt& from) : ::google::protobuf::Message(arena) { ViewStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.view_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.view_) : nullptr; _impl_.query_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.query_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, replace_), reinterpret_cast(&from._impl_) + offsetof(Impl_, replace_), offsetof(Impl_, with_check_option_) - offsetof(Impl_, replace_) + sizeof(Impl_::with_check_option_)); // @@protoc_insertion_point(copy_constructor:pg_query.ViewStmt) } inline PROTOBUF_NDEBUG_INLINE ViewStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, aliases_{visibility, arena}, options_{visibility, arena} {} inline void ViewStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, view_), 0, offsetof(Impl_, with_check_option_) - offsetof(Impl_, view_) + sizeof(Impl_::with_check_option_)); } ViewStmt::~ViewStmt() { // @@protoc_insertion_point(destructor:pg_query.ViewStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ViewStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.view_; delete _impl_.query_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void ViewStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ViewStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.aliases_.Clear(); _impl_.options_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.view_ != nullptr); _impl_.view_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.query_ != nullptr); _impl_.query_->Clear(); } } ::memset(&_impl_.replace_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.with_check_option_) - reinterpret_cast(&_impl_.replace_)) + sizeof(_impl_.with_check_option_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ViewStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 6, 4, 0, 2> ViewStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_._has_bits_), 0, // no _extensions_ 6, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967232, // skipmap offsetof(decltype(_table_), field_entries), 6, // num_field_entries 4, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ViewStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RangeVar view = 1 [json_name = "view"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_.view_)}}, // repeated .pg_query.Node aliases = 2 [json_name = "aliases"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_.aliases_)}}, // .pg_query.Node query = 3 [json_name = "query"]; {::_pbi::TcParser::FastMtS1, {26, 1, 2, PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_.query_)}}, // bool replace = 4 [json_name = "replace"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_.replace_)}}, // repeated .pg_query.Node options = 5 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {42, 63, 3, PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_.options_)}}, // .pg_query.ViewCheckOption with_check_option = 6 [json_name = "withCheckOption"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ViewStmt, _impl_.with_check_option_), 63>(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_.with_check_option_)}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar view = 1 [json_name = "view"]; {PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_.view_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node aliases = 2 [json_name = "aliases"]; {PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_.aliases_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node query = 3 [json_name = "query"]; {PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_.query_), _Internal::kHasBitsOffset + 1, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // bool replace = 4 [json_name = "replace"]; {PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_.replace_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node options = 5 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_.options_), -1, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ViewCheckOption with_check_option = 6 [json_name = "withCheckOption"]; {PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_.with_check_option_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* ViewStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ViewStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar view = 1 [json_name = "view"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::view(this), _Internal::view(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node aliases = 2 [json_name = "aliases"]; for (unsigned i = 0, n = static_cast(this->_internal_aliases_size()); i < n; i++) { const auto& repfield = this->_internal_aliases().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.Node query = 3 [json_name = "query"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::query(this), _Internal::query(this).GetCachedSize(), target, stream); } // bool replace = 4 [json_name = "replace"]; if (this->_internal_replace() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_replace(), target); } // repeated .pg_query.Node options = 5 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.ViewCheckOption with_check_option = 6 [json_name = "withCheckOption"]; if (this->_internal_with_check_option() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 6, this->_internal_with_check_option(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_aliases()) { total_size += ::google::protobuf::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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.RangeVar view = 1 [json_name = "view"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.view_); } // .pg_query.Node query = 3 [json_name = "query"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.query_); } } // bool replace = 4 [json_name = "replace"]; if (this->_internal_replace() != 0) { total_size += 2; } // .pg_query.ViewCheckOption with_check_option = 6 [json_name = "withCheckOption"]; if (this->_internal_with_check_option() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_with_check_option()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ViewStmt::_class_data_ = { ViewStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ViewStmt::GetClassData() const { return &_class_data_; } void ViewStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ViewStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_aliases()->MergeFrom( from._internal_aliases()); _this->_internal_mutable_options()->MergeFrom( from._internal_options()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_view()->::pg_query::RangeVar::MergeFrom( from._internal_view()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_query()->::pg_query::Node::MergeFrom( from._internal_query()); } } if (from._internal_replace() != 0) { _this->_internal_set_replace(from._internal_replace()); } if (from._internal_with_check_option() != 0) { _this->_internal_set_with_check_option(from._internal_with_check_option()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ViewStmt::CopyFrom(const ViewStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ViewStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ViewStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* ViewStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void ViewStmt::InternalSwap(ViewStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.aliases_.InternalSwap(&other->_impl_.aliases_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_.with_check_option_) + sizeof(ViewStmt::_impl_.with_check_option_) - PROTOBUF_FIELD_OFFSET(ViewStmt, _impl_.view_)>( reinterpret_cast(&_impl_.view_), reinterpret_cast(&other->_impl_.view_)); } ::google::protobuf::Metadata ViewStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[235]); } // =================================================================== class LoadStmt::_Internal { public: }; LoadStmt::LoadStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.LoadStmt) } inline PROTOBUF_NDEBUG_INLINE LoadStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : filename_(arena, from.filename_), _cached_size_{0} {} LoadStmt::LoadStmt( ::google::protobuf::Arena* arena, const LoadStmt& from) : ::google::protobuf::Message(arena) { LoadStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.LoadStmt) } inline PROTOBUF_NDEBUG_INLINE LoadStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : filename_(arena), _cached_size_{0} {} inline void LoadStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } LoadStmt::~LoadStmt() { // @@protoc_insertion_point(destructor:pg_query.LoadStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void LoadStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.filename_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void LoadStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.LoadStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.filename_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* LoadStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 34, 2> LoadStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_LoadStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string filename = 1 [json_name = "filename"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(LoadStmt, _impl_.filename_)}}, }}, {{ 65535, 65535 }}, {{ // string filename = 1 [json_name = "filename"]; {PROTOBUF_FIELD_OFFSET(LoadStmt, _impl_.filename_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, // no aux_entries {{ "\21\10\0\0\0\0\0\0" "pg_query.LoadStmt" "filename" }}, }; ::uint8_t* LoadStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.LoadStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string filename = 1 [json_name = "filename"]; if (!this->_internal_filename().empty()) { const std::string& _s = this->_internal_filename(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.LoadStmt.filename"); target = stream->WriteStringMaybeAliased(1, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_filename().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_filename()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData LoadStmt::_class_data_ = { LoadStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* LoadStmt::GetClassData() const { return &_class_data_; } void LoadStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.LoadStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_filename().empty()) { _this->_internal_set_filename(from._internal_filename()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void LoadStmt::CopyFrom(const LoadStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.LoadStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool LoadStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* LoadStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void LoadStmt::InternalSwap(LoadStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.filename_, &other->_impl_.filename_, arena); } ::google::protobuf::Metadata LoadStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[236]); } // =================================================================== class CreatedbStmt::_Internal { public: }; CreatedbStmt::CreatedbStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreatedbStmt) } inline PROTOBUF_NDEBUG_INLINE CreatedbStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : options_{visibility, arena, from.options_}, dbname_(arena, from.dbname_), _cached_size_{0} {} CreatedbStmt::CreatedbStmt( ::google::protobuf::Arena* arena, const CreatedbStmt& from) : ::google::protobuf::Message(arena) { CreatedbStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.CreatedbStmt) } inline PROTOBUF_NDEBUG_INLINE CreatedbStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : options_{visibility, arena}, dbname_(arena), _cached_size_{0} {} inline void CreatedbStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } CreatedbStmt::~CreatedbStmt() { // @@protoc_insertion_point(destructor:pg_query.CreatedbStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreatedbStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.dbname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreatedbStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreatedbStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.dbname_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreatedbStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 36, 2> CreatedbStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreatedbStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node options = 2 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CreatedbStmt, _impl_.options_)}}, // string dbname = 1 [json_name = "dbname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreatedbStmt, _impl_.dbname_)}}, }}, {{ 65535, 65535 }}, {{ // string dbname = 1 [json_name = "dbname"]; {PROTOBUF_FIELD_OFFSET(CreatedbStmt, _impl_.dbname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(CreatedbStmt, _impl_.options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\25\6\0\0\0\0\0\0" "pg_query.CreatedbStmt" "dbname" }}, }; ::uint8_t* CreatedbStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreatedbStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string dbname = 1 [json_name = "dbname"]; if (!this->_internal_dbname().empty()) { const std::string& _s = this->_internal_dbname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreatedbStmt.dbname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string dbname = 1 [json_name = "dbname"]; if (!this->_internal_dbname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_dbname()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreatedbStmt::_class_data_ = { CreatedbStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreatedbStmt::GetClassData() const { return &_class_data_; } void CreatedbStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreatedbStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_dbname().empty()) { _this->_internal_set_dbname(from._internal_dbname()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreatedbStmt::CopyFrom(const CreatedbStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreatedbStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreatedbStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreatedbStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreatedbStmt::InternalSwap(CreatedbStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.dbname_, &other->_impl_.dbname_, arena); } ::google::protobuf::Metadata CreatedbStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[237]); } // =================================================================== class AlterDatabaseStmt::_Internal { public: }; AlterDatabaseStmt::AlterDatabaseStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterDatabaseStmt) } inline PROTOBUF_NDEBUG_INLINE AlterDatabaseStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : options_{visibility, arena, from.options_}, dbname_(arena, from.dbname_), _cached_size_{0} {} AlterDatabaseStmt::AlterDatabaseStmt( ::google::protobuf::Arena* arena, const AlterDatabaseStmt& from) : ::google::protobuf::Message(arena) { AlterDatabaseStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.AlterDatabaseStmt) } inline PROTOBUF_NDEBUG_INLINE AlterDatabaseStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : options_{visibility, arena}, dbname_(arena), _cached_size_{0} {} inline void AlterDatabaseStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } AlterDatabaseStmt::~AlterDatabaseStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterDatabaseStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterDatabaseStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.dbname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterDatabaseStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterDatabaseStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.dbname_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterDatabaseStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 41, 2> AlterDatabaseStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterDatabaseStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node options = 2 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterDatabaseStmt, _impl_.options_)}}, // string dbname = 1 [json_name = "dbname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterDatabaseStmt, _impl_.dbname_)}}, }}, {{ 65535, 65535 }}, {{ // string dbname = 1 [json_name = "dbname"]; {PROTOBUF_FIELD_OFFSET(AlterDatabaseStmt, _impl_.dbname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(AlterDatabaseStmt, _impl_.options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\32\6\0\0\0\0\0\0" "pg_query.AlterDatabaseStmt" "dbname" }}, }; ::uint8_t* AlterDatabaseStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterDatabaseStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string dbname = 1 [json_name = "dbname"]; if (!this->_internal_dbname().empty()) { const std::string& _s = this->_internal_dbname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterDatabaseStmt.dbname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string dbname = 1 [json_name = "dbname"]; if (!this->_internal_dbname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_dbname()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterDatabaseStmt::_class_data_ = { AlterDatabaseStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterDatabaseStmt::GetClassData() const { return &_class_data_; } void AlterDatabaseStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterDatabaseStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_dbname().empty()) { _this->_internal_set_dbname(from._internal_dbname()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterDatabaseStmt::CopyFrom(const AlterDatabaseStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterDatabaseStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterDatabaseStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterDatabaseStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterDatabaseStmt::InternalSwap(AlterDatabaseStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.dbname_, &other->_impl_.dbname_, arena); } ::google::protobuf::Metadata AlterDatabaseStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[238]); } // =================================================================== class AlterDatabaseRefreshCollStmt::_Internal { public: }; AlterDatabaseRefreshCollStmt::AlterDatabaseRefreshCollStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterDatabaseRefreshCollStmt) } inline PROTOBUF_NDEBUG_INLINE AlterDatabaseRefreshCollStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : dbname_(arena, from.dbname_), _cached_size_{0} {} AlterDatabaseRefreshCollStmt::AlterDatabaseRefreshCollStmt( ::google::protobuf::Arena* arena, const AlterDatabaseRefreshCollStmt& from) : ::google::protobuf::Message(arena) { AlterDatabaseRefreshCollStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.AlterDatabaseRefreshCollStmt) } inline PROTOBUF_NDEBUG_INLINE AlterDatabaseRefreshCollStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : dbname_(arena), _cached_size_{0} {} inline void AlterDatabaseRefreshCollStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } AlterDatabaseRefreshCollStmt::~AlterDatabaseRefreshCollStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterDatabaseRefreshCollStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterDatabaseRefreshCollStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.dbname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterDatabaseRefreshCollStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterDatabaseRefreshCollStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.dbname_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterDatabaseRefreshCollStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 52, 2> AlterDatabaseRefreshCollStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_AlterDatabaseRefreshCollStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // string dbname = 1 [json_name = "dbname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterDatabaseRefreshCollStmt, _impl_.dbname_)}}, }}, {{ 65535, 65535 }}, {{ // string dbname = 1 [json_name = "dbname"]; {PROTOBUF_FIELD_OFFSET(AlterDatabaseRefreshCollStmt, _impl_.dbname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, }}, // no aux_entries {{ "\45\6\0\0\0\0\0\0" "pg_query.AlterDatabaseRefreshCollStmt" "dbname" }}, }; ::uint8_t* AlterDatabaseRefreshCollStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterDatabaseRefreshCollStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string dbname = 1 [json_name = "dbname"]; if (!this->_internal_dbname().empty()) { const std::string& _s = this->_internal_dbname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterDatabaseRefreshCollStmt.dbname"); target = stream->WriteStringMaybeAliased(1, _s, target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterDatabaseRefreshCollStmt) return target; } ::size_t AlterDatabaseRefreshCollStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterDatabaseRefreshCollStmt) ::size_t total_size = 0; ::uint32_t 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->_internal_dbname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_dbname()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterDatabaseRefreshCollStmt::_class_data_ = { AlterDatabaseRefreshCollStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterDatabaseRefreshCollStmt::GetClassData() const { return &_class_data_; } void AlterDatabaseRefreshCollStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterDatabaseRefreshCollStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_dbname().empty()) { _this->_internal_set_dbname(from._internal_dbname()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterDatabaseRefreshCollStmt::CopyFrom(const AlterDatabaseRefreshCollStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterDatabaseRefreshCollStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterDatabaseRefreshCollStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterDatabaseRefreshCollStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterDatabaseRefreshCollStmt::InternalSwap(AlterDatabaseRefreshCollStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.dbname_, &other->_impl_.dbname_, arena); } ::google::protobuf::Metadata AlterDatabaseRefreshCollStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[239]); } // =================================================================== class AlterDatabaseSetStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterDatabaseSetStmt, _impl_._has_bits_); static const ::pg_query::VariableSetStmt& setstmt(const AlterDatabaseSetStmt* msg); static void set_has_setstmt(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::VariableSetStmt& AlterDatabaseSetStmt::_Internal::setstmt(const AlterDatabaseSetStmt* msg) { return *msg->_impl_.setstmt_; } AlterDatabaseSetStmt::AlterDatabaseSetStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterDatabaseSetStmt) } inline PROTOBUF_NDEBUG_INLINE AlterDatabaseSetStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, dbname_(arena, from.dbname_) {} AlterDatabaseSetStmt::AlterDatabaseSetStmt( ::google::protobuf::Arena* arena, const AlterDatabaseSetStmt& from) : ::google::protobuf::Message(arena) { AlterDatabaseSetStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.setstmt_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::VariableSetStmt>(arena, *from._impl_.setstmt_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.AlterDatabaseSetStmt) } inline PROTOBUF_NDEBUG_INLINE AlterDatabaseSetStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, dbname_(arena) {} inline void AlterDatabaseSetStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.setstmt_ = {}; } AlterDatabaseSetStmt::~AlterDatabaseSetStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterDatabaseSetStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterDatabaseSetStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.dbname_.Destroy(); delete _impl_.setstmt_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterDatabaseSetStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterDatabaseSetStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.dbname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.setstmt_ != nullptr); _impl_.setstmt_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterDatabaseSetStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 44, 2> AlterDatabaseSetStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterDatabaseSetStmt, _impl_._has_bits_), 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterDatabaseSetStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.VariableSetStmt setstmt = 2 [json_name = "setstmt"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(AlterDatabaseSetStmt, _impl_.setstmt_)}}, // string dbname = 1 [json_name = "dbname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterDatabaseSetStmt, _impl_.dbname_)}}, }}, {{ 65535, 65535 }}, {{ // string dbname = 1 [json_name = "dbname"]; {PROTOBUF_FIELD_OFFSET(AlterDatabaseSetStmt, _impl_.dbname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.VariableSetStmt setstmt = 2 [json_name = "setstmt"]; {PROTOBUF_FIELD_OFFSET(AlterDatabaseSetStmt, _impl_.setstmt_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::VariableSetStmt>()}, }}, {{ "\35\6\0\0\0\0\0\0" "pg_query.AlterDatabaseSetStmt" "dbname" }}, }; ::uint8_t* AlterDatabaseSetStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterDatabaseSetStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string dbname = 1 [json_name = "dbname"]; if (!this->_internal_dbname().empty()) { const std::string& _s = this->_internal_dbname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterDatabaseSetStmt.dbname"); target = stream->WriteStringMaybeAliased(1, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.VariableSetStmt setstmt = 2 [json_name = "setstmt"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::setstmt(this), _Internal::setstmt(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_dbname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_dbname()); } // .pg_query.VariableSetStmt setstmt = 2 [json_name = "setstmt"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.setstmt_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterDatabaseSetStmt::_class_data_ = { AlterDatabaseSetStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterDatabaseSetStmt::GetClassData() const { return &_class_data_; } void AlterDatabaseSetStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterDatabaseSetStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_dbname().empty()) { _this->_internal_set_dbname(from._internal_dbname()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_setstmt()->::pg_query::VariableSetStmt::MergeFrom( from._internal_setstmt()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterDatabaseSetStmt::CopyFrom(const AlterDatabaseSetStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterDatabaseSetStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterDatabaseSetStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterDatabaseSetStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterDatabaseSetStmt::InternalSwap(AlterDatabaseSetStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.dbname_, &other->_impl_.dbname_, arena); swap(_impl_.setstmt_, other->_impl_.setstmt_); } ::google::protobuf::Metadata AlterDatabaseSetStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[240]); } // =================================================================== class DropdbStmt::_Internal { public: }; DropdbStmt::DropdbStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DropdbStmt) } inline PROTOBUF_NDEBUG_INLINE DropdbStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : options_{visibility, arena, from.options_}, dbname_(arena, from.dbname_), _cached_size_{0} {} DropdbStmt::DropdbStmt( ::google::protobuf::Arena* arena, const DropdbStmt& from) : ::google::protobuf::Message(arena) { DropdbStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.missing_ok_ = from._impl_.missing_ok_; // @@protoc_insertion_point(copy_constructor:pg_query.DropdbStmt) } inline PROTOBUF_NDEBUG_INLINE DropdbStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : options_{visibility, arena}, dbname_(arena), _cached_size_{0} {} inline void DropdbStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.missing_ok_ = {}; } DropdbStmt::~DropdbStmt() { // @@protoc_insertion_point(destructor:pg_query.DropdbStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DropdbStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.dbname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void DropdbStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DropdbStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.dbname_.ClearToEmpty(); _impl_.missing_ok_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DropdbStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 34, 2> DropdbStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_DropdbStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string dbname = 1 [json_name = "dbname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(DropdbStmt, _impl_.dbname_)}}, // bool missing_ok = 2 [json_name = "missing_ok"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(DropdbStmt, _impl_.missing_ok_)}}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(DropdbStmt, _impl_.options_)}}, }}, {{ 65535, 65535 }}, {{ // string dbname = 1 [json_name = "dbname"]; {PROTOBUF_FIELD_OFFSET(DropdbStmt, _impl_.dbname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool missing_ok = 2 [json_name = "missing_ok"]; {PROTOBUF_FIELD_OFFSET(DropdbStmt, _impl_.missing_ok_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // repeated .pg_query.Node options = 3 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(DropdbStmt, _impl_.options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\23\6\0\0\0\0\0\0" "pg_query.DropdbStmt" "dbname" }}, }; ::uint8_t* DropdbStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DropdbStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string dbname = 1 [json_name = "dbname"]; if (!this->_internal_dbname().empty()) { const std::string& _s = this->_internal_dbname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.DropdbStmt.dbname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_missing_ok(), target); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string dbname = 1 [json_name = "dbname"]; if (!this->_internal_dbname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_dbname()); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DropdbStmt::_class_data_ = { DropdbStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DropdbStmt::GetClassData() const { return &_class_data_; } void DropdbStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DropdbStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_dbname().empty()) { _this->_internal_set_dbname(from._internal_dbname()); } if (from._internal_missing_ok() != 0) { _this->_internal_set_missing_ok(from._internal_missing_ok()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DropdbStmt::CopyFrom(const DropdbStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DropdbStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DropdbStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* DropdbStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void DropdbStmt::InternalSwap(DropdbStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.dbname_, &other->_impl_.dbname_, arena); swap(_impl_.missing_ok_, other->_impl_.missing_ok_); } ::google::protobuf::Metadata DropdbStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[241]); } // =================================================================== class AlterSystemStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(AlterSystemStmt, _impl_._has_bits_); static const ::pg_query::VariableSetStmt& setstmt(const AlterSystemStmt* msg); static void set_has_setstmt(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::VariableSetStmt& AlterSystemStmt::_Internal::setstmt(const AlterSystemStmt* msg) { return *msg->_impl_.setstmt_; } AlterSystemStmt::AlterSystemStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterSystemStmt) } inline PROTOBUF_NDEBUG_INLINE AlterSystemStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} AlterSystemStmt::AlterSystemStmt( ::google::protobuf::Arena* arena, const AlterSystemStmt& from) : ::google::protobuf::Message(arena) { AlterSystemStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.setstmt_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::VariableSetStmt>(arena, *from._impl_.setstmt_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.AlterSystemStmt) } inline PROTOBUF_NDEBUG_INLINE AlterSystemStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void AlterSystemStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.setstmt_ = {}; } AlterSystemStmt::~AlterSystemStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterSystemStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterSystemStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.setstmt_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterSystemStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterSystemStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.setstmt_ != nullptr); _impl_.setstmt_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterSystemStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 1, 0, 2> AlterSystemStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(AlterSystemStmt, _impl_._has_bits_), 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterSystemStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.VariableSetStmt setstmt = 1 [json_name = "setstmt"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(AlterSystemStmt, _impl_.setstmt_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.VariableSetStmt setstmt = 1 [json_name = "setstmt"]; {PROTOBUF_FIELD_OFFSET(AlterSystemStmt, _impl_.setstmt_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::VariableSetStmt>()}, }}, {{ }}, }; ::uint8_t* AlterSystemStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterSystemStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.VariableSetStmt setstmt = 1 [json_name = "setstmt"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::setstmt(this), _Internal::setstmt(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.setstmt_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterSystemStmt::_class_data_ = { AlterSystemStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterSystemStmt::GetClassData() const { return &_class_data_; } void AlterSystemStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterSystemStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_setstmt()->::pg_query::VariableSetStmt::MergeFrom( from._internal_setstmt()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterSystemStmt::CopyFrom(const AlterSystemStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterSystemStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterSystemStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterSystemStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterSystemStmt::InternalSwap(AlterSystemStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); swap(_impl_.setstmt_, other->_impl_.setstmt_); } ::google::protobuf::Metadata AlterSystemStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[242]); } // =================================================================== class ClusterStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(ClusterStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const ClusterStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RangeVar& ClusterStmt::_Internal::relation(const ClusterStmt* msg) { return *msg->_impl_.relation_; } ClusterStmt::ClusterStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ClusterStmt) } inline PROTOBUF_NDEBUG_INLINE ClusterStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, params_{visibility, arena, from.params_}, indexname_(arena, from.indexname_) {} ClusterStmt::ClusterStmt( ::google::protobuf::Arena* arena, const ClusterStmt& from) : ::google::protobuf::Message(arena) { ClusterStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.ClusterStmt) } inline PROTOBUF_NDEBUG_INLINE ClusterStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, params_{visibility, arena}, indexname_(arena) {} inline void ClusterStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.relation_ = {}; } ClusterStmt::~ClusterStmt() { // @@protoc_insertion_point(destructor:pg_query.ClusterStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ClusterStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.indexname_.Destroy(); delete _impl_.relation_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void ClusterStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ClusterStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.params_.Clear(); _impl_.indexname_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ClusterStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 38, 2> ClusterStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(ClusterStmt, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ClusterStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(ClusterStmt, _impl_.relation_)}}, // string indexname = 2 [json_name = "indexname"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(ClusterStmt, _impl_.indexname_)}}, // repeated .pg_query.Node params = 3 [json_name = "params"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(ClusterStmt, _impl_.params_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(ClusterStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string indexname = 2 [json_name = "indexname"]; {PROTOBUF_FIELD_OFFSET(ClusterStmt, _impl_.indexname_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node params = 3 [json_name = "params"]; {PROTOBUF_FIELD_OFFSET(ClusterStmt, _impl_.params_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\24\0\11\0\0\0\0\0" "pg_query.ClusterStmt" "indexname" }}, }; ::uint8_t* ClusterStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ClusterStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // string indexname = 2 [json_name = "indexname"]; if (!this->_internal_indexname().empty()) { const std::string& _s = this->_internal_indexname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ClusterStmt.indexname"); target = stream->WriteStringMaybeAliased(2, _s, target); } // repeated .pg_query.Node params = 3 [json_name = "params"]; for (unsigned i = 0, n = static_cast(this->_internal_params_size()); i < n; i++) { const auto& repfield = this->_internal_params().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node params = 3 [json_name = "params"]; total_size += 1UL * this->_internal_params_size(); for (const auto& msg : this->_internal_params()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string indexname = 2 [json_name = "indexname"]; if (!this->_internal_indexname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_indexname()); } // .pg_query.RangeVar relation = 1 [json_name = "relation"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ClusterStmt::_class_data_ = { ClusterStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ClusterStmt::GetClassData() const { return &_class_data_; } void ClusterStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ClusterStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_params()->MergeFrom( from._internal_params()); if (!from._internal_indexname().empty()) { _this->_internal_set_indexname(from._internal_indexname()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ClusterStmt::CopyFrom(const ClusterStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ClusterStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ClusterStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* ClusterStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void ClusterStmt::InternalSwap(ClusterStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.params_.InternalSwap(&other->_impl_.params_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.indexname_, &other->_impl_.indexname_, arena); swap(_impl_.relation_, other->_impl_.relation_); } ::google::protobuf::Metadata ClusterStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[243]); } // =================================================================== class VacuumStmt::_Internal { public: }; VacuumStmt::VacuumStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.VacuumStmt) } inline PROTOBUF_NDEBUG_INLINE VacuumStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : options_{visibility, arena, from.options_}, rels_{visibility, arena, from.rels_}, _cached_size_{0} {} VacuumStmt::VacuumStmt( ::google::protobuf::Arena* arena, const VacuumStmt& from) : ::google::protobuf::Message(arena) { VacuumStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.is_vacuumcmd_ = from._impl_.is_vacuumcmd_; // @@protoc_insertion_point(copy_constructor:pg_query.VacuumStmt) } inline PROTOBUF_NDEBUG_INLINE VacuumStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : options_{visibility, arena}, rels_{visibility, arena}, _cached_size_{0} {} inline void VacuumStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.is_vacuumcmd_ = {}; } VacuumStmt::~VacuumStmt() { // @@protoc_insertion_point(destructor:pg_query.VacuumStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void VacuumStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void VacuumStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.VacuumStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.rels_.Clear(); _impl_.is_vacuumcmd_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* VacuumStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 0, 2> VacuumStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_VacuumStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node options = 1 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(VacuumStmt, _impl_.options_)}}, // repeated .pg_query.Node rels = 2 [json_name = "rels"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(VacuumStmt, _impl_.rels_)}}, // bool is_vacuumcmd = 3 [json_name = "is_vacuumcmd"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(VacuumStmt, _impl_.is_vacuumcmd_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node options = 1 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(VacuumStmt, _impl_.options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node rels = 2 [json_name = "rels"]; {PROTOBUF_FIELD_OFFSET(VacuumStmt, _impl_.rels_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool is_vacuumcmd = 3 [json_name = "is_vacuumcmd"]; {PROTOBUF_FIELD_OFFSET(VacuumStmt, _impl_.is_vacuumcmd_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* VacuumStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.VacuumStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node options = 1 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node rels = 2 [json_name = "rels"]; for (unsigned i = 0, n = static_cast(this->_internal_rels_size()); i < n; i++) { const auto& repfield = this->_internal_rels().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // bool is_vacuumcmd = 3 [json_name = "is_vacuumcmd"]; if (this->_internal_is_vacuumcmd() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_is_vacuumcmd(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::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->_internal_rels()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // bool is_vacuumcmd = 3 [json_name = "is_vacuumcmd"]; if (this->_internal_is_vacuumcmd() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData VacuumStmt::_class_data_ = { VacuumStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* VacuumStmt::GetClassData() const { return &_class_data_; } void VacuumStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.VacuumStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); _this->_internal_mutable_rels()->MergeFrom( from._internal_rels()); if (from._internal_is_vacuumcmd() != 0) { _this->_internal_set_is_vacuumcmd(from._internal_is_vacuumcmd()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void VacuumStmt::CopyFrom(const VacuumStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.VacuumStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool VacuumStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* VacuumStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void VacuumStmt::InternalSwap(VacuumStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.options_.InternalSwap(&other->_impl_.options_); _impl_.rels_.InternalSwap(&other->_impl_.rels_); swap(_impl_.is_vacuumcmd_, other->_impl_.is_vacuumcmd_); } ::google::protobuf::Metadata VacuumStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[244]); } // =================================================================== class VacuumRelation::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(VacuumRelation, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const VacuumRelation* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RangeVar& VacuumRelation::_Internal::relation(const VacuumRelation* msg) { return *msg->_impl_.relation_; } VacuumRelation::VacuumRelation(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.VacuumRelation) } inline PROTOBUF_NDEBUG_INLINE VacuumRelation::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, va_cols_{visibility, arena, from.va_cols_} {} VacuumRelation::VacuumRelation( ::google::protobuf::Arena* arena, const VacuumRelation& from) : ::google::protobuf::Message(arena) { VacuumRelation* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.oid_ = from._impl_.oid_; // @@protoc_insertion_point(copy_constructor:pg_query.VacuumRelation) } inline PROTOBUF_NDEBUG_INLINE VacuumRelation::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, va_cols_{visibility, arena} {} inline void VacuumRelation::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, oid_) - offsetof(Impl_, relation_) + sizeof(Impl_::oid_)); } VacuumRelation::~VacuumRelation() { // @@protoc_insertion_point(destructor:pg_query.VacuumRelation) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void VacuumRelation::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.relation_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void VacuumRelation::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.VacuumRelation) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.va_cols_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } _impl_.oid_ = 0u; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* VacuumRelation::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 0, 2> VacuumRelation::_table_ = { { PROTOBUF_FIELD_OFFSET(VacuumRelation, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_VacuumRelation_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(VacuumRelation, _impl_.relation_)}}, // uint32 oid = 2 [json_name = "oid"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(VacuumRelation, _impl_.oid_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(VacuumRelation, _impl_.oid_)}}, // repeated .pg_query.Node va_cols = 3 [json_name = "va_cols"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(VacuumRelation, _impl_.va_cols_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(VacuumRelation, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // uint32 oid = 2 [json_name = "oid"]; {PROTOBUF_FIELD_OFFSET(VacuumRelation, _impl_.oid_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUInt32)}, // repeated .pg_query.Node va_cols = 3 [json_name = "va_cols"]; {PROTOBUF_FIELD_OFFSET(VacuumRelation, _impl_.va_cols_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* VacuumRelation::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.VacuumRelation) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // uint32 oid = 2 [json_name = "oid"]; if (this->_internal_oid() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteUInt32ToArray( 2, this->_internal_oid(), target); } // repeated .pg_query.Node va_cols = 3 [json_name = "va_cols"]; for (unsigned i = 0, n = static_cast(this->_internal_va_cols_size()); i < n; i++) { const auto& repfield = this->_internal_va_cols().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_va_cols()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RangeVar relation = 1 [json_name = "relation"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // uint32 oid = 2 [json_name = "oid"]; if (this->_internal_oid() != 0) { total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne( this->_internal_oid()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData VacuumRelation::_class_data_ = { VacuumRelation::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* VacuumRelation::GetClassData() const { return &_class_data_; } void VacuumRelation::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.VacuumRelation) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_va_cols()->MergeFrom( from._internal_va_cols()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (from._internal_oid() != 0) { _this->_internal_set_oid(from._internal_oid()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void VacuumRelation::CopyFrom(const VacuumRelation& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.VacuumRelation) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool VacuumRelation::IsInitialized() const { return true; } ::_pbi::CachedSize* VacuumRelation::AccessCachedSize() const { return &_impl_._cached_size_; } void VacuumRelation::InternalSwap(VacuumRelation* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.va_cols_.InternalSwap(&other->_impl_.va_cols_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(VacuumRelation, _impl_.oid_) + sizeof(VacuumRelation::_impl_.oid_) - PROTOBUF_FIELD_OFFSET(VacuumRelation, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata VacuumRelation::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[245]); } // =================================================================== class ExplainStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(ExplainStmt, _impl_._has_bits_); static const ::pg_query::Node& query(const ExplainStmt* msg); static void set_has_query(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& ExplainStmt::_Internal::query(const ExplainStmt* msg) { return *msg->_impl_.query_; } ExplainStmt::ExplainStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ExplainStmt) } inline PROTOBUF_NDEBUG_INLINE ExplainStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, options_{visibility, arena, from.options_} {} ExplainStmt::ExplainStmt( ::google::protobuf::Arena* arena, const ExplainStmt& from) : ::google::protobuf::Message(arena) { ExplainStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.query_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.query_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.ExplainStmt) } inline PROTOBUF_NDEBUG_INLINE ExplainStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, options_{visibility, arena} {} inline void ExplainStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.query_ = {}; } ExplainStmt::~ExplainStmt() { // @@protoc_insertion_point(destructor:pg_query.ExplainStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ExplainStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.query_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void ExplainStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ExplainStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.query_ != nullptr); _impl_.query_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ExplainStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 2, 0, 2> ExplainStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(ExplainStmt, _impl_._has_bits_), 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ExplainStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node options = 2 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(ExplainStmt, _impl_.options_)}}, // .pg_query.Node query = 1 [json_name = "query"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(ExplainStmt, _impl_.query_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node query = 1 [json_name = "query"]; {PROTOBUF_FIELD_OFFSET(ExplainStmt, _impl_.query_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(ExplainStmt, _impl_.options_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* ExplainStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ExplainStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node query = 1 [json_name = "query"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::query(this), _Internal::query(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node query = 1 [json_name = "query"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.query_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ExplainStmt::_class_data_ = { ExplainStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ExplainStmt::GetClassData() const { return &_class_data_; } void ExplainStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ExplainStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_query()->::pg_query::Node::MergeFrom( from._internal_query()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ExplainStmt::CopyFrom(const ExplainStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ExplainStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ExplainStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* ExplainStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void ExplainStmt::InternalSwap(ExplainStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.options_.InternalSwap(&other->_impl_.options_); swap(_impl_.query_, other->_impl_.query_); } ::google::protobuf::Metadata ExplainStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[246]); } // =================================================================== class CreateTableAsStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, _impl_._has_bits_); static const ::pg_query::Node& query(const CreateTableAsStmt* msg); static void set_has_query(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::IntoClause& into(const CreateTableAsStmt* msg); static void set_has_into(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::Node& CreateTableAsStmt::_Internal::query(const CreateTableAsStmt* msg) { return *msg->_impl_.query_; } const ::pg_query::IntoClause& CreateTableAsStmt::_Internal::into(const CreateTableAsStmt* msg) { return *msg->_impl_.into_; } CreateTableAsStmt::CreateTableAsStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateTableAsStmt) } inline PROTOBUF_NDEBUG_INLINE CreateTableAsStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} CreateTableAsStmt::CreateTableAsStmt( ::google::protobuf::Arena* arena, const CreateTableAsStmt& from) : ::google::protobuf::Message(arena) { CreateTableAsStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.query_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.query_) : nullptr; _impl_.into_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::IntoClause>(arena, *from._impl_.into_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, objtype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, objtype_), offsetof(Impl_, if_not_exists_) - offsetof(Impl_, objtype_) + sizeof(Impl_::if_not_exists_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateTableAsStmt) } inline PROTOBUF_NDEBUG_INLINE CreateTableAsStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void CreateTableAsStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, query_), 0, offsetof(Impl_, if_not_exists_) - offsetof(Impl_, query_) + sizeof(Impl_::if_not_exists_)); } CreateTableAsStmt::~CreateTableAsStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateTableAsStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateTableAsStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.query_; delete _impl_.into_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateTableAsStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateTableAsStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.query_ != nullptr); _impl_.query_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.into_ != nullptr); _impl_.into_->Clear(); } } ::memset(&_impl_.objtype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.if_not_exists_) - reinterpret_cast(&_impl_.objtype_)) + sizeof(_impl_.if_not_exists_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateTableAsStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 0, 2> CreateTableAsStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateTableAsStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Node query = 1 [json_name = "query"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, _impl_.query_)}}, // .pg_query.IntoClause into = 2 [json_name = "into"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, _impl_.into_)}}, // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateTableAsStmt, _impl_.objtype_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, _impl_.objtype_)}}, // bool is_select_into = 4 [json_name = "is_select_into"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, _impl_.is_select_into_)}}, // bool if_not_exists = 5 [json_name = "if_not_exists"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, _impl_.if_not_exists_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.Node query = 1 [json_name = "query"]; {PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, _impl_.query_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.IntoClause into = 2 [json_name = "into"]; {PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, _impl_.into_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; {PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, _impl_.objtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool is_select_into = 4 [json_name = "is_select_into"]; {PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, _impl_.is_select_into_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool if_not_exists = 5 [json_name = "if_not_exists"]; {PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, _impl_.if_not_exists_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::IntoClause>()}, }}, {{ }}, }; ::uint8_t* CreateTableAsStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateTableAsStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node query = 1 [json_name = "query"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::query(this), _Internal::query(this).GetCachedSize(), target, stream); } // .pg_query.IntoClause into = 2 [json_name = "into"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::into(this), _Internal::into(this).GetCachedSize(), target, stream); } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_objtype(), target); } // bool is_select_into = 4 [json_name = "is_select_into"]; if (this->_internal_is_select_into() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_is_select_into(), target); } // bool if_not_exists = 5 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_if_not_exists(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.Node query = 1 [json_name = "query"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.query_); } // .pg_query.IntoClause into = 2 [json_name = "into"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.into_); } } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; if (this->_internal_objtype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_objtype()); } // bool is_select_into = 4 [json_name = "is_select_into"]; if (this->_internal_is_select_into() != 0) { total_size += 2; } // bool if_not_exists = 5 [json_name = "if_not_exists"]; if (this->_internal_if_not_exists() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateTableAsStmt::_class_data_ = { CreateTableAsStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateTableAsStmt::GetClassData() const { return &_class_data_; } void CreateTableAsStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateTableAsStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_query()->::pg_query::Node::MergeFrom( from._internal_query()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_into()->::pg_query::IntoClause::MergeFrom( from._internal_into()); } } if (from._internal_objtype() != 0) { _this->_internal_set_objtype(from._internal_objtype()); } if (from._internal_is_select_into() != 0) { _this->_internal_set_is_select_into(from._internal_is_select_into()); } if (from._internal_if_not_exists() != 0) { _this->_internal_set_if_not_exists(from._internal_if_not_exists()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateTableAsStmt::CopyFrom(const CreateTableAsStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateTableAsStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateTableAsStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateTableAsStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateTableAsStmt::InternalSwap(CreateTableAsStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, _impl_.if_not_exists_) + sizeof(CreateTableAsStmt::_impl_.if_not_exists_) - PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, _impl_.query_)>( reinterpret_cast(&_impl_.query_), reinterpret_cast(&other->_impl_.query_)); } ::google::protobuf::Metadata CreateTableAsStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[247]); } // =================================================================== class RefreshMatViewStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(RefreshMatViewStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const RefreshMatViewStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RangeVar& RefreshMatViewStmt::_Internal::relation(const RefreshMatViewStmt* msg) { return *msg->_impl_.relation_; } RefreshMatViewStmt::RefreshMatViewStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RefreshMatViewStmt) } inline PROTOBUF_NDEBUG_INLINE RefreshMatViewStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} RefreshMatViewStmt::RefreshMatViewStmt( ::google::protobuf::Arena* arena, const RefreshMatViewStmt& from) : ::google::protobuf::Message(arena) { RefreshMatViewStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, concurrent_), reinterpret_cast(&from._impl_) + offsetof(Impl_, concurrent_), offsetof(Impl_, skip_data_) - offsetof(Impl_, concurrent_) + sizeof(Impl_::skip_data_)); // @@protoc_insertion_point(copy_constructor:pg_query.RefreshMatViewStmt) } inline PROTOBUF_NDEBUG_INLINE RefreshMatViewStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void RefreshMatViewStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, skip_data_) - offsetof(Impl_, relation_) + sizeof(Impl_::skip_data_)); } RefreshMatViewStmt::~RefreshMatViewStmt() { // @@protoc_insertion_point(destructor:pg_query.RefreshMatViewStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void RefreshMatViewStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.relation_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void RefreshMatViewStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RefreshMatViewStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } ::memset(&_impl_.concurrent_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.skip_data_) - reinterpret_cast(&_impl_.concurrent_)) + sizeof(_impl_.skip_data_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* RefreshMatViewStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> RefreshMatViewStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(RefreshMatViewStmt, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_RefreshMatViewStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // bool concurrent = 1 [json_name = "concurrent"]; {::_pbi::TcParser::SingularVarintNoZag1(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(RefreshMatViewStmt, _impl_.concurrent_)}}, // bool skip_data = 2 [json_name = "skipData"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(RefreshMatViewStmt, _impl_.skip_data_)}}, // .pg_query.RangeVar relation = 3 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {26, 0, 0, PROTOBUF_FIELD_OFFSET(RefreshMatViewStmt, _impl_.relation_)}}, }}, {{ 65535, 65535 }}, {{ // bool concurrent = 1 [json_name = "concurrent"]; {PROTOBUF_FIELD_OFFSET(RefreshMatViewStmt, _impl_.concurrent_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool skip_data = 2 [json_name = "skipData"]; {PROTOBUF_FIELD_OFFSET(RefreshMatViewStmt, _impl_.skip_data_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.RangeVar relation = 3 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(RefreshMatViewStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, }}, {{ }}, }; ::uint8_t* RefreshMatViewStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RefreshMatViewStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // bool concurrent = 1 [json_name = "concurrent"]; if (this->_internal_concurrent() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 1, this->_internal_concurrent(), target); } // bool skip_data = 2 [json_name = "skipData"]; if (this->_internal_skip_data() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_skip_data(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 3 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // bool concurrent = 1 [json_name = "concurrent"]; if (this->_internal_concurrent() != 0) { total_size += 2; } // bool skip_data = 2 [json_name = "skipData"]; if (this->_internal_skip_data() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData RefreshMatViewStmt::_class_data_ = { RefreshMatViewStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* RefreshMatViewStmt::GetClassData() const { return &_class_data_; } void RefreshMatViewStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RefreshMatViewStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (from._internal_concurrent() != 0) { _this->_internal_set_concurrent(from._internal_concurrent()); } if (from._internal_skip_data() != 0) { _this->_internal_set_skip_data(from._internal_skip_data()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void RefreshMatViewStmt::CopyFrom(const RefreshMatViewStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RefreshMatViewStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool RefreshMatViewStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* RefreshMatViewStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void RefreshMatViewStmt::InternalSwap(RefreshMatViewStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(RefreshMatViewStmt, _impl_.skip_data_) + sizeof(RefreshMatViewStmt::_impl_.skip_data_) - PROTOBUF_FIELD_OFFSET(RefreshMatViewStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata RefreshMatViewStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[248]); } // =================================================================== class CheckPointStmt::_Internal { public: }; CheckPointStmt::CheckPointStmt(::google::protobuf::Arena* arena) : ::google::protobuf::internal::ZeroFieldsBase(arena) { // @@protoc_insertion_point(arena_constructor:pg_query.CheckPointStmt) } CheckPointStmt::CheckPointStmt( ::google::protobuf::Arena* arena, const CheckPointStmt& from) : ::google::protobuf::internal::ZeroFieldsBase(arena) { CheckPointStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.CheckPointStmt) } ::google::protobuf::Metadata CheckPointStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[249]); } // =================================================================== class DiscardStmt::_Internal { public: }; DiscardStmt::DiscardStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DiscardStmt) } DiscardStmt::DiscardStmt( ::google::protobuf::Arena* arena, const DiscardStmt& from) : DiscardStmt(arena) { MergeFrom(from); } inline PROTOBUF_NDEBUG_INLINE DiscardStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void DiscardStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.target_ = {}; } DiscardStmt::~DiscardStmt() { // @@protoc_insertion_point(destructor:pg_query.DiscardStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DiscardStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void DiscardStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DiscardStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.target_ = 0; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DiscardStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<0, 1, 0, 0, 2> DiscardStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 1, 0, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967294, // skipmap offsetof(decltype(_table_), field_entries), 1, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_DiscardStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.DiscardMode target = 1 [json_name = "target"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DiscardStmt, _impl_.target_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(DiscardStmt, _impl_.target_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.DiscardMode target = 1 [json_name = "target"]; {PROTOBUF_FIELD_OFFSET(DiscardStmt, _impl_.target_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, }}, // no aux_entries {{ }}, }; ::uint8_t* DiscardStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DiscardStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.DiscardMode target = 1 [json_name = "target"]; if (this->_internal_target() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_target(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_target() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_target()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DiscardStmt::_class_data_ = { DiscardStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DiscardStmt::GetClassData() const { return &_class_data_; } void DiscardStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DiscardStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (from._internal_target() != 0) { _this->_internal_set_target(from._internal_target()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DiscardStmt::CopyFrom(const DiscardStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DiscardStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DiscardStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* DiscardStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void DiscardStmt::InternalSwap(DiscardStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_.target_, other->_impl_.target_); } ::google::protobuf::Metadata DiscardStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[250]); } // =================================================================== class LockStmt::_Internal { public: }; LockStmt::LockStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.LockStmt) } inline PROTOBUF_NDEBUG_INLINE LockStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : relations_{visibility, arena, from.relations_}, _cached_size_{0} {} LockStmt::LockStmt( ::google::protobuf::Arena* arena, const LockStmt& from) : ::google::protobuf::Message(arena) { LockStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, mode_), reinterpret_cast(&from._impl_) + offsetof(Impl_, mode_), offsetof(Impl_, nowait_) - offsetof(Impl_, mode_) + sizeof(Impl_::nowait_)); // @@protoc_insertion_point(copy_constructor:pg_query.LockStmt) } inline PROTOBUF_NDEBUG_INLINE LockStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : relations_{visibility, arena}, _cached_size_{0} {} inline void LockStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, mode_), 0, offsetof(Impl_, nowait_) - offsetof(Impl_, mode_) + sizeof(Impl_::nowait_)); } LockStmt::~LockStmt() { // @@protoc_insertion_point(destructor:pg_query.LockStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void LockStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void LockStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.LockStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.relations_.Clear(); ::memset(&_impl_.mode_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.nowait_) - reinterpret_cast(&_impl_.mode_)) + sizeof(_impl_.nowait_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* LockStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> LockStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_LockStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node relations = 1 [json_name = "relations"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(LockStmt, _impl_.relations_)}}, // int32 mode = 2 [json_name = "mode"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(LockStmt, _impl_.mode_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(LockStmt, _impl_.mode_)}}, // bool nowait = 3 [json_name = "nowait"]; {::_pbi::TcParser::SingularVarintNoZag1(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(LockStmt, _impl_.nowait_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node relations = 1 [json_name = "relations"]; {PROTOBUF_FIELD_OFFSET(LockStmt, _impl_.relations_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 mode = 2 [json_name = "mode"]; {PROTOBUF_FIELD_OFFSET(LockStmt, _impl_.mode_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // bool nowait = 3 [json_name = "nowait"]; {PROTOBUF_FIELD_OFFSET(LockStmt, _impl_.nowait_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* LockStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.LockStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node relations = 1 [json_name = "relations"]; for (unsigned i = 0, n = static_cast(this->_internal_relations_size()); i < n; i++) { const auto& repfield = this->_internal_relations().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // int32 mode = 2 [json_name = "mode"]; if (this->_internal_mode() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<2>( stream, this->_internal_mode(), target); } // bool nowait = 3 [json_name = "nowait"]; if (this->_internal_nowait() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 3, this->_internal_nowait(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_relations()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // int32 mode = 2 [json_name = "mode"]; if (this->_internal_mode() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_mode()); } // bool nowait = 3 [json_name = "nowait"]; if (this->_internal_nowait() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData LockStmt::_class_data_ = { LockStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* LockStmt::GetClassData() const { return &_class_data_; } void LockStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.LockStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_relations()->MergeFrom( from._internal_relations()); if (from._internal_mode() != 0) { _this->_internal_set_mode(from._internal_mode()); } if (from._internal_nowait() != 0) { _this->_internal_set_nowait(from._internal_nowait()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void LockStmt::CopyFrom(const LockStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.LockStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool LockStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* LockStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void LockStmt::InternalSwap(LockStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.relations_.InternalSwap(&other->_impl_.relations_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(LockStmt, _impl_.nowait_) + sizeof(LockStmt::_impl_.nowait_) - PROTOBUF_FIELD_OFFSET(LockStmt, _impl_.mode_)>( reinterpret_cast(&_impl_.mode_), reinterpret_cast(&other->_impl_.mode_)); } ::google::protobuf::Metadata LockStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[251]); } // =================================================================== class ConstraintsSetStmt::_Internal { public: }; ConstraintsSetStmt::ConstraintsSetStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ConstraintsSetStmt) } inline PROTOBUF_NDEBUG_INLINE ConstraintsSetStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : constraints_{visibility, arena, from.constraints_}, _cached_size_{0} {} ConstraintsSetStmt::ConstraintsSetStmt( ::google::protobuf::Arena* arena, const ConstraintsSetStmt& from) : ::google::protobuf::Message(arena) { ConstraintsSetStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.deferred_ = from._impl_.deferred_; // @@protoc_insertion_point(copy_constructor:pg_query.ConstraintsSetStmt) } inline PROTOBUF_NDEBUG_INLINE ConstraintsSetStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : constraints_{visibility, arena}, _cached_size_{0} {} inline void ConstraintsSetStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.deferred_ = {}; } ConstraintsSetStmt::~ConstraintsSetStmt() { // @@protoc_insertion_point(destructor:pg_query.ConstraintsSetStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ConstraintsSetStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void ConstraintsSetStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ConstraintsSetStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.constraints_.Clear(); _impl_.deferred_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ConstraintsSetStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 0, 2> ConstraintsSetStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ConstraintsSetStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool deferred = 2 [json_name = "deferred"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(ConstraintsSetStmt, _impl_.deferred_)}}, // repeated .pg_query.Node constraints = 1 [json_name = "constraints"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(ConstraintsSetStmt, _impl_.constraints_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node constraints = 1 [json_name = "constraints"]; {PROTOBUF_FIELD_OFFSET(ConstraintsSetStmt, _impl_.constraints_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool deferred = 2 [json_name = "deferred"]; {PROTOBUF_FIELD_OFFSET(ConstraintsSetStmt, _impl_.deferred_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* ConstraintsSetStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ConstraintsSetStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node constraints = 1 [json_name = "constraints"]; for (unsigned i = 0, n = static_cast(this->_internal_constraints_size()); i < n; i++) { const auto& repfield = this->_internal_constraints().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // bool deferred = 2 [json_name = "deferred"]; if (this->_internal_deferred() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_deferred(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_constraints()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // bool deferred = 2 [json_name = "deferred"]; if (this->_internal_deferred() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ConstraintsSetStmt::_class_data_ = { ConstraintsSetStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ConstraintsSetStmt::GetClassData() const { return &_class_data_; } void ConstraintsSetStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ConstraintsSetStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_constraints()->MergeFrom( from._internal_constraints()); if (from._internal_deferred() != 0) { _this->_internal_set_deferred(from._internal_deferred()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ConstraintsSetStmt::CopyFrom(const ConstraintsSetStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ConstraintsSetStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ConstraintsSetStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* ConstraintsSetStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void ConstraintsSetStmt::InternalSwap(ConstraintsSetStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.constraints_.InternalSwap(&other->_impl_.constraints_); swap(_impl_.deferred_, other->_impl_.deferred_); } ::google::protobuf::Metadata ConstraintsSetStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[252]); } // =================================================================== class ReindexStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(ReindexStmt, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const ReindexStmt* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RangeVar& ReindexStmt::_Internal::relation(const ReindexStmt* msg) { return *msg->_impl_.relation_; } ReindexStmt::ReindexStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ReindexStmt) } inline PROTOBUF_NDEBUG_INLINE ReindexStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, params_{visibility, arena, from.params_}, name_(arena, from.name_) {} ReindexStmt::ReindexStmt( ::google::protobuf::Arena* arena, const ReindexStmt& from) : ::google::protobuf::Message(arena) { ReindexStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.kind_ = from._impl_.kind_; // @@protoc_insertion_point(copy_constructor:pg_query.ReindexStmt) } inline PROTOBUF_NDEBUG_INLINE ReindexStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, params_{visibility, arena}, name_(arena) {} inline void ReindexStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, kind_) - offsetof(Impl_, relation_) + sizeof(Impl_::kind_)); } ReindexStmt::~ReindexStmt() { // @@protoc_insertion_point(destructor:pg_query.ReindexStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ReindexStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); delete _impl_.relation_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void ReindexStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ReindexStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.params_.Clear(); _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } _impl_.kind_ = 0; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ReindexStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 33, 2> ReindexStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(ReindexStmt, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ReindexStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node params = 4 [json_name = "params"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(ReindexStmt, _impl_.params_)}}, // .pg_query.ReindexObjectType kind = 1 [json_name = "kind"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ReindexStmt, _impl_.kind_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(ReindexStmt, _impl_.kind_)}}, // .pg_query.RangeVar relation = 2 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(ReindexStmt, _impl_.relation_)}}, // string name = 3 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(ReindexStmt, _impl_.name_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.ReindexObjectType kind = 1 [json_name = "kind"]; {PROTOBUF_FIELD_OFFSET(ReindexStmt, _impl_.kind_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.RangeVar relation = 2 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(ReindexStmt, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string name = 3 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(ReindexStmt, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node params = 4 [json_name = "params"]; {PROTOBUF_FIELD_OFFSET(ReindexStmt, _impl_.params_), -1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\24\0\0\4\0\0\0\0" "pg_query.ReindexStmt" "name" }}, }; ::uint8_t* ReindexStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ReindexStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.ReindexObjectType kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // string name = 3 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ReindexStmt.name"); target = stream->WriteStringMaybeAliased(3, _s, target); } // repeated .pg_query.Node params = 4 [json_name = "params"]; for (unsigned i = 0, n = static_cast(this->_internal_params_size()); i < n; i++) { const auto& repfield = this->_internal_params().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node params = 4 [json_name = "params"]; total_size += 1UL * this->_internal_params_size(); for (const auto& msg : this->_internal_params()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string name = 3 [json_name = "name"]; if (!this->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.ReindexObjectType kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_kind()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ReindexStmt::_class_data_ = { ReindexStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ReindexStmt::GetClassData() const { return &_class_data_; } void ReindexStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ReindexStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_params()->MergeFrom( from._internal_params()); if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (from._internal_kind() != 0) { _this->_internal_set_kind(from._internal_kind()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ReindexStmt::CopyFrom(const ReindexStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ReindexStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ReindexStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* ReindexStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void ReindexStmt::InternalSwap(ReindexStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.params_.InternalSwap(&other->_impl_.params_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(ReindexStmt, _impl_.kind_) + sizeof(ReindexStmt::_impl_.kind_) - PROTOBUF_FIELD_OFFSET(ReindexStmt, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata ReindexStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[253]); } // =================================================================== class CreateConversionStmt::_Internal { public: }; CreateConversionStmt::CreateConversionStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateConversionStmt) } inline PROTOBUF_NDEBUG_INLINE CreateConversionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : conversion_name_{visibility, arena, from.conversion_name_}, func_name_{visibility, arena, from.func_name_}, for_encoding_name_(arena, from.for_encoding_name_), to_encoding_name_(arena, from.to_encoding_name_), _cached_size_{0} {} CreateConversionStmt::CreateConversionStmt( ::google::protobuf::Arena* arena, const CreateConversionStmt& from) : ::google::protobuf::Message(arena) { CreateConversionStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.def_ = from._impl_.def_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateConversionStmt) } inline PROTOBUF_NDEBUG_INLINE CreateConversionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : conversion_name_{visibility, arena}, func_name_{visibility, arena}, for_encoding_name_(arena), to_encoding_name_(arena), _cached_size_{0} {} inline void CreateConversionStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.def_ = {}; } CreateConversionStmt::~CreateConversionStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateConversionStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateConversionStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.for_encoding_name_.Destroy(); _impl_.to_encoding_name_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateConversionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateConversionStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.conversion_name_.Clear(); _impl_.func_name_.Clear(); _impl_.for_encoding_name_.ClearToEmpty(); _impl_.to_encoding_name_.ClearToEmpty(); _impl_.def_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateConversionStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 71, 2> CreateConversionStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateConversionStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // repeated .pg_query.Node conversion_name = 1 [json_name = "conversion_name"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateConversionStmt, _impl_.conversion_name_)}}, // string for_encoding_name = 2 [json_name = "for_encoding_name"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CreateConversionStmt, _impl_.for_encoding_name_)}}, // string to_encoding_name = 3 [json_name = "to_encoding_name"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CreateConversionStmt, _impl_.to_encoding_name_)}}, // repeated .pg_query.Node func_name = 4 [json_name = "func_name"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(CreateConversionStmt, _impl_.func_name_)}}, // bool def = 5 [json_name = "def"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(CreateConversionStmt, _impl_.def_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node conversion_name = 1 [json_name = "conversion_name"]; {PROTOBUF_FIELD_OFFSET(CreateConversionStmt, _impl_.conversion_name_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // string for_encoding_name = 2 [json_name = "for_encoding_name"]; {PROTOBUF_FIELD_OFFSET(CreateConversionStmt, _impl_.for_encoding_name_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string to_encoding_name = 3 [json_name = "to_encoding_name"]; {PROTOBUF_FIELD_OFFSET(CreateConversionStmt, _impl_.to_encoding_name_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node func_name = 4 [json_name = "func_name"]; {PROTOBUF_FIELD_OFFSET(CreateConversionStmt, _impl_.func_name_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool def = 5 [json_name = "def"]; {PROTOBUF_FIELD_OFFSET(CreateConversionStmt, _impl_.def_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\35\0\21\20\0\0\0\0" "pg_query.CreateConversionStmt" "for_encoding_name" "to_encoding_name" }}, }; ::uint8_t* CreateConversionStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateConversionStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node conversion_name = 1 [json_name = "conversion_name"]; for (unsigned i = 0, n = static_cast(this->_internal_conversion_name_size()); i < n; i++) { const auto& repfield = this->_internal_conversion_name().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // string for_encoding_name = 2 [json_name = "for_encoding_name"]; if (!this->_internal_for_encoding_name().empty()) { const std::string& _s = this->_internal_for_encoding_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateConversionStmt.for_encoding_name"); target = stream->WriteStringMaybeAliased(2, _s, target); } // string to_encoding_name = 3 [json_name = "to_encoding_name"]; if (!this->_internal_to_encoding_name().empty()) { const std::string& _s = this->_internal_to_encoding_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateConversionStmt.to_encoding_name"); target = stream->WriteStringMaybeAliased(3, _s, target); } // repeated .pg_query.Node func_name = 4 [json_name = "func_name"]; for (unsigned i = 0, n = static_cast(this->_internal_func_name_size()); i < n; i++) { const auto& repfield = this->_internal_func_name().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // bool def = 5 [json_name = "def"]; if (this->_internal_def() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_def(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_conversion_name()) { total_size += ::google::protobuf::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->_internal_func_name()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string for_encoding_name = 2 [json_name = "for_encoding_name"]; if (!this->_internal_for_encoding_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_for_encoding_name()); } // string to_encoding_name = 3 [json_name = "to_encoding_name"]; if (!this->_internal_to_encoding_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_to_encoding_name()); } // bool def = 5 [json_name = "def"]; if (this->_internal_def() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateConversionStmt::_class_data_ = { CreateConversionStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateConversionStmt::GetClassData() const { return &_class_data_; } void CreateConversionStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateConversionStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_conversion_name()->MergeFrom( from._internal_conversion_name()); _this->_internal_mutable_func_name()->MergeFrom( from._internal_func_name()); if (!from._internal_for_encoding_name().empty()) { _this->_internal_set_for_encoding_name(from._internal_for_encoding_name()); } if (!from._internal_to_encoding_name().empty()) { _this->_internal_set_to_encoding_name(from._internal_to_encoding_name()); } if (from._internal_def() != 0) { _this->_internal_set_def(from._internal_def()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateConversionStmt::CopyFrom(const CreateConversionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateConversionStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateConversionStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateConversionStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateConversionStmt::InternalSwap(CreateConversionStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.conversion_name_.InternalSwap(&other->_impl_.conversion_name_); _impl_.func_name_.InternalSwap(&other->_impl_.func_name_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.for_encoding_name_, &other->_impl_.for_encoding_name_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.to_encoding_name_, &other->_impl_.to_encoding_name_, arena); swap(_impl_.def_, other->_impl_.def_); } ::google::protobuf::Metadata CreateConversionStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[254]); } // =================================================================== class CreateCastStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreateCastStmt, _impl_._has_bits_); static const ::pg_query::TypeName& sourcetype(const CreateCastStmt* msg); static void set_has_sourcetype(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::TypeName& targettype(const CreateCastStmt* msg); static void set_has_targettype(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::ObjectWithArgs& func(const CreateCastStmt* msg); static void set_has_func(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::TypeName& CreateCastStmt::_Internal::sourcetype(const CreateCastStmt* msg) { return *msg->_impl_.sourcetype_; } const ::pg_query::TypeName& CreateCastStmt::_Internal::targettype(const CreateCastStmt* msg) { return *msg->_impl_.targettype_; } const ::pg_query::ObjectWithArgs& CreateCastStmt::_Internal::func(const CreateCastStmt* msg) { return *msg->_impl_.func_; } CreateCastStmt::CreateCastStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateCastStmt) } inline PROTOBUF_NDEBUG_INLINE CreateCastStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0} {} CreateCastStmt::CreateCastStmt( ::google::protobuf::Arena* arena, const CreateCastStmt& from) : ::google::protobuf::Message(arena) { CreateCastStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.sourcetype_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.sourcetype_) : nullptr; _impl_.targettype_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.targettype_) : nullptr; _impl_.func_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::ObjectWithArgs>(arena, *from._impl_.func_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, context_), reinterpret_cast(&from._impl_) + offsetof(Impl_, context_), offsetof(Impl_, inout_) - offsetof(Impl_, context_) + sizeof(Impl_::inout_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateCastStmt) } inline PROTOBUF_NDEBUG_INLINE CreateCastStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void CreateCastStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, sourcetype_), 0, offsetof(Impl_, inout_) - offsetof(Impl_, sourcetype_) + sizeof(Impl_::inout_)); } CreateCastStmt::~CreateCastStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateCastStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateCastStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.sourcetype_; delete _impl_.targettype_; delete _impl_.func_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateCastStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateCastStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.sourcetype_ != nullptr); _impl_.sourcetype_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.targettype_ != nullptr); _impl_.targettype_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.func_ != nullptr); _impl_.func_->Clear(); } } ::memset(&_impl_.context_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.inout_) - reinterpret_cast(&_impl_.context_)) + sizeof(_impl_.inout_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateCastStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 3, 0, 2> CreateCastStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CreateCastStmt, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateCastStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.TypeName sourcetype = 1 [json_name = "sourcetype"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(CreateCastStmt, _impl_.sourcetype_)}}, // .pg_query.TypeName targettype = 2 [json_name = "targettype"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(CreateCastStmt, _impl_.targettype_)}}, // .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; {::_pbi::TcParser::FastMtS1, {26, 2, 2, PROTOBUF_FIELD_OFFSET(CreateCastStmt, _impl_.func_)}}, // .pg_query.CoercionContext context = 4 [json_name = "context"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CreateCastStmt, _impl_.context_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CreateCastStmt, _impl_.context_)}}, // bool inout = 5 [json_name = "inout"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(CreateCastStmt, _impl_.inout_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.TypeName sourcetype = 1 [json_name = "sourcetype"]; {PROTOBUF_FIELD_OFFSET(CreateCastStmt, _impl_.sourcetype_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.TypeName targettype = 2 [json_name = "targettype"]; {PROTOBUF_FIELD_OFFSET(CreateCastStmt, _impl_.targettype_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; {PROTOBUF_FIELD_OFFSET(CreateCastStmt, _impl_.func_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.CoercionContext context = 4 [json_name = "context"]; {PROTOBUF_FIELD_OFFSET(CreateCastStmt, _impl_.context_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // bool inout = 5 [json_name = "inout"]; {PROTOBUF_FIELD_OFFSET(CreateCastStmt, _impl_.inout_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, {::_pbi::TcParser::GetTable<::pg_query::ObjectWithArgs>()}, }}, {{ }}, }; ::uint8_t* CreateCastStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateCastStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.TypeName sourcetype = 1 [json_name = "sourcetype"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::sourcetype(this), _Internal::sourcetype(this).GetCachedSize(), target, stream); } // .pg_query.TypeName targettype = 2 [json_name = "targettype"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::targettype(this), _Internal::targettype(this).GetCachedSize(), target, stream); } // .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::func(this), _Internal::func(this).GetCachedSize(), target, stream); } // .pg_query.CoercionContext context = 4 [json_name = "context"]; if (this->_internal_context() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 4, this->_internal_context(), target); } // bool inout = 5 [json_name = "inout"]; if (this->_internal_inout() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_inout(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.TypeName sourcetype = 1 [json_name = "sourcetype"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.sourcetype_); } // .pg_query.TypeName targettype = 2 [json_name = "targettype"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.targettype_); } // .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.func_); } } // .pg_query.CoercionContext context = 4 [json_name = "context"]; if (this->_internal_context() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_context()); } // bool inout = 5 [json_name = "inout"]; if (this->_internal_inout() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateCastStmt::_class_data_ = { CreateCastStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateCastStmt::GetClassData() const { return &_class_data_; } void CreateCastStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateCastStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_sourcetype()->::pg_query::TypeName::MergeFrom( from._internal_sourcetype()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_targettype()->::pg_query::TypeName::MergeFrom( from._internal_targettype()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_func()->::pg_query::ObjectWithArgs::MergeFrom( from._internal_func()); } } if (from._internal_context() != 0) { _this->_internal_set_context(from._internal_context()); } if (from._internal_inout() != 0) { _this->_internal_set_inout(from._internal_inout()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateCastStmt::CopyFrom(const CreateCastStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateCastStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateCastStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateCastStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateCastStmt::InternalSwap(CreateCastStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateCastStmt, _impl_.inout_) + sizeof(CreateCastStmt::_impl_.inout_) - PROTOBUF_FIELD_OFFSET(CreateCastStmt, _impl_.sourcetype_)>( reinterpret_cast(&_impl_.sourcetype_), reinterpret_cast(&other->_impl_.sourcetype_)); } ::google::protobuf::Metadata CreateCastStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[255]); } // =================================================================== class CreateTransformStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(CreateTransformStmt, _impl_._has_bits_); static const ::pg_query::TypeName& type_name(const CreateTransformStmt* msg); static void set_has_type_name(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::ObjectWithArgs& fromsql(const CreateTransformStmt* msg); static void set_has_fromsql(HasBits* has_bits) { (*has_bits)[0] |= 2u; } static const ::pg_query::ObjectWithArgs& tosql(const CreateTransformStmt* msg); static void set_has_tosql(HasBits* has_bits) { (*has_bits)[0] |= 4u; } }; const ::pg_query::TypeName& CreateTransformStmt::_Internal::type_name(const CreateTransformStmt* msg) { return *msg->_impl_.type_name_; } const ::pg_query::ObjectWithArgs& CreateTransformStmt::_Internal::fromsql(const CreateTransformStmt* msg) { return *msg->_impl_.fromsql_; } const ::pg_query::ObjectWithArgs& CreateTransformStmt::_Internal::tosql(const CreateTransformStmt* msg) { return *msg->_impl_.tosql_; } CreateTransformStmt::CreateTransformStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateTransformStmt) } inline PROTOBUF_NDEBUG_INLINE CreateTransformStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, lang_(arena, from.lang_) {} CreateTransformStmt::CreateTransformStmt( ::google::protobuf::Arena* arena, const CreateTransformStmt& from) : ::google::protobuf::Message(arena) { CreateTransformStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.type_name_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::TypeName>(arena, *from._impl_.type_name_) : nullptr; _impl_.fromsql_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::ObjectWithArgs>(arena, *from._impl_.fromsql_) : nullptr; _impl_.tosql_ = (cached_has_bits & 0x00000004u) ? CreateMaybeMessage<::pg_query::ObjectWithArgs>(arena, *from._impl_.tosql_) : nullptr; _impl_.replace_ = from._impl_.replace_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateTransformStmt) } inline PROTOBUF_NDEBUG_INLINE CreateTransformStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, lang_(arena) {} inline void CreateTransformStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, type_name_), 0, offsetof(Impl_, replace_) - offsetof(Impl_, type_name_) + sizeof(Impl_::replace_)); } CreateTransformStmt::~CreateTransformStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateTransformStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateTransformStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.lang_.Destroy(); delete _impl_.type_name_; delete _impl_.fromsql_; delete _impl_.tosql_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateTransformStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateTransformStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.lang_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.type_name_ != nullptr); _impl_.type_name_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.fromsql_ != nullptr); _impl_.fromsql_->Clear(); } if (cached_has_bits & 0x00000004u) { ABSL_DCHECK(_impl_.tosql_ != nullptr); _impl_.tosql_->Clear(); } } _impl_.replace_ = false; _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateTransformStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 3, 41, 2> CreateTransformStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(CreateTransformStmt, _impl_._has_bits_), 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateTransformStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // bool replace = 1 [json_name = "replace"]; {::_pbi::TcParser::SingularVarintNoZag1(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTransformStmt, _impl_.replace_)}}, // .pg_query.TypeName type_name = 2 [json_name = "type_name"]; {::_pbi::TcParser::FastMtS1, {18, 0, 0, PROTOBUF_FIELD_OFFSET(CreateTransformStmt, _impl_.type_name_)}}, // string lang = 3 [json_name = "lang"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CreateTransformStmt, _impl_.lang_)}}, // .pg_query.ObjectWithArgs fromsql = 4 [json_name = "fromsql"]; {::_pbi::TcParser::FastMtS1, {34, 1, 1, PROTOBUF_FIELD_OFFSET(CreateTransformStmt, _impl_.fromsql_)}}, // .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; {::_pbi::TcParser::FastMtS1, {42, 2, 2, PROTOBUF_FIELD_OFFSET(CreateTransformStmt, _impl_.tosql_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // bool replace = 1 [json_name = "replace"]; {PROTOBUF_FIELD_OFFSET(CreateTransformStmt, _impl_.replace_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.TypeName type_name = 2 [json_name = "type_name"]; {PROTOBUF_FIELD_OFFSET(CreateTransformStmt, _impl_.type_name_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // string lang = 3 [json_name = "lang"]; {PROTOBUF_FIELD_OFFSET(CreateTransformStmt, _impl_.lang_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.ObjectWithArgs fromsql = 4 [json_name = "fromsql"]; {PROTOBUF_FIELD_OFFSET(CreateTransformStmt, _impl_.fromsql_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; {PROTOBUF_FIELD_OFFSET(CreateTransformStmt, _impl_.tosql_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::TypeName>()}, {::_pbi::TcParser::GetTable<::pg_query::ObjectWithArgs>()}, {::_pbi::TcParser::GetTable<::pg_query::ObjectWithArgs>()}, }}, {{ "\34\0\0\4\0\0\0\0" "pg_query.CreateTransformStmt" "lang" }}, }; ::uint8_t* CreateTransformStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateTransformStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // bool replace = 1 [json_name = "replace"]; if (this->_internal_replace() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 1, this->_internal_replace(), target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.TypeName type_name = 2 [json_name = "type_name"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::type_name(this), _Internal::type_name(this).GetCachedSize(), target, stream); } // string lang = 3 [json_name = "lang"]; if (!this->_internal_lang().empty()) { const std::string& _s = this->_internal_lang(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateTransformStmt.lang"); target = stream->WriteStringMaybeAliased(3, _s, target); } // .pg_query.ObjectWithArgs fromsql = 4 [json_name = "fromsql"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 4, _Internal::fromsql(this), _Internal::fromsql(this).GetCachedSize(), target, stream); } // .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; if (cached_has_bits & 0x00000004u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 5, _Internal::tosql(this), _Internal::tosql(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_lang().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_lang()); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { // .pg_query.TypeName type_name = 2 [json_name = "type_name"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.type_name_); } // .pg_query.ObjectWithArgs fromsql = 4 [json_name = "fromsql"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.fromsql_); } // .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; if (cached_has_bits & 0x00000004u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.tosql_); } } // bool replace = 1 [json_name = "replace"]; if (this->_internal_replace() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateTransformStmt::_class_data_ = { CreateTransformStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateTransformStmt::GetClassData() const { return &_class_data_; } void CreateTransformStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateTransformStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_lang().empty()) { _this->_internal_set_lang(from._internal_lang()); } cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000007u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_type_name()->::pg_query::TypeName::MergeFrom( from._internal_type_name()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_fromsql()->::pg_query::ObjectWithArgs::MergeFrom( from._internal_fromsql()); } if (cached_has_bits & 0x00000004u) { _this->_internal_mutable_tosql()->::pg_query::ObjectWithArgs::MergeFrom( from._internal_tosql()); } } if (from._internal_replace() != 0) { _this->_internal_set_replace(from._internal_replace()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateTransformStmt::CopyFrom(const CreateTransformStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateTransformStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateTransformStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateTransformStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateTransformStmt::InternalSwap(CreateTransformStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.lang_, &other->_impl_.lang_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateTransformStmt, _impl_.replace_) + sizeof(CreateTransformStmt::_impl_.replace_) - PROTOBUF_FIELD_OFFSET(CreateTransformStmt, _impl_.type_name_)>( reinterpret_cast(&_impl_.type_name_), reinterpret_cast(&other->_impl_.type_name_)); } ::google::protobuf::Metadata CreateTransformStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[256]); } // =================================================================== class PrepareStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(PrepareStmt, _impl_._has_bits_); static const ::pg_query::Node& query(const PrepareStmt* msg); static void set_has_query(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::Node& PrepareStmt::_Internal::query(const PrepareStmt* msg) { return *msg->_impl_.query_; } PrepareStmt::PrepareStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PrepareStmt) } inline PROTOBUF_NDEBUG_INLINE PrepareStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, argtypes_{visibility, arena, from.argtypes_}, name_(arena, from.name_) {} PrepareStmt::PrepareStmt( ::google::protobuf::Arena* arena, const PrepareStmt& from) : ::google::protobuf::Message(arena) { PrepareStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.query_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.query_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.PrepareStmt) } inline PROTOBUF_NDEBUG_INLINE PrepareStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, argtypes_{visibility, arena}, name_(arena) {} inline void PrepareStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.query_ = {}; } PrepareStmt::~PrepareStmt() { // @@protoc_insertion_point(destructor:pg_query.PrepareStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void PrepareStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); delete _impl_.query_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void PrepareStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PrepareStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.argtypes_.Clear(); _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.query_ != nullptr); _impl_.query_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* PrepareStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 2, 33, 2> PrepareStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(PrepareStmt, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_PrepareStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string name = 1 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(PrepareStmt, _impl_.name_)}}, // repeated .pg_query.Node argtypes = 2 [json_name = "argtypes"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(PrepareStmt, _impl_.argtypes_)}}, // .pg_query.Node query = 3 [json_name = "query"]; {::_pbi::TcParser::FastMtS1, {26, 0, 1, PROTOBUF_FIELD_OFFSET(PrepareStmt, _impl_.query_)}}, }}, {{ 65535, 65535 }}, {{ // string name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(PrepareStmt, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node argtypes = 2 [json_name = "argtypes"]; {PROTOBUF_FIELD_OFFSET(PrepareStmt, _impl_.argtypes_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node query = 3 [json_name = "query"]; {PROTOBUF_FIELD_OFFSET(PrepareStmt, _impl_.query_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\24\4\0\0\0\0\0\0" "pg_query.PrepareStmt" "name" }}, }; ::uint8_t* PrepareStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PrepareStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.PrepareStmt.name"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node argtypes = 2 [json_name = "argtypes"]; for (unsigned i = 0, n = static_cast(this->_internal_argtypes_size()); i < n; i++) { const auto& repfield = this->_internal_argtypes().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.Node query = 3 [json_name = "query"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::query(this), _Internal::query(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_argtypes()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.Node query = 3 [json_name = "query"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.query_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData PrepareStmt::_class_data_ = { PrepareStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* PrepareStmt::GetClassData() const { return &_class_data_; } void PrepareStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PrepareStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_argtypes()->MergeFrom( from._internal_argtypes()); if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_query()->::pg_query::Node::MergeFrom( from._internal_query()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void PrepareStmt::CopyFrom(const PrepareStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PrepareStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool PrepareStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* PrepareStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void PrepareStmt::InternalSwap(PrepareStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.argtypes_.InternalSwap(&other->_impl_.argtypes_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); swap(_impl_.query_, other->_impl_.query_); } ::google::protobuf::Metadata PrepareStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[257]); } // =================================================================== class ExecuteStmt::_Internal { public: }; ExecuteStmt::ExecuteStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ExecuteStmt) } inline PROTOBUF_NDEBUG_INLINE ExecuteStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : params_{visibility, arena, from.params_}, name_(arena, from.name_), _cached_size_{0} {} ExecuteStmt::ExecuteStmt( ::google::protobuf::Arena* arena, const ExecuteStmt& from) : ::google::protobuf::Message(arena) { ExecuteStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.ExecuteStmt) } inline PROTOBUF_NDEBUG_INLINE ExecuteStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : params_{visibility, arena}, name_(arena), _cached_size_{0} {} inline void ExecuteStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } ExecuteStmt::~ExecuteStmt() { // @@protoc_insertion_point(destructor:pg_query.ExecuteStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ExecuteStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void ExecuteStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ExecuteStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.params_.Clear(); _impl_.name_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ExecuteStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 33, 2> ExecuteStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ExecuteStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node params = 2 [json_name = "params"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(ExecuteStmt, _impl_.params_)}}, // string name = 1 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(ExecuteStmt, _impl_.name_)}}, }}, {{ 65535, 65535 }}, {{ // string name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(ExecuteStmt, _impl_.name_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node params = 2 [json_name = "params"]; {PROTOBUF_FIELD_OFFSET(ExecuteStmt, _impl_.params_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\24\4\0\0\0\0\0\0" "pg_query.ExecuteStmt" "name" }}, }; ::uint8_t* ExecuteStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ExecuteStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.ExecuteStmt.name"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node params = 2 [json_name = "params"]; for (unsigned i = 0, n = static_cast(this->_internal_params_size()); i < n; i++) { const auto& repfield = this->_internal_params().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_params()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ExecuteStmt::_class_data_ = { ExecuteStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ExecuteStmt::GetClassData() const { return &_class_data_; } void ExecuteStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ExecuteStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_params()->MergeFrom( from._internal_params()); if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ExecuteStmt::CopyFrom(const ExecuteStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ExecuteStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ExecuteStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* ExecuteStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void ExecuteStmt::InternalSwap(ExecuteStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.params_.InternalSwap(&other->_impl_.params_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); } ::google::protobuf::Metadata ExecuteStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[258]); } // =================================================================== class DeallocateStmt::_Internal { public: }; DeallocateStmt::DeallocateStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DeallocateStmt) } inline PROTOBUF_NDEBUG_INLINE DeallocateStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : name_(arena, from.name_), _cached_size_{0} {} DeallocateStmt::DeallocateStmt( ::google::protobuf::Arena* arena, const DeallocateStmt& from) : ::google::protobuf::Message(arena) { DeallocateStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, isall_), reinterpret_cast(&from._impl_) + offsetof(Impl_, isall_), offsetof(Impl_, location_) - offsetof(Impl_, isall_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.DeallocateStmt) } inline PROTOBUF_NDEBUG_INLINE DeallocateStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : name_(arena), _cached_size_{0} {} inline void DeallocateStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, isall_), 0, offsetof(Impl_, location_) - offsetof(Impl_, isall_) + sizeof(Impl_::location_)); } DeallocateStmt::~DeallocateStmt() { // @@protoc_insertion_point(destructor:pg_query.DeallocateStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DeallocateStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void DeallocateStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DeallocateStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.name_.ClearToEmpty(); ::memset(&_impl_.isall_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.isall_)) + sizeof(_impl_.location_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DeallocateStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 0, 36, 2> DeallocateStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_DeallocateStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string name = 1 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(DeallocateStmt, _impl_.name_)}}, // bool isall = 2 [json_name = "isall"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(DeallocateStmt, _impl_.isall_)}}, // int32 location = 3 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DeallocateStmt, _impl_.location_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(DeallocateStmt, _impl_.location_)}}, }}, {{ 65535, 65535 }}, {{ // string name = 1 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(DeallocateStmt, _impl_.name_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool isall = 2 [json_name = "isall"]; {PROTOBUF_FIELD_OFFSET(DeallocateStmt, _impl_.isall_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // int32 location = 3 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(DeallocateStmt, _impl_.location_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, // no aux_entries {{ "\27\4\0\0\0\0\0\0" "pg_query.DeallocateStmt" "name" }}, }; ::uint8_t* DeallocateStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DeallocateStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string name = 1 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.DeallocateStmt.name"); target = stream->WriteStringMaybeAliased(1, _s, target); } // bool isall = 2 [json_name = "isall"]; if (this->_internal_isall() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_isall(), target); } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<3>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // bool isall = 2 [json_name = "isall"]; if (this->_internal_isall() != 0) { total_size += 2; } // int32 location = 3 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DeallocateStmt::_class_data_ = { DeallocateStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DeallocateStmt::GetClassData() const { return &_class_data_; } void DeallocateStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DeallocateStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if (from._internal_isall() != 0) { _this->_internal_set_isall(from._internal_isall()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DeallocateStmt::CopyFrom(const DeallocateStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DeallocateStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DeallocateStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* DeallocateStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void DeallocateStmt::InternalSwap(DeallocateStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(DeallocateStmt, _impl_.location_) + sizeof(DeallocateStmt::_impl_.location_) - PROTOBUF_FIELD_OFFSET(DeallocateStmt, _impl_.isall_)>( reinterpret_cast(&_impl_.isall_), reinterpret_cast(&other->_impl_.isall_)); } ::google::protobuf::Metadata DeallocateStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[259]); } // =================================================================== class DropOwnedStmt::_Internal { public: }; DropOwnedStmt::DropOwnedStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DropOwnedStmt) } inline PROTOBUF_NDEBUG_INLINE DropOwnedStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : roles_{visibility, arena, from.roles_}, _cached_size_{0} {} DropOwnedStmt::DropOwnedStmt( ::google::protobuf::Arena* arena, const DropOwnedStmt& from) : ::google::protobuf::Message(arena) { DropOwnedStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.behavior_ = from._impl_.behavior_; // @@protoc_insertion_point(copy_constructor:pg_query.DropOwnedStmt) } inline PROTOBUF_NDEBUG_INLINE DropOwnedStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : roles_{visibility, arena}, _cached_size_{0} {} inline void DropOwnedStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.behavior_ = {}; } DropOwnedStmt::~DropOwnedStmt() { // @@protoc_insertion_point(destructor:pg_query.DropOwnedStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DropOwnedStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void DropOwnedStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DropOwnedStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.roles_.Clear(); _impl_.behavior_ = 0; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DropOwnedStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 1, 0, 2> DropOwnedStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_DropOwnedStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.DropBehavior behavior = 2 [json_name = "behavior"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DropOwnedStmt, _impl_.behavior_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(DropOwnedStmt, _impl_.behavior_)}}, // repeated .pg_query.Node roles = 1 [json_name = "roles"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(DropOwnedStmt, _impl_.roles_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node roles = 1 [json_name = "roles"]; {PROTOBUF_FIELD_OFFSET(DropOwnedStmt, _impl_.roles_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.DropBehavior behavior = 2 [json_name = "behavior"]; {PROTOBUF_FIELD_OFFSET(DropOwnedStmt, _impl_.behavior_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* DropOwnedStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DropOwnedStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node roles = 1 [json_name = "roles"]; for (unsigned i = 0, n = static_cast(this->_internal_roles_size()); i < n; i++) { const auto& repfield = this->_internal_roles().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // .pg_query.DropBehavior behavior = 2 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 2, this->_internal_behavior(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_roles()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.DropBehavior behavior = 2 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_behavior()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DropOwnedStmt::_class_data_ = { DropOwnedStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DropOwnedStmt::GetClassData() const { return &_class_data_; } void DropOwnedStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DropOwnedStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_roles()->MergeFrom( from._internal_roles()); if (from._internal_behavior() != 0) { _this->_internal_set_behavior(from._internal_behavior()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DropOwnedStmt::CopyFrom(const DropOwnedStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DropOwnedStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DropOwnedStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* DropOwnedStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void DropOwnedStmt::InternalSwap(DropOwnedStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.roles_.InternalSwap(&other->_impl_.roles_); swap(_impl_.behavior_, other->_impl_.behavior_); } ::google::protobuf::Metadata DropOwnedStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[260]); } // =================================================================== class ReassignOwnedStmt::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(ReassignOwnedStmt, _impl_._has_bits_); static const ::pg_query::RoleSpec& newrole(const ReassignOwnedStmt* msg); static void set_has_newrole(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::RoleSpec& ReassignOwnedStmt::_Internal::newrole(const ReassignOwnedStmt* msg) { return *msg->_impl_.newrole_; } ReassignOwnedStmt::ReassignOwnedStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ReassignOwnedStmt) } inline PROTOBUF_NDEBUG_INLINE ReassignOwnedStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, roles_{visibility, arena, from.roles_} {} ReassignOwnedStmt::ReassignOwnedStmt( ::google::protobuf::Arena* arena, const ReassignOwnedStmt& from) : ::google::protobuf::Message(arena) { ReassignOwnedStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.newrole_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RoleSpec>(arena, *from._impl_.newrole_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.ReassignOwnedStmt) } inline PROTOBUF_NDEBUG_INLINE ReassignOwnedStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, roles_{visibility, arena} {} inline void ReassignOwnedStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.newrole_ = {}; } ReassignOwnedStmt::~ReassignOwnedStmt() { // @@protoc_insertion_point(destructor:pg_query.ReassignOwnedStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ReassignOwnedStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.newrole_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void ReassignOwnedStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ReassignOwnedStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.roles_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.newrole_ != nullptr); _impl_.newrole_->Clear(); } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ReassignOwnedStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 2, 0, 2> ReassignOwnedStmt::_table_ = { { PROTOBUF_FIELD_OFFSET(ReassignOwnedStmt, _impl_._has_bits_), 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_ReassignOwnedStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; {::_pbi::TcParser::FastMtS1, {18, 0, 1, PROTOBUF_FIELD_OFFSET(ReassignOwnedStmt, _impl_.newrole_)}}, // repeated .pg_query.Node roles = 1 [json_name = "roles"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(ReassignOwnedStmt, _impl_.roles_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node roles = 1 [json_name = "roles"]; {PROTOBUF_FIELD_OFFSET(ReassignOwnedStmt, _impl_.roles_), -1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; {PROTOBUF_FIELD_OFFSET(ReassignOwnedStmt, _impl_.newrole_), _Internal::kHasBitsOffset + 0, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::RoleSpec>()}, }}, {{ }}, }; ::uint8_t* ReassignOwnedStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ReassignOwnedStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node roles = 1 [json_name = "roles"]; for (unsigned i = 0, n = static_cast(this->_internal_roles_size()); i < n; i++) { const auto& repfield = this->_internal_roles().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::newrole(this), _Internal::newrole(this).GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_roles()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.newrole_); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ReassignOwnedStmt::_class_data_ = { ReassignOwnedStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ReassignOwnedStmt::GetClassData() const { return &_class_data_; } void ReassignOwnedStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ReassignOwnedStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_roles()->MergeFrom( from._internal_roles()); if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_newrole()->::pg_query::RoleSpec::MergeFrom( from._internal_newrole()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ReassignOwnedStmt::CopyFrom(const ReassignOwnedStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ReassignOwnedStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ReassignOwnedStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* ReassignOwnedStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void ReassignOwnedStmt::InternalSwap(ReassignOwnedStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.roles_.InternalSwap(&other->_impl_.roles_); swap(_impl_.newrole_, other->_impl_.newrole_); } ::google::protobuf::Metadata ReassignOwnedStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[261]); } // =================================================================== class AlterTSDictionaryStmt::_Internal { public: }; AlterTSDictionaryStmt::AlterTSDictionaryStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterTSDictionaryStmt) } inline PROTOBUF_NDEBUG_INLINE AlterTSDictionaryStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : dictname_{visibility, arena, from.dictname_}, options_{visibility, arena, from.options_}, _cached_size_{0} {} AlterTSDictionaryStmt::AlterTSDictionaryStmt( ::google::protobuf::Arena* arena, const AlterTSDictionaryStmt& from) : ::google::protobuf::Message(arena) { AlterTSDictionaryStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.AlterTSDictionaryStmt) } inline PROTOBUF_NDEBUG_INLINE AlterTSDictionaryStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : dictname_{visibility, arena}, options_{visibility, arena}, _cached_size_{0} {} inline void AlterTSDictionaryStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } AlterTSDictionaryStmt::~AlterTSDictionaryStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterTSDictionaryStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterTSDictionaryStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterTSDictionaryStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterTSDictionaryStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.dictname_.Clear(); _impl_.options_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterTSDictionaryStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<1, 2, 2, 0, 2> AlterTSDictionaryStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 2, 8, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967292, // skipmap offsetof(decltype(_table_), field_entries), 2, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterTSDictionaryStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node options = 2 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 1, PROTOBUF_FIELD_OFFSET(AlterTSDictionaryStmt, _impl_.options_)}}, // repeated .pg_query.Node dictname = 1 [json_name = "dictname"]; {::_pbi::TcParser::FastMtR1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTSDictionaryStmt, _impl_.dictname_)}}, }}, {{ 65535, 65535 }}, {{ // repeated .pg_query.Node dictname = 1 [json_name = "dictname"]; {PROTOBUF_FIELD_OFFSET(AlterTSDictionaryStmt, _impl_.dictname_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(AlterTSDictionaryStmt, _impl_.options_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* AlterTSDictionaryStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterTSDictionaryStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // repeated .pg_query.Node dictname = 1 [json_name = "dictname"]; for (unsigned i = 0, n = static_cast(this->_internal_dictname_size()); i < n; i++) { const auto& repfield = this->_internal_dictname().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_dictname()) { total_size += ::google::protobuf::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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterTSDictionaryStmt::_class_data_ = { AlterTSDictionaryStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterTSDictionaryStmt::GetClassData() const { return &_class_data_; } void AlterTSDictionaryStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterTSDictionaryStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_dictname()->MergeFrom( from._internal_dictname()); _this->_internal_mutable_options()->MergeFrom( from._internal_options()); _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterTSDictionaryStmt::CopyFrom(const AlterTSDictionaryStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterTSDictionaryStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterTSDictionaryStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterTSDictionaryStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterTSDictionaryStmt::InternalSwap(AlterTSDictionaryStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.dictname_.InternalSwap(&other->_impl_.dictname_); _impl_.options_.InternalSwap(&other->_impl_.options_); } ::google::protobuf::Metadata AlterTSDictionaryStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[262]); } // =================================================================== class AlterTSConfigurationStmt::_Internal { public: }; AlterTSConfigurationStmt::AlterTSConfigurationStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterTSConfigurationStmt) } inline PROTOBUF_NDEBUG_INLINE AlterTSConfigurationStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : cfgname_{visibility, arena, from.cfgname_}, tokentype_{visibility, arena, from.tokentype_}, dicts_{visibility, arena, from.dicts_}, _cached_size_{0} {} AlterTSConfigurationStmt::AlterTSConfigurationStmt( ::google::protobuf::Arena* arena, const AlterTSConfigurationStmt& from) : ::google::protobuf::Message(arena) { AlterTSConfigurationStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, kind_), reinterpret_cast(&from._impl_) + offsetof(Impl_, kind_), offsetof(Impl_, missing_ok_) - offsetof(Impl_, kind_) + sizeof(Impl_::missing_ok_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterTSConfigurationStmt) } inline PROTOBUF_NDEBUG_INLINE AlterTSConfigurationStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : cfgname_{visibility, arena}, tokentype_{visibility, arena}, dicts_{visibility, arena}, _cached_size_{0} {} inline void AlterTSConfigurationStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, kind_), 0, offsetof(Impl_, missing_ok_) - offsetof(Impl_, kind_) + sizeof(Impl_::missing_ok_)); } AlterTSConfigurationStmt::~AlterTSConfigurationStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterTSConfigurationStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterTSConfigurationStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterTSConfigurationStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterTSConfigurationStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.cfgname_.Clear(); _impl_.tokentype_.Clear(); _impl_.dicts_.Clear(); ::memset(&_impl_.kind_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.missing_ok_) - reinterpret_cast(&_impl_.kind_)) + sizeof(_impl_.missing_ok_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterTSConfigurationStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 7, 3, 0, 2> AlterTSConfigurationStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 7, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967168, // skipmap offsetof(decltype(_table_), field_entries), 7, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterTSConfigurationStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.AlterTSConfigType kind = 1 [json_name = "kind"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterTSConfigurationStmt, _impl_.kind_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.kind_)}}, // repeated .pg_query.Node cfgname = 2 [json_name = "cfgname"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.cfgname_)}}, // repeated .pg_query.Node tokentype = 3 [json_name = "tokentype"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.tokentype_)}}, // repeated .pg_query.Node dicts = 4 [json_name = "dicts"]; {::_pbi::TcParser::FastMtR1, {34, 63, 2, PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.dicts_)}}, // bool override = 5 [json_name = "override"]; {::_pbi::TcParser::SingularVarintNoZag1(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.override_)}}, // bool replace = 6 [json_name = "replace"]; {::_pbi::TcParser::SingularVarintNoZag1(), {48, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.replace_)}}, // bool missing_ok = 7 [json_name = "missing_ok"]; {::_pbi::TcParser::SingularVarintNoZag1(), {56, 63, 0, PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.missing_ok_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.AlterTSConfigType kind = 1 [json_name = "kind"]; {PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.kind_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // repeated .pg_query.Node cfgname = 2 [json_name = "cfgname"]; {PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.cfgname_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node tokentype = 3 [json_name = "tokentype"]; {PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.tokentype_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node dicts = 4 [json_name = "dicts"]; {PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.dicts_), 0, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool override = 5 [json_name = "override"]; {PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.override_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool replace = 6 [json_name = "replace"]; {PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.replace_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // bool missing_ok = 7 [json_name = "missing_ok"]; {PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.missing_ok_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* AlterTSConfigurationStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterTSConfigurationStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.AlterTSConfigType kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // repeated .pg_query.Node cfgname = 2 [json_name = "cfgname"]; for (unsigned i = 0, n = static_cast(this->_internal_cfgname_size()); i < n; i++) { const auto& repfield = this->_internal_cfgname().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node tokentype = 3 [json_name = "tokentype"]; for (unsigned i = 0, n = static_cast(this->_internal_tokentype_size()); i < n; i++) { const auto& repfield = this->_internal_tokentype().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node dicts = 4 [json_name = "dicts"]; for (unsigned i = 0, n = static_cast(this->_internal_dicts_size()); i < n; i++) { const auto& repfield = this->_internal_dicts().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // bool override = 5 [json_name = "override"]; if (this->_internal_override() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 5, this->_internal_override(), target); } // bool replace = 6 [json_name = "replace"]; if (this->_internal_replace() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 6, this->_internal_replace(), target); } // bool missing_ok = 7 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 7, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_cfgname()) { total_size += ::google::protobuf::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->_internal_tokentype()) { total_size += ::google::protobuf::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->_internal_dicts()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // .pg_query.AlterTSConfigType kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_kind()); } // bool override = 5 [json_name = "override"]; if (this->_internal_override() != 0) { total_size += 2; } // bool replace = 6 [json_name = "replace"]; if (this->_internal_replace() != 0) { total_size += 2; } // bool missing_ok = 7 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterTSConfigurationStmt::_class_data_ = { AlterTSConfigurationStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterTSConfigurationStmt::GetClassData() const { return &_class_data_; } void AlterTSConfigurationStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterTSConfigurationStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_cfgname()->MergeFrom( from._internal_cfgname()); _this->_internal_mutable_tokentype()->MergeFrom( from._internal_tokentype()); _this->_internal_mutable_dicts()->MergeFrom( from._internal_dicts()); if (from._internal_kind() != 0) { _this->_internal_set_kind(from._internal_kind()); } if (from._internal_override() != 0) { _this->_internal_set_override(from._internal_override()); } if (from._internal_replace() != 0) { _this->_internal_set_replace(from._internal_replace()); } if (from._internal_missing_ok() != 0) { _this->_internal_set_missing_ok(from._internal_missing_ok()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterTSConfigurationStmt::CopyFrom(const AlterTSConfigurationStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterTSConfigurationStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterTSConfigurationStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterTSConfigurationStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterTSConfigurationStmt::InternalSwap(AlterTSConfigurationStmt* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.cfgname_.InternalSwap(&other->_impl_.cfgname_); _impl_.tokentype_.InternalSwap(&other->_impl_.tokentype_); _impl_.dicts_.InternalSwap(&other->_impl_.dicts_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.missing_ok_) + sizeof(AlterTSConfigurationStmt::_impl_.missing_ok_) - PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, _impl_.kind_)>( reinterpret_cast(&_impl_.kind_), reinterpret_cast(&other->_impl_.kind_)); } ::google::protobuf::Metadata AlterTSConfigurationStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[263]); } // =================================================================== class PublicationTable::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(PublicationTable, _impl_._has_bits_); static const ::pg_query::RangeVar& relation(const PublicationTable* msg); static void set_has_relation(HasBits* has_bits) { (*has_bits)[0] |= 1u; } static const ::pg_query::Node& where_clause(const PublicationTable* msg); static void set_has_where_clause(HasBits* has_bits) { (*has_bits)[0] |= 2u; } }; const ::pg_query::RangeVar& PublicationTable::_Internal::relation(const PublicationTable* msg) { return *msg->_impl_.relation_; } const ::pg_query::Node& PublicationTable::_Internal::where_clause(const PublicationTable* msg) { return *msg->_impl_.where_clause_; } PublicationTable::PublicationTable(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PublicationTable) } inline PROTOBUF_NDEBUG_INLINE PublicationTable::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, columns_{visibility, arena, from.columns_} {} PublicationTable::PublicationTable( ::google::protobuf::Arena* arena, const PublicationTable& from) : ::google::protobuf::Message(arena) { PublicationTable* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.relation_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::RangeVar>(arena, *from._impl_.relation_) : nullptr; _impl_.where_clause_ = (cached_has_bits & 0x00000002u) ? CreateMaybeMessage<::pg_query::Node>(arena, *from._impl_.where_clause_) : nullptr; // @@protoc_insertion_point(copy_constructor:pg_query.PublicationTable) } inline PROTOBUF_NDEBUG_INLINE PublicationTable::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, columns_{visibility, arena} {} inline void PublicationTable::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, relation_), 0, offsetof(Impl_, where_clause_) - offsetof(Impl_, relation_) + sizeof(Impl_::where_clause_)); } PublicationTable::~PublicationTable() { // @@protoc_insertion_point(destructor:pg_query.PublicationTable) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void PublicationTable::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); delete _impl_.relation_; delete _impl_.where_clause_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void PublicationTable::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PublicationTable) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.columns_.Clear(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.relation_ != nullptr); _impl_.relation_->Clear(); } if (cached_has_bits & 0x00000002u) { ABSL_DCHECK(_impl_.where_clause_ != nullptr); _impl_.where_clause_->Clear(); } } _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* PublicationTable::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 3, 0, 2> PublicationTable::_table_ = { { PROTOBUF_FIELD_OFFSET(PublicationTable, _impl_._has_bits_), 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 3, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_PublicationTable_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {::_pbi::TcParser::FastMtS1, {10, 0, 0, PROTOBUF_FIELD_OFFSET(PublicationTable, _impl_.relation_)}}, // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; {::_pbi::TcParser::FastMtS1, {18, 1, 1, PROTOBUF_FIELD_OFFSET(PublicationTable, _impl_.where_clause_)}}, // repeated .pg_query.Node columns = 3 [json_name = "columns"]; {::_pbi::TcParser::FastMtR1, {26, 63, 2, PROTOBUF_FIELD_OFFSET(PublicationTable, _impl_.columns_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.RangeVar relation = 1 [json_name = "relation"]; {PROTOBUF_FIELD_OFFSET(PublicationTable, _impl_.relation_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; {PROTOBUF_FIELD_OFFSET(PublicationTable, _impl_.where_clause_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node columns = 3 [json_name = "columns"]; {PROTOBUF_FIELD_OFFSET(PublicationTable, _impl_.columns_), -1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::RangeVar>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ }}, }; ::uint8_t* PublicationTable::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PublicationTable) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; cached_has_bits = _impl_._has_bits_[0]; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 1, _Internal::relation(this), _Internal::relation(this).GetCachedSize(), target, stream); } // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; if (cached_has_bits & 0x00000002u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 2, _Internal::where_clause(this), _Internal::where_clause(this).GetCachedSize(), target, stream); } // repeated .pg_query.Node columns = 3 [json_name = "columns"]; for (unsigned i = 0, n = static_cast(this->_internal_columns_size()); i < n; i++) { const auto& repfield = this->_internal_columns().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.PublicationTable) return target; } ::size_t PublicationTable::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.PublicationTable) ::size_t total_size = 0; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node columns = 3 [json_name = "columns"]; total_size += 1UL * this->_internal_columns_size(); for (const auto& msg : this->_internal_columns()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.relation_); } // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; if (cached_has_bits & 0x00000002u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.where_clause_); } } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData PublicationTable::_class_data_ = { PublicationTable::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* PublicationTable::GetClassData() const { return &_class_data_; } void PublicationTable::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PublicationTable) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_columns()->MergeFrom( from._internal_columns()); cached_has_bits = from._impl_._has_bits_[0]; if (cached_has_bits & 0x00000003u) { if (cached_has_bits & 0x00000001u) { _this->_internal_mutable_relation()->::pg_query::RangeVar::MergeFrom( from._internal_relation()); } if (cached_has_bits & 0x00000002u) { _this->_internal_mutable_where_clause()->::pg_query::Node::MergeFrom( from._internal_where_clause()); } } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void PublicationTable::CopyFrom(const PublicationTable& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PublicationTable) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool PublicationTable::IsInitialized() const { return true; } ::_pbi::CachedSize* PublicationTable::AccessCachedSize() const { return &_impl_._cached_size_; } void PublicationTable::InternalSwap(PublicationTable* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); _impl_.columns_.InternalSwap(&other->_impl_.columns_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(PublicationTable, _impl_.where_clause_) + sizeof(PublicationTable::_impl_.where_clause_) - PROTOBUF_FIELD_OFFSET(PublicationTable, _impl_.relation_)>( reinterpret_cast(&_impl_.relation_), reinterpret_cast(&other->_impl_.relation_)); } ::google::protobuf::Metadata PublicationTable::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[264]); } // =================================================================== class PublicationObjSpec::_Internal { public: using HasBits = decltype(std::declval()._impl_._has_bits_); static constexpr ::int32_t kHasBitsOffset = 8 * PROTOBUF_FIELD_OFFSET(PublicationObjSpec, _impl_._has_bits_); static const ::pg_query::PublicationTable& pubtable(const PublicationObjSpec* msg); static void set_has_pubtable(HasBits* has_bits) { (*has_bits)[0] |= 1u; } }; const ::pg_query::PublicationTable& PublicationObjSpec::_Internal::pubtable(const PublicationObjSpec* msg) { return *msg->_impl_.pubtable_; } PublicationObjSpec::PublicationObjSpec(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PublicationObjSpec) } inline PROTOBUF_NDEBUG_INLINE PublicationObjSpec::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : _has_bits_{from._has_bits_}, _cached_size_{0}, name_(arena, from.name_) {} PublicationObjSpec::PublicationObjSpec( ::google::protobuf::Arena* arena, const PublicationObjSpec& from) : ::google::protobuf::Message(arena) { PublicationObjSpec* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::uint32_t cached_has_bits = _impl_._has_bits_[0]; _impl_.pubtable_ = (cached_has_bits & 0x00000001u) ? CreateMaybeMessage<::pg_query::PublicationTable>(arena, *from._impl_.pubtable_) : nullptr; ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, pubobjtype_), reinterpret_cast(&from._impl_) + offsetof(Impl_, pubobjtype_), offsetof(Impl_, location_) - offsetof(Impl_, pubobjtype_) + sizeof(Impl_::location_)); // @@protoc_insertion_point(copy_constructor:pg_query.PublicationObjSpec) } inline PROTOBUF_NDEBUG_INLINE PublicationObjSpec::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0}, name_(arena) {} inline void PublicationObjSpec::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, pubtable_), 0, offsetof(Impl_, location_) - offsetof(Impl_, pubtable_) + sizeof(Impl_::location_)); } PublicationObjSpec::~PublicationObjSpec() { // @@protoc_insertion_point(destructor:pg_query.PublicationObjSpec) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void PublicationObjSpec::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.name_.Destroy(); delete _impl_.pubtable_; _impl_.~Impl_(); } PROTOBUF_NOINLINE void PublicationObjSpec::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PublicationObjSpec) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.name_.ClearToEmpty(); cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { ABSL_DCHECK(_impl_.pubtable_ != nullptr); _impl_.pubtable_->Clear(); } ::memset(&_impl_.pubobjtype_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.location_) - reinterpret_cast(&_impl_.pubobjtype_)) + sizeof(_impl_.location_)); _impl_._has_bits_.Clear(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* PublicationObjSpec::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 1, 40, 2> PublicationObjSpec::_table_ = { { PROTOBUF_FIELD_OFFSET(PublicationObjSpec, _impl_._has_bits_), 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 1, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_PublicationObjSpec_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // int32 location = 4 [json_name = "location"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PublicationObjSpec, _impl_.location_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(PublicationObjSpec, _impl_.location_)}}, // .pg_query.PublicationObjSpecType pubobjtype = 1 [json_name = "pubobjtype"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PublicationObjSpec, _impl_.pubobjtype_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(PublicationObjSpec, _impl_.pubobjtype_)}}, // string name = 2 [json_name = "name"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(PublicationObjSpec, _impl_.name_)}}, // .pg_query.PublicationTable pubtable = 3 [json_name = "pubtable"]; {::_pbi::TcParser::FastMtS1, {26, 0, 0, PROTOBUF_FIELD_OFFSET(PublicationObjSpec, _impl_.pubtable_)}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.PublicationObjSpecType pubobjtype = 1 [json_name = "pubobjtype"]; {PROTOBUF_FIELD_OFFSET(PublicationObjSpec, _impl_.pubobjtype_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // string name = 2 [json_name = "name"]; {PROTOBUF_FIELD_OFFSET(PublicationObjSpec, _impl_.name_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // .pg_query.PublicationTable pubtable = 3 [json_name = "pubtable"]; {PROTOBUF_FIELD_OFFSET(PublicationObjSpec, _impl_.pubtable_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)}, // int32 location = 4 [json_name = "location"]; {PROTOBUF_FIELD_OFFSET(PublicationObjSpec, _impl_.location_), -1, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::PublicationTable>()}, }}, {{ "\33\0\4\0\0\0\0\0" "pg_query.PublicationObjSpec" "name" }}, }; ::uint8_t* PublicationObjSpec::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PublicationObjSpec) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.PublicationObjSpecType pubobjtype = 1 [json_name = "pubobjtype"]; if (this->_internal_pubobjtype() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_pubobjtype(), target); } // string name = 2 [json_name = "name"]; if (!this->_internal_name().empty()) { const std::string& _s = this->_internal_name(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.PublicationObjSpec.name"); target = stream->WriteStringMaybeAliased(2, _s, target); } cached_has_bits = _impl_._has_bits_[0]; // .pg_query.PublicationTable pubtable = 3 [json_name = "pubtable"]; if (cached_has_bits & 0x00000001u) { target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( 3, _Internal::pubtable(this), _Internal::pubtable(this).GetCachedSize(), target, stream); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<4>( stream, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.PublicationObjSpec) return target; } ::size_t PublicationObjSpec::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.PublicationObjSpec) ::size_t total_size = 0; ::uint32_t 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->_internal_name().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.PublicationTable pubtable = 3 [json_name = "pubtable"]; cached_has_bits = _impl_._has_bits_[0]; if (cached_has_bits & 0x00000001u) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.pubtable_); } // .pg_query.PublicationObjSpecType pubobjtype = 1 [json_name = "pubobjtype"]; if (this->_internal_pubobjtype() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_pubobjtype()); } // int32 location = 4 [json_name = "location"]; if (this->_internal_location() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_location()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData PublicationObjSpec::_class_data_ = { PublicationObjSpec::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* PublicationObjSpec::GetClassData() const { return &_class_data_; } void PublicationObjSpec::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PublicationObjSpec) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_name().empty()) { _this->_internal_set_name(from._internal_name()); } if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) { _this->_internal_mutable_pubtable()->::pg_query::PublicationTable::MergeFrom( from._internal_pubtable()); } if (from._internal_pubobjtype() != 0) { _this->_internal_set_pubobjtype(from._internal_pubobjtype()); } if (from._internal_location() != 0) { _this->_internal_set_location(from._internal_location()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void PublicationObjSpec::CopyFrom(const PublicationObjSpec& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PublicationObjSpec) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool PublicationObjSpec::IsInitialized() const { return true; } ::_pbi::CachedSize* PublicationObjSpec::AccessCachedSize() const { return &_impl_._cached_size_; } void PublicationObjSpec::InternalSwap(PublicationObjSpec* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(PublicationObjSpec, _impl_.location_) + sizeof(PublicationObjSpec::_impl_.location_) - PROTOBUF_FIELD_OFFSET(PublicationObjSpec, _impl_.pubtable_)>( reinterpret_cast(&_impl_.pubtable_), reinterpret_cast(&other->_impl_.pubtable_)); } ::google::protobuf::Metadata PublicationObjSpec::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[265]); } // =================================================================== class CreatePublicationStmt::_Internal { public: }; CreatePublicationStmt::CreatePublicationStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreatePublicationStmt) } inline PROTOBUF_NDEBUG_INLINE CreatePublicationStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : options_{visibility, arena, from.options_}, pubobjects_{visibility, arena, from.pubobjects_}, pubname_(arena, from.pubname_), _cached_size_{0} {} CreatePublicationStmt::CreatePublicationStmt( ::google::protobuf::Arena* arena, const CreatePublicationStmt& from) : ::google::protobuf::Message(arena) { CreatePublicationStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.for_all_tables_ = from._impl_.for_all_tables_; // @@protoc_insertion_point(copy_constructor:pg_query.CreatePublicationStmt) } inline PROTOBUF_NDEBUG_INLINE CreatePublicationStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : options_{visibility, arena}, pubobjects_{visibility, arena}, pubname_(arena), _cached_size_{0} {} inline void CreatePublicationStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.for_all_tables_ = {}; } CreatePublicationStmt::~CreatePublicationStmt() { // @@protoc_insertion_point(destructor:pg_query.CreatePublicationStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreatePublicationStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.pubname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreatePublicationStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreatePublicationStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.pubobjects_.Clear(); _impl_.pubname_.ClearToEmpty(); _impl_.for_all_tables_ = false; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreatePublicationStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 46, 2> CreatePublicationStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreatePublicationStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // bool for_all_tables = 4 [json_name = "for_all_tables"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublicationStmt, _impl_.for_all_tables_)}}, // string pubname = 1 [json_name = "pubname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublicationStmt, _impl_.pubname_)}}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CreatePublicationStmt, _impl_.options_)}}, // repeated .pg_query.Node pubobjects = 3 [json_name = "pubobjects"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(CreatePublicationStmt, _impl_.pubobjects_)}}, }}, {{ 65535, 65535 }}, {{ // string pubname = 1 [json_name = "pubname"]; {PROTOBUF_FIELD_OFFSET(CreatePublicationStmt, _impl_.pubname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(CreatePublicationStmt, _impl_.options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node pubobjects = 3 [json_name = "pubobjects"]; {PROTOBUF_FIELD_OFFSET(CreatePublicationStmt, _impl_.pubobjects_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool for_all_tables = 4 [json_name = "for_all_tables"]; {PROTOBUF_FIELD_OFFSET(CreatePublicationStmt, _impl_.for_all_tables_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\36\7\0\0\0\0\0\0" "pg_query.CreatePublicationStmt" "pubname" }}, }; ::uint8_t* CreatePublicationStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreatePublicationStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string pubname = 1 [json_name = "pubname"]; if (!this->_internal_pubname().empty()) { const std::string& _s = this->_internal_pubname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreatePublicationStmt.pubname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node pubobjects = 3 [json_name = "pubobjects"]; for (unsigned i = 0, n = static_cast(this->_internal_pubobjects_size()); i < n; i++) { const auto& repfield = this->_internal_pubobjects().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // bool for_all_tables = 4 [json_name = "for_all_tables"]; if (this->_internal_for_all_tables() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_for_all_tables(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node pubobjects = 3 [json_name = "pubobjects"]; total_size += 1UL * this->_internal_pubobjects_size(); for (const auto& msg : this->_internal_pubobjects()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string pubname = 1 [json_name = "pubname"]; if (!this->_internal_pubname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_pubname()); } // bool for_all_tables = 4 [json_name = "for_all_tables"]; if (this->_internal_for_all_tables() != 0) { total_size += 2; } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreatePublicationStmt::_class_data_ = { CreatePublicationStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreatePublicationStmt::GetClassData() const { return &_class_data_; } void CreatePublicationStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreatePublicationStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); _this->_internal_mutable_pubobjects()->MergeFrom( from._internal_pubobjects()); if (!from._internal_pubname().empty()) { _this->_internal_set_pubname(from._internal_pubname()); } if (from._internal_for_all_tables() != 0) { _this->_internal_set_for_all_tables(from._internal_for_all_tables()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreatePublicationStmt::CopyFrom(const CreatePublicationStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreatePublicationStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreatePublicationStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreatePublicationStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreatePublicationStmt::InternalSwap(CreatePublicationStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.options_.InternalSwap(&other->_impl_.options_); _impl_.pubobjects_.InternalSwap(&other->_impl_.pubobjects_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.pubname_, &other->_impl_.pubname_, arena); swap(_impl_.for_all_tables_, other->_impl_.for_all_tables_); } ::google::protobuf::Metadata CreatePublicationStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[266]); } // =================================================================== class AlterPublicationStmt::_Internal { public: }; AlterPublicationStmt::AlterPublicationStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterPublicationStmt) } inline PROTOBUF_NDEBUG_INLINE AlterPublicationStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : options_{visibility, arena, from.options_}, pubobjects_{visibility, arena, from.pubobjects_}, pubname_(arena, from.pubname_), _cached_size_{0} {} AlterPublicationStmt::AlterPublicationStmt( ::google::protobuf::Arena* arena, const AlterPublicationStmt& from) : ::google::protobuf::Message(arena) { AlterPublicationStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, for_all_tables_), reinterpret_cast(&from._impl_) + offsetof(Impl_, for_all_tables_), offsetof(Impl_, action_) - offsetof(Impl_, for_all_tables_) + sizeof(Impl_::action_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterPublicationStmt) } inline PROTOBUF_NDEBUG_INLINE AlterPublicationStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : options_{visibility, arena}, pubobjects_{visibility, arena}, pubname_(arena), _cached_size_{0} {} inline void AlterPublicationStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, for_all_tables_), 0, offsetof(Impl_, action_) - offsetof(Impl_, for_all_tables_) + sizeof(Impl_::action_)); } AlterPublicationStmt::~AlterPublicationStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterPublicationStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterPublicationStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.pubname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterPublicationStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterPublicationStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.options_.Clear(); _impl_.pubobjects_.Clear(); _impl_.pubname_.ClearToEmpty(); ::memset(&_impl_.for_all_tables_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.action_) - reinterpret_cast(&_impl_.for_all_tables_)) + sizeof(_impl_.action_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterPublicationStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 45, 2> AlterPublicationStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterPublicationStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string pubname = 1 [json_name = "pubname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(AlterPublicationStmt, _impl_.pubname_)}}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterPublicationStmt, _impl_.options_)}}, // repeated .pg_query.Node pubobjects = 3 [json_name = "pubobjects"]; {::_pbi::TcParser::FastMtR1, {26, 63, 1, PROTOBUF_FIELD_OFFSET(AlterPublicationStmt, _impl_.pubobjects_)}}, // bool for_all_tables = 4 [json_name = "for_all_tables"]; {::_pbi::TcParser::SingularVarintNoZag1(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(AlterPublicationStmt, _impl_.for_all_tables_)}}, // .pg_query.AlterPublicationAction action = 5 [json_name = "action"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterPublicationStmt, _impl_.action_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(AlterPublicationStmt, _impl_.action_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // string pubname = 1 [json_name = "pubname"]; {PROTOBUF_FIELD_OFFSET(AlterPublicationStmt, _impl_.pubname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node options = 2 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(AlterPublicationStmt, _impl_.options_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node pubobjects = 3 [json_name = "pubobjects"]; {PROTOBUF_FIELD_OFFSET(AlterPublicationStmt, _impl_.pubobjects_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // bool for_all_tables = 4 [json_name = "for_all_tables"]; {PROTOBUF_FIELD_OFFSET(AlterPublicationStmt, _impl_.for_all_tables_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.AlterPublicationAction action = 5 [json_name = "action"]; {PROTOBUF_FIELD_OFFSET(AlterPublicationStmt, _impl_.action_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\35\7\0\0\0\0\0\0" "pg_query.AlterPublicationStmt" "pubname" }}, }; ::uint8_t* AlterPublicationStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterPublicationStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string pubname = 1 [json_name = "pubname"]; if (!this->_internal_pubname().empty()) { const std::string& _s = this->_internal_pubname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterPublicationStmt.pubname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node pubobjects = 3 [json_name = "pubobjects"]; for (unsigned i = 0, n = static_cast(this->_internal_pubobjects_size()); i < n; i++) { const auto& repfield = this->_internal_pubobjects().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // bool for_all_tables = 4 [json_name = "for_all_tables"]; if (this->_internal_for_all_tables() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 4, this->_internal_for_all_tables(), target); } // .pg_query.AlterPublicationAction action = 5 [json_name = "action"]; if (this->_internal_action() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 5, this->_internal_action(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node pubobjects = 3 [json_name = "pubobjects"]; total_size += 1UL * this->_internal_pubobjects_size(); for (const auto& msg : this->_internal_pubobjects()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string pubname = 1 [json_name = "pubname"]; if (!this->_internal_pubname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_pubname()); } // bool for_all_tables = 4 [json_name = "for_all_tables"]; if (this->_internal_for_all_tables() != 0) { total_size += 2; } // .pg_query.AlterPublicationAction action = 5 [json_name = "action"]; if (this->_internal_action() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_action()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterPublicationStmt::_class_data_ = { AlterPublicationStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterPublicationStmt::GetClassData() const { return &_class_data_; } void AlterPublicationStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterPublicationStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_options()->MergeFrom( from._internal_options()); _this->_internal_mutable_pubobjects()->MergeFrom( from._internal_pubobjects()); if (!from._internal_pubname().empty()) { _this->_internal_set_pubname(from._internal_pubname()); } if (from._internal_for_all_tables() != 0) { _this->_internal_set_for_all_tables(from._internal_for_all_tables()); } if (from._internal_action() != 0) { _this->_internal_set_action(from._internal_action()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterPublicationStmt::CopyFrom(const AlterPublicationStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterPublicationStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterPublicationStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterPublicationStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterPublicationStmt::InternalSwap(AlterPublicationStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.options_.InternalSwap(&other->_impl_.options_); _impl_.pubobjects_.InternalSwap(&other->_impl_.pubobjects_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.pubname_, &other->_impl_.pubname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterPublicationStmt, _impl_.action_) + sizeof(AlterPublicationStmt::_impl_.action_) - PROTOBUF_FIELD_OFFSET(AlterPublicationStmt, _impl_.for_all_tables_)>( reinterpret_cast(&_impl_.for_all_tables_), reinterpret_cast(&other->_impl_.for_all_tables_)); } ::google::protobuf::Metadata AlterPublicationStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[267]); } // =================================================================== class CreateSubscriptionStmt::_Internal { public: }; CreateSubscriptionStmt::CreateSubscriptionStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateSubscriptionStmt) } inline PROTOBUF_NDEBUG_INLINE CreateSubscriptionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : publication_{visibility, arena, from.publication_}, options_{visibility, arena, from.options_}, subname_(arena, from.subname_), conninfo_(arena, from.conninfo_), _cached_size_{0} {} CreateSubscriptionStmt::CreateSubscriptionStmt( ::google::protobuf::Arena* arena, const CreateSubscriptionStmt& from) : ::google::protobuf::Message(arena) { CreateSubscriptionStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); // @@protoc_insertion_point(copy_constructor:pg_query.CreateSubscriptionStmt) } inline PROTOBUF_NDEBUG_INLINE CreateSubscriptionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : publication_{visibility, arena}, options_{visibility, arena}, subname_(arena), conninfo_(arena), _cached_size_{0} {} inline void CreateSubscriptionStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); } CreateSubscriptionStmt::~CreateSubscriptionStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateSubscriptionStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void CreateSubscriptionStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.subname_.Destroy(); _impl_.conninfo_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void CreateSubscriptionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateSubscriptionStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.publication_.Clear(); _impl_.options_.Clear(); _impl_.subname_.ClearToEmpty(); _impl_.conninfo_.ClearToEmpty(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* CreateSubscriptionStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 4, 2, 55, 2> CreateSubscriptionStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 4, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967280, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_CreateSubscriptionStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ // repeated .pg_query.Node options = 4 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {34, 63, 1, PROTOBUF_FIELD_OFFSET(CreateSubscriptionStmt, _impl_.options_)}}, // string subname = 1 [json_name = "subname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriptionStmt, _impl_.subname_)}}, // string conninfo = 2 [json_name = "conninfo"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriptionStmt, _impl_.conninfo_)}}, // repeated .pg_query.Node publication = 3 [json_name = "publication"]; {::_pbi::TcParser::FastMtR1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(CreateSubscriptionStmt, _impl_.publication_)}}, }}, {{ 65535, 65535 }}, {{ // string subname = 1 [json_name = "subname"]; {PROTOBUF_FIELD_OFFSET(CreateSubscriptionStmt, _impl_.subname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string conninfo = 2 [json_name = "conninfo"]; {PROTOBUF_FIELD_OFFSET(CreateSubscriptionStmt, _impl_.conninfo_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node publication = 3 [json_name = "publication"]; {PROTOBUF_FIELD_OFFSET(CreateSubscriptionStmt, _impl_.publication_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 4 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(CreateSubscriptionStmt, _impl_.options_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\37\7\10\0\0\0\0\0" "pg_query.CreateSubscriptionStmt" "subname" "conninfo" }}, }; ::uint8_t* CreateSubscriptionStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateSubscriptionStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string subname = 1 [json_name = "subname"]; if (!this->_internal_subname().empty()) { const std::string& _s = this->_internal_subname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateSubscriptionStmt.subname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // string conninfo = 2 [json_name = "conninfo"]; if (!this->_internal_conninfo().empty()) { const std::string& _s = this->_internal_conninfo(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.CreateSubscriptionStmt.conninfo"); target = stream->WriteStringMaybeAliased(2, _s, target); } // repeated .pg_query.Node publication = 3 [json_name = "publication"]; for (unsigned i = 0, n = static_cast(this->_internal_publication_size()); i < n; i++) { const auto& repfield = this->_internal_publication().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 4 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_publication()) { total_size += ::google::protobuf::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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string subname = 1 [json_name = "subname"]; if (!this->_internal_subname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_subname()); } // string conninfo = 2 [json_name = "conninfo"]; if (!this->_internal_conninfo().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_conninfo()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData CreateSubscriptionStmt::_class_data_ = { CreateSubscriptionStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* CreateSubscriptionStmt::GetClassData() const { return &_class_data_; } void CreateSubscriptionStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateSubscriptionStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_publication()->MergeFrom( from._internal_publication()); _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_subname().empty()) { _this->_internal_set_subname(from._internal_subname()); } if (!from._internal_conninfo().empty()) { _this->_internal_set_conninfo(from._internal_conninfo()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void CreateSubscriptionStmt::CopyFrom(const CreateSubscriptionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateSubscriptionStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool CreateSubscriptionStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* CreateSubscriptionStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void CreateSubscriptionStmt::InternalSwap(CreateSubscriptionStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.publication_.InternalSwap(&other->_impl_.publication_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.subname_, &other->_impl_.subname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.conninfo_, &other->_impl_.conninfo_, arena); } ::google::protobuf::Metadata CreateSubscriptionStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[268]); } // =================================================================== class AlterSubscriptionStmt::_Internal { public: }; AlterSubscriptionStmt::AlterSubscriptionStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterSubscriptionStmt) } inline PROTOBUF_NDEBUG_INLINE AlterSubscriptionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : publication_{visibility, arena, from.publication_}, options_{visibility, arena, from.options_}, subname_(arena, from.subname_), conninfo_(arena, from.conninfo_), _cached_size_{0} {} AlterSubscriptionStmt::AlterSubscriptionStmt( ::google::protobuf::Arena* arena, const AlterSubscriptionStmt& from) : ::google::protobuf::Message(arena) { AlterSubscriptionStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); _impl_.kind_ = from._impl_.kind_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterSubscriptionStmt) } inline PROTOBUF_NDEBUG_INLINE AlterSubscriptionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : publication_{visibility, arena}, options_{visibility, arena}, subname_(arena), conninfo_(arena), _cached_size_{0} {} inline void AlterSubscriptionStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); _impl_.kind_ = {}; } AlterSubscriptionStmt::~AlterSubscriptionStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterSubscriptionStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void AlterSubscriptionStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.subname_.Destroy(); _impl_.conninfo_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void AlterSubscriptionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterSubscriptionStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.publication_.Clear(); _impl_.options_.Clear(); _impl_.subname_.ClearToEmpty(); _impl_.conninfo_.ClearToEmpty(); _impl_.kind_ = 0; _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* AlterSubscriptionStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 5, 2, 54, 2> AlterSubscriptionStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967264, // skipmap offsetof(decltype(_table_), field_entries), 5, // num_field_entries 2, // num_aux_entries offsetof(decltype(_table_), aux_entries), &_AlterSubscriptionStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // .pg_query.AlterSubscriptionType kind = 1 [json_name = "kind"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AlterSubscriptionStmt, _impl_.kind_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(AlterSubscriptionStmt, _impl_.kind_)}}, // string subname = 2 [json_name = "subname"]; {::_pbi::TcParser::FastUS1, {18, 63, 0, PROTOBUF_FIELD_OFFSET(AlterSubscriptionStmt, _impl_.subname_)}}, // string conninfo = 3 [json_name = "conninfo"]; {::_pbi::TcParser::FastUS1, {26, 63, 0, PROTOBUF_FIELD_OFFSET(AlterSubscriptionStmt, _impl_.conninfo_)}}, // repeated .pg_query.Node publication = 4 [json_name = "publication"]; {::_pbi::TcParser::FastMtR1, {34, 63, 0, PROTOBUF_FIELD_OFFSET(AlterSubscriptionStmt, _impl_.publication_)}}, // repeated .pg_query.Node options = 5 [json_name = "options"]; {::_pbi::TcParser::FastMtR1, {42, 63, 1, PROTOBUF_FIELD_OFFSET(AlterSubscriptionStmt, _impl_.options_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // .pg_query.AlterSubscriptionType kind = 1 [json_name = "kind"]; {PROTOBUF_FIELD_OFFSET(AlterSubscriptionStmt, _impl_.kind_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // string subname = 2 [json_name = "subname"]; {PROTOBUF_FIELD_OFFSET(AlterSubscriptionStmt, _impl_.subname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // string conninfo = 3 [json_name = "conninfo"]; {PROTOBUF_FIELD_OFFSET(AlterSubscriptionStmt, _impl_.conninfo_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // repeated .pg_query.Node publication = 4 [json_name = "publication"]; {PROTOBUF_FIELD_OFFSET(AlterSubscriptionStmt, _impl_.publication_), 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, // repeated .pg_query.Node options = 5 [json_name = "options"]; {PROTOBUF_FIELD_OFFSET(AlterSubscriptionStmt, _impl_.options_), 0, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, }}, {{ {::_pbi::TcParser::GetTable<::pg_query::Node>()}, {::_pbi::TcParser::GetTable<::pg_query::Node>()}, }}, {{ "\36\0\7\10\0\0\0\0" "pg_query.AlterSubscriptionStmt" "subname" "conninfo" }}, }; ::uint8_t* AlterSubscriptionStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterSubscriptionStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // .pg_query.AlterSubscriptionType kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // string subname = 2 [json_name = "subname"]; if (!this->_internal_subname().empty()) { const std::string& _s = this->_internal_subname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterSubscriptionStmt.subname"); target = stream->WriteStringMaybeAliased(2, _s, target); } // string conninfo = 3 [json_name = "conninfo"]; if (!this->_internal_conninfo().empty()) { const std::string& _s = this->_internal_conninfo(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.AlterSubscriptionStmt.conninfo"); target = stream->WriteStringMaybeAliased(3, _s, target); } // repeated .pg_query.Node publication = 4 [json_name = "publication"]; for (unsigned i = 0, n = static_cast(this->_internal_publication_size()); i < n; i++) { const auto& repfield = this->_internal_publication().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream); } // repeated .pg_query.Node options = 5 [json_name = "options"]; for (unsigned i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { const auto& repfield = this->_internal_options().Get(i); target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessage(5, repfield, repfield.GetCachedSize(), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_publication()) { total_size += ::google::protobuf::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->_internal_options()) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); } // string subname = 2 [json_name = "subname"]; if (!this->_internal_subname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_subname()); } // string conninfo = 3 [json_name = "conninfo"]; if (!this->_internal_conninfo().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_conninfo()); } // .pg_query.AlterSubscriptionType kind = 1 [json_name = "kind"]; if (this->_internal_kind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_kind()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData AlterSubscriptionStmt::_class_data_ = { AlterSubscriptionStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* AlterSubscriptionStmt::GetClassData() const { return &_class_data_; } void AlterSubscriptionStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterSubscriptionStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; _this->_internal_mutable_publication()->MergeFrom( from._internal_publication()); _this->_internal_mutable_options()->MergeFrom( from._internal_options()); if (!from._internal_subname().empty()) { _this->_internal_set_subname(from._internal_subname()); } if (!from._internal_conninfo().empty()) { _this->_internal_set_conninfo(from._internal_conninfo()); } if (from._internal_kind() != 0) { _this->_internal_set_kind(from._internal_kind()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void AlterSubscriptionStmt::CopyFrom(const AlterSubscriptionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterSubscriptionStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool AlterSubscriptionStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* AlterSubscriptionStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void AlterSubscriptionStmt::InternalSwap(AlterSubscriptionStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); _impl_.publication_.InternalSwap(&other->_impl_.publication_); _impl_.options_.InternalSwap(&other->_impl_.options_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.subname_, &other->_impl_.subname_, arena); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.conninfo_, &other->_impl_.conninfo_, arena); swap(_impl_.kind_, other->_impl_.kind_); } ::google::protobuf::Metadata AlterSubscriptionStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[269]); } // =================================================================== class DropSubscriptionStmt::_Internal { public: }; DropSubscriptionStmt::DropSubscriptionStmt(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DropSubscriptionStmt) } inline PROTOBUF_NDEBUG_INLINE DropSubscriptionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from) : subname_(arena, from.subname_), _cached_size_{0} {} DropSubscriptionStmt::DropSubscriptionStmt( ::google::protobuf::Arena* arena, const DropSubscriptionStmt& from) : ::google::protobuf::Message(arena) { DropSubscriptionStmt* const _this = this; (void)_this; _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( from._internal_metadata_); new (&_impl_) Impl_(internal_visibility(), arena, from._impl_); ::memcpy(reinterpret_cast(&_impl_) + offsetof(Impl_, missing_ok_), reinterpret_cast(&from._impl_) + offsetof(Impl_, missing_ok_), offsetof(Impl_, behavior_) - offsetof(Impl_, missing_ok_) + sizeof(Impl_::behavior_)); // @@protoc_insertion_point(copy_constructor:pg_query.DropSubscriptionStmt) } inline PROTOBUF_NDEBUG_INLINE DropSubscriptionStmt::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : subname_(arena), _cached_size_{0} {} inline void DropSubscriptionStmt::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, missing_ok_), 0, offsetof(Impl_, behavior_) - offsetof(Impl_, missing_ok_) + sizeof(Impl_::behavior_)); } DropSubscriptionStmt::~DropSubscriptionStmt() { // @@protoc_insertion_point(destructor:pg_query.DropSubscriptionStmt) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void DropSubscriptionStmt::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.subname_.Destroy(); _impl_.~Impl_(); } PROTOBUF_NOINLINE void DropSubscriptionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DropSubscriptionStmt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _impl_.subname_.ClearToEmpty(); ::memset(&_impl_.missing_ok_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.behavior_) - reinterpret_cast(&_impl_.missing_ok_)) + sizeof(_impl_.behavior_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* DropSubscriptionStmt::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<2, 3, 0, 45, 2> DropSubscriptionStmt::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 3, 24, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967288, // skipmap offsetof(decltype(_table_), field_entries), 3, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_DropSubscriptionStmt_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // string subname = 1 [json_name = "subname"]; {::_pbi::TcParser::FastUS1, {10, 63, 0, PROTOBUF_FIELD_OFFSET(DropSubscriptionStmt, _impl_.subname_)}}, // bool missing_ok = 2 [json_name = "missing_ok"]; {::_pbi::TcParser::SingularVarintNoZag1(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(DropSubscriptionStmt, _impl_.missing_ok_)}}, // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DropSubscriptionStmt, _impl_.behavior_), 63>(), {24, 63, 0, PROTOBUF_FIELD_OFFSET(DropSubscriptionStmt, _impl_.behavior_)}}, }}, {{ 65535, 65535 }}, {{ // string subname = 1 [json_name = "subname"]; {PROTOBUF_FIELD_OFFSET(DropSubscriptionStmt, _impl_.subname_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)}, // bool missing_ok = 2 [json_name = "missing_ok"]; {PROTOBUF_FIELD_OFFSET(DropSubscriptionStmt, _impl_.missing_ok_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kBool)}, // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; {PROTOBUF_FIELD_OFFSET(DropSubscriptionStmt, _impl_.behavior_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, }}, // no aux_entries {{ "\35\7\0\0\0\0\0\0" "pg_query.DropSubscriptionStmt" "subname" }}, }; ::uint8_t* DropSubscriptionStmt::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DropSubscriptionStmt) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // string subname = 1 [json_name = "subname"]; if (!this->_internal_subname().empty()) { const std::string& _s = this->_internal_subname(); ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "pg_query.DropSubscriptionStmt.subname"); target = stream->WriteStringMaybeAliased(1, _s, target); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteBoolToArray( 2, this->_internal_missing_ok(), target); } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 3, this->_internal_behavior(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t 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->_internal_subname().empty()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->_internal_subname()); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->_internal_missing_ok() != 0) { total_size += 2; } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; if (this->_internal_behavior() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_behavior()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData DropSubscriptionStmt::_class_data_ = { DropSubscriptionStmt::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* DropSubscriptionStmt::GetClassData() const { return &_class_data_; } void DropSubscriptionStmt::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DropSubscriptionStmt) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (!from._internal_subname().empty()) { _this->_internal_set_subname(from._internal_subname()); } if (from._internal_missing_ok() != 0) { _this->_internal_set_missing_ok(from._internal_missing_ok()); } if (from._internal_behavior() != 0) { _this->_internal_set_behavior(from._internal_behavior()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void DropSubscriptionStmt::CopyFrom(const DropSubscriptionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DropSubscriptionStmt) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool DropSubscriptionStmt::IsInitialized() const { return true; } ::_pbi::CachedSize* DropSubscriptionStmt::AccessCachedSize() const { return &_impl_._cached_size_; } void DropSubscriptionStmt::InternalSwap(DropSubscriptionStmt* PROTOBUF_RESTRICT other) { using std::swap; auto* arena = GetArena(); ABSL_DCHECK_EQ(arena, other->GetArena()); _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.subname_, &other->_impl_.subname_, arena); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(DropSubscriptionStmt, _impl_.behavior_) + sizeof(DropSubscriptionStmt::_impl_.behavior_) - PROTOBUF_FIELD_OFFSET(DropSubscriptionStmt, _impl_.missing_ok_)>( reinterpret_cast(&_impl_.missing_ok_), reinterpret_cast(&other->_impl_.missing_ok_)); } ::google::protobuf::Metadata DropSubscriptionStmt::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[270]); } // =================================================================== class ScanToken::_Internal { public: }; ScanToken::ScanToken(::google::protobuf::Arena* arena) : ::google::protobuf::Message(arena) { SharedCtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ScanToken) } ScanToken::ScanToken( ::google::protobuf::Arena* arena, const ScanToken& from) : ScanToken(arena) { MergeFrom(from); } inline PROTOBUF_NDEBUG_INLINE ScanToken::Impl_::Impl_( ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena) : _cached_size_{0} {} inline void ScanToken::SharedCtor(::_pb::Arena* arena) { new (&_impl_) Impl_(internal_visibility(), arena); ::memset(reinterpret_cast(&_impl_) + offsetof(Impl_, start_), 0, offsetof(Impl_, keyword_kind_) - offsetof(Impl_, start_) + sizeof(Impl_::keyword_kind_)); } ScanToken::~ScanToken() { // @@protoc_insertion_point(destructor:pg_query.ScanToken) _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); SharedDtor(); } inline void ScanToken::SharedDtor() { ABSL_DCHECK(GetArena() == nullptr); _impl_.~Impl_(); } PROTOBUF_NOINLINE void ScanToken::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ScanToken) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; ::memset(&_impl_.start_, 0, static_cast<::size_t>( reinterpret_cast(&_impl_.keyword_kind_) - reinterpret_cast(&_impl_.start_)) + sizeof(_impl_.keyword_kind_)); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); } const char* ScanToken::_InternalParse( const char* ptr, ::_pbi::ParseContext* ctx) { ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header); return ptr; } PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ::_pbi::TcParseTable<3, 4, 0, 0, 2> ScanToken::_table_ = { { 0, // no _has_bits_ 0, // no _extensions_ 5, 56, // max_field_number, fast_idx_mask offsetof(decltype(_table_), field_lookup_table), 4294967268, // skipmap offsetof(decltype(_table_), field_entries), 4, // num_field_entries 0, // num_aux_entries offsetof(decltype(_table_), field_names), // no aux_entries &_ScanToken_default_instance_._instance, ::_pbi::TcParser::GenericFallback, // fallback }, {{ {::_pbi::TcParser::MiniParse, {}}, // int32 start = 1; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ScanToken, _impl_.start_), 63>(), {8, 63, 0, PROTOBUF_FIELD_OFFSET(ScanToken, _impl_.start_)}}, // int32 end = 2; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ScanToken, _impl_.end_), 63>(), {16, 63, 0, PROTOBUF_FIELD_OFFSET(ScanToken, _impl_.end_)}}, {::_pbi::TcParser::MiniParse, {}}, // .pg_query.Token token = 4; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ScanToken, _impl_.token_), 63>(), {32, 63, 0, PROTOBUF_FIELD_OFFSET(ScanToken, _impl_.token_)}}, // .pg_query.KeywordKind keyword_kind = 5; {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ScanToken, _impl_.keyword_kind_), 63>(), {40, 63, 0, PROTOBUF_FIELD_OFFSET(ScanToken, _impl_.keyword_kind_)}}, {::_pbi::TcParser::MiniParse, {}}, {::_pbi::TcParser::MiniParse, {}}, }}, {{ 65535, 65535 }}, {{ // int32 start = 1; {PROTOBUF_FIELD_OFFSET(ScanToken, _impl_.start_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // int32 end = 2; {PROTOBUF_FIELD_OFFSET(ScanToken, _impl_.end_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kInt32)}, // .pg_query.Token token = 4; {PROTOBUF_FIELD_OFFSET(ScanToken, _impl_.token_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, // .pg_query.KeywordKind keyword_kind = 5; {PROTOBUF_FIELD_OFFSET(ScanToken, _impl_.keyword_kind_), 0, 0, (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)}, }}, // no aux_entries {{ }}, }; ::uint8_t* ScanToken::_InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ScanToken) ::uint32_t cached_has_bits = 0; (void)cached_has_bits; // int32 start = 1; if (this->_internal_start() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<1>( stream, this->_internal_start(), target); } // int32 end = 2; if (this->_internal_end() != 0) { target = ::google::protobuf::internal::WireFormatLite:: WriteInt32ToArrayWithField<2>( stream, this->_internal_end(), target); } // .pg_query.Token token = 4; if (this->_internal_token() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 4, this->_internal_token(), target); } // .pg_query.KeywordKind keyword_kind = 5; if (this->_internal_keyword_kind() != 0) { target = stream->EnsureSpace(target); target = ::_pbi::WireFormatLite::WriteEnumToArray( 5, this->_internal_keyword_kind(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::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; ::uint32_t cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // int32 start = 1; if (this->_internal_start() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_start()); } // int32 end = 2; if (this->_internal_end() != 0) { total_size += ::_pbi::WireFormatLite::Int32SizePlusOne( this->_internal_end()); } // .pg_query.Token token = 4; if (this->_internal_token() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_token()); } // .pg_query.KeywordKind keyword_kind = 5; if (this->_internal_keyword_kind() != 0) { total_size += 1 + ::_pbi::WireFormatLite::EnumSize(this->_internal_keyword_kind()); } return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); } const ::google::protobuf::Message::ClassData ScanToken::_class_data_ = { ScanToken::MergeImpl, nullptr, // OnDemandRegisterArenaDtor }; const ::google::protobuf::Message::ClassData* ScanToken::GetClassData() const { return &_class_data_; } void ScanToken::MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg) { auto* const _this = static_cast(&to_msg); auto& from = static_cast(from_msg); // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ScanToken) ABSL_DCHECK_NE(&from, _this); ::uint32_t cached_has_bits = 0; (void) cached_has_bits; if (from._internal_start() != 0) { _this->_internal_set_start(from._internal_start()); } if (from._internal_end() != 0) { _this->_internal_set_end(from._internal_end()); } if (from._internal_token() != 0) { _this->_internal_set_token(from._internal_token()); } if (from._internal_keyword_kind() != 0) { _this->_internal_set_keyword_kind(from._internal_keyword_kind()); } _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_); } void ScanToken::CopyFrom(const ScanToken& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ScanToken) if (&from == this) return; Clear(); MergeFrom(from); } PROTOBUF_NOINLINE bool ScanToken::IsInitialized() const { return true; } ::_pbi::CachedSize* ScanToken::AccessCachedSize() const { return &_impl_._cached_size_; } void ScanToken::InternalSwap(ScanToken* PROTOBUF_RESTRICT other) { using std::swap; _internal_metadata_.InternalSwap(&other->_internal_metadata_); ::google::protobuf::internal::memswap< PROTOBUF_FIELD_OFFSET(ScanToken, _impl_.keyword_kind_) + sizeof(ScanToken::_impl_.keyword_kind_) - PROTOBUF_FIELD_OFFSET(ScanToken, _impl_.start_)>( reinterpret_cast(&_impl_.start_), reinterpret_cast(&other->_impl_.start_)); } ::google::protobuf::Metadata ScanToken::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_protobuf_2fpg_5fquery_2eproto_getter, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, file_level_metadata_protobuf_2fpg_5fquery_2eproto[271]); } // @@protoc_insertion_point(namespace_scope) } // namespace pg_query namespace google { namespace protobuf { } // namespace protobuf } // namespace google // @@protoc_insertion_point(global_scope) #include "google/protobuf/port_undef.inc" libpg_query-17-6.1.0/protobuf/pg_query.pb.h000066400000000000000000304473561477334012600205660ustar00rootroot00000000000000// Generated by the protocol buffer compiler. DO NOT EDIT! // source: protobuf/pg_query.proto // Protobuf C++ Version: 4.25.1 #ifndef GOOGLE_PROTOBUF_INCLUDED_protobuf_2fpg_5fquery_2eproto_2epb_2eh #define GOOGLE_PROTOBUF_INCLUDED_protobuf_2fpg_5fquery_2eproto_2epb_2eh #include #include #include #include #include "google/protobuf/port_def.inc" #if PROTOBUF_VERSION < 4025000 #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 // PROTOBUF_VERSION #if 4025001 < 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 // PROTOBUF_MIN_PROTOC_VERSION #include "google/protobuf/port_undef.inc" #include "google/protobuf/io/coded_stream.h" #include "google/protobuf/arena.h" #include "google/protobuf/arenastring.h" #include "google/protobuf/generated_message_bases.h" #include "google/protobuf/generated_message_tctable_decl.h" #include "google/protobuf/generated_message_util.h" #include "google/protobuf/metadata_lite.h" #include "google/protobuf/generated_message_reflection.h" #include "google/protobuf/message.h" #include "google/protobuf/repeated_field.h" // IWYU pragma: export #include "google/protobuf/extension_set.h" // IWYU pragma: export #include "google/protobuf/generated_enum_reflection.h" #include "google/protobuf/unknown_field_set.h" // @@protoc_insertion_point(includes) // Must be included last. #include "google/protobuf/port_def.inc" #define PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto namespace google { namespace protobuf { namespace internal { class AnyMetadata; } // namespace internal } // namespace protobuf } // namespace google // Internal implementation detail -- do not use these members. struct TableStruct_protobuf_2fpg_5fquery_2eproto { static const ::uint32_t offsets[]; }; extern const ::google::protobuf::internal::DescriptorTable descriptor_table_protobuf_2fpg_5fquery_2eproto; namespace pg_query { class A_ArrayExpr; struct A_ArrayExprDefaultTypeInternal; extern A_ArrayExprDefaultTypeInternal _A_ArrayExpr_default_instance_; class A_Const; struct A_ConstDefaultTypeInternal; extern A_ConstDefaultTypeInternal _A_Const_default_instance_; class A_Expr; struct A_ExprDefaultTypeInternal; extern A_ExprDefaultTypeInternal _A_Expr_default_instance_; class A_Indices; struct A_IndicesDefaultTypeInternal; extern A_IndicesDefaultTypeInternal _A_Indices_default_instance_; class A_Indirection; struct A_IndirectionDefaultTypeInternal; extern A_IndirectionDefaultTypeInternal _A_Indirection_default_instance_; class A_Star; struct A_StarDefaultTypeInternal; extern A_StarDefaultTypeInternal _A_Star_default_instance_; class AccessPriv; struct AccessPrivDefaultTypeInternal; extern AccessPrivDefaultTypeInternal _AccessPriv_default_instance_; class Aggref; struct AggrefDefaultTypeInternal; extern AggrefDefaultTypeInternal _Aggref_default_instance_; class Alias; struct AliasDefaultTypeInternal; extern AliasDefaultTypeInternal _Alias_default_instance_; class AlterCollationStmt; struct AlterCollationStmtDefaultTypeInternal; extern AlterCollationStmtDefaultTypeInternal _AlterCollationStmt_default_instance_; class AlterDatabaseRefreshCollStmt; struct AlterDatabaseRefreshCollStmtDefaultTypeInternal; extern AlterDatabaseRefreshCollStmtDefaultTypeInternal _AlterDatabaseRefreshCollStmt_default_instance_; class AlterDatabaseSetStmt; struct AlterDatabaseSetStmtDefaultTypeInternal; extern AlterDatabaseSetStmtDefaultTypeInternal _AlterDatabaseSetStmt_default_instance_; class AlterDatabaseStmt; struct AlterDatabaseStmtDefaultTypeInternal; extern AlterDatabaseStmtDefaultTypeInternal _AlterDatabaseStmt_default_instance_; class AlterDefaultPrivilegesStmt; struct AlterDefaultPrivilegesStmtDefaultTypeInternal; extern AlterDefaultPrivilegesStmtDefaultTypeInternal _AlterDefaultPrivilegesStmt_default_instance_; class AlterDomainStmt; struct AlterDomainStmtDefaultTypeInternal; extern AlterDomainStmtDefaultTypeInternal _AlterDomainStmt_default_instance_; class AlterEnumStmt; struct AlterEnumStmtDefaultTypeInternal; extern AlterEnumStmtDefaultTypeInternal _AlterEnumStmt_default_instance_; class AlterEventTrigStmt; struct AlterEventTrigStmtDefaultTypeInternal; extern AlterEventTrigStmtDefaultTypeInternal _AlterEventTrigStmt_default_instance_; class AlterExtensionContentsStmt; struct AlterExtensionContentsStmtDefaultTypeInternal; extern AlterExtensionContentsStmtDefaultTypeInternal _AlterExtensionContentsStmt_default_instance_; class AlterExtensionStmt; struct AlterExtensionStmtDefaultTypeInternal; extern AlterExtensionStmtDefaultTypeInternal _AlterExtensionStmt_default_instance_; class AlterFdwStmt; struct AlterFdwStmtDefaultTypeInternal; extern AlterFdwStmtDefaultTypeInternal _AlterFdwStmt_default_instance_; class AlterForeignServerStmt; struct AlterForeignServerStmtDefaultTypeInternal; extern AlterForeignServerStmtDefaultTypeInternal _AlterForeignServerStmt_default_instance_; class AlterFunctionStmt; struct AlterFunctionStmtDefaultTypeInternal; extern AlterFunctionStmtDefaultTypeInternal _AlterFunctionStmt_default_instance_; class AlterObjectDependsStmt; struct AlterObjectDependsStmtDefaultTypeInternal; extern AlterObjectDependsStmtDefaultTypeInternal _AlterObjectDependsStmt_default_instance_; class AlterObjectSchemaStmt; struct AlterObjectSchemaStmtDefaultTypeInternal; extern AlterObjectSchemaStmtDefaultTypeInternal _AlterObjectSchemaStmt_default_instance_; class AlterOpFamilyStmt; struct AlterOpFamilyStmtDefaultTypeInternal; extern AlterOpFamilyStmtDefaultTypeInternal _AlterOpFamilyStmt_default_instance_; class AlterOperatorStmt; struct AlterOperatorStmtDefaultTypeInternal; extern AlterOperatorStmtDefaultTypeInternal _AlterOperatorStmt_default_instance_; class AlterOwnerStmt; struct AlterOwnerStmtDefaultTypeInternal; extern AlterOwnerStmtDefaultTypeInternal _AlterOwnerStmt_default_instance_; class AlterPolicyStmt; struct AlterPolicyStmtDefaultTypeInternal; extern AlterPolicyStmtDefaultTypeInternal _AlterPolicyStmt_default_instance_; class AlterPublicationStmt; struct AlterPublicationStmtDefaultTypeInternal; extern AlterPublicationStmtDefaultTypeInternal _AlterPublicationStmt_default_instance_; class AlterRoleSetStmt; struct AlterRoleSetStmtDefaultTypeInternal; extern AlterRoleSetStmtDefaultTypeInternal _AlterRoleSetStmt_default_instance_; class AlterRoleStmt; struct AlterRoleStmtDefaultTypeInternal; extern AlterRoleStmtDefaultTypeInternal _AlterRoleStmt_default_instance_; class AlterSeqStmt; struct AlterSeqStmtDefaultTypeInternal; extern AlterSeqStmtDefaultTypeInternal _AlterSeqStmt_default_instance_; class AlterStatsStmt; struct AlterStatsStmtDefaultTypeInternal; extern AlterStatsStmtDefaultTypeInternal _AlterStatsStmt_default_instance_; class AlterSubscriptionStmt; struct AlterSubscriptionStmtDefaultTypeInternal; extern AlterSubscriptionStmtDefaultTypeInternal _AlterSubscriptionStmt_default_instance_; class AlterSystemStmt; struct AlterSystemStmtDefaultTypeInternal; extern AlterSystemStmtDefaultTypeInternal _AlterSystemStmt_default_instance_; class AlterTSConfigurationStmt; struct AlterTSConfigurationStmtDefaultTypeInternal; extern AlterTSConfigurationStmtDefaultTypeInternal _AlterTSConfigurationStmt_default_instance_; class AlterTSDictionaryStmt; struct AlterTSDictionaryStmtDefaultTypeInternal; extern AlterTSDictionaryStmtDefaultTypeInternal _AlterTSDictionaryStmt_default_instance_; class AlterTableCmd; struct AlterTableCmdDefaultTypeInternal; extern AlterTableCmdDefaultTypeInternal _AlterTableCmd_default_instance_; class AlterTableMoveAllStmt; struct AlterTableMoveAllStmtDefaultTypeInternal; extern AlterTableMoveAllStmtDefaultTypeInternal _AlterTableMoveAllStmt_default_instance_; class AlterTableSpaceOptionsStmt; struct AlterTableSpaceOptionsStmtDefaultTypeInternal; extern AlterTableSpaceOptionsStmtDefaultTypeInternal _AlterTableSpaceOptionsStmt_default_instance_; class AlterTableStmt; struct AlterTableStmtDefaultTypeInternal; extern AlterTableStmtDefaultTypeInternal _AlterTableStmt_default_instance_; class AlterTypeStmt; struct AlterTypeStmtDefaultTypeInternal; extern AlterTypeStmtDefaultTypeInternal _AlterTypeStmt_default_instance_; class AlterUserMappingStmt; struct AlterUserMappingStmtDefaultTypeInternal; extern AlterUserMappingStmtDefaultTypeInternal _AlterUserMappingStmt_default_instance_; class AlternativeSubPlan; struct AlternativeSubPlanDefaultTypeInternal; extern AlternativeSubPlanDefaultTypeInternal _AlternativeSubPlan_default_instance_; class ArrayCoerceExpr; struct ArrayCoerceExprDefaultTypeInternal; extern ArrayCoerceExprDefaultTypeInternal _ArrayCoerceExpr_default_instance_; class ArrayExpr; struct ArrayExprDefaultTypeInternal; extern ArrayExprDefaultTypeInternal _ArrayExpr_default_instance_; class BitString; struct BitStringDefaultTypeInternal; extern BitStringDefaultTypeInternal _BitString_default_instance_; class BoolExpr; struct BoolExprDefaultTypeInternal; extern BoolExprDefaultTypeInternal _BoolExpr_default_instance_; class Boolean; struct BooleanDefaultTypeInternal; extern BooleanDefaultTypeInternal _Boolean_default_instance_; class BooleanTest; struct BooleanTestDefaultTypeInternal; extern BooleanTestDefaultTypeInternal _BooleanTest_default_instance_; class CTECycleClause; struct CTECycleClauseDefaultTypeInternal; extern CTECycleClauseDefaultTypeInternal _CTECycleClause_default_instance_; class CTESearchClause; struct CTESearchClauseDefaultTypeInternal; extern CTESearchClauseDefaultTypeInternal _CTESearchClause_default_instance_; class CallContext; struct CallContextDefaultTypeInternal; extern CallContextDefaultTypeInternal _CallContext_default_instance_; class CallStmt; struct CallStmtDefaultTypeInternal; extern CallStmtDefaultTypeInternal _CallStmt_default_instance_; class CaseExpr; struct CaseExprDefaultTypeInternal; extern CaseExprDefaultTypeInternal _CaseExpr_default_instance_; class CaseTestExpr; struct CaseTestExprDefaultTypeInternal; extern CaseTestExprDefaultTypeInternal _CaseTestExpr_default_instance_; class CaseWhen; struct CaseWhenDefaultTypeInternal; extern CaseWhenDefaultTypeInternal _CaseWhen_default_instance_; class CheckPointStmt; struct CheckPointStmtDefaultTypeInternal; extern CheckPointStmtDefaultTypeInternal _CheckPointStmt_default_instance_; class ClosePortalStmt; struct ClosePortalStmtDefaultTypeInternal; extern ClosePortalStmtDefaultTypeInternal _ClosePortalStmt_default_instance_; class ClusterStmt; struct ClusterStmtDefaultTypeInternal; extern ClusterStmtDefaultTypeInternal _ClusterStmt_default_instance_; class CoalesceExpr; struct CoalesceExprDefaultTypeInternal; extern CoalesceExprDefaultTypeInternal _CoalesceExpr_default_instance_; class CoerceToDomain; struct CoerceToDomainDefaultTypeInternal; extern CoerceToDomainDefaultTypeInternal _CoerceToDomain_default_instance_; class CoerceToDomainValue; struct CoerceToDomainValueDefaultTypeInternal; extern CoerceToDomainValueDefaultTypeInternal _CoerceToDomainValue_default_instance_; class CoerceViaIO; struct CoerceViaIODefaultTypeInternal; extern CoerceViaIODefaultTypeInternal _CoerceViaIO_default_instance_; class CollateClause; struct CollateClauseDefaultTypeInternal; extern CollateClauseDefaultTypeInternal _CollateClause_default_instance_; class CollateExpr; struct CollateExprDefaultTypeInternal; extern CollateExprDefaultTypeInternal _CollateExpr_default_instance_; class ColumnDef; struct ColumnDefDefaultTypeInternal; extern ColumnDefDefaultTypeInternal _ColumnDef_default_instance_; class ColumnRef; struct ColumnRefDefaultTypeInternal; extern ColumnRefDefaultTypeInternal _ColumnRef_default_instance_; class CommentStmt; struct CommentStmtDefaultTypeInternal; extern CommentStmtDefaultTypeInternal _CommentStmt_default_instance_; class CommonTableExpr; struct CommonTableExprDefaultTypeInternal; extern CommonTableExprDefaultTypeInternal _CommonTableExpr_default_instance_; class CompositeTypeStmt; struct CompositeTypeStmtDefaultTypeInternal; extern CompositeTypeStmtDefaultTypeInternal _CompositeTypeStmt_default_instance_; class Constraint; struct ConstraintDefaultTypeInternal; extern ConstraintDefaultTypeInternal _Constraint_default_instance_; class ConstraintsSetStmt; struct ConstraintsSetStmtDefaultTypeInternal; extern ConstraintsSetStmtDefaultTypeInternal _ConstraintsSetStmt_default_instance_; class ConvertRowtypeExpr; struct ConvertRowtypeExprDefaultTypeInternal; extern ConvertRowtypeExprDefaultTypeInternal _ConvertRowtypeExpr_default_instance_; class CopyStmt; struct CopyStmtDefaultTypeInternal; extern CopyStmtDefaultTypeInternal _CopyStmt_default_instance_; class CreateAmStmt; struct CreateAmStmtDefaultTypeInternal; extern CreateAmStmtDefaultTypeInternal _CreateAmStmt_default_instance_; class CreateCastStmt; struct CreateCastStmtDefaultTypeInternal; extern CreateCastStmtDefaultTypeInternal _CreateCastStmt_default_instance_; class CreateConversionStmt; struct CreateConversionStmtDefaultTypeInternal; extern CreateConversionStmtDefaultTypeInternal _CreateConversionStmt_default_instance_; class CreateDomainStmt; struct CreateDomainStmtDefaultTypeInternal; extern CreateDomainStmtDefaultTypeInternal _CreateDomainStmt_default_instance_; class CreateEnumStmt; struct CreateEnumStmtDefaultTypeInternal; extern CreateEnumStmtDefaultTypeInternal _CreateEnumStmt_default_instance_; class CreateEventTrigStmt; struct CreateEventTrigStmtDefaultTypeInternal; extern CreateEventTrigStmtDefaultTypeInternal _CreateEventTrigStmt_default_instance_; class CreateExtensionStmt; struct CreateExtensionStmtDefaultTypeInternal; extern CreateExtensionStmtDefaultTypeInternal _CreateExtensionStmt_default_instance_; class CreateFdwStmt; struct CreateFdwStmtDefaultTypeInternal; extern CreateFdwStmtDefaultTypeInternal _CreateFdwStmt_default_instance_; class CreateForeignServerStmt; struct CreateForeignServerStmtDefaultTypeInternal; extern CreateForeignServerStmtDefaultTypeInternal _CreateForeignServerStmt_default_instance_; class CreateForeignTableStmt; struct CreateForeignTableStmtDefaultTypeInternal; extern CreateForeignTableStmtDefaultTypeInternal _CreateForeignTableStmt_default_instance_; class CreateFunctionStmt; struct CreateFunctionStmtDefaultTypeInternal; extern CreateFunctionStmtDefaultTypeInternal _CreateFunctionStmt_default_instance_; class CreateOpClassItem; struct CreateOpClassItemDefaultTypeInternal; extern CreateOpClassItemDefaultTypeInternal _CreateOpClassItem_default_instance_; class CreateOpClassStmt; struct CreateOpClassStmtDefaultTypeInternal; extern CreateOpClassStmtDefaultTypeInternal _CreateOpClassStmt_default_instance_; class CreateOpFamilyStmt; struct CreateOpFamilyStmtDefaultTypeInternal; extern CreateOpFamilyStmtDefaultTypeInternal _CreateOpFamilyStmt_default_instance_; class CreatePLangStmt; struct CreatePLangStmtDefaultTypeInternal; extern CreatePLangStmtDefaultTypeInternal _CreatePLangStmt_default_instance_; class CreatePolicyStmt; struct CreatePolicyStmtDefaultTypeInternal; extern CreatePolicyStmtDefaultTypeInternal _CreatePolicyStmt_default_instance_; class CreatePublicationStmt; struct CreatePublicationStmtDefaultTypeInternal; extern CreatePublicationStmtDefaultTypeInternal _CreatePublicationStmt_default_instance_; class CreateRangeStmt; struct CreateRangeStmtDefaultTypeInternal; extern CreateRangeStmtDefaultTypeInternal _CreateRangeStmt_default_instance_; class CreateRoleStmt; struct CreateRoleStmtDefaultTypeInternal; extern CreateRoleStmtDefaultTypeInternal _CreateRoleStmt_default_instance_; class CreateSchemaStmt; struct CreateSchemaStmtDefaultTypeInternal; extern CreateSchemaStmtDefaultTypeInternal _CreateSchemaStmt_default_instance_; class CreateSeqStmt; struct CreateSeqStmtDefaultTypeInternal; extern CreateSeqStmtDefaultTypeInternal _CreateSeqStmt_default_instance_; class CreateStatsStmt; struct CreateStatsStmtDefaultTypeInternal; extern CreateStatsStmtDefaultTypeInternal _CreateStatsStmt_default_instance_; class CreateStmt; struct CreateStmtDefaultTypeInternal; extern CreateStmtDefaultTypeInternal _CreateStmt_default_instance_; class CreateSubscriptionStmt; struct CreateSubscriptionStmtDefaultTypeInternal; extern CreateSubscriptionStmtDefaultTypeInternal _CreateSubscriptionStmt_default_instance_; class CreateTableAsStmt; struct CreateTableAsStmtDefaultTypeInternal; extern CreateTableAsStmtDefaultTypeInternal _CreateTableAsStmt_default_instance_; class CreateTableSpaceStmt; struct CreateTableSpaceStmtDefaultTypeInternal; extern CreateTableSpaceStmtDefaultTypeInternal _CreateTableSpaceStmt_default_instance_; class CreateTransformStmt; struct CreateTransformStmtDefaultTypeInternal; extern CreateTransformStmtDefaultTypeInternal _CreateTransformStmt_default_instance_; class CreateTrigStmt; struct CreateTrigStmtDefaultTypeInternal; extern CreateTrigStmtDefaultTypeInternal _CreateTrigStmt_default_instance_; class CreateUserMappingStmt; struct CreateUserMappingStmtDefaultTypeInternal; extern CreateUserMappingStmtDefaultTypeInternal _CreateUserMappingStmt_default_instance_; class CreatedbStmt; struct CreatedbStmtDefaultTypeInternal; extern CreatedbStmtDefaultTypeInternal _CreatedbStmt_default_instance_; class CurrentOfExpr; struct CurrentOfExprDefaultTypeInternal; extern CurrentOfExprDefaultTypeInternal _CurrentOfExpr_default_instance_; class DeallocateStmt; struct DeallocateStmtDefaultTypeInternal; extern DeallocateStmtDefaultTypeInternal _DeallocateStmt_default_instance_; class DeclareCursorStmt; struct DeclareCursorStmtDefaultTypeInternal; extern DeclareCursorStmtDefaultTypeInternal _DeclareCursorStmt_default_instance_; class DefElem; struct DefElemDefaultTypeInternal; extern DefElemDefaultTypeInternal _DefElem_default_instance_; class DefineStmt; struct DefineStmtDefaultTypeInternal; extern DefineStmtDefaultTypeInternal _DefineStmt_default_instance_; class DeleteStmt; struct DeleteStmtDefaultTypeInternal; extern DeleteStmtDefaultTypeInternal _DeleteStmt_default_instance_; class DiscardStmt; struct DiscardStmtDefaultTypeInternal; extern DiscardStmtDefaultTypeInternal _DiscardStmt_default_instance_; class DistinctExpr; struct DistinctExprDefaultTypeInternal; extern DistinctExprDefaultTypeInternal _DistinctExpr_default_instance_; class DoStmt; struct DoStmtDefaultTypeInternal; extern DoStmtDefaultTypeInternal _DoStmt_default_instance_; class DropOwnedStmt; struct DropOwnedStmtDefaultTypeInternal; extern DropOwnedStmtDefaultTypeInternal _DropOwnedStmt_default_instance_; class DropRoleStmt; struct DropRoleStmtDefaultTypeInternal; extern DropRoleStmtDefaultTypeInternal _DropRoleStmt_default_instance_; class DropStmt; struct DropStmtDefaultTypeInternal; extern DropStmtDefaultTypeInternal _DropStmt_default_instance_; class DropSubscriptionStmt; struct DropSubscriptionStmtDefaultTypeInternal; extern DropSubscriptionStmtDefaultTypeInternal _DropSubscriptionStmt_default_instance_; class DropTableSpaceStmt; struct DropTableSpaceStmtDefaultTypeInternal; extern DropTableSpaceStmtDefaultTypeInternal _DropTableSpaceStmt_default_instance_; class DropUserMappingStmt; struct DropUserMappingStmtDefaultTypeInternal; extern DropUserMappingStmtDefaultTypeInternal _DropUserMappingStmt_default_instance_; class DropdbStmt; struct DropdbStmtDefaultTypeInternal; extern DropdbStmtDefaultTypeInternal _DropdbStmt_default_instance_; class ExecuteStmt; struct ExecuteStmtDefaultTypeInternal; extern ExecuteStmtDefaultTypeInternal _ExecuteStmt_default_instance_; class ExplainStmt; struct ExplainStmtDefaultTypeInternal; extern ExplainStmtDefaultTypeInternal _ExplainStmt_default_instance_; class FetchStmt; struct FetchStmtDefaultTypeInternal; extern FetchStmtDefaultTypeInternal _FetchStmt_default_instance_; class FieldSelect; struct FieldSelectDefaultTypeInternal; extern FieldSelectDefaultTypeInternal _FieldSelect_default_instance_; class FieldStore; struct FieldStoreDefaultTypeInternal; extern FieldStoreDefaultTypeInternal _FieldStore_default_instance_; class Float; struct FloatDefaultTypeInternal; extern FloatDefaultTypeInternal _Float_default_instance_; class FromExpr; struct FromExprDefaultTypeInternal; extern FromExprDefaultTypeInternal _FromExpr_default_instance_; class FuncCall; struct FuncCallDefaultTypeInternal; extern FuncCallDefaultTypeInternal _FuncCall_default_instance_; class FuncExpr; struct FuncExprDefaultTypeInternal; extern FuncExprDefaultTypeInternal _FuncExpr_default_instance_; class FunctionParameter; struct FunctionParameterDefaultTypeInternal; extern FunctionParameterDefaultTypeInternal _FunctionParameter_default_instance_; class GrantRoleStmt; struct GrantRoleStmtDefaultTypeInternal; extern GrantRoleStmtDefaultTypeInternal _GrantRoleStmt_default_instance_; class GrantStmt; struct GrantStmtDefaultTypeInternal; extern GrantStmtDefaultTypeInternal _GrantStmt_default_instance_; class GroupingFunc; struct GroupingFuncDefaultTypeInternal; extern GroupingFuncDefaultTypeInternal _GroupingFunc_default_instance_; class GroupingSet; struct GroupingSetDefaultTypeInternal; extern GroupingSetDefaultTypeInternal _GroupingSet_default_instance_; class ImportForeignSchemaStmt; struct ImportForeignSchemaStmtDefaultTypeInternal; extern ImportForeignSchemaStmtDefaultTypeInternal _ImportForeignSchemaStmt_default_instance_; class IndexElem; struct IndexElemDefaultTypeInternal; extern IndexElemDefaultTypeInternal _IndexElem_default_instance_; class IndexStmt; struct IndexStmtDefaultTypeInternal; extern IndexStmtDefaultTypeInternal _IndexStmt_default_instance_; class InferClause; struct InferClauseDefaultTypeInternal; extern InferClauseDefaultTypeInternal _InferClause_default_instance_; class InferenceElem; struct InferenceElemDefaultTypeInternal; extern InferenceElemDefaultTypeInternal _InferenceElem_default_instance_; class InlineCodeBlock; struct InlineCodeBlockDefaultTypeInternal; extern InlineCodeBlockDefaultTypeInternal _InlineCodeBlock_default_instance_; class InsertStmt; struct InsertStmtDefaultTypeInternal; extern InsertStmtDefaultTypeInternal _InsertStmt_default_instance_; class IntList; struct IntListDefaultTypeInternal; extern IntListDefaultTypeInternal _IntList_default_instance_; class Integer; struct IntegerDefaultTypeInternal; extern IntegerDefaultTypeInternal _Integer_default_instance_; class IntoClause; struct IntoClauseDefaultTypeInternal; extern IntoClauseDefaultTypeInternal _IntoClause_default_instance_; class JoinExpr; struct JoinExprDefaultTypeInternal; extern JoinExprDefaultTypeInternal _JoinExpr_default_instance_; class JsonAggConstructor; struct JsonAggConstructorDefaultTypeInternal; extern JsonAggConstructorDefaultTypeInternal _JsonAggConstructor_default_instance_; class JsonArgument; struct JsonArgumentDefaultTypeInternal; extern JsonArgumentDefaultTypeInternal _JsonArgument_default_instance_; class JsonArrayAgg; struct JsonArrayAggDefaultTypeInternal; extern JsonArrayAggDefaultTypeInternal _JsonArrayAgg_default_instance_; class JsonArrayConstructor; struct JsonArrayConstructorDefaultTypeInternal; extern JsonArrayConstructorDefaultTypeInternal _JsonArrayConstructor_default_instance_; class JsonArrayQueryConstructor; struct JsonArrayQueryConstructorDefaultTypeInternal; extern JsonArrayQueryConstructorDefaultTypeInternal _JsonArrayQueryConstructor_default_instance_; class JsonBehavior; struct JsonBehaviorDefaultTypeInternal; extern JsonBehaviorDefaultTypeInternal _JsonBehavior_default_instance_; class JsonConstructorExpr; struct JsonConstructorExprDefaultTypeInternal; extern JsonConstructorExprDefaultTypeInternal _JsonConstructorExpr_default_instance_; class JsonExpr; struct JsonExprDefaultTypeInternal; extern JsonExprDefaultTypeInternal _JsonExpr_default_instance_; class JsonFormat; struct JsonFormatDefaultTypeInternal; extern JsonFormatDefaultTypeInternal _JsonFormat_default_instance_; class JsonFuncExpr; struct JsonFuncExprDefaultTypeInternal; extern JsonFuncExprDefaultTypeInternal _JsonFuncExpr_default_instance_; class JsonIsPredicate; struct JsonIsPredicateDefaultTypeInternal; extern JsonIsPredicateDefaultTypeInternal _JsonIsPredicate_default_instance_; class JsonKeyValue; struct JsonKeyValueDefaultTypeInternal; extern JsonKeyValueDefaultTypeInternal _JsonKeyValue_default_instance_; class JsonObjectAgg; struct JsonObjectAggDefaultTypeInternal; extern JsonObjectAggDefaultTypeInternal _JsonObjectAgg_default_instance_; class JsonObjectConstructor; struct JsonObjectConstructorDefaultTypeInternal; extern JsonObjectConstructorDefaultTypeInternal _JsonObjectConstructor_default_instance_; class JsonOutput; struct JsonOutputDefaultTypeInternal; extern JsonOutputDefaultTypeInternal _JsonOutput_default_instance_; class JsonParseExpr; struct JsonParseExprDefaultTypeInternal; extern JsonParseExprDefaultTypeInternal _JsonParseExpr_default_instance_; class JsonReturning; struct JsonReturningDefaultTypeInternal; extern JsonReturningDefaultTypeInternal _JsonReturning_default_instance_; class JsonScalarExpr; struct JsonScalarExprDefaultTypeInternal; extern JsonScalarExprDefaultTypeInternal _JsonScalarExpr_default_instance_; class JsonSerializeExpr; struct JsonSerializeExprDefaultTypeInternal; extern JsonSerializeExprDefaultTypeInternal _JsonSerializeExpr_default_instance_; class JsonTable; struct JsonTableDefaultTypeInternal; extern JsonTableDefaultTypeInternal _JsonTable_default_instance_; class JsonTableColumn; struct JsonTableColumnDefaultTypeInternal; extern JsonTableColumnDefaultTypeInternal _JsonTableColumn_default_instance_; class JsonTablePath; struct JsonTablePathDefaultTypeInternal; extern JsonTablePathDefaultTypeInternal _JsonTablePath_default_instance_; class JsonTablePathScan; struct JsonTablePathScanDefaultTypeInternal; extern JsonTablePathScanDefaultTypeInternal _JsonTablePathScan_default_instance_; class JsonTablePathSpec; struct JsonTablePathSpecDefaultTypeInternal; extern JsonTablePathSpecDefaultTypeInternal _JsonTablePathSpec_default_instance_; class JsonTableSiblingJoin; struct JsonTableSiblingJoinDefaultTypeInternal; extern JsonTableSiblingJoinDefaultTypeInternal _JsonTableSiblingJoin_default_instance_; class JsonValueExpr; struct JsonValueExprDefaultTypeInternal; extern JsonValueExprDefaultTypeInternal _JsonValueExpr_default_instance_; class List; struct ListDefaultTypeInternal; extern ListDefaultTypeInternal _List_default_instance_; class ListenStmt; struct ListenStmtDefaultTypeInternal; extern ListenStmtDefaultTypeInternal _ListenStmt_default_instance_; class LoadStmt; struct LoadStmtDefaultTypeInternal; extern LoadStmtDefaultTypeInternal _LoadStmt_default_instance_; class LockStmt; struct LockStmtDefaultTypeInternal; extern LockStmtDefaultTypeInternal _LockStmt_default_instance_; class LockingClause; struct LockingClauseDefaultTypeInternal; extern LockingClauseDefaultTypeInternal _LockingClause_default_instance_; class MergeAction; struct MergeActionDefaultTypeInternal; extern MergeActionDefaultTypeInternal _MergeAction_default_instance_; class MergeStmt; struct MergeStmtDefaultTypeInternal; extern MergeStmtDefaultTypeInternal _MergeStmt_default_instance_; class MergeSupportFunc; struct MergeSupportFuncDefaultTypeInternal; extern MergeSupportFuncDefaultTypeInternal _MergeSupportFunc_default_instance_; class MergeWhenClause; struct MergeWhenClauseDefaultTypeInternal; extern MergeWhenClauseDefaultTypeInternal _MergeWhenClause_default_instance_; class MinMaxExpr; struct MinMaxExprDefaultTypeInternal; extern MinMaxExprDefaultTypeInternal _MinMaxExpr_default_instance_; class MultiAssignRef; struct MultiAssignRefDefaultTypeInternal; extern MultiAssignRefDefaultTypeInternal _MultiAssignRef_default_instance_; class NamedArgExpr; struct NamedArgExprDefaultTypeInternal; extern NamedArgExprDefaultTypeInternal _NamedArgExpr_default_instance_; class NextValueExpr; struct NextValueExprDefaultTypeInternal; extern NextValueExprDefaultTypeInternal _NextValueExpr_default_instance_; class Node; struct NodeDefaultTypeInternal; extern NodeDefaultTypeInternal _Node_default_instance_; class NotifyStmt; struct NotifyStmtDefaultTypeInternal; extern NotifyStmtDefaultTypeInternal _NotifyStmt_default_instance_; class NullIfExpr; struct NullIfExprDefaultTypeInternal; extern NullIfExprDefaultTypeInternal _NullIfExpr_default_instance_; class NullTest; struct NullTestDefaultTypeInternal; extern NullTestDefaultTypeInternal _NullTest_default_instance_; class ObjectWithArgs; struct ObjectWithArgsDefaultTypeInternal; extern ObjectWithArgsDefaultTypeInternal _ObjectWithArgs_default_instance_; class OidList; struct OidListDefaultTypeInternal; extern OidListDefaultTypeInternal _OidList_default_instance_; class OnConflictClause; struct OnConflictClauseDefaultTypeInternal; extern OnConflictClauseDefaultTypeInternal _OnConflictClause_default_instance_; class OnConflictExpr; struct OnConflictExprDefaultTypeInternal; extern OnConflictExprDefaultTypeInternal _OnConflictExpr_default_instance_; class OpExpr; struct OpExprDefaultTypeInternal; extern OpExprDefaultTypeInternal _OpExpr_default_instance_; class PLAssignStmt; struct PLAssignStmtDefaultTypeInternal; extern PLAssignStmtDefaultTypeInternal _PLAssignStmt_default_instance_; class Param; struct ParamDefaultTypeInternal; extern ParamDefaultTypeInternal _Param_default_instance_; class ParamRef; struct ParamRefDefaultTypeInternal; extern ParamRefDefaultTypeInternal _ParamRef_default_instance_; class ParseResult; struct ParseResultDefaultTypeInternal; extern ParseResultDefaultTypeInternal _ParseResult_default_instance_; class PartitionBoundSpec; struct PartitionBoundSpecDefaultTypeInternal; extern PartitionBoundSpecDefaultTypeInternal _PartitionBoundSpec_default_instance_; class PartitionCmd; struct PartitionCmdDefaultTypeInternal; extern PartitionCmdDefaultTypeInternal _PartitionCmd_default_instance_; class PartitionElem; struct PartitionElemDefaultTypeInternal; extern PartitionElemDefaultTypeInternal _PartitionElem_default_instance_; class PartitionRangeDatum; struct PartitionRangeDatumDefaultTypeInternal; extern PartitionRangeDatumDefaultTypeInternal _PartitionRangeDatum_default_instance_; class PartitionSpec; struct PartitionSpecDefaultTypeInternal; extern PartitionSpecDefaultTypeInternal _PartitionSpec_default_instance_; class PrepareStmt; struct PrepareStmtDefaultTypeInternal; extern PrepareStmtDefaultTypeInternal _PrepareStmt_default_instance_; class PublicationObjSpec; struct PublicationObjSpecDefaultTypeInternal; extern PublicationObjSpecDefaultTypeInternal _PublicationObjSpec_default_instance_; class PublicationTable; struct PublicationTableDefaultTypeInternal; extern PublicationTableDefaultTypeInternal _PublicationTable_default_instance_; class Query; struct QueryDefaultTypeInternal; extern QueryDefaultTypeInternal _Query_default_instance_; class RTEPermissionInfo; struct RTEPermissionInfoDefaultTypeInternal; extern RTEPermissionInfoDefaultTypeInternal _RTEPermissionInfo_default_instance_; class RangeFunction; struct RangeFunctionDefaultTypeInternal; extern RangeFunctionDefaultTypeInternal _RangeFunction_default_instance_; class RangeSubselect; struct RangeSubselectDefaultTypeInternal; extern RangeSubselectDefaultTypeInternal _RangeSubselect_default_instance_; class RangeTableFunc; struct RangeTableFuncDefaultTypeInternal; extern RangeTableFuncDefaultTypeInternal _RangeTableFunc_default_instance_; class RangeTableFuncCol; struct RangeTableFuncColDefaultTypeInternal; extern RangeTableFuncColDefaultTypeInternal _RangeTableFuncCol_default_instance_; class RangeTableSample; struct RangeTableSampleDefaultTypeInternal; extern RangeTableSampleDefaultTypeInternal _RangeTableSample_default_instance_; class RangeTblEntry; struct RangeTblEntryDefaultTypeInternal; extern RangeTblEntryDefaultTypeInternal _RangeTblEntry_default_instance_; class RangeTblFunction; struct RangeTblFunctionDefaultTypeInternal; extern RangeTblFunctionDefaultTypeInternal _RangeTblFunction_default_instance_; class RangeTblRef; struct RangeTblRefDefaultTypeInternal; extern RangeTblRefDefaultTypeInternal _RangeTblRef_default_instance_; class RangeVar; struct RangeVarDefaultTypeInternal; extern RangeVarDefaultTypeInternal _RangeVar_default_instance_; class RawStmt; struct RawStmtDefaultTypeInternal; extern RawStmtDefaultTypeInternal _RawStmt_default_instance_; class ReassignOwnedStmt; struct ReassignOwnedStmtDefaultTypeInternal; extern ReassignOwnedStmtDefaultTypeInternal _ReassignOwnedStmt_default_instance_; class RefreshMatViewStmt; struct RefreshMatViewStmtDefaultTypeInternal; extern RefreshMatViewStmtDefaultTypeInternal _RefreshMatViewStmt_default_instance_; class ReindexStmt; struct ReindexStmtDefaultTypeInternal; extern ReindexStmtDefaultTypeInternal _ReindexStmt_default_instance_; class RelabelType; struct RelabelTypeDefaultTypeInternal; extern RelabelTypeDefaultTypeInternal _RelabelType_default_instance_; class RenameStmt; struct RenameStmtDefaultTypeInternal; extern RenameStmtDefaultTypeInternal _RenameStmt_default_instance_; class ReplicaIdentityStmt; struct ReplicaIdentityStmtDefaultTypeInternal; extern ReplicaIdentityStmtDefaultTypeInternal _ReplicaIdentityStmt_default_instance_; class ResTarget; struct ResTargetDefaultTypeInternal; extern ResTargetDefaultTypeInternal _ResTarget_default_instance_; class ReturnStmt; struct ReturnStmtDefaultTypeInternal; extern ReturnStmtDefaultTypeInternal _ReturnStmt_default_instance_; class RoleSpec; struct RoleSpecDefaultTypeInternal; extern RoleSpecDefaultTypeInternal _RoleSpec_default_instance_; class RowCompareExpr; struct RowCompareExprDefaultTypeInternal; extern RowCompareExprDefaultTypeInternal _RowCompareExpr_default_instance_; class RowExpr; struct RowExprDefaultTypeInternal; extern RowExprDefaultTypeInternal _RowExpr_default_instance_; class RowMarkClause; struct RowMarkClauseDefaultTypeInternal; extern RowMarkClauseDefaultTypeInternal _RowMarkClause_default_instance_; class RuleStmt; struct RuleStmtDefaultTypeInternal; extern RuleStmtDefaultTypeInternal _RuleStmt_default_instance_; class SQLValueFunction; struct SQLValueFunctionDefaultTypeInternal; extern SQLValueFunctionDefaultTypeInternal _SQLValueFunction_default_instance_; class ScalarArrayOpExpr; struct ScalarArrayOpExprDefaultTypeInternal; extern ScalarArrayOpExprDefaultTypeInternal _ScalarArrayOpExpr_default_instance_; class ScanResult; struct ScanResultDefaultTypeInternal; extern ScanResultDefaultTypeInternal _ScanResult_default_instance_; class ScanToken; struct ScanTokenDefaultTypeInternal; extern ScanTokenDefaultTypeInternal _ScanToken_default_instance_; class SecLabelStmt; struct SecLabelStmtDefaultTypeInternal; extern SecLabelStmtDefaultTypeInternal _SecLabelStmt_default_instance_; class SelectStmt; struct SelectStmtDefaultTypeInternal; extern SelectStmtDefaultTypeInternal _SelectStmt_default_instance_; class SetOperationStmt; struct SetOperationStmtDefaultTypeInternal; extern SetOperationStmtDefaultTypeInternal _SetOperationStmt_default_instance_; class SetToDefault; struct SetToDefaultDefaultTypeInternal; extern SetToDefaultDefaultTypeInternal _SetToDefault_default_instance_; class SinglePartitionSpec; struct SinglePartitionSpecDefaultTypeInternal; extern SinglePartitionSpecDefaultTypeInternal _SinglePartitionSpec_default_instance_; class SortBy; struct SortByDefaultTypeInternal; extern SortByDefaultTypeInternal _SortBy_default_instance_; class SortGroupClause; struct SortGroupClauseDefaultTypeInternal; extern SortGroupClauseDefaultTypeInternal _SortGroupClause_default_instance_; class StatsElem; struct StatsElemDefaultTypeInternal; extern StatsElemDefaultTypeInternal _StatsElem_default_instance_; class String; struct StringDefaultTypeInternal; extern StringDefaultTypeInternal _String_default_instance_; class SubLink; struct SubLinkDefaultTypeInternal; extern SubLinkDefaultTypeInternal _SubLink_default_instance_; class SubPlan; struct SubPlanDefaultTypeInternal; extern SubPlanDefaultTypeInternal _SubPlan_default_instance_; class SubscriptingRef; struct SubscriptingRefDefaultTypeInternal; extern SubscriptingRefDefaultTypeInternal _SubscriptingRef_default_instance_; class TableFunc; struct TableFuncDefaultTypeInternal; extern TableFuncDefaultTypeInternal _TableFunc_default_instance_; class TableLikeClause; struct TableLikeClauseDefaultTypeInternal; extern TableLikeClauseDefaultTypeInternal _TableLikeClause_default_instance_; class TableSampleClause; struct TableSampleClauseDefaultTypeInternal; extern TableSampleClauseDefaultTypeInternal _TableSampleClause_default_instance_; class TargetEntry; struct TargetEntryDefaultTypeInternal; extern TargetEntryDefaultTypeInternal _TargetEntry_default_instance_; class TransactionStmt; struct TransactionStmtDefaultTypeInternal; extern TransactionStmtDefaultTypeInternal _TransactionStmt_default_instance_; class TriggerTransition; struct TriggerTransitionDefaultTypeInternal; extern TriggerTransitionDefaultTypeInternal _TriggerTransition_default_instance_; class TruncateStmt; struct TruncateStmtDefaultTypeInternal; extern TruncateStmtDefaultTypeInternal _TruncateStmt_default_instance_; class TypeCast; struct TypeCastDefaultTypeInternal; extern TypeCastDefaultTypeInternal _TypeCast_default_instance_; class TypeName; struct TypeNameDefaultTypeInternal; extern TypeNameDefaultTypeInternal _TypeName_default_instance_; class UnlistenStmt; struct UnlistenStmtDefaultTypeInternal; extern UnlistenStmtDefaultTypeInternal _UnlistenStmt_default_instance_; class UpdateStmt; struct UpdateStmtDefaultTypeInternal; extern UpdateStmtDefaultTypeInternal _UpdateStmt_default_instance_; class VacuumRelation; struct VacuumRelationDefaultTypeInternal; extern VacuumRelationDefaultTypeInternal _VacuumRelation_default_instance_; class VacuumStmt; struct VacuumStmtDefaultTypeInternal; extern VacuumStmtDefaultTypeInternal _VacuumStmt_default_instance_; class Var; struct VarDefaultTypeInternal; extern VarDefaultTypeInternal _Var_default_instance_; class VariableSetStmt; struct VariableSetStmtDefaultTypeInternal; extern VariableSetStmtDefaultTypeInternal _VariableSetStmt_default_instance_; class VariableShowStmt; struct VariableShowStmtDefaultTypeInternal; extern VariableShowStmtDefaultTypeInternal _VariableShowStmt_default_instance_; class ViewStmt; struct ViewStmtDefaultTypeInternal; extern ViewStmtDefaultTypeInternal _ViewStmt_default_instance_; class WindowClause; struct WindowClauseDefaultTypeInternal; extern WindowClauseDefaultTypeInternal _WindowClause_default_instance_; class WindowDef; struct WindowDefDefaultTypeInternal; extern WindowDefDefaultTypeInternal _WindowDef_default_instance_; class WindowFunc; struct WindowFuncDefaultTypeInternal; extern WindowFuncDefaultTypeInternal _WindowFunc_default_instance_; class WindowFuncRunCondition; struct WindowFuncRunConditionDefaultTypeInternal; extern WindowFuncRunConditionDefaultTypeInternal _WindowFuncRunCondition_default_instance_; class WithCheckOption; struct WithCheckOptionDefaultTypeInternal; extern WithCheckOptionDefaultTypeInternal _WithCheckOption_default_instance_; class WithClause; struct WithClauseDefaultTypeInternal; extern WithClauseDefaultTypeInternal _WithClause_default_instance_; class XmlExpr; struct XmlExprDefaultTypeInternal; extern XmlExprDefaultTypeInternal _XmlExpr_default_instance_; class XmlSerialize; struct XmlSerializeDefaultTypeInternal; extern XmlSerializeDefaultTypeInternal _XmlSerialize_default_instance_; } // namespace pg_query namespace google { namespace protobuf { } // namespace protobuf } // namespace google namespace pg_query { 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<::int32_t>::min(), QuerySource_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool QuerySource_IsValid(int value); extern const uint32_t QuerySource_internal_data_[]; constexpr QuerySource QuerySource_MIN = static_cast(0); constexpr QuerySource QuerySource_MAX = static_cast(5); constexpr int QuerySource_ARRAYSIZE = 5 + 1; const ::google::protobuf::EnumDescriptor* QuerySource_descriptor(); template const std::string& QuerySource_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to QuerySource_Name()."); return QuerySource_Name(static_cast(value)); } template <> inline const std::string& QuerySource_Name(QuerySource value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool QuerySource_Parse(absl::string_view name, QuerySource* value) { return ::google::protobuf::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<::int32_t>::min(), SortByDir_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool SortByDir_IsValid(int value); extern const uint32_t SortByDir_internal_data_[]; constexpr SortByDir SortByDir_MIN = static_cast(0); constexpr SortByDir SortByDir_MAX = static_cast(4); constexpr int SortByDir_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* SortByDir_descriptor(); template const std::string& SortByDir_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to SortByDir_Name()."); return SortByDir_Name(static_cast(value)); } template <> inline const std::string& SortByDir_Name(SortByDir value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool SortByDir_Parse(absl::string_view name, SortByDir* value) { return ::google::protobuf::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<::int32_t>::min(), SortByNulls_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool SortByNulls_IsValid(int value); extern const uint32_t SortByNulls_internal_data_[]; constexpr SortByNulls SortByNulls_MIN = static_cast(0); constexpr SortByNulls SortByNulls_MAX = static_cast(3); constexpr int SortByNulls_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* SortByNulls_descriptor(); template const std::string& SortByNulls_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to SortByNulls_Name()."); return SortByNulls_Name(static_cast(value)); } template <> inline const std::string& SortByNulls_Name(SortByNulls value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool SortByNulls_Parse(absl::string_view name, SortByNulls* value) { return ::google::protobuf::internal::ParseNamedEnum( SortByNulls_descriptor(), name, value); } enum SetQuantifier : int { SET_QUANTIFIER_UNDEFINED = 0, SET_QUANTIFIER_DEFAULT = 1, SET_QUANTIFIER_ALL = 2, SET_QUANTIFIER_DISTINCT = 3, SetQuantifier_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), SetQuantifier_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool SetQuantifier_IsValid(int value); extern const uint32_t SetQuantifier_internal_data_[]; constexpr SetQuantifier SetQuantifier_MIN = static_cast(0); constexpr SetQuantifier SetQuantifier_MAX = static_cast(3); constexpr int SetQuantifier_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* SetQuantifier_descriptor(); template const std::string& SetQuantifier_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to SetQuantifier_Name()."); return SetQuantifier_Name(static_cast(value)); } template <> inline const std::string& SetQuantifier_Name(SetQuantifier value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool SetQuantifier_Parse(absl::string_view name, SetQuantifier* value) { return ::google::protobuf::internal::ParseNamedEnum( SetQuantifier_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_IN = 7, AEXPR_LIKE = 8, AEXPR_ILIKE = 9, AEXPR_SIMILAR = 10, AEXPR_BETWEEN = 11, AEXPR_NOT_BETWEEN = 12, AEXPR_BETWEEN_SYM = 13, AEXPR_NOT_BETWEEN_SYM = 14, A_Expr_Kind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), A_Expr_Kind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool A_Expr_Kind_IsValid(int value); extern const uint32_t A_Expr_Kind_internal_data_[]; constexpr A_Expr_Kind A_Expr_Kind_MIN = static_cast(0); constexpr A_Expr_Kind A_Expr_Kind_MAX = static_cast(14); constexpr int A_Expr_Kind_ARRAYSIZE = 14 + 1; const ::google::protobuf::EnumDescriptor* A_Expr_Kind_descriptor(); template const std::string& A_Expr_Kind_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to A_Expr_Kind_Name()."); return A_Expr_Kind_Name(static_cast(value)); } template <> inline const std::string& A_Expr_Kind_Name(A_Expr_Kind value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool A_Expr_Kind_Parse(absl::string_view name, A_Expr_Kind* value) { return ::google::protobuf::internal::ParseNamedEnum( A_Expr_Kind_descriptor(), name, value); } enum RoleSpecType : int { ROLE_SPEC_TYPE_UNDEFINED = 0, ROLESPEC_CSTRING = 1, ROLESPEC_CURRENT_ROLE = 2, ROLESPEC_CURRENT_USER = 3, ROLESPEC_SESSION_USER = 4, ROLESPEC_PUBLIC = 5, RoleSpecType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), RoleSpecType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool RoleSpecType_IsValid(int value); extern const uint32_t RoleSpecType_internal_data_[]; constexpr RoleSpecType RoleSpecType_MIN = static_cast(0); constexpr RoleSpecType RoleSpecType_MAX = static_cast(5); constexpr int RoleSpecType_ARRAYSIZE = 5 + 1; const ::google::protobuf::EnumDescriptor* RoleSpecType_descriptor(); template const std::string& RoleSpecType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to RoleSpecType_Name()."); return RoleSpecType_Name(static_cast(value)); } template <> inline const std::string& RoleSpecType_Name(RoleSpecType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool RoleSpecType_Parse(absl::string_view name, RoleSpecType* value) { return ::google::protobuf::internal::ParseNamedEnum( RoleSpecType_descriptor(), name, value); } enum TableLikeOption : int { TABLE_LIKE_OPTION_UNDEFINED = 0, CREATE_TABLE_LIKE_COMMENTS = 1, CREATE_TABLE_LIKE_COMPRESSION = 2, CREATE_TABLE_LIKE_CONSTRAINTS = 3, CREATE_TABLE_LIKE_DEFAULTS = 4, CREATE_TABLE_LIKE_GENERATED = 5, CREATE_TABLE_LIKE_IDENTITY = 6, CREATE_TABLE_LIKE_INDEXES = 7, CREATE_TABLE_LIKE_STATISTICS = 8, CREATE_TABLE_LIKE_STORAGE = 9, CREATE_TABLE_LIKE_ALL = 10, TableLikeOption_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), TableLikeOption_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool TableLikeOption_IsValid(int value); extern const uint32_t TableLikeOption_internal_data_[]; constexpr TableLikeOption TableLikeOption_MIN = static_cast(0); constexpr TableLikeOption TableLikeOption_MAX = static_cast(10); constexpr int TableLikeOption_ARRAYSIZE = 10 + 1; const ::google::protobuf::EnumDescriptor* TableLikeOption_descriptor(); template const std::string& TableLikeOption_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to TableLikeOption_Name()."); return TableLikeOption_Name(static_cast(value)); } template <> inline const std::string& TableLikeOption_Name(TableLikeOption value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool TableLikeOption_Parse(absl::string_view name, TableLikeOption* value) { return ::google::protobuf::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<::int32_t>::min(), DefElemAction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool DefElemAction_IsValid(int value); extern const uint32_t DefElemAction_internal_data_[]; constexpr DefElemAction DefElemAction_MIN = static_cast(0); constexpr DefElemAction DefElemAction_MAX = static_cast(4); constexpr int DefElemAction_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* DefElemAction_descriptor(); template const std::string& DefElemAction_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to DefElemAction_Name()."); return DefElemAction_Name(static_cast(value)); } template <> inline const std::string& DefElemAction_Name(DefElemAction value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool DefElemAction_Parse(absl::string_view name, DefElemAction* value) { return ::google::protobuf::internal::ParseNamedEnum( DefElemAction_descriptor(), name, value); } enum PartitionStrategy : int { PARTITION_STRATEGY_UNDEFINED = 0, PARTITION_STRATEGY_LIST = 1, PARTITION_STRATEGY_RANGE = 2, PARTITION_STRATEGY_HASH = 3, PartitionStrategy_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), PartitionStrategy_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool PartitionStrategy_IsValid(int value); extern const uint32_t PartitionStrategy_internal_data_[]; constexpr PartitionStrategy PartitionStrategy_MIN = static_cast(0); constexpr PartitionStrategy PartitionStrategy_MAX = static_cast(3); constexpr int PartitionStrategy_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* PartitionStrategy_descriptor(); template const std::string& PartitionStrategy_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to PartitionStrategy_Name()."); return PartitionStrategy_Name(static_cast(value)); } template <> inline const std::string& PartitionStrategy_Name(PartitionStrategy value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool PartitionStrategy_Parse(absl::string_view name, PartitionStrategy* value) { return ::google::protobuf::internal::ParseNamedEnum( PartitionStrategy_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<::int32_t>::min(), PartitionRangeDatumKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool PartitionRangeDatumKind_IsValid(int value); extern const uint32_t PartitionRangeDatumKind_internal_data_[]; constexpr PartitionRangeDatumKind PartitionRangeDatumKind_MIN = static_cast(0); constexpr PartitionRangeDatumKind PartitionRangeDatumKind_MAX = static_cast(3); constexpr int PartitionRangeDatumKind_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* PartitionRangeDatumKind_descriptor(); template const std::string& PartitionRangeDatumKind_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to PartitionRangeDatumKind_Name()."); return PartitionRangeDatumKind_Name(static_cast(value)); } template <> inline const std::string& PartitionRangeDatumKind_Name(PartitionRangeDatumKind value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool PartitionRangeDatumKind_Parse(absl::string_view name, PartitionRangeDatumKind* value) { return ::google::protobuf::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<::int32_t>::min(), RTEKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool RTEKind_IsValid(int value); extern const uint32_t RTEKind_internal_data_[]; constexpr RTEKind RTEKind_MIN = static_cast(0); constexpr RTEKind RTEKind_MAX = static_cast(9); constexpr int RTEKind_ARRAYSIZE = 9 + 1; const ::google::protobuf::EnumDescriptor* RTEKind_descriptor(); template const std::string& RTEKind_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to RTEKind_Name()."); return RTEKind_Name(static_cast(value)); } template <> inline const std::string& RTEKind_Name(RTEKind value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool RTEKind_Parse(absl::string_view name, RTEKind* value) { return ::google::protobuf::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, WCO_RLS_MERGE_UPDATE_CHECK = 5, WCO_RLS_MERGE_DELETE_CHECK = 6, WCOKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), WCOKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool WCOKind_IsValid(int value); extern const uint32_t WCOKind_internal_data_[]; constexpr WCOKind WCOKind_MIN = static_cast(0); constexpr WCOKind WCOKind_MAX = static_cast(6); constexpr int WCOKind_ARRAYSIZE = 6 + 1; const ::google::protobuf::EnumDescriptor* WCOKind_descriptor(); template const std::string& WCOKind_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to WCOKind_Name()."); return WCOKind_Name(static_cast(value)); } template <> inline const std::string& WCOKind_Name(WCOKind value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool WCOKind_Parse(absl::string_view name, WCOKind* value) { return ::google::protobuf::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<::int32_t>::min(), GroupingSetKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool GroupingSetKind_IsValid(int value); extern const uint32_t GroupingSetKind_internal_data_[]; constexpr GroupingSetKind GroupingSetKind_MIN = static_cast(0); constexpr GroupingSetKind GroupingSetKind_MAX = static_cast(5); constexpr int GroupingSetKind_ARRAYSIZE = 5 + 1; const ::google::protobuf::EnumDescriptor* GroupingSetKind_descriptor(); template const std::string& GroupingSetKind_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to GroupingSetKind_Name()."); return GroupingSetKind_Name(static_cast(value)); } template <> inline const std::string& GroupingSetKind_Name(GroupingSetKind value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool GroupingSetKind_Parse(absl::string_view name, GroupingSetKind* value) { return ::google::protobuf::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<::int32_t>::min(), CTEMaterialize_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool CTEMaterialize_IsValid(int value); extern const uint32_t CTEMaterialize_internal_data_[]; constexpr CTEMaterialize CTEMaterialize_MIN = static_cast(0); constexpr CTEMaterialize CTEMaterialize_MAX = static_cast(3); constexpr int CTEMaterialize_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* CTEMaterialize_descriptor(); template const std::string& CTEMaterialize_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to CTEMaterialize_Name()."); return CTEMaterialize_Name(static_cast(value)); } template <> inline const std::string& CTEMaterialize_Name(CTEMaterialize value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool CTEMaterialize_Parse(absl::string_view name, CTEMaterialize* value) { return ::google::protobuf::internal::ParseNamedEnum( CTEMaterialize_descriptor(), name, value); } enum JsonQuotes : int { JSON_QUOTES_UNDEFINED = 0, JS_QUOTES_UNSPEC = 1, JS_QUOTES_KEEP = 2, JS_QUOTES_OMIT = 3, JsonQuotes_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), JsonQuotes_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool JsonQuotes_IsValid(int value); extern const uint32_t JsonQuotes_internal_data_[]; constexpr JsonQuotes JsonQuotes_MIN = static_cast(0); constexpr JsonQuotes JsonQuotes_MAX = static_cast(3); constexpr int JsonQuotes_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* JsonQuotes_descriptor(); template const std::string& JsonQuotes_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to JsonQuotes_Name()."); return JsonQuotes_Name(static_cast(value)); } template <> inline const std::string& JsonQuotes_Name(JsonQuotes value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool JsonQuotes_Parse(absl::string_view name, JsonQuotes* value) { return ::google::protobuf::internal::ParseNamedEnum( JsonQuotes_descriptor(), name, value); } enum JsonTableColumnType : int { JSON_TABLE_COLUMN_TYPE_UNDEFINED = 0, JTC_FOR_ORDINALITY = 1, JTC_REGULAR = 2, JTC_EXISTS = 3, JTC_FORMATTED = 4, JTC_NESTED = 5, JsonTableColumnType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), JsonTableColumnType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool JsonTableColumnType_IsValid(int value); extern const uint32_t JsonTableColumnType_internal_data_[]; constexpr JsonTableColumnType JsonTableColumnType_MIN = static_cast(0); constexpr JsonTableColumnType JsonTableColumnType_MAX = static_cast(5); constexpr int JsonTableColumnType_ARRAYSIZE = 5 + 1; const ::google::protobuf::EnumDescriptor* JsonTableColumnType_descriptor(); template const std::string& JsonTableColumnType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to JsonTableColumnType_Name()."); return JsonTableColumnType_Name(static_cast(value)); } template <> inline const std::string& JsonTableColumnType_Name(JsonTableColumnType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool JsonTableColumnType_Parse(absl::string_view name, JsonTableColumnType* value) { return ::google::protobuf::internal::ParseNamedEnum( JsonTableColumnType_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<::int32_t>::min(), SetOperation_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool SetOperation_IsValid(int value); extern const uint32_t SetOperation_internal_data_[]; constexpr SetOperation SetOperation_MIN = static_cast(0); constexpr SetOperation SetOperation_MAX = static_cast(4); constexpr int SetOperation_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* SetOperation_descriptor(); template const std::string& SetOperation_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to SetOperation_Name()."); return SetOperation_Name(static_cast(value)); } template <> inline const std::string& SetOperation_Name(SetOperation value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool SetOperation_Parse(absl::string_view name, SetOperation* value) { return ::google::protobuf::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_PARAMETER_ACL = 28, OBJECT_POLICY = 29, OBJECT_PROCEDURE = 30, OBJECT_PUBLICATION = 31, OBJECT_PUBLICATION_NAMESPACE = 32, OBJECT_PUBLICATION_REL = 33, OBJECT_ROLE = 34, OBJECT_ROUTINE = 35, OBJECT_RULE = 36, OBJECT_SCHEMA = 37, OBJECT_SEQUENCE = 38, OBJECT_SUBSCRIPTION = 39, OBJECT_STATISTIC_EXT = 40, OBJECT_TABCONSTRAINT = 41, OBJECT_TABLE = 42, OBJECT_TABLESPACE = 43, OBJECT_TRANSFORM = 44, OBJECT_TRIGGER = 45, OBJECT_TSCONFIGURATION = 46, OBJECT_TSDICTIONARY = 47, OBJECT_TSPARSER = 48, OBJECT_TSTEMPLATE = 49, OBJECT_TYPE = 50, OBJECT_USER_MAPPING = 51, OBJECT_VIEW = 52, ObjectType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), ObjectType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool ObjectType_IsValid(int value); extern const uint32_t ObjectType_internal_data_[]; constexpr ObjectType ObjectType_MIN = static_cast(0); constexpr ObjectType ObjectType_MAX = static_cast(52); constexpr int ObjectType_ARRAYSIZE = 52 + 1; const ::google::protobuf::EnumDescriptor* ObjectType_descriptor(); template const std::string& ObjectType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to ObjectType_Name()."); return ObjectType_Name(static_cast(value)); } template <> inline const std::string& ObjectType_Name(ObjectType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool ObjectType_Parse(absl::string_view name, ObjectType* value) { return ::google::protobuf::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<::int32_t>::min(), DropBehavior_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool DropBehavior_IsValid(int value); extern const uint32_t DropBehavior_internal_data_[]; constexpr DropBehavior DropBehavior_MIN = static_cast(0); constexpr DropBehavior DropBehavior_MAX = static_cast(2); constexpr int DropBehavior_ARRAYSIZE = 2 + 1; const ::google::protobuf::EnumDescriptor* DropBehavior_descriptor(); template const std::string& DropBehavior_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to DropBehavior_Name()."); return DropBehavior_Name(static_cast(value)); } template <> inline const std::string& DropBehavior_Name(DropBehavior value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool DropBehavior_Parse(absl::string_view name, DropBehavior* value) { return ::google::protobuf::internal::ParseNamedEnum( DropBehavior_descriptor(), name, value); } enum AlterTableType : int { ALTER_TABLE_TYPE_UNDEFINED = 0, AT_AddColumn = 1, AT_AddColumnToView = 2, AT_ColumnDefault = 3, AT_CookedColumnDefault = 4, AT_DropNotNull = 5, AT_SetNotNull = 6, AT_SetExpression = 7, AT_DropExpression = 8, AT_CheckNotNull = 9, AT_SetStatistics = 10, AT_SetOptions = 11, AT_ResetOptions = 12, AT_SetStorage = 13, AT_SetCompression = 14, AT_DropColumn = 15, AT_AddIndex = 16, AT_ReAddIndex = 17, AT_AddConstraint = 18, AT_ReAddConstraint = 19, AT_ReAddDomainConstraint = 20, AT_AlterConstraint = 21, AT_ValidateConstraint = 22, AT_AddIndexConstraint = 23, AT_DropConstraint = 24, AT_ReAddComment = 25, AT_AlterColumnType = 26, AT_AlterColumnGenericOptions = 27, AT_ChangeOwner = 28, AT_ClusterOn = 29, AT_DropCluster = 30, AT_SetLogged = 31, AT_SetUnLogged = 32, AT_DropOids = 33, AT_SetAccessMethod = 34, AT_SetTableSpace = 35, AT_SetRelOptions = 36, AT_ResetRelOptions = 37, AT_ReplaceRelOptions = 38, AT_EnableTrig = 39, AT_EnableAlwaysTrig = 40, AT_EnableReplicaTrig = 41, AT_DisableTrig = 42, AT_EnableTrigAll = 43, AT_DisableTrigAll = 44, AT_EnableTrigUser = 45, AT_DisableTrigUser = 46, AT_EnableRule = 47, AT_EnableAlwaysRule = 48, AT_EnableReplicaRule = 49, AT_DisableRule = 50, AT_AddInherit = 51, AT_DropInherit = 52, AT_AddOf = 53, AT_DropOf = 54, AT_ReplicaIdentity = 55, AT_EnableRowSecurity = 56, AT_DisableRowSecurity = 57, AT_ForceRowSecurity = 58, AT_NoForceRowSecurity = 59, AT_GenericOptions = 60, AT_AttachPartition = 61, AT_DetachPartition = 62, AT_DetachPartitionFinalize = 63, AT_AddIdentity = 64, AT_SetIdentity = 65, AT_DropIdentity = 66, AT_ReAddStatistics = 67, AlterTableType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), AlterTableType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool AlterTableType_IsValid(int value); extern const uint32_t AlterTableType_internal_data_[]; constexpr AlterTableType AlterTableType_MIN = static_cast(0); constexpr AlterTableType AlterTableType_MAX = static_cast(67); constexpr int AlterTableType_ARRAYSIZE = 67 + 1; const ::google::protobuf::EnumDescriptor* AlterTableType_descriptor(); template const std::string& AlterTableType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to AlterTableType_Name()."); return AlterTableType_Name(static_cast(value)); } template <> inline const std::string& AlterTableType_Name(AlterTableType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool AlterTableType_Parse(absl::string_view name, AlterTableType* value) { return ::google::protobuf::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<::int32_t>::min(), GrantTargetType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool GrantTargetType_IsValid(int value); extern const uint32_t GrantTargetType_internal_data_[]; constexpr GrantTargetType GrantTargetType_MIN = static_cast(0); constexpr GrantTargetType GrantTargetType_MAX = static_cast(3); constexpr int GrantTargetType_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* GrantTargetType_descriptor(); template const std::string& GrantTargetType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to GrantTargetType_Name()."); return GrantTargetType_Name(static_cast(value)); } template <> inline const std::string& GrantTargetType_Name(GrantTargetType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool GrantTargetType_Parse(absl::string_view name, GrantTargetType* value) { return ::google::protobuf::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<::int32_t>::min(), VariableSetKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool VariableSetKind_IsValid(int value); extern const uint32_t VariableSetKind_internal_data_[]; constexpr VariableSetKind VariableSetKind_MIN = static_cast(0); constexpr VariableSetKind VariableSetKind_MAX = static_cast(6); constexpr int VariableSetKind_ARRAYSIZE = 6 + 1; const ::google::protobuf::EnumDescriptor* VariableSetKind_descriptor(); template const std::string& VariableSetKind_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to VariableSetKind_Name()."); return VariableSetKind_Name(static_cast(value)); } template <> inline const std::string& VariableSetKind_Name(VariableSetKind value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool VariableSetKind_Parse(absl::string_view name, VariableSetKind* value) { return ::google::protobuf::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<::int32_t>::min(), ConstrType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool ConstrType_IsValid(int value); extern const uint32_t ConstrType_internal_data_[]; constexpr ConstrType ConstrType_MIN = static_cast(0); constexpr ConstrType ConstrType_MAX = static_cast(14); constexpr int ConstrType_ARRAYSIZE = 14 + 1; const ::google::protobuf::EnumDescriptor* ConstrType_descriptor(); template const std::string& ConstrType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to ConstrType_Name()."); return ConstrType_Name(static_cast(value)); } template <> inline const std::string& ConstrType_Name(ConstrType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool ConstrType_Parse(absl::string_view name, ConstrType* value) { return ::google::protobuf::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<::int32_t>::min(), ImportForeignSchemaType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool ImportForeignSchemaType_IsValid(int value); extern const uint32_t ImportForeignSchemaType_internal_data_[]; constexpr ImportForeignSchemaType ImportForeignSchemaType_MIN = static_cast(0); constexpr ImportForeignSchemaType ImportForeignSchemaType_MAX = static_cast(3); constexpr int ImportForeignSchemaType_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* ImportForeignSchemaType_descriptor(); template const std::string& ImportForeignSchemaType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to ImportForeignSchemaType_Name()."); return ImportForeignSchemaType_Name(static_cast(value)); } template <> inline const std::string& ImportForeignSchemaType_Name(ImportForeignSchemaType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool ImportForeignSchemaType_Parse(absl::string_view name, ImportForeignSchemaType* value) { return ::google::protobuf::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<::int32_t>::min(), RoleStmtType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool RoleStmtType_IsValid(int value); extern const uint32_t RoleStmtType_internal_data_[]; constexpr RoleStmtType RoleStmtType_MIN = static_cast(0); constexpr RoleStmtType RoleStmtType_MAX = static_cast(3); constexpr int RoleStmtType_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* RoleStmtType_descriptor(); template const std::string& RoleStmtType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to RoleStmtType_Name()."); return RoleStmtType_Name(static_cast(value)); } template <> inline const std::string& RoleStmtType_Name(RoleStmtType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool RoleStmtType_Parse(absl::string_view name, RoleStmtType* value) { return ::google::protobuf::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<::int32_t>::min(), FetchDirection_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool FetchDirection_IsValid(int value); extern const uint32_t FetchDirection_internal_data_[]; constexpr FetchDirection FetchDirection_MIN = static_cast(0); constexpr FetchDirection FetchDirection_MAX = static_cast(4); constexpr int FetchDirection_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* FetchDirection_descriptor(); template const std::string& FetchDirection_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to FetchDirection_Name()."); return FetchDirection_Name(static_cast(value)); } template <> inline const std::string& FetchDirection_Name(FetchDirection value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool FetchDirection_Parse(absl::string_view name, FetchDirection* value) { return ::google::protobuf::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, FUNC_PARAM_DEFAULT = 6, FunctionParameterMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), FunctionParameterMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool FunctionParameterMode_IsValid(int value); extern const uint32_t FunctionParameterMode_internal_data_[]; constexpr FunctionParameterMode FunctionParameterMode_MIN = static_cast(0); constexpr FunctionParameterMode FunctionParameterMode_MAX = static_cast(6); constexpr int FunctionParameterMode_ARRAYSIZE = 6 + 1; const ::google::protobuf::EnumDescriptor* FunctionParameterMode_descriptor(); template const std::string& FunctionParameterMode_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to FunctionParameterMode_Name()."); return FunctionParameterMode_Name(static_cast(value)); } template <> inline const std::string& FunctionParameterMode_Name(FunctionParameterMode value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool FunctionParameterMode_Parse(absl::string_view name, FunctionParameterMode* value) { return ::google::protobuf::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<::int32_t>::min(), TransactionStmtKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool TransactionStmtKind_IsValid(int value); extern const uint32_t TransactionStmtKind_internal_data_[]; constexpr TransactionStmtKind TransactionStmtKind_MIN = static_cast(0); constexpr TransactionStmtKind TransactionStmtKind_MAX = static_cast(10); constexpr int TransactionStmtKind_ARRAYSIZE = 10 + 1; const ::google::protobuf::EnumDescriptor* TransactionStmtKind_descriptor(); template const std::string& TransactionStmtKind_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to TransactionStmtKind_Name()."); return TransactionStmtKind_Name(static_cast(value)); } template <> inline const std::string& TransactionStmtKind_Name(TransactionStmtKind value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool TransactionStmtKind_Parse(absl::string_view name, TransactionStmtKind* value) { return ::google::protobuf::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<::int32_t>::min(), ViewCheckOption_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool ViewCheckOption_IsValid(int value); extern const uint32_t ViewCheckOption_internal_data_[]; constexpr ViewCheckOption ViewCheckOption_MIN = static_cast(0); constexpr ViewCheckOption ViewCheckOption_MAX = static_cast(3); constexpr int ViewCheckOption_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* ViewCheckOption_descriptor(); template const std::string& ViewCheckOption_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to ViewCheckOption_Name()."); return ViewCheckOption_Name(static_cast(value)); } template <> inline const std::string& ViewCheckOption_Name(ViewCheckOption value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool ViewCheckOption_Parse(absl::string_view name, ViewCheckOption* value) { return ::google::protobuf::internal::ParseNamedEnum( ViewCheckOption_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<::int32_t>::min(), DiscardMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool DiscardMode_IsValid(int value); extern const uint32_t DiscardMode_internal_data_[]; constexpr DiscardMode DiscardMode_MIN = static_cast(0); constexpr DiscardMode DiscardMode_MAX = static_cast(4); constexpr int DiscardMode_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* DiscardMode_descriptor(); template const std::string& DiscardMode_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to DiscardMode_Name()."); return DiscardMode_Name(static_cast(value)); } template <> inline const std::string& DiscardMode_Name(DiscardMode value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool DiscardMode_Parse(absl::string_view name, DiscardMode* value) { return ::google::protobuf::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<::int32_t>::min(), ReindexObjectType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool ReindexObjectType_IsValid(int value); extern const uint32_t ReindexObjectType_internal_data_[]; constexpr ReindexObjectType ReindexObjectType_MIN = static_cast(0); constexpr ReindexObjectType ReindexObjectType_MAX = static_cast(5); constexpr int ReindexObjectType_ARRAYSIZE = 5 + 1; const ::google::protobuf::EnumDescriptor* ReindexObjectType_descriptor(); template const std::string& ReindexObjectType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to ReindexObjectType_Name()."); return ReindexObjectType_Name(static_cast(value)); } template <> inline const std::string& ReindexObjectType_Name(ReindexObjectType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool ReindexObjectType_Parse(absl::string_view name, ReindexObjectType* value) { return ::google::protobuf::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<::int32_t>::min(), AlterTSConfigType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool AlterTSConfigType_IsValid(int value); extern const uint32_t AlterTSConfigType_internal_data_[]; constexpr AlterTSConfigType AlterTSConfigType_MIN = static_cast(0); constexpr AlterTSConfigType AlterTSConfigType_MAX = static_cast(5); constexpr int AlterTSConfigType_ARRAYSIZE = 5 + 1; const ::google::protobuf::EnumDescriptor* AlterTSConfigType_descriptor(); template const std::string& AlterTSConfigType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to AlterTSConfigType_Name()."); return AlterTSConfigType_Name(static_cast(value)); } template <> inline const std::string& AlterTSConfigType_Name(AlterTSConfigType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool AlterTSConfigType_Parse(absl::string_view name, AlterTSConfigType* value) { return ::google::protobuf::internal::ParseNamedEnum( AlterTSConfigType_descriptor(), name, value); } enum PublicationObjSpecType : int { PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED = 0, PUBLICATIONOBJ_TABLE = 1, PUBLICATIONOBJ_TABLES_IN_SCHEMA = 2, PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA = 3, PUBLICATIONOBJ_CONTINUATION = 4, PublicationObjSpecType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), PublicationObjSpecType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool PublicationObjSpecType_IsValid(int value); extern const uint32_t PublicationObjSpecType_internal_data_[]; constexpr PublicationObjSpecType PublicationObjSpecType_MIN = static_cast(0); constexpr PublicationObjSpecType PublicationObjSpecType_MAX = static_cast(4); constexpr int PublicationObjSpecType_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* PublicationObjSpecType_descriptor(); template const std::string& PublicationObjSpecType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to PublicationObjSpecType_Name()."); return PublicationObjSpecType_Name(static_cast(value)); } template <> inline const std::string& PublicationObjSpecType_Name(PublicationObjSpecType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool PublicationObjSpecType_Parse(absl::string_view name, PublicationObjSpecType* value) { return ::google::protobuf::internal::ParseNamedEnum( PublicationObjSpecType_descriptor(), name, value); } enum AlterPublicationAction : int { ALTER_PUBLICATION_ACTION_UNDEFINED = 0, AP_AddObjects = 1, AP_DropObjects = 2, AP_SetObjects = 3, AlterPublicationAction_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), AlterPublicationAction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool AlterPublicationAction_IsValid(int value); extern const uint32_t AlterPublicationAction_internal_data_[]; constexpr AlterPublicationAction AlterPublicationAction_MIN = static_cast(0); constexpr AlterPublicationAction AlterPublicationAction_MAX = static_cast(3); constexpr int AlterPublicationAction_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* AlterPublicationAction_descriptor(); template const std::string& AlterPublicationAction_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to AlterPublicationAction_Name()."); return AlterPublicationAction_Name(static_cast(value)); } template <> inline const std::string& AlterPublicationAction_Name(AlterPublicationAction value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool AlterPublicationAction_Parse(absl::string_view name, AlterPublicationAction* value) { return ::google::protobuf::internal::ParseNamedEnum( AlterPublicationAction_descriptor(), name, value); } enum AlterSubscriptionType : int { ALTER_SUBSCRIPTION_TYPE_UNDEFINED = 0, ALTER_SUBSCRIPTION_OPTIONS = 1, ALTER_SUBSCRIPTION_CONNECTION = 2, ALTER_SUBSCRIPTION_SET_PUBLICATION = 3, ALTER_SUBSCRIPTION_ADD_PUBLICATION = 4, ALTER_SUBSCRIPTION_DROP_PUBLICATION = 5, ALTER_SUBSCRIPTION_REFRESH = 6, ALTER_SUBSCRIPTION_ENABLED = 7, ALTER_SUBSCRIPTION_SKIP = 8, AlterSubscriptionType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), AlterSubscriptionType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool AlterSubscriptionType_IsValid(int value); extern const uint32_t AlterSubscriptionType_internal_data_[]; constexpr AlterSubscriptionType AlterSubscriptionType_MIN = static_cast(0); constexpr AlterSubscriptionType AlterSubscriptionType_MAX = static_cast(8); constexpr int AlterSubscriptionType_ARRAYSIZE = 8 + 1; const ::google::protobuf::EnumDescriptor* AlterSubscriptionType_descriptor(); template const std::string& AlterSubscriptionType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to AlterSubscriptionType_Name()."); return AlterSubscriptionType_Name(static_cast(value)); } template <> inline const std::string& AlterSubscriptionType_Name(AlterSubscriptionType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool AlterSubscriptionType_Parse(absl::string_view name, AlterSubscriptionType* value) { return ::google::protobuf::internal::ParseNamedEnum( AlterSubscriptionType_descriptor(), name, value); } 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<::int32_t>::min(), OverridingKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool OverridingKind_IsValid(int value); extern const uint32_t OverridingKind_internal_data_[]; constexpr OverridingKind OverridingKind_MIN = static_cast(0); constexpr OverridingKind OverridingKind_MAX = static_cast(3); constexpr int OverridingKind_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* OverridingKind_descriptor(); template const std::string& OverridingKind_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to OverridingKind_Name()."); return OverridingKind_Name(static_cast(value)); } template <> inline const std::string& OverridingKind_Name(OverridingKind value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool OverridingKind_Parse(absl::string_view name, OverridingKind* value) { return ::google::protobuf::internal::ParseNamedEnum( OverridingKind_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<::int32_t>::min(), OnCommitAction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool OnCommitAction_IsValid(int value); extern const uint32_t OnCommitAction_internal_data_[]; constexpr OnCommitAction OnCommitAction_MIN = static_cast(0); constexpr OnCommitAction OnCommitAction_MAX = static_cast(4); constexpr int OnCommitAction_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* OnCommitAction_descriptor(); template const std::string& OnCommitAction_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to OnCommitAction_Name()."); return OnCommitAction_Name(static_cast(value)); } template <> inline const std::string& OnCommitAction_Name(OnCommitAction value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool OnCommitAction_Parse(absl::string_view name, OnCommitAction* value) { return ::google::protobuf::internal::ParseNamedEnum( OnCommitAction_descriptor(), name, value); } enum TableFuncType : int { TABLE_FUNC_TYPE_UNDEFINED = 0, TFT_XMLTABLE = 1, TFT_JSON_TABLE = 2, TableFuncType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), TableFuncType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool TableFuncType_IsValid(int value); extern const uint32_t TableFuncType_internal_data_[]; constexpr TableFuncType TableFuncType_MIN = static_cast(0); constexpr TableFuncType TableFuncType_MAX = static_cast(2); constexpr int TableFuncType_ARRAYSIZE = 2 + 1; const ::google::protobuf::EnumDescriptor* TableFuncType_descriptor(); template const std::string& TableFuncType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to TableFuncType_Name()."); return TableFuncType_Name(static_cast(value)); } template <> inline const std::string& TableFuncType_Name(TableFuncType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool TableFuncType_Parse(absl::string_view name, TableFuncType* value) { return ::google::protobuf::internal::ParseNamedEnum( TableFuncType_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<::int32_t>::min(), ParamKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool ParamKind_IsValid(int value); extern const uint32_t ParamKind_internal_data_[]; constexpr ParamKind ParamKind_MIN = static_cast(0); constexpr ParamKind ParamKind_MAX = static_cast(4); constexpr int ParamKind_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* ParamKind_descriptor(); template const std::string& ParamKind_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to ParamKind_Name()."); return ParamKind_Name(static_cast(value)); } template <> inline const std::string& ParamKind_Name(ParamKind value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool ParamKind_Parse(absl::string_view name, ParamKind* value) { return ::google::protobuf::internal::ParseNamedEnum( ParamKind_descriptor(), name, value); } enum CoercionContext : int { COERCION_CONTEXT_UNDEFINED = 0, COERCION_IMPLICIT = 1, COERCION_ASSIGNMENT = 2, COERCION_PLPGSQL = 3, COERCION_EXPLICIT = 4, CoercionContext_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), CoercionContext_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool CoercionContext_IsValid(int value); extern const uint32_t CoercionContext_internal_data_[]; constexpr CoercionContext CoercionContext_MIN = static_cast(0); constexpr CoercionContext CoercionContext_MAX = static_cast(4); constexpr int CoercionContext_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* CoercionContext_descriptor(); template const std::string& CoercionContext_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to CoercionContext_Name()."); return CoercionContext_Name(static_cast(value)); } template <> inline const std::string& CoercionContext_Name(CoercionContext value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool CoercionContext_Parse(absl::string_view name, CoercionContext* value) { return ::google::protobuf::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, COERCE_SQL_SYNTAX = 4, CoercionForm_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), CoercionForm_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool CoercionForm_IsValid(int value); extern const uint32_t CoercionForm_internal_data_[]; constexpr CoercionForm CoercionForm_MIN = static_cast(0); constexpr CoercionForm CoercionForm_MAX = static_cast(4); constexpr int CoercionForm_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* CoercionForm_descriptor(); template const std::string& CoercionForm_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to CoercionForm_Name()."); return CoercionForm_Name(static_cast(value)); } template <> inline const std::string& CoercionForm_Name(CoercionForm value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool CoercionForm_Parse(absl::string_view name, CoercionForm* value) { return ::google::protobuf::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<::int32_t>::min(), BoolExprType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool BoolExprType_IsValid(int value); extern const uint32_t BoolExprType_internal_data_[]; constexpr BoolExprType BoolExprType_MIN = static_cast(0); constexpr BoolExprType BoolExprType_MAX = static_cast(3); constexpr int BoolExprType_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* BoolExprType_descriptor(); template const std::string& BoolExprType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to BoolExprType_Name()."); return BoolExprType_Name(static_cast(value)); } template <> inline const std::string& BoolExprType_Name(BoolExprType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool BoolExprType_Parse(absl::string_view name, BoolExprType* value) { return ::google::protobuf::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<::int32_t>::min(), SubLinkType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool SubLinkType_IsValid(int value); extern const uint32_t SubLinkType_internal_data_[]; constexpr SubLinkType SubLinkType_MIN = static_cast(0); constexpr SubLinkType SubLinkType_MAX = static_cast(8); constexpr int SubLinkType_ARRAYSIZE = 8 + 1; const ::google::protobuf::EnumDescriptor* SubLinkType_descriptor(); template const std::string& SubLinkType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to SubLinkType_Name()."); return SubLinkType_Name(static_cast(value)); } template <> inline const std::string& SubLinkType_Name(SubLinkType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool SubLinkType_Parse(absl::string_view name, SubLinkType* value) { return ::google::protobuf::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<::int32_t>::min(), RowCompareType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool RowCompareType_IsValid(int value); extern const uint32_t RowCompareType_internal_data_[]; constexpr RowCompareType RowCompareType_MIN = static_cast(0); constexpr RowCompareType RowCompareType_MAX = static_cast(6); constexpr int RowCompareType_ARRAYSIZE = 6 + 1; const ::google::protobuf::EnumDescriptor* RowCompareType_descriptor(); template const std::string& RowCompareType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to RowCompareType_Name()."); return RowCompareType_Name(static_cast(value)); } template <> inline const std::string& RowCompareType_Name(RowCompareType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool RowCompareType_Parse(absl::string_view name, RowCompareType* value) { return ::google::protobuf::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<::int32_t>::min(), MinMaxOp_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool MinMaxOp_IsValid(int value); extern const uint32_t MinMaxOp_internal_data_[]; constexpr MinMaxOp MinMaxOp_MIN = static_cast(0); constexpr MinMaxOp MinMaxOp_MAX = static_cast(2); constexpr int MinMaxOp_ARRAYSIZE = 2 + 1; const ::google::protobuf::EnumDescriptor* MinMaxOp_descriptor(); template const std::string& MinMaxOp_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to MinMaxOp_Name()."); return MinMaxOp_Name(static_cast(value)); } template <> inline const std::string& MinMaxOp_Name(MinMaxOp value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool MinMaxOp_Parse(absl::string_view name, MinMaxOp* value) { return ::google::protobuf::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<::int32_t>::min(), SQLValueFunctionOp_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool SQLValueFunctionOp_IsValid(int value); extern const uint32_t SQLValueFunctionOp_internal_data_[]; constexpr SQLValueFunctionOp SQLValueFunctionOp_MIN = static_cast(0); constexpr SQLValueFunctionOp SQLValueFunctionOp_MAX = static_cast(15); constexpr int SQLValueFunctionOp_ARRAYSIZE = 15 + 1; const ::google::protobuf::EnumDescriptor* SQLValueFunctionOp_descriptor(); template const std::string& SQLValueFunctionOp_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to SQLValueFunctionOp_Name()."); return SQLValueFunctionOp_Name(static_cast(value)); } template <> inline const std::string& SQLValueFunctionOp_Name(SQLValueFunctionOp value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool SQLValueFunctionOp_Parse(absl::string_view name, SQLValueFunctionOp* value) { return ::google::protobuf::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<::int32_t>::min(), XmlExprOp_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool XmlExprOp_IsValid(int value); extern const uint32_t XmlExprOp_internal_data_[]; constexpr XmlExprOp XmlExprOp_MIN = static_cast(0); constexpr XmlExprOp XmlExprOp_MAX = static_cast(8); constexpr int XmlExprOp_ARRAYSIZE = 8 + 1; const ::google::protobuf::EnumDescriptor* XmlExprOp_descriptor(); template const std::string& XmlExprOp_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to XmlExprOp_Name()."); return XmlExprOp_Name(static_cast(value)); } template <> inline const std::string& XmlExprOp_Name(XmlExprOp value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool XmlExprOp_Parse(absl::string_view name, XmlExprOp* value) { return ::google::protobuf::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<::int32_t>::min(), XmlOptionType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool XmlOptionType_IsValid(int value); extern const uint32_t XmlOptionType_internal_data_[]; constexpr XmlOptionType XmlOptionType_MIN = static_cast(0); constexpr XmlOptionType XmlOptionType_MAX = static_cast(2); constexpr int XmlOptionType_ARRAYSIZE = 2 + 1; const ::google::protobuf::EnumDescriptor* XmlOptionType_descriptor(); template const std::string& XmlOptionType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to XmlOptionType_Name()."); return XmlOptionType_Name(static_cast(value)); } template <> inline const std::string& XmlOptionType_Name(XmlOptionType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool XmlOptionType_Parse(absl::string_view name, XmlOptionType* value) { return ::google::protobuf::internal::ParseNamedEnum( XmlOptionType_descriptor(), name, value); } enum JsonEncoding : int { JSON_ENCODING_UNDEFINED = 0, JS_ENC_DEFAULT = 1, JS_ENC_UTF8 = 2, JS_ENC_UTF16 = 3, JS_ENC_UTF32 = 4, JsonEncoding_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), JsonEncoding_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool JsonEncoding_IsValid(int value); extern const uint32_t JsonEncoding_internal_data_[]; constexpr JsonEncoding JsonEncoding_MIN = static_cast(0); constexpr JsonEncoding JsonEncoding_MAX = static_cast(4); constexpr int JsonEncoding_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* JsonEncoding_descriptor(); template const std::string& JsonEncoding_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to JsonEncoding_Name()."); return JsonEncoding_Name(static_cast(value)); } template <> inline const std::string& JsonEncoding_Name(JsonEncoding value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool JsonEncoding_Parse(absl::string_view name, JsonEncoding* value) { return ::google::protobuf::internal::ParseNamedEnum( JsonEncoding_descriptor(), name, value); } enum JsonFormatType : int { JSON_FORMAT_TYPE_UNDEFINED = 0, JS_FORMAT_DEFAULT = 1, JS_FORMAT_JSON = 2, JS_FORMAT_JSONB = 3, JsonFormatType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), JsonFormatType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool JsonFormatType_IsValid(int value); extern const uint32_t JsonFormatType_internal_data_[]; constexpr JsonFormatType JsonFormatType_MIN = static_cast(0); constexpr JsonFormatType JsonFormatType_MAX = static_cast(3); constexpr int JsonFormatType_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* JsonFormatType_descriptor(); template const std::string& JsonFormatType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to JsonFormatType_Name()."); return JsonFormatType_Name(static_cast(value)); } template <> inline const std::string& JsonFormatType_Name(JsonFormatType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool JsonFormatType_Parse(absl::string_view name, JsonFormatType* value) { return ::google::protobuf::internal::ParseNamedEnum( JsonFormatType_descriptor(), name, value); } enum JsonConstructorType : int { JSON_CONSTRUCTOR_TYPE_UNDEFINED = 0, JSCTOR_JSON_OBJECT = 1, JSCTOR_JSON_ARRAY = 2, JSCTOR_JSON_OBJECTAGG = 3, JSCTOR_JSON_ARRAYAGG = 4, JSCTOR_JSON_PARSE = 5, JSCTOR_JSON_SCALAR = 6, JSCTOR_JSON_SERIALIZE = 7, JsonConstructorType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), JsonConstructorType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool JsonConstructorType_IsValid(int value); extern const uint32_t JsonConstructorType_internal_data_[]; constexpr JsonConstructorType JsonConstructorType_MIN = static_cast(0); constexpr JsonConstructorType JsonConstructorType_MAX = static_cast(7); constexpr int JsonConstructorType_ARRAYSIZE = 7 + 1; const ::google::protobuf::EnumDescriptor* JsonConstructorType_descriptor(); template const std::string& JsonConstructorType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to JsonConstructorType_Name()."); return JsonConstructorType_Name(static_cast(value)); } template <> inline const std::string& JsonConstructorType_Name(JsonConstructorType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool JsonConstructorType_Parse(absl::string_view name, JsonConstructorType* value) { return ::google::protobuf::internal::ParseNamedEnum( JsonConstructorType_descriptor(), name, value); } enum JsonValueType : int { JSON_VALUE_TYPE_UNDEFINED = 0, JS_TYPE_ANY = 1, JS_TYPE_OBJECT = 2, JS_TYPE_ARRAY = 3, JS_TYPE_SCALAR = 4, JsonValueType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), JsonValueType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool JsonValueType_IsValid(int value); extern const uint32_t JsonValueType_internal_data_[]; constexpr JsonValueType JsonValueType_MIN = static_cast(0); constexpr JsonValueType JsonValueType_MAX = static_cast(4); constexpr int JsonValueType_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* JsonValueType_descriptor(); template const std::string& JsonValueType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to JsonValueType_Name()."); return JsonValueType_Name(static_cast(value)); } template <> inline const std::string& JsonValueType_Name(JsonValueType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool JsonValueType_Parse(absl::string_view name, JsonValueType* value) { return ::google::protobuf::internal::ParseNamedEnum( JsonValueType_descriptor(), name, value); } enum JsonWrapper : int { JSON_WRAPPER_UNDEFINED = 0, JSW_UNSPEC = 1, JSW_NONE = 2, JSW_CONDITIONAL = 3, JSW_UNCONDITIONAL = 4, JsonWrapper_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), JsonWrapper_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool JsonWrapper_IsValid(int value); extern const uint32_t JsonWrapper_internal_data_[]; constexpr JsonWrapper JsonWrapper_MIN = static_cast(0); constexpr JsonWrapper JsonWrapper_MAX = static_cast(4); constexpr int JsonWrapper_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* JsonWrapper_descriptor(); template const std::string& JsonWrapper_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to JsonWrapper_Name()."); return JsonWrapper_Name(static_cast(value)); } template <> inline const std::string& JsonWrapper_Name(JsonWrapper value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool JsonWrapper_Parse(absl::string_view name, JsonWrapper* value) { return ::google::protobuf::internal::ParseNamedEnum( JsonWrapper_descriptor(), name, value); } enum JsonBehaviorType : int { JSON_BEHAVIOR_TYPE_UNDEFINED = 0, JSON_BEHAVIOR_NULL = 1, JSON_BEHAVIOR_ERROR = 2, JSON_BEHAVIOR_EMPTY = 3, JSON_BEHAVIOR_TRUE = 4, JSON_BEHAVIOR_FALSE = 5, JSON_BEHAVIOR_UNKNOWN = 6, JSON_BEHAVIOR_EMPTY_ARRAY = 7, JSON_BEHAVIOR_EMPTY_OBJECT = 8, JSON_BEHAVIOR_DEFAULT = 9, JsonBehaviorType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), JsonBehaviorType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool JsonBehaviorType_IsValid(int value); extern const uint32_t JsonBehaviorType_internal_data_[]; constexpr JsonBehaviorType JsonBehaviorType_MIN = static_cast(0); constexpr JsonBehaviorType JsonBehaviorType_MAX = static_cast(9); constexpr int JsonBehaviorType_ARRAYSIZE = 9 + 1; const ::google::protobuf::EnumDescriptor* JsonBehaviorType_descriptor(); template const std::string& JsonBehaviorType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to JsonBehaviorType_Name()."); return JsonBehaviorType_Name(static_cast(value)); } template <> inline const std::string& JsonBehaviorType_Name(JsonBehaviorType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool JsonBehaviorType_Parse(absl::string_view name, JsonBehaviorType* value) { return ::google::protobuf::internal::ParseNamedEnum( JsonBehaviorType_descriptor(), name, value); } enum JsonExprOp : int { JSON_EXPR_OP_UNDEFINED = 0, JSON_EXISTS_OP = 1, JSON_QUERY_OP = 2, JSON_VALUE_OP = 3, JSON_TABLE_OP = 4, JsonExprOp_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), JsonExprOp_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool JsonExprOp_IsValid(int value); extern const uint32_t JsonExprOp_internal_data_[]; constexpr JsonExprOp JsonExprOp_MIN = static_cast(0); constexpr JsonExprOp JsonExprOp_MAX = static_cast(4); constexpr int JsonExprOp_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* JsonExprOp_descriptor(); template const std::string& JsonExprOp_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to JsonExprOp_Name()."); return JsonExprOp_Name(static_cast(value)); } template <> inline const std::string& JsonExprOp_Name(JsonExprOp value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool JsonExprOp_Parse(absl::string_view name, JsonExprOp* value) { return ::google::protobuf::internal::ParseNamedEnum( JsonExprOp_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<::int32_t>::min(), NullTestType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool NullTestType_IsValid(int value); extern const uint32_t NullTestType_internal_data_[]; constexpr NullTestType NullTestType_MIN = static_cast(0); constexpr NullTestType NullTestType_MAX = static_cast(2); constexpr int NullTestType_ARRAYSIZE = 2 + 1; const ::google::protobuf::EnumDescriptor* NullTestType_descriptor(); template const std::string& NullTestType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to NullTestType_Name()."); return NullTestType_Name(static_cast(value)); } template <> inline const std::string& NullTestType_Name(NullTestType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool NullTestType_Parse(absl::string_view name, NullTestType* value) { return ::google::protobuf::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<::int32_t>::min(), BoolTestType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool BoolTestType_IsValid(int value); extern const uint32_t BoolTestType_internal_data_[]; constexpr BoolTestType BoolTestType_MIN = static_cast(0); constexpr BoolTestType BoolTestType_MAX = static_cast(6); constexpr int BoolTestType_ARRAYSIZE = 6 + 1; const ::google::protobuf::EnumDescriptor* BoolTestType_descriptor(); template const std::string& BoolTestType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to BoolTestType_Name()."); return BoolTestType_Name(static_cast(value)); } template <> inline const std::string& BoolTestType_Name(BoolTestType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool BoolTestType_Parse(absl::string_view name, BoolTestType* value) { return ::google::protobuf::internal::ParseNamedEnum( BoolTestType_descriptor(), name, value); } enum MergeMatchKind : int { MERGE_MATCH_KIND_UNDEFINED = 0, MERGE_WHEN_MATCHED = 1, MERGE_WHEN_NOT_MATCHED_BY_SOURCE = 2, MERGE_WHEN_NOT_MATCHED_BY_TARGET = 3, MergeMatchKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), MergeMatchKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool MergeMatchKind_IsValid(int value); extern const uint32_t MergeMatchKind_internal_data_[]; constexpr MergeMatchKind MergeMatchKind_MIN = static_cast(0); constexpr MergeMatchKind MergeMatchKind_MAX = static_cast(3); constexpr int MergeMatchKind_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* MergeMatchKind_descriptor(); template const std::string& MergeMatchKind_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to MergeMatchKind_Name()."); return MergeMatchKind_Name(static_cast(value)); } template <> inline const std::string& MergeMatchKind_Name(MergeMatchKind value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool MergeMatchKind_Parse(absl::string_view name, MergeMatchKind* value) { return ::google::protobuf::internal::ParseNamedEnum( MergeMatchKind_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_MERGE = 6, CMD_UTILITY = 7, CMD_NOTHING = 8, CmdType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), CmdType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool CmdType_IsValid(int value); extern const uint32_t CmdType_internal_data_[]; constexpr CmdType CmdType_MIN = static_cast(0); constexpr CmdType CmdType_MAX = static_cast(8); constexpr int CmdType_ARRAYSIZE = 8 + 1; const ::google::protobuf::EnumDescriptor* CmdType_descriptor(); template const std::string& CmdType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to CmdType_Name()."); return CmdType_Name(static_cast(value)); } template <> inline const std::string& CmdType_Name(CmdType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool CmdType_Parse(absl::string_view name, CmdType* value) { return ::google::protobuf::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_RIGHT_ANTI = 7, JOIN_UNIQUE_OUTER = 8, JOIN_UNIQUE_INNER = 9, JoinType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), JoinType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool JoinType_IsValid(int value); extern const uint32_t JoinType_internal_data_[]; constexpr JoinType JoinType_MIN = static_cast(0); constexpr JoinType JoinType_MAX = static_cast(9); constexpr int JoinType_ARRAYSIZE = 9 + 1; const ::google::protobuf::EnumDescriptor* JoinType_descriptor(); template const std::string& JoinType_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to JoinType_Name()."); return JoinType_Name(static_cast(value)); } template <> inline const std::string& JoinType_Name(JoinType value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool JoinType_Parse(absl::string_view name, JoinType* value) { return ::google::protobuf::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<::int32_t>::min(), AggStrategy_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool AggStrategy_IsValid(int value); extern const uint32_t AggStrategy_internal_data_[]; constexpr AggStrategy AggStrategy_MIN = static_cast(0); constexpr AggStrategy AggStrategy_MAX = static_cast(4); constexpr int AggStrategy_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* AggStrategy_descriptor(); template const std::string& AggStrategy_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to AggStrategy_Name()."); return AggStrategy_Name(static_cast(value)); } template <> inline const std::string& AggStrategy_Name(AggStrategy value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool AggStrategy_Parse(absl::string_view name, AggStrategy* value) { return ::google::protobuf::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<::int32_t>::min(), AggSplit_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool AggSplit_IsValid(int value); extern const uint32_t AggSplit_internal_data_[]; constexpr AggSplit AggSplit_MIN = static_cast(0); constexpr AggSplit AggSplit_MAX = static_cast(3); constexpr int AggSplit_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* AggSplit_descriptor(); template const std::string& AggSplit_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to AggSplit_Name()."); return AggSplit_Name(static_cast(value)); } template <> inline const std::string& AggSplit_Name(AggSplit value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool AggSplit_Parse(absl::string_view name, AggSplit* value) { return ::google::protobuf::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<::int32_t>::min(), SetOpCmd_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool SetOpCmd_IsValid(int value); extern const uint32_t SetOpCmd_internal_data_[]; constexpr SetOpCmd SetOpCmd_MIN = static_cast(0); constexpr SetOpCmd SetOpCmd_MAX = static_cast(4); constexpr int SetOpCmd_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* SetOpCmd_descriptor(); template const std::string& SetOpCmd_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to SetOpCmd_Name()."); return SetOpCmd_Name(static_cast(value)); } template <> inline const std::string& SetOpCmd_Name(SetOpCmd value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool SetOpCmd_Parse(absl::string_view name, SetOpCmd* value) { return ::google::protobuf::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<::int32_t>::min(), SetOpStrategy_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool SetOpStrategy_IsValid(int value); extern const uint32_t SetOpStrategy_internal_data_[]; constexpr SetOpStrategy SetOpStrategy_MIN = static_cast(0); constexpr SetOpStrategy SetOpStrategy_MAX = static_cast(2); constexpr int SetOpStrategy_ARRAYSIZE = 2 + 1; const ::google::protobuf::EnumDescriptor* SetOpStrategy_descriptor(); template const std::string& SetOpStrategy_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to SetOpStrategy_Name()."); return SetOpStrategy_Name(static_cast(value)); } template <> inline const std::string& SetOpStrategy_Name(SetOpStrategy value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool SetOpStrategy_Parse(absl::string_view name, SetOpStrategy* value) { return ::google::protobuf::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<::int32_t>::min(), OnConflictAction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool OnConflictAction_IsValid(int value); extern const uint32_t OnConflictAction_internal_data_[]; constexpr OnConflictAction OnConflictAction_MIN = static_cast(0); constexpr OnConflictAction OnConflictAction_MAX = static_cast(3); constexpr int OnConflictAction_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* OnConflictAction_descriptor(); template const std::string& OnConflictAction_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to OnConflictAction_Name()."); return OnConflictAction_Name(static_cast(value)); } template <> inline const std::string& OnConflictAction_Name(OnConflictAction value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool OnConflictAction_Parse(absl::string_view name, OnConflictAction* value) { return ::google::protobuf::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<::int32_t>::min(), LimitOption_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool LimitOption_IsValid(int value); extern const uint32_t LimitOption_internal_data_[]; constexpr LimitOption LimitOption_MIN = static_cast(0); constexpr LimitOption LimitOption_MAX = static_cast(3); constexpr int LimitOption_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* LimitOption_descriptor(); template const std::string& LimitOption_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to LimitOption_Name()."); return LimitOption_Name(static_cast(value)); } template <> inline const std::string& LimitOption_Name(LimitOption value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool LimitOption_Parse(absl::string_view name, LimitOption* value) { return ::google::protobuf::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<::int32_t>::min(), LockClauseStrength_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool LockClauseStrength_IsValid(int value); extern const uint32_t LockClauseStrength_internal_data_[]; constexpr LockClauseStrength LockClauseStrength_MIN = static_cast(0); constexpr LockClauseStrength LockClauseStrength_MAX = static_cast(5); constexpr int LockClauseStrength_ARRAYSIZE = 5 + 1; const ::google::protobuf::EnumDescriptor* LockClauseStrength_descriptor(); template const std::string& LockClauseStrength_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to LockClauseStrength_Name()."); return LockClauseStrength_Name(static_cast(value)); } template <> inline const std::string& LockClauseStrength_Name(LockClauseStrength value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool LockClauseStrength_Parse(absl::string_view name, LockClauseStrength* value) { return ::google::protobuf::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<::int32_t>::min(), LockWaitPolicy_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool LockWaitPolicy_IsValid(int value); extern const uint32_t LockWaitPolicy_internal_data_[]; constexpr LockWaitPolicy LockWaitPolicy_MIN = static_cast(0); constexpr LockWaitPolicy LockWaitPolicy_MAX = static_cast(3); constexpr int LockWaitPolicy_ARRAYSIZE = 3 + 1; const ::google::protobuf::EnumDescriptor* LockWaitPolicy_descriptor(); template const std::string& LockWaitPolicy_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to LockWaitPolicy_Name()."); return LockWaitPolicy_Name(static_cast(value)); } template <> inline const std::string& LockWaitPolicy_Name(LockWaitPolicy value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool LockWaitPolicy_Parse(absl::string_view name, LockWaitPolicy* value) { return ::google::protobuf::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<::int32_t>::min(), LockTupleMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool LockTupleMode_IsValid(int value); extern const uint32_t LockTupleMode_internal_data_[]; constexpr LockTupleMode LockTupleMode_MIN = static_cast(0); constexpr LockTupleMode LockTupleMode_MAX = static_cast(4); constexpr int LockTupleMode_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* LockTupleMode_descriptor(); template const std::string& LockTupleMode_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to LockTupleMode_Name()."); return LockTupleMode_Name(static_cast(value)); } template <> inline const std::string& LockTupleMode_Name(LockTupleMode value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool LockTupleMode_Parse(absl::string_view name, LockTupleMode* value) { return ::google::protobuf::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<::int32_t>::min(), KeywordKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool KeywordKind_IsValid(int value); extern const uint32_t KeywordKind_internal_data_[]; constexpr KeywordKind KeywordKind_MIN = static_cast(0); constexpr KeywordKind KeywordKind_MAX = static_cast(4); constexpr int KeywordKind_ARRAYSIZE = 4 + 1; const ::google::protobuf::EnumDescriptor* KeywordKind_descriptor(); template const std::string& KeywordKind_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to KeywordKind_Name()."); return KeywordKind_Name(static_cast(value)); } template <> inline const std::string& KeywordKind_Name(KeywordKind value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool KeywordKind_Parse(absl::string_view name, KeywordKind* value) { return ::google::protobuf::internal::ParseNamedEnum( KeywordKind_descriptor(), name, value); } enum Token : int { NUL = 0, ASCII_36 = 36, 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, 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, ABSENT = 278, ABSOLUTE_P = 279, ACCESS = 280, ACTION = 281, ADD_P = 282, ADMIN = 283, AFTER = 284, AGGREGATE = 285, ALL = 286, ALSO = 287, ALTER = 288, ALWAYS = 289, ANALYSE = 290, ANALYZE = 291, AND = 292, ANY = 293, ARRAY = 294, AS = 295, ASC = 296, ASENSITIVE = 297, ASSERTION = 298, ASSIGNMENT = 299, ASYMMETRIC = 300, ATOMIC = 301, AT = 302, ATTACH = 303, ATTRIBUTE = 304, AUTHORIZATION = 305, BACKWARD = 306, BEFORE = 307, BEGIN_P = 308, BETWEEN = 309, BIGINT = 310, BINARY = 311, BIT = 312, BOOLEAN_P = 313, BOTH = 314, BREADTH = 315, BY = 316, CACHE = 317, CALL = 318, CALLED = 319, CASCADE = 320, CASCADED = 321, CASE = 322, CAST = 323, CATALOG_P = 324, CHAIN = 325, CHAR_P = 326, CHARACTER = 327, CHARACTERISTICS = 328, CHECK = 329, CHECKPOINT = 330, CLASS = 331, CLOSE = 332, CLUSTER = 333, COALESCE = 334, COLLATE = 335, COLLATION = 336, COLUMN = 337, COLUMNS = 338, COMMENT = 339, COMMENTS = 340, COMMIT = 341, COMMITTED = 342, COMPRESSION = 343, CONCURRENTLY = 344, CONDITIONAL = 345, CONFIGURATION = 346, CONFLICT = 347, CONNECTION = 348, CONSTRAINT = 349, CONSTRAINTS = 350, CONTENT_P = 351, CONTINUE_P = 352, CONVERSION_P = 353, COPY = 354, COST = 355, CREATE = 356, CROSS = 357, CSV = 358, CUBE = 359, CURRENT_P = 360, CURRENT_CATALOG = 361, CURRENT_DATE = 362, CURRENT_ROLE = 363, CURRENT_SCHEMA = 364, CURRENT_TIME = 365, CURRENT_TIMESTAMP = 366, CURRENT_USER = 367, CURSOR = 368, CYCLE = 369, DATA_P = 370, DATABASE = 371, DAY_P = 372, DEALLOCATE = 373, DEC = 374, DECIMAL_P = 375, DECLARE = 376, DEFAULT = 377, DEFAULTS = 378, DEFERRABLE = 379, DEFERRED = 380, DEFINER = 381, DELETE_P = 382, DELIMITER = 383, DELIMITERS = 384, DEPENDS = 385, DEPTH = 386, DESC = 387, DETACH = 388, DICTIONARY = 389, DISABLE_P = 390, DISCARD = 391, DISTINCT = 392, DO = 393, DOCUMENT_P = 394, DOMAIN_P = 395, DOUBLE_P = 396, DROP = 397, EACH = 398, ELSE = 399, EMPTY_P = 400, ENABLE_P = 401, ENCODING = 402, ENCRYPTED = 403, END_P = 404, ENUM_P = 405, ERROR_P = 406, ESCAPE = 407, EVENT = 408, EXCEPT = 409, EXCLUDE = 410, EXCLUDING = 411, EXCLUSIVE = 412, EXECUTE = 413, EXISTS = 414, EXPLAIN = 415, EXPRESSION = 416, EXTENSION = 417, EXTERNAL = 418, EXTRACT = 419, FALSE_P = 420, FAMILY = 421, FETCH = 422, FILTER = 423, FINALIZE = 424, FIRST_P = 425, FLOAT_P = 426, FOLLOWING = 427, FOR = 428, FORCE = 429, FOREIGN = 430, FORMAT = 431, FORWARD = 432, FREEZE = 433, FROM = 434, FULL = 435, FUNCTION = 436, FUNCTIONS = 437, GENERATED = 438, GLOBAL = 439, GRANT = 440, GRANTED = 441, GREATEST = 442, GROUP_P = 443, GROUPING = 444, GROUPS = 445, HANDLER = 446, HAVING = 447, HEADER_P = 448, HOLD = 449, HOUR_P = 450, IDENTITY_P = 451, IF_P = 452, ILIKE = 453, IMMEDIATE = 454, IMMUTABLE = 455, IMPLICIT_P = 456, IMPORT_P = 457, IN_P = 458, INCLUDE = 459, INCLUDING = 460, INCREMENT = 461, INDENT = 462, INDEX = 463, INDEXES = 464, INHERIT = 465, INHERITS = 466, INITIALLY = 467, INLINE_P = 468, INNER_P = 469, INOUT = 470, INPUT_P = 471, INSENSITIVE = 472, INSERT = 473, INSTEAD = 474, INT_P = 475, INTEGER = 476, INTERSECT = 477, INTERVAL = 478, INTO = 479, INVOKER = 480, IS = 481, ISNULL = 482, ISOLATION = 483, JOIN = 484, JSON = 485, JSON_ARRAY = 486, JSON_ARRAYAGG = 487, JSON_EXISTS = 488, JSON_OBJECT = 489, JSON_OBJECTAGG = 490, JSON_QUERY = 491, JSON_SCALAR = 492, JSON_SERIALIZE = 493, JSON_TABLE = 494, JSON_VALUE = 495, KEEP = 496, KEY = 497, KEYS = 498, LABEL = 499, LANGUAGE = 500, LARGE_P = 501, LAST_P = 502, LATERAL_P = 503, LEADING = 504, LEAKPROOF = 505, LEAST = 506, LEFT = 507, LEVEL = 508, LIKE = 509, LIMIT = 510, LISTEN = 511, LOAD = 512, LOCAL = 513, LOCALTIME = 514, LOCALTIMESTAMP = 515, LOCATION = 516, LOCK_P = 517, LOCKED = 518, LOGGED = 519, MAPPING = 520, MATCH = 521, MATCHED = 522, MATERIALIZED = 523, MAXVALUE = 524, MERGE = 525, MERGE_ACTION = 526, METHOD = 527, MINUTE_P = 528, MINVALUE = 529, MODE = 530, MONTH_P = 531, MOVE = 532, NAME_P = 533, NAMES = 534, NATIONAL = 535, NATURAL = 536, NCHAR = 537, NESTED = 538, NEW = 539, NEXT = 540, NFC = 541, NFD = 542, NFKC = 543, NFKD = 544, NO = 545, NONE = 546, NORMALIZE = 547, NORMALIZED = 548, NOT = 549, NOTHING = 550, NOTIFY = 551, NOTNULL = 552, NOWAIT = 553, NULL_P = 554, NULLIF = 555, NULLS_P = 556, NUMERIC = 557, OBJECT_P = 558, OF = 559, OFF = 560, OFFSET = 561, OIDS = 562, OLD = 563, OMIT = 564, ON = 565, ONLY = 566, OPERATOR = 567, OPTION = 568, OPTIONS = 569, OR = 570, ORDER = 571, ORDINALITY = 572, OTHERS = 573, OUT_P = 574, OUTER_P = 575, OVER = 576, OVERLAPS = 577, OVERLAY = 578, OVERRIDING = 579, OWNED = 580, OWNER = 581, PARALLEL = 582, PARAMETER = 583, PARSER = 584, PARTIAL = 585, PARTITION = 586, PASSING = 587, PASSWORD = 588, PATH = 589, PLACING = 590, PLAN = 591, PLANS = 592, POLICY = 593, POSITION = 594, PRECEDING = 595, PRECISION = 596, PRESERVE = 597, PREPARE = 598, PREPARED = 599, PRIMARY = 600, PRIOR = 601, PRIVILEGES = 602, PROCEDURAL = 603, PROCEDURE = 604, PROCEDURES = 605, PROGRAM = 606, PUBLICATION = 607, QUOTE = 608, QUOTES = 609, RANGE = 610, READ = 611, REAL = 612, REASSIGN = 613, RECHECK = 614, RECURSIVE = 615, REF_P = 616, REFERENCES = 617, REFERENCING = 618, REFRESH = 619, REINDEX = 620, RELATIVE_P = 621, RELEASE = 622, RENAME = 623, REPEATABLE = 624, REPLACE = 625, REPLICA = 626, RESET = 627, RESTART = 628, RESTRICT = 629, RETURN = 630, RETURNING = 631, RETURNS = 632, REVOKE = 633, RIGHT = 634, ROLE = 635, ROLLBACK = 636, ROLLUP = 637, ROUTINE = 638, ROUTINES = 639, ROW = 640, ROWS = 641, RULE = 642, SAVEPOINT = 643, SCALAR = 644, SCHEMA = 645, SCHEMAS = 646, SCROLL = 647, SEARCH = 648, SECOND_P = 649, SECURITY = 650, SELECT = 651, SEQUENCE = 652, SEQUENCES = 653, SERIALIZABLE = 654, SERVER = 655, SESSION = 656, SESSION_USER = 657, SET = 658, SETS = 659, SETOF = 660, SHARE = 661, SHOW = 662, SIMILAR = 663, SIMPLE = 664, SKIP = 665, SMALLINT = 666, SNAPSHOT = 667, SOME = 668, SOURCE = 669, SQL_P = 670, STABLE = 671, STANDALONE_P = 672, START = 673, STATEMENT = 674, STATISTICS = 675, STDIN = 676, STDOUT = 677, STORAGE = 678, STORED = 679, STRICT_P = 680, STRING_P = 681, STRIP_P = 682, SUBSCRIPTION = 683, SUBSTRING = 684, SUPPORT = 685, SYMMETRIC = 686, SYSID = 687, SYSTEM_P = 688, SYSTEM_USER = 689, TABLE = 690, TABLES = 691, TABLESAMPLE = 692, TABLESPACE = 693, TARGET = 694, TEMP = 695, TEMPLATE = 696, TEMPORARY = 697, TEXT_P = 698, THEN = 699, TIES = 700, TIME = 701, TIMESTAMP = 702, TO = 703, TRAILING = 704, TRANSACTION = 705, TRANSFORM = 706, TREAT = 707, TRIGGER = 708, TRIM = 709, TRUE_P = 710, TRUNCATE = 711, TRUSTED = 712, TYPE_P = 713, TYPES_P = 714, UESCAPE = 715, UNBOUNDED = 716, UNCONDITIONAL = 717, UNCOMMITTED = 718, UNENCRYPTED = 719, UNION = 720, UNIQUE = 721, UNKNOWN = 722, UNLISTEN = 723, UNLOGGED = 724, UNTIL = 725, UPDATE = 726, USER = 727, USING = 728, VACUUM = 729, VALID = 730, VALIDATE = 731, VALIDATOR = 732, VALUE_P = 733, VALUES = 734, VARCHAR = 735, VARIADIC = 736, VARYING = 737, VERBOSE = 738, VERSION_P = 739, VIEW = 740, VIEWS = 741, VOLATILE = 742, WHEN = 743, WHERE = 744, WHITESPACE_P = 745, WINDOW = 746, WITH = 747, WITHIN = 748, WITHOUT = 749, WORK = 750, WRAPPER = 751, WRITE = 752, XML_P = 753, XMLATTRIBUTES = 754, XMLCONCAT = 755, XMLELEMENT = 756, XMLEXISTS = 757, XMLFOREST = 758, XMLNAMESPACES = 759, XMLPARSE = 760, XMLPI = 761, XMLROOT = 762, XMLSERIALIZE = 763, XMLTABLE = 764, YEAR_P = 765, YES_P = 766, ZONE = 767, FORMAT_LA = 768, NOT_LA = 769, NULLS_LA = 770, WITH_LA = 771, WITHOUT_LA = 772, MODE_TYPE_NAME = 773, MODE_PLPGSQL_EXPR = 774, MODE_PLPGSQL_ASSIGN1 = 775, MODE_PLPGSQL_ASSIGN2 = 776, MODE_PLPGSQL_ASSIGN3 = 777, UMINUS = 778, Token_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::min(), Token_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::int32_t>::max(), }; bool Token_IsValid(int value); extern const uint32_t Token_internal_data_[]; constexpr Token Token_MIN = static_cast(0); constexpr Token Token_MAX = static_cast(778); constexpr int Token_ARRAYSIZE = 778 + 1; const ::google::protobuf::EnumDescriptor* Token_descriptor(); template const std::string& Token_Name(T value) { static_assert(std::is_same::value || std::is_integral::value, "Incorrect type passed to Token_Name()."); return Token_Name(static_cast(value)); } template <> inline const std::string& Token_Name(Token value) { return ::google::protobuf::internal::NameOfDenseEnum( static_cast(value)); } inline bool Token_Parse(absl::string_view name, Token* value) { return ::google::protobuf::internal::ParseNamedEnum( Token_descriptor(), name, value); } // =================================================================== // ------------------------------------------------------------------- class VariableShowStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.VariableShowStmt) */ { public: inline VariableShowStmt() : VariableShowStmt(nullptr) {} ~VariableShowStmt() override; template explicit PROTOBUF_CONSTEXPR VariableShowStmt(::google::protobuf::internal::ConstantInitialized); inline VariableShowStmt(const VariableShowStmt& from) : VariableShowStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const VariableShowStmt& default_instance() { return *internal_default_instance(); } static inline const VariableShowStmt* internal_default_instance() { return reinterpret_cast( &_VariableShowStmt_default_instance_); } static constexpr int kIndexInFileMessages = 164; friend void swap(VariableShowStmt& a, VariableShowStmt& b) { a.Swap(&b); } inline void Swap(VariableShowStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(VariableShowStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- VariableShowStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const VariableShowStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const VariableShowStmt& from) { VariableShowStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(VariableShowStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.VariableShowStmt"; } protected: explicit VariableShowStmt(::google::protobuf::Arena* arena); VariableShowStmt(::google::protobuf::Arena* arena, const VariableShowStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 1, }; // string name = 1 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 38, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr name_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class UnlistenStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.UnlistenStmt) */ { public: inline UnlistenStmt() : UnlistenStmt(nullptr) {} ~UnlistenStmt() override; template explicit PROTOBUF_CONSTEXPR UnlistenStmt(::google::protobuf::internal::ConstantInitialized); inline UnlistenStmt(const UnlistenStmt& from) : UnlistenStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const UnlistenStmt& default_instance() { return *internal_default_instance(); } static inline const UnlistenStmt* internal_default_instance() { return reinterpret_cast( &_UnlistenStmt_default_instance_); } static constexpr int kIndexInFileMessages = 229; friend void swap(UnlistenStmt& a, UnlistenStmt& b) { a.Swap(&b); } inline void Swap(UnlistenStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(UnlistenStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- UnlistenStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const UnlistenStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const UnlistenStmt& from) { UnlistenStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(UnlistenStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.UnlistenStmt"; } protected: explicit UnlistenStmt(::google::protobuf::Arena* arena); UnlistenStmt(::google::protobuf::Arena* arena, const UnlistenStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kConditionnameFieldNumber = 1, }; // string conditionname = 1 [json_name = "conditionname"]; void clear_conditionname() ; const std::string& conditionname() const; template void set_conditionname(Arg_&& arg, Args_... args); std::string* mutable_conditionname(); PROTOBUF_NODISCARD std::string* release_conditionname(); void set_allocated_conditionname(std::string* value); private: const std::string& _internal_conditionname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 43, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr conditionname_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class TriggerTransition final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.TriggerTransition) */ { public: inline TriggerTransition() : TriggerTransition(nullptr) {} ~TriggerTransition() override; template explicit PROTOBUF_CONSTEXPR TriggerTransition(::google::protobuf::internal::ConstantInitialized); inline TriggerTransition(const TriggerTransition& from) : TriggerTransition(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const TriggerTransition& default_instance() { return *internal_default_instance(); } static inline const TriggerTransition* internal_default_instance() { return reinterpret_cast( &_TriggerTransition_default_instance_); } static constexpr int kIndexInFileMessages = 125; friend void swap(TriggerTransition& a, TriggerTransition& b) { a.Swap(&b); } inline void Swap(TriggerTransition* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TriggerTransition* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TriggerTransition* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const TriggerTransition& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const TriggerTransition& from) { TriggerTransition::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(TriggerTransition* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.TriggerTransition"; } protected: explicit TriggerTransition(::google::protobuf::Arena* arena); TriggerTransition(::google::protobuf::Arena* arena, const TriggerTransition& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 0, 39, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr name_; bool is_new_; bool is_table_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class String final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.String) */ { public: inline String() : String(nullptr) {} ~String() override; template explicit PROTOBUF_CONSTEXPR String(::google::protobuf::internal::ConstantInitialized); inline String(const String& from) : String(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const String& default_instance() { return *internal_default_instance(); } static inline const String* internal_default_instance() { return reinterpret_cast( &_String_default_instance_); } static constexpr int kIndexInFileMessages = 6; friend void swap(String& a, String& b) { a.Swap(&b); } inline void Swap(String* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(String* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- String* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const String& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const String& from) { String::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(String* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.String"; } protected: explicit String(::google::protobuf::Arena* arena); String(::google::protobuf::Arena* arena, const String& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSvalFieldNumber = 1, }; // string sval = 1; void clear_sval() ; const std::string& sval() const; template void set_sval(Arg_&& arg, Args_... args); std::string* mutable_sval(); PROTOBUF_NODISCARD std::string* release_sval(); void set_allocated_sval(std::string* value); private: const std::string& _internal_sval() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_sval( const std::string& value); std::string* _internal_mutable_sval(); public: // @@protoc_insertion_point(class_scope:pg_query.String) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 28, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr sval_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class SortGroupClause final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.SortGroupClause) */ { public: inline SortGroupClause() : SortGroupClause(nullptr) {} ~SortGroupClause() override; template explicit PROTOBUF_CONSTEXPR SortGroupClause(::google::protobuf::internal::ConstantInitialized); inline SortGroupClause(const SortGroupClause& from) : SortGroupClause(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const SortGroupClause& default_instance() { return *internal_default_instance(); } static inline const SortGroupClause* internal_default_instance() { return reinterpret_cast( &_SortGroupClause_default_instance_); } static constexpr int kIndexInFileMessages = 114; friend void swap(SortGroupClause& a, SortGroupClause& b) { a.Swap(&b); } inline void Swap(SortGroupClause* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SortGroupClause* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SortGroupClause* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const SortGroupClause& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const SortGroupClause& from) { SortGroupClause::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(SortGroupClause* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.SortGroupClause"; } protected: explicit SortGroupClause(::google::protobuf::Arena* arena); SortGroupClause(::google::protobuf::Arena* arena, const SortGroupClause& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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() ; ::uint32_t tle_sort_group_ref() const; void set_tle_sort_group_ref(::uint32_t value); private: ::uint32_t _internal_tle_sort_group_ref() const; void _internal_set_tle_sort_group_ref(::uint32_t value); public: // uint32 eqop = 2 [json_name = "eqop"]; void clear_eqop() ; ::uint32_t eqop() const; void set_eqop(::uint32_t value); private: ::uint32_t _internal_eqop() const; void _internal_set_eqop(::uint32_t value); public: // uint32 sortop = 3 [json_name = "sortop"]; void clear_sortop() ; ::uint32_t sortop() const; void set_sortop(::uint32_t value); private: ::uint32_t _internal_sortop() const; void _internal_set_sortop(::uint32_t 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 0, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::uint32_t tle_sort_group_ref_; ::uint32_t eqop_; ::uint32_t sortop_; bool nulls_first_; bool hashable_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class SinglePartitionSpec final : public ::google::protobuf::internal::ZeroFieldsBase /* @@protoc_insertion_point(class_definition:pg_query.SinglePartitionSpec) */ { public: inline SinglePartitionSpec() : SinglePartitionSpec(nullptr) {} template explicit PROTOBUF_CONSTEXPR SinglePartitionSpec(::google::protobuf::internal::ConstantInitialized); inline SinglePartitionSpec(const SinglePartitionSpec& from) : SinglePartitionSpec(nullptr, from) {} SinglePartitionSpec(SinglePartitionSpec&& from) noexcept : SinglePartitionSpec() { *this = ::std::move(from); } inline SinglePartitionSpec& operator=(const SinglePartitionSpec& from) { CopyFrom(from); return *this; } inline SinglePartitionSpec& operator=(SinglePartitionSpec&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const SinglePartitionSpec& default_instance() { return *internal_default_instance(); } static inline const SinglePartitionSpec* internal_default_instance() { return reinterpret_cast( &_SinglePartitionSpec_default_instance_); } static constexpr int kIndexInFileMessages = 107; friend void swap(SinglePartitionSpec& a, SinglePartitionSpec& b) { a.Swap(&b); } inline void Swap(SinglePartitionSpec* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SinglePartitionSpec* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SinglePartitionSpec* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom; inline void CopyFrom(const SinglePartitionSpec& from) { ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from); } using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom; void MergeFrom(const SinglePartitionSpec& from) { ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from); } public: private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.SinglePartitionSpec"; } protected: explicit SinglePartitionSpec(::google::protobuf::Arena* arena); SinglePartitionSpec(::google::protobuf::Arena* arena, const SinglePartitionSpec& from); public: ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // @@protoc_insertion_point(class_scope:pg_query.SinglePartitionSpec) private: class _Internal; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); PROTOBUF_TSAN_DECLARE_MEMBER }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ScanToken final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ScanToken) */ { public: inline ScanToken() : ScanToken(nullptr) {} ~ScanToken() override; template explicit PROTOBUF_CONSTEXPR ScanToken(::google::protobuf::internal::ConstantInitialized); inline ScanToken(const ScanToken& from) : ScanToken(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ScanToken& default_instance() { return *internal_default_instance(); } static inline const ScanToken* internal_default_instance() { return reinterpret_cast( &_ScanToken_default_instance_); } static constexpr int kIndexInFileMessages = 271; friend void swap(ScanToken& a, ScanToken& b) { a.Swap(&b); } inline void Swap(ScanToken* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ScanToken* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ScanToken* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ScanToken& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ScanToken& from) { ScanToken::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ScanToken* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ScanToken"; } protected: explicit ScanToken(::google::protobuf::Arena* arena); ScanToken(::google::protobuf::Arena* arena, const ScanToken& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kStartFieldNumber = 1, kEndFieldNumber = 2, kTokenFieldNumber = 4, kKeywordKindFieldNumber = 5, }; // int32 start = 1; void clear_start() ; ::int32_t start() const; void set_start(::int32_t value); private: ::int32_t _internal_start() const; void _internal_set_start(::int32_t value); public: // int32 end = 2; void clear_end() ; ::int32_t end() const; void set_end(::int32_t value); private: ::int32_t _internal_end() const; void _internal_set_end(::int32_t 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 4, 0, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::int32_t start_; ::int32_t end_; int token_; int keyword_kind_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RowMarkClause final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RowMarkClause) */ { public: inline RowMarkClause() : RowMarkClause(nullptr) {} ~RowMarkClause() override; template explicit PROTOBUF_CONSTEXPR RowMarkClause(::google::protobuf::internal::ConstantInitialized); inline RowMarkClause(const RowMarkClause& from) : RowMarkClause(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RowMarkClause& default_instance() { return *internal_default_instance(); } static inline const RowMarkClause* internal_default_instance() { return reinterpret_cast( &_RowMarkClause_default_instance_); } static constexpr int kIndexInFileMessages = 117; friend void swap(RowMarkClause& a, RowMarkClause& b) { a.Swap(&b); } inline void Swap(RowMarkClause* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RowMarkClause* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RowMarkClause* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RowMarkClause& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RowMarkClause& from) { RowMarkClause::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RowMarkClause* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RowMarkClause"; } protected: explicit RowMarkClause(::google::protobuf::Arena* arena); RowMarkClause(::google::protobuf::Arena* arena, const RowMarkClause& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRtiFieldNumber = 1, kStrengthFieldNumber = 2, kWaitPolicyFieldNumber = 3, kPushedDownFieldNumber = 4, }; // uint32 rti = 1 [json_name = "rti"]; void clear_rti() ; ::uint32_t rti() const; void set_rti(::uint32_t value); private: ::uint32_t _internal_rti() const; void _internal_set_rti(::uint32_t 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 0, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::uint32_t rti_; int strength_; int wait_policy_; bool pushed_down_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RoleSpec final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RoleSpec) */ { public: inline RoleSpec() : RoleSpec(nullptr) {} ~RoleSpec() override; template explicit PROTOBUF_CONSTEXPR RoleSpec(::google::protobuf::internal::ConstantInitialized); inline RoleSpec(const RoleSpec& from) : RoleSpec(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RoleSpec& default_instance() { return *internal_default_instance(); } static inline const RoleSpec* internal_default_instance() { return reinterpret_cast( &_RoleSpec_default_instance_); } static constexpr int kIndexInFileMessages = 82; friend void swap(RoleSpec& a, RoleSpec& b) { a.Swap(&b); } inline void Swap(RoleSpec* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RoleSpec* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RoleSpec* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RoleSpec& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RoleSpec& from) { RoleSpec::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RoleSpec* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RoleSpec"; } protected: explicit RoleSpec(::google::protobuf::Arena* arena); RoleSpec(::google::protobuf::Arena* arena, const RoleSpec& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_rolename(Arg_&& arg, Args_... args); std::string* mutable_rolename(); PROTOBUF_NODISCARD std::string* release_rolename(); void set_allocated_rolename(std::string* value); private: const std::string& _internal_rolename() const; inline PROTOBUF_ALWAYS_INLINE 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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.RoleSpec) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 0, 34, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr rolename_; int roletype_; ::int32_t location_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ReplicaIdentityStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ReplicaIdentityStmt) */ { public: inline ReplicaIdentityStmt() : ReplicaIdentityStmt(nullptr) {} ~ReplicaIdentityStmt() override; template explicit PROTOBUF_CONSTEXPR ReplicaIdentityStmt(::google::protobuf::internal::ConstantInitialized); inline ReplicaIdentityStmt(const ReplicaIdentityStmt& from) : ReplicaIdentityStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ReplicaIdentityStmt& default_instance() { return *internal_default_instance(); } static inline const ReplicaIdentityStmt* internal_default_instance() { return reinterpret_cast( &_ReplicaIdentityStmt_default_instance_); } static constexpr int kIndexInFileMessages = 153; friend void swap(ReplicaIdentityStmt& a, ReplicaIdentityStmt& b) { a.Swap(&b); } inline void Swap(ReplicaIdentityStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ReplicaIdentityStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ReplicaIdentityStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ReplicaIdentityStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ReplicaIdentityStmt& from) { ReplicaIdentityStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ReplicaIdentityStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ReplicaIdentityStmt"; } protected: explicit ReplicaIdentityStmt(::google::protobuf::Arena* arena); ReplicaIdentityStmt(::google::protobuf::Arena* arena, const ReplicaIdentityStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_identity_type(Arg_&& arg, Args_... args); std::string* mutable_identity_type(); PROTOBUF_NODISCARD std::string* release_identity_type(); void set_allocated_identity_type(std::string* value); private: const std::string& _internal_identity_type() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 0, 54, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr identity_type_; ::google::protobuf::internal::ArenaStringPtr name_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RangeTblRef final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTblRef) */ { public: inline RangeTblRef() : RangeTblRef(nullptr) {} ~RangeTblRef() override; template explicit PROTOBUF_CONSTEXPR RangeTblRef(::google::protobuf::internal::ConstantInitialized); inline RangeTblRef(const RangeTblRef& from) : RangeTblRef(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RangeTblRef& default_instance() { return *internal_default_instance(); } static inline const RangeTblRef* internal_default_instance() { return reinterpret_cast( &_RangeTblRef_default_instance_); } static constexpr int kIndexInFileMessages = 71; friend void swap(RangeTblRef& a, RangeTblRef& b) { a.Swap(&b); } inline void Swap(RangeTblRef* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTblRef* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeTblRef* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RangeTblRef& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RangeTblRef& from) { RangeTblRef::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RangeTblRef* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RangeTblRef"; } protected: explicit RangeTblRef(::google::protobuf::Arena* arena); RangeTblRef(::google::protobuf::Arena* arena, const RangeTblRef& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRtindexFieldNumber = 1, }; // int32 rtindex = 1 [json_name = "rtindex"]; void clear_rtindex() ; ::int32_t rtindex() const; void set_rtindex(::int32_t value); private: ::int32_t _internal_rtindex() const; void _internal_set_rtindex(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeTblRef) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::int32_t rtindex_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RTEPermissionInfo final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RTEPermissionInfo) */ { public: inline RTEPermissionInfo() : RTEPermissionInfo(nullptr) {} ~RTEPermissionInfo() override; template explicit PROTOBUF_CONSTEXPR RTEPermissionInfo(::google::protobuf::internal::ConstantInitialized); inline RTEPermissionInfo(const RTEPermissionInfo& from) : RTEPermissionInfo(nullptr, from) {} RTEPermissionInfo(RTEPermissionInfo&& from) noexcept : RTEPermissionInfo() { *this = ::std::move(from); } inline RTEPermissionInfo& operator=(const RTEPermissionInfo& from) { CopyFrom(from); return *this; } inline RTEPermissionInfo& operator=(RTEPermissionInfo&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RTEPermissionInfo& default_instance() { return *internal_default_instance(); } static inline const RTEPermissionInfo* internal_default_instance() { return reinterpret_cast( &_RTEPermissionInfo_default_instance_); } static constexpr int kIndexInFileMessages = 110; friend void swap(RTEPermissionInfo& a, RTEPermissionInfo& b) { a.Swap(&b); } inline void Swap(RTEPermissionInfo* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RTEPermissionInfo* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RTEPermissionInfo* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RTEPermissionInfo& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RTEPermissionInfo& from) { RTEPermissionInfo::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RTEPermissionInfo* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RTEPermissionInfo"; } protected: explicit RTEPermissionInfo(::google::protobuf::Arena* arena); RTEPermissionInfo(::google::protobuf::Arena* arena, const RTEPermissionInfo& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSelectedColsFieldNumber = 5, kInsertedColsFieldNumber = 6, kUpdatedColsFieldNumber = 7, kRelidFieldNumber = 1, kInhFieldNumber = 2, kRequiredPermsFieldNumber = 3, kCheckAsUserFieldNumber = 4, }; // repeated uint64 selected_cols = 5 [json_name = "selectedCols"]; int selected_cols_size() const; private: int _internal_selected_cols_size() const; public: void clear_selected_cols() ; ::uint64_t selected_cols(int index) const; void set_selected_cols(int index, ::uint64_t value); void add_selected_cols(::uint64_t value); const ::google::protobuf::RepeatedField<::uint64_t>& selected_cols() const; ::google::protobuf::RepeatedField<::uint64_t>* mutable_selected_cols(); private: const ::google::protobuf::RepeatedField<::uint64_t>& _internal_selected_cols() const; ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_selected_cols(); public: // repeated uint64 inserted_cols = 6 [json_name = "insertedCols"]; int inserted_cols_size() const; private: int _internal_inserted_cols_size() const; public: void clear_inserted_cols() ; ::uint64_t inserted_cols(int index) const; void set_inserted_cols(int index, ::uint64_t value); void add_inserted_cols(::uint64_t value); const ::google::protobuf::RepeatedField<::uint64_t>& inserted_cols() const; ::google::protobuf::RepeatedField<::uint64_t>* mutable_inserted_cols(); private: const ::google::protobuf::RepeatedField<::uint64_t>& _internal_inserted_cols() const; ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_inserted_cols(); public: // repeated uint64 updated_cols = 7 [json_name = "updatedCols"]; int updated_cols_size() const; private: int _internal_updated_cols_size() const; public: void clear_updated_cols() ; ::uint64_t updated_cols(int index) const; void set_updated_cols(int index, ::uint64_t value); void add_updated_cols(::uint64_t value); const ::google::protobuf::RepeatedField<::uint64_t>& updated_cols() const; ::google::protobuf::RepeatedField<::uint64_t>* mutable_updated_cols(); private: const ::google::protobuf::RepeatedField<::uint64_t>& _internal_updated_cols() const; ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_updated_cols(); public: // uint32 relid = 1 [json_name = "relid"]; void clear_relid() ; ::uint32_t relid() const; void set_relid(::uint32_t value); private: ::uint32_t _internal_relid() const; void _internal_set_relid(::uint32_t value); public: // bool inh = 2 [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: // uint64 required_perms = 3 [json_name = "requiredPerms"]; void clear_required_perms() ; ::uint64_t required_perms() const; void set_required_perms(::uint64_t value); private: ::uint64_t _internal_required_perms() const; void _internal_set_required_perms(::uint64_t value); public: // uint32 check_as_user = 4 [json_name = "checkAsUser"]; void clear_check_as_user() ; ::uint32_t check_as_user() const; void set_check_as_user(::uint32_t value); private: ::uint32_t _internal_check_as_user() const; void _internal_set_check_as_user(::uint32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.RTEPermissionInfo) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 0, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedField<::uint64_t> selected_cols_; mutable ::google::protobuf::internal::CachedSize _selected_cols_cached_byte_size_; ::google::protobuf::RepeatedField<::uint64_t> inserted_cols_; mutable ::google::protobuf::internal::CachedSize _inserted_cols_cached_byte_size_; ::google::protobuf::RepeatedField<::uint64_t> updated_cols_; mutable ::google::protobuf::internal::CachedSize _updated_cols_cached_byte_size_; ::uint32_t relid_; bool inh_; ::uint64_t required_perms_; ::uint32_t check_as_user_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ParamRef final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ParamRef) */ { public: inline ParamRef() : ParamRef(nullptr) {} ~ParamRef() override; template explicit PROTOBUF_CONSTEXPR ParamRef(::google::protobuf::internal::ConstantInitialized); inline ParamRef(const ParamRef& from) : ParamRef(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ParamRef& default_instance() { return *internal_default_instance(); } static inline const ParamRef* internal_default_instance() { return reinterpret_cast( &_ParamRef_default_instance_); } static constexpr int kIndexInFileMessages = 78; friend void swap(ParamRef& a, ParamRef& b) { a.Swap(&b); } inline void Swap(ParamRef* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ParamRef* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ParamRef* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ParamRef& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ParamRef& from) { ParamRef::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ParamRef* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ParamRef"; } protected: explicit ParamRef(::google::protobuf::Arena* arena); ParamRef(::google::protobuf::Arena* arena, const ParamRef& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNumberFieldNumber = 1, kLocationFieldNumber = 2, }; // int32 number = 1 [json_name = "number"]; void clear_number() ; ::int32_t number() const; void set_number(::int32_t value); private: ::int32_t _internal_number() const; void _internal_set_number(::int32_t value); public: // int32 location = 2 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.ParamRef) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 0, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::int32_t number_; ::int32_t location_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class NotifyStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.NotifyStmt) */ { public: inline NotifyStmt() : NotifyStmt(nullptr) {} ~NotifyStmt() override; template explicit PROTOBUF_CONSTEXPR NotifyStmt(::google::protobuf::internal::ConstantInitialized); inline NotifyStmt(const NotifyStmt& from) : NotifyStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const NotifyStmt& default_instance() { return *internal_default_instance(); } static inline const NotifyStmt* internal_default_instance() { return reinterpret_cast( &_NotifyStmt_default_instance_); } static constexpr int kIndexInFileMessages = 227; friend void swap(NotifyStmt& a, NotifyStmt& b) { a.Swap(&b); } inline void Swap(NotifyStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NotifyStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- NotifyStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const NotifyStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const NotifyStmt& from) { NotifyStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(NotifyStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.NotifyStmt"; } protected: explicit NotifyStmt(::google::protobuf::Arena* arena); NotifyStmt(::google::protobuf::Arena* arena, const NotifyStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kConditionnameFieldNumber = 1, kPayloadFieldNumber = 2, }; // string conditionname = 1 [json_name = "conditionname"]; void clear_conditionname() ; const std::string& conditionname() const; template void set_conditionname(Arg_&& arg, Args_... args); std::string* mutable_conditionname(); PROTOBUF_NODISCARD std::string* release_conditionname(); void set_allocated_conditionname(std::string* value); private: const std::string& _internal_conditionname() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_payload(Arg_&& arg, Args_... args); std::string* mutable_payload(); PROTOBUF_NODISCARD std::string* release_payload(); void set_allocated_payload(std::string* value); private: const std::string& _internal_payload() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 0, 48, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr conditionname_; ::google::protobuf::internal::ArenaStringPtr payload_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class LoadStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.LoadStmt) */ { public: inline LoadStmt() : LoadStmt(nullptr) {} ~LoadStmt() override; template explicit PROTOBUF_CONSTEXPR LoadStmt(::google::protobuf::internal::ConstantInitialized); inline LoadStmt(const LoadStmt& from) : LoadStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const LoadStmt& default_instance() { return *internal_default_instance(); } static inline const LoadStmt* internal_default_instance() { return reinterpret_cast( &_LoadStmt_default_instance_); } static constexpr int kIndexInFileMessages = 236; friend void swap(LoadStmt& a, LoadStmt& b) { a.Swap(&b); } inline void Swap(LoadStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(LoadStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- LoadStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const LoadStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const LoadStmt& from) { LoadStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(LoadStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.LoadStmt"; } protected: explicit LoadStmt(::google::protobuf::Arena* arena); LoadStmt(::google::protobuf::Arena* arena, const LoadStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFilenameFieldNumber = 1, }; // string filename = 1 [json_name = "filename"]; void clear_filename() ; const std::string& filename() const; template void set_filename(Arg_&& arg, Args_... args); std::string* mutable_filename(); PROTOBUF_NODISCARD std::string* release_filename(); void set_allocated_filename(std::string* value); private: const std::string& _internal_filename() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 34, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr filename_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ListenStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ListenStmt) */ { public: inline ListenStmt() : ListenStmt(nullptr) {} ~ListenStmt() override; template explicit PROTOBUF_CONSTEXPR ListenStmt(::google::protobuf::internal::ConstantInitialized); inline ListenStmt(const ListenStmt& from) : ListenStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ListenStmt& default_instance() { return *internal_default_instance(); } static inline const ListenStmt* internal_default_instance() { return reinterpret_cast( &_ListenStmt_default_instance_); } static constexpr int kIndexInFileMessages = 228; friend void swap(ListenStmt& a, ListenStmt& b) { a.Swap(&b); } inline void Swap(ListenStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ListenStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ListenStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ListenStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ListenStmt& from) { ListenStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ListenStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ListenStmt"; } protected: explicit ListenStmt(::google::protobuf::Arena* arena); ListenStmt(::google::protobuf::Arena* arena, const ListenStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kConditionnameFieldNumber = 1, }; // string conditionname = 1 [json_name = "conditionname"]; void clear_conditionname() ; const std::string& conditionname() const; template void set_conditionname(Arg_&& arg, Args_... args); std::string* mutable_conditionname(); PROTOBUF_NODISCARD std::string* release_conditionname(); void set_allocated_conditionname(std::string* value); private: const std::string& _internal_conditionname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 41, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr conditionname_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonTablePath final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonTablePath) */ { public: inline JsonTablePath() : JsonTablePath(nullptr) {} ~JsonTablePath() override; template explicit PROTOBUF_CONSTEXPR JsonTablePath(::google::protobuf::internal::ConstantInitialized); inline JsonTablePath(const JsonTablePath& from) : JsonTablePath(nullptr, from) {} JsonTablePath(JsonTablePath&& from) noexcept : JsonTablePath() { *this = ::std::move(from); } inline JsonTablePath& operator=(const JsonTablePath& from) { CopyFrom(from); return *this; } inline JsonTablePath& operator=(JsonTablePath&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonTablePath& default_instance() { return *internal_default_instance(); } static inline const JsonTablePath* internal_default_instance() { return reinterpret_cast( &_JsonTablePath_default_instance_); } static constexpr int kIndexInFileMessages = 58; friend void swap(JsonTablePath& a, JsonTablePath& b) { a.Swap(&b); } inline void Swap(JsonTablePath* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonTablePath* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonTablePath* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonTablePath& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonTablePath& from) { JsonTablePath::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonTablePath* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonTablePath"; } protected: explicit JsonTablePath(::google::protobuf::Arena* arena); JsonTablePath(::google::protobuf::Arena* arena, const JsonTablePath& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 1, }; // string name = 1 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_name( const std::string& value); std::string* _internal_mutable_name(); public: // @@protoc_insertion_point(class_scope:pg_query.JsonTablePath) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 35, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr name_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonFormat final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonFormat) */ { public: inline JsonFormat() : JsonFormat(nullptr) {} ~JsonFormat() override; template explicit PROTOBUF_CONSTEXPR JsonFormat(::google::protobuf::internal::ConstantInitialized); inline JsonFormat(const JsonFormat& from) : JsonFormat(nullptr, from) {} JsonFormat(JsonFormat&& from) noexcept : JsonFormat() { *this = ::std::move(from); } inline JsonFormat& operator=(const JsonFormat& from) { CopyFrom(from); return *this; } inline JsonFormat& operator=(JsonFormat&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonFormat& default_instance() { return *internal_default_instance(); } static inline const JsonFormat* internal_default_instance() { return reinterpret_cast( &_JsonFormat_default_instance_); } static constexpr int kIndexInFileMessages = 51; friend void swap(JsonFormat& a, JsonFormat& b) { a.Swap(&b); } inline void Swap(JsonFormat* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonFormat* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonFormat* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonFormat& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonFormat& from) { JsonFormat::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonFormat* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonFormat"; } protected: explicit JsonFormat(::google::protobuf::Arena* arena); JsonFormat(::google::protobuf::Arena* arena, const JsonFormat& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFormatTypeFieldNumber = 1, kEncodingFieldNumber = 2, kLocationFieldNumber = 3, }; // .pg_query.JsonFormatType format_type = 1 [json_name = "format_type"]; void clear_format_type() ; ::pg_query::JsonFormatType format_type() const; void set_format_type(::pg_query::JsonFormatType value); private: ::pg_query::JsonFormatType _internal_format_type() const; void _internal_set_format_type(::pg_query::JsonFormatType value); public: // .pg_query.JsonEncoding encoding = 2 [json_name = "encoding"]; void clear_encoding() ; ::pg_query::JsonEncoding encoding() const; void set_encoding(::pg_query::JsonEncoding value); private: ::pg_query::JsonEncoding _internal_encoding() const; void _internal_set_encoding(::pg_query::JsonEncoding value); public: // int32 location = 3 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonFormat) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 0, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); int format_type_; int encoding_; ::int32_t location_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class Integer final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.Integer) */ { public: inline Integer() : Integer(nullptr) {} ~Integer() override; template explicit PROTOBUF_CONSTEXPR Integer(::google::protobuf::internal::ConstantInitialized); inline Integer(const Integer& from) : Integer(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const Integer& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Integer* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Integer* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const Integer& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const Integer& from) { Integer::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(Integer* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.Integer"; } protected: explicit Integer(::google::protobuf::Arena* arena); Integer(::google::protobuf::Arena* arena, const Integer& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kIvalFieldNumber = 1, }; // int32 ival = 1; void clear_ival() ; ::int32_t ival() const; void set_ival(::int32_t value); private: ::int32_t _internal_ival() const; void _internal_set_ival(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.Integer) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::int32_t ival_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class InlineCodeBlock final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.InlineCodeBlock) */ { public: inline InlineCodeBlock() : InlineCodeBlock(nullptr) {} ~InlineCodeBlock() override; template explicit PROTOBUF_CONSTEXPR InlineCodeBlock(::google::protobuf::internal::ConstantInitialized); inline InlineCodeBlock(const InlineCodeBlock& from) : InlineCodeBlock(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const InlineCodeBlock& default_instance() { return *internal_default_instance(); } static inline const InlineCodeBlock* internal_default_instance() { return reinterpret_cast( &_InlineCodeBlock_default_instance_); } static constexpr int kIndexInFileMessages = 217; friend void swap(InlineCodeBlock& a, InlineCodeBlock& b) { a.Swap(&b); } inline void Swap(InlineCodeBlock* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(InlineCodeBlock* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- InlineCodeBlock* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const InlineCodeBlock& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const InlineCodeBlock& from) { InlineCodeBlock::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(InlineCodeBlock* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.InlineCodeBlock"; } protected: explicit InlineCodeBlock(::google::protobuf::Arena* arena); InlineCodeBlock(::google::protobuf::Arena* arena, const InlineCodeBlock& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_source_text(Arg_&& arg, Args_... args); std::string* mutable_source_text(); PROTOBUF_NODISCARD std::string* release_source_text(); void set_allocated_source_text(std::string* value); private: const std::string& _internal_source_text() const; inline PROTOBUF_ALWAYS_INLINE 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() ; ::uint32_t lang_oid() const; void set_lang_oid(::uint32_t value); private: ::uint32_t _internal_lang_oid() const; void _internal_set_lang_oid(::uint32_t 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 0, 44, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr source_text_; ::uint32_t lang_oid_; bool lang_is_trusted_; bool atomic_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class Float final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.Float) */ { public: inline Float() : Float(nullptr) {} ~Float() override; template explicit PROTOBUF_CONSTEXPR Float(::google::protobuf::internal::ConstantInitialized); inline Float(const Float& from) : Float(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const Float& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Float* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Float* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const Float& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const Float& from) { Float::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(Float* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.Float"; } protected: explicit Float(::google::protobuf::Arena* arena); Float(::google::protobuf::Arena* arena, const Float& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFvalFieldNumber = 1, }; // string fval = 1; void clear_fval() ; const std::string& fval() const; template void set_fval(Arg_&& arg, Args_... args); std::string* mutable_fval(); PROTOBUF_NODISCARD std::string* release_fval(); void set_allocated_fval(std::string* value); private: const std::string& _internal_fval() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_fval( const std::string& value); std::string* _internal_mutable_fval(); public: // @@protoc_insertion_point(class_scope:pg_query.Float) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 27, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr fval_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class FetchStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.FetchStmt) */ { public: inline FetchStmt() : FetchStmt(nullptr) {} ~FetchStmt() override; template explicit PROTOBUF_CONSTEXPR FetchStmt(::google::protobuf::internal::ConstantInitialized); inline FetchStmt(const FetchStmt& from) : FetchStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const FetchStmt& default_instance() { return *internal_default_instance(); } static inline const FetchStmt* internal_default_instance() { return reinterpret_cast( &_FetchStmt_default_instance_); } static constexpr int kIndexInFileMessages = 208; friend void swap(FetchStmt& a, FetchStmt& b) { a.Swap(&b); } inline void Swap(FetchStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FetchStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- FetchStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const FetchStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const FetchStmt& from) { FetchStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(FetchStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.FetchStmt"; } protected: explicit FetchStmt(::google::protobuf::Arena* arena); FetchStmt(::google::protobuf::Arena* arena, const FetchStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_portalname(Arg_&& arg, Args_... args); std::string* mutable_portalname(); PROTOBUF_NODISCARD std::string* release_portalname(); void set_allocated_portalname(std::string* value); private: const std::string& _internal_portalname() const; inline PROTOBUF_ALWAYS_INLINE 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() ; ::int64_t how_many() const; void set_how_many(::int64_t value); private: ::int64_t _internal_how_many() const; void _internal_set_how_many(::int64_t 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 0, 37, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr portalname_; ::int64_t how_many_; int direction_; bool ismove_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DropTableSpaceStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DropTableSpaceStmt) */ { public: inline DropTableSpaceStmt() : DropTableSpaceStmt(nullptr) {} ~DropTableSpaceStmt() override; template explicit PROTOBUF_CONSTEXPR DropTableSpaceStmt(::google::protobuf::internal::ConstantInitialized); inline DropTableSpaceStmt(const DropTableSpaceStmt& from) : DropTableSpaceStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DropTableSpaceStmt& default_instance() { return *internal_default_instance(); } static inline const DropTableSpaceStmt* internal_default_instance() { return reinterpret_cast( &_DropTableSpaceStmt_default_instance_); } static constexpr int kIndexInFileMessages = 168; friend void swap(DropTableSpaceStmt& a, DropTableSpaceStmt& b) { a.Swap(&b); } inline void Swap(DropTableSpaceStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropTableSpaceStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DropTableSpaceStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DropTableSpaceStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DropTableSpaceStmt& from) { DropTableSpaceStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DropTableSpaceStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DropTableSpaceStmt"; } protected: explicit DropTableSpaceStmt(::google::protobuf::Arena* arena); DropTableSpaceStmt(::google::protobuf::Arena* arena, const DropTableSpaceStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTablespacenameFieldNumber = 1, kMissingOkFieldNumber = 2, }; // string tablespacename = 1 [json_name = "tablespacename"]; void clear_tablespacename() ; const std::string& tablespacename() const; template void set_tablespacename(Arg_&& arg, Args_... args); std::string* mutable_tablespacename(); PROTOBUF_NODISCARD std::string* release_tablespacename(); void set_allocated_tablespacename(std::string* value); private: const std::string& _internal_tablespacename() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 0, 50, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr tablespacename_; bool missing_ok_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DropSubscriptionStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DropSubscriptionStmt) */ { public: inline DropSubscriptionStmt() : DropSubscriptionStmt(nullptr) {} ~DropSubscriptionStmt() override; template explicit PROTOBUF_CONSTEXPR DropSubscriptionStmt(::google::protobuf::internal::ConstantInitialized); inline DropSubscriptionStmt(const DropSubscriptionStmt& from) : DropSubscriptionStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DropSubscriptionStmt& default_instance() { return *internal_default_instance(); } static inline const DropSubscriptionStmt* internal_default_instance() { return reinterpret_cast( &_DropSubscriptionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 270; friend void swap(DropSubscriptionStmt& a, DropSubscriptionStmt& b) { a.Swap(&b); } inline void Swap(DropSubscriptionStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropSubscriptionStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DropSubscriptionStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DropSubscriptionStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DropSubscriptionStmt& from) { DropSubscriptionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DropSubscriptionStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DropSubscriptionStmt"; } protected: explicit DropSubscriptionStmt(::google::protobuf::Arena* arena); DropSubscriptionStmt(::google::protobuf::Arena* arena, const DropSubscriptionStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_subname(Arg_&& arg, Args_... args); std::string* mutable_subname(); PROTOBUF_NODISCARD std::string* release_subname(); void set_allocated_subname(std::string* value); private: const std::string& _internal_subname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 0, 45, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr subname_; bool missing_ok_; int behavior_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DiscardStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DiscardStmt) */ { public: inline DiscardStmt() : DiscardStmt(nullptr) {} ~DiscardStmt() override; template explicit PROTOBUF_CONSTEXPR DiscardStmt(::google::protobuf::internal::ConstantInitialized); inline DiscardStmt(const DiscardStmt& from) : DiscardStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DiscardStmt& default_instance() { return *internal_default_instance(); } static inline const DiscardStmt* internal_default_instance() { return reinterpret_cast( &_DiscardStmt_default_instance_); } static constexpr int kIndexInFileMessages = 250; friend void swap(DiscardStmt& a, DiscardStmt& b) { a.Swap(&b); } inline void Swap(DiscardStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DiscardStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DiscardStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DiscardStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DiscardStmt& from) { DiscardStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DiscardStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DiscardStmt"; } protected: explicit DiscardStmt(::google::protobuf::Arena* arena); DiscardStmt(::google::protobuf::Arena* arena, const DiscardStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); int target_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DeallocateStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DeallocateStmt) */ { public: inline DeallocateStmt() : DeallocateStmt(nullptr) {} ~DeallocateStmt() override; template explicit PROTOBUF_CONSTEXPR DeallocateStmt(::google::protobuf::internal::ConstantInitialized); inline DeallocateStmt(const DeallocateStmt& from) : DeallocateStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DeallocateStmt& default_instance() { return *internal_default_instance(); } static inline const DeallocateStmt* internal_default_instance() { return reinterpret_cast( &_DeallocateStmt_default_instance_); } static constexpr int kIndexInFileMessages = 259; friend void swap(DeallocateStmt& a, DeallocateStmt& b) { a.Swap(&b); } inline void Swap(DeallocateStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DeallocateStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DeallocateStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DeallocateStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DeallocateStmt& from) { DeallocateStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DeallocateStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DeallocateStmt"; } protected: explicit DeallocateStmt(::google::protobuf::Arena* arena); DeallocateStmt(::google::protobuf::Arena* arena, const DeallocateStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 1, kIsallFieldNumber = 2, kLocationFieldNumber = 3, }; // string name = 1 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_name( const std::string& value); std::string* _internal_mutable_name(); public: // bool isall = 2 [json_name = "isall"]; void clear_isall() ; bool isall() const; void set_isall(bool value); private: bool _internal_isall() const; void _internal_set_isall(bool value); public: // int32 location = 3 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.DeallocateStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 0, 36, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr name_; bool isall_; ::int32_t location_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ClosePortalStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ClosePortalStmt) */ { public: inline ClosePortalStmt() : ClosePortalStmt(nullptr) {} ~ClosePortalStmt() override; template explicit PROTOBUF_CONSTEXPR ClosePortalStmt(::google::protobuf::internal::ConstantInitialized); inline ClosePortalStmt(const ClosePortalStmt& from) : ClosePortalStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ClosePortalStmt& default_instance() { return *internal_default_instance(); } static inline const ClosePortalStmt* internal_default_instance() { return reinterpret_cast( &_ClosePortalStmt_default_instance_); } static constexpr int kIndexInFileMessages = 207; friend void swap(ClosePortalStmt& a, ClosePortalStmt& b) { a.Swap(&b); } inline void Swap(ClosePortalStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ClosePortalStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ClosePortalStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ClosePortalStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ClosePortalStmt& from) { ClosePortalStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ClosePortalStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ClosePortalStmt"; } protected: explicit ClosePortalStmt(::google::protobuf::Arena* arena); ClosePortalStmt(::google::protobuf::Arena* arena, const ClosePortalStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPortalnameFieldNumber = 1, }; // string portalname = 1 [json_name = "portalname"]; void clear_portalname() ; const std::string& portalname() const; template void set_portalname(Arg_&& arg, Args_... args); std::string* mutable_portalname(); PROTOBUF_NODISCARD std::string* release_portalname(); void set_allocated_portalname(std::string* value); private: const std::string& _internal_portalname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 43, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr portalname_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CheckPointStmt final : public ::google::protobuf::internal::ZeroFieldsBase /* @@protoc_insertion_point(class_definition:pg_query.CheckPointStmt) */ { public: inline CheckPointStmt() : CheckPointStmt(nullptr) {} template explicit PROTOBUF_CONSTEXPR CheckPointStmt(::google::protobuf::internal::ConstantInitialized); inline CheckPointStmt(const CheckPointStmt& from) : CheckPointStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CheckPointStmt& default_instance() { return *internal_default_instance(); } static inline const CheckPointStmt* internal_default_instance() { return reinterpret_cast( &_CheckPointStmt_default_instance_); } static constexpr int kIndexInFileMessages = 249; friend void swap(CheckPointStmt& a, CheckPointStmt& b) { a.Swap(&b); } inline void Swap(CheckPointStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CheckPointStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CheckPointStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom; inline void CopyFrom(const CheckPointStmt& from) { ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from); } using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom; void MergeFrom(const CheckPointStmt& from) { ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from); } public: private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CheckPointStmt"; } protected: explicit CheckPointStmt(::google::protobuf::Arena* arena); CheckPointStmt(::google::protobuf::Arena* arena, const CheckPointStmt& from); public: ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // @@protoc_insertion_point(class_scope:pg_query.CheckPointStmt) private: class _Internal; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); PROTOBUF_TSAN_DECLARE_MEMBER }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CallContext final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CallContext) */ { public: inline CallContext() : CallContext(nullptr) {} ~CallContext() override; template explicit PROTOBUF_CONSTEXPR CallContext(::google::protobuf::internal::ConstantInitialized); inline CallContext(const CallContext& from) : CallContext(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CallContext& default_instance() { return *internal_default_instance(); } static inline const CallContext* internal_default_instance() { return reinterpret_cast( &_CallContext_default_instance_); } static constexpr int kIndexInFileMessages = 219; friend void swap(CallContext& a, CallContext& b) { a.Swap(&b); } inline void Swap(CallContext* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CallContext* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CallContext* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CallContext& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CallContext& from) { CallContext::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CallContext* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CallContext"; } protected: explicit CallContext(::google::protobuf::Arena* arena); CallContext(::google::protobuf::Arena* arena, const CallContext& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); bool atomic_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class Boolean final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.Boolean) */ { public: inline Boolean() : Boolean(nullptr) {} ~Boolean() override; template explicit PROTOBUF_CONSTEXPR Boolean(::google::protobuf::internal::ConstantInitialized); inline Boolean(const Boolean& from) : Boolean(nullptr, from) {} Boolean(Boolean&& from) noexcept : Boolean() { *this = ::std::move(from); } inline Boolean& operator=(const Boolean& from) { CopyFrom(from); return *this; } inline Boolean& operator=(Boolean&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const Boolean& default_instance() { return *internal_default_instance(); } static inline const Boolean* internal_default_instance() { return reinterpret_cast( &_Boolean_default_instance_); } static constexpr int kIndexInFileMessages = 5; friend void swap(Boolean& a, Boolean& b) { a.Swap(&b); } inline void Swap(Boolean* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Boolean* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Boolean* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const Boolean& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const Boolean& from) { Boolean::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(Boolean* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.Boolean"; } protected: explicit Boolean(::google::protobuf::Arena* arena); Boolean(::google::protobuf::Arena* arena, const Boolean& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kBoolvalFieldNumber = 1, }; // bool boolval = 1; void clear_boolval() ; bool boolval() const; void set_boolval(bool value); private: bool _internal_boolval() const; void _internal_set_boolval(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.Boolean) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); bool boolval_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class BitString final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.BitString) */ { public: inline BitString() : BitString(nullptr) {} ~BitString() override; template explicit PROTOBUF_CONSTEXPR BitString(::google::protobuf::internal::ConstantInitialized); inline BitString(const BitString& from) : BitString(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const BitString& default_instance() { return *internal_default_instance(); } static inline const BitString* internal_default_instance() { return reinterpret_cast( &_BitString_default_instance_); } static constexpr int kIndexInFileMessages = 7; friend void swap(BitString& a, BitString& b) { a.Swap(&b); } inline void Swap(BitString* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(BitString* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- BitString* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const BitString& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const BitString& from) { BitString::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(BitString* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.BitString"; } protected: explicit BitString(::google::protobuf::Arena* arena); BitString(::google::protobuf::Arena* arena, const BitString& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kBsvalFieldNumber = 1, }; // string bsval = 1; void clear_bsval() ; const std::string& bsval() const; template void set_bsval(Arg_&& arg, Args_... args); std::string* mutable_bsval(); PROTOBUF_NODISCARD std::string* release_bsval(); void set_allocated_bsval(std::string* value); private: const std::string& _internal_bsval() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_bsval( const std::string& value); std::string* _internal_mutable_bsval(); public: // @@protoc_insertion_point(class_scope:pg_query.BitString) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 32, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr bsval_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterEventTrigStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterEventTrigStmt) */ { public: inline AlterEventTrigStmt() : AlterEventTrigStmt(nullptr) {} ~AlterEventTrigStmt() override; template explicit PROTOBUF_CONSTEXPR AlterEventTrigStmt(::google::protobuf::internal::ConstantInitialized); inline AlterEventTrigStmt(const AlterEventTrigStmt& from) : AlterEventTrigStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterEventTrigStmt& default_instance() { return *internal_default_instance(); } static inline const AlterEventTrigStmt* internal_default_instance() { return reinterpret_cast( &_AlterEventTrigStmt_default_instance_); } static constexpr int kIndexInFileMessages = 188; friend void swap(AlterEventTrigStmt& a, AlterEventTrigStmt& b) { a.Swap(&b); } inline void Swap(AlterEventTrigStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterEventTrigStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterEventTrigStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterEventTrigStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterEventTrigStmt& from) { AlterEventTrigStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterEventTrigStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterEventTrigStmt"; } protected: explicit AlterEventTrigStmt(::google::protobuf::Arena* arena); AlterEventTrigStmt(::google::protobuf::Arena* arena, const AlterEventTrigStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTrignameFieldNumber = 1, kTgenabledFieldNumber = 2, }; // string trigname = 1 [json_name = "trigname"]; void clear_trigname() ; const std::string& trigname() const; template void set_trigname(Arg_&& arg, Args_... args); std::string* mutable_trigname(); PROTOBUF_NODISCARD std::string* release_trigname(); void set_allocated_trigname(std::string* value); private: const std::string& _internal_trigname() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_tgenabled(Arg_&& arg, Args_... args); std::string* mutable_tgenabled(); PROTOBUF_NODISCARD std::string* release_tgenabled(); void set_allocated_tgenabled(std::string* value); private: const std::string& _internal_tgenabled() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 0, 53, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr trigname_; ::google::protobuf::internal::ArenaStringPtr tgenabled_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterDatabaseRefreshCollStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDatabaseRefreshCollStmt) */ { public: inline AlterDatabaseRefreshCollStmt() : AlterDatabaseRefreshCollStmt(nullptr) {} ~AlterDatabaseRefreshCollStmt() override; template explicit PROTOBUF_CONSTEXPR AlterDatabaseRefreshCollStmt(::google::protobuf::internal::ConstantInitialized); inline AlterDatabaseRefreshCollStmt(const AlterDatabaseRefreshCollStmt& from) : AlterDatabaseRefreshCollStmt(nullptr, from) {} AlterDatabaseRefreshCollStmt(AlterDatabaseRefreshCollStmt&& from) noexcept : AlterDatabaseRefreshCollStmt() { *this = ::std::move(from); } inline AlterDatabaseRefreshCollStmt& operator=(const AlterDatabaseRefreshCollStmt& from) { CopyFrom(from); return *this; } inline AlterDatabaseRefreshCollStmt& operator=(AlterDatabaseRefreshCollStmt&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterDatabaseRefreshCollStmt& default_instance() { return *internal_default_instance(); } static inline const AlterDatabaseRefreshCollStmt* internal_default_instance() { return reinterpret_cast( &_AlterDatabaseRefreshCollStmt_default_instance_); } static constexpr int kIndexInFileMessages = 239; friend void swap(AlterDatabaseRefreshCollStmt& a, AlterDatabaseRefreshCollStmt& b) { a.Swap(&b); } inline void Swap(AlterDatabaseRefreshCollStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterDatabaseRefreshCollStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterDatabaseRefreshCollStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterDatabaseRefreshCollStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterDatabaseRefreshCollStmt& from) { AlterDatabaseRefreshCollStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterDatabaseRefreshCollStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterDatabaseRefreshCollStmt"; } protected: explicit AlterDatabaseRefreshCollStmt(::google::protobuf::Arena* arena); AlterDatabaseRefreshCollStmt(::google::protobuf::Arena* arena, const AlterDatabaseRefreshCollStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kDbnameFieldNumber = 1, }; // string dbname = 1 [json_name = "dbname"]; void clear_dbname() ; const std::string& dbname() const; template void set_dbname(Arg_&& arg, Args_... args); std::string* mutable_dbname(); PROTOBUF_NODISCARD std::string* release_dbname(); void set_allocated_dbname(std::string* value); private: const std::string& _internal_dbname() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_dbname( const std::string& value); std::string* _internal_mutable_dbname(); public: // @@protoc_insertion_point(class_scope:pg_query.AlterDatabaseRefreshCollStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 0, 52, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::ArenaStringPtr dbname_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class A_Star final : public ::google::protobuf::internal::ZeroFieldsBase /* @@protoc_insertion_point(class_definition:pg_query.A_Star) */ { public: inline A_Star() : A_Star(nullptr) {} template explicit PROTOBUF_CONSTEXPR A_Star(::google::protobuf::internal::ConstantInitialized); inline A_Star(const A_Star& from) : A_Star(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const A_Star& default_instance() { return *internal_default_instance(); } static inline const A_Star* internal_default_instance() { return reinterpret_cast( &_A_Star_default_instance_); } static constexpr int kIndexInFileMessages = 84; friend void swap(A_Star& a, A_Star& b) { a.Swap(&b); } inline void Swap(A_Star* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Star* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- A_Star* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom; inline void CopyFrom(const A_Star& from) { ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from); } using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom; void MergeFrom(const A_Star& from) { ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from); } public: private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.A_Star"; } protected: explicit A_Star(::google::protobuf::Arena* arena); A_Star(::google::protobuf::Arena* arena, const A_Star& from); public: ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // @@protoc_insertion_point(class_scope:pg_query.A_Star) private: class _Internal; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); PROTOBUF_TSAN_DECLARE_MEMBER }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ScanResult final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ScanResult) */ { public: inline ScanResult() : ScanResult(nullptr) {} ~ScanResult() override; template explicit PROTOBUF_CONSTEXPR ScanResult(::google::protobuf::internal::ConstantInitialized); inline ScanResult(const ScanResult& from) : ScanResult(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ScanResult& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ScanResult* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ScanResult* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ScanResult& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ScanResult& from) { ScanResult::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ScanResult* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ScanResult"; } protected: explicit ScanResult(::google::protobuf::Arena* arena); ScanResult(::google::protobuf::Arena* arena, const ScanResult& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::ScanToken >* mutable_tokens(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::ScanToken>& _internal_tokens() const; ::google::protobuf::RepeatedPtrField<::pg_query::ScanToken>* _internal_mutable_tokens(); public: const ::pg_query::ScanToken& tokens(int index) const; ::pg_query::ScanToken* add_tokens(); const ::google::protobuf::RepeatedPtrField< ::pg_query::ScanToken >& tokens() const; // int32 version = 1; void clear_version() ; ::int32_t version() const; void set_version(::int32_t value); private: ::int32_t _internal_version() const; void _internal_set_version(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.ScanResult) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::ScanToken > tokens_; ::int32_t version_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonReturning final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonReturning) */ { public: inline JsonReturning() : JsonReturning(nullptr) {} ~JsonReturning() override; template explicit PROTOBUF_CONSTEXPR JsonReturning(::google::protobuf::internal::ConstantInitialized); inline JsonReturning(const JsonReturning& from) : JsonReturning(nullptr, from) {} JsonReturning(JsonReturning&& from) noexcept : JsonReturning() { *this = ::std::move(from); } inline JsonReturning& operator=(const JsonReturning& from) { CopyFrom(from); return *this; } inline JsonReturning& operator=(JsonReturning&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonReturning& default_instance() { return *internal_default_instance(); } static inline const JsonReturning* internal_default_instance() { return reinterpret_cast( &_JsonReturning_default_instance_); } static constexpr int kIndexInFileMessages = 52; friend void swap(JsonReturning& a, JsonReturning& b) { a.Swap(&b); } inline void Swap(JsonReturning* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonReturning* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonReturning* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonReturning& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonReturning& from) { JsonReturning::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonReturning* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonReturning"; } protected: explicit JsonReturning(::google::protobuf::Arena* arena); JsonReturning(::google::protobuf::Arena* arena, const JsonReturning& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFormatFieldNumber = 1, kTypidFieldNumber = 2, kTypmodFieldNumber = 3, }; // .pg_query.JsonFormat format = 1 [json_name = "format"]; bool has_format() const; void clear_format() ; const ::pg_query::JsonFormat& format() const; PROTOBUF_NODISCARD ::pg_query::JsonFormat* release_format(); ::pg_query::JsonFormat* mutable_format(); void set_allocated_format(::pg_query::JsonFormat* value); void unsafe_arena_set_allocated_format(::pg_query::JsonFormat* value); ::pg_query::JsonFormat* unsafe_arena_release_format(); private: const ::pg_query::JsonFormat& _internal_format() const; ::pg_query::JsonFormat* _internal_mutable_format(); public: // uint32 typid = 2 [json_name = "typid"]; void clear_typid() ; ::uint32_t typid() const; void set_typid(::uint32_t value); private: ::uint32_t _internal_typid() const; void _internal_set_typid(::uint32_t value); public: // int32 typmod = 3 [json_name = "typmod"]; void clear_typmod() ; ::int32_t typmod() const; void set_typmod(::int32_t value); private: ::int32_t _internal_typmod() const; void _internal_set_typmod(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonReturning) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::JsonFormat* format_; ::uint32_t typid_; ::int32_t typmod_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DropUserMappingStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DropUserMappingStmt) */ { public: inline DropUserMappingStmt() : DropUserMappingStmt(nullptr) {} ~DropUserMappingStmt() override; template explicit PROTOBUF_CONSTEXPR DropUserMappingStmt(::google::protobuf::internal::ConstantInitialized); inline DropUserMappingStmt(const DropUserMappingStmt& from) : DropUserMappingStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DropUserMappingStmt& default_instance() { return *internal_default_instance(); } static inline const DropUserMappingStmt* internal_default_instance() { return reinterpret_cast( &_DropUserMappingStmt_default_instance_); } static constexpr int kIndexInFileMessages = 181; friend void swap(DropUserMappingStmt& a, DropUserMappingStmt& b) { a.Swap(&b); } inline void Swap(DropUserMappingStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropUserMappingStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DropUserMappingStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DropUserMappingStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DropUserMappingStmt& from) { DropUserMappingStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DropUserMappingStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DropUserMappingStmt"; } protected: explicit DropUserMappingStmt(::google::protobuf::Arena* arena); DropUserMappingStmt(::google::protobuf::Arena* arena, const DropUserMappingStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_servername(Arg_&& arg, Args_... args); std::string* mutable_servername(); PROTOBUF_NODISCARD std::string* release_servername(); void set_allocated_servername(std::string* value); private: const std::string& _internal_servername() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_user() ; const ::pg_query::RoleSpec& user() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_user(); ::pg_query::RoleSpec* mutable_user(); void set_allocated_user(::pg_query::RoleSpec* value); void unsafe_arena_set_allocated_user(::pg_query::RoleSpec* value); ::pg_query::RoleSpec* unsafe_arena_release_user(); private: const ::pg_query::RoleSpec& _internal_user() const; ::pg_query::RoleSpec* _internal_mutable_user(); 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.DropUserMappingStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 47, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr servername_; ::pg_query::RoleSpec* user_; bool missing_ok_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class A_Const final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Const) */ { public: inline A_Const() : A_Const(nullptr) {} ~A_Const() override; template explicit PROTOBUF_CONSTEXPR A_Const(::google::protobuf::internal::ConstantInitialized); inline A_Const(const A_Const& from) : A_Const(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const A_Const& default_instance() { return *internal_default_instance(); } enum ValCase { kIval = 1, kFval = 2, kBoolval = 3, kSval = 4, kBsval = 5, VAL_NOT_SET = 0, }; static inline const A_Const* internal_default_instance() { return reinterpret_cast( &_A_Const_default_instance_); } static constexpr int kIndexInFileMessages = 11; friend void swap(A_Const& a, A_Const& b) { a.Swap(&b); } inline void Swap(A_Const* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Const* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- A_Const* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const A_Const& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const A_Const& from) { A_Const::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(A_Const* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.A_Const"; } protected: explicit A_Const(::google::protobuf::Arena* arena); A_Const(::google::protobuf::Arena* arena, const A_Const& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kIsnullFieldNumber = 10, kLocationFieldNumber = 11, kIvalFieldNumber = 1, kFvalFieldNumber = 2, kBoolvalFieldNumber = 3, kSvalFieldNumber = 4, kBsvalFieldNumber = 5, }; // bool isnull = 10; void clear_isnull() ; bool isnull() const; void set_isnull(bool value); private: bool _internal_isnull() const; void _internal_set_isnull(bool value); public: // int32 location = 11; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // .pg_query.Integer ival = 1; bool has_ival() const; private: bool _internal_has_ival() const; public: void clear_ival() ; const ::pg_query::Integer& ival() const; PROTOBUF_NODISCARD ::pg_query::Integer* release_ival(); ::pg_query::Integer* mutable_ival(); void set_allocated_ival(::pg_query::Integer* value); void unsafe_arena_set_allocated_ival(::pg_query::Integer* value); ::pg_query::Integer* unsafe_arena_release_ival(); private: const ::pg_query::Integer& _internal_ival() const; ::pg_query::Integer* _internal_mutable_ival(); public: // .pg_query.Float fval = 2; bool has_fval() const; private: bool _internal_has_fval() const; public: void clear_fval() ; const ::pg_query::Float& fval() const; PROTOBUF_NODISCARD ::pg_query::Float* release_fval(); ::pg_query::Float* mutable_fval(); void set_allocated_fval(::pg_query::Float* value); void unsafe_arena_set_allocated_fval(::pg_query::Float* value); ::pg_query::Float* unsafe_arena_release_fval(); private: const ::pg_query::Float& _internal_fval() const; ::pg_query::Float* _internal_mutable_fval(); public: // .pg_query.Boolean boolval = 3; bool has_boolval() const; private: bool _internal_has_boolval() const; public: void clear_boolval() ; const ::pg_query::Boolean& boolval() const; PROTOBUF_NODISCARD ::pg_query::Boolean* release_boolval(); ::pg_query::Boolean* mutable_boolval(); void set_allocated_boolval(::pg_query::Boolean* value); void unsafe_arena_set_allocated_boolval(::pg_query::Boolean* value); ::pg_query::Boolean* unsafe_arena_release_boolval(); private: const ::pg_query::Boolean& _internal_boolval() const; ::pg_query::Boolean* _internal_mutable_boolval(); public: // .pg_query.String sval = 4; bool has_sval() const; private: bool _internal_has_sval() const; public: void clear_sval() ; const ::pg_query::String& sval() const; PROTOBUF_NODISCARD ::pg_query::String* release_sval(); ::pg_query::String* mutable_sval(); void set_allocated_sval(::pg_query::String* value); void unsafe_arena_set_allocated_sval(::pg_query::String* value); ::pg_query::String* unsafe_arena_release_sval(); private: const ::pg_query::String& _internal_sval() const; ::pg_query::String* _internal_mutable_sval(); public: // .pg_query.BitString bsval = 5; bool has_bsval() const; private: bool _internal_has_bsval() const; public: void clear_bsval() ; const ::pg_query::BitString& bsval() const; PROTOBUF_NODISCARD ::pg_query::BitString* release_bsval(); ::pg_query::BitString* mutable_bsval(); void set_allocated_bsval(::pg_query::BitString* value); void unsafe_arena_set_allocated_bsval(::pg_query::BitString* value); ::pg_query::BitString* unsafe_arena_release_bsval(); private: const ::pg_query::BitString& _internal_bsval() const; ::pg_query::BitString* _internal_mutable_bsval(); public: void clear_val(); ValCase val_case() const; // @@protoc_insertion_point(class_scope:pg_query.A_Const) private: class _Internal; void set_has_ival(); void set_has_fval(); void set_has_boolval(); void set_has_sval(); void set_has_bsval(); inline bool has_val() const; inline void clear_has_val(); friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 7, 5, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); bool isnull_; ::int32_t location_; union ValUnion { constexpr ValUnion() : _constinit_{} {} ::google::protobuf::internal::ConstantInitialized _constinit_; ::pg_query::Integer* ival_; ::pg_query::Float* fval_; ::pg_query::Boolean* boolval_; ::pg_query::String* sval_; ::pg_query::BitString* bsval_; } val_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::uint32_t _oneof_case_[1]; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class A_ArrayExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.A_ArrayExpr) */ { public: inline A_ArrayExpr() : A_ArrayExpr(nullptr) {} ~A_ArrayExpr() override; template explicit PROTOBUF_CONSTEXPR A_ArrayExpr(::google::protobuf::internal::ConstantInitialized); inline A_ArrayExpr(const A_ArrayExpr& from) : A_ArrayExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const A_ArrayExpr& default_instance() { return *internal_default_instance(); } static inline const A_ArrayExpr* internal_default_instance() { return reinterpret_cast( &_A_ArrayExpr_default_instance_); } static constexpr int kIndexInFileMessages = 87; friend void swap(A_ArrayExpr& a, A_ArrayExpr& b) { a.Swap(&b); } inline void Swap(A_ArrayExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_ArrayExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- A_ArrayExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const A_ArrayExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const A_ArrayExpr& from) { A_ArrayExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(A_ArrayExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.A_ArrayExpr"; } protected: explicit A_ArrayExpr(::google::protobuf::Arena* arena); A_ArrayExpr(::google::protobuf::Arena* arena, const A_ArrayExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_elements(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_elements() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_elements(); public: const ::pg_query::Node& elements(int index) const; ::pg_query::Node* add_elements(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& elements() const; // int32 location = 2 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.A_ArrayExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > elements_; ::int32_t location_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class A_Expr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Expr) */ { public: inline A_Expr() : A_Expr(nullptr) {} ~A_Expr() override; template explicit PROTOBUF_CONSTEXPR A_Expr(::google::protobuf::internal::ConstantInitialized); inline A_Expr(const A_Expr& from) : A_Expr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const A_Expr& default_instance() { return *internal_default_instance(); } static inline const A_Expr* internal_default_instance() { return reinterpret_cast( &_A_Expr_default_instance_); } static constexpr int kIndexInFileMessages = 79; friend void swap(A_Expr& a, A_Expr& b) { a.Swap(&b); } inline void Swap(A_Expr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Expr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- A_Expr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const A_Expr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const A_Expr& from) { A_Expr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(A_Expr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.A_Expr"; } protected: explicit A_Expr(::google::protobuf::Arena* arena); A_Expr(::google::protobuf::Arena* arena, const A_Expr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_name(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_name() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_name(); public: const ::pg_query::Node& name(int index) const; ::pg_query::Node* add_name(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& name() const; // .pg_query.Node lexpr = 3 [json_name = "lexpr"]; bool has_lexpr() const; void clear_lexpr() ; const ::pg_query::Node& lexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_lexpr(); ::pg_query::Node* mutable_lexpr(); void set_allocated_lexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_lexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_lexpr(); private: const ::pg_query::Node& _internal_lexpr() const; ::pg_query::Node* _internal_mutable_lexpr(); public: // .pg_query.Node rexpr = 4 [json_name = "rexpr"]; bool has_rexpr() const; void clear_rexpr() ; const ::pg_query::Node& rexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_rexpr(); ::pg_query::Node* mutable_rexpr(); void set_allocated_rexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_rexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_rexpr(); private: const ::pg_query::Node& _internal_rexpr() const; ::pg_query::Node* _internal_mutable_rexpr(); public: // .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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.A_Expr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > name_; ::pg_query::Node* lexpr_; ::pg_query::Node* rexpr_; int kind_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class A_Indices final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Indices) */ { public: inline A_Indices() : A_Indices(nullptr) {} ~A_Indices() override; template explicit PROTOBUF_CONSTEXPR A_Indices(::google::protobuf::internal::ConstantInitialized); inline A_Indices(const A_Indices& from) : A_Indices(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const A_Indices& default_instance() { return *internal_default_instance(); } static inline const A_Indices* internal_default_instance() { return reinterpret_cast( &_A_Indices_default_instance_); } static constexpr int kIndexInFileMessages = 85; friend void swap(A_Indices& a, A_Indices& b) { a.Swap(&b); } inline void Swap(A_Indices* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Indices* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- A_Indices* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const A_Indices& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const A_Indices& from) { A_Indices::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(A_Indices* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.A_Indices"; } protected: explicit A_Indices(::google::protobuf::Arena* arena); A_Indices(::google::protobuf::Arena* arena, const A_Indices& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kLidxFieldNumber = 2, kUidxFieldNumber = 3, kIsSliceFieldNumber = 1, }; // .pg_query.Node lidx = 2 [json_name = "lidx"]; bool has_lidx() const; void clear_lidx() ; const ::pg_query::Node& lidx() const; PROTOBUF_NODISCARD ::pg_query::Node* release_lidx(); ::pg_query::Node* mutable_lidx(); void set_allocated_lidx(::pg_query::Node* value); void unsafe_arena_set_allocated_lidx(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_lidx(); private: const ::pg_query::Node& _internal_lidx() const; ::pg_query::Node* _internal_mutable_lidx(); public: // .pg_query.Node uidx = 3 [json_name = "uidx"]; bool has_uidx() const; void clear_uidx() ; const ::pg_query::Node& uidx() const; PROTOBUF_NODISCARD ::pg_query::Node* release_uidx(); ::pg_query::Node* mutable_uidx(); void set_allocated_uidx(::pg_query::Node* value); void unsafe_arena_set_allocated_uidx(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_uidx(); private: const ::pg_query::Node& _internal_uidx() const; ::pg_query::Node* _internal_mutable_uidx(); public: // 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* lidx_; ::pg_query::Node* uidx_; bool is_slice_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class A_Indirection final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Indirection) */ { public: inline A_Indirection() : A_Indirection(nullptr) {} ~A_Indirection() override; template explicit PROTOBUF_CONSTEXPR A_Indirection(::google::protobuf::internal::ConstantInitialized); inline A_Indirection(const A_Indirection& from) : A_Indirection(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const A_Indirection& default_instance() { return *internal_default_instance(); } static inline const A_Indirection* internal_default_instance() { return reinterpret_cast( &_A_Indirection_default_instance_); } static constexpr int kIndexInFileMessages = 86; friend void swap(A_Indirection& a, A_Indirection& b) { a.Swap(&b); } inline void Swap(A_Indirection* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Indirection* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- A_Indirection* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const A_Indirection& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const A_Indirection& from) { A_Indirection::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(A_Indirection* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.A_Indirection"; } protected: explicit A_Indirection(::google::protobuf::Arena* arena); A_Indirection(::google::protobuf::Arena* arena, const A_Indirection& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_indirection(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_indirection() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_indirection(); public: const ::pg_query::Node& indirection(int index) const; ::pg_query::Node* add_indirection(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& indirection() const; // .pg_query.Node arg = 1 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // @@protoc_insertion_point(class_scope:pg_query.A_Indirection) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > indirection_; ::pg_query::Node* arg_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AccessPriv final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AccessPriv) */ { public: inline AccessPriv() : AccessPriv(nullptr) {} ~AccessPriv() override; template explicit PROTOBUF_CONSTEXPR AccessPriv(::google::protobuf::internal::ConstantInitialized); inline AccessPriv(const AccessPriv& from) : AccessPriv(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AccessPriv& default_instance() { return *internal_default_instance(); } static inline const AccessPriv* internal_default_instance() { return reinterpret_cast( &_AccessPriv_default_instance_); } static constexpr int kIndexInFileMessages = 159; friend void swap(AccessPriv& a, AccessPriv& b) { a.Swap(&b); } inline void Swap(AccessPriv* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AccessPriv* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AccessPriv* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AccessPriv& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AccessPriv& from) { AccessPriv::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AccessPriv* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AccessPriv"; } protected: explicit AccessPriv(::google::protobuf::Arena* arena); AccessPriv(::google::protobuf::Arena* arena, const AccessPriv& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_cols(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_cols() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_cols(); public: const ::pg_query::Node& cols(int index) const; ::pg_query::Node* add_cols(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& cols() const; // string priv_name = 1 [json_name = "priv_name"]; void clear_priv_name() ; const std::string& priv_name() const; template void set_priv_name(Arg_&& arg, Args_... args); std::string* mutable_priv_name(); PROTOBUF_NODISCARD std::string* release_priv_name(); void set_allocated_priv_name(std::string* value); private: const std::string& _internal_priv_name() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 37, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > cols_; ::google::protobuf::internal::ArenaStringPtr priv_name_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class Aggref final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.Aggref) */ { public: inline Aggref() : Aggref(nullptr) {} ~Aggref() override; template explicit PROTOBUF_CONSTEXPR Aggref(::google::protobuf::internal::ConstantInitialized); inline Aggref(const Aggref& from) : Aggref(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const Aggref& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Aggref* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Aggref* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const Aggref& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const Aggref& from) { Aggref::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(Aggref* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.Aggref"; } protected: explicit Aggref(::google::protobuf::Arena* arena); Aggref(::google::protobuf::Arena* arena, const Aggref& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kAggargtypesFieldNumber = 6, kAggdirectargsFieldNumber = 7, kArgsFieldNumber = 8, kAggorderFieldNumber = 9, kAggdistinctFieldNumber = 10, kAggkindFieldNumber = 14, kXprFieldNumber = 1, kAggfilterFieldNumber = 11, kAggfnoidFieldNumber = 2, kAggtypeFieldNumber = 3, kAggcollidFieldNumber = 4, kInputcollidFieldNumber = 5, kAggstarFieldNumber = 12, kAggvariadicFieldNumber = 13, kAgglevelsupFieldNumber = 15, kAggsplitFieldNumber = 16, kAggnoFieldNumber = 17, kAggtransnoFieldNumber = 18, kLocationFieldNumber = 19, }; // repeated .pg_query.Node aggargtypes = 6 [json_name = "aggargtypes"]; int aggargtypes_size() const; private: int _internal_aggargtypes_size() const; public: void clear_aggargtypes() ; ::pg_query::Node* mutable_aggargtypes(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_aggargtypes(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_aggargtypes() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_aggargtypes(); public: const ::pg_query::Node& aggargtypes(int index) const; ::pg_query::Node* add_aggargtypes(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& aggargtypes() const; // repeated .pg_query.Node aggdirectargs = 7 [json_name = "aggdirectargs"]; int aggdirectargs_size() const; private: int _internal_aggdirectargs_size() const; public: void clear_aggdirectargs() ; ::pg_query::Node* mutable_aggdirectargs(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_aggdirectargs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_aggdirectargs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_aggdirectargs(); public: const ::pg_query::Node& aggdirectargs(int index) const; ::pg_query::Node* add_aggdirectargs(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& aggdirectargs() const; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // repeated .pg_query.Node aggorder = 9 [json_name = "aggorder"]; int aggorder_size() const; private: int _internal_aggorder_size() const; public: void clear_aggorder() ; ::pg_query::Node* mutable_aggorder(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_aggorder(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_aggorder() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_aggorder(); public: const ::pg_query::Node& aggorder(int index) const; ::pg_query::Node* add_aggorder(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& aggorder() const; // repeated .pg_query.Node aggdistinct = 10 [json_name = "aggdistinct"]; int aggdistinct_size() const; private: int _internal_aggdistinct_size() const; public: void clear_aggdistinct() ; ::pg_query::Node* mutable_aggdistinct(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_aggdistinct(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_aggdistinct() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_aggdistinct(); public: const ::pg_query::Node& aggdistinct(int index) const; ::pg_query::Node* add_aggdistinct(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& aggdistinct() const; // string aggkind = 14 [json_name = "aggkind"]; void clear_aggkind() ; const std::string& aggkind() const; template void set_aggkind(Arg_&& arg, Args_... args); std::string* mutable_aggkind(); PROTOBUF_NODISCARD std::string* release_aggkind(); void set_allocated_aggkind(std::string* value); private: const std::string& _internal_aggkind() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node aggfilter = 11 [json_name = "aggfilter"]; bool has_aggfilter() const; void clear_aggfilter() ; const ::pg_query::Node& aggfilter() const; PROTOBUF_NODISCARD ::pg_query::Node* release_aggfilter(); ::pg_query::Node* mutable_aggfilter(); void set_allocated_aggfilter(::pg_query::Node* value); void unsafe_arena_set_allocated_aggfilter(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_aggfilter(); private: const ::pg_query::Node& _internal_aggfilter() const; ::pg_query::Node* _internal_mutable_aggfilter(); public: // uint32 aggfnoid = 2 [json_name = "aggfnoid"]; void clear_aggfnoid() ; ::uint32_t aggfnoid() const; void set_aggfnoid(::uint32_t value); private: ::uint32_t _internal_aggfnoid() const; void _internal_set_aggfnoid(::uint32_t value); public: // uint32 aggtype = 3 [json_name = "aggtype"]; void clear_aggtype() ; ::uint32_t aggtype() const; void set_aggtype(::uint32_t value); private: ::uint32_t _internal_aggtype() const; void _internal_set_aggtype(::uint32_t value); public: // uint32 aggcollid = 4 [json_name = "aggcollid"]; void clear_aggcollid() ; ::uint32_t aggcollid() const; void set_aggcollid(::uint32_t value); private: ::uint32_t _internal_aggcollid() const; void _internal_set_aggcollid(::uint32_t value); public: // uint32 inputcollid = 5 [json_name = "inputcollid"]; void clear_inputcollid() ; ::uint32_t inputcollid() const; void set_inputcollid(::uint32_t value); private: ::uint32_t _internal_inputcollid() const; void _internal_set_inputcollid(::uint32_t value); public: // bool aggstar = 12 [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 = 13 [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 = 15 [json_name = "agglevelsup"]; void clear_agglevelsup() ; ::uint32_t agglevelsup() const; void set_agglevelsup(::uint32_t value); private: ::uint32_t _internal_agglevelsup() const; void _internal_set_agglevelsup(::uint32_t value); public: // .pg_query.AggSplit aggsplit = 16 [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 aggno = 17 [json_name = "aggno"]; void clear_aggno() ; ::int32_t aggno() const; void set_aggno(::int32_t value); private: ::int32_t _internal_aggno() const; void _internal_set_aggno(::int32_t value); public: // int32 aggtransno = 18 [json_name = "aggtransno"]; void clear_aggtransno() ; ::int32_t aggtransno() const; void set_aggtransno(::int32_t value); private: ::int32_t _internal_aggtransno() const; void _internal_set_aggtransno(::int32_t value); public: // int32 location = 19 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.Aggref) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 5, 19, 7, 47, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > aggargtypes_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > aggdirectargs_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > aggorder_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > aggdistinct_; ::google::protobuf::internal::ArenaStringPtr aggkind_; ::pg_query::Node* xpr_; ::pg_query::Node* aggfilter_; ::uint32_t aggfnoid_; ::uint32_t aggtype_; ::uint32_t aggcollid_; ::uint32_t inputcollid_; bool aggstar_; bool aggvariadic_; ::uint32_t agglevelsup_; int aggsplit_; ::int32_t aggno_; ::int32_t aggtransno_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class Alias final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.Alias) */ { public: inline Alias() : Alias(nullptr) {} ~Alias() override; template explicit PROTOBUF_CONSTEXPR Alias(::google::protobuf::internal::ConstantInitialized); inline Alias(const Alias& from) : Alias(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const Alias& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Alias* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Alias* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const Alias& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const Alias& from) { Alias::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(Alias* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.Alias"; } protected: explicit Alias(::google::protobuf::Arena* arena); Alias(::google::protobuf::Arena* arena, const Alias& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_colnames(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_colnames() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_colnames(); public: const ::pg_query::Node& colnames(int index) const; ::pg_query::Node* add_colnames(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& colnames() const; // string aliasname = 1 [json_name = "aliasname"]; void clear_aliasname() ; const std::string& aliasname() const; template void set_aliasname(Arg_&& arg, Args_... args); std::string* mutable_aliasname(); PROTOBUF_NODISCARD std::string* release_aliasname(); void set_allocated_aliasname(std::string* value); private: const std::string& _internal_aliasname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 32, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > colnames_; ::google::protobuf::internal::ArenaStringPtr aliasname_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterCollationStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterCollationStmt) */ { public: inline AlterCollationStmt() : AlterCollationStmt(nullptr) {} ~AlterCollationStmt() override; template explicit PROTOBUF_CONSTEXPR AlterCollationStmt(::google::protobuf::internal::ConstantInitialized); inline AlterCollationStmt(const AlterCollationStmt& from) : AlterCollationStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterCollationStmt& default_instance() { return *internal_default_instance(); } static inline const AlterCollationStmt* internal_default_instance() { return reinterpret_cast( &_AlterCollationStmt_default_instance_); } static constexpr int kIndexInFileMessages = 155; friend void swap(AlterCollationStmt& a, AlterCollationStmt& b) { a.Swap(&b); } inline void Swap(AlterCollationStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterCollationStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterCollationStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterCollationStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterCollationStmt& from) { AlterCollationStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterCollationStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterCollationStmt"; } protected: explicit AlterCollationStmt(::google::protobuf::Arena* arena); AlterCollationStmt(::google::protobuf::Arena* arena, const AlterCollationStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_collname(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_collname() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_collname(); public: const ::pg_query::Node& collname(int index) const; ::pg_query::Node* add_collname(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& collname() const; // @@protoc_insertion_point(class_scope:pg_query.AlterCollationStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > collname_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterDatabaseSetStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDatabaseSetStmt) */ { public: inline AlterDatabaseSetStmt() : AlterDatabaseSetStmt(nullptr) {} ~AlterDatabaseSetStmt() override; template explicit PROTOBUF_CONSTEXPR AlterDatabaseSetStmt(::google::protobuf::internal::ConstantInitialized); inline AlterDatabaseSetStmt(const AlterDatabaseSetStmt& from) : AlterDatabaseSetStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterDatabaseSetStmt& default_instance() { return *internal_default_instance(); } static inline const AlterDatabaseSetStmt* internal_default_instance() { return reinterpret_cast( &_AlterDatabaseSetStmt_default_instance_); } static constexpr int kIndexInFileMessages = 240; friend void swap(AlterDatabaseSetStmt& a, AlterDatabaseSetStmt& b) { a.Swap(&b); } inline void Swap(AlterDatabaseSetStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterDatabaseSetStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterDatabaseSetStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterDatabaseSetStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterDatabaseSetStmt& from) { AlterDatabaseSetStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterDatabaseSetStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterDatabaseSetStmt"; } protected: explicit AlterDatabaseSetStmt(::google::protobuf::Arena* arena); AlterDatabaseSetStmt(::google::protobuf::Arena* arena, const AlterDatabaseSetStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kDbnameFieldNumber = 1, kSetstmtFieldNumber = 2, }; // string dbname = 1 [json_name = "dbname"]; void clear_dbname() ; const std::string& dbname() const; template void set_dbname(Arg_&& arg, Args_... args); std::string* mutable_dbname(); PROTOBUF_NODISCARD std::string* release_dbname(); void set_allocated_dbname(std::string* value); private: const std::string& _internal_dbname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_setstmt() ; const ::pg_query::VariableSetStmt& setstmt() const; PROTOBUF_NODISCARD ::pg_query::VariableSetStmt* release_setstmt(); ::pg_query::VariableSetStmt* mutable_setstmt(); void set_allocated_setstmt(::pg_query::VariableSetStmt* value); void unsafe_arena_set_allocated_setstmt(::pg_query::VariableSetStmt* value); ::pg_query::VariableSetStmt* unsafe_arena_release_setstmt(); private: const ::pg_query::VariableSetStmt& _internal_setstmt() const; ::pg_query::VariableSetStmt* _internal_mutable_setstmt(); public: // @@protoc_insertion_point(class_scope:pg_query.AlterDatabaseSetStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 44, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr dbname_; ::pg_query::VariableSetStmt* setstmt_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterDatabaseStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDatabaseStmt) */ { public: inline AlterDatabaseStmt() : AlterDatabaseStmt(nullptr) {} ~AlterDatabaseStmt() override; template explicit PROTOBUF_CONSTEXPR AlterDatabaseStmt(::google::protobuf::internal::ConstantInitialized); inline AlterDatabaseStmt(const AlterDatabaseStmt& from) : AlterDatabaseStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterDatabaseStmt& default_instance() { return *internal_default_instance(); } static inline const AlterDatabaseStmt* internal_default_instance() { return reinterpret_cast( &_AlterDatabaseStmt_default_instance_); } static constexpr int kIndexInFileMessages = 238; friend void swap(AlterDatabaseStmt& a, AlterDatabaseStmt& b) { a.Swap(&b); } inline void Swap(AlterDatabaseStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterDatabaseStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterDatabaseStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterDatabaseStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterDatabaseStmt& from) { AlterDatabaseStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterDatabaseStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterDatabaseStmt"; } protected: explicit AlterDatabaseStmt(::google::protobuf::Arena* arena); AlterDatabaseStmt(::google::protobuf::Arena* arena, const AlterDatabaseStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string dbname = 1 [json_name = "dbname"]; void clear_dbname() ; const std::string& dbname() const; template void set_dbname(Arg_&& arg, Args_... args); std::string* mutable_dbname(); PROTOBUF_NODISCARD std::string* release_dbname(); void set_allocated_dbname(std::string* value); private: const std::string& _internal_dbname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 41, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr dbname_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterDefaultPrivilegesStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDefaultPrivilegesStmt) */ { public: inline AlterDefaultPrivilegesStmt() : AlterDefaultPrivilegesStmt(nullptr) {} ~AlterDefaultPrivilegesStmt() override; template explicit PROTOBUF_CONSTEXPR AlterDefaultPrivilegesStmt(::google::protobuf::internal::ConstantInitialized); inline AlterDefaultPrivilegesStmt(const AlterDefaultPrivilegesStmt& from) : AlterDefaultPrivilegesStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterDefaultPrivilegesStmt& default_instance() { return *internal_default_instance(); } static inline const AlterDefaultPrivilegesStmt* internal_default_instance() { return reinterpret_cast( &_AlterDefaultPrivilegesStmt_default_instance_); } static constexpr int kIndexInFileMessages = 161; friend void swap(AlterDefaultPrivilegesStmt& a, AlterDefaultPrivilegesStmt& b) { a.Swap(&b); } inline void Swap(AlterDefaultPrivilegesStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterDefaultPrivilegesStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterDefaultPrivilegesStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterDefaultPrivilegesStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterDefaultPrivilegesStmt& from) { AlterDefaultPrivilegesStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterDefaultPrivilegesStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterDefaultPrivilegesStmt"; } protected: explicit AlterDefaultPrivilegesStmt(::google::protobuf::Arena* arena); AlterDefaultPrivilegesStmt(::google::protobuf::Arena* arena, const AlterDefaultPrivilegesStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.GrantStmt action = 2 [json_name = "action"]; bool has_action() const; void clear_action() ; const ::pg_query::GrantStmt& action() const; PROTOBUF_NODISCARD ::pg_query::GrantStmt* release_action(); ::pg_query::GrantStmt* mutable_action(); void set_allocated_action(::pg_query::GrantStmt* value); void unsafe_arena_set_allocated_action(::pg_query::GrantStmt* value); ::pg_query::GrantStmt* unsafe_arena_release_action(); private: const ::pg_query::GrantStmt& _internal_action() const; ::pg_query::GrantStmt* _internal_mutable_action(); public: // @@protoc_insertion_point(class_scope:pg_query.AlterDefaultPrivilegesStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::GrantStmt* action_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterDomainStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDomainStmt) */ { public: inline AlterDomainStmt() : AlterDomainStmt(nullptr) {} ~AlterDomainStmt() override; template explicit PROTOBUF_CONSTEXPR AlterDomainStmt(::google::protobuf::internal::ConstantInitialized); inline AlterDomainStmt(const AlterDomainStmt& from) : AlterDomainStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterDomainStmt& default_instance() { return *internal_default_instance(); } static inline const AlterDomainStmt* internal_default_instance() { return reinterpret_cast( &_AlterDomainStmt_default_instance_); } static constexpr int kIndexInFileMessages = 156; friend void swap(AlterDomainStmt& a, AlterDomainStmt& b) { a.Swap(&b); } inline void Swap(AlterDomainStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterDomainStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterDomainStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterDomainStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterDomainStmt& from) { AlterDomainStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterDomainStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterDomainStmt"; } protected: explicit AlterDomainStmt(::google::protobuf::Arena* arena); AlterDomainStmt(::google::protobuf::Arena* arena, const AlterDomainStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_type_name() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& type_name() const; // string subtype = 1 [json_name = "subtype"]; void clear_subtype() ; const std::string& subtype() const; template void set_subtype(Arg_&& arg, Args_... args); std::string* mutable_subtype(); PROTOBUF_NODISCARD std::string* release_subtype(); void set_allocated_subtype(std::string* value); private: const std::string& _internal_subtype() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_def() ; const ::pg_query::Node& def() const; PROTOBUF_NODISCARD ::pg_query::Node* release_def(); ::pg_query::Node* mutable_def(); void set_allocated_def(::pg_query::Node* value); void unsafe_arena_set_allocated_def(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_def(); private: const ::pg_query::Node& _internal_def() const; ::pg_query::Node* _internal_mutable_def(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 2, 44, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > type_name_; ::google::protobuf::internal::ArenaStringPtr subtype_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::Node* def_; int behavior_; bool missing_ok_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterEnumStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterEnumStmt) */ { public: inline AlterEnumStmt() : AlterEnumStmt(nullptr) {} ~AlterEnumStmt() override; template explicit PROTOBUF_CONSTEXPR AlterEnumStmt(::google::protobuf::internal::ConstantInitialized); inline AlterEnumStmt(const AlterEnumStmt& from) : AlterEnumStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterEnumStmt& default_instance() { return *internal_default_instance(); } static inline const AlterEnumStmt* internal_default_instance() { return reinterpret_cast( &_AlterEnumStmt_default_instance_); } static constexpr int kIndexInFileMessages = 234; friend void swap(AlterEnumStmt& a, AlterEnumStmt& b) { a.Swap(&b); } inline void Swap(AlterEnumStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterEnumStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterEnumStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterEnumStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterEnumStmt& from) { AlterEnumStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterEnumStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterEnumStmt"; } protected: explicit AlterEnumStmt(::google::protobuf::Arena* arena); AlterEnumStmt(::google::protobuf::Arena* arena, const AlterEnumStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_type_name() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& type_name() const; // string old_val = 2 [json_name = "oldVal"]; void clear_old_val() ; const std::string& old_val() const; template void set_old_val(Arg_&& arg, Args_... args); std::string* mutable_old_val(); PROTOBUF_NODISCARD std::string* release_old_val(); void set_allocated_old_val(std::string* value); private: const std::string& _internal_old_val() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_new_val(Arg_&& arg, Args_... args); std::string* mutable_new_val(); PROTOBUF_NODISCARD std::string* release_new_val(); void set_allocated_new_val(std::string* value); private: const std::string& _internal_new_val() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_new_val_neighbor(Arg_&& arg, Args_... args); std::string* mutable_new_val_neighbor(); PROTOBUF_NODISCARD std::string* release_new_val_neighbor(); void set_allocated_new_val_neighbor(std::string* value); private: const std::string& _internal_new_val_neighbor() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 1, 61, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > type_name_; ::google::protobuf::internal::ArenaStringPtr old_val_; ::google::protobuf::internal::ArenaStringPtr new_val_; ::google::protobuf::internal::ArenaStringPtr new_val_neighbor_; bool new_val_is_after_; bool skip_if_new_val_exists_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterExtensionContentsStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterExtensionContentsStmt) */ { public: inline AlterExtensionContentsStmt() : AlterExtensionContentsStmt(nullptr) {} ~AlterExtensionContentsStmt() override; template explicit PROTOBUF_CONSTEXPR AlterExtensionContentsStmt(::google::protobuf::internal::ConstantInitialized); inline AlterExtensionContentsStmt(const AlterExtensionContentsStmt& from) : AlterExtensionContentsStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterExtensionContentsStmt& default_instance() { return *internal_default_instance(); } static inline const AlterExtensionContentsStmt* internal_default_instance() { return reinterpret_cast( &_AlterExtensionContentsStmt_default_instance_); } static constexpr int kIndexInFileMessages = 173; friend void swap(AlterExtensionContentsStmt& a, AlterExtensionContentsStmt& b) { a.Swap(&b); } inline void Swap(AlterExtensionContentsStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterExtensionContentsStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterExtensionContentsStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterExtensionContentsStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterExtensionContentsStmt& from) { AlterExtensionContentsStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterExtensionContentsStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterExtensionContentsStmt"; } protected: explicit AlterExtensionContentsStmt(::google::protobuf::Arena* arena); AlterExtensionContentsStmt(::google::protobuf::Arena* arena, const AlterExtensionContentsStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_extname(Arg_&& arg, Args_... args); std::string* mutable_extname(); PROTOBUF_NODISCARD std::string* release_extname(); void set_allocated_extname(std::string* value); private: const std::string& _internal_extname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_object() ; const ::pg_query::Node& object() const; PROTOBUF_NODISCARD ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* value); void unsafe_arena_set_allocated_object(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_object(); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: // int32 action = 2 [json_name = "action"]; void clear_action() ; ::int32_t action() const; void set_action(::int32_t value); private: ::int32_t _internal_action() const; void _internal_set_action(::int32_t 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 1, 51, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr extname_; ::pg_query::Node* object_; ::int32_t action_; int objtype_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterExtensionStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterExtensionStmt) */ { public: inline AlterExtensionStmt() : AlterExtensionStmt(nullptr) {} ~AlterExtensionStmt() override; template explicit PROTOBUF_CONSTEXPR AlterExtensionStmt(::google::protobuf::internal::ConstantInitialized); inline AlterExtensionStmt(const AlterExtensionStmt& from) : AlterExtensionStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterExtensionStmt& default_instance() { return *internal_default_instance(); } static inline const AlterExtensionStmt* internal_default_instance() { return reinterpret_cast( &_AlterExtensionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 172; friend void swap(AlterExtensionStmt& a, AlterExtensionStmt& b) { a.Swap(&b); } inline void Swap(AlterExtensionStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterExtensionStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterExtensionStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterExtensionStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterExtensionStmt& from) { AlterExtensionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterExtensionStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterExtensionStmt"; } protected: explicit AlterExtensionStmt(::google::protobuf::Arena* arena); AlterExtensionStmt(::google::protobuf::Arena* arena, const AlterExtensionStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string extname = 1 [json_name = "extname"]; void clear_extname() ; const std::string& extname() const; template void set_extname(Arg_&& arg, Args_... args); std::string* mutable_extname(); PROTOBUF_NODISCARD std::string* release_extname(); void set_allocated_extname(std::string* value); private: const std::string& _internal_extname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 43, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr extname_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterFdwStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterFdwStmt) */ { public: inline AlterFdwStmt() : AlterFdwStmt(nullptr) {} ~AlterFdwStmt() override; template explicit PROTOBUF_CONSTEXPR AlterFdwStmt(::google::protobuf::internal::ConstantInitialized); inline AlterFdwStmt(const AlterFdwStmt& from) : AlterFdwStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterFdwStmt& default_instance() { return *internal_default_instance(); } static inline const AlterFdwStmt* internal_default_instance() { return reinterpret_cast( &_AlterFdwStmt_default_instance_); } static constexpr int kIndexInFileMessages = 175; friend void swap(AlterFdwStmt& a, AlterFdwStmt& b) { a.Swap(&b); } inline void Swap(AlterFdwStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterFdwStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterFdwStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterFdwStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterFdwStmt& from) { AlterFdwStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterFdwStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterFdwStmt"; } protected: explicit AlterFdwStmt(::google::protobuf::Arena* arena); AlterFdwStmt(::google::protobuf::Arena* arena, const AlterFdwStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_func_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_func_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_func_options(); public: const ::pg_query::Node& func_options(int index) const; ::pg_query::Node* add_func_options(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string fdwname = 1 [json_name = "fdwname"]; void clear_fdwname() ; const std::string& fdwname() const; template void set_fdwname(Arg_&& arg, Args_... args); std::string* mutable_fdwname(); PROTOBUF_NODISCARD std::string* release_fdwname(); void set_allocated_fdwname(std::string* value); private: const std::string& _internal_fdwname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 37, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > func_options_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr fdwname_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterForeignServerStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterForeignServerStmt) */ { public: inline AlterForeignServerStmt() : AlterForeignServerStmt(nullptr) {} ~AlterForeignServerStmt() override; template explicit PROTOBUF_CONSTEXPR AlterForeignServerStmt(::google::protobuf::internal::ConstantInitialized); inline AlterForeignServerStmt(const AlterForeignServerStmt& from) : AlterForeignServerStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterForeignServerStmt& default_instance() { return *internal_default_instance(); } static inline const AlterForeignServerStmt* internal_default_instance() { return reinterpret_cast( &_AlterForeignServerStmt_default_instance_); } static constexpr int kIndexInFileMessages = 177; friend void swap(AlterForeignServerStmt& a, AlterForeignServerStmt& b) { a.Swap(&b); } inline void Swap(AlterForeignServerStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterForeignServerStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterForeignServerStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterForeignServerStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterForeignServerStmt& from) { AlterForeignServerStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterForeignServerStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterForeignServerStmt"; } protected: explicit AlterForeignServerStmt(::google::protobuf::Arena* arena); AlterForeignServerStmt(::google::protobuf::Arena* arena, const AlterForeignServerStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 1 [json_name = "servername"]; void clear_servername() ; const std::string& servername() const; template void set_servername(Arg_&& arg, Args_... args); std::string* mutable_servername(); PROTOBUF_NODISCARD std::string* release_servername(); void set_allocated_servername(std::string* value); private: const std::string& _internal_servername() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_version(Arg_&& arg, Args_... args); std::string* mutable_version(); PROTOBUF_NODISCARD std::string* release_version(); void set_allocated_version(std::string* value); private: const std::string& _internal_version() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 1, 57, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr servername_; ::google::protobuf::internal::ArenaStringPtr version_; bool has_version_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterFunctionStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterFunctionStmt) */ { public: inline AlterFunctionStmt() : AlterFunctionStmt(nullptr) {} ~AlterFunctionStmt() override; template explicit PROTOBUF_CONSTEXPR AlterFunctionStmt(::google::protobuf::internal::ConstantInitialized); inline AlterFunctionStmt(const AlterFunctionStmt& from) : AlterFunctionStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterFunctionStmt& default_instance() { return *internal_default_instance(); } static inline const AlterFunctionStmt* internal_default_instance() { return reinterpret_cast( &_AlterFunctionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 215; friend void swap(AlterFunctionStmt& a, AlterFunctionStmt& b) { a.Swap(&b); } inline void Swap(AlterFunctionStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterFunctionStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterFunctionStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterFunctionStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterFunctionStmt& from) { AlterFunctionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterFunctionStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterFunctionStmt"; } protected: explicit AlterFunctionStmt(::google::protobuf::Arena* arena); AlterFunctionStmt(::google::protobuf::Arena* arena, const AlterFunctionStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_actions(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_actions() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_actions(); public: const ::pg_query::Node& actions(int index) const; ::pg_query::Node* add_actions(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& actions() const; // .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; bool has_func() const; void clear_func() ; const ::pg_query::ObjectWithArgs& func() const; PROTOBUF_NODISCARD ::pg_query::ObjectWithArgs* release_func(); ::pg_query::ObjectWithArgs* mutable_func(); void set_allocated_func(::pg_query::ObjectWithArgs* value); void unsafe_arena_set_allocated_func(::pg_query::ObjectWithArgs* value); ::pg_query::ObjectWithArgs* unsafe_arena_release_func(); private: const ::pg_query::ObjectWithArgs& _internal_func() const; ::pg_query::ObjectWithArgs* _internal_mutable_func(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > actions_; ::pg_query::ObjectWithArgs* func_; int objtype_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterObjectDependsStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterObjectDependsStmt) */ { public: inline AlterObjectDependsStmt() : AlterObjectDependsStmt(nullptr) {} ~AlterObjectDependsStmt() override; template explicit PROTOBUF_CONSTEXPR AlterObjectDependsStmt(::google::protobuf::internal::ConstantInitialized); inline AlterObjectDependsStmt(const AlterObjectDependsStmt& from) : AlterObjectDependsStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterObjectDependsStmt& default_instance() { return *internal_default_instance(); } static inline const AlterObjectDependsStmt* internal_default_instance() { return reinterpret_cast( &_AlterObjectDependsStmt_default_instance_); } static constexpr int kIndexInFileMessages = 221; friend void swap(AlterObjectDependsStmt& a, AlterObjectDependsStmt& b) { a.Swap(&b); } inline void Swap(AlterObjectDependsStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterObjectDependsStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterObjectDependsStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterObjectDependsStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterObjectDependsStmt& from) { AlterObjectDependsStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterObjectDependsStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterObjectDependsStmt"; } protected: explicit AlterObjectDependsStmt(::google::protobuf::Arena* arena); AlterObjectDependsStmt(::google::protobuf::Arena* arena, const AlterObjectDependsStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .pg_query.Node object = 3 [json_name = "object"]; bool has_object() const; void clear_object() ; const ::pg_query::Node& object() const; PROTOBUF_NODISCARD ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* value); void unsafe_arena_set_allocated_object(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_object(); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: // .pg_query.String extname = 4 [json_name = "extname"]; bool has_extname() const; void clear_extname() ; const ::pg_query::String& extname() const; PROTOBUF_NODISCARD ::pg_query::String* release_extname(); ::pg_query::String* mutable_extname(); void set_allocated_extname(::pg_query::String* value); void unsafe_arena_set_allocated_extname(::pg_query::String* value); ::pg_query::String* unsafe_arena_release_extname(); private: const ::pg_query::String& _internal_extname() const; ::pg_query::String* _internal_mutable_extname(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::RangeVar* relation_; ::pg_query::Node* object_; ::pg_query::String* extname_; int object_type_; bool remove_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterObjectSchemaStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterObjectSchemaStmt) */ { public: inline AlterObjectSchemaStmt() : AlterObjectSchemaStmt(nullptr) {} ~AlterObjectSchemaStmt() override; template explicit PROTOBUF_CONSTEXPR AlterObjectSchemaStmt(::google::protobuf::internal::ConstantInitialized); inline AlterObjectSchemaStmt(const AlterObjectSchemaStmt& from) : AlterObjectSchemaStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterObjectSchemaStmt& default_instance() { return *internal_default_instance(); } static inline const AlterObjectSchemaStmt* internal_default_instance() { return reinterpret_cast( &_AlterObjectSchemaStmt_default_instance_); } static constexpr int kIndexInFileMessages = 222; friend void swap(AlterObjectSchemaStmt& a, AlterObjectSchemaStmt& b) { a.Swap(&b); } inline void Swap(AlterObjectSchemaStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterObjectSchemaStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterObjectSchemaStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterObjectSchemaStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterObjectSchemaStmt& from) { AlterObjectSchemaStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterObjectSchemaStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterObjectSchemaStmt"; } protected: explicit AlterObjectSchemaStmt(::google::protobuf::Arena* arena); AlterObjectSchemaStmt(::google::protobuf::Arena* arena, const AlterObjectSchemaStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_newschema(Arg_&& arg, Args_... args); std::string* mutable_newschema(); PROTOBUF_NODISCARD std::string* release_newschema(); void set_allocated_newschema(std::string* value); private: const std::string& _internal_newschema() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .pg_query.Node object = 3 [json_name = "object"]; bool has_object() const; void clear_object() ; const ::pg_query::Node& object() const; PROTOBUF_NODISCARD ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* value); void unsafe_arena_set_allocated_object(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_object(); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 48, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr newschema_; ::pg_query::RangeVar* relation_; ::pg_query::Node* object_; int object_type_; bool missing_ok_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterOpFamilyStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterOpFamilyStmt) */ { public: inline AlterOpFamilyStmt() : AlterOpFamilyStmt(nullptr) {} ~AlterOpFamilyStmt() override; template explicit PROTOBUF_CONSTEXPR AlterOpFamilyStmt(::google::protobuf::internal::ConstantInitialized); inline AlterOpFamilyStmt(const AlterOpFamilyStmt& from) : AlterOpFamilyStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterOpFamilyStmt& default_instance() { return *internal_default_instance(); } static inline const AlterOpFamilyStmt* internal_default_instance() { return reinterpret_cast( &_AlterOpFamilyStmt_default_instance_); } static constexpr int kIndexInFileMessages = 201; friend void swap(AlterOpFamilyStmt& a, AlterOpFamilyStmt& b) { a.Swap(&b); } inline void Swap(AlterOpFamilyStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterOpFamilyStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterOpFamilyStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterOpFamilyStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterOpFamilyStmt& from) { AlterOpFamilyStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterOpFamilyStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterOpFamilyStmt"; } protected: explicit AlterOpFamilyStmt(::google::protobuf::Arena* arena); AlterOpFamilyStmt(::google::protobuf::Arena* arena, const AlterOpFamilyStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_opfamilyname(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_opfamilyname() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_opfamilyname(); public: const ::pg_query::Node& opfamilyname(int index) const; ::pg_query::Node* add_opfamilyname(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_items() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& items() const; // string amname = 2 [json_name = "amname"]; void clear_amname() ; const std::string& amname() const; template void set_amname(Arg_&& arg, Args_... args); std::string* mutable_amname(); PROTOBUF_NODISCARD std::string* release_amname(); void set_allocated_amname(std::string* value); private: const std::string& _internal_amname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 41, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > opfamilyname_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > items_; ::google::protobuf::internal::ArenaStringPtr amname_; bool is_drop_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterOperatorStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterOperatorStmt) */ { public: inline AlterOperatorStmt() : AlterOperatorStmt(nullptr) {} ~AlterOperatorStmt() override; template explicit PROTOBUF_CONSTEXPR AlterOperatorStmt(::google::protobuf::internal::ConstantInitialized); inline AlterOperatorStmt(const AlterOperatorStmt& from) : AlterOperatorStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterOperatorStmt& default_instance() { return *internal_default_instance(); } static inline const AlterOperatorStmt* internal_default_instance() { return reinterpret_cast( &_AlterOperatorStmt_default_instance_); } static constexpr int kIndexInFileMessages = 224; friend void swap(AlterOperatorStmt& a, AlterOperatorStmt& b) { a.Swap(&b); } inline void Swap(AlterOperatorStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterOperatorStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterOperatorStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterOperatorStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterOperatorStmt& from) { AlterOperatorStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterOperatorStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterOperatorStmt"; } protected: explicit AlterOperatorStmt(::google::protobuf::Arena* arena); AlterOperatorStmt(::google::protobuf::Arena* arena, const AlterOperatorStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; bool has_opername() const; void clear_opername() ; const ::pg_query::ObjectWithArgs& opername() const; PROTOBUF_NODISCARD ::pg_query::ObjectWithArgs* release_opername(); ::pg_query::ObjectWithArgs* mutable_opername(); void set_allocated_opername(::pg_query::ObjectWithArgs* value); void unsafe_arena_set_allocated_opername(::pg_query::ObjectWithArgs* value); ::pg_query::ObjectWithArgs* unsafe_arena_release_opername(); private: const ::pg_query::ObjectWithArgs& _internal_opername() const; ::pg_query::ObjectWithArgs* _internal_mutable_opername(); public: // @@protoc_insertion_point(class_scope:pg_query.AlterOperatorStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::ObjectWithArgs* opername_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterOwnerStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterOwnerStmt) */ { public: inline AlterOwnerStmt() : AlterOwnerStmt(nullptr) {} ~AlterOwnerStmt() override; template explicit PROTOBUF_CONSTEXPR AlterOwnerStmt(::google::protobuf::internal::ConstantInitialized); inline AlterOwnerStmt(const AlterOwnerStmt& from) : AlterOwnerStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterOwnerStmt& default_instance() { return *internal_default_instance(); } static inline const AlterOwnerStmt* internal_default_instance() { return reinterpret_cast( &_AlterOwnerStmt_default_instance_); } static constexpr int kIndexInFileMessages = 223; friend void swap(AlterOwnerStmt& a, AlterOwnerStmt& b) { a.Swap(&b); } inline void Swap(AlterOwnerStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterOwnerStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterOwnerStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterOwnerStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterOwnerStmt& from) { AlterOwnerStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterOwnerStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterOwnerStmt"; } protected: explicit AlterOwnerStmt(::google::protobuf::Arena* arena); AlterOwnerStmt(::google::protobuf::Arena* arena, const AlterOwnerStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .pg_query.Node object = 3 [json_name = "object"]; bool has_object() const; void clear_object() ; const ::pg_query::Node& object() const; PROTOBUF_NODISCARD ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* value); void unsafe_arena_set_allocated_object(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_object(); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; bool has_newowner() const; void clear_newowner() ; const ::pg_query::RoleSpec& newowner() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_newowner(); ::pg_query::RoleSpec* mutable_newowner(); void set_allocated_newowner(::pg_query::RoleSpec* value); void unsafe_arena_set_allocated_newowner(::pg_query::RoleSpec* value); ::pg_query::RoleSpec* unsafe_arena_release_newowner(); private: const ::pg_query::RoleSpec& _internal_newowner() const; ::pg_query::RoleSpec* _internal_mutable_newowner(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::RangeVar* relation_; ::pg_query::Node* object_; ::pg_query::RoleSpec* newowner_; int object_type_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterPolicyStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterPolicyStmt) */ { public: inline AlterPolicyStmt() : AlterPolicyStmt(nullptr) {} ~AlterPolicyStmt() override; template explicit PROTOBUF_CONSTEXPR AlterPolicyStmt(::google::protobuf::internal::ConstantInitialized); inline AlterPolicyStmt(const AlterPolicyStmt& from) : AlterPolicyStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterPolicyStmt& default_instance() { return *internal_default_instance(); } static inline const AlterPolicyStmt* internal_default_instance() { return reinterpret_cast( &_AlterPolicyStmt_default_instance_); } static constexpr int kIndexInFileMessages = 184; friend void swap(AlterPolicyStmt& a, AlterPolicyStmt& b) { a.Swap(&b); } inline void Swap(AlterPolicyStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterPolicyStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterPolicyStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterPolicyStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterPolicyStmt& from) { AlterPolicyStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterPolicyStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterPolicyStmt"; } protected: explicit AlterPolicyStmt(::google::protobuf::Arena* arena); AlterPolicyStmt(::google::protobuf::Arena* arena, const AlterPolicyStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_roles() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& roles() const; // string policy_name = 1 [json_name = "policy_name"]; void clear_policy_name() ; const std::string& policy_name() const; template void set_policy_name(Arg_&& arg, Args_... args); std::string* mutable_policy_name(); PROTOBUF_NODISCARD std::string* release_policy_name(); void set_allocated_policy_name(std::string* value); private: const std::string& _internal_policy_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_table() ; const ::pg_query::RangeVar& table() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_table(); ::pg_query::RangeVar* mutable_table(); void set_allocated_table(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_table(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_table(); private: const ::pg_query::RangeVar& _internal_table() const; ::pg_query::RangeVar* _internal_mutable_table(); public: // .pg_query.Node qual = 4 [json_name = "qual"]; bool has_qual() const; void clear_qual() ; const ::pg_query::Node& qual() const; PROTOBUF_NODISCARD ::pg_query::Node* release_qual(); ::pg_query::Node* mutable_qual(); void set_allocated_qual(::pg_query::Node* value); void unsafe_arena_set_allocated_qual(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_qual(); private: const ::pg_query::Node& _internal_qual() const; ::pg_query::Node* _internal_mutable_qual(); public: // .pg_query.Node with_check = 5 [json_name = "with_check"]; bool has_with_check() const; void clear_with_check() ; const ::pg_query::Node& with_check() const; PROTOBUF_NODISCARD ::pg_query::Node* release_with_check(); ::pg_query::Node* mutable_with_check(); void set_allocated_with_check(::pg_query::Node* value); void unsafe_arena_set_allocated_with_check(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_with_check(); private: const ::pg_query::Node& _internal_with_check() const; ::pg_query::Node* _internal_mutable_with_check(); public: // @@protoc_insertion_point(class_scope:pg_query.AlterPolicyStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 4, 44, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > roles_; ::google::protobuf::internal::ArenaStringPtr policy_name_; ::pg_query::RangeVar* table_; ::pg_query::Node* qual_; ::pg_query::Node* with_check_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterPublicationStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterPublicationStmt) */ { public: inline AlterPublicationStmt() : AlterPublicationStmt(nullptr) {} ~AlterPublicationStmt() override; template explicit PROTOBUF_CONSTEXPR AlterPublicationStmt(::google::protobuf::internal::ConstantInitialized); inline AlterPublicationStmt(const AlterPublicationStmt& from) : AlterPublicationStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterPublicationStmt& default_instance() { return *internal_default_instance(); } static inline const AlterPublicationStmt* internal_default_instance() { return reinterpret_cast( &_AlterPublicationStmt_default_instance_); } static constexpr int kIndexInFileMessages = 267; friend void swap(AlterPublicationStmt& a, AlterPublicationStmt& b) { a.Swap(&b); } inline void Swap(AlterPublicationStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterPublicationStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterPublicationStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterPublicationStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterPublicationStmt& from) { AlterPublicationStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterPublicationStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterPublicationStmt"; } protected: explicit AlterPublicationStmt(::google::protobuf::Arena* arena); AlterPublicationStmt(::google::protobuf::Arena* arena, const AlterPublicationStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kPubobjectsFieldNumber = 3, kPubnameFieldNumber = 1, kForAllTablesFieldNumber = 4, kActionFieldNumber = 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // repeated .pg_query.Node pubobjects = 3 [json_name = "pubobjects"]; int pubobjects_size() const; private: int _internal_pubobjects_size() const; public: void clear_pubobjects() ; ::pg_query::Node* mutable_pubobjects(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_pubobjects(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_pubobjects() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_pubobjects(); public: const ::pg_query::Node& pubobjects(int index) const; ::pg_query::Node* add_pubobjects(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& pubobjects() const; // string pubname = 1 [json_name = "pubname"]; void clear_pubname() ; const std::string& pubname() const; template void set_pubname(Arg_&& arg, Args_... args); std::string* mutable_pubname(); PROTOBUF_NODISCARD std::string* release_pubname(); void set_allocated_pubname(std::string* value); private: const std::string& _internal_pubname() const; inline PROTOBUF_ALWAYS_INLINE 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.AlterPublicationAction action = 5 [json_name = "action"]; void clear_action() ; ::pg_query::AlterPublicationAction action() const; void set_action(::pg_query::AlterPublicationAction value); private: ::pg_query::AlterPublicationAction _internal_action() const; void _internal_set_action(::pg_query::AlterPublicationAction value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterPublicationStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 45, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > pubobjects_; ::google::protobuf::internal::ArenaStringPtr pubname_; bool for_all_tables_; int action_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterRoleSetStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterRoleSetStmt) */ { public: inline AlterRoleSetStmt() : AlterRoleSetStmt(nullptr) {} ~AlterRoleSetStmt() override; template explicit PROTOBUF_CONSTEXPR AlterRoleSetStmt(::google::protobuf::internal::ConstantInitialized); inline AlterRoleSetStmt(const AlterRoleSetStmt& from) : AlterRoleSetStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterRoleSetStmt& default_instance() { return *internal_default_instance(); } static inline const AlterRoleSetStmt* internal_default_instance() { return reinterpret_cast( &_AlterRoleSetStmt_default_instance_); } static constexpr int kIndexInFileMessages = 192; friend void swap(AlterRoleSetStmt& a, AlterRoleSetStmt& b) { a.Swap(&b); } inline void Swap(AlterRoleSetStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterRoleSetStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterRoleSetStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterRoleSetStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterRoleSetStmt& from) { AlterRoleSetStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterRoleSetStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterRoleSetStmt"; } protected: explicit AlterRoleSetStmt(::google::protobuf::Arena* arena); AlterRoleSetStmt(::google::protobuf::Arena* arena, const AlterRoleSetStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_database(Arg_&& arg, Args_... args); std::string* mutable_database(); PROTOBUF_NODISCARD std::string* release_database(); void set_allocated_database(std::string* value); private: const std::string& _internal_database() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_role() ; const ::pg_query::RoleSpec& role() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_role(); ::pg_query::RoleSpec* mutable_role(); void set_allocated_role(::pg_query::RoleSpec* value); void unsafe_arena_set_allocated_role(::pg_query::RoleSpec* value); ::pg_query::RoleSpec* unsafe_arena_release_role(); private: const ::pg_query::RoleSpec& _internal_role() const; ::pg_query::RoleSpec* _internal_mutable_role(); public: // .pg_query.VariableSetStmt setstmt = 3 [json_name = "setstmt"]; bool has_setstmt() const; void clear_setstmt() ; const ::pg_query::VariableSetStmt& setstmt() const; PROTOBUF_NODISCARD ::pg_query::VariableSetStmt* release_setstmt(); ::pg_query::VariableSetStmt* mutable_setstmt(); void set_allocated_setstmt(::pg_query::VariableSetStmt* value); void unsafe_arena_set_allocated_setstmt(::pg_query::VariableSetStmt* value); ::pg_query::VariableSetStmt* unsafe_arena_release_setstmt(); private: const ::pg_query::VariableSetStmt& _internal_setstmt() const; ::pg_query::VariableSetStmt* _internal_mutable_setstmt(); public: // @@protoc_insertion_point(class_scope:pg_query.AlterRoleSetStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 42, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr database_; ::pg_query::RoleSpec* role_; ::pg_query::VariableSetStmt* setstmt_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterRoleStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterRoleStmt) */ { public: inline AlterRoleStmt() : AlterRoleStmt(nullptr) {} ~AlterRoleStmt() override; template explicit PROTOBUF_CONSTEXPR AlterRoleStmt(::google::protobuf::internal::ConstantInitialized); inline AlterRoleStmt(const AlterRoleStmt& from) : AlterRoleStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterRoleStmt& default_instance() { return *internal_default_instance(); } static inline const AlterRoleStmt* internal_default_instance() { return reinterpret_cast( &_AlterRoleStmt_default_instance_); } static constexpr int kIndexInFileMessages = 191; friend void swap(AlterRoleStmt& a, AlterRoleStmt& b) { a.Swap(&b); } inline void Swap(AlterRoleStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterRoleStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterRoleStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterRoleStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterRoleStmt& from) { AlterRoleStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterRoleStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterRoleStmt"; } protected: explicit AlterRoleStmt(::google::protobuf::Arena* arena); AlterRoleStmt(::google::protobuf::Arena* arena, const AlterRoleStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.RoleSpec role = 1 [json_name = "role"]; bool has_role() const; void clear_role() ; const ::pg_query::RoleSpec& role() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_role(); ::pg_query::RoleSpec* mutable_role(); void set_allocated_role(::pg_query::RoleSpec* value); void unsafe_arena_set_allocated_role(::pg_query::RoleSpec* value); ::pg_query::RoleSpec* unsafe_arena_release_role(); private: const ::pg_query::RoleSpec& _internal_role() const; ::pg_query::RoleSpec* _internal_mutable_role(); public: // int32 action = 3 [json_name = "action"]; void clear_action() ; ::int32_t action() const; void set_action(::int32_t value); private: ::int32_t _internal_action() const; void _internal_set_action(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterRoleStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::RoleSpec* role_; ::int32_t action_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterSeqStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterSeqStmt) */ { public: inline AlterSeqStmt() : AlterSeqStmt(nullptr) {} ~AlterSeqStmt() override; template explicit PROTOBUF_CONSTEXPR AlterSeqStmt(::google::protobuf::internal::ConstantInitialized); inline AlterSeqStmt(const AlterSeqStmt& from) : AlterSeqStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterSeqStmt& default_instance() { return *internal_default_instance(); } static inline const AlterSeqStmt* internal_default_instance() { return reinterpret_cast( &_AlterSeqStmt_default_instance_); } static constexpr int kIndexInFileMessages = 195; friend void swap(AlterSeqStmt& a, AlterSeqStmt& b) { a.Swap(&b); } inline void Swap(AlterSeqStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterSeqStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterSeqStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterSeqStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterSeqStmt& from) { AlterSeqStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterSeqStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterSeqStmt"; } protected: explicit AlterSeqStmt(::google::protobuf::Arena* arena); AlterSeqStmt(::google::protobuf::Arena* arena, const AlterSeqStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; bool has_sequence() const; void clear_sequence() ; const ::pg_query::RangeVar& sequence() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_sequence(); ::pg_query::RangeVar* mutable_sequence(); void set_allocated_sequence(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_sequence(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_sequence(); private: const ::pg_query::RangeVar& _internal_sequence() const; ::pg_query::RangeVar* _internal_mutable_sequence(); public: // 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::RangeVar* sequence_; bool for_identity_; bool missing_ok_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterStatsStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterStatsStmt) */ { public: inline AlterStatsStmt() : AlterStatsStmt(nullptr) {} ~AlterStatsStmt() override; template explicit PROTOBUF_CONSTEXPR AlterStatsStmt(::google::protobuf::internal::ConstantInitialized); inline AlterStatsStmt(const AlterStatsStmt& from) : AlterStatsStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterStatsStmt& default_instance() { return *internal_default_instance(); } static inline const AlterStatsStmt* internal_default_instance() { return reinterpret_cast( &_AlterStatsStmt_default_instance_); } static constexpr int kIndexInFileMessages = 212; friend void swap(AlterStatsStmt& a, AlterStatsStmt& b) { a.Swap(&b); } inline void Swap(AlterStatsStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterStatsStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterStatsStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterStatsStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterStatsStmt& from) { AlterStatsStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterStatsStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterStatsStmt"; } protected: explicit AlterStatsStmt(::google::protobuf::Arena* arena); AlterStatsStmt(::google::protobuf::Arena* arena, const AlterStatsStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_defnames(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_defnames() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_defnames(); public: const ::pg_query::Node& defnames(int index) const; ::pg_query::Node* add_defnames(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& defnames() const; // .pg_query.Node stxstattarget = 2 [json_name = "stxstattarget"]; bool has_stxstattarget() const; void clear_stxstattarget() ; const ::pg_query::Node& stxstattarget() const; PROTOBUF_NODISCARD ::pg_query::Node* release_stxstattarget(); ::pg_query::Node* mutable_stxstattarget(); void set_allocated_stxstattarget(::pg_query::Node* value); void unsafe_arena_set_allocated_stxstattarget(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_stxstattarget(); private: const ::pg_query::Node& _internal_stxstattarget() const; ::pg_query::Node* _internal_mutable_stxstattarget(); 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > defnames_; ::pg_query::Node* stxstattarget_; bool missing_ok_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterSubscriptionStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterSubscriptionStmt) */ { public: inline AlterSubscriptionStmt() : AlterSubscriptionStmt(nullptr) {} ~AlterSubscriptionStmt() override; template explicit PROTOBUF_CONSTEXPR AlterSubscriptionStmt(::google::protobuf::internal::ConstantInitialized); inline AlterSubscriptionStmt(const AlterSubscriptionStmt& from) : AlterSubscriptionStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterSubscriptionStmt& default_instance() { return *internal_default_instance(); } static inline const AlterSubscriptionStmt* internal_default_instance() { return reinterpret_cast( &_AlterSubscriptionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 269; friend void swap(AlterSubscriptionStmt& a, AlterSubscriptionStmt& b) { a.Swap(&b); } inline void Swap(AlterSubscriptionStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterSubscriptionStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterSubscriptionStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterSubscriptionStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterSubscriptionStmt& from) { AlterSubscriptionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterSubscriptionStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterSubscriptionStmt"; } protected: explicit AlterSubscriptionStmt(::google::protobuf::Arena* arena); AlterSubscriptionStmt(::google::protobuf::Arena* arena, const AlterSubscriptionStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_publication(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_publication() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_publication(); public: const ::pg_query::Node& publication(int index) const; ::pg_query::Node* add_publication(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string subname = 2 [json_name = "subname"]; void clear_subname() ; const std::string& subname() const; template void set_subname(Arg_&& arg, Args_... args); std::string* mutable_subname(); PROTOBUF_NODISCARD std::string* release_subname(); void set_allocated_subname(std::string* value); private: const std::string& _internal_subname() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_conninfo(Arg_&& arg, Args_... args); std::string* mutable_conninfo(); PROTOBUF_NODISCARD std::string* release_conninfo(); void set_allocated_conninfo(std::string* value); private: const std::string& _internal_conninfo() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 54, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > publication_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr subname_; ::google::protobuf::internal::ArenaStringPtr conninfo_; int kind_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterSystemStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterSystemStmt) */ { public: inline AlterSystemStmt() : AlterSystemStmt(nullptr) {} ~AlterSystemStmt() override; template explicit PROTOBUF_CONSTEXPR AlterSystemStmt(::google::protobuf::internal::ConstantInitialized); inline AlterSystemStmt(const AlterSystemStmt& from) : AlterSystemStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterSystemStmt& default_instance() { return *internal_default_instance(); } static inline const AlterSystemStmt* internal_default_instance() { return reinterpret_cast( &_AlterSystemStmt_default_instance_); } static constexpr int kIndexInFileMessages = 242; friend void swap(AlterSystemStmt& a, AlterSystemStmt& b) { a.Swap(&b); } inline void Swap(AlterSystemStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterSystemStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterSystemStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterSystemStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterSystemStmt& from) { AlterSystemStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterSystemStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterSystemStmt"; } protected: explicit AlterSystemStmt(::google::protobuf::Arena* arena); AlterSystemStmt(::google::protobuf::Arena* arena, const AlterSystemStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSetstmtFieldNumber = 1, }; // .pg_query.VariableSetStmt setstmt = 1 [json_name = "setstmt"]; bool has_setstmt() const; void clear_setstmt() ; const ::pg_query::VariableSetStmt& setstmt() const; PROTOBUF_NODISCARD ::pg_query::VariableSetStmt* release_setstmt(); ::pg_query::VariableSetStmt* mutable_setstmt(); void set_allocated_setstmt(::pg_query::VariableSetStmt* value); void unsafe_arena_set_allocated_setstmt(::pg_query::VariableSetStmt* value); ::pg_query::VariableSetStmt* unsafe_arena_release_setstmt(); private: const ::pg_query::VariableSetStmt& _internal_setstmt() const; ::pg_query::VariableSetStmt* _internal_mutable_setstmt(); public: // @@protoc_insertion_point(class_scope:pg_query.AlterSystemStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::VariableSetStmt* setstmt_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterTSConfigurationStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTSConfigurationStmt) */ { public: inline AlterTSConfigurationStmt() : AlterTSConfigurationStmt(nullptr) {} ~AlterTSConfigurationStmt() override; template explicit PROTOBUF_CONSTEXPR AlterTSConfigurationStmt(::google::protobuf::internal::ConstantInitialized); inline AlterTSConfigurationStmt(const AlterTSConfigurationStmt& from) : AlterTSConfigurationStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterTSConfigurationStmt& default_instance() { return *internal_default_instance(); } static inline const AlterTSConfigurationStmt* internal_default_instance() { return reinterpret_cast( &_AlterTSConfigurationStmt_default_instance_); } static constexpr int kIndexInFileMessages = 263; friend void swap(AlterTSConfigurationStmt& a, AlterTSConfigurationStmt& b) { a.Swap(&b); } inline void Swap(AlterTSConfigurationStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTSConfigurationStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterTSConfigurationStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterTSConfigurationStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterTSConfigurationStmt& from) { AlterTSConfigurationStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterTSConfigurationStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterTSConfigurationStmt"; } protected: explicit AlterTSConfigurationStmt(::google::protobuf::Arena* arena); AlterTSConfigurationStmt(::google::protobuf::Arena* arena, const AlterTSConfigurationStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_cfgname(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_cfgname() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_cfgname(); public: const ::pg_query::Node& cfgname(int index) const; ::pg_query::Node* add_cfgname(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_tokentype(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_tokentype() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_tokentype(); public: const ::pg_query::Node& tokentype(int index) const; ::pg_query::Node* add_tokentype(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_dicts(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_dicts() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_dicts(); public: const ::pg_query::Node& dicts(int index) const; ::pg_query::Node* add_dicts(); const ::google::protobuf::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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > cfgname_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > tokentype_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > dicts_; int kind_; bool override_; bool replace_; bool missing_ok_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterTSDictionaryStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTSDictionaryStmt) */ { public: inline AlterTSDictionaryStmt() : AlterTSDictionaryStmt(nullptr) {} ~AlterTSDictionaryStmt() override; template explicit PROTOBUF_CONSTEXPR AlterTSDictionaryStmt(::google::protobuf::internal::ConstantInitialized); inline AlterTSDictionaryStmt(const AlterTSDictionaryStmt& from) : AlterTSDictionaryStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterTSDictionaryStmt& default_instance() { return *internal_default_instance(); } static inline const AlterTSDictionaryStmt* internal_default_instance() { return reinterpret_cast( &_AlterTSDictionaryStmt_default_instance_); } static constexpr int kIndexInFileMessages = 262; friend void swap(AlterTSDictionaryStmt& a, AlterTSDictionaryStmt& b) { a.Swap(&b); } inline void Swap(AlterTSDictionaryStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTSDictionaryStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterTSDictionaryStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterTSDictionaryStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterTSDictionaryStmt& from) { AlterTSDictionaryStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterTSDictionaryStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterTSDictionaryStmt"; } protected: explicit AlterTSDictionaryStmt(::google::protobuf::Arena* arena); AlterTSDictionaryStmt(::google::protobuf::Arena* arena, const AlterTSDictionaryStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_dictname(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_dictname() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_dictname(); public: const ::pg_query::Node& dictname(int index) const; ::pg_query::Node* add_dictname(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // @@protoc_insertion_point(class_scope:pg_query.AlterTSDictionaryStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > dictname_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterTableCmd final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableCmd) */ { public: inline AlterTableCmd() : AlterTableCmd(nullptr) {} ~AlterTableCmd() override; template explicit PROTOBUF_CONSTEXPR AlterTableCmd(::google::protobuf::internal::ConstantInitialized); inline AlterTableCmd(const AlterTableCmd& from) : AlterTableCmd(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterTableCmd& default_instance() { return *internal_default_instance(); } static inline const AlterTableCmd* internal_default_instance() { return reinterpret_cast( &_AlterTableCmd_default_instance_); } static constexpr int kIndexInFileMessages = 154; friend void swap(AlterTableCmd& a, AlterTableCmd& b) { a.Swap(&b); } inline void Swap(AlterTableCmd* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTableCmd* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterTableCmd* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterTableCmd& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterTableCmd& from) { AlterTableCmd::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterTableCmd* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterTableCmd"; } protected: explicit AlterTableCmd(::google::protobuf::Arena* arena); AlterTableCmd(::google::protobuf::Arena* arena, const AlterTableCmd& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 2, kNewownerFieldNumber = 4, kDefFieldNumber = 5, kSubtypeFieldNumber = 1, kNumFieldNumber = 3, kBehaviorFieldNumber = 6, kMissingOkFieldNumber = 7, kRecurseFieldNumber = 8, }; // string name = 2 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_newowner() ; const ::pg_query::RoleSpec& newowner() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_newowner(); ::pg_query::RoleSpec* mutable_newowner(); void set_allocated_newowner(::pg_query::RoleSpec* value); void unsafe_arena_set_allocated_newowner(::pg_query::RoleSpec* value); ::pg_query::RoleSpec* unsafe_arena_release_newowner(); private: const ::pg_query::RoleSpec& _internal_newowner() const; ::pg_query::RoleSpec* _internal_mutable_newowner(); public: // .pg_query.Node def = 5 [json_name = "def"]; bool has_def() const; void clear_def() ; const ::pg_query::Node& def() const; PROTOBUF_NODISCARD ::pg_query::Node* release_def(); ::pg_query::Node* mutable_def(); void set_allocated_def(::pg_query::Node* value); void unsafe_arena_set_allocated_def(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_def(); private: const ::pg_query::Node& _internal_def() const; ::pg_query::Node* _internal_mutable_def(); public: // .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() ; ::int32_t num() const; void set_num(::int32_t value); private: ::int32_t _internal_num() const; void _internal_set_num(::int32_t 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: // bool recurse = 8 [json_name = "recurse"]; void clear_recurse() ; bool recurse() const; void set_recurse(bool value); private: bool _internal_recurse() const; void _internal_set_recurse(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterTableCmd) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 2, 43, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::RoleSpec* newowner_; ::pg_query::Node* def_; int subtype_; ::int32_t num_; int behavior_; bool missing_ok_; bool recurse_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterTableMoveAllStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableMoveAllStmt) */ { public: inline AlterTableMoveAllStmt() : AlterTableMoveAllStmt(nullptr) {} ~AlterTableMoveAllStmt() override; template explicit PROTOBUF_CONSTEXPR AlterTableMoveAllStmt(::google::protobuf::internal::ConstantInitialized); inline AlterTableMoveAllStmt(const AlterTableMoveAllStmt& from) : AlterTableMoveAllStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterTableMoveAllStmt& default_instance() { return *internal_default_instance(); } static inline const AlterTableMoveAllStmt* internal_default_instance() { return reinterpret_cast( &_AlterTableMoveAllStmt_default_instance_); } static constexpr int kIndexInFileMessages = 170; friend void swap(AlterTableMoveAllStmt& a, AlterTableMoveAllStmt& b) { a.Swap(&b); } inline void Swap(AlterTableMoveAllStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTableMoveAllStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterTableMoveAllStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterTableMoveAllStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterTableMoveAllStmt& from) { AlterTableMoveAllStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterTableMoveAllStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterTableMoveAllStmt"; } protected: explicit AlterTableMoveAllStmt(::google::protobuf::Arena* arena); AlterTableMoveAllStmt(::google::protobuf::Arena* arena, const AlterTableMoveAllStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_roles() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& roles() const; // string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; void clear_orig_tablespacename() ; const std::string& orig_tablespacename() const; template void set_orig_tablespacename(Arg_&& arg, Args_... args); std::string* mutable_orig_tablespacename(); PROTOBUF_NODISCARD std::string* release_orig_tablespacename(); void set_allocated_orig_tablespacename(std::string* value); private: const std::string& _internal_orig_tablespacename() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_new_tablespacename(Arg_&& arg, Args_... args); std::string* mutable_new_tablespacename(); PROTOBUF_NODISCARD std::string* release_new_tablespacename(); void set_allocated_new_tablespacename(std::string* value); private: const std::string& _internal_new_tablespacename() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 1, 76, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > roles_; ::google::protobuf::internal::ArenaStringPtr orig_tablespacename_; ::google::protobuf::internal::ArenaStringPtr new_tablespacename_; int objtype_; bool nowait_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterTableSpaceOptionsStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableSpaceOptionsStmt) */ { public: inline AlterTableSpaceOptionsStmt() : AlterTableSpaceOptionsStmt(nullptr) {} ~AlterTableSpaceOptionsStmt() override; template explicit PROTOBUF_CONSTEXPR AlterTableSpaceOptionsStmt(::google::protobuf::internal::ConstantInitialized); inline AlterTableSpaceOptionsStmt(const AlterTableSpaceOptionsStmt& from) : AlterTableSpaceOptionsStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterTableSpaceOptionsStmt& default_instance() { return *internal_default_instance(); } static inline const AlterTableSpaceOptionsStmt* internal_default_instance() { return reinterpret_cast( &_AlterTableSpaceOptionsStmt_default_instance_); } static constexpr int kIndexInFileMessages = 169; friend void swap(AlterTableSpaceOptionsStmt& a, AlterTableSpaceOptionsStmt& b) { a.Swap(&b); } inline void Swap(AlterTableSpaceOptionsStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTableSpaceOptionsStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterTableSpaceOptionsStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterTableSpaceOptionsStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterTableSpaceOptionsStmt& from) { AlterTableSpaceOptionsStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterTableSpaceOptionsStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterTableSpaceOptionsStmt"; } protected: explicit AlterTableSpaceOptionsStmt(::google::protobuf::Arena* arena); AlterTableSpaceOptionsStmt(::google::protobuf::Arena* arena, const AlterTableSpaceOptionsStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string tablespacename = 1 [json_name = "tablespacename"]; void clear_tablespacename() ; const std::string& tablespacename() const; template void set_tablespacename(Arg_&& arg, Args_... args); std::string* mutable_tablespacename(); PROTOBUF_NODISCARD std::string* release_tablespacename(); void set_allocated_tablespacename(std::string* value); private: const std::string& _internal_tablespacename() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 58, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr tablespacename_; bool is_reset_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterTableStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableStmt) */ { public: inline AlterTableStmt() : AlterTableStmt(nullptr) {} ~AlterTableStmt() override; template explicit PROTOBUF_CONSTEXPR AlterTableStmt(::google::protobuf::internal::ConstantInitialized); inline AlterTableStmt(const AlterTableStmt& from) : AlterTableStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterTableStmt& default_instance() { return *internal_default_instance(); } static inline const AlterTableStmt* internal_default_instance() { return reinterpret_cast( &_AlterTableStmt_default_instance_); } static constexpr int kIndexInFileMessages = 152; friend void swap(AlterTableStmt& a, AlterTableStmt& b) { a.Swap(&b); } inline void Swap(AlterTableStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTableStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterTableStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterTableStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterTableStmt& from) { AlterTableStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterTableStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterTableStmt"; } protected: explicit AlterTableStmt(::google::protobuf::Arena* arena); AlterTableStmt(::google::protobuf::Arena* arena, const AlterTableStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCmdsFieldNumber = 2, kRelationFieldNumber = 1, kObjtypeFieldNumber = 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_cmds(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_cmds() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_cmds(); public: const ::pg_query::Node& cmds(int index) const; ::pg_query::Node* add_cmds(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& cmds() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); 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 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > cmds_; ::pg_query::RangeVar* relation_; int objtype_; bool missing_ok_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterTypeStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTypeStmt) */ { public: inline AlterTypeStmt() : AlterTypeStmt(nullptr) {} ~AlterTypeStmt() override; template explicit PROTOBUF_CONSTEXPR AlterTypeStmt(::google::protobuf::internal::ConstantInitialized); inline AlterTypeStmt(const AlterTypeStmt& from) : AlterTypeStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterTypeStmt& default_instance() { return *internal_default_instance(); } static inline const AlterTypeStmt* internal_default_instance() { return reinterpret_cast( &_AlterTypeStmt_default_instance_); } static constexpr int kIndexInFileMessages = 225; friend void swap(AlterTypeStmt& a, AlterTypeStmt& b) { a.Swap(&b); } inline void Swap(AlterTypeStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTypeStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterTypeStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterTypeStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterTypeStmt& from) { AlterTypeStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterTypeStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterTypeStmt"; } protected: explicit AlterTypeStmt(::google::protobuf::Arena* arena); AlterTypeStmt(::google::protobuf::Arena* arena, const AlterTypeStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_type_name() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // @@protoc_insertion_point(class_scope:pg_query.AlterTypeStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > type_name_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlterUserMappingStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterUserMappingStmt) */ { public: inline AlterUserMappingStmt() : AlterUserMappingStmt(nullptr) {} ~AlterUserMappingStmt() override; template explicit PROTOBUF_CONSTEXPR AlterUserMappingStmt(::google::protobuf::internal::ConstantInitialized); inline AlterUserMappingStmt(const AlterUserMappingStmt& from) : AlterUserMappingStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlterUserMappingStmt& default_instance() { return *internal_default_instance(); } static inline const AlterUserMappingStmt* internal_default_instance() { return reinterpret_cast( &_AlterUserMappingStmt_default_instance_); } static constexpr int kIndexInFileMessages = 180; friend void swap(AlterUserMappingStmt& a, AlterUserMappingStmt& b) { a.Swap(&b); } inline void Swap(AlterUserMappingStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterUserMappingStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlterUserMappingStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlterUserMappingStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlterUserMappingStmt& from) { AlterUserMappingStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlterUserMappingStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlterUserMappingStmt"; } protected: explicit AlterUserMappingStmt(::google::protobuf::Arena* arena); AlterUserMappingStmt(::google::protobuf::Arena* arena, const AlterUserMappingStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 2 [json_name = "servername"]; void clear_servername() ; const std::string& servername() const; template void set_servername(Arg_&& arg, Args_... args); std::string* mutable_servername(); PROTOBUF_NODISCARD std::string* release_servername(); void set_allocated_servername(std::string* value); private: const std::string& _internal_servername() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_user() ; const ::pg_query::RoleSpec& user() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_user(); ::pg_query::RoleSpec* mutable_user(); void set_allocated_user(::pg_query::RoleSpec* value); void unsafe_arena_set_allocated_user(::pg_query::RoleSpec* value); ::pg_query::RoleSpec* unsafe_arena_release_user(); private: const ::pg_query::RoleSpec& _internal_user() const; ::pg_query::RoleSpec* _internal_mutable_user(); public: // @@protoc_insertion_point(class_scope:pg_query.AlterUserMappingStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 48, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr servername_; ::pg_query::RoleSpec* user_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class AlternativeSubPlan final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.AlternativeSubPlan) */ { public: inline AlternativeSubPlan() : AlternativeSubPlan(nullptr) {} ~AlternativeSubPlan() override; template explicit PROTOBUF_CONSTEXPR AlternativeSubPlan(::google::protobuf::internal::ConstantInitialized); inline AlternativeSubPlan(const AlternativeSubPlan& from) : AlternativeSubPlan(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const AlternativeSubPlan& default_instance() { return *internal_default_instance(); } static inline const AlternativeSubPlan* internal_default_instance() { return reinterpret_cast( &_AlternativeSubPlan_default_instance_); } static constexpr int kIndexInFileMessages = 33; friend void swap(AlternativeSubPlan& a, AlternativeSubPlan& b) { a.Swap(&b); } inline void Swap(AlternativeSubPlan* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlternativeSubPlan* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- AlternativeSubPlan* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const AlternativeSubPlan& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const AlternativeSubPlan& from) { AlternativeSubPlan::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(AlternativeSubPlan* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.AlternativeSubPlan"; } protected: explicit AlternativeSubPlan(::google::protobuf::Arena* arena); AlternativeSubPlan(::google::protobuf::Arena* arena, const AlternativeSubPlan& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_subplans(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_subplans() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_subplans(); public: const ::pg_query::Node& subplans(int index) const; ::pg_query::Node* add_subplans(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& subplans() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // @@protoc_insertion_point(class_scope:pg_query.AlternativeSubPlan) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > subplans_; ::pg_query::Node* xpr_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ArrayCoerceExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ArrayCoerceExpr) */ { public: inline ArrayCoerceExpr() : ArrayCoerceExpr(nullptr) {} ~ArrayCoerceExpr() override; template explicit PROTOBUF_CONSTEXPR ArrayCoerceExpr(::google::protobuf::internal::ConstantInitialized); inline ArrayCoerceExpr(const ArrayCoerceExpr& from) : ArrayCoerceExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ArrayCoerceExpr& default_instance() { return *internal_default_instance(); } static inline const ArrayCoerceExpr* internal_default_instance() { return reinterpret_cast( &_ArrayCoerceExpr_default_instance_); } static constexpr int kIndexInFileMessages = 38; friend void swap(ArrayCoerceExpr& a, ArrayCoerceExpr& b) { a.Swap(&b); } inline void Swap(ArrayCoerceExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ArrayCoerceExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ArrayCoerceExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ArrayCoerceExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ArrayCoerceExpr& from) { ArrayCoerceExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ArrayCoerceExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ArrayCoerceExpr"; } protected: explicit ArrayCoerceExpr(::google::protobuf::Arena* arena); ArrayCoerceExpr(::google::protobuf::Arena* arena, const ArrayCoerceExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; bool has_elemexpr() const; void clear_elemexpr() ; const ::pg_query::Node& elemexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_elemexpr(); ::pg_query::Node* mutable_elemexpr(); void set_allocated_elemexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_elemexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_elemexpr(); private: const ::pg_query::Node& _internal_elemexpr() const; ::pg_query::Node* _internal_mutable_elemexpr(); public: // uint32 resulttype = 4 [json_name = "resulttype"]; void clear_resulttype() ; ::uint32_t resulttype() const; void set_resulttype(::uint32_t value); private: ::uint32_t _internal_resulttype() const; void _internal_set_resulttype(::uint32_t value); public: // int32 resulttypmod = 5 [json_name = "resulttypmod"]; void clear_resulttypmod() ; ::int32_t resulttypmod() const; void set_resulttypmod(::int32_t value); private: ::int32_t _internal_resulttypmod() const; void _internal_set_resulttypmod(::int32_t value); public: // uint32 resultcollid = 6 [json_name = "resultcollid"]; void clear_resultcollid() ; ::uint32_t resultcollid() const; void set_resultcollid(::uint32_t value); private: ::uint32_t _internal_resultcollid() const; void _internal_set_resultcollid(::uint32_t 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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.ArrayCoerceExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::pg_query::Node* elemexpr_; ::uint32_t resulttype_; ::int32_t resulttypmod_; ::uint32_t resultcollid_; int coerceformat_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ArrayExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ArrayExpr) */ { public: inline ArrayExpr() : ArrayExpr(nullptr) {} ~ArrayExpr() override; template explicit PROTOBUF_CONSTEXPR ArrayExpr(::google::protobuf::internal::ConstantInitialized); inline ArrayExpr(const ArrayExpr& from) : ArrayExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ArrayExpr& default_instance() { return *internal_default_instance(); } static inline const ArrayExpr* internal_default_instance() { return reinterpret_cast( &_ArrayExpr_default_instance_); } static constexpr int kIndexInFileMessages = 44; friend void swap(ArrayExpr& a, ArrayExpr& b) { a.Swap(&b); } inline void Swap(ArrayExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ArrayExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ArrayExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ArrayExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ArrayExpr& from) { ArrayExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ArrayExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ArrayExpr"; } protected: explicit ArrayExpr(::google::protobuf::Arena* arena); ArrayExpr(::google::protobuf::Arena* arena, const ArrayExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_elements(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_elements() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_elements(); public: const ::pg_query::Node& elements(int index) const; ::pg_query::Node* add_elements(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& elements() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 array_typeid = 2 [json_name = "array_typeid"]; void clear_array_typeid() ; ::uint32_t array_typeid() const; void set_array_typeid(::uint32_t value); private: ::uint32_t _internal_array_typeid() const; void _internal_set_array_typeid(::uint32_t value); public: // uint32 array_collid = 3 [json_name = "array_collid"]; void clear_array_collid() ; ::uint32_t array_collid() const; void set_array_collid(::uint32_t value); private: ::uint32_t _internal_array_collid() const; void _internal_set_array_collid(::uint32_t value); public: // uint32 element_typeid = 4 [json_name = "element_typeid"]; void clear_element_typeid() ; ::uint32_t element_typeid() const; void set_element_typeid(::uint32_t value); private: ::uint32_t _internal_element_typeid() const; void _internal_set_element_typeid(::uint32_t 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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.ArrayExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > elements_; ::pg_query::Node* xpr_; ::uint32_t array_typeid_; ::uint32_t array_collid_; ::uint32_t element_typeid_; bool multidims_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class BoolExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.BoolExpr) */ { public: inline BoolExpr() : BoolExpr(nullptr) {} ~BoolExpr() override; template explicit PROTOBUF_CONSTEXPR BoolExpr(::google::protobuf::internal::ConstantInitialized); inline BoolExpr(const BoolExpr& from) : BoolExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const BoolExpr& default_instance() { return *internal_default_instance(); } static inline const BoolExpr* internal_default_instance() { return reinterpret_cast( &_BoolExpr_default_instance_); } static constexpr int kIndexInFileMessages = 30; friend void swap(BoolExpr& a, BoolExpr& b) { a.Swap(&b); } inline void Swap(BoolExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(BoolExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- BoolExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const BoolExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const BoolExpr& from) { BoolExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(BoolExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.BoolExpr"; } protected: explicit BoolExpr(::google::protobuf::Arena* arena); BoolExpr(::google::protobuf::Arena* arena, const BoolExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.BoolExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; int boolop_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class BooleanTest final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.BooleanTest) */ { public: inline BooleanTest() : BooleanTest(nullptr) {} ~BooleanTest() override; template explicit PROTOBUF_CONSTEXPR BooleanTest(::google::protobuf::internal::ConstantInitialized); inline BooleanTest(const BooleanTest& from) : BooleanTest(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const BooleanTest& default_instance() { return *internal_default_instance(); } static inline const BooleanTest* internal_default_instance() { return reinterpret_cast( &_BooleanTest_default_instance_); } static constexpr int kIndexInFileMessages = 62; friend void swap(BooleanTest& a, BooleanTest& b) { a.Swap(&b); } inline void Swap(BooleanTest* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(BooleanTest* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- BooleanTest* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const BooleanTest& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const BooleanTest& from) { BooleanTest::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(BooleanTest* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.BooleanTest"; } protected: explicit BooleanTest(::google::protobuf::Arena* arena); BooleanTest(::google::protobuf::Arena* arena, const BooleanTest& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // .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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.BooleanTest) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; int booltesttype_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CTECycleClause final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CTECycleClause) */ { public: inline CTECycleClause() : CTECycleClause(nullptr) {} ~CTECycleClause() override; template explicit PROTOBUF_CONSTEXPR CTECycleClause(::google::protobuf::internal::ConstantInitialized); inline CTECycleClause(const CTECycleClause& from) : CTECycleClause(nullptr, from) {} CTECycleClause(CTECycleClause&& from) noexcept : CTECycleClause() { *this = ::std::move(from); } inline CTECycleClause& operator=(const CTECycleClause& from) { CopyFrom(from); return *this; } inline CTECycleClause& operator=(CTECycleClause&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CTECycleClause& default_instance() { return *internal_default_instance(); } static inline const CTECycleClause* internal_default_instance() { return reinterpret_cast( &_CTECycleClause_default_instance_); } static constexpr int kIndexInFileMessages = 122; friend void swap(CTECycleClause& a, CTECycleClause& b) { a.Swap(&b); } inline void Swap(CTECycleClause* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CTECycleClause* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CTECycleClause* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CTECycleClause& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CTECycleClause& from) { CTECycleClause::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CTECycleClause* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CTECycleClause"; } protected: explicit CTECycleClause(::google::protobuf::Arena* arena); CTECycleClause(::google::protobuf::Arena* arena, const CTECycleClause& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCycleColListFieldNumber = 1, kCycleMarkColumnFieldNumber = 2, kCyclePathColumnFieldNumber = 5, kCycleMarkValueFieldNumber = 3, kCycleMarkDefaultFieldNumber = 4, kLocationFieldNumber = 6, kCycleMarkTypeFieldNumber = 7, kCycleMarkTypmodFieldNumber = 8, kCycleMarkCollationFieldNumber = 9, kCycleMarkNeopFieldNumber = 10, }; // repeated .pg_query.Node cycle_col_list = 1 [json_name = "cycle_col_list"]; int cycle_col_list_size() const; private: int _internal_cycle_col_list_size() const; public: void clear_cycle_col_list() ; ::pg_query::Node* mutable_cycle_col_list(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_cycle_col_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_cycle_col_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_cycle_col_list(); public: const ::pg_query::Node& cycle_col_list(int index) const; ::pg_query::Node* add_cycle_col_list(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& cycle_col_list() const; // string cycle_mark_column = 2 [json_name = "cycle_mark_column"]; void clear_cycle_mark_column() ; const std::string& cycle_mark_column() const; template void set_cycle_mark_column(Arg_&& arg, Args_... args); std::string* mutable_cycle_mark_column(); PROTOBUF_NODISCARD std::string* release_cycle_mark_column(); void set_allocated_cycle_mark_column(std::string* value); private: const std::string& _internal_cycle_mark_column() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_cycle_mark_column( const std::string& value); std::string* _internal_mutable_cycle_mark_column(); public: // string cycle_path_column = 5 [json_name = "cycle_path_column"]; void clear_cycle_path_column() ; const std::string& cycle_path_column() const; template void set_cycle_path_column(Arg_&& arg, Args_... args); std::string* mutable_cycle_path_column(); PROTOBUF_NODISCARD std::string* release_cycle_path_column(); void set_allocated_cycle_path_column(std::string* value); private: const std::string& _internal_cycle_path_column() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_cycle_path_column( const std::string& value); std::string* _internal_mutable_cycle_path_column(); public: // .pg_query.Node cycle_mark_value = 3 [json_name = "cycle_mark_value"]; bool has_cycle_mark_value() const; void clear_cycle_mark_value() ; const ::pg_query::Node& cycle_mark_value() const; PROTOBUF_NODISCARD ::pg_query::Node* release_cycle_mark_value(); ::pg_query::Node* mutable_cycle_mark_value(); void set_allocated_cycle_mark_value(::pg_query::Node* value); void unsafe_arena_set_allocated_cycle_mark_value(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_cycle_mark_value(); private: const ::pg_query::Node& _internal_cycle_mark_value() const; ::pg_query::Node* _internal_mutable_cycle_mark_value(); public: // .pg_query.Node cycle_mark_default = 4 [json_name = "cycle_mark_default"]; bool has_cycle_mark_default() const; void clear_cycle_mark_default() ; const ::pg_query::Node& cycle_mark_default() const; PROTOBUF_NODISCARD ::pg_query::Node* release_cycle_mark_default(); ::pg_query::Node* mutable_cycle_mark_default(); void set_allocated_cycle_mark_default(::pg_query::Node* value); void unsafe_arena_set_allocated_cycle_mark_default(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_cycle_mark_default(); private: const ::pg_query::Node& _internal_cycle_mark_default() const; ::pg_query::Node* _internal_mutable_cycle_mark_default(); public: // int32 location = 6 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // uint32 cycle_mark_type = 7 [json_name = "cycle_mark_type"]; void clear_cycle_mark_type() ; ::uint32_t cycle_mark_type() const; void set_cycle_mark_type(::uint32_t value); private: ::uint32_t _internal_cycle_mark_type() const; void _internal_set_cycle_mark_type(::uint32_t value); public: // int32 cycle_mark_typmod = 8 [json_name = "cycle_mark_typmod"]; void clear_cycle_mark_typmod() ; ::int32_t cycle_mark_typmod() const; void set_cycle_mark_typmod(::int32_t value); private: ::int32_t _internal_cycle_mark_typmod() const; void _internal_set_cycle_mark_typmod(::int32_t value); public: // uint32 cycle_mark_collation = 9 [json_name = "cycle_mark_collation"]; void clear_cycle_mark_collation() ; ::uint32_t cycle_mark_collation() const; void set_cycle_mark_collation(::uint32_t value); private: ::uint32_t _internal_cycle_mark_collation() const; void _internal_set_cycle_mark_collation(::uint32_t value); public: // uint32 cycle_mark_neop = 10 [json_name = "cycle_mark_neop"]; void clear_cycle_mark_neop() ; ::uint32_t cycle_mark_neop() const; void set_cycle_mark_neop(::uint32_t value); private: ::uint32_t _internal_cycle_mark_neop() const; void _internal_set_cycle_mark_neop(::uint32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.CTECycleClause) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 10, 3, 74, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > cycle_col_list_; ::google::protobuf::internal::ArenaStringPtr cycle_mark_column_; ::google::protobuf::internal::ArenaStringPtr cycle_path_column_; ::pg_query::Node* cycle_mark_value_; ::pg_query::Node* cycle_mark_default_; ::int32_t location_; ::uint32_t cycle_mark_type_; ::int32_t cycle_mark_typmod_; ::uint32_t cycle_mark_collation_; ::uint32_t cycle_mark_neop_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CTESearchClause final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CTESearchClause) */ { public: inline CTESearchClause() : CTESearchClause(nullptr) {} ~CTESearchClause() override; template explicit PROTOBUF_CONSTEXPR CTESearchClause(::google::protobuf::internal::ConstantInitialized); inline CTESearchClause(const CTESearchClause& from) : CTESearchClause(nullptr, from) {} CTESearchClause(CTESearchClause&& from) noexcept : CTESearchClause() { *this = ::std::move(from); } inline CTESearchClause& operator=(const CTESearchClause& from) { CopyFrom(from); return *this; } inline CTESearchClause& operator=(CTESearchClause&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CTESearchClause& default_instance() { return *internal_default_instance(); } static inline const CTESearchClause* internal_default_instance() { return reinterpret_cast( &_CTESearchClause_default_instance_); } static constexpr int kIndexInFileMessages = 121; friend void swap(CTESearchClause& a, CTESearchClause& b) { a.Swap(&b); } inline void Swap(CTESearchClause* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CTESearchClause* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CTESearchClause* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CTESearchClause& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CTESearchClause& from) { CTESearchClause::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CTESearchClause* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CTESearchClause"; } protected: explicit CTESearchClause(::google::protobuf::Arena* arena); CTESearchClause(::google::protobuf::Arena* arena, const CTESearchClause& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSearchColListFieldNumber = 1, kSearchSeqColumnFieldNumber = 3, kSearchBreadthFirstFieldNumber = 2, kLocationFieldNumber = 4, }; // repeated .pg_query.Node search_col_list = 1 [json_name = "search_col_list"]; int search_col_list_size() const; private: int _internal_search_col_list_size() const; public: void clear_search_col_list() ; ::pg_query::Node* mutable_search_col_list(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_search_col_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_search_col_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_search_col_list(); public: const ::pg_query::Node& search_col_list(int index) const; ::pg_query::Node* add_search_col_list(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& search_col_list() const; // string search_seq_column = 3 [json_name = "search_seq_column"]; void clear_search_seq_column() ; const std::string& search_seq_column() const; template void set_search_seq_column(Arg_&& arg, Args_... args); std::string* mutable_search_seq_column(); PROTOBUF_NODISCARD std::string* release_search_seq_column(); void set_allocated_search_seq_column(std::string* value); private: const std::string& _internal_search_seq_column() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_search_seq_column( const std::string& value); std::string* _internal_mutable_search_seq_column(); public: // bool search_breadth_first = 2 [json_name = "search_breadth_first"]; void clear_search_breadth_first() ; bool search_breadth_first() const; void set_search_breadth_first(bool value); private: bool _internal_search_breadth_first() const; void _internal_set_search_breadth_first(bool value); public: // int32 location = 4 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.CTESearchClause) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 1, 50, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > search_col_list_; ::google::protobuf::internal::ArenaStringPtr search_seq_column_; bool search_breadth_first_; ::int32_t location_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CallStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CallStmt) */ { public: inline CallStmt() : CallStmt(nullptr) {} ~CallStmt() override; template explicit PROTOBUF_CONSTEXPR CallStmt(::google::protobuf::internal::ConstantInitialized); inline CallStmt(const CallStmt& from) : CallStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CallStmt& default_instance() { return *internal_default_instance(); } static inline const CallStmt* internal_default_instance() { return reinterpret_cast( &_CallStmt_default_instance_); } static constexpr int kIndexInFileMessages = 218; friend void swap(CallStmt& a, CallStmt& b) { a.Swap(&b); } inline void Swap(CallStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CallStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CallStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CallStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CallStmt& from) { CallStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CallStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CallStmt"; } protected: explicit CallStmt(::google::protobuf::Arena* arena); CallStmt(::google::protobuf::Arena* arena, const CallStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOutargsFieldNumber = 3, kFunccallFieldNumber = 1, kFuncexprFieldNumber = 2, }; // repeated .pg_query.Node outargs = 3 [json_name = "outargs"]; int outargs_size() const; private: int _internal_outargs_size() const; public: void clear_outargs() ; ::pg_query::Node* mutable_outargs(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_outargs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_outargs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_outargs(); public: const ::pg_query::Node& outargs(int index) const; ::pg_query::Node* add_outargs(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& outargs() const; // .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; bool has_funccall() const; void clear_funccall() ; const ::pg_query::FuncCall& funccall() const; PROTOBUF_NODISCARD ::pg_query::FuncCall* release_funccall(); ::pg_query::FuncCall* mutable_funccall(); void set_allocated_funccall(::pg_query::FuncCall* value); void unsafe_arena_set_allocated_funccall(::pg_query::FuncCall* value); ::pg_query::FuncCall* unsafe_arena_release_funccall(); private: const ::pg_query::FuncCall& _internal_funccall() const; ::pg_query::FuncCall* _internal_mutable_funccall(); public: // .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; bool has_funcexpr() const; void clear_funcexpr() ; const ::pg_query::FuncExpr& funcexpr() const; PROTOBUF_NODISCARD ::pg_query::FuncExpr* release_funcexpr(); ::pg_query::FuncExpr* mutable_funcexpr(); void set_allocated_funcexpr(::pg_query::FuncExpr* value); void unsafe_arena_set_allocated_funcexpr(::pg_query::FuncExpr* value); ::pg_query::FuncExpr* unsafe_arena_release_funcexpr(); private: const ::pg_query::FuncExpr& _internal_funcexpr() const; ::pg_query::FuncExpr* _internal_mutable_funcexpr(); public: // @@protoc_insertion_point(class_scope:pg_query.CallStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > outargs_; ::pg_query::FuncCall* funccall_; ::pg_query::FuncExpr* funcexpr_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CaseExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CaseExpr) */ { public: inline CaseExpr() : CaseExpr(nullptr) {} ~CaseExpr() override; template explicit PROTOBUF_CONSTEXPR CaseExpr(::google::protobuf::internal::ConstantInitialized); inline CaseExpr(const CaseExpr& from) : CaseExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CaseExpr& default_instance() { return *internal_default_instance(); } static inline const CaseExpr* internal_default_instance() { return reinterpret_cast( &_CaseExpr_default_instance_); } static constexpr int kIndexInFileMessages = 41; friend void swap(CaseExpr& a, CaseExpr& b) { a.Swap(&b); } inline void Swap(CaseExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CaseExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CaseExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CaseExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CaseExpr& from) { CaseExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CaseExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CaseExpr"; } protected: explicit CaseExpr(::google::protobuf::Arena* arena); CaseExpr(::google::protobuf::Arena* arena, const CaseExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node arg = 4 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // .pg_query.Node defresult = 6 [json_name = "defresult"]; bool has_defresult() const; void clear_defresult() ; const ::pg_query::Node& defresult() const; PROTOBUF_NODISCARD ::pg_query::Node* release_defresult(); ::pg_query::Node* mutable_defresult(); void set_allocated_defresult(::pg_query::Node* value); void unsafe_arena_set_allocated_defresult(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_defresult(); private: const ::pg_query::Node& _internal_defresult() const; ::pg_query::Node* _internal_mutable_defresult(); public: // uint32 casetype = 2 [json_name = "casetype"]; void clear_casetype() ; ::uint32_t casetype() const; void set_casetype(::uint32_t value); private: ::uint32_t _internal_casetype() const; void _internal_set_casetype(::uint32_t value); public: // uint32 casecollid = 3 [json_name = "casecollid"]; void clear_casecollid() ; ::uint32_t casecollid() const; void set_casecollid(::uint32_t value); private: ::uint32_t _internal_casecollid() const; void _internal_set_casecollid(::uint32_t value); public: // int32 location = 7 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.CaseExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 4, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::pg_query::Node* defresult_; ::uint32_t casetype_; ::uint32_t casecollid_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CaseTestExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CaseTestExpr) */ { public: inline CaseTestExpr() : CaseTestExpr(nullptr) {} ~CaseTestExpr() override; template explicit PROTOBUF_CONSTEXPR CaseTestExpr(::google::protobuf::internal::ConstantInitialized); inline CaseTestExpr(const CaseTestExpr& from) : CaseTestExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CaseTestExpr& default_instance() { return *internal_default_instance(); } static inline const CaseTestExpr* internal_default_instance() { return reinterpret_cast( &_CaseTestExpr_default_instance_); } static constexpr int kIndexInFileMessages = 43; friend void swap(CaseTestExpr& a, CaseTestExpr& b) { a.Swap(&b); } inline void Swap(CaseTestExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CaseTestExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CaseTestExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CaseTestExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CaseTestExpr& from) { CaseTestExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CaseTestExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CaseTestExpr"; } protected: explicit CaseTestExpr(::google::protobuf::Arena* arena); CaseTestExpr(::google::protobuf::Arena* arena, const CaseTestExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 type_id = 2 [json_name = "typeId"]; void clear_type_id() ; ::uint32_t type_id() const; void set_type_id(::uint32_t value); private: ::uint32_t _internal_type_id() const; void _internal_set_type_id(::uint32_t value); public: // int32 type_mod = 3 [json_name = "typeMod"]; void clear_type_mod() ; ::int32_t type_mod() const; void set_type_mod(::int32_t value); private: ::int32_t _internal_type_mod() const; void _internal_set_type_mod(::int32_t value); public: // uint32 collation = 4 [json_name = "collation"]; void clear_collation() ; ::uint32_t collation() const; void set_collation(::uint32_t value); private: ::uint32_t _internal_collation() const; void _internal_set_collation(::uint32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.CaseTestExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::uint32_t type_id_; ::int32_t type_mod_; ::uint32_t collation_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CaseWhen final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CaseWhen) */ { public: inline CaseWhen() : CaseWhen(nullptr) {} ~CaseWhen() override; template explicit PROTOBUF_CONSTEXPR CaseWhen(::google::protobuf::internal::ConstantInitialized); inline CaseWhen(const CaseWhen& from) : CaseWhen(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CaseWhen& default_instance() { return *internal_default_instance(); } static inline const CaseWhen* internal_default_instance() { return reinterpret_cast( &_CaseWhen_default_instance_); } static constexpr int kIndexInFileMessages = 42; friend void swap(CaseWhen& a, CaseWhen& b) { a.Swap(&b); } inline void Swap(CaseWhen* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CaseWhen* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CaseWhen* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CaseWhen& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CaseWhen& from) { CaseWhen::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CaseWhen* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CaseWhen"; } protected: explicit CaseWhen(::google::protobuf::Arena* arena); CaseWhen(::google::protobuf::Arena* arena, const CaseWhen& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; void clear_expr() ; const ::pg_query::Node& expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* value); void unsafe_arena_set_allocated_expr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_expr(); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: // .pg_query.Node result = 3 [json_name = "result"]; bool has_result() const; void clear_result() ; const ::pg_query::Node& result() const; PROTOBUF_NODISCARD ::pg_query::Node* release_result(); ::pg_query::Node* mutable_result(); void set_allocated_result(::pg_query::Node* value); void unsafe_arena_set_allocated_result(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_result(); private: const ::pg_query::Node& _internal_result() const; ::pg_query::Node* _internal_mutable_result(); public: // int32 location = 4 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.CaseWhen) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::pg_query::Node* expr_; ::pg_query::Node* result_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ClusterStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ClusterStmt) */ { public: inline ClusterStmt() : ClusterStmt(nullptr) {} ~ClusterStmt() override; template explicit PROTOBUF_CONSTEXPR ClusterStmt(::google::protobuf::internal::ConstantInitialized); inline ClusterStmt(const ClusterStmt& from) : ClusterStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ClusterStmt& default_instance() { return *internal_default_instance(); } static inline const ClusterStmt* internal_default_instance() { return reinterpret_cast( &_ClusterStmt_default_instance_); } static constexpr int kIndexInFileMessages = 243; friend void swap(ClusterStmt& a, ClusterStmt& b) { a.Swap(&b); } inline void Swap(ClusterStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ClusterStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ClusterStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ClusterStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ClusterStmt& from) { ClusterStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ClusterStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ClusterStmt"; } protected: explicit ClusterStmt(::google::protobuf::Arena* arena); ClusterStmt(::google::protobuf::Arena* arena, const ClusterStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kParamsFieldNumber = 3, kIndexnameFieldNumber = 2, kRelationFieldNumber = 1, }; // repeated .pg_query.Node params = 3 [json_name = "params"]; int params_size() const; private: int _internal_params_size() const; public: void clear_params() ; ::pg_query::Node* mutable_params(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_params(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_params() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_params(); public: const ::pg_query::Node& params(int index) const; ::pg_query::Node* add_params(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& params() const; // string indexname = 2 [json_name = "indexname"]; void clear_indexname() ; const std::string& indexname() const; template void set_indexname(Arg_&& arg, Args_... args); std::string* mutable_indexname(); PROTOBUF_NODISCARD std::string* release_indexname(); void set_allocated_indexname(std::string* value); private: const std::string& _internal_indexname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // @@protoc_insertion_point(class_scope:pg_query.ClusterStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 38, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > params_; ::google::protobuf::internal::ArenaStringPtr indexname_; ::pg_query::RangeVar* relation_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CoalesceExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CoalesceExpr) */ { public: inline CoalesceExpr() : CoalesceExpr(nullptr) {} ~CoalesceExpr() override; template explicit PROTOBUF_CONSTEXPR CoalesceExpr(::google::protobuf::internal::ConstantInitialized); inline CoalesceExpr(const CoalesceExpr& from) : CoalesceExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CoalesceExpr& default_instance() { return *internal_default_instance(); } static inline const CoalesceExpr* internal_default_instance() { return reinterpret_cast( &_CoalesceExpr_default_instance_); } static constexpr int kIndexInFileMessages = 47; friend void swap(CoalesceExpr& a, CoalesceExpr& b) { a.Swap(&b); } inline void Swap(CoalesceExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CoalesceExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CoalesceExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CoalesceExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CoalesceExpr& from) { CoalesceExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CoalesceExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CoalesceExpr"; } protected: explicit CoalesceExpr(::google::protobuf::Arena* arena); CoalesceExpr(::google::protobuf::Arena* arena, const CoalesceExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 coalescetype = 2 [json_name = "coalescetype"]; void clear_coalescetype() ; ::uint32_t coalescetype() const; void set_coalescetype(::uint32_t value); private: ::uint32_t _internal_coalescetype() const; void _internal_set_coalescetype(::uint32_t value); public: // uint32 coalescecollid = 3 [json_name = "coalescecollid"]; void clear_coalescecollid() ; ::uint32_t coalescecollid() const; void set_coalescecollid(::uint32_t value); private: ::uint32_t _internal_coalescecollid() const; void _internal_set_coalescecollid(::uint32_t value); public: // int32 location = 5 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.CoalesceExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::uint32_t coalescetype_; ::uint32_t coalescecollid_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CoerceToDomain final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CoerceToDomain) */ { public: inline CoerceToDomain() : CoerceToDomain(nullptr) {} ~CoerceToDomain() override; template explicit PROTOBUF_CONSTEXPR CoerceToDomain(::google::protobuf::internal::ConstantInitialized); inline CoerceToDomain(const CoerceToDomain& from) : CoerceToDomain(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CoerceToDomain& default_instance() { return *internal_default_instance(); } static inline const CoerceToDomain* internal_default_instance() { return reinterpret_cast( &_CoerceToDomain_default_instance_); } static constexpr int kIndexInFileMessages = 64; friend void swap(CoerceToDomain& a, CoerceToDomain& b) { a.Swap(&b); } inline void Swap(CoerceToDomain* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CoerceToDomain* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CoerceToDomain* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CoerceToDomain& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CoerceToDomain& from) { CoerceToDomain::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CoerceToDomain* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CoerceToDomain"; } protected: explicit CoerceToDomain(::google::protobuf::Arena* arena); CoerceToDomain(::google::protobuf::Arena* arena, const CoerceToDomain& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // uint32 resulttype = 3 [json_name = "resulttype"]; void clear_resulttype() ; ::uint32_t resulttype() const; void set_resulttype(::uint32_t value); private: ::uint32_t _internal_resulttype() const; void _internal_set_resulttype(::uint32_t value); public: // int32 resulttypmod = 4 [json_name = "resulttypmod"]; void clear_resulttypmod() ; ::int32_t resulttypmod() const; void set_resulttypmod(::int32_t value); private: ::int32_t _internal_resulttypmod() const; void _internal_set_resulttypmod(::int32_t value); public: // uint32 resultcollid = 5 [json_name = "resultcollid"]; void clear_resultcollid() ; ::uint32_t resultcollid() const; void set_resultcollid(::uint32_t value); private: ::uint32_t _internal_resultcollid() const; void _internal_set_resultcollid(::uint32_t 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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.CoerceToDomain) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::uint32_t resulttype_; ::int32_t resulttypmod_; ::uint32_t resultcollid_; int coercionformat_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CoerceToDomainValue final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CoerceToDomainValue) */ { public: inline CoerceToDomainValue() : CoerceToDomainValue(nullptr) {} ~CoerceToDomainValue() override; template explicit PROTOBUF_CONSTEXPR CoerceToDomainValue(::google::protobuf::internal::ConstantInitialized); inline CoerceToDomainValue(const CoerceToDomainValue& from) : CoerceToDomainValue(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CoerceToDomainValue& default_instance() { return *internal_default_instance(); } static inline const CoerceToDomainValue* internal_default_instance() { return reinterpret_cast( &_CoerceToDomainValue_default_instance_); } static constexpr int kIndexInFileMessages = 65; friend void swap(CoerceToDomainValue& a, CoerceToDomainValue& b) { a.Swap(&b); } inline void Swap(CoerceToDomainValue* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CoerceToDomainValue* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CoerceToDomainValue* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CoerceToDomainValue& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CoerceToDomainValue& from) { CoerceToDomainValue::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CoerceToDomainValue* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CoerceToDomainValue"; } protected: explicit CoerceToDomainValue(::google::protobuf::Arena* arena); CoerceToDomainValue(::google::protobuf::Arena* arena, const CoerceToDomainValue& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 type_id = 2 [json_name = "typeId"]; void clear_type_id() ; ::uint32_t type_id() const; void set_type_id(::uint32_t value); private: ::uint32_t _internal_type_id() const; void _internal_set_type_id(::uint32_t value); public: // int32 type_mod = 3 [json_name = "typeMod"]; void clear_type_mod() ; ::int32_t type_mod() const; void set_type_mod(::int32_t value); private: ::int32_t _internal_type_mod() const; void _internal_set_type_mod(::int32_t value); public: // uint32 collation = 4 [json_name = "collation"]; void clear_collation() ; ::uint32_t collation() const; void set_collation(::uint32_t value); private: ::uint32_t _internal_collation() const; void _internal_set_collation(::uint32_t value); public: // int32 location = 5 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.CoerceToDomainValue) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::uint32_t type_id_; ::int32_t type_mod_; ::uint32_t collation_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CoerceViaIO final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CoerceViaIO) */ { public: inline CoerceViaIO() : CoerceViaIO(nullptr) {} ~CoerceViaIO() override; template explicit PROTOBUF_CONSTEXPR CoerceViaIO(::google::protobuf::internal::ConstantInitialized); inline CoerceViaIO(const CoerceViaIO& from) : CoerceViaIO(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CoerceViaIO& default_instance() { return *internal_default_instance(); } static inline const CoerceViaIO* internal_default_instance() { return reinterpret_cast( &_CoerceViaIO_default_instance_); } static constexpr int kIndexInFileMessages = 37; friend void swap(CoerceViaIO& a, CoerceViaIO& b) { a.Swap(&b); } inline void Swap(CoerceViaIO* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CoerceViaIO* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CoerceViaIO* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CoerceViaIO& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CoerceViaIO& from) { CoerceViaIO::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CoerceViaIO* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CoerceViaIO"; } protected: explicit CoerceViaIO(::google::protobuf::Arena* arena); CoerceViaIO(::google::protobuf::Arena* arena, const CoerceViaIO& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // uint32 resulttype = 3 [json_name = "resulttype"]; void clear_resulttype() ; ::uint32_t resulttype() const; void set_resulttype(::uint32_t value); private: ::uint32_t _internal_resulttype() const; void _internal_set_resulttype(::uint32_t value); public: // uint32 resultcollid = 4 [json_name = "resultcollid"]; void clear_resultcollid() ; ::uint32_t resultcollid() const; void set_resultcollid(::uint32_t value); private: ::uint32_t _internal_resultcollid() const; void _internal_set_resultcollid(::uint32_t 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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.CoerceViaIO) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::uint32_t resulttype_; ::uint32_t resultcollid_; int coerceformat_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CollateClause final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CollateClause) */ { public: inline CollateClause() : CollateClause(nullptr) {} ~CollateClause() override; template explicit PROTOBUF_CONSTEXPR CollateClause(::google::protobuf::internal::ConstantInitialized); inline CollateClause(const CollateClause& from) : CollateClause(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CollateClause& default_instance() { return *internal_default_instance(); } static inline const CollateClause* internal_default_instance() { return reinterpret_cast( &_CollateClause_default_instance_); } static constexpr int kIndexInFileMessages = 81; friend void swap(CollateClause& a, CollateClause& b) { a.Swap(&b); } inline void Swap(CollateClause* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CollateClause* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CollateClause* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CollateClause& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CollateClause& from) { CollateClause::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CollateClause* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CollateClause"; } protected: explicit CollateClause(::google::protobuf::Arena* arena); CollateClause(::google::protobuf::Arena* arena, const CollateClause& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_collname(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_collname() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_collname(); public: const ::pg_query::Node& collname(int index) const; ::pg_query::Node* add_collname(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& collname() const; // .pg_query.Node arg = 1 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // int32 location = 3 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.CollateClause) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > collname_; ::pg_query::Node* arg_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CollateExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CollateExpr) */ { public: inline CollateExpr() : CollateExpr(nullptr) {} ~CollateExpr() override; template explicit PROTOBUF_CONSTEXPR CollateExpr(::google::protobuf::internal::ConstantInitialized); inline CollateExpr(const CollateExpr& from) : CollateExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CollateExpr& default_instance() { return *internal_default_instance(); } static inline const CollateExpr* internal_default_instance() { return reinterpret_cast( &_CollateExpr_default_instance_); } static constexpr int kIndexInFileMessages = 40; friend void swap(CollateExpr& a, CollateExpr& b) { a.Swap(&b); } inline void Swap(CollateExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CollateExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CollateExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CollateExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CollateExpr& from) { CollateExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CollateExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CollateExpr"; } protected: explicit CollateExpr(::google::protobuf::Arena* arena); CollateExpr(::google::protobuf::Arena* arena, const CollateExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // uint32 coll_oid = 3 [json_name = "collOid"]; void clear_coll_oid() ; ::uint32_t coll_oid() const; void set_coll_oid(::uint32_t value); private: ::uint32_t _internal_coll_oid() const; void _internal_set_coll_oid(::uint32_t value); public: // int32 location = 4 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.CollateExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::uint32_t coll_oid_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ColumnDef final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ColumnDef) */ { public: inline ColumnDef() : ColumnDef(nullptr) {} ~ColumnDef() override; template explicit PROTOBUF_CONSTEXPR ColumnDef(::google::protobuf::internal::ConstantInitialized); inline ColumnDef(const ColumnDef& from) : ColumnDef(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ColumnDef& default_instance() { return *internal_default_instance(); } static inline const ColumnDef* internal_default_instance() { return reinterpret_cast( &_ColumnDef_default_instance_); } static constexpr int kIndexInFileMessages = 97; friend void swap(ColumnDef& a, ColumnDef& b) { a.Swap(&b); } inline void Swap(ColumnDef* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ColumnDef* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ColumnDef* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ColumnDef& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ColumnDef& from) { ColumnDef::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ColumnDef* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ColumnDef"; } protected: explicit ColumnDef(::google::protobuf::Arena* arena); ColumnDef(::google::protobuf::Arena* arena, const ColumnDef& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kConstraintsFieldNumber = 17, kFdwoptionsFieldNumber = 18, kColnameFieldNumber = 1, kCompressionFieldNumber = 3, kStorageFieldNumber = 8, kStorageNameFieldNumber = 9, kIdentityFieldNumber = 12, kGeneratedFieldNumber = 14, kTypeNameFieldNumber = 2, kRawDefaultFieldNumber = 10, kCookedDefaultFieldNumber = 11, kIdentitySequenceFieldNumber = 13, kCollClauseFieldNumber = 15, kInhcountFieldNumber = 4, kIsLocalFieldNumber = 5, kIsNotNullFieldNumber = 6, kIsFromTypeFieldNumber = 7, kCollOidFieldNumber = 16, kLocationFieldNumber = 19, }; // repeated .pg_query.Node constraints = 17 [json_name = "constraints"]; int constraints_size() const; private: int _internal_constraints_size() const; public: void clear_constraints() ; ::pg_query::Node* mutable_constraints(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_constraints(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_constraints() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_constraints(); public: const ::pg_query::Node& constraints(int index) const; ::pg_query::Node* add_constraints(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& constraints() const; // repeated .pg_query.Node fdwoptions = 18 [json_name = "fdwoptions"]; int fdwoptions_size() const; private: int _internal_fdwoptions_size() const; public: void clear_fdwoptions() ; ::pg_query::Node* mutable_fdwoptions(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_fdwoptions(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_fdwoptions() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_fdwoptions(); public: const ::pg_query::Node& fdwoptions(int index) const; ::pg_query::Node* add_fdwoptions(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& fdwoptions() const; // string colname = 1 [json_name = "colname"]; void clear_colname() ; const std::string& colname() const; template void set_colname(Arg_&& arg, Args_... args); std::string* mutable_colname(); PROTOBUF_NODISCARD std::string* release_colname(); void set_allocated_colname(std::string* value); private: const std::string& _internal_colname() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_colname( const std::string& value); std::string* _internal_mutable_colname(); public: // string compression = 3 [json_name = "compression"]; void clear_compression() ; const std::string& compression() const; template void set_compression(Arg_&& arg, Args_... args); std::string* mutable_compression(); PROTOBUF_NODISCARD std::string* release_compression(); void set_allocated_compression(std::string* value); private: const std::string& _internal_compression() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_compression( const std::string& value); std::string* _internal_mutable_compression(); public: // string storage = 8 [json_name = "storage"]; void clear_storage() ; const std::string& storage() const; template void set_storage(Arg_&& arg, Args_... args); std::string* mutable_storage(); PROTOBUF_NODISCARD std::string* release_storage(); void set_allocated_storage(std::string* value); private: const std::string& _internal_storage() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_storage( const std::string& value); std::string* _internal_mutable_storage(); public: // string storage_name = 9 [json_name = "storage_name"]; void clear_storage_name() ; const std::string& storage_name() const; template void set_storage_name(Arg_&& arg, Args_... args); std::string* mutable_storage_name(); PROTOBUF_NODISCARD std::string* release_storage_name(); void set_allocated_storage_name(std::string* value); private: const std::string& _internal_storage_name() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_storage_name( const std::string& value); std::string* _internal_mutable_storage_name(); public: // string identity = 12 [json_name = "identity"]; void clear_identity() ; const std::string& identity() const; template void set_identity(Arg_&& arg, Args_... args); std::string* mutable_identity(); PROTOBUF_NODISCARD std::string* release_identity(); void set_allocated_identity(std::string* value); private: const std::string& _internal_identity() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_identity( const std::string& value); std::string* _internal_mutable_identity(); public: // string generated = 14 [json_name = "generated"]; void clear_generated() ; const std::string& generated() const; template void set_generated(Arg_&& arg, Args_... args); std::string* mutable_generated(); PROTOBUF_NODISCARD std::string* release_generated(); void set_allocated_generated(std::string* value); private: const std::string& _internal_generated() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_type_name() ; const ::pg_query::TypeName& type_name() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* value); void unsafe_arena_set_allocated_type_name(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_type_name(); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: // .pg_query.Node raw_default = 10 [json_name = "raw_default"]; bool has_raw_default() const; void clear_raw_default() ; const ::pg_query::Node& raw_default() const; PROTOBUF_NODISCARD ::pg_query::Node* release_raw_default(); ::pg_query::Node* mutable_raw_default(); void set_allocated_raw_default(::pg_query::Node* value); void unsafe_arena_set_allocated_raw_default(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_raw_default(); private: const ::pg_query::Node& _internal_raw_default() const; ::pg_query::Node* _internal_mutable_raw_default(); public: // .pg_query.Node cooked_default = 11 [json_name = "cooked_default"]; bool has_cooked_default() const; void clear_cooked_default() ; const ::pg_query::Node& cooked_default() const; PROTOBUF_NODISCARD ::pg_query::Node* release_cooked_default(); ::pg_query::Node* mutable_cooked_default(); void set_allocated_cooked_default(::pg_query::Node* value); void unsafe_arena_set_allocated_cooked_default(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_cooked_default(); private: const ::pg_query::Node& _internal_cooked_default() const; ::pg_query::Node* _internal_mutable_cooked_default(); public: // .pg_query.RangeVar identity_sequence = 13 [json_name = "identitySequence"]; bool has_identity_sequence() const; void clear_identity_sequence() ; const ::pg_query::RangeVar& identity_sequence() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_identity_sequence(); ::pg_query::RangeVar* mutable_identity_sequence(); void set_allocated_identity_sequence(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_identity_sequence(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_identity_sequence(); private: const ::pg_query::RangeVar& _internal_identity_sequence() const; ::pg_query::RangeVar* _internal_mutable_identity_sequence(); public: // .pg_query.CollateClause coll_clause = 15 [json_name = "collClause"]; bool has_coll_clause() const; void clear_coll_clause() ; const ::pg_query::CollateClause& coll_clause() const; PROTOBUF_NODISCARD ::pg_query::CollateClause* release_coll_clause(); ::pg_query::CollateClause* mutable_coll_clause(); void set_allocated_coll_clause(::pg_query::CollateClause* value); void unsafe_arena_set_allocated_coll_clause(::pg_query::CollateClause* value); ::pg_query::CollateClause* unsafe_arena_release_coll_clause(); private: const ::pg_query::CollateClause& _internal_coll_clause() const; ::pg_query::CollateClause* _internal_mutable_coll_clause(); public: // int32 inhcount = 4 [json_name = "inhcount"]; void clear_inhcount() ; ::int32_t inhcount() const; void set_inhcount(::int32_t value); private: ::int32_t _internal_inhcount() const; void _internal_set_inhcount(::int32_t value); public: // bool is_local = 5 [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 = 6 [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 = 7 [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 = 16 [json_name = "collOid"]; void clear_coll_oid() ; ::uint32_t coll_oid() const; void set_coll_oid(::uint32_t value); private: ::uint32_t _internal_coll_oid() const; void _internal_set_coll_oid(::uint32_t value); public: // int32 location = 19 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.ColumnDef) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 5, 19, 7, 97, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > constraints_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > fdwoptions_; ::google::protobuf::internal::ArenaStringPtr colname_; ::google::protobuf::internal::ArenaStringPtr compression_; ::google::protobuf::internal::ArenaStringPtr storage_; ::google::protobuf::internal::ArenaStringPtr storage_name_; ::google::protobuf::internal::ArenaStringPtr identity_; ::google::protobuf::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_; ::int32_t inhcount_; bool is_local_; bool is_not_null_; bool is_from_type_; ::uint32_t coll_oid_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ColumnRef final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ColumnRef) */ { public: inline ColumnRef() : ColumnRef(nullptr) {} ~ColumnRef() override; template explicit PROTOBUF_CONSTEXPR ColumnRef(::google::protobuf::internal::ConstantInitialized); inline ColumnRef(const ColumnRef& from) : ColumnRef(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ColumnRef& default_instance() { return *internal_default_instance(); } static inline const ColumnRef* internal_default_instance() { return reinterpret_cast( &_ColumnRef_default_instance_); } static constexpr int kIndexInFileMessages = 77; friend void swap(ColumnRef& a, ColumnRef& b) { a.Swap(&b); } inline void Swap(ColumnRef* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ColumnRef* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ColumnRef* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ColumnRef& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ColumnRef& from) { ColumnRef::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ColumnRef* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ColumnRef"; } protected: explicit ColumnRef(::google::protobuf::Arena* arena); ColumnRef(::google::protobuf::Arena* arena, const ColumnRef& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_fields(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_fields() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_fields(); public: const ::pg_query::Node& fields(int index) const; ::pg_query::Node* add_fields(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& fields() const; // int32 location = 2 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.ColumnRef) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > fields_; ::int32_t location_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CommentStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CommentStmt) */ { public: inline CommentStmt() : CommentStmt(nullptr) {} ~CommentStmt() override; template explicit PROTOBUF_CONSTEXPR CommentStmt(::google::protobuf::internal::ConstantInitialized); inline CommentStmt(const CommentStmt& from) : CommentStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CommentStmt& default_instance() { return *internal_default_instance(); } static inline const CommentStmt* internal_default_instance() { return reinterpret_cast( &_CommentStmt_default_instance_); } static constexpr int kIndexInFileMessages = 204; friend void swap(CommentStmt& a, CommentStmt& b) { a.Swap(&b); } inline void Swap(CommentStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CommentStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CommentStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CommentStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CommentStmt& from) { CommentStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CommentStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CommentStmt"; } protected: explicit CommentStmt(::google::protobuf::Arena* arena); CommentStmt(::google::protobuf::Arena* arena, const CommentStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_comment(Arg_&& arg, Args_... args); std::string* mutable_comment(); PROTOBUF_NODISCARD std::string* release_comment(); void set_allocated_comment(std::string* value); private: const std::string& _internal_comment() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_object() ; const ::pg_query::Node& object() const; PROTOBUF_NODISCARD ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* value); void unsafe_arena_set_allocated_object(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_object(); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 36, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr comment_; ::pg_query::Node* object_; int objtype_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CommonTableExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CommonTableExpr) */ { public: inline CommonTableExpr() : CommonTableExpr(nullptr) {} ~CommonTableExpr() override; template explicit PROTOBUF_CONSTEXPR CommonTableExpr(::google::protobuf::internal::ConstantInitialized); inline CommonTableExpr(const CommonTableExpr& from) : CommonTableExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CommonTableExpr& default_instance() { return *internal_default_instance(); } static inline const CommonTableExpr* internal_default_instance() { return reinterpret_cast( &_CommonTableExpr_default_instance_); } static constexpr int kIndexInFileMessages = 123; friend void swap(CommonTableExpr& a, CommonTableExpr& b) { a.Swap(&b); } inline void Swap(CommonTableExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CommonTableExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CommonTableExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CommonTableExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CommonTableExpr& from) { CommonTableExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CommonTableExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CommonTableExpr"; } protected: explicit CommonTableExpr(::google::protobuf::Arena* arena); CommonTableExpr(::google::protobuf::Arena* arena, const CommonTableExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kAliascolnamesFieldNumber = 2, kCtecolnamesFieldNumber = 10, kCtecoltypesFieldNumber = 11, kCtecoltypmodsFieldNumber = 12, kCtecolcollationsFieldNumber = 13, kCtenameFieldNumber = 1, kCtequeryFieldNumber = 4, kSearchClauseFieldNumber = 5, kCycleClauseFieldNumber = 6, kCtematerializedFieldNumber = 3, kLocationFieldNumber = 7, kCterecursiveFieldNumber = 8, kCterefcountFieldNumber = 9, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_aliascolnames(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_aliascolnames() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_aliascolnames(); public: const ::pg_query::Node& aliascolnames(int index) const; ::pg_query::Node* add_aliascolnames(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& aliascolnames() const; // repeated .pg_query.Node ctecolnames = 10 [json_name = "ctecolnames"]; int ctecolnames_size() const; private: int _internal_ctecolnames_size() const; public: void clear_ctecolnames() ; ::pg_query::Node* mutable_ctecolnames(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_ctecolnames(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_ctecolnames() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_ctecolnames(); public: const ::pg_query::Node& ctecolnames(int index) const; ::pg_query::Node* add_ctecolnames(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& ctecolnames() const; // repeated .pg_query.Node ctecoltypes = 11 [json_name = "ctecoltypes"]; int ctecoltypes_size() const; private: int _internal_ctecoltypes_size() const; public: void clear_ctecoltypes() ; ::pg_query::Node* mutable_ctecoltypes(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_ctecoltypes(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_ctecoltypes() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_ctecoltypes(); public: const ::pg_query::Node& ctecoltypes(int index) const; ::pg_query::Node* add_ctecoltypes(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& ctecoltypes() const; // repeated .pg_query.Node ctecoltypmods = 12 [json_name = "ctecoltypmods"]; int ctecoltypmods_size() const; private: int _internal_ctecoltypmods_size() const; public: void clear_ctecoltypmods() ; ::pg_query::Node* mutable_ctecoltypmods(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_ctecoltypmods(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_ctecoltypmods() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_ctecoltypmods(); public: const ::pg_query::Node& ctecoltypmods(int index) const; ::pg_query::Node* add_ctecoltypmods(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& ctecoltypmods() const; // repeated .pg_query.Node ctecolcollations = 13 [json_name = "ctecolcollations"]; int ctecolcollations_size() const; private: int _internal_ctecolcollations_size() const; public: void clear_ctecolcollations() ; ::pg_query::Node* mutable_ctecolcollations(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_ctecolcollations(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_ctecolcollations() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_ctecolcollations(); public: const ::pg_query::Node& ctecolcollations(int index) const; ::pg_query::Node* add_ctecolcollations(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& ctecolcollations() const; // string ctename = 1 [json_name = "ctename"]; void clear_ctename() ; const std::string& ctename() const; template void set_ctename(Arg_&& arg, Args_... args); std::string* mutable_ctename(); PROTOBUF_NODISCARD std::string* release_ctename(); void set_allocated_ctename(std::string* value); private: const std::string& _internal_ctename() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_ctequery() ; const ::pg_query::Node& ctequery() const; PROTOBUF_NODISCARD ::pg_query::Node* release_ctequery(); ::pg_query::Node* mutable_ctequery(); void set_allocated_ctequery(::pg_query::Node* value); void unsafe_arena_set_allocated_ctequery(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_ctequery(); private: const ::pg_query::Node& _internal_ctequery() const; ::pg_query::Node* _internal_mutable_ctequery(); public: // .pg_query.CTESearchClause search_clause = 5 [json_name = "search_clause"]; bool has_search_clause() const; void clear_search_clause() ; const ::pg_query::CTESearchClause& search_clause() const; PROTOBUF_NODISCARD ::pg_query::CTESearchClause* release_search_clause(); ::pg_query::CTESearchClause* mutable_search_clause(); void set_allocated_search_clause(::pg_query::CTESearchClause* value); void unsafe_arena_set_allocated_search_clause(::pg_query::CTESearchClause* value); ::pg_query::CTESearchClause* unsafe_arena_release_search_clause(); private: const ::pg_query::CTESearchClause& _internal_search_clause() const; ::pg_query::CTESearchClause* _internal_mutable_search_clause(); public: // .pg_query.CTECycleClause cycle_clause = 6 [json_name = "cycle_clause"]; bool has_cycle_clause() const; void clear_cycle_clause() ; const ::pg_query::CTECycleClause& cycle_clause() const; PROTOBUF_NODISCARD ::pg_query::CTECycleClause* release_cycle_clause(); ::pg_query::CTECycleClause* mutable_cycle_clause(); void set_allocated_cycle_clause(::pg_query::CTECycleClause* value); void unsafe_arena_set_allocated_cycle_clause(::pg_query::CTECycleClause* value); ::pg_query::CTECycleClause* unsafe_arena_release_cycle_clause(); private: const ::pg_query::CTECycleClause& _internal_cycle_clause() const; ::pg_query::CTECycleClause* _internal_mutable_cycle_clause(); public: // .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 = 7 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // bool cterecursive = 8 [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 = 9 [json_name = "cterefcount"]; void clear_cterefcount() ; ::int32_t cterefcount() const; void set_cterefcount(::int32_t value); private: ::int32_t _internal_cterefcount() const; void _internal_set_cterefcount(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.CommonTableExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 13, 8, 48, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > aliascolnames_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > ctecolnames_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > ctecoltypes_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > ctecoltypmods_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > ctecolcollations_; ::google::protobuf::internal::ArenaStringPtr ctename_; ::pg_query::Node* ctequery_; ::pg_query::CTESearchClause* search_clause_; ::pg_query::CTECycleClause* cycle_clause_; int ctematerialized_; ::int32_t location_; bool cterecursive_; ::int32_t cterefcount_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CompositeTypeStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CompositeTypeStmt) */ { public: inline CompositeTypeStmt() : CompositeTypeStmt(nullptr) {} ~CompositeTypeStmt() override; template explicit PROTOBUF_CONSTEXPR CompositeTypeStmt(::google::protobuf::internal::ConstantInitialized); inline CompositeTypeStmt(const CompositeTypeStmt& from) : CompositeTypeStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CompositeTypeStmt& default_instance() { return *internal_default_instance(); } static inline const CompositeTypeStmt* internal_default_instance() { return reinterpret_cast( &_CompositeTypeStmt_default_instance_); } static constexpr int kIndexInFileMessages = 231; friend void swap(CompositeTypeStmt& a, CompositeTypeStmt& b) { a.Swap(&b); } inline void Swap(CompositeTypeStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CompositeTypeStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CompositeTypeStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CompositeTypeStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CompositeTypeStmt& from) { CompositeTypeStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CompositeTypeStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CompositeTypeStmt"; } protected: explicit CompositeTypeStmt(::google::protobuf::Arena* arena); CompositeTypeStmt(::google::protobuf::Arena* arena, const CompositeTypeStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_coldeflist(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_coldeflist() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_coldeflist(); public: const ::pg_query::Node& coldeflist(int index) const; ::pg_query::Node* add_coldeflist(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& coldeflist() const; // .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; bool has_typevar() const; void clear_typevar() ; const ::pg_query::RangeVar& typevar() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_typevar(); ::pg_query::RangeVar* mutable_typevar(); void set_allocated_typevar(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_typevar(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_typevar(); private: const ::pg_query::RangeVar& _internal_typevar() const; ::pg_query::RangeVar* _internal_mutable_typevar(); public: // @@protoc_insertion_point(class_scope:pg_query.CompositeTypeStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > coldeflist_; ::pg_query::RangeVar* typevar_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class Constraint final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.Constraint) */ { public: inline Constraint() : Constraint(nullptr) {} ~Constraint() override; template explicit PROTOBUF_CONSTEXPR Constraint(::google::protobuf::internal::ConstantInitialized); inline Constraint(const Constraint& from) : Constraint(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const Constraint& default_instance() { return *internal_default_instance(); } static inline const Constraint* internal_default_instance() { return reinterpret_cast( &_Constraint_default_instance_); } static constexpr int kIndexInFileMessages = 166; friend void swap(Constraint& a, Constraint& b) { a.Swap(&b); } inline void Swap(Constraint* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Constraint* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Constraint* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const Constraint& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const Constraint& from) { Constraint::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(Constraint* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.Constraint"; } protected: explicit Constraint(::google::protobuf::Arena* arena); Constraint(::google::protobuf::Arena* arena, const Constraint& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kKeysFieldNumber = 13, kIncludingFieldNumber = 14, kExclusionsFieldNumber = 15, kOptionsFieldNumber = 16, kFkAttrsFieldNumber = 23, kPkAttrsFieldNumber = 24, kFkDelSetColsFieldNumber = 28, kOldConpfeqopFieldNumber = 29, kConnameFieldNumber = 2, kCookedExprFieldNumber = 9, kGeneratedWhenFieldNumber = 10, kIndexnameFieldNumber = 17, kIndexspaceFieldNumber = 18, kAccessMethodFieldNumber = 20, kFkMatchtypeFieldNumber = 25, kFkUpdActionFieldNumber = 26, kFkDelActionFieldNumber = 27, kRawExprFieldNumber = 8, kWhereClauseFieldNumber = 21, kPktableFieldNumber = 22, kContypeFieldNumber = 1, kDeferrableFieldNumber = 3, kInitdeferredFieldNumber = 4, kSkipValidationFieldNumber = 5, kInitiallyValidFieldNumber = 6, kInhcountFieldNumber = 11, kIsNoInheritFieldNumber = 7, kNullsNotDistinctFieldNumber = 12, kResetDefaultTblspcFieldNumber = 19, kOldPktableOidFieldNumber = 30, kLocationFieldNumber = 31, }; // repeated .pg_query.Node keys = 13 [json_name = "keys"]; int keys_size() const; private: int _internal_keys_size() const; public: void clear_keys() ; ::pg_query::Node* mutable_keys(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_keys(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_keys() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_keys(); public: const ::pg_query::Node& keys(int index) const; ::pg_query::Node* add_keys(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& keys() const; // repeated .pg_query.Node including = 14 [json_name = "including"]; int including_size() const; private: int _internal_including_size() const; public: void clear_including() ; ::pg_query::Node* mutable_including(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_including(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_including() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_including(); public: const ::pg_query::Node& including(int index) const; ::pg_query::Node* add_including(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& including() const; // repeated .pg_query.Node exclusions = 15 [json_name = "exclusions"]; int exclusions_size() const; private: int _internal_exclusions_size() const; public: void clear_exclusions() ; ::pg_query::Node* mutable_exclusions(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_exclusions(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_exclusions() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_exclusions(); public: const ::pg_query::Node& exclusions(int index) const; ::pg_query::Node* add_exclusions(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& exclusions() const; // repeated .pg_query.Node options = 16 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options() ; ::pg_query::Node* mutable_options(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // repeated .pg_query.Node fk_attrs = 23 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_fk_attrs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_fk_attrs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_fk_attrs(); public: const ::pg_query::Node& fk_attrs(int index) const; ::pg_query::Node* add_fk_attrs(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& fk_attrs() const; // repeated .pg_query.Node pk_attrs = 24 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_pk_attrs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_pk_attrs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_pk_attrs(); public: const ::pg_query::Node& pk_attrs(int index) const; ::pg_query::Node* add_pk_attrs(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& pk_attrs() const; // repeated .pg_query.Node fk_del_set_cols = 28 [json_name = "fk_del_set_cols"]; int fk_del_set_cols_size() const; private: int _internal_fk_del_set_cols_size() const; public: void clear_fk_del_set_cols() ; ::pg_query::Node* mutable_fk_del_set_cols(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_fk_del_set_cols(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_fk_del_set_cols() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_fk_del_set_cols(); public: const ::pg_query::Node& fk_del_set_cols(int index) const; ::pg_query::Node* add_fk_del_set_cols(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& fk_del_set_cols() const; // repeated .pg_query.Node old_conpfeqop = 29 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_old_conpfeqop(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_old_conpfeqop() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_old_conpfeqop(); public: const ::pg_query::Node& old_conpfeqop(int index) const; ::pg_query::Node* add_old_conpfeqop(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& old_conpfeqop() const; // string conname = 2 [json_name = "conname"]; void clear_conname() ; const std::string& conname() const; template void set_conname(Arg_&& arg, Args_... args); std::string* mutable_conname(); PROTOBUF_NODISCARD std::string* release_conname(); void set_allocated_conname(std::string* value); private: const std::string& _internal_conname() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_conname( const std::string& value); std::string* _internal_mutable_conname(); public: // string cooked_expr = 9 [json_name = "cooked_expr"]; void clear_cooked_expr() ; const std::string& cooked_expr() const; template void set_cooked_expr(Arg_&& arg, Args_... args); std::string* mutable_cooked_expr(); PROTOBUF_NODISCARD std::string* release_cooked_expr(); void set_allocated_cooked_expr(std::string* value); private: const std::string& _internal_cooked_expr() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_cooked_expr( const std::string& value); std::string* _internal_mutable_cooked_expr(); public: // string generated_when = 10 [json_name = "generated_when"]; void clear_generated_when() ; const std::string& generated_when() const; template void set_generated_when(Arg_&& arg, Args_... args); std::string* mutable_generated_when(); PROTOBUF_NODISCARD std::string* release_generated_when(); void set_allocated_generated_when(std::string* value); private: const std::string& _internal_generated_when() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_generated_when( const std::string& value); std::string* _internal_mutable_generated_when(); public: // string indexname = 17 [json_name = "indexname"]; void clear_indexname() ; const std::string& indexname() const; template void set_indexname(Arg_&& arg, Args_... args); std::string* mutable_indexname(); PROTOBUF_NODISCARD std::string* release_indexname(); void set_allocated_indexname(std::string* value); private: const std::string& _internal_indexname() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_indexname( const std::string& value); std::string* _internal_mutable_indexname(); public: // string indexspace = 18 [json_name = "indexspace"]; void clear_indexspace() ; const std::string& indexspace() const; template void set_indexspace(Arg_&& arg, Args_... args); std::string* mutable_indexspace(); PROTOBUF_NODISCARD std::string* release_indexspace(); void set_allocated_indexspace(std::string* value); private: const std::string& _internal_indexspace() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_indexspace( const std::string& value); std::string* _internal_mutable_indexspace(); public: // string access_method = 20 [json_name = "access_method"]; void clear_access_method() ; const std::string& access_method() const; template void set_access_method(Arg_&& arg, Args_... args); std::string* mutable_access_method(); PROTOBUF_NODISCARD std::string* release_access_method(); void set_allocated_access_method(std::string* value); private: const std::string& _internal_access_method() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_access_method( const std::string& value); std::string* _internal_mutable_access_method(); public: // string fk_matchtype = 25 [json_name = "fk_matchtype"]; void clear_fk_matchtype() ; const std::string& fk_matchtype() const; template void set_fk_matchtype(Arg_&& arg, Args_... args); std::string* mutable_fk_matchtype(); PROTOBUF_NODISCARD std::string* release_fk_matchtype(); void set_allocated_fk_matchtype(std::string* value); private: const std::string& _internal_fk_matchtype() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_fk_matchtype( const std::string& value); std::string* _internal_mutable_fk_matchtype(); public: // string fk_upd_action = 26 [json_name = "fk_upd_action"]; void clear_fk_upd_action() ; const std::string& fk_upd_action() const; template void set_fk_upd_action(Arg_&& arg, Args_... args); std::string* mutable_fk_upd_action(); PROTOBUF_NODISCARD std::string* release_fk_upd_action(); void set_allocated_fk_upd_action(std::string* value); private: const std::string& _internal_fk_upd_action() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_fk_upd_action( const std::string& value); std::string* _internal_mutable_fk_upd_action(); public: // string fk_del_action = 27 [json_name = "fk_del_action"]; void clear_fk_del_action() ; const std::string& fk_del_action() const; template void set_fk_del_action(Arg_&& arg, Args_... args); std::string* mutable_fk_del_action(); PROTOBUF_NODISCARD std::string* release_fk_del_action(); void set_allocated_fk_del_action(std::string* value); private: const std::string& _internal_fk_del_action() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_fk_del_action( const std::string& value); std::string* _internal_mutable_fk_del_action(); public: // .pg_query.Node raw_expr = 8 [json_name = "raw_expr"]; bool has_raw_expr() const; void clear_raw_expr() ; const ::pg_query::Node& raw_expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_raw_expr(); ::pg_query::Node* mutable_raw_expr(); void set_allocated_raw_expr(::pg_query::Node* value); void unsafe_arena_set_allocated_raw_expr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_raw_expr(); private: const ::pg_query::Node& _internal_raw_expr() const; ::pg_query::Node* _internal_mutable_raw_expr(); public: // .pg_query.Node where_clause = 21 [json_name = "where_clause"]; bool has_where_clause() const; void clear_where_clause() ; const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* value); void unsafe_arena_set_allocated_where_clause(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_where_clause(); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: // .pg_query.RangeVar pktable = 22 [json_name = "pktable"]; bool has_pktable() const; void clear_pktable() ; const ::pg_query::RangeVar& pktable() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_pktable(); ::pg_query::RangeVar* mutable_pktable(); void set_allocated_pktable(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_pktable(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_pktable(); private: const ::pg_query::RangeVar& _internal_pktable() const; ::pg_query::RangeVar* _internal_mutable_pktable(); public: // .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: // 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 skip_validation = 5 [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 = 6 [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: // int32 inhcount = 11 [json_name = "inhcount"]; void clear_inhcount() ; ::int32_t inhcount() const; void set_inhcount(::int32_t value); private: ::int32_t _internal_inhcount() const; void _internal_set_inhcount(::int32_t value); public: // bool is_no_inherit = 7 [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 nulls_not_distinct = 12 [json_name = "nulls_not_distinct"]; void clear_nulls_not_distinct() ; bool nulls_not_distinct() const; void set_nulls_not_distinct(bool value); private: bool _internal_nulls_not_distinct() const; void _internal_set_nulls_not_distinct(bool value); public: // bool reset_default_tblspc = 19 [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 = 30 [json_name = "old_pktable_oid"]; void clear_old_pktable_oid() ; ::uint32_t old_pktable_oid() const; void set_old_pktable_oid(::uint32_t value); private: ::uint32_t _internal_old_pktable_oid() const; void _internal_set_old_pktable_oid(::uint32_t value); public: // int32 location = 31 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.Constraint) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 5, 31, 11, 154, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > keys_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > including_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > exclusions_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > fk_attrs_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > pk_attrs_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > fk_del_set_cols_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > old_conpfeqop_; ::google::protobuf::internal::ArenaStringPtr conname_; ::google::protobuf::internal::ArenaStringPtr cooked_expr_; ::google::protobuf::internal::ArenaStringPtr generated_when_; ::google::protobuf::internal::ArenaStringPtr indexname_; ::google::protobuf::internal::ArenaStringPtr indexspace_; ::google::protobuf::internal::ArenaStringPtr access_method_; ::google::protobuf::internal::ArenaStringPtr fk_matchtype_; ::google::protobuf::internal::ArenaStringPtr fk_upd_action_; ::google::protobuf::internal::ArenaStringPtr fk_del_action_; ::pg_query::Node* raw_expr_; ::pg_query::Node* where_clause_; ::pg_query::RangeVar* pktable_; int contype_; bool deferrable_; bool initdeferred_; bool skip_validation_; bool initially_valid_; ::int32_t inhcount_; bool is_no_inherit_; bool nulls_not_distinct_; bool reset_default_tblspc_; ::uint32_t old_pktable_oid_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ConstraintsSetStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ConstraintsSetStmt) */ { public: inline ConstraintsSetStmt() : ConstraintsSetStmt(nullptr) {} ~ConstraintsSetStmt() override; template explicit PROTOBUF_CONSTEXPR ConstraintsSetStmt(::google::protobuf::internal::ConstantInitialized); inline ConstraintsSetStmt(const ConstraintsSetStmt& from) : ConstraintsSetStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ConstraintsSetStmt& default_instance() { return *internal_default_instance(); } static inline const ConstraintsSetStmt* internal_default_instance() { return reinterpret_cast( &_ConstraintsSetStmt_default_instance_); } static constexpr int kIndexInFileMessages = 252; friend void swap(ConstraintsSetStmt& a, ConstraintsSetStmt& b) { a.Swap(&b); } inline void Swap(ConstraintsSetStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ConstraintsSetStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ConstraintsSetStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ConstraintsSetStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ConstraintsSetStmt& from) { ConstraintsSetStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ConstraintsSetStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ConstraintsSetStmt"; } protected: explicit ConstraintsSetStmt(::google::protobuf::Arena* arena); ConstraintsSetStmt(::google::protobuf::Arena* arena, const ConstraintsSetStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_constraints(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_constraints() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_constraints(); public: const ::pg_query::Node& constraints(int index) const; ::pg_query::Node* add_constraints(); const ::google::protobuf::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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > constraints_; bool deferred_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ConvertRowtypeExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ConvertRowtypeExpr) */ { public: inline ConvertRowtypeExpr() : ConvertRowtypeExpr(nullptr) {} ~ConvertRowtypeExpr() override; template explicit PROTOBUF_CONSTEXPR ConvertRowtypeExpr(::google::protobuf::internal::ConstantInitialized); inline ConvertRowtypeExpr(const ConvertRowtypeExpr& from) : ConvertRowtypeExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ConvertRowtypeExpr& default_instance() { return *internal_default_instance(); } static inline const ConvertRowtypeExpr* internal_default_instance() { return reinterpret_cast( &_ConvertRowtypeExpr_default_instance_); } static constexpr int kIndexInFileMessages = 39; friend void swap(ConvertRowtypeExpr& a, ConvertRowtypeExpr& b) { a.Swap(&b); } inline void Swap(ConvertRowtypeExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ConvertRowtypeExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ConvertRowtypeExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ConvertRowtypeExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ConvertRowtypeExpr& from) { ConvertRowtypeExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ConvertRowtypeExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ConvertRowtypeExpr"; } protected: explicit ConvertRowtypeExpr(::google::protobuf::Arena* arena); ConvertRowtypeExpr(::google::protobuf::Arena* arena, const ConvertRowtypeExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // uint32 resulttype = 3 [json_name = "resulttype"]; void clear_resulttype() ; ::uint32_t resulttype() const; void set_resulttype(::uint32_t value); private: ::uint32_t _internal_resulttype() const; void _internal_set_resulttype(::uint32_t 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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.ConvertRowtypeExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::uint32_t resulttype_; int convertformat_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CopyStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CopyStmt) */ { public: inline CopyStmt() : CopyStmt(nullptr) {} ~CopyStmt() override; template explicit PROTOBUF_CONSTEXPR CopyStmt(::google::protobuf::internal::ConstantInitialized); inline CopyStmt(const CopyStmt& from) : CopyStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CopyStmt& default_instance() { return *internal_default_instance(); } static inline const CopyStmt* internal_default_instance() { return reinterpret_cast( &_CopyStmt_default_instance_); } static constexpr int kIndexInFileMessages = 162; friend void swap(CopyStmt& a, CopyStmt& b) { a.Swap(&b); } inline void Swap(CopyStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CopyStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CopyStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CopyStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CopyStmt& from) { CopyStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CopyStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CopyStmt"; } protected: explicit CopyStmt(::google::protobuf::Arena* arena); CopyStmt(::google::protobuf::Arena* arena, const CopyStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_attlist(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_attlist() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_attlist(); public: const ::pg_query::Node& attlist(int index) const; ::pg_query::Node* add_attlist(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string filename = 6 [json_name = "filename"]; void clear_filename() ; const std::string& filename() const; template void set_filename(Arg_&& arg, Args_... args); std::string* mutable_filename(); PROTOBUF_NODISCARD std::string* release_filename(); void set_allocated_filename(std::string* value); private: const std::string& _internal_filename() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .pg_query.Node query = 2 [json_name = "query"]; bool has_query() const; void clear_query() ; const ::pg_query::Node& query() const; PROTOBUF_NODISCARD ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* value); void unsafe_arena_set_allocated_query(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_query(); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; bool has_where_clause() const; void clear_where_clause() ; const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* value); void unsafe_arena_set_allocated_where_clause(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_where_clause(); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: // 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 5, 42, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > attlist_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr filename_; ::pg_query::RangeVar* relation_; ::pg_query::Node* query_; ::pg_query::Node* where_clause_; bool is_from_; bool is_program_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateAmStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateAmStmt) */ { public: inline CreateAmStmt() : CreateAmStmt(nullptr) {} ~CreateAmStmt() override; template explicit PROTOBUF_CONSTEXPR CreateAmStmt(::google::protobuf::internal::ConstantInitialized); inline CreateAmStmt(const CreateAmStmt& from) : CreateAmStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateAmStmt& default_instance() { return *internal_default_instance(); } static inline const CreateAmStmt* internal_default_instance() { return reinterpret_cast( &_CreateAmStmt_default_instance_); } static constexpr int kIndexInFileMessages = 185; friend void swap(CreateAmStmt& a, CreateAmStmt& b) { a.Swap(&b); } inline void Swap(CreateAmStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateAmStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateAmStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateAmStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateAmStmt& from) { CreateAmStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateAmStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateAmStmt"; } protected: explicit CreateAmStmt(::google::protobuf::Arena* arena); CreateAmStmt(::google::protobuf::Arena* arena, const CreateAmStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_handler_name(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_handler_name() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_handler_name(); public: const ::pg_query::Node& handler_name(int index) const; ::pg_query::Node* add_handler_name(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& handler_name() const; // string amname = 1 [json_name = "amname"]; void clear_amname() ; const std::string& amname() const; template void set_amname(Arg_&& arg, Args_... args); std::string* mutable_amname(); PROTOBUF_NODISCARD std::string* release_amname(); void set_allocated_amname(std::string* value); private: const std::string& _internal_amname() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_amtype(Arg_&& arg, Args_... args); std::string* mutable_amtype(); PROTOBUF_NODISCARD std::string* release_amtype(); void set_allocated_amtype(std::string* value); private: const std::string& _internal_amtype() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 42, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > handler_name_; ::google::protobuf::internal::ArenaStringPtr amname_; ::google::protobuf::internal::ArenaStringPtr amtype_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateCastStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateCastStmt) */ { public: inline CreateCastStmt() : CreateCastStmt(nullptr) {} ~CreateCastStmt() override; template explicit PROTOBUF_CONSTEXPR CreateCastStmt(::google::protobuf::internal::ConstantInitialized); inline CreateCastStmt(const CreateCastStmt& from) : CreateCastStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateCastStmt& default_instance() { return *internal_default_instance(); } static inline const CreateCastStmt* internal_default_instance() { return reinterpret_cast( &_CreateCastStmt_default_instance_); } static constexpr int kIndexInFileMessages = 255; friend void swap(CreateCastStmt& a, CreateCastStmt& b) { a.Swap(&b); } inline void Swap(CreateCastStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateCastStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateCastStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateCastStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateCastStmt& from) { CreateCastStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateCastStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateCastStmt"; } protected: explicit CreateCastStmt(::google::protobuf::Arena* arena); CreateCastStmt(::google::protobuf::Arena* arena, const CreateCastStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_sourcetype() ; const ::pg_query::TypeName& sourcetype() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_sourcetype(); ::pg_query::TypeName* mutable_sourcetype(); void set_allocated_sourcetype(::pg_query::TypeName* value); void unsafe_arena_set_allocated_sourcetype(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_sourcetype(); private: const ::pg_query::TypeName& _internal_sourcetype() const; ::pg_query::TypeName* _internal_mutable_sourcetype(); public: // .pg_query.TypeName targettype = 2 [json_name = "targettype"]; bool has_targettype() const; void clear_targettype() ; const ::pg_query::TypeName& targettype() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_targettype(); ::pg_query::TypeName* mutable_targettype(); void set_allocated_targettype(::pg_query::TypeName* value); void unsafe_arena_set_allocated_targettype(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_targettype(); private: const ::pg_query::TypeName& _internal_targettype() const; ::pg_query::TypeName* _internal_mutable_targettype(); public: // .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; bool has_func() const; void clear_func() ; const ::pg_query::ObjectWithArgs& func() const; PROTOBUF_NODISCARD ::pg_query::ObjectWithArgs* release_func(); ::pg_query::ObjectWithArgs* mutable_func(); void set_allocated_func(::pg_query::ObjectWithArgs* value); void unsafe_arena_set_allocated_func(::pg_query::ObjectWithArgs* value); ::pg_query::ObjectWithArgs* unsafe_arena_release_func(); private: const ::pg_query::ObjectWithArgs& _internal_func() const; ::pg_query::ObjectWithArgs* _internal_mutable_func(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::TypeName* sourcetype_; ::pg_query::TypeName* targettype_; ::pg_query::ObjectWithArgs* func_; int context_; bool inout_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateConversionStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateConversionStmt) */ { public: inline CreateConversionStmt() : CreateConversionStmt(nullptr) {} ~CreateConversionStmt() override; template explicit PROTOBUF_CONSTEXPR CreateConversionStmt(::google::protobuf::internal::ConstantInitialized); inline CreateConversionStmt(const CreateConversionStmt& from) : CreateConversionStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateConversionStmt& default_instance() { return *internal_default_instance(); } static inline const CreateConversionStmt* internal_default_instance() { return reinterpret_cast( &_CreateConversionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 254; friend void swap(CreateConversionStmt& a, CreateConversionStmt& b) { a.Swap(&b); } inline void Swap(CreateConversionStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateConversionStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateConversionStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateConversionStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateConversionStmt& from) { CreateConversionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateConversionStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateConversionStmt"; } protected: explicit CreateConversionStmt(::google::protobuf::Arena* arena); CreateConversionStmt(::google::protobuf::Arena* arena, const CreateConversionStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_conversion_name(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_conversion_name() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_conversion_name(); public: const ::pg_query::Node& conversion_name(int index) const; ::pg_query::Node* add_conversion_name(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_func_name(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_func_name() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_func_name(); public: const ::pg_query::Node& func_name(int index) const; ::pg_query::Node* add_func_name(); const ::google::protobuf::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; template void set_for_encoding_name(Arg_&& arg, Args_... args); std::string* mutable_for_encoding_name(); PROTOBUF_NODISCARD std::string* release_for_encoding_name(); void set_allocated_for_encoding_name(std::string* value); private: const std::string& _internal_for_encoding_name() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_to_encoding_name(Arg_&& arg, Args_... args); std::string* mutable_to_encoding_name(); PROTOBUF_NODISCARD std::string* release_to_encoding_name(); void set_allocated_to_encoding_name(std::string* value); private: const std::string& _internal_to_encoding_name() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 71, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > conversion_name_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > func_name_; ::google::protobuf::internal::ArenaStringPtr for_encoding_name_; ::google::protobuf::internal::ArenaStringPtr to_encoding_name_; bool def_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateDomainStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateDomainStmt) */ { public: inline CreateDomainStmt() : CreateDomainStmt(nullptr) {} ~CreateDomainStmt() override; template explicit PROTOBUF_CONSTEXPR CreateDomainStmt(::google::protobuf::internal::ConstantInitialized); inline CreateDomainStmt(const CreateDomainStmt& from) : CreateDomainStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateDomainStmt& default_instance() { return *internal_default_instance(); } static inline const CreateDomainStmt* internal_default_instance() { return reinterpret_cast( &_CreateDomainStmt_default_instance_); } static constexpr int kIndexInFileMessages = 197; friend void swap(CreateDomainStmt& a, CreateDomainStmt& b) { a.Swap(&b); } inline void Swap(CreateDomainStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateDomainStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateDomainStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateDomainStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateDomainStmt& from) { CreateDomainStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateDomainStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateDomainStmt"; } protected: explicit CreateDomainStmt(::google::protobuf::Arena* arena); CreateDomainStmt(::google::protobuf::Arena* arena, const CreateDomainStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_domainname(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_domainname() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_domainname(); public: const ::pg_query::Node& domainname(int index) const; ::pg_query::Node* add_domainname(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_constraints(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_constraints() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_constraints(); public: const ::pg_query::Node& constraints(int index) const; ::pg_query::Node* add_constraints(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& constraints() const; // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; bool has_type_name() const; void clear_type_name() ; const ::pg_query::TypeName& type_name() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* value); void unsafe_arena_set_allocated_type_name(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_type_name(); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: // .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; bool has_coll_clause() const; void clear_coll_clause() ; const ::pg_query::CollateClause& coll_clause() const; PROTOBUF_NODISCARD ::pg_query::CollateClause* release_coll_clause(); ::pg_query::CollateClause* mutable_coll_clause(); void set_allocated_coll_clause(::pg_query::CollateClause* value); void unsafe_arena_set_allocated_coll_clause(::pg_query::CollateClause* value); ::pg_query::CollateClause* unsafe_arena_release_coll_clause(); private: const ::pg_query::CollateClause& _internal_coll_clause() const; ::pg_query::CollateClause* _internal_mutable_coll_clause(); public: // @@protoc_insertion_point(class_scope:pg_query.CreateDomainStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 4, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > domainname_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > constraints_; ::pg_query::TypeName* type_name_; ::pg_query::CollateClause* coll_clause_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateEnumStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateEnumStmt) */ { public: inline CreateEnumStmt() : CreateEnumStmt(nullptr) {} ~CreateEnumStmt() override; template explicit PROTOBUF_CONSTEXPR CreateEnumStmt(::google::protobuf::internal::ConstantInitialized); inline CreateEnumStmt(const CreateEnumStmt& from) : CreateEnumStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateEnumStmt& default_instance() { return *internal_default_instance(); } static inline const CreateEnumStmt* internal_default_instance() { return reinterpret_cast( &_CreateEnumStmt_default_instance_); } static constexpr int kIndexInFileMessages = 232; friend void swap(CreateEnumStmt& a, CreateEnumStmt& b) { a.Swap(&b); } inline void Swap(CreateEnumStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateEnumStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateEnumStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateEnumStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateEnumStmt& from) { CreateEnumStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateEnumStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateEnumStmt"; } protected: explicit CreateEnumStmt(::google::protobuf::Arena* arena); CreateEnumStmt(::google::protobuf::Arena* arena, const CreateEnumStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_type_name() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_vals(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_vals() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_vals(); public: const ::pg_query::Node& vals(int index) const; ::pg_query::Node* add_vals(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& vals() const; // @@protoc_insertion_point(class_scope:pg_query.CreateEnumStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > type_name_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > vals_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateEventTrigStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateEventTrigStmt) */ { public: inline CreateEventTrigStmt() : CreateEventTrigStmt(nullptr) {} ~CreateEventTrigStmt() override; template explicit PROTOBUF_CONSTEXPR CreateEventTrigStmt(::google::protobuf::internal::ConstantInitialized); inline CreateEventTrigStmt(const CreateEventTrigStmt& from) : CreateEventTrigStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateEventTrigStmt& default_instance() { return *internal_default_instance(); } static inline const CreateEventTrigStmt* internal_default_instance() { return reinterpret_cast( &_CreateEventTrigStmt_default_instance_); } static constexpr int kIndexInFileMessages = 187; friend void swap(CreateEventTrigStmt& a, CreateEventTrigStmt& b) { a.Swap(&b); } inline void Swap(CreateEventTrigStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateEventTrigStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateEventTrigStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateEventTrigStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateEventTrigStmt& from) { CreateEventTrigStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateEventTrigStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateEventTrigStmt"; } protected: explicit CreateEventTrigStmt(::google::protobuf::Arena* arena); CreateEventTrigStmt(::google::protobuf::Arena* arena, const CreateEventTrigStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_whenclause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_whenclause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_whenclause(); public: const ::pg_query::Node& whenclause(int index) const; ::pg_query::Node* add_whenclause(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_funcname(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_funcname() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_funcname(); public: const ::pg_query::Node& funcname(int index) const; ::pg_query::Node* add_funcname(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& funcname() const; // string trigname = 1 [json_name = "trigname"]; void clear_trigname() ; const std::string& trigname() const; template void set_trigname(Arg_&& arg, Args_... args); std::string* mutable_trigname(); PROTOBUF_NODISCARD std::string* release_trigname(); void set_allocated_trigname(std::string* value); private: const std::string& _internal_trigname() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_eventname(Arg_&& arg, Args_... args); std::string* mutable_eventname(); PROTOBUF_NODISCARD std::string* release_eventname(); void set_allocated_eventname(std::string* value); private: const std::string& _internal_eventname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 54, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > whenclause_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > funcname_; ::google::protobuf::internal::ArenaStringPtr trigname_; ::google::protobuf::internal::ArenaStringPtr eventname_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateExtensionStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateExtensionStmt) */ { public: inline CreateExtensionStmt() : CreateExtensionStmt(nullptr) {} ~CreateExtensionStmt() override; template explicit PROTOBUF_CONSTEXPR CreateExtensionStmt(::google::protobuf::internal::ConstantInitialized); inline CreateExtensionStmt(const CreateExtensionStmt& from) : CreateExtensionStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateExtensionStmt& default_instance() { return *internal_default_instance(); } static inline const CreateExtensionStmt* internal_default_instance() { return reinterpret_cast( &_CreateExtensionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 171; friend void swap(CreateExtensionStmt& a, CreateExtensionStmt& b) { a.Swap(&b); } inline void Swap(CreateExtensionStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateExtensionStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateExtensionStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateExtensionStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateExtensionStmt& from) { CreateExtensionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateExtensionStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateExtensionStmt"; } protected: explicit CreateExtensionStmt(::google::protobuf::Arena* arena); CreateExtensionStmt(::google::protobuf::Arena* arena, const CreateExtensionStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string extname = 1 [json_name = "extname"]; void clear_extname() ; const std::string& extname() const; template void set_extname(Arg_&& arg, Args_... args); std::string* mutable_extname(); PROTOBUF_NODISCARD std::string* release_extname(); void set_allocated_extname(std::string* value); private: const std::string& _internal_extname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 44, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr extname_; bool if_not_exists_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateFdwStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateFdwStmt) */ { public: inline CreateFdwStmt() : CreateFdwStmt(nullptr) {} ~CreateFdwStmt() override; template explicit PROTOBUF_CONSTEXPR CreateFdwStmt(::google::protobuf::internal::ConstantInitialized); inline CreateFdwStmt(const CreateFdwStmt& from) : CreateFdwStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateFdwStmt& default_instance() { return *internal_default_instance(); } static inline const CreateFdwStmt* internal_default_instance() { return reinterpret_cast( &_CreateFdwStmt_default_instance_); } static constexpr int kIndexInFileMessages = 174; friend void swap(CreateFdwStmt& a, CreateFdwStmt& b) { a.Swap(&b); } inline void Swap(CreateFdwStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateFdwStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateFdwStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateFdwStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateFdwStmt& from) { CreateFdwStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateFdwStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateFdwStmt"; } protected: explicit CreateFdwStmt(::google::protobuf::Arena* arena); CreateFdwStmt(::google::protobuf::Arena* arena, const CreateFdwStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_func_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_func_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_func_options(); public: const ::pg_query::Node& func_options(int index) const; ::pg_query::Node* add_func_options(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string fdwname = 1 [json_name = "fdwname"]; void clear_fdwname() ; const std::string& fdwname() const; template void set_fdwname(Arg_&& arg, Args_... args); std::string* mutable_fdwname(); PROTOBUF_NODISCARD std::string* release_fdwname(); void set_allocated_fdwname(std::string* value); private: const std::string& _internal_fdwname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 38, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > func_options_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr fdwname_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateForeignServerStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateForeignServerStmt) */ { public: inline CreateForeignServerStmt() : CreateForeignServerStmt(nullptr) {} ~CreateForeignServerStmt() override; template explicit PROTOBUF_CONSTEXPR CreateForeignServerStmt(::google::protobuf::internal::ConstantInitialized); inline CreateForeignServerStmt(const CreateForeignServerStmt& from) : CreateForeignServerStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateForeignServerStmt& default_instance() { return *internal_default_instance(); } static inline const CreateForeignServerStmt* internal_default_instance() { return reinterpret_cast( &_CreateForeignServerStmt_default_instance_); } static constexpr int kIndexInFileMessages = 176; friend void swap(CreateForeignServerStmt& a, CreateForeignServerStmt& b) { a.Swap(&b); } inline void Swap(CreateForeignServerStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateForeignServerStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateForeignServerStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateForeignServerStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateForeignServerStmt& from) { CreateForeignServerStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateForeignServerStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateForeignServerStmt"; } protected: explicit CreateForeignServerStmt(::google::protobuf::Arena* arena); CreateForeignServerStmt(::google::protobuf::Arena* arena, const CreateForeignServerStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 1 [json_name = "servername"]; void clear_servername() ; const std::string& servername() const; template void set_servername(Arg_&& arg, Args_... args); std::string* mutable_servername(); PROTOBUF_NODISCARD std::string* release_servername(); void set_allocated_servername(std::string* value); private: const std::string& _internal_servername() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_servertype(Arg_&& arg, Args_... args); std::string* mutable_servertype(); PROTOBUF_NODISCARD std::string* release_servertype(); void set_allocated_servertype(std::string* value); private: const std::string& _internal_servertype() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_version(Arg_&& arg, Args_... args); std::string* mutable_version(); PROTOBUF_NODISCARD std::string* release_version(); void set_allocated_version(std::string* value); private: const std::string& _internal_version() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_fdwname(Arg_&& arg, Args_... args); std::string* mutable_fdwname(); PROTOBUF_NODISCARD std::string* release_fdwname(); void set_allocated_fdwname(std::string* value); private: const std::string& _internal_fdwname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 1, 75, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr servername_; ::google::protobuf::internal::ArenaStringPtr servertype_; ::google::protobuf::internal::ArenaStringPtr version_; ::google::protobuf::internal::ArenaStringPtr fdwname_; bool if_not_exists_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateForeignTableStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateForeignTableStmt) */ { public: inline CreateForeignTableStmt() : CreateForeignTableStmt(nullptr) {} ~CreateForeignTableStmt() override; template explicit PROTOBUF_CONSTEXPR CreateForeignTableStmt(::google::protobuf::internal::ConstantInitialized); inline CreateForeignTableStmt(const CreateForeignTableStmt& from) : CreateForeignTableStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateForeignTableStmt& default_instance() { return *internal_default_instance(); } static inline const CreateForeignTableStmt* internal_default_instance() { return reinterpret_cast( &_CreateForeignTableStmt_default_instance_); } static constexpr int kIndexInFileMessages = 178; friend void swap(CreateForeignTableStmt& a, CreateForeignTableStmt& b) { a.Swap(&b); } inline void Swap(CreateForeignTableStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateForeignTableStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateForeignTableStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateForeignTableStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateForeignTableStmt& from) { CreateForeignTableStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateForeignTableStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateForeignTableStmt"; } protected: explicit CreateForeignTableStmt(::google::protobuf::Arena* arena); CreateForeignTableStmt(::google::protobuf::Arena* arena, const CreateForeignTableStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 2 [json_name = "servername"]; void clear_servername() ; const std::string& servername() const; template void set_servername(Arg_&& arg, Args_... args); std::string* mutable_servername(); PROTOBUF_NODISCARD std::string* release_servername(); void set_allocated_servername(std::string* value); private: const std::string& _internal_servername() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_base_stmt() ; const ::pg_query::CreateStmt& base_stmt() const; PROTOBUF_NODISCARD ::pg_query::CreateStmt* release_base_stmt(); ::pg_query::CreateStmt* mutable_base_stmt(); void set_allocated_base_stmt(::pg_query::CreateStmt* value); void unsafe_arena_set_allocated_base_stmt(::pg_query::CreateStmt* value); ::pg_query::CreateStmt* unsafe_arena_release_base_stmt(); private: const ::pg_query::CreateStmt& _internal_base_stmt() const; ::pg_query::CreateStmt* _internal_mutable_base_stmt(); public: // @@protoc_insertion_point(class_scope:pg_query.CreateForeignTableStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 50, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr servername_; ::pg_query::CreateStmt* base_stmt_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateFunctionStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateFunctionStmt) */ { public: inline CreateFunctionStmt() : CreateFunctionStmt(nullptr) {} ~CreateFunctionStmt() override; template explicit PROTOBUF_CONSTEXPR CreateFunctionStmt(::google::protobuf::internal::ConstantInitialized); inline CreateFunctionStmt(const CreateFunctionStmt& from) : CreateFunctionStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateFunctionStmt& default_instance() { return *internal_default_instance(); } static inline const CreateFunctionStmt* internal_default_instance() { return reinterpret_cast( &_CreateFunctionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 213; friend void swap(CreateFunctionStmt& a, CreateFunctionStmt& b) { a.Swap(&b); } inline void Swap(CreateFunctionStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateFunctionStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateFunctionStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateFunctionStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateFunctionStmt& from) { CreateFunctionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateFunctionStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateFunctionStmt"; } protected: explicit CreateFunctionStmt(::google::protobuf::Arena* arena); CreateFunctionStmt(::google::protobuf::Arena* arena, const CreateFunctionStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFuncnameFieldNumber = 3, kParametersFieldNumber = 4, kOptionsFieldNumber = 6, kReturnTypeFieldNumber = 5, kSqlBodyFieldNumber = 7, 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_funcname(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_funcname() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_funcname(); public: const ::pg_query::Node& funcname(int index) const; ::pg_query::Node* add_funcname(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_parameters(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_parameters() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_parameters(); public: const ::pg_query::Node& parameters(int index) const; ::pg_query::Node* add_parameters(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.TypeName return_type = 5 [json_name = "returnType"]; bool has_return_type() const; void clear_return_type() ; const ::pg_query::TypeName& return_type() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_return_type(); ::pg_query::TypeName* mutable_return_type(); void set_allocated_return_type(::pg_query::TypeName* value); void unsafe_arena_set_allocated_return_type(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_return_type(); private: const ::pg_query::TypeName& _internal_return_type() const; ::pg_query::TypeName* _internal_mutable_return_type(); public: // .pg_query.Node sql_body = 7 [json_name = "sql_body"]; bool has_sql_body() const; void clear_sql_body() ; const ::pg_query::Node& sql_body() const; PROTOBUF_NODISCARD ::pg_query::Node* release_sql_body(); ::pg_query::Node* mutable_sql_body(); void set_allocated_sql_body(::pg_query::Node* value); void unsafe_arena_set_allocated_sql_body(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_sql_body(); private: const ::pg_query::Node& _internal_sql_body() const; ::pg_query::Node* _internal_mutable_sql_body(); public: // 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 5, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > funcname_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > parameters_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::TypeName* return_type_; ::pg_query::Node* sql_body_; bool is_procedure_; bool replace_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateOpClassItem final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateOpClassItem) */ { public: inline CreateOpClassItem() : CreateOpClassItem(nullptr) {} ~CreateOpClassItem() override; template explicit PROTOBUF_CONSTEXPR CreateOpClassItem(::google::protobuf::internal::ConstantInitialized); inline CreateOpClassItem(const CreateOpClassItem& from) : CreateOpClassItem(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateOpClassItem& default_instance() { return *internal_default_instance(); } static inline const CreateOpClassItem* internal_default_instance() { return reinterpret_cast( &_CreateOpClassItem_default_instance_); } static constexpr int kIndexInFileMessages = 199; friend void swap(CreateOpClassItem& a, CreateOpClassItem& b) { a.Swap(&b); } inline void Swap(CreateOpClassItem* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateOpClassItem* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateOpClassItem* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateOpClassItem& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateOpClassItem& from) { CreateOpClassItem::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateOpClassItem* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateOpClassItem"; } protected: explicit CreateOpClassItem(::google::protobuf::Arena* arena); CreateOpClassItem(::google::protobuf::Arena* arena, const CreateOpClassItem& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_order_family(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_order_family() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_order_family(); public: const ::pg_query::Node& order_family(int index) const; ::pg_query::Node* add_order_family(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_class_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_class_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_class_args(); public: const ::pg_query::Node& class_args(int index) const; ::pg_query::Node* add_class_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& class_args() const; // .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; bool has_name() const; void clear_name() ; const ::pg_query::ObjectWithArgs& name() const; PROTOBUF_NODISCARD ::pg_query::ObjectWithArgs* release_name(); ::pg_query::ObjectWithArgs* mutable_name(); void set_allocated_name(::pg_query::ObjectWithArgs* value); void unsafe_arena_set_allocated_name(::pg_query::ObjectWithArgs* value); ::pg_query::ObjectWithArgs* unsafe_arena_release_name(); private: const ::pg_query::ObjectWithArgs& _internal_name() const; ::pg_query::ObjectWithArgs* _internal_mutable_name(); public: // .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; bool has_storedtype() const; void clear_storedtype() ; const ::pg_query::TypeName& storedtype() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_storedtype(); ::pg_query::TypeName* mutable_storedtype(); void set_allocated_storedtype(::pg_query::TypeName* value); void unsafe_arena_set_allocated_storedtype(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_storedtype(); private: const ::pg_query::TypeName& _internal_storedtype() const; ::pg_query::TypeName* _internal_mutable_storedtype(); public: // int32 itemtype = 1 [json_name = "itemtype"]; void clear_itemtype() ; ::int32_t itemtype() const; void set_itemtype(::int32_t value); private: ::int32_t _internal_itemtype() const; void _internal_set_itemtype(::int32_t value); public: // int32 number = 3 [json_name = "number"]; void clear_number() ; ::int32_t number() const; void set_number(::int32_t value); private: ::int32_t _internal_number() const; void _internal_set_number(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateOpClassItem) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 4, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > order_family_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > class_args_; ::pg_query::ObjectWithArgs* name_; ::pg_query::TypeName* storedtype_; ::int32_t itemtype_; ::int32_t number_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateOpClassStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateOpClassStmt) */ { public: inline CreateOpClassStmt() : CreateOpClassStmt(nullptr) {} ~CreateOpClassStmt() override; template explicit PROTOBUF_CONSTEXPR CreateOpClassStmt(::google::protobuf::internal::ConstantInitialized); inline CreateOpClassStmt(const CreateOpClassStmt& from) : CreateOpClassStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateOpClassStmt& default_instance() { return *internal_default_instance(); } static inline const CreateOpClassStmt* internal_default_instance() { return reinterpret_cast( &_CreateOpClassStmt_default_instance_); } static constexpr int kIndexInFileMessages = 198; friend void swap(CreateOpClassStmt& a, CreateOpClassStmt& b) { a.Swap(&b); } inline void Swap(CreateOpClassStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateOpClassStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateOpClassStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateOpClassStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateOpClassStmt& from) { CreateOpClassStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateOpClassStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateOpClassStmt"; } protected: explicit CreateOpClassStmt(::google::protobuf::Arena* arena); CreateOpClassStmt(::google::protobuf::Arena* arena, const CreateOpClassStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_opclassname(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_opclassname() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_opclassname(); public: const ::pg_query::Node& opclassname(int index) const; ::pg_query::Node* add_opclassname(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_opfamilyname(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_opfamilyname() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_opfamilyname(); public: const ::pg_query::Node& opfamilyname(int index) const; ::pg_query::Node* add_opfamilyname(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_items() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& items() const; // string amname = 3 [json_name = "amname"]; void clear_amname() ; const std::string& amname() const; template void set_amname(Arg_&& arg, Args_... args); std::string* mutable_amname(); PROTOBUF_NODISCARD std::string* release_amname(); void set_allocated_amname(std::string* value); private: const std::string& _internal_amname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_datatype() ; const ::pg_query::TypeName& datatype() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_datatype(); ::pg_query::TypeName* mutable_datatype(); void set_allocated_datatype(::pg_query::TypeName* value); void unsafe_arena_set_allocated_datatype(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_datatype(); private: const ::pg_query::TypeName& _internal_datatype() const; ::pg_query::TypeName* _internal_mutable_datatype(); public: // 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 4, 41, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > opclassname_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > opfamilyname_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > items_; ::google::protobuf::internal::ArenaStringPtr amname_; ::pg_query::TypeName* datatype_; bool is_default_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateOpFamilyStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateOpFamilyStmt) */ { public: inline CreateOpFamilyStmt() : CreateOpFamilyStmt(nullptr) {} ~CreateOpFamilyStmt() override; template explicit PROTOBUF_CONSTEXPR CreateOpFamilyStmt(::google::protobuf::internal::ConstantInitialized); inline CreateOpFamilyStmt(const CreateOpFamilyStmt& from) : CreateOpFamilyStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateOpFamilyStmt& default_instance() { return *internal_default_instance(); } static inline const CreateOpFamilyStmt* internal_default_instance() { return reinterpret_cast( &_CreateOpFamilyStmt_default_instance_); } static constexpr int kIndexInFileMessages = 200; friend void swap(CreateOpFamilyStmt& a, CreateOpFamilyStmt& b) { a.Swap(&b); } inline void Swap(CreateOpFamilyStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateOpFamilyStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateOpFamilyStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateOpFamilyStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateOpFamilyStmt& from) { CreateOpFamilyStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateOpFamilyStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateOpFamilyStmt"; } protected: explicit CreateOpFamilyStmt(::google::protobuf::Arena* arena); CreateOpFamilyStmt(::google::protobuf::Arena* arena, const CreateOpFamilyStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_opfamilyname(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_opfamilyname() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_opfamilyname(); public: const ::pg_query::Node& opfamilyname(int index) const; ::pg_query::Node* add_opfamilyname(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& opfamilyname() const; // string amname = 2 [json_name = "amname"]; void clear_amname() ; const std::string& amname() const; template void set_amname(Arg_&& arg, Args_... args); std::string* mutable_amname(); PROTOBUF_NODISCARD std::string* release_amname(); void set_allocated_amname(std::string* value); private: const std::string& _internal_amname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 42, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > opfamilyname_; ::google::protobuf::internal::ArenaStringPtr amname_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreatePLangStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatePLangStmt) */ { public: inline CreatePLangStmt() : CreatePLangStmt(nullptr) {} ~CreatePLangStmt() override; template explicit PROTOBUF_CONSTEXPR CreatePLangStmt(::google::protobuf::internal::ConstantInitialized); inline CreatePLangStmt(const CreatePLangStmt& from) : CreatePLangStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreatePLangStmt& default_instance() { return *internal_default_instance(); } static inline const CreatePLangStmt* internal_default_instance() { return reinterpret_cast( &_CreatePLangStmt_default_instance_); } static constexpr int kIndexInFileMessages = 189; friend void swap(CreatePLangStmt& a, CreatePLangStmt& b) { a.Swap(&b); } inline void Swap(CreatePLangStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreatePLangStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreatePLangStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreatePLangStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreatePLangStmt& from) { CreatePLangStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreatePLangStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreatePLangStmt"; } protected: explicit CreatePLangStmt(::google::protobuf::Arena* arena); CreatePLangStmt(::google::protobuf::Arena* arena, const CreatePLangStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_plhandler(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_plhandler() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_plhandler(); public: const ::pg_query::Node& plhandler(int index) const; ::pg_query::Node* add_plhandler(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_plinline(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_plinline() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_plinline(); public: const ::pg_query::Node& plinline(int index) const; ::pg_query::Node* add_plinline(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_plvalidator(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_plvalidator() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_plvalidator(); public: const ::pg_query::Node& plvalidator(int index) const; ::pg_query::Node* add_plvalidator(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& plvalidator() const; // string plname = 2 [json_name = "plname"]; void clear_plname() ; const std::string& plname() const; template void set_plname(Arg_&& arg, Args_... args); std::string* mutable_plname(); PROTOBUF_NODISCARD std::string* release_plname(); void set_allocated_plname(std::string* value); private: const std::string& _internal_plname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 3, 39, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > plhandler_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > plinline_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > plvalidator_; ::google::protobuf::internal::ArenaStringPtr plname_; bool replace_; bool pltrusted_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreatePolicyStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatePolicyStmt) */ { public: inline CreatePolicyStmt() : CreatePolicyStmt(nullptr) {} ~CreatePolicyStmt() override; template explicit PROTOBUF_CONSTEXPR CreatePolicyStmt(::google::protobuf::internal::ConstantInitialized); inline CreatePolicyStmt(const CreatePolicyStmt& from) : CreatePolicyStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreatePolicyStmt& default_instance() { return *internal_default_instance(); } static inline const CreatePolicyStmt* internal_default_instance() { return reinterpret_cast( &_CreatePolicyStmt_default_instance_); } static constexpr int kIndexInFileMessages = 183; friend void swap(CreatePolicyStmt& a, CreatePolicyStmt& b) { a.Swap(&b); } inline void Swap(CreatePolicyStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreatePolicyStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreatePolicyStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreatePolicyStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreatePolicyStmt& from) { CreatePolicyStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreatePolicyStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreatePolicyStmt"; } protected: explicit CreatePolicyStmt(::google::protobuf::Arena* arena); CreatePolicyStmt(::google::protobuf::Arena* arena, const CreatePolicyStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_roles() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& roles() const; // string policy_name = 1 [json_name = "policy_name"]; void clear_policy_name() ; const std::string& policy_name() const; template void set_policy_name(Arg_&& arg, Args_... args); std::string* mutable_policy_name(); PROTOBUF_NODISCARD std::string* release_policy_name(); void set_allocated_policy_name(std::string* value); private: const std::string& _internal_policy_name() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_cmd_name(Arg_&& arg, Args_... args); std::string* mutable_cmd_name(); PROTOBUF_NODISCARD std::string* release_cmd_name(); void set_allocated_cmd_name(std::string* value); private: const std::string& _internal_cmd_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_table() ; const ::pg_query::RangeVar& table() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_table(); ::pg_query::RangeVar* mutable_table(); void set_allocated_table(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_table(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_table(); private: const ::pg_query::RangeVar& _internal_table() const; ::pg_query::RangeVar* _internal_mutable_table(); public: // .pg_query.Node qual = 6 [json_name = "qual"]; bool has_qual() const; void clear_qual() ; const ::pg_query::Node& qual() const; PROTOBUF_NODISCARD ::pg_query::Node* release_qual(); ::pg_query::Node* mutable_qual(); void set_allocated_qual(::pg_query::Node* value); void unsafe_arena_set_allocated_qual(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_qual(); private: const ::pg_query::Node& _internal_qual() const; ::pg_query::Node* _internal_mutable_qual(); public: // .pg_query.Node with_check = 7 [json_name = "with_check"]; bool has_with_check() const; void clear_with_check() ; const ::pg_query::Node& with_check() const; PROTOBUF_NODISCARD ::pg_query::Node* release_with_check(); ::pg_query::Node* mutable_with_check(); void set_allocated_with_check(::pg_query::Node* value); void unsafe_arena_set_allocated_with_check(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_with_check(); private: const ::pg_query::Node& _internal_with_check() const; ::pg_query::Node* _internal_mutable_with_check(); public: // 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 4, 53, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > roles_; ::google::protobuf::internal::ArenaStringPtr policy_name_; ::google::protobuf::internal::ArenaStringPtr cmd_name_; ::pg_query::RangeVar* table_; ::pg_query::Node* qual_; ::pg_query::Node* with_check_; bool permissive_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreatePublicationStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatePublicationStmt) */ { public: inline CreatePublicationStmt() : CreatePublicationStmt(nullptr) {} ~CreatePublicationStmt() override; template explicit PROTOBUF_CONSTEXPR CreatePublicationStmt(::google::protobuf::internal::ConstantInitialized); inline CreatePublicationStmt(const CreatePublicationStmt& from) : CreatePublicationStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreatePublicationStmt& default_instance() { return *internal_default_instance(); } static inline const CreatePublicationStmt* internal_default_instance() { return reinterpret_cast( &_CreatePublicationStmt_default_instance_); } static constexpr int kIndexInFileMessages = 266; friend void swap(CreatePublicationStmt& a, CreatePublicationStmt& b) { a.Swap(&b); } inline void Swap(CreatePublicationStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreatePublicationStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreatePublicationStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreatePublicationStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreatePublicationStmt& from) { CreatePublicationStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreatePublicationStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreatePublicationStmt"; } protected: explicit CreatePublicationStmt(::google::protobuf::Arena* arena); CreatePublicationStmt(::google::protobuf::Arena* arena, const CreatePublicationStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kPubobjectsFieldNumber = 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // repeated .pg_query.Node pubobjects = 3 [json_name = "pubobjects"]; int pubobjects_size() const; private: int _internal_pubobjects_size() const; public: void clear_pubobjects() ; ::pg_query::Node* mutable_pubobjects(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_pubobjects(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_pubobjects() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_pubobjects(); public: const ::pg_query::Node& pubobjects(int index) const; ::pg_query::Node* add_pubobjects(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& pubobjects() const; // string pubname = 1 [json_name = "pubname"]; void clear_pubname() ; const std::string& pubname() const; template void set_pubname(Arg_&& arg, Args_... args); std::string* mutable_pubname(); PROTOBUF_NODISCARD std::string* release_pubname(); void set_allocated_pubname(std::string* value); private: const std::string& _internal_pubname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 46, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > pubobjects_; ::google::protobuf::internal::ArenaStringPtr pubname_; bool for_all_tables_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateRangeStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateRangeStmt) */ { public: inline CreateRangeStmt() : CreateRangeStmt(nullptr) {} ~CreateRangeStmt() override; template explicit PROTOBUF_CONSTEXPR CreateRangeStmt(::google::protobuf::internal::ConstantInitialized); inline CreateRangeStmt(const CreateRangeStmt& from) : CreateRangeStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateRangeStmt& default_instance() { return *internal_default_instance(); } static inline const CreateRangeStmt* internal_default_instance() { return reinterpret_cast( &_CreateRangeStmt_default_instance_); } static constexpr int kIndexInFileMessages = 233; friend void swap(CreateRangeStmt& a, CreateRangeStmt& b) { a.Swap(&b); } inline void Swap(CreateRangeStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateRangeStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateRangeStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateRangeStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateRangeStmt& from) { CreateRangeStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateRangeStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateRangeStmt"; } protected: explicit CreateRangeStmt(::google::protobuf::Arena* arena); CreateRangeStmt(::google::protobuf::Arena* arena, const CreateRangeStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_type_name() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_params(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_params() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_params(); public: const ::pg_query::Node& params(int index) const; ::pg_query::Node* add_params(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& params() const; // @@protoc_insertion_point(class_scope:pg_query.CreateRangeStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > type_name_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > params_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateRoleStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateRoleStmt) */ { public: inline CreateRoleStmt() : CreateRoleStmt(nullptr) {} ~CreateRoleStmt() override; template explicit PROTOBUF_CONSTEXPR CreateRoleStmt(::google::protobuf::internal::ConstantInitialized); inline CreateRoleStmt(const CreateRoleStmt& from) : CreateRoleStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateRoleStmt& default_instance() { return *internal_default_instance(); } static inline const CreateRoleStmt* internal_default_instance() { return reinterpret_cast( &_CreateRoleStmt_default_instance_); } static constexpr int kIndexInFileMessages = 190; friend void swap(CreateRoleStmt& a, CreateRoleStmt& b) { a.Swap(&b); } inline void Swap(CreateRoleStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateRoleStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateRoleStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateRoleStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateRoleStmt& from) { CreateRoleStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateRoleStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateRoleStmt"; } protected: explicit CreateRoleStmt(::google::protobuf::Arena* arena); CreateRoleStmt(::google::protobuf::Arena* arena, const CreateRoleStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string role = 2 [json_name = "role"]; void clear_role() ; const std::string& role() const; template void set_role(Arg_&& arg, Args_... args); std::string* mutable_role(); PROTOBUF_NODISCARD std::string* release_role(); void set_allocated_role(std::string* value); private: const std::string& _internal_role() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 36, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr role_; int stmt_type_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateSchemaStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateSchemaStmt) */ { public: inline CreateSchemaStmt() : CreateSchemaStmt(nullptr) {} ~CreateSchemaStmt() override; template explicit PROTOBUF_CONSTEXPR CreateSchemaStmt(::google::protobuf::internal::ConstantInitialized); inline CreateSchemaStmt(const CreateSchemaStmt& from) : CreateSchemaStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateSchemaStmt& default_instance() { return *internal_default_instance(); } static inline const CreateSchemaStmt* internal_default_instance() { return reinterpret_cast( &_CreateSchemaStmt_default_instance_); } static constexpr int kIndexInFileMessages = 151; friend void swap(CreateSchemaStmt& a, CreateSchemaStmt& b) { a.Swap(&b); } inline void Swap(CreateSchemaStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateSchemaStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateSchemaStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateSchemaStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateSchemaStmt& from) { CreateSchemaStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateSchemaStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateSchemaStmt"; } protected: explicit CreateSchemaStmt(::google::protobuf::Arena* arena); CreateSchemaStmt(::google::protobuf::Arena* arena, const CreateSchemaStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_schema_elts(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_schema_elts() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_schema_elts(); public: const ::pg_query::Node& schema_elts(int index) const; ::pg_query::Node* add_schema_elts(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& schema_elts() const; // string schemaname = 1 [json_name = "schemaname"]; void clear_schemaname() ; const std::string& schemaname() const; template void set_schemaname(Arg_&& arg, Args_... args); std::string* mutable_schemaname(); PROTOBUF_NODISCARD std::string* release_schemaname(); void set_allocated_schemaname(std::string* value); private: const std::string& _internal_schemaname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_authrole() ; const ::pg_query::RoleSpec& authrole() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_authrole(); ::pg_query::RoleSpec* mutable_authrole(); void set_allocated_authrole(::pg_query::RoleSpec* value); void unsafe_arena_set_allocated_authrole(::pg_query::RoleSpec* value); ::pg_query::RoleSpec* unsafe_arena_release_authrole(); private: const ::pg_query::RoleSpec& _internal_authrole() const; ::pg_query::RoleSpec* _internal_mutable_authrole(); public: // 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 44, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > schema_elts_; ::google::protobuf::internal::ArenaStringPtr schemaname_; ::pg_query::RoleSpec* authrole_; bool if_not_exists_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateSeqStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateSeqStmt) */ { public: inline CreateSeqStmt() : CreateSeqStmt(nullptr) {} ~CreateSeqStmt() override; template explicit PROTOBUF_CONSTEXPR CreateSeqStmt(::google::protobuf::internal::ConstantInitialized); inline CreateSeqStmt(const CreateSeqStmt& from) : CreateSeqStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateSeqStmt& default_instance() { return *internal_default_instance(); } static inline const CreateSeqStmt* internal_default_instance() { return reinterpret_cast( &_CreateSeqStmt_default_instance_); } static constexpr int kIndexInFileMessages = 194; friend void swap(CreateSeqStmt& a, CreateSeqStmt& b) { a.Swap(&b); } inline void Swap(CreateSeqStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateSeqStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateSeqStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateSeqStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateSeqStmt& from) { CreateSeqStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateSeqStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateSeqStmt"; } protected: explicit CreateSeqStmt(::google::protobuf::Arena* arena); CreateSeqStmt(::google::protobuf::Arena* arena, const CreateSeqStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; bool has_sequence() const; void clear_sequence() ; const ::pg_query::RangeVar& sequence() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_sequence(); ::pg_query::RangeVar* mutable_sequence(); void set_allocated_sequence(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_sequence(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_sequence(); private: const ::pg_query::RangeVar& _internal_sequence() const; ::pg_query::RangeVar* _internal_mutable_sequence(); public: // uint32 owner_id = 3 [json_name = "ownerId"]; void clear_owner_id() ; ::uint32_t owner_id() const; void set_owner_id(::uint32_t value); private: ::uint32_t _internal_owner_id() const; void _internal_set_owner_id(::uint32_t 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::RangeVar* sequence_; ::uint32_t owner_id_; bool for_identity_; bool if_not_exists_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateStatsStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateStatsStmt) */ { public: inline CreateStatsStmt() : CreateStatsStmt(nullptr) {} ~CreateStatsStmt() override; template explicit PROTOBUF_CONSTEXPR CreateStatsStmt(::google::protobuf::internal::ConstantInitialized); inline CreateStatsStmt(const CreateStatsStmt& from) : CreateStatsStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateStatsStmt& default_instance() { return *internal_default_instance(); } static inline const CreateStatsStmt* internal_default_instance() { return reinterpret_cast( &_CreateStatsStmt_default_instance_); } static constexpr int kIndexInFileMessages = 210; friend void swap(CreateStatsStmt& a, CreateStatsStmt& b) { a.Swap(&b); } inline void Swap(CreateStatsStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateStatsStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateStatsStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateStatsStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateStatsStmt& from) { CreateStatsStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateStatsStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateStatsStmt"; } protected: explicit CreateStatsStmt(::google::protobuf::Arena* arena); CreateStatsStmt(::google::protobuf::Arena* arena, const CreateStatsStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kDefnamesFieldNumber = 1, kStatTypesFieldNumber = 2, kExprsFieldNumber = 3, kRelationsFieldNumber = 4, kStxcommentFieldNumber = 5, kTransformedFieldNumber = 6, kIfNotExistsFieldNumber = 7, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_defnames(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_defnames() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_defnames(); public: const ::pg_query::Node& defnames(int index) const; ::pg_query::Node* add_defnames(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_stat_types(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_stat_types() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_stat_types(); public: const ::pg_query::Node& stat_types(int index) const; ::pg_query::Node* add_stat_types(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_exprs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_exprs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_exprs(); public: const ::pg_query::Node& exprs(int index) const; ::pg_query::Node* add_exprs(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_relations(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_relations() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_relations(); public: const ::pg_query::Node& relations(int index) const; ::pg_query::Node* add_relations(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& relations() const; // string stxcomment = 5 [json_name = "stxcomment"]; void clear_stxcomment() ; const std::string& stxcomment() const; template void set_stxcomment(Arg_&& arg, Args_... args); std::string* mutable_stxcomment(); PROTOBUF_NODISCARD std::string* release_stxcomment(); void set_allocated_stxcomment(std::string* value); private: const std::string& _internal_stxcomment() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_stxcomment( const std::string& value); std::string* _internal_mutable_stxcomment(); public: // bool transformed = 6 [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 if_not_exists = 7 [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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 4, 43, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > defnames_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > stat_types_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > exprs_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > relations_; ::google::protobuf::internal::ArenaStringPtr stxcomment_; bool transformed_; bool if_not_exists_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateStmt) */ { public: inline CreateStmt() : CreateStmt(nullptr) {} ~CreateStmt() override; template explicit PROTOBUF_CONSTEXPR CreateStmt(::google::protobuf::internal::ConstantInitialized); inline CreateStmt(const CreateStmt& from) : CreateStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateStmt& default_instance() { return *internal_default_instance(); } static inline const CreateStmt* internal_default_instance() { return reinterpret_cast( &_CreateStmt_default_instance_); } static constexpr int kIndexInFileMessages = 165; friend void swap(CreateStmt& a, CreateStmt& b) { a.Swap(&b); } inline void Swap(CreateStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateStmt& from) { CreateStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateStmt"; } protected: explicit CreateStmt(::google::protobuf::Arena* arena); CreateStmt(::google::protobuf::Arena* arena, const CreateStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_table_elts(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_table_elts() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_table_elts(); public: const ::pg_query::Node& table_elts(int index) const; ::pg_query::Node* add_table_elts(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_inh_relations(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_inh_relations() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_inh_relations(); public: const ::pg_query::Node& inh_relations(int index) const; ::pg_query::Node* add_inh_relations(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_constraints(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_constraints() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_constraints(); public: const ::pg_query::Node& constraints(int index) const; ::pg_query::Node* add_constraints(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string tablespacename = 10 [json_name = "tablespacename"]; void clear_tablespacename() ; const std::string& tablespacename() const; template void set_tablespacename(Arg_&& arg, Args_... args); std::string* mutable_tablespacename(); PROTOBUF_NODISCARD std::string* release_tablespacename(); void set_allocated_tablespacename(std::string* value); private: const std::string& _internal_tablespacename() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_access_method(Arg_&& arg, Args_... args); std::string* mutable_access_method(); PROTOBUF_NODISCARD std::string* release_access_method(); void set_allocated_access_method(std::string* value); private: const std::string& _internal_access_method() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; bool has_partbound() const; void clear_partbound() ; const ::pg_query::PartitionBoundSpec& partbound() const; PROTOBUF_NODISCARD ::pg_query::PartitionBoundSpec* release_partbound(); ::pg_query::PartitionBoundSpec* mutable_partbound(); void set_allocated_partbound(::pg_query::PartitionBoundSpec* value); void unsafe_arena_set_allocated_partbound(::pg_query::PartitionBoundSpec* value); ::pg_query::PartitionBoundSpec* unsafe_arena_release_partbound(); private: const ::pg_query::PartitionBoundSpec& _internal_partbound() const; ::pg_query::PartitionBoundSpec* _internal_mutable_partbound(); public: // .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; bool has_partspec() const; void clear_partspec() ; const ::pg_query::PartitionSpec& partspec() const; PROTOBUF_NODISCARD ::pg_query::PartitionSpec* release_partspec(); ::pg_query::PartitionSpec* mutable_partspec(); void set_allocated_partspec(::pg_query::PartitionSpec* value); void unsafe_arena_set_allocated_partspec(::pg_query::PartitionSpec* value); ::pg_query::PartitionSpec* unsafe_arena_release_partspec(); private: const ::pg_query::PartitionSpec& _internal_partspec() const; ::pg_query::PartitionSpec* _internal_mutable_partspec(); public: // .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; bool has_of_typename() const; void clear_of_typename() ; const ::pg_query::TypeName& of_typename() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_of_typename(); ::pg_query::TypeName* mutable_of_typename(); void set_allocated_of_typename(::pg_query::TypeName* value); void unsafe_arena_set_allocated_of_typename(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_of_typename(); private: const ::pg_query::TypeName& _internal_of_typename() const; ::pg_query::TypeName* _internal_mutable_of_typename(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 12, 8, 63, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > table_elts_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > inh_relations_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > constraints_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr tablespacename_; ::google::protobuf::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_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateSubscriptionStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateSubscriptionStmt) */ { public: inline CreateSubscriptionStmt() : CreateSubscriptionStmt(nullptr) {} ~CreateSubscriptionStmt() override; template explicit PROTOBUF_CONSTEXPR CreateSubscriptionStmt(::google::protobuf::internal::ConstantInitialized); inline CreateSubscriptionStmt(const CreateSubscriptionStmt& from) : CreateSubscriptionStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateSubscriptionStmt& default_instance() { return *internal_default_instance(); } static inline const CreateSubscriptionStmt* internal_default_instance() { return reinterpret_cast( &_CreateSubscriptionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 268; friend void swap(CreateSubscriptionStmt& a, CreateSubscriptionStmt& b) { a.Swap(&b); } inline void Swap(CreateSubscriptionStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateSubscriptionStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateSubscriptionStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateSubscriptionStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateSubscriptionStmt& from) { CreateSubscriptionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateSubscriptionStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateSubscriptionStmt"; } protected: explicit CreateSubscriptionStmt(::google::protobuf::Arena* arena); CreateSubscriptionStmt(::google::protobuf::Arena* arena, const CreateSubscriptionStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_publication(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_publication() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_publication(); public: const ::pg_query::Node& publication(int index) const; ::pg_query::Node* add_publication(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string subname = 1 [json_name = "subname"]; void clear_subname() ; const std::string& subname() const; template void set_subname(Arg_&& arg, Args_... args); std::string* mutable_subname(); PROTOBUF_NODISCARD std::string* release_subname(); void set_allocated_subname(std::string* value); private: const std::string& _internal_subname() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_conninfo(Arg_&& arg, Args_... args); std::string* mutable_conninfo(); PROTOBUF_NODISCARD std::string* release_conninfo(); void set_allocated_conninfo(std::string* value); private: const std::string& _internal_conninfo() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 55, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > publication_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr subname_; ::google::protobuf::internal::ArenaStringPtr conninfo_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateTableAsStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTableAsStmt) */ { public: inline CreateTableAsStmt() : CreateTableAsStmt(nullptr) {} ~CreateTableAsStmt() override; template explicit PROTOBUF_CONSTEXPR CreateTableAsStmt(::google::protobuf::internal::ConstantInitialized); inline CreateTableAsStmt(const CreateTableAsStmt& from) : CreateTableAsStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateTableAsStmt& default_instance() { return *internal_default_instance(); } static inline const CreateTableAsStmt* internal_default_instance() { return reinterpret_cast( &_CreateTableAsStmt_default_instance_); } static constexpr int kIndexInFileMessages = 247; friend void swap(CreateTableAsStmt& a, CreateTableAsStmt& b) { a.Swap(&b); } inline void Swap(CreateTableAsStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateTableAsStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateTableAsStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateTableAsStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateTableAsStmt& from) { CreateTableAsStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateTableAsStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateTableAsStmt"; } protected: explicit CreateTableAsStmt(::google::protobuf::Arena* arena); CreateTableAsStmt(::google::protobuf::Arena* arena, const CreateTableAsStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kQueryFieldNumber = 1, kIntoFieldNumber = 2, kObjtypeFieldNumber = 3, kIsSelectIntoFieldNumber = 4, kIfNotExistsFieldNumber = 5, }; // .pg_query.Node query = 1 [json_name = "query"]; bool has_query() const; void clear_query() ; const ::pg_query::Node& query() const; PROTOBUF_NODISCARD ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* value); void unsafe_arena_set_allocated_query(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_query(); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: // .pg_query.IntoClause into = 2 [json_name = "into"]; bool has_into() const; void clear_into() ; const ::pg_query::IntoClause& into() const; PROTOBUF_NODISCARD ::pg_query::IntoClause* release_into(); ::pg_query::IntoClause* mutable_into(); void set_allocated_into(::pg_query::IntoClause* value); void unsafe_arena_set_allocated_into(::pg_query::IntoClause* value); ::pg_query::IntoClause* unsafe_arena_release_into(); private: const ::pg_query::IntoClause& _internal_into() const; ::pg_query::IntoClause* _internal_mutable_into(); 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_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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* query_; ::pg_query::IntoClause* into_; int objtype_; bool is_select_into_; bool if_not_exists_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateTableSpaceStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTableSpaceStmt) */ { public: inline CreateTableSpaceStmt() : CreateTableSpaceStmt(nullptr) {} ~CreateTableSpaceStmt() override; template explicit PROTOBUF_CONSTEXPR CreateTableSpaceStmt(::google::protobuf::internal::ConstantInitialized); inline CreateTableSpaceStmt(const CreateTableSpaceStmt& from) : CreateTableSpaceStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateTableSpaceStmt& default_instance() { return *internal_default_instance(); } static inline const CreateTableSpaceStmt* internal_default_instance() { return reinterpret_cast( &_CreateTableSpaceStmt_default_instance_); } static constexpr int kIndexInFileMessages = 167; friend void swap(CreateTableSpaceStmt& a, CreateTableSpaceStmt& b) { a.Swap(&b); } inline void Swap(CreateTableSpaceStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateTableSpaceStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateTableSpaceStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateTableSpaceStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateTableSpaceStmt& from) { CreateTableSpaceStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateTableSpaceStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateTableSpaceStmt"; } protected: explicit CreateTableSpaceStmt(::google::protobuf::Arena* arena); CreateTableSpaceStmt(::google::protobuf::Arena* arena, const CreateTableSpaceStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string tablespacename = 1 [json_name = "tablespacename"]; void clear_tablespacename() ; const std::string& tablespacename() const; template void set_tablespacename(Arg_&& arg, Args_... args); std::string* mutable_tablespacename(); PROTOBUF_NODISCARD std::string* release_tablespacename(); void set_allocated_tablespacename(std::string* value); private: const std::string& _internal_tablespacename() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_location(Arg_&& arg, Args_... args); std::string* mutable_location(); PROTOBUF_NODISCARD std::string* release_location(); void set_allocated_location(std::string* value); private: const std::string& _internal_location() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_owner() ; const ::pg_query::RoleSpec& owner() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_owner(); ::pg_query::RoleSpec* mutable_owner(); void set_allocated_owner(::pg_query::RoleSpec* value); void unsafe_arena_set_allocated_owner(::pg_query::RoleSpec* value); ::pg_query::RoleSpec* unsafe_arena_release_owner(); private: const ::pg_query::RoleSpec& _internal_owner() const; ::pg_query::RoleSpec* _internal_mutable_owner(); public: // @@protoc_insertion_point(class_scope:pg_query.CreateTableSpaceStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 60, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr tablespacename_; ::google::protobuf::internal::ArenaStringPtr location_; ::pg_query::RoleSpec* owner_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateTransformStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTransformStmt) */ { public: inline CreateTransformStmt() : CreateTransformStmt(nullptr) {} ~CreateTransformStmt() override; template explicit PROTOBUF_CONSTEXPR CreateTransformStmt(::google::protobuf::internal::ConstantInitialized); inline CreateTransformStmt(const CreateTransformStmt& from) : CreateTransformStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateTransformStmt& default_instance() { return *internal_default_instance(); } static inline const CreateTransformStmt* internal_default_instance() { return reinterpret_cast( &_CreateTransformStmt_default_instance_); } static constexpr int kIndexInFileMessages = 256; friend void swap(CreateTransformStmt& a, CreateTransformStmt& b) { a.Swap(&b); } inline void Swap(CreateTransformStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateTransformStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateTransformStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateTransformStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateTransformStmt& from) { CreateTransformStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateTransformStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateTransformStmt"; } protected: explicit CreateTransformStmt(::google::protobuf::Arena* arena); CreateTransformStmt(::google::protobuf::Arena* arena, const CreateTransformStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_lang(Arg_&& arg, Args_... args); std::string* mutable_lang(); PROTOBUF_NODISCARD std::string* release_lang(); void set_allocated_lang(std::string* value); private: const std::string& _internal_lang() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_type_name() ; const ::pg_query::TypeName& type_name() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* value); void unsafe_arena_set_allocated_type_name(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_type_name(); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: // .pg_query.ObjectWithArgs fromsql = 4 [json_name = "fromsql"]; bool has_fromsql() const; void clear_fromsql() ; const ::pg_query::ObjectWithArgs& fromsql() const; PROTOBUF_NODISCARD ::pg_query::ObjectWithArgs* release_fromsql(); ::pg_query::ObjectWithArgs* mutable_fromsql(); void set_allocated_fromsql(::pg_query::ObjectWithArgs* value); void unsafe_arena_set_allocated_fromsql(::pg_query::ObjectWithArgs* value); ::pg_query::ObjectWithArgs* unsafe_arena_release_fromsql(); private: const ::pg_query::ObjectWithArgs& _internal_fromsql() const; ::pg_query::ObjectWithArgs* _internal_mutable_fromsql(); public: // .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; bool has_tosql() const; void clear_tosql() ; const ::pg_query::ObjectWithArgs& tosql() const; PROTOBUF_NODISCARD ::pg_query::ObjectWithArgs* release_tosql(); ::pg_query::ObjectWithArgs* mutable_tosql(); void set_allocated_tosql(::pg_query::ObjectWithArgs* value); void unsafe_arena_set_allocated_tosql(::pg_query::ObjectWithArgs* value); ::pg_query::ObjectWithArgs* unsafe_arena_release_tosql(); private: const ::pg_query::ObjectWithArgs& _internal_tosql() const; ::pg_query::ObjectWithArgs* _internal_mutable_tosql(); 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: // @@protoc_insertion_point(class_scope:pg_query.CreateTransformStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 3, 41, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr lang_; ::pg_query::TypeName* type_name_; ::pg_query::ObjectWithArgs* fromsql_; ::pg_query::ObjectWithArgs* tosql_; bool replace_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateTrigStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTrigStmt) */ { public: inline CreateTrigStmt() : CreateTrigStmt(nullptr) {} ~CreateTrigStmt() override; template explicit PROTOBUF_CONSTEXPR CreateTrigStmt(::google::protobuf::internal::ConstantInitialized); inline CreateTrigStmt(const CreateTrigStmt& from) : CreateTrigStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateTrigStmt& default_instance() { return *internal_default_instance(); } static inline const CreateTrigStmt* internal_default_instance() { return reinterpret_cast( &_CreateTrigStmt_default_instance_); } static constexpr int kIndexInFileMessages = 186; friend void swap(CreateTrigStmt& a, CreateTrigStmt& b) { a.Swap(&b); } inline void Swap(CreateTrigStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateTrigStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateTrigStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateTrigStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateTrigStmt& from) { CreateTrigStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateTrigStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateTrigStmt"; } protected: explicit CreateTrigStmt(::google::protobuf::Arena* arena); CreateTrigStmt(::google::protobuf::Arena* arena, const CreateTrigStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFuncnameFieldNumber = 5, kArgsFieldNumber = 6, kColumnsFieldNumber = 10, kTransitionRelsFieldNumber = 12, kTrignameFieldNumber = 3, kRelationFieldNumber = 4, kWhenClauseFieldNumber = 11, kConstrrelFieldNumber = 15, kReplaceFieldNumber = 1, kIsconstraintFieldNumber = 2, kRowFieldNumber = 7, kDeferrableFieldNumber = 13, kTimingFieldNumber = 8, kEventsFieldNumber = 9, kInitdeferredFieldNumber = 14, }; // repeated .pg_query.Node funcname = 5 [json_name = "funcname"]; int funcname_size() const; private: int _internal_funcname_size() const; public: void clear_funcname() ; ::pg_query::Node* mutable_funcname(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_funcname(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_funcname() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_funcname(); public: const ::pg_query::Node& funcname(int index) const; ::pg_query::Node* add_funcname(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& funcname() 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // repeated .pg_query.Node columns = 10 [json_name = "columns"]; int columns_size() const; private: int _internal_columns_size() const; public: void clear_columns() ; ::pg_query::Node* mutable_columns(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_columns(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_columns() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_columns(); public: const ::pg_query::Node& columns(int index) const; ::pg_query::Node* add_columns(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& columns() const; // repeated .pg_query.Node transition_rels = 12 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_transition_rels(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_transition_rels() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_transition_rels(); public: const ::pg_query::Node& transition_rels(int index) const; ::pg_query::Node* add_transition_rels(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& transition_rels() const; // string trigname = 3 [json_name = "trigname"]; void clear_trigname() ; const std::string& trigname() const; template void set_trigname(Arg_&& arg, Args_... args); std::string* mutable_trigname(); PROTOBUF_NODISCARD std::string* release_trigname(); void set_allocated_trigname(std::string* value); private: const std::string& _internal_trigname() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_trigname( const std::string& value); std::string* _internal_mutable_trigname(); public: // .pg_query.RangeVar relation = 4 [json_name = "relation"]; bool has_relation() const; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .pg_query.Node when_clause = 11 [json_name = "whenClause"]; bool has_when_clause() const; void clear_when_clause() ; const ::pg_query::Node& when_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_when_clause(); ::pg_query::Node* mutable_when_clause(); void set_allocated_when_clause(::pg_query::Node* value); void unsafe_arena_set_allocated_when_clause(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_when_clause(); private: const ::pg_query::Node& _internal_when_clause() const; ::pg_query::Node* _internal_mutable_when_clause(); public: // .pg_query.RangeVar constrrel = 15 [json_name = "constrrel"]; bool has_constrrel() const; void clear_constrrel() ; const ::pg_query::RangeVar& constrrel() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_constrrel(); ::pg_query::RangeVar* mutable_constrrel(); void set_allocated_constrrel(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_constrrel(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_constrrel(); private: const ::pg_query::RangeVar& _internal_constrrel() const; ::pg_query::RangeVar* _internal_mutable_constrrel(); 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 isconstraint = 2 [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 row = 7 [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 deferrable = 13 [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: // int32 timing = 8 [json_name = "timing"]; void clear_timing() ; ::int32_t timing() const; void set_timing(::int32_t value); private: ::int32_t _internal_timing() const; void _internal_set_timing(::int32_t value); public: // int32 events = 9 [json_name = "events"]; void clear_events() ; ::int32_t events() const; void set_events(::int32_t value); private: ::int32_t _internal_events() const; void _internal_set_events(::int32_t value); public: // bool initdeferred = 14 [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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 15, 7, 48, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > funcname_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > columns_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > transition_rels_; ::google::protobuf::internal::ArenaStringPtr trigname_; ::pg_query::RangeVar* relation_; ::pg_query::Node* when_clause_; ::pg_query::RangeVar* constrrel_; bool replace_; bool isconstraint_; bool row_; bool deferrable_; ::int32_t timing_; ::int32_t events_; bool initdeferred_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreateUserMappingStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateUserMappingStmt) */ { public: inline CreateUserMappingStmt() : CreateUserMappingStmt(nullptr) {} ~CreateUserMappingStmt() override; template explicit PROTOBUF_CONSTEXPR CreateUserMappingStmt(::google::protobuf::internal::ConstantInitialized); inline CreateUserMappingStmt(const CreateUserMappingStmt& from) : CreateUserMappingStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreateUserMappingStmt& default_instance() { return *internal_default_instance(); } static inline const CreateUserMappingStmt* internal_default_instance() { return reinterpret_cast( &_CreateUserMappingStmt_default_instance_); } static constexpr int kIndexInFileMessages = 179; friend void swap(CreateUserMappingStmt& a, CreateUserMappingStmt& b) { a.Swap(&b); } inline void Swap(CreateUserMappingStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateUserMappingStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreateUserMappingStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreateUserMappingStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreateUserMappingStmt& from) { CreateUserMappingStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreateUserMappingStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreateUserMappingStmt"; } protected: explicit CreateUserMappingStmt(::google::protobuf::Arena* arena); CreateUserMappingStmt(::google::protobuf::Arena* arena, const CreateUserMappingStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 2 [json_name = "servername"]; void clear_servername() ; const std::string& servername() const; template void set_servername(Arg_&& arg, Args_... args); std::string* mutable_servername(); PROTOBUF_NODISCARD std::string* release_servername(); void set_allocated_servername(std::string* value); private: const std::string& _internal_servername() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_user() ; const ::pg_query::RoleSpec& user() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_user(); ::pg_query::RoleSpec* mutable_user(); void set_allocated_user(::pg_query::RoleSpec* value); void unsafe_arena_set_allocated_user(::pg_query::RoleSpec* value); ::pg_query::RoleSpec* unsafe_arena_release_user(); private: const ::pg_query::RoleSpec& _internal_user() const; ::pg_query::RoleSpec* _internal_mutable_user(); public: // 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 49, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr servername_; ::pg_query::RoleSpec* user_; bool if_not_exists_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CreatedbStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatedbStmt) */ { public: inline CreatedbStmt() : CreatedbStmt(nullptr) {} ~CreatedbStmt() override; template explicit PROTOBUF_CONSTEXPR CreatedbStmt(::google::protobuf::internal::ConstantInitialized); inline CreatedbStmt(const CreatedbStmt& from) : CreatedbStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CreatedbStmt& default_instance() { return *internal_default_instance(); } static inline const CreatedbStmt* internal_default_instance() { return reinterpret_cast( &_CreatedbStmt_default_instance_); } static constexpr int kIndexInFileMessages = 237; friend void swap(CreatedbStmt& a, CreatedbStmt& b) { a.Swap(&b); } inline void Swap(CreatedbStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreatedbStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CreatedbStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CreatedbStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CreatedbStmt& from) { CreatedbStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CreatedbStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CreatedbStmt"; } protected: explicit CreatedbStmt(::google::protobuf::Arena* arena); CreatedbStmt(::google::protobuf::Arena* arena, const CreatedbStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string dbname = 1 [json_name = "dbname"]; void clear_dbname() ; const std::string& dbname() const; template void set_dbname(Arg_&& arg, Args_... args); std::string* mutable_dbname(); PROTOBUF_NODISCARD std::string* release_dbname(); void set_allocated_dbname(std::string* value); private: const std::string& _internal_dbname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 36, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr dbname_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class CurrentOfExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.CurrentOfExpr) */ { public: inline CurrentOfExpr() : CurrentOfExpr(nullptr) {} ~CurrentOfExpr() override; template explicit PROTOBUF_CONSTEXPR CurrentOfExpr(::google::protobuf::internal::ConstantInitialized); inline CurrentOfExpr(const CurrentOfExpr& from) : CurrentOfExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const CurrentOfExpr& default_instance() { return *internal_default_instance(); } static inline const CurrentOfExpr* internal_default_instance() { return reinterpret_cast( &_CurrentOfExpr_default_instance_); } static constexpr int kIndexInFileMessages = 67; friend void swap(CurrentOfExpr& a, CurrentOfExpr& b) { a.Swap(&b); } inline void Swap(CurrentOfExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CurrentOfExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- CurrentOfExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const CurrentOfExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const CurrentOfExpr& from) { CurrentOfExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(CurrentOfExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.CurrentOfExpr"; } protected: explicit CurrentOfExpr(::google::protobuf::Arena* arena); CurrentOfExpr(::google::protobuf::Arena* arena, const CurrentOfExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_cursor_name(Arg_&& arg, Args_... args); std::string* mutable_cursor_name(); PROTOBUF_NODISCARD std::string* release_cursor_name(); void set_allocated_cursor_name(std::string* value); private: const std::string& _internal_cursor_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 cvarno = 2 [json_name = "cvarno"]; void clear_cvarno() ; ::uint32_t cvarno() const; void set_cvarno(::uint32_t value); private: ::uint32_t _internal_cvarno() const; void _internal_set_cvarno(::uint32_t value); public: // int32 cursor_param = 4 [json_name = "cursor_param"]; void clear_cursor_param() ; ::int32_t cursor_param() const; void set_cursor_param(::int32_t value); private: ::int32_t _internal_cursor_param() const; void _internal_set_cursor_param(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.CurrentOfExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 1, 42, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr cursor_name_; ::pg_query::Node* xpr_; ::uint32_t cvarno_; ::int32_t cursor_param_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DeclareCursorStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DeclareCursorStmt) */ { public: inline DeclareCursorStmt() : DeclareCursorStmt(nullptr) {} ~DeclareCursorStmt() override; template explicit PROTOBUF_CONSTEXPR DeclareCursorStmt(::google::protobuf::internal::ConstantInitialized); inline DeclareCursorStmt(const DeclareCursorStmt& from) : DeclareCursorStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DeclareCursorStmt& default_instance() { return *internal_default_instance(); } static inline const DeclareCursorStmt* internal_default_instance() { return reinterpret_cast( &_DeclareCursorStmt_default_instance_); } static constexpr int kIndexInFileMessages = 206; friend void swap(DeclareCursorStmt& a, DeclareCursorStmt& b) { a.Swap(&b); } inline void Swap(DeclareCursorStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DeclareCursorStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DeclareCursorStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DeclareCursorStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DeclareCursorStmt& from) { DeclareCursorStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DeclareCursorStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DeclareCursorStmt"; } protected: explicit DeclareCursorStmt(::google::protobuf::Arena* arena); DeclareCursorStmt(::google::protobuf::Arena* arena, const DeclareCursorStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_portalname(Arg_&& arg, Args_... args); std::string* mutable_portalname(); PROTOBUF_NODISCARD std::string* release_portalname(); void set_allocated_portalname(std::string* value); private: const std::string& _internal_portalname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_query() ; const ::pg_query::Node& query() const; PROTOBUF_NODISCARD ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* value); void unsafe_arena_set_allocated_query(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_query(); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: // int32 options = 2 [json_name = "options"]; void clear_options() ; ::int32_t options() const; void set_options(::int32_t value); private: ::int32_t _internal_options() const; void _internal_set_options(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.DeclareCursorStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 45, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr portalname_; ::pg_query::Node* query_; ::int32_t options_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DefElem final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DefElem) */ { public: inline DefElem() : DefElem(nullptr) {} ~DefElem() override; template explicit PROTOBUF_CONSTEXPR DefElem(::google::protobuf::internal::ConstantInitialized); inline DefElem(const DefElem& from) : DefElem(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DefElem& default_instance() { return *internal_default_instance(); } static inline const DefElem* internal_default_instance() { return reinterpret_cast( &_DefElem_default_instance_); } static constexpr int kIndexInFileMessages = 100; friend void swap(DefElem& a, DefElem& b) { a.Swap(&b); } inline void Swap(DefElem* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DefElem* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DefElem* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DefElem& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DefElem& from) { DefElem::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DefElem* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DefElem"; } protected: explicit DefElem(::google::protobuf::Arena* arena); DefElem(::google::protobuf::Arena* arena, const DefElem& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_defnamespace(Arg_&& arg, Args_... args); std::string* mutable_defnamespace(); PROTOBUF_NODISCARD std::string* release_defnamespace(); void set_allocated_defnamespace(std::string* value); private: const std::string& _internal_defnamespace() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_defname(Arg_&& arg, Args_... args); std::string* mutable_defname(); PROTOBUF_NODISCARD std::string* release_defname(); void set_allocated_defname(std::string* value); private: const std::string& _internal_defname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // .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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.DefElem) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 1, 44, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr defnamespace_; ::google::protobuf::internal::ArenaStringPtr defname_; ::pg_query::Node* arg_; int defaction_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DefineStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DefineStmt) */ { public: inline DefineStmt() : DefineStmt(nullptr) {} ~DefineStmt() override; template explicit PROTOBUF_CONSTEXPR DefineStmt(::google::protobuf::internal::ConstantInitialized); inline DefineStmt(const DefineStmt& from) : DefineStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DefineStmt& default_instance() { return *internal_default_instance(); } static inline const DefineStmt* internal_default_instance() { return reinterpret_cast( &_DefineStmt_default_instance_); } static constexpr int kIndexInFileMessages = 196; friend void swap(DefineStmt& a, DefineStmt& b) { a.Swap(&b); } inline void Swap(DefineStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DefineStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DefineStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DefineStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DefineStmt& from) { DefineStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DefineStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DefineStmt"; } protected: explicit DefineStmt(::google::protobuf::Arena* arena); DefineStmt(::google::protobuf::Arena* arena, const DefineStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_defnames(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_defnames() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_defnames(); public: const ::pg_query::Node& defnames(int index) const; ::pg_query::Node* add_defnames(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_definition(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_definition() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_definition(); public: const ::pg_query::Node& definition(int index) const; ::pg_query::Node* add_definition(); const ::google::protobuf::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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > defnames_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > definition_; int kind_; bool oldstyle_; bool if_not_exists_; bool replace_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DeleteStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DeleteStmt) */ { public: inline DeleteStmt() : DeleteStmt(nullptr) {} ~DeleteStmt() override; template explicit PROTOBUF_CONSTEXPR DeleteStmt(::google::protobuf::internal::ConstantInitialized); inline DeleteStmt(const DeleteStmt& from) : DeleteStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DeleteStmt& default_instance() { return *internal_default_instance(); } static inline const DeleteStmt* internal_default_instance() { return reinterpret_cast( &_DeleteStmt_default_instance_); } static constexpr int kIndexInFileMessages = 144; friend void swap(DeleteStmt& a, DeleteStmt& b) { a.Swap(&b); } inline void Swap(DeleteStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DeleteStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DeleteStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DeleteStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DeleteStmt& from) { DeleteStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DeleteStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DeleteStmt"; } protected: explicit DeleteStmt(::google::protobuf::Arena* arena); DeleteStmt(::google::protobuf::Arena* arena, const DeleteStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_using_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_using_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_using_clause(); public: const ::pg_query::Node& using_clause(int index) const; ::pg_query::Node* add_using_clause(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_returning_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_returning_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_returning_list(); public: const ::pg_query::Node& returning_list(int index) const; ::pg_query::Node* add_returning_list(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& returning_list() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; bool has_where_clause() const; void clear_where_clause() ; const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* value); void unsafe_arena_set_allocated_where_clause(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_where_clause(); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; bool has_with_clause() const; void clear_with_clause() ; const ::pg_query::WithClause& with_clause() const; PROTOBUF_NODISCARD ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* value); void unsafe_arena_set_allocated_with_clause(::pg_query::WithClause* value); ::pg_query::WithClause* unsafe_arena_release_with_clause(); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: // @@protoc_insertion_point(class_scope:pg_query.DeleteStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 5, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > using_clause_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > returning_list_; ::pg_query::RangeVar* relation_; ::pg_query::Node* where_clause_; ::pg_query::WithClause* with_clause_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DistinctExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DistinctExpr) */ { public: inline DistinctExpr() : DistinctExpr(nullptr) {} ~DistinctExpr() override; template explicit PROTOBUF_CONSTEXPR DistinctExpr(::google::protobuf::internal::ConstantInitialized); inline DistinctExpr(const DistinctExpr& from) : DistinctExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DistinctExpr& default_instance() { return *internal_default_instance(); } static inline const DistinctExpr* internal_default_instance() { return reinterpret_cast( &_DistinctExpr_default_instance_); } static constexpr int kIndexInFileMessages = 27; friend void swap(DistinctExpr& a, DistinctExpr& b) { a.Swap(&b); } inline void Swap(DistinctExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DistinctExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DistinctExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DistinctExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DistinctExpr& from) { DistinctExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DistinctExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DistinctExpr"; } protected: explicit DistinctExpr(::google::protobuf::Arena* arena); DistinctExpr(::google::protobuf::Arena* arena, const DistinctExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 7, kXprFieldNumber = 1, kOpnoFieldNumber = 2, kOpresulttypeFieldNumber = 3, kOpretsetFieldNumber = 4, kOpcollidFieldNumber = 5, kInputcollidFieldNumber = 6, kLocationFieldNumber = 8, }; // repeated .pg_query.Node args = 7 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args() ; ::pg_query::Node* mutable_args(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 opno = 2 [json_name = "opno"]; void clear_opno() ; ::uint32_t opno() const; void set_opno(::uint32_t value); private: ::uint32_t _internal_opno() const; void _internal_set_opno(::uint32_t value); public: // uint32 opresulttype = 3 [json_name = "opresulttype"]; void clear_opresulttype() ; ::uint32_t opresulttype() const; void set_opresulttype(::uint32_t value); private: ::uint32_t _internal_opresulttype() const; void _internal_set_opresulttype(::uint32_t value); public: // bool opretset = 4 [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 = 5 [json_name = "opcollid"]; void clear_opcollid() ; ::uint32_t opcollid() const; void set_opcollid(::uint32_t value); private: ::uint32_t _internal_opcollid() const; void _internal_set_opcollid(::uint32_t value); public: // uint32 inputcollid = 6 [json_name = "inputcollid"]; void clear_inputcollid() ; ::uint32_t inputcollid() const; void set_inputcollid(::uint32_t value); private: ::uint32_t _internal_inputcollid() const; void _internal_set_inputcollid(::uint32_t value); public: // int32 location = 8 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.DistinctExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::uint32_t opno_; ::uint32_t opresulttype_; bool opretset_; ::uint32_t opcollid_; ::uint32_t inputcollid_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DoStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DoStmt) */ { public: inline DoStmt() : DoStmt(nullptr) {} ~DoStmt() override; template explicit PROTOBUF_CONSTEXPR DoStmt(::google::protobuf::internal::ConstantInitialized); inline DoStmt(const DoStmt& from) : DoStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DoStmt& default_instance() { return *internal_default_instance(); } static inline const DoStmt* internal_default_instance() { return reinterpret_cast( &_DoStmt_default_instance_); } static constexpr int kIndexInFileMessages = 216; friend void swap(DoStmt& a, DoStmt& b) { a.Swap(&b); } inline void Swap(DoStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DoStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DoStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DoStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DoStmt& from) { DoStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DoStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DoStmt"; } protected: explicit DoStmt(::google::protobuf::Arena* arena); DoStmt(::google::protobuf::Arena* arena, const DoStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // @@protoc_insertion_point(class_scope:pg_query.DoStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DropOwnedStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DropOwnedStmt) */ { public: inline DropOwnedStmt() : DropOwnedStmt(nullptr) {} ~DropOwnedStmt() override; template explicit PROTOBUF_CONSTEXPR DropOwnedStmt(::google::protobuf::internal::ConstantInitialized); inline DropOwnedStmt(const DropOwnedStmt& from) : DropOwnedStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DropOwnedStmt& default_instance() { return *internal_default_instance(); } static inline const DropOwnedStmt* internal_default_instance() { return reinterpret_cast( &_DropOwnedStmt_default_instance_); } static constexpr int kIndexInFileMessages = 260; friend void swap(DropOwnedStmt& a, DropOwnedStmt& b) { a.Swap(&b); } inline void Swap(DropOwnedStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropOwnedStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DropOwnedStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DropOwnedStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DropOwnedStmt& from) { DropOwnedStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DropOwnedStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DropOwnedStmt"; } protected: explicit DropOwnedStmt(::google::protobuf::Arena* arena); DropOwnedStmt(::google::protobuf::Arena* arena, const DropOwnedStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_roles() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::google::protobuf::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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > roles_; int behavior_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DropRoleStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DropRoleStmt) */ { public: inline DropRoleStmt() : DropRoleStmt(nullptr) {} ~DropRoleStmt() override; template explicit PROTOBUF_CONSTEXPR DropRoleStmt(::google::protobuf::internal::ConstantInitialized); inline DropRoleStmt(const DropRoleStmt& from) : DropRoleStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DropRoleStmt& default_instance() { return *internal_default_instance(); } static inline const DropRoleStmt* internal_default_instance() { return reinterpret_cast( &_DropRoleStmt_default_instance_); } static constexpr int kIndexInFileMessages = 193; friend void swap(DropRoleStmt& a, DropRoleStmt& b) { a.Swap(&b); } inline void Swap(DropRoleStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropRoleStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DropRoleStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DropRoleStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DropRoleStmt& from) { DropRoleStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DropRoleStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DropRoleStmt"; } protected: explicit DropRoleStmt(::google::protobuf::Arena* arena); DropRoleStmt(::google::protobuf::Arena* arena, const DropRoleStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_roles() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::google::protobuf::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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > roles_; bool missing_ok_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DropStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DropStmt) */ { public: inline DropStmt() : DropStmt(nullptr) {} ~DropStmt() override; template explicit PROTOBUF_CONSTEXPR DropStmt(::google::protobuf::internal::ConstantInitialized); inline DropStmt(const DropStmt& from) : DropStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DropStmt& default_instance() { return *internal_default_instance(); } static inline const DropStmt* internal_default_instance() { return reinterpret_cast( &_DropStmt_default_instance_); } static constexpr int kIndexInFileMessages = 202; friend void swap(DropStmt& a, DropStmt& b) { a.Swap(&b); } inline void Swap(DropStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DropStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DropStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DropStmt& from) { DropStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DropStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DropStmt"; } protected: explicit DropStmt(::google::protobuf::Arena* arena); DropStmt(::google::protobuf::Arena* arena, const DropStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_objects(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_objects() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_objects(); public: const ::pg_query::Node& objects(int index) const; ::pg_query::Node* add_objects(); const ::google::protobuf::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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > objects_; int remove_type_; int behavior_; bool missing_ok_; bool concurrent_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class DropdbStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.DropdbStmt) */ { public: inline DropdbStmt() : DropdbStmt(nullptr) {} ~DropdbStmt() override; template explicit PROTOBUF_CONSTEXPR DropdbStmt(::google::protobuf::internal::ConstantInitialized); inline DropdbStmt(const DropdbStmt& from) : DropdbStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const DropdbStmt& default_instance() { return *internal_default_instance(); } static inline const DropdbStmt* internal_default_instance() { return reinterpret_cast( &_DropdbStmt_default_instance_); } static constexpr int kIndexInFileMessages = 241; friend void swap(DropdbStmt& a, DropdbStmt& b) { a.Swap(&b); } inline void Swap(DropdbStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropdbStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- DropdbStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const DropdbStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const DropdbStmt& from) { DropdbStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(DropdbStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.DropdbStmt"; } protected: explicit DropdbStmt(::google::protobuf::Arena* arena); DropdbStmt(::google::protobuf::Arena* arena, const DropdbStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string dbname = 1 [json_name = "dbname"]; void clear_dbname() ; const std::string& dbname() const; template void set_dbname(Arg_&& arg, Args_... args); std::string* mutable_dbname(); PROTOBUF_NODISCARD std::string* release_dbname(); void set_allocated_dbname(std::string* value); private: const std::string& _internal_dbname() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 34, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr dbname_; bool missing_ok_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ExecuteStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ExecuteStmt) */ { public: inline ExecuteStmt() : ExecuteStmt(nullptr) {} ~ExecuteStmt() override; template explicit PROTOBUF_CONSTEXPR ExecuteStmt(::google::protobuf::internal::ConstantInitialized); inline ExecuteStmt(const ExecuteStmt& from) : ExecuteStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ExecuteStmt& default_instance() { return *internal_default_instance(); } static inline const ExecuteStmt* internal_default_instance() { return reinterpret_cast( &_ExecuteStmt_default_instance_); } static constexpr int kIndexInFileMessages = 258; friend void swap(ExecuteStmt& a, ExecuteStmt& b) { a.Swap(&b); } inline void Swap(ExecuteStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ExecuteStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ExecuteStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ExecuteStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ExecuteStmt& from) { ExecuteStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ExecuteStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ExecuteStmt"; } protected: explicit ExecuteStmt(::google::protobuf::Arena* arena); ExecuteStmt(::google::protobuf::Arena* arena, const ExecuteStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_params(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_params() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_params(); public: const ::pg_query::Node& params(int index) const; ::pg_query::Node* add_params(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& params() const; // string name = 1 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 33, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > params_; ::google::protobuf::internal::ArenaStringPtr name_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ExplainStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ExplainStmt) */ { public: inline ExplainStmt() : ExplainStmt(nullptr) {} ~ExplainStmt() override; template explicit PROTOBUF_CONSTEXPR ExplainStmt(::google::protobuf::internal::ConstantInitialized); inline ExplainStmt(const ExplainStmt& from) : ExplainStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ExplainStmt& default_instance() { return *internal_default_instance(); } static inline const ExplainStmt* internal_default_instance() { return reinterpret_cast( &_ExplainStmt_default_instance_); } static constexpr int kIndexInFileMessages = 246; friend void swap(ExplainStmt& a, ExplainStmt& b) { a.Swap(&b); } inline void Swap(ExplainStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ExplainStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ExplainStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ExplainStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ExplainStmt& from) { ExplainStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ExplainStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ExplainStmt"; } protected: explicit ExplainStmt(::google::protobuf::Arena* arena); ExplainStmt(::google::protobuf::Arena* arena, const ExplainStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.Node query = 1 [json_name = "query"]; bool has_query() const; void clear_query() ; const ::pg_query::Node& query() const; PROTOBUF_NODISCARD ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* value); void unsafe_arena_set_allocated_query(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_query(); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: // @@protoc_insertion_point(class_scope:pg_query.ExplainStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::Node* query_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class FieldSelect final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.FieldSelect) */ { public: inline FieldSelect() : FieldSelect(nullptr) {} ~FieldSelect() override; template explicit PROTOBUF_CONSTEXPR FieldSelect(::google::protobuf::internal::ConstantInitialized); inline FieldSelect(const FieldSelect& from) : FieldSelect(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const FieldSelect& default_instance() { return *internal_default_instance(); } static inline const FieldSelect* internal_default_instance() { return reinterpret_cast( &_FieldSelect_default_instance_); } static constexpr int kIndexInFileMessages = 34; friend void swap(FieldSelect& a, FieldSelect& b) { a.Swap(&b); } inline void Swap(FieldSelect* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FieldSelect* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- FieldSelect* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const FieldSelect& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const FieldSelect& from) { FieldSelect::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(FieldSelect* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.FieldSelect"; } protected: explicit FieldSelect(::google::protobuf::Arena* arena); FieldSelect(::google::protobuf::Arena* arena, const FieldSelect& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // int32 fieldnum = 3 [json_name = "fieldnum"]; void clear_fieldnum() ; ::int32_t fieldnum() const; void set_fieldnum(::int32_t value); private: ::int32_t _internal_fieldnum() const; void _internal_set_fieldnum(::int32_t value); public: // uint32 resulttype = 4 [json_name = "resulttype"]; void clear_resulttype() ; ::uint32_t resulttype() const; void set_resulttype(::uint32_t value); private: ::uint32_t _internal_resulttype() const; void _internal_set_resulttype(::uint32_t value); public: // int32 resulttypmod = 5 [json_name = "resulttypmod"]; void clear_resulttypmod() ; ::int32_t resulttypmod() const; void set_resulttypmod(::int32_t value); private: ::int32_t _internal_resulttypmod() const; void _internal_set_resulttypmod(::int32_t value); public: // uint32 resultcollid = 6 [json_name = "resultcollid"]; void clear_resultcollid() ; ::uint32_t resultcollid() const; void set_resultcollid(::uint32_t value); private: ::uint32_t _internal_resultcollid() const; void _internal_set_resultcollid(::uint32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.FieldSelect) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::int32_t fieldnum_; ::uint32_t resulttype_; ::int32_t resulttypmod_; ::uint32_t resultcollid_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class FieldStore final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.FieldStore) */ { public: inline FieldStore() : FieldStore(nullptr) {} ~FieldStore() override; template explicit PROTOBUF_CONSTEXPR FieldStore(::google::protobuf::internal::ConstantInitialized); inline FieldStore(const FieldStore& from) : FieldStore(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const FieldStore& default_instance() { return *internal_default_instance(); } static inline const FieldStore* internal_default_instance() { return reinterpret_cast( &_FieldStore_default_instance_); } static constexpr int kIndexInFileMessages = 35; friend void swap(FieldStore& a, FieldStore& b) { a.Swap(&b); } inline void Swap(FieldStore* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FieldStore* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- FieldStore* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const FieldStore& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const FieldStore& from) { FieldStore::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(FieldStore* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.FieldStore"; } protected: explicit FieldStore(::google::protobuf::Arena* arena); FieldStore(::google::protobuf::Arena* arena, const FieldStore& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_newvals(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_newvals() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_newvals(); public: const ::pg_query::Node& newvals(int index) const; ::pg_query::Node* add_newvals(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_fieldnums(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_fieldnums() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_fieldnums(); public: const ::pg_query::Node& fieldnums(int index) const; ::pg_query::Node* add_fieldnums(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& fieldnums() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // uint32 resulttype = 5 [json_name = "resulttype"]; void clear_resulttype() ; ::uint32_t resulttype() const; void set_resulttype(::uint32_t value); private: ::uint32_t _internal_resulttype() const; void _internal_set_resulttype(::uint32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.FieldStore) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 4, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > newvals_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > fieldnums_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::uint32_t resulttype_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class FromExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.FromExpr) */ { public: inline FromExpr() : FromExpr(nullptr) {} ~FromExpr() override; template explicit PROTOBUF_CONSTEXPR FromExpr(::google::protobuf::internal::ConstantInitialized); inline FromExpr(const FromExpr& from) : FromExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const FromExpr& default_instance() { return *internal_default_instance(); } static inline const FromExpr* internal_default_instance() { return reinterpret_cast( &_FromExpr_default_instance_); } static constexpr int kIndexInFileMessages = 73; friend void swap(FromExpr& a, FromExpr& b) { a.Swap(&b); } inline void Swap(FromExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FromExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- FromExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const FromExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const FromExpr& from) { FromExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(FromExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.FromExpr"; } protected: explicit FromExpr(::google::protobuf::Arena* arena); FromExpr(::google::protobuf::Arena* arena, const FromExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_fromlist(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_fromlist() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_fromlist(); public: const ::pg_query::Node& fromlist(int index) const; ::pg_query::Node* add_fromlist(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& fromlist() const; // .pg_query.Node quals = 2 [json_name = "quals"]; bool has_quals() const; void clear_quals() ; const ::pg_query::Node& quals() const; PROTOBUF_NODISCARD ::pg_query::Node* release_quals(); ::pg_query::Node* mutable_quals(); void set_allocated_quals(::pg_query::Node* value); void unsafe_arena_set_allocated_quals(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_quals(); private: const ::pg_query::Node& _internal_quals() const; ::pg_query::Node* _internal_mutable_quals(); public: // @@protoc_insertion_point(class_scope:pg_query.FromExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > fromlist_; ::pg_query::Node* quals_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class FuncCall final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.FuncCall) */ { public: inline FuncCall() : FuncCall(nullptr) {} ~FuncCall() override; template explicit PROTOBUF_CONSTEXPR FuncCall(::google::protobuf::internal::ConstantInitialized); inline FuncCall(const FuncCall& from) : FuncCall(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const FuncCall& default_instance() { return *internal_default_instance(); } static inline const FuncCall* internal_default_instance() { return reinterpret_cast( &_FuncCall_default_instance_); } static constexpr int kIndexInFileMessages = 83; friend void swap(FuncCall& a, FuncCall& b) { a.Swap(&b); } inline void Swap(FuncCall* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FuncCall* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- FuncCall* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const FuncCall& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const FuncCall& from) { FuncCall::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(FuncCall* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.FuncCall"; } protected: explicit FuncCall(::google::protobuf::Arena* arena); FuncCall(::google::protobuf::Arena* arena, const FuncCall& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFuncnameFieldNumber = 1, kArgsFieldNumber = 2, kAggOrderFieldNumber = 3, kAggFilterFieldNumber = 4, kOverFieldNumber = 5, kAggWithinGroupFieldNumber = 6, kAggStarFieldNumber = 7, kAggDistinctFieldNumber = 8, kFuncVariadicFieldNumber = 9, kFuncformatFieldNumber = 10, kLocationFieldNumber = 11, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_funcname(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_funcname() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_funcname(); public: const ::pg_query::Node& funcname(int index) const; ::pg_query::Node* add_funcname(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_agg_order(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_agg_order() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_agg_order(); public: const ::pg_query::Node& agg_order(int index) const; ::pg_query::Node* add_agg_order(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& agg_order() const; // .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; bool has_agg_filter() const; void clear_agg_filter() ; const ::pg_query::Node& agg_filter() const; PROTOBUF_NODISCARD ::pg_query::Node* release_agg_filter(); ::pg_query::Node* mutable_agg_filter(); void set_allocated_agg_filter(::pg_query::Node* value); void unsafe_arena_set_allocated_agg_filter(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_agg_filter(); private: const ::pg_query::Node& _internal_agg_filter() const; ::pg_query::Node* _internal_mutable_agg_filter(); public: // .pg_query.WindowDef over = 5 [json_name = "over"]; bool has_over() const; void clear_over() ; const ::pg_query::WindowDef& over() const; PROTOBUF_NODISCARD ::pg_query::WindowDef* release_over(); ::pg_query::WindowDef* mutable_over(); void set_allocated_over(::pg_query::WindowDef* value); void unsafe_arena_set_allocated_over(::pg_query::WindowDef* value); ::pg_query::WindowDef* unsafe_arena_release_over(); private: const ::pg_query::WindowDef& _internal_over() const; ::pg_query::WindowDef* _internal_mutable_over(); public: // bool agg_within_group = 6 [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 = 7 [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 = 8 [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 = 9 [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: // .pg_query.CoercionForm funcformat = 10 [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: // int32 location = 11 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.FuncCall) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 11, 5, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > funcname_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::google::protobuf::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_; int funcformat_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class FuncExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.FuncExpr) */ { public: inline FuncExpr() : FuncExpr(nullptr) {} ~FuncExpr() override; template explicit PROTOBUF_CONSTEXPR FuncExpr(::google::protobuf::internal::ConstantInitialized); inline FuncExpr(const FuncExpr& from) : FuncExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const FuncExpr& default_instance() { return *internal_default_instance(); } static inline const FuncExpr* internal_default_instance() { return reinterpret_cast( &_FuncExpr_default_instance_); } static constexpr int kIndexInFileMessages = 24; friend void swap(FuncExpr& a, FuncExpr& b) { a.Swap(&b); } inline void Swap(FuncExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FuncExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- FuncExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const FuncExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const FuncExpr& from) { FuncExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(FuncExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.FuncExpr"; } protected: explicit FuncExpr(::google::protobuf::Arena* arena); FuncExpr(::google::protobuf::Arena* arena, const FuncExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 funcid = 2 [json_name = "funcid"]; void clear_funcid() ; ::uint32_t funcid() const; void set_funcid(::uint32_t value); private: ::uint32_t _internal_funcid() const; void _internal_set_funcid(::uint32_t value); public: // uint32 funcresulttype = 3 [json_name = "funcresulttype"]; void clear_funcresulttype() ; ::uint32_t funcresulttype() const; void set_funcresulttype(::uint32_t value); private: ::uint32_t _internal_funcresulttype() const; void _internal_set_funcresulttype(::uint32_t 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() ; ::uint32_t funccollid() const; void set_funccollid(::uint32_t value); private: ::uint32_t _internal_funccollid() const; void _internal_set_funccollid(::uint32_t value); public: // uint32 inputcollid = 8 [json_name = "inputcollid"]; void clear_inputcollid() ; ::uint32_t inputcollid() const; void set_inputcollid(::uint32_t value); private: ::uint32_t _internal_inputcollid() const; void _internal_set_inputcollid(::uint32_t value); public: // int32 location = 10 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.FuncExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 10, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::uint32_t funcid_; ::uint32_t funcresulttype_; bool funcretset_; bool funcvariadic_; int funcformat_; ::uint32_t funccollid_; ::uint32_t inputcollid_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class FunctionParameter final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.FunctionParameter) */ { public: inline FunctionParameter() : FunctionParameter(nullptr) {} ~FunctionParameter() override; template explicit PROTOBUF_CONSTEXPR FunctionParameter(::google::protobuf::internal::ConstantInitialized); inline FunctionParameter(const FunctionParameter& from) : FunctionParameter(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const FunctionParameter& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FunctionParameter* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- FunctionParameter* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const FunctionParameter& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const FunctionParameter& from) { FunctionParameter::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(FunctionParameter* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.FunctionParameter"; } protected: explicit FunctionParameter(::google::protobuf::Arena* arena); FunctionParameter(::google::protobuf::Arena* arena, const FunctionParameter& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_arg_type() ; const ::pg_query::TypeName& arg_type() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_arg_type(); ::pg_query::TypeName* mutable_arg_type(); void set_allocated_arg_type(::pg_query::TypeName* value); void unsafe_arena_set_allocated_arg_type(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_arg_type(); private: const ::pg_query::TypeName& _internal_arg_type() const; ::pg_query::TypeName* _internal_mutable_arg_type(); public: // .pg_query.Node defexpr = 4 [json_name = "defexpr"]; bool has_defexpr() const; void clear_defexpr() ; const ::pg_query::Node& defexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_defexpr(); ::pg_query::Node* mutable_defexpr(); void set_allocated_defexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_defexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_defexpr(); private: const ::pg_query::Node& _internal_defexpr() const; ::pg_query::Node* _internal_mutable_defexpr(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 39, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::TypeName* arg_type_; ::pg_query::Node* defexpr_; int mode_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class GrantRoleStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.GrantRoleStmt) */ { public: inline GrantRoleStmt() : GrantRoleStmt(nullptr) {} ~GrantRoleStmt() override; template explicit PROTOBUF_CONSTEXPR GrantRoleStmt(::google::protobuf::internal::ConstantInitialized); inline GrantRoleStmt(const GrantRoleStmt& from) : GrantRoleStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const GrantRoleStmt& default_instance() { return *internal_default_instance(); } static inline const GrantRoleStmt* internal_default_instance() { return reinterpret_cast( &_GrantRoleStmt_default_instance_); } static constexpr int kIndexInFileMessages = 160; friend void swap(GrantRoleStmt& a, GrantRoleStmt& b) { a.Swap(&b); } inline void Swap(GrantRoleStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(GrantRoleStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- GrantRoleStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const GrantRoleStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const GrantRoleStmt& from) { GrantRoleStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(GrantRoleStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.GrantRoleStmt"; } protected: explicit GrantRoleStmt(::google::protobuf::Arena* arena); GrantRoleStmt(::google::protobuf::Arena* arena, const GrantRoleStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kGrantedRolesFieldNumber = 1, kGranteeRolesFieldNumber = 2, kOptFieldNumber = 4, kGrantorFieldNumber = 5, kIsGrantFieldNumber = 3, 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_granted_roles(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_granted_roles() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_granted_roles(); public: const ::pg_query::Node& granted_roles(int index) const; ::pg_query::Node* add_granted_roles(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_grantee_roles(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_grantee_roles() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_grantee_roles(); public: const ::pg_query::Node& grantee_roles(int index) const; ::pg_query::Node* add_grantee_roles(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& grantee_roles() const; // repeated .pg_query.Node opt = 4 [json_name = "opt"]; int opt_size() const; private: int _internal_opt_size() const; public: void clear_opt() ; ::pg_query::Node* mutable_opt(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_opt(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_opt() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_opt(); public: const ::pg_query::Node& opt(int index) const; ::pg_query::Node* add_opt(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& opt() const; // .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; bool has_grantor() const; void clear_grantor() ; const ::pg_query::RoleSpec& grantor() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_grantor(); ::pg_query::RoleSpec* mutable_grantor(); void set_allocated_grantor(::pg_query::RoleSpec* value); void unsafe_arena_set_allocated_grantor(::pg_query::RoleSpec* value); ::pg_query::RoleSpec* unsafe_arena_release_grantor(); private: const ::pg_query::RoleSpec& _internal_grantor() const; ::pg_query::RoleSpec* _internal_mutable_grantor(); public: // 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: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 4, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > granted_roles_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > grantee_roles_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > opt_; ::pg_query::RoleSpec* grantor_; bool is_grant_; int behavior_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class GrantStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.GrantStmt) */ { public: inline GrantStmt() : GrantStmt(nullptr) {} ~GrantStmt() override; template explicit PROTOBUF_CONSTEXPR GrantStmt(::google::protobuf::internal::ConstantInitialized); inline GrantStmt(const GrantStmt& from) : GrantStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const GrantStmt& default_instance() { return *internal_default_instance(); } static inline const GrantStmt* internal_default_instance() { return reinterpret_cast( &_GrantStmt_default_instance_); } static constexpr int kIndexInFileMessages = 157; friend void swap(GrantStmt& a, GrantStmt& b) { a.Swap(&b); } inline void Swap(GrantStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(GrantStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- GrantStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const GrantStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const GrantStmt& from) { GrantStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(GrantStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.GrantStmt"; } protected: explicit GrantStmt(::google::protobuf::Arena* arena); GrantStmt(::google::protobuf::Arena* arena, const GrantStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kObjectsFieldNumber = 4, kPrivilegesFieldNumber = 5, kGranteesFieldNumber = 6, kGrantorFieldNumber = 8, kTargtypeFieldNumber = 2, kObjtypeFieldNumber = 3, kIsGrantFieldNumber = 1, kGrantOptionFieldNumber = 7, kBehaviorFieldNumber = 9, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_objects(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_objects() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_objects(); public: const ::pg_query::Node& objects(int index) const; ::pg_query::Node* add_objects(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_privileges(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_privileges() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_privileges(); public: const ::pg_query::Node& privileges(int index) const; ::pg_query::Node* add_privileges(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_grantees(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_grantees() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_grantees(); public: const ::pg_query::Node& grantees(int index) const; ::pg_query::Node* add_grantees(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& grantees() const; // .pg_query.RoleSpec grantor = 8 [json_name = "grantor"]; bool has_grantor() const; void clear_grantor() ; const ::pg_query::RoleSpec& grantor() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_grantor(); ::pg_query::RoleSpec* mutable_grantor(); void set_allocated_grantor(::pg_query::RoleSpec* value); void unsafe_arena_set_allocated_grantor(::pg_query::RoleSpec* value); ::pg_query::RoleSpec* unsafe_arena_release_grantor(); private: const ::pg_query::RoleSpec& _internal_grantor() const; ::pg_query::RoleSpec* _internal_mutable_grantor(); public: // .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 = 9 [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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 9, 4, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > objects_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > privileges_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > grantees_; ::pg_query::RoleSpec* grantor_; int targtype_; int objtype_; bool is_grant_; bool grant_option_; int behavior_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class GroupingFunc final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.GroupingFunc) */ { public: inline GroupingFunc() : GroupingFunc(nullptr) {} ~GroupingFunc() override; template explicit PROTOBUF_CONSTEXPR GroupingFunc(::google::protobuf::internal::ConstantInitialized); inline GroupingFunc(const GroupingFunc& from) : GroupingFunc(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const GroupingFunc& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(GroupingFunc* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- GroupingFunc* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const GroupingFunc& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const GroupingFunc& from) { GroupingFunc::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(GroupingFunc* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.GroupingFunc"; } protected: explicit GroupingFunc(::google::protobuf::Arena* arena); GroupingFunc(::google::protobuf::Arena* arena, const GroupingFunc& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 2, kRefsFieldNumber = 3, kXprFieldNumber = 1, kAgglevelsupFieldNumber = 4, kLocationFieldNumber = 5, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_refs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_refs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_refs(); public: const ::pg_query::Node& refs(int index) const; ::pg_query::Node* add_refs(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& refs() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 agglevelsup = 4 [json_name = "agglevelsup"]; void clear_agglevelsup() ; ::uint32_t agglevelsup() const; void set_agglevelsup(::uint32_t value); private: ::uint32_t _internal_agglevelsup() const; void _internal_set_agglevelsup(::uint32_t value); public: // int32 location = 5 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.GroupingFunc) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > refs_; ::pg_query::Node* xpr_; ::uint32_t agglevelsup_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class GroupingSet final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.GroupingSet) */ { public: inline GroupingSet() : GroupingSet(nullptr) {} ~GroupingSet() override; template explicit PROTOBUF_CONSTEXPR GroupingSet(::google::protobuf::internal::ConstantInitialized); inline GroupingSet(const GroupingSet& from) : GroupingSet(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const GroupingSet& default_instance() { return *internal_default_instance(); } static inline const GroupingSet* internal_default_instance() { return reinterpret_cast( &_GroupingSet_default_instance_); } static constexpr int kIndexInFileMessages = 115; friend void swap(GroupingSet& a, GroupingSet& b) { a.Swap(&b); } inline void Swap(GroupingSet* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(GroupingSet* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- GroupingSet* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const GroupingSet& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const GroupingSet& from) { GroupingSet::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(GroupingSet* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.GroupingSet"; } protected: explicit GroupingSet(::google::protobuf::Arena* arena); GroupingSet(::google::protobuf::Arena* arena, const GroupingSet& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_content(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_content() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_content(); public: const ::pg_query::Node& content(int index) const; ::pg_query::Node* add_content(); const ::google::protobuf::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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.GroupingSet) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > content_; int kind_; ::int32_t location_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ImportForeignSchemaStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ImportForeignSchemaStmt) */ { public: inline ImportForeignSchemaStmt() : ImportForeignSchemaStmt(nullptr) {} ~ImportForeignSchemaStmt() override; template explicit PROTOBUF_CONSTEXPR ImportForeignSchemaStmt(::google::protobuf::internal::ConstantInitialized); inline ImportForeignSchemaStmt(const ImportForeignSchemaStmt& from) : ImportForeignSchemaStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ImportForeignSchemaStmt& default_instance() { return *internal_default_instance(); } static inline const ImportForeignSchemaStmt* internal_default_instance() { return reinterpret_cast( &_ImportForeignSchemaStmt_default_instance_); } static constexpr int kIndexInFileMessages = 182; friend void swap(ImportForeignSchemaStmt& a, ImportForeignSchemaStmt& b) { a.Swap(&b); } inline void Swap(ImportForeignSchemaStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ImportForeignSchemaStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ImportForeignSchemaStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ImportForeignSchemaStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ImportForeignSchemaStmt& from) { ImportForeignSchemaStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ImportForeignSchemaStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ImportForeignSchemaStmt"; } protected: explicit ImportForeignSchemaStmt(::google::protobuf::Arena* arena); ImportForeignSchemaStmt(::google::protobuf::Arena* arena, const ImportForeignSchemaStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_table_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_table_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_table_list(); public: const ::pg_query::Node& table_list(int index) const; ::pg_query::Node* add_table_list(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string server_name = 1 [json_name = "server_name"]; void clear_server_name() ; const std::string& server_name() const; template void set_server_name(Arg_&& arg, Args_... args); std::string* mutable_server_name(); PROTOBUF_NODISCARD std::string* release_server_name(); void set_allocated_server_name(std::string* value); private: const std::string& _internal_server_name() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_remote_schema(Arg_&& arg, Args_... args); std::string* mutable_remote_schema(); PROTOBUF_NODISCARD std::string* release_remote_schema(); void set_allocated_remote_schema(std::string* value); private: const std::string& _internal_remote_schema() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_local_schema(Arg_&& arg, Args_... args); std::string* mutable_local_schema(); PROTOBUF_NODISCARD std::string* release_local_schema(); void set_allocated_local_schema(std::string* value); private: const std::string& _internal_local_schema() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 2, 77, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > table_list_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr server_name_; ::google::protobuf::internal::ArenaStringPtr remote_schema_; ::google::protobuf::internal::ArenaStringPtr local_schema_; int list_type_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class IndexElem final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.IndexElem) */ { public: inline IndexElem() : IndexElem(nullptr) {} ~IndexElem() override; template explicit PROTOBUF_CONSTEXPR IndexElem(::google::protobuf::internal::ConstantInitialized); inline IndexElem(const IndexElem& from) : IndexElem(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const IndexElem& default_instance() { return *internal_default_instance(); } static inline const IndexElem* internal_default_instance() { return reinterpret_cast( &_IndexElem_default_instance_); } static constexpr int kIndexInFileMessages = 99; friend void swap(IndexElem& a, IndexElem& b) { a.Swap(&b); } inline void Swap(IndexElem* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(IndexElem* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- IndexElem* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const IndexElem& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const IndexElem& from) { IndexElem::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(IndexElem* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.IndexElem"; } protected: explicit IndexElem(::google::protobuf::Arena* arena); IndexElem(::google::protobuf::Arena* arena, const IndexElem& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_collation(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_collation() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_collation(); public: const ::pg_query::Node& collation(int index) const; ::pg_query::Node* add_collation(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_opclass(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_opclass() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_opclass(); public: const ::pg_query::Node& opclass(int index) const; ::pg_query::Node* add_opclass(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_opclassopts(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_opclassopts() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_opclassopts(); public: const ::pg_query::Node& opclassopts(int index) const; ::pg_query::Node* add_opclassopts(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& opclassopts() const; // string name = 1 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_indexcolname(Arg_&& arg, Args_... args); std::string* mutable_indexcolname(); PROTOBUF_NODISCARD std::string* release_indexcolname(); void set_allocated_indexcolname(std::string* value); private: const std::string& _internal_indexcolname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_expr() ; const ::pg_query::Node& expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* value); void unsafe_arena_set_allocated_expr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_expr(); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 4, 51, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > collation_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > opclass_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > opclassopts_; ::google::protobuf::internal::ArenaStringPtr name_; ::google::protobuf::internal::ArenaStringPtr indexcolname_; ::pg_query::Node* expr_; int ordering_; int nulls_ordering_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class IndexStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.IndexStmt) */ { public: inline IndexStmt() : IndexStmt(nullptr) {} ~IndexStmt() override; template explicit PROTOBUF_CONSTEXPR IndexStmt(::google::protobuf::internal::ConstantInitialized); inline IndexStmt(const IndexStmt& from) : IndexStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const IndexStmt& default_instance() { return *internal_default_instance(); } static inline const IndexStmt* internal_default_instance() { return reinterpret_cast( &_IndexStmt_default_instance_); } static constexpr int kIndexInFileMessages = 209; friend void swap(IndexStmt& a, IndexStmt& b) { a.Swap(&b); } inline void Swap(IndexStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(IndexStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- IndexStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const IndexStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const IndexStmt& from) { IndexStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(IndexStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.IndexStmt"; } protected: explicit IndexStmt(::google::protobuf::Arena* arena); IndexStmt(::google::protobuf::Arena* arena, const IndexStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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, kOldNumberFieldNumber = 12, kOldCreateSubidFieldNumber = 13, kOldFirstRelfilelocatorSubidFieldNumber = 14, kUniqueFieldNumber = 15, kNullsNotDistinctFieldNumber = 16, kPrimaryFieldNumber = 17, kIsconstraintFieldNumber = 18, kDeferrableFieldNumber = 19, kInitdeferredFieldNumber = 20, kTransformedFieldNumber = 21, kConcurrentFieldNumber = 22, kIfNotExistsFieldNumber = 23, kResetDefaultTblspcFieldNumber = 24, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_index_params(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_index_params() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_index_params(); public: const ::pg_query::Node& index_params(int index) const; ::pg_query::Node* add_index_params(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_index_including_params(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_index_including_params() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_index_including_params(); public: const ::pg_query::Node& index_including_params(int index) const; ::pg_query::Node* add_index_including_params(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_exclude_op_names(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_exclude_op_names() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_exclude_op_names(); public: const ::pg_query::Node& exclude_op_names(int index) const; ::pg_query::Node* add_exclude_op_names(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& exclude_op_names() const; // string idxname = 1 [json_name = "idxname"]; void clear_idxname() ; const std::string& idxname() const; template void set_idxname(Arg_&& arg, Args_... args); std::string* mutable_idxname(); PROTOBUF_NODISCARD std::string* release_idxname(); void set_allocated_idxname(std::string* value); private: const std::string& _internal_idxname() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_access_method(Arg_&& arg, Args_... args); std::string* mutable_access_method(); PROTOBUF_NODISCARD std::string* release_access_method(); void set_allocated_access_method(std::string* value); private: const std::string& _internal_access_method() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_table_space(Arg_&& arg, Args_... args); std::string* mutable_table_space(); PROTOBUF_NODISCARD std::string* release_table_space(); void set_allocated_table_space(std::string* value); private: const std::string& _internal_table_space() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_idxcomment(Arg_&& arg, Args_... args); std::string* mutable_idxcomment(); PROTOBUF_NODISCARD std::string* release_idxcomment(); void set_allocated_idxcomment(std::string* value); private: const std::string& _internal_idxcomment() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; bool has_where_clause() const; void clear_where_clause() ; const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* value); void unsafe_arena_set_allocated_where_clause(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_where_clause(); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: // uint32 index_oid = 11 [json_name = "indexOid"]; void clear_index_oid() ; ::uint32_t index_oid() const; void set_index_oid(::uint32_t value); private: ::uint32_t _internal_index_oid() const; void _internal_set_index_oid(::uint32_t value); public: // uint32 old_number = 12 [json_name = "oldNumber"]; void clear_old_number() ; ::uint32_t old_number() const; void set_old_number(::uint32_t value); private: ::uint32_t _internal_old_number() const; void _internal_set_old_number(::uint32_t value); public: // uint32 old_create_subid = 13 [json_name = "oldCreateSubid"]; void clear_old_create_subid() ; ::uint32_t old_create_subid() const; void set_old_create_subid(::uint32_t value); private: ::uint32_t _internal_old_create_subid() const; void _internal_set_old_create_subid(::uint32_t value); public: // uint32 old_first_relfilelocator_subid = 14 [json_name = "oldFirstRelfilelocatorSubid"]; void clear_old_first_relfilelocator_subid() ; ::uint32_t old_first_relfilelocator_subid() const; void set_old_first_relfilelocator_subid(::uint32_t value); private: ::uint32_t _internal_old_first_relfilelocator_subid() const; void _internal_set_old_first_relfilelocator_subid(::uint32_t 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 nulls_not_distinct = 16 [json_name = "nulls_not_distinct"]; void clear_nulls_not_distinct() ; bool nulls_not_distinct() const; void set_nulls_not_distinct(bool value); private: bool _internal_nulls_not_distinct() const; void _internal_set_nulls_not_distinct(bool value); public: // bool primary = 17 [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 = 18 [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 = 19 [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 = 20 [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 = 21 [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 = 22 [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 = 23 [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 = 24 [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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 5, 24, 6, 92, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > index_params_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > index_including_params_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > exclude_op_names_; ::google::protobuf::internal::ArenaStringPtr idxname_; ::google::protobuf::internal::ArenaStringPtr access_method_; ::google::protobuf::internal::ArenaStringPtr table_space_; ::google::protobuf::internal::ArenaStringPtr idxcomment_; ::pg_query::RangeVar* relation_; ::pg_query::Node* where_clause_; ::uint32_t index_oid_; ::uint32_t old_number_; ::uint32_t old_create_subid_; ::uint32_t old_first_relfilelocator_subid_; bool unique_; bool nulls_not_distinct_; bool primary_; bool isconstraint_; bool deferrable_; bool initdeferred_; bool transformed_; bool concurrent_; bool if_not_exists_; bool reset_default_tblspc_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class InferClause final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.InferClause) */ { public: inline InferClause() : InferClause(nullptr) {} ~InferClause() override; template explicit PROTOBUF_CONSTEXPR InferClause(::google::protobuf::internal::ConstantInitialized); inline InferClause(const InferClause& from) : InferClause(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const InferClause& default_instance() { return *internal_default_instance(); } static inline const InferClause* internal_default_instance() { return reinterpret_cast( &_InferClause_default_instance_); } static constexpr int kIndexInFileMessages = 119; friend void swap(InferClause& a, InferClause& b) { a.Swap(&b); } inline void Swap(InferClause* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(InferClause* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- InferClause* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const InferClause& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const InferClause& from) { InferClause::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(InferClause* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.InferClause"; } protected: explicit InferClause(::google::protobuf::Arena* arena); InferClause(::google::protobuf::Arena* arena, const InferClause& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_index_elems(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_index_elems() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_index_elems(); public: const ::pg_query::Node& index_elems(int index) const; ::pg_query::Node* add_index_elems(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& index_elems() const; // string conname = 3 [json_name = "conname"]; void clear_conname() ; const std::string& conname() const; template void set_conname(Arg_&& arg, Args_... args); std::string* mutable_conname(); PROTOBUF_NODISCARD std::string* release_conname(); void set_allocated_conname(std::string* value); private: const std::string& _internal_conname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_where_clause() ; const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* value); void unsafe_arena_set_allocated_where_clause(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_where_clause(); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: // int32 location = 4 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.InferClause) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 36, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > index_elems_; ::google::protobuf::internal::ArenaStringPtr conname_; ::pg_query::Node* where_clause_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class InferenceElem final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.InferenceElem) */ { public: inline InferenceElem() : InferenceElem(nullptr) {} ~InferenceElem() override; template explicit PROTOBUF_CONSTEXPR InferenceElem(::google::protobuf::internal::ConstantInitialized); inline InferenceElem(const InferenceElem& from) : InferenceElem(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const InferenceElem& default_instance() { return *internal_default_instance(); } static inline const InferenceElem* internal_default_instance() { return reinterpret_cast( &_InferenceElem_default_instance_); } static constexpr int kIndexInFileMessages = 69; friend void swap(InferenceElem& a, InferenceElem& b) { a.Swap(&b); } inline void Swap(InferenceElem* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(InferenceElem* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- InferenceElem* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const InferenceElem& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const InferenceElem& from) { InferenceElem::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(InferenceElem* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.InferenceElem"; } protected: explicit InferenceElem(::google::protobuf::Arena* arena); InferenceElem(::google::protobuf::Arena* arena, const InferenceElem& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; void clear_expr() ; const ::pg_query::Node& expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* value); void unsafe_arena_set_allocated_expr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_expr(); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: // uint32 infercollid = 3 [json_name = "infercollid"]; void clear_infercollid() ; ::uint32_t infercollid() const; void set_infercollid(::uint32_t value); private: ::uint32_t _internal_infercollid() const; void _internal_set_infercollid(::uint32_t value); public: // uint32 inferopclass = 4 [json_name = "inferopclass"]; void clear_inferopclass() ; ::uint32_t inferopclass() const; void set_inferopclass(::uint32_t value); private: ::uint32_t _internal_inferopclass() const; void _internal_set_inferopclass(::uint32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.InferenceElem) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::pg_query::Node* expr_; ::uint32_t infercollid_; ::uint32_t inferopclass_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class InsertStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.InsertStmt) */ { public: inline InsertStmt() : InsertStmt(nullptr) {} ~InsertStmt() override; template explicit PROTOBUF_CONSTEXPR InsertStmt(::google::protobuf::internal::ConstantInitialized); inline InsertStmt(const InsertStmt& from) : InsertStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const InsertStmt& default_instance() { return *internal_default_instance(); } static inline const InsertStmt* internal_default_instance() { return reinterpret_cast( &_InsertStmt_default_instance_); } static constexpr int kIndexInFileMessages = 143; friend void swap(InsertStmt& a, InsertStmt& b) { a.Swap(&b); } inline void Swap(InsertStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(InsertStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- InsertStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const InsertStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const InsertStmt& from) { InsertStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(InsertStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.InsertStmt"; } protected: explicit InsertStmt(::google::protobuf::Arena* arena); InsertStmt(::google::protobuf::Arena* arena, const InsertStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_cols(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_cols() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_cols(); public: const ::pg_query::Node& cols(int index) const; ::pg_query::Node* add_cols(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_returning_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_returning_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_returning_list(); public: const ::pg_query::Node& returning_list(int index) const; ::pg_query::Node* add_returning_list(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& returning_list() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; bool has_select_stmt() const; void clear_select_stmt() ; const ::pg_query::Node& select_stmt() const; PROTOBUF_NODISCARD ::pg_query::Node* release_select_stmt(); ::pg_query::Node* mutable_select_stmt(); void set_allocated_select_stmt(::pg_query::Node* value); void unsafe_arena_set_allocated_select_stmt(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_select_stmt(); private: const ::pg_query::Node& _internal_select_stmt() const; ::pg_query::Node* _internal_mutable_select_stmt(); public: // .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; bool has_on_conflict_clause() const; void clear_on_conflict_clause() ; const ::pg_query::OnConflictClause& on_conflict_clause() const; PROTOBUF_NODISCARD ::pg_query::OnConflictClause* release_on_conflict_clause(); ::pg_query::OnConflictClause* mutable_on_conflict_clause(); void set_allocated_on_conflict_clause(::pg_query::OnConflictClause* value); void unsafe_arena_set_allocated_on_conflict_clause(::pg_query::OnConflictClause* value); ::pg_query::OnConflictClause* unsafe_arena_release_on_conflict_clause(); private: const ::pg_query::OnConflictClause& _internal_on_conflict_clause() const; ::pg_query::OnConflictClause* _internal_mutable_on_conflict_clause(); public: // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; bool has_with_clause() const; void clear_with_clause() ; const ::pg_query::WithClause& with_clause() const; PROTOBUF_NODISCARD ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* value); void unsafe_arena_set_allocated_with_clause(::pg_query::WithClause* value); ::pg_query::WithClause* unsafe_arena_release_with_clause(); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 6, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > cols_; ::google::protobuf::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_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class IntList final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.IntList) */ { public: inline IntList() : IntList(nullptr) {} ~IntList() override; template explicit PROTOBUF_CONSTEXPR IntList(::google::protobuf::internal::ConstantInitialized); inline IntList(const IntList& from) : IntList(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const IntList& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(IntList* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- IntList* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const IntList& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const IntList& from) { IntList::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(IntList* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.IntList"; } protected: explicit IntList(::google::protobuf::Arena* arena); IntList(::google::protobuf::Arena* arena, const IntList& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_items() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& items() const; // @@protoc_insertion_point(class_scope:pg_query.IntList) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > items_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class IntoClause final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.IntoClause) */ { public: inline IntoClause() : IntoClause(nullptr) {} ~IntoClause() override; template explicit PROTOBUF_CONSTEXPR IntoClause(::google::protobuf::internal::ConstantInitialized); inline IntoClause(const IntoClause& from) : IntoClause(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const IntoClause& default_instance() { return *internal_default_instance(); } static inline const IntoClause* internal_default_instance() { return reinterpret_cast( &_IntoClause_default_instance_); } static constexpr int kIndexInFileMessages = 15; friend void swap(IntoClause& a, IntoClause& b) { a.Swap(&b); } inline void Swap(IntoClause* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(IntoClause* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- IntoClause* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const IntoClause& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const IntoClause& from) { IntoClause::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(IntoClause* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.IntoClause"; } protected: explicit IntoClause(::google::protobuf::Arena* arena); IntoClause(::google::protobuf::Arena* arena, const IntoClause& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_col_names(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_col_names() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_col_names(); public: const ::pg_query::Node& col_names(int index) const; ::pg_query::Node* add_col_names(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string access_method = 3 [json_name = "accessMethod"]; void clear_access_method() ; const std::string& access_method() const; template void set_access_method(Arg_&& arg, Args_... args); std::string* mutable_access_method(); PROTOBUF_NODISCARD std::string* release_access_method(); void set_allocated_access_method(std::string* value); private: const std::string& _internal_access_method() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_table_space_name(Arg_&& arg, Args_... args); std::string* mutable_table_space_name(); PROTOBUF_NODISCARD std::string* release_table_space_name(); void set_allocated_table_space_name(std::string* value); private: const std::string& _internal_table_space_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_rel() ; const ::pg_query::RangeVar& rel() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_rel(); ::pg_query::RangeVar* mutable_rel(); void set_allocated_rel(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_rel(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_rel(); private: const ::pg_query::RangeVar& _internal_rel() const; ::pg_query::RangeVar* _internal_mutable_rel(); public: // .pg_query.Node view_query = 7 [json_name = "viewQuery"]; bool has_view_query() const; void clear_view_query() ; const ::pg_query::Node& view_query() const; PROTOBUF_NODISCARD ::pg_query::Node* release_view_query(); ::pg_query::Node* mutable_view_query(); void set_allocated_view_query(::pg_query::Node* value); void unsafe_arena_set_allocated_view_query(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_view_query(); private: const ::pg_query::Node& _internal_view_query() const; ::pg_query::Node* _internal_mutable_view_query(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 4, 65, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > col_names_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr access_method_; ::google::protobuf::internal::ArenaStringPtr table_space_name_; ::pg_query::RangeVar* rel_; ::pg_query::Node* view_query_; int on_commit_; bool skip_data_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JoinExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JoinExpr) */ { public: inline JoinExpr() : JoinExpr(nullptr) {} ~JoinExpr() override; template explicit PROTOBUF_CONSTEXPR JoinExpr(::google::protobuf::internal::ConstantInitialized); inline JoinExpr(const JoinExpr& from) : JoinExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JoinExpr& default_instance() { return *internal_default_instance(); } static inline const JoinExpr* internal_default_instance() { return reinterpret_cast( &_JoinExpr_default_instance_); } static constexpr int kIndexInFileMessages = 72; friend void swap(JoinExpr& a, JoinExpr& b) { a.Swap(&b); } inline void Swap(JoinExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JoinExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JoinExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JoinExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JoinExpr& from) { JoinExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JoinExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JoinExpr"; } protected: explicit JoinExpr(::google::protobuf::Arena* arena); JoinExpr(::google::protobuf::Arena* arena, const JoinExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kUsingClauseFieldNumber = 5, kLargFieldNumber = 3, kRargFieldNumber = 4, kJoinUsingAliasFieldNumber = 6, kQualsFieldNumber = 7, kAliasFieldNumber = 8, kJointypeFieldNumber = 1, kIsNaturalFieldNumber = 2, kRtindexFieldNumber = 9, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_using_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_using_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_using_clause(); public: const ::pg_query::Node& using_clause(int index) const; ::pg_query::Node* add_using_clause(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& using_clause() const; // .pg_query.Node larg = 3 [json_name = "larg"]; bool has_larg() const; void clear_larg() ; const ::pg_query::Node& larg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_larg(); ::pg_query::Node* mutable_larg(); void set_allocated_larg(::pg_query::Node* value); void unsafe_arena_set_allocated_larg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_larg(); private: const ::pg_query::Node& _internal_larg() const; ::pg_query::Node* _internal_mutable_larg(); public: // .pg_query.Node rarg = 4 [json_name = "rarg"]; bool has_rarg() const; void clear_rarg() ; const ::pg_query::Node& rarg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_rarg(); ::pg_query::Node* mutable_rarg(); void set_allocated_rarg(::pg_query::Node* value); void unsafe_arena_set_allocated_rarg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_rarg(); private: const ::pg_query::Node& _internal_rarg() const; ::pg_query::Node* _internal_mutable_rarg(); public: // .pg_query.Alias join_using_alias = 6 [json_name = "join_using_alias"]; bool has_join_using_alias() const; void clear_join_using_alias() ; const ::pg_query::Alias& join_using_alias() const; PROTOBUF_NODISCARD ::pg_query::Alias* release_join_using_alias(); ::pg_query::Alias* mutable_join_using_alias(); void set_allocated_join_using_alias(::pg_query::Alias* value); void unsafe_arena_set_allocated_join_using_alias(::pg_query::Alias* value); ::pg_query::Alias* unsafe_arena_release_join_using_alias(); private: const ::pg_query::Alias& _internal_join_using_alias() const; ::pg_query::Alias* _internal_mutable_join_using_alias(); public: // .pg_query.Node quals = 7 [json_name = "quals"]; bool has_quals() const; void clear_quals() ; const ::pg_query::Node& quals() const; PROTOBUF_NODISCARD ::pg_query::Node* release_quals(); ::pg_query::Node* mutable_quals(); void set_allocated_quals(::pg_query::Node* value); void unsafe_arena_set_allocated_quals(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_quals(); private: const ::pg_query::Node& _internal_quals() const; ::pg_query::Node* _internal_mutable_quals(); public: // .pg_query.Alias alias = 8 [json_name = "alias"]; bool has_alias() const; void clear_alias() ; const ::pg_query::Alias& alias() const; PROTOBUF_NODISCARD ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* value); void unsafe_arena_set_allocated_alias(::pg_query::Alias* value); ::pg_query::Alias* unsafe_arena_release_alias(); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: // .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 = 9 [json_name = "rtindex"]; void clear_rtindex() ; ::int32_t rtindex() const; void set_rtindex(::int32_t value); private: ::int32_t _internal_rtindex() const; void _internal_set_rtindex(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JoinExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 9, 6, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > using_clause_; ::pg_query::Node* larg_; ::pg_query::Node* rarg_; ::pg_query::Alias* join_using_alias_; ::pg_query::Node* quals_; ::pg_query::Alias* alias_; int jointype_; bool is_natural_; ::int32_t rtindex_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonAggConstructor final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonAggConstructor) */ { public: inline JsonAggConstructor() : JsonAggConstructor(nullptr) {} ~JsonAggConstructor() override; template explicit PROTOBUF_CONSTEXPR JsonAggConstructor(::google::protobuf::internal::ConstantInitialized); inline JsonAggConstructor(const JsonAggConstructor& from) : JsonAggConstructor(nullptr, from) {} JsonAggConstructor(JsonAggConstructor&& from) noexcept : JsonAggConstructor() { *this = ::std::move(from); } inline JsonAggConstructor& operator=(const JsonAggConstructor& from) { CopyFrom(from); return *this; } inline JsonAggConstructor& operator=(JsonAggConstructor&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonAggConstructor& default_instance() { return *internal_default_instance(); } static inline const JsonAggConstructor* internal_default_instance() { return reinterpret_cast( &_JsonAggConstructor_default_instance_); } static constexpr int kIndexInFileMessages = 139; friend void swap(JsonAggConstructor& a, JsonAggConstructor& b) { a.Swap(&b); } inline void Swap(JsonAggConstructor* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonAggConstructor* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonAggConstructor* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonAggConstructor& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonAggConstructor& from) { JsonAggConstructor::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonAggConstructor* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonAggConstructor"; } protected: explicit JsonAggConstructor(::google::protobuf::Arena* arena); JsonAggConstructor(::google::protobuf::Arena* arena, const JsonAggConstructor& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kAggOrderFieldNumber = 3, kOutputFieldNumber = 1, kAggFilterFieldNumber = 2, kOverFieldNumber = 4, kLocationFieldNumber = 5, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_agg_order(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_agg_order() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_agg_order(); public: const ::pg_query::Node& agg_order(int index) const; ::pg_query::Node* add_agg_order(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& agg_order() const; // .pg_query.JsonOutput output = 1 [json_name = "output"]; bool has_output() const; void clear_output() ; const ::pg_query::JsonOutput& output() const; PROTOBUF_NODISCARD ::pg_query::JsonOutput* release_output(); ::pg_query::JsonOutput* mutable_output(); void set_allocated_output(::pg_query::JsonOutput* value); void unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value); ::pg_query::JsonOutput* unsafe_arena_release_output(); private: const ::pg_query::JsonOutput& _internal_output() const; ::pg_query::JsonOutput* _internal_mutable_output(); public: // .pg_query.Node agg_filter = 2 [json_name = "agg_filter"]; bool has_agg_filter() const; void clear_agg_filter() ; const ::pg_query::Node& agg_filter() const; PROTOBUF_NODISCARD ::pg_query::Node* release_agg_filter(); ::pg_query::Node* mutable_agg_filter(); void set_allocated_agg_filter(::pg_query::Node* value); void unsafe_arena_set_allocated_agg_filter(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_agg_filter(); private: const ::pg_query::Node& _internal_agg_filter() const; ::pg_query::Node* _internal_mutable_agg_filter(); public: // .pg_query.WindowDef over = 4 [json_name = "over"]; bool has_over() const; void clear_over() ; const ::pg_query::WindowDef& over() const; PROTOBUF_NODISCARD ::pg_query::WindowDef* release_over(); ::pg_query::WindowDef* mutable_over(); void set_allocated_over(::pg_query::WindowDef* value); void unsafe_arena_set_allocated_over(::pg_query::WindowDef* value); ::pg_query::WindowDef* unsafe_arena_release_over(); private: const ::pg_query::WindowDef& _internal_over() const; ::pg_query::WindowDef* _internal_mutable_over(); public: // int32 location = 5 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonAggConstructor) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 4, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > agg_order_; ::pg_query::JsonOutput* output_; ::pg_query::Node* agg_filter_; ::pg_query::WindowDef* over_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonArgument final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonArgument) */ { public: inline JsonArgument() : JsonArgument(nullptr) {} ~JsonArgument() override; template explicit PROTOBUF_CONSTEXPR JsonArgument(::google::protobuf::internal::ConstantInitialized); inline JsonArgument(const JsonArgument& from) : JsonArgument(nullptr, from) {} JsonArgument(JsonArgument&& from) noexcept : JsonArgument() { *this = ::std::move(from); } inline JsonArgument& operator=(const JsonArgument& from) { CopyFrom(from); return *this; } inline JsonArgument& operator=(JsonArgument&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonArgument& default_instance() { return *internal_default_instance(); } static inline const JsonArgument* internal_default_instance() { return reinterpret_cast( &_JsonArgument_default_instance_); } static constexpr int kIndexInFileMessages = 127; friend void swap(JsonArgument& a, JsonArgument& b) { a.Swap(&b); } inline void Swap(JsonArgument* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonArgument* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonArgument* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonArgument& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonArgument& from) { JsonArgument::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonArgument* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonArgument"; } protected: explicit JsonArgument(::google::protobuf::Arena* arena); JsonArgument(::google::protobuf::Arena* arena, const JsonArgument& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 2, kValFieldNumber = 1, }; // string name = 2 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_name( const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.JsonValueExpr val = 1 [json_name = "val"]; bool has_val() const; void clear_val() ; const ::pg_query::JsonValueExpr& val() const; PROTOBUF_NODISCARD ::pg_query::JsonValueExpr* release_val(); ::pg_query::JsonValueExpr* mutable_val(); void set_allocated_val(::pg_query::JsonValueExpr* value); void unsafe_arena_set_allocated_val(::pg_query::JsonValueExpr* value); ::pg_query::JsonValueExpr* unsafe_arena_release_val(); private: const ::pg_query::JsonValueExpr& _internal_val() const; ::pg_query::JsonValueExpr* _internal_mutable_val(); public: // @@protoc_insertion_point(class_scope:pg_query.JsonArgument) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 34, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::JsonValueExpr* val_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonArrayAgg final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonArrayAgg) */ { public: inline JsonArrayAgg() : JsonArrayAgg(nullptr) {} ~JsonArrayAgg() override; template explicit PROTOBUF_CONSTEXPR JsonArrayAgg(::google::protobuf::internal::ConstantInitialized); inline JsonArrayAgg(const JsonArrayAgg& from) : JsonArrayAgg(nullptr, from) {} JsonArrayAgg(JsonArrayAgg&& from) noexcept : JsonArrayAgg() { *this = ::std::move(from); } inline JsonArrayAgg& operator=(const JsonArrayAgg& from) { CopyFrom(from); return *this; } inline JsonArrayAgg& operator=(JsonArrayAgg&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonArrayAgg& default_instance() { return *internal_default_instance(); } static inline const JsonArrayAgg* internal_default_instance() { return reinterpret_cast( &_JsonArrayAgg_default_instance_); } static constexpr int kIndexInFileMessages = 141; friend void swap(JsonArrayAgg& a, JsonArrayAgg& b) { a.Swap(&b); } inline void Swap(JsonArrayAgg* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonArrayAgg* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonArrayAgg* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonArrayAgg& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonArrayAgg& from) { JsonArrayAgg::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonArrayAgg* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonArrayAgg"; } protected: explicit JsonArrayAgg(::google::protobuf::Arena* arena); JsonArrayAgg(::google::protobuf::Arena* arena, const JsonArrayAgg& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kConstructorFieldNumber = 1, kArgFieldNumber = 2, kAbsentOnNullFieldNumber = 3, }; // .pg_query.JsonAggConstructor constructor = 1 [json_name = "constructor"]; bool has_constructor() const; void clear_constructor() ; const ::pg_query::JsonAggConstructor& constructor() const; PROTOBUF_NODISCARD ::pg_query::JsonAggConstructor* release_constructor(); ::pg_query::JsonAggConstructor* mutable_constructor(); void set_allocated_constructor(::pg_query::JsonAggConstructor* value); void unsafe_arena_set_allocated_constructor(::pg_query::JsonAggConstructor* value); ::pg_query::JsonAggConstructor* unsafe_arena_release_constructor(); private: const ::pg_query::JsonAggConstructor& _internal_constructor() const; ::pg_query::JsonAggConstructor* _internal_mutable_constructor(); public: // .pg_query.JsonValueExpr arg = 2 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::JsonValueExpr& arg() const; PROTOBUF_NODISCARD ::pg_query::JsonValueExpr* release_arg(); ::pg_query::JsonValueExpr* mutable_arg(); void set_allocated_arg(::pg_query::JsonValueExpr* value); void unsafe_arena_set_allocated_arg(::pg_query::JsonValueExpr* value); ::pg_query::JsonValueExpr* unsafe_arena_release_arg(); private: const ::pg_query::JsonValueExpr& _internal_arg() const; ::pg_query::JsonValueExpr* _internal_mutable_arg(); public: // bool absent_on_null = 3 [json_name = "absent_on_null"]; void clear_absent_on_null() ; bool absent_on_null() const; void set_absent_on_null(bool value); private: bool _internal_absent_on_null() const; void _internal_set_absent_on_null(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonArrayAgg) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::JsonAggConstructor* constructor_; ::pg_query::JsonValueExpr* arg_; bool absent_on_null_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonArrayConstructor final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonArrayConstructor) */ { public: inline JsonArrayConstructor() : JsonArrayConstructor(nullptr) {} ~JsonArrayConstructor() override; template explicit PROTOBUF_CONSTEXPR JsonArrayConstructor(::google::protobuf::internal::ConstantInitialized); inline JsonArrayConstructor(const JsonArrayConstructor& from) : JsonArrayConstructor(nullptr, from) {} JsonArrayConstructor(JsonArrayConstructor&& from) noexcept : JsonArrayConstructor() { *this = ::std::move(from); } inline JsonArrayConstructor& operator=(const JsonArrayConstructor& from) { CopyFrom(from); return *this; } inline JsonArrayConstructor& operator=(JsonArrayConstructor&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonArrayConstructor& default_instance() { return *internal_default_instance(); } static inline const JsonArrayConstructor* internal_default_instance() { return reinterpret_cast( &_JsonArrayConstructor_default_instance_); } static constexpr int kIndexInFileMessages = 137; friend void swap(JsonArrayConstructor& a, JsonArrayConstructor& b) { a.Swap(&b); } inline void Swap(JsonArrayConstructor* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonArrayConstructor* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonArrayConstructor* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonArrayConstructor& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonArrayConstructor& from) { JsonArrayConstructor::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonArrayConstructor* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonArrayConstructor"; } protected: explicit JsonArrayConstructor(::google::protobuf::Arena* arena); JsonArrayConstructor(::google::protobuf::Arena* arena, const JsonArrayConstructor& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kExprsFieldNumber = 1, kOutputFieldNumber = 2, kAbsentOnNullFieldNumber = 3, kLocationFieldNumber = 4, }; // repeated .pg_query.Node exprs = 1 [json_name = "exprs"]; int exprs_size() const; private: int _internal_exprs_size() const; public: void clear_exprs() ; ::pg_query::Node* mutable_exprs(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_exprs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_exprs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_exprs(); public: const ::pg_query::Node& exprs(int index) const; ::pg_query::Node* add_exprs(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& exprs() const; // .pg_query.JsonOutput output = 2 [json_name = "output"]; bool has_output() const; void clear_output() ; const ::pg_query::JsonOutput& output() const; PROTOBUF_NODISCARD ::pg_query::JsonOutput* release_output(); ::pg_query::JsonOutput* mutable_output(); void set_allocated_output(::pg_query::JsonOutput* value); void unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value); ::pg_query::JsonOutput* unsafe_arena_release_output(); private: const ::pg_query::JsonOutput& _internal_output() const; ::pg_query::JsonOutput* _internal_mutable_output(); public: // bool absent_on_null = 3 [json_name = "absent_on_null"]; void clear_absent_on_null() ; bool absent_on_null() const; void set_absent_on_null(bool value); private: bool _internal_absent_on_null() const; void _internal_set_absent_on_null(bool value); public: // int32 location = 4 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonArrayConstructor) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > exprs_; ::pg_query::JsonOutput* output_; bool absent_on_null_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonArrayQueryConstructor final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonArrayQueryConstructor) */ { public: inline JsonArrayQueryConstructor() : JsonArrayQueryConstructor(nullptr) {} ~JsonArrayQueryConstructor() override; template explicit PROTOBUF_CONSTEXPR JsonArrayQueryConstructor(::google::protobuf::internal::ConstantInitialized); inline JsonArrayQueryConstructor(const JsonArrayQueryConstructor& from) : JsonArrayQueryConstructor(nullptr, from) {} JsonArrayQueryConstructor(JsonArrayQueryConstructor&& from) noexcept : JsonArrayQueryConstructor() { *this = ::std::move(from); } inline JsonArrayQueryConstructor& operator=(const JsonArrayQueryConstructor& from) { CopyFrom(from); return *this; } inline JsonArrayQueryConstructor& operator=(JsonArrayQueryConstructor&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonArrayQueryConstructor& default_instance() { return *internal_default_instance(); } static inline const JsonArrayQueryConstructor* internal_default_instance() { return reinterpret_cast( &_JsonArrayQueryConstructor_default_instance_); } static constexpr int kIndexInFileMessages = 138; friend void swap(JsonArrayQueryConstructor& a, JsonArrayQueryConstructor& b) { a.Swap(&b); } inline void Swap(JsonArrayQueryConstructor* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonArrayQueryConstructor* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonArrayQueryConstructor* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonArrayQueryConstructor& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonArrayQueryConstructor& from) { JsonArrayQueryConstructor::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonArrayQueryConstructor* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonArrayQueryConstructor"; } protected: explicit JsonArrayQueryConstructor(::google::protobuf::Arena* arena); JsonArrayQueryConstructor(::google::protobuf::Arena* arena, const JsonArrayQueryConstructor& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kQueryFieldNumber = 1, kOutputFieldNumber = 2, kFormatFieldNumber = 3, kAbsentOnNullFieldNumber = 4, kLocationFieldNumber = 5, }; // .pg_query.Node query = 1 [json_name = "query"]; bool has_query() const; void clear_query() ; const ::pg_query::Node& query() const; PROTOBUF_NODISCARD ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* value); void unsafe_arena_set_allocated_query(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_query(); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: // .pg_query.JsonOutput output = 2 [json_name = "output"]; bool has_output() const; void clear_output() ; const ::pg_query::JsonOutput& output() const; PROTOBUF_NODISCARD ::pg_query::JsonOutput* release_output(); ::pg_query::JsonOutput* mutable_output(); void set_allocated_output(::pg_query::JsonOutput* value); void unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value); ::pg_query::JsonOutput* unsafe_arena_release_output(); private: const ::pg_query::JsonOutput& _internal_output() const; ::pg_query::JsonOutput* _internal_mutable_output(); public: // .pg_query.JsonFormat format = 3 [json_name = "format"]; bool has_format() const; void clear_format() ; const ::pg_query::JsonFormat& format() const; PROTOBUF_NODISCARD ::pg_query::JsonFormat* release_format(); ::pg_query::JsonFormat* mutable_format(); void set_allocated_format(::pg_query::JsonFormat* value); void unsafe_arena_set_allocated_format(::pg_query::JsonFormat* value); ::pg_query::JsonFormat* unsafe_arena_release_format(); private: const ::pg_query::JsonFormat& _internal_format() const; ::pg_query::JsonFormat* _internal_mutable_format(); public: // bool absent_on_null = 4 [json_name = "absent_on_null"]; void clear_absent_on_null() ; bool absent_on_null() const; void set_absent_on_null(bool value); private: bool _internal_absent_on_null() const; void _internal_set_absent_on_null(bool value); public: // int32 location = 5 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonArrayQueryConstructor) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* query_; ::pg_query::JsonOutput* output_; ::pg_query::JsonFormat* format_; bool absent_on_null_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonBehavior final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonBehavior) */ { public: inline JsonBehavior() : JsonBehavior(nullptr) {} ~JsonBehavior() override; template explicit PROTOBUF_CONSTEXPR JsonBehavior(::google::protobuf::internal::ConstantInitialized); inline JsonBehavior(const JsonBehavior& from) : JsonBehavior(nullptr, from) {} JsonBehavior(JsonBehavior&& from) noexcept : JsonBehavior() { *this = ::std::move(from); } inline JsonBehavior& operator=(const JsonBehavior& from) { CopyFrom(from); return *this; } inline JsonBehavior& operator=(JsonBehavior&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonBehavior& default_instance() { return *internal_default_instance(); } static inline const JsonBehavior* internal_default_instance() { return reinterpret_cast( &_JsonBehavior_default_instance_); } static constexpr int kIndexInFileMessages = 56; friend void swap(JsonBehavior& a, JsonBehavior& b) { a.Swap(&b); } inline void Swap(JsonBehavior* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonBehavior* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonBehavior* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonBehavior& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonBehavior& from) { JsonBehavior::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonBehavior* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonBehavior"; } protected: explicit JsonBehavior(::google::protobuf::Arena* arena); JsonBehavior(::google::protobuf::Arena* arena, const JsonBehavior& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kExprFieldNumber = 2, kBtypeFieldNumber = 1, kCoerceFieldNumber = 3, kLocationFieldNumber = 4, }; // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; void clear_expr() ; const ::pg_query::Node& expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* value); void unsafe_arena_set_allocated_expr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_expr(); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: // .pg_query.JsonBehaviorType btype = 1 [json_name = "btype"]; void clear_btype() ; ::pg_query::JsonBehaviorType btype() const; void set_btype(::pg_query::JsonBehaviorType value); private: ::pg_query::JsonBehaviorType _internal_btype() const; void _internal_set_btype(::pg_query::JsonBehaviorType value); public: // bool coerce = 3 [json_name = "coerce"]; void clear_coerce() ; bool coerce() const; void set_coerce(bool value); private: bool _internal_coerce() const; void _internal_set_coerce(bool value); public: // int32 location = 4 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonBehavior) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* expr_; int btype_; bool coerce_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonConstructorExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonConstructorExpr) */ { public: inline JsonConstructorExpr() : JsonConstructorExpr(nullptr) {} ~JsonConstructorExpr() override; template explicit PROTOBUF_CONSTEXPR JsonConstructorExpr(::google::protobuf::internal::ConstantInitialized); inline JsonConstructorExpr(const JsonConstructorExpr& from) : JsonConstructorExpr(nullptr, from) {} JsonConstructorExpr(JsonConstructorExpr&& from) noexcept : JsonConstructorExpr() { *this = ::std::move(from); } inline JsonConstructorExpr& operator=(const JsonConstructorExpr& from) { CopyFrom(from); return *this; } inline JsonConstructorExpr& operator=(JsonConstructorExpr&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonConstructorExpr& default_instance() { return *internal_default_instance(); } static inline const JsonConstructorExpr* internal_default_instance() { return reinterpret_cast( &_JsonConstructorExpr_default_instance_); } static constexpr int kIndexInFileMessages = 54; friend void swap(JsonConstructorExpr& a, JsonConstructorExpr& b) { a.Swap(&b); } inline void Swap(JsonConstructorExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonConstructorExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonConstructorExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonConstructorExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonConstructorExpr& from) { JsonConstructorExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonConstructorExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonConstructorExpr"; } protected: explicit JsonConstructorExpr(::google::protobuf::Arena* arena); JsonConstructorExpr(::google::protobuf::Arena* arena, const JsonConstructorExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 3, kXprFieldNumber = 1, kFuncFieldNumber = 4, kCoercionFieldNumber = 5, kReturningFieldNumber = 6, kTypeFieldNumber = 2, kAbsentOnNullFieldNumber = 7, kUniqueFieldNumber = 8, kLocationFieldNumber = 9, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node func = 4 [json_name = "func"]; bool has_func() const; void clear_func() ; const ::pg_query::Node& func() const; PROTOBUF_NODISCARD ::pg_query::Node* release_func(); ::pg_query::Node* mutable_func(); void set_allocated_func(::pg_query::Node* value); void unsafe_arena_set_allocated_func(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_func(); private: const ::pg_query::Node& _internal_func() const; ::pg_query::Node* _internal_mutable_func(); public: // .pg_query.Node coercion = 5 [json_name = "coercion"]; bool has_coercion() const; void clear_coercion() ; const ::pg_query::Node& coercion() const; PROTOBUF_NODISCARD ::pg_query::Node* release_coercion(); ::pg_query::Node* mutable_coercion(); void set_allocated_coercion(::pg_query::Node* value); void unsafe_arena_set_allocated_coercion(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_coercion(); private: const ::pg_query::Node& _internal_coercion() const; ::pg_query::Node* _internal_mutable_coercion(); public: // .pg_query.JsonReturning returning = 6 [json_name = "returning"]; bool has_returning() const; void clear_returning() ; const ::pg_query::JsonReturning& returning() const; PROTOBUF_NODISCARD ::pg_query::JsonReturning* release_returning(); ::pg_query::JsonReturning* mutable_returning(); void set_allocated_returning(::pg_query::JsonReturning* value); void unsafe_arena_set_allocated_returning(::pg_query::JsonReturning* value); ::pg_query::JsonReturning* unsafe_arena_release_returning(); private: const ::pg_query::JsonReturning& _internal_returning() const; ::pg_query::JsonReturning* _internal_mutable_returning(); public: // .pg_query.JsonConstructorType type = 2 [json_name = "type"]; void clear_type() ; ::pg_query::JsonConstructorType type() const; void set_type(::pg_query::JsonConstructorType value); private: ::pg_query::JsonConstructorType _internal_type() const; void _internal_set_type(::pg_query::JsonConstructorType value); public: // bool absent_on_null = 7 [json_name = "absent_on_null"]; void clear_absent_on_null() ; bool absent_on_null() const; void set_absent_on_null(bool value); private: bool _internal_absent_on_null() const; void _internal_set_absent_on_null(bool value); public: // bool unique = 8 [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: // int32 location = 9 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonConstructorExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 9, 5, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::pg_query::Node* func_; ::pg_query::Node* coercion_; ::pg_query::JsonReturning* returning_; int type_; bool absent_on_null_; bool unique_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonExpr) */ { public: inline JsonExpr() : JsonExpr(nullptr) {} ~JsonExpr() override; template explicit PROTOBUF_CONSTEXPR JsonExpr(::google::protobuf::internal::ConstantInitialized); inline JsonExpr(const JsonExpr& from) : JsonExpr(nullptr, from) {} JsonExpr(JsonExpr&& from) noexcept : JsonExpr() { *this = ::std::move(from); } inline JsonExpr& operator=(const JsonExpr& from) { CopyFrom(from); return *this; } inline JsonExpr& operator=(JsonExpr&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonExpr& default_instance() { return *internal_default_instance(); } static inline const JsonExpr* internal_default_instance() { return reinterpret_cast( &_JsonExpr_default_instance_); } static constexpr int kIndexInFileMessages = 57; friend void swap(JsonExpr& a, JsonExpr& b) { a.Swap(&b); } inline void Swap(JsonExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonExpr& from) { JsonExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonExpr"; } protected: explicit JsonExpr(::google::protobuf::Arena* arena); JsonExpr(::google::protobuf::Arena* arena, const JsonExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPassingNamesFieldNumber = 8, kPassingValuesFieldNumber = 9, kColumnNameFieldNumber = 3, kXprFieldNumber = 1, kFormattedExprFieldNumber = 4, kFormatFieldNumber = 5, kPathSpecFieldNumber = 6, kReturningFieldNumber = 7, kOnEmptyFieldNumber = 10, kOnErrorFieldNumber = 11, kOpFieldNumber = 2, kUseIoCoercionFieldNumber = 12, kUseJsonCoercionFieldNumber = 13, kOmitQuotesFieldNumber = 15, kWrapperFieldNumber = 14, kCollationFieldNumber = 16, kLocationFieldNumber = 17, }; // repeated .pg_query.Node passing_names = 8 [json_name = "passing_names"]; int passing_names_size() const; private: int _internal_passing_names_size() const; public: void clear_passing_names() ; ::pg_query::Node* mutable_passing_names(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_passing_names(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_passing_names() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_passing_names(); public: const ::pg_query::Node& passing_names(int index) const; ::pg_query::Node* add_passing_names(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& passing_names() const; // repeated .pg_query.Node passing_values = 9 [json_name = "passing_values"]; int passing_values_size() const; private: int _internal_passing_values_size() const; public: void clear_passing_values() ; ::pg_query::Node* mutable_passing_values(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_passing_values(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_passing_values() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_passing_values(); public: const ::pg_query::Node& passing_values(int index) const; ::pg_query::Node* add_passing_values(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& passing_values() const; // string column_name = 3 [json_name = "column_name"]; void clear_column_name() ; const std::string& column_name() const; template void set_column_name(Arg_&& arg, Args_... args); std::string* mutable_column_name(); PROTOBUF_NODISCARD std::string* release_column_name(); void set_allocated_column_name(std::string* value); private: const std::string& _internal_column_name() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_column_name( const std::string& value); std::string* _internal_mutable_column_name(); public: // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node formatted_expr = 4 [json_name = "formatted_expr"]; bool has_formatted_expr() const; void clear_formatted_expr() ; const ::pg_query::Node& formatted_expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_formatted_expr(); ::pg_query::Node* mutable_formatted_expr(); void set_allocated_formatted_expr(::pg_query::Node* value); void unsafe_arena_set_allocated_formatted_expr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_formatted_expr(); private: const ::pg_query::Node& _internal_formatted_expr() const; ::pg_query::Node* _internal_mutable_formatted_expr(); public: // .pg_query.JsonFormat format = 5 [json_name = "format"]; bool has_format() const; void clear_format() ; const ::pg_query::JsonFormat& format() const; PROTOBUF_NODISCARD ::pg_query::JsonFormat* release_format(); ::pg_query::JsonFormat* mutable_format(); void set_allocated_format(::pg_query::JsonFormat* value); void unsafe_arena_set_allocated_format(::pg_query::JsonFormat* value); ::pg_query::JsonFormat* unsafe_arena_release_format(); private: const ::pg_query::JsonFormat& _internal_format() const; ::pg_query::JsonFormat* _internal_mutable_format(); public: // .pg_query.Node path_spec = 6 [json_name = "path_spec"]; bool has_path_spec() const; void clear_path_spec() ; const ::pg_query::Node& path_spec() const; PROTOBUF_NODISCARD ::pg_query::Node* release_path_spec(); ::pg_query::Node* mutable_path_spec(); void set_allocated_path_spec(::pg_query::Node* value); void unsafe_arena_set_allocated_path_spec(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_path_spec(); private: const ::pg_query::Node& _internal_path_spec() const; ::pg_query::Node* _internal_mutable_path_spec(); public: // .pg_query.JsonReturning returning = 7 [json_name = "returning"]; bool has_returning() const; void clear_returning() ; const ::pg_query::JsonReturning& returning() const; PROTOBUF_NODISCARD ::pg_query::JsonReturning* release_returning(); ::pg_query::JsonReturning* mutable_returning(); void set_allocated_returning(::pg_query::JsonReturning* value); void unsafe_arena_set_allocated_returning(::pg_query::JsonReturning* value); ::pg_query::JsonReturning* unsafe_arena_release_returning(); private: const ::pg_query::JsonReturning& _internal_returning() const; ::pg_query::JsonReturning* _internal_mutable_returning(); public: // .pg_query.JsonBehavior on_empty = 10 [json_name = "on_empty"]; bool has_on_empty() const; void clear_on_empty() ; const ::pg_query::JsonBehavior& on_empty() const; PROTOBUF_NODISCARD ::pg_query::JsonBehavior* release_on_empty(); ::pg_query::JsonBehavior* mutable_on_empty(); void set_allocated_on_empty(::pg_query::JsonBehavior* value); void unsafe_arena_set_allocated_on_empty(::pg_query::JsonBehavior* value); ::pg_query::JsonBehavior* unsafe_arena_release_on_empty(); private: const ::pg_query::JsonBehavior& _internal_on_empty() const; ::pg_query::JsonBehavior* _internal_mutable_on_empty(); public: // .pg_query.JsonBehavior on_error = 11 [json_name = "on_error"]; bool has_on_error() const; void clear_on_error() ; const ::pg_query::JsonBehavior& on_error() const; PROTOBUF_NODISCARD ::pg_query::JsonBehavior* release_on_error(); ::pg_query::JsonBehavior* mutable_on_error(); void set_allocated_on_error(::pg_query::JsonBehavior* value); void unsafe_arena_set_allocated_on_error(::pg_query::JsonBehavior* value); ::pg_query::JsonBehavior* unsafe_arena_release_on_error(); private: const ::pg_query::JsonBehavior& _internal_on_error() const; ::pg_query::JsonBehavior* _internal_mutable_on_error(); public: // .pg_query.JsonExprOp op = 2 [json_name = "op"]; void clear_op() ; ::pg_query::JsonExprOp op() const; void set_op(::pg_query::JsonExprOp value); private: ::pg_query::JsonExprOp _internal_op() const; void _internal_set_op(::pg_query::JsonExprOp value); public: // bool use_io_coercion = 12 [json_name = "use_io_coercion"]; void clear_use_io_coercion() ; bool use_io_coercion() const; void set_use_io_coercion(bool value); private: bool _internal_use_io_coercion() const; void _internal_set_use_io_coercion(bool value); public: // bool use_json_coercion = 13 [json_name = "use_json_coercion"]; void clear_use_json_coercion() ; bool use_json_coercion() const; void set_use_json_coercion(bool value); private: bool _internal_use_json_coercion() const; void _internal_set_use_json_coercion(bool value); public: // bool omit_quotes = 15 [json_name = "omit_quotes"]; void clear_omit_quotes() ; bool omit_quotes() const; void set_omit_quotes(bool value); private: bool _internal_omit_quotes() const; void _internal_set_omit_quotes(bool value); public: // .pg_query.JsonWrapper wrapper = 14 [json_name = "wrapper"]; void clear_wrapper() ; ::pg_query::JsonWrapper wrapper() const; void set_wrapper(::pg_query::JsonWrapper value); private: ::pg_query::JsonWrapper _internal_wrapper() const; void _internal_set_wrapper(::pg_query::JsonWrapper value); public: // uint32 collation = 16 [json_name = "collation"]; void clear_collation() ; ::uint32_t collation() const; void set_collation(::uint32_t value); private: ::uint32_t _internal_collation() const; void _internal_set_collation(::uint32_t value); public: // int32 location = 17 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 5, 17, 9, 53, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > passing_names_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > passing_values_; ::google::protobuf::internal::ArenaStringPtr column_name_; ::pg_query::Node* xpr_; ::pg_query::Node* formatted_expr_; ::pg_query::JsonFormat* format_; ::pg_query::Node* path_spec_; ::pg_query::JsonReturning* returning_; ::pg_query::JsonBehavior* on_empty_; ::pg_query::JsonBehavior* on_error_; int op_; bool use_io_coercion_; bool use_json_coercion_; bool omit_quotes_; int wrapper_; ::uint32_t collation_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonFuncExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonFuncExpr) */ { public: inline JsonFuncExpr() : JsonFuncExpr(nullptr) {} ~JsonFuncExpr() override; template explicit PROTOBUF_CONSTEXPR JsonFuncExpr(::google::protobuf::internal::ConstantInitialized); inline JsonFuncExpr(const JsonFuncExpr& from) : JsonFuncExpr(nullptr, from) {} JsonFuncExpr(JsonFuncExpr&& from) noexcept : JsonFuncExpr() { *this = ::std::move(from); } inline JsonFuncExpr& operator=(const JsonFuncExpr& from) { CopyFrom(from); return *this; } inline JsonFuncExpr& operator=(JsonFuncExpr&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonFuncExpr& default_instance() { return *internal_default_instance(); } static inline const JsonFuncExpr* internal_default_instance() { return reinterpret_cast( &_JsonFuncExpr_default_instance_); } static constexpr int kIndexInFileMessages = 128; friend void swap(JsonFuncExpr& a, JsonFuncExpr& b) { a.Swap(&b); } inline void Swap(JsonFuncExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonFuncExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonFuncExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonFuncExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonFuncExpr& from) { JsonFuncExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonFuncExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonFuncExpr"; } protected: explicit JsonFuncExpr(::google::protobuf::Arena* arena); JsonFuncExpr(::google::protobuf::Arena* arena, const JsonFuncExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPassingFieldNumber = 5, kColumnNameFieldNumber = 2, kContextItemFieldNumber = 3, kPathspecFieldNumber = 4, kOutputFieldNumber = 6, kOnEmptyFieldNumber = 7, kOnErrorFieldNumber = 8, kOpFieldNumber = 1, kWrapperFieldNumber = 9, kQuotesFieldNumber = 10, kLocationFieldNumber = 11, }; // repeated .pg_query.Node passing = 5 [json_name = "passing"]; int passing_size() const; private: int _internal_passing_size() const; public: void clear_passing() ; ::pg_query::Node* mutable_passing(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_passing(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_passing() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_passing(); public: const ::pg_query::Node& passing(int index) const; ::pg_query::Node* add_passing(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& passing() const; // string column_name = 2 [json_name = "column_name"]; void clear_column_name() ; const std::string& column_name() const; template void set_column_name(Arg_&& arg, Args_... args); std::string* mutable_column_name(); PROTOBUF_NODISCARD std::string* release_column_name(); void set_allocated_column_name(std::string* value); private: const std::string& _internal_column_name() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_column_name( const std::string& value); std::string* _internal_mutable_column_name(); public: // .pg_query.JsonValueExpr context_item = 3 [json_name = "context_item"]; bool has_context_item() const; void clear_context_item() ; const ::pg_query::JsonValueExpr& context_item() const; PROTOBUF_NODISCARD ::pg_query::JsonValueExpr* release_context_item(); ::pg_query::JsonValueExpr* mutable_context_item(); void set_allocated_context_item(::pg_query::JsonValueExpr* value); void unsafe_arena_set_allocated_context_item(::pg_query::JsonValueExpr* value); ::pg_query::JsonValueExpr* unsafe_arena_release_context_item(); private: const ::pg_query::JsonValueExpr& _internal_context_item() const; ::pg_query::JsonValueExpr* _internal_mutable_context_item(); public: // .pg_query.Node pathspec = 4 [json_name = "pathspec"]; bool has_pathspec() const; void clear_pathspec() ; const ::pg_query::Node& pathspec() const; PROTOBUF_NODISCARD ::pg_query::Node* release_pathspec(); ::pg_query::Node* mutable_pathspec(); void set_allocated_pathspec(::pg_query::Node* value); void unsafe_arena_set_allocated_pathspec(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_pathspec(); private: const ::pg_query::Node& _internal_pathspec() const; ::pg_query::Node* _internal_mutable_pathspec(); public: // .pg_query.JsonOutput output = 6 [json_name = "output"]; bool has_output() const; void clear_output() ; const ::pg_query::JsonOutput& output() const; PROTOBUF_NODISCARD ::pg_query::JsonOutput* release_output(); ::pg_query::JsonOutput* mutable_output(); void set_allocated_output(::pg_query::JsonOutput* value); void unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value); ::pg_query::JsonOutput* unsafe_arena_release_output(); private: const ::pg_query::JsonOutput& _internal_output() const; ::pg_query::JsonOutput* _internal_mutable_output(); public: // .pg_query.JsonBehavior on_empty = 7 [json_name = "on_empty"]; bool has_on_empty() const; void clear_on_empty() ; const ::pg_query::JsonBehavior& on_empty() const; PROTOBUF_NODISCARD ::pg_query::JsonBehavior* release_on_empty(); ::pg_query::JsonBehavior* mutable_on_empty(); void set_allocated_on_empty(::pg_query::JsonBehavior* value); void unsafe_arena_set_allocated_on_empty(::pg_query::JsonBehavior* value); ::pg_query::JsonBehavior* unsafe_arena_release_on_empty(); private: const ::pg_query::JsonBehavior& _internal_on_empty() const; ::pg_query::JsonBehavior* _internal_mutable_on_empty(); public: // .pg_query.JsonBehavior on_error = 8 [json_name = "on_error"]; bool has_on_error() const; void clear_on_error() ; const ::pg_query::JsonBehavior& on_error() const; PROTOBUF_NODISCARD ::pg_query::JsonBehavior* release_on_error(); ::pg_query::JsonBehavior* mutable_on_error(); void set_allocated_on_error(::pg_query::JsonBehavior* value); void unsafe_arena_set_allocated_on_error(::pg_query::JsonBehavior* value); ::pg_query::JsonBehavior* unsafe_arena_release_on_error(); private: const ::pg_query::JsonBehavior& _internal_on_error() const; ::pg_query::JsonBehavior* _internal_mutable_on_error(); public: // .pg_query.JsonExprOp op = 1 [json_name = "op"]; void clear_op() ; ::pg_query::JsonExprOp op() const; void set_op(::pg_query::JsonExprOp value); private: ::pg_query::JsonExprOp _internal_op() const; void _internal_set_op(::pg_query::JsonExprOp value); public: // .pg_query.JsonWrapper wrapper = 9 [json_name = "wrapper"]; void clear_wrapper() ; ::pg_query::JsonWrapper wrapper() const; void set_wrapper(::pg_query::JsonWrapper value); private: ::pg_query::JsonWrapper _internal_wrapper() const; void _internal_set_wrapper(::pg_query::JsonWrapper value); public: // .pg_query.JsonQuotes quotes = 10 [json_name = "quotes"]; void clear_quotes() ; ::pg_query::JsonQuotes quotes() const; void set_quotes(::pg_query::JsonQuotes value); private: ::pg_query::JsonQuotes _internal_quotes() const; void _internal_set_quotes(::pg_query::JsonQuotes value); public: // int32 location = 11 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonFuncExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 11, 6, 49, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > passing_; ::google::protobuf::internal::ArenaStringPtr column_name_; ::pg_query::JsonValueExpr* context_item_; ::pg_query::Node* pathspec_; ::pg_query::JsonOutput* output_; ::pg_query::JsonBehavior* on_empty_; ::pg_query::JsonBehavior* on_error_; int op_; int wrapper_; int quotes_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonIsPredicate final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonIsPredicate) */ { public: inline JsonIsPredicate() : JsonIsPredicate(nullptr) {} ~JsonIsPredicate() override; template explicit PROTOBUF_CONSTEXPR JsonIsPredicate(::google::protobuf::internal::ConstantInitialized); inline JsonIsPredicate(const JsonIsPredicate& from) : JsonIsPredicate(nullptr, from) {} JsonIsPredicate(JsonIsPredicate&& from) noexcept : JsonIsPredicate() { *this = ::std::move(from); } inline JsonIsPredicate& operator=(const JsonIsPredicate& from) { CopyFrom(from); return *this; } inline JsonIsPredicate& operator=(JsonIsPredicate&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonIsPredicate& default_instance() { return *internal_default_instance(); } static inline const JsonIsPredicate* internal_default_instance() { return reinterpret_cast( &_JsonIsPredicate_default_instance_); } static constexpr int kIndexInFileMessages = 55; friend void swap(JsonIsPredicate& a, JsonIsPredicate& b) { a.Swap(&b); } inline void Swap(JsonIsPredicate* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonIsPredicate* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonIsPredicate* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonIsPredicate& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonIsPredicate& from) { JsonIsPredicate::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonIsPredicate* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonIsPredicate"; } protected: explicit JsonIsPredicate(::google::protobuf::Arena* arena); JsonIsPredicate(::google::protobuf::Arena* arena, const JsonIsPredicate& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kExprFieldNumber = 1, kFormatFieldNumber = 2, kItemTypeFieldNumber = 3, kUniqueKeysFieldNumber = 4, kLocationFieldNumber = 5, }; // .pg_query.Node expr = 1 [json_name = "expr"]; bool has_expr() const; void clear_expr() ; const ::pg_query::Node& expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* value); void unsafe_arena_set_allocated_expr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_expr(); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: // .pg_query.JsonFormat format = 2 [json_name = "format"]; bool has_format() const; void clear_format() ; const ::pg_query::JsonFormat& format() const; PROTOBUF_NODISCARD ::pg_query::JsonFormat* release_format(); ::pg_query::JsonFormat* mutable_format(); void set_allocated_format(::pg_query::JsonFormat* value); void unsafe_arena_set_allocated_format(::pg_query::JsonFormat* value); ::pg_query::JsonFormat* unsafe_arena_release_format(); private: const ::pg_query::JsonFormat& _internal_format() const; ::pg_query::JsonFormat* _internal_mutable_format(); public: // .pg_query.JsonValueType item_type = 3 [json_name = "item_type"]; void clear_item_type() ; ::pg_query::JsonValueType item_type() const; void set_item_type(::pg_query::JsonValueType value); private: ::pg_query::JsonValueType _internal_item_type() const; void _internal_set_item_type(::pg_query::JsonValueType value); public: // bool unique_keys = 4 [json_name = "unique_keys"]; void clear_unique_keys() ; bool unique_keys() const; void set_unique_keys(bool value); private: bool _internal_unique_keys() const; void _internal_set_unique_keys(bool value); public: // int32 location = 5 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonIsPredicate) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* expr_; ::pg_query::JsonFormat* format_; int item_type_; bool unique_keys_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonKeyValue final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonKeyValue) */ { public: inline JsonKeyValue() : JsonKeyValue(nullptr) {} ~JsonKeyValue() override; template explicit PROTOBUF_CONSTEXPR JsonKeyValue(::google::protobuf::internal::ConstantInitialized); inline JsonKeyValue(const JsonKeyValue& from) : JsonKeyValue(nullptr, from) {} JsonKeyValue(JsonKeyValue&& from) noexcept : JsonKeyValue() { *this = ::std::move(from); } inline JsonKeyValue& operator=(const JsonKeyValue& from) { CopyFrom(from); return *this; } inline JsonKeyValue& operator=(JsonKeyValue&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonKeyValue& default_instance() { return *internal_default_instance(); } static inline const JsonKeyValue* internal_default_instance() { return reinterpret_cast( &_JsonKeyValue_default_instance_); } static constexpr int kIndexInFileMessages = 132; friend void swap(JsonKeyValue& a, JsonKeyValue& b) { a.Swap(&b); } inline void Swap(JsonKeyValue* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonKeyValue* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonKeyValue* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonKeyValue& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonKeyValue& from) { JsonKeyValue::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonKeyValue* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonKeyValue"; } protected: explicit JsonKeyValue(::google::protobuf::Arena* arena); JsonKeyValue(::google::protobuf::Arena* arena, const JsonKeyValue& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kKeyFieldNumber = 1, kValueFieldNumber = 2, }; // .pg_query.Node key = 1 [json_name = "key"]; bool has_key() const; void clear_key() ; const ::pg_query::Node& key() const; PROTOBUF_NODISCARD ::pg_query::Node* release_key(); ::pg_query::Node* mutable_key(); void set_allocated_key(::pg_query::Node* value); void unsafe_arena_set_allocated_key(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_key(); private: const ::pg_query::Node& _internal_key() const; ::pg_query::Node* _internal_mutable_key(); public: // .pg_query.JsonValueExpr value = 2 [json_name = "value"]; bool has_value() const; void clear_value() ; const ::pg_query::JsonValueExpr& value() const; PROTOBUF_NODISCARD ::pg_query::JsonValueExpr* release_value(); ::pg_query::JsonValueExpr* mutable_value(); void set_allocated_value(::pg_query::JsonValueExpr* value); void unsafe_arena_set_allocated_value(::pg_query::JsonValueExpr* value); ::pg_query::JsonValueExpr* unsafe_arena_release_value(); private: const ::pg_query::JsonValueExpr& _internal_value() const; ::pg_query::JsonValueExpr* _internal_mutable_value(); public: // @@protoc_insertion_point(class_scope:pg_query.JsonKeyValue) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* key_; ::pg_query::JsonValueExpr* value_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonObjectAgg final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonObjectAgg) */ { public: inline JsonObjectAgg() : JsonObjectAgg(nullptr) {} ~JsonObjectAgg() override; template explicit PROTOBUF_CONSTEXPR JsonObjectAgg(::google::protobuf::internal::ConstantInitialized); inline JsonObjectAgg(const JsonObjectAgg& from) : JsonObjectAgg(nullptr, from) {} JsonObjectAgg(JsonObjectAgg&& from) noexcept : JsonObjectAgg() { *this = ::std::move(from); } inline JsonObjectAgg& operator=(const JsonObjectAgg& from) { CopyFrom(from); return *this; } inline JsonObjectAgg& operator=(JsonObjectAgg&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonObjectAgg& default_instance() { return *internal_default_instance(); } static inline const JsonObjectAgg* internal_default_instance() { return reinterpret_cast( &_JsonObjectAgg_default_instance_); } static constexpr int kIndexInFileMessages = 140; friend void swap(JsonObjectAgg& a, JsonObjectAgg& b) { a.Swap(&b); } inline void Swap(JsonObjectAgg* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonObjectAgg* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonObjectAgg* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonObjectAgg& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonObjectAgg& from) { JsonObjectAgg::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonObjectAgg* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonObjectAgg"; } protected: explicit JsonObjectAgg(::google::protobuf::Arena* arena); JsonObjectAgg(::google::protobuf::Arena* arena, const JsonObjectAgg& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kConstructorFieldNumber = 1, kArgFieldNumber = 2, kAbsentOnNullFieldNumber = 3, kUniqueFieldNumber = 4, }; // .pg_query.JsonAggConstructor constructor = 1 [json_name = "constructor"]; bool has_constructor() const; void clear_constructor() ; const ::pg_query::JsonAggConstructor& constructor() const; PROTOBUF_NODISCARD ::pg_query::JsonAggConstructor* release_constructor(); ::pg_query::JsonAggConstructor* mutable_constructor(); void set_allocated_constructor(::pg_query::JsonAggConstructor* value); void unsafe_arena_set_allocated_constructor(::pg_query::JsonAggConstructor* value); ::pg_query::JsonAggConstructor* unsafe_arena_release_constructor(); private: const ::pg_query::JsonAggConstructor& _internal_constructor() const; ::pg_query::JsonAggConstructor* _internal_mutable_constructor(); public: // .pg_query.JsonKeyValue arg = 2 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::JsonKeyValue& arg() const; PROTOBUF_NODISCARD ::pg_query::JsonKeyValue* release_arg(); ::pg_query::JsonKeyValue* mutable_arg(); void set_allocated_arg(::pg_query::JsonKeyValue* value); void unsafe_arena_set_allocated_arg(::pg_query::JsonKeyValue* value); ::pg_query::JsonKeyValue* unsafe_arena_release_arg(); private: const ::pg_query::JsonKeyValue& _internal_arg() const; ::pg_query::JsonKeyValue* _internal_mutable_arg(); public: // bool absent_on_null = 3 [json_name = "absent_on_null"]; void clear_absent_on_null() ; bool absent_on_null() const; void set_absent_on_null(bool value); private: bool _internal_absent_on_null() const; void _internal_set_absent_on_null(bool value); public: // bool unique = 4 [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: // @@protoc_insertion_point(class_scope:pg_query.JsonObjectAgg) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::JsonAggConstructor* constructor_; ::pg_query::JsonKeyValue* arg_; bool absent_on_null_; bool unique_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonObjectConstructor final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonObjectConstructor) */ { public: inline JsonObjectConstructor() : JsonObjectConstructor(nullptr) {} ~JsonObjectConstructor() override; template explicit PROTOBUF_CONSTEXPR JsonObjectConstructor(::google::protobuf::internal::ConstantInitialized); inline JsonObjectConstructor(const JsonObjectConstructor& from) : JsonObjectConstructor(nullptr, from) {} JsonObjectConstructor(JsonObjectConstructor&& from) noexcept : JsonObjectConstructor() { *this = ::std::move(from); } inline JsonObjectConstructor& operator=(const JsonObjectConstructor& from) { CopyFrom(from); return *this; } inline JsonObjectConstructor& operator=(JsonObjectConstructor&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonObjectConstructor& default_instance() { return *internal_default_instance(); } static inline const JsonObjectConstructor* internal_default_instance() { return reinterpret_cast( &_JsonObjectConstructor_default_instance_); } static constexpr int kIndexInFileMessages = 136; friend void swap(JsonObjectConstructor& a, JsonObjectConstructor& b) { a.Swap(&b); } inline void Swap(JsonObjectConstructor* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonObjectConstructor* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonObjectConstructor* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonObjectConstructor& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonObjectConstructor& from) { JsonObjectConstructor::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonObjectConstructor* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonObjectConstructor"; } protected: explicit JsonObjectConstructor(::google::protobuf::Arena* arena); JsonObjectConstructor(::google::protobuf::Arena* arena, const JsonObjectConstructor& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kExprsFieldNumber = 1, kOutputFieldNumber = 2, kAbsentOnNullFieldNumber = 3, kUniqueFieldNumber = 4, kLocationFieldNumber = 5, }; // repeated .pg_query.Node exprs = 1 [json_name = "exprs"]; int exprs_size() const; private: int _internal_exprs_size() const; public: void clear_exprs() ; ::pg_query::Node* mutable_exprs(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_exprs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_exprs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_exprs(); public: const ::pg_query::Node& exprs(int index) const; ::pg_query::Node* add_exprs(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& exprs() const; // .pg_query.JsonOutput output = 2 [json_name = "output"]; bool has_output() const; void clear_output() ; const ::pg_query::JsonOutput& output() const; PROTOBUF_NODISCARD ::pg_query::JsonOutput* release_output(); ::pg_query::JsonOutput* mutable_output(); void set_allocated_output(::pg_query::JsonOutput* value); void unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value); ::pg_query::JsonOutput* unsafe_arena_release_output(); private: const ::pg_query::JsonOutput& _internal_output() const; ::pg_query::JsonOutput* _internal_mutable_output(); public: // bool absent_on_null = 3 [json_name = "absent_on_null"]; void clear_absent_on_null() ; bool absent_on_null() const; void set_absent_on_null(bool value); private: bool _internal_absent_on_null() const; void _internal_set_absent_on_null(bool value); public: // bool unique = 4 [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: // int32 location = 5 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonObjectConstructor) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > exprs_; ::pg_query::JsonOutput* output_; bool absent_on_null_; bool unique_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonOutput final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonOutput) */ { public: inline JsonOutput() : JsonOutput(nullptr) {} ~JsonOutput() override; template explicit PROTOBUF_CONSTEXPR JsonOutput(::google::protobuf::internal::ConstantInitialized); inline JsonOutput(const JsonOutput& from) : JsonOutput(nullptr, from) {} JsonOutput(JsonOutput&& from) noexcept : JsonOutput() { *this = ::std::move(from); } inline JsonOutput& operator=(const JsonOutput& from) { CopyFrom(from); return *this; } inline JsonOutput& operator=(JsonOutput&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonOutput& default_instance() { return *internal_default_instance(); } static inline const JsonOutput* internal_default_instance() { return reinterpret_cast( &_JsonOutput_default_instance_); } static constexpr int kIndexInFileMessages = 126; friend void swap(JsonOutput& a, JsonOutput& b) { a.Swap(&b); } inline void Swap(JsonOutput* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonOutput* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonOutput* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonOutput& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonOutput& from) { JsonOutput::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonOutput* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonOutput"; } protected: explicit JsonOutput(::google::protobuf::Arena* arena); JsonOutput(::google::protobuf::Arena* arena, const JsonOutput& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTypeNameFieldNumber = 1, kReturningFieldNumber = 2, }; // .pg_query.TypeName type_name = 1 [json_name = "typeName"]; bool has_type_name() const; void clear_type_name() ; const ::pg_query::TypeName& type_name() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* value); void unsafe_arena_set_allocated_type_name(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_type_name(); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: // .pg_query.JsonReturning returning = 2 [json_name = "returning"]; bool has_returning() const; void clear_returning() ; const ::pg_query::JsonReturning& returning() const; PROTOBUF_NODISCARD ::pg_query::JsonReturning* release_returning(); ::pg_query::JsonReturning* mutable_returning(); void set_allocated_returning(::pg_query::JsonReturning* value); void unsafe_arena_set_allocated_returning(::pg_query::JsonReturning* value); ::pg_query::JsonReturning* unsafe_arena_release_returning(); private: const ::pg_query::JsonReturning& _internal_returning() const; ::pg_query::JsonReturning* _internal_mutable_returning(); public: // @@protoc_insertion_point(class_scope:pg_query.JsonOutput) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::TypeName* type_name_; ::pg_query::JsonReturning* returning_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonParseExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonParseExpr) */ { public: inline JsonParseExpr() : JsonParseExpr(nullptr) {} ~JsonParseExpr() override; template explicit PROTOBUF_CONSTEXPR JsonParseExpr(::google::protobuf::internal::ConstantInitialized); inline JsonParseExpr(const JsonParseExpr& from) : JsonParseExpr(nullptr, from) {} JsonParseExpr(JsonParseExpr&& from) noexcept : JsonParseExpr() { *this = ::std::move(from); } inline JsonParseExpr& operator=(const JsonParseExpr& from) { CopyFrom(from); return *this; } inline JsonParseExpr& operator=(JsonParseExpr&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonParseExpr& default_instance() { return *internal_default_instance(); } static inline const JsonParseExpr* internal_default_instance() { return reinterpret_cast( &_JsonParseExpr_default_instance_); } static constexpr int kIndexInFileMessages = 133; friend void swap(JsonParseExpr& a, JsonParseExpr& b) { a.Swap(&b); } inline void Swap(JsonParseExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonParseExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonParseExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonParseExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonParseExpr& from) { JsonParseExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonParseExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonParseExpr"; } protected: explicit JsonParseExpr(::google::protobuf::Arena* arena); JsonParseExpr(::google::protobuf::Arena* arena, const JsonParseExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kExprFieldNumber = 1, kOutputFieldNumber = 2, kUniqueKeysFieldNumber = 3, kLocationFieldNumber = 4, }; // .pg_query.JsonValueExpr expr = 1 [json_name = "expr"]; bool has_expr() const; void clear_expr() ; const ::pg_query::JsonValueExpr& expr() const; PROTOBUF_NODISCARD ::pg_query::JsonValueExpr* release_expr(); ::pg_query::JsonValueExpr* mutable_expr(); void set_allocated_expr(::pg_query::JsonValueExpr* value); void unsafe_arena_set_allocated_expr(::pg_query::JsonValueExpr* value); ::pg_query::JsonValueExpr* unsafe_arena_release_expr(); private: const ::pg_query::JsonValueExpr& _internal_expr() const; ::pg_query::JsonValueExpr* _internal_mutable_expr(); public: // .pg_query.JsonOutput output = 2 [json_name = "output"]; bool has_output() const; void clear_output() ; const ::pg_query::JsonOutput& output() const; PROTOBUF_NODISCARD ::pg_query::JsonOutput* release_output(); ::pg_query::JsonOutput* mutable_output(); void set_allocated_output(::pg_query::JsonOutput* value); void unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value); ::pg_query::JsonOutput* unsafe_arena_release_output(); private: const ::pg_query::JsonOutput& _internal_output() const; ::pg_query::JsonOutput* _internal_mutable_output(); public: // bool unique_keys = 3 [json_name = "unique_keys"]; void clear_unique_keys() ; bool unique_keys() const; void set_unique_keys(bool value); private: bool _internal_unique_keys() const; void _internal_set_unique_keys(bool value); public: // int32 location = 4 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonParseExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::JsonValueExpr* expr_; ::pg_query::JsonOutput* output_; bool unique_keys_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonScalarExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonScalarExpr) */ { public: inline JsonScalarExpr() : JsonScalarExpr(nullptr) {} ~JsonScalarExpr() override; template explicit PROTOBUF_CONSTEXPR JsonScalarExpr(::google::protobuf::internal::ConstantInitialized); inline JsonScalarExpr(const JsonScalarExpr& from) : JsonScalarExpr(nullptr, from) {} JsonScalarExpr(JsonScalarExpr&& from) noexcept : JsonScalarExpr() { *this = ::std::move(from); } inline JsonScalarExpr& operator=(const JsonScalarExpr& from) { CopyFrom(from); return *this; } inline JsonScalarExpr& operator=(JsonScalarExpr&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonScalarExpr& default_instance() { return *internal_default_instance(); } static inline const JsonScalarExpr* internal_default_instance() { return reinterpret_cast( &_JsonScalarExpr_default_instance_); } static constexpr int kIndexInFileMessages = 134; friend void swap(JsonScalarExpr& a, JsonScalarExpr& b) { a.Swap(&b); } inline void Swap(JsonScalarExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonScalarExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonScalarExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonScalarExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonScalarExpr& from) { JsonScalarExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonScalarExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonScalarExpr"; } protected: explicit JsonScalarExpr(::google::protobuf::Arena* arena); JsonScalarExpr(::google::protobuf::Arena* arena, const JsonScalarExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kExprFieldNumber = 1, kOutputFieldNumber = 2, kLocationFieldNumber = 3, }; // .pg_query.Node expr = 1 [json_name = "expr"]; bool has_expr() const; void clear_expr() ; const ::pg_query::Node& expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* value); void unsafe_arena_set_allocated_expr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_expr(); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: // .pg_query.JsonOutput output = 2 [json_name = "output"]; bool has_output() const; void clear_output() ; const ::pg_query::JsonOutput& output() const; PROTOBUF_NODISCARD ::pg_query::JsonOutput* release_output(); ::pg_query::JsonOutput* mutable_output(); void set_allocated_output(::pg_query::JsonOutput* value); void unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value); ::pg_query::JsonOutput* unsafe_arena_release_output(); private: const ::pg_query::JsonOutput& _internal_output() const; ::pg_query::JsonOutput* _internal_mutable_output(); public: // int32 location = 3 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonScalarExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* expr_; ::pg_query::JsonOutput* output_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonSerializeExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonSerializeExpr) */ { public: inline JsonSerializeExpr() : JsonSerializeExpr(nullptr) {} ~JsonSerializeExpr() override; template explicit PROTOBUF_CONSTEXPR JsonSerializeExpr(::google::protobuf::internal::ConstantInitialized); inline JsonSerializeExpr(const JsonSerializeExpr& from) : JsonSerializeExpr(nullptr, from) {} JsonSerializeExpr(JsonSerializeExpr&& from) noexcept : JsonSerializeExpr() { *this = ::std::move(from); } inline JsonSerializeExpr& operator=(const JsonSerializeExpr& from) { CopyFrom(from); return *this; } inline JsonSerializeExpr& operator=(JsonSerializeExpr&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonSerializeExpr& default_instance() { return *internal_default_instance(); } static inline const JsonSerializeExpr* internal_default_instance() { return reinterpret_cast( &_JsonSerializeExpr_default_instance_); } static constexpr int kIndexInFileMessages = 135; friend void swap(JsonSerializeExpr& a, JsonSerializeExpr& b) { a.Swap(&b); } inline void Swap(JsonSerializeExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonSerializeExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonSerializeExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonSerializeExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonSerializeExpr& from) { JsonSerializeExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonSerializeExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonSerializeExpr"; } protected: explicit JsonSerializeExpr(::google::protobuf::Arena* arena); JsonSerializeExpr(::google::protobuf::Arena* arena, const JsonSerializeExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kExprFieldNumber = 1, kOutputFieldNumber = 2, kLocationFieldNumber = 3, }; // .pg_query.JsonValueExpr expr = 1 [json_name = "expr"]; bool has_expr() const; void clear_expr() ; const ::pg_query::JsonValueExpr& expr() const; PROTOBUF_NODISCARD ::pg_query::JsonValueExpr* release_expr(); ::pg_query::JsonValueExpr* mutable_expr(); void set_allocated_expr(::pg_query::JsonValueExpr* value); void unsafe_arena_set_allocated_expr(::pg_query::JsonValueExpr* value); ::pg_query::JsonValueExpr* unsafe_arena_release_expr(); private: const ::pg_query::JsonValueExpr& _internal_expr() const; ::pg_query::JsonValueExpr* _internal_mutable_expr(); public: // .pg_query.JsonOutput output = 2 [json_name = "output"]; bool has_output() const; void clear_output() ; const ::pg_query::JsonOutput& output() const; PROTOBUF_NODISCARD ::pg_query::JsonOutput* release_output(); ::pg_query::JsonOutput* mutable_output(); void set_allocated_output(::pg_query::JsonOutput* value); void unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value); ::pg_query::JsonOutput* unsafe_arena_release_output(); private: const ::pg_query::JsonOutput& _internal_output() const; ::pg_query::JsonOutput* _internal_mutable_output(); public: // int32 location = 3 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonSerializeExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::JsonValueExpr* expr_; ::pg_query::JsonOutput* output_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonTable final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonTable) */ { public: inline JsonTable() : JsonTable(nullptr) {} ~JsonTable() override; template explicit PROTOBUF_CONSTEXPR JsonTable(::google::protobuf::internal::ConstantInitialized); inline JsonTable(const JsonTable& from) : JsonTable(nullptr, from) {} JsonTable(JsonTable&& from) noexcept : JsonTable() { *this = ::std::move(from); } inline JsonTable& operator=(const JsonTable& from) { CopyFrom(from); return *this; } inline JsonTable& operator=(JsonTable&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonTable& default_instance() { return *internal_default_instance(); } static inline const JsonTable* internal_default_instance() { return reinterpret_cast( &_JsonTable_default_instance_); } static constexpr int kIndexInFileMessages = 130; friend void swap(JsonTable& a, JsonTable& b) { a.Swap(&b); } inline void Swap(JsonTable* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonTable* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonTable* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonTable& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonTable& from) { JsonTable::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonTable* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonTable"; } protected: explicit JsonTable(::google::protobuf::Arena* arena); JsonTable(::google::protobuf::Arena* arena, const JsonTable& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPassingFieldNumber = 3, kColumnsFieldNumber = 4, kContextItemFieldNumber = 1, kPathspecFieldNumber = 2, kOnErrorFieldNumber = 5, kAliasFieldNumber = 6, kLateralFieldNumber = 7, kLocationFieldNumber = 8, }; // repeated .pg_query.Node passing = 3 [json_name = "passing"]; int passing_size() const; private: int _internal_passing_size() const; public: void clear_passing() ; ::pg_query::Node* mutable_passing(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_passing(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_passing() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_passing(); public: const ::pg_query::Node& passing(int index) const; ::pg_query::Node* add_passing(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& passing() const; // repeated .pg_query.Node columns = 4 [json_name = "columns"]; int columns_size() const; private: int _internal_columns_size() const; public: void clear_columns() ; ::pg_query::Node* mutable_columns(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_columns(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_columns() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_columns(); public: const ::pg_query::Node& columns(int index) const; ::pg_query::Node* add_columns(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& columns() const; // .pg_query.JsonValueExpr context_item = 1 [json_name = "context_item"]; bool has_context_item() const; void clear_context_item() ; const ::pg_query::JsonValueExpr& context_item() const; PROTOBUF_NODISCARD ::pg_query::JsonValueExpr* release_context_item(); ::pg_query::JsonValueExpr* mutable_context_item(); void set_allocated_context_item(::pg_query::JsonValueExpr* value); void unsafe_arena_set_allocated_context_item(::pg_query::JsonValueExpr* value); ::pg_query::JsonValueExpr* unsafe_arena_release_context_item(); private: const ::pg_query::JsonValueExpr& _internal_context_item() const; ::pg_query::JsonValueExpr* _internal_mutable_context_item(); public: // .pg_query.JsonTablePathSpec pathspec = 2 [json_name = "pathspec"]; bool has_pathspec() const; void clear_pathspec() ; const ::pg_query::JsonTablePathSpec& pathspec() const; PROTOBUF_NODISCARD ::pg_query::JsonTablePathSpec* release_pathspec(); ::pg_query::JsonTablePathSpec* mutable_pathspec(); void set_allocated_pathspec(::pg_query::JsonTablePathSpec* value); void unsafe_arena_set_allocated_pathspec(::pg_query::JsonTablePathSpec* value); ::pg_query::JsonTablePathSpec* unsafe_arena_release_pathspec(); private: const ::pg_query::JsonTablePathSpec& _internal_pathspec() const; ::pg_query::JsonTablePathSpec* _internal_mutable_pathspec(); public: // .pg_query.JsonBehavior on_error = 5 [json_name = "on_error"]; bool has_on_error() const; void clear_on_error() ; const ::pg_query::JsonBehavior& on_error() const; PROTOBUF_NODISCARD ::pg_query::JsonBehavior* release_on_error(); ::pg_query::JsonBehavior* mutable_on_error(); void set_allocated_on_error(::pg_query::JsonBehavior* value); void unsafe_arena_set_allocated_on_error(::pg_query::JsonBehavior* value); ::pg_query::JsonBehavior* unsafe_arena_release_on_error(); private: const ::pg_query::JsonBehavior& _internal_on_error() const; ::pg_query::JsonBehavior* _internal_mutable_on_error(); public: // .pg_query.Alias alias = 6 [json_name = "alias"]; bool has_alias() const; void clear_alias() ; const ::pg_query::Alias& alias() const; PROTOBUF_NODISCARD ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* value); void unsafe_arena_set_allocated_alias(::pg_query::Alias* value); ::pg_query::Alias* unsafe_arena_release_alias(); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: // bool lateral = 7 [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 = 8 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonTable) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 6, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > passing_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > columns_; ::pg_query::JsonValueExpr* context_item_; ::pg_query::JsonTablePathSpec* pathspec_; ::pg_query::JsonBehavior* on_error_; ::pg_query::Alias* alias_; bool lateral_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonTableColumn final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonTableColumn) */ { public: inline JsonTableColumn() : JsonTableColumn(nullptr) {} ~JsonTableColumn() override; template explicit PROTOBUF_CONSTEXPR JsonTableColumn(::google::protobuf::internal::ConstantInitialized); inline JsonTableColumn(const JsonTableColumn& from) : JsonTableColumn(nullptr, from) {} JsonTableColumn(JsonTableColumn&& from) noexcept : JsonTableColumn() { *this = ::std::move(from); } inline JsonTableColumn& operator=(const JsonTableColumn& from) { CopyFrom(from); return *this; } inline JsonTableColumn& operator=(JsonTableColumn&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonTableColumn& default_instance() { return *internal_default_instance(); } static inline const JsonTableColumn* internal_default_instance() { return reinterpret_cast( &_JsonTableColumn_default_instance_); } static constexpr int kIndexInFileMessages = 131; friend void swap(JsonTableColumn& a, JsonTableColumn& b) { a.Swap(&b); } inline void Swap(JsonTableColumn* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonTableColumn* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonTableColumn* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonTableColumn& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonTableColumn& from) { JsonTableColumn::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonTableColumn* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonTableColumn"; } protected: explicit JsonTableColumn(::google::protobuf::Arena* arena); JsonTableColumn(::google::protobuf::Arena* arena, const JsonTableColumn& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kColumnsFieldNumber = 8, kNameFieldNumber = 2, kTypeNameFieldNumber = 3, kPathspecFieldNumber = 4, kFormatFieldNumber = 5, kOnEmptyFieldNumber = 9, kOnErrorFieldNumber = 10, kColtypeFieldNumber = 1, kWrapperFieldNumber = 6, kQuotesFieldNumber = 7, kLocationFieldNumber = 11, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_columns(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_columns() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_columns(); public: const ::pg_query::Node& columns(int index) const; ::pg_query::Node* add_columns(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& columns() const; // string name = 2 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_name( const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; bool has_type_name() const; void clear_type_name() ; const ::pg_query::TypeName& type_name() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* value); void unsafe_arena_set_allocated_type_name(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_type_name(); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: // .pg_query.JsonTablePathSpec pathspec = 4 [json_name = "pathspec"]; bool has_pathspec() const; void clear_pathspec() ; const ::pg_query::JsonTablePathSpec& pathspec() const; PROTOBUF_NODISCARD ::pg_query::JsonTablePathSpec* release_pathspec(); ::pg_query::JsonTablePathSpec* mutable_pathspec(); void set_allocated_pathspec(::pg_query::JsonTablePathSpec* value); void unsafe_arena_set_allocated_pathspec(::pg_query::JsonTablePathSpec* value); ::pg_query::JsonTablePathSpec* unsafe_arena_release_pathspec(); private: const ::pg_query::JsonTablePathSpec& _internal_pathspec() const; ::pg_query::JsonTablePathSpec* _internal_mutable_pathspec(); public: // .pg_query.JsonFormat format = 5 [json_name = "format"]; bool has_format() const; void clear_format() ; const ::pg_query::JsonFormat& format() const; PROTOBUF_NODISCARD ::pg_query::JsonFormat* release_format(); ::pg_query::JsonFormat* mutable_format(); void set_allocated_format(::pg_query::JsonFormat* value); void unsafe_arena_set_allocated_format(::pg_query::JsonFormat* value); ::pg_query::JsonFormat* unsafe_arena_release_format(); private: const ::pg_query::JsonFormat& _internal_format() const; ::pg_query::JsonFormat* _internal_mutable_format(); public: // .pg_query.JsonBehavior on_empty = 9 [json_name = "on_empty"]; bool has_on_empty() const; void clear_on_empty() ; const ::pg_query::JsonBehavior& on_empty() const; PROTOBUF_NODISCARD ::pg_query::JsonBehavior* release_on_empty(); ::pg_query::JsonBehavior* mutable_on_empty(); void set_allocated_on_empty(::pg_query::JsonBehavior* value); void unsafe_arena_set_allocated_on_empty(::pg_query::JsonBehavior* value); ::pg_query::JsonBehavior* unsafe_arena_release_on_empty(); private: const ::pg_query::JsonBehavior& _internal_on_empty() const; ::pg_query::JsonBehavior* _internal_mutable_on_empty(); public: // .pg_query.JsonBehavior on_error = 10 [json_name = "on_error"]; bool has_on_error() const; void clear_on_error() ; const ::pg_query::JsonBehavior& on_error() const; PROTOBUF_NODISCARD ::pg_query::JsonBehavior* release_on_error(); ::pg_query::JsonBehavior* mutable_on_error(); void set_allocated_on_error(::pg_query::JsonBehavior* value); void unsafe_arena_set_allocated_on_error(::pg_query::JsonBehavior* value); ::pg_query::JsonBehavior* unsafe_arena_release_on_error(); private: const ::pg_query::JsonBehavior& _internal_on_error() const; ::pg_query::JsonBehavior* _internal_mutable_on_error(); public: // .pg_query.JsonTableColumnType coltype = 1 [json_name = "coltype"]; void clear_coltype() ; ::pg_query::JsonTableColumnType coltype() const; void set_coltype(::pg_query::JsonTableColumnType value); private: ::pg_query::JsonTableColumnType _internal_coltype() const; void _internal_set_coltype(::pg_query::JsonTableColumnType value); public: // .pg_query.JsonWrapper wrapper = 6 [json_name = "wrapper"]; void clear_wrapper() ; ::pg_query::JsonWrapper wrapper() const; void set_wrapper(::pg_query::JsonWrapper value); private: ::pg_query::JsonWrapper _internal_wrapper() const; void _internal_set_wrapper(::pg_query::JsonWrapper value); public: // .pg_query.JsonQuotes quotes = 7 [json_name = "quotes"]; void clear_quotes() ; ::pg_query::JsonQuotes quotes() const; void set_quotes(::pg_query::JsonQuotes value); private: ::pg_query::JsonQuotes _internal_quotes() const; void _internal_set_quotes(::pg_query::JsonQuotes value); public: // int32 location = 11 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonTableColumn) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 11, 6, 45, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > columns_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::TypeName* type_name_; ::pg_query::JsonTablePathSpec* pathspec_; ::pg_query::JsonFormat* format_; ::pg_query::JsonBehavior* on_empty_; ::pg_query::JsonBehavior* on_error_; int coltype_; int wrapper_; int quotes_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonTablePathScan final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonTablePathScan) */ { public: inline JsonTablePathScan() : JsonTablePathScan(nullptr) {} ~JsonTablePathScan() override; template explicit PROTOBUF_CONSTEXPR JsonTablePathScan(::google::protobuf::internal::ConstantInitialized); inline JsonTablePathScan(const JsonTablePathScan& from) : JsonTablePathScan(nullptr, from) {} JsonTablePathScan(JsonTablePathScan&& from) noexcept : JsonTablePathScan() { *this = ::std::move(from); } inline JsonTablePathScan& operator=(const JsonTablePathScan& from) { CopyFrom(from); return *this; } inline JsonTablePathScan& operator=(JsonTablePathScan&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonTablePathScan& default_instance() { return *internal_default_instance(); } static inline const JsonTablePathScan* internal_default_instance() { return reinterpret_cast( &_JsonTablePathScan_default_instance_); } static constexpr int kIndexInFileMessages = 59; friend void swap(JsonTablePathScan& a, JsonTablePathScan& b) { a.Swap(&b); } inline void Swap(JsonTablePathScan* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonTablePathScan* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonTablePathScan* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonTablePathScan& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonTablePathScan& from) { JsonTablePathScan::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonTablePathScan* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonTablePathScan"; } protected: explicit JsonTablePathScan(::google::protobuf::Arena* arena); JsonTablePathScan(::google::protobuf::Arena* arena, const JsonTablePathScan& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPlanFieldNumber = 1, kPathFieldNumber = 2, kChildFieldNumber = 4, kErrorOnErrorFieldNumber = 3, kColMinFieldNumber = 5, kColMaxFieldNumber = 6, }; // .pg_query.Node plan = 1 [json_name = "plan"]; bool has_plan() const; void clear_plan() ; const ::pg_query::Node& plan() const; PROTOBUF_NODISCARD ::pg_query::Node* release_plan(); ::pg_query::Node* mutable_plan(); void set_allocated_plan(::pg_query::Node* value); void unsafe_arena_set_allocated_plan(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_plan(); private: const ::pg_query::Node& _internal_plan() const; ::pg_query::Node* _internal_mutable_plan(); public: // .pg_query.JsonTablePath path = 2 [json_name = "path"]; bool has_path() const; void clear_path() ; const ::pg_query::JsonTablePath& path() const; PROTOBUF_NODISCARD ::pg_query::JsonTablePath* release_path(); ::pg_query::JsonTablePath* mutable_path(); void set_allocated_path(::pg_query::JsonTablePath* value); void unsafe_arena_set_allocated_path(::pg_query::JsonTablePath* value); ::pg_query::JsonTablePath* unsafe_arena_release_path(); private: const ::pg_query::JsonTablePath& _internal_path() const; ::pg_query::JsonTablePath* _internal_mutable_path(); public: // .pg_query.Node child = 4 [json_name = "child"]; bool has_child() const; void clear_child() ; const ::pg_query::Node& child() const; PROTOBUF_NODISCARD ::pg_query::Node* release_child(); ::pg_query::Node* mutable_child(); void set_allocated_child(::pg_query::Node* value); void unsafe_arena_set_allocated_child(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_child(); private: const ::pg_query::Node& _internal_child() const; ::pg_query::Node* _internal_mutable_child(); public: // bool error_on_error = 3 [json_name = "errorOnError"]; void clear_error_on_error() ; bool error_on_error() const; void set_error_on_error(bool value); private: bool _internal_error_on_error() const; void _internal_set_error_on_error(bool value); public: // int32 col_min = 5 [json_name = "colMin"]; void clear_col_min() ; ::int32_t col_min() const; void set_col_min(::int32_t value); private: ::int32_t _internal_col_min() const; void _internal_set_col_min(::int32_t value); public: // int32 col_max = 6 [json_name = "colMax"]; void clear_col_max() ; ::int32_t col_max() const; void set_col_max(::int32_t value); private: ::int32_t _internal_col_max() const; void _internal_set_col_max(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonTablePathScan) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* plan_; ::pg_query::JsonTablePath* path_; ::pg_query::Node* child_; bool error_on_error_; ::int32_t col_min_; ::int32_t col_max_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonTablePathSpec final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonTablePathSpec) */ { public: inline JsonTablePathSpec() : JsonTablePathSpec(nullptr) {} ~JsonTablePathSpec() override; template explicit PROTOBUF_CONSTEXPR JsonTablePathSpec(::google::protobuf::internal::ConstantInitialized); inline JsonTablePathSpec(const JsonTablePathSpec& from) : JsonTablePathSpec(nullptr, from) {} JsonTablePathSpec(JsonTablePathSpec&& from) noexcept : JsonTablePathSpec() { *this = ::std::move(from); } inline JsonTablePathSpec& operator=(const JsonTablePathSpec& from) { CopyFrom(from); return *this; } inline JsonTablePathSpec& operator=(JsonTablePathSpec&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonTablePathSpec& default_instance() { return *internal_default_instance(); } static inline const JsonTablePathSpec* internal_default_instance() { return reinterpret_cast( &_JsonTablePathSpec_default_instance_); } static constexpr int kIndexInFileMessages = 129; friend void swap(JsonTablePathSpec& a, JsonTablePathSpec& b) { a.Swap(&b); } inline void Swap(JsonTablePathSpec* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonTablePathSpec* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonTablePathSpec* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonTablePathSpec& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonTablePathSpec& from) { JsonTablePathSpec::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonTablePathSpec* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonTablePathSpec"; } protected: explicit JsonTablePathSpec(::google::protobuf::Arena* arena); JsonTablePathSpec(::google::protobuf::Arena* arena, const JsonTablePathSpec& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 2, kStringFieldNumber = 1, kNameLocationFieldNumber = 3, kLocationFieldNumber = 4, }; // string name = 2 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_name( const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.Node string = 1 [json_name = "string"]; bool has_string() const; void clear_string() ; const ::pg_query::Node& string() const; PROTOBUF_NODISCARD ::pg_query::Node* release_string(); ::pg_query::Node* mutable_string(); void set_allocated_string(::pg_query::Node* value); void unsafe_arena_set_allocated_string(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_string(); private: const ::pg_query::Node& _internal_string() const; ::pg_query::Node* _internal_mutable_string(); public: // int32 name_location = 3 [json_name = "name_location"]; void clear_name_location() ; ::int32_t name_location() const; void set_name_location(::int32_t value); private: ::int32_t _internal_name_location() const; void _internal_set_name_location(::int32_t value); public: // int32 location = 4 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.JsonTablePathSpec) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 1, 39, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::Node* string_; ::int32_t name_location_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonTableSiblingJoin final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonTableSiblingJoin) */ { public: inline JsonTableSiblingJoin() : JsonTableSiblingJoin(nullptr) {} ~JsonTableSiblingJoin() override; template explicit PROTOBUF_CONSTEXPR JsonTableSiblingJoin(::google::protobuf::internal::ConstantInitialized); inline JsonTableSiblingJoin(const JsonTableSiblingJoin& from) : JsonTableSiblingJoin(nullptr, from) {} JsonTableSiblingJoin(JsonTableSiblingJoin&& from) noexcept : JsonTableSiblingJoin() { *this = ::std::move(from); } inline JsonTableSiblingJoin& operator=(const JsonTableSiblingJoin& from) { CopyFrom(from); return *this; } inline JsonTableSiblingJoin& operator=(JsonTableSiblingJoin&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonTableSiblingJoin& default_instance() { return *internal_default_instance(); } static inline const JsonTableSiblingJoin* internal_default_instance() { return reinterpret_cast( &_JsonTableSiblingJoin_default_instance_); } static constexpr int kIndexInFileMessages = 60; friend void swap(JsonTableSiblingJoin& a, JsonTableSiblingJoin& b) { a.Swap(&b); } inline void Swap(JsonTableSiblingJoin* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonTableSiblingJoin* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonTableSiblingJoin* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonTableSiblingJoin& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonTableSiblingJoin& from) { JsonTableSiblingJoin::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonTableSiblingJoin* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonTableSiblingJoin"; } protected: explicit JsonTableSiblingJoin(::google::protobuf::Arena* arena); JsonTableSiblingJoin(::google::protobuf::Arena* arena, const JsonTableSiblingJoin& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPlanFieldNumber = 1, kLplanFieldNumber = 2, kRplanFieldNumber = 3, }; // .pg_query.Node plan = 1 [json_name = "plan"]; bool has_plan() const; void clear_plan() ; const ::pg_query::Node& plan() const; PROTOBUF_NODISCARD ::pg_query::Node* release_plan(); ::pg_query::Node* mutable_plan(); void set_allocated_plan(::pg_query::Node* value); void unsafe_arena_set_allocated_plan(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_plan(); private: const ::pg_query::Node& _internal_plan() const; ::pg_query::Node* _internal_mutable_plan(); public: // .pg_query.Node lplan = 2 [json_name = "lplan"]; bool has_lplan() const; void clear_lplan() ; const ::pg_query::Node& lplan() const; PROTOBUF_NODISCARD ::pg_query::Node* release_lplan(); ::pg_query::Node* mutable_lplan(); void set_allocated_lplan(::pg_query::Node* value); void unsafe_arena_set_allocated_lplan(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_lplan(); private: const ::pg_query::Node& _internal_lplan() const; ::pg_query::Node* _internal_mutable_lplan(); public: // .pg_query.Node rplan = 3 [json_name = "rplan"]; bool has_rplan() const; void clear_rplan() ; const ::pg_query::Node& rplan() const; PROTOBUF_NODISCARD ::pg_query::Node* release_rplan(); ::pg_query::Node* mutable_rplan(); void set_allocated_rplan(::pg_query::Node* value); void unsafe_arena_set_allocated_rplan(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_rplan(); private: const ::pg_query::Node& _internal_rplan() const; ::pg_query::Node* _internal_mutable_rplan(); public: // @@protoc_insertion_point(class_scope:pg_query.JsonTableSiblingJoin) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* plan_; ::pg_query::Node* lplan_; ::pg_query::Node* rplan_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class JsonValueExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.JsonValueExpr) */ { public: inline JsonValueExpr() : JsonValueExpr(nullptr) {} ~JsonValueExpr() override; template explicit PROTOBUF_CONSTEXPR JsonValueExpr(::google::protobuf::internal::ConstantInitialized); inline JsonValueExpr(const JsonValueExpr& from) : JsonValueExpr(nullptr, from) {} JsonValueExpr(JsonValueExpr&& from) noexcept : JsonValueExpr() { *this = ::std::move(from); } inline JsonValueExpr& operator=(const JsonValueExpr& from) { CopyFrom(from); return *this; } inline JsonValueExpr& operator=(JsonValueExpr&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const JsonValueExpr& default_instance() { return *internal_default_instance(); } static inline const JsonValueExpr* internal_default_instance() { return reinterpret_cast( &_JsonValueExpr_default_instance_); } static constexpr int kIndexInFileMessages = 53; friend void swap(JsonValueExpr& a, JsonValueExpr& b) { a.Swap(&b); } inline void Swap(JsonValueExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JsonValueExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- JsonValueExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const JsonValueExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const JsonValueExpr& from) { JsonValueExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(JsonValueExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.JsonValueExpr"; } protected: explicit JsonValueExpr(::google::protobuf::Arena* arena); JsonValueExpr(::google::protobuf::Arena* arena, const JsonValueExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRawExprFieldNumber = 1, kFormattedExprFieldNumber = 2, kFormatFieldNumber = 3, }; // .pg_query.Node raw_expr = 1 [json_name = "raw_expr"]; bool has_raw_expr() const; void clear_raw_expr() ; const ::pg_query::Node& raw_expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_raw_expr(); ::pg_query::Node* mutable_raw_expr(); void set_allocated_raw_expr(::pg_query::Node* value); void unsafe_arena_set_allocated_raw_expr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_raw_expr(); private: const ::pg_query::Node& _internal_raw_expr() const; ::pg_query::Node* _internal_mutable_raw_expr(); public: // .pg_query.Node formatted_expr = 2 [json_name = "formatted_expr"]; bool has_formatted_expr() const; void clear_formatted_expr() ; const ::pg_query::Node& formatted_expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_formatted_expr(); ::pg_query::Node* mutable_formatted_expr(); void set_allocated_formatted_expr(::pg_query::Node* value); void unsafe_arena_set_allocated_formatted_expr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_formatted_expr(); private: const ::pg_query::Node& _internal_formatted_expr() const; ::pg_query::Node* _internal_mutable_formatted_expr(); public: // .pg_query.JsonFormat format = 3 [json_name = "format"]; bool has_format() const; void clear_format() ; const ::pg_query::JsonFormat& format() const; PROTOBUF_NODISCARD ::pg_query::JsonFormat* release_format(); ::pg_query::JsonFormat* mutable_format(); void set_allocated_format(::pg_query::JsonFormat* value); void unsafe_arena_set_allocated_format(::pg_query::JsonFormat* value); ::pg_query::JsonFormat* unsafe_arena_release_format(); private: const ::pg_query::JsonFormat& _internal_format() const; ::pg_query::JsonFormat* _internal_mutable_format(); public: // @@protoc_insertion_point(class_scope:pg_query.JsonValueExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* raw_expr_; ::pg_query::Node* formatted_expr_; ::pg_query::JsonFormat* format_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class List final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.List) */ { public: inline List() : List(nullptr) {} ~List() override; template explicit PROTOBUF_CONSTEXPR List(::google::protobuf::internal::ConstantInitialized); inline List(const List& from) : List(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const List& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(List* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- List* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const List& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const List& from) { List::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(List* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.List"; } protected: explicit List(::google::protobuf::Arena* arena); List(::google::protobuf::Arena* arena, const List& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_items() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& items() const; // @@protoc_insertion_point(class_scope:pg_query.List) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > items_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class LockStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.LockStmt) */ { public: inline LockStmt() : LockStmt(nullptr) {} ~LockStmt() override; template explicit PROTOBUF_CONSTEXPR LockStmt(::google::protobuf::internal::ConstantInitialized); inline LockStmt(const LockStmt& from) : LockStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const LockStmt& default_instance() { return *internal_default_instance(); } static inline const LockStmt* internal_default_instance() { return reinterpret_cast( &_LockStmt_default_instance_); } static constexpr int kIndexInFileMessages = 251; friend void swap(LockStmt& a, LockStmt& b) { a.Swap(&b); } inline void Swap(LockStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(LockStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- LockStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const LockStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const LockStmt& from) { LockStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(LockStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.LockStmt"; } protected: explicit LockStmt(::google::protobuf::Arena* arena); LockStmt(::google::protobuf::Arena* arena, const LockStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_relations(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_relations() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_relations(); public: const ::pg_query::Node& relations(int index) const; ::pg_query::Node* add_relations(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& relations() const; // int32 mode = 2 [json_name = "mode"]; void clear_mode() ; ::int32_t mode() const; void set_mode(::int32_t value); private: ::int32_t _internal_mode() const; void _internal_set_mode(::int32_t 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > relations_; ::int32_t mode_; bool nowait_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class LockingClause final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.LockingClause) */ { public: inline LockingClause() : LockingClause(nullptr) {} ~LockingClause() override; template explicit PROTOBUF_CONSTEXPR LockingClause(::google::protobuf::internal::ConstantInitialized); inline LockingClause(const LockingClause& from) : LockingClause(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const LockingClause& default_instance() { return *internal_default_instance(); } static inline const LockingClause* internal_default_instance() { return reinterpret_cast( &_LockingClause_default_instance_); } static constexpr int kIndexInFileMessages = 101; friend void swap(LockingClause& a, LockingClause& b) { a.Swap(&b); } inline void Swap(LockingClause* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(LockingClause* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- LockingClause* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const LockingClause& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const LockingClause& from) { LockingClause::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(LockingClause* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.LockingClause"; } protected: explicit LockingClause(::google::protobuf::Arena* arena); LockingClause(::google::protobuf::Arena* arena, const LockingClause& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_locked_rels(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_locked_rels() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_locked_rels(); public: const ::pg_query::Node& locked_rels(int index) const; ::pg_query::Node* add_locked_rels(); const ::google::protobuf::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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > locked_rels_; int strength_; int wait_policy_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class MergeAction final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.MergeAction) */ { public: inline MergeAction() : MergeAction(nullptr) {} ~MergeAction() override; template explicit PROTOBUF_CONSTEXPR MergeAction(::google::protobuf::internal::ConstantInitialized); inline MergeAction(const MergeAction& from) : MergeAction(nullptr, from) {} MergeAction(MergeAction&& from) noexcept : MergeAction() { *this = ::std::move(from); } inline MergeAction& operator=(const MergeAction& from) { CopyFrom(from); return *this; } inline MergeAction& operator=(MergeAction&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const MergeAction& default_instance() { return *internal_default_instance(); } static inline const MergeAction* internal_default_instance() { return reinterpret_cast( &_MergeAction_default_instance_); } static constexpr int kIndexInFileMessages = 63; friend void swap(MergeAction& a, MergeAction& b) { a.Swap(&b); } inline void Swap(MergeAction* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(MergeAction* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- MergeAction* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const MergeAction& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const MergeAction& from) { MergeAction::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(MergeAction* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.MergeAction"; } protected: explicit MergeAction(::google::protobuf::Arena* arena); MergeAction(::google::protobuf::Arena* arena, const MergeAction& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTargetListFieldNumber = 5, kUpdateColnosFieldNumber = 6, kQualFieldNumber = 4, kMatchKindFieldNumber = 1, kCommandTypeFieldNumber = 2, kOverrideFieldNumber = 3, }; // repeated .pg_query.Node target_list = 5 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_target_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& target_list() const; // repeated .pg_query.Node update_colnos = 6 [json_name = "updateColnos"]; int update_colnos_size() const; private: int _internal_update_colnos_size() const; public: void clear_update_colnos() ; ::pg_query::Node* mutable_update_colnos(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_update_colnos(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_update_colnos() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_update_colnos(); public: const ::pg_query::Node& update_colnos(int index) const; ::pg_query::Node* add_update_colnos(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& update_colnos() const; // .pg_query.Node qual = 4 [json_name = "qual"]; bool has_qual() const; void clear_qual() ; const ::pg_query::Node& qual() const; PROTOBUF_NODISCARD ::pg_query::Node* release_qual(); ::pg_query::Node* mutable_qual(); void set_allocated_qual(::pg_query::Node* value); void unsafe_arena_set_allocated_qual(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_qual(); private: const ::pg_query::Node& _internal_qual() const; ::pg_query::Node* _internal_mutable_qual(); public: // .pg_query.MergeMatchKind match_kind = 1 [json_name = "matchKind"]; void clear_match_kind() ; ::pg_query::MergeMatchKind match_kind() const; void set_match_kind(::pg_query::MergeMatchKind value); private: ::pg_query::MergeMatchKind _internal_match_kind() const; void _internal_set_match_kind(::pg_query::MergeMatchKind value); public: // .pg_query.CmdType command_type = 2 [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.OverridingKind override = 3 [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.MergeAction) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > target_list_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > update_colnos_; ::pg_query::Node* qual_; int match_kind_; int command_type_; int override_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class MergeStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.MergeStmt) */ { public: inline MergeStmt() : MergeStmt(nullptr) {} ~MergeStmt() override; template explicit PROTOBUF_CONSTEXPR MergeStmt(::google::protobuf::internal::ConstantInitialized); inline MergeStmt(const MergeStmt& from) : MergeStmt(nullptr, from) {} MergeStmt(MergeStmt&& from) noexcept : MergeStmt() { *this = ::std::move(from); } inline MergeStmt& operator=(const MergeStmt& from) { CopyFrom(from); return *this; } inline MergeStmt& operator=(MergeStmt&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const MergeStmt& default_instance() { return *internal_default_instance(); } static inline const MergeStmt* internal_default_instance() { return reinterpret_cast( &_MergeStmt_default_instance_); } static constexpr int kIndexInFileMessages = 146; friend void swap(MergeStmt& a, MergeStmt& b) { a.Swap(&b); } inline void Swap(MergeStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(MergeStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- MergeStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const MergeStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const MergeStmt& from) { MergeStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(MergeStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.MergeStmt"; } protected: explicit MergeStmt(::google::protobuf::Arena* arena); MergeStmt(::google::protobuf::Arena* arena, const MergeStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kMergeWhenClausesFieldNumber = 4, kReturningListFieldNumber = 5, kRelationFieldNumber = 1, kSourceRelationFieldNumber = 2, kJoinConditionFieldNumber = 3, kWithClauseFieldNumber = 6, }; // repeated .pg_query.Node merge_when_clauses = 4 [json_name = "mergeWhenClauses"]; int merge_when_clauses_size() const; private: int _internal_merge_when_clauses_size() const; public: void clear_merge_when_clauses() ; ::pg_query::Node* mutable_merge_when_clauses(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_merge_when_clauses(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_merge_when_clauses() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_merge_when_clauses(); public: const ::pg_query::Node& merge_when_clauses(int index) const; ::pg_query::Node* add_merge_when_clauses(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& merge_when_clauses() 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_returning_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_returning_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_returning_list(); public: const ::pg_query::Node& returning_list(int index) const; ::pg_query::Node* add_returning_list(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& returning_list() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .pg_query.Node source_relation = 2 [json_name = "sourceRelation"]; bool has_source_relation() const; void clear_source_relation() ; const ::pg_query::Node& source_relation() const; PROTOBUF_NODISCARD ::pg_query::Node* release_source_relation(); ::pg_query::Node* mutable_source_relation(); void set_allocated_source_relation(::pg_query::Node* value); void unsafe_arena_set_allocated_source_relation(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_source_relation(); private: const ::pg_query::Node& _internal_source_relation() const; ::pg_query::Node* _internal_mutable_source_relation(); public: // .pg_query.Node join_condition = 3 [json_name = "joinCondition"]; bool has_join_condition() const; void clear_join_condition() ; const ::pg_query::Node& join_condition() const; PROTOBUF_NODISCARD ::pg_query::Node* release_join_condition(); ::pg_query::Node* mutable_join_condition(); void set_allocated_join_condition(::pg_query::Node* value); void unsafe_arena_set_allocated_join_condition(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_join_condition(); private: const ::pg_query::Node& _internal_join_condition() const; ::pg_query::Node* _internal_mutable_join_condition(); public: // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; bool has_with_clause() const; void clear_with_clause() ; const ::pg_query::WithClause& with_clause() const; PROTOBUF_NODISCARD ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* value); void unsafe_arena_set_allocated_with_clause(::pg_query::WithClause* value); ::pg_query::WithClause* unsafe_arena_release_with_clause(); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: // @@protoc_insertion_point(class_scope:pg_query.MergeStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 6, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > merge_when_clauses_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > returning_list_; ::pg_query::RangeVar* relation_; ::pg_query::Node* source_relation_; ::pg_query::Node* join_condition_; ::pg_query::WithClause* with_clause_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class MergeSupportFunc final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.MergeSupportFunc) */ { public: inline MergeSupportFunc() : MergeSupportFunc(nullptr) {} ~MergeSupportFunc() override; template explicit PROTOBUF_CONSTEXPR MergeSupportFunc(::google::protobuf::internal::ConstantInitialized); inline MergeSupportFunc(const MergeSupportFunc& from) : MergeSupportFunc(nullptr, from) {} MergeSupportFunc(MergeSupportFunc&& from) noexcept : MergeSupportFunc() { *this = ::std::move(from); } inline MergeSupportFunc& operator=(const MergeSupportFunc& from) { CopyFrom(from); return *this; } inline MergeSupportFunc& operator=(MergeSupportFunc&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const MergeSupportFunc& default_instance() { return *internal_default_instance(); } static inline const MergeSupportFunc* internal_default_instance() { return reinterpret_cast( &_MergeSupportFunc_default_instance_); } static constexpr int kIndexInFileMessages = 22; friend void swap(MergeSupportFunc& a, MergeSupportFunc& b) { a.Swap(&b); } inline void Swap(MergeSupportFunc* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(MergeSupportFunc* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- MergeSupportFunc* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const MergeSupportFunc& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const MergeSupportFunc& from) { MergeSupportFunc::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(MergeSupportFunc* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.MergeSupportFunc"; } protected: explicit MergeSupportFunc(::google::protobuf::Arena* arena); MergeSupportFunc(::google::protobuf::Arena* arena, const MergeSupportFunc& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kMsftypeFieldNumber = 2, kMsfcollidFieldNumber = 3, kLocationFieldNumber = 4, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 msftype = 2 [json_name = "msftype"]; void clear_msftype() ; ::uint32_t msftype() const; void set_msftype(::uint32_t value); private: ::uint32_t _internal_msftype() const; void _internal_set_msftype(::uint32_t value); public: // uint32 msfcollid = 3 [json_name = "msfcollid"]; void clear_msfcollid() ; ::uint32_t msfcollid() const; void set_msfcollid(::uint32_t value); private: ::uint32_t _internal_msfcollid() const; void _internal_set_msfcollid(::uint32_t value); public: // int32 location = 4 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.MergeSupportFunc) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::uint32_t msftype_; ::uint32_t msfcollid_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class MergeWhenClause final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.MergeWhenClause) */ { public: inline MergeWhenClause() : MergeWhenClause(nullptr) {} ~MergeWhenClause() override; template explicit PROTOBUF_CONSTEXPR MergeWhenClause(::google::protobuf::internal::ConstantInitialized); inline MergeWhenClause(const MergeWhenClause& from) : MergeWhenClause(nullptr, from) {} MergeWhenClause(MergeWhenClause&& from) noexcept : MergeWhenClause() { *this = ::std::move(from); } inline MergeWhenClause& operator=(const MergeWhenClause& from) { CopyFrom(from); return *this; } inline MergeWhenClause& operator=(MergeWhenClause&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const MergeWhenClause& default_instance() { return *internal_default_instance(); } static inline const MergeWhenClause* internal_default_instance() { return reinterpret_cast( &_MergeWhenClause_default_instance_); } static constexpr int kIndexInFileMessages = 124; friend void swap(MergeWhenClause& a, MergeWhenClause& b) { a.Swap(&b); } inline void Swap(MergeWhenClause* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(MergeWhenClause* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- MergeWhenClause* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const MergeWhenClause& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const MergeWhenClause& from) { MergeWhenClause::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(MergeWhenClause* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.MergeWhenClause"; } protected: explicit MergeWhenClause(::google::protobuf::Arena* arena); MergeWhenClause(::google::protobuf::Arena* arena, const MergeWhenClause& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTargetListFieldNumber = 5, kValuesFieldNumber = 6, kConditionFieldNumber = 4, kMatchKindFieldNumber = 1, kCommandTypeFieldNumber = 2, kOverrideFieldNumber = 3, }; // repeated .pg_query.Node target_list = 5 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_target_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& target_list() const; // repeated .pg_query.Node values = 6 [json_name = "values"]; int values_size() const; private: int _internal_values_size() const; public: void clear_values() ; ::pg_query::Node* mutable_values(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_values(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_values() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_values(); public: const ::pg_query::Node& values(int index) const; ::pg_query::Node* add_values(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& values() const; // .pg_query.Node condition = 4 [json_name = "condition"]; bool has_condition() const; void clear_condition() ; const ::pg_query::Node& condition() const; PROTOBUF_NODISCARD ::pg_query::Node* release_condition(); ::pg_query::Node* mutable_condition(); void set_allocated_condition(::pg_query::Node* value); void unsafe_arena_set_allocated_condition(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_condition(); private: const ::pg_query::Node& _internal_condition() const; ::pg_query::Node* _internal_mutable_condition(); public: // .pg_query.MergeMatchKind match_kind = 1 [json_name = "matchKind"]; void clear_match_kind() ; ::pg_query::MergeMatchKind match_kind() const; void set_match_kind(::pg_query::MergeMatchKind value); private: ::pg_query::MergeMatchKind _internal_match_kind() const; void _internal_set_match_kind(::pg_query::MergeMatchKind value); public: // .pg_query.CmdType command_type = 2 [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.OverridingKind override = 3 [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.MergeWhenClause) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > target_list_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > values_; ::pg_query::Node* condition_; int match_kind_; int command_type_; int override_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class MinMaxExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.MinMaxExpr) */ { public: inline MinMaxExpr() : MinMaxExpr(nullptr) {} ~MinMaxExpr() override; template explicit PROTOBUF_CONSTEXPR MinMaxExpr(::google::protobuf::internal::ConstantInitialized); inline MinMaxExpr(const MinMaxExpr& from) : MinMaxExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const MinMaxExpr& default_instance() { return *internal_default_instance(); } static inline const MinMaxExpr* internal_default_instance() { return reinterpret_cast( &_MinMaxExpr_default_instance_); } static constexpr int kIndexInFileMessages = 48; friend void swap(MinMaxExpr& a, MinMaxExpr& b) { a.Swap(&b); } inline void Swap(MinMaxExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(MinMaxExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- MinMaxExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const MinMaxExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const MinMaxExpr& from) { MinMaxExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(MinMaxExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.MinMaxExpr"; } protected: explicit MinMaxExpr(::google::protobuf::Arena* arena); MinMaxExpr(::google::protobuf::Arena* arena, const MinMaxExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 minmaxtype = 2 [json_name = "minmaxtype"]; void clear_minmaxtype() ; ::uint32_t minmaxtype() const; void set_minmaxtype(::uint32_t value); private: ::uint32_t _internal_minmaxtype() const; void _internal_set_minmaxtype(::uint32_t value); public: // uint32 minmaxcollid = 3 [json_name = "minmaxcollid"]; void clear_minmaxcollid() ; ::uint32_t minmaxcollid() const; void set_minmaxcollid(::uint32_t value); private: ::uint32_t _internal_minmaxcollid() const; void _internal_set_minmaxcollid(::uint32_t value); public: // uint32 inputcollid = 4 [json_name = "inputcollid"]; void clear_inputcollid() ; ::uint32_t inputcollid() const; void set_inputcollid(::uint32_t value); private: ::uint32_t _internal_inputcollid() const; void _internal_set_inputcollid(::uint32_t 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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.MinMaxExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::uint32_t minmaxtype_; ::uint32_t minmaxcollid_; ::uint32_t inputcollid_; int op_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class MultiAssignRef final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.MultiAssignRef) */ { public: inline MultiAssignRef() : MultiAssignRef(nullptr) {} ~MultiAssignRef() override; template explicit PROTOBUF_CONSTEXPR MultiAssignRef(::google::protobuf::internal::ConstantInitialized); inline MultiAssignRef(const MultiAssignRef& from) : MultiAssignRef(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const MultiAssignRef& default_instance() { return *internal_default_instance(); } static inline const MultiAssignRef* internal_default_instance() { return reinterpret_cast( &_MultiAssignRef_default_instance_); } static constexpr int kIndexInFileMessages = 89; friend void swap(MultiAssignRef& a, MultiAssignRef& b) { a.Swap(&b); } inline void Swap(MultiAssignRef* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(MultiAssignRef* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- MultiAssignRef* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const MultiAssignRef& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const MultiAssignRef& from) { MultiAssignRef::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(MultiAssignRef* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.MultiAssignRef"; } protected: explicit MultiAssignRef(::google::protobuf::Arena* arena); MultiAssignRef(::google::protobuf::Arena* arena, const MultiAssignRef& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSourceFieldNumber = 1, kColnoFieldNumber = 2, kNcolumnsFieldNumber = 3, }; // .pg_query.Node source = 1 [json_name = "source"]; bool has_source() const; void clear_source() ; const ::pg_query::Node& source() const; PROTOBUF_NODISCARD ::pg_query::Node* release_source(); ::pg_query::Node* mutable_source(); void set_allocated_source(::pg_query::Node* value); void unsafe_arena_set_allocated_source(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_source(); private: const ::pg_query::Node& _internal_source() const; ::pg_query::Node* _internal_mutable_source(); public: // int32 colno = 2 [json_name = "colno"]; void clear_colno() ; ::int32_t colno() const; void set_colno(::int32_t value); private: ::int32_t _internal_colno() const; void _internal_set_colno(::int32_t value); public: // int32 ncolumns = 3 [json_name = "ncolumns"]; void clear_ncolumns() ; ::int32_t ncolumns() const; void set_ncolumns(::int32_t value); private: ::int32_t _internal_ncolumns() const; void _internal_set_ncolumns(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.MultiAssignRef) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* source_; ::int32_t colno_; ::int32_t ncolumns_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class NamedArgExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.NamedArgExpr) */ { public: inline NamedArgExpr() : NamedArgExpr(nullptr) {} ~NamedArgExpr() override; template explicit PROTOBUF_CONSTEXPR NamedArgExpr(::google::protobuf::internal::ConstantInitialized); inline NamedArgExpr(const NamedArgExpr& from) : NamedArgExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const NamedArgExpr& default_instance() { return *internal_default_instance(); } static inline const NamedArgExpr* internal_default_instance() { return reinterpret_cast( &_NamedArgExpr_default_instance_); } static constexpr int kIndexInFileMessages = 25; friend void swap(NamedArgExpr& a, NamedArgExpr& b) { a.Swap(&b); } inline void Swap(NamedArgExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NamedArgExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- NamedArgExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const NamedArgExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const NamedArgExpr& from) { NamedArgExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(NamedArgExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.NamedArgExpr"; } protected: explicit NamedArgExpr(::google::protobuf::Arena* arena); NamedArgExpr(::google::protobuf::Arena* arena, const NamedArgExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // int32 argnumber = 4 [json_name = "argnumber"]; void clear_argnumber() ; ::int32_t argnumber() const; void set_argnumber(::int32_t value); private: ::int32_t _internal_argnumber() const; void _internal_set_argnumber(::int32_t value); public: // int32 location = 5 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.NamedArgExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 34, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::int32_t argnumber_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class NextValueExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.NextValueExpr) */ { public: inline NextValueExpr() : NextValueExpr(nullptr) {} ~NextValueExpr() override; template explicit PROTOBUF_CONSTEXPR NextValueExpr(::google::protobuf::internal::ConstantInitialized); inline NextValueExpr(const NextValueExpr& from) : NextValueExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const NextValueExpr& default_instance() { return *internal_default_instance(); } static inline const NextValueExpr* internal_default_instance() { return reinterpret_cast( &_NextValueExpr_default_instance_); } static constexpr int kIndexInFileMessages = 68; friend void swap(NextValueExpr& a, NextValueExpr& b) { a.Swap(&b); } inline void Swap(NextValueExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NextValueExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- NextValueExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const NextValueExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const NextValueExpr& from) { NextValueExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(NextValueExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.NextValueExpr"; } protected: explicit NextValueExpr(::google::protobuf::Arena* arena); NextValueExpr(::google::protobuf::Arena* arena, const NextValueExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kSeqidFieldNumber = 2, kTypeIdFieldNumber = 3, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 seqid = 2 [json_name = "seqid"]; void clear_seqid() ; ::uint32_t seqid() const; void set_seqid(::uint32_t value); private: ::uint32_t _internal_seqid() const; void _internal_set_seqid(::uint32_t value); public: // uint32 type_id = 3 [json_name = "typeId"]; void clear_type_id() ; ::uint32_t type_id() const; void set_type_id(::uint32_t value); private: ::uint32_t _internal_type_id() const; void _internal_set_type_id(::uint32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.NextValueExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::uint32_t seqid_; ::uint32_t type_id_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class Node final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.Node) */ { public: inline Node() : Node(nullptr) {} ~Node() override; template explicit PROTOBUF_CONSTEXPR Node(::google::protobuf::internal::ConstantInitialized); inline Node(const Node& from) : Node(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const Node& default_instance() { return *internal_default_instance(); } enum NodeCase { kAlias = 1, kRangeVar = 2, kTableFunc = 3, kIntoClause = 4, kVar = 5, kParam = 6, kAggref = 7, kGroupingFunc = 8, kWindowFunc = 9, kWindowFuncRunCondition = 10, kMergeSupportFunc = 11, kSubscriptingRef = 12, kFuncExpr = 13, kNamedArgExpr = 14, kOpExpr = 15, kDistinctExpr = 16, kNullIfExpr = 17, kScalarArrayOpExpr = 18, kBoolExpr = 19, kSubLink = 20, kSubPlan = 21, kAlternativeSubPlan = 22, kFieldSelect = 23, kFieldStore = 24, kRelabelType = 25, kCoerceViaIo = 26, kArrayCoerceExpr = 27, kConvertRowtypeExpr = 28, kCollateExpr = 29, kCaseExpr = 30, kCaseWhen = 31, kCaseTestExpr = 32, kArrayExpr = 33, kRowExpr = 34, kRowCompareExpr = 35, kCoalesceExpr = 36, kMinMaxExpr = 37, kSqlvalueFunction = 38, kXmlExpr = 39, kJsonFormat = 40, kJsonReturning = 41, kJsonValueExpr = 42, kJsonConstructorExpr = 43, kJsonIsPredicate = 44, kJsonBehavior = 45, kJsonExpr = 46, kJsonTablePath = 47, kJsonTablePathScan = 48, kJsonTableSiblingJoin = 49, kNullTest = 50, kBooleanTest = 51, kMergeAction = 52, kCoerceToDomain = 53, kCoerceToDomainValue = 54, kSetToDefault = 55, kCurrentOfExpr = 56, kNextValueExpr = 57, kInferenceElem = 58, kTargetEntry = 59, kRangeTblRef = 60, kJoinExpr = 61, kFromExpr = 62, kOnConflictExpr = 63, kQuery = 64, kTypeName = 65, kColumnRef = 66, kParamRef = 67, kAExpr = 68, kTypeCast = 69, kCollateClause = 70, kRoleSpec = 71, kFuncCall = 72, kAStar = 73, kAIndices = 74, kAIndirection = 75, kAArrayExpr = 76, kResTarget = 77, kMultiAssignRef = 78, kSortBy = 79, kWindowDef = 80, kRangeSubselect = 81, kRangeFunction = 82, kRangeTableFunc = 83, kRangeTableFuncCol = 84, kRangeTableSample = 85, kColumnDef = 86, kTableLikeClause = 87, kIndexElem = 88, kDefElem = 89, kLockingClause = 90, kXmlSerialize = 91, kPartitionElem = 92, kPartitionSpec = 93, kPartitionBoundSpec = 94, kPartitionRangeDatum = 95, kSinglePartitionSpec = 96, kPartitionCmd = 97, kRangeTblEntry = 98, kRtepermissionInfo = 99, kRangeTblFunction = 100, kTableSampleClause = 101, kWithCheckOption = 102, kSortGroupClause = 103, kGroupingSet = 104, kWindowClause = 105, kRowMarkClause = 106, kWithClause = 107, kInferClause = 108, kOnConflictClause = 109, kCtesearchClause = 110, kCtecycleClause = 111, kCommonTableExpr = 112, kMergeWhenClause = 113, kTriggerTransition = 114, kJsonOutput = 115, kJsonArgument = 116, kJsonFuncExpr = 117, kJsonTablePathSpec = 118, kJsonTable = 119, kJsonTableColumn = 120, kJsonKeyValue = 121, kJsonParseExpr = 122, kJsonScalarExpr = 123, kJsonSerializeExpr = 124, kJsonObjectConstructor = 125, kJsonArrayConstructor = 126, kJsonArrayQueryConstructor = 127, kJsonAggConstructor = 128, kJsonObjectAgg = 129, kJsonArrayAgg = 130, kRawStmt = 131, kInsertStmt = 132, kDeleteStmt = 133, kUpdateStmt = 134, kMergeStmt = 135, kSelectStmt = 136, kSetOperationStmt = 137, kReturnStmt = 138, kPlassignStmt = 139, kCreateSchemaStmt = 140, kAlterTableStmt = 141, kReplicaIdentityStmt = 142, kAlterTableCmd = 143, kAlterCollationStmt = 144, kAlterDomainStmt = 145, kGrantStmt = 146, kObjectWithArgs = 147, kAccessPriv = 148, kGrantRoleStmt = 149, kAlterDefaultPrivilegesStmt = 150, kCopyStmt = 151, kVariableSetStmt = 152, kVariableShowStmt = 153, kCreateStmt = 154, kConstraint = 155, kCreateTableSpaceStmt = 156, kDropTableSpaceStmt = 157, kAlterTableSpaceOptionsStmt = 158, kAlterTableMoveAllStmt = 159, kCreateExtensionStmt = 160, kAlterExtensionStmt = 161, kAlterExtensionContentsStmt = 162, kCreateFdwStmt = 163, kAlterFdwStmt = 164, kCreateForeignServerStmt = 165, kAlterForeignServerStmt = 166, kCreateForeignTableStmt = 167, kCreateUserMappingStmt = 168, kAlterUserMappingStmt = 169, kDropUserMappingStmt = 170, kImportForeignSchemaStmt = 171, kCreatePolicyStmt = 172, kAlterPolicyStmt = 173, kCreateAmStmt = 174, kCreateTrigStmt = 175, kCreateEventTrigStmt = 176, kAlterEventTrigStmt = 177, kCreatePlangStmt = 178, kCreateRoleStmt = 179, kAlterRoleStmt = 180, kAlterRoleSetStmt = 181, kDropRoleStmt = 182, kCreateSeqStmt = 183, kAlterSeqStmt = 184, kDefineStmt = 185, kCreateDomainStmt = 186, kCreateOpClassStmt = 187, kCreateOpClassItem = 188, kCreateOpFamilyStmt = 189, kAlterOpFamilyStmt = 190, kDropStmt = 191, kTruncateStmt = 192, kCommentStmt = 193, kSecLabelStmt = 194, kDeclareCursorStmt = 195, kClosePortalStmt = 196, kFetchStmt = 197, kIndexStmt = 198, kCreateStatsStmt = 199, kStatsElem = 200, kAlterStatsStmt = 201, kCreateFunctionStmt = 202, kFunctionParameter = 203, kAlterFunctionStmt = 204, kDoStmt = 205, kInlineCodeBlock = 206, kCallStmt = 207, kCallContext = 208, kRenameStmt = 209, kAlterObjectDependsStmt = 210, kAlterObjectSchemaStmt = 211, kAlterOwnerStmt = 212, kAlterOperatorStmt = 213, kAlterTypeStmt = 214, kRuleStmt = 215, kNotifyStmt = 216, kListenStmt = 217, kUnlistenStmt = 218, kTransactionStmt = 219, kCompositeTypeStmt = 220, kCreateEnumStmt = 221, kCreateRangeStmt = 222, kAlterEnumStmt = 223, kViewStmt = 224, kLoadStmt = 225, kCreatedbStmt = 226, kAlterDatabaseStmt = 227, kAlterDatabaseRefreshCollStmt = 228, kAlterDatabaseSetStmt = 229, kDropdbStmt = 230, kAlterSystemStmt = 231, kClusterStmt = 232, kVacuumStmt = 233, kVacuumRelation = 234, kExplainStmt = 235, kCreateTableAsStmt = 236, kRefreshMatViewStmt = 237, kCheckPointStmt = 238, kDiscardStmt = 239, kLockStmt = 240, kConstraintsSetStmt = 241, kReindexStmt = 242, kCreateConversionStmt = 243, kCreateCastStmt = 244, kCreateTransformStmt = 245, kPrepareStmt = 246, kExecuteStmt = 247, kDeallocateStmt = 248, kDropOwnedStmt = 249, kReassignOwnedStmt = 250, kAlterTsdictionaryStmt = 251, kAlterTsconfigurationStmt = 252, kPublicationTable = 253, kPublicationObjSpec = 254, kCreatePublicationStmt = 255, kAlterPublicationStmt = 256, kCreateSubscriptionStmt = 257, kAlterSubscriptionStmt = 258, kDropSubscriptionStmt = 259, kInteger = 260, kFloat = 261, kBoolean = 262, kString = 263, kBitString = 264, kList = 265, kIntList = 266, kOidList = 267, kAConst = 268, 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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Node* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Node* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const Node& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const Node& from) { Node::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(Node* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.Node"; } protected: explicit Node(::google::protobuf::Arena* arena); Node(::google::protobuf::Arena* arena, const Node& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kAliasFieldNumber = 1, kRangeVarFieldNumber = 2, kTableFuncFieldNumber = 3, kIntoClauseFieldNumber = 4, kVarFieldNumber = 5, kParamFieldNumber = 6, kAggrefFieldNumber = 7, kGroupingFuncFieldNumber = 8, kWindowFuncFieldNumber = 9, kWindowFuncRunConditionFieldNumber = 10, kMergeSupportFuncFieldNumber = 11, kSubscriptingRefFieldNumber = 12, kFuncExprFieldNumber = 13, kNamedArgExprFieldNumber = 14, kOpExprFieldNumber = 15, kDistinctExprFieldNumber = 16, kNullIfExprFieldNumber = 17, kScalarArrayOpExprFieldNumber = 18, kBoolExprFieldNumber = 19, kSubLinkFieldNumber = 20, kSubPlanFieldNumber = 21, kAlternativeSubPlanFieldNumber = 22, kFieldSelectFieldNumber = 23, kFieldStoreFieldNumber = 24, kRelabelTypeFieldNumber = 25, kCoerceViaIoFieldNumber = 26, kArrayCoerceExprFieldNumber = 27, kConvertRowtypeExprFieldNumber = 28, kCollateExprFieldNumber = 29, kCaseExprFieldNumber = 30, kCaseWhenFieldNumber = 31, kCaseTestExprFieldNumber = 32, kArrayExprFieldNumber = 33, kRowExprFieldNumber = 34, kRowCompareExprFieldNumber = 35, kCoalesceExprFieldNumber = 36, kMinMaxExprFieldNumber = 37, kSqlvalueFunctionFieldNumber = 38, kXmlExprFieldNumber = 39, kJsonFormatFieldNumber = 40, kJsonReturningFieldNumber = 41, kJsonValueExprFieldNumber = 42, kJsonConstructorExprFieldNumber = 43, kJsonIsPredicateFieldNumber = 44, kJsonBehaviorFieldNumber = 45, kJsonExprFieldNumber = 46, kJsonTablePathFieldNumber = 47, kJsonTablePathScanFieldNumber = 48, kJsonTableSiblingJoinFieldNumber = 49, kNullTestFieldNumber = 50, kBooleanTestFieldNumber = 51, kMergeActionFieldNumber = 52, kCoerceToDomainFieldNumber = 53, kCoerceToDomainValueFieldNumber = 54, kSetToDefaultFieldNumber = 55, kCurrentOfExprFieldNumber = 56, kNextValueExprFieldNumber = 57, kInferenceElemFieldNumber = 58, kTargetEntryFieldNumber = 59, kRangeTblRefFieldNumber = 60, kJoinExprFieldNumber = 61, kFromExprFieldNumber = 62, kOnConflictExprFieldNumber = 63, kQueryFieldNumber = 64, kTypeNameFieldNumber = 65, kColumnRefFieldNumber = 66, kParamRefFieldNumber = 67, kAExprFieldNumber = 68, kTypeCastFieldNumber = 69, kCollateClauseFieldNumber = 70, kRoleSpecFieldNumber = 71, kFuncCallFieldNumber = 72, kAStarFieldNumber = 73, kAIndicesFieldNumber = 74, kAIndirectionFieldNumber = 75, kAArrayExprFieldNumber = 76, kResTargetFieldNumber = 77, kMultiAssignRefFieldNumber = 78, kSortByFieldNumber = 79, kWindowDefFieldNumber = 80, kRangeSubselectFieldNumber = 81, kRangeFunctionFieldNumber = 82, kRangeTableFuncFieldNumber = 83, kRangeTableFuncColFieldNumber = 84, kRangeTableSampleFieldNumber = 85, kColumnDefFieldNumber = 86, kTableLikeClauseFieldNumber = 87, kIndexElemFieldNumber = 88, kDefElemFieldNumber = 89, kLockingClauseFieldNumber = 90, kXmlSerializeFieldNumber = 91, kPartitionElemFieldNumber = 92, kPartitionSpecFieldNumber = 93, kPartitionBoundSpecFieldNumber = 94, kPartitionRangeDatumFieldNumber = 95, kSinglePartitionSpecFieldNumber = 96, kPartitionCmdFieldNumber = 97, kRangeTblEntryFieldNumber = 98, kRtepermissionInfoFieldNumber = 99, kRangeTblFunctionFieldNumber = 100, kTableSampleClauseFieldNumber = 101, kWithCheckOptionFieldNumber = 102, kSortGroupClauseFieldNumber = 103, kGroupingSetFieldNumber = 104, kWindowClauseFieldNumber = 105, kRowMarkClauseFieldNumber = 106, kWithClauseFieldNumber = 107, kInferClauseFieldNumber = 108, kOnConflictClauseFieldNumber = 109, kCtesearchClauseFieldNumber = 110, kCtecycleClauseFieldNumber = 111, kCommonTableExprFieldNumber = 112, kMergeWhenClauseFieldNumber = 113, kTriggerTransitionFieldNumber = 114, kJsonOutputFieldNumber = 115, kJsonArgumentFieldNumber = 116, kJsonFuncExprFieldNumber = 117, kJsonTablePathSpecFieldNumber = 118, kJsonTableFieldNumber = 119, kJsonTableColumnFieldNumber = 120, kJsonKeyValueFieldNumber = 121, kJsonParseExprFieldNumber = 122, kJsonScalarExprFieldNumber = 123, kJsonSerializeExprFieldNumber = 124, kJsonObjectConstructorFieldNumber = 125, kJsonArrayConstructorFieldNumber = 126, kJsonArrayQueryConstructorFieldNumber = 127, kJsonAggConstructorFieldNumber = 128, kJsonObjectAggFieldNumber = 129, kJsonArrayAggFieldNumber = 130, kRawStmtFieldNumber = 131, kInsertStmtFieldNumber = 132, kDeleteStmtFieldNumber = 133, kUpdateStmtFieldNumber = 134, kMergeStmtFieldNumber = 135, kSelectStmtFieldNumber = 136, kSetOperationStmtFieldNumber = 137, kReturnStmtFieldNumber = 138, kPlassignStmtFieldNumber = 139, kCreateSchemaStmtFieldNumber = 140, kAlterTableStmtFieldNumber = 141, kReplicaIdentityStmtFieldNumber = 142, kAlterTableCmdFieldNumber = 143, kAlterCollationStmtFieldNumber = 144, kAlterDomainStmtFieldNumber = 145, kGrantStmtFieldNumber = 146, kObjectWithArgsFieldNumber = 147, kAccessPrivFieldNumber = 148, kGrantRoleStmtFieldNumber = 149, kAlterDefaultPrivilegesStmtFieldNumber = 150, kCopyStmtFieldNumber = 151, kVariableSetStmtFieldNumber = 152, kVariableShowStmtFieldNumber = 153, kCreateStmtFieldNumber = 154, kConstraintFieldNumber = 155, kCreateTableSpaceStmtFieldNumber = 156, kDropTableSpaceStmtFieldNumber = 157, kAlterTableSpaceOptionsStmtFieldNumber = 158, kAlterTableMoveAllStmtFieldNumber = 159, kCreateExtensionStmtFieldNumber = 160, kAlterExtensionStmtFieldNumber = 161, kAlterExtensionContentsStmtFieldNumber = 162, kCreateFdwStmtFieldNumber = 163, kAlterFdwStmtFieldNumber = 164, kCreateForeignServerStmtFieldNumber = 165, kAlterForeignServerStmtFieldNumber = 166, kCreateForeignTableStmtFieldNumber = 167, kCreateUserMappingStmtFieldNumber = 168, kAlterUserMappingStmtFieldNumber = 169, kDropUserMappingStmtFieldNumber = 170, kImportForeignSchemaStmtFieldNumber = 171, kCreatePolicyStmtFieldNumber = 172, kAlterPolicyStmtFieldNumber = 173, kCreateAmStmtFieldNumber = 174, kCreateTrigStmtFieldNumber = 175, kCreateEventTrigStmtFieldNumber = 176, kAlterEventTrigStmtFieldNumber = 177, kCreatePlangStmtFieldNumber = 178, kCreateRoleStmtFieldNumber = 179, kAlterRoleStmtFieldNumber = 180, kAlterRoleSetStmtFieldNumber = 181, kDropRoleStmtFieldNumber = 182, kCreateSeqStmtFieldNumber = 183, kAlterSeqStmtFieldNumber = 184, kDefineStmtFieldNumber = 185, kCreateDomainStmtFieldNumber = 186, kCreateOpClassStmtFieldNumber = 187, kCreateOpClassItemFieldNumber = 188, kCreateOpFamilyStmtFieldNumber = 189, kAlterOpFamilyStmtFieldNumber = 190, kDropStmtFieldNumber = 191, kTruncateStmtFieldNumber = 192, kCommentStmtFieldNumber = 193, kSecLabelStmtFieldNumber = 194, kDeclareCursorStmtFieldNumber = 195, kClosePortalStmtFieldNumber = 196, kFetchStmtFieldNumber = 197, kIndexStmtFieldNumber = 198, kCreateStatsStmtFieldNumber = 199, kStatsElemFieldNumber = 200, kAlterStatsStmtFieldNumber = 201, kCreateFunctionStmtFieldNumber = 202, kFunctionParameterFieldNumber = 203, kAlterFunctionStmtFieldNumber = 204, kDoStmtFieldNumber = 205, kInlineCodeBlockFieldNumber = 206, kCallStmtFieldNumber = 207, kCallContextFieldNumber = 208, kRenameStmtFieldNumber = 209, kAlterObjectDependsStmtFieldNumber = 210, kAlterObjectSchemaStmtFieldNumber = 211, kAlterOwnerStmtFieldNumber = 212, kAlterOperatorStmtFieldNumber = 213, kAlterTypeStmtFieldNumber = 214, kRuleStmtFieldNumber = 215, kNotifyStmtFieldNumber = 216, kListenStmtFieldNumber = 217, kUnlistenStmtFieldNumber = 218, kTransactionStmtFieldNumber = 219, kCompositeTypeStmtFieldNumber = 220, kCreateEnumStmtFieldNumber = 221, kCreateRangeStmtFieldNumber = 222, kAlterEnumStmtFieldNumber = 223, kViewStmtFieldNumber = 224, kLoadStmtFieldNumber = 225, kCreatedbStmtFieldNumber = 226, kAlterDatabaseStmtFieldNumber = 227, kAlterDatabaseRefreshCollStmtFieldNumber = 228, kAlterDatabaseSetStmtFieldNumber = 229, kDropdbStmtFieldNumber = 230, kAlterSystemStmtFieldNumber = 231, kClusterStmtFieldNumber = 232, kVacuumStmtFieldNumber = 233, kVacuumRelationFieldNumber = 234, kExplainStmtFieldNumber = 235, kCreateTableAsStmtFieldNumber = 236, kRefreshMatViewStmtFieldNumber = 237, kCheckPointStmtFieldNumber = 238, kDiscardStmtFieldNumber = 239, kLockStmtFieldNumber = 240, kConstraintsSetStmtFieldNumber = 241, kReindexStmtFieldNumber = 242, kCreateConversionStmtFieldNumber = 243, kCreateCastStmtFieldNumber = 244, kCreateTransformStmtFieldNumber = 245, kPrepareStmtFieldNumber = 246, kExecuteStmtFieldNumber = 247, kDeallocateStmtFieldNumber = 248, kDropOwnedStmtFieldNumber = 249, kReassignOwnedStmtFieldNumber = 250, kAlterTsdictionaryStmtFieldNumber = 251, kAlterTsconfigurationStmtFieldNumber = 252, kPublicationTableFieldNumber = 253, kPublicationObjSpecFieldNumber = 254, kCreatePublicationStmtFieldNumber = 255, kAlterPublicationStmtFieldNumber = 256, kCreateSubscriptionStmtFieldNumber = 257, kAlterSubscriptionStmtFieldNumber = 258, kDropSubscriptionStmtFieldNumber = 259, kIntegerFieldNumber = 260, kFloatFieldNumber = 261, kBooleanFieldNumber = 262, kStringFieldNumber = 263, kBitStringFieldNumber = 264, kListFieldNumber = 265, kIntListFieldNumber = 266, kOidListFieldNumber = 267, kAConstFieldNumber = 268, }; // .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; PROTOBUF_NODISCARD ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* value); void unsafe_arena_set_allocated_alias(::pg_query::Alias* value); ::pg_query::Alias* unsafe_arena_release_alias(); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: // .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; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_range_var(); ::pg_query::RangeVar* mutable_range_var(); void set_allocated_range_var(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_range_var(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_range_var(); private: const ::pg_query::RangeVar& _internal_range_var() const; ::pg_query::RangeVar* _internal_mutable_range_var(); public: // .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; PROTOBUF_NODISCARD ::pg_query::TableFunc* release_table_func(); ::pg_query::TableFunc* mutable_table_func(); void set_allocated_table_func(::pg_query::TableFunc* value); void unsafe_arena_set_allocated_table_func(::pg_query::TableFunc* value); ::pg_query::TableFunc* unsafe_arena_release_table_func(); private: const ::pg_query::TableFunc& _internal_table_func() const; ::pg_query::TableFunc* _internal_mutable_table_func(); public: // .pg_query.IntoClause into_clause = 4 [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; PROTOBUF_NODISCARD ::pg_query::IntoClause* release_into_clause(); ::pg_query::IntoClause* mutable_into_clause(); void set_allocated_into_clause(::pg_query::IntoClause* value); void unsafe_arena_set_allocated_into_clause(::pg_query::IntoClause* value); ::pg_query::IntoClause* unsafe_arena_release_into_clause(); private: const ::pg_query::IntoClause& _internal_into_clause() const; ::pg_query::IntoClause* _internal_mutable_into_clause(); public: // .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; PROTOBUF_NODISCARD ::pg_query::Var* release_var(); ::pg_query::Var* mutable_var(); void set_allocated_var(::pg_query::Var* value); void unsafe_arena_set_allocated_var(::pg_query::Var* value); ::pg_query::Var* unsafe_arena_release_var(); private: const ::pg_query::Var& _internal_var() const; ::pg_query::Var* _internal_mutable_var(); public: // .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; PROTOBUF_NODISCARD ::pg_query::Param* release_param(); ::pg_query::Param* mutable_param(); void set_allocated_param(::pg_query::Param* value); void unsafe_arena_set_allocated_param(::pg_query::Param* value); ::pg_query::Param* unsafe_arena_release_param(); private: const ::pg_query::Param& _internal_param() const; ::pg_query::Param* _internal_mutable_param(); public: // .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; PROTOBUF_NODISCARD ::pg_query::Aggref* release_aggref(); ::pg_query::Aggref* mutable_aggref(); void set_allocated_aggref(::pg_query::Aggref* value); void unsafe_arena_set_allocated_aggref(::pg_query::Aggref* value); ::pg_query::Aggref* unsafe_arena_release_aggref(); private: const ::pg_query::Aggref& _internal_aggref() const; ::pg_query::Aggref* _internal_mutable_aggref(); public: // .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; PROTOBUF_NODISCARD ::pg_query::GroupingFunc* release_grouping_func(); ::pg_query::GroupingFunc* mutable_grouping_func(); void set_allocated_grouping_func(::pg_query::GroupingFunc* value); void unsafe_arena_set_allocated_grouping_func(::pg_query::GroupingFunc* value); ::pg_query::GroupingFunc* unsafe_arena_release_grouping_func(); private: const ::pg_query::GroupingFunc& _internal_grouping_func() const; ::pg_query::GroupingFunc* _internal_mutable_grouping_func(); public: // .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; PROTOBUF_NODISCARD ::pg_query::WindowFunc* release_window_func(); ::pg_query::WindowFunc* mutable_window_func(); void set_allocated_window_func(::pg_query::WindowFunc* value); void unsafe_arena_set_allocated_window_func(::pg_query::WindowFunc* value); ::pg_query::WindowFunc* unsafe_arena_release_window_func(); private: const ::pg_query::WindowFunc& _internal_window_func() const; ::pg_query::WindowFunc* _internal_mutable_window_func(); public: // .pg_query.WindowFuncRunCondition window_func_run_condition = 10 [json_name = "WindowFuncRunCondition"]; bool has_window_func_run_condition() const; private: bool _internal_has_window_func_run_condition() const; public: void clear_window_func_run_condition() ; const ::pg_query::WindowFuncRunCondition& window_func_run_condition() const; PROTOBUF_NODISCARD ::pg_query::WindowFuncRunCondition* release_window_func_run_condition(); ::pg_query::WindowFuncRunCondition* mutable_window_func_run_condition(); void set_allocated_window_func_run_condition(::pg_query::WindowFuncRunCondition* value); void unsafe_arena_set_allocated_window_func_run_condition(::pg_query::WindowFuncRunCondition* value); ::pg_query::WindowFuncRunCondition* unsafe_arena_release_window_func_run_condition(); private: const ::pg_query::WindowFuncRunCondition& _internal_window_func_run_condition() const; ::pg_query::WindowFuncRunCondition* _internal_mutable_window_func_run_condition(); public: // .pg_query.MergeSupportFunc merge_support_func = 11 [json_name = "MergeSupportFunc"]; bool has_merge_support_func() const; private: bool _internal_has_merge_support_func() const; public: void clear_merge_support_func() ; const ::pg_query::MergeSupportFunc& merge_support_func() const; PROTOBUF_NODISCARD ::pg_query::MergeSupportFunc* release_merge_support_func(); ::pg_query::MergeSupportFunc* mutable_merge_support_func(); void set_allocated_merge_support_func(::pg_query::MergeSupportFunc* value); void unsafe_arena_set_allocated_merge_support_func(::pg_query::MergeSupportFunc* value); ::pg_query::MergeSupportFunc* unsafe_arena_release_merge_support_func(); private: const ::pg_query::MergeSupportFunc& _internal_merge_support_func() const; ::pg_query::MergeSupportFunc* _internal_mutable_merge_support_func(); public: // .pg_query.SubscriptingRef subscripting_ref = 12 [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; PROTOBUF_NODISCARD ::pg_query::SubscriptingRef* release_subscripting_ref(); ::pg_query::SubscriptingRef* mutable_subscripting_ref(); void set_allocated_subscripting_ref(::pg_query::SubscriptingRef* value); void unsafe_arena_set_allocated_subscripting_ref(::pg_query::SubscriptingRef* value); ::pg_query::SubscriptingRef* unsafe_arena_release_subscripting_ref(); private: const ::pg_query::SubscriptingRef& _internal_subscripting_ref() const; ::pg_query::SubscriptingRef* _internal_mutable_subscripting_ref(); public: // .pg_query.FuncExpr func_expr = 13 [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; PROTOBUF_NODISCARD ::pg_query::FuncExpr* release_func_expr(); ::pg_query::FuncExpr* mutable_func_expr(); void set_allocated_func_expr(::pg_query::FuncExpr* value); void unsafe_arena_set_allocated_func_expr(::pg_query::FuncExpr* value); ::pg_query::FuncExpr* unsafe_arena_release_func_expr(); private: const ::pg_query::FuncExpr& _internal_func_expr() const; ::pg_query::FuncExpr* _internal_mutable_func_expr(); public: // .pg_query.NamedArgExpr named_arg_expr = 14 [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; PROTOBUF_NODISCARD ::pg_query::NamedArgExpr* release_named_arg_expr(); ::pg_query::NamedArgExpr* mutable_named_arg_expr(); void set_allocated_named_arg_expr(::pg_query::NamedArgExpr* value); void unsafe_arena_set_allocated_named_arg_expr(::pg_query::NamedArgExpr* value); ::pg_query::NamedArgExpr* unsafe_arena_release_named_arg_expr(); private: const ::pg_query::NamedArgExpr& _internal_named_arg_expr() const; ::pg_query::NamedArgExpr* _internal_mutable_named_arg_expr(); public: // .pg_query.OpExpr op_expr = 15 [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; PROTOBUF_NODISCARD ::pg_query::OpExpr* release_op_expr(); ::pg_query::OpExpr* mutable_op_expr(); void set_allocated_op_expr(::pg_query::OpExpr* value); void unsafe_arena_set_allocated_op_expr(::pg_query::OpExpr* value); ::pg_query::OpExpr* unsafe_arena_release_op_expr(); private: const ::pg_query::OpExpr& _internal_op_expr() const; ::pg_query::OpExpr* _internal_mutable_op_expr(); public: // .pg_query.DistinctExpr distinct_expr = 16 [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; PROTOBUF_NODISCARD ::pg_query::DistinctExpr* release_distinct_expr(); ::pg_query::DistinctExpr* mutable_distinct_expr(); void set_allocated_distinct_expr(::pg_query::DistinctExpr* value); void unsafe_arena_set_allocated_distinct_expr(::pg_query::DistinctExpr* value); ::pg_query::DistinctExpr* unsafe_arena_release_distinct_expr(); private: const ::pg_query::DistinctExpr& _internal_distinct_expr() const; ::pg_query::DistinctExpr* _internal_mutable_distinct_expr(); public: // .pg_query.NullIfExpr null_if_expr = 17 [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; PROTOBUF_NODISCARD ::pg_query::NullIfExpr* release_null_if_expr(); ::pg_query::NullIfExpr* mutable_null_if_expr(); void set_allocated_null_if_expr(::pg_query::NullIfExpr* value); void unsafe_arena_set_allocated_null_if_expr(::pg_query::NullIfExpr* value); ::pg_query::NullIfExpr* unsafe_arena_release_null_if_expr(); private: const ::pg_query::NullIfExpr& _internal_null_if_expr() const; ::pg_query::NullIfExpr* _internal_mutable_null_if_expr(); public: // .pg_query.ScalarArrayOpExpr scalar_array_op_expr = 18 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_scalar_array_op_expr(::pg_query::ScalarArrayOpExpr* value); ::pg_query::ScalarArrayOpExpr* unsafe_arena_release_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: // .pg_query.BoolExpr bool_expr = 19 [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; PROTOBUF_NODISCARD ::pg_query::BoolExpr* release_bool_expr(); ::pg_query::BoolExpr* mutable_bool_expr(); void set_allocated_bool_expr(::pg_query::BoolExpr* value); void unsafe_arena_set_allocated_bool_expr(::pg_query::BoolExpr* value); ::pg_query::BoolExpr* unsafe_arena_release_bool_expr(); private: const ::pg_query::BoolExpr& _internal_bool_expr() const; ::pg_query::BoolExpr* _internal_mutable_bool_expr(); public: // .pg_query.SubLink sub_link = 20 [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; PROTOBUF_NODISCARD ::pg_query::SubLink* release_sub_link(); ::pg_query::SubLink* mutable_sub_link(); void set_allocated_sub_link(::pg_query::SubLink* value); void unsafe_arena_set_allocated_sub_link(::pg_query::SubLink* value); ::pg_query::SubLink* unsafe_arena_release_sub_link(); private: const ::pg_query::SubLink& _internal_sub_link() const; ::pg_query::SubLink* _internal_mutable_sub_link(); public: // .pg_query.SubPlan sub_plan = 21 [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; PROTOBUF_NODISCARD ::pg_query::SubPlan* release_sub_plan(); ::pg_query::SubPlan* mutable_sub_plan(); void set_allocated_sub_plan(::pg_query::SubPlan* value); void unsafe_arena_set_allocated_sub_plan(::pg_query::SubPlan* value); ::pg_query::SubPlan* unsafe_arena_release_sub_plan(); private: const ::pg_query::SubPlan& _internal_sub_plan() const; ::pg_query::SubPlan* _internal_mutable_sub_plan(); public: // .pg_query.AlternativeSubPlan alternative_sub_plan = 22 [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; PROTOBUF_NODISCARD ::pg_query::AlternativeSubPlan* release_alternative_sub_plan(); ::pg_query::AlternativeSubPlan* mutable_alternative_sub_plan(); void set_allocated_alternative_sub_plan(::pg_query::AlternativeSubPlan* value); void unsafe_arena_set_allocated_alternative_sub_plan(::pg_query::AlternativeSubPlan* value); ::pg_query::AlternativeSubPlan* unsafe_arena_release_alternative_sub_plan(); private: const ::pg_query::AlternativeSubPlan& _internal_alternative_sub_plan() const; ::pg_query::AlternativeSubPlan* _internal_mutable_alternative_sub_plan(); public: // .pg_query.FieldSelect field_select = 23 [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; PROTOBUF_NODISCARD ::pg_query::FieldSelect* release_field_select(); ::pg_query::FieldSelect* mutable_field_select(); void set_allocated_field_select(::pg_query::FieldSelect* value); void unsafe_arena_set_allocated_field_select(::pg_query::FieldSelect* value); ::pg_query::FieldSelect* unsafe_arena_release_field_select(); private: const ::pg_query::FieldSelect& _internal_field_select() const; ::pg_query::FieldSelect* _internal_mutable_field_select(); public: // .pg_query.FieldStore field_store = 24 [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; PROTOBUF_NODISCARD ::pg_query::FieldStore* release_field_store(); ::pg_query::FieldStore* mutable_field_store(); void set_allocated_field_store(::pg_query::FieldStore* value); void unsafe_arena_set_allocated_field_store(::pg_query::FieldStore* value); ::pg_query::FieldStore* unsafe_arena_release_field_store(); private: const ::pg_query::FieldStore& _internal_field_store() const; ::pg_query::FieldStore* _internal_mutable_field_store(); public: // .pg_query.RelabelType relabel_type = 25 [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; PROTOBUF_NODISCARD ::pg_query::RelabelType* release_relabel_type(); ::pg_query::RelabelType* mutable_relabel_type(); void set_allocated_relabel_type(::pg_query::RelabelType* value); void unsafe_arena_set_allocated_relabel_type(::pg_query::RelabelType* value); ::pg_query::RelabelType* unsafe_arena_release_relabel_type(); private: const ::pg_query::RelabelType& _internal_relabel_type() const; ::pg_query::RelabelType* _internal_mutable_relabel_type(); public: // .pg_query.CoerceViaIO coerce_via_io = 26 [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; PROTOBUF_NODISCARD ::pg_query::CoerceViaIO* release_coerce_via_io(); ::pg_query::CoerceViaIO* mutable_coerce_via_io(); void set_allocated_coerce_via_io(::pg_query::CoerceViaIO* value); void unsafe_arena_set_allocated_coerce_via_io(::pg_query::CoerceViaIO* value); ::pg_query::CoerceViaIO* unsafe_arena_release_coerce_via_io(); private: const ::pg_query::CoerceViaIO& _internal_coerce_via_io() const; ::pg_query::CoerceViaIO* _internal_mutable_coerce_via_io(); public: // .pg_query.ArrayCoerceExpr array_coerce_expr = 27 [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; PROTOBUF_NODISCARD ::pg_query::ArrayCoerceExpr* release_array_coerce_expr(); ::pg_query::ArrayCoerceExpr* mutable_array_coerce_expr(); void set_allocated_array_coerce_expr(::pg_query::ArrayCoerceExpr* value); void unsafe_arena_set_allocated_array_coerce_expr(::pg_query::ArrayCoerceExpr* value); ::pg_query::ArrayCoerceExpr* unsafe_arena_release_array_coerce_expr(); private: const ::pg_query::ArrayCoerceExpr& _internal_array_coerce_expr() const; ::pg_query::ArrayCoerceExpr* _internal_mutable_array_coerce_expr(); public: // .pg_query.ConvertRowtypeExpr convert_rowtype_expr = 28 [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; PROTOBUF_NODISCARD ::pg_query::ConvertRowtypeExpr* release_convert_rowtype_expr(); ::pg_query::ConvertRowtypeExpr* mutable_convert_rowtype_expr(); void set_allocated_convert_rowtype_expr(::pg_query::ConvertRowtypeExpr* value); void unsafe_arena_set_allocated_convert_rowtype_expr(::pg_query::ConvertRowtypeExpr* value); ::pg_query::ConvertRowtypeExpr* unsafe_arena_release_convert_rowtype_expr(); private: const ::pg_query::ConvertRowtypeExpr& _internal_convert_rowtype_expr() const; ::pg_query::ConvertRowtypeExpr* _internal_mutable_convert_rowtype_expr(); public: // .pg_query.CollateExpr collate_expr = 29 [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; PROTOBUF_NODISCARD ::pg_query::CollateExpr* release_collate_expr(); ::pg_query::CollateExpr* mutable_collate_expr(); void set_allocated_collate_expr(::pg_query::CollateExpr* value); void unsafe_arena_set_allocated_collate_expr(::pg_query::CollateExpr* value); ::pg_query::CollateExpr* unsafe_arena_release_collate_expr(); private: const ::pg_query::CollateExpr& _internal_collate_expr() const; ::pg_query::CollateExpr* _internal_mutable_collate_expr(); public: // .pg_query.CaseExpr case_expr = 30 [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; PROTOBUF_NODISCARD ::pg_query::CaseExpr* release_case_expr(); ::pg_query::CaseExpr* mutable_case_expr(); void set_allocated_case_expr(::pg_query::CaseExpr* value); void unsafe_arena_set_allocated_case_expr(::pg_query::CaseExpr* value); ::pg_query::CaseExpr* unsafe_arena_release_case_expr(); private: const ::pg_query::CaseExpr& _internal_case_expr() const; ::pg_query::CaseExpr* _internal_mutable_case_expr(); public: // .pg_query.CaseWhen case_when = 31 [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; PROTOBUF_NODISCARD ::pg_query::CaseWhen* release_case_when(); ::pg_query::CaseWhen* mutable_case_when(); void set_allocated_case_when(::pg_query::CaseWhen* value); void unsafe_arena_set_allocated_case_when(::pg_query::CaseWhen* value); ::pg_query::CaseWhen* unsafe_arena_release_case_when(); private: const ::pg_query::CaseWhen& _internal_case_when() const; ::pg_query::CaseWhen* _internal_mutable_case_when(); public: // .pg_query.CaseTestExpr case_test_expr = 32 [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; PROTOBUF_NODISCARD ::pg_query::CaseTestExpr* release_case_test_expr(); ::pg_query::CaseTestExpr* mutable_case_test_expr(); void set_allocated_case_test_expr(::pg_query::CaseTestExpr* value); void unsafe_arena_set_allocated_case_test_expr(::pg_query::CaseTestExpr* value); ::pg_query::CaseTestExpr* unsafe_arena_release_case_test_expr(); private: const ::pg_query::CaseTestExpr& _internal_case_test_expr() const; ::pg_query::CaseTestExpr* _internal_mutable_case_test_expr(); public: // .pg_query.ArrayExpr array_expr = 33 [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; PROTOBUF_NODISCARD ::pg_query::ArrayExpr* release_array_expr(); ::pg_query::ArrayExpr* mutable_array_expr(); void set_allocated_array_expr(::pg_query::ArrayExpr* value); void unsafe_arena_set_allocated_array_expr(::pg_query::ArrayExpr* value); ::pg_query::ArrayExpr* unsafe_arena_release_array_expr(); private: const ::pg_query::ArrayExpr& _internal_array_expr() const; ::pg_query::ArrayExpr* _internal_mutable_array_expr(); public: // .pg_query.RowExpr row_expr = 34 [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; PROTOBUF_NODISCARD ::pg_query::RowExpr* release_row_expr(); ::pg_query::RowExpr* mutable_row_expr(); void set_allocated_row_expr(::pg_query::RowExpr* value); void unsafe_arena_set_allocated_row_expr(::pg_query::RowExpr* value); ::pg_query::RowExpr* unsafe_arena_release_row_expr(); private: const ::pg_query::RowExpr& _internal_row_expr() const; ::pg_query::RowExpr* _internal_mutable_row_expr(); public: // .pg_query.RowCompareExpr row_compare_expr = 35 [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; PROTOBUF_NODISCARD ::pg_query::RowCompareExpr* release_row_compare_expr(); ::pg_query::RowCompareExpr* mutable_row_compare_expr(); void set_allocated_row_compare_expr(::pg_query::RowCompareExpr* value); void unsafe_arena_set_allocated_row_compare_expr(::pg_query::RowCompareExpr* value); ::pg_query::RowCompareExpr* unsafe_arena_release_row_compare_expr(); private: const ::pg_query::RowCompareExpr& _internal_row_compare_expr() const; ::pg_query::RowCompareExpr* _internal_mutable_row_compare_expr(); public: // .pg_query.CoalesceExpr coalesce_expr = 36 [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; PROTOBUF_NODISCARD ::pg_query::CoalesceExpr* release_coalesce_expr(); ::pg_query::CoalesceExpr* mutable_coalesce_expr(); void set_allocated_coalesce_expr(::pg_query::CoalesceExpr* value); void unsafe_arena_set_allocated_coalesce_expr(::pg_query::CoalesceExpr* value); ::pg_query::CoalesceExpr* unsafe_arena_release_coalesce_expr(); private: const ::pg_query::CoalesceExpr& _internal_coalesce_expr() const; ::pg_query::CoalesceExpr* _internal_mutable_coalesce_expr(); public: // .pg_query.MinMaxExpr min_max_expr = 37 [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; PROTOBUF_NODISCARD ::pg_query::MinMaxExpr* release_min_max_expr(); ::pg_query::MinMaxExpr* mutable_min_max_expr(); void set_allocated_min_max_expr(::pg_query::MinMaxExpr* value); void unsafe_arena_set_allocated_min_max_expr(::pg_query::MinMaxExpr* value); ::pg_query::MinMaxExpr* unsafe_arena_release_min_max_expr(); private: const ::pg_query::MinMaxExpr& _internal_min_max_expr() const; ::pg_query::MinMaxExpr* _internal_mutable_min_max_expr(); public: // .pg_query.SQLValueFunction sqlvalue_function = 38 [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; PROTOBUF_NODISCARD ::pg_query::SQLValueFunction* release_sqlvalue_function(); ::pg_query::SQLValueFunction* mutable_sqlvalue_function(); void set_allocated_sqlvalue_function(::pg_query::SQLValueFunction* value); void unsafe_arena_set_allocated_sqlvalue_function(::pg_query::SQLValueFunction* value); ::pg_query::SQLValueFunction* unsafe_arena_release_sqlvalue_function(); private: const ::pg_query::SQLValueFunction& _internal_sqlvalue_function() const; ::pg_query::SQLValueFunction* _internal_mutable_sqlvalue_function(); public: // .pg_query.XmlExpr xml_expr = 39 [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; PROTOBUF_NODISCARD ::pg_query::XmlExpr* release_xml_expr(); ::pg_query::XmlExpr* mutable_xml_expr(); void set_allocated_xml_expr(::pg_query::XmlExpr* value); void unsafe_arena_set_allocated_xml_expr(::pg_query::XmlExpr* value); ::pg_query::XmlExpr* unsafe_arena_release_xml_expr(); private: const ::pg_query::XmlExpr& _internal_xml_expr() const; ::pg_query::XmlExpr* _internal_mutable_xml_expr(); public: // .pg_query.JsonFormat json_format = 40 [json_name = "JsonFormat"]; bool has_json_format() const; private: bool _internal_has_json_format() const; public: void clear_json_format() ; const ::pg_query::JsonFormat& json_format() const; PROTOBUF_NODISCARD ::pg_query::JsonFormat* release_json_format(); ::pg_query::JsonFormat* mutable_json_format(); void set_allocated_json_format(::pg_query::JsonFormat* value); void unsafe_arena_set_allocated_json_format(::pg_query::JsonFormat* value); ::pg_query::JsonFormat* unsafe_arena_release_json_format(); private: const ::pg_query::JsonFormat& _internal_json_format() const; ::pg_query::JsonFormat* _internal_mutable_json_format(); public: // .pg_query.JsonReturning json_returning = 41 [json_name = "JsonReturning"]; bool has_json_returning() const; private: bool _internal_has_json_returning() const; public: void clear_json_returning() ; const ::pg_query::JsonReturning& json_returning() const; PROTOBUF_NODISCARD ::pg_query::JsonReturning* release_json_returning(); ::pg_query::JsonReturning* mutable_json_returning(); void set_allocated_json_returning(::pg_query::JsonReturning* value); void unsafe_arena_set_allocated_json_returning(::pg_query::JsonReturning* value); ::pg_query::JsonReturning* unsafe_arena_release_json_returning(); private: const ::pg_query::JsonReturning& _internal_json_returning() const; ::pg_query::JsonReturning* _internal_mutable_json_returning(); public: // .pg_query.JsonValueExpr json_value_expr = 42 [json_name = "JsonValueExpr"]; bool has_json_value_expr() const; private: bool _internal_has_json_value_expr() const; public: void clear_json_value_expr() ; const ::pg_query::JsonValueExpr& json_value_expr() const; PROTOBUF_NODISCARD ::pg_query::JsonValueExpr* release_json_value_expr(); ::pg_query::JsonValueExpr* mutable_json_value_expr(); void set_allocated_json_value_expr(::pg_query::JsonValueExpr* value); void unsafe_arena_set_allocated_json_value_expr(::pg_query::JsonValueExpr* value); ::pg_query::JsonValueExpr* unsafe_arena_release_json_value_expr(); private: const ::pg_query::JsonValueExpr& _internal_json_value_expr() const; ::pg_query::JsonValueExpr* _internal_mutable_json_value_expr(); public: // .pg_query.JsonConstructorExpr json_constructor_expr = 43 [json_name = "JsonConstructorExpr"]; bool has_json_constructor_expr() const; private: bool _internal_has_json_constructor_expr() const; public: void clear_json_constructor_expr() ; const ::pg_query::JsonConstructorExpr& json_constructor_expr() const; PROTOBUF_NODISCARD ::pg_query::JsonConstructorExpr* release_json_constructor_expr(); ::pg_query::JsonConstructorExpr* mutable_json_constructor_expr(); void set_allocated_json_constructor_expr(::pg_query::JsonConstructorExpr* value); void unsafe_arena_set_allocated_json_constructor_expr(::pg_query::JsonConstructorExpr* value); ::pg_query::JsonConstructorExpr* unsafe_arena_release_json_constructor_expr(); private: const ::pg_query::JsonConstructorExpr& _internal_json_constructor_expr() const; ::pg_query::JsonConstructorExpr* _internal_mutable_json_constructor_expr(); public: // .pg_query.JsonIsPredicate json_is_predicate = 44 [json_name = "JsonIsPredicate"]; bool has_json_is_predicate() const; private: bool _internal_has_json_is_predicate() const; public: void clear_json_is_predicate() ; const ::pg_query::JsonIsPredicate& json_is_predicate() const; PROTOBUF_NODISCARD ::pg_query::JsonIsPredicate* release_json_is_predicate(); ::pg_query::JsonIsPredicate* mutable_json_is_predicate(); void set_allocated_json_is_predicate(::pg_query::JsonIsPredicate* value); void unsafe_arena_set_allocated_json_is_predicate(::pg_query::JsonIsPredicate* value); ::pg_query::JsonIsPredicate* unsafe_arena_release_json_is_predicate(); private: const ::pg_query::JsonIsPredicate& _internal_json_is_predicate() const; ::pg_query::JsonIsPredicate* _internal_mutable_json_is_predicate(); public: // .pg_query.JsonBehavior json_behavior = 45 [json_name = "JsonBehavior"]; bool has_json_behavior() const; private: bool _internal_has_json_behavior() const; public: void clear_json_behavior() ; const ::pg_query::JsonBehavior& json_behavior() const; PROTOBUF_NODISCARD ::pg_query::JsonBehavior* release_json_behavior(); ::pg_query::JsonBehavior* mutable_json_behavior(); void set_allocated_json_behavior(::pg_query::JsonBehavior* value); void unsafe_arena_set_allocated_json_behavior(::pg_query::JsonBehavior* value); ::pg_query::JsonBehavior* unsafe_arena_release_json_behavior(); private: const ::pg_query::JsonBehavior& _internal_json_behavior() const; ::pg_query::JsonBehavior* _internal_mutable_json_behavior(); public: // .pg_query.JsonExpr json_expr = 46 [json_name = "JsonExpr"]; bool has_json_expr() const; private: bool _internal_has_json_expr() const; public: void clear_json_expr() ; const ::pg_query::JsonExpr& json_expr() const; PROTOBUF_NODISCARD ::pg_query::JsonExpr* release_json_expr(); ::pg_query::JsonExpr* mutable_json_expr(); void set_allocated_json_expr(::pg_query::JsonExpr* value); void unsafe_arena_set_allocated_json_expr(::pg_query::JsonExpr* value); ::pg_query::JsonExpr* unsafe_arena_release_json_expr(); private: const ::pg_query::JsonExpr& _internal_json_expr() const; ::pg_query::JsonExpr* _internal_mutable_json_expr(); public: // .pg_query.JsonTablePath json_table_path = 47 [json_name = "JsonTablePath"]; bool has_json_table_path() const; private: bool _internal_has_json_table_path() const; public: void clear_json_table_path() ; const ::pg_query::JsonTablePath& json_table_path() const; PROTOBUF_NODISCARD ::pg_query::JsonTablePath* release_json_table_path(); ::pg_query::JsonTablePath* mutable_json_table_path(); void set_allocated_json_table_path(::pg_query::JsonTablePath* value); void unsafe_arena_set_allocated_json_table_path(::pg_query::JsonTablePath* value); ::pg_query::JsonTablePath* unsafe_arena_release_json_table_path(); private: const ::pg_query::JsonTablePath& _internal_json_table_path() const; ::pg_query::JsonTablePath* _internal_mutable_json_table_path(); public: // .pg_query.JsonTablePathScan json_table_path_scan = 48 [json_name = "JsonTablePathScan"]; bool has_json_table_path_scan() const; private: bool _internal_has_json_table_path_scan() const; public: void clear_json_table_path_scan() ; const ::pg_query::JsonTablePathScan& json_table_path_scan() const; PROTOBUF_NODISCARD ::pg_query::JsonTablePathScan* release_json_table_path_scan(); ::pg_query::JsonTablePathScan* mutable_json_table_path_scan(); void set_allocated_json_table_path_scan(::pg_query::JsonTablePathScan* value); void unsafe_arena_set_allocated_json_table_path_scan(::pg_query::JsonTablePathScan* value); ::pg_query::JsonTablePathScan* unsafe_arena_release_json_table_path_scan(); private: const ::pg_query::JsonTablePathScan& _internal_json_table_path_scan() const; ::pg_query::JsonTablePathScan* _internal_mutable_json_table_path_scan(); public: // .pg_query.JsonTableSiblingJoin json_table_sibling_join = 49 [json_name = "JsonTableSiblingJoin"]; bool has_json_table_sibling_join() const; private: bool _internal_has_json_table_sibling_join() const; public: void clear_json_table_sibling_join() ; const ::pg_query::JsonTableSiblingJoin& json_table_sibling_join() const; PROTOBUF_NODISCARD ::pg_query::JsonTableSiblingJoin* release_json_table_sibling_join(); ::pg_query::JsonTableSiblingJoin* mutable_json_table_sibling_join(); void set_allocated_json_table_sibling_join(::pg_query::JsonTableSiblingJoin* value); void unsafe_arena_set_allocated_json_table_sibling_join(::pg_query::JsonTableSiblingJoin* value); ::pg_query::JsonTableSiblingJoin* unsafe_arena_release_json_table_sibling_join(); private: const ::pg_query::JsonTableSiblingJoin& _internal_json_table_sibling_join() const; ::pg_query::JsonTableSiblingJoin* _internal_mutable_json_table_sibling_join(); public: // .pg_query.NullTest null_test = 50 [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; PROTOBUF_NODISCARD ::pg_query::NullTest* release_null_test(); ::pg_query::NullTest* mutable_null_test(); void set_allocated_null_test(::pg_query::NullTest* value); void unsafe_arena_set_allocated_null_test(::pg_query::NullTest* value); ::pg_query::NullTest* unsafe_arena_release_null_test(); private: const ::pg_query::NullTest& _internal_null_test() const; ::pg_query::NullTest* _internal_mutable_null_test(); public: // .pg_query.BooleanTest boolean_test = 51 [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; PROTOBUF_NODISCARD ::pg_query::BooleanTest* release_boolean_test(); ::pg_query::BooleanTest* mutable_boolean_test(); void set_allocated_boolean_test(::pg_query::BooleanTest* value); void unsafe_arena_set_allocated_boolean_test(::pg_query::BooleanTest* value); ::pg_query::BooleanTest* unsafe_arena_release_boolean_test(); private: const ::pg_query::BooleanTest& _internal_boolean_test() const; ::pg_query::BooleanTest* _internal_mutable_boolean_test(); public: // .pg_query.MergeAction merge_action = 52 [json_name = "MergeAction"]; bool has_merge_action() const; private: bool _internal_has_merge_action() const; public: void clear_merge_action() ; const ::pg_query::MergeAction& merge_action() const; PROTOBUF_NODISCARD ::pg_query::MergeAction* release_merge_action(); ::pg_query::MergeAction* mutable_merge_action(); void set_allocated_merge_action(::pg_query::MergeAction* value); void unsafe_arena_set_allocated_merge_action(::pg_query::MergeAction* value); ::pg_query::MergeAction* unsafe_arena_release_merge_action(); private: const ::pg_query::MergeAction& _internal_merge_action() const; ::pg_query::MergeAction* _internal_mutable_merge_action(); public: // .pg_query.CoerceToDomain coerce_to_domain = 53 [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; PROTOBUF_NODISCARD ::pg_query::CoerceToDomain* release_coerce_to_domain(); ::pg_query::CoerceToDomain* mutable_coerce_to_domain(); void set_allocated_coerce_to_domain(::pg_query::CoerceToDomain* value); void unsafe_arena_set_allocated_coerce_to_domain(::pg_query::CoerceToDomain* value); ::pg_query::CoerceToDomain* unsafe_arena_release_coerce_to_domain(); private: const ::pg_query::CoerceToDomain& _internal_coerce_to_domain() const; ::pg_query::CoerceToDomain* _internal_mutable_coerce_to_domain(); public: // .pg_query.CoerceToDomainValue coerce_to_domain_value = 54 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_coerce_to_domain_value(::pg_query::CoerceToDomainValue* value); ::pg_query::CoerceToDomainValue* unsafe_arena_release_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: // .pg_query.SetToDefault set_to_default = 55 [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; PROTOBUF_NODISCARD ::pg_query::SetToDefault* release_set_to_default(); ::pg_query::SetToDefault* mutable_set_to_default(); void set_allocated_set_to_default(::pg_query::SetToDefault* value); void unsafe_arena_set_allocated_set_to_default(::pg_query::SetToDefault* value); ::pg_query::SetToDefault* unsafe_arena_release_set_to_default(); private: const ::pg_query::SetToDefault& _internal_set_to_default() const; ::pg_query::SetToDefault* _internal_mutable_set_to_default(); public: // .pg_query.CurrentOfExpr current_of_expr = 56 [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; PROTOBUF_NODISCARD ::pg_query::CurrentOfExpr* release_current_of_expr(); ::pg_query::CurrentOfExpr* mutable_current_of_expr(); void set_allocated_current_of_expr(::pg_query::CurrentOfExpr* value); void unsafe_arena_set_allocated_current_of_expr(::pg_query::CurrentOfExpr* value); ::pg_query::CurrentOfExpr* unsafe_arena_release_current_of_expr(); private: const ::pg_query::CurrentOfExpr& _internal_current_of_expr() const; ::pg_query::CurrentOfExpr* _internal_mutable_current_of_expr(); public: // .pg_query.NextValueExpr next_value_expr = 57 [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; PROTOBUF_NODISCARD ::pg_query::NextValueExpr* release_next_value_expr(); ::pg_query::NextValueExpr* mutable_next_value_expr(); void set_allocated_next_value_expr(::pg_query::NextValueExpr* value); void unsafe_arena_set_allocated_next_value_expr(::pg_query::NextValueExpr* value); ::pg_query::NextValueExpr* unsafe_arena_release_next_value_expr(); private: const ::pg_query::NextValueExpr& _internal_next_value_expr() const; ::pg_query::NextValueExpr* _internal_mutable_next_value_expr(); public: // .pg_query.InferenceElem inference_elem = 58 [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; PROTOBUF_NODISCARD ::pg_query::InferenceElem* release_inference_elem(); ::pg_query::InferenceElem* mutable_inference_elem(); void set_allocated_inference_elem(::pg_query::InferenceElem* value); void unsafe_arena_set_allocated_inference_elem(::pg_query::InferenceElem* value); ::pg_query::InferenceElem* unsafe_arena_release_inference_elem(); private: const ::pg_query::InferenceElem& _internal_inference_elem() const; ::pg_query::InferenceElem* _internal_mutable_inference_elem(); public: // .pg_query.TargetEntry target_entry = 59 [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; PROTOBUF_NODISCARD ::pg_query::TargetEntry* release_target_entry(); ::pg_query::TargetEntry* mutable_target_entry(); void set_allocated_target_entry(::pg_query::TargetEntry* value); void unsafe_arena_set_allocated_target_entry(::pg_query::TargetEntry* value); ::pg_query::TargetEntry* unsafe_arena_release_target_entry(); private: const ::pg_query::TargetEntry& _internal_target_entry() const; ::pg_query::TargetEntry* _internal_mutable_target_entry(); public: // .pg_query.RangeTblRef range_tbl_ref = 60 [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; PROTOBUF_NODISCARD ::pg_query::RangeTblRef* release_range_tbl_ref(); ::pg_query::RangeTblRef* mutable_range_tbl_ref(); void set_allocated_range_tbl_ref(::pg_query::RangeTblRef* value); void unsafe_arena_set_allocated_range_tbl_ref(::pg_query::RangeTblRef* value); ::pg_query::RangeTblRef* unsafe_arena_release_range_tbl_ref(); private: const ::pg_query::RangeTblRef& _internal_range_tbl_ref() const; ::pg_query::RangeTblRef* _internal_mutable_range_tbl_ref(); public: // .pg_query.JoinExpr join_expr = 61 [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; PROTOBUF_NODISCARD ::pg_query::JoinExpr* release_join_expr(); ::pg_query::JoinExpr* mutable_join_expr(); void set_allocated_join_expr(::pg_query::JoinExpr* value); void unsafe_arena_set_allocated_join_expr(::pg_query::JoinExpr* value); ::pg_query::JoinExpr* unsafe_arena_release_join_expr(); private: const ::pg_query::JoinExpr& _internal_join_expr() const; ::pg_query::JoinExpr* _internal_mutable_join_expr(); public: // .pg_query.FromExpr from_expr = 62 [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; PROTOBUF_NODISCARD ::pg_query::FromExpr* release_from_expr(); ::pg_query::FromExpr* mutable_from_expr(); void set_allocated_from_expr(::pg_query::FromExpr* value); void unsafe_arena_set_allocated_from_expr(::pg_query::FromExpr* value); ::pg_query::FromExpr* unsafe_arena_release_from_expr(); private: const ::pg_query::FromExpr& _internal_from_expr() const; ::pg_query::FromExpr* _internal_mutable_from_expr(); public: // .pg_query.OnConflictExpr on_conflict_expr = 63 [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; PROTOBUF_NODISCARD ::pg_query::OnConflictExpr* release_on_conflict_expr(); ::pg_query::OnConflictExpr* mutable_on_conflict_expr(); void set_allocated_on_conflict_expr(::pg_query::OnConflictExpr* value); void unsafe_arena_set_allocated_on_conflict_expr(::pg_query::OnConflictExpr* value); ::pg_query::OnConflictExpr* unsafe_arena_release_on_conflict_expr(); private: const ::pg_query::OnConflictExpr& _internal_on_conflict_expr() const; ::pg_query::OnConflictExpr* _internal_mutable_on_conflict_expr(); public: // .pg_query.Query query = 64 [json_name = "Query"]; bool has_query() const; private: bool _internal_has_query() const; public: void clear_query() ; const ::pg_query::Query& query() const; PROTOBUF_NODISCARD ::pg_query::Query* release_query(); ::pg_query::Query* mutable_query(); void set_allocated_query(::pg_query::Query* value); void unsafe_arena_set_allocated_query(::pg_query::Query* value); ::pg_query::Query* unsafe_arena_release_query(); private: const ::pg_query::Query& _internal_query() const; ::pg_query::Query* _internal_mutable_query(); public: // .pg_query.TypeName type_name = 65 [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; PROTOBUF_NODISCARD ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* value); void unsafe_arena_set_allocated_type_name(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_type_name(); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: // .pg_query.ColumnRef column_ref = 66 [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; PROTOBUF_NODISCARD ::pg_query::ColumnRef* release_column_ref(); ::pg_query::ColumnRef* mutable_column_ref(); void set_allocated_column_ref(::pg_query::ColumnRef* value); void unsafe_arena_set_allocated_column_ref(::pg_query::ColumnRef* value); ::pg_query::ColumnRef* unsafe_arena_release_column_ref(); private: const ::pg_query::ColumnRef& _internal_column_ref() const; ::pg_query::ColumnRef* _internal_mutable_column_ref(); public: // .pg_query.ParamRef param_ref = 67 [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; PROTOBUF_NODISCARD ::pg_query::ParamRef* release_param_ref(); ::pg_query::ParamRef* mutable_param_ref(); void set_allocated_param_ref(::pg_query::ParamRef* value); void unsafe_arena_set_allocated_param_ref(::pg_query::ParamRef* value); ::pg_query::ParamRef* unsafe_arena_release_param_ref(); private: const ::pg_query::ParamRef& _internal_param_ref() const; ::pg_query::ParamRef* _internal_mutable_param_ref(); public: // .pg_query.A_Expr a_expr = 68 [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; PROTOBUF_NODISCARD ::pg_query::A_Expr* release_a_expr(); ::pg_query::A_Expr* mutable_a_expr(); void set_allocated_a_expr(::pg_query::A_Expr* value); void unsafe_arena_set_allocated_a_expr(::pg_query::A_Expr* value); ::pg_query::A_Expr* unsafe_arena_release_a_expr(); private: const ::pg_query::A_Expr& _internal_a_expr() const; ::pg_query::A_Expr* _internal_mutable_a_expr(); public: // .pg_query.TypeCast type_cast = 69 [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; PROTOBUF_NODISCARD ::pg_query::TypeCast* release_type_cast(); ::pg_query::TypeCast* mutable_type_cast(); void set_allocated_type_cast(::pg_query::TypeCast* value); void unsafe_arena_set_allocated_type_cast(::pg_query::TypeCast* value); ::pg_query::TypeCast* unsafe_arena_release_type_cast(); private: const ::pg_query::TypeCast& _internal_type_cast() const; ::pg_query::TypeCast* _internal_mutable_type_cast(); public: // .pg_query.CollateClause collate_clause = 70 [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; PROTOBUF_NODISCARD ::pg_query::CollateClause* release_collate_clause(); ::pg_query::CollateClause* mutable_collate_clause(); void set_allocated_collate_clause(::pg_query::CollateClause* value); void unsafe_arena_set_allocated_collate_clause(::pg_query::CollateClause* value); ::pg_query::CollateClause* unsafe_arena_release_collate_clause(); private: const ::pg_query::CollateClause& _internal_collate_clause() const; ::pg_query::CollateClause* _internal_mutable_collate_clause(); public: // .pg_query.RoleSpec role_spec = 71 [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; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_role_spec(); ::pg_query::RoleSpec* mutable_role_spec(); void set_allocated_role_spec(::pg_query::RoleSpec* value); void unsafe_arena_set_allocated_role_spec(::pg_query::RoleSpec* value); ::pg_query::RoleSpec* unsafe_arena_release_role_spec(); private: const ::pg_query::RoleSpec& _internal_role_spec() const; ::pg_query::RoleSpec* _internal_mutable_role_spec(); public: // .pg_query.FuncCall func_call = 72 [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; PROTOBUF_NODISCARD ::pg_query::FuncCall* release_func_call(); ::pg_query::FuncCall* mutable_func_call(); void set_allocated_func_call(::pg_query::FuncCall* value); void unsafe_arena_set_allocated_func_call(::pg_query::FuncCall* value); ::pg_query::FuncCall* unsafe_arena_release_func_call(); private: const ::pg_query::FuncCall& _internal_func_call() const; ::pg_query::FuncCall* _internal_mutable_func_call(); public: // .pg_query.A_Star a_star = 73 [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; PROTOBUF_NODISCARD ::pg_query::A_Star* release_a_star(); ::pg_query::A_Star* mutable_a_star(); void set_allocated_a_star(::pg_query::A_Star* value); void unsafe_arena_set_allocated_a_star(::pg_query::A_Star* value); ::pg_query::A_Star* unsafe_arena_release_a_star(); private: const ::pg_query::A_Star& _internal_a_star() const; ::pg_query::A_Star* _internal_mutable_a_star(); public: // .pg_query.A_Indices a_indices = 74 [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; PROTOBUF_NODISCARD ::pg_query::A_Indices* release_a_indices(); ::pg_query::A_Indices* mutable_a_indices(); void set_allocated_a_indices(::pg_query::A_Indices* value); void unsafe_arena_set_allocated_a_indices(::pg_query::A_Indices* value); ::pg_query::A_Indices* unsafe_arena_release_a_indices(); private: const ::pg_query::A_Indices& _internal_a_indices() const; ::pg_query::A_Indices* _internal_mutable_a_indices(); public: // .pg_query.A_Indirection a_indirection = 75 [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; PROTOBUF_NODISCARD ::pg_query::A_Indirection* release_a_indirection(); ::pg_query::A_Indirection* mutable_a_indirection(); void set_allocated_a_indirection(::pg_query::A_Indirection* value); void unsafe_arena_set_allocated_a_indirection(::pg_query::A_Indirection* value); ::pg_query::A_Indirection* unsafe_arena_release_a_indirection(); private: const ::pg_query::A_Indirection& _internal_a_indirection() const; ::pg_query::A_Indirection* _internal_mutable_a_indirection(); public: // .pg_query.A_ArrayExpr a_array_expr = 76 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_a_array_expr(::pg_query::A_ArrayExpr* value); ::pg_query::A_ArrayExpr* unsafe_arena_release_a_array_expr(); private: const ::pg_query::A_ArrayExpr& _internal_a_array_expr() const; ::pg_query::A_ArrayExpr* _internal_mutable_a_array_expr(); public: // .pg_query.ResTarget res_target = 77 [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; PROTOBUF_NODISCARD ::pg_query::ResTarget* release_res_target(); ::pg_query::ResTarget* mutable_res_target(); void set_allocated_res_target(::pg_query::ResTarget* value); void unsafe_arena_set_allocated_res_target(::pg_query::ResTarget* value); ::pg_query::ResTarget* unsafe_arena_release_res_target(); private: const ::pg_query::ResTarget& _internal_res_target() const; ::pg_query::ResTarget* _internal_mutable_res_target(); public: // .pg_query.MultiAssignRef multi_assign_ref = 78 [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; PROTOBUF_NODISCARD ::pg_query::MultiAssignRef* release_multi_assign_ref(); ::pg_query::MultiAssignRef* mutable_multi_assign_ref(); void set_allocated_multi_assign_ref(::pg_query::MultiAssignRef* value); void unsafe_arena_set_allocated_multi_assign_ref(::pg_query::MultiAssignRef* value); ::pg_query::MultiAssignRef* unsafe_arena_release_multi_assign_ref(); private: const ::pg_query::MultiAssignRef& _internal_multi_assign_ref() const; ::pg_query::MultiAssignRef* _internal_mutable_multi_assign_ref(); public: // .pg_query.SortBy sort_by = 79 [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; PROTOBUF_NODISCARD ::pg_query::SortBy* release_sort_by(); ::pg_query::SortBy* mutable_sort_by(); void set_allocated_sort_by(::pg_query::SortBy* value); void unsafe_arena_set_allocated_sort_by(::pg_query::SortBy* value); ::pg_query::SortBy* unsafe_arena_release_sort_by(); private: const ::pg_query::SortBy& _internal_sort_by() const; ::pg_query::SortBy* _internal_mutable_sort_by(); public: // .pg_query.WindowDef window_def = 80 [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; PROTOBUF_NODISCARD ::pg_query::WindowDef* release_window_def(); ::pg_query::WindowDef* mutable_window_def(); void set_allocated_window_def(::pg_query::WindowDef* value); void unsafe_arena_set_allocated_window_def(::pg_query::WindowDef* value); ::pg_query::WindowDef* unsafe_arena_release_window_def(); private: const ::pg_query::WindowDef& _internal_window_def() const; ::pg_query::WindowDef* _internal_mutable_window_def(); public: // .pg_query.RangeSubselect range_subselect = 81 [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; PROTOBUF_NODISCARD ::pg_query::RangeSubselect* release_range_subselect(); ::pg_query::RangeSubselect* mutable_range_subselect(); void set_allocated_range_subselect(::pg_query::RangeSubselect* value); void unsafe_arena_set_allocated_range_subselect(::pg_query::RangeSubselect* value); ::pg_query::RangeSubselect* unsafe_arena_release_range_subselect(); private: const ::pg_query::RangeSubselect& _internal_range_subselect() const; ::pg_query::RangeSubselect* _internal_mutable_range_subselect(); public: // .pg_query.RangeFunction range_function = 82 [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; PROTOBUF_NODISCARD ::pg_query::RangeFunction* release_range_function(); ::pg_query::RangeFunction* mutable_range_function(); void set_allocated_range_function(::pg_query::RangeFunction* value); void unsafe_arena_set_allocated_range_function(::pg_query::RangeFunction* value); ::pg_query::RangeFunction* unsafe_arena_release_range_function(); private: const ::pg_query::RangeFunction& _internal_range_function() const; ::pg_query::RangeFunction* _internal_mutable_range_function(); public: // .pg_query.RangeTableFunc range_table_func = 83 [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; PROTOBUF_NODISCARD ::pg_query::RangeTableFunc* release_range_table_func(); ::pg_query::RangeTableFunc* mutable_range_table_func(); void set_allocated_range_table_func(::pg_query::RangeTableFunc* value); void unsafe_arena_set_allocated_range_table_func(::pg_query::RangeTableFunc* value); ::pg_query::RangeTableFunc* unsafe_arena_release_range_table_func(); private: const ::pg_query::RangeTableFunc& _internal_range_table_func() const; ::pg_query::RangeTableFunc* _internal_mutable_range_table_func(); public: // .pg_query.RangeTableFuncCol range_table_func_col = 84 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_range_table_func_col(::pg_query::RangeTableFuncCol* value); ::pg_query::RangeTableFuncCol* unsafe_arena_release_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: // .pg_query.RangeTableSample range_table_sample = 85 [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; PROTOBUF_NODISCARD ::pg_query::RangeTableSample* release_range_table_sample(); ::pg_query::RangeTableSample* mutable_range_table_sample(); void set_allocated_range_table_sample(::pg_query::RangeTableSample* value); void unsafe_arena_set_allocated_range_table_sample(::pg_query::RangeTableSample* value); ::pg_query::RangeTableSample* unsafe_arena_release_range_table_sample(); private: const ::pg_query::RangeTableSample& _internal_range_table_sample() const; ::pg_query::RangeTableSample* _internal_mutable_range_table_sample(); public: // .pg_query.ColumnDef column_def = 86 [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; PROTOBUF_NODISCARD ::pg_query::ColumnDef* release_column_def(); ::pg_query::ColumnDef* mutable_column_def(); void set_allocated_column_def(::pg_query::ColumnDef* value); void unsafe_arena_set_allocated_column_def(::pg_query::ColumnDef* value); ::pg_query::ColumnDef* unsafe_arena_release_column_def(); private: const ::pg_query::ColumnDef& _internal_column_def() const; ::pg_query::ColumnDef* _internal_mutable_column_def(); public: // .pg_query.TableLikeClause table_like_clause = 87 [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; PROTOBUF_NODISCARD ::pg_query::TableLikeClause* release_table_like_clause(); ::pg_query::TableLikeClause* mutable_table_like_clause(); void set_allocated_table_like_clause(::pg_query::TableLikeClause* value); void unsafe_arena_set_allocated_table_like_clause(::pg_query::TableLikeClause* value); ::pg_query::TableLikeClause* unsafe_arena_release_table_like_clause(); private: const ::pg_query::TableLikeClause& _internal_table_like_clause() const; ::pg_query::TableLikeClause* _internal_mutable_table_like_clause(); public: // .pg_query.IndexElem index_elem = 88 [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; PROTOBUF_NODISCARD ::pg_query::IndexElem* release_index_elem(); ::pg_query::IndexElem* mutable_index_elem(); void set_allocated_index_elem(::pg_query::IndexElem* value); void unsafe_arena_set_allocated_index_elem(::pg_query::IndexElem* value); ::pg_query::IndexElem* unsafe_arena_release_index_elem(); private: const ::pg_query::IndexElem& _internal_index_elem() const; ::pg_query::IndexElem* _internal_mutable_index_elem(); public: // .pg_query.DefElem def_elem = 89 [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; PROTOBUF_NODISCARD ::pg_query::DefElem* release_def_elem(); ::pg_query::DefElem* mutable_def_elem(); void set_allocated_def_elem(::pg_query::DefElem* value); void unsafe_arena_set_allocated_def_elem(::pg_query::DefElem* value); ::pg_query::DefElem* unsafe_arena_release_def_elem(); private: const ::pg_query::DefElem& _internal_def_elem() const; ::pg_query::DefElem* _internal_mutable_def_elem(); public: // .pg_query.LockingClause locking_clause = 90 [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; PROTOBUF_NODISCARD ::pg_query::LockingClause* release_locking_clause(); ::pg_query::LockingClause* mutable_locking_clause(); void set_allocated_locking_clause(::pg_query::LockingClause* value); void unsafe_arena_set_allocated_locking_clause(::pg_query::LockingClause* value); ::pg_query::LockingClause* unsafe_arena_release_locking_clause(); private: const ::pg_query::LockingClause& _internal_locking_clause() const; ::pg_query::LockingClause* _internal_mutable_locking_clause(); public: // .pg_query.XmlSerialize xml_serialize = 91 [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; PROTOBUF_NODISCARD ::pg_query::XmlSerialize* release_xml_serialize(); ::pg_query::XmlSerialize* mutable_xml_serialize(); void set_allocated_xml_serialize(::pg_query::XmlSerialize* value); void unsafe_arena_set_allocated_xml_serialize(::pg_query::XmlSerialize* value); ::pg_query::XmlSerialize* unsafe_arena_release_xml_serialize(); private: const ::pg_query::XmlSerialize& _internal_xml_serialize() const; ::pg_query::XmlSerialize* _internal_mutable_xml_serialize(); public: // .pg_query.PartitionElem partition_elem = 92 [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; PROTOBUF_NODISCARD ::pg_query::PartitionElem* release_partition_elem(); ::pg_query::PartitionElem* mutable_partition_elem(); void set_allocated_partition_elem(::pg_query::PartitionElem* value); void unsafe_arena_set_allocated_partition_elem(::pg_query::PartitionElem* value); ::pg_query::PartitionElem* unsafe_arena_release_partition_elem(); private: const ::pg_query::PartitionElem& _internal_partition_elem() const; ::pg_query::PartitionElem* _internal_mutable_partition_elem(); public: // .pg_query.PartitionSpec partition_spec = 93 [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; PROTOBUF_NODISCARD ::pg_query::PartitionSpec* release_partition_spec(); ::pg_query::PartitionSpec* mutable_partition_spec(); void set_allocated_partition_spec(::pg_query::PartitionSpec* value); void unsafe_arena_set_allocated_partition_spec(::pg_query::PartitionSpec* value); ::pg_query::PartitionSpec* unsafe_arena_release_partition_spec(); private: const ::pg_query::PartitionSpec& _internal_partition_spec() const; ::pg_query::PartitionSpec* _internal_mutable_partition_spec(); public: // .pg_query.PartitionBoundSpec partition_bound_spec = 94 [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; PROTOBUF_NODISCARD ::pg_query::PartitionBoundSpec* release_partition_bound_spec(); ::pg_query::PartitionBoundSpec* mutable_partition_bound_spec(); void set_allocated_partition_bound_spec(::pg_query::PartitionBoundSpec* value); void unsafe_arena_set_allocated_partition_bound_spec(::pg_query::PartitionBoundSpec* value); ::pg_query::PartitionBoundSpec* unsafe_arena_release_partition_bound_spec(); private: const ::pg_query::PartitionBoundSpec& _internal_partition_bound_spec() const; ::pg_query::PartitionBoundSpec* _internal_mutable_partition_bound_spec(); public: // .pg_query.PartitionRangeDatum partition_range_datum = 95 [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; PROTOBUF_NODISCARD ::pg_query::PartitionRangeDatum* release_partition_range_datum(); ::pg_query::PartitionRangeDatum* mutable_partition_range_datum(); void set_allocated_partition_range_datum(::pg_query::PartitionRangeDatum* value); void unsafe_arena_set_allocated_partition_range_datum(::pg_query::PartitionRangeDatum* value); ::pg_query::PartitionRangeDatum* unsafe_arena_release_partition_range_datum(); private: const ::pg_query::PartitionRangeDatum& _internal_partition_range_datum() const; ::pg_query::PartitionRangeDatum* _internal_mutable_partition_range_datum(); public: // .pg_query.SinglePartitionSpec single_partition_spec = 96 [json_name = "SinglePartitionSpec"]; bool has_single_partition_spec() const; private: bool _internal_has_single_partition_spec() const; public: void clear_single_partition_spec() ; const ::pg_query::SinglePartitionSpec& single_partition_spec() const; PROTOBUF_NODISCARD ::pg_query::SinglePartitionSpec* release_single_partition_spec(); ::pg_query::SinglePartitionSpec* mutable_single_partition_spec(); void set_allocated_single_partition_spec(::pg_query::SinglePartitionSpec* value); void unsafe_arena_set_allocated_single_partition_spec(::pg_query::SinglePartitionSpec* value); ::pg_query::SinglePartitionSpec* unsafe_arena_release_single_partition_spec(); private: const ::pg_query::SinglePartitionSpec& _internal_single_partition_spec() const; ::pg_query::SinglePartitionSpec* _internal_mutable_single_partition_spec(); public: // .pg_query.PartitionCmd partition_cmd = 97 [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; PROTOBUF_NODISCARD ::pg_query::PartitionCmd* release_partition_cmd(); ::pg_query::PartitionCmd* mutable_partition_cmd(); void set_allocated_partition_cmd(::pg_query::PartitionCmd* value); void unsafe_arena_set_allocated_partition_cmd(::pg_query::PartitionCmd* value); ::pg_query::PartitionCmd* unsafe_arena_release_partition_cmd(); private: const ::pg_query::PartitionCmd& _internal_partition_cmd() const; ::pg_query::PartitionCmd* _internal_mutable_partition_cmd(); public: // .pg_query.RangeTblEntry range_tbl_entry = 98 [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; PROTOBUF_NODISCARD ::pg_query::RangeTblEntry* release_range_tbl_entry(); ::pg_query::RangeTblEntry* mutable_range_tbl_entry(); void set_allocated_range_tbl_entry(::pg_query::RangeTblEntry* value); void unsafe_arena_set_allocated_range_tbl_entry(::pg_query::RangeTblEntry* value); ::pg_query::RangeTblEntry* unsafe_arena_release_range_tbl_entry(); private: const ::pg_query::RangeTblEntry& _internal_range_tbl_entry() const; ::pg_query::RangeTblEntry* _internal_mutable_range_tbl_entry(); public: // .pg_query.RTEPermissionInfo rtepermission_info = 99 [json_name = "RTEPermissionInfo"]; bool has_rtepermission_info() const; private: bool _internal_has_rtepermission_info() const; public: void clear_rtepermission_info() ; const ::pg_query::RTEPermissionInfo& rtepermission_info() const; PROTOBUF_NODISCARD ::pg_query::RTEPermissionInfo* release_rtepermission_info(); ::pg_query::RTEPermissionInfo* mutable_rtepermission_info(); void set_allocated_rtepermission_info(::pg_query::RTEPermissionInfo* value); void unsafe_arena_set_allocated_rtepermission_info(::pg_query::RTEPermissionInfo* value); ::pg_query::RTEPermissionInfo* unsafe_arena_release_rtepermission_info(); private: const ::pg_query::RTEPermissionInfo& _internal_rtepermission_info() const; ::pg_query::RTEPermissionInfo* _internal_mutable_rtepermission_info(); public: // .pg_query.RangeTblFunction range_tbl_function = 100 [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; PROTOBUF_NODISCARD ::pg_query::RangeTblFunction* release_range_tbl_function(); ::pg_query::RangeTblFunction* mutable_range_tbl_function(); void set_allocated_range_tbl_function(::pg_query::RangeTblFunction* value); void unsafe_arena_set_allocated_range_tbl_function(::pg_query::RangeTblFunction* value); ::pg_query::RangeTblFunction* unsafe_arena_release_range_tbl_function(); private: const ::pg_query::RangeTblFunction& _internal_range_tbl_function() const; ::pg_query::RangeTblFunction* _internal_mutable_range_tbl_function(); public: // .pg_query.TableSampleClause table_sample_clause = 101 [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; PROTOBUF_NODISCARD ::pg_query::TableSampleClause* release_table_sample_clause(); ::pg_query::TableSampleClause* mutable_table_sample_clause(); void set_allocated_table_sample_clause(::pg_query::TableSampleClause* value); void unsafe_arena_set_allocated_table_sample_clause(::pg_query::TableSampleClause* value); ::pg_query::TableSampleClause* unsafe_arena_release_table_sample_clause(); private: const ::pg_query::TableSampleClause& _internal_table_sample_clause() const; ::pg_query::TableSampleClause* _internal_mutable_table_sample_clause(); public: // .pg_query.WithCheckOption with_check_option = 102 [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; PROTOBUF_NODISCARD ::pg_query::WithCheckOption* release_with_check_option(); ::pg_query::WithCheckOption* mutable_with_check_option(); void set_allocated_with_check_option(::pg_query::WithCheckOption* value); void unsafe_arena_set_allocated_with_check_option(::pg_query::WithCheckOption* value); ::pg_query::WithCheckOption* unsafe_arena_release_with_check_option(); private: const ::pg_query::WithCheckOption& _internal_with_check_option() const; ::pg_query::WithCheckOption* _internal_mutable_with_check_option(); public: // .pg_query.SortGroupClause sort_group_clause = 103 [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; PROTOBUF_NODISCARD ::pg_query::SortGroupClause* release_sort_group_clause(); ::pg_query::SortGroupClause* mutable_sort_group_clause(); void set_allocated_sort_group_clause(::pg_query::SortGroupClause* value); void unsafe_arena_set_allocated_sort_group_clause(::pg_query::SortGroupClause* value); ::pg_query::SortGroupClause* unsafe_arena_release_sort_group_clause(); private: const ::pg_query::SortGroupClause& _internal_sort_group_clause() const; ::pg_query::SortGroupClause* _internal_mutable_sort_group_clause(); public: // .pg_query.GroupingSet grouping_set = 104 [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; PROTOBUF_NODISCARD ::pg_query::GroupingSet* release_grouping_set(); ::pg_query::GroupingSet* mutable_grouping_set(); void set_allocated_grouping_set(::pg_query::GroupingSet* value); void unsafe_arena_set_allocated_grouping_set(::pg_query::GroupingSet* value); ::pg_query::GroupingSet* unsafe_arena_release_grouping_set(); private: const ::pg_query::GroupingSet& _internal_grouping_set() const; ::pg_query::GroupingSet* _internal_mutable_grouping_set(); public: // .pg_query.WindowClause window_clause = 105 [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; PROTOBUF_NODISCARD ::pg_query::WindowClause* release_window_clause(); ::pg_query::WindowClause* mutable_window_clause(); void set_allocated_window_clause(::pg_query::WindowClause* value); void unsafe_arena_set_allocated_window_clause(::pg_query::WindowClause* value); ::pg_query::WindowClause* unsafe_arena_release_window_clause(); private: const ::pg_query::WindowClause& _internal_window_clause() const; ::pg_query::WindowClause* _internal_mutable_window_clause(); public: // .pg_query.RowMarkClause row_mark_clause = 106 [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; PROTOBUF_NODISCARD ::pg_query::RowMarkClause* release_row_mark_clause(); ::pg_query::RowMarkClause* mutable_row_mark_clause(); void set_allocated_row_mark_clause(::pg_query::RowMarkClause* value); void unsafe_arena_set_allocated_row_mark_clause(::pg_query::RowMarkClause* value); ::pg_query::RowMarkClause* unsafe_arena_release_row_mark_clause(); private: const ::pg_query::RowMarkClause& _internal_row_mark_clause() const; ::pg_query::RowMarkClause* _internal_mutable_row_mark_clause(); public: // .pg_query.WithClause with_clause = 107 [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; PROTOBUF_NODISCARD ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* value); void unsafe_arena_set_allocated_with_clause(::pg_query::WithClause* value); ::pg_query::WithClause* unsafe_arena_release_with_clause(); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: // .pg_query.InferClause infer_clause = 108 [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; PROTOBUF_NODISCARD ::pg_query::InferClause* release_infer_clause(); ::pg_query::InferClause* mutable_infer_clause(); void set_allocated_infer_clause(::pg_query::InferClause* value); void unsafe_arena_set_allocated_infer_clause(::pg_query::InferClause* value); ::pg_query::InferClause* unsafe_arena_release_infer_clause(); private: const ::pg_query::InferClause& _internal_infer_clause() const; ::pg_query::InferClause* _internal_mutable_infer_clause(); public: // .pg_query.OnConflictClause on_conflict_clause = 109 [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; PROTOBUF_NODISCARD ::pg_query::OnConflictClause* release_on_conflict_clause(); ::pg_query::OnConflictClause* mutable_on_conflict_clause(); void set_allocated_on_conflict_clause(::pg_query::OnConflictClause* value); void unsafe_arena_set_allocated_on_conflict_clause(::pg_query::OnConflictClause* value); ::pg_query::OnConflictClause* unsafe_arena_release_on_conflict_clause(); private: const ::pg_query::OnConflictClause& _internal_on_conflict_clause() const; ::pg_query::OnConflictClause* _internal_mutable_on_conflict_clause(); public: // .pg_query.CTESearchClause ctesearch_clause = 110 [json_name = "CTESearchClause"]; bool has_ctesearch_clause() const; private: bool _internal_has_ctesearch_clause() const; public: void clear_ctesearch_clause() ; const ::pg_query::CTESearchClause& ctesearch_clause() const; PROTOBUF_NODISCARD ::pg_query::CTESearchClause* release_ctesearch_clause(); ::pg_query::CTESearchClause* mutable_ctesearch_clause(); void set_allocated_ctesearch_clause(::pg_query::CTESearchClause* value); void unsafe_arena_set_allocated_ctesearch_clause(::pg_query::CTESearchClause* value); ::pg_query::CTESearchClause* unsafe_arena_release_ctesearch_clause(); private: const ::pg_query::CTESearchClause& _internal_ctesearch_clause() const; ::pg_query::CTESearchClause* _internal_mutable_ctesearch_clause(); public: // .pg_query.CTECycleClause ctecycle_clause = 111 [json_name = "CTECycleClause"]; bool has_ctecycle_clause() const; private: bool _internal_has_ctecycle_clause() const; public: void clear_ctecycle_clause() ; const ::pg_query::CTECycleClause& ctecycle_clause() const; PROTOBUF_NODISCARD ::pg_query::CTECycleClause* release_ctecycle_clause(); ::pg_query::CTECycleClause* mutable_ctecycle_clause(); void set_allocated_ctecycle_clause(::pg_query::CTECycleClause* value); void unsafe_arena_set_allocated_ctecycle_clause(::pg_query::CTECycleClause* value); ::pg_query::CTECycleClause* unsafe_arena_release_ctecycle_clause(); private: const ::pg_query::CTECycleClause& _internal_ctecycle_clause() const; ::pg_query::CTECycleClause* _internal_mutable_ctecycle_clause(); public: // .pg_query.CommonTableExpr common_table_expr = 112 [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; PROTOBUF_NODISCARD ::pg_query::CommonTableExpr* release_common_table_expr(); ::pg_query::CommonTableExpr* mutable_common_table_expr(); void set_allocated_common_table_expr(::pg_query::CommonTableExpr* value); void unsafe_arena_set_allocated_common_table_expr(::pg_query::CommonTableExpr* value); ::pg_query::CommonTableExpr* unsafe_arena_release_common_table_expr(); private: const ::pg_query::CommonTableExpr& _internal_common_table_expr() const; ::pg_query::CommonTableExpr* _internal_mutable_common_table_expr(); public: // .pg_query.MergeWhenClause merge_when_clause = 113 [json_name = "MergeWhenClause"]; bool has_merge_when_clause() const; private: bool _internal_has_merge_when_clause() const; public: void clear_merge_when_clause() ; const ::pg_query::MergeWhenClause& merge_when_clause() const; PROTOBUF_NODISCARD ::pg_query::MergeWhenClause* release_merge_when_clause(); ::pg_query::MergeWhenClause* mutable_merge_when_clause(); void set_allocated_merge_when_clause(::pg_query::MergeWhenClause* value); void unsafe_arena_set_allocated_merge_when_clause(::pg_query::MergeWhenClause* value); ::pg_query::MergeWhenClause* unsafe_arena_release_merge_when_clause(); private: const ::pg_query::MergeWhenClause& _internal_merge_when_clause() const; ::pg_query::MergeWhenClause* _internal_mutable_merge_when_clause(); public: // .pg_query.TriggerTransition trigger_transition = 114 [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; PROTOBUF_NODISCARD ::pg_query::TriggerTransition* release_trigger_transition(); ::pg_query::TriggerTransition* mutable_trigger_transition(); void set_allocated_trigger_transition(::pg_query::TriggerTransition* value); void unsafe_arena_set_allocated_trigger_transition(::pg_query::TriggerTransition* value); ::pg_query::TriggerTransition* unsafe_arena_release_trigger_transition(); private: const ::pg_query::TriggerTransition& _internal_trigger_transition() const; ::pg_query::TriggerTransition* _internal_mutable_trigger_transition(); public: // .pg_query.JsonOutput json_output = 115 [json_name = "JsonOutput"]; bool has_json_output() const; private: bool _internal_has_json_output() const; public: void clear_json_output() ; const ::pg_query::JsonOutput& json_output() const; PROTOBUF_NODISCARD ::pg_query::JsonOutput* release_json_output(); ::pg_query::JsonOutput* mutable_json_output(); void set_allocated_json_output(::pg_query::JsonOutput* value); void unsafe_arena_set_allocated_json_output(::pg_query::JsonOutput* value); ::pg_query::JsonOutput* unsafe_arena_release_json_output(); private: const ::pg_query::JsonOutput& _internal_json_output() const; ::pg_query::JsonOutput* _internal_mutable_json_output(); public: // .pg_query.JsonArgument json_argument = 116 [json_name = "JsonArgument"]; bool has_json_argument() const; private: bool _internal_has_json_argument() const; public: void clear_json_argument() ; const ::pg_query::JsonArgument& json_argument() const; PROTOBUF_NODISCARD ::pg_query::JsonArgument* release_json_argument(); ::pg_query::JsonArgument* mutable_json_argument(); void set_allocated_json_argument(::pg_query::JsonArgument* value); void unsafe_arena_set_allocated_json_argument(::pg_query::JsonArgument* value); ::pg_query::JsonArgument* unsafe_arena_release_json_argument(); private: const ::pg_query::JsonArgument& _internal_json_argument() const; ::pg_query::JsonArgument* _internal_mutable_json_argument(); public: // .pg_query.JsonFuncExpr json_func_expr = 117 [json_name = "JsonFuncExpr"]; bool has_json_func_expr() const; private: bool _internal_has_json_func_expr() const; public: void clear_json_func_expr() ; const ::pg_query::JsonFuncExpr& json_func_expr() const; PROTOBUF_NODISCARD ::pg_query::JsonFuncExpr* release_json_func_expr(); ::pg_query::JsonFuncExpr* mutable_json_func_expr(); void set_allocated_json_func_expr(::pg_query::JsonFuncExpr* value); void unsafe_arena_set_allocated_json_func_expr(::pg_query::JsonFuncExpr* value); ::pg_query::JsonFuncExpr* unsafe_arena_release_json_func_expr(); private: const ::pg_query::JsonFuncExpr& _internal_json_func_expr() const; ::pg_query::JsonFuncExpr* _internal_mutable_json_func_expr(); public: // .pg_query.JsonTablePathSpec json_table_path_spec = 118 [json_name = "JsonTablePathSpec"]; bool has_json_table_path_spec() const; private: bool _internal_has_json_table_path_spec() const; public: void clear_json_table_path_spec() ; const ::pg_query::JsonTablePathSpec& json_table_path_spec() const; PROTOBUF_NODISCARD ::pg_query::JsonTablePathSpec* release_json_table_path_spec(); ::pg_query::JsonTablePathSpec* mutable_json_table_path_spec(); void set_allocated_json_table_path_spec(::pg_query::JsonTablePathSpec* value); void unsafe_arena_set_allocated_json_table_path_spec(::pg_query::JsonTablePathSpec* value); ::pg_query::JsonTablePathSpec* unsafe_arena_release_json_table_path_spec(); private: const ::pg_query::JsonTablePathSpec& _internal_json_table_path_spec() const; ::pg_query::JsonTablePathSpec* _internal_mutable_json_table_path_spec(); public: // .pg_query.JsonTable json_table = 119 [json_name = "JsonTable"]; bool has_json_table() const; private: bool _internal_has_json_table() const; public: void clear_json_table() ; const ::pg_query::JsonTable& json_table() const; PROTOBUF_NODISCARD ::pg_query::JsonTable* release_json_table(); ::pg_query::JsonTable* mutable_json_table(); void set_allocated_json_table(::pg_query::JsonTable* value); void unsafe_arena_set_allocated_json_table(::pg_query::JsonTable* value); ::pg_query::JsonTable* unsafe_arena_release_json_table(); private: const ::pg_query::JsonTable& _internal_json_table() const; ::pg_query::JsonTable* _internal_mutable_json_table(); public: // .pg_query.JsonTableColumn json_table_column = 120 [json_name = "JsonTableColumn"]; bool has_json_table_column() const; private: bool _internal_has_json_table_column() const; public: void clear_json_table_column() ; const ::pg_query::JsonTableColumn& json_table_column() const; PROTOBUF_NODISCARD ::pg_query::JsonTableColumn* release_json_table_column(); ::pg_query::JsonTableColumn* mutable_json_table_column(); void set_allocated_json_table_column(::pg_query::JsonTableColumn* value); void unsafe_arena_set_allocated_json_table_column(::pg_query::JsonTableColumn* value); ::pg_query::JsonTableColumn* unsafe_arena_release_json_table_column(); private: const ::pg_query::JsonTableColumn& _internal_json_table_column() const; ::pg_query::JsonTableColumn* _internal_mutable_json_table_column(); public: // .pg_query.JsonKeyValue json_key_value = 121 [json_name = "JsonKeyValue"]; bool has_json_key_value() const; private: bool _internal_has_json_key_value() const; public: void clear_json_key_value() ; const ::pg_query::JsonKeyValue& json_key_value() const; PROTOBUF_NODISCARD ::pg_query::JsonKeyValue* release_json_key_value(); ::pg_query::JsonKeyValue* mutable_json_key_value(); void set_allocated_json_key_value(::pg_query::JsonKeyValue* value); void unsafe_arena_set_allocated_json_key_value(::pg_query::JsonKeyValue* value); ::pg_query::JsonKeyValue* unsafe_arena_release_json_key_value(); private: const ::pg_query::JsonKeyValue& _internal_json_key_value() const; ::pg_query::JsonKeyValue* _internal_mutable_json_key_value(); public: // .pg_query.JsonParseExpr json_parse_expr = 122 [json_name = "JsonParseExpr"]; bool has_json_parse_expr() const; private: bool _internal_has_json_parse_expr() const; public: void clear_json_parse_expr() ; const ::pg_query::JsonParseExpr& json_parse_expr() const; PROTOBUF_NODISCARD ::pg_query::JsonParseExpr* release_json_parse_expr(); ::pg_query::JsonParseExpr* mutable_json_parse_expr(); void set_allocated_json_parse_expr(::pg_query::JsonParseExpr* value); void unsafe_arena_set_allocated_json_parse_expr(::pg_query::JsonParseExpr* value); ::pg_query::JsonParseExpr* unsafe_arena_release_json_parse_expr(); private: const ::pg_query::JsonParseExpr& _internal_json_parse_expr() const; ::pg_query::JsonParseExpr* _internal_mutable_json_parse_expr(); public: // .pg_query.JsonScalarExpr json_scalar_expr = 123 [json_name = "JsonScalarExpr"]; bool has_json_scalar_expr() const; private: bool _internal_has_json_scalar_expr() const; public: void clear_json_scalar_expr() ; const ::pg_query::JsonScalarExpr& json_scalar_expr() const; PROTOBUF_NODISCARD ::pg_query::JsonScalarExpr* release_json_scalar_expr(); ::pg_query::JsonScalarExpr* mutable_json_scalar_expr(); void set_allocated_json_scalar_expr(::pg_query::JsonScalarExpr* value); void unsafe_arena_set_allocated_json_scalar_expr(::pg_query::JsonScalarExpr* value); ::pg_query::JsonScalarExpr* unsafe_arena_release_json_scalar_expr(); private: const ::pg_query::JsonScalarExpr& _internal_json_scalar_expr() const; ::pg_query::JsonScalarExpr* _internal_mutable_json_scalar_expr(); public: // .pg_query.JsonSerializeExpr json_serialize_expr = 124 [json_name = "JsonSerializeExpr"]; bool has_json_serialize_expr() const; private: bool _internal_has_json_serialize_expr() const; public: void clear_json_serialize_expr() ; const ::pg_query::JsonSerializeExpr& json_serialize_expr() const; PROTOBUF_NODISCARD ::pg_query::JsonSerializeExpr* release_json_serialize_expr(); ::pg_query::JsonSerializeExpr* mutable_json_serialize_expr(); void set_allocated_json_serialize_expr(::pg_query::JsonSerializeExpr* value); void unsafe_arena_set_allocated_json_serialize_expr(::pg_query::JsonSerializeExpr* value); ::pg_query::JsonSerializeExpr* unsafe_arena_release_json_serialize_expr(); private: const ::pg_query::JsonSerializeExpr& _internal_json_serialize_expr() const; ::pg_query::JsonSerializeExpr* _internal_mutable_json_serialize_expr(); public: // .pg_query.JsonObjectConstructor json_object_constructor = 125 [json_name = "JsonObjectConstructor"]; bool has_json_object_constructor() const; private: bool _internal_has_json_object_constructor() const; public: void clear_json_object_constructor() ; const ::pg_query::JsonObjectConstructor& json_object_constructor() const; PROTOBUF_NODISCARD ::pg_query::JsonObjectConstructor* release_json_object_constructor(); ::pg_query::JsonObjectConstructor* mutable_json_object_constructor(); void set_allocated_json_object_constructor(::pg_query::JsonObjectConstructor* value); void unsafe_arena_set_allocated_json_object_constructor(::pg_query::JsonObjectConstructor* value); ::pg_query::JsonObjectConstructor* unsafe_arena_release_json_object_constructor(); private: const ::pg_query::JsonObjectConstructor& _internal_json_object_constructor() const; ::pg_query::JsonObjectConstructor* _internal_mutable_json_object_constructor(); public: // .pg_query.JsonArrayConstructor json_array_constructor = 126 [json_name = "JsonArrayConstructor"]; bool has_json_array_constructor() const; private: bool _internal_has_json_array_constructor() const; public: void clear_json_array_constructor() ; const ::pg_query::JsonArrayConstructor& json_array_constructor() const; PROTOBUF_NODISCARD ::pg_query::JsonArrayConstructor* release_json_array_constructor(); ::pg_query::JsonArrayConstructor* mutable_json_array_constructor(); void set_allocated_json_array_constructor(::pg_query::JsonArrayConstructor* value); void unsafe_arena_set_allocated_json_array_constructor(::pg_query::JsonArrayConstructor* value); ::pg_query::JsonArrayConstructor* unsafe_arena_release_json_array_constructor(); private: const ::pg_query::JsonArrayConstructor& _internal_json_array_constructor() const; ::pg_query::JsonArrayConstructor* _internal_mutable_json_array_constructor(); public: // .pg_query.JsonArrayQueryConstructor json_array_query_constructor = 127 [json_name = "JsonArrayQueryConstructor"]; bool has_json_array_query_constructor() const; private: bool _internal_has_json_array_query_constructor() const; public: void clear_json_array_query_constructor() ; const ::pg_query::JsonArrayQueryConstructor& json_array_query_constructor() const; PROTOBUF_NODISCARD ::pg_query::JsonArrayQueryConstructor* release_json_array_query_constructor(); ::pg_query::JsonArrayQueryConstructor* mutable_json_array_query_constructor(); void set_allocated_json_array_query_constructor(::pg_query::JsonArrayQueryConstructor* value); void unsafe_arena_set_allocated_json_array_query_constructor(::pg_query::JsonArrayQueryConstructor* value); ::pg_query::JsonArrayQueryConstructor* unsafe_arena_release_json_array_query_constructor(); private: const ::pg_query::JsonArrayQueryConstructor& _internal_json_array_query_constructor() const; ::pg_query::JsonArrayQueryConstructor* _internal_mutable_json_array_query_constructor(); public: // .pg_query.JsonAggConstructor json_agg_constructor = 128 [json_name = "JsonAggConstructor"]; bool has_json_agg_constructor() const; private: bool _internal_has_json_agg_constructor() const; public: void clear_json_agg_constructor() ; const ::pg_query::JsonAggConstructor& json_agg_constructor() const; PROTOBUF_NODISCARD ::pg_query::JsonAggConstructor* release_json_agg_constructor(); ::pg_query::JsonAggConstructor* mutable_json_agg_constructor(); void set_allocated_json_agg_constructor(::pg_query::JsonAggConstructor* value); void unsafe_arena_set_allocated_json_agg_constructor(::pg_query::JsonAggConstructor* value); ::pg_query::JsonAggConstructor* unsafe_arena_release_json_agg_constructor(); private: const ::pg_query::JsonAggConstructor& _internal_json_agg_constructor() const; ::pg_query::JsonAggConstructor* _internal_mutable_json_agg_constructor(); public: // .pg_query.JsonObjectAgg json_object_agg = 129 [json_name = "JsonObjectAgg"]; bool has_json_object_agg() const; private: bool _internal_has_json_object_agg() const; public: void clear_json_object_agg() ; const ::pg_query::JsonObjectAgg& json_object_agg() const; PROTOBUF_NODISCARD ::pg_query::JsonObjectAgg* release_json_object_agg(); ::pg_query::JsonObjectAgg* mutable_json_object_agg(); void set_allocated_json_object_agg(::pg_query::JsonObjectAgg* value); void unsafe_arena_set_allocated_json_object_agg(::pg_query::JsonObjectAgg* value); ::pg_query::JsonObjectAgg* unsafe_arena_release_json_object_agg(); private: const ::pg_query::JsonObjectAgg& _internal_json_object_agg() const; ::pg_query::JsonObjectAgg* _internal_mutable_json_object_agg(); public: // .pg_query.JsonArrayAgg json_array_agg = 130 [json_name = "JsonArrayAgg"]; bool has_json_array_agg() const; private: bool _internal_has_json_array_agg() const; public: void clear_json_array_agg() ; const ::pg_query::JsonArrayAgg& json_array_agg() const; PROTOBUF_NODISCARD ::pg_query::JsonArrayAgg* release_json_array_agg(); ::pg_query::JsonArrayAgg* mutable_json_array_agg(); void set_allocated_json_array_agg(::pg_query::JsonArrayAgg* value); void unsafe_arena_set_allocated_json_array_agg(::pg_query::JsonArrayAgg* value); ::pg_query::JsonArrayAgg* unsafe_arena_release_json_array_agg(); private: const ::pg_query::JsonArrayAgg& _internal_json_array_agg() const; ::pg_query::JsonArrayAgg* _internal_mutable_json_array_agg(); public: // .pg_query.RawStmt raw_stmt = 131 [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; PROTOBUF_NODISCARD ::pg_query::RawStmt* release_raw_stmt(); ::pg_query::RawStmt* mutable_raw_stmt(); void set_allocated_raw_stmt(::pg_query::RawStmt* value); void unsafe_arena_set_allocated_raw_stmt(::pg_query::RawStmt* value); ::pg_query::RawStmt* unsafe_arena_release_raw_stmt(); private: const ::pg_query::RawStmt& _internal_raw_stmt() const; ::pg_query::RawStmt* _internal_mutable_raw_stmt(); public: // .pg_query.InsertStmt insert_stmt = 132 [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; PROTOBUF_NODISCARD ::pg_query::InsertStmt* release_insert_stmt(); ::pg_query::InsertStmt* mutable_insert_stmt(); void set_allocated_insert_stmt(::pg_query::InsertStmt* value); void unsafe_arena_set_allocated_insert_stmt(::pg_query::InsertStmt* value); ::pg_query::InsertStmt* unsafe_arena_release_insert_stmt(); private: const ::pg_query::InsertStmt& _internal_insert_stmt() const; ::pg_query::InsertStmt* _internal_mutable_insert_stmt(); public: // .pg_query.DeleteStmt delete_stmt = 133 [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; PROTOBUF_NODISCARD ::pg_query::DeleteStmt* release_delete_stmt(); ::pg_query::DeleteStmt* mutable_delete_stmt(); void set_allocated_delete_stmt(::pg_query::DeleteStmt* value); void unsafe_arena_set_allocated_delete_stmt(::pg_query::DeleteStmt* value); ::pg_query::DeleteStmt* unsafe_arena_release_delete_stmt(); private: const ::pg_query::DeleteStmt& _internal_delete_stmt() const; ::pg_query::DeleteStmt* _internal_mutable_delete_stmt(); public: // .pg_query.UpdateStmt update_stmt = 134 [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; PROTOBUF_NODISCARD ::pg_query::UpdateStmt* release_update_stmt(); ::pg_query::UpdateStmt* mutable_update_stmt(); void set_allocated_update_stmt(::pg_query::UpdateStmt* value); void unsafe_arena_set_allocated_update_stmt(::pg_query::UpdateStmt* value); ::pg_query::UpdateStmt* unsafe_arena_release_update_stmt(); private: const ::pg_query::UpdateStmt& _internal_update_stmt() const; ::pg_query::UpdateStmt* _internal_mutable_update_stmt(); public: // .pg_query.MergeStmt merge_stmt = 135 [json_name = "MergeStmt"]; bool has_merge_stmt() const; private: bool _internal_has_merge_stmt() const; public: void clear_merge_stmt() ; const ::pg_query::MergeStmt& merge_stmt() const; PROTOBUF_NODISCARD ::pg_query::MergeStmt* release_merge_stmt(); ::pg_query::MergeStmt* mutable_merge_stmt(); void set_allocated_merge_stmt(::pg_query::MergeStmt* value); void unsafe_arena_set_allocated_merge_stmt(::pg_query::MergeStmt* value); ::pg_query::MergeStmt* unsafe_arena_release_merge_stmt(); private: const ::pg_query::MergeStmt& _internal_merge_stmt() const; ::pg_query::MergeStmt* _internal_mutable_merge_stmt(); public: // .pg_query.SelectStmt select_stmt = 136 [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; PROTOBUF_NODISCARD ::pg_query::SelectStmt* release_select_stmt(); ::pg_query::SelectStmt* mutable_select_stmt(); void set_allocated_select_stmt(::pg_query::SelectStmt* value); void unsafe_arena_set_allocated_select_stmt(::pg_query::SelectStmt* value); ::pg_query::SelectStmt* unsafe_arena_release_select_stmt(); private: const ::pg_query::SelectStmt& _internal_select_stmt() const; ::pg_query::SelectStmt* _internal_mutable_select_stmt(); public: // .pg_query.SetOperationStmt set_operation_stmt = 137 [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; PROTOBUF_NODISCARD ::pg_query::SetOperationStmt* release_set_operation_stmt(); ::pg_query::SetOperationStmt* mutable_set_operation_stmt(); void set_allocated_set_operation_stmt(::pg_query::SetOperationStmt* value); void unsafe_arena_set_allocated_set_operation_stmt(::pg_query::SetOperationStmt* value); ::pg_query::SetOperationStmt* unsafe_arena_release_set_operation_stmt(); private: const ::pg_query::SetOperationStmt& _internal_set_operation_stmt() const; ::pg_query::SetOperationStmt* _internal_mutable_set_operation_stmt(); public: // .pg_query.ReturnStmt return_stmt = 138 [json_name = "ReturnStmt"]; bool has_return_stmt() const; private: bool _internal_has_return_stmt() const; public: void clear_return_stmt() ; const ::pg_query::ReturnStmt& return_stmt() const; PROTOBUF_NODISCARD ::pg_query::ReturnStmt* release_return_stmt(); ::pg_query::ReturnStmt* mutable_return_stmt(); void set_allocated_return_stmt(::pg_query::ReturnStmt* value); void unsafe_arena_set_allocated_return_stmt(::pg_query::ReturnStmt* value); ::pg_query::ReturnStmt* unsafe_arena_release_return_stmt(); private: const ::pg_query::ReturnStmt& _internal_return_stmt() const; ::pg_query::ReturnStmt* _internal_mutable_return_stmt(); public: // .pg_query.PLAssignStmt plassign_stmt = 139 [json_name = "PLAssignStmt"]; bool has_plassign_stmt() const; private: bool _internal_has_plassign_stmt() const; public: void clear_plassign_stmt() ; const ::pg_query::PLAssignStmt& plassign_stmt() const; PROTOBUF_NODISCARD ::pg_query::PLAssignStmt* release_plassign_stmt(); ::pg_query::PLAssignStmt* mutable_plassign_stmt(); void set_allocated_plassign_stmt(::pg_query::PLAssignStmt* value); void unsafe_arena_set_allocated_plassign_stmt(::pg_query::PLAssignStmt* value); ::pg_query::PLAssignStmt* unsafe_arena_release_plassign_stmt(); private: const ::pg_query::PLAssignStmt& _internal_plassign_stmt() const; ::pg_query::PLAssignStmt* _internal_mutable_plassign_stmt(); public: // .pg_query.CreateSchemaStmt create_schema_stmt = 140 [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; PROTOBUF_NODISCARD ::pg_query::CreateSchemaStmt* release_create_schema_stmt(); ::pg_query::CreateSchemaStmt* mutable_create_schema_stmt(); void set_allocated_create_schema_stmt(::pg_query::CreateSchemaStmt* value); void unsafe_arena_set_allocated_create_schema_stmt(::pg_query::CreateSchemaStmt* value); ::pg_query::CreateSchemaStmt* unsafe_arena_release_create_schema_stmt(); private: const ::pg_query::CreateSchemaStmt& _internal_create_schema_stmt() const; ::pg_query::CreateSchemaStmt* _internal_mutable_create_schema_stmt(); public: // .pg_query.AlterTableStmt alter_table_stmt = 141 [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; PROTOBUF_NODISCARD ::pg_query::AlterTableStmt* release_alter_table_stmt(); ::pg_query::AlterTableStmt* mutable_alter_table_stmt(); void set_allocated_alter_table_stmt(::pg_query::AlterTableStmt* value); void unsafe_arena_set_allocated_alter_table_stmt(::pg_query::AlterTableStmt* value); ::pg_query::AlterTableStmt* unsafe_arena_release_alter_table_stmt(); private: const ::pg_query::AlterTableStmt& _internal_alter_table_stmt() const; ::pg_query::AlterTableStmt* _internal_mutable_alter_table_stmt(); public: // .pg_query.ReplicaIdentityStmt replica_identity_stmt = 142 [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; PROTOBUF_NODISCARD ::pg_query::ReplicaIdentityStmt* release_replica_identity_stmt(); ::pg_query::ReplicaIdentityStmt* mutable_replica_identity_stmt(); void set_allocated_replica_identity_stmt(::pg_query::ReplicaIdentityStmt* value); void unsafe_arena_set_allocated_replica_identity_stmt(::pg_query::ReplicaIdentityStmt* value); ::pg_query::ReplicaIdentityStmt* unsafe_arena_release_replica_identity_stmt(); private: const ::pg_query::ReplicaIdentityStmt& _internal_replica_identity_stmt() const; ::pg_query::ReplicaIdentityStmt* _internal_mutable_replica_identity_stmt(); public: // .pg_query.AlterTableCmd alter_table_cmd = 143 [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; PROTOBUF_NODISCARD ::pg_query::AlterTableCmd* release_alter_table_cmd(); ::pg_query::AlterTableCmd* mutable_alter_table_cmd(); void set_allocated_alter_table_cmd(::pg_query::AlterTableCmd* value); void unsafe_arena_set_allocated_alter_table_cmd(::pg_query::AlterTableCmd* value); ::pg_query::AlterTableCmd* unsafe_arena_release_alter_table_cmd(); private: const ::pg_query::AlterTableCmd& _internal_alter_table_cmd() const; ::pg_query::AlterTableCmd* _internal_mutable_alter_table_cmd(); public: // .pg_query.AlterCollationStmt alter_collation_stmt = 144 [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; PROTOBUF_NODISCARD ::pg_query::AlterCollationStmt* release_alter_collation_stmt(); ::pg_query::AlterCollationStmt* mutable_alter_collation_stmt(); void set_allocated_alter_collation_stmt(::pg_query::AlterCollationStmt* value); void unsafe_arena_set_allocated_alter_collation_stmt(::pg_query::AlterCollationStmt* value); ::pg_query::AlterCollationStmt* unsafe_arena_release_alter_collation_stmt(); private: const ::pg_query::AlterCollationStmt& _internal_alter_collation_stmt() const; ::pg_query::AlterCollationStmt* _internal_mutable_alter_collation_stmt(); public: // .pg_query.AlterDomainStmt alter_domain_stmt = 145 [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; PROTOBUF_NODISCARD ::pg_query::AlterDomainStmt* release_alter_domain_stmt(); ::pg_query::AlterDomainStmt* mutable_alter_domain_stmt(); void set_allocated_alter_domain_stmt(::pg_query::AlterDomainStmt* value); void unsafe_arena_set_allocated_alter_domain_stmt(::pg_query::AlterDomainStmt* value); ::pg_query::AlterDomainStmt* unsafe_arena_release_alter_domain_stmt(); private: const ::pg_query::AlterDomainStmt& _internal_alter_domain_stmt() const; ::pg_query::AlterDomainStmt* _internal_mutable_alter_domain_stmt(); public: // .pg_query.GrantStmt grant_stmt = 146 [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; PROTOBUF_NODISCARD ::pg_query::GrantStmt* release_grant_stmt(); ::pg_query::GrantStmt* mutable_grant_stmt(); void set_allocated_grant_stmt(::pg_query::GrantStmt* value); void unsafe_arena_set_allocated_grant_stmt(::pg_query::GrantStmt* value); ::pg_query::GrantStmt* unsafe_arena_release_grant_stmt(); private: const ::pg_query::GrantStmt& _internal_grant_stmt() const; ::pg_query::GrantStmt* _internal_mutable_grant_stmt(); public: // .pg_query.ObjectWithArgs object_with_args = 147 [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; PROTOBUF_NODISCARD ::pg_query::ObjectWithArgs* release_object_with_args(); ::pg_query::ObjectWithArgs* mutable_object_with_args(); void set_allocated_object_with_args(::pg_query::ObjectWithArgs* value); void unsafe_arena_set_allocated_object_with_args(::pg_query::ObjectWithArgs* value); ::pg_query::ObjectWithArgs* unsafe_arena_release_object_with_args(); private: const ::pg_query::ObjectWithArgs& _internal_object_with_args() const; ::pg_query::ObjectWithArgs* _internal_mutable_object_with_args(); public: // .pg_query.AccessPriv access_priv = 148 [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; PROTOBUF_NODISCARD ::pg_query::AccessPriv* release_access_priv(); ::pg_query::AccessPriv* mutable_access_priv(); void set_allocated_access_priv(::pg_query::AccessPriv* value); void unsafe_arena_set_allocated_access_priv(::pg_query::AccessPriv* value); ::pg_query::AccessPriv* unsafe_arena_release_access_priv(); private: const ::pg_query::AccessPriv& _internal_access_priv() const; ::pg_query::AccessPriv* _internal_mutable_access_priv(); public: // .pg_query.GrantRoleStmt grant_role_stmt = 149 [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; PROTOBUF_NODISCARD ::pg_query::GrantRoleStmt* release_grant_role_stmt(); ::pg_query::GrantRoleStmt* mutable_grant_role_stmt(); void set_allocated_grant_role_stmt(::pg_query::GrantRoleStmt* value); void unsafe_arena_set_allocated_grant_role_stmt(::pg_query::GrantRoleStmt* value); ::pg_query::GrantRoleStmt* unsafe_arena_release_grant_role_stmt(); private: const ::pg_query::GrantRoleStmt& _internal_grant_role_stmt() const; ::pg_query::GrantRoleStmt* _internal_mutable_grant_role_stmt(); public: // .pg_query.AlterDefaultPrivilegesStmt alter_default_privileges_stmt = 150 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_alter_default_privileges_stmt(::pg_query::AlterDefaultPrivilegesStmt* value); ::pg_query::AlterDefaultPrivilegesStmt* unsafe_arena_release_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: // .pg_query.CopyStmt copy_stmt = 151 [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; PROTOBUF_NODISCARD ::pg_query::CopyStmt* release_copy_stmt(); ::pg_query::CopyStmt* mutable_copy_stmt(); void set_allocated_copy_stmt(::pg_query::CopyStmt* value); void unsafe_arena_set_allocated_copy_stmt(::pg_query::CopyStmt* value); ::pg_query::CopyStmt* unsafe_arena_release_copy_stmt(); private: const ::pg_query::CopyStmt& _internal_copy_stmt() const; ::pg_query::CopyStmt* _internal_mutable_copy_stmt(); public: // .pg_query.VariableSetStmt variable_set_stmt = 152 [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; PROTOBUF_NODISCARD ::pg_query::VariableSetStmt* release_variable_set_stmt(); ::pg_query::VariableSetStmt* mutable_variable_set_stmt(); void set_allocated_variable_set_stmt(::pg_query::VariableSetStmt* value); void unsafe_arena_set_allocated_variable_set_stmt(::pg_query::VariableSetStmt* value); ::pg_query::VariableSetStmt* unsafe_arena_release_variable_set_stmt(); private: const ::pg_query::VariableSetStmt& _internal_variable_set_stmt() const; ::pg_query::VariableSetStmt* _internal_mutable_variable_set_stmt(); public: // .pg_query.VariableShowStmt variable_show_stmt = 153 [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; PROTOBUF_NODISCARD ::pg_query::VariableShowStmt* release_variable_show_stmt(); ::pg_query::VariableShowStmt* mutable_variable_show_stmt(); void set_allocated_variable_show_stmt(::pg_query::VariableShowStmt* value); void unsafe_arena_set_allocated_variable_show_stmt(::pg_query::VariableShowStmt* value); ::pg_query::VariableShowStmt* unsafe_arena_release_variable_show_stmt(); private: const ::pg_query::VariableShowStmt& _internal_variable_show_stmt() const; ::pg_query::VariableShowStmt* _internal_mutable_variable_show_stmt(); public: // .pg_query.CreateStmt create_stmt = 154 [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; PROTOBUF_NODISCARD ::pg_query::CreateStmt* release_create_stmt(); ::pg_query::CreateStmt* mutable_create_stmt(); void set_allocated_create_stmt(::pg_query::CreateStmt* value); void unsafe_arena_set_allocated_create_stmt(::pg_query::CreateStmt* value); ::pg_query::CreateStmt* unsafe_arena_release_create_stmt(); private: const ::pg_query::CreateStmt& _internal_create_stmt() const; ::pg_query::CreateStmt* _internal_mutable_create_stmt(); public: // .pg_query.Constraint constraint = 155 [json_name = "Constraint"]; bool has_constraint() const; private: bool _internal_has_constraint() const; public: void clear_constraint() ; const ::pg_query::Constraint& constraint() const; PROTOBUF_NODISCARD ::pg_query::Constraint* release_constraint(); ::pg_query::Constraint* mutable_constraint(); void set_allocated_constraint(::pg_query::Constraint* value); void unsafe_arena_set_allocated_constraint(::pg_query::Constraint* value); ::pg_query::Constraint* unsafe_arena_release_constraint(); private: const ::pg_query::Constraint& _internal_constraint() const; ::pg_query::Constraint* _internal_mutable_constraint(); public: // .pg_query.CreateTableSpaceStmt create_table_space_stmt = 156 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_create_table_space_stmt(::pg_query::CreateTableSpaceStmt* value); ::pg_query::CreateTableSpaceStmt* unsafe_arena_release_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: // .pg_query.DropTableSpaceStmt drop_table_space_stmt = 157 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_drop_table_space_stmt(::pg_query::DropTableSpaceStmt* value); ::pg_query::DropTableSpaceStmt* unsafe_arena_release_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: // .pg_query.AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 158 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_alter_table_space_options_stmt(::pg_query::AlterTableSpaceOptionsStmt* value); ::pg_query::AlterTableSpaceOptionsStmt* unsafe_arena_release_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: // .pg_query.AlterTableMoveAllStmt alter_table_move_all_stmt = 159 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_alter_table_move_all_stmt(::pg_query::AlterTableMoveAllStmt* value); ::pg_query::AlterTableMoveAllStmt* unsafe_arena_release_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: // .pg_query.CreateExtensionStmt create_extension_stmt = 160 [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; PROTOBUF_NODISCARD ::pg_query::CreateExtensionStmt* release_create_extension_stmt(); ::pg_query::CreateExtensionStmt* mutable_create_extension_stmt(); void set_allocated_create_extension_stmt(::pg_query::CreateExtensionStmt* value); void unsafe_arena_set_allocated_create_extension_stmt(::pg_query::CreateExtensionStmt* value); ::pg_query::CreateExtensionStmt* unsafe_arena_release_create_extension_stmt(); private: const ::pg_query::CreateExtensionStmt& _internal_create_extension_stmt() const; ::pg_query::CreateExtensionStmt* _internal_mutable_create_extension_stmt(); public: // .pg_query.AlterExtensionStmt alter_extension_stmt = 161 [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; PROTOBUF_NODISCARD ::pg_query::AlterExtensionStmt* release_alter_extension_stmt(); ::pg_query::AlterExtensionStmt* mutable_alter_extension_stmt(); void set_allocated_alter_extension_stmt(::pg_query::AlterExtensionStmt* value); void unsafe_arena_set_allocated_alter_extension_stmt(::pg_query::AlterExtensionStmt* value); ::pg_query::AlterExtensionStmt* unsafe_arena_release_alter_extension_stmt(); private: const ::pg_query::AlterExtensionStmt& _internal_alter_extension_stmt() const; ::pg_query::AlterExtensionStmt* _internal_mutable_alter_extension_stmt(); public: // .pg_query.AlterExtensionContentsStmt alter_extension_contents_stmt = 162 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_alter_extension_contents_stmt(::pg_query::AlterExtensionContentsStmt* value); ::pg_query::AlterExtensionContentsStmt* unsafe_arena_release_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: // .pg_query.CreateFdwStmt create_fdw_stmt = 163 [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; PROTOBUF_NODISCARD ::pg_query::CreateFdwStmt* release_create_fdw_stmt(); ::pg_query::CreateFdwStmt* mutable_create_fdw_stmt(); void set_allocated_create_fdw_stmt(::pg_query::CreateFdwStmt* value); void unsafe_arena_set_allocated_create_fdw_stmt(::pg_query::CreateFdwStmt* value); ::pg_query::CreateFdwStmt* unsafe_arena_release_create_fdw_stmt(); private: const ::pg_query::CreateFdwStmt& _internal_create_fdw_stmt() const; ::pg_query::CreateFdwStmt* _internal_mutable_create_fdw_stmt(); public: // .pg_query.AlterFdwStmt alter_fdw_stmt = 164 [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; PROTOBUF_NODISCARD ::pg_query::AlterFdwStmt* release_alter_fdw_stmt(); ::pg_query::AlterFdwStmt* mutable_alter_fdw_stmt(); void set_allocated_alter_fdw_stmt(::pg_query::AlterFdwStmt* value); void unsafe_arena_set_allocated_alter_fdw_stmt(::pg_query::AlterFdwStmt* value); ::pg_query::AlterFdwStmt* unsafe_arena_release_alter_fdw_stmt(); private: const ::pg_query::AlterFdwStmt& _internal_alter_fdw_stmt() const; ::pg_query::AlterFdwStmt* _internal_mutable_alter_fdw_stmt(); public: // .pg_query.CreateForeignServerStmt create_foreign_server_stmt = 165 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_create_foreign_server_stmt(::pg_query::CreateForeignServerStmt* value); ::pg_query::CreateForeignServerStmt* unsafe_arena_release_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: // .pg_query.AlterForeignServerStmt alter_foreign_server_stmt = 166 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_alter_foreign_server_stmt(::pg_query::AlterForeignServerStmt* value); ::pg_query::AlterForeignServerStmt* unsafe_arena_release_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: // .pg_query.CreateForeignTableStmt create_foreign_table_stmt = 167 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_create_foreign_table_stmt(::pg_query::CreateForeignTableStmt* value); ::pg_query::CreateForeignTableStmt* unsafe_arena_release_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: // .pg_query.CreateUserMappingStmt create_user_mapping_stmt = 168 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_create_user_mapping_stmt(::pg_query::CreateUserMappingStmt* value); ::pg_query::CreateUserMappingStmt* unsafe_arena_release_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: // .pg_query.AlterUserMappingStmt alter_user_mapping_stmt = 169 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_alter_user_mapping_stmt(::pg_query::AlterUserMappingStmt* value); ::pg_query::AlterUserMappingStmt* unsafe_arena_release_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: // .pg_query.DropUserMappingStmt drop_user_mapping_stmt = 170 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_drop_user_mapping_stmt(::pg_query::DropUserMappingStmt* value); ::pg_query::DropUserMappingStmt* unsafe_arena_release_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: // .pg_query.ImportForeignSchemaStmt import_foreign_schema_stmt = 171 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_import_foreign_schema_stmt(::pg_query::ImportForeignSchemaStmt* value); ::pg_query::ImportForeignSchemaStmt* unsafe_arena_release_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: // .pg_query.CreatePolicyStmt create_policy_stmt = 172 [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; PROTOBUF_NODISCARD ::pg_query::CreatePolicyStmt* release_create_policy_stmt(); ::pg_query::CreatePolicyStmt* mutable_create_policy_stmt(); void set_allocated_create_policy_stmt(::pg_query::CreatePolicyStmt* value); void unsafe_arena_set_allocated_create_policy_stmt(::pg_query::CreatePolicyStmt* value); ::pg_query::CreatePolicyStmt* unsafe_arena_release_create_policy_stmt(); private: const ::pg_query::CreatePolicyStmt& _internal_create_policy_stmt() const; ::pg_query::CreatePolicyStmt* _internal_mutable_create_policy_stmt(); public: // .pg_query.AlterPolicyStmt alter_policy_stmt = 173 [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; PROTOBUF_NODISCARD ::pg_query::AlterPolicyStmt* release_alter_policy_stmt(); ::pg_query::AlterPolicyStmt* mutable_alter_policy_stmt(); void set_allocated_alter_policy_stmt(::pg_query::AlterPolicyStmt* value); void unsafe_arena_set_allocated_alter_policy_stmt(::pg_query::AlterPolicyStmt* value); ::pg_query::AlterPolicyStmt* unsafe_arena_release_alter_policy_stmt(); private: const ::pg_query::AlterPolicyStmt& _internal_alter_policy_stmt() const; ::pg_query::AlterPolicyStmt* _internal_mutable_alter_policy_stmt(); public: // .pg_query.CreateAmStmt create_am_stmt = 174 [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; PROTOBUF_NODISCARD ::pg_query::CreateAmStmt* release_create_am_stmt(); ::pg_query::CreateAmStmt* mutable_create_am_stmt(); void set_allocated_create_am_stmt(::pg_query::CreateAmStmt* value); void unsafe_arena_set_allocated_create_am_stmt(::pg_query::CreateAmStmt* value); ::pg_query::CreateAmStmt* unsafe_arena_release_create_am_stmt(); private: const ::pg_query::CreateAmStmt& _internal_create_am_stmt() const; ::pg_query::CreateAmStmt* _internal_mutable_create_am_stmt(); public: // .pg_query.CreateTrigStmt create_trig_stmt = 175 [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; PROTOBUF_NODISCARD ::pg_query::CreateTrigStmt* release_create_trig_stmt(); ::pg_query::CreateTrigStmt* mutable_create_trig_stmt(); void set_allocated_create_trig_stmt(::pg_query::CreateTrigStmt* value); void unsafe_arena_set_allocated_create_trig_stmt(::pg_query::CreateTrigStmt* value); ::pg_query::CreateTrigStmt* unsafe_arena_release_create_trig_stmt(); private: const ::pg_query::CreateTrigStmt& _internal_create_trig_stmt() const; ::pg_query::CreateTrigStmt* _internal_mutable_create_trig_stmt(); public: // .pg_query.CreateEventTrigStmt create_event_trig_stmt = 176 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_create_event_trig_stmt(::pg_query::CreateEventTrigStmt* value); ::pg_query::CreateEventTrigStmt* unsafe_arena_release_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: // .pg_query.AlterEventTrigStmt alter_event_trig_stmt = 177 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_alter_event_trig_stmt(::pg_query::AlterEventTrigStmt* value); ::pg_query::AlterEventTrigStmt* unsafe_arena_release_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: // .pg_query.CreatePLangStmt create_plang_stmt = 178 [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; PROTOBUF_NODISCARD ::pg_query::CreatePLangStmt* release_create_plang_stmt(); ::pg_query::CreatePLangStmt* mutable_create_plang_stmt(); void set_allocated_create_plang_stmt(::pg_query::CreatePLangStmt* value); void unsafe_arena_set_allocated_create_plang_stmt(::pg_query::CreatePLangStmt* value); ::pg_query::CreatePLangStmt* unsafe_arena_release_create_plang_stmt(); private: const ::pg_query::CreatePLangStmt& _internal_create_plang_stmt() const; ::pg_query::CreatePLangStmt* _internal_mutable_create_plang_stmt(); public: // .pg_query.CreateRoleStmt create_role_stmt = 179 [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; PROTOBUF_NODISCARD ::pg_query::CreateRoleStmt* release_create_role_stmt(); ::pg_query::CreateRoleStmt* mutable_create_role_stmt(); void set_allocated_create_role_stmt(::pg_query::CreateRoleStmt* value); void unsafe_arena_set_allocated_create_role_stmt(::pg_query::CreateRoleStmt* value); ::pg_query::CreateRoleStmt* unsafe_arena_release_create_role_stmt(); private: const ::pg_query::CreateRoleStmt& _internal_create_role_stmt() const; ::pg_query::CreateRoleStmt* _internal_mutable_create_role_stmt(); public: // .pg_query.AlterRoleStmt alter_role_stmt = 180 [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; PROTOBUF_NODISCARD ::pg_query::AlterRoleStmt* release_alter_role_stmt(); ::pg_query::AlterRoleStmt* mutable_alter_role_stmt(); void set_allocated_alter_role_stmt(::pg_query::AlterRoleStmt* value); void unsafe_arena_set_allocated_alter_role_stmt(::pg_query::AlterRoleStmt* value); ::pg_query::AlterRoleStmt* unsafe_arena_release_alter_role_stmt(); private: const ::pg_query::AlterRoleStmt& _internal_alter_role_stmt() const; ::pg_query::AlterRoleStmt* _internal_mutable_alter_role_stmt(); public: // .pg_query.AlterRoleSetStmt alter_role_set_stmt = 181 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_alter_role_set_stmt(::pg_query::AlterRoleSetStmt* value); ::pg_query::AlterRoleSetStmt* unsafe_arena_release_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: // .pg_query.DropRoleStmt drop_role_stmt = 182 [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; PROTOBUF_NODISCARD ::pg_query::DropRoleStmt* release_drop_role_stmt(); ::pg_query::DropRoleStmt* mutable_drop_role_stmt(); void set_allocated_drop_role_stmt(::pg_query::DropRoleStmt* value); void unsafe_arena_set_allocated_drop_role_stmt(::pg_query::DropRoleStmt* value); ::pg_query::DropRoleStmt* unsafe_arena_release_drop_role_stmt(); private: const ::pg_query::DropRoleStmt& _internal_drop_role_stmt() const; ::pg_query::DropRoleStmt* _internal_mutable_drop_role_stmt(); public: // .pg_query.CreateSeqStmt create_seq_stmt = 183 [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; PROTOBUF_NODISCARD ::pg_query::CreateSeqStmt* release_create_seq_stmt(); ::pg_query::CreateSeqStmt* mutable_create_seq_stmt(); void set_allocated_create_seq_stmt(::pg_query::CreateSeqStmt* value); void unsafe_arena_set_allocated_create_seq_stmt(::pg_query::CreateSeqStmt* value); ::pg_query::CreateSeqStmt* unsafe_arena_release_create_seq_stmt(); private: const ::pg_query::CreateSeqStmt& _internal_create_seq_stmt() const; ::pg_query::CreateSeqStmt* _internal_mutable_create_seq_stmt(); public: // .pg_query.AlterSeqStmt alter_seq_stmt = 184 [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; PROTOBUF_NODISCARD ::pg_query::AlterSeqStmt* release_alter_seq_stmt(); ::pg_query::AlterSeqStmt* mutable_alter_seq_stmt(); void set_allocated_alter_seq_stmt(::pg_query::AlterSeqStmt* value); void unsafe_arena_set_allocated_alter_seq_stmt(::pg_query::AlterSeqStmt* value); ::pg_query::AlterSeqStmt* unsafe_arena_release_alter_seq_stmt(); private: const ::pg_query::AlterSeqStmt& _internal_alter_seq_stmt() const; ::pg_query::AlterSeqStmt* _internal_mutable_alter_seq_stmt(); public: // .pg_query.DefineStmt define_stmt = 185 [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; PROTOBUF_NODISCARD ::pg_query::DefineStmt* release_define_stmt(); ::pg_query::DefineStmt* mutable_define_stmt(); void set_allocated_define_stmt(::pg_query::DefineStmt* value); void unsafe_arena_set_allocated_define_stmt(::pg_query::DefineStmt* value); ::pg_query::DefineStmt* unsafe_arena_release_define_stmt(); private: const ::pg_query::DefineStmt& _internal_define_stmt() const; ::pg_query::DefineStmt* _internal_mutable_define_stmt(); public: // .pg_query.CreateDomainStmt create_domain_stmt = 186 [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; PROTOBUF_NODISCARD ::pg_query::CreateDomainStmt* release_create_domain_stmt(); ::pg_query::CreateDomainStmt* mutable_create_domain_stmt(); void set_allocated_create_domain_stmt(::pg_query::CreateDomainStmt* value); void unsafe_arena_set_allocated_create_domain_stmt(::pg_query::CreateDomainStmt* value); ::pg_query::CreateDomainStmt* unsafe_arena_release_create_domain_stmt(); private: const ::pg_query::CreateDomainStmt& _internal_create_domain_stmt() const; ::pg_query::CreateDomainStmt* _internal_mutable_create_domain_stmt(); public: // .pg_query.CreateOpClassStmt create_op_class_stmt = 187 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_create_op_class_stmt(::pg_query::CreateOpClassStmt* value); ::pg_query::CreateOpClassStmt* unsafe_arena_release_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: // .pg_query.CreateOpClassItem create_op_class_item = 188 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_create_op_class_item(::pg_query::CreateOpClassItem* value); ::pg_query::CreateOpClassItem* unsafe_arena_release_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: // .pg_query.CreateOpFamilyStmt create_op_family_stmt = 189 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_create_op_family_stmt(::pg_query::CreateOpFamilyStmt* value); ::pg_query::CreateOpFamilyStmt* unsafe_arena_release_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: // .pg_query.AlterOpFamilyStmt alter_op_family_stmt = 190 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_alter_op_family_stmt(::pg_query::AlterOpFamilyStmt* value); ::pg_query::AlterOpFamilyStmt* unsafe_arena_release_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: // .pg_query.DropStmt drop_stmt = 191 [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; PROTOBUF_NODISCARD ::pg_query::DropStmt* release_drop_stmt(); ::pg_query::DropStmt* mutable_drop_stmt(); void set_allocated_drop_stmt(::pg_query::DropStmt* value); void unsafe_arena_set_allocated_drop_stmt(::pg_query::DropStmt* value); ::pg_query::DropStmt* unsafe_arena_release_drop_stmt(); private: const ::pg_query::DropStmt& _internal_drop_stmt() const; ::pg_query::DropStmt* _internal_mutable_drop_stmt(); public: // .pg_query.TruncateStmt truncate_stmt = 192 [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; PROTOBUF_NODISCARD ::pg_query::TruncateStmt* release_truncate_stmt(); ::pg_query::TruncateStmt* mutable_truncate_stmt(); void set_allocated_truncate_stmt(::pg_query::TruncateStmt* value); void unsafe_arena_set_allocated_truncate_stmt(::pg_query::TruncateStmt* value); ::pg_query::TruncateStmt* unsafe_arena_release_truncate_stmt(); private: const ::pg_query::TruncateStmt& _internal_truncate_stmt() const; ::pg_query::TruncateStmt* _internal_mutable_truncate_stmt(); public: // .pg_query.CommentStmt comment_stmt = 193 [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; PROTOBUF_NODISCARD ::pg_query::CommentStmt* release_comment_stmt(); ::pg_query::CommentStmt* mutable_comment_stmt(); void set_allocated_comment_stmt(::pg_query::CommentStmt* value); void unsafe_arena_set_allocated_comment_stmt(::pg_query::CommentStmt* value); ::pg_query::CommentStmt* unsafe_arena_release_comment_stmt(); private: const ::pg_query::CommentStmt& _internal_comment_stmt() const; ::pg_query::CommentStmt* _internal_mutable_comment_stmt(); public: // .pg_query.SecLabelStmt sec_label_stmt = 194 [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; PROTOBUF_NODISCARD ::pg_query::SecLabelStmt* release_sec_label_stmt(); ::pg_query::SecLabelStmt* mutable_sec_label_stmt(); void set_allocated_sec_label_stmt(::pg_query::SecLabelStmt* value); void unsafe_arena_set_allocated_sec_label_stmt(::pg_query::SecLabelStmt* value); ::pg_query::SecLabelStmt* unsafe_arena_release_sec_label_stmt(); private: const ::pg_query::SecLabelStmt& _internal_sec_label_stmt() const; ::pg_query::SecLabelStmt* _internal_mutable_sec_label_stmt(); public: // .pg_query.DeclareCursorStmt declare_cursor_stmt = 195 [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; PROTOBUF_NODISCARD ::pg_query::DeclareCursorStmt* release_declare_cursor_stmt(); ::pg_query::DeclareCursorStmt* mutable_declare_cursor_stmt(); void set_allocated_declare_cursor_stmt(::pg_query::DeclareCursorStmt* value); void unsafe_arena_set_allocated_declare_cursor_stmt(::pg_query::DeclareCursorStmt* value); ::pg_query::DeclareCursorStmt* unsafe_arena_release_declare_cursor_stmt(); private: const ::pg_query::DeclareCursorStmt& _internal_declare_cursor_stmt() const; ::pg_query::DeclareCursorStmt* _internal_mutable_declare_cursor_stmt(); public: // .pg_query.ClosePortalStmt close_portal_stmt = 196 [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; PROTOBUF_NODISCARD ::pg_query::ClosePortalStmt* release_close_portal_stmt(); ::pg_query::ClosePortalStmt* mutable_close_portal_stmt(); void set_allocated_close_portal_stmt(::pg_query::ClosePortalStmt* value); void unsafe_arena_set_allocated_close_portal_stmt(::pg_query::ClosePortalStmt* value); ::pg_query::ClosePortalStmt* unsafe_arena_release_close_portal_stmt(); private: const ::pg_query::ClosePortalStmt& _internal_close_portal_stmt() const; ::pg_query::ClosePortalStmt* _internal_mutable_close_portal_stmt(); public: // .pg_query.FetchStmt fetch_stmt = 197 [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; PROTOBUF_NODISCARD ::pg_query::FetchStmt* release_fetch_stmt(); ::pg_query::FetchStmt* mutable_fetch_stmt(); void set_allocated_fetch_stmt(::pg_query::FetchStmt* value); void unsafe_arena_set_allocated_fetch_stmt(::pg_query::FetchStmt* value); ::pg_query::FetchStmt* unsafe_arena_release_fetch_stmt(); private: const ::pg_query::FetchStmt& _internal_fetch_stmt() const; ::pg_query::FetchStmt* _internal_mutable_fetch_stmt(); public: // .pg_query.IndexStmt index_stmt = 198 [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; PROTOBUF_NODISCARD ::pg_query::IndexStmt* release_index_stmt(); ::pg_query::IndexStmt* mutable_index_stmt(); void set_allocated_index_stmt(::pg_query::IndexStmt* value); void unsafe_arena_set_allocated_index_stmt(::pg_query::IndexStmt* value); ::pg_query::IndexStmt* unsafe_arena_release_index_stmt(); private: const ::pg_query::IndexStmt& _internal_index_stmt() const; ::pg_query::IndexStmt* _internal_mutable_index_stmt(); public: // .pg_query.CreateStatsStmt create_stats_stmt = 199 [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; PROTOBUF_NODISCARD ::pg_query::CreateStatsStmt* release_create_stats_stmt(); ::pg_query::CreateStatsStmt* mutable_create_stats_stmt(); void set_allocated_create_stats_stmt(::pg_query::CreateStatsStmt* value); void unsafe_arena_set_allocated_create_stats_stmt(::pg_query::CreateStatsStmt* value); ::pg_query::CreateStatsStmt* unsafe_arena_release_create_stats_stmt(); private: const ::pg_query::CreateStatsStmt& _internal_create_stats_stmt() const; ::pg_query::CreateStatsStmt* _internal_mutable_create_stats_stmt(); public: // .pg_query.StatsElem stats_elem = 200 [json_name = "StatsElem"]; bool has_stats_elem() const; private: bool _internal_has_stats_elem() const; public: void clear_stats_elem() ; const ::pg_query::StatsElem& stats_elem() const; PROTOBUF_NODISCARD ::pg_query::StatsElem* release_stats_elem(); ::pg_query::StatsElem* mutable_stats_elem(); void set_allocated_stats_elem(::pg_query::StatsElem* value); void unsafe_arena_set_allocated_stats_elem(::pg_query::StatsElem* value); ::pg_query::StatsElem* unsafe_arena_release_stats_elem(); private: const ::pg_query::StatsElem& _internal_stats_elem() const; ::pg_query::StatsElem* _internal_mutable_stats_elem(); public: // .pg_query.AlterStatsStmt alter_stats_stmt = 201 [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; PROTOBUF_NODISCARD ::pg_query::AlterStatsStmt* release_alter_stats_stmt(); ::pg_query::AlterStatsStmt* mutable_alter_stats_stmt(); void set_allocated_alter_stats_stmt(::pg_query::AlterStatsStmt* value); void unsafe_arena_set_allocated_alter_stats_stmt(::pg_query::AlterStatsStmt* value); ::pg_query::AlterStatsStmt* unsafe_arena_release_alter_stats_stmt(); private: const ::pg_query::AlterStatsStmt& _internal_alter_stats_stmt() const; ::pg_query::AlterStatsStmt* _internal_mutable_alter_stats_stmt(); public: // .pg_query.CreateFunctionStmt create_function_stmt = 202 [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; PROTOBUF_NODISCARD ::pg_query::CreateFunctionStmt* release_create_function_stmt(); ::pg_query::CreateFunctionStmt* mutable_create_function_stmt(); void set_allocated_create_function_stmt(::pg_query::CreateFunctionStmt* value); void unsafe_arena_set_allocated_create_function_stmt(::pg_query::CreateFunctionStmt* value); ::pg_query::CreateFunctionStmt* unsafe_arena_release_create_function_stmt(); private: const ::pg_query::CreateFunctionStmt& _internal_create_function_stmt() const; ::pg_query::CreateFunctionStmt* _internal_mutable_create_function_stmt(); public: // .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; PROTOBUF_NODISCARD ::pg_query::FunctionParameter* release_function_parameter(); ::pg_query::FunctionParameter* mutable_function_parameter(); void set_allocated_function_parameter(::pg_query::FunctionParameter* value); void unsafe_arena_set_allocated_function_parameter(::pg_query::FunctionParameter* value); ::pg_query::FunctionParameter* unsafe_arena_release_function_parameter(); private: const ::pg_query::FunctionParameter& _internal_function_parameter() const; ::pg_query::FunctionParameter* _internal_mutable_function_parameter(); public: // .pg_query.AlterFunctionStmt alter_function_stmt = 204 [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; PROTOBUF_NODISCARD ::pg_query::AlterFunctionStmt* release_alter_function_stmt(); ::pg_query::AlterFunctionStmt* mutable_alter_function_stmt(); void set_allocated_alter_function_stmt(::pg_query::AlterFunctionStmt* value); void unsafe_arena_set_allocated_alter_function_stmt(::pg_query::AlterFunctionStmt* value); ::pg_query::AlterFunctionStmt* unsafe_arena_release_alter_function_stmt(); private: const ::pg_query::AlterFunctionStmt& _internal_alter_function_stmt() const; ::pg_query::AlterFunctionStmt* _internal_mutable_alter_function_stmt(); public: // .pg_query.DoStmt do_stmt = 205 [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; PROTOBUF_NODISCARD ::pg_query::DoStmt* release_do_stmt(); ::pg_query::DoStmt* mutable_do_stmt(); void set_allocated_do_stmt(::pg_query::DoStmt* value); void unsafe_arena_set_allocated_do_stmt(::pg_query::DoStmt* value); ::pg_query::DoStmt* unsafe_arena_release_do_stmt(); private: const ::pg_query::DoStmt& _internal_do_stmt() const; ::pg_query::DoStmt* _internal_mutable_do_stmt(); public: // .pg_query.InlineCodeBlock inline_code_block = 206 [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; PROTOBUF_NODISCARD ::pg_query::InlineCodeBlock* release_inline_code_block(); ::pg_query::InlineCodeBlock* mutable_inline_code_block(); void set_allocated_inline_code_block(::pg_query::InlineCodeBlock* value); void unsafe_arena_set_allocated_inline_code_block(::pg_query::InlineCodeBlock* value); ::pg_query::InlineCodeBlock* unsafe_arena_release_inline_code_block(); private: const ::pg_query::InlineCodeBlock& _internal_inline_code_block() const; ::pg_query::InlineCodeBlock* _internal_mutable_inline_code_block(); public: // .pg_query.CallStmt call_stmt = 207 [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; PROTOBUF_NODISCARD ::pg_query::CallStmt* release_call_stmt(); ::pg_query::CallStmt* mutable_call_stmt(); void set_allocated_call_stmt(::pg_query::CallStmt* value); void unsafe_arena_set_allocated_call_stmt(::pg_query::CallStmt* value); ::pg_query::CallStmt* unsafe_arena_release_call_stmt(); private: const ::pg_query::CallStmt& _internal_call_stmt() const; ::pg_query::CallStmt* _internal_mutable_call_stmt(); public: // .pg_query.CallContext call_context = 208 [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; PROTOBUF_NODISCARD ::pg_query::CallContext* release_call_context(); ::pg_query::CallContext* mutable_call_context(); void set_allocated_call_context(::pg_query::CallContext* value); void unsafe_arena_set_allocated_call_context(::pg_query::CallContext* value); ::pg_query::CallContext* unsafe_arena_release_call_context(); private: const ::pg_query::CallContext& _internal_call_context() const; ::pg_query::CallContext* _internal_mutable_call_context(); public: // .pg_query.RenameStmt rename_stmt = 209 [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; PROTOBUF_NODISCARD ::pg_query::RenameStmt* release_rename_stmt(); ::pg_query::RenameStmt* mutable_rename_stmt(); void set_allocated_rename_stmt(::pg_query::RenameStmt* value); void unsafe_arena_set_allocated_rename_stmt(::pg_query::RenameStmt* value); ::pg_query::RenameStmt* unsafe_arena_release_rename_stmt(); private: const ::pg_query::RenameStmt& _internal_rename_stmt() const; ::pg_query::RenameStmt* _internal_mutable_rename_stmt(); public: // .pg_query.AlterObjectDependsStmt alter_object_depends_stmt = 210 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_alter_object_depends_stmt(::pg_query::AlterObjectDependsStmt* value); ::pg_query::AlterObjectDependsStmt* unsafe_arena_release_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: // .pg_query.AlterObjectSchemaStmt alter_object_schema_stmt = 211 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_alter_object_schema_stmt(::pg_query::AlterObjectSchemaStmt* value); ::pg_query::AlterObjectSchemaStmt* unsafe_arena_release_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: // .pg_query.AlterOwnerStmt alter_owner_stmt = 212 [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; PROTOBUF_NODISCARD ::pg_query::AlterOwnerStmt* release_alter_owner_stmt(); ::pg_query::AlterOwnerStmt* mutable_alter_owner_stmt(); void set_allocated_alter_owner_stmt(::pg_query::AlterOwnerStmt* value); void unsafe_arena_set_allocated_alter_owner_stmt(::pg_query::AlterOwnerStmt* value); ::pg_query::AlterOwnerStmt* unsafe_arena_release_alter_owner_stmt(); private: const ::pg_query::AlterOwnerStmt& _internal_alter_owner_stmt() const; ::pg_query::AlterOwnerStmt* _internal_mutable_alter_owner_stmt(); public: // .pg_query.AlterOperatorStmt alter_operator_stmt = 213 [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; PROTOBUF_NODISCARD ::pg_query::AlterOperatorStmt* release_alter_operator_stmt(); ::pg_query::AlterOperatorStmt* mutable_alter_operator_stmt(); void set_allocated_alter_operator_stmt(::pg_query::AlterOperatorStmt* value); void unsafe_arena_set_allocated_alter_operator_stmt(::pg_query::AlterOperatorStmt* value); ::pg_query::AlterOperatorStmt* unsafe_arena_release_alter_operator_stmt(); private: const ::pg_query::AlterOperatorStmt& _internal_alter_operator_stmt() const; ::pg_query::AlterOperatorStmt* _internal_mutable_alter_operator_stmt(); public: // .pg_query.AlterTypeStmt alter_type_stmt = 214 [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; PROTOBUF_NODISCARD ::pg_query::AlterTypeStmt* release_alter_type_stmt(); ::pg_query::AlterTypeStmt* mutable_alter_type_stmt(); void set_allocated_alter_type_stmt(::pg_query::AlterTypeStmt* value); void unsafe_arena_set_allocated_alter_type_stmt(::pg_query::AlterTypeStmt* value); ::pg_query::AlterTypeStmt* unsafe_arena_release_alter_type_stmt(); private: const ::pg_query::AlterTypeStmt& _internal_alter_type_stmt() const; ::pg_query::AlterTypeStmt* _internal_mutable_alter_type_stmt(); public: // .pg_query.RuleStmt rule_stmt = 215 [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; PROTOBUF_NODISCARD ::pg_query::RuleStmt* release_rule_stmt(); ::pg_query::RuleStmt* mutable_rule_stmt(); void set_allocated_rule_stmt(::pg_query::RuleStmt* value); void unsafe_arena_set_allocated_rule_stmt(::pg_query::RuleStmt* value); ::pg_query::RuleStmt* unsafe_arena_release_rule_stmt(); private: const ::pg_query::RuleStmt& _internal_rule_stmt() const; ::pg_query::RuleStmt* _internal_mutable_rule_stmt(); public: // .pg_query.NotifyStmt notify_stmt = 216 [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; PROTOBUF_NODISCARD ::pg_query::NotifyStmt* release_notify_stmt(); ::pg_query::NotifyStmt* mutable_notify_stmt(); void set_allocated_notify_stmt(::pg_query::NotifyStmt* value); void unsafe_arena_set_allocated_notify_stmt(::pg_query::NotifyStmt* value); ::pg_query::NotifyStmt* unsafe_arena_release_notify_stmt(); private: const ::pg_query::NotifyStmt& _internal_notify_stmt() const; ::pg_query::NotifyStmt* _internal_mutable_notify_stmt(); public: // .pg_query.ListenStmt listen_stmt = 217 [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; PROTOBUF_NODISCARD ::pg_query::ListenStmt* release_listen_stmt(); ::pg_query::ListenStmt* mutable_listen_stmt(); void set_allocated_listen_stmt(::pg_query::ListenStmt* value); void unsafe_arena_set_allocated_listen_stmt(::pg_query::ListenStmt* value); ::pg_query::ListenStmt* unsafe_arena_release_listen_stmt(); private: const ::pg_query::ListenStmt& _internal_listen_stmt() const; ::pg_query::ListenStmt* _internal_mutable_listen_stmt(); public: // .pg_query.UnlistenStmt unlisten_stmt = 218 [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; PROTOBUF_NODISCARD ::pg_query::UnlistenStmt* release_unlisten_stmt(); ::pg_query::UnlistenStmt* mutable_unlisten_stmt(); void set_allocated_unlisten_stmt(::pg_query::UnlistenStmt* value); void unsafe_arena_set_allocated_unlisten_stmt(::pg_query::UnlistenStmt* value); ::pg_query::UnlistenStmt* unsafe_arena_release_unlisten_stmt(); private: const ::pg_query::UnlistenStmt& _internal_unlisten_stmt() const; ::pg_query::UnlistenStmt* _internal_mutable_unlisten_stmt(); public: // .pg_query.TransactionStmt transaction_stmt = 219 [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; PROTOBUF_NODISCARD ::pg_query::TransactionStmt* release_transaction_stmt(); ::pg_query::TransactionStmt* mutable_transaction_stmt(); void set_allocated_transaction_stmt(::pg_query::TransactionStmt* value); void unsafe_arena_set_allocated_transaction_stmt(::pg_query::TransactionStmt* value); ::pg_query::TransactionStmt* unsafe_arena_release_transaction_stmt(); private: const ::pg_query::TransactionStmt& _internal_transaction_stmt() const; ::pg_query::TransactionStmt* _internal_mutable_transaction_stmt(); public: // .pg_query.CompositeTypeStmt composite_type_stmt = 220 [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; PROTOBUF_NODISCARD ::pg_query::CompositeTypeStmt* release_composite_type_stmt(); ::pg_query::CompositeTypeStmt* mutable_composite_type_stmt(); void set_allocated_composite_type_stmt(::pg_query::CompositeTypeStmt* value); void unsafe_arena_set_allocated_composite_type_stmt(::pg_query::CompositeTypeStmt* value); ::pg_query::CompositeTypeStmt* unsafe_arena_release_composite_type_stmt(); private: const ::pg_query::CompositeTypeStmt& _internal_composite_type_stmt() const; ::pg_query::CompositeTypeStmt* _internal_mutable_composite_type_stmt(); public: // .pg_query.CreateEnumStmt create_enum_stmt = 221 [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; PROTOBUF_NODISCARD ::pg_query::CreateEnumStmt* release_create_enum_stmt(); ::pg_query::CreateEnumStmt* mutable_create_enum_stmt(); void set_allocated_create_enum_stmt(::pg_query::CreateEnumStmt* value); void unsafe_arena_set_allocated_create_enum_stmt(::pg_query::CreateEnumStmt* value); ::pg_query::CreateEnumStmt* unsafe_arena_release_create_enum_stmt(); private: const ::pg_query::CreateEnumStmt& _internal_create_enum_stmt() const; ::pg_query::CreateEnumStmt* _internal_mutable_create_enum_stmt(); public: // .pg_query.CreateRangeStmt create_range_stmt = 222 [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; PROTOBUF_NODISCARD ::pg_query::CreateRangeStmt* release_create_range_stmt(); ::pg_query::CreateRangeStmt* mutable_create_range_stmt(); void set_allocated_create_range_stmt(::pg_query::CreateRangeStmt* value); void unsafe_arena_set_allocated_create_range_stmt(::pg_query::CreateRangeStmt* value); ::pg_query::CreateRangeStmt* unsafe_arena_release_create_range_stmt(); private: const ::pg_query::CreateRangeStmt& _internal_create_range_stmt() const; ::pg_query::CreateRangeStmt* _internal_mutable_create_range_stmt(); public: // .pg_query.AlterEnumStmt alter_enum_stmt = 223 [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; PROTOBUF_NODISCARD ::pg_query::AlterEnumStmt* release_alter_enum_stmt(); ::pg_query::AlterEnumStmt* mutable_alter_enum_stmt(); void set_allocated_alter_enum_stmt(::pg_query::AlterEnumStmt* value); void unsafe_arena_set_allocated_alter_enum_stmt(::pg_query::AlterEnumStmt* value); ::pg_query::AlterEnumStmt* unsafe_arena_release_alter_enum_stmt(); private: const ::pg_query::AlterEnumStmt& _internal_alter_enum_stmt() const; ::pg_query::AlterEnumStmt* _internal_mutable_alter_enum_stmt(); public: // .pg_query.ViewStmt view_stmt = 224 [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; PROTOBUF_NODISCARD ::pg_query::ViewStmt* release_view_stmt(); ::pg_query::ViewStmt* mutable_view_stmt(); void set_allocated_view_stmt(::pg_query::ViewStmt* value); void unsafe_arena_set_allocated_view_stmt(::pg_query::ViewStmt* value); ::pg_query::ViewStmt* unsafe_arena_release_view_stmt(); private: const ::pg_query::ViewStmt& _internal_view_stmt() const; ::pg_query::ViewStmt* _internal_mutable_view_stmt(); public: // .pg_query.LoadStmt load_stmt = 225 [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; PROTOBUF_NODISCARD ::pg_query::LoadStmt* release_load_stmt(); ::pg_query::LoadStmt* mutable_load_stmt(); void set_allocated_load_stmt(::pg_query::LoadStmt* value); void unsafe_arena_set_allocated_load_stmt(::pg_query::LoadStmt* value); ::pg_query::LoadStmt* unsafe_arena_release_load_stmt(); private: const ::pg_query::LoadStmt& _internal_load_stmt() const; ::pg_query::LoadStmt* _internal_mutable_load_stmt(); public: // .pg_query.CreatedbStmt createdb_stmt = 226 [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; PROTOBUF_NODISCARD ::pg_query::CreatedbStmt* release_createdb_stmt(); ::pg_query::CreatedbStmt* mutable_createdb_stmt(); void set_allocated_createdb_stmt(::pg_query::CreatedbStmt* value); void unsafe_arena_set_allocated_createdb_stmt(::pg_query::CreatedbStmt* value); ::pg_query::CreatedbStmt* unsafe_arena_release_createdb_stmt(); private: const ::pg_query::CreatedbStmt& _internal_createdb_stmt() const; ::pg_query::CreatedbStmt* _internal_mutable_createdb_stmt(); public: // .pg_query.AlterDatabaseStmt alter_database_stmt = 227 [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; PROTOBUF_NODISCARD ::pg_query::AlterDatabaseStmt* release_alter_database_stmt(); ::pg_query::AlterDatabaseStmt* mutable_alter_database_stmt(); void set_allocated_alter_database_stmt(::pg_query::AlterDatabaseStmt* value); void unsafe_arena_set_allocated_alter_database_stmt(::pg_query::AlterDatabaseStmt* value); ::pg_query::AlterDatabaseStmt* unsafe_arena_release_alter_database_stmt(); private: const ::pg_query::AlterDatabaseStmt& _internal_alter_database_stmt() const; ::pg_query::AlterDatabaseStmt* _internal_mutable_alter_database_stmt(); public: // .pg_query.AlterDatabaseRefreshCollStmt alter_database_refresh_coll_stmt = 228 [json_name = "AlterDatabaseRefreshCollStmt"]; bool has_alter_database_refresh_coll_stmt() const; private: bool _internal_has_alter_database_refresh_coll_stmt() const; public: void clear_alter_database_refresh_coll_stmt() ; const ::pg_query::AlterDatabaseRefreshCollStmt& alter_database_refresh_coll_stmt() const; PROTOBUF_NODISCARD ::pg_query::AlterDatabaseRefreshCollStmt* release_alter_database_refresh_coll_stmt(); ::pg_query::AlterDatabaseRefreshCollStmt* mutable_alter_database_refresh_coll_stmt(); void set_allocated_alter_database_refresh_coll_stmt(::pg_query::AlterDatabaseRefreshCollStmt* value); void unsafe_arena_set_allocated_alter_database_refresh_coll_stmt(::pg_query::AlterDatabaseRefreshCollStmt* value); ::pg_query::AlterDatabaseRefreshCollStmt* unsafe_arena_release_alter_database_refresh_coll_stmt(); private: const ::pg_query::AlterDatabaseRefreshCollStmt& _internal_alter_database_refresh_coll_stmt() const; ::pg_query::AlterDatabaseRefreshCollStmt* _internal_mutable_alter_database_refresh_coll_stmt(); public: // .pg_query.AlterDatabaseSetStmt alter_database_set_stmt = 229 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_alter_database_set_stmt(::pg_query::AlterDatabaseSetStmt* value); ::pg_query::AlterDatabaseSetStmt* unsafe_arena_release_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: // .pg_query.DropdbStmt dropdb_stmt = 230 [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; PROTOBUF_NODISCARD ::pg_query::DropdbStmt* release_dropdb_stmt(); ::pg_query::DropdbStmt* mutable_dropdb_stmt(); void set_allocated_dropdb_stmt(::pg_query::DropdbStmt* value); void unsafe_arena_set_allocated_dropdb_stmt(::pg_query::DropdbStmt* value); ::pg_query::DropdbStmt* unsafe_arena_release_dropdb_stmt(); private: const ::pg_query::DropdbStmt& _internal_dropdb_stmt() const; ::pg_query::DropdbStmt* _internal_mutable_dropdb_stmt(); public: // .pg_query.AlterSystemStmt alter_system_stmt = 231 [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; PROTOBUF_NODISCARD ::pg_query::AlterSystemStmt* release_alter_system_stmt(); ::pg_query::AlterSystemStmt* mutable_alter_system_stmt(); void set_allocated_alter_system_stmt(::pg_query::AlterSystemStmt* value); void unsafe_arena_set_allocated_alter_system_stmt(::pg_query::AlterSystemStmt* value); ::pg_query::AlterSystemStmt* unsafe_arena_release_alter_system_stmt(); private: const ::pg_query::AlterSystemStmt& _internal_alter_system_stmt() const; ::pg_query::AlterSystemStmt* _internal_mutable_alter_system_stmt(); public: // .pg_query.ClusterStmt cluster_stmt = 232 [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; PROTOBUF_NODISCARD ::pg_query::ClusterStmt* release_cluster_stmt(); ::pg_query::ClusterStmt* mutable_cluster_stmt(); void set_allocated_cluster_stmt(::pg_query::ClusterStmt* value); void unsafe_arena_set_allocated_cluster_stmt(::pg_query::ClusterStmt* value); ::pg_query::ClusterStmt* unsafe_arena_release_cluster_stmt(); private: const ::pg_query::ClusterStmt& _internal_cluster_stmt() const; ::pg_query::ClusterStmt* _internal_mutable_cluster_stmt(); public: // .pg_query.VacuumStmt vacuum_stmt = 233 [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; PROTOBUF_NODISCARD ::pg_query::VacuumStmt* release_vacuum_stmt(); ::pg_query::VacuumStmt* mutable_vacuum_stmt(); void set_allocated_vacuum_stmt(::pg_query::VacuumStmt* value); void unsafe_arena_set_allocated_vacuum_stmt(::pg_query::VacuumStmt* value); ::pg_query::VacuumStmt* unsafe_arena_release_vacuum_stmt(); private: const ::pg_query::VacuumStmt& _internal_vacuum_stmt() const; ::pg_query::VacuumStmt* _internal_mutable_vacuum_stmt(); public: // .pg_query.VacuumRelation vacuum_relation = 234 [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; PROTOBUF_NODISCARD ::pg_query::VacuumRelation* release_vacuum_relation(); ::pg_query::VacuumRelation* mutable_vacuum_relation(); void set_allocated_vacuum_relation(::pg_query::VacuumRelation* value); void unsafe_arena_set_allocated_vacuum_relation(::pg_query::VacuumRelation* value); ::pg_query::VacuumRelation* unsafe_arena_release_vacuum_relation(); private: const ::pg_query::VacuumRelation& _internal_vacuum_relation() const; ::pg_query::VacuumRelation* _internal_mutable_vacuum_relation(); public: // .pg_query.ExplainStmt explain_stmt = 235 [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; PROTOBUF_NODISCARD ::pg_query::ExplainStmt* release_explain_stmt(); ::pg_query::ExplainStmt* mutable_explain_stmt(); void set_allocated_explain_stmt(::pg_query::ExplainStmt* value); void unsafe_arena_set_allocated_explain_stmt(::pg_query::ExplainStmt* value); ::pg_query::ExplainStmt* unsafe_arena_release_explain_stmt(); private: const ::pg_query::ExplainStmt& _internal_explain_stmt() const; ::pg_query::ExplainStmt* _internal_mutable_explain_stmt(); public: // .pg_query.CreateTableAsStmt create_table_as_stmt = 236 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_create_table_as_stmt(::pg_query::CreateTableAsStmt* value); ::pg_query::CreateTableAsStmt* unsafe_arena_release_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: // .pg_query.RefreshMatViewStmt refresh_mat_view_stmt = 237 [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; PROTOBUF_NODISCARD ::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* value); void unsafe_arena_set_allocated_refresh_mat_view_stmt(::pg_query::RefreshMatViewStmt* value); ::pg_query::RefreshMatViewStmt* unsafe_arena_release_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: // .pg_query.CheckPointStmt check_point_stmt = 238 [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; PROTOBUF_NODISCARD ::pg_query::CheckPointStmt* release_check_point_stmt(); ::pg_query::CheckPointStmt* mutable_check_point_stmt(); void set_allocated_check_point_stmt(::pg_query::CheckPointStmt* value); void unsafe_arena_set_allocated_check_point_stmt(::pg_query::CheckPointStmt* value); ::pg_query::CheckPointStmt* unsafe_arena_release_check_point_stmt(); private: const ::pg_query::CheckPointStmt& _internal_check_point_stmt() const; ::pg_query::CheckPointStmt* _internal_mutable_check_point_stmt(); public: // .pg_query.DiscardStmt discard_stmt = 239 [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; PROTOBUF_NODISCARD ::pg_query::DiscardStmt* release_discard_stmt(); ::pg_query::DiscardStmt* mutable_discard_stmt(); void set_allocated_discard_stmt(::pg_query::DiscardStmt* value); void unsafe_arena_set_allocated_discard_stmt(::pg_query::DiscardStmt* value); ::pg_query::DiscardStmt* unsafe_arena_release_discard_stmt(); private: const ::pg_query::DiscardStmt& _internal_discard_stmt() const; ::pg_query::DiscardStmt* _internal_mutable_discard_stmt(); public: // .pg_query.LockStmt lock_stmt = 240 [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; PROTOBUF_NODISCARD ::pg_query::LockStmt* release_lock_stmt(); ::pg_query::LockStmt* mutable_lock_stmt(); void set_allocated_lock_stmt(::pg_query::LockStmt* value); void unsafe_arena_set_allocated_lock_stmt(::pg_query::LockStmt* value); ::pg_query::LockStmt* unsafe_arena_release_lock_stmt(); private: const ::pg_query::LockStmt& _internal_lock_stmt() const; ::pg_query::LockStmt* _internal_mutable_lock_stmt(); public: // .pg_query.ConstraintsSetStmt constraints_set_stmt = 241 [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; PROTOBUF_NODISCARD ::pg_query::ConstraintsSetStmt* release_constraints_set_stmt(); ::pg_query::ConstraintsSetStmt* mutable_constraints_set_stmt(); void set_allocated_constraints_set_stmt(::pg_query::ConstraintsSetStmt* value); void unsafe_arena_set_allocated_constraints_set_stmt(::pg_query::ConstraintsSetStmt* value); ::pg_query::ConstraintsSetStmt* unsafe_arena_release_constraints_set_stmt(); private: const ::pg_query::ConstraintsSetStmt& _internal_constraints_set_stmt() const; ::pg_query::ConstraintsSetStmt* _internal_mutable_constraints_set_stmt(); public: // .pg_query.ReindexStmt reindex_stmt = 242 [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; PROTOBUF_NODISCARD ::pg_query::ReindexStmt* release_reindex_stmt(); ::pg_query::ReindexStmt* mutable_reindex_stmt(); void set_allocated_reindex_stmt(::pg_query::ReindexStmt* value); void unsafe_arena_set_allocated_reindex_stmt(::pg_query::ReindexStmt* value); ::pg_query::ReindexStmt* unsafe_arena_release_reindex_stmt(); private: const ::pg_query::ReindexStmt& _internal_reindex_stmt() const; ::pg_query::ReindexStmt* _internal_mutable_reindex_stmt(); public: // .pg_query.CreateConversionStmt create_conversion_stmt = 243 [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; PROTOBUF_NODISCARD ::pg_query::CreateConversionStmt* release_create_conversion_stmt(); ::pg_query::CreateConversionStmt* mutable_create_conversion_stmt(); void set_allocated_create_conversion_stmt(::pg_query::CreateConversionStmt* value); void unsafe_arena_set_allocated_create_conversion_stmt(::pg_query::CreateConversionStmt* value); ::pg_query::CreateConversionStmt* unsafe_arena_release_create_conversion_stmt(); private: const ::pg_query::CreateConversionStmt& _internal_create_conversion_stmt() const; ::pg_query::CreateConversionStmt* _internal_mutable_create_conversion_stmt(); public: // .pg_query.CreateCastStmt create_cast_stmt = 244 [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; PROTOBUF_NODISCARD ::pg_query::CreateCastStmt* release_create_cast_stmt(); ::pg_query::CreateCastStmt* mutable_create_cast_stmt(); void set_allocated_create_cast_stmt(::pg_query::CreateCastStmt* value); void unsafe_arena_set_allocated_create_cast_stmt(::pg_query::CreateCastStmt* value); ::pg_query::CreateCastStmt* unsafe_arena_release_create_cast_stmt(); private: const ::pg_query::CreateCastStmt& _internal_create_cast_stmt() const; ::pg_query::CreateCastStmt* _internal_mutable_create_cast_stmt(); public: // .pg_query.CreateTransformStmt create_transform_stmt = 245 [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; PROTOBUF_NODISCARD ::pg_query::CreateTransformStmt* release_create_transform_stmt(); ::pg_query::CreateTransformStmt* mutable_create_transform_stmt(); void set_allocated_create_transform_stmt(::pg_query::CreateTransformStmt* value); void unsafe_arena_set_allocated_create_transform_stmt(::pg_query::CreateTransformStmt* value); ::pg_query::CreateTransformStmt* unsafe_arena_release_create_transform_stmt(); private: const ::pg_query::CreateTransformStmt& _internal_create_transform_stmt() const; ::pg_query::CreateTransformStmt* _internal_mutable_create_transform_stmt(); public: // .pg_query.PrepareStmt prepare_stmt = 246 [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; PROTOBUF_NODISCARD ::pg_query::PrepareStmt* release_prepare_stmt(); ::pg_query::PrepareStmt* mutable_prepare_stmt(); void set_allocated_prepare_stmt(::pg_query::PrepareStmt* value); void unsafe_arena_set_allocated_prepare_stmt(::pg_query::PrepareStmt* value); ::pg_query::PrepareStmt* unsafe_arena_release_prepare_stmt(); private: const ::pg_query::PrepareStmt& _internal_prepare_stmt() const; ::pg_query::PrepareStmt* _internal_mutable_prepare_stmt(); public: // .pg_query.ExecuteStmt execute_stmt = 247 [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; PROTOBUF_NODISCARD ::pg_query::ExecuteStmt* release_execute_stmt(); ::pg_query::ExecuteStmt* mutable_execute_stmt(); void set_allocated_execute_stmt(::pg_query::ExecuteStmt* value); void unsafe_arena_set_allocated_execute_stmt(::pg_query::ExecuteStmt* value); ::pg_query::ExecuteStmt* unsafe_arena_release_execute_stmt(); private: const ::pg_query::ExecuteStmt& _internal_execute_stmt() const; ::pg_query::ExecuteStmt* _internal_mutable_execute_stmt(); public: // .pg_query.DeallocateStmt deallocate_stmt = 248 [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; PROTOBUF_NODISCARD ::pg_query::DeallocateStmt* release_deallocate_stmt(); ::pg_query::DeallocateStmt* mutable_deallocate_stmt(); void set_allocated_deallocate_stmt(::pg_query::DeallocateStmt* value); void unsafe_arena_set_allocated_deallocate_stmt(::pg_query::DeallocateStmt* value); ::pg_query::DeallocateStmt* unsafe_arena_release_deallocate_stmt(); private: const ::pg_query::DeallocateStmt& _internal_deallocate_stmt() const; ::pg_query::DeallocateStmt* _internal_mutable_deallocate_stmt(); public: // .pg_query.DropOwnedStmt drop_owned_stmt = 249 [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; PROTOBUF_NODISCARD ::pg_query::DropOwnedStmt* release_drop_owned_stmt(); ::pg_query::DropOwnedStmt* mutable_drop_owned_stmt(); void set_allocated_drop_owned_stmt(::pg_query::DropOwnedStmt* value); void unsafe_arena_set_allocated_drop_owned_stmt(::pg_query::DropOwnedStmt* value); ::pg_query::DropOwnedStmt* unsafe_arena_release_drop_owned_stmt(); private: const ::pg_query::DropOwnedStmt& _internal_drop_owned_stmt() const; ::pg_query::DropOwnedStmt* _internal_mutable_drop_owned_stmt(); public: // .pg_query.ReassignOwnedStmt reassign_owned_stmt = 250 [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; PROTOBUF_NODISCARD ::pg_query::ReassignOwnedStmt* release_reassign_owned_stmt(); ::pg_query::ReassignOwnedStmt* mutable_reassign_owned_stmt(); void set_allocated_reassign_owned_stmt(::pg_query::ReassignOwnedStmt* value); void unsafe_arena_set_allocated_reassign_owned_stmt(::pg_query::ReassignOwnedStmt* value); ::pg_query::ReassignOwnedStmt* unsafe_arena_release_reassign_owned_stmt(); private: const ::pg_query::ReassignOwnedStmt& _internal_reassign_owned_stmt() const; ::pg_query::ReassignOwnedStmt* _internal_mutable_reassign_owned_stmt(); public: // .pg_query.AlterTSDictionaryStmt alter_tsdictionary_stmt = 251 [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; PROTOBUF_NODISCARD ::pg_query::AlterTSDictionaryStmt* release_alter_tsdictionary_stmt(); ::pg_query::AlterTSDictionaryStmt* mutable_alter_tsdictionary_stmt(); void set_allocated_alter_tsdictionary_stmt(::pg_query::AlterTSDictionaryStmt* value); void unsafe_arena_set_allocated_alter_tsdictionary_stmt(::pg_query::AlterTSDictionaryStmt* value); ::pg_query::AlterTSDictionaryStmt* unsafe_arena_release_alter_tsdictionary_stmt(); private: const ::pg_query::AlterTSDictionaryStmt& _internal_alter_tsdictionary_stmt() const; ::pg_query::AlterTSDictionaryStmt* _internal_mutable_alter_tsdictionary_stmt(); public: // .pg_query.AlterTSConfigurationStmt alter_tsconfiguration_stmt = 252 [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; PROTOBUF_NODISCARD ::pg_query::AlterTSConfigurationStmt* release_alter_tsconfiguration_stmt(); ::pg_query::AlterTSConfigurationStmt* mutable_alter_tsconfiguration_stmt(); void set_allocated_alter_tsconfiguration_stmt(::pg_query::AlterTSConfigurationStmt* value); void unsafe_arena_set_allocated_alter_tsconfiguration_stmt(::pg_query::AlterTSConfigurationStmt* value); ::pg_query::AlterTSConfigurationStmt* unsafe_arena_release_alter_tsconfiguration_stmt(); private: const ::pg_query::AlterTSConfigurationStmt& _internal_alter_tsconfiguration_stmt() const; ::pg_query::AlterTSConfigurationStmt* _internal_mutable_alter_tsconfiguration_stmt(); public: // .pg_query.PublicationTable publication_table = 253 [json_name = "PublicationTable"]; bool has_publication_table() const; private: bool _internal_has_publication_table() const; public: void clear_publication_table() ; const ::pg_query::PublicationTable& publication_table() const; PROTOBUF_NODISCARD ::pg_query::PublicationTable* release_publication_table(); ::pg_query::PublicationTable* mutable_publication_table(); void set_allocated_publication_table(::pg_query::PublicationTable* value); void unsafe_arena_set_allocated_publication_table(::pg_query::PublicationTable* value); ::pg_query::PublicationTable* unsafe_arena_release_publication_table(); private: const ::pg_query::PublicationTable& _internal_publication_table() const; ::pg_query::PublicationTable* _internal_mutable_publication_table(); public: // .pg_query.PublicationObjSpec publication_obj_spec = 254 [json_name = "PublicationObjSpec"]; bool has_publication_obj_spec() const; private: bool _internal_has_publication_obj_spec() const; public: void clear_publication_obj_spec() ; const ::pg_query::PublicationObjSpec& publication_obj_spec() const; PROTOBUF_NODISCARD ::pg_query::PublicationObjSpec* release_publication_obj_spec(); ::pg_query::PublicationObjSpec* mutable_publication_obj_spec(); void set_allocated_publication_obj_spec(::pg_query::PublicationObjSpec* value); void unsafe_arena_set_allocated_publication_obj_spec(::pg_query::PublicationObjSpec* value); ::pg_query::PublicationObjSpec* unsafe_arena_release_publication_obj_spec(); private: const ::pg_query::PublicationObjSpec& _internal_publication_obj_spec() const; ::pg_query::PublicationObjSpec* _internal_mutable_publication_obj_spec(); public: // .pg_query.CreatePublicationStmt create_publication_stmt = 255 [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; PROTOBUF_NODISCARD ::pg_query::CreatePublicationStmt* release_create_publication_stmt(); ::pg_query::CreatePublicationStmt* mutable_create_publication_stmt(); void set_allocated_create_publication_stmt(::pg_query::CreatePublicationStmt* value); void unsafe_arena_set_allocated_create_publication_stmt(::pg_query::CreatePublicationStmt* value); ::pg_query::CreatePublicationStmt* unsafe_arena_release_create_publication_stmt(); private: const ::pg_query::CreatePublicationStmt& _internal_create_publication_stmt() const; ::pg_query::CreatePublicationStmt* _internal_mutable_create_publication_stmt(); public: // .pg_query.AlterPublicationStmt alter_publication_stmt = 256 [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; PROTOBUF_NODISCARD ::pg_query::AlterPublicationStmt* release_alter_publication_stmt(); ::pg_query::AlterPublicationStmt* mutable_alter_publication_stmt(); void set_allocated_alter_publication_stmt(::pg_query::AlterPublicationStmt* value); void unsafe_arena_set_allocated_alter_publication_stmt(::pg_query::AlterPublicationStmt* value); ::pg_query::AlterPublicationStmt* unsafe_arena_release_alter_publication_stmt(); private: const ::pg_query::AlterPublicationStmt& _internal_alter_publication_stmt() const; ::pg_query::AlterPublicationStmt* _internal_mutable_alter_publication_stmt(); public: // .pg_query.CreateSubscriptionStmt create_subscription_stmt = 257 [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; PROTOBUF_NODISCARD ::pg_query::CreateSubscriptionStmt* release_create_subscription_stmt(); ::pg_query::CreateSubscriptionStmt* mutable_create_subscription_stmt(); void set_allocated_create_subscription_stmt(::pg_query::CreateSubscriptionStmt* value); void unsafe_arena_set_allocated_create_subscription_stmt(::pg_query::CreateSubscriptionStmt* value); ::pg_query::CreateSubscriptionStmt* unsafe_arena_release_create_subscription_stmt(); private: const ::pg_query::CreateSubscriptionStmt& _internal_create_subscription_stmt() const; ::pg_query::CreateSubscriptionStmt* _internal_mutable_create_subscription_stmt(); public: // .pg_query.AlterSubscriptionStmt alter_subscription_stmt = 258 [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; PROTOBUF_NODISCARD ::pg_query::AlterSubscriptionStmt* release_alter_subscription_stmt(); ::pg_query::AlterSubscriptionStmt* mutable_alter_subscription_stmt(); void set_allocated_alter_subscription_stmt(::pg_query::AlterSubscriptionStmt* value); void unsafe_arena_set_allocated_alter_subscription_stmt(::pg_query::AlterSubscriptionStmt* value); ::pg_query::AlterSubscriptionStmt* unsafe_arena_release_alter_subscription_stmt(); private: const ::pg_query::AlterSubscriptionStmt& _internal_alter_subscription_stmt() const; ::pg_query::AlterSubscriptionStmt* _internal_mutable_alter_subscription_stmt(); public: // .pg_query.DropSubscriptionStmt drop_subscription_stmt = 259 [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; PROTOBUF_NODISCARD ::pg_query::DropSubscriptionStmt* release_drop_subscription_stmt(); ::pg_query::DropSubscriptionStmt* mutable_drop_subscription_stmt(); void set_allocated_drop_subscription_stmt(::pg_query::DropSubscriptionStmt* value); void unsafe_arena_set_allocated_drop_subscription_stmt(::pg_query::DropSubscriptionStmt* value); ::pg_query::DropSubscriptionStmt* unsafe_arena_release_drop_subscription_stmt(); private: const ::pg_query::DropSubscriptionStmt& _internal_drop_subscription_stmt() const; ::pg_query::DropSubscriptionStmt* _internal_mutable_drop_subscription_stmt(); public: // .pg_query.Integer integer = 260 [json_name = "Integer"]; bool has_integer() const; private: bool _internal_has_integer() const; public: void clear_integer() ; const ::pg_query::Integer& integer() const; PROTOBUF_NODISCARD ::pg_query::Integer* release_integer(); ::pg_query::Integer* mutable_integer(); void set_allocated_integer(::pg_query::Integer* value); void unsafe_arena_set_allocated_integer(::pg_query::Integer* value); ::pg_query::Integer* unsafe_arena_release_integer(); private: const ::pg_query::Integer& _internal_integer() const; ::pg_query::Integer* _internal_mutable_integer(); public: // .pg_query.Float float = 261 [json_name = "Float"]; bool has_float_() const; private: bool _internal_has_float_() const; public: void clear_float_() ; const ::pg_query::Float& float_() const; PROTOBUF_NODISCARD ::pg_query::Float* release_float_(); ::pg_query::Float* mutable_float_(); void set_allocated_float_(::pg_query::Float* value); void unsafe_arena_set_allocated_float_(::pg_query::Float* value); ::pg_query::Float* unsafe_arena_release_float_(); private: const ::pg_query::Float& _internal_float_() const; ::pg_query::Float* _internal_mutable_float_(); public: // .pg_query.Boolean boolean = 262 [json_name = "Boolean"]; bool has_boolean() const; private: bool _internal_has_boolean() const; public: void clear_boolean() ; const ::pg_query::Boolean& boolean() const; PROTOBUF_NODISCARD ::pg_query::Boolean* release_boolean(); ::pg_query::Boolean* mutable_boolean(); void set_allocated_boolean(::pg_query::Boolean* value); void unsafe_arena_set_allocated_boolean(::pg_query::Boolean* value); ::pg_query::Boolean* unsafe_arena_release_boolean(); private: const ::pg_query::Boolean& _internal_boolean() const; ::pg_query::Boolean* _internal_mutable_boolean(); public: // .pg_query.String string = 263 [json_name = "String"]; bool has_string() const; private: bool _internal_has_string() const; public: void clear_string() ; const ::pg_query::String& string() const; PROTOBUF_NODISCARD ::pg_query::String* release_string(); ::pg_query::String* mutable_string(); void set_allocated_string(::pg_query::String* value); void unsafe_arena_set_allocated_string(::pg_query::String* value); ::pg_query::String* unsafe_arena_release_string(); private: const ::pg_query::String& _internal_string() const; ::pg_query::String* _internal_mutable_string(); public: // .pg_query.BitString bit_string = 264 [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; PROTOBUF_NODISCARD ::pg_query::BitString* release_bit_string(); ::pg_query::BitString* mutable_bit_string(); void set_allocated_bit_string(::pg_query::BitString* value); void unsafe_arena_set_allocated_bit_string(::pg_query::BitString* value); ::pg_query::BitString* unsafe_arena_release_bit_string(); private: const ::pg_query::BitString& _internal_bit_string() const; ::pg_query::BitString* _internal_mutable_bit_string(); public: // .pg_query.List list = 265 [json_name = "List"]; bool has_list() const; private: bool _internal_has_list() const; public: void clear_list() ; const ::pg_query::List& list() const; PROTOBUF_NODISCARD ::pg_query::List* release_list(); ::pg_query::List* mutable_list(); void set_allocated_list(::pg_query::List* value); void unsafe_arena_set_allocated_list(::pg_query::List* value); ::pg_query::List* unsafe_arena_release_list(); private: const ::pg_query::List& _internal_list() const; ::pg_query::List* _internal_mutable_list(); public: // .pg_query.IntList int_list = 266 [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; PROTOBUF_NODISCARD ::pg_query::IntList* release_int_list(); ::pg_query::IntList* mutable_int_list(); void set_allocated_int_list(::pg_query::IntList* value); void unsafe_arena_set_allocated_int_list(::pg_query::IntList* value); ::pg_query::IntList* unsafe_arena_release_int_list(); private: const ::pg_query::IntList& _internal_int_list() const; ::pg_query::IntList* _internal_mutable_int_list(); public: // .pg_query.OidList oid_list = 267 [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; PROTOBUF_NODISCARD ::pg_query::OidList* release_oid_list(); ::pg_query::OidList* mutable_oid_list(); void set_allocated_oid_list(::pg_query::OidList* value); void unsafe_arena_set_allocated_oid_list(::pg_query::OidList* value); ::pg_query::OidList* unsafe_arena_release_oid_list(); private: const ::pg_query::OidList& _internal_oid_list() const; ::pg_query::OidList* _internal_mutable_oid_list(); public: // .pg_query.A_Const a_const = 268 [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; PROTOBUF_NODISCARD ::pg_query::A_Const* release_a_const(); ::pg_query::A_Const* mutable_a_const(); void set_allocated_a_const(::pg_query::A_Const* value); void unsafe_arena_set_allocated_a_const(::pg_query::A_Const* value); ::pg_query::A_Const* unsafe_arena_release_a_const(); private: const ::pg_query::A_Const& _internal_a_const() const; ::pg_query::A_Const* _internal_mutable_a_const(); public: 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_into_clause(); 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_window_func_run_condition(); void set_has_merge_support_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_json_format(); void set_has_json_returning(); void set_has_json_value_expr(); void set_has_json_constructor_expr(); void set_has_json_is_predicate(); void set_has_json_behavior(); void set_has_json_expr(); void set_has_json_table_path(); void set_has_json_table_path_scan(); void set_has_json_table_sibling_join(); void set_has_null_test(); void set_has_boolean_test(); void set_has_merge_action(); 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_query(); void set_has_type_name(); void set_has_column_ref(); void set_has_param_ref(); void set_has_a_expr(); void set_has_type_cast(); void set_has_collate_clause(); void set_has_role_spec(); 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_sort_by(); void set_has_window_def(); void set_has_range_subselect(); void set_has_range_function(); void set_has_range_table_func(); void set_has_range_table_func_col(); void set_has_range_table_sample(); void set_has_column_def(); void set_has_table_like_clause(); void set_has_index_elem(); void set_has_def_elem(); void set_has_locking_clause(); void set_has_xml_serialize(); 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_single_partition_spec(); void set_has_partition_cmd(); void set_has_range_tbl_entry(); void set_has_rtepermission_info(); 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_row_mark_clause(); void set_has_with_clause(); void set_has_infer_clause(); void set_has_on_conflict_clause(); void set_has_ctesearch_clause(); void set_has_ctecycle_clause(); void set_has_common_table_expr(); void set_has_merge_when_clause(); void set_has_trigger_transition(); void set_has_json_output(); void set_has_json_argument(); void set_has_json_func_expr(); void set_has_json_table_path_spec(); void set_has_json_table(); void set_has_json_table_column(); void set_has_json_key_value(); void set_has_json_parse_expr(); void set_has_json_scalar_expr(); void set_has_json_serialize_expr(); void set_has_json_object_constructor(); void set_has_json_array_constructor(); void set_has_json_array_query_constructor(); void set_has_json_agg_constructor(); void set_has_json_object_agg(); void set_has_json_array_agg(); void set_has_raw_stmt(); void set_has_insert_stmt(); void set_has_delete_stmt(); void set_has_update_stmt(); void set_has_merge_stmt(); void set_has_select_stmt(); void set_has_set_operation_stmt(); void set_has_return_stmt(); void set_has_plassign_stmt(); void set_has_create_schema_stmt(); void set_has_alter_table_stmt(); void set_has_replica_identity_stmt(); void set_has_alter_table_cmd(); void set_has_alter_collation_stmt(); void set_has_alter_domain_stmt(); void set_has_grant_stmt(); void set_has_object_with_args(); void set_has_access_priv(); void set_has_grant_role_stmt(); void set_has_alter_default_privileges_stmt(); void set_has_copy_stmt(); void set_has_variable_set_stmt(); void set_has_variable_show_stmt(); void set_has_create_stmt(); void set_has_constraint(); void set_has_create_table_space_stmt(); void set_has_drop_table_space_stmt(); void set_has_alter_table_space_options_stmt(); void set_has_alter_table_move_all_stmt(); void set_has_create_extension_stmt(); void set_has_alter_extension_stmt(); void set_has_alter_extension_contents_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_foreign_table_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_import_foreign_schema_stmt(); void set_has_create_policy_stmt(); void set_has_alter_policy_stmt(); void set_has_create_am_stmt(); void set_has_create_trig_stmt(); void set_has_create_event_trig_stmt(); void set_has_alter_event_trig_stmt(); void set_has_create_plang_stmt(); void set_has_create_role_stmt(); void set_has_alter_role_stmt(); void set_has_alter_role_set_stmt(); void set_has_drop_role_stmt(); void set_has_create_seq_stmt(); void set_has_alter_seq_stmt(); void set_has_define_stmt(); void set_has_create_domain_stmt(); void set_has_create_op_class_stmt(); void set_has_create_op_class_item(); void set_has_create_op_family_stmt(); void set_has_alter_op_family_stmt(); void set_has_drop_stmt(); void set_has_truncate_stmt(); void set_has_comment_stmt(); void set_has_sec_label_stmt(); void set_has_declare_cursor_stmt(); void set_has_close_portal_stmt(); void set_has_fetch_stmt(); void set_has_index_stmt(); void set_has_create_stats_stmt(); void set_has_stats_elem(); void set_has_alter_stats_stmt(); void set_has_create_function_stmt(); void set_has_function_parameter(); void set_has_alter_function_stmt(); void set_has_do_stmt(); void set_has_inline_code_block(); void set_has_call_stmt(); void set_has_call_context(); void set_has_rename_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_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_composite_type_stmt(); void set_has_create_enum_stmt(); void set_has_create_range_stmt(); void set_has_alter_enum_stmt(); void set_has_view_stmt(); void set_has_load_stmt(); void set_has_createdb_stmt(); void set_has_alter_database_stmt(); void set_has_alter_database_refresh_coll_stmt(); void set_has_alter_database_set_stmt(); void set_has_dropdb_stmt(); void set_has_alter_system_stmt(); void set_has_cluster_stmt(); void set_has_vacuum_stmt(); void set_has_vacuum_relation(); void set_has_explain_stmt(); void set_has_create_table_as_stmt(); void set_has_refresh_mat_view_stmt(); void set_has_check_point_stmt(); void set_has_discard_stmt(); void set_has_lock_stmt(); void set_has_constraints_set_stmt(); void set_has_reindex_stmt(); void set_has_create_conversion_stmt(); void set_has_create_cast_stmt(); void set_has_create_transform_stmt(); void set_has_prepare_stmt(); void set_has_execute_stmt(); void set_has_deallocate_stmt(); void set_has_drop_owned_stmt(); void set_has_reassign_owned_stmt(); void set_has_alter_tsdictionary_stmt(); void set_has_alter_tsconfiguration_stmt(); void set_has_publication_table(); void set_has_publication_obj_spec(); 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_integer(); void set_has_float_(); void set_has_boolean(); void set_has_string(); void set_has_bit_string(); void set_has_list(); void set_has_int_list(); void set_has_oid_list(); void set_has_a_const(); inline bool has_node() const; inline void clear_has_node(); friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 268, 268, 0, 35> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); union NodeUnion { constexpr NodeUnion() : _constinit_{} {} ::google::protobuf::internal::ConstantInitialized _constinit_; ::pg_query::Alias* alias_; ::pg_query::RangeVar* range_var_; ::pg_query::TableFunc* table_func_; ::pg_query::IntoClause* into_clause_; ::pg_query::Var* var_; ::pg_query::Param* param_; ::pg_query::Aggref* aggref_; ::pg_query::GroupingFunc* grouping_func_; ::pg_query::WindowFunc* window_func_; ::pg_query::WindowFuncRunCondition* window_func_run_condition_; ::pg_query::MergeSupportFunc* merge_support_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::JsonFormat* json_format_; ::pg_query::JsonReturning* json_returning_; ::pg_query::JsonValueExpr* json_value_expr_; ::pg_query::JsonConstructorExpr* json_constructor_expr_; ::pg_query::JsonIsPredicate* json_is_predicate_; ::pg_query::JsonBehavior* json_behavior_; ::pg_query::JsonExpr* json_expr_; ::pg_query::JsonTablePath* json_table_path_; ::pg_query::JsonTablePathScan* json_table_path_scan_; ::pg_query::JsonTableSiblingJoin* json_table_sibling_join_; ::pg_query::NullTest* null_test_; ::pg_query::BooleanTest* boolean_test_; ::pg_query::MergeAction* merge_action_; ::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::Query* query_; ::pg_query::TypeName* type_name_; ::pg_query::ColumnRef* column_ref_; ::pg_query::ParamRef* param_ref_; ::pg_query::A_Expr* a_expr_; ::pg_query::TypeCast* type_cast_; ::pg_query::CollateClause* collate_clause_; ::pg_query::RoleSpec* role_spec_; ::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::SortBy* sort_by_; ::pg_query::WindowDef* window_def_; ::pg_query::RangeSubselect* range_subselect_; ::pg_query::RangeFunction* range_function_; ::pg_query::RangeTableFunc* range_table_func_; ::pg_query::RangeTableFuncCol* range_table_func_col_; ::pg_query::RangeTableSample* range_table_sample_; ::pg_query::ColumnDef* column_def_; ::pg_query::TableLikeClause* table_like_clause_; ::pg_query::IndexElem* index_elem_; ::pg_query::DefElem* def_elem_; ::pg_query::LockingClause* locking_clause_; ::pg_query::XmlSerialize* xml_serialize_; ::pg_query::PartitionElem* partition_elem_; ::pg_query::PartitionSpec* partition_spec_; ::pg_query::PartitionBoundSpec* partition_bound_spec_; ::pg_query::PartitionRangeDatum* partition_range_datum_; ::pg_query::SinglePartitionSpec* single_partition_spec_; ::pg_query::PartitionCmd* partition_cmd_; ::pg_query::RangeTblEntry* range_tbl_entry_; ::pg_query::RTEPermissionInfo* rtepermission_info_; ::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::RowMarkClause* row_mark_clause_; ::pg_query::WithClause* with_clause_; ::pg_query::InferClause* infer_clause_; ::pg_query::OnConflictClause* on_conflict_clause_; ::pg_query::CTESearchClause* ctesearch_clause_; ::pg_query::CTECycleClause* ctecycle_clause_; ::pg_query::CommonTableExpr* common_table_expr_; ::pg_query::MergeWhenClause* merge_when_clause_; ::pg_query::TriggerTransition* trigger_transition_; ::pg_query::JsonOutput* json_output_; ::pg_query::JsonArgument* json_argument_; ::pg_query::JsonFuncExpr* json_func_expr_; ::pg_query::JsonTablePathSpec* json_table_path_spec_; ::pg_query::JsonTable* json_table_; ::pg_query::JsonTableColumn* json_table_column_; ::pg_query::JsonKeyValue* json_key_value_; ::pg_query::JsonParseExpr* json_parse_expr_; ::pg_query::JsonScalarExpr* json_scalar_expr_; ::pg_query::JsonSerializeExpr* json_serialize_expr_; ::pg_query::JsonObjectConstructor* json_object_constructor_; ::pg_query::JsonArrayConstructor* json_array_constructor_; ::pg_query::JsonArrayQueryConstructor* json_array_query_constructor_; ::pg_query::JsonAggConstructor* json_agg_constructor_; ::pg_query::JsonObjectAgg* json_object_agg_; ::pg_query::JsonArrayAgg* json_array_agg_; ::pg_query::RawStmt* raw_stmt_; ::pg_query::InsertStmt* insert_stmt_; ::pg_query::DeleteStmt* delete_stmt_; ::pg_query::UpdateStmt* update_stmt_; ::pg_query::MergeStmt* merge_stmt_; ::pg_query::SelectStmt* select_stmt_; ::pg_query::SetOperationStmt* set_operation_stmt_; ::pg_query::ReturnStmt* return_stmt_; ::pg_query::PLAssignStmt* plassign_stmt_; ::pg_query::CreateSchemaStmt* create_schema_stmt_; ::pg_query::AlterTableStmt* alter_table_stmt_; ::pg_query::ReplicaIdentityStmt* replica_identity_stmt_; ::pg_query::AlterTableCmd* alter_table_cmd_; ::pg_query::AlterCollationStmt* alter_collation_stmt_; ::pg_query::AlterDomainStmt* alter_domain_stmt_; ::pg_query::GrantStmt* grant_stmt_; ::pg_query::ObjectWithArgs* object_with_args_; ::pg_query::AccessPriv* access_priv_; ::pg_query::GrantRoleStmt* grant_role_stmt_; ::pg_query::AlterDefaultPrivilegesStmt* alter_default_privileges_stmt_; ::pg_query::CopyStmt* copy_stmt_; ::pg_query::VariableSetStmt* variable_set_stmt_; ::pg_query::VariableShowStmt* variable_show_stmt_; ::pg_query::CreateStmt* create_stmt_; ::pg_query::Constraint* constraint_; ::pg_query::CreateTableSpaceStmt* create_table_space_stmt_; ::pg_query::DropTableSpaceStmt* drop_table_space_stmt_; ::pg_query::AlterTableSpaceOptionsStmt* alter_table_space_options_stmt_; ::pg_query::AlterTableMoveAllStmt* alter_table_move_all_stmt_; ::pg_query::CreateExtensionStmt* create_extension_stmt_; ::pg_query::AlterExtensionStmt* alter_extension_stmt_; ::pg_query::AlterExtensionContentsStmt* alter_extension_contents_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::CreateForeignTableStmt* create_foreign_table_stmt_; ::pg_query::CreateUserMappingStmt* create_user_mapping_stmt_; ::pg_query::AlterUserMappingStmt* alter_user_mapping_stmt_; ::pg_query::DropUserMappingStmt* drop_user_mapping_stmt_; ::pg_query::ImportForeignSchemaStmt* import_foreign_schema_stmt_; ::pg_query::CreatePolicyStmt* create_policy_stmt_; ::pg_query::AlterPolicyStmt* alter_policy_stmt_; ::pg_query::CreateAmStmt* create_am_stmt_; ::pg_query::CreateTrigStmt* create_trig_stmt_; ::pg_query::CreateEventTrigStmt* create_event_trig_stmt_; ::pg_query::AlterEventTrigStmt* alter_event_trig_stmt_; ::pg_query::CreatePLangStmt* create_plang_stmt_; ::pg_query::CreateRoleStmt* create_role_stmt_; ::pg_query::AlterRoleStmt* alter_role_stmt_; ::pg_query::AlterRoleSetStmt* alter_role_set_stmt_; ::pg_query::DropRoleStmt* drop_role_stmt_; ::pg_query::CreateSeqStmt* create_seq_stmt_; ::pg_query::AlterSeqStmt* alter_seq_stmt_; ::pg_query::DefineStmt* define_stmt_; ::pg_query::CreateDomainStmt* create_domain_stmt_; ::pg_query::CreateOpClassStmt* create_op_class_stmt_; ::pg_query::CreateOpClassItem* create_op_class_item_; ::pg_query::CreateOpFamilyStmt* create_op_family_stmt_; ::pg_query::AlterOpFamilyStmt* alter_op_family_stmt_; ::pg_query::DropStmt* drop_stmt_; ::pg_query::TruncateStmt* truncate_stmt_; ::pg_query::CommentStmt* comment_stmt_; ::pg_query::SecLabelStmt* sec_label_stmt_; ::pg_query::DeclareCursorStmt* declare_cursor_stmt_; ::pg_query::ClosePortalStmt* close_portal_stmt_; ::pg_query::FetchStmt* fetch_stmt_; ::pg_query::IndexStmt* index_stmt_; ::pg_query::CreateStatsStmt* create_stats_stmt_; ::pg_query::StatsElem* stats_elem_; ::pg_query::AlterStatsStmt* alter_stats_stmt_; ::pg_query::CreateFunctionStmt* create_function_stmt_; ::pg_query::FunctionParameter* function_parameter_; ::pg_query::AlterFunctionStmt* alter_function_stmt_; ::pg_query::DoStmt* do_stmt_; ::pg_query::InlineCodeBlock* inline_code_block_; ::pg_query::CallStmt* call_stmt_; ::pg_query::CallContext* call_context_; ::pg_query::RenameStmt* rename_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::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::CompositeTypeStmt* composite_type_stmt_; ::pg_query::CreateEnumStmt* create_enum_stmt_; ::pg_query::CreateRangeStmt* create_range_stmt_; ::pg_query::AlterEnumStmt* alter_enum_stmt_; ::pg_query::ViewStmt* view_stmt_; ::pg_query::LoadStmt* load_stmt_; ::pg_query::CreatedbStmt* createdb_stmt_; ::pg_query::AlterDatabaseStmt* alter_database_stmt_; ::pg_query::AlterDatabaseRefreshCollStmt* alter_database_refresh_coll_stmt_; ::pg_query::AlterDatabaseSetStmt* alter_database_set_stmt_; ::pg_query::DropdbStmt* dropdb_stmt_; ::pg_query::AlterSystemStmt* alter_system_stmt_; ::pg_query::ClusterStmt* cluster_stmt_; ::pg_query::VacuumStmt* vacuum_stmt_; ::pg_query::VacuumRelation* vacuum_relation_; ::pg_query::ExplainStmt* explain_stmt_; ::pg_query::CreateTableAsStmt* create_table_as_stmt_; ::pg_query::RefreshMatViewStmt* refresh_mat_view_stmt_; ::pg_query::CheckPointStmt* check_point_stmt_; ::pg_query::DiscardStmt* discard_stmt_; ::pg_query::LockStmt* lock_stmt_; ::pg_query::ConstraintsSetStmt* constraints_set_stmt_; ::pg_query::ReindexStmt* reindex_stmt_; ::pg_query::CreateConversionStmt* create_conversion_stmt_; ::pg_query::CreateCastStmt* create_cast_stmt_; ::pg_query::CreateTransformStmt* create_transform_stmt_; ::pg_query::PrepareStmt* prepare_stmt_; ::pg_query::ExecuteStmt* execute_stmt_; ::pg_query::DeallocateStmt* deallocate_stmt_; ::pg_query::DropOwnedStmt* drop_owned_stmt_; ::pg_query::ReassignOwnedStmt* reassign_owned_stmt_; ::pg_query::AlterTSDictionaryStmt* alter_tsdictionary_stmt_; ::pg_query::AlterTSConfigurationStmt* alter_tsconfiguration_stmt_; ::pg_query::PublicationTable* publication_table_; ::pg_query::PublicationObjSpec* publication_obj_spec_; ::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::Integer* integer_; ::pg_query::Float* float__; ::pg_query::Boolean* boolean_; ::pg_query::String* string_; ::pg_query::BitString* bit_string_; ::pg_query::List* list_; ::pg_query::IntList* int_list_; ::pg_query::OidList* oid_list_; ::pg_query::A_Const* a_const_; } node_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::uint32_t _oneof_case_[1]; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class NullIfExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.NullIfExpr) */ { public: inline NullIfExpr() : NullIfExpr(nullptr) {} ~NullIfExpr() override; template explicit PROTOBUF_CONSTEXPR NullIfExpr(::google::protobuf::internal::ConstantInitialized); inline NullIfExpr(const NullIfExpr& from) : NullIfExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const NullIfExpr& default_instance() { return *internal_default_instance(); } static inline const NullIfExpr* internal_default_instance() { return reinterpret_cast( &_NullIfExpr_default_instance_); } static constexpr int kIndexInFileMessages = 28; friend void swap(NullIfExpr& a, NullIfExpr& b) { a.Swap(&b); } inline void Swap(NullIfExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NullIfExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- NullIfExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const NullIfExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const NullIfExpr& from) { NullIfExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(NullIfExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.NullIfExpr"; } protected: explicit NullIfExpr(::google::protobuf::Arena* arena); NullIfExpr(::google::protobuf::Arena* arena, const NullIfExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 7, kXprFieldNumber = 1, kOpnoFieldNumber = 2, kOpresulttypeFieldNumber = 3, kOpretsetFieldNumber = 4, kOpcollidFieldNumber = 5, kInputcollidFieldNumber = 6, kLocationFieldNumber = 8, }; // repeated .pg_query.Node args = 7 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args() ; ::pg_query::Node* mutable_args(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 opno = 2 [json_name = "opno"]; void clear_opno() ; ::uint32_t opno() const; void set_opno(::uint32_t value); private: ::uint32_t _internal_opno() const; void _internal_set_opno(::uint32_t value); public: // uint32 opresulttype = 3 [json_name = "opresulttype"]; void clear_opresulttype() ; ::uint32_t opresulttype() const; void set_opresulttype(::uint32_t value); private: ::uint32_t _internal_opresulttype() const; void _internal_set_opresulttype(::uint32_t value); public: // bool opretset = 4 [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 = 5 [json_name = "opcollid"]; void clear_opcollid() ; ::uint32_t opcollid() const; void set_opcollid(::uint32_t value); private: ::uint32_t _internal_opcollid() const; void _internal_set_opcollid(::uint32_t value); public: // uint32 inputcollid = 6 [json_name = "inputcollid"]; void clear_inputcollid() ; ::uint32_t inputcollid() const; void set_inputcollid(::uint32_t value); private: ::uint32_t _internal_inputcollid() const; void _internal_set_inputcollid(::uint32_t value); public: // int32 location = 8 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.NullIfExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::uint32_t opno_; ::uint32_t opresulttype_; bool opretset_; ::uint32_t opcollid_; ::uint32_t inputcollid_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class NullTest final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.NullTest) */ { public: inline NullTest() : NullTest(nullptr) {} ~NullTest() override; template explicit PROTOBUF_CONSTEXPR NullTest(::google::protobuf::internal::ConstantInitialized); inline NullTest(const NullTest& from) : NullTest(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const NullTest& default_instance() { return *internal_default_instance(); } static inline const NullTest* internal_default_instance() { return reinterpret_cast( &_NullTest_default_instance_); } static constexpr int kIndexInFileMessages = 61; friend void swap(NullTest& a, NullTest& b) { a.Swap(&b); } inline void Swap(NullTest* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NullTest* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- NullTest* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const NullTest& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const NullTest& from) { NullTest::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(NullTest* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.NullTest"; } protected: explicit NullTest(::google::protobuf::Arena* arena); NullTest(::google::protobuf::Arena* arena, const NullTest& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // .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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.NullTest) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; int nulltesttype_; bool argisrow_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ObjectWithArgs final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ObjectWithArgs) */ { public: inline ObjectWithArgs() : ObjectWithArgs(nullptr) {} ~ObjectWithArgs() override; template explicit PROTOBUF_CONSTEXPR ObjectWithArgs(::google::protobuf::internal::ConstantInitialized); inline ObjectWithArgs(const ObjectWithArgs& from) : ObjectWithArgs(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ObjectWithArgs& default_instance() { return *internal_default_instance(); } static inline const ObjectWithArgs* internal_default_instance() { return reinterpret_cast( &_ObjectWithArgs_default_instance_); } static constexpr int kIndexInFileMessages = 158; friend void swap(ObjectWithArgs& a, ObjectWithArgs& b) { a.Swap(&b); } inline void Swap(ObjectWithArgs* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ObjectWithArgs* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ObjectWithArgs* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ObjectWithArgs& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ObjectWithArgs& from) { ObjectWithArgs::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ObjectWithArgs* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ObjectWithArgs"; } protected: explicit ObjectWithArgs(::google::protobuf::Arena* arena); ObjectWithArgs(::google::protobuf::Arena* arena, const ObjectWithArgs& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kObjnameFieldNumber = 1, kObjargsFieldNumber = 2, kObjfuncargsFieldNumber = 3, kArgsUnspecifiedFieldNumber = 4, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_objname(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_objname() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_objname(); public: const ::pg_query::Node& objname(int index) const; ::pg_query::Node* add_objname(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_objargs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_objargs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_objargs(); public: const ::pg_query::Node& objargs(int index) const; ::pg_query::Node* add_objargs(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& objargs() const; // repeated .pg_query.Node objfuncargs = 3 [json_name = "objfuncargs"]; int objfuncargs_size() const; private: int _internal_objfuncargs_size() const; public: void clear_objfuncargs() ; ::pg_query::Node* mutable_objfuncargs(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_objfuncargs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_objfuncargs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_objfuncargs(); public: const ::pg_query::Node& objfuncargs(int index) const; ::pg_query::Node* add_objfuncargs(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& objfuncargs() const; // bool args_unspecified = 4 [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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > objname_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > objargs_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > objfuncargs_; bool args_unspecified_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class OidList final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.OidList) */ { public: inline OidList() : OidList(nullptr) {} ~OidList() override; template explicit PROTOBUF_CONSTEXPR OidList(::google::protobuf::internal::ConstantInitialized); inline OidList(const OidList& from) : OidList(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const OidList& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(OidList* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- OidList* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const OidList& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const OidList& from) { OidList::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(OidList* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.OidList"; } protected: explicit OidList(::google::protobuf::Arena* arena); OidList(::google::protobuf::Arena* arena, const OidList& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_items() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& items() const; // @@protoc_insertion_point(class_scope:pg_query.OidList) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > items_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class OnConflictClause final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.OnConflictClause) */ { public: inline OnConflictClause() : OnConflictClause(nullptr) {} ~OnConflictClause() override; template explicit PROTOBUF_CONSTEXPR OnConflictClause(::google::protobuf::internal::ConstantInitialized); inline OnConflictClause(const OnConflictClause& from) : OnConflictClause(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const OnConflictClause& default_instance() { return *internal_default_instance(); } static inline const OnConflictClause* internal_default_instance() { return reinterpret_cast( &_OnConflictClause_default_instance_); } static constexpr int kIndexInFileMessages = 120; friend void swap(OnConflictClause& a, OnConflictClause& b) { a.Swap(&b); } inline void Swap(OnConflictClause* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(OnConflictClause* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- OnConflictClause* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const OnConflictClause& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const OnConflictClause& from) { OnConflictClause::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(OnConflictClause* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.OnConflictClause"; } protected: explicit OnConflictClause(::google::protobuf::Arena* arena); OnConflictClause(::google::protobuf::Arena* arena, const OnConflictClause& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_target_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& target_list() const; // .pg_query.InferClause infer = 2 [json_name = "infer"]; bool has_infer() const; void clear_infer() ; const ::pg_query::InferClause& infer() const; PROTOBUF_NODISCARD ::pg_query::InferClause* release_infer(); ::pg_query::InferClause* mutable_infer(); void set_allocated_infer(::pg_query::InferClause* value); void unsafe_arena_set_allocated_infer(::pg_query::InferClause* value); ::pg_query::InferClause* unsafe_arena_release_infer(); private: const ::pg_query::InferClause& _internal_infer() const; ::pg_query::InferClause* _internal_mutable_infer(); public: // .pg_query.Node where_clause = 4 [json_name = "whereClause"]; bool has_where_clause() const; void clear_where_clause() ; const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* value); void unsafe_arena_set_allocated_where_clause(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_where_clause(); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: // .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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.OnConflictClause) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > target_list_; ::pg_query::InferClause* infer_; ::pg_query::Node* where_clause_; int action_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class OnConflictExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.OnConflictExpr) */ { public: inline OnConflictExpr() : OnConflictExpr(nullptr) {} ~OnConflictExpr() override; template explicit PROTOBUF_CONSTEXPR OnConflictExpr(::google::protobuf::internal::ConstantInitialized); inline OnConflictExpr(const OnConflictExpr& from) : OnConflictExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const OnConflictExpr& default_instance() { return *internal_default_instance(); } static inline const OnConflictExpr* internal_default_instance() { return reinterpret_cast( &_OnConflictExpr_default_instance_); } static constexpr int kIndexInFileMessages = 74; friend void swap(OnConflictExpr& a, OnConflictExpr& b) { a.Swap(&b); } inline void Swap(OnConflictExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(OnConflictExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- OnConflictExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const OnConflictExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const OnConflictExpr& from) { OnConflictExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(OnConflictExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.OnConflictExpr"; } protected: explicit OnConflictExpr(::google::protobuf::Arena* arena); OnConflictExpr(::google::protobuf::Arena* arena, const OnConflictExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_arbiter_elems(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_arbiter_elems() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_arbiter_elems(); public: const ::pg_query::Node& arbiter_elems(int index) const; ::pg_query::Node* add_arbiter_elems(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_on_conflict_set(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_on_conflict_set() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_on_conflict_set(); public: const ::pg_query::Node& on_conflict_set(int index) const; ::pg_query::Node* add_on_conflict_set(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_excl_rel_tlist(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_excl_rel_tlist() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_excl_rel_tlist(); public: const ::pg_query::Node& excl_rel_tlist(int index) const; ::pg_query::Node* add_excl_rel_tlist(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& excl_rel_tlist() const; // .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; bool has_arbiter_where() const; void clear_arbiter_where() ; const ::pg_query::Node& arbiter_where() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arbiter_where(); ::pg_query::Node* mutable_arbiter_where(); void set_allocated_arbiter_where(::pg_query::Node* value); void unsafe_arena_set_allocated_arbiter_where(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arbiter_where(); private: const ::pg_query::Node& _internal_arbiter_where() const; ::pg_query::Node* _internal_mutable_arbiter_where(); public: // .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; bool has_on_conflict_where() const; void clear_on_conflict_where() ; const ::pg_query::Node& on_conflict_where() const; PROTOBUF_NODISCARD ::pg_query::Node* release_on_conflict_where(); ::pg_query::Node* mutable_on_conflict_where(); void set_allocated_on_conflict_where(::pg_query::Node* value); void unsafe_arena_set_allocated_on_conflict_where(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_on_conflict_where(); private: const ::pg_query::Node& _internal_on_conflict_where() const; ::pg_query::Node* _internal_mutable_on_conflict_where(); public: // .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() ; ::uint32_t constraint() const; void set_constraint(::uint32_t value); private: ::uint32_t _internal_constraint() const; void _internal_set_constraint(::uint32_t value); public: // int32 excl_rel_index = 7 [json_name = "exclRelIndex"]; void clear_excl_rel_index() ; ::int32_t excl_rel_index() const; void set_excl_rel_index(::int32_t value); private: ::int32_t _internal_excl_rel_index() const; void _internal_set_excl_rel_index(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.OnConflictExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 5, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > arbiter_elems_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > on_conflict_set_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > excl_rel_tlist_; ::pg_query::Node* arbiter_where_; ::pg_query::Node* on_conflict_where_; int action_; ::uint32_t constraint_; ::int32_t excl_rel_index_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class OpExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.OpExpr) */ { public: inline OpExpr() : OpExpr(nullptr) {} ~OpExpr() override; template explicit PROTOBUF_CONSTEXPR OpExpr(::google::protobuf::internal::ConstantInitialized); inline OpExpr(const OpExpr& from) : OpExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const OpExpr& default_instance() { return *internal_default_instance(); } static inline const OpExpr* internal_default_instance() { return reinterpret_cast( &_OpExpr_default_instance_); } static constexpr int kIndexInFileMessages = 26; friend void swap(OpExpr& a, OpExpr& b) { a.Swap(&b); } inline void Swap(OpExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(OpExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- OpExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const OpExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const OpExpr& from) { OpExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(OpExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.OpExpr"; } protected: explicit OpExpr(::google::protobuf::Arena* arena); OpExpr(::google::protobuf::Arena* arena, const OpExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 7, kXprFieldNumber = 1, kOpnoFieldNumber = 2, kOpresulttypeFieldNumber = 3, kOpretsetFieldNumber = 4, kOpcollidFieldNumber = 5, kInputcollidFieldNumber = 6, kLocationFieldNumber = 8, }; // repeated .pg_query.Node args = 7 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args() ; ::pg_query::Node* mutable_args(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 opno = 2 [json_name = "opno"]; void clear_opno() ; ::uint32_t opno() const; void set_opno(::uint32_t value); private: ::uint32_t _internal_opno() const; void _internal_set_opno(::uint32_t value); public: // uint32 opresulttype = 3 [json_name = "opresulttype"]; void clear_opresulttype() ; ::uint32_t opresulttype() const; void set_opresulttype(::uint32_t value); private: ::uint32_t _internal_opresulttype() const; void _internal_set_opresulttype(::uint32_t value); public: // bool opretset = 4 [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 = 5 [json_name = "opcollid"]; void clear_opcollid() ; ::uint32_t opcollid() const; void set_opcollid(::uint32_t value); private: ::uint32_t _internal_opcollid() const; void _internal_set_opcollid(::uint32_t value); public: // uint32 inputcollid = 6 [json_name = "inputcollid"]; void clear_inputcollid() ; ::uint32_t inputcollid() const; void set_inputcollid(::uint32_t value); private: ::uint32_t _internal_inputcollid() const; void _internal_set_inputcollid(::uint32_t value); public: // int32 location = 8 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.OpExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::uint32_t opno_; ::uint32_t opresulttype_; bool opretset_; ::uint32_t opcollid_; ::uint32_t inputcollid_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class PLAssignStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.PLAssignStmt) */ { public: inline PLAssignStmt() : PLAssignStmt(nullptr) {} ~PLAssignStmt() override; template explicit PROTOBUF_CONSTEXPR PLAssignStmt(::google::protobuf::internal::ConstantInitialized); inline PLAssignStmt(const PLAssignStmt& from) : PLAssignStmt(nullptr, from) {} PLAssignStmt(PLAssignStmt&& from) noexcept : PLAssignStmt() { *this = ::std::move(from); } inline PLAssignStmt& operator=(const PLAssignStmt& from) { CopyFrom(from); return *this; } inline PLAssignStmt& operator=(PLAssignStmt&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const PLAssignStmt& default_instance() { return *internal_default_instance(); } static inline const PLAssignStmt* internal_default_instance() { return reinterpret_cast( &_PLAssignStmt_default_instance_); } static constexpr int kIndexInFileMessages = 150; friend void swap(PLAssignStmt& a, PLAssignStmt& b) { a.Swap(&b); } inline void Swap(PLAssignStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PLAssignStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PLAssignStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const PLAssignStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const PLAssignStmt& from) { PLAssignStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(PLAssignStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.PLAssignStmt"; } protected: explicit PLAssignStmt(::google::protobuf::Arena* arena); PLAssignStmt(::google::protobuf::Arena* arena, const PLAssignStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kIndirectionFieldNumber = 2, kNameFieldNumber = 1, kValFieldNumber = 4, kNnamesFieldNumber = 3, kLocationFieldNumber = 5, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_indirection(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_indirection() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_indirection(); public: const ::pg_query::Node& indirection(int index) const; ::pg_query::Node* add_indirection(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& indirection() const; // string name = 1 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_name( const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.SelectStmt val = 4 [json_name = "val"]; bool has_val() const; void clear_val() ; const ::pg_query::SelectStmt& val() const; PROTOBUF_NODISCARD ::pg_query::SelectStmt* release_val(); ::pg_query::SelectStmt* mutable_val(); void set_allocated_val(::pg_query::SelectStmt* value); void unsafe_arena_set_allocated_val(::pg_query::SelectStmt* value); ::pg_query::SelectStmt* unsafe_arena_release_val(); private: const ::pg_query::SelectStmt& _internal_val() const; ::pg_query::SelectStmt* _internal_mutable_val(); public: // int32 nnames = 3 [json_name = "nnames"]; void clear_nnames() ; ::int32_t nnames() const; void set_nnames(::int32_t value); private: ::int32_t _internal_nnames() const; void _internal_set_nnames(::int32_t value); public: // int32 location = 5 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.PLAssignStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 34, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > indirection_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::SelectStmt* val_; ::int32_t nnames_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class Param final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.Param) */ { public: inline Param() : Param(nullptr) {} ~Param() override; template explicit PROTOBUF_CONSTEXPR Param(::google::protobuf::internal::ConstantInitialized); inline Param(const Param& from) : Param(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const Param& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Param* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Param* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const Param& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const Param& from) { Param::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(Param* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.Param"; } protected: explicit Param(::google::protobuf::Arena* arena); Param(::google::protobuf::Arena* arena, const Param& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .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() ; ::int32_t paramid() const; void set_paramid(::int32_t value); private: ::int32_t _internal_paramid() const; void _internal_set_paramid(::int32_t value); public: // uint32 paramtype = 4 [json_name = "paramtype"]; void clear_paramtype() ; ::uint32_t paramtype() const; void set_paramtype(::uint32_t value); private: ::uint32_t _internal_paramtype() const; void _internal_set_paramtype(::uint32_t value); public: // int32 paramtypmod = 5 [json_name = "paramtypmod"]; void clear_paramtypmod() ; ::int32_t paramtypmod() const; void set_paramtypmod(::int32_t value); private: ::int32_t _internal_paramtypmod() const; void _internal_set_paramtypmod(::int32_t value); public: // uint32 paramcollid = 6 [json_name = "paramcollid"]; void clear_paramcollid() ; ::uint32_t paramcollid() const; void set_paramcollid(::uint32_t value); private: ::uint32_t _internal_paramcollid() const; void _internal_set_paramcollid(::uint32_t value); public: // int32 location = 7 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.Param) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; int paramkind_; ::int32_t paramid_; ::uint32_t paramtype_; ::int32_t paramtypmod_; ::uint32_t paramcollid_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class PartitionBoundSpec final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionBoundSpec) */ { public: inline PartitionBoundSpec() : PartitionBoundSpec(nullptr) {} ~PartitionBoundSpec() override; template explicit PROTOBUF_CONSTEXPR PartitionBoundSpec(::google::protobuf::internal::ConstantInitialized); inline PartitionBoundSpec(const PartitionBoundSpec& from) : PartitionBoundSpec(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const PartitionBoundSpec& default_instance() { return *internal_default_instance(); } static inline const PartitionBoundSpec* internal_default_instance() { return reinterpret_cast( &_PartitionBoundSpec_default_instance_); } static constexpr int kIndexInFileMessages = 105; friend void swap(PartitionBoundSpec& a, PartitionBoundSpec& b) { a.Swap(&b); } inline void Swap(PartitionBoundSpec* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionBoundSpec* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PartitionBoundSpec* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const PartitionBoundSpec& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const PartitionBoundSpec& from) { PartitionBoundSpec::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(PartitionBoundSpec* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.PartitionBoundSpec"; } protected: explicit PartitionBoundSpec(::google::protobuf::Arena* arena); PartitionBoundSpec(::google::protobuf::Arena* arena, const PartitionBoundSpec& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_listdatums(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_listdatums() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_listdatums(); public: const ::pg_query::Node& listdatums(int index) const; ::pg_query::Node* add_listdatums(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_lowerdatums(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_lowerdatums() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_lowerdatums(); public: const ::pg_query::Node& lowerdatums(int index) const; ::pg_query::Node* add_lowerdatums(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_upperdatums(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_upperdatums() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_upperdatums(); public: const ::pg_query::Node& upperdatums(int index) const; ::pg_query::Node* add_upperdatums(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& upperdatums() const; // string strategy = 1 [json_name = "strategy"]; void clear_strategy() ; const std::string& strategy() const; template void set_strategy(Arg_&& arg, Args_... args); std::string* mutable_strategy(); PROTOBUF_NODISCARD std::string* release_strategy(); void set_allocated_strategy(std::string* value); private: const std::string& _internal_strategy() const; inline PROTOBUF_ALWAYS_INLINE 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() ; ::int32_t modulus() const; void set_modulus(::int32_t value); private: ::int32_t _internal_modulus() const; void _internal_set_modulus(::int32_t value); public: // int32 remainder = 4 [json_name = "remainder"]; void clear_remainder() ; ::int32_t remainder() const; void set_remainder(::int32_t value); private: ::int32_t _internal_remainder() const; void _internal_set_remainder(::int32_t value); public: // int32 location = 8 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.PartitionBoundSpec) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 3, 52, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > listdatums_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > lowerdatums_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > upperdatums_; ::google::protobuf::internal::ArenaStringPtr strategy_; bool is_default_; ::int32_t modulus_; ::int32_t remainder_; ::int32_t location_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class PartitionCmd final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionCmd) */ { public: inline PartitionCmd() : PartitionCmd(nullptr) {} ~PartitionCmd() override; template explicit PROTOBUF_CONSTEXPR PartitionCmd(::google::protobuf::internal::ConstantInitialized); inline PartitionCmd(const PartitionCmd& from) : PartitionCmd(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const PartitionCmd& default_instance() { return *internal_default_instance(); } static inline const PartitionCmd* internal_default_instance() { return reinterpret_cast( &_PartitionCmd_default_instance_); } static constexpr int kIndexInFileMessages = 108; friend void swap(PartitionCmd& a, PartitionCmd& b) { a.Swap(&b); } inline void Swap(PartitionCmd* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionCmd* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PartitionCmd* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const PartitionCmd& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const PartitionCmd& from) { PartitionCmd::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(PartitionCmd* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.PartitionCmd"; } protected: explicit PartitionCmd(::google::protobuf::Arena* arena); PartitionCmd(::google::protobuf::Arena* arena, const PartitionCmd& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 1, kBoundFieldNumber = 2, kConcurrentFieldNumber = 3, }; // .pg_query.RangeVar name = 1 [json_name = "name"]; bool has_name() const; void clear_name() ; const ::pg_query::RangeVar& name() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_name(); ::pg_query::RangeVar* mutable_name(); void set_allocated_name(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_name(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_name(); private: const ::pg_query::RangeVar& _internal_name() const; ::pg_query::RangeVar* _internal_mutable_name(); public: // .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; bool has_bound() const; void clear_bound() ; const ::pg_query::PartitionBoundSpec& bound() const; PROTOBUF_NODISCARD ::pg_query::PartitionBoundSpec* release_bound(); ::pg_query::PartitionBoundSpec* mutable_bound(); void set_allocated_bound(::pg_query::PartitionBoundSpec* value); void unsafe_arena_set_allocated_bound(::pg_query::PartitionBoundSpec* value); ::pg_query::PartitionBoundSpec* unsafe_arena_release_bound(); private: const ::pg_query::PartitionBoundSpec& _internal_bound() const; ::pg_query::PartitionBoundSpec* _internal_mutable_bound(); public: // bool concurrent = 3 [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.PartitionCmd) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::RangeVar* name_; ::pg_query::PartitionBoundSpec* bound_; bool concurrent_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class PartitionElem final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionElem) */ { public: inline PartitionElem() : PartitionElem(nullptr) {} ~PartitionElem() override; template explicit PROTOBUF_CONSTEXPR PartitionElem(::google::protobuf::internal::ConstantInitialized); inline PartitionElem(const PartitionElem& from) : PartitionElem(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const PartitionElem& default_instance() { return *internal_default_instance(); } static inline const PartitionElem* internal_default_instance() { return reinterpret_cast( &_PartitionElem_default_instance_); } static constexpr int kIndexInFileMessages = 103; friend void swap(PartitionElem& a, PartitionElem& b) { a.Swap(&b); } inline void Swap(PartitionElem* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionElem* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PartitionElem* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const PartitionElem& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const PartitionElem& from) { PartitionElem::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(PartitionElem* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.PartitionElem"; } protected: explicit PartitionElem(::google::protobuf::Arena* arena); PartitionElem(::google::protobuf::Arena* arena, const PartitionElem& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_collation(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_collation() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_collation(); public: const ::pg_query::Node& collation(int index) const; ::pg_query::Node* add_collation(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_opclass(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_opclass() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_opclass(); public: const ::pg_query::Node& opclass(int index) const; ::pg_query::Node* add_opclass(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& opclass() const; // string name = 1 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_expr() ; const ::pg_query::Node& expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* value); void unsafe_arena_set_allocated_expr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_expr(); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: // int32 location = 5 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.PartitionElem) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 3, 35, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > collation_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > opclass_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::Node* expr_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class PartitionRangeDatum final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionRangeDatum) */ { public: inline PartitionRangeDatum() : PartitionRangeDatum(nullptr) {} ~PartitionRangeDatum() override; template explicit PROTOBUF_CONSTEXPR PartitionRangeDatum(::google::protobuf::internal::ConstantInitialized); inline PartitionRangeDatum(const PartitionRangeDatum& from) : PartitionRangeDatum(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const PartitionRangeDatum& default_instance() { return *internal_default_instance(); } static inline const PartitionRangeDatum* internal_default_instance() { return reinterpret_cast( &_PartitionRangeDatum_default_instance_); } static constexpr int kIndexInFileMessages = 106; friend void swap(PartitionRangeDatum& a, PartitionRangeDatum& b) { a.Swap(&b); } inline void Swap(PartitionRangeDatum* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionRangeDatum* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PartitionRangeDatum* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const PartitionRangeDatum& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const PartitionRangeDatum& from) { PartitionRangeDatum::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(PartitionRangeDatum* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.PartitionRangeDatum"; } protected: explicit PartitionRangeDatum(::google::protobuf::Arena* arena); PartitionRangeDatum(::google::protobuf::Arena* arena, const PartitionRangeDatum& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kValueFieldNumber = 2, kKindFieldNumber = 1, kLocationFieldNumber = 3, }; // .pg_query.Node value = 2 [json_name = "value"]; bool has_value() const; void clear_value() ; const ::pg_query::Node& value() const; PROTOBUF_NODISCARD ::pg_query::Node* release_value(); ::pg_query::Node* mutable_value(); void set_allocated_value(::pg_query::Node* value); void unsafe_arena_set_allocated_value(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_value(); private: const ::pg_query::Node& _internal_value() const; ::pg_query::Node* _internal_mutable_value(); public: // .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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.PartitionRangeDatum) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* value_; int kind_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class PartitionSpec final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionSpec) */ { public: inline PartitionSpec() : PartitionSpec(nullptr) {} ~PartitionSpec() override; template explicit PROTOBUF_CONSTEXPR PartitionSpec(::google::protobuf::internal::ConstantInitialized); inline PartitionSpec(const PartitionSpec& from) : PartitionSpec(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const PartitionSpec& default_instance() { return *internal_default_instance(); } static inline const PartitionSpec* internal_default_instance() { return reinterpret_cast( &_PartitionSpec_default_instance_); } static constexpr int kIndexInFileMessages = 104; friend void swap(PartitionSpec& a, PartitionSpec& b) { a.Swap(&b); } inline void Swap(PartitionSpec* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionSpec* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PartitionSpec* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const PartitionSpec& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const PartitionSpec& from) { PartitionSpec::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(PartitionSpec* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.PartitionSpec"; } protected: explicit PartitionSpec(::google::protobuf::Arena* arena); PartitionSpec(::google::protobuf::Arena* arena, const PartitionSpec& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_part_params(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_part_params() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_part_params(); public: const ::pg_query::Node& part_params(int index) const; ::pg_query::Node* add_part_params(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& part_params() const; // .pg_query.PartitionStrategy strategy = 1 [json_name = "strategy"]; void clear_strategy() ; ::pg_query::PartitionStrategy strategy() const; void set_strategy(::pg_query::PartitionStrategy value); private: ::pg_query::PartitionStrategy _internal_strategy() const; void _internal_set_strategy(::pg_query::PartitionStrategy value); public: // int32 location = 3 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.PartitionSpec) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > part_params_; int strategy_; ::int32_t location_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class PrepareStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.PrepareStmt) */ { public: inline PrepareStmt() : PrepareStmt(nullptr) {} ~PrepareStmt() override; template explicit PROTOBUF_CONSTEXPR PrepareStmt(::google::protobuf::internal::ConstantInitialized); inline PrepareStmt(const PrepareStmt& from) : PrepareStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const PrepareStmt& default_instance() { return *internal_default_instance(); } static inline const PrepareStmt* internal_default_instance() { return reinterpret_cast( &_PrepareStmt_default_instance_); } static constexpr int kIndexInFileMessages = 257; friend void swap(PrepareStmt& a, PrepareStmt& b) { a.Swap(&b); } inline void Swap(PrepareStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PrepareStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PrepareStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const PrepareStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const PrepareStmt& from) { PrepareStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(PrepareStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.PrepareStmt"; } protected: explicit PrepareStmt(::google::protobuf::Arena* arena); PrepareStmt(::google::protobuf::Arena* arena, const PrepareStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_argtypes(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_argtypes() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_argtypes(); public: const ::pg_query::Node& argtypes(int index) const; ::pg_query::Node* add_argtypes(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& argtypes() const; // string name = 1 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_query() ; const ::pg_query::Node& query() const; PROTOBUF_NODISCARD ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* value); void unsafe_arena_set_allocated_query(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_query(); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: // @@protoc_insertion_point(class_scope:pg_query.PrepareStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 33, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > argtypes_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::Node* query_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class PublicationObjSpec final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.PublicationObjSpec) */ { public: inline PublicationObjSpec() : PublicationObjSpec(nullptr) {} ~PublicationObjSpec() override; template explicit PROTOBUF_CONSTEXPR PublicationObjSpec(::google::protobuf::internal::ConstantInitialized); inline PublicationObjSpec(const PublicationObjSpec& from) : PublicationObjSpec(nullptr, from) {} PublicationObjSpec(PublicationObjSpec&& from) noexcept : PublicationObjSpec() { *this = ::std::move(from); } inline PublicationObjSpec& operator=(const PublicationObjSpec& from) { CopyFrom(from); return *this; } inline PublicationObjSpec& operator=(PublicationObjSpec&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const PublicationObjSpec& default_instance() { return *internal_default_instance(); } static inline const PublicationObjSpec* internal_default_instance() { return reinterpret_cast( &_PublicationObjSpec_default_instance_); } static constexpr int kIndexInFileMessages = 265; friend void swap(PublicationObjSpec& a, PublicationObjSpec& b) { a.Swap(&b); } inline void Swap(PublicationObjSpec* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PublicationObjSpec* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PublicationObjSpec* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const PublicationObjSpec& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const PublicationObjSpec& from) { PublicationObjSpec::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(PublicationObjSpec* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.PublicationObjSpec"; } protected: explicit PublicationObjSpec(::google::protobuf::Arena* arena); PublicationObjSpec(::google::protobuf::Arena* arena, const PublicationObjSpec& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 2, kPubtableFieldNumber = 3, kPubobjtypeFieldNumber = 1, kLocationFieldNumber = 4, }; // string name = 2 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_name( const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.PublicationTable pubtable = 3 [json_name = "pubtable"]; bool has_pubtable() const; void clear_pubtable() ; const ::pg_query::PublicationTable& pubtable() const; PROTOBUF_NODISCARD ::pg_query::PublicationTable* release_pubtable(); ::pg_query::PublicationTable* mutable_pubtable(); void set_allocated_pubtable(::pg_query::PublicationTable* value); void unsafe_arena_set_allocated_pubtable(::pg_query::PublicationTable* value); ::pg_query::PublicationTable* unsafe_arena_release_pubtable(); private: const ::pg_query::PublicationTable& _internal_pubtable() const; ::pg_query::PublicationTable* _internal_mutable_pubtable(); public: // .pg_query.PublicationObjSpecType pubobjtype = 1 [json_name = "pubobjtype"]; void clear_pubobjtype() ; ::pg_query::PublicationObjSpecType pubobjtype() const; void set_pubobjtype(::pg_query::PublicationObjSpecType value); private: ::pg_query::PublicationObjSpecType _internal_pubobjtype() const; void _internal_set_pubobjtype(::pg_query::PublicationObjSpecType value); public: // int32 location = 4 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.PublicationObjSpec) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 1, 40, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::PublicationTable* pubtable_; int pubobjtype_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class PublicationTable final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.PublicationTable) */ { public: inline PublicationTable() : PublicationTable(nullptr) {} ~PublicationTable() override; template explicit PROTOBUF_CONSTEXPR PublicationTable(::google::protobuf::internal::ConstantInitialized); inline PublicationTable(const PublicationTable& from) : PublicationTable(nullptr, from) {} PublicationTable(PublicationTable&& from) noexcept : PublicationTable() { *this = ::std::move(from); } inline PublicationTable& operator=(const PublicationTable& from) { CopyFrom(from); return *this; } inline PublicationTable& operator=(PublicationTable&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const PublicationTable& default_instance() { return *internal_default_instance(); } static inline const PublicationTable* internal_default_instance() { return reinterpret_cast( &_PublicationTable_default_instance_); } static constexpr int kIndexInFileMessages = 264; friend void swap(PublicationTable& a, PublicationTable& b) { a.Swap(&b); } inline void Swap(PublicationTable* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PublicationTable* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- PublicationTable* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const PublicationTable& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const PublicationTable& from) { PublicationTable::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(PublicationTable* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.PublicationTable"; } protected: explicit PublicationTable(::google::protobuf::Arena* arena); PublicationTable(::google::protobuf::Arena* arena, const PublicationTable& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kColumnsFieldNumber = 3, kRelationFieldNumber = 1, kWhereClauseFieldNumber = 2, }; // repeated .pg_query.Node columns = 3 [json_name = "columns"]; int columns_size() const; private: int _internal_columns_size() const; public: void clear_columns() ; ::pg_query::Node* mutable_columns(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_columns(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_columns() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_columns(); public: const ::pg_query::Node& columns(int index) const; ::pg_query::Node* add_columns(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& columns() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; bool has_where_clause() const; void clear_where_clause() ; const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* value); void unsafe_arena_set_allocated_where_clause(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_where_clause(); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: // @@protoc_insertion_point(class_scope:pg_query.PublicationTable) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > columns_; ::pg_query::RangeVar* relation_; ::pg_query::Node* where_clause_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class Query final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.Query) */ { public: inline Query() : Query(nullptr) {} ~Query() override; template explicit PROTOBUF_CONSTEXPR Query(::google::protobuf::internal::ConstantInitialized); inline Query(const Query& from) : Query(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const Query& default_instance() { return *internal_default_instance(); } static inline const Query* internal_default_instance() { return reinterpret_cast( &_Query_default_instance_); } static constexpr int kIndexInFileMessages = 75; friend void swap(Query& a, Query& b) { a.Swap(&b); } inline void Swap(Query* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Query* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Query* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const Query& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const Query& from) { Query::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(Query* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.Query"; } protected: explicit Query(::google::protobuf::Arena* arena); Query(::google::protobuf::Arena* arena, const Query& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCteListFieldNumber = 16, kRtableFieldNumber = 17, kRteperminfosFieldNumber = 18, kMergeActionListFieldNumber = 20, kTargetListFieldNumber = 23, kReturningListFieldNumber = 26, kGroupClauseFieldNumber = 27, kGroupingSetsFieldNumber = 29, kWindowClauseFieldNumber = 31, kDistinctClauseFieldNumber = 32, kSortClauseFieldNumber = 33, kRowMarksFieldNumber = 37, kConstraintDepsFieldNumber = 39, kWithCheckOptionsFieldNumber = 40, kUtilityStmtFieldNumber = 4, kJointreeFieldNumber = 19, kMergeJoinConditionFieldNumber = 22, kOnConflictFieldNumber = 25, kHavingQualFieldNumber = 30, kLimitOffsetFieldNumber = 34, kLimitCountFieldNumber = 35, kSetOperationsFieldNumber = 38, 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, kIsReturnFieldNumber = 15, kGroupDistinctFieldNumber = 28, kMergeTargetRelationFieldNumber = 21, kOverrideFieldNumber = 24, kLimitOptionFieldNumber = 36, kStmtLocationFieldNumber = 41, kStmtLenFieldNumber = 42, }; // repeated .pg_query.Node cte_list = 16 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_cte_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_cte_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_cte_list(); public: const ::pg_query::Node& cte_list(int index) const; ::pg_query::Node* add_cte_list(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& cte_list() const; // repeated .pg_query.Node rtable = 17 [json_name = "rtable"]; int rtable_size() const; private: int _internal_rtable_size() const; public: void clear_rtable() ; ::pg_query::Node* mutable_rtable(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_rtable(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_rtable() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_rtable(); public: const ::pg_query::Node& rtable(int index) const; ::pg_query::Node* add_rtable(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& rtable() const; // repeated .pg_query.Node rteperminfos = 18 [json_name = "rteperminfos"]; int rteperminfos_size() const; private: int _internal_rteperminfos_size() const; public: void clear_rteperminfos() ; ::pg_query::Node* mutable_rteperminfos(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_rteperminfos(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_rteperminfos() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_rteperminfos(); public: const ::pg_query::Node& rteperminfos(int index) const; ::pg_query::Node* add_rteperminfos(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& rteperminfos() const; // repeated .pg_query.Node merge_action_list = 20 [json_name = "mergeActionList"]; int merge_action_list_size() const; private: int _internal_merge_action_list_size() const; public: void clear_merge_action_list() ; ::pg_query::Node* mutable_merge_action_list(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_merge_action_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_merge_action_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_merge_action_list(); public: const ::pg_query::Node& merge_action_list(int index) const; ::pg_query::Node* add_merge_action_list(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& merge_action_list() const; // repeated .pg_query.Node target_list = 23 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_target_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& target_list() const; // repeated .pg_query.Node returning_list = 26 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_returning_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_returning_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_returning_list(); public: const ::pg_query::Node& returning_list(int index) const; ::pg_query::Node* add_returning_list(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& returning_list() const; // repeated .pg_query.Node group_clause = 27 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_group_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_group_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_group_clause(); public: const ::pg_query::Node& group_clause(int index) const; ::pg_query::Node* add_group_clause(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& group_clause() const; // repeated .pg_query.Node grouping_sets = 29 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_grouping_sets(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_grouping_sets() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_grouping_sets(); public: const ::pg_query::Node& grouping_sets(int index) const; ::pg_query::Node* add_grouping_sets(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& grouping_sets() const; // repeated .pg_query.Node window_clause = 31 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_window_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_window_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_window_clause(); public: const ::pg_query::Node& window_clause(int index) const; ::pg_query::Node* add_window_clause(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& window_clause() const; // repeated .pg_query.Node distinct_clause = 32 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_distinct_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_distinct_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_distinct_clause(); public: const ::pg_query::Node& distinct_clause(int index) const; ::pg_query::Node* add_distinct_clause(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& distinct_clause() const; // repeated .pg_query.Node sort_clause = 33 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_sort_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_sort_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_sort_clause(); public: const ::pg_query::Node& sort_clause(int index) const; ::pg_query::Node* add_sort_clause(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& sort_clause() const; // repeated .pg_query.Node row_marks = 37 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_row_marks(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_row_marks() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_row_marks(); public: const ::pg_query::Node& row_marks(int index) const; ::pg_query::Node* add_row_marks(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& row_marks() const; // repeated .pg_query.Node constraint_deps = 39 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_constraint_deps(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_constraint_deps() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_constraint_deps(); public: const ::pg_query::Node& constraint_deps(int index) const; ::pg_query::Node* add_constraint_deps(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& constraint_deps() const; // repeated .pg_query.Node with_check_options = 40 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_with_check_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_with_check_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_with_check_options(); public: const ::pg_query::Node& with_check_options(int index) const; ::pg_query::Node* add_with_check_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& with_check_options() const; // .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; bool has_utility_stmt() const; void clear_utility_stmt() ; const ::pg_query::Node& utility_stmt() const; PROTOBUF_NODISCARD ::pg_query::Node* release_utility_stmt(); ::pg_query::Node* mutable_utility_stmt(); void set_allocated_utility_stmt(::pg_query::Node* value); void unsafe_arena_set_allocated_utility_stmt(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_utility_stmt(); private: const ::pg_query::Node& _internal_utility_stmt() const; ::pg_query::Node* _internal_mutable_utility_stmt(); public: // .pg_query.FromExpr jointree = 19 [json_name = "jointree"]; bool has_jointree() const; void clear_jointree() ; const ::pg_query::FromExpr& jointree() const; PROTOBUF_NODISCARD ::pg_query::FromExpr* release_jointree(); ::pg_query::FromExpr* mutable_jointree(); void set_allocated_jointree(::pg_query::FromExpr* value); void unsafe_arena_set_allocated_jointree(::pg_query::FromExpr* value); ::pg_query::FromExpr* unsafe_arena_release_jointree(); private: const ::pg_query::FromExpr& _internal_jointree() const; ::pg_query::FromExpr* _internal_mutable_jointree(); public: // .pg_query.Node merge_join_condition = 22 [json_name = "mergeJoinCondition"]; bool has_merge_join_condition() const; void clear_merge_join_condition() ; const ::pg_query::Node& merge_join_condition() const; PROTOBUF_NODISCARD ::pg_query::Node* release_merge_join_condition(); ::pg_query::Node* mutable_merge_join_condition(); void set_allocated_merge_join_condition(::pg_query::Node* value); void unsafe_arena_set_allocated_merge_join_condition(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_merge_join_condition(); private: const ::pg_query::Node& _internal_merge_join_condition() const; ::pg_query::Node* _internal_mutable_merge_join_condition(); public: // .pg_query.OnConflictExpr on_conflict = 25 [json_name = "onConflict"]; bool has_on_conflict() const; void clear_on_conflict() ; const ::pg_query::OnConflictExpr& on_conflict() const; PROTOBUF_NODISCARD ::pg_query::OnConflictExpr* release_on_conflict(); ::pg_query::OnConflictExpr* mutable_on_conflict(); void set_allocated_on_conflict(::pg_query::OnConflictExpr* value); void unsafe_arena_set_allocated_on_conflict(::pg_query::OnConflictExpr* value); ::pg_query::OnConflictExpr* unsafe_arena_release_on_conflict(); private: const ::pg_query::OnConflictExpr& _internal_on_conflict() const; ::pg_query::OnConflictExpr* _internal_mutable_on_conflict(); public: // .pg_query.Node having_qual = 30 [json_name = "havingQual"]; bool has_having_qual() const; void clear_having_qual() ; const ::pg_query::Node& having_qual() const; PROTOBUF_NODISCARD ::pg_query::Node* release_having_qual(); ::pg_query::Node* mutable_having_qual(); void set_allocated_having_qual(::pg_query::Node* value); void unsafe_arena_set_allocated_having_qual(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_having_qual(); private: const ::pg_query::Node& _internal_having_qual() const; ::pg_query::Node* _internal_mutable_having_qual(); public: // .pg_query.Node limit_offset = 34 [json_name = "limitOffset"]; bool has_limit_offset() const; void clear_limit_offset() ; const ::pg_query::Node& limit_offset() const; PROTOBUF_NODISCARD ::pg_query::Node* release_limit_offset(); ::pg_query::Node* mutable_limit_offset(); void set_allocated_limit_offset(::pg_query::Node* value); void unsafe_arena_set_allocated_limit_offset(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_limit_offset(); private: const ::pg_query::Node& _internal_limit_offset() const; ::pg_query::Node* _internal_mutable_limit_offset(); public: // .pg_query.Node limit_count = 35 [json_name = "limitCount"]; bool has_limit_count() const; void clear_limit_count() ; const ::pg_query::Node& limit_count() const; PROTOBUF_NODISCARD ::pg_query::Node* release_limit_count(); ::pg_query::Node* mutable_limit_count(); void set_allocated_limit_count(::pg_query::Node* value); void unsafe_arena_set_allocated_limit_count(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_limit_count(); private: const ::pg_query::Node& _internal_limit_count() const; ::pg_query::Node* _internal_mutable_limit_count(); public: // .pg_query.Node set_operations = 38 [json_name = "setOperations"]; bool has_set_operations() const; void clear_set_operations() ; const ::pg_query::Node& set_operations() const; PROTOBUF_NODISCARD ::pg_query::Node* release_set_operations(); ::pg_query::Node* mutable_set_operations(); void set_allocated_set_operations(::pg_query::Node* value); void unsafe_arena_set_allocated_set_operations(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_set_operations(); private: const ::pg_query::Node& _internal_set_operations() const; ::pg_query::Node* _internal_mutable_set_operations(); public: // .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() ; ::int32_t result_relation() const; void set_result_relation(::int32_t value); private: ::int32_t _internal_result_relation() const; void _internal_set_result_relation(::int32_t 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: // bool is_return = 15 [json_name = "isReturn"]; void clear_is_return() ; bool is_return() const; void set_is_return(bool value); private: bool _internal_is_return() const; void _internal_set_is_return(bool value); public: // bool group_distinct = 28 [json_name = "groupDistinct"]; void clear_group_distinct() ; bool group_distinct() const; void set_group_distinct(bool value); private: bool _internal_group_distinct() const; void _internal_set_group_distinct(bool value); public: // int32 merge_target_relation = 21 [json_name = "mergeTargetRelation"]; void clear_merge_target_relation() ; ::int32_t merge_target_relation() const; void set_merge_target_relation(::int32_t value); private: ::int32_t _internal_merge_target_relation() const; void _internal_set_merge_target_relation(::int32_t value); public: // .pg_query.OverridingKind override = 24 [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 = 36 [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 = 41 [json_name = "stmt_location"]; void clear_stmt_location() ; ::int32_t stmt_location() const; void set_stmt_location(::int32_t value); private: ::int32_t _internal_stmt_location() const; void _internal_set_stmt_location(::int32_t value); public: // int32 stmt_len = 42 [json_name = "stmt_len"]; void clear_stmt_len() ; ::int32_t stmt_len() const; void set_stmt_len(::int32_t value); private: ::int32_t _internal_stmt_len() const; void _internal_set_stmt_len(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.Query) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 5, 42, 22, 0, 7> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > cte_list_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > rtable_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > rteperminfos_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > merge_action_list_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > target_list_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > returning_list_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > group_clause_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > grouping_sets_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > window_clause_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > distinct_clause_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > sort_clause_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > row_marks_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > constraint_deps_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > with_check_options_; ::pg_query::Node* utility_stmt_; ::pg_query::FromExpr* jointree_; ::pg_query::Node* merge_join_condition_; ::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_; ::int32_t 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_; bool is_return_; bool group_distinct_; ::int32_t merge_target_relation_; int override_; int limit_option_; ::int32_t stmt_location_; ::int32_t stmt_len_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RangeFunction final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeFunction) */ { public: inline RangeFunction() : RangeFunction(nullptr) {} ~RangeFunction() override; template explicit PROTOBUF_CONSTEXPR RangeFunction(::google::protobuf::internal::ConstantInitialized); inline RangeFunction(const RangeFunction& from) : RangeFunction(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RangeFunction& default_instance() { return *internal_default_instance(); } static inline const RangeFunction* internal_default_instance() { return reinterpret_cast( &_RangeFunction_default_instance_); } static constexpr int kIndexInFileMessages = 93; friend void swap(RangeFunction& a, RangeFunction& b) { a.Swap(&b); } inline void Swap(RangeFunction* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeFunction* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeFunction* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RangeFunction& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RangeFunction& from) { RangeFunction::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RangeFunction* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RangeFunction"; } protected: explicit RangeFunction(::google::protobuf::Arena* arena); RangeFunction(::google::protobuf::Arena* arena, const RangeFunction& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_functions(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_functions() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_functions(); public: const ::pg_query::Node& functions(int index) const; ::pg_query::Node* add_functions(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_coldeflist(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_coldeflist() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_coldeflist(); public: const ::pg_query::Node& coldeflist(int index) const; ::pg_query::Node* add_coldeflist(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& coldeflist() const; // .pg_query.Alias alias = 5 [json_name = "alias"]; bool has_alias() const; void clear_alias() ; const ::pg_query::Alias& alias() const; PROTOBUF_NODISCARD ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* value); void unsafe_arena_set_allocated_alias(::pg_query::Alias* value); ::pg_query::Alias* unsafe_arena_release_alias(); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: // 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > functions_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > coldeflist_; ::pg_query::Alias* alias_; bool lateral_; bool ordinality_; bool is_rowsfrom_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RangeSubselect final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeSubselect) */ { public: inline RangeSubselect() : RangeSubselect(nullptr) {} ~RangeSubselect() override; template explicit PROTOBUF_CONSTEXPR RangeSubselect(::google::protobuf::internal::ConstantInitialized); inline RangeSubselect(const RangeSubselect& from) : RangeSubselect(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RangeSubselect& default_instance() { return *internal_default_instance(); } static inline const RangeSubselect* internal_default_instance() { return reinterpret_cast( &_RangeSubselect_default_instance_); } static constexpr int kIndexInFileMessages = 92; friend void swap(RangeSubselect& a, RangeSubselect& b) { a.Swap(&b); } inline void Swap(RangeSubselect* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeSubselect* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeSubselect* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RangeSubselect& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RangeSubselect& from) { RangeSubselect::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RangeSubselect* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RangeSubselect"; } protected: explicit RangeSubselect(::google::protobuf::Arena* arena); RangeSubselect(::google::protobuf::Arena* arena, const RangeSubselect& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSubqueryFieldNumber = 2, kAliasFieldNumber = 3, kLateralFieldNumber = 1, }; // .pg_query.Node subquery = 2 [json_name = "subquery"]; bool has_subquery() const; void clear_subquery() ; const ::pg_query::Node& subquery() const; PROTOBUF_NODISCARD ::pg_query::Node* release_subquery(); ::pg_query::Node* mutable_subquery(); void set_allocated_subquery(::pg_query::Node* value); void unsafe_arena_set_allocated_subquery(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_subquery(); private: const ::pg_query::Node& _internal_subquery() const; ::pg_query::Node* _internal_mutable_subquery(); public: // .pg_query.Alias alias = 3 [json_name = "alias"]; bool has_alias() const; void clear_alias() ; const ::pg_query::Alias& alias() const; PROTOBUF_NODISCARD ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* value); void unsafe_arena_set_allocated_alias(::pg_query::Alias* value); ::pg_query::Alias* unsafe_arena_release_alias(); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: // 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* subquery_; ::pg_query::Alias* alias_; bool lateral_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RangeTableFunc final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTableFunc) */ { public: inline RangeTableFunc() : RangeTableFunc(nullptr) {} ~RangeTableFunc() override; template explicit PROTOBUF_CONSTEXPR RangeTableFunc(::google::protobuf::internal::ConstantInitialized); inline RangeTableFunc(const RangeTableFunc& from) : RangeTableFunc(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RangeTableFunc& default_instance() { return *internal_default_instance(); } static inline const RangeTableFunc* internal_default_instance() { return reinterpret_cast( &_RangeTableFunc_default_instance_); } static constexpr int kIndexInFileMessages = 94; friend void swap(RangeTableFunc& a, RangeTableFunc& b) { a.Swap(&b); } inline void Swap(RangeTableFunc* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTableFunc* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeTableFunc* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RangeTableFunc& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RangeTableFunc& from) { RangeTableFunc::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RangeTableFunc* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RangeTableFunc"; } protected: explicit RangeTableFunc(::google::protobuf::Arena* arena); RangeTableFunc(::google::protobuf::Arena* arena, const RangeTableFunc& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_namespaces(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_namespaces() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_namespaces(); public: const ::pg_query::Node& namespaces(int index) const; ::pg_query::Node* add_namespaces(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_columns(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_columns() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_columns(); public: const ::pg_query::Node& columns(int index) const; ::pg_query::Node* add_columns(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& columns() const; // .pg_query.Node docexpr = 2 [json_name = "docexpr"]; bool has_docexpr() const; void clear_docexpr() ; const ::pg_query::Node& docexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_docexpr(); ::pg_query::Node* mutable_docexpr(); void set_allocated_docexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_docexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_docexpr(); private: const ::pg_query::Node& _internal_docexpr() const; ::pg_query::Node* _internal_mutable_docexpr(); public: // .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; bool has_rowexpr() const; void clear_rowexpr() ; const ::pg_query::Node& rowexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_rowexpr(); ::pg_query::Node* mutable_rowexpr(); void set_allocated_rowexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_rowexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_rowexpr(); private: const ::pg_query::Node& _internal_rowexpr() const; ::pg_query::Node* _internal_mutable_rowexpr(); public: // .pg_query.Alias alias = 6 [json_name = "alias"]; bool has_alias() const; void clear_alias() ; const ::pg_query::Alias& alias() const; PROTOBUF_NODISCARD ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* value); void unsafe_arena_set_allocated_alias(::pg_query::Alias* value); ::pg_query::Alias* unsafe_arena_release_alias(); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: // 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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeTableFunc) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 5, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > namespaces_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > columns_; ::pg_query::Node* docexpr_; ::pg_query::Node* rowexpr_; ::pg_query::Alias* alias_; bool lateral_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RangeTableFuncCol final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTableFuncCol) */ { public: inline RangeTableFuncCol() : RangeTableFuncCol(nullptr) {} ~RangeTableFuncCol() override; template explicit PROTOBUF_CONSTEXPR RangeTableFuncCol(::google::protobuf::internal::ConstantInitialized); inline RangeTableFuncCol(const RangeTableFuncCol& from) : RangeTableFuncCol(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RangeTableFuncCol& default_instance() { return *internal_default_instance(); } static inline const RangeTableFuncCol* internal_default_instance() { return reinterpret_cast( &_RangeTableFuncCol_default_instance_); } static constexpr int kIndexInFileMessages = 95; friend void swap(RangeTableFuncCol& a, RangeTableFuncCol& b) { a.Swap(&b); } inline void Swap(RangeTableFuncCol* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTableFuncCol* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeTableFuncCol* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RangeTableFuncCol& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RangeTableFuncCol& from) { RangeTableFuncCol::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RangeTableFuncCol* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RangeTableFuncCol"; } protected: explicit RangeTableFuncCol(::google::protobuf::Arena* arena); RangeTableFuncCol(::google::protobuf::Arena* arena, const RangeTableFuncCol& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_colname(Arg_&& arg, Args_... args); std::string* mutable_colname(); PROTOBUF_NODISCARD std::string* release_colname(); void set_allocated_colname(std::string* value); private: const std::string& _internal_colname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_type_name() ; const ::pg_query::TypeName& type_name() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* value); void unsafe_arena_set_allocated_type_name(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_type_name(); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: // .pg_query.Node colexpr = 5 [json_name = "colexpr"]; bool has_colexpr() const; void clear_colexpr() ; const ::pg_query::Node& colexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_colexpr(); ::pg_query::Node* mutable_colexpr(); void set_allocated_colexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_colexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_colexpr(); private: const ::pg_query::Node& _internal_colexpr() const; ::pg_query::Node* _internal_mutable_colexpr(); public: // .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; bool has_coldefexpr() const; void clear_coldefexpr() ; const ::pg_query::Node& coldefexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_coldefexpr(); ::pg_query::Node* mutable_coldefexpr(); void set_allocated_coldefexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_coldefexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_coldefexpr(); private: const ::pg_query::Node& _internal_coldefexpr() const; ::pg_query::Node* _internal_mutable_coldefexpr(); public: // 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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeTableFuncCol) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 3, 42, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr colname_; ::pg_query::TypeName* type_name_; ::pg_query::Node* colexpr_; ::pg_query::Node* coldefexpr_; bool for_ordinality_; bool is_not_null_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RangeTableSample final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTableSample) */ { public: inline RangeTableSample() : RangeTableSample(nullptr) {} ~RangeTableSample() override; template explicit PROTOBUF_CONSTEXPR RangeTableSample(::google::protobuf::internal::ConstantInitialized); inline RangeTableSample(const RangeTableSample& from) : RangeTableSample(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RangeTableSample& default_instance() { return *internal_default_instance(); } static inline const RangeTableSample* internal_default_instance() { return reinterpret_cast( &_RangeTableSample_default_instance_); } static constexpr int kIndexInFileMessages = 96; friend void swap(RangeTableSample& a, RangeTableSample& b) { a.Swap(&b); } inline void Swap(RangeTableSample* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTableSample* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeTableSample* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RangeTableSample& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RangeTableSample& from) { RangeTableSample::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RangeTableSample* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RangeTableSample"; } protected: explicit RangeTableSample(::google::protobuf::Arena* arena); RangeTableSample(::google::protobuf::Arena* arena, const RangeTableSample& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_method(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_method() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_method(); public: const ::pg_query::Node& method(int index) const; ::pg_query::Node* add_method(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node relation = 1 [json_name = "relation"]; bool has_relation() const; void clear_relation() ; const ::pg_query::Node& relation() const; PROTOBUF_NODISCARD ::pg_query::Node* release_relation(); ::pg_query::Node* mutable_relation(); void set_allocated_relation(::pg_query::Node* value); void unsafe_arena_set_allocated_relation(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_relation(); private: const ::pg_query::Node& _internal_relation() const; ::pg_query::Node* _internal_mutable_relation(); public: // .pg_query.Node repeatable = 4 [json_name = "repeatable"]; bool has_repeatable() const; void clear_repeatable() ; const ::pg_query::Node& repeatable() const; PROTOBUF_NODISCARD ::pg_query::Node* release_repeatable(); ::pg_query::Node* mutable_repeatable(); void set_allocated_repeatable(::pg_query::Node* value); void unsafe_arena_set_allocated_repeatable(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_repeatable(); private: const ::pg_query::Node& _internal_repeatable() const; ::pg_query::Node* _internal_mutable_repeatable(); public: // int32 location = 5 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeTableSample) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 4, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > method_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* relation_; ::pg_query::Node* repeatable_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RangeTblEntry final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTblEntry) */ { public: inline RangeTblEntry() : RangeTblEntry(nullptr) {} ~RangeTblEntry() override; template explicit PROTOBUF_CONSTEXPR RangeTblEntry(::google::protobuf::internal::ConstantInitialized); inline RangeTblEntry(const RangeTblEntry& from) : RangeTblEntry(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RangeTblEntry& default_instance() { return *internal_default_instance(); } static inline const RangeTblEntry* internal_default_instance() { return reinterpret_cast( &_RangeTblEntry_default_instance_); } static constexpr int kIndexInFileMessages = 109; friend void swap(RangeTblEntry& a, RangeTblEntry& b) { a.Swap(&b); } inline void Swap(RangeTblEntry* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTblEntry* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeTblEntry* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RangeTblEntry& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RangeTblEntry& from) { RangeTblEntry::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RangeTblEntry* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RangeTblEntry"; } protected: explicit RangeTblEntry(::google::protobuf::Arena* arena); RangeTblEntry(::google::protobuf::Arena* arena, const RangeTblEntry& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kJoinaliasvarsFieldNumber = 14, kJoinleftcolsFieldNumber = 15, kJoinrightcolsFieldNumber = 16, kFunctionsFieldNumber = 18, kValuesListsFieldNumber = 21, kColtypesFieldNumber = 25, kColtypmodsFieldNumber = 26, kColcollationsFieldNumber = 27, kSecurityQualsFieldNumber = 32, kRelkindFieldNumber = 6, kCtenameFieldNumber = 22, kEnrnameFieldNumber = 28, kAliasFieldNumber = 1, kErefFieldNumber = 2, kTablesampleFieldNumber = 9, kSubqueryFieldNumber = 10, kJoinUsingAliasFieldNumber = 17, kTablefuncFieldNumber = 20, kRtekindFieldNumber = 3, kRelidFieldNumber = 4, kRellockmodeFieldNumber = 7, kPerminfoindexFieldNumber = 8, kJointypeFieldNumber = 12, kJoinmergedcolsFieldNumber = 13, kInhFieldNumber = 5, kSecurityBarrierFieldNumber = 11, kFuncordinalityFieldNumber = 19, kSelfReferenceFieldNumber = 24, kCtelevelsupFieldNumber = 23, kEnrtuplesFieldNumber = 29, kLateralFieldNumber = 30, kInFromClFieldNumber = 31, }; // repeated .pg_query.Node joinaliasvars = 14 [json_name = "joinaliasvars"]; int joinaliasvars_size() const; private: int _internal_joinaliasvars_size() const; public: void clear_joinaliasvars() ; ::pg_query::Node* mutable_joinaliasvars(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_joinaliasvars(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_joinaliasvars() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_joinaliasvars(); public: const ::pg_query::Node& joinaliasvars(int index) const; ::pg_query::Node* add_joinaliasvars(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& joinaliasvars() const; // repeated .pg_query.Node joinleftcols = 15 [json_name = "joinleftcols"]; int joinleftcols_size() const; private: int _internal_joinleftcols_size() const; public: void clear_joinleftcols() ; ::pg_query::Node* mutable_joinleftcols(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_joinleftcols(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_joinleftcols() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_joinleftcols(); public: const ::pg_query::Node& joinleftcols(int index) const; ::pg_query::Node* add_joinleftcols(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& joinleftcols() const; // repeated .pg_query.Node joinrightcols = 16 [json_name = "joinrightcols"]; int joinrightcols_size() const; private: int _internal_joinrightcols_size() const; public: void clear_joinrightcols() ; ::pg_query::Node* mutable_joinrightcols(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_joinrightcols(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_joinrightcols() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_joinrightcols(); public: const ::pg_query::Node& joinrightcols(int index) const; ::pg_query::Node* add_joinrightcols(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& joinrightcols() const; // repeated .pg_query.Node functions = 18 [json_name = "functions"]; int functions_size() const; private: int _internal_functions_size() const; public: void clear_functions() ; ::pg_query::Node* mutable_functions(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_functions(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_functions() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_functions(); public: const ::pg_query::Node& functions(int index) const; ::pg_query::Node* add_functions(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& functions() const; // repeated .pg_query.Node values_lists = 21 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_values_lists(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_values_lists() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_values_lists(); public: const ::pg_query::Node& values_lists(int index) const; ::pg_query::Node* add_values_lists(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& values_lists() const; // repeated .pg_query.Node coltypes = 25 [json_name = "coltypes"]; int coltypes_size() const; private: int _internal_coltypes_size() const; public: void clear_coltypes() ; ::pg_query::Node* mutable_coltypes(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_coltypes(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_coltypes() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_coltypes(); public: const ::pg_query::Node& coltypes(int index) const; ::pg_query::Node* add_coltypes(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& coltypes() const; // repeated .pg_query.Node coltypmods = 26 [json_name = "coltypmods"]; int coltypmods_size() const; private: int _internal_coltypmods_size() const; public: void clear_coltypmods() ; ::pg_query::Node* mutable_coltypmods(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_coltypmods(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_coltypmods() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_coltypmods(); public: const ::pg_query::Node& coltypmods(int index) const; ::pg_query::Node* add_coltypmods(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& coltypmods() const; // repeated .pg_query.Node colcollations = 27 [json_name = "colcollations"]; int colcollations_size() const; private: int _internal_colcollations_size() const; public: void clear_colcollations() ; ::pg_query::Node* mutable_colcollations(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_colcollations(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_colcollations() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_colcollations(); public: const ::pg_query::Node& colcollations(int index) const; ::pg_query::Node* add_colcollations(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_security_quals(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_security_quals() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_security_quals(); public: const ::pg_query::Node& security_quals(int index) const; ::pg_query::Node* add_security_quals(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& security_quals() const; // string relkind = 6 [json_name = "relkind"]; void clear_relkind() ; const std::string& relkind() const; template void set_relkind(Arg_&& arg, Args_... args); std::string* mutable_relkind(); PROTOBUF_NODISCARD std::string* release_relkind(); void set_allocated_relkind(std::string* value); private: const std::string& _internal_relkind() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_relkind( const std::string& value); std::string* _internal_mutable_relkind(); public: // string ctename = 22 [json_name = "ctename"]; void clear_ctename() ; const std::string& ctename() const; template void set_ctename(Arg_&& arg, Args_... args); std::string* mutable_ctename(); PROTOBUF_NODISCARD std::string* release_ctename(); void set_allocated_ctename(std::string* value); private: const std::string& _internal_ctename() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_ctename( const std::string& value); std::string* _internal_mutable_ctename(); public: // string enrname = 28 [json_name = "enrname"]; void clear_enrname() ; const std::string& enrname() const; template void set_enrname(Arg_&& arg, Args_... args); std::string* mutable_enrname(); PROTOBUF_NODISCARD std::string* release_enrname(); void set_allocated_enrname(std::string* value); private: const std::string& _internal_enrname() const; inline PROTOBUF_ALWAYS_INLINE void _internal_set_enrname( const std::string& value); std::string* _internal_mutable_enrname(); public: // .pg_query.Alias alias = 1 [json_name = "alias"]; bool has_alias() const; void clear_alias() ; const ::pg_query::Alias& alias() const; PROTOBUF_NODISCARD ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* value); void unsafe_arena_set_allocated_alias(::pg_query::Alias* value); ::pg_query::Alias* unsafe_arena_release_alias(); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: // .pg_query.Alias eref = 2 [json_name = "eref"]; bool has_eref() const; void clear_eref() ; const ::pg_query::Alias& eref() const; PROTOBUF_NODISCARD ::pg_query::Alias* release_eref(); ::pg_query::Alias* mutable_eref(); void set_allocated_eref(::pg_query::Alias* value); void unsafe_arena_set_allocated_eref(::pg_query::Alias* value); ::pg_query::Alias* unsafe_arena_release_eref(); private: const ::pg_query::Alias& _internal_eref() const; ::pg_query::Alias* _internal_mutable_eref(); public: // .pg_query.TableSampleClause tablesample = 9 [json_name = "tablesample"]; bool has_tablesample() const; void clear_tablesample() ; const ::pg_query::TableSampleClause& tablesample() const; PROTOBUF_NODISCARD ::pg_query::TableSampleClause* release_tablesample(); ::pg_query::TableSampleClause* mutable_tablesample(); void set_allocated_tablesample(::pg_query::TableSampleClause* value); void unsafe_arena_set_allocated_tablesample(::pg_query::TableSampleClause* value); ::pg_query::TableSampleClause* unsafe_arena_release_tablesample(); private: const ::pg_query::TableSampleClause& _internal_tablesample() const; ::pg_query::TableSampleClause* _internal_mutable_tablesample(); public: // .pg_query.Query subquery = 10 [json_name = "subquery"]; bool has_subquery() const; void clear_subquery() ; const ::pg_query::Query& subquery() const; PROTOBUF_NODISCARD ::pg_query::Query* release_subquery(); ::pg_query::Query* mutable_subquery(); void set_allocated_subquery(::pg_query::Query* value); void unsafe_arena_set_allocated_subquery(::pg_query::Query* value); ::pg_query::Query* unsafe_arena_release_subquery(); private: const ::pg_query::Query& _internal_subquery() const; ::pg_query::Query* _internal_mutable_subquery(); public: // .pg_query.Alias join_using_alias = 17 [json_name = "join_using_alias"]; bool has_join_using_alias() const; void clear_join_using_alias() ; const ::pg_query::Alias& join_using_alias() const; PROTOBUF_NODISCARD ::pg_query::Alias* release_join_using_alias(); ::pg_query::Alias* mutable_join_using_alias(); void set_allocated_join_using_alias(::pg_query::Alias* value); void unsafe_arena_set_allocated_join_using_alias(::pg_query::Alias* value); ::pg_query::Alias* unsafe_arena_release_join_using_alias(); private: const ::pg_query::Alias& _internal_join_using_alias() const; ::pg_query::Alias* _internal_mutable_join_using_alias(); public: // .pg_query.TableFunc tablefunc = 20 [json_name = "tablefunc"]; bool has_tablefunc() const; void clear_tablefunc() ; const ::pg_query::TableFunc& tablefunc() const; PROTOBUF_NODISCARD ::pg_query::TableFunc* release_tablefunc(); ::pg_query::TableFunc* mutable_tablefunc(); void set_allocated_tablefunc(::pg_query::TableFunc* value); void unsafe_arena_set_allocated_tablefunc(::pg_query::TableFunc* value); ::pg_query::TableFunc* unsafe_arena_release_tablefunc(); private: const ::pg_query::TableFunc& _internal_tablefunc() const; ::pg_query::TableFunc* _internal_mutable_tablefunc(); public: // .pg_query.RTEKind rtekind = 3 [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 = 4 [json_name = "relid"]; void clear_relid() ; ::uint32_t relid() const; void set_relid(::uint32_t value); private: ::uint32_t _internal_relid() const; void _internal_set_relid(::uint32_t value); public: // int32 rellockmode = 7 [json_name = "rellockmode"]; void clear_rellockmode() ; ::int32_t rellockmode() const; void set_rellockmode(::int32_t value); private: ::int32_t _internal_rellockmode() const; void _internal_set_rellockmode(::int32_t value); public: // uint32 perminfoindex = 8 [json_name = "perminfoindex"]; void clear_perminfoindex() ; ::uint32_t perminfoindex() const; void set_perminfoindex(::uint32_t value); private: ::uint32_t _internal_perminfoindex() const; void _internal_set_perminfoindex(::uint32_t value); public: // .pg_query.JoinType jointype = 12 [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 = 13 [json_name = "joinmergedcols"]; void clear_joinmergedcols() ; ::int32_t joinmergedcols() const; void set_joinmergedcols(::int32_t value); private: ::int32_t _internal_joinmergedcols() const; void _internal_set_joinmergedcols(::int32_t value); public: // bool inh = 5 [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 security_barrier = 11 [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 = 19 [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 = 24 [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: // uint32 ctelevelsup = 23 [json_name = "ctelevelsup"]; void clear_ctelevelsup() ; ::uint32_t ctelevelsup() const; void set_ctelevelsup(::uint32_t value); private: ::uint32_t _internal_ctelevelsup() const; void _internal_set_ctelevelsup(::uint32_t value); public: // double enrtuples = 29 [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: // bool lateral = 30 [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 in_from_cl = 31 [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: // @@protoc_insertion_point(class_scope:pg_query.RangeTblEntry) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 5, 32, 15, 84, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > joinaliasvars_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > joinleftcols_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > joinrightcols_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > functions_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > values_lists_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > coltypes_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > coltypmods_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > colcollations_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > security_quals_; ::google::protobuf::internal::ArenaStringPtr relkind_; ::google::protobuf::internal::ArenaStringPtr ctename_; ::google::protobuf::internal::ArenaStringPtr enrname_; ::pg_query::Alias* alias_; ::pg_query::Alias* eref_; ::pg_query::TableSampleClause* tablesample_; ::pg_query::Query* subquery_; ::pg_query::Alias* join_using_alias_; ::pg_query::TableFunc* tablefunc_; int rtekind_; ::uint32_t relid_; ::int32_t rellockmode_; ::uint32_t perminfoindex_; int jointype_; ::int32_t joinmergedcols_; bool inh_; bool security_barrier_; bool funcordinality_; bool self_reference_; ::uint32_t ctelevelsup_; double enrtuples_; bool lateral_; bool in_from_cl_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RangeTblFunction final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTblFunction) */ { public: inline RangeTblFunction() : RangeTblFunction(nullptr) {} ~RangeTblFunction() override; template explicit PROTOBUF_CONSTEXPR RangeTblFunction(::google::protobuf::internal::ConstantInitialized); inline RangeTblFunction(const RangeTblFunction& from) : RangeTblFunction(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RangeTblFunction& default_instance() { return *internal_default_instance(); } static inline const RangeTblFunction* internal_default_instance() { return reinterpret_cast( &_RangeTblFunction_default_instance_); } static constexpr int kIndexInFileMessages = 111; friend void swap(RangeTblFunction& a, RangeTblFunction& b) { a.Swap(&b); } inline void Swap(RangeTblFunction* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTblFunction* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeTblFunction* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RangeTblFunction& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RangeTblFunction& from) { RangeTblFunction::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RangeTblFunction* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RangeTblFunction"; } protected: explicit RangeTblFunction(::google::protobuf::Arena* arena); RangeTblFunction(::google::protobuf::Arena* arena, const RangeTblFunction& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFunccolnamesFieldNumber = 3, kFunccoltypesFieldNumber = 4, kFunccoltypmodsFieldNumber = 5, kFunccolcollationsFieldNumber = 6, kFuncparamsFieldNumber = 7, 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_funccolnames(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_funccolnames() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_funccolnames(); public: const ::pg_query::Node& funccolnames(int index) const; ::pg_query::Node* add_funccolnames(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_funccoltypes(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_funccoltypes() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_funccoltypes(); public: const ::pg_query::Node& funccoltypes(int index) const; ::pg_query::Node* add_funccoltypes(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_funccoltypmods(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_funccoltypmods() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_funccoltypmods(); public: const ::pg_query::Node& funccoltypmods(int index) const; ::pg_query::Node* add_funccoltypmods(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_funccolcollations(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_funccolcollations() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_funccolcollations(); public: const ::pg_query::Node& funccolcollations(int index) const; ::pg_query::Node* add_funccolcollations(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& funccolcollations() const; // repeated uint64 funcparams = 7 [json_name = "funcparams"]; int funcparams_size() const; private: int _internal_funcparams_size() const; public: void clear_funcparams() ; ::uint64_t funcparams(int index) const; void set_funcparams(int index, ::uint64_t value); void add_funcparams(::uint64_t value); const ::google::protobuf::RepeatedField<::uint64_t>& funcparams() const; ::google::protobuf::RepeatedField<::uint64_t>* mutable_funcparams(); private: const ::google::protobuf::RepeatedField<::uint64_t>& _internal_funcparams() const; ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_funcparams(); public: // .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; bool has_funcexpr() const; void clear_funcexpr() ; const ::pg_query::Node& funcexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_funcexpr(); ::pg_query::Node* mutable_funcexpr(); void set_allocated_funcexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_funcexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_funcexpr(); private: const ::pg_query::Node& _internal_funcexpr() const; ::pg_query::Node* _internal_mutable_funcexpr(); public: // int32 funccolcount = 2 [json_name = "funccolcount"]; void clear_funccolcount() ; ::int32_t funccolcount() const; void set_funccolcount(::int32_t value); private: ::int32_t _internal_funccolcount() const; void _internal_set_funccolcount(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeTblFunction) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 5, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > funccolnames_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > funccoltypes_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > funccoltypmods_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > funccolcollations_; ::google::protobuf::RepeatedField<::uint64_t> funcparams_; mutable ::google::protobuf::internal::CachedSize _funcparams_cached_byte_size_; ::pg_query::Node* funcexpr_; ::int32_t funccolcount_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RangeVar final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeVar) */ { public: inline RangeVar() : RangeVar(nullptr) {} ~RangeVar() override; template explicit PROTOBUF_CONSTEXPR RangeVar(::google::protobuf::internal::ConstantInitialized); inline RangeVar(const RangeVar& from) : RangeVar(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RangeVar& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeVar* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RangeVar* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RangeVar& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RangeVar& from) { RangeVar::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RangeVar* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RangeVar"; } protected: explicit RangeVar(::google::protobuf::Arena* arena); RangeVar(::google::protobuf::Arena* arena, const RangeVar& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_catalogname(Arg_&& arg, Args_... args); std::string* mutable_catalogname(); PROTOBUF_NODISCARD std::string* release_catalogname(); void set_allocated_catalogname(std::string* value); private: const std::string& _internal_catalogname() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_schemaname(Arg_&& arg, Args_... args); std::string* mutable_schemaname(); PROTOBUF_NODISCARD std::string* release_schemaname(); void set_allocated_schemaname(std::string* value); private: const std::string& _internal_schemaname() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_relname(Arg_&& arg, Args_... args); std::string* mutable_relname(); PROTOBUF_NODISCARD std::string* release_relname(); void set_allocated_relname(std::string* value); private: const std::string& _internal_relname() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_relpersistence(Arg_&& arg, Args_... args); std::string* mutable_relpersistence(); PROTOBUF_NODISCARD std::string* release_relpersistence(); void set_allocated_relpersistence(std::string* value); private: const std::string& _internal_relpersistence() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_alias() ; const ::pg_query::Alias& alias() const; PROTOBUF_NODISCARD ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* value); void unsafe_arena_set_allocated_alias(::pg_query::Alias* value); ::pg_query::Alias* unsafe_arena_release_alias(); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: // 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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeVar) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 1, 68, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr catalogname_; ::google::protobuf::internal::ArenaStringPtr schemaname_; ::google::protobuf::internal::ArenaStringPtr relname_; ::google::protobuf::internal::ArenaStringPtr relpersistence_; ::pg_query::Alias* alias_; bool inh_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RawStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RawStmt) */ { public: inline RawStmt() : RawStmt(nullptr) {} ~RawStmt() override; template explicit PROTOBUF_CONSTEXPR RawStmt(::google::protobuf::internal::ConstantInitialized); inline RawStmt(const RawStmt& from) : RawStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RawStmt& default_instance() { return *internal_default_instance(); } static inline const RawStmt* internal_default_instance() { return reinterpret_cast( &_RawStmt_default_instance_); } static constexpr int kIndexInFileMessages = 142; friend void swap(RawStmt& a, RawStmt& b) { a.Swap(&b); } inline void Swap(RawStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RawStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RawStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RawStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RawStmt& from) { RawStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RawStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RawStmt"; } protected: explicit RawStmt(::google::protobuf::Arena* arena); RawStmt(::google::protobuf::Arena* arena, const RawStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kStmtFieldNumber = 1, kStmtLocationFieldNumber = 2, kStmtLenFieldNumber = 3, }; // .pg_query.Node stmt = 1 [json_name = "stmt"]; bool has_stmt() const; void clear_stmt() ; const ::pg_query::Node& stmt() const; PROTOBUF_NODISCARD ::pg_query::Node* release_stmt(); ::pg_query::Node* mutable_stmt(); void set_allocated_stmt(::pg_query::Node* value); void unsafe_arena_set_allocated_stmt(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_stmt(); private: const ::pg_query::Node& _internal_stmt() const; ::pg_query::Node* _internal_mutable_stmt(); public: // int32 stmt_location = 2 [json_name = "stmt_location"]; void clear_stmt_location() ; ::int32_t stmt_location() const; void set_stmt_location(::int32_t value); private: ::int32_t _internal_stmt_location() const; void _internal_set_stmt_location(::int32_t value); public: // int32 stmt_len = 3 [json_name = "stmt_len"]; void clear_stmt_len() ; ::int32_t stmt_len() const; void set_stmt_len(::int32_t value); private: ::int32_t _internal_stmt_len() const; void _internal_set_stmt_len(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.RawStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* stmt_; ::int32_t stmt_location_; ::int32_t stmt_len_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ReassignOwnedStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ReassignOwnedStmt) */ { public: inline ReassignOwnedStmt() : ReassignOwnedStmt(nullptr) {} ~ReassignOwnedStmt() override; template explicit PROTOBUF_CONSTEXPR ReassignOwnedStmt(::google::protobuf::internal::ConstantInitialized); inline ReassignOwnedStmt(const ReassignOwnedStmt& from) : ReassignOwnedStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ReassignOwnedStmt& default_instance() { return *internal_default_instance(); } static inline const ReassignOwnedStmt* internal_default_instance() { return reinterpret_cast( &_ReassignOwnedStmt_default_instance_); } static constexpr int kIndexInFileMessages = 261; friend void swap(ReassignOwnedStmt& a, ReassignOwnedStmt& b) { a.Swap(&b); } inline void Swap(ReassignOwnedStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ReassignOwnedStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ReassignOwnedStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ReassignOwnedStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ReassignOwnedStmt& from) { ReassignOwnedStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ReassignOwnedStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ReassignOwnedStmt"; } protected: explicit ReassignOwnedStmt(::google::protobuf::Arena* arena); ReassignOwnedStmt(::google::protobuf::Arena* arena, const ReassignOwnedStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_roles() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& roles() const; // .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; bool has_newrole() const; void clear_newrole() ; const ::pg_query::RoleSpec& newrole() const; PROTOBUF_NODISCARD ::pg_query::RoleSpec* release_newrole(); ::pg_query::RoleSpec* mutable_newrole(); void set_allocated_newrole(::pg_query::RoleSpec* value); void unsafe_arena_set_allocated_newrole(::pg_query::RoleSpec* value); ::pg_query::RoleSpec* unsafe_arena_release_newrole(); private: const ::pg_query::RoleSpec& _internal_newrole() const; ::pg_query::RoleSpec* _internal_mutable_newrole(); public: // @@protoc_insertion_point(class_scope:pg_query.ReassignOwnedStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > roles_; ::pg_query::RoleSpec* newrole_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RefreshMatViewStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RefreshMatViewStmt) */ { public: inline RefreshMatViewStmt() : RefreshMatViewStmt(nullptr) {} ~RefreshMatViewStmt() override; template explicit PROTOBUF_CONSTEXPR RefreshMatViewStmt(::google::protobuf::internal::ConstantInitialized); inline RefreshMatViewStmt(const RefreshMatViewStmt& from) : RefreshMatViewStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RefreshMatViewStmt& default_instance() { return *internal_default_instance(); } static inline const RefreshMatViewStmt* internal_default_instance() { return reinterpret_cast( &_RefreshMatViewStmt_default_instance_); } static constexpr int kIndexInFileMessages = 248; friend void swap(RefreshMatViewStmt& a, RefreshMatViewStmt& b) { a.Swap(&b); } inline void Swap(RefreshMatViewStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RefreshMatViewStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RefreshMatViewStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RefreshMatViewStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RefreshMatViewStmt& from) { RefreshMatViewStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RefreshMatViewStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RefreshMatViewStmt"; } protected: explicit RefreshMatViewStmt(::google::protobuf::Arena* arena); RefreshMatViewStmt(::google::protobuf::Arena* arena, const RefreshMatViewStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRelationFieldNumber = 3, kConcurrentFieldNumber = 1, kSkipDataFieldNumber = 2, }; // .pg_query.RangeVar relation = 3 [json_name = "relation"]; bool has_relation() const; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::RangeVar* relation_; bool concurrent_; bool skip_data_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ReindexStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ReindexStmt) */ { public: inline ReindexStmt() : ReindexStmt(nullptr) {} ~ReindexStmt() override; template explicit PROTOBUF_CONSTEXPR ReindexStmt(::google::protobuf::internal::ConstantInitialized); inline ReindexStmt(const ReindexStmt& from) : ReindexStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ReindexStmt& default_instance() { return *internal_default_instance(); } static inline const ReindexStmt* internal_default_instance() { return reinterpret_cast( &_ReindexStmt_default_instance_); } static constexpr int kIndexInFileMessages = 253; friend void swap(ReindexStmt& a, ReindexStmt& b) { a.Swap(&b); } inline void Swap(ReindexStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ReindexStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ReindexStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ReindexStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ReindexStmt& from) { ReindexStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ReindexStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ReindexStmt"; } protected: explicit ReindexStmt(::google::protobuf::Arena* arena); ReindexStmt(::google::protobuf::Arena* arena, const ReindexStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kParamsFieldNumber = 4, kNameFieldNumber = 3, kRelationFieldNumber = 2, kKindFieldNumber = 1, }; // repeated .pg_query.Node params = 4 [json_name = "params"]; int params_size() const; private: int _internal_params_size() const; public: void clear_params() ; ::pg_query::Node* mutable_params(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_params(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_params() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_params(); public: const ::pg_query::Node& params(int index) const; ::pg_query::Node* add_params(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& params() const; // string name = 3 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .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: // @@protoc_insertion_point(class_scope:pg_query.ReindexStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 33, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > params_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::RangeVar* relation_; int kind_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RelabelType final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RelabelType) */ { public: inline RelabelType() : RelabelType(nullptr) {} ~RelabelType() override; template explicit PROTOBUF_CONSTEXPR RelabelType(::google::protobuf::internal::ConstantInitialized); inline RelabelType(const RelabelType& from) : RelabelType(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RelabelType& default_instance() { return *internal_default_instance(); } static inline const RelabelType* internal_default_instance() { return reinterpret_cast( &_RelabelType_default_instance_); } static constexpr int kIndexInFileMessages = 36; friend void swap(RelabelType& a, RelabelType& b) { a.Swap(&b); } inline void Swap(RelabelType* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RelabelType* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RelabelType* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RelabelType& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RelabelType& from) { RelabelType::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RelabelType* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RelabelType"; } protected: explicit RelabelType(::google::protobuf::Arena* arena); RelabelType(::google::protobuf::Arena* arena, const RelabelType& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // uint32 resulttype = 3 [json_name = "resulttype"]; void clear_resulttype() ; ::uint32_t resulttype() const; void set_resulttype(::uint32_t value); private: ::uint32_t _internal_resulttype() const; void _internal_set_resulttype(::uint32_t value); public: // int32 resulttypmod = 4 [json_name = "resulttypmod"]; void clear_resulttypmod() ; ::int32_t resulttypmod() const; void set_resulttypmod(::int32_t value); private: ::int32_t _internal_resulttypmod() const; void _internal_set_resulttypmod(::int32_t value); public: // uint32 resultcollid = 5 [json_name = "resultcollid"]; void clear_resultcollid() ; ::uint32_t resultcollid() const; void set_resultcollid(::uint32_t value); private: ::uint32_t _internal_resultcollid() const; void _internal_set_resultcollid(::uint32_t 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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.RelabelType) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::uint32_t resulttype_; ::int32_t resulttypmod_; ::uint32_t resultcollid_; int relabelformat_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RenameStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RenameStmt) */ { public: inline RenameStmt() : RenameStmt(nullptr) {} ~RenameStmt() override; template explicit PROTOBUF_CONSTEXPR RenameStmt(::google::protobuf::internal::ConstantInitialized); inline RenameStmt(const RenameStmt& from) : RenameStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RenameStmt& default_instance() { return *internal_default_instance(); } static inline const RenameStmt* internal_default_instance() { return reinterpret_cast( &_RenameStmt_default_instance_); } static constexpr int kIndexInFileMessages = 220; friend void swap(RenameStmt& a, RenameStmt& b) { a.Swap(&b); } inline void Swap(RenameStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RenameStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RenameStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RenameStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RenameStmt& from) { RenameStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RenameStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RenameStmt"; } protected: explicit RenameStmt(::google::protobuf::Arena* arena); RenameStmt(::google::protobuf::Arena* arena, const RenameStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_subname(Arg_&& arg, Args_... args); std::string* mutable_subname(); PROTOBUF_NODISCARD std::string* release_subname(); void set_allocated_subname(std::string* value); private: const std::string& _internal_subname() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_newname(Arg_&& arg, Args_... args); std::string* mutable_newname(); PROTOBUF_NODISCARD std::string* release_newname(); void set_allocated_newname(std::string* value); private: const std::string& _internal_newname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .pg_query.Node object = 4 [json_name = "object"]; bool has_object() const; void clear_object() ; const ::pg_query::Node& object() const; PROTOBUF_NODISCARD ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* value); void unsafe_arena_set_allocated_object(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_object(); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 2, 50, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr subname_; ::google::protobuf::internal::ArenaStringPtr newname_; ::pg_query::RangeVar* relation_; ::pg_query::Node* object_; int rename_type_; int relation_type_; int behavior_; bool missing_ok_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ResTarget final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ResTarget) */ { public: inline ResTarget() : ResTarget(nullptr) {} ~ResTarget() override; template explicit PROTOBUF_CONSTEXPR ResTarget(::google::protobuf::internal::ConstantInitialized); inline ResTarget(const ResTarget& from) : ResTarget(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ResTarget& default_instance() { return *internal_default_instance(); } static inline const ResTarget* internal_default_instance() { return reinterpret_cast( &_ResTarget_default_instance_); } static constexpr int kIndexInFileMessages = 88; friend void swap(ResTarget& a, ResTarget& b) { a.Swap(&b); } inline void Swap(ResTarget* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ResTarget* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ResTarget* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ResTarget& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ResTarget& from) { ResTarget::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ResTarget* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ResTarget"; } protected: explicit ResTarget(::google::protobuf::Arena* arena); ResTarget(::google::protobuf::Arena* arena, const ResTarget& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_indirection(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_indirection() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_indirection(); public: const ::pg_query::Node& indirection(int index) const; ::pg_query::Node* add_indirection(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& indirection() const; // string name = 1 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_val() ; const ::pg_query::Node& val() const; PROTOBUF_NODISCARD ::pg_query::Node* release_val(); ::pg_query::Node* mutable_val(); void set_allocated_val(::pg_query::Node* value); void unsafe_arena_set_allocated_val(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_val(); private: const ::pg_query::Node& _internal_val() const; ::pg_query::Node* _internal_mutable_val(); public: // int32 location = 4 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.ResTarget) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 2, 31, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > indirection_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::Node* val_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ReturnStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ReturnStmt) */ { public: inline ReturnStmt() : ReturnStmt(nullptr) {} ~ReturnStmt() override; template explicit PROTOBUF_CONSTEXPR ReturnStmt(::google::protobuf::internal::ConstantInitialized); inline ReturnStmt(const ReturnStmt& from) : ReturnStmt(nullptr, from) {} ReturnStmt(ReturnStmt&& from) noexcept : ReturnStmt() { *this = ::std::move(from); } inline ReturnStmt& operator=(const ReturnStmt& from) { CopyFrom(from); return *this; } inline ReturnStmt& operator=(ReturnStmt&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ReturnStmt& default_instance() { return *internal_default_instance(); } static inline const ReturnStmt* internal_default_instance() { return reinterpret_cast( &_ReturnStmt_default_instance_); } static constexpr int kIndexInFileMessages = 149; friend void swap(ReturnStmt& a, ReturnStmt& b) { a.Swap(&b); } inline void Swap(ReturnStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ReturnStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ReturnStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ReturnStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ReturnStmt& from) { ReturnStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ReturnStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ReturnStmt"; } protected: explicit ReturnStmt(::google::protobuf::Arena* arena); ReturnStmt(::google::protobuf::Arena* arena, const ReturnStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kReturnvalFieldNumber = 1, }; // .pg_query.Node returnval = 1 [json_name = "returnval"]; bool has_returnval() const; void clear_returnval() ; const ::pg_query::Node& returnval() const; PROTOBUF_NODISCARD ::pg_query::Node* release_returnval(); ::pg_query::Node* mutable_returnval(); void set_allocated_returnval(::pg_query::Node* value); void unsafe_arena_set_allocated_returnval(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_returnval(); private: const ::pg_query::Node& _internal_returnval() const; ::pg_query::Node* _internal_mutable_returnval(); public: // @@protoc_insertion_point(class_scope:pg_query.ReturnStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 0, 1, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* returnval_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RowCompareExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RowCompareExpr) */ { public: inline RowCompareExpr() : RowCompareExpr(nullptr) {} ~RowCompareExpr() override; template explicit PROTOBUF_CONSTEXPR RowCompareExpr(::google::protobuf::internal::ConstantInitialized); inline RowCompareExpr(const RowCompareExpr& from) : RowCompareExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RowCompareExpr& default_instance() { return *internal_default_instance(); } static inline const RowCompareExpr* internal_default_instance() { return reinterpret_cast( &_RowCompareExpr_default_instance_); } static constexpr int kIndexInFileMessages = 46; friend void swap(RowCompareExpr& a, RowCompareExpr& b) { a.Swap(&b); } inline void Swap(RowCompareExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RowCompareExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RowCompareExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RowCompareExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RowCompareExpr& from) { RowCompareExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RowCompareExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RowCompareExpr"; } protected: explicit RowCompareExpr(::google::protobuf::Arena* arena); RowCompareExpr(::google::protobuf::Arena* arena, const RowCompareExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_opnos(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_opnos() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_opnos(); public: const ::pg_query::Node& opnos(int index) const; ::pg_query::Node* add_opnos(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_opfamilies(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_opfamilies() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_opfamilies(); public: const ::pg_query::Node& opfamilies(int index) const; ::pg_query::Node* add_opfamilies(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_inputcollids(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_inputcollids() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_inputcollids(); public: const ::pg_query::Node& inputcollids(int index) const; ::pg_query::Node* add_inputcollids(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_largs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_largs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_largs(); public: const ::pg_query::Node& largs(int index) const; ::pg_query::Node* add_largs(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_rargs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_rargs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_rargs(); public: const ::pg_query::Node& rargs(int index) const; ::pg_query::Node* add_rargs(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& rargs() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 6, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > opnos_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > opfamilies_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > inputcollids_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > largs_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > rargs_; ::pg_query::Node* xpr_; int rctype_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RowExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RowExpr) */ { public: inline RowExpr() : RowExpr(nullptr) {} ~RowExpr() override; template explicit PROTOBUF_CONSTEXPR RowExpr(::google::protobuf::internal::ConstantInitialized); inline RowExpr(const RowExpr& from) : RowExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RowExpr& default_instance() { return *internal_default_instance(); } static inline const RowExpr* internal_default_instance() { return reinterpret_cast( &_RowExpr_default_instance_); } static constexpr int kIndexInFileMessages = 45; friend void swap(RowExpr& a, RowExpr& b) { a.Swap(&b); } inline void Swap(RowExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RowExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RowExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RowExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RowExpr& from) { RowExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RowExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RowExpr"; } protected: explicit RowExpr(::google::protobuf::Arena* arena); RowExpr(::google::protobuf::Arena* arena, const RowExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_colnames(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_colnames() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_colnames(); public: const ::pg_query::Node& colnames(int index) const; ::pg_query::Node* add_colnames(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& colnames() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 row_typeid = 3 [json_name = "row_typeid"]; void clear_row_typeid() ; ::uint32_t row_typeid() const; void set_row_typeid(::uint32_t value); private: ::uint32_t _internal_row_typeid() const; void _internal_set_row_typeid(::uint32_t 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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.RowExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > colnames_; ::pg_query::Node* xpr_; ::uint32_t row_typeid_; int row_format_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class RuleStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.RuleStmt) */ { public: inline RuleStmt() : RuleStmt(nullptr) {} ~RuleStmt() override; template explicit PROTOBUF_CONSTEXPR RuleStmt(::google::protobuf::internal::ConstantInitialized); inline RuleStmt(const RuleStmt& from) : RuleStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const RuleStmt& default_instance() { return *internal_default_instance(); } static inline const RuleStmt* internal_default_instance() { return reinterpret_cast( &_RuleStmt_default_instance_); } static constexpr int kIndexInFileMessages = 226; friend void swap(RuleStmt& a, RuleStmt& b) { a.Swap(&b); } inline void Swap(RuleStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RuleStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- RuleStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const RuleStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const RuleStmt& from) { RuleStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(RuleStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.RuleStmt"; } protected: explicit RuleStmt(::google::protobuf::Arena* arena); RuleStmt(::google::protobuf::Arena* arena, const RuleStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_actions(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_actions() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_actions(); public: const ::pg_query::Node& actions(int index) const; ::pg_query::Node* add_actions(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& actions() const; // string rulename = 2 [json_name = "rulename"]; void clear_rulename() ; const std::string& rulename() const; template void set_rulename(Arg_&& arg, Args_... args); std::string* mutable_rulename(); PROTOBUF_NODISCARD std::string* release_rulename(); void set_allocated_rulename(std::string* value); private: const std::string& _internal_rulename() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; bool has_where_clause() const; void clear_where_clause() ; const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* value); void unsafe_arena_set_allocated_where_clause(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_where_clause(); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 3, 34, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > actions_; ::google::protobuf::internal::ArenaStringPtr rulename_; ::pg_query::RangeVar* relation_; ::pg_query::Node* where_clause_; int event_; bool instead_; bool replace_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class SQLValueFunction final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.SQLValueFunction) */ { public: inline SQLValueFunction() : SQLValueFunction(nullptr) {} ~SQLValueFunction() override; template explicit PROTOBUF_CONSTEXPR SQLValueFunction(::google::protobuf::internal::ConstantInitialized); inline SQLValueFunction(const SQLValueFunction& from) : SQLValueFunction(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const SQLValueFunction& default_instance() { return *internal_default_instance(); } static inline const SQLValueFunction* internal_default_instance() { return reinterpret_cast( &_SQLValueFunction_default_instance_); } static constexpr int kIndexInFileMessages = 49; friend void swap(SQLValueFunction& a, SQLValueFunction& b) { a.Swap(&b); } inline void Swap(SQLValueFunction* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SQLValueFunction* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SQLValueFunction* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const SQLValueFunction& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const SQLValueFunction& from) { SQLValueFunction::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(SQLValueFunction* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.SQLValueFunction"; } protected: explicit SQLValueFunction(::google::protobuf::Arena* arena); SQLValueFunction(::google::protobuf::Arena* arena, const SQLValueFunction& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .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() ; ::uint32_t type() const; void set_type(::uint32_t value); private: ::uint32_t _internal_type() const; void _internal_set_type(::uint32_t value); public: // int32 typmod = 4 [json_name = "typmod"]; void clear_typmod() ; ::int32_t typmod() const; void set_typmod(::int32_t value); private: ::int32_t _internal_typmod() const; void _internal_set_typmod(::int32_t value); public: // int32 location = 5 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.SQLValueFunction) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; int op_; ::uint32_t type_; ::int32_t typmod_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ScalarArrayOpExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ScalarArrayOpExpr) */ { public: inline ScalarArrayOpExpr() : ScalarArrayOpExpr(nullptr) {} ~ScalarArrayOpExpr() override; template explicit PROTOBUF_CONSTEXPR ScalarArrayOpExpr(::google::protobuf::internal::ConstantInitialized); inline ScalarArrayOpExpr(const ScalarArrayOpExpr& from) : ScalarArrayOpExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ScalarArrayOpExpr& default_instance() { return *internal_default_instance(); } static inline const ScalarArrayOpExpr* internal_default_instance() { return reinterpret_cast( &_ScalarArrayOpExpr_default_instance_); } static constexpr int kIndexInFileMessages = 29; friend void swap(ScalarArrayOpExpr& a, ScalarArrayOpExpr& b) { a.Swap(&b); } inline void Swap(ScalarArrayOpExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ScalarArrayOpExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ScalarArrayOpExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ScalarArrayOpExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ScalarArrayOpExpr& from) { ScalarArrayOpExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ScalarArrayOpExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ScalarArrayOpExpr"; } protected: explicit ScalarArrayOpExpr(::google::protobuf::Arena* arena); ScalarArrayOpExpr(::google::protobuf::Arena* arena, const ScalarArrayOpExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 5, kXprFieldNumber = 1, kOpnoFieldNumber = 2, kUseOrFieldNumber = 3, kInputcollidFieldNumber = 4, kLocationFieldNumber = 6, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 opno = 2 [json_name = "opno"]; void clear_opno() ; ::uint32_t opno() const; void set_opno(::uint32_t value); private: ::uint32_t _internal_opno() const; void _internal_set_opno(::uint32_t value); public: // bool use_or = 3 [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 = 4 [json_name = "inputcollid"]; void clear_inputcollid() ; ::uint32_t inputcollid() const; void set_inputcollid(::uint32_t value); private: ::uint32_t _internal_inputcollid() const; void _internal_set_inputcollid(::uint32_t value); public: // int32 location = 6 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.ScalarArrayOpExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::uint32_t opno_; bool use_or_; ::uint32_t inputcollid_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class SecLabelStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.SecLabelStmt) */ { public: inline SecLabelStmt() : SecLabelStmt(nullptr) {} ~SecLabelStmt() override; template explicit PROTOBUF_CONSTEXPR SecLabelStmt(::google::protobuf::internal::ConstantInitialized); inline SecLabelStmt(const SecLabelStmt& from) : SecLabelStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const SecLabelStmt& default_instance() { return *internal_default_instance(); } static inline const SecLabelStmt* internal_default_instance() { return reinterpret_cast( &_SecLabelStmt_default_instance_); } static constexpr int kIndexInFileMessages = 205; friend void swap(SecLabelStmt& a, SecLabelStmt& b) { a.Swap(&b); } inline void Swap(SecLabelStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SecLabelStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SecLabelStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const SecLabelStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const SecLabelStmt& from) { SecLabelStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(SecLabelStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.SecLabelStmt"; } protected: explicit SecLabelStmt(::google::protobuf::Arena* arena); SecLabelStmt(::google::protobuf::Arena* arena, const SecLabelStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_provider(Arg_&& arg, Args_... args); std::string* mutable_provider(); PROTOBUF_NODISCARD std::string* release_provider(); void set_allocated_provider(std::string* value); private: const std::string& _internal_provider() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_label(Arg_&& arg, Args_... args); std::string* mutable_label(); PROTOBUF_NODISCARD std::string* release_label(); void set_allocated_label(std::string* value); private: const std::string& _internal_label() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_object() ; const ::pg_query::Node& object() const; PROTOBUF_NODISCARD ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* value); void unsafe_arena_set_allocated_object(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_object(); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 1, 43, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr provider_; ::google::protobuf::internal::ArenaStringPtr label_; ::pg_query::Node* object_; int objtype_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class SelectStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.SelectStmt) */ { public: inline SelectStmt() : SelectStmt(nullptr) {} ~SelectStmt() override; template explicit PROTOBUF_CONSTEXPR SelectStmt(::google::protobuf::internal::ConstantInitialized); inline SelectStmt(const SelectStmt& from) : SelectStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const SelectStmt& default_instance() { return *internal_default_instance(); } static inline const SelectStmt* internal_default_instance() { return reinterpret_cast( &_SelectStmt_default_instance_); } static constexpr int kIndexInFileMessages = 147; friend void swap(SelectStmt& a, SelectStmt& b) { a.Swap(&b); } inline void Swap(SelectStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SelectStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SelectStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const SelectStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const SelectStmt& from) { SelectStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(SelectStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.SelectStmt"; } protected: explicit SelectStmt(::google::protobuf::Arena* arena); SelectStmt(::google::protobuf::Arena* arena, const SelectStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kDistinctClauseFieldNumber = 1, kTargetListFieldNumber = 3, kFromClauseFieldNumber = 4, kGroupClauseFieldNumber = 6, kWindowClauseFieldNumber = 9, kValuesListsFieldNumber = 10, kSortClauseFieldNumber = 11, kLockingClauseFieldNumber = 15, kIntoClauseFieldNumber = 2, kWhereClauseFieldNumber = 5, kHavingClauseFieldNumber = 8, kLimitOffsetFieldNumber = 12, kLimitCountFieldNumber = 13, kWithClauseFieldNumber = 16, kLargFieldNumber = 19, kRargFieldNumber = 20, kGroupDistinctFieldNumber = 7, kAllFieldNumber = 18, kLimitOptionFieldNumber = 14, kOpFieldNumber = 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_distinct_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_distinct_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_distinct_clause(); public: const ::pg_query::Node& distinct_clause(int index) const; ::pg_query::Node* add_distinct_clause(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_target_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_from_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_from_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_from_clause(); public: const ::pg_query::Node& from_clause(int index) const; ::pg_query::Node* add_from_clause(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_group_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_group_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_group_clause(); public: const ::pg_query::Node& group_clause(int index) const; ::pg_query::Node* add_group_clause(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& group_clause() const; // repeated .pg_query.Node window_clause = 9 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_window_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_window_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_window_clause(); public: const ::pg_query::Node& window_clause(int index) const; ::pg_query::Node* add_window_clause(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& window_clause() const; // repeated .pg_query.Node values_lists = 10 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_values_lists(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_values_lists() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_values_lists(); public: const ::pg_query::Node& values_lists(int index) const; ::pg_query::Node* add_values_lists(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& values_lists() const; // repeated .pg_query.Node sort_clause = 11 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_sort_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_sort_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_sort_clause(); public: const ::pg_query::Node& sort_clause(int index) const; ::pg_query::Node* add_sort_clause(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& sort_clause() const; // repeated .pg_query.Node locking_clause = 15 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_locking_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_locking_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_locking_clause(); public: const ::pg_query::Node& locking_clause(int index) const; ::pg_query::Node* add_locking_clause(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& locking_clause() const; // .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; bool has_into_clause() const; void clear_into_clause() ; const ::pg_query::IntoClause& into_clause() const; PROTOBUF_NODISCARD ::pg_query::IntoClause* release_into_clause(); ::pg_query::IntoClause* mutable_into_clause(); void set_allocated_into_clause(::pg_query::IntoClause* value); void unsafe_arena_set_allocated_into_clause(::pg_query::IntoClause* value); ::pg_query::IntoClause* unsafe_arena_release_into_clause(); private: const ::pg_query::IntoClause& _internal_into_clause() const; ::pg_query::IntoClause* _internal_mutable_into_clause(); public: // .pg_query.Node where_clause = 5 [json_name = "whereClause"]; bool has_where_clause() const; void clear_where_clause() ; const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* value); void unsafe_arena_set_allocated_where_clause(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_where_clause(); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: // .pg_query.Node having_clause = 8 [json_name = "havingClause"]; bool has_having_clause() const; void clear_having_clause() ; const ::pg_query::Node& having_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_having_clause(); ::pg_query::Node* mutable_having_clause(); void set_allocated_having_clause(::pg_query::Node* value); void unsafe_arena_set_allocated_having_clause(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_having_clause(); private: const ::pg_query::Node& _internal_having_clause() const; ::pg_query::Node* _internal_mutable_having_clause(); public: // .pg_query.Node limit_offset = 12 [json_name = "limitOffset"]; bool has_limit_offset() const; void clear_limit_offset() ; const ::pg_query::Node& limit_offset() const; PROTOBUF_NODISCARD ::pg_query::Node* release_limit_offset(); ::pg_query::Node* mutable_limit_offset(); void set_allocated_limit_offset(::pg_query::Node* value); void unsafe_arena_set_allocated_limit_offset(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_limit_offset(); private: const ::pg_query::Node& _internal_limit_offset() const; ::pg_query::Node* _internal_mutable_limit_offset(); public: // .pg_query.Node limit_count = 13 [json_name = "limitCount"]; bool has_limit_count() const; void clear_limit_count() ; const ::pg_query::Node& limit_count() const; PROTOBUF_NODISCARD ::pg_query::Node* release_limit_count(); ::pg_query::Node* mutable_limit_count(); void set_allocated_limit_count(::pg_query::Node* value); void unsafe_arena_set_allocated_limit_count(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_limit_count(); private: const ::pg_query::Node& _internal_limit_count() const; ::pg_query::Node* _internal_mutable_limit_count(); public: // .pg_query.WithClause with_clause = 16 [json_name = "withClause"]; bool has_with_clause() const; void clear_with_clause() ; const ::pg_query::WithClause& with_clause() const; PROTOBUF_NODISCARD ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* value); void unsafe_arena_set_allocated_with_clause(::pg_query::WithClause* value); ::pg_query::WithClause* unsafe_arena_release_with_clause(); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: // .pg_query.SelectStmt larg = 19 [json_name = "larg"]; bool has_larg() const; void clear_larg() ; const ::pg_query::SelectStmt& larg() const; PROTOBUF_NODISCARD ::pg_query::SelectStmt* release_larg(); ::pg_query::SelectStmt* mutable_larg(); void set_allocated_larg(::pg_query::SelectStmt* value); void unsafe_arena_set_allocated_larg(::pg_query::SelectStmt* value); ::pg_query::SelectStmt* unsafe_arena_release_larg(); private: const ::pg_query::SelectStmt& _internal_larg() const; ::pg_query::SelectStmt* _internal_mutable_larg(); public: // .pg_query.SelectStmt rarg = 20 [json_name = "rarg"]; bool has_rarg() const; void clear_rarg() ; const ::pg_query::SelectStmt& rarg() const; PROTOBUF_NODISCARD ::pg_query::SelectStmt* release_rarg(); ::pg_query::SelectStmt* mutable_rarg(); void set_allocated_rarg(::pg_query::SelectStmt* value); void unsafe_arena_set_allocated_rarg(::pg_query::SelectStmt* value); ::pg_query::SelectStmt* unsafe_arena_release_rarg(); private: const ::pg_query::SelectStmt& _internal_rarg() const; ::pg_query::SelectStmt* _internal_mutable_rarg(); public: // bool group_distinct = 7 [json_name = "groupDistinct"]; void clear_group_distinct() ; bool group_distinct() const; void set_group_distinct(bool value); private: bool _internal_group_distinct() const; void _internal_set_group_distinct(bool value); public: // bool all = 18 [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: // .pg_query.LimitOption limit_option = 14 [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 = 17 [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: // @@protoc_insertion_point(class_scope:pg_query.SelectStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 5, 20, 16, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > distinct_clause_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > target_list_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > from_clause_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > group_clause_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > window_clause_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > values_lists_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > sort_clause_; ::google::protobuf::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_; bool group_distinct_; bool all_; int limit_option_; int op_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class SetOperationStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.SetOperationStmt) */ { public: inline SetOperationStmt() : SetOperationStmt(nullptr) {} ~SetOperationStmt() override; template explicit PROTOBUF_CONSTEXPR SetOperationStmt(::google::protobuf::internal::ConstantInitialized); inline SetOperationStmt(const SetOperationStmt& from) : SetOperationStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const SetOperationStmt& default_instance() { return *internal_default_instance(); } static inline const SetOperationStmt* internal_default_instance() { return reinterpret_cast( &_SetOperationStmt_default_instance_); } static constexpr int kIndexInFileMessages = 148; friend void swap(SetOperationStmt& a, SetOperationStmt& b) { a.Swap(&b); } inline void Swap(SetOperationStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SetOperationStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SetOperationStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const SetOperationStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const SetOperationStmt& from) { SetOperationStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(SetOperationStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.SetOperationStmt"; } protected: explicit SetOperationStmt(::google::protobuf::Arena* arena); SetOperationStmt(::google::protobuf::Arena* arena, const SetOperationStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_col_types(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_col_types() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_col_types(); public: const ::pg_query::Node& col_types(int index) const; ::pg_query::Node* add_col_types(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_col_typmods(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_col_typmods() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_col_typmods(); public: const ::pg_query::Node& col_typmods(int index) const; ::pg_query::Node* add_col_typmods(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_col_collations(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_col_collations() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_col_collations(); public: const ::pg_query::Node& col_collations(int index) const; ::pg_query::Node* add_col_collations(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_group_clauses(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_group_clauses() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_group_clauses(); public: const ::pg_query::Node& group_clauses(int index) const; ::pg_query::Node* add_group_clauses(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& group_clauses() const; // .pg_query.Node larg = 3 [json_name = "larg"]; bool has_larg() const; void clear_larg() ; const ::pg_query::Node& larg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_larg(); ::pg_query::Node* mutable_larg(); void set_allocated_larg(::pg_query::Node* value); void unsafe_arena_set_allocated_larg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_larg(); private: const ::pg_query::Node& _internal_larg() const; ::pg_query::Node* _internal_mutable_larg(); public: // .pg_query.Node rarg = 4 [json_name = "rarg"]; bool has_rarg() const; void clear_rarg() ; const ::pg_query::Node& rarg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_rarg(); ::pg_query::Node* mutable_rarg(); void set_allocated_rarg(::pg_query::Node* value); void unsafe_arena_set_allocated_rarg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_rarg(); private: const ::pg_query::Node& _internal_rarg() const; ::pg_query::Node* _internal_mutable_rarg(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 6, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > col_types_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > col_typmods_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > col_collations_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > group_clauses_; ::pg_query::Node* larg_; ::pg_query::Node* rarg_; int op_; bool all_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class SetToDefault final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.SetToDefault) */ { public: inline SetToDefault() : SetToDefault(nullptr) {} ~SetToDefault() override; template explicit PROTOBUF_CONSTEXPR SetToDefault(::google::protobuf::internal::ConstantInitialized); inline SetToDefault(const SetToDefault& from) : SetToDefault(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const SetToDefault& default_instance() { return *internal_default_instance(); } static inline const SetToDefault* internal_default_instance() { return reinterpret_cast( &_SetToDefault_default_instance_); } static constexpr int kIndexInFileMessages = 66; friend void swap(SetToDefault& a, SetToDefault& b) { a.Swap(&b); } inline void Swap(SetToDefault* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SetToDefault* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SetToDefault* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const SetToDefault& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const SetToDefault& from) { SetToDefault::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(SetToDefault* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.SetToDefault"; } protected: explicit SetToDefault(::google::protobuf::Arena* arena); SetToDefault(::google::protobuf::Arena* arena, const SetToDefault& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // uint32 type_id = 2 [json_name = "typeId"]; void clear_type_id() ; ::uint32_t type_id() const; void set_type_id(::uint32_t value); private: ::uint32_t _internal_type_id() const; void _internal_set_type_id(::uint32_t value); public: // int32 type_mod = 3 [json_name = "typeMod"]; void clear_type_mod() ; ::int32_t type_mod() const; void set_type_mod(::int32_t value); private: ::int32_t _internal_type_mod() const; void _internal_set_type_mod(::int32_t value); public: // uint32 collation = 4 [json_name = "collation"]; void clear_collation() ; ::uint32_t collation() const; void set_collation(::uint32_t value); private: ::uint32_t _internal_collation() const; void _internal_set_collation(::uint32_t value); public: // int32 location = 5 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.SetToDefault) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::uint32_t type_id_; ::int32_t type_mod_; ::uint32_t collation_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class SortBy final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.SortBy) */ { public: inline SortBy() : SortBy(nullptr) {} ~SortBy() override; template explicit PROTOBUF_CONSTEXPR SortBy(::google::protobuf::internal::ConstantInitialized); inline SortBy(const SortBy& from) : SortBy(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const SortBy& default_instance() { return *internal_default_instance(); } static inline const SortBy* internal_default_instance() { return reinterpret_cast( &_SortBy_default_instance_); } static constexpr int kIndexInFileMessages = 90; friend void swap(SortBy& a, SortBy& b) { a.Swap(&b); } inline void Swap(SortBy* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SortBy* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SortBy* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const SortBy& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const SortBy& from) { SortBy::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(SortBy* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.SortBy"; } protected: explicit SortBy(::google::protobuf::Arena* arena); SortBy(::google::protobuf::Arena* arena, const SortBy& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_use_op(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_use_op() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_use_op(); public: const ::pg_query::Node& use_op(int index) const; ::pg_query::Node* add_use_op(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& use_op() const; // .pg_query.Node node = 1 [json_name = "node"]; bool has_node() const; void clear_node() ; const ::pg_query::Node& node() const; PROTOBUF_NODISCARD ::pg_query::Node* release_node(); ::pg_query::Node* mutable_node(); void set_allocated_node(::pg_query::Node* value); void unsafe_arena_set_allocated_node(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_node(); private: const ::pg_query::Node& _internal_node() const; ::pg_query::Node* _internal_mutable_node(); public: // .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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.SortBy) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > use_op_; ::pg_query::Node* node_; int sortby_dir_; int sortby_nulls_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class StatsElem final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.StatsElem) */ { public: inline StatsElem() : StatsElem(nullptr) {} ~StatsElem() override; template explicit PROTOBUF_CONSTEXPR StatsElem(::google::protobuf::internal::ConstantInitialized); inline StatsElem(const StatsElem& from) : StatsElem(nullptr, from) {} StatsElem(StatsElem&& from) noexcept : StatsElem() { *this = ::std::move(from); } inline StatsElem& operator=(const StatsElem& from) { CopyFrom(from); return *this; } inline StatsElem& operator=(StatsElem&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const StatsElem& default_instance() { return *internal_default_instance(); } static inline const StatsElem* internal_default_instance() { return reinterpret_cast( &_StatsElem_default_instance_); } static constexpr int kIndexInFileMessages = 211; friend void swap(StatsElem& a, StatsElem& b) { a.Swap(&b); } inline void Swap(StatsElem* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(StatsElem* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- StatsElem* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const StatsElem& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const StatsElem& from) { StatsElem::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(StatsElem* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.StatsElem"; } protected: explicit StatsElem(::google::protobuf::Arena* arena); StatsElem(::google::protobuf::Arena* arena, const StatsElem& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 1, kExprFieldNumber = 2, }; // string name = 1 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_expr() ; const ::pg_query::Node& expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* value); void unsafe_arena_set_allocated_expr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_expr(); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: // @@protoc_insertion_point(class_scope:pg_query.StatsElem) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 31, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::Node* expr_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class SubLink final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.SubLink) */ { public: inline SubLink() : SubLink(nullptr) {} ~SubLink() override; template explicit PROTOBUF_CONSTEXPR SubLink(::google::protobuf::internal::ConstantInitialized); inline SubLink(const SubLink& from) : SubLink(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const SubLink& default_instance() { return *internal_default_instance(); } static inline const SubLink* internal_default_instance() { return reinterpret_cast( &_SubLink_default_instance_); } static constexpr int kIndexInFileMessages = 31; friend void swap(SubLink& a, SubLink& b) { a.Swap(&b); } inline void Swap(SubLink* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SubLink* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SubLink* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const SubLink& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const SubLink& from) { SubLink::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(SubLink* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.SubLink"; } protected: explicit SubLink(::google::protobuf::Arena* arena); SubLink(::google::protobuf::Arena* arena, const SubLink& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_oper_name(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_oper_name() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_oper_name(); public: const ::pg_query::Node& oper_name(int index) const; ::pg_query::Node* add_oper_name(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& oper_name() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node testexpr = 4 [json_name = "testexpr"]; bool has_testexpr() const; void clear_testexpr() ; const ::pg_query::Node& testexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_testexpr(); ::pg_query::Node* mutable_testexpr(); void set_allocated_testexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_testexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_testexpr(); private: const ::pg_query::Node& _internal_testexpr() const; ::pg_query::Node* _internal_mutable_testexpr(); public: // .pg_query.Node subselect = 6 [json_name = "subselect"]; bool has_subselect() const; void clear_subselect() ; const ::pg_query::Node& subselect() const; PROTOBUF_NODISCARD ::pg_query::Node* release_subselect(); ::pg_query::Node* mutable_subselect(); void set_allocated_subselect(::pg_query::Node* value); void unsafe_arena_set_allocated_subselect(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_subselect(); private: const ::pg_query::Node& _internal_subselect() const; ::pg_query::Node* _internal_mutable_subselect(); public: // .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() ; ::int32_t sub_link_id() const; void set_sub_link_id(::int32_t value); private: ::int32_t _internal_sub_link_id() const; void _internal_set_sub_link_id(::int32_t value); public: // int32 location = 7 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.SubLink) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 7, 4, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > oper_name_; ::pg_query::Node* xpr_; ::pg_query::Node* testexpr_; ::pg_query::Node* subselect_; int sub_link_type_; ::int32_t sub_link_id_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class SubPlan final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.SubPlan) */ { public: inline SubPlan() : SubPlan(nullptr) {} ~SubPlan() override; template explicit PROTOBUF_CONSTEXPR SubPlan(::google::protobuf::internal::ConstantInitialized); inline SubPlan(const SubPlan& from) : SubPlan(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const SubPlan& default_instance() { return *internal_default_instance(); } static inline const SubPlan* internal_default_instance() { return reinterpret_cast( &_SubPlan_default_instance_); } static constexpr int kIndexInFileMessages = 32; friend void swap(SubPlan& a, SubPlan& b) { a.Swap(&b); } inline void Swap(SubPlan* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SubPlan* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SubPlan* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const SubPlan& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const SubPlan& from) { SubPlan::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(SubPlan* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.SubPlan"; } protected: explicit SubPlan(::google::protobuf::Arena* arena); SubPlan(::google::protobuf::Arena* arena, const SubPlan& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_param_ids(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_param_ids() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_param_ids(); public: const ::pg_query::Node& param_ids(int index) const; ::pg_query::Node* add_param_ids(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_set_param(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_set_param() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_set_param(); public: const ::pg_query::Node& set_param(int index) const; ::pg_query::Node* add_set_param(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_par_param(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_par_param() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_par_param(); public: const ::pg_query::Node& par_param(int index) const; ::pg_query::Node* add_par_param(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // string plan_name = 6 [json_name = "plan_name"]; void clear_plan_name() ; const std::string& plan_name() const; template void set_plan_name(Arg_&& arg, Args_... args); std::string* mutable_plan_name(); PROTOBUF_NODISCARD std::string* release_plan_name(); void set_allocated_plan_name(std::string* value); private: const std::string& _internal_plan_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node testexpr = 3 [json_name = "testexpr"]; bool has_testexpr() const; void clear_testexpr() ; const ::pg_query::Node& testexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_testexpr(); ::pg_query::Node* mutable_testexpr(); void set_allocated_testexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_testexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_testexpr(); private: const ::pg_query::Node& _internal_testexpr() const; ::pg_query::Node* _internal_mutable_testexpr(); public: // .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() ; ::int32_t plan_id() const; void set_plan_id(::int32_t value); private: ::int32_t _internal_plan_id() const; void _internal_set_plan_id(::int32_t value); public: // uint32 first_col_type = 7 [json_name = "firstColType"]; void clear_first_col_type() ; ::uint32_t first_col_type() const; void set_first_col_type(::uint32_t value); private: ::uint32_t _internal_first_col_type() const; void _internal_set_first_col_type(::uint32_t value); public: // int32 first_col_typmod = 8 [json_name = "firstColTypmod"]; void clear_first_col_typmod() ; ::int32_t first_col_typmod() const; void set_first_col_typmod(::int32_t value); private: ::int32_t _internal_first_col_typmod() const; void _internal_set_first_col_typmod(::int32_t value); public: // uint32 first_col_collation = 9 [json_name = "firstColCollation"]; void clear_first_col_collation() ; ::uint32_t first_col_collation() const; void set_first_col_collation(::uint32_t value); private: ::uint32_t _internal_first_col_collation() const; void _internal_set_first_col_collation(::uint32_t 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 5, 17, 6, 50, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > param_ids_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > set_param_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > par_param_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::google::protobuf::internal::ArenaStringPtr plan_name_; ::pg_query::Node* xpr_; ::pg_query::Node* testexpr_; int sub_link_type_; ::int32_t plan_id_; ::uint32_t first_col_type_; ::int32_t first_col_typmod_; ::uint32_t first_col_collation_; bool use_hash_table_; bool unknown_eq_false_; bool parallel_safe_; double startup_cost_; double per_call_cost_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class SubscriptingRef final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.SubscriptingRef) */ { public: inline SubscriptingRef() : SubscriptingRef(nullptr) {} ~SubscriptingRef() override; template explicit PROTOBUF_CONSTEXPR SubscriptingRef(::google::protobuf::internal::ConstantInitialized); inline SubscriptingRef(const SubscriptingRef& from) : SubscriptingRef(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const SubscriptingRef& default_instance() { return *internal_default_instance(); } static inline const SubscriptingRef* internal_default_instance() { return reinterpret_cast( &_SubscriptingRef_default_instance_); } static constexpr int kIndexInFileMessages = 23; friend void swap(SubscriptingRef& a, SubscriptingRef& b) { a.Swap(&b); } inline void Swap(SubscriptingRef* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SubscriptingRef* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- SubscriptingRef* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const SubscriptingRef& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const SubscriptingRef& from) { SubscriptingRef::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(SubscriptingRef* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.SubscriptingRef"; } protected: explicit SubscriptingRef(::google::protobuf::Arena* arena); SubscriptingRef(::google::protobuf::Arena* arena, const SubscriptingRef& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRefupperindexprFieldNumber = 7, kReflowerindexprFieldNumber = 8, kXprFieldNumber = 1, kRefexprFieldNumber = 9, kRefassgnexprFieldNumber = 10, kRefcontainertypeFieldNumber = 2, kRefelemtypeFieldNumber = 3, kRefrestypeFieldNumber = 4, kReftypmodFieldNumber = 5, kRefcollidFieldNumber = 6, }; // repeated .pg_query.Node refupperindexpr = 7 [json_name = "refupperindexpr"]; int refupperindexpr_size() const; private: int _internal_refupperindexpr_size() const; public: void clear_refupperindexpr() ; ::pg_query::Node* mutable_refupperindexpr(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_refupperindexpr(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_refupperindexpr() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_refupperindexpr(); public: const ::pg_query::Node& refupperindexpr(int index) const; ::pg_query::Node* add_refupperindexpr(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& refupperindexpr() const; // repeated .pg_query.Node reflowerindexpr = 8 [json_name = "reflowerindexpr"]; int reflowerindexpr_size() const; private: int _internal_reflowerindexpr_size() const; public: void clear_reflowerindexpr() ; ::pg_query::Node* mutable_reflowerindexpr(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_reflowerindexpr(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_reflowerindexpr() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_reflowerindexpr(); public: const ::pg_query::Node& reflowerindexpr(int index) const; ::pg_query::Node* add_reflowerindexpr(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& reflowerindexpr() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node refexpr = 9 [json_name = "refexpr"]; bool has_refexpr() const; void clear_refexpr() ; const ::pg_query::Node& refexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_refexpr(); ::pg_query::Node* mutable_refexpr(); void set_allocated_refexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_refexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_refexpr(); private: const ::pg_query::Node& _internal_refexpr() const; ::pg_query::Node* _internal_mutable_refexpr(); public: // .pg_query.Node refassgnexpr = 10 [json_name = "refassgnexpr"]; bool has_refassgnexpr() const; void clear_refassgnexpr() ; const ::pg_query::Node& refassgnexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_refassgnexpr(); ::pg_query::Node* mutable_refassgnexpr(); void set_allocated_refassgnexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_refassgnexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_refassgnexpr(); private: const ::pg_query::Node& _internal_refassgnexpr() const; ::pg_query::Node* _internal_mutable_refassgnexpr(); public: // uint32 refcontainertype = 2 [json_name = "refcontainertype"]; void clear_refcontainertype() ; ::uint32_t refcontainertype() const; void set_refcontainertype(::uint32_t value); private: ::uint32_t _internal_refcontainertype() const; void _internal_set_refcontainertype(::uint32_t value); public: // uint32 refelemtype = 3 [json_name = "refelemtype"]; void clear_refelemtype() ; ::uint32_t refelemtype() const; void set_refelemtype(::uint32_t value); private: ::uint32_t _internal_refelemtype() const; void _internal_set_refelemtype(::uint32_t value); public: // uint32 refrestype = 4 [json_name = "refrestype"]; void clear_refrestype() ; ::uint32_t refrestype() const; void set_refrestype(::uint32_t value); private: ::uint32_t _internal_refrestype() const; void _internal_set_refrestype(::uint32_t value); public: // int32 reftypmod = 5 [json_name = "reftypmod"]; void clear_reftypmod() ; ::int32_t reftypmod() const; void set_reftypmod(::int32_t value); private: ::int32_t _internal_reftypmod() const; void _internal_set_reftypmod(::int32_t value); public: // uint32 refcollid = 6 [json_name = "refcollid"]; void clear_refcollid() ; ::uint32_t refcollid() const; void set_refcollid(::uint32_t value); private: ::uint32_t _internal_refcollid() const; void _internal_set_refcollid(::uint32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.SubscriptingRef) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 10, 5, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > refupperindexpr_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > reflowerindexpr_; ::pg_query::Node* xpr_; ::pg_query::Node* refexpr_; ::pg_query::Node* refassgnexpr_; ::uint32_t refcontainertype_; ::uint32_t refelemtype_; ::uint32_t refrestype_; ::int32_t reftypmod_; ::uint32_t refcollid_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class TableFunc final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.TableFunc) */ { public: inline TableFunc() : TableFunc(nullptr) {} ~TableFunc() override; template explicit PROTOBUF_CONSTEXPR TableFunc(::google::protobuf::internal::ConstantInitialized); inline TableFunc(const TableFunc& from) : TableFunc(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const TableFunc& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TableFunc* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TableFunc* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const TableFunc& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const TableFunc& from) { TableFunc::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(TableFunc* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.TableFunc"; } protected: explicit TableFunc(::google::protobuf::Arena* arena); TableFunc(::google::protobuf::Arena* arena, const TableFunc& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNsUrisFieldNumber = 2, kNsNamesFieldNumber = 3, kColnamesFieldNumber = 6, kColtypesFieldNumber = 7, kColtypmodsFieldNumber = 8, kColcollationsFieldNumber = 9, kColexprsFieldNumber = 10, kColdefexprsFieldNumber = 11, kColvalexprsFieldNumber = 12, kPassingvalexprsFieldNumber = 13, kNotnullsFieldNumber = 14, kDocexprFieldNumber = 4, kRowexprFieldNumber = 5, kPlanFieldNumber = 15, kFunctypeFieldNumber = 1, kOrdinalitycolFieldNumber = 16, kLocationFieldNumber = 17, }; // repeated .pg_query.Node ns_uris = 2 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_ns_uris(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_ns_uris() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_ns_uris(); public: const ::pg_query::Node& ns_uris(int index) const; ::pg_query::Node* add_ns_uris(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& ns_uris() const; // repeated .pg_query.Node ns_names = 3 [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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_ns_names(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_ns_names() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_ns_names(); public: const ::pg_query::Node& ns_names(int index) const; ::pg_query::Node* add_ns_names(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& ns_names() const; // repeated .pg_query.Node colnames = 6 [json_name = "colnames"]; int colnames_size() const; private: int _internal_colnames_size() const; public: void clear_colnames() ; ::pg_query::Node* mutable_colnames(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_colnames(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_colnames() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_colnames(); public: const ::pg_query::Node& colnames(int index) const; ::pg_query::Node* add_colnames(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& colnames() const; // repeated .pg_query.Node coltypes = 7 [json_name = "coltypes"]; int coltypes_size() const; private: int _internal_coltypes_size() const; public: void clear_coltypes() ; ::pg_query::Node* mutable_coltypes(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_coltypes(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_coltypes() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_coltypes(); public: const ::pg_query::Node& coltypes(int index) const; ::pg_query::Node* add_coltypes(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& coltypes() const; // repeated .pg_query.Node coltypmods = 8 [json_name = "coltypmods"]; int coltypmods_size() const; private: int _internal_coltypmods_size() const; public: void clear_coltypmods() ; ::pg_query::Node* mutable_coltypmods(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_coltypmods(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_coltypmods() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_coltypmods(); public: const ::pg_query::Node& coltypmods(int index) const; ::pg_query::Node* add_coltypmods(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& coltypmods() const; // repeated .pg_query.Node colcollations = 9 [json_name = "colcollations"]; int colcollations_size() const; private: int _internal_colcollations_size() const; public: void clear_colcollations() ; ::pg_query::Node* mutable_colcollations(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_colcollations(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_colcollations() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_colcollations(); public: const ::pg_query::Node& colcollations(int index) const; ::pg_query::Node* add_colcollations(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& colcollations() const; // repeated .pg_query.Node colexprs = 10 [json_name = "colexprs"]; int colexprs_size() const; private: int _internal_colexprs_size() const; public: void clear_colexprs() ; ::pg_query::Node* mutable_colexprs(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_colexprs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_colexprs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_colexprs(); public: const ::pg_query::Node& colexprs(int index) const; ::pg_query::Node* add_colexprs(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& colexprs() const; // repeated .pg_query.Node coldefexprs = 11 [json_name = "coldefexprs"]; int coldefexprs_size() const; private: int _internal_coldefexprs_size() const; public: void clear_coldefexprs() ; ::pg_query::Node* mutable_coldefexprs(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_coldefexprs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_coldefexprs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_coldefexprs(); public: const ::pg_query::Node& coldefexprs(int index) const; ::pg_query::Node* add_coldefexprs(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& coldefexprs() const; // repeated .pg_query.Node colvalexprs = 12 [json_name = "colvalexprs"]; int colvalexprs_size() const; private: int _internal_colvalexprs_size() const; public: void clear_colvalexprs() ; ::pg_query::Node* mutable_colvalexprs(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_colvalexprs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_colvalexprs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_colvalexprs(); public: const ::pg_query::Node& colvalexprs(int index) const; ::pg_query::Node* add_colvalexprs(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& colvalexprs() const; // repeated .pg_query.Node passingvalexprs = 13 [json_name = "passingvalexprs"]; int passingvalexprs_size() const; private: int _internal_passingvalexprs_size() const; public: void clear_passingvalexprs() ; ::pg_query::Node* mutable_passingvalexprs(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_passingvalexprs(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_passingvalexprs() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_passingvalexprs(); public: const ::pg_query::Node& passingvalexprs(int index) const; ::pg_query::Node* add_passingvalexprs(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& passingvalexprs() const; // repeated uint64 notnulls = 14 [json_name = "notnulls"]; int notnulls_size() const; private: int _internal_notnulls_size() const; public: void clear_notnulls() ; ::uint64_t notnulls(int index) const; void set_notnulls(int index, ::uint64_t value); void add_notnulls(::uint64_t value); const ::google::protobuf::RepeatedField<::uint64_t>& notnulls() const; ::google::protobuf::RepeatedField<::uint64_t>* mutable_notnulls(); private: const ::google::protobuf::RepeatedField<::uint64_t>& _internal_notnulls() const; ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_notnulls(); public: // .pg_query.Node docexpr = 4 [json_name = "docexpr"]; bool has_docexpr() const; void clear_docexpr() ; const ::pg_query::Node& docexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_docexpr(); ::pg_query::Node* mutable_docexpr(); void set_allocated_docexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_docexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_docexpr(); private: const ::pg_query::Node& _internal_docexpr() const; ::pg_query::Node* _internal_mutable_docexpr(); public: // .pg_query.Node rowexpr = 5 [json_name = "rowexpr"]; bool has_rowexpr() const; void clear_rowexpr() ; const ::pg_query::Node& rowexpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_rowexpr(); ::pg_query::Node* mutable_rowexpr(); void set_allocated_rowexpr(::pg_query::Node* value); void unsafe_arena_set_allocated_rowexpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_rowexpr(); private: const ::pg_query::Node& _internal_rowexpr() const; ::pg_query::Node* _internal_mutable_rowexpr(); public: // .pg_query.Node plan = 15 [json_name = "plan"]; bool has_plan() const; void clear_plan() ; const ::pg_query::Node& plan() const; PROTOBUF_NODISCARD ::pg_query::Node* release_plan(); ::pg_query::Node* mutable_plan(); void set_allocated_plan(::pg_query::Node* value); void unsafe_arena_set_allocated_plan(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_plan(); private: const ::pg_query::Node& _internal_plan() const; ::pg_query::Node* _internal_mutable_plan(); public: // .pg_query.TableFuncType functype = 1 [json_name = "functype"]; void clear_functype() ; ::pg_query::TableFuncType functype() const; void set_functype(::pg_query::TableFuncType value); private: ::pg_query::TableFuncType _internal_functype() const; void _internal_set_functype(::pg_query::TableFuncType value); public: // int32 ordinalitycol = 16 [json_name = "ordinalitycol"]; void clear_ordinalitycol() ; ::int32_t ordinalitycol() const; void set_ordinalitycol(::int32_t value); private: ::int32_t _internal_ordinalitycol() const; void _internal_set_ordinalitycol(::int32_t value); public: // int32 location = 17 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.TableFunc) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 5, 17, 13, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > ns_uris_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > ns_names_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > colnames_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > coltypes_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > coltypmods_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > colcollations_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > colexprs_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > coldefexprs_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > colvalexprs_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > passingvalexprs_; ::google::protobuf::RepeatedField<::uint64_t> notnulls_; mutable ::google::protobuf::internal::CachedSize _notnulls_cached_byte_size_; ::pg_query::Node* docexpr_; ::pg_query::Node* rowexpr_; ::pg_query::Node* plan_; int functype_; ::int32_t ordinalitycol_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class TableLikeClause final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.TableLikeClause) */ { public: inline TableLikeClause() : TableLikeClause(nullptr) {} ~TableLikeClause() override; template explicit PROTOBUF_CONSTEXPR TableLikeClause(::google::protobuf::internal::ConstantInitialized); inline TableLikeClause(const TableLikeClause& from) : TableLikeClause(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const TableLikeClause& default_instance() { return *internal_default_instance(); } static inline const TableLikeClause* internal_default_instance() { return reinterpret_cast( &_TableLikeClause_default_instance_); } static constexpr int kIndexInFileMessages = 98; friend void swap(TableLikeClause& a, TableLikeClause& b) { a.Swap(&b); } inline void Swap(TableLikeClause* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TableLikeClause* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TableLikeClause* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const TableLikeClause& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const TableLikeClause& from) { TableLikeClause::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(TableLikeClause* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.TableLikeClause"; } protected: explicit TableLikeClause(::google::protobuf::Arena* arena); TableLikeClause(::google::protobuf::Arena* arena, const TableLikeClause& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRelationFieldNumber = 1, kOptionsFieldNumber = 2, kRelationOidFieldNumber = 3, }; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // uint32 options = 2 [json_name = "options"]; void clear_options() ; ::uint32_t options() const; void set_options(::uint32_t value); private: ::uint32_t _internal_options() const; void _internal_set_options(::uint32_t value); public: // uint32 relation_oid = 3 [json_name = "relationOid"]; void clear_relation_oid() ; ::uint32_t relation_oid() const; void set_relation_oid(::uint32_t value); private: ::uint32_t _internal_relation_oid() const; void _internal_set_relation_oid(::uint32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.TableLikeClause) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::RangeVar* relation_; ::uint32_t options_; ::uint32_t relation_oid_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class TableSampleClause final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.TableSampleClause) */ { public: inline TableSampleClause() : TableSampleClause(nullptr) {} ~TableSampleClause() override; template explicit PROTOBUF_CONSTEXPR TableSampleClause(::google::protobuf::internal::ConstantInitialized); inline TableSampleClause(const TableSampleClause& from) : TableSampleClause(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const TableSampleClause& default_instance() { return *internal_default_instance(); } static inline const TableSampleClause* internal_default_instance() { return reinterpret_cast( &_TableSampleClause_default_instance_); } static constexpr int kIndexInFileMessages = 112; friend void swap(TableSampleClause& a, TableSampleClause& b) { a.Swap(&b); } inline void Swap(TableSampleClause* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TableSampleClause* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TableSampleClause* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const TableSampleClause& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const TableSampleClause& from) { TableSampleClause::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(TableSampleClause* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.TableSampleClause"; } protected: explicit TableSampleClause(::google::protobuf::Arena* arena); TableSampleClause(::google::protobuf::Arena* arena, const TableSampleClause& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node repeatable = 3 [json_name = "repeatable"]; bool has_repeatable() const; void clear_repeatable() ; const ::pg_query::Node& repeatable() const; PROTOBUF_NODISCARD ::pg_query::Node* release_repeatable(); ::pg_query::Node* mutable_repeatable(); void set_allocated_repeatable(::pg_query::Node* value); void unsafe_arena_set_allocated_repeatable(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_repeatable(); private: const ::pg_query::Node& _internal_repeatable() const; ::pg_query::Node* _internal_mutable_repeatable(); public: // uint32 tsmhandler = 1 [json_name = "tsmhandler"]; void clear_tsmhandler() ; ::uint32_t tsmhandler() const; void set_tsmhandler(::uint32_t value); private: ::uint32_t _internal_tsmhandler() const; void _internal_set_tsmhandler(::uint32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.TableSampleClause) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* repeatable_; ::uint32_t tsmhandler_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class TargetEntry final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.TargetEntry) */ { public: inline TargetEntry() : TargetEntry(nullptr) {} ~TargetEntry() override; template explicit PROTOBUF_CONSTEXPR TargetEntry(::google::protobuf::internal::ConstantInitialized); inline TargetEntry(const TargetEntry& from) : TargetEntry(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const TargetEntry& default_instance() { return *internal_default_instance(); } static inline const TargetEntry* internal_default_instance() { return reinterpret_cast( &_TargetEntry_default_instance_); } static constexpr int kIndexInFileMessages = 70; friend void swap(TargetEntry& a, TargetEntry& b) { a.Swap(&b); } inline void Swap(TargetEntry* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TargetEntry* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TargetEntry* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const TargetEntry& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const TargetEntry& from) { TargetEntry::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(TargetEntry* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.TargetEntry"; } protected: explicit TargetEntry(::google::protobuf::Arena* arena); TargetEntry(::google::protobuf::Arena* arena, const TargetEntry& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_resname(Arg_&& arg, Args_... args); std::string* mutable_resname(); PROTOBUF_NODISCARD std::string* release_resname(); void set_allocated_resname(std::string* value); private: const std::string& _internal_resname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; void clear_expr() ; const ::pg_query::Node& expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* value); void unsafe_arena_set_allocated_expr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_expr(); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: // int32 resno = 3 [json_name = "resno"]; void clear_resno() ; ::int32_t resno() const; void set_resno(::int32_t value); private: ::int32_t _internal_resno() const; void _internal_set_resno(::int32_t value); public: // uint32 ressortgroupref = 5 [json_name = "ressortgroupref"]; void clear_ressortgroupref() ; ::uint32_t ressortgroupref() const; void set_ressortgroupref(::uint32_t value); private: ::uint32_t _internal_ressortgroupref() const; void _internal_set_ressortgroupref(::uint32_t value); public: // uint32 resorigtbl = 6 [json_name = "resorigtbl"]; void clear_resorigtbl() ; ::uint32_t resorigtbl() const; void set_resorigtbl(::uint32_t value); private: ::uint32_t _internal_resorigtbl() const; void _internal_set_resorigtbl(::uint32_t value); public: // int32 resorigcol = 7 [json_name = "resorigcol"]; void clear_resorigcol() ; ::int32_t resorigcol() const; void set_resorigcol(::int32_t value); private: ::int32_t _internal_resorigcol() const; void _internal_set_resorigcol(::int32_t 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 2, 44, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr resname_; ::pg_query::Node* xpr_; ::pg_query::Node* expr_; ::int32_t resno_; ::uint32_t ressortgroupref_; ::uint32_t resorigtbl_; ::int32_t resorigcol_; bool resjunk_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class TransactionStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.TransactionStmt) */ { public: inline TransactionStmt() : TransactionStmt(nullptr) {} ~TransactionStmt() override; template explicit PROTOBUF_CONSTEXPR TransactionStmt(::google::protobuf::internal::ConstantInitialized); inline TransactionStmt(const TransactionStmt& from) : TransactionStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const TransactionStmt& default_instance() { return *internal_default_instance(); } static inline const TransactionStmt* internal_default_instance() { return reinterpret_cast( &_TransactionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 230; friend void swap(TransactionStmt& a, TransactionStmt& b) { a.Swap(&b); } inline void Swap(TransactionStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TransactionStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TransactionStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const TransactionStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const TransactionStmt& from) { TransactionStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(TransactionStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.TransactionStmt"; } protected: explicit TransactionStmt(::google::protobuf::Arena* arena); TransactionStmt(::google::protobuf::Arena* arena, const TransactionStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kSavepointNameFieldNumber = 3, kGidFieldNumber = 4, kKindFieldNumber = 1, kChainFieldNumber = 5, kLocationFieldNumber = 6, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // string savepoint_name = 3 [json_name = "savepoint_name"]; void clear_savepoint_name() ; const std::string& savepoint_name() const; template void set_savepoint_name(Arg_&& arg, Args_... args); std::string* mutable_savepoint_name(); PROTOBUF_NODISCARD std::string* release_savepoint_name(); void set_allocated_savepoint_name(std::string* value); private: const std::string& _internal_savepoint_name() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_gid(Arg_&& arg, Args_... args); std::string* mutable_gid(); PROTOBUF_NODISCARD std::string* release_gid(); void set_allocated_gid(std::string* value); private: const std::string& _internal_gid() const; inline PROTOBUF_ALWAYS_INLINE 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: // int32 location = 6 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.TransactionStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 1, 50, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::internal::ArenaStringPtr savepoint_name_; ::google::protobuf::internal::ArenaStringPtr gid_; int kind_; bool chain_; ::int32_t location_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class TruncateStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.TruncateStmt) */ { public: inline TruncateStmt() : TruncateStmt(nullptr) {} ~TruncateStmt() override; template explicit PROTOBUF_CONSTEXPR TruncateStmt(::google::protobuf::internal::ConstantInitialized); inline TruncateStmt(const TruncateStmt& from) : TruncateStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const TruncateStmt& default_instance() { return *internal_default_instance(); } static inline const TruncateStmt* internal_default_instance() { return reinterpret_cast( &_TruncateStmt_default_instance_); } static constexpr int kIndexInFileMessages = 203; friend void swap(TruncateStmt& a, TruncateStmt& b) { a.Swap(&b); } inline void Swap(TruncateStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TruncateStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TruncateStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const TruncateStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const TruncateStmt& from) { TruncateStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(TruncateStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.TruncateStmt"; } protected: explicit TruncateStmt(::google::protobuf::Arena* arena); TruncateStmt(::google::protobuf::Arena* arena, const TruncateStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_relations(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_relations() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_relations(); public: const ::pg_query::Node& relations(int index) const; ::pg_query::Node* add_relations(); const ::google::protobuf::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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > relations_; bool restart_seqs_; int behavior_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class TypeCast final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.TypeCast) */ { public: inline TypeCast() : TypeCast(nullptr) {} ~TypeCast() override; template explicit PROTOBUF_CONSTEXPR TypeCast(::google::protobuf::internal::ConstantInitialized); inline TypeCast(const TypeCast& from) : TypeCast(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const TypeCast& default_instance() { return *internal_default_instance(); } static inline const TypeCast* internal_default_instance() { return reinterpret_cast( &_TypeCast_default_instance_); } static constexpr int kIndexInFileMessages = 80; friend void swap(TypeCast& a, TypeCast& b) { a.Swap(&b); } inline void Swap(TypeCast* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TypeCast* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TypeCast* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const TypeCast& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const TypeCast& from) { TypeCast::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(TypeCast* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.TypeCast"; } protected: explicit TypeCast(::google::protobuf::Arena* arena); TypeCast(::google::protobuf::Arena* arena, const TypeCast& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgFieldNumber = 1, kTypeNameFieldNumber = 2, kLocationFieldNumber = 3, }; // .pg_query.Node arg = 1 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; bool has_type_name() const; void clear_type_name() ; const ::pg_query::TypeName& type_name() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* value); void unsafe_arena_set_allocated_type_name(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_type_name(); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: // int32 location = 3 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.TypeCast) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* arg_; ::pg_query::TypeName* type_name_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class TypeName final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.TypeName) */ { public: inline TypeName() : TypeName(nullptr) {} ~TypeName() override; template explicit PROTOBUF_CONSTEXPR TypeName(::google::protobuf::internal::ConstantInitialized); inline TypeName(const TypeName& from) : TypeName(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const TypeName& default_instance() { return *internal_default_instance(); } static inline const TypeName* internal_default_instance() { return reinterpret_cast( &_TypeName_default_instance_); } static constexpr int kIndexInFileMessages = 76; friend void swap(TypeName& a, TypeName& b) { a.Swap(&b); } inline void Swap(TypeName* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TypeName* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- TypeName* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const TypeName& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const TypeName& from) { TypeName::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(TypeName* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.TypeName"; } protected: explicit TypeName(::google::protobuf::Arena* arena); TypeName(::google::protobuf::Arena* arena, const TypeName& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_names(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_names() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_names(); public: const ::pg_query::Node& names(int index) const; ::pg_query::Node* add_names(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_typmods(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_typmods() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_typmods(); public: const ::pg_query::Node& typmods(int index) const; ::pg_query::Node* add_typmods(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_array_bounds(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_array_bounds() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_array_bounds(); public: const ::pg_query::Node& array_bounds(int index) const; ::pg_query::Node* add_array_bounds(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& array_bounds() const; // uint32 type_oid = 2 [json_name = "typeOid"]; void clear_type_oid() ; ::uint32_t type_oid() const; void set_type_oid(::uint32_t value); private: ::uint32_t _internal_type_oid() const; void _internal_set_type_oid(::uint32_t 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() ; ::int32_t typemod() const; void set_typemod(::int32_t value); private: ::int32_t _internal_typemod() const; void _internal_set_typemod(::int32_t value); public: // int32 location = 8 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.TypeName) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 3, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > names_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > typmods_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > array_bounds_; ::uint32_t type_oid_; bool setof_; bool pct_type_; ::int32_t typemod_; ::int32_t location_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class UpdateStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.UpdateStmt) */ { public: inline UpdateStmt() : UpdateStmt(nullptr) {} ~UpdateStmt() override; template explicit PROTOBUF_CONSTEXPR UpdateStmt(::google::protobuf::internal::ConstantInitialized); inline UpdateStmt(const UpdateStmt& from) : UpdateStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const UpdateStmt& default_instance() { return *internal_default_instance(); } static inline const UpdateStmt* internal_default_instance() { return reinterpret_cast( &_UpdateStmt_default_instance_); } static constexpr int kIndexInFileMessages = 145; friend void swap(UpdateStmt& a, UpdateStmt& b) { a.Swap(&b); } inline void Swap(UpdateStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(UpdateStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- UpdateStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const UpdateStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const UpdateStmt& from) { UpdateStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(UpdateStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.UpdateStmt"; } protected: explicit UpdateStmt(::google::protobuf::Arena* arena); UpdateStmt(::google::protobuf::Arena* arena, const UpdateStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_target_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_from_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_from_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_from_clause(); public: const ::pg_query::Node& from_clause(int index) const; ::pg_query::Node* add_from_clause(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_returning_list(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_returning_list() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_returning_list(); public: const ::pg_query::Node& returning_list(int index) const; ::pg_query::Node* add_returning_list(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& returning_list() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; bool has_where_clause() const; void clear_where_clause() ; const ::pg_query::Node& where_clause() const; PROTOBUF_NODISCARD ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* value); void unsafe_arena_set_allocated_where_clause(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_where_clause(); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; bool has_with_clause() const; void clear_with_clause() ; const ::pg_query::WithClause& with_clause() const; PROTOBUF_NODISCARD ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* value); void unsafe_arena_set_allocated_with_clause(::pg_query::WithClause* value); ::pg_query::WithClause* unsafe_arena_release_with_clause(); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: // @@protoc_insertion_point(class_scope:pg_query.UpdateStmt) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 6, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > target_list_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > from_clause_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > returning_list_; ::pg_query::RangeVar* relation_; ::pg_query::Node* where_clause_; ::pg_query::WithClause* with_clause_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class VacuumRelation final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.VacuumRelation) */ { public: inline VacuumRelation() : VacuumRelation(nullptr) {} ~VacuumRelation() override; template explicit PROTOBUF_CONSTEXPR VacuumRelation(::google::protobuf::internal::ConstantInitialized); inline VacuumRelation(const VacuumRelation& from) : VacuumRelation(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const VacuumRelation& default_instance() { return *internal_default_instance(); } static inline const VacuumRelation* internal_default_instance() { return reinterpret_cast( &_VacuumRelation_default_instance_); } static constexpr int kIndexInFileMessages = 245; friend void swap(VacuumRelation& a, VacuumRelation& b) { a.Swap(&b); } inline void Swap(VacuumRelation* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(VacuumRelation* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- VacuumRelation* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const VacuumRelation& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const VacuumRelation& from) { VacuumRelation::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(VacuumRelation* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.VacuumRelation"; } protected: explicit VacuumRelation(::google::protobuf::Arena* arena); VacuumRelation(::google::protobuf::Arena* arena, const VacuumRelation& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_va_cols(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_va_cols() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_va_cols(); public: const ::pg_query::Node& va_cols(int index) const; ::pg_query::Node* add_va_cols(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& va_cols() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; void clear_relation() ; const ::pg_query::RangeVar& relation() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_relation(); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: // uint32 oid = 2 [json_name = "oid"]; void clear_oid() ; ::uint32_t oid() const; void set_oid(::uint32_t value); private: ::uint32_t _internal_oid() const; void _internal_set_oid(::uint32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.VacuumRelation) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > va_cols_; ::pg_query::RangeVar* relation_; ::uint32_t oid_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class VacuumStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.VacuumStmt) */ { public: inline VacuumStmt() : VacuumStmt(nullptr) {} ~VacuumStmt() override; template explicit PROTOBUF_CONSTEXPR VacuumStmt(::google::protobuf::internal::ConstantInitialized); inline VacuumStmt(const VacuumStmt& from) : VacuumStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const VacuumStmt& default_instance() { return *internal_default_instance(); } static inline const VacuumStmt* internal_default_instance() { return reinterpret_cast( &_VacuumStmt_default_instance_); } static constexpr int kIndexInFileMessages = 244; friend void swap(VacuumStmt& a, VacuumStmt& b) { a.Swap(&b); } inline void Swap(VacuumStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(VacuumStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- VacuumStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const VacuumStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const VacuumStmt& from) { VacuumStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(VacuumStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.VacuumStmt"; } protected: explicit VacuumStmt(::google::protobuf::Arena* arena); VacuumStmt(::google::protobuf::Arena* arena, const VacuumStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_rels(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_rels() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_rels(); public: const ::pg_query::Node& rels(int index) const; ::pg_query::Node* add_rels(); const ::google::protobuf::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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > rels_; bool is_vacuumcmd_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class Var final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.Var) */ { public: inline Var() : Var(nullptr) {} ~Var() override; template explicit PROTOBUF_CONSTEXPR Var(::google::protobuf::internal::ConstantInitialized); inline Var(const Var& from) : Var(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const Var& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Var* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- Var* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const Var& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const Var& from) { Var::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(Var* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.Var"; } protected: explicit Var(::google::protobuf::Arena* arena); Var(::google::protobuf::Arena* arena, const Var& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kVarnullingrelsFieldNumber = 7, kXprFieldNumber = 1, kVarnoFieldNumber = 2, kVarattnoFieldNumber = 3, kVartypeFieldNumber = 4, kVartypmodFieldNumber = 5, kVarcollidFieldNumber = 6, kVarlevelsupFieldNumber = 8, kLocationFieldNumber = 9, }; // repeated uint64 varnullingrels = 7 [json_name = "varnullingrels"]; int varnullingrels_size() const; private: int _internal_varnullingrels_size() const; public: void clear_varnullingrels() ; ::uint64_t varnullingrels(int index) const; void set_varnullingrels(int index, ::uint64_t value); void add_varnullingrels(::uint64_t value); const ::google::protobuf::RepeatedField<::uint64_t>& varnullingrels() const; ::google::protobuf::RepeatedField<::uint64_t>* mutable_varnullingrels(); private: const ::google::protobuf::RepeatedField<::uint64_t>& _internal_varnullingrels() const; ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_varnullingrels(); public: // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // int32 varno = 2 [json_name = "varno"]; void clear_varno() ; ::int32_t varno() const; void set_varno(::int32_t value); private: ::int32_t _internal_varno() const; void _internal_set_varno(::int32_t value); public: // int32 varattno = 3 [json_name = "varattno"]; void clear_varattno() ; ::int32_t varattno() const; void set_varattno(::int32_t value); private: ::int32_t _internal_varattno() const; void _internal_set_varattno(::int32_t value); public: // uint32 vartype = 4 [json_name = "vartype"]; void clear_vartype() ; ::uint32_t vartype() const; void set_vartype(::uint32_t value); private: ::uint32_t _internal_vartype() const; void _internal_set_vartype(::uint32_t value); public: // int32 vartypmod = 5 [json_name = "vartypmod"]; void clear_vartypmod() ; ::int32_t vartypmod() const; void set_vartypmod(::int32_t value); private: ::int32_t _internal_vartypmod() const; void _internal_set_vartypmod(::int32_t value); public: // uint32 varcollid = 6 [json_name = "varcollid"]; void clear_varcollid() ; ::uint32_t varcollid() const; void set_varcollid(::uint32_t value); private: ::uint32_t _internal_varcollid() const; void _internal_set_varcollid(::uint32_t value); public: // uint32 varlevelsup = 8 [json_name = "varlevelsup"]; void clear_varlevelsup() ; ::uint32_t varlevelsup() const; void set_varlevelsup(::uint32_t value); private: ::uint32_t _internal_varlevelsup() const; void _internal_set_varlevelsup(::uint32_t value); public: // int32 location = 9 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.Var) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 9, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedField<::uint64_t> varnullingrels_; mutable ::google::protobuf::internal::CachedSize _varnullingrels_cached_byte_size_; ::pg_query::Node* xpr_; ::int32_t varno_; ::int32_t varattno_; ::uint32_t vartype_; ::int32_t vartypmod_; ::uint32_t varcollid_; ::uint32_t varlevelsup_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class VariableSetStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.VariableSetStmt) */ { public: inline VariableSetStmt() : VariableSetStmt(nullptr) {} ~VariableSetStmt() override; template explicit PROTOBUF_CONSTEXPR VariableSetStmt(::google::protobuf::internal::ConstantInitialized); inline VariableSetStmt(const VariableSetStmt& from) : VariableSetStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const VariableSetStmt& default_instance() { return *internal_default_instance(); } static inline const VariableSetStmt* internal_default_instance() { return reinterpret_cast( &_VariableSetStmt_default_instance_); } static constexpr int kIndexInFileMessages = 163; friend void swap(VariableSetStmt& a, VariableSetStmt& b) { a.Swap(&b); } inline void Swap(VariableSetStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(VariableSetStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- VariableSetStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const VariableSetStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const VariableSetStmt& from) { VariableSetStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(VariableSetStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.VariableSetStmt"; } protected: explicit VariableSetStmt(::google::protobuf::Arena* arena); VariableSetStmt(::google::protobuf::Arena* arena, const VariableSetStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // string name = 2 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 4, 1, 37, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::google::protobuf::internal::ArenaStringPtr name_; int kind_; bool is_local_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ViewStmt final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ViewStmt) */ { public: inline ViewStmt() : ViewStmt(nullptr) {} ~ViewStmt() override; template explicit PROTOBUF_CONSTEXPR ViewStmt(::google::protobuf::internal::ConstantInitialized); inline ViewStmt(const ViewStmt& from) : ViewStmt(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ViewStmt& default_instance() { return *internal_default_instance(); } static inline const ViewStmt* internal_default_instance() { return reinterpret_cast( &_ViewStmt_default_instance_); } static constexpr int kIndexInFileMessages = 235; friend void swap(ViewStmt& a, ViewStmt& b) { a.Swap(&b); } inline void Swap(ViewStmt* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ViewStmt* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ViewStmt* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ViewStmt& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ViewStmt& from) { ViewStmt::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ViewStmt* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ViewStmt"; } protected: explicit ViewStmt(::google::protobuf::Arena* arena); ViewStmt(::google::protobuf::Arena* arena, const ViewStmt& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_aliases(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_aliases() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_aliases(); public: const ::pg_query::Node& aliases(int index) const; ::pg_query::Node* add_aliases(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_options() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.RangeVar view = 1 [json_name = "view"]; bool has_view() const; void clear_view() ; const ::pg_query::RangeVar& view() const; PROTOBUF_NODISCARD ::pg_query::RangeVar* release_view(); ::pg_query::RangeVar* mutable_view(); void set_allocated_view(::pg_query::RangeVar* value); void unsafe_arena_set_allocated_view(::pg_query::RangeVar* value); ::pg_query::RangeVar* unsafe_arena_release_view(); private: const ::pg_query::RangeVar& _internal_view() const; ::pg_query::RangeVar* _internal_mutable_view(); public: // .pg_query.Node query = 3 [json_name = "query"]; bool has_query() const; void clear_query() ; const ::pg_query::Node& query() const; PROTOBUF_NODISCARD ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* value); void unsafe_arena_set_allocated_query(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_query(); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: // 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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 6, 4, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > aliases_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::RangeVar* view_; ::pg_query::Node* query_; bool replace_; int with_check_option_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class WindowClause final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.WindowClause) */ { public: inline WindowClause() : WindowClause(nullptr) {} ~WindowClause() override; template explicit PROTOBUF_CONSTEXPR WindowClause(::google::protobuf::internal::ConstantInitialized); inline WindowClause(const WindowClause& from) : WindowClause(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const WindowClause& default_instance() { return *internal_default_instance(); } static inline const WindowClause* internal_default_instance() { return reinterpret_cast( &_WindowClause_default_instance_); } static constexpr int kIndexInFileMessages = 116; friend void swap(WindowClause& a, WindowClause& b) { a.Swap(&b); } inline void Swap(WindowClause* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WindowClause* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- WindowClause* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const WindowClause& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const WindowClause& from) { WindowClause::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(WindowClause* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.WindowClause"; } protected: explicit WindowClause(::google::protobuf::Arena* arena); WindowClause(::google::protobuf::Arena* arena, const WindowClause& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_partition_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_partition_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_partition_clause(); public: const ::pg_query::Node& partition_clause(int index) const; ::pg_query::Node* add_partition_clause(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_order_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_order_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_order_clause(); public: const ::pg_query::Node& order_clause(int index) const; ::pg_query::Node* add_order_clause(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& order_clause() const; // string name = 1 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_refname(Arg_&& arg, Args_... args); std::string* mutable_refname(); PROTOBUF_NODISCARD std::string* release_refname(); void set_allocated_refname(std::string* value); private: const std::string& _internal_refname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_start_offset() ; const ::pg_query::Node& start_offset() const; PROTOBUF_NODISCARD ::pg_query::Node* release_start_offset(); ::pg_query::Node* mutable_start_offset(); void set_allocated_start_offset(::pg_query::Node* value); void unsafe_arena_set_allocated_start_offset(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_start_offset(); private: const ::pg_query::Node& _internal_start_offset() const; ::pg_query::Node* _internal_mutable_start_offset(); public: // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; bool has_end_offset() const; void clear_end_offset() ; const ::pg_query::Node& end_offset() const; PROTOBUF_NODISCARD ::pg_query::Node* release_end_offset(); ::pg_query::Node* mutable_end_offset(); void set_allocated_end_offset(::pg_query::Node* value); void unsafe_arena_set_allocated_end_offset(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_end_offset(); private: const ::pg_query::Node& _internal_end_offset() const; ::pg_query::Node* _internal_mutable_end_offset(); public: // int32 frame_options = 5 [json_name = "frameOptions"]; void clear_frame_options() ; ::int32_t frame_options() const; void set_frame_options(::int32_t value); private: ::int32_t _internal_frame_options() const; void _internal_set_frame_options(::int32_t value); public: // uint32 start_in_range_func = 8 [json_name = "startInRangeFunc"]; void clear_start_in_range_func() ; ::uint32_t start_in_range_func() const; void set_start_in_range_func(::uint32_t value); private: ::uint32_t _internal_start_in_range_func() const; void _internal_set_start_in_range_func(::uint32_t value); public: // uint32 end_in_range_func = 9 [json_name = "endInRangeFunc"]; void clear_end_in_range_func() ; ::uint32_t end_in_range_func() const; void set_end_in_range_func(::uint32_t value); private: ::uint32_t _internal_end_in_range_func() const; void _internal_set_end_in_range_func(::uint32_t value); public: // uint32 in_range_coll = 10 [json_name = "inRangeColl"]; void clear_in_range_coll() ; ::uint32_t in_range_coll() const; void set_in_range_coll(::uint32_t value); private: ::uint32_t _internal_in_range_coll() const; void _internal_set_in_range_coll(::uint32_t 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() ; ::uint32_t winref() const; void set_winref(::uint32_t value); private: ::uint32_t _internal_winref() const; void _internal_set_winref(::uint32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.WindowClause) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 14, 4, 49, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > partition_clause_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > order_clause_; ::google::protobuf::internal::ArenaStringPtr name_; ::google::protobuf::internal::ArenaStringPtr refname_; ::pg_query::Node* start_offset_; ::pg_query::Node* end_offset_; ::int32_t frame_options_; ::uint32_t start_in_range_func_; ::uint32_t end_in_range_func_; ::uint32_t in_range_coll_; bool in_range_asc_; bool in_range_nulls_first_; bool copied_order_; ::uint32_t winref_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class WindowDef final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.WindowDef) */ { public: inline WindowDef() : WindowDef(nullptr) {} ~WindowDef() override; template explicit PROTOBUF_CONSTEXPR WindowDef(::google::protobuf::internal::ConstantInitialized); inline WindowDef(const WindowDef& from) : WindowDef(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const WindowDef& default_instance() { return *internal_default_instance(); } static inline const WindowDef* internal_default_instance() { return reinterpret_cast( &_WindowDef_default_instance_); } static constexpr int kIndexInFileMessages = 91; friend void swap(WindowDef& a, WindowDef& b) { a.Swap(&b); } inline void Swap(WindowDef* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WindowDef* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- WindowDef* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const WindowDef& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const WindowDef& from) { WindowDef::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(WindowDef* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.WindowDef"; } protected: explicit WindowDef(::google::protobuf::Arena* arena); WindowDef(::google::protobuf::Arena* arena, const WindowDef& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_partition_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_partition_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_partition_clause(); public: const ::pg_query::Node& partition_clause(int index) const; ::pg_query::Node* add_partition_clause(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_order_clause(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_order_clause() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_order_clause(); public: const ::pg_query::Node& order_clause(int index) const; ::pg_query::Node* add_order_clause(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& order_clause() const; // string name = 1 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_refname(Arg_&& arg, Args_... args); std::string* mutable_refname(); PROTOBUF_NODISCARD std::string* release_refname(); void set_allocated_refname(std::string* value); private: const std::string& _internal_refname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_start_offset() ; const ::pg_query::Node& start_offset() const; PROTOBUF_NODISCARD ::pg_query::Node* release_start_offset(); ::pg_query::Node* mutable_start_offset(); void set_allocated_start_offset(::pg_query::Node* value); void unsafe_arena_set_allocated_start_offset(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_start_offset(); private: const ::pg_query::Node& _internal_start_offset() const; ::pg_query::Node* _internal_mutable_start_offset(); public: // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; bool has_end_offset() const; void clear_end_offset() ; const ::pg_query::Node& end_offset() const; PROTOBUF_NODISCARD ::pg_query::Node* release_end_offset(); ::pg_query::Node* mutable_end_offset(); void set_allocated_end_offset(::pg_query::Node* value); void unsafe_arena_set_allocated_end_offset(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_end_offset(); private: const ::pg_query::Node& _internal_end_offset() const; ::pg_query::Node* _internal_mutable_end_offset(); public: // int32 frame_options = 5 [json_name = "frameOptions"]; void clear_frame_options() ; ::int32_t frame_options() const; void set_frame_options(::int32_t value); private: ::int32_t _internal_frame_options() const; void _internal_set_frame_options(::int32_t value); public: // int32 location = 8 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.WindowDef) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 8, 4, 46, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > partition_clause_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > order_clause_; ::google::protobuf::internal::ArenaStringPtr name_; ::google::protobuf::internal::ArenaStringPtr refname_; ::pg_query::Node* start_offset_; ::pg_query::Node* end_offset_; ::int32_t frame_options_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class WindowFunc final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.WindowFunc) */ { public: inline WindowFunc() : WindowFunc(nullptr) {} ~WindowFunc() override; template explicit PROTOBUF_CONSTEXPR WindowFunc(::google::protobuf::internal::ConstantInitialized); inline WindowFunc(const WindowFunc& from) : WindowFunc(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const WindowFunc& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WindowFunc* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- WindowFunc* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const WindowFunc& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const WindowFunc& from) { WindowFunc::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(WindowFunc* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.WindowFunc"; } protected: explicit WindowFunc(::google::protobuf::Arena* arena); WindowFunc(::google::protobuf::Arena* arena, const WindowFunc& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 6, kRunConditionFieldNumber = 8, kXprFieldNumber = 1, kAggfilterFieldNumber = 7, kWinfnoidFieldNumber = 2, kWintypeFieldNumber = 3, kWincollidFieldNumber = 4, kInputcollidFieldNumber = 5, kWinrefFieldNumber = 9, kWinstarFieldNumber = 10, kWinaggFieldNumber = 11, kLocationFieldNumber = 12, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // repeated .pg_query.Node run_condition = 8 [json_name = "runCondition"]; int run_condition_size() const; private: int _internal_run_condition_size() const; public: void clear_run_condition() ; ::pg_query::Node* mutable_run_condition(int index); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_run_condition(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_run_condition() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_run_condition(); public: const ::pg_query::Node& run_condition(int index) const; ::pg_query::Node* add_run_condition(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& run_condition() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; bool has_aggfilter() const; void clear_aggfilter() ; const ::pg_query::Node& aggfilter() const; PROTOBUF_NODISCARD ::pg_query::Node* release_aggfilter(); ::pg_query::Node* mutable_aggfilter(); void set_allocated_aggfilter(::pg_query::Node* value); void unsafe_arena_set_allocated_aggfilter(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_aggfilter(); private: const ::pg_query::Node& _internal_aggfilter() const; ::pg_query::Node* _internal_mutable_aggfilter(); public: // uint32 winfnoid = 2 [json_name = "winfnoid"]; void clear_winfnoid() ; ::uint32_t winfnoid() const; void set_winfnoid(::uint32_t value); private: ::uint32_t _internal_winfnoid() const; void _internal_set_winfnoid(::uint32_t value); public: // uint32 wintype = 3 [json_name = "wintype"]; void clear_wintype() ; ::uint32_t wintype() const; void set_wintype(::uint32_t value); private: ::uint32_t _internal_wintype() const; void _internal_set_wintype(::uint32_t value); public: // uint32 wincollid = 4 [json_name = "wincollid"]; void clear_wincollid() ; ::uint32_t wincollid() const; void set_wincollid(::uint32_t value); private: ::uint32_t _internal_wincollid() const; void _internal_set_wincollid(::uint32_t value); public: // uint32 inputcollid = 5 [json_name = "inputcollid"]; void clear_inputcollid() ; ::uint32_t inputcollid() const; void set_inputcollid(::uint32_t value); private: ::uint32_t _internal_inputcollid() const; void _internal_set_inputcollid(::uint32_t value); public: // uint32 winref = 9 [json_name = "winref"]; void clear_winref() ; ::uint32_t winref() const; void set_winref(::uint32_t value); private: ::uint32_t _internal_winref() const; void _internal_set_winref(::uint32_t value); public: // bool winstar = 10 [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 = 11 [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 = 12 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.WindowFunc) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 12, 4, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > run_condition_; ::pg_query::Node* xpr_; ::pg_query::Node* aggfilter_; ::uint32_t winfnoid_; ::uint32_t wintype_; ::uint32_t wincollid_; ::uint32_t inputcollid_; ::uint32_t winref_; bool winstar_; bool winagg_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class WindowFuncRunCondition final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.WindowFuncRunCondition) */ { public: inline WindowFuncRunCondition() : WindowFuncRunCondition(nullptr) {} ~WindowFuncRunCondition() override; template explicit PROTOBUF_CONSTEXPR WindowFuncRunCondition(::google::protobuf::internal::ConstantInitialized); inline WindowFuncRunCondition(const WindowFuncRunCondition& from) : WindowFuncRunCondition(nullptr, from) {} WindowFuncRunCondition(WindowFuncRunCondition&& from) noexcept : WindowFuncRunCondition() { *this = ::std::move(from); } inline WindowFuncRunCondition& operator=(const WindowFuncRunCondition& from) { CopyFrom(from); return *this; } inline WindowFuncRunCondition& operator=(WindowFuncRunCondition&& from) noexcept { if (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const WindowFuncRunCondition& default_instance() { return *internal_default_instance(); } static inline const WindowFuncRunCondition* internal_default_instance() { return reinterpret_cast( &_WindowFuncRunCondition_default_instance_); } static constexpr int kIndexInFileMessages = 21; friend void swap(WindowFuncRunCondition& a, WindowFuncRunCondition& b) { a.Swap(&b); } inline void Swap(WindowFuncRunCondition* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WindowFuncRunCondition* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- WindowFuncRunCondition* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const WindowFuncRunCondition& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const WindowFuncRunCondition& from) { WindowFuncRunCondition::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(WindowFuncRunCondition* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.WindowFuncRunCondition"; } protected: explicit WindowFuncRunCondition(::google::protobuf::Arena* arena); WindowFuncRunCondition(::google::protobuf::Arena* arena, const WindowFuncRunCondition& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kArgFieldNumber = 5, kOpnoFieldNumber = 2, kInputcollidFieldNumber = 3, kWfuncLeftFieldNumber = 4, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .pg_query.Node arg = 5 [json_name = "arg"]; bool has_arg() const; void clear_arg() ; const ::pg_query::Node& arg() const; PROTOBUF_NODISCARD ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* value); void unsafe_arena_set_allocated_arg(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_arg(); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: // uint32 opno = 2 [json_name = "opno"]; void clear_opno() ; ::uint32_t opno() const; void set_opno(::uint32_t value); private: ::uint32_t _internal_opno() const; void _internal_set_opno(::uint32_t value); public: // uint32 inputcollid = 3 [json_name = "inputcollid"]; void clear_inputcollid() ; ::uint32_t inputcollid() const; void set_inputcollid(::uint32_t value); private: ::uint32_t _internal_inputcollid() const; void _internal_set_inputcollid(::uint32_t value); public: // bool wfunc_left = 4 [json_name = "wfunc_left"]; void clear_wfunc_left() ; bool wfunc_left() const; void set_wfunc_left(bool value); private: bool _internal_wfunc_left() const; void _internal_set_wfunc_left(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.WindowFuncRunCondition) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::uint32_t opno_; ::uint32_t inputcollid_; bool wfunc_left_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class WithCheckOption final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.WithCheckOption) */ { public: inline WithCheckOption() : WithCheckOption(nullptr) {} ~WithCheckOption() override; template explicit PROTOBUF_CONSTEXPR WithCheckOption(::google::protobuf::internal::ConstantInitialized); inline WithCheckOption(const WithCheckOption& from) : WithCheckOption(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const WithCheckOption& default_instance() { return *internal_default_instance(); } static inline const WithCheckOption* internal_default_instance() { return reinterpret_cast( &_WithCheckOption_default_instance_); } static constexpr int kIndexInFileMessages = 113; friend void swap(WithCheckOption& a, WithCheckOption& b) { a.Swap(&b); } inline void Swap(WithCheckOption* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WithCheckOption* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- WithCheckOption* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const WithCheckOption& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const WithCheckOption& from) { WithCheckOption::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(WithCheckOption* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.WithCheckOption"; } protected: explicit WithCheckOption(::google::protobuf::Arena* arena); WithCheckOption(::google::protobuf::Arena* arena, const WithCheckOption& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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; template void set_relname(Arg_&& arg, Args_... args); std::string* mutable_relname(); PROTOBUF_NODISCARD std::string* release_relname(); void set_allocated_relname(std::string* value); private: const std::string& _internal_relname() const; inline PROTOBUF_ALWAYS_INLINE 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; template void set_polname(Arg_&& arg, Args_... args); std::string* mutable_polname(); PROTOBUF_NODISCARD std::string* release_polname(); void set_allocated_polname(std::string* value); private: const std::string& _internal_polname() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_qual() ; const ::pg_query::Node& qual() const; PROTOBUF_NODISCARD ::pg_query::Node* release_qual(); ::pg_query::Node* mutable_qual(); void set_allocated_qual(::pg_query::Node* value); void unsafe_arena_set_allocated_qual(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_qual(); private: const ::pg_query::Node& _internal_qual() const; ::pg_query::Node* _internal_mutable_qual(); public: // .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; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 1, 47, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::internal::ArenaStringPtr relname_; ::google::protobuf::internal::ArenaStringPtr polname_; ::pg_query::Node* qual_; int kind_; bool cascaded_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class WithClause final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.WithClause) */ { public: inline WithClause() : WithClause(nullptr) {} ~WithClause() override; template explicit PROTOBUF_CONSTEXPR WithClause(::google::protobuf::internal::ConstantInitialized); inline WithClause(const WithClause& from) : WithClause(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const WithClause& default_instance() { return *internal_default_instance(); } static inline const WithClause* internal_default_instance() { return reinterpret_cast( &_WithClause_default_instance_); } static constexpr int kIndexInFileMessages = 118; friend void swap(WithClause& a, WithClause& b) { a.Swap(&b); } inline void Swap(WithClause* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WithClause* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- WithClause* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const WithClause& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const WithClause& from) { WithClause::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(WithClause* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.WithClause"; } protected: explicit WithClause(::google::protobuf::Arena* arena); WithClause(::google::protobuf::Arena* arena, const WithClause& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_ctes(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_ctes() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_ctes(); public: const ::pg_query::Node& ctes(int index) const; ::pg_query::Node* add_ctes(); const ::google::protobuf::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() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.WithClause) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 2, 3, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::Node > ctes_; bool recursive_; ::int32_t location_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class XmlExpr final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.XmlExpr) */ { public: inline XmlExpr() : XmlExpr(nullptr) {} ~XmlExpr() override; template explicit PROTOBUF_CONSTEXPR XmlExpr(::google::protobuf::internal::ConstantInitialized); inline XmlExpr(const XmlExpr& from) : XmlExpr(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const XmlExpr& default_instance() { return *internal_default_instance(); } static inline const XmlExpr* internal_default_instance() { return reinterpret_cast( &_XmlExpr_default_instance_); } static constexpr int kIndexInFileMessages = 50; friend void swap(XmlExpr& a, XmlExpr& b) { a.Swap(&b); } inline void Swap(XmlExpr* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(XmlExpr* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- XmlExpr* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const XmlExpr& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const XmlExpr& from) { XmlExpr::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(XmlExpr* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.XmlExpr"; } protected: explicit XmlExpr(::google::protobuf::Arena* arena); XmlExpr(::google::protobuf::Arena* arena, const XmlExpr& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNamedArgsFieldNumber = 4, kArgNamesFieldNumber = 5, kArgsFieldNumber = 6, kNameFieldNumber = 3, kXprFieldNumber = 1, kOpFieldNumber = 2, kXmloptionFieldNumber = 7, kIndentFieldNumber = 8, kTypeFieldNumber = 9, kTypmodFieldNumber = 10, kLocationFieldNumber = 11, }; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_named_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_named_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_named_args(); public: const ::pg_query::Node& named_args(int index) const; ::pg_query::Node* add_named_args(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_arg_names(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_arg_names() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_arg_names(); public: const ::pg_query::Node& arg_names(int index) const; ::pg_query::Node* add_arg_names(); const ::google::protobuf::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); ::google::protobuf::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& _internal_args() const; ::google::protobuf::RepeatedPtrField<::pg_query::Node>* _internal_mutable_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::google::protobuf::RepeatedPtrField< ::pg_query::Node >& args() const; // string name = 3 [json_name = "name"]; void clear_name() ; const std::string& name() const; template void set_name(Arg_&& arg, Args_... args); std::string* mutable_name(); PROTOBUF_NODISCARD std::string* release_name(); void set_allocated_name(std::string* value); private: const std::string& _internal_name() const; inline PROTOBUF_ALWAYS_INLINE 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; void clear_xpr() ; const ::pg_query::Node& xpr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* value); void unsafe_arena_set_allocated_xpr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_xpr(); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: // .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: // bool indent = 8 [json_name = "indent"]; void clear_indent() ; bool indent() const; void set_indent(bool value); private: bool _internal_indent() const; void _internal_set_indent(bool value); public: // uint32 type = 9 [json_name = "type"]; void clear_type() ; ::uint32_t type() const; void set_type(::uint32_t value); private: ::uint32_t _internal_type() const; void _internal_set_type(::uint32_t value); public: // int32 typmod = 10 [json_name = "typmod"]; void clear_typmod() ; ::int32_t typmod() const; void set_typmod(::int32_t value); private: ::int32_t _internal_typmod() const; void _internal_set_typmod(::int32_t value); public: // int32 location = 11 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.XmlExpr) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 4, 11, 4, 37, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > named_args_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > arg_names_; ::google::protobuf::RepeatedPtrField< ::pg_query::Node > args_; ::google::protobuf::internal::ArenaStringPtr name_; ::pg_query::Node* xpr_; int op_; int xmloption_; bool indent_; ::uint32_t type_; ::int32_t typmod_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class XmlSerialize final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.XmlSerialize) */ { public: inline XmlSerialize() : XmlSerialize(nullptr) {} ~XmlSerialize() override; template explicit PROTOBUF_CONSTEXPR XmlSerialize(::google::protobuf::internal::ConstantInitialized); inline XmlSerialize(const XmlSerialize& from) : XmlSerialize(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const XmlSerialize& default_instance() { return *internal_default_instance(); } static inline const XmlSerialize* internal_default_instance() { return reinterpret_cast( &_XmlSerialize_default_instance_); } static constexpr int kIndexInFileMessages = 102; friend void swap(XmlSerialize& a, XmlSerialize& b) { a.Swap(&b); } inline void Swap(XmlSerialize* other) { if (other == this) return; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(XmlSerialize* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- XmlSerialize* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const XmlSerialize& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const XmlSerialize& from) { XmlSerialize::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(XmlSerialize* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.XmlSerialize"; } protected: explicit XmlSerialize(::google::protobuf::Arena* arena); XmlSerialize(::google::protobuf::Arena* arena, const XmlSerialize& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kExprFieldNumber = 2, kTypeNameFieldNumber = 3, kXmloptionFieldNumber = 1, kIndentFieldNumber = 4, kLocationFieldNumber = 5, }; // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; void clear_expr() ; const ::pg_query::Node& expr() const; PROTOBUF_NODISCARD ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* value); void unsafe_arena_set_allocated_expr(::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_expr(); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; bool has_type_name() const; void clear_type_name() ; const ::pg_query::TypeName& type_name() const; PROTOBUF_NODISCARD ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* value); void unsafe_arena_set_allocated_type_name(::pg_query::TypeName* value); ::pg_query::TypeName* unsafe_arena_release_type_name(); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: // .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: // bool indent = 4 [json_name = "indent"]; void clear_indent() ; bool indent() const; void set_indent(bool value); private: bool _internal_indent() const; void _internal_set_indent(bool value); public: // int32 location = 5 [json_name = "location"]; void clear_location() ; ::int32_t location() const; void set_location(::int32_t value); private: ::int32_t _internal_location() const; void _internal_set_location(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.XmlSerialize) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 3, 5, 2, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::internal::HasBits<1> _has_bits_; mutable ::google::protobuf::internal::CachedSize _cached_size_; ::pg_query::Node* expr_; ::pg_query::TypeName* type_name_; int xmloption_; bool indent_; ::int32_t location_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; };// ------------------------------------------------------------------- class ParseResult final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pg_query.ParseResult) */ { public: inline ParseResult() : ParseResult(nullptr) {} ~ParseResult() override; template explicit PROTOBUF_CONSTEXPR ParseResult(::google::protobuf::internal::ConstantInitialized); inline ParseResult(const ParseResult& from) : ParseResult(nullptr, 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 (this == &from) return *this; if (GetArena() == from.GetArena() #ifdef PROTOBUF_FORCE_COPY_IN_MOVE && GetArena() != nullptr #endif // !PROTOBUF_FORCE_COPY_IN_MOVE ) { InternalSwap(&from); } else { CopyFrom(from); } return *this; } inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); } inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); } static const ::google::protobuf::Descriptor* descriptor() { return GetDescriptor(); } static const ::google::protobuf::Descriptor* GetDescriptor() { return default_instance().GetMetadata().descriptor; } static const ::google::protobuf::Reflection* GetReflection() { return default_instance().GetMetadata().reflection; } static const ParseResult& default_instance() { return *internal_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; #ifdef PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() != nullptr && GetArena() == other->GetArena()) { #else // PROTOBUF_FORCE_COPY_IN_SWAP if (GetArena() == other->GetArena()) { #endif // !PROTOBUF_FORCE_COPY_IN_SWAP InternalSwap(other); } else { ::google::protobuf::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ParseResult* other) { if (other == this) return; ABSL_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- ParseResult* New(::google::protobuf::Arena* arena = nullptr) const final { return CreateMaybeMessage(arena); } using ::google::protobuf::Message::CopyFrom; void CopyFrom(const ParseResult& from); using ::google::protobuf::Message::MergeFrom; void MergeFrom( const ParseResult& from) { ParseResult::MergeImpl(*this, from); } private: static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg); public: PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; ::size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final; ::uint8_t* _InternalSerialize( ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const { return _impl_._cached_size_.Get(); } private: ::google::protobuf::internal::CachedSize* AccessCachedSize() const final; void SharedCtor(::google::protobuf::Arena* arena); void SharedDtor(); void InternalSwap(ParseResult* other); private: friend class ::google::protobuf::internal::AnyMetadata; static ::absl::string_view FullMessageName() { return "pg_query.ParseResult"; } protected: explicit ParseResult(::google::protobuf::Arena* arena); ParseResult(::google::protobuf::Arena* arena, const ParseResult& from); public: static const ClassData _class_data_; const ::google::protobuf::Message::ClassData*GetClassData() const final; ::google::protobuf::Metadata GetMetadata() const final; // 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); ::google::protobuf::RepeatedPtrField< ::pg_query::RawStmt >* mutable_stmts(); private: const ::google::protobuf::RepeatedPtrField<::pg_query::RawStmt>& _internal_stmts() const; ::google::protobuf::RepeatedPtrField<::pg_query::RawStmt>* _internal_mutable_stmts(); public: const ::pg_query::RawStmt& stmts(int index) const; ::pg_query::RawStmt* add_stmts(); const ::google::protobuf::RepeatedPtrField< ::pg_query::RawStmt >& stmts() const; // int32 version = 1; void clear_version() ; ::int32_t version() const; void set_version(::int32_t value); private: ::int32_t _internal_version() const; void _internal_set_version(::int32_t value); public: // @@protoc_insertion_point(class_scope:pg_query.ParseResult) private: class _Internal; friend class ::google::protobuf::internal::TcParser; static const ::google::protobuf::internal::TcParseTable< 1, 2, 1, 0, 2> _table_; friend class ::google::protobuf::MessageLite; friend class ::google::protobuf::Arena; template friend class ::google::protobuf::Arena::InternalHelper; using InternalArenaConstructable_ = void; using DestructorSkippable_ = void; struct Impl_ { inline explicit constexpr Impl_( ::google::protobuf::internal::ConstantInitialized) noexcept; inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena); inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena, const Impl_& from); ::google::protobuf::RepeatedPtrField< ::pg_query::RawStmt > stmts_; ::int32_t version_; mutable ::google::protobuf::internal::CachedSize _cached_size_; PROTOBUF_TSAN_DECLARE_MEMBER }; union { Impl_ _impl_; }; 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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.version_ = 0; } inline ::int32_t ParseResult::version() const { // @@protoc_insertion_point(field_get:pg_query.ParseResult.version) return _internal_version(); } inline void ParseResult::set_version(::int32_t value) { _internal_set_version(value); // @@protoc_insertion_point(field_set:pg_query.ParseResult.version) } inline ::int32_t ParseResult::_internal_version() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.version_; } inline void ParseResult::_internal_set_version(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.version_ = value; } // repeated .pg_query.RawStmt stmts = 2; inline int ParseResult::_internal_stmts_size() const { return _internal_stmts().size(); } inline int ParseResult::stmts_size() const { return _internal_stmts_size(); } inline void ParseResult::clear_stmts() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.stmts_.Clear(); } inline ::pg_query::RawStmt* ParseResult::mutable_stmts(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ParseResult.stmts) return _internal_mutable_stmts()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::RawStmt>* ParseResult::mutable_stmts() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ParseResult.stmts) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_stmts(); } inline const ::pg_query::RawStmt& ParseResult::stmts(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ParseResult.stmts) return _internal_stmts().Get(index); } inline ::pg_query::RawStmt* ParseResult::add_stmts() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::RawStmt* _add = _internal_mutable_stmts()->Add(); // @@protoc_insertion_point(field_add:pg_query.ParseResult.stmts) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::RawStmt>& ParseResult::stmts() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ParseResult.stmts) return _internal_stmts(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::RawStmt>& ParseResult::_internal_stmts() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.stmts_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::RawStmt>* ParseResult::_internal_mutable_stmts() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.stmts_; } // ------------------------------------------------------------------- // ScanResult // int32 version = 1; inline void ScanResult::clear_version() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.version_ = 0; } inline ::int32_t ScanResult::version() const { // @@protoc_insertion_point(field_get:pg_query.ScanResult.version) return _internal_version(); } inline void ScanResult::set_version(::int32_t value) { _internal_set_version(value); // @@protoc_insertion_point(field_set:pg_query.ScanResult.version) } inline ::int32_t ScanResult::_internal_version() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.version_; } inline void ScanResult::_internal_set_version(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.version_ = value; } // repeated .pg_query.ScanToken tokens = 2; inline int ScanResult::_internal_tokens_size() const { return _internal_tokens().size(); } inline int ScanResult::tokens_size() const { return _internal_tokens_size(); } inline void ScanResult::clear_tokens() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.tokens_.Clear(); } inline ::pg_query::ScanToken* ScanResult::mutable_tokens(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ScanResult.tokens) return _internal_mutable_tokens()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::ScanToken>* ScanResult::mutable_tokens() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ScanResult.tokens) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_tokens(); } inline const ::pg_query::ScanToken& ScanResult::tokens(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ScanResult.tokens) return _internal_tokens().Get(index); } inline ::pg_query::ScanToken* ScanResult::add_tokens() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::ScanToken* _add = _internal_mutable_tokens()->Add(); // @@protoc_insertion_point(field_add:pg_query.ScanResult.tokens) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::ScanToken>& ScanResult::tokens() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ScanResult.tokens) return _internal_tokens(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::ScanToken>& ScanResult::_internal_tokens() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.tokens_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::ScanToken>* ScanResult::_internal_mutable_tokens() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.tokens_; } // ------------------------------------------------------------------- // Node // .pg_query.Alias alias = 1 [json_name = "Alias"]; inline bool Node::has_alias() const { return node_case() == kAlias; } inline bool Node::_internal_has_alias() const { return node_case() == kAlias; } inline void Node::set_has_alias() { _impl_._oneof_case_[0] = kAlias; } inline void Node::clear_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlias) { if (GetArena() == nullptr) { delete _impl_.node_.alias_; } clear_has_node(); } } inline ::pg_query::Alias* Node::release_alias() { // @@protoc_insertion_point(field_release:pg_query.Node.alias) if (node_case() == kAlias) { clear_has_node(); auto* temp = _impl_.node_.alias_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alias_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Alias& Node::_internal_alias() const { return node_case() == kAlias ? *_impl_.node_.alias_ : reinterpret_cast<::pg_query::Alias&>(::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& Node::alias() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlias) { clear_has_node(); auto* temp = _impl_.node_.alias_; _impl_.node_.alias_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alias(::pg_query::Alias* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alias(); _impl_.node_.alias_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alias) } inline ::pg_query::Alias* Node::_internal_mutable_alias() { if (node_case() != kAlias) { clear_node(); set_has_alias(); _impl_.node_.alias_ = CreateMaybeMessage<::pg_query::Alias>(GetArena()); } return _impl_.node_.alias_; } inline ::pg_query::Alias* Node::mutable_alias() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Alias* _msg = _internal_mutable_alias(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alias) return _msg; } // .pg_query.RangeVar range_var = 2 [json_name = "RangeVar"]; inline bool Node::has_range_var() const { return node_case() == kRangeVar; } inline bool Node::_internal_has_range_var() const { return node_case() == kRangeVar; } inline void Node::set_has_range_var() { _impl_._oneof_case_[0] = kRangeVar; } inline void Node::clear_range_var() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRangeVar) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRangeVar) { clear_has_node(); auto* temp = _impl_.node_.range_var_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.range_var_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeVar& Node::_internal_range_var() const { return node_case() == kRangeVar ? *_impl_.node_.range_var_ : reinterpret_cast<::pg_query::RangeVar&>(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& Node::range_var() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRangeVar) { clear_has_node(); auto* temp = _impl_.node_.range_var_; _impl_.node_.range_var_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_var(::pg_query::RangeVar* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_range_var(); _impl_.node_.range_var_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_var) } inline ::pg_query::RangeVar* Node::_internal_mutable_range_var() { if (node_case() != kRangeVar) { clear_node(); set_has_range_var(); _impl_.node_.range_var_ = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); } return _impl_.node_.range_var_; } inline ::pg_query::RangeVar* Node::mutable_range_var() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_range_var(); // @@protoc_insertion_point(field_mutable:pg_query.Node.range_var) return _msg; } // .pg_query.TableFunc table_func = 3 [json_name = "TableFunc"]; inline bool Node::has_table_func() const { return node_case() == kTableFunc; } inline bool Node::_internal_has_table_func() const { return node_case() == kTableFunc; } inline void Node::set_has_table_func() { _impl_._oneof_case_[0] = kTableFunc; } inline void Node::clear_table_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kTableFunc) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kTableFunc) { clear_has_node(); auto* temp = _impl_.node_.table_func_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.table_func_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TableFunc& Node::_internal_table_func() const { return node_case() == kTableFunc ? *_impl_.node_.table_func_ : reinterpret_cast<::pg_query::TableFunc&>(::pg_query::_TableFunc_default_instance_); } inline const ::pg_query::TableFunc& Node::table_func() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kTableFunc) { clear_has_node(); auto* temp = _impl_.node_.table_func_; _impl_.node_.table_func_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_table_func(::pg_query::TableFunc* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_table_func(); _impl_.node_.table_func_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.table_func) } inline ::pg_query::TableFunc* Node::_internal_mutable_table_func() { if (node_case() != kTableFunc) { clear_node(); set_has_table_func(); _impl_.node_.table_func_ = CreateMaybeMessage<::pg_query::TableFunc>(GetArena()); } return _impl_.node_.table_func_; } inline ::pg_query::TableFunc* Node::mutable_table_func() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TableFunc* _msg = _internal_mutable_table_func(); // @@protoc_insertion_point(field_mutable:pg_query.Node.table_func) return _msg; } // .pg_query.IntoClause into_clause = 4 [json_name = "IntoClause"]; inline bool Node::has_into_clause() const { return node_case() == kIntoClause; } inline bool Node::_internal_has_into_clause() const { return node_case() == kIntoClause; } inline void Node::set_has_into_clause() { _impl_._oneof_case_[0] = kIntoClause; } inline void Node::clear_into_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kIntoClause) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kIntoClause) { clear_has_node(); auto* temp = _impl_.node_.into_clause_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.into_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::IntoClause& Node::_internal_into_clause() const { return node_case() == kIntoClause ? *_impl_.node_.into_clause_ : reinterpret_cast<::pg_query::IntoClause&>(::pg_query::_IntoClause_default_instance_); } inline const ::pg_query::IntoClause& Node::into_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kIntoClause) { clear_has_node(); auto* temp = _impl_.node_.into_clause_; _impl_.node_.into_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_into_clause(::pg_query::IntoClause* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_into_clause(); _impl_.node_.into_clause_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.into_clause) } inline ::pg_query::IntoClause* Node::_internal_mutable_into_clause() { if (node_case() != kIntoClause) { clear_node(); set_has_into_clause(); _impl_.node_.into_clause_ = CreateMaybeMessage<::pg_query::IntoClause>(GetArena()); } return _impl_.node_.into_clause_; } inline ::pg_query::IntoClause* Node::mutable_into_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::IntoClause* _msg = _internal_mutable_into_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.into_clause) return _msg; } // .pg_query.Var var = 5 [json_name = "Var"]; inline bool Node::has_var() const { return node_case() == kVar; } inline bool Node::_internal_has_var() const { return node_case() == kVar; } inline void Node::set_has_var() { _impl_._oneof_case_[0] = kVar; } inline void Node::clear_var() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kVar) { if (GetArena() == nullptr) { delete _impl_.node_.var_; } clear_has_node(); } } inline ::pg_query::Var* Node::release_var() { // @@protoc_insertion_point(field_release:pg_query.Node.var) if (node_case() == kVar) { clear_has_node(); auto* temp = _impl_.node_.var_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.var_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Var& Node::_internal_var() const { return node_case() == kVar ? *_impl_.node_.var_ : reinterpret_cast<::pg_query::Var&>(::pg_query::_Var_default_instance_); } inline const ::pg_query::Var& Node::var() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kVar) { clear_has_node(); auto* temp = _impl_.node_.var_; _impl_.node_.var_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_var(::pg_query::Var* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_var(); _impl_.node_.var_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.var) } inline ::pg_query::Var* Node::_internal_mutable_var() { if (node_case() != kVar) { clear_node(); set_has_var(); _impl_.node_.var_ = CreateMaybeMessage<::pg_query::Var>(GetArena()); } return _impl_.node_.var_; } inline ::pg_query::Var* Node::mutable_var() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Var* _msg = _internal_mutable_var(); // @@protoc_insertion_point(field_mutable:pg_query.Node.var) return _msg; } // .pg_query.Param param = 6 [json_name = "Param"]; inline bool Node::has_param() const { return node_case() == kParam; } inline bool Node::_internal_has_param() const { return node_case() == kParam; } inline void Node::set_has_param() { _impl_._oneof_case_[0] = kParam; } inline void Node::clear_param() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kParam) { if (GetArena() == nullptr) { delete _impl_.node_.param_; } clear_has_node(); } } inline ::pg_query::Param* Node::release_param() { // @@protoc_insertion_point(field_release:pg_query.Node.param) if (node_case() == kParam) { clear_has_node(); auto* temp = _impl_.node_.param_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.param_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Param& Node::_internal_param() const { return node_case() == kParam ? *_impl_.node_.param_ : reinterpret_cast<::pg_query::Param&>(::pg_query::_Param_default_instance_); } inline const ::pg_query::Param& Node::param() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kParam) { clear_has_node(); auto* temp = _impl_.node_.param_; _impl_.node_.param_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_param(::pg_query::Param* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_param(); _impl_.node_.param_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.param) } inline ::pg_query::Param* Node::_internal_mutable_param() { if (node_case() != kParam) { clear_node(); set_has_param(); _impl_.node_.param_ = CreateMaybeMessage<::pg_query::Param>(GetArena()); } return _impl_.node_.param_; } inline ::pg_query::Param* Node::mutable_param() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Param* _msg = _internal_mutable_param(); // @@protoc_insertion_point(field_mutable:pg_query.Node.param) return _msg; } // .pg_query.Aggref aggref = 7 [json_name = "Aggref"]; inline bool Node::has_aggref() const { return node_case() == kAggref; } inline bool Node::_internal_has_aggref() const { return node_case() == kAggref; } inline void Node::set_has_aggref() { _impl_._oneof_case_[0] = kAggref; } inline void Node::clear_aggref() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAggref) { if (GetArena() == nullptr) { delete _impl_.node_.aggref_; } clear_has_node(); } } inline ::pg_query::Aggref* Node::release_aggref() { // @@protoc_insertion_point(field_release:pg_query.Node.aggref) if (node_case() == kAggref) { clear_has_node(); auto* temp = _impl_.node_.aggref_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.aggref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Aggref& Node::_internal_aggref() const { return node_case() == kAggref ? *_impl_.node_.aggref_ : reinterpret_cast<::pg_query::Aggref&>(::pg_query::_Aggref_default_instance_); } inline const ::pg_query::Aggref& Node::aggref() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAggref) { clear_has_node(); auto* temp = _impl_.node_.aggref_; _impl_.node_.aggref_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_aggref(::pg_query::Aggref* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_aggref(); _impl_.node_.aggref_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.aggref) } inline ::pg_query::Aggref* Node::_internal_mutable_aggref() { if (node_case() != kAggref) { clear_node(); set_has_aggref(); _impl_.node_.aggref_ = CreateMaybeMessage<::pg_query::Aggref>(GetArena()); } return _impl_.node_.aggref_; } inline ::pg_query::Aggref* Node::mutable_aggref() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Aggref* _msg = _internal_mutable_aggref(); // @@protoc_insertion_point(field_mutable:pg_query.Node.aggref) return _msg; } // .pg_query.GroupingFunc grouping_func = 8 [json_name = "GroupingFunc"]; inline bool Node::has_grouping_func() const { return node_case() == kGroupingFunc; } inline bool Node::_internal_has_grouping_func() const { return node_case() == kGroupingFunc; } inline void Node::set_has_grouping_func() { _impl_._oneof_case_[0] = kGroupingFunc; } inline void Node::clear_grouping_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kGroupingFunc) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kGroupingFunc) { clear_has_node(); auto* temp = _impl_.node_.grouping_func_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.grouping_func_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::GroupingFunc& Node::_internal_grouping_func() const { return node_case() == kGroupingFunc ? *_impl_.node_.grouping_func_ : reinterpret_cast<::pg_query::GroupingFunc&>(::pg_query::_GroupingFunc_default_instance_); } inline const ::pg_query::GroupingFunc& Node::grouping_func() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kGroupingFunc) { clear_has_node(); auto* temp = _impl_.node_.grouping_func_; _impl_.node_.grouping_func_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_grouping_func(::pg_query::GroupingFunc* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_grouping_func(); _impl_.node_.grouping_func_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grouping_func) } inline ::pg_query::GroupingFunc* Node::_internal_mutable_grouping_func() { if (node_case() != kGroupingFunc) { clear_node(); set_has_grouping_func(); _impl_.node_.grouping_func_ = CreateMaybeMessage<::pg_query::GroupingFunc>(GetArena()); } return _impl_.node_.grouping_func_; } inline ::pg_query::GroupingFunc* Node::mutable_grouping_func() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::GroupingFunc* _msg = _internal_mutable_grouping_func(); // @@protoc_insertion_point(field_mutable:pg_query.Node.grouping_func) return _msg; } // .pg_query.WindowFunc window_func = 9 [json_name = "WindowFunc"]; inline bool Node::has_window_func() const { return node_case() == kWindowFunc; } inline bool Node::_internal_has_window_func() const { return node_case() == kWindowFunc; } inline void Node::set_has_window_func() { _impl_._oneof_case_[0] = kWindowFunc; } inline void Node::clear_window_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kWindowFunc) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kWindowFunc) { clear_has_node(); auto* temp = _impl_.node_.window_func_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.window_func_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WindowFunc& Node::_internal_window_func() const { return node_case() == kWindowFunc ? *_impl_.node_.window_func_ : reinterpret_cast<::pg_query::WindowFunc&>(::pg_query::_WindowFunc_default_instance_); } inline const ::pg_query::WindowFunc& Node::window_func() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kWindowFunc) { clear_has_node(); auto* temp = _impl_.node_.window_func_; _impl_.node_.window_func_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_window_func(::pg_query::WindowFunc* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_window_func(); _impl_.node_.window_func_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.window_func) } inline ::pg_query::WindowFunc* Node::_internal_mutable_window_func() { if (node_case() != kWindowFunc) { clear_node(); set_has_window_func(); _impl_.node_.window_func_ = CreateMaybeMessage<::pg_query::WindowFunc>(GetArena()); } return _impl_.node_.window_func_; } inline ::pg_query::WindowFunc* Node::mutable_window_func() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::WindowFunc* _msg = _internal_mutable_window_func(); // @@protoc_insertion_point(field_mutable:pg_query.Node.window_func) return _msg; } // .pg_query.WindowFuncRunCondition window_func_run_condition = 10 [json_name = "WindowFuncRunCondition"]; inline bool Node::has_window_func_run_condition() const { return node_case() == kWindowFuncRunCondition; } inline bool Node::_internal_has_window_func_run_condition() const { return node_case() == kWindowFuncRunCondition; } inline void Node::set_has_window_func_run_condition() { _impl_._oneof_case_[0] = kWindowFuncRunCondition; } inline void Node::clear_window_func_run_condition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kWindowFuncRunCondition) { if (GetArena() == nullptr) { delete _impl_.node_.window_func_run_condition_; } clear_has_node(); } } inline ::pg_query::WindowFuncRunCondition* Node::release_window_func_run_condition() { // @@protoc_insertion_point(field_release:pg_query.Node.window_func_run_condition) if (node_case() == kWindowFuncRunCondition) { clear_has_node(); auto* temp = _impl_.node_.window_func_run_condition_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.window_func_run_condition_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WindowFuncRunCondition& Node::_internal_window_func_run_condition() const { return node_case() == kWindowFuncRunCondition ? *_impl_.node_.window_func_run_condition_ : reinterpret_cast<::pg_query::WindowFuncRunCondition&>(::pg_query::_WindowFuncRunCondition_default_instance_); } inline const ::pg_query::WindowFuncRunCondition& Node::window_func_run_condition() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.window_func_run_condition) return _internal_window_func_run_condition(); } inline ::pg_query::WindowFuncRunCondition* Node::unsafe_arena_release_window_func_run_condition() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.window_func_run_condition) if (node_case() == kWindowFuncRunCondition) { clear_has_node(); auto* temp = _impl_.node_.window_func_run_condition_; _impl_.node_.window_func_run_condition_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_window_func_run_condition(::pg_query::WindowFuncRunCondition* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_window_func_run_condition(); _impl_.node_.window_func_run_condition_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.window_func_run_condition) } inline ::pg_query::WindowFuncRunCondition* Node::_internal_mutable_window_func_run_condition() { if (node_case() != kWindowFuncRunCondition) { clear_node(); set_has_window_func_run_condition(); _impl_.node_.window_func_run_condition_ = CreateMaybeMessage<::pg_query::WindowFuncRunCondition>(GetArena()); } return _impl_.node_.window_func_run_condition_; } inline ::pg_query::WindowFuncRunCondition* Node::mutable_window_func_run_condition() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::WindowFuncRunCondition* _msg = _internal_mutable_window_func_run_condition(); // @@protoc_insertion_point(field_mutable:pg_query.Node.window_func_run_condition) return _msg; } // .pg_query.MergeSupportFunc merge_support_func = 11 [json_name = "MergeSupportFunc"]; inline bool Node::has_merge_support_func() const { return node_case() == kMergeSupportFunc; } inline bool Node::_internal_has_merge_support_func() const { return node_case() == kMergeSupportFunc; } inline void Node::set_has_merge_support_func() { _impl_._oneof_case_[0] = kMergeSupportFunc; } inline void Node::clear_merge_support_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kMergeSupportFunc) { if (GetArena() == nullptr) { delete _impl_.node_.merge_support_func_; } clear_has_node(); } } inline ::pg_query::MergeSupportFunc* Node::release_merge_support_func() { // @@protoc_insertion_point(field_release:pg_query.Node.merge_support_func) if (node_case() == kMergeSupportFunc) { clear_has_node(); auto* temp = _impl_.node_.merge_support_func_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.merge_support_func_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::MergeSupportFunc& Node::_internal_merge_support_func() const { return node_case() == kMergeSupportFunc ? *_impl_.node_.merge_support_func_ : reinterpret_cast<::pg_query::MergeSupportFunc&>(::pg_query::_MergeSupportFunc_default_instance_); } inline const ::pg_query::MergeSupportFunc& Node::merge_support_func() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.merge_support_func) return _internal_merge_support_func(); } inline ::pg_query::MergeSupportFunc* Node::unsafe_arena_release_merge_support_func() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.merge_support_func) if (node_case() == kMergeSupportFunc) { clear_has_node(); auto* temp = _impl_.node_.merge_support_func_; _impl_.node_.merge_support_func_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_merge_support_func(::pg_query::MergeSupportFunc* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_merge_support_func(); _impl_.node_.merge_support_func_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.merge_support_func) } inline ::pg_query::MergeSupportFunc* Node::_internal_mutable_merge_support_func() { if (node_case() != kMergeSupportFunc) { clear_node(); set_has_merge_support_func(); _impl_.node_.merge_support_func_ = CreateMaybeMessage<::pg_query::MergeSupportFunc>(GetArena()); } return _impl_.node_.merge_support_func_; } inline ::pg_query::MergeSupportFunc* Node::mutable_merge_support_func() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::MergeSupportFunc* _msg = _internal_mutable_merge_support_func(); // @@protoc_insertion_point(field_mutable:pg_query.Node.merge_support_func) return _msg; } // .pg_query.SubscriptingRef subscripting_ref = 12 [json_name = "SubscriptingRef"]; inline bool Node::has_subscripting_ref() const { return node_case() == kSubscriptingRef; } inline bool Node::_internal_has_subscripting_ref() const { return node_case() == kSubscriptingRef; } inline void Node::set_has_subscripting_ref() { _impl_._oneof_case_[0] = kSubscriptingRef; } inline void Node::clear_subscripting_ref() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kSubscriptingRef) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kSubscriptingRef) { clear_has_node(); auto* temp = _impl_.node_.subscripting_ref_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.subscripting_ref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SubscriptingRef& Node::_internal_subscripting_ref() const { return node_case() == kSubscriptingRef ? *_impl_.node_.subscripting_ref_ : reinterpret_cast<::pg_query::SubscriptingRef&>(::pg_query::_SubscriptingRef_default_instance_); } inline const ::pg_query::SubscriptingRef& Node::subscripting_ref() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kSubscriptingRef) { clear_has_node(); auto* temp = _impl_.node_.subscripting_ref_; _impl_.node_.subscripting_ref_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_subscripting_ref(::pg_query::SubscriptingRef* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_subscripting_ref(); _impl_.node_.subscripting_ref_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.subscripting_ref) } inline ::pg_query::SubscriptingRef* Node::_internal_mutable_subscripting_ref() { if (node_case() != kSubscriptingRef) { clear_node(); set_has_subscripting_ref(); _impl_.node_.subscripting_ref_ = CreateMaybeMessage<::pg_query::SubscriptingRef>(GetArena()); } return _impl_.node_.subscripting_ref_; } inline ::pg_query::SubscriptingRef* Node::mutable_subscripting_ref() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::SubscriptingRef* _msg = _internal_mutable_subscripting_ref(); // @@protoc_insertion_point(field_mutable:pg_query.Node.subscripting_ref) return _msg; } // .pg_query.FuncExpr func_expr = 13 [json_name = "FuncExpr"]; inline bool Node::has_func_expr() const { return node_case() == kFuncExpr; } inline bool Node::_internal_has_func_expr() const { return node_case() == kFuncExpr; } inline void Node::set_has_func_expr() { _impl_._oneof_case_[0] = kFuncExpr; } inline void Node::clear_func_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kFuncExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kFuncExpr) { clear_has_node(); auto* temp = _impl_.node_.func_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.func_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FuncExpr& Node::_internal_func_expr() const { return node_case() == kFuncExpr ? *_impl_.node_.func_expr_ : reinterpret_cast<::pg_query::FuncExpr&>(::pg_query::_FuncExpr_default_instance_); } inline const ::pg_query::FuncExpr& Node::func_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kFuncExpr) { clear_has_node(); auto* temp = _impl_.node_.func_expr_; _impl_.node_.func_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_func_expr(::pg_query::FuncExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_func_expr(); _impl_.node_.func_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.func_expr) } inline ::pg_query::FuncExpr* Node::_internal_mutable_func_expr() { if (node_case() != kFuncExpr) { clear_node(); set_has_func_expr(); _impl_.node_.func_expr_ = CreateMaybeMessage<::pg_query::FuncExpr>(GetArena()); } return _impl_.node_.func_expr_; } inline ::pg_query::FuncExpr* Node::mutable_func_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::FuncExpr* _msg = _internal_mutable_func_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.func_expr) return _msg; } // .pg_query.NamedArgExpr named_arg_expr = 14 [json_name = "NamedArgExpr"]; inline bool Node::has_named_arg_expr() const { return node_case() == kNamedArgExpr; } inline bool Node::_internal_has_named_arg_expr() const { return node_case() == kNamedArgExpr; } inline void Node::set_has_named_arg_expr() { _impl_._oneof_case_[0] = kNamedArgExpr; } inline void Node::clear_named_arg_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kNamedArgExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kNamedArgExpr) { clear_has_node(); auto* temp = _impl_.node_.named_arg_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.named_arg_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::NamedArgExpr& Node::_internal_named_arg_expr() const { return node_case() == kNamedArgExpr ? *_impl_.node_.named_arg_expr_ : reinterpret_cast<::pg_query::NamedArgExpr&>(::pg_query::_NamedArgExpr_default_instance_); } inline const ::pg_query::NamedArgExpr& Node::named_arg_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kNamedArgExpr) { clear_has_node(); auto* temp = _impl_.node_.named_arg_expr_; _impl_.node_.named_arg_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_named_arg_expr(::pg_query::NamedArgExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_named_arg_expr(); _impl_.node_.named_arg_expr_ = value; } // @@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 (node_case() != kNamedArgExpr) { clear_node(); set_has_named_arg_expr(); _impl_.node_.named_arg_expr_ = CreateMaybeMessage<::pg_query::NamedArgExpr>(GetArena()); } return _impl_.node_.named_arg_expr_; } inline ::pg_query::NamedArgExpr* Node::mutable_named_arg_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::NamedArgExpr* _msg = _internal_mutable_named_arg_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.named_arg_expr) return _msg; } // .pg_query.OpExpr op_expr = 15 [json_name = "OpExpr"]; inline bool Node::has_op_expr() const { return node_case() == kOpExpr; } inline bool Node::_internal_has_op_expr() const { return node_case() == kOpExpr; } inline void Node::set_has_op_expr() { _impl_._oneof_case_[0] = kOpExpr; } inline void Node::clear_op_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kOpExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kOpExpr) { clear_has_node(); auto* temp = _impl_.node_.op_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.op_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::OpExpr& Node::_internal_op_expr() const { return node_case() == kOpExpr ? *_impl_.node_.op_expr_ : reinterpret_cast<::pg_query::OpExpr&>(::pg_query::_OpExpr_default_instance_); } inline const ::pg_query::OpExpr& Node::op_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kOpExpr) { clear_has_node(); auto* temp = _impl_.node_.op_expr_; _impl_.node_.op_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_op_expr(::pg_query::OpExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_op_expr(); _impl_.node_.op_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.op_expr) } inline ::pg_query::OpExpr* Node::_internal_mutable_op_expr() { if (node_case() != kOpExpr) { clear_node(); set_has_op_expr(); _impl_.node_.op_expr_ = CreateMaybeMessage<::pg_query::OpExpr>(GetArena()); } return _impl_.node_.op_expr_; } inline ::pg_query::OpExpr* Node::mutable_op_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::OpExpr* _msg = _internal_mutable_op_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.op_expr) return _msg; } // .pg_query.DistinctExpr distinct_expr = 16 [json_name = "DistinctExpr"]; inline bool Node::has_distinct_expr() const { return node_case() == kDistinctExpr; } inline bool Node::_internal_has_distinct_expr() const { return node_case() == kDistinctExpr; } inline void Node::set_has_distinct_expr() { _impl_._oneof_case_[0] = kDistinctExpr; } inline void Node::clear_distinct_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDistinctExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDistinctExpr) { clear_has_node(); auto* temp = _impl_.node_.distinct_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.distinct_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DistinctExpr& Node::_internal_distinct_expr() const { return node_case() == kDistinctExpr ? *_impl_.node_.distinct_expr_ : reinterpret_cast<::pg_query::DistinctExpr&>(::pg_query::_DistinctExpr_default_instance_); } inline const ::pg_query::DistinctExpr& Node::distinct_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDistinctExpr) { clear_has_node(); auto* temp = _impl_.node_.distinct_expr_; _impl_.node_.distinct_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_distinct_expr(::pg_query::DistinctExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_distinct_expr(); _impl_.node_.distinct_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.distinct_expr) } inline ::pg_query::DistinctExpr* Node::_internal_mutable_distinct_expr() { if (node_case() != kDistinctExpr) { clear_node(); set_has_distinct_expr(); _impl_.node_.distinct_expr_ = CreateMaybeMessage<::pg_query::DistinctExpr>(GetArena()); } return _impl_.node_.distinct_expr_; } inline ::pg_query::DistinctExpr* Node::mutable_distinct_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DistinctExpr* _msg = _internal_mutable_distinct_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.distinct_expr) return _msg; } // .pg_query.NullIfExpr null_if_expr = 17 [json_name = "NullIfExpr"]; inline bool Node::has_null_if_expr() const { return node_case() == kNullIfExpr; } inline bool Node::_internal_has_null_if_expr() const { return node_case() == kNullIfExpr; } inline void Node::set_has_null_if_expr() { _impl_._oneof_case_[0] = kNullIfExpr; } inline void Node::clear_null_if_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kNullIfExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kNullIfExpr) { clear_has_node(); auto* temp = _impl_.node_.null_if_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.null_if_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::NullIfExpr& Node::_internal_null_if_expr() const { return node_case() == kNullIfExpr ? *_impl_.node_.null_if_expr_ : reinterpret_cast<::pg_query::NullIfExpr&>(::pg_query::_NullIfExpr_default_instance_); } inline const ::pg_query::NullIfExpr& Node::null_if_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kNullIfExpr) { clear_has_node(); auto* temp = _impl_.node_.null_if_expr_; _impl_.node_.null_if_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_null_if_expr(::pg_query::NullIfExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_null_if_expr(); _impl_.node_.null_if_expr_ = value; } // @@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 (node_case() != kNullIfExpr) { clear_node(); set_has_null_if_expr(); _impl_.node_.null_if_expr_ = CreateMaybeMessage<::pg_query::NullIfExpr>(GetArena()); } return _impl_.node_.null_if_expr_; } inline ::pg_query::NullIfExpr* Node::mutable_null_if_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::NullIfExpr* _msg = _internal_mutable_null_if_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.null_if_expr) return _msg; } // .pg_query.ScalarArrayOpExpr scalar_array_op_expr = 18 [json_name = "ScalarArrayOpExpr"]; inline bool Node::has_scalar_array_op_expr() const { return node_case() == kScalarArrayOpExpr; } inline bool Node::_internal_has_scalar_array_op_expr() const { return node_case() == kScalarArrayOpExpr; } inline void Node::set_has_scalar_array_op_expr() { _impl_._oneof_case_[0] = kScalarArrayOpExpr; } inline void Node::clear_scalar_array_op_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kScalarArrayOpExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kScalarArrayOpExpr) { clear_has_node(); auto* temp = _impl_.node_.scalar_array_op_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.scalar_array_op_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ScalarArrayOpExpr& Node::_internal_scalar_array_op_expr() const { return node_case() == kScalarArrayOpExpr ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kScalarArrayOpExpr) { clear_has_node(); auto* temp = _impl_.node_.scalar_array_op_expr_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_scalar_array_op_expr(); _impl_.node_.scalar_array_op_expr_ = value; } // @@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 (node_case() != kScalarArrayOpExpr) { clear_node(); set_has_scalar_array_op_expr(); _impl_.node_.scalar_array_op_expr_ = CreateMaybeMessage<::pg_query::ScalarArrayOpExpr>(GetArena()); } return _impl_.node_.scalar_array_op_expr_; } inline ::pg_query::ScalarArrayOpExpr* Node::mutable_scalar_array_op_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ScalarArrayOpExpr* _msg = _internal_mutable_scalar_array_op_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.scalar_array_op_expr) return _msg; } // .pg_query.BoolExpr bool_expr = 19 [json_name = "BoolExpr"]; inline bool Node::has_bool_expr() const { return node_case() == kBoolExpr; } inline bool Node::_internal_has_bool_expr() const { return node_case() == kBoolExpr; } inline void Node::set_has_bool_expr() { _impl_._oneof_case_[0] = kBoolExpr; } inline void Node::clear_bool_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kBoolExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kBoolExpr) { clear_has_node(); auto* temp = _impl_.node_.bool_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.bool_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::BoolExpr& Node::_internal_bool_expr() const { return node_case() == kBoolExpr ? *_impl_.node_.bool_expr_ : reinterpret_cast<::pg_query::BoolExpr&>(::pg_query::_BoolExpr_default_instance_); } inline const ::pg_query::BoolExpr& Node::bool_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kBoolExpr) { clear_has_node(); auto* temp = _impl_.node_.bool_expr_; _impl_.node_.bool_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_bool_expr(::pg_query::BoolExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_bool_expr(); _impl_.node_.bool_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.bool_expr) } inline ::pg_query::BoolExpr* Node::_internal_mutable_bool_expr() { if (node_case() != kBoolExpr) { clear_node(); set_has_bool_expr(); _impl_.node_.bool_expr_ = CreateMaybeMessage<::pg_query::BoolExpr>(GetArena()); } return _impl_.node_.bool_expr_; } inline ::pg_query::BoolExpr* Node::mutable_bool_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::BoolExpr* _msg = _internal_mutable_bool_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.bool_expr) return _msg; } // .pg_query.SubLink sub_link = 20 [json_name = "SubLink"]; inline bool Node::has_sub_link() const { return node_case() == kSubLink; } inline bool Node::_internal_has_sub_link() const { return node_case() == kSubLink; } inline void Node::set_has_sub_link() { _impl_._oneof_case_[0] = kSubLink; } inline void Node::clear_sub_link() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kSubLink) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kSubLink) { clear_has_node(); auto* temp = _impl_.node_.sub_link_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.sub_link_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SubLink& Node::_internal_sub_link() const { return node_case() == kSubLink ? *_impl_.node_.sub_link_ : reinterpret_cast<::pg_query::SubLink&>(::pg_query::_SubLink_default_instance_); } inline const ::pg_query::SubLink& Node::sub_link() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kSubLink) { clear_has_node(); auto* temp = _impl_.node_.sub_link_; _impl_.node_.sub_link_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_sub_link(::pg_query::SubLink* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_sub_link(); _impl_.node_.sub_link_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sub_link) } inline ::pg_query::SubLink* Node::_internal_mutable_sub_link() { if (node_case() != kSubLink) { clear_node(); set_has_sub_link(); _impl_.node_.sub_link_ = CreateMaybeMessage<::pg_query::SubLink>(GetArena()); } return _impl_.node_.sub_link_; } inline ::pg_query::SubLink* Node::mutable_sub_link() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::SubLink* _msg = _internal_mutable_sub_link(); // @@protoc_insertion_point(field_mutable:pg_query.Node.sub_link) return _msg; } // .pg_query.SubPlan sub_plan = 21 [json_name = "SubPlan"]; inline bool Node::has_sub_plan() const { return node_case() == kSubPlan; } inline bool Node::_internal_has_sub_plan() const { return node_case() == kSubPlan; } inline void Node::set_has_sub_plan() { _impl_._oneof_case_[0] = kSubPlan; } inline void Node::clear_sub_plan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kSubPlan) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kSubPlan) { clear_has_node(); auto* temp = _impl_.node_.sub_plan_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.sub_plan_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SubPlan& Node::_internal_sub_plan() const { return node_case() == kSubPlan ? *_impl_.node_.sub_plan_ : reinterpret_cast<::pg_query::SubPlan&>(::pg_query::_SubPlan_default_instance_); } inline const ::pg_query::SubPlan& Node::sub_plan() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kSubPlan) { clear_has_node(); auto* temp = _impl_.node_.sub_plan_; _impl_.node_.sub_plan_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_sub_plan(::pg_query::SubPlan* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_sub_plan(); _impl_.node_.sub_plan_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sub_plan) } inline ::pg_query::SubPlan* Node::_internal_mutable_sub_plan() { if (node_case() != kSubPlan) { clear_node(); set_has_sub_plan(); _impl_.node_.sub_plan_ = CreateMaybeMessage<::pg_query::SubPlan>(GetArena()); } return _impl_.node_.sub_plan_; } inline ::pg_query::SubPlan* Node::mutable_sub_plan() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::SubPlan* _msg = _internal_mutable_sub_plan(); // @@protoc_insertion_point(field_mutable:pg_query.Node.sub_plan) return _msg; } // .pg_query.AlternativeSubPlan alternative_sub_plan = 22 [json_name = "AlternativeSubPlan"]; inline bool Node::has_alternative_sub_plan() const { return node_case() == kAlternativeSubPlan; } inline bool Node::_internal_has_alternative_sub_plan() const { return node_case() == kAlternativeSubPlan; } inline void Node::set_has_alternative_sub_plan() { _impl_._oneof_case_[0] = kAlternativeSubPlan; } inline void Node::clear_alternative_sub_plan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlternativeSubPlan) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlternativeSubPlan) { clear_has_node(); auto* temp = _impl_.node_.alternative_sub_plan_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alternative_sub_plan_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlternativeSubPlan& Node::_internal_alternative_sub_plan() const { return node_case() == kAlternativeSubPlan ? *_impl_.node_.alternative_sub_plan_ : reinterpret_cast<::pg_query::AlternativeSubPlan&>(::pg_query::_AlternativeSubPlan_default_instance_); } inline const ::pg_query::AlternativeSubPlan& Node::alternative_sub_plan() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlternativeSubPlan) { clear_has_node(); auto* temp = _impl_.node_.alternative_sub_plan_; _impl_.node_.alternative_sub_plan_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alternative_sub_plan(::pg_query::AlternativeSubPlan* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alternative_sub_plan(); _impl_.node_.alternative_sub_plan_ = value; } // @@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 (node_case() != kAlternativeSubPlan) { clear_node(); set_has_alternative_sub_plan(); _impl_.node_.alternative_sub_plan_ = CreateMaybeMessage<::pg_query::AlternativeSubPlan>(GetArena()); } return _impl_.node_.alternative_sub_plan_; } inline ::pg_query::AlternativeSubPlan* Node::mutable_alternative_sub_plan() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlternativeSubPlan* _msg = _internal_mutable_alternative_sub_plan(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alternative_sub_plan) return _msg; } // .pg_query.FieldSelect field_select = 23 [json_name = "FieldSelect"]; inline bool Node::has_field_select() const { return node_case() == kFieldSelect; } inline bool Node::_internal_has_field_select() const { return node_case() == kFieldSelect; } inline void Node::set_has_field_select() { _impl_._oneof_case_[0] = kFieldSelect; } inline void Node::clear_field_select() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kFieldSelect) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kFieldSelect) { clear_has_node(); auto* temp = _impl_.node_.field_select_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.field_select_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FieldSelect& Node::_internal_field_select() const { return node_case() == kFieldSelect ? *_impl_.node_.field_select_ : reinterpret_cast<::pg_query::FieldSelect&>(::pg_query::_FieldSelect_default_instance_); } inline const ::pg_query::FieldSelect& Node::field_select() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kFieldSelect) { clear_has_node(); auto* temp = _impl_.node_.field_select_; _impl_.node_.field_select_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_field_select(::pg_query::FieldSelect* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_field_select(); _impl_.node_.field_select_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.field_select) } inline ::pg_query::FieldSelect* Node::_internal_mutable_field_select() { if (node_case() != kFieldSelect) { clear_node(); set_has_field_select(); _impl_.node_.field_select_ = CreateMaybeMessage<::pg_query::FieldSelect>(GetArena()); } return _impl_.node_.field_select_; } inline ::pg_query::FieldSelect* Node::mutable_field_select() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::FieldSelect* _msg = _internal_mutable_field_select(); // @@protoc_insertion_point(field_mutable:pg_query.Node.field_select) return _msg; } // .pg_query.FieldStore field_store = 24 [json_name = "FieldStore"]; inline bool Node::has_field_store() const { return node_case() == kFieldStore; } inline bool Node::_internal_has_field_store() const { return node_case() == kFieldStore; } inline void Node::set_has_field_store() { _impl_._oneof_case_[0] = kFieldStore; } inline void Node::clear_field_store() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kFieldStore) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kFieldStore) { clear_has_node(); auto* temp = _impl_.node_.field_store_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.field_store_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FieldStore& Node::_internal_field_store() const { return node_case() == kFieldStore ? *_impl_.node_.field_store_ : reinterpret_cast<::pg_query::FieldStore&>(::pg_query::_FieldStore_default_instance_); } inline const ::pg_query::FieldStore& Node::field_store() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kFieldStore) { clear_has_node(); auto* temp = _impl_.node_.field_store_; _impl_.node_.field_store_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_field_store(::pg_query::FieldStore* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_field_store(); _impl_.node_.field_store_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.field_store) } inline ::pg_query::FieldStore* Node::_internal_mutable_field_store() { if (node_case() != kFieldStore) { clear_node(); set_has_field_store(); _impl_.node_.field_store_ = CreateMaybeMessage<::pg_query::FieldStore>(GetArena()); } return _impl_.node_.field_store_; } inline ::pg_query::FieldStore* Node::mutable_field_store() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::FieldStore* _msg = _internal_mutable_field_store(); // @@protoc_insertion_point(field_mutable:pg_query.Node.field_store) return _msg; } // .pg_query.RelabelType relabel_type = 25 [json_name = "RelabelType"]; inline bool Node::has_relabel_type() const { return node_case() == kRelabelType; } inline bool Node::_internal_has_relabel_type() const { return node_case() == kRelabelType; } inline void Node::set_has_relabel_type() { _impl_._oneof_case_[0] = kRelabelType; } inline void Node::clear_relabel_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRelabelType) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRelabelType) { clear_has_node(); auto* temp = _impl_.node_.relabel_type_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.relabel_type_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RelabelType& Node::_internal_relabel_type() const { return node_case() == kRelabelType ? *_impl_.node_.relabel_type_ : reinterpret_cast<::pg_query::RelabelType&>(::pg_query::_RelabelType_default_instance_); } inline const ::pg_query::RelabelType& Node::relabel_type() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRelabelType) { clear_has_node(); auto* temp = _impl_.node_.relabel_type_; _impl_.node_.relabel_type_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_relabel_type(::pg_query::RelabelType* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_relabel_type(); _impl_.node_.relabel_type_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.relabel_type) } inline ::pg_query::RelabelType* Node::_internal_mutable_relabel_type() { if (node_case() != kRelabelType) { clear_node(); set_has_relabel_type(); _impl_.node_.relabel_type_ = CreateMaybeMessage<::pg_query::RelabelType>(GetArena()); } return _impl_.node_.relabel_type_; } inline ::pg_query::RelabelType* Node::mutable_relabel_type() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RelabelType* _msg = _internal_mutable_relabel_type(); // @@protoc_insertion_point(field_mutable:pg_query.Node.relabel_type) return _msg; } // .pg_query.CoerceViaIO coerce_via_io = 26 [json_name = "CoerceViaIO"]; inline bool Node::has_coerce_via_io() const { return node_case() == kCoerceViaIo; } inline bool Node::_internal_has_coerce_via_io() const { return node_case() == kCoerceViaIo; } inline void Node::set_has_coerce_via_io() { _impl_._oneof_case_[0] = kCoerceViaIo; } inline void Node::clear_coerce_via_io() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCoerceViaIo) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCoerceViaIo) { clear_has_node(); auto* temp = _impl_.node_.coerce_via_io_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.coerce_via_io_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CoerceViaIO& Node::_internal_coerce_via_io() const { return node_case() == kCoerceViaIo ? *_impl_.node_.coerce_via_io_ : reinterpret_cast<::pg_query::CoerceViaIO&>(::pg_query::_CoerceViaIO_default_instance_); } inline const ::pg_query::CoerceViaIO& Node::coerce_via_io() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCoerceViaIo) { clear_has_node(); auto* temp = _impl_.node_.coerce_via_io_; _impl_.node_.coerce_via_io_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_coerce_via_io(::pg_query::CoerceViaIO* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_coerce_via_io(); _impl_.node_.coerce_via_io_ = value; } // @@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 (node_case() != kCoerceViaIo) { clear_node(); set_has_coerce_via_io(); _impl_.node_.coerce_via_io_ = CreateMaybeMessage<::pg_query::CoerceViaIO>(GetArena()); } return _impl_.node_.coerce_via_io_; } inline ::pg_query::CoerceViaIO* Node::mutable_coerce_via_io() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CoerceViaIO* _msg = _internal_mutable_coerce_via_io(); // @@protoc_insertion_point(field_mutable:pg_query.Node.coerce_via_io) return _msg; } // .pg_query.ArrayCoerceExpr array_coerce_expr = 27 [json_name = "ArrayCoerceExpr"]; inline bool Node::has_array_coerce_expr() const { return node_case() == kArrayCoerceExpr; } inline bool Node::_internal_has_array_coerce_expr() const { return node_case() == kArrayCoerceExpr; } inline void Node::set_has_array_coerce_expr() { _impl_._oneof_case_[0] = kArrayCoerceExpr; } inline void Node::clear_array_coerce_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kArrayCoerceExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kArrayCoerceExpr) { clear_has_node(); auto* temp = _impl_.node_.array_coerce_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.array_coerce_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ArrayCoerceExpr& Node::_internal_array_coerce_expr() const { return node_case() == kArrayCoerceExpr ? *_impl_.node_.array_coerce_expr_ : reinterpret_cast<::pg_query::ArrayCoerceExpr&>(::pg_query::_ArrayCoerceExpr_default_instance_); } inline const ::pg_query::ArrayCoerceExpr& Node::array_coerce_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kArrayCoerceExpr) { clear_has_node(); auto* temp = _impl_.node_.array_coerce_expr_; _impl_.node_.array_coerce_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_array_coerce_expr(::pg_query::ArrayCoerceExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_array_coerce_expr(); _impl_.node_.array_coerce_expr_ = value; } // @@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 (node_case() != kArrayCoerceExpr) { clear_node(); set_has_array_coerce_expr(); _impl_.node_.array_coerce_expr_ = CreateMaybeMessage<::pg_query::ArrayCoerceExpr>(GetArena()); } return _impl_.node_.array_coerce_expr_; } inline ::pg_query::ArrayCoerceExpr* Node::mutable_array_coerce_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ArrayCoerceExpr* _msg = _internal_mutable_array_coerce_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.array_coerce_expr) return _msg; } // .pg_query.ConvertRowtypeExpr convert_rowtype_expr = 28 [json_name = "ConvertRowtypeExpr"]; inline bool Node::has_convert_rowtype_expr() const { return node_case() == kConvertRowtypeExpr; } inline bool Node::_internal_has_convert_rowtype_expr() const { return node_case() == kConvertRowtypeExpr; } inline void Node::set_has_convert_rowtype_expr() { _impl_._oneof_case_[0] = kConvertRowtypeExpr; } inline void Node::clear_convert_rowtype_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kConvertRowtypeExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kConvertRowtypeExpr) { clear_has_node(); auto* temp = _impl_.node_.convert_rowtype_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.convert_rowtype_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ConvertRowtypeExpr& Node::_internal_convert_rowtype_expr() const { return node_case() == kConvertRowtypeExpr ? *_impl_.node_.convert_rowtype_expr_ : reinterpret_cast<::pg_query::ConvertRowtypeExpr&>(::pg_query::_ConvertRowtypeExpr_default_instance_); } inline const ::pg_query::ConvertRowtypeExpr& Node::convert_rowtype_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kConvertRowtypeExpr) { clear_has_node(); auto* temp = _impl_.node_.convert_rowtype_expr_; _impl_.node_.convert_rowtype_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_convert_rowtype_expr(::pg_query::ConvertRowtypeExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_convert_rowtype_expr(); _impl_.node_.convert_rowtype_expr_ = value; } // @@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 (node_case() != kConvertRowtypeExpr) { clear_node(); set_has_convert_rowtype_expr(); _impl_.node_.convert_rowtype_expr_ = CreateMaybeMessage<::pg_query::ConvertRowtypeExpr>(GetArena()); } return _impl_.node_.convert_rowtype_expr_; } inline ::pg_query::ConvertRowtypeExpr* Node::mutable_convert_rowtype_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ConvertRowtypeExpr* _msg = _internal_mutable_convert_rowtype_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.convert_rowtype_expr) return _msg; } // .pg_query.CollateExpr collate_expr = 29 [json_name = "CollateExpr"]; inline bool Node::has_collate_expr() const { return node_case() == kCollateExpr; } inline bool Node::_internal_has_collate_expr() const { return node_case() == kCollateExpr; } inline void Node::set_has_collate_expr() { _impl_._oneof_case_[0] = kCollateExpr; } inline void Node::clear_collate_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCollateExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCollateExpr) { clear_has_node(); auto* temp = _impl_.node_.collate_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.collate_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CollateExpr& Node::_internal_collate_expr() const { return node_case() == kCollateExpr ? *_impl_.node_.collate_expr_ : reinterpret_cast<::pg_query::CollateExpr&>(::pg_query::_CollateExpr_default_instance_); } inline const ::pg_query::CollateExpr& Node::collate_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCollateExpr) { clear_has_node(); auto* temp = _impl_.node_.collate_expr_; _impl_.node_.collate_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_collate_expr(::pg_query::CollateExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_collate_expr(); _impl_.node_.collate_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.collate_expr) } inline ::pg_query::CollateExpr* Node::_internal_mutable_collate_expr() { if (node_case() != kCollateExpr) { clear_node(); set_has_collate_expr(); _impl_.node_.collate_expr_ = CreateMaybeMessage<::pg_query::CollateExpr>(GetArena()); } return _impl_.node_.collate_expr_; } inline ::pg_query::CollateExpr* Node::mutable_collate_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CollateExpr* _msg = _internal_mutable_collate_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.collate_expr) return _msg; } // .pg_query.CaseExpr case_expr = 30 [json_name = "CaseExpr"]; inline bool Node::has_case_expr() const { return node_case() == kCaseExpr; } inline bool Node::_internal_has_case_expr() const { return node_case() == kCaseExpr; } inline void Node::set_has_case_expr() { _impl_._oneof_case_[0] = kCaseExpr; } inline void Node::clear_case_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCaseExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCaseExpr) { clear_has_node(); auto* temp = _impl_.node_.case_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.case_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CaseExpr& Node::_internal_case_expr() const { return node_case() == kCaseExpr ? *_impl_.node_.case_expr_ : reinterpret_cast<::pg_query::CaseExpr&>(::pg_query::_CaseExpr_default_instance_); } inline const ::pg_query::CaseExpr& Node::case_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCaseExpr) { clear_has_node(); auto* temp = _impl_.node_.case_expr_; _impl_.node_.case_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_case_expr(::pg_query::CaseExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_case_expr(); _impl_.node_.case_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.case_expr) } inline ::pg_query::CaseExpr* Node::_internal_mutable_case_expr() { if (node_case() != kCaseExpr) { clear_node(); set_has_case_expr(); _impl_.node_.case_expr_ = CreateMaybeMessage<::pg_query::CaseExpr>(GetArena()); } return _impl_.node_.case_expr_; } inline ::pg_query::CaseExpr* Node::mutable_case_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CaseExpr* _msg = _internal_mutable_case_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.case_expr) return _msg; } // .pg_query.CaseWhen case_when = 31 [json_name = "CaseWhen"]; inline bool Node::has_case_when() const { return node_case() == kCaseWhen; } inline bool Node::_internal_has_case_when() const { return node_case() == kCaseWhen; } inline void Node::set_has_case_when() { _impl_._oneof_case_[0] = kCaseWhen; } inline void Node::clear_case_when() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCaseWhen) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCaseWhen) { clear_has_node(); auto* temp = _impl_.node_.case_when_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.case_when_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CaseWhen& Node::_internal_case_when() const { return node_case() == kCaseWhen ? *_impl_.node_.case_when_ : reinterpret_cast<::pg_query::CaseWhen&>(::pg_query::_CaseWhen_default_instance_); } inline const ::pg_query::CaseWhen& Node::case_when() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCaseWhen) { clear_has_node(); auto* temp = _impl_.node_.case_when_; _impl_.node_.case_when_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_case_when(::pg_query::CaseWhen* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_case_when(); _impl_.node_.case_when_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.case_when) } inline ::pg_query::CaseWhen* Node::_internal_mutable_case_when() { if (node_case() != kCaseWhen) { clear_node(); set_has_case_when(); _impl_.node_.case_when_ = CreateMaybeMessage<::pg_query::CaseWhen>(GetArena()); } return _impl_.node_.case_when_; } inline ::pg_query::CaseWhen* Node::mutable_case_when() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CaseWhen* _msg = _internal_mutable_case_when(); // @@protoc_insertion_point(field_mutable:pg_query.Node.case_when) return _msg; } // .pg_query.CaseTestExpr case_test_expr = 32 [json_name = "CaseTestExpr"]; inline bool Node::has_case_test_expr() const { return node_case() == kCaseTestExpr; } inline bool Node::_internal_has_case_test_expr() const { return node_case() == kCaseTestExpr; } inline void Node::set_has_case_test_expr() { _impl_._oneof_case_[0] = kCaseTestExpr; } inline void Node::clear_case_test_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCaseTestExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCaseTestExpr) { clear_has_node(); auto* temp = _impl_.node_.case_test_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.case_test_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CaseTestExpr& Node::_internal_case_test_expr() const { return node_case() == kCaseTestExpr ? *_impl_.node_.case_test_expr_ : reinterpret_cast<::pg_query::CaseTestExpr&>(::pg_query::_CaseTestExpr_default_instance_); } inline const ::pg_query::CaseTestExpr& Node::case_test_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCaseTestExpr) { clear_has_node(); auto* temp = _impl_.node_.case_test_expr_; _impl_.node_.case_test_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_case_test_expr(::pg_query::CaseTestExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_case_test_expr(); _impl_.node_.case_test_expr_ = value; } // @@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 (node_case() != kCaseTestExpr) { clear_node(); set_has_case_test_expr(); _impl_.node_.case_test_expr_ = CreateMaybeMessage<::pg_query::CaseTestExpr>(GetArena()); } return _impl_.node_.case_test_expr_; } inline ::pg_query::CaseTestExpr* Node::mutable_case_test_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CaseTestExpr* _msg = _internal_mutable_case_test_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.case_test_expr) return _msg; } // .pg_query.ArrayExpr array_expr = 33 [json_name = "ArrayExpr"]; inline bool Node::has_array_expr() const { return node_case() == kArrayExpr; } inline bool Node::_internal_has_array_expr() const { return node_case() == kArrayExpr; } inline void Node::set_has_array_expr() { _impl_._oneof_case_[0] = kArrayExpr; } inline void Node::clear_array_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kArrayExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kArrayExpr) { clear_has_node(); auto* temp = _impl_.node_.array_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.array_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ArrayExpr& Node::_internal_array_expr() const { return node_case() == kArrayExpr ? *_impl_.node_.array_expr_ : reinterpret_cast<::pg_query::ArrayExpr&>(::pg_query::_ArrayExpr_default_instance_); } inline const ::pg_query::ArrayExpr& Node::array_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kArrayExpr) { clear_has_node(); auto* temp = _impl_.node_.array_expr_; _impl_.node_.array_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_array_expr(::pg_query::ArrayExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_array_expr(); _impl_.node_.array_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.array_expr) } inline ::pg_query::ArrayExpr* Node::_internal_mutable_array_expr() { if (node_case() != kArrayExpr) { clear_node(); set_has_array_expr(); _impl_.node_.array_expr_ = CreateMaybeMessage<::pg_query::ArrayExpr>(GetArena()); } return _impl_.node_.array_expr_; } inline ::pg_query::ArrayExpr* Node::mutable_array_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ArrayExpr* _msg = _internal_mutable_array_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.array_expr) return _msg; } // .pg_query.RowExpr row_expr = 34 [json_name = "RowExpr"]; inline bool Node::has_row_expr() const { return node_case() == kRowExpr; } inline bool Node::_internal_has_row_expr() const { return node_case() == kRowExpr; } inline void Node::set_has_row_expr() { _impl_._oneof_case_[0] = kRowExpr; } inline void Node::clear_row_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRowExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRowExpr) { clear_has_node(); auto* temp = _impl_.node_.row_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.row_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RowExpr& Node::_internal_row_expr() const { return node_case() == kRowExpr ? *_impl_.node_.row_expr_ : reinterpret_cast<::pg_query::RowExpr&>(::pg_query::_RowExpr_default_instance_); } inline const ::pg_query::RowExpr& Node::row_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRowExpr) { clear_has_node(); auto* temp = _impl_.node_.row_expr_; _impl_.node_.row_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_row_expr(::pg_query::RowExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_row_expr(); _impl_.node_.row_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.row_expr) } inline ::pg_query::RowExpr* Node::_internal_mutable_row_expr() { if (node_case() != kRowExpr) { clear_node(); set_has_row_expr(); _impl_.node_.row_expr_ = CreateMaybeMessage<::pg_query::RowExpr>(GetArena()); } return _impl_.node_.row_expr_; } inline ::pg_query::RowExpr* Node::mutable_row_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RowExpr* _msg = _internal_mutable_row_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.row_expr) return _msg; } // .pg_query.RowCompareExpr row_compare_expr = 35 [json_name = "RowCompareExpr"]; inline bool Node::has_row_compare_expr() const { return node_case() == kRowCompareExpr; } inline bool Node::_internal_has_row_compare_expr() const { return node_case() == kRowCompareExpr; } inline void Node::set_has_row_compare_expr() { _impl_._oneof_case_[0] = kRowCompareExpr; } inline void Node::clear_row_compare_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRowCompareExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRowCompareExpr) { clear_has_node(); auto* temp = _impl_.node_.row_compare_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.row_compare_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RowCompareExpr& Node::_internal_row_compare_expr() const { return node_case() == kRowCompareExpr ? *_impl_.node_.row_compare_expr_ : reinterpret_cast<::pg_query::RowCompareExpr&>(::pg_query::_RowCompareExpr_default_instance_); } inline const ::pg_query::RowCompareExpr& Node::row_compare_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRowCompareExpr) { clear_has_node(); auto* temp = _impl_.node_.row_compare_expr_; _impl_.node_.row_compare_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_row_compare_expr(::pg_query::RowCompareExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_row_compare_expr(); _impl_.node_.row_compare_expr_ = value; } // @@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 (node_case() != kRowCompareExpr) { clear_node(); set_has_row_compare_expr(); _impl_.node_.row_compare_expr_ = CreateMaybeMessage<::pg_query::RowCompareExpr>(GetArena()); } return _impl_.node_.row_compare_expr_; } inline ::pg_query::RowCompareExpr* Node::mutable_row_compare_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RowCompareExpr* _msg = _internal_mutable_row_compare_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.row_compare_expr) return _msg; } // .pg_query.CoalesceExpr coalesce_expr = 36 [json_name = "CoalesceExpr"]; inline bool Node::has_coalesce_expr() const { return node_case() == kCoalesceExpr; } inline bool Node::_internal_has_coalesce_expr() const { return node_case() == kCoalesceExpr; } inline void Node::set_has_coalesce_expr() { _impl_._oneof_case_[0] = kCoalesceExpr; } inline void Node::clear_coalesce_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCoalesceExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCoalesceExpr) { clear_has_node(); auto* temp = _impl_.node_.coalesce_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.coalesce_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CoalesceExpr& Node::_internal_coalesce_expr() const { return node_case() == kCoalesceExpr ? *_impl_.node_.coalesce_expr_ : reinterpret_cast<::pg_query::CoalesceExpr&>(::pg_query::_CoalesceExpr_default_instance_); } inline const ::pg_query::CoalesceExpr& Node::coalesce_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCoalesceExpr) { clear_has_node(); auto* temp = _impl_.node_.coalesce_expr_; _impl_.node_.coalesce_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_coalesce_expr(::pg_query::CoalesceExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_coalesce_expr(); _impl_.node_.coalesce_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.coalesce_expr) } inline ::pg_query::CoalesceExpr* Node::_internal_mutable_coalesce_expr() { if (node_case() != kCoalesceExpr) { clear_node(); set_has_coalesce_expr(); _impl_.node_.coalesce_expr_ = CreateMaybeMessage<::pg_query::CoalesceExpr>(GetArena()); } return _impl_.node_.coalesce_expr_; } inline ::pg_query::CoalesceExpr* Node::mutable_coalesce_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CoalesceExpr* _msg = _internal_mutable_coalesce_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.coalesce_expr) return _msg; } // .pg_query.MinMaxExpr min_max_expr = 37 [json_name = "MinMaxExpr"]; inline bool Node::has_min_max_expr() const { return node_case() == kMinMaxExpr; } inline bool Node::_internal_has_min_max_expr() const { return node_case() == kMinMaxExpr; } inline void Node::set_has_min_max_expr() { _impl_._oneof_case_[0] = kMinMaxExpr; } inline void Node::clear_min_max_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kMinMaxExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kMinMaxExpr) { clear_has_node(); auto* temp = _impl_.node_.min_max_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.min_max_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::MinMaxExpr& Node::_internal_min_max_expr() const { return node_case() == kMinMaxExpr ? *_impl_.node_.min_max_expr_ : reinterpret_cast<::pg_query::MinMaxExpr&>(::pg_query::_MinMaxExpr_default_instance_); } inline const ::pg_query::MinMaxExpr& Node::min_max_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kMinMaxExpr) { clear_has_node(); auto* temp = _impl_.node_.min_max_expr_; _impl_.node_.min_max_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_min_max_expr(::pg_query::MinMaxExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_min_max_expr(); _impl_.node_.min_max_expr_ = value; } // @@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 (node_case() != kMinMaxExpr) { clear_node(); set_has_min_max_expr(); _impl_.node_.min_max_expr_ = CreateMaybeMessage<::pg_query::MinMaxExpr>(GetArena()); } return _impl_.node_.min_max_expr_; } inline ::pg_query::MinMaxExpr* Node::mutable_min_max_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::MinMaxExpr* _msg = _internal_mutable_min_max_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.min_max_expr) return _msg; } // .pg_query.SQLValueFunction sqlvalue_function = 38 [json_name = "SQLValueFunction"]; inline bool Node::has_sqlvalue_function() const { return node_case() == kSqlvalueFunction; } inline bool Node::_internal_has_sqlvalue_function() const { return node_case() == kSqlvalueFunction; } inline void Node::set_has_sqlvalue_function() { _impl_._oneof_case_[0] = kSqlvalueFunction; } inline void Node::clear_sqlvalue_function() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kSqlvalueFunction) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kSqlvalueFunction) { clear_has_node(); auto* temp = _impl_.node_.sqlvalue_function_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.sqlvalue_function_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SQLValueFunction& Node::_internal_sqlvalue_function() const { return node_case() == kSqlvalueFunction ? *_impl_.node_.sqlvalue_function_ : reinterpret_cast<::pg_query::SQLValueFunction&>(::pg_query::_SQLValueFunction_default_instance_); } inline const ::pg_query::SQLValueFunction& Node::sqlvalue_function() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kSqlvalueFunction) { clear_has_node(); auto* temp = _impl_.node_.sqlvalue_function_; _impl_.node_.sqlvalue_function_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_sqlvalue_function(::pg_query::SQLValueFunction* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_sqlvalue_function(); _impl_.node_.sqlvalue_function_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sqlvalue_function) } inline ::pg_query::SQLValueFunction* Node::_internal_mutable_sqlvalue_function() { if (node_case() != kSqlvalueFunction) { clear_node(); set_has_sqlvalue_function(); _impl_.node_.sqlvalue_function_ = CreateMaybeMessage<::pg_query::SQLValueFunction>(GetArena()); } return _impl_.node_.sqlvalue_function_; } inline ::pg_query::SQLValueFunction* Node::mutable_sqlvalue_function() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::SQLValueFunction* _msg = _internal_mutable_sqlvalue_function(); // @@protoc_insertion_point(field_mutable:pg_query.Node.sqlvalue_function) return _msg; } // .pg_query.XmlExpr xml_expr = 39 [json_name = "XmlExpr"]; inline bool Node::has_xml_expr() const { return node_case() == kXmlExpr; } inline bool Node::_internal_has_xml_expr() const { return node_case() == kXmlExpr; } inline void Node::set_has_xml_expr() { _impl_._oneof_case_[0] = kXmlExpr; } inline void Node::clear_xml_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kXmlExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kXmlExpr) { clear_has_node(); auto* temp = _impl_.node_.xml_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.xml_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::XmlExpr& Node::_internal_xml_expr() const { return node_case() == kXmlExpr ? *_impl_.node_.xml_expr_ : reinterpret_cast<::pg_query::XmlExpr&>(::pg_query::_XmlExpr_default_instance_); } inline const ::pg_query::XmlExpr& Node::xml_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kXmlExpr) { clear_has_node(); auto* temp = _impl_.node_.xml_expr_; _impl_.node_.xml_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_xml_expr(::pg_query::XmlExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_xml_expr(); _impl_.node_.xml_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.xml_expr) } inline ::pg_query::XmlExpr* Node::_internal_mutable_xml_expr() { if (node_case() != kXmlExpr) { clear_node(); set_has_xml_expr(); _impl_.node_.xml_expr_ = CreateMaybeMessage<::pg_query::XmlExpr>(GetArena()); } return _impl_.node_.xml_expr_; } inline ::pg_query::XmlExpr* Node::mutable_xml_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::XmlExpr* _msg = _internal_mutable_xml_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.xml_expr) return _msg; } // .pg_query.JsonFormat json_format = 40 [json_name = "JsonFormat"]; inline bool Node::has_json_format() const { return node_case() == kJsonFormat; } inline bool Node::_internal_has_json_format() const { return node_case() == kJsonFormat; } inline void Node::set_has_json_format() { _impl_._oneof_case_[0] = kJsonFormat; } inline void Node::clear_json_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonFormat) { if (GetArena() == nullptr) { delete _impl_.node_.json_format_; } clear_has_node(); } } inline ::pg_query::JsonFormat* Node::release_json_format() { // @@protoc_insertion_point(field_release:pg_query.Node.json_format) if (node_case() == kJsonFormat) { clear_has_node(); auto* temp = _impl_.node_.json_format_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_format_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonFormat& Node::_internal_json_format() const { return node_case() == kJsonFormat ? *_impl_.node_.json_format_ : reinterpret_cast<::pg_query::JsonFormat&>(::pg_query::_JsonFormat_default_instance_); } inline const ::pg_query::JsonFormat& Node::json_format() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_format) return _internal_json_format(); } inline ::pg_query::JsonFormat* Node::unsafe_arena_release_json_format() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_format) if (node_case() == kJsonFormat) { clear_has_node(); auto* temp = _impl_.node_.json_format_; _impl_.node_.json_format_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_format(::pg_query::JsonFormat* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_format(); _impl_.node_.json_format_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_format) } inline ::pg_query::JsonFormat* Node::_internal_mutable_json_format() { if (node_case() != kJsonFormat) { clear_node(); set_has_json_format(); _impl_.node_.json_format_ = CreateMaybeMessage<::pg_query::JsonFormat>(GetArena()); } return _impl_.node_.json_format_; } inline ::pg_query::JsonFormat* Node::mutable_json_format() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonFormat* _msg = _internal_mutable_json_format(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_format) return _msg; } // .pg_query.JsonReturning json_returning = 41 [json_name = "JsonReturning"]; inline bool Node::has_json_returning() const { return node_case() == kJsonReturning; } inline bool Node::_internal_has_json_returning() const { return node_case() == kJsonReturning; } inline void Node::set_has_json_returning() { _impl_._oneof_case_[0] = kJsonReturning; } inline void Node::clear_json_returning() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonReturning) { if (GetArena() == nullptr) { delete _impl_.node_.json_returning_; } clear_has_node(); } } inline ::pg_query::JsonReturning* Node::release_json_returning() { // @@protoc_insertion_point(field_release:pg_query.Node.json_returning) if (node_case() == kJsonReturning) { clear_has_node(); auto* temp = _impl_.node_.json_returning_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_returning_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonReturning& Node::_internal_json_returning() const { return node_case() == kJsonReturning ? *_impl_.node_.json_returning_ : reinterpret_cast<::pg_query::JsonReturning&>(::pg_query::_JsonReturning_default_instance_); } inline const ::pg_query::JsonReturning& Node::json_returning() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_returning) return _internal_json_returning(); } inline ::pg_query::JsonReturning* Node::unsafe_arena_release_json_returning() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_returning) if (node_case() == kJsonReturning) { clear_has_node(); auto* temp = _impl_.node_.json_returning_; _impl_.node_.json_returning_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_returning(::pg_query::JsonReturning* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_returning(); _impl_.node_.json_returning_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_returning) } inline ::pg_query::JsonReturning* Node::_internal_mutable_json_returning() { if (node_case() != kJsonReturning) { clear_node(); set_has_json_returning(); _impl_.node_.json_returning_ = CreateMaybeMessage<::pg_query::JsonReturning>(GetArena()); } return _impl_.node_.json_returning_; } inline ::pg_query::JsonReturning* Node::mutable_json_returning() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonReturning* _msg = _internal_mutable_json_returning(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_returning) return _msg; } // .pg_query.JsonValueExpr json_value_expr = 42 [json_name = "JsonValueExpr"]; inline bool Node::has_json_value_expr() const { return node_case() == kJsonValueExpr; } inline bool Node::_internal_has_json_value_expr() const { return node_case() == kJsonValueExpr; } inline void Node::set_has_json_value_expr() { _impl_._oneof_case_[0] = kJsonValueExpr; } inline void Node::clear_json_value_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonValueExpr) { if (GetArena() == nullptr) { delete _impl_.node_.json_value_expr_; } clear_has_node(); } } inline ::pg_query::JsonValueExpr* Node::release_json_value_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.json_value_expr) if (node_case() == kJsonValueExpr) { clear_has_node(); auto* temp = _impl_.node_.json_value_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_value_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonValueExpr& Node::_internal_json_value_expr() const { return node_case() == kJsonValueExpr ? *_impl_.node_.json_value_expr_ : reinterpret_cast<::pg_query::JsonValueExpr&>(::pg_query::_JsonValueExpr_default_instance_); } inline const ::pg_query::JsonValueExpr& Node::json_value_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_value_expr) return _internal_json_value_expr(); } inline ::pg_query::JsonValueExpr* Node::unsafe_arena_release_json_value_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_value_expr) if (node_case() == kJsonValueExpr) { clear_has_node(); auto* temp = _impl_.node_.json_value_expr_; _impl_.node_.json_value_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_value_expr(::pg_query::JsonValueExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_value_expr(); _impl_.node_.json_value_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_value_expr) } inline ::pg_query::JsonValueExpr* Node::_internal_mutable_json_value_expr() { if (node_case() != kJsonValueExpr) { clear_node(); set_has_json_value_expr(); _impl_.node_.json_value_expr_ = CreateMaybeMessage<::pg_query::JsonValueExpr>(GetArena()); } return _impl_.node_.json_value_expr_; } inline ::pg_query::JsonValueExpr* Node::mutable_json_value_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonValueExpr* _msg = _internal_mutable_json_value_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_value_expr) return _msg; } // .pg_query.JsonConstructorExpr json_constructor_expr = 43 [json_name = "JsonConstructorExpr"]; inline bool Node::has_json_constructor_expr() const { return node_case() == kJsonConstructorExpr; } inline bool Node::_internal_has_json_constructor_expr() const { return node_case() == kJsonConstructorExpr; } inline void Node::set_has_json_constructor_expr() { _impl_._oneof_case_[0] = kJsonConstructorExpr; } inline void Node::clear_json_constructor_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonConstructorExpr) { if (GetArena() == nullptr) { delete _impl_.node_.json_constructor_expr_; } clear_has_node(); } } inline ::pg_query::JsonConstructorExpr* Node::release_json_constructor_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.json_constructor_expr) if (node_case() == kJsonConstructorExpr) { clear_has_node(); auto* temp = _impl_.node_.json_constructor_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_constructor_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonConstructorExpr& Node::_internal_json_constructor_expr() const { return node_case() == kJsonConstructorExpr ? *_impl_.node_.json_constructor_expr_ : reinterpret_cast<::pg_query::JsonConstructorExpr&>(::pg_query::_JsonConstructorExpr_default_instance_); } inline const ::pg_query::JsonConstructorExpr& Node::json_constructor_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_constructor_expr) return _internal_json_constructor_expr(); } inline ::pg_query::JsonConstructorExpr* Node::unsafe_arena_release_json_constructor_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_constructor_expr) if (node_case() == kJsonConstructorExpr) { clear_has_node(); auto* temp = _impl_.node_.json_constructor_expr_; _impl_.node_.json_constructor_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_constructor_expr(::pg_query::JsonConstructorExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_constructor_expr(); _impl_.node_.json_constructor_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_constructor_expr) } inline ::pg_query::JsonConstructorExpr* Node::_internal_mutable_json_constructor_expr() { if (node_case() != kJsonConstructorExpr) { clear_node(); set_has_json_constructor_expr(); _impl_.node_.json_constructor_expr_ = CreateMaybeMessage<::pg_query::JsonConstructorExpr>(GetArena()); } return _impl_.node_.json_constructor_expr_; } inline ::pg_query::JsonConstructorExpr* Node::mutable_json_constructor_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonConstructorExpr* _msg = _internal_mutable_json_constructor_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_constructor_expr) return _msg; } // .pg_query.JsonIsPredicate json_is_predicate = 44 [json_name = "JsonIsPredicate"]; inline bool Node::has_json_is_predicate() const { return node_case() == kJsonIsPredicate; } inline bool Node::_internal_has_json_is_predicate() const { return node_case() == kJsonIsPredicate; } inline void Node::set_has_json_is_predicate() { _impl_._oneof_case_[0] = kJsonIsPredicate; } inline void Node::clear_json_is_predicate() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonIsPredicate) { if (GetArena() == nullptr) { delete _impl_.node_.json_is_predicate_; } clear_has_node(); } } inline ::pg_query::JsonIsPredicate* Node::release_json_is_predicate() { // @@protoc_insertion_point(field_release:pg_query.Node.json_is_predicate) if (node_case() == kJsonIsPredicate) { clear_has_node(); auto* temp = _impl_.node_.json_is_predicate_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_is_predicate_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonIsPredicate& Node::_internal_json_is_predicate() const { return node_case() == kJsonIsPredicate ? *_impl_.node_.json_is_predicate_ : reinterpret_cast<::pg_query::JsonIsPredicate&>(::pg_query::_JsonIsPredicate_default_instance_); } inline const ::pg_query::JsonIsPredicate& Node::json_is_predicate() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_is_predicate) return _internal_json_is_predicate(); } inline ::pg_query::JsonIsPredicate* Node::unsafe_arena_release_json_is_predicate() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_is_predicate) if (node_case() == kJsonIsPredicate) { clear_has_node(); auto* temp = _impl_.node_.json_is_predicate_; _impl_.node_.json_is_predicate_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_is_predicate(::pg_query::JsonIsPredicate* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_is_predicate(); _impl_.node_.json_is_predicate_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_is_predicate) } inline ::pg_query::JsonIsPredicate* Node::_internal_mutable_json_is_predicate() { if (node_case() != kJsonIsPredicate) { clear_node(); set_has_json_is_predicate(); _impl_.node_.json_is_predicate_ = CreateMaybeMessage<::pg_query::JsonIsPredicate>(GetArena()); } return _impl_.node_.json_is_predicate_; } inline ::pg_query::JsonIsPredicate* Node::mutable_json_is_predicate() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonIsPredicate* _msg = _internal_mutable_json_is_predicate(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_is_predicate) return _msg; } // .pg_query.JsonBehavior json_behavior = 45 [json_name = "JsonBehavior"]; inline bool Node::has_json_behavior() const { return node_case() == kJsonBehavior; } inline bool Node::_internal_has_json_behavior() const { return node_case() == kJsonBehavior; } inline void Node::set_has_json_behavior() { _impl_._oneof_case_[0] = kJsonBehavior; } inline void Node::clear_json_behavior() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonBehavior) { if (GetArena() == nullptr) { delete _impl_.node_.json_behavior_; } clear_has_node(); } } inline ::pg_query::JsonBehavior* Node::release_json_behavior() { // @@protoc_insertion_point(field_release:pg_query.Node.json_behavior) if (node_case() == kJsonBehavior) { clear_has_node(); auto* temp = _impl_.node_.json_behavior_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_behavior_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonBehavior& Node::_internal_json_behavior() const { return node_case() == kJsonBehavior ? *_impl_.node_.json_behavior_ : reinterpret_cast<::pg_query::JsonBehavior&>(::pg_query::_JsonBehavior_default_instance_); } inline const ::pg_query::JsonBehavior& Node::json_behavior() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_behavior) return _internal_json_behavior(); } inline ::pg_query::JsonBehavior* Node::unsafe_arena_release_json_behavior() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_behavior) if (node_case() == kJsonBehavior) { clear_has_node(); auto* temp = _impl_.node_.json_behavior_; _impl_.node_.json_behavior_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_behavior(::pg_query::JsonBehavior* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_behavior(); _impl_.node_.json_behavior_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_behavior) } inline ::pg_query::JsonBehavior* Node::_internal_mutable_json_behavior() { if (node_case() != kJsonBehavior) { clear_node(); set_has_json_behavior(); _impl_.node_.json_behavior_ = CreateMaybeMessage<::pg_query::JsonBehavior>(GetArena()); } return _impl_.node_.json_behavior_; } inline ::pg_query::JsonBehavior* Node::mutable_json_behavior() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonBehavior* _msg = _internal_mutable_json_behavior(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_behavior) return _msg; } // .pg_query.JsonExpr json_expr = 46 [json_name = "JsonExpr"]; inline bool Node::has_json_expr() const { return node_case() == kJsonExpr; } inline bool Node::_internal_has_json_expr() const { return node_case() == kJsonExpr; } inline void Node::set_has_json_expr() { _impl_._oneof_case_[0] = kJsonExpr; } inline void Node::clear_json_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonExpr) { if (GetArena() == nullptr) { delete _impl_.node_.json_expr_; } clear_has_node(); } } inline ::pg_query::JsonExpr* Node::release_json_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.json_expr) if (node_case() == kJsonExpr) { clear_has_node(); auto* temp = _impl_.node_.json_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonExpr& Node::_internal_json_expr() const { return node_case() == kJsonExpr ? *_impl_.node_.json_expr_ : reinterpret_cast<::pg_query::JsonExpr&>(::pg_query::_JsonExpr_default_instance_); } inline const ::pg_query::JsonExpr& Node::json_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_expr) return _internal_json_expr(); } inline ::pg_query::JsonExpr* Node::unsafe_arena_release_json_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_expr) if (node_case() == kJsonExpr) { clear_has_node(); auto* temp = _impl_.node_.json_expr_; _impl_.node_.json_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_expr(::pg_query::JsonExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_expr(); _impl_.node_.json_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_expr) } inline ::pg_query::JsonExpr* Node::_internal_mutable_json_expr() { if (node_case() != kJsonExpr) { clear_node(); set_has_json_expr(); _impl_.node_.json_expr_ = CreateMaybeMessage<::pg_query::JsonExpr>(GetArena()); } return _impl_.node_.json_expr_; } inline ::pg_query::JsonExpr* Node::mutable_json_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonExpr* _msg = _internal_mutable_json_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_expr) return _msg; } // .pg_query.JsonTablePath json_table_path = 47 [json_name = "JsonTablePath"]; inline bool Node::has_json_table_path() const { return node_case() == kJsonTablePath; } inline bool Node::_internal_has_json_table_path() const { return node_case() == kJsonTablePath; } inline void Node::set_has_json_table_path() { _impl_._oneof_case_[0] = kJsonTablePath; } inline void Node::clear_json_table_path() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonTablePath) { if (GetArena() == nullptr) { delete _impl_.node_.json_table_path_; } clear_has_node(); } } inline ::pg_query::JsonTablePath* Node::release_json_table_path() { // @@protoc_insertion_point(field_release:pg_query.Node.json_table_path) if (node_case() == kJsonTablePath) { clear_has_node(); auto* temp = _impl_.node_.json_table_path_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_table_path_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonTablePath& Node::_internal_json_table_path() const { return node_case() == kJsonTablePath ? *_impl_.node_.json_table_path_ : reinterpret_cast<::pg_query::JsonTablePath&>(::pg_query::_JsonTablePath_default_instance_); } inline const ::pg_query::JsonTablePath& Node::json_table_path() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_table_path) return _internal_json_table_path(); } inline ::pg_query::JsonTablePath* Node::unsafe_arena_release_json_table_path() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_table_path) if (node_case() == kJsonTablePath) { clear_has_node(); auto* temp = _impl_.node_.json_table_path_; _impl_.node_.json_table_path_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_table_path(::pg_query::JsonTablePath* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_table_path(); _impl_.node_.json_table_path_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_table_path) } inline ::pg_query::JsonTablePath* Node::_internal_mutable_json_table_path() { if (node_case() != kJsonTablePath) { clear_node(); set_has_json_table_path(); _impl_.node_.json_table_path_ = CreateMaybeMessage<::pg_query::JsonTablePath>(GetArena()); } return _impl_.node_.json_table_path_; } inline ::pg_query::JsonTablePath* Node::mutable_json_table_path() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonTablePath* _msg = _internal_mutable_json_table_path(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_table_path) return _msg; } // .pg_query.JsonTablePathScan json_table_path_scan = 48 [json_name = "JsonTablePathScan"]; inline bool Node::has_json_table_path_scan() const { return node_case() == kJsonTablePathScan; } inline bool Node::_internal_has_json_table_path_scan() const { return node_case() == kJsonTablePathScan; } inline void Node::set_has_json_table_path_scan() { _impl_._oneof_case_[0] = kJsonTablePathScan; } inline void Node::clear_json_table_path_scan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonTablePathScan) { if (GetArena() == nullptr) { delete _impl_.node_.json_table_path_scan_; } clear_has_node(); } } inline ::pg_query::JsonTablePathScan* Node::release_json_table_path_scan() { // @@protoc_insertion_point(field_release:pg_query.Node.json_table_path_scan) if (node_case() == kJsonTablePathScan) { clear_has_node(); auto* temp = _impl_.node_.json_table_path_scan_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_table_path_scan_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonTablePathScan& Node::_internal_json_table_path_scan() const { return node_case() == kJsonTablePathScan ? *_impl_.node_.json_table_path_scan_ : reinterpret_cast<::pg_query::JsonTablePathScan&>(::pg_query::_JsonTablePathScan_default_instance_); } inline const ::pg_query::JsonTablePathScan& Node::json_table_path_scan() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_table_path_scan) return _internal_json_table_path_scan(); } inline ::pg_query::JsonTablePathScan* Node::unsafe_arena_release_json_table_path_scan() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_table_path_scan) if (node_case() == kJsonTablePathScan) { clear_has_node(); auto* temp = _impl_.node_.json_table_path_scan_; _impl_.node_.json_table_path_scan_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_table_path_scan(::pg_query::JsonTablePathScan* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_table_path_scan(); _impl_.node_.json_table_path_scan_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_table_path_scan) } inline ::pg_query::JsonTablePathScan* Node::_internal_mutable_json_table_path_scan() { if (node_case() != kJsonTablePathScan) { clear_node(); set_has_json_table_path_scan(); _impl_.node_.json_table_path_scan_ = CreateMaybeMessage<::pg_query::JsonTablePathScan>(GetArena()); } return _impl_.node_.json_table_path_scan_; } inline ::pg_query::JsonTablePathScan* Node::mutable_json_table_path_scan() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonTablePathScan* _msg = _internal_mutable_json_table_path_scan(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_table_path_scan) return _msg; } // .pg_query.JsonTableSiblingJoin json_table_sibling_join = 49 [json_name = "JsonTableSiblingJoin"]; inline bool Node::has_json_table_sibling_join() const { return node_case() == kJsonTableSiblingJoin; } inline bool Node::_internal_has_json_table_sibling_join() const { return node_case() == kJsonTableSiblingJoin; } inline void Node::set_has_json_table_sibling_join() { _impl_._oneof_case_[0] = kJsonTableSiblingJoin; } inline void Node::clear_json_table_sibling_join() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonTableSiblingJoin) { if (GetArena() == nullptr) { delete _impl_.node_.json_table_sibling_join_; } clear_has_node(); } } inline ::pg_query::JsonTableSiblingJoin* Node::release_json_table_sibling_join() { // @@protoc_insertion_point(field_release:pg_query.Node.json_table_sibling_join) if (node_case() == kJsonTableSiblingJoin) { clear_has_node(); auto* temp = _impl_.node_.json_table_sibling_join_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_table_sibling_join_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonTableSiblingJoin& Node::_internal_json_table_sibling_join() const { return node_case() == kJsonTableSiblingJoin ? *_impl_.node_.json_table_sibling_join_ : reinterpret_cast<::pg_query::JsonTableSiblingJoin&>(::pg_query::_JsonTableSiblingJoin_default_instance_); } inline const ::pg_query::JsonTableSiblingJoin& Node::json_table_sibling_join() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_table_sibling_join) return _internal_json_table_sibling_join(); } inline ::pg_query::JsonTableSiblingJoin* Node::unsafe_arena_release_json_table_sibling_join() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_table_sibling_join) if (node_case() == kJsonTableSiblingJoin) { clear_has_node(); auto* temp = _impl_.node_.json_table_sibling_join_; _impl_.node_.json_table_sibling_join_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_table_sibling_join(::pg_query::JsonTableSiblingJoin* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_table_sibling_join(); _impl_.node_.json_table_sibling_join_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_table_sibling_join) } inline ::pg_query::JsonTableSiblingJoin* Node::_internal_mutable_json_table_sibling_join() { if (node_case() != kJsonTableSiblingJoin) { clear_node(); set_has_json_table_sibling_join(); _impl_.node_.json_table_sibling_join_ = CreateMaybeMessage<::pg_query::JsonTableSiblingJoin>(GetArena()); } return _impl_.node_.json_table_sibling_join_; } inline ::pg_query::JsonTableSiblingJoin* Node::mutable_json_table_sibling_join() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonTableSiblingJoin* _msg = _internal_mutable_json_table_sibling_join(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_table_sibling_join) return _msg; } // .pg_query.NullTest null_test = 50 [json_name = "NullTest"]; inline bool Node::has_null_test() const { return node_case() == kNullTest; } inline bool Node::_internal_has_null_test() const { return node_case() == kNullTest; } inline void Node::set_has_null_test() { _impl_._oneof_case_[0] = kNullTest; } inline void Node::clear_null_test() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kNullTest) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kNullTest) { clear_has_node(); auto* temp = _impl_.node_.null_test_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.null_test_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::NullTest& Node::_internal_null_test() const { return node_case() == kNullTest ? *_impl_.node_.null_test_ : reinterpret_cast<::pg_query::NullTest&>(::pg_query::_NullTest_default_instance_); } inline const ::pg_query::NullTest& Node::null_test() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kNullTest) { clear_has_node(); auto* temp = _impl_.node_.null_test_; _impl_.node_.null_test_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_null_test(::pg_query::NullTest* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_null_test(); _impl_.node_.null_test_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.null_test) } inline ::pg_query::NullTest* Node::_internal_mutable_null_test() { if (node_case() != kNullTest) { clear_node(); set_has_null_test(); _impl_.node_.null_test_ = CreateMaybeMessage<::pg_query::NullTest>(GetArena()); } return _impl_.node_.null_test_; } inline ::pg_query::NullTest* Node::mutable_null_test() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::NullTest* _msg = _internal_mutable_null_test(); // @@protoc_insertion_point(field_mutable:pg_query.Node.null_test) return _msg; } // .pg_query.BooleanTest boolean_test = 51 [json_name = "BooleanTest"]; inline bool Node::has_boolean_test() const { return node_case() == kBooleanTest; } inline bool Node::_internal_has_boolean_test() const { return node_case() == kBooleanTest; } inline void Node::set_has_boolean_test() { _impl_._oneof_case_[0] = kBooleanTest; } inline void Node::clear_boolean_test() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kBooleanTest) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kBooleanTest) { clear_has_node(); auto* temp = _impl_.node_.boolean_test_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.boolean_test_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::BooleanTest& Node::_internal_boolean_test() const { return node_case() == kBooleanTest ? *_impl_.node_.boolean_test_ : reinterpret_cast<::pg_query::BooleanTest&>(::pg_query::_BooleanTest_default_instance_); } inline const ::pg_query::BooleanTest& Node::boolean_test() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kBooleanTest) { clear_has_node(); auto* temp = _impl_.node_.boolean_test_; _impl_.node_.boolean_test_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_boolean_test(::pg_query::BooleanTest* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_boolean_test(); _impl_.node_.boolean_test_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.boolean_test) } inline ::pg_query::BooleanTest* Node::_internal_mutable_boolean_test() { if (node_case() != kBooleanTest) { clear_node(); set_has_boolean_test(); _impl_.node_.boolean_test_ = CreateMaybeMessage<::pg_query::BooleanTest>(GetArena()); } return _impl_.node_.boolean_test_; } inline ::pg_query::BooleanTest* Node::mutable_boolean_test() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::BooleanTest* _msg = _internal_mutable_boolean_test(); // @@protoc_insertion_point(field_mutable:pg_query.Node.boolean_test) return _msg; } // .pg_query.MergeAction merge_action = 52 [json_name = "MergeAction"]; inline bool Node::has_merge_action() const { return node_case() == kMergeAction; } inline bool Node::_internal_has_merge_action() const { return node_case() == kMergeAction; } inline void Node::set_has_merge_action() { _impl_._oneof_case_[0] = kMergeAction; } inline void Node::clear_merge_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kMergeAction) { if (GetArena() == nullptr) { delete _impl_.node_.merge_action_; } clear_has_node(); } } inline ::pg_query::MergeAction* Node::release_merge_action() { // @@protoc_insertion_point(field_release:pg_query.Node.merge_action) if (node_case() == kMergeAction) { clear_has_node(); auto* temp = _impl_.node_.merge_action_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.merge_action_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::MergeAction& Node::_internal_merge_action() const { return node_case() == kMergeAction ? *_impl_.node_.merge_action_ : reinterpret_cast<::pg_query::MergeAction&>(::pg_query::_MergeAction_default_instance_); } inline const ::pg_query::MergeAction& Node::merge_action() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.merge_action) return _internal_merge_action(); } inline ::pg_query::MergeAction* Node::unsafe_arena_release_merge_action() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.merge_action) if (node_case() == kMergeAction) { clear_has_node(); auto* temp = _impl_.node_.merge_action_; _impl_.node_.merge_action_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_merge_action(::pg_query::MergeAction* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_merge_action(); _impl_.node_.merge_action_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.merge_action) } inline ::pg_query::MergeAction* Node::_internal_mutable_merge_action() { if (node_case() != kMergeAction) { clear_node(); set_has_merge_action(); _impl_.node_.merge_action_ = CreateMaybeMessage<::pg_query::MergeAction>(GetArena()); } return _impl_.node_.merge_action_; } inline ::pg_query::MergeAction* Node::mutable_merge_action() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::MergeAction* _msg = _internal_mutable_merge_action(); // @@protoc_insertion_point(field_mutable:pg_query.Node.merge_action) return _msg; } // .pg_query.CoerceToDomain coerce_to_domain = 53 [json_name = "CoerceToDomain"]; inline bool Node::has_coerce_to_domain() const { return node_case() == kCoerceToDomain; } inline bool Node::_internal_has_coerce_to_domain() const { return node_case() == kCoerceToDomain; } inline void Node::set_has_coerce_to_domain() { _impl_._oneof_case_[0] = kCoerceToDomain; } inline void Node::clear_coerce_to_domain() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCoerceToDomain) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCoerceToDomain) { clear_has_node(); auto* temp = _impl_.node_.coerce_to_domain_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.coerce_to_domain_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CoerceToDomain& Node::_internal_coerce_to_domain() const { return node_case() == kCoerceToDomain ? *_impl_.node_.coerce_to_domain_ : reinterpret_cast<::pg_query::CoerceToDomain&>(::pg_query::_CoerceToDomain_default_instance_); } inline const ::pg_query::CoerceToDomain& Node::coerce_to_domain() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCoerceToDomain) { clear_has_node(); auto* temp = _impl_.node_.coerce_to_domain_; _impl_.node_.coerce_to_domain_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_coerce_to_domain(::pg_query::CoerceToDomain* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_coerce_to_domain(); _impl_.node_.coerce_to_domain_ = value; } // @@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 (node_case() != kCoerceToDomain) { clear_node(); set_has_coerce_to_domain(); _impl_.node_.coerce_to_domain_ = CreateMaybeMessage<::pg_query::CoerceToDomain>(GetArena()); } return _impl_.node_.coerce_to_domain_; } inline ::pg_query::CoerceToDomain* Node::mutable_coerce_to_domain() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CoerceToDomain* _msg = _internal_mutable_coerce_to_domain(); // @@protoc_insertion_point(field_mutable:pg_query.Node.coerce_to_domain) return _msg; } // .pg_query.CoerceToDomainValue coerce_to_domain_value = 54 [json_name = "CoerceToDomainValue"]; inline bool Node::has_coerce_to_domain_value() const { return node_case() == kCoerceToDomainValue; } inline bool Node::_internal_has_coerce_to_domain_value() const { return node_case() == kCoerceToDomainValue; } inline void Node::set_has_coerce_to_domain_value() { _impl_._oneof_case_[0] = kCoerceToDomainValue; } inline void Node::clear_coerce_to_domain_value() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCoerceToDomainValue) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCoerceToDomainValue) { clear_has_node(); auto* temp = _impl_.node_.coerce_to_domain_value_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.coerce_to_domain_value_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CoerceToDomainValue& Node::_internal_coerce_to_domain_value() const { return node_case() == kCoerceToDomainValue ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCoerceToDomainValue) { clear_has_node(); auto* temp = _impl_.node_.coerce_to_domain_value_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_coerce_to_domain_value(); _impl_.node_.coerce_to_domain_value_ = 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 (node_case() != kCoerceToDomainValue) { clear_node(); set_has_coerce_to_domain_value(); _impl_.node_.coerce_to_domain_value_ = CreateMaybeMessage<::pg_query::CoerceToDomainValue>(GetArena()); } return _impl_.node_.coerce_to_domain_value_; } inline ::pg_query::CoerceToDomainValue* Node::mutable_coerce_to_domain_value() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CoerceToDomainValue* _msg = _internal_mutable_coerce_to_domain_value(); // @@protoc_insertion_point(field_mutable:pg_query.Node.coerce_to_domain_value) return _msg; } // .pg_query.SetToDefault set_to_default = 55 [json_name = "SetToDefault"]; inline bool Node::has_set_to_default() const { return node_case() == kSetToDefault; } inline bool Node::_internal_has_set_to_default() const { return node_case() == kSetToDefault; } inline void Node::set_has_set_to_default() { _impl_._oneof_case_[0] = kSetToDefault; } inline void Node::clear_set_to_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kSetToDefault) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kSetToDefault) { clear_has_node(); auto* temp = _impl_.node_.set_to_default_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.set_to_default_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SetToDefault& Node::_internal_set_to_default() const { return node_case() == kSetToDefault ? *_impl_.node_.set_to_default_ : reinterpret_cast<::pg_query::SetToDefault&>(::pg_query::_SetToDefault_default_instance_); } inline const ::pg_query::SetToDefault& Node::set_to_default() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kSetToDefault) { clear_has_node(); auto* temp = _impl_.node_.set_to_default_; _impl_.node_.set_to_default_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_set_to_default(::pg_query::SetToDefault* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_set_to_default(); _impl_.node_.set_to_default_ = value; } // @@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 (node_case() != kSetToDefault) { clear_node(); set_has_set_to_default(); _impl_.node_.set_to_default_ = CreateMaybeMessage<::pg_query::SetToDefault>(GetArena()); } return _impl_.node_.set_to_default_; } inline ::pg_query::SetToDefault* Node::mutable_set_to_default() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::SetToDefault* _msg = _internal_mutable_set_to_default(); // @@protoc_insertion_point(field_mutable:pg_query.Node.set_to_default) return _msg; } // .pg_query.CurrentOfExpr current_of_expr = 56 [json_name = "CurrentOfExpr"]; inline bool Node::has_current_of_expr() const { return node_case() == kCurrentOfExpr; } inline bool Node::_internal_has_current_of_expr() const { return node_case() == kCurrentOfExpr; } inline void Node::set_has_current_of_expr() { _impl_._oneof_case_[0] = kCurrentOfExpr; } inline void Node::clear_current_of_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCurrentOfExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCurrentOfExpr) { clear_has_node(); auto* temp = _impl_.node_.current_of_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.current_of_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CurrentOfExpr& Node::_internal_current_of_expr() const { return node_case() == kCurrentOfExpr ? *_impl_.node_.current_of_expr_ : reinterpret_cast<::pg_query::CurrentOfExpr&>(::pg_query::_CurrentOfExpr_default_instance_); } inline const ::pg_query::CurrentOfExpr& Node::current_of_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCurrentOfExpr) { clear_has_node(); auto* temp = _impl_.node_.current_of_expr_; _impl_.node_.current_of_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_current_of_expr(::pg_query::CurrentOfExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_current_of_expr(); _impl_.node_.current_of_expr_ = value; } // @@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 (node_case() != kCurrentOfExpr) { clear_node(); set_has_current_of_expr(); _impl_.node_.current_of_expr_ = CreateMaybeMessage<::pg_query::CurrentOfExpr>(GetArena()); } return _impl_.node_.current_of_expr_; } inline ::pg_query::CurrentOfExpr* Node::mutable_current_of_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CurrentOfExpr* _msg = _internal_mutable_current_of_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.current_of_expr) return _msg; } // .pg_query.NextValueExpr next_value_expr = 57 [json_name = "NextValueExpr"]; inline bool Node::has_next_value_expr() const { return node_case() == kNextValueExpr; } inline bool Node::_internal_has_next_value_expr() const { return node_case() == kNextValueExpr; } inline void Node::set_has_next_value_expr() { _impl_._oneof_case_[0] = kNextValueExpr; } inline void Node::clear_next_value_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kNextValueExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kNextValueExpr) { clear_has_node(); auto* temp = _impl_.node_.next_value_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.next_value_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::NextValueExpr& Node::_internal_next_value_expr() const { return node_case() == kNextValueExpr ? *_impl_.node_.next_value_expr_ : reinterpret_cast<::pg_query::NextValueExpr&>(::pg_query::_NextValueExpr_default_instance_); } inline const ::pg_query::NextValueExpr& Node::next_value_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kNextValueExpr) { clear_has_node(); auto* temp = _impl_.node_.next_value_expr_; _impl_.node_.next_value_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_next_value_expr(::pg_query::NextValueExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_next_value_expr(); _impl_.node_.next_value_expr_ = value; } // @@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 (node_case() != kNextValueExpr) { clear_node(); set_has_next_value_expr(); _impl_.node_.next_value_expr_ = CreateMaybeMessage<::pg_query::NextValueExpr>(GetArena()); } return _impl_.node_.next_value_expr_; } inline ::pg_query::NextValueExpr* Node::mutable_next_value_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::NextValueExpr* _msg = _internal_mutable_next_value_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.next_value_expr) return _msg; } // .pg_query.InferenceElem inference_elem = 58 [json_name = "InferenceElem"]; inline bool Node::has_inference_elem() const { return node_case() == kInferenceElem; } inline bool Node::_internal_has_inference_elem() const { return node_case() == kInferenceElem; } inline void Node::set_has_inference_elem() { _impl_._oneof_case_[0] = kInferenceElem; } inline void Node::clear_inference_elem() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kInferenceElem) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kInferenceElem) { clear_has_node(); auto* temp = _impl_.node_.inference_elem_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.inference_elem_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::InferenceElem& Node::_internal_inference_elem() const { return node_case() == kInferenceElem ? *_impl_.node_.inference_elem_ : reinterpret_cast<::pg_query::InferenceElem&>(::pg_query::_InferenceElem_default_instance_); } inline const ::pg_query::InferenceElem& Node::inference_elem() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kInferenceElem) { clear_has_node(); auto* temp = _impl_.node_.inference_elem_; _impl_.node_.inference_elem_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_inference_elem(::pg_query::InferenceElem* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_inference_elem(); _impl_.node_.inference_elem_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.inference_elem) } inline ::pg_query::InferenceElem* Node::_internal_mutable_inference_elem() { if (node_case() != kInferenceElem) { clear_node(); set_has_inference_elem(); _impl_.node_.inference_elem_ = CreateMaybeMessage<::pg_query::InferenceElem>(GetArena()); } return _impl_.node_.inference_elem_; } inline ::pg_query::InferenceElem* Node::mutable_inference_elem() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::InferenceElem* _msg = _internal_mutable_inference_elem(); // @@protoc_insertion_point(field_mutable:pg_query.Node.inference_elem) return _msg; } // .pg_query.TargetEntry target_entry = 59 [json_name = "TargetEntry"]; inline bool Node::has_target_entry() const { return node_case() == kTargetEntry; } inline bool Node::_internal_has_target_entry() const { return node_case() == kTargetEntry; } inline void Node::set_has_target_entry() { _impl_._oneof_case_[0] = kTargetEntry; } inline void Node::clear_target_entry() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kTargetEntry) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kTargetEntry) { clear_has_node(); auto* temp = _impl_.node_.target_entry_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.target_entry_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TargetEntry& Node::_internal_target_entry() const { return node_case() == kTargetEntry ? *_impl_.node_.target_entry_ : reinterpret_cast<::pg_query::TargetEntry&>(::pg_query::_TargetEntry_default_instance_); } inline const ::pg_query::TargetEntry& Node::target_entry() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kTargetEntry) { clear_has_node(); auto* temp = _impl_.node_.target_entry_; _impl_.node_.target_entry_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_target_entry(::pg_query::TargetEntry* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_target_entry(); _impl_.node_.target_entry_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.target_entry) } inline ::pg_query::TargetEntry* Node::_internal_mutable_target_entry() { if (node_case() != kTargetEntry) { clear_node(); set_has_target_entry(); _impl_.node_.target_entry_ = CreateMaybeMessage<::pg_query::TargetEntry>(GetArena()); } return _impl_.node_.target_entry_; } inline ::pg_query::TargetEntry* Node::mutable_target_entry() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TargetEntry* _msg = _internal_mutable_target_entry(); // @@protoc_insertion_point(field_mutable:pg_query.Node.target_entry) return _msg; } // .pg_query.RangeTblRef range_tbl_ref = 60 [json_name = "RangeTblRef"]; inline bool Node::has_range_tbl_ref() const { return node_case() == kRangeTblRef; } inline bool Node::_internal_has_range_tbl_ref() const { return node_case() == kRangeTblRef; } inline void Node::set_has_range_tbl_ref() { _impl_._oneof_case_[0] = kRangeTblRef; } inline void Node::clear_range_tbl_ref() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRangeTblRef) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRangeTblRef) { clear_has_node(); auto* temp = _impl_.node_.range_tbl_ref_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.range_tbl_ref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeTblRef& Node::_internal_range_tbl_ref() const { return node_case() == kRangeTblRef ? *_impl_.node_.range_tbl_ref_ : reinterpret_cast<::pg_query::RangeTblRef&>(::pg_query::_RangeTblRef_default_instance_); } inline const ::pg_query::RangeTblRef& Node::range_tbl_ref() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRangeTblRef) { clear_has_node(); auto* temp = _impl_.node_.range_tbl_ref_; _impl_.node_.range_tbl_ref_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_tbl_ref(::pg_query::RangeTblRef* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_range_tbl_ref(); _impl_.node_.range_tbl_ref_ = value; } // @@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 (node_case() != kRangeTblRef) { clear_node(); set_has_range_tbl_ref(); _impl_.node_.range_tbl_ref_ = CreateMaybeMessage<::pg_query::RangeTblRef>(GetArena()); } return _impl_.node_.range_tbl_ref_; } inline ::pg_query::RangeTblRef* Node::mutable_range_tbl_ref() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeTblRef* _msg = _internal_mutable_range_tbl_ref(); // @@protoc_insertion_point(field_mutable:pg_query.Node.range_tbl_ref) return _msg; } // .pg_query.JoinExpr join_expr = 61 [json_name = "JoinExpr"]; inline bool Node::has_join_expr() const { return node_case() == kJoinExpr; } inline bool Node::_internal_has_join_expr() const { return node_case() == kJoinExpr; } inline void Node::set_has_join_expr() { _impl_._oneof_case_[0] = kJoinExpr; } inline void Node::clear_join_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJoinExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kJoinExpr) { clear_has_node(); auto* temp = _impl_.node_.join_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.join_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JoinExpr& Node::_internal_join_expr() const { return node_case() == kJoinExpr ? *_impl_.node_.join_expr_ : reinterpret_cast<::pg_query::JoinExpr&>(::pg_query::_JoinExpr_default_instance_); } inline const ::pg_query::JoinExpr& Node::join_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kJoinExpr) { clear_has_node(); auto* temp = _impl_.node_.join_expr_; _impl_.node_.join_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_join_expr(::pg_query::JoinExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_join_expr(); _impl_.node_.join_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.join_expr) } inline ::pg_query::JoinExpr* Node::_internal_mutable_join_expr() { if (node_case() != kJoinExpr) { clear_node(); set_has_join_expr(); _impl_.node_.join_expr_ = CreateMaybeMessage<::pg_query::JoinExpr>(GetArena()); } return _impl_.node_.join_expr_; } inline ::pg_query::JoinExpr* Node::mutable_join_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JoinExpr* _msg = _internal_mutable_join_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.join_expr) return _msg; } // .pg_query.FromExpr from_expr = 62 [json_name = "FromExpr"]; inline bool Node::has_from_expr() const { return node_case() == kFromExpr; } inline bool Node::_internal_has_from_expr() const { return node_case() == kFromExpr; } inline void Node::set_has_from_expr() { _impl_._oneof_case_[0] = kFromExpr; } inline void Node::clear_from_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kFromExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kFromExpr) { clear_has_node(); auto* temp = _impl_.node_.from_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.from_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FromExpr& Node::_internal_from_expr() const { return node_case() == kFromExpr ? *_impl_.node_.from_expr_ : reinterpret_cast<::pg_query::FromExpr&>(::pg_query::_FromExpr_default_instance_); } inline const ::pg_query::FromExpr& Node::from_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kFromExpr) { clear_has_node(); auto* temp = _impl_.node_.from_expr_; _impl_.node_.from_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_from_expr(::pg_query::FromExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_from_expr(); _impl_.node_.from_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.from_expr) } inline ::pg_query::FromExpr* Node::_internal_mutable_from_expr() { if (node_case() != kFromExpr) { clear_node(); set_has_from_expr(); _impl_.node_.from_expr_ = CreateMaybeMessage<::pg_query::FromExpr>(GetArena()); } return _impl_.node_.from_expr_; } inline ::pg_query::FromExpr* Node::mutable_from_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::FromExpr* _msg = _internal_mutable_from_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.from_expr) return _msg; } // .pg_query.OnConflictExpr on_conflict_expr = 63 [json_name = "OnConflictExpr"]; inline bool Node::has_on_conflict_expr() const { return node_case() == kOnConflictExpr; } inline bool Node::_internal_has_on_conflict_expr() const { return node_case() == kOnConflictExpr; } inline void Node::set_has_on_conflict_expr() { _impl_._oneof_case_[0] = kOnConflictExpr; } inline void Node::clear_on_conflict_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kOnConflictExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kOnConflictExpr) { clear_has_node(); auto* temp = _impl_.node_.on_conflict_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.on_conflict_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::OnConflictExpr& Node::_internal_on_conflict_expr() const { return node_case() == kOnConflictExpr ? *_impl_.node_.on_conflict_expr_ : reinterpret_cast<::pg_query::OnConflictExpr&>(::pg_query::_OnConflictExpr_default_instance_); } inline const ::pg_query::OnConflictExpr& Node::on_conflict_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kOnConflictExpr) { clear_has_node(); auto* temp = _impl_.node_.on_conflict_expr_; _impl_.node_.on_conflict_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_on_conflict_expr(::pg_query::OnConflictExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_on_conflict_expr(); _impl_.node_.on_conflict_expr_ = value; } // @@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 (node_case() != kOnConflictExpr) { clear_node(); set_has_on_conflict_expr(); _impl_.node_.on_conflict_expr_ = CreateMaybeMessage<::pg_query::OnConflictExpr>(GetArena()); } return _impl_.node_.on_conflict_expr_; } inline ::pg_query::OnConflictExpr* Node::mutable_on_conflict_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::OnConflictExpr* _msg = _internal_mutable_on_conflict_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.on_conflict_expr) return _msg; } // .pg_query.Query query = 64 [json_name = "Query"]; inline bool Node::has_query() const { return node_case() == kQuery; } inline bool Node::_internal_has_query() const { return node_case() == kQuery; } inline void Node::set_has_query() { _impl_._oneof_case_[0] = kQuery; } inline void Node::clear_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kQuery) { if (GetArena() == nullptr) { delete _impl_.node_.query_; } clear_has_node(); } } inline ::pg_query::Query* Node::release_query() { // @@protoc_insertion_point(field_release:pg_query.Node.query) if (node_case() == kQuery) { clear_has_node(); auto* temp = _impl_.node_.query_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.query_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Query& Node::_internal_query() const { return node_case() == kQuery ? *_impl_.node_.query_ : reinterpret_cast<::pg_query::Query&>(::pg_query::_Query_default_instance_); } inline const ::pg_query::Query& Node::query() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kQuery) { clear_has_node(); auto* temp = _impl_.node_.query_; _impl_.node_.query_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_query(::pg_query::Query* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_query(); _impl_.node_.query_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.query) } inline ::pg_query::Query* Node::_internal_mutable_query() { if (node_case() != kQuery) { clear_node(); set_has_query(); _impl_.node_.query_ = CreateMaybeMessage<::pg_query::Query>(GetArena()); } return _impl_.node_.query_; } inline ::pg_query::Query* Node::mutable_query() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Query* _msg = _internal_mutable_query(); // @@protoc_insertion_point(field_mutable:pg_query.Node.query) return _msg; } // .pg_query.TypeName type_name = 65 [json_name = "TypeName"]; inline bool Node::has_type_name() const { return node_case() == kTypeName; } inline bool Node::_internal_has_type_name() const { return node_case() == kTypeName; } inline void Node::set_has_type_name() { _impl_._oneof_case_[0] = kTypeName; } inline void Node::clear_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kTypeName) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kTypeName) { clear_has_node(); auto* temp = _impl_.node_.type_name_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.type_name_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TypeName& Node::_internal_type_name() const { return node_case() == kTypeName ? *_impl_.node_.type_name_ : reinterpret_cast<::pg_query::TypeName&>(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& Node::type_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kTypeName) { clear_has_node(); auto* temp = _impl_.node_.type_name_; _impl_.node_.type_name_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_type_name(::pg_query::TypeName* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_type_name(); _impl_.node_.type_name_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.type_name) } inline ::pg_query::TypeName* Node::_internal_mutable_type_name() { if (node_case() != kTypeName) { clear_node(); set_has_type_name(); _impl_.node_.type_name_ = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); } return _impl_.node_.type_name_; } inline ::pg_query::TypeName* Node::mutable_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_type_name(); // @@protoc_insertion_point(field_mutable:pg_query.Node.type_name) return _msg; } // .pg_query.ColumnRef column_ref = 66 [json_name = "ColumnRef"]; inline bool Node::has_column_ref() const { return node_case() == kColumnRef; } inline bool Node::_internal_has_column_ref() const { return node_case() == kColumnRef; } inline void Node::set_has_column_ref() { _impl_._oneof_case_[0] = kColumnRef; } inline void Node::clear_column_ref() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kColumnRef) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kColumnRef) { clear_has_node(); auto* temp = _impl_.node_.column_ref_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.column_ref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ColumnRef& Node::_internal_column_ref() const { return node_case() == kColumnRef ? *_impl_.node_.column_ref_ : reinterpret_cast<::pg_query::ColumnRef&>(::pg_query::_ColumnRef_default_instance_); } inline const ::pg_query::ColumnRef& Node::column_ref() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kColumnRef) { clear_has_node(); auto* temp = _impl_.node_.column_ref_; _impl_.node_.column_ref_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_column_ref(::pg_query::ColumnRef* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_column_ref(); _impl_.node_.column_ref_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.column_ref) } inline ::pg_query::ColumnRef* Node::_internal_mutable_column_ref() { if (node_case() != kColumnRef) { clear_node(); set_has_column_ref(); _impl_.node_.column_ref_ = CreateMaybeMessage<::pg_query::ColumnRef>(GetArena()); } return _impl_.node_.column_ref_; } inline ::pg_query::ColumnRef* Node::mutable_column_ref() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ColumnRef* _msg = _internal_mutable_column_ref(); // @@protoc_insertion_point(field_mutable:pg_query.Node.column_ref) return _msg; } // .pg_query.ParamRef param_ref = 67 [json_name = "ParamRef"]; inline bool Node::has_param_ref() const { return node_case() == kParamRef; } inline bool Node::_internal_has_param_ref() const { return node_case() == kParamRef; } inline void Node::set_has_param_ref() { _impl_._oneof_case_[0] = kParamRef; } inline void Node::clear_param_ref() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kParamRef) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kParamRef) { clear_has_node(); auto* temp = _impl_.node_.param_ref_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.param_ref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ParamRef& Node::_internal_param_ref() const { return node_case() == kParamRef ? *_impl_.node_.param_ref_ : reinterpret_cast<::pg_query::ParamRef&>(::pg_query::_ParamRef_default_instance_); } inline const ::pg_query::ParamRef& Node::param_ref() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kParamRef) { clear_has_node(); auto* temp = _impl_.node_.param_ref_; _impl_.node_.param_ref_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_param_ref(::pg_query::ParamRef* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_param_ref(); _impl_.node_.param_ref_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.param_ref) } inline ::pg_query::ParamRef* Node::_internal_mutable_param_ref() { if (node_case() != kParamRef) { clear_node(); set_has_param_ref(); _impl_.node_.param_ref_ = CreateMaybeMessage<::pg_query::ParamRef>(GetArena()); } return _impl_.node_.param_ref_; } inline ::pg_query::ParamRef* Node::mutable_param_ref() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ParamRef* _msg = _internal_mutable_param_ref(); // @@protoc_insertion_point(field_mutable:pg_query.Node.param_ref) return _msg; } // .pg_query.A_Expr a_expr = 68 [json_name = "A_Expr"]; inline bool Node::has_a_expr() const { return node_case() == kAExpr; } inline bool Node::_internal_has_a_expr() const { return node_case() == kAExpr; } inline void Node::set_has_a_expr() { _impl_._oneof_case_[0] = kAExpr; } inline void Node::clear_a_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAExpr) { clear_has_node(); auto* temp = _impl_.node_.a_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.a_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::A_Expr& Node::_internal_a_expr() const { return node_case() == kAExpr ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAExpr) { clear_has_node(); auto* temp = _impl_.node_.a_expr_; _impl_.node_.a_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_a_expr(::pg_query::A_Expr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_a_expr(); _impl_.node_.a_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_expr) } inline ::pg_query::A_Expr* Node::_internal_mutable_a_expr() { if (node_case() != kAExpr) { clear_node(); set_has_a_expr(); _impl_.node_.a_expr_ = CreateMaybeMessage<::pg_query::A_Expr>(GetArena()); } return _impl_.node_.a_expr_; } inline ::pg_query::A_Expr* Node::mutable_a_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::A_Expr* _msg = _internal_mutable_a_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.a_expr) return _msg; } // .pg_query.TypeCast type_cast = 69 [json_name = "TypeCast"]; inline bool Node::has_type_cast() const { return node_case() == kTypeCast; } inline bool Node::_internal_has_type_cast() const { return node_case() == kTypeCast; } inline void Node::set_has_type_cast() { _impl_._oneof_case_[0] = kTypeCast; } inline void Node::clear_type_cast() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kTypeCast) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kTypeCast) { clear_has_node(); auto* temp = _impl_.node_.type_cast_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.type_cast_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TypeCast& Node::_internal_type_cast() const { return node_case() == kTypeCast ? *_impl_.node_.type_cast_ : reinterpret_cast<::pg_query::TypeCast&>(::pg_query::_TypeCast_default_instance_); } inline const ::pg_query::TypeCast& Node::type_cast() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kTypeCast) { clear_has_node(); auto* temp = _impl_.node_.type_cast_; _impl_.node_.type_cast_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_type_cast(::pg_query::TypeCast* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_type_cast(); _impl_.node_.type_cast_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.type_cast) } inline ::pg_query::TypeCast* Node::_internal_mutable_type_cast() { if (node_case() != kTypeCast) { clear_node(); set_has_type_cast(); _impl_.node_.type_cast_ = CreateMaybeMessage<::pg_query::TypeCast>(GetArena()); } return _impl_.node_.type_cast_; } inline ::pg_query::TypeCast* Node::mutable_type_cast() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeCast* _msg = _internal_mutable_type_cast(); // @@protoc_insertion_point(field_mutable:pg_query.Node.type_cast) return _msg; } // .pg_query.CollateClause collate_clause = 70 [json_name = "CollateClause"]; inline bool Node::has_collate_clause() const { return node_case() == kCollateClause; } inline bool Node::_internal_has_collate_clause() const { return node_case() == kCollateClause; } inline void Node::set_has_collate_clause() { _impl_._oneof_case_[0] = kCollateClause; } inline void Node::clear_collate_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCollateClause) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCollateClause) { clear_has_node(); auto* temp = _impl_.node_.collate_clause_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.collate_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CollateClause& Node::_internal_collate_clause() const { return node_case() == kCollateClause ? *_impl_.node_.collate_clause_ : reinterpret_cast<::pg_query::CollateClause&>(::pg_query::_CollateClause_default_instance_); } inline const ::pg_query::CollateClause& Node::collate_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCollateClause) { clear_has_node(); auto* temp = _impl_.node_.collate_clause_; _impl_.node_.collate_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_collate_clause(::pg_query::CollateClause* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_collate_clause(); _impl_.node_.collate_clause_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.collate_clause) } inline ::pg_query::CollateClause* Node::_internal_mutable_collate_clause() { if (node_case() != kCollateClause) { clear_node(); set_has_collate_clause(); _impl_.node_.collate_clause_ = CreateMaybeMessage<::pg_query::CollateClause>(GetArena()); } return _impl_.node_.collate_clause_; } inline ::pg_query::CollateClause* Node::mutable_collate_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CollateClause* _msg = _internal_mutable_collate_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.collate_clause) return _msg; } // .pg_query.RoleSpec role_spec = 71 [json_name = "RoleSpec"]; inline bool Node::has_role_spec() const { return node_case() == kRoleSpec; } inline bool Node::_internal_has_role_spec() const { return node_case() == kRoleSpec; } inline void Node::set_has_role_spec() { _impl_._oneof_case_[0] = kRoleSpec; } inline void Node::clear_role_spec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRoleSpec) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRoleSpec) { clear_has_node(); auto* temp = _impl_.node_.role_spec_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.role_spec_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RoleSpec& Node::_internal_role_spec() const { return node_case() == kRoleSpec ? *_impl_.node_.role_spec_ : reinterpret_cast<::pg_query::RoleSpec&>(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& Node::role_spec() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRoleSpec) { clear_has_node(); auto* temp = _impl_.node_.role_spec_; _impl_.node_.role_spec_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_role_spec(::pg_query::RoleSpec* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_role_spec(); _impl_.node_.role_spec_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.role_spec) } inline ::pg_query::RoleSpec* Node::_internal_mutable_role_spec() { if (node_case() != kRoleSpec) { clear_node(); set_has_role_spec(); _impl_.node_.role_spec_ = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); } return _impl_.node_.role_spec_; } inline ::pg_query::RoleSpec* Node::mutable_role_spec() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RoleSpec* _msg = _internal_mutable_role_spec(); // @@protoc_insertion_point(field_mutable:pg_query.Node.role_spec) return _msg; } // .pg_query.FuncCall func_call = 72 [json_name = "FuncCall"]; inline bool Node::has_func_call() const { return node_case() == kFuncCall; } inline bool Node::_internal_has_func_call() const { return node_case() == kFuncCall; } inline void Node::set_has_func_call() { _impl_._oneof_case_[0] = kFuncCall; } inline void Node::clear_func_call() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kFuncCall) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kFuncCall) { clear_has_node(); auto* temp = _impl_.node_.func_call_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.func_call_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FuncCall& Node::_internal_func_call() const { return node_case() == kFuncCall ? *_impl_.node_.func_call_ : reinterpret_cast<::pg_query::FuncCall&>(::pg_query::_FuncCall_default_instance_); } inline const ::pg_query::FuncCall& Node::func_call() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kFuncCall) { clear_has_node(); auto* temp = _impl_.node_.func_call_; _impl_.node_.func_call_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_func_call(::pg_query::FuncCall* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_func_call(); _impl_.node_.func_call_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.func_call) } inline ::pg_query::FuncCall* Node::_internal_mutable_func_call() { if (node_case() != kFuncCall) { clear_node(); set_has_func_call(); _impl_.node_.func_call_ = CreateMaybeMessage<::pg_query::FuncCall>(GetArena()); } return _impl_.node_.func_call_; } inline ::pg_query::FuncCall* Node::mutable_func_call() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::FuncCall* _msg = _internal_mutable_func_call(); // @@protoc_insertion_point(field_mutable:pg_query.Node.func_call) return _msg; } // .pg_query.A_Star a_star = 73 [json_name = "A_Star"]; inline bool Node::has_a_star() const { return node_case() == kAStar; } inline bool Node::_internal_has_a_star() const { return node_case() == kAStar; } inline void Node::set_has_a_star() { _impl_._oneof_case_[0] = kAStar; } inline void Node::clear_a_star() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAStar) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAStar) { clear_has_node(); auto* temp = _impl_.node_.a_star_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.a_star_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::A_Star& Node::_internal_a_star() const { return node_case() == kAStar ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAStar) { clear_has_node(); auto* temp = _impl_.node_.a_star_; _impl_.node_.a_star_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_a_star(::pg_query::A_Star* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_a_star(); _impl_.node_.a_star_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_star) } inline ::pg_query::A_Star* Node::_internal_mutable_a_star() { if (node_case() != kAStar) { clear_node(); set_has_a_star(); _impl_.node_.a_star_ = CreateMaybeMessage<::pg_query::A_Star>(GetArena()); } return _impl_.node_.a_star_; } inline ::pg_query::A_Star* Node::mutable_a_star() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::A_Star* _msg = _internal_mutable_a_star(); // @@protoc_insertion_point(field_mutable:pg_query.Node.a_star) return _msg; } // .pg_query.A_Indices a_indices = 74 [json_name = "A_Indices"]; inline bool Node::has_a_indices() const { return node_case() == kAIndices; } inline bool Node::_internal_has_a_indices() const { return node_case() == kAIndices; } inline void Node::set_has_a_indices() { _impl_._oneof_case_[0] = kAIndices; } inline void Node::clear_a_indices() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAIndices) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAIndices) { clear_has_node(); auto* temp = _impl_.node_.a_indices_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.a_indices_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::A_Indices& Node::_internal_a_indices() const { return node_case() == kAIndices ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAIndices) { clear_has_node(); auto* temp = _impl_.node_.a_indices_; _impl_.node_.a_indices_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_a_indices(::pg_query::A_Indices* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_a_indices(); _impl_.node_.a_indices_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_indices) } inline ::pg_query::A_Indices* Node::_internal_mutable_a_indices() { if (node_case() != kAIndices) { clear_node(); set_has_a_indices(); _impl_.node_.a_indices_ = CreateMaybeMessage<::pg_query::A_Indices>(GetArena()); } return _impl_.node_.a_indices_; } inline ::pg_query::A_Indices* Node::mutable_a_indices() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::A_Indices* _msg = _internal_mutable_a_indices(); // @@protoc_insertion_point(field_mutable:pg_query.Node.a_indices) return _msg; } // .pg_query.A_Indirection a_indirection = 75 [json_name = "A_Indirection"]; inline bool Node::has_a_indirection() const { return node_case() == kAIndirection; } inline bool Node::_internal_has_a_indirection() const { return node_case() == kAIndirection; } inline void Node::set_has_a_indirection() { _impl_._oneof_case_[0] = kAIndirection; } inline void Node::clear_a_indirection() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAIndirection) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAIndirection) { clear_has_node(); auto* temp = _impl_.node_.a_indirection_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.a_indirection_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::A_Indirection& Node::_internal_a_indirection() const { return node_case() == kAIndirection ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAIndirection) { clear_has_node(); auto* temp = _impl_.node_.a_indirection_; _impl_.node_.a_indirection_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_a_indirection(::pg_query::A_Indirection* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_a_indirection(); _impl_.node_.a_indirection_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_indirection) } inline ::pg_query::A_Indirection* Node::_internal_mutable_a_indirection() { if (node_case() != kAIndirection) { clear_node(); set_has_a_indirection(); _impl_.node_.a_indirection_ = CreateMaybeMessage<::pg_query::A_Indirection>(GetArena()); } return _impl_.node_.a_indirection_; } inline ::pg_query::A_Indirection* Node::mutable_a_indirection() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::A_Indirection* _msg = _internal_mutable_a_indirection(); // @@protoc_insertion_point(field_mutable:pg_query.Node.a_indirection) return _msg; } // .pg_query.A_ArrayExpr a_array_expr = 76 [json_name = "A_ArrayExpr"]; inline bool Node::has_a_array_expr() const { return node_case() == kAArrayExpr; } inline bool Node::_internal_has_a_array_expr() const { return node_case() == kAArrayExpr; } inline void Node::set_has_a_array_expr() { _impl_._oneof_case_[0] = kAArrayExpr; } inline void Node::clear_a_array_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAArrayExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAArrayExpr) { clear_has_node(); auto* temp = _impl_.node_.a_array_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.a_array_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::A_ArrayExpr& Node::_internal_a_array_expr() const { return node_case() == kAArrayExpr ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAArrayExpr) { clear_has_node(); auto* temp = _impl_.node_.a_array_expr_; _impl_.node_.a_array_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_a_array_expr(::pg_query::A_ArrayExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_a_array_expr(); _impl_.node_.a_array_expr_ = value; } // @@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 (node_case() != kAArrayExpr) { clear_node(); set_has_a_array_expr(); _impl_.node_.a_array_expr_ = CreateMaybeMessage<::pg_query::A_ArrayExpr>(GetArena()); } return _impl_.node_.a_array_expr_; } inline ::pg_query::A_ArrayExpr* Node::mutable_a_array_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::A_ArrayExpr* _msg = _internal_mutable_a_array_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.a_array_expr) return _msg; } // .pg_query.ResTarget res_target = 77 [json_name = "ResTarget"]; inline bool Node::has_res_target() const { return node_case() == kResTarget; } inline bool Node::_internal_has_res_target() const { return node_case() == kResTarget; } inline void Node::set_has_res_target() { _impl_._oneof_case_[0] = kResTarget; } inline void Node::clear_res_target() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kResTarget) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kResTarget) { clear_has_node(); auto* temp = _impl_.node_.res_target_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.res_target_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ResTarget& Node::_internal_res_target() const { return node_case() == kResTarget ? *_impl_.node_.res_target_ : reinterpret_cast<::pg_query::ResTarget&>(::pg_query::_ResTarget_default_instance_); } inline const ::pg_query::ResTarget& Node::res_target() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kResTarget) { clear_has_node(); auto* temp = _impl_.node_.res_target_; _impl_.node_.res_target_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_res_target(::pg_query::ResTarget* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_res_target(); _impl_.node_.res_target_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.res_target) } inline ::pg_query::ResTarget* Node::_internal_mutable_res_target() { if (node_case() != kResTarget) { clear_node(); set_has_res_target(); _impl_.node_.res_target_ = CreateMaybeMessage<::pg_query::ResTarget>(GetArena()); } return _impl_.node_.res_target_; } inline ::pg_query::ResTarget* Node::mutable_res_target() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ResTarget* _msg = _internal_mutable_res_target(); // @@protoc_insertion_point(field_mutable:pg_query.Node.res_target) return _msg; } // .pg_query.MultiAssignRef multi_assign_ref = 78 [json_name = "MultiAssignRef"]; inline bool Node::has_multi_assign_ref() const { return node_case() == kMultiAssignRef; } inline bool Node::_internal_has_multi_assign_ref() const { return node_case() == kMultiAssignRef; } inline void Node::set_has_multi_assign_ref() { _impl_._oneof_case_[0] = kMultiAssignRef; } inline void Node::clear_multi_assign_ref() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kMultiAssignRef) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kMultiAssignRef) { clear_has_node(); auto* temp = _impl_.node_.multi_assign_ref_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.multi_assign_ref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::MultiAssignRef& Node::_internal_multi_assign_ref() const { return node_case() == kMultiAssignRef ? *_impl_.node_.multi_assign_ref_ : reinterpret_cast<::pg_query::MultiAssignRef&>(::pg_query::_MultiAssignRef_default_instance_); } inline const ::pg_query::MultiAssignRef& Node::multi_assign_ref() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kMultiAssignRef) { clear_has_node(); auto* temp = _impl_.node_.multi_assign_ref_; _impl_.node_.multi_assign_ref_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_multi_assign_ref(::pg_query::MultiAssignRef* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_multi_assign_ref(); _impl_.node_.multi_assign_ref_ = value; } // @@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 (node_case() != kMultiAssignRef) { clear_node(); set_has_multi_assign_ref(); _impl_.node_.multi_assign_ref_ = CreateMaybeMessage<::pg_query::MultiAssignRef>(GetArena()); } return _impl_.node_.multi_assign_ref_; } inline ::pg_query::MultiAssignRef* Node::mutable_multi_assign_ref() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::MultiAssignRef* _msg = _internal_mutable_multi_assign_ref(); // @@protoc_insertion_point(field_mutable:pg_query.Node.multi_assign_ref) return _msg; } // .pg_query.SortBy sort_by = 79 [json_name = "SortBy"]; inline bool Node::has_sort_by() const { return node_case() == kSortBy; } inline bool Node::_internal_has_sort_by() const { return node_case() == kSortBy; } inline void Node::set_has_sort_by() { _impl_._oneof_case_[0] = kSortBy; } inline void Node::clear_sort_by() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kSortBy) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kSortBy) { clear_has_node(); auto* temp = _impl_.node_.sort_by_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.sort_by_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SortBy& Node::_internal_sort_by() const { return node_case() == kSortBy ? *_impl_.node_.sort_by_ : reinterpret_cast<::pg_query::SortBy&>(::pg_query::_SortBy_default_instance_); } inline const ::pg_query::SortBy& Node::sort_by() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kSortBy) { clear_has_node(); auto* temp = _impl_.node_.sort_by_; _impl_.node_.sort_by_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_sort_by(::pg_query::SortBy* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_sort_by(); _impl_.node_.sort_by_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sort_by) } inline ::pg_query::SortBy* Node::_internal_mutable_sort_by() { if (node_case() != kSortBy) { clear_node(); set_has_sort_by(); _impl_.node_.sort_by_ = CreateMaybeMessage<::pg_query::SortBy>(GetArena()); } return _impl_.node_.sort_by_; } inline ::pg_query::SortBy* Node::mutable_sort_by() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::SortBy* _msg = _internal_mutable_sort_by(); // @@protoc_insertion_point(field_mutable:pg_query.Node.sort_by) return _msg; } // .pg_query.WindowDef window_def = 80 [json_name = "WindowDef"]; inline bool Node::has_window_def() const { return node_case() == kWindowDef; } inline bool Node::_internal_has_window_def() const { return node_case() == kWindowDef; } inline void Node::set_has_window_def() { _impl_._oneof_case_[0] = kWindowDef; } inline void Node::clear_window_def() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kWindowDef) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kWindowDef) { clear_has_node(); auto* temp = _impl_.node_.window_def_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.window_def_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WindowDef& Node::_internal_window_def() const { return node_case() == kWindowDef ? *_impl_.node_.window_def_ : reinterpret_cast<::pg_query::WindowDef&>(::pg_query::_WindowDef_default_instance_); } inline const ::pg_query::WindowDef& Node::window_def() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kWindowDef) { clear_has_node(); auto* temp = _impl_.node_.window_def_; _impl_.node_.window_def_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_window_def(::pg_query::WindowDef* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_window_def(); _impl_.node_.window_def_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.window_def) } inline ::pg_query::WindowDef* Node::_internal_mutable_window_def() { if (node_case() != kWindowDef) { clear_node(); set_has_window_def(); _impl_.node_.window_def_ = CreateMaybeMessage<::pg_query::WindowDef>(GetArena()); } return _impl_.node_.window_def_; } inline ::pg_query::WindowDef* Node::mutable_window_def() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::WindowDef* _msg = _internal_mutable_window_def(); // @@protoc_insertion_point(field_mutable:pg_query.Node.window_def) return _msg; } // .pg_query.RangeSubselect range_subselect = 81 [json_name = "RangeSubselect"]; inline bool Node::has_range_subselect() const { return node_case() == kRangeSubselect; } inline bool Node::_internal_has_range_subselect() const { return node_case() == kRangeSubselect; } inline void Node::set_has_range_subselect() { _impl_._oneof_case_[0] = kRangeSubselect; } inline void Node::clear_range_subselect() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRangeSubselect) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRangeSubselect) { clear_has_node(); auto* temp = _impl_.node_.range_subselect_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.range_subselect_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeSubselect& Node::_internal_range_subselect() const { return node_case() == kRangeSubselect ? *_impl_.node_.range_subselect_ : reinterpret_cast<::pg_query::RangeSubselect&>(::pg_query::_RangeSubselect_default_instance_); } inline const ::pg_query::RangeSubselect& Node::range_subselect() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRangeSubselect) { clear_has_node(); auto* temp = _impl_.node_.range_subselect_; _impl_.node_.range_subselect_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_subselect(::pg_query::RangeSubselect* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_range_subselect(); _impl_.node_.range_subselect_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_subselect) } inline ::pg_query::RangeSubselect* Node::_internal_mutable_range_subselect() { if (node_case() != kRangeSubselect) { clear_node(); set_has_range_subselect(); _impl_.node_.range_subselect_ = CreateMaybeMessage<::pg_query::RangeSubselect>(GetArena()); } return _impl_.node_.range_subselect_; } inline ::pg_query::RangeSubselect* Node::mutable_range_subselect() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeSubselect* _msg = _internal_mutable_range_subselect(); // @@protoc_insertion_point(field_mutable:pg_query.Node.range_subselect) return _msg; } // .pg_query.RangeFunction range_function = 82 [json_name = "RangeFunction"]; inline bool Node::has_range_function() const { return node_case() == kRangeFunction; } inline bool Node::_internal_has_range_function() const { return node_case() == kRangeFunction; } inline void Node::set_has_range_function() { _impl_._oneof_case_[0] = kRangeFunction; } inline void Node::clear_range_function() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRangeFunction) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRangeFunction) { clear_has_node(); auto* temp = _impl_.node_.range_function_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.range_function_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeFunction& Node::_internal_range_function() const { return node_case() == kRangeFunction ? *_impl_.node_.range_function_ : reinterpret_cast<::pg_query::RangeFunction&>(::pg_query::_RangeFunction_default_instance_); } inline const ::pg_query::RangeFunction& Node::range_function() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRangeFunction) { clear_has_node(); auto* temp = _impl_.node_.range_function_; _impl_.node_.range_function_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_function(::pg_query::RangeFunction* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_range_function(); _impl_.node_.range_function_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_function) } inline ::pg_query::RangeFunction* Node::_internal_mutable_range_function() { if (node_case() != kRangeFunction) { clear_node(); set_has_range_function(); _impl_.node_.range_function_ = CreateMaybeMessage<::pg_query::RangeFunction>(GetArena()); } return _impl_.node_.range_function_; } inline ::pg_query::RangeFunction* Node::mutable_range_function() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeFunction* _msg = _internal_mutable_range_function(); // @@protoc_insertion_point(field_mutable:pg_query.Node.range_function) return _msg; } // .pg_query.RangeTableFunc range_table_func = 83 [json_name = "RangeTableFunc"]; inline bool Node::has_range_table_func() const { return node_case() == kRangeTableFunc; } inline bool Node::_internal_has_range_table_func() const { return node_case() == kRangeTableFunc; } inline void Node::set_has_range_table_func() { _impl_._oneof_case_[0] = kRangeTableFunc; } inline void Node::clear_range_table_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRangeTableFunc) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRangeTableFunc) { clear_has_node(); auto* temp = _impl_.node_.range_table_func_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.range_table_func_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeTableFunc& Node::_internal_range_table_func() const { return node_case() == kRangeTableFunc ? *_impl_.node_.range_table_func_ : reinterpret_cast<::pg_query::RangeTableFunc&>(::pg_query::_RangeTableFunc_default_instance_); } inline const ::pg_query::RangeTableFunc& Node::range_table_func() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRangeTableFunc) { clear_has_node(); auto* temp = _impl_.node_.range_table_func_; _impl_.node_.range_table_func_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_table_func(::pg_query::RangeTableFunc* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_range_table_func(); _impl_.node_.range_table_func_ = value; } // @@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 (node_case() != kRangeTableFunc) { clear_node(); set_has_range_table_func(); _impl_.node_.range_table_func_ = CreateMaybeMessage<::pg_query::RangeTableFunc>(GetArena()); } return _impl_.node_.range_table_func_; } inline ::pg_query::RangeTableFunc* Node::mutable_range_table_func() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeTableFunc* _msg = _internal_mutable_range_table_func(); // @@protoc_insertion_point(field_mutable:pg_query.Node.range_table_func) return _msg; } // .pg_query.RangeTableFuncCol range_table_func_col = 84 [json_name = "RangeTableFuncCol"]; inline bool Node::has_range_table_func_col() const { return node_case() == kRangeTableFuncCol; } inline bool Node::_internal_has_range_table_func_col() const { return node_case() == kRangeTableFuncCol; } inline void Node::set_has_range_table_func_col() { _impl_._oneof_case_[0] = kRangeTableFuncCol; } inline void Node::clear_range_table_func_col() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRangeTableFuncCol) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRangeTableFuncCol) { clear_has_node(); auto* temp = _impl_.node_.range_table_func_col_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.range_table_func_col_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeTableFuncCol& Node::_internal_range_table_func_col() const { return node_case() == kRangeTableFuncCol ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRangeTableFuncCol) { clear_has_node(); auto* temp = _impl_.node_.range_table_func_col_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_range_table_func_col(); _impl_.node_.range_table_func_col_ = value; } // @@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 (node_case() != kRangeTableFuncCol) { clear_node(); set_has_range_table_func_col(); _impl_.node_.range_table_func_col_ = CreateMaybeMessage<::pg_query::RangeTableFuncCol>(GetArena()); } return _impl_.node_.range_table_func_col_; } inline ::pg_query::RangeTableFuncCol* Node::mutable_range_table_func_col() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeTableFuncCol* _msg = _internal_mutable_range_table_func_col(); // @@protoc_insertion_point(field_mutable:pg_query.Node.range_table_func_col) return _msg; } // .pg_query.RangeTableSample range_table_sample = 85 [json_name = "RangeTableSample"]; inline bool Node::has_range_table_sample() const { return node_case() == kRangeTableSample; } inline bool Node::_internal_has_range_table_sample() const { return node_case() == kRangeTableSample; } inline void Node::set_has_range_table_sample() { _impl_._oneof_case_[0] = kRangeTableSample; } inline void Node::clear_range_table_sample() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRangeTableSample) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRangeTableSample) { clear_has_node(); auto* temp = _impl_.node_.range_table_sample_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.range_table_sample_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeTableSample& Node::_internal_range_table_sample() const { return node_case() == kRangeTableSample ? *_impl_.node_.range_table_sample_ : reinterpret_cast<::pg_query::RangeTableSample&>(::pg_query::_RangeTableSample_default_instance_); } inline const ::pg_query::RangeTableSample& Node::range_table_sample() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRangeTableSample) { clear_has_node(); auto* temp = _impl_.node_.range_table_sample_; _impl_.node_.range_table_sample_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_table_sample(::pg_query::RangeTableSample* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_range_table_sample(); _impl_.node_.range_table_sample_ = value; } // @@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 (node_case() != kRangeTableSample) { clear_node(); set_has_range_table_sample(); _impl_.node_.range_table_sample_ = CreateMaybeMessage<::pg_query::RangeTableSample>(GetArena()); } return _impl_.node_.range_table_sample_; } inline ::pg_query::RangeTableSample* Node::mutable_range_table_sample() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeTableSample* _msg = _internal_mutable_range_table_sample(); // @@protoc_insertion_point(field_mutable:pg_query.Node.range_table_sample) return _msg; } // .pg_query.ColumnDef column_def = 86 [json_name = "ColumnDef"]; inline bool Node::has_column_def() const { return node_case() == kColumnDef; } inline bool Node::_internal_has_column_def() const { return node_case() == kColumnDef; } inline void Node::set_has_column_def() { _impl_._oneof_case_[0] = kColumnDef; } inline void Node::clear_column_def() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kColumnDef) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kColumnDef) { clear_has_node(); auto* temp = _impl_.node_.column_def_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.column_def_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ColumnDef& Node::_internal_column_def() const { return node_case() == kColumnDef ? *_impl_.node_.column_def_ : reinterpret_cast<::pg_query::ColumnDef&>(::pg_query::_ColumnDef_default_instance_); } inline const ::pg_query::ColumnDef& Node::column_def() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kColumnDef) { clear_has_node(); auto* temp = _impl_.node_.column_def_; _impl_.node_.column_def_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_column_def(::pg_query::ColumnDef* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_column_def(); _impl_.node_.column_def_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.column_def) } inline ::pg_query::ColumnDef* Node::_internal_mutable_column_def() { if (node_case() != kColumnDef) { clear_node(); set_has_column_def(); _impl_.node_.column_def_ = CreateMaybeMessage<::pg_query::ColumnDef>(GetArena()); } return _impl_.node_.column_def_; } inline ::pg_query::ColumnDef* Node::mutable_column_def() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ColumnDef* _msg = _internal_mutable_column_def(); // @@protoc_insertion_point(field_mutable:pg_query.Node.column_def) return _msg; } // .pg_query.TableLikeClause table_like_clause = 87 [json_name = "TableLikeClause"]; inline bool Node::has_table_like_clause() const { return node_case() == kTableLikeClause; } inline bool Node::_internal_has_table_like_clause() const { return node_case() == kTableLikeClause; } inline void Node::set_has_table_like_clause() { _impl_._oneof_case_[0] = kTableLikeClause; } inline void Node::clear_table_like_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kTableLikeClause) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kTableLikeClause) { clear_has_node(); auto* temp = _impl_.node_.table_like_clause_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.table_like_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TableLikeClause& Node::_internal_table_like_clause() const { return node_case() == kTableLikeClause ? *_impl_.node_.table_like_clause_ : reinterpret_cast<::pg_query::TableLikeClause&>(::pg_query::_TableLikeClause_default_instance_); } inline const ::pg_query::TableLikeClause& Node::table_like_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kTableLikeClause) { clear_has_node(); auto* temp = _impl_.node_.table_like_clause_; _impl_.node_.table_like_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_table_like_clause(::pg_query::TableLikeClause* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_table_like_clause(); _impl_.node_.table_like_clause_ = value; } // @@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 (node_case() != kTableLikeClause) { clear_node(); set_has_table_like_clause(); _impl_.node_.table_like_clause_ = CreateMaybeMessage<::pg_query::TableLikeClause>(GetArena()); } return _impl_.node_.table_like_clause_; } inline ::pg_query::TableLikeClause* Node::mutable_table_like_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TableLikeClause* _msg = _internal_mutable_table_like_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.table_like_clause) return _msg; } // .pg_query.IndexElem index_elem = 88 [json_name = "IndexElem"]; inline bool Node::has_index_elem() const { return node_case() == kIndexElem; } inline bool Node::_internal_has_index_elem() const { return node_case() == kIndexElem; } inline void Node::set_has_index_elem() { _impl_._oneof_case_[0] = kIndexElem; } inline void Node::clear_index_elem() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kIndexElem) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kIndexElem) { clear_has_node(); auto* temp = _impl_.node_.index_elem_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.index_elem_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::IndexElem& Node::_internal_index_elem() const { return node_case() == kIndexElem ? *_impl_.node_.index_elem_ : reinterpret_cast<::pg_query::IndexElem&>(::pg_query::_IndexElem_default_instance_); } inline const ::pg_query::IndexElem& Node::index_elem() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kIndexElem) { clear_has_node(); auto* temp = _impl_.node_.index_elem_; _impl_.node_.index_elem_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_index_elem(::pg_query::IndexElem* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_index_elem(); _impl_.node_.index_elem_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.index_elem) } inline ::pg_query::IndexElem* Node::_internal_mutable_index_elem() { if (node_case() != kIndexElem) { clear_node(); set_has_index_elem(); _impl_.node_.index_elem_ = CreateMaybeMessage<::pg_query::IndexElem>(GetArena()); } return _impl_.node_.index_elem_; } inline ::pg_query::IndexElem* Node::mutable_index_elem() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::IndexElem* _msg = _internal_mutable_index_elem(); // @@protoc_insertion_point(field_mutable:pg_query.Node.index_elem) return _msg; } // .pg_query.DefElem def_elem = 89 [json_name = "DefElem"]; inline bool Node::has_def_elem() const { return node_case() == kDefElem; } inline bool Node::_internal_has_def_elem() const { return node_case() == kDefElem; } inline void Node::set_has_def_elem() { _impl_._oneof_case_[0] = kDefElem; } inline void Node::clear_def_elem() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDefElem) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDefElem) { clear_has_node(); auto* temp = _impl_.node_.def_elem_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.def_elem_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DefElem& Node::_internal_def_elem() const { return node_case() == kDefElem ? *_impl_.node_.def_elem_ : reinterpret_cast<::pg_query::DefElem&>(::pg_query::_DefElem_default_instance_); } inline const ::pg_query::DefElem& Node::def_elem() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDefElem) { clear_has_node(); auto* temp = _impl_.node_.def_elem_; _impl_.node_.def_elem_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_def_elem(::pg_query::DefElem* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_def_elem(); _impl_.node_.def_elem_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.def_elem) } inline ::pg_query::DefElem* Node::_internal_mutable_def_elem() { if (node_case() != kDefElem) { clear_node(); set_has_def_elem(); _impl_.node_.def_elem_ = CreateMaybeMessage<::pg_query::DefElem>(GetArena()); } return _impl_.node_.def_elem_; } inline ::pg_query::DefElem* Node::mutable_def_elem() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DefElem* _msg = _internal_mutable_def_elem(); // @@protoc_insertion_point(field_mutable:pg_query.Node.def_elem) return _msg; } // .pg_query.LockingClause locking_clause = 90 [json_name = "LockingClause"]; inline bool Node::has_locking_clause() const { return node_case() == kLockingClause; } inline bool Node::_internal_has_locking_clause() const { return node_case() == kLockingClause; } inline void Node::set_has_locking_clause() { _impl_._oneof_case_[0] = kLockingClause; } inline void Node::clear_locking_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kLockingClause) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kLockingClause) { clear_has_node(); auto* temp = _impl_.node_.locking_clause_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.locking_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::LockingClause& Node::_internal_locking_clause() const { return node_case() == kLockingClause ? *_impl_.node_.locking_clause_ : reinterpret_cast<::pg_query::LockingClause&>(::pg_query::_LockingClause_default_instance_); } inline const ::pg_query::LockingClause& Node::locking_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kLockingClause) { clear_has_node(); auto* temp = _impl_.node_.locking_clause_; _impl_.node_.locking_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_locking_clause(::pg_query::LockingClause* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_locking_clause(); _impl_.node_.locking_clause_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.locking_clause) } inline ::pg_query::LockingClause* Node::_internal_mutable_locking_clause() { if (node_case() != kLockingClause) { clear_node(); set_has_locking_clause(); _impl_.node_.locking_clause_ = CreateMaybeMessage<::pg_query::LockingClause>(GetArena()); } return _impl_.node_.locking_clause_; } inline ::pg_query::LockingClause* Node::mutable_locking_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::LockingClause* _msg = _internal_mutable_locking_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.locking_clause) return _msg; } // .pg_query.XmlSerialize xml_serialize = 91 [json_name = "XmlSerialize"]; inline bool Node::has_xml_serialize() const { return node_case() == kXmlSerialize; } inline bool Node::_internal_has_xml_serialize() const { return node_case() == kXmlSerialize; } inline void Node::set_has_xml_serialize() { _impl_._oneof_case_[0] = kXmlSerialize; } inline void Node::clear_xml_serialize() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kXmlSerialize) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kXmlSerialize) { clear_has_node(); auto* temp = _impl_.node_.xml_serialize_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.xml_serialize_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::XmlSerialize& Node::_internal_xml_serialize() const { return node_case() == kXmlSerialize ? *_impl_.node_.xml_serialize_ : reinterpret_cast<::pg_query::XmlSerialize&>(::pg_query::_XmlSerialize_default_instance_); } inline const ::pg_query::XmlSerialize& Node::xml_serialize() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kXmlSerialize) { clear_has_node(); auto* temp = _impl_.node_.xml_serialize_; _impl_.node_.xml_serialize_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_xml_serialize(::pg_query::XmlSerialize* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_xml_serialize(); _impl_.node_.xml_serialize_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.xml_serialize) } inline ::pg_query::XmlSerialize* Node::_internal_mutable_xml_serialize() { if (node_case() != kXmlSerialize) { clear_node(); set_has_xml_serialize(); _impl_.node_.xml_serialize_ = CreateMaybeMessage<::pg_query::XmlSerialize>(GetArena()); } return _impl_.node_.xml_serialize_; } inline ::pg_query::XmlSerialize* Node::mutable_xml_serialize() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::XmlSerialize* _msg = _internal_mutable_xml_serialize(); // @@protoc_insertion_point(field_mutable:pg_query.Node.xml_serialize) return _msg; } // .pg_query.PartitionElem partition_elem = 92 [json_name = "PartitionElem"]; inline bool Node::has_partition_elem() const { return node_case() == kPartitionElem; } inline bool Node::_internal_has_partition_elem() const { return node_case() == kPartitionElem; } inline void Node::set_has_partition_elem() { _impl_._oneof_case_[0] = kPartitionElem; } inline void Node::clear_partition_elem() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kPartitionElem) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kPartitionElem) { clear_has_node(); auto* temp = _impl_.node_.partition_elem_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.partition_elem_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PartitionElem& Node::_internal_partition_elem() const { return node_case() == kPartitionElem ? *_impl_.node_.partition_elem_ : reinterpret_cast<::pg_query::PartitionElem&>(::pg_query::_PartitionElem_default_instance_); } inline const ::pg_query::PartitionElem& Node::partition_elem() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kPartitionElem) { clear_has_node(); auto* temp = _impl_.node_.partition_elem_; _impl_.node_.partition_elem_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_partition_elem(::pg_query::PartitionElem* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_partition_elem(); _impl_.node_.partition_elem_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_elem) } inline ::pg_query::PartitionElem* Node::_internal_mutable_partition_elem() { if (node_case() != kPartitionElem) { clear_node(); set_has_partition_elem(); _impl_.node_.partition_elem_ = CreateMaybeMessage<::pg_query::PartitionElem>(GetArena()); } return _impl_.node_.partition_elem_; } inline ::pg_query::PartitionElem* Node::mutable_partition_elem() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::PartitionElem* _msg = _internal_mutable_partition_elem(); // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_elem) return _msg; } // .pg_query.PartitionSpec partition_spec = 93 [json_name = "PartitionSpec"]; inline bool Node::has_partition_spec() const { return node_case() == kPartitionSpec; } inline bool Node::_internal_has_partition_spec() const { return node_case() == kPartitionSpec; } inline void Node::set_has_partition_spec() { _impl_._oneof_case_[0] = kPartitionSpec; } inline void Node::clear_partition_spec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kPartitionSpec) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kPartitionSpec) { clear_has_node(); auto* temp = _impl_.node_.partition_spec_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.partition_spec_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PartitionSpec& Node::_internal_partition_spec() const { return node_case() == kPartitionSpec ? *_impl_.node_.partition_spec_ : reinterpret_cast<::pg_query::PartitionSpec&>(::pg_query::_PartitionSpec_default_instance_); } inline const ::pg_query::PartitionSpec& Node::partition_spec() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kPartitionSpec) { clear_has_node(); auto* temp = _impl_.node_.partition_spec_; _impl_.node_.partition_spec_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_partition_spec(::pg_query::PartitionSpec* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_partition_spec(); _impl_.node_.partition_spec_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_spec) } inline ::pg_query::PartitionSpec* Node::_internal_mutable_partition_spec() { if (node_case() != kPartitionSpec) { clear_node(); set_has_partition_spec(); _impl_.node_.partition_spec_ = CreateMaybeMessage<::pg_query::PartitionSpec>(GetArena()); } return _impl_.node_.partition_spec_; } inline ::pg_query::PartitionSpec* Node::mutable_partition_spec() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::PartitionSpec* _msg = _internal_mutable_partition_spec(); // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_spec) return _msg; } // .pg_query.PartitionBoundSpec partition_bound_spec = 94 [json_name = "PartitionBoundSpec"]; inline bool Node::has_partition_bound_spec() const { return node_case() == kPartitionBoundSpec; } inline bool Node::_internal_has_partition_bound_spec() const { return node_case() == kPartitionBoundSpec; } inline void Node::set_has_partition_bound_spec() { _impl_._oneof_case_[0] = kPartitionBoundSpec; } inline void Node::clear_partition_bound_spec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kPartitionBoundSpec) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kPartitionBoundSpec) { clear_has_node(); auto* temp = _impl_.node_.partition_bound_spec_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.partition_bound_spec_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PartitionBoundSpec& Node::_internal_partition_bound_spec() const { return node_case() == kPartitionBoundSpec ? *_impl_.node_.partition_bound_spec_ : reinterpret_cast<::pg_query::PartitionBoundSpec&>(::pg_query::_PartitionBoundSpec_default_instance_); } inline const ::pg_query::PartitionBoundSpec& Node::partition_bound_spec() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kPartitionBoundSpec) { clear_has_node(); auto* temp = _impl_.node_.partition_bound_spec_; _impl_.node_.partition_bound_spec_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_partition_bound_spec(::pg_query::PartitionBoundSpec* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_partition_bound_spec(); _impl_.node_.partition_bound_spec_ = value; } // @@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 (node_case() != kPartitionBoundSpec) { clear_node(); set_has_partition_bound_spec(); _impl_.node_.partition_bound_spec_ = CreateMaybeMessage<::pg_query::PartitionBoundSpec>(GetArena()); } return _impl_.node_.partition_bound_spec_; } inline ::pg_query::PartitionBoundSpec* Node::mutable_partition_bound_spec() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::PartitionBoundSpec* _msg = _internal_mutable_partition_bound_spec(); // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_bound_spec) return _msg; } // .pg_query.PartitionRangeDatum partition_range_datum = 95 [json_name = "PartitionRangeDatum"]; inline bool Node::has_partition_range_datum() const { return node_case() == kPartitionRangeDatum; } inline bool Node::_internal_has_partition_range_datum() const { return node_case() == kPartitionRangeDatum; } inline void Node::set_has_partition_range_datum() { _impl_._oneof_case_[0] = kPartitionRangeDatum; } inline void Node::clear_partition_range_datum() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kPartitionRangeDatum) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kPartitionRangeDatum) { clear_has_node(); auto* temp = _impl_.node_.partition_range_datum_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.partition_range_datum_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PartitionRangeDatum& Node::_internal_partition_range_datum() const { return node_case() == kPartitionRangeDatum ? *_impl_.node_.partition_range_datum_ : reinterpret_cast<::pg_query::PartitionRangeDatum&>(::pg_query::_PartitionRangeDatum_default_instance_); } inline const ::pg_query::PartitionRangeDatum& Node::partition_range_datum() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kPartitionRangeDatum) { clear_has_node(); auto* temp = _impl_.node_.partition_range_datum_; _impl_.node_.partition_range_datum_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_partition_range_datum(::pg_query::PartitionRangeDatum* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_partition_range_datum(); _impl_.node_.partition_range_datum_ = value; } // @@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 (node_case() != kPartitionRangeDatum) { clear_node(); set_has_partition_range_datum(); _impl_.node_.partition_range_datum_ = CreateMaybeMessage<::pg_query::PartitionRangeDatum>(GetArena()); } return _impl_.node_.partition_range_datum_; } inline ::pg_query::PartitionRangeDatum* Node::mutable_partition_range_datum() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::PartitionRangeDatum* _msg = _internal_mutable_partition_range_datum(); // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_range_datum) return _msg; } // .pg_query.SinglePartitionSpec single_partition_spec = 96 [json_name = "SinglePartitionSpec"]; inline bool Node::has_single_partition_spec() const { return node_case() == kSinglePartitionSpec; } inline bool Node::_internal_has_single_partition_spec() const { return node_case() == kSinglePartitionSpec; } inline void Node::set_has_single_partition_spec() { _impl_._oneof_case_[0] = kSinglePartitionSpec; } inline void Node::clear_single_partition_spec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kSinglePartitionSpec) { if (GetArena() == nullptr) { delete _impl_.node_.single_partition_spec_; } clear_has_node(); } } inline ::pg_query::SinglePartitionSpec* Node::release_single_partition_spec() { // @@protoc_insertion_point(field_release:pg_query.Node.single_partition_spec) if (node_case() == kSinglePartitionSpec) { clear_has_node(); auto* temp = _impl_.node_.single_partition_spec_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.single_partition_spec_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SinglePartitionSpec& Node::_internal_single_partition_spec() const { return node_case() == kSinglePartitionSpec ? *_impl_.node_.single_partition_spec_ : reinterpret_cast<::pg_query::SinglePartitionSpec&>(::pg_query::_SinglePartitionSpec_default_instance_); } inline const ::pg_query::SinglePartitionSpec& Node::single_partition_spec() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.single_partition_spec) return _internal_single_partition_spec(); } inline ::pg_query::SinglePartitionSpec* Node::unsafe_arena_release_single_partition_spec() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.single_partition_spec) if (node_case() == kSinglePartitionSpec) { clear_has_node(); auto* temp = _impl_.node_.single_partition_spec_; _impl_.node_.single_partition_spec_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_single_partition_spec(::pg_query::SinglePartitionSpec* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_single_partition_spec(); _impl_.node_.single_partition_spec_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.single_partition_spec) } inline ::pg_query::SinglePartitionSpec* Node::_internal_mutable_single_partition_spec() { if (node_case() != kSinglePartitionSpec) { clear_node(); set_has_single_partition_spec(); _impl_.node_.single_partition_spec_ = CreateMaybeMessage<::pg_query::SinglePartitionSpec>(GetArena()); } return _impl_.node_.single_partition_spec_; } inline ::pg_query::SinglePartitionSpec* Node::mutable_single_partition_spec() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::SinglePartitionSpec* _msg = _internal_mutable_single_partition_spec(); // @@protoc_insertion_point(field_mutable:pg_query.Node.single_partition_spec) return _msg; } // .pg_query.PartitionCmd partition_cmd = 97 [json_name = "PartitionCmd"]; inline bool Node::has_partition_cmd() const { return node_case() == kPartitionCmd; } inline bool Node::_internal_has_partition_cmd() const { return node_case() == kPartitionCmd; } inline void Node::set_has_partition_cmd() { _impl_._oneof_case_[0] = kPartitionCmd; } inline void Node::clear_partition_cmd() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kPartitionCmd) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kPartitionCmd) { clear_has_node(); auto* temp = _impl_.node_.partition_cmd_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.partition_cmd_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PartitionCmd& Node::_internal_partition_cmd() const { return node_case() == kPartitionCmd ? *_impl_.node_.partition_cmd_ : reinterpret_cast<::pg_query::PartitionCmd&>(::pg_query::_PartitionCmd_default_instance_); } inline const ::pg_query::PartitionCmd& Node::partition_cmd() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kPartitionCmd) { clear_has_node(); auto* temp = _impl_.node_.partition_cmd_; _impl_.node_.partition_cmd_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_partition_cmd(::pg_query::PartitionCmd* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_partition_cmd(); _impl_.node_.partition_cmd_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_cmd) } inline ::pg_query::PartitionCmd* Node::_internal_mutable_partition_cmd() { if (node_case() != kPartitionCmd) { clear_node(); set_has_partition_cmd(); _impl_.node_.partition_cmd_ = CreateMaybeMessage<::pg_query::PartitionCmd>(GetArena()); } return _impl_.node_.partition_cmd_; } inline ::pg_query::PartitionCmd* Node::mutable_partition_cmd() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::PartitionCmd* _msg = _internal_mutable_partition_cmd(); // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_cmd) return _msg; } // .pg_query.RangeTblEntry range_tbl_entry = 98 [json_name = "RangeTblEntry"]; inline bool Node::has_range_tbl_entry() const { return node_case() == kRangeTblEntry; } inline bool Node::_internal_has_range_tbl_entry() const { return node_case() == kRangeTblEntry; } inline void Node::set_has_range_tbl_entry() { _impl_._oneof_case_[0] = kRangeTblEntry; } inline void Node::clear_range_tbl_entry() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRangeTblEntry) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRangeTblEntry) { clear_has_node(); auto* temp = _impl_.node_.range_tbl_entry_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.range_tbl_entry_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeTblEntry& Node::_internal_range_tbl_entry() const { return node_case() == kRangeTblEntry ? *_impl_.node_.range_tbl_entry_ : reinterpret_cast<::pg_query::RangeTblEntry&>(::pg_query::_RangeTblEntry_default_instance_); } inline const ::pg_query::RangeTblEntry& Node::range_tbl_entry() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRangeTblEntry) { clear_has_node(); auto* temp = _impl_.node_.range_tbl_entry_; _impl_.node_.range_tbl_entry_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_tbl_entry(::pg_query::RangeTblEntry* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_range_tbl_entry(); _impl_.node_.range_tbl_entry_ = value; } // @@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 (node_case() != kRangeTblEntry) { clear_node(); set_has_range_tbl_entry(); _impl_.node_.range_tbl_entry_ = CreateMaybeMessage<::pg_query::RangeTblEntry>(GetArena()); } return _impl_.node_.range_tbl_entry_; } inline ::pg_query::RangeTblEntry* Node::mutable_range_tbl_entry() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeTblEntry* _msg = _internal_mutable_range_tbl_entry(); // @@protoc_insertion_point(field_mutable:pg_query.Node.range_tbl_entry) return _msg; } // .pg_query.RTEPermissionInfo rtepermission_info = 99 [json_name = "RTEPermissionInfo"]; inline bool Node::has_rtepermission_info() const { return node_case() == kRtepermissionInfo; } inline bool Node::_internal_has_rtepermission_info() const { return node_case() == kRtepermissionInfo; } inline void Node::set_has_rtepermission_info() { _impl_._oneof_case_[0] = kRtepermissionInfo; } inline void Node::clear_rtepermission_info() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRtepermissionInfo) { if (GetArena() == nullptr) { delete _impl_.node_.rtepermission_info_; } clear_has_node(); } } inline ::pg_query::RTEPermissionInfo* Node::release_rtepermission_info() { // @@protoc_insertion_point(field_release:pg_query.Node.rtepermission_info) if (node_case() == kRtepermissionInfo) { clear_has_node(); auto* temp = _impl_.node_.rtepermission_info_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.rtepermission_info_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RTEPermissionInfo& Node::_internal_rtepermission_info() const { return node_case() == kRtepermissionInfo ? *_impl_.node_.rtepermission_info_ : reinterpret_cast<::pg_query::RTEPermissionInfo&>(::pg_query::_RTEPermissionInfo_default_instance_); } inline const ::pg_query::RTEPermissionInfo& Node::rtepermission_info() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.rtepermission_info) return _internal_rtepermission_info(); } inline ::pg_query::RTEPermissionInfo* Node::unsafe_arena_release_rtepermission_info() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.rtepermission_info) if (node_case() == kRtepermissionInfo) { clear_has_node(); auto* temp = _impl_.node_.rtepermission_info_; _impl_.node_.rtepermission_info_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_rtepermission_info(::pg_query::RTEPermissionInfo* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_rtepermission_info(); _impl_.node_.rtepermission_info_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.rtepermission_info) } inline ::pg_query::RTEPermissionInfo* Node::_internal_mutable_rtepermission_info() { if (node_case() != kRtepermissionInfo) { clear_node(); set_has_rtepermission_info(); _impl_.node_.rtepermission_info_ = CreateMaybeMessage<::pg_query::RTEPermissionInfo>(GetArena()); } return _impl_.node_.rtepermission_info_; } inline ::pg_query::RTEPermissionInfo* Node::mutable_rtepermission_info() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RTEPermissionInfo* _msg = _internal_mutable_rtepermission_info(); // @@protoc_insertion_point(field_mutable:pg_query.Node.rtepermission_info) return _msg; } // .pg_query.RangeTblFunction range_tbl_function = 100 [json_name = "RangeTblFunction"]; inline bool Node::has_range_tbl_function() const { return node_case() == kRangeTblFunction; } inline bool Node::_internal_has_range_tbl_function() const { return node_case() == kRangeTblFunction; } inline void Node::set_has_range_tbl_function() { _impl_._oneof_case_[0] = kRangeTblFunction; } inline void Node::clear_range_tbl_function() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRangeTblFunction) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRangeTblFunction) { clear_has_node(); auto* temp = _impl_.node_.range_tbl_function_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.range_tbl_function_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeTblFunction& Node::_internal_range_tbl_function() const { return node_case() == kRangeTblFunction ? *_impl_.node_.range_tbl_function_ : reinterpret_cast<::pg_query::RangeTblFunction&>(::pg_query::_RangeTblFunction_default_instance_); } inline const ::pg_query::RangeTblFunction& Node::range_tbl_function() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRangeTblFunction) { clear_has_node(); auto* temp = _impl_.node_.range_tbl_function_; _impl_.node_.range_tbl_function_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_tbl_function(::pg_query::RangeTblFunction* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_range_tbl_function(); _impl_.node_.range_tbl_function_ = value; } // @@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 (node_case() != kRangeTblFunction) { clear_node(); set_has_range_tbl_function(); _impl_.node_.range_tbl_function_ = CreateMaybeMessage<::pg_query::RangeTblFunction>(GetArena()); } return _impl_.node_.range_tbl_function_; } inline ::pg_query::RangeTblFunction* Node::mutable_range_tbl_function() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeTblFunction* _msg = _internal_mutable_range_tbl_function(); // @@protoc_insertion_point(field_mutable:pg_query.Node.range_tbl_function) return _msg; } // .pg_query.TableSampleClause table_sample_clause = 101 [json_name = "TableSampleClause"]; inline bool Node::has_table_sample_clause() const { return node_case() == kTableSampleClause; } inline bool Node::_internal_has_table_sample_clause() const { return node_case() == kTableSampleClause; } inline void Node::set_has_table_sample_clause() { _impl_._oneof_case_[0] = kTableSampleClause; } inline void Node::clear_table_sample_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kTableSampleClause) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kTableSampleClause) { clear_has_node(); auto* temp = _impl_.node_.table_sample_clause_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.table_sample_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TableSampleClause& Node::_internal_table_sample_clause() const { return node_case() == kTableSampleClause ? *_impl_.node_.table_sample_clause_ : reinterpret_cast<::pg_query::TableSampleClause&>(::pg_query::_TableSampleClause_default_instance_); } inline const ::pg_query::TableSampleClause& Node::table_sample_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kTableSampleClause) { clear_has_node(); auto* temp = _impl_.node_.table_sample_clause_; _impl_.node_.table_sample_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_table_sample_clause(::pg_query::TableSampleClause* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_table_sample_clause(); _impl_.node_.table_sample_clause_ = value; } // @@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 (node_case() != kTableSampleClause) { clear_node(); set_has_table_sample_clause(); _impl_.node_.table_sample_clause_ = CreateMaybeMessage<::pg_query::TableSampleClause>(GetArena()); } return _impl_.node_.table_sample_clause_; } inline ::pg_query::TableSampleClause* Node::mutable_table_sample_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TableSampleClause* _msg = _internal_mutable_table_sample_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.table_sample_clause) return _msg; } // .pg_query.WithCheckOption with_check_option = 102 [json_name = "WithCheckOption"]; inline bool Node::has_with_check_option() const { return node_case() == kWithCheckOption; } inline bool Node::_internal_has_with_check_option() const { return node_case() == kWithCheckOption; } inline void Node::set_has_with_check_option() { _impl_._oneof_case_[0] = kWithCheckOption; } inline void Node::clear_with_check_option() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kWithCheckOption) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kWithCheckOption) { clear_has_node(); auto* temp = _impl_.node_.with_check_option_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.with_check_option_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WithCheckOption& Node::_internal_with_check_option() const { return node_case() == kWithCheckOption ? *_impl_.node_.with_check_option_ : reinterpret_cast<::pg_query::WithCheckOption&>(::pg_query::_WithCheckOption_default_instance_); } inline const ::pg_query::WithCheckOption& Node::with_check_option() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kWithCheckOption) { clear_has_node(); auto* temp = _impl_.node_.with_check_option_; _impl_.node_.with_check_option_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_with_check_option(::pg_query::WithCheckOption* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_with_check_option(); _impl_.node_.with_check_option_ = value; } // @@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 (node_case() != kWithCheckOption) { clear_node(); set_has_with_check_option(); _impl_.node_.with_check_option_ = CreateMaybeMessage<::pg_query::WithCheckOption>(GetArena()); } return _impl_.node_.with_check_option_; } inline ::pg_query::WithCheckOption* Node::mutable_with_check_option() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::WithCheckOption* _msg = _internal_mutable_with_check_option(); // @@protoc_insertion_point(field_mutable:pg_query.Node.with_check_option) return _msg; } // .pg_query.SortGroupClause sort_group_clause = 103 [json_name = "SortGroupClause"]; inline bool Node::has_sort_group_clause() const { return node_case() == kSortGroupClause; } inline bool Node::_internal_has_sort_group_clause() const { return node_case() == kSortGroupClause; } inline void Node::set_has_sort_group_clause() { _impl_._oneof_case_[0] = kSortGroupClause; } inline void Node::clear_sort_group_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kSortGroupClause) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kSortGroupClause) { clear_has_node(); auto* temp = _impl_.node_.sort_group_clause_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.sort_group_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SortGroupClause& Node::_internal_sort_group_clause() const { return node_case() == kSortGroupClause ? *_impl_.node_.sort_group_clause_ : reinterpret_cast<::pg_query::SortGroupClause&>(::pg_query::_SortGroupClause_default_instance_); } inline const ::pg_query::SortGroupClause& Node::sort_group_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kSortGroupClause) { clear_has_node(); auto* temp = _impl_.node_.sort_group_clause_; _impl_.node_.sort_group_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_sort_group_clause(::pg_query::SortGroupClause* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_sort_group_clause(); _impl_.node_.sort_group_clause_ = value; } // @@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 (node_case() != kSortGroupClause) { clear_node(); set_has_sort_group_clause(); _impl_.node_.sort_group_clause_ = CreateMaybeMessage<::pg_query::SortGroupClause>(GetArena()); } return _impl_.node_.sort_group_clause_; } inline ::pg_query::SortGroupClause* Node::mutable_sort_group_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::SortGroupClause* _msg = _internal_mutable_sort_group_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.sort_group_clause) return _msg; } // .pg_query.GroupingSet grouping_set = 104 [json_name = "GroupingSet"]; inline bool Node::has_grouping_set() const { return node_case() == kGroupingSet; } inline bool Node::_internal_has_grouping_set() const { return node_case() == kGroupingSet; } inline void Node::set_has_grouping_set() { _impl_._oneof_case_[0] = kGroupingSet; } inline void Node::clear_grouping_set() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kGroupingSet) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kGroupingSet) { clear_has_node(); auto* temp = _impl_.node_.grouping_set_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.grouping_set_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::GroupingSet& Node::_internal_grouping_set() const { return node_case() == kGroupingSet ? *_impl_.node_.grouping_set_ : reinterpret_cast<::pg_query::GroupingSet&>(::pg_query::_GroupingSet_default_instance_); } inline const ::pg_query::GroupingSet& Node::grouping_set() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kGroupingSet) { clear_has_node(); auto* temp = _impl_.node_.grouping_set_; _impl_.node_.grouping_set_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_grouping_set(::pg_query::GroupingSet* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_grouping_set(); _impl_.node_.grouping_set_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grouping_set) } inline ::pg_query::GroupingSet* Node::_internal_mutable_grouping_set() { if (node_case() != kGroupingSet) { clear_node(); set_has_grouping_set(); _impl_.node_.grouping_set_ = CreateMaybeMessage<::pg_query::GroupingSet>(GetArena()); } return _impl_.node_.grouping_set_; } inline ::pg_query::GroupingSet* Node::mutable_grouping_set() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::GroupingSet* _msg = _internal_mutable_grouping_set(); // @@protoc_insertion_point(field_mutable:pg_query.Node.grouping_set) return _msg; } // .pg_query.WindowClause window_clause = 105 [json_name = "WindowClause"]; inline bool Node::has_window_clause() const { return node_case() == kWindowClause; } inline bool Node::_internal_has_window_clause() const { return node_case() == kWindowClause; } inline void Node::set_has_window_clause() { _impl_._oneof_case_[0] = kWindowClause; } inline void Node::clear_window_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kWindowClause) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kWindowClause) { clear_has_node(); auto* temp = _impl_.node_.window_clause_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.window_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WindowClause& Node::_internal_window_clause() const { return node_case() == kWindowClause ? *_impl_.node_.window_clause_ : reinterpret_cast<::pg_query::WindowClause&>(::pg_query::_WindowClause_default_instance_); } inline const ::pg_query::WindowClause& Node::window_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kWindowClause) { clear_has_node(); auto* temp = _impl_.node_.window_clause_; _impl_.node_.window_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_window_clause(::pg_query::WindowClause* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_window_clause(); _impl_.node_.window_clause_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.window_clause) } inline ::pg_query::WindowClause* Node::_internal_mutable_window_clause() { if (node_case() != kWindowClause) { clear_node(); set_has_window_clause(); _impl_.node_.window_clause_ = CreateMaybeMessage<::pg_query::WindowClause>(GetArena()); } return _impl_.node_.window_clause_; } inline ::pg_query::WindowClause* Node::mutable_window_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::WindowClause* _msg = _internal_mutable_window_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.window_clause) return _msg; } // .pg_query.RowMarkClause row_mark_clause = 106 [json_name = "RowMarkClause"]; inline bool Node::has_row_mark_clause() const { return node_case() == kRowMarkClause; } inline bool Node::_internal_has_row_mark_clause() const { return node_case() == kRowMarkClause; } inline void Node::set_has_row_mark_clause() { _impl_._oneof_case_[0] = kRowMarkClause; } inline void Node::clear_row_mark_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRowMarkClause) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRowMarkClause) { clear_has_node(); auto* temp = _impl_.node_.row_mark_clause_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.row_mark_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RowMarkClause& Node::_internal_row_mark_clause() const { return node_case() == kRowMarkClause ? *_impl_.node_.row_mark_clause_ : reinterpret_cast<::pg_query::RowMarkClause&>(::pg_query::_RowMarkClause_default_instance_); } inline const ::pg_query::RowMarkClause& Node::row_mark_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRowMarkClause) { clear_has_node(); auto* temp = _impl_.node_.row_mark_clause_; _impl_.node_.row_mark_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_row_mark_clause(::pg_query::RowMarkClause* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_row_mark_clause(); _impl_.node_.row_mark_clause_ = value; } // @@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 (node_case() != kRowMarkClause) { clear_node(); set_has_row_mark_clause(); _impl_.node_.row_mark_clause_ = CreateMaybeMessage<::pg_query::RowMarkClause>(GetArena()); } return _impl_.node_.row_mark_clause_; } inline ::pg_query::RowMarkClause* Node::mutable_row_mark_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RowMarkClause* _msg = _internal_mutable_row_mark_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.row_mark_clause) return _msg; } // .pg_query.WithClause with_clause = 107 [json_name = "WithClause"]; inline bool Node::has_with_clause() const { return node_case() == kWithClause; } inline bool Node::_internal_has_with_clause() const { return node_case() == kWithClause; } inline void Node::set_has_with_clause() { _impl_._oneof_case_[0] = kWithClause; } inline void Node::clear_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kWithClause) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kWithClause) { clear_has_node(); auto* temp = _impl_.node_.with_clause_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.with_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WithClause& Node::_internal_with_clause() const { return node_case() == kWithClause ? *_impl_.node_.with_clause_ : reinterpret_cast<::pg_query::WithClause&>(::pg_query::_WithClause_default_instance_); } inline const ::pg_query::WithClause& Node::with_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kWithClause) { clear_has_node(); auto* temp = _impl_.node_.with_clause_; _impl_.node_.with_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_with_clause(::pg_query::WithClause* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_with_clause(); _impl_.node_.with_clause_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.with_clause) } inline ::pg_query::WithClause* Node::_internal_mutable_with_clause() { if (node_case() != kWithClause) { clear_node(); set_has_with_clause(); _impl_.node_.with_clause_ = CreateMaybeMessage<::pg_query::WithClause>(GetArena()); } return _impl_.node_.with_clause_; } inline ::pg_query::WithClause* Node::mutable_with_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::WithClause* _msg = _internal_mutable_with_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.with_clause) return _msg; } // .pg_query.InferClause infer_clause = 108 [json_name = "InferClause"]; inline bool Node::has_infer_clause() const { return node_case() == kInferClause; } inline bool Node::_internal_has_infer_clause() const { return node_case() == kInferClause; } inline void Node::set_has_infer_clause() { _impl_._oneof_case_[0] = kInferClause; } inline void Node::clear_infer_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kInferClause) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kInferClause) { clear_has_node(); auto* temp = _impl_.node_.infer_clause_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.infer_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::InferClause& Node::_internal_infer_clause() const { return node_case() == kInferClause ? *_impl_.node_.infer_clause_ : reinterpret_cast<::pg_query::InferClause&>(::pg_query::_InferClause_default_instance_); } inline const ::pg_query::InferClause& Node::infer_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kInferClause) { clear_has_node(); auto* temp = _impl_.node_.infer_clause_; _impl_.node_.infer_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_infer_clause(::pg_query::InferClause* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_infer_clause(); _impl_.node_.infer_clause_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.infer_clause) } inline ::pg_query::InferClause* Node::_internal_mutable_infer_clause() { if (node_case() != kInferClause) { clear_node(); set_has_infer_clause(); _impl_.node_.infer_clause_ = CreateMaybeMessage<::pg_query::InferClause>(GetArena()); } return _impl_.node_.infer_clause_; } inline ::pg_query::InferClause* Node::mutable_infer_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::InferClause* _msg = _internal_mutable_infer_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.infer_clause) return _msg; } // .pg_query.OnConflictClause on_conflict_clause = 109 [json_name = "OnConflictClause"]; inline bool Node::has_on_conflict_clause() const { return node_case() == kOnConflictClause; } inline bool Node::_internal_has_on_conflict_clause() const { return node_case() == kOnConflictClause; } inline void Node::set_has_on_conflict_clause() { _impl_._oneof_case_[0] = kOnConflictClause; } inline void Node::clear_on_conflict_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kOnConflictClause) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kOnConflictClause) { clear_has_node(); auto* temp = _impl_.node_.on_conflict_clause_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.on_conflict_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::OnConflictClause& Node::_internal_on_conflict_clause() const { return node_case() == kOnConflictClause ? *_impl_.node_.on_conflict_clause_ : reinterpret_cast<::pg_query::OnConflictClause&>(::pg_query::_OnConflictClause_default_instance_); } inline const ::pg_query::OnConflictClause& Node::on_conflict_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kOnConflictClause) { clear_has_node(); auto* temp = _impl_.node_.on_conflict_clause_; _impl_.node_.on_conflict_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_on_conflict_clause(::pg_query::OnConflictClause* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_on_conflict_clause(); _impl_.node_.on_conflict_clause_ = value; } // @@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 (node_case() != kOnConflictClause) { clear_node(); set_has_on_conflict_clause(); _impl_.node_.on_conflict_clause_ = CreateMaybeMessage<::pg_query::OnConflictClause>(GetArena()); } return _impl_.node_.on_conflict_clause_; } inline ::pg_query::OnConflictClause* Node::mutable_on_conflict_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::OnConflictClause* _msg = _internal_mutable_on_conflict_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.on_conflict_clause) return _msg; } // .pg_query.CTESearchClause ctesearch_clause = 110 [json_name = "CTESearchClause"]; inline bool Node::has_ctesearch_clause() const { return node_case() == kCtesearchClause; } inline bool Node::_internal_has_ctesearch_clause() const { return node_case() == kCtesearchClause; } inline void Node::set_has_ctesearch_clause() { _impl_._oneof_case_[0] = kCtesearchClause; } inline void Node::clear_ctesearch_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCtesearchClause) { if (GetArena() == nullptr) { delete _impl_.node_.ctesearch_clause_; } clear_has_node(); } } inline ::pg_query::CTESearchClause* Node::release_ctesearch_clause() { // @@protoc_insertion_point(field_release:pg_query.Node.ctesearch_clause) if (node_case() == kCtesearchClause) { clear_has_node(); auto* temp = _impl_.node_.ctesearch_clause_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.ctesearch_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CTESearchClause& Node::_internal_ctesearch_clause() const { return node_case() == kCtesearchClause ? *_impl_.node_.ctesearch_clause_ : reinterpret_cast<::pg_query::CTESearchClause&>(::pg_query::_CTESearchClause_default_instance_); } inline const ::pg_query::CTESearchClause& Node::ctesearch_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.ctesearch_clause) return _internal_ctesearch_clause(); } inline ::pg_query::CTESearchClause* Node::unsafe_arena_release_ctesearch_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.ctesearch_clause) if (node_case() == kCtesearchClause) { clear_has_node(); auto* temp = _impl_.node_.ctesearch_clause_; _impl_.node_.ctesearch_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_ctesearch_clause(::pg_query::CTESearchClause* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_ctesearch_clause(); _impl_.node_.ctesearch_clause_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.ctesearch_clause) } inline ::pg_query::CTESearchClause* Node::_internal_mutable_ctesearch_clause() { if (node_case() != kCtesearchClause) { clear_node(); set_has_ctesearch_clause(); _impl_.node_.ctesearch_clause_ = CreateMaybeMessage<::pg_query::CTESearchClause>(GetArena()); } return _impl_.node_.ctesearch_clause_; } inline ::pg_query::CTESearchClause* Node::mutable_ctesearch_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CTESearchClause* _msg = _internal_mutable_ctesearch_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.ctesearch_clause) return _msg; } // .pg_query.CTECycleClause ctecycle_clause = 111 [json_name = "CTECycleClause"]; inline bool Node::has_ctecycle_clause() const { return node_case() == kCtecycleClause; } inline bool Node::_internal_has_ctecycle_clause() const { return node_case() == kCtecycleClause; } inline void Node::set_has_ctecycle_clause() { _impl_._oneof_case_[0] = kCtecycleClause; } inline void Node::clear_ctecycle_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCtecycleClause) { if (GetArena() == nullptr) { delete _impl_.node_.ctecycle_clause_; } clear_has_node(); } } inline ::pg_query::CTECycleClause* Node::release_ctecycle_clause() { // @@protoc_insertion_point(field_release:pg_query.Node.ctecycle_clause) if (node_case() == kCtecycleClause) { clear_has_node(); auto* temp = _impl_.node_.ctecycle_clause_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.ctecycle_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CTECycleClause& Node::_internal_ctecycle_clause() const { return node_case() == kCtecycleClause ? *_impl_.node_.ctecycle_clause_ : reinterpret_cast<::pg_query::CTECycleClause&>(::pg_query::_CTECycleClause_default_instance_); } inline const ::pg_query::CTECycleClause& Node::ctecycle_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.ctecycle_clause) return _internal_ctecycle_clause(); } inline ::pg_query::CTECycleClause* Node::unsafe_arena_release_ctecycle_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.ctecycle_clause) if (node_case() == kCtecycleClause) { clear_has_node(); auto* temp = _impl_.node_.ctecycle_clause_; _impl_.node_.ctecycle_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_ctecycle_clause(::pg_query::CTECycleClause* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_ctecycle_clause(); _impl_.node_.ctecycle_clause_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.ctecycle_clause) } inline ::pg_query::CTECycleClause* Node::_internal_mutable_ctecycle_clause() { if (node_case() != kCtecycleClause) { clear_node(); set_has_ctecycle_clause(); _impl_.node_.ctecycle_clause_ = CreateMaybeMessage<::pg_query::CTECycleClause>(GetArena()); } return _impl_.node_.ctecycle_clause_; } inline ::pg_query::CTECycleClause* Node::mutable_ctecycle_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CTECycleClause* _msg = _internal_mutable_ctecycle_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.ctecycle_clause) return _msg; } // .pg_query.CommonTableExpr common_table_expr = 112 [json_name = "CommonTableExpr"]; inline bool Node::has_common_table_expr() const { return node_case() == kCommonTableExpr; } inline bool Node::_internal_has_common_table_expr() const { return node_case() == kCommonTableExpr; } inline void Node::set_has_common_table_expr() { _impl_._oneof_case_[0] = kCommonTableExpr; } inline void Node::clear_common_table_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCommonTableExpr) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCommonTableExpr) { clear_has_node(); auto* temp = _impl_.node_.common_table_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.common_table_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CommonTableExpr& Node::_internal_common_table_expr() const { return node_case() == kCommonTableExpr ? *_impl_.node_.common_table_expr_ : reinterpret_cast<::pg_query::CommonTableExpr&>(::pg_query::_CommonTableExpr_default_instance_); } inline const ::pg_query::CommonTableExpr& Node::common_table_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCommonTableExpr) { clear_has_node(); auto* temp = _impl_.node_.common_table_expr_; _impl_.node_.common_table_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_common_table_expr(::pg_query::CommonTableExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_common_table_expr(); _impl_.node_.common_table_expr_ = value; } // @@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 (node_case() != kCommonTableExpr) { clear_node(); set_has_common_table_expr(); _impl_.node_.common_table_expr_ = CreateMaybeMessage<::pg_query::CommonTableExpr>(GetArena()); } return _impl_.node_.common_table_expr_; } inline ::pg_query::CommonTableExpr* Node::mutable_common_table_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CommonTableExpr* _msg = _internal_mutable_common_table_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.common_table_expr) return _msg; } // .pg_query.MergeWhenClause merge_when_clause = 113 [json_name = "MergeWhenClause"]; inline bool Node::has_merge_when_clause() const { return node_case() == kMergeWhenClause; } inline bool Node::_internal_has_merge_when_clause() const { return node_case() == kMergeWhenClause; } inline void Node::set_has_merge_when_clause() { _impl_._oneof_case_[0] = kMergeWhenClause; } inline void Node::clear_merge_when_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kMergeWhenClause) { if (GetArena() == nullptr) { delete _impl_.node_.merge_when_clause_; } clear_has_node(); } } inline ::pg_query::MergeWhenClause* Node::release_merge_when_clause() { // @@protoc_insertion_point(field_release:pg_query.Node.merge_when_clause) if (node_case() == kMergeWhenClause) { clear_has_node(); auto* temp = _impl_.node_.merge_when_clause_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.merge_when_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::MergeWhenClause& Node::_internal_merge_when_clause() const { return node_case() == kMergeWhenClause ? *_impl_.node_.merge_when_clause_ : reinterpret_cast<::pg_query::MergeWhenClause&>(::pg_query::_MergeWhenClause_default_instance_); } inline const ::pg_query::MergeWhenClause& Node::merge_when_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.merge_when_clause) return _internal_merge_when_clause(); } inline ::pg_query::MergeWhenClause* Node::unsafe_arena_release_merge_when_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.merge_when_clause) if (node_case() == kMergeWhenClause) { clear_has_node(); auto* temp = _impl_.node_.merge_when_clause_; _impl_.node_.merge_when_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_merge_when_clause(::pg_query::MergeWhenClause* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_merge_when_clause(); _impl_.node_.merge_when_clause_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.merge_when_clause) } inline ::pg_query::MergeWhenClause* Node::_internal_mutable_merge_when_clause() { if (node_case() != kMergeWhenClause) { clear_node(); set_has_merge_when_clause(); _impl_.node_.merge_when_clause_ = CreateMaybeMessage<::pg_query::MergeWhenClause>(GetArena()); } return _impl_.node_.merge_when_clause_; } inline ::pg_query::MergeWhenClause* Node::mutable_merge_when_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::MergeWhenClause* _msg = _internal_mutable_merge_when_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Node.merge_when_clause) return _msg; } // .pg_query.TriggerTransition trigger_transition = 114 [json_name = "TriggerTransition"]; inline bool Node::has_trigger_transition() const { return node_case() == kTriggerTransition; } inline bool Node::_internal_has_trigger_transition() const { return node_case() == kTriggerTransition; } inline void Node::set_has_trigger_transition() { _impl_._oneof_case_[0] = kTriggerTransition; } inline void Node::clear_trigger_transition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kTriggerTransition) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kTriggerTransition) { clear_has_node(); auto* temp = _impl_.node_.trigger_transition_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.trigger_transition_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TriggerTransition& Node::_internal_trigger_transition() const { return node_case() == kTriggerTransition ? *_impl_.node_.trigger_transition_ : reinterpret_cast<::pg_query::TriggerTransition&>(::pg_query::_TriggerTransition_default_instance_); } inline const ::pg_query::TriggerTransition& Node::trigger_transition() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kTriggerTransition) { clear_has_node(); auto* temp = _impl_.node_.trigger_transition_; _impl_.node_.trigger_transition_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_trigger_transition(::pg_query::TriggerTransition* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_trigger_transition(); _impl_.node_.trigger_transition_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.trigger_transition) } inline ::pg_query::TriggerTransition* Node::_internal_mutable_trigger_transition() { if (node_case() != kTriggerTransition) { clear_node(); set_has_trigger_transition(); _impl_.node_.trigger_transition_ = CreateMaybeMessage<::pg_query::TriggerTransition>(GetArena()); } return _impl_.node_.trigger_transition_; } inline ::pg_query::TriggerTransition* Node::mutable_trigger_transition() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TriggerTransition* _msg = _internal_mutable_trigger_transition(); // @@protoc_insertion_point(field_mutable:pg_query.Node.trigger_transition) return _msg; } // .pg_query.JsonOutput json_output = 115 [json_name = "JsonOutput"]; inline bool Node::has_json_output() const { return node_case() == kJsonOutput; } inline bool Node::_internal_has_json_output() const { return node_case() == kJsonOutput; } inline void Node::set_has_json_output() { _impl_._oneof_case_[0] = kJsonOutput; } inline void Node::clear_json_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonOutput) { if (GetArena() == nullptr) { delete _impl_.node_.json_output_; } clear_has_node(); } } inline ::pg_query::JsonOutput* Node::release_json_output() { // @@protoc_insertion_point(field_release:pg_query.Node.json_output) if (node_case() == kJsonOutput) { clear_has_node(); auto* temp = _impl_.node_.json_output_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_output_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonOutput& Node::_internal_json_output() const { return node_case() == kJsonOutput ? *_impl_.node_.json_output_ : reinterpret_cast<::pg_query::JsonOutput&>(::pg_query::_JsonOutput_default_instance_); } inline const ::pg_query::JsonOutput& Node::json_output() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_output) return _internal_json_output(); } inline ::pg_query::JsonOutput* Node::unsafe_arena_release_json_output() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_output) if (node_case() == kJsonOutput) { clear_has_node(); auto* temp = _impl_.node_.json_output_; _impl_.node_.json_output_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_output(::pg_query::JsonOutput* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_output(); _impl_.node_.json_output_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_output) } inline ::pg_query::JsonOutput* Node::_internal_mutable_json_output() { if (node_case() != kJsonOutput) { clear_node(); set_has_json_output(); _impl_.node_.json_output_ = CreateMaybeMessage<::pg_query::JsonOutput>(GetArena()); } return _impl_.node_.json_output_; } inline ::pg_query::JsonOutput* Node::mutable_json_output() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonOutput* _msg = _internal_mutable_json_output(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_output) return _msg; } // .pg_query.JsonArgument json_argument = 116 [json_name = "JsonArgument"]; inline bool Node::has_json_argument() const { return node_case() == kJsonArgument; } inline bool Node::_internal_has_json_argument() const { return node_case() == kJsonArgument; } inline void Node::set_has_json_argument() { _impl_._oneof_case_[0] = kJsonArgument; } inline void Node::clear_json_argument() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonArgument) { if (GetArena() == nullptr) { delete _impl_.node_.json_argument_; } clear_has_node(); } } inline ::pg_query::JsonArgument* Node::release_json_argument() { // @@protoc_insertion_point(field_release:pg_query.Node.json_argument) if (node_case() == kJsonArgument) { clear_has_node(); auto* temp = _impl_.node_.json_argument_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_argument_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonArgument& Node::_internal_json_argument() const { return node_case() == kJsonArgument ? *_impl_.node_.json_argument_ : reinterpret_cast<::pg_query::JsonArgument&>(::pg_query::_JsonArgument_default_instance_); } inline const ::pg_query::JsonArgument& Node::json_argument() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_argument) return _internal_json_argument(); } inline ::pg_query::JsonArgument* Node::unsafe_arena_release_json_argument() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_argument) if (node_case() == kJsonArgument) { clear_has_node(); auto* temp = _impl_.node_.json_argument_; _impl_.node_.json_argument_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_argument(::pg_query::JsonArgument* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_argument(); _impl_.node_.json_argument_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_argument) } inline ::pg_query::JsonArgument* Node::_internal_mutable_json_argument() { if (node_case() != kJsonArgument) { clear_node(); set_has_json_argument(); _impl_.node_.json_argument_ = CreateMaybeMessage<::pg_query::JsonArgument>(GetArena()); } return _impl_.node_.json_argument_; } inline ::pg_query::JsonArgument* Node::mutable_json_argument() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonArgument* _msg = _internal_mutable_json_argument(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_argument) return _msg; } // .pg_query.JsonFuncExpr json_func_expr = 117 [json_name = "JsonFuncExpr"]; inline bool Node::has_json_func_expr() const { return node_case() == kJsonFuncExpr; } inline bool Node::_internal_has_json_func_expr() const { return node_case() == kJsonFuncExpr; } inline void Node::set_has_json_func_expr() { _impl_._oneof_case_[0] = kJsonFuncExpr; } inline void Node::clear_json_func_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonFuncExpr) { if (GetArena() == nullptr) { delete _impl_.node_.json_func_expr_; } clear_has_node(); } } inline ::pg_query::JsonFuncExpr* Node::release_json_func_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.json_func_expr) if (node_case() == kJsonFuncExpr) { clear_has_node(); auto* temp = _impl_.node_.json_func_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_func_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonFuncExpr& Node::_internal_json_func_expr() const { return node_case() == kJsonFuncExpr ? *_impl_.node_.json_func_expr_ : reinterpret_cast<::pg_query::JsonFuncExpr&>(::pg_query::_JsonFuncExpr_default_instance_); } inline const ::pg_query::JsonFuncExpr& Node::json_func_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_func_expr) return _internal_json_func_expr(); } inline ::pg_query::JsonFuncExpr* Node::unsafe_arena_release_json_func_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_func_expr) if (node_case() == kJsonFuncExpr) { clear_has_node(); auto* temp = _impl_.node_.json_func_expr_; _impl_.node_.json_func_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_func_expr(::pg_query::JsonFuncExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_func_expr(); _impl_.node_.json_func_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_func_expr) } inline ::pg_query::JsonFuncExpr* Node::_internal_mutable_json_func_expr() { if (node_case() != kJsonFuncExpr) { clear_node(); set_has_json_func_expr(); _impl_.node_.json_func_expr_ = CreateMaybeMessage<::pg_query::JsonFuncExpr>(GetArena()); } return _impl_.node_.json_func_expr_; } inline ::pg_query::JsonFuncExpr* Node::mutable_json_func_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonFuncExpr* _msg = _internal_mutable_json_func_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_func_expr) return _msg; } // .pg_query.JsonTablePathSpec json_table_path_spec = 118 [json_name = "JsonTablePathSpec"]; inline bool Node::has_json_table_path_spec() const { return node_case() == kJsonTablePathSpec; } inline bool Node::_internal_has_json_table_path_spec() const { return node_case() == kJsonTablePathSpec; } inline void Node::set_has_json_table_path_spec() { _impl_._oneof_case_[0] = kJsonTablePathSpec; } inline void Node::clear_json_table_path_spec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonTablePathSpec) { if (GetArena() == nullptr) { delete _impl_.node_.json_table_path_spec_; } clear_has_node(); } } inline ::pg_query::JsonTablePathSpec* Node::release_json_table_path_spec() { // @@protoc_insertion_point(field_release:pg_query.Node.json_table_path_spec) if (node_case() == kJsonTablePathSpec) { clear_has_node(); auto* temp = _impl_.node_.json_table_path_spec_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_table_path_spec_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonTablePathSpec& Node::_internal_json_table_path_spec() const { return node_case() == kJsonTablePathSpec ? *_impl_.node_.json_table_path_spec_ : reinterpret_cast<::pg_query::JsonTablePathSpec&>(::pg_query::_JsonTablePathSpec_default_instance_); } inline const ::pg_query::JsonTablePathSpec& Node::json_table_path_spec() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_table_path_spec) return _internal_json_table_path_spec(); } inline ::pg_query::JsonTablePathSpec* Node::unsafe_arena_release_json_table_path_spec() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_table_path_spec) if (node_case() == kJsonTablePathSpec) { clear_has_node(); auto* temp = _impl_.node_.json_table_path_spec_; _impl_.node_.json_table_path_spec_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_table_path_spec(::pg_query::JsonTablePathSpec* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_table_path_spec(); _impl_.node_.json_table_path_spec_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_table_path_spec) } inline ::pg_query::JsonTablePathSpec* Node::_internal_mutable_json_table_path_spec() { if (node_case() != kJsonTablePathSpec) { clear_node(); set_has_json_table_path_spec(); _impl_.node_.json_table_path_spec_ = CreateMaybeMessage<::pg_query::JsonTablePathSpec>(GetArena()); } return _impl_.node_.json_table_path_spec_; } inline ::pg_query::JsonTablePathSpec* Node::mutable_json_table_path_spec() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonTablePathSpec* _msg = _internal_mutable_json_table_path_spec(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_table_path_spec) return _msg; } // .pg_query.JsonTable json_table = 119 [json_name = "JsonTable"]; inline bool Node::has_json_table() const { return node_case() == kJsonTable; } inline bool Node::_internal_has_json_table() const { return node_case() == kJsonTable; } inline void Node::set_has_json_table() { _impl_._oneof_case_[0] = kJsonTable; } inline void Node::clear_json_table() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonTable) { if (GetArena() == nullptr) { delete _impl_.node_.json_table_; } clear_has_node(); } } inline ::pg_query::JsonTable* Node::release_json_table() { // @@protoc_insertion_point(field_release:pg_query.Node.json_table) if (node_case() == kJsonTable) { clear_has_node(); auto* temp = _impl_.node_.json_table_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_table_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonTable& Node::_internal_json_table() const { return node_case() == kJsonTable ? *_impl_.node_.json_table_ : reinterpret_cast<::pg_query::JsonTable&>(::pg_query::_JsonTable_default_instance_); } inline const ::pg_query::JsonTable& Node::json_table() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_table) return _internal_json_table(); } inline ::pg_query::JsonTable* Node::unsafe_arena_release_json_table() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_table) if (node_case() == kJsonTable) { clear_has_node(); auto* temp = _impl_.node_.json_table_; _impl_.node_.json_table_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_table(::pg_query::JsonTable* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_table(); _impl_.node_.json_table_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_table) } inline ::pg_query::JsonTable* Node::_internal_mutable_json_table() { if (node_case() != kJsonTable) { clear_node(); set_has_json_table(); _impl_.node_.json_table_ = CreateMaybeMessage<::pg_query::JsonTable>(GetArena()); } return _impl_.node_.json_table_; } inline ::pg_query::JsonTable* Node::mutable_json_table() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonTable* _msg = _internal_mutable_json_table(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_table) return _msg; } // .pg_query.JsonTableColumn json_table_column = 120 [json_name = "JsonTableColumn"]; inline bool Node::has_json_table_column() const { return node_case() == kJsonTableColumn; } inline bool Node::_internal_has_json_table_column() const { return node_case() == kJsonTableColumn; } inline void Node::set_has_json_table_column() { _impl_._oneof_case_[0] = kJsonTableColumn; } inline void Node::clear_json_table_column() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonTableColumn) { if (GetArena() == nullptr) { delete _impl_.node_.json_table_column_; } clear_has_node(); } } inline ::pg_query::JsonTableColumn* Node::release_json_table_column() { // @@protoc_insertion_point(field_release:pg_query.Node.json_table_column) if (node_case() == kJsonTableColumn) { clear_has_node(); auto* temp = _impl_.node_.json_table_column_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_table_column_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonTableColumn& Node::_internal_json_table_column() const { return node_case() == kJsonTableColumn ? *_impl_.node_.json_table_column_ : reinterpret_cast<::pg_query::JsonTableColumn&>(::pg_query::_JsonTableColumn_default_instance_); } inline const ::pg_query::JsonTableColumn& Node::json_table_column() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_table_column) return _internal_json_table_column(); } inline ::pg_query::JsonTableColumn* Node::unsafe_arena_release_json_table_column() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_table_column) if (node_case() == kJsonTableColumn) { clear_has_node(); auto* temp = _impl_.node_.json_table_column_; _impl_.node_.json_table_column_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_table_column(::pg_query::JsonTableColumn* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_table_column(); _impl_.node_.json_table_column_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_table_column) } inline ::pg_query::JsonTableColumn* Node::_internal_mutable_json_table_column() { if (node_case() != kJsonTableColumn) { clear_node(); set_has_json_table_column(); _impl_.node_.json_table_column_ = CreateMaybeMessage<::pg_query::JsonTableColumn>(GetArena()); } return _impl_.node_.json_table_column_; } inline ::pg_query::JsonTableColumn* Node::mutable_json_table_column() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonTableColumn* _msg = _internal_mutable_json_table_column(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_table_column) return _msg; } // .pg_query.JsonKeyValue json_key_value = 121 [json_name = "JsonKeyValue"]; inline bool Node::has_json_key_value() const { return node_case() == kJsonKeyValue; } inline bool Node::_internal_has_json_key_value() const { return node_case() == kJsonKeyValue; } inline void Node::set_has_json_key_value() { _impl_._oneof_case_[0] = kJsonKeyValue; } inline void Node::clear_json_key_value() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonKeyValue) { if (GetArena() == nullptr) { delete _impl_.node_.json_key_value_; } clear_has_node(); } } inline ::pg_query::JsonKeyValue* Node::release_json_key_value() { // @@protoc_insertion_point(field_release:pg_query.Node.json_key_value) if (node_case() == kJsonKeyValue) { clear_has_node(); auto* temp = _impl_.node_.json_key_value_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_key_value_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonKeyValue& Node::_internal_json_key_value() const { return node_case() == kJsonKeyValue ? *_impl_.node_.json_key_value_ : reinterpret_cast<::pg_query::JsonKeyValue&>(::pg_query::_JsonKeyValue_default_instance_); } inline const ::pg_query::JsonKeyValue& Node::json_key_value() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_key_value) return _internal_json_key_value(); } inline ::pg_query::JsonKeyValue* Node::unsafe_arena_release_json_key_value() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_key_value) if (node_case() == kJsonKeyValue) { clear_has_node(); auto* temp = _impl_.node_.json_key_value_; _impl_.node_.json_key_value_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_key_value(::pg_query::JsonKeyValue* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_key_value(); _impl_.node_.json_key_value_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_key_value) } inline ::pg_query::JsonKeyValue* Node::_internal_mutable_json_key_value() { if (node_case() != kJsonKeyValue) { clear_node(); set_has_json_key_value(); _impl_.node_.json_key_value_ = CreateMaybeMessage<::pg_query::JsonKeyValue>(GetArena()); } return _impl_.node_.json_key_value_; } inline ::pg_query::JsonKeyValue* Node::mutable_json_key_value() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonKeyValue* _msg = _internal_mutable_json_key_value(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_key_value) return _msg; } // .pg_query.JsonParseExpr json_parse_expr = 122 [json_name = "JsonParseExpr"]; inline bool Node::has_json_parse_expr() const { return node_case() == kJsonParseExpr; } inline bool Node::_internal_has_json_parse_expr() const { return node_case() == kJsonParseExpr; } inline void Node::set_has_json_parse_expr() { _impl_._oneof_case_[0] = kJsonParseExpr; } inline void Node::clear_json_parse_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonParseExpr) { if (GetArena() == nullptr) { delete _impl_.node_.json_parse_expr_; } clear_has_node(); } } inline ::pg_query::JsonParseExpr* Node::release_json_parse_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.json_parse_expr) if (node_case() == kJsonParseExpr) { clear_has_node(); auto* temp = _impl_.node_.json_parse_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_parse_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonParseExpr& Node::_internal_json_parse_expr() const { return node_case() == kJsonParseExpr ? *_impl_.node_.json_parse_expr_ : reinterpret_cast<::pg_query::JsonParseExpr&>(::pg_query::_JsonParseExpr_default_instance_); } inline const ::pg_query::JsonParseExpr& Node::json_parse_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_parse_expr) return _internal_json_parse_expr(); } inline ::pg_query::JsonParseExpr* Node::unsafe_arena_release_json_parse_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_parse_expr) if (node_case() == kJsonParseExpr) { clear_has_node(); auto* temp = _impl_.node_.json_parse_expr_; _impl_.node_.json_parse_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_parse_expr(::pg_query::JsonParseExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_parse_expr(); _impl_.node_.json_parse_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_parse_expr) } inline ::pg_query::JsonParseExpr* Node::_internal_mutable_json_parse_expr() { if (node_case() != kJsonParseExpr) { clear_node(); set_has_json_parse_expr(); _impl_.node_.json_parse_expr_ = CreateMaybeMessage<::pg_query::JsonParseExpr>(GetArena()); } return _impl_.node_.json_parse_expr_; } inline ::pg_query::JsonParseExpr* Node::mutable_json_parse_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonParseExpr* _msg = _internal_mutable_json_parse_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_parse_expr) return _msg; } // .pg_query.JsonScalarExpr json_scalar_expr = 123 [json_name = "JsonScalarExpr"]; inline bool Node::has_json_scalar_expr() const { return node_case() == kJsonScalarExpr; } inline bool Node::_internal_has_json_scalar_expr() const { return node_case() == kJsonScalarExpr; } inline void Node::set_has_json_scalar_expr() { _impl_._oneof_case_[0] = kJsonScalarExpr; } inline void Node::clear_json_scalar_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonScalarExpr) { if (GetArena() == nullptr) { delete _impl_.node_.json_scalar_expr_; } clear_has_node(); } } inline ::pg_query::JsonScalarExpr* Node::release_json_scalar_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.json_scalar_expr) if (node_case() == kJsonScalarExpr) { clear_has_node(); auto* temp = _impl_.node_.json_scalar_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_scalar_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonScalarExpr& Node::_internal_json_scalar_expr() const { return node_case() == kJsonScalarExpr ? *_impl_.node_.json_scalar_expr_ : reinterpret_cast<::pg_query::JsonScalarExpr&>(::pg_query::_JsonScalarExpr_default_instance_); } inline const ::pg_query::JsonScalarExpr& Node::json_scalar_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_scalar_expr) return _internal_json_scalar_expr(); } inline ::pg_query::JsonScalarExpr* Node::unsafe_arena_release_json_scalar_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_scalar_expr) if (node_case() == kJsonScalarExpr) { clear_has_node(); auto* temp = _impl_.node_.json_scalar_expr_; _impl_.node_.json_scalar_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_scalar_expr(::pg_query::JsonScalarExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_scalar_expr(); _impl_.node_.json_scalar_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_scalar_expr) } inline ::pg_query::JsonScalarExpr* Node::_internal_mutable_json_scalar_expr() { if (node_case() != kJsonScalarExpr) { clear_node(); set_has_json_scalar_expr(); _impl_.node_.json_scalar_expr_ = CreateMaybeMessage<::pg_query::JsonScalarExpr>(GetArena()); } return _impl_.node_.json_scalar_expr_; } inline ::pg_query::JsonScalarExpr* Node::mutable_json_scalar_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonScalarExpr* _msg = _internal_mutable_json_scalar_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_scalar_expr) return _msg; } // .pg_query.JsonSerializeExpr json_serialize_expr = 124 [json_name = "JsonSerializeExpr"]; inline bool Node::has_json_serialize_expr() const { return node_case() == kJsonSerializeExpr; } inline bool Node::_internal_has_json_serialize_expr() const { return node_case() == kJsonSerializeExpr; } inline void Node::set_has_json_serialize_expr() { _impl_._oneof_case_[0] = kJsonSerializeExpr; } inline void Node::clear_json_serialize_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonSerializeExpr) { if (GetArena() == nullptr) { delete _impl_.node_.json_serialize_expr_; } clear_has_node(); } } inline ::pg_query::JsonSerializeExpr* Node::release_json_serialize_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.json_serialize_expr) if (node_case() == kJsonSerializeExpr) { clear_has_node(); auto* temp = _impl_.node_.json_serialize_expr_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_serialize_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonSerializeExpr& Node::_internal_json_serialize_expr() const { return node_case() == kJsonSerializeExpr ? *_impl_.node_.json_serialize_expr_ : reinterpret_cast<::pg_query::JsonSerializeExpr&>(::pg_query::_JsonSerializeExpr_default_instance_); } inline const ::pg_query::JsonSerializeExpr& Node::json_serialize_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_serialize_expr) return _internal_json_serialize_expr(); } inline ::pg_query::JsonSerializeExpr* Node::unsafe_arena_release_json_serialize_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_serialize_expr) if (node_case() == kJsonSerializeExpr) { clear_has_node(); auto* temp = _impl_.node_.json_serialize_expr_; _impl_.node_.json_serialize_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_serialize_expr(::pg_query::JsonSerializeExpr* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_serialize_expr(); _impl_.node_.json_serialize_expr_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_serialize_expr) } inline ::pg_query::JsonSerializeExpr* Node::_internal_mutable_json_serialize_expr() { if (node_case() != kJsonSerializeExpr) { clear_node(); set_has_json_serialize_expr(); _impl_.node_.json_serialize_expr_ = CreateMaybeMessage<::pg_query::JsonSerializeExpr>(GetArena()); } return _impl_.node_.json_serialize_expr_; } inline ::pg_query::JsonSerializeExpr* Node::mutable_json_serialize_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonSerializeExpr* _msg = _internal_mutable_json_serialize_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_serialize_expr) return _msg; } // .pg_query.JsonObjectConstructor json_object_constructor = 125 [json_name = "JsonObjectConstructor"]; inline bool Node::has_json_object_constructor() const { return node_case() == kJsonObjectConstructor; } inline bool Node::_internal_has_json_object_constructor() const { return node_case() == kJsonObjectConstructor; } inline void Node::set_has_json_object_constructor() { _impl_._oneof_case_[0] = kJsonObjectConstructor; } inline void Node::clear_json_object_constructor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonObjectConstructor) { if (GetArena() == nullptr) { delete _impl_.node_.json_object_constructor_; } clear_has_node(); } } inline ::pg_query::JsonObjectConstructor* Node::release_json_object_constructor() { // @@protoc_insertion_point(field_release:pg_query.Node.json_object_constructor) if (node_case() == kJsonObjectConstructor) { clear_has_node(); auto* temp = _impl_.node_.json_object_constructor_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_object_constructor_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonObjectConstructor& Node::_internal_json_object_constructor() const { return node_case() == kJsonObjectConstructor ? *_impl_.node_.json_object_constructor_ : reinterpret_cast<::pg_query::JsonObjectConstructor&>(::pg_query::_JsonObjectConstructor_default_instance_); } inline const ::pg_query::JsonObjectConstructor& Node::json_object_constructor() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_object_constructor) return _internal_json_object_constructor(); } inline ::pg_query::JsonObjectConstructor* Node::unsafe_arena_release_json_object_constructor() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_object_constructor) if (node_case() == kJsonObjectConstructor) { clear_has_node(); auto* temp = _impl_.node_.json_object_constructor_; _impl_.node_.json_object_constructor_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_object_constructor(::pg_query::JsonObjectConstructor* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_object_constructor(); _impl_.node_.json_object_constructor_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_object_constructor) } inline ::pg_query::JsonObjectConstructor* Node::_internal_mutable_json_object_constructor() { if (node_case() != kJsonObjectConstructor) { clear_node(); set_has_json_object_constructor(); _impl_.node_.json_object_constructor_ = CreateMaybeMessage<::pg_query::JsonObjectConstructor>(GetArena()); } return _impl_.node_.json_object_constructor_; } inline ::pg_query::JsonObjectConstructor* Node::mutable_json_object_constructor() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonObjectConstructor* _msg = _internal_mutable_json_object_constructor(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_object_constructor) return _msg; } // .pg_query.JsonArrayConstructor json_array_constructor = 126 [json_name = "JsonArrayConstructor"]; inline bool Node::has_json_array_constructor() const { return node_case() == kJsonArrayConstructor; } inline bool Node::_internal_has_json_array_constructor() const { return node_case() == kJsonArrayConstructor; } inline void Node::set_has_json_array_constructor() { _impl_._oneof_case_[0] = kJsonArrayConstructor; } inline void Node::clear_json_array_constructor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonArrayConstructor) { if (GetArena() == nullptr) { delete _impl_.node_.json_array_constructor_; } clear_has_node(); } } inline ::pg_query::JsonArrayConstructor* Node::release_json_array_constructor() { // @@protoc_insertion_point(field_release:pg_query.Node.json_array_constructor) if (node_case() == kJsonArrayConstructor) { clear_has_node(); auto* temp = _impl_.node_.json_array_constructor_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_array_constructor_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonArrayConstructor& Node::_internal_json_array_constructor() const { return node_case() == kJsonArrayConstructor ? *_impl_.node_.json_array_constructor_ : reinterpret_cast<::pg_query::JsonArrayConstructor&>(::pg_query::_JsonArrayConstructor_default_instance_); } inline const ::pg_query::JsonArrayConstructor& Node::json_array_constructor() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_array_constructor) return _internal_json_array_constructor(); } inline ::pg_query::JsonArrayConstructor* Node::unsafe_arena_release_json_array_constructor() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_array_constructor) if (node_case() == kJsonArrayConstructor) { clear_has_node(); auto* temp = _impl_.node_.json_array_constructor_; _impl_.node_.json_array_constructor_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_array_constructor(::pg_query::JsonArrayConstructor* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_array_constructor(); _impl_.node_.json_array_constructor_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_array_constructor) } inline ::pg_query::JsonArrayConstructor* Node::_internal_mutable_json_array_constructor() { if (node_case() != kJsonArrayConstructor) { clear_node(); set_has_json_array_constructor(); _impl_.node_.json_array_constructor_ = CreateMaybeMessage<::pg_query::JsonArrayConstructor>(GetArena()); } return _impl_.node_.json_array_constructor_; } inline ::pg_query::JsonArrayConstructor* Node::mutable_json_array_constructor() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonArrayConstructor* _msg = _internal_mutable_json_array_constructor(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_array_constructor) return _msg; } // .pg_query.JsonArrayQueryConstructor json_array_query_constructor = 127 [json_name = "JsonArrayQueryConstructor"]; inline bool Node::has_json_array_query_constructor() const { return node_case() == kJsonArrayQueryConstructor; } inline bool Node::_internal_has_json_array_query_constructor() const { return node_case() == kJsonArrayQueryConstructor; } inline void Node::set_has_json_array_query_constructor() { _impl_._oneof_case_[0] = kJsonArrayQueryConstructor; } inline void Node::clear_json_array_query_constructor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonArrayQueryConstructor) { if (GetArena() == nullptr) { delete _impl_.node_.json_array_query_constructor_; } clear_has_node(); } } inline ::pg_query::JsonArrayQueryConstructor* Node::release_json_array_query_constructor() { // @@protoc_insertion_point(field_release:pg_query.Node.json_array_query_constructor) if (node_case() == kJsonArrayQueryConstructor) { clear_has_node(); auto* temp = _impl_.node_.json_array_query_constructor_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_array_query_constructor_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonArrayQueryConstructor& Node::_internal_json_array_query_constructor() const { return node_case() == kJsonArrayQueryConstructor ? *_impl_.node_.json_array_query_constructor_ : reinterpret_cast<::pg_query::JsonArrayQueryConstructor&>(::pg_query::_JsonArrayQueryConstructor_default_instance_); } inline const ::pg_query::JsonArrayQueryConstructor& Node::json_array_query_constructor() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_array_query_constructor) return _internal_json_array_query_constructor(); } inline ::pg_query::JsonArrayQueryConstructor* Node::unsafe_arena_release_json_array_query_constructor() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_array_query_constructor) if (node_case() == kJsonArrayQueryConstructor) { clear_has_node(); auto* temp = _impl_.node_.json_array_query_constructor_; _impl_.node_.json_array_query_constructor_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_array_query_constructor(::pg_query::JsonArrayQueryConstructor* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_array_query_constructor(); _impl_.node_.json_array_query_constructor_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_array_query_constructor) } inline ::pg_query::JsonArrayQueryConstructor* Node::_internal_mutable_json_array_query_constructor() { if (node_case() != kJsonArrayQueryConstructor) { clear_node(); set_has_json_array_query_constructor(); _impl_.node_.json_array_query_constructor_ = CreateMaybeMessage<::pg_query::JsonArrayQueryConstructor>(GetArena()); } return _impl_.node_.json_array_query_constructor_; } inline ::pg_query::JsonArrayQueryConstructor* Node::mutable_json_array_query_constructor() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonArrayQueryConstructor* _msg = _internal_mutable_json_array_query_constructor(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_array_query_constructor) return _msg; } // .pg_query.JsonAggConstructor json_agg_constructor = 128 [json_name = "JsonAggConstructor"]; inline bool Node::has_json_agg_constructor() const { return node_case() == kJsonAggConstructor; } inline bool Node::_internal_has_json_agg_constructor() const { return node_case() == kJsonAggConstructor; } inline void Node::set_has_json_agg_constructor() { _impl_._oneof_case_[0] = kJsonAggConstructor; } inline void Node::clear_json_agg_constructor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonAggConstructor) { if (GetArena() == nullptr) { delete _impl_.node_.json_agg_constructor_; } clear_has_node(); } } inline ::pg_query::JsonAggConstructor* Node::release_json_agg_constructor() { // @@protoc_insertion_point(field_release:pg_query.Node.json_agg_constructor) if (node_case() == kJsonAggConstructor) { clear_has_node(); auto* temp = _impl_.node_.json_agg_constructor_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_agg_constructor_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonAggConstructor& Node::_internal_json_agg_constructor() const { return node_case() == kJsonAggConstructor ? *_impl_.node_.json_agg_constructor_ : reinterpret_cast<::pg_query::JsonAggConstructor&>(::pg_query::_JsonAggConstructor_default_instance_); } inline const ::pg_query::JsonAggConstructor& Node::json_agg_constructor() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_agg_constructor) return _internal_json_agg_constructor(); } inline ::pg_query::JsonAggConstructor* Node::unsafe_arena_release_json_agg_constructor() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_agg_constructor) if (node_case() == kJsonAggConstructor) { clear_has_node(); auto* temp = _impl_.node_.json_agg_constructor_; _impl_.node_.json_agg_constructor_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_agg_constructor(::pg_query::JsonAggConstructor* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_agg_constructor(); _impl_.node_.json_agg_constructor_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_agg_constructor) } inline ::pg_query::JsonAggConstructor* Node::_internal_mutable_json_agg_constructor() { if (node_case() != kJsonAggConstructor) { clear_node(); set_has_json_agg_constructor(); _impl_.node_.json_agg_constructor_ = CreateMaybeMessage<::pg_query::JsonAggConstructor>(GetArena()); } return _impl_.node_.json_agg_constructor_; } inline ::pg_query::JsonAggConstructor* Node::mutable_json_agg_constructor() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonAggConstructor* _msg = _internal_mutable_json_agg_constructor(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_agg_constructor) return _msg; } // .pg_query.JsonObjectAgg json_object_agg = 129 [json_name = "JsonObjectAgg"]; inline bool Node::has_json_object_agg() const { return node_case() == kJsonObjectAgg; } inline bool Node::_internal_has_json_object_agg() const { return node_case() == kJsonObjectAgg; } inline void Node::set_has_json_object_agg() { _impl_._oneof_case_[0] = kJsonObjectAgg; } inline void Node::clear_json_object_agg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonObjectAgg) { if (GetArena() == nullptr) { delete _impl_.node_.json_object_agg_; } clear_has_node(); } } inline ::pg_query::JsonObjectAgg* Node::release_json_object_agg() { // @@protoc_insertion_point(field_release:pg_query.Node.json_object_agg) if (node_case() == kJsonObjectAgg) { clear_has_node(); auto* temp = _impl_.node_.json_object_agg_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_object_agg_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonObjectAgg& Node::_internal_json_object_agg() const { return node_case() == kJsonObjectAgg ? *_impl_.node_.json_object_agg_ : reinterpret_cast<::pg_query::JsonObjectAgg&>(::pg_query::_JsonObjectAgg_default_instance_); } inline const ::pg_query::JsonObjectAgg& Node::json_object_agg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_object_agg) return _internal_json_object_agg(); } inline ::pg_query::JsonObjectAgg* Node::unsafe_arena_release_json_object_agg() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_object_agg) if (node_case() == kJsonObjectAgg) { clear_has_node(); auto* temp = _impl_.node_.json_object_agg_; _impl_.node_.json_object_agg_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_object_agg(::pg_query::JsonObjectAgg* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_object_agg(); _impl_.node_.json_object_agg_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_object_agg) } inline ::pg_query::JsonObjectAgg* Node::_internal_mutable_json_object_agg() { if (node_case() != kJsonObjectAgg) { clear_node(); set_has_json_object_agg(); _impl_.node_.json_object_agg_ = CreateMaybeMessage<::pg_query::JsonObjectAgg>(GetArena()); } return _impl_.node_.json_object_agg_; } inline ::pg_query::JsonObjectAgg* Node::mutable_json_object_agg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonObjectAgg* _msg = _internal_mutable_json_object_agg(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_object_agg) return _msg; } // .pg_query.JsonArrayAgg json_array_agg = 130 [json_name = "JsonArrayAgg"]; inline bool Node::has_json_array_agg() const { return node_case() == kJsonArrayAgg; } inline bool Node::_internal_has_json_array_agg() const { return node_case() == kJsonArrayAgg; } inline void Node::set_has_json_array_agg() { _impl_._oneof_case_[0] = kJsonArrayAgg; } inline void Node::clear_json_array_agg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kJsonArrayAgg) { if (GetArena() == nullptr) { delete _impl_.node_.json_array_agg_; } clear_has_node(); } } inline ::pg_query::JsonArrayAgg* Node::release_json_array_agg() { // @@protoc_insertion_point(field_release:pg_query.Node.json_array_agg) if (node_case() == kJsonArrayAgg) { clear_has_node(); auto* temp = _impl_.node_.json_array_agg_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.json_array_agg_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JsonArrayAgg& Node::_internal_json_array_agg() const { return node_case() == kJsonArrayAgg ? *_impl_.node_.json_array_agg_ : reinterpret_cast<::pg_query::JsonArrayAgg&>(::pg_query::_JsonArrayAgg_default_instance_); } inline const ::pg_query::JsonArrayAgg& Node::json_array_agg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.json_array_agg) return _internal_json_array_agg(); } inline ::pg_query::JsonArrayAgg* Node::unsafe_arena_release_json_array_agg() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.json_array_agg) if (node_case() == kJsonArrayAgg) { clear_has_node(); auto* temp = _impl_.node_.json_array_agg_; _impl_.node_.json_array_agg_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_json_array_agg(::pg_query::JsonArrayAgg* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_json_array_agg(); _impl_.node_.json_array_agg_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.json_array_agg) } inline ::pg_query::JsonArrayAgg* Node::_internal_mutable_json_array_agg() { if (node_case() != kJsonArrayAgg) { clear_node(); set_has_json_array_agg(); _impl_.node_.json_array_agg_ = CreateMaybeMessage<::pg_query::JsonArrayAgg>(GetArena()); } return _impl_.node_.json_array_agg_; } inline ::pg_query::JsonArrayAgg* Node::mutable_json_array_agg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonArrayAgg* _msg = _internal_mutable_json_array_agg(); // @@protoc_insertion_point(field_mutable:pg_query.Node.json_array_agg) return _msg; } // .pg_query.RawStmt raw_stmt = 131 [json_name = "RawStmt"]; inline bool Node::has_raw_stmt() const { return node_case() == kRawStmt; } inline bool Node::_internal_has_raw_stmt() const { return node_case() == kRawStmt; } inline void Node::set_has_raw_stmt() { _impl_._oneof_case_[0] = kRawStmt; } inline void Node::clear_raw_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRawStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRawStmt) { clear_has_node(); auto* temp = _impl_.node_.raw_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.raw_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RawStmt& Node::_internal_raw_stmt() const { return node_case() == kRawStmt ? *_impl_.node_.raw_stmt_ : reinterpret_cast<::pg_query::RawStmt&>(::pg_query::_RawStmt_default_instance_); } inline const ::pg_query::RawStmt& Node::raw_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRawStmt) { clear_has_node(); auto* temp = _impl_.node_.raw_stmt_; _impl_.node_.raw_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_raw_stmt(::pg_query::RawStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_raw_stmt(); _impl_.node_.raw_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.raw_stmt) } inline ::pg_query::RawStmt* Node::_internal_mutable_raw_stmt() { if (node_case() != kRawStmt) { clear_node(); set_has_raw_stmt(); _impl_.node_.raw_stmt_ = CreateMaybeMessage<::pg_query::RawStmt>(GetArena()); } return _impl_.node_.raw_stmt_; } inline ::pg_query::RawStmt* Node::mutable_raw_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RawStmt* _msg = _internal_mutable_raw_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.raw_stmt) return _msg; } // .pg_query.InsertStmt insert_stmt = 132 [json_name = "InsertStmt"]; inline bool Node::has_insert_stmt() const { return node_case() == kInsertStmt; } inline bool Node::_internal_has_insert_stmt() const { return node_case() == kInsertStmt; } inline void Node::set_has_insert_stmt() { _impl_._oneof_case_[0] = kInsertStmt; } inline void Node::clear_insert_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kInsertStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kInsertStmt) { clear_has_node(); auto* temp = _impl_.node_.insert_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.insert_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::InsertStmt& Node::_internal_insert_stmt() const { return node_case() == kInsertStmt ? *_impl_.node_.insert_stmt_ : reinterpret_cast<::pg_query::InsertStmt&>(::pg_query::_InsertStmt_default_instance_); } inline const ::pg_query::InsertStmt& Node::insert_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kInsertStmt) { clear_has_node(); auto* temp = _impl_.node_.insert_stmt_; _impl_.node_.insert_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_insert_stmt(::pg_query::InsertStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_insert_stmt(); _impl_.node_.insert_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.insert_stmt) } inline ::pg_query::InsertStmt* Node::_internal_mutable_insert_stmt() { if (node_case() != kInsertStmt) { clear_node(); set_has_insert_stmt(); _impl_.node_.insert_stmt_ = CreateMaybeMessage<::pg_query::InsertStmt>(GetArena()); } return _impl_.node_.insert_stmt_; } inline ::pg_query::InsertStmt* Node::mutable_insert_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::InsertStmt* _msg = _internal_mutable_insert_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.insert_stmt) return _msg; } // .pg_query.DeleteStmt delete_stmt = 133 [json_name = "DeleteStmt"]; inline bool Node::has_delete_stmt() const { return node_case() == kDeleteStmt; } inline bool Node::_internal_has_delete_stmt() const { return node_case() == kDeleteStmt; } inline void Node::set_has_delete_stmt() { _impl_._oneof_case_[0] = kDeleteStmt; } inline void Node::clear_delete_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDeleteStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDeleteStmt) { clear_has_node(); auto* temp = _impl_.node_.delete_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.delete_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DeleteStmt& Node::_internal_delete_stmt() const { return node_case() == kDeleteStmt ? *_impl_.node_.delete_stmt_ : reinterpret_cast<::pg_query::DeleteStmt&>(::pg_query::_DeleteStmt_default_instance_); } inline const ::pg_query::DeleteStmt& Node::delete_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDeleteStmt) { clear_has_node(); auto* temp = _impl_.node_.delete_stmt_; _impl_.node_.delete_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_delete_stmt(::pg_query::DeleteStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_delete_stmt(); _impl_.node_.delete_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.delete_stmt) } inline ::pg_query::DeleteStmt* Node::_internal_mutable_delete_stmt() { if (node_case() != kDeleteStmt) { clear_node(); set_has_delete_stmt(); _impl_.node_.delete_stmt_ = CreateMaybeMessage<::pg_query::DeleteStmt>(GetArena()); } return _impl_.node_.delete_stmt_; } inline ::pg_query::DeleteStmt* Node::mutable_delete_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DeleteStmt* _msg = _internal_mutable_delete_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.delete_stmt) return _msg; } // .pg_query.UpdateStmt update_stmt = 134 [json_name = "UpdateStmt"]; inline bool Node::has_update_stmt() const { return node_case() == kUpdateStmt; } inline bool Node::_internal_has_update_stmt() const { return node_case() == kUpdateStmt; } inline void Node::set_has_update_stmt() { _impl_._oneof_case_[0] = kUpdateStmt; } inline void Node::clear_update_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kUpdateStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kUpdateStmt) { clear_has_node(); auto* temp = _impl_.node_.update_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.update_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::UpdateStmt& Node::_internal_update_stmt() const { return node_case() == kUpdateStmt ? *_impl_.node_.update_stmt_ : reinterpret_cast<::pg_query::UpdateStmt&>(::pg_query::_UpdateStmt_default_instance_); } inline const ::pg_query::UpdateStmt& Node::update_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kUpdateStmt) { clear_has_node(); auto* temp = _impl_.node_.update_stmt_; _impl_.node_.update_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_update_stmt(::pg_query::UpdateStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_update_stmt(); _impl_.node_.update_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.update_stmt) } inline ::pg_query::UpdateStmt* Node::_internal_mutable_update_stmt() { if (node_case() != kUpdateStmt) { clear_node(); set_has_update_stmt(); _impl_.node_.update_stmt_ = CreateMaybeMessage<::pg_query::UpdateStmt>(GetArena()); } return _impl_.node_.update_stmt_; } inline ::pg_query::UpdateStmt* Node::mutable_update_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::UpdateStmt* _msg = _internal_mutable_update_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.update_stmt) return _msg; } // .pg_query.MergeStmt merge_stmt = 135 [json_name = "MergeStmt"]; inline bool Node::has_merge_stmt() const { return node_case() == kMergeStmt; } inline bool Node::_internal_has_merge_stmt() const { return node_case() == kMergeStmt; } inline void Node::set_has_merge_stmt() { _impl_._oneof_case_[0] = kMergeStmt; } inline void Node::clear_merge_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kMergeStmt) { if (GetArena() == nullptr) { delete _impl_.node_.merge_stmt_; } clear_has_node(); } } inline ::pg_query::MergeStmt* Node::release_merge_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.merge_stmt) if (node_case() == kMergeStmt) { clear_has_node(); auto* temp = _impl_.node_.merge_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.merge_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::MergeStmt& Node::_internal_merge_stmt() const { return node_case() == kMergeStmt ? *_impl_.node_.merge_stmt_ : reinterpret_cast<::pg_query::MergeStmt&>(::pg_query::_MergeStmt_default_instance_); } inline const ::pg_query::MergeStmt& Node::merge_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.merge_stmt) return _internal_merge_stmt(); } inline ::pg_query::MergeStmt* Node::unsafe_arena_release_merge_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.merge_stmt) if (node_case() == kMergeStmt) { clear_has_node(); auto* temp = _impl_.node_.merge_stmt_; _impl_.node_.merge_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_merge_stmt(::pg_query::MergeStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_merge_stmt(); _impl_.node_.merge_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.merge_stmt) } inline ::pg_query::MergeStmt* Node::_internal_mutable_merge_stmt() { if (node_case() != kMergeStmt) { clear_node(); set_has_merge_stmt(); _impl_.node_.merge_stmt_ = CreateMaybeMessage<::pg_query::MergeStmt>(GetArena()); } return _impl_.node_.merge_stmt_; } inline ::pg_query::MergeStmt* Node::mutable_merge_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::MergeStmt* _msg = _internal_mutable_merge_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.merge_stmt) return _msg; } // .pg_query.SelectStmt select_stmt = 136 [json_name = "SelectStmt"]; inline bool Node::has_select_stmt() const { return node_case() == kSelectStmt; } inline bool Node::_internal_has_select_stmt() const { return node_case() == kSelectStmt; } inline void Node::set_has_select_stmt() { _impl_._oneof_case_[0] = kSelectStmt; } inline void Node::clear_select_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kSelectStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kSelectStmt) { clear_has_node(); auto* temp = _impl_.node_.select_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.select_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SelectStmt& Node::_internal_select_stmt() const { return node_case() == kSelectStmt ? *_impl_.node_.select_stmt_ : reinterpret_cast<::pg_query::SelectStmt&>(::pg_query::_SelectStmt_default_instance_); } inline const ::pg_query::SelectStmt& Node::select_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kSelectStmt) { clear_has_node(); auto* temp = _impl_.node_.select_stmt_; _impl_.node_.select_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_select_stmt(::pg_query::SelectStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_select_stmt(); _impl_.node_.select_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.select_stmt) } inline ::pg_query::SelectStmt* Node::_internal_mutable_select_stmt() { if (node_case() != kSelectStmt) { clear_node(); set_has_select_stmt(); _impl_.node_.select_stmt_ = CreateMaybeMessage<::pg_query::SelectStmt>(GetArena()); } return _impl_.node_.select_stmt_; } inline ::pg_query::SelectStmt* Node::mutable_select_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::SelectStmt* _msg = _internal_mutable_select_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.select_stmt) return _msg; } // .pg_query.SetOperationStmt set_operation_stmt = 137 [json_name = "SetOperationStmt"]; inline bool Node::has_set_operation_stmt() const { return node_case() == kSetOperationStmt; } inline bool Node::_internal_has_set_operation_stmt() const { return node_case() == kSetOperationStmt; } inline void Node::set_has_set_operation_stmt() { _impl_._oneof_case_[0] = kSetOperationStmt; } inline void Node::clear_set_operation_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kSetOperationStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kSetOperationStmt) { clear_has_node(); auto* temp = _impl_.node_.set_operation_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.set_operation_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SetOperationStmt& Node::_internal_set_operation_stmt() const { return node_case() == kSetOperationStmt ? *_impl_.node_.set_operation_stmt_ : reinterpret_cast<::pg_query::SetOperationStmt&>(::pg_query::_SetOperationStmt_default_instance_); } inline const ::pg_query::SetOperationStmt& Node::set_operation_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kSetOperationStmt) { clear_has_node(); auto* temp = _impl_.node_.set_operation_stmt_; _impl_.node_.set_operation_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_set_operation_stmt(::pg_query::SetOperationStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_set_operation_stmt(); _impl_.node_.set_operation_stmt_ = value; } // @@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 (node_case() != kSetOperationStmt) { clear_node(); set_has_set_operation_stmt(); _impl_.node_.set_operation_stmt_ = CreateMaybeMessage<::pg_query::SetOperationStmt>(GetArena()); } return _impl_.node_.set_operation_stmt_; } inline ::pg_query::SetOperationStmt* Node::mutable_set_operation_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::SetOperationStmt* _msg = _internal_mutable_set_operation_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.set_operation_stmt) return _msg; } // .pg_query.ReturnStmt return_stmt = 138 [json_name = "ReturnStmt"]; inline bool Node::has_return_stmt() const { return node_case() == kReturnStmt; } inline bool Node::_internal_has_return_stmt() const { return node_case() == kReturnStmt; } inline void Node::set_has_return_stmt() { _impl_._oneof_case_[0] = kReturnStmt; } inline void Node::clear_return_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kReturnStmt) { if (GetArena() == nullptr) { delete _impl_.node_.return_stmt_; } clear_has_node(); } } inline ::pg_query::ReturnStmt* Node::release_return_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.return_stmt) if (node_case() == kReturnStmt) { clear_has_node(); auto* temp = _impl_.node_.return_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.return_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ReturnStmt& Node::_internal_return_stmt() const { return node_case() == kReturnStmt ? *_impl_.node_.return_stmt_ : reinterpret_cast<::pg_query::ReturnStmt&>(::pg_query::_ReturnStmt_default_instance_); } inline const ::pg_query::ReturnStmt& Node::return_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.return_stmt) return _internal_return_stmt(); } inline ::pg_query::ReturnStmt* Node::unsafe_arena_release_return_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.return_stmt) if (node_case() == kReturnStmt) { clear_has_node(); auto* temp = _impl_.node_.return_stmt_; _impl_.node_.return_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_return_stmt(::pg_query::ReturnStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_return_stmt(); _impl_.node_.return_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.return_stmt) } inline ::pg_query::ReturnStmt* Node::_internal_mutable_return_stmt() { if (node_case() != kReturnStmt) { clear_node(); set_has_return_stmt(); _impl_.node_.return_stmt_ = CreateMaybeMessage<::pg_query::ReturnStmt>(GetArena()); } return _impl_.node_.return_stmt_; } inline ::pg_query::ReturnStmt* Node::mutable_return_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ReturnStmt* _msg = _internal_mutable_return_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.return_stmt) return _msg; } // .pg_query.PLAssignStmt plassign_stmt = 139 [json_name = "PLAssignStmt"]; inline bool Node::has_plassign_stmt() const { return node_case() == kPlassignStmt; } inline bool Node::_internal_has_plassign_stmt() const { return node_case() == kPlassignStmt; } inline void Node::set_has_plassign_stmt() { _impl_._oneof_case_[0] = kPlassignStmt; } inline void Node::clear_plassign_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kPlassignStmt) { if (GetArena() == nullptr) { delete _impl_.node_.plassign_stmt_; } clear_has_node(); } } inline ::pg_query::PLAssignStmt* Node::release_plassign_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.plassign_stmt) if (node_case() == kPlassignStmt) { clear_has_node(); auto* temp = _impl_.node_.plassign_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.plassign_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PLAssignStmt& Node::_internal_plassign_stmt() const { return node_case() == kPlassignStmt ? *_impl_.node_.plassign_stmt_ : reinterpret_cast<::pg_query::PLAssignStmt&>(::pg_query::_PLAssignStmt_default_instance_); } inline const ::pg_query::PLAssignStmt& Node::plassign_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.plassign_stmt) return _internal_plassign_stmt(); } inline ::pg_query::PLAssignStmt* Node::unsafe_arena_release_plassign_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.plassign_stmt) if (node_case() == kPlassignStmt) { clear_has_node(); auto* temp = _impl_.node_.plassign_stmt_; _impl_.node_.plassign_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_plassign_stmt(::pg_query::PLAssignStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_plassign_stmt(); _impl_.node_.plassign_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.plassign_stmt) } inline ::pg_query::PLAssignStmt* Node::_internal_mutable_plassign_stmt() { if (node_case() != kPlassignStmt) { clear_node(); set_has_plassign_stmt(); _impl_.node_.plassign_stmt_ = CreateMaybeMessage<::pg_query::PLAssignStmt>(GetArena()); } return _impl_.node_.plassign_stmt_; } inline ::pg_query::PLAssignStmt* Node::mutable_plassign_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::PLAssignStmt* _msg = _internal_mutable_plassign_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.plassign_stmt) return _msg; } // .pg_query.CreateSchemaStmt create_schema_stmt = 140 [json_name = "CreateSchemaStmt"]; inline bool Node::has_create_schema_stmt() const { return node_case() == kCreateSchemaStmt; } inline bool Node::_internal_has_create_schema_stmt() const { return node_case() == kCreateSchemaStmt; } inline void Node::set_has_create_schema_stmt() { _impl_._oneof_case_[0] = kCreateSchemaStmt; } inline void Node::clear_create_schema_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateSchemaStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateSchemaStmt) { clear_has_node(); auto* temp = _impl_.node_.create_schema_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_schema_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateSchemaStmt& Node::_internal_create_schema_stmt() const { return node_case() == kCreateSchemaStmt ? *_impl_.node_.create_schema_stmt_ : reinterpret_cast<::pg_query::CreateSchemaStmt&>(::pg_query::_CreateSchemaStmt_default_instance_); } inline const ::pg_query::CreateSchemaStmt& Node::create_schema_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateSchemaStmt) { clear_has_node(); auto* temp = _impl_.node_.create_schema_stmt_; _impl_.node_.create_schema_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_schema_stmt(::pg_query::CreateSchemaStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_schema_stmt(); _impl_.node_.create_schema_stmt_ = value; } // @@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 (node_case() != kCreateSchemaStmt) { clear_node(); set_has_create_schema_stmt(); _impl_.node_.create_schema_stmt_ = CreateMaybeMessage<::pg_query::CreateSchemaStmt>(GetArena()); } return _impl_.node_.create_schema_stmt_; } inline ::pg_query::CreateSchemaStmt* Node::mutable_create_schema_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateSchemaStmt* _msg = _internal_mutable_create_schema_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_schema_stmt) return _msg; } // .pg_query.AlterTableStmt alter_table_stmt = 141 [json_name = "AlterTableStmt"]; inline bool Node::has_alter_table_stmt() const { return node_case() == kAlterTableStmt; } inline bool Node::_internal_has_alter_table_stmt() const { return node_case() == kAlterTableStmt; } inline void Node::set_has_alter_table_stmt() { _impl_._oneof_case_[0] = kAlterTableStmt; } inline void Node::clear_alter_table_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterTableStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterTableStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_table_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_table_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterTableStmt& Node::_internal_alter_table_stmt() const { return node_case() == kAlterTableStmt ? *_impl_.node_.alter_table_stmt_ : reinterpret_cast<::pg_query::AlterTableStmt&>(::pg_query::_AlterTableStmt_default_instance_); } inline const ::pg_query::AlterTableStmt& Node::alter_table_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterTableStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_table_stmt_; _impl_.node_.alter_table_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_table_stmt(::pg_query::AlterTableStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_table_stmt(); _impl_.node_.alter_table_stmt_ = value; } // @@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 (node_case() != kAlterTableStmt) { clear_node(); set_has_alter_table_stmt(); _impl_.node_.alter_table_stmt_ = CreateMaybeMessage<::pg_query::AlterTableStmt>(GetArena()); } return _impl_.node_.alter_table_stmt_; } inline ::pg_query::AlterTableStmt* Node::mutable_alter_table_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterTableStmt* _msg = _internal_mutable_alter_table_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_table_stmt) return _msg; } // .pg_query.ReplicaIdentityStmt replica_identity_stmt = 142 [json_name = "ReplicaIdentityStmt"]; inline bool Node::has_replica_identity_stmt() const { return node_case() == kReplicaIdentityStmt; } inline bool Node::_internal_has_replica_identity_stmt() const { return node_case() == kReplicaIdentityStmt; } inline void Node::set_has_replica_identity_stmt() { _impl_._oneof_case_[0] = kReplicaIdentityStmt; } inline void Node::clear_replica_identity_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kReplicaIdentityStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kReplicaIdentityStmt) { clear_has_node(); auto* temp = _impl_.node_.replica_identity_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.replica_identity_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ReplicaIdentityStmt& Node::_internal_replica_identity_stmt() const { return node_case() == kReplicaIdentityStmt ? *_impl_.node_.replica_identity_stmt_ : reinterpret_cast<::pg_query::ReplicaIdentityStmt&>(::pg_query::_ReplicaIdentityStmt_default_instance_); } inline const ::pg_query::ReplicaIdentityStmt& Node::replica_identity_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kReplicaIdentityStmt) { clear_has_node(); auto* temp = _impl_.node_.replica_identity_stmt_; _impl_.node_.replica_identity_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_replica_identity_stmt(::pg_query::ReplicaIdentityStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_replica_identity_stmt(); _impl_.node_.replica_identity_stmt_ = value; } // @@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 (node_case() != kReplicaIdentityStmt) { clear_node(); set_has_replica_identity_stmt(); _impl_.node_.replica_identity_stmt_ = CreateMaybeMessage<::pg_query::ReplicaIdentityStmt>(GetArena()); } return _impl_.node_.replica_identity_stmt_; } inline ::pg_query::ReplicaIdentityStmt* Node::mutable_replica_identity_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ReplicaIdentityStmt* _msg = _internal_mutable_replica_identity_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.replica_identity_stmt) return _msg; } // .pg_query.AlterTableCmd alter_table_cmd = 143 [json_name = "AlterTableCmd"]; inline bool Node::has_alter_table_cmd() const { return node_case() == kAlterTableCmd; } inline bool Node::_internal_has_alter_table_cmd() const { return node_case() == kAlterTableCmd; } inline void Node::set_has_alter_table_cmd() { _impl_._oneof_case_[0] = kAlterTableCmd; } inline void Node::clear_alter_table_cmd() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterTableCmd) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterTableCmd) { clear_has_node(); auto* temp = _impl_.node_.alter_table_cmd_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_table_cmd_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterTableCmd& Node::_internal_alter_table_cmd() const { return node_case() == kAlterTableCmd ? *_impl_.node_.alter_table_cmd_ : reinterpret_cast<::pg_query::AlterTableCmd&>(::pg_query::_AlterTableCmd_default_instance_); } inline const ::pg_query::AlterTableCmd& Node::alter_table_cmd() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterTableCmd) { clear_has_node(); auto* temp = _impl_.node_.alter_table_cmd_; _impl_.node_.alter_table_cmd_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_table_cmd(::pg_query::AlterTableCmd* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_table_cmd(); _impl_.node_.alter_table_cmd_ = value; } // @@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 (node_case() != kAlterTableCmd) { clear_node(); set_has_alter_table_cmd(); _impl_.node_.alter_table_cmd_ = CreateMaybeMessage<::pg_query::AlterTableCmd>(GetArena()); } return _impl_.node_.alter_table_cmd_; } inline ::pg_query::AlterTableCmd* Node::mutable_alter_table_cmd() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterTableCmd* _msg = _internal_mutable_alter_table_cmd(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_table_cmd) return _msg; } // .pg_query.AlterCollationStmt alter_collation_stmt = 144 [json_name = "AlterCollationStmt"]; inline bool Node::has_alter_collation_stmt() const { return node_case() == kAlterCollationStmt; } inline bool Node::_internal_has_alter_collation_stmt() const { return node_case() == kAlterCollationStmt; } inline void Node::set_has_alter_collation_stmt() { _impl_._oneof_case_[0] = kAlterCollationStmt; } inline void Node::clear_alter_collation_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterCollationStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterCollationStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_collation_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_collation_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterCollationStmt& Node::_internal_alter_collation_stmt() const { return node_case() == kAlterCollationStmt ? *_impl_.node_.alter_collation_stmt_ : reinterpret_cast<::pg_query::AlterCollationStmt&>(::pg_query::_AlterCollationStmt_default_instance_); } inline const ::pg_query::AlterCollationStmt& Node::alter_collation_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterCollationStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_collation_stmt_; _impl_.node_.alter_collation_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_collation_stmt(::pg_query::AlterCollationStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_collation_stmt(); _impl_.node_.alter_collation_stmt_ = value; } // @@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 (node_case() != kAlterCollationStmt) { clear_node(); set_has_alter_collation_stmt(); _impl_.node_.alter_collation_stmt_ = CreateMaybeMessage<::pg_query::AlterCollationStmt>(GetArena()); } return _impl_.node_.alter_collation_stmt_; } inline ::pg_query::AlterCollationStmt* Node::mutable_alter_collation_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterCollationStmt* _msg = _internal_mutable_alter_collation_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_collation_stmt) return _msg; } // .pg_query.AlterDomainStmt alter_domain_stmt = 145 [json_name = "AlterDomainStmt"]; inline bool Node::has_alter_domain_stmt() const { return node_case() == kAlterDomainStmt; } inline bool Node::_internal_has_alter_domain_stmt() const { return node_case() == kAlterDomainStmt; } inline void Node::set_has_alter_domain_stmt() { _impl_._oneof_case_[0] = kAlterDomainStmt; } inline void Node::clear_alter_domain_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterDomainStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterDomainStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_domain_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_domain_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterDomainStmt& Node::_internal_alter_domain_stmt() const { return node_case() == kAlterDomainStmt ? *_impl_.node_.alter_domain_stmt_ : reinterpret_cast<::pg_query::AlterDomainStmt&>(::pg_query::_AlterDomainStmt_default_instance_); } inline const ::pg_query::AlterDomainStmt& Node::alter_domain_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterDomainStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_domain_stmt_; _impl_.node_.alter_domain_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_domain_stmt(::pg_query::AlterDomainStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_domain_stmt(); _impl_.node_.alter_domain_stmt_ = value; } // @@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 (node_case() != kAlterDomainStmt) { clear_node(); set_has_alter_domain_stmt(); _impl_.node_.alter_domain_stmt_ = CreateMaybeMessage<::pg_query::AlterDomainStmt>(GetArena()); } return _impl_.node_.alter_domain_stmt_; } inline ::pg_query::AlterDomainStmt* Node::mutable_alter_domain_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterDomainStmt* _msg = _internal_mutable_alter_domain_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_domain_stmt) return _msg; } // .pg_query.GrantStmt grant_stmt = 146 [json_name = "GrantStmt"]; inline bool Node::has_grant_stmt() const { return node_case() == kGrantStmt; } inline bool Node::_internal_has_grant_stmt() const { return node_case() == kGrantStmt; } inline void Node::set_has_grant_stmt() { _impl_._oneof_case_[0] = kGrantStmt; } inline void Node::clear_grant_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kGrantStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kGrantStmt) { clear_has_node(); auto* temp = _impl_.node_.grant_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.grant_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::GrantStmt& Node::_internal_grant_stmt() const { return node_case() == kGrantStmt ? *_impl_.node_.grant_stmt_ : reinterpret_cast<::pg_query::GrantStmt&>(::pg_query::_GrantStmt_default_instance_); } inline const ::pg_query::GrantStmt& Node::grant_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kGrantStmt) { clear_has_node(); auto* temp = _impl_.node_.grant_stmt_; _impl_.node_.grant_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_grant_stmt(::pg_query::GrantStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_grant_stmt(); _impl_.node_.grant_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grant_stmt) } inline ::pg_query::GrantStmt* Node::_internal_mutable_grant_stmt() { if (node_case() != kGrantStmt) { clear_node(); set_has_grant_stmt(); _impl_.node_.grant_stmt_ = CreateMaybeMessage<::pg_query::GrantStmt>(GetArena()); } return _impl_.node_.grant_stmt_; } inline ::pg_query::GrantStmt* Node::mutable_grant_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::GrantStmt* _msg = _internal_mutable_grant_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.grant_stmt) return _msg; } // .pg_query.ObjectWithArgs object_with_args = 147 [json_name = "ObjectWithArgs"]; inline bool Node::has_object_with_args() const { return node_case() == kObjectWithArgs; } inline bool Node::_internal_has_object_with_args() const { return node_case() == kObjectWithArgs; } inline void Node::set_has_object_with_args() { _impl_._oneof_case_[0] = kObjectWithArgs; } inline void Node::clear_object_with_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kObjectWithArgs) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kObjectWithArgs) { clear_has_node(); auto* temp = _impl_.node_.object_with_args_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.object_with_args_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ObjectWithArgs& Node::_internal_object_with_args() const { return node_case() == kObjectWithArgs ? *_impl_.node_.object_with_args_ : reinterpret_cast<::pg_query::ObjectWithArgs&>(::pg_query::_ObjectWithArgs_default_instance_); } inline const ::pg_query::ObjectWithArgs& Node::object_with_args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kObjectWithArgs) { clear_has_node(); auto* temp = _impl_.node_.object_with_args_; _impl_.node_.object_with_args_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_object_with_args(::pg_query::ObjectWithArgs* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_object_with_args(); _impl_.node_.object_with_args_ = value; } // @@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 (node_case() != kObjectWithArgs) { clear_node(); set_has_object_with_args(); _impl_.node_.object_with_args_ = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); } return _impl_.node_.object_with_args_; } inline ::pg_query::ObjectWithArgs* Node::mutable_object_with_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ObjectWithArgs* _msg = _internal_mutable_object_with_args(); // @@protoc_insertion_point(field_mutable:pg_query.Node.object_with_args) return _msg; } // .pg_query.AccessPriv access_priv = 148 [json_name = "AccessPriv"]; inline bool Node::has_access_priv() const { return node_case() == kAccessPriv; } inline bool Node::_internal_has_access_priv() const { return node_case() == kAccessPriv; } inline void Node::set_has_access_priv() { _impl_._oneof_case_[0] = kAccessPriv; } inline void Node::clear_access_priv() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAccessPriv) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAccessPriv) { clear_has_node(); auto* temp = _impl_.node_.access_priv_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.access_priv_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AccessPriv& Node::_internal_access_priv() const { return node_case() == kAccessPriv ? *_impl_.node_.access_priv_ : reinterpret_cast<::pg_query::AccessPriv&>(::pg_query::_AccessPriv_default_instance_); } inline const ::pg_query::AccessPriv& Node::access_priv() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAccessPriv) { clear_has_node(); auto* temp = _impl_.node_.access_priv_; _impl_.node_.access_priv_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_access_priv(::pg_query::AccessPriv* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_access_priv(); _impl_.node_.access_priv_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.access_priv) } inline ::pg_query::AccessPriv* Node::_internal_mutable_access_priv() { if (node_case() != kAccessPriv) { clear_node(); set_has_access_priv(); _impl_.node_.access_priv_ = CreateMaybeMessage<::pg_query::AccessPriv>(GetArena()); } return _impl_.node_.access_priv_; } inline ::pg_query::AccessPriv* Node::mutable_access_priv() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AccessPriv* _msg = _internal_mutable_access_priv(); // @@protoc_insertion_point(field_mutable:pg_query.Node.access_priv) return _msg; } // .pg_query.GrantRoleStmt grant_role_stmt = 149 [json_name = "GrantRoleStmt"]; inline bool Node::has_grant_role_stmt() const { return node_case() == kGrantRoleStmt; } inline bool Node::_internal_has_grant_role_stmt() const { return node_case() == kGrantRoleStmt; } inline void Node::set_has_grant_role_stmt() { _impl_._oneof_case_[0] = kGrantRoleStmt; } inline void Node::clear_grant_role_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kGrantRoleStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kGrantRoleStmt) { clear_has_node(); auto* temp = _impl_.node_.grant_role_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.grant_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::GrantRoleStmt& Node::_internal_grant_role_stmt() const { return node_case() == kGrantRoleStmt ? *_impl_.node_.grant_role_stmt_ : reinterpret_cast<::pg_query::GrantRoleStmt&>(::pg_query::_GrantRoleStmt_default_instance_); } inline const ::pg_query::GrantRoleStmt& Node::grant_role_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kGrantRoleStmt) { clear_has_node(); auto* temp = _impl_.node_.grant_role_stmt_; _impl_.node_.grant_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_grant_role_stmt(::pg_query::GrantRoleStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_grant_role_stmt(); _impl_.node_.grant_role_stmt_ = value; } // @@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 (node_case() != kGrantRoleStmt) { clear_node(); set_has_grant_role_stmt(); _impl_.node_.grant_role_stmt_ = CreateMaybeMessage<::pg_query::GrantRoleStmt>(GetArena()); } return _impl_.node_.grant_role_stmt_; } inline ::pg_query::GrantRoleStmt* Node::mutable_grant_role_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::GrantRoleStmt* _msg = _internal_mutable_grant_role_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.grant_role_stmt) return _msg; } // .pg_query.AlterDefaultPrivilegesStmt alter_default_privileges_stmt = 150 [json_name = "AlterDefaultPrivilegesStmt"]; inline bool Node::has_alter_default_privileges_stmt() const { return node_case() == kAlterDefaultPrivilegesStmt; } inline bool Node::_internal_has_alter_default_privileges_stmt() const { return node_case() == kAlterDefaultPrivilegesStmt; } inline void Node::set_has_alter_default_privileges_stmt() { _impl_._oneof_case_[0] = kAlterDefaultPrivilegesStmt; } inline void Node::clear_alter_default_privileges_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterDefaultPrivilegesStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterDefaultPrivilegesStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_default_privileges_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_default_privileges_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterDefaultPrivilegesStmt& Node::_internal_alter_default_privileges_stmt() const { return node_case() == kAlterDefaultPrivilegesStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterDefaultPrivilegesStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_default_privileges_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_default_privileges_stmt(); _impl_.node_.alter_default_privileges_stmt_ = value; } // @@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 (node_case() != kAlterDefaultPrivilegesStmt) { clear_node(); set_has_alter_default_privileges_stmt(); _impl_.node_.alter_default_privileges_stmt_ = CreateMaybeMessage<::pg_query::AlterDefaultPrivilegesStmt>(GetArena()); } return _impl_.node_.alter_default_privileges_stmt_; } inline ::pg_query::AlterDefaultPrivilegesStmt* Node::mutable_alter_default_privileges_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterDefaultPrivilegesStmt* _msg = _internal_mutable_alter_default_privileges_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_default_privileges_stmt) return _msg; } // .pg_query.CopyStmt copy_stmt = 151 [json_name = "CopyStmt"]; inline bool Node::has_copy_stmt() const { return node_case() == kCopyStmt; } inline bool Node::_internal_has_copy_stmt() const { return node_case() == kCopyStmt; } inline void Node::set_has_copy_stmt() { _impl_._oneof_case_[0] = kCopyStmt; } inline void Node::clear_copy_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCopyStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCopyStmt) { clear_has_node(); auto* temp = _impl_.node_.copy_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.copy_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CopyStmt& Node::_internal_copy_stmt() const { return node_case() == kCopyStmt ? *_impl_.node_.copy_stmt_ : reinterpret_cast<::pg_query::CopyStmt&>(::pg_query::_CopyStmt_default_instance_); } inline const ::pg_query::CopyStmt& Node::copy_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCopyStmt) { clear_has_node(); auto* temp = _impl_.node_.copy_stmt_; _impl_.node_.copy_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_copy_stmt(::pg_query::CopyStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_copy_stmt(); _impl_.node_.copy_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.copy_stmt) } inline ::pg_query::CopyStmt* Node::_internal_mutable_copy_stmt() { if (node_case() != kCopyStmt) { clear_node(); set_has_copy_stmt(); _impl_.node_.copy_stmt_ = CreateMaybeMessage<::pg_query::CopyStmt>(GetArena()); } return _impl_.node_.copy_stmt_; } inline ::pg_query::CopyStmt* Node::mutable_copy_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CopyStmt* _msg = _internal_mutable_copy_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.copy_stmt) return _msg; } // .pg_query.VariableSetStmt variable_set_stmt = 152 [json_name = "VariableSetStmt"]; inline bool Node::has_variable_set_stmt() const { return node_case() == kVariableSetStmt; } inline bool Node::_internal_has_variable_set_stmt() const { return node_case() == kVariableSetStmt; } inline void Node::set_has_variable_set_stmt() { _impl_._oneof_case_[0] = kVariableSetStmt; } inline void Node::clear_variable_set_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kVariableSetStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kVariableSetStmt) { clear_has_node(); auto* temp = _impl_.node_.variable_set_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.variable_set_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::VariableSetStmt& Node::_internal_variable_set_stmt() const { return node_case() == kVariableSetStmt ? *_impl_.node_.variable_set_stmt_ : reinterpret_cast<::pg_query::VariableSetStmt&>(::pg_query::_VariableSetStmt_default_instance_); } inline const ::pg_query::VariableSetStmt& Node::variable_set_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kVariableSetStmt) { clear_has_node(); auto* temp = _impl_.node_.variable_set_stmt_; _impl_.node_.variable_set_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_variable_set_stmt(::pg_query::VariableSetStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_variable_set_stmt(); _impl_.node_.variable_set_stmt_ = value; } // @@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 (node_case() != kVariableSetStmt) { clear_node(); set_has_variable_set_stmt(); _impl_.node_.variable_set_stmt_ = CreateMaybeMessage<::pg_query::VariableSetStmt>(GetArena()); } return _impl_.node_.variable_set_stmt_; } inline ::pg_query::VariableSetStmt* Node::mutable_variable_set_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::VariableSetStmt* _msg = _internal_mutable_variable_set_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.variable_set_stmt) return _msg; } // .pg_query.VariableShowStmt variable_show_stmt = 153 [json_name = "VariableShowStmt"]; inline bool Node::has_variable_show_stmt() const { return node_case() == kVariableShowStmt; } inline bool Node::_internal_has_variable_show_stmt() const { return node_case() == kVariableShowStmt; } inline void Node::set_has_variable_show_stmt() { _impl_._oneof_case_[0] = kVariableShowStmt; } inline void Node::clear_variable_show_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kVariableShowStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kVariableShowStmt) { clear_has_node(); auto* temp = _impl_.node_.variable_show_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.variable_show_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::VariableShowStmt& Node::_internal_variable_show_stmt() const { return node_case() == kVariableShowStmt ? *_impl_.node_.variable_show_stmt_ : reinterpret_cast<::pg_query::VariableShowStmt&>(::pg_query::_VariableShowStmt_default_instance_); } inline const ::pg_query::VariableShowStmt& Node::variable_show_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kVariableShowStmt) { clear_has_node(); auto* temp = _impl_.node_.variable_show_stmt_; _impl_.node_.variable_show_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_variable_show_stmt(::pg_query::VariableShowStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_variable_show_stmt(); _impl_.node_.variable_show_stmt_ = value; } // @@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 (node_case() != kVariableShowStmt) { clear_node(); set_has_variable_show_stmt(); _impl_.node_.variable_show_stmt_ = CreateMaybeMessage<::pg_query::VariableShowStmt>(GetArena()); } return _impl_.node_.variable_show_stmt_; } inline ::pg_query::VariableShowStmt* Node::mutable_variable_show_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::VariableShowStmt* _msg = _internal_mutable_variable_show_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.variable_show_stmt) return _msg; } // .pg_query.CreateStmt create_stmt = 154 [json_name = "CreateStmt"]; inline bool Node::has_create_stmt() const { return node_case() == kCreateStmt; } inline bool Node::_internal_has_create_stmt() const { return node_case() == kCreateStmt; } inline void Node::set_has_create_stmt() { _impl_._oneof_case_[0] = kCreateStmt; } inline void Node::clear_create_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateStmt) { clear_has_node(); auto* temp = _impl_.node_.create_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateStmt& Node::_internal_create_stmt() const { return node_case() == kCreateStmt ? *_impl_.node_.create_stmt_ : reinterpret_cast<::pg_query::CreateStmt&>(::pg_query::_CreateStmt_default_instance_); } inline const ::pg_query::CreateStmt& Node::create_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateStmt) { clear_has_node(); auto* temp = _impl_.node_.create_stmt_; _impl_.node_.create_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_stmt(::pg_query::CreateStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_stmt(); _impl_.node_.create_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_stmt) } inline ::pg_query::CreateStmt* Node::_internal_mutable_create_stmt() { if (node_case() != kCreateStmt) { clear_node(); set_has_create_stmt(); _impl_.node_.create_stmt_ = CreateMaybeMessage<::pg_query::CreateStmt>(GetArena()); } return _impl_.node_.create_stmt_; } inline ::pg_query::CreateStmt* Node::mutable_create_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateStmt* _msg = _internal_mutable_create_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_stmt) return _msg; } // .pg_query.Constraint constraint = 155 [json_name = "Constraint"]; inline bool Node::has_constraint() const { return node_case() == kConstraint; } inline bool Node::_internal_has_constraint() const { return node_case() == kConstraint; } inline void Node::set_has_constraint() { _impl_._oneof_case_[0] = kConstraint; } inline void Node::clear_constraint() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kConstraint) { if (GetArena() == nullptr) { delete _impl_.node_.constraint_; } clear_has_node(); } } inline ::pg_query::Constraint* Node::release_constraint() { // @@protoc_insertion_point(field_release:pg_query.Node.constraint) if (node_case() == kConstraint) { clear_has_node(); auto* temp = _impl_.node_.constraint_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.constraint_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Constraint& Node::_internal_constraint() const { return node_case() == kConstraint ? *_impl_.node_.constraint_ : reinterpret_cast<::pg_query::Constraint&>(::pg_query::_Constraint_default_instance_); } inline const ::pg_query::Constraint& Node::constraint() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kConstraint) { clear_has_node(); auto* temp = _impl_.node_.constraint_; _impl_.node_.constraint_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_constraint(::pg_query::Constraint* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_constraint(); _impl_.node_.constraint_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.constraint) } inline ::pg_query::Constraint* Node::_internal_mutable_constraint() { if (node_case() != kConstraint) { clear_node(); set_has_constraint(); _impl_.node_.constraint_ = CreateMaybeMessage<::pg_query::Constraint>(GetArena()); } return _impl_.node_.constraint_; } inline ::pg_query::Constraint* Node::mutable_constraint() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Constraint* _msg = _internal_mutable_constraint(); // @@protoc_insertion_point(field_mutable:pg_query.Node.constraint) return _msg; } // .pg_query.CreateTableSpaceStmt create_table_space_stmt = 156 [json_name = "CreateTableSpaceStmt"]; inline bool Node::has_create_table_space_stmt() const { return node_case() == kCreateTableSpaceStmt; } inline bool Node::_internal_has_create_table_space_stmt() const { return node_case() == kCreateTableSpaceStmt; } inline void Node::set_has_create_table_space_stmt() { _impl_._oneof_case_[0] = kCreateTableSpaceStmt; } inline void Node::clear_create_table_space_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateTableSpaceStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateTableSpaceStmt) { clear_has_node(); auto* temp = _impl_.node_.create_table_space_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_table_space_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateTableSpaceStmt& Node::_internal_create_table_space_stmt() const { return node_case() == kCreateTableSpaceStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateTableSpaceStmt) { clear_has_node(); auto* temp = _impl_.node_.create_table_space_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_table_space_stmt(); _impl_.node_.create_table_space_stmt_ = value; } // @@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 (node_case() != kCreateTableSpaceStmt) { clear_node(); set_has_create_table_space_stmt(); _impl_.node_.create_table_space_stmt_ = CreateMaybeMessage<::pg_query::CreateTableSpaceStmt>(GetArena()); } return _impl_.node_.create_table_space_stmt_; } inline ::pg_query::CreateTableSpaceStmt* Node::mutable_create_table_space_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateTableSpaceStmt* _msg = _internal_mutable_create_table_space_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_table_space_stmt) return _msg; } // .pg_query.DropTableSpaceStmt drop_table_space_stmt = 157 [json_name = "DropTableSpaceStmt"]; inline bool Node::has_drop_table_space_stmt() const { return node_case() == kDropTableSpaceStmt; } inline bool Node::_internal_has_drop_table_space_stmt() const { return node_case() == kDropTableSpaceStmt; } inline void Node::set_has_drop_table_space_stmt() { _impl_._oneof_case_[0] = kDropTableSpaceStmt; } inline void Node::clear_drop_table_space_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDropTableSpaceStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDropTableSpaceStmt) { clear_has_node(); auto* temp = _impl_.node_.drop_table_space_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.drop_table_space_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropTableSpaceStmt& Node::_internal_drop_table_space_stmt() const { return node_case() == kDropTableSpaceStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDropTableSpaceStmt) { clear_has_node(); auto* temp = _impl_.node_.drop_table_space_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_drop_table_space_stmt(); _impl_.node_.drop_table_space_stmt_ = value; } // @@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 (node_case() != kDropTableSpaceStmt) { clear_node(); set_has_drop_table_space_stmt(); _impl_.node_.drop_table_space_stmt_ = CreateMaybeMessage<::pg_query::DropTableSpaceStmt>(GetArena()); } return _impl_.node_.drop_table_space_stmt_; } inline ::pg_query::DropTableSpaceStmt* Node::mutable_drop_table_space_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DropTableSpaceStmt* _msg = _internal_mutable_drop_table_space_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_table_space_stmt) return _msg; } // .pg_query.AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 158 [json_name = "AlterTableSpaceOptionsStmt"]; inline bool Node::has_alter_table_space_options_stmt() const { return node_case() == kAlterTableSpaceOptionsStmt; } inline bool Node::_internal_has_alter_table_space_options_stmt() const { return node_case() == kAlterTableSpaceOptionsStmt; } inline void Node::set_has_alter_table_space_options_stmt() { _impl_._oneof_case_[0] = kAlterTableSpaceOptionsStmt; } inline void Node::clear_alter_table_space_options_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterTableSpaceOptionsStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterTableSpaceOptionsStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_table_space_options_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.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 node_case() == kAlterTableSpaceOptionsStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterTableSpaceOptionsStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_table_space_options_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_table_space_options_stmt(); _impl_.node_.alter_table_space_options_stmt_ = value; } // @@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 (node_case() != kAlterTableSpaceOptionsStmt) { clear_node(); set_has_alter_table_space_options_stmt(); _impl_.node_.alter_table_space_options_stmt_ = CreateMaybeMessage<::pg_query::AlterTableSpaceOptionsStmt>(GetArena()); } return _impl_.node_.alter_table_space_options_stmt_; } inline ::pg_query::AlterTableSpaceOptionsStmt* Node::mutable_alter_table_space_options_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterTableSpaceOptionsStmt* _msg = _internal_mutable_alter_table_space_options_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_table_space_options_stmt) return _msg; } // .pg_query.AlterTableMoveAllStmt alter_table_move_all_stmt = 159 [json_name = "AlterTableMoveAllStmt"]; inline bool Node::has_alter_table_move_all_stmt() const { return node_case() == kAlterTableMoveAllStmt; } inline bool Node::_internal_has_alter_table_move_all_stmt() const { return node_case() == kAlterTableMoveAllStmt; } inline void Node::set_has_alter_table_move_all_stmt() { _impl_._oneof_case_[0] = kAlterTableMoveAllStmt; } inline void Node::clear_alter_table_move_all_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterTableMoveAllStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterTableMoveAllStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_table_move_all_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.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 node_case() == kAlterTableMoveAllStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterTableMoveAllStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_table_move_all_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_table_move_all_stmt(); _impl_.node_.alter_table_move_all_stmt_ = value; } // @@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 (node_case() != kAlterTableMoveAllStmt) { clear_node(); set_has_alter_table_move_all_stmt(); _impl_.node_.alter_table_move_all_stmt_ = CreateMaybeMessage<::pg_query::AlterTableMoveAllStmt>(GetArena()); } return _impl_.node_.alter_table_move_all_stmt_; } inline ::pg_query::AlterTableMoveAllStmt* Node::mutable_alter_table_move_all_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterTableMoveAllStmt* _msg = _internal_mutable_alter_table_move_all_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_table_move_all_stmt) return _msg; } // .pg_query.CreateExtensionStmt create_extension_stmt = 160 [json_name = "CreateExtensionStmt"]; inline bool Node::has_create_extension_stmt() const { return node_case() == kCreateExtensionStmt; } inline bool Node::_internal_has_create_extension_stmt() const { return node_case() == kCreateExtensionStmt; } inline void Node::set_has_create_extension_stmt() { _impl_._oneof_case_[0] = kCreateExtensionStmt; } inline void Node::clear_create_extension_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateExtensionStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateExtensionStmt) { clear_has_node(); auto* temp = _impl_.node_.create_extension_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_extension_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateExtensionStmt& Node::_internal_create_extension_stmt() const { return node_case() == kCreateExtensionStmt ? *_impl_.node_.create_extension_stmt_ : reinterpret_cast<::pg_query::CreateExtensionStmt&>(::pg_query::_CreateExtensionStmt_default_instance_); } inline const ::pg_query::CreateExtensionStmt& Node::create_extension_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateExtensionStmt) { clear_has_node(); auto* temp = _impl_.node_.create_extension_stmt_; _impl_.node_.create_extension_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_extension_stmt(::pg_query::CreateExtensionStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_extension_stmt(); _impl_.node_.create_extension_stmt_ = value; } // @@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 (node_case() != kCreateExtensionStmt) { clear_node(); set_has_create_extension_stmt(); _impl_.node_.create_extension_stmt_ = CreateMaybeMessage<::pg_query::CreateExtensionStmt>(GetArena()); } return _impl_.node_.create_extension_stmt_; } inline ::pg_query::CreateExtensionStmt* Node::mutable_create_extension_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateExtensionStmt* _msg = _internal_mutable_create_extension_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_extension_stmt) return _msg; } // .pg_query.AlterExtensionStmt alter_extension_stmt = 161 [json_name = "AlterExtensionStmt"]; inline bool Node::has_alter_extension_stmt() const { return node_case() == kAlterExtensionStmt; } inline bool Node::_internal_has_alter_extension_stmt() const { return node_case() == kAlterExtensionStmt; } inline void Node::set_has_alter_extension_stmt() { _impl_._oneof_case_[0] = kAlterExtensionStmt; } inline void Node::clear_alter_extension_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterExtensionStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterExtensionStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_extension_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_extension_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterExtensionStmt& Node::_internal_alter_extension_stmt() const { return node_case() == kAlterExtensionStmt ? *_impl_.node_.alter_extension_stmt_ : reinterpret_cast<::pg_query::AlterExtensionStmt&>(::pg_query::_AlterExtensionStmt_default_instance_); } inline const ::pg_query::AlterExtensionStmt& Node::alter_extension_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterExtensionStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_extension_stmt_; _impl_.node_.alter_extension_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_extension_stmt(::pg_query::AlterExtensionStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_extension_stmt(); _impl_.node_.alter_extension_stmt_ = value; } // @@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 (node_case() != kAlterExtensionStmt) { clear_node(); set_has_alter_extension_stmt(); _impl_.node_.alter_extension_stmt_ = CreateMaybeMessage<::pg_query::AlterExtensionStmt>(GetArena()); } return _impl_.node_.alter_extension_stmt_; } inline ::pg_query::AlterExtensionStmt* Node::mutable_alter_extension_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterExtensionStmt* _msg = _internal_mutable_alter_extension_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_extension_stmt) return _msg; } // .pg_query.AlterExtensionContentsStmt alter_extension_contents_stmt = 162 [json_name = "AlterExtensionContentsStmt"]; inline bool Node::has_alter_extension_contents_stmt() const { return node_case() == kAlterExtensionContentsStmt; } inline bool Node::_internal_has_alter_extension_contents_stmt() const { return node_case() == kAlterExtensionContentsStmt; } inline void Node::set_has_alter_extension_contents_stmt() { _impl_._oneof_case_[0] = kAlterExtensionContentsStmt; } inline void Node::clear_alter_extension_contents_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterExtensionContentsStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterExtensionContentsStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_extension_contents_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_extension_contents_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterExtensionContentsStmt& Node::_internal_alter_extension_contents_stmt() const { return node_case() == kAlterExtensionContentsStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterExtensionContentsStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_extension_contents_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_extension_contents_stmt(); _impl_.node_.alter_extension_contents_stmt_ = value; } // @@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 (node_case() != kAlterExtensionContentsStmt) { clear_node(); set_has_alter_extension_contents_stmt(); _impl_.node_.alter_extension_contents_stmt_ = CreateMaybeMessage<::pg_query::AlterExtensionContentsStmt>(GetArena()); } return _impl_.node_.alter_extension_contents_stmt_; } inline ::pg_query::AlterExtensionContentsStmt* Node::mutable_alter_extension_contents_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterExtensionContentsStmt* _msg = _internal_mutable_alter_extension_contents_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_extension_contents_stmt) return _msg; } // .pg_query.CreateFdwStmt create_fdw_stmt = 163 [json_name = "CreateFdwStmt"]; inline bool Node::has_create_fdw_stmt() const { return node_case() == kCreateFdwStmt; } inline bool Node::_internal_has_create_fdw_stmt() const { return node_case() == kCreateFdwStmt; } inline void Node::set_has_create_fdw_stmt() { _impl_._oneof_case_[0] = kCreateFdwStmt; } inline void Node::clear_create_fdw_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateFdwStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateFdwStmt) { clear_has_node(); auto* temp = _impl_.node_.create_fdw_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_fdw_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateFdwStmt& Node::_internal_create_fdw_stmt() const { return node_case() == kCreateFdwStmt ? *_impl_.node_.create_fdw_stmt_ : reinterpret_cast<::pg_query::CreateFdwStmt&>(::pg_query::_CreateFdwStmt_default_instance_); } inline const ::pg_query::CreateFdwStmt& Node::create_fdw_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateFdwStmt) { clear_has_node(); auto* temp = _impl_.node_.create_fdw_stmt_; _impl_.node_.create_fdw_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_fdw_stmt(::pg_query::CreateFdwStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_fdw_stmt(); _impl_.node_.create_fdw_stmt_ = value; } // @@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 (node_case() != kCreateFdwStmt) { clear_node(); set_has_create_fdw_stmt(); _impl_.node_.create_fdw_stmt_ = CreateMaybeMessage<::pg_query::CreateFdwStmt>(GetArena()); } return _impl_.node_.create_fdw_stmt_; } inline ::pg_query::CreateFdwStmt* Node::mutable_create_fdw_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateFdwStmt* _msg = _internal_mutable_create_fdw_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_fdw_stmt) return _msg; } // .pg_query.AlterFdwStmt alter_fdw_stmt = 164 [json_name = "AlterFdwStmt"]; inline bool Node::has_alter_fdw_stmt() const { return node_case() == kAlterFdwStmt; } inline bool Node::_internal_has_alter_fdw_stmt() const { return node_case() == kAlterFdwStmt; } inline void Node::set_has_alter_fdw_stmt() { _impl_._oneof_case_[0] = kAlterFdwStmt; } inline void Node::clear_alter_fdw_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterFdwStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterFdwStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_fdw_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_fdw_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterFdwStmt& Node::_internal_alter_fdw_stmt() const { return node_case() == kAlterFdwStmt ? *_impl_.node_.alter_fdw_stmt_ : reinterpret_cast<::pg_query::AlterFdwStmt&>(::pg_query::_AlterFdwStmt_default_instance_); } inline const ::pg_query::AlterFdwStmt& Node::alter_fdw_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterFdwStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_fdw_stmt_; _impl_.node_.alter_fdw_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_fdw_stmt(::pg_query::AlterFdwStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_fdw_stmt(); _impl_.node_.alter_fdw_stmt_ = value; } // @@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 (node_case() != kAlterFdwStmt) { clear_node(); set_has_alter_fdw_stmt(); _impl_.node_.alter_fdw_stmt_ = CreateMaybeMessage<::pg_query::AlterFdwStmt>(GetArena()); } return _impl_.node_.alter_fdw_stmt_; } inline ::pg_query::AlterFdwStmt* Node::mutable_alter_fdw_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterFdwStmt* _msg = _internal_mutable_alter_fdw_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_fdw_stmt) return _msg; } // .pg_query.CreateForeignServerStmt create_foreign_server_stmt = 165 [json_name = "CreateForeignServerStmt"]; inline bool Node::has_create_foreign_server_stmt() const { return node_case() == kCreateForeignServerStmt; } inline bool Node::_internal_has_create_foreign_server_stmt() const { return node_case() == kCreateForeignServerStmt; } inline void Node::set_has_create_foreign_server_stmt() { _impl_._oneof_case_[0] = kCreateForeignServerStmt; } inline void Node::clear_create_foreign_server_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateForeignServerStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateForeignServerStmt) { clear_has_node(); auto* temp = _impl_.node_.create_foreign_server_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_foreign_server_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateForeignServerStmt& Node::_internal_create_foreign_server_stmt() const { return node_case() == kCreateForeignServerStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateForeignServerStmt) { clear_has_node(); auto* temp = _impl_.node_.create_foreign_server_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_foreign_server_stmt(); _impl_.node_.create_foreign_server_stmt_ = value; } // @@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 (node_case() != kCreateForeignServerStmt) { clear_node(); set_has_create_foreign_server_stmt(); _impl_.node_.create_foreign_server_stmt_ = CreateMaybeMessage<::pg_query::CreateForeignServerStmt>(GetArena()); } return _impl_.node_.create_foreign_server_stmt_; } inline ::pg_query::CreateForeignServerStmt* Node::mutable_create_foreign_server_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateForeignServerStmt* _msg = _internal_mutable_create_foreign_server_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_foreign_server_stmt) return _msg; } // .pg_query.AlterForeignServerStmt alter_foreign_server_stmt = 166 [json_name = "AlterForeignServerStmt"]; inline bool Node::has_alter_foreign_server_stmt() const { return node_case() == kAlterForeignServerStmt; } inline bool Node::_internal_has_alter_foreign_server_stmt() const { return node_case() == kAlterForeignServerStmt; } inline void Node::set_has_alter_foreign_server_stmt() { _impl_._oneof_case_[0] = kAlterForeignServerStmt; } inline void Node::clear_alter_foreign_server_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterForeignServerStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterForeignServerStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_foreign_server_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_foreign_server_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterForeignServerStmt& Node::_internal_alter_foreign_server_stmt() const { return node_case() == kAlterForeignServerStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterForeignServerStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_foreign_server_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_foreign_server_stmt(); _impl_.node_.alter_foreign_server_stmt_ = value; } // @@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 (node_case() != kAlterForeignServerStmt) { clear_node(); set_has_alter_foreign_server_stmt(); _impl_.node_.alter_foreign_server_stmt_ = CreateMaybeMessage<::pg_query::AlterForeignServerStmt>(GetArena()); } return _impl_.node_.alter_foreign_server_stmt_; } inline ::pg_query::AlterForeignServerStmt* Node::mutable_alter_foreign_server_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterForeignServerStmt* _msg = _internal_mutable_alter_foreign_server_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_foreign_server_stmt) return _msg; } // .pg_query.CreateForeignTableStmt create_foreign_table_stmt = 167 [json_name = "CreateForeignTableStmt"]; inline bool Node::has_create_foreign_table_stmt() const { return node_case() == kCreateForeignTableStmt; } inline bool Node::_internal_has_create_foreign_table_stmt() const { return node_case() == kCreateForeignTableStmt; } inline void Node::set_has_create_foreign_table_stmt() { _impl_._oneof_case_[0] = kCreateForeignTableStmt; } inline void Node::clear_create_foreign_table_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateForeignTableStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateForeignTableStmt) { clear_has_node(); auto* temp = _impl_.node_.create_foreign_table_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_foreign_table_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateForeignTableStmt& Node::_internal_create_foreign_table_stmt() const { return node_case() == kCreateForeignTableStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateForeignTableStmt) { clear_has_node(); auto* temp = _impl_.node_.create_foreign_table_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_foreign_table_stmt(); _impl_.node_.create_foreign_table_stmt_ = value; } // @@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 (node_case() != kCreateForeignTableStmt) { clear_node(); set_has_create_foreign_table_stmt(); _impl_.node_.create_foreign_table_stmt_ = CreateMaybeMessage<::pg_query::CreateForeignTableStmt>(GetArena()); } return _impl_.node_.create_foreign_table_stmt_; } inline ::pg_query::CreateForeignTableStmt* Node::mutable_create_foreign_table_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateForeignTableStmt* _msg = _internal_mutable_create_foreign_table_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_foreign_table_stmt) return _msg; } // .pg_query.CreateUserMappingStmt create_user_mapping_stmt = 168 [json_name = "CreateUserMappingStmt"]; inline bool Node::has_create_user_mapping_stmt() const { return node_case() == kCreateUserMappingStmt; } inline bool Node::_internal_has_create_user_mapping_stmt() const { return node_case() == kCreateUserMappingStmt; } inline void Node::set_has_create_user_mapping_stmt() { _impl_._oneof_case_[0] = kCreateUserMappingStmt; } inline void Node::clear_create_user_mapping_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateUserMappingStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateUserMappingStmt) { clear_has_node(); auto* temp = _impl_.node_.create_user_mapping_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_user_mapping_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateUserMappingStmt& Node::_internal_create_user_mapping_stmt() const { return node_case() == kCreateUserMappingStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateUserMappingStmt) { clear_has_node(); auto* temp = _impl_.node_.create_user_mapping_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_user_mapping_stmt(); _impl_.node_.create_user_mapping_stmt_ = value; } // @@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 (node_case() != kCreateUserMappingStmt) { clear_node(); set_has_create_user_mapping_stmt(); _impl_.node_.create_user_mapping_stmt_ = CreateMaybeMessage<::pg_query::CreateUserMappingStmt>(GetArena()); } return _impl_.node_.create_user_mapping_stmt_; } inline ::pg_query::CreateUserMappingStmt* Node::mutable_create_user_mapping_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateUserMappingStmt* _msg = _internal_mutable_create_user_mapping_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_user_mapping_stmt) return _msg; } // .pg_query.AlterUserMappingStmt alter_user_mapping_stmt = 169 [json_name = "AlterUserMappingStmt"]; inline bool Node::has_alter_user_mapping_stmt() const { return node_case() == kAlterUserMappingStmt; } inline bool Node::_internal_has_alter_user_mapping_stmt() const { return node_case() == kAlterUserMappingStmt; } inline void Node::set_has_alter_user_mapping_stmt() { _impl_._oneof_case_[0] = kAlterUserMappingStmt; } inline void Node::clear_alter_user_mapping_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterUserMappingStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterUserMappingStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_user_mapping_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_user_mapping_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterUserMappingStmt& Node::_internal_alter_user_mapping_stmt() const { return node_case() == kAlterUserMappingStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterUserMappingStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_user_mapping_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_user_mapping_stmt(); _impl_.node_.alter_user_mapping_stmt_ = value; } // @@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 (node_case() != kAlterUserMappingStmt) { clear_node(); set_has_alter_user_mapping_stmt(); _impl_.node_.alter_user_mapping_stmt_ = CreateMaybeMessage<::pg_query::AlterUserMappingStmt>(GetArena()); } return _impl_.node_.alter_user_mapping_stmt_; } inline ::pg_query::AlterUserMappingStmt* Node::mutable_alter_user_mapping_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterUserMappingStmt* _msg = _internal_mutable_alter_user_mapping_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_user_mapping_stmt) return _msg; } // .pg_query.DropUserMappingStmt drop_user_mapping_stmt = 170 [json_name = "DropUserMappingStmt"]; inline bool Node::has_drop_user_mapping_stmt() const { return node_case() == kDropUserMappingStmt; } inline bool Node::_internal_has_drop_user_mapping_stmt() const { return node_case() == kDropUserMappingStmt; } inline void Node::set_has_drop_user_mapping_stmt() { _impl_._oneof_case_[0] = kDropUserMappingStmt; } inline void Node::clear_drop_user_mapping_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDropUserMappingStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDropUserMappingStmt) { clear_has_node(); auto* temp = _impl_.node_.drop_user_mapping_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.drop_user_mapping_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropUserMappingStmt& Node::_internal_drop_user_mapping_stmt() const { return node_case() == kDropUserMappingStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDropUserMappingStmt) { clear_has_node(); auto* temp = _impl_.node_.drop_user_mapping_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_drop_user_mapping_stmt(); _impl_.node_.drop_user_mapping_stmt_ = value; } // @@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 (node_case() != kDropUserMappingStmt) { clear_node(); set_has_drop_user_mapping_stmt(); _impl_.node_.drop_user_mapping_stmt_ = CreateMaybeMessage<::pg_query::DropUserMappingStmt>(GetArena()); } return _impl_.node_.drop_user_mapping_stmt_; } inline ::pg_query::DropUserMappingStmt* Node::mutable_drop_user_mapping_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DropUserMappingStmt* _msg = _internal_mutable_drop_user_mapping_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_user_mapping_stmt) return _msg; } // .pg_query.ImportForeignSchemaStmt import_foreign_schema_stmt = 171 [json_name = "ImportForeignSchemaStmt"]; inline bool Node::has_import_foreign_schema_stmt() const { return node_case() == kImportForeignSchemaStmt; } inline bool Node::_internal_has_import_foreign_schema_stmt() const { return node_case() == kImportForeignSchemaStmt; } inline void Node::set_has_import_foreign_schema_stmt() { _impl_._oneof_case_[0] = kImportForeignSchemaStmt; } inline void Node::clear_import_foreign_schema_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kImportForeignSchemaStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kImportForeignSchemaStmt) { clear_has_node(); auto* temp = _impl_.node_.import_foreign_schema_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.import_foreign_schema_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ImportForeignSchemaStmt& Node::_internal_import_foreign_schema_stmt() const { return node_case() == kImportForeignSchemaStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kImportForeignSchemaStmt) { clear_has_node(); auto* temp = _impl_.node_.import_foreign_schema_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_import_foreign_schema_stmt(); _impl_.node_.import_foreign_schema_stmt_ = value; } // @@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 (node_case() != kImportForeignSchemaStmt) { clear_node(); set_has_import_foreign_schema_stmt(); _impl_.node_.import_foreign_schema_stmt_ = CreateMaybeMessage<::pg_query::ImportForeignSchemaStmt>(GetArena()); } return _impl_.node_.import_foreign_schema_stmt_; } inline ::pg_query::ImportForeignSchemaStmt* Node::mutable_import_foreign_schema_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ImportForeignSchemaStmt* _msg = _internal_mutable_import_foreign_schema_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.import_foreign_schema_stmt) return _msg; } // .pg_query.CreatePolicyStmt create_policy_stmt = 172 [json_name = "CreatePolicyStmt"]; inline bool Node::has_create_policy_stmt() const { return node_case() == kCreatePolicyStmt; } inline bool Node::_internal_has_create_policy_stmt() const { return node_case() == kCreatePolicyStmt; } inline void Node::set_has_create_policy_stmt() { _impl_._oneof_case_[0] = kCreatePolicyStmt; } inline void Node::clear_create_policy_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreatePolicyStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreatePolicyStmt) { clear_has_node(); auto* temp = _impl_.node_.create_policy_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_policy_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreatePolicyStmt& Node::_internal_create_policy_stmt() const { return node_case() == kCreatePolicyStmt ? *_impl_.node_.create_policy_stmt_ : reinterpret_cast<::pg_query::CreatePolicyStmt&>(::pg_query::_CreatePolicyStmt_default_instance_); } inline const ::pg_query::CreatePolicyStmt& Node::create_policy_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreatePolicyStmt) { clear_has_node(); auto* temp = _impl_.node_.create_policy_stmt_; _impl_.node_.create_policy_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_policy_stmt(::pg_query::CreatePolicyStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_policy_stmt(); _impl_.node_.create_policy_stmt_ = value; } // @@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 (node_case() != kCreatePolicyStmt) { clear_node(); set_has_create_policy_stmt(); _impl_.node_.create_policy_stmt_ = CreateMaybeMessage<::pg_query::CreatePolicyStmt>(GetArena()); } return _impl_.node_.create_policy_stmt_; } inline ::pg_query::CreatePolicyStmt* Node::mutable_create_policy_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreatePolicyStmt* _msg = _internal_mutable_create_policy_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_policy_stmt) return _msg; } // .pg_query.AlterPolicyStmt alter_policy_stmt = 173 [json_name = "AlterPolicyStmt"]; inline bool Node::has_alter_policy_stmt() const { return node_case() == kAlterPolicyStmt; } inline bool Node::_internal_has_alter_policy_stmt() const { return node_case() == kAlterPolicyStmt; } inline void Node::set_has_alter_policy_stmt() { _impl_._oneof_case_[0] = kAlterPolicyStmt; } inline void Node::clear_alter_policy_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterPolicyStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterPolicyStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_policy_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_policy_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterPolicyStmt& Node::_internal_alter_policy_stmt() const { return node_case() == kAlterPolicyStmt ? *_impl_.node_.alter_policy_stmt_ : reinterpret_cast<::pg_query::AlterPolicyStmt&>(::pg_query::_AlterPolicyStmt_default_instance_); } inline const ::pg_query::AlterPolicyStmt& Node::alter_policy_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterPolicyStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_policy_stmt_; _impl_.node_.alter_policy_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_policy_stmt(::pg_query::AlterPolicyStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_policy_stmt(); _impl_.node_.alter_policy_stmt_ = value; } // @@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 (node_case() != kAlterPolicyStmt) { clear_node(); set_has_alter_policy_stmt(); _impl_.node_.alter_policy_stmt_ = CreateMaybeMessage<::pg_query::AlterPolicyStmt>(GetArena()); } return _impl_.node_.alter_policy_stmt_; } inline ::pg_query::AlterPolicyStmt* Node::mutable_alter_policy_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterPolicyStmt* _msg = _internal_mutable_alter_policy_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_policy_stmt) return _msg; } // .pg_query.CreateAmStmt create_am_stmt = 174 [json_name = "CreateAmStmt"]; inline bool Node::has_create_am_stmt() const { return node_case() == kCreateAmStmt; } inline bool Node::_internal_has_create_am_stmt() const { return node_case() == kCreateAmStmt; } inline void Node::set_has_create_am_stmt() { _impl_._oneof_case_[0] = kCreateAmStmt; } inline void Node::clear_create_am_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateAmStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateAmStmt) { clear_has_node(); auto* temp = _impl_.node_.create_am_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_am_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateAmStmt& Node::_internal_create_am_stmt() const { return node_case() == kCreateAmStmt ? *_impl_.node_.create_am_stmt_ : reinterpret_cast<::pg_query::CreateAmStmt&>(::pg_query::_CreateAmStmt_default_instance_); } inline const ::pg_query::CreateAmStmt& Node::create_am_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateAmStmt) { clear_has_node(); auto* temp = _impl_.node_.create_am_stmt_; _impl_.node_.create_am_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_am_stmt(::pg_query::CreateAmStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_am_stmt(); _impl_.node_.create_am_stmt_ = value; } // @@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 (node_case() != kCreateAmStmt) { clear_node(); set_has_create_am_stmt(); _impl_.node_.create_am_stmt_ = CreateMaybeMessage<::pg_query::CreateAmStmt>(GetArena()); } return _impl_.node_.create_am_stmt_; } inline ::pg_query::CreateAmStmt* Node::mutable_create_am_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateAmStmt* _msg = _internal_mutable_create_am_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_am_stmt) return _msg; } // .pg_query.CreateTrigStmt create_trig_stmt = 175 [json_name = "CreateTrigStmt"]; inline bool Node::has_create_trig_stmt() const { return node_case() == kCreateTrigStmt; } inline bool Node::_internal_has_create_trig_stmt() const { return node_case() == kCreateTrigStmt; } inline void Node::set_has_create_trig_stmt() { _impl_._oneof_case_[0] = kCreateTrigStmt; } inline void Node::clear_create_trig_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateTrigStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateTrigStmt) { clear_has_node(); auto* temp = _impl_.node_.create_trig_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_trig_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateTrigStmt& Node::_internal_create_trig_stmt() const { return node_case() == kCreateTrigStmt ? *_impl_.node_.create_trig_stmt_ : reinterpret_cast<::pg_query::CreateTrigStmt&>(::pg_query::_CreateTrigStmt_default_instance_); } inline const ::pg_query::CreateTrigStmt& Node::create_trig_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateTrigStmt) { clear_has_node(); auto* temp = _impl_.node_.create_trig_stmt_; _impl_.node_.create_trig_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_trig_stmt(::pg_query::CreateTrigStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_trig_stmt(); _impl_.node_.create_trig_stmt_ = value; } // @@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 (node_case() != kCreateTrigStmt) { clear_node(); set_has_create_trig_stmt(); _impl_.node_.create_trig_stmt_ = CreateMaybeMessage<::pg_query::CreateTrigStmt>(GetArena()); } return _impl_.node_.create_trig_stmt_; } inline ::pg_query::CreateTrigStmt* Node::mutable_create_trig_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateTrigStmt* _msg = _internal_mutable_create_trig_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_trig_stmt) return _msg; } // .pg_query.CreateEventTrigStmt create_event_trig_stmt = 176 [json_name = "CreateEventTrigStmt"]; inline bool Node::has_create_event_trig_stmt() const { return node_case() == kCreateEventTrigStmt; } inline bool Node::_internal_has_create_event_trig_stmt() const { return node_case() == kCreateEventTrigStmt; } inline void Node::set_has_create_event_trig_stmt() { _impl_._oneof_case_[0] = kCreateEventTrigStmt; } inline void Node::clear_create_event_trig_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateEventTrigStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateEventTrigStmt) { clear_has_node(); auto* temp = _impl_.node_.create_event_trig_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_event_trig_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateEventTrigStmt& Node::_internal_create_event_trig_stmt() const { return node_case() == kCreateEventTrigStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateEventTrigStmt) { clear_has_node(); auto* temp = _impl_.node_.create_event_trig_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_event_trig_stmt(); _impl_.node_.create_event_trig_stmt_ = value; } // @@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 (node_case() != kCreateEventTrigStmt) { clear_node(); set_has_create_event_trig_stmt(); _impl_.node_.create_event_trig_stmt_ = CreateMaybeMessage<::pg_query::CreateEventTrigStmt>(GetArena()); } return _impl_.node_.create_event_trig_stmt_; } inline ::pg_query::CreateEventTrigStmt* Node::mutable_create_event_trig_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateEventTrigStmt* _msg = _internal_mutable_create_event_trig_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_event_trig_stmt) return _msg; } // .pg_query.AlterEventTrigStmt alter_event_trig_stmt = 177 [json_name = "AlterEventTrigStmt"]; inline bool Node::has_alter_event_trig_stmt() const { return node_case() == kAlterEventTrigStmt; } inline bool Node::_internal_has_alter_event_trig_stmt() const { return node_case() == kAlterEventTrigStmt; } inline void Node::set_has_alter_event_trig_stmt() { _impl_._oneof_case_[0] = kAlterEventTrigStmt; } inline void Node::clear_alter_event_trig_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterEventTrigStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterEventTrigStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_event_trig_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_event_trig_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterEventTrigStmt& Node::_internal_alter_event_trig_stmt() const { return node_case() == kAlterEventTrigStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterEventTrigStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_event_trig_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_event_trig_stmt(); _impl_.node_.alter_event_trig_stmt_ = value; } // @@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 (node_case() != kAlterEventTrigStmt) { clear_node(); set_has_alter_event_trig_stmt(); _impl_.node_.alter_event_trig_stmt_ = CreateMaybeMessage<::pg_query::AlterEventTrigStmt>(GetArena()); } return _impl_.node_.alter_event_trig_stmt_; } inline ::pg_query::AlterEventTrigStmt* Node::mutable_alter_event_trig_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterEventTrigStmt* _msg = _internal_mutable_alter_event_trig_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_event_trig_stmt) return _msg; } // .pg_query.CreatePLangStmt create_plang_stmt = 178 [json_name = "CreatePLangStmt"]; inline bool Node::has_create_plang_stmt() const { return node_case() == kCreatePlangStmt; } inline bool Node::_internal_has_create_plang_stmt() const { return node_case() == kCreatePlangStmt; } inline void Node::set_has_create_plang_stmt() { _impl_._oneof_case_[0] = kCreatePlangStmt; } inline void Node::clear_create_plang_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreatePlangStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreatePlangStmt) { clear_has_node(); auto* temp = _impl_.node_.create_plang_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_plang_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreatePLangStmt& Node::_internal_create_plang_stmt() const { return node_case() == kCreatePlangStmt ? *_impl_.node_.create_plang_stmt_ : reinterpret_cast<::pg_query::CreatePLangStmt&>(::pg_query::_CreatePLangStmt_default_instance_); } inline const ::pg_query::CreatePLangStmt& Node::create_plang_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreatePlangStmt) { clear_has_node(); auto* temp = _impl_.node_.create_plang_stmt_; _impl_.node_.create_plang_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_plang_stmt(::pg_query::CreatePLangStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_plang_stmt(); _impl_.node_.create_plang_stmt_ = value; } // @@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 (node_case() != kCreatePlangStmt) { clear_node(); set_has_create_plang_stmt(); _impl_.node_.create_plang_stmt_ = CreateMaybeMessage<::pg_query::CreatePLangStmt>(GetArena()); } return _impl_.node_.create_plang_stmt_; } inline ::pg_query::CreatePLangStmt* Node::mutable_create_plang_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreatePLangStmt* _msg = _internal_mutable_create_plang_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_plang_stmt) return _msg; } // .pg_query.CreateRoleStmt create_role_stmt = 179 [json_name = "CreateRoleStmt"]; inline bool Node::has_create_role_stmt() const { return node_case() == kCreateRoleStmt; } inline bool Node::_internal_has_create_role_stmt() const { return node_case() == kCreateRoleStmt; } inline void Node::set_has_create_role_stmt() { _impl_._oneof_case_[0] = kCreateRoleStmt; } inline void Node::clear_create_role_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateRoleStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateRoleStmt) { clear_has_node(); auto* temp = _impl_.node_.create_role_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateRoleStmt& Node::_internal_create_role_stmt() const { return node_case() == kCreateRoleStmt ? *_impl_.node_.create_role_stmt_ : reinterpret_cast<::pg_query::CreateRoleStmt&>(::pg_query::_CreateRoleStmt_default_instance_); } inline const ::pg_query::CreateRoleStmt& Node::create_role_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateRoleStmt) { clear_has_node(); auto* temp = _impl_.node_.create_role_stmt_; _impl_.node_.create_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_role_stmt(::pg_query::CreateRoleStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_role_stmt(); _impl_.node_.create_role_stmt_ = value; } // @@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 (node_case() != kCreateRoleStmt) { clear_node(); set_has_create_role_stmt(); _impl_.node_.create_role_stmt_ = CreateMaybeMessage<::pg_query::CreateRoleStmt>(GetArena()); } return _impl_.node_.create_role_stmt_; } inline ::pg_query::CreateRoleStmt* Node::mutable_create_role_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateRoleStmt* _msg = _internal_mutable_create_role_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_role_stmt) return _msg; } // .pg_query.AlterRoleStmt alter_role_stmt = 180 [json_name = "AlterRoleStmt"]; inline bool Node::has_alter_role_stmt() const { return node_case() == kAlterRoleStmt; } inline bool Node::_internal_has_alter_role_stmt() const { return node_case() == kAlterRoleStmt; } inline void Node::set_has_alter_role_stmt() { _impl_._oneof_case_[0] = kAlterRoleStmt; } inline void Node::clear_alter_role_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterRoleStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterRoleStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_role_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterRoleStmt& Node::_internal_alter_role_stmt() const { return node_case() == kAlterRoleStmt ? *_impl_.node_.alter_role_stmt_ : reinterpret_cast<::pg_query::AlterRoleStmt&>(::pg_query::_AlterRoleStmt_default_instance_); } inline const ::pg_query::AlterRoleStmt& Node::alter_role_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterRoleStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_role_stmt_; _impl_.node_.alter_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_role_stmt(::pg_query::AlterRoleStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_role_stmt(); _impl_.node_.alter_role_stmt_ = value; } // @@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 (node_case() != kAlterRoleStmt) { clear_node(); set_has_alter_role_stmt(); _impl_.node_.alter_role_stmt_ = CreateMaybeMessage<::pg_query::AlterRoleStmt>(GetArena()); } return _impl_.node_.alter_role_stmt_; } inline ::pg_query::AlterRoleStmt* Node::mutable_alter_role_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterRoleStmt* _msg = _internal_mutable_alter_role_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_role_stmt) return _msg; } // .pg_query.AlterRoleSetStmt alter_role_set_stmt = 181 [json_name = "AlterRoleSetStmt"]; inline bool Node::has_alter_role_set_stmt() const { return node_case() == kAlterRoleSetStmt; } inline bool Node::_internal_has_alter_role_set_stmt() const { return node_case() == kAlterRoleSetStmt; } inline void Node::set_has_alter_role_set_stmt() { _impl_._oneof_case_[0] = kAlterRoleSetStmt; } inline void Node::clear_alter_role_set_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterRoleSetStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterRoleSetStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_role_set_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_role_set_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterRoleSetStmt& Node::_internal_alter_role_set_stmt() const { return node_case() == kAlterRoleSetStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterRoleSetStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_role_set_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_role_set_stmt(); _impl_.node_.alter_role_set_stmt_ = value; } // @@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 (node_case() != kAlterRoleSetStmt) { clear_node(); set_has_alter_role_set_stmt(); _impl_.node_.alter_role_set_stmt_ = CreateMaybeMessage<::pg_query::AlterRoleSetStmt>(GetArena()); } return _impl_.node_.alter_role_set_stmt_; } inline ::pg_query::AlterRoleSetStmt* Node::mutable_alter_role_set_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterRoleSetStmt* _msg = _internal_mutable_alter_role_set_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_role_set_stmt) return _msg; } // .pg_query.DropRoleStmt drop_role_stmt = 182 [json_name = "DropRoleStmt"]; inline bool Node::has_drop_role_stmt() const { return node_case() == kDropRoleStmt; } inline bool Node::_internal_has_drop_role_stmt() const { return node_case() == kDropRoleStmt; } inline void Node::set_has_drop_role_stmt() { _impl_._oneof_case_[0] = kDropRoleStmt; } inline void Node::clear_drop_role_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDropRoleStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDropRoleStmt) { clear_has_node(); auto* temp = _impl_.node_.drop_role_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.drop_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropRoleStmt& Node::_internal_drop_role_stmt() const { return node_case() == kDropRoleStmt ? *_impl_.node_.drop_role_stmt_ : reinterpret_cast<::pg_query::DropRoleStmt&>(::pg_query::_DropRoleStmt_default_instance_); } inline const ::pg_query::DropRoleStmt& Node::drop_role_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDropRoleStmt) { clear_has_node(); auto* temp = _impl_.node_.drop_role_stmt_; _impl_.node_.drop_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_drop_role_stmt(::pg_query::DropRoleStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_drop_role_stmt(); _impl_.node_.drop_role_stmt_ = value; } // @@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 (node_case() != kDropRoleStmt) { clear_node(); set_has_drop_role_stmt(); _impl_.node_.drop_role_stmt_ = CreateMaybeMessage<::pg_query::DropRoleStmt>(GetArena()); } return _impl_.node_.drop_role_stmt_; } inline ::pg_query::DropRoleStmt* Node::mutable_drop_role_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DropRoleStmt* _msg = _internal_mutable_drop_role_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_role_stmt) return _msg; } // .pg_query.CreateSeqStmt create_seq_stmt = 183 [json_name = "CreateSeqStmt"]; inline bool Node::has_create_seq_stmt() const { return node_case() == kCreateSeqStmt; } inline bool Node::_internal_has_create_seq_stmt() const { return node_case() == kCreateSeqStmt; } inline void Node::set_has_create_seq_stmt() { _impl_._oneof_case_[0] = kCreateSeqStmt; } inline void Node::clear_create_seq_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateSeqStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateSeqStmt) { clear_has_node(); auto* temp = _impl_.node_.create_seq_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_seq_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateSeqStmt& Node::_internal_create_seq_stmt() const { return node_case() == kCreateSeqStmt ? *_impl_.node_.create_seq_stmt_ : reinterpret_cast<::pg_query::CreateSeqStmt&>(::pg_query::_CreateSeqStmt_default_instance_); } inline const ::pg_query::CreateSeqStmt& Node::create_seq_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateSeqStmt) { clear_has_node(); auto* temp = _impl_.node_.create_seq_stmt_; _impl_.node_.create_seq_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_seq_stmt(::pg_query::CreateSeqStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_seq_stmt(); _impl_.node_.create_seq_stmt_ = value; } // @@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 (node_case() != kCreateSeqStmt) { clear_node(); set_has_create_seq_stmt(); _impl_.node_.create_seq_stmt_ = CreateMaybeMessage<::pg_query::CreateSeqStmt>(GetArena()); } return _impl_.node_.create_seq_stmt_; } inline ::pg_query::CreateSeqStmt* Node::mutable_create_seq_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateSeqStmt* _msg = _internal_mutable_create_seq_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_seq_stmt) return _msg; } // .pg_query.AlterSeqStmt alter_seq_stmt = 184 [json_name = "AlterSeqStmt"]; inline bool Node::has_alter_seq_stmt() const { return node_case() == kAlterSeqStmt; } inline bool Node::_internal_has_alter_seq_stmt() const { return node_case() == kAlterSeqStmt; } inline void Node::set_has_alter_seq_stmt() { _impl_._oneof_case_[0] = kAlterSeqStmt; } inline void Node::clear_alter_seq_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterSeqStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterSeqStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_seq_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_seq_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterSeqStmt& Node::_internal_alter_seq_stmt() const { return node_case() == kAlterSeqStmt ? *_impl_.node_.alter_seq_stmt_ : reinterpret_cast<::pg_query::AlterSeqStmt&>(::pg_query::_AlterSeqStmt_default_instance_); } inline const ::pg_query::AlterSeqStmt& Node::alter_seq_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterSeqStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_seq_stmt_; _impl_.node_.alter_seq_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_seq_stmt(::pg_query::AlterSeqStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_seq_stmt(); _impl_.node_.alter_seq_stmt_ = value; } // @@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 (node_case() != kAlterSeqStmt) { clear_node(); set_has_alter_seq_stmt(); _impl_.node_.alter_seq_stmt_ = CreateMaybeMessage<::pg_query::AlterSeqStmt>(GetArena()); } return _impl_.node_.alter_seq_stmt_; } inline ::pg_query::AlterSeqStmt* Node::mutable_alter_seq_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterSeqStmt* _msg = _internal_mutable_alter_seq_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_seq_stmt) return _msg; } // .pg_query.DefineStmt define_stmt = 185 [json_name = "DefineStmt"]; inline bool Node::has_define_stmt() const { return node_case() == kDefineStmt; } inline bool Node::_internal_has_define_stmt() const { return node_case() == kDefineStmt; } inline void Node::set_has_define_stmt() { _impl_._oneof_case_[0] = kDefineStmt; } inline void Node::clear_define_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDefineStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDefineStmt) { clear_has_node(); auto* temp = _impl_.node_.define_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.define_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DefineStmt& Node::_internal_define_stmt() const { return node_case() == kDefineStmt ? *_impl_.node_.define_stmt_ : reinterpret_cast<::pg_query::DefineStmt&>(::pg_query::_DefineStmt_default_instance_); } inline const ::pg_query::DefineStmt& Node::define_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDefineStmt) { clear_has_node(); auto* temp = _impl_.node_.define_stmt_; _impl_.node_.define_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_define_stmt(::pg_query::DefineStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_define_stmt(); _impl_.node_.define_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.define_stmt) } inline ::pg_query::DefineStmt* Node::_internal_mutable_define_stmt() { if (node_case() != kDefineStmt) { clear_node(); set_has_define_stmt(); _impl_.node_.define_stmt_ = CreateMaybeMessage<::pg_query::DefineStmt>(GetArena()); } return _impl_.node_.define_stmt_; } inline ::pg_query::DefineStmt* Node::mutable_define_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DefineStmt* _msg = _internal_mutable_define_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.define_stmt) return _msg; } // .pg_query.CreateDomainStmt create_domain_stmt = 186 [json_name = "CreateDomainStmt"]; inline bool Node::has_create_domain_stmt() const { return node_case() == kCreateDomainStmt; } inline bool Node::_internal_has_create_domain_stmt() const { return node_case() == kCreateDomainStmt; } inline void Node::set_has_create_domain_stmt() { _impl_._oneof_case_[0] = kCreateDomainStmt; } inline void Node::clear_create_domain_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateDomainStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateDomainStmt) { clear_has_node(); auto* temp = _impl_.node_.create_domain_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_domain_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateDomainStmt& Node::_internal_create_domain_stmt() const { return node_case() == kCreateDomainStmt ? *_impl_.node_.create_domain_stmt_ : reinterpret_cast<::pg_query::CreateDomainStmt&>(::pg_query::_CreateDomainStmt_default_instance_); } inline const ::pg_query::CreateDomainStmt& Node::create_domain_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateDomainStmt) { clear_has_node(); auto* temp = _impl_.node_.create_domain_stmt_; _impl_.node_.create_domain_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_domain_stmt(::pg_query::CreateDomainStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_domain_stmt(); _impl_.node_.create_domain_stmt_ = value; } // @@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 (node_case() != kCreateDomainStmt) { clear_node(); set_has_create_domain_stmt(); _impl_.node_.create_domain_stmt_ = CreateMaybeMessage<::pg_query::CreateDomainStmt>(GetArena()); } return _impl_.node_.create_domain_stmt_; } inline ::pg_query::CreateDomainStmt* Node::mutable_create_domain_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateDomainStmt* _msg = _internal_mutable_create_domain_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_domain_stmt) return _msg; } // .pg_query.CreateOpClassStmt create_op_class_stmt = 187 [json_name = "CreateOpClassStmt"]; inline bool Node::has_create_op_class_stmt() const { return node_case() == kCreateOpClassStmt; } inline bool Node::_internal_has_create_op_class_stmt() const { return node_case() == kCreateOpClassStmt; } inline void Node::set_has_create_op_class_stmt() { _impl_._oneof_case_[0] = kCreateOpClassStmt; } inline void Node::clear_create_op_class_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateOpClassStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateOpClassStmt) { clear_has_node(); auto* temp = _impl_.node_.create_op_class_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_op_class_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateOpClassStmt& Node::_internal_create_op_class_stmt() const { return node_case() == kCreateOpClassStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateOpClassStmt) { clear_has_node(); auto* temp = _impl_.node_.create_op_class_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_op_class_stmt(); _impl_.node_.create_op_class_stmt_ = value; } // @@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 (node_case() != kCreateOpClassStmt) { clear_node(); set_has_create_op_class_stmt(); _impl_.node_.create_op_class_stmt_ = CreateMaybeMessage<::pg_query::CreateOpClassStmt>(GetArena()); } return _impl_.node_.create_op_class_stmt_; } inline ::pg_query::CreateOpClassStmt* Node::mutable_create_op_class_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateOpClassStmt* _msg = _internal_mutable_create_op_class_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_op_class_stmt) return _msg; } // .pg_query.CreateOpClassItem create_op_class_item = 188 [json_name = "CreateOpClassItem"]; inline bool Node::has_create_op_class_item() const { return node_case() == kCreateOpClassItem; } inline bool Node::_internal_has_create_op_class_item() const { return node_case() == kCreateOpClassItem; } inline void Node::set_has_create_op_class_item() { _impl_._oneof_case_[0] = kCreateOpClassItem; } inline void Node::clear_create_op_class_item() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateOpClassItem) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateOpClassItem) { clear_has_node(); auto* temp = _impl_.node_.create_op_class_item_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_op_class_item_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateOpClassItem& Node::_internal_create_op_class_item() const { return node_case() == kCreateOpClassItem ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateOpClassItem) { clear_has_node(); auto* temp = _impl_.node_.create_op_class_item_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_op_class_item(); _impl_.node_.create_op_class_item_ = value; } // @@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 (node_case() != kCreateOpClassItem) { clear_node(); set_has_create_op_class_item(); _impl_.node_.create_op_class_item_ = CreateMaybeMessage<::pg_query::CreateOpClassItem>(GetArena()); } return _impl_.node_.create_op_class_item_; } inline ::pg_query::CreateOpClassItem* Node::mutable_create_op_class_item() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateOpClassItem* _msg = _internal_mutable_create_op_class_item(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_op_class_item) return _msg; } // .pg_query.CreateOpFamilyStmt create_op_family_stmt = 189 [json_name = "CreateOpFamilyStmt"]; inline bool Node::has_create_op_family_stmt() const { return node_case() == kCreateOpFamilyStmt; } inline bool Node::_internal_has_create_op_family_stmt() const { return node_case() == kCreateOpFamilyStmt; } inline void Node::set_has_create_op_family_stmt() { _impl_._oneof_case_[0] = kCreateOpFamilyStmt; } inline void Node::clear_create_op_family_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateOpFamilyStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateOpFamilyStmt) { clear_has_node(); auto* temp = _impl_.node_.create_op_family_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_op_family_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateOpFamilyStmt& Node::_internal_create_op_family_stmt() const { return node_case() == kCreateOpFamilyStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateOpFamilyStmt) { clear_has_node(); auto* temp = _impl_.node_.create_op_family_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_op_family_stmt(); _impl_.node_.create_op_family_stmt_ = value; } // @@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 (node_case() != kCreateOpFamilyStmt) { clear_node(); set_has_create_op_family_stmt(); _impl_.node_.create_op_family_stmt_ = CreateMaybeMessage<::pg_query::CreateOpFamilyStmt>(GetArena()); } return _impl_.node_.create_op_family_stmt_; } inline ::pg_query::CreateOpFamilyStmt* Node::mutable_create_op_family_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateOpFamilyStmt* _msg = _internal_mutable_create_op_family_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_op_family_stmt) return _msg; } // .pg_query.AlterOpFamilyStmt alter_op_family_stmt = 190 [json_name = "AlterOpFamilyStmt"]; inline bool Node::has_alter_op_family_stmt() const { return node_case() == kAlterOpFamilyStmt; } inline bool Node::_internal_has_alter_op_family_stmt() const { return node_case() == kAlterOpFamilyStmt; } inline void Node::set_has_alter_op_family_stmt() { _impl_._oneof_case_[0] = kAlterOpFamilyStmt; } inline void Node::clear_alter_op_family_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterOpFamilyStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterOpFamilyStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_op_family_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_op_family_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterOpFamilyStmt& Node::_internal_alter_op_family_stmt() const { return node_case() == kAlterOpFamilyStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterOpFamilyStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_op_family_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_op_family_stmt(); _impl_.node_.alter_op_family_stmt_ = value; } // @@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 (node_case() != kAlterOpFamilyStmt) { clear_node(); set_has_alter_op_family_stmt(); _impl_.node_.alter_op_family_stmt_ = CreateMaybeMessage<::pg_query::AlterOpFamilyStmt>(GetArena()); } return _impl_.node_.alter_op_family_stmt_; } inline ::pg_query::AlterOpFamilyStmt* Node::mutable_alter_op_family_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterOpFamilyStmt* _msg = _internal_mutable_alter_op_family_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_op_family_stmt) return _msg; } // .pg_query.DropStmt drop_stmt = 191 [json_name = "DropStmt"]; inline bool Node::has_drop_stmt() const { return node_case() == kDropStmt; } inline bool Node::_internal_has_drop_stmt() const { return node_case() == kDropStmt; } inline void Node::set_has_drop_stmt() { _impl_._oneof_case_[0] = kDropStmt; } inline void Node::clear_drop_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDropStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDropStmt) { clear_has_node(); auto* temp = _impl_.node_.drop_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.drop_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropStmt& Node::_internal_drop_stmt() const { return node_case() == kDropStmt ? *_impl_.node_.drop_stmt_ : reinterpret_cast<::pg_query::DropStmt&>(::pg_query::_DropStmt_default_instance_); } inline const ::pg_query::DropStmt& Node::drop_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDropStmt) { clear_has_node(); auto* temp = _impl_.node_.drop_stmt_; _impl_.node_.drop_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_drop_stmt(::pg_query::DropStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_drop_stmt(); _impl_.node_.drop_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_stmt) } inline ::pg_query::DropStmt* Node::_internal_mutable_drop_stmt() { if (node_case() != kDropStmt) { clear_node(); set_has_drop_stmt(); _impl_.node_.drop_stmt_ = CreateMaybeMessage<::pg_query::DropStmt>(GetArena()); } return _impl_.node_.drop_stmt_; } inline ::pg_query::DropStmt* Node::mutable_drop_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DropStmt* _msg = _internal_mutable_drop_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_stmt) return _msg; } // .pg_query.TruncateStmt truncate_stmt = 192 [json_name = "TruncateStmt"]; inline bool Node::has_truncate_stmt() const { return node_case() == kTruncateStmt; } inline bool Node::_internal_has_truncate_stmt() const { return node_case() == kTruncateStmt; } inline void Node::set_has_truncate_stmt() { _impl_._oneof_case_[0] = kTruncateStmt; } inline void Node::clear_truncate_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kTruncateStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kTruncateStmt) { clear_has_node(); auto* temp = _impl_.node_.truncate_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.truncate_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TruncateStmt& Node::_internal_truncate_stmt() const { return node_case() == kTruncateStmt ? *_impl_.node_.truncate_stmt_ : reinterpret_cast<::pg_query::TruncateStmt&>(::pg_query::_TruncateStmt_default_instance_); } inline const ::pg_query::TruncateStmt& Node::truncate_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kTruncateStmt) { clear_has_node(); auto* temp = _impl_.node_.truncate_stmt_; _impl_.node_.truncate_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_truncate_stmt(::pg_query::TruncateStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_truncate_stmt(); _impl_.node_.truncate_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.truncate_stmt) } inline ::pg_query::TruncateStmt* Node::_internal_mutable_truncate_stmt() { if (node_case() != kTruncateStmt) { clear_node(); set_has_truncate_stmt(); _impl_.node_.truncate_stmt_ = CreateMaybeMessage<::pg_query::TruncateStmt>(GetArena()); } return _impl_.node_.truncate_stmt_; } inline ::pg_query::TruncateStmt* Node::mutable_truncate_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TruncateStmt* _msg = _internal_mutable_truncate_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.truncate_stmt) return _msg; } // .pg_query.CommentStmt comment_stmt = 193 [json_name = "CommentStmt"]; inline bool Node::has_comment_stmt() const { return node_case() == kCommentStmt; } inline bool Node::_internal_has_comment_stmt() const { return node_case() == kCommentStmt; } inline void Node::set_has_comment_stmt() { _impl_._oneof_case_[0] = kCommentStmt; } inline void Node::clear_comment_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCommentStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCommentStmt) { clear_has_node(); auto* temp = _impl_.node_.comment_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.comment_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CommentStmt& Node::_internal_comment_stmt() const { return node_case() == kCommentStmt ? *_impl_.node_.comment_stmt_ : reinterpret_cast<::pg_query::CommentStmt&>(::pg_query::_CommentStmt_default_instance_); } inline const ::pg_query::CommentStmt& Node::comment_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCommentStmt) { clear_has_node(); auto* temp = _impl_.node_.comment_stmt_; _impl_.node_.comment_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_comment_stmt(::pg_query::CommentStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_comment_stmt(); _impl_.node_.comment_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.comment_stmt) } inline ::pg_query::CommentStmt* Node::_internal_mutable_comment_stmt() { if (node_case() != kCommentStmt) { clear_node(); set_has_comment_stmt(); _impl_.node_.comment_stmt_ = CreateMaybeMessage<::pg_query::CommentStmt>(GetArena()); } return _impl_.node_.comment_stmt_; } inline ::pg_query::CommentStmt* Node::mutable_comment_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CommentStmt* _msg = _internal_mutable_comment_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.comment_stmt) return _msg; } // .pg_query.SecLabelStmt sec_label_stmt = 194 [json_name = "SecLabelStmt"]; inline bool Node::has_sec_label_stmt() const { return node_case() == kSecLabelStmt; } inline bool Node::_internal_has_sec_label_stmt() const { return node_case() == kSecLabelStmt; } inline void Node::set_has_sec_label_stmt() { _impl_._oneof_case_[0] = kSecLabelStmt; } inline void Node::clear_sec_label_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kSecLabelStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kSecLabelStmt) { clear_has_node(); auto* temp = _impl_.node_.sec_label_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.sec_label_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SecLabelStmt& Node::_internal_sec_label_stmt() const { return node_case() == kSecLabelStmt ? *_impl_.node_.sec_label_stmt_ : reinterpret_cast<::pg_query::SecLabelStmt&>(::pg_query::_SecLabelStmt_default_instance_); } inline const ::pg_query::SecLabelStmt& Node::sec_label_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kSecLabelStmt) { clear_has_node(); auto* temp = _impl_.node_.sec_label_stmt_; _impl_.node_.sec_label_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_sec_label_stmt(::pg_query::SecLabelStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_sec_label_stmt(); _impl_.node_.sec_label_stmt_ = value; } // @@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 (node_case() != kSecLabelStmt) { clear_node(); set_has_sec_label_stmt(); _impl_.node_.sec_label_stmt_ = CreateMaybeMessage<::pg_query::SecLabelStmt>(GetArena()); } return _impl_.node_.sec_label_stmt_; } inline ::pg_query::SecLabelStmt* Node::mutable_sec_label_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::SecLabelStmt* _msg = _internal_mutable_sec_label_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.sec_label_stmt) return _msg; } // .pg_query.DeclareCursorStmt declare_cursor_stmt = 195 [json_name = "DeclareCursorStmt"]; inline bool Node::has_declare_cursor_stmt() const { return node_case() == kDeclareCursorStmt; } inline bool Node::_internal_has_declare_cursor_stmt() const { return node_case() == kDeclareCursorStmt; } inline void Node::set_has_declare_cursor_stmt() { _impl_._oneof_case_[0] = kDeclareCursorStmt; } inline void Node::clear_declare_cursor_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDeclareCursorStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDeclareCursorStmt) { clear_has_node(); auto* temp = _impl_.node_.declare_cursor_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.declare_cursor_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DeclareCursorStmt& Node::_internal_declare_cursor_stmt() const { return node_case() == kDeclareCursorStmt ? *_impl_.node_.declare_cursor_stmt_ : reinterpret_cast<::pg_query::DeclareCursorStmt&>(::pg_query::_DeclareCursorStmt_default_instance_); } inline const ::pg_query::DeclareCursorStmt& Node::declare_cursor_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDeclareCursorStmt) { clear_has_node(); auto* temp = _impl_.node_.declare_cursor_stmt_; _impl_.node_.declare_cursor_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_declare_cursor_stmt(::pg_query::DeclareCursorStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_declare_cursor_stmt(); _impl_.node_.declare_cursor_stmt_ = value; } // @@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 (node_case() != kDeclareCursorStmt) { clear_node(); set_has_declare_cursor_stmt(); _impl_.node_.declare_cursor_stmt_ = CreateMaybeMessage<::pg_query::DeclareCursorStmt>(GetArena()); } return _impl_.node_.declare_cursor_stmt_; } inline ::pg_query::DeclareCursorStmt* Node::mutable_declare_cursor_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DeclareCursorStmt* _msg = _internal_mutable_declare_cursor_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.declare_cursor_stmt) return _msg; } // .pg_query.ClosePortalStmt close_portal_stmt = 196 [json_name = "ClosePortalStmt"]; inline bool Node::has_close_portal_stmt() const { return node_case() == kClosePortalStmt; } inline bool Node::_internal_has_close_portal_stmt() const { return node_case() == kClosePortalStmt; } inline void Node::set_has_close_portal_stmt() { _impl_._oneof_case_[0] = kClosePortalStmt; } inline void Node::clear_close_portal_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kClosePortalStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kClosePortalStmt) { clear_has_node(); auto* temp = _impl_.node_.close_portal_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.close_portal_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ClosePortalStmt& Node::_internal_close_portal_stmt() const { return node_case() == kClosePortalStmt ? *_impl_.node_.close_portal_stmt_ : reinterpret_cast<::pg_query::ClosePortalStmt&>(::pg_query::_ClosePortalStmt_default_instance_); } inline const ::pg_query::ClosePortalStmt& Node::close_portal_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kClosePortalStmt) { clear_has_node(); auto* temp = _impl_.node_.close_portal_stmt_; _impl_.node_.close_portal_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_close_portal_stmt(::pg_query::ClosePortalStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_close_portal_stmt(); _impl_.node_.close_portal_stmt_ = value; } // @@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 (node_case() != kClosePortalStmt) { clear_node(); set_has_close_portal_stmt(); _impl_.node_.close_portal_stmt_ = CreateMaybeMessage<::pg_query::ClosePortalStmt>(GetArena()); } return _impl_.node_.close_portal_stmt_; } inline ::pg_query::ClosePortalStmt* Node::mutable_close_portal_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ClosePortalStmt* _msg = _internal_mutable_close_portal_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.close_portal_stmt) return _msg; } // .pg_query.FetchStmt fetch_stmt = 197 [json_name = "FetchStmt"]; inline bool Node::has_fetch_stmt() const { return node_case() == kFetchStmt; } inline bool Node::_internal_has_fetch_stmt() const { return node_case() == kFetchStmt; } inline void Node::set_has_fetch_stmt() { _impl_._oneof_case_[0] = kFetchStmt; } inline void Node::clear_fetch_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kFetchStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kFetchStmt) { clear_has_node(); auto* temp = _impl_.node_.fetch_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.fetch_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FetchStmt& Node::_internal_fetch_stmt() const { return node_case() == kFetchStmt ? *_impl_.node_.fetch_stmt_ : reinterpret_cast<::pg_query::FetchStmt&>(::pg_query::_FetchStmt_default_instance_); } inline const ::pg_query::FetchStmt& Node::fetch_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kFetchStmt) { clear_has_node(); auto* temp = _impl_.node_.fetch_stmt_; _impl_.node_.fetch_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_fetch_stmt(::pg_query::FetchStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_fetch_stmt(); _impl_.node_.fetch_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.fetch_stmt) } inline ::pg_query::FetchStmt* Node::_internal_mutable_fetch_stmt() { if (node_case() != kFetchStmt) { clear_node(); set_has_fetch_stmt(); _impl_.node_.fetch_stmt_ = CreateMaybeMessage<::pg_query::FetchStmt>(GetArena()); } return _impl_.node_.fetch_stmt_; } inline ::pg_query::FetchStmt* Node::mutable_fetch_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::FetchStmt* _msg = _internal_mutable_fetch_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.fetch_stmt) return _msg; } // .pg_query.IndexStmt index_stmt = 198 [json_name = "IndexStmt"]; inline bool Node::has_index_stmt() const { return node_case() == kIndexStmt; } inline bool Node::_internal_has_index_stmt() const { return node_case() == kIndexStmt; } inline void Node::set_has_index_stmt() { _impl_._oneof_case_[0] = kIndexStmt; } inline void Node::clear_index_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kIndexStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kIndexStmt) { clear_has_node(); auto* temp = _impl_.node_.index_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.index_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::IndexStmt& Node::_internal_index_stmt() const { return node_case() == kIndexStmt ? *_impl_.node_.index_stmt_ : reinterpret_cast<::pg_query::IndexStmt&>(::pg_query::_IndexStmt_default_instance_); } inline const ::pg_query::IndexStmt& Node::index_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kIndexStmt) { clear_has_node(); auto* temp = _impl_.node_.index_stmt_; _impl_.node_.index_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_index_stmt(::pg_query::IndexStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_index_stmt(); _impl_.node_.index_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.index_stmt) } inline ::pg_query::IndexStmt* Node::_internal_mutable_index_stmt() { if (node_case() != kIndexStmt) { clear_node(); set_has_index_stmt(); _impl_.node_.index_stmt_ = CreateMaybeMessage<::pg_query::IndexStmt>(GetArena()); } return _impl_.node_.index_stmt_; } inline ::pg_query::IndexStmt* Node::mutable_index_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::IndexStmt* _msg = _internal_mutable_index_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.index_stmt) return _msg; } // .pg_query.CreateStatsStmt create_stats_stmt = 199 [json_name = "CreateStatsStmt"]; inline bool Node::has_create_stats_stmt() const { return node_case() == kCreateStatsStmt; } inline bool Node::_internal_has_create_stats_stmt() const { return node_case() == kCreateStatsStmt; } inline void Node::set_has_create_stats_stmt() { _impl_._oneof_case_[0] = kCreateStatsStmt; } inline void Node::clear_create_stats_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateStatsStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateStatsStmt) { clear_has_node(); auto* temp = _impl_.node_.create_stats_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_stats_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateStatsStmt& Node::_internal_create_stats_stmt() const { return node_case() == kCreateStatsStmt ? *_impl_.node_.create_stats_stmt_ : reinterpret_cast<::pg_query::CreateStatsStmt&>(::pg_query::_CreateStatsStmt_default_instance_); } inline const ::pg_query::CreateStatsStmt& Node::create_stats_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateStatsStmt) { clear_has_node(); auto* temp = _impl_.node_.create_stats_stmt_; _impl_.node_.create_stats_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_stats_stmt(::pg_query::CreateStatsStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_stats_stmt(); _impl_.node_.create_stats_stmt_ = value; } // @@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 (node_case() != kCreateStatsStmt) { clear_node(); set_has_create_stats_stmt(); _impl_.node_.create_stats_stmt_ = CreateMaybeMessage<::pg_query::CreateStatsStmt>(GetArena()); } return _impl_.node_.create_stats_stmt_; } inline ::pg_query::CreateStatsStmt* Node::mutable_create_stats_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateStatsStmt* _msg = _internal_mutable_create_stats_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_stats_stmt) return _msg; } // .pg_query.StatsElem stats_elem = 200 [json_name = "StatsElem"]; inline bool Node::has_stats_elem() const { return node_case() == kStatsElem; } inline bool Node::_internal_has_stats_elem() const { return node_case() == kStatsElem; } inline void Node::set_has_stats_elem() { _impl_._oneof_case_[0] = kStatsElem; } inline void Node::clear_stats_elem() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kStatsElem) { if (GetArena() == nullptr) { delete _impl_.node_.stats_elem_; } clear_has_node(); } } inline ::pg_query::StatsElem* Node::release_stats_elem() { // @@protoc_insertion_point(field_release:pg_query.Node.stats_elem) if (node_case() == kStatsElem) { clear_has_node(); auto* temp = _impl_.node_.stats_elem_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.stats_elem_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::StatsElem& Node::_internal_stats_elem() const { return node_case() == kStatsElem ? *_impl_.node_.stats_elem_ : reinterpret_cast<::pg_query::StatsElem&>(::pg_query::_StatsElem_default_instance_); } inline const ::pg_query::StatsElem& Node::stats_elem() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.stats_elem) return _internal_stats_elem(); } inline ::pg_query::StatsElem* Node::unsafe_arena_release_stats_elem() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.stats_elem) if (node_case() == kStatsElem) { clear_has_node(); auto* temp = _impl_.node_.stats_elem_; _impl_.node_.stats_elem_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_stats_elem(::pg_query::StatsElem* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_stats_elem(); _impl_.node_.stats_elem_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.stats_elem) } inline ::pg_query::StatsElem* Node::_internal_mutable_stats_elem() { if (node_case() != kStatsElem) { clear_node(); set_has_stats_elem(); _impl_.node_.stats_elem_ = CreateMaybeMessage<::pg_query::StatsElem>(GetArena()); } return _impl_.node_.stats_elem_; } inline ::pg_query::StatsElem* Node::mutable_stats_elem() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::StatsElem* _msg = _internal_mutable_stats_elem(); // @@protoc_insertion_point(field_mutable:pg_query.Node.stats_elem) return _msg; } // .pg_query.AlterStatsStmt alter_stats_stmt = 201 [json_name = "AlterStatsStmt"]; inline bool Node::has_alter_stats_stmt() const { return node_case() == kAlterStatsStmt; } inline bool Node::_internal_has_alter_stats_stmt() const { return node_case() == kAlterStatsStmt; } inline void Node::set_has_alter_stats_stmt() { _impl_._oneof_case_[0] = kAlterStatsStmt; } inline void Node::clear_alter_stats_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterStatsStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterStatsStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_stats_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_stats_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterStatsStmt& Node::_internal_alter_stats_stmt() const { return node_case() == kAlterStatsStmt ? *_impl_.node_.alter_stats_stmt_ : reinterpret_cast<::pg_query::AlterStatsStmt&>(::pg_query::_AlterStatsStmt_default_instance_); } inline const ::pg_query::AlterStatsStmt& Node::alter_stats_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterStatsStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_stats_stmt_; _impl_.node_.alter_stats_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_stats_stmt(::pg_query::AlterStatsStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_stats_stmt(); _impl_.node_.alter_stats_stmt_ = value; } // @@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 (node_case() != kAlterStatsStmt) { clear_node(); set_has_alter_stats_stmt(); _impl_.node_.alter_stats_stmt_ = CreateMaybeMessage<::pg_query::AlterStatsStmt>(GetArena()); } return _impl_.node_.alter_stats_stmt_; } inline ::pg_query::AlterStatsStmt* Node::mutable_alter_stats_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterStatsStmt* _msg = _internal_mutable_alter_stats_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_stats_stmt) return _msg; } // .pg_query.CreateFunctionStmt create_function_stmt = 202 [json_name = "CreateFunctionStmt"]; inline bool Node::has_create_function_stmt() const { return node_case() == kCreateFunctionStmt; } inline bool Node::_internal_has_create_function_stmt() const { return node_case() == kCreateFunctionStmt; } inline void Node::set_has_create_function_stmt() { _impl_._oneof_case_[0] = kCreateFunctionStmt; } inline void Node::clear_create_function_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateFunctionStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateFunctionStmt) { clear_has_node(); auto* temp = _impl_.node_.create_function_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_function_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateFunctionStmt& Node::_internal_create_function_stmt() const { return node_case() == kCreateFunctionStmt ? *_impl_.node_.create_function_stmt_ : reinterpret_cast<::pg_query::CreateFunctionStmt&>(::pg_query::_CreateFunctionStmt_default_instance_); } inline const ::pg_query::CreateFunctionStmt& Node::create_function_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateFunctionStmt) { clear_has_node(); auto* temp = _impl_.node_.create_function_stmt_; _impl_.node_.create_function_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_function_stmt(::pg_query::CreateFunctionStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_function_stmt(); _impl_.node_.create_function_stmt_ = value; } // @@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 (node_case() != kCreateFunctionStmt) { clear_node(); set_has_create_function_stmt(); _impl_.node_.create_function_stmt_ = CreateMaybeMessage<::pg_query::CreateFunctionStmt>(GetArena()); } return _impl_.node_.create_function_stmt_; } inline ::pg_query::CreateFunctionStmt* Node::mutable_create_function_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateFunctionStmt* _msg = _internal_mutable_create_function_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_function_stmt) return _msg; } // .pg_query.FunctionParameter function_parameter = 203 [json_name = "FunctionParameter"]; inline bool Node::has_function_parameter() const { return node_case() == kFunctionParameter; } inline bool Node::_internal_has_function_parameter() const { return node_case() == kFunctionParameter; } inline void Node::set_has_function_parameter() { _impl_._oneof_case_[0] = kFunctionParameter; } inline void Node::clear_function_parameter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kFunctionParameter) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kFunctionParameter) { clear_has_node(); auto* temp = _impl_.node_.function_parameter_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.function_parameter_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FunctionParameter& Node::_internal_function_parameter() const { return node_case() == kFunctionParameter ? *_impl_.node_.function_parameter_ : reinterpret_cast<::pg_query::FunctionParameter&>(::pg_query::_FunctionParameter_default_instance_); } inline const ::pg_query::FunctionParameter& Node::function_parameter() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kFunctionParameter) { clear_has_node(); auto* temp = _impl_.node_.function_parameter_; _impl_.node_.function_parameter_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_function_parameter(::pg_query::FunctionParameter* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_function_parameter(); _impl_.node_.function_parameter_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.function_parameter) } inline ::pg_query::FunctionParameter* Node::_internal_mutable_function_parameter() { if (node_case() != kFunctionParameter) { clear_node(); set_has_function_parameter(); _impl_.node_.function_parameter_ = CreateMaybeMessage<::pg_query::FunctionParameter>(GetArena()); } return _impl_.node_.function_parameter_; } inline ::pg_query::FunctionParameter* Node::mutable_function_parameter() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::FunctionParameter* _msg = _internal_mutable_function_parameter(); // @@protoc_insertion_point(field_mutable:pg_query.Node.function_parameter) return _msg; } // .pg_query.AlterFunctionStmt alter_function_stmt = 204 [json_name = "AlterFunctionStmt"]; inline bool Node::has_alter_function_stmt() const { return node_case() == kAlterFunctionStmt; } inline bool Node::_internal_has_alter_function_stmt() const { return node_case() == kAlterFunctionStmt; } inline void Node::set_has_alter_function_stmt() { _impl_._oneof_case_[0] = kAlterFunctionStmt; } inline void Node::clear_alter_function_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterFunctionStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterFunctionStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_function_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_function_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterFunctionStmt& Node::_internal_alter_function_stmt() const { return node_case() == kAlterFunctionStmt ? *_impl_.node_.alter_function_stmt_ : reinterpret_cast<::pg_query::AlterFunctionStmt&>(::pg_query::_AlterFunctionStmt_default_instance_); } inline const ::pg_query::AlterFunctionStmt& Node::alter_function_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterFunctionStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_function_stmt_; _impl_.node_.alter_function_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_function_stmt(::pg_query::AlterFunctionStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_function_stmt(); _impl_.node_.alter_function_stmt_ = value; } // @@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 (node_case() != kAlterFunctionStmt) { clear_node(); set_has_alter_function_stmt(); _impl_.node_.alter_function_stmt_ = CreateMaybeMessage<::pg_query::AlterFunctionStmt>(GetArena()); } return _impl_.node_.alter_function_stmt_; } inline ::pg_query::AlterFunctionStmt* Node::mutable_alter_function_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterFunctionStmt* _msg = _internal_mutable_alter_function_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_function_stmt) return _msg; } // .pg_query.DoStmt do_stmt = 205 [json_name = "DoStmt"]; inline bool Node::has_do_stmt() const { return node_case() == kDoStmt; } inline bool Node::_internal_has_do_stmt() const { return node_case() == kDoStmt; } inline void Node::set_has_do_stmt() { _impl_._oneof_case_[0] = kDoStmt; } inline void Node::clear_do_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDoStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDoStmt) { clear_has_node(); auto* temp = _impl_.node_.do_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.do_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DoStmt& Node::_internal_do_stmt() const { return node_case() == kDoStmt ? *_impl_.node_.do_stmt_ : reinterpret_cast<::pg_query::DoStmt&>(::pg_query::_DoStmt_default_instance_); } inline const ::pg_query::DoStmt& Node::do_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDoStmt) { clear_has_node(); auto* temp = _impl_.node_.do_stmt_; _impl_.node_.do_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_do_stmt(::pg_query::DoStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_do_stmt(); _impl_.node_.do_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.do_stmt) } inline ::pg_query::DoStmt* Node::_internal_mutable_do_stmt() { if (node_case() != kDoStmt) { clear_node(); set_has_do_stmt(); _impl_.node_.do_stmt_ = CreateMaybeMessage<::pg_query::DoStmt>(GetArena()); } return _impl_.node_.do_stmt_; } inline ::pg_query::DoStmt* Node::mutable_do_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DoStmt* _msg = _internal_mutable_do_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.do_stmt) return _msg; } // .pg_query.InlineCodeBlock inline_code_block = 206 [json_name = "InlineCodeBlock"]; inline bool Node::has_inline_code_block() const { return node_case() == kInlineCodeBlock; } inline bool Node::_internal_has_inline_code_block() const { return node_case() == kInlineCodeBlock; } inline void Node::set_has_inline_code_block() { _impl_._oneof_case_[0] = kInlineCodeBlock; } inline void Node::clear_inline_code_block() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kInlineCodeBlock) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kInlineCodeBlock) { clear_has_node(); auto* temp = _impl_.node_.inline_code_block_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.inline_code_block_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::InlineCodeBlock& Node::_internal_inline_code_block() const { return node_case() == kInlineCodeBlock ? *_impl_.node_.inline_code_block_ : reinterpret_cast<::pg_query::InlineCodeBlock&>(::pg_query::_InlineCodeBlock_default_instance_); } inline const ::pg_query::InlineCodeBlock& Node::inline_code_block() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kInlineCodeBlock) { clear_has_node(); auto* temp = _impl_.node_.inline_code_block_; _impl_.node_.inline_code_block_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_inline_code_block(::pg_query::InlineCodeBlock* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_inline_code_block(); _impl_.node_.inline_code_block_ = value; } // @@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 (node_case() != kInlineCodeBlock) { clear_node(); set_has_inline_code_block(); _impl_.node_.inline_code_block_ = CreateMaybeMessage<::pg_query::InlineCodeBlock>(GetArena()); } return _impl_.node_.inline_code_block_; } inline ::pg_query::InlineCodeBlock* Node::mutable_inline_code_block() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::InlineCodeBlock* _msg = _internal_mutable_inline_code_block(); // @@protoc_insertion_point(field_mutable:pg_query.Node.inline_code_block) return _msg; } // .pg_query.CallStmt call_stmt = 207 [json_name = "CallStmt"]; inline bool Node::has_call_stmt() const { return node_case() == kCallStmt; } inline bool Node::_internal_has_call_stmt() const { return node_case() == kCallStmt; } inline void Node::set_has_call_stmt() { _impl_._oneof_case_[0] = kCallStmt; } inline void Node::clear_call_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCallStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCallStmt) { clear_has_node(); auto* temp = _impl_.node_.call_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.call_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CallStmt& Node::_internal_call_stmt() const { return node_case() == kCallStmt ? *_impl_.node_.call_stmt_ : reinterpret_cast<::pg_query::CallStmt&>(::pg_query::_CallStmt_default_instance_); } inline const ::pg_query::CallStmt& Node::call_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCallStmt) { clear_has_node(); auto* temp = _impl_.node_.call_stmt_; _impl_.node_.call_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_call_stmt(::pg_query::CallStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_call_stmt(); _impl_.node_.call_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.call_stmt) } inline ::pg_query::CallStmt* Node::_internal_mutable_call_stmt() { if (node_case() != kCallStmt) { clear_node(); set_has_call_stmt(); _impl_.node_.call_stmt_ = CreateMaybeMessage<::pg_query::CallStmt>(GetArena()); } return _impl_.node_.call_stmt_; } inline ::pg_query::CallStmt* Node::mutable_call_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CallStmt* _msg = _internal_mutable_call_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.call_stmt) return _msg; } // .pg_query.CallContext call_context = 208 [json_name = "CallContext"]; inline bool Node::has_call_context() const { return node_case() == kCallContext; } inline bool Node::_internal_has_call_context() const { return node_case() == kCallContext; } inline void Node::set_has_call_context() { _impl_._oneof_case_[0] = kCallContext; } inline void Node::clear_call_context() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCallContext) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCallContext) { clear_has_node(); auto* temp = _impl_.node_.call_context_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.call_context_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CallContext& Node::_internal_call_context() const { return node_case() == kCallContext ? *_impl_.node_.call_context_ : reinterpret_cast<::pg_query::CallContext&>(::pg_query::_CallContext_default_instance_); } inline const ::pg_query::CallContext& Node::call_context() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCallContext) { clear_has_node(); auto* temp = _impl_.node_.call_context_; _impl_.node_.call_context_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_call_context(::pg_query::CallContext* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_call_context(); _impl_.node_.call_context_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.call_context) } inline ::pg_query::CallContext* Node::_internal_mutable_call_context() { if (node_case() != kCallContext) { clear_node(); set_has_call_context(); _impl_.node_.call_context_ = CreateMaybeMessage<::pg_query::CallContext>(GetArena()); } return _impl_.node_.call_context_; } inline ::pg_query::CallContext* Node::mutable_call_context() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CallContext* _msg = _internal_mutable_call_context(); // @@protoc_insertion_point(field_mutable:pg_query.Node.call_context) return _msg; } // .pg_query.RenameStmt rename_stmt = 209 [json_name = "RenameStmt"]; inline bool Node::has_rename_stmt() const { return node_case() == kRenameStmt; } inline bool Node::_internal_has_rename_stmt() const { return node_case() == kRenameStmt; } inline void Node::set_has_rename_stmt() { _impl_._oneof_case_[0] = kRenameStmt; } inline void Node::clear_rename_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRenameStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRenameStmt) { clear_has_node(); auto* temp = _impl_.node_.rename_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.rename_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RenameStmt& Node::_internal_rename_stmt() const { return node_case() == kRenameStmt ? *_impl_.node_.rename_stmt_ : reinterpret_cast<::pg_query::RenameStmt&>(::pg_query::_RenameStmt_default_instance_); } inline const ::pg_query::RenameStmt& Node::rename_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRenameStmt) { clear_has_node(); auto* temp = _impl_.node_.rename_stmt_; _impl_.node_.rename_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_rename_stmt(::pg_query::RenameStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_rename_stmt(); _impl_.node_.rename_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.rename_stmt) } inline ::pg_query::RenameStmt* Node::_internal_mutable_rename_stmt() { if (node_case() != kRenameStmt) { clear_node(); set_has_rename_stmt(); _impl_.node_.rename_stmt_ = CreateMaybeMessage<::pg_query::RenameStmt>(GetArena()); } return _impl_.node_.rename_stmt_; } inline ::pg_query::RenameStmt* Node::mutable_rename_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RenameStmt* _msg = _internal_mutable_rename_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.rename_stmt) return _msg; } // .pg_query.AlterObjectDependsStmt alter_object_depends_stmt = 210 [json_name = "AlterObjectDependsStmt"]; inline bool Node::has_alter_object_depends_stmt() const { return node_case() == kAlterObjectDependsStmt; } inline bool Node::_internal_has_alter_object_depends_stmt() const { return node_case() == kAlterObjectDependsStmt; } inline void Node::set_has_alter_object_depends_stmt() { _impl_._oneof_case_[0] = kAlterObjectDependsStmt; } inline void Node::clear_alter_object_depends_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterObjectDependsStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterObjectDependsStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_object_depends_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_object_depends_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterObjectDependsStmt& Node::_internal_alter_object_depends_stmt() const { return node_case() == kAlterObjectDependsStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterObjectDependsStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_object_depends_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_object_depends_stmt(); _impl_.node_.alter_object_depends_stmt_ = value; } // @@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 (node_case() != kAlterObjectDependsStmt) { clear_node(); set_has_alter_object_depends_stmt(); _impl_.node_.alter_object_depends_stmt_ = CreateMaybeMessage<::pg_query::AlterObjectDependsStmt>(GetArena()); } return _impl_.node_.alter_object_depends_stmt_; } inline ::pg_query::AlterObjectDependsStmt* Node::mutable_alter_object_depends_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterObjectDependsStmt* _msg = _internal_mutable_alter_object_depends_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_object_depends_stmt) return _msg; } // .pg_query.AlterObjectSchemaStmt alter_object_schema_stmt = 211 [json_name = "AlterObjectSchemaStmt"]; inline bool Node::has_alter_object_schema_stmt() const { return node_case() == kAlterObjectSchemaStmt; } inline bool Node::_internal_has_alter_object_schema_stmt() const { return node_case() == kAlterObjectSchemaStmt; } inline void Node::set_has_alter_object_schema_stmt() { _impl_._oneof_case_[0] = kAlterObjectSchemaStmt; } inline void Node::clear_alter_object_schema_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterObjectSchemaStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterObjectSchemaStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_object_schema_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_object_schema_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterObjectSchemaStmt& Node::_internal_alter_object_schema_stmt() const { return node_case() == kAlterObjectSchemaStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterObjectSchemaStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_object_schema_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_object_schema_stmt(); _impl_.node_.alter_object_schema_stmt_ = value; } // @@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 (node_case() != kAlterObjectSchemaStmt) { clear_node(); set_has_alter_object_schema_stmt(); _impl_.node_.alter_object_schema_stmt_ = CreateMaybeMessage<::pg_query::AlterObjectSchemaStmt>(GetArena()); } return _impl_.node_.alter_object_schema_stmt_; } inline ::pg_query::AlterObjectSchemaStmt* Node::mutable_alter_object_schema_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterObjectSchemaStmt* _msg = _internal_mutable_alter_object_schema_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_object_schema_stmt) return _msg; } // .pg_query.AlterOwnerStmt alter_owner_stmt = 212 [json_name = "AlterOwnerStmt"]; inline bool Node::has_alter_owner_stmt() const { return node_case() == kAlterOwnerStmt; } inline bool Node::_internal_has_alter_owner_stmt() const { return node_case() == kAlterOwnerStmt; } inline void Node::set_has_alter_owner_stmt() { _impl_._oneof_case_[0] = kAlterOwnerStmt; } inline void Node::clear_alter_owner_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterOwnerStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterOwnerStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_owner_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_owner_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterOwnerStmt& Node::_internal_alter_owner_stmt() const { return node_case() == kAlterOwnerStmt ? *_impl_.node_.alter_owner_stmt_ : reinterpret_cast<::pg_query::AlterOwnerStmt&>(::pg_query::_AlterOwnerStmt_default_instance_); } inline const ::pg_query::AlterOwnerStmt& Node::alter_owner_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterOwnerStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_owner_stmt_; _impl_.node_.alter_owner_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_owner_stmt(::pg_query::AlterOwnerStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_owner_stmt(); _impl_.node_.alter_owner_stmt_ = value; } // @@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 (node_case() != kAlterOwnerStmt) { clear_node(); set_has_alter_owner_stmt(); _impl_.node_.alter_owner_stmt_ = CreateMaybeMessage<::pg_query::AlterOwnerStmt>(GetArena()); } return _impl_.node_.alter_owner_stmt_; } inline ::pg_query::AlterOwnerStmt* Node::mutable_alter_owner_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterOwnerStmt* _msg = _internal_mutable_alter_owner_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_owner_stmt) return _msg; } // .pg_query.AlterOperatorStmt alter_operator_stmt = 213 [json_name = "AlterOperatorStmt"]; inline bool Node::has_alter_operator_stmt() const { return node_case() == kAlterOperatorStmt; } inline bool Node::_internal_has_alter_operator_stmt() const { return node_case() == kAlterOperatorStmt; } inline void Node::set_has_alter_operator_stmt() { _impl_._oneof_case_[0] = kAlterOperatorStmt; } inline void Node::clear_alter_operator_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterOperatorStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterOperatorStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_operator_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_operator_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterOperatorStmt& Node::_internal_alter_operator_stmt() const { return node_case() == kAlterOperatorStmt ? *_impl_.node_.alter_operator_stmt_ : reinterpret_cast<::pg_query::AlterOperatorStmt&>(::pg_query::_AlterOperatorStmt_default_instance_); } inline const ::pg_query::AlterOperatorStmt& Node::alter_operator_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterOperatorStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_operator_stmt_; _impl_.node_.alter_operator_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_operator_stmt(::pg_query::AlterOperatorStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_operator_stmt(); _impl_.node_.alter_operator_stmt_ = value; } // @@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 (node_case() != kAlterOperatorStmt) { clear_node(); set_has_alter_operator_stmt(); _impl_.node_.alter_operator_stmt_ = CreateMaybeMessage<::pg_query::AlterOperatorStmt>(GetArena()); } return _impl_.node_.alter_operator_stmt_; } inline ::pg_query::AlterOperatorStmt* Node::mutable_alter_operator_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterOperatorStmt* _msg = _internal_mutable_alter_operator_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_operator_stmt) return _msg; } // .pg_query.AlterTypeStmt alter_type_stmt = 214 [json_name = "AlterTypeStmt"]; inline bool Node::has_alter_type_stmt() const { return node_case() == kAlterTypeStmt; } inline bool Node::_internal_has_alter_type_stmt() const { return node_case() == kAlterTypeStmt; } inline void Node::set_has_alter_type_stmt() { _impl_._oneof_case_[0] = kAlterTypeStmt; } inline void Node::clear_alter_type_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterTypeStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterTypeStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_type_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_type_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterTypeStmt& Node::_internal_alter_type_stmt() const { return node_case() == kAlterTypeStmt ? *_impl_.node_.alter_type_stmt_ : reinterpret_cast<::pg_query::AlterTypeStmt&>(::pg_query::_AlterTypeStmt_default_instance_); } inline const ::pg_query::AlterTypeStmt& Node::alter_type_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterTypeStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_type_stmt_; _impl_.node_.alter_type_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_type_stmt(::pg_query::AlterTypeStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_type_stmt(); _impl_.node_.alter_type_stmt_ = value; } // @@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 (node_case() != kAlterTypeStmt) { clear_node(); set_has_alter_type_stmt(); _impl_.node_.alter_type_stmt_ = CreateMaybeMessage<::pg_query::AlterTypeStmt>(GetArena()); } return _impl_.node_.alter_type_stmt_; } inline ::pg_query::AlterTypeStmt* Node::mutable_alter_type_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterTypeStmt* _msg = _internal_mutable_alter_type_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_type_stmt) return _msg; } // .pg_query.RuleStmt rule_stmt = 215 [json_name = "RuleStmt"]; inline bool Node::has_rule_stmt() const { return node_case() == kRuleStmt; } inline bool Node::_internal_has_rule_stmt() const { return node_case() == kRuleStmt; } inline void Node::set_has_rule_stmt() { _impl_._oneof_case_[0] = kRuleStmt; } inline void Node::clear_rule_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRuleStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRuleStmt) { clear_has_node(); auto* temp = _impl_.node_.rule_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.rule_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RuleStmt& Node::_internal_rule_stmt() const { return node_case() == kRuleStmt ? *_impl_.node_.rule_stmt_ : reinterpret_cast<::pg_query::RuleStmt&>(::pg_query::_RuleStmt_default_instance_); } inline const ::pg_query::RuleStmt& Node::rule_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRuleStmt) { clear_has_node(); auto* temp = _impl_.node_.rule_stmt_; _impl_.node_.rule_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_rule_stmt(::pg_query::RuleStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_rule_stmt(); _impl_.node_.rule_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.rule_stmt) } inline ::pg_query::RuleStmt* Node::_internal_mutable_rule_stmt() { if (node_case() != kRuleStmt) { clear_node(); set_has_rule_stmt(); _impl_.node_.rule_stmt_ = CreateMaybeMessage<::pg_query::RuleStmt>(GetArena()); } return _impl_.node_.rule_stmt_; } inline ::pg_query::RuleStmt* Node::mutable_rule_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RuleStmt* _msg = _internal_mutable_rule_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.rule_stmt) return _msg; } // .pg_query.NotifyStmt notify_stmt = 216 [json_name = "NotifyStmt"]; inline bool Node::has_notify_stmt() const { return node_case() == kNotifyStmt; } inline bool Node::_internal_has_notify_stmt() const { return node_case() == kNotifyStmt; } inline void Node::set_has_notify_stmt() { _impl_._oneof_case_[0] = kNotifyStmt; } inline void Node::clear_notify_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kNotifyStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kNotifyStmt) { clear_has_node(); auto* temp = _impl_.node_.notify_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.notify_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::NotifyStmt& Node::_internal_notify_stmt() const { return node_case() == kNotifyStmt ? *_impl_.node_.notify_stmt_ : reinterpret_cast<::pg_query::NotifyStmt&>(::pg_query::_NotifyStmt_default_instance_); } inline const ::pg_query::NotifyStmt& Node::notify_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kNotifyStmt) { clear_has_node(); auto* temp = _impl_.node_.notify_stmt_; _impl_.node_.notify_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_notify_stmt(::pg_query::NotifyStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_notify_stmt(); _impl_.node_.notify_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.notify_stmt) } inline ::pg_query::NotifyStmt* Node::_internal_mutable_notify_stmt() { if (node_case() != kNotifyStmt) { clear_node(); set_has_notify_stmt(); _impl_.node_.notify_stmt_ = CreateMaybeMessage<::pg_query::NotifyStmt>(GetArena()); } return _impl_.node_.notify_stmt_; } inline ::pg_query::NotifyStmt* Node::mutable_notify_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::NotifyStmt* _msg = _internal_mutable_notify_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.notify_stmt) return _msg; } // .pg_query.ListenStmt listen_stmt = 217 [json_name = "ListenStmt"]; inline bool Node::has_listen_stmt() const { return node_case() == kListenStmt; } inline bool Node::_internal_has_listen_stmt() const { return node_case() == kListenStmt; } inline void Node::set_has_listen_stmt() { _impl_._oneof_case_[0] = kListenStmt; } inline void Node::clear_listen_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kListenStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kListenStmt) { clear_has_node(); auto* temp = _impl_.node_.listen_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.listen_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ListenStmt& Node::_internal_listen_stmt() const { return node_case() == kListenStmt ? *_impl_.node_.listen_stmt_ : reinterpret_cast<::pg_query::ListenStmt&>(::pg_query::_ListenStmt_default_instance_); } inline const ::pg_query::ListenStmt& Node::listen_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kListenStmt) { clear_has_node(); auto* temp = _impl_.node_.listen_stmt_; _impl_.node_.listen_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_listen_stmt(::pg_query::ListenStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_listen_stmt(); _impl_.node_.listen_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.listen_stmt) } inline ::pg_query::ListenStmt* Node::_internal_mutable_listen_stmt() { if (node_case() != kListenStmt) { clear_node(); set_has_listen_stmt(); _impl_.node_.listen_stmt_ = CreateMaybeMessage<::pg_query::ListenStmt>(GetArena()); } return _impl_.node_.listen_stmt_; } inline ::pg_query::ListenStmt* Node::mutable_listen_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ListenStmt* _msg = _internal_mutable_listen_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.listen_stmt) return _msg; } // .pg_query.UnlistenStmt unlisten_stmt = 218 [json_name = "UnlistenStmt"]; inline bool Node::has_unlisten_stmt() const { return node_case() == kUnlistenStmt; } inline bool Node::_internal_has_unlisten_stmt() const { return node_case() == kUnlistenStmt; } inline void Node::set_has_unlisten_stmt() { _impl_._oneof_case_[0] = kUnlistenStmt; } inline void Node::clear_unlisten_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kUnlistenStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kUnlistenStmt) { clear_has_node(); auto* temp = _impl_.node_.unlisten_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.unlisten_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::UnlistenStmt& Node::_internal_unlisten_stmt() const { return node_case() == kUnlistenStmt ? *_impl_.node_.unlisten_stmt_ : reinterpret_cast<::pg_query::UnlistenStmt&>(::pg_query::_UnlistenStmt_default_instance_); } inline const ::pg_query::UnlistenStmt& Node::unlisten_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kUnlistenStmt) { clear_has_node(); auto* temp = _impl_.node_.unlisten_stmt_; _impl_.node_.unlisten_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_unlisten_stmt(::pg_query::UnlistenStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_unlisten_stmt(); _impl_.node_.unlisten_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.unlisten_stmt) } inline ::pg_query::UnlistenStmt* Node::_internal_mutable_unlisten_stmt() { if (node_case() != kUnlistenStmt) { clear_node(); set_has_unlisten_stmt(); _impl_.node_.unlisten_stmt_ = CreateMaybeMessage<::pg_query::UnlistenStmt>(GetArena()); } return _impl_.node_.unlisten_stmt_; } inline ::pg_query::UnlistenStmt* Node::mutable_unlisten_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::UnlistenStmt* _msg = _internal_mutable_unlisten_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.unlisten_stmt) return _msg; } // .pg_query.TransactionStmt transaction_stmt = 219 [json_name = "TransactionStmt"]; inline bool Node::has_transaction_stmt() const { return node_case() == kTransactionStmt; } inline bool Node::_internal_has_transaction_stmt() const { return node_case() == kTransactionStmt; } inline void Node::set_has_transaction_stmt() { _impl_._oneof_case_[0] = kTransactionStmt; } inline void Node::clear_transaction_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kTransactionStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kTransactionStmt) { clear_has_node(); auto* temp = _impl_.node_.transaction_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.transaction_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TransactionStmt& Node::_internal_transaction_stmt() const { return node_case() == kTransactionStmt ? *_impl_.node_.transaction_stmt_ : reinterpret_cast<::pg_query::TransactionStmt&>(::pg_query::_TransactionStmt_default_instance_); } inline const ::pg_query::TransactionStmt& Node::transaction_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kTransactionStmt) { clear_has_node(); auto* temp = _impl_.node_.transaction_stmt_; _impl_.node_.transaction_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_transaction_stmt(::pg_query::TransactionStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_transaction_stmt(); _impl_.node_.transaction_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.transaction_stmt) } inline ::pg_query::TransactionStmt* Node::_internal_mutable_transaction_stmt() { if (node_case() != kTransactionStmt) { clear_node(); set_has_transaction_stmt(); _impl_.node_.transaction_stmt_ = CreateMaybeMessage<::pg_query::TransactionStmt>(GetArena()); } return _impl_.node_.transaction_stmt_; } inline ::pg_query::TransactionStmt* Node::mutable_transaction_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TransactionStmt* _msg = _internal_mutable_transaction_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.transaction_stmt) return _msg; } // .pg_query.CompositeTypeStmt composite_type_stmt = 220 [json_name = "CompositeTypeStmt"]; inline bool Node::has_composite_type_stmt() const { return node_case() == kCompositeTypeStmt; } inline bool Node::_internal_has_composite_type_stmt() const { return node_case() == kCompositeTypeStmt; } inline void Node::set_has_composite_type_stmt() { _impl_._oneof_case_[0] = kCompositeTypeStmt; } inline void Node::clear_composite_type_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCompositeTypeStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCompositeTypeStmt) { clear_has_node(); auto* temp = _impl_.node_.composite_type_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.composite_type_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CompositeTypeStmt& Node::_internal_composite_type_stmt() const { return node_case() == kCompositeTypeStmt ? *_impl_.node_.composite_type_stmt_ : reinterpret_cast<::pg_query::CompositeTypeStmt&>(::pg_query::_CompositeTypeStmt_default_instance_); } inline const ::pg_query::CompositeTypeStmt& Node::composite_type_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCompositeTypeStmt) { clear_has_node(); auto* temp = _impl_.node_.composite_type_stmt_; _impl_.node_.composite_type_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_composite_type_stmt(::pg_query::CompositeTypeStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_composite_type_stmt(); _impl_.node_.composite_type_stmt_ = value; } // @@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 (node_case() != kCompositeTypeStmt) { clear_node(); set_has_composite_type_stmt(); _impl_.node_.composite_type_stmt_ = CreateMaybeMessage<::pg_query::CompositeTypeStmt>(GetArena()); } return _impl_.node_.composite_type_stmt_; } inline ::pg_query::CompositeTypeStmt* Node::mutable_composite_type_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CompositeTypeStmt* _msg = _internal_mutable_composite_type_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.composite_type_stmt) return _msg; } // .pg_query.CreateEnumStmt create_enum_stmt = 221 [json_name = "CreateEnumStmt"]; inline bool Node::has_create_enum_stmt() const { return node_case() == kCreateEnumStmt; } inline bool Node::_internal_has_create_enum_stmt() const { return node_case() == kCreateEnumStmt; } inline void Node::set_has_create_enum_stmt() { _impl_._oneof_case_[0] = kCreateEnumStmt; } inline void Node::clear_create_enum_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateEnumStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateEnumStmt) { clear_has_node(); auto* temp = _impl_.node_.create_enum_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_enum_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateEnumStmt& Node::_internal_create_enum_stmt() const { return node_case() == kCreateEnumStmt ? *_impl_.node_.create_enum_stmt_ : reinterpret_cast<::pg_query::CreateEnumStmt&>(::pg_query::_CreateEnumStmt_default_instance_); } inline const ::pg_query::CreateEnumStmt& Node::create_enum_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateEnumStmt) { clear_has_node(); auto* temp = _impl_.node_.create_enum_stmt_; _impl_.node_.create_enum_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_enum_stmt(::pg_query::CreateEnumStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_enum_stmt(); _impl_.node_.create_enum_stmt_ = value; } // @@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 (node_case() != kCreateEnumStmt) { clear_node(); set_has_create_enum_stmt(); _impl_.node_.create_enum_stmt_ = CreateMaybeMessage<::pg_query::CreateEnumStmt>(GetArena()); } return _impl_.node_.create_enum_stmt_; } inline ::pg_query::CreateEnumStmt* Node::mutable_create_enum_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateEnumStmt* _msg = _internal_mutable_create_enum_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_enum_stmt) return _msg; } // .pg_query.CreateRangeStmt create_range_stmt = 222 [json_name = "CreateRangeStmt"]; inline bool Node::has_create_range_stmt() const { return node_case() == kCreateRangeStmt; } inline bool Node::_internal_has_create_range_stmt() const { return node_case() == kCreateRangeStmt; } inline void Node::set_has_create_range_stmt() { _impl_._oneof_case_[0] = kCreateRangeStmt; } inline void Node::clear_create_range_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateRangeStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateRangeStmt) { clear_has_node(); auto* temp = _impl_.node_.create_range_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_range_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateRangeStmt& Node::_internal_create_range_stmt() const { return node_case() == kCreateRangeStmt ? *_impl_.node_.create_range_stmt_ : reinterpret_cast<::pg_query::CreateRangeStmt&>(::pg_query::_CreateRangeStmt_default_instance_); } inline const ::pg_query::CreateRangeStmt& Node::create_range_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateRangeStmt) { clear_has_node(); auto* temp = _impl_.node_.create_range_stmt_; _impl_.node_.create_range_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_range_stmt(::pg_query::CreateRangeStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_range_stmt(); _impl_.node_.create_range_stmt_ = value; } // @@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 (node_case() != kCreateRangeStmt) { clear_node(); set_has_create_range_stmt(); _impl_.node_.create_range_stmt_ = CreateMaybeMessage<::pg_query::CreateRangeStmt>(GetArena()); } return _impl_.node_.create_range_stmt_; } inline ::pg_query::CreateRangeStmt* Node::mutable_create_range_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateRangeStmt* _msg = _internal_mutable_create_range_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_range_stmt) return _msg; } // .pg_query.AlterEnumStmt alter_enum_stmt = 223 [json_name = "AlterEnumStmt"]; inline bool Node::has_alter_enum_stmt() const { return node_case() == kAlterEnumStmt; } inline bool Node::_internal_has_alter_enum_stmt() const { return node_case() == kAlterEnumStmt; } inline void Node::set_has_alter_enum_stmt() { _impl_._oneof_case_[0] = kAlterEnumStmt; } inline void Node::clear_alter_enum_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterEnumStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterEnumStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_enum_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_enum_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterEnumStmt& Node::_internal_alter_enum_stmt() const { return node_case() == kAlterEnumStmt ? *_impl_.node_.alter_enum_stmt_ : reinterpret_cast<::pg_query::AlterEnumStmt&>(::pg_query::_AlterEnumStmt_default_instance_); } inline const ::pg_query::AlterEnumStmt& Node::alter_enum_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterEnumStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_enum_stmt_; _impl_.node_.alter_enum_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_enum_stmt(::pg_query::AlterEnumStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_enum_stmt(); _impl_.node_.alter_enum_stmt_ = value; } // @@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 (node_case() != kAlterEnumStmt) { clear_node(); set_has_alter_enum_stmt(); _impl_.node_.alter_enum_stmt_ = CreateMaybeMessage<::pg_query::AlterEnumStmt>(GetArena()); } return _impl_.node_.alter_enum_stmt_; } inline ::pg_query::AlterEnumStmt* Node::mutable_alter_enum_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterEnumStmt* _msg = _internal_mutable_alter_enum_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_enum_stmt) return _msg; } // .pg_query.ViewStmt view_stmt = 224 [json_name = "ViewStmt"]; inline bool Node::has_view_stmt() const { return node_case() == kViewStmt; } inline bool Node::_internal_has_view_stmt() const { return node_case() == kViewStmt; } inline void Node::set_has_view_stmt() { _impl_._oneof_case_[0] = kViewStmt; } inline void Node::clear_view_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kViewStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kViewStmt) { clear_has_node(); auto* temp = _impl_.node_.view_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.view_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ViewStmt& Node::_internal_view_stmt() const { return node_case() == kViewStmt ? *_impl_.node_.view_stmt_ : reinterpret_cast<::pg_query::ViewStmt&>(::pg_query::_ViewStmt_default_instance_); } inline const ::pg_query::ViewStmt& Node::view_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kViewStmt) { clear_has_node(); auto* temp = _impl_.node_.view_stmt_; _impl_.node_.view_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_view_stmt(::pg_query::ViewStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_view_stmt(); _impl_.node_.view_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.view_stmt) } inline ::pg_query::ViewStmt* Node::_internal_mutable_view_stmt() { if (node_case() != kViewStmt) { clear_node(); set_has_view_stmt(); _impl_.node_.view_stmt_ = CreateMaybeMessage<::pg_query::ViewStmt>(GetArena()); } return _impl_.node_.view_stmt_; } inline ::pg_query::ViewStmt* Node::mutable_view_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ViewStmt* _msg = _internal_mutable_view_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.view_stmt) return _msg; } // .pg_query.LoadStmt load_stmt = 225 [json_name = "LoadStmt"]; inline bool Node::has_load_stmt() const { return node_case() == kLoadStmt; } inline bool Node::_internal_has_load_stmt() const { return node_case() == kLoadStmt; } inline void Node::set_has_load_stmt() { _impl_._oneof_case_[0] = kLoadStmt; } inline void Node::clear_load_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kLoadStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kLoadStmt) { clear_has_node(); auto* temp = _impl_.node_.load_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.load_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::LoadStmt& Node::_internal_load_stmt() const { return node_case() == kLoadStmt ? *_impl_.node_.load_stmt_ : reinterpret_cast<::pg_query::LoadStmt&>(::pg_query::_LoadStmt_default_instance_); } inline const ::pg_query::LoadStmt& Node::load_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kLoadStmt) { clear_has_node(); auto* temp = _impl_.node_.load_stmt_; _impl_.node_.load_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_load_stmt(::pg_query::LoadStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_load_stmt(); _impl_.node_.load_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.load_stmt) } inline ::pg_query::LoadStmt* Node::_internal_mutable_load_stmt() { if (node_case() != kLoadStmt) { clear_node(); set_has_load_stmt(); _impl_.node_.load_stmt_ = CreateMaybeMessage<::pg_query::LoadStmt>(GetArena()); } return _impl_.node_.load_stmt_; } inline ::pg_query::LoadStmt* Node::mutable_load_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::LoadStmt* _msg = _internal_mutable_load_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.load_stmt) return _msg; } // .pg_query.CreatedbStmt createdb_stmt = 226 [json_name = "CreatedbStmt"]; inline bool Node::has_createdb_stmt() const { return node_case() == kCreatedbStmt; } inline bool Node::_internal_has_createdb_stmt() const { return node_case() == kCreatedbStmt; } inline void Node::set_has_createdb_stmt() { _impl_._oneof_case_[0] = kCreatedbStmt; } inline void Node::clear_createdb_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreatedbStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreatedbStmt) { clear_has_node(); auto* temp = _impl_.node_.createdb_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.createdb_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreatedbStmt& Node::_internal_createdb_stmt() const { return node_case() == kCreatedbStmt ? *_impl_.node_.createdb_stmt_ : reinterpret_cast<::pg_query::CreatedbStmt&>(::pg_query::_CreatedbStmt_default_instance_); } inline const ::pg_query::CreatedbStmt& Node::createdb_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreatedbStmt) { clear_has_node(); auto* temp = _impl_.node_.createdb_stmt_; _impl_.node_.createdb_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_createdb_stmt(::pg_query::CreatedbStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_createdb_stmt(); _impl_.node_.createdb_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.createdb_stmt) } inline ::pg_query::CreatedbStmt* Node::_internal_mutable_createdb_stmt() { if (node_case() != kCreatedbStmt) { clear_node(); set_has_createdb_stmt(); _impl_.node_.createdb_stmt_ = CreateMaybeMessage<::pg_query::CreatedbStmt>(GetArena()); } return _impl_.node_.createdb_stmt_; } inline ::pg_query::CreatedbStmt* Node::mutable_createdb_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreatedbStmt* _msg = _internal_mutable_createdb_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.createdb_stmt) return _msg; } // .pg_query.AlterDatabaseStmt alter_database_stmt = 227 [json_name = "AlterDatabaseStmt"]; inline bool Node::has_alter_database_stmt() const { return node_case() == kAlterDatabaseStmt; } inline bool Node::_internal_has_alter_database_stmt() const { return node_case() == kAlterDatabaseStmt; } inline void Node::set_has_alter_database_stmt() { _impl_._oneof_case_[0] = kAlterDatabaseStmt; } inline void Node::clear_alter_database_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterDatabaseStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterDatabaseStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_database_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_database_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterDatabaseStmt& Node::_internal_alter_database_stmt() const { return node_case() == kAlterDatabaseStmt ? *_impl_.node_.alter_database_stmt_ : reinterpret_cast<::pg_query::AlterDatabaseStmt&>(::pg_query::_AlterDatabaseStmt_default_instance_); } inline const ::pg_query::AlterDatabaseStmt& Node::alter_database_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterDatabaseStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_database_stmt_; _impl_.node_.alter_database_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_database_stmt(::pg_query::AlterDatabaseStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_database_stmt(); _impl_.node_.alter_database_stmt_ = value; } // @@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 (node_case() != kAlterDatabaseStmt) { clear_node(); set_has_alter_database_stmt(); _impl_.node_.alter_database_stmt_ = CreateMaybeMessage<::pg_query::AlterDatabaseStmt>(GetArena()); } return _impl_.node_.alter_database_stmt_; } inline ::pg_query::AlterDatabaseStmt* Node::mutable_alter_database_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterDatabaseStmt* _msg = _internal_mutable_alter_database_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_database_stmt) return _msg; } // .pg_query.AlterDatabaseRefreshCollStmt alter_database_refresh_coll_stmt = 228 [json_name = "AlterDatabaseRefreshCollStmt"]; inline bool Node::has_alter_database_refresh_coll_stmt() const { return node_case() == kAlterDatabaseRefreshCollStmt; } inline bool Node::_internal_has_alter_database_refresh_coll_stmt() const { return node_case() == kAlterDatabaseRefreshCollStmt; } inline void Node::set_has_alter_database_refresh_coll_stmt() { _impl_._oneof_case_[0] = kAlterDatabaseRefreshCollStmt; } inline void Node::clear_alter_database_refresh_coll_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterDatabaseRefreshCollStmt) { if (GetArena() == nullptr) { delete _impl_.node_.alter_database_refresh_coll_stmt_; } clear_has_node(); } } inline ::pg_query::AlterDatabaseRefreshCollStmt* Node::release_alter_database_refresh_coll_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_database_refresh_coll_stmt) if (node_case() == kAlterDatabaseRefreshCollStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_database_refresh_coll_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_database_refresh_coll_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterDatabaseRefreshCollStmt& Node::_internal_alter_database_refresh_coll_stmt() const { return node_case() == kAlterDatabaseRefreshCollStmt ? *_impl_.node_.alter_database_refresh_coll_stmt_ : reinterpret_cast<::pg_query::AlterDatabaseRefreshCollStmt&>(::pg_query::_AlterDatabaseRefreshCollStmt_default_instance_); } inline const ::pg_query::AlterDatabaseRefreshCollStmt& Node::alter_database_refresh_coll_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.alter_database_refresh_coll_stmt) return _internal_alter_database_refresh_coll_stmt(); } inline ::pg_query::AlterDatabaseRefreshCollStmt* Node::unsafe_arena_release_alter_database_refresh_coll_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_database_refresh_coll_stmt) if (node_case() == kAlterDatabaseRefreshCollStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_database_refresh_coll_stmt_; _impl_.node_.alter_database_refresh_coll_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_database_refresh_coll_stmt(::pg_query::AlterDatabaseRefreshCollStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_database_refresh_coll_stmt(); _impl_.node_.alter_database_refresh_coll_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_database_refresh_coll_stmt) } inline ::pg_query::AlterDatabaseRefreshCollStmt* Node::_internal_mutable_alter_database_refresh_coll_stmt() { if (node_case() != kAlterDatabaseRefreshCollStmt) { clear_node(); set_has_alter_database_refresh_coll_stmt(); _impl_.node_.alter_database_refresh_coll_stmt_ = CreateMaybeMessage<::pg_query::AlterDatabaseRefreshCollStmt>(GetArena()); } return _impl_.node_.alter_database_refresh_coll_stmt_; } inline ::pg_query::AlterDatabaseRefreshCollStmt* Node::mutable_alter_database_refresh_coll_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterDatabaseRefreshCollStmt* _msg = _internal_mutable_alter_database_refresh_coll_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_database_refresh_coll_stmt) return _msg; } // .pg_query.AlterDatabaseSetStmt alter_database_set_stmt = 229 [json_name = "AlterDatabaseSetStmt"]; inline bool Node::has_alter_database_set_stmt() const { return node_case() == kAlterDatabaseSetStmt; } inline bool Node::_internal_has_alter_database_set_stmt() const { return node_case() == kAlterDatabaseSetStmt; } inline void Node::set_has_alter_database_set_stmt() { _impl_._oneof_case_[0] = kAlterDatabaseSetStmt; } inline void Node::clear_alter_database_set_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterDatabaseSetStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterDatabaseSetStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_database_set_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_database_set_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterDatabaseSetStmt& Node::_internal_alter_database_set_stmt() const { return node_case() == kAlterDatabaseSetStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterDatabaseSetStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_database_set_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_database_set_stmt(); _impl_.node_.alter_database_set_stmt_ = value; } // @@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 (node_case() != kAlterDatabaseSetStmt) { clear_node(); set_has_alter_database_set_stmt(); _impl_.node_.alter_database_set_stmt_ = CreateMaybeMessage<::pg_query::AlterDatabaseSetStmt>(GetArena()); } return _impl_.node_.alter_database_set_stmt_; } inline ::pg_query::AlterDatabaseSetStmt* Node::mutable_alter_database_set_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterDatabaseSetStmt* _msg = _internal_mutable_alter_database_set_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_database_set_stmt) return _msg; } // .pg_query.DropdbStmt dropdb_stmt = 230 [json_name = "DropdbStmt"]; inline bool Node::has_dropdb_stmt() const { return node_case() == kDropdbStmt; } inline bool Node::_internal_has_dropdb_stmt() const { return node_case() == kDropdbStmt; } inline void Node::set_has_dropdb_stmt() { _impl_._oneof_case_[0] = kDropdbStmt; } inline void Node::clear_dropdb_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDropdbStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDropdbStmt) { clear_has_node(); auto* temp = _impl_.node_.dropdb_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.dropdb_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropdbStmt& Node::_internal_dropdb_stmt() const { return node_case() == kDropdbStmt ? *_impl_.node_.dropdb_stmt_ : reinterpret_cast<::pg_query::DropdbStmt&>(::pg_query::_DropdbStmt_default_instance_); } inline const ::pg_query::DropdbStmt& Node::dropdb_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDropdbStmt) { clear_has_node(); auto* temp = _impl_.node_.dropdb_stmt_; _impl_.node_.dropdb_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_dropdb_stmt(::pg_query::DropdbStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_dropdb_stmt(); _impl_.node_.dropdb_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.dropdb_stmt) } inline ::pg_query::DropdbStmt* Node::_internal_mutable_dropdb_stmt() { if (node_case() != kDropdbStmt) { clear_node(); set_has_dropdb_stmt(); _impl_.node_.dropdb_stmt_ = CreateMaybeMessage<::pg_query::DropdbStmt>(GetArena()); } return _impl_.node_.dropdb_stmt_; } inline ::pg_query::DropdbStmt* Node::mutable_dropdb_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DropdbStmt* _msg = _internal_mutable_dropdb_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.dropdb_stmt) return _msg; } // .pg_query.AlterSystemStmt alter_system_stmt = 231 [json_name = "AlterSystemStmt"]; inline bool Node::has_alter_system_stmt() const { return node_case() == kAlterSystemStmt; } inline bool Node::_internal_has_alter_system_stmt() const { return node_case() == kAlterSystemStmt; } inline void Node::set_has_alter_system_stmt() { _impl_._oneof_case_[0] = kAlterSystemStmt; } inline void Node::clear_alter_system_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterSystemStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterSystemStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_system_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_system_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterSystemStmt& Node::_internal_alter_system_stmt() const { return node_case() == kAlterSystemStmt ? *_impl_.node_.alter_system_stmt_ : reinterpret_cast<::pg_query::AlterSystemStmt&>(::pg_query::_AlterSystemStmt_default_instance_); } inline const ::pg_query::AlterSystemStmt& Node::alter_system_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterSystemStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_system_stmt_; _impl_.node_.alter_system_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_system_stmt(::pg_query::AlterSystemStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_system_stmt(); _impl_.node_.alter_system_stmt_ = value; } // @@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 (node_case() != kAlterSystemStmt) { clear_node(); set_has_alter_system_stmt(); _impl_.node_.alter_system_stmt_ = CreateMaybeMessage<::pg_query::AlterSystemStmt>(GetArena()); } return _impl_.node_.alter_system_stmt_; } inline ::pg_query::AlterSystemStmt* Node::mutable_alter_system_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterSystemStmt* _msg = _internal_mutable_alter_system_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_system_stmt) return _msg; } // .pg_query.ClusterStmt cluster_stmt = 232 [json_name = "ClusterStmt"]; inline bool Node::has_cluster_stmt() const { return node_case() == kClusterStmt; } inline bool Node::_internal_has_cluster_stmt() const { return node_case() == kClusterStmt; } inline void Node::set_has_cluster_stmt() { _impl_._oneof_case_[0] = kClusterStmt; } inline void Node::clear_cluster_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kClusterStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kClusterStmt) { clear_has_node(); auto* temp = _impl_.node_.cluster_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.cluster_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ClusterStmt& Node::_internal_cluster_stmt() const { return node_case() == kClusterStmt ? *_impl_.node_.cluster_stmt_ : reinterpret_cast<::pg_query::ClusterStmt&>(::pg_query::_ClusterStmt_default_instance_); } inline const ::pg_query::ClusterStmt& Node::cluster_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kClusterStmt) { clear_has_node(); auto* temp = _impl_.node_.cluster_stmt_; _impl_.node_.cluster_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_cluster_stmt(::pg_query::ClusterStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_cluster_stmt(); _impl_.node_.cluster_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.cluster_stmt) } inline ::pg_query::ClusterStmt* Node::_internal_mutable_cluster_stmt() { if (node_case() != kClusterStmt) { clear_node(); set_has_cluster_stmt(); _impl_.node_.cluster_stmt_ = CreateMaybeMessage<::pg_query::ClusterStmt>(GetArena()); } return _impl_.node_.cluster_stmt_; } inline ::pg_query::ClusterStmt* Node::mutable_cluster_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ClusterStmt* _msg = _internal_mutable_cluster_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.cluster_stmt) return _msg; } // .pg_query.VacuumStmt vacuum_stmt = 233 [json_name = "VacuumStmt"]; inline bool Node::has_vacuum_stmt() const { return node_case() == kVacuumStmt; } inline bool Node::_internal_has_vacuum_stmt() const { return node_case() == kVacuumStmt; } inline void Node::set_has_vacuum_stmt() { _impl_._oneof_case_[0] = kVacuumStmt; } inline void Node::clear_vacuum_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kVacuumStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kVacuumStmt) { clear_has_node(); auto* temp = _impl_.node_.vacuum_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.vacuum_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::VacuumStmt& Node::_internal_vacuum_stmt() const { return node_case() == kVacuumStmt ? *_impl_.node_.vacuum_stmt_ : reinterpret_cast<::pg_query::VacuumStmt&>(::pg_query::_VacuumStmt_default_instance_); } inline const ::pg_query::VacuumStmt& Node::vacuum_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kVacuumStmt) { clear_has_node(); auto* temp = _impl_.node_.vacuum_stmt_; _impl_.node_.vacuum_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_vacuum_stmt(::pg_query::VacuumStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_vacuum_stmt(); _impl_.node_.vacuum_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.vacuum_stmt) } inline ::pg_query::VacuumStmt* Node::_internal_mutable_vacuum_stmt() { if (node_case() != kVacuumStmt) { clear_node(); set_has_vacuum_stmt(); _impl_.node_.vacuum_stmt_ = CreateMaybeMessage<::pg_query::VacuumStmt>(GetArena()); } return _impl_.node_.vacuum_stmt_; } inline ::pg_query::VacuumStmt* Node::mutable_vacuum_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::VacuumStmt* _msg = _internal_mutable_vacuum_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.vacuum_stmt) return _msg; } // .pg_query.VacuumRelation vacuum_relation = 234 [json_name = "VacuumRelation"]; inline bool Node::has_vacuum_relation() const { return node_case() == kVacuumRelation; } inline bool Node::_internal_has_vacuum_relation() const { return node_case() == kVacuumRelation; } inline void Node::set_has_vacuum_relation() { _impl_._oneof_case_[0] = kVacuumRelation; } inline void Node::clear_vacuum_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kVacuumRelation) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kVacuumRelation) { clear_has_node(); auto* temp = _impl_.node_.vacuum_relation_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.vacuum_relation_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::VacuumRelation& Node::_internal_vacuum_relation() const { return node_case() == kVacuumRelation ? *_impl_.node_.vacuum_relation_ : reinterpret_cast<::pg_query::VacuumRelation&>(::pg_query::_VacuumRelation_default_instance_); } inline const ::pg_query::VacuumRelation& Node::vacuum_relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kVacuumRelation) { clear_has_node(); auto* temp = _impl_.node_.vacuum_relation_; _impl_.node_.vacuum_relation_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_vacuum_relation(::pg_query::VacuumRelation* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_vacuum_relation(); _impl_.node_.vacuum_relation_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.vacuum_relation) } inline ::pg_query::VacuumRelation* Node::_internal_mutable_vacuum_relation() { if (node_case() != kVacuumRelation) { clear_node(); set_has_vacuum_relation(); _impl_.node_.vacuum_relation_ = CreateMaybeMessage<::pg_query::VacuumRelation>(GetArena()); } return _impl_.node_.vacuum_relation_; } inline ::pg_query::VacuumRelation* Node::mutable_vacuum_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::VacuumRelation* _msg = _internal_mutable_vacuum_relation(); // @@protoc_insertion_point(field_mutable:pg_query.Node.vacuum_relation) return _msg; } // .pg_query.ExplainStmt explain_stmt = 235 [json_name = "ExplainStmt"]; inline bool Node::has_explain_stmt() const { return node_case() == kExplainStmt; } inline bool Node::_internal_has_explain_stmt() const { return node_case() == kExplainStmt; } inline void Node::set_has_explain_stmt() { _impl_._oneof_case_[0] = kExplainStmt; } inline void Node::clear_explain_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kExplainStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kExplainStmt) { clear_has_node(); auto* temp = _impl_.node_.explain_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.explain_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ExplainStmt& Node::_internal_explain_stmt() const { return node_case() == kExplainStmt ? *_impl_.node_.explain_stmt_ : reinterpret_cast<::pg_query::ExplainStmt&>(::pg_query::_ExplainStmt_default_instance_); } inline const ::pg_query::ExplainStmt& Node::explain_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kExplainStmt) { clear_has_node(); auto* temp = _impl_.node_.explain_stmt_; _impl_.node_.explain_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_explain_stmt(::pg_query::ExplainStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_explain_stmt(); _impl_.node_.explain_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.explain_stmt) } inline ::pg_query::ExplainStmt* Node::_internal_mutable_explain_stmt() { if (node_case() != kExplainStmt) { clear_node(); set_has_explain_stmt(); _impl_.node_.explain_stmt_ = CreateMaybeMessage<::pg_query::ExplainStmt>(GetArena()); } return _impl_.node_.explain_stmt_; } inline ::pg_query::ExplainStmt* Node::mutable_explain_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ExplainStmt* _msg = _internal_mutable_explain_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.explain_stmt) return _msg; } // .pg_query.CreateTableAsStmt create_table_as_stmt = 236 [json_name = "CreateTableAsStmt"]; inline bool Node::has_create_table_as_stmt() const { return node_case() == kCreateTableAsStmt; } inline bool Node::_internal_has_create_table_as_stmt() const { return node_case() == kCreateTableAsStmt; } inline void Node::set_has_create_table_as_stmt() { _impl_._oneof_case_[0] = kCreateTableAsStmt; } inline void Node::clear_create_table_as_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateTableAsStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateTableAsStmt) { clear_has_node(); auto* temp = _impl_.node_.create_table_as_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_table_as_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateTableAsStmt& Node::_internal_create_table_as_stmt() const { return node_case() == kCreateTableAsStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateTableAsStmt) { clear_has_node(); auto* temp = _impl_.node_.create_table_as_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_table_as_stmt(); _impl_.node_.create_table_as_stmt_ = value; } // @@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 (node_case() != kCreateTableAsStmt) { clear_node(); set_has_create_table_as_stmt(); _impl_.node_.create_table_as_stmt_ = CreateMaybeMessage<::pg_query::CreateTableAsStmt>(GetArena()); } return _impl_.node_.create_table_as_stmt_; } inline ::pg_query::CreateTableAsStmt* Node::mutable_create_table_as_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateTableAsStmt* _msg = _internal_mutable_create_table_as_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_table_as_stmt) return _msg; } // .pg_query.RefreshMatViewStmt refresh_mat_view_stmt = 237 [json_name = "RefreshMatViewStmt"]; inline bool Node::has_refresh_mat_view_stmt() const { return node_case() == kRefreshMatViewStmt; } inline bool Node::_internal_has_refresh_mat_view_stmt() const { return node_case() == kRefreshMatViewStmt; } inline void Node::set_has_refresh_mat_view_stmt() { _impl_._oneof_case_[0] = kRefreshMatViewStmt; } inline void Node::clear_refresh_mat_view_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kRefreshMatViewStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kRefreshMatViewStmt) { clear_has_node(); auto* temp = _impl_.node_.refresh_mat_view_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.refresh_mat_view_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RefreshMatViewStmt& Node::_internal_refresh_mat_view_stmt() const { return node_case() == kRefreshMatViewStmt ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kRefreshMatViewStmt) { clear_has_node(); auto* temp = _impl_.node_.refresh_mat_view_stmt_; _impl_.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* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_refresh_mat_view_stmt(); _impl_.node_.refresh_mat_view_stmt_ = value; } // @@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 (node_case() != kRefreshMatViewStmt) { clear_node(); set_has_refresh_mat_view_stmt(); _impl_.node_.refresh_mat_view_stmt_ = CreateMaybeMessage<::pg_query::RefreshMatViewStmt>(GetArena()); } return _impl_.node_.refresh_mat_view_stmt_; } inline ::pg_query::RefreshMatViewStmt* Node::mutable_refresh_mat_view_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RefreshMatViewStmt* _msg = _internal_mutable_refresh_mat_view_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.refresh_mat_view_stmt) return _msg; } // .pg_query.CheckPointStmt check_point_stmt = 238 [json_name = "CheckPointStmt"]; inline bool Node::has_check_point_stmt() const { return node_case() == kCheckPointStmt; } inline bool Node::_internal_has_check_point_stmt() const { return node_case() == kCheckPointStmt; } inline void Node::set_has_check_point_stmt() { _impl_._oneof_case_[0] = kCheckPointStmt; } inline void Node::clear_check_point_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCheckPointStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCheckPointStmt) { clear_has_node(); auto* temp = _impl_.node_.check_point_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.check_point_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CheckPointStmt& Node::_internal_check_point_stmt() const { return node_case() == kCheckPointStmt ? *_impl_.node_.check_point_stmt_ : reinterpret_cast<::pg_query::CheckPointStmt&>(::pg_query::_CheckPointStmt_default_instance_); } inline const ::pg_query::CheckPointStmt& Node::check_point_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCheckPointStmt) { clear_has_node(); auto* temp = _impl_.node_.check_point_stmt_; _impl_.node_.check_point_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_check_point_stmt(::pg_query::CheckPointStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_check_point_stmt(); _impl_.node_.check_point_stmt_ = value; } // @@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 (node_case() != kCheckPointStmt) { clear_node(); set_has_check_point_stmt(); _impl_.node_.check_point_stmt_ = CreateMaybeMessage<::pg_query::CheckPointStmt>(GetArena()); } return _impl_.node_.check_point_stmt_; } inline ::pg_query::CheckPointStmt* Node::mutable_check_point_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CheckPointStmt* _msg = _internal_mutable_check_point_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.check_point_stmt) return _msg; } // .pg_query.DiscardStmt discard_stmt = 239 [json_name = "DiscardStmt"]; inline bool Node::has_discard_stmt() const { return node_case() == kDiscardStmt; } inline bool Node::_internal_has_discard_stmt() const { return node_case() == kDiscardStmt; } inline void Node::set_has_discard_stmt() { _impl_._oneof_case_[0] = kDiscardStmt; } inline void Node::clear_discard_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDiscardStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDiscardStmt) { clear_has_node(); auto* temp = _impl_.node_.discard_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.discard_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DiscardStmt& Node::_internal_discard_stmt() const { return node_case() == kDiscardStmt ? *_impl_.node_.discard_stmt_ : reinterpret_cast<::pg_query::DiscardStmt&>(::pg_query::_DiscardStmt_default_instance_); } inline const ::pg_query::DiscardStmt& Node::discard_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDiscardStmt) { clear_has_node(); auto* temp = _impl_.node_.discard_stmt_; _impl_.node_.discard_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_discard_stmt(::pg_query::DiscardStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_discard_stmt(); _impl_.node_.discard_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.discard_stmt) } inline ::pg_query::DiscardStmt* Node::_internal_mutable_discard_stmt() { if (node_case() != kDiscardStmt) { clear_node(); set_has_discard_stmt(); _impl_.node_.discard_stmt_ = CreateMaybeMessage<::pg_query::DiscardStmt>(GetArena()); } return _impl_.node_.discard_stmt_; } inline ::pg_query::DiscardStmt* Node::mutable_discard_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DiscardStmt* _msg = _internal_mutable_discard_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.discard_stmt) return _msg; } // .pg_query.LockStmt lock_stmt = 240 [json_name = "LockStmt"]; inline bool Node::has_lock_stmt() const { return node_case() == kLockStmt; } inline bool Node::_internal_has_lock_stmt() const { return node_case() == kLockStmt; } inline void Node::set_has_lock_stmt() { _impl_._oneof_case_[0] = kLockStmt; } inline void Node::clear_lock_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kLockStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kLockStmt) { clear_has_node(); auto* temp = _impl_.node_.lock_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.lock_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::LockStmt& Node::_internal_lock_stmt() const { return node_case() == kLockStmt ? *_impl_.node_.lock_stmt_ : reinterpret_cast<::pg_query::LockStmt&>(::pg_query::_LockStmt_default_instance_); } inline const ::pg_query::LockStmt& Node::lock_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kLockStmt) { clear_has_node(); auto* temp = _impl_.node_.lock_stmt_; _impl_.node_.lock_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_lock_stmt(::pg_query::LockStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_lock_stmt(); _impl_.node_.lock_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.lock_stmt) } inline ::pg_query::LockStmt* Node::_internal_mutable_lock_stmt() { if (node_case() != kLockStmt) { clear_node(); set_has_lock_stmt(); _impl_.node_.lock_stmt_ = CreateMaybeMessage<::pg_query::LockStmt>(GetArena()); } return _impl_.node_.lock_stmt_; } inline ::pg_query::LockStmt* Node::mutable_lock_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::LockStmt* _msg = _internal_mutable_lock_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.lock_stmt) return _msg; } // .pg_query.ConstraintsSetStmt constraints_set_stmt = 241 [json_name = "ConstraintsSetStmt"]; inline bool Node::has_constraints_set_stmt() const { return node_case() == kConstraintsSetStmt; } inline bool Node::_internal_has_constraints_set_stmt() const { return node_case() == kConstraintsSetStmt; } inline void Node::set_has_constraints_set_stmt() { _impl_._oneof_case_[0] = kConstraintsSetStmt; } inline void Node::clear_constraints_set_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kConstraintsSetStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kConstraintsSetStmt) { clear_has_node(); auto* temp = _impl_.node_.constraints_set_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.constraints_set_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ConstraintsSetStmt& Node::_internal_constraints_set_stmt() const { return node_case() == kConstraintsSetStmt ? *_impl_.node_.constraints_set_stmt_ : reinterpret_cast<::pg_query::ConstraintsSetStmt&>(::pg_query::_ConstraintsSetStmt_default_instance_); } inline const ::pg_query::ConstraintsSetStmt& Node::constraints_set_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kConstraintsSetStmt) { clear_has_node(); auto* temp = _impl_.node_.constraints_set_stmt_; _impl_.node_.constraints_set_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_constraints_set_stmt(::pg_query::ConstraintsSetStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_constraints_set_stmt(); _impl_.node_.constraints_set_stmt_ = value; } // @@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 (node_case() != kConstraintsSetStmt) { clear_node(); set_has_constraints_set_stmt(); _impl_.node_.constraints_set_stmt_ = CreateMaybeMessage<::pg_query::ConstraintsSetStmt>(GetArena()); } return _impl_.node_.constraints_set_stmt_; } inline ::pg_query::ConstraintsSetStmt* Node::mutable_constraints_set_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ConstraintsSetStmt* _msg = _internal_mutable_constraints_set_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.constraints_set_stmt) return _msg; } // .pg_query.ReindexStmt reindex_stmt = 242 [json_name = "ReindexStmt"]; inline bool Node::has_reindex_stmt() const { return node_case() == kReindexStmt; } inline bool Node::_internal_has_reindex_stmt() const { return node_case() == kReindexStmt; } inline void Node::set_has_reindex_stmt() { _impl_._oneof_case_[0] = kReindexStmt; } inline void Node::clear_reindex_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kReindexStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kReindexStmt) { clear_has_node(); auto* temp = _impl_.node_.reindex_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.reindex_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ReindexStmt& Node::_internal_reindex_stmt() const { return node_case() == kReindexStmt ? *_impl_.node_.reindex_stmt_ : reinterpret_cast<::pg_query::ReindexStmt&>(::pg_query::_ReindexStmt_default_instance_); } inline const ::pg_query::ReindexStmt& Node::reindex_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kReindexStmt) { clear_has_node(); auto* temp = _impl_.node_.reindex_stmt_; _impl_.node_.reindex_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_reindex_stmt(::pg_query::ReindexStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_reindex_stmt(); _impl_.node_.reindex_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.reindex_stmt) } inline ::pg_query::ReindexStmt* Node::_internal_mutable_reindex_stmt() { if (node_case() != kReindexStmt) { clear_node(); set_has_reindex_stmt(); _impl_.node_.reindex_stmt_ = CreateMaybeMessage<::pg_query::ReindexStmt>(GetArena()); } return _impl_.node_.reindex_stmt_; } inline ::pg_query::ReindexStmt* Node::mutable_reindex_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ReindexStmt* _msg = _internal_mutable_reindex_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.reindex_stmt) return _msg; } // .pg_query.CreateConversionStmt create_conversion_stmt = 243 [json_name = "CreateConversionStmt"]; inline bool Node::has_create_conversion_stmt() const { return node_case() == kCreateConversionStmt; } inline bool Node::_internal_has_create_conversion_stmt() const { return node_case() == kCreateConversionStmt; } inline void Node::set_has_create_conversion_stmt() { _impl_._oneof_case_[0] = kCreateConversionStmt; } inline void Node::clear_create_conversion_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateConversionStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateConversionStmt) { clear_has_node(); auto* temp = _impl_.node_.create_conversion_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_conversion_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateConversionStmt& Node::_internal_create_conversion_stmt() const { return node_case() == kCreateConversionStmt ? *_impl_.node_.create_conversion_stmt_ : reinterpret_cast<::pg_query::CreateConversionStmt&>(::pg_query::_CreateConversionStmt_default_instance_); } inline const ::pg_query::CreateConversionStmt& Node::create_conversion_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateConversionStmt) { clear_has_node(); auto* temp = _impl_.node_.create_conversion_stmt_; _impl_.node_.create_conversion_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_conversion_stmt(::pg_query::CreateConversionStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_conversion_stmt(); _impl_.node_.create_conversion_stmt_ = value; } // @@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 (node_case() != kCreateConversionStmt) { clear_node(); set_has_create_conversion_stmt(); _impl_.node_.create_conversion_stmt_ = CreateMaybeMessage<::pg_query::CreateConversionStmt>(GetArena()); } return _impl_.node_.create_conversion_stmt_; } inline ::pg_query::CreateConversionStmt* Node::mutable_create_conversion_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateConversionStmt* _msg = _internal_mutable_create_conversion_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_conversion_stmt) return _msg; } // .pg_query.CreateCastStmt create_cast_stmt = 244 [json_name = "CreateCastStmt"]; inline bool Node::has_create_cast_stmt() const { return node_case() == kCreateCastStmt; } inline bool Node::_internal_has_create_cast_stmt() const { return node_case() == kCreateCastStmt; } inline void Node::set_has_create_cast_stmt() { _impl_._oneof_case_[0] = kCreateCastStmt; } inline void Node::clear_create_cast_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateCastStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateCastStmt) { clear_has_node(); auto* temp = _impl_.node_.create_cast_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_cast_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateCastStmt& Node::_internal_create_cast_stmt() const { return node_case() == kCreateCastStmt ? *_impl_.node_.create_cast_stmt_ : reinterpret_cast<::pg_query::CreateCastStmt&>(::pg_query::_CreateCastStmt_default_instance_); } inline const ::pg_query::CreateCastStmt& Node::create_cast_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateCastStmt) { clear_has_node(); auto* temp = _impl_.node_.create_cast_stmt_; _impl_.node_.create_cast_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_cast_stmt(::pg_query::CreateCastStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_cast_stmt(); _impl_.node_.create_cast_stmt_ = value; } // @@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 (node_case() != kCreateCastStmt) { clear_node(); set_has_create_cast_stmt(); _impl_.node_.create_cast_stmt_ = CreateMaybeMessage<::pg_query::CreateCastStmt>(GetArena()); } return _impl_.node_.create_cast_stmt_; } inline ::pg_query::CreateCastStmt* Node::mutable_create_cast_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateCastStmt* _msg = _internal_mutable_create_cast_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_cast_stmt) return _msg; } // .pg_query.CreateTransformStmt create_transform_stmt = 245 [json_name = "CreateTransformStmt"]; inline bool Node::has_create_transform_stmt() const { return node_case() == kCreateTransformStmt; } inline bool Node::_internal_has_create_transform_stmt() const { return node_case() == kCreateTransformStmt; } inline void Node::set_has_create_transform_stmt() { _impl_._oneof_case_[0] = kCreateTransformStmt; } inline void Node::clear_create_transform_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateTransformStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateTransformStmt) { clear_has_node(); auto* temp = _impl_.node_.create_transform_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_transform_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateTransformStmt& Node::_internal_create_transform_stmt() const { return node_case() == kCreateTransformStmt ? *_impl_.node_.create_transform_stmt_ : reinterpret_cast<::pg_query::CreateTransformStmt&>(::pg_query::_CreateTransformStmt_default_instance_); } inline const ::pg_query::CreateTransformStmt& Node::create_transform_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateTransformStmt) { clear_has_node(); auto* temp = _impl_.node_.create_transform_stmt_; _impl_.node_.create_transform_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_transform_stmt(::pg_query::CreateTransformStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_transform_stmt(); _impl_.node_.create_transform_stmt_ = value; } // @@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 (node_case() != kCreateTransformStmt) { clear_node(); set_has_create_transform_stmt(); _impl_.node_.create_transform_stmt_ = CreateMaybeMessage<::pg_query::CreateTransformStmt>(GetArena()); } return _impl_.node_.create_transform_stmt_; } inline ::pg_query::CreateTransformStmt* Node::mutable_create_transform_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateTransformStmt* _msg = _internal_mutable_create_transform_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_transform_stmt) return _msg; } // .pg_query.PrepareStmt prepare_stmt = 246 [json_name = "PrepareStmt"]; inline bool Node::has_prepare_stmt() const { return node_case() == kPrepareStmt; } inline bool Node::_internal_has_prepare_stmt() const { return node_case() == kPrepareStmt; } inline void Node::set_has_prepare_stmt() { _impl_._oneof_case_[0] = kPrepareStmt; } inline void Node::clear_prepare_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kPrepareStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kPrepareStmt) { clear_has_node(); auto* temp = _impl_.node_.prepare_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.prepare_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PrepareStmt& Node::_internal_prepare_stmt() const { return node_case() == kPrepareStmt ? *_impl_.node_.prepare_stmt_ : reinterpret_cast<::pg_query::PrepareStmt&>(::pg_query::_PrepareStmt_default_instance_); } inline const ::pg_query::PrepareStmt& Node::prepare_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kPrepareStmt) { clear_has_node(); auto* temp = _impl_.node_.prepare_stmt_; _impl_.node_.prepare_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_prepare_stmt(::pg_query::PrepareStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_prepare_stmt(); _impl_.node_.prepare_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.prepare_stmt) } inline ::pg_query::PrepareStmt* Node::_internal_mutable_prepare_stmt() { if (node_case() != kPrepareStmt) { clear_node(); set_has_prepare_stmt(); _impl_.node_.prepare_stmt_ = CreateMaybeMessage<::pg_query::PrepareStmt>(GetArena()); } return _impl_.node_.prepare_stmt_; } inline ::pg_query::PrepareStmt* Node::mutable_prepare_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::PrepareStmt* _msg = _internal_mutable_prepare_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.prepare_stmt) return _msg; } // .pg_query.ExecuteStmt execute_stmt = 247 [json_name = "ExecuteStmt"]; inline bool Node::has_execute_stmt() const { return node_case() == kExecuteStmt; } inline bool Node::_internal_has_execute_stmt() const { return node_case() == kExecuteStmt; } inline void Node::set_has_execute_stmt() { _impl_._oneof_case_[0] = kExecuteStmt; } inline void Node::clear_execute_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kExecuteStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kExecuteStmt) { clear_has_node(); auto* temp = _impl_.node_.execute_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.execute_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ExecuteStmt& Node::_internal_execute_stmt() const { return node_case() == kExecuteStmt ? *_impl_.node_.execute_stmt_ : reinterpret_cast<::pg_query::ExecuteStmt&>(::pg_query::_ExecuteStmt_default_instance_); } inline const ::pg_query::ExecuteStmt& Node::execute_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kExecuteStmt) { clear_has_node(); auto* temp = _impl_.node_.execute_stmt_; _impl_.node_.execute_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_execute_stmt(::pg_query::ExecuteStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_execute_stmt(); _impl_.node_.execute_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.execute_stmt) } inline ::pg_query::ExecuteStmt* Node::_internal_mutable_execute_stmt() { if (node_case() != kExecuteStmt) { clear_node(); set_has_execute_stmt(); _impl_.node_.execute_stmt_ = CreateMaybeMessage<::pg_query::ExecuteStmt>(GetArena()); } return _impl_.node_.execute_stmt_; } inline ::pg_query::ExecuteStmt* Node::mutable_execute_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ExecuteStmt* _msg = _internal_mutable_execute_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.execute_stmt) return _msg; } // .pg_query.DeallocateStmt deallocate_stmt = 248 [json_name = "DeallocateStmt"]; inline bool Node::has_deallocate_stmt() const { return node_case() == kDeallocateStmt; } inline bool Node::_internal_has_deallocate_stmt() const { return node_case() == kDeallocateStmt; } inline void Node::set_has_deallocate_stmt() { _impl_._oneof_case_[0] = kDeallocateStmt; } inline void Node::clear_deallocate_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDeallocateStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDeallocateStmt) { clear_has_node(); auto* temp = _impl_.node_.deallocate_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.deallocate_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DeallocateStmt& Node::_internal_deallocate_stmt() const { return node_case() == kDeallocateStmt ? *_impl_.node_.deallocate_stmt_ : reinterpret_cast<::pg_query::DeallocateStmt&>(::pg_query::_DeallocateStmt_default_instance_); } inline const ::pg_query::DeallocateStmt& Node::deallocate_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDeallocateStmt) { clear_has_node(); auto* temp = _impl_.node_.deallocate_stmt_; _impl_.node_.deallocate_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_deallocate_stmt(::pg_query::DeallocateStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_deallocate_stmt(); _impl_.node_.deallocate_stmt_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.deallocate_stmt) } inline ::pg_query::DeallocateStmt* Node::_internal_mutable_deallocate_stmt() { if (node_case() != kDeallocateStmt) { clear_node(); set_has_deallocate_stmt(); _impl_.node_.deallocate_stmt_ = CreateMaybeMessage<::pg_query::DeallocateStmt>(GetArena()); } return _impl_.node_.deallocate_stmt_; } inline ::pg_query::DeallocateStmt* Node::mutable_deallocate_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DeallocateStmt* _msg = _internal_mutable_deallocate_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.deallocate_stmt) return _msg; } // .pg_query.DropOwnedStmt drop_owned_stmt = 249 [json_name = "DropOwnedStmt"]; inline bool Node::has_drop_owned_stmt() const { return node_case() == kDropOwnedStmt; } inline bool Node::_internal_has_drop_owned_stmt() const { return node_case() == kDropOwnedStmt; } inline void Node::set_has_drop_owned_stmt() { _impl_._oneof_case_[0] = kDropOwnedStmt; } inline void Node::clear_drop_owned_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDropOwnedStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDropOwnedStmt) { clear_has_node(); auto* temp = _impl_.node_.drop_owned_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.drop_owned_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropOwnedStmt& Node::_internal_drop_owned_stmt() const { return node_case() == kDropOwnedStmt ? *_impl_.node_.drop_owned_stmt_ : reinterpret_cast<::pg_query::DropOwnedStmt&>(::pg_query::_DropOwnedStmt_default_instance_); } inline const ::pg_query::DropOwnedStmt& Node::drop_owned_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDropOwnedStmt) { clear_has_node(); auto* temp = _impl_.node_.drop_owned_stmt_; _impl_.node_.drop_owned_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_drop_owned_stmt(::pg_query::DropOwnedStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_drop_owned_stmt(); _impl_.node_.drop_owned_stmt_ = value; } // @@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 (node_case() != kDropOwnedStmt) { clear_node(); set_has_drop_owned_stmt(); _impl_.node_.drop_owned_stmt_ = CreateMaybeMessage<::pg_query::DropOwnedStmt>(GetArena()); } return _impl_.node_.drop_owned_stmt_; } inline ::pg_query::DropOwnedStmt* Node::mutable_drop_owned_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DropOwnedStmt* _msg = _internal_mutable_drop_owned_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_owned_stmt) return _msg; } // .pg_query.ReassignOwnedStmt reassign_owned_stmt = 250 [json_name = "ReassignOwnedStmt"]; inline bool Node::has_reassign_owned_stmt() const { return node_case() == kReassignOwnedStmt; } inline bool Node::_internal_has_reassign_owned_stmt() const { return node_case() == kReassignOwnedStmt; } inline void Node::set_has_reassign_owned_stmt() { _impl_._oneof_case_[0] = kReassignOwnedStmt; } inline void Node::clear_reassign_owned_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kReassignOwnedStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kReassignOwnedStmt) { clear_has_node(); auto* temp = _impl_.node_.reassign_owned_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.reassign_owned_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ReassignOwnedStmt& Node::_internal_reassign_owned_stmt() const { return node_case() == kReassignOwnedStmt ? *_impl_.node_.reassign_owned_stmt_ : reinterpret_cast<::pg_query::ReassignOwnedStmt&>(::pg_query::_ReassignOwnedStmt_default_instance_); } inline const ::pg_query::ReassignOwnedStmt& Node::reassign_owned_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kReassignOwnedStmt) { clear_has_node(); auto* temp = _impl_.node_.reassign_owned_stmt_; _impl_.node_.reassign_owned_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_reassign_owned_stmt(::pg_query::ReassignOwnedStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_reassign_owned_stmt(); _impl_.node_.reassign_owned_stmt_ = value; } // @@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 (node_case() != kReassignOwnedStmt) { clear_node(); set_has_reassign_owned_stmt(); _impl_.node_.reassign_owned_stmt_ = CreateMaybeMessage<::pg_query::ReassignOwnedStmt>(GetArena()); } return _impl_.node_.reassign_owned_stmt_; } inline ::pg_query::ReassignOwnedStmt* Node::mutable_reassign_owned_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ReassignOwnedStmt* _msg = _internal_mutable_reassign_owned_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.reassign_owned_stmt) return _msg; } // .pg_query.AlterTSDictionaryStmt alter_tsdictionary_stmt = 251 [json_name = "AlterTSDictionaryStmt"]; inline bool Node::has_alter_tsdictionary_stmt() const { return node_case() == kAlterTsdictionaryStmt; } inline bool Node::_internal_has_alter_tsdictionary_stmt() const { return node_case() == kAlterTsdictionaryStmt; } inline void Node::set_has_alter_tsdictionary_stmt() { _impl_._oneof_case_[0] = kAlterTsdictionaryStmt; } inline void Node::clear_alter_tsdictionary_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterTsdictionaryStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterTsdictionaryStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_tsdictionary_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_tsdictionary_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterTSDictionaryStmt& Node::_internal_alter_tsdictionary_stmt() const { return node_case() == kAlterTsdictionaryStmt ? *_impl_.node_.alter_tsdictionary_stmt_ : reinterpret_cast<::pg_query::AlterTSDictionaryStmt&>(::pg_query::_AlterTSDictionaryStmt_default_instance_); } inline const ::pg_query::AlterTSDictionaryStmt& Node::alter_tsdictionary_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterTsdictionaryStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_tsdictionary_stmt_; _impl_.node_.alter_tsdictionary_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_tsdictionary_stmt(::pg_query::AlterTSDictionaryStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_tsdictionary_stmt(); _impl_.node_.alter_tsdictionary_stmt_ = value; } // @@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 (node_case() != kAlterTsdictionaryStmt) { clear_node(); set_has_alter_tsdictionary_stmt(); _impl_.node_.alter_tsdictionary_stmt_ = CreateMaybeMessage<::pg_query::AlterTSDictionaryStmt>(GetArena()); } return _impl_.node_.alter_tsdictionary_stmt_; } inline ::pg_query::AlterTSDictionaryStmt* Node::mutable_alter_tsdictionary_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterTSDictionaryStmt* _msg = _internal_mutable_alter_tsdictionary_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_tsdictionary_stmt) return _msg; } // .pg_query.AlterTSConfigurationStmt alter_tsconfiguration_stmt = 252 [json_name = "AlterTSConfigurationStmt"]; inline bool Node::has_alter_tsconfiguration_stmt() const { return node_case() == kAlterTsconfigurationStmt; } inline bool Node::_internal_has_alter_tsconfiguration_stmt() const { return node_case() == kAlterTsconfigurationStmt; } inline void Node::set_has_alter_tsconfiguration_stmt() { _impl_._oneof_case_[0] = kAlterTsconfigurationStmt; } inline void Node::clear_alter_tsconfiguration_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterTsconfigurationStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterTsconfigurationStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_tsconfiguration_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_tsconfiguration_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterTSConfigurationStmt& Node::_internal_alter_tsconfiguration_stmt() const { return node_case() == kAlterTsconfigurationStmt ? *_impl_.node_.alter_tsconfiguration_stmt_ : reinterpret_cast<::pg_query::AlterTSConfigurationStmt&>(::pg_query::_AlterTSConfigurationStmt_default_instance_); } inline const ::pg_query::AlterTSConfigurationStmt& Node::alter_tsconfiguration_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterTsconfigurationStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_tsconfiguration_stmt_; _impl_.node_.alter_tsconfiguration_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_tsconfiguration_stmt(::pg_query::AlterTSConfigurationStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_tsconfiguration_stmt(); _impl_.node_.alter_tsconfiguration_stmt_ = value; } // @@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 (node_case() != kAlterTsconfigurationStmt) { clear_node(); set_has_alter_tsconfiguration_stmt(); _impl_.node_.alter_tsconfiguration_stmt_ = CreateMaybeMessage<::pg_query::AlterTSConfigurationStmt>(GetArena()); } return _impl_.node_.alter_tsconfiguration_stmt_; } inline ::pg_query::AlterTSConfigurationStmt* Node::mutable_alter_tsconfiguration_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterTSConfigurationStmt* _msg = _internal_mutable_alter_tsconfiguration_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_tsconfiguration_stmt) return _msg; } // .pg_query.PublicationTable publication_table = 253 [json_name = "PublicationTable"]; inline bool Node::has_publication_table() const { return node_case() == kPublicationTable; } inline bool Node::_internal_has_publication_table() const { return node_case() == kPublicationTable; } inline void Node::set_has_publication_table() { _impl_._oneof_case_[0] = kPublicationTable; } inline void Node::clear_publication_table() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kPublicationTable) { if (GetArena() == nullptr) { delete _impl_.node_.publication_table_; } clear_has_node(); } } inline ::pg_query::PublicationTable* Node::release_publication_table() { // @@protoc_insertion_point(field_release:pg_query.Node.publication_table) if (node_case() == kPublicationTable) { clear_has_node(); auto* temp = _impl_.node_.publication_table_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.publication_table_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PublicationTable& Node::_internal_publication_table() const { return node_case() == kPublicationTable ? *_impl_.node_.publication_table_ : reinterpret_cast<::pg_query::PublicationTable&>(::pg_query::_PublicationTable_default_instance_); } inline const ::pg_query::PublicationTable& Node::publication_table() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.publication_table) return _internal_publication_table(); } inline ::pg_query::PublicationTable* Node::unsafe_arena_release_publication_table() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.publication_table) if (node_case() == kPublicationTable) { clear_has_node(); auto* temp = _impl_.node_.publication_table_; _impl_.node_.publication_table_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_publication_table(::pg_query::PublicationTable* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_publication_table(); _impl_.node_.publication_table_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.publication_table) } inline ::pg_query::PublicationTable* Node::_internal_mutable_publication_table() { if (node_case() != kPublicationTable) { clear_node(); set_has_publication_table(); _impl_.node_.publication_table_ = CreateMaybeMessage<::pg_query::PublicationTable>(GetArena()); } return _impl_.node_.publication_table_; } inline ::pg_query::PublicationTable* Node::mutable_publication_table() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::PublicationTable* _msg = _internal_mutable_publication_table(); // @@protoc_insertion_point(field_mutable:pg_query.Node.publication_table) return _msg; } // .pg_query.PublicationObjSpec publication_obj_spec = 254 [json_name = "PublicationObjSpec"]; inline bool Node::has_publication_obj_spec() const { return node_case() == kPublicationObjSpec; } inline bool Node::_internal_has_publication_obj_spec() const { return node_case() == kPublicationObjSpec; } inline void Node::set_has_publication_obj_spec() { _impl_._oneof_case_[0] = kPublicationObjSpec; } inline void Node::clear_publication_obj_spec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kPublicationObjSpec) { if (GetArena() == nullptr) { delete _impl_.node_.publication_obj_spec_; } clear_has_node(); } } inline ::pg_query::PublicationObjSpec* Node::release_publication_obj_spec() { // @@protoc_insertion_point(field_release:pg_query.Node.publication_obj_spec) if (node_case() == kPublicationObjSpec) { clear_has_node(); auto* temp = _impl_.node_.publication_obj_spec_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.publication_obj_spec_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PublicationObjSpec& Node::_internal_publication_obj_spec() const { return node_case() == kPublicationObjSpec ? *_impl_.node_.publication_obj_spec_ : reinterpret_cast<::pg_query::PublicationObjSpec&>(::pg_query::_PublicationObjSpec_default_instance_); } inline const ::pg_query::PublicationObjSpec& Node::publication_obj_spec() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.publication_obj_spec) return _internal_publication_obj_spec(); } inline ::pg_query::PublicationObjSpec* Node::unsafe_arena_release_publication_obj_spec() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.publication_obj_spec) if (node_case() == kPublicationObjSpec) { clear_has_node(); auto* temp = _impl_.node_.publication_obj_spec_; _impl_.node_.publication_obj_spec_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_publication_obj_spec(::pg_query::PublicationObjSpec* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_publication_obj_spec(); _impl_.node_.publication_obj_spec_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.publication_obj_spec) } inline ::pg_query::PublicationObjSpec* Node::_internal_mutable_publication_obj_spec() { if (node_case() != kPublicationObjSpec) { clear_node(); set_has_publication_obj_spec(); _impl_.node_.publication_obj_spec_ = CreateMaybeMessage<::pg_query::PublicationObjSpec>(GetArena()); } return _impl_.node_.publication_obj_spec_; } inline ::pg_query::PublicationObjSpec* Node::mutable_publication_obj_spec() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::PublicationObjSpec* _msg = _internal_mutable_publication_obj_spec(); // @@protoc_insertion_point(field_mutable:pg_query.Node.publication_obj_spec) return _msg; } // .pg_query.CreatePublicationStmt create_publication_stmt = 255 [json_name = "CreatePublicationStmt"]; inline bool Node::has_create_publication_stmt() const { return node_case() == kCreatePublicationStmt; } inline bool Node::_internal_has_create_publication_stmt() const { return node_case() == kCreatePublicationStmt; } inline void Node::set_has_create_publication_stmt() { _impl_._oneof_case_[0] = kCreatePublicationStmt; } inline void Node::clear_create_publication_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreatePublicationStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreatePublicationStmt) { clear_has_node(); auto* temp = _impl_.node_.create_publication_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_publication_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreatePublicationStmt& Node::_internal_create_publication_stmt() const { return node_case() == kCreatePublicationStmt ? *_impl_.node_.create_publication_stmt_ : reinterpret_cast<::pg_query::CreatePublicationStmt&>(::pg_query::_CreatePublicationStmt_default_instance_); } inline const ::pg_query::CreatePublicationStmt& Node::create_publication_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreatePublicationStmt) { clear_has_node(); auto* temp = _impl_.node_.create_publication_stmt_; _impl_.node_.create_publication_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_publication_stmt(::pg_query::CreatePublicationStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_publication_stmt(); _impl_.node_.create_publication_stmt_ = value; } // @@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 (node_case() != kCreatePublicationStmt) { clear_node(); set_has_create_publication_stmt(); _impl_.node_.create_publication_stmt_ = CreateMaybeMessage<::pg_query::CreatePublicationStmt>(GetArena()); } return _impl_.node_.create_publication_stmt_; } inline ::pg_query::CreatePublicationStmt* Node::mutable_create_publication_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreatePublicationStmt* _msg = _internal_mutable_create_publication_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_publication_stmt) return _msg; } // .pg_query.AlterPublicationStmt alter_publication_stmt = 256 [json_name = "AlterPublicationStmt"]; inline bool Node::has_alter_publication_stmt() const { return node_case() == kAlterPublicationStmt; } inline bool Node::_internal_has_alter_publication_stmt() const { return node_case() == kAlterPublicationStmt; } inline void Node::set_has_alter_publication_stmt() { _impl_._oneof_case_[0] = kAlterPublicationStmt; } inline void Node::clear_alter_publication_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterPublicationStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterPublicationStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_publication_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_publication_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterPublicationStmt& Node::_internal_alter_publication_stmt() const { return node_case() == kAlterPublicationStmt ? *_impl_.node_.alter_publication_stmt_ : reinterpret_cast<::pg_query::AlterPublicationStmt&>(::pg_query::_AlterPublicationStmt_default_instance_); } inline const ::pg_query::AlterPublicationStmt& Node::alter_publication_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterPublicationStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_publication_stmt_; _impl_.node_.alter_publication_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_publication_stmt(::pg_query::AlterPublicationStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_publication_stmt(); _impl_.node_.alter_publication_stmt_ = value; } // @@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 (node_case() != kAlterPublicationStmt) { clear_node(); set_has_alter_publication_stmt(); _impl_.node_.alter_publication_stmt_ = CreateMaybeMessage<::pg_query::AlterPublicationStmt>(GetArena()); } return _impl_.node_.alter_publication_stmt_; } inline ::pg_query::AlterPublicationStmt* Node::mutable_alter_publication_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterPublicationStmt* _msg = _internal_mutable_alter_publication_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_publication_stmt) return _msg; } // .pg_query.CreateSubscriptionStmt create_subscription_stmt = 257 [json_name = "CreateSubscriptionStmt"]; inline bool Node::has_create_subscription_stmt() const { return node_case() == kCreateSubscriptionStmt; } inline bool Node::_internal_has_create_subscription_stmt() const { return node_case() == kCreateSubscriptionStmt; } inline void Node::set_has_create_subscription_stmt() { _impl_._oneof_case_[0] = kCreateSubscriptionStmt; } inline void Node::clear_create_subscription_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kCreateSubscriptionStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kCreateSubscriptionStmt) { clear_has_node(); auto* temp = _impl_.node_.create_subscription_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.create_subscription_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateSubscriptionStmt& Node::_internal_create_subscription_stmt() const { return node_case() == kCreateSubscriptionStmt ? *_impl_.node_.create_subscription_stmt_ : reinterpret_cast<::pg_query::CreateSubscriptionStmt&>(::pg_query::_CreateSubscriptionStmt_default_instance_); } inline const ::pg_query::CreateSubscriptionStmt& Node::create_subscription_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kCreateSubscriptionStmt) { clear_has_node(); auto* temp = _impl_.node_.create_subscription_stmt_; _impl_.node_.create_subscription_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_subscription_stmt(::pg_query::CreateSubscriptionStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_create_subscription_stmt(); _impl_.node_.create_subscription_stmt_ = value; } // @@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 (node_case() != kCreateSubscriptionStmt) { clear_node(); set_has_create_subscription_stmt(); _impl_.node_.create_subscription_stmt_ = CreateMaybeMessage<::pg_query::CreateSubscriptionStmt>(GetArena()); } return _impl_.node_.create_subscription_stmt_; } inline ::pg_query::CreateSubscriptionStmt* Node::mutable_create_subscription_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateSubscriptionStmt* _msg = _internal_mutable_create_subscription_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.create_subscription_stmt) return _msg; } // .pg_query.AlterSubscriptionStmt alter_subscription_stmt = 258 [json_name = "AlterSubscriptionStmt"]; inline bool Node::has_alter_subscription_stmt() const { return node_case() == kAlterSubscriptionStmt; } inline bool Node::_internal_has_alter_subscription_stmt() const { return node_case() == kAlterSubscriptionStmt; } inline void Node::set_has_alter_subscription_stmt() { _impl_._oneof_case_[0] = kAlterSubscriptionStmt; } inline void Node::clear_alter_subscription_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAlterSubscriptionStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAlterSubscriptionStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_subscription_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.alter_subscription_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterSubscriptionStmt& Node::_internal_alter_subscription_stmt() const { return node_case() == kAlterSubscriptionStmt ? *_impl_.node_.alter_subscription_stmt_ : reinterpret_cast<::pg_query::AlterSubscriptionStmt&>(::pg_query::_AlterSubscriptionStmt_default_instance_); } inline const ::pg_query::AlterSubscriptionStmt& Node::alter_subscription_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAlterSubscriptionStmt) { clear_has_node(); auto* temp = _impl_.node_.alter_subscription_stmt_; _impl_.node_.alter_subscription_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_subscription_stmt(::pg_query::AlterSubscriptionStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_alter_subscription_stmt(); _impl_.node_.alter_subscription_stmt_ = value; } // @@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 (node_case() != kAlterSubscriptionStmt) { clear_node(); set_has_alter_subscription_stmt(); _impl_.node_.alter_subscription_stmt_ = CreateMaybeMessage<::pg_query::AlterSubscriptionStmt>(GetArena()); } return _impl_.node_.alter_subscription_stmt_; } inline ::pg_query::AlterSubscriptionStmt* Node::mutable_alter_subscription_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::AlterSubscriptionStmt* _msg = _internal_mutable_alter_subscription_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_subscription_stmt) return _msg; } // .pg_query.DropSubscriptionStmt drop_subscription_stmt = 259 [json_name = "DropSubscriptionStmt"]; inline bool Node::has_drop_subscription_stmt() const { return node_case() == kDropSubscriptionStmt; } inline bool Node::_internal_has_drop_subscription_stmt() const { return node_case() == kDropSubscriptionStmt; } inline void Node::set_has_drop_subscription_stmt() { _impl_._oneof_case_[0] = kDropSubscriptionStmt; } inline void Node::clear_drop_subscription_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kDropSubscriptionStmt) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kDropSubscriptionStmt) { clear_has_node(); auto* temp = _impl_.node_.drop_subscription_stmt_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.drop_subscription_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropSubscriptionStmt& Node::_internal_drop_subscription_stmt() const { return node_case() == kDropSubscriptionStmt ? *_impl_.node_.drop_subscription_stmt_ : reinterpret_cast<::pg_query::DropSubscriptionStmt&>(::pg_query::_DropSubscriptionStmt_default_instance_); } inline const ::pg_query::DropSubscriptionStmt& Node::drop_subscription_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kDropSubscriptionStmt) { clear_has_node(); auto* temp = _impl_.node_.drop_subscription_stmt_; _impl_.node_.drop_subscription_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_drop_subscription_stmt(::pg_query::DropSubscriptionStmt* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_drop_subscription_stmt(); _impl_.node_.drop_subscription_stmt_ = value; } // @@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 (node_case() != kDropSubscriptionStmt) { clear_node(); set_has_drop_subscription_stmt(); _impl_.node_.drop_subscription_stmt_ = CreateMaybeMessage<::pg_query::DropSubscriptionStmt>(GetArena()); } return _impl_.node_.drop_subscription_stmt_; } inline ::pg_query::DropSubscriptionStmt* Node::mutable_drop_subscription_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::DropSubscriptionStmt* _msg = _internal_mutable_drop_subscription_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_subscription_stmt) return _msg; } // .pg_query.Integer integer = 260 [json_name = "Integer"]; inline bool Node::has_integer() const { return node_case() == kInteger; } inline bool Node::_internal_has_integer() const { return node_case() == kInteger; } inline void Node::set_has_integer() { _impl_._oneof_case_[0] = kInteger; } inline void Node::clear_integer() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kInteger) { if (GetArena() == nullptr) { delete _impl_.node_.integer_; } clear_has_node(); } } inline ::pg_query::Integer* Node::release_integer() { // @@protoc_insertion_point(field_release:pg_query.Node.integer) if (node_case() == kInteger) { clear_has_node(); auto* temp = _impl_.node_.integer_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.integer_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Integer& Node::_internal_integer() const { return node_case() == kInteger ? *_impl_.node_.integer_ : reinterpret_cast<::pg_query::Integer&>(::pg_query::_Integer_default_instance_); } inline const ::pg_query::Integer& Node::integer() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kInteger) { clear_has_node(); auto* temp = _impl_.node_.integer_; _impl_.node_.integer_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_integer(::pg_query::Integer* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_integer(); _impl_.node_.integer_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.integer) } inline ::pg_query::Integer* Node::_internal_mutable_integer() { if (node_case() != kInteger) { clear_node(); set_has_integer(); _impl_.node_.integer_ = CreateMaybeMessage<::pg_query::Integer>(GetArena()); } return _impl_.node_.integer_; } inline ::pg_query::Integer* Node::mutable_integer() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Integer* _msg = _internal_mutable_integer(); // @@protoc_insertion_point(field_mutable:pg_query.Node.integer) return _msg; } // .pg_query.Float float = 261 [json_name = "Float"]; inline bool Node::has_float_() const { return node_case() == kFloat; } inline bool Node::_internal_has_float_() const { return node_case() == kFloat; } inline void Node::set_has_float_() { _impl_._oneof_case_[0] = kFloat; } inline void Node::clear_float_() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kFloat) { if (GetArena() == nullptr) { delete _impl_.node_.float__; } clear_has_node(); } } inline ::pg_query::Float* Node::release_float_() { // @@protoc_insertion_point(field_release:pg_query.Node.float) if (node_case() == kFloat) { clear_has_node(); auto* temp = _impl_.node_.float__; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.float__ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Float& Node::_internal_float_() const { return node_case() == kFloat ? *_impl_.node_.float__ : reinterpret_cast<::pg_query::Float&>(::pg_query::_Float_default_instance_); } inline const ::pg_query::Float& Node::float_() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kFloat) { clear_has_node(); auto* temp = _impl_.node_.float__; _impl_.node_.float__ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_float_(::pg_query::Float* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_float_(); _impl_.node_.float__ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.float) } inline ::pg_query::Float* Node::_internal_mutable_float_() { if (node_case() != kFloat) { clear_node(); set_has_float_(); _impl_.node_.float__ = CreateMaybeMessage<::pg_query::Float>(GetArena()); } return _impl_.node_.float__; } inline ::pg_query::Float* Node::mutable_float_() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Float* _msg = _internal_mutable_float_(); // @@protoc_insertion_point(field_mutable:pg_query.Node.float) return _msg; } // .pg_query.Boolean boolean = 262 [json_name = "Boolean"]; inline bool Node::has_boolean() const { return node_case() == kBoolean; } inline bool Node::_internal_has_boolean() const { return node_case() == kBoolean; } inline void Node::set_has_boolean() { _impl_._oneof_case_[0] = kBoolean; } inline void Node::clear_boolean() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kBoolean) { if (GetArena() == nullptr) { delete _impl_.node_.boolean_; } clear_has_node(); } } inline ::pg_query::Boolean* Node::release_boolean() { // @@protoc_insertion_point(field_release:pg_query.Node.boolean) if (node_case() == kBoolean) { clear_has_node(); auto* temp = _impl_.node_.boolean_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.boolean_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Boolean& Node::_internal_boolean() const { return node_case() == kBoolean ? *_impl_.node_.boolean_ : reinterpret_cast<::pg_query::Boolean&>(::pg_query::_Boolean_default_instance_); } inline const ::pg_query::Boolean& Node::boolean() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Node.boolean) return _internal_boolean(); } inline ::pg_query::Boolean* Node::unsafe_arena_release_boolean() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.boolean) if (node_case() == kBoolean) { clear_has_node(); auto* temp = _impl_.node_.boolean_; _impl_.node_.boolean_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_boolean(::pg_query::Boolean* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_boolean(); _impl_.node_.boolean_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.boolean) } inline ::pg_query::Boolean* Node::_internal_mutable_boolean() { if (node_case() != kBoolean) { clear_node(); set_has_boolean(); _impl_.node_.boolean_ = CreateMaybeMessage<::pg_query::Boolean>(GetArena()); } return _impl_.node_.boolean_; } inline ::pg_query::Boolean* Node::mutable_boolean() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Boolean* _msg = _internal_mutable_boolean(); // @@protoc_insertion_point(field_mutable:pg_query.Node.boolean) return _msg; } // .pg_query.String string = 263 [json_name = "String"]; inline bool Node::has_string() const { return node_case() == kString; } inline bool Node::_internal_has_string() const { return node_case() == kString; } inline void Node::set_has_string() { _impl_._oneof_case_[0] = kString; } inline void Node::clear_string() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kString) { if (GetArena() == nullptr) { delete _impl_.node_.string_; } clear_has_node(); } } inline ::pg_query::String* Node::release_string() { // @@protoc_insertion_point(field_release:pg_query.Node.string) if (node_case() == kString) { clear_has_node(); auto* temp = _impl_.node_.string_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.string_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::String& Node::_internal_string() const { return node_case() == kString ? *_impl_.node_.string_ : reinterpret_cast<::pg_query::String&>(::pg_query::_String_default_instance_); } inline const ::pg_query::String& Node::string() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kString) { clear_has_node(); auto* temp = _impl_.node_.string_; _impl_.node_.string_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_string(::pg_query::String* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_string(); _impl_.node_.string_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.string) } inline ::pg_query::String* Node::_internal_mutable_string() { if (node_case() != kString) { clear_node(); set_has_string(); _impl_.node_.string_ = CreateMaybeMessage<::pg_query::String>(GetArena()); } return _impl_.node_.string_; } inline ::pg_query::String* Node::mutable_string() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::String* _msg = _internal_mutable_string(); // @@protoc_insertion_point(field_mutable:pg_query.Node.string) return _msg; } // .pg_query.BitString bit_string = 264 [json_name = "BitString"]; inline bool Node::has_bit_string() const { return node_case() == kBitString; } inline bool Node::_internal_has_bit_string() const { return node_case() == kBitString; } inline void Node::set_has_bit_string() { _impl_._oneof_case_[0] = kBitString; } inline void Node::clear_bit_string() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kBitString) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kBitString) { clear_has_node(); auto* temp = _impl_.node_.bit_string_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.bit_string_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::BitString& Node::_internal_bit_string() const { return node_case() == kBitString ? *_impl_.node_.bit_string_ : reinterpret_cast<::pg_query::BitString&>(::pg_query::_BitString_default_instance_); } inline const ::pg_query::BitString& Node::bit_string() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kBitString) { clear_has_node(); auto* temp = _impl_.node_.bit_string_; _impl_.node_.bit_string_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_bit_string(::pg_query::BitString* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_bit_string(); _impl_.node_.bit_string_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.bit_string) } inline ::pg_query::BitString* Node::_internal_mutable_bit_string() { if (node_case() != kBitString) { clear_node(); set_has_bit_string(); _impl_.node_.bit_string_ = CreateMaybeMessage<::pg_query::BitString>(GetArena()); } return _impl_.node_.bit_string_; } inline ::pg_query::BitString* Node::mutable_bit_string() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::BitString* _msg = _internal_mutable_bit_string(); // @@protoc_insertion_point(field_mutable:pg_query.Node.bit_string) return _msg; } // .pg_query.List list = 265 [json_name = "List"]; inline bool Node::has_list() const { return node_case() == kList; } inline bool Node::_internal_has_list() const { return node_case() == kList; } inline void Node::set_has_list() { _impl_._oneof_case_[0] = kList; } inline void Node::clear_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kList) { if (GetArena() == nullptr) { delete _impl_.node_.list_; } clear_has_node(); } } inline ::pg_query::List* Node::release_list() { // @@protoc_insertion_point(field_release:pg_query.Node.list) if (node_case() == kList) { clear_has_node(); auto* temp = _impl_.node_.list_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.list_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::List& Node::_internal_list() const { return node_case() == kList ? *_impl_.node_.list_ : reinterpret_cast<::pg_query::List&>(::pg_query::_List_default_instance_); } inline const ::pg_query::List& Node::list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kList) { clear_has_node(); auto* temp = _impl_.node_.list_; _impl_.node_.list_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_list(::pg_query::List* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_list(); _impl_.node_.list_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.list) } inline ::pg_query::List* Node::_internal_mutable_list() { if (node_case() != kList) { clear_node(); set_has_list(); _impl_.node_.list_ = CreateMaybeMessage<::pg_query::List>(GetArena()); } return _impl_.node_.list_; } inline ::pg_query::List* Node::mutable_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::List* _msg = _internal_mutable_list(); // @@protoc_insertion_point(field_mutable:pg_query.Node.list) return _msg; } // .pg_query.IntList int_list = 266 [json_name = "IntList"]; inline bool Node::has_int_list() const { return node_case() == kIntList; } inline bool Node::_internal_has_int_list() const { return node_case() == kIntList; } inline void Node::set_has_int_list() { _impl_._oneof_case_[0] = kIntList; } inline void Node::clear_int_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kIntList) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kIntList) { clear_has_node(); auto* temp = _impl_.node_.int_list_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.int_list_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::IntList& Node::_internal_int_list() const { return node_case() == kIntList ? *_impl_.node_.int_list_ : reinterpret_cast<::pg_query::IntList&>(::pg_query::_IntList_default_instance_); } inline const ::pg_query::IntList& Node::int_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kIntList) { clear_has_node(); auto* temp = _impl_.node_.int_list_; _impl_.node_.int_list_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_int_list(::pg_query::IntList* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_int_list(); _impl_.node_.int_list_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.int_list) } inline ::pg_query::IntList* Node::_internal_mutable_int_list() { if (node_case() != kIntList) { clear_node(); set_has_int_list(); _impl_.node_.int_list_ = CreateMaybeMessage<::pg_query::IntList>(GetArena()); } return _impl_.node_.int_list_; } inline ::pg_query::IntList* Node::mutable_int_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::IntList* _msg = _internal_mutable_int_list(); // @@protoc_insertion_point(field_mutable:pg_query.Node.int_list) return _msg; } // .pg_query.OidList oid_list = 267 [json_name = "OidList"]; inline bool Node::has_oid_list() const { return node_case() == kOidList; } inline bool Node::_internal_has_oid_list() const { return node_case() == kOidList; } inline void Node::set_has_oid_list() { _impl_._oneof_case_[0] = kOidList; } inline void Node::clear_oid_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kOidList) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kOidList) { clear_has_node(); auto* temp = _impl_.node_.oid_list_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.oid_list_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::OidList& Node::_internal_oid_list() const { return node_case() == kOidList ? *_impl_.node_.oid_list_ : reinterpret_cast<::pg_query::OidList&>(::pg_query::_OidList_default_instance_); } inline const ::pg_query::OidList& Node::oid_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kOidList) { clear_has_node(); auto* temp = _impl_.node_.oid_list_; _impl_.node_.oid_list_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_oid_list(::pg_query::OidList* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_oid_list(); _impl_.node_.oid_list_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.oid_list) } inline ::pg_query::OidList* Node::_internal_mutable_oid_list() { if (node_case() != kOidList) { clear_node(); set_has_oid_list(); _impl_.node_.oid_list_ = CreateMaybeMessage<::pg_query::OidList>(GetArena()); } return _impl_.node_.oid_list_; } inline ::pg_query::OidList* Node::mutable_oid_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::OidList* _msg = _internal_mutable_oid_list(); // @@protoc_insertion_point(field_mutable:pg_query.Node.oid_list) return _msg; } // .pg_query.A_Const a_const = 268 [json_name = "A_Const"]; inline bool Node::has_a_const() const { return node_case() == kAConst; } inline bool Node::_internal_has_a_const() const { return node_case() == kAConst; } inline void Node::set_has_a_const() { _impl_._oneof_case_[0] = kAConst; } inline void Node::clear_a_const() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (node_case() == kAConst) { if (GetArena() == nullptr) { delete _impl_.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 (node_case() == kAConst) { clear_has_node(); auto* temp = _impl_.node_.a_const_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.node_.a_const_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::A_Const& Node::_internal_a_const() const { return node_case() == kAConst ? *_impl_.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 ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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 (node_case() == kAConst) { clear_has_node(); auto* temp = _impl_.node_.a_const_; _impl_.node_.a_const_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_a_const(::pg_query::A_Const* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_node(); if (value) { set_has_a_const(); _impl_.node_.a_const_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_const) } inline ::pg_query::A_Const* Node::_internal_mutable_a_const() { if (node_case() != kAConst) { clear_node(); set_has_a_const(); _impl_.node_.a_const_ = CreateMaybeMessage<::pg_query::A_Const>(GetArena()); } return _impl_.node_.a_const_; } inline ::pg_query::A_Const* Node::mutable_a_const() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::A_Const* _msg = _internal_mutable_a_const(); // @@protoc_insertion_point(field_mutable:pg_query.Node.a_const) return _msg; } inline bool Node::has_node() const { return node_case() != NODE_NOT_SET; } inline void Node::clear_has_node() { _impl_._oneof_case_[0] = NODE_NOT_SET; } inline Node::NodeCase Node::node_case() const { return Node::NodeCase(_impl_._oneof_case_[0]); } // ------------------------------------------------------------------- // Integer // int32 ival = 1; inline void Integer::clear_ival() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ival_ = 0; } inline ::int32_t Integer::ival() const { // @@protoc_insertion_point(field_get:pg_query.Integer.ival) return _internal_ival(); } inline void Integer::set_ival(::int32_t value) { _internal_set_ival(value); // @@protoc_insertion_point(field_set:pg_query.Integer.ival) } inline ::int32_t Integer::_internal_ival() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ival_; } inline void Integer::_internal_set_ival(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.ival_ = value; } // ------------------------------------------------------------------- // Float // string fval = 1; inline void Float::clear_fval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fval_.ClearToEmpty(); } inline const std::string& Float::fval() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Float.fval) return _internal_fval(); } template inline PROTOBUF_ALWAYS_INLINE void Float::set_fval(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fval_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.Float.fval) } inline std::string* Float::mutable_fval() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_fval(); // @@protoc_insertion_point(field_mutable:pg_query.Float.fval) return _s; } inline const std::string& Float::_internal_fval() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.fval_.Get(); } inline void Float::_internal_set_fval(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fval_.Set(value, GetArena()); } inline std::string* Float::_internal_mutable_fval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.fval_.Mutable( GetArena()); } inline std::string* Float::release_fval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Float.fval) return _impl_.fval_.Release(); } inline void Float::set_allocated_fval(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fval_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.fval_.IsDefault()) { _impl_.fval_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Float.fval) } // ------------------------------------------------------------------- // Boolean // bool boolval = 1; inline void Boolean::clear_boolval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.boolval_ = false; } inline bool Boolean::boolval() const { // @@protoc_insertion_point(field_get:pg_query.Boolean.boolval) return _internal_boolval(); } inline void Boolean::set_boolval(bool value) { _internal_set_boolval(value); // @@protoc_insertion_point(field_set:pg_query.Boolean.boolval) } inline bool Boolean::_internal_boolval() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.boolval_; } inline void Boolean::_internal_set_boolval(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.boolval_ = value; } // ------------------------------------------------------------------- // String // string sval = 1; inline void String::clear_sval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.sval_.ClearToEmpty(); } inline const std::string& String::sval() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.String.sval) return _internal_sval(); } template inline PROTOBUF_ALWAYS_INLINE void String::set_sval(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.sval_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.String.sval) } inline std::string* String::mutable_sval() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_sval(); // @@protoc_insertion_point(field_mutable:pg_query.String.sval) return _s; } inline const std::string& String::_internal_sval() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.sval_.Get(); } inline void String::_internal_set_sval(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.sval_.Set(value, GetArena()); } inline std::string* String::_internal_mutable_sval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.sval_.Mutable( GetArena()); } inline std::string* String::release_sval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.String.sval) return _impl_.sval_.Release(); } inline void String::set_allocated_sval(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.sval_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.sval_.IsDefault()) { _impl_.sval_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.String.sval) } // ------------------------------------------------------------------- // BitString // string bsval = 1; inline void BitString::clear_bsval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.bsval_.ClearToEmpty(); } inline const std::string& BitString::bsval() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.BitString.bsval) return _internal_bsval(); } template inline PROTOBUF_ALWAYS_INLINE void BitString::set_bsval(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.bsval_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.BitString.bsval) } inline std::string* BitString::mutable_bsval() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_bsval(); // @@protoc_insertion_point(field_mutable:pg_query.BitString.bsval) return _s; } inline const std::string& BitString::_internal_bsval() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.bsval_.Get(); } inline void BitString::_internal_set_bsval(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.bsval_.Set(value, GetArena()); } inline std::string* BitString::_internal_mutable_bsval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.bsval_.Mutable( GetArena()); } inline std::string* BitString::release_bsval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.BitString.bsval) return _impl_.bsval_.Release(); } inline void BitString::set_allocated_bsval(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.bsval_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.bsval_.IsDefault()) { _impl_.bsval_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.BitString.bsval) } // ------------------------------------------------------------------- // List // repeated .pg_query.Node items = 1; inline int List::_internal_items_size() const { return _internal_items().size(); } inline int List::items_size() const { return _internal_items_size(); } inline void List::clear_items() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.items_.Clear(); } inline ::pg_query::Node* List::mutable_items(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.List.items) return _internal_mutable_items()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* List::mutable_items() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.List.items) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_items(); } inline const ::pg_query::Node& List::items(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.List.items) return _internal_items().Get(index); } inline ::pg_query::Node* List::add_items() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_items()->Add(); // @@protoc_insertion_point(field_add:pg_query.List.items) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& List::items() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.List.items) return _internal_items(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& List::_internal_items() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.items_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* List::_internal_mutable_items() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.items_; } // ------------------------------------------------------------------- // OidList // repeated .pg_query.Node items = 1; inline int OidList::_internal_items_size() const { return _internal_items().size(); } inline int OidList::items_size() const { return _internal_items_size(); } inline void OidList::clear_items() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.items_.Clear(); } inline ::pg_query::Node* OidList::mutable_items(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.OidList.items) return _internal_mutable_items()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* OidList::mutable_items() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.OidList.items) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_items(); } inline const ::pg_query::Node& OidList::items(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.OidList.items) return _internal_items().Get(index); } inline ::pg_query::Node* OidList::add_items() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_items()->Add(); // @@protoc_insertion_point(field_add:pg_query.OidList.items) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& OidList::items() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.OidList.items) return _internal_items(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& OidList::_internal_items() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.items_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* OidList::_internal_mutable_items() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.items_; } // ------------------------------------------------------------------- // IntList // repeated .pg_query.Node items = 1; inline int IntList::_internal_items_size() const { return _internal_items().size(); } inline int IntList::items_size() const { return _internal_items_size(); } inline void IntList::clear_items() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.items_.Clear(); } inline ::pg_query::Node* IntList::mutable_items(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.IntList.items) return _internal_mutable_items()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IntList::mutable_items() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.IntList.items) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_items(); } inline const ::pg_query::Node& IntList::items(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IntList.items) return _internal_items().Get(index); } inline ::pg_query::Node* IntList::add_items() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_items()->Add(); // @@protoc_insertion_point(field_add:pg_query.IntList.items) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IntList::items() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.IntList.items) return _internal_items(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IntList::_internal_items() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.items_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IntList::_internal_mutable_items() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.items_; } // ------------------------------------------------------------------- // A_Const // .pg_query.Integer ival = 1; inline bool A_Const::has_ival() const { return val_case() == kIval; } inline bool A_Const::_internal_has_ival() const { return val_case() == kIval; } inline void A_Const::set_has_ival() { _impl_._oneof_case_[0] = kIval; } inline void A_Const::clear_ival() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (val_case() == kIval) { if (GetArena() == nullptr) { delete _impl_.val_.ival_; } clear_has_val(); } } inline ::pg_query::Integer* A_Const::release_ival() { // @@protoc_insertion_point(field_release:pg_query.A_Const.ival) if (val_case() == kIval) { clear_has_val(); auto* temp = _impl_.val_.ival_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.val_.ival_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Integer& A_Const::_internal_ival() const { return val_case() == kIval ? *_impl_.val_.ival_ : reinterpret_cast<::pg_query::Integer&>(::pg_query::_Integer_default_instance_); } inline const ::pg_query::Integer& A_Const::ival() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.A_Const.ival) return _internal_ival(); } inline ::pg_query::Integer* A_Const::unsafe_arena_release_ival() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.A_Const.ival) if (val_case() == kIval) { clear_has_val(); auto* temp = _impl_.val_.ival_; _impl_.val_.ival_ = nullptr; return temp; } else { return nullptr; } } inline void A_Const::unsafe_arena_set_allocated_ival(::pg_query::Integer* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_val(); if (value) { set_has_ival(); _impl_.val_.ival_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Const.ival) } inline ::pg_query::Integer* A_Const::_internal_mutable_ival() { if (val_case() != kIval) { clear_val(); set_has_ival(); _impl_.val_.ival_ = CreateMaybeMessage<::pg_query::Integer>(GetArena()); } return _impl_.val_.ival_; } inline ::pg_query::Integer* A_Const::mutable_ival() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Integer* _msg = _internal_mutable_ival(); // @@protoc_insertion_point(field_mutable:pg_query.A_Const.ival) return _msg; } // .pg_query.Float fval = 2; inline bool A_Const::has_fval() const { return val_case() == kFval; } inline bool A_Const::_internal_has_fval() const { return val_case() == kFval; } inline void A_Const::set_has_fval() { _impl_._oneof_case_[0] = kFval; } inline void A_Const::clear_fval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (val_case() == kFval) { if (GetArena() == nullptr) { delete _impl_.val_.fval_; } clear_has_val(); } } inline ::pg_query::Float* A_Const::release_fval() { // @@protoc_insertion_point(field_release:pg_query.A_Const.fval) if (val_case() == kFval) { clear_has_val(); auto* temp = _impl_.val_.fval_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.val_.fval_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Float& A_Const::_internal_fval() const { return val_case() == kFval ? *_impl_.val_.fval_ : reinterpret_cast<::pg_query::Float&>(::pg_query::_Float_default_instance_); } inline const ::pg_query::Float& A_Const::fval() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.A_Const.fval) return _internal_fval(); } inline ::pg_query::Float* A_Const::unsafe_arena_release_fval() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.A_Const.fval) if (val_case() == kFval) { clear_has_val(); auto* temp = _impl_.val_.fval_; _impl_.val_.fval_ = nullptr; return temp; } else { return nullptr; } } inline void A_Const::unsafe_arena_set_allocated_fval(::pg_query::Float* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_val(); if (value) { set_has_fval(); _impl_.val_.fval_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Const.fval) } inline ::pg_query::Float* A_Const::_internal_mutable_fval() { if (val_case() != kFval) { clear_val(); set_has_fval(); _impl_.val_.fval_ = CreateMaybeMessage<::pg_query::Float>(GetArena()); } return _impl_.val_.fval_; } inline ::pg_query::Float* A_Const::mutable_fval() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Float* _msg = _internal_mutable_fval(); // @@protoc_insertion_point(field_mutable:pg_query.A_Const.fval) return _msg; } // .pg_query.Boolean boolval = 3; inline bool A_Const::has_boolval() const { return val_case() == kBoolval; } inline bool A_Const::_internal_has_boolval() const { return val_case() == kBoolval; } inline void A_Const::set_has_boolval() { _impl_._oneof_case_[0] = kBoolval; } inline void A_Const::clear_boolval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (val_case() == kBoolval) { if (GetArena() == nullptr) { delete _impl_.val_.boolval_; } clear_has_val(); } } inline ::pg_query::Boolean* A_Const::release_boolval() { // @@protoc_insertion_point(field_release:pg_query.A_Const.boolval) if (val_case() == kBoolval) { clear_has_val(); auto* temp = _impl_.val_.boolval_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.val_.boolval_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Boolean& A_Const::_internal_boolval() const { return val_case() == kBoolval ? *_impl_.val_.boolval_ : reinterpret_cast<::pg_query::Boolean&>(::pg_query::_Boolean_default_instance_); } inline const ::pg_query::Boolean& A_Const::boolval() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.A_Const.boolval) return _internal_boolval(); } inline ::pg_query::Boolean* A_Const::unsafe_arena_release_boolval() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.A_Const.boolval) if (val_case() == kBoolval) { clear_has_val(); auto* temp = _impl_.val_.boolval_; _impl_.val_.boolval_ = nullptr; return temp; } else { return nullptr; } } inline void A_Const::unsafe_arena_set_allocated_boolval(::pg_query::Boolean* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_val(); if (value) { set_has_boolval(); _impl_.val_.boolval_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Const.boolval) } inline ::pg_query::Boolean* A_Const::_internal_mutable_boolval() { if (val_case() != kBoolval) { clear_val(); set_has_boolval(); _impl_.val_.boolval_ = CreateMaybeMessage<::pg_query::Boolean>(GetArena()); } return _impl_.val_.boolval_; } inline ::pg_query::Boolean* A_Const::mutable_boolval() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Boolean* _msg = _internal_mutable_boolval(); // @@protoc_insertion_point(field_mutable:pg_query.A_Const.boolval) return _msg; } // .pg_query.String sval = 4; inline bool A_Const::has_sval() const { return val_case() == kSval; } inline bool A_Const::_internal_has_sval() const { return val_case() == kSval; } inline void A_Const::set_has_sval() { _impl_._oneof_case_[0] = kSval; } inline void A_Const::clear_sval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (val_case() == kSval) { if (GetArena() == nullptr) { delete _impl_.val_.sval_; } clear_has_val(); } } inline ::pg_query::String* A_Const::release_sval() { // @@protoc_insertion_point(field_release:pg_query.A_Const.sval) if (val_case() == kSval) { clear_has_val(); auto* temp = _impl_.val_.sval_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.val_.sval_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::String& A_Const::_internal_sval() const { return val_case() == kSval ? *_impl_.val_.sval_ : reinterpret_cast<::pg_query::String&>(::pg_query::_String_default_instance_); } inline const ::pg_query::String& A_Const::sval() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.A_Const.sval) return _internal_sval(); } inline ::pg_query::String* A_Const::unsafe_arena_release_sval() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.A_Const.sval) if (val_case() == kSval) { clear_has_val(); auto* temp = _impl_.val_.sval_; _impl_.val_.sval_ = nullptr; return temp; } else { return nullptr; } } inline void A_Const::unsafe_arena_set_allocated_sval(::pg_query::String* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_val(); if (value) { set_has_sval(); _impl_.val_.sval_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Const.sval) } inline ::pg_query::String* A_Const::_internal_mutable_sval() { if (val_case() != kSval) { clear_val(); set_has_sval(); _impl_.val_.sval_ = CreateMaybeMessage<::pg_query::String>(GetArena()); } return _impl_.val_.sval_; } inline ::pg_query::String* A_Const::mutable_sval() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::String* _msg = _internal_mutable_sval(); // @@protoc_insertion_point(field_mutable:pg_query.A_Const.sval) return _msg; } // .pg_query.BitString bsval = 5; inline bool A_Const::has_bsval() const { return val_case() == kBsval; } inline bool A_Const::_internal_has_bsval() const { return val_case() == kBsval; } inline void A_Const::set_has_bsval() { _impl_._oneof_case_[0] = kBsval; } inline void A_Const::clear_bsval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (val_case() == kBsval) { if (GetArena() == nullptr) { delete _impl_.val_.bsval_; } clear_has_val(); } } inline ::pg_query::BitString* A_Const::release_bsval() { // @@protoc_insertion_point(field_release:pg_query.A_Const.bsval) if (val_case() == kBsval) { clear_has_val(); auto* temp = _impl_.val_.bsval_; if (GetArena() != nullptr) { temp = ::google::protobuf::internal::DuplicateIfNonNull(temp); } _impl_.val_.bsval_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::BitString& A_Const::_internal_bsval() const { return val_case() == kBsval ? *_impl_.val_.bsval_ : reinterpret_cast<::pg_query::BitString&>(::pg_query::_BitString_default_instance_); } inline const ::pg_query::BitString& A_Const::bsval() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.A_Const.bsval) return _internal_bsval(); } inline ::pg_query::BitString* A_Const::unsafe_arena_release_bsval() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.A_Const.bsval) if (val_case() == kBsval) { clear_has_val(); auto* temp = _impl_.val_.bsval_; _impl_.val_.bsval_ = nullptr; return temp; } else { return nullptr; } } inline void A_Const::unsafe_arena_set_allocated_bsval(::pg_query::BitString* value) { // We rely on the oneof clear method to free the earlier contents // of this oneof. We can directly use the pointer we're given to // set the new value. clear_val(); if (value) { set_has_bsval(); _impl_.val_.bsval_ = value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Const.bsval) } inline ::pg_query::BitString* A_Const::_internal_mutable_bsval() { if (val_case() != kBsval) { clear_val(); set_has_bsval(); _impl_.val_.bsval_ = CreateMaybeMessage<::pg_query::BitString>(GetArena()); } return _impl_.val_.bsval_; } inline ::pg_query::BitString* A_Const::mutable_bsval() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::BitString* _msg = _internal_mutable_bsval(); // @@protoc_insertion_point(field_mutable:pg_query.A_Const.bsval) return _msg; } // bool isnull = 10; inline void A_Const::clear_isnull() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.isnull_ = false; } inline bool A_Const::isnull() const { // @@protoc_insertion_point(field_get:pg_query.A_Const.isnull) return _internal_isnull(); } inline void A_Const::set_isnull(bool value) { _internal_set_isnull(value); // @@protoc_insertion_point(field_set:pg_query.A_Const.isnull) } inline bool A_Const::_internal_isnull() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.isnull_; } inline void A_Const::_internal_set_isnull(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.isnull_ = value; } // int32 location = 11; inline void A_Const::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t A_Const::location() const { // @@protoc_insertion_point(field_get:pg_query.A_Const.location) return _internal_location(); } inline void A_Const::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.A_Const.location) } inline ::int32_t A_Const::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void A_Const::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } inline bool A_Const::has_val() const { return val_case() != VAL_NOT_SET; } inline void A_Const::clear_has_val() { _impl_._oneof_case_[0] = VAL_NOT_SET; } inline A_Const::ValCase A_Const::val_case() const { return A_Const::ValCase(_impl_._oneof_case_[0]); } // ------------------------------------------------------------------- // Alias // string aliasname = 1 [json_name = "aliasname"]; inline void Alias::clear_aliasname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aliasname_.ClearToEmpty(); } inline const std::string& Alias::aliasname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Alias.aliasname) return _internal_aliasname(); } template inline PROTOBUF_ALWAYS_INLINE void Alias::set_aliasname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.aliasname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.Alias.aliasname) } inline std::string* Alias::mutable_aliasname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_aliasname(); // @@protoc_insertion_point(field_mutable:pg_query.Alias.aliasname) return _s; } inline const std::string& Alias::_internal_aliasname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aliasname_.Get(); } inline void Alias::_internal_set_aliasname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.aliasname_.Set(value, GetArena()); } inline std::string* Alias::_internal_mutable_aliasname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.aliasname_.Mutable( GetArena()); } inline std::string* Alias::release_aliasname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Alias.aliasname) return _impl_.aliasname_.Release(); } inline void Alias::set_allocated_aliasname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aliasname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.aliasname_.IsDefault()) { _impl_.aliasname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_colnames().size(); } inline int Alias::colnames_size() const { return _internal_colnames_size(); } inline void Alias::clear_colnames() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.colnames_.Clear(); } inline ::pg_query::Node* Alias::mutable_colnames(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Alias.colnames) return _internal_mutable_colnames()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Alias::mutable_colnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Alias.colnames) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_colnames(); } inline const ::pg_query::Node& Alias::colnames(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Alias.colnames) return _internal_colnames().Get(index); } inline ::pg_query::Node* Alias::add_colnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_colnames()->Add(); // @@protoc_insertion_point(field_add:pg_query.Alias.colnames) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Alias::colnames() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Alias.colnames) return _internal_colnames(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Alias::_internal_colnames() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.colnames_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Alias::_internal_mutable_colnames() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.colnames_; } // ------------------------------------------------------------------- // RangeVar // string catalogname = 1 [json_name = "catalogname"]; inline void RangeVar::clear_catalogname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.catalogname_.ClearToEmpty(); } inline const std::string& RangeVar::catalogname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeVar.catalogname) return _internal_catalogname(); } template inline PROTOBUF_ALWAYS_INLINE void RangeVar::set_catalogname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.catalogname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.RangeVar.catalogname) } inline std::string* RangeVar::mutable_catalogname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_catalogname(); // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.catalogname) return _s; } inline const std::string& RangeVar::_internal_catalogname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.catalogname_.Get(); } inline void RangeVar::_internal_set_catalogname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.catalogname_.Set(value, GetArena()); } inline std::string* RangeVar::_internal_mutable_catalogname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.catalogname_.Mutable( GetArena()); } inline std::string* RangeVar::release_catalogname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeVar.catalogname) return _impl_.catalogname_.Release(); } inline void RangeVar::set_allocated_catalogname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.catalogname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.catalogname_.IsDefault()) { _impl_.catalogname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.catalogname) } // string schemaname = 2 [json_name = "schemaname"]; inline void RangeVar::clear_schemaname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.schemaname_.ClearToEmpty(); } inline const std::string& RangeVar::schemaname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeVar.schemaname) return _internal_schemaname(); } template inline PROTOBUF_ALWAYS_INLINE void RangeVar::set_schemaname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.schemaname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.RangeVar.schemaname) } inline std::string* RangeVar::mutable_schemaname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_schemaname(); // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.schemaname) return _s; } inline const std::string& RangeVar::_internal_schemaname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.schemaname_.Get(); } inline void RangeVar::_internal_set_schemaname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.schemaname_.Set(value, GetArena()); } inline std::string* RangeVar::_internal_mutable_schemaname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.schemaname_.Mutable( GetArena()); } inline std::string* RangeVar::release_schemaname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeVar.schemaname) return _impl_.schemaname_.Release(); } inline void RangeVar::set_allocated_schemaname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.schemaname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.schemaname_.IsDefault()) { _impl_.schemaname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.schemaname) } // string relname = 3 [json_name = "relname"]; inline void RangeVar::clear_relname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relname_.ClearToEmpty(); } inline const std::string& RangeVar::relname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeVar.relname) return _internal_relname(); } template inline PROTOBUF_ALWAYS_INLINE void RangeVar::set_relname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.relname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.RangeVar.relname) } inline std::string* RangeVar::mutable_relname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_relname(); // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.relname) return _s; } inline const std::string& RangeVar::_internal_relname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.relname_.Get(); } inline void RangeVar::_internal_set_relname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.relname_.Set(value, GetArena()); } inline std::string* RangeVar::_internal_mutable_relname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.relname_.Mutable( GetArena()); } inline std::string* RangeVar::release_relname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeVar.relname) return _impl_.relname_.Release(); } inline void RangeVar::set_allocated_relname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.relname_.IsDefault()) { _impl_.relname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.relname) } // bool inh = 4 [json_name = "inh"]; inline void RangeVar::clear_inh() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inh_ = false; } inline bool RangeVar::inh() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.inh) return _internal_inh(); } inline void RangeVar::set_inh(bool value) { _internal_set_inh(value); // @@protoc_insertion_point(field_set:pg_query.RangeVar.inh) } inline bool RangeVar::_internal_inh() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inh_; } inline void RangeVar::_internal_set_inh(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inh_ = value; } // string relpersistence = 5 [json_name = "relpersistence"]; inline void RangeVar::clear_relpersistence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relpersistence_.ClearToEmpty(); } inline const std::string& RangeVar::relpersistence() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeVar.relpersistence) return _internal_relpersistence(); } template inline PROTOBUF_ALWAYS_INLINE void RangeVar::set_relpersistence(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.relpersistence_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.RangeVar.relpersistence) } inline std::string* RangeVar::mutable_relpersistence() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_relpersistence(); // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.relpersistence) return _s; } inline const std::string& RangeVar::_internal_relpersistence() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.relpersistence_.Get(); } inline void RangeVar::_internal_set_relpersistence(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.relpersistence_.Set(value, GetArena()); } inline std::string* RangeVar::_internal_mutable_relpersistence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.relpersistence_.Mutable( GetArena()); } inline std::string* RangeVar::release_relpersistence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeVar.relpersistence) return _impl_.relpersistence_.Release(); } inline void RangeVar::set_allocated_relpersistence(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relpersistence_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.relpersistence_.IsDefault()) { _impl_.relpersistence_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.relpersistence) } // .pg_query.Alias alias = 6 [json_name = "alias"]; inline bool RangeVar::has_alias() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.alias_ != nullptr); return value; } inline void RangeVar::clear_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.alias_ != nullptr) _impl_.alias_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Alias& RangeVar::_internal_alias() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Alias* p = _impl_.alias_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& RangeVar::alias() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeVar.alias) return _internal_alias(); } inline void RangeVar::unsafe_arena_set_allocated_alias(::pg_query::Alias* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.alias_); } _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeVar.alias) } inline ::pg_query::Alias* RangeVar::release_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Alias* released = _impl_.alias_; _impl_.alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Alias* RangeVar::unsafe_arena_release_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeVar.alias) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeVar::_internal_mutable_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(p); } return _impl_.alias_; } inline ::pg_query::Alias* RangeVar::mutable_alias() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Alias* _msg = _internal_mutable_alias(); // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.alias) return _msg; } inline void RangeVar::set_allocated_alias(::pg_query::Alias* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Alias*>(_impl_.alias_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Alias*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.alias) } // int32 location = 7 [json_name = "location"]; inline void RangeVar::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t RangeVar::location() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.location) return _internal_location(); } inline void RangeVar::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RangeVar.location) } inline ::int32_t RangeVar::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void RangeVar::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // TableFunc // .pg_query.TableFuncType functype = 1 [json_name = "functype"]; inline void TableFunc::clear_functype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.functype_ = 0; } inline ::pg_query::TableFuncType TableFunc::functype() const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.functype) return _internal_functype(); } inline void TableFunc::set_functype(::pg_query::TableFuncType value) { _internal_set_functype(value); // @@protoc_insertion_point(field_set:pg_query.TableFunc.functype) } inline ::pg_query::TableFuncType TableFunc::_internal_functype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::TableFuncType>(_impl_.functype_); } inline void TableFunc::_internal_set_functype(::pg_query::TableFuncType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.functype_ = value; } // repeated .pg_query.Node ns_uris = 2 [json_name = "ns_uris"]; inline int TableFunc::_internal_ns_uris_size() const { return _internal_ns_uris().size(); } inline int TableFunc::ns_uris_size() const { return _internal_ns_uris_size(); } inline void TableFunc::clear_ns_uris() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ns_uris_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_ns_uris(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.ns_uris) return _internal_mutable_ns_uris()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::mutable_ns_uris() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.ns_uris) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_ns_uris(); } inline const ::pg_query::Node& TableFunc::ns_uris(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableFunc.ns_uris) return _internal_ns_uris().Get(index); } inline ::pg_query::Node* TableFunc::add_ns_uris() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_ns_uris()->Add(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.ns_uris) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::ns_uris() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TableFunc.ns_uris) return _internal_ns_uris(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::_internal_ns_uris() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ns_uris_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::_internal_mutable_ns_uris() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.ns_uris_; } // repeated .pg_query.Node ns_names = 3 [json_name = "ns_names"]; inline int TableFunc::_internal_ns_names_size() const { return _internal_ns_names().size(); } inline int TableFunc::ns_names_size() const { return _internal_ns_names_size(); } inline void TableFunc::clear_ns_names() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ns_names_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_ns_names(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.ns_names) return _internal_mutable_ns_names()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::mutable_ns_names() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.ns_names) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_ns_names(); } inline const ::pg_query::Node& TableFunc::ns_names(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableFunc.ns_names) return _internal_ns_names().Get(index); } inline ::pg_query::Node* TableFunc::add_ns_names() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_ns_names()->Add(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.ns_names) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::ns_names() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TableFunc.ns_names) return _internal_ns_names(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::_internal_ns_names() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ns_names_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::_internal_mutable_ns_names() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.ns_names_; } // .pg_query.Node docexpr = 4 [json_name = "docexpr"]; inline bool TableFunc::has_docexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.docexpr_ != nullptr); return value; } inline void TableFunc::clear_docexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.docexpr_ != nullptr) _impl_.docexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& TableFunc::_internal_docexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.docexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& TableFunc::docexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableFunc.docexpr) return _internal_docexpr(); } inline void TableFunc::unsafe_arena_set_allocated_docexpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.docexpr_); } _impl_.docexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableFunc.docexpr) } inline ::pg_query::Node* TableFunc::release_docexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.docexpr_; _impl_.docexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* TableFunc::unsafe_arena_release_docexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.TableFunc.docexpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.docexpr_; _impl_.docexpr_ = nullptr; return temp; } inline ::pg_query::Node* TableFunc::_internal_mutable_docexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.docexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.docexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.docexpr_; } inline ::pg_query::Node* TableFunc::mutable_docexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_docexpr(); // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.docexpr) return _msg; } inline void TableFunc::set_allocated_docexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.docexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.docexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.TableFunc.docexpr) } // .pg_query.Node rowexpr = 5 [json_name = "rowexpr"]; inline bool TableFunc::has_rowexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.rowexpr_ != nullptr); return value; } inline void TableFunc::clear_rowexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.rowexpr_ != nullptr) _impl_.rowexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& TableFunc::_internal_rowexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.rowexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& TableFunc::rowexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableFunc.rowexpr) return _internal_rowexpr(); } inline void TableFunc::unsafe_arena_set_allocated_rowexpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rowexpr_); } _impl_.rowexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableFunc.rowexpr) } inline ::pg_query::Node* TableFunc::release_rowexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.rowexpr_; _impl_.rowexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* TableFunc::unsafe_arena_release_rowexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.TableFunc.rowexpr) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.rowexpr_; _impl_.rowexpr_ = nullptr; return temp; } inline ::pg_query::Node* TableFunc::_internal_mutable_rowexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.rowexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.rowexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.rowexpr_; } inline ::pg_query::Node* TableFunc::mutable_rowexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_rowexpr(); // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.rowexpr) return _msg; } inline void TableFunc::set_allocated_rowexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.rowexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.rowexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.TableFunc.rowexpr) } // repeated .pg_query.Node colnames = 6 [json_name = "colnames"]; inline int TableFunc::_internal_colnames_size() const { return _internal_colnames().size(); } inline int TableFunc::colnames_size() const { return _internal_colnames_size(); } inline void TableFunc::clear_colnames() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.colnames_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_colnames(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.colnames) return _internal_mutable_colnames()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::mutable_colnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.colnames) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_colnames(); } inline const ::pg_query::Node& TableFunc::colnames(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableFunc.colnames) return _internal_colnames().Get(index); } inline ::pg_query::Node* TableFunc::add_colnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_colnames()->Add(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.colnames) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::colnames() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TableFunc.colnames) return _internal_colnames(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::_internal_colnames() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.colnames_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::_internal_mutable_colnames() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.colnames_; } // repeated .pg_query.Node coltypes = 7 [json_name = "coltypes"]; inline int TableFunc::_internal_coltypes_size() const { return _internal_coltypes().size(); } inline int TableFunc::coltypes_size() const { return _internal_coltypes_size(); } inline void TableFunc::clear_coltypes() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coltypes_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_coltypes(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.coltypes) return _internal_mutable_coltypes()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::mutable_coltypes() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.coltypes) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_coltypes(); } inline const ::pg_query::Node& TableFunc::coltypes(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableFunc.coltypes) return _internal_coltypes().Get(index); } inline ::pg_query::Node* TableFunc::add_coltypes() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_coltypes()->Add(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.coltypes) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::coltypes() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TableFunc.coltypes) return _internal_coltypes(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::_internal_coltypes() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.coltypes_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::_internal_mutable_coltypes() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.coltypes_; } // repeated .pg_query.Node coltypmods = 8 [json_name = "coltypmods"]; inline int TableFunc::_internal_coltypmods_size() const { return _internal_coltypmods().size(); } inline int TableFunc::coltypmods_size() const { return _internal_coltypmods_size(); } inline void TableFunc::clear_coltypmods() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coltypmods_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_coltypmods(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.coltypmods) return _internal_mutable_coltypmods()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::mutable_coltypmods() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.coltypmods) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_coltypmods(); } inline const ::pg_query::Node& TableFunc::coltypmods(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableFunc.coltypmods) return _internal_coltypmods().Get(index); } inline ::pg_query::Node* TableFunc::add_coltypmods() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_coltypmods()->Add(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.coltypmods) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::coltypmods() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TableFunc.coltypmods) return _internal_coltypmods(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::_internal_coltypmods() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.coltypmods_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::_internal_mutable_coltypmods() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.coltypmods_; } // repeated .pg_query.Node colcollations = 9 [json_name = "colcollations"]; inline int TableFunc::_internal_colcollations_size() const { return _internal_colcollations().size(); } inline int TableFunc::colcollations_size() const { return _internal_colcollations_size(); } inline void TableFunc::clear_colcollations() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.colcollations_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_colcollations(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.colcollations) return _internal_mutable_colcollations()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::mutable_colcollations() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.colcollations) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_colcollations(); } inline const ::pg_query::Node& TableFunc::colcollations(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableFunc.colcollations) return _internal_colcollations().Get(index); } inline ::pg_query::Node* TableFunc::add_colcollations() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_colcollations()->Add(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.colcollations) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::colcollations() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TableFunc.colcollations) return _internal_colcollations(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::_internal_colcollations() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.colcollations_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::_internal_mutable_colcollations() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.colcollations_; } // repeated .pg_query.Node colexprs = 10 [json_name = "colexprs"]; inline int TableFunc::_internal_colexprs_size() const { return _internal_colexprs().size(); } inline int TableFunc::colexprs_size() const { return _internal_colexprs_size(); } inline void TableFunc::clear_colexprs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.colexprs_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_colexprs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.colexprs) return _internal_mutable_colexprs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::mutable_colexprs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.colexprs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_colexprs(); } inline const ::pg_query::Node& TableFunc::colexprs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableFunc.colexprs) return _internal_colexprs().Get(index); } inline ::pg_query::Node* TableFunc::add_colexprs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_colexprs()->Add(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.colexprs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::colexprs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TableFunc.colexprs) return _internal_colexprs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::_internal_colexprs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.colexprs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::_internal_mutable_colexprs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.colexprs_; } // repeated .pg_query.Node coldefexprs = 11 [json_name = "coldefexprs"]; inline int TableFunc::_internal_coldefexprs_size() const { return _internal_coldefexprs().size(); } inline int TableFunc::coldefexprs_size() const { return _internal_coldefexprs_size(); } inline void TableFunc::clear_coldefexprs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coldefexprs_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_coldefexprs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.coldefexprs) return _internal_mutable_coldefexprs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::mutable_coldefexprs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.coldefexprs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_coldefexprs(); } inline const ::pg_query::Node& TableFunc::coldefexprs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableFunc.coldefexprs) return _internal_coldefexprs().Get(index); } inline ::pg_query::Node* TableFunc::add_coldefexprs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_coldefexprs()->Add(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.coldefexprs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::coldefexprs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TableFunc.coldefexprs) return _internal_coldefexprs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::_internal_coldefexprs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.coldefexprs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::_internal_mutable_coldefexprs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.coldefexprs_; } // repeated .pg_query.Node colvalexprs = 12 [json_name = "colvalexprs"]; inline int TableFunc::_internal_colvalexprs_size() const { return _internal_colvalexprs().size(); } inline int TableFunc::colvalexprs_size() const { return _internal_colvalexprs_size(); } inline void TableFunc::clear_colvalexprs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.colvalexprs_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_colvalexprs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.colvalexprs) return _internal_mutable_colvalexprs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::mutable_colvalexprs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.colvalexprs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_colvalexprs(); } inline const ::pg_query::Node& TableFunc::colvalexprs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableFunc.colvalexprs) return _internal_colvalexprs().Get(index); } inline ::pg_query::Node* TableFunc::add_colvalexprs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_colvalexprs()->Add(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.colvalexprs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::colvalexprs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TableFunc.colvalexprs) return _internal_colvalexprs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::_internal_colvalexprs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.colvalexprs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::_internal_mutable_colvalexprs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.colvalexprs_; } // repeated .pg_query.Node passingvalexprs = 13 [json_name = "passingvalexprs"]; inline int TableFunc::_internal_passingvalexprs_size() const { return _internal_passingvalexprs().size(); } inline int TableFunc::passingvalexprs_size() const { return _internal_passingvalexprs_size(); } inline void TableFunc::clear_passingvalexprs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.passingvalexprs_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_passingvalexprs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.passingvalexprs) return _internal_mutable_passingvalexprs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::mutable_passingvalexprs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.passingvalexprs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_passingvalexprs(); } inline const ::pg_query::Node& TableFunc::passingvalexprs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableFunc.passingvalexprs) return _internal_passingvalexprs().Get(index); } inline ::pg_query::Node* TableFunc::add_passingvalexprs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_passingvalexprs()->Add(); // @@protoc_insertion_point(field_add:pg_query.TableFunc.passingvalexprs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::passingvalexprs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TableFunc.passingvalexprs) return _internal_passingvalexprs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableFunc::_internal_passingvalexprs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.passingvalexprs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableFunc::_internal_mutable_passingvalexprs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.passingvalexprs_; } // repeated uint64 notnulls = 14 [json_name = "notnulls"]; inline int TableFunc::_internal_notnulls_size() const { return _internal_notnulls().size(); } inline int TableFunc::notnulls_size() const { return _internal_notnulls_size(); } inline void TableFunc::clear_notnulls() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.notnulls_.Clear(); } inline ::uint64_t TableFunc::notnulls(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.notnulls) return _internal_notnulls().Get(index); } inline void TableFunc::set_notnulls(int index, ::uint64_t value) { _internal_mutable_notnulls()->Set(index, value); // @@protoc_insertion_point(field_set:pg_query.TableFunc.notnulls) } inline void TableFunc::add_notnulls(::uint64_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _internal_mutable_notnulls()->Add(value); // @@protoc_insertion_point(field_add:pg_query.TableFunc.notnulls) } inline const ::google::protobuf::RepeatedField<::uint64_t>& TableFunc::notnulls() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TableFunc.notnulls) return _internal_notnulls(); } inline ::google::protobuf::RepeatedField<::uint64_t>* TableFunc::mutable_notnulls() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.notnulls) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_notnulls(); } inline const ::google::protobuf::RepeatedField<::uint64_t>& TableFunc::_internal_notnulls() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.notnulls_; } inline ::google::protobuf::RepeatedField<::uint64_t>* TableFunc::_internal_mutable_notnulls() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.notnulls_; } // .pg_query.Node plan = 15 [json_name = "plan"]; inline bool TableFunc::has_plan() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.plan_ != nullptr); return value; } inline void TableFunc::clear_plan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.plan_ != nullptr) _impl_.plan_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& TableFunc::_internal_plan() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.plan_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& TableFunc::plan() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableFunc.plan) return _internal_plan(); } inline void TableFunc::unsafe_arena_set_allocated_plan(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.plan_); } _impl_.plan_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableFunc.plan) } inline ::pg_query::Node* TableFunc::release_plan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.plan_; _impl_.plan_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* TableFunc::unsafe_arena_release_plan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.TableFunc.plan) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.plan_; _impl_.plan_ = nullptr; return temp; } inline ::pg_query::Node* TableFunc::_internal_mutable_plan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.plan_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.plan_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.plan_; } inline ::pg_query::Node* TableFunc::mutable_plan() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_plan(); // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.plan) return _msg; } inline void TableFunc::set_allocated_plan(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.plan_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.plan_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.TableFunc.plan) } // int32 ordinalitycol = 16 [json_name = "ordinalitycol"]; inline void TableFunc::clear_ordinalitycol() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ordinalitycol_ = 0; } inline ::int32_t TableFunc::ordinalitycol() const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.ordinalitycol) return _internal_ordinalitycol(); } inline void TableFunc::set_ordinalitycol(::int32_t value) { _internal_set_ordinalitycol(value); // @@protoc_insertion_point(field_set:pg_query.TableFunc.ordinalitycol) } inline ::int32_t TableFunc::_internal_ordinalitycol() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ordinalitycol_; } inline void TableFunc::_internal_set_ordinalitycol(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.ordinalitycol_ = value; } // int32 location = 17 [json_name = "location"]; inline void TableFunc::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t TableFunc::location() const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.location) return _internal_location(); } inline void TableFunc::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.TableFunc.location) } inline ::int32_t TableFunc::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void TableFunc::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // IntoClause // .pg_query.RangeVar rel = 1 [json_name = "rel"]; inline bool IntoClause::has_rel() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.rel_ != nullptr); return value; } inline void IntoClause::clear_rel() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.rel_ != nullptr) _impl_.rel_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& IntoClause::_internal_rel() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.rel_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& IntoClause::rel() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IntoClause.rel) return _internal_rel(); } inline void IntoClause::unsafe_arena_set_allocated_rel(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rel_); } _impl_.rel_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IntoClause.rel) } inline ::pg_query::RangeVar* IntoClause::release_rel() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.rel_; _impl_.rel_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* IntoClause::unsafe_arena_release_rel() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.IntoClause.rel) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.rel_; _impl_.rel_ = nullptr; return temp; } inline ::pg_query::RangeVar* IntoClause::_internal_mutable_rel() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.rel_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.rel_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.rel_; } inline ::pg_query::RangeVar* IntoClause::mutable_rel() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_rel(); // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.rel) return _msg; } inline void IntoClause::set_allocated_rel(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.rel_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.rel_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@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 _internal_col_names().size(); } inline int IntoClause::col_names_size() const { return _internal_col_names_size(); } inline void IntoClause::clear_col_names() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.col_names_.Clear(); } inline ::pg_query::Node* IntoClause::mutable_col_names(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.col_names) return _internal_mutable_col_names()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IntoClause::mutable_col_names() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.IntoClause.col_names) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_col_names(); } inline const ::pg_query::Node& IntoClause::col_names(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IntoClause.col_names) return _internal_col_names().Get(index); } inline ::pg_query::Node* IntoClause::add_col_names() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_col_names()->Add(); // @@protoc_insertion_point(field_add:pg_query.IntoClause.col_names) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IntoClause::col_names() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.IntoClause.col_names) return _internal_col_names(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IntoClause::_internal_col_names() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.col_names_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IntoClause::_internal_mutable_col_names() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.col_names_; } // string access_method = 3 [json_name = "accessMethod"]; inline void IntoClause::clear_access_method() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.access_method_.ClearToEmpty(); } inline const std::string& IntoClause::access_method() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IntoClause.access_method) return _internal_access_method(); } template inline PROTOBUF_ALWAYS_INLINE void IntoClause::set_access_method(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.access_method_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.IntoClause.access_method) } inline std::string* IntoClause::mutable_access_method() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_access_method(); // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.access_method) return _s; } inline const std::string& IntoClause::_internal_access_method() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.access_method_.Get(); } inline void IntoClause::_internal_set_access_method(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.access_method_.Set(value, GetArena()); } inline std::string* IntoClause::_internal_mutable_access_method() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.access_method_.Mutable( GetArena()); } inline std::string* IntoClause::release_access_method() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.IntoClause.access_method) return _impl_.access_method_.Release(); } inline void IntoClause::set_allocated_access_method(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.access_method_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.access_method_.IsDefault()) { _impl_.access_method_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_options().size(); } inline int IntoClause::options_size() const { return _internal_options_size(); } inline void IntoClause::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* IntoClause::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IntoClause::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.IntoClause.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& IntoClause::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IntoClause.options) return _internal_options().Get(index); } inline ::pg_query::Node* IntoClause::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.IntoClause.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IntoClause::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.IntoClause.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IntoClause::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IntoClause::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // .pg_query.OnCommitAction on_commit = 5 [json_name = "onCommit"]; inline void IntoClause::clear_on_commit() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.on_commit_ = 0; } 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::set_on_commit(::pg_query::OnCommitAction value) { _internal_set_on_commit(value); // @@protoc_insertion_point(field_set:pg_query.IntoClause.on_commit) } inline ::pg_query::OnCommitAction IntoClause::_internal_on_commit() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::OnCommitAction>(_impl_.on_commit_); } inline void IntoClause::_internal_set_on_commit(::pg_query::OnCommitAction value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.on_commit_ = value; } // string table_space_name = 6 [json_name = "tableSpaceName"]; inline void IntoClause::clear_table_space_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.table_space_name_.ClearToEmpty(); } inline const std::string& IntoClause::table_space_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IntoClause.table_space_name) return _internal_table_space_name(); } template inline PROTOBUF_ALWAYS_INLINE void IntoClause::set_table_space_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.table_space_name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.IntoClause.table_space_name) } inline std::string* IntoClause::mutable_table_space_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_table_space_name(); // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.table_space_name) return _s; } inline const std::string& IntoClause::_internal_table_space_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.table_space_name_.Get(); } inline void IntoClause::_internal_set_table_space_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.table_space_name_.Set(value, GetArena()); } inline std::string* IntoClause::_internal_mutable_table_space_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.table_space_name_.Mutable( GetArena()); } inline std::string* IntoClause::release_table_space_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.IntoClause.table_space_name) return _impl_.table_space_name_.Release(); } inline void IntoClause::set_allocated_table_space_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.table_space_name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.table_space_name_.IsDefault()) { _impl_.table_space_name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.IntoClause.table_space_name) } // .pg_query.Node view_query = 7 [json_name = "viewQuery"]; inline bool IntoClause::has_view_query() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.view_query_ != nullptr); return value; } inline void IntoClause::clear_view_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.view_query_ != nullptr) _impl_.view_query_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& IntoClause::_internal_view_query() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.view_query_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& IntoClause::view_query() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.view_query_); } _impl_.view_query_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IntoClause.view_query) } inline ::pg_query::Node* IntoClause::release_view_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.view_query_; _impl_.view_query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* IntoClause::unsafe_arena_release_view_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.IntoClause.view_query) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.view_query_; _impl_.view_query_ = nullptr; return temp; } inline ::pg_query::Node* IntoClause::_internal_mutable_view_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.view_query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.view_query_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.view_query_; } inline ::pg_query::Node* IntoClause::mutable_view_query() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_view_query(); // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.view_query) return _msg; } inline void IntoClause::set_allocated_view_query(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.view_query_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.view_query_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.IntoClause.view_query) } // bool skip_data = 8 [json_name = "skipData"]; inline void IntoClause::clear_skip_data() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.skip_data_ = false; } inline bool IntoClause::skip_data() const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.skip_data) return _internal_skip_data(); } inline void IntoClause::set_skip_data(bool value) { _internal_set_skip_data(value); // @@protoc_insertion_point(field_set:pg_query.IntoClause.skip_data) } inline bool IntoClause::_internal_skip_data() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.skip_data_; } inline void IntoClause::_internal_set_skip_data(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.skip_data_ = value; } // ------------------------------------------------------------------- // Var // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool Var::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void Var::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& Var::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Var::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Var.xpr) return _internal_xpr(); } inline void Var::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Var.xpr) } inline ::pg_query::Node* Var::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* Var::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Var.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* Var::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* Var::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.Var.xpr) return _msg; } inline void Var::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Var.xpr) } // int32 varno = 2 [json_name = "varno"]; inline void Var::clear_varno() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.varno_ = 0; } inline ::int32_t Var::varno() const { // @@protoc_insertion_point(field_get:pg_query.Var.varno) return _internal_varno(); } inline void Var::set_varno(::int32_t value) { _internal_set_varno(value); // @@protoc_insertion_point(field_set:pg_query.Var.varno) } inline ::int32_t Var::_internal_varno() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.varno_; } inline void Var::_internal_set_varno(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.varno_ = value; } // int32 varattno = 3 [json_name = "varattno"]; inline void Var::clear_varattno() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.varattno_ = 0; } inline ::int32_t Var::varattno() const { // @@protoc_insertion_point(field_get:pg_query.Var.varattno) return _internal_varattno(); } inline void Var::set_varattno(::int32_t value) { _internal_set_varattno(value); // @@protoc_insertion_point(field_set:pg_query.Var.varattno) } inline ::int32_t Var::_internal_varattno() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.varattno_; } inline void Var::_internal_set_varattno(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.varattno_ = value; } // uint32 vartype = 4 [json_name = "vartype"]; inline void Var::clear_vartype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.vartype_ = 0u; } inline ::uint32_t Var::vartype() const { // @@protoc_insertion_point(field_get:pg_query.Var.vartype) return _internal_vartype(); } inline void Var::set_vartype(::uint32_t value) { _internal_set_vartype(value); // @@protoc_insertion_point(field_set:pg_query.Var.vartype) } inline ::uint32_t Var::_internal_vartype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.vartype_; } inline void Var::_internal_set_vartype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.vartype_ = value; } // int32 vartypmod = 5 [json_name = "vartypmod"]; inline void Var::clear_vartypmod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.vartypmod_ = 0; } inline ::int32_t Var::vartypmod() const { // @@protoc_insertion_point(field_get:pg_query.Var.vartypmod) return _internal_vartypmod(); } inline void Var::set_vartypmod(::int32_t value) { _internal_set_vartypmod(value); // @@protoc_insertion_point(field_set:pg_query.Var.vartypmod) } inline ::int32_t Var::_internal_vartypmod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.vartypmod_; } inline void Var::_internal_set_vartypmod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.vartypmod_ = value; } // uint32 varcollid = 6 [json_name = "varcollid"]; inline void Var::clear_varcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.varcollid_ = 0u; } inline ::uint32_t Var::varcollid() const { // @@protoc_insertion_point(field_get:pg_query.Var.varcollid) return _internal_varcollid(); } inline void Var::set_varcollid(::uint32_t value) { _internal_set_varcollid(value); // @@protoc_insertion_point(field_set:pg_query.Var.varcollid) } inline ::uint32_t Var::_internal_varcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.varcollid_; } inline void Var::_internal_set_varcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.varcollid_ = value; } // repeated uint64 varnullingrels = 7 [json_name = "varnullingrels"]; inline int Var::_internal_varnullingrels_size() const { return _internal_varnullingrels().size(); } inline int Var::varnullingrels_size() const { return _internal_varnullingrels_size(); } inline void Var::clear_varnullingrels() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.varnullingrels_.Clear(); } inline ::uint64_t Var::varnullingrels(int index) const { // @@protoc_insertion_point(field_get:pg_query.Var.varnullingrels) return _internal_varnullingrels().Get(index); } inline void Var::set_varnullingrels(int index, ::uint64_t value) { _internal_mutable_varnullingrels()->Set(index, value); // @@protoc_insertion_point(field_set:pg_query.Var.varnullingrels) } inline void Var::add_varnullingrels(::uint64_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _internal_mutable_varnullingrels()->Add(value); // @@protoc_insertion_point(field_add:pg_query.Var.varnullingrels) } inline const ::google::protobuf::RepeatedField<::uint64_t>& Var::varnullingrels() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Var.varnullingrels) return _internal_varnullingrels(); } inline ::google::protobuf::RepeatedField<::uint64_t>* Var::mutable_varnullingrels() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Var.varnullingrels) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_varnullingrels(); } inline const ::google::protobuf::RepeatedField<::uint64_t>& Var::_internal_varnullingrels() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.varnullingrels_; } inline ::google::protobuf::RepeatedField<::uint64_t>* Var::_internal_mutable_varnullingrels() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.varnullingrels_; } // uint32 varlevelsup = 8 [json_name = "varlevelsup"]; inline void Var::clear_varlevelsup() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.varlevelsup_ = 0u; } inline ::uint32_t Var::varlevelsup() const { // @@protoc_insertion_point(field_get:pg_query.Var.varlevelsup) return _internal_varlevelsup(); } inline void Var::set_varlevelsup(::uint32_t value) { _internal_set_varlevelsup(value); // @@protoc_insertion_point(field_set:pg_query.Var.varlevelsup) } inline ::uint32_t Var::_internal_varlevelsup() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.varlevelsup_; } inline void Var::_internal_set_varlevelsup(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.varlevelsup_ = value; } // int32 location = 9 [json_name = "location"]; inline void Var::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t Var::location() const { // @@protoc_insertion_point(field_get:pg_query.Var.location) return _internal_location(); } inline void Var::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.Var.location) } inline ::int32_t Var::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void Var::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // Param // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool Param::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void Param::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& Param::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Param::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Param.xpr) return _internal_xpr(); } inline void Param::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Param.xpr) } inline ::pg_query::Node* Param::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* Param::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Param.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* Param::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* Param::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.Param.xpr) return _msg; } inline void Param::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Param.xpr) } // .pg_query.ParamKind paramkind = 2 [json_name = "paramkind"]; inline void Param::clear_paramkind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.paramkind_ = 0; } inline ::pg_query::ParamKind Param::paramkind() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramkind) return _internal_paramkind(); } inline void Param::set_paramkind(::pg_query::ParamKind value) { _internal_set_paramkind(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramkind) } inline ::pg_query::ParamKind Param::_internal_paramkind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ParamKind>(_impl_.paramkind_); } inline void Param::_internal_set_paramkind(::pg_query::ParamKind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.paramkind_ = value; } // int32 paramid = 3 [json_name = "paramid"]; inline void Param::clear_paramid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.paramid_ = 0; } inline ::int32_t Param::paramid() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramid) return _internal_paramid(); } inline void Param::set_paramid(::int32_t value) { _internal_set_paramid(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramid) } inline ::int32_t Param::_internal_paramid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.paramid_; } inline void Param::_internal_set_paramid(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.paramid_ = value; } // uint32 paramtype = 4 [json_name = "paramtype"]; inline void Param::clear_paramtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.paramtype_ = 0u; } inline ::uint32_t Param::paramtype() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramtype) return _internal_paramtype(); } inline void Param::set_paramtype(::uint32_t value) { _internal_set_paramtype(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramtype) } inline ::uint32_t Param::_internal_paramtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.paramtype_; } inline void Param::_internal_set_paramtype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.paramtype_ = value; } // int32 paramtypmod = 5 [json_name = "paramtypmod"]; inline void Param::clear_paramtypmod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.paramtypmod_ = 0; } inline ::int32_t Param::paramtypmod() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramtypmod) return _internal_paramtypmod(); } inline void Param::set_paramtypmod(::int32_t value) { _internal_set_paramtypmod(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramtypmod) } inline ::int32_t Param::_internal_paramtypmod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.paramtypmod_; } inline void Param::_internal_set_paramtypmod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.paramtypmod_ = value; } // uint32 paramcollid = 6 [json_name = "paramcollid"]; inline void Param::clear_paramcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.paramcollid_ = 0u; } inline ::uint32_t Param::paramcollid() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramcollid) return _internal_paramcollid(); } inline void Param::set_paramcollid(::uint32_t value) { _internal_set_paramcollid(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramcollid) } inline ::uint32_t Param::_internal_paramcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.paramcollid_; } inline void Param::_internal_set_paramcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.paramcollid_ = value; } // int32 location = 7 [json_name = "location"]; inline void Param::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t Param::location() const { // @@protoc_insertion_point(field_get:pg_query.Param.location) return _internal_location(); } inline void Param::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.Param.location) } inline ::int32_t Param::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void Param::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // Aggref // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool Aggref::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void Aggref::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& Aggref::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Aggref::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Aggref.xpr) return _internal_xpr(); } inline void Aggref::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Aggref.xpr) } inline ::pg_query::Node* Aggref::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* Aggref::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Aggref.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* Aggref::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* Aggref::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.Aggref.xpr) return _msg; } inline void Aggref::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Aggref.xpr) } // uint32 aggfnoid = 2 [json_name = "aggfnoid"]; inline void Aggref::clear_aggfnoid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aggfnoid_ = 0u; } inline ::uint32_t Aggref::aggfnoid() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggfnoid) return _internal_aggfnoid(); } inline void Aggref::set_aggfnoid(::uint32_t value) { _internal_set_aggfnoid(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggfnoid) } inline ::uint32_t Aggref::_internal_aggfnoid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aggfnoid_; } inline void Aggref::_internal_set_aggfnoid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.aggfnoid_ = value; } // uint32 aggtype = 3 [json_name = "aggtype"]; inline void Aggref::clear_aggtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aggtype_ = 0u; } inline ::uint32_t Aggref::aggtype() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggtype) return _internal_aggtype(); } inline void Aggref::set_aggtype(::uint32_t value) { _internal_set_aggtype(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggtype) } inline ::uint32_t Aggref::_internal_aggtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aggtype_; } inline void Aggref::_internal_set_aggtype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.aggtype_ = value; } // uint32 aggcollid = 4 [json_name = "aggcollid"]; inline void Aggref::clear_aggcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aggcollid_ = 0u; } inline ::uint32_t Aggref::aggcollid() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggcollid) return _internal_aggcollid(); } inline void Aggref::set_aggcollid(::uint32_t value) { _internal_set_aggcollid(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggcollid) } inline ::uint32_t Aggref::_internal_aggcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aggcollid_; } inline void Aggref::_internal_set_aggcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.aggcollid_ = value; } // uint32 inputcollid = 5 [json_name = "inputcollid"]; inline void Aggref::clear_inputcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inputcollid_ = 0u; } inline ::uint32_t Aggref::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.inputcollid) return _internal_inputcollid(); } inline void Aggref::set_inputcollid(::uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.inputcollid) } inline ::uint32_t Aggref::_internal_inputcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inputcollid_; } inline void Aggref::_internal_set_inputcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inputcollid_ = value; } // repeated .pg_query.Node aggargtypes = 6 [json_name = "aggargtypes"]; inline int Aggref::_internal_aggargtypes_size() const { return _internal_aggargtypes().size(); } inline int Aggref::aggargtypes_size() const { return _internal_aggargtypes_size(); } inline void Aggref::clear_aggargtypes() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aggargtypes_.Clear(); } inline ::pg_query::Node* Aggref::mutable_aggargtypes(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggargtypes) return _internal_mutable_aggargtypes()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Aggref::mutable_aggargtypes() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggargtypes) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_aggargtypes(); } inline const ::pg_query::Node& Aggref::aggargtypes(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggargtypes) return _internal_aggargtypes().Get(index); } inline ::pg_query::Node* Aggref::add_aggargtypes() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_aggargtypes()->Add(); // @@protoc_insertion_point(field_add:pg_query.Aggref.aggargtypes) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Aggref::aggargtypes() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Aggref.aggargtypes) return _internal_aggargtypes(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Aggref::_internal_aggargtypes() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aggargtypes_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Aggref::_internal_mutable_aggargtypes() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.aggargtypes_; } // repeated .pg_query.Node aggdirectargs = 7 [json_name = "aggdirectargs"]; inline int Aggref::_internal_aggdirectargs_size() const { return _internal_aggdirectargs().size(); } inline int Aggref::aggdirectargs_size() const { return _internal_aggdirectargs_size(); } inline void Aggref::clear_aggdirectargs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aggdirectargs_.Clear(); } inline ::pg_query::Node* Aggref::mutable_aggdirectargs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggdirectargs) return _internal_mutable_aggdirectargs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Aggref::mutable_aggdirectargs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggdirectargs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_aggdirectargs(); } inline const ::pg_query::Node& Aggref::aggdirectargs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggdirectargs) return _internal_aggdirectargs().Get(index); } inline ::pg_query::Node* Aggref::add_aggdirectargs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_aggdirectargs()->Add(); // @@protoc_insertion_point(field_add:pg_query.Aggref.aggdirectargs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Aggref::aggdirectargs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Aggref.aggdirectargs) return _internal_aggdirectargs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Aggref::_internal_aggdirectargs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aggdirectargs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Aggref::_internal_mutable_aggdirectargs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.aggdirectargs_; } // repeated .pg_query.Node args = 8 [json_name = "args"]; inline int Aggref::_internal_args_size() const { return _internal_args().size(); } inline int Aggref::args_size() const { return _internal_args_size(); } inline void Aggref::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* Aggref::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Aggref::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& Aggref::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Aggref.args) return _internal_args().Get(index); } inline ::pg_query::Node* Aggref::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.Aggref.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Aggref::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Aggref.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Aggref::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Aggref::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // repeated .pg_query.Node aggorder = 9 [json_name = "aggorder"]; inline int Aggref::_internal_aggorder_size() const { return _internal_aggorder().size(); } inline int Aggref::aggorder_size() const { return _internal_aggorder_size(); } inline void Aggref::clear_aggorder() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aggorder_.Clear(); } inline ::pg_query::Node* Aggref::mutable_aggorder(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggorder) return _internal_mutable_aggorder()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Aggref::mutable_aggorder() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggorder) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_aggorder(); } inline const ::pg_query::Node& Aggref::aggorder(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggorder) return _internal_aggorder().Get(index); } inline ::pg_query::Node* Aggref::add_aggorder() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_aggorder()->Add(); // @@protoc_insertion_point(field_add:pg_query.Aggref.aggorder) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Aggref::aggorder() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Aggref.aggorder) return _internal_aggorder(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Aggref::_internal_aggorder() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aggorder_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Aggref::_internal_mutable_aggorder() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.aggorder_; } // repeated .pg_query.Node aggdistinct = 10 [json_name = "aggdistinct"]; inline int Aggref::_internal_aggdistinct_size() const { return _internal_aggdistinct().size(); } inline int Aggref::aggdistinct_size() const { return _internal_aggdistinct_size(); } inline void Aggref::clear_aggdistinct() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aggdistinct_.Clear(); } inline ::pg_query::Node* Aggref::mutable_aggdistinct(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggdistinct) return _internal_mutable_aggdistinct()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Aggref::mutable_aggdistinct() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggdistinct) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_aggdistinct(); } inline const ::pg_query::Node& Aggref::aggdistinct(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggdistinct) return _internal_aggdistinct().Get(index); } inline ::pg_query::Node* Aggref::add_aggdistinct() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_aggdistinct()->Add(); // @@protoc_insertion_point(field_add:pg_query.Aggref.aggdistinct) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Aggref::aggdistinct() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Aggref.aggdistinct) return _internal_aggdistinct(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Aggref::_internal_aggdistinct() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aggdistinct_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Aggref::_internal_mutable_aggdistinct() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.aggdistinct_; } // .pg_query.Node aggfilter = 11 [json_name = "aggfilter"]; inline bool Aggref::has_aggfilter() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.aggfilter_ != nullptr); return value; } inline void Aggref::clear_aggfilter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.aggfilter_ != nullptr) _impl_.aggfilter_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& Aggref::_internal_aggfilter() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.aggfilter_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Aggref::aggfilter() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggfilter) return _internal_aggfilter(); } inline void Aggref::unsafe_arena_set_allocated_aggfilter(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.aggfilter_); } _impl_.aggfilter_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Aggref.aggfilter) } inline ::pg_query::Node* Aggref::release_aggfilter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.aggfilter_; _impl_.aggfilter_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* Aggref::unsafe_arena_release_aggfilter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Aggref.aggfilter) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.aggfilter_; _impl_.aggfilter_ = nullptr; return temp; } inline ::pg_query::Node* Aggref::_internal_mutable_aggfilter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.aggfilter_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.aggfilter_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.aggfilter_; } inline ::pg_query::Node* Aggref::mutable_aggfilter() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_aggfilter(); // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggfilter) return _msg; } inline void Aggref::set_allocated_aggfilter(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.aggfilter_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.aggfilter_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Aggref.aggfilter) } // bool aggstar = 12 [json_name = "aggstar"]; inline void Aggref::clear_aggstar() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aggstar_ = false; } inline bool Aggref::aggstar() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggstar) return _internal_aggstar(); } inline void Aggref::set_aggstar(bool value) { _internal_set_aggstar(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggstar) } inline bool Aggref::_internal_aggstar() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aggstar_; } inline void Aggref::_internal_set_aggstar(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.aggstar_ = value; } // bool aggvariadic = 13 [json_name = "aggvariadic"]; inline void Aggref::clear_aggvariadic() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aggvariadic_ = false; } inline bool Aggref::aggvariadic() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggvariadic) return _internal_aggvariadic(); } inline void Aggref::set_aggvariadic(bool value) { _internal_set_aggvariadic(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggvariadic) } inline bool Aggref::_internal_aggvariadic() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aggvariadic_; } inline void Aggref::_internal_set_aggvariadic(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.aggvariadic_ = value; } // string aggkind = 14 [json_name = "aggkind"]; inline void Aggref::clear_aggkind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aggkind_.ClearToEmpty(); } inline const std::string& Aggref::aggkind() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggkind) return _internal_aggkind(); } template inline PROTOBUF_ALWAYS_INLINE void Aggref::set_aggkind(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.aggkind_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggkind) } inline std::string* Aggref::mutable_aggkind() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_aggkind(); // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggkind) return _s; } inline const std::string& Aggref::_internal_aggkind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aggkind_.Get(); } inline void Aggref::_internal_set_aggkind(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.aggkind_.Set(value, GetArena()); } inline std::string* Aggref::_internal_mutable_aggkind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.aggkind_.Mutable( GetArena()); } inline std::string* Aggref::release_aggkind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Aggref.aggkind) return _impl_.aggkind_.Release(); } inline void Aggref::set_allocated_aggkind(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aggkind_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.aggkind_.IsDefault()) { _impl_.aggkind_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Aggref.aggkind) } // uint32 agglevelsup = 15 [json_name = "agglevelsup"]; inline void Aggref::clear_agglevelsup() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.agglevelsup_ = 0u; } inline ::uint32_t Aggref::agglevelsup() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.agglevelsup) return _internal_agglevelsup(); } inline void Aggref::set_agglevelsup(::uint32_t value) { _internal_set_agglevelsup(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.agglevelsup) } inline ::uint32_t Aggref::_internal_agglevelsup() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.agglevelsup_; } inline void Aggref::_internal_set_agglevelsup(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.agglevelsup_ = value; } // .pg_query.AggSplit aggsplit = 16 [json_name = "aggsplit"]; inline void Aggref::clear_aggsplit() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aggsplit_ = 0; } inline ::pg_query::AggSplit Aggref::aggsplit() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggsplit) return _internal_aggsplit(); } inline void Aggref::set_aggsplit(::pg_query::AggSplit value) { _internal_set_aggsplit(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggsplit) } inline ::pg_query::AggSplit Aggref::_internal_aggsplit() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::AggSplit>(_impl_.aggsplit_); } inline void Aggref::_internal_set_aggsplit(::pg_query::AggSplit value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.aggsplit_ = value; } // int32 aggno = 17 [json_name = "aggno"]; inline void Aggref::clear_aggno() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aggno_ = 0; } inline ::int32_t Aggref::aggno() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggno) return _internal_aggno(); } inline void Aggref::set_aggno(::int32_t value) { _internal_set_aggno(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggno) } inline ::int32_t Aggref::_internal_aggno() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aggno_; } inline void Aggref::_internal_set_aggno(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.aggno_ = value; } // int32 aggtransno = 18 [json_name = "aggtransno"]; inline void Aggref::clear_aggtransno() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aggtransno_ = 0; } inline ::int32_t Aggref::aggtransno() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggtransno) return _internal_aggtransno(); } inline void Aggref::set_aggtransno(::int32_t value) { _internal_set_aggtransno(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggtransno) } inline ::int32_t Aggref::_internal_aggtransno() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aggtransno_; } inline void Aggref::_internal_set_aggtransno(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.aggtransno_ = value; } // int32 location = 19 [json_name = "location"]; inline void Aggref::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t Aggref::location() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.location) return _internal_location(); } inline void Aggref::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.location) } inline ::int32_t Aggref::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void Aggref::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // GroupingFunc // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool GroupingFunc::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void GroupingFunc::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& GroupingFunc::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& GroupingFunc::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.xpr) return _internal_xpr(); } inline void GroupingFunc::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.GroupingFunc.xpr) } inline ::pg_query::Node* GroupingFunc::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* GroupingFunc::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.GroupingFunc.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* GroupingFunc::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* GroupingFunc::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.GroupingFunc.xpr) return _msg; } inline void GroupingFunc::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_args().size(); } inline int GroupingFunc::args_size() const { return _internal_args_size(); } inline void GroupingFunc::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* GroupingFunc::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.GroupingFunc.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GroupingFunc::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingFunc.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& GroupingFunc::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.args) return _internal_args().Get(index); } inline ::pg_query::Node* GroupingFunc::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.GroupingFunc.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GroupingFunc::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.GroupingFunc.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GroupingFunc::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GroupingFunc::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // repeated .pg_query.Node refs = 3 [json_name = "refs"]; inline int GroupingFunc::_internal_refs_size() const { return _internal_refs().size(); } inline int GroupingFunc::refs_size() const { return _internal_refs_size(); } inline void GroupingFunc::clear_refs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.refs_.Clear(); } inline ::pg_query::Node* GroupingFunc::mutable_refs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.GroupingFunc.refs) return _internal_mutable_refs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GroupingFunc::mutable_refs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingFunc.refs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_refs(); } inline const ::pg_query::Node& GroupingFunc::refs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.refs) return _internal_refs().Get(index); } inline ::pg_query::Node* GroupingFunc::add_refs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_refs()->Add(); // @@protoc_insertion_point(field_add:pg_query.GroupingFunc.refs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GroupingFunc::refs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.GroupingFunc.refs) return _internal_refs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GroupingFunc::_internal_refs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.refs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GroupingFunc::_internal_mutable_refs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.refs_; } // uint32 agglevelsup = 4 [json_name = "agglevelsup"]; inline void GroupingFunc::clear_agglevelsup() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.agglevelsup_ = 0u; } inline ::uint32_t GroupingFunc::agglevelsup() const { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.agglevelsup) return _internal_agglevelsup(); } inline void GroupingFunc::set_agglevelsup(::uint32_t value) { _internal_set_agglevelsup(value); // @@protoc_insertion_point(field_set:pg_query.GroupingFunc.agglevelsup) } inline ::uint32_t GroupingFunc::_internal_agglevelsup() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.agglevelsup_; } inline void GroupingFunc::_internal_set_agglevelsup(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.agglevelsup_ = value; } // int32 location = 5 [json_name = "location"]; inline void GroupingFunc::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t GroupingFunc::location() const { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.location) return _internal_location(); } inline void GroupingFunc::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.GroupingFunc.location) } inline ::int32_t GroupingFunc::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void GroupingFunc::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // WindowFunc // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool WindowFunc::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void WindowFunc::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& WindowFunc::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WindowFunc::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.xpr) return _internal_xpr(); } inline void WindowFunc::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowFunc.xpr) } inline ::pg_query::Node* WindowFunc::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* WindowFunc::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WindowFunc.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* WindowFunc::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* WindowFunc::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.WindowFunc.xpr) return _msg; } inline void WindowFunc::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.WindowFunc.xpr) } // uint32 winfnoid = 2 [json_name = "winfnoid"]; inline void WindowFunc::clear_winfnoid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.winfnoid_ = 0u; } inline ::uint32_t WindowFunc::winfnoid() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winfnoid) return _internal_winfnoid(); } inline void WindowFunc::set_winfnoid(::uint32_t value) { _internal_set_winfnoid(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winfnoid) } inline ::uint32_t WindowFunc::_internal_winfnoid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.winfnoid_; } inline void WindowFunc::_internal_set_winfnoid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.winfnoid_ = value; } // uint32 wintype = 3 [json_name = "wintype"]; inline void WindowFunc::clear_wintype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.wintype_ = 0u; } inline ::uint32_t WindowFunc::wintype() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.wintype) return _internal_wintype(); } inline void WindowFunc::set_wintype(::uint32_t value) { _internal_set_wintype(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.wintype) } inline ::uint32_t WindowFunc::_internal_wintype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.wintype_; } inline void WindowFunc::_internal_set_wintype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.wintype_ = value; } // uint32 wincollid = 4 [json_name = "wincollid"]; inline void WindowFunc::clear_wincollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.wincollid_ = 0u; } inline ::uint32_t WindowFunc::wincollid() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.wincollid) return _internal_wincollid(); } inline void WindowFunc::set_wincollid(::uint32_t value) { _internal_set_wincollid(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.wincollid) } inline ::uint32_t WindowFunc::_internal_wincollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.wincollid_; } inline void WindowFunc::_internal_set_wincollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.wincollid_ = value; } // uint32 inputcollid = 5 [json_name = "inputcollid"]; inline void WindowFunc::clear_inputcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inputcollid_ = 0u; } inline ::uint32_t WindowFunc::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.inputcollid) return _internal_inputcollid(); } inline void WindowFunc::set_inputcollid(::uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.inputcollid) } inline ::uint32_t WindowFunc::_internal_inputcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inputcollid_; } inline void WindowFunc::_internal_set_inputcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inputcollid_ = value; } // repeated .pg_query.Node args = 6 [json_name = "args"]; inline int WindowFunc::_internal_args_size() const { return _internal_args().size(); } inline int WindowFunc::args_size() const { return _internal_args_size(); } inline void WindowFunc::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* WindowFunc::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.WindowFunc.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* WindowFunc::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowFunc.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& WindowFunc::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.args) return _internal_args().Get(index); } inline ::pg_query::Node* WindowFunc::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.WindowFunc.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& WindowFunc::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.WindowFunc.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& WindowFunc::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* WindowFunc::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; inline bool WindowFunc::has_aggfilter() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.aggfilter_ != nullptr); return value; } inline void WindowFunc::clear_aggfilter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.aggfilter_ != nullptr) _impl_.aggfilter_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& WindowFunc::_internal_aggfilter() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.aggfilter_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WindowFunc::aggfilter() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.aggfilter) return _internal_aggfilter(); } inline void WindowFunc::unsafe_arena_set_allocated_aggfilter(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.aggfilter_); } _impl_.aggfilter_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowFunc.aggfilter) } inline ::pg_query::Node* WindowFunc::release_aggfilter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.aggfilter_; _impl_.aggfilter_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* WindowFunc::unsafe_arena_release_aggfilter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WindowFunc.aggfilter) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.aggfilter_; _impl_.aggfilter_ = nullptr; return temp; } inline ::pg_query::Node* WindowFunc::_internal_mutable_aggfilter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.aggfilter_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.aggfilter_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.aggfilter_; } inline ::pg_query::Node* WindowFunc::mutable_aggfilter() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_aggfilter(); // @@protoc_insertion_point(field_mutable:pg_query.WindowFunc.aggfilter) return _msg; } inline void WindowFunc::set_allocated_aggfilter(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.aggfilter_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.aggfilter_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.WindowFunc.aggfilter) } // repeated .pg_query.Node run_condition = 8 [json_name = "runCondition"]; inline int WindowFunc::_internal_run_condition_size() const { return _internal_run_condition().size(); } inline int WindowFunc::run_condition_size() const { return _internal_run_condition_size(); } inline void WindowFunc::clear_run_condition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.run_condition_.Clear(); } inline ::pg_query::Node* WindowFunc::mutable_run_condition(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.WindowFunc.run_condition) return _internal_mutable_run_condition()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* WindowFunc::mutable_run_condition() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowFunc.run_condition) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_run_condition(); } inline const ::pg_query::Node& WindowFunc::run_condition(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.run_condition) return _internal_run_condition().Get(index); } inline ::pg_query::Node* WindowFunc::add_run_condition() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_run_condition()->Add(); // @@protoc_insertion_point(field_add:pg_query.WindowFunc.run_condition) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& WindowFunc::run_condition() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.WindowFunc.run_condition) return _internal_run_condition(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& WindowFunc::_internal_run_condition() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.run_condition_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* WindowFunc::_internal_mutable_run_condition() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.run_condition_; } // uint32 winref = 9 [json_name = "winref"]; inline void WindowFunc::clear_winref() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.winref_ = 0u; } inline ::uint32_t WindowFunc::winref() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winref) return _internal_winref(); } inline void WindowFunc::set_winref(::uint32_t value) { _internal_set_winref(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winref) } inline ::uint32_t WindowFunc::_internal_winref() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.winref_; } inline void WindowFunc::_internal_set_winref(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.winref_ = value; } // bool winstar = 10 [json_name = "winstar"]; inline void WindowFunc::clear_winstar() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.winstar_ = false; } inline bool WindowFunc::winstar() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winstar) return _internal_winstar(); } inline void WindowFunc::set_winstar(bool value) { _internal_set_winstar(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winstar) } inline bool WindowFunc::_internal_winstar() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.winstar_; } inline void WindowFunc::_internal_set_winstar(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.winstar_ = value; } // bool winagg = 11 [json_name = "winagg"]; inline void WindowFunc::clear_winagg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.winagg_ = false; } inline bool WindowFunc::winagg() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winagg) return _internal_winagg(); } inline void WindowFunc::set_winagg(bool value) { _internal_set_winagg(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winagg) } inline bool WindowFunc::_internal_winagg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.winagg_; } inline void WindowFunc::_internal_set_winagg(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.winagg_ = value; } // int32 location = 12 [json_name = "location"]; inline void WindowFunc::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t WindowFunc::location() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.location) return _internal_location(); } inline void WindowFunc::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.location) } inline ::int32_t WindowFunc::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void WindowFunc::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // WindowFuncRunCondition // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool WindowFuncRunCondition::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void WindowFuncRunCondition::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& WindowFuncRunCondition::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WindowFuncRunCondition::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WindowFuncRunCondition.xpr) return _internal_xpr(); } inline void WindowFuncRunCondition::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowFuncRunCondition.xpr) } inline ::pg_query::Node* WindowFuncRunCondition::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* WindowFuncRunCondition::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WindowFuncRunCondition.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* WindowFuncRunCondition::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* WindowFuncRunCondition::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.WindowFuncRunCondition.xpr) return _msg; } inline void WindowFuncRunCondition::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.WindowFuncRunCondition.xpr) } // uint32 opno = 2 [json_name = "opno"]; inline void WindowFuncRunCondition::clear_opno() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opno_ = 0u; } inline ::uint32_t WindowFuncRunCondition::opno() const { // @@protoc_insertion_point(field_get:pg_query.WindowFuncRunCondition.opno) return _internal_opno(); } inline void WindowFuncRunCondition::set_opno(::uint32_t value) { _internal_set_opno(value); // @@protoc_insertion_point(field_set:pg_query.WindowFuncRunCondition.opno) } inline ::uint32_t WindowFuncRunCondition::_internal_opno() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opno_; } inline void WindowFuncRunCondition::_internal_set_opno(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.opno_ = value; } // uint32 inputcollid = 3 [json_name = "inputcollid"]; inline void WindowFuncRunCondition::clear_inputcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inputcollid_ = 0u; } inline ::uint32_t WindowFuncRunCondition::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.WindowFuncRunCondition.inputcollid) return _internal_inputcollid(); } inline void WindowFuncRunCondition::set_inputcollid(::uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.WindowFuncRunCondition.inputcollid) } inline ::uint32_t WindowFuncRunCondition::_internal_inputcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inputcollid_; } inline void WindowFuncRunCondition::_internal_set_inputcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inputcollid_ = value; } // bool wfunc_left = 4 [json_name = "wfunc_left"]; inline void WindowFuncRunCondition::clear_wfunc_left() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.wfunc_left_ = false; } inline bool WindowFuncRunCondition::wfunc_left() const { // @@protoc_insertion_point(field_get:pg_query.WindowFuncRunCondition.wfunc_left) return _internal_wfunc_left(); } inline void WindowFuncRunCondition::set_wfunc_left(bool value) { _internal_set_wfunc_left(value); // @@protoc_insertion_point(field_set:pg_query.WindowFuncRunCondition.wfunc_left) } inline bool WindowFuncRunCondition::_internal_wfunc_left() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.wfunc_left_; } inline void WindowFuncRunCondition::_internal_set_wfunc_left(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.wfunc_left_ = value; } // .pg_query.Node arg = 5 [json_name = "arg"]; inline bool WindowFuncRunCondition::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void WindowFuncRunCondition::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& WindowFuncRunCondition::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WindowFuncRunCondition::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WindowFuncRunCondition.arg) return _internal_arg(); } inline void WindowFuncRunCondition::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowFuncRunCondition.arg) } inline ::pg_query::Node* WindowFuncRunCondition::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* WindowFuncRunCondition::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WindowFuncRunCondition.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* WindowFuncRunCondition::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* WindowFuncRunCondition::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.WindowFuncRunCondition.arg) return _msg; } inline void WindowFuncRunCondition::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.WindowFuncRunCondition.arg) } // ------------------------------------------------------------------- // MergeSupportFunc // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool MergeSupportFunc::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void MergeSupportFunc::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& MergeSupportFunc::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& MergeSupportFunc::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MergeSupportFunc.xpr) return _internal_xpr(); } inline void MergeSupportFunc::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MergeSupportFunc.xpr) } inline ::pg_query::Node* MergeSupportFunc::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* MergeSupportFunc::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.MergeSupportFunc.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* MergeSupportFunc::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* MergeSupportFunc::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.MergeSupportFunc.xpr) return _msg; } inline void MergeSupportFunc::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.MergeSupportFunc.xpr) } // uint32 msftype = 2 [json_name = "msftype"]; inline void MergeSupportFunc::clear_msftype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.msftype_ = 0u; } inline ::uint32_t MergeSupportFunc::msftype() const { // @@protoc_insertion_point(field_get:pg_query.MergeSupportFunc.msftype) return _internal_msftype(); } inline void MergeSupportFunc::set_msftype(::uint32_t value) { _internal_set_msftype(value); // @@protoc_insertion_point(field_set:pg_query.MergeSupportFunc.msftype) } inline ::uint32_t MergeSupportFunc::_internal_msftype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.msftype_; } inline void MergeSupportFunc::_internal_set_msftype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.msftype_ = value; } // uint32 msfcollid = 3 [json_name = "msfcollid"]; inline void MergeSupportFunc::clear_msfcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.msfcollid_ = 0u; } inline ::uint32_t MergeSupportFunc::msfcollid() const { // @@protoc_insertion_point(field_get:pg_query.MergeSupportFunc.msfcollid) return _internal_msfcollid(); } inline void MergeSupportFunc::set_msfcollid(::uint32_t value) { _internal_set_msfcollid(value); // @@protoc_insertion_point(field_set:pg_query.MergeSupportFunc.msfcollid) } inline ::uint32_t MergeSupportFunc::_internal_msfcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.msfcollid_; } inline void MergeSupportFunc::_internal_set_msfcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.msfcollid_ = value; } // int32 location = 4 [json_name = "location"]; inline void MergeSupportFunc::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t MergeSupportFunc::location() const { // @@protoc_insertion_point(field_get:pg_query.MergeSupportFunc.location) return _internal_location(); } inline void MergeSupportFunc::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.MergeSupportFunc.location) } inline ::int32_t MergeSupportFunc::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void MergeSupportFunc::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // SubscriptingRef // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SubscriptingRef::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void SubscriptingRef::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& SubscriptingRef::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubscriptingRef::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.xpr) return _internal_xpr(); } inline void SubscriptingRef::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubscriptingRef.xpr) } inline ::pg_query::Node* SubscriptingRef::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SubscriptingRef::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SubscriptingRef.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* SubscriptingRef::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* SubscriptingRef::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.xpr) return _msg; } inline void SubscriptingRef::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.SubscriptingRef.xpr) } // uint32 refcontainertype = 2 [json_name = "refcontainertype"]; inline void SubscriptingRef::clear_refcontainertype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.refcontainertype_ = 0u; } inline ::uint32_t SubscriptingRef::refcontainertype() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refcontainertype) return _internal_refcontainertype(); } inline void SubscriptingRef::set_refcontainertype(::uint32_t value) { _internal_set_refcontainertype(value); // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.refcontainertype) } inline ::uint32_t SubscriptingRef::_internal_refcontainertype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.refcontainertype_; } inline void SubscriptingRef::_internal_set_refcontainertype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.refcontainertype_ = value; } // uint32 refelemtype = 3 [json_name = "refelemtype"]; inline void SubscriptingRef::clear_refelemtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.refelemtype_ = 0u; } inline ::uint32_t SubscriptingRef::refelemtype() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refelemtype) return _internal_refelemtype(); } inline void SubscriptingRef::set_refelemtype(::uint32_t value) { _internal_set_refelemtype(value); // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.refelemtype) } inline ::uint32_t SubscriptingRef::_internal_refelemtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.refelemtype_; } inline void SubscriptingRef::_internal_set_refelemtype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.refelemtype_ = value; } // uint32 refrestype = 4 [json_name = "refrestype"]; inline void SubscriptingRef::clear_refrestype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.refrestype_ = 0u; } inline ::uint32_t SubscriptingRef::refrestype() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refrestype) return _internal_refrestype(); } inline void SubscriptingRef::set_refrestype(::uint32_t value) { _internal_set_refrestype(value); // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.refrestype) } inline ::uint32_t SubscriptingRef::_internal_refrestype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.refrestype_; } inline void SubscriptingRef::_internal_set_refrestype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.refrestype_ = value; } // int32 reftypmod = 5 [json_name = "reftypmod"]; inline void SubscriptingRef::clear_reftypmod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.reftypmod_ = 0; } inline ::int32_t SubscriptingRef::reftypmod() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.reftypmod) return _internal_reftypmod(); } inline void SubscriptingRef::set_reftypmod(::int32_t value) { _internal_set_reftypmod(value); // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.reftypmod) } inline ::int32_t SubscriptingRef::_internal_reftypmod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.reftypmod_; } inline void SubscriptingRef::_internal_set_reftypmod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.reftypmod_ = value; } // uint32 refcollid = 6 [json_name = "refcollid"]; inline void SubscriptingRef::clear_refcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.refcollid_ = 0u; } inline ::uint32_t SubscriptingRef::refcollid() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refcollid) return _internal_refcollid(); } inline void SubscriptingRef::set_refcollid(::uint32_t value) { _internal_set_refcollid(value); // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.refcollid) } inline ::uint32_t SubscriptingRef::_internal_refcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.refcollid_; } inline void SubscriptingRef::_internal_set_refcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.refcollid_ = value; } // repeated .pg_query.Node refupperindexpr = 7 [json_name = "refupperindexpr"]; inline int SubscriptingRef::_internal_refupperindexpr_size() const { return _internal_refupperindexpr().size(); } inline int SubscriptingRef::refupperindexpr_size() const { return _internal_refupperindexpr_size(); } inline void SubscriptingRef::clear_refupperindexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.refupperindexpr_.Clear(); } inline ::pg_query::Node* SubscriptingRef::mutable_refupperindexpr(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.refupperindexpr) return _internal_mutable_refupperindexpr()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SubscriptingRef::mutable_refupperindexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SubscriptingRef.refupperindexpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_refupperindexpr(); } inline const ::pg_query::Node& SubscriptingRef::refupperindexpr(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refupperindexpr) return _internal_refupperindexpr().Get(index); } inline ::pg_query::Node* SubscriptingRef::add_refupperindexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_refupperindexpr()->Add(); // @@protoc_insertion_point(field_add:pg_query.SubscriptingRef.refupperindexpr) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SubscriptingRef::refupperindexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SubscriptingRef.refupperindexpr) return _internal_refupperindexpr(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SubscriptingRef::_internal_refupperindexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.refupperindexpr_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SubscriptingRef::_internal_mutable_refupperindexpr() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.refupperindexpr_; } // repeated .pg_query.Node reflowerindexpr = 8 [json_name = "reflowerindexpr"]; inline int SubscriptingRef::_internal_reflowerindexpr_size() const { return _internal_reflowerindexpr().size(); } inline int SubscriptingRef::reflowerindexpr_size() const { return _internal_reflowerindexpr_size(); } inline void SubscriptingRef::clear_reflowerindexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.reflowerindexpr_.Clear(); } inline ::pg_query::Node* SubscriptingRef::mutable_reflowerindexpr(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.reflowerindexpr) return _internal_mutable_reflowerindexpr()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SubscriptingRef::mutable_reflowerindexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SubscriptingRef.reflowerindexpr) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_reflowerindexpr(); } inline const ::pg_query::Node& SubscriptingRef::reflowerindexpr(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.reflowerindexpr) return _internal_reflowerindexpr().Get(index); } inline ::pg_query::Node* SubscriptingRef::add_reflowerindexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_reflowerindexpr()->Add(); // @@protoc_insertion_point(field_add:pg_query.SubscriptingRef.reflowerindexpr) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SubscriptingRef::reflowerindexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SubscriptingRef.reflowerindexpr) return _internal_reflowerindexpr(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SubscriptingRef::_internal_reflowerindexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.reflowerindexpr_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SubscriptingRef::_internal_mutable_reflowerindexpr() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.reflowerindexpr_; } // .pg_query.Node refexpr = 9 [json_name = "refexpr"]; inline bool SubscriptingRef::has_refexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.refexpr_ != nullptr); return value; } inline void SubscriptingRef::clear_refexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.refexpr_ != nullptr) _impl_.refexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& SubscriptingRef::_internal_refexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.refexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubscriptingRef::refexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refexpr) return _internal_refexpr(); } inline void SubscriptingRef::unsafe_arena_set_allocated_refexpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.refexpr_); } _impl_.refexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubscriptingRef.refexpr) } inline ::pg_query::Node* SubscriptingRef::release_refexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.refexpr_; _impl_.refexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SubscriptingRef::unsafe_arena_release_refexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SubscriptingRef.refexpr) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.refexpr_; _impl_.refexpr_ = nullptr; return temp; } inline ::pg_query::Node* SubscriptingRef::_internal_mutable_refexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.refexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.refexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.refexpr_; } inline ::pg_query::Node* SubscriptingRef::mutable_refexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_refexpr(); // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.refexpr) return _msg; } inline void SubscriptingRef::set_allocated_refexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.refexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.refexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.SubscriptingRef.refexpr) } // .pg_query.Node refassgnexpr = 10 [json_name = "refassgnexpr"]; inline bool SubscriptingRef::has_refassgnexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.refassgnexpr_ != nullptr); return value; } inline void SubscriptingRef::clear_refassgnexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.refassgnexpr_ != nullptr) _impl_.refassgnexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& SubscriptingRef::_internal_refassgnexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.refassgnexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubscriptingRef::refassgnexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refassgnexpr) return _internal_refassgnexpr(); } inline void SubscriptingRef::unsafe_arena_set_allocated_refassgnexpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.refassgnexpr_); } _impl_.refassgnexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubscriptingRef.refassgnexpr) } inline ::pg_query::Node* SubscriptingRef::release_refassgnexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.refassgnexpr_; _impl_.refassgnexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SubscriptingRef::unsafe_arena_release_refassgnexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SubscriptingRef.refassgnexpr) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.refassgnexpr_; _impl_.refassgnexpr_ = nullptr; return temp; } inline ::pg_query::Node* SubscriptingRef::_internal_mutable_refassgnexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.refassgnexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.refassgnexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.refassgnexpr_; } inline ::pg_query::Node* SubscriptingRef::mutable_refassgnexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_refassgnexpr(); // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.refassgnexpr) return _msg; } inline void SubscriptingRef::set_allocated_refassgnexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.refassgnexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.refassgnexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.SubscriptingRef.refassgnexpr) } // ------------------------------------------------------------------- // FuncExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool FuncExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void FuncExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& FuncExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FuncExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.xpr) return _internal_xpr(); } inline void FuncExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FuncExpr.xpr) } inline ::pg_query::Node* FuncExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* FuncExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.FuncExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* FuncExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* FuncExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.FuncExpr.xpr) return _msg; } inline void FuncExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.FuncExpr.xpr) } // uint32 funcid = 2 [json_name = "funcid"]; inline void FuncExpr::clear_funcid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funcid_ = 0u; } inline ::uint32_t FuncExpr::funcid() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcid) return _internal_funcid(); } inline void FuncExpr::set_funcid(::uint32_t value) { _internal_set_funcid(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcid) } inline ::uint32_t FuncExpr::_internal_funcid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funcid_; } inline void FuncExpr::_internal_set_funcid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.funcid_ = value; } // uint32 funcresulttype = 3 [json_name = "funcresulttype"]; inline void FuncExpr::clear_funcresulttype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funcresulttype_ = 0u; } inline ::uint32_t FuncExpr::funcresulttype() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcresulttype) return _internal_funcresulttype(); } inline void FuncExpr::set_funcresulttype(::uint32_t value) { _internal_set_funcresulttype(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcresulttype) } inline ::uint32_t FuncExpr::_internal_funcresulttype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funcresulttype_; } inline void FuncExpr::_internal_set_funcresulttype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.funcresulttype_ = value; } // bool funcretset = 4 [json_name = "funcretset"]; inline void FuncExpr::clear_funcretset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funcretset_ = false; } inline bool FuncExpr::funcretset() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcretset) return _internal_funcretset(); } inline void FuncExpr::set_funcretset(bool value) { _internal_set_funcretset(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcretset) } inline bool FuncExpr::_internal_funcretset() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funcretset_; } inline void FuncExpr::_internal_set_funcretset(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.funcretset_ = value; } // bool funcvariadic = 5 [json_name = "funcvariadic"]; inline void FuncExpr::clear_funcvariadic() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funcvariadic_ = false; } inline bool FuncExpr::funcvariadic() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcvariadic) return _internal_funcvariadic(); } inline void FuncExpr::set_funcvariadic(bool value) { _internal_set_funcvariadic(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcvariadic) } inline bool FuncExpr::_internal_funcvariadic() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funcvariadic_; } inline void FuncExpr::_internal_set_funcvariadic(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.funcvariadic_ = value; } // .pg_query.CoercionForm funcformat = 6 [json_name = "funcformat"]; inline void FuncExpr::clear_funcformat() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funcformat_ = 0; } inline ::pg_query::CoercionForm FuncExpr::funcformat() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcformat) return _internal_funcformat(); } inline void FuncExpr::set_funcformat(::pg_query::CoercionForm value) { _internal_set_funcformat(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcformat) } inline ::pg_query::CoercionForm FuncExpr::_internal_funcformat() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::CoercionForm>(_impl_.funcformat_); } inline void FuncExpr::_internal_set_funcformat(::pg_query::CoercionForm value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.funcformat_ = value; } // uint32 funccollid = 7 [json_name = "funccollid"]; inline void FuncExpr::clear_funccollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funccollid_ = 0u; } inline ::uint32_t FuncExpr::funccollid() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funccollid) return _internal_funccollid(); } inline void FuncExpr::set_funccollid(::uint32_t value) { _internal_set_funccollid(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funccollid) } inline ::uint32_t FuncExpr::_internal_funccollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funccollid_; } inline void FuncExpr::_internal_set_funccollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.funccollid_ = value; } // uint32 inputcollid = 8 [json_name = "inputcollid"]; inline void FuncExpr::clear_inputcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inputcollid_ = 0u; } inline ::uint32_t FuncExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.inputcollid) return _internal_inputcollid(); } inline void FuncExpr::set_inputcollid(::uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.inputcollid) } inline ::uint32_t FuncExpr::_internal_inputcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inputcollid_; } inline void FuncExpr::_internal_set_inputcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inputcollid_ = value; } // repeated .pg_query.Node args = 9 [json_name = "args"]; inline int FuncExpr::_internal_args_size() const { return _internal_args().size(); } inline int FuncExpr::args_size() const { return _internal_args_size(); } inline void FuncExpr::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* FuncExpr::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.FuncExpr.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* FuncExpr::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.FuncExpr.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& FuncExpr::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.args) return _internal_args().Get(index); } inline ::pg_query::Node* FuncExpr::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.FuncExpr.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& FuncExpr::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.FuncExpr.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& FuncExpr::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* FuncExpr::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // int32 location = 10 [json_name = "location"]; inline void FuncExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t FuncExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.location) return _internal_location(); } inline void FuncExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.location) } inline ::int32_t FuncExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void FuncExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // NamedArgExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool NamedArgExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void NamedArgExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& NamedArgExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& NamedArgExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.xpr) return _internal_xpr(); } inline void NamedArgExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NamedArgExpr.xpr) } inline ::pg_query::Node* NamedArgExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* NamedArgExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.NamedArgExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* NamedArgExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* NamedArgExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.NamedArgExpr.xpr) return _msg; } inline void NamedArgExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.NamedArgExpr.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool NamedArgExpr::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void NamedArgExpr::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& NamedArgExpr::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& NamedArgExpr::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.arg) return _internal_arg(); } inline void NamedArgExpr::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NamedArgExpr.arg) } inline ::pg_query::Node* NamedArgExpr::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* NamedArgExpr::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.NamedArgExpr.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* NamedArgExpr::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* NamedArgExpr::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.NamedArgExpr.arg) return _msg; } inline void NamedArgExpr::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.NamedArgExpr.arg) } // string name = 3 [json_name = "name"]; inline void NamedArgExpr::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& NamedArgExpr::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void NamedArgExpr::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.NamedArgExpr.name) } inline std::string* NamedArgExpr::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.NamedArgExpr.name) return _s; } inline const std::string& NamedArgExpr::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void NamedArgExpr::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* NamedArgExpr::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* NamedArgExpr::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.NamedArgExpr.name) return _impl_.name_.Release(); } inline void NamedArgExpr::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.NamedArgExpr.name) } // int32 argnumber = 4 [json_name = "argnumber"]; inline void NamedArgExpr::clear_argnumber() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.argnumber_ = 0; } inline ::int32_t NamedArgExpr::argnumber() const { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.argnumber) return _internal_argnumber(); } inline void NamedArgExpr::set_argnumber(::int32_t value) { _internal_set_argnumber(value); // @@protoc_insertion_point(field_set:pg_query.NamedArgExpr.argnumber) } inline ::int32_t NamedArgExpr::_internal_argnumber() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.argnumber_; } inline void NamedArgExpr::_internal_set_argnumber(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.argnumber_ = value; } // int32 location = 5 [json_name = "location"]; inline void NamedArgExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t NamedArgExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.location) return _internal_location(); } inline void NamedArgExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.NamedArgExpr.location) } inline ::int32_t NamedArgExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void NamedArgExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // OpExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool OpExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void OpExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& OpExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& OpExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.OpExpr.xpr) return _internal_xpr(); } inline void OpExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OpExpr.xpr) } inline ::pg_query::Node* OpExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* OpExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.OpExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* OpExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* OpExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.OpExpr.xpr) return _msg; } inline void OpExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.OpExpr.xpr) } // uint32 opno = 2 [json_name = "opno"]; inline void OpExpr::clear_opno() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opno_ = 0u; } inline ::uint32_t OpExpr::opno() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.opno) return _internal_opno(); } inline void OpExpr::set_opno(::uint32_t value) { _internal_set_opno(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.opno) } inline ::uint32_t OpExpr::_internal_opno() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opno_; } inline void OpExpr::_internal_set_opno(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.opno_ = value; } // uint32 opresulttype = 3 [json_name = "opresulttype"]; inline void OpExpr::clear_opresulttype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opresulttype_ = 0u; } inline ::uint32_t OpExpr::opresulttype() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.opresulttype) return _internal_opresulttype(); } inline void OpExpr::set_opresulttype(::uint32_t value) { _internal_set_opresulttype(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.opresulttype) } inline ::uint32_t OpExpr::_internal_opresulttype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opresulttype_; } inline void OpExpr::_internal_set_opresulttype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.opresulttype_ = value; } // bool opretset = 4 [json_name = "opretset"]; inline void OpExpr::clear_opretset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opretset_ = false; } inline bool OpExpr::opretset() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.opretset) return _internal_opretset(); } inline void OpExpr::set_opretset(bool value) { _internal_set_opretset(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.opretset) } inline bool OpExpr::_internal_opretset() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opretset_; } inline void OpExpr::_internal_set_opretset(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.opretset_ = value; } // uint32 opcollid = 5 [json_name = "opcollid"]; inline void OpExpr::clear_opcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opcollid_ = 0u; } inline ::uint32_t OpExpr::opcollid() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.opcollid) return _internal_opcollid(); } inline void OpExpr::set_opcollid(::uint32_t value) { _internal_set_opcollid(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.opcollid) } inline ::uint32_t OpExpr::_internal_opcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opcollid_; } inline void OpExpr::_internal_set_opcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.opcollid_ = value; } // uint32 inputcollid = 6 [json_name = "inputcollid"]; inline void OpExpr::clear_inputcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inputcollid_ = 0u; } inline ::uint32_t OpExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.inputcollid) return _internal_inputcollid(); } inline void OpExpr::set_inputcollid(::uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.inputcollid) } inline ::uint32_t OpExpr::_internal_inputcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inputcollid_; } inline void OpExpr::_internal_set_inputcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inputcollid_ = value; } // repeated .pg_query.Node args = 7 [json_name = "args"]; inline int OpExpr::_internal_args_size() const { return _internal_args().size(); } inline int OpExpr::args_size() const { return _internal_args_size(); } inline void OpExpr::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* OpExpr::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.OpExpr.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* OpExpr::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.OpExpr.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& OpExpr::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.OpExpr.args) return _internal_args().Get(index); } inline ::pg_query::Node* OpExpr::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.OpExpr.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& OpExpr::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.OpExpr.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& OpExpr::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* OpExpr::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // int32 location = 8 [json_name = "location"]; inline void OpExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t OpExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.location) return _internal_location(); } inline void OpExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.location) } inline ::int32_t OpExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void OpExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // DistinctExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool DistinctExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void DistinctExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& DistinctExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& DistinctExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.xpr) return _internal_xpr(); } inline void DistinctExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DistinctExpr.xpr) } inline ::pg_query::Node* DistinctExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* DistinctExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DistinctExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* DistinctExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* DistinctExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.DistinctExpr.xpr) return _msg; } inline void DistinctExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.DistinctExpr.xpr) } // uint32 opno = 2 [json_name = "opno"]; inline void DistinctExpr::clear_opno() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opno_ = 0u; } inline ::uint32_t DistinctExpr::opno() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opno) return _internal_opno(); } inline void DistinctExpr::set_opno(::uint32_t value) { _internal_set_opno(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opno) } inline ::uint32_t DistinctExpr::_internal_opno() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opno_; } inline void DistinctExpr::_internal_set_opno(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.opno_ = value; } // uint32 opresulttype = 3 [json_name = "opresulttype"]; inline void DistinctExpr::clear_opresulttype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opresulttype_ = 0u; } inline ::uint32_t DistinctExpr::opresulttype() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opresulttype) return _internal_opresulttype(); } inline void DistinctExpr::set_opresulttype(::uint32_t value) { _internal_set_opresulttype(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opresulttype) } inline ::uint32_t DistinctExpr::_internal_opresulttype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opresulttype_; } inline void DistinctExpr::_internal_set_opresulttype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.opresulttype_ = value; } // bool opretset = 4 [json_name = "opretset"]; inline void DistinctExpr::clear_opretset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opretset_ = false; } inline bool DistinctExpr::opretset() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opretset) return _internal_opretset(); } inline void DistinctExpr::set_opretset(bool value) { _internal_set_opretset(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opretset) } inline bool DistinctExpr::_internal_opretset() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opretset_; } inline void DistinctExpr::_internal_set_opretset(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.opretset_ = value; } // uint32 opcollid = 5 [json_name = "opcollid"]; inline void DistinctExpr::clear_opcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opcollid_ = 0u; } inline ::uint32_t DistinctExpr::opcollid() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opcollid) return _internal_opcollid(); } inline void DistinctExpr::set_opcollid(::uint32_t value) { _internal_set_opcollid(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opcollid) } inline ::uint32_t DistinctExpr::_internal_opcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opcollid_; } inline void DistinctExpr::_internal_set_opcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.opcollid_ = value; } // uint32 inputcollid = 6 [json_name = "inputcollid"]; inline void DistinctExpr::clear_inputcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inputcollid_ = 0u; } inline ::uint32_t DistinctExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.inputcollid) return _internal_inputcollid(); } inline void DistinctExpr::set_inputcollid(::uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.inputcollid) } inline ::uint32_t DistinctExpr::_internal_inputcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inputcollid_; } inline void DistinctExpr::_internal_set_inputcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inputcollid_ = value; } // repeated .pg_query.Node args = 7 [json_name = "args"]; inline int DistinctExpr::_internal_args_size() const { return _internal_args().size(); } inline int DistinctExpr::args_size() const { return _internal_args_size(); } inline void DistinctExpr::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* DistinctExpr::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.DistinctExpr.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DistinctExpr::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.DistinctExpr.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& DistinctExpr::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.args) return _internal_args().Get(index); } inline ::pg_query::Node* DistinctExpr::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.DistinctExpr.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DistinctExpr::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.DistinctExpr.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DistinctExpr::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DistinctExpr::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // int32 location = 8 [json_name = "location"]; inline void DistinctExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t DistinctExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.location) return _internal_location(); } inline void DistinctExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.location) } inline ::int32_t DistinctExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void DistinctExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // NullIfExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool NullIfExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void NullIfExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& NullIfExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& NullIfExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.xpr) return _internal_xpr(); } inline void NullIfExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NullIfExpr.xpr) } inline ::pg_query::Node* NullIfExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* NullIfExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.NullIfExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* NullIfExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* NullIfExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.NullIfExpr.xpr) return _msg; } inline void NullIfExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.NullIfExpr.xpr) } // uint32 opno = 2 [json_name = "opno"]; inline void NullIfExpr::clear_opno() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opno_ = 0u; } inline ::uint32_t NullIfExpr::opno() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opno) return _internal_opno(); } inline void NullIfExpr::set_opno(::uint32_t value) { _internal_set_opno(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opno) } inline ::uint32_t NullIfExpr::_internal_opno() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opno_; } inline void NullIfExpr::_internal_set_opno(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.opno_ = value; } // uint32 opresulttype = 3 [json_name = "opresulttype"]; inline void NullIfExpr::clear_opresulttype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opresulttype_ = 0u; } inline ::uint32_t NullIfExpr::opresulttype() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opresulttype) return _internal_opresulttype(); } inline void NullIfExpr::set_opresulttype(::uint32_t value) { _internal_set_opresulttype(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opresulttype) } inline ::uint32_t NullIfExpr::_internal_opresulttype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opresulttype_; } inline void NullIfExpr::_internal_set_opresulttype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.opresulttype_ = value; } // bool opretset = 4 [json_name = "opretset"]; inline void NullIfExpr::clear_opretset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opretset_ = false; } inline bool NullIfExpr::opretset() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opretset) return _internal_opretset(); } inline void NullIfExpr::set_opretset(bool value) { _internal_set_opretset(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opretset) } inline bool NullIfExpr::_internal_opretset() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opretset_; } inline void NullIfExpr::_internal_set_opretset(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.opretset_ = value; } // uint32 opcollid = 5 [json_name = "opcollid"]; inline void NullIfExpr::clear_opcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opcollid_ = 0u; } inline ::uint32_t NullIfExpr::opcollid() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opcollid) return _internal_opcollid(); } inline void NullIfExpr::set_opcollid(::uint32_t value) { _internal_set_opcollid(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opcollid) } inline ::uint32_t NullIfExpr::_internal_opcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opcollid_; } inline void NullIfExpr::_internal_set_opcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.opcollid_ = value; } // uint32 inputcollid = 6 [json_name = "inputcollid"]; inline void NullIfExpr::clear_inputcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inputcollid_ = 0u; } inline ::uint32_t NullIfExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.inputcollid) return _internal_inputcollid(); } inline void NullIfExpr::set_inputcollid(::uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.inputcollid) } inline ::uint32_t NullIfExpr::_internal_inputcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inputcollid_; } inline void NullIfExpr::_internal_set_inputcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inputcollid_ = value; } // repeated .pg_query.Node args = 7 [json_name = "args"]; inline int NullIfExpr::_internal_args_size() const { return _internal_args().size(); } inline int NullIfExpr::args_size() const { return _internal_args_size(); } inline void NullIfExpr::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* NullIfExpr::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.NullIfExpr.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* NullIfExpr::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.NullIfExpr.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& NullIfExpr::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.args) return _internal_args().Get(index); } inline ::pg_query::Node* NullIfExpr::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.NullIfExpr.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& NullIfExpr::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.NullIfExpr.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& NullIfExpr::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* NullIfExpr::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // int32 location = 8 [json_name = "location"]; inline void NullIfExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t NullIfExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.location) return _internal_location(); } inline void NullIfExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.location) } inline ::int32_t NullIfExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void NullIfExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // ScalarArrayOpExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool ScalarArrayOpExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void ScalarArrayOpExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& ScalarArrayOpExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ScalarArrayOpExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.xpr) return _internal_xpr(); } inline void ScalarArrayOpExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ScalarArrayOpExpr.xpr) } inline ::pg_query::Node* ScalarArrayOpExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* ScalarArrayOpExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ScalarArrayOpExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* ScalarArrayOpExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* ScalarArrayOpExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.ScalarArrayOpExpr.xpr) return _msg; } inline void ScalarArrayOpExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ScalarArrayOpExpr.xpr) } // uint32 opno = 2 [json_name = "opno"]; inline void ScalarArrayOpExpr::clear_opno() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opno_ = 0u; } inline ::uint32_t ScalarArrayOpExpr::opno() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.opno) return _internal_opno(); } inline void ScalarArrayOpExpr::set_opno(::uint32_t value) { _internal_set_opno(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.opno) } inline ::uint32_t ScalarArrayOpExpr::_internal_opno() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opno_; } inline void ScalarArrayOpExpr::_internal_set_opno(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.opno_ = value; } // bool use_or = 3 [json_name = "useOr"]; inline void ScalarArrayOpExpr::clear_use_or() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.use_or_ = false; } inline bool ScalarArrayOpExpr::use_or() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.use_or) return _internal_use_or(); } inline void ScalarArrayOpExpr::set_use_or(bool value) { _internal_set_use_or(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.use_or) } inline bool ScalarArrayOpExpr::_internal_use_or() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.use_or_; } inline void ScalarArrayOpExpr::_internal_set_use_or(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.use_or_ = value; } // uint32 inputcollid = 4 [json_name = "inputcollid"]; inline void ScalarArrayOpExpr::clear_inputcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inputcollid_ = 0u; } inline ::uint32_t ScalarArrayOpExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.inputcollid) return _internal_inputcollid(); } inline void ScalarArrayOpExpr::set_inputcollid(::uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.inputcollid) } inline ::uint32_t ScalarArrayOpExpr::_internal_inputcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inputcollid_; } inline void ScalarArrayOpExpr::_internal_set_inputcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inputcollid_ = value; } // repeated .pg_query.Node args = 5 [json_name = "args"]; inline int ScalarArrayOpExpr::_internal_args_size() const { return _internal_args().size(); } inline int ScalarArrayOpExpr::args_size() const { return _internal_args_size(); } inline void ScalarArrayOpExpr::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* ScalarArrayOpExpr::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ScalarArrayOpExpr.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ScalarArrayOpExpr::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ScalarArrayOpExpr.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& ScalarArrayOpExpr::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.args) return _internal_args().Get(index); } inline ::pg_query::Node* ScalarArrayOpExpr::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.ScalarArrayOpExpr.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ScalarArrayOpExpr::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ScalarArrayOpExpr.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ScalarArrayOpExpr::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ScalarArrayOpExpr::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // int32 location = 6 [json_name = "location"]; inline void ScalarArrayOpExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t ScalarArrayOpExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.location) return _internal_location(); } inline void ScalarArrayOpExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.location) } inline ::int32_t ScalarArrayOpExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void ScalarArrayOpExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // BoolExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool BoolExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void BoolExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& BoolExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& BoolExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.BoolExpr.xpr) return _internal_xpr(); } inline void BoolExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.BoolExpr.xpr) } inline ::pg_query::Node* BoolExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* BoolExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.BoolExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* BoolExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* BoolExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.BoolExpr.xpr) return _msg; } inline void BoolExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.BoolExpr.xpr) } // .pg_query.BoolExprType boolop = 2 [json_name = "boolop"]; inline void BoolExpr::clear_boolop() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.boolop_ = 0; } inline ::pg_query::BoolExprType BoolExpr::boolop() const { // @@protoc_insertion_point(field_get:pg_query.BoolExpr.boolop) return _internal_boolop(); } inline void BoolExpr::set_boolop(::pg_query::BoolExprType value) { _internal_set_boolop(value); // @@protoc_insertion_point(field_set:pg_query.BoolExpr.boolop) } inline ::pg_query::BoolExprType BoolExpr::_internal_boolop() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::BoolExprType>(_impl_.boolop_); } inline void BoolExpr::_internal_set_boolop(::pg_query::BoolExprType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.boolop_ = value; } // repeated .pg_query.Node args = 3 [json_name = "args"]; inline int BoolExpr::_internal_args_size() const { return _internal_args().size(); } inline int BoolExpr::args_size() const { return _internal_args_size(); } inline void BoolExpr::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* BoolExpr::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.BoolExpr.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* BoolExpr::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.BoolExpr.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& BoolExpr::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.BoolExpr.args) return _internal_args().Get(index); } inline ::pg_query::Node* BoolExpr::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.BoolExpr.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& BoolExpr::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.BoolExpr.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& BoolExpr::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* BoolExpr::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // int32 location = 4 [json_name = "location"]; inline void BoolExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t BoolExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.BoolExpr.location) return _internal_location(); } inline void BoolExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.BoolExpr.location) } inline ::int32_t BoolExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void BoolExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // SubLink // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SubLink::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void SubLink::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& SubLink::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubLink::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubLink.xpr) return _internal_xpr(); } inline void SubLink::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubLink.xpr) } inline ::pg_query::Node* SubLink::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SubLink::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SubLink.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* SubLink::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* SubLink::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.SubLink.xpr) return _msg; } inline void SubLink::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.sub_link_type_ = 0; } 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::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) } inline ::pg_query::SubLinkType SubLink::_internal_sub_link_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::SubLinkType>(_impl_.sub_link_type_); } inline void SubLink::_internal_set_sub_link_type(::pg_query::SubLinkType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.sub_link_type_ = value; } // int32 sub_link_id = 3 [json_name = "subLinkId"]; inline void SubLink::clear_sub_link_id() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.sub_link_id_ = 0; } inline ::int32_t SubLink::sub_link_id() const { // @@protoc_insertion_point(field_get:pg_query.SubLink.sub_link_id) return _internal_sub_link_id(); } inline void SubLink::set_sub_link_id(::int32_t value) { _internal_set_sub_link_id(value); // @@protoc_insertion_point(field_set:pg_query.SubLink.sub_link_id) } inline ::int32_t SubLink::_internal_sub_link_id() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.sub_link_id_; } inline void SubLink::_internal_set_sub_link_id(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.sub_link_id_ = value; } // .pg_query.Node testexpr = 4 [json_name = "testexpr"]; inline bool SubLink::has_testexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.testexpr_ != nullptr); return value; } inline void SubLink::clear_testexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.testexpr_ != nullptr) _impl_.testexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& SubLink::_internal_testexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.testexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubLink::testexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubLink.testexpr) return _internal_testexpr(); } inline void SubLink::unsafe_arena_set_allocated_testexpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.testexpr_); } _impl_.testexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubLink.testexpr) } inline ::pg_query::Node* SubLink::release_testexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.testexpr_; _impl_.testexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SubLink::unsafe_arena_release_testexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SubLink.testexpr) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.testexpr_; _impl_.testexpr_ = nullptr; return temp; } inline ::pg_query::Node* SubLink::_internal_mutable_testexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.testexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.testexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.testexpr_; } inline ::pg_query::Node* SubLink::mutable_testexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_testexpr(); // @@protoc_insertion_point(field_mutable:pg_query.SubLink.testexpr) return _msg; } inline void SubLink::set_allocated_testexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.testexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.testexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_oper_name().size(); } inline int SubLink::oper_name_size() const { return _internal_oper_name_size(); } inline void SubLink::clear_oper_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.oper_name_.Clear(); } inline ::pg_query::Node* SubLink::mutable_oper_name(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SubLink.oper_name) return _internal_mutable_oper_name()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SubLink::mutable_oper_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SubLink.oper_name) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_oper_name(); } inline const ::pg_query::Node& SubLink::oper_name(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubLink.oper_name) return _internal_oper_name().Get(index); } inline ::pg_query::Node* SubLink::add_oper_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_oper_name()->Add(); // @@protoc_insertion_point(field_add:pg_query.SubLink.oper_name) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SubLink::oper_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SubLink.oper_name) return _internal_oper_name(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SubLink::_internal_oper_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.oper_name_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SubLink::_internal_mutable_oper_name() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.oper_name_; } // .pg_query.Node subselect = 6 [json_name = "subselect"]; inline bool SubLink::has_subselect() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.subselect_ != nullptr); return value; } inline void SubLink::clear_subselect() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.subselect_ != nullptr) _impl_.subselect_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& SubLink::_internal_subselect() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.subselect_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubLink::subselect() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubLink.subselect) return _internal_subselect(); } inline void SubLink::unsafe_arena_set_allocated_subselect(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.subselect_); } _impl_.subselect_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubLink.subselect) } inline ::pg_query::Node* SubLink::release_subselect() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.subselect_; _impl_.subselect_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SubLink::unsafe_arena_release_subselect() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SubLink.subselect) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.subselect_; _impl_.subselect_ = nullptr; return temp; } inline ::pg_query::Node* SubLink::_internal_mutable_subselect() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.subselect_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.subselect_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.subselect_; } inline ::pg_query::Node* SubLink::mutable_subselect() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_subselect(); // @@protoc_insertion_point(field_mutable:pg_query.SubLink.subselect) return _msg; } inline void SubLink::set_allocated_subselect(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.subselect_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.subselect_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.SubLink.subselect) } // int32 location = 7 [json_name = "location"]; inline void SubLink::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t SubLink::location() const { // @@protoc_insertion_point(field_get:pg_query.SubLink.location) return _internal_location(); } inline void SubLink::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.SubLink.location) } inline ::int32_t SubLink::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void SubLink::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // SubPlan // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SubPlan::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void SubPlan::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& SubPlan::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubPlan::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubPlan.xpr) return _internal_xpr(); } inline void SubPlan::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubPlan.xpr) } inline ::pg_query::Node* SubPlan::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SubPlan::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SubPlan.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* SubPlan::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* SubPlan::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.xpr) return _msg; } inline void SubPlan::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.sub_link_type_ = 0; } 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::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) } inline ::pg_query::SubLinkType SubPlan::_internal_sub_link_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::SubLinkType>(_impl_.sub_link_type_); } inline void SubPlan::_internal_set_sub_link_type(::pg_query::SubLinkType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.sub_link_type_ = value; } // .pg_query.Node testexpr = 3 [json_name = "testexpr"]; inline bool SubPlan::has_testexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.testexpr_ != nullptr); return value; } inline void SubPlan::clear_testexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.testexpr_ != nullptr) _impl_.testexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& SubPlan::_internal_testexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.testexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubPlan::testexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubPlan.testexpr) return _internal_testexpr(); } inline void SubPlan::unsafe_arena_set_allocated_testexpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.testexpr_); } _impl_.testexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubPlan.testexpr) } inline ::pg_query::Node* SubPlan::release_testexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.testexpr_; _impl_.testexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SubPlan::unsafe_arena_release_testexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SubPlan.testexpr) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.testexpr_; _impl_.testexpr_ = nullptr; return temp; } inline ::pg_query::Node* SubPlan::_internal_mutable_testexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.testexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.testexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.testexpr_; } inline ::pg_query::Node* SubPlan::mutable_testexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_testexpr(); // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.testexpr) return _msg; } inline void SubPlan::set_allocated_testexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.testexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.testexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_param_ids().size(); } inline int SubPlan::param_ids_size() const { return _internal_param_ids_size(); } inline void SubPlan::clear_param_ids() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.param_ids_.Clear(); } inline ::pg_query::Node* SubPlan::mutable_param_ids(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.param_ids) return _internal_mutable_param_ids()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SubPlan::mutable_param_ids() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.param_ids) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_param_ids(); } inline const ::pg_query::Node& SubPlan::param_ids(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubPlan.param_ids) return _internal_param_ids().Get(index); } inline ::pg_query::Node* SubPlan::add_param_ids() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_param_ids()->Add(); // @@protoc_insertion_point(field_add:pg_query.SubPlan.param_ids) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SubPlan::param_ids() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SubPlan.param_ids) return _internal_param_ids(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SubPlan::_internal_param_ids() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.param_ids_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SubPlan::_internal_mutable_param_ids() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.param_ids_; } // int32 plan_id = 5 [json_name = "plan_id"]; inline void SubPlan::clear_plan_id() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.plan_id_ = 0; } inline ::int32_t SubPlan::plan_id() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.plan_id) return _internal_plan_id(); } inline void SubPlan::set_plan_id(::int32_t value) { _internal_set_plan_id(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.plan_id) } inline ::int32_t SubPlan::_internal_plan_id() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.plan_id_; } inline void SubPlan::_internal_set_plan_id(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.plan_id_ = value; } // string plan_name = 6 [json_name = "plan_name"]; inline void SubPlan::clear_plan_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.plan_name_.ClearToEmpty(); } inline const std::string& SubPlan::plan_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubPlan.plan_name) return _internal_plan_name(); } template inline PROTOBUF_ALWAYS_INLINE void SubPlan::set_plan_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.plan_name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.SubPlan.plan_name) } inline std::string* SubPlan::mutable_plan_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_plan_name(); // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.plan_name) return _s; } inline const std::string& SubPlan::_internal_plan_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.plan_name_.Get(); } inline void SubPlan::_internal_set_plan_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.plan_name_.Set(value, GetArena()); } inline std::string* SubPlan::_internal_mutable_plan_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.plan_name_.Mutable( GetArena()); } inline std::string* SubPlan::release_plan_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SubPlan.plan_name) return _impl_.plan_name_.Release(); } inline void SubPlan::set_allocated_plan_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.plan_name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.plan_name_.IsDefault()) { _impl_.plan_name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.first_col_type_ = 0u; } inline ::uint32_t SubPlan::first_col_type() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.first_col_type) return _internal_first_col_type(); } inline void SubPlan::set_first_col_type(::uint32_t value) { _internal_set_first_col_type(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.first_col_type) } inline ::uint32_t SubPlan::_internal_first_col_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.first_col_type_; } inline void SubPlan::_internal_set_first_col_type(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.first_col_type_ = value; } // int32 first_col_typmod = 8 [json_name = "firstColTypmod"]; inline void SubPlan::clear_first_col_typmod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.first_col_typmod_ = 0; } inline ::int32_t SubPlan::first_col_typmod() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.first_col_typmod) return _internal_first_col_typmod(); } inline void SubPlan::set_first_col_typmod(::int32_t value) { _internal_set_first_col_typmod(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.first_col_typmod) } inline ::int32_t SubPlan::_internal_first_col_typmod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.first_col_typmod_; } inline void SubPlan::_internal_set_first_col_typmod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.first_col_typmod_ = value; } // uint32 first_col_collation = 9 [json_name = "firstColCollation"]; inline void SubPlan::clear_first_col_collation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.first_col_collation_ = 0u; } inline ::uint32_t SubPlan::first_col_collation() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.first_col_collation) return _internal_first_col_collation(); } inline void SubPlan::set_first_col_collation(::uint32_t value) { _internal_set_first_col_collation(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.first_col_collation) } inline ::uint32_t SubPlan::_internal_first_col_collation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.first_col_collation_; } inline void SubPlan::_internal_set_first_col_collation(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.first_col_collation_ = value; } // bool use_hash_table = 10 [json_name = "useHashTable"]; inline void SubPlan::clear_use_hash_table() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.use_hash_table_ = false; } 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::set_use_hash_table(bool value) { _internal_set_use_hash_table(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.use_hash_table) } inline bool SubPlan::_internal_use_hash_table() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.use_hash_table_; } inline void SubPlan::_internal_set_use_hash_table(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.use_hash_table_ = value; } // bool unknown_eq_false = 11 [json_name = "unknownEqFalse"]; inline void SubPlan::clear_unknown_eq_false() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.unknown_eq_false_ = 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::set_unknown_eq_false(bool value) { _internal_set_unknown_eq_false(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.unknown_eq_false) } inline bool SubPlan::_internal_unknown_eq_false() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.unknown_eq_false_; } inline void SubPlan::_internal_set_unknown_eq_false(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.unknown_eq_false_ = value; } // bool parallel_safe = 12 [json_name = "parallel_safe"]; inline void SubPlan::clear_parallel_safe() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.parallel_safe_ = false; } inline bool SubPlan::parallel_safe() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.parallel_safe) return _internal_parallel_safe(); } inline void SubPlan::set_parallel_safe(bool value) { _internal_set_parallel_safe(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.parallel_safe) } inline bool SubPlan::_internal_parallel_safe() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.parallel_safe_; } inline void SubPlan::_internal_set_parallel_safe(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.parallel_safe_ = value; } // repeated .pg_query.Node set_param = 13 [json_name = "setParam"]; inline int SubPlan::_internal_set_param_size() const { return _internal_set_param().size(); } inline int SubPlan::set_param_size() const { return _internal_set_param_size(); } inline void SubPlan::clear_set_param() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.set_param_.Clear(); } inline ::pg_query::Node* SubPlan::mutable_set_param(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.set_param) return _internal_mutable_set_param()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SubPlan::mutable_set_param() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.set_param) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_set_param(); } inline const ::pg_query::Node& SubPlan::set_param(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubPlan.set_param) return _internal_set_param().Get(index); } inline ::pg_query::Node* SubPlan::add_set_param() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_set_param()->Add(); // @@protoc_insertion_point(field_add:pg_query.SubPlan.set_param) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SubPlan::set_param() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SubPlan.set_param) return _internal_set_param(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SubPlan::_internal_set_param() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.set_param_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SubPlan::_internal_mutable_set_param() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.set_param_; } // repeated .pg_query.Node par_param = 14 [json_name = "parParam"]; inline int SubPlan::_internal_par_param_size() const { return _internal_par_param().size(); } inline int SubPlan::par_param_size() const { return _internal_par_param_size(); } inline void SubPlan::clear_par_param() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.par_param_.Clear(); } inline ::pg_query::Node* SubPlan::mutable_par_param(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.par_param) return _internal_mutable_par_param()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SubPlan::mutable_par_param() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.par_param) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_par_param(); } inline const ::pg_query::Node& SubPlan::par_param(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubPlan.par_param) return _internal_par_param().Get(index); } inline ::pg_query::Node* SubPlan::add_par_param() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_par_param()->Add(); // @@protoc_insertion_point(field_add:pg_query.SubPlan.par_param) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SubPlan::par_param() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SubPlan.par_param) return _internal_par_param(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SubPlan::_internal_par_param() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.par_param_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SubPlan::_internal_mutable_par_param() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.par_param_; } // repeated .pg_query.Node args = 15 [json_name = "args"]; inline int SubPlan::_internal_args_size() const { return _internal_args().size(); } inline int SubPlan::args_size() const { return _internal_args_size(); } inline void SubPlan::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* SubPlan::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SubPlan::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& SubPlan::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SubPlan.args) return _internal_args().Get(index); } inline ::pg_query::Node* SubPlan::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.SubPlan.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SubPlan::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SubPlan.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SubPlan::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SubPlan::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // double startup_cost = 16 [json_name = "startup_cost"]; inline void SubPlan::clear_startup_cost() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.startup_cost_ = 0; } inline double SubPlan::startup_cost() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.startup_cost) return _internal_startup_cost(); } inline void SubPlan::set_startup_cost(double value) { _internal_set_startup_cost(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.startup_cost) } inline double SubPlan::_internal_startup_cost() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.startup_cost_; } inline void SubPlan::_internal_set_startup_cost(double value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.startup_cost_ = value; } // double per_call_cost = 17 [json_name = "per_call_cost"]; inline void SubPlan::clear_per_call_cost() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.per_call_cost_ = 0; } 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::set_per_call_cost(double value) { _internal_set_per_call_cost(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.per_call_cost) } inline double SubPlan::_internal_per_call_cost() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.per_call_cost_; } inline void SubPlan::_internal_set_per_call_cost(double value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.per_call_cost_ = value; } // ------------------------------------------------------------------- // AlternativeSubPlan // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool AlternativeSubPlan::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void AlternativeSubPlan::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& AlternativeSubPlan::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlternativeSubPlan::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlternativeSubPlan.xpr) return _internal_xpr(); } inline void AlternativeSubPlan::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlternativeSubPlan.xpr) } inline ::pg_query::Node* AlternativeSubPlan::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* AlternativeSubPlan::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlternativeSubPlan.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* AlternativeSubPlan::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* AlternativeSubPlan::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.AlternativeSubPlan.xpr) return _msg; } inline void AlternativeSubPlan::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_subplans().size(); } inline int AlternativeSubPlan::subplans_size() const { return _internal_subplans_size(); } inline void AlternativeSubPlan::clear_subplans() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.subplans_.Clear(); } inline ::pg_query::Node* AlternativeSubPlan::mutable_subplans(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlternativeSubPlan.subplans) return _internal_mutable_subplans()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlternativeSubPlan::mutable_subplans() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlternativeSubPlan.subplans) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_subplans(); } inline const ::pg_query::Node& AlternativeSubPlan::subplans(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlternativeSubPlan.subplans) return _internal_subplans().Get(index); } inline ::pg_query::Node* AlternativeSubPlan::add_subplans() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_subplans()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlternativeSubPlan.subplans) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlternativeSubPlan::subplans() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlternativeSubPlan.subplans) return _internal_subplans(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlternativeSubPlan::_internal_subplans() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.subplans_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlternativeSubPlan::_internal_mutable_subplans() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.subplans_; } // ------------------------------------------------------------------- // FieldSelect // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool FieldSelect::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void FieldSelect::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& FieldSelect::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FieldSelect::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.xpr) return _internal_xpr(); } inline void FieldSelect::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldSelect.xpr) } inline ::pg_query::Node* FieldSelect::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* FieldSelect::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.FieldSelect.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* FieldSelect::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* FieldSelect::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.FieldSelect.xpr) return _msg; } inline void FieldSelect::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.FieldSelect.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool FieldSelect::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void FieldSelect::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& FieldSelect::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FieldSelect::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.arg) return _internal_arg(); } inline void FieldSelect::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldSelect.arg) } inline ::pg_query::Node* FieldSelect::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* FieldSelect::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.FieldSelect.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* FieldSelect::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* FieldSelect::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.FieldSelect.arg) return _msg; } inline void FieldSelect::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.FieldSelect.arg) } // int32 fieldnum = 3 [json_name = "fieldnum"]; inline void FieldSelect::clear_fieldnum() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fieldnum_ = 0; } inline ::int32_t FieldSelect::fieldnum() const { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.fieldnum) return _internal_fieldnum(); } inline void FieldSelect::set_fieldnum(::int32_t value) { _internal_set_fieldnum(value); // @@protoc_insertion_point(field_set:pg_query.FieldSelect.fieldnum) } inline ::int32_t FieldSelect::_internal_fieldnum() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.fieldnum_; } inline void FieldSelect::_internal_set_fieldnum(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fieldnum_ = value; } // uint32 resulttype = 4 [json_name = "resulttype"]; inline void FieldSelect::clear_resulttype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resulttype_ = 0u; } inline ::uint32_t FieldSelect::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.resulttype) return _internal_resulttype(); } inline void FieldSelect::set_resulttype(::uint32_t value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.FieldSelect.resulttype) } inline ::uint32_t FieldSelect::_internal_resulttype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resulttype_; } inline void FieldSelect::_internal_set_resulttype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resulttype_ = value; } // int32 resulttypmod = 5 [json_name = "resulttypmod"]; inline void FieldSelect::clear_resulttypmod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resulttypmod_ = 0; } inline ::int32_t FieldSelect::resulttypmod() const { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.resulttypmod) return _internal_resulttypmod(); } inline void FieldSelect::set_resulttypmod(::int32_t value) { _internal_set_resulttypmod(value); // @@protoc_insertion_point(field_set:pg_query.FieldSelect.resulttypmod) } inline ::int32_t FieldSelect::_internal_resulttypmod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resulttypmod_; } inline void FieldSelect::_internal_set_resulttypmod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resulttypmod_ = value; } // uint32 resultcollid = 6 [json_name = "resultcollid"]; inline void FieldSelect::clear_resultcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resultcollid_ = 0u; } inline ::uint32_t FieldSelect::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.resultcollid) return _internal_resultcollid(); } inline void FieldSelect::set_resultcollid(::uint32_t value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.FieldSelect.resultcollid) } inline ::uint32_t FieldSelect::_internal_resultcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resultcollid_; } inline void FieldSelect::_internal_set_resultcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resultcollid_ = value; } // ------------------------------------------------------------------- // FieldStore // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool FieldStore::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void FieldStore::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& FieldStore::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FieldStore::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FieldStore.xpr) return _internal_xpr(); } inline void FieldStore::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldStore.xpr) } inline ::pg_query::Node* FieldStore::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* FieldStore::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.FieldStore.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* FieldStore::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* FieldStore::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.FieldStore.xpr) return _msg; } inline void FieldStore::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.FieldStore.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool FieldStore::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void FieldStore::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& FieldStore::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FieldStore::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FieldStore.arg) return _internal_arg(); } inline void FieldStore::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldStore.arg) } inline ::pg_query::Node* FieldStore::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* FieldStore::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.FieldStore.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* FieldStore::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* FieldStore::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.FieldStore.arg) return _msg; } inline void FieldStore::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_newvals().size(); } inline int FieldStore::newvals_size() const { return _internal_newvals_size(); } inline void FieldStore::clear_newvals() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.newvals_.Clear(); } inline ::pg_query::Node* FieldStore::mutable_newvals(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.FieldStore.newvals) return _internal_mutable_newvals()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* FieldStore::mutable_newvals() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.FieldStore.newvals) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_newvals(); } inline const ::pg_query::Node& FieldStore::newvals(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FieldStore.newvals) return _internal_newvals().Get(index); } inline ::pg_query::Node* FieldStore::add_newvals() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_newvals()->Add(); // @@protoc_insertion_point(field_add:pg_query.FieldStore.newvals) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& FieldStore::newvals() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.FieldStore.newvals) return _internal_newvals(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& FieldStore::_internal_newvals() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.newvals_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* FieldStore::_internal_mutable_newvals() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.newvals_; } // repeated .pg_query.Node fieldnums = 4 [json_name = "fieldnums"]; inline int FieldStore::_internal_fieldnums_size() const { return _internal_fieldnums().size(); } inline int FieldStore::fieldnums_size() const { return _internal_fieldnums_size(); } inline void FieldStore::clear_fieldnums() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fieldnums_.Clear(); } inline ::pg_query::Node* FieldStore::mutable_fieldnums(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.FieldStore.fieldnums) return _internal_mutable_fieldnums()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* FieldStore::mutable_fieldnums() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.FieldStore.fieldnums) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_fieldnums(); } inline const ::pg_query::Node& FieldStore::fieldnums(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FieldStore.fieldnums) return _internal_fieldnums().Get(index); } inline ::pg_query::Node* FieldStore::add_fieldnums() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_fieldnums()->Add(); // @@protoc_insertion_point(field_add:pg_query.FieldStore.fieldnums) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& FieldStore::fieldnums() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.FieldStore.fieldnums) return _internal_fieldnums(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& FieldStore::_internal_fieldnums() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.fieldnums_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* FieldStore::_internal_mutable_fieldnums() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.fieldnums_; } // uint32 resulttype = 5 [json_name = "resulttype"]; inline void FieldStore::clear_resulttype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resulttype_ = 0u; } inline ::uint32_t FieldStore::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.FieldStore.resulttype) return _internal_resulttype(); } inline void FieldStore::set_resulttype(::uint32_t value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.FieldStore.resulttype) } inline ::uint32_t FieldStore::_internal_resulttype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resulttype_; } inline void FieldStore::_internal_set_resulttype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resulttype_ = value; } // ------------------------------------------------------------------- // RelabelType // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool RelabelType::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void RelabelType::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& RelabelType::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RelabelType::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RelabelType.xpr) return _internal_xpr(); } inline void RelabelType::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RelabelType.xpr) } inline ::pg_query::Node* RelabelType::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RelabelType::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RelabelType.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* RelabelType::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* RelabelType::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.RelabelType.xpr) return _msg; } inline void RelabelType::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RelabelType.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool RelabelType::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void RelabelType::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& RelabelType::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RelabelType::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RelabelType.arg) return _internal_arg(); } inline void RelabelType::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RelabelType.arg) } inline ::pg_query::Node* RelabelType::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RelabelType::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RelabelType.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* RelabelType::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* RelabelType::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.RelabelType.arg) return _msg; } inline void RelabelType::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RelabelType.arg) } // uint32 resulttype = 3 [json_name = "resulttype"]; inline void RelabelType::clear_resulttype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resulttype_ = 0u; } inline ::uint32_t RelabelType::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.resulttype) return _internal_resulttype(); } inline void RelabelType::set_resulttype(::uint32_t value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.resulttype) } inline ::uint32_t RelabelType::_internal_resulttype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resulttype_; } inline void RelabelType::_internal_set_resulttype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resulttype_ = value; } // int32 resulttypmod = 4 [json_name = "resulttypmod"]; inline void RelabelType::clear_resulttypmod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resulttypmod_ = 0; } inline ::int32_t RelabelType::resulttypmod() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.resulttypmod) return _internal_resulttypmod(); } inline void RelabelType::set_resulttypmod(::int32_t value) { _internal_set_resulttypmod(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.resulttypmod) } inline ::int32_t RelabelType::_internal_resulttypmod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resulttypmod_; } inline void RelabelType::_internal_set_resulttypmod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resulttypmod_ = value; } // uint32 resultcollid = 5 [json_name = "resultcollid"]; inline void RelabelType::clear_resultcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resultcollid_ = 0u; } inline ::uint32_t RelabelType::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.resultcollid) return _internal_resultcollid(); } inline void RelabelType::set_resultcollid(::uint32_t value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.resultcollid) } inline ::uint32_t RelabelType::_internal_resultcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resultcollid_; } inline void RelabelType::_internal_set_resultcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resultcollid_ = value; } // .pg_query.CoercionForm relabelformat = 6 [json_name = "relabelformat"]; inline void RelabelType::clear_relabelformat() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relabelformat_ = 0; } inline ::pg_query::CoercionForm RelabelType::relabelformat() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.relabelformat) return _internal_relabelformat(); } inline void RelabelType::set_relabelformat(::pg_query::CoercionForm value) { _internal_set_relabelformat(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.relabelformat) } inline ::pg_query::CoercionForm RelabelType::_internal_relabelformat() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::CoercionForm>(_impl_.relabelformat_); } inline void RelabelType::_internal_set_relabelformat(::pg_query::CoercionForm value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.relabelformat_ = value; } // int32 location = 7 [json_name = "location"]; inline void RelabelType::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t RelabelType::location() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.location) return _internal_location(); } inline void RelabelType::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.location) } inline ::int32_t RelabelType::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void RelabelType::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // CoerceViaIO // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CoerceViaIO::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void CoerceViaIO::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& CoerceViaIO::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CoerceViaIO::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.xpr) return _internal_xpr(); } inline void CoerceViaIO::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceViaIO.xpr) } inline ::pg_query::Node* CoerceViaIO::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CoerceViaIO::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CoerceViaIO.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CoerceViaIO::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* CoerceViaIO::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.CoerceViaIO.xpr) return _msg; } inline void CoerceViaIO::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceViaIO.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool CoerceViaIO::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void CoerceViaIO::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& CoerceViaIO::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CoerceViaIO::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.arg) return _internal_arg(); } inline void CoerceViaIO::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceViaIO.arg) } inline ::pg_query::Node* CoerceViaIO::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CoerceViaIO::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CoerceViaIO.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* CoerceViaIO::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* CoerceViaIO::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.CoerceViaIO.arg) return _msg; } inline void CoerceViaIO::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceViaIO.arg) } // uint32 resulttype = 3 [json_name = "resulttype"]; inline void CoerceViaIO::clear_resulttype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resulttype_ = 0u; } inline ::uint32_t CoerceViaIO::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.resulttype) return _internal_resulttype(); } inline void CoerceViaIO::set_resulttype(::uint32_t value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.resulttype) } inline ::uint32_t CoerceViaIO::_internal_resulttype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resulttype_; } inline void CoerceViaIO::_internal_set_resulttype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resulttype_ = value; } // uint32 resultcollid = 4 [json_name = "resultcollid"]; inline void CoerceViaIO::clear_resultcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resultcollid_ = 0u; } inline ::uint32_t CoerceViaIO::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.resultcollid) return _internal_resultcollid(); } inline void CoerceViaIO::set_resultcollid(::uint32_t value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.resultcollid) } inline ::uint32_t CoerceViaIO::_internal_resultcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resultcollid_; } inline void CoerceViaIO::_internal_set_resultcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resultcollid_ = value; } // .pg_query.CoercionForm coerceformat = 5 [json_name = "coerceformat"]; inline void CoerceViaIO::clear_coerceformat() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coerceformat_ = 0; } inline ::pg_query::CoercionForm CoerceViaIO::coerceformat() const { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.coerceformat) return _internal_coerceformat(); } inline void CoerceViaIO::set_coerceformat(::pg_query::CoercionForm value) { _internal_set_coerceformat(value); // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.coerceformat) } inline ::pg_query::CoercionForm CoerceViaIO::_internal_coerceformat() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::CoercionForm>(_impl_.coerceformat_); } inline void CoerceViaIO::_internal_set_coerceformat(::pg_query::CoercionForm value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.coerceformat_ = value; } // int32 location = 6 [json_name = "location"]; inline void CoerceViaIO::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t CoerceViaIO::location() const { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.location) return _internal_location(); } inline void CoerceViaIO::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.location) } inline ::int32_t CoerceViaIO::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void CoerceViaIO::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // ArrayCoerceExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool ArrayCoerceExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void ArrayCoerceExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& ArrayCoerceExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ArrayCoerceExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.xpr) return _internal_xpr(); } inline void ArrayCoerceExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayCoerceExpr.xpr) } inline ::pg_query::Node* ArrayCoerceExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* ArrayCoerceExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ArrayCoerceExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* ArrayCoerceExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* ArrayCoerceExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.ArrayCoerceExpr.xpr) return _msg; } inline void ArrayCoerceExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayCoerceExpr.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool ArrayCoerceExpr::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void ArrayCoerceExpr::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& ArrayCoerceExpr::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ArrayCoerceExpr::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.arg) return _internal_arg(); } inline void ArrayCoerceExpr::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayCoerceExpr.arg) } inline ::pg_query::Node* ArrayCoerceExpr::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* ArrayCoerceExpr::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ArrayCoerceExpr.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* ArrayCoerceExpr::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* ArrayCoerceExpr::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.ArrayCoerceExpr.arg) return _msg; } inline void ArrayCoerceExpr::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayCoerceExpr.arg) } // .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; inline bool ArrayCoerceExpr::has_elemexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.elemexpr_ != nullptr); return value; } inline void ArrayCoerceExpr::clear_elemexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.elemexpr_ != nullptr) _impl_.elemexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& ArrayCoerceExpr::_internal_elemexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.elemexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ArrayCoerceExpr::elemexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.elemexpr) return _internal_elemexpr(); } inline void ArrayCoerceExpr::unsafe_arena_set_allocated_elemexpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.elemexpr_); } _impl_.elemexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayCoerceExpr.elemexpr) } inline ::pg_query::Node* ArrayCoerceExpr::release_elemexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.elemexpr_; _impl_.elemexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* ArrayCoerceExpr::unsafe_arena_release_elemexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ArrayCoerceExpr.elemexpr) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.elemexpr_; _impl_.elemexpr_ = nullptr; return temp; } inline ::pg_query::Node* ArrayCoerceExpr::_internal_mutable_elemexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.elemexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.elemexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.elemexpr_; } inline ::pg_query::Node* ArrayCoerceExpr::mutable_elemexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_elemexpr(); // @@protoc_insertion_point(field_mutable:pg_query.ArrayCoerceExpr.elemexpr) return _msg; } inline void ArrayCoerceExpr::set_allocated_elemexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.elemexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.elemexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayCoerceExpr.elemexpr) } // uint32 resulttype = 4 [json_name = "resulttype"]; inline void ArrayCoerceExpr::clear_resulttype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resulttype_ = 0u; } inline ::uint32_t ArrayCoerceExpr::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.resulttype) return _internal_resulttype(); } inline void ArrayCoerceExpr::set_resulttype(::uint32_t value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.resulttype) } inline ::uint32_t ArrayCoerceExpr::_internal_resulttype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resulttype_; } inline void ArrayCoerceExpr::_internal_set_resulttype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resulttype_ = value; } // int32 resulttypmod = 5 [json_name = "resulttypmod"]; inline void ArrayCoerceExpr::clear_resulttypmod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resulttypmod_ = 0; } inline ::int32_t ArrayCoerceExpr::resulttypmod() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.resulttypmod) return _internal_resulttypmod(); } inline void ArrayCoerceExpr::set_resulttypmod(::int32_t value) { _internal_set_resulttypmod(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.resulttypmod) } inline ::int32_t ArrayCoerceExpr::_internal_resulttypmod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resulttypmod_; } inline void ArrayCoerceExpr::_internal_set_resulttypmod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resulttypmod_ = value; } // uint32 resultcollid = 6 [json_name = "resultcollid"]; inline void ArrayCoerceExpr::clear_resultcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resultcollid_ = 0u; } inline ::uint32_t ArrayCoerceExpr::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.resultcollid) return _internal_resultcollid(); } inline void ArrayCoerceExpr::set_resultcollid(::uint32_t value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.resultcollid) } inline ::uint32_t ArrayCoerceExpr::_internal_resultcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resultcollid_; } inline void ArrayCoerceExpr::_internal_set_resultcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resultcollid_ = value; } // .pg_query.CoercionForm coerceformat = 7 [json_name = "coerceformat"]; inline void ArrayCoerceExpr::clear_coerceformat() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coerceformat_ = 0; } inline ::pg_query::CoercionForm ArrayCoerceExpr::coerceformat() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.coerceformat) return _internal_coerceformat(); } inline void ArrayCoerceExpr::set_coerceformat(::pg_query::CoercionForm value) { _internal_set_coerceformat(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.coerceformat) } inline ::pg_query::CoercionForm ArrayCoerceExpr::_internal_coerceformat() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::CoercionForm>(_impl_.coerceformat_); } inline void ArrayCoerceExpr::_internal_set_coerceformat(::pg_query::CoercionForm value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.coerceformat_ = value; } // int32 location = 8 [json_name = "location"]; inline void ArrayCoerceExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t ArrayCoerceExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.location) return _internal_location(); } inline void ArrayCoerceExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.location) } inline ::int32_t ArrayCoerceExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void ArrayCoerceExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // ConvertRowtypeExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool ConvertRowtypeExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void ConvertRowtypeExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& ConvertRowtypeExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ConvertRowtypeExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.xpr) return _internal_xpr(); } inline void ConvertRowtypeExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ConvertRowtypeExpr.xpr) } inline ::pg_query::Node* ConvertRowtypeExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* ConvertRowtypeExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ConvertRowtypeExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* ConvertRowtypeExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* ConvertRowtypeExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.ConvertRowtypeExpr.xpr) return _msg; } inline void ConvertRowtypeExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ConvertRowtypeExpr.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool ConvertRowtypeExpr::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void ConvertRowtypeExpr::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& ConvertRowtypeExpr::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ConvertRowtypeExpr::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.arg) return _internal_arg(); } inline void ConvertRowtypeExpr::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ConvertRowtypeExpr.arg) } inline ::pg_query::Node* ConvertRowtypeExpr::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* ConvertRowtypeExpr::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ConvertRowtypeExpr.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* ConvertRowtypeExpr::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* ConvertRowtypeExpr::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.ConvertRowtypeExpr.arg) return _msg; } inline void ConvertRowtypeExpr::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ConvertRowtypeExpr.arg) } // uint32 resulttype = 3 [json_name = "resulttype"]; inline void ConvertRowtypeExpr::clear_resulttype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resulttype_ = 0u; } inline ::uint32_t ConvertRowtypeExpr::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.resulttype) return _internal_resulttype(); } inline void ConvertRowtypeExpr::set_resulttype(::uint32_t value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.ConvertRowtypeExpr.resulttype) } inline ::uint32_t ConvertRowtypeExpr::_internal_resulttype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resulttype_; } inline void ConvertRowtypeExpr::_internal_set_resulttype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resulttype_ = value; } // .pg_query.CoercionForm convertformat = 4 [json_name = "convertformat"]; inline void ConvertRowtypeExpr::clear_convertformat() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.convertformat_ = 0; } inline ::pg_query::CoercionForm ConvertRowtypeExpr::convertformat() const { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.convertformat) return _internal_convertformat(); } inline void ConvertRowtypeExpr::set_convertformat(::pg_query::CoercionForm value) { _internal_set_convertformat(value); // @@protoc_insertion_point(field_set:pg_query.ConvertRowtypeExpr.convertformat) } inline ::pg_query::CoercionForm ConvertRowtypeExpr::_internal_convertformat() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::CoercionForm>(_impl_.convertformat_); } inline void ConvertRowtypeExpr::_internal_set_convertformat(::pg_query::CoercionForm value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.convertformat_ = value; } // int32 location = 5 [json_name = "location"]; inline void ConvertRowtypeExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t ConvertRowtypeExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.location) return _internal_location(); } inline void ConvertRowtypeExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ConvertRowtypeExpr.location) } inline ::int32_t ConvertRowtypeExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void ConvertRowtypeExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // CollateExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CollateExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void CollateExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& CollateExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CollateExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CollateExpr.xpr) return _internal_xpr(); } inline void CollateExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CollateExpr.xpr) } inline ::pg_query::Node* CollateExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CollateExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CollateExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CollateExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* CollateExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.CollateExpr.xpr) return _msg; } inline void CollateExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CollateExpr.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool CollateExpr::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void CollateExpr::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& CollateExpr::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CollateExpr::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CollateExpr.arg) return _internal_arg(); } inline void CollateExpr::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CollateExpr.arg) } inline ::pg_query::Node* CollateExpr::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CollateExpr::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CollateExpr.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* CollateExpr::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* CollateExpr::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.CollateExpr.arg) return _msg; } inline void CollateExpr::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CollateExpr.arg) } // uint32 coll_oid = 3 [json_name = "collOid"]; inline void CollateExpr::clear_coll_oid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coll_oid_ = 0u; } inline ::uint32_t CollateExpr::coll_oid() const { // @@protoc_insertion_point(field_get:pg_query.CollateExpr.coll_oid) return _internal_coll_oid(); } inline void CollateExpr::set_coll_oid(::uint32_t value) { _internal_set_coll_oid(value); // @@protoc_insertion_point(field_set:pg_query.CollateExpr.coll_oid) } inline ::uint32_t CollateExpr::_internal_coll_oid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.coll_oid_; } inline void CollateExpr::_internal_set_coll_oid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.coll_oid_ = value; } // int32 location = 4 [json_name = "location"]; inline void CollateExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t CollateExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.CollateExpr.location) return _internal_location(); } inline void CollateExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CollateExpr.location) } inline ::int32_t CollateExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void CollateExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // CaseExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CaseExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void CaseExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& CaseExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CaseExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.xpr) return _internal_xpr(); } inline void CaseExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseExpr.xpr) } inline ::pg_query::Node* CaseExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CaseExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CaseExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CaseExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* CaseExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.CaseExpr.xpr) return _msg; } inline void CaseExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CaseExpr.xpr) } // uint32 casetype = 2 [json_name = "casetype"]; inline void CaseExpr::clear_casetype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.casetype_ = 0u; } inline ::uint32_t CaseExpr::casetype() const { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.casetype) return _internal_casetype(); } inline void CaseExpr::set_casetype(::uint32_t value) { _internal_set_casetype(value); // @@protoc_insertion_point(field_set:pg_query.CaseExpr.casetype) } inline ::uint32_t CaseExpr::_internal_casetype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.casetype_; } inline void CaseExpr::_internal_set_casetype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.casetype_ = value; } // uint32 casecollid = 3 [json_name = "casecollid"]; inline void CaseExpr::clear_casecollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.casecollid_ = 0u; } inline ::uint32_t CaseExpr::casecollid() const { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.casecollid) return _internal_casecollid(); } inline void CaseExpr::set_casecollid(::uint32_t value) { _internal_set_casecollid(value); // @@protoc_insertion_point(field_set:pg_query.CaseExpr.casecollid) } inline ::uint32_t CaseExpr::_internal_casecollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.casecollid_; } inline void CaseExpr::_internal_set_casecollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.casecollid_ = value; } // .pg_query.Node arg = 4 [json_name = "arg"]; inline bool CaseExpr::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void CaseExpr::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& CaseExpr::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CaseExpr::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.arg) return _internal_arg(); } inline void CaseExpr::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseExpr.arg) } inline ::pg_query::Node* CaseExpr::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CaseExpr::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CaseExpr.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* CaseExpr::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* CaseExpr::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.CaseExpr.arg) return _msg; } inline void CaseExpr::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_args().size(); } inline int CaseExpr::args_size() const { return _internal_args_size(); } inline void CaseExpr::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* CaseExpr::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CaseExpr.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CaseExpr::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CaseExpr.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& CaseExpr::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.args) return _internal_args().Get(index); } inline ::pg_query::Node* CaseExpr::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.CaseExpr.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CaseExpr::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CaseExpr.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CaseExpr::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CaseExpr::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // .pg_query.Node defresult = 6 [json_name = "defresult"]; inline bool CaseExpr::has_defresult() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.defresult_ != nullptr); return value; } inline void CaseExpr::clear_defresult() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.defresult_ != nullptr) _impl_.defresult_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& CaseExpr::_internal_defresult() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.defresult_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CaseExpr::defresult() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.defresult) return _internal_defresult(); } inline void CaseExpr::unsafe_arena_set_allocated_defresult(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.defresult_); } _impl_.defresult_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseExpr.defresult) } inline ::pg_query::Node* CaseExpr::release_defresult() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.defresult_; _impl_.defresult_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CaseExpr::unsafe_arena_release_defresult() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CaseExpr.defresult) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.defresult_; _impl_.defresult_ = nullptr; return temp; } inline ::pg_query::Node* CaseExpr::_internal_mutable_defresult() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.defresult_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.defresult_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.defresult_; } inline ::pg_query::Node* CaseExpr::mutable_defresult() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_defresult(); // @@protoc_insertion_point(field_mutable:pg_query.CaseExpr.defresult) return _msg; } inline void CaseExpr::set_allocated_defresult(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.defresult_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.defresult_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CaseExpr.defresult) } // int32 location = 7 [json_name = "location"]; inline void CaseExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t CaseExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.location) return _internal_location(); } inline void CaseExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CaseExpr.location) } inline ::int32_t CaseExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void CaseExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // CaseWhen // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CaseWhen::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void CaseWhen::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& CaseWhen::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CaseWhen::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CaseWhen.xpr) return _internal_xpr(); } inline void CaseWhen::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseWhen.xpr) } inline ::pg_query::Node* CaseWhen::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CaseWhen::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CaseWhen.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CaseWhen::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* CaseWhen::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.CaseWhen.xpr) return _msg; } inline void CaseWhen::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CaseWhen.xpr) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool CaseWhen::has_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.expr_ != nullptr); return value; } inline void CaseWhen::clear_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.expr_ != nullptr) _impl_.expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& CaseWhen::_internal_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CaseWhen::expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CaseWhen.expr) return _internal_expr(); } inline void CaseWhen::unsafe_arena_set_allocated_expr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expr_); } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseWhen.expr) } inline ::pg_query::Node* CaseWhen::release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CaseWhen::unsafe_arena_release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CaseWhen.expr) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* CaseWhen::_internal_mutable_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.expr_; } inline ::pg_query::Node* CaseWhen::mutable_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_expr(); // @@protoc_insertion_point(field_mutable:pg_query.CaseWhen.expr) return _msg; } inline void CaseWhen::set_allocated_expr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CaseWhen.expr) } // .pg_query.Node result = 3 [json_name = "result"]; inline bool CaseWhen::has_result() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.result_ != nullptr); return value; } inline void CaseWhen::clear_result() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.result_ != nullptr) _impl_.result_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& CaseWhen::_internal_result() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.result_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CaseWhen::result() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CaseWhen.result) return _internal_result(); } inline void CaseWhen::unsafe_arena_set_allocated_result(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.result_); } _impl_.result_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseWhen.result) } inline ::pg_query::Node* CaseWhen::release_result() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.result_; _impl_.result_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CaseWhen::unsafe_arena_release_result() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CaseWhen.result) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.result_; _impl_.result_ = nullptr; return temp; } inline ::pg_query::Node* CaseWhen::_internal_mutable_result() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.result_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.result_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.result_; } inline ::pg_query::Node* CaseWhen::mutable_result() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_result(); // @@protoc_insertion_point(field_mutable:pg_query.CaseWhen.result) return _msg; } inline void CaseWhen::set_allocated_result(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.result_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.result_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CaseWhen.result) } // int32 location = 4 [json_name = "location"]; inline void CaseWhen::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t CaseWhen::location() const { // @@protoc_insertion_point(field_get:pg_query.CaseWhen.location) return _internal_location(); } inline void CaseWhen::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CaseWhen.location) } inline ::int32_t CaseWhen::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void CaseWhen::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // CaseTestExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CaseTestExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void CaseTestExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& CaseTestExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CaseTestExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.xpr) return _internal_xpr(); } inline void CaseTestExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseTestExpr.xpr) } inline ::pg_query::Node* CaseTestExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CaseTestExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CaseTestExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CaseTestExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* CaseTestExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.CaseTestExpr.xpr) return _msg; } inline void CaseTestExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CaseTestExpr.xpr) } // uint32 type_id = 2 [json_name = "typeId"]; inline void CaseTestExpr::clear_type_id() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_id_ = 0u; } inline ::uint32_t CaseTestExpr::type_id() const { // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.type_id) return _internal_type_id(); } inline void CaseTestExpr::set_type_id(::uint32_t value) { _internal_set_type_id(value); // @@protoc_insertion_point(field_set:pg_query.CaseTestExpr.type_id) } inline ::uint32_t CaseTestExpr::_internal_type_id() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_id_; } inline void CaseTestExpr::_internal_set_type_id(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.type_id_ = value; } // int32 type_mod = 3 [json_name = "typeMod"]; inline void CaseTestExpr::clear_type_mod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_mod_ = 0; } inline ::int32_t CaseTestExpr::type_mod() const { // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.type_mod) return _internal_type_mod(); } inline void CaseTestExpr::set_type_mod(::int32_t value) { _internal_set_type_mod(value); // @@protoc_insertion_point(field_set:pg_query.CaseTestExpr.type_mod) } inline ::int32_t CaseTestExpr::_internal_type_mod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_mod_; } inline void CaseTestExpr::_internal_set_type_mod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.type_mod_ = value; } // uint32 collation = 4 [json_name = "collation"]; inline void CaseTestExpr::clear_collation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.collation_ = 0u; } inline ::uint32_t CaseTestExpr::collation() const { // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.collation) return _internal_collation(); } inline void CaseTestExpr::set_collation(::uint32_t value) { _internal_set_collation(value); // @@protoc_insertion_point(field_set:pg_query.CaseTestExpr.collation) } inline ::uint32_t CaseTestExpr::_internal_collation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.collation_; } inline void CaseTestExpr::_internal_set_collation(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.collation_ = value; } // ------------------------------------------------------------------- // ArrayExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool ArrayExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void ArrayExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& ArrayExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ArrayExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.xpr) return _internal_xpr(); } inline void ArrayExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayExpr.xpr) } inline ::pg_query::Node* ArrayExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* ArrayExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ArrayExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* ArrayExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* ArrayExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.ArrayExpr.xpr) return _msg; } inline void ArrayExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayExpr.xpr) } // uint32 array_typeid = 2 [json_name = "array_typeid"]; inline void ArrayExpr::clear_array_typeid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.array_typeid_ = 0u; } inline ::uint32_t ArrayExpr::array_typeid() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.array_typeid) return _internal_array_typeid(); } inline void ArrayExpr::set_array_typeid(::uint32_t value) { _internal_set_array_typeid(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.array_typeid) } inline ::uint32_t ArrayExpr::_internal_array_typeid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.array_typeid_; } inline void ArrayExpr::_internal_set_array_typeid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.array_typeid_ = value; } // uint32 array_collid = 3 [json_name = "array_collid"]; inline void ArrayExpr::clear_array_collid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.array_collid_ = 0u; } inline ::uint32_t ArrayExpr::array_collid() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.array_collid) return _internal_array_collid(); } inline void ArrayExpr::set_array_collid(::uint32_t value) { _internal_set_array_collid(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.array_collid) } inline ::uint32_t ArrayExpr::_internal_array_collid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.array_collid_; } inline void ArrayExpr::_internal_set_array_collid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.array_collid_ = value; } // uint32 element_typeid = 4 [json_name = "element_typeid"]; inline void ArrayExpr::clear_element_typeid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.element_typeid_ = 0u; } inline ::uint32_t ArrayExpr::element_typeid() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.element_typeid) return _internal_element_typeid(); } inline void ArrayExpr::set_element_typeid(::uint32_t value) { _internal_set_element_typeid(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.element_typeid) } inline ::uint32_t ArrayExpr::_internal_element_typeid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.element_typeid_; } inline void ArrayExpr::_internal_set_element_typeid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.element_typeid_ = value; } // repeated .pg_query.Node elements = 5 [json_name = "elements"]; inline int ArrayExpr::_internal_elements_size() const { return _internal_elements().size(); } inline int ArrayExpr::elements_size() const { return _internal_elements_size(); } inline void ArrayExpr::clear_elements() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.elements_.Clear(); } inline ::pg_query::Node* ArrayExpr::mutable_elements(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ArrayExpr.elements) return _internal_mutable_elements()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ArrayExpr::mutable_elements() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ArrayExpr.elements) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_elements(); } inline const ::pg_query::Node& ArrayExpr::elements(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.elements) return _internal_elements().Get(index); } inline ::pg_query::Node* ArrayExpr::add_elements() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_elements()->Add(); // @@protoc_insertion_point(field_add:pg_query.ArrayExpr.elements) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ArrayExpr::elements() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ArrayExpr.elements) return _internal_elements(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ArrayExpr::_internal_elements() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.elements_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ArrayExpr::_internal_mutable_elements() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.elements_; } // bool multidims = 6 [json_name = "multidims"]; inline void ArrayExpr::clear_multidims() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.multidims_ = false; } inline bool ArrayExpr::multidims() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.multidims) return _internal_multidims(); } inline void ArrayExpr::set_multidims(bool value) { _internal_set_multidims(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.multidims) } inline bool ArrayExpr::_internal_multidims() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.multidims_; } inline void ArrayExpr::_internal_set_multidims(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.multidims_ = value; } // int32 location = 7 [json_name = "location"]; inline void ArrayExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t ArrayExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.location) return _internal_location(); } inline void ArrayExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.location) } inline ::int32_t ArrayExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void ArrayExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // RowExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool RowExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void RowExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& RowExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RowExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RowExpr.xpr) return _internal_xpr(); } inline void RowExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RowExpr.xpr) } inline ::pg_query::Node* RowExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RowExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RowExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* RowExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* RowExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.RowExpr.xpr) return _msg; } inline void RowExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_args().size(); } inline int RowExpr::args_size() const { return _internal_args_size(); } inline void RowExpr::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* RowExpr::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RowExpr.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RowExpr::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RowExpr.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& RowExpr::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RowExpr.args) return _internal_args().Get(index); } inline ::pg_query::Node* RowExpr::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.RowExpr.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RowExpr::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RowExpr.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RowExpr::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RowExpr::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // uint32 row_typeid = 3 [json_name = "row_typeid"]; inline void RowExpr::clear_row_typeid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.row_typeid_ = 0u; } inline ::uint32_t RowExpr::row_typeid() const { // @@protoc_insertion_point(field_get:pg_query.RowExpr.row_typeid) return _internal_row_typeid(); } inline void RowExpr::set_row_typeid(::uint32_t value) { _internal_set_row_typeid(value); // @@protoc_insertion_point(field_set:pg_query.RowExpr.row_typeid) } inline ::uint32_t RowExpr::_internal_row_typeid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.row_typeid_; } inline void RowExpr::_internal_set_row_typeid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.row_typeid_ = value; } // .pg_query.CoercionForm row_format = 4 [json_name = "row_format"]; inline void RowExpr::clear_row_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.row_format_ = 0; } 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::set_row_format(::pg_query::CoercionForm value) { _internal_set_row_format(value); // @@protoc_insertion_point(field_set:pg_query.RowExpr.row_format) } inline ::pg_query::CoercionForm RowExpr::_internal_row_format() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::CoercionForm>(_impl_.row_format_); } inline void RowExpr::_internal_set_row_format(::pg_query::CoercionForm value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.row_format_ = value; } // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; inline int RowExpr::_internal_colnames_size() const { return _internal_colnames().size(); } inline int RowExpr::colnames_size() const { return _internal_colnames_size(); } inline void RowExpr::clear_colnames() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.colnames_.Clear(); } inline ::pg_query::Node* RowExpr::mutable_colnames(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RowExpr.colnames) return _internal_mutable_colnames()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RowExpr::mutable_colnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RowExpr.colnames) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_colnames(); } inline const ::pg_query::Node& RowExpr::colnames(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RowExpr.colnames) return _internal_colnames().Get(index); } inline ::pg_query::Node* RowExpr::add_colnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_colnames()->Add(); // @@protoc_insertion_point(field_add:pg_query.RowExpr.colnames) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RowExpr::colnames() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RowExpr.colnames) return _internal_colnames(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RowExpr::_internal_colnames() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.colnames_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RowExpr::_internal_mutable_colnames() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.colnames_; } // int32 location = 6 [json_name = "location"]; inline void RowExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t RowExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.RowExpr.location) return _internal_location(); } inline void RowExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RowExpr.location) } inline ::int32_t RowExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void RowExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // RowCompareExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool RowCompareExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void RowCompareExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& RowCompareExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RowCompareExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.xpr) return _internal_xpr(); } inline void RowCompareExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RowCompareExpr.xpr) } inline ::pg_query::Node* RowCompareExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RowCompareExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RowCompareExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* RowCompareExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* RowCompareExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.xpr) return _msg; } inline void RowCompareExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RowCompareExpr.xpr) } // .pg_query.RowCompareType rctype = 2 [json_name = "rctype"]; inline void RowCompareExpr::clear_rctype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rctype_ = 0; } inline ::pg_query::RowCompareType RowCompareExpr::rctype() const { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.rctype) return _internal_rctype(); } inline void RowCompareExpr::set_rctype(::pg_query::RowCompareType value) { _internal_set_rctype(value); // @@protoc_insertion_point(field_set:pg_query.RowCompareExpr.rctype) } inline ::pg_query::RowCompareType RowCompareExpr::_internal_rctype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::RowCompareType>(_impl_.rctype_); } inline void RowCompareExpr::_internal_set_rctype(::pg_query::RowCompareType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.rctype_ = value; } // repeated .pg_query.Node opnos = 3 [json_name = "opnos"]; inline int RowCompareExpr::_internal_opnos_size() const { return _internal_opnos().size(); } inline int RowCompareExpr::opnos_size() const { return _internal_opnos_size(); } inline void RowCompareExpr::clear_opnos() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opnos_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_opnos(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.opnos) return _internal_mutable_opnos()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RowCompareExpr::mutable_opnos() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.opnos) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_opnos(); } inline const ::pg_query::Node& RowCompareExpr::opnos(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.opnos) return _internal_opnos().Get(index); } inline ::pg_query::Node* RowCompareExpr::add_opnos() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_opnos()->Add(); // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.opnos) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RowCompareExpr::opnos() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.opnos) return _internal_opnos(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RowCompareExpr::_internal_opnos() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opnos_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RowCompareExpr::_internal_mutable_opnos() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.opnos_; } // repeated .pg_query.Node opfamilies = 4 [json_name = "opfamilies"]; inline int RowCompareExpr::_internal_opfamilies_size() const { return _internal_opfamilies().size(); } inline int RowCompareExpr::opfamilies_size() const { return _internal_opfamilies_size(); } inline void RowCompareExpr::clear_opfamilies() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opfamilies_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_opfamilies(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.opfamilies) return _internal_mutable_opfamilies()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RowCompareExpr::mutable_opfamilies() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.opfamilies) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_opfamilies(); } inline const ::pg_query::Node& RowCompareExpr::opfamilies(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.opfamilies) return _internal_opfamilies().Get(index); } inline ::pg_query::Node* RowCompareExpr::add_opfamilies() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_opfamilies()->Add(); // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.opfamilies) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RowCompareExpr::opfamilies() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.opfamilies) return _internal_opfamilies(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RowCompareExpr::_internal_opfamilies() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opfamilies_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RowCompareExpr::_internal_mutable_opfamilies() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.opfamilies_; } // repeated .pg_query.Node inputcollids = 5 [json_name = "inputcollids"]; inline int RowCompareExpr::_internal_inputcollids_size() const { return _internal_inputcollids().size(); } inline int RowCompareExpr::inputcollids_size() const { return _internal_inputcollids_size(); } inline void RowCompareExpr::clear_inputcollids() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inputcollids_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_inputcollids(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.inputcollids) return _internal_mutable_inputcollids()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RowCompareExpr::mutable_inputcollids() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.inputcollids) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_inputcollids(); } inline const ::pg_query::Node& RowCompareExpr::inputcollids(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.inputcollids) return _internal_inputcollids().Get(index); } inline ::pg_query::Node* RowCompareExpr::add_inputcollids() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_inputcollids()->Add(); // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.inputcollids) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RowCompareExpr::inputcollids() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.inputcollids) return _internal_inputcollids(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RowCompareExpr::_internal_inputcollids() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inputcollids_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RowCompareExpr::_internal_mutable_inputcollids() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.inputcollids_; } // repeated .pg_query.Node largs = 6 [json_name = "largs"]; inline int RowCompareExpr::_internal_largs_size() const { return _internal_largs().size(); } inline int RowCompareExpr::largs_size() const { return _internal_largs_size(); } inline void RowCompareExpr::clear_largs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.largs_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_largs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.largs) return _internal_mutable_largs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RowCompareExpr::mutable_largs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.largs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_largs(); } inline const ::pg_query::Node& RowCompareExpr::largs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.largs) return _internal_largs().Get(index); } inline ::pg_query::Node* RowCompareExpr::add_largs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_largs()->Add(); // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.largs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RowCompareExpr::largs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.largs) return _internal_largs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RowCompareExpr::_internal_largs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.largs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RowCompareExpr::_internal_mutable_largs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.largs_; } // repeated .pg_query.Node rargs = 7 [json_name = "rargs"]; inline int RowCompareExpr::_internal_rargs_size() const { return _internal_rargs().size(); } inline int RowCompareExpr::rargs_size() const { return _internal_rargs_size(); } inline void RowCompareExpr::clear_rargs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rargs_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_rargs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.rargs) return _internal_mutable_rargs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RowCompareExpr::mutable_rargs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.rargs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_rargs(); } inline const ::pg_query::Node& RowCompareExpr::rargs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.rargs) return _internal_rargs().Get(index); } inline ::pg_query::Node* RowCompareExpr::add_rargs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_rargs()->Add(); // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.rargs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RowCompareExpr::rargs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.rargs) return _internal_rargs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RowCompareExpr::_internal_rargs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.rargs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RowCompareExpr::_internal_mutable_rargs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.rargs_; } // ------------------------------------------------------------------- // CoalesceExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CoalesceExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void CoalesceExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& CoalesceExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CoalesceExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.xpr) return _internal_xpr(); } inline void CoalesceExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoalesceExpr.xpr) } inline ::pg_query::Node* CoalesceExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CoalesceExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CoalesceExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CoalesceExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* CoalesceExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.CoalesceExpr.xpr) return _msg; } inline void CoalesceExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CoalesceExpr.xpr) } // uint32 coalescetype = 2 [json_name = "coalescetype"]; inline void CoalesceExpr::clear_coalescetype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coalescetype_ = 0u; } inline ::uint32_t CoalesceExpr::coalescetype() const { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.coalescetype) return _internal_coalescetype(); } inline void CoalesceExpr::set_coalescetype(::uint32_t value) { _internal_set_coalescetype(value); // @@protoc_insertion_point(field_set:pg_query.CoalesceExpr.coalescetype) } inline ::uint32_t CoalesceExpr::_internal_coalescetype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.coalescetype_; } inline void CoalesceExpr::_internal_set_coalescetype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.coalescetype_ = value; } // uint32 coalescecollid = 3 [json_name = "coalescecollid"]; inline void CoalesceExpr::clear_coalescecollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coalescecollid_ = 0u; } inline ::uint32_t CoalesceExpr::coalescecollid() const { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.coalescecollid) return _internal_coalescecollid(); } inline void CoalesceExpr::set_coalescecollid(::uint32_t value) { _internal_set_coalescecollid(value); // @@protoc_insertion_point(field_set:pg_query.CoalesceExpr.coalescecollid) } inline ::uint32_t CoalesceExpr::_internal_coalescecollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.coalescecollid_; } inline void CoalesceExpr::_internal_set_coalescecollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.coalescecollid_ = value; } // repeated .pg_query.Node args = 4 [json_name = "args"]; inline int CoalesceExpr::_internal_args_size() const { return _internal_args().size(); } inline int CoalesceExpr::args_size() const { return _internal_args_size(); } inline void CoalesceExpr::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* CoalesceExpr::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CoalesceExpr.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CoalesceExpr::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CoalesceExpr.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& CoalesceExpr::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.args) return _internal_args().Get(index); } inline ::pg_query::Node* CoalesceExpr::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.CoalesceExpr.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CoalesceExpr::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CoalesceExpr.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CoalesceExpr::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CoalesceExpr::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // int32 location = 5 [json_name = "location"]; inline void CoalesceExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t CoalesceExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.location) return _internal_location(); } inline void CoalesceExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CoalesceExpr.location) } inline ::int32_t CoalesceExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void CoalesceExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // MinMaxExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool MinMaxExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void MinMaxExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& MinMaxExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& MinMaxExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.xpr) return _internal_xpr(); } inline void MinMaxExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MinMaxExpr.xpr) } inline ::pg_query::Node* MinMaxExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* MinMaxExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.MinMaxExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* MinMaxExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* MinMaxExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.MinMaxExpr.xpr) return _msg; } inline void MinMaxExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.MinMaxExpr.xpr) } // uint32 minmaxtype = 2 [json_name = "minmaxtype"]; inline void MinMaxExpr::clear_minmaxtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.minmaxtype_ = 0u; } inline ::uint32_t MinMaxExpr::minmaxtype() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.minmaxtype) return _internal_minmaxtype(); } inline void MinMaxExpr::set_minmaxtype(::uint32_t value) { _internal_set_minmaxtype(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.minmaxtype) } inline ::uint32_t MinMaxExpr::_internal_minmaxtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.minmaxtype_; } inline void MinMaxExpr::_internal_set_minmaxtype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.minmaxtype_ = value; } // uint32 minmaxcollid = 3 [json_name = "minmaxcollid"]; inline void MinMaxExpr::clear_minmaxcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.minmaxcollid_ = 0u; } inline ::uint32_t MinMaxExpr::minmaxcollid() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.minmaxcollid) return _internal_minmaxcollid(); } inline void MinMaxExpr::set_minmaxcollid(::uint32_t value) { _internal_set_minmaxcollid(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.minmaxcollid) } inline ::uint32_t MinMaxExpr::_internal_minmaxcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.minmaxcollid_; } inline void MinMaxExpr::_internal_set_minmaxcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.minmaxcollid_ = value; } // uint32 inputcollid = 4 [json_name = "inputcollid"]; inline void MinMaxExpr::clear_inputcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inputcollid_ = 0u; } inline ::uint32_t MinMaxExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.inputcollid) return _internal_inputcollid(); } inline void MinMaxExpr::set_inputcollid(::uint32_t value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.inputcollid) } inline ::uint32_t MinMaxExpr::_internal_inputcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inputcollid_; } inline void MinMaxExpr::_internal_set_inputcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inputcollid_ = value; } // .pg_query.MinMaxOp op = 5 [json_name = "op"]; inline void MinMaxExpr::clear_op() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.op_ = 0; } inline ::pg_query::MinMaxOp MinMaxExpr::op() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.op) return _internal_op(); } inline void MinMaxExpr::set_op(::pg_query::MinMaxOp value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.op) } inline ::pg_query::MinMaxOp MinMaxExpr::_internal_op() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::MinMaxOp>(_impl_.op_); } inline void MinMaxExpr::_internal_set_op(::pg_query::MinMaxOp value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.op_ = value; } // repeated .pg_query.Node args = 6 [json_name = "args"]; inline int MinMaxExpr::_internal_args_size() const { return _internal_args().size(); } inline int MinMaxExpr::args_size() const { return _internal_args_size(); } inline void MinMaxExpr::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* MinMaxExpr::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.MinMaxExpr.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* MinMaxExpr::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.MinMaxExpr.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& MinMaxExpr::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.args) return _internal_args().Get(index); } inline ::pg_query::Node* MinMaxExpr::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.MinMaxExpr.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& MinMaxExpr::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.MinMaxExpr.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& MinMaxExpr::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* MinMaxExpr::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // int32 location = 7 [json_name = "location"]; inline void MinMaxExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t MinMaxExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.location) return _internal_location(); } inline void MinMaxExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.location) } inline ::int32_t MinMaxExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void MinMaxExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // SQLValueFunction // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SQLValueFunction::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void SQLValueFunction::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& SQLValueFunction::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SQLValueFunction::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.xpr) return _internal_xpr(); } inline void SQLValueFunction::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SQLValueFunction.xpr) } inline ::pg_query::Node* SQLValueFunction::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SQLValueFunction::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SQLValueFunction.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* SQLValueFunction::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* SQLValueFunction::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.SQLValueFunction.xpr) return _msg; } inline void SQLValueFunction::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.SQLValueFunction.xpr) } // .pg_query.SQLValueFunctionOp op = 2 [json_name = "op"]; inline void SQLValueFunction::clear_op() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.op_ = 0; } inline ::pg_query::SQLValueFunctionOp SQLValueFunction::op() const { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.op) return _internal_op(); } inline void SQLValueFunction::set_op(::pg_query::SQLValueFunctionOp value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.op) } inline ::pg_query::SQLValueFunctionOp SQLValueFunction::_internal_op() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::SQLValueFunctionOp>(_impl_.op_); } inline void SQLValueFunction::_internal_set_op(::pg_query::SQLValueFunctionOp value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.op_ = value; } // uint32 type = 3 [json_name = "type"]; inline void SQLValueFunction::clear_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_ = 0u; } inline ::uint32_t SQLValueFunction::type() const { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.type) return _internal_type(); } inline void SQLValueFunction::set_type(::uint32_t value) { _internal_set_type(value); // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.type) } inline ::uint32_t SQLValueFunction::_internal_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_; } inline void SQLValueFunction::_internal_set_type(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.type_ = value; } // int32 typmod = 4 [json_name = "typmod"]; inline void SQLValueFunction::clear_typmod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.typmod_ = 0; } inline ::int32_t SQLValueFunction::typmod() const { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.typmod) return _internal_typmod(); } inline void SQLValueFunction::set_typmod(::int32_t value) { _internal_set_typmod(value); // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.typmod) } inline ::int32_t SQLValueFunction::_internal_typmod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.typmod_; } inline void SQLValueFunction::_internal_set_typmod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.typmod_ = value; } // int32 location = 5 [json_name = "location"]; inline void SQLValueFunction::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t SQLValueFunction::location() const { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.location) return _internal_location(); } inline void SQLValueFunction::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.location) } inline ::int32_t SQLValueFunction::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void SQLValueFunction::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // XmlExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool XmlExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void XmlExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& XmlExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& XmlExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.xpr) return _internal_xpr(); } inline void XmlExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.XmlExpr.xpr) } inline ::pg_query::Node* XmlExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* XmlExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.XmlExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* XmlExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* XmlExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.xpr) return _msg; } inline void XmlExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.XmlExpr.xpr) } // .pg_query.XmlExprOp op = 2 [json_name = "op"]; inline void XmlExpr::clear_op() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.op_ = 0; } inline ::pg_query::XmlExprOp XmlExpr::op() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.op) return _internal_op(); } inline void XmlExpr::set_op(::pg_query::XmlExprOp value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.op) } inline ::pg_query::XmlExprOp XmlExpr::_internal_op() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::XmlExprOp>(_impl_.op_); } inline void XmlExpr::_internal_set_op(::pg_query::XmlExprOp value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.op_ = value; } // string name = 3 [json_name = "name"]; inline void XmlExpr::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& XmlExpr::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void XmlExpr::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.name) } inline std::string* XmlExpr::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.name) return _s; } inline const std::string& XmlExpr::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void XmlExpr::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* XmlExpr::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* XmlExpr::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.XmlExpr.name) return _impl_.name_.Release(); } inline void XmlExpr::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_named_args().size(); } inline int XmlExpr::named_args_size() const { return _internal_named_args_size(); } inline void XmlExpr::clear_named_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.named_args_.Clear(); } inline ::pg_query::Node* XmlExpr::mutable_named_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.named_args) return _internal_mutable_named_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* XmlExpr::mutable_named_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.XmlExpr.named_args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_named_args(); } inline const ::pg_query::Node& XmlExpr::named_args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.named_args) return _internal_named_args().Get(index); } inline ::pg_query::Node* XmlExpr::add_named_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_named_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.XmlExpr.named_args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& XmlExpr::named_args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.XmlExpr.named_args) return _internal_named_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& XmlExpr::_internal_named_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.named_args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* XmlExpr::_internal_mutable_named_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.named_args_; } // repeated .pg_query.Node arg_names = 5 [json_name = "arg_names"]; inline int XmlExpr::_internal_arg_names_size() const { return _internal_arg_names().size(); } inline int XmlExpr::arg_names_size() const { return _internal_arg_names_size(); } inline void XmlExpr::clear_arg_names() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.arg_names_.Clear(); } inline ::pg_query::Node* XmlExpr::mutable_arg_names(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.arg_names) return _internal_mutable_arg_names()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* XmlExpr::mutable_arg_names() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.XmlExpr.arg_names) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_arg_names(); } inline const ::pg_query::Node& XmlExpr::arg_names(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.arg_names) return _internal_arg_names().Get(index); } inline ::pg_query::Node* XmlExpr::add_arg_names() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_arg_names()->Add(); // @@protoc_insertion_point(field_add:pg_query.XmlExpr.arg_names) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& XmlExpr::arg_names() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.XmlExpr.arg_names) return _internal_arg_names(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& XmlExpr::_internal_arg_names() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.arg_names_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* XmlExpr::_internal_mutable_arg_names() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.arg_names_; } // repeated .pg_query.Node args = 6 [json_name = "args"]; inline int XmlExpr::_internal_args_size() const { return _internal_args().size(); } inline int XmlExpr::args_size() const { return _internal_args_size(); } inline void XmlExpr::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* XmlExpr::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* XmlExpr::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.XmlExpr.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& XmlExpr::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.args) return _internal_args().Get(index); } inline ::pg_query::Node* XmlExpr::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.XmlExpr.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& XmlExpr::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.XmlExpr.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& XmlExpr::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* XmlExpr::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // .pg_query.XmlOptionType xmloption = 7 [json_name = "xmloption"]; inline void XmlExpr::clear_xmloption() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.xmloption_ = 0; } inline ::pg_query::XmlOptionType XmlExpr::xmloption() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.xmloption) return _internal_xmloption(); } inline void XmlExpr::set_xmloption(::pg_query::XmlOptionType value) { _internal_set_xmloption(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.xmloption) } inline ::pg_query::XmlOptionType XmlExpr::_internal_xmloption() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::XmlOptionType>(_impl_.xmloption_); } inline void XmlExpr::_internal_set_xmloption(::pg_query::XmlOptionType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.xmloption_ = value; } // bool indent = 8 [json_name = "indent"]; inline void XmlExpr::clear_indent() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.indent_ = false; } inline bool XmlExpr::indent() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.indent) return _internal_indent(); } inline void XmlExpr::set_indent(bool value) { _internal_set_indent(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.indent) } inline bool XmlExpr::_internal_indent() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.indent_; } inline void XmlExpr::_internal_set_indent(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.indent_ = value; } // uint32 type = 9 [json_name = "type"]; inline void XmlExpr::clear_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_ = 0u; } inline ::uint32_t XmlExpr::type() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.type) return _internal_type(); } inline void XmlExpr::set_type(::uint32_t value) { _internal_set_type(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.type) } inline ::uint32_t XmlExpr::_internal_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_; } inline void XmlExpr::_internal_set_type(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.type_ = value; } // int32 typmod = 10 [json_name = "typmod"]; inline void XmlExpr::clear_typmod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.typmod_ = 0; } inline ::int32_t XmlExpr::typmod() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.typmod) return _internal_typmod(); } inline void XmlExpr::set_typmod(::int32_t value) { _internal_set_typmod(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.typmod) } inline ::int32_t XmlExpr::_internal_typmod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.typmod_; } inline void XmlExpr::_internal_set_typmod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.typmod_ = value; } // int32 location = 11 [json_name = "location"]; inline void XmlExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t XmlExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.location) return _internal_location(); } inline void XmlExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.location) } inline ::int32_t XmlExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void XmlExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonFormat // .pg_query.JsonFormatType format_type = 1 [json_name = "format_type"]; inline void JsonFormat::clear_format_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.format_type_ = 0; } inline ::pg_query::JsonFormatType JsonFormat::format_type() const { // @@protoc_insertion_point(field_get:pg_query.JsonFormat.format_type) return _internal_format_type(); } inline void JsonFormat::set_format_type(::pg_query::JsonFormatType value) { _internal_set_format_type(value); // @@protoc_insertion_point(field_set:pg_query.JsonFormat.format_type) } inline ::pg_query::JsonFormatType JsonFormat::_internal_format_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JsonFormatType>(_impl_.format_type_); } inline void JsonFormat::_internal_set_format_type(::pg_query::JsonFormatType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.format_type_ = value; } // .pg_query.JsonEncoding encoding = 2 [json_name = "encoding"]; inline void JsonFormat::clear_encoding() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.encoding_ = 0; } inline ::pg_query::JsonEncoding JsonFormat::encoding() const { // @@protoc_insertion_point(field_get:pg_query.JsonFormat.encoding) return _internal_encoding(); } inline void JsonFormat::set_encoding(::pg_query::JsonEncoding value) { _internal_set_encoding(value); // @@protoc_insertion_point(field_set:pg_query.JsonFormat.encoding) } inline ::pg_query::JsonEncoding JsonFormat::_internal_encoding() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JsonEncoding>(_impl_.encoding_); } inline void JsonFormat::_internal_set_encoding(::pg_query::JsonEncoding value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.encoding_ = value; } // int32 location = 3 [json_name = "location"]; inline void JsonFormat::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonFormat::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonFormat.location) return _internal_location(); } inline void JsonFormat::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonFormat.location) } inline ::int32_t JsonFormat::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonFormat::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonReturning // .pg_query.JsonFormat format = 1 [json_name = "format"]; inline bool JsonReturning::has_format() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.format_ != nullptr); return value; } inline void JsonReturning::clear_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.format_ != nullptr) _impl_.format_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::JsonFormat& JsonReturning::_internal_format() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonFormat* p = _impl_.format_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonFormat_default_instance_); } inline const ::pg_query::JsonFormat& JsonReturning::format() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonReturning.format) return _internal_format(); } inline void JsonReturning::unsafe_arena_set_allocated_format(::pg_query::JsonFormat* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.format_); } _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonReturning.format) } inline ::pg_query::JsonFormat* JsonReturning::release_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonFormat* released = _impl_.format_; _impl_.format_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonFormat* JsonReturning::unsafe_arena_release_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonReturning.format) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonFormat* temp = _impl_.format_; _impl_.format_ = nullptr; return temp; } inline ::pg_query::JsonFormat* JsonReturning::_internal_mutable_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.format_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonFormat>(GetArena()); _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(p); } return _impl_.format_; } inline ::pg_query::JsonFormat* JsonReturning::mutable_format() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonFormat* _msg = _internal_mutable_format(); // @@protoc_insertion_point(field_mutable:pg_query.JsonReturning.format) return _msg; } inline void JsonReturning::set_allocated_format(::pg_query::JsonFormat* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonFormat*>(_impl_.format_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonFormat*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonReturning.format) } // uint32 typid = 2 [json_name = "typid"]; inline void JsonReturning::clear_typid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.typid_ = 0u; } inline ::uint32_t JsonReturning::typid() const { // @@protoc_insertion_point(field_get:pg_query.JsonReturning.typid) return _internal_typid(); } inline void JsonReturning::set_typid(::uint32_t value) { _internal_set_typid(value); // @@protoc_insertion_point(field_set:pg_query.JsonReturning.typid) } inline ::uint32_t JsonReturning::_internal_typid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.typid_; } inline void JsonReturning::_internal_set_typid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.typid_ = value; } // int32 typmod = 3 [json_name = "typmod"]; inline void JsonReturning::clear_typmod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.typmod_ = 0; } inline ::int32_t JsonReturning::typmod() const { // @@protoc_insertion_point(field_get:pg_query.JsonReturning.typmod) return _internal_typmod(); } inline void JsonReturning::set_typmod(::int32_t value) { _internal_set_typmod(value); // @@protoc_insertion_point(field_set:pg_query.JsonReturning.typmod) } inline ::int32_t JsonReturning::_internal_typmod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.typmod_; } inline void JsonReturning::_internal_set_typmod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.typmod_ = value; } // ------------------------------------------------------------------- // JsonValueExpr // .pg_query.Node raw_expr = 1 [json_name = "raw_expr"]; inline bool JsonValueExpr::has_raw_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.raw_expr_ != nullptr); return value; } inline void JsonValueExpr::clear_raw_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.raw_expr_ != nullptr) _impl_.raw_expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& JsonValueExpr::_internal_raw_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.raw_expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonValueExpr::raw_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonValueExpr.raw_expr) return _internal_raw_expr(); } inline void JsonValueExpr::unsafe_arena_set_allocated_raw_expr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.raw_expr_); } _impl_.raw_expr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonValueExpr.raw_expr) } inline ::pg_query::Node* JsonValueExpr::release_raw_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.raw_expr_; _impl_.raw_expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonValueExpr::unsafe_arena_release_raw_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonValueExpr.raw_expr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.raw_expr_; _impl_.raw_expr_ = nullptr; return temp; } inline ::pg_query::Node* JsonValueExpr::_internal_mutable_raw_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.raw_expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.raw_expr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.raw_expr_; } inline ::pg_query::Node* JsonValueExpr::mutable_raw_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_raw_expr(); // @@protoc_insertion_point(field_mutable:pg_query.JsonValueExpr.raw_expr) return _msg; } inline void JsonValueExpr::set_allocated_raw_expr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.raw_expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.raw_expr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonValueExpr.raw_expr) } // .pg_query.Node formatted_expr = 2 [json_name = "formatted_expr"]; inline bool JsonValueExpr::has_formatted_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.formatted_expr_ != nullptr); return value; } inline void JsonValueExpr::clear_formatted_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.formatted_expr_ != nullptr) _impl_.formatted_expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& JsonValueExpr::_internal_formatted_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.formatted_expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonValueExpr::formatted_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonValueExpr.formatted_expr) return _internal_formatted_expr(); } inline void JsonValueExpr::unsafe_arena_set_allocated_formatted_expr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.formatted_expr_); } _impl_.formatted_expr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonValueExpr.formatted_expr) } inline ::pg_query::Node* JsonValueExpr::release_formatted_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.formatted_expr_; _impl_.formatted_expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonValueExpr::unsafe_arena_release_formatted_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonValueExpr.formatted_expr) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.formatted_expr_; _impl_.formatted_expr_ = nullptr; return temp; } inline ::pg_query::Node* JsonValueExpr::_internal_mutable_formatted_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.formatted_expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.formatted_expr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.formatted_expr_; } inline ::pg_query::Node* JsonValueExpr::mutable_formatted_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_formatted_expr(); // @@protoc_insertion_point(field_mutable:pg_query.JsonValueExpr.formatted_expr) return _msg; } inline void JsonValueExpr::set_allocated_formatted_expr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.formatted_expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.formatted_expr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonValueExpr.formatted_expr) } // .pg_query.JsonFormat format = 3 [json_name = "format"]; inline bool JsonValueExpr::has_format() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.format_ != nullptr); return value; } inline void JsonValueExpr::clear_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.format_ != nullptr) _impl_.format_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::JsonFormat& JsonValueExpr::_internal_format() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonFormat* p = _impl_.format_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonFormat_default_instance_); } inline const ::pg_query::JsonFormat& JsonValueExpr::format() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonValueExpr.format) return _internal_format(); } inline void JsonValueExpr::unsafe_arena_set_allocated_format(::pg_query::JsonFormat* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.format_); } _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonValueExpr.format) } inline ::pg_query::JsonFormat* JsonValueExpr::release_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::JsonFormat* released = _impl_.format_; _impl_.format_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonFormat* JsonValueExpr::unsafe_arena_release_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonValueExpr.format) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::JsonFormat* temp = _impl_.format_; _impl_.format_ = nullptr; return temp; } inline ::pg_query::JsonFormat* JsonValueExpr::_internal_mutable_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.format_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonFormat>(GetArena()); _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(p); } return _impl_.format_; } inline ::pg_query::JsonFormat* JsonValueExpr::mutable_format() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonFormat* _msg = _internal_mutable_format(); // @@protoc_insertion_point(field_mutable:pg_query.JsonValueExpr.format) return _msg; } inline void JsonValueExpr::set_allocated_format(::pg_query::JsonFormat* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonFormat*>(_impl_.format_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonFormat*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonValueExpr.format) } // ------------------------------------------------------------------- // JsonConstructorExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool JsonConstructorExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void JsonConstructorExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& JsonConstructorExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonConstructorExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonConstructorExpr.xpr) return _internal_xpr(); } inline void JsonConstructorExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonConstructorExpr.xpr) } inline ::pg_query::Node* JsonConstructorExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonConstructorExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonConstructorExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* JsonConstructorExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* JsonConstructorExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.JsonConstructorExpr.xpr) return _msg; } inline void JsonConstructorExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonConstructorExpr.xpr) } // .pg_query.JsonConstructorType type = 2 [json_name = "type"]; inline void JsonConstructorExpr::clear_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_ = 0; } inline ::pg_query::JsonConstructorType JsonConstructorExpr::type() const { // @@protoc_insertion_point(field_get:pg_query.JsonConstructorExpr.type) return _internal_type(); } inline void JsonConstructorExpr::set_type(::pg_query::JsonConstructorType value) { _internal_set_type(value); // @@protoc_insertion_point(field_set:pg_query.JsonConstructorExpr.type) } inline ::pg_query::JsonConstructorType JsonConstructorExpr::_internal_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JsonConstructorType>(_impl_.type_); } inline void JsonConstructorExpr::_internal_set_type(::pg_query::JsonConstructorType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.type_ = value; } // repeated .pg_query.Node args = 3 [json_name = "args"]; inline int JsonConstructorExpr::_internal_args_size() const { return _internal_args().size(); } inline int JsonConstructorExpr::args_size() const { return _internal_args_size(); } inline void JsonConstructorExpr::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* JsonConstructorExpr::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.JsonConstructorExpr.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonConstructorExpr::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.JsonConstructorExpr.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& JsonConstructorExpr::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonConstructorExpr.args) return _internal_args().Get(index); } inline ::pg_query::Node* JsonConstructorExpr::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.JsonConstructorExpr.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonConstructorExpr::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.JsonConstructorExpr.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonConstructorExpr::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonConstructorExpr::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // .pg_query.Node func = 4 [json_name = "func"]; inline bool JsonConstructorExpr::has_func() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.func_ != nullptr); return value; } inline void JsonConstructorExpr::clear_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.func_ != nullptr) _impl_.func_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& JsonConstructorExpr::_internal_func() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.func_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonConstructorExpr::func() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonConstructorExpr.func) return _internal_func(); } inline void JsonConstructorExpr::unsafe_arena_set_allocated_func(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.func_); } _impl_.func_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonConstructorExpr.func) } inline ::pg_query::Node* JsonConstructorExpr::release_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.func_; _impl_.func_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonConstructorExpr::unsafe_arena_release_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonConstructorExpr.func) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.func_; _impl_.func_ = nullptr; return temp; } inline ::pg_query::Node* JsonConstructorExpr::_internal_mutable_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.func_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.func_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.func_; } inline ::pg_query::Node* JsonConstructorExpr::mutable_func() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_func(); // @@protoc_insertion_point(field_mutable:pg_query.JsonConstructorExpr.func) return _msg; } inline void JsonConstructorExpr::set_allocated_func(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.func_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.func_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonConstructorExpr.func) } // .pg_query.Node coercion = 5 [json_name = "coercion"]; inline bool JsonConstructorExpr::has_coercion() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.coercion_ != nullptr); return value; } inline void JsonConstructorExpr::clear_coercion() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.coercion_ != nullptr) _impl_.coercion_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& JsonConstructorExpr::_internal_coercion() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.coercion_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonConstructorExpr::coercion() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonConstructorExpr.coercion) return _internal_coercion(); } inline void JsonConstructorExpr::unsafe_arena_set_allocated_coercion(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.coercion_); } _impl_.coercion_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonConstructorExpr.coercion) } inline ::pg_query::Node* JsonConstructorExpr::release_coercion() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.coercion_; _impl_.coercion_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonConstructorExpr::unsafe_arena_release_coercion() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonConstructorExpr.coercion) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.coercion_; _impl_.coercion_ = nullptr; return temp; } inline ::pg_query::Node* JsonConstructorExpr::_internal_mutable_coercion() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.coercion_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.coercion_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.coercion_; } inline ::pg_query::Node* JsonConstructorExpr::mutable_coercion() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_coercion(); // @@protoc_insertion_point(field_mutable:pg_query.JsonConstructorExpr.coercion) return _msg; } inline void JsonConstructorExpr::set_allocated_coercion(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.coercion_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.coercion_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonConstructorExpr.coercion) } // .pg_query.JsonReturning returning = 6 [json_name = "returning"]; inline bool JsonConstructorExpr::has_returning() const { bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0; PROTOBUF_ASSUME(!value || _impl_.returning_ != nullptr); return value; } inline void JsonConstructorExpr::clear_returning() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.returning_ != nullptr) _impl_.returning_->Clear(); _impl_._has_bits_[0] &= ~0x00000008u; } inline const ::pg_query::JsonReturning& JsonConstructorExpr::_internal_returning() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonReturning* p = _impl_.returning_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonReturning_default_instance_); } inline const ::pg_query::JsonReturning& JsonConstructorExpr::returning() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonConstructorExpr.returning) return _internal_returning(); } inline void JsonConstructorExpr::unsafe_arena_set_allocated_returning(::pg_query::JsonReturning* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.returning_); } _impl_.returning_ = reinterpret_cast<::pg_query::JsonReturning*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonConstructorExpr.returning) } inline ::pg_query::JsonReturning* JsonConstructorExpr::release_returning() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::JsonReturning* released = _impl_.returning_; _impl_.returning_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonReturning* JsonConstructorExpr::unsafe_arena_release_returning() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonConstructorExpr.returning) _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::JsonReturning* temp = _impl_.returning_; _impl_.returning_ = nullptr; return temp; } inline ::pg_query::JsonReturning* JsonConstructorExpr::_internal_mutable_returning() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000008u; if (_impl_.returning_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonReturning>(GetArena()); _impl_.returning_ = reinterpret_cast<::pg_query::JsonReturning*>(p); } return _impl_.returning_; } inline ::pg_query::JsonReturning* JsonConstructorExpr::mutable_returning() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonReturning* _msg = _internal_mutable_returning(); // @@protoc_insertion_point(field_mutable:pg_query.JsonConstructorExpr.returning) return _msg; } inline void JsonConstructorExpr::set_allocated_returning(::pg_query::JsonReturning* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonReturning*>(_impl_.returning_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonReturning*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } _impl_.returning_ = reinterpret_cast<::pg_query::JsonReturning*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonConstructorExpr.returning) } // bool absent_on_null = 7 [json_name = "absent_on_null"]; inline void JsonConstructorExpr::clear_absent_on_null() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.absent_on_null_ = false; } inline bool JsonConstructorExpr::absent_on_null() const { // @@protoc_insertion_point(field_get:pg_query.JsonConstructorExpr.absent_on_null) return _internal_absent_on_null(); } inline void JsonConstructorExpr::set_absent_on_null(bool value) { _internal_set_absent_on_null(value); // @@protoc_insertion_point(field_set:pg_query.JsonConstructorExpr.absent_on_null) } inline bool JsonConstructorExpr::_internal_absent_on_null() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.absent_on_null_; } inline void JsonConstructorExpr::_internal_set_absent_on_null(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.absent_on_null_ = value; } // bool unique = 8 [json_name = "unique"]; inline void JsonConstructorExpr::clear_unique() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.unique_ = false; } inline bool JsonConstructorExpr::unique() const { // @@protoc_insertion_point(field_get:pg_query.JsonConstructorExpr.unique) return _internal_unique(); } inline void JsonConstructorExpr::set_unique(bool value) { _internal_set_unique(value); // @@protoc_insertion_point(field_set:pg_query.JsonConstructorExpr.unique) } inline bool JsonConstructorExpr::_internal_unique() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.unique_; } inline void JsonConstructorExpr::_internal_set_unique(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.unique_ = value; } // int32 location = 9 [json_name = "location"]; inline void JsonConstructorExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonConstructorExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonConstructorExpr.location) return _internal_location(); } inline void JsonConstructorExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonConstructorExpr.location) } inline ::int32_t JsonConstructorExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonConstructorExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonIsPredicate // .pg_query.Node expr = 1 [json_name = "expr"]; inline bool JsonIsPredicate::has_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.expr_ != nullptr); return value; } inline void JsonIsPredicate::clear_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.expr_ != nullptr) _impl_.expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& JsonIsPredicate::_internal_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonIsPredicate::expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonIsPredicate.expr) return _internal_expr(); } inline void JsonIsPredicate::unsafe_arena_set_allocated_expr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expr_); } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonIsPredicate.expr) } inline ::pg_query::Node* JsonIsPredicate::release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonIsPredicate::unsafe_arena_release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonIsPredicate.expr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* JsonIsPredicate::_internal_mutable_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.expr_; } inline ::pg_query::Node* JsonIsPredicate::mutable_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_expr(); // @@protoc_insertion_point(field_mutable:pg_query.JsonIsPredicate.expr) return _msg; } inline void JsonIsPredicate::set_allocated_expr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonIsPredicate.expr) } // .pg_query.JsonFormat format = 2 [json_name = "format"]; inline bool JsonIsPredicate::has_format() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.format_ != nullptr); return value; } inline void JsonIsPredicate::clear_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.format_ != nullptr) _impl_.format_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::JsonFormat& JsonIsPredicate::_internal_format() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonFormat* p = _impl_.format_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonFormat_default_instance_); } inline const ::pg_query::JsonFormat& JsonIsPredicate::format() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonIsPredicate.format) return _internal_format(); } inline void JsonIsPredicate::unsafe_arena_set_allocated_format(::pg_query::JsonFormat* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.format_); } _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonIsPredicate.format) } inline ::pg_query::JsonFormat* JsonIsPredicate::release_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonFormat* released = _impl_.format_; _impl_.format_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonFormat* JsonIsPredicate::unsafe_arena_release_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonIsPredicate.format) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonFormat* temp = _impl_.format_; _impl_.format_ = nullptr; return temp; } inline ::pg_query::JsonFormat* JsonIsPredicate::_internal_mutable_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.format_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonFormat>(GetArena()); _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(p); } return _impl_.format_; } inline ::pg_query::JsonFormat* JsonIsPredicate::mutable_format() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonFormat* _msg = _internal_mutable_format(); // @@protoc_insertion_point(field_mutable:pg_query.JsonIsPredicate.format) return _msg; } inline void JsonIsPredicate::set_allocated_format(::pg_query::JsonFormat* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonFormat*>(_impl_.format_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonFormat*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonIsPredicate.format) } // .pg_query.JsonValueType item_type = 3 [json_name = "item_type"]; inline void JsonIsPredicate::clear_item_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.item_type_ = 0; } inline ::pg_query::JsonValueType JsonIsPredicate::item_type() const { // @@protoc_insertion_point(field_get:pg_query.JsonIsPredicate.item_type) return _internal_item_type(); } inline void JsonIsPredicate::set_item_type(::pg_query::JsonValueType value) { _internal_set_item_type(value); // @@protoc_insertion_point(field_set:pg_query.JsonIsPredicate.item_type) } inline ::pg_query::JsonValueType JsonIsPredicate::_internal_item_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JsonValueType>(_impl_.item_type_); } inline void JsonIsPredicate::_internal_set_item_type(::pg_query::JsonValueType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.item_type_ = value; } // bool unique_keys = 4 [json_name = "unique_keys"]; inline void JsonIsPredicate::clear_unique_keys() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.unique_keys_ = false; } inline bool JsonIsPredicate::unique_keys() const { // @@protoc_insertion_point(field_get:pg_query.JsonIsPredicate.unique_keys) return _internal_unique_keys(); } inline void JsonIsPredicate::set_unique_keys(bool value) { _internal_set_unique_keys(value); // @@protoc_insertion_point(field_set:pg_query.JsonIsPredicate.unique_keys) } inline bool JsonIsPredicate::_internal_unique_keys() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.unique_keys_; } inline void JsonIsPredicate::_internal_set_unique_keys(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.unique_keys_ = value; } // int32 location = 5 [json_name = "location"]; inline void JsonIsPredicate::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonIsPredicate::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonIsPredicate.location) return _internal_location(); } inline void JsonIsPredicate::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonIsPredicate.location) } inline ::int32_t JsonIsPredicate::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonIsPredicate::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonBehavior // .pg_query.JsonBehaviorType btype = 1 [json_name = "btype"]; inline void JsonBehavior::clear_btype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.btype_ = 0; } inline ::pg_query::JsonBehaviorType JsonBehavior::btype() const { // @@protoc_insertion_point(field_get:pg_query.JsonBehavior.btype) return _internal_btype(); } inline void JsonBehavior::set_btype(::pg_query::JsonBehaviorType value) { _internal_set_btype(value); // @@protoc_insertion_point(field_set:pg_query.JsonBehavior.btype) } inline ::pg_query::JsonBehaviorType JsonBehavior::_internal_btype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JsonBehaviorType>(_impl_.btype_); } inline void JsonBehavior::_internal_set_btype(::pg_query::JsonBehaviorType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.btype_ = value; } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool JsonBehavior::has_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.expr_ != nullptr); return value; } inline void JsonBehavior::clear_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.expr_ != nullptr) _impl_.expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& JsonBehavior::_internal_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonBehavior::expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonBehavior.expr) return _internal_expr(); } inline void JsonBehavior::unsafe_arena_set_allocated_expr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expr_); } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonBehavior.expr) } inline ::pg_query::Node* JsonBehavior::release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonBehavior::unsafe_arena_release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonBehavior.expr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* JsonBehavior::_internal_mutable_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.expr_; } inline ::pg_query::Node* JsonBehavior::mutable_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_expr(); // @@protoc_insertion_point(field_mutable:pg_query.JsonBehavior.expr) return _msg; } inline void JsonBehavior::set_allocated_expr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonBehavior.expr) } // bool coerce = 3 [json_name = "coerce"]; inline void JsonBehavior::clear_coerce() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coerce_ = false; } inline bool JsonBehavior::coerce() const { // @@protoc_insertion_point(field_get:pg_query.JsonBehavior.coerce) return _internal_coerce(); } inline void JsonBehavior::set_coerce(bool value) { _internal_set_coerce(value); // @@protoc_insertion_point(field_set:pg_query.JsonBehavior.coerce) } inline bool JsonBehavior::_internal_coerce() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.coerce_; } inline void JsonBehavior::_internal_set_coerce(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.coerce_ = value; } // int32 location = 4 [json_name = "location"]; inline void JsonBehavior::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonBehavior::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonBehavior.location) return _internal_location(); } inline void JsonBehavior::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonBehavior.location) } inline ::int32_t JsonBehavior::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonBehavior::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool JsonExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void JsonExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& JsonExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.xpr) return _internal_xpr(); } inline void JsonExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonExpr.xpr) } inline ::pg_query::Node* JsonExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* JsonExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* JsonExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.JsonExpr.xpr) return _msg; } inline void JsonExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonExpr.xpr) } // .pg_query.JsonExprOp op = 2 [json_name = "op"]; inline void JsonExpr::clear_op() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.op_ = 0; } inline ::pg_query::JsonExprOp JsonExpr::op() const { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.op) return _internal_op(); } inline void JsonExpr::set_op(::pg_query::JsonExprOp value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.JsonExpr.op) } inline ::pg_query::JsonExprOp JsonExpr::_internal_op() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JsonExprOp>(_impl_.op_); } inline void JsonExpr::_internal_set_op(::pg_query::JsonExprOp value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.op_ = value; } // string column_name = 3 [json_name = "column_name"]; inline void JsonExpr::clear_column_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.column_name_.ClearToEmpty(); } inline const std::string& JsonExpr::column_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.column_name) return _internal_column_name(); } template inline PROTOBUF_ALWAYS_INLINE void JsonExpr::set_column_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.column_name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.JsonExpr.column_name) } inline std::string* JsonExpr::mutable_column_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_column_name(); // @@protoc_insertion_point(field_mutable:pg_query.JsonExpr.column_name) return _s; } inline const std::string& JsonExpr::_internal_column_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.column_name_.Get(); } inline void JsonExpr::_internal_set_column_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.column_name_.Set(value, GetArena()); } inline std::string* JsonExpr::_internal_mutable_column_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.column_name_.Mutable( GetArena()); } inline std::string* JsonExpr::release_column_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonExpr.column_name) return _impl_.column_name_.Release(); } inline void JsonExpr::set_allocated_column_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.column_name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.column_name_.IsDefault()) { _impl_.column_name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.JsonExpr.column_name) } // .pg_query.Node formatted_expr = 4 [json_name = "formatted_expr"]; inline bool JsonExpr::has_formatted_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.formatted_expr_ != nullptr); return value; } inline void JsonExpr::clear_formatted_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.formatted_expr_ != nullptr) _impl_.formatted_expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& JsonExpr::_internal_formatted_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.formatted_expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonExpr::formatted_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.formatted_expr) return _internal_formatted_expr(); } inline void JsonExpr::unsafe_arena_set_allocated_formatted_expr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.formatted_expr_); } _impl_.formatted_expr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonExpr.formatted_expr) } inline ::pg_query::Node* JsonExpr::release_formatted_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.formatted_expr_; _impl_.formatted_expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonExpr::unsafe_arena_release_formatted_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonExpr.formatted_expr) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.formatted_expr_; _impl_.formatted_expr_ = nullptr; return temp; } inline ::pg_query::Node* JsonExpr::_internal_mutable_formatted_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.formatted_expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.formatted_expr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.formatted_expr_; } inline ::pg_query::Node* JsonExpr::mutable_formatted_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_formatted_expr(); // @@protoc_insertion_point(field_mutable:pg_query.JsonExpr.formatted_expr) return _msg; } inline void JsonExpr::set_allocated_formatted_expr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.formatted_expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.formatted_expr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonExpr.formatted_expr) } // .pg_query.JsonFormat format = 5 [json_name = "format"]; inline bool JsonExpr::has_format() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.format_ != nullptr); return value; } inline void JsonExpr::clear_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.format_ != nullptr) _impl_.format_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::JsonFormat& JsonExpr::_internal_format() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonFormat* p = _impl_.format_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonFormat_default_instance_); } inline const ::pg_query::JsonFormat& JsonExpr::format() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.format) return _internal_format(); } inline void JsonExpr::unsafe_arena_set_allocated_format(::pg_query::JsonFormat* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.format_); } _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonExpr.format) } inline ::pg_query::JsonFormat* JsonExpr::release_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::JsonFormat* released = _impl_.format_; _impl_.format_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonFormat* JsonExpr::unsafe_arena_release_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonExpr.format) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::JsonFormat* temp = _impl_.format_; _impl_.format_ = nullptr; return temp; } inline ::pg_query::JsonFormat* JsonExpr::_internal_mutable_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.format_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonFormat>(GetArena()); _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(p); } return _impl_.format_; } inline ::pg_query::JsonFormat* JsonExpr::mutable_format() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonFormat* _msg = _internal_mutable_format(); // @@protoc_insertion_point(field_mutable:pg_query.JsonExpr.format) return _msg; } inline void JsonExpr::set_allocated_format(::pg_query::JsonFormat* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonFormat*>(_impl_.format_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonFormat*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonExpr.format) } // .pg_query.Node path_spec = 6 [json_name = "path_spec"]; inline bool JsonExpr::has_path_spec() const { bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0; PROTOBUF_ASSUME(!value || _impl_.path_spec_ != nullptr); return value; } inline void JsonExpr::clear_path_spec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.path_spec_ != nullptr) _impl_.path_spec_->Clear(); _impl_._has_bits_[0] &= ~0x00000008u; } inline const ::pg_query::Node& JsonExpr::_internal_path_spec() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.path_spec_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonExpr::path_spec() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.path_spec) return _internal_path_spec(); } inline void JsonExpr::unsafe_arena_set_allocated_path_spec(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.path_spec_); } _impl_.path_spec_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonExpr.path_spec) } inline ::pg_query::Node* JsonExpr::release_path_spec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::Node* released = _impl_.path_spec_; _impl_.path_spec_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonExpr::unsafe_arena_release_path_spec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonExpr.path_spec) _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::Node* temp = _impl_.path_spec_; _impl_.path_spec_ = nullptr; return temp; } inline ::pg_query::Node* JsonExpr::_internal_mutable_path_spec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000008u; if (_impl_.path_spec_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.path_spec_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.path_spec_; } inline ::pg_query::Node* JsonExpr::mutable_path_spec() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_path_spec(); // @@protoc_insertion_point(field_mutable:pg_query.JsonExpr.path_spec) return _msg; } inline void JsonExpr::set_allocated_path_spec(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.path_spec_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } _impl_.path_spec_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonExpr.path_spec) } // .pg_query.JsonReturning returning = 7 [json_name = "returning"]; inline bool JsonExpr::has_returning() const { bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0; PROTOBUF_ASSUME(!value || _impl_.returning_ != nullptr); return value; } inline void JsonExpr::clear_returning() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.returning_ != nullptr) _impl_.returning_->Clear(); _impl_._has_bits_[0] &= ~0x00000010u; } inline const ::pg_query::JsonReturning& JsonExpr::_internal_returning() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonReturning* p = _impl_.returning_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonReturning_default_instance_); } inline const ::pg_query::JsonReturning& JsonExpr::returning() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.returning) return _internal_returning(); } inline void JsonExpr::unsafe_arena_set_allocated_returning(::pg_query::JsonReturning* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.returning_); } _impl_.returning_ = reinterpret_cast<::pg_query::JsonReturning*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonExpr.returning) } inline ::pg_query::JsonReturning* JsonExpr::release_returning() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::JsonReturning* released = _impl_.returning_; _impl_.returning_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonReturning* JsonExpr::unsafe_arena_release_returning() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonExpr.returning) _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::JsonReturning* temp = _impl_.returning_; _impl_.returning_ = nullptr; return temp; } inline ::pg_query::JsonReturning* JsonExpr::_internal_mutable_returning() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000010u; if (_impl_.returning_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonReturning>(GetArena()); _impl_.returning_ = reinterpret_cast<::pg_query::JsonReturning*>(p); } return _impl_.returning_; } inline ::pg_query::JsonReturning* JsonExpr::mutable_returning() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonReturning* _msg = _internal_mutable_returning(); // @@protoc_insertion_point(field_mutable:pg_query.JsonExpr.returning) return _msg; } inline void JsonExpr::set_allocated_returning(::pg_query::JsonReturning* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonReturning*>(_impl_.returning_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonReturning*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } _impl_.returning_ = reinterpret_cast<::pg_query::JsonReturning*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonExpr.returning) } // repeated .pg_query.Node passing_names = 8 [json_name = "passing_names"]; inline int JsonExpr::_internal_passing_names_size() const { return _internal_passing_names().size(); } inline int JsonExpr::passing_names_size() const { return _internal_passing_names_size(); } inline void JsonExpr::clear_passing_names() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.passing_names_.Clear(); } inline ::pg_query::Node* JsonExpr::mutable_passing_names(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.JsonExpr.passing_names) return _internal_mutable_passing_names()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonExpr::mutable_passing_names() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.JsonExpr.passing_names) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_passing_names(); } inline const ::pg_query::Node& JsonExpr::passing_names(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.passing_names) return _internal_passing_names().Get(index); } inline ::pg_query::Node* JsonExpr::add_passing_names() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_passing_names()->Add(); // @@protoc_insertion_point(field_add:pg_query.JsonExpr.passing_names) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonExpr::passing_names() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.JsonExpr.passing_names) return _internal_passing_names(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonExpr::_internal_passing_names() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.passing_names_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonExpr::_internal_mutable_passing_names() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.passing_names_; } // repeated .pg_query.Node passing_values = 9 [json_name = "passing_values"]; inline int JsonExpr::_internal_passing_values_size() const { return _internal_passing_values().size(); } inline int JsonExpr::passing_values_size() const { return _internal_passing_values_size(); } inline void JsonExpr::clear_passing_values() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.passing_values_.Clear(); } inline ::pg_query::Node* JsonExpr::mutable_passing_values(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.JsonExpr.passing_values) return _internal_mutable_passing_values()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonExpr::mutable_passing_values() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.JsonExpr.passing_values) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_passing_values(); } inline const ::pg_query::Node& JsonExpr::passing_values(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.passing_values) return _internal_passing_values().Get(index); } inline ::pg_query::Node* JsonExpr::add_passing_values() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_passing_values()->Add(); // @@protoc_insertion_point(field_add:pg_query.JsonExpr.passing_values) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonExpr::passing_values() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.JsonExpr.passing_values) return _internal_passing_values(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonExpr::_internal_passing_values() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.passing_values_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonExpr::_internal_mutable_passing_values() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.passing_values_; } // .pg_query.JsonBehavior on_empty = 10 [json_name = "on_empty"]; inline bool JsonExpr::has_on_empty() const { bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0; PROTOBUF_ASSUME(!value || _impl_.on_empty_ != nullptr); return value; } inline void JsonExpr::clear_on_empty() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.on_empty_ != nullptr) _impl_.on_empty_->Clear(); _impl_._has_bits_[0] &= ~0x00000020u; } inline const ::pg_query::JsonBehavior& JsonExpr::_internal_on_empty() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonBehavior* p = _impl_.on_empty_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonBehavior_default_instance_); } inline const ::pg_query::JsonBehavior& JsonExpr::on_empty() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.on_empty) return _internal_on_empty(); } inline void JsonExpr::unsafe_arena_set_allocated_on_empty(::pg_query::JsonBehavior* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.on_empty_); } _impl_.on_empty_ = reinterpret_cast<::pg_query::JsonBehavior*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000020u; } else { _impl_._has_bits_[0] &= ~0x00000020u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonExpr.on_empty) } inline ::pg_query::JsonBehavior* JsonExpr::release_on_empty() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000020u; ::pg_query::JsonBehavior* released = _impl_.on_empty_; _impl_.on_empty_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonBehavior* JsonExpr::unsafe_arena_release_on_empty() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonExpr.on_empty) _impl_._has_bits_[0] &= ~0x00000020u; ::pg_query::JsonBehavior* temp = _impl_.on_empty_; _impl_.on_empty_ = nullptr; return temp; } inline ::pg_query::JsonBehavior* JsonExpr::_internal_mutable_on_empty() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000020u; if (_impl_.on_empty_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonBehavior>(GetArena()); _impl_.on_empty_ = reinterpret_cast<::pg_query::JsonBehavior*>(p); } return _impl_.on_empty_; } inline ::pg_query::JsonBehavior* JsonExpr::mutable_on_empty() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonBehavior* _msg = _internal_mutable_on_empty(); // @@protoc_insertion_point(field_mutable:pg_query.JsonExpr.on_empty) return _msg; } inline void JsonExpr::set_allocated_on_empty(::pg_query::JsonBehavior* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonBehavior*>(_impl_.on_empty_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonBehavior*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000020u; } else { _impl_._has_bits_[0] &= ~0x00000020u; } _impl_.on_empty_ = reinterpret_cast<::pg_query::JsonBehavior*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonExpr.on_empty) } // .pg_query.JsonBehavior on_error = 11 [json_name = "on_error"]; inline bool JsonExpr::has_on_error() const { bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0; PROTOBUF_ASSUME(!value || _impl_.on_error_ != nullptr); return value; } inline void JsonExpr::clear_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.on_error_ != nullptr) _impl_.on_error_->Clear(); _impl_._has_bits_[0] &= ~0x00000040u; } inline const ::pg_query::JsonBehavior& JsonExpr::_internal_on_error() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonBehavior* p = _impl_.on_error_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonBehavior_default_instance_); } inline const ::pg_query::JsonBehavior& JsonExpr::on_error() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.on_error) return _internal_on_error(); } inline void JsonExpr::unsafe_arena_set_allocated_on_error(::pg_query::JsonBehavior* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.on_error_); } _impl_.on_error_ = reinterpret_cast<::pg_query::JsonBehavior*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000040u; } else { _impl_._has_bits_[0] &= ~0x00000040u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonExpr.on_error) } inline ::pg_query::JsonBehavior* JsonExpr::release_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000040u; ::pg_query::JsonBehavior* released = _impl_.on_error_; _impl_.on_error_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonBehavior* JsonExpr::unsafe_arena_release_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonExpr.on_error) _impl_._has_bits_[0] &= ~0x00000040u; ::pg_query::JsonBehavior* temp = _impl_.on_error_; _impl_.on_error_ = nullptr; return temp; } inline ::pg_query::JsonBehavior* JsonExpr::_internal_mutable_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000040u; if (_impl_.on_error_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonBehavior>(GetArena()); _impl_.on_error_ = reinterpret_cast<::pg_query::JsonBehavior*>(p); } return _impl_.on_error_; } inline ::pg_query::JsonBehavior* JsonExpr::mutable_on_error() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonBehavior* _msg = _internal_mutable_on_error(); // @@protoc_insertion_point(field_mutable:pg_query.JsonExpr.on_error) return _msg; } inline void JsonExpr::set_allocated_on_error(::pg_query::JsonBehavior* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonBehavior*>(_impl_.on_error_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonBehavior*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000040u; } else { _impl_._has_bits_[0] &= ~0x00000040u; } _impl_.on_error_ = reinterpret_cast<::pg_query::JsonBehavior*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonExpr.on_error) } // bool use_io_coercion = 12 [json_name = "use_io_coercion"]; inline void JsonExpr::clear_use_io_coercion() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.use_io_coercion_ = false; } inline bool JsonExpr::use_io_coercion() const { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.use_io_coercion) return _internal_use_io_coercion(); } inline void JsonExpr::set_use_io_coercion(bool value) { _internal_set_use_io_coercion(value); // @@protoc_insertion_point(field_set:pg_query.JsonExpr.use_io_coercion) } inline bool JsonExpr::_internal_use_io_coercion() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.use_io_coercion_; } inline void JsonExpr::_internal_set_use_io_coercion(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.use_io_coercion_ = value; } // bool use_json_coercion = 13 [json_name = "use_json_coercion"]; inline void JsonExpr::clear_use_json_coercion() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.use_json_coercion_ = false; } inline bool JsonExpr::use_json_coercion() const { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.use_json_coercion) return _internal_use_json_coercion(); } inline void JsonExpr::set_use_json_coercion(bool value) { _internal_set_use_json_coercion(value); // @@protoc_insertion_point(field_set:pg_query.JsonExpr.use_json_coercion) } inline bool JsonExpr::_internal_use_json_coercion() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.use_json_coercion_; } inline void JsonExpr::_internal_set_use_json_coercion(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.use_json_coercion_ = value; } // .pg_query.JsonWrapper wrapper = 14 [json_name = "wrapper"]; inline void JsonExpr::clear_wrapper() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.wrapper_ = 0; } inline ::pg_query::JsonWrapper JsonExpr::wrapper() const { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.wrapper) return _internal_wrapper(); } inline void JsonExpr::set_wrapper(::pg_query::JsonWrapper value) { _internal_set_wrapper(value); // @@protoc_insertion_point(field_set:pg_query.JsonExpr.wrapper) } inline ::pg_query::JsonWrapper JsonExpr::_internal_wrapper() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JsonWrapper>(_impl_.wrapper_); } inline void JsonExpr::_internal_set_wrapper(::pg_query::JsonWrapper value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.wrapper_ = value; } // bool omit_quotes = 15 [json_name = "omit_quotes"]; inline void JsonExpr::clear_omit_quotes() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.omit_quotes_ = false; } inline bool JsonExpr::omit_quotes() const { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.omit_quotes) return _internal_omit_quotes(); } inline void JsonExpr::set_omit_quotes(bool value) { _internal_set_omit_quotes(value); // @@protoc_insertion_point(field_set:pg_query.JsonExpr.omit_quotes) } inline bool JsonExpr::_internal_omit_quotes() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.omit_quotes_; } inline void JsonExpr::_internal_set_omit_quotes(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.omit_quotes_ = value; } // uint32 collation = 16 [json_name = "collation"]; inline void JsonExpr::clear_collation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.collation_ = 0u; } inline ::uint32_t JsonExpr::collation() const { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.collation) return _internal_collation(); } inline void JsonExpr::set_collation(::uint32_t value) { _internal_set_collation(value); // @@protoc_insertion_point(field_set:pg_query.JsonExpr.collation) } inline ::uint32_t JsonExpr::_internal_collation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.collation_; } inline void JsonExpr::_internal_set_collation(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.collation_ = value; } // int32 location = 17 [json_name = "location"]; inline void JsonExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonExpr.location) return _internal_location(); } inline void JsonExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonExpr.location) } inline ::int32_t JsonExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonTablePath // string name = 1 [json_name = "name"]; inline void JsonTablePath::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& JsonTablePath::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTablePath.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void JsonTablePath::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.JsonTablePath.name) } inline std::string* JsonTablePath::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTablePath.name) return _s; } inline const std::string& JsonTablePath::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void JsonTablePath::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* JsonTablePath::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* JsonTablePath::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTablePath.name) return _impl_.name_.Release(); } inline void JsonTablePath::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTablePath.name) } // ------------------------------------------------------------------- // JsonTablePathScan // .pg_query.Node plan = 1 [json_name = "plan"]; inline bool JsonTablePathScan::has_plan() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.plan_ != nullptr); return value; } inline void JsonTablePathScan::clear_plan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.plan_ != nullptr) _impl_.plan_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& JsonTablePathScan::_internal_plan() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.plan_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonTablePathScan::plan() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTablePathScan.plan) return _internal_plan(); } inline void JsonTablePathScan::unsafe_arena_set_allocated_plan(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.plan_); } _impl_.plan_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTablePathScan.plan) } inline ::pg_query::Node* JsonTablePathScan::release_plan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.plan_; _impl_.plan_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonTablePathScan::unsafe_arena_release_plan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTablePathScan.plan) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.plan_; _impl_.plan_ = nullptr; return temp; } inline ::pg_query::Node* JsonTablePathScan::_internal_mutable_plan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.plan_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.plan_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.plan_; } inline ::pg_query::Node* JsonTablePathScan::mutable_plan() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_plan(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTablePathScan.plan) return _msg; } inline void JsonTablePathScan::set_allocated_plan(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.plan_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.plan_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTablePathScan.plan) } // .pg_query.JsonTablePath path = 2 [json_name = "path"]; inline bool JsonTablePathScan::has_path() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.path_ != nullptr); return value; } inline void JsonTablePathScan::clear_path() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.path_ != nullptr) _impl_.path_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::JsonTablePath& JsonTablePathScan::_internal_path() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonTablePath* p = _impl_.path_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonTablePath_default_instance_); } inline const ::pg_query::JsonTablePath& JsonTablePathScan::path() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTablePathScan.path) return _internal_path(); } inline void JsonTablePathScan::unsafe_arena_set_allocated_path(::pg_query::JsonTablePath* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.path_); } _impl_.path_ = reinterpret_cast<::pg_query::JsonTablePath*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTablePathScan.path) } inline ::pg_query::JsonTablePath* JsonTablePathScan::release_path() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonTablePath* released = _impl_.path_; _impl_.path_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonTablePath* JsonTablePathScan::unsafe_arena_release_path() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTablePathScan.path) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonTablePath* temp = _impl_.path_; _impl_.path_ = nullptr; return temp; } inline ::pg_query::JsonTablePath* JsonTablePathScan::_internal_mutable_path() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.path_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonTablePath>(GetArena()); _impl_.path_ = reinterpret_cast<::pg_query::JsonTablePath*>(p); } return _impl_.path_; } inline ::pg_query::JsonTablePath* JsonTablePathScan::mutable_path() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonTablePath* _msg = _internal_mutable_path(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTablePathScan.path) return _msg; } inline void JsonTablePathScan::set_allocated_path(::pg_query::JsonTablePath* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonTablePath*>(_impl_.path_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonTablePath*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.path_ = reinterpret_cast<::pg_query::JsonTablePath*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTablePathScan.path) } // bool error_on_error = 3 [json_name = "errorOnError"]; inline void JsonTablePathScan::clear_error_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.error_on_error_ = false; } inline bool JsonTablePathScan::error_on_error() const { // @@protoc_insertion_point(field_get:pg_query.JsonTablePathScan.error_on_error) return _internal_error_on_error(); } inline void JsonTablePathScan::set_error_on_error(bool value) { _internal_set_error_on_error(value); // @@protoc_insertion_point(field_set:pg_query.JsonTablePathScan.error_on_error) } inline bool JsonTablePathScan::_internal_error_on_error() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.error_on_error_; } inline void JsonTablePathScan::_internal_set_error_on_error(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.error_on_error_ = value; } // .pg_query.Node child = 4 [json_name = "child"]; inline bool JsonTablePathScan::has_child() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.child_ != nullptr); return value; } inline void JsonTablePathScan::clear_child() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.child_ != nullptr) _impl_.child_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& JsonTablePathScan::_internal_child() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.child_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonTablePathScan::child() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTablePathScan.child) return _internal_child(); } inline void JsonTablePathScan::unsafe_arena_set_allocated_child(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.child_); } _impl_.child_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTablePathScan.child) } inline ::pg_query::Node* JsonTablePathScan::release_child() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.child_; _impl_.child_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonTablePathScan::unsafe_arena_release_child() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTablePathScan.child) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.child_; _impl_.child_ = nullptr; return temp; } inline ::pg_query::Node* JsonTablePathScan::_internal_mutable_child() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.child_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.child_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.child_; } inline ::pg_query::Node* JsonTablePathScan::mutable_child() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_child(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTablePathScan.child) return _msg; } inline void JsonTablePathScan::set_allocated_child(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.child_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.child_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTablePathScan.child) } // int32 col_min = 5 [json_name = "colMin"]; inline void JsonTablePathScan::clear_col_min() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.col_min_ = 0; } inline ::int32_t JsonTablePathScan::col_min() const { // @@protoc_insertion_point(field_get:pg_query.JsonTablePathScan.col_min) return _internal_col_min(); } inline void JsonTablePathScan::set_col_min(::int32_t value) { _internal_set_col_min(value); // @@protoc_insertion_point(field_set:pg_query.JsonTablePathScan.col_min) } inline ::int32_t JsonTablePathScan::_internal_col_min() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.col_min_; } inline void JsonTablePathScan::_internal_set_col_min(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.col_min_ = value; } // int32 col_max = 6 [json_name = "colMax"]; inline void JsonTablePathScan::clear_col_max() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.col_max_ = 0; } inline ::int32_t JsonTablePathScan::col_max() const { // @@protoc_insertion_point(field_get:pg_query.JsonTablePathScan.col_max) return _internal_col_max(); } inline void JsonTablePathScan::set_col_max(::int32_t value) { _internal_set_col_max(value); // @@protoc_insertion_point(field_set:pg_query.JsonTablePathScan.col_max) } inline ::int32_t JsonTablePathScan::_internal_col_max() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.col_max_; } inline void JsonTablePathScan::_internal_set_col_max(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.col_max_ = value; } // ------------------------------------------------------------------- // JsonTableSiblingJoin // .pg_query.Node plan = 1 [json_name = "plan"]; inline bool JsonTableSiblingJoin::has_plan() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.plan_ != nullptr); return value; } inline void JsonTableSiblingJoin::clear_plan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.plan_ != nullptr) _impl_.plan_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& JsonTableSiblingJoin::_internal_plan() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.plan_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonTableSiblingJoin::plan() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTableSiblingJoin.plan) return _internal_plan(); } inline void JsonTableSiblingJoin::unsafe_arena_set_allocated_plan(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.plan_); } _impl_.plan_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTableSiblingJoin.plan) } inline ::pg_query::Node* JsonTableSiblingJoin::release_plan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.plan_; _impl_.plan_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonTableSiblingJoin::unsafe_arena_release_plan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTableSiblingJoin.plan) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.plan_; _impl_.plan_ = nullptr; return temp; } inline ::pg_query::Node* JsonTableSiblingJoin::_internal_mutable_plan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.plan_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.plan_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.plan_; } inline ::pg_query::Node* JsonTableSiblingJoin::mutable_plan() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_plan(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTableSiblingJoin.plan) return _msg; } inline void JsonTableSiblingJoin::set_allocated_plan(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.plan_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.plan_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTableSiblingJoin.plan) } // .pg_query.Node lplan = 2 [json_name = "lplan"]; inline bool JsonTableSiblingJoin::has_lplan() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.lplan_ != nullptr); return value; } inline void JsonTableSiblingJoin::clear_lplan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.lplan_ != nullptr) _impl_.lplan_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& JsonTableSiblingJoin::_internal_lplan() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.lplan_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonTableSiblingJoin::lplan() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTableSiblingJoin.lplan) return _internal_lplan(); } inline void JsonTableSiblingJoin::unsafe_arena_set_allocated_lplan(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.lplan_); } _impl_.lplan_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTableSiblingJoin.lplan) } inline ::pg_query::Node* JsonTableSiblingJoin::release_lplan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.lplan_; _impl_.lplan_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonTableSiblingJoin::unsafe_arena_release_lplan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTableSiblingJoin.lplan) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.lplan_; _impl_.lplan_ = nullptr; return temp; } inline ::pg_query::Node* JsonTableSiblingJoin::_internal_mutable_lplan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.lplan_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.lplan_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.lplan_; } inline ::pg_query::Node* JsonTableSiblingJoin::mutable_lplan() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_lplan(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTableSiblingJoin.lplan) return _msg; } inline void JsonTableSiblingJoin::set_allocated_lplan(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.lplan_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.lplan_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTableSiblingJoin.lplan) } // .pg_query.Node rplan = 3 [json_name = "rplan"]; inline bool JsonTableSiblingJoin::has_rplan() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.rplan_ != nullptr); return value; } inline void JsonTableSiblingJoin::clear_rplan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.rplan_ != nullptr) _impl_.rplan_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& JsonTableSiblingJoin::_internal_rplan() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.rplan_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonTableSiblingJoin::rplan() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTableSiblingJoin.rplan) return _internal_rplan(); } inline void JsonTableSiblingJoin::unsafe_arena_set_allocated_rplan(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rplan_); } _impl_.rplan_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTableSiblingJoin.rplan) } inline ::pg_query::Node* JsonTableSiblingJoin::release_rplan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.rplan_; _impl_.rplan_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonTableSiblingJoin::unsafe_arena_release_rplan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTableSiblingJoin.rplan) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.rplan_; _impl_.rplan_ = nullptr; return temp; } inline ::pg_query::Node* JsonTableSiblingJoin::_internal_mutable_rplan() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.rplan_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.rplan_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.rplan_; } inline ::pg_query::Node* JsonTableSiblingJoin::mutable_rplan() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_rplan(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTableSiblingJoin.rplan) return _msg; } inline void JsonTableSiblingJoin::set_allocated_rplan(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.rplan_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.rplan_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTableSiblingJoin.rplan) } // ------------------------------------------------------------------- // NullTest // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool NullTest::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void NullTest::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& NullTest::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& NullTest::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.NullTest.xpr) return _internal_xpr(); } inline void NullTest::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NullTest.xpr) } inline ::pg_query::Node* NullTest::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* NullTest::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.NullTest.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* NullTest::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* NullTest::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.NullTest.xpr) return _msg; } inline void NullTest::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.NullTest.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool NullTest::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void NullTest::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& NullTest::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& NullTest::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.NullTest.arg) return _internal_arg(); } inline void NullTest::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NullTest.arg) } inline ::pg_query::Node* NullTest::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* NullTest::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.NullTest.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* NullTest::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* NullTest::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.NullTest.arg) return _msg; } inline void NullTest::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.NullTest.arg) } // .pg_query.NullTestType nulltesttype = 3 [json_name = "nulltesttype"]; inline void NullTest::clear_nulltesttype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.nulltesttype_ = 0; } inline ::pg_query::NullTestType NullTest::nulltesttype() const { // @@protoc_insertion_point(field_get:pg_query.NullTest.nulltesttype) return _internal_nulltesttype(); } inline void NullTest::set_nulltesttype(::pg_query::NullTestType value) { _internal_set_nulltesttype(value); // @@protoc_insertion_point(field_set:pg_query.NullTest.nulltesttype) } inline ::pg_query::NullTestType NullTest::_internal_nulltesttype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::NullTestType>(_impl_.nulltesttype_); } inline void NullTest::_internal_set_nulltesttype(::pg_query::NullTestType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.nulltesttype_ = value; } // bool argisrow = 4 [json_name = "argisrow"]; inline void NullTest::clear_argisrow() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.argisrow_ = false; } inline bool NullTest::argisrow() const { // @@protoc_insertion_point(field_get:pg_query.NullTest.argisrow) return _internal_argisrow(); } inline void NullTest::set_argisrow(bool value) { _internal_set_argisrow(value); // @@protoc_insertion_point(field_set:pg_query.NullTest.argisrow) } inline bool NullTest::_internal_argisrow() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.argisrow_; } inline void NullTest::_internal_set_argisrow(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.argisrow_ = value; } // int32 location = 5 [json_name = "location"]; inline void NullTest::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t NullTest::location() const { // @@protoc_insertion_point(field_get:pg_query.NullTest.location) return _internal_location(); } inline void NullTest::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.NullTest.location) } inline ::int32_t NullTest::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void NullTest::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // BooleanTest // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool BooleanTest::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void BooleanTest::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& BooleanTest::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& BooleanTest::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.BooleanTest.xpr) return _internal_xpr(); } inline void BooleanTest::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.BooleanTest.xpr) } inline ::pg_query::Node* BooleanTest::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* BooleanTest::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.BooleanTest.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* BooleanTest::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* BooleanTest::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.BooleanTest.xpr) return _msg; } inline void BooleanTest::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.BooleanTest.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool BooleanTest::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void BooleanTest::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& BooleanTest::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& BooleanTest::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.BooleanTest.arg) return _internal_arg(); } inline void BooleanTest::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.BooleanTest.arg) } inline ::pg_query::Node* BooleanTest::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* BooleanTest::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.BooleanTest.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* BooleanTest::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* BooleanTest::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.BooleanTest.arg) return _msg; } inline void BooleanTest::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.BooleanTest.arg) } // .pg_query.BoolTestType booltesttype = 3 [json_name = "booltesttype"]; inline void BooleanTest::clear_booltesttype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.booltesttype_ = 0; } inline ::pg_query::BoolTestType BooleanTest::booltesttype() const { // @@protoc_insertion_point(field_get:pg_query.BooleanTest.booltesttype) return _internal_booltesttype(); } inline void BooleanTest::set_booltesttype(::pg_query::BoolTestType value) { _internal_set_booltesttype(value); // @@protoc_insertion_point(field_set:pg_query.BooleanTest.booltesttype) } inline ::pg_query::BoolTestType BooleanTest::_internal_booltesttype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::BoolTestType>(_impl_.booltesttype_); } inline void BooleanTest::_internal_set_booltesttype(::pg_query::BoolTestType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.booltesttype_ = value; } // int32 location = 4 [json_name = "location"]; inline void BooleanTest::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t BooleanTest::location() const { // @@protoc_insertion_point(field_get:pg_query.BooleanTest.location) return _internal_location(); } inline void BooleanTest::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.BooleanTest.location) } inline ::int32_t BooleanTest::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void BooleanTest::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // MergeAction // .pg_query.MergeMatchKind match_kind = 1 [json_name = "matchKind"]; inline void MergeAction::clear_match_kind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.match_kind_ = 0; } inline ::pg_query::MergeMatchKind MergeAction::match_kind() const { // @@protoc_insertion_point(field_get:pg_query.MergeAction.match_kind) return _internal_match_kind(); } inline void MergeAction::set_match_kind(::pg_query::MergeMatchKind value) { _internal_set_match_kind(value); // @@protoc_insertion_point(field_set:pg_query.MergeAction.match_kind) } inline ::pg_query::MergeMatchKind MergeAction::_internal_match_kind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::MergeMatchKind>(_impl_.match_kind_); } inline void MergeAction::_internal_set_match_kind(::pg_query::MergeMatchKind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.match_kind_ = value; } // .pg_query.CmdType command_type = 2 [json_name = "commandType"]; inline void MergeAction::clear_command_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.command_type_ = 0; } inline ::pg_query::CmdType MergeAction::command_type() const { // @@protoc_insertion_point(field_get:pg_query.MergeAction.command_type) return _internal_command_type(); } inline void MergeAction::set_command_type(::pg_query::CmdType value) { _internal_set_command_type(value); // @@protoc_insertion_point(field_set:pg_query.MergeAction.command_type) } inline ::pg_query::CmdType MergeAction::_internal_command_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::CmdType>(_impl_.command_type_); } inline void MergeAction::_internal_set_command_type(::pg_query::CmdType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.command_type_ = value; } // .pg_query.OverridingKind override = 3 [json_name = "override"]; inline void MergeAction::clear_override() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.override_ = 0; } inline ::pg_query::OverridingKind MergeAction::override() const { // @@protoc_insertion_point(field_get:pg_query.MergeAction.override) return _internal_override(); } inline void MergeAction::set_override(::pg_query::OverridingKind value) { _internal_set_override(value); // @@protoc_insertion_point(field_set:pg_query.MergeAction.override) } inline ::pg_query::OverridingKind MergeAction::_internal_override() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::OverridingKind>(_impl_.override_); } inline void MergeAction::_internal_set_override(::pg_query::OverridingKind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.override_ = value; } // .pg_query.Node qual = 4 [json_name = "qual"]; inline bool MergeAction::has_qual() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.qual_ != nullptr); return value; } inline void MergeAction::clear_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.qual_ != nullptr) _impl_.qual_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& MergeAction::_internal_qual() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.qual_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& MergeAction::qual() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MergeAction.qual) return _internal_qual(); } inline void MergeAction::unsafe_arena_set_allocated_qual(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.qual_); } _impl_.qual_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MergeAction.qual) } inline ::pg_query::Node* MergeAction::release_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.qual_; _impl_.qual_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* MergeAction::unsafe_arena_release_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.MergeAction.qual) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.qual_; _impl_.qual_ = nullptr; return temp; } inline ::pg_query::Node* MergeAction::_internal_mutable_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.qual_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.qual_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.qual_; } inline ::pg_query::Node* MergeAction::mutable_qual() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_qual(); // @@protoc_insertion_point(field_mutable:pg_query.MergeAction.qual) return _msg; } inline void MergeAction::set_allocated_qual(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.qual_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.qual_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.MergeAction.qual) } // repeated .pg_query.Node target_list = 5 [json_name = "targetList"]; inline int MergeAction::_internal_target_list_size() const { return _internal_target_list().size(); } inline int MergeAction::target_list_size() const { return _internal_target_list_size(); } inline void MergeAction::clear_target_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.target_list_.Clear(); } inline ::pg_query::Node* MergeAction::mutable_target_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.MergeAction.target_list) return _internal_mutable_target_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* MergeAction::mutable_target_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.MergeAction.target_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_target_list(); } inline const ::pg_query::Node& MergeAction::target_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MergeAction.target_list) return _internal_target_list().Get(index); } inline ::pg_query::Node* MergeAction::add_target_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_target_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.MergeAction.target_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& MergeAction::target_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.MergeAction.target_list) return _internal_target_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& MergeAction::_internal_target_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.target_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* MergeAction::_internal_mutable_target_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.target_list_; } // repeated .pg_query.Node update_colnos = 6 [json_name = "updateColnos"]; inline int MergeAction::_internal_update_colnos_size() const { return _internal_update_colnos().size(); } inline int MergeAction::update_colnos_size() const { return _internal_update_colnos_size(); } inline void MergeAction::clear_update_colnos() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.update_colnos_.Clear(); } inline ::pg_query::Node* MergeAction::mutable_update_colnos(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.MergeAction.update_colnos) return _internal_mutable_update_colnos()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* MergeAction::mutable_update_colnos() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.MergeAction.update_colnos) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_update_colnos(); } inline const ::pg_query::Node& MergeAction::update_colnos(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MergeAction.update_colnos) return _internal_update_colnos().Get(index); } inline ::pg_query::Node* MergeAction::add_update_colnos() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_update_colnos()->Add(); // @@protoc_insertion_point(field_add:pg_query.MergeAction.update_colnos) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& MergeAction::update_colnos() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.MergeAction.update_colnos) return _internal_update_colnos(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& MergeAction::_internal_update_colnos() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.update_colnos_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* MergeAction::_internal_mutable_update_colnos() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.update_colnos_; } // ------------------------------------------------------------------- // CoerceToDomain // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CoerceToDomain::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void CoerceToDomain::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& CoerceToDomain::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CoerceToDomain::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.xpr) return _internal_xpr(); } inline void CoerceToDomain::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceToDomain.xpr) } inline ::pg_query::Node* CoerceToDomain::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CoerceToDomain::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CoerceToDomain.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CoerceToDomain::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* CoerceToDomain::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.CoerceToDomain.xpr) return _msg; } inline void CoerceToDomain::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceToDomain.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool CoerceToDomain::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void CoerceToDomain::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& CoerceToDomain::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CoerceToDomain::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.arg) return _internal_arg(); } inline void CoerceToDomain::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceToDomain.arg) } inline ::pg_query::Node* CoerceToDomain::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CoerceToDomain::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CoerceToDomain.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* CoerceToDomain::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* CoerceToDomain::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.CoerceToDomain.arg) return _msg; } inline void CoerceToDomain::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceToDomain.arg) } // uint32 resulttype = 3 [json_name = "resulttype"]; inline void CoerceToDomain::clear_resulttype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resulttype_ = 0u; } inline ::uint32_t CoerceToDomain::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.resulttype) return _internal_resulttype(); } inline void CoerceToDomain::set_resulttype(::uint32_t value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.resulttype) } inline ::uint32_t CoerceToDomain::_internal_resulttype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resulttype_; } inline void CoerceToDomain::_internal_set_resulttype(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resulttype_ = value; } // int32 resulttypmod = 4 [json_name = "resulttypmod"]; inline void CoerceToDomain::clear_resulttypmod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resulttypmod_ = 0; } inline ::int32_t CoerceToDomain::resulttypmod() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.resulttypmod) return _internal_resulttypmod(); } inline void CoerceToDomain::set_resulttypmod(::int32_t value) { _internal_set_resulttypmod(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.resulttypmod) } inline ::int32_t CoerceToDomain::_internal_resulttypmod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resulttypmod_; } inline void CoerceToDomain::_internal_set_resulttypmod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resulttypmod_ = value; } // uint32 resultcollid = 5 [json_name = "resultcollid"]; inline void CoerceToDomain::clear_resultcollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resultcollid_ = 0u; } inline ::uint32_t CoerceToDomain::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.resultcollid) return _internal_resultcollid(); } inline void CoerceToDomain::set_resultcollid(::uint32_t value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.resultcollid) } inline ::uint32_t CoerceToDomain::_internal_resultcollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resultcollid_; } inline void CoerceToDomain::_internal_set_resultcollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resultcollid_ = value; } // .pg_query.CoercionForm coercionformat = 6 [json_name = "coercionformat"]; inline void CoerceToDomain::clear_coercionformat() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coercionformat_ = 0; } inline ::pg_query::CoercionForm CoerceToDomain::coercionformat() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.coercionformat) return _internal_coercionformat(); } inline void CoerceToDomain::set_coercionformat(::pg_query::CoercionForm value) { _internal_set_coercionformat(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.coercionformat) } inline ::pg_query::CoercionForm CoerceToDomain::_internal_coercionformat() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::CoercionForm>(_impl_.coercionformat_); } inline void CoerceToDomain::_internal_set_coercionformat(::pg_query::CoercionForm value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.coercionformat_ = value; } // int32 location = 7 [json_name = "location"]; inline void CoerceToDomain::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t CoerceToDomain::location() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.location) return _internal_location(); } inline void CoerceToDomain::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.location) } inline ::int32_t CoerceToDomain::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void CoerceToDomain::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // CoerceToDomainValue // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CoerceToDomainValue::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void CoerceToDomainValue::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& CoerceToDomainValue::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CoerceToDomainValue::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.xpr) return _internal_xpr(); } inline void CoerceToDomainValue::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceToDomainValue.xpr) } inline ::pg_query::Node* CoerceToDomainValue::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CoerceToDomainValue::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CoerceToDomainValue.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CoerceToDomainValue::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* CoerceToDomainValue::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.CoerceToDomainValue.xpr) return _msg; } inline void CoerceToDomainValue::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceToDomainValue.xpr) } // uint32 type_id = 2 [json_name = "typeId"]; inline void CoerceToDomainValue::clear_type_id() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_id_ = 0u; } inline ::uint32_t CoerceToDomainValue::type_id() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.type_id) return _internal_type_id(); } inline void CoerceToDomainValue::set_type_id(::uint32_t value) { _internal_set_type_id(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.type_id) } inline ::uint32_t CoerceToDomainValue::_internal_type_id() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_id_; } inline void CoerceToDomainValue::_internal_set_type_id(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.type_id_ = value; } // int32 type_mod = 3 [json_name = "typeMod"]; inline void CoerceToDomainValue::clear_type_mod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_mod_ = 0; } inline ::int32_t CoerceToDomainValue::type_mod() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.type_mod) return _internal_type_mod(); } inline void CoerceToDomainValue::set_type_mod(::int32_t value) { _internal_set_type_mod(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.type_mod) } inline ::int32_t CoerceToDomainValue::_internal_type_mod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_mod_; } inline void CoerceToDomainValue::_internal_set_type_mod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.type_mod_ = value; } // uint32 collation = 4 [json_name = "collation"]; inline void CoerceToDomainValue::clear_collation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.collation_ = 0u; } inline ::uint32_t CoerceToDomainValue::collation() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.collation) return _internal_collation(); } inline void CoerceToDomainValue::set_collation(::uint32_t value) { _internal_set_collation(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.collation) } inline ::uint32_t CoerceToDomainValue::_internal_collation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.collation_; } inline void CoerceToDomainValue::_internal_set_collation(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.collation_ = value; } // int32 location = 5 [json_name = "location"]; inline void CoerceToDomainValue::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t CoerceToDomainValue::location() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.location) return _internal_location(); } inline void CoerceToDomainValue::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.location) } inline ::int32_t CoerceToDomainValue::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void CoerceToDomainValue::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // SetToDefault // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SetToDefault::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void SetToDefault::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& SetToDefault::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SetToDefault::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.xpr) return _internal_xpr(); } inline void SetToDefault::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SetToDefault.xpr) } inline ::pg_query::Node* SetToDefault::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SetToDefault::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SetToDefault.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* SetToDefault::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* SetToDefault::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.SetToDefault.xpr) return _msg; } inline void SetToDefault::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.SetToDefault.xpr) } // uint32 type_id = 2 [json_name = "typeId"]; inline void SetToDefault::clear_type_id() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_id_ = 0u; } inline ::uint32_t SetToDefault::type_id() const { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.type_id) return _internal_type_id(); } inline void SetToDefault::set_type_id(::uint32_t value) { _internal_set_type_id(value); // @@protoc_insertion_point(field_set:pg_query.SetToDefault.type_id) } inline ::uint32_t SetToDefault::_internal_type_id() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_id_; } inline void SetToDefault::_internal_set_type_id(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.type_id_ = value; } // int32 type_mod = 3 [json_name = "typeMod"]; inline void SetToDefault::clear_type_mod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_mod_ = 0; } inline ::int32_t SetToDefault::type_mod() const { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.type_mod) return _internal_type_mod(); } inline void SetToDefault::set_type_mod(::int32_t value) { _internal_set_type_mod(value); // @@protoc_insertion_point(field_set:pg_query.SetToDefault.type_mod) } inline ::int32_t SetToDefault::_internal_type_mod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_mod_; } inline void SetToDefault::_internal_set_type_mod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.type_mod_ = value; } // uint32 collation = 4 [json_name = "collation"]; inline void SetToDefault::clear_collation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.collation_ = 0u; } inline ::uint32_t SetToDefault::collation() const { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.collation) return _internal_collation(); } inline void SetToDefault::set_collation(::uint32_t value) { _internal_set_collation(value); // @@protoc_insertion_point(field_set:pg_query.SetToDefault.collation) } inline ::uint32_t SetToDefault::_internal_collation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.collation_; } inline void SetToDefault::_internal_set_collation(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.collation_ = value; } // int32 location = 5 [json_name = "location"]; inline void SetToDefault::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t SetToDefault::location() const { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.location) return _internal_location(); } inline void SetToDefault::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.SetToDefault.location) } inline ::int32_t SetToDefault::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void SetToDefault::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // CurrentOfExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CurrentOfExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void CurrentOfExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& CurrentOfExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CurrentOfExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.xpr) return _internal_xpr(); } inline void CurrentOfExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CurrentOfExpr.xpr) } inline ::pg_query::Node* CurrentOfExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CurrentOfExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CurrentOfExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* CurrentOfExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* CurrentOfExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.CurrentOfExpr.xpr) return _msg; } inline void CurrentOfExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CurrentOfExpr.xpr) } // uint32 cvarno = 2 [json_name = "cvarno"]; inline void CurrentOfExpr::clear_cvarno() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cvarno_ = 0u; } inline ::uint32_t CurrentOfExpr::cvarno() const { // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.cvarno) return _internal_cvarno(); } inline void CurrentOfExpr::set_cvarno(::uint32_t value) { _internal_set_cvarno(value); // @@protoc_insertion_point(field_set:pg_query.CurrentOfExpr.cvarno) } inline ::uint32_t CurrentOfExpr::_internal_cvarno() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cvarno_; } inline void CurrentOfExpr::_internal_set_cvarno(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cvarno_ = value; } // string cursor_name = 3 [json_name = "cursor_name"]; inline void CurrentOfExpr::clear_cursor_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cursor_name_.ClearToEmpty(); } inline const std::string& CurrentOfExpr::cursor_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.cursor_name) return _internal_cursor_name(); } template inline PROTOBUF_ALWAYS_INLINE void CurrentOfExpr::set_cursor_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cursor_name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CurrentOfExpr.cursor_name) } inline std::string* CurrentOfExpr::mutable_cursor_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_cursor_name(); // @@protoc_insertion_point(field_mutable:pg_query.CurrentOfExpr.cursor_name) return _s; } inline const std::string& CurrentOfExpr::_internal_cursor_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cursor_name_.Get(); } inline void CurrentOfExpr::_internal_set_cursor_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cursor_name_.Set(value, GetArena()); } inline std::string* CurrentOfExpr::_internal_mutable_cursor_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.cursor_name_.Mutable( GetArena()); } inline std::string* CurrentOfExpr::release_cursor_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CurrentOfExpr.cursor_name) return _impl_.cursor_name_.Release(); } inline void CurrentOfExpr::set_allocated_cursor_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cursor_name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.cursor_name_.IsDefault()) { _impl_.cursor_name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cursor_param_ = 0; } inline ::int32_t CurrentOfExpr::cursor_param() const { // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.cursor_param) return _internal_cursor_param(); } inline void CurrentOfExpr::set_cursor_param(::int32_t value) { _internal_set_cursor_param(value); // @@protoc_insertion_point(field_set:pg_query.CurrentOfExpr.cursor_param) } inline ::int32_t CurrentOfExpr::_internal_cursor_param() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cursor_param_; } inline void CurrentOfExpr::_internal_set_cursor_param(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cursor_param_ = value; } // ------------------------------------------------------------------- // NextValueExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool NextValueExpr::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void NextValueExpr::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& NextValueExpr::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& NextValueExpr::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.NextValueExpr.xpr) return _internal_xpr(); } inline void NextValueExpr::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NextValueExpr.xpr) } inline ::pg_query::Node* NextValueExpr::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* NextValueExpr::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.NextValueExpr.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* NextValueExpr::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* NextValueExpr::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.NextValueExpr.xpr) return _msg; } inline void NextValueExpr::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.NextValueExpr.xpr) } // uint32 seqid = 2 [json_name = "seqid"]; inline void NextValueExpr::clear_seqid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.seqid_ = 0u; } inline ::uint32_t NextValueExpr::seqid() const { // @@protoc_insertion_point(field_get:pg_query.NextValueExpr.seqid) return _internal_seqid(); } inline void NextValueExpr::set_seqid(::uint32_t value) { _internal_set_seqid(value); // @@protoc_insertion_point(field_set:pg_query.NextValueExpr.seqid) } inline ::uint32_t NextValueExpr::_internal_seqid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.seqid_; } inline void NextValueExpr::_internal_set_seqid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.seqid_ = value; } // uint32 type_id = 3 [json_name = "typeId"]; inline void NextValueExpr::clear_type_id() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_id_ = 0u; } inline ::uint32_t NextValueExpr::type_id() const { // @@protoc_insertion_point(field_get:pg_query.NextValueExpr.type_id) return _internal_type_id(); } inline void NextValueExpr::set_type_id(::uint32_t value) { _internal_set_type_id(value); // @@protoc_insertion_point(field_set:pg_query.NextValueExpr.type_id) } inline ::uint32_t NextValueExpr::_internal_type_id() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_id_; } inline void NextValueExpr::_internal_set_type_id(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.type_id_ = value; } // ------------------------------------------------------------------- // InferenceElem // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool InferenceElem::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void InferenceElem::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& InferenceElem::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& InferenceElem::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.InferenceElem.xpr) return _internal_xpr(); } inline void InferenceElem::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InferenceElem.xpr) } inline ::pg_query::Node* InferenceElem::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* InferenceElem::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.InferenceElem.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* InferenceElem::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* InferenceElem::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.InferenceElem.xpr) return _msg; } inline void InferenceElem::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.InferenceElem.xpr) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool InferenceElem::has_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.expr_ != nullptr); return value; } inline void InferenceElem::clear_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.expr_ != nullptr) _impl_.expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& InferenceElem::_internal_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& InferenceElem::expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.InferenceElem.expr) return _internal_expr(); } inline void InferenceElem::unsafe_arena_set_allocated_expr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expr_); } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InferenceElem.expr) } inline ::pg_query::Node* InferenceElem::release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* InferenceElem::unsafe_arena_release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.InferenceElem.expr) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* InferenceElem::_internal_mutable_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.expr_; } inline ::pg_query::Node* InferenceElem::mutable_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_expr(); // @@protoc_insertion_point(field_mutable:pg_query.InferenceElem.expr) return _msg; } inline void InferenceElem::set_allocated_expr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.InferenceElem.expr) } // uint32 infercollid = 3 [json_name = "infercollid"]; inline void InferenceElem::clear_infercollid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.infercollid_ = 0u; } inline ::uint32_t InferenceElem::infercollid() const { // @@protoc_insertion_point(field_get:pg_query.InferenceElem.infercollid) return _internal_infercollid(); } inline void InferenceElem::set_infercollid(::uint32_t value) { _internal_set_infercollid(value); // @@protoc_insertion_point(field_set:pg_query.InferenceElem.infercollid) } inline ::uint32_t InferenceElem::_internal_infercollid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.infercollid_; } inline void InferenceElem::_internal_set_infercollid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.infercollid_ = value; } // uint32 inferopclass = 4 [json_name = "inferopclass"]; inline void InferenceElem::clear_inferopclass() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inferopclass_ = 0u; } inline ::uint32_t InferenceElem::inferopclass() const { // @@protoc_insertion_point(field_get:pg_query.InferenceElem.inferopclass) return _internal_inferopclass(); } inline void InferenceElem::set_inferopclass(::uint32_t value) { _internal_set_inferopclass(value); // @@protoc_insertion_point(field_set:pg_query.InferenceElem.inferopclass) } inline ::uint32_t InferenceElem::_internal_inferopclass() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inferopclass_; } inline void InferenceElem::_internal_set_inferopclass(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inferopclass_ = value; } // ------------------------------------------------------------------- // TargetEntry // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool TargetEntry::has_xpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.xpr_ != nullptr); return value; } inline void TargetEntry::clear_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.xpr_ != nullptr) _impl_.xpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& TargetEntry::_internal_xpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.xpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& TargetEntry::xpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.xpr) return _internal_xpr(); } inline void TargetEntry::unsafe_arena_set_allocated_xpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.xpr_); } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TargetEntry.xpr) } inline ::pg_query::Node* TargetEntry::release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.xpr_; _impl_.xpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* TargetEntry::unsafe_arena_release_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.TargetEntry.xpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.xpr_; _impl_.xpr_ = nullptr; return temp; } inline ::pg_query::Node* TargetEntry::_internal_mutable_xpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.xpr_; } inline ::pg_query::Node* TargetEntry::mutable_xpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_xpr(); // @@protoc_insertion_point(field_mutable:pg_query.TargetEntry.xpr) return _msg; } inline void TargetEntry::set_allocated_xpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.xpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.xpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.TargetEntry.xpr) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool TargetEntry::has_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.expr_ != nullptr); return value; } inline void TargetEntry::clear_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.expr_ != nullptr) _impl_.expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& TargetEntry::_internal_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& TargetEntry::expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.expr) return _internal_expr(); } inline void TargetEntry::unsafe_arena_set_allocated_expr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expr_); } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TargetEntry.expr) } inline ::pg_query::Node* TargetEntry::release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* TargetEntry::unsafe_arena_release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.TargetEntry.expr) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* TargetEntry::_internal_mutable_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.expr_; } inline ::pg_query::Node* TargetEntry::mutable_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_expr(); // @@protoc_insertion_point(field_mutable:pg_query.TargetEntry.expr) return _msg; } inline void TargetEntry::set_allocated_expr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.TargetEntry.expr) } // int32 resno = 3 [json_name = "resno"]; inline void TargetEntry::clear_resno() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resno_ = 0; } inline ::int32_t TargetEntry::resno() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resno) return _internal_resno(); } inline void TargetEntry::set_resno(::int32_t value) { _internal_set_resno(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resno) } inline ::int32_t TargetEntry::_internal_resno() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resno_; } inline void TargetEntry::_internal_set_resno(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resno_ = value; } // string resname = 4 [json_name = "resname"]; inline void TargetEntry::clear_resname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resname_.ClearToEmpty(); } inline const std::string& TargetEntry::resname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resname) return _internal_resname(); } template inline PROTOBUF_ALWAYS_INLINE void TargetEntry::set_resname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resname) } inline std::string* TargetEntry::mutable_resname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_resname(); // @@protoc_insertion_point(field_mutable:pg_query.TargetEntry.resname) return _s; } inline const std::string& TargetEntry::_internal_resname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resname_.Get(); } inline void TargetEntry::_internal_set_resname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resname_.Set(value, GetArena()); } inline std::string* TargetEntry::_internal_mutable_resname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.resname_.Mutable( GetArena()); } inline std::string* TargetEntry::release_resname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.TargetEntry.resname) return _impl_.resname_.Release(); } inline void TargetEntry::set_allocated_resname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.resname_.IsDefault()) { _impl_.resname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.TargetEntry.resname) } // uint32 ressortgroupref = 5 [json_name = "ressortgroupref"]; inline void TargetEntry::clear_ressortgroupref() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ressortgroupref_ = 0u; } inline ::uint32_t TargetEntry::ressortgroupref() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.ressortgroupref) return _internal_ressortgroupref(); } inline void TargetEntry::set_ressortgroupref(::uint32_t value) { _internal_set_ressortgroupref(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.ressortgroupref) } inline ::uint32_t TargetEntry::_internal_ressortgroupref() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ressortgroupref_; } inline void TargetEntry::_internal_set_ressortgroupref(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.ressortgroupref_ = value; } // uint32 resorigtbl = 6 [json_name = "resorigtbl"]; inline void TargetEntry::clear_resorigtbl() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resorigtbl_ = 0u; } inline ::uint32_t TargetEntry::resorigtbl() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resorigtbl) return _internal_resorigtbl(); } inline void TargetEntry::set_resorigtbl(::uint32_t value) { _internal_set_resorigtbl(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resorigtbl) } inline ::uint32_t TargetEntry::_internal_resorigtbl() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resorigtbl_; } inline void TargetEntry::_internal_set_resorigtbl(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resorigtbl_ = value; } // int32 resorigcol = 7 [json_name = "resorigcol"]; inline void TargetEntry::clear_resorigcol() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resorigcol_ = 0; } inline ::int32_t TargetEntry::resorigcol() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resorigcol) return _internal_resorigcol(); } inline void TargetEntry::set_resorigcol(::int32_t value) { _internal_set_resorigcol(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resorigcol) } inline ::int32_t TargetEntry::_internal_resorigcol() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resorigcol_; } inline void TargetEntry::_internal_set_resorigcol(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resorigcol_ = value; } // bool resjunk = 8 [json_name = "resjunk"]; inline void TargetEntry::clear_resjunk() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.resjunk_ = false; } inline bool TargetEntry::resjunk() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resjunk) return _internal_resjunk(); } inline void TargetEntry::set_resjunk(bool value) { _internal_set_resjunk(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resjunk) } inline bool TargetEntry::_internal_resjunk() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.resjunk_; } inline void TargetEntry::_internal_set_resjunk(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.resjunk_ = value; } // ------------------------------------------------------------------- // RangeTblRef // int32 rtindex = 1 [json_name = "rtindex"]; inline void RangeTblRef::clear_rtindex() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rtindex_ = 0; } inline ::int32_t RangeTblRef::rtindex() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblRef.rtindex) return _internal_rtindex(); } inline void RangeTblRef::set_rtindex(::int32_t value) { _internal_set_rtindex(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblRef.rtindex) } inline ::int32_t RangeTblRef::_internal_rtindex() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.rtindex_; } inline void RangeTblRef::_internal_set_rtindex(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.rtindex_ = value; } // ------------------------------------------------------------------- // JoinExpr // .pg_query.JoinType jointype = 1 [json_name = "jointype"]; inline void JoinExpr::clear_jointype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.jointype_ = 0; } inline ::pg_query::JoinType JoinExpr::jointype() const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.jointype) return _internal_jointype(); } inline void JoinExpr::set_jointype(::pg_query::JoinType value) { _internal_set_jointype(value); // @@protoc_insertion_point(field_set:pg_query.JoinExpr.jointype) } inline ::pg_query::JoinType JoinExpr::_internal_jointype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JoinType>(_impl_.jointype_); } inline void JoinExpr::_internal_set_jointype(::pg_query::JoinType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.jointype_ = value; } // bool is_natural = 2 [json_name = "isNatural"]; inline void JoinExpr::clear_is_natural() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_natural_ = false; } inline bool JoinExpr::is_natural() const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.is_natural) return _internal_is_natural(); } inline void JoinExpr::set_is_natural(bool value) { _internal_set_is_natural(value); // @@protoc_insertion_point(field_set:pg_query.JoinExpr.is_natural) } inline bool JoinExpr::_internal_is_natural() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_natural_; } inline void JoinExpr::_internal_set_is_natural(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_natural_ = value; } // .pg_query.Node larg = 3 [json_name = "larg"]; inline bool JoinExpr::has_larg() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.larg_ != nullptr); return value; } inline void JoinExpr::clear_larg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.larg_ != nullptr) _impl_.larg_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& JoinExpr::_internal_larg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.larg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JoinExpr::larg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.larg) return _internal_larg(); } inline void JoinExpr::unsafe_arena_set_allocated_larg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.larg_); } _impl_.larg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.larg) } inline ::pg_query::Node* JoinExpr::release_larg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.larg_; _impl_.larg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JoinExpr::unsafe_arena_release_larg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JoinExpr.larg) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.larg_; _impl_.larg_ = nullptr; return temp; } inline ::pg_query::Node* JoinExpr::_internal_mutable_larg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.larg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.larg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.larg_; } inline ::pg_query::Node* JoinExpr::mutable_larg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_larg(); // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.larg) return _msg; } inline void JoinExpr::set_allocated_larg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.larg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.larg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.larg) } // .pg_query.Node rarg = 4 [json_name = "rarg"]; inline bool JoinExpr::has_rarg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.rarg_ != nullptr); return value; } inline void JoinExpr::clear_rarg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.rarg_ != nullptr) _impl_.rarg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& JoinExpr::_internal_rarg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.rarg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JoinExpr::rarg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.rarg) return _internal_rarg(); } inline void JoinExpr::unsafe_arena_set_allocated_rarg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rarg_); } _impl_.rarg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.rarg) } inline ::pg_query::Node* JoinExpr::release_rarg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.rarg_; _impl_.rarg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JoinExpr::unsafe_arena_release_rarg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JoinExpr.rarg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.rarg_; _impl_.rarg_ = nullptr; return temp; } inline ::pg_query::Node* JoinExpr::_internal_mutable_rarg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.rarg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.rarg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.rarg_; } inline ::pg_query::Node* JoinExpr::mutable_rarg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_rarg(); // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.rarg) return _msg; } inline void JoinExpr::set_allocated_rarg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.rarg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.rarg_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_using_clause().size(); } inline int JoinExpr::using_clause_size() const { return _internal_using_clause_size(); } inline void JoinExpr::clear_using_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.using_clause_.Clear(); } inline ::pg_query::Node* JoinExpr::mutable_using_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.using_clause) return _internal_mutable_using_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JoinExpr::mutable_using_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.JoinExpr.using_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_using_clause(); } inline const ::pg_query::Node& JoinExpr::using_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.using_clause) return _internal_using_clause().Get(index); } inline ::pg_query::Node* JoinExpr::add_using_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_using_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.JoinExpr.using_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JoinExpr::using_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.JoinExpr.using_clause) return _internal_using_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JoinExpr::_internal_using_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.using_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JoinExpr::_internal_mutable_using_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.using_clause_; } // .pg_query.Alias join_using_alias = 6 [json_name = "join_using_alias"]; inline bool JoinExpr::has_join_using_alias() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.join_using_alias_ != nullptr); return value; } inline void JoinExpr::clear_join_using_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.join_using_alias_ != nullptr) _impl_.join_using_alias_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Alias& JoinExpr::_internal_join_using_alias() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Alias* p = _impl_.join_using_alias_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& JoinExpr::join_using_alias() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.join_using_alias) return _internal_join_using_alias(); } inline void JoinExpr::unsafe_arena_set_allocated_join_using_alias(::pg_query::Alias* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.join_using_alias_); } _impl_.join_using_alias_ = reinterpret_cast<::pg_query::Alias*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.join_using_alias) } inline ::pg_query::Alias* JoinExpr::release_join_using_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Alias* released = _impl_.join_using_alias_; _impl_.join_using_alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Alias* JoinExpr::unsafe_arena_release_join_using_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JoinExpr.join_using_alias) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Alias* temp = _impl_.join_using_alias_; _impl_.join_using_alias_ = nullptr; return temp; } inline ::pg_query::Alias* JoinExpr::_internal_mutable_join_using_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.join_using_alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); _impl_.join_using_alias_ = reinterpret_cast<::pg_query::Alias*>(p); } return _impl_.join_using_alias_; } inline ::pg_query::Alias* JoinExpr::mutable_join_using_alias() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Alias* _msg = _internal_mutable_join_using_alias(); // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.join_using_alias) return _msg; } inline void JoinExpr::set_allocated_join_using_alias(::pg_query::Alias* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Alias*>(_impl_.join_using_alias_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Alias*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.join_using_alias_ = reinterpret_cast<::pg_query::Alias*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.join_using_alias) } // .pg_query.Node quals = 7 [json_name = "quals"]; inline bool JoinExpr::has_quals() const { bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0; PROTOBUF_ASSUME(!value || _impl_.quals_ != nullptr); return value; } inline void JoinExpr::clear_quals() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.quals_ != nullptr) _impl_.quals_->Clear(); _impl_._has_bits_[0] &= ~0x00000008u; } inline const ::pg_query::Node& JoinExpr::_internal_quals() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.quals_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JoinExpr::quals() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.quals) return _internal_quals(); } inline void JoinExpr::unsafe_arena_set_allocated_quals(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.quals_); } _impl_.quals_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.quals) } inline ::pg_query::Node* JoinExpr::release_quals() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::Node* released = _impl_.quals_; _impl_.quals_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JoinExpr::unsafe_arena_release_quals() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JoinExpr.quals) _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::Node* temp = _impl_.quals_; _impl_.quals_ = nullptr; return temp; } inline ::pg_query::Node* JoinExpr::_internal_mutable_quals() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000008u; if (_impl_.quals_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.quals_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.quals_; } inline ::pg_query::Node* JoinExpr::mutable_quals() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_quals(); // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.quals) return _msg; } inline void JoinExpr::set_allocated_quals(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.quals_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } _impl_.quals_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.quals) } // .pg_query.Alias alias = 8 [json_name = "alias"]; inline bool JoinExpr::has_alias() const { bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0; PROTOBUF_ASSUME(!value || _impl_.alias_ != nullptr); return value; } inline void JoinExpr::clear_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.alias_ != nullptr) _impl_.alias_->Clear(); _impl_._has_bits_[0] &= ~0x00000010u; } inline const ::pg_query::Alias& JoinExpr::_internal_alias() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Alias* p = _impl_.alias_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& JoinExpr::alias() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.alias) return _internal_alias(); } inline void JoinExpr::unsafe_arena_set_allocated_alias(::pg_query::Alias* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.alias_); } _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.alias) } inline ::pg_query::Alias* JoinExpr::release_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::Alias* released = _impl_.alias_; _impl_.alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Alias* JoinExpr::unsafe_arena_release_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JoinExpr.alias) _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; return temp; } inline ::pg_query::Alias* JoinExpr::_internal_mutable_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000010u; if (_impl_.alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(p); } return _impl_.alias_; } inline ::pg_query::Alias* JoinExpr::mutable_alias() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Alias* _msg = _internal_mutable_alias(); // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.alias) return _msg; } inline void JoinExpr::set_allocated_alias(::pg_query::Alias* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Alias*>(_impl_.alias_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Alias*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.alias) } // int32 rtindex = 9 [json_name = "rtindex"]; inline void JoinExpr::clear_rtindex() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rtindex_ = 0; } inline ::int32_t JoinExpr::rtindex() const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.rtindex) return _internal_rtindex(); } inline void JoinExpr::set_rtindex(::int32_t value) { _internal_set_rtindex(value); // @@protoc_insertion_point(field_set:pg_query.JoinExpr.rtindex) } inline ::int32_t JoinExpr::_internal_rtindex() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.rtindex_; } inline void JoinExpr::_internal_set_rtindex(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.rtindex_ = value; } // ------------------------------------------------------------------- // FromExpr // repeated .pg_query.Node fromlist = 1 [json_name = "fromlist"]; inline int FromExpr::_internal_fromlist_size() const { return _internal_fromlist().size(); } inline int FromExpr::fromlist_size() const { return _internal_fromlist_size(); } inline void FromExpr::clear_fromlist() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fromlist_.Clear(); } inline ::pg_query::Node* FromExpr::mutable_fromlist(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.FromExpr.fromlist) return _internal_mutable_fromlist()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* FromExpr::mutable_fromlist() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.FromExpr.fromlist) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_fromlist(); } inline const ::pg_query::Node& FromExpr::fromlist(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FromExpr.fromlist) return _internal_fromlist().Get(index); } inline ::pg_query::Node* FromExpr::add_fromlist() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_fromlist()->Add(); // @@protoc_insertion_point(field_add:pg_query.FromExpr.fromlist) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& FromExpr::fromlist() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.FromExpr.fromlist) return _internal_fromlist(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& FromExpr::_internal_fromlist() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.fromlist_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* FromExpr::_internal_mutable_fromlist() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.fromlist_; } // .pg_query.Node quals = 2 [json_name = "quals"]; inline bool FromExpr::has_quals() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.quals_ != nullptr); return value; } inline void FromExpr::clear_quals() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.quals_ != nullptr) _impl_.quals_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& FromExpr::_internal_quals() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.quals_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FromExpr::quals() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FromExpr.quals) return _internal_quals(); } inline void FromExpr::unsafe_arena_set_allocated_quals(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.quals_); } _impl_.quals_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FromExpr.quals) } inline ::pg_query::Node* FromExpr::release_quals() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.quals_; _impl_.quals_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* FromExpr::unsafe_arena_release_quals() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.FromExpr.quals) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.quals_; _impl_.quals_ = nullptr; return temp; } inline ::pg_query::Node* FromExpr::_internal_mutable_quals() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.quals_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.quals_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.quals_; } inline ::pg_query::Node* FromExpr::mutable_quals() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_quals(); // @@protoc_insertion_point(field_mutable:pg_query.FromExpr.quals) return _msg; } inline void FromExpr::set_allocated_quals(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.quals_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.quals_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.FromExpr.quals) } // ------------------------------------------------------------------- // OnConflictExpr // .pg_query.OnConflictAction action = 1 [json_name = "action"]; inline void OnConflictExpr::clear_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.action_ = 0; } inline ::pg_query::OnConflictAction OnConflictExpr::action() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.action) return _internal_action(); } inline void OnConflictExpr::set_action(::pg_query::OnConflictAction value) { _internal_set_action(value); // @@protoc_insertion_point(field_set:pg_query.OnConflictExpr.action) } inline ::pg_query::OnConflictAction OnConflictExpr::_internal_action() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::OnConflictAction>(_impl_.action_); } inline void OnConflictExpr::_internal_set_action(::pg_query::OnConflictAction value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.action_ = value; } // repeated .pg_query.Node arbiter_elems = 2 [json_name = "arbiterElems"]; inline int OnConflictExpr::_internal_arbiter_elems_size() const { return _internal_arbiter_elems().size(); } inline int OnConflictExpr::arbiter_elems_size() const { return _internal_arbiter_elems_size(); } inline void OnConflictExpr::clear_arbiter_elems() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.arbiter_elems_.Clear(); } inline ::pg_query::Node* OnConflictExpr::mutable_arbiter_elems(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.arbiter_elems) return _internal_mutable_arbiter_elems()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* OnConflictExpr::mutable_arbiter_elems() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictExpr.arbiter_elems) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_arbiter_elems(); } inline const ::pg_query::Node& OnConflictExpr::arbiter_elems(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.arbiter_elems) return _internal_arbiter_elems().Get(index); } inline ::pg_query::Node* OnConflictExpr::add_arbiter_elems() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_arbiter_elems()->Add(); // @@protoc_insertion_point(field_add:pg_query.OnConflictExpr.arbiter_elems) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& OnConflictExpr::arbiter_elems() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.OnConflictExpr.arbiter_elems) return _internal_arbiter_elems(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& OnConflictExpr::_internal_arbiter_elems() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.arbiter_elems_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* OnConflictExpr::_internal_mutable_arbiter_elems() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.arbiter_elems_; } // .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; inline bool OnConflictExpr::has_arbiter_where() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.arbiter_where_ != nullptr); return value; } inline void OnConflictExpr::clear_arbiter_where() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arbiter_where_ != nullptr) _impl_.arbiter_where_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& OnConflictExpr::_internal_arbiter_where() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arbiter_where_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& OnConflictExpr::arbiter_where() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arbiter_where_); } _impl_.arbiter_where_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictExpr.arbiter_where) } inline ::pg_query::Node* OnConflictExpr::release_arbiter_where() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.arbiter_where_; _impl_.arbiter_where_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* OnConflictExpr::unsafe_arena_release_arbiter_where() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.OnConflictExpr.arbiter_where) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.arbiter_where_; _impl_.arbiter_where_ = nullptr; return temp; } inline ::pg_query::Node* OnConflictExpr::_internal_mutable_arbiter_where() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.arbiter_where_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arbiter_where_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arbiter_where_; } inline ::pg_query::Node* OnConflictExpr::mutable_arbiter_where() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arbiter_where(); // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.arbiter_where) return _msg; } inline void OnConflictExpr::set_allocated_arbiter_where(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arbiter_where_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.arbiter_where_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.OnConflictExpr.arbiter_where) } // uint32 constraint = 4 [json_name = "constraint"]; inline void OnConflictExpr::clear_constraint() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.constraint_ = 0u; } inline ::uint32_t OnConflictExpr::constraint() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.constraint) return _internal_constraint(); } inline void OnConflictExpr::set_constraint(::uint32_t value) { _internal_set_constraint(value); // @@protoc_insertion_point(field_set:pg_query.OnConflictExpr.constraint) } inline ::uint32_t OnConflictExpr::_internal_constraint() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.constraint_; } inline void OnConflictExpr::_internal_set_constraint(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.constraint_ = value; } // repeated .pg_query.Node on_conflict_set = 5 [json_name = "onConflictSet"]; inline int OnConflictExpr::_internal_on_conflict_set_size() const { return _internal_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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.on_conflict_set_.Clear(); } inline ::pg_query::Node* OnConflictExpr::mutable_on_conflict_set(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.on_conflict_set) return _internal_mutable_on_conflict_set()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* OnConflictExpr::mutable_on_conflict_set() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictExpr.on_conflict_set) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_on_conflict_set(); } inline const ::pg_query::Node& OnConflictExpr::on_conflict_set(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.on_conflict_set) return _internal_on_conflict_set().Get(index); } inline ::pg_query::Node* OnConflictExpr::add_on_conflict_set() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_on_conflict_set()->Add(); // @@protoc_insertion_point(field_add:pg_query.OnConflictExpr.on_conflict_set) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& OnConflictExpr::on_conflict_set() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.OnConflictExpr.on_conflict_set) return _internal_on_conflict_set(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& OnConflictExpr::_internal_on_conflict_set() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.on_conflict_set_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* OnConflictExpr::_internal_mutable_on_conflict_set() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.on_conflict_set_; } // .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; inline bool OnConflictExpr::has_on_conflict_where() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.on_conflict_where_ != nullptr); return value; } inline void OnConflictExpr::clear_on_conflict_where() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.on_conflict_where_ != nullptr) _impl_.on_conflict_where_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& OnConflictExpr::_internal_on_conflict_where() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.on_conflict_where_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& OnConflictExpr::on_conflict_where() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.on_conflict_where_); } _impl_.on_conflict_where_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictExpr.on_conflict_where) } inline ::pg_query::Node* OnConflictExpr::release_on_conflict_where() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.on_conflict_where_; _impl_.on_conflict_where_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* OnConflictExpr::unsafe_arena_release_on_conflict_where() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.OnConflictExpr.on_conflict_where) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.on_conflict_where_; _impl_.on_conflict_where_ = nullptr; return temp; } inline ::pg_query::Node* OnConflictExpr::_internal_mutable_on_conflict_where() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.on_conflict_where_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.on_conflict_where_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.on_conflict_where_; } inline ::pg_query::Node* OnConflictExpr::mutable_on_conflict_where() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_on_conflict_where(); // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.on_conflict_where) return _msg; } inline void OnConflictExpr::set_allocated_on_conflict_where(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.on_conflict_where_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.on_conflict_where_ = reinterpret_cast<::pg_query::Node*>(value); // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.excl_rel_index_ = 0; } inline ::int32_t OnConflictExpr::excl_rel_index() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.excl_rel_index) return _internal_excl_rel_index(); } inline void OnConflictExpr::set_excl_rel_index(::int32_t value) { _internal_set_excl_rel_index(value); // @@protoc_insertion_point(field_set:pg_query.OnConflictExpr.excl_rel_index) } inline ::int32_t OnConflictExpr::_internal_excl_rel_index() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.excl_rel_index_; } inline void OnConflictExpr::_internal_set_excl_rel_index(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.excl_rel_index_ = value; } // repeated .pg_query.Node excl_rel_tlist = 8 [json_name = "exclRelTlist"]; inline int OnConflictExpr::_internal_excl_rel_tlist_size() const { return _internal_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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.excl_rel_tlist_.Clear(); } inline ::pg_query::Node* OnConflictExpr::mutable_excl_rel_tlist(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.excl_rel_tlist) return _internal_mutable_excl_rel_tlist()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* OnConflictExpr::mutable_excl_rel_tlist() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictExpr.excl_rel_tlist) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_excl_rel_tlist(); } inline const ::pg_query::Node& OnConflictExpr::excl_rel_tlist(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.excl_rel_tlist) return _internal_excl_rel_tlist().Get(index); } inline ::pg_query::Node* OnConflictExpr::add_excl_rel_tlist() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_excl_rel_tlist()->Add(); // @@protoc_insertion_point(field_add:pg_query.OnConflictExpr.excl_rel_tlist) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& OnConflictExpr::excl_rel_tlist() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.OnConflictExpr.excl_rel_tlist) return _internal_excl_rel_tlist(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& OnConflictExpr::_internal_excl_rel_tlist() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.excl_rel_tlist_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* OnConflictExpr::_internal_mutable_excl_rel_tlist() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.excl_rel_tlist_; } // ------------------------------------------------------------------- // Query // .pg_query.CmdType command_type = 1 [json_name = "commandType"]; inline void Query::clear_command_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.command_type_ = 0; } 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::set_command_type(::pg_query::CmdType value) { _internal_set_command_type(value); // @@protoc_insertion_point(field_set:pg_query.Query.command_type) } inline ::pg_query::CmdType Query::_internal_command_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::CmdType>(_impl_.command_type_); } inline void Query::_internal_set_command_type(::pg_query::CmdType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.command_type_ = value; } // .pg_query.QuerySource query_source = 2 [json_name = "querySource"]; inline void Query::clear_query_source() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.query_source_ = 0; } 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::set_query_source(::pg_query::QuerySource value) { _internal_set_query_source(value); // @@protoc_insertion_point(field_set:pg_query.Query.query_source) } inline ::pg_query::QuerySource Query::_internal_query_source() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::QuerySource>(_impl_.query_source_); } inline void Query::_internal_set_query_source(::pg_query::QuerySource value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.query_source_ = value; } // bool can_set_tag = 3 [json_name = "canSetTag"]; inline void Query::clear_can_set_tag() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.can_set_tag_ = false; } 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::set_can_set_tag(bool value) { _internal_set_can_set_tag(value); // @@protoc_insertion_point(field_set:pg_query.Query.can_set_tag) } inline bool Query::_internal_can_set_tag() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.can_set_tag_; } inline void Query::_internal_set_can_set_tag(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.can_set_tag_ = value; } // .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; inline bool Query::has_utility_stmt() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.utility_stmt_ != nullptr); return value; } inline void Query::clear_utility_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.utility_stmt_ != nullptr) _impl_.utility_stmt_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& Query::_internal_utility_stmt() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.utility_stmt_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Query::utility_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.utility_stmt_); } _impl_.utility_stmt_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.utility_stmt) } inline ::pg_query::Node* Query::release_utility_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.utility_stmt_; _impl_.utility_stmt_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* Query::unsafe_arena_release_utility_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Query.utility_stmt) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.utility_stmt_; _impl_.utility_stmt_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_utility_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.utility_stmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.utility_stmt_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.utility_stmt_; } inline ::pg_query::Node* Query::mutable_utility_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_utility_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.Query.utility_stmt) return _msg; } inline void Query::set_allocated_utility_stmt(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.utility_stmt_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.utility_stmt_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Query.utility_stmt) } // int32 result_relation = 5 [json_name = "resultRelation"]; inline void Query::clear_result_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.result_relation_ = 0; } inline ::int32_t Query::result_relation() const { // @@protoc_insertion_point(field_get:pg_query.Query.result_relation) return _internal_result_relation(); } inline void Query::set_result_relation(::int32_t value) { _internal_set_result_relation(value); // @@protoc_insertion_point(field_set:pg_query.Query.result_relation) } inline ::int32_t Query::_internal_result_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.result_relation_; } inline void Query::_internal_set_result_relation(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.result_relation_ = value; } // bool has_aggs = 6 [json_name = "hasAggs"]; inline void Query::clear_has_aggs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.has_aggs_ = false; } inline bool Query::has_aggs() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_aggs) return _internal_has_aggs(); } inline void Query::set_has_aggs(bool value) { _internal_set_has_aggs(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_aggs) } inline bool Query::_internal_has_aggs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.has_aggs_; } inline void Query::_internal_set_has_aggs(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.has_aggs_ = value; } // bool has_window_funcs = 7 [json_name = "hasWindowFuncs"]; inline void Query::clear_has_window_funcs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.has_window_funcs_ = false; } 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::set_has_window_funcs(bool value) { _internal_set_has_window_funcs(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_window_funcs) } inline bool Query::_internal_has_window_funcs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.has_window_funcs_; } inline void Query::_internal_set_has_window_funcs(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.has_window_funcs_ = value; } // bool has_target_srfs = 8 [json_name = "hasTargetSRFs"]; inline void Query::clear_has_target_srfs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.has_target_srfs_ = false; } 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::set_has_target_srfs(bool value) { _internal_set_has_target_srfs(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_target_srfs) } inline bool Query::_internal_has_target_srfs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.has_target_srfs_; } inline void Query::_internal_set_has_target_srfs(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.has_target_srfs_ = value; } // bool has_sub_links = 9 [json_name = "hasSubLinks"]; inline void Query::clear_has_sub_links() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.has_sub_links_ = false; } 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::set_has_sub_links(bool value) { _internal_set_has_sub_links(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_sub_links) } inline bool Query::_internal_has_sub_links() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.has_sub_links_; } inline void Query::_internal_set_has_sub_links(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.has_sub_links_ = value; } // bool has_distinct_on = 10 [json_name = "hasDistinctOn"]; inline void Query::clear_has_distinct_on() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.has_distinct_on_ = false; } 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::set_has_distinct_on(bool value) { _internal_set_has_distinct_on(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_distinct_on) } inline bool Query::_internal_has_distinct_on() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.has_distinct_on_; } inline void Query::_internal_set_has_distinct_on(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.has_distinct_on_ = value; } // bool has_recursive = 11 [json_name = "hasRecursive"]; inline void Query::clear_has_recursive() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.has_recursive_ = false; } inline bool Query::has_recursive() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_recursive) return _internal_has_recursive(); } inline void Query::set_has_recursive(bool value) { _internal_set_has_recursive(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_recursive) } inline bool Query::_internal_has_recursive() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.has_recursive_; } inline void Query::_internal_set_has_recursive(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.has_recursive_ = value; } // bool has_modifying_cte = 12 [json_name = "hasModifyingCTE"]; inline void Query::clear_has_modifying_cte() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.has_modifying_cte_ = false; } 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::set_has_modifying_cte(bool value) { _internal_set_has_modifying_cte(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_modifying_cte) } inline bool Query::_internal_has_modifying_cte() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.has_modifying_cte_; } inline void Query::_internal_set_has_modifying_cte(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.has_modifying_cte_ = value; } // bool has_for_update = 13 [json_name = "hasForUpdate"]; inline void Query::clear_has_for_update() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.has_for_update_ = false; } 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::set_has_for_update(bool value) { _internal_set_has_for_update(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_for_update) } inline bool Query::_internal_has_for_update() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.has_for_update_; } inline void Query::_internal_set_has_for_update(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.has_for_update_ = value; } // bool has_row_security = 14 [json_name = "hasRowSecurity"]; inline void Query::clear_has_row_security() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.has_row_security_ = false; } 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::set_has_row_security(bool value) { _internal_set_has_row_security(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_row_security) } inline bool Query::_internal_has_row_security() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.has_row_security_; } inline void Query::_internal_set_has_row_security(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.has_row_security_ = value; } // bool is_return = 15 [json_name = "isReturn"]; inline void Query::clear_is_return() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_return_ = false; } inline bool Query::is_return() const { // @@protoc_insertion_point(field_get:pg_query.Query.is_return) return _internal_is_return(); } inline void Query::set_is_return(bool value) { _internal_set_is_return(value); // @@protoc_insertion_point(field_set:pg_query.Query.is_return) } inline bool Query::_internal_is_return() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_return_; } inline void Query::_internal_set_is_return(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_return_ = value; } // repeated .pg_query.Node cte_list = 16 [json_name = "cteList"]; inline int Query::_internal_cte_list_size() const { return _internal_cte_list().size(); } inline int Query::cte_list_size() const { return _internal_cte_list_size(); } inline void Query::clear_cte_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cte_list_.Clear(); } inline ::pg_query::Node* Query::mutable_cte_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Query.cte_list) return _internal_mutable_cte_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::mutable_cte_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.cte_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_cte_list(); } inline const ::pg_query::Node& Query::cte_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.cte_list) return _internal_cte_list().Get(index); } inline ::pg_query::Node* Query::add_cte_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_cte_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.Query.cte_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::cte_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Query.cte_list) return _internal_cte_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::_internal_cte_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cte_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::_internal_mutable_cte_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.cte_list_; } // repeated .pg_query.Node rtable = 17 [json_name = "rtable"]; inline int Query::_internal_rtable_size() const { return _internal_rtable().size(); } inline int Query::rtable_size() const { return _internal_rtable_size(); } inline void Query::clear_rtable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rtable_.Clear(); } inline ::pg_query::Node* Query::mutable_rtable(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Query.rtable) return _internal_mutable_rtable()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::mutable_rtable() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.rtable) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_rtable(); } inline const ::pg_query::Node& Query::rtable(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.rtable) return _internal_rtable().Get(index); } inline ::pg_query::Node* Query::add_rtable() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_rtable()->Add(); // @@protoc_insertion_point(field_add:pg_query.Query.rtable) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::rtable() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Query.rtable) return _internal_rtable(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::_internal_rtable() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.rtable_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::_internal_mutable_rtable() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.rtable_; } // repeated .pg_query.Node rteperminfos = 18 [json_name = "rteperminfos"]; inline int Query::_internal_rteperminfos_size() const { return _internal_rteperminfos().size(); } inline int Query::rteperminfos_size() const { return _internal_rteperminfos_size(); } inline void Query::clear_rteperminfos() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rteperminfos_.Clear(); } inline ::pg_query::Node* Query::mutable_rteperminfos(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Query.rteperminfos) return _internal_mutable_rteperminfos()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::mutable_rteperminfos() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.rteperminfos) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_rteperminfos(); } inline const ::pg_query::Node& Query::rteperminfos(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.rteperminfos) return _internal_rteperminfos().Get(index); } inline ::pg_query::Node* Query::add_rteperminfos() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_rteperminfos()->Add(); // @@protoc_insertion_point(field_add:pg_query.Query.rteperminfos) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::rteperminfos() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Query.rteperminfos) return _internal_rteperminfos(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::_internal_rteperminfos() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.rteperminfos_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::_internal_mutable_rteperminfos() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.rteperminfos_; } // .pg_query.FromExpr jointree = 19 [json_name = "jointree"]; inline bool Query::has_jointree() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.jointree_ != nullptr); return value; } inline void Query::clear_jointree() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.jointree_ != nullptr) _impl_.jointree_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::FromExpr& Query::_internal_jointree() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::FromExpr* p = _impl_.jointree_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_FromExpr_default_instance_); } inline const ::pg_query::FromExpr& Query::jointree() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.jointree) return _internal_jointree(); } inline void Query::unsafe_arena_set_allocated_jointree(::pg_query::FromExpr* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.jointree_); } _impl_.jointree_ = reinterpret_cast<::pg_query::FromExpr*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.jointree) } inline ::pg_query::FromExpr* Query::release_jointree() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::FromExpr* released = _impl_.jointree_; _impl_.jointree_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::FromExpr* Query::unsafe_arena_release_jointree() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Query.jointree) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::FromExpr* temp = _impl_.jointree_; _impl_.jointree_ = nullptr; return temp; } inline ::pg_query::FromExpr* Query::_internal_mutable_jointree() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.jointree_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::FromExpr>(GetArena()); _impl_.jointree_ = reinterpret_cast<::pg_query::FromExpr*>(p); } return _impl_.jointree_; } inline ::pg_query::FromExpr* Query::mutable_jointree() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::FromExpr* _msg = _internal_mutable_jointree(); // @@protoc_insertion_point(field_mutable:pg_query.Query.jointree) return _msg; } inline void Query::set_allocated_jointree(::pg_query::FromExpr* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::FromExpr*>(_impl_.jointree_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::FromExpr*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.jointree_ = reinterpret_cast<::pg_query::FromExpr*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Query.jointree) } // repeated .pg_query.Node merge_action_list = 20 [json_name = "mergeActionList"]; inline int Query::_internal_merge_action_list_size() const { return _internal_merge_action_list().size(); } inline int Query::merge_action_list_size() const { return _internal_merge_action_list_size(); } inline void Query::clear_merge_action_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.merge_action_list_.Clear(); } inline ::pg_query::Node* Query::mutable_merge_action_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Query.merge_action_list) return _internal_mutable_merge_action_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::mutable_merge_action_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.merge_action_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_merge_action_list(); } inline const ::pg_query::Node& Query::merge_action_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.merge_action_list) return _internal_merge_action_list().Get(index); } inline ::pg_query::Node* Query::add_merge_action_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_merge_action_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.Query.merge_action_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::merge_action_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Query.merge_action_list) return _internal_merge_action_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::_internal_merge_action_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.merge_action_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::_internal_mutable_merge_action_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.merge_action_list_; } // int32 merge_target_relation = 21 [json_name = "mergeTargetRelation"]; inline void Query::clear_merge_target_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.merge_target_relation_ = 0; } inline ::int32_t Query::merge_target_relation() const { // @@protoc_insertion_point(field_get:pg_query.Query.merge_target_relation) return _internal_merge_target_relation(); } inline void Query::set_merge_target_relation(::int32_t value) { _internal_set_merge_target_relation(value); // @@protoc_insertion_point(field_set:pg_query.Query.merge_target_relation) } inline ::int32_t Query::_internal_merge_target_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.merge_target_relation_; } inline void Query::_internal_set_merge_target_relation(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.merge_target_relation_ = value; } // .pg_query.Node merge_join_condition = 22 [json_name = "mergeJoinCondition"]; inline bool Query::has_merge_join_condition() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.merge_join_condition_ != nullptr); return value; } inline void Query::clear_merge_join_condition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.merge_join_condition_ != nullptr) _impl_.merge_join_condition_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& Query::_internal_merge_join_condition() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.merge_join_condition_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Query::merge_join_condition() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.merge_join_condition) return _internal_merge_join_condition(); } inline void Query::unsafe_arena_set_allocated_merge_join_condition(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.merge_join_condition_); } _impl_.merge_join_condition_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.merge_join_condition) } inline ::pg_query::Node* Query::release_merge_join_condition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.merge_join_condition_; _impl_.merge_join_condition_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* Query::unsafe_arena_release_merge_join_condition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Query.merge_join_condition) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.merge_join_condition_; _impl_.merge_join_condition_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_merge_join_condition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.merge_join_condition_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.merge_join_condition_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.merge_join_condition_; } inline ::pg_query::Node* Query::mutable_merge_join_condition() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_merge_join_condition(); // @@protoc_insertion_point(field_mutable:pg_query.Query.merge_join_condition) return _msg; } inline void Query::set_allocated_merge_join_condition(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.merge_join_condition_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.merge_join_condition_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Query.merge_join_condition) } // repeated .pg_query.Node target_list = 23 [json_name = "targetList"]; inline int Query::_internal_target_list_size() const { return _internal_target_list().size(); } inline int Query::target_list_size() const { return _internal_target_list_size(); } inline void Query::clear_target_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.target_list_.Clear(); } inline ::pg_query::Node* Query::mutable_target_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Query.target_list) return _internal_mutable_target_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::mutable_target_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.target_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_target_list(); } inline const ::pg_query::Node& Query::target_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.target_list) return _internal_target_list().Get(index); } inline ::pg_query::Node* Query::add_target_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_target_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.Query.target_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::target_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Query.target_list) return _internal_target_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::_internal_target_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.target_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::_internal_mutable_target_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.target_list_; } // .pg_query.OverridingKind override = 24 [json_name = "override"]; inline void Query::clear_override() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.override_ = 0; } inline ::pg_query::OverridingKind Query::override() const { // @@protoc_insertion_point(field_get:pg_query.Query.override) return _internal_override(); } inline void Query::set_override(::pg_query::OverridingKind value) { _internal_set_override(value); // @@protoc_insertion_point(field_set:pg_query.Query.override) } inline ::pg_query::OverridingKind Query::_internal_override() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::OverridingKind>(_impl_.override_); } inline void Query::_internal_set_override(::pg_query::OverridingKind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.override_ = value; } // .pg_query.OnConflictExpr on_conflict = 25 [json_name = "onConflict"]; inline bool Query::has_on_conflict() const { bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0; PROTOBUF_ASSUME(!value || _impl_.on_conflict_ != nullptr); return value; } inline void Query::clear_on_conflict() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.on_conflict_ != nullptr) _impl_.on_conflict_->Clear(); _impl_._has_bits_[0] &= ~0x00000008u; } inline const ::pg_query::OnConflictExpr& Query::_internal_on_conflict() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::OnConflictExpr* p = _impl_.on_conflict_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_OnConflictExpr_default_instance_); } inline const ::pg_query::OnConflictExpr& Query::on_conflict() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.on_conflict_); } _impl_.on_conflict_ = reinterpret_cast<::pg_query::OnConflictExpr*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.on_conflict) } inline ::pg_query::OnConflictExpr* Query::release_on_conflict() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::OnConflictExpr* released = _impl_.on_conflict_; _impl_.on_conflict_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::OnConflictExpr* Query::unsafe_arena_release_on_conflict() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Query.on_conflict) _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::OnConflictExpr* temp = _impl_.on_conflict_; _impl_.on_conflict_ = nullptr; return temp; } inline ::pg_query::OnConflictExpr* Query::_internal_mutable_on_conflict() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000008u; if (_impl_.on_conflict_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::OnConflictExpr>(GetArena()); _impl_.on_conflict_ = reinterpret_cast<::pg_query::OnConflictExpr*>(p); } return _impl_.on_conflict_; } inline ::pg_query::OnConflictExpr* Query::mutable_on_conflict() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::OnConflictExpr* _msg = _internal_mutable_on_conflict(); // @@protoc_insertion_point(field_mutable:pg_query.Query.on_conflict) return _msg; } inline void Query::set_allocated_on_conflict(::pg_query::OnConflictExpr* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::OnConflictExpr*>(_impl_.on_conflict_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::OnConflictExpr*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } _impl_.on_conflict_ = reinterpret_cast<::pg_query::OnConflictExpr*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Query.on_conflict) } // repeated .pg_query.Node returning_list = 26 [json_name = "returningList"]; inline int Query::_internal_returning_list_size() const { return _internal_returning_list().size(); } inline int Query::returning_list_size() const { return _internal_returning_list_size(); } inline void Query::clear_returning_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.returning_list_.Clear(); } inline ::pg_query::Node* Query::mutable_returning_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Query.returning_list) return _internal_mutable_returning_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::mutable_returning_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.returning_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_returning_list(); } inline const ::pg_query::Node& Query::returning_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.returning_list) return _internal_returning_list().Get(index); } inline ::pg_query::Node* Query::add_returning_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_returning_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.Query.returning_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::returning_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Query.returning_list) return _internal_returning_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::_internal_returning_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.returning_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::_internal_mutable_returning_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.returning_list_; } // repeated .pg_query.Node group_clause = 27 [json_name = "groupClause"]; inline int Query::_internal_group_clause_size() const { return _internal_group_clause().size(); } inline int Query::group_clause_size() const { return _internal_group_clause_size(); } inline void Query::clear_group_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.group_clause_.Clear(); } inline ::pg_query::Node* Query::mutable_group_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Query.group_clause) return _internal_mutable_group_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::mutable_group_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.group_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_group_clause(); } inline const ::pg_query::Node& Query::group_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.group_clause) return _internal_group_clause().Get(index); } inline ::pg_query::Node* Query::add_group_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_group_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.Query.group_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::group_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Query.group_clause) return _internal_group_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::_internal_group_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.group_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::_internal_mutable_group_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.group_clause_; } // bool group_distinct = 28 [json_name = "groupDistinct"]; inline void Query::clear_group_distinct() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.group_distinct_ = false; } inline bool Query::group_distinct() const { // @@protoc_insertion_point(field_get:pg_query.Query.group_distinct) return _internal_group_distinct(); } inline void Query::set_group_distinct(bool value) { _internal_set_group_distinct(value); // @@protoc_insertion_point(field_set:pg_query.Query.group_distinct) } inline bool Query::_internal_group_distinct() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.group_distinct_; } inline void Query::_internal_set_group_distinct(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.group_distinct_ = value; } // repeated .pg_query.Node grouping_sets = 29 [json_name = "groupingSets"]; inline int Query::_internal_grouping_sets_size() const { return _internal_grouping_sets().size(); } inline int Query::grouping_sets_size() const { return _internal_grouping_sets_size(); } inline void Query::clear_grouping_sets() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.grouping_sets_.Clear(); } inline ::pg_query::Node* Query::mutable_grouping_sets(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Query.grouping_sets) return _internal_mutable_grouping_sets()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::mutable_grouping_sets() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.grouping_sets) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_grouping_sets(); } inline const ::pg_query::Node& Query::grouping_sets(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.grouping_sets) return _internal_grouping_sets().Get(index); } inline ::pg_query::Node* Query::add_grouping_sets() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_grouping_sets()->Add(); // @@protoc_insertion_point(field_add:pg_query.Query.grouping_sets) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::grouping_sets() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Query.grouping_sets) return _internal_grouping_sets(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::_internal_grouping_sets() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.grouping_sets_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::_internal_mutable_grouping_sets() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.grouping_sets_; } // .pg_query.Node having_qual = 30 [json_name = "havingQual"]; inline bool Query::has_having_qual() const { bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0; PROTOBUF_ASSUME(!value || _impl_.having_qual_ != nullptr); return value; } inline void Query::clear_having_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.having_qual_ != nullptr) _impl_.having_qual_->Clear(); _impl_._has_bits_[0] &= ~0x00000010u; } inline const ::pg_query::Node& Query::_internal_having_qual() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.having_qual_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Query::having_qual() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.having_qual_); } _impl_.having_qual_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.having_qual) } inline ::pg_query::Node* Query::release_having_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::Node* released = _impl_.having_qual_; _impl_.having_qual_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* Query::unsafe_arena_release_having_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Query.having_qual) _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::Node* temp = _impl_.having_qual_; _impl_.having_qual_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_having_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000010u; if (_impl_.having_qual_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.having_qual_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.having_qual_; } inline ::pg_query::Node* Query::mutable_having_qual() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_having_qual(); // @@protoc_insertion_point(field_mutable:pg_query.Query.having_qual) return _msg; } inline void Query::set_allocated_having_qual(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.having_qual_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } _impl_.having_qual_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Query.having_qual) } // repeated .pg_query.Node window_clause = 31 [json_name = "windowClause"]; inline int Query::_internal_window_clause_size() const { return _internal_window_clause().size(); } inline int Query::window_clause_size() const { return _internal_window_clause_size(); } inline void Query::clear_window_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.window_clause_.Clear(); } inline ::pg_query::Node* Query::mutable_window_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Query.window_clause) return _internal_mutable_window_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::mutable_window_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.window_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_window_clause(); } inline const ::pg_query::Node& Query::window_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.window_clause) return _internal_window_clause().Get(index); } inline ::pg_query::Node* Query::add_window_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_window_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.Query.window_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::window_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Query.window_clause) return _internal_window_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::_internal_window_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.window_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::_internal_mutable_window_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.window_clause_; } // repeated .pg_query.Node distinct_clause = 32 [json_name = "distinctClause"]; inline int Query::_internal_distinct_clause_size() const { return _internal_distinct_clause().size(); } inline int Query::distinct_clause_size() const { return _internal_distinct_clause_size(); } inline void Query::clear_distinct_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.distinct_clause_.Clear(); } inline ::pg_query::Node* Query::mutable_distinct_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Query.distinct_clause) return _internal_mutable_distinct_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::mutable_distinct_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.distinct_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_distinct_clause(); } inline const ::pg_query::Node& Query::distinct_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.distinct_clause) return _internal_distinct_clause().Get(index); } inline ::pg_query::Node* Query::add_distinct_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_distinct_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.Query.distinct_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::distinct_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Query.distinct_clause) return _internal_distinct_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::_internal_distinct_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.distinct_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::_internal_mutable_distinct_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.distinct_clause_; } // repeated .pg_query.Node sort_clause = 33 [json_name = "sortClause"]; inline int Query::_internal_sort_clause_size() const { return _internal_sort_clause().size(); } inline int Query::sort_clause_size() const { return _internal_sort_clause_size(); } inline void Query::clear_sort_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.sort_clause_.Clear(); } inline ::pg_query::Node* Query::mutable_sort_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Query.sort_clause) return _internal_mutable_sort_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::mutable_sort_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.sort_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_sort_clause(); } inline const ::pg_query::Node& Query::sort_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.sort_clause) return _internal_sort_clause().Get(index); } inline ::pg_query::Node* Query::add_sort_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_sort_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.Query.sort_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::sort_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Query.sort_clause) return _internal_sort_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::_internal_sort_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.sort_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::_internal_mutable_sort_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.sort_clause_; } // .pg_query.Node limit_offset = 34 [json_name = "limitOffset"]; inline bool Query::has_limit_offset() const { bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0; PROTOBUF_ASSUME(!value || _impl_.limit_offset_ != nullptr); return value; } inline void Query::clear_limit_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.limit_offset_ != nullptr) _impl_.limit_offset_->Clear(); _impl_._has_bits_[0] &= ~0x00000020u; } inline const ::pg_query::Node& Query::_internal_limit_offset() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.limit_offset_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Query::limit_offset() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.limit_offset_); } _impl_.limit_offset_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000020u; } else { _impl_._has_bits_[0] &= ~0x00000020u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.limit_offset) } inline ::pg_query::Node* Query::release_limit_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000020u; ::pg_query::Node* released = _impl_.limit_offset_; _impl_.limit_offset_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* Query::unsafe_arena_release_limit_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Query.limit_offset) _impl_._has_bits_[0] &= ~0x00000020u; ::pg_query::Node* temp = _impl_.limit_offset_; _impl_.limit_offset_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_limit_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000020u; if (_impl_.limit_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.limit_offset_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.limit_offset_; } inline ::pg_query::Node* Query::mutable_limit_offset() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_limit_offset(); // @@protoc_insertion_point(field_mutable:pg_query.Query.limit_offset) return _msg; } inline void Query::set_allocated_limit_offset(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.limit_offset_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000020u; } else { _impl_._has_bits_[0] &= ~0x00000020u; } _impl_.limit_offset_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Query.limit_offset) } // .pg_query.Node limit_count = 35 [json_name = "limitCount"]; inline bool Query::has_limit_count() const { bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0; PROTOBUF_ASSUME(!value || _impl_.limit_count_ != nullptr); return value; } inline void Query::clear_limit_count() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.limit_count_ != nullptr) _impl_.limit_count_->Clear(); _impl_._has_bits_[0] &= ~0x00000040u; } inline const ::pg_query::Node& Query::_internal_limit_count() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.limit_count_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Query::limit_count() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.limit_count_); } _impl_.limit_count_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000040u; } else { _impl_._has_bits_[0] &= ~0x00000040u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.limit_count) } inline ::pg_query::Node* Query::release_limit_count() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000040u; ::pg_query::Node* released = _impl_.limit_count_; _impl_.limit_count_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* Query::unsafe_arena_release_limit_count() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Query.limit_count) _impl_._has_bits_[0] &= ~0x00000040u; ::pg_query::Node* temp = _impl_.limit_count_; _impl_.limit_count_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_limit_count() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000040u; if (_impl_.limit_count_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.limit_count_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.limit_count_; } inline ::pg_query::Node* Query::mutable_limit_count() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_limit_count(); // @@protoc_insertion_point(field_mutable:pg_query.Query.limit_count) return _msg; } inline void Query::set_allocated_limit_count(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.limit_count_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000040u; } else { _impl_._has_bits_[0] &= ~0x00000040u; } _impl_.limit_count_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Query.limit_count) } // .pg_query.LimitOption limit_option = 36 [json_name = "limitOption"]; inline void Query::clear_limit_option() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.limit_option_ = 0; } 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::set_limit_option(::pg_query::LimitOption value) { _internal_set_limit_option(value); // @@protoc_insertion_point(field_set:pg_query.Query.limit_option) } inline ::pg_query::LimitOption Query::_internal_limit_option() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::LimitOption>(_impl_.limit_option_); } inline void Query::_internal_set_limit_option(::pg_query::LimitOption value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.limit_option_ = value; } // repeated .pg_query.Node row_marks = 37 [json_name = "rowMarks"]; inline int Query::_internal_row_marks_size() const { return _internal_row_marks().size(); } inline int Query::row_marks_size() const { return _internal_row_marks_size(); } inline void Query::clear_row_marks() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.row_marks_.Clear(); } inline ::pg_query::Node* Query::mutable_row_marks(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Query.row_marks) return _internal_mutable_row_marks()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::mutable_row_marks() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.row_marks) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_row_marks(); } inline const ::pg_query::Node& Query::row_marks(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.row_marks) return _internal_row_marks().Get(index); } inline ::pg_query::Node* Query::add_row_marks() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_row_marks()->Add(); // @@protoc_insertion_point(field_add:pg_query.Query.row_marks) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::row_marks() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Query.row_marks) return _internal_row_marks(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::_internal_row_marks() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.row_marks_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::_internal_mutable_row_marks() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.row_marks_; } // .pg_query.Node set_operations = 38 [json_name = "setOperations"]; inline bool Query::has_set_operations() const { bool value = (_impl_._has_bits_[0] & 0x00000080u) != 0; PROTOBUF_ASSUME(!value || _impl_.set_operations_ != nullptr); return value; } inline void Query::clear_set_operations() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.set_operations_ != nullptr) _impl_.set_operations_->Clear(); _impl_._has_bits_[0] &= ~0x00000080u; } inline const ::pg_query::Node& Query::_internal_set_operations() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.set_operations_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Query::set_operations() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.set_operations_); } _impl_.set_operations_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000080u; } else { _impl_._has_bits_[0] &= ~0x00000080u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.set_operations) } inline ::pg_query::Node* Query::release_set_operations() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000080u; ::pg_query::Node* released = _impl_.set_operations_; _impl_.set_operations_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* Query::unsafe_arena_release_set_operations() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Query.set_operations) _impl_._has_bits_[0] &= ~0x00000080u; ::pg_query::Node* temp = _impl_.set_operations_; _impl_.set_operations_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_set_operations() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000080u; if (_impl_.set_operations_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.set_operations_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.set_operations_; } inline ::pg_query::Node* Query::mutable_set_operations() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_set_operations(); // @@protoc_insertion_point(field_mutable:pg_query.Query.set_operations) return _msg; } inline void Query::set_allocated_set_operations(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.set_operations_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000080u; } else { _impl_._has_bits_[0] &= ~0x00000080u; } _impl_.set_operations_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Query.set_operations) } // repeated .pg_query.Node constraint_deps = 39 [json_name = "constraintDeps"]; inline int Query::_internal_constraint_deps_size() const { return _internal_constraint_deps().size(); } inline int Query::constraint_deps_size() const { return _internal_constraint_deps_size(); } inline void Query::clear_constraint_deps() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.constraint_deps_.Clear(); } inline ::pg_query::Node* Query::mutable_constraint_deps(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Query.constraint_deps) return _internal_mutable_constraint_deps()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::mutable_constraint_deps() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.constraint_deps) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_constraint_deps(); } inline const ::pg_query::Node& Query::constraint_deps(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.constraint_deps) return _internal_constraint_deps().Get(index); } inline ::pg_query::Node* Query::add_constraint_deps() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_constraint_deps()->Add(); // @@protoc_insertion_point(field_add:pg_query.Query.constraint_deps) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::constraint_deps() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Query.constraint_deps) return _internal_constraint_deps(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::_internal_constraint_deps() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.constraint_deps_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::_internal_mutable_constraint_deps() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.constraint_deps_; } // repeated .pg_query.Node with_check_options = 40 [json_name = "withCheckOptions"]; inline int Query::_internal_with_check_options_size() const { return _internal_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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.with_check_options_.Clear(); } inline ::pg_query::Node* Query::mutable_with_check_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Query.with_check_options) return _internal_mutable_with_check_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::mutable_with_check_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.with_check_options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_with_check_options(); } inline const ::pg_query::Node& Query::with_check_options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Query.with_check_options) return _internal_with_check_options().Get(index); } inline ::pg_query::Node* Query::add_with_check_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_with_check_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.Query.with_check_options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::with_check_options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Query.with_check_options) return _internal_with_check_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Query::_internal_with_check_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.with_check_options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Query::_internal_mutable_with_check_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.with_check_options_; } // int32 stmt_location = 41 [json_name = "stmt_location"]; inline void Query::clear_stmt_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.stmt_location_ = 0; } inline ::int32_t Query::stmt_location() const { // @@protoc_insertion_point(field_get:pg_query.Query.stmt_location) return _internal_stmt_location(); } inline void Query::set_stmt_location(::int32_t value) { _internal_set_stmt_location(value); // @@protoc_insertion_point(field_set:pg_query.Query.stmt_location) } inline ::int32_t Query::_internal_stmt_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.stmt_location_; } inline void Query::_internal_set_stmt_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.stmt_location_ = value; } // int32 stmt_len = 42 [json_name = "stmt_len"]; inline void Query::clear_stmt_len() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.stmt_len_ = 0; } inline ::int32_t Query::stmt_len() const { // @@protoc_insertion_point(field_get:pg_query.Query.stmt_len) return _internal_stmt_len(); } inline void Query::set_stmt_len(::int32_t value) { _internal_set_stmt_len(value); // @@protoc_insertion_point(field_set:pg_query.Query.stmt_len) } inline ::int32_t Query::_internal_stmt_len() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.stmt_len_; } inline void Query::_internal_set_stmt_len(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.stmt_len_ = value; } // ------------------------------------------------------------------- // TypeName // repeated .pg_query.Node names = 1 [json_name = "names"]; inline int TypeName::_internal_names_size() const { return _internal_names().size(); } inline int TypeName::names_size() const { return _internal_names_size(); } inline void TypeName::clear_names() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.names_.Clear(); } inline ::pg_query::Node* TypeName::mutable_names(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TypeName.names) return _internal_mutable_names()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TypeName::mutable_names() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TypeName.names) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_names(); } inline const ::pg_query::Node& TypeName::names(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TypeName.names) return _internal_names().Get(index); } inline ::pg_query::Node* TypeName::add_names() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_names()->Add(); // @@protoc_insertion_point(field_add:pg_query.TypeName.names) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TypeName::names() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TypeName.names) return _internal_names(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TypeName::_internal_names() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.names_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TypeName::_internal_mutable_names() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.names_; } // uint32 type_oid = 2 [json_name = "typeOid"]; inline void TypeName::clear_type_oid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_oid_ = 0u; } inline ::uint32_t TypeName::type_oid() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.type_oid) return _internal_type_oid(); } inline void TypeName::set_type_oid(::uint32_t value) { _internal_set_type_oid(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.type_oid) } inline ::uint32_t TypeName::_internal_type_oid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_oid_; } inline void TypeName::_internal_set_type_oid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.type_oid_ = value; } // bool setof = 3 [json_name = "setof"]; inline void TypeName::clear_setof() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.setof_ = false; } inline bool TypeName::setof() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.setof) return _internal_setof(); } inline void TypeName::set_setof(bool value) { _internal_set_setof(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.setof) } inline bool TypeName::_internal_setof() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.setof_; } inline void TypeName::_internal_set_setof(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.setof_ = value; } // bool pct_type = 4 [json_name = "pct_type"]; inline void TypeName::clear_pct_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.pct_type_ = false; } inline bool TypeName::pct_type() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.pct_type) return _internal_pct_type(); } inline void TypeName::set_pct_type(bool value) { _internal_set_pct_type(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.pct_type) } inline bool TypeName::_internal_pct_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.pct_type_; } inline void TypeName::_internal_set_pct_type(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.pct_type_ = value; } // repeated .pg_query.Node typmods = 5 [json_name = "typmods"]; inline int TypeName::_internal_typmods_size() const { return _internal_typmods().size(); } inline int TypeName::typmods_size() const { return _internal_typmods_size(); } inline void TypeName::clear_typmods() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.typmods_.Clear(); } inline ::pg_query::Node* TypeName::mutable_typmods(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TypeName.typmods) return _internal_mutable_typmods()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TypeName::mutable_typmods() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TypeName.typmods) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_typmods(); } inline const ::pg_query::Node& TypeName::typmods(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TypeName.typmods) return _internal_typmods().Get(index); } inline ::pg_query::Node* TypeName::add_typmods() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_typmods()->Add(); // @@protoc_insertion_point(field_add:pg_query.TypeName.typmods) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TypeName::typmods() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TypeName.typmods) return _internal_typmods(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TypeName::_internal_typmods() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.typmods_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TypeName::_internal_mutable_typmods() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.typmods_; } // int32 typemod = 6 [json_name = "typemod"]; inline void TypeName::clear_typemod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.typemod_ = 0; } inline ::int32_t TypeName::typemod() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.typemod) return _internal_typemod(); } inline void TypeName::set_typemod(::int32_t value) { _internal_set_typemod(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.typemod) } inline ::int32_t TypeName::_internal_typemod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.typemod_; } inline void TypeName::_internal_set_typemod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.typemod_ = value; } // repeated .pg_query.Node array_bounds = 7 [json_name = "arrayBounds"]; inline int TypeName::_internal_array_bounds_size() const { return _internal_array_bounds().size(); } inline int TypeName::array_bounds_size() const { return _internal_array_bounds_size(); } inline void TypeName::clear_array_bounds() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.array_bounds_.Clear(); } inline ::pg_query::Node* TypeName::mutable_array_bounds(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TypeName.array_bounds) return _internal_mutable_array_bounds()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TypeName::mutable_array_bounds() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TypeName.array_bounds) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_array_bounds(); } inline const ::pg_query::Node& TypeName::array_bounds(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TypeName.array_bounds) return _internal_array_bounds().Get(index); } inline ::pg_query::Node* TypeName::add_array_bounds() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_array_bounds()->Add(); // @@protoc_insertion_point(field_add:pg_query.TypeName.array_bounds) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TypeName::array_bounds() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TypeName.array_bounds) return _internal_array_bounds(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TypeName::_internal_array_bounds() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.array_bounds_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TypeName::_internal_mutable_array_bounds() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.array_bounds_; } // int32 location = 8 [json_name = "location"]; inline void TypeName::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t TypeName::location() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.location) return _internal_location(); } inline void TypeName::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.location) } inline ::int32_t TypeName::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void TypeName::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // ColumnRef // repeated .pg_query.Node fields = 1 [json_name = "fields"]; inline int ColumnRef::_internal_fields_size() const { return _internal_fields().size(); } inline int ColumnRef::fields_size() const { return _internal_fields_size(); } inline void ColumnRef::clear_fields() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fields_.Clear(); } inline ::pg_query::Node* ColumnRef::mutable_fields(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ColumnRef.fields) return _internal_mutable_fields()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ColumnRef::mutable_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ColumnRef.fields) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_fields(); } inline const ::pg_query::Node& ColumnRef::fields(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ColumnRef.fields) return _internal_fields().Get(index); } inline ::pg_query::Node* ColumnRef::add_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_fields()->Add(); // @@protoc_insertion_point(field_add:pg_query.ColumnRef.fields) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ColumnRef::fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ColumnRef.fields) return _internal_fields(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ColumnRef::_internal_fields() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.fields_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ColumnRef::_internal_mutable_fields() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.fields_; } // int32 location = 2 [json_name = "location"]; inline void ColumnRef::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t ColumnRef::location() const { // @@protoc_insertion_point(field_get:pg_query.ColumnRef.location) return _internal_location(); } inline void ColumnRef::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ColumnRef.location) } inline ::int32_t ColumnRef::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void ColumnRef::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // ParamRef // int32 number = 1 [json_name = "number"]; inline void ParamRef::clear_number() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.number_ = 0; } inline ::int32_t ParamRef::number() const { // @@protoc_insertion_point(field_get:pg_query.ParamRef.number) return _internal_number(); } inline void ParamRef::set_number(::int32_t value) { _internal_set_number(value); // @@protoc_insertion_point(field_set:pg_query.ParamRef.number) } inline ::int32_t ParamRef::_internal_number() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.number_; } inline void ParamRef::_internal_set_number(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.number_ = value; } // int32 location = 2 [json_name = "location"]; inline void ParamRef::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t ParamRef::location() const { // @@protoc_insertion_point(field_get:pg_query.ParamRef.location) return _internal_location(); } inline void ParamRef::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ParamRef.location) } inline ::int32_t ParamRef::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void ParamRef::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // A_Expr // .pg_query.A_Expr_Kind kind = 1 [json_name = "kind"]; inline void A_Expr::clear_kind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.kind_ = 0; } 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::set_kind(::pg_query::A_Expr_Kind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.A_Expr.kind) } inline ::pg_query::A_Expr_Kind A_Expr::_internal_kind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::A_Expr_Kind>(_impl_.kind_); } inline void A_Expr::_internal_set_kind(::pg_query::A_Expr_Kind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.kind_ = value; } // repeated .pg_query.Node name = 2 [json_name = "name"]; inline int A_Expr::_internal_name_size() const { return _internal_name().size(); } inline int A_Expr::name_size() const { return _internal_name_size(); } inline void A_Expr::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.Clear(); } inline ::pg_query::Node* A_Expr::mutable_name(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.A_Expr.name) return _internal_mutable_name()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* A_Expr::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.A_Expr.name) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_name(); } inline const ::pg_query::Node& A_Expr::name(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.A_Expr.name) return _internal_name().Get(index); } inline ::pg_query::Node* A_Expr::add_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_name()->Add(); // @@protoc_insertion_point(field_add:pg_query.A_Expr.name) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& A_Expr::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.A_Expr.name) return _internal_name(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& A_Expr::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* A_Expr::_internal_mutable_name() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.name_; } // .pg_query.Node lexpr = 3 [json_name = "lexpr"]; inline bool A_Expr::has_lexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.lexpr_ != nullptr); return value; } inline void A_Expr::clear_lexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.lexpr_ != nullptr) _impl_.lexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& A_Expr::_internal_lexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.lexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& A_Expr::lexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.lexpr_); } _impl_.lexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Expr.lexpr) } inline ::pg_query::Node* A_Expr::release_lexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.lexpr_; _impl_.lexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* A_Expr::unsafe_arena_release_lexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.A_Expr.lexpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.lexpr_; _impl_.lexpr_ = nullptr; return temp; } inline ::pg_query::Node* A_Expr::_internal_mutable_lexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.lexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.lexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.lexpr_; } inline ::pg_query::Node* A_Expr::mutable_lexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_lexpr(); // @@protoc_insertion_point(field_mutable:pg_query.A_Expr.lexpr) return _msg; } inline void A_Expr::set_allocated_lexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.lexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.lexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.A_Expr.lexpr) } // .pg_query.Node rexpr = 4 [json_name = "rexpr"]; inline bool A_Expr::has_rexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.rexpr_ != nullptr); return value; } inline void A_Expr::clear_rexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.rexpr_ != nullptr) _impl_.rexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& A_Expr::_internal_rexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.rexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& A_Expr::rexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rexpr_); } _impl_.rexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Expr.rexpr) } inline ::pg_query::Node* A_Expr::release_rexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.rexpr_; _impl_.rexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* A_Expr::unsafe_arena_release_rexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.A_Expr.rexpr) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.rexpr_; _impl_.rexpr_ = nullptr; return temp; } inline ::pg_query::Node* A_Expr::_internal_mutable_rexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.rexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.rexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.rexpr_; } inline ::pg_query::Node* A_Expr::mutable_rexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_rexpr(); // @@protoc_insertion_point(field_mutable:pg_query.A_Expr.rexpr) return _msg; } inline void A_Expr::set_allocated_rexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.rexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.rexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.A_Expr.rexpr) } // int32 location = 5 [json_name = "location"]; inline void A_Expr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t A_Expr::location() const { // @@protoc_insertion_point(field_get:pg_query.A_Expr.location) return _internal_location(); } inline void A_Expr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.A_Expr.location) } inline ::int32_t A_Expr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void A_Expr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // TypeCast // .pg_query.Node arg = 1 [json_name = "arg"]; inline bool TypeCast::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void TypeCast::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& TypeCast::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& TypeCast::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TypeCast.arg) return _internal_arg(); } inline void TypeCast::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TypeCast.arg) } inline ::pg_query::Node* TypeCast::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* TypeCast::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.TypeCast.arg) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* TypeCast::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* TypeCast::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.TypeCast.arg) return _msg; } inline void TypeCast::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.TypeCast.arg) } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; inline bool TypeCast::has_type_name() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.type_name_ != nullptr); return value; } inline void TypeCast::clear_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.type_name_ != nullptr) _impl_.type_name_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::TypeName& TypeCast::_internal_type_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.type_name_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& TypeCast::type_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.type_name_); } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TypeCast.type_name) } inline ::pg_query::TypeName* TypeCast::release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::TypeName* released = _impl_.type_name_; _impl_.type_name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* TypeCast::unsafe_arena_release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.TypeCast.type_name) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* TypeCast::_internal_mutable_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.type_name_; } inline ::pg_query::TypeName* TypeCast::mutable_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_type_name(); // @@protoc_insertion_point(field_mutable:pg_query.TypeCast.type_name) return _msg; } inline void TypeCast::set_allocated_type_name(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.type_name_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.TypeCast.type_name) } // int32 location = 3 [json_name = "location"]; inline void TypeCast::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t TypeCast::location() const { // @@protoc_insertion_point(field_get:pg_query.TypeCast.location) return _internal_location(); } inline void TypeCast::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.TypeCast.location) } inline ::int32_t TypeCast::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void TypeCast::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // CollateClause // .pg_query.Node arg = 1 [json_name = "arg"]; inline bool CollateClause::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void CollateClause::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& CollateClause::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CollateClause::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CollateClause.arg) return _internal_arg(); } inline void CollateClause::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CollateClause.arg) } inline ::pg_query::Node* CollateClause::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CollateClause::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CollateClause.arg) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* CollateClause::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* CollateClause::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.CollateClause.arg) return _msg; } inline void CollateClause::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_collname().size(); } inline int CollateClause::collname_size() const { return _internal_collname_size(); } inline void CollateClause::clear_collname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.collname_.Clear(); } inline ::pg_query::Node* CollateClause::mutable_collname(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CollateClause.collname) return _internal_mutable_collname()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CollateClause::mutable_collname() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CollateClause.collname) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_collname(); } inline const ::pg_query::Node& CollateClause::collname(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CollateClause.collname) return _internal_collname().Get(index); } inline ::pg_query::Node* CollateClause::add_collname() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_collname()->Add(); // @@protoc_insertion_point(field_add:pg_query.CollateClause.collname) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CollateClause::collname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CollateClause.collname) return _internal_collname(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CollateClause::_internal_collname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.collname_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CollateClause::_internal_mutable_collname() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.collname_; } // int32 location = 3 [json_name = "location"]; inline void CollateClause::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t CollateClause::location() const { // @@protoc_insertion_point(field_get:pg_query.CollateClause.location) return _internal_location(); } inline void CollateClause::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CollateClause.location) } inline ::int32_t CollateClause::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void CollateClause::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // RoleSpec // .pg_query.RoleSpecType roletype = 1 [json_name = "roletype"]; inline void RoleSpec::clear_roletype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.roletype_ = 0; } inline ::pg_query::RoleSpecType RoleSpec::roletype() const { // @@protoc_insertion_point(field_get:pg_query.RoleSpec.roletype) return _internal_roletype(); } inline void RoleSpec::set_roletype(::pg_query::RoleSpecType value) { _internal_set_roletype(value); // @@protoc_insertion_point(field_set:pg_query.RoleSpec.roletype) } inline ::pg_query::RoleSpecType RoleSpec::_internal_roletype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::RoleSpecType>(_impl_.roletype_); } inline void RoleSpec::_internal_set_roletype(::pg_query::RoleSpecType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.roletype_ = value; } // string rolename = 2 [json_name = "rolename"]; inline void RoleSpec::clear_rolename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rolename_.ClearToEmpty(); } inline const std::string& RoleSpec::rolename() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RoleSpec.rolename) return _internal_rolename(); } template inline PROTOBUF_ALWAYS_INLINE void RoleSpec::set_rolename(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.rolename_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.RoleSpec.rolename) } inline std::string* RoleSpec::mutable_rolename() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_rolename(); // @@protoc_insertion_point(field_mutable:pg_query.RoleSpec.rolename) return _s; } inline const std::string& RoleSpec::_internal_rolename() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.rolename_.Get(); } inline void RoleSpec::_internal_set_rolename(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.rolename_.Set(value, GetArena()); } inline std::string* RoleSpec::_internal_mutable_rolename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.rolename_.Mutable( GetArena()); } inline std::string* RoleSpec::release_rolename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RoleSpec.rolename) return _impl_.rolename_.Release(); } inline void RoleSpec::set_allocated_rolename(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rolename_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.rolename_.IsDefault()) { _impl_.rolename_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RoleSpec.rolename) } // int32 location = 3 [json_name = "location"]; inline void RoleSpec::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t RoleSpec::location() const { // @@protoc_insertion_point(field_get:pg_query.RoleSpec.location) return _internal_location(); } inline void RoleSpec::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RoleSpec.location) } inline ::int32_t RoleSpec::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void RoleSpec::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // FuncCall // repeated .pg_query.Node funcname = 1 [json_name = "funcname"]; inline int FuncCall::_internal_funcname_size() const { return _internal_funcname().size(); } inline int FuncCall::funcname_size() const { return _internal_funcname_size(); } inline void FuncCall::clear_funcname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funcname_.Clear(); } inline ::pg_query::Node* FuncCall::mutable_funcname(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.funcname) return _internal_mutable_funcname()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* FuncCall::mutable_funcname() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.FuncCall.funcname) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_funcname(); } inline const ::pg_query::Node& FuncCall::funcname(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FuncCall.funcname) return _internal_funcname().Get(index); } inline ::pg_query::Node* FuncCall::add_funcname() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_funcname()->Add(); // @@protoc_insertion_point(field_add:pg_query.FuncCall.funcname) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& FuncCall::funcname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.FuncCall.funcname) return _internal_funcname(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& FuncCall::_internal_funcname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funcname_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* FuncCall::_internal_mutable_funcname() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.funcname_; } // repeated .pg_query.Node args = 2 [json_name = "args"]; inline int FuncCall::_internal_args_size() const { return _internal_args().size(); } inline int FuncCall::args_size() const { return _internal_args_size(); } inline void FuncCall::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* FuncCall::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* FuncCall::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.FuncCall.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& FuncCall::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FuncCall.args) return _internal_args().Get(index); } inline ::pg_query::Node* FuncCall::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.FuncCall.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& FuncCall::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.FuncCall.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& FuncCall::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* FuncCall::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; inline int FuncCall::_internal_agg_order_size() const { return _internal_agg_order().size(); } inline int FuncCall::agg_order_size() const { return _internal_agg_order_size(); } inline void FuncCall::clear_agg_order() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.agg_order_.Clear(); } inline ::pg_query::Node* FuncCall::mutable_agg_order(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.agg_order) return _internal_mutable_agg_order()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* FuncCall::mutable_agg_order() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.FuncCall.agg_order) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_agg_order(); } inline const ::pg_query::Node& FuncCall::agg_order(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_order) return _internal_agg_order().Get(index); } inline ::pg_query::Node* FuncCall::add_agg_order() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_agg_order()->Add(); // @@protoc_insertion_point(field_add:pg_query.FuncCall.agg_order) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& FuncCall::agg_order() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.FuncCall.agg_order) return _internal_agg_order(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& FuncCall::_internal_agg_order() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.agg_order_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* FuncCall::_internal_mutable_agg_order() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.agg_order_; } // .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; inline bool FuncCall::has_agg_filter() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.agg_filter_ != nullptr); return value; } inline void FuncCall::clear_agg_filter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.agg_filter_ != nullptr) _impl_.agg_filter_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& FuncCall::_internal_agg_filter() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.agg_filter_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FuncCall::agg_filter() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.agg_filter_); } _impl_.agg_filter_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FuncCall.agg_filter) } inline ::pg_query::Node* FuncCall::release_agg_filter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.agg_filter_; _impl_.agg_filter_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* FuncCall::unsafe_arena_release_agg_filter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.FuncCall.agg_filter) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.agg_filter_; _impl_.agg_filter_ = nullptr; return temp; } inline ::pg_query::Node* FuncCall::_internal_mutable_agg_filter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.agg_filter_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.agg_filter_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.agg_filter_; } inline ::pg_query::Node* FuncCall::mutable_agg_filter() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_agg_filter(); // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.agg_filter) return _msg; } inline void FuncCall::set_allocated_agg_filter(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.agg_filter_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.agg_filter_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.FuncCall.agg_filter) } // .pg_query.WindowDef over = 5 [json_name = "over"]; inline bool FuncCall::has_over() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.over_ != nullptr); return value; } inline void FuncCall::clear_over() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.over_ != nullptr) _impl_.over_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::WindowDef& FuncCall::_internal_over() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::WindowDef* p = _impl_.over_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_WindowDef_default_instance_); } inline const ::pg_query::WindowDef& FuncCall::over() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FuncCall.over) return _internal_over(); } inline void FuncCall::unsafe_arena_set_allocated_over(::pg_query::WindowDef* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.over_); } _impl_.over_ = reinterpret_cast<::pg_query::WindowDef*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FuncCall.over) } inline ::pg_query::WindowDef* FuncCall::release_over() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::WindowDef* released = _impl_.over_; _impl_.over_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::WindowDef* FuncCall::unsafe_arena_release_over() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.FuncCall.over) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::WindowDef* temp = _impl_.over_; _impl_.over_ = nullptr; return temp; } inline ::pg_query::WindowDef* FuncCall::_internal_mutable_over() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.over_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WindowDef>(GetArena()); _impl_.over_ = reinterpret_cast<::pg_query::WindowDef*>(p); } return _impl_.over_; } inline ::pg_query::WindowDef* FuncCall::mutable_over() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::WindowDef* _msg = _internal_mutable_over(); // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.over) return _msg; } inline void FuncCall::set_allocated_over(::pg_query::WindowDef* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::WindowDef*>(_impl_.over_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::WindowDef*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.over_ = reinterpret_cast<::pg_query::WindowDef*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.FuncCall.over) } // bool agg_within_group = 6 [json_name = "agg_within_group"]; inline void FuncCall::clear_agg_within_group() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.agg_within_group_ = false; } 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::set_agg_within_group(bool value) { _internal_set_agg_within_group(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.agg_within_group) } inline bool FuncCall::_internal_agg_within_group() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.agg_within_group_; } inline void FuncCall::_internal_set_agg_within_group(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.agg_within_group_ = value; } // bool agg_star = 7 [json_name = "agg_star"]; inline void FuncCall::clear_agg_star() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.agg_star_ = false; } inline bool FuncCall::agg_star() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_star) return _internal_agg_star(); } inline void FuncCall::set_agg_star(bool value) { _internal_set_agg_star(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.agg_star) } inline bool FuncCall::_internal_agg_star() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.agg_star_; } inline void FuncCall::_internal_set_agg_star(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.agg_star_ = value; } // bool agg_distinct = 8 [json_name = "agg_distinct"]; inline void FuncCall::clear_agg_distinct() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.agg_distinct_ = false; } inline bool FuncCall::agg_distinct() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_distinct) return _internal_agg_distinct(); } inline void FuncCall::set_agg_distinct(bool value) { _internal_set_agg_distinct(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.agg_distinct) } inline bool FuncCall::_internal_agg_distinct() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.agg_distinct_; } inline void FuncCall::_internal_set_agg_distinct(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.agg_distinct_ = value; } // bool func_variadic = 9 [json_name = "func_variadic"]; inline void FuncCall::clear_func_variadic() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.func_variadic_ = false; } inline bool FuncCall::func_variadic() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.func_variadic) return _internal_func_variadic(); } inline void FuncCall::set_func_variadic(bool value) { _internal_set_func_variadic(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.func_variadic) } inline bool FuncCall::_internal_func_variadic() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.func_variadic_; } inline void FuncCall::_internal_set_func_variadic(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.func_variadic_ = value; } // .pg_query.CoercionForm funcformat = 10 [json_name = "funcformat"]; inline void FuncCall::clear_funcformat() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funcformat_ = 0; } inline ::pg_query::CoercionForm FuncCall::funcformat() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.funcformat) return _internal_funcformat(); } inline void FuncCall::set_funcformat(::pg_query::CoercionForm value) { _internal_set_funcformat(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.funcformat) } inline ::pg_query::CoercionForm FuncCall::_internal_funcformat() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::CoercionForm>(_impl_.funcformat_); } inline void FuncCall::_internal_set_funcformat(::pg_query::CoercionForm value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.funcformat_ = value; } // int32 location = 11 [json_name = "location"]; inline void FuncCall::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t FuncCall::location() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.location) return _internal_location(); } inline void FuncCall::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.location) } inline ::int32_t FuncCall::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void FuncCall::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // A_Star // ------------------------------------------------------------------- // A_Indices // bool is_slice = 1 [json_name = "is_slice"]; inline void A_Indices::clear_is_slice() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_slice_ = false; } 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::set_is_slice(bool value) { _internal_set_is_slice(value); // @@protoc_insertion_point(field_set:pg_query.A_Indices.is_slice) } inline bool A_Indices::_internal_is_slice() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_slice_; } inline void A_Indices::_internal_set_is_slice(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_slice_ = value; } // .pg_query.Node lidx = 2 [json_name = "lidx"]; inline bool A_Indices::has_lidx() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.lidx_ != nullptr); return value; } inline void A_Indices::clear_lidx() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.lidx_ != nullptr) _impl_.lidx_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& A_Indices::_internal_lidx() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.lidx_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& A_Indices::lidx() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.lidx_); } _impl_.lidx_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Indices.lidx) } inline ::pg_query::Node* A_Indices::release_lidx() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.lidx_; _impl_.lidx_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* A_Indices::unsafe_arena_release_lidx() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.A_Indices.lidx) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.lidx_; _impl_.lidx_ = nullptr; return temp; } inline ::pg_query::Node* A_Indices::_internal_mutable_lidx() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.lidx_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.lidx_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.lidx_; } inline ::pg_query::Node* A_Indices::mutable_lidx() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_lidx(); // @@protoc_insertion_point(field_mutable:pg_query.A_Indices.lidx) return _msg; } inline void A_Indices::set_allocated_lidx(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.lidx_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.lidx_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.A_Indices.lidx) } // .pg_query.Node uidx = 3 [json_name = "uidx"]; inline bool A_Indices::has_uidx() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.uidx_ != nullptr); return value; } inline void A_Indices::clear_uidx() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.uidx_ != nullptr) _impl_.uidx_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& A_Indices::_internal_uidx() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.uidx_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& A_Indices::uidx() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.uidx_); } _impl_.uidx_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Indices.uidx) } inline ::pg_query::Node* A_Indices::release_uidx() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.uidx_; _impl_.uidx_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* A_Indices::unsafe_arena_release_uidx() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.A_Indices.uidx) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.uidx_; _impl_.uidx_ = nullptr; return temp; } inline ::pg_query::Node* A_Indices::_internal_mutable_uidx() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.uidx_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.uidx_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.uidx_; } inline ::pg_query::Node* A_Indices::mutable_uidx() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_uidx(); // @@protoc_insertion_point(field_mutable:pg_query.A_Indices.uidx) return _msg; } inline void A_Indices::set_allocated_uidx(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.uidx_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.uidx_ = reinterpret_cast<::pg_query::Node*>(value); // @@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::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void A_Indirection::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& A_Indirection::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& A_Indirection::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Indirection.arg) } inline ::pg_query::Node* A_Indirection::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* A_Indirection::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.A_Indirection.arg) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* A_Indirection::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* A_Indirection::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.A_Indirection.arg) return _msg; } inline void A_Indirection::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_indirection().size(); } inline int A_Indirection::indirection_size() const { return _internal_indirection_size(); } inline void A_Indirection::clear_indirection() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.indirection_.Clear(); } inline ::pg_query::Node* A_Indirection::mutable_indirection(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.A_Indirection.indirection) return _internal_mutable_indirection()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* A_Indirection::mutable_indirection() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.A_Indirection.indirection) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_indirection(); } inline const ::pg_query::Node& A_Indirection::indirection(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.A_Indirection.indirection) return _internal_indirection().Get(index); } inline ::pg_query::Node* A_Indirection::add_indirection() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_indirection()->Add(); // @@protoc_insertion_point(field_add:pg_query.A_Indirection.indirection) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& A_Indirection::indirection() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.A_Indirection.indirection) return _internal_indirection(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& A_Indirection::_internal_indirection() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.indirection_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* A_Indirection::_internal_mutable_indirection() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.indirection_; } // ------------------------------------------------------------------- // A_ArrayExpr // repeated .pg_query.Node elements = 1 [json_name = "elements"]; inline int A_ArrayExpr::_internal_elements_size() const { return _internal_elements().size(); } inline int A_ArrayExpr::elements_size() const { return _internal_elements_size(); } inline void A_ArrayExpr::clear_elements() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.elements_.Clear(); } inline ::pg_query::Node* A_ArrayExpr::mutable_elements(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.A_ArrayExpr.elements) return _internal_mutable_elements()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* A_ArrayExpr::mutable_elements() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.A_ArrayExpr.elements) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_elements(); } inline const ::pg_query::Node& A_ArrayExpr::elements(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.A_ArrayExpr.elements) return _internal_elements().Get(index); } inline ::pg_query::Node* A_ArrayExpr::add_elements() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_elements()->Add(); // @@protoc_insertion_point(field_add:pg_query.A_ArrayExpr.elements) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& A_ArrayExpr::elements() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.A_ArrayExpr.elements) return _internal_elements(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& A_ArrayExpr::_internal_elements() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.elements_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* A_ArrayExpr::_internal_mutable_elements() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.elements_; } // int32 location = 2 [json_name = "location"]; inline void A_ArrayExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t A_ArrayExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.A_ArrayExpr.location) return _internal_location(); } inline void A_ArrayExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.A_ArrayExpr.location) } inline ::int32_t A_ArrayExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void A_ArrayExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // ResTarget // string name = 1 [json_name = "name"]; inline void ResTarget::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& ResTarget::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ResTarget.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void ResTarget::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ResTarget.name) } inline std::string* ResTarget::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.ResTarget.name) return _s; } inline const std::string& ResTarget::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void ResTarget::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* ResTarget::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* ResTarget::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ResTarget.name) return _impl_.name_.Release(); } inline void ResTarget::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_indirection().size(); } inline int ResTarget::indirection_size() const { return _internal_indirection_size(); } inline void ResTarget::clear_indirection() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.indirection_.Clear(); } inline ::pg_query::Node* ResTarget::mutable_indirection(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ResTarget.indirection) return _internal_mutable_indirection()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ResTarget::mutable_indirection() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ResTarget.indirection) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_indirection(); } inline const ::pg_query::Node& ResTarget::indirection(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ResTarget.indirection) return _internal_indirection().Get(index); } inline ::pg_query::Node* ResTarget::add_indirection() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_indirection()->Add(); // @@protoc_insertion_point(field_add:pg_query.ResTarget.indirection) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ResTarget::indirection() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ResTarget.indirection) return _internal_indirection(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ResTarget::_internal_indirection() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.indirection_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ResTarget::_internal_mutable_indirection() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.indirection_; } // .pg_query.Node val = 3 [json_name = "val"]; inline bool ResTarget::has_val() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.val_ != nullptr); return value; } inline void ResTarget::clear_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.val_ != nullptr) _impl_.val_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& ResTarget::_internal_val() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.val_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ResTarget::val() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ResTarget.val) return _internal_val(); } inline void ResTarget::unsafe_arena_set_allocated_val(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.val_); } _impl_.val_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ResTarget.val) } inline ::pg_query::Node* ResTarget::release_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.val_; _impl_.val_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* ResTarget::unsafe_arena_release_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ResTarget.val) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.val_; _impl_.val_ = nullptr; return temp; } inline ::pg_query::Node* ResTarget::_internal_mutable_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.val_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.val_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.val_; } inline ::pg_query::Node* ResTarget::mutable_val() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_val(); // @@protoc_insertion_point(field_mutable:pg_query.ResTarget.val) return _msg; } inline void ResTarget::set_allocated_val(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.val_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.val_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ResTarget.val) } // int32 location = 4 [json_name = "location"]; inline void ResTarget::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t ResTarget::location() const { // @@protoc_insertion_point(field_get:pg_query.ResTarget.location) return _internal_location(); } inline void ResTarget::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ResTarget.location) } inline ::int32_t ResTarget::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void ResTarget::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // MultiAssignRef // .pg_query.Node source = 1 [json_name = "source"]; inline bool MultiAssignRef::has_source() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.source_ != nullptr); return value; } inline void MultiAssignRef::clear_source() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.source_ != nullptr) _impl_.source_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& MultiAssignRef::_internal_source() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.source_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& MultiAssignRef::source() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MultiAssignRef.source) return _internal_source(); } inline void MultiAssignRef::unsafe_arena_set_allocated_source(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.source_); } _impl_.source_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MultiAssignRef.source) } inline ::pg_query::Node* MultiAssignRef::release_source() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.source_; _impl_.source_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* MultiAssignRef::unsafe_arena_release_source() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.MultiAssignRef.source) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.source_; _impl_.source_ = nullptr; return temp; } inline ::pg_query::Node* MultiAssignRef::_internal_mutable_source() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.source_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.source_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.source_; } inline ::pg_query::Node* MultiAssignRef::mutable_source() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_source(); // @@protoc_insertion_point(field_mutable:pg_query.MultiAssignRef.source) return _msg; } inline void MultiAssignRef::set_allocated_source(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.source_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.source_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.MultiAssignRef.source) } // int32 colno = 2 [json_name = "colno"]; inline void MultiAssignRef::clear_colno() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.colno_ = 0; } inline ::int32_t MultiAssignRef::colno() const { // @@protoc_insertion_point(field_get:pg_query.MultiAssignRef.colno) return _internal_colno(); } inline void MultiAssignRef::set_colno(::int32_t value) { _internal_set_colno(value); // @@protoc_insertion_point(field_set:pg_query.MultiAssignRef.colno) } inline ::int32_t MultiAssignRef::_internal_colno() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.colno_; } inline void MultiAssignRef::_internal_set_colno(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.colno_ = value; } // int32 ncolumns = 3 [json_name = "ncolumns"]; inline void MultiAssignRef::clear_ncolumns() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ncolumns_ = 0; } inline ::int32_t MultiAssignRef::ncolumns() const { // @@protoc_insertion_point(field_get:pg_query.MultiAssignRef.ncolumns) return _internal_ncolumns(); } inline void MultiAssignRef::set_ncolumns(::int32_t value) { _internal_set_ncolumns(value); // @@protoc_insertion_point(field_set:pg_query.MultiAssignRef.ncolumns) } inline ::int32_t MultiAssignRef::_internal_ncolumns() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ncolumns_; } inline void MultiAssignRef::_internal_set_ncolumns(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.ncolumns_ = value; } // ------------------------------------------------------------------- // SortBy // .pg_query.Node node = 1 [json_name = "node"]; inline bool SortBy::has_node() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.node_ != nullptr); return value; } inline void SortBy::clear_node() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.node_ != nullptr) _impl_.node_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& SortBy::_internal_node() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.node_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SortBy::node() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SortBy.node) return _internal_node(); } inline void SortBy::unsafe_arena_set_allocated_node(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.node_); } _impl_.node_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SortBy.node) } inline ::pg_query::Node* SortBy::release_node() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.node_; _impl_.node_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SortBy::unsafe_arena_release_node() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SortBy.node) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.node_; _impl_.node_ = nullptr; return temp; } inline ::pg_query::Node* SortBy::_internal_mutable_node() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.node_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.node_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.node_; } inline ::pg_query::Node* SortBy::mutable_node() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_node(); // @@protoc_insertion_point(field_mutable:pg_query.SortBy.node) return _msg; } inline void SortBy::set_allocated_node(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.node_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.node_ = reinterpret_cast<::pg_query::Node*>(value); // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.sortby_dir_ = 0; } 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::set_sortby_dir(::pg_query::SortByDir value) { _internal_set_sortby_dir(value); // @@protoc_insertion_point(field_set:pg_query.SortBy.sortby_dir) } inline ::pg_query::SortByDir SortBy::_internal_sortby_dir() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::SortByDir>(_impl_.sortby_dir_); } inline void SortBy::_internal_set_sortby_dir(::pg_query::SortByDir value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.sortby_dir_ = value; } // .pg_query.SortByNulls sortby_nulls = 3 [json_name = "sortby_nulls"]; inline void SortBy::clear_sortby_nulls() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.sortby_nulls_ = 0; } 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::set_sortby_nulls(::pg_query::SortByNulls value) { _internal_set_sortby_nulls(value); // @@protoc_insertion_point(field_set:pg_query.SortBy.sortby_nulls) } inline ::pg_query::SortByNulls SortBy::_internal_sortby_nulls() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::SortByNulls>(_impl_.sortby_nulls_); } inline void SortBy::_internal_set_sortby_nulls(::pg_query::SortByNulls value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.sortby_nulls_ = value; } // repeated .pg_query.Node use_op = 4 [json_name = "useOp"]; inline int SortBy::_internal_use_op_size() const { return _internal_use_op().size(); } inline int SortBy::use_op_size() const { return _internal_use_op_size(); } inline void SortBy::clear_use_op() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.use_op_.Clear(); } inline ::pg_query::Node* SortBy::mutable_use_op(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SortBy.use_op) return _internal_mutable_use_op()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SortBy::mutable_use_op() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SortBy.use_op) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_use_op(); } inline const ::pg_query::Node& SortBy::use_op(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SortBy.use_op) return _internal_use_op().Get(index); } inline ::pg_query::Node* SortBy::add_use_op() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_use_op()->Add(); // @@protoc_insertion_point(field_add:pg_query.SortBy.use_op) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SortBy::use_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SortBy.use_op) return _internal_use_op(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SortBy::_internal_use_op() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.use_op_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SortBy::_internal_mutable_use_op() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.use_op_; } // int32 location = 5 [json_name = "location"]; inline void SortBy::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t SortBy::location() const { // @@protoc_insertion_point(field_get:pg_query.SortBy.location) return _internal_location(); } inline void SortBy::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.SortBy.location) } inline ::int32_t SortBy::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void SortBy::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // WindowDef // string name = 1 [json_name = "name"]; inline void WindowDef::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& WindowDef::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WindowDef.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void WindowDef::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.WindowDef.name) } inline std::string* WindowDef::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.name) return _s; } inline const std::string& WindowDef::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void WindowDef::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* WindowDef::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* WindowDef::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WindowDef.name) return _impl_.name_.Release(); } inline void WindowDef::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.WindowDef.name) } // string refname = 2 [json_name = "refname"]; inline void WindowDef::clear_refname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.refname_.ClearToEmpty(); } inline const std::string& WindowDef::refname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WindowDef.refname) return _internal_refname(); } template inline PROTOBUF_ALWAYS_INLINE void WindowDef::set_refname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.refname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.WindowDef.refname) } inline std::string* WindowDef::mutable_refname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_refname(); // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.refname) return _s; } inline const std::string& WindowDef::_internal_refname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.refname_.Get(); } inline void WindowDef::_internal_set_refname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.refname_.Set(value, GetArena()); } inline std::string* WindowDef::_internal_mutable_refname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.refname_.Mutable( GetArena()); } inline std::string* WindowDef::release_refname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WindowDef.refname) return _impl_.refname_.Release(); } inline void WindowDef::set_allocated_refname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.refname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.refname_.IsDefault()) { _impl_.refname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_partition_clause().size(); } inline int WindowDef::partition_clause_size() const { return _internal_partition_clause_size(); } inline void WindowDef::clear_partition_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.partition_clause_.Clear(); } inline ::pg_query::Node* WindowDef::mutable_partition_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.partition_clause) return _internal_mutable_partition_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* WindowDef::mutable_partition_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowDef.partition_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_partition_clause(); } inline const ::pg_query::Node& WindowDef::partition_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WindowDef.partition_clause) return _internal_partition_clause().Get(index); } inline ::pg_query::Node* WindowDef::add_partition_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_partition_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.WindowDef.partition_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& WindowDef::partition_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.WindowDef.partition_clause) return _internal_partition_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& WindowDef::_internal_partition_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.partition_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* WindowDef::_internal_mutable_partition_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.partition_clause_; } // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; inline int WindowDef::_internal_order_clause_size() const { return _internal_order_clause().size(); } inline int WindowDef::order_clause_size() const { return _internal_order_clause_size(); } inline void WindowDef::clear_order_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.order_clause_.Clear(); } inline ::pg_query::Node* WindowDef::mutable_order_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.order_clause) return _internal_mutable_order_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* WindowDef::mutable_order_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowDef.order_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_order_clause(); } inline const ::pg_query::Node& WindowDef::order_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WindowDef.order_clause) return _internal_order_clause().Get(index); } inline ::pg_query::Node* WindowDef::add_order_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_order_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.WindowDef.order_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& WindowDef::order_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.WindowDef.order_clause) return _internal_order_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& WindowDef::_internal_order_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.order_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* WindowDef::_internal_mutable_order_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.order_clause_; } // int32 frame_options = 5 [json_name = "frameOptions"]; inline void WindowDef::clear_frame_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.frame_options_ = 0; } inline ::int32_t WindowDef::frame_options() const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.frame_options) return _internal_frame_options(); } inline void WindowDef::set_frame_options(::int32_t value) { _internal_set_frame_options(value); // @@protoc_insertion_point(field_set:pg_query.WindowDef.frame_options) } inline ::int32_t WindowDef::_internal_frame_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.frame_options_; } inline void WindowDef::_internal_set_frame_options(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.frame_options_ = value; } // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; inline bool WindowDef::has_start_offset() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.start_offset_ != nullptr); return value; } inline void WindowDef::clear_start_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.start_offset_ != nullptr) _impl_.start_offset_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& WindowDef::_internal_start_offset() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.start_offset_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WindowDef::start_offset() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.start_offset_); } _impl_.start_offset_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowDef.start_offset) } inline ::pg_query::Node* WindowDef::release_start_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.start_offset_; _impl_.start_offset_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* WindowDef::unsafe_arena_release_start_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WindowDef.start_offset) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.start_offset_; _impl_.start_offset_ = nullptr; return temp; } inline ::pg_query::Node* WindowDef::_internal_mutable_start_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.start_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.start_offset_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.start_offset_; } inline ::pg_query::Node* WindowDef::mutable_start_offset() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_start_offset(); // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.start_offset) return _msg; } inline void WindowDef::set_allocated_start_offset(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.start_offset_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.start_offset_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.WindowDef.start_offset) } // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; inline bool WindowDef::has_end_offset() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.end_offset_ != nullptr); return value; } inline void WindowDef::clear_end_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.end_offset_ != nullptr) _impl_.end_offset_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& WindowDef::_internal_end_offset() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.end_offset_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WindowDef::end_offset() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.end_offset_); } _impl_.end_offset_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowDef.end_offset) } inline ::pg_query::Node* WindowDef::release_end_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.end_offset_; _impl_.end_offset_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* WindowDef::unsafe_arena_release_end_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WindowDef.end_offset) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.end_offset_; _impl_.end_offset_ = nullptr; return temp; } inline ::pg_query::Node* WindowDef::_internal_mutable_end_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.end_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.end_offset_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.end_offset_; } inline ::pg_query::Node* WindowDef::mutable_end_offset() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_end_offset(); // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.end_offset) return _msg; } inline void WindowDef::set_allocated_end_offset(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.end_offset_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.end_offset_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.WindowDef.end_offset) } // int32 location = 8 [json_name = "location"]; inline void WindowDef::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t WindowDef::location() const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.location) return _internal_location(); } inline void WindowDef::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.WindowDef.location) } inline ::int32_t WindowDef::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void WindowDef::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // RangeSubselect // bool lateral = 1 [json_name = "lateral"]; inline void RangeSubselect::clear_lateral() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.lateral_ = false; } inline bool RangeSubselect::lateral() const { // @@protoc_insertion_point(field_get:pg_query.RangeSubselect.lateral) return _internal_lateral(); } inline void RangeSubselect::set_lateral(bool value) { _internal_set_lateral(value); // @@protoc_insertion_point(field_set:pg_query.RangeSubselect.lateral) } inline bool RangeSubselect::_internal_lateral() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.lateral_; } inline void RangeSubselect::_internal_set_lateral(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.lateral_ = value; } // .pg_query.Node subquery = 2 [json_name = "subquery"]; inline bool RangeSubselect::has_subquery() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.subquery_ != nullptr); return value; } inline void RangeSubselect::clear_subquery() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.subquery_ != nullptr) _impl_.subquery_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& RangeSubselect::_internal_subquery() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.subquery_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeSubselect::subquery() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeSubselect.subquery) return _internal_subquery(); } inline void RangeSubselect::unsafe_arena_set_allocated_subquery(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.subquery_); } _impl_.subquery_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeSubselect.subquery) } inline ::pg_query::Node* RangeSubselect::release_subquery() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.subquery_; _impl_.subquery_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RangeSubselect::unsafe_arena_release_subquery() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeSubselect.subquery) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.subquery_; _impl_.subquery_ = nullptr; return temp; } inline ::pg_query::Node* RangeSubselect::_internal_mutable_subquery() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.subquery_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.subquery_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.subquery_; } inline ::pg_query::Node* RangeSubselect::mutable_subquery() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_subquery(); // @@protoc_insertion_point(field_mutable:pg_query.RangeSubselect.subquery) return _msg; } inline void RangeSubselect::set_allocated_subquery(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.subquery_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.subquery_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeSubselect.subquery) } // .pg_query.Alias alias = 3 [json_name = "alias"]; inline bool RangeSubselect::has_alias() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.alias_ != nullptr); return value; } inline void RangeSubselect::clear_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.alias_ != nullptr) _impl_.alias_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Alias& RangeSubselect::_internal_alias() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Alias* p = _impl_.alias_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& RangeSubselect::alias() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeSubselect.alias) return _internal_alias(); } inline void RangeSubselect::unsafe_arena_set_allocated_alias(::pg_query::Alias* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.alias_); } _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeSubselect.alias) } inline ::pg_query::Alias* RangeSubselect::release_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Alias* released = _impl_.alias_; _impl_.alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Alias* RangeSubselect::unsafe_arena_release_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeSubselect.alias) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeSubselect::_internal_mutable_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(p); } return _impl_.alias_; } inline ::pg_query::Alias* RangeSubselect::mutable_alias() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Alias* _msg = _internal_mutable_alias(); // @@protoc_insertion_point(field_mutable:pg_query.RangeSubselect.alias) return _msg; } inline void RangeSubselect::set_allocated_alias(::pg_query::Alias* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Alias*>(_impl_.alias_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Alias*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeSubselect.alias) } // ------------------------------------------------------------------- // RangeFunction // bool lateral = 1 [json_name = "lateral"]; inline void RangeFunction::clear_lateral() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.lateral_ = false; } inline bool RangeFunction::lateral() const { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.lateral) return _internal_lateral(); } inline void RangeFunction::set_lateral(bool value) { _internal_set_lateral(value); // @@protoc_insertion_point(field_set:pg_query.RangeFunction.lateral) } inline bool RangeFunction::_internal_lateral() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.lateral_; } inline void RangeFunction::_internal_set_lateral(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.lateral_ = value; } // bool ordinality = 2 [json_name = "ordinality"]; inline void RangeFunction::clear_ordinality() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ordinality_ = false; } inline bool RangeFunction::ordinality() const { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.ordinality) return _internal_ordinality(); } inline void RangeFunction::set_ordinality(bool value) { _internal_set_ordinality(value); // @@protoc_insertion_point(field_set:pg_query.RangeFunction.ordinality) } inline bool RangeFunction::_internal_ordinality() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ordinality_; } inline void RangeFunction::_internal_set_ordinality(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.ordinality_ = value; } // bool is_rowsfrom = 3 [json_name = "is_rowsfrom"]; inline void RangeFunction::clear_is_rowsfrom() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_rowsfrom_ = false; } inline bool RangeFunction::is_rowsfrom() const { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.is_rowsfrom) return _internal_is_rowsfrom(); } inline void RangeFunction::set_is_rowsfrom(bool value) { _internal_set_is_rowsfrom(value); // @@protoc_insertion_point(field_set:pg_query.RangeFunction.is_rowsfrom) } inline bool RangeFunction::_internal_is_rowsfrom() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_rowsfrom_; } inline void RangeFunction::_internal_set_is_rowsfrom(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_rowsfrom_ = value; } // repeated .pg_query.Node functions = 4 [json_name = "functions"]; inline int RangeFunction::_internal_functions_size() const { return _internal_functions().size(); } inline int RangeFunction::functions_size() const { return _internal_functions_size(); } inline void RangeFunction::clear_functions() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.functions_.Clear(); } inline ::pg_query::Node* RangeFunction::mutable_functions(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeFunction.functions) return _internal_mutable_functions()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeFunction::mutable_functions() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeFunction.functions) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_functions(); } inline const ::pg_query::Node& RangeFunction::functions(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.functions) return _internal_functions().Get(index); } inline ::pg_query::Node* RangeFunction::add_functions() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_functions()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeFunction.functions) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeFunction::functions() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeFunction.functions) return _internal_functions(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeFunction::_internal_functions() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.functions_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeFunction::_internal_mutable_functions() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.functions_; } // .pg_query.Alias alias = 5 [json_name = "alias"]; inline bool RangeFunction::has_alias() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.alias_ != nullptr); return value; } inline void RangeFunction::clear_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.alias_ != nullptr) _impl_.alias_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Alias& RangeFunction::_internal_alias() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Alias* p = _impl_.alias_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& RangeFunction::alias() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.alias) return _internal_alias(); } inline void RangeFunction::unsafe_arena_set_allocated_alias(::pg_query::Alias* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.alias_); } _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeFunction.alias) } inline ::pg_query::Alias* RangeFunction::release_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Alias* released = _impl_.alias_; _impl_.alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Alias* RangeFunction::unsafe_arena_release_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeFunction.alias) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeFunction::_internal_mutable_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(p); } return _impl_.alias_; } inline ::pg_query::Alias* RangeFunction::mutable_alias() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Alias* _msg = _internal_mutable_alias(); // @@protoc_insertion_point(field_mutable:pg_query.RangeFunction.alias) return _msg; } inline void RangeFunction::set_allocated_alias(::pg_query::Alias* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Alias*>(_impl_.alias_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Alias*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(value); // @@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 _internal_coldeflist().size(); } inline int RangeFunction::coldeflist_size() const { return _internal_coldeflist_size(); } inline void RangeFunction::clear_coldeflist() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coldeflist_.Clear(); } inline ::pg_query::Node* RangeFunction::mutable_coldeflist(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeFunction.coldeflist) return _internal_mutable_coldeflist()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeFunction::mutable_coldeflist() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeFunction.coldeflist) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_coldeflist(); } inline const ::pg_query::Node& RangeFunction::coldeflist(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.coldeflist) return _internal_coldeflist().Get(index); } inline ::pg_query::Node* RangeFunction::add_coldeflist() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_coldeflist()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeFunction.coldeflist) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeFunction::coldeflist() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeFunction.coldeflist) return _internal_coldeflist(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeFunction::_internal_coldeflist() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.coldeflist_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeFunction::_internal_mutable_coldeflist() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.coldeflist_; } // ------------------------------------------------------------------- // RangeTableFunc // bool lateral = 1 [json_name = "lateral"]; inline void RangeTableFunc::clear_lateral() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.lateral_ = false; } inline bool RangeTableFunc::lateral() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.lateral) return _internal_lateral(); } inline void RangeTableFunc::set_lateral(bool value) { _internal_set_lateral(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFunc.lateral) } inline bool RangeTableFunc::_internal_lateral() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.lateral_; } inline void RangeTableFunc::_internal_set_lateral(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.lateral_ = value; } // .pg_query.Node docexpr = 2 [json_name = "docexpr"]; inline bool RangeTableFunc::has_docexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.docexpr_ != nullptr); return value; } inline void RangeTableFunc::clear_docexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.docexpr_ != nullptr) _impl_.docexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& RangeTableFunc::_internal_docexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.docexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeTableFunc::docexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.docexpr) return _internal_docexpr(); } inline void RangeTableFunc::unsafe_arena_set_allocated_docexpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.docexpr_); } _impl_.docexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFunc.docexpr) } inline ::pg_query::Node* RangeTableFunc::release_docexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.docexpr_; _impl_.docexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RangeTableFunc::unsafe_arena_release_docexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTableFunc.docexpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.docexpr_; _impl_.docexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableFunc::_internal_mutable_docexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.docexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.docexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.docexpr_; } inline ::pg_query::Node* RangeTableFunc::mutable_docexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_docexpr(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.docexpr) return _msg; } inline void RangeTableFunc::set_allocated_docexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.docexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.docexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFunc.docexpr) } // .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; inline bool RangeTableFunc::has_rowexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.rowexpr_ != nullptr); return value; } inline void RangeTableFunc::clear_rowexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.rowexpr_ != nullptr) _impl_.rowexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& RangeTableFunc::_internal_rowexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.rowexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeTableFunc::rowexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.rowexpr) return _internal_rowexpr(); } inline void RangeTableFunc::unsafe_arena_set_allocated_rowexpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rowexpr_); } _impl_.rowexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFunc.rowexpr) } inline ::pg_query::Node* RangeTableFunc::release_rowexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.rowexpr_; _impl_.rowexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RangeTableFunc::unsafe_arena_release_rowexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTableFunc.rowexpr) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.rowexpr_; _impl_.rowexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableFunc::_internal_mutable_rowexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.rowexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.rowexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.rowexpr_; } inline ::pg_query::Node* RangeTableFunc::mutable_rowexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_rowexpr(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.rowexpr) return _msg; } inline void RangeTableFunc::set_allocated_rowexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.rowexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.rowexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_namespaces().size(); } inline int RangeTableFunc::namespaces_size() const { return _internal_namespaces_size(); } inline void RangeTableFunc::clear_namespaces() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.namespaces_.Clear(); } inline ::pg_query::Node* RangeTableFunc::mutable_namespaces(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.namespaces) return _internal_mutable_namespaces()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTableFunc::mutable_namespaces() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableFunc.namespaces) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_namespaces(); } inline const ::pg_query::Node& RangeTableFunc::namespaces(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.namespaces) return _internal_namespaces().Get(index); } inline ::pg_query::Node* RangeTableFunc::add_namespaces() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_namespaces()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTableFunc.namespaces) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTableFunc::namespaces() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTableFunc.namespaces) return _internal_namespaces(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTableFunc::_internal_namespaces() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.namespaces_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTableFunc::_internal_mutable_namespaces() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.namespaces_; } // repeated .pg_query.Node columns = 5 [json_name = "columns"]; inline int RangeTableFunc::_internal_columns_size() const { return _internal_columns().size(); } inline int RangeTableFunc::columns_size() const { return _internal_columns_size(); } inline void RangeTableFunc::clear_columns() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.columns_.Clear(); } inline ::pg_query::Node* RangeTableFunc::mutable_columns(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.columns) return _internal_mutable_columns()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTableFunc::mutable_columns() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableFunc.columns) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_columns(); } inline const ::pg_query::Node& RangeTableFunc::columns(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.columns) return _internal_columns().Get(index); } inline ::pg_query::Node* RangeTableFunc::add_columns() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_columns()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTableFunc.columns) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTableFunc::columns() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTableFunc.columns) return _internal_columns(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTableFunc::_internal_columns() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.columns_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTableFunc::_internal_mutable_columns() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.columns_; } // .pg_query.Alias alias = 6 [json_name = "alias"]; inline bool RangeTableFunc::has_alias() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.alias_ != nullptr); return value; } inline void RangeTableFunc::clear_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.alias_ != nullptr) _impl_.alias_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Alias& RangeTableFunc::_internal_alias() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Alias* p = _impl_.alias_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& RangeTableFunc::alias() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.alias) return _internal_alias(); } inline void RangeTableFunc::unsafe_arena_set_allocated_alias(::pg_query::Alias* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.alias_); } _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFunc.alias) } inline ::pg_query::Alias* RangeTableFunc::release_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Alias* released = _impl_.alias_; _impl_.alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Alias* RangeTableFunc::unsafe_arena_release_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTableFunc.alias) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeTableFunc::_internal_mutable_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(p); } return _impl_.alias_; } inline ::pg_query::Alias* RangeTableFunc::mutable_alias() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Alias* _msg = _internal_mutable_alias(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.alias) return _msg; } inline void RangeTableFunc::set_allocated_alias(::pg_query::Alias* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Alias*>(_impl_.alias_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Alias*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFunc.alias) } // int32 location = 7 [json_name = "location"]; inline void RangeTableFunc::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t RangeTableFunc::location() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.location) return _internal_location(); } inline void RangeTableFunc::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFunc.location) } inline ::int32_t RangeTableFunc::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void RangeTableFunc::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // RangeTableFuncCol // string colname = 1 [json_name = "colname"]; inline void RangeTableFuncCol::clear_colname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.colname_.ClearToEmpty(); } inline const std::string& RangeTableFuncCol::colname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.colname) return _internal_colname(); } template inline PROTOBUF_ALWAYS_INLINE void RangeTableFuncCol::set_colname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.colname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.colname) } inline std::string* RangeTableFuncCol::mutable_colname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_colname(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFuncCol.colname) return _s; } inline const std::string& RangeTableFuncCol::_internal_colname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.colname_.Get(); } inline void RangeTableFuncCol::_internal_set_colname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.colname_.Set(value, GetArena()); } inline std::string* RangeTableFuncCol::_internal_mutable_colname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.colname_.Mutable( GetArena()); } inline std::string* RangeTableFuncCol::release_colname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.colname) return _impl_.colname_.Release(); } inline void RangeTableFuncCol::set_allocated_colname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.colname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.colname_.IsDefault()) { _impl_.colname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFuncCol.colname) } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; inline bool RangeTableFuncCol::has_type_name() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.type_name_ != nullptr); return value; } inline void RangeTableFuncCol::clear_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.type_name_ != nullptr) _impl_.type_name_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::TypeName& RangeTableFuncCol::_internal_type_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.type_name_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& RangeTableFuncCol::type_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.type_name_); } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFuncCol.type_name) } inline ::pg_query::TypeName* RangeTableFuncCol::release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* released = _impl_.type_name_; _impl_.type_name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* RangeTableFuncCol::unsafe_arena_release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.type_name) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* RangeTableFuncCol::_internal_mutable_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.type_name_; } inline ::pg_query::TypeName* RangeTableFuncCol::mutable_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_type_name(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFuncCol.type_name) return _msg; } inline void RangeTableFuncCol::set_allocated_type_name(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.type_name_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.for_ordinality_ = false; } inline bool RangeTableFuncCol::for_ordinality() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.for_ordinality) return _internal_for_ordinality(); } inline void RangeTableFuncCol::set_for_ordinality(bool value) { _internal_set_for_ordinality(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.for_ordinality) } inline bool RangeTableFuncCol::_internal_for_ordinality() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.for_ordinality_; } inline void RangeTableFuncCol::_internal_set_for_ordinality(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.for_ordinality_ = value; } // bool is_not_null = 4 [json_name = "is_not_null"]; inline void RangeTableFuncCol::clear_is_not_null() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_not_null_ = false; } 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::set_is_not_null(bool value) { _internal_set_is_not_null(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.is_not_null) } inline bool RangeTableFuncCol::_internal_is_not_null() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_not_null_; } inline void RangeTableFuncCol::_internal_set_is_not_null(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_not_null_ = value; } // .pg_query.Node colexpr = 5 [json_name = "colexpr"]; inline bool RangeTableFuncCol::has_colexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.colexpr_ != nullptr); return value; } inline void RangeTableFuncCol::clear_colexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.colexpr_ != nullptr) _impl_.colexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& RangeTableFuncCol::_internal_colexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.colexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeTableFuncCol::colexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.colexpr) return _internal_colexpr(); } inline void RangeTableFuncCol::unsafe_arena_set_allocated_colexpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.colexpr_); } _impl_.colexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFuncCol.colexpr) } inline ::pg_query::Node* RangeTableFuncCol::release_colexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.colexpr_; _impl_.colexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RangeTableFuncCol::unsafe_arena_release_colexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.colexpr) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.colexpr_; _impl_.colexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableFuncCol::_internal_mutable_colexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.colexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.colexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.colexpr_; } inline ::pg_query::Node* RangeTableFuncCol::mutable_colexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_colexpr(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFuncCol.colexpr) return _msg; } inline void RangeTableFuncCol::set_allocated_colexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.colexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.colexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFuncCol.colexpr) } // .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; inline bool RangeTableFuncCol::has_coldefexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.coldefexpr_ != nullptr); return value; } inline void RangeTableFuncCol::clear_coldefexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.coldefexpr_ != nullptr) _impl_.coldefexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& RangeTableFuncCol::_internal_coldefexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.coldefexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeTableFuncCol::coldefexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.coldefexpr) return _internal_coldefexpr(); } inline void RangeTableFuncCol::unsafe_arena_set_allocated_coldefexpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.coldefexpr_); } _impl_.coldefexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFuncCol.coldefexpr) } inline ::pg_query::Node* RangeTableFuncCol::release_coldefexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.coldefexpr_; _impl_.coldefexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RangeTableFuncCol::unsafe_arena_release_coldefexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.coldefexpr) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.coldefexpr_; _impl_.coldefexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableFuncCol::_internal_mutable_coldefexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.coldefexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.coldefexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.coldefexpr_; } inline ::pg_query::Node* RangeTableFuncCol::mutable_coldefexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_coldefexpr(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFuncCol.coldefexpr) return _msg; } inline void RangeTableFuncCol::set_allocated_coldefexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.coldefexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.coldefexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFuncCol.coldefexpr) } // int32 location = 7 [json_name = "location"]; inline void RangeTableFuncCol::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t RangeTableFuncCol::location() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.location) return _internal_location(); } inline void RangeTableFuncCol::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.location) } inline ::int32_t RangeTableFuncCol::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void RangeTableFuncCol::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // RangeTableSample // .pg_query.Node relation = 1 [json_name = "relation"]; inline bool RangeTableSample::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void RangeTableSample::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& RangeTableSample::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeTableSample::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.relation) return _internal_relation(); } inline void RangeTableSample::unsafe_arena_set_allocated_relation(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableSample.relation) } inline ::pg_query::Node* RangeTableSample::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RangeTableSample::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTableSample.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableSample::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.relation_; } inline ::pg_query::Node* RangeTableSample::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTableSample.relation) return _msg; } inline void RangeTableSample::set_allocated_relation(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_method().size(); } inline int RangeTableSample::method_size() const { return _internal_method_size(); } inline void RangeTableSample::clear_method() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.method_.Clear(); } inline ::pg_query::Node* RangeTableSample::mutable_method(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableSample.method) return _internal_mutable_method()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTableSample::mutable_method() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableSample.method) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_method(); } inline const ::pg_query::Node& RangeTableSample::method(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.method) return _internal_method().Get(index); } inline ::pg_query::Node* RangeTableSample::add_method() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_method()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTableSample.method) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTableSample::method() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTableSample.method) return _internal_method(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTableSample::_internal_method() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.method_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTableSample::_internal_mutable_method() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.method_; } // repeated .pg_query.Node args = 3 [json_name = "args"]; inline int RangeTableSample::_internal_args_size() const { return _internal_args().size(); } inline int RangeTableSample::args_size() const { return _internal_args_size(); } inline void RangeTableSample::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* RangeTableSample::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableSample.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTableSample::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableSample.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& RangeTableSample::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.args) return _internal_args().Get(index); } inline ::pg_query::Node* RangeTableSample::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTableSample.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTableSample::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTableSample.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTableSample::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTableSample::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // .pg_query.Node repeatable = 4 [json_name = "repeatable"]; inline bool RangeTableSample::has_repeatable() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.repeatable_ != nullptr); return value; } inline void RangeTableSample::clear_repeatable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.repeatable_ != nullptr) _impl_.repeatable_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& RangeTableSample::_internal_repeatable() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.repeatable_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeTableSample::repeatable() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.repeatable) return _internal_repeatable(); } inline void RangeTableSample::unsafe_arena_set_allocated_repeatable(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.repeatable_); } _impl_.repeatable_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableSample.repeatable) } inline ::pg_query::Node* RangeTableSample::release_repeatable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.repeatable_; _impl_.repeatable_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RangeTableSample::unsafe_arena_release_repeatable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTableSample.repeatable) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.repeatable_; _impl_.repeatable_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableSample::_internal_mutable_repeatable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.repeatable_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.repeatable_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.repeatable_; } inline ::pg_query::Node* RangeTableSample::mutable_repeatable() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_repeatable(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTableSample.repeatable) return _msg; } inline void RangeTableSample::set_allocated_repeatable(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.repeatable_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.repeatable_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableSample.repeatable) } // int32 location = 5 [json_name = "location"]; inline void RangeTableSample::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t RangeTableSample::location() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.location) return _internal_location(); } inline void RangeTableSample::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableSample.location) } inline ::int32_t RangeTableSample::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void RangeTableSample::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // ColumnDef // string colname = 1 [json_name = "colname"]; inline void ColumnDef::clear_colname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.colname_.ClearToEmpty(); } inline const std::string& ColumnDef::colname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.colname) return _internal_colname(); } template inline PROTOBUF_ALWAYS_INLINE void ColumnDef::set_colname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.colname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.colname) } inline std::string* ColumnDef::mutable_colname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_colname(); // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.colname) return _s; } inline const std::string& ColumnDef::_internal_colname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.colname_.Get(); } inline void ColumnDef::_internal_set_colname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.colname_.Set(value, GetArena()); } inline std::string* ColumnDef::_internal_mutable_colname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.colname_.Mutable( GetArena()); } inline std::string* ColumnDef::release_colname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ColumnDef.colname) return _impl_.colname_.Release(); } inline void ColumnDef::set_allocated_colname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.colname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.colname_.IsDefault()) { _impl_.colname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.colname) } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; inline bool ColumnDef::has_type_name() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.type_name_ != nullptr); return value; } inline void ColumnDef::clear_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.type_name_ != nullptr) _impl_.type_name_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::TypeName& ColumnDef::_internal_type_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.type_name_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& ColumnDef::type_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.type_name_); } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.type_name) } inline ::pg_query::TypeName* ColumnDef::release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* released = _impl_.type_name_; _impl_.type_name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* ColumnDef::unsafe_arena_release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ColumnDef.type_name) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* ColumnDef::_internal_mutable_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.type_name_; } inline ::pg_query::TypeName* ColumnDef::mutable_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_type_name(); // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.type_name) return _msg; } inline void ColumnDef::set_allocated_type_name(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.type_name_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.type_name) } // string compression = 3 [json_name = "compression"]; inline void ColumnDef::clear_compression() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.compression_.ClearToEmpty(); } inline const std::string& ColumnDef::compression() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.compression) return _internal_compression(); } template inline PROTOBUF_ALWAYS_INLINE void ColumnDef::set_compression(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.compression_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.compression) } inline std::string* ColumnDef::mutable_compression() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_compression(); // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.compression) return _s; } inline const std::string& ColumnDef::_internal_compression() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.compression_.Get(); } inline void ColumnDef::_internal_set_compression(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.compression_.Set(value, GetArena()); } inline std::string* ColumnDef::_internal_mutable_compression() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.compression_.Mutable( GetArena()); } inline std::string* ColumnDef::release_compression() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ColumnDef.compression) return _impl_.compression_.Release(); } inline void ColumnDef::set_allocated_compression(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.compression_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.compression_.IsDefault()) { _impl_.compression_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.compression) } // int32 inhcount = 4 [json_name = "inhcount"]; inline void ColumnDef::clear_inhcount() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inhcount_ = 0; } inline ::int32_t ColumnDef::inhcount() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.inhcount) return _internal_inhcount(); } inline void ColumnDef::set_inhcount(::int32_t value) { _internal_set_inhcount(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.inhcount) } inline ::int32_t ColumnDef::_internal_inhcount() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inhcount_; } inline void ColumnDef::_internal_set_inhcount(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inhcount_ = value; } // bool is_local = 5 [json_name = "is_local"]; inline void ColumnDef::clear_is_local() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_local_ = false; } inline bool ColumnDef::is_local() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.is_local) return _internal_is_local(); } inline void ColumnDef::set_is_local(bool value) { _internal_set_is_local(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.is_local) } inline bool ColumnDef::_internal_is_local() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_local_; } inline void ColumnDef::_internal_set_is_local(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_local_ = value; } // bool is_not_null = 6 [json_name = "is_not_null"]; inline void ColumnDef::clear_is_not_null() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_not_null_ = false; } 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::set_is_not_null(bool value) { _internal_set_is_not_null(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.is_not_null) } inline bool ColumnDef::_internal_is_not_null() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_not_null_; } inline void ColumnDef::_internal_set_is_not_null(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_not_null_ = value; } // bool is_from_type = 7 [json_name = "is_from_type"]; inline void ColumnDef::clear_is_from_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_from_type_ = false; } 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::set_is_from_type(bool value) { _internal_set_is_from_type(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.is_from_type) } inline bool ColumnDef::_internal_is_from_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_from_type_; } inline void ColumnDef::_internal_set_is_from_type(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_from_type_ = value; } // string storage = 8 [json_name = "storage"]; inline void ColumnDef::clear_storage() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.storage_.ClearToEmpty(); } inline const std::string& ColumnDef::storage() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.storage) return _internal_storage(); } template inline PROTOBUF_ALWAYS_INLINE void ColumnDef::set_storage(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.storage_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.storage) } inline std::string* ColumnDef::mutable_storage() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_storage(); // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.storage) return _s; } inline const std::string& ColumnDef::_internal_storage() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.storage_.Get(); } inline void ColumnDef::_internal_set_storage(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.storage_.Set(value, GetArena()); } inline std::string* ColumnDef::_internal_mutable_storage() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.storage_.Mutable( GetArena()); } inline std::string* ColumnDef::release_storage() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ColumnDef.storage) return _impl_.storage_.Release(); } inline void ColumnDef::set_allocated_storage(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.storage_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.storage_.IsDefault()) { _impl_.storage_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.storage) } // string storage_name = 9 [json_name = "storage_name"]; inline void ColumnDef::clear_storage_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.storage_name_.ClearToEmpty(); } inline const std::string& ColumnDef::storage_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.storage_name) return _internal_storage_name(); } template inline PROTOBUF_ALWAYS_INLINE void ColumnDef::set_storage_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.storage_name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.storage_name) } inline std::string* ColumnDef::mutable_storage_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_storage_name(); // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.storage_name) return _s; } inline const std::string& ColumnDef::_internal_storage_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.storage_name_.Get(); } inline void ColumnDef::_internal_set_storage_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.storage_name_.Set(value, GetArena()); } inline std::string* ColumnDef::_internal_mutable_storage_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.storage_name_.Mutable( GetArena()); } inline std::string* ColumnDef::release_storage_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ColumnDef.storage_name) return _impl_.storage_name_.Release(); } inline void ColumnDef::set_allocated_storage_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.storage_name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.storage_name_.IsDefault()) { _impl_.storage_name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.storage_name) } // .pg_query.Node raw_default = 10 [json_name = "raw_default"]; inline bool ColumnDef::has_raw_default() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.raw_default_ != nullptr); return value; } inline void ColumnDef::clear_raw_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.raw_default_ != nullptr) _impl_.raw_default_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& ColumnDef::_internal_raw_default() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.raw_default_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ColumnDef::raw_default() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.raw_default_); } _impl_.raw_default_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.raw_default) } inline ::pg_query::Node* ColumnDef::release_raw_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.raw_default_; _impl_.raw_default_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* ColumnDef::unsafe_arena_release_raw_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ColumnDef.raw_default) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.raw_default_; _impl_.raw_default_ = nullptr; return temp; } inline ::pg_query::Node* ColumnDef::_internal_mutable_raw_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.raw_default_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.raw_default_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.raw_default_; } inline ::pg_query::Node* ColumnDef::mutable_raw_default() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_raw_default(); // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.raw_default) return _msg; } inline void ColumnDef::set_allocated_raw_default(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.raw_default_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.raw_default_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.raw_default) } // .pg_query.Node cooked_default = 11 [json_name = "cooked_default"]; inline bool ColumnDef::has_cooked_default() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.cooked_default_ != nullptr); return value; } inline void ColumnDef::clear_cooked_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.cooked_default_ != nullptr) _impl_.cooked_default_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& ColumnDef::_internal_cooked_default() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.cooked_default_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ColumnDef::cooked_default() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.cooked_default_); } _impl_.cooked_default_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.cooked_default) } inline ::pg_query::Node* ColumnDef::release_cooked_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.cooked_default_; _impl_.cooked_default_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* ColumnDef::unsafe_arena_release_cooked_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ColumnDef.cooked_default) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.cooked_default_; _impl_.cooked_default_ = nullptr; return temp; } inline ::pg_query::Node* ColumnDef::_internal_mutable_cooked_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.cooked_default_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.cooked_default_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.cooked_default_; } inline ::pg_query::Node* ColumnDef::mutable_cooked_default() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_cooked_default(); // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.cooked_default) return _msg; } inline void ColumnDef::set_allocated_cooked_default(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.cooked_default_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.cooked_default_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.cooked_default) } // string identity = 12 [json_name = "identity"]; inline void ColumnDef::clear_identity() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.identity_.ClearToEmpty(); } inline const std::string& ColumnDef::identity() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.identity) return _internal_identity(); } template inline PROTOBUF_ALWAYS_INLINE void ColumnDef::set_identity(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.identity_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.identity) } inline std::string* ColumnDef::mutable_identity() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_identity(); // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.identity) return _s; } inline const std::string& ColumnDef::_internal_identity() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.identity_.Get(); } inline void ColumnDef::_internal_set_identity(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.identity_.Set(value, GetArena()); } inline std::string* ColumnDef::_internal_mutable_identity() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.identity_.Mutable( GetArena()); } inline std::string* ColumnDef::release_identity() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ColumnDef.identity) return _impl_.identity_.Release(); } inline void ColumnDef::set_allocated_identity(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.identity_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.identity_.IsDefault()) { _impl_.identity_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.identity) } // .pg_query.RangeVar identity_sequence = 13 [json_name = "identitySequence"]; inline bool ColumnDef::has_identity_sequence() const { bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0; PROTOBUF_ASSUME(!value || _impl_.identity_sequence_ != nullptr); return value; } inline void ColumnDef::clear_identity_sequence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.identity_sequence_ != nullptr) _impl_.identity_sequence_->Clear(); _impl_._has_bits_[0] &= ~0x00000008u; } inline const ::pg_query::RangeVar& ColumnDef::_internal_identity_sequence() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.identity_sequence_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& ColumnDef::identity_sequence() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.identity_sequence_); } _impl_.identity_sequence_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.identity_sequence) } inline ::pg_query::RangeVar* ColumnDef::release_identity_sequence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::RangeVar* released = _impl_.identity_sequence_; _impl_.identity_sequence_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* ColumnDef::unsafe_arena_release_identity_sequence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ColumnDef.identity_sequence) _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::RangeVar* temp = _impl_.identity_sequence_; _impl_.identity_sequence_ = nullptr; return temp; } inline ::pg_query::RangeVar* ColumnDef::_internal_mutable_identity_sequence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000008u; if (_impl_.identity_sequence_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.identity_sequence_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.identity_sequence_; } inline ::pg_query::RangeVar* ColumnDef::mutable_identity_sequence() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_identity_sequence(); // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.identity_sequence) return _msg; } inline void ColumnDef::set_allocated_identity_sequence(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.identity_sequence_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } _impl_.identity_sequence_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.identity_sequence) } // string generated = 14 [json_name = "generated"]; inline void ColumnDef::clear_generated() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.generated_.ClearToEmpty(); } inline const std::string& ColumnDef::generated() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.generated) return _internal_generated(); } template inline PROTOBUF_ALWAYS_INLINE void ColumnDef::set_generated(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.generated_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.generated) } inline std::string* ColumnDef::mutable_generated() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_generated(); // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.generated) return _s; } inline const std::string& ColumnDef::_internal_generated() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.generated_.Get(); } inline void ColumnDef::_internal_set_generated(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.generated_.Set(value, GetArena()); } inline std::string* ColumnDef::_internal_mutable_generated() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.generated_.Mutable( GetArena()); } inline std::string* ColumnDef::release_generated() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ColumnDef.generated) return _impl_.generated_.Release(); } inline void ColumnDef::set_allocated_generated(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.generated_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.generated_.IsDefault()) { _impl_.generated_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.generated) } // .pg_query.CollateClause coll_clause = 15 [json_name = "collClause"]; inline bool ColumnDef::has_coll_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0; PROTOBUF_ASSUME(!value || _impl_.coll_clause_ != nullptr); return value; } inline void ColumnDef::clear_coll_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.coll_clause_ != nullptr) _impl_.coll_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000010u; } inline const ::pg_query::CollateClause& ColumnDef::_internal_coll_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::CollateClause* p = _impl_.coll_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_CollateClause_default_instance_); } inline const ::pg_query::CollateClause& ColumnDef::coll_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.coll_clause_); } _impl_.coll_clause_ = reinterpret_cast<::pg_query::CollateClause*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.coll_clause) } inline ::pg_query::CollateClause* ColumnDef::release_coll_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::CollateClause* released = _impl_.coll_clause_; _impl_.coll_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::CollateClause* ColumnDef::unsafe_arena_release_coll_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ColumnDef.coll_clause) _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::CollateClause* temp = _impl_.coll_clause_; _impl_.coll_clause_ = nullptr; return temp; } inline ::pg_query::CollateClause* ColumnDef::_internal_mutable_coll_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000010u; if (_impl_.coll_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::CollateClause>(GetArena()); _impl_.coll_clause_ = reinterpret_cast<::pg_query::CollateClause*>(p); } return _impl_.coll_clause_; } inline ::pg_query::CollateClause* ColumnDef::mutable_coll_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CollateClause* _msg = _internal_mutable_coll_clause(); // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.coll_clause) return _msg; } inline void ColumnDef::set_allocated_coll_clause(::pg_query::CollateClause* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::CollateClause*>(_impl_.coll_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::CollateClause*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } _impl_.coll_clause_ = reinterpret_cast<::pg_query::CollateClause*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.coll_clause) } // uint32 coll_oid = 16 [json_name = "collOid"]; inline void ColumnDef::clear_coll_oid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coll_oid_ = 0u; } inline ::uint32_t ColumnDef::coll_oid() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.coll_oid) return _internal_coll_oid(); } inline void ColumnDef::set_coll_oid(::uint32_t value) { _internal_set_coll_oid(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.coll_oid) } inline ::uint32_t ColumnDef::_internal_coll_oid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.coll_oid_; } inline void ColumnDef::_internal_set_coll_oid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.coll_oid_ = value; } // repeated .pg_query.Node constraints = 17 [json_name = "constraints"]; inline int ColumnDef::_internal_constraints_size() const { return _internal_constraints().size(); } inline int ColumnDef::constraints_size() const { return _internal_constraints_size(); } inline void ColumnDef::clear_constraints() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.constraints_.Clear(); } inline ::pg_query::Node* ColumnDef::mutable_constraints(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.constraints) return _internal_mutable_constraints()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ColumnDef::mutable_constraints() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ColumnDef.constraints) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_constraints(); } inline const ::pg_query::Node& ColumnDef::constraints(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.constraints) return _internal_constraints().Get(index); } inline ::pg_query::Node* ColumnDef::add_constraints() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_constraints()->Add(); // @@protoc_insertion_point(field_add:pg_query.ColumnDef.constraints) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ColumnDef::constraints() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ColumnDef.constraints) return _internal_constraints(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ColumnDef::_internal_constraints() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.constraints_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ColumnDef::_internal_mutable_constraints() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.constraints_; } // repeated .pg_query.Node fdwoptions = 18 [json_name = "fdwoptions"]; inline int ColumnDef::_internal_fdwoptions_size() const { return _internal_fdwoptions().size(); } inline int ColumnDef::fdwoptions_size() const { return _internal_fdwoptions_size(); } inline void ColumnDef::clear_fdwoptions() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fdwoptions_.Clear(); } inline ::pg_query::Node* ColumnDef::mutable_fdwoptions(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.fdwoptions) return _internal_mutable_fdwoptions()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ColumnDef::mutable_fdwoptions() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ColumnDef.fdwoptions) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_fdwoptions(); } inline const ::pg_query::Node& ColumnDef::fdwoptions(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.fdwoptions) return _internal_fdwoptions().Get(index); } inline ::pg_query::Node* ColumnDef::add_fdwoptions() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_fdwoptions()->Add(); // @@protoc_insertion_point(field_add:pg_query.ColumnDef.fdwoptions) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ColumnDef::fdwoptions() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ColumnDef.fdwoptions) return _internal_fdwoptions(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ColumnDef::_internal_fdwoptions() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.fdwoptions_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ColumnDef::_internal_mutable_fdwoptions() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.fdwoptions_; } // int32 location = 19 [json_name = "location"]; inline void ColumnDef::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t ColumnDef::location() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.location) return _internal_location(); } inline void ColumnDef::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.location) } inline ::int32_t ColumnDef::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void ColumnDef::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // TableLikeClause // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool TableLikeClause::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void TableLikeClause::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& TableLikeClause::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& TableLikeClause::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableLikeClause.relation) return _internal_relation(); } inline void TableLikeClause::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableLikeClause.relation) } inline ::pg_query::RangeVar* TableLikeClause::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* TableLikeClause::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.TableLikeClause.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* TableLikeClause::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* TableLikeClause::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.TableLikeClause.relation) return _msg; } inline void TableLikeClause::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.TableLikeClause.relation) } // uint32 options = 2 [json_name = "options"]; inline void TableLikeClause::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_ = 0u; } inline ::uint32_t TableLikeClause::options() const { // @@protoc_insertion_point(field_get:pg_query.TableLikeClause.options) return _internal_options(); } inline void TableLikeClause::set_options(::uint32_t value) { _internal_set_options(value); // @@protoc_insertion_point(field_set:pg_query.TableLikeClause.options) } inline ::uint32_t TableLikeClause::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline void TableLikeClause::_internal_set_options(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.options_ = value; } // uint32 relation_oid = 3 [json_name = "relationOid"]; inline void TableLikeClause::clear_relation_oid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relation_oid_ = 0u; } inline ::uint32_t TableLikeClause::relation_oid() const { // @@protoc_insertion_point(field_get:pg_query.TableLikeClause.relation_oid) return _internal_relation_oid(); } inline void TableLikeClause::set_relation_oid(::uint32_t value) { _internal_set_relation_oid(value); // @@protoc_insertion_point(field_set:pg_query.TableLikeClause.relation_oid) } inline ::uint32_t TableLikeClause::_internal_relation_oid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.relation_oid_; } inline void TableLikeClause::_internal_set_relation_oid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.relation_oid_ = value; } // ------------------------------------------------------------------- // IndexElem // string name = 1 [json_name = "name"]; inline void IndexElem::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& IndexElem::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexElem.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void IndexElem::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.IndexElem.name) } inline std::string* IndexElem::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.name) return _s; } inline const std::string& IndexElem::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void IndexElem::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* IndexElem::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* IndexElem::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.IndexElem.name) return _impl_.name_.Release(); } inline void IndexElem::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.IndexElem.name) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool IndexElem::has_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.expr_ != nullptr); return value; } inline void IndexElem::clear_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.expr_ != nullptr) _impl_.expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& IndexElem::_internal_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& IndexElem::expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexElem.expr) return _internal_expr(); } inline void IndexElem::unsafe_arena_set_allocated_expr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expr_); } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IndexElem.expr) } inline ::pg_query::Node* IndexElem::release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* IndexElem::unsafe_arena_release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.IndexElem.expr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* IndexElem::_internal_mutable_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.expr_; } inline ::pg_query::Node* IndexElem::mutable_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_expr(); // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.expr) return _msg; } inline void IndexElem::set_allocated_expr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.IndexElem.expr) } // string indexcolname = 3 [json_name = "indexcolname"]; inline void IndexElem::clear_indexcolname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.indexcolname_.ClearToEmpty(); } inline const std::string& IndexElem::indexcolname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexElem.indexcolname) return _internal_indexcolname(); } template inline PROTOBUF_ALWAYS_INLINE void IndexElem::set_indexcolname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.indexcolname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.IndexElem.indexcolname) } inline std::string* IndexElem::mutable_indexcolname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_indexcolname(); // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.indexcolname) return _s; } inline const std::string& IndexElem::_internal_indexcolname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.indexcolname_.Get(); } inline void IndexElem::_internal_set_indexcolname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.indexcolname_.Set(value, GetArena()); } inline std::string* IndexElem::_internal_mutable_indexcolname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.indexcolname_.Mutable( GetArena()); } inline std::string* IndexElem::release_indexcolname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.IndexElem.indexcolname) return _impl_.indexcolname_.Release(); } inline void IndexElem::set_allocated_indexcolname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.indexcolname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.indexcolname_.IsDefault()) { _impl_.indexcolname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_collation().size(); } inline int IndexElem::collation_size() const { return _internal_collation_size(); } inline void IndexElem::clear_collation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.collation_.Clear(); } inline ::pg_query::Node* IndexElem::mutable_collation(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.collation) return _internal_mutable_collation()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IndexElem::mutable_collation() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexElem.collation) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_collation(); } inline const ::pg_query::Node& IndexElem::collation(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexElem.collation) return _internal_collation().Get(index); } inline ::pg_query::Node* IndexElem::add_collation() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_collation()->Add(); // @@protoc_insertion_point(field_add:pg_query.IndexElem.collation) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IndexElem::collation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.IndexElem.collation) return _internal_collation(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IndexElem::_internal_collation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.collation_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IndexElem::_internal_mutable_collation() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.collation_; } // repeated .pg_query.Node opclass = 5 [json_name = "opclass"]; inline int IndexElem::_internal_opclass_size() const { return _internal_opclass().size(); } inline int IndexElem::opclass_size() const { return _internal_opclass_size(); } inline void IndexElem::clear_opclass() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opclass_.Clear(); } inline ::pg_query::Node* IndexElem::mutable_opclass(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.opclass) return _internal_mutable_opclass()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IndexElem::mutable_opclass() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexElem.opclass) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_opclass(); } inline const ::pg_query::Node& IndexElem::opclass(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexElem.opclass) return _internal_opclass().Get(index); } inline ::pg_query::Node* IndexElem::add_opclass() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_opclass()->Add(); // @@protoc_insertion_point(field_add:pg_query.IndexElem.opclass) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IndexElem::opclass() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.IndexElem.opclass) return _internal_opclass(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IndexElem::_internal_opclass() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opclass_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IndexElem::_internal_mutable_opclass() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.opclass_; } // repeated .pg_query.Node opclassopts = 6 [json_name = "opclassopts"]; inline int IndexElem::_internal_opclassopts_size() const { return _internal_opclassopts().size(); } inline int IndexElem::opclassopts_size() const { return _internal_opclassopts_size(); } inline void IndexElem::clear_opclassopts() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opclassopts_.Clear(); } inline ::pg_query::Node* IndexElem::mutable_opclassopts(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.opclassopts) return _internal_mutable_opclassopts()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IndexElem::mutable_opclassopts() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexElem.opclassopts) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_opclassopts(); } inline const ::pg_query::Node& IndexElem::opclassopts(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexElem.opclassopts) return _internal_opclassopts().Get(index); } inline ::pg_query::Node* IndexElem::add_opclassopts() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_opclassopts()->Add(); // @@protoc_insertion_point(field_add:pg_query.IndexElem.opclassopts) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IndexElem::opclassopts() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.IndexElem.opclassopts) return _internal_opclassopts(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IndexElem::_internal_opclassopts() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opclassopts_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IndexElem::_internal_mutable_opclassopts() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.opclassopts_; } // .pg_query.SortByDir ordering = 7 [json_name = "ordering"]; inline void IndexElem::clear_ordering() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ordering_ = 0; } inline ::pg_query::SortByDir IndexElem::ordering() const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.ordering) return _internal_ordering(); } inline void IndexElem::set_ordering(::pg_query::SortByDir value) { _internal_set_ordering(value); // @@protoc_insertion_point(field_set:pg_query.IndexElem.ordering) } inline ::pg_query::SortByDir IndexElem::_internal_ordering() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::SortByDir>(_impl_.ordering_); } inline void IndexElem::_internal_set_ordering(::pg_query::SortByDir value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.ordering_ = value; } // .pg_query.SortByNulls nulls_ordering = 8 [json_name = "nulls_ordering"]; inline void IndexElem::clear_nulls_ordering() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.nulls_ordering_ = 0; } 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::set_nulls_ordering(::pg_query::SortByNulls value) { _internal_set_nulls_ordering(value); // @@protoc_insertion_point(field_set:pg_query.IndexElem.nulls_ordering) } inline ::pg_query::SortByNulls IndexElem::_internal_nulls_ordering() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::SortByNulls>(_impl_.nulls_ordering_); } inline void IndexElem::_internal_set_nulls_ordering(::pg_query::SortByNulls value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.nulls_ordering_ = value; } // ------------------------------------------------------------------- // DefElem // string defnamespace = 1 [json_name = "defnamespace"]; inline void DefElem::clear_defnamespace() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.defnamespace_.ClearToEmpty(); } inline const std::string& DefElem::defnamespace() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DefElem.defnamespace) return _internal_defnamespace(); } template inline PROTOBUF_ALWAYS_INLINE void DefElem::set_defnamespace(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.defnamespace_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.DefElem.defnamespace) } inline std::string* DefElem::mutable_defnamespace() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_defnamespace(); // @@protoc_insertion_point(field_mutable:pg_query.DefElem.defnamespace) return _s; } inline const std::string& DefElem::_internal_defnamespace() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.defnamespace_.Get(); } inline void DefElem::_internal_set_defnamespace(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.defnamespace_.Set(value, GetArena()); } inline std::string* DefElem::_internal_mutable_defnamespace() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.defnamespace_.Mutable( GetArena()); } inline std::string* DefElem::release_defnamespace() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DefElem.defnamespace) return _impl_.defnamespace_.Release(); } inline void DefElem::set_allocated_defnamespace(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.defnamespace_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.defnamespace_.IsDefault()) { _impl_.defnamespace_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.DefElem.defnamespace) } // string defname = 2 [json_name = "defname"]; inline void DefElem::clear_defname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.defname_.ClearToEmpty(); } inline const std::string& DefElem::defname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DefElem.defname) return _internal_defname(); } template inline PROTOBUF_ALWAYS_INLINE void DefElem::set_defname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.defname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.DefElem.defname) } inline std::string* DefElem::mutable_defname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_defname(); // @@protoc_insertion_point(field_mutable:pg_query.DefElem.defname) return _s; } inline const std::string& DefElem::_internal_defname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.defname_.Get(); } inline void DefElem::_internal_set_defname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.defname_.Set(value, GetArena()); } inline std::string* DefElem::_internal_mutable_defname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.defname_.Mutable( GetArena()); } inline std::string* DefElem::release_defname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DefElem.defname) return _impl_.defname_.Release(); } inline void DefElem::set_allocated_defname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.defname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.defname_.IsDefault()) { _impl_.defname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.DefElem.defname) } // .pg_query.Node arg = 3 [json_name = "arg"]; inline bool DefElem::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void DefElem::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& DefElem::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& DefElem::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DefElem.arg) return _internal_arg(); } inline void DefElem::unsafe_arena_set_allocated_arg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DefElem.arg) } inline ::pg_query::Node* DefElem::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* DefElem::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DefElem.arg) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::Node* DefElem::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.arg_; } inline ::pg_query::Node* DefElem::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.DefElem.arg) return _msg; } inline void DefElem::set_allocated_arg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.arg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.DefElem.arg) } // .pg_query.DefElemAction defaction = 4 [json_name = "defaction"]; inline void DefElem::clear_defaction() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.defaction_ = 0; } inline ::pg_query::DefElemAction DefElem::defaction() const { // @@protoc_insertion_point(field_get:pg_query.DefElem.defaction) return _internal_defaction(); } inline void DefElem::set_defaction(::pg_query::DefElemAction value) { _internal_set_defaction(value); // @@protoc_insertion_point(field_set:pg_query.DefElem.defaction) } inline ::pg_query::DefElemAction DefElem::_internal_defaction() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::DefElemAction>(_impl_.defaction_); } inline void DefElem::_internal_set_defaction(::pg_query::DefElemAction value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.defaction_ = value; } // int32 location = 5 [json_name = "location"]; inline void DefElem::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t DefElem::location() const { // @@protoc_insertion_point(field_get:pg_query.DefElem.location) return _internal_location(); } inline void DefElem::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.DefElem.location) } inline ::int32_t DefElem::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void DefElem::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // LockingClause // repeated .pg_query.Node locked_rels = 1 [json_name = "lockedRels"]; inline int LockingClause::_internal_locked_rels_size() const { return _internal_locked_rels().size(); } inline int LockingClause::locked_rels_size() const { return _internal_locked_rels_size(); } inline void LockingClause::clear_locked_rels() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.locked_rels_.Clear(); } inline ::pg_query::Node* LockingClause::mutable_locked_rels(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.LockingClause.locked_rels) return _internal_mutable_locked_rels()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* LockingClause::mutable_locked_rels() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.LockingClause.locked_rels) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_locked_rels(); } inline const ::pg_query::Node& LockingClause::locked_rels(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.LockingClause.locked_rels) return _internal_locked_rels().Get(index); } inline ::pg_query::Node* LockingClause::add_locked_rels() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_locked_rels()->Add(); // @@protoc_insertion_point(field_add:pg_query.LockingClause.locked_rels) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& LockingClause::locked_rels() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.LockingClause.locked_rels) return _internal_locked_rels(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& LockingClause::_internal_locked_rels() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.locked_rels_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* LockingClause::_internal_mutable_locked_rels() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.locked_rels_; } // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; inline void LockingClause::clear_strength() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.strength_ = 0; } inline ::pg_query::LockClauseStrength LockingClause::strength() const { // @@protoc_insertion_point(field_get:pg_query.LockingClause.strength) return _internal_strength(); } inline void LockingClause::set_strength(::pg_query::LockClauseStrength value) { _internal_set_strength(value); // @@protoc_insertion_point(field_set:pg_query.LockingClause.strength) } inline ::pg_query::LockClauseStrength LockingClause::_internal_strength() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::LockClauseStrength>(_impl_.strength_); } inline void LockingClause::_internal_set_strength(::pg_query::LockClauseStrength value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.strength_ = value; } // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; inline void LockingClause::clear_wait_policy() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.wait_policy_ = 0; } 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::set_wait_policy(::pg_query::LockWaitPolicy value) { _internal_set_wait_policy(value); // @@protoc_insertion_point(field_set:pg_query.LockingClause.wait_policy) } inline ::pg_query::LockWaitPolicy LockingClause::_internal_wait_policy() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::LockWaitPolicy>(_impl_.wait_policy_); } inline void LockingClause::_internal_set_wait_policy(::pg_query::LockWaitPolicy value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.wait_policy_ = value; } // ------------------------------------------------------------------- // XmlSerialize // .pg_query.XmlOptionType xmloption = 1 [json_name = "xmloption"]; inline void XmlSerialize::clear_xmloption() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.xmloption_ = 0; } inline ::pg_query::XmlOptionType XmlSerialize::xmloption() const { // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.xmloption) return _internal_xmloption(); } inline void XmlSerialize::set_xmloption(::pg_query::XmlOptionType value) { _internal_set_xmloption(value); // @@protoc_insertion_point(field_set:pg_query.XmlSerialize.xmloption) } inline ::pg_query::XmlOptionType XmlSerialize::_internal_xmloption() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::XmlOptionType>(_impl_.xmloption_); } inline void XmlSerialize::_internal_set_xmloption(::pg_query::XmlOptionType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.xmloption_ = value; } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool XmlSerialize::has_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.expr_ != nullptr); return value; } inline void XmlSerialize::clear_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.expr_ != nullptr) _impl_.expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& XmlSerialize::_internal_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& XmlSerialize::expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.expr) return _internal_expr(); } inline void XmlSerialize::unsafe_arena_set_allocated_expr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expr_); } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.XmlSerialize.expr) } inline ::pg_query::Node* XmlSerialize::release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* XmlSerialize::unsafe_arena_release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.XmlSerialize.expr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* XmlSerialize::_internal_mutable_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.expr_; } inline ::pg_query::Node* XmlSerialize::mutable_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_expr(); // @@protoc_insertion_point(field_mutable:pg_query.XmlSerialize.expr) return _msg; } inline void XmlSerialize::set_allocated_expr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.XmlSerialize.expr) } // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; inline bool XmlSerialize::has_type_name() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.type_name_ != nullptr); return value; } inline void XmlSerialize::clear_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.type_name_ != nullptr) _impl_.type_name_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::TypeName& XmlSerialize::_internal_type_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.type_name_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& XmlSerialize::type_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.type_name_); } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.XmlSerialize.type_name) } inline ::pg_query::TypeName* XmlSerialize::release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::TypeName* released = _impl_.type_name_; _impl_.type_name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* XmlSerialize::unsafe_arena_release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.XmlSerialize.type_name) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* XmlSerialize::_internal_mutable_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.type_name_; } inline ::pg_query::TypeName* XmlSerialize::mutable_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_type_name(); // @@protoc_insertion_point(field_mutable:pg_query.XmlSerialize.type_name) return _msg; } inline void XmlSerialize::set_allocated_type_name(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.type_name_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.XmlSerialize.type_name) } // bool indent = 4 [json_name = "indent"]; inline void XmlSerialize::clear_indent() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.indent_ = false; } inline bool XmlSerialize::indent() const { // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.indent) return _internal_indent(); } inline void XmlSerialize::set_indent(bool value) { _internal_set_indent(value); // @@protoc_insertion_point(field_set:pg_query.XmlSerialize.indent) } inline bool XmlSerialize::_internal_indent() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.indent_; } inline void XmlSerialize::_internal_set_indent(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.indent_ = value; } // int32 location = 5 [json_name = "location"]; inline void XmlSerialize::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t XmlSerialize::location() const { // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.location) return _internal_location(); } inline void XmlSerialize::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.XmlSerialize.location) } inline ::int32_t XmlSerialize::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void XmlSerialize::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // PartitionElem // string name = 1 [json_name = "name"]; inline void PartitionElem::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& PartitionElem::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void PartitionElem::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.PartitionElem.name) } inline std::string* PartitionElem::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.PartitionElem.name) return _s; } inline const std::string& PartitionElem::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void PartitionElem::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* PartitionElem::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* PartitionElem::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.PartitionElem.name) return _impl_.name_.Release(); } inline void PartitionElem::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionElem.name) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool PartitionElem::has_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.expr_ != nullptr); return value; } inline void PartitionElem::clear_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.expr_ != nullptr) _impl_.expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& PartitionElem::_internal_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& PartitionElem::expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.expr) return _internal_expr(); } inline void PartitionElem::unsafe_arena_set_allocated_expr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expr_); } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionElem.expr) } inline ::pg_query::Node* PartitionElem::release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* PartitionElem::unsafe_arena_release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.PartitionElem.expr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* PartitionElem::_internal_mutable_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.expr_; } inline ::pg_query::Node* PartitionElem::mutable_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_expr(); // @@protoc_insertion_point(field_mutable:pg_query.PartitionElem.expr) return _msg; } inline void PartitionElem::set_allocated_expr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_collation().size(); } inline int PartitionElem::collation_size() const { return _internal_collation_size(); } inline void PartitionElem::clear_collation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.collation_.Clear(); } inline ::pg_query::Node* PartitionElem::mutable_collation(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.PartitionElem.collation) return _internal_mutable_collation()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PartitionElem::mutable_collation() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionElem.collation) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_collation(); } inline const ::pg_query::Node& PartitionElem::collation(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.collation) return _internal_collation().Get(index); } inline ::pg_query::Node* PartitionElem::add_collation() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_collation()->Add(); // @@protoc_insertion_point(field_add:pg_query.PartitionElem.collation) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PartitionElem::collation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.PartitionElem.collation) return _internal_collation(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PartitionElem::_internal_collation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.collation_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PartitionElem::_internal_mutable_collation() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.collation_; } // repeated .pg_query.Node opclass = 4 [json_name = "opclass"]; inline int PartitionElem::_internal_opclass_size() const { return _internal_opclass().size(); } inline int PartitionElem::opclass_size() const { return _internal_opclass_size(); } inline void PartitionElem::clear_opclass() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opclass_.Clear(); } inline ::pg_query::Node* PartitionElem::mutable_opclass(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.PartitionElem.opclass) return _internal_mutable_opclass()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PartitionElem::mutable_opclass() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionElem.opclass) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_opclass(); } inline const ::pg_query::Node& PartitionElem::opclass(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.opclass) return _internal_opclass().Get(index); } inline ::pg_query::Node* PartitionElem::add_opclass() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_opclass()->Add(); // @@protoc_insertion_point(field_add:pg_query.PartitionElem.opclass) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PartitionElem::opclass() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.PartitionElem.opclass) return _internal_opclass(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PartitionElem::_internal_opclass() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opclass_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PartitionElem::_internal_mutable_opclass() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.opclass_; } // int32 location = 5 [json_name = "location"]; inline void PartitionElem::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t PartitionElem::location() const { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.location) return _internal_location(); } inline void PartitionElem::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PartitionElem.location) } inline ::int32_t PartitionElem::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void PartitionElem::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // PartitionSpec // .pg_query.PartitionStrategy strategy = 1 [json_name = "strategy"]; inline void PartitionSpec::clear_strategy() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.strategy_ = 0; } inline ::pg_query::PartitionStrategy PartitionSpec::strategy() const { // @@protoc_insertion_point(field_get:pg_query.PartitionSpec.strategy) return _internal_strategy(); } inline void PartitionSpec::set_strategy(::pg_query::PartitionStrategy value) { _internal_set_strategy(value); // @@protoc_insertion_point(field_set:pg_query.PartitionSpec.strategy) } inline ::pg_query::PartitionStrategy PartitionSpec::_internal_strategy() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::PartitionStrategy>(_impl_.strategy_); } inline void PartitionSpec::_internal_set_strategy(::pg_query::PartitionStrategy value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.strategy_ = value; } // repeated .pg_query.Node part_params = 2 [json_name = "partParams"]; inline int PartitionSpec::_internal_part_params_size() const { return _internal_part_params().size(); } inline int PartitionSpec::part_params_size() const { return _internal_part_params_size(); } inline void PartitionSpec::clear_part_params() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.part_params_.Clear(); } inline ::pg_query::Node* PartitionSpec::mutable_part_params(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.PartitionSpec.part_params) return _internal_mutable_part_params()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PartitionSpec::mutable_part_params() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionSpec.part_params) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_part_params(); } inline const ::pg_query::Node& PartitionSpec::part_params(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PartitionSpec.part_params) return _internal_part_params().Get(index); } inline ::pg_query::Node* PartitionSpec::add_part_params() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_part_params()->Add(); // @@protoc_insertion_point(field_add:pg_query.PartitionSpec.part_params) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PartitionSpec::part_params() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.PartitionSpec.part_params) return _internal_part_params(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PartitionSpec::_internal_part_params() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.part_params_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PartitionSpec::_internal_mutable_part_params() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.part_params_; } // int32 location = 3 [json_name = "location"]; inline void PartitionSpec::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t PartitionSpec::location() const { // @@protoc_insertion_point(field_get:pg_query.PartitionSpec.location) return _internal_location(); } inline void PartitionSpec::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PartitionSpec.location) } inline ::int32_t PartitionSpec::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void PartitionSpec::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // PartitionBoundSpec // string strategy = 1 [json_name = "strategy"]; inline void PartitionBoundSpec::clear_strategy() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.strategy_.ClearToEmpty(); } inline const std::string& PartitionBoundSpec::strategy() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.strategy) return _internal_strategy(); } template inline PROTOBUF_ALWAYS_INLINE void PartitionBoundSpec::set_strategy(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.strategy_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.strategy) } inline std::string* PartitionBoundSpec::mutable_strategy() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_strategy(); // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.strategy) return _s; } inline const std::string& PartitionBoundSpec::_internal_strategy() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.strategy_.Get(); } inline void PartitionBoundSpec::_internal_set_strategy(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.strategy_.Set(value, GetArena()); } inline std::string* PartitionBoundSpec::_internal_mutable_strategy() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.strategy_.Mutable( GetArena()); } inline std::string* PartitionBoundSpec::release_strategy() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.PartitionBoundSpec.strategy) return _impl_.strategy_.Release(); } inline void PartitionBoundSpec::set_allocated_strategy(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.strategy_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.strategy_.IsDefault()) { _impl_.strategy_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionBoundSpec.strategy) } // bool is_default = 2 [json_name = "is_default"]; inline void PartitionBoundSpec::clear_is_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_default_ = false; } inline bool PartitionBoundSpec::is_default() const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.is_default) return _internal_is_default(); } inline void PartitionBoundSpec::set_is_default(bool value) { _internal_set_is_default(value); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.is_default) } inline bool PartitionBoundSpec::_internal_is_default() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_default_; } inline void PartitionBoundSpec::_internal_set_is_default(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_default_ = value; } // int32 modulus = 3 [json_name = "modulus"]; inline void PartitionBoundSpec::clear_modulus() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.modulus_ = 0; } inline ::int32_t PartitionBoundSpec::modulus() const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.modulus) return _internal_modulus(); } inline void PartitionBoundSpec::set_modulus(::int32_t value) { _internal_set_modulus(value); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.modulus) } inline ::int32_t PartitionBoundSpec::_internal_modulus() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.modulus_; } inline void PartitionBoundSpec::_internal_set_modulus(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.modulus_ = value; } // int32 remainder = 4 [json_name = "remainder"]; inline void PartitionBoundSpec::clear_remainder() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.remainder_ = 0; } inline ::int32_t PartitionBoundSpec::remainder() const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.remainder) return _internal_remainder(); } inline void PartitionBoundSpec::set_remainder(::int32_t value) { _internal_set_remainder(value); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.remainder) } inline ::int32_t PartitionBoundSpec::_internal_remainder() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.remainder_; } inline void PartitionBoundSpec::_internal_set_remainder(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.remainder_ = value; } // repeated .pg_query.Node listdatums = 5 [json_name = "listdatums"]; inline int PartitionBoundSpec::_internal_listdatums_size() const { return _internal_listdatums().size(); } inline int PartitionBoundSpec::listdatums_size() const { return _internal_listdatums_size(); } inline void PartitionBoundSpec::clear_listdatums() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.listdatums_.Clear(); } inline ::pg_query::Node* PartitionBoundSpec::mutable_listdatums(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.listdatums) return _internal_mutable_listdatums()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PartitionBoundSpec::mutable_listdatums() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionBoundSpec.listdatums) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_listdatums(); } inline const ::pg_query::Node& PartitionBoundSpec::listdatums(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.listdatums) return _internal_listdatums().Get(index); } inline ::pg_query::Node* PartitionBoundSpec::add_listdatums() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_listdatums()->Add(); // @@protoc_insertion_point(field_add:pg_query.PartitionBoundSpec.listdatums) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PartitionBoundSpec::listdatums() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.PartitionBoundSpec.listdatums) return _internal_listdatums(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PartitionBoundSpec::_internal_listdatums() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.listdatums_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PartitionBoundSpec::_internal_mutable_listdatums() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.listdatums_; } // repeated .pg_query.Node lowerdatums = 6 [json_name = "lowerdatums"]; inline int PartitionBoundSpec::_internal_lowerdatums_size() const { return _internal_lowerdatums().size(); } inline int PartitionBoundSpec::lowerdatums_size() const { return _internal_lowerdatums_size(); } inline void PartitionBoundSpec::clear_lowerdatums() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.lowerdatums_.Clear(); } inline ::pg_query::Node* PartitionBoundSpec::mutable_lowerdatums(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.lowerdatums) return _internal_mutable_lowerdatums()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PartitionBoundSpec::mutable_lowerdatums() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionBoundSpec.lowerdatums) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_lowerdatums(); } inline const ::pg_query::Node& PartitionBoundSpec::lowerdatums(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.lowerdatums) return _internal_lowerdatums().Get(index); } inline ::pg_query::Node* PartitionBoundSpec::add_lowerdatums() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_lowerdatums()->Add(); // @@protoc_insertion_point(field_add:pg_query.PartitionBoundSpec.lowerdatums) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PartitionBoundSpec::lowerdatums() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.PartitionBoundSpec.lowerdatums) return _internal_lowerdatums(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PartitionBoundSpec::_internal_lowerdatums() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.lowerdatums_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PartitionBoundSpec::_internal_mutable_lowerdatums() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.lowerdatums_; } // repeated .pg_query.Node upperdatums = 7 [json_name = "upperdatums"]; inline int PartitionBoundSpec::_internal_upperdatums_size() const { return _internal_upperdatums().size(); } inline int PartitionBoundSpec::upperdatums_size() const { return _internal_upperdatums_size(); } inline void PartitionBoundSpec::clear_upperdatums() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.upperdatums_.Clear(); } inline ::pg_query::Node* PartitionBoundSpec::mutable_upperdatums(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.upperdatums) return _internal_mutable_upperdatums()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PartitionBoundSpec::mutable_upperdatums() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionBoundSpec.upperdatums) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_upperdatums(); } inline const ::pg_query::Node& PartitionBoundSpec::upperdatums(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.upperdatums) return _internal_upperdatums().Get(index); } inline ::pg_query::Node* PartitionBoundSpec::add_upperdatums() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_upperdatums()->Add(); // @@protoc_insertion_point(field_add:pg_query.PartitionBoundSpec.upperdatums) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PartitionBoundSpec::upperdatums() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.PartitionBoundSpec.upperdatums) return _internal_upperdatums(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PartitionBoundSpec::_internal_upperdatums() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.upperdatums_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PartitionBoundSpec::_internal_mutable_upperdatums() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.upperdatums_; } // int32 location = 8 [json_name = "location"]; inline void PartitionBoundSpec::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t PartitionBoundSpec::location() const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.location) return _internal_location(); } inline void PartitionBoundSpec::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.location) } inline ::int32_t PartitionBoundSpec::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void PartitionBoundSpec::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // PartitionRangeDatum // .pg_query.PartitionRangeDatumKind kind = 1 [json_name = "kind"]; inline void PartitionRangeDatum::clear_kind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.kind_ = 0; } inline ::pg_query::PartitionRangeDatumKind PartitionRangeDatum::kind() const { // @@protoc_insertion_point(field_get:pg_query.PartitionRangeDatum.kind) return _internal_kind(); } inline void PartitionRangeDatum::set_kind(::pg_query::PartitionRangeDatumKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.PartitionRangeDatum.kind) } inline ::pg_query::PartitionRangeDatumKind PartitionRangeDatum::_internal_kind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::PartitionRangeDatumKind>(_impl_.kind_); } inline void PartitionRangeDatum::_internal_set_kind(::pg_query::PartitionRangeDatumKind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.kind_ = value; } // .pg_query.Node value = 2 [json_name = "value"]; inline bool PartitionRangeDatum::has_value() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.value_ != nullptr); return value; } inline void PartitionRangeDatum::clear_value() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.value_ != nullptr) _impl_.value_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& PartitionRangeDatum::_internal_value() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.value_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& PartitionRangeDatum::value() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PartitionRangeDatum.value) return _internal_value(); } inline void PartitionRangeDatum::unsafe_arena_set_allocated_value(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.value_); } _impl_.value_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionRangeDatum.value) } inline ::pg_query::Node* PartitionRangeDatum::release_value() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.value_; _impl_.value_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* PartitionRangeDatum::unsafe_arena_release_value() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.PartitionRangeDatum.value) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.value_; _impl_.value_ = nullptr; return temp; } inline ::pg_query::Node* PartitionRangeDatum::_internal_mutable_value() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.value_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.value_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.value_; } inline ::pg_query::Node* PartitionRangeDatum::mutable_value() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_value(); // @@protoc_insertion_point(field_mutable:pg_query.PartitionRangeDatum.value) return _msg; } inline void PartitionRangeDatum::set_allocated_value(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.value_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.value_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionRangeDatum.value) } // int32 location = 3 [json_name = "location"]; inline void PartitionRangeDatum::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t PartitionRangeDatum::location() const { // @@protoc_insertion_point(field_get:pg_query.PartitionRangeDatum.location) return _internal_location(); } inline void PartitionRangeDatum::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PartitionRangeDatum.location) } inline ::int32_t PartitionRangeDatum::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void PartitionRangeDatum::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // SinglePartitionSpec // ------------------------------------------------------------------- // PartitionCmd // .pg_query.RangeVar name = 1 [json_name = "name"]; inline bool PartitionCmd::has_name() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.name_ != nullptr); return value; } inline void PartitionCmd::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.name_ != nullptr) _impl_.name_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& PartitionCmd::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.name_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& PartitionCmd::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PartitionCmd.name) return _internal_name(); } inline void PartitionCmd::unsafe_arena_set_allocated_name(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.name_); } _impl_.name_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionCmd.name) } inline ::pg_query::RangeVar* PartitionCmd::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.name_; _impl_.name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* PartitionCmd::unsafe_arena_release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.PartitionCmd.name) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.name_; _impl_.name_ = nullptr; return temp; } inline ::pg_query::RangeVar* PartitionCmd::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.name_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.name_; } inline ::pg_query::RangeVar* PartitionCmd::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.PartitionCmd.name) return _msg; } inline void PartitionCmd::set_allocated_name(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.name_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.name_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionCmd.name) } // .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; inline bool PartitionCmd::has_bound() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.bound_ != nullptr); return value; } inline void PartitionCmd::clear_bound() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.bound_ != nullptr) _impl_.bound_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::PartitionBoundSpec& PartitionCmd::_internal_bound() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::PartitionBoundSpec* p = _impl_.bound_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_PartitionBoundSpec_default_instance_); } inline const ::pg_query::PartitionBoundSpec& PartitionCmd::bound() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PartitionCmd.bound) return _internal_bound(); } inline void PartitionCmd::unsafe_arena_set_allocated_bound(::pg_query::PartitionBoundSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bound_); } _impl_.bound_ = reinterpret_cast<::pg_query::PartitionBoundSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionCmd.bound) } inline ::pg_query::PartitionBoundSpec* PartitionCmd::release_bound() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::PartitionBoundSpec* released = _impl_.bound_; _impl_.bound_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::PartitionBoundSpec* PartitionCmd::unsafe_arena_release_bound() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.PartitionCmd.bound) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::PartitionBoundSpec* temp = _impl_.bound_; _impl_.bound_ = nullptr; return temp; } inline ::pg_query::PartitionBoundSpec* PartitionCmd::_internal_mutable_bound() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.bound_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::PartitionBoundSpec>(GetArena()); _impl_.bound_ = reinterpret_cast<::pg_query::PartitionBoundSpec*>(p); } return _impl_.bound_; } inline ::pg_query::PartitionBoundSpec* PartitionCmd::mutable_bound() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::PartitionBoundSpec* _msg = _internal_mutable_bound(); // @@protoc_insertion_point(field_mutable:pg_query.PartitionCmd.bound) return _msg; } inline void PartitionCmd::set_allocated_bound(::pg_query::PartitionBoundSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::PartitionBoundSpec*>(_impl_.bound_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::PartitionBoundSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.bound_ = reinterpret_cast<::pg_query::PartitionBoundSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionCmd.bound) } // bool concurrent = 3 [json_name = "concurrent"]; inline void PartitionCmd::clear_concurrent() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.concurrent_ = false; } inline bool PartitionCmd::concurrent() const { // @@protoc_insertion_point(field_get:pg_query.PartitionCmd.concurrent) return _internal_concurrent(); } inline void PartitionCmd::set_concurrent(bool value) { _internal_set_concurrent(value); // @@protoc_insertion_point(field_set:pg_query.PartitionCmd.concurrent) } inline bool PartitionCmd::_internal_concurrent() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.concurrent_; } inline void PartitionCmd::_internal_set_concurrent(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.concurrent_ = value; } // ------------------------------------------------------------------- // RangeTblEntry // .pg_query.Alias alias = 1 [json_name = "alias"]; inline bool RangeTblEntry::has_alias() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.alias_ != nullptr); return value; } inline void RangeTblEntry::clear_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.alias_ != nullptr) _impl_.alias_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Alias& RangeTblEntry::_internal_alias() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Alias* p = _impl_.alias_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& RangeTblEntry::alias() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.alias) return _internal_alias(); } inline void RangeTblEntry::unsafe_arena_set_allocated_alias(::pg_query::Alias* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.alias_); } _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.alias) } inline ::pg_query::Alias* RangeTblEntry::release_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Alias* released = _impl_.alias_; _impl_.alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Alias* RangeTblEntry::unsafe_arena_release_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.alias) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeTblEntry::_internal_mutable_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(p); } return _impl_.alias_; } inline ::pg_query::Alias* RangeTblEntry::mutable_alias() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Alias* _msg = _internal_mutable_alias(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.alias) return _msg; } inline void RangeTblEntry::set_allocated_alias(::pg_query::Alias* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Alias*>(_impl_.alias_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Alias*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.alias) } // .pg_query.Alias eref = 2 [json_name = "eref"]; inline bool RangeTblEntry::has_eref() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.eref_ != nullptr); return value; } inline void RangeTblEntry::clear_eref() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.eref_ != nullptr) _impl_.eref_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Alias& RangeTblEntry::_internal_eref() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Alias* p = _impl_.eref_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& RangeTblEntry::eref() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.eref) return _internal_eref(); } inline void RangeTblEntry::unsafe_arena_set_allocated_eref(::pg_query::Alias* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.eref_); } _impl_.eref_ = reinterpret_cast<::pg_query::Alias*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.eref) } inline ::pg_query::Alias* RangeTblEntry::release_eref() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Alias* released = _impl_.eref_; _impl_.eref_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Alias* RangeTblEntry::unsafe_arena_release_eref() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.eref) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Alias* temp = _impl_.eref_; _impl_.eref_ = nullptr; return temp; } inline ::pg_query::Alias* RangeTblEntry::_internal_mutable_eref() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.eref_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); _impl_.eref_ = reinterpret_cast<::pg_query::Alias*>(p); } return _impl_.eref_; } inline ::pg_query::Alias* RangeTblEntry::mutable_eref() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Alias* _msg = _internal_mutable_eref(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.eref) return _msg; } inline void RangeTblEntry::set_allocated_eref(::pg_query::Alias* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Alias*>(_impl_.eref_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Alias*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.eref_ = reinterpret_cast<::pg_query::Alias*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.eref) } // .pg_query.RTEKind rtekind = 3 [json_name = "rtekind"]; inline void RangeTblEntry::clear_rtekind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rtekind_ = 0; } inline ::pg_query::RTEKind RangeTblEntry::rtekind() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.rtekind) return _internal_rtekind(); } inline void RangeTblEntry::set_rtekind(::pg_query::RTEKind value) { _internal_set_rtekind(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.rtekind) } inline ::pg_query::RTEKind RangeTblEntry::_internal_rtekind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::RTEKind>(_impl_.rtekind_); } inline void RangeTblEntry::_internal_set_rtekind(::pg_query::RTEKind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.rtekind_ = value; } // uint32 relid = 4 [json_name = "relid"]; inline void RangeTblEntry::clear_relid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relid_ = 0u; } inline ::uint32_t RangeTblEntry::relid() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.relid) return _internal_relid(); } inline void RangeTblEntry::set_relid(::uint32_t value) { _internal_set_relid(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.relid) } inline ::uint32_t RangeTblEntry::_internal_relid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.relid_; } inline void RangeTblEntry::_internal_set_relid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.relid_ = value; } // bool inh = 5 [json_name = "inh"]; inline void RangeTblEntry::clear_inh() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inh_ = false; } inline bool RangeTblEntry::inh() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.inh) return _internal_inh(); } inline void RangeTblEntry::set_inh(bool value) { _internal_set_inh(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.inh) } inline bool RangeTblEntry::_internal_inh() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inh_; } inline void RangeTblEntry::_internal_set_inh(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inh_ = value; } // string relkind = 6 [json_name = "relkind"]; inline void RangeTblEntry::clear_relkind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relkind_.ClearToEmpty(); } inline const std::string& RangeTblEntry::relkind() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.relkind) return _internal_relkind(); } template inline PROTOBUF_ALWAYS_INLINE void RangeTblEntry::set_relkind(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.relkind_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.relkind) } inline std::string* RangeTblEntry::mutable_relkind() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_relkind(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.relkind) return _s; } inline const std::string& RangeTblEntry::_internal_relkind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.relkind_.Get(); } inline void RangeTblEntry::_internal_set_relkind(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.relkind_.Set(value, GetArena()); } inline std::string* RangeTblEntry::_internal_mutable_relkind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.relkind_.Mutable( GetArena()); } inline std::string* RangeTblEntry::release_relkind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.relkind) return _impl_.relkind_.Release(); } inline void RangeTblEntry::set_allocated_relkind(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relkind_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.relkind_.IsDefault()) { _impl_.relkind_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.relkind) } // int32 rellockmode = 7 [json_name = "rellockmode"]; inline void RangeTblEntry::clear_rellockmode() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rellockmode_ = 0; } inline ::int32_t RangeTblEntry::rellockmode() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.rellockmode) return _internal_rellockmode(); } inline void RangeTblEntry::set_rellockmode(::int32_t value) { _internal_set_rellockmode(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.rellockmode) } inline ::int32_t RangeTblEntry::_internal_rellockmode() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.rellockmode_; } inline void RangeTblEntry::_internal_set_rellockmode(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.rellockmode_ = value; } // uint32 perminfoindex = 8 [json_name = "perminfoindex"]; inline void RangeTblEntry::clear_perminfoindex() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.perminfoindex_ = 0u; } inline ::uint32_t RangeTblEntry::perminfoindex() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.perminfoindex) return _internal_perminfoindex(); } inline void RangeTblEntry::set_perminfoindex(::uint32_t value) { _internal_set_perminfoindex(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.perminfoindex) } inline ::uint32_t RangeTblEntry::_internal_perminfoindex() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.perminfoindex_; } inline void RangeTblEntry::_internal_set_perminfoindex(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.perminfoindex_ = value; } // .pg_query.TableSampleClause tablesample = 9 [json_name = "tablesample"]; inline bool RangeTblEntry::has_tablesample() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.tablesample_ != nullptr); return value; } inline void RangeTblEntry::clear_tablesample() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.tablesample_ != nullptr) _impl_.tablesample_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::TableSampleClause& RangeTblEntry::_internal_tablesample() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TableSampleClause* p = _impl_.tablesample_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TableSampleClause_default_instance_); } inline const ::pg_query::TableSampleClause& RangeTblEntry::tablesample() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.tablesample) return _internal_tablesample(); } inline void RangeTblEntry::unsafe_arena_set_allocated_tablesample(::pg_query::TableSampleClause* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.tablesample_); } _impl_.tablesample_ = reinterpret_cast<::pg_query::TableSampleClause*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.tablesample) } inline ::pg_query::TableSampleClause* RangeTblEntry::release_tablesample() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::TableSampleClause* released = _impl_.tablesample_; _impl_.tablesample_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TableSampleClause* RangeTblEntry::unsafe_arena_release_tablesample() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.tablesample) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::TableSampleClause* temp = _impl_.tablesample_; _impl_.tablesample_ = nullptr; return temp; } inline ::pg_query::TableSampleClause* RangeTblEntry::_internal_mutable_tablesample() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.tablesample_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TableSampleClause>(GetArena()); _impl_.tablesample_ = reinterpret_cast<::pg_query::TableSampleClause*>(p); } return _impl_.tablesample_; } inline ::pg_query::TableSampleClause* RangeTblEntry::mutable_tablesample() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TableSampleClause* _msg = _internal_mutable_tablesample(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.tablesample) return _msg; } inline void RangeTblEntry::set_allocated_tablesample(::pg_query::TableSampleClause* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TableSampleClause*>(_impl_.tablesample_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TableSampleClause*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.tablesample_ = reinterpret_cast<::pg_query::TableSampleClause*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.tablesample) } // .pg_query.Query subquery = 10 [json_name = "subquery"]; inline bool RangeTblEntry::has_subquery() const { bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0; PROTOBUF_ASSUME(!value || _impl_.subquery_ != nullptr); return value; } inline void RangeTblEntry::clear_subquery() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.subquery_ != nullptr) _impl_.subquery_->Clear(); _impl_._has_bits_[0] &= ~0x00000008u; } inline const ::pg_query::Query& RangeTblEntry::_internal_subquery() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Query* p = _impl_.subquery_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Query_default_instance_); } inline const ::pg_query::Query& RangeTblEntry::subquery() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.subquery) return _internal_subquery(); } inline void RangeTblEntry::unsafe_arena_set_allocated_subquery(::pg_query::Query* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.subquery_); } _impl_.subquery_ = reinterpret_cast<::pg_query::Query*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.subquery) } inline ::pg_query::Query* RangeTblEntry::release_subquery() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::Query* released = _impl_.subquery_; _impl_.subquery_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Query* RangeTblEntry::unsafe_arena_release_subquery() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.subquery) _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::Query* temp = _impl_.subquery_; _impl_.subquery_ = nullptr; return temp; } inline ::pg_query::Query* RangeTblEntry::_internal_mutable_subquery() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000008u; if (_impl_.subquery_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Query>(GetArena()); _impl_.subquery_ = reinterpret_cast<::pg_query::Query*>(p); } return _impl_.subquery_; } inline ::pg_query::Query* RangeTblEntry::mutable_subquery() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Query* _msg = _internal_mutable_subquery(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.subquery) return _msg; } inline void RangeTblEntry::set_allocated_subquery(::pg_query::Query* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Query*>(_impl_.subquery_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Query*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } _impl_.subquery_ = reinterpret_cast<::pg_query::Query*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.subquery) } // bool security_barrier = 11 [json_name = "security_barrier"]; inline void RangeTblEntry::clear_security_barrier() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.security_barrier_ = false; } inline bool RangeTblEntry::security_barrier() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.security_barrier) return _internal_security_barrier(); } inline void RangeTblEntry::set_security_barrier(bool value) { _internal_set_security_barrier(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.security_barrier) } inline bool RangeTblEntry::_internal_security_barrier() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.security_barrier_; } inline void RangeTblEntry::_internal_set_security_barrier(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.security_barrier_ = value; } // .pg_query.JoinType jointype = 12 [json_name = "jointype"]; inline void RangeTblEntry::clear_jointype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.jointype_ = 0; } inline ::pg_query::JoinType RangeTblEntry::jointype() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.jointype) return _internal_jointype(); } inline void RangeTblEntry::set_jointype(::pg_query::JoinType value) { _internal_set_jointype(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.jointype) } inline ::pg_query::JoinType RangeTblEntry::_internal_jointype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JoinType>(_impl_.jointype_); } inline void RangeTblEntry::_internal_set_jointype(::pg_query::JoinType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.jointype_ = value; } // int32 joinmergedcols = 13 [json_name = "joinmergedcols"]; inline void RangeTblEntry::clear_joinmergedcols() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.joinmergedcols_ = 0; } inline ::int32_t RangeTblEntry::joinmergedcols() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinmergedcols) return _internal_joinmergedcols(); } inline void RangeTblEntry::set_joinmergedcols(::int32_t value) { _internal_set_joinmergedcols(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.joinmergedcols) } inline ::int32_t RangeTblEntry::_internal_joinmergedcols() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.joinmergedcols_; } inline void RangeTblEntry::_internal_set_joinmergedcols(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.joinmergedcols_ = value; } // repeated .pg_query.Node joinaliasvars = 14 [json_name = "joinaliasvars"]; inline int RangeTblEntry::_internal_joinaliasvars_size() const { return _internal_joinaliasvars().size(); } inline int RangeTblEntry::joinaliasvars_size() const { return _internal_joinaliasvars_size(); } inline void RangeTblEntry::clear_joinaliasvars() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.joinaliasvars_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_joinaliasvars(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.joinaliasvars) return _internal_mutable_joinaliasvars()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::mutable_joinaliasvars() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.joinaliasvars) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_joinaliasvars(); } inline const ::pg_query::Node& RangeTblEntry::joinaliasvars(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinaliasvars) return _internal_joinaliasvars().Get(index); } inline ::pg_query::Node* RangeTblEntry::add_joinaliasvars() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_joinaliasvars()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.joinaliasvars) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::joinaliasvars() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.joinaliasvars) return _internal_joinaliasvars(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::_internal_joinaliasvars() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.joinaliasvars_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::_internal_mutable_joinaliasvars() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.joinaliasvars_; } // repeated .pg_query.Node joinleftcols = 15 [json_name = "joinleftcols"]; inline int RangeTblEntry::_internal_joinleftcols_size() const { return _internal_joinleftcols().size(); } inline int RangeTblEntry::joinleftcols_size() const { return _internal_joinleftcols_size(); } inline void RangeTblEntry::clear_joinleftcols() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.joinleftcols_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_joinleftcols(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.joinleftcols) return _internal_mutable_joinleftcols()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::mutable_joinleftcols() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.joinleftcols) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_joinleftcols(); } inline const ::pg_query::Node& RangeTblEntry::joinleftcols(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinleftcols) return _internal_joinleftcols().Get(index); } inline ::pg_query::Node* RangeTblEntry::add_joinleftcols() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_joinleftcols()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.joinleftcols) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::joinleftcols() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.joinleftcols) return _internal_joinleftcols(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::_internal_joinleftcols() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.joinleftcols_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::_internal_mutable_joinleftcols() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.joinleftcols_; } // repeated .pg_query.Node joinrightcols = 16 [json_name = "joinrightcols"]; inline int RangeTblEntry::_internal_joinrightcols_size() const { return _internal_joinrightcols().size(); } inline int RangeTblEntry::joinrightcols_size() const { return _internal_joinrightcols_size(); } inline void RangeTblEntry::clear_joinrightcols() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.joinrightcols_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_joinrightcols(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.joinrightcols) return _internal_mutable_joinrightcols()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::mutable_joinrightcols() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.joinrightcols) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_joinrightcols(); } inline const ::pg_query::Node& RangeTblEntry::joinrightcols(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinrightcols) return _internal_joinrightcols().Get(index); } inline ::pg_query::Node* RangeTblEntry::add_joinrightcols() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_joinrightcols()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.joinrightcols) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::joinrightcols() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.joinrightcols) return _internal_joinrightcols(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::_internal_joinrightcols() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.joinrightcols_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::_internal_mutable_joinrightcols() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.joinrightcols_; } // .pg_query.Alias join_using_alias = 17 [json_name = "join_using_alias"]; inline bool RangeTblEntry::has_join_using_alias() const { bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0; PROTOBUF_ASSUME(!value || _impl_.join_using_alias_ != nullptr); return value; } inline void RangeTblEntry::clear_join_using_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.join_using_alias_ != nullptr) _impl_.join_using_alias_->Clear(); _impl_._has_bits_[0] &= ~0x00000010u; } inline const ::pg_query::Alias& RangeTblEntry::_internal_join_using_alias() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Alias* p = _impl_.join_using_alias_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& RangeTblEntry::join_using_alias() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.join_using_alias) return _internal_join_using_alias(); } inline void RangeTblEntry::unsafe_arena_set_allocated_join_using_alias(::pg_query::Alias* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.join_using_alias_); } _impl_.join_using_alias_ = reinterpret_cast<::pg_query::Alias*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.join_using_alias) } inline ::pg_query::Alias* RangeTblEntry::release_join_using_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::Alias* released = _impl_.join_using_alias_; _impl_.join_using_alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Alias* RangeTblEntry::unsafe_arena_release_join_using_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.join_using_alias) _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::Alias* temp = _impl_.join_using_alias_; _impl_.join_using_alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeTblEntry::_internal_mutable_join_using_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000010u; if (_impl_.join_using_alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); _impl_.join_using_alias_ = reinterpret_cast<::pg_query::Alias*>(p); } return _impl_.join_using_alias_; } inline ::pg_query::Alias* RangeTblEntry::mutable_join_using_alias() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Alias* _msg = _internal_mutable_join_using_alias(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.join_using_alias) return _msg; } inline void RangeTblEntry::set_allocated_join_using_alias(::pg_query::Alias* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Alias*>(_impl_.join_using_alias_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Alias*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } _impl_.join_using_alias_ = reinterpret_cast<::pg_query::Alias*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.join_using_alias) } // repeated .pg_query.Node functions = 18 [json_name = "functions"]; inline int RangeTblEntry::_internal_functions_size() const { return _internal_functions().size(); } inline int RangeTblEntry::functions_size() const { return _internal_functions_size(); } inline void RangeTblEntry::clear_functions() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.functions_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_functions(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.functions) return _internal_mutable_functions()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::mutable_functions() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.functions) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_functions(); } inline const ::pg_query::Node& RangeTblEntry::functions(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.functions) return _internal_functions().Get(index); } inline ::pg_query::Node* RangeTblEntry::add_functions() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_functions()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.functions) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::functions() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.functions) return _internal_functions(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::_internal_functions() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.functions_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::_internal_mutable_functions() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.functions_; } // bool funcordinality = 19 [json_name = "funcordinality"]; inline void RangeTblEntry::clear_funcordinality() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funcordinality_ = false; } inline bool RangeTblEntry::funcordinality() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.funcordinality) return _internal_funcordinality(); } inline void RangeTblEntry::set_funcordinality(bool value) { _internal_set_funcordinality(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.funcordinality) } inline bool RangeTblEntry::_internal_funcordinality() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funcordinality_; } inline void RangeTblEntry::_internal_set_funcordinality(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.funcordinality_ = value; } // .pg_query.TableFunc tablefunc = 20 [json_name = "tablefunc"]; inline bool RangeTblEntry::has_tablefunc() const { bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0; PROTOBUF_ASSUME(!value || _impl_.tablefunc_ != nullptr); return value; } inline void RangeTblEntry::clear_tablefunc() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.tablefunc_ != nullptr) _impl_.tablefunc_->Clear(); _impl_._has_bits_[0] &= ~0x00000020u; } inline const ::pg_query::TableFunc& RangeTblEntry::_internal_tablefunc() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TableFunc* p = _impl_.tablefunc_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TableFunc_default_instance_); } inline const ::pg_query::TableFunc& RangeTblEntry::tablefunc() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.tablefunc) return _internal_tablefunc(); } inline void RangeTblEntry::unsafe_arena_set_allocated_tablefunc(::pg_query::TableFunc* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.tablefunc_); } _impl_.tablefunc_ = reinterpret_cast<::pg_query::TableFunc*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000020u; } else { _impl_._has_bits_[0] &= ~0x00000020u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.tablefunc) } inline ::pg_query::TableFunc* RangeTblEntry::release_tablefunc() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000020u; ::pg_query::TableFunc* released = _impl_.tablefunc_; _impl_.tablefunc_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TableFunc* RangeTblEntry::unsafe_arena_release_tablefunc() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.tablefunc) _impl_._has_bits_[0] &= ~0x00000020u; ::pg_query::TableFunc* temp = _impl_.tablefunc_; _impl_.tablefunc_ = nullptr; return temp; } inline ::pg_query::TableFunc* RangeTblEntry::_internal_mutable_tablefunc() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000020u; if (_impl_.tablefunc_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TableFunc>(GetArena()); _impl_.tablefunc_ = reinterpret_cast<::pg_query::TableFunc*>(p); } return _impl_.tablefunc_; } inline ::pg_query::TableFunc* RangeTblEntry::mutable_tablefunc() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TableFunc* _msg = _internal_mutable_tablefunc(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.tablefunc) return _msg; } inline void RangeTblEntry::set_allocated_tablefunc(::pg_query::TableFunc* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TableFunc*>(_impl_.tablefunc_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TableFunc*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000020u; } else { _impl_._has_bits_[0] &= ~0x00000020u; } _impl_.tablefunc_ = reinterpret_cast<::pg_query::TableFunc*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.tablefunc) } // repeated .pg_query.Node values_lists = 21 [json_name = "values_lists"]; inline int RangeTblEntry::_internal_values_lists_size() const { return _internal_values_lists().size(); } inline int RangeTblEntry::values_lists_size() const { return _internal_values_lists_size(); } inline void RangeTblEntry::clear_values_lists() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.values_lists_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_values_lists(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.values_lists) return _internal_mutable_values_lists()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::mutable_values_lists() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.values_lists) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_values_lists(); } inline const ::pg_query::Node& RangeTblEntry::values_lists(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.values_lists) return _internal_values_lists().Get(index); } inline ::pg_query::Node* RangeTblEntry::add_values_lists() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_values_lists()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.values_lists) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::values_lists() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.values_lists) return _internal_values_lists(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::_internal_values_lists() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.values_lists_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::_internal_mutable_values_lists() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.values_lists_; } // string ctename = 22 [json_name = "ctename"]; inline void RangeTblEntry::clear_ctename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ctename_.ClearToEmpty(); } inline const std::string& RangeTblEntry::ctename() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.ctename) return _internal_ctename(); } template inline PROTOBUF_ALWAYS_INLINE void RangeTblEntry::set_ctename(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.ctename_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.ctename) } inline std::string* RangeTblEntry::mutable_ctename() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_ctename(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.ctename) return _s; } inline const std::string& RangeTblEntry::_internal_ctename() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ctename_.Get(); } inline void RangeTblEntry::_internal_set_ctename(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.ctename_.Set(value, GetArena()); } inline std::string* RangeTblEntry::_internal_mutable_ctename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.ctename_.Mutable( GetArena()); } inline std::string* RangeTblEntry::release_ctename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.ctename) return _impl_.ctename_.Release(); } inline void RangeTblEntry::set_allocated_ctename(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ctename_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.ctename_.IsDefault()) { _impl_.ctename_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.ctename) } // uint32 ctelevelsup = 23 [json_name = "ctelevelsup"]; inline void RangeTblEntry::clear_ctelevelsup() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ctelevelsup_ = 0u; } inline ::uint32_t RangeTblEntry::ctelevelsup() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.ctelevelsup) return _internal_ctelevelsup(); } inline void RangeTblEntry::set_ctelevelsup(::uint32_t value) { _internal_set_ctelevelsup(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.ctelevelsup) } inline ::uint32_t RangeTblEntry::_internal_ctelevelsup() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ctelevelsup_; } inline void RangeTblEntry::_internal_set_ctelevelsup(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.ctelevelsup_ = value; } // bool self_reference = 24 [json_name = "self_reference"]; inline void RangeTblEntry::clear_self_reference() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.self_reference_ = false; } inline bool RangeTblEntry::self_reference() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.self_reference) return _internal_self_reference(); } inline void RangeTblEntry::set_self_reference(bool value) { _internal_set_self_reference(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.self_reference) } inline bool RangeTblEntry::_internal_self_reference() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.self_reference_; } inline void RangeTblEntry::_internal_set_self_reference(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.self_reference_ = value; } // repeated .pg_query.Node coltypes = 25 [json_name = "coltypes"]; inline int RangeTblEntry::_internal_coltypes_size() const { return _internal_coltypes().size(); } inline int RangeTblEntry::coltypes_size() const { return _internal_coltypes_size(); } inline void RangeTblEntry::clear_coltypes() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coltypes_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_coltypes(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.coltypes) return _internal_mutable_coltypes()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::mutable_coltypes() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.coltypes) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_coltypes(); } inline const ::pg_query::Node& RangeTblEntry::coltypes(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.coltypes) return _internal_coltypes().Get(index); } inline ::pg_query::Node* RangeTblEntry::add_coltypes() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_coltypes()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.coltypes) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::coltypes() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.coltypes) return _internal_coltypes(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::_internal_coltypes() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.coltypes_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::_internal_mutable_coltypes() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.coltypes_; } // repeated .pg_query.Node coltypmods = 26 [json_name = "coltypmods"]; inline int RangeTblEntry::_internal_coltypmods_size() const { return _internal_coltypmods().size(); } inline int RangeTblEntry::coltypmods_size() const { return _internal_coltypmods_size(); } inline void RangeTblEntry::clear_coltypmods() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coltypmods_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_coltypmods(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.coltypmods) return _internal_mutable_coltypmods()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::mutable_coltypmods() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.coltypmods) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_coltypmods(); } inline const ::pg_query::Node& RangeTblEntry::coltypmods(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.coltypmods) return _internal_coltypmods().Get(index); } inline ::pg_query::Node* RangeTblEntry::add_coltypmods() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_coltypmods()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.coltypmods) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::coltypmods() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.coltypmods) return _internal_coltypmods(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::_internal_coltypmods() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.coltypmods_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::_internal_mutable_coltypmods() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.coltypmods_; } // repeated .pg_query.Node colcollations = 27 [json_name = "colcollations"]; inline int RangeTblEntry::_internal_colcollations_size() const { return _internal_colcollations().size(); } inline int RangeTblEntry::colcollations_size() const { return _internal_colcollations_size(); } inline void RangeTblEntry::clear_colcollations() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.colcollations_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_colcollations(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.colcollations) return _internal_mutable_colcollations()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::mutable_colcollations() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.colcollations) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_colcollations(); } inline const ::pg_query::Node& RangeTblEntry::colcollations(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.colcollations) return _internal_colcollations().Get(index); } inline ::pg_query::Node* RangeTblEntry::add_colcollations() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_colcollations()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.colcollations) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::colcollations() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.colcollations) return _internal_colcollations(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::_internal_colcollations() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.colcollations_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::_internal_mutable_colcollations() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.colcollations_; } // string enrname = 28 [json_name = "enrname"]; inline void RangeTblEntry::clear_enrname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.enrname_.ClearToEmpty(); } inline const std::string& RangeTblEntry::enrname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.enrname) return _internal_enrname(); } template inline PROTOBUF_ALWAYS_INLINE void RangeTblEntry::set_enrname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.enrname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.enrname) } inline std::string* RangeTblEntry::mutable_enrname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_enrname(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.enrname) return _s; } inline const std::string& RangeTblEntry::_internal_enrname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.enrname_.Get(); } inline void RangeTblEntry::_internal_set_enrname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.enrname_.Set(value, GetArena()); } inline std::string* RangeTblEntry::_internal_mutable_enrname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.enrname_.Mutable( GetArena()); } inline std::string* RangeTblEntry::release_enrname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.enrname) return _impl_.enrname_.Release(); } inline void RangeTblEntry::set_allocated_enrname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.enrname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.enrname_.IsDefault()) { _impl_.enrname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.enrname) } // double enrtuples = 29 [json_name = "enrtuples"]; inline void RangeTblEntry::clear_enrtuples() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.enrtuples_ = 0; } inline double RangeTblEntry::enrtuples() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.enrtuples) return _internal_enrtuples(); } inline void RangeTblEntry::set_enrtuples(double value) { _internal_set_enrtuples(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.enrtuples) } inline double RangeTblEntry::_internal_enrtuples() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.enrtuples_; } inline void RangeTblEntry::_internal_set_enrtuples(double value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.enrtuples_ = value; } // bool lateral = 30 [json_name = "lateral"]; inline void RangeTblEntry::clear_lateral() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.lateral_ = false; } inline bool RangeTblEntry::lateral() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.lateral) return _internal_lateral(); } inline void RangeTblEntry::set_lateral(bool value) { _internal_set_lateral(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.lateral) } inline bool RangeTblEntry::_internal_lateral() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.lateral_; } inline void RangeTblEntry::_internal_set_lateral(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.lateral_ = value; } // bool in_from_cl = 31 [json_name = "inFromCl"]; inline void RangeTblEntry::clear_in_from_cl() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.in_from_cl_ = false; } 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::set_in_from_cl(bool value) { _internal_set_in_from_cl(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.in_from_cl) } inline bool RangeTblEntry::_internal_in_from_cl() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.in_from_cl_; } inline void RangeTblEntry::_internal_set_in_from_cl(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.in_from_cl_ = value; } // repeated .pg_query.Node security_quals = 32 [json_name = "securityQuals"]; inline int RangeTblEntry::_internal_security_quals_size() const { return _internal_security_quals().size(); } inline int RangeTblEntry::security_quals_size() const { return _internal_security_quals_size(); } inline void RangeTblEntry::clear_security_quals() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.security_quals_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_security_quals(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.security_quals) return _internal_mutable_security_quals()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::mutable_security_quals() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.security_quals) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_security_quals(); } inline const ::pg_query::Node& RangeTblEntry::security_quals(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.security_quals) return _internal_security_quals().Get(index); } inline ::pg_query::Node* RangeTblEntry::add_security_quals() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_security_quals()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.security_quals) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::security_quals() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.security_quals) return _internal_security_quals(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblEntry::_internal_security_quals() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.security_quals_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblEntry::_internal_mutable_security_quals() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.security_quals_; } // ------------------------------------------------------------------- // RTEPermissionInfo // uint32 relid = 1 [json_name = "relid"]; inline void RTEPermissionInfo::clear_relid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relid_ = 0u; } inline ::uint32_t RTEPermissionInfo::relid() const { // @@protoc_insertion_point(field_get:pg_query.RTEPermissionInfo.relid) return _internal_relid(); } inline void RTEPermissionInfo::set_relid(::uint32_t value) { _internal_set_relid(value); // @@protoc_insertion_point(field_set:pg_query.RTEPermissionInfo.relid) } inline ::uint32_t RTEPermissionInfo::_internal_relid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.relid_; } inline void RTEPermissionInfo::_internal_set_relid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.relid_ = value; } // bool inh = 2 [json_name = "inh"]; inline void RTEPermissionInfo::clear_inh() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inh_ = false; } inline bool RTEPermissionInfo::inh() const { // @@protoc_insertion_point(field_get:pg_query.RTEPermissionInfo.inh) return _internal_inh(); } inline void RTEPermissionInfo::set_inh(bool value) { _internal_set_inh(value); // @@protoc_insertion_point(field_set:pg_query.RTEPermissionInfo.inh) } inline bool RTEPermissionInfo::_internal_inh() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inh_; } inline void RTEPermissionInfo::_internal_set_inh(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inh_ = value; } // uint64 required_perms = 3 [json_name = "requiredPerms"]; inline void RTEPermissionInfo::clear_required_perms() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.required_perms_ = ::uint64_t{0u}; } inline ::uint64_t RTEPermissionInfo::required_perms() const { // @@protoc_insertion_point(field_get:pg_query.RTEPermissionInfo.required_perms) return _internal_required_perms(); } inline void RTEPermissionInfo::set_required_perms(::uint64_t value) { _internal_set_required_perms(value); // @@protoc_insertion_point(field_set:pg_query.RTEPermissionInfo.required_perms) } inline ::uint64_t RTEPermissionInfo::_internal_required_perms() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.required_perms_; } inline void RTEPermissionInfo::_internal_set_required_perms(::uint64_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.required_perms_ = value; } // uint32 check_as_user = 4 [json_name = "checkAsUser"]; inline void RTEPermissionInfo::clear_check_as_user() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.check_as_user_ = 0u; } inline ::uint32_t RTEPermissionInfo::check_as_user() const { // @@protoc_insertion_point(field_get:pg_query.RTEPermissionInfo.check_as_user) return _internal_check_as_user(); } inline void RTEPermissionInfo::set_check_as_user(::uint32_t value) { _internal_set_check_as_user(value); // @@protoc_insertion_point(field_set:pg_query.RTEPermissionInfo.check_as_user) } inline ::uint32_t RTEPermissionInfo::_internal_check_as_user() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.check_as_user_; } inline void RTEPermissionInfo::_internal_set_check_as_user(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.check_as_user_ = value; } // repeated uint64 selected_cols = 5 [json_name = "selectedCols"]; inline int RTEPermissionInfo::_internal_selected_cols_size() const { return _internal_selected_cols().size(); } inline int RTEPermissionInfo::selected_cols_size() const { return _internal_selected_cols_size(); } inline void RTEPermissionInfo::clear_selected_cols() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.selected_cols_.Clear(); } inline ::uint64_t RTEPermissionInfo::selected_cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.RTEPermissionInfo.selected_cols) return _internal_selected_cols().Get(index); } inline void RTEPermissionInfo::set_selected_cols(int index, ::uint64_t value) { _internal_mutable_selected_cols()->Set(index, value); // @@protoc_insertion_point(field_set:pg_query.RTEPermissionInfo.selected_cols) } inline void RTEPermissionInfo::add_selected_cols(::uint64_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _internal_mutable_selected_cols()->Add(value); // @@protoc_insertion_point(field_add:pg_query.RTEPermissionInfo.selected_cols) } inline const ::google::protobuf::RepeatedField<::uint64_t>& RTEPermissionInfo::selected_cols() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RTEPermissionInfo.selected_cols) return _internal_selected_cols(); } inline ::google::protobuf::RepeatedField<::uint64_t>* RTEPermissionInfo::mutable_selected_cols() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RTEPermissionInfo.selected_cols) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_selected_cols(); } inline const ::google::protobuf::RepeatedField<::uint64_t>& RTEPermissionInfo::_internal_selected_cols() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.selected_cols_; } inline ::google::protobuf::RepeatedField<::uint64_t>* RTEPermissionInfo::_internal_mutable_selected_cols() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.selected_cols_; } // repeated uint64 inserted_cols = 6 [json_name = "insertedCols"]; inline int RTEPermissionInfo::_internal_inserted_cols_size() const { return _internal_inserted_cols().size(); } inline int RTEPermissionInfo::inserted_cols_size() const { return _internal_inserted_cols_size(); } inline void RTEPermissionInfo::clear_inserted_cols() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inserted_cols_.Clear(); } inline ::uint64_t RTEPermissionInfo::inserted_cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.RTEPermissionInfo.inserted_cols) return _internal_inserted_cols().Get(index); } inline void RTEPermissionInfo::set_inserted_cols(int index, ::uint64_t value) { _internal_mutable_inserted_cols()->Set(index, value); // @@protoc_insertion_point(field_set:pg_query.RTEPermissionInfo.inserted_cols) } inline void RTEPermissionInfo::add_inserted_cols(::uint64_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _internal_mutable_inserted_cols()->Add(value); // @@protoc_insertion_point(field_add:pg_query.RTEPermissionInfo.inserted_cols) } inline const ::google::protobuf::RepeatedField<::uint64_t>& RTEPermissionInfo::inserted_cols() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RTEPermissionInfo.inserted_cols) return _internal_inserted_cols(); } inline ::google::protobuf::RepeatedField<::uint64_t>* RTEPermissionInfo::mutable_inserted_cols() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RTEPermissionInfo.inserted_cols) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_inserted_cols(); } inline const ::google::protobuf::RepeatedField<::uint64_t>& RTEPermissionInfo::_internal_inserted_cols() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inserted_cols_; } inline ::google::protobuf::RepeatedField<::uint64_t>* RTEPermissionInfo::_internal_mutable_inserted_cols() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.inserted_cols_; } // repeated uint64 updated_cols = 7 [json_name = "updatedCols"]; inline int RTEPermissionInfo::_internal_updated_cols_size() const { return _internal_updated_cols().size(); } inline int RTEPermissionInfo::updated_cols_size() const { return _internal_updated_cols_size(); } inline void RTEPermissionInfo::clear_updated_cols() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.updated_cols_.Clear(); } inline ::uint64_t RTEPermissionInfo::updated_cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.RTEPermissionInfo.updated_cols) return _internal_updated_cols().Get(index); } inline void RTEPermissionInfo::set_updated_cols(int index, ::uint64_t value) { _internal_mutable_updated_cols()->Set(index, value); // @@protoc_insertion_point(field_set:pg_query.RTEPermissionInfo.updated_cols) } inline void RTEPermissionInfo::add_updated_cols(::uint64_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _internal_mutable_updated_cols()->Add(value); // @@protoc_insertion_point(field_add:pg_query.RTEPermissionInfo.updated_cols) } inline const ::google::protobuf::RepeatedField<::uint64_t>& RTEPermissionInfo::updated_cols() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RTEPermissionInfo.updated_cols) return _internal_updated_cols(); } inline ::google::protobuf::RepeatedField<::uint64_t>* RTEPermissionInfo::mutable_updated_cols() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RTEPermissionInfo.updated_cols) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_updated_cols(); } inline const ::google::protobuf::RepeatedField<::uint64_t>& RTEPermissionInfo::_internal_updated_cols() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.updated_cols_; } inline ::google::protobuf::RepeatedField<::uint64_t>* RTEPermissionInfo::_internal_mutable_updated_cols() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.updated_cols_; } // ------------------------------------------------------------------- // RangeTblFunction // .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; inline bool RangeTblFunction::has_funcexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.funcexpr_ != nullptr); return value; } inline void RangeTblFunction::clear_funcexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.funcexpr_ != nullptr) _impl_.funcexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& RangeTblFunction::_internal_funcexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.funcexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeTblFunction::funcexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funcexpr) return _internal_funcexpr(); } inline void RangeTblFunction::unsafe_arena_set_allocated_funcexpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.funcexpr_); } _impl_.funcexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblFunction.funcexpr) } inline ::pg_query::Node* RangeTblFunction::release_funcexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.funcexpr_; _impl_.funcexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RangeTblFunction::unsafe_arena_release_funcexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RangeTblFunction.funcexpr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.funcexpr_; _impl_.funcexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTblFunction::_internal_mutable_funcexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.funcexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.funcexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.funcexpr_; } inline ::pg_query::Node* RangeTblFunction::mutable_funcexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_funcexpr(); // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funcexpr) return _msg; } inline void RangeTblFunction::set_allocated_funcexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.funcexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.funcexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblFunction.funcexpr) } // int32 funccolcount = 2 [json_name = "funccolcount"]; inline void RangeTblFunction::clear_funccolcount() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funccolcount_ = 0; } inline ::int32_t RangeTblFunction::funccolcount() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccolcount) return _internal_funccolcount(); } inline void RangeTblFunction::set_funccolcount(::int32_t value) { _internal_set_funccolcount(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblFunction.funccolcount) } inline ::int32_t RangeTblFunction::_internal_funccolcount() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funccolcount_; } inline void RangeTblFunction::_internal_set_funccolcount(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.funccolcount_ = value; } // repeated .pg_query.Node funccolnames = 3 [json_name = "funccolnames"]; inline int RangeTblFunction::_internal_funccolnames_size() const { return _internal_funccolnames().size(); } inline int RangeTblFunction::funccolnames_size() const { return _internal_funccolnames_size(); } inline void RangeTblFunction::clear_funccolnames() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funccolnames_.Clear(); } inline ::pg_query::Node* RangeTblFunction::mutable_funccolnames(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccolnames) return _internal_mutable_funccolnames()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblFunction::mutable_funccolnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccolnames) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_funccolnames(); } inline const ::pg_query::Node& RangeTblFunction::funccolnames(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccolnames) return _internal_funccolnames().Get(index); } inline ::pg_query::Node* RangeTblFunction::add_funccolnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_funccolnames()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccolnames) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblFunction::funccolnames() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccolnames) return _internal_funccolnames(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblFunction::_internal_funccolnames() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funccolnames_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblFunction::_internal_mutable_funccolnames() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.funccolnames_; } // repeated .pg_query.Node funccoltypes = 4 [json_name = "funccoltypes"]; inline int RangeTblFunction::_internal_funccoltypes_size() const { return _internal_funccoltypes().size(); } inline int RangeTblFunction::funccoltypes_size() const { return _internal_funccoltypes_size(); } inline void RangeTblFunction::clear_funccoltypes() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funccoltypes_.Clear(); } inline ::pg_query::Node* RangeTblFunction::mutable_funccoltypes(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccoltypes) return _internal_mutable_funccoltypes()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblFunction::mutable_funccoltypes() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccoltypes) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_funccoltypes(); } inline const ::pg_query::Node& RangeTblFunction::funccoltypes(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccoltypes) return _internal_funccoltypes().Get(index); } inline ::pg_query::Node* RangeTblFunction::add_funccoltypes() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_funccoltypes()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccoltypes) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblFunction::funccoltypes() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccoltypes) return _internal_funccoltypes(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblFunction::_internal_funccoltypes() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funccoltypes_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblFunction::_internal_mutable_funccoltypes() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.funccoltypes_; } // repeated .pg_query.Node funccoltypmods = 5 [json_name = "funccoltypmods"]; inline int RangeTblFunction::_internal_funccoltypmods_size() const { return _internal_funccoltypmods().size(); } inline int RangeTblFunction::funccoltypmods_size() const { return _internal_funccoltypmods_size(); } inline void RangeTblFunction::clear_funccoltypmods() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funccoltypmods_.Clear(); } inline ::pg_query::Node* RangeTblFunction::mutable_funccoltypmods(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccoltypmods) return _internal_mutable_funccoltypmods()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblFunction::mutable_funccoltypmods() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccoltypmods) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_funccoltypmods(); } inline const ::pg_query::Node& RangeTblFunction::funccoltypmods(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccoltypmods) return _internal_funccoltypmods().Get(index); } inline ::pg_query::Node* RangeTblFunction::add_funccoltypmods() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_funccoltypmods()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccoltypmods) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblFunction::funccoltypmods() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccoltypmods) return _internal_funccoltypmods(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblFunction::_internal_funccoltypmods() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funccoltypmods_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblFunction::_internal_mutable_funccoltypmods() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.funccoltypmods_; } // repeated .pg_query.Node funccolcollations = 6 [json_name = "funccolcollations"]; inline int RangeTblFunction::_internal_funccolcollations_size() const { return _internal_funccolcollations().size(); } inline int RangeTblFunction::funccolcollations_size() const { return _internal_funccolcollations_size(); } inline void RangeTblFunction::clear_funccolcollations() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funccolcollations_.Clear(); } inline ::pg_query::Node* RangeTblFunction::mutable_funccolcollations(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccolcollations) return _internal_mutable_funccolcollations()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblFunction::mutable_funccolcollations() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccolcollations) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_funccolcollations(); } inline const ::pg_query::Node& RangeTblFunction::funccolcollations(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccolcollations) return _internal_funccolcollations().Get(index); } inline ::pg_query::Node* RangeTblFunction::add_funccolcollations() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_funccolcollations()->Add(); // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccolcollations) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblFunction::funccolcollations() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccolcollations) return _internal_funccolcollations(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RangeTblFunction::_internal_funccolcollations() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funccolcollations_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RangeTblFunction::_internal_mutable_funccolcollations() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.funccolcollations_; } // repeated uint64 funcparams = 7 [json_name = "funcparams"]; inline int RangeTblFunction::_internal_funcparams_size() const { return _internal_funcparams().size(); } inline int RangeTblFunction::funcparams_size() const { return _internal_funcparams_size(); } inline void RangeTblFunction::clear_funcparams() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funcparams_.Clear(); } inline ::uint64_t RangeTblFunction::funcparams(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funcparams) return _internal_funcparams().Get(index); } inline void RangeTblFunction::set_funcparams(int index, ::uint64_t value) { _internal_mutable_funcparams()->Set(index, value); // @@protoc_insertion_point(field_set:pg_query.RangeTblFunction.funcparams) } inline void RangeTblFunction::add_funcparams(::uint64_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _internal_mutable_funcparams()->Add(value); // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funcparams) } inline const ::google::protobuf::RepeatedField<::uint64_t>& RangeTblFunction::funcparams() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funcparams) return _internal_funcparams(); } inline ::google::protobuf::RepeatedField<::uint64_t>* RangeTblFunction::mutable_funcparams() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funcparams) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_funcparams(); } inline const ::google::protobuf::RepeatedField<::uint64_t>& RangeTblFunction::_internal_funcparams() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funcparams_; } inline ::google::protobuf::RepeatedField<::uint64_t>* RangeTblFunction::_internal_mutable_funcparams() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.funcparams_; } // ------------------------------------------------------------------- // TableSampleClause // uint32 tsmhandler = 1 [json_name = "tsmhandler"]; inline void TableSampleClause::clear_tsmhandler() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.tsmhandler_ = 0u; } inline ::uint32_t TableSampleClause::tsmhandler() const { // @@protoc_insertion_point(field_get:pg_query.TableSampleClause.tsmhandler) return _internal_tsmhandler(); } inline void TableSampleClause::set_tsmhandler(::uint32_t value) { _internal_set_tsmhandler(value); // @@protoc_insertion_point(field_set:pg_query.TableSampleClause.tsmhandler) } inline ::uint32_t TableSampleClause::_internal_tsmhandler() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.tsmhandler_; } inline void TableSampleClause::_internal_set_tsmhandler(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.tsmhandler_ = value; } // repeated .pg_query.Node args = 2 [json_name = "args"]; inline int TableSampleClause::_internal_args_size() const { return _internal_args().size(); } inline int TableSampleClause::args_size() const { return _internal_args_size(); } inline void TableSampleClause::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* TableSampleClause::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TableSampleClause.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableSampleClause::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TableSampleClause.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& TableSampleClause::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableSampleClause.args) return _internal_args().Get(index); } inline ::pg_query::Node* TableSampleClause::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.TableSampleClause.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableSampleClause::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TableSampleClause.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TableSampleClause::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TableSampleClause::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // .pg_query.Node repeatable = 3 [json_name = "repeatable"]; inline bool TableSampleClause::has_repeatable() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.repeatable_ != nullptr); return value; } inline void TableSampleClause::clear_repeatable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.repeatable_ != nullptr) _impl_.repeatable_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& TableSampleClause::_internal_repeatable() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.repeatable_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& TableSampleClause::repeatable() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TableSampleClause.repeatable) return _internal_repeatable(); } inline void TableSampleClause::unsafe_arena_set_allocated_repeatable(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.repeatable_); } _impl_.repeatable_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableSampleClause.repeatable) } inline ::pg_query::Node* TableSampleClause::release_repeatable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.repeatable_; _impl_.repeatable_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* TableSampleClause::unsafe_arena_release_repeatable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.TableSampleClause.repeatable) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.repeatable_; _impl_.repeatable_ = nullptr; return temp; } inline ::pg_query::Node* TableSampleClause::_internal_mutable_repeatable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.repeatable_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.repeatable_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.repeatable_; } inline ::pg_query::Node* TableSampleClause::mutable_repeatable() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_repeatable(); // @@protoc_insertion_point(field_mutable:pg_query.TableSampleClause.repeatable) return _msg; } inline void TableSampleClause::set_allocated_repeatable(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.repeatable_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.repeatable_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.TableSampleClause.repeatable) } // ------------------------------------------------------------------- // WithCheckOption // .pg_query.WCOKind kind = 1 [json_name = "kind"]; inline void WithCheckOption::clear_kind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.kind_ = 0; } inline ::pg_query::WCOKind WithCheckOption::kind() const { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.kind) return _internal_kind(); } inline void WithCheckOption::set_kind(::pg_query::WCOKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.kind) } inline ::pg_query::WCOKind WithCheckOption::_internal_kind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::WCOKind>(_impl_.kind_); } inline void WithCheckOption::_internal_set_kind(::pg_query::WCOKind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.kind_ = value; } // string relname = 2 [json_name = "relname"]; inline void WithCheckOption::clear_relname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relname_.ClearToEmpty(); } inline const std::string& WithCheckOption::relname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.relname) return _internal_relname(); } template inline PROTOBUF_ALWAYS_INLINE void WithCheckOption::set_relname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.relname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.relname) } inline std::string* WithCheckOption::mutable_relname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_relname(); // @@protoc_insertion_point(field_mutable:pg_query.WithCheckOption.relname) return _s; } inline const std::string& WithCheckOption::_internal_relname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.relname_.Get(); } inline void WithCheckOption::_internal_set_relname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.relname_.Set(value, GetArena()); } inline std::string* WithCheckOption::_internal_mutable_relname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.relname_.Mutable( GetArena()); } inline std::string* WithCheckOption::release_relname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WithCheckOption.relname) return _impl_.relname_.Release(); } inline void WithCheckOption::set_allocated_relname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.relname_.IsDefault()) { _impl_.relname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.WithCheckOption.relname) } // string polname = 3 [json_name = "polname"]; inline void WithCheckOption::clear_polname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.polname_.ClearToEmpty(); } inline const std::string& WithCheckOption::polname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.polname) return _internal_polname(); } template inline PROTOBUF_ALWAYS_INLINE void WithCheckOption::set_polname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.polname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.polname) } inline std::string* WithCheckOption::mutable_polname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_polname(); // @@protoc_insertion_point(field_mutable:pg_query.WithCheckOption.polname) return _s; } inline const std::string& WithCheckOption::_internal_polname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.polname_.Get(); } inline void WithCheckOption::_internal_set_polname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.polname_.Set(value, GetArena()); } inline std::string* WithCheckOption::_internal_mutable_polname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.polname_.Mutable( GetArena()); } inline std::string* WithCheckOption::release_polname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WithCheckOption.polname) return _impl_.polname_.Release(); } inline void WithCheckOption::set_allocated_polname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.polname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.polname_.IsDefault()) { _impl_.polname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.WithCheckOption.polname) } // .pg_query.Node qual = 4 [json_name = "qual"]; inline bool WithCheckOption::has_qual() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.qual_ != nullptr); return value; } inline void WithCheckOption::clear_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.qual_ != nullptr) _impl_.qual_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& WithCheckOption::_internal_qual() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.qual_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WithCheckOption::qual() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.qual) return _internal_qual(); } inline void WithCheckOption::unsafe_arena_set_allocated_qual(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.qual_); } _impl_.qual_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WithCheckOption.qual) } inline ::pg_query::Node* WithCheckOption::release_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.qual_; _impl_.qual_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* WithCheckOption::unsafe_arena_release_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WithCheckOption.qual) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.qual_; _impl_.qual_ = nullptr; return temp; } inline ::pg_query::Node* WithCheckOption::_internal_mutable_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.qual_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.qual_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.qual_; } inline ::pg_query::Node* WithCheckOption::mutable_qual() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_qual(); // @@protoc_insertion_point(field_mutable:pg_query.WithCheckOption.qual) return _msg; } inline void WithCheckOption::set_allocated_qual(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.qual_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.qual_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.WithCheckOption.qual) } // bool cascaded = 5 [json_name = "cascaded"]; inline void WithCheckOption::clear_cascaded() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cascaded_ = false; } inline bool WithCheckOption::cascaded() const { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.cascaded) return _internal_cascaded(); } inline void WithCheckOption::set_cascaded(bool value) { _internal_set_cascaded(value); // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.cascaded) } inline bool WithCheckOption::_internal_cascaded() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cascaded_; } inline void WithCheckOption::_internal_set_cascaded(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cascaded_ = value; } // ------------------------------------------------------------------- // SortGroupClause // uint32 tle_sort_group_ref = 1 [json_name = "tleSortGroupRef"]; inline void SortGroupClause::clear_tle_sort_group_ref() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.tle_sort_group_ref_ = 0u; } inline ::uint32_t 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::set_tle_sort_group_ref(::uint32_t value) { _internal_set_tle_sort_group_ref(value); // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.tle_sort_group_ref) } inline ::uint32_t SortGroupClause::_internal_tle_sort_group_ref() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.tle_sort_group_ref_; } inline void SortGroupClause::_internal_set_tle_sort_group_ref(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.tle_sort_group_ref_ = value; } // uint32 eqop = 2 [json_name = "eqop"]; inline void SortGroupClause::clear_eqop() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.eqop_ = 0u; } inline ::uint32_t SortGroupClause::eqop() const { // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.eqop) return _internal_eqop(); } inline void SortGroupClause::set_eqop(::uint32_t value) { _internal_set_eqop(value); // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.eqop) } inline ::uint32_t SortGroupClause::_internal_eqop() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.eqop_; } inline void SortGroupClause::_internal_set_eqop(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.eqop_ = value; } // uint32 sortop = 3 [json_name = "sortop"]; inline void SortGroupClause::clear_sortop() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.sortop_ = 0u; } inline ::uint32_t SortGroupClause::sortop() const { // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.sortop) return _internal_sortop(); } inline void SortGroupClause::set_sortop(::uint32_t value) { _internal_set_sortop(value); // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.sortop) } inline ::uint32_t SortGroupClause::_internal_sortop() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.sortop_; } inline void SortGroupClause::_internal_set_sortop(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.sortop_ = value; } // bool nulls_first = 4 [json_name = "nulls_first"]; inline void SortGroupClause::clear_nulls_first() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.nulls_first_ = false; } inline bool SortGroupClause::nulls_first() const { // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.nulls_first) return _internal_nulls_first(); } inline void SortGroupClause::set_nulls_first(bool value) { _internal_set_nulls_first(value); // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.nulls_first) } inline bool SortGroupClause::_internal_nulls_first() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.nulls_first_; } inline void SortGroupClause::_internal_set_nulls_first(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.nulls_first_ = value; } // bool hashable = 5 [json_name = "hashable"]; inline void SortGroupClause::clear_hashable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.hashable_ = false; } inline bool SortGroupClause::hashable() const { // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.hashable) return _internal_hashable(); } inline void SortGroupClause::set_hashable(bool value) { _internal_set_hashable(value); // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.hashable) } inline bool SortGroupClause::_internal_hashable() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.hashable_; } inline void SortGroupClause::_internal_set_hashable(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.hashable_ = value; } // ------------------------------------------------------------------- // GroupingSet // .pg_query.GroupingSetKind kind = 1 [json_name = "kind"]; inline void GroupingSet::clear_kind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.kind_ = 0; } inline ::pg_query::GroupingSetKind GroupingSet::kind() const { // @@protoc_insertion_point(field_get:pg_query.GroupingSet.kind) return _internal_kind(); } inline void GroupingSet::set_kind(::pg_query::GroupingSetKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.GroupingSet.kind) } inline ::pg_query::GroupingSetKind GroupingSet::_internal_kind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::GroupingSetKind>(_impl_.kind_); } inline void GroupingSet::_internal_set_kind(::pg_query::GroupingSetKind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.kind_ = value; } // repeated .pg_query.Node content = 2 [json_name = "content"]; inline int GroupingSet::_internal_content_size() const { return _internal_content().size(); } inline int GroupingSet::content_size() const { return _internal_content_size(); } inline void GroupingSet::clear_content() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.content_.Clear(); } inline ::pg_query::Node* GroupingSet::mutable_content(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.GroupingSet.content) return _internal_mutable_content()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GroupingSet::mutable_content() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingSet.content) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_content(); } inline const ::pg_query::Node& GroupingSet::content(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.GroupingSet.content) return _internal_content().Get(index); } inline ::pg_query::Node* GroupingSet::add_content() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_content()->Add(); // @@protoc_insertion_point(field_add:pg_query.GroupingSet.content) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GroupingSet::content() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.GroupingSet.content) return _internal_content(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GroupingSet::_internal_content() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.content_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GroupingSet::_internal_mutable_content() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.content_; } // int32 location = 3 [json_name = "location"]; inline void GroupingSet::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t GroupingSet::location() const { // @@protoc_insertion_point(field_get:pg_query.GroupingSet.location) return _internal_location(); } inline void GroupingSet::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.GroupingSet.location) } inline ::int32_t GroupingSet::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void GroupingSet::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // WindowClause // string name = 1 [json_name = "name"]; inline void WindowClause::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& WindowClause::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WindowClause.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void WindowClause::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.WindowClause.name) } inline std::string* WindowClause::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.name) return _s; } inline const std::string& WindowClause::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void WindowClause::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* WindowClause::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* WindowClause::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WindowClause.name) return _impl_.name_.Release(); } inline void WindowClause::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.WindowClause.name) } // string refname = 2 [json_name = "refname"]; inline void WindowClause::clear_refname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.refname_.ClearToEmpty(); } inline const std::string& WindowClause::refname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WindowClause.refname) return _internal_refname(); } template inline PROTOBUF_ALWAYS_INLINE void WindowClause::set_refname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.refname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.WindowClause.refname) } inline std::string* WindowClause::mutable_refname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_refname(); // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.refname) return _s; } inline const std::string& WindowClause::_internal_refname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.refname_.Get(); } inline void WindowClause::_internal_set_refname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.refname_.Set(value, GetArena()); } inline std::string* WindowClause::_internal_mutable_refname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.refname_.Mutable( GetArena()); } inline std::string* WindowClause::release_refname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WindowClause.refname) return _impl_.refname_.Release(); } inline void WindowClause::set_allocated_refname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.refname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.refname_.IsDefault()) { _impl_.refname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_partition_clause().size(); } inline int WindowClause::partition_clause_size() const { return _internal_partition_clause_size(); } inline void WindowClause::clear_partition_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.partition_clause_.Clear(); } inline ::pg_query::Node* WindowClause::mutable_partition_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.partition_clause) return _internal_mutable_partition_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* WindowClause::mutable_partition_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowClause.partition_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_partition_clause(); } inline const ::pg_query::Node& WindowClause::partition_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WindowClause.partition_clause) return _internal_partition_clause().Get(index); } inline ::pg_query::Node* WindowClause::add_partition_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_partition_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.WindowClause.partition_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& WindowClause::partition_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.WindowClause.partition_clause) return _internal_partition_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& WindowClause::_internal_partition_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.partition_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* WindowClause::_internal_mutable_partition_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.partition_clause_; } // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; inline int WindowClause::_internal_order_clause_size() const { return _internal_order_clause().size(); } inline int WindowClause::order_clause_size() const { return _internal_order_clause_size(); } inline void WindowClause::clear_order_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.order_clause_.Clear(); } inline ::pg_query::Node* WindowClause::mutable_order_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.order_clause) return _internal_mutable_order_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* WindowClause::mutable_order_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowClause.order_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_order_clause(); } inline const ::pg_query::Node& WindowClause::order_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WindowClause.order_clause) return _internal_order_clause().Get(index); } inline ::pg_query::Node* WindowClause::add_order_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_order_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.WindowClause.order_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& WindowClause::order_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.WindowClause.order_clause) return _internal_order_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& WindowClause::_internal_order_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.order_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* WindowClause::_internal_mutable_order_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.order_clause_; } // int32 frame_options = 5 [json_name = "frameOptions"]; inline void WindowClause::clear_frame_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.frame_options_ = 0; } inline ::int32_t WindowClause::frame_options() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.frame_options) return _internal_frame_options(); } inline void WindowClause::set_frame_options(::int32_t value) { _internal_set_frame_options(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.frame_options) } inline ::int32_t WindowClause::_internal_frame_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.frame_options_; } inline void WindowClause::_internal_set_frame_options(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.frame_options_ = value; } // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; inline bool WindowClause::has_start_offset() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.start_offset_ != nullptr); return value; } inline void WindowClause::clear_start_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.start_offset_ != nullptr) _impl_.start_offset_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& WindowClause::_internal_start_offset() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.start_offset_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WindowClause::start_offset() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.start_offset_); } _impl_.start_offset_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowClause.start_offset) } inline ::pg_query::Node* WindowClause::release_start_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.start_offset_; _impl_.start_offset_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* WindowClause::unsafe_arena_release_start_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WindowClause.start_offset) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.start_offset_; _impl_.start_offset_ = nullptr; return temp; } inline ::pg_query::Node* WindowClause::_internal_mutable_start_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.start_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.start_offset_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.start_offset_; } inline ::pg_query::Node* WindowClause::mutable_start_offset() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_start_offset(); // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.start_offset) return _msg; } inline void WindowClause::set_allocated_start_offset(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.start_offset_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.start_offset_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.WindowClause.start_offset) } // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; inline bool WindowClause::has_end_offset() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.end_offset_ != nullptr); return value; } inline void WindowClause::clear_end_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.end_offset_ != nullptr) _impl_.end_offset_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& WindowClause::_internal_end_offset() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.end_offset_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WindowClause::end_offset() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.end_offset_); } _impl_.end_offset_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowClause.end_offset) } inline ::pg_query::Node* WindowClause::release_end_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.end_offset_; _impl_.end_offset_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* WindowClause::unsafe_arena_release_end_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.WindowClause.end_offset) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.end_offset_; _impl_.end_offset_ = nullptr; return temp; } inline ::pg_query::Node* WindowClause::_internal_mutable_end_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.end_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.end_offset_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.end_offset_; } inline ::pg_query::Node* WindowClause::mutable_end_offset() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_end_offset(); // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.end_offset) return _msg; } inline void WindowClause::set_allocated_end_offset(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.end_offset_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.end_offset_ = reinterpret_cast<::pg_query::Node*>(value); // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.start_in_range_func_ = 0u; } inline ::uint32_t 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::set_start_in_range_func(::uint32_t value) { _internal_set_start_in_range_func(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.start_in_range_func) } inline ::uint32_t WindowClause::_internal_start_in_range_func() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.start_in_range_func_; } inline void WindowClause::_internal_set_start_in_range_func(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.start_in_range_func_ = value; } // uint32 end_in_range_func = 9 [json_name = "endInRangeFunc"]; inline void WindowClause::clear_end_in_range_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.end_in_range_func_ = 0u; } inline ::uint32_t 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::set_end_in_range_func(::uint32_t value) { _internal_set_end_in_range_func(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.end_in_range_func) } inline ::uint32_t WindowClause::_internal_end_in_range_func() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.end_in_range_func_; } inline void WindowClause::_internal_set_end_in_range_func(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.end_in_range_func_ = value; } // uint32 in_range_coll = 10 [json_name = "inRangeColl"]; inline void WindowClause::clear_in_range_coll() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.in_range_coll_ = 0u; } inline ::uint32_t WindowClause::in_range_coll() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.in_range_coll) return _internal_in_range_coll(); } inline void WindowClause::set_in_range_coll(::uint32_t value) { _internal_set_in_range_coll(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.in_range_coll) } inline ::uint32_t WindowClause::_internal_in_range_coll() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.in_range_coll_; } inline void WindowClause::_internal_set_in_range_coll(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.in_range_coll_ = value; } // bool in_range_asc = 11 [json_name = "inRangeAsc"]; inline void WindowClause::clear_in_range_asc() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.in_range_asc_ = false; } 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::set_in_range_asc(bool value) { _internal_set_in_range_asc(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.in_range_asc) } inline bool WindowClause::_internal_in_range_asc() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.in_range_asc_; } inline void WindowClause::_internal_set_in_range_asc(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.in_range_asc_ = value; } // bool in_range_nulls_first = 12 [json_name = "inRangeNullsFirst"]; inline void WindowClause::clear_in_range_nulls_first() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.in_range_nulls_first_ = false; } 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::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) } inline bool WindowClause::_internal_in_range_nulls_first() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.in_range_nulls_first_; } inline void WindowClause::_internal_set_in_range_nulls_first(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.in_range_nulls_first_ = value; } // uint32 winref = 13 [json_name = "winref"]; inline void WindowClause::clear_winref() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.winref_ = 0u; } inline ::uint32_t WindowClause::winref() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.winref) return _internal_winref(); } inline void WindowClause::set_winref(::uint32_t value) { _internal_set_winref(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.winref) } inline ::uint32_t WindowClause::_internal_winref() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.winref_; } inline void WindowClause::_internal_set_winref(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.winref_ = value; } // bool copied_order = 14 [json_name = "copiedOrder"]; inline void WindowClause::clear_copied_order() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.copied_order_ = false; } inline bool WindowClause::copied_order() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.copied_order) return _internal_copied_order(); } inline void WindowClause::set_copied_order(bool value) { _internal_set_copied_order(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.copied_order) } inline bool WindowClause::_internal_copied_order() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.copied_order_; } inline void WindowClause::_internal_set_copied_order(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.copied_order_ = value; } // ------------------------------------------------------------------- // RowMarkClause // uint32 rti = 1 [json_name = "rti"]; inline void RowMarkClause::clear_rti() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rti_ = 0u; } inline ::uint32_t RowMarkClause::rti() const { // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.rti) return _internal_rti(); } inline void RowMarkClause::set_rti(::uint32_t value) { _internal_set_rti(value); // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.rti) } inline ::uint32_t RowMarkClause::_internal_rti() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.rti_; } inline void RowMarkClause::_internal_set_rti(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.rti_ = value; } // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; inline void RowMarkClause::clear_strength() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.strength_ = 0; } inline ::pg_query::LockClauseStrength RowMarkClause::strength() const { // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.strength) return _internal_strength(); } inline void RowMarkClause::set_strength(::pg_query::LockClauseStrength value) { _internal_set_strength(value); // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.strength) } inline ::pg_query::LockClauseStrength RowMarkClause::_internal_strength() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::LockClauseStrength>(_impl_.strength_); } inline void RowMarkClause::_internal_set_strength(::pg_query::LockClauseStrength value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.strength_ = value; } // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; inline void RowMarkClause::clear_wait_policy() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.wait_policy_ = 0; } 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::set_wait_policy(::pg_query::LockWaitPolicy value) { _internal_set_wait_policy(value); // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.wait_policy) } inline ::pg_query::LockWaitPolicy RowMarkClause::_internal_wait_policy() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::LockWaitPolicy>(_impl_.wait_policy_); } inline void RowMarkClause::_internal_set_wait_policy(::pg_query::LockWaitPolicy value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.wait_policy_ = value; } // bool pushed_down = 4 [json_name = "pushedDown"]; inline void RowMarkClause::clear_pushed_down() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.pushed_down_ = false; } inline bool RowMarkClause::pushed_down() const { // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.pushed_down) return _internal_pushed_down(); } inline void RowMarkClause::set_pushed_down(bool value) { _internal_set_pushed_down(value); // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.pushed_down) } inline bool RowMarkClause::_internal_pushed_down() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.pushed_down_; } inline void RowMarkClause::_internal_set_pushed_down(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.pushed_down_ = value; } // ------------------------------------------------------------------- // WithClause // repeated .pg_query.Node ctes = 1 [json_name = "ctes"]; inline int WithClause::_internal_ctes_size() const { return _internal_ctes().size(); } inline int WithClause::ctes_size() const { return _internal_ctes_size(); } inline void WithClause::clear_ctes() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ctes_.Clear(); } inline ::pg_query::Node* WithClause::mutable_ctes(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.WithClause.ctes) return _internal_mutable_ctes()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* WithClause::mutable_ctes() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.WithClause.ctes) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_ctes(); } inline const ::pg_query::Node& WithClause::ctes(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.WithClause.ctes) return _internal_ctes().Get(index); } inline ::pg_query::Node* WithClause::add_ctes() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_ctes()->Add(); // @@protoc_insertion_point(field_add:pg_query.WithClause.ctes) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& WithClause::ctes() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.WithClause.ctes) return _internal_ctes(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& WithClause::_internal_ctes() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ctes_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* WithClause::_internal_mutable_ctes() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.ctes_; } // bool recursive = 2 [json_name = "recursive"]; inline void WithClause::clear_recursive() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.recursive_ = false; } inline bool WithClause::recursive() const { // @@protoc_insertion_point(field_get:pg_query.WithClause.recursive) return _internal_recursive(); } inline void WithClause::set_recursive(bool value) { _internal_set_recursive(value); // @@protoc_insertion_point(field_set:pg_query.WithClause.recursive) } inline bool WithClause::_internal_recursive() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.recursive_; } inline void WithClause::_internal_set_recursive(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.recursive_ = value; } // int32 location = 3 [json_name = "location"]; inline void WithClause::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t WithClause::location() const { // @@protoc_insertion_point(field_get:pg_query.WithClause.location) return _internal_location(); } inline void WithClause::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.WithClause.location) } inline ::int32_t WithClause::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void WithClause::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // InferClause // repeated .pg_query.Node index_elems = 1 [json_name = "indexElems"]; inline int InferClause::_internal_index_elems_size() const { return _internal_index_elems().size(); } inline int InferClause::index_elems_size() const { return _internal_index_elems_size(); } inline void InferClause::clear_index_elems() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.index_elems_.Clear(); } inline ::pg_query::Node* InferClause::mutable_index_elems(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.InferClause.index_elems) return _internal_mutable_index_elems()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* InferClause::mutable_index_elems() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.InferClause.index_elems) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_index_elems(); } inline const ::pg_query::Node& InferClause::index_elems(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.InferClause.index_elems) return _internal_index_elems().Get(index); } inline ::pg_query::Node* InferClause::add_index_elems() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_index_elems()->Add(); // @@protoc_insertion_point(field_add:pg_query.InferClause.index_elems) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& InferClause::index_elems() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.InferClause.index_elems) return _internal_index_elems(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& InferClause::_internal_index_elems() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.index_elems_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* InferClause::_internal_mutable_index_elems() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.index_elems_; } // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; inline bool InferClause::has_where_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.where_clause_ != nullptr); return value; } inline void InferClause::clear_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.where_clause_ != nullptr) _impl_.where_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& InferClause::_internal_where_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.where_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& InferClause::where_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InferClause.where_clause) } inline ::pg_query::Node* InferClause::release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* InferClause::unsafe_arena_release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.InferClause.where_clause) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* InferClause::_internal_mutable_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.where_clause_; } inline ::pg_query::Node* InferClause::mutable_where_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_where_clause(); // @@protoc_insertion_point(field_mutable:pg_query.InferClause.where_clause) return _msg; } inline void InferClause::set_allocated_where_clause(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.where_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.InferClause.where_clause) } // string conname = 3 [json_name = "conname"]; inline void InferClause::clear_conname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conname_.ClearToEmpty(); } inline const std::string& InferClause::conname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.InferClause.conname) return _internal_conname(); } template inline PROTOBUF_ALWAYS_INLINE void InferClause::set_conname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.conname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.InferClause.conname) } inline std::string* InferClause::mutable_conname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_conname(); // @@protoc_insertion_point(field_mutable:pg_query.InferClause.conname) return _s; } inline const std::string& InferClause::_internal_conname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.conname_.Get(); } inline void InferClause::_internal_set_conname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.conname_.Set(value, GetArena()); } inline std::string* InferClause::_internal_mutable_conname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.conname_.Mutable( GetArena()); } inline std::string* InferClause::release_conname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.InferClause.conname) return _impl_.conname_.Release(); } inline void InferClause::set_allocated_conname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.conname_.IsDefault()) { _impl_.conname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.InferClause.conname) } // int32 location = 4 [json_name = "location"]; inline void InferClause::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t InferClause::location() const { // @@protoc_insertion_point(field_get:pg_query.InferClause.location) return _internal_location(); } inline void InferClause::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.InferClause.location) } inline ::int32_t InferClause::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void InferClause::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // OnConflictClause // .pg_query.OnConflictAction action = 1 [json_name = "action"]; inline void OnConflictClause::clear_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.action_ = 0; } inline ::pg_query::OnConflictAction OnConflictClause::action() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.action) return _internal_action(); } inline void OnConflictClause::set_action(::pg_query::OnConflictAction value) { _internal_set_action(value); // @@protoc_insertion_point(field_set:pg_query.OnConflictClause.action) } inline ::pg_query::OnConflictAction OnConflictClause::_internal_action() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::OnConflictAction>(_impl_.action_); } inline void OnConflictClause::_internal_set_action(::pg_query::OnConflictAction value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.action_ = value; } // .pg_query.InferClause infer = 2 [json_name = "infer"]; inline bool OnConflictClause::has_infer() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.infer_ != nullptr); return value; } inline void OnConflictClause::clear_infer() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.infer_ != nullptr) _impl_.infer_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::InferClause& OnConflictClause::_internal_infer() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::InferClause* p = _impl_.infer_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_InferClause_default_instance_); } inline const ::pg_query::InferClause& OnConflictClause::infer() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.infer) return _internal_infer(); } inline void OnConflictClause::unsafe_arena_set_allocated_infer(::pg_query::InferClause* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.infer_); } _impl_.infer_ = reinterpret_cast<::pg_query::InferClause*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictClause.infer) } inline ::pg_query::InferClause* OnConflictClause::release_infer() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::InferClause* released = _impl_.infer_; _impl_.infer_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::InferClause* OnConflictClause::unsafe_arena_release_infer() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.OnConflictClause.infer) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::InferClause* temp = _impl_.infer_; _impl_.infer_ = nullptr; return temp; } inline ::pg_query::InferClause* OnConflictClause::_internal_mutable_infer() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.infer_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::InferClause>(GetArena()); _impl_.infer_ = reinterpret_cast<::pg_query::InferClause*>(p); } return _impl_.infer_; } inline ::pg_query::InferClause* OnConflictClause::mutable_infer() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::InferClause* _msg = _internal_mutable_infer(); // @@protoc_insertion_point(field_mutable:pg_query.OnConflictClause.infer) return _msg; } inline void OnConflictClause::set_allocated_infer(::pg_query::InferClause* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::InferClause*>(_impl_.infer_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::InferClause*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.infer_ = reinterpret_cast<::pg_query::InferClause*>(value); // @@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 _internal_target_list().size(); } inline int OnConflictClause::target_list_size() const { return _internal_target_list_size(); } inline void OnConflictClause::clear_target_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.target_list_.Clear(); } inline ::pg_query::Node* OnConflictClause::mutable_target_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictClause.target_list) return _internal_mutable_target_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* OnConflictClause::mutable_target_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictClause.target_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_target_list(); } inline const ::pg_query::Node& OnConflictClause::target_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.target_list) return _internal_target_list().Get(index); } inline ::pg_query::Node* OnConflictClause::add_target_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_target_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.OnConflictClause.target_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& OnConflictClause::target_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.OnConflictClause.target_list) return _internal_target_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& OnConflictClause::_internal_target_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.target_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* OnConflictClause::_internal_mutable_target_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.target_list_; } // .pg_query.Node where_clause = 4 [json_name = "whereClause"]; inline bool OnConflictClause::has_where_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.where_clause_ != nullptr); return value; } inline void OnConflictClause::clear_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.where_clause_ != nullptr) _impl_.where_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& OnConflictClause::_internal_where_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.where_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& OnConflictClause::where_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictClause.where_clause) } inline ::pg_query::Node* OnConflictClause::release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* OnConflictClause::unsafe_arena_release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.OnConflictClause.where_clause) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* OnConflictClause::_internal_mutable_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.where_clause_; } inline ::pg_query::Node* OnConflictClause::mutable_where_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_where_clause(); // @@protoc_insertion_point(field_mutable:pg_query.OnConflictClause.where_clause) return _msg; } inline void OnConflictClause::set_allocated_where_clause(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.where_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.OnConflictClause.where_clause) } // int32 location = 5 [json_name = "location"]; inline void OnConflictClause::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t OnConflictClause::location() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.location) return _internal_location(); } inline void OnConflictClause::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.OnConflictClause.location) } inline ::int32_t OnConflictClause::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void OnConflictClause::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // CTESearchClause // repeated .pg_query.Node search_col_list = 1 [json_name = "search_col_list"]; inline int CTESearchClause::_internal_search_col_list_size() const { return _internal_search_col_list().size(); } inline int CTESearchClause::search_col_list_size() const { return _internal_search_col_list_size(); } inline void CTESearchClause::clear_search_col_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.search_col_list_.Clear(); } inline ::pg_query::Node* CTESearchClause::mutable_search_col_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CTESearchClause.search_col_list) return _internal_mutable_search_col_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CTESearchClause::mutable_search_col_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CTESearchClause.search_col_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_search_col_list(); } inline const ::pg_query::Node& CTESearchClause::search_col_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CTESearchClause.search_col_list) return _internal_search_col_list().Get(index); } inline ::pg_query::Node* CTESearchClause::add_search_col_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_search_col_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.CTESearchClause.search_col_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CTESearchClause::search_col_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CTESearchClause.search_col_list) return _internal_search_col_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CTESearchClause::_internal_search_col_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.search_col_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CTESearchClause::_internal_mutable_search_col_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.search_col_list_; } // bool search_breadth_first = 2 [json_name = "search_breadth_first"]; inline void CTESearchClause::clear_search_breadth_first() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.search_breadth_first_ = false; } inline bool CTESearchClause::search_breadth_first() const { // @@protoc_insertion_point(field_get:pg_query.CTESearchClause.search_breadth_first) return _internal_search_breadth_first(); } inline void CTESearchClause::set_search_breadth_first(bool value) { _internal_set_search_breadth_first(value); // @@protoc_insertion_point(field_set:pg_query.CTESearchClause.search_breadth_first) } inline bool CTESearchClause::_internal_search_breadth_first() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.search_breadth_first_; } inline void CTESearchClause::_internal_set_search_breadth_first(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.search_breadth_first_ = value; } // string search_seq_column = 3 [json_name = "search_seq_column"]; inline void CTESearchClause::clear_search_seq_column() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.search_seq_column_.ClearToEmpty(); } inline const std::string& CTESearchClause::search_seq_column() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CTESearchClause.search_seq_column) return _internal_search_seq_column(); } template inline PROTOBUF_ALWAYS_INLINE void CTESearchClause::set_search_seq_column(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.search_seq_column_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CTESearchClause.search_seq_column) } inline std::string* CTESearchClause::mutable_search_seq_column() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_search_seq_column(); // @@protoc_insertion_point(field_mutable:pg_query.CTESearchClause.search_seq_column) return _s; } inline const std::string& CTESearchClause::_internal_search_seq_column() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.search_seq_column_.Get(); } inline void CTESearchClause::_internal_set_search_seq_column(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.search_seq_column_.Set(value, GetArena()); } inline std::string* CTESearchClause::_internal_mutable_search_seq_column() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.search_seq_column_.Mutable( GetArena()); } inline std::string* CTESearchClause::release_search_seq_column() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CTESearchClause.search_seq_column) return _impl_.search_seq_column_.Release(); } inline void CTESearchClause::set_allocated_search_seq_column(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.search_seq_column_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.search_seq_column_.IsDefault()) { _impl_.search_seq_column_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CTESearchClause.search_seq_column) } // int32 location = 4 [json_name = "location"]; inline void CTESearchClause::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t CTESearchClause::location() const { // @@protoc_insertion_point(field_get:pg_query.CTESearchClause.location) return _internal_location(); } inline void CTESearchClause::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CTESearchClause.location) } inline ::int32_t CTESearchClause::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void CTESearchClause::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // CTECycleClause // repeated .pg_query.Node cycle_col_list = 1 [json_name = "cycle_col_list"]; inline int CTECycleClause::_internal_cycle_col_list_size() const { return _internal_cycle_col_list().size(); } inline int CTECycleClause::cycle_col_list_size() const { return _internal_cycle_col_list_size(); } inline void CTECycleClause::clear_cycle_col_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cycle_col_list_.Clear(); } inline ::pg_query::Node* CTECycleClause::mutable_cycle_col_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CTECycleClause.cycle_col_list) return _internal_mutable_cycle_col_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CTECycleClause::mutable_cycle_col_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CTECycleClause.cycle_col_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_cycle_col_list(); } inline const ::pg_query::Node& CTECycleClause::cycle_col_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CTECycleClause.cycle_col_list) return _internal_cycle_col_list().Get(index); } inline ::pg_query::Node* CTECycleClause::add_cycle_col_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_cycle_col_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.CTECycleClause.cycle_col_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CTECycleClause::cycle_col_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CTECycleClause.cycle_col_list) return _internal_cycle_col_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CTECycleClause::_internal_cycle_col_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cycle_col_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CTECycleClause::_internal_mutable_cycle_col_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.cycle_col_list_; } // string cycle_mark_column = 2 [json_name = "cycle_mark_column"]; inline void CTECycleClause::clear_cycle_mark_column() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cycle_mark_column_.ClearToEmpty(); } inline const std::string& CTECycleClause::cycle_mark_column() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CTECycleClause.cycle_mark_column) return _internal_cycle_mark_column(); } template inline PROTOBUF_ALWAYS_INLINE void CTECycleClause::set_cycle_mark_column(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cycle_mark_column_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CTECycleClause.cycle_mark_column) } inline std::string* CTECycleClause::mutable_cycle_mark_column() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_cycle_mark_column(); // @@protoc_insertion_point(field_mutable:pg_query.CTECycleClause.cycle_mark_column) return _s; } inline const std::string& CTECycleClause::_internal_cycle_mark_column() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cycle_mark_column_.Get(); } inline void CTECycleClause::_internal_set_cycle_mark_column(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cycle_mark_column_.Set(value, GetArena()); } inline std::string* CTECycleClause::_internal_mutable_cycle_mark_column() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.cycle_mark_column_.Mutable( GetArena()); } inline std::string* CTECycleClause::release_cycle_mark_column() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CTECycleClause.cycle_mark_column) return _impl_.cycle_mark_column_.Release(); } inline void CTECycleClause::set_allocated_cycle_mark_column(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cycle_mark_column_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.cycle_mark_column_.IsDefault()) { _impl_.cycle_mark_column_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CTECycleClause.cycle_mark_column) } // .pg_query.Node cycle_mark_value = 3 [json_name = "cycle_mark_value"]; inline bool CTECycleClause::has_cycle_mark_value() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.cycle_mark_value_ != nullptr); return value; } inline void CTECycleClause::clear_cycle_mark_value() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.cycle_mark_value_ != nullptr) _impl_.cycle_mark_value_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& CTECycleClause::_internal_cycle_mark_value() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.cycle_mark_value_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CTECycleClause::cycle_mark_value() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CTECycleClause.cycle_mark_value) return _internal_cycle_mark_value(); } inline void CTECycleClause::unsafe_arena_set_allocated_cycle_mark_value(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.cycle_mark_value_); } _impl_.cycle_mark_value_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CTECycleClause.cycle_mark_value) } inline ::pg_query::Node* CTECycleClause::release_cycle_mark_value() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.cycle_mark_value_; _impl_.cycle_mark_value_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CTECycleClause::unsafe_arena_release_cycle_mark_value() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CTECycleClause.cycle_mark_value) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.cycle_mark_value_; _impl_.cycle_mark_value_ = nullptr; return temp; } inline ::pg_query::Node* CTECycleClause::_internal_mutable_cycle_mark_value() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.cycle_mark_value_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.cycle_mark_value_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.cycle_mark_value_; } inline ::pg_query::Node* CTECycleClause::mutable_cycle_mark_value() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_cycle_mark_value(); // @@protoc_insertion_point(field_mutable:pg_query.CTECycleClause.cycle_mark_value) return _msg; } inline void CTECycleClause::set_allocated_cycle_mark_value(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.cycle_mark_value_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.cycle_mark_value_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CTECycleClause.cycle_mark_value) } // .pg_query.Node cycle_mark_default = 4 [json_name = "cycle_mark_default"]; inline bool CTECycleClause::has_cycle_mark_default() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.cycle_mark_default_ != nullptr); return value; } inline void CTECycleClause::clear_cycle_mark_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.cycle_mark_default_ != nullptr) _impl_.cycle_mark_default_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& CTECycleClause::_internal_cycle_mark_default() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.cycle_mark_default_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CTECycleClause::cycle_mark_default() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CTECycleClause.cycle_mark_default) return _internal_cycle_mark_default(); } inline void CTECycleClause::unsafe_arena_set_allocated_cycle_mark_default(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.cycle_mark_default_); } _impl_.cycle_mark_default_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CTECycleClause.cycle_mark_default) } inline ::pg_query::Node* CTECycleClause::release_cycle_mark_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.cycle_mark_default_; _impl_.cycle_mark_default_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CTECycleClause::unsafe_arena_release_cycle_mark_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CTECycleClause.cycle_mark_default) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.cycle_mark_default_; _impl_.cycle_mark_default_ = nullptr; return temp; } inline ::pg_query::Node* CTECycleClause::_internal_mutable_cycle_mark_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.cycle_mark_default_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.cycle_mark_default_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.cycle_mark_default_; } inline ::pg_query::Node* CTECycleClause::mutable_cycle_mark_default() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_cycle_mark_default(); // @@protoc_insertion_point(field_mutable:pg_query.CTECycleClause.cycle_mark_default) return _msg; } inline void CTECycleClause::set_allocated_cycle_mark_default(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.cycle_mark_default_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.cycle_mark_default_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CTECycleClause.cycle_mark_default) } // string cycle_path_column = 5 [json_name = "cycle_path_column"]; inline void CTECycleClause::clear_cycle_path_column() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cycle_path_column_.ClearToEmpty(); } inline const std::string& CTECycleClause::cycle_path_column() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CTECycleClause.cycle_path_column) return _internal_cycle_path_column(); } template inline PROTOBUF_ALWAYS_INLINE void CTECycleClause::set_cycle_path_column(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cycle_path_column_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CTECycleClause.cycle_path_column) } inline std::string* CTECycleClause::mutable_cycle_path_column() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_cycle_path_column(); // @@protoc_insertion_point(field_mutable:pg_query.CTECycleClause.cycle_path_column) return _s; } inline const std::string& CTECycleClause::_internal_cycle_path_column() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cycle_path_column_.Get(); } inline void CTECycleClause::_internal_set_cycle_path_column(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cycle_path_column_.Set(value, GetArena()); } inline std::string* CTECycleClause::_internal_mutable_cycle_path_column() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.cycle_path_column_.Mutable( GetArena()); } inline std::string* CTECycleClause::release_cycle_path_column() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CTECycleClause.cycle_path_column) return _impl_.cycle_path_column_.Release(); } inline void CTECycleClause::set_allocated_cycle_path_column(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cycle_path_column_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.cycle_path_column_.IsDefault()) { _impl_.cycle_path_column_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CTECycleClause.cycle_path_column) } // int32 location = 6 [json_name = "location"]; inline void CTECycleClause::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t CTECycleClause::location() const { // @@protoc_insertion_point(field_get:pg_query.CTECycleClause.location) return _internal_location(); } inline void CTECycleClause::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CTECycleClause.location) } inline ::int32_t CTECycleClause::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void CTECycleClause::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // uint32 cycle_mark_type = 7 [json_name = "cycle_mark_type"]; inline void CTECycleClause::clear_cycle_mark_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cycle_mark_type_ = 0u; } inline ::uint32_t CTECycleClause::cycle_mark_type() const { // @@protoc_insertion_point(field_get:pg_query.CTECycleClause.cycle_mark_type) return _internal_cycle_mark_type(); } inline void CTECycleClause::set_cycle_mark_type(::uint32_t value) { _internal_set_cycle_mark_type(value); // @@protoc_insertion_point(field_set:pg_query.CTECycleClause.cycle_mark_type) } inline ::uint32_t CTECycleClause::_internal_cycle_mark_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cycle_mark_type_; } inline void CTECycleClause::_internal_set_cycle_mark_type(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cycle_mark_type_ = value; } // int32 cycle_mark_typmod = 8 [json_name = "cycle_mark_typmod"]; inline void CTECycleClause::clear_cycle_mark_typmod() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cycle_mark_typmod_ = 0; } inline ::int32_t CTECycleClause::cycle_mark_typmod() const { // @@protoc_insertion_point(field_get:pg_query.CTECycleClause.cycle_mark_typmod) return _internal_cycle_mark_typmod(); } inline void CTECycleClause::set_cycle_mark_typmod(::int32_t value) { _internal_set_cycle_mark_typmod(value); // @@protoc_insertion_point(field_set:pg_query.CTECycleClause.cycle_mark_typmod) } inline ::int32_t CTECycleClause::_internal_cycle_mark_typmod() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cycle_mark_typmod_; } inline void CTECycleClause::_internal_set_cycle_mark_typmod(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cycle_mark_typmod_ = value; } // uint32 cycle_mark_collation = 9 [json_name = "cycle_mark_collation"]; inline void CTECycleClause::clear_cycle_mark_collation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cycle_mark_collation_ = 0u; } inline ::uint32_t CTECycleClause::cycle_mark_collation() const { // @@protoc_insertion_point(field_get:pg_query.CTECycleClause.cycle_mark_collation) return _internal_cycle_mark_collation(); } inline void CTECycleClause::set_cycle_mark_collation(::uint32_t value) { _internal_set_cycle_mark_collation(value); // @@protoc_insertion_point(field_set:pg_query.CTECycleClause.cycle_mark_collation) } inline ::uint32_t CTECycleClause::_internal_cycle_mark_collation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cycle_mark_collation_; } inline void CTECycleClause::_internal_set_cycle_mark_collation(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cycle_mark_collation_ = value; } // uint32 cycle_mark_neop = 10 [json_name = "cycle_mark_neop"]; inline void CTECycleClause::clear_cycle_mark_neop() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cycle_mark_neop_ = 0u; } inline ::uint32_t CTECycleClause::cycle_mark_neop() const { // @@protoc_insertion_point(field_get:pg_query.CTECycleClause.cycle_mark_neop) return _internal_cycle_mark_neop(); } inline void CTECycleClause::set_cycle_mark_neop(::uint32_t value) { _internal_set_cycle_mark_neop(value); // @@protoc_insertion_point(field_set:pg_query.CTECycleClause.cycle_mark_neop) } inline ::uint32_t CTECycleClause::_internal_cycle_mark_neop() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cycle_mark_neop_; } inline void CTECycleClause::_internal_set_cycle_mark_neop(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cycle_mark_neop_ = value; } // ------------------------------------------------------------------- // CommonTableExpr // string ctename = 1 [json_name = "ctename"]; inline void CommonTableExpr::clear_ctename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ctename_.ClearToEmpty(); } inline const std::string& CommonTableExpr::ctename() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctename) return _internal_ctename(); } template inline PROTOBUF_ALWAYS_INLINE void CommonTableExpr::set_ctename(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.ctename_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.ctename) } inline std::string* CommonTableExpr::mutable_ctename() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_ctename(); // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctename) return _s; } inline const std::string& CommonTableExpr::_internal_ctename() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ctename_.Get(); } inline void CommonTableExpr::_internal_set_ctename(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.ctename_.Set(value, GetArena()); } inline std::string* CommonTableExpr::_internal_mutable_ctename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.ctename_.Mutable( GetArena()); } inline std::string* CommonTableExpr::release_ctename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CommonTableExpr.ctename) return _impl_.ctename_.Release(); } inline void CommonTableExpr::set_allocated_ctename(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ctename_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.ctename_.IsDefault()) { _impl_.ctename_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_aliascolnames().size(); } inline int CommonTableExpr::aliascolnames_size() const { return _internal_aliascolnames_size(); } inline void CommonTableExpr::clear_aliascolnames() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aliascolnames_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_aliascolnames(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.aliascolnames) return _internal_mutable_aliascolnames()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CommonTableExpr::mutable_aliascolnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.aliascolnames) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_aliascolnames(); } inline const ::pg_query::Node& CommonTableExpr::aliascolnames(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.aliascolnames) return _internal_aliascolnames().Get(index); } inline ::pg_query::Node* CommonTableExpr::add_aliascolnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_aliascolnames()->Add(); // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.aliascolnames) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CommonTableExpr::aliascolnames() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.aliascolnames) return _internal_aliascolnames(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CommonTableExpr::_internal_aliascolnames() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aliascolnames_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CommonTableExpr::_internal_mutable_aliascolnames() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.aliascolnames_; } // .pg_query.CTEMaterialize ctematerialized = 3 [json_name = "ctematerialized"]; inline void CommonTableExpr::clear_ctematerialized() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ctematerialized_ = 0; } inline ::pg_query::CTEMaterialize CommonTableExpr::ctematerialized() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctematerialized) return _internal_ctematerialized(); } inline void CommonTableExpr::set_ctematerialized(::pg_query::CTEMaterialize value) { _internal_set_ctematerialized(value); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.ctematerialized) } inline ::pg_query::CTEMaterialize CommonTableExpr::_internal_ctematerialized() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::CTEMaterialize>(_impl_.ctematerialized_); } inline void CommonTableExpr::_internal_set_ctematerialized(::pg_query::CTEMaterialize value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.ctematerialized_ = value; } // .pg_query.Node ctequery = 4 [json_name = "ctequery"]; inline bool CommonTableExpr::has_ctequery() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.ctequery_ != nullptr); return value; } inline void CommonTableExpr::clear_ctequery() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.ctequery_ != nullptr) _impl_.ctequery_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& CommonTableExpr::_internal_ctequery() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.ctequery_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CommonTableExpr::ctequery() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctequery) return _internal_ctequery(); } inline void CommonTableExpr::unsafe_arena_set_allocated_ctequery(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.ctequery_); } _impl_.ctequery_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CommonTableExpr.ctequery) } inline ::pg_query::Node* CommonTableExpr::release_ctequery() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.ctequery_; _impl_.ctequery_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CommonTableExpr::unsafe_arena_release_ctequery() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CommonTableExpr.ctequery) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.ctequery_; _impl_.ctequery_ = nullptr; return temp; } inline ::pg_query::Node* CommonTableExpr::_internal_mutable_ctequery() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.ctequery_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.ctequery_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.ctequery_; } inline ::pg_query::Node* CommonTableExpr::mutable_ctequery() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_ctequery(); // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctequery) return _msg; } inline void CommonTableExpr::set_allocated_ctequery(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.ctequery_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.ctequery_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CommonTableExpr.ctequery) } // .pg_query.CTESearchClause search_clause = 5 [json_name = "search_clause"]; inline bool CommonTableExpr::has_search_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.search_clause_ != nullptr); return value; } inline void CommonTableExpr::clear_search_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.search_clause_ != nullptr) _impl_.search_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::CTESearchClause& CommonTableExpr::_internal_search_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::CTESearchClause* p = _impl_.search_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_CTESearchClause_default_instance_); } inline const ::pg_query::CTESearchClause& CommonTableExpr::search_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.search_clause) return _internal_search_clause(); } inline void CommonTableExpr::unsafe_arena_set_allocated_search_clause(::pg_query::CTESearchClause* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.search_clause_); } _impl_.search_clause_ = reinterpret_cast<::pg_query::CTESearchClause*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CommonTableExpr.search_clause) } inline ::pg_query::CTESearchClause* CommonTableExpr::release_search_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::CTESearchClause* released = _impl_.search_clause_; _impl_.search_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::CTESearchClause* CommonTableExpr::unsafe_arena_release_search_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CommonTableExpr.search_clause) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::CTESearchClause* temp = _impl_.search_clause_; _impl_.search_clause_ = nullptr; return temp; } inline ::pg_query::CTESearchClause* CommonTableExpr::_internal_mutable_search_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.search_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::CTESearchClause>(GetArena()); _impl_.search_clause_ = reinterpret_cast<::pg_query::CTESearchClause*>(p); } return _impl_.search_clause_; } inline ::pg_query::CTESearchClause* CommonTableExpr::mutable_search_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CTESearchClause* _msg = _internal_mutable_search_clause(); // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.search_clause) return _msg; } inline void CommonTableExpr::set_allocated_search_clause(::pg_query::CTESearchClause* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::CTESearchClause*>(_impl_.search_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::CTESearchClause*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.search_clause_ = reinterpret_cast<::pg_query::CTESearchClause*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CommonTableExpr.search_clause) } // .pg_query.CTECycleClause cycle_clause = 6 [json_name = "cycle_clause"]; inline bool CommonTableExpr::has_cycle_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.cycle_clause_ != nullptr); return value; } inline void CommonTableExpr::clear_cycle_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.cycle_clause_ != nullptr) _impl_.cycle_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::CTECycleClause& CommonTableExpr::_internal_cycle_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::CTECycleClause* p = _impl_.cycle_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_CTECycleClause_default_instance_); } inline const ::pg_query::CTECycleClause& CommonTableExpr::cycle_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.cycle_clause) return _internal_cycle_clause(); } inline void CommonTableExpr::unsafe_arena_set_allocated_cycle_clause(::pg_query::CTECycleClause* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.cycle_clause_); } _impl_.cycle_clause_ = reinterpret_cast<::pg_query::CTECycleClause*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CommonTableExpr.cycle_clause) } inline ::pg_query::CTECycleClause* CommonTableExpr::release_cycle_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::CTECycleClause* released = _impl_.cycle_clause_; _impl_.cycle_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::CTECycleClause* CommonTableExpr::unsafe_arena_release_cycle_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CommonTableExpr.cycle_clause) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::CTECycleClause* temp = _impl_.cycle_clause_; _impl_.cycle_clause_ = nullptr; return temp; } inline ::pg_query::CTECycleClause* CommonTableExpr::_internal_mutable_cycle_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.cycle_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::CTECycleClause>(GetArena()); _impl_.cycle_clause_ = reinterpret_cast<::pg_query::CTECycleClause*>(p); } return _impl_.cycle_clause_; } inline ::pg_query::CTECycleClause* CommonTableExpr::mutable_cycle_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CTECycleClause* _msg = _internal_mutable_cycle_clause(); // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.cycle_clause) return _msg; } inline void CommonTableExpr::set_allocated_cycle_clause(::pg_query::CTECycleClause* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::CTECycleClause*>(_impl_.cycle_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::CTECycleClause*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.cycle_clause_ = reinterpret_cast<::pg_query::CTECycleClause*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CommonTableExpr.cycle_clause) } // int32 location = 7 [json_name = "location"]; inline void CommonTableExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t CommonTableExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.location) return _internal_location(); } inline void CommonTableExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.location) } inline ::int32_t CommonTableExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void CommonTableExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // bool cterecursive = 8 [json_name = "cterecursive"]; inline void CommonTableExpr::clear_cterecursive() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cterecursive_ = false; } inline bool CommonTableExpr::cterecursive() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.cterecursive) return _internal_cterecursive(); } inline void CommonTableExpr::set_cterecursive(bool value) { _internal_set_cterecursive(value); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.cterecursive) } inline bool CommonTableExpr::_internal_cterecursive() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cterecursive_; } inline void CommonTableExpr::_internal_set_cterecursive(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cterecursive_ = value; } // int32 cterefcount = 9 [json_name = "cterefcount"]; inline void CommonTableExpr::clear_cterefcount() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cterefcount_ = 0; } inline ::int32_t CommonTableExpr::cterefcount() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.cterefcount) return _internal_cterefcount(); } inline void CommonTableExpr::set_cterefcount(::int32_t value) { _internal_set_cterefcount(value); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.cterefcount) } inline ::int32_t CommonTableExpr::_internal_cterefcount() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cterefcount_; } inline void CommonTableExpr::_internal_set_cterefcount(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cterefcount_ = value; } // repeated .pg_query.Node ctecolnames = 10 [json_name = "ctecolnames"]; inline int CommonTableExpr::_internal_ctecolnames_size() const { return _internal_ctecolnames().size(); } inline int CommonTableExpr::ctecolnames_size() const { return _internal_ctecolnames_size(); } inline void CommonTableExpr::clear_ctecolnames() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ctecolnames_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_ctecolnames(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecolnames) return _internal_mutable_ctecolnames()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CommonTableExpr::mutable_ctecolnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecolnames) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_ctecolnames(); } inline const ::pg_query::Node& CommonTableExpr::ctecolnames(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecolnames) return _internal_ctecolnames().Get(index); } inline ::pg_query::Node* CommonTableExpr::add_ctecolnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_ctecolnames()->Add(); // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecolnames) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CommonTableExpr::ctecolnames() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecolnames) return _internal_ctecolnames(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CommonTableExpr::_internal_ctecolnames() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ctecolnames_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CommonTableExpr::_internal_mutable_ctecolnames() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.ctecolnames_; } // repeated .pg_query.Node ctecoltypes = 11 [json_name = "ctecoltypes"]; inline int CommonTableExpr::_internal_ctecoltypes_size() const { return _internal_ctecoltypes().size(); } inline int CommonTableExpr::ctecoltypes_size() const { return _internal_ctecoltypes_size(); } inline void CommonTableExpr::clear_ctecoltypes() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ctecoltypes_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_ctecoltypes(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecoltypes) return _internal_mutable_ctecoltypes()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CommonTableExpr::mutable_ctecoltypes() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecoltypes) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_ctecoltypes(); } inline const ::pg_query::Node& CommonTableExpr::ctecoltypes(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecoltypes) return _internal_ctecoltypes().Get(index); } inline ::pg_query::Node* CommonTableExpr::add_ctecoltypes() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_ctecoltypes()->Add(); // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecoltypes) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CommonTableExpr::ctecoltypes() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecoltypes) return _internal_ctecoltypes(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CommonTableExpr::_internal_ctecoltypes() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ctecoltypes_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CommonTableExpr::_internal_mutable_ctecoltypes() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.ctecoltypes_; } // repeated .pg_query.Node ctecoltypmods = 12 [json_name = "ctecoltypmods"]; inline int CommonTableExpr::_internal_ctecoltypmods_size() const { return _internal_ctecoltypmods().size(); } inline int CommonTableExpr::ctecoltypmods_size() const { return _internal_ctecoltypmods_size(); } inline void CommonTableExpr::clear_ctecoltypmods() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ctecoltypmods_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_ctecoltypmods(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecoltypmods) return _internal_mutable_ctecoltypmods()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CommonTableExpr::mutable_ctecoltypmods() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecoltypmods) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_ctecoltypmods(); } inline const ::pg_query::Node& CommonTableExpr::ctecoltypmods(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecoltypmods) return _internal_ctecoltypmods().Get(index); } inline ::pg_query::Node* CommonTableExpr::add_ctecoltypmods() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_ctecoltypmods()->Add(); // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecoltypmods) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CommonTableExpr::ctecoltypmods() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecoltypmods) return _internal_ctecoltypmods(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CommonTableExpr::_internal_ctecoltypmods() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ctecoltypmods_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CommonTableExpr::_internal_mutable_ctecoltypmods() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.ctecoltypmods_; } // repeated .pg_query.Node ctecolcollations = 13 [json_name = "ctecolcollations"]; inline int CommonTableExpr::_internal_ctecolcollations_size() const { return _internal_ctecolcollations().size(); } inline int CommonTableExpr::ctecolcollations_size() const { return _internal_ctecolcollations_size(); } inline void CommonTableExpr::clear_ctecolcollations() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ctecolcollations_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_ctecolcollations(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecolcollations) return _internal_mutable_ctecolcollations()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CommonTableExpr::mutable_ctecolcollations() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecolcollations) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_ctecolcollations(); } inline const ::pg_query::Node& CommonTableExpr::ctecolcollations(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecolcollations) return _internal_ctecolcollations().Get(index); } inline ::pg_query::Node* CommonTableExpr::add_ctecolcollations() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_ctecolcollations()->Add(); // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecolcollations) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CommonTableExpr::ctecolcollations() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecolcollations) return _internal_ctecolcollations(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CommonTableExpr::_internal_ctecolcollations() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ctecolcollations_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CommonTableExpr::_internal_mutable_ctecolcollations() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.ctecolcollations_; } // ------------------------------------------------------------------- // MergeWhenClause // .pg_query.MergeMatchKind match_kind = 1 [json_name = "matchKind"]; inline void MergeWhenClause::clear_match_kind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.match_kind_ = 0; } inline ::pg_query::MergeMatchKind MergeWhenClause::match_kind() const { // @@protoc_insertion_point(field_get:pg_query.MergeWhenClause.match_kind) return _internal_match_kind(); } inline void MergeWhenClause::set_match_kind(::pg_query::MergeMatchKind value) { _internal_set_match_kind(value); // @@protoc_insertion_point(field_set:pg_query.MergeWhenClause.match_kind) } inline ::pg_query::MergeMatchKind MergeWhenClause::_internal_match_kind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::MergeMatchKind>(_impl_.match_kind_); } inline void MergeWhenClause::_internal_set_match_kind(::pg_query::MergeMatchKind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.match_kind_ = value; } // .pg_query.CmdType command_type = 2 [json_name = "commandType"]; inline void MergeWhenClause::clear_command_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.command_type_ = 0; } inline ::pg_query::CmdType MergeWhenClause::command_type() const { // @@protoc_insertion_point(field_get:pg_query.MergeWhenClause.command_type) return _internal_command_type(); } inline void MergeWhenClause::set_command_type(::pg_query::CmdType value) { _internal_set_command_type(value); // @@protoc_insertion_point(field_set:pg_query.MergeWhenClause.command_type) } inline ::pg_query::CmdType MergeWhenClause::_internal_command_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::CmdType>(_impl_.command_type_); } inline void MergeWhenClause::_internal_set_command_type(::pg_query::CmdType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.command_type_ = value; } // .pg_query.OverridingKind override = 3 [json_name = "override"]; inline void MergeWhenClause::clear_override() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.override_ = 0; } inline ::pg_query::OverridingKind MergeWhenClause::override() const { // @@protoc_insertion_point(field_get:pg_query.MergeWhenClause.override) return _internal_override(); } inline void MergeWhenClause::set_override(::pg_query::OverridingKind value) { _internal_set_override(value); // @@protoc_insertion_point(field_set:pg_query.MergeWhenClause.override) } inline ::pg_query::OverridingKind MergeWhenClause::_internal_override() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::OverridingKind>(_impl_.override_); } inline void MergeWhenClause::_internal_set_override(::pg_query::OverridingKind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.override_ = value; } // .pg_query.Node condition = 4 [json_name = "condition"]; inline bool MergeWhenClause::has_condition() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.condition_ != nullptr); return value; } inline void MergeWhenClause::clear_condition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.condition_ != nullptr) _impl_.condition_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& MergeWhenClause::_internal_condition() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.condition_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& MergeWhenClause::condition() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MergeWhenClause.condition) return _internal_condition(); } inline void MergeWhenClause::unsafe_arena_set_allocated_condition(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.condition_); } _impl_.condition_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MergeWhenClause.condition) } inline ::pg_query::Node* MergeWhenClause::release_condition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.condition_; _impl_.condition_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* MergeWhenClause::unsafe_arena_release_condition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.MergeWhenClause.condition) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.condition_; _impl_.condition_ = nullptr; return temp; } inline ::pg_query::Node* MergeWhenClause::_internal_mutable_condition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.condition_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.condition_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.condition_; } inline ::pg_query::Node* MergeWhenClause::mutable_condition() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_condition(); // @@protoc_insertion_point(field_mutable:pg_query.MergeWhenClause.condition) return _msg; } inline void MergeWhenClause::set_allocated_condition(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.condition_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.condition_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.MergeWhenClause.condition) } // repeated .pg_query.Node target_list = 5 [json_name = "targetList"]; inline int MergeWhenClause::_internal_target_list_size() const { return _internal_target_list().size(); } inline int MergeWhenClause::target_list_size() const { return _internal_target_list_size(); } inline void MergeWhenClause::clear_target_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.target_list_.Clear(); } inline ::pg_query::Node* MergeWhenClause::mutable_target_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.MergeWhenClause.target_list) return _internal_mutable_target_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* MergeWhenClause::mutable_target_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.MergeWhenClause.target_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_target_list(); } inline const ::pg_query::Node& MergeWhenClause::target_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MergeWhenClause.target_list) return _internal_target_list().Get(index); } inline ::pg_query::Node* MergeWhenClause::add_target_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_target_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.MergeWhenClause.target_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& MergeWhenClause::target_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.MergeWhenClause.target_list) return _internal_target_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& MergeWhenClause::_internal_target_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.target_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* MergeWhenClause::_internal_mutable_target_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.target_list_; } // repeated .pg_query.Node values = 6 [json_name = "values"]; inline int MergeWhenClause::_internal_values_size() const { return _internal_values().size(); } inline int MergeWhenClause::values_size() const { return _internal_values_size(); } inline void MergeWhenClause::clear_values() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.values_.Clear(); } inline ::pg_query::Node* MergeWhenClause::mutable_values(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.MergeWhenClause.values) return _internal_mutable_values()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* MergeWhenClause::mutable_values() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.MergeWhenClause.values) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_values(); } inline const ::pg_query::Node& MergeWhenClause::values(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MergeWhenClause.values) return _internal_values().Get(index); } inline ::pg_query::Node* MergeWhenClause::add_values() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_values()->Add(); // @@protoc_insertion_point(field_add:pg_query.MergeWhenClause.values) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& MergeWhenClause::values() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.MergeWhenClause.values) return _internal_values(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& MergeWhenClause::_internal_values() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.values_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* MergeWhenClause::_internal_mutable_values() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.values_; } // ------------------------------------------------------------------- // TriggerTransition // string name = 1 [json_name = "name"]; inline void TriggerTransition::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& TriggerTransition::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TriggerTransition.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void TriggerTransition::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.TriggerTransition.name) } inline std::string* TriggerTransition::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.TriggerTransition.name) return _s; } inline const std::string& TriggerTransition::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void TriggerTransition::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* TriggerTransition::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* TriggerTransition::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.TriggerTransition.name) return _impl_.name_.Release(); } inline void TriggerTransition::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.TriggerTransition.name) } // bool is_new = 2 [json_name = "isNew"]; inline void TriggerTransition::clear_is_new() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_new_ = false; } inline bool TriggerTransition::is_new() const { // @@protoc_insertion_point(field_get:pg_query.TriggerTransition.is_new) return _internal_is_new(); } inline void TriggerTransition::set_is_new(bool value) { _internal_set_is_new(value); // @@protoc_insertion_point(field_set:pg_query.TriggerTransition.is_new) } inline bool TriggerTransition::_internal_is_new() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_new_; } inline void TriggerTransition::_internal_set_is_new(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_new_ = value; } // bool is_table = 3 [json_name = "isTable"]; inline void TriggerTransition::clear_is_table() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_table_ = false; } inline bool TriggerTransition::is_table() const { // @@protoc_insertion_point(field_get:pg_query.TriggerTransition.is_table) return _internal_is_table(); } inline void TriggerTransition::set_is_table(bool value) { _internal_set_is_table(value); // @@protoc_insertion_point(field_set:pg_query.TriggerTransition.is_table) } inline bool TriggerTransition::_internal_is_table() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_table_; } inline void TriggerTransition::_internal_set_is_table(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_table_ = value; } // ------------------------------------------------------------------- // JsonOutput // .pg_query.TypeName type_name = 1 [json_name = "typeName"]; inline bool JsonOutput::has_type_name() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.type_name_ != nullptr); return value; } inline void JsonOutput::clear_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.type_name_ != nullptr) _impl_.type_name_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::TypeName& JsonOutput::_internal_type_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.type_name_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& JsonOutput::type_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonOutput.type_name) return _internal_type_name(); } inline void JsonOutput::unsafe_arena_set_allocated_type_name(::pg_query::TypeName* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.type_name_); } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonOutput.type_name) } inline ::pg_query::TypeName* JsonOutput::release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* released = _impl_.type_name_; _impl_.type_name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* JsonOutput::unsafe_arena_release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonOutput.type_name) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* JsonOutput::_internal_mutable_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.type_name_; } inline ::pg_query::TypeName* JsonOutput::mutable_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_type_name(); // @@protoc_insertion_point(field_mutable:pg_query.JsonOutput.type_name) return _msg; } inline void JsonOutput::set_allocated_type_name(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.type_name_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonOutput.type_name) } // .pg_query.JsonReturning returning = 2 [json_name = "returning"]; inline bool JsonOutput::has_returning() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.returning_ != nullptr); return value; } inline void JsonOutput::clear_returning() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.returning_ != nullptr) _impl_.returning_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::JsonReturning& JsonOutput::_internal_returning() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonReturning* p = _impl_.returning_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonReturning_default_instance_); } inline const ::pg_query::JsonReturning& JsonOutput::returning() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonOutput.returning) return _internal_returning(); } inline void JsonOutput::unsafe_arena_set_allocated_returning(::pg_query::JsonReturning* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.returning_); } _impl_.returning_ = reinterpret_cast<::pg_query::JsonReturning*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonOutput.returning) } inline ::pg_query::JsonReturning* JsonOutput::release_returning() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonReturning* released = _impl_.returning_; _impl_.returning_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonReturning* JsonOutput::unsafe_arena_release_returning() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonOutput.returning) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonReturning* temp = _impl_.returning_; _impl_.returning_ = nullptr; return temp; } inline ::pg_query::JsonReturning* JsonOutput::_internal_mutable_returning() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.returning_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonReturning>(GetArena()); _impl_.returning_ = reinterpret_cast<::pg_query::JsonReturning*>(p); } return _impl_.returning_; } inline ::pg_query::JsonReturning* JsonOutput::mutable_returning() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonReturning* _msg = _internal_mutable_returning(); // @@protoc_insertion_point(field_mutable:pg_query.JsonOutput.returning) return _msg; } inline void JsonOutput::set_allocated_returning(::pg_query::JsonReturning* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonReturning*>(_impl_.returning_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonReturning*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.returning_ = reinterpret_cast<::pg_query::JsonReturning*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonOutput.returning) } // ------------------------------------------------------------------- // JsonArgument // .pg_query.JsonValueExpr val = 1 [json_name = "val"]; inline bool JsonArgument::has_val() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.val_ != nullptr); return value; } inline void JsonArgument::clear_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.val_ != nullptr) _impl_.val_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::JsonValueExpr& JsonArgument::_internal_val() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonValueExpr* p = _impl_.val_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonValueExpr_default_instance_); } inline const ::pg_query::JsonValueExpr& JsonArgument::val() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonArgument.val) return _internal_val(); } inline void JsonArgument::unsafe_arena_set_allocated_val(::pg_query::JsonValueExpr* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.val_); } _impl_.val_ = reinterpret_cast<::pg_query::JsonValueExpr*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonArgument.val) } inline ::pg_query::JsonValueExpr* JsonArgument::release_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonValueExpr* released = _impl_.val_; _impl_.val_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonValueExpr* JsonArgument::unsafe_arena_release_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonArgument.val) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonValueExpr* temp = _impl_.val_; _impl_.val_ = nullptr; return temp; } inline ::pg_query::JsonValueExpr* JsonArgument::_internal_mutable_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.val_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonValueExpr>(GetArena()); _impl_.val_ = reinterpret_cast<::pg_query::JsonValueExpr*>(p); } return _impl_.val_; } inline ::pg_query::JsonValueExpr* JsonArgument::mutable_val() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonValueExpr* _msg = _internal_mutable_val(); // @@protoc_insertion_point(field_mutable:pg_query.JsonArgument.val) return _msg; } inline void JsonArgument::set_allocated_val(::pg_query::JsonValueExpr* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonValueExpr*>(_impl_.val_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonValueExpr*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.val_ = reinterpret_cast<::pg_query::JsonValueExpr*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonArgument.val) } // string name = 2 [json_name = "name"]; inline void JsonArgument::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& JsonArgument::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonArgument.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void JsonArgument::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.JsonArgument.name) } inline std::string* JsonArgument::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.JsonArgument.name) return _s; } inline const std::string& JsonArgument::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void JsonArgument::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* JsonArgument::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* JsonArgument::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonArgument.name) return _impl_.name_.Release(); } inline void JsonArgument::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.JsonArgument.name) } // ------------------------------------------------------------------- // JsonFuncExpr // .pg_query.JsonExprOp op = 1 [json_name = "op"]; inline void JsonFuncExpr::clear_op() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.op_ = 0; } inline ::pg_query::JsonExprOp JsonFuncExpr::op() const { // @@protoc_insertion_point(field_get:pg_query.JsonFuncExpr.op) return _internal_op(); } inline void JsonFuncExpr::set_op(::pg_query::JsonExprOp value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.JsonFuncExpr.op) } inline ::pg_query::JsonExprOp JsonFuncExpr::_internal_op() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JsonExprOp>(_impl_.op_); } inline void JsonFuncExpr::_internal_set_op(::pg_query::JsonExprOp value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.op_ = value; } // string column_name = 2 [json_name = "column_name"]; inline void JsonFuncExpr::clear_column_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.column_name_.ClearToEmpty(); } inline const std::string& JsonFuncExpr::column_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonFuncExpr.column_name) return _internal_column_name(); } template inline PROTOBUF_ALWAYS_INLINE void JsonFuncExpr::set_column_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.column_name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.JsonFuncExpr.column_name) } inline std::string* JsonFuncExpr::mutable_column_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_column_name(); // @@protoc_insertion_point(field_mutable:pg_query.JsonFuncExpr.column_name) return _s; } inline const std::string& JsonFuncExpr::_internal_column_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.column_name_.Get(); } inline void JsonFuncExpr::_internal_set_column_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.column_name_.Set(value, GetArena()); } inline std::string* JsonFuncExpr::_internal_mutable_column_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.column_name_.Mutable( GetArena()); } inline std::string* JsonFuncExpr::release_column_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonFuncExpr.column_name) return _impl_.column_name_.Release(); } inline void JsonFuncExpr::set_allocated_column_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.column_name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.column_name_.IsDefault()) { _impl_.column_name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.JsonFuncExpr.column_name) } // .pg_query.JsonValueExpr context_item = 3 [json_name = "context_item"]; inline bool JsonFuncExpr::has_context_item() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.context_item_ != nullptr); return value; } inline void JsonFuncExpr::clear_context_item() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.context_item_ != nullptr) _impl_.context_item_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::JsonValueExpr& JsonFuncExpr::_internal_context_item() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonValueExpr* p = _impl_.context_item_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonValueExpr_default_instance_); } inline const ::pg_query::JsonValueExpr& JsonFuncExpr::context_item() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonFuncExpr.context_item) return _internal_context_item(); } inline void JsonFuncExpr::unsafe_arena_set_allocated_context_item(::pg_query::JsonValueExpr* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.context_item_); } _impl_.context_item_ = reinterpret_cast<::pg_query::JsonValueExpr*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonFuncExpr.context_item) } inline ::pg_query::JsonValueExpr* JsonFuncExpr::release_context_item() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonValueExpr* released = _impl_.context_item_; _impl_.context_item_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonValueExpr* JsonFuncExpr::unsafe_arena_release_context_item() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonFuncExpr.context_item) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonValueExpr* temp = _impl_.context_item_; _impl_.context_item_ = nullptr; return temp; } inline ::pg_query::JsonValueExpr* JsonFuncExpr::_internal_mutable_context_item() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.context_item_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonValueExpr>(GetArena()); _impl_.context_item_ = reinterpret_cast<::pg_query::JsonValueExpr*>(p); } return _impl_.context_item_; } inline ::pg_query::JsonValueExpr* JsonFuncExpr::mutable_context_item() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonValueExpr* _msg = _internal_mutable_context_item(); // @@protoc_insertion_point(field_mutable:pg_query.JsonFuncExpr.context_item) return _msg; } inline void JsonFuncExpr::set_allocated_context_item(::pg_query::JsonValueExpr* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonValueExpr*>(_impl_.context_item_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonValueExpr*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.context_item_ = reinterpret_cast<::pg_query::JsonValueExpr*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonFuncExpr.context_item) } // .pg_query.Node pathspec = 4 [json_name = "pathspec"]; inline bool JsonFuncExpr::has_pathspec() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.pathspec_ != nullptr); return value; } inline void JsonFuncExpr::clear_pathspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.pathspec_ != nullptr) _impl_.pathspec_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& JsonFuncExpr::_internal_pathspec() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.pathspec_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonFuncExpr::pathspec() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonFuncExpr.pathspec) return _internal_pathspec(); } inline void JsonFuncExpr::unsafe_arena_set_allocated_pathspec(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.pathspec_); } _impl_.pathspec_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonFuncExpr.pathspec) } inline ::pg_query::Node* JsonFuncExpr::release_pathspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.pathspec_; _impl_.pathspec_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonFuncExpr::unsafe_arena_release_pathspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonFuncExpr.pathspec) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.pathspec_; _impl_.pathspec_ = nullptr; return temp; } inline ::pg_query::Node* JsonFuncExpr::_internal_mutable_pathspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.pathspec_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.pathspec_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.pathspec_; } inline ::pg_query::Node* JsonFuncExpr::mutable_pathspec() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_pathspec(); // @@protoc_insertion_point(field_mutable:pg_query.JsonFuncExpr.pathspec) return _msg; } inline void JsonFuncExpr::set_allocated_pathspec(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.pathspec_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.pathspec_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonFuncExpr.pathspec) } // repeated .pg_query.Node passing = 5 [json_name = "passing"]; inline int JsonFuncExpr::_internal_passing_size() const { return _internal_passing().size(); } inline int JsonFuncExpr::passing_size() const { return _internal_passing_size(); } inline void JsonFuncExpr::clear_passing() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.passing_.Clear(); } inline ::pg_query::Node* JsonFuncExpr::mutable_passing(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.JsonFuncExpr.passing) return _internal_mutable_passing()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonFuncExpr::mutable_passing() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.JsonFuncExpr.passing) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_passing(); } inline const ::pg_query::Node& JsonFuncExpr::passing(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonFuncExpr.passing) return _internal_passing().Get(index); } inline ::pg_query::Node* JsonFuncExpr::add_passing() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_passing()->Add(); // @@protoc_insertion_point(field_add:pg_query.JsonFuncExpr.passing) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonFuncExpr::passing() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.JsonFuncExpr.passing) return _internal_passing(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonFuncExpr::_internal_passing() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.passing_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonFuncExpr::_internal_mutable_passing() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.passing_; } // .pg_query.JsonOutput output = 6 [json_name = "output"]; inline bool JsonFuncExpr::has_output() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.output_ != nullptr); return value; } inline void JsonFuncExpr::clear_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.output_ != nullptr) _impl_.output_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::JsonOutput& JsonFuncExpr::_internal_output() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonOutput* p = _impl_.output_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonOutput_default_instance_); } inline const ::pg_query::JsonOutput& JsonFuncExpr::output() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonFuncExpr.output) return _internal_output(); } inline void JsonFuncExpr::unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_); } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonFuncExpr.output) } inline ::pg_query::JsonOutput* JsonFuncExpr::release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::JsonOutput* released = _impl_.output_; _impl_.output_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonOutput* JsonFuncExpr::unsafe_arena_release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonFuncExpr.output) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::JsonOutput* temp = _impl_.output_; _impl_.output_ = nullptr; return temp; } inline ::pg_query::JsonOutput* JsonFuncExpr::_internal_mutable_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.output_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonOutput>(GetArena()); _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(p); } return _impl_.output_; } inline ::pg_query::JsonOutput* JsonFuncExpr::mutable_output() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonOutput* _msg = _internal_mutable_output(); // @@protoc_insertion_point(field_mutable:pg_query.JsonFuncExpr.output) return _msg; } inline void JsonFuncExpr::set_allocated_output(::pg_query::JsonOutput* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonOutput*>(_impl_.output_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonOutput*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonFuncExpr.output) } // .pg_query.JsonBehavior on_empty = 7 [json_name = "on_empty"]; inline bool JsonFuncExpr::has_on_empty() const { bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0; PROTOBUF_ASSUME(!value || _impl_.on_empty_ != nullptr); return value; } inline void JsonFuncExpr::clear_on_empty() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.on_empty_ != nullptr) _impl_.on_empty_->Clear(); _impl_._has_bits_[0] &= ~0x00000008u; } inline const ::pg_query::JsonBehavior& JsonFuncExpr::_internal_on_empty() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonBehavior* p = _impl_.on_empty_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonBehavior_default_instance_); } inline const ::pg_query::JsonBehavior& JsonFuncExpr::on_empty() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonFuncExpr.on_empty) return _internal_on_empty(); } inline void JsonFuncExpr::unsafe_arena_set_allocated_on_empty(::pg_query::JsonBehavior* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.on_empty_); } _impl_.on_empty_ = reinterpret_cast<::pg_query::JsonBehavior*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonFuncExpr.on_empty) } inline ::pg_query::JsonBehavior* JsonFuncExpr::release_on_empty() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::JsonBehavior* released = _impl_.on_empty_; _impl_.on_empty_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonBehavior* JsonFuncExpr::unsafe_arena_release_on_empty() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonFuncExpr.on_empty) _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::JsonBehavior* temp = _impl_.on_empty_; _impl_.on_empty_ = nullptr; return temp; } inline ::pg_query::JsonBehavior* JsonFuncExpr::_internal_mutable_on_empty() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000008u; if (_impl_.on_empty_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonBehavior>(GetArena()); _impl_.on_empty_ = reinterpret_cast<::pg_query::JsonBehavior*>(p); } return _impl_.on_empty_; } inline ::pg_query::JsonBehavior* JsonFuncExpr::mutable_on_empty() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonBehavior* _msg = _internal_mutable_on_empty(); // @@protoc_insertion_point(field_mutable:pg_query.JsonFuncExpr.on_empty) return _msg; } inline void JsonFuncExpr::set_allocated_on_empty(::pg_query::JsonBehavior* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonBehavior*>(_impl_.on_empty_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonBehavior*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } _impl_.on_empty_ = reinterpret_cast<::pg_query::JsonBehavior*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonFuncExpr.on_empty) } // .pg_query.JsonBehavior on_error = 8 [json_name = "on_error"]; inline bool JsonFuncExpr::has_on_error() const { bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0; PROTOBUF_ASSUME(!value || _impl_.on_error_ != nullptr); return value; } inline void JsonFuncExpr::clear_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.on_error_ != nullptr) _impl_.on_error_->Clear(); _impl_._has_bits_[0] &= ~0x00000010u; } inline const ::pg_query::JsonBehavior& JsonFuncExpr::_internal_on_error() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonBehavior* p = _impl_.on_error_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonBehavior_default_instance_); } inline const ::pg_query::JsonBehavior& JsonFuncExpr::on_error() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonFuncExpr.on_error) return _internal_on_error(); } inline void JsonFuncExpr::unsafe_arena_set_allocated_on_error(::pg_query::JsonBehavior* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.on_error_); } _impl_.on_error_ = reinterpret_cast<::pg_query::JsonBehavior*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonFuncExpr.on_error) } inline ::pg_query::JsonBehavior* JsonFuncExpr::release_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::JsonBehavior* released = _impl_.on_error_; _impl_.on_error_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonBehavior* JsonFuncExpr::unsafe_arena_release_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonFuncExpr.on_error) _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::JsonBehavior* temp = _impl_.on_error_; _impl_.on_error_ = nullptr; return temp; } inline ::pg_query::JsonBehavior* JsonFuncExpr::_internal_mutable_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000010u; if (_impl_.on_error_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonBehavior>(GetArena()); _impl_.on_error_ = reinterpret_cast<::pg_query::JsonBehavior*>(p); } return _impl_.on_error_; } inline ::pg_query::JsonBehavior* JsonFuncExpr::mutable_on_error() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonBehavior* _msg = _internal_mutable_on_error(); // @@protoc_insertion_point(field_mutable:pg_query.JsonFuncExpr.on_error) return _msg; } inline void JsonFuncExpr::set_allocated_on_error(::pg_query::JsonBehavior* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonBehavior*>(_impl_.on_error_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonBehavior*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } _impl_.on_error_ = reinterpret_cast<::pg_query::JsonBehavior*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonFuncExpr.on_error) } // .pg_query.JsonWrapper wrapper = 9 [json_name = "wrapper"]; inline void JsonFuncExpr::clear_wrapper() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.wrapper_ = 0; } inline ::pg_query::JsonWrapper JsonFuncExpr::wrapper() const { // @@protoc_insertion_point(field_get:pg_query.JsonFuncExpr.wrapper) return _internal_wrapper(); } inline void JsonFuncExpr::set_wrapper(::pg_query::JsonWrapper value) { _internal_set_wrapper(value); // @@protoc_insertion_point(field_set:pg_query.JsonFuncExpr.wrapper) } inline ::pg_query::JsonWrapper JsonFuncExpr::_internal_wrapper() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JsonWrapper>(_impl_.wrapper_); } inline void JsonFuncExpr::_internal_set_wrapper(::pg_query::JsonWrapper value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.wrapper_ = value; } // .pg_query.JsonQuotes quotes = 10 [json_name = "quotes"]; inline void JsonFuncExpr::clear_quotes() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.quotes_ = 0; } inline ::pg_query::JsonQuotes JsonFuncExpr::quotes() const { // @@protoc_insertion_point(field_get:pg_query.JsonFuncExpr.quotes) return _internal_quotes(); } inline void JsonFuncExpr::set_quotes(::pg_query::JsonQuotes value) { _internal_set_quotes(value); // @@protoc_insertion_point(field_set:pg_query.JsonFuncExpr.quotes) } inline ::pg_query::JsonQuotes JsonFuncExpr::_internal_quotes() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JsonQuotes>(_impl_.quotes_); } inline void JsonFuncExpr::_internal_set_quotes(::pg_query::JsonQuotes value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.quotes_ = value; } // int32 location = 11 [json_name = "location"]; inline void JsonFuncExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonFuncExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonFuncExpr.location) return _internal_location(); } inline void JsonFuncExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonFuncExpr.location) } inline ::int32_t JsonFuncExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonFuncExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonTablePathSpec // .pg_query.Node string = 1 [json_name = "string"]; inline bool JsonTablePathSpec::has_string() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.string_ != nullptr); return value; } inline void JsonTablePathSpec::clear_string() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.string_ != nullptr) _impl_.string_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& JsonTablePathSpec::_internal_string() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.string_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonTablePathSpec::string() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTablePathSpec.string) return _internal_string(); } inline void JsonTablePathSpec::unsafe_arena_set_allocated_string(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.string_); } _impl_.string_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTablePathSpec.string) } inline ::pg_query::Node* JsonTablePathSpec::release_string() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.string_; _impl_.string_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonTablePathSpec::unsafe_arena_release_string() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTablePathSpec.string) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.string_; _impl_.string_ = nullptr; return temp; } inline ::pg_query::Node* JsonTablePathSpec::_internal_mutable_string() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.string_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.string_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.string_; } inline ::pg_query::Node* JsonTablePathSpec::mutable_string() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_string(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTablePathSpec.string) return _msg; } inline void JsonTablePathSpec::set_allocated_string(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.string_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.string_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTablePathSpec.string) } // string name = 2 [json_name = "name"]; inline void JsonTablePathSpec::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& JsonTablePathSpec::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTablePathSpec.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void JsonTablePathSpec::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.JsonTablePathSpec.name) } inline std::string* JsonTablePathSpec::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTablePathSpec.name) return _s; } inline const std::string& JsonTablePathSpec::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void JsonTablePathSpec::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* JsonTablePathSpec::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* JsonTablePathSpec::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTablePathSpec.name) return _impl_.name_.Release(); } inline void JsonTablePathSpec::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTablePathSpec.name) } // int32 name_location = 3 [json_name = "name_location"]; inline void JsonTablePathSpec::clear_name_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_location_ = 0; } inline ::int32_t JsonTablePathSpec::name_location() const { // @@protoc_insertion_point(field_get:pg_query.JsonTablePathSpec.name_location) return _internal_name_location(); } inline void JsonTablePathSpec::set_name_location(::int32_t value) { _internal_set_name_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonTablePathSpec.name_location) } inline ::int32_t JsonTablePathSpec::_internal_name_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_location_; } inline void JsonTablePathSpec::_internal_set_name_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_location_ = value; } // int32 location = 4 [json_name = "location"]; inline void JsonTablePathSpec::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonTablePathSpec::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonTablePathSpec.location) return _internal_location(); } inline void JsonTablePathSpec::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonTablePathSpec.location) } inline ::int32_t JsonTablePathSpec::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonTablePathSpec::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonTable // .pg_query.JsonValueExpr context_item = 1 [json_name = "context_item"]; inline bool JsonTable::has_context_item() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.context_item_ != nullptr); return value; } inline void JsonTable::clear_context_item() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.context_item_ != nullptr) _impl_.context_item_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::JsonValueExpr& JsonTable::_internal_context_item() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonValueExpr* p = _impl_.context_item_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonValueExpr_default_instance_); } inline const ::pg_query::JsonValueExpr& JsonTable::context_item() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTable.context_item) return _internal_context_item(); } inline void JsonTable::unsafe_arena_set_allocated_context_item(::pg_query::JsonValueExpr* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.context_item_); } _impl_.context_item_ = reinterpret_cast<::pg_query::JsonValueExpr*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTable.context_item) } inline ::pg_query::JsonValueExpr* JsonTable::release_context_item() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonValueExpr* released = _impl_.context_item_; _impl_.context_item_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonValueExpr* JsonTable::unsafe_arena_release_context_item() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTable.context_item) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonValueExpr* temp = _impl_.context_item_; _impl_.context_item_ = nullptr; return temp; } inline ::pg_query::JsonValueExpr* JsonTable::_internal_mutable_context_item() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.context_item_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonValueExpr>(GetArena()); _impl_.context_item_ = reinterpret_cast<::pg_query::JsonValueExpr*>(p); } return _impl_.context_item_; } inline ::pg_query::JsonValueExpr* JsonTable::mutable_context_item() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonValueExpr* _msg = _internal_mutable_context_item(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTable.context_item) return _msg; } inline void JsonTable::set_allocated_context_item(::pg_query::JsonValueExpr* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonValueExpr*>(_impl_.context_item_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonValueExpr*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.context_item_ = reinterpret_cast<::pg_query::JsonValueExpr*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTable.context_item) } // .pg_query.JsonTablePathSpec pathspec = 2 [json_name = "pathspec"]; inline bool JsonTable::has_pathspec() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.pathspec_ != nullptr); return value; } inline void JsonTable::clear_pathspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.pathspec_ != nullptr) _impl_.pathspec_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::JsonTablePathSpec& JsonTable::_internal_pathspec() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonTablePathSpec* p = _impl_.pathspec_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonTablePathSpec_default_instance_); } inline const ::pg_query::JsonTablePathSpec& JsonTable::pathspec() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTable.pathspec) return _internal_pathspec(); } inline void JsonTable::unsafe_arena_set_allocated_pathspec(::pg_query::JsonTablePathSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.pathspec_); } _impl_.pathspec_ = reinterpret_cast<::pg_query::JsonTablePathSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTable.pathspec) } inline ::pg_query::JsonTablePathSpec* JsonTable::release_pathspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonTablePathSpec* released = _impl_.pathspec_; _impl_.pathspec_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonTablePathSpec* JsonTable::unsafe_arena_release_pathspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTable.pathspec) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonTablePathSpec* temp = _impl_.pathspec_; _impl_.pathspec_ = nullptr; return temp; } inline ::pg_query::JsonTablePathSpec* JsonTable::_internal_mutable_pathspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.pathspec_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonTablePathSpec>(GetArena()); _impl_.pathspec_ = reinterpret_cast<::pg_query::JsonTablePathSpec*>(p); } return _impl_.pathspec_; } inline ::pg_query::JsonTablePathSpec* JsonTable::mutable_pathspec() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonTablePathSpec* _msg = _internal_mutable_pathspec(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTable.pathspec) return _msg; } inline void JsonTable::set_allocated_pathspec(::pg_query::JsonTablePathSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonTablePathSpec*>(_impl_.pathspec_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonTablePathSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.pathspec_ = reinterpret_cast<::pg_query::JsonTablePathSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTable.pathspec) } // repeated .pg_query.Node passing = 3 [json_name = "passing"]; inline int JsonTable::_internal_passing_size() const { return _internal_passing().size(); } inline int JsonTable::passing_size() const { return _internal_passing_size(); } inline void JsonTable::clear_passing() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.passing_.Clear(); } inline ::pg_query::Node* JsonTable::mutable_passing(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.JsonTable.passing) return _internal_mutable_passing()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonTable::mutable_passing() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.JsonTable.passing) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_passing(); } inline const ::pg_query::Node& JsonTable::passing(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTable.passing) return _internal_passing().Get(index); } inline ::pg_query::Node* JsonTable::add_passing() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_passing()->Add(); // @@protoc_insertion_point(field_add:pg_query.JsonTable.passing) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonTable::passing() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.JsonTable.passing) return _internal_passing(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonTable::_internal_passing() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.passing_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonTable::_internal_mutable_passing() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.passing_; } // repeated .pg_query.Node columns = 4 [json_name = "columns"]; inline int JsonTable::_internal_columns_size() const { return _internal_columns().size(); } inline int JsonTable::columns_size() const { return _internal_columns_size(); } inline void JsonTable::clear_columns() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.columns_.Clear(); } inline ::pg_query::Node* JsonTable::mutable_columns(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.JsonTable.columns) return _internal_mutable_columns()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonTable::mutable_columns() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.JsonTable.columns) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_columns(); } inline const ::pg_query::Node& JsonTable::columns(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTable.columns) return _internal_columns().Get(index); } inline ::pg_query::Node* JsonTable::add_columns() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_columns()->Add(); // @@protoc_insertion_point(field_add:pg_query.JsonTable.columns) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonTable::columns() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.JsonTable.columns) return _internal_columns(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonTable::_internal_columns() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.columns_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonTable::_internal_mutable_columns() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.columns_; } // .pg_query.JsonBehavior on_error = 5 [json_name = "on_error"]; inline bool JsonTable::has_on_error() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.on_error_ != nullptr); return value; } inline void JsonTable::clear_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.on_error_ != nullptr) _impl_.on_error_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::JsonBehavior& JsonTable::_internal_on_error() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonBehavior* p = _impl_.on_error_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonBehavior_default_instance_); } inline const ::pg_query::JsonBehavior& JsonTable::on_error() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTable.on_error) return _internal_on_error(); } inline void JsonTable::unsafe_arena_set_allocated_on_error(::pg_query::JsonBehavior* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.on_error_); } _impl_.on_error_ = reinterpret_cast<::pg_query::JsonBehavior*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTable.on_error) } inline ::pg_query::JsonBehavior* JsonTable::release_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::JsonBehavior* released = _impl_.on_error_; _impl_.on_error_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonBehavior* JsonTable::unsafe_arena_release_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTable.on_error) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::JsonBehavior* temp = _impl_.on_error_; _impl_.on_error_ = nullptr; return temp; } inline ::pg_query::JsonBehavior* JsonTable::_internal_mutable_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.on_error_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonBehavior>(GetArena()); _impl_.on_error_ = reinterpret_cast<::pg_query::JsonBehavior*>(p); } return _impl_.on_error_; } inline ::pg_query::JsonBehavior* JsonTable::mutable_on_error() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonBehavior* _msg = _internal_mutable_on_error(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTable.on_error) return _msg; } inline void JsonTable::set_allocated_on_error(::pg_query::JsonBehavior* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonBehavior*>(_impl_.on_error_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonBehavior*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.on_error_ = reinterpret_cast<::pg_query::JsonBehavior*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTable.on_error) } // .pg_query.Alias alias = 6 [json_name = "alias"]; inline bool JsonTable::has_alias() const { bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0; PROTOBUF_ASSUME(!value || _impl_.alias_ != nullptr); return value; } inline void JsonTable::clear_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.alias_ != nullptr) _impl_.alias_->Clear(); _impl_._has_bits_[0] &= ~0x00000008u; } inline const ::pg_query::Alias& JsonTable::_internal_alias() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Alias* p = _impl_.alias_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& JsonTable::alias() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTable.alias) return _internal_alias(); } inline void JsonTable::unsafe_arena_set_allocated_alias(::pg_query::Alias* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.alias_); } _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTable.alias) } inline ::pg_query::Alias* JsonTable::release_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::Alias* released = _impl_.alias_; _impl_.alias_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Alias* JsonTable::unsafe_arena_release_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTable.alias) _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::Alias* temp = _impl_.alias_; _impl_.alias_ = nullptr; return temp; } inline ::pg_query::Alias* JsonTable::_internal_mutable_alias() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000008u; if (_impl_.alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(p); } return _impl_.alias_; } inline ::pg_query::Alias* JsonTable::mutable_alias() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Alias* _msg = _internal_mutable_alias(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTable.alias) return _msg; } inline void JsonTable::set_allocated_alias(::pg_query::Alias* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Alias*>(_impl_.alias_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Alias*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } _impl_.alias_ = reinterpret_cast<::pg_query::Alias*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTable.alias) } // bool lateral = 7 [json_name = "lateral"]; inline void JsonTable::clear_lateral() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.lateral_ = false; } inline bool JsonTable::lateral() const { // @@protoc_insertion_point(field_get:pg_query.JsonTable.lateral) return _internal_lateral(); } inline void JsonTable::set_lateral(bool value) { _internal_set_lateral(value); // @@protoc_insertion_point(field_set:pg_query.JsonTable.lateral) } inline bool JsonTable::_internal_lateral() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.lateral_; } inline void JsonTable::_internal_set_lateral(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.lateral_ = value; } // int32 location = 8 [json_name = "location"]; inline void JsonTable::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonTable::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonTable.location) return _internal_location(); } inline void JsonTable::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonTable.location) } inline ::int32_t JsonTable::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonTable::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonTableColumn // .pg_query.JsonTableColumnType coltype = 1 [json_name = "coltype"]; inline void JsonTableColumn::clear_coltype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coltype_ = 0; } inline ::pg_query::JsonTableColumnType JsonTableColumn::coltype() const { // @@protoc_insertion_point(field_get:pg_query.JsonTableColumn.coltype) return _internal_coltype(); } inline void JsonTableColumn::set_coltype(::pg_query::JsonTableColumnType value) { _internal_set_coltype(value); // @@protoc_insertion_point(field_set:pg_query.JsonTableColumn.coltype) } inline ::pg_query::JsonTableColumnType JsonTableColumn::_internal_coltype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JsonTableColumnType>(_impl_.coltype_); } inline void JsonTableColumn::_internal_set_coltype(::pg_query::JsonTableColumnType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.coltype_ = value; } // string name = 2 [json_name = "name"]; inline void JsonTableColumn::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& JsonTableColumn::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTableColumn.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void JsonTableColumn::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.JsonTableColumn.name) } inline std::string* JsonTableColumn::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTableColumn.name) return _s; } inline const std::string& JsonTableColumn::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void JsonTableColumn::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* JsonTableColumn::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* JsonTableColumn::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTableColumn.name) return _impl_.name_.Release(); } inline void JsonTableColumn::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTableColumn.name) } // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; inline bool JsonTableColumn::has_type_name() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.type_name_ != nullptr); return value; } inline void JsonTableColumn::clear_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.type_name_ != nullptr) _impl_.type_name_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::TypeName& JsonTableColumn::_internal_type_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.type_name_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& JsonTableColumn::type_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTableColumn.type_name) return _internal_type_name(); } inline void JsonTableColumn::unsafe_arena_set_allocated_type_name(::pg_query::TypeName* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.type_name_); } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTableColumn.type_name) } inline ::pg_query::TypeName* JsonTableColumn::release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* released = _impl_.type_name_; _impl_.type_name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* JsonTableColumn::unsafe_arena_release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTableColumn.type_name) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* JsonTableColumn::_internal_mutable_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.type_name_; } inline ::pg_query::TypeName* JsonTableColumn::mutable_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_type_name(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTableColumn.type_name) return _msg; } inline void JsonTableColumn::set_allocated_type_name(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.type_name_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTableColumn.type_name) } // .pg_query.JsonTablePathSpec pathspec = 4 [json_name = "pathspec"]; inline bool JsonTableColumn::has_pathspec() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.pathspec_ != nullptr); return value; } inline void JsonTableColumn::clear_pathspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.pathspec_ != nullptr) _impl_.pathspec_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::JsonTablePathSpec& JsonTableColumn::_internal_pathspec() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonTablePathSpec* p = _impl_.pathspec_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonTablePathSpec_default_instance_); } inline const ::pg_query::JsonTablePathSpec& JsonTableColumn::pathspec() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTableColumn.pathspec) return _internal_pathspec(); } inline void JsonTableColumn::unsafe_arena_set_allocated_pathspec(::pg_query::JsonTablePathSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.pathspec_); } _impl_.pathspec_ = reinterpret_cast<::pg_query::JsonTablePathSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTableColumn.pathspec) } inline ::pg_query::JsonTablePathSpec* JsonTableColumn::release_pathspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonTablePathSpec* released = _impl_.pathspec_; _impl_.pathspec_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonTablePathSpec* JsonTableColumn::unsafe_arena_release_pathspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTableColumn.pathspec) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonTablePathSpec* temp = _impl_.pathspec_; _impl_.pathspec_ = nullptr; return temp; } inline ::pg_query::JsonTablePathSpec* JsonTableColumn::_internal_mutable_pathspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.pathspec_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonTablePathSpec>(GetArena()); _impl_.pathspec_ = reinterpret_cast<::pg_query::JsonTablePathSpec*>(p); } return _impl_.pathspec_; } inline ::pg_query::JsonTablePathSpec* JsonTableColumn::mutable_pathspec() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonTablePathSpec* _msg = _internal_mutable_pathspec(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTableColumn.pathspec) return _msg; } inline void JsonTableColumn::set_allocated_pathspec(::pg_query::JsonTablePathSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonTablePathSpec*>(_impl_.pathspec_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonTablePathSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.pathspec_ = reinterpret_cast<::pg_query::JsonTablePathSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTableColumn.pathspec) } // .pg_query.JsonFormat format = 5 [json_name = "format"]; inline bool JsonTableColumn::has_format() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.format_ != nullptr); return value; } inline void JsonTableColumn::clear_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.format_ != nullptr) _impl_.format_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::JsonFormat& JsonTableColumn::_internal_format() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonFormat* p = _impl_.format_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonFormat_default_instance_); } inline const ::pg_query::JsonFormat& JsonTableColumn::format() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTableColumn.format) return _internal_format(); } inline void JsonTableColumn::unsafe_arena_set_allocated_format(::pg_query::JsonFormat* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.format_); } _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTableColumn.format) } inline ::pg_query::JsonFormat* JsonTableColumn::release_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::JsonFormat* released = _impl_.format_; _impl_.format_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonFormat* JsonTableColumn::unsafe_arena_release_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTableColumn.format) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::JsonFormat* temp = _impl_.format_; _impl_.format_ = nullptr; return temp; } inline ::pg_query::JsonFormat* JsonTableColumn::_internal_mutable_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.format_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonFormat>(GetArena()); _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(p); } return _impl_.format_; } inline ::pg_query::JsonFormat* JsonTableColumn::mutable_format() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonFormat* _msg = _internal_mutable_format(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTableColumn.format) return _msg; } inline void JsonTableColumn::set_allocated_format(::pg_query::JsonFormat* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonFormat*>(_impl_.format_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonFormat*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTableColumn.format) } // .pg_query.JsonWrapper wrapper = 6 [json_name = "wrapper"]; inline void JsonTableColumn::clear_wrapper() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.wrapper_ = 0; } inline ::pg_query::JsonWrapper JsonTableColumn::wrapper() const { // @@protoc_insertion_point(field_get:pg_query.JsonTableColumn.wrapper) return _internal_wrapper(); } inline void JsonTableColumn::set_wrapper(::pg_query::JsonWrapper value) { _internal_set_wrapper(value); // @@protoc_insertion_point(field_set:pg_query.JsonTableColumn.wrapper) } inline ::pg_query::JsonWrapper JsonTableColumn::_internal_wrapper() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JsonWrapper>(_impl_.wrapper_); } inline void JsonTableColumn::_internal_set_wrapper(::pg_query::JsonWrapper value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.wrapper_ = value; } // .pg_query.JsonQuotes quotes = 7 [json_name = "quotes"]; inline void JsonTableColumn::clear_quotes() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.quotes_ = 0; } inline ::pg_query::JsonQuotes JsonTableColumn::quotes() const { // @@protoc_insertion_point(field_get:pg_query.JsonTableColumn.quotes) return _internal_quotes(); } inline void JsonTableColumn::set_quotes(::pg_query::JsonQuotes value) { _internal_set_quotes(value); // @@protoc_insertion_point(field_set:pg_query.JsonTableColumn.quotes) } inline ::pg_query::JsonQuotes JsonTableColumn::_internal_quotes() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::JsonQuotes>(_impl_.quotes_); } inline void JsonTableColumn::_internal_set_quotes(::pg_query::JsonQuotes value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.quotes_ = value; } // repeated .pg_query.Node columns = 8 [json_name = "columns"]; inline int JsonTableColumn::_internal_columns_size() const { return _internal_columns().size(); } inline int JsonTableColumn::columns_size() const { return _internal_columns_size(); } inline void JsonTableColumn::clear_columns() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.columns_.Clear(); } inline ::pg_query::Node* JsonTableColumn::mutable_columns(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.JsonTableColumn.columns) return _internal_mutable_columns()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonTableColumn::mutable_columns() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.JsonTableColumn.columns) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_columns(); } inline const ::pg_query::Node& JsonTableColumn::columns(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTableColumn.columns) return _internal_columns().Get(index); } inline ::pg_query::Node* JsonTableColumn::add_columns() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_columns()->Add(); // @@protoc_insertion_point(field_add:pg_query.JsonTableColumn.columns) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonTableColumn::columns() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.JsonTableColumn.columns) return _internal_columns(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonTableColumn::_internal_columns() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.columns_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonTableColumn::_internal_mutable_columns() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.columns_; } // .pg_query.JsonBehavior on_empty = 9 [json_name = "on_empty"]; inline bool JsonTableColumn::has_on_empty() const { bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0; PROTOBUF_ASSUME(!value || _impl_.on_empty_ != nullptr); return value; } inline void JsonTableColumn::clear_on_empty() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.on_empty_ != nullptr) _impl_.on_empty_->Clear(); _impl_._has_bits_[0] &= ~0x00000008u; } inline const ::pg_query::JsonBehavior& JsonTableColumn::_internal_on_empty() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonBehavior* p = _impl_.on_empty_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonBehavior_default_instance_); } inline const ::pg_query::JsonBehavior& JsonTableColumn::on_empty() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTableColumn.on_empty) return _internal_on_empty(); } inline void JsonTableColumn::unsafe_arena_set_allocated_on_empty(::pg_query::JsonBehavior* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.on_empty_); } _impl_.on_empty_ = reinterpret_cast<::pg_query::JsonBehavior*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTableColumn.on_empty) } inline ::pg_query::JsonBehavior* JsonTableColumn::release_on_empty() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::JsonBehavior* released = _impl_.on_empty_; _impl_.on_empty_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonBehavior* JsonTableColumn::unsafe_arena_release_on_empty() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTableColumn.on_empty) _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::JsonBehavior* temp = _impl_.on_empty_; _impl_.on_empty_ = nullptr; return temp; } inline ::pg_query::JsonBehavior* JsonTableColumn::_internal_mutable_on_empty() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000008u; if (_impl_.on_empty_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonBehavior>(GetArena()); _impl_.on_empty_ = reinterpret_cast<::pg_query::JsonBehavior*>(p); } return _impl_.on_empty_; } inline ::pg_query::JsonBehavior* JsonTableColumn::mutable_on_empty() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonBehavior* _msg = _internal_mutable_on_empty(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTableColumn.on_empty) return _msg; } inline void JsonTableColumn::set_allocated_on_empty(::pg_query::JsonBehavior* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonBehavior*>(_impl_.on_empty_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonBehavior*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } _impl_.on_empty_ = reinterpret_cast<::pg_query::JsonBehavior*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTableColumn.on_empty) } // .pg_query.JsonBehavior on_error = 10 [json_name = "on_error"]; inline bool JsonTableColumn::has_on_error() const { bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0; PROTOBUF_ASSUME(!value || _impl_.on_error_ != nullptr); return value; } inline void JsonTableColumn::clear_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.on_error_ != nullptr) _impl_.on_error_->Clear(); _impl_._has_bits_[0] &= ~0x00000010u; } inline const ::pg_query::JsonBehavior& JsonTableColumn::_internal_on_error() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonBehavior* p = _impl_.on_error_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonBehavior_default_instance_); } inline const ::pg_query::JsonBehavior& JsonTableColumn::on_error() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonTableColumn.on_error) return _internal_on_error(); } inline void JsonTableColumn::unsafe_arena_set_allocated_on_error(::pg_query::JsonBehavior* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.on_error_); } _impl_.on_error_ = reinterpret_cast<::pg_query::JsonBehavior*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonTableColumn.on_error) } inline ::pg_query::JsonBehavior* JsonTableColumn::release_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::JsonBehavior* released = _impl_.on_error_; _impl_.on_error_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonBehavior* JsonTableColumn::unsafe_arena_release_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonTableColumn.on_error) _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::JsonBehavior* temp = _impl_.on_error_; _impl_.on_error_ = nullptr; return temp; } inline ::pg_query::JsonBehavior* JsonTableColumn::_internal_mutable_on_error() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000010u; if (_impl_.on_error_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonBehavior>(GetArena()); _impl_.on_error_ = reinterpret_cast<::pg_query::JsonBehavior*>(p); } return _impl_.on_error_; } inline ::pg_query::JsonBehavior* JsonTableColumn::mutable_on_error() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonBehavior* _msg = _internal_mutable_on_error(); // @@protoc_insertion_point(field_mutable:pg_query.JsonTableColumn.on_error) return _msg; } inline void JsonTableColumn::set_allocated_on_error(::pg_query::JsonBehavior* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonBehavior*>(_impl_.on_error_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonBehavior*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } _impl_.on_error_ = reinterpret_cast<::pg_query::JsonBehavior*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonTableColumn.on_error) } // int32 location = 11 [json_name = "location"]; inline void JsonTableColumn::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonTableColumn::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonTableColumn.location) return _internal_location(); } inline void JsonTableColumn::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonTableColumn.location) } inline ::int32_t JsonTableColumn::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonTableColumn::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonKeyValue // .pg_query.Node key = 1 [json_name = "key"]; inline bool JsonKeyValue::has_key() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.key_ != nullptr); return value; } inline void JsonKeyValue::clear_key() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.key_ != nullptr) _impl_.key_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& JsonKeyValue::_internal_key() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.key_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonKeyValue::key() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonKeyValue.key) return _internal_key(); } inline void JsonKeyValue::unsafe_arena_set_allocated_key(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.key_); } _impl_.key_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonKeyValue.key) } inline ::pg_query::Node* JsonKeyValue::release_key() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.key_; _impl_.key_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonKeyValue::unsafe_arena_release_key() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonKeyValue.key) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.key_; _impl_.key_ = nullptr; return temp; } inline ::pg_query::Node* JsonKeyValue::_internal_mutable_key() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.key_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.key_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.key_; } inline ::pg_query::Node* JsonKeyValue::mutable_key() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_key(); // @@protoc_insertion_point(field_mutable:pg_query.JsonKeyValue.key) return _msg; } inline void JsonKeyValue::set_allocated_key(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.key_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.key_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonKeyValue.key) } // .pg_query.JsonValueExpr value = 2 [json_name = "value"]; inline bool JsonKeyValue::has_value() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.value_ != nullptr); return value; } inline void JsonKeyValue::clear_value() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.value_ != nullptr) _impl_.value_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::JsonValueExpr& JsonKeyValue::_internal_value() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonValueExpr* p = _impl_.value_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonValueExpr_default_instance_); } inline const ::pg_query::JsonValueExpr& JsonKeyValue::value() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonKeyValue.value) return _internal_value(); } inline void JsonKeyValue::unsafe_arena_set_allocated_value(::pg_query::JsonValueExpr* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.value_); } _impl_.value_ = reinterpret_cast<::pg_query::JsonValueExpr*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonKeyValue.value) } inline ::pg_query::JsonValueExpr* JsonKeyValue::release_value() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonValueExpr* released = _impl_.value_; _impl_.value_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonValueExpr* JsonKeyValue::unsafe_arena_release_value() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonKeyValue.value) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonValueExpr* temp = _impl_.value_; _impl_.value_ = nullptr; return temp; } inline ::pg_query::JsonValueExpr* JsonKeyValue::_internal_mutable_value() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.value_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonValueExpr>(GetArena()); _impl_.value_ = reinterpret_cast<::pg_query::JsonValueExpr*>(p); } return _impl_.value_; } inline ::pg_query::JsonValueExpr* JsonKeyValue::mutable_value() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonValueExpr* _msg = _internal_mutable_value(); // @@protoc_insertion_point(field_mutable:pg_query.JsonKeyValue.value) return _msg; } inline void JsonKeyValue::set_allocated_value(::pg_query::JsonValueExpr* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonValueExpr*>(_impl_.value_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonValueExpr*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.value_ = reinterpret_cast<::pg_query::JsonValueExpr*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonKeyValue.value) } // ------------------------------------------------------------------- // JsonParseExpr // .pg_query.JsonValueExpr expr = 1 [json_name = "expr"]; inline bool JsonParseExpr::has_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.expr_ != nullptr); return value; } inline void JsonParseExpr::clear_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.expr_ != nullptr) _impl_.expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::JsonValueExpr& JsonParseExpr::_internal_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonValueExpr* p = _impl_.expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonValueExpr_default_instance_); } inline const ::pg_query::JsonValueExpr& JsonParseExpr::expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonParseExpr.expr) return _internal_expr(); } inline void JsonParseExpr::unsafe_arena_set_allocated_expr(::pg_query::JsonValueExpr* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expr_); } _impl_.expr_ = reinterpret_cast<::pg_query::JsonValueExpr*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonParseExpr.expr) } inline ::pg_query::JsonValueExpr* JsonParseExpr::release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonValueExpr* released = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonValueExpr* JsonParseExpr::unsafe_arena_release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonParseExpr.expr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonValueExpr* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::JsonValueExpr* JsonParseExpr::_internal_mutable_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonValueExpr>(GetArena()); _impl_.expr_ = reinterpret_cast<::pg_query::JsonValueExpr*>(p); } return _impl_.expr_; } inline ::pg_query::JsonValueExpr* JsonParseExpr::mutable_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonValueExpr* _msg = _internal_mutable_expr(); // @@protoc_insertion_point(field_mutable:pg_query.JsonParseExpr.expr) return _msg; } inline void JsonParseExpr::set_allocated_expr(::pg_query::JsonValueExpr* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonValueExpr*>(_impl_.expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonValueExpr*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.expr_ = reinterpret_cast<::pg_query::JsonValueExpr*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonParseExpr.expr) } // .pg_query.JsonOutput output = 2 [json_name = "output"]; inline bool JsonParseExpr::has_output() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.output_ != nullptr); return value; } inline void JsonParseExpr::clear_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.output_ != nullptr) _impl_.output_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::JsonOutput& JsonParseExpr::_internal_output() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonOutput* p = _impl_.output_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonOutput_default_instance_); } inline const ::pg_query::JsonOutput& JsonParseExpr::output() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonParseExpr.output) return _internal_output(); } inline void JsonParseExpr::unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_); } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonParseExpr.output) } inline ::pg_query::JsonOutput* JsonParseExpr::release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonOutput* released = _impl_.output_; _impl_.output_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonOutput* JsonParseExpr::unsafe_arena_release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonParseExpr.output) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonOutput* temp = _impl_.output_; _impl_.output_ = nullptr; return temp; } inline ::pg_query::JsonOutput* JsonParseExpr::_internal_mutable_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.output_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonOutput>(GetArena()); _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(p); } return _impl_.output_; } inline ::pg_query::JsonOutput* JsonParseExpr::mutable_output() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonOutput* _msg = _internal_mutable_output(); // @@protoc_insertion_point(field_mutable:pg_query.JsonParseExpr.output) return _msg; } inline void JsonParseExpr::set_allocated_output(::pg_query::JsonOutput* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonOutput*>(_impl_.output_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonOutput*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonParseExpr.output) } // bool unique_keys = 3 [json_name = "unique_keys"]; inline void JsonParseExpr::clear_unique_keys() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.unique_keys_ = false; } inline bool JsonParseExpr::unique_keys() const { // @@protoc_insertion_point(field_get:pg_query.JsonParseExpr.unique_keys) return _internal_unique_keys(); } inline void JsonParseExpr::set_unique_keys(bool value) { _internal_set_unique_keys(value); // @@protoc_insertion_point(field_set:pg_query.JsonParseExpr.unique_keys) } inline bool JsonParseExpr::_internal_unique_keys() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.unique_keys_; } inline void JsonParseExpr::_internal_set_unique_keys(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.unique_keys_ = value; } // int32 location = 4 [json_name = "location"]; inline void JsonParseExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonParseExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonParseExpr.location) return _internal_location(); } inline void JsonParseExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonParseExpr.location) } inline ::int32_t JsonParseExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonParseExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonScalarExpr // .pg_query.Node expr = 1 [json_name = "expr"]; inline bool JsonScalarExpr::has_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.expr_ != nullptr); return value; } inline void JsonScalarExpr::clear_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.expr_ != nullptr) _impl_.expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& JsonScalarExpr::_internal_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonScalarExpr::expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonScalarExpr.expr) return _internal_expr(); } inline void JsonScalarExpr::unsafe_arena_set_allocated_expr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expr_); } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonScalarExpr.expr) } inline ::pg_query::Node* JsonScalarExpr::release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonScalarExpr::unsafe_arena_release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonScalarExpr.expr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* JsonScalarExpr::_internal_mutable_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.expr_; } inline ::pg_query::Node* JsonScalarExpr::mutable_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_expr(); // @@protoc_insertion_point(field_mutable:pg_query.JsonScalarExpr.expr) return _msg; } inline void JsonScalarExpr::set_allocated_expr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonScalarExpr.expr) } // .pg_query.JsonOutput output = 2 [json_name = "output"]; inline bool JsonScalarExpr::has_output() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.output_ != nullptr); return value; } inline void JsonScalarExpr::clear_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.output_ != nullptr) _impl_.output_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::JsonOutput& JsonScalarExpr::_internal_output() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonOutput* p = _impl_.output_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonOutput_default_instance_); } inline const ::pg_query::JsonOutput& JsonScalarExpr::output() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonScalarExpr.output) return _internal_output(); } inline void JsonScalarExpr::unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_); } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonScalarExpr.output) } inline ::pg_query::JsonOutput* JsonScalarExpr::release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonOutput* released = _impl_.output_; _impl_.output_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonOutput* JsonScalarExpr::unsafe_arena_release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonScalarExpr.output) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonOutput* temp = _impl_.output_; _impl_.output_ = nullptr; return temp; } inline ::pg_query::JsonOutput* JsonScalarExpr::_internal_mutable_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.output_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonOutput>(GetArena()); _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(p); } return _impl_.output_; } inline ::pg_query::JsonOutput* JsonScalarExpr::mutable_output() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonOutput* _msg = _internal_mutable_output(); // @@protoc_insertion_point(field_mutable:pg_query.JsonScalarExpr.output) return _msg; } inline void JsonScalarExpr::set_allocated_output(::pg_query::JsonOutput* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonOutput*>(_impl_.output_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonOutput*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonScalarExpr.output) } // int32 location = 3 [json_name = "location"]; inline void JsonScalarExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonScalarExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonScalarExpr.location) return _internal_location(); } inline void JsonScalarExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonScalarExpr.location) } inline ::int32_t JsonScalarExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonScalarExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonSerializeExpr // .pg_query.JsonValueExpr expr = 1 [json_name = "expr"]; inline bool JsonSerializeExpr::has_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.expr_ != nullptr); return value; } inline void JsonSerializeExpr::clear_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.expr_ != nullptr) _impl_.expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::JsonValueExpr& JsonSerializeExpr::_internal_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonValueExpr* p = _impl_.expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonValueExpr_default_instance_); } inline const ::pg_query::JsonValueExpr& JsonSerializeExpr::expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonSerializeExpr.expr) return _internal_expr(); } inline void JsonSerializeExpr::unsafe_arena_set_allocated_expr(::pg_query::JsonValueExpr* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expr_); } _impl_.expr_ = reinterpret_cast<::pg_query::JsonValueExpr*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonSerializeExpr.expr) } inline ::pg_query::JsonValueExpr* JsonSerializeExpr::release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonValueExpr* released = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonValueExpr* JsonSerializeExpr::unsafe_arena_release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonSerializeExpr.expr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonValueExpr* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::JsonValueExpr* JsonSerializeExpr::_internal_mutable_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonValueExpr>(GetArena()); _impl_.expr_ = reinterpret_cast<::pg_query::JsonValueExpr*>(p); } return _impl_.expr_; } inline ::pg_query::JsonValueExpr* JsonSerializeExpr::mutable_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonValueExpr* _msg = _internal_mutable_expr(); // @@protoc_insertion_point(field_mutable:pg_query.JsonSerializeExpr.expr) return _msg; } inline void JsonSerializeExpr::set_allocated_expr(::pg_query::JsonValueExpr* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonValueExpr*>(_impl_.expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonValueExpr*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.expr_ = reinterpret_cast<::pg_query::JsonValueExpr*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonSerializeExpr.expr) } // .pg_query.JsonOutput output = 2 [json_name = "output"]; inline bool JsonSerializeExpr::has_output() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.output_ != nullptr); return value; } inline void JsonSerializeExpr::clear_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.output_ != nullptr) _impl_.output_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::JsonOutput& JsonSerializeExpr::_internal_output() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonOutput* p = _impl_.output_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonOutput_default_instance_); } inline const ::pg_query::JsonOutput& JsonSerializeExpr::output() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonSerializeExpr.output) return _internal_output(); } inline void JsonSerializeExpr::unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_); } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonSerializeExpr.output) } inline ::pg_query::JsonOutput* JsonSerializeExpr::release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonOutput* released = _impl_.output_; _impl_.output_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonOutput* JsonSerializeExpr::unsafe_arena_release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonSerializeExpr.output) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonOutput* temp = _impl_.output_; _impl_.output_ = nullptr; return temp; } inline ::pg_query::JsonOutput* JsonSerializeExpr::_internal_mutable_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.output_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonOutput>(GetArena()); _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(p); } return _impl_.output_; } inline ::pg_query::JsonOutput* JsonSerializeExpr::mutable_output() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonOutput* _msg = _internal_mutable_output(); // @@protoc_insertion_point(field_mutable:pg_query.JsonSerializeExpr.output) return _msg; } inline void JsonSerializeExpr::set_allocated_output(::pg_query::JsonOutput* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonOutput*>(_impl_.output_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonOutput*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonSerializeExpr.output) } // int32 location = 3 [json_name = "location"]; inline void JsonSerializeExpr::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonSerializeExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonSerializeExpr.location) return _internal_location(); } inline void JsonSerializeExpr::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonSerializeExpr.location) } inline ::int32_t JsonSerializeExpr::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonSerializeExpr::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonObjectConstructor // repeated .pg_query.Node exprs = 1 [json_name = "exprs"]; inline int JsonObjectConstructor::_internal_exprs_size() const { return _internal_exprs().size(); } inline int JsonObjectConstructor::exprs_size() const { return _internal_exprs_size(); } inline void JsonObjectConstructor::clear_exprs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.exprs_.Clear(); } inline ::pg_query::Node* JsonObjectConstructor::mutable_exprs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.JsonObjectConstructor.exprs) return _internal_mutable_exprs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonObjectConstructor::mutable_exprs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.JsonObjectConstructor.exprs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_exprs(); } inline const ::pg_query::Node& JsonObjectConstructor::exprs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonObjectConstructor.exprs) return _internal_exprs().Get(index); } inline ::pg_query::Node* JsonObjectConstructor::add_exprs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_exprs()->Add(); // @@protoc_insertion_point(field_add:pg_query.JsonObjectConstructor.exprs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonObjectConstructor::exprs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.JsonObjectConstructor.exprs) return _internal_exprs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonObjectConstructor::_internal_exprs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.exprs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonObjectConstructor::_internal_mutable_exprs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.exprs_; } // .pg_query.JsonOutput output = 2 [json_name = "output"]; inline bool JsonObjectConstructor::has_output() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.output_ != nullptr); return value; } inline void JsonObjectConstructor::clear_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.output_ != nullptr) _impl_.output_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::JsonOutput& JsonObjectConstructor::_internal_output() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonOutput* p = _impl_.output_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonOutput_default_instance_); } inline const ::pg_query::JsonOutput& JsonObjectConstructor::output() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonObjectConstructor.output) return _internal_output(); } inline void JsonObjectConstructor::unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_); } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonObjectConstructor.output) } inline ::pg_query::JsonOutput* JsonObjectConstructor::release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonOutput* released = _impl_.output_; _impl_.output_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonOutput* JsonObjectConstructor::unsafe_arena_release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonObjectConstructor.output) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonOutput* temp = _impl_.output_; _impl_.output_ = nullptr; return temp; } inline ::pg_query::JsonOutput* JsonObjectConstructor::_internal_mutable_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.output_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonOutput>(GetArena()); _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(p); } return _impl_.output_; } inline ::pg_query::JsonOutput* JsonObjectConstructor::mutable_output() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonOutput* _msg = _internal_mutable_output(); // @@protoc_insertion_point(field_mutable:pg_query.JsonObjectConstructor.output) return _msg; } inline void JsonObjectConstructor::set_allocated_output(::pg_query::JsonOutput* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonOutput*>(_impl_.output_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonOutput*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonObjectConstructor.output) } // bool absent_on_null = 3 [json_name = "absent_on_null"]; inline void JsonObjectConstructor::clear_absent_on_null() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.absent_on_null_ = false; } inline bool JsonObjectConstructor::absent_on_null() const { // @@protoc_insertion_point(field_get:pg_query.JsonObjectConstructor.absent_on_null) return _internal_absent_on_null(); } inline void JsonObjectConstructor::set_absent_on_null(bool value) { _internal_set_absent_on_null(value); // @@protoc_insertion_point(field_set:pg_query.JsonObjectConstructor.absent_on_null) } inline bool JsonObjectConstructor::_internal_absent_on_null() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.absent_on_null_; } inline void JsonObjectConstructor::_internal_set_absent_on_null(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.absent_on_null_ = value; } // bool unique = 4 [json_name = "unique"]; inline void JsonObjectConstructor::clear_unique() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.unique_ = false; } inline bool JsonObjectConstructor::unique() const { // @@protoc_insertion_point(field_get:pg_query.JsonObjectConstructor.unique) return _internal_unique(); } inline void JsonObjectConstructor::set_unique(bool value) { _internal_set_unique(value); // @@protoc_insertion_point(field_set:pg_query.JsonObjectConstructor.unique) } inline bool JsonObjectConstructor::_internal_unique() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.unique_; } inline void JsonObjectConstructor::_internal_set_unique(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.unique_ = value; } // int32 location = 5 [json_name = "location"]; inline void JsonObjectConstructor::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonObjectConstructor::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonObjectConstructor.location) return _internal_location(); } inline void JsonObjectConstructor::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonObjectConstructor.location) } inline ::int32_t JsonObjectConstructor::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonObjectConstructor::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonArrayConstructor // repeated .pg_query.Node exprs = 1 [json_name = "exprs"]; inline int JsonArrayConstructor::_internal_exprs_size() const { return _internal_exprs().size(); } inline int JsonArrayConstructor::exprs_size() const { return _internal_exprs_size(); } inline void JsonArrayConstructor::clear_exprs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.exprs_.Clear(); } inline ::pg_query::Node* JsonArrayConstructor::mutable_exprs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.JsonArrayConstructor.exprs) return _internal_mutable_exprs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonArrayConstructor::mutable_exprs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.JsonArrayConstructor.exprs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_exprs(); } inline const ::pg_query::Node& JsonArrayConstructor::exprs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonArrayConstructor.exprs) return _internal_exprs().Get(index); } inline ::pg_query::Node* JsonArrayConstructor::add_exprs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_exprs()->Add(); // @@protoc_insertion_point(field_add:pg_query.JsonArrayConstructor.exprs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonArrayConstructor::exprs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.JsonArrayConstructor.exprs) return _internal_exprs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonArrayConstructor::_internal_exprs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.exprs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonArrayConstructor::_internal_mutable_exprs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.exprs_; } // .pg_query.JsonOutput output = 2 [json_name = "output"]; inline bool JsonArrayConstructor::has_output() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.output_ != nullptr); return value; } inline void JsonArrayConstructor::clear_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.output_ != nullptr) _impl_.output_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::JsonOutput& JsonArrayConstructor::_internal_output() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonOutput* p = _impl_.output_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonOutput_default_instance_); } inline const ::pg_query::JsonOutput& JsonArrayConstructor::output() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonArrayConstructor.output) return _internal_output(); } inline void JsonArrayConstructor::unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_); } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonArrayConstructor.output) } inline ::pg_query::JsonOutput* JsonArrayConstructor::release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonOutput* released = _impl_.output_; _impl_.output_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonOutput* JsonArrayConstructor::unsafe_arena_release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonArrayConstructor.output) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonOutput* temp = _impl_.output_; _impl_.output_ = nullptr; return temp; } inline ::pg_query::JsonOutput* JsonArrayConstructor::_internal_mutable_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.output_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonOutput>(GetArena()); _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(p); } return _impl_.output_; } inline ::pg_query::JsonOutput* JsonArrayConstructor::mutable_output() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonOutput* _msg = _internal_mutable_output(); // @@protoc_insertion_point(field_mutable:pg_query.JsonArrayConstructor.output) return _msg; } inline void JsonArrayConstructor::set_allocated_output(::pg_query::JsonOutput* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonOutput*>(_impl_.output_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonOutput*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonArrayConstructor.output) } // bool absent_on_null = 3 [json_name = "absent_on_null"]; inline void JsonArrayConstructor::clear_absent_on_null() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.absent_on_null_ = false; } inline bool JsonArrayConstructor::absent_on_null() const { // @@protoc_insertion_point(field_get:pg_query.JsonArrayConstructor.absent_on_null) return _internal_absent_on_null(); } inline void JsonArrayConstructor::set_absent_on_null(bool value) { _internal_set_absent_on_null(value); // @@protoc_insertion_point(field_set:pg_query.JsonArrayConstructor.absent_on_null) } inline bool JsonArrayConstructor::_internal_absent_on_null() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.absent_on_null_; } inline void JsonArrayConstructor::_internal_set_absent_on_null(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.absent_on_null_ = value; } // int32 location = 4 [json_name = "location"]; inline void JsonArrayConstructor::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonArrayConstructor::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonArrayConstructor.location) return _internal_location(); } inline void JsonArrayConstructor::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonArrayConstructor.location) } inline ::int32_t JsonArrayConstructor::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonArrayConstructor::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonArrayQueryConstructor // .pg_query.Node query = 1 [json_name = "query"]; inline bool JsonArrayQueryConstructor::has_query() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.query_ != nullptr); return value; } inline void JsonArrayQueryConstructor::clear_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.query_ != nullptr) _impl_.query_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& JsonArrayQueryConstructor::_internal_query() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.query_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonArrayQueryConstructor::query() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonArrayQueryConstructor.query) return _internal_query(); } inline void JsonArrayQueryConstructor::unsafe_arena_set_allocated_query(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.query_); } _impl_.query_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonArrayQueryConstructor.query) } inline ::pg_query::Node* JsonArrayQueryConstructor::release_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.query_; _impl_.query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonArrayQueryConstructor::unsafe_arena_release_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonArrayQueryConstructor.query) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; return temp; } inline ::pg_query::Node* JsonArrayQueryConstructor::_internal_mutable_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.query_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.query_; } inline ::pg_query::Node* JsonArrayQueryConstructor::mutable_query() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_query(); // @@protoc_insertion_point(field_mutable:pg_query.JsonArrayQueryConstructor.query) return _msg; } inline void JsonArrayQueryConstructor::set_allocated_query(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.query_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.query_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonArrayQueryConstructor.query) } // .pg_query.JsonOutput output = 2 [json_name = "output"]; inline bool JsonArrayQueryConstructor::has_output() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.output_ != nullptr); return value; } inline void JsonArrayQueryConstructor::clear_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.output_ != nullptr) _impl_.output_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::JsonOutput& JsonArrayQueryConstructor::_internal_output() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonOutput* p = _impl_.output_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonOutput_default_instance_); } inline const ::pg_query::JsonOutput& JsonArrayQueryConstructor::output() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonArrayQueryConstructor.output) return _internal_output(); } inline void JsonArrayQueryConstructor::unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_); } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonArrayQueryConstructor.output) } inline ::pg_query::JsonOutput* JsonArrayQueryConstructor::release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonOutput* released = _impl_.output_; _impl_.output_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonOutput* JsonArrayQueryConstructor::unsafe_arena_release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonArrayQueryConstructor.output) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonOutput* temp = _impl_.output_; _impl_.output_ = nullptr; return temp; } inline ::pg_query::JsonOutput* JsonArrayQueryConstructor::_internal_mutable_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.output_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonOutput>(GetArena()); _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(p); } return _impl_.output_; } inline ::pg_query::JsonOutput* JsonArrayQueryConstructor::mutable_output() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonOutput* _msg = _internal_mutable_output(); // @@protoc_insertion_point(field_mutable:pg_query.JsonArrayQueryConstructor.output) return _msg; } inline void JsonArrayQueryConstructor::set_allocated_output(::pg_query::JsonOutput* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonOutput*>(_impl_.output_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonOutput*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonArrayQueryConstructor.output) } // .pg_query.JsonFormat format = 3 [json_name = "format"]; inline bool JsonArrayQueryConstructor::has_format() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.format_ != nullptr); return value; } inline void JsonArrayQueryConstructor::clear_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.format_ != nullptr) _impl_.format_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::JsonFormat& JsonArrayQueryConstructor::_internal_format() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonFormat* p = _impl_.format_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonFormat_default_instance_); } inline const ::pg_query::JsonFormat& JsonArrayQueryConstructor::format() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonArrayQueryConstructor.format) return _internal_format(); } inline void JsonArrayQueryConstructor::unsafe_arena_set_allocated_format(::pg_query::JsonFormat* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.format_); } _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonArrayQueryConstructor.format) } inline ::pg_query::JsonFormat* JsonArrayQueryConstructor::release_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::JsonFormat* released = _impl_.format_; _impl_.format_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonFormat* JsonArrayQueryConstructor::unsafe_arena_release_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonArrayQueryConstructor.format) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::JsonFormat* temp = _impl_.format_; _impl_.format_ = nullptr; return temp; } inline ::pg_query::JsonFormat* JsonArrayQueryConstructor::_internal_mutable_format() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.format_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonFormat>(GetArena()); _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(p); } return _impl_.format_; } inline ::pg_query::JsonFormat* JsonArrayQueryConstructor::mutable_format() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonFormat* _msg = _internal_mutable_format(); // @@protoc_insertion_point(field_mutable:pg_query.JsonArrayQueryConstructor.format) return _msg; } inline void JsonArrayQueryConstructor::set_allocated_format(::pg_query::JsonFormat* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonFormat*>(_impl_.format_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonFormat*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.format_ = reinterpret_cast<::pg_query::JsonFormat*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonArrayQueryConstructor.format) } // bool absent_on_null = 4 [json_name = "absent_on_null"]; inline void JsonArrayQueryConstructor::clear_absent_on_null() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.absent_on_null_ = false; } inline bool JsonArrayQueryConstructor::absent_on_null() const { // @@protoc_insertion_point(field_get:pg_query.JsonArrayQueryConstructor.absent_on_null) return _internal_absent_on_null(); } inline void JsonArrayQueryConstructor::set_absent_on_null(bool value) { _internal_set_absent_on_null(value); // @@protoc_insertion_point(field_set:pg_query.JsonArrayQueryConstructor.absent_on_null) } inline bool JsonArrayQueryConstructor::_internal_absent_on_null() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.absent_on_null_; } inline void JsonArrayQueryConstructor::_internal_set_absent_on_null(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.absent_on_null_ = value; } // int32 location = 5 [json_name = "location"]; inline void JsonArrayQueryConstructor::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonArrayQueryConstructor::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonArrayQueryConstructor.location) return _internal_location(); } inline void JsonArrayQueryConstructor::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonArrayQueryConstructor.location) } inline ::int32_t JsonArrayQueryConstructor::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonArrayQueryConstructor::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonAggConstructor // .pg_query.JsonOutput output = 1 [json_name = "output"]; inline bool JsonAggConstructor::has_output() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.output_ != nullptr); return value; } inline void JsonAggConstructor::clear_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.output_ != nullptr) _impl_.output_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::JsonOutput& JsonAggConstructor::_internal_output() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonOutput* p = _impl_.output_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonOutput_default_instance_); } inline const ::pg_query::JsonOutput& JsonAggConstructor::output() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonAggConstructor.output) return _internal_output(); } inline void JsonAggConstructor::unsafe_arena_set_allocated_output(::pg_query::JsonOutput* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_); } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonAggConstructor.output) } inline ::pg_query::JsonOutput* JsonAggConstructor::release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonOutput* released = _impl_.output_; _impl_.output_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonOutput* JsonAggConstructor::unsafe_arena_release_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonAggConstructor.output) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonOutput* temp = _impl_.output_; _impl_.output_ = nullptr; return temp; } inline ::pg_query::JsonOutput* JsonAggConstructor::_internal_mutable_output() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.output_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonOutput>(GetArena()); _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(p); } return _impl_.output_; } inline ::pg_query::JsonOutput* JsonAggConstructor::mutable_output() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonOutput* _msg = _internal_mutable_output(); // @@protoc_insertion_point(field_mutable:pg_query.JsonAggConstructor.output) return _msg; } inline void JsonAggConstructor::set_allocated_output(::pg_query::JsonOutput* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonOutput*>(_impl_.output_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonOutput*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.output_ = reinterpret_cast<::pg_query::JsonOutput*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonAggConstructor.output) } // .pg_query.Node agg_filter = 2 [json_name = "agg_filter"]; inline bool JsonAggConstructor::has_agg_filter() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.agg_filter_ != nullptr); return value; } inline void JsonAggConstructor::clear_agg_filter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.agg_filter_ != nullptr) _impl_.agg_filter_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& JsonAggConstructor::_internal_agg_filter() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.agg_filter_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JsonAggConstructor::agg_filter() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonAggConstructor.agg_filter) return _internal_agg_filter(); } inline void JsonAggConstructor::unsafe_arena_set_allocated_agg_filter(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.agg_filter_); } _impl_.agg_filter_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonAggConstructor.agg_filter) } inline ::pg_query::Node* JsonAggConstructor::release_agg_filter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.agg_filter_; _impl_.agg_filter_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* JsonAggConstructor::unsafe_arena_release_agg_filter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonAggConstructor.agg_filter) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.agg_filter_; _impl_.agg_filter_ = nullptr; return temp; } inline ::pg_query::Node* JsonAggConstructor::_internal_mutable_agg_filter() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.agg_filter_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.agg_filter_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.agg_filter_; } inline ::pg_query::Node* JsonAggConstructor::mutable_agg_filter() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_agg_filter(); // @@protoc_insertion_point(field_mutable:pg_query.JsonAggConstructor.agg_filter) return _msg; } inline void JsonAggConstructor::set_allocated_agg_filter(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.agg_filter_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.agg_filter_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonAggConstructor.agg_filter) } // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; inline int JsonAggConstructor::_internal_agg_order_size() const { return _internal_agg_order().size(); } inline int JsonAggConstructor::agg_order_size() const { return _internal_agg_order_size(); } inline void JsonAggConstructor::clear_agg_order() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.agg_order_.Clear(); } inline ::pg_query::Node* JsonAggConstructor::mutable_agg_order(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.JsonAggConstructor.agg_order) return _internal_mutable_agg_order()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonAggConstructor::mutable_agg_order() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.JsonAggConstructor.agg_order) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_agg_order(); } inline const ::pg_query::Node& JsonAggConstructor::agg_order(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonAggConstructor.agg_order) return _internal_agg_order().Get(index); } inline ::pg_query::Node* JsonAggConstructor::add_agg_order() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_agg_order()->Add(); // @@protoc_insertion_point(field_add:pg_query.JsonAggConstructor.agg_order) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonAggConstructor::agg_order() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.JsonAggConstructor.agg_order) return _internal_agg_order(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& JsonAggConstructor::_internal_agg_order() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.agg_order_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* JsonAggConstructor::_internal_mutable_agg_order() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.agg_order_; } // .pg_query.WindowDef over = 4 [json_name = "over"]; inline bool JsonAggConstructor::has_over() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.over_ != nullptr); return value; } inline void JsonAggConstructor::clear_over() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.over_ != nullptr) _impl_.over_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::WindowDef& JsonAggConstructor::_internal_over() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::WindowDef* p = _impl_.over_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_WindowDef_default_instance_); } inline const ::pg_query::WindowDef& JsonAggConstructor::over() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonAggConstructor.over) return _internal_over(); } inline void JsonAggConstructor::unsafe_arena_set_allocated_over(::pg_query::WindowDef* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.over_); } _impl_.over_ = reinterpret_cast<::pg_query::WindowDef*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonAggConstructor.over) } inline ::pg_query::WindowDef* JsonAggConstructor::release_over() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::WindowDef* released = _impl_.over_; _impl_.over_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::WindowDef* JsonAggConstructor::unsafe_arena_release_over() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonAggConstructor.over) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::WindowDef* temp = _impl_.over_; _impl_.over_ = nullptr; return temp; } inline ::pg_query::WindowDef* JsonAggConstructor::_internal_mutable_over() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.over_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WindowDef>(GetArena()); _impl_.over_ = reinterpret_cast<::pg_query::WindowDef*>(p); } return _impl_.over_; } inline ::pg_query::WindowDef* JsonAggConstructor::mutable_over() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::WindowDef* _msg = _internal_mutable_over(); // @@protoc_insertion_point(field_mutable:pg_query.JsonAggConstructor.over) return _msg; } inline void JsonAggConstructor::set_allocated_over(::pg_query::WindowDef* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::WindowDef*>(_impl_.over_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::WindowDef*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.over_ = reinterpret_cast<::pg_query::WindowDef*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonAggConstructor.over) } // int32 location = 5 [json_name = "location"]; inline void JsonAggConstructor::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t JsonAggConstructor::location() const { // @@protoc_insertion_point(field_get:pg_query.JsonAggConstructor.location) return _internal_location(); } inline void JsonAggConstructor::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.JsonAggConstructor.location) } inline ::int32_t JsonAggConstructor::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void JsonAggConstructor::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // JsonObjectAgg // .pg_query.JsonAggConstructor constructor = 1 [json_name = "constructor"]; inline bool JsonObjectAgg::has_constructor() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.constructor_ != nullptr); return value; } inline void JsonObjectAgg::clear_constructor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.constructor_ != nullptr) _impl_.constructor_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::JsonAggConstructor& JsonObjectAgg::_internal_constructor() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonAggConstructor* p = _impl_.constructor_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonAggConstructor_default_instance_); } inline const ::pg_query::JsonAggConstructor& JsonObjectAgg::constructor() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonObjectAgg.constructor) return _internal_constructor(); } inline void JsonObjectAgg::unsafe_arena_set_allocated_constructor(::pg_query::JsonAggConstructor* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.constructor_); } _impl_.constructor_ = reinterpret_cast<::pg_query::JsonAggConstructor*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonObjectAgg.constructor) } inline ::pg_query::JsonAggConstructor* JsonObjectAgg::release_constructor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonAggConstructor* released = _impl_.constructor_; _impl_.constructor_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonAggConstructor* JsonObjectAgg::unsafe_arena_release_constructor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonObjectAgg.constructor) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonAggConstructor* temp = _impl_.constructor_; _impl_.constructor_ = nullptr; return temp; } inline ::pg_query::JsonAggConstructor* JsonObjectAgg::_internal_mutable_constructor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.constructor_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonAggConstructor>(GetArena()); _impl_.constructor_ = reinterpret_cast<::pg_query::JsonAggConstructor*>(p); } return _impl_.constructor_; } inline ::pg_query::JsonAggConstructor* JsonObjectAgg::mutable_constructor() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonAggConstructor* _msg = _internal_mutable_constructor(); // @@protoc_insertion_point(field_mutable:pg_query.JsonObjectAgg.constructor) return _msg; } inline void JsonObjectAgg::set_allocated_constructor(::pg_query::JsonAggConstructor* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonAggConstructor*>(_impl_.constructor_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonAggConstructor*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.constructor_ = reinterpret_cast<::pg_query::JsonAggConstructor*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonObjectAgg.constructor) } // .pg_query.JsonKeyValue arg = 2 [json_name = "arg"]; inline bool JsonObjectAgg::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void JsonObjectAgg::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::JsonKeyValue& JsonObjectAgg::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonKeyValue* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonKeyValue_default_instance_); } inline const ::pg_query::JsonKeyValue& JsonObjectAgg::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonObjectAgg.arg) return _internal_arg(); } inline void JsonObjectAgg::unsafe_arena_set_allocated_arg(::pg_query::JsonKeyValue* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::JsonKeyValue*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonObjectAgg.arg) } inline ::pg_query::JsonKeyValue* JsonObjectAgg::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonKeyValue* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonKeyValue* JsonObjectAgg::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonObjectAgg.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonKeyValue* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::JsonKeyValue* JsonObjectAgg::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonKeyValue>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::JsonKeyValue*>(p); } return _impl_.arg_; } inline ::pg_query::JsonKeyValue* JsonObjectAgg::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonKeyValue* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.JsonObjectAgg.arg) return _msg; } inline void JsonObjectAgg::set_allocated_arg(::pg_query::JsonKeyValue* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonKeyValue*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonKeyValue*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::JsonKeyValue*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonObjectAgg.arg) } // bool absent_on_null = 3 [json_name = "absent_on_null"]; inline void JsonObjectAgg::clear_absent_on_null() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.absent_on_null_ = false; } inline bool JsonObjectAgg::absent_on_null() const { // @@protoc_insertion_point(field_get:pg_query.JsonObjectAgg.absent_on_null) return _internal_absent_on_null(); } inline void JsonObjectAgg::set_absent_on_null(bool value) { _internal_set_absent_on_null(value); // @@protoc_insertion_point(field_set:pg_query.JsonObjectAgg.absent_on_null) } inline bool JsonObjectAgg::_internal_absent_on_null() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.absent_on_null_; } inline void JsonObjectAgg::_internal_set_absent_on_null(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.absent_on_null_ = value; } // bool unique = 4 [json_name = "unique"]; inline void JsonObjectAgg::clear_unique() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.unique_ = false; } inline bool JsonObjectAgg::unique() const { // @@protoc_insertion_point(field_get:pg_query.JsonObjectAgg.unique) return _internal_unique(); } inline void JsonObjectAgg::set_unique(bool value) { _internal_set_unique(value); // @@protoc_insertion_point(field_set:pg_query.JsonObjectAgg.unique) } inline bool JsonObjectAgg::_internal_unique() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.unique_; } inline void JsonObjectAgg::_internal_set_unique(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.unique_ = value; } // ------------------------------------------------------------------- // JsonArrayAgg // .pg_query.JsonAggConstructor constructor = 1 [json_name = "constructor"]; inline bool JsonArrayAgg::has_constructor() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.constructor_ != nullptr); return value; } inline void JsonArrayAgg::clear_constructor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.constructor_ != nullptr) _impl_.constructor_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::JsonAggConstructor& JsonArrayAgg::_internal_constructor() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonAggConstructor* p = _impl_.constructor_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonAggConstructor_default_instance_); } inline const ::pg_query::JsonAggConstructor& JsonArrayAgg::constructor() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonArrayAgg.constructor) return _internal_constructor(); } inline void JsonArrayAgg::unsafe_arena_set_allocated_constructor(::pg_query::JsonAggConstructor* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.constructor_); } _impl_.constructor_ = reinterpret_cast<::pg_query::JsonAggConstructor*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonArrayAgg.constructor) } inline ::pg_query::JsonAggConstructor* JsonArrayAgg::release_constructor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonAggConstructor* released = _impl_.constructor_; _impl_.constructor_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonAggConstructor* JsonArrayAgg::unsafe_arena_release_constructor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonArrayAgg.constructor) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::JsonAggConstructor* temp = _impl_.constructor_; _impl_.constructor_ = nullptr; return temp; } inline ::pg_query::JsonAggConstructor* JsonArrayAgg::_internal_mutable_constructor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.constructor_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonAggConstructor>(GetArena()); _impl_.constructor_ = reinterpret_cast<::pg_query::JsonAggConstructor*>(p); } return _impl_.constructor_; } inline ::pg_query::JsonAggConstructor* JsonArrayAgg::mutable_constructor() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonAggConstructor* _msg = _internal_mutable_constructor(); // @@protoc_insertion_point(field_mutable:pg_query.JsonArrayAgg.constructor) return _msg; } inline void JsonArrayAgg::set_allocated_constructor(::pg_query::JsonAggConstructor* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonAggConstructor*>(_impl_.constructor_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonAggConstructor*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.constructor_ = reinterpret_cast<::pg_query::JsonAggConstructor*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonArrayAgg.constructor) } // .pg_query.JsonValueExpr arg = 2 [json_name = "arg"]; inline bool JsonArrayAgg::has_arg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_ != nullptr); return value; } inline void JsonArrayAgg::clear_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_ != nullptr) _impl_.arg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::JsonValueExpr& JsonArrayAgg::_internal_arg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::JsonValueExpr* p = _impl_.arg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_JsonValueExpr_default_instance_); } inline const ::pg_query::JsonValueExpr& JsonArrayAgg::arg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.JsonArrayAgg.arg) return _internal_arg(); } inline void JsonArrayAgg::unsafe_arena_set_allocated_arg(::pg_query::JsonValueExpr* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_); } _impl_.arg_ = reinterpret_cast<::pg_query::JsonValueExpr*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JsonArrayAgg.arg) } inline ::pg_query::JsonValueExpr* JsonArrayAgg::release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonValueExpr* released = _impl_.arg_; _impl_.arg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::JsonValueExpr* JsonArrayAgg::unsafe_arena_release_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.JsonArrayAgg.arg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::JsonValueExpr* temp = _impl_.arg_; _impl_.arg_ = nullptr; return temp; } inline ::pg_query::JsonValueExpr* JsonArrayAgg::_internal_mutable_arg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::JsonValueExpr>(GetArena()); _impl_.arg_ = reinterpret_cast<::pg_query::JsonValueExpr*>(p); } return _impl_.arg_; } inline ::pg_query::JsonValueExpr* JsonArrayAgg::mutable_arg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::JsonValueExpr* _msg = _internal_mutable_arg(); // @@protoc_insertion_point(field_mutable:pg_query.JsonArrayAgg.arg) return _msg; } inline void JsonArrayAgg::set_allocated_arg(::pg_query::JsonValueExpr* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::JsonValueExpr*>(_impl_.arg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::JsonValueExpr*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.arg_ = reinterpret_cast<::pg_query::JsonValueExpr*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.JsonArrayAgg.arg) } // bool absent_on_null = 3 [json_name = "absent_on_null"]; inline void JsonArrayAgg::clear_absent_on_null() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.absent_on_null_ = false; } inline bool JsonArrayAgg::absent_on_null() const { // @@protoc_insertion_point(field_get:pg_query.JsonArrayAgg.absent_on_null) return _internal_absent_on_null(); } inline void JsonArrayAgg::set_absent_on_null(bool value) { _internal_set_absent_on_null(value); // @@protoc_insertion_point(field_set:pg_query.JsonArrayAgg.absent_on_null) } inline bool JsonArrayAgg::_internal_absent_on_null() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.absent_on_null_; } inline void JsonArrayAgg::_internal_set_absent_on_null(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.absent_on_null_ = value; } // ------------------------------------------------------------------- // RawStmt // .pg_query.Node stmt = 1 [json_name = "stmt"]; inline bool RawStmt::has_stmt() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.stmt_ != nullptr); return value; } inline void RawStmt::clear_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.stmt_ != nullptr) _impl_.stmt_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& RawStmt::_internal_stmt() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.stmt_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RawStmt::stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RawStmt.stmt) return _internal_stmt(); } inline void RawStmt::unsafe_arena_set_allocated_stmt(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.stmt_); } _impl_.stmt_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RawStmt.stmt) } inline ::pg_query::Node* RawStmt::release_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.stmt_; _impl_.stmt_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RawStmt::unsafe_arena_release_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RawStmt.stmt) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.stmt_; _impl_.stmt_ = nullptr; return temp; } inline ::pg_query::Node* RawStmt::_internal_mutable_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.stmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.stmt_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.stmt_; } inline ::pg_query::Node* RawStmt::mutable_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.RawStmt.stmt) return _msg; } inline void RawStmt::set_allocated_stmt(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.stmt_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.stmt_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RawStmt.stmt) } // int32 stmt_location = 2 [json_name = "stmt_location"]; inline void RawStmt::clear_stmt_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.stmt_location_ = 0; } inline ::int32_t RawStmt::stmt_location() const { // @@protoc_insertion_point(field_get:pg_query.RawStmt.stmt_location) return _internal_stmt_location(); } inline void RawStmt::set_stmt_location(::int32_t value) { _internal_set_stmt_location(value); // @@protoc_insertion_point(field_set:pg_query.RawStmt.stmt_location) } inline ::int32_t RawStmt::_internal_stmt_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.stmt_location_; } inline void RawStmt::_internal_set_stmt_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.stmt_location_ = value; } // int32 stmt_len = 3 [json_name = "stmt_len"]; inline void RawStmt::clear_stmt_len() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.stmt_len_ = 0; } inline ::int32_t RawStmt::stmt_len() const { // @@protoc_insertion_point(field_get:pg_query.RawStmt.stmt_len) return _internal_stmt_len(); } inline void RawStmt::set_stmt_len(::int32_t value) { _internal_set_stmt_len(value); // @@protoc_insertion_point(field_set:pg_query.RawStmt.stmt_len) } inline ::int32_t RawStmt::_internal_stmt_len() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.stmt_len_; } inline void RawStmt::_internal_set_stmt_len(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.stmt_len_ = value; } // ------------------------------------------------------------------- // InsertStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool InsertStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void InsertStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& InsertStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& InsertStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.relation) return _internal_relation(); } inline void InsertStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.relation) } inline ::pg_query::RangeVar* InsertStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* InsertStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.InsertStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* InsertStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* InsertStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.relation) return _msg; } inline void InsertStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@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 _internal_cols().size(); } inline int InsertStmt::cols_size() const { return _internal_cols_size(); } inline void InsertStmt::clear_cols() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cols_.Clear(); } inline ::pg_query::Node* InsertStmt::mutable_cols(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.cols) return _internal_mutable_cols()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* InsertStmt::mutable_cols() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.InsertStmt.cols) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_cols(); } inline const ::pg_query::Node& InsertStmt::cols(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.cols) return _internal_cols().Get(index); } inline ::pg_query::Node* InsertStmt::add_cols() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_cols()->Add(); // @@protoc_insertion_point(field_add:pg_query.InsertStmt.cols) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& InsertStmt::cols() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.InsertStmt.cols) return _internal_cols(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& InsertStmt::_internal_cols() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cols_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* InsertStmt::_internal_mutable_cols() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.cols_; } // .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; inline bool InsertStmt::has_select_stmt() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.select_stmt_ != nullptr); return value; } inline void InsertStmt::clear_select_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.select_stmt_ != nullptr) _impl_.select_stmt_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& InsertStmt::_internal_select_stmt() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.select_stmt_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& InsertStmt::select_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.select_stmt_); } _impl_.select_stmt_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.select_stmt) } inline ::pg_query::Node* InsertStmt::release_select_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.select_stmt_; _impl_.select_stmt_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* InsertStmt::unsafe_arena_release_select_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.InsertStmt.select_stmt) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.select_stmt_; _impl_.select_stmt_ = nullptr; return temp; } inline ::pg_query::Node* InsertStmt::_internal_mutable_select_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.select_stmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.select_stmt_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.select_stmt_; } inline ::pg_query::Node* InsertStmt::mutable_select_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_select_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.select_stmt) return _msg; } inline void InsertStmt::set_allocated_select_stmt(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.select_stmt_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.select_stmt_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.InsertStmt.select_stmt) } // .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; inline bool InsertStmt::has_on_conflict_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.on_conflict_clause_ != nullptr); return value; } inline void InsertStmt::clear_on_conflict_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.on_conflict_clause_ != nullptr) _impl_.on_conflict_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::OnConflictClause& InsertStmt::_internal_on_conflict_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::OnConflictClause* p = _impl_.on_conflict_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_OnConflictClause_default_instance_); } inline const ::pg_query::OnConflictClause& InsertStmt::on_conflict_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.on_conflict_clause_); } _impl_.on_conflict_clause_ = reinterpret_cast<::pg_query::OnConflictClause*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.on_conflict_clause) } inline ::pg_query::OnConflictClause* InsertStmt::release_on_conflict_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::OnConflictClause* released = _impl_.on_conflict_clause_; _impl_.on_conflict_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::OnConflictClause* InsertStmt::unsafe_arena_release_on_conflict_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.InsertStmt.on_conflict_clause) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::OnConflictClause* temp = _impl_.on_conflict_clause_; _impl_.on_conflict_clause_ = nullptr; return temp; } inline ::pg_query::OnConflictClause* InsertStmt::_internal_mutable_on_conflict_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.on_conflict_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::OnConflictClause>(GetArena()); _impl_.on_conflict_clause_ = reinterpret_cast<::pg_query::OnConflictClause*>(p); } return _impl_.on_conflict_clause_; } inline ::pg_query::OnConflictClause* InsertStmt::mutable_on_conflict_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::OnConflictClause* _msg = _internal_mutable_on_conflict_clause(); // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.on_conflict_clause) return _msg; } inline void InsertStmt::set_allocated_on_conflict_clause(::pg_query::OnConflictClause* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::OnConflictClause*>(_impl_.on_conflict_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::OnConflictClause*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.on_conflict_clause_ = reinterpret_cast<::pg_query::OnConflictClause*>(value); // @@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 _internal_returning_list().size(); } inline int InsertStmt::returning_list_size() const { return _internal_returning_list_size(); } inline void InsertStmt::clear_returning_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.returning_list_.Clear(); } inline ::pg_query::Node* InsertStmt::mutable_returning_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.returning_list) return _internal_mutable_returning_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* InsertStmt::mutable_returning_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.InsertStmt.returning_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_returning_list(); } inline const ::pg_query::Node& InsertStmt::returning_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.returning_list) return _internal_returning_list().Get(index); } inline ::pg_query::Node* InsertStmt::add_returning_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_returning_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.InsertStmt.returning_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& InsertStmt::returning_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.InsertStmt.returning_list) return _internal_returning_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& InsertStmt::_internal_returning_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.returning_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* InsertStmt::_internal_mutable_returning_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.returning_list_; } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; inline bool InsertStmt::has_with_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0; PROTOBUF_ASSUME(!value || _impl_.with_clause_ != nullptr); return value; } inline void InsertStmt::clear_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.with_clause_ != nullptr) _impl_.with_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000008u; } inline const ::pg_query::WithClause& InsertStmt::_internal_with_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::WithClause* p = _impl_.with_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_WithClause_default_instance_); } inline const ::pg_query::WithClause& InsertStmt::with_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.with_clause_); } _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.with_clause) } inline ::pg_query::WithClause* InsertStmt::release_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::WithClause* released = _impl_.with_clause_; _impl_.with_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::WithClause* InsertStmt::unsafe_arena_release_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.InsertStmt.with_clause) _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; return temp; } inline ::pg_query::WithClause* InsertStmt::_internal_mutable_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000008u; if (_impl_.with_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArena()); _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(p); } return _impl_.with_clause_; } inline ::pg_query::WithClause* InsertStmt::mutable_with_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::WithClause* _msg = _internal_mutable_with_clause(); // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.with_clause) return _msg; } inline void InsertStmt::set_allocated_with_clause(::pg_query::WithClause* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::WithClause*>(_impl_.with_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::WithClause*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.InsertStmt.with_clause) } // .pg_query.OverridingKind override = 7 [json_name = "override"]; inline void InsertStmt::clear_override() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.override_ = 0; } inline ::pg_query::OverridingKind InsertStmt::override() const { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.override) return _internal_override(); } inline void InsertStmt::set_override(::pg_query::OverridingKind value) { _internal_set_override(value); // @@protoc_insertion_point(field_set:pg_query.InsertStmt.override) } inline ::pg_query::OverridingKind InsertStmt::_internal_override() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::OverridingKind>(_impl_.override_); } inline void InsertStmt::_internal_set_override(::pg_query::OverridingKind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.override_ = value; } // ------------------------------------------------------------------- // DeleteStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool DeleteStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void DeleteStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& DeleteStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& DeleteStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.relation) return _internal_relation(); } inline void DeleteStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeleteStmt.relation) } inline ::pg_query::RangeVar* DeleteStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* DeleteStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DeleteStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* DeleteStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* DeleteStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.relation) return _msg; } inline void DeleteStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@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 _internal_using_clause().size(); } inline int DeleteStmt::using_clause_size() const { return _internal_using_clause_size(); } inline void DeleteStmt::clear_using_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.using_clause_.Clear(); } inline ::pg_query::Node* DeleteStmt::mutable_using_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.using_clause) return _internal_mutable_using_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DeleteStmt::mutable_using_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.DeleteStmt.using_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_using_clause(); } inline const ::pg_query::Node& DeleteStmt::using_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.using_clause) return _internal_using_clause().Get(index); } inline ::pg_query::Node* DeleteStmt::add_using_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_using_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.DeleteStmt.using_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DeleteStmt::using_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.DeleteStmt.using_clause) return _internal_using_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DeleteStmt::_internal_using_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.using_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DeleteStmt::_internal_mutable_using_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.using_clause_; } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; inline bool DeleteStmt::has_where_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.where_clause_ != nullptr); return value; } inline void DeleteStmt::clear_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.where_clause_ != nullptr) _impl_.where_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& DeleteStmt::_internal_where_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.where_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& DeleteStmt::where_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeleteStmt.where_clause) } inline ::pg_query::Node* DeleteStmt::release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* DeleteStmt::unsafe_arena_release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DeleteStmt.where_clause) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* DeleteStmt::_internal_mutable_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.where_clause_; } inline ::pg_query::Node* DeleteStmt::mutable_where_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_where_clause(); // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.where_clause) return _msg; } inline void DeleteStmt::set_allocated_where_clause(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.where_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_returning_list().size(); } inline int DeleteStmt::returning_list_size() const { return _internal_returning_list_size(); } inline void DeleteStmt::clear_returning_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.returning_list_.Clear(); } inline ::pg_query::Node* DeleteStmt::mutable_returning_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.returning_list) return _internal_mutable_returning_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DeleteStmt::mutable_returning_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.DeleteStmt.returning_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_returning_list(); } inline const ::pg_query::Node& DeleteStmt::returning_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.returning_list) return _internal_returning_list().Get(index); } inline ::pg_query::Node* DeleteStmt::add_returning_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_returning_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.DeleteStmt.returning_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DeleteStmt::returning_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.DeleteStmt.returning_list) return _internal_returning_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DeleteStmt::_internal_returning_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.returning_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DeleteStmt::_internal_mutable_returning_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.returning_list_; } // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; inline bool DeleteStmt::has_with_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.with_clause_ != nullptr); return value; } inline void DeleteStmt::clear_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.with_clause_ != nullptr) _impl_.with_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::WithClause& DeleteStmt::_internal_with_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::WithClause* p = _impl_.with_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_WithClause_default_instance_); } inline const ::pg_query::WithClause& DeleteStmt::with_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.with_clause_); } _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeleteStmt.with_clause) } inline ::pg_query::WithClause* DeleteStmt::release_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::WithClause* released = _impl_.with_clause_; _impl_.with_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::WithClause* DeleteStmt::unsafe_arena_release_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DeleteStmt.with_clause) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; return temp; } inline ::pg_query::WithClause* DeleteStmt::_internal_mutable_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.with_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArena()); _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(p); } return _impl_.with_clause_; } inline ::pg_query::WithClause* DeleteStmt::mutable_with_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::WithClause* _msg = _internal_mutable_with_clause(); // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.with_clause) return _msg; } inline void DeleteStmt::set_allocated_with_clause(::pg_query::WithClause* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::WithClause*>(_impl_.with_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::WithClause*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.DeleteStmt.with_clause) } // ------------------------------------------------------------------- // UpdateStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool UpdateStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void UpdateStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& UpdateStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& UpdateStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.relation) return _internal_relation(); } inline void UpdateStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.UpdateStmt.relation) } inline ::pg_query::RangeVar* UpdateStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* UpdateStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.UpdateStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* UpdateStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* UpdateStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.relation) return _msg; } inline void UpdateStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@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 _internal_target_list().size(); } inline int UpdateStmt::target_list_size() const { return _internal_target_list_size(); } inline void UpdateStmt::clear_target_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.target_list_.Clear(); } inline ::pg_query::Node* UpdateStmt::mutable_target_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.target_list) return _internal_mutable_target_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* UpdateStmt::mutable_target_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.UpdateStmt.target_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_target_list(); } inline const ::pg_query::Node& UpdateStmt::target_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.target_list) return _internal_target_list().Get(index); } inline ::pg_query::Node* UpdateStmt::add_target_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_target_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.UpdateStmt.target_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& UpdateStmt::target_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.UpdateStmt.target_list) return _internal_target_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& UpdateStmt::_internal_target_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.target_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* UpdateStmt::_internal_mutable_target_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.target_list_; } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; inline bool UpdateStmt::has_where_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.where_clause_ != nullptr); return value; } inline void UpdateStmt::clear_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.where_clause_ != nullptr) _impl_.where_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& UpdateStmt::_internal_where_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.where_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& UpdateStmt::where_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.UpdateStmt.where_clause) } inline ::pg_query::Node* UpdateStmt::release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* UpdateStmt::unsafe_arena_release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.UpdateStmt.where_clause) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* UpdateStmt::_internal_mutable_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.where_clause_; } inline ::pg_query::Node* UpdateStmt::mutable_where_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_where_clause(); // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.where_clause) return _msg; } inline void UpdateStmt::set_allocated_where_clause(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.where_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_from_clause().size(); } inline int UpdateStmt::from_clause_size() const { return _internal_from_clause_size(); } inline void UpdateStmt::clear_from_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.from_clause_.Clear(); } inline ::pg_query::Node* UpdateStmt::mutable_from_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.from_clause) return _internal_mutable_from_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* UpdateStmt::mutable_from_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.UpdateStmt.from_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_from_clause(); } inline const ::pg_query::Node& UpdateStmt::from_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.from_clause) return _internal_from_clause().Get(index); } inline ::pg_query::Node* UpdateStmt::add_from_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_from_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.UpdateStmt.from_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& UpdateStmt::from_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.UpdateStmt.from_clause) return _internal_from_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& UpdateStmt::_internal_from_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.from_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* UpdateStmt::_internal_mutable_from_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.from_clause_; } // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; inline int UpdateStmt::_internal_returning_list_size() const { return _internal_returning_list().size(); } inline int UpdateStmt::returning_list_size() const { return _internal_returning_list_size(); } inline void UpdateStmt::clear_returning_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.returning_list_.Clear(); } inline ::pg_query::Node* UpdateStmt::mutable_returning_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.returning_list) return _internal_mutable_returning_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* UpdateStmt::mutable_returning_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.UpdateStmt.returning_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_returning_list(); } inline const ::pg_query::Node& UpdateStmt::returning_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.returning_list) return _internal_returning_list().Get(index); } inline ::pg_query::Node* UpdateStmt::add_returning_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_returning_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.UpdateStmt.returning_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& UpdateStmt::returning_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.UpdateStmt.returning_list) return _internal_returning_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& UpdateStmt::_internal_returning_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.returning_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* UpdateStmt::_internal_mutable_returning_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.returning_list_; } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; inline bool UpdateStmt::has_with_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.with_clause_ != nullptr); return value; } inline void UpdateStmt::clear_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.with_clause_ != nullptr) _impl_.with_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::WithClause& UpdateStmt::_internal_with_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::WithClause* p = _impl_.with_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_WithClause_default_instance_); } inline const ::pg_query::WithClause& UpdateStmt::with_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.with_clause_); } _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.UpdateStmt.with_clause) } inline ::pg_query::WithClause* UpdateStmt::release_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::WithClause* released = _impl_.with_clause_; _impl_.with_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::WithClause* UpdateStmt::unsafe_arena_release_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.UpdateStmt.with_clause) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; return temp; } inline ::pg_query::WithClause* UpdateStmt::_internal_mutable_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.with_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArena()); _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(p); } return _impl_.with_clause_; } inline ::pg_query::WithClause* UpdateStmt::mutable_with_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::WithClause* _msg = _internal_mutable_with_clause(); // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.with_clause) return _msg; } inline void UpdateStmt::set_allocated_with_clause(::pg_query::WithClause* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::WithClause*>(_impl_.with_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::WithClause*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.UpdateStmt.with_clause) } // ------------------------------------------------------------------- // MergeStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool MergeStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void MergeStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& MergeStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& MergeStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MergeStmt.relation) return _internal_relation(); } inline void MergeStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MergeStmt.relation) } inline ::pg_query::RangeVar* MergeStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* MergeStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.MergeStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* MergeStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* MergeStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.MergeStmt.relation) return _msg; } inline void MergeStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.MergeStmt.relation) } // .pg_query.Node source_relation = 2 [json_name = "sourceRelation"]; inline bool MergeStmt::has_source_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.source_relation_ != nullptr); return value; } inline void MergeStmt::clear_source_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.source_relation_ != nullptr) _impl_.source_relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& MergeStmt::_internal_source_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.source_relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& MergeStmt::source_relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MergeStmt.source_relation) return _internal_source_relation(); } inline void MergeStmt::unsafe_arena_set_allocated_source_relation(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.source_relation_); } _impl_.source_relation_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MergeStmt.source_relation) } inline ::pg_query::Node* MergeStmt::release_source_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.source_relation_; _impl_.source_relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* MergeStmt::unsafe_arena_release_source_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.MergeStmt.source_relation) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.source_relation_; _impl_.source_relation_ = nullptr; return temp; } inline ::pg_query::Node* MergeStmt::_internal_mutable_source_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.source_relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.source_relation_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.source_relation_; } inline ::pg_query::Node* MergeStmt::mutable_source_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_source_relation(); // @@protoc_insertion_point(field_mutable:pg_query.MergeStmt.source_relation) return _msg; } inline void MergeStmt::set_allocated_source_relation(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.source_relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.source_relation_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.MergeStmt.source_relation) } // .pg_query.Node join_condition = 3 [json_name = "joinCondition"]; inline bool MergeStmt::has_join_condition() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.join_condition_ != nullptr); return value; } inline void MergeStmt::clear_join_condition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.join_condition_ != nullptr) _impl_.join_condition_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& MergeStmt::_internal_join_condition() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.join_condition_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& MergeStmt::join_condition() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MergeStmt.join_condition) return _internal_join_condition(); } inline void MergeStmt::unsafe_arena_set_allocated_join_condition(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.join_condition_); } _impl_.join_condition_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MergeStmt.join_condition) } inline ::pg_query::Node* MergeStmt::release_join_condition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.join_condition_; _impl_.join_condition_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* MergeStmt::unsafe_arena_release_join_condition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.MergeStmt.join_condition) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.join_condition_; _impl_.join_condition_ = nullptr; return temp; } inline ::pg_query::Node* MergeStmt::_internal_mutable_join_condition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.join_condition_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.join_condition_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.join_condition_; } inline ::pg_query::Node* MergeStmt::mutable_join_condition() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_join_condition(); // @@protoc_insertion_point(field_mutable:pg_query.MergeStmt.join_condition) return _msg; } inline void MergeStmt::set_allocated_join_condition(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.join_condition_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.join_condition_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.MergeStmt.join_condition) } // repeated .pg_query.Node merge_when_clauses = 4 [json_name = "mergeWhenClauses"]; inline int MergeStmt::_internal_merge_when_clauses_size() const { return _internal_merge_when_clauses().size(); } inline int MergeStmt::merge_when_clauses_size() const { return _internal_merge_when_clauses_size(); } inline void MergeStmt::clear_merge_when_clauses() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.merge_when_clauses_.Clear(); } inline ::pg_query::Node* MergeStmt::mutable_merge_when_clauses(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.MergeStmt.merge_when_clauses) return _internal_mutable_merge_when_clauses()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* MergeStmt::mutable_merge_when_clauses() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.MergeStmt.merge_when_clauses) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_merge_when_clauses(); } inline const ::pg_query::Node& MergeStmt::merge_when_clauses(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MergeStmt.merge_when_clauses) return _internal_merge_when_clauses().Get(index); } inline ::pg_query::Node* MergeStmt::add_merge_when_clauses() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_merge_when_clauses()->Add(); // @@protoc_insertion_point(field_add:pg_query.MergeStmt.merge_when_clauses) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& MergeStmt::merge_when_clauses() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.MergeStmt.merge_when_clauses) return _internal_merge_when_clauses(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& MergeStmt::_internal_merge_when_clauses() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.merge_when_clauses_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* MergeStmt::_internal_mutable_merge_when_clauses() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.merge_when_clauses_; } // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; inline int MergeStmt::_internal_returning_list_size() const { return _internal_returning_list().size(); } inline int MergeStmt::returning_list_size() const { return _internal_returning_list_size(); } inline void MergeStmt::clear_returning_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.returning_list_.Clear(); } inline ::pg_query::Node* MergeStmt::mutable_returning_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.MergeStmt.returning_list) return _internal_mutable_returning_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* MergeStmt::mutable_returning_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.MergeStmt.returning_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_returning_list(); } inline const ::pg_query::Node& MergeStmt::returning_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MergeStmt.returning_list) return _internal_returning_list().Get(index); } inline ::pg_query::Node* MergeStmt::add_returning_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_returning_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.MergeStmt.returning_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& MergeStmt::returning_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.MergeStmt.returning_list) return _internal_returning_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& MergeStmt::_internal_returning_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.returning_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* MergeStmt::_internal_mutable_returning_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.returning_list_; } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; inline bool MergeStmt::has_with_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0; PROTOBUF_ASSUME(!value || _impl_.with_clause_ != nullptr); return value; } inline void MergeStmt::clear_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.with_clause_ != nullptr) _impl_.with_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000008u; } inline const ::pg_query::WithClause& MergeStmt::_internal_with_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::WithClause* p = _impl_.with_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_WithClause_default_instance_); } inline const ::pg_query::WithClause& MergeStmt::with_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.MergeStmt.with_clause) return _internal_with_clause(); } inline void MergeStmt::unsafe_arena_set_allocated_with_clause(::pg_query::WithClause* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.with_clause_); } _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MergeStmt.with_clause) } inline ::pg_query::WithClause* MergeStmt::release_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::WithClause* released = _impl_.with_clause_; _impl_.with_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::WithClause* MergeStmt::unsafe_arena_release_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.MergeStmt.with_clause) _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; return temp; } inline ::pg_query::WithClause* MergeStmt::_internal_mutable_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000008u; if (_impl_.with_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArena()); _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(p); } return _impl_.with_clause_; } inline ::pg_query::WithClause* MergeStmt::mutable_with_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::WithClause* _msg = _internal_mutable_with_clause(); // @@protoc_insertion_point(field_mutable:pg_query.MergeStmt.with_clause) return _msg; } inline void MergeStmt::set_allocated_with_clause(::pg_query::WithClause* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::WithClause*>(_impl_.with_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::WithClause*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.MergeStmt.with_clause) } // ------------------------------------------------------------------- // SelectStmt // repeated .pg_query.Node distinct_clause = 1 [json_name = "distinctClause"]; inline int SelectStmt::_internal_distinct_clause_size() const { return _internal_distinct_clause().size(); } inline int SelectStmt::distinct_clause_size() const { return _internal_distinct_clause_size(); } inline void SelectStmt::clear_distinct_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.distinct_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_distinct_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.distinct_clause) return _internal_mutable_distinct_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::mutable_distinct_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.distinct_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_distinct_clause(); } inline const ::pg_query::Node& SelectStmt::distinct_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.distinct_clause) return _internal_distinct_clause().Get(index); } inline ::pg_query::Node* SelectStmt::add_distinct_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_distinct_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.distinct_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::distinct_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.distinct_clause) return _internal_distinct_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::_internal_distinct_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.distinct_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::_internal_mutable_distinct_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.distinct_clause_; } // .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; inline bool SelectStmt::has_into_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.into_clause_ != nullptr); return value; } inline void SelectStmt::clear_into_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.into_clause_ != nullptr) _impl_.into_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::IntoClause& SelectStmt::_internal_into_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::IntoClause* p = _impl_.into_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_IntoClause_default_instance_); } inline const ::pg_query::IntoClause& SelectStmt::into_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.into_clause_); } _impl_.into_clause_ = reinterpret_cast<::pg_query::IntoClause*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.into_clause) } inline ::pg_query::IntoClause* SelectStmt::release_into_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::IntoClause* released = _impl_.into_clause_; _impl_.into_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::IntoClause* SelectStmt::unsafe_arena_release_into_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SelectStmt.into_clause) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::IntoClause* temp = _impl_.into_clause_; _impl_.into_clause_ = nullptr; return temp; } inline ::pg_query::IntoClause* SelectStmt::_internal_mutable_into_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.into_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::IntoClause>(GetArena()); _impl_.into_clause_ = reinterpret_cast<::pg_query::IntoClause*>(p); } return _impl_.into_clause_; } inline ::pg_query::IntoClause* SelectStmt::mutable_into_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::IntoClause* _msg = _internal_mutable_into_clause(); // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.into_clause) return _msg; } inline void SelectStmt::set_allocated_into_clause(::pg_query::IntoClause* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::IntoClause*>(_impl_.into_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::IntoClause*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.into_clause_ = reinterpret_cast<::pg_query::IntoClause*>(value); // @@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 _internal_target_list().size(); } inline int SelectStmt::target_list_size() const { return _internal_target_list_size(); } inline void SelectStmt::clear_target_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.target_list_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_target_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.target_list) return _internal_mutable_target_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::mutable_target_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.target_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_target_list(); } inline const ::pg_query::Node& SelectStmt::target_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.target_list) return _internal_target_list().Get(index); } inline ::pg_query::Node* SelectStmt::add_target_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_target_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.target_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::target_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.target_list) return _internal_target_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::_internal_target_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.target_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::_internal_mutable_target_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.target_list_; } // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; inline int SelectStmt::_internal_from_clause_size() const { return _internal_from_clause().size(); } inline int SelectStmt::from_clause_size() const { return _internal_from_clause_size(); } inline void SelectStmt::clear_from_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.from_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_from_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.from_clause) return _internal_mutable_from_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::mutable_from_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.from_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_from_clause(); } inline const ::pg_query::Node& SelectStmt::from_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.from_clause) return _internal_from_clause().Get(index); } inline ::pg_query::Node* SelectStmt::add_from_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_from_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.from_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::from_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.from_clause) return _internal_from_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::_internal_from_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.from_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::_internal_mutable_from_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.from_clause_; } // .pg_query.Node where_clause = 5 [json_name = "whereClause"]; inline bool SelectStmt::has_where_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.where_clause_ != nullptr); return value; } inline void SelectStmt::clear_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.where_clause_ != nullptr) _impl_.where_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& SelectStmt::_internal_where_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.where_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SelectStmt::where_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.where_clause) } inline ::pg_query::Node* SelectStmt::release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SelectStmt::unsafe_arena_release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SelectStmt.where_clause) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* SelectStmt::_internal_mutable_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.where_clause_; } inline ::pg_query::Node* SelectStmt::mutable_where_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_where_clause(); // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.where_clause) return _msg; } inline void SelectStmt::set_allocated_where_clause(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.where_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_group_clause().size(); } inline int SelectStmt::group_clause_size() const { return _internal_group_clause_size(); } inline void SelectStmt::clear_group_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.group_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_group_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.group_clause) return _internal_mutable_group_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::mutable_group_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.group_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_group_clause(); } inline const ::pg_query::Node& SelectStmt::group_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.group_clause) return _internal_group_clause().Get(index); } inline ::pg_query::Node* SelectStmt::add_group_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_group_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.group_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::group_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.group_clause) return _internal_group_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::_internal_group_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.group_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::_internal_mutable_group_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.group_clause_; } // bool group_distinct = 7 [json_name = "groupDistinct"]; inline void SelectStmt::clear_group_distinct() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.group_distinct_ = false; } inline bool SelectStmt::group_distinct() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.group_distinct) return _internal_group_distinct(); } inline void SelectStmt::set_group_distinct(bool value) { _internal_set_group_distinct(value); // @@protoc_insertion_point(field_set:pg_query.SelectStmt.group_distinct) } inline bool SelectStmt::_internal_group_distinct() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.group_distinct_; } inline void SelectStmt::_internal_set_group_distinct(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.group_distinct_ = value; } // .pg_query.Node having_clause = 8 [json_name = "havingClause"]; inline bool SelectStmt::has_having_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.having_clause_ != nullptr); return value; } inline void SelectStmt::clear_having_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.having_clause_ != nullptr) _impl_.having_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& SelectStmt::_internal_having_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.having_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SelectStmt::having_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.having_clause_); } _impl_.having_clause_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.having_clause) } inline ::pg_query::Node* SelectStmt::release_having_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.having_clause_; _impl_.having_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SelectStmt::unsafe_arena_release_having_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SelectStmt.having_clause) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.having_clause_; _impl_.having_clause_ = nullptr; return temp; } inline ::pg_query::Node* SelectStmt::_internal_mutable_having_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.having_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.having_clause_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.having_clause_; } inline ::pg_query::Node* SelectStmt::mutable_having_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_having_clause(); // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.having_clause) return _msg; } inline void SelectStmt::set_allocated_having_clause(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.having_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.having_clause_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.having_clause) } // repeated .pg_query.Node window_clause = 9 [json_name = "windowClause"]; inline int SelectStmt::_internal_window_clause_size() const { return _internal_window_clause().size(); } inline int SelectStmt::window_clause_size() const { return _internal_window_clause_size(); } inline void SelectStmt::clear_window_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.window_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_window_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.window_clause) return _internal_mutable_window_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::mutable_window_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.window_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_window_clause(); } inline const ::pg_query::Node& SelectStmt::window_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.window_clause) return _internal_window_clause().Get(index); } inline ::pg_query::Node* SelectStmt::add_window_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_window_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.window_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::window_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.window_clause) return _internal_window_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::_internal_window_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.window_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::_internal_mutable_window_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.window_clause_; } // repeated .pg_query.Node values_lists = 10 [json_name = "valuesLists"]; inline int SelectStmt::_internal_values_lists_size() const { return _internal_values_lists().size(); } inline int SelectStmt::values_lists_size() const { return _internal_values_lists_size(); } inline void SelectStmt::clear_values_lists() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.values_lists_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_values_lists(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.values_lists) return _internal_mutable_values_lists()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::mutable_values_lists() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.values_lists) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_values_lists(); } inline const ::pg_query::Node& SelectStmt::values_lists(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.values_lists) return _internal_values_lists().Get(index); } inline ::pg_query::Node* SelectStmt::add_values_lists() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_values_lists()->Add(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.values_lists) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::values_lists() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.values_lists) return _internal_values_lists(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::_internal_values_lists() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.values_lists_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::_internal_mutable_values_lists() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.values_lists_; } // repeated .pg_query.Node sort_clause = 11 [json_name = "sortClause"]; inline int SelectStmt::_internal_sort_clause_size() const { return _internal_sort_clause().size(); } inline int SelectStmt::sort_clause_size() const { return _internal_sort_clause_size(); } inline void SelectStmt::clear_sort_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.sort_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_sort_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.sort_clause) return _internal_mutable_sort_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::mutable_sort_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.sort_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_sort_clause(); } inline const ::pg_query::Node& SelectStmt::sort_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.sort_clause) return _internal_sort_clause().Get(index); } inline ::pg_query::Node* SelectStmt::add_sort_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_sort_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.sort_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::sort_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.sort_clause) return _internal_sort_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::_internal_sort_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.sort_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::_internal_mutable_sort_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.sort_clause_; } // .pg_query.Node limit_offset = 12 [json_name = "limitOffset"]; inline bool SelectStmt::has_limit_offset() const { bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0; PROTOBUF_ASSUME(!value || _impl_.limit_offset_ != nullptr); return value; } inline void SelectStmt::clear_limit_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.limit_offset_ != nullptr) _impl_.limit_offset_->Clear(); _impl_._has_bits_[0] &= ~0x00000008u; } inline const ::pg_query::Node& SelectStmt::_internal_limit_offset() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.limit_offset_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SelectStmt::limit_offset() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.limit_offset_); } _impl_.limit_offset_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.limit_offset) } inline ::pg_query::Node* SelectStmt::release_limit_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::Node* released = _impl_.limit_offset_; _impl_.limit_offset_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SelectStmt::unsafe_arena_release_limit_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SelectStmt.limit_offset) _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::Node* temp = _impl_.limit_offset_; _impl_.limit_offset_ = nullptr; return temp; } inline ::pg_query::Node* SelectStmt::_internal_mutable_limit_offset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000008u; if (_impl_.limit_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.limit_offset_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.limit_offset_; } inline ::pg_query::Node* SelectStmt::mutable_limit_offset() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_limit_offset(); // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.limit_offset) return _msg; } inline void SelectStmt::set_allocated_limit_offset(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.limit_offset_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } _impl_.limit_offset_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.limit_offset) } // .pg_query.Node limit_count = 13 [json_name = "limitCount"]; inline bool SelectStmt::has_limit_count() const { bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0; PROTOBUF_ASSUME(!value || _impl_.limit_count_ != nullptr); return value; } inline void SelectStmt::clear_limit_count() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.limit_count_ != nullptr) _impl_.limit_count_->Clear(); _impl_._has_bits_[0] &= ~0x00000010u; } inline const ::pg_query::Node& SelectStmt::_internal_limit_count() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.limit_count_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SelectStmt::limit_count() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.limit_count_); } _impl_.limit_count_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.limit_count) } inline ::pg_query::Node* SelectStmt::release_limit_count() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::Node* released = _impl_.limit_count_; _impl_.limit_count_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SelectStmt::unsafe_arena_release_limit_count() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SelectStmt.limit_count) _impl_._has_bits_[0] &= ~0x00000010u; ::pg_query::Node* temp = _impl_.limit_count_; _impl_.limit_count_ = nullptr; return temp; } inline ::pg_query::Node* SelectStmt::_internal_mutable_limit_count() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000010u; if (_impl_.limit_count_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.limit_count_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.limit_count_; } inline ::pg_query::Node* SelectStmt::mutable_limit_count() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_limit_count(); // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.limit_count) return _msg; } inline void SelectStmt::set_allocated_limit_count(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.limit_count_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000010u; } else { _impl_._has_bits_[0] &= ~0x00000010u; } _impl_.limit_count_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.limit_count) } // .pg_query.LimitOption limit_option = 14 [json_name = "limitOption"]; inline void SelectStmt::clear_limit_option() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.limit_option_ = 0; } 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::set_limit_option(::pg_query::LimitOption value) { _internal_set_limit_option(value); // @@protoc_insertion_point(field_set:pg_query.SelectStmt.limit_option) } inline ::pg_query::LimitOption SelectStmt::_internal_limit_option() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::LimitOption>(_impl_.limit_option_); } inline void SelectStmt::_internal_set_limit_option(::pg_query::LimitOption value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.limit_option_ = value; } // repeated .pg_query.Node locking_clause = 15 [json_name = "lockingClause"]; inline int SelectStmt::_internal_locking_clause_size() const { return _internal_locking_clause().size(); } inline int SelectStmt::locking_clause_size() const { return _internal_locking_clause_size(); } inline void SelectStmt::clear_locking_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.locking_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_locking_clause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.locking_clause) return _internal_mutable_locking_clause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::mutable_locking_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.locking_clause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_locking_clause(); } inline const ::pg_query::Node& SelectStmt::locking_clause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.locking_clause) return _internal_locking_clause().Get(index); } inline ::pg_query::Node* SelectStmt::add_locking_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_locking_clause()->Add(); // @@protoc_insertion_point(field_add:pg_query.SelectStmt.locking_clause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::locking_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.locking_clause) return _internal_locking_clause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SelectStmt::_internal_locking_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.locking_clause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SelectStmt::_internal_mutable_locking_clause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.locking_clause_; } // .pg_query.WithClause with_clause = 16 [json_name = "withClause"]; inline bool SelectStmt::has_with_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0; PROTOBUF_ASSUME(!value || _impl_.with_clause_ != nullptr); return value; } inline void SelectStmt::clear_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.with_clause_ != nullptr) _impl_.with_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000020u; } inline const ::pg_query::WithClause& SelectStmt::_internal_with_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::WithClause* p = _impl_.with_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_WithClause_default_instance_); } inline const ::pg_query::WithClause& SelectStmt::with_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.with_clause_); } _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000020u; } else { _impl_._has_bits_[0] &= ~0x00000020u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.with_clause) } inline ::pg_query::WithClause* SelectStmt::release_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000020u; ::pg_query::WithClause* released = _impl_.with_clause_; _impl_.with_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::WithClause* SelectStmt::unsafe_arena_release_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SelectStmt.with_clause) _impl_._has_bits_[0] &= ~0x00000020u; ::pg_query::WithClause* temp = _impl_.with_clause_; _impl_.with_clause_ = nullptr; return temp; } inline ::pg_query::WithClause* SelectStmt::_internal_mutable_with_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000020u; if (_impl_.with_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArena()); _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(p); } return _impl_.with_clause_; } inline ::pg_query::WithClause* SelectStmt::mutable_with_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::WithClause* _msg = _internal_mutable_with_clause(); // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.with_clause) return _msg; } inline void SelectStmt::set_allocated_with_clause(::pg_query::WithClause* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::WithClause*>(_impl_.with_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::WithClause*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000020u; } else { _impl_._has_bits_[0] &= ~0x00000020u; } _impl_.with_clause_ = reinterpret_cast<::pg_query::WithClause*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.with_clause) } // .pg_query.SetOperation op = 17 [json_name = "op"]; inline void SelectStmt::clear_op() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.op_ = 0; } inline ::pg_query::SetOperation SelectStmt::op() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.op) return _internal_op(); } inline void SelectStmt::set_op(::pg_query::SetOperation value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.SelectStmt.op) } inline ::pg_query::SetOperation SelectStmt::_internal_op() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::SetOperation>(_impl_.op_); } inline void SelectStmt::_internal_set_op(::pg_query::SetOperation value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.op_ = value; } // bool all = 18 [json_name = "all"]; inline void SelectStmt::clear_all() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.all_ = false; } inline bool SelectStmt::all() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.all) return _internal_all(); } inline void SelectStmt::set_all(bool value) { _internal_set_all(value); // @@protoc_insertion_point(field_set:pg_query.SelectStmt.all) } inline bool SelectStmt::_internal_all() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.all_; } inline void SelectStmt::_internal_set_all(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.all_ = value; } // .pg_query.SelectStmt larg = 19 [json_name = "larg"]; inline bool SelectStmt::has_larg() const { bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0; PROTOBUF_ASSUME(!value || _impl_.larg_ != nullptr); return value; } inline void SelectStmt::clear_larg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.larg_ != nullptr) _impl_.larg_->Clear(); _impl_._has_bits_[0] &= ~0x00000040u; } inline const ::pg_query::SelectStmt& SelectStmt::_internal_larg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::SelectStmt* p = _impl_.larg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_SelectStmt_default_instance_); } inline const ::pg_query::SelectStmt& SelectStmt::larg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.larg) return _internal_larg(); } inline void SelectStmt::unsafe_arena_set_allocated_larg(::pg_query::SelectStmt* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.larg_); } _impl_.larg_ = reinterpret_cast<::pg_query::SelectStmt*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000040u; } else { _impl_._has_bits_[0] &= ~0x00000040u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.larg) } inline ::pg_query::SelectStmt* SelectStmt::release_larg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000040u; ::pg_query::SelectStmt* released = _impl_.larg_; _impl_.larg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::SelectStmt* SelectStmt::unsafe_arena_release_larg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SelectStmt.larg) _impl_._has_bits_[0] &= ~0x00000040u; ::pg_query::SelectStmt* temp = _impl_.larg_; _impl_.larg_ = nullptr; return temp; } inline ::pg_query::SelectStmt* SelectStmt::_internal_mutable_larg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000040u; if (_impl_.larg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::SelectStmt>(GetArena()); _impl_.larg_ = reinterpret_cast<::pg_query::SelectStmt*>(p); } return _impl_.larg_; } inline ::pg_query::SelectStmt* SelectStmt::mutable_larg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::SelectStmt* _msg = _internal_mutable_larg(); // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.larg) return _msg; } inline void SelectStmt::set_allocated_larg(::pg_query::SelectStmt* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::SelectStmt*>(_impl_.larg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::SelectStmt*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000040u; } else { _impl_._has_bits_[0] &= ~0x00000040u; } _impl_.larg_ = reinterpret_cast<::pg_query::SelectStmt*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.larg) } // .pg_query.SelectStmt rarg = 20 [json_name = "rarg"]; inline bool SelectStmt::has_rarg() const { bool value = (_impl_._has_bits_[0] & 0x00000080u) != 0; PROTOBUF_ASSUME(!value || _impl_.rarg_ != nullptr); return value; } inline void SelectStmt::clear_rarg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.rarg_ != nullptr) _impl_.rarg_->Clear(); _impl_._has_bits_[0] &= ~0x00000080u; } inline const ::pg_query::SelectStmt& SelectStmt::_internal_rarg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::SelectStmt* p = _impl_.rarg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_SelectStmt_default_instance_); } inline const ::pg_query::SelectStmt& SelectStmt::rarg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.rarg) return _internal_rarg(); } inline void SelectStmt::unsafe_arena_set_allocated_rarg(::pg_query::SelectStmt* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rarg_); } _impl_.rarg_ = reinterpret_cast<::pg_query::SelectStmt*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000080u; } else { _impl_._has_bits_[0] &= ~0x00000080u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.rarg) } inline ::pg_query::SelectStmt* SelectStmt::release_rarg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000080u; ::pg_query::SelectStmt* released = _impl_.rarg_; _impl_.rarg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::SelectStmt* SelectStmt::unsafe_arena_release_rarg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SelectStmt.rarg) _impl_._has_bits_[0] &= ~0x00000080u; ::pg_query::SelectStmt* temp = _impl_.rarg_; _impl_.rarg_ = nullptr; return temp; } inline ::pg_query::SelectStmt* SelectStmt::_internal_mutable_rarg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000080u; if (_impl_.rarg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::SelectStmt>(GetArena()); _impl_.rarg_ = reinterpret_cast<::pg_query::SelectStmt*>(p); } return _impl_.rarg_; } inline ::pg_query::SelectStmt* SelectStmt::mutable_rarg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::SelectStmt* _msg = _internal_mutable_rarg(); // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.rarg) return _msg; } inline void SelectStmt::set_allocated_rarg(::pg_query::SelectStmt* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::SelectStmt*>(_impl_.rarg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::SelectStmt*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000080u; } else { _impl_._has_bits_[0] &= ~0x00000080u; } _impl_.rarg_ = reinterpret_cast<::pg_query::SelectStmt*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.rarg) } // ------------------------------------------------------------------- // SetOperationStmt // .pg_query.SetOperation op = 1 [json_name = "op"]; inline void SetOperationStmt::clear_op() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.op_ = 0; } inline ::pg_query::SetOperation SetOperationStmt::op() const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.op) return _internal_op(); } inline void SetOperationStmt::set_op(::pg_query::SetOperation value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.SetOperationStmt.op) } inline ::pg_query::SetOperation SetOperationStmt::_internal_op() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::SetOperation>(_impl_.op_); } inline void SetOperationStmt::_internal_set_op(::pg_query::SetOperation value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.op_ = value; } // bool all = 2 [json_name = "all"]; inline void SetOperationStmt::clear_all() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.all_ = false; } inline bool SetOperationStmt::all() const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.all) return _internal_all(); } inline void SetOperationStmt::set_all(bool value) { _internal_set_all(value); // @@protoc_insertion_point(field_set:pg_query.SetOperationStmt.all) } inline bool SetOperationStmt::_internal_all() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.all_; } inline void SetOperationStmt::_internal_set_all(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.all_ = value; } // .pg_query.Node larg = 3 [json_name = "larg"]; inline bool SetOperationStmt::has_larg() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.larg_ != nullptr); return value; } inline void SetOperationStmt::clear_larg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.larg_ != nullptr) _impl_.larg_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& SetOperationStmt::_internal_larg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.larg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SetOperationStmt::larg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.larg) return _internal_larg(); } inline void SetOperationStmt::unsafe_arena_set_allocated_larg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.larg_); } _impl_.larg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SetOperationStmt.larg) } inline ::pg_query::Node* SetOperationStmt::release_larg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.larg_; _impl_.larg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SetOperationStmt::unsafe_arena_release_larg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SetOperationStmt.larg) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.larg_; _impl_.larg_ = nullptr; return temp; } inline ::pg_query::Node* SetOperationStmt::_internal_mutable_larg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.larg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.larg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.larg_; } inline ::pg_query::Node* SetOperationStmt::mutable_larg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_larg(); // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.larg) return _msg; } inline void SetOperationStmt::set_allocated_larg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.larg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.larg_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.SetOperationStmt.larg) } // .pg_query.Node rarg = 4 [json_name = "rarg"]; inline bool SetOperationStmt::has_rarg() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.rarg_ != nullptr); return value; } inline void SetOperationStmt::clear_rarg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.rarg_ != nullptr) _impl_.rarg_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& SetOperationStmt::_internal_rarg() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.rarg_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SetOperationStmt::rarg() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.rarg) return _internal_rarg(); } inline void SetOperationStmt::unsafe_arena_set_allocated_rarg(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rarg_); } _impl_.rarg_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SetOperationStmt.rarg) } inline ::pg_query::Node* SetOperationStmt::release_rarg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.rarg_; _impl_.rarg_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SetOperationStmt::unsafe_arena_release_rarg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SetOperationStmt.rarg) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.rarg_; _impl_.rarg_ = nullptr; return temp; } inline ::pg_query::Node* SetOperationStmt::_internal_mutable_rarg() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.rarg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.rarg_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.rarg_; } inline ::pg_query::Node* SetOperationStmt::mutable_rarg() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_rarg(); // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.rarg) return _msg; } inline void SetOperationStmt::set_allocated_rarg(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.rarg_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.rarg_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_col_types().size(); } inline int SetOperationStmt::col_types_size() const { return _internal_col_types_size(); } inline void SetOperationStmt::clear_col_types() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.col_types_.Clear(); } inline ::pg_query::Node* SetOperationStmt::mutable_col_types(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.col_types) return _internal_mutable_col_types()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SetOperationStmt::mutable_col_types() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.col_types) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_col_types(); } inline const ::pg_query::Node& SetOperationStmt::col_types(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.col_types) return _internal_col_types().Get(index); } inline ::pg_query::Node* SetOperationStmt::add_col_types() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_col_types()->Add(); // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.col_types) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SetOperationStmt::col_types() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.col_types) return _internal_col_types(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SetOperationStmt::_internal_col_types() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.col_types_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SetOperationStmt::_internal_mutable_col_types() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.col_types_; } // repeated .pg_query.Node col_typmods = 6 [json_name = "colTypmods"]; inline int SetOperationStmt::_internal_col_typmods_size() const { return _internal_col_typmods().size(); } inline int SetOperationStmt::col_typmods_size() const { return _internal_col_typmods_size(); } inline void SetOperationStmt::clear_col_typmods() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.col_typmods_.Clear(); } inline ::pg_query::Node* SetOperationStmt::mutable_col_typmods(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.col_typmods) return _internal_mutable_col_typmods()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SetOperationStmt::mutable_col_typmods() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.col_typmods) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_col_typmods(); } inline const ::pg_query::Node& SetOperationStmt::col_typmods(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.col_typmods) return _internal_col_typmods().Get(index); } inline ::pg_query::Node* SetOperationStmt::add_col_typmods() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_col_typmods()->Add(); // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.col_typmods) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SetOperationStmt::col_typmods() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.col_typmods) return _internal_col_typmods(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SetOperationStmt::_internal_col_typmods() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.col_typmods_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SetOperationStmt::_internal_mutable_col_typmods() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.col_typmods_; } // repeated .pg_query.Node col_collations = 7 [json_name = "colCollations"]; inline int SetOperationStmt::_internal_col_collations_size() const { return _internal_col_collations().size(); } inline int SetOperationStmt::col_collations_size() const { return _internal_col_collations_size(); } inline void SetOperationStmt::clear_col_collations() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.col_collations_.Clear(); } inline ::pg_query::Node* SetOperationStmt::mutable_col_collations(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.col_collations) return _internal_mutable_col_collations()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SetOperationStmt::mutable_col_collations() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.col_collations) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_col_collations(); } inline const ::pg_query::Node& SetOperationStmt::col_collations(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.col_collations) return _internal_col_collations().Get(index); } inline ::pg_query::Node* SetOperationStmt::add_col_collations() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_col_collations()->Add(); // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.col_collations) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SetOperationStmt::col_collations() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.col_collations) return _internal_col_collations(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SetOperationStmt::_internal_col_collations() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.col_collations_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SetOperationStmt::_internal_mutable_col_collations() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.col_collations_; } // repeated .pg_query.Node group_clauses = 8 [json_name = "groupClauses"]; inline int SetOperationStmt::_internal_group_clauses_size() const { return _internal_group_clauses().size(); } inline int SetOperationStmt::group_clauses_size() const { return _internal_group_clauses_size(); } inline void SetOperationStmt::clear_group_clauses() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.group_clauses_.Clear(); } inline ::pg_query::Node* SetOperationStmt::mutable_group_clauses(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.group_clauses) return _internal_mutable_group_clauses()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SetOperationStmt::mutable_group_clauses() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.group_clauses) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_group_clauses(); } inline const ::pg_query::Node& SetOperationStmt::group_clauses(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.group_clauses) return _internal_group_clauses().Get(index); } inline ::pg_query::Node* SetOperationStmt::add_group_clauses() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_group_clauses()->Add(); // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.group_clauses) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SetOperationStmt::group_clauses() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.group_clauses) return _internal_group_clauses(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& SetOperationStmt::_internal_group_clauses() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.group_clauses_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* SetOperationStmt::_internal_mutable_group_clauses() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.group_clauses_; } // ------------------------------------------------------------------- // ReturnStmt // .pg_query.Node returnval = 1 [json_name = "returnval"]; inline bool ReturnStmt::has_returnval() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.returnval_ != nullptr); return value; } inline void ReturnStmt::clear_returnval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.returnval_ != nullptr) _impl_.returnval_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& ReturnStmt::_internal_returnval() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.returnval_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ReturnStmt::returnval() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ReturnStmt.returnval) return _internal_returnval(); } inline void ReturnStmt::unsafe_arena_set_allocated_returnval(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.returnval_); } _impl_.returnval_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ReturnStmt.returnval) } inline ::pg_query::Node* ReturnStmt::release_returnval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.returnval_; _impl_.returnval_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* ReturnStmt::unsafe_arena_release_returnval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ReturnStmt.returnval) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.returnval_; _impl_.returnval_ = nullptr; return temp; } inline ::pg_query::Node* ReturnStmt::_internal_mutable_returnval() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.returnval_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.returnval_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.returnval_; } inline ::pg_query::Node* ReturnStmt::mutable_returnval() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_returnval(); // @@protoc_insertion_point(field_mutable:pg_query.ReturnStmt.returnval) return _msg; } inline void ReturnStmt::set_allocated_returnval(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.returnval_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.returnval_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ReturnStmt.returnval) } // ------------------------------------------------------------------- // PLAssignStmt // string name = 1 [json_name = "name"]; inline void PLAssignStmt::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& PLAssignStmt::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PLAssignStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void PLAssignStmt::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.PLAssignStmt.name) } inline std::string* PLAssignStmt::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.PLAssignStmt.name) return _s; } inline const std::string& PLAssignStmt::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void PLAssignStmt::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* PLAssignStmt::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* PLAssignStmt::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.PLAssignStmt.name) return _impl_.name_.Release(); } inline void PLAssignStmt::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.PLAssignStmt.name) } // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; inline int PLAssignStmt::_internal_indirection_size() const { return _internal_indirection().size(); } inline int PLAssignStmt::indirection_size() const { return _internal_indirection_size(); } inline void PLAssignStmt::clear_indirection() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.indirection_.Clear(); } inline ::pg_query::Node* PLAssignStmt::mutable_indirection(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.PLAssignStmt.indirection) return _internal_mutable_indirection()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PLAssignStmt::mutable_indirection() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.PLAssignStmt.indirection) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_indirection(); } inline const ::pg_query::Node& PLAssignStmt::indirection(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PLAssignStmt.indirection) return _internal_indirection().Get(index); } inline ::pg_query::Node* PLAssignStmt::add_indirection() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_indirection()->Add(); // @@protoc_insertion_point(field_add:pg_query.PLAssignStmt.indirection) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PLAssignStmt::indirection() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.PLAssignStmt.indirection) return _internal_indirection(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PLAssignStmt::_internal_indirection() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.indirection_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PLAssignStmt::_internal_mutable_indirection() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.indirection_; } // int32 nnames = 3 [json_name = "nnames"]; inline void PLAssignStmt::clear_nnames() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.nnames_ = 0; } inline ::int32_t PLAssignStmt::nnames() const { // @@protoc_insertion_point(field_get:pg_query.PLAssignStmt.nnames) return _internal_nnames(); } inline void PLAssignStmt::set_nnames(::int32_t value) { _internal_set_nnames(value); // @@protoc_insertion_point(field_set:pg_query.PLAssignStmt.nnames) } inline ::int32_t PLAssignStmt::_internal_nnames() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.nnames_; } inline void PLAssignStmt::_internal_set_nnames(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.nnames_ = value; } // .pg_query.SelectStmt val = 4 [json_name = "val"]; inline bool PLAssignStmt::has_val() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.val_ != nullptr); return value; } inline void PLAssignStmt::clear_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.val_ != nullptr) _impl_.val_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::SelectStmt& PLAssignStmt::_internal_val() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::SelectStmt* p = _impl_.val_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_SelectStmt_default_instance_); } inline const ::pg_query::SelectStmt& PLAssignStmt::val() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PLAssignStmt.val) return _internal_val(); } inline void PLAssignStmt::unsafe_arena_set_allocated_val(::pg_query::SelectStmt* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.val_); } _impl_.val_ = reinterpret_cast<::pg_query::SelectStmt*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PLAssignStmt.val) } inline ::pg_query::SelectStmt* PLAssignStmt::release_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::SelectStmt* released = _impl_.val_; _impl_.val_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::SelectStmt* PLAssignStmt::unsafe_arena_release_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.PLAssignStmt.val) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::SelectStmt* temp = _impl_.val_; _impl_.val_ = nullptr; return temp; } inline ::pg_query::SelectStmt* PLAssignStmt::_internal_mutable_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.val_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::SelectStmt>(GetArena()); _impl_.val_ = reinterpret_cast<::pg_query::SelectStmt*>(p); } return _impl_.val_; } inline ::pg_query::SelectStmt* PLAssignStmt::mutable_val() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::SelectStmt* _msg = _internal_mutable_val(); // @@protoc_insertion_point(field_mutable:pg_query.PLAssignStmt.val) return _msg; } inline void PLAssignStmt::set_allocated_val(::pg_query::SelectStmt* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::SelectStmt*>(_impl_.val_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::SelectStmt*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.val_ = reinterpret_cast<::pg_query::SelectStmt*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.PLAssignStmt.val) } // int32 location = 5 [json_name = "location"]; inline void PLAssignStmt::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t PLAssignStmt::location() const { // @@protoc_insertion_point(field_get:pg_query.PLAssignStmt.location) return _internal_location(); } inline void PLAssignStmt::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PLAssignStmt.location) } inline ::int32_t PLAssignStmt::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void PLAssignStmt::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // CreateSchemaStmt // string schemaname = 1 [json_name = "schemaname"]; inline void CreateSchemaStmt::clear_schemaname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.schemaname_.ClearToEmpty(); } inline const std::string& CreateSchemaStmt::schemaname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.schemaname) return _internal_schemaname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateSchemaStmt::set_schemaname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.schemaname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateSchemaStmt.schemaname) } inline std::string* CreateSchemaStmt::mutable_schemaname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_schemaname(); // @@protoc_insertion_point(field_mutable:pg_query.CreateSchemaStmt.schemaname) return _s; } inline const std::string& CreateSchemaStmt::_internal_schemaname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.schemaname_.Get(); } inline void CreateSchemaStmt::_internal_set_schemaname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.schemaname_.Set(value, GetArena()); } inline std::string* CreateSchemaStmt::_internal_mutable_schemaname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.schemaname_.Mutable( GetArena()); } inline std::string* CreateSchemaStmt::release_schemaname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateSchemaStmt.schemaname) return _impl_.schemaname_.Release(); } inline void CreateSchemaStmt::set_allocated_schemaname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.schemaname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.schemaname_.IsDefault()) { _impl_.schemaname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreateSchemaStmt.schemaname) } // .pg_query.RoleSpec authrole = 2 [json_name = "authrole"]; inline bool CreateSchemaStmt::has_authrole() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.authrole_ != nullptr); return value; } inline void CreateSchemaStmt::clear_authrole() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.authrole_ != nullptr) _impl_.authrole_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RoleSpec& CreateSchemaStmt::_internal_authrole() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RoleSpec* p = _impl_.authrole_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& CreateSchemaStmt::authrole() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.authrole) return _internal_authrole(); } inline void CreateSchemaStmt::unsafe_arena_set_allocated_authrole(::pg_query::RoleSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.authrole_); } _impl_.authrole_ = reinterpret_cast<::pg_query::RoleSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateSchemaStmt.authrole) } inline ::pg_query::RoleSpec* CreateSchemaStmt::release_authrole() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* released = _impl_.authrole_; _impl_.authrole_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RoleSpec* CreateSchemaStmt::unsafe_arena_release_authrole() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateSchemaStmt.authrole) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* temp = _impl_.authrole_; _impl_.authrole_ = nullptr; return temp; } inline ::pg_query::RoleSpec* CreateSchemaStmt::_internal_mutable_authrole() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.authrole_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); _impl_.authrole_ = reinterpret_cast<::pg_query::RoleSpec*>(p); } return _impl_.authrole_; } inline ::pg_query::RoleSpec* CreateSchemaStmt::mutable_authrole() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RoleSpec* _msg = _internal_mutable_authrole(); // @@protoc_insertion_point(field_mutable:pg_query.CreateSchemaStmt.authrole) return _msg; } inline void CreateSchemaStmt::set_allocated_authrole(::pg_query::RoleSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RoleSpec*>(_impl_.authrole_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RoleSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.authrole_ = reinterpret_cast<::pg_query::RoleSpec*>(value); // @@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 _internal_schema_elts().size(); } inline int CreateSchemaStmt::schema_elts_size() const { return _internal_schema_elts_size(); } inline void CreateSchemaStmt::clear_schema_elts() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.schema_elts_.Clear(); } inline ::pg_query::Node* CreateSchemaStmt::mutable_schema_elts(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateSchemaStmt.schema_elts) return _internal_mutable_schema_elts()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateSchemaStmt::mutable_schema_elts() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSchemaStmt.schema_elts) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_schema_elts(); } inline const ::pg_query::Node& CreateSchemaStmt::schema_elts(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.schema_elts) return _internal_schema_elts().Get(index); } inline ::pg_query::Node* CreateSchemaStmt::add_schema_elts() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_schema_elts()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateSchemaStmt.schema_elts) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateSchemaStmt::schema_elts() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateSchemaStmt.schema_elts) return _internal_schema_elts(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateSchemaStmt::_internal_schema_elts() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.schema_elts_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateSchemaStmt::_internal_mutable_schema_elts() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.schema_elts_; } // bool if_not_exists = 4 [json_name = "if_not_exists"]; inline void CreateSchemaStmt::clear_if_not_exists() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.if_not_exists_ = false; } 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::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateSchemaStmt.if_not_exists) } inline bool CreateSchemaStmt::_internal_if_not_exists() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.if_not_exists_; } inline void CreateSchemaStmt::_internal_set_if_not_exists(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.if_not_exists_ = value; } // ------------------------------------------------------------------- // AlterTableStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool AlterTableStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void AlterTableStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& AlterTableStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& AlterTableStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.relation) return _internal_relation(); } inline void AlterTableStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterTableStmt.relation) } inline ::pg_query::RangeVar* AlterTableStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* AlterTableStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterTableStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterTableStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* AlterTableStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.AlterTableStmt.relation) return _msg; } inline void AlterTableStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@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 _internal_cmds().size(); } inline int AlterTableStmt::cmds_size() const { return _internal_cmds_size(); } inline void AlterTableStmt::clear_cmds() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cmds_.Clear(); } inline ::pg_query::Node* AlterTableStmt::mutable_cmds(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableStmt.cmds) return _internal_mutable_cmds()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTableStmt::mutable_cmds() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTableStmt.cmds) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_cmds(); } inline const ::pg_query::Node& AlterTableStmt::cmds(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.cmds) return _internal_cmds().Get(index); } inline ::pg_query::Node* AlterTableStmt::add_cmds() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_cmds()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterTableStmt.cmds) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTableStmt::cmds() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterTableStmt.cmds) return _internal_cmds(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTableStmt::_internal_cmds() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cmds_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTableStmt::_internal_mutable_cmds() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.cmds_; } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; inline void AlterTableStmt::clear_objtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.objtype_ = 0; } inline ::pg_query::ObjectType AlterTableStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.objtype) return _internal_objtype(); } inline void AlterTableStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableStmt.objtype) } inline ::pg_query::ObjectType AlterTableStmt::_internal_objtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.objtype_); } inline void AlterTableStmt::_internal_set_objtype(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.objtype_ = value; } // bool missing_ok = 4 [json_name = "missing_ok"]; inline void AlterTableStmt::clear_missing_ok() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.missing_ok_ = false; } inline bool AlterTableStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.missing_ok) return _internal_missing_ok(); } inline void AlterTableStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableStmt.missing_ok) } inline bool AlterTableStmt::_internal_missing_ok() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.missing_ok_; } inline void AlterTableStmt::_internal_set_missing_ok(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.missing_ok_ = value; } // ------------------------------------------------------------------- // ReplicaIdentityStmt // string identity_type = 1 [json_name = "identity_type"]; inline void ReplicaIdentityStmt::clear_identity_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.identity_type_.ClearToEmpty(); } inline const std::string& ReplicaIdentityStmt::identity_type() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ReplicaIdentityStmt.identity_type) return _internal_identity_type(); } template inline PROTOBUF_ALWAYS_INLINE void ReplicaIdentityStmt::set_identity_type(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.identity_type_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ReplicaIdentityStmt.identity_type) } inline std::string* ReplicaIdentityStmt::mutable_identity_type() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_identity_type(); // @@protoc_insertion_point(field_mutable:pg_query.ReplicaIdentityStmt.identity_type) return _s; } inline const std::string& ReplicaIdentityStmt::_internal_identity_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.identity_type_.Get(); } inline void ReplicaIdentityStmt::_internal_set_identity_type(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.identity_type_.Set(value, GetArena()); } inline std::string* ReplicaIdentityStmt::_internal_mutable_identity_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.identity_type_.Mutable( GetArena()); } inline std::string* ReplicaIdentityStmt::release_identity_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ReplicaIdentityStmt.identity_type) return _impl_.identity_type_.Release(); } inline void ReplicaIdentityStmt::set_allocated_identity_type(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.identity_type_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.identity_type_.IsDefault()) { _impl_.identity_type_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ReplicaIdentityStmt.identity_type) } // string name = 2 [json_name = "name"]; inline void ReplicaIdentityStmt::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& ReplicaIdentityStmt::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ReplicaIdentityStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void ReplicaIdentityStmt::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ReplicaIdentityStmt.name) } inline std::string* ReplicaIdentityStmt::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.ReplicaIdentityStmt.name) return _s; } inline const std::string& ReplicaIdentityStmt::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void ReplicaIdentityStmt::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* ReplicaIdentityStmt::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* ReplicaIdentityStmt::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ReplicaIdentityStmt.name) return _impl_.name_.Release(); } inline void ReplicaIdentityStmt::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ReplicaIdentityStmt.name) } // ------------------------------------------------------------------- // AlterTableCmd // .pg_query.AlterTableType subtype = 1 [json_name = "subtype"]; inline void AlterTableCmd::clear_subtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.subtype_ = 0; } inline ::pg_query::AlterTableType AlterTableCmd::subtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.subtype) return _internal_subtype(); } inline void AlterTableCmd::set_subtype(::pg_query::AlterTableType value) { _internal_set_subtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.subtype) } inline ::pg_query::AlterTableType AlterTableCmd::_internal_subtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::AlterTableType>(_impl_.subtype_); } inline void AlterTableCmd::_internal_set_subtype(::pg_query::AlterTableType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.subtype_ = value; } // string name = 2 [json_name = "name"]; inline void AlterTableCmd::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& AlterTableCmd::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void AlterTableCmd::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.name) } inline std::string* AlterTableCmd::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.AlterTableCmd.name) return _s; } inline const std::string& AlterTableCmd::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void AlterTableCmd::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* AlterTableCmd::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* AlterTableCmd::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterTableCmd.name) return _impl_.name_.Release(); } inline void AlterTableCmd::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableCmd.name) } // int32 num = 3 [json_name = "num"]; inline void AlterTableCmd::clear_num() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.num_ = 0; } inline ::int32_t AlterTableCmd::num() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.num) return _internal_num(); } inline void AlterTableCmd::set_num(::int32_t value) { _internal_set_num(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.num) } inline ::int32_t AlterTableCmd::_internal_num() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.num_; } inline void AlterTableCmd::_internal_set_num(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.num_ = value; } // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; inline bool AlterTableCmd::has_newowner() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.newowner_ != nullptr); return value; } inline void AlterTableCmd::clear_newowner() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.newowner_ != nullptr) _impl_.newowner_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RoleSpec& AlterTableCmd::_internal_newowner() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RoleSpec* p = _impl_.newowner_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& AlterTableCmd::newowner() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.newowner) return _internal_newowner(); } inline void AlterTableCmd::unsafe_arena_set_allocated_newowner(::pg_query::RoleSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.newowner_); } _impl_.newowner_ = reinterpret_cast<::pg_query::RoleSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterTableCmd.newowner) } inline ::pg_query::RoleSpec* AlterTableCmd::release_newowner() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* released = _impl_.newowner_; _impl_.newowner_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RoleSpec* AlterTableCmd::unsafe_arena_release_newowner() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterTableCmd.newowner) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* temp = _impl_.newowner_; _impl_.newowner_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterTableCmd::_internal_mutable_newowner() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.newowner_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); _impl_.newowner_ = reinterpret_cast<::pg_query::RoleSpec*>(p); } return _impl_.newowner_; } inline ::pg_query::RoleSpec* AlterTableCmd::mutable_newowner() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RoleSpec* _msg = _internal_mutable_newowner(); // @@protoc_insertion_point(field_mutable:pg_query.AlterTableCmd.newowner) return _msg; } inline void AlterTableCmd::set_allocated_newowner(::pg_query::RoleSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RoleSpec*>(_impl_.newowner_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RoleSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.newowner_ = reinterpret_cast<::pg_query::RoleSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableCmd.newowner) } // .pg_query.Node def = 5 [json_name = "def"]; inline bool AlterTableCmd::has_def() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.def_ != nullptr); return value; } inline void AlterTableCmd::clear_def() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.def_ != nullptr) _impl_.def_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& AlterTableCmd::_internal_def() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.def_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterTableCmd::def() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.def) return _internal_def(); } inline void AlterTableCmd::unsafe_arena_set_allocated_def(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.def_); } _impl_.def_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterTableCmd.def) } inline ::pg_query::Node* AlterTableCmd::release_def() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.def_; _impl_.def_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* AlterTableCmd::unsafe_arena_release_def() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterTableCmd.def) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.def_; _impl_.def_ = nullptr; return temp; } inline ::pg_query::Node* AlterTableCmd::_internal_mutable_def() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.def_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.def_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.def_; } inline ::pg_query::Node* AlterTableCmd::mutable_def() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_def(); // @@protoc_insertion_point(field_mutable:pg_query.AlterTableCmd.def) return _msg; } inline void AlterTableCmd::set_allocated_def(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.def_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.def_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableCmd.def) } // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; inline void AlterTableCmd::clear_behavior() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior AlterTableCmd::behavior() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.behavior) return _internal_behavior(); } inline void AlterTableCmd::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.behavior) } inline ::pg_query::DropBehavior AlterTableCmd::_internal_behavior() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::DropBehavior>(_impl_.behavior_); } inline void AlterTableCmd::_internal_set_behavior(::pg_query::DropBehavior value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.behavior_ = value; } // bool missing_ok = 7 [json_name = "missing_ok"]; inline void AlterTableCmd::clear_missing_ok() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.missing_ok_ = false; } inline bool AlterTableCmd::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.missing_ok) return _internal_missing_ok(); } inline void AlterTableCmd::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.missing_ok) } inline bool AlterTableCmd::_internal_missing_ok() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.missing_ok_; } inline void AlterTableCmd::_internal_set_missing_ok(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.missing_ok_ = value; } // bool recurse = 8 [json_name = "recurse"]; inline void AlterTableCmd::clear_recurse() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.recurse_ = false; } inline bool AlterTableCmd::recurse() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.recurse) return _internal_recurse(); } inline void AlterTableCmd::set_recurse(bool value) { _internal_set_recurse(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.recurse) } inline bool AlterTableCmd::_internal_recurse() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.recurse_; } inline void AlterTableCmd::_internal_set_recurse(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.recurse_ = value; } // ------------------------------------------------------------------- // AlterCollationStmt // repeated .pg_query.Node collname = 1 [json_name = "collname"]; inline int AlterCollationStmt::_internal_collname_size() const { return _internal_collname().size(); } inline int AlterCollationStmt::collname_size() const { return _internal_collname_size(); } inline void AlterCollationStmt::clear_collname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.collname_.Clear(); } inline ::pg_query::Node* AlterCollationStmt::mutable_collname(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterCollationStmt.collname) return _internal_mutable_collname()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterCollationStmt::mutable_collname() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterCollationStmt.collname) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_collname(); } inline const ::pg_query::Node& AlterCollationStmt::collname(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterCollationStmt.collname) return _internal_collname().Get(index); } inline ::pg_query::Node* AlterCollationStmt::add_collname() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_collname()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterCollationStmt.collname) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterCollationStmt::collname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterCollationStmt.collname) return _internal_collname(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterCollationStmt::_internal_collname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.collname_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterCollationStmt::_internal_mutable_collname() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.collname_; } // ------------------------------------------------------------------- // AlterDomainStmt // string subtype = 1 [json_name = "subtype"]; inline void AlterDomainStmt::clear_subtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.subtype_.ClearToEmpty(); } inline const std::string& AlterDomainStmt::subtype() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.subtype) return _internal_subtype(); } template inline PROTOBUF_ALWAYS_INLINE void AlterDomainStmt::set_subtype(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.subtype_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.subtype) } inline std::string* AlterDomainStmt::mutable_subtype() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_subtype(); // @@protoc_insertion_point(field_mutable:pg_query.AlterDomainStmt.subtype) return _s; } inline const std::string& AlterDomainStmt::_internal_subtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.subtype_.Get(); } inline void AlterDomainStmt::_internal_set_subtype(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.subtype_.Set(value, GetArena()); } inline std::string* AlterDomainStmt::_internal_mutable_subtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.subtype_.Mutable( GetArena()); } inline std::string* AlterDomainStmt::release_subtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterDomainStmt.subtype) return _impl_.subtype_.Release(); } inline void AlterDomainStmt::set_allocated_subtype(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.subtype_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.subtype_.IsDefault()) { _impl_.subtype_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_type_name().size(); } inline int AlterDomainStmt::type_name_size() const { return _internal_type_name_size(); } inline void AlterDomainStmt::clear_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_name_.Clear(); } inline ::pg_query::Node* AlterDomainStmt::mutable_type_name(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterDomainStmt.type_name) return _internal_mutable_type_name()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterDomainStmt::mutable_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterDomainStmt.type_name) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_type_name(); } inline const ::pg_query::Node& AlterDomainStmt::type_name(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.type_name) return _internal_type_name().Get(index); } inline ::pg_query::Node* AlterDomainStmt::add_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_type_name()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterDomainStmt.type_name) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterDomainStmt::type_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterDomainStmt.type_name) return _internal_type_name(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterDomainStmt::_internal_type_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_name_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterDomainStmt::_internal_mutable_type_name() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.type_name_; } // string name = 3 [json_name = "name"]; inline void AlterDomainStmt::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& AlterDomainStmt::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void AlterDomainStmt::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.name) } inline std::string* AlterDomainStmt::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.AlterDomainStmt.name) return _s; } inline const std::string& AlterDomainStmt::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void AlterDomainStmt::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* AlterDomainStmt::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* AlterDomainStmt::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterDomainStmt.name) return _impl_.name_.Release(); } inline void AlterDomainStmt::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDomainStmt.name) } // .pg_query.Node def = 4 [json_name = "def"]; inline bool AlterDomainStmt::has_def() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.def_ != nullptr); return value; } inline void AlterDomainStmt::clear_def() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.def_ != nullptr) _impl_.def_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& AlterDomainStmt::_internal_def() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.def_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterDomainStmt::def() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.def) return _internal_def(); } inline void AlterDomainStmt::unsafe_arena_set_allocated_def(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.def_); } _impl_.def_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterDomainStmt.def) } inline ::pg_query::Node* AlterDomainStmt::release_def() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.def_; _impl_.def_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* AlterDomainStmt::unsafe_arena_release_def() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterDomainStmt.def) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.def_; _impl_.def_ = nullptr; return temp; } inline ::pg_query::Node* AlterDomainStmt::_internal_mutable_def() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.def_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.def_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.def_; } inline ::pg_query::Node* AlterDomainStmt::mutable_def() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_def(); // @@protoc_insertion_point(field_mutable:pg_query.AlterDomainStmt.def) return _msg; } inline void AlterDomainStmt::set_allocated_def(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.def_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.def_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDomainStmt.def) } // .pg_query.DropBehavior behavior = 5 [json_name = "behavior"]; inline void AlterDomainStmt::clear_behavior() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior AlterDomainStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.behavior) return _internal_behavior(); } inline void AlterDomainStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.behavior) } inline ::pg_query::DropBehavior AlterDomainStmt::_internal_behavior() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::DropBehavior>(_impl_.behavior_); } inline void AlterDomainStmt::_internal_set_behavior(::pg_query::DropBehavior value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.behavior_ = value; } // bool missing_ok = 6 [json_name = "missing_ok"]; inline void AlterDomainStmt::clear_missing_ok() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.missing_ok_ = false; } inline bool AlterDomainStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.missing_ok) return _internal_missing_ok(); } inline void AlterDomainStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.missing_ok) } inline bool AlterDomainStmt::_internal_missing_ok() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.missing_ok_; } inline void AlterDomainStmt::_internal_set_missing_ok(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.missing_ok_ = value; } // ------------------------------------------------------------------- // GrantStmt // bool is_grant = 1 [json_name = "is_grant"]; inline void GrantStmt::clear_is_grant() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_grant_ = false; } inline bool GrantStmt::is_grant() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.is_grant) return _internal_is_grant(); } inline void GrantStmt::set_is_grant(bool value) { _internal_set_is_grant(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.is_grant) } inline bool GrantStmt::_internal_is_grant() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_grant_; } inline void GrantStmt::_internal_set_is_grant(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_grant_ = value; } // .pg_query.GrantTargetType targtype = 2 [json_name = "targtype"]; inline void GrantStmt::clear_targtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.targtype_ = 0; } inline ::pg_query::GrantTargetType GrantStmt::targtype() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.targtype) return _internal_targtype(); } inline void GrantStmt::set_targtype(::pg_query::GrantTargetType value) { _internal_set_targtype(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.targtype) } inline ::pg_query::GrantTargetType GrantStmt::_internal_targtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::GrantTargetType>(_impl_.targtype_); } inline void GrantStmt::_internal_set_targtype(::pg_query::GrantTargetType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.targtype_ = value; } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; inline void GrantStmt::clear_objtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.objtype_ = 0; } inline ::pg_query::ObjectType GrantStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.objtype) return _internal_objtype(); } inline void GrantStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.objtype) } inline ::pg_query::ObjectType GrantStmt::_internal_objtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.objtype_); } inline void GrantStmt::_internal_set_objtype(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.objtype_ = value; } // repeated .pg_query.Node objects = 4 [json_name = "objects"]; inline int GrantStmt::_internal_objects_size() const { return _internal_objects().size(); } inline int GrantStmt::objects_size() const { return _internal_objects_size(); } inline void GrantStmt::clear_objects() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.objects_.Clear(); } inline ::pg_query::Node* GrantStmt::mutable_objects(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.GrantStmt.objects) return _internal_mutable_objects()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GrantStmt::mutable_objects() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantStmt.objects) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_objects(); } inline const ::pg_query::Node& GrantStmt::objects(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.objects) return _internal_objects().Get(index); } inline ::pg_query::Node* GrantStmt::add_objects() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_objects()->Add(); // @@protoc_insertion_point(field_add:pg_query.GrantStmt.objects) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GrantStmt::objects() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.GrantStmt.objects) return _internal_objects(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GrantStmt::_internal_objects() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.objects_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GrantStmt::_internal_mutable_objects() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.objects_; } // repeated .pg_query.Node privileges = 5 [json_name = "privileges"]; inline int GrantStmt::_internal_privileges_size() const { return _internal_privileges().size(); } inline int GrantStmt::privileges_size() const { return _internal_privileges_size(); } inline void GrantStmt::clear_privileges() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.privileges_.Clear(); } inline ::pg_query::Node* GrantStmt::mutable_privileges(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.GrantStmt.privileges) return _internal_mutable_privileges()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GrantStmt::mutable_privileges() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantStmt.privileges) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_privileges(); } inline const ::pg_query::Node& GrantStmt::privileges(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.privileges) return _internal_privileges().Get(index); } inline ::pg_query::Node* GrantStmt::add_privileges() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_privileges()->Add(); // @@protoc_insertion_point(field_add:pg_query.GrantStmt.privileges) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GrantStmt::privileges() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.GrantStmt.privileges) return _internal_privileges(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GrantStmt::_internal_privileges() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.privileges_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GrantStmt::_internal_mutable_privileges() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.privileges_; } // repeated .pg_query.Node grantees = 6 [json_name = "grantees"]; inline int GrantStmt::_internal_grantees_size() const { return _internal_grantees().size(); } inline int GrantStmt::grantees_size() const { return _internal_grantees_size(); } inline void GrantStmt::clear_grantees() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.grantees_.Clear(); } inline ::pg_query::Node* GrantStmt::mutable_grantees(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.GrantStmt.grantees) return _internal_mutable_grantees()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GrantStmt::mutable_grantees() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantStmt.grantees) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_grantees(); } inline const ::pg_query::Node& GrantStmt::grantees(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.grantees) return _internal_grantees().Get(index); } inline ::pg_query::Node* GrantStmt::add_grantees() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_grantees()->Add(); // @@protoc_insertion_point(field_add:pg_query.GrantStmt.grantees) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GrantStmt::grantees() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.GrantStmt.grantees) return _internal_grantees(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GrantStmt::_internal_grantees() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.grantees_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GrantStmt::_internal_mutable_grantees() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.grantees_; } // bool grant_option = 7 [json_name = "grant_option"]; inline void GrantStmt::clear_grant_option() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.grant_option_ = false; } inline bool GrantStmt::grant_option() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.grant_option) return _internal_grant_option(); } inline void GrantStmt::set_grant_option(bool value) { _internal_set_grant_option(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.grant_option) } inline bool GrantStmt::_internal_grant_option() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.grant_option_; } inline void GrantStmt::_internal_set_grant_option(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.grant_option_ = value; } // .pg_query.RoleSpec grantor = 8 [json_name = "grantor"]; inline bool GrantStmt::has_grantor() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.grantor_ != nullptr); return value; } inline void GrantStmt::clear_grantor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.grantor_ != nullptr) _impl_.grantor_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RoleSpec& GrantStmt::_internal_grantor() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RoleSpec* p = _impl_.grantor_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& GrantStmt::grantor() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.grantor) return _internal_grantor(); } inline void GrantStmt::unsafe_arena_set_allocated_grantor(::pg_query::RoleSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.grantor_); } _impl_.grantor_ = reinterpret_cast<::pg_query::RoleSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.GrantStmt.grantor) } inline ::pg_query::RoleSpec* GrantStmt::release_grantor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* released = _impl_.grantor_; _impl_.grantor_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RoleSpec* GrantStmt::unsafe_arena_release_grantor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.GrantStmt.grantor) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* temp = _impl_.grantor_; _impl_.grantor_ = nullptr; return temp; } inline ::pg_query::RoleSpec* GrantStmt::_internal_mutable_grantor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.grantor_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); _impl_.grantor_ = reinterpret_cast<::pg_query::RoleSpec*>(p); } return _impl_.grantor_; } inline ::pg_query::RoleSpec* GrantStmt::mutable_grantor() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RoleSpec* _msg = _internal_mutable_grantor(); // @@protoc_insertion_point(field_mutable:pg_query.GrantStmt.grantor) return _msg; } inline void GrantStmt::set_allocated_grantor(::pg_query::RoleSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RoleSpec*>(_impl_.grantor_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RoleSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.grantor_ = reinterpret_cast<::pg_query::RoleSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.GrantStmt.grantor) } // .pg_query.DropBehavior behavior = 9 [json_name = "behavior"]; inline void GrantStmt::clear_behavior() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior GrantStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.behavior) return _internal_behavior(); } inline void GrantStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.behavior) } inline ::pg_query::DropBehavior GrantStmt::_internal_behavior() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::DropBehavior>(_impl_.behavior_); } inline void GrantStmt::_internal_set_behavior(::pg_query::DropBehavior value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.behavior_ = value; } // ------------------------------------------------------------------- // ObjectWithArgs // repeated .pg_query.Node objname = 1 [json_name = "objname"]; inline int ObjectWithArgs::_internal_objname_size() const { return _internal_objname().size(); } inline int ObjectWithArgs::objname_size() const { return _internal_objname_size(); } inline void ObjectWithArgs::clear_objname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.objname_.Clear(); } inline ::pg_query::Node* ObjectWithArgs::mutable_objname(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ObjectWithArgs.objname) return _internal_mutable_objname()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ObjectWithArgs::mutable_objname() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ObjectWithArgs.objname) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_objname(); } inline const ::pg_query::Node& ObjectWithArgs::objname(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ObjectWithArgs.objname) return _internal_objname().Get(index); } inline ::pg_query::Node* ObjectWithArgs::add_objname() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_objname()->Add(); // @@protoc_insertion_point(field_add:pg_query.ObjectWithArgs.objname) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ObjectWithArgs::objname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ObjectWithArgs.objname) return _internal_objname(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ObjectWithArgs::_internal_objname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.objname_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ObjectWithArgs::_internal_mutable_objname() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.objname_; } // repeated .pg_query.Node objargs = 2 [json_name = "objargs"]; inline int ObjectWithArgs::_internal_objargs_size() const { return _internal_objargs().size(); } inline int ObjectWithArgs::objargs_size() const { return _internal_objargs_size(); } inline void ObjectWithArgs::clear_objargs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.objargs_.Clear(); } inline ::pg_query::Node* ObjectWithArgs::mutable_objargs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ObjectWithArgs.objargs) return _internal_mutable_objargs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ObjectWithArgs::mutable_objargs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ObjectWithArgs.objargs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_objargs(); } inline const ::pg_query::Node& ObjectWithArgs::objargs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ObjectWithArgs.objargs) return _internal_objargs().Get(index); } inline ::pg_query::Node* ObjectWithArgs::add_objargs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_objargs()->Add(); // @@protoc_insertion_point(field_add:pg_query.ObjectWithArgs.objargs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ObjectWithArgs::objargs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ObjectWithArgs.objargs) return _internal_objargs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ObjectWithArgs::_internal_objargs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.objargs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ObjectWithArgs::_internal_mutable_objargs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.objargs_; } // repeated .pg_query.Node objfuncargs = 3 [json_name = "objfuncargs"]; inline int ObjectWithArgs::_internal_objfuncargs_size() const { return _internal_objfuncargs().size(); } inline int ObjectWithArgs::objfuncargs_size() const { return _internal_objfuncargs_size(); } inline void ObjectWithArgs::clear_objfuncargs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.objfuncargs_.Clear(); } inline ::pg_query::Node* ObjectWithArgs::mutable_objfuncargs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ObjectWithArgs.objfuncargs) return _internal_mutable_objfuncargs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ObjectWithArgs::mutable_objfuncargs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ObjectWithArgs.objfuncargs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_objfuncargs(); } inline const ::pg_query::Node& ObjectWithArgs::objfuncargs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ObjectWithArgs.objfuncargs) return _internal_objfuncargs().Get(index); } inline ::pg_query::Node* ObjectWithArgs::add_objfuncargs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_objfuncargs()->Add(); // @@protoc_insertion_point(field_add:pg_query.ObjectWithArgs.objfuncargs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ObjectWithArgs::objfuncargs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ObjectWithArgs.objfuncargs) return _internal_objfuncargs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ObjectWithArgs::_internal_objfuncargs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.objfuncargs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ObjectWithArgs::_internal_mutable_objfuncargs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.objfuncargs_; } // bool args_unspecified = 4 [json_name = "args_unspecified"]; inline void ObjectWithArgs::clear_args_unspecified() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_unspecified_ = false; } inline bool ObjectWithArgs::args_unspecified() const { // @@protoc_insertion_point(field_get:pg_query.ObjectWithArgs.args_unspecified) return _internal_args_unspecified(); } inline void ObjectWithArgs::set_args_unspecified(bool value) { _internal_set_args_unspecified(value); // @@protoc_insertion_point(field_set:pg_query.ObjectWithArgs.args_unspecified) } inline bool ObjectWithArgs::_internal_args_unspecified() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_unspecified_; } inline void ObjectWithArgs::_internal_set_args_unspecified(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.args_unspecified_ = value; } // ------------------------------------------------------------------- // AccessPriv // string priv_name = 1 [json_name = "priv_name"]; inline void AccessPriv::clear_priv_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.priv_name_.ClearToEmpty(); } inline const std::string& AccessPriv::priv_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AccessPriv.priv_name) return _internal_priv_name(); } template inline PROTOBUF_ALWAYS_INLINE void AccessPriv::set_priv_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.priv_name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AccessPriv.priv_name) } inline std::string* AccessPriv::mutable_priv_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_priv_name(); // @@protoc_insertion_point(field_mutable:pg_query.AccessPriv.priv_name) return _s; } inline const std::string& AccessPriv::_internal_priv_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.priv_name_.Get(); } inline void AccessPriv::_internal_set_priv_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.priv_name_.Set(value, GetArena()); } inline std::string* AccessPriv::_internal_mutable_priv_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.priv_name_.Mutable( GetArena()); } inline std::string* AccessPriv::release_priv_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AccessPriv.priv_name) return _impl_.priv_name_.Release(); } inline void AccessPriv::set_allocated_priv_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.priv_name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.priv_name_.IsDefault()) { _impl_.priv_name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_cols().size(); } inline int AccessPriv::cols_size() const { return _internal_cols_size(); } inline void AccessPriv::clear_cols() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cols_.Clear(); } inline ::pg_query::Node* AccessPriv::mutable_cols(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AccessPriv.cols) return _internal_mutable_cols()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AccessPriv::mutable_cols() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AccessPriv.cols) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_cols(); } inline const ::pg_query::Node& AccessPriv::cols(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AccessPriv.cols) return _internal_cols().Get(index); } inline ::pg_query::Node* AccessPriv::add_cols() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_cols()->Add(); // @@protoc_insertion_point(field_add:pg_query.AccessPriv.cols) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AccessPriv::cols() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AccessPriv.cols) return _internal_cols(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AccessPriv::_internal_cols() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cols_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AccessPriv::_internal_mutable_cols() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.cols_; } // ------------------------------------------------------------------- // GrantRoleStmt // repeated .pg_query.Node granted_roles = 1 [json_name = "granted_roles"]; inline int GrantRoleStmt::_internal_granted_roles_size() const { return _internal_granted_roles().size(); } inline int GrantRoleStmt::granted_roles_size() const { return _internal_granted_roles_size(); } inline void GrantRoleStmt::clear_granted_roles() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.granted_roles_.Clear(); } inline ::pg_query::Node* GrantRoleStmt::mutable_granted_roles(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.GrantRoleStmt.granted_roles) return _internal_mutable_granted_roles()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GrantRoleStmt::mutable_granted_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantRoleStmt.granted_roles) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_granted_roles(); } inline const ::pg_query::Node& GrantRoleStmt::granted_roles(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.granted_roles) return _internal_granted_roles().Get(index); } inline ::pg_query::Node* GrantRoleStmt::add_granted_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_granted_roles()->Add(); // @@protoc_insertion_point(field_add:pg_query.GrantRoleStmt.granted_roles) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GrantRoleStmt::granted_roles() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.GrantRoleStmt.granted_roles) return _internal_granted_roles(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GrantRoleStmt::_internal_granted_roles() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.granted_roles_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GrantRoleStmt::_internal_mutable_granted_roles() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.granted_roles_; } // repeated .pg_query.Node grantee_roles = 2 [json_name = "grantee_roles"]; inline int GrantRoleStmt::_internal_grantee_roles_size() const { return _internal_grantee_roles().size(); } inline int GrantRoleStmt::grantee_roles_size() const { return _internal_grantee_roles_size(); } inline void GrantRoleStmt::clear_grantee_roles() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.grantee_roles_.Clear(); } inline ::pg_query::Node* GrantRoleStmt::mutable_grantee_roles(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.GrantRoleStmt.grantee_roles) return _internal_mutable_grantee_roles()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GrantRoleStmt::mutable_grantee_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantRoleStmt.grantee_roles) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_grantee_roles(); } inline const ::pg_query::Node& GrantRoleStmt::grantee_roles(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.grantee_roles) return _internal_grantee_roles().Get(index); } inline ::pg_query::Node* GrantRoleStmt::add_grantee_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_grantee_roles()->Add(); // @@protoc_insertion_point(field_add:pg_query.GrantRoleStmt.grantee_roles) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GrantRoleStmt::grantee_roles() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.GrantRoleStmt.grantee_roles) return _internal_grantee_roles(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GrantRoleStmt::_internal_grantee_roles() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.grantee_roles_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GrantRoleStmt::_internal_mutable_grantee_roles() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.grantee_roles_; } // bool is_grant = 3 [json_name = "is_grant"]; inline void GrantRoleStmt::clear_is_grant() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_grant_ = false; } inline bool GrantRoleStmt::is_grant() const { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.is_grant) return _internal_is_grant(); } inline void GrantRoleStmt::set_is_grant(bool value) { _internal_set_is_grant(value); // @@protoc_insertion_point(field_set:pg_query.GrantRoleStmt.is_grant) } inline bool GrantRoleStmt::_internal_is_grant() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_grant_; } inline void GrantRoleStmt::_internal_set_is_grant(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_grant_ = value; } // repeated .pg_query.Node opt = 4 [json_name = "opt"]; inline int GrantRoleStmt::_internal_opt_size() const { return _internal_opt().size(); } inline int GrantRoleStmt::opt_size() const { return _internal_opt_size(); } inline void GrantRoleStmt::clear_opt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opt_.Clear(); } inline ::pg_query::Node* GrantRoleStmt::mutable_opt(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.GrantRoleStmt.opt) return _internal_mutable_opt()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GrantRoleStmt::mutable_opt() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantRoleStmt.opt) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_opt(); } inline const ::pg_query::Node& GrantRoleStmt::opt(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.opt) return _internal_opt().Get(index); } inline ::pg_query::Node* GrantRoleStmt::add_opt() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_opt()->Add(); // @@protoc_insertion_point(field_add:pg_query.GrantRoleStmt.opt) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GrantRoleStmt::opt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.GrantRoleStmt.opt) return _internal_opt(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& GrantRoleStmt::_internal_opt() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opt_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* GrantRoleStmt::_internal_mutable_opt() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.opt_; } // .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; inline bool GrantRoleStmt::has_grantor() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.grantor_ != nullptr); return value; } inline void GrantRoleStmt::clear_grantor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.grantor_ != nullptr) _impl_.grantor_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RoleSpec& GrantRoleStmt::_internal_grantor() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RoleSpec* p = _impl_.grantor_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& GrantRoleStmt::grantor() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.grantor) return _internal_grantor(); } inline void GrantRoleStmt::unsafe_arena_set_allocated_grantor(::pg_query::RoleSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.grantor_); } _impl_.grantor_ = reinterpret_cast<::pg_query::RoleSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.GrantRoleStmt.grantor) } inline ::pg_query::RoleSpec* GrantRoleStmt::release_grantor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* released = _impl_.grantor_; _impl_.grantor_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RoleSpec* GrantRoleStmt::unsafe_arena_release_grantor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.GrantRoleStmt.grantor) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* temp = _impl_.grantor_; _impl_.grantor_ = nullptr; return temp; } inline ::pg_query::RoleSpec* GrantRoleStmt::_internal_mutable_grantor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.grantor_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); _impl_.grantor_ = reinterpret_cast<::pg_query::RoleSpec*>(p); } return _impl_.grantor_; } inline ::pg_query::RoleSpec* GrantRoleStmt::mutable_grantor() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RoleSpec* _msg = _internal_mutable_grantor(); // @@protoc_insertion_point(field_mutable:pg_query.GrantRoleStmt.grantor) return _msg; } inline void GrantRoleStmt::set_allocated_grantor(::pg_query::RoleSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RoleSpec*>(_impl_.grantor_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RoleSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.grantor_ = reinterpret_cast<::pg_query::RoleSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.GrantRoleStmt.grantor) } // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; inline void GrantRoleStmt::clear_behavior() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior GrantRoleStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.behavior) return _internal_behavior(); } inline void GrantRoleStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.GrantRoleStmt.behavior) } inline ::pg_query::DropBehavior GrantRoleStmt::_internal_behavior() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::DropBehavior>(_impl_.behavior_); } inline void GrantRoleStmt::_internal_set_behavior(::pg_query::DropBehavior value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.behavior_ = value; } // ------------------------------------------------------------------- // AlterDefaultPrivilegesStmt // repeated .pg_query.Node options = 1 [json_name = "options"]; inline int AlterDefaultPrivilegesStmt::_internal_options_size() const { return _internal_options().size(); } inline int AlterDefaultPrivilegesStmt::options_size() const { return _internal_options_size(); } inline void AlterDefaultPrivilegesStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* AlterDefaultPrivilegesStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterDefaultPrivilegesStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterDefaultPrivilegesStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterDefaultPrivilegesStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& AlterDefaultPrivilegesStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterDefaultPrivilegesStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* AlterDefaultPrivilegesStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterDefaultPrivilegesStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterDefaultPrivilegesStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterDefaultPrivilegesStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterDefaultPrivilegesStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterDefaultPrivilegesStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // .pg_query.GrantStmt action = 2 [json_name = "action"]; inline bool AlterDefaultPrivilegesStmt::has_action() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.action_ != nullptr); return value; } inline void AlterDefaultPrivilegesStmt::clear_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.action_ != nullptr) _impl_.action_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::GrantStmt& AlterDefaultPrivilegesStmt::_internal_action() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::GrantStmt* p = _impl_.action_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_GrantStmt_default_instance_); } inline const ::pg_query::GrantStmt& AlterDefaultPrivilegesStmt::action() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterDefaultPrivilegesStmt.action) return _internal_action(); } inline void AlterDefaultPrivilegesStmt::unsafe_arena_set_allocated_action(::pg_query::GrantStmt* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.action_); } _impl_.action_ = reinterpret_cast<::pg_query::GrantStmt*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterDefaultPrivilegesStmt.action) } inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::release_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::GrantStmt* released = _impl_.action_; _impl_.action_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::unsafe_arena_release_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterDefaultPrivilegesStmt.action) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::GrantStmt* temp = _impl_.action_; _impl_.action_ = nullptr; return temp; } inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::_internal_mutable_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.action_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::GrantStmt>(GetArena()); _impl_.action_ = reinterpret_cast<::pg_query::GrantStmt*>(p); } return _impl_.action_; } inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::mutable_action() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::GrantStmt* _msg = _internal_mutable_action(); // @@protoc_insertion_point(field_mutable:pg_query.AlterDefaultPrivilegesStmt.action) return _msg; } inline void AlterDefaultPrivilegesStmt::set_allocated_action(::pg_query::GrantStmt* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::GrantStmt*>(_impl_.action_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::GrantStmt*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.action_ = reinterpret_cast<::pg_query::GrantStmt*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDefaultPrivilegesStmt.action) } // ------------------------------------------------------------------- // CopyStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool CopyStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void CopyStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& CopyStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& CopyStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.relation) return _internal_relation(); } inline void CopyStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CopyStmt.relation) } inline ::pg_query::RangeVar* CopyStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* CopyStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CopyStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* CopyStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* CopyStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.relation) return _msg; } inline void CopyStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CopyStmt.relation) } // .pg_query.Node query = 2 [json_name = "query"]; inline bool CopyStmt::has_query() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.query_ != nullptr); return value; } inline void CopyStmt::clear_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.query_ != nullptr) _impl_.query_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& CopyStmt::_internal_query() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.query_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CopyStmt::query() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.query) return _internal_query(); } inline void CopyStmt::unsafe_arena_set_allocated_query(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.query_); } _impl_.query_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CopyStmt.query) } inline ::pg_query::Node* CopyStmt::release_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.query_; _impl_.query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CopyStmt::unsafe_arena_release_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CopyStmt.query) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; return temp; } inline ::pg_query::Node* CopyStmt::_internal_mutable_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.query_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.query_; } inline ::pg_query::Node* CopyStmt::mutable_query() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_query(); // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.query) return _msg; } inline void CopyStmt::set_allocated_query(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.query_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.query_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_attlist().size(); } inline int CopyStmt::attlist_size() const { return _internal_attlist_size(); } inline void CopyStmt::clear_attlist() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.attlist_.Clear(); } inline ::pg_query::Node* CopyStmt::mutable_attlist(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.attlist) return _internal_mutable_attlist()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CopyStmt::mutable_attlist() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CopyStmt.attlist) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_attlist(); } inline const ::pg_query::Node& CopyStmt::attlist(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.attlist) return _internal_attlist().Get(index); } inline ::pg_query::Node* CopyStmt::add_attlist() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_attlist()->Add(); // @@protoc_insertion_point(field_add:pg_query.CopyStmt.attlist) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CopyStmt::attlist() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CopyStmt.attlist) return _internal_attlist(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CopyStmt::_internal_attlist() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.attlist_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CopyStmt::_internal_mutable_attlist() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.attlist_; } // bool is_from = 4 [json_name = "is_from"]; inline void CopyStmt::clear_is_from() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_from_ = false; } inline bool CopyStmt::is_from() const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.is_from) return _internal_is_from(); } inline void CopyStmt::set_is_from(bool value) { _internal_set_is_from(value); // @@protoc_insertion_point(field_set:pg_query.CopyStmt.is_from) } inline bool CopyStmt::_internal_is_from() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_from_; } inline void CopyStmt::_internal_set_is_from(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_from_ = value; } // bool is_program = 5 [json_name = "is_program"]; inline void CopyStmt::clear_is_program() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_program_ = false; } inline bool CopyStmt::is_program() const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.is_program) return _internal_is_program(); } inline void CopyStmt::set_is_program(bool value) { _internal_set_is_program(value); // @@protoc_insertion_point(field_set:pg_query.CopyStmt.is_program) } inline bool CopyStmt::_internal_is_program() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_program_; } inline void CopyStmt::_internal_set_is_program(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_program_ = value; } // string filename = 6 [json_name = "filename"]; inline void CopyStmt::clear_filename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.filename_.ClearToEmpty(); } inline const std::string& CopyStmt::filename() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.filename) return _internal_filename(); } template inline PROTOBUF_ALWAYS_INLINE void CopyStmt::set_filename(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.filename_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CopyStmt.filename) } inline std::string* CopyStmt::mutable_filename() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_filename(); // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.filename) return _s; } inline const std::string& CopyStmt::_internal_filename() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.filename_.Get(); } inline void CopyStmt::_internal_set_filename(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.filename_.Set(value, GetArena()); } inline std::string* CopyStmt::_internal_mutable_filename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.filename_.Mutable( GetArena()); } inline std::string* CopyStmt::release_filename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CopyStmt.filename) return _impl_.filename_.Release(); } inline void CopyStmt::set_allocated_filename(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.filename_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.filename_.IsDefault()) { _impl_.filename_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_options().size(); } inline int CopyStmt::options_size() const { return _internal_options_size(); } inline void CopyStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* CopyStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CopyStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CopyStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& CopyStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* CopyStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CopyStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CopyStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CopyStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CopyStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CopyStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; inline bool CopyStmt::has_where_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.where_clause_ != nullptr); return value; } inline void CopyStmt::clear_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.where_clause_ != nullptr) _impl_.where_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& CopyStmt::_internal_where_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.where_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CopyStmt::where_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CopyStmt.where_clause) } inline ::pg_query::Node* CopyStmt::release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CopyStmt::unsafe_arena_release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CopyStmt.where_clause) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* CopyStmt::_internal_mutable_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.where_clause_; } inline ::pg_query::Node* CopyStmt::mutable_where_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_where_clause(); // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.where_clause) return _msg; } inline void CopyStmt::set_allocated_where_clause(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.where_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CopyStmt.where_clause) } // ------------------------------------------------------------------- // VariableSetStmt // .pg_query.VariableSetKind kind = 1 [json_name = "kind"]; inline void VariableSetStmt::clear_kind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.kind_ = 0; } inline ::pg_query::VariableSetKind VariableSetStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.kind) return _internal_kind(); } inline void VariableSetStmt::set_kind(::pg_query::VariableSetKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.VariableSetStmt.kind) } inline ::pg_query::VariableSetKind VariableSetStmt::_internal_kind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::VariableSetKind>(_impl_.kind_); } inline void VariableSetStmt::_internal_set_kind(::pg_query::VariableSetKind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.kind_ = value; } // string name = 2 [json_name = "name"]; inline void VariableSetStmt::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& VariableSetStmt::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void VariableSetStmt::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.VariableSetStmt.name) } inline std::string* VariableSetStmt::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.VariableSetStmt.name) return _s; } inline const std::string& VariableSetStmt::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void VariableSetStmt::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* VariableSetStmt::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* VariableSetStmt::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.VariableSetStmt.name) return _impl_.name_.Release(); } inline void VariableSetStmt::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_args().size(); } inline int VariableSetStmt::args_size() const { return _internal_args_size(); } inline void VariableSetStmt::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* VariableSetStmt::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.VariableSetStmt.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* VariableSetStmt::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.VariableSetStmt.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& VariableSetStmt::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.args) return _internal_args().Get(index); } inline ::pg_query::Node* VariableSetStmt::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.VariableSetStmt.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& VariableSetStmt::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.VariableSetStmt.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& VariableSetStmt::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* VariableSetStmt::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // bool is_local = 4 [json_name = "is_local"]; inline void VariableSetStmt::clear_is_local() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_local_ = false; } inline bool VariableSetStmt::is_local() const { // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.is_local) return _internal_is_local(); } inline void VariableSetStmt::set_is_local(bool value) { _internal_set_is_local(value); // @@protoc_insertion_point(field_set:pg_query.VariableSetStmt.is_local) } inline bool VariableSetStmt::_internal_is_local() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_local_; } inline void VariableSetStmt::_internal_set_is_local(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_local_ = value; } // ------------------------------------------------------------------- // VariableShowStmt // string name = 1 [json_name = "name"]; inline void VariableShowStmt::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& VariableShowStmt::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.VariableShowStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void VariableShowStmt::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.VariableShowStmt.name) } inline std::string* VariableShowStmt::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.VariableShowStmt.name) return _s; } inline const std::string& VariableShowStmt::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void VariableShowStmt::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* VariableShowStmt::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* VariableShowStmt::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.VariableShowStmt.name) return _impl_.name_.Release(); } inline void VariableShowStmt::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.VariableShowStmt.name) } // ------------------------------------------------------------------- // CreateStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool CreateStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void CreateStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& CreateStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& CreateStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.relation) return _internal_relation(); } inline void CreateStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.relation) } inline ::pg_query::RangeVar* CreateStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* CreateStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreateStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* CreateStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.relation) return _msg; } inline void CreateStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@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 _internal_table_elts().size(); } inline int CreateStmt::table_elts_size() const { return _internal_table_elts_size(); } inline void CreateStmt::clear_table_elts() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.table_elts_.Clear(); } inline ::pg_query::Node* CreateStmt::mutable_table_elts(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.table_elts) return _internal_mutable_table_elts()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStmt::mutable_table_elts() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.table_elts) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_table_elts(); } inline const ::pg_query::Node& CreateStmt::table_elts(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.table_elts) return _internal_table_elts().Get(index); } inline ::pg_query::Node* CreateStmt::add_table_elts() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_table_elts()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateStmt.table_elts) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStmt::table_elts() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateStmt.table_elts) return _internal_table_elts(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStmt::_internal_table_elts() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.table_elts_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStmt::_internal_mutable_table_elts() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.table_elts_; } // repeated .pg_query.Node inh_relations = 3 [json_name = "inhRelations"]; inline int CreateStmt::_internal_inh_relations_size() const { return _internal_inh_relations().size(); } inline int CreateStmt::inh_relations_size() const { return _internal_inh_relations_size(); } inline void CreateStmt::clear_inh_relations() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inh_relations_.Clear(); } inline ::pg_query::Node* CreateStmt::mutable_inh_relations(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.inh_relations) return _internal_mutable_inh_relations()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStmt::mutable_inh_relations() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.inh_relations) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_inh_relations(); } inline const ::pg_query::Node& CreateStmt::inh_relations(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.inh_relations) return _internal_inh_relations().Get(index); } inline ::pg_query::Node* CreateStmt::add_inh_relations() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_inh_relations()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateStmt.inh_relations) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStmt::inh_relations() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateStmt.inh_relations) return _internal_inh_relations(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStmt::_internal_inh_relations() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inh_relations_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStmt::_internal_mutable_inh_relations() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.inh_relations_; } // .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; inline bool CreateStmt::has_partbound() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.partbound_ != nullptr); return value; } inline void CreateStmt::clear_partbound() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.partbound_ != nullptr) _impl_.partbound_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::PartitionBoundSpec& CreateStmt::_internal_partbound() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::PartitionBoundSpec* p = _impl_.partbound_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_PartitionBoundSpec_default_instance_); } inline const ::pg_query::PartitionBoundSpec& CreateStmt::partbound() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.partbound) return _internal_partbound(); } inline void CreateStmt::unsafe_arena_set_allocated_partbound(::pg_query::PartitionBoundSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.partbound_); } _impl_.partbound_ = reinterpret_cast<::pg_query::PartitionBoundSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.partbound) } inline ::pg_query::PartitionBoundSpec* CreateStmt::release_partbound() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::PartitionBoundSpec* released = _impl_.partbound_; _impl_.partbound_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::PartitionBoundSpec* CreateStmt::unsafe_arena_release_partbound() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateStmt.partbound) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::PartitionBoundSpec* temp = _impl_.partbound_; _impl_.partbound_ = nullptr; return temp; } inline ::pg_query::PartitionBoundSpec* CreateStmt::_internal_mutable_partbound() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.partbound_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::PartitionBoundSpec>(GetArena()); _impl_.partbound_ = reinterpret_cast<::pg_query::PartitionBoundSpec*>(p); } return _impl_.partbound_; } inline ::pg_query::PartitionBoundSpec* CreateStmt::mutable_partbound() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::PartitionBoundSpec* _msg = _internal_mutable_partbound(); // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.partbound) return _msg; } inline void CreateStmt::set_allocated_partbound(::pg_query::PartitionBoundSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::PartitionBoundSpec*>(_impl_.partbound_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::PartitionBoundSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.partbound_ = reinterpret_cast<::pg_query::PartitionBoundSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.partbound) } // .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; inline bool CreateStmt::has_partspec() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.partspec_ != nullptr); return value; } inline void CreateStmt::clear_partspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.partspec_ != nullptr) _impl_.partspec_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::PartitionSpec& CreateStmt::_internal_partspec() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::PartitionSpec* p = _impl_.partspec_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_PartitionSpec_default_instance_); } inline const ::pg_query::PartitionSpec& CreateStmt::partspec() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.partspec) return _internal_partspec(); } inline void CreateStmt::unsafe_arena_set_allocated_partspec(::pg_query::PartitionSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.partspec_); } _impl_.partspec_ = reinterpret_cast<::pg_query::PartitionSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.partspec) } inline ::pg_query::PartitionSpec* CreateStmt::release_partspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::PartitionSpec* released = _impl_.partspec_; _impl_.partspec_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::PartitionSpec* CreateStmt::unsafe_arena_release_partspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateStmt.partspec) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::PartitionSpec* temp = _impl_.partspec_; _impl_.partspec_ = nullptr; return temp; } inline ::pg_query::PartitionSpec* CreateStmt::_internal_mutable_partspec() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.partspec_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::PartitionSpec>(GetArena()); _impl_.partspec_ = reinterpret_cast<::pg_query::PartitionSpec*>(p); } return _impl_.partspec_; } inline ::pg_query::PartitionSpec* CreateStmt::mutable_partspec() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::PartitionSpec* _msg = _internal_mutable_partspec(); // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.partspec) return _msg; } inline void CreateStmt::set_allocated_partspec(::pg_query::PartitionSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::PartitionSpec*>(_impl_.partspec_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::PartitionSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.partspec_ = reinterpret_cast<::pg_query::PartitionSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.partspec) } // .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; inline bool CreateStmt::has_of_typename() const { bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0; PROTOBUF_ASSUME(!value || _impl_.of_typename_ != nullptr); return value; } inline void CreateStmt::clear_of_typename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.of_typename_ != nullptr) _impl_.of_typename_->Clear(); _impl_._has_bits_[0] &= ~0x00000008u; } inline const ::pg_query::TypeName& CreateStmt::_internal_of_typename() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.of_typename_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateStmt::of_typename() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.of_typename_); } _impl_.of_typename_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.of_typename) } inline ::pg_query::TypeName* CreateStmt::release_of_typename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::TypeName* released = _impl_.of_typename_; _impl_.of_typename_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* CreateStmt::unsafe_arena_release_of_typename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateStmt.of_typename) _impl_._has_bits_[0] &= ~0x00000008u; ::pg_query::TypeName* temp = _impl_.of_typename_; _impl_.of_typename_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateStmt::_internal_mutable_of_typename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000008u; if (_impl_.of_typename_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.of_typename_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.of_typename_; } inline ::pg_query::TypeName* CreateStmt::mutable_of_typename() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_of_typename(); // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.of_typename) return _msg; } inline void CreateStmt::set_allocated_of_typename(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.of_typename_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000008u; } else { _impl_._has_bits_[0] &= ~0x00000008u; } _impl_.of_typename_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@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 _internal_constraints().size(); } inline int CreateStmt::constraints_size() const { return _internal_constraints_size(); } inline void CreateStmt::clear_constraints() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.constraints_.Clear(); } inline ::pg_query::Node* CreateStmt::mutable_constraints(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.constraints) return _internal_mutable_constraints()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStmt::mutable_constraints() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.constraints) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_constraints(); } inline const ::pg_query::Node& CreateStmt::constraints(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.constraints) return _internal_constraints().Get(index); } inline ::pg_query::Node* CreateStmt::add_constraints() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_constraints()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateStmt.constraints) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStmt::constraints() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateStmt.constraints) return _internal_constraints(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStmt::_internal_constraints() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.constraints_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStmt::_internal_mutable_constraints() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.constraints_; } // repeated .pg_query.Node options = 8 [json_name = "options"]; inline int CreateStmt::_internal_options_size() const { return _internal_options().size(); } inline int CreateStmt::options_size() const { return _internal_options_size(); } inline void CreateStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* CreateStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& CreateStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* CreateStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // .pg_query.OnCommitAction oncommit = 9 [json_name = "oncommit"]; inline void CreateStmt::clear_oncommit() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.oncommit_ = 0; } inline ::pg_query::OnCommitAction CreateStmt::oncommit() const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.oncommit) return _internal_oncommit(); } inline void CreateStmt::set_oncommit(::pg_query::OnCommitAction value) { _internal_set_oncommit(value); // @@protoc_insertion_point(field_set:pg_query.CreateStmt.oncommit) } inline ::pg_query::OnCommitAction CreateStmt::_internal_oncommit() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::OnCommitAction>(_impl_.oncommit_); } inline void CreateStmt::_internal_set_oncommit(::pg_query::OnCommitAction value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.oncommit_ = value; } // string tablespacename = 10 [json_name = "tablespacename"]; inline void CreateStmt::clear_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.tablespacename_.ClearToEmpty(); } inline const std::string& CreateStmt::tablespacename() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.tablespacename) return _internal_tablespacename(); } template inline PROTOBUF_ALWAYS_INLINE void CreateStmt::set_tablespacename(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.tablespacename_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateStmt.tablespacename) } inline std::string* CreateStmt::mutable_tablespacename() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_tablespacename(); // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.tablespacename) return _s; } inline const std::string& CreateStmt::_internal_tablespacename() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.tablespacename_.Get(); } inline void CreateStmt::_internal_set_tablespacename(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.tablespacename_.Set(value, GetArena()); } inline std::string* CreateStmt::_internal_mutable_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.tablespacename_.Mutable( GetArena()); } inline std::string* CreateStmt::release_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateStmt.tablespacename) return _impl_.tablespacename_.Release(); } inline void CreateStmt::set_allocated_tablespacename(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.tablespacename_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.tablespacename_.IsDefault()) { _impl_.tablespacename_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.tablespacename) } // string access_method = 11 [json_name = "accessMethod"]; inline void CreateStmt::clear_access_method() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.access_method_.ClearToEmpty(); } inline const std::string& CreateStmt::access_method() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.access_method) return _internal_access_method(); } template inline PROTOBUF_ALWAYS_INLINE void CreateStmt::set_access_method(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.access_method_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateStmt.access_method) } inline std::string* CreateStmt::mutable_access_method() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_access_method(); // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.access_method) return _s; } inline const std::string& CreateStmt::_internal_access_method() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.access_method_.Get(); } inline void CreateStmt::_internal_set_access_method(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.access_method_.Set(value, GetArena()); } inline std::string* CreateStmt::_internal_mutable_access_method() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.access_method_.Mutable( GetArena()); } inline std::string* CreateStmt::release_access_method() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateStmt.access_method) return _impl_.access_method_.Release(); } inline void CreateStmt::set_allocated_access_method(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.access_method_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.access_method_.IsDefault()) { _impl_.access_method_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.if_not_exists_ = false; } 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::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateStmt.if_not_exists) } inline bool CreateStmt::_internal_if_not_exists() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.if_not_exists_; } inline void CreateStmt::_internal_set_if_not_exists(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.if_not_exists_ = value; } // ------------------------------------------------------------------- // Constraint // .pg_query.ConstrType contype = 1 [json_name = "contype"]; inline void Constraint::clear_contype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.contype_ = 0; } inline ::pg_query::ConstrType Constraint::contype() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.contype) return _internal_contype(); } inline void Constraint::set_contype(::pg_query::ConstrType value) { _internal_set_contype(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.contype) } inline ::pg_query::ConstrType Constraint::_internal_contype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ConstrType>(_impl_.contype_); } inline void Constraint::_internal_set_contype(::pg_query::ConstrType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.contype_ = value; } // string conname = 2 [json_name = "conname"]; inline void Constraint::clear_conname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conname_.ClearToEmpty(); } inline const std::string& Constraint::conname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.conname) return _internal_conname(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_conname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.conname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.Constraint.conname) } inline std::string* Constraint::mutable_conname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_conname(); // @@protoc_insertion_point(field_mutable:pg_query.Constraint.conname) return _s; } inline const std::string& Constraint::_internal_conname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.conname_.Get(); } inline void Constraint::_internal_set_conname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.conname_.Set(value, GetArena()); } inline std::string* Constraint::_internal_mutable_conname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.conname_.Mutable( GetArena()); } inline std::string* Constraint::release_conname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Constraint.conname) return _impl_.conname_.Release(); } inline void Constraint::set_allocated_conname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.conname_.IsDefault()) { _impl_.conname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.conname) } // bool deferrable = 3 [json_name = "deferrable"]; inline void Constraint::clear_deferrable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.deferrable_ = false; } inline bool Constraint::deferrable() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.deferrable) return _internal_deferrable(); } inline void Constraint::set_deferrable(bool value) { _internal_set_deferrable(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.deferrable) } inline bool Constraint::_internal_deferrable() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.deferrable_; } inline void Constraint::_internal_set_deferrable(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.deferrable_ = value; } // bool initdeferred = 4 [json_name = "initdeferred"]; inline void Constraint::clear_initdeferred() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.initdeferred_ = false; } inline bool Constraint::initdeferred() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.initdeferred) return _internal_initdeferred(); } inline void Constraint::set_initdeferred(bool value) { _internal_set_initdeferred(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.initdeferred) } inline bool Constraint::_internal_initdeferred() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.initdeferred_; } inline void Constraint::_internal_set_initdeferred(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.initdeferred_ = value; } // bool skip_validation = 5 [json_name = "skip_validation"]; inline void Constraint::clear_skip_validation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.skip_validation_ = false; } inline bool Constraint::skip_validation() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.skip_validation) return _internal_skip_validation(); } inline void Constraint::set_skip_validation(bool value) { _internal_set_skip_validation(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.skip_validation) } inline bool Constraint::_internal_skip_validation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.skip_validation_; } inline void Constraint::_internal_set_skip_validation(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.skip_validation_ = value; } // bool initially_valid = 6 [json_name = "initially_valid"]; inline void Constraint::clear_initially_valid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.initially_valid_ = false; } inline bool Constraint::initially_valid() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.initially_valid) return _internal_initially_valid(); } inline void Constraint::set_initially_valid(bool value) { _internal_set_initially_valid(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.initially_valid) } inline bool Constraint::_internal_initially_valid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.initially_valid_; } inline void Constraint::_internal_set_initially_valid(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.initially_valid_ = value; } // bool is_no_inherit = 7 [json_name = "is_no_inherit"]; inline void Constraint::clear_is_no_inherit() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_no_inherit_ = false; } 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::set_is_no_inherit(bool value) { _internal_set_is_no_inherit(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.is_no_inherit) } inline bool Constraint::_internal_is_no_inherit() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_no_inherit_; } inline void Constraint::_internal_set_is_no_inherit(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_no_inherit_ = value; } // .pg_query.Node raw_expr = 8 [json_name = "raw_expr"]; inline bool Constraint::has_raw_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.raw_expr_ != nullptr); return value; } inline void Constraint::clear_raw_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.raw_expr_ != nullptr) _impl_.raw_expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& Constraint::_internal_raw_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.raw_expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Constraint::raw_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.raw_expr_); } _impl_.raw_expr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Constraint.raw_expr) } inline ::pg_query::Node* Constraint::release_raw_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.raw_expr_; _impl_.raw_expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* Constraint::unsafe_arena_release_raw_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Constraint.raw_expr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.raw_expr_; _impl_.raw_expr_ = nullptr; return temp; } inline ::pg_query::Node* Constraint::_internal_mutable_raw_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.raw_expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.raw_expr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.raw_expr_; } inline ::pg_query::Node* Constraint::mutable_raw_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_raw_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Constraint.raw_expr) return _msg; } inline void Constraint::set_allocated_raw_expr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.raw_expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.raw_expr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.raw_expr) } // string cooked_expr = 9 [json_name = "cooked_expr"]; inline void Constraint::clear_cooked_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cooked_expr_.ClearToEmpty(); } inline const std::string& Constraint::cooked_expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.cooked_expr) return _internal_cooked_expr(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_cooked_expr(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cooked_expr_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.Constraint.cooked_expr) } inline std::string* Constraint::mutable_cooked_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_cooked_expr(); // @@protoc_insertion_point(field_mutable:pg_query.Constraint.cooked_expr) return _s; } inline const std::string& Constraint::_internal_cooked_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cooked_expr_.Get(); } inline void Constraint::_internal_set_cooked_expr(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cooked_expr_.Set(value, GetArena()); } inline std::string* Constraint::_internal_mutable_cooked_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.cooked_expr_.Mutable( GetArena()); } inline std::string* Constraint::release_cooked_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Constraint.cooked_expr) return _impl_.cooked_expr_.Release(); } inline void Constraint::set_allocated_cooked_expr(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cooked_expr_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.cooked_expr_.IsDefault()) { _impl_.cooked_expr_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.cooked_expr) } // string generated_when = 10 [json_name = "generated_when"]; inline void Constraint::clear_generated_when() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.generated_when_.ClearToEmpty(); } inline const std::string& Constraint::generated_when() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.generated_when) return _internal_generated_when(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_generated_when(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.generated_when_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.Constraint.generated_when) } inline std::string* Constraint::mutable_generated_when() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_generated_when(); // @@protoc_insertion_point(field_mutable:pg_query.Constraint.generated_when) return _s; } inline const std::string& Constraint::_internal_generated_when() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.generated_when_.Get(); } inline void Constraint::_internal_set_generated_when(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.generated_when_.Set(value, GetArena()); } inline std::string* Constraint::_internal_mutable_generated_when() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.generated_when_.Mutable( GetArena()); } inline std::string* Constraint::release_generated_when() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Constraint.generated_when) return _impl_.generated_when_.Release(); } inline void Constraint::set_allocated_generated_when(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.generated_when_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.generated_when_.IsDefault()) { _impl_.generated_when_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.generated_when) } // int32 inhcount = 11 [json_name = "inhcount"]; inline void Constraint::clear_inhcount() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inhcount_ = 0; } inline ::int32_t Constraint::inhcount() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.inhcount) return _internal_inhcount(); } inline void Constraint::set_inhcount(::int32_t value) { _internal_set_inhcount(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.inhcount) } inline ::int32_t Constraint::_internal_inhcount() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inhcount_; } inline void Constraint::_internal_set_inhcount(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inhcount_ = value; } // bool nulls_not_distinct = 12 [json_name = "nulls_not_distinct"]; inline void Constraint::clear_nulls_not_distinct() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.nulls_not_distinct_ = false; } inline bool Constraint::nulls_not_distinct() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.nulls_not_distinct) return _internal_nulls_not_distinct(); } inline void Constraint::set_nulls_not_distinct(bool value) { _internal_set_nulls_not_distinct(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.nulls_not_distinct) } inline bool Constraint::_internal_nulls_not_distinct() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.nulls_not_distinct_; } inline void Constraint::_internal_set_nulls_not_distinct(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.nulls_not_distinct_ = value; } // repeated .pg_query.Node keys = 13 [json_name = "keys"]; inline int Constraint::_internal_keys_size() const { return _internal_keys().size(); } inline int Constraint::keys_size() const { return _internal_keys_size(); } inline void Constraint::clear_keys() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.keys_.Clear(); } inline ::pg_query::Node* Constraint::mutable_keys(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.keys) return _internal_mutable_keys()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::mutable_keys() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.keys) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_keys(); } inline const ::pg_query::Node& Constraint::keys(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.keys) return _internal_keys().Get(index); } inline ::pg_query::Node* Constraint::add_keys() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_keys()->Add(); // @@protoc_insertion_point(field_add:pg_query.Constraint.keys) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::keys() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Constraint.keys) return _internal_keys(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::_internal_keys() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.keys_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::_internal_mutable_keys() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.keys_; } // repeated .pg_query.Node including = 14 [json_name = "including"]; inline int Constraint::_internal_including_size() const { return _internal_including().size(); } inline int Constraint::including_size() const { return _internal_including_size(); } inline void Constraint::clear_including() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.including_.Clear(); } inline ::pg_query::Node* Constraint::mutable_including(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.including) return _internal_mutable_including()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::mutable_including() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.including) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_including(); } inline const ::pg_query::Node& Constraint::including(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.including) return _internal_including().Get(index); } inline ::pg_query::Node* Constraint::add_including() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_including()->Add(); // @@protoc_insertion_point(field_add:pg_query.Constraint.including) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::including() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Constraint.including) return _internal_including(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::_internal_including() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.including_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::_internal_mutable_including() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.including_; } // repeated .pg_query.Node exclusions = 15 [json_name = "exclusions"]; inline int Constraint::_internal_exclusions_size() const { return _internal_exclusions().size(); } inline int Constraint::exclusions_size() const { return _internal_exclusions_size(); } inline void Constraint::clear_exclusions() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.exclusions_.Clear(); } inline ::pg_query::Node* Constraint::mutable_exclusions(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.exclusions) return _internal_mutable_exclusions()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::mutable_exclusions() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.exclusions) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_exclusions(); } inline const ::pg_query::Node& Constraint::exclusions(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.exclusions) return _internal_exclusions().Get(index); } inline ::pg_query::Node* Constraint::add_exclusions() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_exclusions()->Add(); // @@protoc_insertion_point(field_add:pg_query.Constraint.exclusions) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::exclusions() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Constraint.exclusions) return _internal_exclusions(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::_internal_exclusions() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.exclusions_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::_internal_mutable_exclusions() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.exclusions_; } // repeated .pg_query.Node options = 16 [json_name = "options"]; inline int Constraint::_internal_options_size() const { return _internal_options().size(); } inline int Constraint::options_size() const { return _internal_options_size(); } inline void Constraint::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* Constraint::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& Constraint::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.options) return _internal_options().Get(index); } inline ::pg_query::Node* Constraint::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.Constraint.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Constraint.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // string indexname = 17 [json_name = "indexname"]; inline void Constraint::clear_indexname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.indexname_.ClearToEmpty(); } inline const std::string& Constraint::indexname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.indexname) return _internal_indexname(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_indexname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.indexname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.Constraint.indexname) } inline std::string* Constraint::mutable_indexname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_indexname(); // @@protoc_insertion_point(field_mutable:pg_query.Constraint.indexname) return _s; } inline const std::string& Constraint::_internal_indexname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.indexname_.Get(); } inline void Constraint::_internal_set_indexname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.indexname_.Set(value, GetArena()); } inline std::string* Constraint::_internal_mutable_indexname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.indexname_.Mutable( GetArena()); } inline std::string* Constraint::release_indexname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Constraint.indexname) return _impl_.indexname_.Release(); } inline void Constraint::set_allocated_indexname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.indexname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.indexname_.IsDefault()) { _impl_.indexname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.indexname) } // string indexspace = 18 [json_name = "indexspace"]; inline void Constraint::clear_indexspace() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.indexspace_.ClearToEmpty(); } inline const std::string& Constraint::indexspace() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.indexspace) return _internal_indexspace(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_indexspace(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.indexspace_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.Constraint.indexspace) } inline std::string* Constraint::mutable_indexspace() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_indexspace(); // @@protoc_insertion_point(field_mutable:pg_query.Constraint.indexspace) return _s; } inline const std::string& Constraint::_internal_indexspace() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.indexspace_.Get(); } inline void Constraint::_internal_set_indexspace(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.indexspace_.Set(value, GetArena()); } inline std::string* Constraint::_internal_mutable_indexspace() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.indexspace_.Mutable( GetArena()); } inline std::string* Constraint::release_indexspace() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Constraint.indexspace) return _impl_.indexspace_.Release(); } inline void Constraint::set_allocated_indexspace(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.indexspace_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.indexspace_.IsDefault()) { _impl_.indexspace_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.indexspace) } // bool reset_default_tblspc = 19 [json_name = "reset_default_tblspc"]; inline void Constraint::clear_reset_default_tblspc() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.reset_default_tblspc_ = false; } 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::set_reset_default_tblspc(bool value) { _internal_set_reset_default_tblspc(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.reset_default_tblspc) } inline bool Constraint::_internal_reset_default_tblspc() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.reset_default_tblspc_; } inline void Constraint::_internal_set_reset_default_tblspc(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.reset_default_tblspc_ = value; } // string access_method = 20 [json_name = "access_method"]; inline void Constraint::clear_access_method() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.access_method_.ClearToEmpty(); } inline const std::string& Constraint::access_method() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.access_method) return _internal_access_method(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_access_method(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.access_method_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.Constraint.access_method) } inline std::string* Constraint::mutable_access_method() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_access_method(); // @@protoc_insertion_point(field_mutable:pg_query.Constraint.access_method) return _s; } inline const std::string& Constraint::_internal_access_method() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.access_method_.Get(); } inline void Constraint::_internal_set_access_method(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.access_method_.Set(value, GetArena()); } inline std::string* Constraint::_internal_mutable_access_method() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.access_method_.Mutable( GetArena()); } inline std::string* Constraint::release_access_method() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Constraint.access_method) return _impl_.access_method_.Release(); } inline void Constraint::set_allocated_access_method(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.access_method_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.access_method_.IsDefault()) { _impl_.access_method_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.access_method) } // .pg_query.Node where_clause = 21 [json_name = "where_clause"]; inline bool Constraint::has_where_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.where_clause_ != nullptr); return value; } inline void Constraint::clear_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.where_clause_ != nullptr) _impl_.where_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& Constraint::_internal_where_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.where_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Constraint::where_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Constraint.where_clause) } inline ::pg_query::Node* Constraint::release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* Constraint::unsafe_arena_release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Constraint.where_clause) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* Constraint::_internal_mutable_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.where_clause_; } inline ::pg_query::Node* Constraint::mutable_where_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_where_clause(); // @@protoc_insertion_point(field_mutable:pg_query.Constraint.where_clause) return _msg; } inline void Constraint::set_allocated_where_clause(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.where_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.where_clause) } // .pg_query.RangeVar pktable = 22 [json_name = "pktable"]; inline bool Constraint::has_pktable() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.pktable_ != nullptr); return value; } inline void Constraint::clear_pktable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.pktable_ != nullptr) _impl_.pktable_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::RangeVar& Constraint::_internal_pktable() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.pktable_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& Constraint::pktable() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.pktable) return _internal_pktable(); } inline void Constraint::unsafe_arena_set_allocated_pktable(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.pktable_); } _impl_.pktable_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Constraint.pktable) } inline ::pg_query::RangeVar* Constraint::release_pktable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::RangeVar* released = _impl_.pktable_; _impl_.pktable_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* Constraint::unsafe_arena_release_pktable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Constraint.pktable) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::RangeVar* temp = _impl_.pktable_; _impl_.pktable_ = nullptr; return temp; } inline ::pg_query::RangeVar* Constraint::_internal_mutable_pktable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.pktable_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.pktable_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.pktable_; } inline ::pg_query::RangeVar* Constraint::mutable_pktable() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_pktable(); // @@protoc_insertion_point(field_mutable:pg_query.Constraint.pktable) return _msg; } inline void Constraint::set_allocated_pktable(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.pktable_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.pktable_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.pktable) } // repeated .pg_query.Node fk_attrs = 23 [json_name = "fk_attrs"]; inline int Constraint::_internal_fk_attrs_size() const { return _internal_fk_attrs().size(); } inline int Constraint::fk_attrs_size() const { return _internal_fk_attrs_size(); } inline void Constraint::clear_fk_attrs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fk_attrs_.Clear(); } inline ::pg_query::Node* Constraint::mutable_fk_attrs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_attrs) return _internal_mutable_fk_attrs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::mutable_fk_attrs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.fk_attrs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_fk_attrs(); } inline const ::pg_query::Node& Constraint::fk_attrs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_attrs) return _internal_fk_attrs().Get(index); } inline ::pg_query::Node* Constraint::add_fk_attrs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_fk_attrs()->Add(); // @@protoc_insertion_point(field_add:pg_query.Constraint.fk_attrs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::fk_attrs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Constraint.fk_attrs) return _internal_fk_attrs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::_internal_fk_attrs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.fk_attrs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::_internal_mutable_fk_attrs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.fk_attrs_; } // repeated .pg_query.Node pk_attrs = 24 [json_name = "pk_attrs"]; inline int Constraint::_internal_pk_attrs_size() const { return _internal_pk_attrs().size(); } inline int Constraint::pk_attrs_size() const { return _internal_pk_attrs_size(); } inline void Constraint::clear_pk_attrs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.pk_attrs_.Clear(); } inline ::pg_query::Node* Constraint::mutable_pk_attrs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.pk_attrs) return _internal_mutable_pk_attrs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::mutable_pk_attrs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.pk_attrs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_pk_attrs(); } inline const ::pg_query::Node& Constraint::pk_attrs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.pk_attrs) return _internal_pk_attrs().Get(index); } inline ::pg_query::Node* Constraint::add_pk_attrs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_pk_attrs()->Add(); // @@protoc_insertion_point(field_add:pg_query.Constraint.pk_attrs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::pk_attrs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Constraint.pk_attrs) return _internal_pk_attrs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::_internal_pk_attrs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.pk_attrs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::_internal_mutable_pk_attrs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.pk_attrs_; } // string fk_matchtype = 25 [json_name = "fk_matchtype"]; inline void Constraint::clear_fk_matchtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fk_matchtype_.ClearToEmpty(); } inline const std::string& Constraint::fk_matchtype() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_matchtype) return _internal_fk_matchtype(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_fk_matchtype(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fk_matchtype_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.Constraint.fk_matchtype) } inline std::string* Constraint::mutable_fk_matchtype() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_fk_matchtype(); // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_matchtype) return _s; } inline const std::string& Constraint::_internal_fk_matchtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.fk_matchtype_.Get(); } inline void Constraint::_internal_set_fk_matchtype(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fk_matchtype_.Set(value, GetArena()); } inline std::string* Constraint::_internal_mutable_fk_matchtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.fk_matchtype_.Mutable( GetArena()); } inline std::string* Constraint::release_fk_matchtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Constraint.fk_matchtype) return _impl_.fk_matchtype_.Release(); } inline void Constraint::set_allocated_fk_matchtype(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fk_matchtype_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.fk_matchtype_.IsDefault()) { _impl_.fk_matchtype_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.fk_matchtype) } // string fk_upd_action = 26 [json_name = "fk_upd_action"]; inline void Constraint::clear_fk_upd_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fk_upd_action_.ClearToEmpty(); } inline const std::string& Constraint::fk_upd_action() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_upd_action) return _internal_fk_upd_action(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_fk_upd_action(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fk_upd_action_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.Constraint.fk_upd_action) } inline std::string* Constraint::mutable_fk_upd_action() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_fk_upd_action(); // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_upd_action) return _s; } inline const std::string& Constraint::_internal_fk_upd_action() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.fk_upd_action_.Get(); } inline void Constraint::_internal_set_fk_upd_action(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fk_upd_action_.Set(value, GetArena()); } inline std::string* Constraint::_internal_mutable_fk_upd_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.fk_upd_action_.Mutable( GetArena()); } inline std::string* Constraint::release_fk_upd_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Constraint.fk_upd_action) return _impl_.fk_upd_action_.Release(); } inline void Constraint::set_allocated_fk_upd_action(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fk_upd_action_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.fk_upd_action_.IsDefault()) { _impl_.fk_upd_action_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.fk_upd_action) } // string fk_del_action = 27 [json_name = "fk_del_action"]; inline void Constraint::clear_fk_del_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fk_del_action_.ClearToEmpty(); } inline const std::string& Constraint::fk_del_action() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_del_action) return _internal_fk_del_action(); } template inline PROTOBUF_ALWAYS_INLINE void Constraint::set_fk_del_action(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fk_del_action_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.Constraint.fk_del_action) } inline std::string* Constraint::mutable_fk_del_action() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_fk_del_action(); // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_del_action) return _s; } inline const std::string& Constraint::_internal_fk_del_action() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.fk_del_action_.Get(); } inline void Constraint::_internal_set_fk_del_action(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fk_del_action_.Set(value, GetArena()); } inline std::string* Constraint::_internal_mutable_fk_del_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.fk_del_action_.Mutable( GetArena()); } inline std::string* Constraint::release_fk_del_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.Constraint.fk_del_action) return _impl_.fk_del_action_.Release(); } inline void Constraint::set_allocated_fk_del_action(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fk_del_action_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.fk_del_action_.IsDefault()) { _impl_.fk_del_action_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.fk_del_action) } // repeated .pg_query.Node fk_del_set_cols = 28 [json_name = "fk_del_set_cols"]; inline int Constraint::_internal_fk_del_set_cols_size() const { return _internal_fk_del_set_cols().size(); } inline int Constraint::fk_del_set_cols_size() const { return _internal_fk_del_set_cols_size(); } inline void Constraint::clear_fk_del_set_cols() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fk_del_set_cols_.Clear(); } inline ::pg_query::Node* Constraint::mutable_fk_del_set_cols(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_del_set_cols) return _internal_mutable_fk_del_set_cols()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::mutable_fk_del_set_cols() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.fk_del_set_cols) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_fk_del_set_cols(); } inline const ::pg_query::Node& Constraint::fk_del_set_cols(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_del_set_cols) return _internal_fk_del_set_cols().Get(index); } inline ::pg_query::Node* Constraint::add_fk_del_set_cols() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_fk_del_set_cols()->Add(); // @@protoc_insertion_point(field_add:pg_query.Constraint.fk_del_set_cols) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::fk_del_set_cols() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Constraint.fk_del_set_cols) return _internal_fk_del_set_cols(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::_internal_fk_del_set_cols() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.fk_del_set_cols_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::_internal_mutable_fk_del_set_cols() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.fk_del_set_cols_; } // repeated .pg_query.Node old_conpfeqop = 29 [json_name = "old_conpfeqop"]; inline int Constraint::_internal_old_conpfeqop_size() const { return _internal_old_conpfeqop().size(); } inline int Constraint::old_conpfeqop_size() const { return _internal_old_conpfeqop_size(); } inline void Constraint::clear_old_conpfeqop() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.old_conpfeqop_.Clear(); } inline ::pg_query::Node* Constraint::mutable_old_conpfeqop(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.old_conpfeqop) return _internal_mutable_old_conpfeqop()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::mutable_old_conpfeqop() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.old_conpfeqop) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_old_conpfeqop(); } inline const ::pg_query::Node& Constraint::old_conpfeqop(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.Constraint.old_conpfeqop) return _internal_old_conpfeqop().Get(index); } inline ::pg_query::Node* Constraint::add_old_conpfeqop() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_old_conpfeqop()->Add(); // @@protoc_insertion_point(field_add:pg_query.Constraint.old_conpfeqop) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::old_conpfeqop() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.Constraint.old_conpfeqop) return _internal_old_conpfeqop(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& Constraint::_internal_old_conpfeqop() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.old_conpfeqop_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* Constraint::_internal_mutable_old_conpfeqop() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.old_conpfeqop_; } // uint32 old_pktable_oid = 30 [json_name = "old_pktable_oid"]; inline void Constraint::clear_old_pktable_oid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.old_pktable_oid_ = 0u; } inline ::uint32_t Constraint::old_pktable_oid() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.old_pktable_oid) return _internal_old_pktable_oid(); } inline void Constraint::set_old_pktable_oid(::uint32_t value) { _internal_set_old_pktable_oid(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.old_pktable_oid) } inline ::uint32_t Constraint::_internal_old_pktable_oid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.old_pktable_oid_; } inline void Constraint::_internal_set_old_pktable_oid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.old_pktable_oid_ = value; } // int32 location = 31 [json_name = "location"]; inline void Constraint::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t Constraint::location() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.location) return _internal_location(); } inline void Constraint::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.location) } inline ::int32_t Constraint::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void Constraint::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // CreateTableSpaceStmt // string tablespacename = 1 [json_name = "tablespacename"]; inline void CreateTableSpaceStmt::clear_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.tablespacename_.ClearToEmpty(); } inline const std::string& CreateTableSpaceStmt::tablespacename() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.tablespacename) return _internal_tablespacename(); } template inline PROTOBUF_ALWAYS_INLINE void CreateTableSpaceStmt::set_tablespacename(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.tablespacename_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateTableSpaceStmt.tablespacename) } inline std::string* CreateTableSpaceStmt::mutable_tablespacename() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_tablespacename(); // @@protoc_insertion_point(field_mutable:pg_query.CreateTableSpaceStmt.tablespacename) return _s; } inline const std::string& CreateTableSpaceStmt::_internal_tablespacename() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.tablespacename_.Get(); } inline void CreateTableSpaceStmt::_internal_set_tablespacename(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.tablespacename_.Set(value, GetArena()); } inline std::string* CreateTableSpaceStmt::_internal_mutable_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.tablespacename_.Mutable( GetArena()); } inline std::string* CreateTableSpaceStmt::release_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateTableSpaceStmt.tablespacename) return _impl_.tablespacename_.Release(); } inline void CreateTableSpaceStmt::set_allocated_tablespacename(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.tablespacename_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.tablespacename_.IsDefault()) { _impl_.tablespacename_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableSpaceStmt.tablespacename) } // .pg_query.RoleSpec owner = 2 [json_name = "owner"]; inline bool CreateTableSpaceStmt::has_owner() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.owner_ != nullptr); return value; } inline void CreateTableSpaceStmt::clear_owner() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.owner_ != nullptr) _impl_.owner_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RoleSpec& CreateTableSpaceStmt::_internal_owner() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RoleSpec* p = _impl_.owner_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& CreateTableSpaceStmt::owner() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.owner) return _internal_owner(); } inline void CreateTableSpaceStmt::unsafe_arena_set_allocated_owner(::pg_query::RoleSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.owner_); } _impl_.owner_ = reinterpret_cast<::pg_query::RoleSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTableSpaceStmt.owner) } inline ::pg_query::RoleSpec* CreateTableSpaceStmt::release_owner() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* released = _impl_.owner_; _impl_.owner_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RoleSpec* CreateTableSpaceStmt::unsafe_arena_release_owner() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateTableSpaceStmt.owner) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* temp = _impl_.owner_; _impl_.owner_ = nullptr; return temp; } inline ::pg_query::RoleSpec* CreateTableSpaceStmt::_internal_mutable_owner() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.owner_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); _impl_.owner_ = reinterpret_cast<::pg_query::RoleSpec*>(p); } return _impl_.owner_; } inline ::pg_query::RoleSpec* CreateTableSpaceStmt::mutable_owner() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RoleSpec* _msg = _internal_mutable_owner(); // @@protoc_insertion_point(field_mutable:pg_query.CreateTableSpaceStmt.owner) return _msg; } inline void CreateTableSpaceStmt::set_allocated_owner(::pg_query::RoleSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RoleSpec*>(_impl_.owner_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RoleSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.owner_ = reinterpret_cast<::pg_query::RoleSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableSpaceStmt.owner) } // string location = 3 [json_name = "location"]; inline void CreateTableSpaceStmt::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_.ClearToEmpty(); } inline const std::string& CreateTableSpaceStmt::location() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.location) return _internal_location(); } template inline PROTOBUF_ALWAYS_INLINE void CreateTableSpaceStmt::set_location(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateTableSpaceStmt.location) } inline std::string* CreateTableSpaceStmt::mutable_location() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_location(); // @@protoc_insertion_point(field_mutable:pg_query.CreateTableSpaceStmt.location) return _s; } inline const std::string& CreateTableSpaceStmt::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_.Get(); } inline void CreateTableSpaceStmt::_internal_set_location(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_.Set(value, GetArena()); } inline std::string* CreateTableSpaceStmt::_internal_mutable_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.location_.Mutable( GetArena()); } inline std::string* CreateTableSpaceStmt::release_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateTableSpaceStmt.location) return _impl_.location_.Release(); } inline void CreateTableSpaceStmt::set_allocated_location(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.location_.IsDefault()) { _impl_.location_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_options().size(); } inline int CreateTableSpaceStmt::options_size() const { return _internal_options_size(); } inline void CreateTableSpaceStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* CreateTableSpaceStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateTableSpaceStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateTableSpaceStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTableSpaceStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& CreateTableSpaceStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* CreateTableSpaceStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateTableSpaceStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateTableSpaceStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateTableSpaceStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateTableSpaceStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateTableSpaceStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // DropTableSpaceStmt // string tablespacename = 1 [json_name = "tablespacename"]; inline void DropTableSpaceStmt::clear_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.tablespacename_.ClearToEmpty(); } inline const std::string& DropTableSpaceStmt::tablespacename() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DropTableSpaceStmt.tablespacename) return _internal_tablespacename(); } template inline PROTOBUF_ALWAYS_INLINE void DropTableSpaceStmt::set_tablespacename(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.tablespacename_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.DropTableSpaceStmt.tablespacename) } inline std::string* DropTableSpaceStmt::mutable_tablespacename() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_tablespacename(); // @@protoc_insertion_point(field_mutable:pg_query.DropTableSpaceStmt.tablespacename) return _s; } inline const std::string& DropTableSpaceStmt::_internal_tablespacename() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.tablespacename_.Get(); } inline void DropTableSpaceStmt::_internal_set_tablespacename(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.tablespacename_.Set(value, GetArena()); } inline std::string* DropTableSpaceStmt::_internal_mutable_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.tablespacename_.Mutable( GetArena()); } inline std::string* DropTableSpaceStmt::release_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DropTableSpaceStmt.tablespacename) return _impl_.tablespacename_.Release(); } inline void DropTableSpaceStmt::set_allocated_tablespacename(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.tablespacename_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.tablespacename_.IsDefault()) { _impl_.tablespacename_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.DropTableSpaceStmt.tablespacename) } // bool missing_ok = 2 [json_name = "missing_ok"]; inline void DropTableSpaceStmt::clear_missing_ok() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.missing_ok_ = false; } inline bool DropTableSpaceStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropTableSpaceStmt.missing_ok) return _internal_missing_ok(); } inline void DropTableSpaceStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropTableSpaceStmt.missing_ok) } inline bool DropTableSpaceStmt::_internal_missing_ok() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.missing_ok_; } inline void DropTableSpaceStmt::_internal_set_missing_ok(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.missing_ok_ = value; } // ------------------------------------------------------------------- // AlterTableSpaceOptionsStmt // string tablespacename = 1 [json_name = "tablespacename"]; inline void AlterTableSpaceOptionsStmt::clear_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.tablespacename_.ClearToEmpty(); } inline const std::string& AlterTableSpaceOptionsStmt::tablespacename() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTableSpaceOptionsStmt.tablespacename) return _internal_tablespacename(); } template inline PROTOBUF_ALWAYS_INLINE void AlterTableSpaceOptionsStmt::set_tablespacename(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.tablespacename_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterTableSpaceOptionsStmt.tablespacename) } inline std::string* AlterTableSpaceOptionsStmt::mutable_tablespacename() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_tablespacename(); // @@protoc_insertion_point(field_mutable:pg_query.AlterTableSpaceOptionsStmt.tablespacename) return _s; } inline const std::string& AlterTableSpaceOptionsStmt::_internal_tablespacename() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.tablespacename_.Get(); } inline void AlterTableSpaceOptionsStmt::_internal_set_tablespacename(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.tablespacename_.Set(value, GetArena()); } inline std::string* AlterTableSpaceOptionsStmt::_internal_mutable_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.tablespacename_.Mutable( GetArena()); } inline std::string* AlterTableSpaceOptionsStmt::release_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterTableSpaceOptionsStmt.tablespacename) return _impl_.tablespacename_.Release(); } inline void AlterTableSpaceOptionsStmt::set_allocated_tablespacename(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.tablespacename_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.tablespacename_.IsDefault()) { _impl_.tablespacename_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_options().size(); } inline int AlterTableSpaceOptionsStmt::options_size() const { return _internal_options_size(); } inline void AlterTableSpaceOptionsStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* AlterTableSpaceOptionsStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableSpaceOptionsStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTableSpaceOptionsStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTableSpaceOptionsStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& AlterTableSpaceOptionsStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTableSpaceOptionsStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* AlterTableSpaceOptionsStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterTableSpaceOptionsStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTableSpaceOptionsStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterTableSpaceOptionsStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTableSpaceOptionsStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTableSpaceOptionsStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // bool is_reset = 3 [json_name = "isReset"]; inline void AlterTableSpaceOptionsStmt::clear_is_reset() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_reset_ = false; } inline bool AlterTableSpaceOptionsStmt::is_reset() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableSpaceOptionsStmt.is_reset) return _internal_is_reset(); } inline void AlterTableSpaceOptionsStmt::set_is_reset(bool value) { _internal_set_is_reset(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableSpaceOptionsStmt.is_reset) } inline bool AlterTableSpaceOptionsStmt::_internal_is_reset() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_reset_; } inline void AlterTableSpaceOptionsStmt::_internal_set_is_reset(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_reset_ = value; } // ------------------------------------------------------------------- // AlterTableMoveAllStmt // string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; inline void AlterTableMoveAllStmt::clear_orig_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.orig_tablespacename_.ClearToEmpty(); } inline const std::string& AlterTableMoveAllStmt::orig_tablespacename() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.orig_tablespacename) return _internal_orig_tablespacename(); } template inline PROTOBUF_ALWAYS_INLINE void AlterTableMoveAllStmt::set_orig_tablespacename(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.orig_tablespacename_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.orig_tablespacename) } inline std::string* AlterTableMoveAllStmt::mutable_orig_tablespacename() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_orig_tablespacename(); // @@protoc_insertion_point(field_mutable:pg_query.AlterTableMoveAllStmt.orig_tablespacename) return _s; } inline const std::string& AlterTableMoveAllStmt::_internal_orig_tablespacename() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.orig_tablespacename_.Get(); } inline void AlterTableMoveAllStmt::_internal_set_orig_tablespacename(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.orig_tablespacename_.Set(value, GetArena()); } inline std::string* AlterTableMoveAllStmt::_internal_mutable_orig_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.orig_tablespacename_.Mutable( GetArena()); } inline std::string* AlterTableMoveAllStmt::release_orig_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterTableMoveAllStmt.orig_tablespacename) return _impl_.orig_tablespacename_.Release(); } inline void AlterTableMoveAllStmt::set_allocated_orig_tablespacename(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.orig_tablespacename_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.orig_tablespacename_.IsDefault()) { _impl_.orig_tablespacename_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableMoveAllStmt.orig_tablespacename) } // .pg_query.ObjectType objtype = 2 [json_name = "objtype"]; inline void AlterTableMoveAllStmt::clear_objtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.objtype_ = 0; } inline ::pg_query::ObjectType AlterTableMoveAllStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.objtype) return _internal_objtype(); } inline void AlterTableMoveAllStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.objtype) } inline ::pg_query::ObjectType AlterTableMoveAllStmt::_internal_objtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.objtype_); } inline void AlterTableMoveAllStmt::_internal_set_objtype(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.objtype_ = value; } // repeated .pg_query.Node roles = 3 [json_name = "roles"]; inline int AlterTableMoveAllStmt::_internal_roles_size() const { return _internal_roles().size(); } inline int AlterTableMoveAllStmt::roles_size() const { return _internal_roles_size(); } inline void AlterTableMoveAllStmt::clear_roles() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.roles_.Clear(); } inline ::pg_query::Node* AlterTableMoveAllStmt::mutable_roles(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableMoveAllStmt.roles) return _internal_mutable_roles()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTableMoveAllStmt::mutable_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTableMoveAllStmt.roles) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_roles(); } inline const ::pg_query::Node& AlterTableMoveAllStmt::roles(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.roles) return _internal_roles().Get(index); } inline ::pg_query::Node* AlterTableMoveAllStmt::add_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_roles()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterTableMoveAllStmt.roles) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTableMoveAllStmt::roles() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterTableMoveAllStmt.roles) return _internal_roles(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTableMoveAllStmt::_internal_roles() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.roles_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTableMoveAllStmt::_internal_mutable_roles() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.roles_; } // string new_tablespacename = 4 [json_name = "new_tablespacename"]; inline void AlterTableMoveAllStmt::clear_new_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.new_tablespacename_.ClearToEmpty(); } inline const std::string& AlterTableMoveAllStmt::new_tablespacename() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.new_tablespacename) return _internal_new_tablespacename(); } template inline PROTOBUF_ALWAYS_INLINE void AlterTableMoveAllStmt::set_new_tablespacename(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.new_tablespacename_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.new_tablespacename) } inline std::string* AlterTableMoveAllStmt::mutable_new_tablespacename() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_new_tablespacename(); // @@protoc_insertion_point(field_mutable:pg_query.AlterTableMoveAllStmt.new_tablespacename) return _s; } inline const std::string& AlterTableMoveAllStmt::_internal_new_tablespacename() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.new_tablespacename_.Get(); } inline void AlterTableMoveAllStmt::_internal_set_new_tablespacename(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.new_tablespacename_.Set(value, GetArena()); } inline std::string* AlterTableMoveAllStmt::_internal_mutable_new_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.new_tablespacename_.Mutable( GetArena()); } inline std::string* AlterTableMoveAllStmt::release_new_tablespacename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterTableMoveAllStmt.new_tablespacename) return _impl_.new_tablespacename_.Release(); } inline void AlterTableMoveAllStmt::set_allocated_new_tablespacename(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.new_tablespacename_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.new_tablespacename_.IsDefault()) { _impl_.new_tablespacename_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableMoveAllStmt.new_tablespacename) } // bool nowait = 5 [json_name = "nowait"]; inline void AlterTableMoveAllStmt::clear_nowait() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.nowait_ = false; } inline bool AlterTableMoveAllStmt::nowait() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.nowait) return _internal_nowait(); } inline void AlterTableMoveAllStmt::set_nowait(bool value) { _internal_set_nowait(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.nowait) } inline bool AlterTableMoveAllStmt::_internal_nowait() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.nowait_; } inline void AlterTableMoveAllStmt::_internal_set_nowait(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.nowait_ = value; } // ------------------------------------------------------------------- // CreateExtensionStmt // string extname = 1 [json_name = "extname"]; inline void CreateExtensionStmt::clear_extname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.extname_.ClearToEmpty(); } inline const std::string& CreateExtensionStmt::extname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateExtensionStmt.extname) return _internal_extname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateExtensionStmt::set_extname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.extname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateExtensionStmt.extname) } inline std::string* CreateExtensionStmt::mutable_extname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_extname(); // @@protoc_insertion_point(field_mutable:pg_query.CreateExtensionStmt.extname) return _s; } inline const std::string& CreateExtensionStmt::_internal_extname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.extname_.Get(); } inline void CreateExtensionStmt::_internal_set_extname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.extname_.Set(value, GetArena()); } inline std::string* CreateExtensionStmt::_internal_mutable_extname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.extname_.Mutable( GetArena()); } inline std::string* CreateExtensionStmt::release_extname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateExtensionStmt.extname) return _impl_.extname_.Release(); } inline void CreateExtensionStmt::set_allocated_extname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.extname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.extname_.IsDefault()) { _impl_.extname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.if_not_exists_ = false; } 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::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateExtensionStmt.if_not_exists) } inline bool CreateExtensionStmt::_internal_if_not_exists() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.if_not_exists_; } inline void CreateExtensionStmt::_internal_set_if_not_exists(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.if_not_exists_ = value; } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int CreateExtensionStmt::_internal_options_size() const { return _internal_options().size(); } inline int CreateExtensionStmt::options_size() const { return _internal_options_size(); } inline void CreateExtensionStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* CreateExtensionStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateExtensionStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateExtensionStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateExtensionStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& CreateExtensionStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateExtensionStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* CreateExtensionStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateExtensionStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateExtensionStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateExtensionStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateExtensionStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateExtensionStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // AlterExtensionStmt // string extname = 1 [json_name = "extname"]; inline void AlterExtensionStmt::clear_extname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.extname_.ClearToEmpty(); } inline const std::string& AlterExtensionStmt::extname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionStmt.extname) return _internal_extname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterExtensionStmt::set_extname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.extname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterExtensionStmt.extname) } inline std::string* AlterExtensionStmt::mutable_extname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_extname(); // @@protoc_insertion_point(field_mutable:pg_query.AlterExtensionStmt.extname) return _s; } inline const std::string& AlterExtensionStmt::_internal_extname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.extname_.Get(); } inline void AlterExtensionStmt::_internal_set_extname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.extname_.Set(value, GetArena()); } inline std::string* AlterExtensionStmt::_internal_mutable_extname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.extname_.Mutable( GetArena()); } inline std::string* AlterExtensionStmt::release_extname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterExtensionStmt.extname) return _impl_.extname_.Release(); } inline void AlterExtensionStmt::set_allocated_extname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.extname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.extname_.IsDefault()) { _impl_.extname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_options().size(); } inline int AlterExtensionStmt::options_size() const { return _internal_options_size(); } inline void AlterExtensionStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* AlterExtensionStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterExtensionStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterExtensionStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterExtensionStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& AlterExtensionStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* AlterExtensionStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterExtensionStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterExtensionStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterExtensionStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterExtensionStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterExtensionStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // AlterExtensionContentsStmt // string extname = 1 [json_name = "extname"]; inline void AlterExtensionContentsStmt::clear_extname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.extname_.ClearToEmpty(); } inline const std::string& AlterExtensionContentsStmt::extname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.extname) return _internal_extname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterExtensionContentsStmt::set_extname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.extname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterExtensionContentsStmt.extname) } inline std::string* AlterExtensionContentsStmt::mutable_extname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_extname(); // @@protoc_insertion_point(field_mutable:pg_query.AlterExtensionContentsStmt.extname) return _s; } inline const std::string& AlterExtensionContentsStmt::_internal_extname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.extname_.Get(); } inline void AlterExtensionContentsStmt::_internal_set_extname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.extname_.Set(value, GetArena()); } inline std::string* AlterExtensionContentsStmt::_internal_mutable_extname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.extname_.Mutable( GetArena()); } inline std::string* AlterExtensionContentsStmt::release_extname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterExtensionContentsStmt.extname) return _impl_.extname_.Release(); } inline void AlterExtensionContentsStmt::set_allocated_extname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.extname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.extname_.IsDefault()) { _impl_.extname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterExtensionContentsStmt.extname) } // int32 action = 2 [json_name = "action"]; inline void AlterExtensionContentsStmt::clear_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.action_ = 0; } inline ::int32_t AlterExtensionContentsStmt::action() const { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.action) return _internal_action(); } inline void AlterExtensionContentsStmt::set_action(::int32_t value) { _internal_set_action(value); // @@protoc_insertion_point(field_set:pg_query.AlterExtensionContentsStmt.action) } inline ::int32_t AlterExtensionContentsStmt::_internal_action() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.action_; } inline void AlterExtensionContentsStmt::_internal_set_action(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.action_ = value; } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; inline void AlterExtensionContentsStmt::clear_objtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.objtype_ = 0; } inline ::pg_query::ObjectType AlterExtensionContentsStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.objtype) return _internal_objtype(); } inline void AlterExtensionContentsStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterExtensionContentsStmt.objtype) } inline ::pg_query::ObjectType AlterExtensionContentsStmt::_internal_objtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.objtype_); } inline void AlterExtensionContentsStmt::_internal_set_objtype(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.objtype_ = value; } // .pg_query.Node object = 4 [json_name = "object"]; inline bool AlterExtensionContentsStmt::has_object() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.object_ != nullptr); return value; } inline void AlterExtensionContentsStmt::clear_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.object_ != nullptr) _impl_.object_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& AlterExtensionContentsStmt::_internal_object() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.object_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterExtensionContentsStmt::object() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.object) return _internal_object(); } inline void AlterExtensionContentsStmt::unsafe_arena_set_allocated_object(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.object_); } _impl_.object_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterExtensionContentsStmt.object) } inline ::pg_query::Node* AlterExtensionContentsStmt::release_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.object_; _impl_.object_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* AlterExtensionContentsStmt::unsafe_arena_release_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterExtensionContentsStmt.object) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; return temp; } inline ::pg_query::Node* AlterExtensionContentsStmt::_internal_mutable_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.object_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.object_; } inline ::pg_query::Node* AlterExtensionContentsStmt::mutable_object() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_object(); // @@protoc_insertion_point(field_mutable:pg_query.AlterExtensionContentsStmt.object) return _msg; } inline void AlterExtensionContentsStmt::set_allocated_object(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.object_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.object_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterExtensionContentsStmt.object) } // ------------------------------------------------------------------- // CreateFdwStmt // string fdwname = 1 [json_name = "fdwname"]; inline void CreateFdwStmt::clear_fdwname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fdwname_.ClearToEmpty(); } inline const std::string& CreateFdwStmt::fdwname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateFdwStmt.fdwname) return _internal_fdwname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateFdwStmt::set_fdwname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fdwname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateFdwStmt.fdwname) } inline std::string* CreateFdwStmt::mutable_fdwname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_fdwname(); // @@protoc_insertion_point(field_mutable:pg_query.CreateFdwStmt.fdwname) return _s; } inline const std::string& CreateFdwStmt::_internal_fdwname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.fdwname_.Get(); } inline void CreateFdwStmt::_internal_set_fdwname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fdwname_.Set(value, GetArena()); } inline std::string* CreateFdwStmt::_internal_mutable_fdwname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.fdwname_.Mutable( GetArena()); } inline std::string* CreateFdwStmt::release_fdwname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateFdwStmt.fdwname) return _impl_.fdwname_.Release(); } inline void CreateFdwStmt::set_allocated_fdwname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fdwname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.fdwname_.IsDefault()) { _impl_.fdwname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_func_options().size(); } inline int CreateFdwStmt::func_options_size() const { return _internal_func_options_size(); } inline void CreateFdwStmt::clear_func_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.func_options_.Clear(); } inline ::pg_query::Node* CreateFdwStmt::mutable_func_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateFdwStmt.func_options) return _internal_mutable_func_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateFdwStmt::mutable_func_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFdwStmt.func_options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_func_options(); } inline const ::pg_query::Node& CreateFdwStmt::func_options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateFdwStmt.func_options) return _internal_func_options().Get(index); } inline ::pg_query::Node* CreateFdwStmt::add_func_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_func_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateFdwStmt.func_options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateFdwStmt::func_options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateFdwStmt.func_options) return _internal_func_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateFdwStmt::_internal_func_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.func_options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateFdwStmt::_internal_mutable_func_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.func_options_; } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int CreateFdwStmt::_internal_options_size() const { return _internal_options().size(); } inline int CreateFdwStmt::options_size() const { return _internal_options_size(); } inline void CreateFdwStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* CreateFdwStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateFdwStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateFdwStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFdwStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& CreateFdwStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateFdwStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* CreateFdwStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateFdwStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateFdwStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateFdwStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateFdwStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateFdwStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // AlterFdwStmt // string fdwname = 1 [json_name = "fdwname"]; inline void AlterFdwStmt::clear_fdwname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fdwname_.ClearToEmpty(); } inline const std::string& AlterFdwStmt::fdwname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterFdwStmt.fdwname) return _internal_fdwname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterFdwStmt::set_fdwname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fdwname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterFdwStmt.fdwname) } inline std::string* AlterFdwStmt::mutable_fdwname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_fdwname(); // @@protoc_insertion_point(field_mutable:pg_query.AlterFdwStmt.fdwname) return _s; } inline const std::string& AlterFdwStmt::_internal_fdwname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.fdwname_.Get(); } inline void AlterFdwStmt::_internal_set_fdwname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fdwname_.Set(value, GetArena()); } inline std::string* AlterFdwStmt::_internal_mutable_fdwname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.fdwname_.Mutable( GetArena()); } inline std::string* AlterFdwStmt::release_fdwname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterFdwStmt.fdwname) return _impl_.fdwname_.Release(); } inline void AlterFdwStmt::set_allocated_fdwname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fdwname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.fdwname_.IsDefault()) { _impl_.fdwname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_func_options().size(); } inline int AlterFdwStmt::func_options_size() const { return _internal_func_options_size(); } inline void AlterFdwStmt::clear_func_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.func_options_.Clear(); } inline ::pg_query::Node* AlterFdwStmt::mutable_func_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterFdwStmt.func_options) return _internal_mutable_func_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterFdwStmt::mutable_func_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterFdwStmt.func_options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_func_options(); } inline const ::pg_query::Node& AlterFdwStmt::func_options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterFdwStmt.func_options) return _internal_func_options().Get(index); } inline ::pg_query::Node* AlterFdwStmt::add_func_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_func_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterFdwStmt.func_options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterFdwStmt::func_options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterFdwStmt.func_options) return _internal_func_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterFdwStmt::_internal_func_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.func_options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterFdwStmt::_internal_mutable_func_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.func_options_; } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int AlterFdwStmt::_internal_options_size() const { return _internal_options().size(); } inline int AlterFdwStmt::options_size() const { return _internal_options_size(); } inline void AlterFdwStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* AlterFdwStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterFdwStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterFdwStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterFdwStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& AlterFdwStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterFdwStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* AlterFdwStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterFdwStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterFdwStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterFdwStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterFdwStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterFdwStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // CreateForeignServerStmt // string servername = 1 [json_name = "servername"]; inline void CreateForeignServerStmt::clear_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.servername_.ClearToEmpty(); } inline const std::string& CreateForeignServerStmt::servername() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.servername) return _internal_servername(); } template inline PROTOBUF_ALWAYS_INLINE void CreateForeignServerStmt::set_servername(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.servername_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.servername) } inline std::string* CreateForeignServerStmt::mutable_servername() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_servername(); // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.servername) return _s; } inline const std::string& CreateForeignServerStmt::_internal_servername() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.servername_.Get(); } inline void CreateForeignServerStmt::_internal_set_servername(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.servername_.Set(value, GetArena()); } inline std::string* CreateForeignServerStmt::_internal_mutable_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.servername_.Mutable( GetArena()); } inline std::string* CreateForeignServerStmt::release_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.servername) return _impl_.servername_.Release(); } inline void CreateForeignServerStmt::set_allocated_servername(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.servername_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.servername_.IsDefault()) { _impl_.servername_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignServerStmt.servername) } // string servertype = 2 [json_name = "servertype"]; inline void CreateForeignServerStmt::clear_servertype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.servertype_.ClearToEmpty(); } inline const std::string& CreateForeignServerStmt::servertype() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.servertype) return _internal_servertype(); } template inline PROTOBUF_ALWAYS_INLINE void CreateForeignServerStmt::set_servertype(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.servertype_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.servertype) } inline std::string* CreateForeignServerStmt::mutable_servertype() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_servertype(); // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.servertype) return _s; } inline const std::string& CreateForeignServerStmt::_internal_servertype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.servertype_.Get(); } inline void CreateForeignServerStmt::_internal_set_servertype(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.servertype_.Set(value, GetArena()); } inline std::string* CreateForeignServerStmt::_internal_mutable_servertype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.servertype_.Mutable( GetArena()); } inline std::string* CreateForeignServerStmt::release_servertype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.servertype) return _impl_.servertype_.Release(); } inline void CreateForeignServerStmt::set_allocated_servertype(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.servertype_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.servertype_.IsDefault()) { _impl_.servertype_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignServerStmt.servertype) } // string version = 3 [json_name = "version"]; inline void CreateForeignServerStmt::clear_version() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.version_.ClearToEmpty(); } inline const std::string& CreateForeignServerStmt::version() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.version) return _internal_version(); } template inline PROTOBUF_ALWAYS_INLINE void CreateForeignServerStmt::set_version(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.version_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.version) } inline std::string* CreateForeignServerStmt::mutable_version() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_version(); // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.version) return _s; } inline const std::string& CreateForeignServerStmt::_internal_version() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.version_.Get(); } inline void CreateForeignServerStmt::_internal_set_version(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.version_.Set(value, GetArena()); } inline std::string* CreateForeignServerStmt::_internal_mutable_version() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.version_.Mutable( GetArena()); } inline std::string* CreateForeignServerStmt::release_version() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.version) return _impl_.version_.Release(); } inline void CreateForeignServerStmt::set_allocated_version(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.version_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.version_.IsDefault()) { _impl_.version_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignServerStmt.version) } // string fdwname = 4 [json_name = "fdwname"]; inline void CreateForeignServerStmt::clear_fdwname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fdwname_.ClearToEmpty(); } inline const std::string& CreateForeignServerStmt::fdwname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.fdwname) return _internal_fdwname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateForeignServerStmt::set_fdwname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fdwname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.fdwname) } inline std::string* CreateForeignServerStmt::mutable_fdwname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_fdwname(); // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.fdwname) return _s; } inline const std::string& CreateForeignServerStmt::_internal_fdwname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.fdwname_.Get(); } inline void CreateForeignServerStmt::_internal_set_fdwname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.fdwname_.Set(value, GetArena()); } inline std::string* CreateForeignServerStmt::_internal_mutable_fdwname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.fdwname_.Mutable( GetArena()); } inline std::string* CreateForeignServerStmt::release_fdwname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.fdwname) return _impl_.fdwname_.Release(); } inline void CreateForeignServerStmt::set_allocated_fdwname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.fdwname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.fdwname_.IsDefault()) { _impl_.fdwname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.if_not_exists_ = false; } 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::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.if_not_exists) } inline bool CreateForeignServerStmt::_internal_if_not_exists() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.if_not_exists_; } inline void CreateForeignServerStmt::_internal_set_if_not_exists(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.if_not_exists_ = value; } // repeated .pg_query.Node options = 6 [json_name = "options"]; inline int CreateForeignServerStmt::_internal_options_size() const { return _internal_options().size(); } inline int CreateForeignServerStmt::options_size() const { return _internal_options_size(); } inline void CreateForeignServerStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* CreateForeignServerStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateForeignServerStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateForeignServerStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& CreateForeignServerStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* CreateForeignServerStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateForeignServerStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateForeignServerStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateForeignServerStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateForeignServerStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateForeignServerStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // AlterForeignServerStmt // string servername = 1 [json_name = "servername"]; inline void AlterForeignServerStmt::clear_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.servername_.ClearToEmpty(); } inline const std::string& AlterForeignServerStmt::servername() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.servername) return _internal_servername(); } template inline PROTOBUF_ALWAYS_INLINE void AlterForeignServerStmt::set_servername(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.servername_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterForeignServerStmt.servername) } inline std::string* AlterForeignServerStmt::mutable_servername() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_servername(); // @@protoc_insertion_point(field_mutable:pg_query.AlterForeignServerStmt.servername) return _s; } inline const std::string& AlterForeignServerStmt::_internal_servername() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.servername_.Get(); } inline void AlterForeignServerStmt::_internal_set_servername(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.servername_.Set(value, GetArena()); } inline std::string* AlterForeignServerStmt::_internal_mutable_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.servername_.Mutable( GetArena()); } inline std::string* AlterForeignServerStmt::release_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterForeignServerStmt.servername) return _impl_.servername_.Release(); } inline void AlterForeignServerStmt::set_allocated_servername(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.servername_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.servername_.IsDefault()) { _impl_.servername_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterForeignServerStmt.servername) } // string version = 2 [json_name = "version"]; inline void AlterForeignServerStmt::clear_version() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.version_.ClearToEmpty(); } inline const std::string& AlterForeignServerStmt::version() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.version) return _internal_version(); } template inline PROTOBUF_ALWAYS_INLINE void AlterForeignServerStmt::set_version(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.version_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterForeignServerStmt.version) } inline std::string* AlterForeignServerStmt::mutable_version() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_version(); // @@protoc_insertion_point(field_mutable:pg_query.AlterForeignServerStmt.version) return _s; } inline const std::string& AlterForeignServerStmt::_internal_version() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.version_.Get(); } inline void AlterForeignServerStmt::_internal_set_version(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.version_.Set(value, GetArena()); } inline std::string* AlterForeignServerStmt::_internal_mutable_version() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.version_.Mutable( GetArena()); } inline std::string* AlterForeignServerStmt::release_version() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterForeignServerStmt.version) return _impl_.version_.Release(); } inline void AlterForeignServerStmt::set_allocated_version(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.version_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.version_.IsDefault()) { _impl_.version_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_options().size(); } inline int AlterForeignServerStmt::options_size() const { return _internal_options_size(); } inline void AlterForeignServerStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* AlterForeignServerStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterForeignServerStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterForeignServerStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterForeignServerStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& AlterForeignServerStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* AlterForeignServerStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterForeignServerStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterForeignServerStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterForeignServerStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterForeignServerStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterForeignServerStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // bool has_version = 4 [json_name = "has_version"]; inline void AlterForeignServerStmt::clear_has_version() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.has_version_ = false; } inline bool AlterForeignServerStmt::has_version() const { // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.has_version) return _internal_has_version(); } inline void AlterForeignServerStmt::set_has_version(bool value) { _internal_set_has_version(value); // @@protoc_insertion_point(field_set:pg_query.AlterForeignServerStmt.has_version) } inline bool AlterForeignServerStmt::_internal_has_version() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.has_version_; } inline void AlterForeignServerStmt::_internal_set_has_version(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.has_version_ = value; } // ------------------------------------------------------------------- // CreateForeignTableStmt // .pg_query.CreateStmt base_stmt = 1 [json_name = "base"]; inline bool CreateForeignTableStmt::has_base_stmt() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.base_stmt_ != nullptr); return value; } inline void CreateForeignTableStmt::clear_base_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.base_stmt_ != nullptr) _impl_.base_stmt_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::CreateStmt& CreateForeignTableStmt::_internal_base_stmt() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::CreateStmt* p = _impl_.base_stmt_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_CreateStmt_default_instance_); } inline const ::pg_query::CreateStmt& CreateForeignTableStmt::base_stmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.base_stmt_); } _impl_.base_stmt_ = reinterpret_cast<::pg_query::CreateStmt*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateForeignTableStmt.base_stmt) } inline ::pg_query::CreateStmt* CreateForeignTableStmt::release_base_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::CreateStmt* released = _impl_.base_stmt_; _impl_.base_stmt_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::CreateStmt* CreateForeignTableStmt::unsafe_arena_release_base_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateForeignTableStmt.base_stmt) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::CreateStmt* temp = _impl_.base_stmt_; _impl_.base_stmt_ = nullptr; return temp; } inline ::pg_query::CreateStmt* CreateForeignTableStmt::_internal_mutable_base_stmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.base_stmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::CreateStmt>(GetArena()); _impl_.base_stmt_ = reinterpret_cast<::pg_query::CreateStmt*>(p); } return _impl_.base_stmt_; } inline ::pg_query::CreateStmt* CreateForeignTableStmt::mutable_base_stmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CreateStmt* _msg = _internal_mutable_base_stmt(); // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignTableStmt.base_stmt) return _msg; } inline void CreateForeignTableStmt::set_allocated_base_stmt(::pg_query::CreateStmt* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::CreateStmt*>(_impl_.base_stmt_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::CreateStmt*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.base_stmt_ = reinterpret_cast<::pg_query::CreateStmt*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignTableStmt.base_stmt) } // string servername = 2 [json_name = "servername"]; inline void CreateForeignTableStmt::clear_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.servername_.ClearToEmpty(); } inline const std::string& CreateForeignTableStmt::servername() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateForeignTableStmt.servername) return _internal_servername(); } template inline PROTOBUF_ALWAYS_INLINE void CreateForeignTableStmt::set_servername(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.servername_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateForeignTableStmt.servername) } inline std::string* CreateForeignTableStmt::mutable_servername() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_servername(); // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignTableStmt.servername) return _s; } inline const std::string& CreateForeignTableStmt::_internal_servername() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.servername_.Get(); } inline void CreateForeignTableStmt::_internal_set_servername(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.servername_.Set(value, GetArena()); } inline std::string* CreateForeignTableStmt::_internal_mutable_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.servername_.Mutable( GetArena()); } inline std::string* CreateForeignTableStmt::release_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateForeignTableStmt.servername) return _impl_.servername_.Release(); } inline void CreateForeignTableStmt::set_allocated_servername(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.servername_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.servername_.IsDefault()) { _impl_.servername_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_options().size(); } inline int CreateForeignTableStmt::options_size() const { return _internal_options_size(); } inline void CreateForeignTableStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* CreateForeignTableStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignTableStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateForeignTableStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateForeignTableStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& CreateForeignTableStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateForeignTableStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* CreateForeignTableStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateForeignTableStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateForeignTableStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateForeignTableStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateForeignTableStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateForeignTableStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // CreateUserMappingStmt // .pg_query.RoleSpec user = 1 [json_name = "user"]; inline bool CreateUserMappingStmt::has_user() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.user_ != nullptr); return value; } inline void CreateUserMappingStmt::clear_user() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.user_ != nullptr) _impl_.user_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RoleSpec& CreateUserMappingStmt::_internal_user() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RoleSpec* p = _impl_.user_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& CreateUserMappingStmt::user() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.user) return _internal_user(); } inline void CreateUserMappingStmt::unsafe_arena_set_allocated_user(::pg_query::RoleSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.user_); } _impl_.user_ = reinterpret_cast<::pg_query::RoleSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateUserMappingStmt.user) } inline ::pg_query::RoleSpec* CreateUserMappingStmt::release_user() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* released = _impl_.user_; _impl_.user_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RoleSpec* CreateUserMappingStmt::unsafe_arena_release_user() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateUserMappingStmt.user) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* temp = _impl_.user_; _impl_.user_ = nullptr; return temp; } inline ::pg_query::RoleSpec* CreateUserMappingStmt::_internal_mutable_user() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.user_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); _impl_.user_ = reinterpret_cast<::pg_query::RoleSpec*>(p); } return _impl_.user_; } inline ::pg_query::RoleSpec* CreateUserMappingStmt::mutable_user() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RoleSpec* _msg = _internal_mutable_user(); // @@protoc_insertion_point(field_mutable:pg_query.CreateUserMappingStmt.user) return _msg; } inline void CreateUserMappingStmt::set_allocated_user(::pg_query::RoleSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RoleSpec*>(_impl_.user_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RoleSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.user_ = reinterpret_cast<::pg_query::RoleSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateUserMappingStmt.user) } // string servername = 2 [json_name = "servername"]; inline void CreateUserMappingStmt::clear_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.servername_.ClearToEmpty(); } inline const std::string& CreateUserMappingStmt::servername() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.servername) return _internal_servername(); } template inline PROTOBUF_ALWAYS_INLINE void CreateUserMappingStmt::set_servername(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.servername_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateUserMappingStmt.servername) } inline std::string* CreateUserMappingStmt::mutable_servername() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_servername(); // @@protoc_insertion_point(field_mutable:pg_query.CreateUserMappingStmt.servername) return _s; } inline const std::string& CreateUserMappingStmt::_internal_servername() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.servername_.Get(); } inline void CreateUserMappingStmt::_internal_set_servername(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.servername_.Set(value, GetArena()); } inline std::string* CreateUserMappingStmt::_internal_mutable_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.servername_.Mutable( GetArena()); } inline std::string* CreateUserMappingStmt::release_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateUserMappingStmt.servername) return _impl_.servername_.Release(); } inline void CreateUserMappingStmt::set_allocated_servername(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.servername_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.servername_.IsDefault()) { _impl_.servername_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.if_not_exists_ = false; } 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::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateUserMappingStmt.if_not_exists) } inline bool CreateUserMappingStmt::_internal_if_not_exists() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.if_not_exists_; } inline void CreateUserMappingStmt::_internal_set_if_not_exists(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.if_not_exists_ = value; } // repeated .pg_query.Node options = 4 [json_name = "options"]; inline int CreateUserMappingStmt::_internal_options_size() const { return _internal_options().size(); } inline int CreateUserMappingStmt::options_size() const { return _internal_options_size(); } inline void CreateUserMappingStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* CreateUserMappingStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateUserMappingStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateUserMappingStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateUserMappingStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& CreateUserMappingStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* CreateUserMappingStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateUserMappingStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateUserMappingStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateUserMappingStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateUserMappingStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateUserMappingStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // AlterUserMappingStmt // .pg_query.RoleSpec user = 1 [json_name = "user"]; inline bool AlterUserMappingStmt::has_user() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.user_ != nullptr); return value; } inline void AlterUserMappingStmt::clear_user() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.user_ != nullptr) _impl_.user_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RoleSpec& AlterUserMappingStmt::_internal_user() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RoleSpec* p = _impl_.user_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& AlterUserMappingStmt::user() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterUserMappingStmt.user) return _internal_user(); } inline void AlterUserMappingStmt::unsafe_arena_set_allocated_user(::pg_query::RoleSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.user_); } _impl_.user_ = reinterpret_cast<::pg_query::RoleSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterUserMappingStmt.user) } inline ::pg_query::RoleSpec* AlterUserMappingStmt::release_user() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* released = _impl_.user_; _impl_.user_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RoleSpec* AlterUserMappingStmt::unsafe_arena_release_user() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterUserMappingStmt.user) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* temp = _impl_.user_; _impl_.user_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterUserMappingStmt::_internal_mutable_user() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.user_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); _impl_.user_ = reinterpret_cast<::pg_query::RoleSpec*>(p); } return _impl_.user_; } inline ::pg_query::RoleSpec* AlterUserMappingStmt::mutable_user() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RoleSpec* _msg = _internal_mutable_user(); // @@protoc_insertion_point(field_mutable:pg_query.AlterUserMappingStmt.user) return _msg; } inline void AlterUserMappingStmt::set_allocated_user(::pg_query::RoleSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RoleSpec*>(_impl_.user_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RoleSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.user_ = reinterpret_cast<::pg_query::RoleSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterUserMappingStmt.user) } // string servername = 2 [json_name = "servername"]; inline void AlterUserMappingStmt::clear_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.servername_.ClearToEmpty(); } inline const std::string& AlterUserMappingStmt::servername() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterUserMappingStmt.servername) return _internal_servername(); } template inline PROTOBUF_ALWAYS_INLINE void AlterUserMappingStmt::set_servername(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.servername_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterUserMappingStmt.servername) } inline std::string* AlterUserMappingStmt::mutable_servername() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_servername(); // @@protoc_insertion_point(field_mutable:pg_query.AlterUserMappingStmt.servername) return _s; } inline const std::string& AlterUserMappingStmt::_internal_servername() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.servername_.Get(); } inline void AlterUserMappingStmt::_internal_set_servername(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.servername_.Set(value, GetArena()); } inline std::string* AlterUserMappingStmt::_internal_mutable_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.servername_.Mutable( GetArena()); } inline std::string* AlterUserMappingStmt::release_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterUserMappingStmt.servername) return _impl_.servername_.Release(); } inline void AlterUserMappingStmt::set_allocated_servername(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.servername_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.servername_.IsDefault()) { _impl_.servername_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_options().size(); } inline int AlterUserMappingStmt::options_size() const { return _internal_options_size(); } inline void AlterUserMappingStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* AlterUserMappingStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterUserMappingStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterUserMappingStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterUserMappingStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& AlterUserMappingStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterUserMappingStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* AlterUserMappingStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterUserMappingStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterUserMappingStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterUserMappingStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterUserMappingStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterUserMappingStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // DropUserMappingStmt // .pg_query.RoleSpec user = 1 [json_name = "user"]; inline bool DropUserMappingStmt::has_user() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.user_ != nullptr); return value; } inline void DropUserMappingStmt::clear_user() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.user_ != nullptr) _impl_.user_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RoleSpec& DropUserMappingStmt::_internal_user() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RoleSpec* p = _impl_.user_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& DropUserMappingStmt::user() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DropUserMappingStmt.user) return _internal_user(); } inline void DropUserMappingStmt::unsafe_arena_set_allocated_user(::pg_query::RoleSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.user_); } _impl_.user_ = reinterpret_cast<::pg_query::RoleSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DropUserMappingStmt.user) } inline ::pg_query::RoleSpec* DropUserMappingStmt::release_user() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* released = _impl_.user_; _impl_.user_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RoleSpec* DropUserMappingStmt::unsafe_arena_release_user() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DropUserMappingStmt.user) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* temp = _impl_.user_; _impl_.user_ = nullptr; return temp; } inline ::pg_query::RoleSpec* DropUserMappingStmt::_internal_mutable_user() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.user_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); _impl_.user_ = reinterpret_cast<::pg_query::RoleSpec*>(p); } return _impl_.user_; } inline ::pg_query::RoleSpec* DropUserMappingStmt::mutable_user() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RoleSpec* _msg = _internal_mutable_user(); // @@protoc_insertion_point(field_mutable:pg_query.DropUserMappingStmt.user) return _msg; } inline void DropUserMappingStmt::set_allocated_user(::pg_query::RoleSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RoleSpec*>(_impl_.user_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RoleSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.user_ = reinterpret_cast<::pg_query::RoleSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.DropUserMappingStmt.user) } // string servername = 2 [json_name = "servername"]; inline void DropUserMappingStmt::clear_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.servername_.ClearToEmpty(); } inline const std::string& DropUserMappingStmt::servername() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DropUserMappingStmt.servername) return _internal_servername(); } template inline PROTOBUF_ALWAYS_INLINE void DropUserMappingStmt::set_servername(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.servername_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.DropUserMappingStmt.servername) } inline std::string* DropUserMappingStmt::mutable_servername() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_servername(); // @@protoc_insertion_point(field_mutable:pg_query.DropUserMappingStmt.servername) return _s; } inline const std::string& DropUserMappingStmt::_internal_servername() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.servername_.Get(); } inline void DropUserMappingStmt::_internal_set_servername(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.servername_.Set(value, GetArena()); } inline std::string* DropUserMappingStmt::_internal_mutable_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.servername_.Mutable( GetArena()); } inline std::string* DropUserMappingStmt::release_servername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DropUserMappingStmt.servername) return _impl_.servername_.Release(); } inline void DropUserMappingStmt::set_allocated_servername(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.servername_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.servername_.IsDefault()) { _impl_.servername_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.DropUserMappingStmt.servername) } // bool missing_ok = 3 [json_name = "missing_ok"]; inline void DropUserMappingStmt::clear_missing_ok() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.missing_ok_ = false; } inline bool DropUserMappingStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropUserMappingStmt.missing_ok) return _internal_missing_ok(); } inline void DropUserMappingStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropUserMappingStmt.missing_ok) } inline bool DropUserMappingStmt::_internal_missing_ok() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.missing_ok_; } inline void DropUserMappingStmt::_internal_set_missing_ok(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.missing_ok_ = value; } // ------------------------------------------------------------------- // ImportForeignSchemaStmt // string server_name = 1 [json_name = "server_name"]; inline void ImportForeignSchemaStmt::clear_server_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.server_name_.ClearToEmpty(); } inline const std::string& ImportForeignSchemaStmt::server_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.server_name) return _internal_server_name(); } template inline PROTOBUF_ALWAYS_INLINE void ImportForeignSchemaStmt::set_server_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.server_name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.server_name) } inline std::string* ImportForeignSchemaStmt::mutable_server_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_server_name(); // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.server_name) return _s; } inline const std::string& ImportForeignSchemaStmt::_internal_server_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.server_name_.Get(); } inline void ImportForeignSchemaStmt::_internal_set_server_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.server_name_.Set(value, GetArena()); } inline std::string* ImportForeignSchemaStmt::_internal_mutable_server_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.server_name_.Mutable( GetArena()); } inline std::string* ImportForeignSchemaStmt::release_server_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ImportForeignSchemaStmt.server_name) return _impl_.server_name_.Release(); } inline void ImportForeignSchemaStmt::set_allocated_server_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.server_name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.server_name_.IsDefault()) { _impl_.server_name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.remote_schema_.ClearToEmpty(); } inline const std::string& ImportForeignSchemaStmt::remote_schema() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.remote_schema) return _internal_remote_schema(); } template inline PROTOBUF_ALWAYS_INLINE void ImportForeignSchemaStmt::set_remote_schema(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.remote_schema_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.remote_schema) } inline std::string* ImportForeignSchemaStmt::mutable_remote_schema() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_remote_schema(); // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.remote_schema) return _s; } inline const std::string& ImportForeignSchemaStmt::_internal_remote_schema() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.remote_schema_.Get(); } inline void ImportForeignSchemaStmt::_internal_set_remote_schema(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.remote_schema_.Set(value, GetArena()); } inline std::string* ImportForeignSchemaStmt::_internal_mutable_remote_schema() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.remote_schema_.Mutable( GetArena()); } inline std::string* ImportForeignSchemaStmt::release_remote_schema() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ImportForeignSchemaStmt.remote_schema) return _impl_.remote_schema_.Release(); } inline void ImportForeignSchemaStmt::set_allocated_remote_schema(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.remote_schema_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.remote_schema_.IsDefault()) { _impl_.remote_schema_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.local_schema_.ClearToEmpty(); } inline const std::string& ImportForeignSchemaStmt::local_schema() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.local_schema) return _internal_local_schema(); } template inline PROTOBUF_ALWAYS_INLINE void ImportForeignSchemaStmt::set_local_schema(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.local_schema_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.local_schema) } inline std::string* ImportForeignSchemaStmt::mutable_local_schema() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_local_schema(); // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.local_schema) return _s; } inline const std::string& ImportForeignSchemaStmt::_internal_local_schema() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.local_schema_.Get(); } inline void ImportForeignSchemaStmt::_internal_set_local_schema(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.local_schema_.Set(value, GetArena()); } inline std::string* ImportForeignSchemaStmt::_internal_mutable_local_schema() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.local_schema_.Mutable( GetArena()); } inline std::string* ImportForeignSchemaStmt::release_local_schema() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ImportForeignSchemaStmt.local_schema) return _impl_.local_schema_.Release(); } inline void ImportForeignSchemaStmt::set_allocated_local_schema(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.local_schema_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.local_schema_.IsDefault()) { _impl_.local_schema_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.list_type_ = 0; } 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::set_list_type(::pg_query::ImportForeignSchemaType value) { _internal_set_list_type(value); // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.list_type) } inline ::pg_query::ImportForeignSchemaType ImportForeignSchemaStmt::_internal_list_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ImportForeignSchemaType>(_impl_.list_type_); } inline void ImportForeignSchemaStmt::_internal_set_list_type(::pg_query::ImportForeignSchemaType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.list_type_ = value; } // repeated .pg_query.Node table_list = 5 [json_name = "table_list"]; inline int ImportForeignSchemaStmt::_internal_table_list_size() const { return _internal_table_list().size(); } inline int ImportForeignSchemaStmt::table_list_size() const { return _internal_table_list_size(); } inline void ImportForeignSchemaStmt::clear_table_list() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.table_list_.Clear(); } inline ::pg_query::Node* ImportForeignSchemaStmt::mutable_table_list(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.table_list) return _internal_mutable_table_list()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ImportForeignSchemaStmt::mutable_table_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ImportForeignSchemaStmt.table_list) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_table_list(); } inline const ::pg_query::Node& ImportForeignSchemaStmt::table_list(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.table_list) return _internal_table_list().Get(index); } inline ::pg_query::Node* ImportForeignSchemaStmt::add_table_list() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_table_list()->Add(); // @@protoc_insertion_point(field_add:pg_query.ImportForeignSchemaStmt.table_list) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ImportForeignSchemaStmt::table_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ImportForeignSchemaStmt.table_list) return _internal_table_list(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ImportForeignSchemaStmt::_internal_table_list() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.table_list_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ImportForeignSchemaStmt::_internal_mutable_table_list() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.table_list_; } // repeated .pg_query.Node options = 6 [json_name = "options"]; inline int ImportForeignSchemaStmt::_internal_options_size() const { return _internal_options().size(); } inline int ImportForeignSchemaStmt::options_size() const { return _internal_options_size(); } inline void ImportForeignSchemaStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* ImportForeignSchemaStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ImportForeignSchemaStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ImportForeignSchemaStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& ImportForeignSchemaStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* ImportForeignSchemaStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.ImportForeignSchemaStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ImportForeignSchemaStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ImportForeignSchemaStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ImportForeignSchemaStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ImportForeignSchemaStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // CreatePolicyStmt // string policy_name = 1 [json_name = "policy_name"]; inline void CreatePolicyStmt::clear_policy_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.policy_name_.ClearToEmpty(); } inline const std::string& CreatePolicyStmt::policy_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.policy_name) return _internal_policy_name(); } template inline PROTOBUF_ALWAYS_INLINE void CreatePolicyStmt::set_policy_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.policy_name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreatePolicyStmt.policy_name) } inline std::string* CreatePolicyStmt::mutable_policy_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_policy_name(); // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.policy_name) return _s; } inline const std::string& CreatePolicyStmt::_internal_policy_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.policy_name_.Get(); } inline void CreatePolicyStmt::_internal_set_policy_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.policy_name_.Set(value, GetArena()); } inline std::string* CreatePolicyStmt::_internal_mutable_policy_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.policy_name_.Mutable( GetArena()); } inline std::string* CreatePolicyStmt::release_policy_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.policy_name) return _impl_.policy_name_.Release(); } inline void CreatePolicyStmt::set_allocated_policy_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.policy_name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.policy_name_.IsDefault()) { _impl_.policy_name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.policy_name) } // .pg_query.RangeVar table = 2 [json_name = "table"]; inline bool CreatePolicyStmt::has_table() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.table_ != nullptr); return value; } inline void CreatePolicyStmt::clear_table() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.table_ != nullptr) _impl_.table_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& CreatePolicyStmt::_internal_table() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.table_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& CreatePolicyStmt::table() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.table) return _internal_table(); } inline void CreatePolicyStmt::unsafe_arena_set_allocated_table(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.table_); } _impl_.table_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreatePolicyStmt.table) } inline ::pg_query::RangeVar* CreatePolicyStmt::release_table() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.table_; _impl_.table_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* CreatePolicyStmt::unsafe_arena_release_table() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.table) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.table_; _impl_.table_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreatePolicyStmt::_internal_mutable_table() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.table_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.table_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.table_; } inline ::pg_query::RangeVar* CreatePolicyStmt::mutable_table() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_table(); // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.table) return _msg; } inline void CreatePolicyStmt::set_allocated_table(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.table_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.table_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.table) } // string cmd_name = 3 [json_name = "cmd_name"]; inline void CreatePolicyStmt::clear_cmd_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cmd_name_.ClearToEmpty(); } inline const std::string& CreatePolicyStmt::cmd_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.cmd_name) return _internal_cmd_name(); } template inline PROTOBUF_ALWAYS_INLINE void CreatePolicyStmt::set_cmd_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cmd_name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreatePolicyStmt.cmd_name) } inline std::string* CreatePolicyStmt::mutable_cmd_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_cmd_name(); // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.cmd_name) return _s; } inline const std::string& CreatePolicyStmt::_internal_cmd_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cmd_name_.Get(); } inline void CreatePolicyStmt::_internal_set_cmd_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.cmd_name_.Set(value, GetArena()); } inline std::string* CreatePolicyStmt::_internal_mutable_cmd_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.cmd_name_.Mutable( GetArena()); } inline std::string* CreatePolicyStmt::release_cmd_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.cmd_name) return _impl_.cmd_name_.Release(); } inline void CreatePolicyStmt::set_allocated_cmd_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cmd_name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.cmd_name_.IsDefault()) { _impl_.cmd_name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.cmd_name) } // bool permissive = 4 [json_name = "permissive"]; inline void CreatePolicyStmt::clear_permissive() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.permissive_ = false; } inline bool CreatePolicyStmt::permissive() const { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.permissive) return _internal_permissive(); } inline void CreatePolicyStmt::set_permissive(bool value) { _internal_set_permissive(value); // @@protoc_insertion_point(field_set:pg_query.CreatePolicyStmt.permissive) } inline bool CreatePolicyStmt::_internal_permissive() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.permissive_; } inline void CreatePolicyStmt::_internal_set_permissive(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.permissive_ = value; } // repeated .pg_query.Node roles = 5 [json_name = "roles"]; inline int CreatePolicyStmt::_internal_roles_size() const { return _internal_roles().size(); } inline int CreatePolicyStmt::roles_size() const { return _internal_roles_size(); } inline void CreatePolicyStmt::clear_roles() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.roles_.Clear(); } inline ::pg_query::Node* CreatePolicyStmt::mutable_roles(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.roles) return _internal_mutable_roles()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreatePolicyStmt::mutable_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePolicyStmt.roles) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_roles(); } inline const ::pg_query::Node& CreatePolicyStmt::roles(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.roles) return _internal_roles().Get(index); } inline ::pg_query::Node* CreatePolicyStmt::add_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_roles()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreatePolicyStmt.roles) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreatePolicyStmt::roles() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreatePolicyStmt.roles) return _internal_roles(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreatePolicyStmt::_internal_roles() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.roles_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreatePolicyStmt::_internal_mutable_roles() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.roles_; } // .pg_query.Node qual = 6 [json_name = "qual"]; inline bool CreatePolicyStmt::has_qual() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.qual_ != nullptr); return value; } inline void CreatePolicyStmt::clear_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.qual_ != nullptr) _impl_.qual_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& CreatePolicyStmt::_internal_qual() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.qual_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CreatePolicyStmt::qual() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.qual) return _internal_qual(); } inline void CreatePolicyStmt::unsafe_arena_set_allocated_qual(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.qual_); } _impl_.qual_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreatePolicyStmt.qual) } inline ::pg_query::Node* CreatePolicyStmt::release_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.qual_; _impl_.qual_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CreatePolicyStmt::unsafe_arena_release_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.qual) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.qual_; _impl_.qual_ = nullptr; return temp; } inline ::pg_query::Node* CreatePolicyStmt::_internal_mutable_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.qual_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.qual_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.qual_; } inline ::pg_query::Node* CreatePolicyStmt::mutable_qual() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_qual(); // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.qual) return _msg; } inline void CreatePolicyStmt::set_allocated_qual(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.qual_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.qual_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.qual) } // .pg_query.Node with_check = 7 [json_name = "with_check"]; inline bool CreatePolicyStmt::has_with_check() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.with_check_ != nullptr); return value; } inline void CreatePolicyStmt::clear_with_check() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.with_check_ != nullptr) _impl_.with_check_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& CreatePolicyStmt::_internal_with_check() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.with_check_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CreatePolicyStmt::with_check() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.with_check_); } _impl_.with_check_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreatePolicyStmt.with_check) } inline ::pg_query::Node* CreatePolicyStmt::release_with_check() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.with_check_; _impl_.with_check_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CreatePolicyStmt::unsafe_arena_release_with_check() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.with_check) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.with_check_; _impl_.with_check_ = nullptr; return temp; } inline ::pg_query::Node* CreatePolicyStmt::_internal_mutable_with_check() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.with_check_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.with_check_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.with_check_; } inline ::pg_query::Node* CreatePolicyStmt::mutable_with_check() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_with_check(); // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.with_check) return _msg; } inline void CreatePolicyStmt::set_allocated_with_check(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.with_check_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.with_check_ = reinterpret_cast<::pg_query::Node*>(value); // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.policy_name_.ClearToEmpty(); } inline const std::string& AlterPolicyStmt::policy_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.policy_name) return _internal_policy_name(); } template inline PROTOBUF_ALWAYS_INLINE void AlterPolicyStmt::set_policy_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.policy_name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterPolicyStmt.policy_name) } inline std::string* AlterPolicyStmt::mutable_policy_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_policy_name(); // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.policy_name) return _s; } inline const std::string& AlterPolicyStmt::_internal_policy_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.policy_name_.Get(); } inline void AlterPolicyStmt::_internal_set_policy_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.policy_name_.Set(value, GetArena()); } inline std::string* AlterPolicyStmt::_internal_mutable_policy_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.policy_name_.Mutable( GetArena()); } inline std::string* AlterPolicyStmt::release_policy_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.policy_name) return _impl_.policy_name_.Release(); } inline void AlterPolicyStmt::set_allocated_policy_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.policy_name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.policy_name_.IsDefault()) { _impl_.policy_name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPolicyStmt.policy_name) } // .pg_query.RangeVar table = 2 [json_name = "table"]; inline bool AlterPolicyStmt::has_table() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.table_ != nullptr); return value; } inline void AlterPolicyStmt::clear_table() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.table_ != nullptr) _impl_.table_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& AlterPolicyStmt::_internal_table() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.table_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& AlterPolicyStmt::table() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.table) return _internal_table(); } inline void AlterPolicyStmt::unsafe_arena_set_allocated_table(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.table_); } _impl_.table_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterPolicyStmt.table) } inline ::pg_query::RangeVar* AlterPolicyStmt::release_table() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.table_; _impl_.table_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* AlterPolicyStmt::unsafe_arena_release_table() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.table) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.table_; _impl_.table_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterPolicyStmt::_internal_mutable_table() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.table_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.table_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.table_; } inline ::pg_query::RangeVar* AlterPolicyStmt::mutable_table() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_table(); // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.table) return _msg; } inline void AlterPolicyStmt::set_allocated_table(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.table_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.table_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@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 _internal_roles().size(); } inline int AlterPolicyStmt::roles_size() const { return _internal_roles_size(); } inline void AlterPolicyStmt::clear_roles() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.roles_.Clear(); } inline ::pg_query::Node* AlterPolicyStmt::mutable_roles(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.roles) return _internal_mutable_roles()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterPolicyStmt::mutable_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterPolicyStmt.roles) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_roles(); } inline const ::pg_query::Node& AlterPolicyStmt::roles(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.roles) return _internal_roles().Get(index); } inline ::pg_query::Node* AlterPolicyStmt::add_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_roles()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterPolicyStmt.roles) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterPolicyStmt::roles() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterPolicyStmt.roles) return _internal_roles(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterPolicyStmt::_internal_roles() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.roles_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterPolicyStmt::_internal_mutable_roles() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.roles_; } // .pg_query.Node qual = 4 [json_name = "qual"]; inline bool AlterPolicyStmt::has_qual() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.qual_ != nullptr); return value; } inline void AlterPolicyStmt::clear_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.qual_ != nullptr) _impl_.qual_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& AlterPolicyStmt::_internal_qual() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.qual_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterPolicyStmt::qual() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.qual) return _internal_qual(); } inline void AlterPolicyStmt::unsafe_arena_set_allocated_qual(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.qual_); } _impl_.qual_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterPolicyStmt.qual) } inline ::pg_query::Node* AlterPolicyStmt::release_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.qual_; _impl_.qual_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* AlterPolicyStmt::unsafe_arena_release_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.qual) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.qual_; _impl_.qual_ = nullptr; return temp; } inline ::pg_query::Node* AlterPolicyStmt::_internal_mutable_qual() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.qual_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.qual_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.qual_; } inline ::pg_query::Node* AlterPolicyStmt::mutable_qual() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_qual(); // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.qual) return _msg; } inline void AlterPolicyStmt::set_allocated_qual(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.qual_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.qual_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPolicyStmt.qual) } // .pg_query.Node with_check = 5 [json_name = "with_check"]; inline bool AlterPolicyStmt::has_with_check() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.with_check_ != nullptr); return value; } inline void AlterPolicyStmt::clear_with_check() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.with_check_ != nullptr) _impl_.with_check_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::Node& AlterPolicyStmt::_internal_with_check() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.with_check_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterPolicyStmt::with_check() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.with_check_); } _impl_.with_check_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterPolicyStmt.with_check) } inline ::pg_query::Node* AlterPolicyStmt::release_with_check() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* released = _impl_.with_check_; _impl_.with_check_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* AlterPolicyStmt::unsafe_arena_release_with_check() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.with_check) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::Node* temp = _impl_.with_check_; _impl_.with_check_ = nullptr; return temp; } inline ::pg_query::Node* AlterPolicyStmt::_internal_mutable_with_check() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.with_check_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.with_check_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.with_check_; } inline ::pg_query::Node* AlterPolicyStmt::mutable_with_check() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_with_check(); // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.with_check) return _msg; } inline void AlterPolicyStmt::set_allocated_with_check(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.with_check_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.with_check_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPolicyStmt.with_check) } // ------------------------------------------------------------------- // CreateAmStmt // string amname = 1 [json_name = "amname"]; inline void CreateAmStmt::clear_amname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.amname_.ClearToEmpty(); } inline const std::string& CreateAmStmt::amname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateAmStmt.amname) return _internal_amname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateAmStmt::set_amname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.amname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateAmStmt.amname) } inline std::string* CreateAmStmt::mutable_amname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_amname(); // @@protoc_insertion_point(field_mutable:pg_query.CreateAmStmt.amname) return _s; } inline const std::string& CreateAmStmt::_internal_amname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.amname_.Get(); } inline void CreateAmStmt::_internal_set_amname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.amname_.Set(value, GetArena()); } inline std::string* CreateAmStmt::_internal_mutable_amname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.amname_.Mutable( GetArena()); } inline std::string* CreateAmStmt::release_amname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateAmStmt.amname) return _impl_.amname_.Release(); } inline void CreateAmStmt::set_allocated_amname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.amname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.amname_.IsDefault()) { _impl_.amname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_handler_name().size(); } inline int CreateAmStmt::handler_name_size() const { return _internal_handler_name_size(); } inline void CreateAmStmt::clear_handler_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.handler_name_.Clear(); } inline ::pg_query::Node* CreateAmStmt::mutable_handler_name(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateAmStmt.handler_name) return _internal_mutable_handler_name()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateAmStmt::mutable_handler_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateAmStmt.handler_name) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_handler_name(); } inline const ::pg_query::Node& CreateAmStmt::handler_name(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateAmStmt.handler_name) return _internal_handler_name().Get(index); } inline ::pg_query::Node* CreateAmStmt::add_handler_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_handler_name()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateAmStmt.handler_name) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateAmStmt::handler_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateAmStmt.handler_name) return _internal_handler_name(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateAmStmt::_internal_handler_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.handler_name_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateAmStmt::_internal_mutable_handler_name() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.handler_name_; } // string amtype = 3 [json_name = "amtype"]; inline void CreateAmStmt::clear_amtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.amtype_.ClearToEmpty(); } inline const std::string& CreateAmStmt::amtype() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateAmStmt.amtype) return _internal_amtype(); } template inline PROTOBUF_ALWAYS_INLINE void CreateAmStmt::set_amtype(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.amtype_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateAmStmt.amtype) } inline std::string* CreateAmStmt::mutable_amtype() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_amtype(); // @@protoc_insertion_point(field_mutable:pg_query.CreateAmStmt.amtype) return _s; } inline const std::string& CreateAmStmt::_internal_amtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.amtype_.Get(); } inline void CreateAmStmt::_internal_set_amtype(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.amtype_.Set(value, GetArena()); } inline std::string* CreateAmStmt::_internal_mutable_amtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.amtype_.Mutable( GetArena()); } inline std::string* CreateAmStmt::release_amtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateAmStmt.amtype) return _impl_.amtype_.Release(); } inline void CreateAmStmt::set_allocated_amtype(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.amtype_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.amtype_.IsDefault()) { _impl_.amtype_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreateAmStmt.amtype) } // ------------------------------------------------------------------- // CreateTrigStmt // bool replace = 1 [json_name = "replace"]; inline void CreateTrigStmt::clear_replace() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.replace_ = false; } inline bool CreateTrigStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.replace) return _internal_replace(); } inline void CreateTrigStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.replace) } inline bool CreateTrigStmt::_internal_replace() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.replace_; } inline void CreateTrigStmt::_internal_set_replace(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.replace_ = value; } // bool isconstraint = 2 [json_name = "isconstraint"]; inline void CreateTrigStmt::clear_isconstraint() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.isconstraint_ = false; } inline bool CreateTrigStmt::isconstraint() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.isconstraint) return _internal_isconstraint(); } inline void CreateTrigStmt::set_isconstraint(bool value) { _internal_set_isconstraint(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.isconstraint) } inline bool CreateTrigStmt::_internal_isconstraint() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.isconstraint_; } inline void CreateTrigStmt::_internal_set_isconstraint(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.isconstraint_ = value; } // string trigname = 3 [json_name = "trigname"]; inline void CreateTrigStmt::clear_trigname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.trigname_.ClearToEmpty(); } inline const std::string& CreateTrigStmt::trigname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.trigname) return _internal_trigname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateTrigStmt::set_trigname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.trigname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.trigname) } inline std::string* CreateTrigStmt::mutable_trigname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_trigname(); // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.trigname) return _s; } inline const std::string& CreateTrigStmt::_internal_trigname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.trigname_.Get(); } inline void CreateTrigStmt::_internal_set_trigname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.trigname_.Set(value, GetArena()); } inline std::string* CreateTrigStmt::_internal_mutable_trigname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.trigname_.Mutable( GetArena()); } inline std::string* CreateTrigStmt::release_trigname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.trigname) return _impl_.trigname_.Release(); } inline void CreateTrigStmt::set_allocated_trigname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.trigname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.trigname_.IsDefault()) { _impl_.trigname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTrigStmt.trigname) } // .pg_query.RangeVar relation = 4 [json_name = "relation"]; inline bool CreateTrigStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void CreateTrigStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& CreateTrigStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& CreateTrigStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.relation) return _internal_relation(); } inline void CreateTrigStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTrigStmt.relation) } inline ::pg_query::RangeVar* CreateTrigStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* CreateTrigStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreateTrigStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* CreateTrigStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.relation) return _msg; } inline void CreateTrigStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTrigStmt.relation) } // repeated .pg_query.Node funcname = 5 [json_name = "funcname"]; inline int CreateTrigStmt::_internal_funcname_size() const { return _internal_funcname().size(); } inline int CreateTrigStmt::funcname_size() const { return _internal_funcname_size(); } inline void CreateTrigStmt::clear_funcname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funcname_.Clear(); } inline ::pg_query::Node* CreateTrigStmt::mutable_funcname(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.funcname) return _internal_mutable_funcname()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateTrigStmt::mutable_funcname() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.funcname) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_funcname(); } inline const ::pg_query::Node& CreateTrigStmt::funcname(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.funcname) return _internal_funcname().Get(index); } inline ::pg_query::Node* CreateTrigStmt::add_funcname() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_funcname()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.funcname) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateTrigStmt::funcname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.funcname) return _internal_funcname(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateTrigStmt::_internal_funcname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funcname_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateTrigStmt::_internal_mutable_funcname() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.funcname_; } // repeated .pg_query.Node args = 6 [json_name = "args"]; inline int CreateTrigStmt::_internal_args_size() const { return _internal_args().size(); } inline int CreateTrigStmt::args_size() const { return _internal_args_size(); } inline void CreateTrigStmt::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* CreateTrigStmt::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateTrigStmt::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& CreateTrigStmt::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.args) return _internal_args().Get(index); } inline ::pg_query::Node* CreateTrigStmt::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateTrigStmt::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateTrigStmt::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateTrigStmt::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // bool row = 7 [json_name = "row"]; inline void CreateTrigStmt::clear_row() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.row_ = false; } inline bool CreateTrigStmt::row() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.row) return _internal_row(); } inline void CreateTrigStmt::set_row(bool value) { _internal_set_row(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.row) } inline bool CreateTrigStmt::_internal_row() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.row_; } inline void CreateTrigStmt::_internal_set_row(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.row_ = value; } // int32 timing = 8 [json_name = "timing"]; inline void CreateTrigStmt::clear_timing() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.timing_ = 0; } inline ::int32_t CreateTrigStmt::timing() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.timing) return _internal_timing(); } inline void CreateTrigStmt::set_timing(::int32_t value) { _internal_set_timing(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.timing) } inline ::int32_t CreateTrigStmt::_internal_timing() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.timing_; } inline void CreateTrigStmt::_internal_set_timing(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.timing_ = value; } // int32 events = 9 [json_name = "events"]; inline void CreateTrigStmt::clear_events() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.events_ = 0; } inline ::int32_t CreateTrigStmt::events() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.events) return _internal_events(); } inline void CreateTrigStmt::set_events(::int32_t value) { _internal_set_events(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.events) } inline ::int32_t CreateTrigStmt::_internal_events() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.events_; } inline void CreateTrigStmt::_internal_set_events(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.events_ = value; } // repeated .pg_query.Node columns = 10 [json_name = "columns"]; inline int CreateTrigStmt::_internal_columns_size() const { return _internal_columns().size(); } inline int CreateTrigStmt::columns_size() const { return _internal_columns_size(); } inline void CreateTrigStmt::clear_columns() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.columns_.Clear(); } inline ::pg_query::Node* CreateTrigStmt::mutable_columns(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.columns) return _internal_mutable_columns()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateTrigStmt::mutable_columns() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.columns) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_columns(); } inline const ::pg_query::Node& CreateTrigStmt::columns(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.columns) return _internal_columns().Get(index); } inline ::pg_query::Node* CreateTrigStmt::add_columns() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_columns()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.columns) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateTrigStmt::columns() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.columns) return _internal_columns(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateTrigStmt::_internal_columns() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.columns_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateTrigStmt::_internal_mutable_columns() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.columns_; } // .pg_query.Node when_clause = 11 [json_name = "whenClause"]; inline bool CreateTrigStmt::has_when_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.when_clause_ != nullptr); return value; } inline void CreateTrigStmt::clear_when_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.when_clause_ != nullptr) _impl_.when_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& CreateTrigStmt::_internal_when_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.when_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CreateTrigStmt::when_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.when_clause_); } _impl_.when_clause_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTrigStmt.when_clause) } inline ::pg_query::Node* CreateTrigStmt::release_when_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.when_clause_; _impl_.when_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CreateTrigStmt::unsafe_arena_release_when_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.when_clause) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.when_clause_; _impl_.when_clause_ = nullptr; return temp; } inline ::pg_query::Node* CreateTrigStmt::_internal_mutable_when_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.when_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.when_clause_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.when_clause_; } inline ::pg_query::Node* CreateTrigStmt::mutable_when_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_when_clause(); // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.when_clause) return _msg; } inline void CreateTrigStmt::set_allocated_when_clause(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.when_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.when_clause_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTrigStmt.when_clause) } // repeated .pg_query.Node transition_rels = 12 [json_name = "transitionRels"]; inline int CreateTrigStmt::_internal_transition_rels_size() const { return _internal_transition_rels().size(); } inline int CreateTrigStmt::transition_rels_size() const { return _internal_transition_rels_size(); } inline void CreateTrigStmt::clear_transition_rels() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.transition_rels_.Clear(); } inline ::pg_query::Node* CreateTrigStmt::mutable_transition_rels(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.transition_rels) return _internal_mutable_transition_rels()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateTrigStmt::mutable_transition_rels() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.transition_rels) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_transition_rels(); } inline const ::pg_query::Node& CreateTrigStmt::transition_rels(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.transition_rels) return _internal_transition_rels().Get(index); } inline ::pg_query::Node* CreateTrigStmt::add_transition_rels() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_transition_rels()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.transition_rels) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateTrigStmt::transition_rels() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.transition_rels) return _internal_transition_rels(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateTrigStmt::_internal_transition_rels() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.transition_rels_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateTrigStmt::_internal_mutable_transition_rels() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.transition_rels_; } // bool deferrable = 13 [json_name = "deferrable"]; inline void CreateTrigStmt::clear_deferrable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.deferrable_ = false; } inline bool CreateTrigStmt::deferrable() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.deferrable) return _internal_deferrable(); } inline void CreateTrigStmt::set_deferrable(bool value) { _internal_set_deferrable(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.deferrable) } inline bool CreateTrigStmt::_internal_deferrable() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.deferrable_; } inline void CreateTrigStmt::_internal_set_deferrable(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.deferrable_ = value; } // bool initdeferred = 14 [json_name = "initdeferred"]; inline void CreateTrigStmt::clear_initdeferred() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.initdeferred_ = false; } inline bool CreateTrigStmt::initdeferred() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.initdeferred) return _internal_initdeferred(); } inline void CreateTrigStmt::set_initdeferred(bool value) { _internal_set_initdeferred(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.initdeferred) } inline bool CreateTrigStmt::_internal_initdeferred() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.initdeferred_; } inline void CreateTrigStmt::_internal_set_initdeferred(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.initdeferred_ = value; } // .pg_query.RangeVar constrrel = 15 [json_name = "constrrel"]; inline bool CreateTrigStmt::has_constrrel() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.constrrel_ != nullptr); return value; } inline void CreateTrigStmt::clear_constrrel() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.constrrel_ != nullptr) _impl_.constrrel_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::RangeVar& CreateTrigStmt::_internal_constrrel() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.constrrel_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& CreateTrigStmt::constrrel() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.constrrel) return _internal_constrrel(); } inline void CreateTrigStmt::unsafe_arena_set_allocated_constrrel(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.constrrel_); } _impl_.constrrel_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTrigStmt.constrrel) } inline ::pg_query::RangeVar* CreateTrigStmt::release_constrrel() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::RangeVar* released = _impl_.constrrel_; _impl_.constrrel_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* CreateTrigStmt::unsafe_arena_release_constrrel() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.constrrel) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::RangeVar* temp = _impl_.constrrel_; _impl_.constrrel_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreateTrigStmt::_internal_mutable_constrrel() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.constrrel_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.constrrel_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.constrrel_; } inline ::pg_query::RangeVar* CreateTrigStmt::mutable_constrrel() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_constrrel(); // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.constrrel) return _msg; } inline void CreateTrigStmt::set_allocated_constrrel(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.constrrel_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.constrrel_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTrigStmt.constrrel) } // ------------------------------------------------------------------- // CreateEventTrigStmt // string trigname = 1 [json_name = "trigname"]; inline void CreateEventTrigStmt::clear_trigname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.trigname_.ClearToEmpty(); } inline const std::string& CreateEventTrigStmt::trigname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.trigname) return _internal_trigname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateEventTrigStmt::set_trigname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.trigname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateEventTrigStmt.trigname) } inline std::string* CreateEventTrigStmt::mutable_trigname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_trigname(); // @@protoc_insertion_point(field_mutable:pg_query.CreateEventTrigStmt.trigname) return _s; } inline const std::string& CreateEventTrigStmt::_internal_trigname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.trigname_.Get(); } inline void CreateEventTrigStmt::_internal_set_trigname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.trigname_.Set(value, GetArena()); } inline std::string* CreateEventTrigStmt::_internal_mutable_trigname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.trigname_.Mutable( GetArena()); } inline std::string* CreateEventTrigStmt::release_trigname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateEventTrigStmt.trigname) return _impl_.trigname_.Release(); } inline void CreateEventTrigStmt::set_allocated_trigname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.trigname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.trigname_.IsDefault()) { _impl_.trigname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreateEventTrigStmt.trigname) } // string eventname = 2 [json_name = "eventname"]; inline void CreateEventTrigStmt::clear_eventname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.eventname_.ClearToEmpty(); } inline const std::string& CreateEventTrigStmt::eventname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.eventname) return _internal_eventname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateEventTrigStmt::set_eventname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.eventname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateEventTrigStmt.eventname) } inline std::string* CreateEventTrigStmt::mutable_eventname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_eventname(); // @@protoc_insertion_point(field_mutable:pg_query.CreateEventTrigStmt.eventname) return _s; } inline const std::string& CreateEventTrigStmt::_internal_eventname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.eventname_.Get(); } inline void CreateEventTrigStmt::_internal_set_eventname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.eventname_.Set(value, GetArena()); } inline std::string* CreateEventTrigStmt::_internal_mutable_eventname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.eventname_.Mutable( GetArena()); } inline std::string* CreateEventTrigStmt::release_eventname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateEventTrigStmt.eventname) return _impl_.eventname_.Release(); } inline void CreateEventTrigStmt::set_allocated_eventname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.eventname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.eventname_.IsDefault()) { _impl_.eventname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_whenclause().size(); } inline int CreateEventTrigStmt::whenclause_size() const { return _internal_whenclause_size(); } inline void CreateEventTrigStmt::clear_whenclause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.whenclause_.Clear(); } inline ::pg_query::Node* CreateEventTrigStmt::mutable_whenclause(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateEventTrigStmt.whenclause) return _internal_mutable_whenclause()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateEventTrigStmt::mutable_whenclause() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEventTrigStmt.whenclause) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_whenclause(); } inline const ::pg_query::Node& CreateEventTrigStmt::whenclause(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.whenclause) return _internal_whenclause().Get(index); } inline ::pg_query::Node* CreateEventTrigStmt::add_whenclause() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_whenclause()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateEventTrigStmt.whenclause) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateEventTrigStmt::whenclause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateEventTrigStmt.whenclause) return _internal_whenclause(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateEventTrigStmt::_internal_whenclause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.whenclause_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateEventTrigStmt::_internal_mutable_whenclause() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.whenclause_; } // repeated .pg_query.Node funcname = 4 [json_name = "funcname"]; inline int CreateEventTrigStmt::_internal_funcname_size() const { return _internal_funcname().size(); } inline int CreateEventTrigStmt::funcname_size() const { return _internal_funcname_size(); } inline void CreateEventTrigStmt::clear_funcname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funcname_.Clear(); } inline ::pg_query::Node* CreateEventTrigStmt::mutable_funcname(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateEventTrigStmt.funcname) return _internal_mutable_funcname()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateEventTrigStmt::mutable_funcname() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEventTrigStmt.funcname) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_funcname(); } inline const ::pg_query::Node& CreateEventTrigStmt::funcname(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.funcname) return _internal_funcname().Get(index); } inline ::pg_query::Node* CreateEventTrigStmt::add_funcname() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_funcname()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateEventTrigStmt.funcname) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateEventTrigStmt::funcname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateEventTrigStmt.funcname) return _internal_funcname(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateEventTrigStmt::_internal_funcname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funcname_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateEventTrigStmt::_internal_mutable_funcname() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.funcname_; } // ------------------------------------------------------------------- // AlterEventTrigStmt // string trigname = 1 [json_name = "trigname"]; inline void AlterEventTrigStmt::clear_trigname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.trigname_.ClearToEmpty(); } inline const std::string& AlterEventTrigStmt::trigname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterEventTrigStmt.trigname) return _internal_trigname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterEventTrigStmt::set_trigname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.trigname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterEventTrigStmt.trigname) } inline std::string* AlterEventTrigStmt::mutable_trigname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_trigname(); // @@protoc_insertion_point(field_mutable:pg_query.AlterEventTrigStmt.trigname) return _s; } inline const std::string& AlterEventTrigStmt::_internal_trigname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.trigname_.Get(); } inline void AlterEventTrigStmt::_internal_set_trigname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.trigname_.Set(value, GetArena()); } inline std::string* AlterEventTrigStmt::_internal_mutable_trigname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.trigname_.Mutable( GetArena()); } inline std::string* AlterEventTrigStmt::release_trigname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterEventTrigStmt.trigname) return _impl_.trigname_.Release(); } inline void AlterEventTrigStmt::set_allocated_trigname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.trigname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.trigname_.IsDefault()) { _impl_.trigname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterEventTrigStmt.trigname) } // string tgenabled = 2 [json_name = "tgenabled"]; inline void AlterEventTrigStmt::clear_tgenabled() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.tgenabled_.ClearToEmpty(); } inline const std::string& AlterEventTrigStmt::tgenabled() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterEventTrigStmt.tgenabled) return _internal_tgenabled(); } template inline PROTOBUF_ALWAYS_INLINE void AlterEventTrigStmt::set_tgenabled(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.tgenabled_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterEventTrigStmt.tgenabled) } inline std::string* AlterEventTrigStmt::mutable_tgenabled() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_tgenabled(); // @@protoc_insertion_point(field_mutable:pg_query.AlterEventTrigStmt.tgenabled) return _s; } inline const std::string& AlterEventTrigStmt::_internal_tgenabled() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.tgenabled_.Get(); } inline void AlterEventTrigStmt::_internal_set_tgenabled(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.tgenabled_.Set(value, GetArena()); } inline std::string* AlterEventTrigStmt::_internal_mutable_tgenabled() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.tgenabled_.Mutable( GetArena()); } inline std::string* AlterEventTrigStmt::release_tgenabled() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterEventTrigStmt.tgenabled) return _impl_.tgenabled_.Release(); } inline void AlterEventTrigStmt::set_allocated_tgenabled(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.tgenabled_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.tgenabled_.IsDefault()) { _impl_.tgenabled_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterEventTrigStmt.tgenabled) } // ------------------------------------------------------------------- // CreatePLangStmt // bool replace = 1 [json_name = "replace"]; inline void CreatePLangStmt::clear_replace() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.replace_ = false; } inline bool CreatePLangStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.replace) return _internal_replace(); } inline void CreatePLangStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.CreatePLangStmt.replace) } inline bool CreatePLangStmt::_internal_replace() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.replace_; } inline void CreatePLangStmt::_internal_set_replace(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.replace_ = value; } // string plname = 2 [json_name = "plname"]; inline void CreatePLangStmt::clear_plname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.plname_.ClearToEmpty(); } inline const std::string& CreatePLangStmt::plname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plname) return _internal_plname(); } template inline PROTOBUF_ALWAYS_INLINE void CreatePLangStmt::set_plname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.plname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreatePLangStmt.plname) } inline std::string* CreatePLangStmt::mutable_plname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_plname(); // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plname) return _s; } inline const std::string& CreatePLangStmt::_internal_plname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.plname_.Get(); } inline void CreatePLangStmt::_internal_set_plname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.plname_.Set(value, GetArena()); } inline std::string* CreatePLangStmt::_internal_mutable_plname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.plname_.Mutable( GetArena()); } inline std::string* CreatePLangStmt::release_plname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreatePLangStmt.plname) return _impl_.plname_.Release(); } inline void CreatePLangStmt::set_allocated_plname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.plname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.plname_.IsDefault()) { _impl_.plname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_plhandler().size(); } inline int CreatePLangStmt::plhandler_size() const { return _internal_plhandler_size(); } inline void CreatePLangStmt::clear_plhandler() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.plhandler_.Clear(); } inline ::pg_query::Node* CreatePLangStmt::mutable_plhandler(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plhandler) return _internal_mutable_plhandler()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreatePLangStmt::mutable_plhandler() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePLangStmt.plhandler) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_plhandler(); } inline const ::pg_query::Node& CreatePLangStmt::plhandler(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plhandler) return _internal_plhandler().Get(index); } inline ::pg_query::Node* CreatePLangStmt::add_plhandler() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_plhandler()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreatePLangStmt.plhandler) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreatePLangStmt::plhandler() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreatePLangStmt.plhandler) return _internal_plhandler(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreatePLangStmt::_internal_plhandler() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.plhandler_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreatePLangStmt::_internal_mutable_plhandler() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.plhandler_; } // repeated .pg_query.Node plinline = 4 [json_name = "plinline"]; inline int CreatePLangStmt::_internal_plinline_size() const { return _internal_plinline().size(); } inline int CreatePLangStmt::plinline_size() const { return _internal_plinline_size(); } inline void CreatePLangStmt::clear_plinline() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.plinline_.Clear(); } inline ::pg_query::Node* CreatePLangStmt::mutable_plinline(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plinline) return _internal_mutable_plinline()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreatePLangStmt::mutable_plinline() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePLangStmt.plinline) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_plinline(); } inline const ::pg_query::Node& CreatePLangStmt::plinline(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plinline) return _internal_plinline().Get(index); } inline ::pg_query::Node* CreatePLangStmt::add_plinline() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_plinline()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreatePLangStmt.plinline) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreatePLangStmt::plinline() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreatePLangStmt.plinline) return _internal_plinline(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreatePLangStmt::_internal_plinline() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.plinline_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreatePLangStmt::_internal_mutable_plinline() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.plinline_; } // repeated .pg_query.Node plvalidator = 5 [json_name = "plvalidator"]; inline int CreatePLangStmt::_internal_plvalidator_size() const { return _internal_plvalidator().size(); } inline int CreatePLangStmt::plvalidator_size() const { return _internal_plvalidator_size(); } inline void CreatePLangStmt::clear_plvalidator() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.plvalidator_.Clear(); } inline ::pg_query::Node* CreatePLangStmt::mutable_plvalidator(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plvalidator) return _internal_mutable_plvalidator()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreatePLangStmt::mutable_plvalidator() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePLangStmt.plvalidator) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_plvalidator(); } inline const ::pg_query::Node& CreatePLangStmt::plvalidator(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plvalidator) return _internal_plvalidator().Get(index); } inline ::pg_query::Node* CreatePLangStmt::add_plvalidator() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_plvalidator()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreatePLangStmt.plvalidator) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreatePLangStmt::plvalidator() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreatePLangStmt.plvalidator) return _internal_plvalidator(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreatePLangStmt::_internal_plvalidator() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.plvalidator_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreatePLangStmt::_internal_mutable_plvalidator() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.plvalidator_; } // bool pltrusted = 6 [json_name = "pltrusted"]; inline void CreatePLangStmt::clear_pltrusted() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.pltrusted_ = false; } inline bool CreatePLangStmt::pltrusted() const { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.pltrusted) return _internal_pltrusted(); } inline void CreatePLangStmt::set_pltrusted(bool value) { _internal_set_pltrusted(value); // @@protoc_insertion_point(field_set:pg_query.CreatePLangStmt.pltrusted) } inline bool CreatePLangStmt::_internal_pltrusted() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.pltrusted_; } inline void CreatePLangStmt::_internal_set_pltrusted(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.pltrusted_ = value; } // ------------------------------------------------------------------- // CreateRoleStmt // .pg_query.RoleStmtType stmt_type = 1 [json_name = "stmt_type"]; inline void CreateRoleStmt::clear_stmt_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.stmt_type_ = 0; } 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::set_stmt_type(::pg_query::RoleStmtType value) { _internal_set_stmt_type(value); // @@protoc_insertion_point(field_set:pg_query.CreateRoleStmt.stmt_type) } inline ::pg_query::RoleStmtType CreateRoleStmt::_internal_stmt_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::RoleStmtType>(_impl_.stmt_type_); } inline void CreateRoleStmt::_internal_set_stmt_type(::pg_query::RoleStmtType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.stmt_type_ = value; } // string role = 2 [json_name = "role"]; inline void CreateRoleStmt::clear_role() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.role_.ClearToEmpty(); } inline const std::string& CreateRoleStmt::role() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateRoleStmt.role) return _internal_role(); } template inline PROTOBUF_ALWAYS_INLINE void CreateRoleStmt::set_role(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.role_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateRoleStmt.role) } inline std::string* CreateRoleStmt::mutable_role() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_role(); // @@protoc_insertion_point(field_mutable:pg_query.CreateRoleStmt.role) return _s; } inline const std::string& CreateRoleStmt::_internal_role() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.role_.Get(); } inline void CreateRoleStmt::_internal_set_role(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.role_.Set(value, GetArena()); } inline std::string* CreateRoleStmt::_internal_mutable_role() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.role_.Mutable( GetArena()); } inline std::string* CreateRoleStmt::release_role() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateRoleStmt.role) return _impl_.role_.Release(); } inline void CreateRoleStmt::set_allocated_role(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.role_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.role_.IsDefault()) { _impl_.role_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_options().size(); } inline int CreateRoleStmt::options_size() const { return _internal_options_size(); } inline void CreateRoleStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* CreateRoleStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateRoleStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateRoleStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateRoleStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& CreateRoleStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateRoleStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* CreateRoleStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateRoleStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateRoleStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateRoleStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateRoleStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateRoleStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // AlterRoleStmt // .pg_query.RoleSpec role = 1 [json_name = "role"]; inline bool AlterRoleStmt::has_role() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.role_ != nullptr); return value; } inline void AlterRoleStmt::clear_role() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.role_ != nullptr) _impl_.role_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RoleSpec& AlterRoleStmt::_internal_role() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RoleSpec* p = _impl_.role_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& AlterRoleStmt::role() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterRoleStmt.role) return _internal_role(); } inline void AlterRoleStmt::unsafe_arena_set_allocated_role(::pg_query::RoleSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.role_); } _impl_.role_ = reinterpret_cast<::pg_query::RoleSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterRoleStmt.role) } inline ::pg_query::RoleSpec* AlterRoleStmt::release_role() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* released = _impl_.role_; _impl_.role_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RoleSpec* AlterRoleStmt::unsafe_arena_release_role() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterRoleStmt.role) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* temp = _impl_.role_; _impl_.role_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterRoleStmt::_internal_mutable_role() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.role_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); _impl_.role_ = reinterpret_cast<::pg_query::RoleSpec*>(p); } return _impl_.role_; } inline ::pg_query::RoleSpec* AlterRoleStmt::mutable_role() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RoleSpec* _msg = _internal_mutable_role(); // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleStmt.role) return _msg; } inline void AlterRoleStmt::set_allocated_role(::pg_query::RoleSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RoleSpec*>(_impl_.role_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RoleSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.role_ = reinterpret_cast<::pg_query::RoleSpec*>(value); // @@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 _internal_options().size(); } inline int AlterRoleStmt::options_size() const { return _internal_options_size(); } inline void AlterRoleStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* AlterRoleStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterRoleStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterRoleStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& AlterRoleStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterRoleStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* AlterRoleStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterRoleStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterRoleStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterRoleStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterRoleStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterRoleStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // int32 action = 3 [json_name = "action"]; inline void AlterRoleStmt::clear_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.action_ = 0; } inline ::int32_t AlterRoleStmt::action() const { // @@protoc_insertion_point(field_get:pg_query.AlterRoleStmt.action) return _internal_action(); } inline void AlterRoleStmt::set_action(::int32_t value) { _internal_set_action(value); // @@protoc_insertion_point(field_set:pg_query.AlterRoleStmt.action) } inline ::int32_t AlterRoleStmt::_internal_action() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.action_; } inline void AlterRoleStmt::_internal_set_action(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.action_ = value; } // ------------------------------------------------------------------- // AlterRoleSetStmt // .pg_query.RoleSpec role = 1 [json_name = "role"]; inline bool AlterRoleSetStmt::has_role() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.role_ != nullptr); return value; } inline void AlterRoleSetStmt::clear_role() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.role_ != nullptr) _impl_.role_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RoleSpec& AlterRoleSetStmt::_internal_role() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RoleSpec* p = _impl_.role_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& AlterRoleSetStmt::role() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterRoleSetStmt.role) return _internal_role(); } inline void AlterRoleSetStmt::unsafe_arena_set_allocated_role(::pg_query::RoleSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.role_); } _impl_.role_ = reinterpret_cast<::pg_query::RoleSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterRoleSetStmt.role) } inline ::pg_query::RoleSpec* AlterRoleSetStmt::release_role() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* released = _impl_.role_; _impl_.role_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RoleSpec* AlterRoleSetStmt::unsafe_arena_release_role() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterRoleSetStmt.role) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* temp = _impl_.role_; _impl_.role_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterRoleSetStmt::_internal_mutable_role() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.role_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); _impl_.role_ = reinterpret_cast<::pg_query::RoleSpec*>(p); } return _impl_.role_; } inline ::pg_query::RoleSpec* AlterRoleSetStmt::mutable_role() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RoleSpec* _msg = _internal_mutable_role(); // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleSetStmt.role) return _msg; } inline void AlterRoleSetStmt::set_allocated_role(::pg_query::RoleSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RoleSpec*>(_impl_.role_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RoleSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.role_ = reinterpret_cast<::pg_query::RoleSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterRoleSetStmt.role) } // string database = 2 [json_name = "database"]; inline void AlterRoleSetStmt::clear_database() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.database_.ClearToEmpty(); } inline const std::string& AlterRoleSetStmt::database() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterRoleSetStmt.database) return _internal_database(); } template inline PROTOBUF_ALWAYS_INLINE void AlterRoleSetStmt::set_database(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.database_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterRoleSetStmt.database) } inline std::string* AlterRoleSetStmt::mutable_database() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_database(); // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleSetStmt.database) return _s; } inline const std::string& AlterRoleSetStmt::_internal_database() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.database_.Get(); } inline void AlterRoleSetStmt::_internal_set_database(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.database_.Set(value, GetArena()); } inline std::string* AlterRoleSetStmt::_internal_mutable_database() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.database_.Mutable( GetArena()); } inline std::string* AlterRoleSetStmt::release_database() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterRoleSetStmt.database) return _impl_.database_.Release(); } inline void AlterRoleSetStmt::set_allocated_database(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.database_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.database_.IsDefault()) { _impl_.database_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterRoleSetStmt.database) } // .pg_query.VariableSetStmt setstmt = 3 [json_name = "setstmt"]; inline bool AlterRoleSetStmt::has_setstmt() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.setstmt_ != nullptr); return value; } inline void AlterRoleSetStmt::clear_setstmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.setstmt_ != nullptr) _impl_.setstmt_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::VariableSetStmt& AlterRoleSetStmt::_internal_setstmt() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::VariableSetStmt* p = _impl_.setstmt_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_VariableSetStmt_default_instance_); } inline const ::pg_query::VariableSetStmt& AlterRoleSetStmt::setstmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterRoleSetStmt.setstmt) return _internal_setstmt(); } inline void AlterRoleSetStmt::unsafe_arena_set_allocated_setstmt(::pg_query::VariableSetStmt* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.setstmt_); } _impl_.setstmt_ = reinterpret_cast<::pg_query::VariableSetStmt*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterRoleSetStmt.setstmt) } inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::release_setstmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::VariableSetStmt* released = _impl_.setstmt_; _impl_.setstmt_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::unsafe_arena_release_setstmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterRoleSetStmt.setstmt) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::VariableSetStmt* temp = _impl_.setstmt_; _impl_.setstmt_ = nullptr; return temp; } inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::_internal_mutable_setstmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.setstmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::VariableSetStmt>(GetArena()); _impl_.setstmt_ = reinterpret_cast<::pg_query::VariableSetStmt*>(p); } return _impl_.setstmt_; } inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::mutable_setstmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::VariableSetStmt* _msg = _internal_mutable_setstmt(); // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleSetStmt.setstmt) return _msg; } inline void AlterRoleSetStmt::set_allocated_setstmt(::pg_query::VariableSetStmt* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::VariableSetStmt*>(_impl_.setstmt_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::VariableSetStmt*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.setstmt_ = reinterpret_cast<::pg_query::VariableSetStmt*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterRoleSetStmt.setstmt) } // ------------------------------------------------------------------- // DropRoleStmt // repeated .pg_query.Node roles = 1 [json_name = "roles"]; inline int DropRoleStmt::_internal_roles_size() const { return _internal_roles().size(); } inline int DropRoleStmt::roles_size() const { return _internal_roles_size(); } inline void DropRoleStmt::clear_roles() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.roles_.Clear(); } inline ::pg_query::Node* DropRoleStmt::mutable_roles(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.DropRoleStmt.roles) return _internal_mutable_roles()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DropRoleStmt::mutable_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.DropRoleStmt.roles) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_roles(); } inline const ::pg_query::Node& DropRoleStmt::roles(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DropRoleStmt.roles) return _internal_roles().Get(index); } inline ::pg_query::Node* DropRoleStmt::add_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_roles()->Add(); // @@protoc_insertion_point(field_add:pg_query.DropRoleStmt.roles) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DropRoleStmt::roles() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.DropRoleStmt.roles) return _internal_roles(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DropRoleStmt::_internal_roles() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.roles_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DropRoleStmt::_internal_mutable_roles() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.roles_; } // bool missing_ok = 2 [json_name = "missing_ok"]; inline void DropRoleStmt::clear_missing_ok() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.missing_ok_ = false; } inline bool DropRoleStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropRoleStmt.missing_ok) return _internal_missing_ok(); } inline void DropRoleStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropRoleStmt.missing_ok) } inline bool DropRoleStmt::_internal_missing_ok() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.missing_ok_; } inline void DropRoleStmt::_internal_set_missing_ok(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.missing_ok_ = value; } // ------------------------------------------------------------------- // CreateSeqStmt // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; inline bool CreateSeqStmt::has_sequence() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.sequence_ != nullptr); return value; } inline void CreateSeqStmt::clear_sequence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.sequence_ != nullptr) _impl_.sequence_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& CreateSeqStmt::_internal_sequence() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.sequence_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& CreateSeqStmt::sequence() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.sequence) return _internal_sequence(); } inline void CreateSeqStmt::unsafe_arena_set_allocated_sequence(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.sequence_); } _impl_.sequence_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateSeqStmt.sequence) } inline ::pg_query::RangeVar* CreateSeqStmt::release_sequence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.sequence_; _impl_.sequence_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* CreateSeqStmt::unsafe_arena_release_sequence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateSeqStmt.sequence) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.sequence_; _impl_.sequence_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreateSeqStmt::_internal_mutable_sequence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.sequence_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.sequence_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.sequence_; } inline ::pg_query::RangeVar* CreateSeqStmt::mutable_sequence() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_sequence(); // @@protoc_insertion_point(field_mutable:pg_query.CreateSeqStmt.sequence) return _msg; } inline void CreateSeqStmt::set_allocated_sequence(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.sequence_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.sequence_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@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 _internal_options().size(); } inline int CreateSeqStmt::options_size() const { return _internal_options_size(); } inline void CreateSeqStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* CreateSeqStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateSeqStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateSeqStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSeqStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& CreateSeqStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* CreateSeqStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateSeqStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateSeqStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateSeqStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateSeqStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateSeqStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // uint32 owner_id = 3 [json_name = "ownerId"]; inline void CreateSeqStmt::clear_owner_id() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.owner_id_ = 0u; } inline ::uint32_t CreateSeqStmt::owner_id() const { // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.owner_id) return _internal_owner_id(); } inline void CreateSeqStmt::set_owner_id(::uint32_t value) { _internal_set_owner_id(value); // @@protoc_insertion_point(field_set:pg_query.CreateSeqStmt.owner_id) } inline ::uint32_t CreateSeqStmt::_internal_owner_id() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.owner_id_; } inline void CreateSeqStmt::_internal_set_owner_id(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.owner_id_ = value; } // bool for_identity = 4 [json_name = "for_identity"]; inline void CreateSeqStmt::clear_for_identity() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.for_identity_ = false; } inline bool CreateSeqStmt::for_identity() const { // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.for_identity) return _internal_for_identity(); } inline void CreateSeqStmt::set_for_identity(bool value) { _internal_set_for_identity(value); // @@protoc_insertion_point(field_set:pg_query.CreateSeqStmt.for_identity) } inline bool CreateSeqStmt::_internal_for_identity() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.for_identity_; } inline void CreateSeqStmt::_internal_set_for_identity(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.for_identity_ = value; } // bool if_not_exists = 5 [json_name = "if_not_exists"]; inline void CreateSeqStmt::clear_if_not_exists() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.if_not_exists_ = false; } 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::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateSeqStmt.if_not_exists) } inline bool CreateSeqStmt::_internal_if_not_exists() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.if_not_exists_; } inline void CreateSeqStmt::_internal_set_if_not_exists(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.if_not_exists_ = value; } // ------------------------------------------------------------------- // AlterSeqStmt // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; inline bool AlterSeqStmt::has_sequence() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.sequence_ != nullptr); return value; } inline void AlterSeqStmt::clear_sequence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.sequence_ != nullptr) _impl_.sequence_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& AlterSeqStmt::_internal_sequence() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.sequence_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& AlterSeqStmt::sequence() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.sequence) return _internal_sequence(); } inline void AlterSeqStmt::unsafe_arena_set_allocated_sequence(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.sequence_); } _impl_.sequence_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterSeqStmt.sequence) } inline ::pg_query::RangeVar* AlterSeqStmt::release_sequence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.sequence_; _impl_.sequence_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* AlterSeqStmt::unsafe_arena_release_sequence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterSeqStmt.sequence) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.sequence_; _impl_.sequence_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterSeqStmt::_internal_mutable_sequence() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.sequence_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.sequence_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.sequence_; } inline ::pg_query::RangeVar* AlterSeqStmt::mutable_sequence() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_sequence(); // @@protoc_insertion_point(field_mutable:pg_query.AlterSeqStmt.sequence) return _msg; } inline void AlterSeqStmt::set_allocated_sequence(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.sequence_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.sequence_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@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 _internal_options().size(); } inline int AlterSeqStmt::options_size() const { return _internal_options_size(); } inline void AlterSeqStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* AlterSeqStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterSeqStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterSeqStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterSeqStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& AlterSeqStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* AlterSeqStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterSeqStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterSeqStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterSeqStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterSeqStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterSeqStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // bool for_identity = 3 [json_name = "for_identity"]; inline void AlterSeqStmt::clear_for_identity() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.for_identity_ = false; } inline bool AlterSeqStmt::for_identity() const { // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.for_identity) return _internal_for_identity(); } inline void AlterSeqStmt::set_for_identity(bool value) { _internal_set_for_identity(value); // @@protoc_insertion_point(field_set:pg_query.AlterSeqStmt.for_identity) } inline bool AlterSeqStmt::_internal_for_identity() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.for_identity_; } inline void AlterSeqStmt::_internal_set_for_identity(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.for_identity_ = value; } // bool missing_ok = 4 [json_name = "missing_ok"]; inline void AlterSeqStmt::clear_missing_ok() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.missing_ok_ = false; } inline bool AlterSeqStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.missing_ok) return _internal_missing_ok(); } inline void AlterSeqStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterSeqStmt.missing_ok) } inline bool AlterSeqStmt::_internal_missing_ok() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.missing_ok_; } inline void AlterSeqStmt::_internal_set_missing_ok(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.missing_ok_ = value; } // ------------------------------------------------------------------- // DefineStmt // .pg_query.ObjectType kind = 1 [json_name = "kind"]; inline void DefineStmt::clear_kind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.kind_ = 0; } inline ::pg_query::ObjectType DefineStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.kind) return _internal_kind(); } inline void DefineStmt::set_kind(::pg_query::ObjectType value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.DefineStmt.kind) } inline ::pg_query::ObjectType DefineStmt::_internal_kind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.kind_); } inline void DefineStmt::_internal_set_kind(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.kind_ = value; } // bool oldstyle = 2 [json_name = "oldstyle"]; inline void DefineStmt::clear_oldstyle() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.oldstyle_ = false; } inline bool DefineStmt::oldstyle() const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.oldstyle) return _internal_oldstyle(); } inline void DefineStmt::set_oldstyle(bool value) { _internal_set_oldstyle(value); // @@protoc_insertion_point(field_set:pg_query.DefineStmt.oldstyle) } inline bool DefineStmt::_internal_oldstyle() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.oldstyle_; } inline void DefineStmt::_internal_set_oldstyle(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.oldstyle_ = value; } // repeated .pg_query.Node defnames = 3 [json_name = "defnames"]; inline int DefineStmt::_internal_defnames_size() const { return _internal_defnames().size(); } inline int DefineStmt::defnames_size() const { return _internal_defnames_size(); } inline void DefineStmt::clear_defnames() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.defnames_.Clear(); } inline ::pg_query::Node* DefineStmt::mutable_defnames(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.DefineStmt.defnames) return _internal_mutable_defnames()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DefineStmt::mutable_defnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.DefineStmt.defnames) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_defnames(); } inline const ::pg_query::Node& DefineStmt::defnames(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.defnames) return _internal_defnames().Get(index); } inline ::pg_query::Node* DefineStmt::add_defnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_defnames()->Add(); // @@protoc_insertion_point(field_add:pg_query.DefineStmt.defnames) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DefineStmt::defnames() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.DefineStmt.defnames) return _internal_defnames(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DefineStmt::_internal_defnames() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.defnames_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DefineStmt::_internal_mutable_defnames() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.defnames_; } // repeated .pg_query.Node args = 4 [json_name = "args"]; inline int DefineStmt::_internal_args_size() const { return _internal_args().size(); } inline int DefineStmt::args_size() const { return _internal_args_size(); } inline void DefineStmt::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* DefineStmt::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.DefineStmt.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DefineStmt::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.DefineStmt.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& DefineStmt::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.args) return _internal_args().Get(index); } inline ::pg_query::Node* DefineStmt::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.DefineStmt.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DefineStmt::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.DefineStmt.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DefineStmt::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DefineStmt::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // repeated .pg_query.Node definition = 5 [json_name = "definition"]; inline int DefineStmt::_internal_definition_size() const { return _internal_definition().size(); } inline int DefineStmt::definition_size() const { return _internal_definition_size(); } inline void DefineStmt::clear_definition() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.definition_.Clear(); } inline ::pg_query::Node* DefineStmt::mutable_definition(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.DefineStmt.definition) return _internal_mutable_definition()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DefineStmt::mutable_definition() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.DefineStmt.definition) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_definition(); } inline const ::pg_query::Node& DefineStmt::definition(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.definition) return _internal_definition().Get(index); } inline ::pg_query::Node* DefineStmt::add_definition() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_definition()->Add(); // @@protoc_insertion_point(field_add:pg_query.DefineStmt.definition) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DefineStmt::definition() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.DefineStmt.definition) return _internal_definition(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DefineStmt::_internal_definition() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.definition_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DefineStmt::_internal_mutable_definition() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.definition_; } // bool if_not_exists = 6 [json_name = "if_not_exists"]; inline void DefineStmt::clear_if_not_exists() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.if_not_exists_ = false; } 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::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.DefineStmt.if_not_exists) } inline bool DefineStmt::_internal_if_not_exists() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.if_not_exists_; } inline void DefineStmt::_internal_set_if_not_exists(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.if_not_exists_ = value; } // bool replace = 7 [json_name = "replace"]; inline void DefineStmt::clear_replace() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.replace_ = false; } inline bool DefineStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.replace) return _internal_replace(); } inline void DefineStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.DefineStmt.replace) } inline bool DefineStmt::_internal_replace() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.replace_; } inline void DefineStmt::_internal_set_replace(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.replace_ = value; } // ------------------------------------------------------------------- // CreateDomainStmt // repeated .pg_query.Node domainname = 1 [json_name = "domainname"]; inline int CreateDomainStmt::_internal_domainname_size() const { return _internal_domainname().size(); } inline int CreateDomainStmt::domainname_size() const { return _internal_domainname_size(); } inline void CreateDomainStmt::clear_domainname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.domainname_.Clear(); } inline ::pg_query::Node* CreateDomainStmt::mutable_domainname(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateDomainStmt.domainname) return _internal_mutable_domainname()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateDomainStmt::mutable_domainname() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateDomainStmt.domainname) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_domainname(); } inline const ::pg_query::Node& CreateDomainStmt::domainname(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateDomainStmt.domainname) return _internal_domainname().Get(index); } inline ::pg_query::Node* CreateDomainStmt::add_domainname() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_domainname()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateDomainStmt.domainname) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateDomainStmt::domainname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateDomainStmt.domainname) return _internal_domainname(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateDomainStmt::_internal_domainname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.domainname_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateDomainStmt::_internal_mutable_domainname() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.domainname_; } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; inline bool CreateDomainStmt::has_type_name() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.type_name_ != nullptr); return value; } inline void CreateDomainStmt::clear_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.type_name_ != nullptr) _impl_.type_name_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::TypeName& CreateDomainStmt::_internal_type_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.type_name_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateDomainStmt::type_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.type_name_); } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateDomainStmt.type_name) } inline ::pg_query::TypeName* CreateDomainStmt::release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* released = _impl_.type_name_; _impl_.type_name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* CreateDomainStmt::unsafe_arena_release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateDomainStmt.type_name) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateDomainStmt::_internal_mutable_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.type_name_; } inline ::pg_query::TypeName* CreateDomainStmt::mutable_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_type_name(); // @@protoc_insertion_point(field_mutable:pg_query.CreateDomainStmt.type_name) return _msg; } inline void CreateDomainStmt::set_allocated_type_name(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.type_name_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateDomainStmt.type_name) } // .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; inline bool CreateDomainStmt::has_coll_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.coll_clause_ != nullptr); return value; } inline void CreateDomainStmt::clear_coll_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.coll_clause_ != nullptr) _impl_.coll_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::CollateClause& CreateDomainStmt::_internal_coll_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::CollateClause* p = _impl_.coll_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_CollateClause_default_instance_); } inline const ::pg_query::CollateClause& CreateDomainStmt::coll_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.coll_clause_); } _impl_.coll_clause_ = reinterpret_cast<::pg_query::CollateClause*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateDomainStmt.coll_clause) } inline ::pg_query::CollateClause* CreateDomainStmt::release_coll_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::CollateClause* released = _impl_.coll_clause_; _impl_.coll_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::CollateClause* CreateDomainStmt::unsafe_arena_release_coll_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateDomainStmt.coll_clause) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::CollateClause* temp = _impl_.coll_clause_; _impl_.coll_clause_ = nullptr; return temp; } inline ::pg_query::CollateClause* CreateDomainStmt::_internal_mutable_coll_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.coll_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::CollateClause>(GetArena()); _impl_.coll_clause_ = reinterpret_cast<::pg_query::CollateClause*>(p); } return _impl_.coll_clause_; } inline ::pg_query::CollateClause* CreateDomainStmt::mutable_coll_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::CollateClause* _msg = _internal_mutable_coll_clause(); // @@protoc_insertion_point(field_mutable:pg_query.CreateDomainStmt.coll_clause) return _msg; } inline void CreateDomainStmt::set_allocated_coll_clause(::pg_query::CollateClause* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::CollateClause*>(_impl_.coll_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::CollateClause*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.coll_clause_ = reinterpret_cast<::pg_query::CollateClause*>(value); // @@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 _internal_constraints().size(); } inline int CreateDomainStmt::constraints_size() const { return _internal_constraints_size(); } inline void CreateDomainStmt::clear_constraints() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.constraints_.Clear(); } inline ::pg_query::Node* CreateDomainStmt::mutable_constraints(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateDomainStmt.constraints) return _internal_mutable_constraints()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateDomainStmt::mutable_constraints() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateDomainStmt.constraints) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_constraints(); } inline const ::pg_query::Node& CreateDomainStmt::constraints(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateDomainStmt.constraints) return _internal_constraints().Get(index); } inline ::pg_query::Node* CreateDomainStmt::add_constraints() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_constraints()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateDomainStmt.constraints) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateDomainStmt::constraints() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateDomainStmt.constraints) return _internal_constraints(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateDomainStmt::_internal_constraints() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.constraints_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateDomainStmt::_internal_mutable_constraints() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.constraints_; } // ------------------------------------------------------------------- // CreateOpClassStmt // repeated .pg_query.Node opclassname = 1 [json_name = "opclassname"]; inline int CreateOpClassStmt::_internal_opclassname_size() const { return _internal_opclassname().size(); } inline int CreateOpClassStmt::opclassname_size() const { return _internal_opclassname_size(); } inline void CreateOpClassStmt::clear_opclassname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opclassname_.Clear(); } inline ::pg_query::Node* CreateOpClassStmt::mutable_opclassname(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.opclassname) return _internal_mutable_opclassname()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateOpClassStmt::mutable_opclassname() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassStmt.opclassname) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_opclassname(); } inline const ::pg_query::Node& CreateOpClassStmt::opclassname(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.opclassname) return _internal_opclassname().Get(index); } inline ::pg_query::Node* CreateOpClassStmt::add_opclassname() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_opclassname()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateOpClassStmt.opclassname) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateOpClassStmt::opclassname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassStmt.opclassname) return _internal_opclassname(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateOpClassStmt::_internal_opclassname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opclassname_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateOpClassStmt::_internal_mutable_opclassname() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.opclassname_; } // repeated .pg_query.Node opfamilyname = 2 [json_name = "opfamilyname"]; inline int CreateOpClassStmt::_internal_opfamilyname_size() const { return _internal_opfamilyname().size(); } inline int CreateOpClassStmt::opfamilyname_size() const { return _internal_opfamilyname_size(); } inline void CreateOpClassStmt::clear_opfamilyname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opfamilyname_.Clear(); } inline ::pg_query::Node* CreateOpClassStmt::mutable_opfamilyname(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.opfamilyname) return _internal_mutable_opfamilyname()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateOpClassStmt::mutable_opfamilyname() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassStmt.opfamilyname) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_opfamilyname(); } inline const ::pg_query::Node& CreateOpClassStmt::opfamilyname(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.opfamilyname) return _internal_opfamilyname().Get(index); } inline ::pg_query::Node* CreateOpClassStmt::add_opfamilyname() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_opfamilyname()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateOpClassStmt.opfamilyname) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateOpClassStmt::opfamilyname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassStmt.opfamilyname) return _internal_opfamilyname(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateOpClassStmt::_internal_opfamilyname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opfamilyname_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateOpClassStmt::_internal_mutable_opfamilyname() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.opfamilyname_; } // string amname = 3 [json_name = "amname"]; inline void CreateOpClassStmt::clear_amname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.amname_.ClearToEmpty(); } inline const std::string& CreateOpClassStmt::amname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.amname) return _internal_amname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateOpClassStmt::set_amname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.amname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateOpClassStmt.amname) } inline std::string* CreateOpClassStmt::mutable_amname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_amname(); // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.amname) return _s; } inline const std::string& CreateOpClassStmt::_internal_amname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.amname_.Get(); } inline void CreateOpClassStmt::_internal_set_amname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.amname_.Set(value, GetArena()); } inline std::string* CreateOpClassStmt::_internal_mutable_amname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.amname_.Mutable( GetArena()); } inline std::string* CreateOpClassStmt::release_amname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateOpClassStmt.amname) return _impl_.amname_.Release(); } inline void CreateOpClassStmt::set_allocated_amname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.amname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.amname_.IsDefault()) { _impl_.amname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpClassStmt.amname) } // .pg_query.TypeName datatype = 4 [json_name = "datatype"]; inline bool CreateOpClassStmt::has_datatype() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.datatype_ != nullptr); return value; } inline void CreateOpClassStmt::clear_datatype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.datatype_ != nullptr) _impl_.datatype_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::TypeName& CreateOpClassStmt::_internal_datatype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.datatype_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateOpClassStmt::datatype() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.datatype) return _internal_datatype(); } inline void CreateOpClassStmt::unsafe_arena_set_allocated_datatype(::pg_query::TypeName* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.datatype_); } _impl_.datatype_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateOpClassStmt.datatype) } inline ::pg_query::TypeName* CreateOpClassStmt::release_datatype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* released = _impl_.datatype_; _impl_.datatype_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* CreateOpClassStmt::unsafe_arena_release_datatype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateOpClassStmt.datatype) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* temp = _impl_.datatype_; _impl_.datatype_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateOpClassStmt::_internal_mutable_datatype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.datatype_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.datatype_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.datatype_; } inline ::pg_query::TypeName* CreateOpClassStmt::mutable_datatype() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_datatype(); // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.datatype) return _msg; } inline void CreateOpClassStmt::set_allocated_datatype(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.datatype_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.datatype_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@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 _internal_items().size(); } inline int CreateOpClassStmt::items_size() const { return _internal_items_size(); } inline void CreateOpClassStmt::clear_items() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.items_.Clear(); } inline ::pg_query::Node* CreateOpClassStmt::mutable_items(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.items) return _internal_mutable_items()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateOpClassStmt::mutable_items() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassStmt.items) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_items(); } inline const ::pg_query::Node& CreateOpClassStmt::items(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.items) return _internal_items().Get(index); } inline ::pg_query::Node* CreateOpClassStmt::add_items() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_items()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateOpClassStmt.items) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateOpClassStmt::items() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassStmt.items) return _internal_items(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateOpClassStmt::_internal_items() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.items_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateOpClassStmt::_internal_mutable_items() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.items_; } // bool is_default = 6 [json_name = "isDefault"]; inline void CreateOpClassStmt::clear_is_default() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_default_ = false; } inline bool CreateOpClassStmt::is_default() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.is_default) return _internal_is_default(); } inline void CreateOpClassStmt::set_is_default(bool value) { _internal_set_is_default(value); // @@protoc_insertion_point(field_set:pg_query.CreateOpClassStmt.is_default) } inline bool CreateOpClassStmt::_internal_is_default() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_default_; } inline void CreateOpClassStmt::_internal_set_is_default(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_default_ = value; } // ------------------------------------------------------------------- // CreateOpClassItem // int32 itemtype = 1 [json_name = "itemtype"]; inline void CreateOpClassItem::clear_itemtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.itemtype_ = 0; } inline ::int32_t CreateOpClassItem::itemtype() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.itemtype) return _internal_itemtype(); } inline void CreateOpClassItem::set_itemtype(::int32_t value) { _internal_set_itemtype(value); // @@protoc_insertion_point(field_set:pg_query.CreateOpClassItem.itemtype) } inline ::int32_t CreateOpClassItem::_internal_itemtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.itemtype_; } inline void CreateOpClassItem::_internal_set_itemtype(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.itemtype_ = value; } // .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; inline bool CreateOpClassItem::has_name() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.name_ != nullptr); return value; } inline void CreateOpClassItem::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.name_ != nullptr) _impl_.name_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::ObjectWithArgs& CreateOpClassItem::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::ObjectWithArgs* p = _impl_.name_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_ObjectWithArgs_default_instance_); } inline const ::pg_query::ObjectWithArgs& CreateOpClassItem::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.name) return _internal_name(); } inline void CreateOpClassItem::unsafe_arena_set_allocated_name(::pg_query::ObjectWithArgs* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.name_); } _impl_.name_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateOpClassItem.name) } inline ::pg_query::ObjectWithArgs* CreateOpClassItem::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::ObjectWithArgs* released = _impl_.name_; _impl_.name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::ObjectWithArgs* CreateOpClassItem::unsafe_arena_release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateOpClassItem.name) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::ObjectWithArgs* temp = _impl_.name_; _impl_.name_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* CreateOpClassItem::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); _impl_.name_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(p); } return _impl_.name_; } inline ::pg_query::ObjectWithArgs* CreateOpClassItem::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ObjectWithArgs* _msg = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassItem.name) return _msg; } inline void CreateOpClassItem::set_allocated_name(::pg_query::ObjectWithArgs* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::ObjectWithArgs*>(_impl_.name_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::ObjectWithArgs*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.name_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpClassItem.name) } // int32 number = 3 [json_name = "number"]; inline void CreateOpClassItem::clear_number() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.number_ = 0; } inline ::int32_t CreateOpClassItem::number() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.number) return _internal_number(); } inline void CreateOpClassItem::set_number(::int32_t value) { _internal_set_number(value); // @@protoc_insertion_point(field_set:pg_query.CreateOpClassItem.number) } inline ::int32_t CreateOpClassItem::_internal_number() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.number_; } inline void CreateOpClassItem::_internal_set_number(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.number_ = value; } // repeated .pg_query.Node order_family = 4 [json_name = "order_family"]; inline int CreateOpClassItem::_internal_order_family_size() const { return _internal_order_family().size(); } inline int CreateOpClassItem::order_family_size() const { return _internal_order_family_size(); } inline void CreateOpClassItem::clear_order_family() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.order_family_.Clear(); } inline ::pg_query::Node* CreateOpClassItem::mutable_order_family(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassItem.order_family) return _internal_mutable_order_family()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateOpClassItem::mutable_order_family() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassItem.order_family) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_order_family(); } inline const ::pg_query::Node& CreateOpClassItem::order_family(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.order_family) return _internal_order_family().Get(index); } inline ::pg_query::Node* CreateOpClassItem::add_order_family() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_order_family()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateOpClassItem.order_family) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateOpClassItem::order_family() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassItem.order_family) return _internal_order_family(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateOpClassItem::_internal_order_family() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.order_family_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateOpClassItem::_internal_mutable_order_family() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.order_family_; } // repeated .pg_query.Node class_args = 5 [json_name = "class_args"]; inline int CreateOpClassItem::_internal_class_args_size() const { return _internal_class_args().size(); } inline int CreateOpClassItem::class_args_size() const { return _internal_class_args_size(); } inline void CreateOpClassItem::clear_class_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.class_args_.Clear(); } inline ::pg_query::Node* CreateOpClassItem::mutable_class_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassItem.class_args) return _internal_mutable_class_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateOpClassItem::mutable_class_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassItem.class_args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_class_args(); } inline const ::pg_query::Node& CreateOpClassItem::class_args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.class_args) return _internal_class_args().Get(index); } inline ::pg_query::Node* CreateOpClassItem::add_class_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_class_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateOpClassItem.class_args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateOpClassItem::class_args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassItem.class_args) return _internal_class_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateOpClassItem::_internal_class_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.class_args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateOpClassItem::_internal_mutable_class_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.class_args_; } // .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; inline bool CreateOpClassItem::has_storedtype() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.storedtype_ != nullptr); return value; } inline void CreateOpClassItem::clear_storedtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.storedtype_ != nullptr) _impl_.storedtype_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::TypeName& CreateOpClassItem::_internal_storedtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.storedtype_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateOpClassItem::storedtype() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.storedtype) return _internal_storedtype(); } inline void CreateOpClassItem::unsafe_arena_set_allocated_storedtype(::pg_query::TypeName* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.storedtype_); } _impl_.storedtype_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateOpClassItem.storedtype) } inline ::pg_query::TypeName* CreateOpClassItem::release_storedtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::TypeName* released = _impl_.storedtype_; _impl_.storedtype_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* CreateOpClassItem::unsafe_arena_release_storedtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateOpClassItem.storedtype) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::TypeName* temp = _impl_.storedtype_; _impl_.storedtype_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateOpClassItem::_internal_mutable_storedtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.storedtype_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.storedtype_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.storedtype_; } inline ::pg_query::TypeName* CreateOpClassItem::mutable_storedtype() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_storedtype(); // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassItem.storedtype) return _msg; } inline void CreateOpClassItem::set_allocated_storedtype(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.storedtype_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.storedtype_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpClassItem.storedtype) } // ------------------------------------------------------------------- // CreateOpFamilyStmt // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; inline int CreateOpFamilyStmt::_internal_opfamilyname_size() const { return _internal_opfamilyname().size(); } inline int CreateOpFamilyStmt::opfamilyname_size() const { return _internal_opfamilyname_size(); } inline void CreateOpFamilyStmt::clear_opfamilyname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opfamilyname_.Clear(); } inline ::pg_query::Node* CreateOpFamilyStmt::mutable_opfamilyname(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpFamilyStmt.opfamilyname) return _internal_mutable_opfamilyname()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateOpFamilyStmt::mutable_opfamilyname() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpFamilyStmt.opfamilyname) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_opfamilyname(); } inline const ::pg_query::Node& CreateOpFamilyStmt::opfamilyname(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateOpFamilyStmt.opfamilyname) return _internal_opfamilyname().Get(index); } inline ::pg_query::Node* CreateOpFamilyStmt::add_opfamilyname() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_opfamilyname()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateOpFamilyStmt.opfamilyname) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateOpFamilyStmt::opfamilyname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateOpFamilyStmt.opfamilyname) return _internal_opfamilyname(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateOpFamilyStmt::_internal_opfamilyname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opfamilyname_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateOpFamilyStmt::_internal_mutable_opfamilyname() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.opfamilyname_; } // string amname = 2 [json_name = "amname"]; inline void CreateOpFamilyStmt::clear_amname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.amname_.ClearToEmpty(); } inline const std::string& CreateOpFamilyStmt::amname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateOpFamilyStmt.amname) return _internal_amname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateOpFamilyStmt::set_amname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.amname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateOpFamilyStmt.amname) } inline std::string* CreateOpFamilyStmt::mutable_amname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_amname(); // @@protoc_insertion_point(field_mutable:pg_query.CreateOpFamilyStmt.amname) return _s; } inline const std::string& CreateOpFamilyStmt::_internal_amname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.amname_.Get(); } inline void CreateOpFamilyStmt::_internal_set_amname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.amname_.Set(value, GetArena()); } inline std::string* CreateOpFamilyStmt::_internal_mutable_amname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.amname_.Mutable( GetArena()); } inline std::string* CreateOpFamilyStmt::release_amname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateOpFamilyStmt.amname) return _impl_.amname_.Release(); } inline void CreateOpFamilyStmt::set_allocated_amname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.amname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.amname_.IsDefault()) { _impl_.amname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_opfamilyname().size(); } inline int AlterOpFamilyStmt::opfamilyname_size() const { return _internal_opfamilyname_size(); } inline void AlterOpFamilyStmt::clear_opfamilyname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.opfamilyname_.Clear(); } inline ::pg_query::Node* AlterOpFamilyStmt::mutable_opfamilyname(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterOpFamilyStmt.opfamilyname) return _internal_mutable_opfamilyname()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterOpFamilyStmt::mutable_opfamilyname() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterOpFamilyStmt.opfamilyname) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_opfamilyname(); } inline const ::pg_query::Node& AlterOpFamilyStmt::opfamilyname(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.opfamilyname) return _internal_opfamilyname().Get(index); } inline ::pg_query::Node* AlterOpFamilyStmt::add_opfamilyname() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_opfamilyname()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterOpFamilyStmt.opfamilyname) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterOpFamilyStmt::opfamilyname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterOpFamilyStmt.opfamilyname) return _internal_opfamilyname(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterOpFamilyStmt::_internal_opfamilyname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.opfamilyname_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterOpFamilyStmt::_internal_mutable_opfamilyname() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.opfamilyname_; } // string amname = 2 [json_name = "amname"]; inline void AlterOpFamilyStmt::clear_amname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.amname_.ClearToEmpty(); } inline const std::string& AlterOpFamilyStmt::amname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.amname) return _internal_amname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterOpFamilyStmt::set_amname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.amname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterOpFamilyStmt.amname) } inline std::string* AlterOpFamilyStmt::mutable_amname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_amname(); // @@protoc_insertion_point(field_mutable:pg_query.AlterOpFamilyStmt.amname) return _s; } inline const std::string& AlterOpFamilyStmt::_internal_amname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.amname_.Get(); } inline void AlterOpFamilyStmt::_internal_set_amname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.amname_.Set(value, GetArena()); } inline std::string* AlterOpFamilyStmt::_internal_mutable_amname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.amname_.Mutable( GetArena()); } inline std::string* AlterOpFamilyStmt::release_amname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterOpFamilyStmt.amname) return _impl_.amname_.Release(); } inline void AlterOpFamilyStmt::set_allocated_amname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.amname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.amname_.IsDefault()) { _impl_.amname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOpFamilyStmt.amname) } // bool is_drop = 3 [json_name = "isDrop"]; inline void AlterOpFamilyStmt::clear_is_drop() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_drop_ = false; } inline bool AlterOpFamilyStmt::is_drop() const { // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.is_drop) return _internal_is_drop(); } inline void AlterOpFamilyStmt::set_is_drop(bool value) { _internal_set_is_drop(value); // @@protoc_insertion_point(field_set:pg_query.AlterOpFamilyStmt.is_drop) } inline bool AlterOpFamilyStmt::_internal_is_drop() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_drop_; } inline void AlterOpFamilyStmt::_internal_set_is_drop(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_drop_ = value; } // repeated .pg_query.Node items = 4 [json_name = "items"]; inline int AlterOpFamilyStmt::_internal_items_size() const { return _internal_items().size(); } inline int AlterOpFamilyStmt::items_size() const { return _internal_items_size(); } inline void AlterOpFamilyStmt::clear_items() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.items_.Clear(); } inline ::pg_query::Node* AlterOpFamilyStmt::mutable_items(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterOpFamilyStmt.items) return _internal_mutable_items()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterOpFamilyStmt::mutable_items() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterOpFamilyStmt.items) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_items(); } inline const ::pg_query::Node& AlterOpFamilyStmt::items(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.items) return _internal_items().Get(index); } inline ::pg_query::Node* AlterOpFamilyStmt::add_items() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_items()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterOpFamilyStmt.items) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterOpFamilyStmt::items() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterOpFamilyStmt.items) return _internal_items(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterOpFamilyStmt::_internal_items() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.items_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterOpFamilyStmt::_internal_mutable_items() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.items_; } // ------------------------------------------------------------------- // DropStmt // repeated .pg_query.Node objects = 1 [json_name = "objects"]; inline int DropStmt::_internal_objects_size() const { return _internal_objects().size(); } inline int DropStmt::objects_size() const { return _internal_objects_size(); } inline void DropStmt::clear_objects() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.objects_.Clear(); } inline ::pg_query::Node* DropStmt::mutable_objects(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.DropStmt.objects) return _internal_mutable_objects()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DropStmt::mutable_objects() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.DropStmt.objects) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_objects(); } inline const ::pg_query::Node& DropStmt::objects(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DropStmt.objects) return _internal_objects().Get(index); } inline ::pg_query::Node* DropStmt::add_objects() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_objects()->Add(); // @@protoc_insertion_point(field_add:pg_query.DropStmt.objects) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DropStmt::objects() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.DropStmt.objects) return _internal_objects(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DropStmt::_internal_objects() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.objects_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DropStmt::_internal_mutable_objects() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.objects_; } // .pg_query.ObjectType remove_type = 2 [json_name = "removeType"]; inline void DropStmt::clear_remove_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.remove_type_ = 0; } 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::set_remove_type(::pg_query::ObjectType value) { _internal_set_remove_type(value); // @@protoc_insertion_point(field_set:pg_query.DropStmt.remove_type) } inline ::pg_query::ObjectType DropStmt::_internal_remove_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.remove_type_); } inline void DropStmt::_internal_set_remove_type(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.remove_type_ = value; } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; inline void DropStmt::clear_behavior() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior DropStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.DropStmt.behavior) return _internal_behavior(); } inline void DropStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.DropStmt.behavior) } inline ::pg_query::DropBehavior DropStmt::_internal_behavior() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::DropBehavior>(_impl_.behavior_); } inline void DropStmt::_internal_set_behavior(::pg_query::DropBehavior value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.behavior_ = value; } // bool missing_ok = 4 [json_name = "missing_ok"]; inline void DropStmt::clear_missing_ok() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.missing_ok_ = false; } inline bool DropStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropStmt.missing_ok) return _internal_missing_ok(); } inline void DropStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropStmt.missing_ok) } inline bool DropStmt::_internal_missing_ok() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.missing_ok_; } inline void DropStmt::_internal_set_missing_ok(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.missing_ok_ = value; } // bool concurrent = 5 [json_name = "concurrent"]; inline void DropStmt::clear_concurrent() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.concurrent_ = false; } inline bool DropStmt::concurrent() const { // @@protoc_insertion_point(field_get:pg_query.DropStmt.concurrent) return _internal_concurrent(); } inline void DropStmt::set_concurrent(bool value) { _internal_set_concurrent(value); // @@protoc_insertion_point(field_set:pg_query.DropStmt.concurrent) } inline bool DropStmt::_internal_concurrent() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.concurrent_; } inline void DropStmt::_internal_set_concurrent(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.concurrent_ = value; } // ------------------------------------------------------------------- // TruncateStmt // repeated .pg_query.Node relations = 1 [json_name = "relations"]; inline int TruncateStmt::_internal_relations_size() const { return _internal_relations().size(); } inline int TruncateStmt::relations_size() const { return _internal_relations_size(); } inline void TruncateStmt::clear_relations() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relations_.Clear(); } inline ::pg_query::Node* TruncateStmt::mutable_relations(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TruncateStmt.relations) return _internal_mutable_relations()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TruncateStmt::mutable_relations() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TruncateStmt.relations) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_relations(); } inline const ::pg_query::Node& TruncateStmt::relations(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TruncateStmt.relations) return _internal_relations().Get(index); } inline ::pg_query::Node* TruncateStmt::add_relations() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_relations()->Add(); // @@protoc_insertion_point(field_add:pg_query.TruncateStmt.relations) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TruncateStmt::relations() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TruncateStmt.relations) return _internal_relations(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TruncateStmt::_internal_relations() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.relations_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TruncateStmt::_internal_mutable_relations() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.relations_; } // bool restart_seqs = 2 [json_name = "restart_seqs"]; inline void TruncateStmt::clear_restart_seqs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.restart_seqs_ = false; } inline bool TruncateStmt::restart_seqs() const { // @@protoc_insertion_point(field_get:pg_query.TruncateStmt.restart_seqs) return _internal_restart_seqs(); } inline void TruncateStmt::set_restart_seqs(bool value) { _internal_set_restart_seqs(value); // @@protoc_insertion_point(field_set:pg_query.TruncateStmt.restart_seqs) } inline bool TruncateStmt::_internal_restart_seqs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.restart_seqs_; } inline void TruncateStmt::_internal_set_restart_seqs(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.restart_seqs_ = value; } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; inline void TruncateStmt::clear_behavior() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior TruncateStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.TruncateStmt.behavior) return _internal_behavior(); } inline void TruncateStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.TruncateStmt.behavior) } inline ::pg_query::DropBehavior TruncateStmt::_internal_behavior() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::DropBehavior>(_impl_.behavior_); } inline void TruncateStmt::_internal_set_behavior(::pg_query::DropBehavior value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.behavior_ = value; } // ------------------------------------------------------------------- // CommentStmt // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; inline void CommentStmt::clear_objtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.objtype_ = 0; } inline ::pg_query::ObjectType CommentStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.CommentStmt.objtype) return _internal_objtype(); } inline void CommentStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.CommentStmt.objtype) } inline ::pg_query::ObjectType CommentStmt::_internal_objtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.objtype_); } inline void CommentStmt::_internal_set_objtype(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.objtype_ = value; } // .pg_query.Node object = 2 [json_name = "object"]; inline bool CommentStmt::has_object() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.object_ != nullptr); return value; } inline void CommentStmt::clear_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.object_ != nullptr) _impl_.object_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& CommentStmt::_internal_object() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.object_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CommentStmt::object() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CommentStmt.object) return _internal_object(); } inline void CommentStmt::unsafe_arena_set_allocated_object(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.object_); } _impl_.object_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CommentStmt.object) } inline ::pg_query::Node* CommentStmt::release_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.object_; _impl_.object_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CommentStmt::unsafe_arena_release_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CommentStmt.object) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; return temp; } inline ::pg_query::Node* CommentStmt::_internal_mutable_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.object_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.object_; } inline ::pg_query::Node* CommentStmt::mutable_object() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_object(); // @@protoc_insertion_point(field_mutable:pg_query.CommentStmt.object) return _msg; } inline void CommentStmt::set_allocated_object(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.object_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.object_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CommentStmt.object) } // string comment = 3 [json_name = "comment"]; inline void CommentStmt::clear_comment() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.comment_.ClearToEmpty(); } inline const std::string& CommentStmt::comment() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CommentStmt.comment) return _internal_comment(); } template inline PROTOBUF_ALWAYS_INLINE void CommentStmt::set_comment(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.comment_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CommentStmt.comment) } inline std::string* CommentStmt::mutable_comment() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_comment(); // @@protoc_insertion_point(field_mutable:pg_query.CommentStmt.comment) return _s; } inline const std::string& CommentStmt::_internal_comment() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.comment_.Get(); } inline void CommentStmt::_internal_set_comment(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.comment_.Set(value, GetArena()); } inline std::string* CommentStmt::_internal_mutable_comment() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.comment_.Mutable( GetArena()); } inline std::string* CommentStmt::release_comment() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CommentStmt.comment) return _impl_.comment_.Release(); } inline void CommentStmt::set_allocated_comment(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.comment_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.comment_.IsDefault()) { _impl_.comment_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CommentStmt.comment) } // ------------------------------------------------------------------- // SecLabelStmt // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; inline void SecLabelStmt::clear_objtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.objtype_ = 0; } inline ::pg_query::ObjectType SecLabelStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.objtype) return _internal_objtype(); } inline void SecLabelStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.SecLabelStmt.objtype) } inline ::pg_query::ObjectType SecLabelStmt::_internal_objtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.objtype_); } inline void SecLabelStmt::_internal_set_objtype(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.objtype_ = value; } // .pg_query.Node object = 2 [json_name = "object"]; inline bool SecLabelStmt::has_object() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.object_ != nullptr); return value; } inline void SecLabelStmt::clear_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.object_ != nullptr) _impl_.object_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& SecLabelStmt::_internal_object() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.object_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SecLabelStmt::object() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.object) return _internal_object(); } inline void SecLabelStmt::unsafe_arena_set_allocated_object(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.object_); } _impl_.object_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SecLabelStmt.object) } inline ::pg_query::Node* SecLabelStmt::release_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.object_; _impl_.object_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* SecLabelStmt::unsafe_arena_release_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SecLabelStmt.object) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; return temp; } inline ::pg_query::Node* SecLabelStmt::_internal_mutable_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.object_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.object_; } inline ::pg_query::Node* SecLabelStmt::mutable_object() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_object(); // @@protoc_insertion_point(field_mutable:pg_query.SecLabelStmt.object) return _msg; } inline void SecLabelStmt::set_allocated_object(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.object_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.object_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.SecLabelStmt.object) } // string provider = 3 [json_name = "provider"]; inline void SecLabelStmt::clear_provider() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.provider_.ClearToEmpty(); } inline const std::string& SecLabelStmt::provider() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.provider) return _internal_provider(); } template inline PROTOBUF_ALWAYS_INLINE void SecLabelStmt::set_provider(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.provider_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.SecLabelStmt.provider) } inline std::string* SecLabelStmt::mutable_provider() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_provider(); // @@protoc_insertion_point(field_mutable:pg_query.SecLabelStmt.provider) return _s; } inline const std::string& SecLabelStmt::_internal_provider() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.provider_.Get(); } inline void SecLabelStmt::_internal_set_provider(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.provider_.Set(value, GetArena()); } inline std::string* SecLabelStmt::_internal_mutable_provider() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.provider_.Mutable( GetArena()); } inline std::string* SecLabelStmt::release_provider() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SecLabelStmt.provider) return _impl_.provider_.Release(); } inline void SecLabelStmt::set_allocated_provider(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.provider_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.provider_.IsDefault()) { _impl_.provider_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.SecLabelStmt.provider) } // string label = 4 [json_name = "label"]; inline void SecLabelStmt::clear_label() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.label_.ClearToEmpty(); } inline const std::string& SecLabelStmt::label() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.label) return _internal_label(); } template inline PROTOBUF_ALWAYS_INLINE void SecLabelStmt::set_label(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.label_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.SecLabelStmt.label) } inline std::string* SecLabelStmt::mutable_label() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_label(); // @@protoc_insertion_point(field_mutable:pg_query.SecLabelStmt.label) return _s; } inline const std::string& SecLabelStmt::_internal_label() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.label_.Get(); } inline void SecLabelStmt::_internal_set_label(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.label_.Set(value, GetArena()); } inline std::string* SecLabelStmt::_internal_mutable_label() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.label_.Mutable( GetArena()); } inline std::string* SecLabelStmt::release_label() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.SecLabelStmt.label) return _impl_.label_.Release(); } inline void SecLabelStmt::set_allocated_label(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.label_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.label_.IsDefault()) { _impl_.label_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.SecLabelStmt.label) } // ------------------------------------------------------------------- // DeclareCursorStmt // string portalname = 1 [json_name = "portalname"]; inline void DeclareCursorStmt::clear_portalname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.portalname_.ClearToEmpty(); } inline const std::string& DeclareCursorStmt::portalname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DeclareCursorStmt.portalname) return _internal_portalname(); } template inline PROTOBUF_ALWAYS_INLINE void DeclareCursorStmt::set_portalname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.portalname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.DeclareCursorStmt.portalname) } inline std::string* DeclareCursorStmt::mutable_portalname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_portalname(); // @@protoc_insertion_point(field_mutable:pg_query.DeclareCursorStmt.portalname) return _s; } inline const std::string& DeclareCursorStmt::_internal_portalname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.portalname_.Get(); } inline void DeclareCursorStmt::_internal_set_portalname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.portalname_.Set(value, GetArena()); } inline std::string* DeclareCursorStmt::_internal_mutable_portalname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.portalname_.Mutable( GetArena()); } inline std::string* DeclareCursorStmt::release_portalname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DeclareCursorStmt.portalname) return _impl_.portalname_.Release(); } inline void DeclareCursorStmt::set_allocated_portalname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.portalname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.portalname_.IsDefault()) { _impl_.portalname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.DeclareCursorStmt.portalname) } // int32 options = 2 [json_name = "options"]; inline void DeclareCursorStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_ = 0; } inline ::int32_t DeclareCursorStmt::options() const { // @@protoc_insertion_point(field_get:pg_query.DeclareCursorStmt.options) return _internal_options(); } inline void DeclareCursorStmt::set_options(::int32_t value) { _internal_set_options(value); // @@protoc_insertion_point(field_set:pg_query.DeclareCursorStmt.options) } inline ::int32_t DeclareCursorStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline void DeclareCursorStmt::_internal_set_options(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.options_ = value; } // .pg_query.Node query = 3 [json_name = "query"]; inline bool DeclareCursorStmt::has_query() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.query_ != nullptr); return value; } inline void DeclareCursorStmt::clear_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.query_ != nullptr) _impl_.query_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& DeclareCursorStmt::_internal_query() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.query_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& DeclareCursorStmt::query() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DeclareCursorStmt.query) return _internal_query(); } inline void DeclareCursorStmt::unsafe_arena_set_allocated_query(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.query_); } _impl_.query_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeclareCursorStmt.query) } inline ::pg_query::Node* DeclareCursorStmt::release_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.query_; _impl_.query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* DeclareCursorStmt::unsafe_arena_release_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DeclareCursorStmt.query) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; return temp; } inline ::pg_query::Node* DeclareCursorStmt::_internal_mutable_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.query_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.query_; } inline ::pg_query::Node* DeclareCursorStmt::mutable_query() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_query(); // @@protoc_insertion_point(field_mutable:pg_query.DeclareCursorStmt.query) return _msg; } inline void DeclareCursorStmt::set_allocated_query(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.query_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.query_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.DeclareCursorStmt.query) } // ------------------------------------------------------------------- // ClosePortalStmt // string portalname = 1 [json_name = "portalname"]; inline void ClosePortalStmt::clear_portalname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.portalname_.ClearToEmpty(); } inline const std::string& ClosePortalStmt::portalname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ClosePortalStmt.portalname) return _internal_portalname(); } template inline PROTOBUF_ALWAYS_INLINE void ClosePortalStmt::set_portalname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.portalname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ClosePortalStmt.portalname) } inline std::string* ClosePortalStmt::mutable_portalname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_portalname(); // @@protoc_insertion_point(field_mutable:pg_query.ClosePortalStmt.portalname) return _s; } inline const std::string& ClosePortalStmt::_internal_portalname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.portalname_.Get(); } inline void ClosePortalStmt::_internal_set_portalname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.portalname_.Set(value, GetArena()); } inline std::string* ClosePortalStmt::_internal_mutable_portalname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.portalname_.Mutable( GetArena()); } inline std::string* ClosePortalStmt::release_portalname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ClosePortalStmt.portalname) return _impl_.portalname_.Release(); } inline void ClosePortalStmt::set_allocated_portalname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.portalname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.portalname_.IsDefault()) { _impl_.portalname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ClosePortalStmt.portalname) } // ------------------------------------------------------------------- // FetchStmt // .pg_query.FetchDirection direction = 1 [json_name = "direction"]; inline void FetchStmt::clear_direction() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.direction_ = 0; } inline ::pg_query::FetchDirection FetchStmt::direction() const { // @@protoc_insertion_point(field_get:pg_query.FetchStmt.direction) return _internal_direction(); } inline void FetchStmt::set_direction(::pg_query::FetchDirection value) { _internal_set_direction(value); // @@protoc_insertion_point(field_set:pg_query.FetchStmt.direction) } inline ::pg_query::FetchDirection FetchStmt::_internal_direction() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::FetchDirection>(_impl_.direction_); } inline void FetchStmt::_internal_set_direction(::pg_query::FetchDirection value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.direction_ = value; } // int64 how_many = 2 [json_name = "howMany"]; inline void FetchStmt::clear_how_many() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.how_many_ = ::int64_t{0}; } inline ::int64_t FetchStmt::how_many() const { // @@protoc_insertion_point(field_get:pg_query.FetchStmt.how_many) return _internal_how_many(); } inline void FetchStmt::set_how_many(::int64_t value) { _internal_set_how_many(value); // @@protoc_insertion_point(field_set:pg_query.FetchStmt.how_many) } inline ::int64_t FetchStmt::_internal_how_many() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.how_many_; } inline void FetchStmt::_internal_set_how_many(::int64_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.how_many_ = value; } // string portalname = 3 [json_name = "portalname"]; inline void FetchStmt::clear_portalname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.portalname_.ClearToEmpty(); } inline const std::string& FetchStmt::portalname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FetchStmt.portalname) return _internal_portalname(); } template inline PROTOBUF_ALWAYS_INLINE void FetchStmt::set_portalname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.portalname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.FetchStmt.portalname) } inline std::string* FetchStmt::mutable_portalname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_portalname(); // @@protoc_insertion_point(field_mutable:pg_query.FetchStmt.portalname) return _s; } inline const std::string& FetchStmt::_internal_portalname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.portalname_.Get(); } inline void FetchStmt::_internal_set_portalname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.portalname_.Set(value, GetArena()); } inline std::string* FetchStmt::_internal_mutable_portalname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.portalname_.Mutable( GetArena()); } inline std::string* FetchStmt::release_portalname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.FetchStmt.portalname) return _impl_.portalname_.Release(); } inline void FetchStmt::set_allocated_portalname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.portalname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.portalname_.IsDefault()) { _impl_.portalname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.FetchStmt.portalname) } // bool ismove = 4 [json_name = "ismove"]; inline void FetchStmt::clear_ismove() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.ismove_ = false; } inline bool FetchStmt::ismove() const { // @@protoc_insertion_point(field_get:pg_query.FetchStmt.ismove) return _internal_ismove(); } inline void FetchStmt::set_ismove(bool value) { _internal_set_ismove(value); // @@protoc_insertion_point(field_set:pg_query.FetchStmt.ismove) } inline bool FetchStmt::_internal_ismove() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.ismove_; } inline void FetchStmt::_internal_set_ismove(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.ismove_ = value; } // ------------------------------------------------------------------- // IndexStmt // string idxname = 1 [json_name = "idxname"]; inline void IndexStmt::clear_idxname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.idxname_.ClearToEmpty(); } inline const std::string& IndexStmt::idxname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.idxname) return _internal_idxname(); } template inline PROTOBUF_ALWAYS_INLINE void IndexStmt::set_idxname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.idxname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.idxname) } inline std::string* IndexStmt::mutable_idxname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_idxname(); // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.idxname) return _s; } inline const std::string& IndexStmt::_internal_idxname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.idxname_.Get(); } inline void IndexStmt::_internal_set_idxname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.idxname_.Set(value, GetArena()); } inline std::string* IndexStmt::_internal_mutable_idxname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.idxname_.Mutable( GetArena()); } inline std::string* IndexStmt::release_idxname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.IndexStmt.idxname) return _impl_.idxname_.Release(); } inline void IndexStmt::set_allocated_idxname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.idxname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.idxname_.IsDefault()) { _impl_.idxname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.idxname) } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool IndexStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void IndexStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& IndexStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& IndexStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.relation) return _internal_relation(); } inline void IndexStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IndexStmt.relation) } inline ::pg_query::RangeVar* IndexStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* IndexStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.IndexStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* IndexStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* IndexStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.relation) return _msg; } inline void IndexStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.relation) } // string access_method = 3 [json_name = "accessMethod"]; inline void IndexStmt::clear_access_method() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.access_method_.ClearToEmpty(); } inline const std::string& IndexStmt::access_method() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.access_method) return _internal_access_method(); } template inline PROTOBUF_ALWAYS_INLINE void IndexStmt::set_access_method(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.access_method_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.access_method) } inline std::string* IndexStmt::mutable_access_method() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_access_method(); // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.access_method) return _s; } inline const std::string& IndexStmt::_internal_access_method() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.access_method_.Get(); } inline void IndexStmt::_internal_set_access_method(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.access_method_.Set(value, GetArena()); } inline std::string* IndexStmt::_internal_mutable_access_method() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.access_method_.Mutable( GetArena()); } inline std::string* IndexStmt::release_access_method() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.IndexStmt.access_method) return _impl_.access_method_.Release(); } inline void IndexStmt::set_allocated_access_method(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.access_method_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.access_method_.IsDefault()) { _impl_.access_method_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.access_method) } // string table_space = 4 [json_name = "tableSpace"]; inline void IndexStmt::clear_table_space() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.table_space_.ClearToEmpty(); } inline const std::string& IndexStmt::table_space() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.table_space) return _internal_table_space(); } template inline PROTOBUF_ALWAYS_INLINE void IndexStmt::set_table_space(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.table_space_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.table_space) } inline std::string* IndexStmt::mutable_table_space() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_table_space(); // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.table_space) return _s; } inline const std::string& IndexStmt::_internal_table_space() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.table_space_.Get(); } inline void IndexStmt::_internal_set_table_space(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.table_space_.Set(value, GetArena()); } inline std::string* IndexStmt::_internal_mutable_table_space() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.table_space_.Mutable( GetArena()); } inline std::string* IndexStmt::release_table_space() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.IndexStmt.table_space) return _impl_.table_space_.Release(); } inline void IndexStmt::set_allocated_table_space(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.table_space_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.table_space_.IsDefault()) { _impl_.table_space_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_index_params().size(); } inline int IndexStmt::index_params_size() const { return _internal_index_params_size(); } inline void IndexStmt::clear_index_params() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.index_params_.Clear(); } inline ::pg_query::Node* IndexStmt::mutable_index_params(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.index_params) return _internal_mutable_index_params()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IndexStmt::mutable_index_params() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.index_params) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_index_params(); } inline const ::pg_query::Node& IndexStmt::index_params(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.index_params) return _internal_index_params().Get(index); } inline ::pg_query::Node* IndexStmt::add_index_params() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_index_params()->Add(); // @@protoc_insertion_point(field_add:pg_query.IndexStmt.index_params) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IndexStmt::index_params() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.IndexStmt.index_params) return _internal_index_params(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IndexStmt::_internal_index_params() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.index_params_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IndexStmt::_internal_mutable_index_params() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.index_params_; } // repeated .pg_query.Node index_including_params = 6 [json_name = "indexIncludingParams"]; inline int IndexStmt::_internal_index_including_params_size() const { return _internal_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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.index_including_params_.Clear(); } inline ::pg_query::Node* IndexStmt::mutable_index_including_params(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.index_including_params) return _internal_mutable_index_including_params()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IndexStmt::mutable_index_including_params() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.index_including_params) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_index_including_params(); } inline const ::pg_query::Node& IndexStmt::index_including_params(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.index_including_params) return _internal_index_including_params().Get(index); } inline ::pg_query::Node* IndexStmt::add_index_including_params() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_index_including_params()->Add(); // @@protoc_insertion_point(field_add:pg_query.IndexStmt.index_including_params) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IndexStmt::index_including_params() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.IndexStmt.index_including_params) return _internal_index_including_params(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IndexStmt::_internal_index_including_params() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.index_including_params_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IndexStmt::_internal_mutable_index_including_params() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.index_including_params_; } // repeated .pg_query.Node options = 7 [json_name = "options"]; inline int IndexStmt::_internal_options_size() const { return _internal_options().size(); } inline int IndexStmt::options_size() const { return _internal_options_size(); } inline void IndexStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* IndexStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IndexStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& IndexStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* IndexStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.IndexStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IndexStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.IndexStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IndexStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IndexStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; inline bool IndexStmt::has_where_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.where_clause_ != nullptr); return value; } inline void IndexStmt::clear_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.where_clause_ != nullptr) _impl_.where_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& IndexStmt::_internal_where_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.where_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& IndexStmt::where_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IndexStmt.where_clause) } inline ::pg_query::Node* IndexStmt::release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* IndexStmt::unsafe_arena_release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.IndexStmt.where_clause) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* IndexStmt::_internal_mutable_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.where_clause_; } inline ::pg_query::Node* IndexStmt::mutable_where_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_where_clause(); // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.where_clause) return _msg; } inline void IndexStmt::set_allocated_where_clause(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.where_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.exclude_op_names_.Clear(); } inline ::pg_query::Node* IndexStmt::mutable_exclude_op_names(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.exclude_op_names) return _internal_mutable_exclude_op_names()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IndexStmt::mutable_exclude_op_names() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.exclude_op_names) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_exclude_op_names(); } inline const ::pg_query::Node& IndexStmt::exclude_op_names(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.exclude_op_names) return _internal_exclude_op_names().Get(index); } inline ::pg_query::Node* IndexStmt::add_exclude_op_names() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_exclude_op_names()->Add(); // @@protoc_insertion_point(field_add:pg_query.IndexStmt.exclude_op_names) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IndexStmt::exclude_op_names() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.IndexStmt.exclude_op_names) return _internal_exclude_op_names(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& IndexStmt::_internal_exclude_op_names() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.exclude_op_names_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* IndexStmt::_internal_mutable_exclude_op_names() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.exclude_op_names_; } // string idxcomment = 10 [json_name = "idxcomment"]; inline void IndexStmt::clear_idxcomment() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.idxcomment_.ClearToEmpty(); } inline const std::string& IndexStmt::idxcomment() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.idxcomment) return _internal_idxcomment(); } template inline PROTOBUF_ALWAYS_INLINE void IndexStmt::set_idxcomment(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.idxcomment_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.idxcomment) } inline std::string* IndexStmt::mutable_idxcomment() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_idxcomment(); // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.idxcomment) return _s; } inline const std::string& IndexStmt::_internal_idxcomment() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.idxcomment_.Get(); } inline void IndexStmt::_internal_set_idxcomment(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.idxcomment_.Set(value, GetArena()); } inline std::string* IndexStmt::_internal_mutable_idxcomment() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.idxcomment_.Mutable( GetArena()); } inline std::string* IndexStmt::release_idxcomment() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.IndexStmt.idxcomment) return _impl_.idxcomment_.Release(); } inline void IndexStmt::set_allocated_idxcomment(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.idxcomment_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.idxcomment_.IsDefault()) { _impl_.idxcomment_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.idxcomment) } // uint32 index_oid = 11 [json_name = "indexOid"]; inline void IndexStmt::clear_index_oid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.index_oid_ = 0u; } inline ::uint32_t IndexStmt::index_oid() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.index_oid) return _internal_index_oid(); } inline void IndexStmt::set_index_oid(::uint32_t value) { _internal_set_index_oid(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.index_oid) } inline ::uint32_t IndexStmt::_internal_index_oid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.index_oid_; } inline void IndexStmt::_internal_set_index_oid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.index_oid_ = value; } // uint32 old_number = 12 [json_name = "oldNumber"]; inline void IndexStmt::clear_old_number() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.old_number_ = 0u; } inline ::uint32_t IndexStmt::old_number() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.old_number) return _internal_old_number(); } inline void IndexStmt::set_old_number(::uint32_t value) { _internal_set_old_number(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.old_number) } inline ::uint32_t IndexStmt::_internal_old_number() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.old_number_; } inline void IndexStmt::_internal_set_old_number(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.old_number_ = value; } // uint32 old_create_subid = 13 [json_name = "oldCreateSubid"]; inline void IndexStmt::clear_old_create_subid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.old_create_subid_ = 0u; } inline ::uint32_t IndexStmt::old_create_subid() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.old_create_subid) return _internal_old_create_subid(); } inline void IndexStmt::set_old_create_subid(::uint32_t value) { _internal_set_old_create_subid(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.old_create_subid) } inline ::uint32_t IndexStmt::_internal_old_create_subid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.old_create_subid_; } inline void IndexStmt::_internal_set_old_create_subid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.old_create_subid_ = value; } // uint32 old_first_relfilelocator_subid = 14 [json_name = "oldFirstRelfilelocatorSubid"]; inline void IndexStmt::clear_old_first_relfilelocator_subid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.old_first_relfilelocator_subid_ = 0u; } inline ::uint32_t IndexStmt::old_first_relfilelocator_subid() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.old_first_relfilelocator_subid) return _internal_old_first_relfilelocator_subid(); } inline void IndexStmt::set_old_first_relfilelocator_subid(::uint32_t value) { _internal_set_old_first_relfilelocator_subid(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.old_first_relfilelocator_subid) } inline ::uint32_t IndexStmt::_internal_old_first_relfilelocator_subid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.old_first_relfilelocator_subid_; } inline void IndexStmt::_internal_set_old_first_relfilelocator_subid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.old_first_relfilelocator_subid_ = value; } // bool unique = 15 [json_name = "unique"]; inline void IndexStmt::clear_unique() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.unique_ = false; } inline bool IndexStmt::unique() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.unique) return _internal_unique(); } inline void IndexStmt::set_unique(bool value) { _internal_set_unique(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.unique) } inline bool IndexStmt::_internal_unique() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.unique_; } inline void IndexStmt::_internal_set_unique(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.unique_ = value; } // bool nulls_not_distinct = 16 [json_name = "nulls_not_distinct"]; inline void IndexStmt::clear_nulls_not_distinct() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.nulls_not_distinct_ = false; } inline bool IndexStmt::nulls_not_distinct() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.nulls_not_distinct) return _internal_nulls_not_distinct(); } inline void IndexStmt::set_nulls_not_distinct(bool value) { _internal_set_nulls_not_distinct(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.nulls_not_distinct) } inline bool IndexStmt::_internal_nulls_not_distinct() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.nulls_not_distinct_; } inline void IndexStmt::_internal_set_nulls_not_distinct(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.nulls_not_distinct_ = value; } // bool primary = 17 [json_name = "primary"]; inline void IndexStmt::clear_primary() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.primary_ = false; } inline bool IndexStmt::primary() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.primary) return _internal_primary(); } inline void IndexStmt::set_primary(bool value) { _internal_set_primary(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.primary) } inline bool IndexStmt::_internal_primary() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.primary_; } inline void IndexStmt::_internal_set_primary(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.primary_ = value; } // bool isconstraint = 18 [json_name = "isconstraint"]; inline void IndexStmt::clear_isconstraint() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.isconstraint_ = false; } inline bool IndexStmt::isconstraint() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.isconstraint) return _internal_isconstraint(); } inline void IndexStmt::set_isconstraint(bool value) { _internal_set_isconstraint(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.isconstraint) } inline bool IndexStmt::_internal_isconstraint() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.isconstraint_; } inline void IndexStmt::_internal_set_isconstraint(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.isconstraint_ = value; } // bool deferrable = 19 [json_name = "deferrable"]; inline void IndexStmt::clear_deferrable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.deferrable_ = false; } inline bool IndexStmt::deferrable() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.deferrable) return _internal_deferrable(); } inline void IndexStmt::set_deferrable(bool value) { _internal_set_deferrable(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.deferrable) } inline bool IndexStmt::_internal_deferrable() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.deferrable_; } inline void IndexStmt::_internal_set_deferrable(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.deferrable_ = value; } // bool initdeferred = 20 [json_name = "initdeferred"]; inline void IndexStmt::clear_initdeferred() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.initdeferred_ = false; } inline bool IndexStmt::initdeferred() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.initdeferred) return _internal_initdeferred(); } inline void IndexStmt::set_initdeferred(bool value) { _internal_set_initdeferred(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.initdeferred) } inline bool IndexStmt::_internal_initdeferred() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.initdeferred_; } inline void IndexStmt::_internal_set_initdeferred(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.initdeferred_ = value; } // bool transformed = 21 [json_name = "transformed"]; inline void IndexStmt::clear_transformed() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.transformed_ = false; } inline bool IndexStmt::transformed() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.transformed) return _internal_transformed(); } inline void IndexStmt::set_transformed(bool value) { _internal_set_transformed(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.transformed) } inline bool IndexStmt::_internal_transformed() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.transformed_; } inline void IndexStmt::_internal_set_transformed(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.transformed_ = value; } // bool concurrent = 22 [json_name = "concurrent"]; inline void IndexStmt::clear_concurrent() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.concurrent_ = false; } inline bool IndexStmt::concurrent() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.concurrent) return _internal_concurrent(); } inline void IndexStmt::set_concurrent(bool value) { _internal_set_concurrent(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.concurrent) } inline bool IndexStmt::_internal_concurrent() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.concurrent_; } inline void IndexStmt::_internal_set_concurrent(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.concurrent_ = value; } // bool if_not_exists = 23 [json_name = "if_not_exists"]; inline void IndexStmt::clear_if_not_exists() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.if_not_exists_ = false; } 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::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.if_not_exists) } inline bool IndexStmt::_internal_if_not_exists() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.if_not_exists_; } inline void IndexStmt::_internal_set_if_not_exists(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.if_not_exists_ = value; } // bool reset_default_tblspc = 24 [json_name = "reset_default_tblspc"]; inline void IndexStmt::clear_reset_default_tblspc() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.reset_default_tblspc_ = false; } 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::set_reset_default_tblspc(bool value) { _internal_set_reset_default_tblspc(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.reset_default_tblspc) } inline bool IndexStmt::_internal_reset_default_tblspc() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.reset_default_tblspc_; } inline void IndexStmt::_internal_set_reset_default_tblspc(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.reset_default_tblspc_ = value; } // ------------------------------------------------------------------- // CreateStatsStmt // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; inline int CreateStatsStmt::_internal_defnames_size() const { return _internal_defnames().size(); } inline int CreateStatsStmt::defnames_size() const { return _internal_defnames_size(); } inline void CreateStatsStmt::clear_defnames() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.defnames_.Clear(); } inline ::pg_query::Node* CreateStatsStmt::mutable_defnames(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.defnames) return _internal_mutable_defnames()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStatsStmt::mutable_defnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.defnames) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_defnames(); } inline const ::pg_query::Node& CreateStatsStmt::defnames(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.defnames) return _internal_defnames().Get(index); } inline ::pg_query::Node* CreateStatsStmt::add_defnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_defnames()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.defnames) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStatsStmt::defnames() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.defnames) return _internal_defnames(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStatsStmt::_internal_defnames() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.defnames_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStatsStmt::_internal_mutable_defnames() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.defnames_; } // repeated .pg_query.Node stat_types = 2 [json_name = "stat_types"]; inline int CreateStatsStmt::_internal_stat_types_size() const { return _internal_stat_types().size(); } inline int CreateStatsStmt::stat_types_size() const { return _internal_stat_types_size(); } inline void CreateStatsStmt::clear_stat_types() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.stat_types_.Clear(); } inline ::pg_query::Node* CreateStatsStmt::mutable_stat_types(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.stat_types) return _internal_mutable_stat_types()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStatsStmt::mutable_stat_types() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.stat_types) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_stat_types(); } inline const ::pg_query::Node& CreateStatsStmt::stat_types(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.stat_types) return _internal_stat_types().Get(index); } inline ::pg_query::Node* CreateStatsStmt::add_stat_types() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_stat_types()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.stat_types) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStatsStmt::stat_types() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.stat_types) return _internal_stat_types(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStatsStmt::_internal_stat_types() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.stat_types_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStatsStmt::_internal_mutable_stat_types() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.stat_types_; } // repeated .pg_query.Node exprs = 3 [json_name = "exprs"]; inline int CreateStatsStmt::_internal_exprs_size() const { return _internal_exprs().size(); } inline int CreateStatsStmt::exprs_size() const { return _internal_exprs_size(); } inline void CreateStatsStmt::clear_exprs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.exprs_.Clear(); } inline ::pg_query::Node* CreateStatsStmt::mutable_exprs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.exprs) return _internal_mutable_exprs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStatsStmt::mutable_exprs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.exprs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_exprs(); } inline const ::pg_query::Node& CreateStatsStmt::exprs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.exprs) return _internal_exprs().Get(index); } inline ::pg_query::Node* CreateStatsStmt::add_exprs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_exprs()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.exprs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStatsStmt::exprs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.exprs) return _internal_exprs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStatsStmt::_internal_exprs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.exprs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStatsStmt::_internal_mutable_exprs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.exprs_; } // repeated .pg_query.Node relations = 4 [json_name = "relations"]; inline int CreateStatsStmt::_internal_relations_size() const { return _internal_relations().size(); } inline int CreateStatsStmt::relations_size() const { return _internal_relations_size(); } inline void CreateStatsStmt::clear_relations() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relations_.Clear(); } inline ::pg_query::Node* CreateStatsStmt::mutable_relations(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.relations) return _internal_mutable_relations()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStatsStmt::mutable_relations() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.relations) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_relations(); } inline const ::pg_query::Node& CreateStatsStmt::relations(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.relations) return _internal_relations().Get(index); } inline ::pg_query::Node* CreateStatsStmt::add_relations() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_relations()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.relations) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStatsStmt::relations() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.relations) return _internal_relations(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateStatsStmt::_internal_relations() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.relations_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateStatsStmt::_internal_mutable_relations() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.relations_; } // string stxcomment = 5 [json_name = "stxcomment"]; inline void CreateStatsStmt::clear_stxcomment() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.stxcomment_.ClearToEmpty(); } inline const std::string& CreateStatsStmt::stxcomment() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.stxcomment) return _internal_stxcomment(); } template inline PROTOBUF_ALWAYS_INLINE void CreateStatsStmt::set_stxcomment(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.stxcomment_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateStatsStmt.stxcomment) } inline std::string* CreateStatsStmt::mutable_stxcomment() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_stxcomment(); // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.stxcomment) return _s; } inline const std::string& CreateStatsStmt::_internal_stxcomment() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.stxcomment_.Get(); } inline void CreateStatsStmt::_internal_set_stxcomment(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.stxcomment_.Set(value, GetArena()); } inline std::string* CreateStatsStmt::_internal_mutable_stxcomment() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.stxcomment_.Mutable( GetArena()); } inline std::string* CreateStatsStmt::release_stxcomment() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateStatsStmt.stxcomment) return _impl_.stxcomment_.Release(); } inline void CreateStatsStmt::set_allocated_stxcomment(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.stxcomment_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.stxcomment_.IsDefault()) { _impl_.stxcomment_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStatsStmt.stxcomment) } // bool transformed = 6 [json_name = "transformed"]; inline void CreateStatsStmt::clear_transformed() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.transformed_ = false; } inline bool CreateStatsStmt::transformed() const { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.transformed) return _internal_transformed(); } inline void CreateStatsStmt::set_transformed(bool value) { _internal_set_transformed(value); // @@protoc_insertion_point(field_set:pg_query.CreateStatsStmt.transformed) } inline bool CreateStatsStmt::_internal_transformed() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.transformed_; } inline void CreateStatsStmt::_internal_set_transformed(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.transformed_ = value; } // bool if_not_exists = 7 [json_name = "if_not_exists"]; inline void CreateStatsStmt::clear_if_not_exists() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.if_not_exists_ = false; } 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::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateStatsStmt.if_not_exists) } inline bool CreateStatsStmt::_internal_if_not_exists() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.if_not_exists_; } inline void CreateStatsStmt::_internal_set_if_not_exists(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.if_not_exists_ = value; } // ------------------------------------------------------------------- // StatsElem // string name = 1 [json_name = "name"]; inline void StatsElem::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& StatsElem::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.StatsElem.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void StatsElem::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.StatsElem.name) } inline std::string* StatsElem::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.StatsElem.name) return _s; } inline const std::string& StatsElem::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void StatsElem::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* StatsElem::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* StatsElem::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.StatsElem.name) return _impl_.name_.Release(); } inline void StatsElem::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.StatsElem.name) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool StatsElem::has_expr() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.expr_ != nullptr); return value; } inline void StatsElem::clear_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.expr_ != nullptr) _impl_.expr_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& StatsElem::_internal_expr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.expr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& StatsElem::expr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.StatsElem.expr) return _internal_expr(); } inline void StatsElem::unsafe_arena_set_allocated_expr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expr_); } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.StatsElem.expr) } inline ::pg_query::Node* StatsElem::release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.expr_; _impl_.expr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* StatsElem::unsafe_arena_release_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.StatsElem.expr) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.expr_; _impl_.expr_ = nullptr; return temp; } inline ::pg_query::Node* StatsElem::_internal_mutable_expr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.expr_; } inline ::pg_query::Node* StatsElem::mutable_expr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_expr(); // @@protoc_insertion_point(field_mutable:pg_query.StatsElem.expr) return _msg; } inline void StatsElem::set_allocated_expr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.expr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.expr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.StatsElem.expr) } // ------------------------------------------------------------------- // AlterStatsStmt // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; inline int AlterStatsStmt::_internal_defnames_size() const { return _internal_defnames().size(); } inline int AlterStatsStmt::defnames_size() const { return _internal_defnames_size(); } inline void AlterStatsStmt::clear_defnames() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.defnames_.Clear(); } inline ::pg_query::Node* AlterStatsStmt::mutable_defnames(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterStatsStmt.defnames) return _internal_mutable_defnames()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterStatsStmt::mutable_defnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterStatsStmt.defnames) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_defnames(); } inline const ::pg_query::Node& AlterStatsStmt::defnames(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterStatsStmt.defnames) return _internal_defnames().Get(index); } inline ::pg_query::Node* AlterStatsStmt::add_defnames() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_defnames()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterStatsStmt.defnames) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterStatsStmt::defnames() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterStatsStmt.defnames) return _internal_defnames(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterStatsStmt::_internal_defnames() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.defnames_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterStatsStmt::_internal_mutable_defnames() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.defnames_; } // .pg_query.Node stxstattarget = 2 [json_name = "stxstattarget"]; inline bool AlterStatsStmt::has_stxstattarget() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.stxstattarget_ != nullptr); return value; } inline void AlterStatsStmt::clear_stxstattarget() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.stxstattarget_ != nullptr) _impl_.stxstattarget_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& AlterStatsStmt::_internal_stxstattarget() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.stxstattarget_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterStatsStmt::stxstattarget() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterStatsStmt.stxstattarget) return _internal_stxstattarget(); } inline void AlterStatsStmt::unsafe_arena_set_allocated_stxstattarget(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.stxstattarget_); } _impl_.stxstattarget_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterStatsStmt.stxstattarget) } inline ::pg_query::Node* AlterStatsStmt::release_stxstattarget() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.stxstattarget_; _impl_.stxstattarget_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* AlterStatsStmt::unsafe_arena_release_stxstattarget() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterStatsStmt.stxstattarget) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.stxstattarget_; _impl_.stxstattarget_ = nullptr; return temp; } inline ::pg_query::Node* AlterStatsStmt::_internal_mutable_stxstattarget() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.stxstattarget_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.stxstattarget_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.stxstattarget_; } inline ::pg_query::Node* AlterStatsStmt::mutable_stxstattarget() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_stxstattarget(); // @@protoc_insertion_point(field_mutable:pg_query.AlterStatsStmt.stxstattarget) return _msg; } inline void AlterStatsStmt::set_allocated_stxstattarget(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.stxstattarget_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.stxstattarget_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterStatsStmt.stxstattarget) } // bool missing_ok = 3 [json_name = "missing_ok"]; inline void AlterStatsStmt::clear_missing_ok() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.missing_ok_ = false; } inline bool AlterStatsStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterStatsStmt.missing_ok) return _internal_missing_ok(); } inline void AlterStatsStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterStatsStmt.missing_ok) } inline bool AlterStatsStmt::_internal_missing_ok() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.missing_ok_; } inline void AlterStatsStmt::_internal_set_missing_ok(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.missing_ok_ = value; } // ------------------------------------------------------------------- // CreateFunctionStmt // bool is_procedure = 1 [json_name = "is_procedure"]; inline void CreateFunctionStmt::clear_is_procedure() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_procedure_ = false; } inline bool CreateFunctionStmt::is_procedure() const { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.is_procedure) return _internal_is_procedure(); } inline void CreateFunctionStmt::set_is_procedure(bool value) { _internal_set_is_procedure(value); // @@protoc_insertion_point(field_set:pg_query.CreateFunctionStmt.is_procedure) } inline bool CreateFunctionStmt::_internal_is_procedure() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_procedure_; } inline void CreateFunctionStmt::_internal_set_is_procedure(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_procedure_ = value; } // bool replace = 2 [json_name = "replace"]; inline void CreateFunctionStmt::clear_replace() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.replace_ = false; } inline bool CreateFunctionStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.replace) return _internal_replace(); } inline void CreateFunctionStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.CreateFunctionStmt.replace) } inline bool CreateFunctionStmt::_internal_replace() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.replace_; } inline void CreateFunctionStmt::_internal_set_replace(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.replace_ = value; } // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; inline int CreateFunctionStmt::_internal_funcname_size() const { return _internal_funcname().size(); } inline int CreateFunctionStmt::funcname_size() const { return _internal_funcname_size(); } inline void CreateFunctionStmt::clear_funcname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.funcname_.Clear(); } inline ::pg_query::Node* CreateFunctionStmt::mutable_funcname(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.funcname) return _internal_mutable_funcname()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateFunctionStmt::mutable_funcname() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFunctionStmt.funcname) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_funcname(); } inline const ::pg_query::Node& CreateFunctionStmt::funcname(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.funcname) return _internal_funcname().Get(index); } inline ::pg_query::Node* CreateFunctionStmt::add_funcname() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_funcname()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateFunctionStmt.funcname) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateFunctionStmt::funcname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateFunctionStmt.funcname) return _internal_funcname(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateFunctionStmt::_internal_funcname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.funcname_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateFunctionStmt::_internal_mutable_funcname() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.funcname_; } // repeated .pg_query.Node parameters = 4 [json_name = "parameters"]; inline int CreateFunctionStmt::_internal_parameters_size() const { return _internal_parameters().size(); } inline int CreateFunctionStmt::parameters_size() const { return _internal_parameters_size(); } inline void CreateFunctionStmt::clear_parameters() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.parameters_.Clear(); } inline ::pg_query::Node* CreateFunctionStmt::mutable_parameters(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.parameters) return _internal_mutable_parameters()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateFunctionStmt::mutable_parameters() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFunctionStmt.parameters) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_parameters(); } inline const ::pg_query::Node& CreateFunctionStmt::parameters(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.parameters) return _internal_parameters().Get(index); } inline ::pg_query::Node* CreateFunctionStmt::add_parameters() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_parameters()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateFunctionStmt.parameters) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateFunctionStmt::parameters() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateFunctionStmt.parameters) return _internal_parameters(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateFunctionStmt::_internal_parameters() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.parameters_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateFunctionStmt::_internal_mutable_parameters() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.parameters_; } // .pg_query.TypeName return_type = 5 [json_name = "returnType"]; inline bool CreateFunctionStmt::has_return_type() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.return_type_ != nullptr); return value; } inline void CreateFunctionStmt::clear_return_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.return_type_ != nullptr) _impl_.return_type_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::TypeName& CreateFunctionStmt::_internal_return_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.return_type_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateFunctionStmt::return_type() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.return_type_); } _impl_.return_type_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateFunctionStmt.return_type) } inline ::pg_query::TypeName* CreateFunctionStmt::release_return_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* released = _impl_.return_type_; _impl_.return_type_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* CreateFunctionStmt::unsafe_arena_release_return_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateFunctionStmt.return_type) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* temp = _impl_.return_type_; _impl_.return_type_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateFunctionStmt::_internal_mutable_return_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.return_type_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.return_type_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.return_type_; } inline ::pg_query::TypeName* CreateFunctionStmt::mutable_return_type() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_return_type(); // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.return_type) return _msg; } inline void CreateFunctionStmt::set_allocated_return_type(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.return_type_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.return_type_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@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 _internal_options().size(); } inline int CreateFunctionStmt::options_size() const { return _internal_options_size(); } inline void CreateFunctionStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* CreateFunctionStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateFunctionStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFunctionStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& CreateFunctionStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* CreateFunctionStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateFunctionStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateFunctionStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateFunctionStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateFunctionStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateFunctionStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // .pg_query.Node sql_body = 7 [json_name = "sql_body"]; inline bool CreateFunctionStmt::has_sql_body() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.sql_body_ != nullptr); return value; } inline void CreateFunctionStmt::clear_sql_body() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.sql_body_ != nullptr) _impl_.sql_body_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& CreateFunctionStmt::_internal_sql_body() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.sql_body_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CreateFunctionStmt::sql_body() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.sql_body) return _internal_sql_body(); } inline void CreateFunctionStmt::unsafe_arena_set_allocated_sql_body(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.sql_body_); } _impl_.sql_body_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateFunctionStmt.sql_body) } inline ::pg_query::Node* CreateFunctionStmt::release_sql_body() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.sql_body_; _impl_.sql_body_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CreateFunctionStmt::unsafe_arena_release_sql_body() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateFunctionStmt.sql_body) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.sql_body_; _impl_.sql_body_ = nullptr; return temp; } inline ::pg_query::Node* CreateFunctionStmt::_internal_mutable_sql_body() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.sql_body_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.sql_body_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.sql_body_; } inline ::pg_query::Node* CreateFunctionStmt::mutable_sql_body() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_sql_body(); // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.sql_body) return _msg; } inline void CreateFunctionStmt::set_allocated_sql_body(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.sql_body_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.sql_body_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateFunctionStmt.sql_body) } // ------------------------------------------------------------------- // FunctionParameter // string name = 1 [json_name = "name"]; inline void FunctionParameter::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& FunctionParameter::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void FunctionParameter::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.FunctionParameter.name) } inline std::string* FunctionParameter::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.FunctionParameter.name) return _s; } inline const std::string& FunctionParameter::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void FunctionParameter::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* FunctionParameter::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* FunctionParameter::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.FunctionParameter.name) return _impl_.name_.Release(); } inline void FunctionParameter::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.FunctionParameter.name) } // .pg_query.TypeName arg_type = 2 [json_name = "argType"]; inline bool FunctionParameter::has_arg_type() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.arg_type_ != nullptr); return value; } inline void FunctionParameter::clear_arg_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.arg_type_ != nullptr) _impl_.arg_type_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::TypeName& FunctionParameter::_internal_arg_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.arg_type_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& FunctionParameter::arg_type() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arg_type_); } _impl_.arg_type_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FunctionParameter.arg_type) } inline ::pg_query::TypeName* FunctionParameter::release_arg_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* released = _impl_.arg_type_; _impl_.arg_type_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* FunctionParameter::unsafe_arena_release_arg_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.FunctionParameter.arg_type) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* temp = _impl_.arg_type_; _impl_.arg_type_ = nullptr; return temp; } inline ::pg_query::TypeName* FunctionParameter::_internal_mutable_arg_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.arg_type_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.arg_type_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.arg_type_; } inline ::pg_query::TypeName* FunctionParameter::mutable_arg_type() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_arg_type(); // @@protoc_insertion_point(field_mutable:pg_query.FunctionParameter.arg_type) return _msg; } inline void FunctionParameter::set_allocated_arg_type(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.arg_type_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.arg_type_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.FunctionParameter.arg_type) } // .pg_query.FunctionParameterMode mode = 3 [json_name = "mode"]; inline void FunctionParameter::clear_mode() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.mode_ = 0; } inline ::pg_query::FunctionParameterMode FunctionParameter::mode() const { // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.mode) return _internal_mode(); } inline void FunctionParameter::set_mode(::pg_query::FunctionParameterMode value) { _internal_set_mode(value); // @@protoc_insertion_point(field_set:pg_query.FunctionParameter.mode) } inline ::pg_query::FunctionParameterMode FunctionParameter::_internal_mode() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::FunctionParameterMode>(_impl_.mode_); } inline void FunctionParameter::_internal_set_mode(::pg_query::FunctionParameterMode value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.mode_ = value; } // .pg_query.Node defexpr = 4 [json_name = "defexpr"]; inline bool FunctionParameter::has_defexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.defexpr_ != nullptr); return value; } inline void FunctionParameter::clear_defexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.defexpr_ != nullptr) _impl_.defexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& FunctionParameter::_internal_defexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.defexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FunctionParameter::defexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.defexpr) return _internal_defexpr(); } inline void FunctionParameter::unsafe_arena_set_allocated_defexpr(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.defexpr_); } _impl_.defexpr_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FunctionParameter.defexpr) } inline ::pg_query::Node* FunctionParameter::release_defexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.defexpr_; _impl_.defexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* FunctionParameter::unsafe_arena_release_defexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.FunctionParameter.defexpr) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.defexpr_; _impl_.defexpr_ = nullptr; return temp; } inline ::pg_query::Node* FunctionParameter::_internal_mutable_defexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.defexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.defexpr_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.defexpr_; } inline ::pg_query::Node* FunctionParameter::mutable_defexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_defexpr(); // @@protoc_insertion_point(field_mutable:pg_query.FunctionParameter.defexpr) return _msg; } inline void FunctionParameter::set_allocated_defexpr(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.defexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.defexpr_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.FunctionParameter.defexpr) } // ------------------------------------------------------------------- // AlterFunctionStmt // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; inline void AlterFunctionStmt::clear_objtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.objtype_ = 0; } inline ::pg_query::ObjectType AlterFunctionStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterFunctionStmt.objtype) return _internal_objtype(); } inline void AlterFunctionStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterFunctionStmt.objtype) } inline ::pg_query::ObjectType AlterFunctionStmt::_internal_objtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.objtype_); } inline void AlterFunctionStmt::_internal_set_objtype(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.objtype_ = value; } // .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; inline bool AlterFunctionStmt::has_func() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.func_ != nullptr); return value; } inline void AlterFunctionStmt::clear_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.func_ != nullptr) _impl_.func_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::ObjectWithArgs& AlterFunctionStmt::_internal_func() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::ObjectWithArgs* p = _impl_.func_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_ObjectWithArgs_default_instance_); } inline const ::pg_query::ObjectWithArgs& AlterFunctionStmt::func() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterFunctionStmt.func) return _internal_func(); } inline void AlterFunctionStmt::unsafe_arena_set_allocated_func(::pg_query::ObjectWithArgs* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.func_); } _impl_.func_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterFunctionStmt.func) } inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::release_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::ObjectWithArgs* released = _impl_.func_; _impl_.func_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::unsafe_arena_release_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterFunctionStmt.func) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::ObjectWithArgs* temp = _impl_.func_; _impl_.func_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::_internal_mutable_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.func_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); _impl_.func_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(p); } return _impl_.func_; } inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::mutable_func() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ObjectWithArgs* _msg = _internal_mutable_func(); // @@protoc_insertion_point(field_mutable:pg_query.AlterFunctionStmt.func) return _msg; } inline void AlterFunctionStmt::set_allocated_func(::pg_query::ObjectWithArgs* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::ObjectWithArgs*>(_impl_.func_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::ObjectWithArgs*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.func_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(value); // @@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 _internal_actions().size(); } inline int AlterFunctionStmt::actions_size() const { return _internal_actions_size(); } inline void AlterFunctionStmt::clear_actions() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.actions_.Clear(); } inline ::pg_query::Node* AlterFunctionStmt::mutable_actions(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterFunctionStmt.actions) return _internal_mutable_actions()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterFunctionStmt::mutable_actions() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterFunctionStmt.actions) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_actions(); } inline const ::pg_query::Node& AlterFunctionStmt::actions(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterFunctionStmt.actions) return _internal_actions().Get(index); } inline ::pg_query::Node* AlterFunctionStmt::add_actions() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_actions()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterFunctionStmt.actions) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterFunctionStmt::actions() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterFunctionStmt.actions) return _internal_actions(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterFunctionStmt::_internal_actions() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.actions_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterFunctionStmt::_internal_mutable_actions() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.actions_; } // ------------------------------------------------------------------- // DoStmt // repeated .pg_query.Node args = 1 [json_name = "args"]; inline int DoStmt::_internal_args_size() const { return _internal_args().size(); } inline int DoStmt::args_size() const { return _internal_args_size(); } inline void DoStmt::clear_args() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.args_.Clear(); } inline ::pg_query::Node* DoStmt::mutable_args(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.DoStmt.args) return _internal_mutable_args()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DoStmt::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.DoStmt.args) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_args(); } inline const ::pg_query::Node& DoStmt::args(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DoStmt.args) return _internal_args().Get(index); } inline ::pg_query::Node* DoStmt::add_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_args()->Add(); // @@protoc_insertion_point(field_add:pg_query.DoStmt.args) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DoStmt::args() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.DoStmt.args) return _internal_args(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DoStmt::_internal_args() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.args_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DoStmt::_internal_mutable_args() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.args_; } // ------------------------------------------------------------------- // InlineCodeBlock // string source_text = 1 [json_name = "source_text"]; inline void InlineCodeBlock::clear_source_text() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.source_text_.ClearToEmpty(); } inline const std::string& InlineCodeBlock::source_text() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.source_text) return _internal_source_text(); } template inline PROTOBUF_ALWAYS_INLINE void InlineCodeBlock::set_source_text(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.source_text_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.source_text) } inline std::string* InlineCodeBlock::mutable_source_text() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_source_text(); // @@protoc_insertion_point(field_mutable:pg_query.InlineCodeBlock.source_text) return _s; } inline const std::string& InlineCodeBlock::_internal_source_text() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.source_text_.Get(); } inline void InlineCodeBlock::_internal_set_source_text(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.source_text_.Set(value, GetArena()); } inline std::string* InlineCodeBlock::_internal_mutable_source_text() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.source_text_.Mutable( GetArena()); } inline std::string* InlineCodeBlock::release_source_text() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.InlineCodeBlock.source_text) return _impl_.source_text_.Release(); } inline void InlineCodeBlock::set_allocated_source_text(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.source_text_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.source_text_.IsDefault()) { _impl_.source_text_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.InlineCodeBlock.source_text) } // uint32 lang_oid = 2 [json_name = "langOid"]; inline void InlineCodeBlock::clear_lang_oid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.lang_oid_ = 0u; } inline ::uint32_t InlineCodeBlock::lang_oid() const { // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.lang_oid) return _internal_lang_oid(); } inline void InlineCodeBlock::set_lang_oid(::uint32_t value) { _internal_set_lang_oid(value); // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.lang_oid) } inline ::uint32_t InlineCodeBlock::_internal_lang_oid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.lang_oid_; } inline void InlineCodeBlock::_internal_set_lang_oid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.lang_oid_ = value; } // bool lang_is_trusted = 3 [json_name = "langIsTrusted"]; inline void InlineCodeBlock::clear_lang_is_trusted() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.lang_is_trusted_ = false; } 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::set_lang_is_trusted(bool value) { _internal_set_lang_is_trusted(value); // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.lang_is_trusted) } inline bool InlineCodeBlock::_internal_lang_is_trusted() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.lang_is_trusted_; } inline void InlineCodeBlock::_internal_set_lang_is_trusted(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.lang_is_trusted_ = value; } // bool atomic = 4 [json_name = "atomic"]; inline void InlineCodeBlock::clear_atomic() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.atomic_ = false; } inline bool InlineCodeBlock::atomic() const { // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.atomic) return _internal_atomic(); } inline void InlineCodeBlock::set_atomic(bool value) { _internal_set_atomic(value); // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.atomic) } inline bool InlineCodeBlock::_internal_atomic() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.atomic_; } inline void InlineCodeBlock::_internal_set_atomic(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.atomic_ = value; } // ------------------------------------------------------------------- // CallStmt // .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; inline bool CallStmt::has_funccall() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.funccall_ != nullptr); return value; } inline void CallStmt::clear_funccall() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.funccall_ != nullptr) _impl_.funccall_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::FuncCall& CallStmt::_internal_funccall() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::FuncCall* p = _impl_.funccall_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_FuncCall_default_instance_); } inline const ::pg_query::FuncCall& CallStmt::funccall() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CallStmt.funccall) return _internal_funccall(); } inline void CallStmt::unsafe_arena_set_allocated_funccall(::pg_query::FuncCall* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.funccall_); } _impl_.funccall_ = reinterpret_cast<::pg_query::FuncCall*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CallStmt.funccall) } inline ::pg_query::FuncCall* CallStmt::release_funccall() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::FuncCall* released = _impl_.funccall_; _impl_.funccall_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::FuncCall* CallStmt::unsafe_arena_release_funccall() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CallStmt.funccall) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::FuncCall* temp = _impl_.funccall_; _impl_.funccall_ = nullptr; return temp; } inline ::pg_query::FuncCall* CallStmt::_internal_mutable_funccall() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.funccall_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::FuncCall>(GetArena()); _impl_.funccall_ = reinterpret_cast<::pg_query::FuncCall*>(p); } return _impl_.funccall_; } inline ::pg_query::FuncCall* CallStmt::mutable_funccall() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::FuncCall* _msg = _internal_mutable_funccall(); // @@protoc_insertion_point(field_mutable:pg_query.CallStmt.funccall) return _msg; } inline void CallStmt::set_allocated_funccall(::pg_query::FuncCall* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::FuncCall*>(_impl_.funccall_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::FuncCall*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.funccall_ = reinterpret_cast<::pg_query::FuncCall*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CallStmt.funccall) } // .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; inline bool CallStmt::has_funcexpr() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.funcexpr_ != nullptr); return value; } inline void CallStmt::clear_funcexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.funcexpr_ != nullptr) _impl_.funcexpr_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::FuncExpr& CallStmt::_internal_funcexpr() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::FuncExpr* p = _impl_.funcexpr_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_FuncExpr_default_instance_); } inline const ::pg_query::FuncExpr& CallStmt::funcexpr() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CallStmt.funcexpr) return _internal_funcexpr(); } inline void CallStmt::unsafe_arena_set_allocated_funcexpr(::pg_query::FuncExpr* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.funcexpr_); } _impl_.funcexpr_ = reinterpret_cast<::pg_query::FuncExpr*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CallStmt.funcexpr) } inline ::pg_query::FuncExpr* CallStmt::release_funcexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::FuncExpr* released = _impl_.funcexpr_; _impl_.funcexpr_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::FuncExpr* CallStmt::unsafe_arena_release_funcexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CallStmt.funcexpr) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::FuncExpr* temp = _impl_.funcexpr_; _impl_.funcexpr_ = nullptr; return temp; } inline ::pg_query::FuncExpr* CallStmt::_internal_mutable_funcexpr() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.funcexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::FuncExpr>(GetArena()); _impl_.funcexpr_ = reinterpret_cast<::pg_query::FuncExpr*>(p); } return _impl_.funcexpr_; } inline ::pg_query::FuncExpr* CallStmt::mutable_funcexpr() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::FuncExpr* _msg = _internal_mutable_funcexpr(); // @@protoc_insertion_point(field_mutable:pg_query.CallStmt.funcexpr) return _msg; } inline void CallStmt::set_allocated_funcexpr(::pg_query::FuncExpr* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::FuncExpr*>(_impl_.funcexpr_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::FuncExpr*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.funcexpr_ = reinterpret_cast<::pg_query::FuncExpr*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CallStmt.funcexpr) } // repeated .pg_query.Node outargs = 3 [json_name = "outargs"]; inline int CallStmt::_internal_outargs_size() const { return _internal_outargs().size(); } inline int CallStmt::outargs_size() const { return _internal_outargs_size(); } inline void CallStmt::clear_outargs() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.outargs_.Clear(); } inline ::pg_query::Node* CallStmt::mutable_outargs(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CallStmt.outargs) return _internal_mutable_outargs()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CallStmt::mutable_outargs() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CallStmt.outargs) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_outargs(); } inline const ::pg_query::Node& CallStmt::outargs(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CallStmt.outargs) return _internal_outargs().Get(index); } inline ::pg_query::Node* CallStmt::add_outargs() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_outargs()->Add(); // @@protoc_insertion_point(field_add:pg_query.CallStmt.outargs) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CallStmt::outargs() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CallStmt.outargs) return _internal_outargs(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CallStmt::_internal_outargs() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.outargs_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CallStmt::_internal_mutable_outargs() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.outargs_; } // ------------------------------------------------------------------- // CallContext // bool atomic = 1 [json_name = "atomic"]; inline void CallContext::clear_atomic() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.atomic_ = false; } inline bool CallContext::atomic() const { // @@protoc_insertion_point(field_get:pg_query.CallContext.atomic) return _internal_atomic(); } inline void CallContext::set_atomic(bool value) { _internal_set_atomic(value); // @@protoc_insertion_point(field_set:pg_query.CallContext.atomic) } inline bool CallContext::_internal_atomic() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.atomic_; } inline void CallContext::_internal_set_atomic(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.atomic_ = value; } // ------------------------------------------------------------------- // RenameStmt // .pg_query.ObjectType rename_type = 1 [json_name = "renameType"]; inline void RenameStmt::clear_rename_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rename_type_ = 0; } 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::set_rename_type(::pg_query::ObjectType value) { _internal_set_rename_type(value); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.rename_type) } inline ::pg_query::ObjectType RenameStmt::_internal_rename_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.rename_type_); } inline void RenameStmt::_internal_set_rename_type(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.rename_type_ = value; } // .pg_query.ObjectType relation_type = 2 [json_name = "relationType"]; inline void RenameStmt::clear_relation_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relation_type_ = 0; } 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::set_relation_type(::pg_query::ObjectType value) { _internal_set_relation_type(value); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.relation_type) } inline ::pg_query::ObjectType RenameStmt::_internal_relation_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.relation_type_); } inline void RenameStmt::_internal_set_relation_type(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.relation_type_ = value; } // .pg_query.RangeVar relation = 3 [json_name = "relation"]; inline bool RenameStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void RenameStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& RenameStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& RenameStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.relation) return _internal_relation(); } inline void RenameStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RenameStmt.relation) } inline ::pg_query::RangeVar* RenameStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* RenameStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RenameStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* RenameStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* RenameStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.RenameStmt.relation) return _msg; } inline void RenameStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RenameStmt.relation) } // .pg_query.Node object = 4 [json_name = "object"]; inline bool RenameStmt::has_object() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.object_ != nullptr); return value; } inline void RenameStmt::clear_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.object_ != nullptr) _impl_.object_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& RenameStmt::_internal_object() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.object_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RenameStmt::object() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.object) return _internal_object(); } inline void RenameStmt::unsafe_arena_set_allocated_object(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.object_); } _impl_.object_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RenameStmt.object) } inline ::pg_query::Node* RenameStmt::release_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.object_; _impl_.object_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RenameStmt::unsafe_arena_release_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RenameStmt.object) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; return temp; } inline ::pg_query::Node* RenameStmt::_internal_mutable_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.object_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.object_; } inline ::pg_query::Node* RenameStmt::mutable_object() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_object(); // @@protoc_insertion_point(field_mutable:pg_query.RenameStmt.object) return _msg; } inline void RenameStmt::set_allocated_object(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.object_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.object_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RenameStmt.object) } // string subname = 5 [json_name = "subname"]; inline void RenameStmt::clear_subname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.subname_.ClearToEmpty(); } inline const std::string& RenameStmt::subname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.subname) return _internal_subname(); } template inline PROTOBUF_ALWAYS_INLINE void RenameStmt::set_subname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.subname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.subname) } inline std::string* RenameStmt::mutable_subname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_subname(); // @@protoc_insertion_point(field_mutable:pg_query.RenameStmt.subname) return _s; } inline const std::string& RenameStmt::_internal_subname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.subname_.Get(); } inline void RenameStmt::_internal_set_subname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.subname_.Set(value, GetArena()); } inline std::string* RenameStmt::_internal_mutable_subname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.subname_.Mutable( GetArena()); } inline std::string* RenameStmt::release_subname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RenameStmt.subname) return _impl_.subname_.Release(); } inline void RenameStmt::set_allocated_subname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.subname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.subname_.IsDefault()) { _impl_.subname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RenameStmt.subname) } // string newname = 6 [json_name = "newname"]; inline void RenameStmt::clear_newname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.newname_.ClearToEmpty(); } inline const std::string& RenameStmt::newname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.newname) return _internal_newname(); } template inline PROTOBUF_ALWAYS_INLINE void RenameStmt::set_newname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.newname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.newname) } inline std::string* RenameStmt::mutable_newname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_newname(); // @@protoc_insertion_point(field_mutable:pg_query.RenameStmt.newname) return _s; } inline const std::string& RenameStmt::_internal_newname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.newname_.Get(); } inline void RenameStmt::_internal_set_newname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.newname_.Set(value, GetArena()); } inline std::string* RenameStmt::_internal_mutable_newname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.newname_.Mutable( GetArena()); } inline std::string* RenameStmt::release_newname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RenameStmt.newname) return _impl_.newname_.Release(); } inline void RenameStmt::set_allocated_newname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.newname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.newname_.IsDefault()) { _impl_.newname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RenameStmt.newname) } // .pg_query.DropBehavior behavior = 7 [json_name = "behavior"]; inline void RenameStmt::clear_behavior() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior RenameStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.behavior) return _internal_behavior(); } inline void RenameStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.behavior) } inline ::pg_query::DropBehavior RenameStmt::_internal_behavior() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::DropBehavior>(_impl_.behavior_); } inline void RenameStmt::_internal_set_behavior(::pg_query::DropBehavior value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.behavior_ = value; } // bool missing_ok = 8 [json_name = "missing_ok"]; inline void RenameStmt::clear_missing_ok() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.missing_ok_ = false; } inline bool RenameStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.missing_ok) return _internal_missing_ok(); } inline void RenameStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.missing_ok) } inline bool RenameStmt::_internal_missing_ok() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.missing_ok_; } inline void RenameStmt::_internal_set_missing_ok(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.missing_ok_ = value; } // ------------------------------------------------------------------- // AlterObjectDependsStmt // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; inline void AlterObjectDependsStmt::clear_object_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.object_type_ = 0; } 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::set_object_type(::pg_query::ObjectType value) { _internal_set_object_type(value); // @@protoc_insertion_point(field_set:pg_query.AlterObjectDependsStmt.object_type) } inline ::pg_query::ObjectType AlterObjectDependsStmt::_internal_object_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.object_type_); } inline void AlterObjectDependsStmt::_internal_set_object_type(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.object_type_ = value; } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool AlterObjectDependsStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void AlterObjectDependsStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& AlterObjectDependsStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& AlterObjectDependsStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.relation) return _internal_relation(); } inline void AlterObjectDependsStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectDependsStmt.relation) } inline ::pg_query::RangeVar* AlterObjectDependsStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* AlterObjectDependsStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterObjectDependsStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterObjectDependsStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* AlterObjectDependsStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectDependsStmt.relation) return _msg; } inline void AlterObjectDependsStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectDependsStmt.relation) } // .pg_query.Node object = 3 [json_name = "object"]; inline bool AlterObjectDependsStmt::has_object() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.object_ != nullptr); return value; } inline void AlterObjectDependsStmt::clear_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.object_ != nullptr) _impl_.object_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& AlterObjectDependsStmt::_internal_object() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.object_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterObjectDependsStmt::object() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.object) return _internal_object(); } inline void AlterObjectDependsStmt::unsafe_arena_set_allocated_object(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.object_); } _impl_.object_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectDependsStmt.object) } inline ::pg_query::Node* AlterObjectDependsStmt::release_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.object_; _impl_.object_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* AlterObjectDependsStmt::unsafe_arena_release_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterObjectDependsStmt.object) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; return temp; } inline ::pg_query::Node* AlterObjectDependsStmt::_internal_mutable_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.object_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.object_; } inline ::pg_query::Node* AlterObjectDependsStmt::mutable_object() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_object(); // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectDependsStmt.object) return _msg; } inline void AlterObjectDependsStmt::set_allocated_object(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.object_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.object_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectDependsStmt.object) } // .pg_query.String extname = 4 [json_name = "extname"]; inline bool AlterObjectDependsStmt::has_extname() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.extname_ != nullptr); return value; } inline void AlterObjectDependsStmt::clear_extname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.extname_ != nullptr) _impl_.extname_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::String& AlterObjectDependsStmt::_internal_extname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::String* p = _impl_.extname_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_String_default_instance_); } inline const ::pg_query::String& AlterObjectDependsStmt::extname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.extname) return _internal_extname(); } inline void AlterObjectDependsStmt::unsafe_arena_set_allocated_extname(::pg_query::String* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.extname_); } _impl_.extname_ = reinterpret_cast<::pg_query::String*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectDependsStmt.extname) } inline ::pg_query::String* AlterObjectDependsStmt::release_extname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::String* released = _impl_.extname_; _impl_.extname_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::String* AlterObjectDependsStmt::unsafe_arena_release_extname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterObjectDependsStmt.extname) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::String* temp = _impl_.extname_; _impl_.extname_ = nullptr; return temp; } inline ::pg_query::String* AlterObjectDependsStmt::_internal_mutable_extname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.extname_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::String>(GetArena()); _impl_.extname_ = reinterpret_cast<::pg_query::String*>(p); } return _impl_.extname_; } inline ::pg_query::String* AlterObjectDependsStmt::mutable_extname() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::String* _msg = _internal_mutable_extname(); // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectDependsStmt.extname) return _msg; } inline void AlterObjectDependsStmt::set_allocated_extname(::pg_query::String* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::String*>(_impl_.extname_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::String*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.extname_ = reinterpret_cast<::pg_query::String*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectDependsStmt.extname) } // bool remove = 5 [json_name = "remove"]; inline void AlterObjectDependsStmt::clear_remove() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.remove_ = false; } inline bool AlterObjectDependsStmt::remove() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.remove) return _internal_remove(); } inline void AlterObjectDependsStmt::set_remove(bool value) { _internal_set_remove(value); // @@protoc_insertion_point(field_set:pg_query.AlterObjectDependsStmt.remove) } inline bool AlterObjectDependsStmt::_internal_remove() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.remove_; } inline void AlterObjectDependsStmt::_internal_set_remove(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.remove_ = value; } // ------------------------------------------------------------------- // AlterObjectSchemaStmt // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; inline void AlterObjectSchemaStmt::clear_object_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.object_type_ = 0; } 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::set_object_type(::pg_query::ObjectType value) { _internal_set_object_type(value); // @@protoc_insertion_point(field_set:pg_query.AlterObjectSchemaStmt.object_type) } inline ::pg_query::ObjectType AlterObjectSchemaStmt::_internal_object_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.object_type_); } inline void AlterObjectSchemaStmt::_internal_set_object_type(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.object_type_ = value; } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool AlterObjectSchemaStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void AlterObjectSchemaStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& AlterObjectSchemaStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& AlterObjectSchemaStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.relation) return _internal_relation(); } inline void AlterObjectSchemaStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectSchemaStmt.relation) } inline ::pg_query::RangeVar* AlterObjectSchemaStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* AlterObjectSchemaStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterObjectSchemaStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterObjectSchemaStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* AlterObjectSchemaStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectSchemaStmt.relation) return _msg; } inline void AlterObjectSchemaStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectSchemaStmt.relation) } // .pg_query.Node object = 3 [json_name = "object"]; inline bool AlterObjectSchemaStmt::has_object() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.object_ != nullptr); return value; } inline void AlterObjectSchemaStmt::clear_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.object_ != nullptr) _impl_.object_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& AlterObjectSchemaStmt::_internal_object() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.object_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterObjectSchemaStmt::object() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.object) return _internal_object(); } inline void AlterObjectSchemaStmt::unsafe_arena_set_allocated_object(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.object_); } _impl_.object_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectSchemaStmt.object) } inline ::pg_query::Node* AlterObjectSchemaStmt::release_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.object_; _impl_.object_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* AlterObjectSchemaStmt::unsafe_arena_release_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterObjectSchemaStmt.object) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; return temp; } inline ::pg_query::Node* AlterObjectSchemaStmt::_internal_mutable_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.object_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.object_; } inline ::pg_query::Node* AlterObjectSchemaStmt::mutable_object() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_object(); // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectSchemaStmt.object) return _msg; } inline void AlterObjectSchemaStmt::set_allocated_object(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.object_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.object_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectSchemaStmt.object) } // string newschema = 4 [json_name = "newschema"]; inline void AlterObjectSchemaStmt::clear_newschema() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.newschema_.ClearToEmpty(); } inline const std::string& AlterObjectSchemaStmt::newschema() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.newschema) return _internal_newschema(); } template inline PROTOBUF_ALWAYS_INLINE void AlterObjectSchemaStmt::set_newschema(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.newschema_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterObjectSchemaStmt.newschema) } inline std::string* AlterObjectSchemaStmt::mutable_newschema() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_newschema(); // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectSchemaStmt.newschema) return _s; } inline const std::string& AlterObjectSchemaStmt::_internal_newschema() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.newschema_.Get(); } inline void AlterObjectSchemaStmt::_internal_set_newschema(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.newschema_.Set(value, GetArena()); } inline std::string* AlterObjectSchemaStmt::_internal_mutable_newschema() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.newschema_.Mutable( GetArena()); } inline std::string* AlterObjectSchemaStmt::release_newschema() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterObjectSchemaStmt.newschema) return _impl_.newschema_.Release(); } inline void AlterObjectSchemaStmt::set_allocated_newschema(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.newschema_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.newschema_.IsDefault()) { _impl_.newschema_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectSchemaStmt.newschema) } // bool missing_ok = 5 [json_name = "missing_ok"]; inline void AlterObjectSchemaStmt::clear_missing_ok() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.missing_ok_ = false; } inline bool AlterObjectSchemaStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.missing_ok) return _internal_missing_ok(); } inline void AlterObjectSchemaStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterObjectSchemaStmt.missing_ok) } inline bool AlterObjectSchemaStmt::_internal_missing_ok() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.missing_ok_; } inline void AlterObjectSchemaStmt::_internal_set_missing_ok(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.missing_ok_ = value; } // ------------------------------------------------------------------- // AlterOwnerStmt // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; inline void AlterOwnerStmt::clear_object_type() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.object_type_ = 0; } 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::set_object_type(::pg_query::ObjectType value) { _internal_set_object_type(value); // @@protoc_insertion_point(field_set:pg_query.AlterOwnerStmt.object_type) } inline ::pg_query::ObjectType AlterOwnerStmt::_internal_object_type() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.object_type_); } inline void AlterOwnerStmt::_internal_set_object_type(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.object_type_ = value; } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool AlterOwnerStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void AlterOwnerStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& AlterOwnerStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& AlterOwnerStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.relation) return _internal_relation(); } inline void AlterOwnerStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOwnerStmt.relation) } inline ::pg_query::RangeVar* AlterOwnerStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* AlterOwnerStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterOwnerStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterOwnerStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* AlterOwnerStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.AlterOwnerStmt.relation) return _msg; } inline void AlterOwnerStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOwnerStmt.relation) } // .pg_query.Node object = 3 [json_name = "object"]; inline bool AlterOwnerStmt::has_object() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.object_ != nullptr); return value; } inline void AlterOwnerStmt::clear_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.object_ != nullptr) _impl_.object_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& AlterOwnerStmt::_internal_object() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.object_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterOwnerStmt::object() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.object) return _internal_object(); } inline void AlterOwnerStmt::unsafe_arena_set_allocated_object(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.object_); } _impl_.object_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOwnerStmt.object) } inline ::pg_query::Node* AlterOwnerStmt::release_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.object_; _impl_.object_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* AlterOwnerStmt::unsafe_arena_release_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterOwnerStmt.object) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.object_; _impl_.object_ = nullptr; return temp; } inline ::pg_query::Node* AlterOwnerStmt::_internal_mutable_object() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.object_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.object_; } inline ::pg_query::Node* AlterOwnerStmt::mutable_object() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_object(); // @@protoc_insertion_point(field_mutable:pg_query.AlterOwnerStmt.object) return _msg; } inline void AlterOwnerStmt::set_allocated_object(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.object_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.object_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOwnerStmt.object) } // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; inline bool AlterOwnerStmt::has_newowner() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.newowner_ != nullptr); return value; } inline void AlterOwnerStmt::clear_newowner() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.newowner_ != nullptr) _impl_.newowner_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::RoleSpec& AlterOwnerStmt::_internal_newowner() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RoleSpec* p = _impl_.newowner_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& AlterOwnerStmt::newowner() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.newowner) return _internal_newowner(); } inline void AlterOwnerStmt::unsafe_arena_set_allocated_newowner(::pg_query::RoleSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.newowner_); } _impl_.newowner_ = reinterpret_cast<::pg_query::RoleSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOwnerStmt.newowner) } inline ::pg_query::RoleSpec* AlterOwnerStmt::release_newowner() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::RoleSpec* released = _impl_.newowner_; _impl_.newowner_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RoleSpec* AlterOwnerStmt::unsafe_arena_release_newowner() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterOwnerStmt.newowner) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::RoleSpec* temp = _impl_.newowner_; _impl_.newowner_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterOwnerStmt::_internal_mutable_newowner() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.newowner_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); _impl_.newowner_ = reinterpret_cast<::pg_query::RoleSpec*>(p); } return _impl_.newowner_; } inline ::pg_query::RoleSpec* AlterOwnerStmt::mutable_newowner() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RoleSpec* _msg = _internal_mutable_newowner(); // @@protoc_insertion_point(field_mutable:pg_query.AlterOwnerStmt.newowner) return _msg; } inline void AlterOwnerStmt::set_allocated_newowner(::pg_query::RoleSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RoleSpec*>(_impl_.newowner_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RoleSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.newowner_ = reinterpret_cast<::pg_query::RoleSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOwnerStmt.newowner) } // ------------------------------------------------------------------- // AlterOperatorStmt // .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; inline bool AlterOperatorStmt::has_opername() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.opername_ != nullptr); return value; } inline void AlterOperatorStmt::clear_opername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.opername_ != nullptr) _impl_.opername_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::ObjectWithArgs& AlterOperatorStmt::_internal_opername() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::ObjectWithArgs* p = _impl_.opername_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_ObjectWithArgs_default_instance_); } inline const ::pg_query::ObjectWithArgs& AlterOperatorStmt::opername() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterOperatorStmt.opername) return _internal_opername(); } inline void AlterOperatorStmt::unsafe_arena_set_allocated_opername(::pg_query::ObjectWithArgs* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.opername_); } _impl_.opername_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOperatorStmt.opername) } inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::release_opername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::ObjectWithArgs* released = _impl_.opername_; _impl_.opername_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::unsafe_arena_release_opername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterOperatorStmt.opername) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::ObjectWithArgs* temp = _impl_.opername_; _impl_.opername_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::_internal_mutable_opername() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.opername_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); _impl_.opername_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(p); } return _impl_.opername_; } inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::mutable_opername() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ObjectWithArgs* _msg = _internal_mutable_opername(); // @@protoc_insertion_point(field_mutable:pg_query.AlterOperatorStmt.opername) return _msg; } inline void AlterOperatorStmt::set_allocated_opername(::pg_query::ObjectWithArgs* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::ObjectWithArgs*>(_impl_.opername_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::ObjectWithArgs*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.opername_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(value); // @@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 _internal_options().size(); } inline int AlterOperatorStmt::options_size() const { return _internal_options_size(); } inline void AlterOperatorStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* AlterOperatorStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterOperatorStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterOperatorStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterOperatorStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& AlterOperatorStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterOperatorStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* AlterOperatorStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterOperatorStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterOperatorStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterOperatorStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterOperatorStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterOperatorStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // AlterTypeStmt // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; inline int AlterTypeStmt::_internal_type_name_size() const { return _internal_type_name().size(); } inline int AlterTypeStmt::type_name_size() const { return _internal_type_name_size(); } inline void AlterTypeStmt::clear_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_name_.Clear(); } inline ::pg_query::Node* AlterTypeStmt::mutable_type_name(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterTypeStmt.type_name) return _internal_mutable_type_name()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTypeStmt::mutable_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTypeStmt.type_name) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_type_name(); } inline const ::pg_query::Node& AlterTypeStmt::type_name(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTypeStmt.type_name) return _internal_type_name().Get(index); } inline ::pg_query::Node* AlterTypeStmt::add_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_type_name()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterTypeStmt.type_name) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTypeStmt::type_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterTypeStmt.type_name) return _internal_type_name(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTypeStmt::_internal_type_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_name_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTypeStmt::_internal_mutable_type_name() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.type_name_; } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterTypeStmt::_internal_options_size() const { return _internal_options().size(); } inline int AlterTypeStmt::options_size() const { return _internal_options_size(); } inline void AlterTypeStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* AlterTypeStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterTypeStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTypeStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTypeStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& AlterTypeStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTypeStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* AlterTypeStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterTypeStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTypeStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterTypeStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTypeStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTypeStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // RuleStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool RuleStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void RuleStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& RuleStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& RuleStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.relation) return _internal_relation(); } inline void RuleStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RuleStmt.relation) } inline ::pg_query::RangeVar* RuleStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* RuleStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RuleStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* RuleStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* RuleStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.RuleStmt.relation) return _msg; } inline void RuleStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RuleStmt.relation) } // string rulename = 2 [json_name = "rulename"]; inline void RuleStmt::clear_rulename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rulename_.ClearToEmpty(); } inline const std::string& RuleStmt::rulename() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.rulename) return _internal_rulename(); } template inline PROTOBUF_ALWAYS_INLINE void RuleStmt::set_rulename(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.rulename_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.RuleStmt.rulename) } inline std::string* RuleStmt::mutable_rulename() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_rulename(); // @@protoc_insertion_point(field_mutable:pg_query.RuleStmt.rulename) return _s; } inline const std::string& RuleStmt::_internal_rulename() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.rulename_.Get(); } inline void RuleStmt::_internal_set_rulename(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.rulename_.Set(value, GetArena()); } inline std::string* RuleStmt::_internal_mutable_rulename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.rulename_.Mutable( GetArena()); } inline std::string* RuleStmt::release_rulename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RuleStmt.rulename) return _impl_.rulename_.Release(); } inline void RuleStmt::set_allocated_rulename(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rulename_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.rulename_.IsDefault()) { _impl_.rulename_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.RuleStmt.rulename) } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; inline bool RuleStmt::has_where_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.where_clause_ != nullptr); return value; } inline void RuleStmt::clear_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.where_clause_ != nullptr) _impl_.where_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& RuleStmt::_internal_where_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.where_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RuleStmt::where_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RuleStmt.where_clause) } inline ::pg_query::Node* RuleStmt::release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* RuleStmt::unsafe_arena_release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RuleStmt.where_clause) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* RuleStmt::_internal_mutable_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.where_clause_; } inline ::pg_query::Node* RuleStmt::mutable_where_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_where_clause(); // @@protoc_insertion_point(field_mutable:pg_query.RuleStmt.where_clause) return _msg; } inline void RuleStmt::set_allocated_where_clause(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.where_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RuleStmt.where_clause) } // .pg_query.CmdType event = 4 [json_name = "event"]; inline void RuleStmt::clear_event() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.event_ = 0; } inline ::pg_query::CmdType RuleStmt::event() const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.event) return _internal_event(); } inline void RuleStmt::set_event(::pg_query::CmdType value) { _internal_set_event(value); // @@protoc_insertion_point(field_set:pg_query.RuleStmt.event) } inline ::pg_query::CmdType RuleStmt::_internal_event() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::CmdType>(_impl_.event_); } inline void RuleStmt::_internal_set_event(::pg_query::CmdType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.event_ = value; } // bool instead = 5 [json_name = "instead"]; inline void RuleStmt::clear_instead() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.instead_ = false; } inline bool RuleStmt::instead() const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.instead) return _internal_instead(); } inline void RuleStmt::set_instead(bool value) { _internal_set_instead(value); // @@protoc_insertion_point(field_set:pg_query.RuleStmt.instead) } inline bool RuleStmt::_internal_instead() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.instead_; } inline void RuleStmt::_internal_set_instead(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.instead_ = value; } // repeated .pg_query.Node actions = 6 [json_name = "actions"]; inline int RuleStmt::_internal_actions_size() const { return _internal_actions().size(); } inline int RuleStmt::actions_size() const { return _internal_actions_size(); } inline void RuleStmt::clear_actions() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.actions_.Clear(); } inline ::pg_query::Node* RuleStmt::mutable_actions(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.RuleStmt.actions) return _internal_mutable_actions()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RuleStmt::mutable_actions() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.RuleStmt.actions) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_actions(); } inline const ::pg_query::Node& RuleStmt::actions(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.actions) return _internal_actions().Get(index); } inline ::pg_query::Node* RuleStmt::add_actions() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_actions()->Add(); // @@protoc_insertion_point(field_add:pg_query.RuleStmt.actions) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RuleStmt::actions() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.RuleStmt.actions) return _internal_actions(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& RuleStmt::_internal_actions() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.actions_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* RuleStmt::_internal_mutable_actions() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.actions_; } // bool replace = 7 [json_name = "replace"]; inline void RuleStmt::clear_replace() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.replace_ = false; } inline bool RuleStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.replace) return _internal_replace(); } inline void RuleStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.RuleStmt.replace) } inline bool RuleStmt::_internal_replace() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.replace_; } inline void RuleStmt::_internal_set_replace(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.replace_ = value; } // ------------------------------------------------------------------- // NotifyStmt // string conditionname = 1 [json_name = "conditionname"]; inline void NotifyStmt::clear_conditionname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conditionname_.ClearToEmpty(); } inline const std::string& NotifyStmt::conditionname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.NotifyStmt.conditionname) return _internal_conditionname(); } template inline PROTOBUF_ALWAYS_INLINE void NotifyStmt::set_conditionname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.conditionname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.NotifyStmt.conditionname) } inline std::string* NotifyStmt::mutable_conditionname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_conditionname(); // @@protoc_insertion_point(field_mutable:pg_query.NotifyStmt.conditionname) return _s; } inline const std::string& NotifyStmt::_internal_conditionname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.conditionname_.Get(); } inline void NotifyStmt::_internal_set_conditionname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.conditionname_.Set(value, GetArena()); } inline std::string* NotifyStmt::_internal_mutable_conditionname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.conditionname_.Mutable( GetArena()); } inline std::string* NotifyStmt::release_conditionname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.NotifyStmt.conditionname) return _impl_.conditionname_.Release(); } inline void NotifyStmt::set_allocated_conditionname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conditionname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.conditionname_.IsDefault()) { _impl_.conditionname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.NotifyStmt.conditionname) } // string payload = 2 [json_name = "payload"]; inline void NotifyStmt::clear_payload() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.payload_.ClearToEmpty(); } inline const std::string& NotifyStmt::payload() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.NotifyStmt.payload) return _internal_payload(); } template inline PROTOBUF_ALWAYS_INLINE void NotifyStmt::set_payload(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.payload_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.NotifyStmt.payload) } inline std::string* NotifyStmt::mutable_payload() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_payload(); // @@protoc_insertion_point(field_mutable:pg_query.NotifyStmt.payload) return _s; } inline const std::string& NotifyStmt::_internal_payload() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.payload_.Get(); } inline void NotifyStmt::_internal_set_payload(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.payload_.Set(value, GetArena()); } inline std::string* NotifyStmt::_internal_mutable_payload() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.payload_.Mutable( GetArena()); } inline std::string* NotifyStmt::release_payload() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.NotifyStmt.payload) return _impl_.payload_.Release(); } inline void NotifyStmt::set_allocated_payload(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.payload_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.payload_.IsDefault()) { _impl_.payload_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.NotifyStmt.payload) } // ------------------------------------------------------------------- // ListenStmt // string conditionname = 1 [json_name = "conditionname"]; inline void ListenStmt::clear_conditionname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conditionname_.ClearToEmpty(); } inline const std::string& ListenStmt::conditionname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ListenStmt.conditionname) return _internal_conditionname(); } template inline PROTOBUF_ALWAYS_INLINE void ListenStmt::set_conditionname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.conditionname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ListenStmt.conditionname) } inline std::string* ListenStmt::mutable_conditionname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_conditionname(); // @@protoc_insertion_point(field_mutable:pg_query.ListenStmt.conditionname) return _s; } inline const std::string& ListenStmt::_internal_conditionname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.conditionname_.Get(); } inline void ListenStmt::_internal_set_conditionname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.conditionname_.Set(value, GetArena()); } inline std::string* ListenStmt::_internal_mutable_conditionname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.conditionname_.Mutable( GetArena()); } inline std::string* ListenStmt::release_conditionname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ListenStmt.conditionname) return _impl_.conditionname_.Release(); } inline void ListenStmt::set_allocated_conditionname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conditionname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.conditionname_.IsDefault()) { _impl_.conditionname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ListenStmt.conditionname) } // ------------------------------------------------------------------- // UnlistenStmt // string conditionname = 1 [json_name = "conditionname"]; inline void UnlistenStmt::clear_conditionname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conditionname_.ClearToEmpty(); } inline const std::string& UnlistenStmt::conditionname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.UnlistenStmt.conditionname) return _internal_conditionname(); } template inline PROTOBUF_ALWAYS_INLINE void UnlistenStmt::set_conditionname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.conditionname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.UnlistenStmt.conditionname) } inline std::string* UnlistenStmt::mutable_conditionname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_conditionname(); // @@protoc_insertion_point(field_mutable:pg_query.UnlistenStmt.conditionname) return _s; } inline const std::string& UnlistenStmt::_internal_conditionname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.conditionname_.Get(); } inline void UnlistenStmt::_internal_set_conditionname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.conditionname_.Set(value, GetArena()); } inline std::string* UnlistenStmt::_internal_mutable_conditionname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.conditionname_.Mutable( GetArena()); } inline std::string* UnlistenStmt::release_conditionname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.UnlistenStmt.conditionname) return _impl_.conditionname_.Release(); } inline void UnlistenStmt::set_allocated_conditionname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conditionname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.conditionname_.IsDefault()) { _impl_.conditionname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.UnlistenStmt.conditionname) } // ------------------------------------------------------------------- // TransactionStmt // .pg_query.TransactionStmtKind kind = 1 [json_name = "kind"]; inline void TransactionStmt::clear_kind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.kind_ = 0; } inline ::pg_query::TransactionStmtKind TransactionStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.kind) return _internal_kind(); } inline void TransactionStmt::set_kind(::pg_query::TransactionStmtKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.kind) } inline ::pg_query::TransactionStmtKind TransactionStmt::_internal_kind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::TransactionStmtKind>(_impl_.kind_); } inline void TransactionStmt::_internal_set_kind(::pg_query::TransactionStmtKind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.kind_ = value; } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int TransactionStmt::_internal_options_size() const { return _internal_options().size(); } inline int TransactionStmt::options_size() const { return _internal_options_size(); } inline void TransactionStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* TransactionStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.TransactionStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TransactionStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.TransactionStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& TransactionStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* TransactionStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.TransactionStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TransactionStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.TransactionStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& TransactionStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* TransactionStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // string savepoint_name = 3 [json_name = "savepoint_name"]; inline void TransactionStmt::clear_savepoint_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.savepoint_name_.ClearToEmpty(); } inline const std::string& TransactionStmt::savepoint_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.savepoint_name) return _internal_savepoint_name(); } template inline PROTOBUF_ALWAYS_INLINE void TransactionStmt::set_savepoint_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.savepoint_name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.savepoint_name) } inline std::string* TransactionStmt::mutable_savepoint_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_savepoint_name(); // @@protoc_insertion_point(field_mutable:pg_query.TransactionStmt.savepoint_name) return _s; } inline const std::string& TransactionStmt::_internal_savepoint_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.savepoint_name_.Get(); } inline void TransactionStmt::_internal_set_savepoint_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.savepoint_name_.Set(value, GetArena()); } inline std::string* TransactionStmt::_internal_mutable_savepoint_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.savepoint_name_.Mutable( GetArena()); } inline std::string* TransactionStmt::release_savepoint_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.TransactionStmt.savepoint_name) return _impl_.savepoint_name_.Release(); } inline void TransactionStmt::set_allocated_savepoint_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.savepoint_name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.savepoint_name_.IsDefault()) { _impl_.savepoint_name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.TransactionStmt.savepoint_name) } // string gid = 4 [json_name = "gid"]; inline void TransactionStmt::clear_gid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.gid_.ClearToEmpty(); } inline const std::string& TransactionStmt::gid() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.gid) return _internal_gid(); } template inline PROTOBUF_ALWAYS_INLINE void TransactionStmt::set_gid(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.gid_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.gid) } inline std::string* TransactionStmt::mutable_gid() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_gid(); // @@protoc_insertion_point(field_mutable:pg_query.TransactionStmt.gid) return _s; } inline const std::string& TransactionStmt::_internal_gid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.gid_.Get(); } inline void TransactionStmt::_internal_set_gid(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.gid_.Set(value, GetArena()); } inline std::string* TransactionStmt::_internal_mutable_gid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.gid_.Mutable( GetArena()); } inline std::string* TransactionStmt::release_gid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.TransactionStmt.gid) return _impl_.gid_.Release(); } inline void TransactionStmt::set_allocated_gid(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.gid_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.gid_.IsDefault()) { _impl_.gid_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.TransactionStmt.gid) } // bool chain = 5 [json_name = "chain"]; inline void TransactionStmt::clear_chain() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.chain_ = false; } inline bool TransactionStmt::chain() const { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.chain) return _internal_chain(); } inline void TransactionStmt::set_chain(bool value) { _internal_set_chain(value); // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.chain) } inline bool TransactionStmt::_internal_chain() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.chain_; } inline void TransactionStmt::_internal_set_chain(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.chain_ = value; } // int32 location = 6 [json_name = "location"]; inline void TransactionStmt::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t TransactionStmt::location() const { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.location) return _internal_location(); } inline void TransactionStmt::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.location) } inline ::int32_t TransactionStmt::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void TransactionStmt::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // CompositeTypeStmt // .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; inline bool CompositeTypeStmt::has_typevar() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.typevar_ != nullptr); return value; } inline void CompositeTypeStmt::clear_typevar() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.typevar_ != nullptr) _impl_.typevar_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& CompositeTypeStmt::_internal_typevar() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.typevar_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& CompositeTypeStmt::typevar() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CompositeTypeStmt.typevar) return _internal_typevar(); } inline void CompositeTypeStmt::unsafe_arena_set_allocated_typevar(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.typevar_); } _impl_.typevar_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CompositeTypeStmt.typevar) } inline ::pg_query::RangeVar* CompositeTypeStmt::release_typevar() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.typevar_; _impl_.typevar_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* CompositeTypeStmt::unsafe_arena_release_typevar() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CompositeTypeStmt.typevar) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.typevar_; _impl_.typevar_ = nullptr; return temp; } inline ::pg_query::RangeVar* CompositeTypeStmt::_internal_mutable_typevar() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.typevar_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.typevar_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.typevar_; } inline ::pg_query::RangeVar* CompositeTypeStmt::mutable_typevar() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_typevar(); // @@protoc_insertion_point(field_mutable:pg_query.CompositeTypeStmt.typevar) return _msg; } inline void CompositeTypeStmt::set_allocated_typevar(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.typevar_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.typevar_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@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 _internal_coldeflist().size(); } inline int CompositeTypeStmt::coldeflist_size() const { return _internal_coldeflist_size(); } inline void CompositeTypeStmt::clear_coldeflist() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.coldeflist_.Clear(); } inline ::pg_query::Node* CompositeTypeStmt::mutable_coldeflist(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CompositeTypeStmt.coldeflist) return _internal_mutable_coldeflist()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CompositeTypeStmt::mutable_coldeflist() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CompositeTypeStmt.coldeflist) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_coldeflist(); } inline const ::pg_query::Node& CompositeTypeStmt::coldeflist(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CompositeTypeStmt.coldeflist) return _internal_coldeflist().Get(index); } inline ::pg_query::Node* CompositeTypeStmt::add_coldeflist() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_coldeflist()->Add(); // @@protoc_insertion_point(field_add:pg_query.CompositeTypeStmt.coldeflist) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CompositeTypeStmt::coldeflist() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CompositeTypeStmt.coldeflist) return _internal_coldeflist(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CompositeTypeStmt::_internal_coldeflist() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.coldeflist_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CompositeTypeStmt::_internal_mutable_coldeflist() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.coldeflist_; } // ------------------------------------------------------------------- // CreateEnumStmt // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; inline int CreateEnumStmt::_internal_type_name_size() const { return _internal_type_name().size(); } inline int CreateEnumStmt::type_name_size() const { return _internal_type_name_size(); } inline void CreateEnumStmt::clear_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_name_.Clear(); } inline ::pg_query::Node* CreateEnumStmt::mutable_type_name(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateEnumStmt.type_name) return _internal_mutable_type_name()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateEnumStmt::mutable_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEnumStmt.type_name) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_type_name(); } inline const ::pg_query::Node& CreateEnumStmt::type_name(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateEnumStmt.type_name) return _internal_type_name().Get(index); } inline ::pg_query::Node* CreateEnumStmt::add_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_type_name()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateEnumStmt.type_name) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateEnumStmt::type_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateEnumStmt.type_name) return _internal_type_name(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateEnumStmt::_internal_type_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_name_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateEnumStmt::_internal_mutable_type_name() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.type_name_; } // repeated .pg_query.Node vals = 2 [json_name = "vals"]; inline int CreateEnumStmt::_internal_vals_size() const { return _internal_vals().size(); } inline int CreateEnumStmt::vals_size() const { return _internal_vals_size(); } inline void CreateEnumStmt::clear_vals() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.vals_.Clear(); } inline ::pg_query::Node* CreateEnumStmt::mutable_vals(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateEnumStmt.vals) return _internal_mutable_vals()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateEnumStmt::mutable_vals() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEnumStmt.vals) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_vals(); } inline const ::pg_query::Node& CreateEnumStmt::vals(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateEnumStmt.vals) return _internal_vals().Get(index); } inline ::pg_query::Node* CreateEnumStmt::add_vals() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_vals()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateEnumStmt.vals) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateEnumStmt::vals() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateEnumStmt.vals) return _internal_vals(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateEnumStmt::_internal_vals() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.vals_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateEnumStmt::_internal_mutable_vals() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.vals_; } // ------------------------------------------------------------------- // CreateRangeStmt // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; inline int CreateRangeStmt::_internal_type_name_size() const { return _internal_type_name().size(); } inline int CreateRangeStmt::type_name_size() const { return _internal_type_name_size(); } inline void CreateRangeStmt::clear_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_name_.Clear(); } inline ::pg_query::Node* CreateRangeStmt::mutable_type_name(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateRangeStmt.type_name) return _internal_mutable_type_name()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateRangeStmt::mutable_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateRangeStmt.type_name) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_type_name(); } inline const ::pg_query::Node& CreateRangeStmt::type_name(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateRangeStmt.type_name) return _internal_type_name().Get(index); } inline ::pg_query::Node* CreateRangeStmt::add_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_type_name()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateRangeStmt.type_name) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateRangeStmt::type_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateRangeStmt.type_name) return _internal_type_name(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateRangeStmt::_internal_type_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_name_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateRangeStmt::_internal_mutable_type_name() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.type_name_; } // repeated .pg_query.Node params = 2 [json_name = "params"]; inline int CreateRangeStmt::_internal_params_size() const { return _internal_params().size(); } inline int CreateRangeStmt::params_size() const { return _internal_params_size(); } inline void CreateRangeStmt::clear_params() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.params_.Clear(); } inline ::pg_query::Node* CreateRangeStmt::mutable_params(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateRangeStmt.params) return _internal_mutable_params()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateRangeStmt::mutable_params() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateRangeStmt.params) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_params(); } inline const ::pg_query::Node& CreateRangeStmt::params(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateRangeStmt.params) return _internal_params().Get(index); } inline ::pg_query::Node* CreateRangeStmt::add_params() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_params()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateRangeStmt.params) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateRangeStmt::params() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateRangeStmt.params) return _internal_params(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateRangeStmt::_internal_params() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.params_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateRangeStmt::_internal_mutable_params() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.params_; } // ------------------------------------------------------------------- // AlterEnumStmt // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; inline int AlterEnumStmt::_internal_type_name_size() const { return _internal_type_name().size(); } inline int AlterEnumStmt::type_name_size() const { return _internal_type_name_size(); } inline void AlterEnumStmt::clear_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.type_name_.Clear(); } inline ::pg_query::Node* AlterEnumStmt::mutable_type_name(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterEnumStmt.type_name) return _internal_mutable_type_name()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterEnumStmt::mutable_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterEnumStmt.type_name) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_type_name(); } inline const ::pg_query::Node& AlterEnumStmt::type_name(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.type_name) return _internal_type_name().Get(index); } inline ::pg_query::Node* AlterEnumStmt::add_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_type_name()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterEnumStmt.type_name) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterEnumStmt::type_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterEnumStmt.type_name) return _internal_type_name(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterEnumStmt::_internal_type_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.type_name_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterEnumStmt::_internal_mutable_type_name() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.type_name_; } // string old_val = 2 [json_name = "oldVal"]; inline void AlterEnumStmt::clear_old_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.old_val_.ClearToEmpty(); } inline const std::string& AlterEnumStmt::old_val() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.old_val) return _internal_old_val(); } template inline PROTOBUF_ALWAYS_INLINE void AlterEnumStmt::set_old_val(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.old_val_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.old_val) } inline std::string* AlterEnumStmt::mutable_old_val() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_old_val(); // @@protoc_insertion_point(field_mutable:pg_query.AlterEnumStmt.old_val) return _s; } inline const std::string& AlterEnumStmt::_internal_old_val() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.old_val_.Get(); } inline void AlterEnumStmt::_internal_set_old_val(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.old_val_.Set(value, GetArena()); } inline std::string* AlterEnumStmt::_internal_mutable_old_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.old_val_.Mutable( GetArena()); } inline std::string* AlterEnumStmt::release_old_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterEnumStmt.old_val) return _impl_.old_val_.Release(); } inline void AlterEnumStmt::set_allocated_old_val(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.old_val_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.old_val_.IsDefault()) { _impl_.old_val_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterEnumStmt.old_val) } // string new_val = 3 [json_name = "newVal"]; inline void AlterEnumStmt::clear_new_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.new_val_.ClearToEmpty(); } inline const std::string& AlterEnumStmt::new_val() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.new_val) return _internal_new_val(); } template inline PROTOBUF_ALWAYS_INLINE void AlterEnumStmt::set_new_val(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.new_val_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.new_val) } inline std::string* AlterEnumStmt::mutable_new_val() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_new_val(); // @@protoc_insertion_point(field_mutable:pg_query.AlterEnumStmt.new_val) return _s; } inline const std::string& AlterEnumStmt::_internal_new_val() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.new_val_.Get(); } inline void AlterEnumStmt::_internal_set_new_val(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.new_val_.Set(value, GetArena()); } inline std::string* AlterEnumStmt::_internal_mutable_new_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.new_val_.Mutable( GetArena()); } inline std::string* AlterEnumStmt::release_new_val() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterEnumStmt.new_val) return _impl_.new_val_.Release(); } inline void AlterEnumStmt::set_allocated_new_val(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.new_val_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.new_val_.IsDefault()) { _impl_.new_val_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.new_val_neighbor_.ClearToEmpty(); } inline const std::string& AlterEnumStmt::new_val_neighbor() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.new_val_neighbor) return _internal_new_val_neighbor(); } template inline PROTOBUF_ALWAYS_INLINE void AlterEnumStmt::set_new_val_neighbor(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.new_val_neighbor_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.new_val_neighbor) } inline std::string* AlterEnumStmt::mutable_new_val_neighbor() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_new_val_neighbor(); // @@protoc_insertion_point(field_mutable:pg_query.AlterEnumStmt.new_val_neighbor) return _s; } inline const std::string& AlterEnumStmt::_internal_new_val_neighbor() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.new_val_neighbor_.Get(); } inline void AlterEnumStmt::_internal_set_new_val_neighbor(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.new_val_neighbor_.Set(value, GetArena()); } inline std::string* AlterEnumStmt::_internal_mutable_new_val_neighbor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.new_val_neighbor_.Mutable( GetArena()); } inline std::string* AlterEnumStmt::release_new_val_neighbor() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterEnumStmt.new_val_neighbor) return _impl_.new_val_neighbor_.Release(); } inline void AlterEnumStmt::set_allocated_new_val_neighbor(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.new_val_neighbor_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.new_val_neighbor_.IsDefault()) { _impl_.new_val_neighbor_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.new_val_is_after_ = false; } 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::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) } inline bool AlterEnumStmt::_internal_new_val_is_after() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.new_val_is_after_; } inline void AlterEnumStmt::_internal_set_new_val_is_after(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.new_val_is_after_ = value; } // bool skip_if_new_val_exists = 6 [json_name = "skipIfNewValExists"]; inline void AlterEnumStmt::clear_skip_if_new_val_exists() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.skip_if_new_val_exists_ = false; } 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::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) } inline bool AlterEnumStmt::_internal_skip_if_new_val_exists() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.skip_if_new_val_exists_; } inline void AlterEnumStmt::_internal_set_skip_if_new_val_exists(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.skip_if_new_val_exists_ = value; } // ------------------------------------------------------------------- // ViewStmt // .pg_query.RangeVar view = 1 [json_name = "view"]; inline bool ViewStmt::has_view() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.view_ != nullptr); return value; } inline void ViewStmt::clear_view() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.view_ != nullptr) _impl_.view_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& ViewStmt::_internal_view() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.view_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& ViewStmt::view() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.view) return _internal_view(); } inline void ViewStmt::unsafe_arena_set_allocated_view(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.view_); } _impl_.view_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ViewStmt.view) } inline ::pg_query::RangeVar* ViewStmt::release_view() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.view_; _impl_.view_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* ViewStmt::unsafe_arena_release_view() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ViewStmt.view) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.view_; _impl_.view_ = nullptr; return temp; } inline ::pg_query::RangeVar* ViewStmt::_internal_mutable_view() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.view_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.view_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.view_; } inline ::pg_query::RangeVar* ViewStmt::mutable_view() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_view(); // @@protoc_insertion_point(field_mutable:pg_query.ViewStmt.view) return _msg; } inline void ViewStmt::set_allocated_view(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.view_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.view_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@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 _internal_aliases().size(); } inline int ViewStmt::aliases_size() const { return _internal_aliases_size(); } inline void ViewStmt::clear_aliases() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.aliases_.Clear(); } inline ::pg_query::Node* ViewStmt::mutable_aliases(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ViewStmt.aliases) return _internal_mutable_aliases()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ViewStmt::mutable_aliases() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ViewStmt.aliases) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_aliases(); } inline const ::pg_query::Node& ViewStmt::aliases(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.aliases) return _internal_aliases().Get(index); } inline ::pg_query::Node* ViewStmt::add_aliases() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_aliases()->Add(); // @@protoc_insertion_point(field_add:pg_query.ViewStmt.aliases) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ViewStmt::aliases() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ViewStmt.aliases) return _internal_aliases(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ViewStmt::_internal_aliases() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.aliases_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ViewStmt::_internal_mutable_aliases() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.aliases_; } // .pg_query.Node query = 3 [json_name = "query"]; inline bool ViewStmt::has_query() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.query_ != nullptr); return value; } inline void ViewStmt::clear_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.query_ != nullptr) _impl_.query_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& ViewStmt::_internal_query() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.query_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ViewStmt::query() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.query) return _internal_query(); } inline void ViewStmt::unsafe_arena_set_allocated_query(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.query_); } _impl_.query_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ViewStmt.query) } inline ::pg_query::Node* ViewStmt::release_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.query_; _impl_.query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* ViewStmt::unsafe_arena_release_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ViewStmt.query) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; return temp; } inline ::pg_query::Node* ViewStmt::_internal_mutable_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.query_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.query_; } inline ::pg_query::Node* ViewStmt::mutable_query() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_query(); // @@protoc_insertion_point(field_mutable:pg_query.ViewStmt.query) return _msg; } inline void ViewStmt::set_allocated_query(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.query_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.query_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ViewStmt.query) } // bool replace = 4 [json_name = "replace"]; inline void ViewStmt::clear_replace() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.replace_ = false; } inline bool ViewStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.replace) return _internal_replace(); } inline void ViewStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.ViewStmt.replace) } inline bool ViewStmt::_internal_replace() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.replace_; } inline void ViewStmt::_internal_set_replace(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.replace_ = value; } // repeated .pg_query.Node options = 5 [json_name = "options"]; inline int ViewStmt::_internal_options_size() const { return _internal_options().size(); } inline int ViewStmt::options_size() const { return _internal_options_size(); } inline void ViewStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* ViewStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ViewStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ViewStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ViewStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& ViewStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* ViewStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.ViewStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ViewStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ViewStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ViewStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ViewStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // .pg_query.ViewCheckOption with_check_option = 6 [json_name = "withCheckOption"]; inline void ViewStmt::clear_with_check_option() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.with_check_option_ = 0; } 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::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) } inline ::pg_query::ViewCheckOption ViewStmt::_internal_with_check_option() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ViewCheckOption>(_impl_.with_check_option_); } inline void ViewStmt::_internal_set_with_check_option(::pg_query::ViewCheckOption value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.with_check_option_ = value; } // ------------------------------------------------------------------- // LoadStmt // string filename = 1 [json_name = "filename"]; inline void LoadStmt::clear_filename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.filename_.ClearToEmpty(); } inline const std::string& LoadStmt::filename() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.LoadStmt.filename) return _internal_filename(); } template inline PROTOBUF_ALWAYS_INLINE void LoadStmt::set_filename(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.filename_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.LoadStmt.filename) } inline std::string* LoadStmt::mutable_filename() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_filename(); // @@protoc_insertion_point(field_mutable:pg_query.LoadStmt.filename) return _s; } inline const std::string& LoadStmt::_internal_filename() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.filename_.Get(); } inline void LoadStmt::_internal_set_filename(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.filename_.Set(value, GetArena()); } inline std::string* LoadStmt::_internal_mutable_filename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.filename_.Mutable( GetArena()); } inline std::string* LoadStmt::release_filename() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.LoadStmt.filename) return _impl_.filename_.Release(); } inline void LoadStmt::set_allocated_filename(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.filename_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.filename_.IsDefault()) { _impl_.filename_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.LoadStmt.filename) } // ------------------------------------------------------------------- // CreatedbStmt // string dbname = 1 [json_name = "dbname"]; inline void CreatedbStmt::clear_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.dbname_.ClearToEmpty(); } inline const std::string& CreatedbStmt::dbname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreatedbStmt.dbname) return _internal_dbname(); } template inline PROTOBUF_ALWAYS_INLINE void CreatedbStmt::set_dbname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.dbname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreatedbStmt.dbname) } inline std::string* CreatedbStmt::mutable_dbname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_dbname(); // @@protoc_insertion_point(field_mutable:pg_query.CreatedbStmt.dbname) return _s; } inline const std::string& CreatedbStmt::_internal_dbname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.dbname_.Get(); } inline void CreatedbStmt::_internal_set_dbname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.dbname_.Set(value, GetArena()); } inline std::string* CreatedbStmt::_internal_mutable_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.dbname_.Mutable( GetArena()); } inline std::string* CreatedbStmt::release_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreatedbStmt.dbname) return _impl_.dbname_.Release(); } inline void CreatedbStmt::set_allocated_dbname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.dbname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.dbname_.IsDefault()) { _impl_.dbname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_options().size(); } inline int CreatedbStmt::options_size() const { return _internal_options_size(); } inline void CreatedbStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* CreatedbStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreatedbStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreatedbStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatedbStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& CreatedbStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreatedbStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* CreatedbStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreatedbStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreatedbStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreatedbStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreatedbStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreatedbStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // AlterDatabaseStmt // string dbname = 1 [json_name = "dbname"]; inline void AlterDatabaseStmt::clear_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.dbname_.ClearToEmpty(); } inline const std::string& AlterDatabaseStmt::dbname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseStmt.dbname) return _internal_dbname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterDatabaseStmt::set_dbname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.dbname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterDatabaseStmt.dbname) } inline std::string* AlterDatabaseStmt::mutable_dbname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_dbname(); // @@protoc_insertion_point(field_mutable:pg_query.AlterDatabaseStmt.dbname) return _s; } inline const std::string& AlterDatabaseStmt::_internal_dbname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.dbname_.Get(); } inline void AlterDatabaseStmt::_internal_set_dbname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.dbname_.Set(value, GetArena()); } inline std::string* AlterDatabaseStmt::_internal_mutable_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.dbname_.Mutable( GetArena()); } inline std::string* AlterDatabaseStmt::release_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterDatabaseStmt.dbname) return _impl_.dbname_.Release(); } inline void AlterDatabaseStmt::set_allocated_dbname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.dbname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.dbname_.IsDefault()) { _impl_.dbname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_options().size(); } inline int AlterDatabaseStmt::options_size() const { return _internal_options_size(); } inline void AlterDatabaseStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* AlterDatabaseStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterDatabaseStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterDatabaseStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterDatabaseStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& AlterDatabaseStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* AlterDatabaseStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterDatabaseStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterDatabaseStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterDatabaseStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterDatabaseStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterDatabaseStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // AlterDatabaseRefreshCollStmt // string dbname = 1 [json_name = "dbname"]; inline void AlterDatabaseRefreshCollStmt::clear_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.dbname_.ClearToEmpty(); } inline const std::string& AlterDatabaseRefreshCollStmt::dbname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseRefreshCollStmt.dbname) return _internal_dbname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterDatabaseRefreshCollStmt::set_dbname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.dbname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterDatabaseRefreshCollStmt.dbname) } inline std::string* AlterDatabaseRefreshCollStmt::mutable_dbname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_dbname(); // @@protoc_insertion_point(field_mutable:pg_query.AlterDatabaseRefreshCollStmt.dbname) return _s; } inline const std::string& AlterDatabaseRefreshCollStmt::_internal_dbname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.dbname_.Get(); } inline void AlterDatabaseRefreshCollStmt::_internal_set_dbname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.dbname_.Set(value, GetArena()); } inline std::string* AlterDatabaseRefreshCollStmt::_internal_mutable_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.dbname_.Mutable( GetArena()); } inline std::string* AlterDatabaseRefreshCollStmt::release_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterDatabaseRefreshCollStmt.dbname) return _impl_.dbname_.Release(); } inline void AlterDatabaseRefreshCollStmt::set_allocated_dbname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.dbname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.dbname_.IsDefault()) { _impl_.dbname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDatabaseRefreshCollStmt.dbname) } // ------------------------------------------------------------------- // AlterDatabaseSetStmt // string dbname = 1 [json_name = "dbname"]; inline void AlterDatabaseSetStmt::clear_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.dbname_.ClearToEmpty(); } inline const std::string& AlterDatabaseSetStmt::dbname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseSetStmt.dbname) return _internal_dbname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterDatabaseSetStmt::set_dbname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.dbname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterDatabaseSetStmt.dbname) } inline std::string* AlterDatabaseSetStmt::mutable_dbname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_dbname(); // @@protoc_insertion_point(field_mutable:pg_query.AlterDatabaseSetStmt.dbname) return _s; } inline const std::string& AlterDatabaseSetStmt::_internal_dbname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.dbname_.Get(); } inline void AlterDatabaseSetStmt::_internal_set_dbname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.dbname_.Set(value, GetArena()); } inline std::string* AlterDatabaseSetStmt::_internal_mutable_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.dbname_.Mutable( GetArena()); } inline std::string* AlterDatabaseSetStmt::release_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterDatabaseSetStmt.dbname) return _impl_.dbname_.Release(); } inline void AlterDatabaseSetStmt::set_allocated_dbname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.dbname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.dbname_.IsDefault()) { _impl_.dbname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDatabaseSetStmt.dbname) } // .pg_query.VariableSetStmt setstmt = 2 [json_name = "setstmt"]; inline bool AlterDatabaseSetStmt::has_setstmt() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.setstmt_ != nullptr); return value; } inline void AlterDatabaseSetStmt::clear_setstmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.setstmt_ != nullptr) _impl_.setstmt_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::VariableSetStmt& AlterDatabaseSetStmt::_internal_setstmt() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::VariableSetStmt* p = _impl_.setstmt_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_VariableSetStmt_default_instance_); } inline const ::pg_query::VariableSetStmt& AlterDatabaseSetStmt::setstmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseSetStmt.setstmt) return _internal_setstmt(); } inline void AlterDatabaseSetStmt::unsafe_arena_set_allocated_setstmt(::pg_query::VariableSetStmt* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.setstmt_); } _impl_.setstmt_ = reinterpret_cast<::pg_query::VariableSetStmt*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterDatabaseSetStmt.setstmt) } inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::release_setstmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::VariableSetStmt* released = _impl_.setstmt_; _impl_.setstmt_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::unsafe_arena_release_setstmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterDatabaseSetStmt.setstmt) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::VariableSetStmt* temp = _impl_.setstmt_; _impl_.setstmt_ = nullptr; return temp; } inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::_internal_mutable_setstmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.setstmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::VariableSetStmt>(GetArena()); _impl_.setstmt_ = reinterpret_cast<::pg_query::VariableSetStmt*>(p); } return _impl_.setstmt_; } inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::mutable_setstmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::VariableSetStmt* _msg = _internal_mutable_setstmt(); // @@protoc_insertion_point(field_mutable:pg_query.AlterDatabaseSetStmt.setstmt) return _msg; } inline void AlterDatabaseSetStmt::set_allocated_setstmt(::pg_query::VariableSetStmt* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::VariableSetStmt*>(_impl_.setstmt_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::VariableSetStmt*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.setstmt_ = reinterpret_cast<::pg_query::VariableSetStmt*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDatabaseSetStmt.setstmt) } // ------------------------------------------------------------------- // DropdbStmt // string dbname = 1 [json_name = "dbname"]; inline void DropdbStmt::clear_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.dbname_.ClearToEmpty(); } inline const std::string& DropdbStmt::dbname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DropdbStmt.dbname) return _internal_dbname(); } template inline PROTOBUF_ALWAYS_INLINE void DropdbStmt::set_dbname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.dbname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.DropdbStmt.dbname) } inline std::string* DropdbStmt::mutable_dbname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_dbname(); // @@protoc_insertion_point(field_mutable:pg_query.DropdbStmt.dbname) return _s; } inline const std::string& DropdbStmt::_internal_dbname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.dbname_.Get(); } inline void DropdbStmt::_internal_set_dbname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.dbname_.Set(value, GetArena()); } inline std::string* DropdbStmt::_internal_mutable_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.dbname_.Mutable( GetArena()); } inline std::string* DropdbStmt::release_dbname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DropdbStmt.dbname) return _impl_.dbname_.Release(); } inline void DropdbStmt::set_allocated_dbname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.dbname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.dbname_.IsDefault()) { _impl_.dbname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.DropdbStmt.dbname) } // bool missing_ok = 2 [json_name = "missing_ok"]; inline void DropdbStmt::clear_missing_ok() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.missing_ok_ = false; } inline bool DropdbStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropdbStmt.missing_ok) return _internal_missing_ok(); } inline void DropdbStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropdbStmt.missing_ok) } inline bool DropdbStmt::_internal_missing_ok() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.missing_ok_; } inline void DropdbStmt::_internal_set_missing_ok(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.missing_ok_ = value; } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int DropdbStmt::_internal_options_size() const { return _internal_options().size(); } inline int DropdbStmt::options_size() const { return _internal_options_size(); } inline void DropdbStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* DropdbStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.DropdbStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DropdbStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.DropdbStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& DropdbStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DropdbStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* DropdbStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.DropdbStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DropdbStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.DropdbStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DropdbStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DropdbStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // AlterSystemStmt // .pg_query.VariableSetStmt setstmt = 1 [json_name = "setstmt"]; inline bool AlterSystemStmt::has_setstmt() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.setstmt_ != nullptr); return value; } inline void AlterSystemStmt::clear_setstmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.setstmt_ != nullptr) _impl_.setstmt_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::VariableSetStmt& AlterSystemStmt::_internal_setstmt() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::VariableSetStmt* p = _impl_.setstmt_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_VariableSetStmt_default_instance_); } inline const ::pg_query::VariableSetStmt& AlterSystemStmt::setstmt() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterSystemStmt.setstmt) return _internal_setstmt(); } inline void AlterSystemStmt::unsafe_arena_set_allocated_setstmt(::pg_query::VariableSetStmt* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.setstmt_); } _impl_.setstmt_ = reinterpret_cast<::pg_query::VariableSetStmt*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterSystemStmt.setstmt) } inline ::pg_query::VariableSetStmt* AlterSystemStmt::release_setstmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::VariableSetStmt* released = _impl_.setstmt_; _impl_.setstmt_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::VariableSetStmt* AlterSystemStmt::unsafe_arena_release_setstmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterSystemStmt.setstmt) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::VariableSetStmt* temp = _impl_.setstmt_; _impl_.setstmt_ = nullptr; return temp; } inline ::pg_query::VariableSetStmt* AlterSystemStmt::_internal_mutable_setstmt() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.setstmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::VariableSetStmt>(GetArena()); _impl_.setstmt_ = reinterpret_cast<::pg_query::VariableSetStmt*>(p); } return _impl_.setstmt_; } inline ::pg_query::VariableSetStmt* AlterSystemStmt::mutable_setstmt() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::VariableSetStmt* _msg = _internal_mutable_setstmt(); // @@protoc_insertion_point(field_mutable:pg_query.AlterSystemStmt.setstmt) return _msg; } inline void AlterSystemStmt::set_allocated_setstmt(::pg_query::VariableSetStmt* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::VariableSetStmt*>(_impl_.setstmt_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::VariableSetStmt*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.setstmt_ = reinterpret_cast<::pg_query::VariableSetStmt*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterSystemStmt.setstmt) } // ------------------------------------------------------------------- // ClusterStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool ClusterStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void ClusterStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& ClusterStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& ClusterStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ClusterStmt.relation) return _internal_relation(); } inline void ClusterStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ClusterStmt.relation) } inline ::pg_query::RangeVar* ClusterStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* ClusterStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ClusterStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* ClusterStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* ClusterStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.ClusterStmt.relation) return _msg; } inline void ClusterStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ClusterStmt.relation) } // string indexname = 2 [json_name = "indexname"]; inline void ClusterStmt::clear_indexname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.indexname_.ClearToEmpty(); } inline const std::string& ClusterStmt::indexname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ClusterStmt.indexname) return _internal_indexname(); } template inline PROTOBUF_ALWAYS_INLINE void ClusterStmt::set_indexname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.indexname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ClusterStmt.indexname) } inline std::string* ClusterStmt::mutable_indexname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_indexname(); // @@protoc_insertion_point(field_mutable:pg_query.ClusterStmt.indexname) return _s; } inline const std::string& ClusterStmt::_internal_indexname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.indexname_.Get(); } inline void ClusterStmt::_internal_set_indexname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.indexname_.Set(value, GetArena()); } inline std::string* ClusterStmt::_internal_mutable_indexname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.indexname_.Mutable( GetArena()); } inline std::string* ClusterStmt::release_indexname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ClusterStmt.indexname) return _impl_.indexname_.Release(); } inline void ClusterStmt::set_allocated_indexname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.indexname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.indexname_.IsDefault()) { _impl_.indexname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ClusterStmt.indexname) } // repeated .pg_query.Node params = 3 [json_name = "params"]; inline int ClusterStmt::_internal_params_size() const { return _internal_params().size(); } inline int ClusterStmt::params_size() const { return _internal_params_size(); } inline void ClusterStmt::clear_params() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.params_.Clear(); } inline ::pg_query::Node* ClusterStmt::mutable_params(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ClusterStmt.params) return _internal_mutable_params()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ClusterStmt::mutable_params() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ClusterStmt.params) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_params(); } inline const ::pg_query::Node& ClusterStmt::params(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ClusterStmt.params) return _internal_params().Get(index); } inline ::pg_query::Node* ClusterStmt::add_params() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_params()->Add(); // @@protoc_insertion_point(field_add:pg_query.ClusterStmt.params) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ClusterStmt::params() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ClusterStmt.params) return _internal_params(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ClusterStmt::_internal_params() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.params_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ClusterStmt::_internal_mutable_params() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.params_; } // ------------------------------------------------------------------- // VacuumStmt // repeated .pg_query.Node options = 1 [json_name = "options"]; inline int VacuumStmt::_internal_options_size() const { return _internal_options().size(); } inline int VacuumStmt::options_size() const { return _internal_options_size(); } inline void VacuumStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* VacuumStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.VacuumStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* VacuumStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.VacuumStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& VacuumStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.VacuumStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* VacuumStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.VacuumStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& VacuumStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.VacuumStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& VacuumStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* VacuumStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // repeated .pg_query.Node rels = 2 [json_name = "rels"]; inline int VacuumStmt::_internal_rels_size() const { return _internal_rels().size(); } inline int VacuumStmt::rels_size() const { return _internal_rels_size(); } inline void VacuumStmt::clear_rels() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.rels_.Clear(); } inline ::pg_query::Node* VacuumStmt::mutable_rels(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.VacuumStmt.rels) return _internal_mutable_rels()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* VacuumStmt::mutable_rels() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.VacuumStmt.rels) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_rels(); } inline const ::pg_query::Node& VacuumStmt::rels(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.VacuumStmt.rels) return _internal_rels().Get(index); } inline ::pg_query::Node* VacuumStmt::add_rels() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_rels()->Add(); // @@protoc_insertion_point(field_add:pg_query.VacuumStmt.rels) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& VacuumStmt::rels() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.VacuumStmt.rels) return _internal_rels(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& VacuumStmt::_internal_rels() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.rels_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* VacuumStmt::_internal_mutable_rels() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.rels_; } // bool is_vacuumcmd = 3 [json_name = "is_vacuumcmd"]; inline void VacuumStmt::clear_is_vacuumcmd() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_vacuumcmd_ = false; } inline bool VacuumStmt::is_vacuumcmd() const { // @@protoc_insertion_point(field_get:pg_query.VacuumStmt.is_vacuumcmd) return _internal_is_vacuumcmd(); } inline void VacuumStmt::set_is_vacuumcmd(bool value) { _internal_set_is_vacuumcmd(value); // @@protoc_insertion_point(field_set:pg_query.VacuumStmt.is_vacuumcmd) } inline bool VacuumStmt::_internal_is_vacuumcmd() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_vacuumcmd_; } inline void VacuumStmt::_internal_set_is_vacuumcmd(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_vacuumcmd_ = value; } // ------------------------------------------------------------------- // VacuumRelation // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool VacuumRelation::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void VacuumRelation::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& VacuumRelation::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& VacuumRelation::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.VacuumRelation.relation) return _internal_relation(); } inline void VacuumRelation::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.VacuumRelation.relation) } inline ::pg_query::RangeVar* VacuumRelation::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* VacuumRelation::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.VacuumRelation.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* VacuumRelation::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* VacuumRelation::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.VacuumRelation.relation) return _msg; } inline void VacuumRelation::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.VacuumRelation.relation) } // uint32 oid = 2 [json_name = "oid"]; inline void VacuumRelation::clear_oid() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.oid_ = 0u; } inline ::uint32_t VacuumRelation::oid() const { // @@protoc_insertion_point(field_get:pg_query.VacuumRelation.oid) return _internal_oid(); } inline void VacuumRelation::set_oid(::uint32_t value) { _internal_set_oid(value); // @@protoc_insertion_point(field_set:pg_query.VacuumRelation.oid) } inline ::uint32_t VacuumRelation::_internal_oid() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.oid_; } inline void VacuumRelation::_internal_set_oid(::uint32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.oid_ = value; } // repeated .pg_query.Node va_cols = 3 [json_name = "va_cols"]; inline int VacuumRelation::_internal_va_cols_size() const { return _internal_va_cols().size(); } inline int VacuumRelation::va_cols_size() const { return _internal_va_cols_size(); } inline void VacuumRelation::clear_va_cols() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.va_cols_.Clear(); } inline ::pg_query::Node* VacuumRelation::mutable_va_cols(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.VacuumRelation.va_cols) return _internal_mutable_va_cols()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* VacuumRelation::mutable_va_cols() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.VacuumRelation.va_cols) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_va_cols(); } inline const ::pg_query::Node& VacuumRelation::va_cols(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.VacuumRelation.va_cols) return _internal_va_cols().Get(index); } inline ::pg_query::Node* VacuumRelation::add_va_cols() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_va_cols()->Add(); // @@protoc_insertion_point(field_add:pg_query.VacuumRelation.va_cols) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& VacuumRelation::va_cols() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.VacuumRelation.va_cols) return _internal_va_cols(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& VacuumRelation::_internal_va_cols() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.va_cols_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* VacuumRelation::_internal_mutable_va_cols() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.va_cols_; } // ------------------------------------------------------------------- // ExplainStmt // .pg_query.Node query = 1 [json_name = "query"]; inline bool ExplainStmt::has_query() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.query_ != nullptr); return value; } inline void ExplainStmt::clear_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.query_ != nullptr) _impl_.query_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& ExplainStmt::_internal_query() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.query_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ExplainStmt::query() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ExplainStmt.query) return _internal_query(); } inline void ExplainStmt::unsafe_arena_set_allocated_query(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.query_); } _impl_.query_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ExplainStmt.query) } inline ::pg_query::Node* ExplainStmt::release_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.query_; _impl_.query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* ExplainStmt::unsafe_arena_release_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ExplainStmt.query) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; return temp; } inline ::pg_query::Node* ExplainStmt::_internal_mutable_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.query_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.query_; } inline ::pg_query::Node* ExplainStmt::mutable_query() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_query(); // @@protoc_insertion_point(field_mutable:pg_query.ExplainStmt.query) return _msg; } inline void ExplainStmt::set_allocated_query(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.query_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.query_ = reinterpret_cast<::pg_query::Node*>(value); // @@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 _internal_options().size(); } inline int ExplainStmt::options_size() const { return _internal_options_size(); } inline void ExplainStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* ExplainStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ExplainStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ExplainStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ExplainStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& ExplainStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ExplainStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* ExplainStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.ExplainStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ExplainStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ExplainStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ExplainStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ExplainStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // CreateTableAsStmt // .pg_query.Node query = 1 [json_name = "query"]; inline bool CreateTableAsStmt::has_query() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.query_ != nullptr); return value; } inline void CreateTableAsStmt::clear_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.query_ != nullptr) _impl_.query_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& CreateTableAsStmt::_internal_query() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.query_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CreateTableAsStmt::query() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.query) return _internal_query(); } inline void CreateTableAsStmt::unsafe_arena_set_allocated_query(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.query_); } _impl_.query_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTableAsStmt.query) } inline ::pg_query::Node* CreateTableAsStmt::release_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.query_; _impl_.query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* CreateTableAsStmt::unsafe_arena_release_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateTableAsStmt.query) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; return temp; } inline ::pg_query::Node* CreateTableAsStmt::_internal_mutable_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.query_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.query_; } inline ::pg_query::Node* CreateTableAsStmt::mutable_query() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_query(); // @@protoc_insertion_point(field_mutable:pg_query.CreateTableAsStmt.query) return _msg; } inline void CreateTableAsStmt::set_allocated_query(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.query_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.query_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableAsStmt.query) } // .pg_query.IntoClause into = 2 [json_name = "into"]; inline bool CreateTableAsStmt::has_into() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.into_ != nullptr); return value; } inline void CreateTableAsStmt::clear_into() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.into_ != nullptr) _impl_.into_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::IntoClause& CreateTableAsStmt::_internal_into() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::IntoClause* p = _impl_.into_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_IntoClause_default_instance_); } inline const ::pg_query::IntoClause& CreateTableAsStmt::into() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.into) return _internal_into(); } inline void CreateTableAsStmt::unsafe_arena_set_allocated_into(::pg_query::IntoClause* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.into_); } _impl_.into_ = reinterpret_cast<::pg_query::IntoClause*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTableAsStmt.into) } inline ::pg_query::IntoClause* CreateTableAsStmt::release_into() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::IntoClause* released = _impl_.into_; _impl_.into_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::IntoClause* CreateTableAsStmt::unsafe_arena_release_into() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateTableAsStmt.into) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::IntoClause* temp = _impl_.into_; _impl_.into_ = nullptr; return temp; } inline ::pg_query::IntoClause* CreateTableAsStmt::_internal_mutable_into() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.into_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::IntoClause>(GetArena()); _impl_.into_ = reinterpret_cast<::pg_query::IntoClause*>(p); } return _impl_.into_; } inline ::pg_query::IntoClause* CreateTableAsStmt::mutable_into() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::IntoClause* _msg = _internal_mutable_into(); // @@protoc_insertion_point(field_mutable:pg_query.CreateTableAsStmt.into) return _msg; } inline void CreateTableAsStmt::set_allocated_into(::pg_query::IntoClause* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::IntoClause*>(_impl_.into_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::IntoClause*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.into_ = reinterpret_cast<::pg_query::IntoClause*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableAsStmt.into) } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; inline void CreateTableAsStmt::clear_objtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.objtype_ = 0; } inline ::pg_query::ObjectType CreateTableAsStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.objtype) return _internal_objtype(); } inline void CreateTableAsStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.CreateTableAsStmt.objtype) } inline ::pg_query::ObjectType CreateTableAsStmt::_internal_objtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ObjectType>(_impl_.objtype_); } inline void CreateTableAsStmt::_internal_set_objtype(::pg_query::ObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.objtype_ = value; } // bool is_select_into = 4 [json_name = "is_select_into"]; inline void CreateTableAsStmt::clear_is_select_into() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.is_select_into_ = false; } 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::set_is_select_into(bool value) { _internal_set_is_select_into(value); // @@protoc_insertion_point(field_set:pg_query.CreateTableAsStmt.is_select_into) } inline bool CreateTableAsStmt::_internal_is_select_into() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.is_select_into_; } inline void CreateTableAsStmt::_internal_set_is_select_into(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.is_select_into_ = value; } // bool if_not_exists = 5 [json_name = "if_not_exists"]; inline void CreateTableAsStmt::clear_if_not_exists() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.if_not_exists_ = false; } 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::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateTableAsStmt.if_not_exists) } inline bool CreateTableAsStmt::_internal_if_not_exists() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.if_not_exists_; } inline void CreateTableAsStmt::_internal_set_if_not_exists(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.if_not_exists_ = value; } // ------------------------------------------------------------------- // RefreshMatViewStmt // bool concurrent = 1 [json_name = "concurrent"]; inline void RefreshMatViewStmt::clear_concurrent() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.concurrent_ = false; } inline bool RefreshMatViewStmt::concurrent() const { // @@protoc_insertion_point(field_get:pg_query.RefreshMatViewStmt.concurrent) return _internal_concurrent(); } inline void RefreshMatViewStmt::set_concurrent(bool value) { _internal_set_concurrent(value); // @@protoc_insertion_point(field_set:pg_query.RefreshMatViewStmt.concurrent) } inline bool RefreshMatViewStmt::_internal_concurrent() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.concurrent_; } inline void RefreshMatViewStmt::_internal_set_concurrent(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.concurrent_ = value; } // bool skip_data = 2 [json_name = "skipData"]; inline void RefreshMatViewStmt::clear_skip_data() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.skip_data_ = false; } inline bool RefreshMatViewStmt::skip_data() const { // @@protoc_insertion_point(field_get:pg_query.RefreshMatViewStmt.skip_data) return _internal_skip_data(); } inline void RefreshMatViewStmt::set_skip_data(bool value) { _internal_set_skip_data(value); // @@protoc_insertion_point(field_set:pg_query.RefreshMatViewStmt.skip_data) } inline bool RefreshMatViewStmt::_internal_skip_data() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.skip_data_; } inline void RefreshMatViewStmt::_internal_set_skip_data(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.skip_data_ = value; } // .pg_query.RangeVar relation = 3 [json_name = "relation"]; inline bool RefreshMatViewStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void RefreshMatViewStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& RefreshMatViewStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& RefreshMatViewStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.RefreshMatViewStmt.relation) return _internal_relation(); } inline void RefreshMatViewStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RefreshMatViewStmt.relation) } inline ::pg_query::RangeVar* RefreshMatViewStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* RefreshMatViewStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.RefreshMatViewStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* RefreshMatViewStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* RefreshMatViewStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.RefreshMatViewStmt.relation) return _msg; } inline void RefreshMatViewStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.RefreshMatViewStmt.relation) } // ------------------------------------------------------------------- // CheckPointStmt // ------------------------------------------------------------------- // DiscardStmt // .pg_query.DiscardMode target = 1 [json_name = "target"]; inline void DiscardStmt::clear_target() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.target_ = 0; } inline ::pg_query::DiscardMode DiscardStmt::target() const { // @@protoc_insertion_point(field_get:pg_query.DiscardStmt.target) return _internal_target(); } inline void DiscardStmt::set_target(::pg_query::DiscardMode value) { _internal_set_target(value); // @@protoc_insertion_point(field_set:pg_query.DiscardStmt.target) } inline ::pg_query::DiscardMode DiscardStmt::_internal_target() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::DiscardMode>(_impl_.target_); } inline void DiscardStmt::_internal_set_target(::pg_query::DiscardMode value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.target_ = value; } // ------------------------------------------------------------------- // LockStmt // repeated .pg_query.Node relations = 1 [json_name = "relations"]; inline int LockStmt::_internal_relations_size() const { return _internal_relations().size(); } inline int LockStmt::relations_size() const { return _internal_relations_size(); } inline void LockStmt::clear_relations() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.relations_.Clear(); } inline ::pg_query::Node* LockStmt::mutable_relations(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.LockStmt.relations) return _internal_mutable_relations()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* LockStmt::mutable_relations() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.LockStmt.relations) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_relations(); } inline const ::pg_query::Node& LockStmt::relations(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.LockStmt.relations) return _internal_relations().Get(index); } inline ::pg_query::Node* LockStmt::add_relations() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_relations()->Add(); // @@protoc_insertion_point(field_add:pg_query.LockStmt.relations) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& LockStmt::relations() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.LockStmt.relations) return _internal_relations(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& LockStmt::_internal_relations() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.relations_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* LockStmt::_internal_mutable_relations() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.relations_; } // int32 mode = 2 [json_name = "mode"]; inline void LockStmt::clear_mode() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.mode_ = 0; } inline ::int32_t LockStmt::mode() const { // @@protoc_insertion_point(field_get:pg_query.LockStmt.mode) return _internal_mode(); } inline void LockStmt::set_mode(::int32_t value) { _internal_set_mode(value); // @@protoc_insertion_point(field_set:pg_query.LockStmt.mode) } inline ::int32_t LockStmt::_internal_mode() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.mode_; } inline void LockStmt::_internal_set_mode(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.mode_ = value; } // bool nowait = 3 [json_name = "nowait"]; inline void LockStmt::clear_nowait() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.nowait_ = false; } inline bool LockStmt::nowait() const { // @@protoc_insertion_point(field_get:pg_query.LockStmt.nowait) return _internal_nowait(); } inline void LockStmt::set_nowait(bool value) { _internal_set_nowait(value); // @@protoc_insertion_point(field_set:pg_query.LockStmt.nowait) } inline bool LockStmt::_internal_nowait() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.nowait_; } inline void LockStmt::_internal_set_nowait(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.nowait_ = value; } // ------------------------------------------------------------------- // ConstraintsSetStmt // repeated .pg_query.Node constraints = 1 [json_name = "constraints"]; inline int ConstraintsSetStmt::_internal_constraints_size() const { return _internal_constraints().size(); } inline int ConstraintsSetStmt::constraints_size() const { return _internal_constraints_size(); } inline void ConstraintsSetStmt::clear_constraints() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.constraints_.Clear(); } inline ::pg_query::Node* ConstraintsSetStmt::mutable_constraints(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ConstraintsSetStmt.constraints) return _internal_mutable_constraints()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ConstraintsSetStmt::mutable_constraints() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ConstraintsSetStmt.constraints) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_constraints(); } inline const ::pg_query::Node& ConstraintsSetStmt::constraints(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ConstraintsSetStmt.constraints) return _internal_constraints().Get(index); } inline ::pg_query::Node* ConstraintsSetStmt::add_constraints() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_constraints()->Add(); // @@protoc_insertion_point(field_add:pg_query.ConstraintsSetStmt.constraints) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ConstraintsSetStmt::constraints() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ConstraintsSetStmt.constraints) return _internal_constraints(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ConstraintsSetStmt::_internal_constraints() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.constraints_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ConstraintsSetStmt::_internal_mutable_constraints() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.constraints_; } // bool deferred = 2 [json_name = "deferred"]; inline void ConstraintsSetStmt::clear_deferred() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.deferred_ = false; } inline bool ConstraintsSetStmt::deferred() const { // @@protoc_insertion_point(field_get:pg_query.ConstraintsSetStmt.deferred) return _internal_deferred(); } inline void ConstraintsSetStmt::set_deferred(bool value) { _internal_set_deferred(value); // @@protoc_insertion_point(field_set:pg_query.ConstraintsSetStmt.deferred) } inline bool ConstraintsSetStmt::_internal_deferred() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.deferred_; } inline void ConstraintsSetStmt::_internal_set_deferred(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.deferred_ = value; } // ------------------------------------------------------------------- // ReindexStmt // .pg_query.ReindexObjectType kind = 1 [json_name = "kind"]; inline void ReindexStmt::clear_kind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.kind_ = 0; } inline ::pg_query::ReindexObjectType ReindexStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.kind) return _internal_kind(); } inline void ReindexStmt::set_kind(::pg_query::ReindexObjectType value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.ReindexStmt.kind) } inline ::pg_query::ReindexObjectType ReindexStmt::_internal_kind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::ReindexObjectType>(_impl_.kind_); } inline void ReindexStmt::_internal_set_kind(::pg_query::ReindexObjectType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.kind_ = value; } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool ReindexStmt::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void ReindexStmt::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& ReindexStmt::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& ReindexStmt::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.relation) return _internal_relation(); } inline void ReindexStmt::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ReindexStmt.relation) } inline ::pg_query::RangeVar* ReindexStmt::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* ReindexStmt::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ReindexStmt.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* ReindexStmt::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* ReindexStmt::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.ReindexStmt.relation) return _msg; } inline void ReindexStmt::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ReindexStmt.relation) } // string name = 3 [json_name = "name"]; inline void ReindexStmt::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& ReindexStmt::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void ReindexStmt::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ReindexStmt.name) } inline std::string* ReindexStmt::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.ReindexStmt.name) return _s; } inline const std::string& ReindexStmt::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void ReindexStmt::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* ReindexStmt::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* ReindexStmt::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ReindexStmt.name) return _impl_.name_.Release(); } inline void ReindexStmt::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.ReindexStmt.name) } // repeated .pg_query.Node params = 4 [json_name = "params"]; inline int ReindexStmt::_internal_params_size() const { return _internal_params().size(); } inline int ReindexStmt::params_size() const { return _internal_params_size(); } inline void ReindexStmt::clear_params() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.params_.Clear(); } inline ::pg_query::Node* ReindexStmt::mutable_params(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ReindexStmt.params) return _internal_mutable_params()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ReindexStmt::mutable_params() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ReindexStmt.params) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_params(); } inline const ::pg_query::Node& ReindexStmt::params(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.params) return _internal_params().Get(index); } inline ::pg_query::Node* ReindexStmt::add_params() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_params()->Add(); // @@protoc_insertion_point(field_add:pg_query.ReindexStmt.params) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ReindexStmt::params() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ReindexStmt.params) return _internal_params(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ReindexStmt::_internal_params() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.params_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ReindexStmt::_internal_mutable_params() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.params_; } // ------------------------------------------------------------------- // CreateConversionStmt // repeated .pg_query.Node conversion_name = 1 [json_name = "conversion_name"]; inline int CreateConversionStmt::_internal_conversion_name_size() const { return _internal_conversion_name().size(); } inline int CreateConversionStmt::conversion_name_size() const { return _internal_conversion_name_size(); } inline void CreateConversionStmt::clear_conversion_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conversion_name_.Clear(); } inline ::pg_query::Node* CreateConversionStmt::mutable_conversion_name(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateConversionStmt.conversion_name) return _internal_mutable_conversion_name()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateConversionStmt::mutable_conversion_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateConversionStmt.conversion_name) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_conversion_name(); } inline const ::pg_query::Node& CreateConversionStmt::conversion_name(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.conversion_name) return _internal_conversion_name().Get(index); } inline ::pg_query::Node* CreateConversionStmt::add_conversion_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_conversion_name()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateConversionStmt.conversion_name) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateConversionStmt::conversion_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateConversionStmt.conversion_name) return _internal_conversion_name(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateConversionStmt::_internal_conversion_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.conversion_name_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateConversionStmt::_internal_mutable_conversion_name() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.conversion_name_; } // string for_encoding_name = 2 [json_name = "for_encoding_name"]; inline void CreateConversionStmt::clear_for_encoding_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.for_encoding_name_.ClearToEmpty(); } inline const std::string& CreateConversionStmt::for_encoding_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.for_encoding_name) return _internal_for_encoding_name(); } template inline PROTOBUF_ALWAYS_INLINE void CreateConversionStmt::set_for_encoding_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.for_encoding_name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateConversionStmt.for_encoding_name) } inline std::string* CreateConversionStmt::mutable_for_encoding_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_for_encoding_name(); // @@protoc_insertion_point(field_mutable:pg_query.CreateConversionStmt.for_encoding_name) return _s; } inline const std::string& CreateConversionStmt::_internal_for_encoding_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.for_encoding_name_.Get(); } inline void CreateConversionStmt::_internal_set_for_encoding_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.for_encoding_name_.Set(value, GetArena()); } inline std::string* CreateConversionStmt::_internal_mutable_for_encoding_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.for_encoding_name_.Mutable( GetArena()); } inline std::string* CreateConversionStmt::release_for_encoding_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateConversionStmt.for_encoding_name) return _impl_.for_encoding_name_.Release(); } inline void CreateConversionStmt::set_allocated_for_encoding_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.for_encoding_name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.for_encoding_name_.IsDefault()) { _impl_.for_encoding_name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.to_encoding_name_.ClearToEmpty(); } inline const std::string& CreateConversionStmt::to_encoding_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.to_encoding_name) return _internal_to_encoding_name(); } template inline PROTOBUF_ALWAYS_INLINE void CreateConversionStmt::set_to_encoding_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.to_encoding_name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateConversionStmt.to_encoding_name) } inline std::string* CreateConversionStmt::mutable_to_encoding_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_to_encoding_name(); // @@protoc_insertion_point(field_mutable:pg_query.CreateConversionStmt.to_encoding_name) return _s; } inline const std::string& CreateConversionStmt::_internal_to_encoding_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.to_encoding_name_.Get(); } inline void CreateConversionStmt::_internal_set_to_encoding_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.to_encoding_name_.Set(value, GetArena()); } inline std::string* CreateConversionStmt::_internal_mutable_to_encoding_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.to_encoding_name_.Mutable( GetArena()); } inline std::string* CreateConversionStmt::release_to_encoding_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateConversionStmt.to_encoding_name) return _impl_.to_encoding_name_.Release(); } inline void CreateConversionStmt::set_allocated_to_encoding_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.to_encoding_name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.to_encoding_name_.IsDefault()) { _impl_.to_encoding_name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_func_name().size(); } inline int CreateConversionStmt::func_name_size() const { return _internal_func_name_size(); } inline void CreateConversionStmt::clear_func_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.func_name_.Clear(); } inline ::pg_query::Node* CreateConversionStmt::mutable_func_name(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateConversionStmt.func_name) return _internal_mutable_func_name()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateConversionStmt::mutable_func_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateConversionStmt.func_name) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_func_name(); } inline const ::pg_query::Node& CreateConversionStmt::func_name(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.func_name) return _internal_func_name().Get(index); } inline ::pg_query::Node* CreateConversionStmt::add_func_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_func_name()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateConversionStmt.func_name) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateConversionStmt::func_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateConversionStmt.func_name) return _internal_func_name(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateConversionStmt::_internal_func_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.func_name_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateConversionStmt::_internal_mutable_func_name() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.func_name_; } // bool def = 5 [json_name = "def"]; inline void CreateConversionStmt::clear_def() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.def_ = false; } inline bool CreateConversionStmt::def() const { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.def) return _internal_def(); } inline void CreateConversionStmt::set_def(bool value) { _internal_set_def(value); // @@protoc_insertion_point(field_set:pg_query.CreateConversionStmt.def) } inline bool CreateConversionStmt::_internal_def() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.def_; } inline void CreateConversionStmt::_internal_set_def(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.def_ = value; } // ------------------------------------------------------------------- // CreateCastStmt // .pg_query.TypeName sourcetype = 1 [json_name = "sourcetype"]; inline bool CreateCastStmt::has_sourcetype() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.sourcetype_ != nullptr); return value; } inline void CreateCastStmt::clear_sourcetype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.sourcetype_ != nullptr) _impl_.sourcetype_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::TypeName& CreateCastStmt::_internal_sourcetype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.sourcetype_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateCastStmt::sourcetype() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.sourcetype) return _internal_sourcetype(); } inline void CreateCastStmt::unsafe_arena_set_allocated_sourcetype(::pg_query::TypeName* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.sourcetype_); } _impl_.sourcetype_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateCastStmt.sourcetype) } inline ::pg_query::TypeName* CreateCastStmt::release_sourcetype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* released = _impl_.sourcetype_; _impl_.sourcetype_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* CreateCastStmt::unsafe_arena_release_sourcetype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateCastStmt.sourcetype) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* temp = _impl_.sourcetype_; _impl_.sourcetype_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateCastStmt::_internal_mutable_sourcetype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.sourcetype_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.sourcetype_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.sourcetype_; } inline ::pg_query::TypeName* CreateCastStmt::mutable_sourcetype() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_sourcetype(); // @@protoc_insertion_point(field_mutable:pg_query.CreateCastStmt.sourcetype) return _msg; } inline void CreateCastStmt::set_allocated_sourcetype(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.sourcetype_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.sourcetype_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateCastStmt.sourcetype) } // .pg_query.TypeName targettype = 2 [json_name = "targettype"]; inline bool CreateCastStmt::has_targettype() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.targettype_ != nullptr); return value; } inline void CreateCastStmt::clear_targettype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.targettype_ != nullptr) _impl_.targettype_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::TypeName& CreateCastStmt::_internal_targettype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.targettype_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateCastStmt::targettype() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.targettype) return _internal_targettype(); } inline void CreateCastStmt::unsafe_arena_set_allocated_targettype(::pg_query::TypeName* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.targettype_); } _impl_.targettype_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateCastStmt.targettype) } inline ::pg_query::TypeName* CreateCastStmt::release_targettype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::TypeName* released = _impl_.targettype_; _impl_.targettype_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* CreateCastStmt::unsafe_arena_release_targettype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateCastStmt.targettype) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::TypeName* temp = _impl_.targettype_; _impl_.targettype_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateCastStmt::_internal_mutable_targettype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.targettype_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.targettype_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.targettype_; } inline ::pg_query::TypeName* CreateCastStmt::mutable_targettype() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_targettype(); // @@protoc_insertion_point(field_mutable:pg_query.CreateCastStmt.targettype) return _msg; } inline void CreateCastStmt::set_allocated_targettype(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.targettype_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.targettype_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateCastStmt.targettype) } // .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; inline bool CreateCastStmt::has_func() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.func_ != nullptr); return value; } inline void CreateCastStmt::clear_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.func_ != nullptr) _impl_.func_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::ObjectWithArgs& CreateCastStmt::_internal_func() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::ObjectWithArgs* p = _impl_.func_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_ObjectWithArgs_default_instance_); } inline const ::pg_query::ObjectWithArgs& CreateCastStmt::func() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.func) return _internal_func(); } inline void CreateCastStmt::unsafe_arena_set_allocated_func(::pg_query::ObjectWithArgs* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.func_); } _impl_.func_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateCastStmt.func) } inline ::pg_query::ObjectWithArgs* CreateCastStmt::release_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::ObjectWithArgs* released = _impl_.func_; _impl_.func_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::ObjectWithArgs* CreateCastStmt::unsafe_arena_release_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateCastStmt.func) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::ObjectWithArgs* temp = _impl_.func_; _impl_.func_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* CreateCastStmt::_internal_mutable_func() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.func_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); _impl_.func_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(p); } return _impl_.func_; } inline ::pg_query::ObjectWithArgs* CreateCastStmt::mutable_func() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ObjectWithArgs* _msg = _internal_mutable_func(); // @@protoc_insertion_point(field_mutable:pg_query.CreateCastStmt.func) return _msg; } inline void CreateCastStmt::set_allocated_func(::pg_query::ObjectWithArgs* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::ObjectWithArgs*>(_impl_.func_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::ObjectWithArgs*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.func_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateCastStmt.func) } // .pg_query.CoercionContext context = 4 [json_name = "context"]; inline void CreateCastStmt::clear_context() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.context_ = 0; } inline ::pg_query::CoercionContext CreateCastStmt::context() const { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.context) return _internal_context(); } inline void CreateCastStmt::set_context(::pg_query::CoercionContext value) { _internal_set_context(value); // @@protoc_insertion_point(field_set:pg_query.CreateCastStmt.context) } inline ::pg_query::CoercionContext CreateCastStmt::_internal_context() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::CoercionContext>(_impl_.context_); } inline void CreateCastStmt::_internal_set_context(::pg_query::CoercionContext value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.context_ = value; } // bool inout = 5 [json_name = "inout"]; inline void CreateCastStmt::clear_inout() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.inout_ = false; } inline bool CreateCastStmt::inout() const { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.inout) return _internal_inout(); } inline void CreateCastStmt::set_inout(bool value) { _internal_set_inout(value); // @@protoc_insertion_point(field_set:pg_query.CreateCastStmt.inout) } inline bool CreateCastStmt::_internal_inout() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.inout_; } inline void CreateCastStmt::_internal_set_inout(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.inout_ = value; } // ------------------------------------------------------------------- // CreateTransformStmt // bool replace = 1 [json_name = "replace"]; inline void CreateTransformStmt::clear_replace() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.replace_ = false; } inline bool CreateTransformStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.replace) return _internal_replace(); } inline void CreateTransformStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.CreateTransformStmt.replace) } inline bool CreateTransformStmt::_internal_replace() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.replace_; } inline void CreateTransformStmt::_internal_set_replace(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.replace_ = value; } // .pg_query.TypeName type_name = 2 [json_name = "type_name"]; inline bool CreateTransformStmt::has_type_name() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.type_name_ != nullptr); return value; } inline void CreateTransformStmt::clear_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.type_name_ != nullptr) _impl_.type_name_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::TypeName& CreateTransformStmt::_internal_type_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::TypeName* p = _impl_.type_name_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateTransformStmt::type_name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@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* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.type_name_); } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTransformStmt.type_name) } inline ::pg_query::TypeName* CreateTransformStmt::release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* released = _impl_.type_name_; _impl_.type_name_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::TypeName* CreateTransformStmt::unsafe_arena_release_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.type_name) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::TypeName* temp = _impl_.type_name_; _impl_.type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateTransformStmt::_internal_mutable_type_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(p); } return _impl_.type_name_; } inline ::pg_query::TypeName* CreateTransformStmt::mutable_type_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::TypeName* _msg = _internal_mutable_type_name(); // @@protoc_insertion_point(field_mutable:pg_query.CreateTransformStmt.type_name) return _msg; } inline void CreateTransformStmt::set_allocated_type_name(::pg_query::TypeName* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::TypeName*>(_impl_.type_name_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::TypeName*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.type_name_ = reinterpret_cast<::pg_query::TypeName*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.type_name) } // string lang = 3 [json_name = "lang"]; inline void CreateTransformStmt::clear_lang() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.lang_.ClearToEmpty(); } inline const std::string& CreateTransformStmt::lang() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.lang) return _internal_lang(); } template inline PROTOBUF_ALWAYS_INLINE void CreateTransformStmt::set_lang(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.lang_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateTransformStmt.lang) } inline std::string* CreateTransformStmt::mutable_lang() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_lang(); // @@protoc_insertion_point(field_mutable:pg_query.CreateTransformStmt.lang) return _s; } inline const std::string& CreateTransformStmt::_internal_lang() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.lang_.Get(); } inline void CreateTransformStmt::_internal_set_lang(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.lang_.Set(value, GetArena()); } inline std::string* CreateTransformStmt::_internal_mutable_lang() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.lang_.Mutable( GetArena()); } inline std::string* CreateTransformStmt::release_lang() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.lang) return _impl_.lang_.Release(); } inline void CreateTransformStmt::set_allocated_lang(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.lang_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.lang_.IsDefault()) { _impl_.lang_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.lang) } // .pg_query.ObjectWithArgs fromsql = 4 [json_name = "fromsql"]; inline bool CreateTransformStmt::has_fromsql() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.fromsql_ != nullptr); return value; } inline void CreateTransformStmt::clear_fromsql() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.fromsql_ != nullptr) _impl_.fromsql_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::ObjectWithArgs& CreateTransformStmt::_internal_fromsql() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::ObjectWithArgs* p = _impl_.fromsql_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_ObjectWithArgs_default_instance_); } inline const ::pg_query::ObjectWithArgs& CreateTransformStmt::fromsql() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.fromsql) return _internal_fromsql(); } inline void CreateTransformStmt::unsafe_arena_set_allocated_fromsql(::pg_query::ObjectWithArgs* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.fromsql_); } _impl_.fromsql_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTransformStmt.fromsql) } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::release_fromsql() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::ObjectWithArgs* released = _impl_.fromsql_; _impl_.fromsql_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::unsafe_arena_release_fromsql() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.fromsql) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::ObjectWithArgs* temp = _impl_.fromsql_; _impl_.fromsql_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::_internal_mutable_fromsql() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.fromsql_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); _impl_.fromsql_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(p); } return _impl_.fromsql_; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::mutable_fromsql() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ObjectWithArgs* _msg = _internal_mutable_fromsql(); // @@protoc_insertion_point(field_mutable:pg_query.CreateTransformStmt.fromsql) return _msg; } inline void CreateTransformStmt::set_allocated_fromsql(::pg_query::ObjectWithArgs* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::ObjectWithArgs*>(_impl_.fromsql_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::ObjectWithArgs*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.fromsql_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.fromsql) } // .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; inline bool CreateTransformStmt::has_tosql() const { bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0; PROTOBUF_ASSUME(!value || _impl_.tosql_ != nullptr); return value; } inline void CreateTransformStmt::clear_tosql() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.tosql_ != nullptr) _impl_.tosql_->Clear(); _impl_._has_bits_[0] &= ~0x00000004u; } inline const ::pg_query::ObjectWithArgs& CreateTransformStmt::_internal_tosql() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::ObjectWithArgs* p = _impl_.tosql_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_ObjectWithArgs_default_instance_); } inline const ::pg_query::ObjectWithArgs& CreateTransformStmt::tosql() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.tosql) return _internal_tosql(); } inline void CreateTransformStmt::unsafe_arena_set_allocated_tosql(::pg_query::ObjectWithArgs* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.tosql_); } _impl_.tosql_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTransformStmt.tosql) } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::release_tosql() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::ObjectWithArgs* released = _impl_.tosql_; _impl_.tosql_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::unsafe_arena_release_tosql() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.tosql) _impl_._has_bits_[0] &= ~0x00000004u; ::pg_query::ObjectWithArgs* temp = _impl_.tosql_; _impl_.tosql_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::_internal_mutable_tosql() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000004u; if (_impl_.tosql_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); _impl_.tosql_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(p); } return _impl_.tosql_; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::mutable_tosql() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::ObjectWithArgs* _msg = _internal_mutable_tosql(); // @@protoc_insertion_point(field_mutable:pg_query.CreateTransformStmt.tosql) return _msg; } inline void CreateTransformStmt::set_allocated_tosql(::pg_query::ObjectWithArgs* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::ObjectWithArgs*>(_impl_.tosql_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::ObjectWithArgs*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000004u; } else { _impl_._has_bits_[0] &= ~0x00000004u; } _impl_.tosql_ = reinterpret_cast<::pg_query::ObjectWithArgs*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.tosql) } // ------------------------------------------------------------------- // PrepareStmt // string name = 1 [json_name = "name"]; inline void PrepareStmt::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& PrepareStmt::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PrepareStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void PrepareStmt::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.PrepareStmt.name) } inline std::string* PrepareStmt::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.PrepareStmt.name) return _s; } inline const std::string& PrepareStmt::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void PrepareStmt::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* PrepareStmt::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* PrepareStmt::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.PrepareStmt.name) return _impl_.name_.Release(); } inline void PrepareStmt::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_argtypes().size(); } inline int PrepareStmt::argtypes_size() const { return _internal_argtypes_size(); } inline void PrepareStmt::clear_argtypes() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.argtypes_.Clear(); } inline ::pg_query::Node* PrepareStmt::mutable_argtypes(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.PrepareStmt.argtypes) return _internal_mutable_argtypes()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PrepareStmt::mutable_argtypes() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.PrepareStmt.argtypes) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_argtypes(); } inline const ::pg_query::Node& PrepareStmt::argtypes(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PrepareStmt.argtypes) return _internal_argtypes().Get(index); } inline ::pg_query::Node* PrepareStmt::add_argtypes() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_argtypes()->Add(); // @@protoc_insertion_point(field_add:pg_query.PrepareStmt.argtypes) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PrepareStmt::argtypes() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.PrepareStmt.argtypes) return _internal_argtypes(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PrepareStmt::_internal_argtypes() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.argtypes_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PrepareStmt::_internal_mutable_argtypes() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.argtypes_; } // .pg_query.Node query = 3 [json_name = "query"]; inline bool PrepareStmt::has_query() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.query_ != nullptr); return value; } inline void PrepareStmt::clear_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.query_ != nullptr) _impl_.query_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::Node& PrepareStmt::_internal_query() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.query_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& PrepareStmt::query() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PrepareStmt.query) return _internal_query(); } inline void PrepareStmt::unsafe_arena_set_allocated_query(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.query_); } _impl_.query_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PrepareStmt.query) } inline ::pg_query::Node* PrepareStmt::release_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* released = _impl_.query_; _impl_.query_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* PrepareStmt::unsafe_arena_release_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.PrepareStmt.query) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::Node* temp = _impl_.query_; _impl_.query_ = nullptr; return temp; } inline ::pg_query::Node* PrepareStmt::_internal_mutable_query() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.query_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.query_; } inline ::pg_query::Node* PrepareStmt::mutable_query() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_query(); // @@protoc_insertion_point(field_mutable:pg_query.PrepareStmt.query) return _msg; } inline void PrepareStmt::set_allocated_query(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.query_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.query_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.PrepareStmt.query) } // ------------------------------------------------------------------- // ExecuteStmt // string name = 1 [json_name = "name"]; inline void ExecuteStmt::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& ExecuteStmt::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ExecuteStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void ExecuteStmt::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.ExecuteStmt.name) } inline std::string* ExecuteStmt::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.ExecuteStmt.name) return _s; } inline const std::string& ExecuteStmt::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void ExecuteStmt::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* ExecuteStmt::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* ExecuteStmt::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ExecuteStmt.name) return _impl_.name_.Release(); } inline void ExecuteStmt::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_params().size(); } inline int ExecuteStmt::params_size() const { return _internal_params_size(); } inline void ExecuteStmt::clear_params() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.params_.Clear(); } inline ::pg_query::Node* ExecuteStmt::mutable_params(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ExecuteStmt.params) return _internal_mutable_params()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ExecuteStmt::mutable_params() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ExecuteStmt.params) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_params(); } inline const ::pg_query::Node& ExecuteStmt::params(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ExecuteStmt.params) return _internal_params().Get(index); } inline ::pg_query::Node* ExecuteStmt::add_params() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_params()->Add(); // @@protoc_insertion_point(field_add:pg_query.ExecuteStmt.params) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ExecuteStmt::params() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ExecuteStmt.params) return _internal_params(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ExecuteStmt::_internal_params() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.params_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ExecuteStmt::_internal_mutable_params() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.params_; } // ------------------------------------------------------------------- // DeallocateStmt // string name = 1 [json_name = "name"]; inline void DeallocateStmt::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& DeallocateStmt::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DeallocateStmt.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void DeallocateStmt::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.DeallocateStmt.name) } inline std::string* DeallocateStmt::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.DeallocateStmt.name) return _s; } inline const std::string& DeallocateStmt::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void DeallocateStmt::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* DeallocateStmt::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* DeallocateStmt::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DeallocateStmt.name) return _impl_.name_.Release(); } inline void DeallocateStmt::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.DeallocateStmt.name) } // bool isall = 2 [json_name = "isall"]; inline void DeallocateStmt::clear_isall() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.isall_ = false; } inline bool DeallocateStmt::isall() const { // @@protoc_insertion_point(field_get:pg_query.DeallocateStmt.isall) return _internal_isall(); } inline void DeallocateStmt::set_isall(bool value) { _internal_set_isall(value); // @@protoc_insertion_point(field_set:pg_query.DeallocateStmt.isall) } inline bool DeallocateStmt::_internal_isall() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.isall_; } inline void DeallocateStmt::_internal_set_isall(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.isall_ = value; } // int32 location = 3 [json_name = "location"]; inline void DeallocateStmt::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t DeallocateStmt::location() const { // @@protoc_insertion_point(field_get:pg_query.DeallocateStmt.location) return _internal_location(); } inline void DeallocateStmt::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.DeallocateStmt.location) } inline ::int32_t DeallocateStmt::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void DeallocateStmt::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // DropOwnedStmt // repeated .pg_query.Node roles = 1 [json_name = "roles"]; inline int DropOwnedStmt::_internal_roles_size() const { return _internal_roles().size(); } inline int DropOwnedStmt::roles_size() const { return _internal_roles_size(); } inline void DropOwnedStmt::clear_roles() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.roles_.Clear(); } inline ::pg_query::Node* DropOwnedStmt::mutable_roles(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.DropOwnedStmt.roles) return _internal_mutable_roles()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DropOwnedStmt::mutable_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.DropOwnedStmt.roles) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_roles(); } inline const ::pg_query::Node& DropOwnedStmt::roles(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DropOwnedStmt.roles) return _internal_roles().Get(index); } inline ::pg_query::Node* DropOwnedStmt::add_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_roles()->Add(); // @@protoc_insertion_point(field_add:pg_query.DropOwnedStmt.roles) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DropOwnedStmt::roles() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.DropOwnedStmt.roles) return _internal_roles(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& DropOwnedStmt::_internal_roles() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.roles_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* DropOwnedStmt::_internal_mutable_roles() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.roles_; } // .pg_query.DropBehavior behavior = 2 [json_name = "behavior"]; inline void DropOwnedStmt::clear_behavior() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior DropOwnedStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.DropOwnedStmt.behavior) return _internal_behavior(); } inline void DropOwnedStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.DropOwnedStmt.behavior) } inline ::pg_query::DropBehavior DropOwnedStmt::_internal_behavior() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::DropBehavior>(_impl_.behavior_); } inline void DropOwnedStmt::_internal_set_behavior(::pg_query::DropBehavior value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.behavior_ = value; } // ------------------------------------------------------------------- // ReassignOwnedStmt // repeated .pg_query.Node roles = 1 [json_name = "roles"]; inline int ReassignOwnedStmt::_internal_roles_size() const { return _internal_roles().size(); } inline int ReassignOwnedStmt::roles_size() const { return _internal_roles_size(); } inline void ReassignOwnedStmt::clear_roles() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.roles_.Clear(); } inline ::pg_query::Node* ReassignOwnedStmt::mutable_roles(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.ReassignOwnedStmt.roles) return _internal_mutable_roles()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ReassignOwnedStmt::mutable_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.ReassignOwnedStmt.roles) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_roles(); } inline const ::pg_query::Node& ReassignOwnedStmt::roles(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ReassignOwnedStmt.roles) return _internal_roles().Get(index); } inline ::pg_query::Node* ReassignOwnedStmt::add_roles() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_roles()->Add(); // @@protoc_insertion_point(field_add:pg_query.ReassignOwnedStmt.roles) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ReassignOwnedStmt::roles() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.ReassignOwnedStmt.roles) return _internal_roles(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& ReassignOwnedStmt::_internal_roles() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.roles_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* ReassignOwnedStmt::_internal_mutable_roles() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.roles_; } // .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; inline bool ReassignOwnedStmt::has_newrole() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.newrole_ != nullptr); return value; } inline void ReassignOwnedStmt::clear_newrole() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.newrole_ != nullptr) _impl_.newrole_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RoleSpec& ReassignOwnedStmt::_internal_newrole() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RoleSpec* p = _impl_.newrole_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& ReassignOwnedStmt::newrole() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.ReassignOwnedStmt.newrole) return _internal_newrole(); } inline void ReassignOwnedStmt::unsafe_arena_set_allocated_newrole(::pg_query::RoleSpec* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.newrole_); } _impl_.newrole_ = reinterpret_cast<::pg_query::RoleSpec*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ReassignOwnedStmt.newrole) } inline ::pg_query::RoleSpec* ReassignOwnedStmt::release_newrole() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* released = _impl_.newrole_; _impl_.newrole_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RoleSpec* ReassignOwnedStmt::unsafe_arena_release_newrole() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.ReassignOwnedStmt.newrole) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RoleSpec* temp = _impl_.newrole_; _impl_.newrole_ = nullptr; return temp; } inline ::pg_query::RoleSpec* ReassignOwnedStmt::_internal_mutable_newrole() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.newrole_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); _impl_.newrole_ = reinterpret_cast<::pg_query::RoleSpec*>(p); } return _impl_.newrole_; } inline ::pg_query::RoleSpec* ReassignOwnedStmt::mutable_newrole() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RoleSpec* _msg = _internal_mutable_newrole(); // @@protoc_insertion_point(field_mutable:pg_query.ReassignOwnedStmt.newrole) return _msg; } inline void ReassignOwnedStmt::set_allocated_newrole(::pg_query::RoleSpec* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RoleSpec*>(_impl_.newrole_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RoleSpec*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.newrole_ = reinterpret_cast<::pg_query::RoleSpec*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.ReassignOwnedStmt.newrole) } // ------------------------------------------------------------------- // AlterTSDictionaryStmt // repeated .pg_query.Node dictname = 1 [json_name = "dictname"]; inline int AlterTSDictionaryStmt::_internal_dictname_size() const { return _internal_dictname().size(); } inline int AlterTSDictionaryStmt::dictname_size() const { return _internal_dictname_size(); } inline void AlterTSDictionaryStmt::clear_dictname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.dictname_.Clear(); } inline ::pg_query::Node* AlterTSDictionaryStmt::mutable_dictname(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSDictionaryStmt.dictname) return _internal_mutable_dictname()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTSDictionaryStmt::mutable_dictname() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSDictionaryStmt.dictname) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_dictname(); } inline const ::pg_query::Node& AlterTSDictionaryStmt::dictname(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTSDictionaryStmt.dictname) return _internal_dictname().Get(index); } inline ::pg_query::Node* AlterTSDictionaryStmt::add_dictname() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_dictname()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterTSDictionaryStmt.dictname) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTSDictionaryStmt::dictname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterTSDictionaryStmt.dictname) return _internal_dictname(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTSDictionaryStmt::_internal_dictname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.dictname_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTSDictionaryStmt::_internal_mutable_dictname() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.dictname_; } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterTSDictionaryStmt::_internal_options_size() const { return _internal_options().size(); } inline int AlterTSDictionaryStmt::options_size() const { return _internal_options_size(); } inline void AlterTSDictionaryStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* AlterTSDictionaryStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSDictionaryStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTSDictionaryStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSDictionaryStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& AlterTSDictionaryStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTSDictionaryStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* AlterTSDictionaryStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterTSDictionaryStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTSDictionaryStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterTSDictionaryStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTSDictionaryStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTSDictionaryStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // AlterTSConfigurationStmt // .pg_query.AlterTSConfigType kind = 1 [json_name = "kind"]; inline void AlterTSConfigurationStmt::clear_kind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.kind_ = 0; } inline ::pg_query::AlterTSConfigType AlterTSConfigurationStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.kind) return _internal_kind(); } inline void AlterTSConfigurationStmt::set_kind(::pg_query::AlterTSConfigType value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.kind) } inline ::pg_query::AlterTSConfigType AlterTSConfigurationStmt::_internal_kind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::AlterTSConfigType>(_impl_.kind_); } inline void AlterTSConfigurationStmt::_internal_set_kind(::pg_query::AlterTSConfigType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.kind_ = value; } // repeated .pg_query.Node cfgname = 2 [json_name = "cfgname"]; inline int AlterTSConfigurationStmt::_internal_cfgname_size() const { return _internal_cfgname().size(); } inline int AlterTSConfigurationStmt::cfgname_size() const { return _internal_cfgname_size(); } inline void AlterTSConfigurationStmt::clear_cfgname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.cfgname_.Clear(); } inline ::pg_query::Node* AlterTSConfigurationStmt::mutable_cfgname(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSConfigurationStmt.cfgname) return _internal_mutable_cfgname()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTSConfigurationStmt::mutable_cfgname() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSConfigurationStmt.cfgname) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_cfgname(); } inline const ::pg_query::Node& AlterTSConfigurationStmt::cfgname(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.cfgname) return _internal_cfgname().Get(index); } inline ::pg_query::Node* AlterTSConfigurationStmt::add_cfgname() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_cfgname()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterTSConfigurationStmt.cfgname) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTSConfigurationStmt::cfgname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterTSConfigurationStmt.cfgname) return _internal_cfgname(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTSConfigurationStmt::_internal_cfgname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.cfgname_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTSConfigurationStmt::_internal_mutable_cfgname() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.cfgname_; } // repeated .pg_query.Node tokentype = 3 [json_name = "tokentype"]; inline int AlterTSConfigurationStmt::_internal_tokentype_size() const { return _internal_tokentype().size(); } inline int AlterTSConfigurationStmt::tokentype_size() const { return _internal_tokentype_size(); } inline void AlterTSConfigurationStmt::clear_tokentype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.tokentype_.Clear(); } inline ::pg_query::Node* AlterTSConfigurationStmt::mutable_tokentype(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSConfigurationStmt.tokentype) return _internal_mutable_tokentype()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTSConfigurationStmt::mutable_tokentype() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSConfigurationStmt.tokentype) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_tokentype(); } inline const ::pg_query::Node& AlterTSConfigurationStmt::tokentype(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.tokentype) return _internal_tokentype().Get(index); } inline ::pg_query::Node* AlterTSConfigurationStmt::add_tokentype() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_tokentype()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterTSConfigurationStmt.tokentype) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTSConfigurationStmt::tokentype() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterTSConfigurationStmt.tokentype) return _internal_tokentype(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTSConfigurationStmt::_internal_tokentype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.tokentype_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTSConfigurationStmt::_internal_mutable_tokentype() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.tokentype_; } // repeated .pg_query.Node dicts = 4 [json_name = "dicts"]; inline int AlterTSConfigurationStmt::_internal_dicts_size() const { return _internal_dicts().size(); } inline int AlterTSConfigurationStmt::dicts_size() const { return _internal_dicts_size(); } inline void AlterTSConfigurationStmt::clear_dicts() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.dicts_.Clear(); } inline ::pg_query::Node* AlterTSConfigurationStmt::mutable_dicts(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSConfigurationStmt.dicts) return _internal_mutable_dicts()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTSConfigurationStmt::mutable_dicts() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSConfigurationStmt.dicts) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_dicts(); } inline const ::pg_query::Node& AlterTSConfigurationStmt::dicts(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.dicts) return _internal_dicts().Get(index); } inline ::pg_query::Node* AlterTSConfigurationStmt::add_dicts() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_dicts()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterTSConfigurationStmt.dicts) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTSConfigurationStmt::dicts() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterTSConfigurationStmt.dicts) return _internal_dicts(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterTSConfigurationStmt::_internal_dicts() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.dicts_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterTSConfigurationStmt::_internal_mutable_dicts() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.dicts_; } // bool override = 5 [json_name = "override"]; inline void AlterTSConfigurationStmt::clear_override() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.override_ = false; } inline bool AlterTSConfigurationStmt::override() const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.override) return _internal_override(); } inline void AlterTSConfigurationStmt::set_override(bool value) { _internal_set_override(value); // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.override) } inline bool AlterTSConfigurationStmt::_internal_override() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.override_; } inline void AlterTSConfigurationStmt::_internal_set_override(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.override_ = value; } // bool replace = 6 [json_name = "replace"]; inline void AlterTSConfigurationStmt::clear_replace() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.replace_ = false; } inline bool AlterTSConfigurationStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.replace) return _internal_replace(); } inline void AlterTSConfigurationStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.replace) } inline bool AlterTSConfigurationStmt::_internal_replace() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.replace_; } inline void AlterTSConfigurationStmt::_internal_set_replace(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.replace_ = value; } // bool missing_ok = 7 [json_name = "missing_ok"]; inline void AlterTSConfigurationStmt::clear_missing_ok() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.missing_ok_ = false; } inline bool AlterTSConfigurationStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.missing_ok) return _internal_missing_ok(); } inline void AlterTSConfigurationStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.missing_ok) } inline bool AlterTSConfigurationStmt::_internal_missing_ok() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.missing_ok_; } inline void AlterTSConfigurationStmt::_internal_set_missing_ok(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.missing_ok_ = value; } // ------------------------------------------------------------------- // PublicationTable // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool PublicationTable::has_relation() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.relation_ != nullptr); return value; } inline void PublicationTable::clear_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.relation_ != nullptr) _impl_.relation_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::RangeVar& PublicationTable::_internal_relation() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::RangeVar* p = _impl_.relation_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& PublicationTable::relation() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PublicationTable.relation) return _internal_relation(); } inline void PublicationTable::unsafe_arena_set_allocated_relation(::pg_query::RangeVar* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.relation_); } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PublicationTable.relation) } inline ::pg_query::RangeVar* PublicationTable::release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* released = _impl_.relation_; _impl_.relation_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::RangeVar* PublicationTable::unsafe_arena_release_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.PublicationTable.relation) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::RangeVar* temp = _impl_.relation_; _impl_.relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* PublicationTable::_internal_mutable_relation() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(p); } return _impl_.relation_; } inline ::pg_query::RangeVar* PublicationTable::mutable_relation() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::RangeVar* _msg = _internal_mutable_relation(); // @@protoc_insertion_point(field_mutable:pg_query.PublicationTable.relation) return _msg; } inline void PublicationTable::set_allocated_relation(::pg_query::RangeVar* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::RangeVar*>(_impl_.relation_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::RangeVar*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.relation_ = reinterpret_cast<::pg_query::RangeVar*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.PublicationTable.relation) } // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; inline bool PublicationTable::has_where_clause() const { bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0; PROTOBUF_ASSUME(!value || _impl_.where_clause_ != nullptr); return value; } inline void PublicationTable::clear_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.where_clause_ != nullptr) _impl_.where_clause_->Clear(); _impl_._has_bits_[0] &= ~0x00000002u; } inline const ::pg_query::Node& PublicationTable::_internal_where_clause() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::Node* p = _impl_.where_clause_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& PublicationTable::where_clause() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PublicationTable.where_clause) return _internal_where_clause(); } inline void PublicationTable::unsafe_arena_set_allocated_where_clause(::pg_query::Node* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.where_clause_); } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PublicationTable.where_clause) } inline ::pg_query::Node* PublicationTable::release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* released = _impl_.where_clause_; _impl_.where_clause_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::Node* PublicationTable::unsafe_arena_release_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.PublicationTable.where_clause) _impl_._has_bits_[0] &= ~0x00000002u; ::pg_query::Node* temp = _impl_.where_clause_; _impl_.where_clause_ = nullptr; return temp; } inline ::pg_query::Node* PublicationTable::_internal_mutable_where_clause() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000002u; if (_impl_.where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(p); } return _impl_.where_clause_; } inline ::pg_query::Node* PublicationTable::mutable_where_clause() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::Node* _msg = _internal_mutable_where_clause(); // @@protoc_insertion_point(field_mutable:pg_query.PublicationTable.where_clause) return _msg; } inline void PublicationTable::set_allocated_where_clause(::pg_query::Node* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::Node*>(_impl_.where_clause_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::Node*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000002u; } else { _impl_._has_bits_[0] &= ~0x00000002u; } _impl_.where_clause_ = reinterpret_cast<::pg_query::Node*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.PublicationTable.where_clause) } // repeated .pg_query.Node columns = 3 [json_name = "columns"]; inline int PublicationTable::_internal_columns_size() const { return _internal_columns().size(); } inline int PublicationTable::columns_size() const { return _internal_columns_size(); } inline void PublicationTable::clear_columns() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.columns_.Clear(); } inline ::pg_query::Node* PublicationTable::mutable_columns(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.PublicationTable.columns) return _internal_mutable_columns()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PublicationTable::mutable_columns() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.PublicationTable.columns) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_columns(); } inline const ::pg_query::Node& PublicationTable::columns(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PublicationTable.columns) return _internal_columns().Get(index); } inline ::pg_query::Node* PublicationTable::add_columns() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_columns()->Add(); // @@protoc_insertion_point(field_add:pg_query.PublicationTable.columns) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PublicationTable::columns() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.PublicationTable.columns) return _internal_columns(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& PublicationTable::_internal_columns() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.columns_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* PublicationTable::_internal_mutable_columns() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.columns_; } // ------------------------------------------------------------------- // PublicationObjSpec // .pg_query.PublicationObjSpecType pubobjtype = 1 [json_name = "pubobjtype"]; inline void PublicationObjSpec::clear_pubobjtype() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.pubobjtype_ = 0; } inline ::pg_query::PublicationObjSpecType PublicationObjSpec::pubobjtype() const { // @@protoc_insertion_point(field_get:pg_query.PublicationObjSpec.pubobjtype) return _internal_pubobjtype(); } inline void PublicationObjSpec::set_pubobjtype(::pg_query::PublicationObjSpecType value) { _internal_set_pubobjtype(value); // @@protoc_insertion_point(field_set:pg_query.PublicationObjSpec.pubobjtype) } inline ::pg_query::PublicationObjSpecType PublicationObjSpec::_internal_pubobjtype() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::PublicationObjSpecType>(_impl_.pubobjtype_); } inline void PublicationObjSpec::_internal_set_pubobjtype(::pg_query::PublicationObjSpecType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.pubobjtype_ = value; } // string name = 2 [json_name = "name"]; inline void PublicationObjSpec::clear_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.ClearToEmpty(); } inline const std::string& PublicationObjSpec::name() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PublicationObjSpec.name) return _internal_name(); } template inline PROTOBUF_ALWAYS_INLINE void PublicationObjSpec::set_name(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.PublicationObjSpec.name) } inline std::string* PublicationObjSpec::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_name(); // @@protoc_insertion_point(field_mutable:pg_query.PublicationObjSpec.name) return _s; } inline const std::string& PublicationObjSpec::_internal_name() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.name_.Get(); } inline void PublicationObjSpec::_internal_set_name(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.name_.Set(value, GetArena()); } inline std::string* PublicationObjSpec::_internal_mutable_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.name_.Mutable( GetArena()); } inline std::string* PublicationObjSpec::release_name() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.PublicationObjSpec.name) return _impl_.name_.Release(); } inline void PublicationObjSpec::set_allocated_name(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.name_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.name_.IsDefault()) { _impl_.name_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.PublicationObjSpec.name) } // .pg_query.PublicationTable pubtable = 3 [json_name = "pubtable"]; inline bool PublicationObjSpec::has_pubtable() const { bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0; PROTOBUF_ASSUME(!value || _impl_.pubtable_ != nullptr); return value; } inline void PublicationObjSpec::clear_pubtable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (_impl_.pubtable_ != nullptr) _impl_.pubtable_->Clear(); _impl_._has_bits_[0] &= ~0x00000001u; } inline const ::pg_query::PublicationTable& PublicationObjSpec::_internal_pubtable() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); const ::pg_query::PublicationTable* p = _impl_.pubtable_; return p != nullptr ? *p : reinterpret_cast(::pg_query::_PublicationTable_default_instance_); } inline const ::pg_query::PublicationTable& PublicationObjSpec::pubtable() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.PublicationObjSpec.pubtable) return _internal_pubtable(); } inline void PublicationObjSpec::unsafe_arena_set_allocated_pubtable(::pg_query::PublicationTable* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (GetArena() == nullptr) { delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.pubtable_); } _impl_.pubtable_ = reinterpret_cast<::pg_query::PublicationTable*>(value); if (value != nullptr) { _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PublicationObjSpec.pubtable) } inline ::pg_query::PublicationTable* PublicationObjSpec::release_pubtable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::PublicationTable* released = _impl_.pubtable_; _impl_.pubtable_ = nullptr; #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released); released = ::google::protobuf::internal::DuplicateIfNonNull(released); if (GetArena() == nullptr) { delete old; } #else // PROTOBUF_FORCE_COPY_IN_RELEASE if (GetArena() != nullptr) { released = ::google::protobuf::internal::DuplicateIfNonNull(released); } #endif // !PROTOBUF_FORCE_COPY_IN_RELEASE return released; } inline ::pg_query::PublicationTable* PublicationObjSpec::unsafe_arena_release_pubtable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.PublicationObjSpec.pubtable) _impl_._has_bits_[0] &= ~0x00000001u; ::pg_query::PublicationTable* temp = _impl_.pubtable_; _impl_.pubtable_ = nullptr; return temp; } inline ::pg_query::PublicationTable* PublicationObjSpec::_internal_mutable_pubtable() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_._has_bits_[0] |= 0x00000001u; if (_impl_.pubtable_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::PublicationTable>(GetArena()); _impl_.pubtable_ = reinterpret_cast<::pg_query::PublicationTable*>(p); } return _impl_.pubtable_; } inline ::pg_query::PublicationTable* PublicationObjSpec::mutable_pubtable() ABSL_ATTRIBUTE_LIFETIME_BOUND { ::pg_query::PublicationTable* _msg = _internal_mutable_pubtable(); // @@protoc_insertion_point(field_mutable:pg_query.PublicationObjSpec.pubtable) return _msg; } inline void PublicationObjSpec::set_allocated_pubtable(::pg_query::PublicationTable* value) { ::google::protobuf::Arena* message_arena = GetArena(); PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); if (message_arena == nullptr) { delete reinterpret_cast<::pg_query::PublicationTable*>(_impl_.pubtable_); } if (value != nullptr) { ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::pg_query::PublicationTable*>(value)->GetArena(); if (message_arena != submessage_arena) { value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena); } _impl_._has_bits_[0] |= 0x00000001u; } else { _impl_._has_bits_[0] &= ~0x00000001u; } _impl_.pubtable_ = reinterpret_cast<::pg_query::PublicationTable*>(value); // @@protoc_insertion_point(field_set_allocated:pg_query.PublicationObjSpec.pubtable) } // int32 location = 4 [json_name = "location"]; inline void PublicationObjSpec::clear_location() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.location_ = 0; } inline ::int32_t PublicationObjSpec::location() const { // @@protoc_insertion_point(field_get:pg_query.PublicationObjSpec.location) return _internal_location(); } inline void PublicationObjSpec::set_location(::int32_t value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PublicationObjSpec.location) } inline ::int32_t PublicationObjSpec::_internal_location() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.location_; } inline void PublicationObjSpec::_internal_set_location(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.location_ = value; } // ------------------------------------------------------------------- // CreatePublicationStmt // string pubname = 1 [json_name = "pubname"]; inline void CreatePublicationStmt::clear_pubname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.pubname_.ClearToEmpty(); } inline const std::string& CreatePublicationStmt::pubname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.pubname) return _internal_pubname(); } template inline PROTOBUF_ALWAYS_INLINE void CreatePublicationStmt::set_pubname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.pubname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreatePublicationStmt.pubname) } inline std::string* CreatePublicationStmt::mutable_pubname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_pubname(); // @@protoc_insertion_point(field_mutable:pg_query.CreatePublicationStmt.pubname) return _s; } inline const std::string& CreatePublicationStmt::_internal_pubname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.pubname_.Get(); } inline void CreatePublicationStmt::_internal_set_pubname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.pubname_.Set(value, GetArena()); } inline std::string* CreatePublicationStmt::_internal_mutable_pubname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.pubname_.Mutable( GetArena()); } inline std::string* CreatePublicationStmt::release_pubname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreatePublicationStmt.pubname) return _impl_.pubname_.Release(); } inline void CreatePublicationStmt::set_allocated_pubname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.pubname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.pubname_.IsDefault()) { _impl_.pubname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_options().size(); } inline int CreatePublicationStmt::options_size() const { return _internal_options_size(); } inline void CreatePublicationStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* CreatePublicationStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreatePublicationStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreatePublicationStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePublicationStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& CreatePublicationStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* CreatePublicationStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreatePublicationStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreatePublicationStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreatePublicationStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreatePublicationStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreatePublicationStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // repeated .pg_query.Node pubobjects = 3 [json_name = "pubobjects"]; inline int CreatePublicationStmt::_internal_pubobjects_size() const { return _internal_pubobjects().size(); } inline int CreatePublicationStmt::pubobjects_size() const { return _internal_pubobjects_size(); } inline void CreatePublicationStmt::clear_pubobjects() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.pubobjects_.Clear(); } inline ::pg_query::Node* CreatePublicationStmt::mutable_pubobjects(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreatePublicationStmt.pubobjects) return _internal_mutable_pubobjects()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreatePublicationStmt::mutable_pubobjects() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePublicationStmt.pubobjects) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_pubobjects(); } inline const ::pg_query::Node& CreatePublicationStmt::pubobjects(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.pubobjects) return _internal_pubobjects().Get(index); } inline ::pg_query::Node* CreatePublicationStmt::add_pubobjects() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_pubobjects()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreatePublicationStmt.pubobjects) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreatePublicationStmt::pubobjects() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreatePublicationStmt.pubobjects) return _internal_pubobjects(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreatePublicationStmt::_internal_pubobjects() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.pubobjects_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreatePublicationStmt::_internal_mutable_pubobjects() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.pubobjects_; } // bool for_all_tables = 4 [json_name = "for_all_tables"]; inline void CreatePublicationStmt::clear_for_all_tables() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.for_all_tables_ = false; } 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::set_for_all_tables(bool value) { _internal_set_for_all_tables(value); // @@protoc_insertion_point(field_set:pg_query.CreatePublicationStmt.for_all_tables) } inline bool CreatePublicationStmt::_internal_for_all_tables() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.for_all_tables_; } inline void CreatePublicationStmt::_internal_set_for_all_tables(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.for_all_tables_ = value; } // ------------------------------------------------------------------- // AlterPublicationStmt // string pubname = 1 [json_name = "pubname"]; inline void AlterPublicationStmt::clear_pubname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.pubname_.ClearToEmpty(); } inline const std::string& AlterPublicationStmt::pubname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.pubname) return _internal_pubname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterPublicationStmt::set_pubname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.pubname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterPublicationStmt.pubname) } inline std::string* AlterPublicationStmt::mutable_pubname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_pubname(); // @@protoc_insertion_point(field_mutable:pg_query.AlterPublicationStmt.pubname) return _s; } inline const std::string& AlterPublicationStmt::_internal_pubname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.pubname_.Get(); } inline void AlterPublicationStmt::_internal_set_pubname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.pubname_.Set(value, GetArena()); } inline std::string* AlterPublicationStmt::_internal_mutable_pubname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.pubname_.Mutable( GetArena()); } inline std::string* AlterPublicationStmt::release_pubname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterPublicationStmt.pubname) return _impl_.pubname_.Release(); } inline void AlterPublicationStmt::set_allocated_pubname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.pubname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.pubname_.IsDefault()) { _impl_.pubname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_options().size(); } inline int AlterPublicationStmt::options_size() const { return _internal_options_size(); } inline void AlterPublicationStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* AlterPublicationStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterPublicationStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterPublicationStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterPublicationStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& AlterPublicationStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* AlterPublicationStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterPublicationStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterPublicationStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterPublicationStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterPublicationStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterPublicationStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // repeated .pg_query.Node pubobjects = 3 [json_name = "pubobjects"]; inline int AlterPublicationStmt::_internal_pubobjects_size() const { return _internal_pubobjects().size(); } inline int AlterPublicationStmt::pubobjects_size() const { return _internal_pubobjects_size(); } inline void AlterPublicationStmt::clear_pubobjects() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.pubobjects_.Clear(); } inline ::pg_query::Node* AlterPublicationStmt::mutable_pubobjects(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterPublicationStmt.pubobjects) return _internal_mutable_pubobjects()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterPublicationStmt::mutable_pubobjects() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterPublicationStmt.pubobjects) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_pubobjects(); } inline const ::pg_query::Node& AlterPublicationStmt::pubobjects(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.pubobjects) return _internal_pubobjects().Get(index); } inline ::pg_query::Node* AlterPublicationStmt::add_pubobjects() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_pubobjects()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterPublicationStmt.pubobjects) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterPublicationStmt::pubobjects() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterPublicationStmt.pubobjects) return _internal_pubobjects(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterPublicationStmt::_internal_pubobjects() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.pubobjects_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterPublicationStmt::_internal_mutable_pubobjects() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.pubobjects_; } // bool for_all_tables = 4 [json_name = "for_all_tables"]; inline void AlterPublicationStmt::clear_for_all_tables() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.for_all_tables_ = false; } 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::set_for_all_tables(bool value) { _internal_set_for_all_tables(value); // @@protoc_insertion_point(field_set:pg_query.AlterPublicationStmt.for_all_tables) } inline bool AlterPublicationStmt::_internal_for_all_tables() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.for_all_tables_; } inline void AlterPublicationStmt::_internal_set_for_all_tables(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.for_all_tables_ = value; } // .pg_query.AlterPublicationAction action = 5 [json_name = "action"]; inline void AlterPublicationStmt::clear_action() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.action_ = 0; } inline ::pg_query::AlterPublicationAction AlterPublicationStmt::action() const { // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.action) return _internal_action(); } inline void AlterPublicationStmt::set_action(::pg_query::AlterPublicationAction value) { _internal_set_action(value); // @@protoc_insertion_point(field_set:pg_query.AlterPublicationStmt.action) } inline ::pg_query::AlterPublicationAction AlterPublicationStmt::_internal_action() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::AlterPublicationAction>(_impl_.action_); } inline void AlterPublicationStmt::_internal_set_action(::pg_query::AlterPublicationAction value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.action_ = value; } // ------------------------------------------------------------------- // CreateSubscriptionStmt // string subname = 1 [json_name = "subname"]; inline void CreateSubscriptionStmt::clear_subname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.subname_.ClearToEmpty(); } inline const std::string& CreateSubscriptionStmt::subname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.subname) return _internal_subname(); } template inline PROTOBUF_ALWAYS_INLINE void CreateSubscriptionStmt::set_subname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.subname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateSubscriptionStmt.subname) } inline std::string* CreateSubscriptionStmt::mutable_subname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_subname(); // @@protoc_insertion_point(field_mutable:pg_query.CreateSubscriptionStmt.subname) return _s; } inline const std::string& CreateSubscriptionStmt::_internal_subname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.subname_.Get(); } inline void CreateSubscriptionStmt::_internal_set_subname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.subname_.Set(value, GetArena()); } inline std::string* CreateSubscriptionStmt::_internal_mutable_subname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.subname_.Mutable( GetArena()); } inline std::string* CreateSubscriptionStmt::release_subname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateSubscriptionStmt.subname) return _impl_.subname_.Release(); } inline void CreateSubscriptionStmt::set_allocated_subname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.subname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.subname_.IsDefault()) { _impl_.subname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.CreateSubscriptionStmt.subname) } // string conninfo = 2 [json_name = "conninfo"]; inline void CreateSubscriptionStmt::clear_conninfo() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conninfo_.ClearToEmpty(); } inline const std::string& CreateSubscriptionStmt::conninfo() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.conninfo) return _internal_conninfo(); } template inline PROTOBUF_ALWAYS_INLINE void CreateSubscriptionStmt::set_conninfo(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.conninfo_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.CreateSubscriptionStmt.conninfo) } inline std::string* CreateSubscriptionStmt::mutable_conninfo() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_conninfo(); // @@protoc_insertion_point(field_mutable:pg_query.CreateSubscriptionStmt.conninfo) return _s; } inline const std::string& CreateSubscriptionStmt::_internal_conninfo() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.conninfo_.Get(); } inline void CreateSubscriptionStmt::_internal_set_conninfo(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.conninfo_.Set(value, GetArena()); } inline std::string* CreateSubscriptionStmt::_internal_mutable_conninfo() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.conninfo_.Mutable( GetArena()); } inline std::string* CreateSubscriptionStmt::release_conninfo() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.CreateSubscriptionStmt.conninfo) return _impl_.conninfo_.Release(); } inline void CreateSubscriptionStmt::set_allocated_conninfo(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conninfo_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.conninfo_.IsDefault()) { _impl_.conninfo_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_publication().size(); } inline int CreateSubscriptionStmt::publication_size() const { return _internal_publication_size(); } inline void CreateSubscriptionStmt::clear_publication() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.publication_.Clear(); } inline ::pg_query::Node* CreateSubscriptionStmt::mutable_publication(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateSubscriptionStmt.publication) return _internal_mutable_publication()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateSubscriptionStmt::mutable_publication() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSubscriptionStmt.publication) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_publication(); } inline const ::pg_query::Node& CreateSubscriptionStmt::publication(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.publication) return _internal_publication().Get(index); } inline ::pg_query::Node* CreateSubscriptionStmt::add_publication() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_publication()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateSubscriptionStmt.publication) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateSubscriptionStmt::publication() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateSubscriptionStmt.publication) return _internal_publication(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateSubscriptionStmt::_internal_publication() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.publication_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateSubscriptionStmt::_internal_mutable_publication() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.publication_; } // repeated .pg_query.Node options = 4 [json_name = "options"]; inline int CreateSubscriptionStmt::_internal_options_size() const { return _internal_options().size(); } inline int CreateSubscriptionStmt::options_size() const { return _internal_options_size(); } inline void CreateSubscriptionStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* CreateSubscriptionStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.CreateSubscriptionStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateSubscriptionStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSubscriptionStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& CreateSubscriptionStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* CreateSubscriptionStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.CreateSubscriptionStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateSubscriptionStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.CreateSubscriptionStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& CreateSubscriptionStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* CreateSubscriptionStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // AlterSubscriptionStmt // .pg_query.AlterSubscriptionType kind = 1 [json_name = "kind"]; inline void AlterSubscriptionStmt::clear_kind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.kind_ = 0; } inline ::pg_query::AlterSubscriptionType AlterSubscriptionStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.kind) return _internal_kind(); } inline void AlterSubscriptionStmt::set_kind(::pg_query::AlterSubscriptionType value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.AlterSubscriptionStmt.kind) } inline ::pg_query::AlterSubscriptionType AlterSubscriptionStmt::_internal_kind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::AlterSubscriptionType>(_impl_.kind_); } inline void AlterSubscriptionStmt::_internal_set_kind(::pg_query::AlterSubscriptionType value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.kind_ = value; } // string subname = 2 [json_name = "subname"]; inline void AlterSubscriptionStmt::clear_subname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.subname_.ClearToEmpty(); } inline const std::string& AlterSubscriptionStmt::subname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.subname) return _internal_subname(); } template inline PROTOBUF_ALWAYS_INLINE void AlterSubscriptionStmt::set_subname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.subname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterSubscriptionStmt.subname) } inline std::string* AlterSubscriptionStmt::mutable_subname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_subname(); // @@protoc_insertion_point(field_mutable:pg_query.AlterSubscriptionStmt.subname) return _s; } inline const std::string& AlterSubscriptionStmt::_internal_subname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.subname_.Get(); } inline void AlterSubscriptionStmt::_internal_set_subname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.subname_.Set(value, GetArena()); } inline std::string* AlterSubscriptionStmt::_internal_mutable_subname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.subname_.Mutable( GetArena()); } inline std::string* AlterSubscriptionStmt::release_subname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterSubscriptionStmt.subname) return _impl_.subname_.Release(); } inline void AlterSubscriptionStmt::set_allocated_subname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.subname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.subname_.IsDefault()) { _impl_.subname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.AlterSubscriptionStmt.subname) } // string conninfo = 3 [json_name = "conninfo"]; inline void AlterSubscriptionStmt::clear_conninfo() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conninfo_.ClearToEmpty(); } inline const std::string& AlterSubscriptionStmt::conninfo() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.conninfo) return _internal_conninfo(); } template inline PROTOBUF_ALWAYS_INLINE void AlterSubscriptionStmt::set_conninfo(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.conninfo_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.AlterSubscriptionStmt.conninfo) } inline std::string* AlterSubscriptionStmt::mutable_conninfo() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_conninfo(); // @@protoc_insertion_point(field_mutable:pg_query.AlterSubscriptionStmt.conninfo) return _s; } inline const std::string& AlterSubscriptionStmt::_internal_conninfo() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.conninfo_.Get(); } inline void AlterSubscriptionStmt::_internal_set_conninfo(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.conninfo_.Set(value, GetArena()); } inline std::string* AlterSubscriptionStmt::_internal_mutable_conninfo() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.conninfo_.Mutable( GetArena()); } inline std::string* AlterSubscriptionStmt::release_conninfo() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.AlterSubscriptionStmt.conninfo) return _impl_.conninfo_.Release(); } inline void AlterSubscriptionStmt::set_allocated_conninfo(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.conninfo_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.conninfo_.IsDefault()) { _impl_.conninfo_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@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 _internal_publication().size(); } inline int AlterSubscriptionStmt::publication_size() const { return _internal_publication_size(); } inline void AlterSubscriptionStmt::clear_publication() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.publication_.Clear(); } inline ::pg_query::Node* AlterSubscriptionStmt::mutable_publication(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterSubscriptionStmt.publication) return _internal_mutable_publication()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterSubscriptionStmt::mutable_publication() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterSubscriptionStmt.publication) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_publication(); } inline const ::pg_query::Node& AlterSubscriptionStmt::publication(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.publication) return _internal_publication().Get(index); } inline ::pg_query::Node* AlterSubscriptionStmt::add_publication() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_publication()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterSubscriptionStmt.publication) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterSubscriptionStmt::publication() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterSubscriptionStmt.publication) return _internal_publication(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterSubscriptionStmt::_internal_publication() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.publication_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterSubscriptionStmt::_internal_mutable_publication() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.publication_; } // repeated .pg_query.Node options = 5 [json_name = "options"]; inline int AlterSubscriptionStmt::_internal_options_size() const { return _internal_options().size(); } inline int AlterSubscriptionStmt::options_size() const { return _internal_options_size(); } inline void AlterSubscriptionStmt::clear_options() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.options_.Clear(); } inline ::pg_query::Node* AlterSubscriptionStmt::mutable_options(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:pg_query.AlterSubscriptionStmt.options) return _internal_mutable_options()->Mutable(index); } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterSubscriptionStmt::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterSubscriptionStmt.options) PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); return _internal_mutable_options(); } inline const ::pg_query::Node& AlterSubscriptionStmt::options(int index) const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.options) return _internal_options().Get(index); } inline ::pg_query::Node* AlterSubscriptionStmt::add_options() ABSL_ATTRIBUTE_LIFETIME_BOUND { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ::pg_query::Node* _add = _internal_mutable_options()->Add(); // @@protoc_insertion_point(field_add:pg_query.AlterSubscriptionStmt.options) return _add; } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterSubscriptionStmt::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_list:pg_query.AlterSubscriptionStmt.options) return _internal_options(); } inline const ::google::protobuf::RepeatedPtrField<::pg_query::Node>& AlterSubscriptionStmt::_internal_options() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.options_; } inline ::google::protobuf::RepeatedPtrField<::pg_query::Node>* AlterSubscriptionStmt::_internal_mutable_options() { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return &_impl_.options_; } // ------------------------------------------------------------------- // DropSubscriptionStmt // string subname = 1 [json_name = "subname"]; inline void DropSubscriptionStmt::clear_subname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.subname_.ClearToEmpty(); } inline const std::string& DropSubscriptionStmt::subname() const ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_get:pg_query.DropSubscriptionStmt.subname) return _internal_subname(); } template inline PROTOBUF_ALWAYS_INLINE void DropSubscriptionStmt::set_subname(Arg_&& arg, Args_... args) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.subname_.Set(static_cast(arg), args..., GetArena()); // @@protoc_insertion_point(field_set:pg_query.DropSubscriptionStmt.subname) } inline std::string* DropSubscriptionStmt::mutable_subname() ABSL_ATTRIBUTE_LIFETIME_BOUND { std::string* _s = _internal_mutable_subname(); // @@protoc_insertion_point(field_mutable:pg_query.DropSubscriptionStmt.subname) return _s; } inline const std::string& DropSubscriptionStmt::_internal_subname() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.subname_.Get(); } inline void DropSubscriptionStmt::_internal_set_subname(const std::string& value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.subname_.Set(value, GetArena()); } inline std::string* DropSubscriptionStmt::_internal_mutable_subname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; return _impl_.subname_.Mutable( GetArena()); } inline std::string* DropSubscriptionStmt::release_subname() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); // @@protoc_insertion_point(field_release:pg_query.DropSubscriptionStmt.subname) return _impl_.subname_.Release(); } inline void DropSubscriptionStmt::set_allocated_subname(std::string* value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.subname_.SetAllocated(value, GetArena()); #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING if (_impl_.subname_.IsDefault()) { _impl_.subname_.Set("", GetArena()); } #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING // @@protoc_insertion_point(field_set_allocated:pg_query.DropSubscriptionStmt.subname) } // bool missing_ok = 2 [json_name = "missing_ok"]; inline void DropSubscriptionStmt::clear_missing_ok() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.missing_ok_ = false; } inline bool DropSubscriptionStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropSubscriptionStmt.missing_ok) return _internal_missing_ok(); } inline void DropSubscriptionStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropSubscriptionStmt.missing_ok) } inline bool DropSubscriptionStmt::_internal_missing_ok() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.missing_ok_; } inline void DropSubscriptionStmt::_internal_set_missing_ok(bool value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.missing_ok_ = value; } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; inline void DropSubscriptionStmt::clear_behavior() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.behavior_ = 0; } inline ::pg_query::DropBehavior DropSubscriptionStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.DropSubscriptionStmt.behavior) return _internal_behavior(); } inline void DropSubscriptionStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.DropSubscriptionStmt.behavior) } inline ::pg_query::DropBehavior DropSubscriptionStmt::_internal_behavior() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::DropBehavior>(_impl_.behavior_); } inline void DropSubscriptionStmt::_internal_set_behavior(::pg_query::DropBehavior value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.behavior_ = value; } // ------------------------------------------------------------------- // ScanToken // int32 start = 1; inline void ScanToken::clear_start() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.start_ = 0; } inline ::int32_t ScanToken::start() const { // @@protoc_insertion_point(field_get:pg_query.ScanToken.start) return _internal_start(); } inline void ScanToken::set_start(::int32_t value) { _internal_set_start(value); // @@protoc_insertion_point(field_set:pg_query.ScanToken.start) } inline ::int32_t ScanToken::_internal_start() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.start_; } inline void ScanToken::_internal_set_start(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.start_ = value; } // int32 end = 2; inline void ScanToken::clear_end() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.end_ = 0; } inline ::int32_t ScanToken::end() const { // @@protoc_insertion_point(field_get:pg_query.ScanToken.end) return _internal_end(); } inline void ScanToken::set_end(::int32_t value) { _internal_set_end(value); // @@protoc_insertion_point(field_set:pg_query.ScanToken.end) } inline ::int32_t ScanToken::_internal_end() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return _impl_.end_; } inline void ScanToken::_internal_set_end(::int32_t value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.end_ = value; } // .pg_query.Token token = 4; inline void ScanToken::clear_token() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.token_ = 0; } inline ::pg_query::Token ScanToken::token() const { // @@protoc_insertion_point(field_get:pg_query.ScanToken.token) return _internal_token(); } inline void ScanToken::set_token(::pg_query::Token value) { _internal_set_token(value); // @@protoc_insertion_point(field_set:pg_query.ScanToken.token) } inline ::pg_query::Token ScanToken::_internal_token() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::Token>(_impl_.token_); } inline void ScanToken::_internal_set_token(::pg_query::Token value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.token_ = value; } // .pg_query.KeywordKind keyword_kind = 5; inline void ScanToken::clear_keyword_kind() { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); _impl_.keyword_kind_ = 0; } 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::set_keyword_kind(::pg_query::KeywordKind value) { _internal_set_keyword_kind(value); // @@protoc_insertion_point(field_set:pg_query.ScanToken.keyword_kind) } inline ::pg_query::KeywordKind ScanToken::_internal_keyword_kind() const { PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race); return static_cast<::pg_query::KeywordKind>(_impl_.keyword_kind_); } inline void ScanToken::_internal_set_keyword_kind(::pg_query::KeywordKind value) { PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race); ; _impl_.keyword_kind_ = value; } #ifdef __GNUC__ #pragma GCC diagnostic pop #endif // __GNUC__ // @@protoc_insertion_point(namespace_scope) } // namespace pg_query namespace google { namespace protobuf { 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::SetQuantifier> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::SetQuantifier>() { return ::pg_query::SetQuantifier_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::PartitionStrategy> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::PartitionStrategy>() { return ::pg_query::PartitionStrategy_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::JsonQuotes> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::JsonQuotes>() { return ::pg_query::JsonQuotes_descriptor(); } template <> struct is_proto_enum<::pg_query::JsonTableColumnType> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::JsonTableColumnType>() { return ::pg_query::JsonTableColumnType_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::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::PublicationObjSpecType> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::PublicationObjSpecType>() { return ::pg_query::PublicationObjSpecType_descriptor(); } template <> struct is_proto_enum<::pg_query::AlterPublicationAction> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::AlterPublicationAction>() { return ::pg_query::AlterPublicationAction_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::OverridingKind> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::OverridingKind>() { return ::pg_query::OverridingKind_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::TableFuncType> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::TableFuncType>() { return ::pg_query::TableFuncType_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::JsonEncoding> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::JsonEncoding>() { return ::pg_query::JsonEncoding_descriptor(); } template <> struct is_proto_enum<::pg_query::JsonFormatType> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::JsonFormatType>() { return ::pg_query::JsonFormatType_descriptor(); } template <> struct is_proto_enum<::pg_query::JsonConstructorType> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::JsonConstructorType>() { return ::pg_query::JsonConstructorType_descriptor(); } template <> struct is_proto_enum<::pg_query::JsonValueType> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::JsonValueType>() { return ::pg_query::JsonValueType_descriptor(); } template <> struct is_proto_enum<::pg_query::JsonWrapper> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::JsonWrapper>() { return ::pg_query::JsonWrapper_descriptor(); } template <> struct is_proto_enum<::pg_query::JsonBehaviorType> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::JsonBehaviorType>() { return ::pg_query::JsonBehaviorType_descriptor(); } template <> struct is_proto_enum<::pg_query::JsonExprOp> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::JsonExprOp>() { return ::pg_query::JsonExprOp_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::MergeMatchKind> : std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor<::pg_query::MergeMatchKind>() { return ::pg_query::MergeMatchKind_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(); } } // namespace protobuf } // namespace google // @@protoc_insertion_point(global_scope) #include "google/protobuf/port_undef.inc" #endif // GOOGLE_PROTOBUF_INCLUDED_protobuf_2fpg_5fquery_2eproto_2epb_2eh libpg_query-17-6.1.0/protobuf/pg_query.proto000066400000000000000000003505201477334012600210610ustar00rootroot00000000000000// 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"]; IntoClause into_clause = 4 [json_name="IntoClause"]; 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"]; WindowFuncRunCondition window_func_run_condition = 10 [json_name="WindowFuncRunCondition"]; MergeSupportFunc merge_support_func = 11 [json_name="MergeSupportFunc"]; SubscriptingRef subscripting_ref = 12 [json_name="SubscriptingRef"]; FuncExpr func_expr = 13 [json_name="FuncExpr"]; NamedArgExpr named_arg_expr = 14 [json_name="NamedArgExpr"]; OpExpr op_expr = 15 [json_name="OpExpr"]; DistinctExpr distinct_expr = 16 [json_name="DistinctExpr"]; NullIfExpr null_if_expr = 17 [json_name="NullIfExpr"]; ScalarArrayOpExpr scalar_array_op_expr = 18 [json_name="ScalarArrayOpExpr"]; BoolExpr bool_expr = 19 [json_name="BoolExpr"]; SubLink sub_link = 20 [json_name="SubLink"]; SubPlan sub_plan = 21 [json_name="SubPlan"]; AlternativeSubPlan alternative_sub_plan = 22 [json_name="AlternativeSubPlan"]; FieldSelect field_select = 23 [json_name="FieldSelect"]; FieldStore field_store = 24 [json_name="FieldStore"]; RelabelType relabel_type = 25 [json_name="RelabelType"]; CoerceViaIO coerce_via_io = 26 [json_name="CoerceViaIO"]; ArrayCoerceExpr array_coerce_expr = 27 [json_name="ArrayCoerceExpr"]; ConvertRowtypeExpr convert_rowtype_expr = 28 [json_name="ConvertRowtypeExpr"]; CollateExpr collate_expr = 29 [json_name="CollateExpr"]; CaseExpr case_expr = 30 [json_name="CaseExpr"]; CaseWhen case_when = 31 [json_name="CaseWhen"]; CaseTestExpr case_test_expr = 32 [json_name="CaseTestExpr"]; ArrayExpr array_expr = 33 [json_name="ArrayExpr"]; RowExpr row_expr = 34 [json_name="RowExpr"]; RowCompareExpr row_compare_expr = 35 [json_name="RowCompareExpr"]; CoalesceExpr coalesce_expr = 36 [json_name="CoalesceExpr"]; MinMaxExpr min_max_expr = 37 [json_name="MinMaxExpr"]; SQLValueFunction sqlvalue_function = 38 [json_name="SQLValueFunction"]; XmlExpr xml_expr = 39 [json_name="XmlExpr"]; JsonFormat json_format = 40 [json_name="JsonFormat"]; JsonReturning json_returning = 41 [json_name="JsonReturning"]; JsonValueExpr json_value_expr = 42 [json_name="JsonValueExpr"]; JsonConstructorExpr json_constructor_expr = 43 [json_name="JsonConstructorExpr"]; JsonIsPredicate json_is_predicate = 44 [json_name="JsonIsPredicate"]; JsonBehavior json_behavior = 45 [json_name="JsonBehavior"]; JsonExpr json_expr = 46 [json_name="JsonExpr"]; JsonTablePath json_table_path = 47 [json_name="JsonTablePath"]; JsonTablePathScan json_table_path_scan = 48 [json_name="JsonTablePathScan"]; JsonTableSiblingJoin json_table_sibling_join = 49 [json_name="JsonTableSiblingJoin"]; NullTest null_test = 50 [json_name="NullTest"]; BooleanTest boolean_test = 51 [json_name="BooleanTest"]; MergeAction merge_action = 52 [json_name="MergeAction"]; CoerceToDomain coerce_to_domain = 53 [json_name="CoerceToDomain"]; CoerceToDomainValue coerce_to_domain_value = 54 [json_name="CoerceToDomainValue"]; SetToDefault set_to_default = 55 [json_name="SetToDefault"]; CurrentOfExpr current_of_expr = 56 [json_name="CurrentOfExpr"]; NextValueExpr next_value_expr = 57 [json_name="NextValueExpr"]; InferenceElem inference_elem = 58 [json_name="InferenceElem"]; TargetEntry target_entry = 59 [json_name="TargetEntry"]; RangeTblRef range_tbl_ref = 60 [json_name="RangeTblRef"]; JoinExpr join_expr = 61 [json_name="JoinExpr"]; FromExpr from_expr = 62 [json_name="FromExpr"]; OnConflictExpr on_conflict_expr = 63 [json_name="OnConflictExpr"]; Query query = 64 [json_name="Query"]; TypeName type_name = 65 [json_name="TypeName"]; ColumnRef column_ref = 66 [json_name="ColumnRef"]; ParamRef param_ref = 67 [json_name="ParamRef"]; A_Expr a_expr = 68 [json_name="A_Expr"]; TypeCast type_cast = 69 [json_name="TypeCast"]; CollateClause collate_clause = 70 [json_name="CollateClause"]; RoleSpec role_spec = 71 [json_name="RoleSpec"]; FuncCall func_call = 72 [json_name="FuncCall"]; A_Star a_star = 73 [json_name="A_Star"]; A_Indices a_indices = 74 [json_name="A_Indices"]; A_Indirection a_indirection = 75 [json_name="A_Indirection"]; A_ArrayExpr a_array_expr = 76 [json_name="A_ArrayExpr"]; ResTarget res_target = 77 [json_name="ResTarget"]; MultiAssignRef multi_assign_ref = 78 [json_name="MultiAssignRef"]; SortBy sort_by = 79 [json_name="SortBy"]; WindowDef window_def = 80 [json_name="WindowDef"]; RangeSubselect range_subselect = 81 [json_name="RangeSubselect"]; RangeFunction range_function = 82 [json_name="RangeFunction"]; RangeTableFunc range_table_func = 83 [json_name="RangeTableFunc"]; RangeTableFuncCol range_table_func_col = 84 [json_name="RangeTableFuncCol"]; RangeTableSample range_table_sample = 85 [json_name="RangeTableSample"]; ColumnDef column_def = 86 [json_name="ColumnDef"]; TableLikeClause table_like_clause = 87 [json_name="TableLikeClause"]; IndexElem index_elem = 88 [json_name="IndexElem"]; DefElem def_elem = 89 [json_name="DefElem"]; LockingClause locking_clause = 90 [json_name="LockingClause"]; XmlSerialize xml_serialize = 91 [json_name="XmlSerialize"]; PartitionElem partition_elem = 92 [json_name="PartitionElem"]; PartitionSpec partition_spec = 93 [json_name="PartitionSpec"]; PartitionBoundSpec partition_bound_spec = 94 [json_name="PartitionBoundSpec"]; PartitionRangeDatum partition_range_datum = 95 [json_name="PartitionRangeDatum"]; SinglePartitionSpec single_partition_spec = 96 [json_name="SinglePartitionSpec"]; PartitionCmd partition_cmd = 97 [json_name="PartitionCmd"]; RangeTblEntry range_tbl_entry = 98 [json_name="RangeTblEntry"]; RTEPermissionInfo rtepermission_info = 99 [json_name="RTEPermissionInfo"]; RangeTblFunction range_tbl_function = 100 [json_name="RangeTblFunction"]; TableSampleClause table_sample_clause = 101 [json_name="TableSampleClause"]; WithCheckOption with_check_option = 102 [json_name="WithCheckOption"]; SortGroupClause sort_group_clause = 103 [json_name="SortGroupClause"]; GroupingSet grouping_set = 104 [json_name="GroupingSet"]; WindowClause window_clause = 105 [json_name="WindowClause"]; RowMarkClause row_mark_clause = 106 [json_name="RowMarkClause"]; WithClause with_clause = 107 [json_name="WithClause"]; InferClause infer_clause = 108 [json_name="InferClause"]; OnConflictClause on_conflict_clause = 109 [json_name="OnConflictClause"]; CTESearchClause ctesearch_clause = 110 [json_name="CTESearchClause"]; CTECycleClause ctecycle_clause = 111 [json_name="CTECycleClause"]; CommonTableExpr common_table_expr = 112 [json_name="CommonTableExpr"]; MergeWhenClause merge_when_clause = 113 [json_name="MergeWhenClause"]; TriggerTransition trigger_transition = 114 [json_name="TriggerTransition"]; JsonOutput json_output = 115 [json_name="JsonOutput"]; JsonArgument json_argument = 116 [json_name="JsonArgument"]; JsonFuncExpr json_func_expr = 117 [json_name="JsonFuncExpr"]; JsonTablePathSpec json_table_path_spec = 118 [json_name="JsonTablePathSpec"]; JsonTable json_table = 119 [json_name="JsonTable"]; JsonTableColumn json_table_column = 120 [json_name="JsonTableColumn"]; JsonKeyValue json_key_value = 121 [json_name="JsonKeyValue"]; JsonParseExpr json_parse_expr = 122 [json_name="JsonParseExpr"]; JsonScalarExpr json_scalar_expr = 123 [json_name="JsonScalarExpr"]; JsonSerializeExpr json_serialize_expr = 124 [json_name="JsonSerializeExpr"]; JsonObjectConstructor json_object_constructor = 125 [json_name="JsonObjectConstructor"]; JsonArrayConstructor json_array_constructor = 126 [json_name="JsonArrayConstructor"]; JsonArrayQueryConstructor json_array_query_constructor = 127 [json_name="JsonArrayQueryConstructor"]; JsonAggConstructor json_agg_constructor = 128 [json_name="JsonAggConstructor"]; JsonObjectAgg json_object_agg = 129 [json_name="JsonObjectAgg"]; JsonArrayAgg json_array_agg = 130 [json_name="JsonArrayAgg"]; RawStmt raw_stmt = 131 [json_name="RawStmt"]; InsertStmt insert_stmt = 132 [json_name="InsertStmt"]; DeleteStmt delete_stmt = 133 [json_name="DeleteStmt"]; UpdateStmt update_stmt = 134 [json_name="UpdateStmt"]; MergeStmt merge_stmt = 135 [json_name="MergeStmt"]; SelectStmt select_stmt = 136 [json_name="SelectStmt"]; SetOperationStmt set_operation_stmt = 137 [json_name="SetOperationStmt"]; ReturnStmt return_stmt = 138 [json_name="ReturnStmt"]; PLAssignStmt plassign_stmt = 139 [json_name="PLAssignStmt"]; CreateSchemaStmt create_schema_stmt = 140 [json_name="CreateSchemaStmt"]; AlterTableStmt alter_table_stmt = 141 [json_name="AlterTableStmt"]; ReplicaIdentityStmt replica_identity_stmt = 142 [json_name="ReplicaIdentityStmt"]; AlterTableCmd alter_table_cmd = 143 [json_name="AlterTableCmd"]; AlterCollationStmt alter_collation_stmt = 144 [json_name="AlterCollationStmt"]; AlterDomainStmt alter_domain_stmt = 145 [json_name="AlterDomainStmt"]; GrantStmt grant_stmt = 146 [json_name="GrantStmt"]; ObjectWithArgs object_with_args = 147 [json_name="ObjectWithArgs"]; AccessPriv access_priv = 148 [json_name="AccessPriv"]; GrantRoleStmt grant_role_stmt = 149 [json_name="GrantRoleStmt"]; AlterDefaultPrivilegesStmt alter_default_privileges_stmt = 150 [json_name="AlterDefaultPrivilegesStmt"]; CopyStmt copy_stmt = 151 [json_name="CopyStmt"]; VariableSetStmt variable_set_stmt = 152 [json_name="VariableSetStmt"]; VariableShowStmt variable_show_stmt = 153 [json_name="VariableShowStmt"]; CreateStmt create_stmt = 154 [json_name="CreateStmt"]; Constraint constraint = 155 [json_name="Constraint"]; CreateTableSpaceStmt create_table_space_stmt = 156 [json_name="CreateTableSpaceStmt"]; DropTableSpaceStmt drop_table_space_stmt = 157 [json_name="DropTableSpaceStmt"]; AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 158 [json_name="AlterTableSpaceOptionsStmt"]; AlterTableMoveAllStmt alter_table_move_all_stmt = 159 [json_name="AlterTableMoveAllStmt"]; CreateExtensionStmt create_extension_stmt = 160 [json_name="CreateExtensionStmt"]; AlterExtensionStmt alter_extension_stmt = 161 [json_name="AlterExtensionStmt"]; AlterExtensionContentsStmt alter_extension_contents_stmt = 162 [json_name="AlterExtensionContentsStmt"]; CreateFdwStmt create_fdw_stmt = 163 [json_name="CreateFdwStmt"]; AlterFdwStmt alter_fdw_stmt = 164 [json_name="AlterFdwStmt"]; CreateForeignServerStmt create_foreign_server_stmt = 165 [json_name="CreateForeignServerStmt"]; AlterForeignServerStmt alter_foreign_server_stmt = 166 [json_name="AlterForeignServerStmt"]; CreateForeignTableStmt create_foreign_table_stmt = 167 [json_name="CreateForeignTableStmt"]; CreateUserMappingStmt create_user_mapping_stmt = 168 [json_name="CreateUserMappingStmt"]; AlterUserMappingStmt alter_user_mapping_stmt = 169 [json_name="AlterUserMappingStmt"]; DropUserMappingStmt drop_user_mapping_stmt = 170 [json_name="DropUserMappingStmt"]; ImportForeignSchemaStmt import_foreign_schema_stmt = 171 [json_name="ImportForeignSchemaStmt"]; CreatePolicyStmt create_policy_stmt = 172 [json_name="CreatePolicyStmt"]; AlterPolicyStmt alter_policy_stmt = 173 [json_name="AlterPolicyStmt"]; CreateAmStmt create_am_stmt = 174 [json_name="CreateAmStmt"]; CreateTrigStmt create_trig_stmt = 175 [json_name="CreateTrigStmt"]; CreateEventTrigStmt create_event_trig_stmt = 176 [json_name="CreateEventTrigStmt"]; AlterEventTrigStmt alter_event_trig_stmt = 177 [json_name="AlterEventTrigStmt"]; CreatePLangStmt create_plang_stmt = 178 [json_name="CreatePLangStmt"]; CreateRoleStmt create_role_stmt = 179 [json_name="CreateRoleStmt"]; AlterRoleStmt alter_role_stmt = 180 [json_name="AlterRoleStmt"]; AlterRoleSetStmt alter_role_set_stmt = 181 [json_name="AlterRoleSetStmt"]; DropRoleStmt drop_role_stmt = 182 [json_name="DropRoleStmt"]; CreateSeqStmt create_seq_stmt = 183 [json_name="CreateSeqStmt"]; AlterSeqStmt alter_seq_stmt = 184 [json_name="AlterSeqStmt"]; DefineStmt define_stmt = 185 [json_name="DefineStmt"]; CreateDomainStmt create_domain_stmt = 186 [json_name="CreateDomainStmt"]; CreateOpClassStmt create_op_class_stmt = 187 [json_name="CreateOpClassStmt"]; CreateOpClassItem create_op_class_item = 188 [json_name="CreateOpClassItem"]; CreateOpFamilyStmt create_op_family_stmt = 189 [json_name="CreateOpFamilyStmt"]; AlterOpFamilyStmt alter_op_family_stmt = 190 [json_name="AlterOpFamilyStmt"]; DropStmt drop_stmt = 191 [json_name="DropStmt"]; TruncateStmt truncate_stmt = 192 [json_name="TruncateStmt"]; CommentStmt comment_stmt = 193 [json_name="CommentStmt"]; SecLabelStmt sec_label_stmt = 194 [json_name="SecLabelStmt"]; DeclareCursorStmt declare_cursor_stmt = 195 [json_name="DeclareCursorStmt"]; ClosePortalStmt close_portal_stmt = 196 [json_name="ClosePortalStmt"]; FetchStmt fetch_stmt = 197 [json_name="FetchStmt"]; IndexStmt index_stmt = 198 [json_name="IndexStmt"]; CreateStatsStmt create_stats_stmt = 199 [json_name="CreateStatsStmt"]; StatsElem stats_elem = 200 [json_name="StatsElem"]; AlterStatsStmt alter_stats_stmt = 201 [json_name="AlterStatsStmt"]; CreateFunctionStmt create_function_stmt = 202 [json_name="CreateFunctionStmt"]; FunctionParameter function_parameter = 203 [json_name="FunctionParameter"]; AlterFunctionStmt alter_function_stmt = 204 [json_name="AlterFunctionStmt"]; DoStmt do_stmt = 205 [json_name="DoStmt"]; InlineCodeBlock inline_code_block = 206 [json_name="InlineCodeBlock"]; CallStmt call_stmt = 207 [json_name="CallStmt"]; CallContext call_context = 208 [json_name="CallContext"]; RenameStmt rename_stmt = 209 [json_name="RenameStmt"]; AlterObjectDependsStmt alter_object_depends_stmt = 210 [json_name="AlterObjectDependsStmt"]; AlterObjectSchemaStmt alter_object_schema_stmt = 211 [json_name="AlterObjectSchemaStmt"]; AlterOwnerStmt alter_owner_stmt = 212 [json_name="AlterOwnerStmt"]; AlterOperatorStmt alter_operator_stmt = 213 [json_name="AlterOperatorStmt"]; AlterTypeStmt alter_type_stmt = 214 [json_name="AlterTypeStmt"]; RuleStmt rule_stmt = 215 [json_name="RuleStmt"]; NotifyStmt notify_stmt = 216 [json_name="NotifyStmt"]; ListenStmt listen_stmt = 217 [json_name="ListenStmt"]; UnlistenStmt unlisten_stmt = 218 [json_name="UnlistenStmt"]; TransactionStmt transaction_stmt = 219 [json_name="TransactionStmt"]; CompositeTypeStmt composite_type_stmt = 220 [json_name="CompositeTypeStmt"]; CreateEnumStmt create_enum_stmt = 221 [json_name="CreateEnumStmt"]; CreateRangeStmt create_range_stmt = 222 [json_name="CreateRangeStmt"]; AlterEnumStmt alter_enum_stmt = 223 [json_name="AlterEnumStmt"]; ViewStmt view_stmt = 224 [json_name="ViewStmt"]; LoadStmt load_stmt = 225 [json_name="LoadStmt"]; CreatedbStmt createdb_stmt = 226 [json_name="CreatedbStmt"]; AlterDatabaseStmt alter_database_stmt = 227 [json_name="AlterDatabaseStmt"]; AlterDatabaseRefreshCollStmt alter_database_refresh_coll_stmt = 228 [json_name="AlterDatabaseRefreshCollStmt"]; AlterDatabaseSetStmt alter_database_set_stmt = 229 [json_name="AlterDatabaseSetStmt"]; DropdbStmt dropdb_stmt = 230 [json_name="DropdbStmt"]; AlterSystemStmt alter_system_stmt = 231 [json_name="AlterSystemStmt"]; ClusterStmt cluster_stmt = 232 [json_name="ClusterStmt"]; VacuumStmt vacuum_stmt = 233 [json_name="VacuumStmt"]; VacuumRelation vacuum_relation = 234 [json_name="VacuumRelation"]; ExplainStmt explain_stmt = 235 [json_name="ExplainStmt"]; CreateTableAsStmt create_table_as_stmt = 236 [json_name="CreateTableAsStmt"]; RefreshMatViewStmt refresh_mat_view_stmt = 237 [json_name="RefreshMatViewStmt"]; CheckPointStmt check_point_stmt = 238 [json_name="CheckPointStmt"]; DiscardStmt discard_stmt = 239 [json_name="DiscardStmt"]; LockStmt lock_stmt = 240 [json_name="LockStmt"]; ConstraintsSetStmt constraints_set_stmt = 241 [json_name="ConstraintsSetStmt"]; ReindexStmt reindex_stmt = 242 [json_name="ReindexStmt"]; CreateConversionStmt create_conversion_stmt = 243 [json_name="CreateConversionStmt"]; CreateCastStmt create_cast_stmt = 244 [json_name="CreateCastStmt"]; CreateTransformStmt create_transform_stmt = 245 [json_name="CreateTransformStmt"]; PrepareStmt prepare_stmt = 246 [json_name="PrepareStmt"]; ExecuteStmt execute_stmt = 247 [json_name="ExecuteStmt"]; DeallocateStmt deallocate_stmt = 248 [json_name="DeallocateStmt"]; DropOwnedStmt drop_owned_stmt = 249 [json_name="DropOwnedStmt"]; ReassignOwnedStmt reassign_owned_stmt = 250 [json_name="ReassignOwnedStmt"]; AlterTSDictionaryStmt alter_tsdictionary_stmt = 251 [json_name="AlterTSDictionaryStmt"]; AlterTSConfigurationStmt alter_tsconfiguration_stmt = 252 [json_name="AlterTSConfigurationStmt"]; PublicationTable publication_table = 253 [json_name="PublicationTable"]; PublicationObjSpec publication_obj_spec = 254 [json_name="PublicationObjSpec"]; CreatePublicationStmt create_publication_stmt = 255 [json_name="CreatePublicationStmt"]; AlterPublicationStmt alter_publication_stmt = 256 [json_name="AlterPublicationStmt"]; CreateSubscriptionStmt create_subscription_stmt = 257 [json_name="CreateSubscriptionStmt"]; AlterSubscriptionStmt alter_subscription_stmt = 258 [json_name="AlterSubscriptionStmt"]; DropSubscriptionStmt drop_subscription_stmt = 259 [json_name="DropSubscriptionStmt"]; Integer integer = 260 [json_name="Integer"]; Float float = 261 [json_name="Float"]; Boolean boolean = 262 [json_name="Boolean"]; String string = 263 [json_name="String"]; BitString bit_string = 264 [json_name="BitString"]; List list = 265 [json_name="List"]; IntList int_list = 266 [json_name="IntList"]; OidList oid_list = 267 [json_name="OidList"]; A_Const a_const = 268 [json_name="A_Const"]; } } message Integer { int32 ival = 1; /* machine integer */ } message Float { string fval = 1; /* string */ } message Boolean { bool boolval = 1; } message String { string sval = 1; /* string */ } message BitString { string bsval = 1; /* string */ } message List { repeated Node items = 1; } message OidList { repeated Node items = 1; } message IntList { repeated Node items = 1; } message A_Const { oneof val { Integer ival = 1; Float fval = 2; Boolean boolval = 3; String sval = 4; BitString bsval = 5; } bool isnull = 10; int32 location = 11; } 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 { TableFuncType functype = 1 [json_name="functype"]; repeated Node ns_uris = 2 [json_name="ns_uris"]; repeated Node ns_names = 3 [json_name="ns_names"]; Node docexpr = 4 [json_name="docexpr"]; Node rowexpr = 5 [json_name="rowexpr"]; repeated Node colnames = 6 [json_name="colnames"]; repeated Node coltypes = 7 [json_name="coltypes"]; repeated Node coltypmods = 8 [json_name="coltypmods"]; repeated Node colcollations = 9 [json_name="colcollations"]; repeated Node colexprs = 10 [json_name="colexprs"]; repeated Node coldefexprs = 11 [json_name="coldefexprs"]; repeated Node colvalexprs = 12 [json_name="colvalexprs"]; repeated Node passingvalexprs = 13 [json_name="passingvalexprs"]; repeated uint64 notnulls = 14 [json_name="notnulls"]; Node plan = 15 [json_name="plan"]; int32 ordinalitycol = 16 [json_name="ordinalitycol"]; int32 location = 17 [json_name="location"]; } 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 Var { Node xpr = 1 [json_name="xpr"]; int32 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"]; repeated uint64 varnullingrels = 7 [json_name="varnullingrels"]; uint32 varlevelsup = 8 [json_name="varlevelsup"]; int32 location = 9 [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"]; repeated Node aggargtypes = 6 [json_name="aggargtypes"]; repeated Node aggdirectargs = 7 [json_name="aggdirectargs"]; repeated Node args = 8 [json_name="args"]; repeated Node aggorder = 9 [json_name="aggorder"]; repeated Node aggdistinct = 10 [json_name="aggdistinct"]; Node aggfilter = 11 [json_name="aggfilter"]; bool aggstar = 12 [json_name="aggstar"]; bool aggvariadic = 13 [json_name="aggvariadic"]; string aggkind = 14 [json_name="aggkind"]; uint32 agglevelsup = 15 [json_name="agglevelsup"]; AggSplit aggsplit = 16 [json_name="aggsplit"]; int32 aggno = 17 [json_name="aggno"]; int32 aggtransno = 18 [json_name="aggtransno"]; int32 location = 19 [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"]; uint32 agglevelsup = 4 [json_name="agglevelsup"]; int32 location = 5 [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"]; repeated Node run_condition = 8 [json_name="runCondition"]; uint32 winref = 9 [json_name="winref"]; bool winstar = 10 [json_name="winstar"]; bool winagg = 11 [json_name="winagg"]; int32 location = 12 [json_name="location"]; } message WindowFuncRunCondition { Node xpr = 1 [json_name="xpr"]; uint32 opno = 2 [json_name="opno"]; uint32 inputcollid = 3 [json_name="inputcollid"]; bool wfunc_left = 4 [json_name="wfunc_left"]; Node arg = 5 [json_name="arg"]; } message MergeSupportFunc { Node xpr = 1 [json_name="xpr"]; uint32 msftype = 2 [json_name="msftype"]; uint32 msfcollid = 3 [json_name="msfcollid"]; int32 location = 4 [json_name="location"]; } message SubscriptingRef { Node xpr = 1 [json_name="xpr"]; uint32 refcontainertype = 2 [json_name="refcontainertype"]; uint32 refelemtype = 3 [json_name="refelemtype"]; uint32 refrestype = 4 [json_name="refrestype"]; int32 reftypmod = 5 [json_name="reftypmod"]; uint32 refcollid = 6 [json_name="refcollid"]; repeated Node refupperindexpr = 7 [json_name="refupperindexpr"]; repeated Node reflowerindexpr = 8 [json_name="reflowerindexpr"]; Node refexpr = 9 [json_name="refexpr"]; Node refassgnexpr = 10 [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 opresulttype = 3 [json_name="opresulttype"]; bool opretset = 4 [json_name="opretset"]; uint32 opcollid = 5 [json_name="opcollid"]; uint32 inputcollid = 6 [json_name="inputcollid"]; repeated Node args = 7 [json_name="args"]; int32 location = 8 [json_name="location"]; } message DistinctExpr { Node xpr = 1 [json_name="xpr"]; uint32 opno = 2 [json_name="opno"]; uint32 opresulttype = 3 [json_name="opresulttype"]; bool opretset = 4 [json_name="opretset"]; uint32 opcollid = 5 [json_name="opcollid"]; uint32 inputcollid = 6 [json_name="inputcollid"]; repeated Node args = 7 [json_name="args"]; int32 location = 8 [json_name="location"]; } message NullIfExpr { Node xpr = 1 [json_name="xpr"]; uint32 opno = 2 [json_name="opno"]; uint32 opresulttype = 3 [json_name="opresulttype"]; bool opretset = 4 [json_name="opretset"]; uint32 opcollid = 5 [json_name="opcollid"]; uint32 inputcollid = 6 [json_name="inputcollid"]; repeated Node args = 7 [json_name="args"]; int32 location = 8 [json_name="location"]; } message ScalarArrayOpExpr { Node xpr = 1 [json_name="xpr"]; uint32 opno = 2 [json_name="opno"]; bool use_or = 3 [json_name="useOr"]; uint32 inputcollid = 4 [json_name="inputcollid"]; repeated Node args = 5 [json_name="args"]; int32 location = 6 [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"]; bool indent = 8 [json_name="indent"]; uint32 type = 9 [json_name="type"]; int32 typmod = 10 [json_name="typmod"]; int32 location = 11 [json_name="location"]; } message JsonFormat { JsonFormatType format_type = 1 [json_name="format_type"]; JsonEncoding encoding = 2 [json_name="encoding"]; int32 location = 3 [json_name="location"]; } message JsonReturning { JsonFormat format = 1 [json_name="format"]; uint32 typid = 2 [json_name="typid"]; int32 typmod = 3 [json_name="typmod"]; } message JsonValueExpr { Node raw_expr = 1 [json_name="raw_expr"]; Node formatted_expr = 2 [json_name="formatted_expr"]; JsonFormat format = 3 [json_name="format"]; } message JsonConstructorExpr { Node xpr = 1 [json_name="xpr"]; JsonConstructorType type = 2 [json_name="type"]; repeated Node args = 3 [json_name="args"]; Node func = 4 [json_name="func"]; Node coercion = 5 [json_name="coercion"]; JsonReturning returning = 6 [json_name="returning"]; bool absent_on_null = 7 [json_name="absent_on_null"]; bool unique = 8 [json_name="unique"]; int32 location = 9 [json_name="location"]; } message JsonIsPredicate { Node expr = 1 [json_name="expr"]; JsonFormat format = 2 [json_name="format"]; JsonValueType item_type = 3 [json_name="item_type"]; bool unique_keys = 4 [json_name="unique_keys"]; int32 location = 5 [json_name="location"]; } message JsonBehavior { JsonBehaviorType btype = 1 [json_name="btype"]; Node expr = 2 [json_name="expr"]; bool coerce = 3 [json_name="coerce"]; int32 location = 4 [json_name="location"]; } message JsonExpr { Node xpr = 1 [json_name="xpr"]; JsonExprOp op = 2 [json_name="op"]; string column_name = 3 [json_name="column_name"]; Node formatted_expr = 4 [json_name="formatted_expr"]; JsonFormat format = 5 [json_name="format"]; Node path_spec = 6 [json_name="path_spec"]; JsonReturning returning = 7 [json_name="returning"]; repeated Node passing_names = 8 [json_name="passing_names"]; repeated Node passing_values = 9 [json_name="passing_values"]; JsonBehavior on_empty = 10 [json_name="on_empty"]; JsonBehavior on_error = 11 [json_name="on_error"]; bool use_io_coercion = 12 [json_name="use_io_coercion"]; bool use_json_coercion = 13 [json_name="use_json_coercion"]; JsonWrapper wrapper = 14 [json_name="wrapper"]; bool omit_quotes = 15 [json_name="omit_quotes"]; uint32 collation = 16 [json_name="collation"]; int32 location = 17 [json_name="location"]; } message JsonTablePath { string name = 1 [json_name="name"]; } message JsonTablePathScan { Node plan = 1 [json_name="plan"]; JsonTablePath path = 2 [json_name="path"]; bool error_on_error = 3 [json_name="errorOnError"]; Node child = 4 [json_name="child"]; int32 col_min = 5 [json_name="colMin"]; int32 col_max = 6 [json_name="colMax"]; } message JsonTableSiblingJoin { Node plan = 1 [json_name="plan"]; Node lplan = 2 [json_name="lplan"]; Node rplan = 3 [json_name="rplan"]; } 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 MergeAction { MergeMatchKind match_kind = 1 [json_name="matchKind"]; CmdType command_type = 2 [json_name="commandType"]; OverridingKind override = 3 [json_name="override"]; Node qual = 4 [json_name="qual"]; repeated Node target_list = 5 [json_name="targetList"]; repeated Node update_colnos = 6 [json_name="updateColnos"]; } 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"]; Alias join_using_alias = 6 [json_name="join_using_alias"]; Node quals = 7 [json_name="quals"]; Alias alias = 8 [json_name="alias"]; int32 rtindex = 9 [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 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"]; bool is_return = 15 [json_name="isReturn"]; repeated Node cte_list = 16 [json_name="cteList"]; repeated Node rtable = 17 [json_name="rtable"]; repeated Node rteperminfos = 18 [json_name="rteperminfos"]; FromExpr jointree = 19 [json_name="jointree"]; repeated Node merge_action_list = 20 [json_name="mergeActionList"]; int32 merge_target_relation = 21 [json_name="mergeTargetRelation"]; Node merge_join_condition = 22 [json_name="mergeJoinCondition"]; repeated Node target_list = 23 [json_name="targetList"]; OverridingKind override = 24 [json_name="override"]; OnConflictExpr on_conflict = 25 [json_name="onConflict"]; repeated Node returning_list = 26 [json_name="returningList"]; repeated Node group_clause = 27 [json_name="groupClause"]; bool group_distinct = 28 [json_name="groupDistinct"]; repeated Node grouping_sets = 29 [json_name="groupingSets"]; Node having_qual = 30 [json_name="havingQual"]; repeated Node window_clause = 31 [json_name="windowClause"]; repeated Node distinct_clause = 32 [json_name="distinctClause"]; repeated Node sort_clause = 33 [json_name="sortClause"]; Node limit_offset = 34 [json_name="limitOffset"]; Node limit_count = 35 [json_name="limitCount"]; LimitOption limit_option = 36 [json_name="limitOption"]; repeated Node row_marks = 37 [json_name="rowMarks"]; Node set_operations = 38 [json_name="setOperations"]; repeated Node constraint_deps = 39 [json_name="constraintDeps"]; repeated Node with_check_options = 40 [json_name="withCheckOptions"]; int32 stmt_location = 41 [json_name="stmt_location"]; int32 stmt_len = 42 [json_name="stmt_len"]; } 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 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_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 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 RoleSpec { RoleSpecType roletype = 1 [json_name="roletype"]; string rolename = 2 [json_name="rolename"]; int32 location = 3 [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"]; WindowDef over = 5 [json_name="over"]; bool agg_within_group = 6 [json_name="agg_within_group"]; bool agg_star = 7 [json_name="agg_star"]; bool agg_distinct = 8 [json_name="agg_distinct"]; bool func_variadic = 9 [json_name="func_variadic"]; CoercionForm funcformat = 10 [json_name="funcformat"]; int32 location = 11 [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 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 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 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 ColumnDef { string colname = 1 [json_name="colname"]; TypeName type_name = 2 [json_name="typeName"]; string compression = 3 [json_name="compression"]; int32 inhcount = 4 [json_name="inhcount"]; bool is_local = 5 [json_name="is_local"]; bool is_not_null = 6 [json_name="is_not_null"]; bool is_from_type = 7 [json_name="is_from_type"]; string storage = 8 [json_name="storage"]; string storage_name = 9 [json_name="storage_name"]; Node raw_default = 10 [json_name="raw_default"]; Node cooked_default = 11 [json_name="cooked_default"]; string identity = 12 [json_name="identity"]; RangeVar identity_sequence = 13 [json_name="identitySequence"]; string generated = 14 [json_name="generated"]; CollateClause coll_clause = 15 [json_name="collClause"]; uint32 coll_oid = 16 [json_name="collOid"]; repeated Node constraints = 17 [json_name="constraints"]; repeated Node fdwoptions = 18 [json_name="fdwoptions"]; int32 location = 19 [json_name="location"]; } message TableLikeClause { RangeVar relation = 1 [json_name="relation"]; uint32 options = 2 [json_name="options"]; uint32 relation_oid = 3 [json_name="relationOid"]; } 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 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 LockingClause { repeated Node locked_rels = 1 [json_name="lockedRels"]; LockClauseStrength strength = 2 [json_name="strength"]; LockWaitPolicy wait_policy = 3 [json_name="waitPolicy"]; } message XmlSerialize { XmlOptionType xmloption = 1 [json_name="xmloption"]; Node expr = 2 [json_name="expr"]; TypeName type_name = 3 [json_name="typeName"]; bool indent = 4 [json_name="indent"]; int32 location = 5 [json_name="location"]; } 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 { PartitionStrategy 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 SinglePartitionSpec { } message PartitionCmd { RangeVar name = 1 [json_name="name"]; PartitionBoundSpec bound = 2 [json_name="bound"]; bool concurrent = 3 [json_name="concurrent"]; } message RangeTblEntry { Alias alias = 1 [json_name="alias"]; Alias eref = 2 [json_name="eref"]; RTEKind rtekind = 3 [json_name="rtekind"]; uint32 relid = 4 [json_name="relid"]; bool inh = 5 [json_name="inh"]; string relkind = 6 [json_name="relkind"]; int32 rellockmode = 7 [json_name="rellockmode"]; uint32 perminfoindex = 8 [json_name="perminfoindex"]; TableSampleClause tablesample = 9 [json_name="tablesample"]; Query subquery = 10 [json_name="subquery"]; bool security_barrier = 11 [json_name="security_barrier"]; JoinType jointype = 12 [json_name="jointype"]; int32 joinmergedcols = 13 [json_name="joinmergedcols"]; repeated Node joinaliasvars = 14 [json_name="joinaliasvars"]; repeated Node joinleftcols = 15 [json_name="joinleftcols"]; repeated Node joinrightcols = 16 [json_name="joinrightcols"]; Alias join_using_alias = 17 [json_name="join_using_alias"]; repeated Node functions = 18 [json_name="functions"]; bool funcordinality = 19 [json_name="funcordinality"]; TableFunc tablefunc = 20 [json_name="tablefunc"]; repeated Node values_lists = 21 [json_name="values_lists"]; string ctename = 22 [json_name="ctename"]; uint32 ctelevelsup = 23 [json_name="ctelevelsup"]; bool self_reference = 24 [json_name="self_reference"]; repeated Node coltypes = 25 [json_name="coltypes"]; repeated Node coltypmods = 26 [json_name="coltypmods"]; repeated Node colcollations = 27 [json_name="colcollations"]; string enrname = 28 [json_name="enrname"]; double enrtuples = 29 [json_name="enrtuples"]; bool lateral = 30 [json_name="lateral"]; bool in_from_cl = 31 [json_name="inFromCl"]; repeated Node security_quals = 32 [json_name="securityQuals"]; } message RTEPermissionInfo { uint32 relid = 1 [json_name="relid"]; bool inh = 2 [json_name="inh"]; uint64 required_perms = 3 [json_name="requiredPerms"]; uint32 check_as_user = 4 [json_name="checkAsUser"]; repeated uint64 selected_cols = 5 [json_name="selectedCols"]; repeated uint64 inserted_cols = 6 [json_name="insertedCols"]; repeated uint64 updated_cols = 7 [json_name="updatedCols"]; } 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 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 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 CTESearchClause { repeated Node search_col_list = 1 [json_name="search_col_list"]; bool search_breadth_first = 2 [json_name="search_breadth_first"]; string search_seq_column = 3 [json_name="search_seq_column"]; int32 location = 4 [json_name="location"]; } message CTECycleClause { repeated Node cycle_col_list = 1 [json_name="cycle_col_list"]; string cycle_mark_column = 2 [json_name="cycle_mark_column"]; Node cycle_mark_value = 3 [json_name="cycle_mark_value"]; Node cycle_mark_default = 4 [json_name="cycle_mark_default"]; string cycle_path_column = 5 [json_name="cycle_path_column"]; int32 location = 6 [json_name="location"]; uint32 cycle_mark_type = 7 [json_name="cycle_mark_type"]; int32 cycle_mark_typmod = 8 [json_name="cycle_mark_typmod"]; uint32 cycle_mark_collation = 9 [json_name="cycle_mark_collation"]; uint32 cycle_mark_neop = 10 [json_name="cycle_mark_neop"]; } 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"]; CTESearchClause search_clause = 5 [json_name="search_clause"]; CTECycleClause cycle_clause = 6 [json_name="cycle_clause"]; int32 location = 7 [json_name="location"]; bool cterecursive = 8 [json_name="cterecursive"]; int32 cterefcount = 9 [json_name="cterefcount"]; repeated Node ctecolnames = 10 [json_name="ctecolnames"]; repeated Node ctecoltypes = 11 [json_name="ctecoltypes"]; repeated Node ctecoltypmods = 12 [json_name="ctecoltypmods"]; repeated Node ctecolcollations = 13 [json_name="ctecolcollations"]; } message MergeWhenClause { MergeMatchKind match_kind = 1 [json_name="matchKind"]; CmdType command_type = 2 [json_name="commandType"]; OverridingKind override = 3 [json_name="override"]; Node condition = 4 [json_name="condition"]; repeated Node target_list = 5 [json_name="targetList"]; repeated Node values = 6 [json_name="values"]; } message TriggerTransition { string name = 1 [json_name="name"]; bool is_new = 2 [json_name="isNew"]; bool is_table = 3 [json_name="isTable"]; } message JsonOutput { TypeName type_name = 1 [json_name="typeName"]; JsonReturning returning = 2 [json_name="returning"]; } message JsonArgument { JsonValueExpr val = 1 [json_name="val"]; string name = 2 [json_name="name"]; } message JsonFuncExpr { JsonExprOp op = 1 [json_name="op"]; string column_name = 2 [json_name="column_name"]; JsonValueExpr context_item = 3 [json_name="context_item"]; Node pathspec = 4 [json_name="pathspec"]; repeated Node passing = 5 [json_name="passing"]; JsonOutput output = 6 [json_name="output"]; JsonBehavior on_empty = 7 [json_name="on_empty"]; JsonBehavior on_error = 8 [json_name="on_error"]; JsonWrapper wrapper = 9 [json_name="wrapper"]; JsonQuotes quotes = 10 [json_name="quotes"]; int32 location = 11 [json_name="location"]; } message JsonTablePathSpec { Node string = 1 [json_name="string"]; string name = 2 [json_name="name"]; int32 name_location = 3 [json_name="name_location"]; int32 location = 4 [json_name="location"]; } message JsonTable { JsonValueExpr context_item = 1 [json_name="context_item"]; JsonTablePathSpec pathspec = 2 [json_name="pathspec"]; repeated Node passing = 3 [json_name="passing"]; repeated Node columns = 4 [json_name="columns"]; JsonBehavior on_error = 5 [json_name="on_error"]; Alias alias = 6 [json_name="alias"]; bool lateral = 7 [json_name="lateral"]; int32 location = 8 [json_name="location"]; } message JsonTableColumn { JsonTableColumnType coltype = 1 [json_name="coltype"]; string name = 2 [json_name="name"]; TypeName type_name = 3 [json_name="typeName"]; JsonTablePathSpec pathspec = 4 [json_name="pathspec"]; JsonFormat format = 5 [json_name="format"]; JsonWrapper wrapper = 6 [json_name="wrapper"]; JsonQuotes quotes = 7 [json_name="quotes"]; repeated Node columns = 8 [json_name="columns"]; JsonBehavior on_empty = 9 [json_name="on_empty"]; JsonBehavior on_error = 10 [json_name="on_error"]; int32 location = 11 [json_name="location"]; } message JsonKeyValue { Node key = 1 [json_name="key"]; JsonValueExpr value = 2 [json_name="value"]; } message JsonParseExpr { JsonValueExpr expr = 1 [json_name="expr"]; JsonOutput output = 2 [json_name="output"]; bool unique_keys = 3 [json_name="unique_keys"]; int32 location = 4 [json_name="location"]; } message JsonScalarExpr { Node expr = 1 [json_name="expr"]; JsonOutput output = 2 [json_name="output"]; int32 location = 3 [json_name="location"]; } message JsonSerializeExpr { JsonValueExpr expr = 1 [json_name="expr"]; JsonOutput output = 2 [json_name="output"]; int32 location = 3 [json_name="location"]; } message JsonObjectConstructor { repeated Node exprs = 1 [json_name="exprs"]; JsonOutput output = 2 [json_name="output"]; bool absent_on_null = 3 [json_name="absent_on_null"]; bool unique = 4 [json_name="unique"]; int32 location = 5 [json_name="location"]; } message JsonArrayConstructor { repeated Node exprs = 1 [json_name="exprs"]; JsonOutput output = 2 [json_name="output"]; bool absent_on_null = 3 [json_name="absent_on_null"]; int32 location = 4 [json_name="location"]; } message JsonArrayQueryConstructor { Node query = 1 [json_name="query"]; JsonOutput output = 2 [json_name="output"]; JsonFormat format = 3 [json_name="format"]; bool absent_on_null = 4 [json_name="absent_on_null"]; int32 location = 5 [json_name="location"]; } message JsonAggConstructor { JsonOutput output = 1 [json_name="output"]; Node agg_filter = 2 [json_name="agg_filter"]; repeated Node agg_order = 3 [json_name="agg_order"]; WindowDef over = 4 [json_name="over"]; int32 location = 5 [json_name="location"]; } message JsonObjectAgg { JsonAggConstructor constructor = 1 [json_name="constructor"]; JsonKeyValue arg = 2 [json_name="arg"]; bool absent_on_null = 3 [json_name="absent_on_null"]; bool unique = 4 [json_name="unique"]; } message JsonArrayAgg { JsonAggConstructor constructor = 1 [json_name="constructor"]; JsonValueExpr arg = 2 [json_name="arg"]; bool absent_on_null = 3 [json_name="absent_on_null"]; } 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 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 MergeStmt { RangeVar relation = 1 [json_name="relation"]; Node source_relation = 2 [json_name="sourceRelation"]; Node join_condition = 3 [json_name="joinCondition"]; repeated Node merge_when_clauses = 4 [json_name="mergeWhenClauses"]; 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"]; bool group_distinct = 7 [json_name="groupDistinct"]; Node having_clause = 8 [json_name="havingClause"]; repeated Node window_clause = 9 [json_name="windowClause"]; repeated Node values_lists = 10 [json_name="valuesLists"]; repeated Node sort_clause = 11 [json_name="sortClause"]; Node limit_offset = 12 [json_name="limitOffset"]; Node limit_count = 13 [json_name="limitCount"]; LimitOption limit_option = 14 [json_name="limitOption"]; repeated Node locking_clause = 15 [json_name="lockingClause"]; WithClause with_clause = 16 [json_name="withClause"]; SetOperation op = 17 [json_name="op"]; bool all = 18 [json_name="all"]; SelectStmt larg = 19 [json_name="larg"]; SelectStmt rarg = 20 [json_name="rarg"]; } 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 ReturnStmt { Node returnval = 1 [json_name="returnval"]; } message PLAssignStmt { string name = 1 [json_name="name"]; repeated Node indirection = 2 [json_name="indirection"]; int32 nnames = 3 [json_name="nnames"]; SelectStmt val = 4 [json_name="val"]; int32 location = 5 [json_name="location"]; } 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 AlterTableStmt { RangeVar relation = 1 [json_name="relation"]; repeated Node cmds = 2 [json_name="cmds"]; ObjectType objtype = 3 [json_name="objtype"]; bool missing_ok = 4 [json_name="missing_ok"]; } message ReplicaIdentityStmt { string identity_type = 1 [json_name="identity_type"]; string name = 2 [json_name="name"]; } 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"]; bool recurse = 8 [json_name="recurse"]; } message AlterCollationStmt { repeated Node collname = 1 [json_name="collname"]; } 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 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"]; RoleSpec grantor = 8 [json_name="grantor"]; DropBehavior behavior = 9 [json_name="behavior"]; } message ObjectWithArgs { repeated Node objname = 1 [json_name="objname"]; repeated Node objargs = 2 [json_name="objargs"]; repeated Node objfuncargs = 3 [json_name="objfuncargs"]; bool args_unspecified = 4 [json_name="args_unspecified"]; } message AccessPriv { string priv_name = 1 [json_name="priv_name"]; repeated Node cols = 2 [json_name="cols"]; } 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"]; repeated Node opt = 4 [json_name="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 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 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 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 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"]; bool skip_validation = 5 [json_name="skip_validation"]; bool initially_valid = 6 [json_name="initially_valid"]; bool is_no_inherit = 7 [json_name="is_no_inherit"]; Node raw_expr = 8 [json_name="raw_expr"]; string cooked_expr = 9 [json_name="cooked_expr"]; string generated_when = 10 [json_name="generated_when"]; int32 inhcount = 11 [json_name="inhcount"]; bool nulls_not_distinct = 12 [json_name="nulls_not_distinct"]; repeated Node keys = 13 [json_name="keys"]; repeated Node including = 14 [json_name="including"]; repeated Node exclusions = 15 [json_name="exclusions"]; repeated Node options = 16 [json_name="options"]; string indexname = 17 [json_name="indexname"]; string indexspace = 18 [json_name="indexspace"]; bool reset_default_tblspc = 19 [json_name="reset_default_tblspc"]; string access_method = 20 [json_name="access_method"]; Node where_clause = 21 [json_name="where_clause"]; RangeVar pktable = 22 [json_name="pktable"]; repeated Node fk_attrs = 23 [json_name="fk_attrs"]; repeated Node pk_attrs = 24 [json_name="pk_attrs"]; string fk_matchtype = 25 [json_name="fk_matchtype"]; string fk_upd_action = 26 [json_name="fk_upd_action"]; string fk_del_action = 27 [json_name="fk_del_action"]; repeated Node fk_del_set_cols = 28 [json_name="fk_del_set_cols"]; repeated Node old_conpfeqop = 29 [json_name="old_conpfeqop"]; uint32 old_pktable_oid = 30 [json_name="old_pktable_oid"]; int32 location = 31 [json_name="location"]; } 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 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 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 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 CreateForeignTableStmt { CreateStmt base_stmt = 1 [json_name="base"]; string servername = 2 [json_name="servername"]; repeated Node options = 3 [json_name="options"]; } 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 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 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 CreateAmStmt { string amname = 1 [json_name="amname"]; repeated Node handler_name = 2 [json_name="handler_name"]; string amtype = 3 [json_name="amtype"]; } message CreateTrigStmt { bool replace = 1 [json_name="replace"]; bool isconstraint = 2 [json_name="isconstraint"]; string trigname = 3 [json_name="trigname"]; RangeVar relation = 4 [json_name="relation"]; repeated Node funcname = 5 [json_name="funcname"]; repeated Node args = 6 [json_name="args"]; bool row = 7 [json_name="row"]; int32 timing = 8 [json_name="timing"]; int32 events = 9 [json_name="events"]; repeated Node columns = 10 [json_name="columns"]; Node when_clause = 11 [json_name="whenClause"]; repeated Node transition_rels = 12 [json_name="transitionRels"]; bool deferrable = 13 [json_name="deferrable"]; bool initdeferred = 14 [json_name="initdeferred"]; RangeVar constrrel = 15 [json_name="constrrel"]; } 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 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 AlterRoleSetStmt { RoleSpec role = 1 [json_name="role"]; string database = 2 [json_name="database"]; VariableSetStmt setstmt = 3 [json_name="setstmt"]; } message DropRoleStmt { repeated Node roles = 1 [json_name="roles"]; bool missing_ok = 2 [json_name="missing_ok"]; } 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 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 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 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 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 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 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 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 DeclareCursorStmt { string portalname = 1 [json_name="portalname"]; int32 options = 2 [json_name="options"]; Node query = 3 [json_name="query"]; } message ClosePortalStmt { string portalname = 1 [json_name="portalname"]; } 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_number = 12 [json_name="oldNumber"]; uint32 old_create_subid = 13 [json_name="oldCreateSubid"]; uint32 old_first_relfilelocator_subid = 14 [json_name="oldFirstRelfilelocatorSubid"]; bool unique = 15 [json_name="unique"]; bool nulls_not_distinct = 16 [json_name="nulls_not_distinct"]; bool primary = 17 [json_name="primary"]; bool isconstraint = 18 [json_name="isconstraint"]; bool deferrable = 19 [json_name="deferrable"]; bool initdeferred = 20 [json_name="initdeferred"]; bool transformed = 21 [json_name="transformed"]; bool concurrent = 22 [json_name="concurrent"]; bool if_not_exists = 23 [json_name="if_not_exists"]; bool reset_default_tblspc = 24 [json_name="reset_default_tblspc"]; } 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 transformed = 6 [json_name="transformed"]; bool if_not_exists = 7 [json_name="if_not_exists"]; } message StatsElem { string name = 1 [json_name="name"]; Node expr = 2 [json_name="expr"]; } message AlterStatsStmt { repeated Node defnames = 1 [json_name="defnames"]; Node stxstattarget = 2 [json_name="stxstattarget"]; bool missing_ok = 3 [json_name="missing_ok"]; } 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"]; Node sql_body = 7 [json_name="sql_body"]; } 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 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 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 CallStmt { FuncCall funccall = 1 [json_name="funccall"]; FuncExpr funcexpr = 2 [json_name="funcexpr"]; repeated Node outargs = 3 [json_name="outargs"]; } message CallContext { bool atomic = 1 [json_name="atomic"]; } 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 AlterObjectDependsStmt { ObjectType object_type = 1 [json_name="objectType"]; RangeVar relation = 2 [json_name="relation"]; Node object = 3 [json_name="object"]; String 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 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"]; int32 location = 6 [json_name="location"]; } 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 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 CreatedbStmt { string dbname = 1 [json_name="dbname"]; repeated Node options = 2 [json_name="options"]; } message AlterDatabaseStmt { string dbname = 1 [json_name="dbname"]; repeated Node options = 2 [json_name="options"]; } message AlterDatabaseRefreshCollStmt { string dbname = 1 [json_name="dbname"]; } message AlterDatabaseSetStmt { string dbname = 1 [json_name="dbname"]; VariableSetStmt setstmt = 2 [json_name="setstmt"]; } message DropdbStmt { string dbname = 1 [json_name="dbname"]; bool missing_ok = 2 [json_name="missing_ok"]; repeated Node options = 3 [json_name="options"]; } message AlterSystemStmt { VariableSetStmt setstmt = 1 [json_name="setstmt"]; } message ClusterStmt { RangeVar relation = 1 [json_name="relation"]; string indexname = 2 [json_name="indexname"]; repeated Node params = 3 [json_name="params"]; } 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 VacuumRelation { RangeVar relation = 1 [json_name="relation"]; uint32 oid = 2 [json_name="oid"]; repeated Node va_cols = 3 [json_name="va_cols"]; } 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 objtype = 3 [json_name="objtype"]; bool is_select_into = 4 [json_name="is_select_into"]; bool if_not_exists = 5 [json_name="if_not_exists"]; } message RefreshMatViewStmt { bool concurrent = 1 [json_name="concurrent"]; bool skip_data = 2 [json_name="skipData"]; RangeVar relation = 3 [json_name="relation"]; } message CheckPointStmt { } message DiscardStmt { DiscardMode target = 1 [json_name="target"]; } 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"]; repeated Node params = 4 [json_name="params"]; } 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 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 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"]; bool isall = 2 [json_name="isall"]; int32 location = 3 [json_name="location"]; } 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 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 PublicationTable { RangeVar relation = 1 [json_name="relation"]; Node where_clause = 2 [json_name="whereClause"]; repeated Node columns = 3 [json_name="columns"]; } message PublicationObjSpec { PublicationObjSpecType pubobjtype = 1 [json_name="pubobjtype"]; string name = 2 [json_name="name"]; PublicationTable pubtable = 3 [json_name="pubtable"]; int32 location = 4 [json_name="location"]; } message CreatePublicationStmt { string pubname = 1 [json_name="pubname"]; repeated Node options = 2 [json_name="options"]; repeated Node pubobjects = 3 [json_name="pubobjects"]; 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 pubobjects = 3 [json_name="pubobjects"]; bool for_all_tables = 4 [json_name="for_all_tables"]; AlterPublicationAction action = 5 [json_name="action"]; } 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"]; } 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 SetQuantifier { SET_QUANTIFIER_UNDEFINED = 0; SET_QUANTIFIER_DEFAULT = 1; SET_QUANTIFIER_ALL = 2; SET_QUANTIFIER_DISTINCT = 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_IN = 7; AEXPR_LIKE = 8; AEXPR_ILIKE = 9; AEXPR_SIMILAR = 10; AEXPR_BETWEEN = 11; AEXPR_NOT_BETWEEN = 12; AEXPR_BETWEEN_SYM = 13; AEXPR_NOT_BETWEEN_SYM = 14; } enum RoleSpecType { ROLE_SPEC_TYPE_UNDEFINED = 0; ROLESPEC_CSTRING = 1; ROLESPEC_CURRENT_ROLE = 2; ROLESPEC_CURRENT_USER = 3; ROLESPEC_SESSION_USER = 4; ROLESPEC_PUBLIC = 5; } enum TableLikeOption { TABLE_LIKE_OPTION_UNDEFINED = 0; CREATE_TABLE_LIKE_COMMENTS = 1; CREATE_TABLE_LIKE_COMPRESSION = 2; CREATE_TABLE_LIKE_CONSTRAINTS = 3; CREATE_TABLE_LIKE_DEFAULTS = 4; CREATE_TABLE_LIKE_GENERATED = 5; CREATE_TABLE_LIKE_IDENTITY = 6; CREATE_TABLE_LIKE_INDEXES = 7; CREATE_TABLE_LIKE_STATISTICS = 8; CREATE_TABLE_LIKE_STORAGE = 9; CREATE_TABLE_LIKE_ALL = 10; } enum DefElemAction { DEF_ELEM_ACTION_UNDEFINED = 0; DEFELEM_UNSPEC = 1; DEFELEM_SET = 2; DEFELEM_ADD = 3; DEFELEM_DROP = 4; } enum PartitionStrategy { PARTITION_STRATEGY_UNDEFINED = 0; PARTITION_STRATEGY_LIST = 1; PARTITION_STRATEGY_RANGE = 2; PARTITION_STRATEGY_HASH = 3; } 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; WCO_RLS_MERGE_UPDATE_CHECK = 5; WCO_RLS_MERGE_DELETE_CHECK = 6; } 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 JsonQuotes { JSON_QUOTES_UNDEFINED = 0; JS_QUOTES_UNSPEC = 1; JS_QUOTES_KEEP = 2; JS_QUOTES_OMIT = 3; } enum JsonTableColumnType { JSON_TABLE_COLUMN_TYPE_UNDEFINED = 0; JTC_FOR_ORDINALITY = 1; JTC_REGULAR = 2; JTC_EXISTS = 3; JTC_FORMATTED = 4; JTC_NESTED = 5; } 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_PARAMETER_ACL = 28; OBJECT_POLICY = 29; OBJECT_PROCEDURE = 30; OBJECT_PUBLICATION = 31; OBJECT_PUBLICATION_NAMESPACE = 32; OBJECT_PUBLICATION_REL = 33; OBJECT_ROLE = 34; OBJECT_ROUTINE = 35; OBJECT_RULE = 36; OBJECT_SCHEMA = 37; OBJECT_SEQUENCE = 38; OBJECT_SUBSCRIPTION = 39; OBJECT_STATISTIC_EXT = 40; OBJECT_TABCONSTRAINT = 41; OBJECT_TABLE = 42; OBJECT_TABLESPACE = 43; OBJECT_TRANSFORM = 44; OBJECT_TRIGGER = 45; OBJECT_TSCONFIGURATION = 46; OBJECT_TSDICTIONARY = 47; OBJECT_TSPARSER = 48; OBJECT_TSTEMPLATE = 49; OBJECT_TYPE = 50; OBJECT_USER_MAPPING = 51; OBJECT_VIEW = 52; } enum DropBehavior { DROP_BEHAVIOR_UNDEFINED = 0; DROP_RESTRICT = 1; DROP_CASCADE = 2; } enum AlterTableType { ALTER_TABLE_TYPE_UNDEFINED = 0; AT_AddColumn = 1; AT_AddColumnToView = 2; AT_ColumnDefault = 3; AT_CookedColumnDefault = 4; AT_DropNotNull = 5; AT_SetNotNull = 6; AT_SetExpression = 7; AT_DropExpression = 8; AT_CheckNotNull = 9; AT_SetStatistics = 10; AT_SetOptions = 11; AT_ResetOptions = 12; AT_SetStorage = 13; AT_SetCompression = 14; AT_DropColumn = 15; AT_AddIndex = 16; AT_ReAddIndex = 17; AT_AddConstraint = 18; AT_ReAddConstraint = 19; AT_ReAddDomainConstraint = 20; AT_AlterConstraint = 21; AT_ValidateConstraint = 22; AT_AddIndexConstraint = 23; AT_DropConstraint = 24; AT_ReAddComment = 25; AT_AlterColumnType = 26; AT_AlterColumnGenericOptions = 27; AT_ChangeOwner = 28; AT_ClusterOn = 29; AT_DropCluster = 30; AT_SetLogged = 31; AT_SetUnLogged = 32; AT_DropOids = 33; AT_SetAccessMethod = 34; AT_SetTableSpace = 35; AT_SetRelOptions = 36; AT_ResetRelOptions = 37; AT_ReplaceRelOptions = 38; AT_EnableTrig = 39; AT_EnableAlwaysTrig = 40; AT_EnableReplicaTrig = 41; AT_DisableTrig = 42; AT_EnableTrigAll = 43; AT_DisableTrigAll = 44; AT_EnableTrigUser = 45; AT_DisableTrigUser = 46; AT_EnableRule = 47; AT_EnableAlwaysRule = 48; AT_EnableReplicaRule = 49; AT_DisableRule = 50; AT_AddInherit = 51; AT_DropInherit = 52; AT_AddOf = 53; AT_DropOf = 54; AT_ReplicaIdentity = 55; AT_EnableRowSecurity = 56; AT_DisableRowSecurity = 57; AT_ForceRowSecurity = 58; AT_NoForceRowSecurity = 59; AT_GenericOptions = 60; AT_AttachPartition = 61; AT_DetachPartition = 62; AT_DetachPartitionFinalize = 63; AT_AddIdentity = 64; AT_SetIdentity = 65; AT_DropIdentity = 66; AT_ReAddStatistics = 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; FUNC_PARAM_DEFAULT = 6; } 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 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 PublicationObjSpecType { PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED = 0; PUBLICATIONOBJ_TABLE = 1; PUBLICATIONOBJ_TABLES_IN_SCHEMA = 2; PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA = 3; PUBLICATIONOBJ_CONTINUATION = 4; } enum AlterPublicationAction { ALTER_PUBLICATION_ACTION_UNDEFINED = 0; AP_AddObjects = 1; AP_DropObjects = 2; AP_SetObjects = 3; } enum AlterSubscriptionType { ALTER_SUBSCRIPTION_TYPE_UNDEFINED = 0; ALTER_SUBSCRIPTION_OPTIONS = 1; ALTER_SUBSCRIPTION_CONNECTION = 2; ALTER_SUBSCRIPTION_SET_PUBLICATION = 3; ALTER_SUBSCRIPTION_ADD_PUBLICATION = 4; ALTER_SUBSCRIPTION_DROP_PUBLICATION = 5; ALTER_SUBSCRIPTION_REFRESH = 6; ALTER_SUBSCRIPTION_ENABLED = 7; ALTER_SUBSCRIPTION_SKIP = 8; } enum OverridingKind { OVERRIDING_KIND_UNDEFINED = 0; OVERRIDING_NOT_SET = 1; OVERRIDING_USER_VALUE = 2; OVERRIDING_SYSTEM_VALUE = 3; } enum OnCommitAction { ON_COMMIT_ACTION_UNDEFINED = 0; ONCOMMIT_NOOP = 1; ONCOMMIT_PRESERVE_ROWS = 2; ONCOMMIT_DELETE_ROWS = 3; ONCOMMIT_DROP = 4; } enum TableFuncType { TABLE_FUNC_TYPE_UNDEFINED = 0; TFT_XMLTABLE = 1; TFT_JSON_TABLE = 2; } 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_PLPGSQL = 3; COERCION_EXPLICIT = 4; } enum CoercionForm { COERCION_FORM_UNDEFINED = 0; COERCE_EXPLICIT_CALL = 1; COERCE_EXPLICIT_CAST = 2; COERCE_IMPLICIT_CAST = 3; COERCE_SQL_SYNTAX = 4; } 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 JsonEncoding { JSON_ENCODING_UNDEFINED = 0; JS_ENC_DEFAULT = 1; JS_ENC_UTF8 = 2; JS_ENC_UTF16 = 3; JS_ENC_UTF32 = 4; } enum JsonFormatType { JSON_FORMAT_TYPE_UNDEFINED = 0; JS_FORMAT_DEFAULT = 1; JS_FORMAT_JSON = 2; JS_FORMAT_JSONB = 3; } enum JsonConstructorType { JSON_CONSTRUCTOR_TYPE_UNDEFINED = 0; JSCTOR_JSON_OBJECT = 1; JSCTOR_JSON_ARRAY = 2; JSCTOR_JSON_OBJECTAGG = 3; JSCTOR_JSON_ARRAYAGG = 4; JSCTOR_JSON_PARSE = 5; JSCTOR_JSON_SCALAR = 6; JSCTOR_JSON_SERIALIZE = 7; } enum JsonValueType { JSON_VALUE_TYPE_UNDEFINED = 0; JS_TYPE_ANY = 1; JS_TYPE_OBJECT = 2; JS_TYPE_ARRAY = 3; JS_TYPE_SCALAR = 4; } enum JsonWrapper { JSON_WRAPPER_UNDEFINED = 0; JSW_UNSPEC = 1; JSW_NONE = 2; JSW_CONDITIONAL = 3; JSW_UNCONDITIONAL = 4; } enum JsonBehaviorType { JSON_BEHAVIOR_TYPE_UNDEFINED = 0; JSON_BEHAVIOR_NULL = 1; JSON_BEHAVIOR_ERROR = 2; JSON_BEHAVIOR_EMPTY = 3; JSON_BEHAVIOR_TRUE = 4; JSON_BEHAVIOR_FALSE = 5; JSON_BEHAVIOR_UNKNOWN = 6; JSON_BEHAVIOR_EMPTY_ARRAY = 7; JSON_BEHAVIOR_EMPTY_OBJECT = 8; JSON_BEHAVIOR_DEFAULT = 9; } enum JsonExprOp { JSON_EXPR_OP_UNDEFINED = 0; JSON_EXISTS_OP = 1; JSON_QUERY_OP = 2; JSON_VALUE_OP = 3; JSON_TABLE_OP = 4; } 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 MergeMatchKind { MERGE_MATCH_KIND_UNDEFINED = 0; MERGE_WHEN_MATCHED = 1; MERGE_WHEN_NOT_MATCHED_BY_SOURCE = 2; MERGE_WHEN_NOT_MATCHED_BY_TARGET = 3; } enum CmdType { CMD_TYPE_UNDEFINED = 0; CMD_UNKNOWN = 1; CMD_SELECT = 2; CMD_UPDATE = 3; CMD_INSERT = 4; CMD_DELETE = 5; CMD_MERGE = 6; CMD_UTILITY = 7; CMD_NOTHING = 8; } 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_RIGHT_ANTI = 7; JOIN_UNIQUE_OUTER = 8; JOIN_UNIQUE_INNER = 9; } 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_36 = 36; // "$" 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; ABSENT = 278; ABSOLUTE_P = 279; ACCESS = 280; ACTION = 281; ADD_P = 282; ADMIN = 283; AFTER = 284; AGGREGATE = 285; ALL = 286; ALSO = 287; ALTER = 288; ALWAYS = 289; ANALYSE = 290; ANALYZE = 291; AND = 292; ANY = 293; ARRAY = 294; AS = 295; ASC = 296; ASENSITIVE = 297; ASSERTION = 298; ASSIGNMENT = 299; ASYMMETRIC = 300; ATOMIC = 301; AT = 302; ATTACH = 303; ATTRIBUTE = 304; AUTHORIZATION = 305; BACKWARD = 306; BEFORE = 307; BEGIN_P = 308; BETWEEN = 309; BIGINT = 310; BINARY = 311; BIT = 312; BOOLEAN_P = 313; BOTH = 314; BREADTH = 315; BY = 316; CACHE = 317; CALL = 318; CALLED = 319; CASCADE = 320; CASCADED = 321; CASE = 322; CAST = 323; CATALOG_P = 324; CHAIN = 325; CHAR_P = 326; CHARACTER = 327; CHARACTERISTICS = 328; CHECK = 329; CHECKPOINT = 330; CLASS = 331; CLOSE = 332; CLUSTER = 333; COALESCE = 334; COLLATE = 335; COLLATION = 336; COLUMN = 337; COLUMNS = 338; COMMENT = 339; COMMENTS = 340; COMMIT = 341; COMMITTED = 342; COMPRESSION = 343; CONCURRENTLY = 344; CONDITIONAL = 345; CONFIGURATION = 346; CONFLICT = 347; CONNECTION = 348; CONSTRAINT = 349; CONSTRAINTS = 350; CONTENT_P = 351; CONTINUE_P = 352; CONVERSION_P = 353; COPY = 354; COST = 355; CREATE = 356; CROSS = 357; CSV = 358; CUBE = 359; CURRENT_P = 360; CURRENT_CATALOG = 361; CURRENT_DATE = 362; CURRENT_ROLE = 363; CURRENT_SCHEMA = 364; CURRENT_TIME = 365; CURRENT_TIMESTAMP = 366; CURRENT_USER = 367; CURSOR = 368; CYCLE = 369; DATA_P = 370; DATABASE = 371; DAY_P = 372; DEALLOCATE = 373; DEC = 374; DECIMAL_P = 375; DECLARE = 376; DEFAULT = 377; DEFAULTS = 378; DEFERRABLE = 379; DEFERRED = 380; DEFINER = 381; DELETE_P = 382; DELIMITER = 383; DELIMITERS = 384; DEPENDS = 385; DEPTH = 386; DESC = 387; DETACH = 388; DICTIONARY = 389; DISABLE_P = 390; DISCARD = 391; DISTINCT = 392; DO = 393; DOCUMENT_P = 394; DOMAIN_P = 395; DOUBLE_P = 396; DROP = 397; EACH = 398; ELSE = 399; EMPTY_P = 400; ENABLE_P = 401; ENCODING = 402; ENCRYPTED = 403; END_P = 404; ENUM_P = 405; ERROR_P = 406; ESCAPE = 407; EVENT = 408; EXCEPT = 409; EXCLUDE = 410; EXCLUDING = 411; EXCLUSIVE = 412; EXECUTE = 413; EXISTS = 414; EXPLAIN = 415; EXPRESSION = 416; EXTENSION = 417; EXTERNAL = 418; EXTRACT = 419; FALSE_P = 420; FAMILY = 421; FETCH = 422; FILTER = 423; FINALIZE = 424; FIRST_P = 425; FLOAT_P = 426; FOLLOWING = 427; FOR = 428; FORCE = 429; FOREIGN = 430; FORMAT = 431; FORWARD = 432; FREEZE = 433; FROM = 434; FULL = 435; FUNCTION = 436; FUNCTIONS = 437; GENERATED = 438; GLOBAL = 439; GRANT = 440; GRANTED = 441; GREATEST = 442; GROUP_P = 443; GROUPING = 444; GROUPS = 445; HANDLER = 446; HAVING = 447; HEADER_P = 448; HOLD = 449; HOUR_P = 450; IDENTITY_P = 451; IF_P = 452; ILIKE = 453; IMMEDIATE = 454; IMMUTABLE = 455; IMPLICIT_P = 456; IMPORT_P = 457; IN_P = 458; INCLUDE = 459; INCLUDING = 460; INCREMENT = 461; INDENT = 462; INDEX = 463; INDEXES = 464; INHERIT = 465; INHERITS = 466; INITIALLY = 467; INLINE_P = 468; INNER_P = 469; INOUT = 470; INPUT_P = 471; INSENSITIVE = 472; INSERT = 473; INSTEAD = 474; INT_P = 475; INTEGER = 476; INTERSECT = 477; INTERVAL = 478; INTO = 479; INVOKER = 480; IS = 481; ISNULL = 482; ISOLATION = 483; JOIN = 484; JSON = 485; JSON_ARRAY = 486; JSON_ARRAYAGG = 487; JSON_EXISTS = 488; JSON_OBJECT = 489; JSON_OBJECTAGG = 490; JSON_QUERY = 491; JSON_SCALAR = 492; JSON_SERIALIZE = 493; JSON_TABLE = 494; JSON_VALUE = 495; KEEP = 496; KEY = 497; KEYS = 498; LABEL = 499; LANGUAGE = 500; LARGE_P = 501; LAST_P = 502; LATERAL_P = 503; LEADING = 504; LEAKPROOF = 505; LEAST = 506; LEFT = 507; LEVEL = 508; LIKE = 509; LIMIT = 510; LISTEN = 511; LOAD = 512; LOCAL = 513; LOCALTIME = 514; LOCALTIMESTAMP = 515; LOCATION = 516; LOCK_P = 517; LOCKED = 518; LOGGED = 519; MAPPING = 520; MATCH = 521; MATCHED = 522; MATERIALIZED = 523; MAXVALUE = 524; MERGE = 525; MERGE_ACTION = 526; METHOD = 527; MINUTE_P = 528; MINVALUE = 529; MODE = 530; MONTH_P = 531; MOVE = 532; NAME_P = 533; NAMES = 534; NATIONAL = 535; NATURAL = 536; NCHAR = 537; NESTED = 538; NEW = 539; NEXT = 540; NFC = 541; NFD = 542; NFKC = 543; NFKD = 544; NO = 545; NONE = 546; NORMALIZE = 547; NORMALIZED = 548; NOT = 549; NOTHING = 550; NOTIFY = 551; NOTNULL = 552; NOWAIT = 553; NULL_P = 554; NULLIF = 555; NULLS_P = 556; NUMERIC = 557; OBJECT_P = 558; OF = 559; OFF = 560; OFFSET = 561; OIDS = 562; OLD = 563; OMIT = 564; ON = 565; ONLY = 566; OPERATOR = 567; OPTION = 568; OPTIONS = 569; OR = 570; ORDER = 571; ORDINALITY = 572; OTHERS = 573; OUT_P = 574; OUTER_P = 575; OVER = 576; OVERLAPS = 577; OVERLAY = 578; OVERRIDING = 579; OWNED = 580; OWNER = 581; PARALLEL = 582; PARAMETER = 583; PARSER = 584; PARTIAL = 585; PARTITION = 586; PASSING = 587; PASSWORD = 588; PATH = 589; PLACING = 590; PLAN = 591; PLANS = 592; POLICY = 593; POSITION = 594; PRECEDING = 595; PRECISION = 596; PRESERVE = 597; PREPARE = 598; PREPARED = 599; PRIMARY = 600; PRIOR = 601; PRIVILEGES = 602; PROCEDURAL = 603; PROCEDURE = 604; PROCEDURES = 605; PROGRAM = 606; PUBLICATION = 607; QUOTE = 608; QUOTES = 609; RANGE = 610; READ = 611; REAL = 612; REASSIGN = 613; RECHECK = 614; RECURSIVE = 615; REF_P = 616; REFERENCES = 617; REFERENCING = 618; REFRESH = 619; REINDEX = 620; RELATIVE_P = 621; RELEASE = 622; RENAME = 623; REPEATABLE = 624; REPLACE = 625; REPLICA = 626; RESET = 627; RESTART = 628; RESTRICT = 629; RETURN = 630; RETURNING = 631; RETURNS = 632; REVOKE = 633; RIGHT = 634; ROLE = 635; ROLLBACK = 636; ROLLUP = 637; ROUTINE = 638; ROUTINES = 639; ROW = 640; ROWS = 641; RULE = 642; SAVEPOINT = 643; SCALAR = 644; SCHEMA = 645; SCHEMAS = 646; SCROLL = 647; SEARCH = 648; SECOND_P = 649; SECURITY = 650; SELECT = 651; SEQUENCE = 652; SEQUENCES = 653; SERIALIZABLE = 654; SERVER = 655; SESSION = 656; SESSION_USER = 657; SET = 658; SETS = 659; SETOF = 660; SHARE = 661; SHOW = 662; SIMILAR = 663; SIMPLE = 664; SKIP = 665; SMALLINT = 666; SNAPSHOT = 667; SOME = 668; SOURCE = 669; SQL_P = 670; STABLE = 671; STANDALONE_P = 672; START = 673; STATEMENT = 674; STATISTICS = 675; STDIN = 676; STDOUT = 677; STORAGE = 678; STORED = 679; STRICT_P = 680; STRING_P = 681; STRIP_P = 682; SUBSCRIPTION = 683; SUBSTRING = 684; SUPPORT = 685; SYMMETRIC = 686; SYSID = 687; SYSTEM_P = 688; SYSTEM_USER = 689; TABLE = 690; TABLES = 691; TABLESAMPLE = 692; TABLESPACE = 693; TARGET = 694; TEMP = 695; TEMPLATE = 696; TEMPORARY = 697; TEXT_P = 698; THEN = 699; TIES = 700; TIME = 701; TIMESTAMP = 702; TO = 703; TRAILING = 704; TRANSACTION = 705; TRANSFORM = 706; TREAT = 707; TRIGGER = 708; TRIM = 709; TRUE_P = 710; TRUNCATE = 711; TRUSTED = 712; TYPE_P = 713; TYPES_P = 714; UESCAPE = 715; UNBOUNDED = 716; UNCONDITIONAL = 717; UNCOMMITTED = 718; UNENCRYPTED = 719; UNION = 720; UNIQUE = 721; UNKNOWN = 722; UNLISTEN = 723; UNLOGGED = 724; UNTIL = 725; UPDATE = 726; USER = 727; USING = 728; VACUUM = 729; VALID = 730; VALIDATE = 731; VALIDATOR = 732; VALUE_P = 733; VALUES = 734; VARCHAR = 735; VARIADIC = 736; VARYING = 737; VERBOSE = 738; VERSION_P = 739; VIEW = 740; VIEWS = 741; VOLATILE = 742; WHEN = 743; WHERE = 744; WHITESPACE_P = 745; WINDOW = 746; WITH = 747; WITHIN = 748; WITHOUT = 749; WORK = 750; WRAPPER = 751; WRITE = 752; XML_P = 753; XMLATTRIBUTES = 754; XMLCONCAT = 755; XMLELEMENT = 756; XMLEXISTS = 757; XMLFOREST = 758; XMLNAMESPACES = 759; XMLPARSE = 760; XMLPI = 761; XMLROOT = 762; XMLSERIALIZE = 763; XMLTABLE = 764; YEAR_P = 765; YES_P = 766; ZONE = 767; FORMAT_LA = 768; NOT_LA = 769; NULLS_LA = 770; WITH_LA = 771; WITHOUT_LA = 772; MODE_TYPE_NAME = 773; MODE_PLPGSQL_EXPR = 774; MODE_PLPGSQL_ASSIGN1 = 775; MODE_PLPGSQL_ASSIGN2 = 776; MODE_PLPGSQL_ASSIGN3 = 777; UMINUS = 778; } libpg_query-17-6.1.0/scripts/000077500000000000000000000000001477334012600157635ustar00rootroot00000000000000libpg_query-17-6.1.0/scripts/extract_headers.rb000077500000000000000000000236541477334012600214720ustar00rootroot00000000000000#!/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/nodetags.h')) lines.each_line do |line| if !line.start_with? /\/?\ *\*/ if line[/T_([A-z_]+)(\s+=\s+\d+)?,/] @nodetypes << $1 end end end end IGNORE_LIST = [ 'Node', 'varlena', 'IntArray', 'nameData', 'bool', 'sig_atomic_t', 'size_t', 'varatt_indirect', 'A_Const', ] 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', '../backend/parser/gramparse'].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+pg_node_attr\(\w+\))?;\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! # Fixup node tags, as they are included from a different auto-generated file: `nodes/nodetags.h`. @nodetypes.each_with_index do |name, i| @enum_defs['nodes/nodes']['NodeTag'][:values] << { name: "T_#{name}", value: i + 1 } end @struct_defs['nodes/value'] = {} @struct_defs['nodes/value']['Integer'] = { fields: [{ name: 'ival', c_type: 'long' }] } @struct_defs['nodes/value']['Float'] = { fields: [{ name: 'fval', c_type: 'char*' }] } @struct_defs['nodes/value']['Boolean'] = { fields: [{ name: 'boolval', c_type: 'bool' }] } @struct_defs['nodes/value']['String'] = { fields: [{ name: 'sval', c_type: 'char*' }] } @struct_defs['nodes/value']['BitString'] = { fields: [{ name: 'bsval', c_type: 'char*' }] } @struct_defs['nodes/value']['A_Const'] = { fields: [{ name: 'isnull', c_type: 'bool' }, { name:'val', c_type: 'Node' }] } @struct_defs['nodes/pg_list'] = { 'List' => { fields: [{ name: 'items', c_type: '[]Node' }] } } @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-17-6.1.0/scripts/extract_source.rb000066400000000000000000000720701477334012600213500ustar00rootroot00000000000000# 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/win32gettimeofday.c', # Win32 only @basepath + 'src/port/win32pwrite.c', # Win32 only @basepath + 'src/port/win32pread.c', # Win32 only @basepath + 'src/port/win32link.c', # Win32 only @basepath + 'src/port/win32getrusage.c', # Win32 only @basepath + 'src/port/strnlen.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-gssapi-common.c', # Requires GSSAPI (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) @basepath + 'contrib/pgcrypto/pgp-mpi-openssl.c', # Requires OpenSSL (which we don't want to require) @basepath + 'contrib/pgcrypto/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') - Dir.glob(@basepath + 'src/backend/nodes/*.switch.c') - Dir.glob(@basepath + 'src/backend/nodes/*.funcs.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) flags = [ '-I', @basepath + 'src/include', '-I', '/usr/local/opt/openssl/include', '-I', `xcrun --sdk macosx --show-sdk-path`.strip + '/usr/include', '-DDLSUFFIX=".bundle"', '-g', '-ferror-limit=0', '-DUSE_ASSERT_CHECKING', # EXEC_BACKEND is used on Windows, and can always be safely set during code analysis '-DEXEC_BACKEND', ] # For certain files, use WIN32 define - we can't always do this since it pulls unnecessary code in other cases if file == @basepath + 'src/backend/utils/error/elog.c' || file == @basepath + 'src/backend/utils/mb/mbutils.c' flags << '-DWIN32' flags << '-D__CYGWIN__' # Avoid pulling in win32_port.h (which includes a bunch of system headers we don't actually have) end # To override built-ins, we must avoid pulling in any system headers, so pretend we already defined c.h if file == @basepath + 'src/port/strlcpy.c' flags << '-DC_H' flags << '-DHAVE_DECL_STRLCPY=0' flags << '-Dsize_t=unsigned' end translation_unit = index.parse_translation_unit(file, flags) 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.is_a?(FFI::Clang::Types::Array) && cursor.type.element_type.const_qualified?) && !(cursor.type.is_a?(FFI::Clang::Types::Pointer) && 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| # There seems to be a bug here on modern Clang versions where the # cursor kind gets modified once we call "child_cursor.definition" # - thus we make a copy ahead of calling that, for later use child_cursor_kind = child_cursor.kind # 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_]+\.funcs.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*(?: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 unless special_include_file?(filename) out_name = filename.gsub(%r{^#{@basepath}}, '').gsub('/', '_') File.write(@out_path + out_name, str) end end #return additional_includes = Dir.glob(@basepath + 'src/include/storage/dsm_impl.h') + Dir.glob(@basepath + 'src/include/port/atomics/**/*.h') + Dir.glob(@basepath + 'src/include/port/win32/**/*.h') + Dir.glob(@basepath + 'src/include/port/win32_msvc/**/*.h') + Dir.glob(@basepath + 'src/include/port/win32.h') + Dir.glob(@basepath + 'src/include/port/win32_port.h') (@include_files_to_output + additional_includes).each do |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!(/(extern\s+)(PGDLLIMPORT\s+)?(const\s+)?(volatile\s+)?(\w+)\s+(\*{0,2})#{variable}(\[\])?;/, "\\1\\2__thread \\3\\4\\5 \\6#{variable}\\7;") 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') # We have to mock this as it calls `hash_search`, which eventually makes # calls down to `pgstat_report_wait_start` and `pgstat_report_wait_end`. # These functions depend on the existence of a global variable # `my_wait_event_info`. # # The problem here is we can't reasonably compile the source file # `backend/utils/activity/wait_event.c` which provides this symbol, as it # initializes the value by-default to a reference to another global. # Normally this is fine, but we transform both of these globals so that they # are thread local via `__thread`, and it is not valid to initialize one thread # local with the address of another. # # Instead of tackling this directly, we just return `NULL` in the mock below, # observing that we do not need to support the registration of custom nodes. runner.mock('GetExtensibleNodeMethods', %( const ExtensibleNodeMethods * GetExtensibleNodeMethods(const char *extnodename, bool missing_ok) { return NULL; } )) # 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; char *ident = NULL, *ns = NULL; typ = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); typ->ttype = PLPGSQL_TTYPE_SCALAR; typ->atttypmod = typmod; typ->collation = collation; if (origtypname) { typ->typoid = origtypname->typeOid; if (list_length(origtypname->names) == 1) { ident = linitial_node(String, origtypname->names)->sval; } else if (list_length(origtypname->names) == 2) { ns = linitial_node(String, origtypname->names)->sval; ident = lsecond_node(String, origtypname->names)->sval; if (strcmp(ns, "pg_catalog") != 0) typ->ttype = PLPGSQL_TTYPE_REC; } } else { typ->typoid = typeOid; ns = "pg_catalog"; switch(typeOid) { case BOOLOID: ident = "boolean"; break; case INT4OID: ident = "integer"; break; case TEXTOID: ident = "text"; break; case REFCURSOROID: ident = "refcursor"; break; } } if (ident) { typ->typname = quote_qualified_identifier(ns, ident); } return typ; } )) runner.mock('parse_datatype', %( #include "catalog/pg_collation_d.h" static PLpgSQL_type * parse_datatype(const char *string, int location) { PLpgSQL_type *typ; /* Ignore trailing spaces */ size_t len = strlen(string); while (len > 0 && scanner_isspace(string[len - 1])) --len; typ = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); typ->typname = pstrdup(string); typ->ttype = pg_strncasecmp(string, "RECORD", len) == 0 ? PLPGSQL_TTYPE_REC : PLPGSQL_TTYPE_SCALAR; if (pg_strncasecmp(string, "REFCURSOR", len) == 0 || pg_strncasecmp(string, "CURSOR", len) == 0) { typ->typoid = REFCURSOROID; } else if (pg_strncasecmp(string, "TEXT", len) == 0) { typ->typoid = TEXTOID; typ->collation = DEFAULT_COLLATION_OID; } return typ; } )) runner.mock('plpgsql_build_datatype_arrayof', %( PLpgSQL_type * plpgsql_build_datatype_arrayof(PLpgSQL_type *dtype) { if (dtype->typisarray) return dtype; PLpgSQL_type *array_type; array_type = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); array_type->ttype = PLPGSQL_TTYPE_REC; array_type->atttypmod = dtype->atttypmod; array_type->collation = dtype->collation; array_type->typisarray = true; switch(dtype->typoid) { case BOOLOID: array_type->typoid = BOOLARRAYOID; array_type->typname = pstrdup("boolean[]"); break; case INT4OID: array_type->typoid = INT4ARRAYOID; array_type->typname = pstrdup("integer[]"); break; case TEXTOID: array_type->typoid = TEXTARRAYOID; array_type->typname = pstrdup("text[]"); break; default: array_type->typname = pstrdup("UNKNOWN"); break; } array_type->typoid = dtype->typoid; return array_type; } )) runner.mock('get_collation_oid', 'Oid get_collation_oid(List *name, bool missing_ok) { return DEFAULT_COLLATION_OID; }') 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 # Mocks REQUIRED for Windows support runner.mock('write_stderr', %( void write_stderr(const char *fmt,...) { va_list ap; va_start(ap, fmt); vfprintf(stderr, fmt, ap); fflush(stderr); va_end(ap); } )) # Avoid pulling in write_console/write_eventlog, and instead always output to stderr (like on POSIX) runner.mock('should_output_to_client', 'static inline bool should_output_to_client(int elevel) { return false; }') # Avoid pulling in postmaster.c, which has a bunch of Windows-specific code hidden behind a define ## --- # SQL Parsing runner.deep_resolve('raw_parser') # PL/pgSQL Parsing runner.deep_resolve('plpgsql_compile_inline') runner.deep_resolve('plpgsql_free_function_memory') runner.deep_resolve('quote_qualified_identifier') # 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('MemoryContextAllocZero') runner.deep_resolve('MemoryContextSizeFailure') 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('pg_qsort_strcmp') runner.deep_resolve('raw_expression_tree_walker_impl') # 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.deep_resolve('pg_strncasecmp') # Retain these functions for optional 32-bit support # (see BITS_PER_BITMAPWORD checks in bitmapset.c) runner.deep_resolve('pg_leftmost_one_pos32') runner.deep_resolve('pg_rightmost_one_pos32') runner.deep_resolve('pg_popcount32') # Required for Windows support runner.deep_resolve('newNodeMacroHolder') runner.deep_resolve('pg_leftmost_one_pos') runner.deep_resolve('pg_rightmost_one_pos') runner.deep_resolve('pg_number_of_ones') runner.deep_resolve('GetMessageEncoding') runner.deep_resolve('strlcpy') runner.deep_resolve('pg_signal_queue') runner.deep_resolve('pg_signal_mask') runner.deep_resolve('pgwin32_dispatch_queued_signals') 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-17-6.1.0/scripts/generate_fingerprint_outfuncs.rb000077500000000000000000000322131477334012600244430ustar00rootroot00000000000000#!/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, %s&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, %snode->%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) && !(list_length(node->%s) == 1 && linitial(node->%s) == NIL)) { 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_UINT64 = <<-EOL if (node->%s != 0) { char buffer[50]; sprintf(buffer, UINT64_FORMAT, 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->sval) > 0) { _fingerprintString(ctx, "%s"); _fingerprintString(ctx, node->%s->sval); } EOL FINGERPRINT_BOOL = <<-EOL if (node->%s) { _fingerprintString(ctx, "%s"); _fingerprintString(ctx, "true"); } EOL FINGERPRINT_INT_ARRAY = <<-EOL if (true) { int x = -1; Bitmapset *bms = bms_copy(node->%s); _fingerprintString(ctx, "%s"); while ((x = bms_next_member(bms, x)) >= 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, ['CreateFunctionStmt', 'options'] => :skip, ['FunctionParameter', 'name'] => :skip, ['DoStmt', 'args'] => :skip, ['ListenStmt', 'conditionname'] => :skip, ['UnlistenStmt', 'conditionname'] => :skip, ['NotifyStmt', 'conditionname'] => :skip, ['DeclareCursorStmt', 'portalname'] => :skip, ['FetchStmt', 'portalname'] => :skip, ['ClosePortalStmt', 'portalname'] => :skip, ['RawStmt', 'stmt_len'] => :skip, ['RawStmt', 'stmt_location'] => :skip, ['JsonTablePath', 'value'] => :skip, ['JsonTablePathSpec', 'name_location'] => :skip, ['JsonTablePathSpec', 'location'] => :skip, } INT_TYPES = ['bits32', 'uint32', 'int', 'int32', 'uint16', 'int16', 'Oid', 'Index', 'AttrNumber', 'SubTransactionId', 'RelFileNumber', 'ParseLoc'] LONG_INT_TYPES = ['long'] UINT64_TYPES = ['uint64', 'AclMode'] INT_ARRAY_TYPES = ['Bitmapset*', 'Bitmapset', 'Relids'] FLOAT_TYPES = ['Cost', 'double', 'Cardinality'] 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, cast: '') when 'Node*', 'Expr*' fingerprint_def += format(FINGERPRINT_NODE_PTR, name: name, cast: '') when 'JsonTablePlan' fingerprint_def += format(FINGERPRINT_NODE, name: name, cast: '(Node*)') when 'JsonTablePlan*' fingerprint_def += format(FINGERPRINT_NODE_PTR, name: name, cast: '(Node*)') 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 *UINT64_TYPES fingerprint_def += format(FINGERPRINT_UINT64, 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] 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/include/pg_query_fingerprint_defs.c', defs) File.write('./src/include/pg_query_fingerprint_conds.c', conds) end end Generator.new.generate! libpg_query-17-6.1.0/scripts/generate_fingerprint_tests.rb000077500000000000000000000013711477334012600237400ustar00rootroot00000000000000#!/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| if test_def['disableOnMsvc'] test_lines << '#ifndef _MSC_VER' end test_lines << format(' %s,', test_def['input'].inspect) test_lines << format(' %s,', test_def['expectedHash'].inspect) if test_def['disableOnMsvc'] test_lines << '#endif' end end File.write './test/fingerprint_tests.c', <<-EOF const char* tests[] = { #{test_lines.join("\n")} }; const size_t testsLength = sizeof(tests)/sizeof(*tests)/2; EOF end end Generator.new.generate! libpg_query-17-6.1.0/scripts/generate_protobuf_and_funcs.rb000077500000000000000000000472651477334012600240630ustar00rootroot00000000000000#!/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 ['JsonTablePath', 'value'] => :skip, } 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', 'ParseLoc'].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', 'SubTransactionId', 'RelFileNumber'].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 ['uint64', 'AclMode'].include?(type) @outmethods[node_type] += format(" WRITE_UINT64_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_UINT64_FIELD(%s, %s, %s);\n", outname, outname_json, name) @protobuf_messages[node_type] += format(" uint64 %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', 'Cardinality', '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 ['Node'].include?(type) @outmethods[node_type] += format(" WRITE_NODE_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_NODE_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 # Abstract node types that require casting. elsif ['Expr*', 'JsonTablePlan*'].include?(type) @outmethods[node_type] += format(" WRITE_NODE_PTR_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_ABSTRACT_PTR_FIELD(%s, %s, %s, %s);\n", outname, outname_json, name, type) @protobuf_messages[node_type] += format(" Node %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 # Abstract types that have no read or out methods. elsif ['Expr', 'JsonTablePlan'].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, Integer, integer); break; case T_Boolean: OUT_NODE(Boolean, Boolean, boolean, BOOLEAN, Boolean, boolean); break; case T_Float: OUT_NODE(Float, Float, float, FLOAT, Float, float_); break; case T_String: OUT_NODE(String, String, string, STRING, String, string); break; case T_BitString: OUT_NODE(BitString, BitString, bit_string, BIT_STRING, BitString, bit_string); 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_A_Const: OUT_NODE(A_Const, AConst, a__const, A_CONST, A_Const, a_const); 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', 'Boolean', 'String', 'BitString', 'List', 'IntList', 'OidList', 'A_Const'].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/include/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/include/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/include/pg_query_outfuncs_conds.c', "// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb\n\n" + out_conds) File.write('./src/include/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/include/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 fval = 1; /* string */ } message Boolean { bool boolval = 1; } message String { string sval = 1; /* string */ } message BitString { string bsval = 1; /* string */ } message List { repeated Node items = 1; } message OidList { repeated Node items = 1; } message IntList { repeated Node items = 1; } message A_Const { oneof val { Integer ival = 1; Float fval = 2; Boolean boolval = 3; String sval = 4; BitString bsval = 5; } bool isnull = 10; int32 location = 11; } #{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_36 = 36; // \"$\" 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-17-6.1.0/scripts/pg_config_overrides.h000066400000000000000000000106671477334012600221630ustar00rootroot00000000000000/* * Assume we don't have xlocale.h on non-MacOS, as not all Linux distros have "xlocale.h" available. * * Note this is required on older MacOS to avoid "unknown type name 'locale_t'" */ #undef LOCALE_T_IN_XLOCALE #ifdef __APPLE__ #define LOCALE_T_IN_XLOCALE 1 #endif #undef WCSTOMBS_L_IN_XLOCALE /* Support gcc earlier than 4.6.0 and MSVC */ #undef HAVE__STATIC_ASSERT /* Avoid dependency on execinfo (requires extra library on musl-libc based systems, not supported on Windows) */ #undef HAVE_EXECINFO_H #undef HAVE_BACKTRACE_SYMBOLS /* Avoid dependency on hardware popcount instructions (POPQNTQ) on x86 */ #undef HAVE_X86_64_POPCNTQ /* Avoid dependency on cpuid.h (only supported on x86 systems) */ #undef HAVE__GET_CPUID /* Avoid CRC extension usage to ensure we are not architecture-dependent */ #undef USE_ARMV8_CRC32C #undef USE_SSE42_CRC32C_WITH_RUNTIME_CHECK /* * Ensure we use built-in strchrnul on systems that have strchrnul support (FreeBSD, NetBSD and newer glibc) * * Note MacOS 15.4+ also has strchrnul implemented, but is complex to handle correctly, and the code works * around the double define. */ #include #undef HAVE_DECL_STRCHRNUL #if defined(__FreeBSD__) || defined(__NetBSD__) || (defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 38) || __GLIBC__ > 2)) #define HAVE_DECL_STRCHRNUL 1 #else #define HAVE_DECL_STRCHRNUL 0 #endif /* 32-bit */ #if defined(_WIN32) || __SIZEOF_POINTER__ == 4 #undef ALIGNOF_DOUBLE #define ALIGNOF_DOUBLE 4 #undef ALIGNOF_LONG #define ALIGNOF_LONG 4 #define ALIGNOF_LONG_LONG_INT 4 #undef ALIGNOF_PG_INT128_TYPE #undef HAVE_LONG_INT_64 #define HAVE_LONG_LONG_INT_64 1 #undef INT64_MODIFIER #define INT64_MODIFIER "ll" #undef PG_INT128_TYPE #undef PG_INT64_TYPE #define PG_INT64_TYPE long long int #undef SIZEOF_LONG #define SIZEOF_LONG 4 #undef SIZEOF_OFF_T #define SIZEOF_OFF_T 4 #undef SIZEOF_SIZE_T #define SIZEOF_SIZE_T 4 #undef SIZEOF_VOID_P #define SIZEOF_VOID_P 4 #endif /* Windows */ #if defined(_WIN32) || defined(_WIN64) #undef HAVE_COPYFILE #undef HAVE_COPYFILE_H #undef HAVE_DECL_F_FULLFSYNC #define HAVE_DECL_F_FULLFSYNC 0 #undef HAVE_DECL_PREADV #define HAVE_DECL_PREADV 0 #undef HAVE_DECL_PWRITEV #define HAVE_DECL_PWRITEV 0 #undef HAVE_DECL_STRLCAT #define HAVE_DECL_STRLCAT 0 #undef HAVE_DECL_STRLCPY #define HAVE_DECL_STRLCPY 0 #undef HAVE_GETIFADDRS #undef HAVE_GETPEEREID #undef HAVE_IFADDRS_H #undef HAVE_INET_ATON #undef HAVE_INT_OPTRESET #undef HAVE_KQUEUE #undef HAVE_LANGINFO_H #undef HAVE_MEMSET_S #undef HAVE_MKDTEMP #undef HAVE_PTHREAD #undef HAVE_PTHREAD_BARRIER_WAIT #undef HAVE_PTHREAD_IS_THREADED_NP #undef HAVE_PTHREAD_PRIO_INHERIT #undef HAVE_STRERROR_R #undef HAVE_STRLCAT #undef HAVE_STRLCPY #undef HAVE_STRSIGNAL #undef HAVE_STRUCT_SOCKADDR_SA_LEN #undef HAVE_STRUCT_TM_TM_ZONE #undef HAVE_SYSLOG #undef HAVE_SYS_EVENT_H #undef HAVE_SYS_UCRED_H #undef HAVE_TERMIOS_H #undef HAVE_UNION_SEMUN #undef HAVE_USELOCALE #define HAVE__CONFIGTHREADLOCALE 1 #undef STRERROR_R_INT #undef USE_SYSV_SEMAPHORES #undef USE_SYSV_SHARED_MEMORY #define USE_WIN32_SEMAPHORES 1 #define USE_WIN32_SHARED_MEMORY 1 #undef PG_PRINTF_ATTRIBUTE #if defined(__clang__) #define PG_PRINTF_ATTRIBUTE printf #elif defined(__MINGW32__) || defined(__MINGW64__) || defined(__MSYS__) || defined(__CYGWIN__) #define PG_PRINTF_ATTRIBUTE gnu_printf #endif #if defined(__MINGW32__) || defined(__MINGW64__) || defined(__MSYS__) || defined(__CYGWIN__) #undef HAVE_MBSTOWCS_L #undef HAVE_WCSTOMBS_L #define HAVE_CRTDEFS_H 1 #define HAVE_PTHREAD_BARRIER_WAIT 1 #endif #endif /* Microsoft Visual Studio Compiler */ #ifdef _MSC_VER #undef HAVE_COMPUTED_GOTO #undef HAVE_GCC__ATOMIC_INT32_CAS #undef HAVE_GCC__ATOMIC_INT64_CAS #undef HAVE_GCC__SYNC_CHAR_TAS #undef HAVE_GCC__SYNC_INT32_CAS #undef HAVE_GCC__SYNC_INT32_TAS #undef HAVE_GCC__SYNC_INT64_CAS #undef HAVE_GETOPT #undef HAVE_GETOPT_H #undef HAVE_GETOPT_LONG #undef HAVE_INTTYPES_H #undef HAVE_INT_OPTERR #undef HAVE_LIBM #undef HAVE_STRINGS_H #undef HAVE_STRUCT_OPTION #undef HAVE_TYPEOF #undef HAVE_VISIBILITY_ATTRIBUTE #undef HAVE__BOOL #undef HAVE__BUILTIN_BSWAP16 #undef HAVE__BUILTIN_BSWAP32 #undef HAVE__BUILTIN_BSWAP64 #undef HAVE__BUILTIN_CLZ #undef HAVE__BUILTIN_CONSTANT_P #undef HAVE__BUILTIN_CTZ #undef HAVE__BUILTIN_FRAME_ADDRESS #undef HAVE__BUILTIN_OP_OVERFLOW #undef HAVE__BUILTIN_POPCOUNT #undef HAVE__BUILTIN_TYPES_COMPATIBLE_P #undef HAVE__BUILTIN_UNREACHABLE #ifndef __cplusplus #define inline __inline #endif #undef restrict #define __thread __declspec( thread ) #endif libpg_query-17-6.1.0/src/000077500000000000000000000000001477334012600150635ustar00rootroot00000000000000libpg_query-17-6.1.0/src/include/000077500000000000000000000000001477334012600165065ustar00rootroot00000000000000libpg_query-17-6.1.0/src/include/pg_query_enum_defs.c000066400000000000000000002445351477334012600225470ustar00rootroot00000000000000// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb 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* _enumToStringSetQuantifier(SetQuantifier value) { switch(value) { case SET_QUANTIFIER_DEFAULT: return "SET_QUANTIFIER_DEFAULT"; case SET_QUANTIFIER_ALL: return "SET_QUANTIFIER_ALL"; case SET_QUANTIFIER_DISTINCT: return "SET_QUANTIFIER_DISTINCT"; } 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_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"; } Assert(false); return NULL; } static const char* _enumToStringRoleSpecType(RoleSpecType value) { switch(value) { case ROLESPEC_CSTRING: return "ROLESPEC_CSTRING"; case ROLESPEC_CURRENT_ROLE: return "ROLESPEC_CURRENT_ROLE"; 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_COMPRESSION: return "CREATE_TABLE_LIKE_COMPRESSION"; 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* _enumToStringPartitionStrategy(PartitionStrategy value) { switch(value) { case PARTITION_STRATEGY_LIST: return "PARTITION_STRATEGY_LIST"; case PARTITION_STRATEGY_RANGE: return "PARTITION_STRATEGY_RANGE"; case PARTITION_STRATEGY_HASH: return "PARTITION_STRATEGY_HASH"; } 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"; case WCO_RLS_MERGE_UPDATE_CHECK: return "WCO_RLS_MERGE_UPDATE_CHECK"; case WCO_RLS_MERGE_DELETE_CHECK: return "WCO_RLS_MERGE_DELETE_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* _enumToStringJsonQuotes(JsonQuotes value) { switch(value) { case JS_QUOTES_UNSPEC: return "JS_QUOTES_UNSPEC"; case JS_QUOTES_KEEP: return "JS_QUOTES_KEEP"; case JS_QUOTES_OMIT: return "JS_QUOTES_OMIT"; } Assert(false); return NULL; } static const char* _enumToStringJsonTableColumnType(JsonTableColumnType value) { switch(value) { case JTC_FOR_ORDINALITY: return "JTC_FOR_ORDINALITY"; case JTC_REGULAR: return "JTC_REGULAR"; case JTC_EXISTS: return "JTC_EXISTS"; case JTC_FORMATTED: return "JTC_FORMATTED"; case JTC_NESTED: return "JTC_NESTED"; } 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_PARAMETER_ACL: return "OBJECT_PARAMETER_ACL"; case OBJECT_POLICY: return "OBJECT_POLICY"; case OBJECT_PROCEDURE: return "OBJECT_PROCEDURE"; case OBJECT_PUBLICATION: return "OBJECT_PUBLICATION"; case OBJECT_PUBLICATION_NAMESPACE: return "OBJECT_PUBLICATION_NAMESPACE"; 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_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_SetExpression: return "AT_SetExpression"; 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_SetCompression: return "AT_SetCompression"; case AT_DropColumn: return "AT_DropColumn"; case AT_AddIndex: return "AT_AddIndex"; case AT_ReAddIndex: return "AT_ReAddIndex"; case AT_AddConstraint: return "AT_AddConstraint"; 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_AddIndexConstraint: return "AT_AddIndexConstraint"; case AT_DropConstraint: return "AT_DropConstraint"; 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_SetAccessMethod: return "AT_SetAccessMethod"; 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_DetachPartitionFinalize: return "AT_DetachPartitionFinalize"; case AT_AddIdentity: return "AT_AddIdentity"; case AT_SetIdentity: return "AT_SetIdentity"; case AT_DropIdentity: return "AT_DropIdentity"; case AT_ReAddStatistics: return "AT_ReAddStatistics"; } 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"; case FUNC_PARAM_DEFAULT: return "FUNC_PARAM_DEFAULT"; } 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* _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* _enumToStringPublicationObjSpecType(PublicationObjSpecType value) { switch(value) { case PUBLICATIONOBJ_TABLE: return "PUBLICATIONOBJ_TABLE"; case PUBLICATIONOBJ_TABLES_IN_SCHEMA: return "PUBLICATIONOBJ_TABLES_IN_SCHEMA"; case PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA: return "PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA"; case PUBLICATIONOBJ_CONTINUATION: return "PUBLICATIONOBJ_CONTINUATION"; } Assert(false); return NULL; } static const char* _enumToStringAlterPublicationAction(AlterPublicationAction value) { switch(value) { case AP_AddObjects: return "AP_AddObjects"; case AP_DropObjects: return "AP_DropObjects"; case AP_SetObjects: return "AP_SetObjects"; } 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_SET_PUBLICATION: return "ALTER_SUBSCRIPTION_SET_PUBLICATION"; case ALTER_SUBSCRIPTION_ADD_PUBLICATION: return "ALTER_SUBSCRIPTION_ADD_PUBLICATION"; case ALTER_SUBSCRIPTION_DROP_PUBLICATION: return "ALTER_SUBSCRIPTION_DROP_PUBLICATION"; case ALTER_SUBSCRIPTION_REFRESH: return "ALTER_SUBSCRIPTION_REFRESH"; case ALTER_SUBSCRIPTION_ENABLED: return "ALTER_SUBSCRIPTION_ENABLED"; case ALTER_SUBSCRIPTION_SKIP: return "ALTER_SUBSCRIPTION_SKIP"; } Assert(false); return NULL; } 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* _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* _enumToStringTableFuncType(TableFuncType value) { switch(value) { case TFT_XMLTABLE: return "TFT_XMLTABLE"; case TFT_JSON_TABLE: return "TFT_JSON_TABLE"; } 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_PLPGSQL: return "COERCION_PLPGSQL"; 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"; case COERCE_SQL_SYNTAX: return "COERCE_SQL_SYNTAX"; } 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* _enumToStringJsonEncoding(JsonEncoding value) { switch(value) { case JS_ENC_DEFAULT: return "JS_ENC_DEFAULT"; case JS_ENC_UTF8: return "JS_ENC_UTF8"; case JS_ENC_UTF16: return "JS_ENC_UTF16"; case JS_ENC_UTF32: return "JS_ENC_UTF32"; } Assert(false); return NULL; } static const char* _enumToStringJsonFormatType(JsonFormatType value) { switch(value) { case JS_FORMAT_DEFAULT: return "JS_FORMAT_DEFAULT"; case JS_FORMAT_JSON: return "JS_FORMAT_JSON"; case JS_FORMAT_JSONB: return "JS_FORMAT_JSONB"; } Assert(false); return NULL; } static const char* _enumToStringJsonConstructorType(JsonConstructorType value) { switch(value) { case JSCTOR_JSON_OBJECT: return "JSCTOR_JSON_OBJECT"; case JSCTOR_JSON_ARRAY: return "JSCTOR_JSON_ARRAY"; case JSCTOR_JSON_OBJECTAGG: return "JSCTOR_JSON_OBJECTAGG"; case JSCTOR_JSON_ARRAYAGG: return "JSCTOR_JSON_ARRAYAGG"; case JSCTOR_JSON_PARSE: return "JSCTOR_JSON_PARSE"; case JSCTOR_JSON_SCALAR: return "JSCTOR_JSON_SCALAR"; case JSCTOR_JSON_SERIALIZE: return "JSCTOR_JSON_SERIALIZE"; } Assert(false); return NULL; } static const char* _enumToStringJsonValueType(JsonValueType value) { switch(value) { case JS_TYPE_ANY: return "JS_TYPE_ANY"; case JS_TYPE_OBJECT: return "JS_TYPE_OBJECT"; case JS_TYPE_ARRAY: return "JS_TYPE_ARRAY"; case JS_TYPE_SCALAR: return "JS_TYPE_SCALAR"; } Assert(false); return NULL; } static const char* _enumToStringJsonWrapper(JsonWrapper value) { switch(value) { case JSW_UNSPEC: return "JSW_UNSPEC"; case JSW_NONE: return "JSW_NONE"; case JSW_CONDITIONAL: return "JSW_CONDITIONAL"; case JSW_UNCONDITIONAL: return "JSW_UNCONDITIONAL"; } Assert(false); return NULL; } static const char* _enumToStringJsonBehaviorType(JsonBehaviorType value) { switch(value) { case JSON_BEHAVIOR_NULL: return "JSON_BEHAVIOR_NULL"; case JSON_BEHAVIOR_ERROR: return "JSON_BEHAVIOR_ERROR"; case JSON_BEHAVIOR_EMPTY: return "JSON_BEHAVIOR_EMPTY"; case JSON_BEHAVIOR_TRUE: return "JSON_BEHAVIOR_TRUE"; case JSON_BEHAVIOR_FALSE: return "JSON_BEHAVIOR_FALSE"; case JSON_BEHAVIOR_UNKNOWN: return "JSON_BEHAVIOR_UNKNOWN"; case JSON_BEHAVIOR_EMPTY_ARRAY: return "JSON_BEHAVIOR_EMPTY_ARRAY"; case JSON_BEHAVIOR_EMPTY_OBJECT: return "JSON_BEHAVIOR_EMPTY_OBJECT"; case JSON_BEHAVIOR_DEFAULT: return "JSON_BEHAVIOR_DEFAULT"; } Assert(false); return NULL; } static const char* _enumToStringJsonExprOp(JsonExprOp value) { switch(value) { case JSON_EXISTS_OP: return "JSON_EXISTS_OP"; case JSON_QUERY_OP: return "JSON_QUERY_OP"; case JSON_VALUE_OP: return "JSON_VALUE_OP"; case JSON_TABLE_OP: return "JSON_TABLE_OP"; } 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* _enumToStringMergeMatchKind(MergeMatchKind value) { switch(value) { case MERGE_WHEN_MATCHED: return "MERGE_WHEN_MATCHED"; case MERGE_WHEN_NOT_MATCHED_BY_SOURCE: return "MERGE_WHEN_NOT_MATCHED_BY_SOURCE"; case MERGE_WHEN_NOT_MATCHED_BY_TARGET: return "MERGE_WHEN_NOT_MATCHED_BY_TARGET"; } 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_MERGE: return "CMD_MERGE"; 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_RIGHT_ANTI: return "JOIN_RIGHT_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 _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 _enumToIntSetQuantifier(SetQuantifier value) { switch(value) { case SET_QUANTIFIER_DEFAULT: return 1; case SET_QUANTIFIER_ALL: return 2; case SET_QUANTIFIER_DISTINCT: 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_IN: return 7; case AEXPR_LIKE: return 8; case AEXPR_ILIKE: return 9; case AEXPR_SIMILAR: return 10; case AEXPR_BETWEEN: return 11; case AEXPR_NOT_BETWEEN: return 12; case AEXPR_BETWEEN_SYM: return 13; case AEXPR_NOT_BETWEEN_SYM: return 14; } Assert(false); return -1; } static int _enumToIntRoleSpecType(RoleSpecType value) { switch(value) { case ROLESPEC_CSTRING: return 1; case ROLESPEC_CURRENT_ROLE: return 2; case ROLESPEC_CURRENT_USER: return 3; case ROLESPEC_SESSION_USER: return 4; case ROLESPEC_PUBLIC: return 5; } Assert(false); return -1; } static int _enumToIntTableLikeOption(TableLikeOption value) { switch(value) { case CREATE_TABLE_LIKE_COMMENTS: return 1; case CREATE_TABLE_LIKE_COMPRESSION: return 2; case CREATE_TABLE_LIKE_CONSTRAINTS: return 3; case CREATE_TABLE_LIKE_DEFAULTS: return 4; case CREATE_TABLE_LIKE_GENERATED: return 5; case CREATE_TABLE_LIKE_IDENTITY: return 6; case CREATE_TABLE_LIKE_INDEXES: return 7; case CREATE_TABLE_LIKE_STATISTICS: return 8; case CREATE_TABLE_LIKE_STORAGE: return 9; case CREATE_TABLE_LIKE_ALL: return 10; } 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 _enumToIntPartitionStrategy(PartitionStrategy value) { switch(value) { case PARTITION_STRATEGY_LIST: return 1; case PARTITION_STRATEGY_RANGE: return 2; case PARTITION_STRATEGY_HASH: return 3; } 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; case WCO_RLS_MERGE_UPDATE_CHECK: return 5; case WCO_RLS_MERGE_DELETE_CHECK: return 6; } 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 _enumToIntJsonQuotes(JsonQuotes value) { switch(value) { case JS_QUOTES_UNSPEC: return 1; case JS_QUOTES_KEEP: return 2; case JS_QUOTES_OMIT: return 3; } Assert(false); return -1; } static int _enumToIntJsonTableColumnType(JsonTableColumnType value) { switch(value) { case JTC_FOR_ORDINALITY: return 1; case JTC_REGULAR: return 2; case JTC_EXISTS: return 3; case JTC_FORMATTED: return 4; case JTC_NESTED: return 5; } 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_PARAMETER_ACL: return 28; case OBJECT_POLICY: return 29; case OBJECT_PROCEDURE: return 30; case OBJECT_PUBLICATION: return 31; case OBJECT_PUBLICATION_NAMESPACE: return 32; case OBJECT_PUBLICATION_REL: return 33; case OBJECT_ROLE: return 34; case OBJECT_ROUTINE: return 35; case OBJECT_RULE: return 36; case OBJECT_SCHEMA: return 37; case OBJECT_SEQUENCE: return 38; case OBJECT_SUBSCRIPTION: return 39; case OBJECT_STATISTIC_EXT: return 40; case OBJECT_TABCONSTRAINT: return 41; case OBJECT_TABLE: return 42; case OBJECT_TABLESPACE: return 43; case OBJECT_TRANSFORM: return 44; case OBJECT_TRIGGER: return 45; case OBJECT_TSCONFIGURATION: return 46; case OBJECT_TSDICTIONARY: return 47; case OBJECT_TSPARSER: return 48; case OBJECT_TSTEMPLATE: return 49; case OBJECT_TYPE: return 50; case OBJECT_USER_MAPPING: return 51; case OBJECT_VIEW: return 52; } 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_AddColumnToView: return 2; case AT_ColumnDefault: return 3; case AT_CookedColumnDefault: return 4; case AT_DropNotNull: return 5; case AT_SetNotNull: return 6; case AT_SetExpression: 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_SetCompression: return 14; case AT_DropColumn: return 15; case AT_AddIndex: return 16; case AT_ReAddIndex: return 17; case AT_AddConstraint: return 18; case AT_ReAddConstraint: return 19; case AT_ReAddDomainConstraint: return 20; case AT_AlterConstraint: return 21; case AT_ValidateConstraint: return 22; case AT_AddIndexConstraint: return 23; case AT_DropConstraint: return 24; case AT_ReAddComment: return 25; case AT_AlterColumnType: return 26; case AT_AlterColumnGenericOptions: return 27; case AT_ChangeOwner: return 28; case AT_ClusterOn: return 29; case AT_DropCluster: return 30; case AT_SetLogged: return 31; case AT_SetUnLogged: return 32; case AT_DropOids: return 33; case AT_SetAccessMethod: return 34; case AT_SetTableSpace: return 35; case AT_SetRelOptions: return 36; case AT_ResetRelOptions: return 37; case AT_ReplaceRelOptions: return 38; case AT_EnableTrig: return 39; case AT_EnableAlwaysTrig: return 40; case AT_EnableReplicaTrig: return 41; case AT_DisableTrig: return 42; case AT_EnableTrigAll: return 43; case AT_DisableTrigAll: return 44; case AT_EnableTrigUser: return 45; case AT_DisableTrigUser: return 46; case AT_EnableRule: return 47; case AT_EnableAlwaysRule: return 48; case AT_EnableReplicaRule: return 49; case AT_DisableRule: return 50; case AT_AddInherit: return 51; case AT_DropInherit: return 52; case AT_AddOf: return 53; case AT_DropOf: return 54; case AT_ReplicaIdentity: return 55; case AT_EnableRowSecurity: return 56; case AT_DisableRowSecurity: return 57; case AT_ForceRowSecurity: return 58; case AT_NoForceRowSecurity: return 59; case AT_GenericOptions: return 60; case AT_AttachPartition: return 61; case AT_DetachPartition: return 62; case AT_DetachPartitionFinalize: return 63; case AT_AddIdentity: return 64; case AT_SetIdentity: return 65; case AT_DropIdentity: return 66; case AT_ReAddStatistics: 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; case FUNC_PARAM_DEFAULT: return 6; } 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 _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 _enumToIntPublicationObjSpecType(PublicationObjSpecType value) { switch(value) { case PUBLICATIONOBJ_TABLE: return 1; case PUBLICATIONOBJ_TABLES_IN_SCHEMA: return 2; case PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA: return 3; case PUBLICATIONOBJ_CONTINUATION: return 4; } Assert(false); return -1; } static int _enumToIntAlterPublicationAction(AlterPublicationAction value) { switch(value) { case AP_AddObjects: return 1; case AP_DropObjects: return 2; case AP_SetObjects: return 3; } 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_SET_PUBLICATION: return 3; case ALTER_SUBSCRIPTION_ADD_PUBLICATION: return 4; case ALTER_SUBSCRIPTION_DROP_PUBLICATION: return 5; case ALTER_SUBSCRIPTION_REFRESH: return 6; case ALTER_SUBSCRIPTION_ENABLED: return 7; case ALTER_SUBSCRIPTION_SKIP: return 8; } Assert(false); return -1; } 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 _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 _enumToIntTableFuncType(TableFuncType value) { switch(value) { case TFT_XMLTABLE: return 1; case TFT_JSON_TABLE: return 2; } 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_PLPGSQL: return 3; case COERCION_EXPLICIT: return 4; } 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; case COERCE_SQL_SYNTAX: return 4; } 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 _enumToIntJsonEncoding(JsonEncoding value) { switch(value) { case JS_ENC_DEFAULT: return 1; case JS_ENC_UTF8: return 2; case JS_ENC_UTF16: return 3; case JS_ENC_UTF32: return 4; } Assert(false); return -1; } static int _enumToIntJsonFormatType(JsonFormatType value) { switch(value) { case JS_FORMAT_DEFAULT: return 1; case JS_FORMAT_JSON: return 2; case JS_FORMAT_JSONB: return 3; } Assert(false); return -1; } static int _enumToIntJsonConstructorType(JsonConstructorType value) { switch(value) { case JSCTOR_JSON_OBJECT: return 1; case JSCTOR_JSON_ARRAY: return 2; case JSCTOR_JSON_OBJECTAGG: return 3; case JSCTOR_JSON_ARRAYAGG: return 4; case JSCTOR_JSON_PARSE: return 5; case JSCTOR_JSON_SCALAR: return 6; case JSCTOR_JSON_SERIALIZE: return 7; } Assert(false); return -1; } static int _enumToIntJsonValueType(JsonValueType value) { switch(value) { case JS_TYPE_ANY: return 1; case JS_TYPE_OBJECT: return 2; case JS_TYPE_ARRAY: return 3; case JS_TYPE_SCALAR: return 4; } Assert(false); return -1; } static int _enumToIntJsonWrapper(JsonWrapper value) { switch(value) { case JSW_UNSPEC: return 1; case JSW_NONE: return 2; case JSW_CONDITIONAL: return 3; case JSW_UNCONDITIONAL: return 4; } Assert(false); return -1; } static int _enumToIntJsonBehaviorType(JsonBehaviorType value) { switch(value) { case JSON_BEHAVIOR_NULL: return 1; case JSON_BEHAVIOR_ERROR: return 2; case JSON_BEHAVIOR_EMPTY: return 3; case JSON_BEHAVIOR_TRUE: return 4; case JSON_BEHAVIOR_FALSE: return 5; case JSON_BEHAVIOR_UNKNOWN: return 6; case JSON_BEHAVIOR_EMPTY_ARRAY: return 7; case JSON_BEHAVIOR_EMPTY_OBJECT: return 8; case JSON_BEHAVIOR_DEFAULT: return 9; } Assert(false); return -1; } static int _enumToIntJsonExprOp(JsonExprOp value) { switch(value) { case JSON_EXISTS_OP: return 1; case JSON_QUERY_OP: return 2; case JSON_VALUE_OP: return 3; case JSON_TABLE_OP: return 4; } 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 _enumToIntMergeMatchKind(MergeMatchKind value) { switch(value) { case MERGE_WHEN_MATCHED: return 1; case MERGE_WHEN_NOT_MATCHED_BY_SOURCE: return 2; case MERGE_WHEN_NOT_MATCHED_BY_TARGET: return 3; } 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_MERGE: return 6; case CMD_UTILITY: return 7; case CMD_NOTHING: return 8; } 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_RIGHT_ANTI: return 7; case JOIN_UNIQUE_OUTER: return 8; case JOIN_UNIQUE_INNER: return 9; } 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 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 SetQuantifier _intToEnumSetQuantifier(int value) { switch(value) { case 1: return SET_QUANTIFIER_DEFAULT; case 2: return SET_QUANTIFIER_ALL; case 3: return SET_QUANTIFIER_DISTINCT; } Assert(false); return SET_QUANTIFIER_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_IN; case 8: return AEXPR_LIKE; case 9: return AEXPR_ILIKE; case 10: return AEXPR_SIMILAR; case 11: return AEXPR_BETWEEN; case 12: return AEXPR_NOT_BETWEEN; case 13: return AEXPR_BETWEEN_SYM; case 14: return AEXPR_NOT_BETWEEN_SYM; } Assert(false); return AEXPR_OP; } static RoleSpecType _intToEnumRoleSpecType(int value) { switch(value) { case 1: return ROLESPEC_CSTRING; case 2: return ROLESPEC_CURRENT_ROLE; case 3: return ROLESPEC_CURRENT_USER; case 4: return ROLESPEC_SESSION_USER; case 5: 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_COMPRESSION; case 3: return CREATE_TABLE_LIKE_CONSTRAINTS; case 4: return CREATE_TABLE_LIKE_DEFAULTS; case 5: return CREATE_TABLE_LIKE_GENERATED; case 6: return CREATE_TABLE_LIKE_IDENTITY; case 7: return CREATE_TABLE_LIKE_INDEXES; case 8: return CREATE_TABLE_LIKE_STATISTICS; case 9: return CREATE_TABLE_LIKE_STORAGE; case 10: 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 PartitionStrategy _intToEnumPartitionStrategy(int value) { switch(value) { case 1: return PARTITION_STRATEGY_LIST; case 2: return PARTITION_STRATEGY_RANGE; case 3: return PARTITION_STRATEGY_HASH; } Assert(false); return PARTITION_STRATEGY_LIST; } 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; case 5: return WCO_RLS_MERGE_UPDATE_CHECK; case 6: return WCO_RLS_MERGE_DELETE_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 JsonQuotes _intToEnumJsonQuotes(int value) { switch(value) { case 1: return JS_QUOTES_UNSPEC; case 2: return JS_QUOTES_KEEP; case 3: return JS_QUOTES_OMIT; } Assert(false); return JS_QUOTES_UNSPEC; } static JsonTableColumnType _intToEnumJsonTableColumnType(int value) { switch(value) { case 1: return JTC_FOR_ORDINALITY; case 2: return JTC_REGULAR; case 3: return JTC_EXISTS; case 4: return JTC_FORMATTED; case 5: return JTC_NESTED; } Assert(false); return JTC_FOR_ORDINALITY; } 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_PARAMETER_ACL; case 29: return OBJECT_POLICY; case 30: return OBJECT_PROCEDURE; case 31: return OBJECT_PUBLICATION; case 32: return OBJECT_PUBLICATION_NAMESPACE; case 33: return OBJECT_PUBLICATION_REL; case 34: return OBJECT_ROLE; case 35: return OBJECT_ROUTINE; case 36: return OBJECT_RULE; case 37: return OBJECT_SCHEMA; case 38: return OBJECT_SEQUENCE; case 39: return OBJECT_SUBSCRIPTION; case 40: return OBJECT_STATISTIC_EXT; case 41: return OBJECT_TABCONSTRAINT; case 42: return OBJECT_TABLE; case 43: return OBJECT_TABLESPACE; case 44: return OBJECT_TRANSFORM; case 45: return OBJECT_TRIGGER; case 46: return OBJECT_TSCONFIGURATION; case 47: return OBJECT_TSDICTIONARY; case 48: return OBJECT_TSPARSER; case 49: return OBJECT_TSTEMPLATE; case 50: return OBJECT_TYPE; case 51: return OBJECT_USER_MAPPING; case 52: 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_AddColumnToView; case 3: return AT_ColumnDefault; case 4: return AT_CookedColumnDefault; case 5: return AT_DropNotNull; case 6: return AT_SetNotNull; case 7: return AT_SetExpression; 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_SetCompression; case 15: return AT_DropColumn; case 16: return AT_AddIndex; case 17: return AT_ReAddIndex; case 18: return AT_AddConstraint; case 19: return AT_ReAddConstraint; case 20: return AT_ReAddDomainConstraint; case 21: return AT_AlterConstraint; case 22: return AT_ValidateConstraint; case 23: return AT_AddIndexConstraint; case 24: return AT_DropConstraint; case 25: return AT_ReAddComment; case 26: return AT_AlterColumnType; case 27: return AT_AlterColumnGenericOptions; case 28: return AT_ChangeOwner; case 29: return AT_ClusterOn; case 30: return AT_DropCluster; case 31: return AT_SetLogged; case 32: return AT_SetUnLogged; case 33: return AT_DropOids; case 34: return AT_SetAccessMethod; case 35: return AT_SetTableSpace; case 36: return AT_SetRelOptions; case 37: return AT_ResetRelOptions; case 38: return AT_ReplaceRelOptions; case 39: return AT_EnableTrig; case 40: return AT_EnableAlwaysTrig; case 41: return AT_EnableReplicaTrig; case 42: return AT_DisableTrig; case 43: return AT_EnableTrigAll; case 44: return AT_DisableTrigAll; case 45: return AT_EnableTrigUser; case 46: return AT_DisableTrigUser; case 47: return AT_EnableRule; case 48: return AT_EnableAlwaysRule; case 49: return AT_EnableReplicaRule; case 50: return AT_DisableRule; case 51: return AT_AddInherit; case 52: return AT_DropInherit; case 53: return AT_AddOf; case 54: return AT_DropOf; case 55: return AT_ReplicaIdentity; case 56: return AT_EnableRowSecurity; case 57: return AT_DisableRowSecurity; case 58: return AT_ForceRowSecurity; case 59: return AT_NoForceRowSecurity; case 60: return AT_GenericOptions; case 61: return AT_AttachPartition; case 62: return AT_DetachPartition; case 63: return AT_DetachPartitionFinalize; case 64: return AT_AddIdentity; case 65: return AT_SetIdentity; case 66: return AT_DropIdentity; case 67: return AT_ReAddStatistics; } 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; case 6: return FUNC_PARAM_DEFAULT; } 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 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 PublicationObjSpecType _intToEnumPublicationObjSpecType(int value) { switch(value) { case 1: return PUBLICATIONOBJ_TABLE; case 2: return PUBLICATIONOBJ_TABLES_IN_SCHEMA; case 3: return PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA; case 4: return PUBLICATIONOBJ_CONTINUATION; } Assert(false); return PUBLICATIONOBJ_TABLE; } static AlterPublicationAction _intToEnumAlterPublicationAction(int value) { switch(value) { case 1: return AP_AddObjects; case 2: return AP_DropObjects; case 3: return AP_SetObjects; } Assert(false); return AP_AddObjects; } static AlterSubscriptionType _intToEnumAlterSubscriptionType(int value) { switch(value) { case 1: return ALTER_SUBSCRIPTION_OPTIONS; case 2: return ALTER_SUBSCRIPTION_CONNECTION; case 3: return ALTER_SUBSCRIPTION_SET_PUBLICATION; case 4: return ALTER_SUBSCRIPTION_ADD_PUBLICATION; case 5: return ALTER_SUBSCRIPTION_DROP_PUBLICATION; case 6: return ALTER_SUBSCRIPTION_REFRESH; case 7: return ALTER_SUBSCRIPTION_ENABLED; case 8: return ALTER_SUBSCRIPTION_SKIP; } Assert(false); return ALTER_SUBSCRIPTION_OPTIONS; } 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 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 TableFuncType _intToEnumTableFuncType(int value) { switch(value) { case 1: return TFT_XMLTABLE; case 2: return TFT_JSON_TABLE; } Assert(false); return TFT_XMLTABLE; } 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_PLPGSQL; case 4: 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; case 4: return COERCE_SQL_SYNTAX; } 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 JsonEncoding _intToEnumJsonEncoding(int value) { switch(value) { case 1: return JS_ENC_DEFAULT; case 2: return JS_ENC_UTF8; case 3: return JS_ENC_UTF16; case 4: return JS_ENC_UTF32; } Assert(false); return JS_ENC_DEFAULT; } static JsonFormatType _intToEnumJsonFormatType(int value) { switch(value) { case 1: return JS_FORMAT_DEFAULT; case 2: return JS_FORMAT_JSON; case 3: return JS_FORMAT_JSONB; } Assert(false); return JS_FORMAT_DEFAULT; } static JsonConstructorType _intToEnumJsonConstructorType(int value) { switch(value) { case 1: return JSCTOR_JSON_OBJECT; case 2: return JSCTOR_JSON_ARRAY; case 3: return JSCTOR_JSON_OBJECTAGG; case 4: return JSCTOR_JSON_ARRAYAGG; case 5: return JSCTOR_JSON_PARSE; case 6: return JSCTOR_JSON_SCALAR; case 7: return JSCTOR_JSON_SERIALIZE; } Assert(false); return JSCTOR_JSON_OBJECT; } static JsonValueType _intToEnumJsonValueType(int value) { switch(value) { case 1: return JS_TYPE_ANY; case 2: return JS_TYPE_OBJECT; case 3: return JS_TYPE_ARRAY; case 4: return JS_TYPE_SCALAR; } Assert(false); return JS_TYPE_ANY; } static JsonWrapper _intToEnumJsonWrapper(int value) { switch(value) { case 1: return JSW_UNSPEC; case 2: return JSW_NONE; case 3: return JSW_CONDITIONAL; case 4: return JSW_UNCONDITIONAL; } Assert(false); return JSW_UNSPEC; } static JsonBehaviorType _intToEnumJsonBehaviorType(int value) { switch(value) { case 1: return JSON_BEHAVIOR_NULL; case 2: return JSON_BEHAVIOR_ERROR; case 3: return JSON_BEHAVIOR_EMPTY; case 4: return JSON_BEHAVIOR_TRUE; case 5: return JSON_BEHAVIOR_FALSE; case 6: return JSON_BEHAVIOR_UNKNOWN; case 7: return JSON_BEHAVIOR_EMPTY_ARRAY; case 8: return JSON_BEHAVIOR_EMPTY_OBJECT; case 9: return JSON_BEHAVIOR_DEFAULT; } Assert(false); return JSON_BEHAVIOR_NULL; } static JsonExprOp _intToEnumJsonExprOp(int value) { switch(value) { case 1: return JSON_EXISTS_OP; case 2: return JSON_QUERY_OP; case 3: return JSON_VALUE_OP; case 4: return JSON_TABLE_OP; } Assert(false); return JSON_EXISTS_OP; } 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 MergeMatchKind _intToEnumMergeMatchKind(int value) { switch(value) { case 1: return MERGE_WHEN_MATCHED; case 2: return MERGE_WHEN_NOT_MATCHED_BY_SOURCE; case 3: return MERGE_WHEN_NOT_MATCHED_BY_TARGET; } Assert(false); return MERGE_WHEN_MATCHED; } 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_MERGE; case 7: return CMD_UTILITY; case 8: 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_RIGHT_ANTI; case 8: return JOIN_UNIQUE_OUTER; case 9: 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-17-6.1.0/src/include/pg_query_fingerprint_conds.c000066400000000000000000001076301477334012600243110ustar00rootroot00000000000000case 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_IntoClause: _fingerprintString(ctx, "IntoClause"); _fingerprintIntoClause(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_WindowFuncRunCondition: _fingerprintString(ctx, "WindowFuncRunCondition"); _fingerprintWindowFuncRunCondition(ctx, obj, parent, field_name, depth); break; case T_MergeSupportFunc: _fingerprintString(ctx, "MergeSupportFunc"); _fingerprintMergeSupportFunc(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_JsonFormat: _fingerprintString(ctx, "JsonFormat"); _fingerprintJsonFormat(ctx, obj, parent, field_name, depth); break; case T_JsonReturning: _fingerprintString(ctx, "JsonReturning"); _fingerprintJsonReturning(ctx, obj, parent, field_name, depth); break; case T_JsonValueExpr: _fingerprintString(ctx, "JsonValueExpr"); _fingerprintJsonValueExpr(ctx, obj, parent, field_name, depth); break; case T_JsonConstructorExpr: _fingerprintString(ctx, "JsonConstructorExpr"); _fingerprintJsonConstructorExpr(ctx, obj, parent, field_name, depth); break; case T_JsonIsPredicate: _fingerprintString(ctx, "JsonIsPredicate"); _fingerprintJsonIsPredicate(ctx, obj, parent, field_name, depth); break; case T_JsonBehavior: _fingerprintString(ctx, "JsonBehavior"); _fingerprintJsonBehavior(ctx, obj, parent, field_name, depth); break; case T_JsonExpr: _fingerprintString(ctx, "JsonExpr"); _fingerprintJsonExpr(ctx, obj, parent, field_name, depth); break; case T_JsonTablePath: _fingerprintString(ctx, "JsonTablePath"); _fingerprintJsonTablePath(ctx, obj, parent, field_name, depth); break; case T_JsonTablePathScan: _fingerprintString(ctx, "JsonTablePathScan"); _fingerprintJsonTablePathScan(ctx, obj, parent, field_name, depth); break; case T_JsonTableSiblingJoin: _fingerprintString(ctx, "JsonTableSiblingJoin"); _fingerprintJsonTableSiblingJoin(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_MergeAction: _fingerprintString(ctx, "MergeAction"); _fingerprintMergeAction(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_Query: _fingerprintString(ctx, "Query"); _fingerprintQuery(ctx, obj, parent, field_name, depth); break; case T_TypeName: _fingerprintString(ctx, "TypeName"); _fingerprintTypeName(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_Expr: _fingerprintString(ctx, "A_Expr"); _fingerprintA_Expr(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_RoleSpec: _fingerprintString(ctx, "RoleSpec"); _fingerprintRoleSpec(ctx, obj, parent, field_name, depth); 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_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_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_RangeTableSample: _fingerprintString(ctx, "RangeTableSample"); _fingerprintRangeTableSample(ctx, obj, parent, field_name, depth); break; case T_ColumnDef: _fingerprintString(ctx, "ColumnDef"); _fingerprintColumnDef(ctx, obj, parent, field_name, depth); break; case T_TableLikeClause: _fingerprintString(ctx, "TableLikeClause"); _fingerprintTableLikeClause(ctx, obj, parent, field_name, depth); break; case T_IndexElem: _fingerprintString(ctx, "IndexElem"); _fingerprintIndexElem(ctx, obj, parent, field_name, depth); break; case T_DefElem: _fingerprintString(ctx, "DefElem"); _fingerprintDefElem(ctx, obj, parent, field_name, depth); break; case T_LockingClause: _fingerprintString(ctx, "LockingClause"); _fingerprintLockingClause(ctx, obj, parent, field_name, depth); break; case T_XmlSerialize: _fingerprintString(ctx, "XmlSerialize"); _fingerprintXmlSerialize(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_SinglePartitionSpec: _fingerprintString(ctx, "SinglePartitionSpec"); _fingerprintSinglePartitionSpec(ctx, obj, parent, field_name, depth); break; case T_PartitionCmd: _fingerprintString(ctx, "PartitionCmd"); _fingerprintPartitionCmd(ctx, obj, parent, field_name, depth); break; case T_RangeTblEntry: _fingerprintString(ctx, "RangeTblEntry"); _fingerprintRangeTblEntry(ctx, obj, parent, field_name, depth); break; case T_RTEPermissionInfo: _fingerprintString(ctx, "RTEPermissionInfo"); _fingerprintRTEPermissionInfo(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_RowMarkClause: _fingerprintString(ctx, "RowMarkClause"); _fingerprintRowMarkClause(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_CTESearchClause: _fingerprintString(ctx, "CTESearchClause"); _fingerprintCTESearchClause(ctx, obj, parent, field_name, depth); break; case T_CTECycleClause: _fingerprintString(ctx, "CTECycleClause"); _fingerprintCTECycleClause(ctx, obj, parent, field_name, depth); break; case T_CommonTableExpr: _fingerprintString(ctx, "CommonTableExpr"); _fingerprintCommonTableExpr(ctx, obj, parent, field_name, depth); break; case T_MergeWhenClause: _fingerprintString(ctx, "MergeWhenClause"); _fingerprintMergeWhenClause(ctx, obj, parent, field_name, depth); break; case T_TriggerTransition: _fingerprintString(ctx, "TriggerTransition"); _fingerprintTriggerTransition(ctx, obj, parent, field_name, depth); break; case T_JsonOutput: _fingerprintString(ctx, "JsonOutput"); _fingerprintJsonOutput(ctx, obj, parent, field_name, depth); break; case T_JsonArgument: _fingerprintString(ctx, "JsonArgument"); _fingerprintJsonArgument(ctx, obj, parent, field_name, depth); break; case T_JsonFuncExpr: _fingerprintString(ctx, "JsonFuncExpr"); _fingerprintJsonFuncExpr(ctx, obj, parent, field_name, depth); break; case T_JsonTablePathSpec: _fingerprintString(ctx, "JsonTablePathSpec"); _fingerprintJsonTablePathSpec(ctx, obj, parent, field_name, depth); break; case T_JsonTable: _fingerprintString(ctx, "JsonTable"); _fingerprintJsonTable(ctx, obj, parent, field_name, depth); break; case T_JsonTableColumn: _fingerprintString(ctx, "JsonTableColumn"); _fingerprintJsonTableColumn(ctx, obj, parent, field_name, depth); break; case T_JsonKeyValue: _fingerprintString(ctx, "JsonKeyValue"); _fingerprintJsonKeyValue(ctx, obj, parent, field_name, depth); break; case T_JsonParseExpr: _fingerprintString(ctx, "JsonParseExpr"); _fingerprintJsonParseExpr(ctx, obj, parent, field_name, depth); break; case T_JsonScalarExpr: _fingerprintString(ctx, "JsonScalarExpr"); _fingerprintJsonScalarExpr(ctx, obj, parent, field_name, depth); break; case T_JsonSerializeExpr: _fingerprintString(ctx, "JsonSerializeExpr"); _fingerprintJsonSerializeExpr(ctx, obj, parent, field_name, depth); break; case T_JsonObjectConstructor: _fingerprintString(ctx, "JsonObjectConstructor"); _fingerprintJsonObjectConstructor(ctx, obj, parent, field_name, depth); break; case T_JsonArrayConstructor: _fingerprintString(ctx, "JsonArrayConstructor"); _fingerprintJsonArrayConstructor(ctx, obj, parent, field_name, depth); break; case T_JsonArrayQueryConstructor: _fingerprintString(ctx, "JsonArrayQueryConstructor"); _fingerprintJsonArrayQueryConstructor(ctx, obj, parent, field_name, depth); break; case T_JsonAggConstructor: _fingerprintString(ctx, "JsonAggConstructor"); _fingerprintJsonAggConstructor(ctx, obj, parent, field_name, depth); break; case T_JsonObjectAgg: _fingerprintString(ctx, "JsonObjectAgg"); _fingerprintJsonObjectAgg(ctx, obj, parent, field_name, depth); break; case T_JsonArrayAgg: _fingerprintString(ctx, "JsonArrayAgg"); _fingerprintJsonArrayAgg(ctx, obj, parent, field_name, depth); break; case T_RawStmt: _fingerprintString(ctx, "RawStmt"); _fingerprintRawStmt(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_MergeStmt: _fingerprintString(ctx, "MergeStmt"); _fingerprintMergeStmt(ctx, obj, parent, field_name, depth); break; case T_SelectStmt: _fingerprintString(ctx, "SelectStmt"); _fingerprintSelectStmt(ctx, obj, parent, field_name, depth); break; case T_SetOperationStmt: _fingerprintString(ctx, "SetOperationStmt"); _fingerprintSetOperationStmt(ctx, obj, parent, field_name, depth); break; case T_ReturnStmt: _fingerprintString(ctx, "ReturnStmt"); _fingerprintReturnStmt(ctx, obj, parent, field_name, depth); break; case T_PLAssignStmt: _fingerprintString(ctx, "PLAssignStmt"); _fingerprintPLAssignStmt(ctx, obj, parent, field_name, depth); break; case T_CreateSchemaStmt: _fingerprintString(ctx, "CreateSchemaStmt"); _fingerprintCreateSchemaStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTableStmt: _fingerprintString(ctx, "AlterTableStmt"); _fingerprintAlterTableStmt(ctx, obj, parent, field_name, depth); break; case T_ReplicaIdentityStmt: _fingerprintString(ctx, "ReplicaIdentityStmt"); _fingerprintReplicaIdentityStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTableCmd: _fingerprintString(ctx, "AlterTableCmd"); _fingerprintAlterTableCmd(ctx, obj, parent, field_name, depth); break; case T_AlterCollationStmt: _fingerprintString(ctx, "AlterCollationStmt"); _fingerprintAlterCollationStmt(ctx, obj, parent, field_name, depth); break; case T_AlterDomainStmt: _fingerprintString(ctx, "AlterDomainStmt"); _fingerprintAlterDomainStmt(ctx, obj, parent, field_name, depth); break; case T_GrantStmt: _fingerprintString(ctx, "GrantStmt"); _fingerprintGrantStmt(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_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_CopyStmt: _fingerprintString(ctx, "CopyStmt"); _fingerprintCopyStmt(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_CreateStmt: _fingerprintString(ctx, "CreateStmt"); _fingerprintCreateStmt(ctx, obj, parent, field_name, depth); break; case T_Constraint: _fingerprintString(ctx, "Constraint"); _fingerprintConstraint(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_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_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_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_CreateForeignTableStmt: _fingerprintString(ctx, "CreateForeignTableStmt"); _fingerprintCreateForeignTableStmt(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_ImportForeignSchemaStmt: _fingerprintString(ctx, "ImportForeignSchemaStmt"); _fingerprintImportForeignSchemaStmt(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_CreateAmStmt: _fingerprintString(ctx, "CreateAmStmt"); _fingerprintCreateAmStmt(ctx, obj, parent, field_name, depth); break; case T_CreateTrigStmt: _fingerprintString(ctx, "CreateTrigStmt"); _fingerprintCreateTrigStmt(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_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_AlterRoleSetStmt: _fingerprintString(ctx, "AlterRoleSetStmt"); _fingerprintAlterRoleSetStmt(ctx, obj, parent, field_name, depth); break; case T_DropRoleStmt: _fingerprintString(ctx, "DropRoleStmt"); _fingerprintDropRoleStmt(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_DefineStmt: _fingerprintString(ctx, "DefineStmt"); _fingerprintDefineStmt(ctx, obj, parent, field_name, depth); break; case T_CreateDomainStmt: _fingerprintString(ctx, "CreateDomainStmt"); _fingerprintCreateDomainStmt(ctx, obj, parent, field_name, depth); break; case T_CreateOpClassStmt: _fingerprintString(ctx, "CreateOpClassStmt"); _fingerprintCreateOpClassStmt(ctx, obj, parent, field_name, depth); break; case T_CreateOpClassItem: _fingerprintString(ctx, "CreateOpClassItem"); _fingerprintCreateOpClassItem(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_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_SecLabelStmt: _fingerprintString(ctx, "SecLabelStmt"); _fingerprintSecLabelStmt(ctx, obj, parent, field_name, depth); break; case T_DeclareCursorStmt: _fingerprintString(ctx, "DeclareCursorStmt"); _fingerprintDeclareCursorStmt(ctx, obj, parent, field_name, depth); break; case T_ClosePortalStmt: _fingerprintString(ctx, "ClosePortalStmt"); _fingerprintClosePortalStmt(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_CreateStatsStmt: _fingerprintString(ctx, "CreateStatsStmt"); _fingerprintCreateStatsStmt(ctx, obj, parent, field_name, depth); break; case T_StatsElem: _fingerprintString(ctx, "StatsElem"); _fingerprintStatsElem(ctx, obj, parent, field_name, depth); break; case T_AlterStatsStmt: _fingerprintString(ctx, "AlterStatsStmt"); _fingerprintAlterStatsStmt(ctx, obj, parent, field_name, depth); break; case T_CreateFunctionStmt: _fingerprintString(ctx, "CreateFunctionStmt"); _fingerprintCreateFunctionStmt(ctx, obj, parent, field_name, depth); break; case T_FunctionParameter: _fingerprintString(ctx, "FunctionParameter"); _fingerprintFunctionParameter(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_InlineCodeBlock: _fingerprintString(ctx, "InlineCodeBlock"); _fingerprintInlineCodeBlock(ctx, obj, parent, field_name, depth); break; case T_CallStmt: _fingerprintString(ctx, "CallStmt"); _fingerprintCallStmt(ctx, obj, parent, field_name, depth); break; case T_CallContext: _fingerprintString(ctx, "CallContext"); _fingerprintCallContext(ctx, obj, parent, field_name, depth); break; case T_RenameStmt: _fingerprintString(ctx, "RenameStmt"); _fingerprintRenameStmt(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_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_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_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_CreatedbStmt: _fingerprintString(ctx, "CreatedbStmt"); _fingerprintCreatedbStmt(ctx, obj, parent, field_name, depth); break; case T_AlterDatabaseStmt: _fingerprintString(ctx, "AlterDatabaseStmt"); _fingerprintAlterDatabaseStmt(ctx, obj, parent, field_name, depth); break; case T_AlterDatabaseRefreshCollStmt: _fingerprintString(ctx, "AlterDatabaseRefreshCollStmt"); _fingerprintAlterDatabaseRefreshCollStmt(ctx, obj, parent, field_name, depth); break; case T_AlterDatabaseSetStmt: _fingerprintString(ctx, "AlterDatabaseSetStmt"); _fingerprintAlterDatabaseSetStmt(ctx, obj, parent, field_name, depth); break; case T_DropdbStmt: _fingerprintString(ctx, "DropdbStmt"); _fingerprintDropdbStmt(ctx, obj, parent, field_name, depth); break; case T_AlterSystemStmt: _fingerprintString(ctx, "AlterSystemStmt"); _fingerprintAlterSystemStmt(ctx, obj, parent, field_name, depth); break; case T_ClusterStmt: _fingerprintString(ctx, "ClusterStmt"); _fingerprintClusterStmt(ctx, obj, parent, field_name, depth); break; case T_VacuumStmt: _fingerprintString(ctx, "VacuumStmt"); _fingerprintVacuumStmt(ctx, obj, parent, field_name, depth); break; case T_VacuumRelation: _fingerprintString(ctx, "VacuumRelation"); _fingerprintVacuumRelation(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_RefreshMatViewStmt: _fingerprintString(ctx, "RefreshMatViewStmt"); _fingerprintRefreshMatViewStmt(ctx, obj, parent, field_name, depth); break; case T_CheckPointStmt: _fingerprintString(ctx, "CheckPointStmt"); _fingerprintCheckPointStmt(ctx, obj, parent, field_name, depth); break; case T_DiscardStmt: _fingerprintString(ctx, "DiscardStmt"); _fingerprintDiscardStmt(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_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_CreateTransformStmt: _fingerprintString(ctx, "CreateTransformStmt"); _fingerprintCreateTransformStmt(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_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_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_PublicationTable: _fingerprintString(ctx, "PublicationTable"); _fingerprintPublicationTable(ctx, obj, parent, field_name, depth); break; case T_PublicationObjSpec: _fingerprintString(ctx, "PublicationObjSpec"); _fingerprintPublicationObjSpec(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; libpg_query-17-6.1.0/src/include/pg_query_fingerprint_defs.c000066400000000000000000017542401477334012600241320ustar00rootroot00000000000000static 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 _fingerprintIntoClause(FingerprintContext *ctx, const IntoClause *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 _fingerprintWindowFuncRunCondition(FingerprintContext *ctx, const WindowFuncRunCondition *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintMergeSupportFunc(FingerprintContext *ctx, const MergeSupportFunc *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 _fingerprintJsonFormat(FingerprintContext *ctx, const JsonFormat *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonReturning(FingerprintContext *ctx, const JsonReturning *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonValueExpr(FingerprintContext *ctx, const JsonValueExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonConstructorExpr(FingerprintContext *ctx, const JsonConstructorExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonIsPredicate(FingerprintContext *ctx, const JsonIsPredicate *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonBehavior(FingerprintContext *ctx, const JsonBehavior *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonExpr(FingerprintContext *ctx, const JsonExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonTablePath(FingerprintContext *ctx, const JsonTablePath *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonTablePathScan(FingerprintContext *ctx, const JsonTablePathScan *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonTableSiblingJoin(FingerprintContext *ctx, const JsonTableSiblingJoin *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 _fingerprintMergeAction(FingerprintContext *ctx, const MergeAction *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 _fingerprintQuery(FingerprintContext *ctx, const Query *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 _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_Expr(FingerprintContext *ctx, const A_Expr *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 _fingerprintRoleSpec(FingerprintContext *ctx, const RoleSpec *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 _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 _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 _fingerprintRangeTableSample(FingerprintContext *ctx, const RangeTableSample *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 _fingerprintTableLikeClause(FingerprintContext *ctx, const TableLikeClause *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 _fingerprintDefElem(FingerprintContext *ctx, const DefElem *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 _fingerprintXmlSerialize(FingerprintContext *ctx, const XmlSerialize *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 _fingerprintSinglePartitionSpec(FingerprintContext *ctx, const SinglePartitionSpec *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 _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRTEPermissionInfo(FingerprintContext *ctx, const RTEPermissionInfo *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 _fingerprintRowMarkClause(FingerprintContext *ctx, const RowMarkClause *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 _fingerprintCTESearchClause(FingerprintContext *ctx, const CTESearchClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCTECycleClause(FingerprintContext *ctx, const CTECycleClause *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 _fingerprintMergeWhenClause(FingerprintContext *ctx, const MergeWhenClause *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 _fingerprintJsonOutput(FingerprintContext *ctx, const JsonOutput *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonArgument(FingerprintContext *ctx, const JsonArgument *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonFuncExpr(FingerprintContext *ctx, const JsonFuncExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonTablePathSpec(FingerprintContext *ctx, const JsonTablePathSpec *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonTable(FingerprintContext *ctx, const JsonTable *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonTableColumn(FingerprintContext *ctx, const JsonTableColumn *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonKeyValue(FingerprintContext *ctx, const JsonKeyValue *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonParseExpr(FingerprintContext *ctx, const JsonParseExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonScalarExpr(FingerprintContext *ctx, const JsonScalarExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonSerializeExpr(FingerprintContext *ctx, const JsonSerializeExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonObjectConstructor(FingerprintContext *ctx, const JsonObjectConstructor *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonArrayConstructor(FingerprintContext *ctx, const JsonArrayConstructor *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonArrayQueryConstructor(FingerprintContext *ctx, const JsonArrayQueryConstructor *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonAggConstructor(FingerprintContext *ctx, const JsonAggConstructor *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonObjectAgg(FingerprintContext *ctx, const JsonObjectAgg *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJsonArrayAgg(FingerprintContext *ctx, const JsonArrayAgg *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 _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 _fingerprintMergeStmt(FingerprintContext *ctx, const MergeStmt *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 _fingerprintSetOperationStmt(FingerprintContext *ctx, const SetOperationStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintReturnStmt(FingerprintContext *ctx, const ReturnStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPLAssignStmt(FingerprintContext *ctx, const PLAssignStmt *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 _fingerprintAlterTableStmt(FingerprintContext *ctx, const AlterTableStmt *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 _fingerprintAlterTableCmd(FingerprintContext *ctx, const AlterTableCmd *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 _fingerprintAlterDomainStmt(FingerprintContext *ctx, const AlterDomainStmt *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 _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 _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 _fingerprintCopyStmt(FingerprintContext *ctx, const CopyStmt *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 _fingerprintCreateStmt(FingerprintContext *ctx, const CreateStmt *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 _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 _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 _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 _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 _fingerprintCreateForeignTableStmt(FingerprintContext *ctx, const CreateForeignTableStmt *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 _fingerprintImportForeignSchemaStmt(FingerprintContext *ctx, const ImportForeignSchemaStmt *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 _fingerprintCreateAmStmt(FingerprintContext *ctx, const CreateAmStmt *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 _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 _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 _fingerprintAlterRoleSetStmt(FingerprintContext *ctx, const AlterRoleSetStmt *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 _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 _fingerprintDefineStmt(FingerprintContext *ctx, const DefineStmt *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 _fingerprintCreateOpClassStmt(FingerprintContext *ctx, const CreateOpClassStmt *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 _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 _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 _fingerprintSecLabelStmt(FingerprintContext *ctx, const SecLabelStmt *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 _fingerprintClosePortalStmt(FingerprintContext *ctx, const ClosePortalStmt *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 _fingerprintCreateStatsStmt(FingerprintContext *ctx, const CreateStatsStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintStatsElem(FingerprintContext *ctx, const StatsElem *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 _fingerprintCreateFunctionStmt(FingerprintContext *ctx, const CreateFunctionStmt *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 _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 _fingerprintInlineCodeBlock(FingerprintContext *ctx, const InlineCodeBlock *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 _fingerprintCallContext(FingerprintContext *ctx, const CallContext *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 _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 _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 _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 _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 _fingerprintCreatedbStmt(FingerprintContext *ctx, const CreatedbStmt *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 _fingerprintAlterDatabaseRefreshCollStmt(FingerprintContext *ctx, const AlterDatabaseRefreshCollStmt *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 _fingerprintDropdbStmt(FingerprintContext *ctx, const DropdbStmt *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 _fingerprintClusterStmt(FingerprintContext *ctx, const ClusterStmt *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 _fingerprintVacuumRelation(FingerprintContext *ctx, const VacuumRelation *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 _fingerprintRefreshMatViewStmt(FingerprintContext *ctx, const RefreshMatViewStmt *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 _fingerprintDiscardStmt(FingerprintContext *ctx, const DiscardStmt *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 _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 _fingerprintCreateTransformStmt(FingerprintContext *ctx, const CreateTransformStmt *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 _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 _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 _fingerprintPublicationTable(FingerprintContext *ctx, const PublicationTable *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPublicationObjSpec(FingerprintContext *ctx, const PublicationObjSpec *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 _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) && !(list_length(node->colcollations) == 1 && linitial(node->colcollations) == NIL)) { 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) && !(list_length(node->coldefexprs) == 1 && linitial(node->coldefexprs) == NIL)) { 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) && !(list_length(node->colexprs) == 1 && linitial(node->colexprs) == NIL)) { 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) && !(list_length(node->colnames) == 1 && linitial(node->colnames) == NIL)) { 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) && !(list_length(node->coltypes) == 1 && linitial(node->coltypes) == NIL)) { 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) && !(list_length(node->coltypmods) == 1 && linitial(node->coltypmods) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->colvalexprs != NULL && node->colvalexprs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "colvalexprs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->colvalexprs, node, "colvalexprs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->colvalexprs) == 1 && linitial(node->colvalexprs) == NIL)) { 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 (true) { _fingerprintString(ctx, "functype"); _fingerprintString(ctx, _enumToStringTableFuncType(node->functype)); } // Intentionally ignoring node->location for fingerprinting if (true) { int x = -1; Bitmapset *bms = bms_copy(node->notnulls); _fingerprintString(ctx, "notnulls"); while ((x = bms_next_member(bms, x)) >= 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) && !(list_length(node->ns_names) == 1 && linitial(node->ns_names) == NIL)) { 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) && !(list_length(node->ns_uris) == 1 && linitial(node->ns_uris) == NIL)) { 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->passingvalexprs != NULL && node->passingvalexprs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "passingvalexprs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->passingvalexprs, node, "passingvalexprs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->passingvalexprs) == 1 && linitial(node->passingvalexprs) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->plan != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "plan"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->plan, node, "plan", depth + 1); if (hash == XXH3_64bits_digest(ctx->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 _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) && !(list_length(node->colNames) == 1 && linitial(node->colNames) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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 _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->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 (true) { int x = -1; Bitmapset *bms = bms_copy(node->varnullingrels); _fingerprintString(ctx, "varnullingrels"); while ((x = bms_next_member(bms, x)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } 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) && !(list_length(node->aggargtypes) == 1 && linitial(node->aggargtypes) == NIL)) { 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) && !(list_length(node->aggdirectargs) == 1 && linitial(node->aggdirectargs) == NIL)) { 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) && !(list_length(node->aggdistinct) == 1 && linitial(node->aggdistinct) == NIL)) { 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->aggno != 0) { char buffer[50]; sprintf(buffer, "%d", node->aggno); _fingerprintString(ctx, "aggno"); _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) && !(list_length(node->aggorder) == 1 && linitial(node->aggorder) == NIL)) { 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->aggtransno != 0) { char buffer[50]; sprintf(buffer, "%d", node->aggtransno); _fingerprintString(ctx, "aggtransno"); _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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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) && !(list_length(node->refs) == 1 && linitial(node->refs) == NIL)) { 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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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->runCondition != NULL && node->runCondition->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "runCondition"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->runCondition, node, "runCondition", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->runCondition) == 1 && linitial(node->runCondition) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } 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 _fingerprintWindowFuncRunCondition(FingerprintContext *ctx, const WindowFuncRunCondition *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->inputcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->inputcollid); _fingerprintString(ctx, "inputcollid"); _fingerprintString(ctx, buffer); } if (node->opno != 0) { char buffer[50]; sprintf(buffer, "%d", node->opno); _fingerprintString(ctx, "opno"); _fingerprintString(ctx, buffer); } if (node->wfunc_left) { _fingerprintString(ctx, "wfunc_left"); _fingerprintString(ctx, "true"); } } static void _fingerprintMergeSupportFunc(FingerprintContext *ctx, const MergeSupportFunc *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->msfcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->msfcollid); _fingerprintString(ctx, "msfcollid"); _fingerprintString(ctx, buffer); } if (node->msftype != 0) { char buffer[50]; sprintf(buffer, "%d", node->msftype); _fingerprintString(ctx, "msftype"); _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) && !(list_length(node->reflowerindexpr) == 1 && linitial(node->reflowerindexpr) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->refrestype != 0) { char buffer[50]; sprintf(buffer, "%d", node->refrestype); _fingerprintString(ctx, "refrestype"); _fingerprintString(ctx, buffer); } 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) && !(list_length(node->refupperindexpr) == 1 && linitial(node->refupperindexpr) == NIL)) { 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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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->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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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->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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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) && !(list_length(node->operName) == 1 && linitial(node->operName) == NIL)) { 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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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) && !(list_length(node->parParam) == 1 && linitial(node->parParam) == NIL)) { 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) && !(list_length(node->paramIds) == 1 && linitial(node->paramIds) == NIL)) { 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) && !(list_length(node->setParam) == 1 && linitial(node->setParam) == NIL)) { 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) && !(list_length(node->subplans) == 1 && linitial(node->subplans) == NIL)) { 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) && !(list_length(node->fieldnums) == 1 && linitial(node->fieldnums) == NIL)) { 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) && !(list_length(node->newvals) == 1 && linitial(node->newvals) == NIL)) { 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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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) && !(list_length(node->elements) == 1 && linitial(node->elements) == NIL)) { 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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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) && !(list_length(node->colnames) == 1 && linitial(node->colnames) == NIL)) { 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) && !(list_length(node->inputcollids) == 1 && linitial(node->inputcollids) == NIL)) { 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) && !(list_length(node->largs) == 1 && linitial(node->largs) == NIL)) { 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) && !(list_length(node->opfamilies) == 1 && linitial(node->opfamilies) == NIL)) { 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) && !(list_length(node->opnos) == 1 && linitial(node->opnos) == NIL)) { 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) && !(list_length(node->rargs) == 1 && linitial(node->rargs) == NIL)) { 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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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) && !(list_length(node->arg_names) == 1 && linitial(node->arg_names) == NIL)) { 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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->indent) { _fingerprintString(ctx, "indent"); _fingerprintString(ctx, "true"); } // 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) && !(list_length(node->named_args) == 1 && linitial(node->named_args) == NIL)) { 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 _fingerprintJsonFormat(FingerprintContext *ctx, const JsonFormat *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "encoding"); _fingerprintString(ctx, _enumToStringJsonEncoding(node->encoding)); } if (true) { _fingerprintString(ctx, "format_type"); _fingerprintString(ctx, _enumToStringJsonFormatType(node->format_type)); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintJsonReturning(FingerprintContext *ctx, const JsonReturning *node, const void *parent, const char *field_name, unsigned int depth) { if (node->format != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "format"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonFormat(ctx, node->format, node, "format", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->typid != 0) { char buffer[50]; sprintf(buffer, "%d", node->typid); _fingerprintString(ctx, "typid"); _fingerprintString(ctx, buffer); } if (node->typmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->typmod); _fingerprintString(ctx, "typmod"); _fingerprintString(ctx, buffer); } } static void _fingerprintJsonValueExpr(FingerprintContext *ctx, const JsonValueExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->format != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "format"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonFormat(ctx, node->format, node, "format", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->formatted_expr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "formatted_expr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->formatted_expr, node, "formatted_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->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); } } static void _fingerprintJsonConstructorExpr(FingerprintContext *ctx, const JsonConstructorExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->absent_on_null) { _fingerprintString(ctx, "absent_on_null"); _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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->coercion != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "coercion"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->coercion, node, "coercion", depth + 1); if (hash == XXH3_64bits_digest(ctx->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); _fingerprintNode(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); } // Intentionally ignoring node->location for fingerprinting if (node->returning != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "returning"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonReturning(ctx, node->returning, node, "returning", depth + 1); if (hash == XXH3_64bits_digest(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, "type"); _fingerprintString(ctx, _enumToStringJsonConstructorType(node->type)); } if (node->unique) { _fingerprintString(ctx, "unique"); _fingerprintString(ctx, "true"); } } static void _fingerprintJsonIsPredicate(FingerprintContext *ctx, const JsonIsPredicate *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->format != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "format"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonFormat(ctx, node->format, node, "format", depth + 1); if (hash == XXH3_64bits_digest(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, "item_type"); _fingerprintString(ctx, _enumToStringJsonValueType(node->item_type)); } // Intentionally ignoring node->location for fingerprinting if (node->unique_keys) { _fingerprintString(ctx, "unique_keys"); _fingerprintString(ctx, "true"); } } static void _fingerprintJsonBehavior(FingerprintContext *ctx, const JsonBehavior *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "btype"); _fingerprintString(ctx, _enumToStringJsonBehaviorType(node->btype)); } if (node->coerce) { _fingerprintString(ctx, "coerce"); _fingerprintString(ctx, "true"); } 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 } static void _fingerprintJsonExpr(FingerprintContext *ctx, const JsonExpr *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->column_name != NULL) { _fingerprintString(ctx, "column_name"); _fingerprintString(ctx, node->column_name); } if (node->format != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "format"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonFormat(ctx, node->format, node, "format", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->formatted_expr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "formatted_expr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->formatted_expr, node, "formatted_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->omit_quotes) { _fingerprintString(ctx, "omit_quotes"); _fingerprintString(ctx, "true"); } if (node->on_empty != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "on_empty"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonBehavior(ctx, node->on_empty, node, "on_empty", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->on_error != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "on_error"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonBehavior(ctx, node->on_error, node, "on_error", depth + 1); if (hash == XXH3_64bits_digest(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, _enumToStringJsonExprOp(node->op)); } if (node->passing_names != NULL && node->passing_names->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "passing_names"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->passing_names, node, "passing_names", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->passing_names) == 1 && linitial(node->passing_names) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->passing_values != NULL && node->passing_values->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "passing_values"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->passing_values, node, "passing_values", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->passing_values) == 1 && linitial(node->passing_values) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->path_spec != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "path_spec"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->path_spec, node, "path_spec", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->returning != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "returning"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonReturning(ctx, node->returning, node, "returning", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->use_io_coercion) { _fingerprintString(ctx, "use_io_coercion"); _fingerprintString(ctx, "true"); } if (node->use_json_coercion) { _fingerprintString(ctx, "use_json_coercion"); _fingerprintString(ctx, "true"); } if (true) { _fingerprintString(ctx, "wrapper"); _fingerprintString(ctx, _enumToStringJsonWrapper(node->wrapper)); } } static void _fingerprintJsonTablePath(FingerprintContext *ctx, const JsonTablePath *node, const void *parent, const char *field_name, unsigned int depth) { if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } // Intentionally ignoring node->value for fingerprinting } static void _fingerprintJsonTablePathScan(FingerprintContext *ctx, const JsonTablePathScan *node, const void *parent, const char *field_name, unsigned int depth) { if (node->child != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "child"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, (Node*)node->child, node, "child", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->colMax != 0) { char buffer[50]; sprintf(buffer, "%d", node->colMax); _fingerprintString(ctx, "colMax"); _fingerprintString(ctx, buffer); } if (node->colMin != 0) { char buffer[50]; sprintf(buffer, "%d", node->colMin); _fingerprintString(ctx, "colMin"); _fingerprintString(ctx, buffer); } if (node->errorOnError) { _fingerprintString(ctx, "errorOnError"); _fingerprintString(ctx, "true"); } if (node->path != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "path"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonTablePath(ctx, node->path, node, "path", depth + 1); if (hash == XXH3_64bits_digest(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) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "plan"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, (Node*)&node->plan, node, "plan", depth + 1); if (hash == XXH3_64bits_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 _fingerprintJsonTableSiblingJoin(FingerprintContext *ctx, const JsonTableSiblingJoin *node, const void *parent, const char *field_name, unsigned int depth) { if (node->lplan != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "lplan"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, (Node*)node->lplan, node, "lplan", depth + 1); if (hash == XXH3_64bits_digest(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) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "plan"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, (Node*)&node->plan, node, "plan", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->rplan != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "rplan"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, (Node*)node->rplan, node, "rplan", depth + 1); if (hash == XXH3_64bits_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 _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 _fingerprintMergeAction(FingerprintContext *ctx, const MergeAction *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "commandType"); _fingerprintString(ctx, _enumToStringCmdType(node->commandType)); } if (true) { _fingerprintString(ctx, "matchKind"); _fingerprintString(ctx, _enumToStringMergeMatchKind(node->matchKind)); } if (true) { _fingerprintString(ctx, "override"); _fingerprintString(ctx, _enumToStringOverridingKind(node->override)); } 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->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) && !(list_length(node->targetList) == 1 && linitial(node->targetList) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->updateColnos != NULL && node->updateColnos->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "updateColnos"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->updateColnos, node, "updateColnos", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->updateColnos) == 1 && linitial(node->updateColnos) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } 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 (node->join_using_alias != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "join_using_alias"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintAlias(ctx, node->join_using_alias, node, "join_using_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 (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) && !(list_length(node->usingClause) == 1 && linitial(node->usingClause) == NIL)) { 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) && !(list_length(node->fromlist) == 1 && linitial(node->fromlist) == NIL)) { 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) && !(list_length(node->arbiterElems) == 1 && linitial(node->arbiterElems) == NIL)) { 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) && !(list_length(node->exclRelTlist) == 1 && linitial(node->exclRelTlist) == NIL)) { 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) && !(list_length(node->onConflictSet) == 1 && linitial(node->onConflictSet) == NIL)) { 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 _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) && !(list_length(node->constraintDeps) == 1 && linitial(node->constraintDeps) == NIL)) { 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) && !(list_length(node->cteList) == 1 && linitial(node->cteList) == NIL)) { 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) && !(list_length(node->distinctClause) == 1 && linitial(node->distinctClause) == NIL)) { 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) && !(list_length(node->groupClause) == 1 && linitial(node->groupClause) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->groupDistinct) { _fingerprintString(ctx, "groupDistinct"); _fingerprintString(ctx, "true"); } 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) && !(list_length(node->groupingSets) == 1 && linitial(node->groupingSets) == NIL)) { 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->isReturn) { _fingerprintString(ctx, "isReturn"); _fingerprintString(ctx, "true"); } 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->mergeActionList != NULL && node->mergeActionList->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "mergeActionList"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->mergeActionList, node, "mergeActionList", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->mergeActionList) == 1 && linitial(node->mergeActionList) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->mergeJoinCondition != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "mergeJoinCondition"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->mergeJoinCondition, node, "mergeJoinCondition", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->mergeTargetRelation != 0) { char buffer[50]; sprintf(buffer, "%d", node->mergeTargetRelation); _fingerprintString(ctx, "mergeTargetRelation"); _fingerprintString(ctx, buffer); } 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 (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) && !(list_length(node->returningList) == 1 && linitial(node->returningList) == NIL)) { 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) && !(list_length(node->rowMarks) == 1 && linitial(node->rowMarks) == NIL)) { 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) && !(list_length(node->rtable) == 1 && linitial(node->rtable) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->rteperminfos != NULL && node->rteperminfos->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "rteperminfos"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->rteperminfos, node, "rteperminfos", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->rteperminfos) == 1 && linitial(node->rteperminfos) == NIL)) { 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) && !(list_length(node->sortClause) == 1 && linitial(node->sortClause) == NIL)) { 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) && !(list_length(node->targetList) == 1 && linitial(node->targetList) == NIL)) { 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) && !(list_length(node->windowClause) == 1 && linitial(node->windowClause) == NIL)) { 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) && !(list_length(node->withCheckOptions) == 1 && linitial(node->withCheckOptions) == NIL)) { 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) && !(list_length(node->arrayBounds) == 1 && linitial(node->arrayBounds) == NIL)) { 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) && !(list_length(node->names) == 1 && linitial(node->names) == NIL)) { 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) && !(list_length(node->typmods) == 1 && linitial(node->typmods) == NIL)) { 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) && !(list_length(node->fields) == 1 && linitial(node->fields) == NIL)) { 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_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) && !(list_length(node->name) == 1 && linitial(node->name) == NIL)) { 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 _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) && !(list_length(node->collname) == 1 && linitial(node->collname) == NIL)) { 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 _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 _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) && !(list_length(node->agg_order) == 1 && linitial(node->agg_order) == NIL)) { 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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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 (true) { _fingerprintString(ctx, "funcformat"); _fingerprintString(ctx, _enumToStringCoercionForm(node->funcformat)); } 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) && !(list_length(node->funcname) == 1 && linitial(node->funcname) == NIL)) { 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) && !(list_length(node->indirection) == 1 && linitial(node->indirection) == NIL)) { 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) && !(list_length(node->elements) == 1 && linitial(node->elements) == NIL)) { 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) && !(list_length(node->indirection) == 1 && linitial(node->indirection) == NIL)) { 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 _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) && !(list_length(node->useOp) == 1 && linitial(node->useOp) == NIL)) { 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) && !(list_length(node->orderClause) == 1 && linitial(node->orderClause) == NIL)) { 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) && !(list_length(node->partitionClause) == 1 && linitial(node->partitionClause) == NIL)) { 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) && !(list_length(node->coldeflist) == 1 && linitial(node->coldeflist) == NIL)) { 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) && !(list_length(node->functions) == 1 && linitial(node->functions) == NIL)) { 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 _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) && !(list_length(node->columns) == 1 && linitial(node->columns) == NIL)) { 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) && !(list_length(node->namespaces) == 1 && linitial(node->namespaces) == NIL)) { 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 _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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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) && !(list_length(node->method) == 1 && linitial(node->method) == NIL)) { 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 _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->compression != NULL) { _fingerprintString(ctx, "compression"); _fingerprintString(ctx, node->compression); } 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) && !(list_length(node->constraints) == 1 && linitial(node->constraints) == NIL)) { 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) && !(list_length(node->fdwoptions) == 1 && linitial(node->fdwoptions) == NIL)) { 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->storage_name != NULL) { _fingerprintString(ctx, "storage_name"); _fingerprintString(ctx, node->storage_name); } 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 _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); } if (node->relationOid != 0) { char buffer[50]; sprintf(buffer, "%d", node->relationOid); _fingerprintString(ctx, "relationOid"); _fingerprintString(ctx, buffer); } } 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) && !(list_length(node->collation) == 1 && linitial(node->collation) == NIL)) { 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) && !(list_length(node->opclass) == 1 && linitial(node->opclass) == NIL)) { 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) && !(list_length(node->opclassopts) == 1 && linitial(node->opclassopts) == NIL)) { 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 _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 _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) && !(list_length(node->lockedRels) == 1 && linitial(node->lockedRels) == NIL)) { 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 _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); } if (node->indent) { _fingerprintString(ctx, "indent"); _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); } if (true) { _fingerprintString(ctx, "xmloption"); _fingerprintString(ctx, _enumToStringXmlOptionType(node->xmloption)); } } 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) && !(list_length(node->collation) == 1 && linitial(node->collation) == NIL)) { 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) && !(list_length(node->opclass) == 1 && linitial(node->opclass) == NIL)) { 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) && !(list_length(node->partParams) == 1 && linitial(node->partParams) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "strategy"); _fingerprintString(ctx, _enumToStringPartitionStrategy(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) && !(list_length(node->listdatums) == 1 && linitial(node->listdatums) == NIL)) { 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) && !(list_length(node->lowerdatums) == 1 && linitial(node->lowerdatums) == NIL)) { 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) && !(list_length(node->upperdatums) == 1 && linitial(node->upperdatums) == NIL)) { 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 _fingerprintSinglePartitionSpec(FingerprintContext *ctx, const SinglePartitionSpec *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) { 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->concurrent) { _fingerprintString(ctx, "concurrent"); _fingerprintString(ctx, "true"); } 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 _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->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) && !(list_length(node->colcollations) == 1 && linitial(node->colcollations) == NIL)) { 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) && !(list_length(node->coltypes) == 1 && linitial(node->coltypes) == NIL)) { 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) && !(list_length(node->coltypmods) == 1 && linitial(node->coltypmods) == NIL)) { 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 (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) && !(list_length(node->functions) == 1 && linitial(node->functions) == NIL)) { 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 (node->join_using_alias != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "join_using_alias"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintAlias(ctx, node->join_using_alias, node, "join_using_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->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) && !(list_length(node->joinaliasvars) == 1 && linitial(node->joinaliasvars) == NIL)) { 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) && !(list_length(node->joinleftcols) == 1 && linitial(node->joinleftcols) == NIL)) { 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) && !(list_length(node->joinrightcols) == 1 && linitial(node->joinrightcols) == NIL)) { 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->perminfoindex != 0) { char buffer[50]; sprintf(buffer, "%d", node->perminfoindex); _fingerprintString(ctx, "perminfoindex"); _fingerprintString(ctx, buffer); } 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 (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) && !(list_length(node->securityQuals) == 1 && linitial(node->securityQuals) == NIL)) { 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 (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 (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) && !(list_length(node->values_lists) == 1 && linitial(node->values_lists) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintRTEPermissionInfo(FingerprintContext *ctx, const RTEPermissionInfo *node, const void *parent, const char *field_name, unsigned int depth) { if (node->checkAsUser != 0) { char buffer[50]; sprintf(buffer, "%d", node->checkAsUser); _fingerprintString(ctx, "checkAsUser"); _fingerprintString(ctx, buffer); } if (node->inh) { _fingerprintString(ctx, "inh"); _fingerprintString(ctx, "true"); } if (true) { int x = -1; Bitmapset *bms = bms_copy(node->insertedCols); _fingerprintString(ctx, "insertedCols"); while ((x = bms_next_member(bms, x)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } if (node->relid != 0) { char buffer[50]; sprintf(buffer, "%d", node->relid); _fingerprintString(ctx, "relid"); _fingerprintString(ctx, buffer); } if (node->requiredPerms != 0) { char buffer[50]; sprintf(buffer, UINT64_FORMAT, node->requiredPerms); _fingerprintString(ctx, "requiredPerms"); _fingerprintString(ctx, buffer); } if (true) { int x = -1; Bitmapset *bms = bms_copy(node->selectedCols); _fingerprintString(ctx, "selectedCols"); while ((x = bms_next_member(bms, x)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } if (true) { int x = -1; Bitmapset *bms = bms_copy(node->updatedCols); _fingerprintString(ctx, "updatedCols"); while ((x = bms_next_member(bms, x)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } } 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) && !(list_length(node->funccolcollations) == 1 && linitial(node->funccolcollations) == NIL)) { 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) && !(list_length(node->funccolnames) == 1 && linitial(node->funccolnames) == NIL)) { 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) && !(list_length(node->funccoltypes) == 1 && linitial(node->funccoltypes) == NIL)) { 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) && !(list_length(node->funccoltypmods) == 1 && linitial(node->funccoltypmods) == NIL)) { 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 = -1; Bitmapset *bms = bms_copy(node->funcparams); _fingerprintString(ctx, "funcparams"); while ((x = bms_next_member(bms, x)) >= 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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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) && !(list_length(node->content) == 1 && linitial(node->content) == NIL)) { 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) && !(list_length(node->orderClause) == 1 && linitial(node->orderClause) == NIL)) { 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) && !(list_length(node->partitionClause) == 1 && linitial(node->partitionClause) == NIL)) { 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 _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 _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) && !(list_length(node->ctes) == 1 && linitial(node->ctes) == NIL)) { 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) && !(list_length(node->indexElems) == 1 && linitial(node->indexElems) == NIL)) { 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) && !(list_length(node->targetList) == 1 && linitial(node->targetList) == NIL)) { 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 _fingerprintCTESearchClause(FingerprintContext *ctx, const CTESearchClause *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->search_breadth_first) { _fingerprintString(ctx, "search_breadth_first"); _fingerprintString(ctx, "true"); } if (node->search_col_list != NULL && node->search_col_list->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "search_col_list"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->search_col_list, node, "search_col_list", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->search_col_list) == 1 && linitial(node->search_col_list) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->search_seq_column != NULL) { _fingerprintString(ctx, "search_seq_column"); _fingerprintString(ctx, node->search_seq_column); } } static void _fingerprintCTECycleClause(FingerprintContext *ctx, const CTECycleClause *node, const void *parent, const char *field_name, unsigned int depth) { if (node->cycle_col_list != NULL && node->cycle_col_list->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "cycle_col_list"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->cycle_col_list, node, "cycle_col_list", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->cycle_col_list) == 1 && linitial(node->cycle_col_list) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->cycle_mark_collation != 0) { char buffer[50]; sprintf(buffer, "%d", node->cycle_mark_collation); _fingerprintString(ctx, "cycle_mark_collation"); _fingerprintString(ctx, buffer); } if (node->cycle_mark_column != NULL) { _fingerprintString(ctx, "cycle_mark_column"); _fingerprintString(ctx, node->cycle_mark_column); } if (node->cycle_mark_default != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "cycle_mark_default"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->cycle_mark_default, node, "cycle_mark_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->cycle_mark_neop != 0) { char buffer[50]; sprintf(buffer, "%d", node->cycle_mark_neop); _fingerprintString(ctx, "cycle_mark_neop"); _fingerprintString(ctx, buffer); } if (node->cycle_mark_type != 0) { char buffer[50]; sprintf(buffer, "%d", node->cycle_mark_type); _fingerprintString(ctx, "cycle_mark_type"); _fingerprintString(ctx, buffer); } if (node->cycle_mark_typmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->cycle_mark_typmod); _fingerprintString(ctx, "cycle_mark_typmod"); _fingerprintString(ctx, buffer); } if (node->cycle_mark_value != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "cycle_mark_value"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->cycle_mark_value, node, "cycle_mark_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); } if (node->cycle_path_column != NULL) { _fingerprintString(ctx, "cycle_path_column"); _fingerprintString(ctx, node->cycle_path_column); } // Intentionally ignoring node->location for fingerprinting } 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) && !(list_length(node->aliascolnames) == 1 && linitial(node->aliascolnames) == NIL)) { 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) && !(list_length(node->ctecolcollations) == 1 && linitial(node->ctecolcollations) == NIL)) { 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) && !(list_length(node->ctecolnames) == 1 && linitial(node->ctecolnames) == NIL)) { 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) && !(list_length(node->ctecoltypes) == 1 && linitial(node->ctecoltypes) == NIL)) { 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) && !(list_length(node->ctecoltypmods) == 1 && linitial(node->ctecoltypmods) == NIL)) { 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); } if (node->cycle_clause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "cycle_clause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintCTECycleClause(ctx, node->cycle_clause, node, "cycle_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); } // Intentionally ignoring node->location for fingerprinting if (node->search_clause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "search_clause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintCTESearchClause(ctx, node->search_clause, node, "search_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 _fingerprintMergeWhenClause(FingerprintContext *ctx, const MergeWhenClause *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "commandType"); _fingerprintString(ctx, _enumToStringCmdType(node->commandType)); } if (node->condition != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "condition"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->condition, node, "condition", depth + 1); if (hash == XXH3_64bits_digest(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, "matchKind"); _fingerprintString(ctx, _enumToStringMergeMatchKind(node->matchKind)); } if (true) { _fingerprintString(ctx, "override"); _fingerprintString(ctx, _enumToStringOverridingKind(node->override)); } 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) && !(list_length(node->targetList) == 1 && linitial(node->targetList) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->values != NULL && node->values->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "values"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->values, node, "values", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->values) == 1 && linitial(node->values) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } 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 _fingerprintJsonOutput(FingerprintContext *ctx, const JsonOutput *node, const void *parent, const char *field_name, unsigned int depth) { if (node->returning != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "returning"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonReturning(ctx, node->returning, node, "returning", depth + 1); if (hash == XXH3_64bits_digest(ctx->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 _fingerprintJsonArgument(FingerprintContext *ctx, const JsonArgument *node, const void *parent, const char *field_name, unsigned int depth) { if (node->name != NULL) { _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); _fingerprintJsonValueExpr(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 _fingerprintJsonFuncExpr(FingerprintContext *ctx, const JsonFuncExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->column_name != NULL) { _fingerprintString(ctx, "column_name"); _fingerprintString(ctx, node->column_name); } if (node->context_item != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "context_item"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonValueExpr(ctx, node->context_item, node, "context_item", depth + 1); if (hash == XXH3_64bits_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->on_empty != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "on_empty"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonBehavior(ctx, node->on_empty, node, "on_empty", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->on_error != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "on_error"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonBehavior(ctx, node->on_error, node, "on_error", depth + 1); if (hash == XXH3_64bits_digest(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, _enumToStringJsonExprOp(node->op)); } if (node->output != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "output"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonOutput(ctx, node->output, node, "output", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->passing != NULL && node->passing->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "passing"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->passing, node, "passing", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->passing) == 1 && linitial(node->passing) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->pathspec != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "pathspec"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->pathspec, node, "pathspec", depth + 1); if (hash == XXH3_64bits_digest(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, "quotes"); _fingerprintString(ctx, _enumToStringJsonQuotes(node->quotes)); } if (true) { _fingerprintString(ctx, "wrapper"); _fingerprintString(ctx, _enumToStringJsonWrapper(node->wrapper)); } } static void _fingerprintJsonTablePathSpec(FingerprintContext *ctx, const JsonTablePathSpec *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } // Intentionally ignoring node->name_location for fingerprinting if (node->string != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "string"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->string, node, "string", depth + 1); if (hash == XXH3_64bits_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 _fingerprintJsonTable(FingerprintContext *ctx, const JsonTable *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) && !(list_length(node->columns) == 1 && linitial(node->columns) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->context_item != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "context_item"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonValueExpr(ctx, node->context_item, node, "context_item", depth + 1); if (hash == XXH3_64bits_digest(ctx->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->on_error != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "on_error"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonBehavior(ctx, node->on_error, node, "on_error", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->passing != NULL && node->passing->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "passing"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->passing, node, "passing", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->passing) == 1 && linitial(node->passing) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->pathspec != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "pathspec"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonTablePathSpec(ctx, node->pathspec, node, "pathspec", depth + 1); if (hash == XXH3_64bits_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 _fingerprintJsonTableColumn(FingerprintContext *ctx, const JsonTableColumn *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "coltype"); _fingerprintString(ctx, _enumToStringJsonTableColumnType(node->coltype)); } 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) && !(list_length(node->columns) == 1 && linitial(node->columns) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->format != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "format"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonFormat(ctx, node->format, node, "format", depth + 1); if (hash == XXH3_64bits_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->on_empty != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "on_empty"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonBehavior(ctx, node->on_empty, node, "on_empty", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->on_error != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "on_error"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonBehavior(ctx, node->on_error, node, "on_error", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->pathspec != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "pathspec"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonTablePathSpec(ctx, node->pathspec, node, "pathspec", depth + 1); if (hash == XXH3_64bits_digest(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, "quotes"); _fingerprintString(ctx, _enumToStringJsonQuotes(node->quotes)); } 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, "wrapper"); _fingerprintString(ctx, _enumToStringJsonWrapper(node->wrapper)); } } static void _fingerprintJsonKeyValue(FingerprintContext *ctx, const JsonKeyValue *node, const void *parent, const char *field_name, unsigned int depth) { if (node->key != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "key"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->key, node, "key", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } 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); _fingerprintJsonValueExpr(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 _fingerprintJsonParseExpr(FingerprintContext *ctx, const JsonParseExpr *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); _fingerprintJsonValueExpr(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->output != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "output"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonOutput(ctx, node->output, node, "output", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->unique_keys) { _fingerprintString(ctx, "unique_keys"); _fingerprintString(ctx, "true"); } } static void _fingerprintJsonScalarExpr(FingerprintContext *ctx, const JsonScalarExpr *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->output != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "output"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonOutput(ctx, node->output, node, "output", depth + 1); if (hash == XXH3_64bits_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 _fingerprintJsonSerializeExpr(FingerprintContext *ctx, const JsonSerializeExpr *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); _fingerprintJsonValueExpr(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->output != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "output"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonOutput(ctx, node->output, node, "output", depth + 1); if (hash == XXH3_64bits_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 _fingerprintJsonObjectConstructor(FingerprintContext *ctx, const JsonObjectConstructor *node, const void *parent, const char *field_name, unsigned int depth) { if (node->absent_on_null) { _fingerprintString(ctx, "absent_on_null"); _fingerprintString(ctx, "true"); } 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) && !(list_length(node->exprs) == 1 && linitial(node->exprs) == NIL)) { 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->output != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "output"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonOutput(ctx, node->output, node, "output", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->unique) { _fingerprintString(ctx, "unique"); _fingerprintString(ctx, "true"); } } static void _fingerprintJsonArrayConstructor(FingerprintContext *ctx, const JsonArrayConstructor *node, const void *parent, const char *field_name, unsigned int depth) { if (node->absent_on_null) { _fingerprintString(ctx, "absent_on_null"); _fingerprintString(ctx, "true"); } 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) && !(list_length(node->exprs) == 1 && linitial(node->exprs) == NIL)) { 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->output != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "output"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonOutput(ctx, node->output, node, "output", depth + 1); if (hash == XXH3_64bits_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 _fingerprintJsonArrayQueryConstructor(FingerprintContext *ctx, const JsonArrayQueryConstructor *node, const void *parent, const char *field_name, unsigned int depth) { if (node->absent_on_null) { _fingerprintString(ctx, "absent_on_null"); _fingerprintString(ctx, "true"); } if (node->format != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "format"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonFormat(ctx, node->format, node, "format", depth + 1); if (hash == XXH3_64bits_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->output != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "output"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonOutput(ctx, node->output, node, "output", depth + 1); if (hash == XXH3_64bits_digest(ctx->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 _fingerprintJsonAggConstructor(FingerprintContext *ctx, const JsonAggConstructor *node, const void *parent, const char *field_name, unsigned int depth) { 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) && !(list_length(node->agg_order) == 1 && linitial(node->agg_order) == NIL)) { 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->output != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "output"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonOutput(ctx, node->output, node, "output", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } 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 _fingerprintJsonObjectAgg(FingerprintContext *ctx, const JsonObjectAgg *node, const void *parent, const char *field_name, unsigned int depth) { if (node->absent_on_null) { _fingerprintString(ctx, "absent_on_null"); _fingerprintString(ctx, "true"); } 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); _fingerprintJsonKeyValue(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->constructor != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "constructor"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonAggConstructor(ctx, node->constructor, node, "constructor", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->unique) { _fingerprintString(ctx, "unique"); _fingerprintString(ctx, "true"); } } static void _fingerprintJsonArrayAgg(FingerprintContext *ctx, const JsonArrayAgg *node, const void *parent, const char *field_name, unsigned int depth) { if (node->absent_on_null) { _fingerprintString(ctx, "absent_on_null"); _fingerprintString(ctx, "true"); } 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); _fingerprintJsonValueExpr(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->constructor != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "constructor"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintJsonAggConstructor(ctx, node->constructor, node, "constructor", depth + 1); if (hash == XXH3_64bits_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 _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) && !(list_length(node->cols) == 1 && linitial(node->cols) == NIL)) { 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) && !(list_length(node->returningList) == 1 && linitial(node->returningList) == NIL)) { 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) && !(list_length(node->returningList) == 1 && linitial(node->returningList) == NIL)) { 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) && !(list_length(node->usingClause) == 1 && linitial(node->usingClause) == NIL)) { 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) && !(list_length(node->fromClause) == 1 && linitial(node->fromClause) == NIL)) { 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) && !(list_length(node->returningList) == 1 && linitial(node->returningList) == NIL)) { 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) && !(list_length(node->targetList) == 1 && linitial(node->targetList) == NIL)) { 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 _fingerprintMergeStmt(FingerprintContext *ctx, const MergeStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->joinCondition != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "joinCondition"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->joinCondition, node, "joinCondition", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->mergeWhenClauses != NULL && node->mergeWhenClauses->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "mergeWhenClauses"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->mergeWhenClauses, node, "mergeWhenClauses", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->mergeWhenClauses) == 1 && linitial(node->mergeWhenClauses) == NIL)) { 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) && !(list_length(node->returningList) == 1 && linitial(node->returningList) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->sourceRelation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "sourceRelation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->sourceRelation, node, "sourceRelation", depth + 1); if (hash == XXH3_64bits_digest(ctx->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) && !(list_length(node->distinctClause) == 1 && linitial(node->distinctClause) == NIL)) { 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) && !(list_length(node->fromClause) == 1 && linitial(node->fromClause) == NIL)) { 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) && !(list_length(node->groupClause) == 1 && linitial(node->groupClause) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->groupDistinct) { _fingerprintString(ctx, "groupDistinct"); _fingerprintString(ctx, "true"); } 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) && !(list_length(node->lockingClause) == 1 && linitial(node->lockingClause) == NIL)) { 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) && !(list_length(node->sortClause) == 1 && linitial(node->sortClause) == NIL)) { 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) && !(list_length(node->targetList) == 1 && linitial(node->targetList) == NIL)) { 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) && !(list_length(node->valuesLists) == 1 && linitial(node->valuesLists) == NIL)) { 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) && !(list_length(node->windowClause) == 1 && linitial(node->windowClause) == NIL)) { 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 _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) && !(list_length(node->colCollations) == 1 && linitial(node->colCollations) == NIL)) { 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) && !(list_length(node->colTypes) == 1 && linitial(node->colTypes) == NIL)) { 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) && !(list_length(node->colTypmods) == 1 && linitial(node->colTypmods) == NIL)) { 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) && !(list_length(node->groupClauses) == 1 && linitial(node->groupClauses) == NIL)) { 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 _fingerprintReturnStmt(FingerprintContext *ctx, const ReturnStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->returnval != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "returnval"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->returnval, node, "returnval", depth + 1); if (hash == XXH3_64bits_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 _fingerprintPLAssignStmt(FingerprintContext *ctx, const PLAssignStmt *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) && !(list_length(node->indirection) == 1 && linitial(node->indirection) == NIL)) { 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->nnames != 0) { char buffer[50]; sprintf(buffer, "%d", node->nnames); _fingerprintString(ctx, "nnames"); _fingerprintString(ctx, buffer); } 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); _fingerprintSelectStmt(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 _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) && !(list_length(node->schemaElts) == 1 && linitial(node->schemaElts) == NIL)) { 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 _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) && !(list_length(node->cmds) == 1 && linitial(node->cmds) == NIL)) { 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 (true) { _fingerprintString(ctx, "objtype"); _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } 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 _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 _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 (node->recurse) { _fingerprintString(ctx, "recurse"); _fingerprintString(ctx, "true"); } if (true) { _fingerprintString(ctx, "subtype"); _fingerprintString(ctx, _enumToStringAlterTableType(node->subtype)); } } 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) && !(list_length(node->collname) == 1 && linitial(node->collname) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } 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) && !(list_length(node->typeName) == 1 && linitial(node->typeName) == NIL)) { 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) && !(list_length(node->grantees) == 1 && linitial(node->grantees) == NIL)) { 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"); } 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) && !(list_length(node->objects) == 1 && linitial(node->objects) == NIL)) { 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) && !(list_length(node->privileges) == 1 && linitial(node->privileges) == NIL)) { 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 _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) && !(list_length(node->objargs) == 1 && linitial(node->objargs) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->objfuncargs != NULL && node->objfuncargs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "objfuncargs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->objfuncargs, node, "objfuncargs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->objfuncargs) == 1 && linitial(node->objfuncargs) == NIL)) { 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) && !(list_length(node->objname) == 1 && linitial(node->objname) == NIL)) { 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) && !(list_length(node->cols) == 1 && linitial(node->cols) == NIL)) { 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 _fingerprintGrantRoleStmt(FingerprintContext *ctx, const GrantRoleStmt *node, const void *parent, const char *field_name, unsigned int depth) { 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) && !(list_length(node->granted_roles) == 1 && linitial(node->granted_roles) == NIL)) { 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) && !(list_length(node->grantee_roles) == 1 && linitial(node->grantee_roles) == NIL)) { 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"); } if (node->opt != NULL && node->opt->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "opt"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->opt, node, "opt", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->opt) == 1 && linitial(node->opt) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->attlist) == 1 && linitial(node->attlist) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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 _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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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 _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) && !(list_length(node->constraints) == 1 && linitial(node->constraints) == NIL)) { 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) && !(list_length(node->inhRelations) == 1 && linitial(node->inhRelations) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->tableElts) == 1 && linitial(node->tableElts) == NIL)) { 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 _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) && !(list_length(node->exclusions) == 1 && linitial(node->exclusions) == NIL)) { 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) && !(list_length(node->fk_attrs) == 1 && linitial(node->fk_attrs) == NIL)) { 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_del_set_cols != NULL && node->fk_del_set_cols->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "fk_del_set_cols"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->fk_del_set_cols, node, "fk_del_set_cols", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->fk_del_set_cols) == 1 && linitial(node->fk_del_set_cols) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } 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) && !(list_length(node->including) == 1 && linitial(node->including) == NIL)) { 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->inhcount != 0) { char buffer[50]; sprintf(buffer, "%d", node->inhcount); _fingerprintString(ctx, "inhcount"); _fingerprintString(ctx, buffer); } 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) && !(list_length(node->keys) == 1 && linitial(node->keys) == NIL)) { 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->nulls_not_distinct) { _fingerprintString(ctx, "nulls_not_distinct"); _fingerprintString(ctx, "true"); } 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) && !(list_length(node->old_conpfeqop) == 1 && linitial(node->old_conpfeqop) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->pk_attrs) == 1 && linitial(node->pk_attrs) == NIL)) { 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 _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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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 _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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->roles) == 1 && linitial(node->roles) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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 _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) && !(list_length(node->func_options) == 1 && linitial(node->func_options) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->func_options) == 1 && linitial(node->func_options) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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 _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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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 _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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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 _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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->table_list) == 1 && linitial(node->table_list) == NIL)) { 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) && !(list_length(node->roles) == 1 && linitial(node->roles) == NIL)) { 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) && !(list_length(node->roles) == 1 && linitial(node->roles) == NIL)) { 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 _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) && !(list_length(node->handler_name) == 1 && linitial(node->handler_name) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } 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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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) && !(list_length(node->columns) == 1 && linitial(node->columns) == NIL)) { 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) && !(list_length(node->funcname) == 1 && linitial(node->funcname) == NIL)) { 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->replace) { _fingerprintString(ctx, "replace"); _fingerprintString(ctx, "true"); } 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) && !(list_length(node->transitionRels) == 1 && linitial(node->transitionRels) == NIL)) { 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 _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) && !(list_length(node->funcname) == 1 && linitial(node->funcname) == NIL)) { 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) && !(list_length(node->whenclause) == 1 && linitial(node->whenclause) == NIL)) { 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 _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) && !(list_length(node->plhandler) == 1 && linitial(node->plhandler) == NIL)) { 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) && !(list_length(node->plinline) == 1 && linitial(node->plinline) == NIL)) { 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) && !(list_length(node->plvalidator) == 1 && linitial(node->plvalidator) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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 _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 _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) && !(list_length(node->roles) == 1 && linitial(node->roles) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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 _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) && !(list_length(node->args) == 1 && linitial(node->args) == NIL)) { 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) && !(list_length(node->definition) == 1 && linitial(node->definition) == NIL)) { 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) && !(list_length(node->defnames) == 1 && linitial(node->defnames) == NIL)) { 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 _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) && !(list_length(node->constraints) == 1 && linitial(node->constraints) == NIL)) { 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) && !(list_length(node->domainname) == 1 && linitial(node->domainname) == NIL)) { 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 _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) && !(list_length(node->items) == 1 && linitial(node->items) == NIL)) { 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) && !(list_length(node->opclassname) == 1 && linitial(node->opclassname) == NIL)) { 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) && !(list_length(node->opfamilyname) == 1 && linitial(node->opfamilyname) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } 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) && !(list_length(node->class_args) == 1 && linitial(node->class_args) == NIL)) { 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) && !(list_length(node->order_family) == 1 && linitial(node->order_family) == NIL)) { 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 _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) && !(list_length(node->opfamilyname) == 1 && linitial(node->opfamilyname) == NIL)) { 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) && !(list_length(node->items) == 1 && linitial(node->items) == NIL)) { 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) && !(list_length(node->opfamilyname) == 1 && linitial(node->opfamilyname) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } 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) && !(list_length(node->objects) == 1 && linitial(node->objects) == NIL)) { 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) && !(list_length(node->relations) == 1 && linitial(node->relations) == NIL)) { 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 _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 _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 _fingerprintClosePortalStmt(FingerprintContext *ctx, const ClosePortalStmt *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->portalname for fingerprinting } 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) && !(list_length(node->excludeOpNames) == 1 && linitial(node->excludeOpNames) == NIL)) { 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) && !(list_length(node->indexIncludingParams) == 1 && linitial(node->indexIncludingParams) == NIL)) { 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) && !(list_length(node->indexParams) == 1 && linitial(node->indexParams) == NIL)) { 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->nulls_not_distinct) { _fingerprintString(ctx, "nulls_not_distinct"); _fingerprintString(ctx, "true"); } if (node->oldCreateSubid != 0) { char buffer[50]; sprintf(buffer, "%d", node->oldCreateSubid); _fingerprintString(ctx, "oldCreateSubid"); _fingerprintString(ctx, buffer); } if (node->oldFirstRelfilelocatorSubid != 0) { char buffer[50]; sprintf(buffer, "%d", node->oldFirstRelfilelocatorSubid); _fingerprintString(ctx, "oldFirstRelfilelocatorSubid"); _fingerprintString(ctx, buffer); } if (node->oldNumber != 0) { char buffer[50]; sprintf(buffer, "%d", node->oldNumber); _fingerprintString(ctx, "oldNumber"); _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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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 _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) && !(list_length(node->defnames) == 1 && linitial(node->defnames) == NIL)) { 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) && !(list_length(node->exprs) == 1 && linitial(node->exprs) == NIL)) { 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) && !(list_length(node->relations) == 1 && linitial(node->relations) == NIL)) { 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) && !(list_length(node->stat_types) == 1 && linitial(node->stat_types) == NIL)) { 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); } if (node->transformed) { _fingerprintString(ctx, "transformed"); _fingerprintString(ctx, "true"); } } static void _fingerprintStatsElem(FingerprintContext *ctx, const StatsElem *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->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } } 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) && !(list_length(node->defnames) == 1 && linitial(node->defnames) == NIL)) { 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 != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "stxstattarget"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->stxstattarget, node, "stxstattarget", depth + 1); if (hash == XXH3_64bits_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) && !(list_length(node->funcname) == 1 && linitial(node->funcname) == NIL)) { 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"); } // Intentionally ignoring node->options for fingerprinting 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) && !(list_length(node->parameters) == 1 && linitial(node->parameters) == NIL)) { 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); } if (node->sql_body != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "sql_body"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->sql_body, node, "sql_body", depth + 1); if (hash == XXH3_64bits_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)); } // Intentionally ignoring node->name for fingerprinting } 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) && !(list_length(node->actions) == 1 && linitial(node->actions) == NIL)) { 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) { // Intentionally ignoring node->args for fingerprinting } 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 _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); } if (node->outargs != NULL && node->outargs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "outargs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->outargs, node, "outargs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->outargs) == 1 && linitial(node->outargs) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } 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"); } } 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 _fingerprintAlterObjectDependsStmt(FingerprintContext *ctx, const AlterObjectDependsStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (strlen(node->extname->sval) > 0) { _fingerprintString(ctx, "extname"); _fingerprintString(ctx, node->extname->sval); } 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->typeName) == 1 && linitial(node->typeName) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } 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) && !(list_length(node->actions) == 1 && linitial(node->actions) == NIL)) { 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) { // Intentionally ignoring node->conditionname for fingerprinting 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) { // Intentionally ignoring node->conditionname for fingerprinting } static void _fingerprintUnlistenStmt(FingerprintContext *ctx, const UnlistenStmt *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->conditionname for fingerprinting } 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->location for fingerprinting // Intentionally ignoring node->options for fingerprinting // Intentionally ignoring node->savepoint_name for fingerprinting } 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) && !(list_length(node->coldeflist) == 1 && linitial(node->coldeflist) == NIL)) { 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) && !(list_length(node->typeName) == 1 && linitial(node->typeName) == NIL)) { 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) && !(list_length(node->vals) == 1 && linitial(node->vals) == NIL)) { 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) && !(list_length(node->params) == 1 && linitial(node->params) == NIL)) { 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) && !(list_length(node->typeName) == 1 && linitial(node->typeName) == NIL)) { 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) && !(list_length(node->typeName) == 1 && linitial(node->typeName) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } 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) && !(list_length(node->aliases) == 1 && linitial(node->aliases) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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 _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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterDatabaseRefreshCollStmt(FingerprintContext *ctx, const AlterDatabaseRefreshCollStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->dbname != NULL) { _fingerprintString(ctx, "dbname"); _fingerprintString(ctx, node->dbname); } } 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 _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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } 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 _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->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) && !(list_length(node->params) == 1 && linitial(node->params) == NIL)) { 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); } } 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->rels) == 1 && linitial(node->rels) == NIL)) { 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) && !(list_length(node->va_cols) == 1 && linitial(node->va_cols) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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 (true) { _fingerprintString(ctx, "objtype"); _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } 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 _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 _fingerprintCheckPointStmt(FingerprintContext *ctx, const CheckPointStmt *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) { if (true) { _fingerprintString(ctx, "target"); _fingerprintString(ctx, _enumToStringDiscardMode(node->target)); } } 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) && !(list_length(node->relations) == 1 && linitial(node->relations) == NIL)) { 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) && !(list_length(node->constraints) == 1 && linitial(node->constraints) == NIL)) { 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 (true) { _fingerprintString(ctx, "kind"); _fingerprintString(ctx, _enumToStringReindexObjectType(node->kind)); } if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } 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) && !(list_length(node->params) == 1 && linitial(node->params) == NIL)) { 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); } } 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) && !(list_length(node->conversion_name) == 1 && linitial(node->conversion_name) == NIL)) { 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) && !(list_length(node->func_name) == 1 && linitial(node->func_name) == NIL)) { 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 _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 _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) && !(list_length(node->argtypes) == 1 && linitial(node->argtypes) == NIL)) { 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) && !(list_length(node->params) == 1 && linitial(node->params) == NIL)) { 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) { if (node->isall) { _fingerprintString(ctx, "isall"); _fingerprintString(ctx, "true"); } // Intentionally ignoring node->location for fingerprinting // Intentionally ignoring node->name for fingerprinting } 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) && !(list_length(node->roles) == 1 && linitial(node->roles) == NIL)) { 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) && !(list_length(node->roles) == 1 && linitial(node->roles) == NIL)) { 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) && !(list_length(node->dictname) == 1 && linitial(node->dictname) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->cfgname) == 1 && linitial(node->cfgname) == NIL)) { 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) && !(list_length(node->dicts) == 1 && linitial(node->dicts) == NIL)) { 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) && !(list_length(node->tokentype) == 1 && linitial(node->tokentype) == NIL)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintPublicationTable(FingerprintContext *ctx, const PublicationTable *node, const void *parent, const char *field_name, unsigned int depth) { 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) && !(list_length(node->columns) == 1 && linitial(node->columns) == NIL)) { 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 _fingerprintPublicationObjSpec(FingerprintContext *ctx, const PublicationObjSpec *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } if (true) { _fingerprintString(ctx, "pubobjtype"); _fingerprintString(ctx, _enumToStringPublicationObjSpecType(node->pubobjtype)); } if (node->pubtable != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "pubtable"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintPublicationTable(ctx, node->pubtable, node, "pubtable", depth + 1); if (hash == XXH3_64bits_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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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->pubobjects != NULL && node->pubobjects->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "pubobjects"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->pubobjects, node, "pubobjects", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->pubobjects) == 1 && linitial(node->pubobjects) == NIL)) { 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 (true) { _fingerprintString(ctx, "action"); _fingerprintString(ctx, _enumToStringAlterPublicationAction(node->action)); } 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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->pubobjects != NULL && node->pubobjects->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "pubobjects"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->pubobjects, node, "pubobjects", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state) && !(list_length(node->pubobjects) == 1 && linitial(node->pubobjects) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->publication) == 1 && linitial(node->publication) == NIL)) { 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) && !(list_length(node->options) == 1 && linitial(node->options) == NIL)) { 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) && !(list_length(node->publication) == 1 && linitial(node->publication) == NIL)) { 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); } } libpg_query-17-6.1.0/src/include/pg_query_json_helper.c000066400000000000000000000023601477334012600230760ustar00rootroot00000000000000#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-17-6.1.0/src/include/pg_query_outfuncs_conds.c000066400000000000000000001113401477334012600236210ustar00rootroot00000000000000// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb case T_Integer: OUT_NODE(Integer, Integer, integer, INTEGER, Integer, integer); break; case T_Boolean: OUT_NODE(Boolean, Boolean, boolean, BOOLEAN, Boolean, boolean); break; case T_Float: OUT_NODE(Float, Float, float, FLOAT, Float, float_); break; case T_String: OUT_NODE(String, String, string, STRING, String, string); break; case T_BitString: OUT_NODE(BitString, BitString, bit_string, BIT_STRING, BitString, bit_string); 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_A_Const: OUT_NODE(A_Const, AConst, a__const, A_CONST, A_Const, a_const); 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_IntoClause: OUT_NODE(IntoClause, IntoClause, into_clause, INTO_CLAUSE, IntoClause, into_clause); 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_WindowFuncRunCondition: OUT_NODE(WindowFuncRunCondition, WindowFuncRunCondition, window_func_run_condition, WINDOW_FUNC_RUN_CONDITION, WindowFuncRunCondition, window_func_run_condition); break; case T_MergeSupportFunc: OUT_NODE(MergeSupportFunc, MergeSupportFunc, merge_support_func, MERGE_SUPPORT_FUNC, MergeSupportFunc, merge_support_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_JsonFormat: OUT_NODE(JsonFormat, JsonFormat, json_format, JSON_FORMAT, JsonFormat, json_format); break; case T_JsonReturning: OUT_NODE(JsonReturning, JsonReturning, json_returning, JSON_RETURNING, JsonReturning, json_returning); break; case T_JsonValueExpr: OUT_NODE(JsonValueExpr, JsonValueExpr, json_value_expr, JSON_VALUE_EXPR, JsonValueExpr, json_value_expr); break; case T_JsonConstructorExpr: OUT_NODE(JsonConstructorExpr, JsonConstructorExpr, json_constructor_expr, JSON_CONSTRUCTOR_EXPR, JsonConstructorExpr, json_constructor_expr); break; case T_JsonIsPredicate: OUT_NODE(JsonIsPredicate, JsonIsPredicate, json_is_predicate, JSON_IS_PREDICATE, JsonIsPredicate, json_is_predicate); break; case T_JsonBehavior: OUT_NODE(JsonBehavior, JsonBehavior, json_behavior, JSON_BEHAVIOR, JsonBehavior, json_behavior); break; case T_JsonExpr: OUT_NODE(JsonExpr, JsonExpr, json_expr, JSON_EXPR, JsonExpr, json_expr); break; case T_JsonTablePath: OUT_NODE(JsonTablePath, JsonTablePath, json_table_path, JSON_TABLE_PATH, JsonTablePath, json_table_path); break; case T_JsonTablePathScan: OUT_NODE(JsonTablePathScan, JsonTablePathScan, json_table_path_scan, JSON_TABLE_PATH_SCAN, JsonTablePathScan, json_table_path_scan); break; case T_JsonTableSiblingJoin: OUT_NODE(JsonTableSiblingJoin, JsonTableSiblingJoin, json_table_sibling_join, JSON_TABLE_SIBLING_JOIN, JsonTableSiblingJoin, json_table_sibling_join); 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_MergeAction: OUT_NODE(MergeAction, MergeAction, merge_action, MERGE_ACTION, MergeAction, merge_action); 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_Query: OUT_NODE(Query, Query, query, QUERY, Query, query); break; case T_TypeName: OUT_NODE(TypeName, TypeName, type_name, TYPE_NAME, TypeName, type_name); 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_Expr: OUT_NODE(A_Expr, AExpr, a__expr, A_EXPR, A_Expr, a_expr); 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_RoleSpec: OUT_NODE(RoleSpec, RoleSpec, role_spec, ROLE_SPEC, RoleSpec, role_spec); 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_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_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_RangeTableSample: OUT_NODE(RangeTableSample, RangeTableSample, range_table_sample, RANGE_TABLE_SAMPLE, RangeTableSample, range_table_sample); break; case T_ColumnDef: OUT_NODE(ColumnDef, ColumnDef, column_def, COLUMN_DEF, ColumnDef, column_def); break; case T_TableLikeClause: OUT_NODE(TableLikeClause, TableLikeClause, table_like_clause, TABLE_LIKE_CLAUSE, TableLikeClause, table_like_clause); break; case T_IndexElem: OUT_NODE(IndexElem, IndexElem, index_elem, INDEX_ELEM, IndexElem, index_elem); break; case T_DefElem: OUT_NODE(DefElem, DefElem, def_elem, DEF_ELEM, DefElem, def_elem); break; case T_LockingClause: OUT_NODE(LockingClause, LockingClause, locking_clause, LOCKING_CLAUSE, LockingClause, locking_clause); break; case T_XmlSerialize: OUT_NODE(XmlSerialize, XmlSerialize, xml_serialize, XML_SERIALIZE, XmlSerialize, xml_serialize); 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_SinglePartitionSpec: OUT_NODE(SinglePartitionSpec, SinglePartitionSpec, single_partition_spec, SINGLE_PARTITION_SPEC, SinglePartitionSpec, single_partition_spec); break; case T_PartitionCmd: OUT_NODE(PartitionCmd, PartitionCmd, partition_cmd, PARTITION_CMD, PartitionCmd, partition_cmd); break; case T_RangeTblEntry: OUT_NODE(RangeTblEntry, RangeTblEntry, range_tbl_entry, RANGE_TBL_ENTRY, RangeTblEntry, range_tbl_entry); break; case T_RTEPermissionInfo: OUT_NODE(RTEPermissionInfo, RTEPermissionInfo, rtepermission_info, RTEPERMISSION_INFO, RTEPermissionInfo, rtepermission_info); 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_RowMarkClause: OUT_NODE(RowMarkClause, RowMarkClause, row_mark_clause, ROW_MARK_CLAUSE, RowMarkClause, row_mark_clause); 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_CTESearchClause: OUT_NODE(CTESearchClause, CTESearchClause, ctesearch_clause, CTESEARCH_CLAUSE, CTESearchClause, ctesearch_clause); break; case T_CTECycleClause: OUT_NODE(CTECycleClause, CTECycleClause, ctecycle_clause, CTECYCLE_CLAUSE, CTECycleClause, ctecycle_clause); break; case T_CommonTableExpr: OUT_NODE(CommonTableExpr, CommonTableExpr, common_table_expr, COMMON_TABLE_EXPR, CommonTableExpr, common_table_expr); break; case T_MergeWhenClause: OUT_NODE(MergeWhenClause, MergeWhenClause, merge_when_clause, MERGE_WHEN_CLAUSE, MergeWhenClause, merge_when_clause); break; case T_TriggerTransition: OUT_NODE(TriggerTransition, TriggerTransition, trigger_transition, TRIGGER_TRANSITION, TriggerTransition, trigger_transition); break; case T_JsonOutput: OUT_NODE(JsonOutput, JsonOutput, json_output, JSON_OUTPUT, JsonOutput, json_output); break; case T_JsonArgument: OUT_NODE(JsonArgument, JsonArgument, json_argument, JSON_ARGUMENT, JsonArgument, json_argument); break; case T_JsonFuncExpr: OUT_NODE(JsonFuncExpr, JsonFuncExpr, json_func_expr, JSON_FUNC_EXPR, JsonFuncExpr, json_func_expr); break; case T_JsonTablePathSpec: OUT_NODE(JsonTablePathSpec, JsonTablePathSpec, json_table_path_spec, JSON_TABLE_PATH_SPEC, JsonTablePathSpec, json_table_path_spec); break; case T_JsonTable: OUT_NODE(JsonTable, JsonTable, json_table, JSON_TABLE, JsonTable, json_table); break; case T_JsonTableColumn: OUT_NODE(JsonTableColumn, JsonTableColumn, json_table_column, JSON_TABLE_COLUMN, JsonTableColumn, json_table_column); break; case T_JsonKeyValue: OUT_NODE(JsonKeyValue, JsonKeyValue, json_key_value, JSON_KEY_VALUE, JsonKeyValue, json_key_value); break; case T_JsonParseExpr: OUT_NODE(JsonParseExpr, JsonParseExpr, json_parse_expr, JSON_PARSE_EXPR, JsonParseExpr, json_parse_expr); break; case T_JsonScalarExpr: OUT_NODE(JsonScalarExpr, JsonScalarExpr, json_scalar_expr, JSON_SCALAR_EXPR, JsonScalarExpr, json_scalar_expr); break; case T_JsonSerializeExpr: OUT_NODE(JsonSerializeExpr, JsonSerializeExpr, json_serialize_expr, JSON_SERIALIZE_EXPR, JsonSerializeExpr, json_serialize_expr); break; case T_JsonObjectConstructor: OUT_NODE(JsonObjectConstructor, JsonObjectConstructor, json_object_constructor, JSON_OBJECT_CONSTRUCTOR, JsonObjectConstructor, json_object_constructor); break; case T_JsonArrayConstructor: OUT_NODE(JsonArrayConstructor, JsonArrayConstructor, json_array_constructor, JSON_ARRAY_CONSTRUCTOR, JsonArrayConstructor, json_array_constructor); break; case T_JsonArrayQueryConstructor: OUT_NODE(JsonArrayQueryConstructor, JsonArrayQueryConstructor, json_array_query_constructor, JSON_ARRAY_QUERY_CONSTRUCTOR, JsonArrayQueryConstructor, json_array_query_constructor); break; case T_JsonAggConstructor: OUT_NODE(JsonAggConstructor, JsonAggConstructor, json_agg_constructor, JSON_AGG_CONSTRUCTOR, JsonAggConstructor, json_agg_constructor); break; case T_JsonObjectAgg: OUT_NODE(JsonObjectAgg, JsonObjectAgg, json_object_agg, JSON_OBJECT_AGG, JsonObjectAgg, json_object_agg); break; case T_JsonArrayAgg: OUT_NODE(JsonArrayAgg, JsonArrayAgg, json_array_agg, JSON_ARRAY_AGG, JsonArrayAgg, json_array_agg); break; case T_RawStmt: OUT_NODE(RawStmt, RawStmt, raw_stmt, RAW_STMT, RawStmt, raw_stmt); 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_MergeStmt: OUT_NODE(MergeStmt, MergeStmt, merge_stmt, MERGE_STMT, MergeStmt, merge_stmt); break; case T_SelectStmt: OUT_NODE(SelectStmt, SelectStmt, select_stmt, SELECT_STMT, SelectStmt, select_stmt); break; case T_SetOperationStmt: OUT_NODE(SetOperationStmt, SetOperationStmt, set_operation_stmt, SET_OPERATION_STMT, SetOperationStmt, set_operation_stmt); break; case T_ReturnStmt: OUT_NODE(ReturnStmt, ReturnStmt, return_stmt, RETURN_STMT, ReturnStmt, return_stmt); break; case T_PLAssignStmt: OUT_NODE(PLAssignStmt, PLAssignStmt, plassign_stmt, PLASSIGN_STMT, PLAssignStmt, plassign_stmt); break; case T_CreateSchemaStmt: OUT_NODE(CreateSchemaStmt, CreateSchemaStmt, create_schema_stmt, CREATE_SCHEMA_STMT, CreateSchemaStmt, create_schema_stmt); break; case T_AlterTableStmt: OUT_NODE(AlterTableStmt, AlterTableStmt, alter_table_stmt, ALTER_TABLE_STMT, AlterTableStmt, alter_table_stmt); break; case T_ReplicaIdentityStmt: OUT_NODE(ReplicaIdentityStmt, ReplicaIdentityStmt, replica_identity_stmt, REPLICA_IDENTITY_STMT, ReplicaIdentityStmt, replica_identity_stmt); break; case T_AlterTableCmd: OUT_NODE(AlterTableCmd, AlterTableCmd, alter_table_cmd, ALTER_TABLE_CMD, AlterTableCmd, alter_table_cmd); break; case T_AlterCollationStmt: OUT_NODE(AlterCollationStmt, AlterCollationStmt, alter_collation_stmt, ALTER_COLLATION_STMT, AlterCollationStmt, alter_collation_stmt); break; case T_AlterDomainStmt: OUT_NODE(AlterDomainStmt, AlterDomainStmt, alter_domain_stmt, ALTER_DOMAIN_STMT, AlterDomainStmt, alter_domain_stmt); break; case T_GrantStmt: OUT_NODE(GrantStmt, GrantStmt, grant_stmt, GRANT_STMT, GrantStmt, grant_stmt); 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_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_CopyStmt: OUT_NODE(CopyStmt, CopyStmt, copy_stmt, COPY_STMT, CopyStmt, copy_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_CreateStmt: OUT_NODE(CreateStmt, CreateStmt, create_stmt, CREATE_STMT, CreateStmt, create_stmt); break; case T_Constraint: OUT_NODE(Constraint, Constraint, constraint, CONSTRAINT, Constraint, constraint); 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_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_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_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_CreateForeignTableStmt: OUT_NODE(CreateForeignTableStmt, CreateForeignTableStmt, create_foreign_table_stmt, CREATE_FOREIGN_TABLE_STMT, CreateForeignTableStmt, create_foreign_table_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_ImportForeignSchemaStmt: OUT_NODE(ImportForeignSchemaStmt, ImportForeignSchemaStmt, import_foreign_schema_stmt, IMPORT_FOREIGN_SCHEMA_STMT, ImportForeignSchemaStmt, import_foreign_schema_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_CreateAmStmt: OUT_NODE(CreateAmStmt, CreateAmStmt, create_am_stmt, CREATE_AM_STMT, CreateAmStmt, create_am_stmt); break; case T_CreateTrigStmt: OUT_NODE(CreateTrigStmt, CreateTrigStmt, create_trig_stmt, CREATE_TRIG_STMT, CreateTrigStmt, create_trig_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_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_AlterRoleSetStmt: OUT_NODE(AlterRoleSetStmt, AlterRoleSetStmt, alter_role_set_stmt, ALTER_ROLE_SET_STMT, AlterRoleSetStmt, alter_role_set_stmt); break; case T_DropRoleStmt: OUT_NODE(DropRoleStmt, DropRoleStmt, drop_role_stmt, DROP_ROLE_STMT, DropRoleStmt, drop_role_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_DefineStmt: OUT_NODE(DefineStmt, DefineStmt, define_stmt, DEFINE_STMT, DefineStmt, define_stmt); break; case T_CreateDomainStmt: OUT_NODE(CreateDomainStmt, CreateDomainStmt, create_domain_stmt, CREATE_DOMAIN_STMT, CreateDomainStmt, create_domain_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_CreateOpClassItem: OUT_NODE(CreateOpClassItem, CreateOpClassItem, create_op_class_item, CREATE_OP_CLASS_ITEM, CreateOpClassItem, create_op_class_item); 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_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_SecLabelStmt: OUT_NODE(SecLabelStmt, SecLabelStmt, sec_label_stmt, SEC_LABEL_STMT, SecLabelStmt, sec_label_stmt); break; case T_DeclareCursorStmt: OUT_NODE(DeclareCursorStmt, DeclareCursorStmt, declare_cursor_stmt, DECLARE_CURSOR_STMT, DeclareCursorStmt, declare_cursor_stmt); break; case T_ClosePortalStmt: OUT_NODE(ClosePortalStmt, ClosePortalStmt, close_portal_stmt, CLOSE_PORTAL_STMT, ClosePortalStmt, close_portal_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_CreateStatsStmt: OUT_NODE(CreateStatsStmt, CreateStatsStmt, create_stats_stmt, CREATE_STATS_STMT, CreateStatsStmt, create_stats_stmt); break; case T_StatsElem: OUT_NODE(StatsElem, StatsElem, stats_elem, STATS_ELEM, StatsElem, stats_elem); break; case T_AlterStatsStmt: OUT_NODE(AlterStatsStmt, AlterStatsStmt, alter_stats_stmt, ALTER_STATS_STMT, AlterStatsStmt, alter_stats_stmt); break; case T_CreateFunctionStmt: OUT_NODE(CreateFunctionStmt, CreateFunctionStmt, create_function_stmt, CREATE_FUNCTION_STMT, CreateFunctionStmt, create_function_stmt); break; case T_FunctionParameter: OUT_NODE(FunctionParameter, FunctionParameter, function_parameter, FUNCTION_PARAMETER, FunctionParameter, function_parameter); 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_InlineCodeBlock: OUT_NODE(InlineCodeBlock, InlineCodeBlock, inline_code_block, INLINE_CODE_BLOCK, InlineCodeBlock, inline_code_block); break; case T_CallStmt: OUT_NODE(CallStmt, CallStmt, call_stmt, CALL_STMT, CallStmt, call_stmt); break; case T_CallContext: OUT_NODE(CallContext, CallContext, call_context, CALL_CONTEXT, CallContext, call_context); break; case T_RenameStmt: OUT_NODE(RenameStmt, RenameStmt, rename_stmt, RENAME_STMT, RenameStmt, rename_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_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_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_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_CreatedbStmt: OUT_NODE(CreatedbStmt, CreatedbStmt, createdb_stmt, CREATEDB_STMT, CreatedbStmt, createdb_stmt); break; case T_AlterDatabaseStmt: OUT_NODE(AlterDatabaseStmt, AlterDatabaseStmt, alter_database_stmt, ALTER_DATABASE_STMT, AlterDatabaseStmt, alter_database_stmt); break; case T_AlterDatabaseRefreshCollStmt: OUT_NODE(AlterDatabaseRefreshCollStmt, AlterDatabaseRefreshCollStmt, alter_database_refresh_coll_stmt, ALTER_DATABASE_REFRESH_COLL_STMT, AlterDatabaseRefreshCollStmt, alter_database_refresh_coll_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_DropdbStmt: OUT_NODE(DropdbStmt, DropdbStmt, dropdb_stmt, DROPDB_STMT, DropdbStmt, dropdb_stmt); break; case T_AlterSystemStmt: OUT_NODE(AlterSystemStmt, AlterSystemStmt, alter_system_stmt, ALTER_SYSTEM_STMT, AlterSystemStmt, alter_system_stmt); break; case T_ClusterStmt: OUT_NODE(ClusterStmt, ClusterStmt, cluster_stmt, CLUSTER_STMT, ClusterStmt, cluster_stmt); break; case T_VacuumStmt: OUT_NODE(VacuumStmt, VacuumStmt, vacuum_stmt, VACUUM_STMT, VacuumStmt, vacuum_stmt); break; case T_VacuumRelation: OUT_NODE(VacuumRelation, VacuumRelation, vacuum_relation, VACUUM_RELATION, VacuumRelation, vacuum_relation); 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_RefreshMatViewStmt: OUT_NODE(RefreshMatViewStmt, RefreshMatViewStmt, refresh_mat_view_stmt, REFRESH_MAT_VIEW_STMT, RefreshMatViewStmt, refresh_mat_view_stmt); break; case T_CheckPointStmt: OUT_NODE(CheckPointStmt, CheckPointStmt, check_point_stmt, CHECK_POINT_STMT, CheckPointStmt, check_point_stmt); break; case T_DiscardStmt: OUT_NODE(DiscardStmt, DiscardStmt, discard_stmt, DISCARD_STMT, DiscardStmt, discard_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_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_CreateTransformStmt: OUT_NODE(CreateTransformStmt, CreateTransformStmt, create_transform_stmt, CREATE_TRANSFORM_STMT, CreateTransformStmt, create_transform_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_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_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_PublicationTable: OUT_NODE(PublicationTable, PublicationTable, publication_table, PUBLICATION_TABLE, PublicationTable, publication_table); break; case T_PublicationObjSpec: OUT_NODE(PublicationObjSpec, PublicationObjSpec, publication_obj_spec, PUBLICATION_OBJ_SPEC, PublicationObjSpec, publication_obj_spec); 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; libpg_query-17-6.1.0/src/include/pg_query_outfuncs_defs.c000066400000000000000000004043471477334012600234500ustar00rootroot00000000000000// 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 _outIntoClause(OUT_TYPE(IntoClause, IntoClause) out_node, const IntoClause *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 _outWindowFuncRunCondition(OUT_TYPE(WindowFuncRunCondition, WindowFuncRunCondition) out_node, const WindowFuncRunCondition *node); static void _outMergeSupportFunc(OUT_TYPE(MergeSupportFunc, MergeSupportFunc) out_node, const MergeSupportFunc *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 _outJsonFormat(OUT_TYPE(JsonFormat, JsonFormat) out_node, const JsonFormat *node); static void _outJsonReturning(OUT_TYPE(JsonReturning, JsonReturning) out_node, const JsonReturning *node); static void _outJsonValueExpr(OUT_TYPE(JsonValueExpr, JsonValueExpr) out_node, const JsonValueExpr *node); static void _outJsonConstructorExpr(OUT_TYPE(JsonConstructorExpr, JsonConstructorExpr) out_node, const JsonConstructorExpr *node); static void _outJsonIsPredicate(OUT_TYPE(JsonIsPredicate, JsonIsPredicate) out_node, const JsonIsPredicate *node); static void _outJsonBehavior(OUT_TYPE(JsonBehavior, JsonBehavior) out_node, const JsonBehavior *node); static void _outJsonExpr(OUT_TYPE(JsonExpr, JsonExpr) out_node, const JsonExpr *node); static void _outJsonTablePath(OUT_TYPE(JsonTablePath, JsonTablePath) out_node, const JsonTablePath *node); static void _outJsonTablePathScan(OUT_TYPE(JsonTablePathScan, JsonTablePathScan) out_node, const JsonTablePathScan *node); static void _outJsonTableSiblingJoin(OUT_TYPE(JsonTableSiblingJoin, JsonTableSiblingJoin) out_node, const JsonTableSiblingJoin *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 _outMergeAction(OUT_TYPE(MergeAction, MergeAction) out_node, const MergeAction *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 _outQuery(OUT_TYPE(Query, Query) out_node, const Query *node); static void _outTypeName(OUT_TYPE(TypeName, TypeName) out_node, const TypeName *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 _outAExpr(OUT_TYPE(A_Expr, AExpr) out_node, const A_Expr *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 _outRoleSpec(OUT_TYPE(RoleSpec, RoleSpec) out_node, const RoleSpec *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 _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 _outRangeTableFunc(OUT_TYPE(RangeTableFunc, RangeTableFunc) out_node, const RangeTableFunc *node); static void _outRangeTableFuncCol(OUT_TYPE(RangeTableFuncCol, RangeTableFuncCol) out_node, const RangeTableFuncCol *node); static void _outRangeTableSample(OUT_TYPE(RangeTableSample, RangeTableSample) out_node, const RangeTableSample *node); static void _outColumnDef(OUT_TYPE(ColumnDef, ColumnDef) out_node, const ColumnDef *node); static void _outTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) out_node, const TableLikeClause *node); static void _outIndexElem(OUT_TYPE(IndexElem, IndexElem) out_node, const IndexElem *node); static void _outDefElem(OUT_TYPE(DefElem, DefElem) out_node, const DefElem *node); static void _outLockingClause(OUT_TYPE(LockingClause, LockingClause) out_node, const LockingClause *node); static void _outXmlSerialize(OUT_TYPE(XmlSerialize, XmlSerialize) out_node, const XmlSerialize *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 _outSinglePartitionSpec(OUT_TYPE(SinglePartitionSpec, SinglePartitionSpec) out_node, const SinglePartitionSpec *node); static void _outPartitionCmd(OUT_TYPE(PartitionCmd, PartitionCmd) out_node, const PartitionCmd *node); static void _outRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) out_node, const RangeTblEntry *node); static void _outRTEPermissionInfo(OUT_TYPE(RTEPermissionInfo, RTEPermissionInfo) out_node, const RTEPermissionInfo *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 _outRowMarkClause(OUT_TYPE(RowMarkClause, RowMarkClause) out_node, const RowMarkClause *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 _outCTESearchClause(OUT_TYPE(CTESearchClause, CTESearchClause) out_node, const CTESearchClause *node); static void _outCTECycleClause(OUT_TYPE(CTECycleClause, CTECycleClause) out_node, const CTECycleClause *node); static void _outCommonTableExpr(OUT_TYPE(CommonTableExpr, CommonTableExpr) out_node, const CommonTableExpr *node); static void _outMergeWhenClause(OUT_TYPE(MergeWhenClause, MergeWhenClause) out_node, const MergeWhenClause *node); static void _outTriggerTransition(OUT_TYPE(TriggerTransition, TriggerTransition) out_node, const TriggerTransition *node); static void _outJsonOutput(OUT_TYPE(JsonOutput, JsonOutput) out_node, const JsonOutput *node); static void _outJsonArgument(OUT_TYPE(JsonArgument, JsonArgument) out_node, const JsonArgument *node); static void _outJsonFuncExpr(OUT_TYPE(JsonFuncExpr, JsonFuncExpr) out_node, const JsonFuncExpr *node); static void _outJsonTablePathSpec(OUT_TYPE(JsonTablePathSpec, JsonTablePathSpec) out_node, const JsonTablePathSpec *node); static void _outJsonTable(OUT_TYPE(JsonTable, JsonTable) out_node, const JsonTable *node); static void _outJsonTableColumn(OUT_TYPE(JsonTableColumn, JsonTableColumn) out_node, const JsonTableColumn *node); static void _outJsonKeyValue(OUT_TYPE(JsonKeyValue, JsonKeyValue) out_node, const JsonKeyValue *node); static void _outJsonParseExpr(OUT_TYPE(JsonParseExpr, JsonParseExpr) out_node, const JsonParseExpr *node); static void _outJsonScalarExpr(OUT_TYPE(JsonScalarExpr, JsonScalarExpr) out_node, const JsonScalarExpr *node); static void _outJsonSerializeExpr(OUT_TYPE(JsonSerializeExpr, JsonSerializeExpr) out_node, const JsonSerializeExpr *node); static void _outJsonObjectConstructor(OUT_TYPE(JsonObjectConstructor, JsonObjectConstructor) out_node, const JsonObjectConstructor *node); static void _outJsonArrayConstructor(OUT_TYPE(JsonArrayConstructor, JsonArrayConstructor) out_node, const JsonArrayConstructor *node); static void _outJsonArrayQueryConstructor(OUT_TYPE(JsonArrayQueryConstructor, JsonArrayQueryConstructor) out_node, const JsonArrayQueryConstructor *node); static void _outJsonAggConstructor(OUT_TYPE(JsonAggConstructor, JsonAggConstructor) out_node, const JsonAggConstructor *node); static void _outJsonObjectAgg(OUT_TYPE(JsonObjectAgg, JsonObjectAgg) out_node, const JsonObjectAgg *node); static void _outJsonArrayAgg(OUT_TYPE(JsonArrayAgg, JsonArrayAgg) out_node, const JsonArrayAgg *node); static void _outRawStmt(OUT_TYPE(RawStmt, RawStmt) out_node, const RawStmt *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 _outMergeStmt(OUT_TYPE(MergeStmt, MergeStmt) out_node, const MergeStmt *node); static void _outSelectStmt(OUT_TYPE(SelectStmt, SelectStmt) out_node, const SelectStmt *node); static void _outSetOperationStmt(OUT_TYPE(SetOperationStmt, SetOperationStmt) out_node, const SetOperationStmt *node); static void _outReturnStmt(OUT_TYPE(ReturnStmt, ReturnStmt) out_node, const ReturnStmt *node); static void _outPLAssignStmt(OUT_TYPE(PLAssignStmt, PLAssignStmt) out_node, const PLAssignStmt *node); static void _outCreateSchemaStmt(OUT_TYPE(CreateSchemaStmt, CreateSchemaStmt) out_node, const CreateSchemaStmt *node); static void _outAlterTableStmt(OUT_TYPE(AlterTableStmt, AlterTableStmt) out_node, const AlterTableStmt *node); static void _outReplicaIdentityStmt(OUT_TYPE(ReplicaIdentityStmt, ReplicaIdentityStmt) out_node, const ReplicaIdentityStmt *node); static void _outAlterTableCmd(OUT_TYPE(AlterTableCmd, AlterTableCmd) out_node, const AlterTableCmd *node); static void _outAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) out_node, const AlterCollationStmt *node); static void _outAlterDomainStmt(OUT_TYPE(AlterDomainStmt, AlterDomainStmt) out_node, const AlterDomainStmt *node); static void _outGrantStmt(OUT_TYPE(GrantStmt, GrantStmt) out_node, const GrantStmt *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 _outGrantRoleStmt(OUT_TYPE(GrantRoleStmt, GrantRoleStmt) out_node, const GrantRoleStmt *node); static void _outAlterDefaultPrivilegesStmt(OUT_TYPE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt) out_node, const AlterDefaultPrivilegesStmt *node); static void _outCopyStmt(OUT_TYPE(CopyStmt, CopyStmt) out_node, const CopyStmt *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 _outCreateStmt(OUT_TYPE(CreateStmt, CreateStmt) out_node, const CreateStmt *node); static void _outConstraint(OUT_TYPE(Constraint, Constraint) out_node, const Constraint *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 _outAlterTableSpaceOptionsStmt(OUT_TYPE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt) out_node, const AlterTableSpaceOptionsStmt *node); static void _outAlterTableMoveAllStmt(OUT_TYPE(AlterTableMoveAllStmt, AlterTableMoveAllStmt) out_node, const AlterTableMoveAllStmt *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 _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 _outCreateForeignTableStmt(OUT_TYPE(CreateForeignTableStmt, CreateForeignTableStmt) out_node, const CreateForeignTableStmt *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 _outImportForeignSchemaStmt(OUT_TYPE(ImportForeignSchemaStmt, ImportForeignSchemaStmt) out_node, const ImportForeignSchemaStmt *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 _outCreateAmStmt(OUT_TYPE(CreateAmStmt, CreateAmStmt) out_node, const CreateAmStmt *node); static void _outCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) out_node, const CreateTrigStmt *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 _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 _outAlterRoleSetStmt(OUT_TYPE(AlterRoleSetStmt, AlterRoleSetStmt) out_node, const AlterRoleSetStmt *node); static void _outDropRoleStmt(OUT_TYPE(DropRoleStmt, DropRoleStmt) out_node, const DropRoleStmt *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 _outDefineStmt(OUT_TYPE(DefineStmt, DefineStmt) out_node, const DefineStmt *node); static void _outCreateDomainStmt(OUT_TYPE(CreateDomainStmt, CreateDomainStmt) out_node, const CreateDomainStmt *node); static void _outCreateOpClassStmt(OUT_TYPE(CreateOpClassStmt, CreateOpClassStmt) out_node, const CreateOpClassStmt *node); static void _outCreateOpClassItem(OUT_TYPE(CreateOpClassItem, CreateOpClassItem) out_node, const CreateOpClassItem *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 _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 _outSecLabelStmt(OUT_TYPE(SecLabelStmt, SecLabelStmt) out_node, const SecLabelStmt *node); static void _outDeclareCursorStmt(OUT_TYPE(DeclareCursorStmt, DeclareCursorStmt) out_node, const DeclareCursorStmt *node); static void _outClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) out_node, const ClosePortalStmt *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 _outCreateStatsStmt(OUT_TYPE(CreateStatsStmt, CreateStatsStmt) out_node, const CreateStatsStmt *node); static void _outStatsElem(OUT_TYPE(StatsElem, StatsElem) out_node, const StatsElem *node); static void _outAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) out_node, const AlterStatsStmt *node); static void _outCreateFunctionStmt(OUT_TYPE(CreateFunctionStmt, CreateFunctionStmt) out_node, const CreateFunctionStmt *node); static void _outFunctionParameter(OUT_TYPE(FunctionParameter, FunctionParameter) out_node, const FunctionParameter *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 _outInlineCodeBlock(OUT_TYPE(InlineCodeBlock, InlineCodeBlock) out_node, const InlineCodeBlock *node); static void _outCallStmt(OUT_TYPE(CallStmt, CallStmt) out_node, const CallStmt *node); static void _outCallContext(OUT_TYPE(CallContext, CallContext) out_node, const CallContext *node); static void _outRenameStmt(OUT_TYPE(RenameStmt, RenameStmt) out_node, const RenameStmt *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 _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 _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 _outViewStmt(OUT_TYPE(ViewStmt, ViewStmt) out_node, const ViewStmt *node); static void _outLoadStmt(OUT_TYPE(LoadStmt, LoadStmt) out_node, const LoadStmt *node); static void _outCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) out_node, const CreatedbStmt *node); static void _outAlterDatabaseStmt(OUT_TYPE(AlterDatabaseStmt, AlterDatabaseStmt) out_node, const AlterDatabaseStmt *node); static void _outAlterDatabaseRefreshCollStmt(OUT_TYPE(AlterDatabaseRefreshCollStmt, AlterDatabaseRefreshCollStmt) out_node, const AlterDatabaseRefreshCollStmt *node); static void _outAlterDatabaseSetStmt(OUT_TYPE(AlterDatabaseSetStmt, AlterDatabaseSetStmt) out_node, const AlterDatabaseSetStmt *node); static void _outDropdbStmt(OUT_TYPE(DropdbStmt, DropdbStmt) out_node, const DropdbStmt *node); static void _outAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) out_node, const AlterSystemStmt *node); static void _outClusterStmt(OUT_TYPE(ClusterStmt, ClusterStmt) out_node, const ClusterStmt *node); static void _outVacuumStmt(OUT_TYPE(VacuumStmt, VacuumStmt) out_node, const VacuumStmt *node); static void _outVacuumRelation(OUT_TYPE(VacuumRelation, VacuumRelation) out_node, const VacuumRelation *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 _outRefreshMatViewStmt(OUT_TYPE(RefreshMatViewStmt, RefreshMatViewStmt) out_node, const RefreshMatViewStmt *node); static void _outCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) out_node, const CheckPointStmt *node); static void _outDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) out_node, const DiscardStmt *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 _outCreateConversionStmt(OUT_TYPE(CreateConversionStmt, CreateConversionStmt) out_node, const CreateConversionStmt *node); static void _outCreateCastStmt(OUT_TYPE(CreateCastStmt, CreateCastStmt) out_node, const CreateCastStmt *node); static void _outCreateTransformStmt(OUT_TYPE(CreateTransformStmt, CreateTransformStmt) out_node, const CreateTransformStmt *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 _outDropOwnedStmt(OUT_TYPE(DropOwnedStmt, DropOwnedStmt) out_node, const DropOwnedStmt *node); static void _outReassignOwnedStmt(OUT_TYPE(ReassignOwnedStmt, ReassignOwnedStmt) out_node, const ReassignOwnedStmt *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 _outPublicationTable(OUT_TYPE(PublicationTable, PublicationTable) out_node, const PublicationTable *node); static void _outPublicationObjSpec(OUT_TYPE(PublicationObjSpec, PublicationObjSpec) out_node, const PublicationObjSpec *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 _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_ENUM_FIELD(TableFuncType, functype, functype, functype); 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_LIST_FIELD(colvalexprs, colvalexprs, colvalexprs); WRITE_LIST_FIELD(passingvalexprs, passingvalexprs, passingvalexprs); WRITE_BITMAPSET_FIELD(notnulls, notnulls, notnulls); WRITE_NODE_PTR_FIELD(plan, plan, plan); WRITE_INT_FIELD(ordinalitycol, ordinalitycol, ordinalitycol); WRITE_INT_FIELD(location, location, location); } 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 _outVar(OUT_TYPE(Var, Var) out, const Var *node) { WRITE_INT_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_BITMAPSET_FIELD(varnullingrels, varnullingrels, varnullingrels); WRITE_UINT_FIELD(varlevelsup, varlevelsup, varlevelsup); 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_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(aggno, aggno, aggno); WRITE_INT_FIELD(aggtransno, aggtransno, aggtransno); 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_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_LIST_FIELD(run_condition, runCondition, runCondition); 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 _outWindowFuncRunCondition(OUT_TYPE(WindowFuncRunCondition, WindowFuncRunCondition) out, const WindowFuncRunCondition *node) { WRITE_UINT_FIELD(opno, opno, opno); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_BOOL_FIELD(wfunc_left, wfunc_left, wfunc_left); WRITE_NODE_PTR_FIELD(arg, arg, arg); } static void _outMergeSupportFunc(OUT_TYPE(MergeSupportFunc, MergeSupportFunc) out, const MergeSupportFunc *node) { WRITE_UINT_FIELD(msftype, msftype, msftype); WRITE_UINT_FIELD(msfcollid, msfcollid, msfcollid); 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_UINT_FIELD(refrestype, refrestype, refrestype); 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(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(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(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_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_BOOL_FIELD(indent, indent, indent); WRITE_UINT_FIELD(type, type, type); WRITE_INT_FIELD(typmod, typmod, typmod); WRITE_INT_FIELD(location, location, location); } static void _outJsonFormat(OUT_TYPE(JsonFormat, JsonFormat) out, const JsonFormat *node) { WRITE_ENUM_FIELD(JsonFormatType, format_type, format_type, format_type); WRITE_ENUM_FIELD(JsonEncoding, encoding, encoding, encoding); WRITE_INT_FIELD(location, location, location); } static void _outJsonReturning(OUT_TYPE(JsonReturning, JsonReturning) out, const JsonReturning *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(JsonFormat, json_format, format, format, format); WRITE_UINT_FIELD(typid, typid, typid); WRITE_INT_FIELD(typmod, typmod, typmod); } static void _outJsonValueExpr(OUT_TYPE(JsonValueExpr, JsonValueExpr) out, const JsonValueExpr *node) { WRITE_NODE_PTR_FIELD(raw_expr, raw_expr, raw_expr); WRITE_NODE_PTR_FIELD(formatted_expr, formatted_expr, formatted_expr); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonFormat, json_format, format, format, format); } static void _outJsonConstructorExpr(OUT_TYPE(JsonConstructorExpr, JsonConstructorExpr) out, const JsonConstructorExpr *node) { WRITE_ENUM_FIELD(JsonConstructorType, type, type, type); WRITE_LIST_FIELD(args, args, args); WRITE_NODE_PTR_FIELD(func, func, func); WRITE_NODE_PTR_FIELD(coercion, coercion, coercion); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonReturning, json_returning, returning, returning, returning); WRITE_BOOL_FIELD(absent_on_null, absent_on_null, absent_on_null); WRITE_BOOL_FIELD(unique, unique, unique); WRITE_INT_FIELD(location, location, location); } static void _outJsonIsPredicate(OUT_TYPE(JsonIsPredicate, JsonIsPredicate) out, const JsonIsPredicate *node) { WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonFormat, json_format, format, format, format); WRITE_ENUM_FIELD(JsonValueType, item_type, item_type, item_type); WRITE_BOOL_FIELD(unique_keys, unique_keys, unique_keys); WRITE_INT_FIELD(location, location, location); } static void _outJsonBehavior(OUT_TYPE(JsonBehavior, JsonBehavior) out, const JsonBehavior *node) { WRITE_ENUM_FIELD(JsonBehaviorType, btype, btype, btype); WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_BOOL_FIELD(coerce, coerce, coerce); WRITE_INT_FIELD(location, location, location); } static void _outJsonExpr(OUT_TYPE(JsonExpr, JsonExpr) out, const JsonExpr *node) { WRITE_ENUM_FIELD(JsonExprOp, op, op, op); WRITE_STRING_FIELD(column_name, column_name, column_name); WRITE_NODE_PTR_FIELD(formatted_expr, formatted_expr, formatted_expr); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonFormat, json_format, format, format, format); WRITE_NODE_PTR_FIELD(path_spec, path_spec, path_spec); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonReturning, json_returning, returning, returning, returning); WRITE_LIST_FIELD(passing_names, passing_names, passing_names); WRITE_LIST_FIELD(passing_values, passing_values, passing_values); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonBehavior, json_behavior, on_empty, on_empty, on_empty); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonBehavior, json_behavior, on_error, on_error, on_error); WRITE_BOOL_FIELD(use_io_coercion, use_io_coercion, use_io_coercion); WRITE_BOOL_FIELD(use_json_coercion, use_json_coercion, use_json_coercion); WRITE_ENUM_FIELD(JsonWrapper, wrapper, wrapper, wrapper); WRITE_BOOL_FIELD(omit_quotes, omit_quotes, omit_quotes); WRITE_UINT_FIELD(collation, collation, collation); WRITE_INT_FIELD(location, location, location); } static void _outJsonTablePath(OUT_TYPE(JsonTablePath, JsonTablePath) out, const JsonTablePath *node) { WRITE_STRING_FIELD(name, name, name); } static void _outJsonTablePathScan(OUT_TYPE(JsonTablePathScan, JsonTablePathScan) out, const JsonTablePathScan *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(JsonTablePath, json_table_path, path, path, path); WRITE_BOOL_FIELD(error_on_error, errorOnError, errorOnError); WRITE_NODE_PTR_FIELD(child, child, child); WRITE_INT_FIELD(col_min, colMin, colMin); WRITE_INT_FIELD(col_max, colMax, colMax); } static void _outJsonTableSiblingJoin(OUT_TYPE(JsonTableSiblingJoin, JsonTableSiblingJoin) out, const JsonTableSiblingJoin *node) { WRITE_NODE_PTR_FIELD(lplan, lplan, lplan); WRITE_NODE_PTR_FIELD(rplan, rplan, rplan); } 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 _outMergeAction(OUT_TYPE(MergeAction, MergeAction) out, const MergeAction *node) { WRITE_ENUM_FIELD(MergeMatchKind, match_kind, matchKind, matchKind); WRITE_ENUM_FIELD(CmdType, command_type, commandType, commandType); WRITE_ENUM_FIELD(OverridingKind, override, override, override); WRITE_NODE_PTR_FIELD(qual, qual, qual); WRITE_LIST_FIELD(target_list, targetList, targetList); WRITE_LIST_FIELD(update_colnos, updateColnos, updateColnos); } 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_SPECIFIC_NODE_PTR_FIELD(Alias, alias, join_using_alias, join_using_alias, join_using_alias); 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 _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_BOOL_FIELD(is_return, isReturn, isReturn); WRITE_LIST_FIELD(cte_list, cteList, cteList); WRITE_LIST_FIELD(rtable, rtable, rtable); WRITE_LIST_FIELD(rteperminfos, rteperminfos, rteperminfos); WRITE_SPECIFIC_NODE_PTR_FIELD(FromExpr, from_expr, jointree, jointree, jointree); WRITE_LIST_FIELD(merge_action_list, mergeActionList, mergeActionList); WRITE_INT_FIELD(merge_target_relation, mergeTargetRelation, mergeTargetRelation); WRITE_NODE_PTR_FIELD(merge_join_condition, mergeJoinCondition, mergeJoinCondition); 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_BOOL_FIELD(group_distinct, groupDistinct, groupDistinct); 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 _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 _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 _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 _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 _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 _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_SPECIFIC_NODE_PTR_FIELD(WindowDef, window_def, over, over, over); 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_ENUM_FIELD(CoercionForm, funcformat, funcformat, funcformat); 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 _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 _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 _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 _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_STRING_FIELD(compression, compression, compression); 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_STRING_FIELD(storage_name, storage_name, storage_name); 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 _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 _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 _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 _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 _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_BOOL_FIELD(indent, indent, indent); WRITE_INT_FIELD(location, location, location); } 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_ENUM_FIELD(PartitionStrategy, 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 _outSinglePartitionSpec(OUT_TYPE(SinglePartitionSpec, SinglePartitionSpec) out, const SinglePartitionSpec *node) { } 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); WRITE_BOOL_FIELD(concurrent, concurrent, concurrent); } static void _outRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) out, const RangeTblEntry *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, eref, eref, eref); WRITE_ENUM_FIELD(RTEKind, rtekind, rtekind, rtekind); WRITE_UINT_FIELD(relid, relid, relid); WRITE_BOOL_FIELD(inh, inh, inh); WRITE_CHAR_FIELD(relkind, relkind, relkind); WRITE_INT_FIELD(rellockmode, rellockmode, rellockmode); WRITE_UINT_FIELD(perminfoindex, perminfoindex, perminfoindex); 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_SPECIFIC_NODE_PTR_FIELD(Alias, alias, join_using_alias, join_using_alias, join_using_alias); 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_BOOL_FIELD(lateral, lateral, lateral); WRITE_BOOL_FIELD(in_from_cl, inFromCl, inFromCl); WRITE_LIST_FIELD(security_quals, securityQuals, securityQuals); } static void _outRTEPermissionInfo(OUT_TYPE(RTEPermissionInfo, RTEPermissionInfo) out, const RTEPermissionInfo *node) { WRITE_UINT_FIELD(relid, relid, relid); WRITE_BOOL_FIELD(inh, inh, inh); WRITE_UINT64_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); } 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 _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 _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 _outCTESearchClause(OUT_TYPE(CTESearchClause, CTESearchClause) out, const CTESearchClause *node) { WRITE_LIST_FIELD(search_col_list, search_col_list, search_col_list); WRITE_BOOL_FIELD(search_breadth_first, search_breadth_first, search_breadth_first); WRITE_STRING_FIELD(search_seq_column, search_seq_column, search_seq_column); WRITE_INT_FIELD(location, location, location); } static void _outCTECycleClause(OUT_TYPE(CTECycleClause, CTECycleClause) out, const CTECycleClause *node) { WRITE_LIST_FIELD(cycle_col_list, cycle_col_list, cycle_col_list); WRITE_STRING_FIELD(cycle_mark_column, cycle_mark_column, cycle_mark_column); WRITE_NODE_PTR_FIELD(cycle_mark_value, cycle_mark_value, cycle_mark_value); WRITE_NODE_PTR_FIELD(cycle_mark_default, cycle_mark_default, cycle_mark_default); WRITE_STRING_FIELD(cycle_path_column, cycle_path_column, cycle_path_column); WRITE_INT_FIELD(location, location, location); WRITE_UINT_FIELD(cycle_mark_type, cycle_mark_type, cycle_mark_type); WRITE_INT_FIELD(cycle_mark_typmod, cycle_mark_typmod, cycle_mark_typmod); WRITE_UINT_FIELD(cycle_mark_collation, cycle_mark_collation, cycle_mark_collation); WRITE_UINT_FIELD(cycle_mark_neop, cycle_mark_neop, cycle_mark_neop); } 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_SPECIFIC_NODE_PTR_FIELD(CTESearchClause, ctesearch_clause, search_clause, search_clause, search_clause); WRITE_SPECIFIC_NODE_PTR_FIELD(CTECycleClause, ctecycle_clause, cycle_clause, cycle_clause, cycle_clause); 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 _outMergeWhenClause(OUT_TYPE(MergeWhenClause, MergeWhenClause) out, const MergeWhenClause *node) { WRITE_ENUM_FIELD(MergeMatchKind, match_kind, matchKind, matchKind); WRITE_ENUM_FIELD(CmdType, command_type, commandType, commandType); WRITE_ENUM_FIELD(OverridingKind, override, override, override); WRITE_NODE_PTR_FIELD(condition, condition, condition); WRITE_LIST_FIELD(target_list, targetList, targetList); WRITE_LIST_FIELD(values, values, values); } 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 _outJsonOutput(OUT_TYPE(JsonOutput, JsonOutput) out, const JsonOutput *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonReturning, json_returning, returning, returning, returning); } static void _outJsonArgument(OUT_TYPE(JsonArgument, JsonArgument) out, const JsonArgument *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(JsonValueExpr, json_value_expr, val, val, val); WRITE_STRING_FIELD(name, name, name); } static void _outJsonFuncExpr(OUT_TYPE(JsonFuncExpr, JsonFuncExpr) out, const JsonFuncExpr *node) { WRITE_ENUM_FIELD(JsonExprOp, op, op, op); WRITE_STRING_FIELD(column_name, column_name, column_name); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonValueExpr, json_value_expr, context_item, context_item, context_item); WRITE_NODE_PTR_FIELD(pathspec, pathspec, pathspec); WRITE_LIST_FIELD(passing, passing, passing); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonBehavior, json_behavior, on_empty, on_empty, on_empty); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonBehavior, json_behavior, on_error, on_error, on_error); WRITE_ENUM_FIELD(JsonWrapper, wrapper, wrapper, wrapper); WRITE_ENUM_FIELD(JsonQuotes, quotes, quotes, quotes); WRITE_INT_FIELD(location, location, location); } static void _outJsonTablePathSpec(OUT_TYPE(JsonTablePathSpec, JsonTablePathSpec) out, const JsonTablePathSpec *node) { WRITE_NODE_PTR_FIELD(string, string, string); WRITE_STRING_FIELD(name, name, name); WRITE_INT_FIELD(name_location, name_location, name_location); WRITE_INT_FIELD(location, location, location); } static void _outJsonTable(OUT_TYPE(JsonTable, JsonTable) out, const JsonTable *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(JsonValueExpr, json_value_expr, context_item, context_item, context_item); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonTablePathSpec, json_table_path_spec, pathspec, pathspec, pathspec); WRITE_LIST_FIELD(passing, passing, passing); WRITE_LIST_FIELD(columns, columns, columns); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonBehavior, json_behavior, on_error, on_error, on_error); WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); WRITE_BOOL_FIELD(lateral, lateral, lateral); WRITE_INT_FIELD(location, location, location); } static void _outJsonTableColumn(OUT_TYPE(JsonTableColumn, JsonTableColumn) out, const JsonTableColumn *node) { WRITE_ENUM_FIELD(JsonTableColumnType, coltype, coltype, coltype); WRITE_STRING_FIELD(name, name, name); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonTablePathSpec, json_table_path_spec, pathspec, pathspec, pathspec); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonFormat, json_format, format, format, format); WRITE_ENUM_FIELD(JsonWrapper, wrapper, wrapper, wrapper); WRITE_ENUM_FIELD(JsonQuotes, quotes, quotes, quotes); WRITE_LIST_FIELD(columns, columns, columns); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonBehavior, json_behavior, on_empty, on_empty, on_empty); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonBehavior, json_behavior, on_error, on_error, on_error); WRITE_INT_FIELD(location, location, location); } static void _outJsonKeyValue(OUT_TYPE(JsonKeyValue, JsonKeyValue) out, const JsonKeyValue *node) { WRITE_NODE_PTR_FIELD(key, key, key); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonValueExpr, json_value_expr, value, value, value); } static void _outJsonParseExpr(OUT_TYPE(JsonParseExpr, JsonParseExpr) out, const JsonParseExpr *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(JsonValueExpr, json_value_expr, expr, expr, expr); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); WRITE_BOOL_FIELD(unique_keys, unique_keys, unique_keys); WRITE_INT_FIELD(location, location, location); } static void _outJsonScalarExpr(OUT_TYPE(JsonScalarExpr, JsonScalarExpr) out, const JsonScalarExpr *node) { WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); WRITE_INT_FIELD(location, location, location); } static void _outJsonSerializeExpr(OUT_TYPE(JsonSerializeExpr, JsonSerializeExpr) out, const JsonSerializeExpr *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(JsonValueExpr, json_value_expr, expr, expr, expr); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); WRITE_INT_FIELD(location, location, location); } static void _outJsonObjectConstructor(OUT_TYPE(JsonObjectConstructor, JsonObjectConstructor) out, const JsonObjectConstructor *node) { WRITE_LIST_FIELD(exprs, exprs, exprs); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); WRITE_BOOL_FIELD(absent_on_null, absent_on_null, absent_on_null); WRITE_BOOL_FIELD(unique, unique, unique); WRITE_INT_FIELD(location, location, location); } static void _outJsonArrayConstructor(OUT_TYPE(JsonArrayConstructor, JsonArrayConstructor) out, const JsonArrayConstructor *node) { WRITE_LIST_FIELD(exprs, exprs, exprs); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); WRITE_BOOL_FIELD(absent_on_null, absent_on_null, absent_on_null); WRITE_INT_FIELD(location, location, location); } static void _outJsonArrayQueryConstructor(OUT_TYPE(JsonArrayQueryConstructor, JsonArrayQueryConstructor) out, const JsonArrayQueryConstructor *node) { WRITE_NODE_PTR_FIELD(query, query, query); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonFormat, json_format, format, format, format); WRITE_BOOL_FIELD(absent_on_null, absent_on_null, absent_on_null); WRITE_INT_FIELD(location, location, location); } static void _outJsonAggConstructor(OUT_TYPE(JsonAggConstructor, JsonAggConstructor) out, const JsonAggConstructor *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); WRITE_NODE_PTR_FIELD(agg_filter, agg_filter, agg_filter); WRITE_LIST_FIELD(agg_order, agg_order, agg_order); WRITE_SPECIFIC_NODE_PTR_FIELD(WindowDef, window_def, over, over, over); WRITE_INT_FIELD(location, location, location); } static void _outJsonObjectAgg(OUT_TYPE(JsonObjectAgg, JsonObjectAgg) out, const JsonObjectAgg *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(JsonAggConstructor, json_agg_constructor, constructor, constructor, constructor); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonKeyValue, json_key_value, arg, arg, arg); WRITE_BOOL_FIELD(absent_on_null, absent_on_null, absent_on_null); WRITE_BOOL_FIELD(unique, unique, unique); } static void _outJsonArrayAgg(OUT_TYPE(JsonArrayAgg, JsonArrayAgg) out, const JsonArrayAgg *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(JsonAggConstructor, json_agg_constructor, constructor, constructor, constructor); WRITE_SPECIFIC_NODE_PTR_FIELD(JsonValueExpr, json_value_expr, arg, arg, arg); WRITE_BOOL_FIELD(absent_on_null, absent_on_null, absent_on_null); } 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 _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 _outMergeStmt(OUT_TYPE(MergeStmt, MergeStmt) out, const MergeStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_NODE_PTR_FIELD(source_relation, sourceRelation, sourceRelation); WRITE_NODE_PTR_FIELD(join_condition, joinCondition, joinCondition); WRITE_LIST_FIELD(merge_when_clauses, mergeWhenClauses, mergeWhenClauses); 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_BOOL_FIELD(group_distinct, groupDistinct, groupDistinct); 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 _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 _outReturnStmt(OUT_TYPE(ReturnStmt, ReturnStmt) out, const ReturnStmt *node) { WRITE_NODE_PTR_FIELD(returnval, returnval, returnval); } static void _outPLAssignStmt(OUT_TYPE(PLAssignStmt, PLAssignStmt) out, const PLAssignStmt *node) { WRITE_STRING_FIELD(name, name, name); WRITE_LIST_FIELD(indirection, indirection, indirection); WRITE_INT_FIELD(nnames, nnames, nnames); WRITE_SPECIFIC_NODE_PTR_FIELD(SelectStmt, select_stmt, val, val, val); WRITE_INT_FIELD(location, location, location); } 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 _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, objtype, objtype, objtype); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } 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 _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); WRITE_BOOL_FIELD(recurse, recurse, recurse); } static void _outAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) out, const AlterCollationStmt *node) { WRITE_LIST_FIELD(collname, collname, collname); } 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 _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_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, grantor, grantor, grantor); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); } static void _outObjectWithArgs(OUT_TYPE(ObjectWithArgs, ObjectWithArgs) out, const ObjectWithArgs *node) { WRITE_LIST_FIELD(objname, objname, objname); WRITE_LIST_FIELD(objargs, objargs, objargs); WRITE_LIST_FIELD(objfuncargs, objfuncargs, objfuncargs); 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 _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_LIST_FIELD(opt, opt, 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 _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 _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 _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 _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_BOOL_FIELD(skip_validation, skip_validation, skip_validation); WRITE_BOOL_FIELD(initially_valid, initially_valid, initially_valid); 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_INT_FIELD(inhcount, inhcount, inhcount); WRITE_BOOL_FIELD(nulls_not_distinct, nulls_not_distinct, nulls_not_distinct); 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(fk_del_set_cols, fk_del_set_cols, fk_del_set_cols); WRITE_LIST_FIELD(old_conpfeqop, old_conpfeqop, old_conpfeqop); WRITE_UINT_FIELD(old_pktable_oid, old_pktable_oid, old_pktable_oid); WRITE_INT_FIELD(location, location, location); } 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 _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 _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 _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 _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 _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 _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 _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 _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 _outCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) out, const CreateTrigStmt *node) { WRITE_BOOL_FIELD(replace, replace, replace); WRITE_BOOL_FIELD(isconstraint, isconstraint, isconstraint); 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_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 _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 _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 _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 _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 _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 _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 _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 _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 _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 _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 _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 _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 _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 _outClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) out, const ClosePortalStmt *node) { WRITE_STRING_FIELD(portalname, portalname, portalname); } 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_number, oldNumber, oldNumber); WRITE_UINT_FIELD(old_create_subid, oldCreateSubid, oldCreateSubid); WRITE_UINT_FIELD(old_first_relfilelocator_subid, oldFirstRelfilelocatorSubid, oldFirstRelfilelocatorSubid); WRITE_BOOL_FIELD(unique, unique, unique); WRITE_BOOL_FIELD(nulls_not_distinct, nulls_not_distinct, nulls_not_distinct); 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 _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(transformed, transformed, transformed); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); } static void _outStatsElem(OUT_TYPE(StatsElem, StatsElem) out, const StatsElem *node) { WRITE_STRING_FIELD(name, name, name); WRITE_NODE_PTR_FIELD(expr, expr, expr); } static void _outAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) out, const AlterStatsStmt *node) { WRITE_LIST_FIELD(defnames, defnames, defnames); WRITE_NODE_PTR_FIELD(stxstattarget, stxstattarget, stxstattarget); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } 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); WRITE_NODE_PTR_FIELD(sql_body, sql_body, sql_body); } 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 _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 _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 _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); WRITE_LIST_FIELD(outargs, outargs, outargs); } static void _outCallContext(OUT_TYPE(CallContext, CallContext) out, const CallContext *node) { WRITE_BOOL_FIELD(atomic, atomic, atomic); } 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 _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_SPECIFIC_NODE_PTR_FIELD(String, string, 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 _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); WRITE_INT_FIELD(location, location, location); } 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 _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 _outCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) out, const CreatedbStmt *node) { WRITE_STRING_FIELD(dbname, dbname, dbname); WRITE_LIST_FIELD(options, options, options); } 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 _outAlterDatabaseRefreshCollStmt(OUT_TYPE(AlterDatabaseRefreshCollStmt, AlterDatabaseRefreshCollStmt) out, const AlterDatabaseRefreshCollStmt *node) { WRITE_STRING_FIELD(dbname, dbname, dbname); } 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 _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 _outAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) out, const AlterSystemStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); } 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_LIST_FIELD(params, params, params); } 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 _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 _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, objtype, objtype, objtype); 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 _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 _outCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) out, const CheckPointStmt *node) { } static void _outDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) out, const DiscardStmt *node) { WRITE_ENUM_FIELD(DiscardMode, target, target, target); } 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_LIST_FIELD(params, params, params); } 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 _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 _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); WRITE_BOOL_FIELD(isall, isall, isall); WRITE_INT_FIELD(location, location, location); } 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 _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 _outPublicationTable(OUT_TYPE(PublicationTable, PublicationTable) out, const PublicationTable *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); WRITE_LIST_FIELD(columns, columns, columns); } static void _outPublicationObjSpec(OUT_TYPE(PublicationObjSpec, PublicationObjSpec) out, const PublicationObjSpec *node) { WRITE_ENUM_FIELD(PublicationObjSpecType, pubobjtype, pubobjtype, pubobjtype); WRITE_STRING_FIELD(name, name, name); WRITE_SPECIFIC_NODE_PTR_FIELD(PublicationTable, publication_table, pubtable, pubtable, pubtable); WRITE_INT_FIELD(location, location, location); } 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(pubobjects, pubobjects, pubobjects); 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(pubobjects, pubobjects, pubobjects); WRITE_BOOL_FIELD(for_all_tables, for_all_tables, for_all_tables); WRITE_ENUM_FIELD(AlterPublicationAction, action, action, action); } 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); } libpg_query-17-6.1.0/src/include/pg_query_readfuncs_conds.c000066400000000000000000000703331477334012600237330ustar00rootroot00000000000000// 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(IntoClause, IntoClause, into_clause, INTO_CLAUSE, IntoClause, into_clause); 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(WindowFuncRunCondition, WindowFuncRunCondition, window_func_run_condition, WINDOW_FUNC_RUN_CONDITION, WindowFuncRunCondition, window_func_run_condition); READ_COND(MergeSupportFunc, MergeSupportFunc, merge_support_func, MERGE_SUPPORT_FUNC, MergeSupportFunc, merge_support_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(JsonFormat, JsonFormat, json_format, JSON_FORMAT, JsonFormat, json_format); READ_COND(JsonReturning, JsonReturning, json_returning, JSON_RETURNING, JsonReturning, json_returning); READ_COND(JsonValueExpr, JsonValueExpr, json_value_expr, JSON_VALUE_EXPR, JsonValueExpr, json_value_expr); READ_COND(JsonConstructorExpr, JsonConstructorExpr, json_constructor_expr, JSON_CONSTRUCTOR_EXPR, JsonConstructorExpr, json_constructor_expr); READ_COND(JsonIsPredicate, JsonIsPredicate, json_is_predicate, JSON_IS_PREDICATE, JsonIsPredicate, json_is_predicate); READ_COND(JsonBehavior, JsonBehavior, json_behavior, JSON_BEHAVIOR, JsonBehavior, json_behavior); READ_COND(JsonExpr, JsonExpr, json_expr, JSON_EXPR, JsonExpr, json_expr); READ_COND(JsonTablePath, JsonTablePath, json_table_path, JSON_TABLE_PATH, JsonTablePath, json_table_path); READ_COND(JsonTablePathScan, JsonTablePathScan, json_table_path_scan, JSON_TABLE_PATH_SCAN, JsonTablePathScan, json_table_path_scan); READ_COND(JsonTableSiblingJoin, JsonTableSiblingJoin, json_table_sibling_join, JSON_TABLE_SIBLING_JOIN, JsonTableSiblingJoin, json_table_sibling_join); READ_COND(NullTest, NullTest, null_test, NULL_TEST, NullTest, null_test); READ_COND(BooleanTest, BooleanTest, boolean_test, BOOLEAN_TEST, BooleanTest, boolean_test); READ_COND(MergeAction, MergeAction, merge_action, MERGE_ACTION, MergeAction, merge_action); 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(Query, Query, query, QUERY, Query, query); READ_COND(TypeName, TypeName, type_name, TYPE_NAME, TypeName, type_name); 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_Expr, AExpr, a__expr, A_EXPR, A_Expr, a_expr); READ_COND(TypeCast, TypeCast, type_cast, TYPE_CAST, TypeCast, type_cast); READ_COND(CollateClause, CollateClause, collate_clause, COLLATE_CLAUSE, CollateClause, collate_clause); READ_COND(RoleSpec, RoleSpec, role_spec, ROLE_SPEC, RoleSpec, role_spec); 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(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(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(RangeTableSample, RangeTableSample, range_table_sample, RANGE_TABLE_SAMPLE, RangeTableSample, range_table_sample); READ_COND(ColumnDef, ColumnDef, column_def, COLUMN_DEF, ColumnDef, column_def); READ_COND(TableLikeClause, TableLikeClause, table_like_clause, TABLE_LIKE_CLAUSE, TableLikeClause, table_like_clause); READ_COND(IndexElem, IndexElem, index_elem, INDEX_ELEM, IndexElem, index_elem); READ_COND(DefElem, DefElem, def_elem, DEF_ELEM, DefElem, def_elem); READ_COND(LockingClause, LockingClause, locking_clause, LOCKING_CLAUSE, LockingClause, locking_clause); READ_COND(XmlSerialize, XmlSerialize, xml_serialize, XML_SERIALIZE, XmlSerialize, xml_serialize); 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(SinglePartitionSpec, SinglePartitionSpec, single_partition_spec, SINGLE_PARTITION_SPEC, SinglePartitionSpec, single_partition_spec); READ_COND(PartitionCmd, PartitionCmd, partition_cmd, PARTITION_CMD, PartitionCmd, partition_cmd); READ_COND(RangeTblEntry, RangeTblEntry, range_tbl_entry, RANGE_TBL_ENTRY, RangeTblEntry, range_tbl_entry); READ_COND(RTEPermissionInfo, RTEPermissionInfo, rtepermission_info, RTEPERMISSION_INFO, RTEPermissionInfo, rtepermission_info); 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(RowMarkClause, RowMarkClause, row_mark_clause, ROW_MARK_CLAUSE, RowMarkClause, row_mark_clause); 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(CTESearchClause, CTESearchClause, ctesearch_clause, CTESEARCH_CLAUSE, CTESearchClause, ctesearch_clause); READ_COND(CTECycleClause, CTECycleClause, ctecycle_clause, CTECYCLE_CLAUSE, CTECycleClause, ctecycle_clause); READ_COND(CommonTableExpr, CommonTableExpr, common_table_expr, COMMON_TABLE_EXPR, CommonTableExpr, common_table_expr); READ_COND(MergeWhenClause, MergeWhenClause, merge_when_clause, MERGE_WHEN_CLAUSE, MergeWhenClause, merge_when_clause); READ_COND(TriggerTransition, TriggerTransition, trigger_transition, TRIGGER_TRANSITION, TriggerTransition, trigger_transition); READ_COND(JsonOutput, JsonOutput, json_output, JSON_OUTPUT, JsonOutput, json_output); READ_COND(JsonArgument, JsonArgument, json_argument, JSON_ARGUMENT, JsonArgument, json_argument); READ_COND(JsonFuncExpr, JsonFuncExpr, json_func_expr, JSON_FUNC_EXPR, JsonFuncExpr, json_func_expr); READ_COND(JsonTablePathSpec, JsonTablePathSpec, json_table_path_spec, JSON_TABLE_PATH_SPEC, JsonTablePathSpec, json_table_path_spec); READ_COND(JsonTable, JsonTable, json_table, JSON_TABLE, JsonTable, json_table); READ_COND(JsonTableColumn, JsonTableColumn, json_table_column, JSON_TABLE_COLUMN, JsonTableColumn, json_table_column); READ_COND(JsonKeyValue, JsonKeyValue, json_key_value, JSON_KEY_VALUE, JsonKeyValue, json_key_value); READ_COND(JsonParseExpr, JsonParseExpr, json_parse_expr, JSON_PARSE_EXPR, JsonParseExpr, json_parse_expr); READ_COND(JsonScalarExpr, JsonScalarExpr, json_scalar_expr, JSON_SCALAR_EXPR, JsonScalarExpr, json_scalar_expr); READ_COND(JsonSerializeExpr, JsonSerializeExpr, json_serialize_expr, JSON_SERIALIZE_EXPR, JsonSerializeExpr, json_serialize_expr); READ_COND(JsonObjectConstructor, JsonObjectConstructor, json_object_constructor, JSON_OBJECT_CONSTRUCTOR, JsonObjectConstructor, json_object_constructor); READ_COND(JsonArrayConstructor, JsonArrayConstructor, json_array_constructor, JSON_ARRAY_CONSTRUCTOR, JsonArrayConstructor, json_array_constructor); READ_COND(JsonArrayQueryConstructor, JsonArrayQueryConstructor, json_array_query_constructor, JSON_ARRAY_QUERY_CONSTRUCTOR, JsonArrayQueryConstructor, json_array_query_constructor); READ_COND(JsonAggConstructor, JsonAggConstructor, json_agg_constructor, JSON_AGG_CONSTRUCTOR, JsonAggConstructor, json_agg_constructor); READ_COND(JsonObjectAgg, JsonObjectAgg, json_object_agg, JSON_OBJECT_AGG, JsonObjectAgg, json_object_agg); READ_COND(JsonArrayAgg, JsonArrayAgg, json_array_agg, JSON_ARRAY_AGG, JsonArrayAgg, json_array_agg); READ_COND(RawStmt, RawStmt, raw_stmt, RAW_STMT, RawStmt, raw_stmt); 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(MergeStmt, MergeStmt, merge_stmt, MERGE_STMT, MergeStmt, merge_stmt); READ_COND(SelectStmt, SelectStmt, select_stmt, SELECT_STMT, SelectStmt, select_stmt); READ_COND(SetOperationStmt, SetOperationStmt, set_operation_stmt, SET_OPERATION_STMT, SetOperationStmt, set_operation_stmt); READ_COND(ReturnStmt, ReturnStmt, return_stmt, RETURN_STMT, ReturnStmt, return_stmt); READ_COND(PLAssignStmt, PLAssignStmt, plassign_stmt, PLASSIGN_STMT, PLAssignStmt, plassign_stmt); READ_COND(CreateSchemaStmt, CreateSchemaStmt, create_schema_stmt, CREATE_SCHEMA_STMT, CreateSchemaStmt, create_schema_stmt); READ_COND(AlterTableStmt, AlterTableStmt, alter_table_stmt, ALTER_TABLE_STMT, AlterTableStmt, alter_table_stmt); READ_COND(ReplicaIdentityStmt, ReplicaIdentityStmt, replica_identity_stmt, REPLICA_IDENTITY_STMT, ReplicaIdentityStmt, replica_identity_stmt); READ_COND(AlterTableCmd, AlterTableCmd, alter_table_cmd, ALTER_TABLE_CMD, AlterTableCmd, alter_table_cmd); READ_COND(AlterCollationStmt, AlterCollationStmt, alter_collation_stmt, ALTER_COLLATION_STMT, AlterCollationStmt, alter_collation_stmt); READ_COND(AlterDomainStmt, AlterDomainStmt, alter_domain_stmt, ALTER_DOMAIN_STMT, AlterDomainStmt, alter_domain_stmt); READ_COND(GrantStmt, GrantStmt, grant_stmt, GRANT_STMT, GrantStmt, grant_stmt); 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(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(CopyStmt, CopyStmt, copy_stmt, COPY_STMT, CopyStmt, copy_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(CreateStmt, CreateStmt, create_stmt, CREATE_STMT, CreateStmt, create_stmt); READ_COND(Constraint, Constraint, constraint, CONSTRAINT, Constraint, constraint); 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(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(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(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(CreateForeignTableStmt, CreateForeignTableStmt, create_foreign_table_stmt, CREATE_FOREIGN_TABLE_STMT, CreateForeignTableStmt, create_foreign_table_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(ImportForeignSchemaStmt, ImportForeignSchemaStmt, import_foreign_schema_stmt, IMPORT_FOREIGN_SCHEMA_STMT, ImportForeignSchemaStmt, import_foreign_schema_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(CreateAmStmt, CreateAmStmt, create_am_stmt, CREATE_AM_STMT, CreateAmStmt, create_am_stmt); READ_COND(CreateTrigStmt, CreateTrigStmt, create_trig_stmt, CREATE_TRIG_STMT, CreateTrigStmt, create_trig_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(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(AlterRoleSetStmt, AlterRoleSetStmt, alter_role_set_stmt, ALTER_ROLE_SET_STMT, AlterRoleSetStmt, alter_role_set_stmt); READ_COND(DropRoleStmt, DropRoleStmt, drop_role_stmt, DROP_ROLE_STMT, DropRoleStmt, drop_role_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(DefineStmt, DefineStmt, define_stmt, DEFINE_STMT, DefineStmt, define_stmt); READ_COND(CreateDomainStmt, CreateDomainStmt, create_domain_stmt, CREATE_DOMAIN_STMT, CreateDomainStmt, create_domain_stmt); READ_COND(CreateOpClassStmt, CreateOpClassStmt, create_op_class_stmt, CREATE_OP_CLASS_STMT, CreateOpClassStmt, create_op_class_stmt); READ_COND(CreateOpClassItem, CreateOpClassItem, create_op_class_item, CREATE_OP_CLASS_ITEM, CreateOpClassItem, create_op_class_item); 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(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(SecLabelStmt, SecLabelStmt, sec_label_stmt, SEC_LABEL_STMT, SecLabelStmt, sec_label_stmt); READ_COND(DeclareCursorStmt, DeclareCursorStmt, declare_cursor_stmt, DECLARE_CURSOR_STMT, DeclareCursorStmt, declare_cursor_stmt); READ_COND(ClosePortalStmt, ClosePortalStmt, close_portal_stmt, CLOSE_PORTAL_STMT, ClosePortalStmt, close_portal_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(CreateStatsStmt, CreateStatsStmt, create_stats_stmt, CREATE_STATS_STMT, CreateStatsStmt, create_stats_stmt); READ_COND(StatsElem, StatsElem, stats_elem, STATS_ELEM, StatsElem, stats_elem); READ_COND(AlterStatsStmt, AlterStatsStmt, alter_stats_stmt, ALTER_STATS_STMT, AlterStatsStmt, alter_stats_stmt); READ_COND(CreateFunctionStmt, CreateFunctionStmt, create_function_stmt, CREATE_FUNCTION_STMT, CreateFunctionStmt, create_function_stmt); READ_COND(FunctionParameter, FunctionParameter, function_parameter, FUNCTION_PARAMETER, FunctionParameter, function_parameter); 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(InlineCodeBlock, InlineCodeBlock, inline_code_block, INLINE_CODE_BLOCK, InlineCodeBlock, inline_code_block); READ_COND(CallStmt, CallStmt, call_stmt, CALL_STMT, CallStmt, call_stmt); READ_COND(CallContext, CallContext, call_context, CALL_CONTEXT, CallContext, call_context); READ_COND(RenameStmt, RenameStmt, rename_stmt, RENAME_STMT, RenameStmt, rename_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(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(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(ViewStmt, ViewStmt, view_stmt, VIEW_STMT, ViewStmt, view_stmt); READ_COND(LoadStmt, LoadStmt, load_stmt, LOAD_STMT, LoadStmt, load_stmt); READ_COND(CreatedbStmt, CreatedbStmt, createdb_stmt, CREATEDB_STMT, CreatedbStmt, createdb_stmt); READ_COND(AlterDatabaseStmt, AlterDatabaseStmt, alter_database_stmt, ALTER_DATABASE_STMT, AlterDatabaseStmt, alter_database_stmt); READ_COND(AlterDatabaseRefreshCollStmt, AlterDatabaseRefreshCollStmt, alter_database_refresh_coll_stmt, ALTER_DATABASE_REFRESH_COLL_STMT, AlterDatabaseRefreshCollStmt, alter_database_refresh_coll_stmt); READ_COND(AlterDatabaseSetStmt, AlterDatabaseSetStmt, alter_database_set_stmt, ALTER_DATABASE_SET_STMT, AlterDatabaseSetStmt, alter_database_set_stmt); READ_COND(DropdbStmt, DropdbStmt, dropdb_stmt, DROPDB_STMT, DropdbStmt, dropdb_stmt); READ_COND(AlterSystemStmt, AlterSystemStmt, alter_system_stmt, ALTER_SYSTEM_STMT, AlterSystemStmt, alter_system_stmt); READ_COND(ClusterStmt, ClusterStmt, cluster_stmt, CLUSTER_STMT, ClusterStmt, cluster_stmt); READ_COND(VacuumStmt, VacuumStmt, vacuum_stmt, VACUUM_STMT, VacuumStmt, vacuum_stmt); READ_COND(VacuumRelation, VacuumRelation, vacuum_relation, VACUUM_RELATION, VacuumRelation, vacuum_relation); 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(RefreshMatViewStmt, RefreshMatViewStmt, refresh_mat_view_stmt, REFRESH_MAT_VIEW_STMT, RefreshMatViewStmt, refresh_mat_view_stmt); READ_COND(CheckPointStmt, CheckPointStmt, check_point_stmt, CHECK_POINT_STMT, CheckPointStmt, check_point_stmt); READ_COND(DiscardStmt, DiscardStmt, discard_stmt, DISCARD_STMT, DiscardStmt, discard_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(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(CreateTransformStmt, CreateTransformStmt, create_transform_stmt, CREATE_TRANSFORM_STMT, CreateTransformStmt, create_transform_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(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(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(PublicationTable, PublicationTable, publication_table, PUBLICATION_TABLE, PublicationTable, publication_table); READ_COND(PublicationObjSpec, PublicationObjSpec, publication_obj_spec, PUBLICATION_OBJ_SPEC, PublicationObjSpec, publication_obj_spec); 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); libpg_query-17-6.1.0/src/include/pg_query_readfuncs_defs.c000066400000000000000000004217311477334012600235500ustar00rootroot00000000000000// 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 IntoClause * _readIntoClause(OUT_TYPE(IntoClause, IntoClause) 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 WindowFuncRunCondition * _readWindowFuncRunCondition(OUT_TYPE(WindowFuncRunCondition, WindowFuncRunCondition) msg); static MergeSupportFunc * _readMergeSupportFunc(OUT_TYPE(MergeSupportFunc, MergeSupportFunc) 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 JsonFormat * _readJsonFormat(OUT_TYPE(JsonFormat, JsonFormat) msg); static JsonReturning * _readJsonReturning(OUT_TYPE(JsonReturning, JsonReturning) msg); static JsonValueExpr * _readJsonValueExpr(OUT_TYPE(JsonValueExpr, JsonValueExpr) msg); static JsonConstructorExpr * _readJsonConstructorExpr(OUT_TYPE(JsonConstructorExpr, JsonConstructorExpr) msg); static JsonIsPredicate * _readJsonIsPredicate(OUT_TYPE(JsonIsPredicate, JsonIsPredicate) msg); static JsonBehavior * _readJsonBehavior(OUT_TYPE(JsonBehavior, JsonBehavior) msg); static JsonExpr * _readJsonExpr(OUT_TYPE(JsonExpr, JsonExpr) msg); static JsonTablePath * _readJsonTablePath(OUT_TYPE(JsonTablePath, JsonTablePath) msg); static JsonTablePathScan * _readJsonTablePathScan(OUT_TYPE(JsonTablePathScan, JsonTablePathScan) msg); static JsonTableSiblingJoin * _readJsonTableSiblingJoin(OUT_TYPE(JsonTableSiblingJoin, JsonTableSiblingJoin) msg); static NullTest * _readNullTest(OUT_TYPE(NullTest, NullTest) msg); static BooleanTest * _readBooleanTest(OUT_TYPE(BooleanTest, BooleanTest) msg); static MergeAction * _readMergeAction(OUT_TYPE(MergeAction, MergeAction) 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 Query * _readQuery(OUT_TYPE(Query, Query) msg); static TypeName * _readTypeName(OUT_TYPE(TypeName, TypeName) msg); static ColumnRef * _readColumnRef(OUT_TYPE(ColumnRef, ColumnRef) msg); static ParamRef * _readParamRef(OUT_TYPE(ParamRef, ParamRef) msg); static A_Expr * _readAExpr(OUT_TYPE(A_Expr, AExpr) msg); static TypeCast * _readTypeCast(OUT_TYPE(TypeCast, TypeCast) msg); static CollateClause * _readCollateClause(OUT_TYPE(CollateClause, CollateClause) msg); static RoleSpec * _readRoleSpec(OUT_TYPE(RoleSpec, RoleSpec) 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 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 RangeTableFunc * _readRangeTableFunc(OUT_TYPE(RangeTableFunc, RangeTableFunc) msg); static RangeTableFuncCol * _readRangeTableFuncCol(OUT_TYPE(RangeTableFuncCol, RangeTableFuncCol) msg); static RangeTableSample * _readRangeTableSample(OUT_TYPE(RangeTableSample, RangeTableSample) msg); static ColumnDef * _readColumnDef(OUT_TYPE(ColumnDef, ColumnDef) msg); static TableLikeClause * _readTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) msg); static IndexElem * _readIndexElem(OUT_TYPE(IndexElem, IndexElem) msg); static DefElem * _readDefElem(OUT_TYPE(DefElem, DefElem) msg); static LockingClause * _readLockingClause(OUT_TYPE(LockingClause, LockingClause) msg); static XmlSerialize * _readXmlSerialize(OUT_TYPE(XmlSerialize, XmlSerialize) 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 SinglePartitionSpec * _readSinglePartitionSpec(OUT_TYPE(SinglePartitionSpec, SinglePartitionSpec) msg); static PartitionCmd * _readPartitionCmd(OUT_TYPE(PartitionCmd, PartitionCmd) msg); static RangeTblEntry * _readRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) msg); static RTEPermissionInfo * _readRTEPermissionInfo(OUT_TYPE(RTEPermissionInfo, RTEPermissionInfo) 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 RowMarkClause * _readRowMarkClause(OUT_TYPE(RowMarkClause, RowMarkClause) 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 CTESearchClause * _readCTESearchClause(OUT_TYPE(CTESearchClause, CTESearchClause) msg); static CTECycleClause * _readCTECycleClause(OUT_TYPE(CTECycleClause, CTECycleClause) msg); static CommonTableExpr * _readCommonTableExpr(OUT_TYPE(CommonTableExpr, CommonTableExpr) msg); static MergeWhenClause * _readMergeWhenClause(OUT_TYPE(MergeWhenClause, MergeWhenClause) msg); static TriggerTransition * _readTriggerTransition(OUT_TYPE(TriggerTransition, TriggerTransition) msg); static JsonOutput * _readJsonOutput(OUT_TYPE(JsonOutput, JsonOutput) msg); static JsonArgument * _readJsonArgument(OUT_TYPE(JsonArgument, JsonArgument) msg); static JsonFuncExpr * _readJsonFuncExpr(OUT_TYPE(JsonFuncExpr, JsonFuncExpr) msg); static JsonTablePathSpec * _readJsonTablePathSpec(OUT_TYPE(JsonTablePathSpec, JsonTablePathSpec) msg); static JsonTable * _readJsonTable(OUT_TYPE(JsonTable, JsonTable) msg); static JsonTableColumn * _readJsonTableColumn(OUT_TYPE(JsonTableColumn, JsonTableColumn) msg); static JsonKeyValue * _readJsonKeyValue(OUT_TYPE(JsonKeyValue, JsonKeyValue) msg); static JsonParseExpr * _readJsonParseExpr(OUT_TYPE(JsonParseExpr, JsonParseExpr) msg); static JsonScalarExpr * _readJsonScalarExpr(OUT_TYPE(JsonScalarExpr, JsonScalarExpr) msg); static JsonSerializeExpr * _readJsonSerializeExpr(OUT_TYPE(JsonSerializeExpr, JsonSerializeExpr) msg); static JsonObjectConstructor * _readJsonObjectConstructor(OUT_TYPE(JsonObjectConstructor, JsonObjectConstructor) msg); static JsonArrayConstructor * _readJsonArrayConstructor(OUT_TYPE(JsonArrayConstructor, JsonArrayConstructor) msg); static JsonArrayQueryConstructor * _readJsonArrayQueryConstructor(OUT_TYPE(JsonArrayQueryConstructor, JsonArrayQueryConstructor) msg); static JsonAggConstructor * _readJsonAggConstructor(OUT_TYPE(JsonAggConstructor, JsonAggConstructor) msg); static JsonObjectAgg * _readJsonObjectAgg(OUT_TYPE(JsonObjectAgg, JsonObjectAgg) msg); static JsonArrayAgg * _readJsonArrayAgg(OUT_TYPE(JsonArrayAgg, JsonArrayAgg) msg); static RawStmt * _readRawStmt(OUT_TYPE(RawStmt, RawStmt) 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 MergeStmt * _readMergeStmt(OUT_TYPE(MergeStmt, MergeStmt) msg); static SelectStmt * _readSelectStmt(OUT_TYPE(SelectStmt, SelectStmt) msg); static SetOperationStmt * _readSetOperationStmt(OUT_TYPE(SetOperationStmt, SetOperationStmt) msg); static ReturnStmt * _readReturnStmt(OUT_TYPE(ReturnStmt, ReturnStmt) msg); static PLAssignStmt * _readPLAssignStmt(OUT_TYPE(PLAssignStmt, PLAssignStmt) msg); static CreateSchemaStmt * _readCreateSchemaStmt(OUT_TYPE(CreateSchemaStmt, CreateSchemaStmt) msg); static AlterTableStmt * _readAlterTableStmt(OUT_TYPE(AlterTableStmt, AlterTableStmt) msg); static ReplicaIdentityStmt * _readReplicaIdentityStmt(OUT_TYPE(ReplicaIdentityStmt, ReplicaIdentityStmt) msg); static AlterTableCmd * _readAlterTableCmd(OUT_TYPE(AlterTableCmd, AlterTableCmd) msg); static AlterCollationStmt * _readAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) msg); static AlterDomainStmt * _readAlterDomainStmt(OUT_TYPE(AlterDomainStmt, AlterDomainStmt) msg); static GrantStmt * _readGrantStmt(OUT_TYPE(GrantStmt, GrantStmt) msg); static ObjectWithArgs * _readObjectWithArgs(OUT_TYPE(ObjectWithArgs, ObjectWithArgs) msg); static AccessPriv * _readAccessPriv(OUT_TYPE(AccessPriv, AccessPriv) msg); static GrantRoleStmt * _readGrantRoleStmt(OUT_TYPE(GrantRoleStmt, GrantRoleStmt) msg); static AlterDefaultPrivilegesStmt * _readAlterDefaultPrivilegesStmt(OUT_TYPE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt) msg); static CopyStmt * _readCopyStmt(OUT_TYPE(CopyStmt, CopyStmt) msg); static VariableSetStmt * _readVariableSetStmt(OUT_TYPE(VariableSetStmt, VariableSetStmt) msg); static VariableShowStmt * _readVariableShowStmt(OUT_TYPE(VariableShowStmt, VariableShowStmt) msg); static CreateStmt * _readCreateStmt(OUT_TYPE(CreateStmt, CreateStmt) msg); static Constraint * _readConstraint(OUT_TYPE(Constraint, Constraint) msg); static CreateTableSpaceStmt * _readCreateTableSpaceStmt(OUT_TYPE(CreateTableSpaceStmt, CreateTableSpaceStmt) msg); static DropTableSpaceStmt * _readDropTableSpaceStmt(OUT_TYPE(DropTableSpaceStmt, DropTableSpaceStmt) msg); static AlterTableSpaceOptionsStmt * _readAlterTableSpaceOptionsStmt(OUT_TYPE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt) msg); static AlterTableMoveAllStmt * _readAlterTableMoveAllStmt(OUT_TYPE(AlterTableMoveAllStmt, AlterTableMoveAllStmt) 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 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 CreateForeignTableStmt * _readCreateForeignTableStmt(OUT_TYPE(CreateForeignTableStmt, CreateForeignTableStmt) 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 ImportForeignSchemaStmt * _readImportForeignSchemaStmt(OUT_TYPE(ImportForeignSchemaStmt, ImportForeignSchemaStmt) msg); static CreatePolicyStmt * _readCreatePolicyStmt(OUT_TYPE(CreatePolicyStmt, CreatePolicyStmt) msg); static AlterPolicyStmt * _readAlterPolicyStmt(OUT_TYPE(AlterPolicyStmt, AlterPolicyStmt) msg); static CreateAmStmt * _readCreateAmStmt(OUT_TYPE(CreateAmStmt, CreateAmStmt) msg); static CreateTrigStmt * _readCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) msg); static CreateEventTrigStmt * _readCreateEventTrigStmt(OUT_TYPE(CreateEventTrigStmt, CreateEventTrigStmt) msg); static AlterEventTrigStmt * _readAlterEventTrigStmt(OUT_TYPE(AlterEventTrigStmt, AlterEventTrigStmt) 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 AlterRoleSetStmt * _readAlterRoleSetStmt(OUT_TYPE(AlterRoleSetStmt, AlterRoleSetStmt) msg); static DropRoleStmt * _readDropRoleStmt(OUT_TYPE(DropRoleStmt, DropRoleStmt) msg); static CreateSeqStmt * _readCreateSeqStmt(OUT_TYPE(CreateSeqStmt, CreateSeqStmt) msg); static AlterSeqStmt * _readAlterSeqStmt(OUT_TYPE(AlterSeqStmt, AlterSeqStmt) msg); static DefineStmt * _readDefineStmt(OUT_TYPE(DefineStmt, DefineStmt) msg); static CreateDomainStmt * _readCreateDomainStmt(OUT_TYPE(CreateDomainStmt, CreateDomainStmt) msg); static CreateOpClassStmt * _readCreateOpClassStmt(OUT_TYPE(CreateOpClassStmt, CreateOpClassStmt) msg); static CreateOpClassItem * _readCreateOpClassItem(OUT_TYPE(CreateOpClassItem, CreateOpClassItem) msg); static CreateOpFamilyStmt * _readCreateOpFamilyStmt(OUT_TYPE(CreateOpFamilyStmt, CreateOpFamilyStmt) msg); static AlterOpFamilyStmt * _readAlterOpFamilyStmt(OUT_TYPE(AlterOpFamilyStmt, AlterOpFamilyStmt) 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 SecLabelStmt * _readSecLabelStmt(OUT_TYPE(SecLabelStmt, SecLabelStmt) msg); static DeclareCursorStmt * _readDeclareCursorStmt(OUT_TYPE(DeclareCursorStmt, DeclareCursorStmt) msg); static ClosePortalStmt * _readClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) msg); static FetchStmt * _readFetchStmt(OUT_TYPE(FetchStmt, FetchStmt) msg); static IndexStmt * _readIndexStmt(OUT_TYPE(IndexStmt, IndexStmt) msg); static CreateStatsStmt * _readCreateStatsStmt(OUT_TYPE(CreateStatsStmt, CreateStatsStmt) msg); static StatsElem * _readStatsElem(OUT_TYPE(StatsElem, StatsElem) msg); static AlterStatsStmt * _readAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) msg); static CreateFunctionStmt * _readCreateFunctionStmt(OUT_TYPE(CreateFunctionStmt, CreateFunctionStmt) msg); static FunctionParameter * _readFunctionParameter(OUT_TYPE(FunctionParameter, FunctionParameter) msg); static AlterFunctionStmt * _readAlterFunctionStmt(OUT_TYPE(AlterFunctionStmt, AlterFunctionStmt) msg); static DoStmt * _readDoStmt(OUT_TYPE(DoStmt, DoStmt) msg); static InlineCodeBlock * _readInlineCodeBlock(OUT_TYPE(InlineCodeBlock, InlineCodeBlock) msg); static CallStmt * _readCallStmt(OUT_TYPE(CallStmt, CallStmt) msg); static CallContext * _readCallContext(OUT_TYPE(CallContext, CallContext) msg); static RenameStmt * _readRenameStmt(OUT_TYPE(RenameStmt, RenameStmt) 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 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 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 ViewStmt * _readViewStmt(OUT_TYPE(ViewStmt, ViewStmt) msg); static LoadStmt * _readLoadStmt(OUT_TYPE(LoadStmt, LoadStmt) msg); static CreatedbStmt * _readCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) msg); static AlterDatabaseStmt * _readAlterDatabaseStmt(OUT_TYPE(AlterDatabaseStmt, AlterDatabaseStmt) msg); static AlterDatabaseRefreshCollStmt * _readAlterDatabaseRefreshCollStmt(OUT_TYPE(AlterDatabaseRefreshCollStmt, AlterDatabaseRefreshCollStmt) msg); static AlterDatabaseSetStmt * _readAlterDatabaseSetStmt(OUT_TYPE(AlterDatabaseSetStmt, AlterDatabaseSetStmt) msg); static DropdbStmt * _readDropdbStmt(OUT_TYPE(DropdbStmt, DropdbStmt) msg); static AlterSystemStmt * _readAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) msg); static ClusterStmt * _readClusterStmt(OUT_TYPE(ClusterStmt, ClusterStmt) msg); static VacuumStmt * _readVacuumStmt(OUT_TYPE(VacuumStmt, VacuumStmt) msg); static VacuumRelation * _readVacuumRelation(OUT_TYPE(VacuumRelation, VacuumRelation) msg); static ExplainStmt * _readExplainStmt(OUT_TYPE(ExplainStmt, ExplainStmt) msg); static CreateTableAsStmt * _readCreateTableAsStmt(OUT_TYPE(CreateTableAsStmt, CreateTableAsStmt) msg); static RefreshMatViewStmt * _readRefreshMatViewStmt(OUT_TYPE(RefreshMatViewStmt, RefreshMatViewStmt) msg); static CheckPointStmt * _readCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) msg); static DiscardStmt * _readDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) 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 CreateConversionStmt * _readCreateConversionStmt(OUT_TYPE(CreateConversionStmt, CreateConversionStmt) msg); static CreateCastStmt * _readCreateCastStmt(OUT_TYPE(CreateCastStmt, CreateCastStmt) msg); static CreateTransformStmt * _readCreateTransformStmt(OUT_TYPE(CreateTransformStmt, CreateTransformStmt) 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 DropOwnedStmt * _readDropOwnedStmt(OUT_TYPE(DropOwnedStmt, DropOwnedStmt) msg); static ReassignOwnedStmt * _readReassignOwnedStmt(OUT_TYPE(ReassignOwnedStmt, ReassignOwnedStmt) msg); static AlterTSDictionaryStmt * _readAlterTSDictionaryStmt(OUT_TYPE(AlterTSDictionaryStmt, AlterTSDictionaryStmt) msg); static AlterTSConfigurationStmt * _readAlterTSConfigurationStmt(OUT_TYPE(AlterTSConfigurationStmt, AlterTSConfigurationStmt) msg); static PublicationTable * _readPublicationTable(OUT_TYPE(PublicationTable, PublicationTable) msg); static PublicationObjSpec * _readPublicationObjSpec(OUT_TYPE(PublicationObjSpec, PublicationObjSpec) 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 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_ENUM_FIELD(TableFuncType, functype, functype, functype); 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_LIST_FIELD(colvalexprs, colvalexprs, colvalexprs); READ_LIST_FIELD(passingvalexprs, passingvalexprs, passingvalexprs); READ_BITMAPSET_FIELD(notnulls, notnulls, notnulls); READ_NODE_PTR_FIELD(plan, plan, plan); READ_INT_FIELD(ordinalitycol, ordinalitycol, ordinalitycol); READ_INT_FIELD(location, location, location); 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 Var * _readVar(OUT_TYPE(Var, Var) msg) { Var *node = makeNode(Var); READ_INT_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_BITMAPSET_FIELD(varnullingrels, varnullingrels, varnullingrels); READ_UINT_FIELD(varlevelsup, varlevelsup, varlevelsup); 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_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_ABSTRACT_PTR_FIELD(aggfilter, aggfilter, aggfilter, Expr*); 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(aggno, aggno, aggno); READ_INT_FIELD(aggtransno, aggtransno, aggtransno); 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_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_ABSTRACT_PTR_FIELD(aggfilter, aggfilter, aggfilter, Expr*); READ_LIST_FIELD(run_condition, runCondition, runCondition); 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 WindowFuncRunCondition * _readWindowFuncRunCondition(OUT_TYPE(WindowFuncRunCondition, WindowFuncRunCondition) msg) { WindowFuncRunCondition *node = makeNode(WindowFuncRunCondition); READ_UINT_FIELD(opno, opno, opno); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_BOOL_FIELD(wfunc_left, wfunc_left, wfunc_left); READ_ABSTRACT_PTR_FIELD(arg, arg, arg, Expr*); return node; } static MergeSupportFunc * _readMergeSupportFunc(OUT_TYPE(MergeSupportFunc, MergeSupportFunc) msg) { MergeSupportFunc *node = makeNode(MergeSupportFunc); READ_UINT_FIELD(msftype, msftype, msftype); READ_UINT_FIELD(msfcollid, msfcollid, msfcollid); 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_UINT_FIELD(refrestype, refrestype, refrestype); 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_ABSTRACT_PTR_FIELD(refexpr, refexpr, refexpr, Expr*); READ_ABSTRACT_PTR_FIELD(refassgnexpr, refassgnexpr, refassgnexpr, Expr*); 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_ABSTRACT_PTR_FIELD(arg, arg, arg, Expr*); 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(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(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(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_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_ABSTRACT_PTR_FIELD(arg, arg, arg, Expr*); 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_ABSTRACT_PTR_FIELD(arg, arg, arg, Expr*); 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_ABSTRACT_PTR_FIELD(arg, arg, arg, Expr*); 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_ABSTRACT_PTR_FIELD(arg, arg, arg, Expr*); 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_ABSTRACT_PTR_FIELD(arg, arg, arg, Expr*); READ_ABSTRACT_PTR_FIELD(elemexpr, elemexpr, elemexpr, Expr*); 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_ABSTRACT_PTR_FIELD(arg, arg, arg, Expr*); 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_ABSTRACT_PTR_FIELD(arg, arg, arg, Expr*); 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_ABSTRACT_PTR_FIELD(arg, arg, arg, Expr*); READ_LIST_FIELD(args, args, args); READ_ABSTRACT_PTR_FIELD(defresult, defresult, defresult, Expr*); READ_INT_FIELD(location, location, location); return node; } static CaseWhen * _readCaseWhen(OUT_TYPE(CaseWhen, CaseWhen) msg) { CaseWhen *node = makeNode(CaseWhen); READ_ABSTRACT_PTR_FIELD(expr, expr, expr, Expr*); READ_ABSTRACT_PTR_FIELD(result, result, result, Expr*); 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_BOOL_FIELD(indent, indent, indent); READ_UINT_FIELD(type, type, type); READ_INT_FIELD(typmod, typmod, typmod); READ_INT_FIELD(location, location, location); return node; } static JsonFormat * _readJsonFormat(OUT_TYPE(JsonFormat, JsonFormat) msg) { JsonFormat *node = makeNode(JsonFormat); READ_ENUM_FIELD(JsonFormatType, format_type, format_type, format_type); READ_ENUM_FIELD(JsonEncoding, encoding, encoding, encoding); READ_INT_FIELD(location, location, location); return node; } static JsonReturning * _readJsonReturning(OUT_TYPE(JsonReturning, JsonReturning) msg) { JsonReturning *node = makeNode(JsonReturning); READ_SPECIFIC_NODE_PTR_FIELD(JsonFormat, json_format, format, format, format); READ_UINT_FIELD(typid, typid, typid); READ_INT_FIELD(typmod, typmod, typmod); return node; } static JsonValueExpr * _readJsonValueExpr(OUT_TYPE(JsonValueExpr, JsonValueExpr) msg) { JsonValueExpr *node = makeNode(JsonValueExpr); READ_ABSTRACT_PTR_FIELD(raw_expr, raw_expr, raw_expr, Expr*); READ_ABSTRACT_PTR_FIELD(formatted_expr, formatted_expr, formatted_expr, Expr*); READ_SPECIFIC_NODE_PTR_FIELD(JsonFormat, json_format, format, format, format); return node; } static JsonConstructorExpr * _readJsonConstructorExpr(OUT_TYPE(JsonConstructorExpr, JsonConstructorExpr) msg) { JsonConstructorExpr *node = makeNode(JsonConstructorExpr); READ_ENUM_FIELD(JsonConstructorType, type, type, type); READ_LIST_FIELD(args, args, args); READ_ABSTRACT_PTR_FIELD(func, func, func, Expr*); READ_ABSTRACT_PTR_FIELD(coercion, coercion, coercion, Expr*); READ_SPECIFIC_NODE_PTR_FIELD(JsonReturning, json_returning, returning, returning, returning); READ_BOOL_FIELD(absent_on_null, absent_on_null, absent_on_null); READ_BOOL_FIELD(unique, unique, unique); READ_INT_FIELD(location, location, location); return node; } static JsonIsPredicate * _readJsonIsPredicate(OUT_TYPE(JsonIsPredicate, JsonIsPredicate) msg) { JsonIsPredicate *node = makeNode(JsonIsPredicate); READ_NODE_PTR_FIELD(expr, expr, expr); READ_SPECIFIC_NODE_PTR_FIELD(JsonFormat, json_format, format, format, format); READ_ENUM_FIELD(JsonValueType, item_type, item_type, item_type); READ_BOOL_FIELD(unique_keys, unique_keys, unique_keys); READ_INT_FIELD(location, location, location); return node; } static JsonBehavior * _readJsonBehavior(OUT_TYPE(JsonBehavior, JsonBehavior) msg) { JsonBehavior *node = makeNode(JsonBehavior); READ_ENUM_FIELD(JsonBehaviorType, btype, btype, btype); READ_NODE_PTR_FIELD(expr, expr, expr); READ_BOOL_FIELD(coerce, coerce, coerce); READ_INT_FIELD(location, location, location); return node; } static JsonExpr * _readJsonExpr(OUT_TYPE(JsonExpr, JsonExpr) msg) { JsonExpr *node = makeNode(JsonExpr); READ_ENUM_FIELD(JsonExprOp, op, op, op); READ_STRING_FIELD(column_name, column_name, column_name); READ_NODE_PTR_FIELD(formatted_expr, formatted_expr, formatted_expr); READ_SPECIFIC_NODE_PTR_FIELD(JsonFormat, json_format, format, format, format); READ_NODE_PTR_FIELD(path_spec, path_spec, path_spec); READ_SPECIFIC_NODE_PTR_FIELD(JsonReturning, json_returning, returning, returning, returning); READ_LIST_FIELD(passing_names, passing_names, passing_names); READ_LIST_FIELD(passing_values, passing_values, passing_values); READ_SPECIFIC_NODE_PTR_FIELD(JsonBehavior, json_behavior, on_empty, on_empty, on_empty); READ_SPECIFIC_NODE_PTR_FIELD(JsonBehavior, json_behavior, on_error, on_error, on_error); READ_BOOL_FIELD(use_io_coercion, use_io_coercion, use_io_coercion); READ_BOOL_FIELD(use_json_coercion, use_json_coercion, use_json_coercion); READ_ENUM_FIELD(JsonWrapper, wrapper, wrapper, wrapper); READ_BOOL_FIELD(omit_quotes, omit_quotes, omit_quotes); READ_UINT_FIELD(collation, collation, collation); READ_INT_FIELD(location, location, location); return node; } static JsonTablePath * _readJsonTablePath(OUT_TYPE(JsonTablePath, JsonTablePath) msg) { JsonTablePath *node = makeNode(JsonTablePath); READ_STRING_FIELD(name, name, name); return node; } static JsonTablePathScan * _readJsonTablePathScan(OUT_TYPE(JsonTablePathScan, JsonTablePathScan) msg) { JsonTablePathScan *node = makeNode(JsonTablePathScan); READ_SPECIFIC_NODE_PTR_FIELD(JsonTablePath, json_table_path, path, path, path); READ_BOOL_FIELD(error_on_error, errorOnError, errorOnError); READ_ABSTRACT_PTR_FIELD(child, child, child, JsonTablePlan*); READ_INT_FIELD(col_min, colMin, colMin); READ_INT_FIELD(col_max, colMax, colMax); return node; } static JsonTableSiblingJoin * _readJsonTableSiblingJoin(OUT_TYPE(JsonTableSiblingJoin, JsonTableSiblingJoin) msg) { JsonTableSiblingJoin *node = makeNode(JsonTableSiblingJoin); READ_ABSTRACT_PTR_FIELD(lplan, lplan, lplan, JsonTablePlan*); READ_ABSTRACT_PTR_FIELD(rplan, rplan, rplan, JsonTablePlan*); return node; } static NullTest * _readNullTest(OUT_TYPE(NullTest, NullTest) msg) { NullTest *node = makeNode(NullTest); READ_ABSTRACT_PTR_FIELD(arg, arg, arg, Expr*); 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_ABSTRACT_PTR_FIELD(arg, arg, arg, Expr*); READ_ENUM_FIELD(BoolTestType, booltesttype, booltesttype, booltesttype); READ_INT_FIELD(location, location, location); return node; } static MergeAction * _readMergeAction(OUT_TYPE(MergeAction, MergeAction) msg) { MergeAction *node = makeNode(MergeAction); READ_ENUM_FIELD(MergeMatchKind, match_kind, matchKind, matchKind); READ_ENUM_FIELD(CmdType, command_type, commandType, commandType); READ_ENUM_FIELD(OverridingKind, override, override, override); READ_NODE_PTR_FIELD(qual, qual, qual); READ_LIST_FIELD(target_list, targetList, targetList); READ_LIST_FIELD(update_colnos, updateColnos, updateColnos); return node; } static CoerceToDomain * _readCoerceToDomain(OUT_TYPE(CoerceToDomain, CoerceToDomain) msg) { CoerceToDomain *node = makeNode(CoerceToDomain); READ_ABSTRACT_PTR_FIELD(arg, arg, arg, Expr*); 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_ABSTRACT_PTR_FIELD(expr, 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_SPECIFIC_NODE_PTR_FIELD(Alias, alias, join_using_alias, join_using_alias, join_using_alias); 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 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_BOOL_FIELD(is_return, isReturn, isReturn); READ_LIST_FIELD(cte_list, cteList, cteList); READ_LIST_FIELD(rtable, rtable, rtable); READ_LIST_FIELD(rteperminfos, rteperminfos, rteperminfos); READ_SPECIFIC_NODE_PTR_FIELD(FromExpr, from_expr, jointree, jointree, jointree); READ_LIST_FIELD(merge_action_list, mergeActionList, mergeActionList); READ_INT_FIELD(merge_target_relation, mergeTargetRelation, mergeTargetRelation); READ_NODE_PTR_FIELD(merge_join_condition, mergeJoinCondition, mergeJoinCondition); 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_BOOL_FIELD(group_distinct, groupDistinct, groupDistinct); 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 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 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_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 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 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 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_SPECIFIC_NODE_PTR_FIELD(WindowDef, window_def, over, over, over); 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_ENUM_FIELD(CoercionForm, funcformat, funcformat, funcformat); 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 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 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 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 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_STRING_FIELD(compression, compression, compression); 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_STRING_FIELD(storage_name, storage_name, storage_name); 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 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 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 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 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 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_BOOL_FIELD(indent, indent, indent); READ_INT_FIELD(location, location, location); 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_ENUM_FIELD(PartitionStrategy, 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 SinglePartitionSpec * _readSinglePartitionSpec(OUT_TYPE(SinglePartitionSpec, SinglePartitionSpec) msg) { SinglePartitionSpec *node = makeNode(SinglePartitionSpec); 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); READ_BOOL_FIELD(concurrent, concurrent, concurrent); return node; } static RangeTblEntry * _readRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) msg) { RangeTblEntry *node = makeNode(RangeTblEntry); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, eref, eref, eref); READ_ENUM_FIELD(RTEKind, rtekind, rtekind, rtekind); READ_UINT_FIELD(relid, relid, relid); READ_BOOL_FIELD(inh, inh, inh); READ_CHAR_FIELD(relkind, relkind, relkind); READ_INT_FIELD(rellockmode, rellockmode, rellockmode); READ_UINT_FIELD(perminfoindex, perminfoindex, perminfoindex); 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_SPECIFIC_NODE_PTR_FIELD(Alias, alias, join_using_alias, join_using_alias, join_using_alias); 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_BOOL_FIELD(lateral, lateral, lateral); READ_BOOL_FIELD(in_from_cl, inFromCl, inFromCl); READ_LIST_FIELD(security_quals, securityQuals, securityQuals); return node; } static RTEPermissionInfo * _readRTEPermissionInfo(OUT_TYPE(RTEPermissionInfo, RTEPermissionInfo) msg) { RTEPermissionInfo *node = makeNode(RTEPermissionInfo); READ_UINT_FIELD(relid, relid, relid); READ_BOOL_FIELD(inh, inh, inh); READ_UINT64_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); 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_ABSTRACT_PTR_FIELD(repeatable, repeatable, repeatable, Expr*); 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 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 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 CTESearchClause * _readCTESearchClause(OUT_TYPE(CTESearchClause, CTESearchClause) msg) { CTESearchClause *node = makeNode(CTESearchClause); READ_LIST_FIELD(search_col_list, search_col_list, search_col_list); READ_BOOL_FIELD(search_breadth_first, search_breadth_first, search_breadth_first); READ_STRING_FIELD(search_seq_column, search_seq_column, search_seq_column); READ_INT_FIELD(location, location, location); return node; } static CTECycleClause * _readCTECycleClause(OUT_TYPE(CTECycleClause, CTECycleClause) msg) { CTECycleClause *node = makeNode(CTECycleClause); READ_LIST_FIELD(cycle_col_list, cycle_col_list, cycle_col_list); READ_STRING_FIELD(cycle_mark_column, cycle_mark_column, cycle_mark_column); READ_NODE_PTR_FIELD(cycle_mark_value, cycle_mark_value, cycle_mark_value); READ_NODE_PTR_FIELD(cycle_mark_default, cycle_mark_default, cycle_mark_default); READ_STRING_FIELD(cycle_path_column, cycle_path_column, cycle_path_column); READ_INT_FIELD(location, location, location); READ_UINT_FIELD(cycle_mark_type, cycle_mark_type, cycle_mark_type); READ_INT_FIELD(cycle_mark_typmod, cycle_mark_typmod, cycle_mark_typmod); READ_UINT_FIELD(cycle_mark_collation, cycle_mark_collation, cycle_mark_collation); READ_UINT_FIELD(cycle_mark_neop, cycle_mark_neop, cycle_mark_neop); 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_SPECIFIC_NODE_PTR_FIELD(CTESearchClause, ctesearch_clause, search_clause, search_clause, search_clause); READ_SPECIFIC_NODE_PTR_FIELD(CTECycleClause, ctecycle_clause, cycle_clause, cycle_clause, cycle_clause); 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 MergeWhenClause * _readMergeWhenClause(OUT_TYPE(MergeWhenClause, MergeWhenClause) msg) { MergeWhenClause *node = makeNode(MergeWhenClause); READ_ENUM_FIELD(MergeMatchKind, match_kind, matchKind, matchKind); READ_ENUM_FIELD(CmdType, command_type, commandType, commandType); READ_ENUM_FIELD(OverridingKind, override, override, override); READ_NODE_PTR_FIELD(condition, condition, condition); READ_LIST_FIELD(target_list, targetList, targetList); READ_LIST_FIELD(values, values, values); 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 JsonOutput * _readJsonOutput(OUT_TYPE(JsonOutput, JsonOutput) msg) { JsonOutput *node = makeNode(JsonOutput); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); READ_SPECIFIC_NODE_PTR_FIELD(JsonReturning, json_returning, returning, returning, returning); return node; } static JsonArgument * _readJsonArgument(OUT_TYPE(JsonArgument, JsonArgument) msg) { JsonArgument *node = makeNode(JsonArgument); READ_SPECIFIC_NODE_PTR_FIELD(JsonValueExpr, json_value_expr, val, val, val); READ_STRING_FIELD(name, name, name); return node; } static JsonFuncExpr * _readJsonFuncExpr(OUT_TYPE(JsonFuncExpr, JsonFuncExpr) msg) { JsonFuncExpr *node = makeNode(JsonFuncExpr); READ_ENUM_FIELD(JsonExprOp, op, op, op); READ_STRING_FIELD(column_name, column_name, column_name); READ_SPECIFIC_NODE_PTR_FIELD(JsonValueExpr, json_value_expr, context_item, context_item, context_item); READ_NODE_PTR_FIELD(pathspec, pathspec, pathspec); READ_LIST_FIELD(passing, passing, passing); READ_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); READ_SPECIFIC_NODE_PTR_FIELD(JsonBehavior, json_behavior, on_empty, on_empty, on_empty); READ_SPECIFIC_NODE_PTR_FIELD(JsonBehavior, json_behavior, on_error, on_error, on_error); READ_ENUM_FIELD(JsonWrapper, wrapper, wrapper, wrapper); READ_ENUM_FIELD(JsonQuotes, quotes, quotes, quotes); READ_INT_FIELD(location, location, location); return node; } static JsonTablePathSpec * _readJsonTablePathSpec(OUT_TYPE(JsonTablePathSpec, JsonTablePathSpec) msg) { JsonTablePathSpec *node = makeNode(JsonTablePathSpec); READ_NODE_PTR_FIELD(string, string, string); READ_STRING_FIELD(name, name, name); READ_INT_FIELD(name_location, name_location, name_location); READ_INT_FIELD(location, location, location); return node; } static JsonTable * _readJsonTable(OUT_TYPE(JsonTable, JsonTable) msg) { JsonTable *node = makeNode(JsonTable); READ_SPECIFIC_NODE_PTR_FIELD(JsonValueExpr, json_value_expr, context_item, context_item, context_item); READ_SPECIFIC_NODE_PTR_FIELD(JsonTablePathSpec, json_table_path_spec, pathspec, pathspec, pathspec); READ_LIST_FIELD(passing, passing, passing); READ_LIST_FIELD(columns, columns, columns); READ_SPECIFIC_NODE_PTR_FIELD(JsonBehavior, json_behavior, on_error, on_error, on_error); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); READ_BOOL_FIELD(lateral, lateral, lateral); READ_INT_FIELD(location, location, location); return node; } static JsonTableColumn * _readJsonTableColumn(OUT_TYPE(JsonTableColumn, JsonTableColumn) msg) { JsonTableColumn *node = makeNode(JsonTableColumn); READ_ENUM_FIELD(JsonTableColumnType, coltype, coltype, coltype); READ_STRING_FIELD(name, name, name); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); READ_SPECIFIC_NODE_PTR_FIELD(JsonTablePathSpec, json_table_path_spec, pathspec, pathspec, pathspec); READ_SPECIFIC_NODE_PTR_FIELD(JsonFormat, json_format, format, format, format); READ_ENUM_FIELD(JsonWrapper, wrapper, wrapper, wrapper); READ_ENUM_FIELD(JsonQuotes, quotes, quotes, quotes); READ_LIST_FIELD(columns, columns, columns); READ_SPECIFIC_NODE_PTR_FIELD(JsonBehavior, json_behavior, on_empty, on_empty, on_empty); READ_SPECIFIC_NODE_PTR_FIELD(JsonBehavior, json_behavior, on_error, on_error, on_error); READ_INT_FIELD(location, location, location); return node; } static JsonKeyValue * _readJsonKeyValue(OUT_TYPE(JsonKeyValue, JsonKeyValue) msg) { JsonKeyValue *node = makeNode(JsonKeyValue); READ_ABSTRACT_PTR_FIELD(key, key, key, Expr*); READ_SPECIFIC_NODE_PTR_FIELD(JsonValueExpr, json_value_expr, value, value, value); return node; } static JsonParseExpr * _readJsonParseExpr(OUT_TYPE(JsonParseExpr, JsonParseExpr) msg) { JsonParseExpr *node = makeNode(JsonParseExpr); READ_SPECIFIC_NODE_PTR_FIELD(JsonValueExpr, json_value_expr, expr, expr, expr); READ_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); READ_BOOL_FIELD(unique_keys, unique_keys, unique_keys); READ_INT_FIELD(location, location, location); return node; } static JsonScalarExpr * _readJsonScalarExpr(OUT_TYPE(JsonScalarExpr, JsonScalarExpr) msg) { JsonScalarExpr *node = makeNode(JsonScalarExpr); READ_ABSTRACT_PTR_FIELD(expr, expr, expr, Expr*); READ_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); READ_INT_FIELD(location, location, location); return node; } static JsonSerializeExpr * _readJsonSerializeExpr(OUT_TYPE(JsonSerializeExpr, JsonSerializeExpr) msg) { JsonSerializeExpr *node = makeNode(JsonSerializeExpr); READ_SPECIFIC_NODE_PTR_FIELD(JsonValueExpr, json_value_expr, expr, expr, expr); READ_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); READ_INT_FIELD(location, location, location); return node; } static JsonObjectConstructor * _readJsonObjectConstructor(OUT_TYPE(JsonObjectConstructor, JsonObjectConstructor) msg) { JsonObjectConstructor *node = makeNode(JsonObjectConstructor); READ_LIST_FIELD(exprs, exprs, exprs); READ_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); READ_BOOL_FIELD(absent_on_null, absent_on_null, absent_on_null); READ_BOOL_FIELD(unique, unique, unique); READ_INT_FIELD(location, location, location); return node; } static JsonArrayConstructor * _readJsonArrayConstructor(OUT_TYPE(JsonArrayConstructor, JsonArrayConstructor) msg) { JsonArrayConstructor *node = makeNode(JsonArrayConstructor); READ_LIST_FIELD(exprs, exprs, exprs); READ_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); READ_BOOL_FIELD(absent_on_null, absent_on_null, absent_on_null); READ_INT_FIELD(location, location, location); return node; } static JsonArrayQueryConstructor * _readJsonArrayQueryConstructor(OUT_TYPE(JsonArrayQueryConstructor, JsonArrayQueryConstructor) msg) { JsonArrayQueryConstructor *node = makeNode(JsonArrayQueryConstructor); READ_NODE_PTR_FIELD(query, query, query); READ_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); READ_SPECIFIC_NODE_PTR_FIELD(JsonFormat, json_format, format, format, format); READ_BOOL_FIELD(absent_on_null, absent_on_null, absent_on_null); READ_INT_FIELD(location, location, location); return node; } static JsonAggConstructor * _readJsonAggConstructor(OUT_TYPE(JsonAggConstructor, JsonAggConstructor) msg) { JsonAggConstructor *node = makeNode(JsonAggConstructor); READ_SPECIFIC_NODE_PTR_FIELD(JsonOutput, json_output, output, output, output); READ_NODE_PTR_FIELD(agg_filter, agg_filter, agg_filter); READ_LIST_FIELD(agg_order, agg_order, agg_order); READ_SPECIFIC_NODE_PTR_FIELD(WindowDef, window_def, over, over, over); READ_INT_FIELD(location, location, location); return node; } static JsonObjectAgg * _readJsonObjectAgg(OUT_TYPE(JsonObjectAgg, JsonObjectAgg) msg) { JsonObjectAgg *node = makeNode(JsonObjectAgg); READ_SPECIFIC_NODE_PTR_FIELD(JsonAggConstructor, json_agg_constructor, constructor, constructor, constructor); READ_SPECIFIC_NODE_PTR_FIELD(JsonKeyValue, json_key_value, arg, arg, arg); READ_BOOL_FIELD(absent_on_null, absent_on_null, absent_on_null); READ_BOOL_FIELD(unique, unique, unique); return node; } static JsonArrayAgg * _readJsonArrayAgg(OUT_TYPE(JsonArrayAgg, JsonArrayAgg) msg) { JsonArrayAgg *node = makeNode(JsonArrayAgg); READ_SPECIFIC_NODE_PTR_FIELD(JsonAggConstructor, json_agg_constructor, constructor, constructor, constructor); READ_SPECIFIC_NODE_PTR_FIELD(JsonValueExpr, json_value_expr, arg, arg, arg); READ_BOOL_FIELD(absent_on_null, absent_on_null, absent_on_null); 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 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 MergeStmt * _readMergeStmt(OUT_TYPE(MergeStmt, MergeStmt) msg) { MergeStmt *node = makeNode(MergeStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_NODE_PTR_FIELD(source_relation, sourceRelation, sourceRelation); READ_NODE_PTR_FIELD(join_condition, joinCondition, joinCondition); READ_LIST_FIELD(merge_when_clauses, mergeWhenClauses, mergeWhenClauses); 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_BOOL_FIELD(group_distinct, groupDistinct, groupDistinct); 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 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 ReturnStmt * _readReturnStmt(OUT_TYPE(ReturnStmt, ReturnStmt) msg) { ReturnStmt *node = makeNode(ReturnStmt); READ_NODE_PTR_FIELD(returnval, returnval, returnval); return node; } static PLAssignStmt * _readPLAssignStmt(OUT_TYPE(PLAssignStmt, PLAssignStmt) msg) { PLAssignStmt *node = makeNode(PLAssignStmt); READ_STRING_FIELD(name, name, name); READ_LIST_FIELD(indirection, indirection, indirection); READ_INT_FIELD(nnames, nnames, nnames); READ_SPECIFIC_NODE_PTR_FIELD(SelectStmt, select_stmt, val, val, val); READ_INT_FIELD(location, location, location); 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 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, objtype, objtype, objtype); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); 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 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); READ_BOOL_FIELD(recurse, recurse, recurse); return node; } static AlterCollationStmt * _readAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) msg) { AlterCollationStmt *node = makeNode(AlterCollationStmt); READ_LIST_FIELD(collname, collname, collname); 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 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_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, grantor, grantor, grantor); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); 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_LIST_FIELD(objfuncargs, objfuncargs, objfuncargs); 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 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_LIST_FIELD(opt, opt, 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 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 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 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 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_BOOL_FIELD(skip_validation, skip_validation, skip_validation); READ_BOOL_FIELD(initially_valid, initially_valid, initially_valid); 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_INT_FIELD(inhcount, inhcount, inhcount); READ_BOOL_FIELD(nulls_not_distinct, nulls_not_distinct, nulls_not_distinct); 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(fk_del_set_cols, fk_del_set_cols, fk_del_set_cols); READ_LIST_FIELD(old_conpfeqop, old_conpfeqop, old_conpfeqop); READ_UINT_FIELD(old_pktable_oid, old_pktable_oid, old_pktable_oid); READ_INT_FIELD(location, location, location); 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 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 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 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 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 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 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 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 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 CreateTrigStmt * _readCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) msg) { CreateTrigStmt *node = makeNode(CreateTrigStmt); READ_BOOL_FIELD(replace, replace, replace); READ_BOOL_FIELD(isconstraint, isconstraint, isconstraint); 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 ClosePortalStmt * _readClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) msg) { ClosePortalStmt *node = makeNode(ClosePortalStmt); READ_STRING_FIELD(portalname, portalname, portalname); 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_number, oldNumber, oldNumber); READ_UINT_FIELD(old_create_subid, oldCreateSubid, oldCreateSubid); READ_UINT_FIELD(old_first_relfilelocator_subid, oldFirstRelfilelocatorSubid, oldFirstRelfilelocatorSubid); READ_BOOL_FIELD(unique, unique, unique); READ_BOOL_FIELD(nulls_not_distinct, nulls_not_distinct, nulls_not_distinct); 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 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(transformed, transformed, transformed); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); return node; } static StatsElem * _readStatsElem(OUT_TYPE(StatsElem, StatsElem) msg) { StatsElem *node = makeNode(StatsElem); READ_STRING_FIELD(name, name, name); READ_NODE_PTR_FIELD(expr, expr, expr); return node; } static AlterStatsStmt * _readAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) msg) { AlterStatsStmt *node = makeNode(AlterStatsStmt); READ_LIST_FIELD(defnames, defnames, defnames); READ_NODE_PTR_FIELD(stxstattarget, stxstattarget, stxstattarget); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); 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); READ_NODE_PTR_FIELD(sql_body, sql_body, sql_body); 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 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 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 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); READ_LIST_FIELD(outargs, outargs, outargs); return node; } static CallContext * _readCallContext(OUT_TYPE(CallContext, CallContext) msg) { CallContext *node = makeNode(CallContext); READ_BOOL_FIELD(atomic, atomic, atomic); 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 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_SPECIFIC_NODE_PTR_FIELD(String, string, 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 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); READ_INT_FIELD(location, location, location); 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 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 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 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 AlterDatabaseRefreshCollStmt * _readAlterDatabaseRefreshCollStmt(OUT_TYPE(AlterDatabaseRefreshCollStmt, AlterDatabaseRefreshCollStmt) msg) { AlterDatabaseRefreshCollStmt *node = makeNode(AlterDatabaseRefreshCollStmt); READ_STRING_FIELD(dbname, dbname, dbname); 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 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 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 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_LIST_FIELD(params, params, params); 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 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 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, objtype, objtype, objtype); 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 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 CheckPointStmt * _readCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) msg) { CheckPointStmt *node = makeNode(CheckPointStmt); return node; } static DiscardStmt * _readDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) msg) { DiscardStmt *node = makeNode(DiscardStmt); READ_ENUM_FIELD(DiscardMode, target, target, target); 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_LIST_FIELD(params, params, params); 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 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 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); READ_BOOL_FIELD(isall, isall, isall); READ_INT_FIELD(location, location, location); 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 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 PublicationTable * _readPublicationTable(OUT_TYPE(PublicationTable, PublicationTable) msg) { PublicationTable *node = makeNode(PublicationTable); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); READ_LIST_FIELD(columns, columns, columns); return node; } static PublicationObjSpec * _readPublicationObjSpec(OUT_TYPE(PublicationObjSpec, PublicationObjSpec) msg) { PublicationObjSpec *node = makeNode(PublicationObjSpec); READ_ENUM_FIELD(PublicationObjSpecType, pubobjtype, pubobjtype, pubobjtype); READ_STRING_FIELD(name, name, name); READ_SPECIFIC_NODE_PTR_FIELD(PublicationTable, publication_table, pubtable, pubtable, pubtable); READ_INT_FIELD(location, location, location); 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(pubobjects, pubobjects, pubobjects); 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(pubobjects, pubobjects, pubobjects); READ_BOOL_FIELD(for_all_tables, for_all_tables, for_all_tables); READ_ENUM_FIELD(AlterPublicationAction, action, action, action); 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; } libpg_query-17-6.1.0/src/pg_query.c000066400000000000000000000044201477334012600170620ustar00rootroot00000000000000#include "pg_query.h" #include "pg_query_internal.h" #include #include #include #ifdef HAVE_PTHREAD #include #endif #include const char* progname = "pg_query"; __thread sig_atomic_t pg_query_initialized = 0; #ifdef HAVE_PTHREAD static pthread_key_t pg_query_thread_exit_key; static void pg_query_thread_exit(void *key); #endif void pg_query_init(void) { if (pg_query_initialized != 0) return; pg_query_initialized = 1; MemoryContextInit(); SetDatabaseEncoding(PG_UTF8); #ifdef HAVE_PTHREAD pthread_key_create(&pg_query_thread_exit_key, pg_query_thread_exit); pthread_setspecific(pg_query_thread_exit_key, TopMemoryContext); #endif } void pg_query_free_top_memory_context(MemoryContext context) { Assert(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; } #ifdef HAVE_PTHREAD static void pg_query_thread_exit(void *key) { MemoryContext context = (MemoryContext) key; pg_query_free_top_memory_context(context); } #endif 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-17-6.1.0/src/pg_query_deparse.c000066400000000000000000000025761477334012600205770ustar00rootroot00000000000000#include "pg_query.h" #include "pg_query_internal.h" #include "pg_query_readfuncs.h" #include "postgres_deparse.h" 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-17-6.1.0/src/pg_query_fingerprint.c000066400000000000000000000255771477334012600215110ustar00rootroot00000000000000#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 union ValUnion *value) { if (value->ival.ival != 0) { _fingerprintString(ctx, "Integer"); _fingerprintString(ctx, "ival"); char buffer[50]; sprintf(buffer, "%d", value->ival.ival); _fingerprintString(ctx, buffer); } } static void _fingerprintFloat(FingerprintContext *ctx, const union ValUnion *value) { if (value->fval.fval != NULL) { // NB: We output `str` here intentionally, to match the output format from libpg_query 14 // and below. This results in stable fingerprints, despite the field name being changed in // PG15 to `fval`. _fingerprintString(ctx, "Float"); _fingerprintString(ctx, "str"); _fingerprintString(ctx, value->fval.fval); } } static void _fingerprintBoolean(FingerprintContext *ctx, const union ValUnion *value) { _fingerprintString(ctx, "Boolean"); _fingerprintString(ctx, "boolval"); _fingerprintString(ctx, value->boolval.boolval ? "true" : "false"); } static void _fingerprintBitString(FingerprintContext *ctx, const union ValUnion *value) { if (value->bsval.bsval != NULL) { // NB: We output `str` here intentionally, to match the output format from libpg_query 14 // and below. This results in stable fingerprints, despite the field name being changed in // PG15 to `bsval`. _fingerprintString(ctx, "BitString"); _fingerprintString(ctx, "str"); _fingerprintString(ctx, value->bsval.bsval); } } 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_Boolean: _fingerprintBoolean(ctx, obj); break; case T_String: // NB: We output `str` here intentionally, to match the output format from libpg_query // 14 and below. This results in stable fingerprints, despite the field name being // changed in PG15 to `sval`. _fingerprintString(ctx, "String"); _fingerprintString(ctx, "str"); _fingerprintString(ctx, ((union ValUnion*) obj)->sval.sval); 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, int parser_options, 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, parser_options); // 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); result.fingerprint_str = malloc(17 * sizeof(char)); int n = snprintf(result.fingerprint_str, 17, "%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 (n < 0 || n >= 17) { PgQueryError* error = malloc(sizeof(PgQueryError)); error->message = strdup("Failed to output fingerprint string due to snprintf 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, PG_QUERY_PARSE_DEFAULT, false); } PgQueryFingerprintResult pg_query_fingerprint_opts(const char* input, int parser_options) { return pg_query_fingerprint_with_opts(input, parser_options, false); } void pg_query_free_fingerprint_result(PgQueryFingerprintResult result) { if (result.error) { free(result.error->message); free(result.error->filename); free(result.error->funcname); free(result.error); } free(result.fingerprint_str); free(result.stderr_buffer); } libpg_query-17-6.1.0/src/pg_query_fingerprint.h000066400000000000000000000004251477334012600214770ustar00rootroot00000000000000#ifndef PG_QUERY_FINGERPRINT_H #define PG_QUERY_FINGERPRINT_H #include extern PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, int parser_options, bool printTokens); extern uint64_t pg_query_fingerprint_node(const void * node); #endif libpg_query-17-6.1.0/src/pg_query_internal.h000066400000000000000000000010411477334012600207570ustar00rootroot00000000000000#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, int parser_options); void pg_query_free_error(PgQueryError *error); MemoryContext pg_query_enter_memory_context(); void pg_query_exit_memory_context(MemoryContext ctx); #endif libpg_query-17-6.1.0/src/pg_query_json_plpgsql.c000066400000000000000000000527701477334012600216700ustar00rootroot00000000000000#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_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_assert(StringInfo out, PLpgSQL_stmt_assert *stmt); 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_call(StringInfo out, PLpgSQL_stmt_call *stmt); static void dump_commit(StringInfo out, PLpgSQL_stmt_commit *stmt); static void dump_rollback(StringInfo out, PLpgSQL_stmt_rollback *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_ASSERT: dump_assert(out, (PLpgSQL_stmt_assert *) 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; case PLPGSQL_STMT_CALL: dump_call(out, (PLpgSQL_stmt_call *) node); break; case PLPGSQL_STMT_COMMIT: dump_commit(out, (PLpgSQL_stmt_commit *) node); break; case PLPGSQL_STMT_ROLLBACK: dump_rollback(out, (PLpgSQL_stmt_rollback *) 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_call(StringInfo out, PLpgSQL_stmt_call *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_call"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(expr); WRITE_BOOL_FIELD(is_call, is_call, is_call); WRITE_VARIABLE_FIELD(target); } static void dump_commit(StringInfo out, PLpgSQL_stmt_commit *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_commit"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_BOOL_FIELD(chain, chain, chain); } static void dump_rollback(StringInfo out, PLpgSQL_stmt_rollback *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_rollback"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_BOOL_FIELD(chain, chain, chain); } 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_assert(StringInfo out, PLpgSQL_stmt_assert *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_assert"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(cond); WRITE_EXPR_FIELD(message); } 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); WRITE_ENUM_FIELD(parseMode, parseMode, parseMode); } 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; 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); } char * plpgsqlToJSON(PLpgSQL_function *func) { StringInfoData str; initStringInfo(&str); appendStringInfoChar(&str, '{'); dump_function(&str, func); removeTrailingDelimiter(&str); appendStringInfoString(&str, "}}"); return str.data; } libpg_query-17-6.1.0/src/pg_query_json_plpgsql.h000066400000000000000000000002421477334012600216600ustar00rootroot00000000000000#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-17-6.1.0/src/pg_query_normalize.c000066400000000000000000000524341477334012600211520ustar00rootroot00000000000000#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" #include "pg_query_outfuncs.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; /* Should only utility statements be normalized? Set by pg_query_normalize_utility */ bool normalize_utility_only; } 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 void record_defelem_arg_location(pgssConstLocations *jstate, int location) { for (int i = location; i < jstate->query_len; i++) { if (jstate->query[i] == '\'' || jstate->query[i] == '$') { RecordConstLocation(jstate, i); break; } } } static void record_matching_string(pgssConstLocations *jstate, const char *str) { char *loc = NULL; if (str == NULL) return; loc = strstr(jstate->query, str); if (loc != NULL) RecordConstLocation(jstate, loc - jstate->query - 1); } 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) { // No argument } else if (IsA(defElem->arg, String)) { record_defelem_arg_location(jstate, defElem->location); } else if (IsA(defElem->arg, List) && list_length((List *) defElem->arg) == 1 && IsA(linitial((List *) defElem->arg), String)) { record_defelem_arg_location(jstate, defElem->location); } 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: if (jstate->normalize_utility_only) return false; return const_record_walker((Node *) ((VariableSetStmt *) node)->args, jstate); case T_CopyStmt: if (jstate->normalize_utility_only) return false; 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: if (jstate->normalize_utility_only) return false; return const_record_walker((Node *) ((DeclareCursorStmt *) node)->query, jstate); case T_CreateFunctionStmt: if (jstate->normalize_utility_only) return false; return const_record_walker((Node *) ((CreateFunctionStmt *) node)->options, jstate); case T_DoStmt: if (jstate->normalize_utility_only) return false; return const_record_walker((Node *) ((DoStmt *) node)->args, jstate); case T_CreateSubscriptionStmt: record_matching_string(jstate, ((CreateSubscriptionStmt *) node)->conninfo); break; case T_AlterSubscriptionStmt: record_matching_string(jstate, ((AlterSubscriptionStmt *) node)->conninfo); break; case T_CreateUserMappingStmt: return const_record_walker((Node *) ((CreateUserMappingStmt *) node)->options, jstate); case T_AlterUserMappingStmt: return const_record_walker((Node *) ((AlterUserMappingStmt *) node)->options, jstate); case T_TypeName: /* Don't normalize constants in typmods or arrayBounds */ return false; case T_SelectStmt: { if (jstate->normalize_utility_only) return false; 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; } case T_MergeStmt: { if (jstate->normalize_utility_only) return false; return raw_expression_tree_walker(node, const_record_walker, (void*) jstate); } case T_InsertStmt: { if (jstate->normalize_utility_only) return false; return raw_expression_tree_walker(node, const_record_walker, (void*) jstate); } case T_UpdateStmt: { if (jstate->normalize_utility_only) return false; return raw_expression_tree_walker(node, const_record_walker, (void*) jstate); } case T_DeleteStmt: { if (jstate->normalize_utility_only) return false; return raw_expression_tree_walker(node, const_record_walker, (void*) jstate); } 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_ext(const char* input, bool normalize_utility_only) { 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, RAW_PARSE_DEFAULT); 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; jstate.normalize_utility_only = normalize_utility_only; /* 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; } PgQueryNormalizeResult pg_query_normalize(const char* input) { return pg_query_normalize_ext(input, false); } PgQueryNormalizeResult pg_query_normalize_utility(const char* input) { return pg_query_normalize_ext(input, true); } 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-17-6.1.0/src/pg_query_outfuncs.h000066400000000000000000000003631477334012600210170ustar00rootroot00000000000000#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_node_to_json(const void *obj); char *pg_query_nodes_to_json(const void *obj); #endif libpg_query-17-6.1.0/src/pg_query_outfuncs_json.c000066400000000000000000000214261477334012600220460ustar00rootroot00000000000000#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 an unsigned integer field */ #define WRITE_UINT64_FIELD(outname, outname_json, fldname) \ if (node->fldname != 0) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":" UINT64_FORMAT ",", 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 Integer *node) { /* Don't output anything if the value is the default (0), to match * protobuf's behavior. */ if (node->ival != 0) appendStringInfo(out, "\"ival\":%d", node->ival); } static void _outBoolean(StringInfo out, const Boolean *node) { appendStringInfo(out, "\"boolval\":%s", booltostr(node->boolval)); } static void _outFloat(StringInfo out, const Float *node) { appendStringInfo(out, "\"fval\":"); _outToken(out, node->fval); } static void _outString(StringInfo out, const String *node) { appendStringInfo(out, "\"sval\":"); _outToken(out, node->sval); } static void _outBitString(StringInfo out, const BitString *node) { appendStringInfo(out, "\"bsval\":"); _outToken(out, node->bsval); } static void _outAConst(StringInfo out, const A_Const *node) { if (node->isnull) { appendStringInfo(out, "\"isnull\":true"); } else { switch (node->val.node.type) { case T_Integer: appendStringInfoString(out, "\"ival\":{"); _outInteger(out, &node->val.ival); appendStringInfoChar(out, '}'); break; case T_Float: appendStringInfoString(out, "\"fval\":{"); _outFloat(out, &node->val.fval); appendStringInfoChar(out, '}'); break; case T_Boolean: appendStringInfo(out, "\"boolval\":{%s}", node->val.boolval.boolval ? "\"boolval\":true" : ""); break; case T_String: appendStringInfoString(out, "\"sval\":{"); _outString(out, &node->val.sval); appendStringInfoChar(out, '}'); break; case T_BitString: appendStringInfoString(out, "\"bsval\":{"); _outBitString(out, &node->val.bsval); appendStringInfoChar(out, '}'); break; // Unreachable, A_Const cannot contain any other nodes. default: Assert(false); } } appendStringInfo(out, ",\"location\":%d", node->location); } #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_node_to_json(const void *obj) { StringInfoData out; initStringInfo(&out); _outNode(&out, obj); return out.data; } 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-17-6.1.0/src/pg_query_outfuncs_protobuf.c000066400000000000000000000203201477334012600227250ustar00rootroot00000000000000#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_UINT64_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 = -1; \ int i = 0; \ out->n_##outname = bms_num_members(node->fldname); \ out->outname = palloc(sizeof(PgQuery__Node*) * out->n_##outname); \ while ((x = bms_next_member(node->fldname, x)) >= 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 Integer *node) { out->ival = node->ival; } static void _outFloat(PgQuery__Float* out, const Float *node) { out->fval = node->fval; } static void _outBoolean(PgQuery__Boolean* out, const Boolean *node) { out->boolval = node->boolval; } static void _outString(PgQuery__String* out, const String *node) { out->sval = node->sval; } static void _outBitString(PgQuery__BitString* out, const BitString *node) { out->bsval = node->bsval; } static void _outAConst(PgQuery__AConst* out, const A_Const *node) { out->isnull = node->isnull; out->location = node->location; if (!node->isnull) { switch (nodeTag(&node->val.node)) { case T_Integer: { PgQuery__Integer *value = palloc(sizeof(PgQuery__Integer)); pg_query__integer__init(value); value->ival = node->val.ival.ival; out->val_case = PG_QUERY__A__CONST__VAL_IVAL; out->ival = value; break; } case T_Float: { PgQuery__Float *value = palloc(sizeof(PgQuery__Float)); pg_query__float__init(value); value->fval = pstrdup(node->val.fval.fval); out->val_case = PG_QUERY__A__CONST__VAL_FVAL; out->fval = value; break; } case T_Boolean: { PgQuery__Boolean *value = palloc(sizeof(PgQuery__Boolean)); pg_query__boolean__init(value); value->boolval = node->val.boolval.boolval; out->val_case = PG_QUERY__A__CONST__VAL_BOOLVAL; out->boolval = value; break; } case T_String: { PgQuery__String *value = palloc(sizeof(PgQuery__String)); pg_query__string__init(value); value->sval = pstrdup(node->val.sval.sval); out->val_case = PG_QUERY__A__CONST__VAL_SVAL; out->sval = value; break; } case T_BitString: { PgQuery__BitString *value = palloc(sizeof(PgQuery__BitString)); pg_query__bit_string__init(value); value->bsval = pstrdup(node->val.bsval.bsval); out->val_case = PG_QUERY__A__CONST__VAL_BSVAL; out->bsval = value; break; } default: // Unreachable Assert(false); } } } #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-17-6.1.0/src/pg_query_outfuncs_protobuf_cpp.cc000066400000000000000000000151531477334012600237420ustar00rootroot00000000000000 #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_UINT64_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 Integer *node) { out_node->set_ival(node->ival); } static void _outFloat(pg_query::Float* out_node, const Float *node) { out_node->set_fval(node->fval); } static void _outBoolean(pg_query::Boolean* out_node, const Boolean *node) { out_node->set_boolval(node->boolval); } static void _outString(pg_query::String* out_node, const String *node) { out_node->set_sval(node->sval); } static void _outBitString(pg_query::BitString* out_node, const BitString *node) { out_node->set_bsval(node->bsval); } static void _outAConst(pg_query::A_Const* out_node, const A_Const *node) { out_node->set_isnull(node->isnull); out_node->set_location(node->location); if (!node->isnull) { switch (nodeTag(&node->val.node)) { case T_Integer: { pg_query::Integer *value = new pg_query::Integer(); value->set_ival(node->val.ival.ival); out_node->set_allocated_ival(value); break; } case T_Float: { pg_query::Float *value = new pg_query::Float(); value->set_fval(pstrdup(node->val.fval.fval)); out_node->set_allocated_fval(value); break; } case T_Boolean: { pg_query::Boolean *value = new pg_query::Boolean(); value->set_boolval(node->val.boolval.boolval); out_node->set_allocated_boolval(value); break; } case T_String: { pg_query::String *value = new pg_query::String(); value->set_sval(pstrdup(node->val.sval.sval)); out_node->set_allocated_sval(value); break; } case T_BitString: { pg_query::BitString *value = new pg_query::BitString(); value->set_bsval(pstrdup(node->val.bsval.bsval)); out_node->set_allocated_bsval(value); break; } default: // Unreachable Assert(false); } } } #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-17-6.1.0/src/pg_query_parse.c000066400000000000000000000121401477334012600202520ustar00rootroot00000000000000#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, int parser_options) { 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(); { RawParseMode rawParseMode = RAW_PARSE_DEFAULT; switch (parser_options & PG_QUERY_PARSE_MODE_BITMASK) { case PG_QUERY_PARSE_TYPE_NAME: rawParseMode = RAW_PARSE_TYPE_NAME; break; case PG_QUERY_PARSE_PLPGSQL_EXPR: rawParseMode = RAW_PARSE_PLPGSQL_EXPR; break; case PG_QUERY_PARSE_PLPGSQL_ASSIGN1: rawParseMode = RAW_PARSE_PLPGSQL_ASSIGN1; break; case PG_QUERY_PARSE_PLPGSQL_ASSIGN2: rawParseMode = RAW_PARSE_PLPGSQL_ASSIGN2; break; case PG_QUERY_PARSE_PLPGSQL_ASSIGN3: rawParseMode = RAW_PARSE_PLPGSQL_ASSIGN3; break; } if ((parser_options & PG_QUERY_DISABLE_BACKSLASH_QUOTE) == PG_QUERY_DISABLE_BACKSLASH_QUOTE) { backslash_quote = BACKSLASH_QUOTE_OFF; } else { backslash_quote = BACKSLASH_QUOTE_SAFE_ENCODING; } standard_conforming_strings = !((parser_options & PG_QUERY_DISABLE_STANDARD_CONFORMING_STRINGS) == PG_QUERY_DISABLE_STANDARD_CONFORMING_STRINGS); escape_string_warning = !((parser_options & PG_QUERY_DISABLE_ESCAPE_STRING_WARNING) == PG_QUERY_DISABLE_ESCAPE_STRING_WARNING); result.tree = raw_parser(input, rawParseMode); backslash_quote = BACKSLASH_QUOTE_SAFE_ENCODING; standard_conforming_strings = true; escape_string_warning = true; #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) { return pg_query_parse_opts(input, PG_QUERY_PARSE_DEFAULT); } PgQueryParseResult pg_query_parse_opts(const char* input, int parser_options) { 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, parser_options); // 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) { return pg_query_parse_protobuf_opts(input, PG_QUERY_PARSE_DEFAULT); } PgQueryProtobufParseResult pg_query_parse_protobuf_opts(const char* input, int parser_options) { MemoryContext ctx = NULL; PgQueryInternalParsetreeAndError parsetree_and_error; PgQueryProtobufParseResult result = {0}; ctx = pg_query_enter_memory_context(); parsetree_and_error = pg_query_raw_parse(input, parser_options); // 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-17-6.1.0/src/pg_query_parse_plpgsql.c000066400000000000000000000324741477334012600220300ustar00rootroot00000000000000#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(Node* 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_do_stmt(DoStmt* stmt) { char *proc_source = NULL; const ListCell *lc; char *language = "plpgsql"; assert(IsA(stmt, DoStmt)); foreach(lc, stmt->args) { DefElem* elem = (DefElem*) lfirst(lc); if (strcmp(elem->defname, "as") == 0) { assert(IsA(elem->arg, String)); proc_source = strVal(elem->arg); } else if (strcmp(elem->defname, "language") == 0) { language = strVal(elem->arg); } } assert(proc_source != NULL); if(strcmp(language, "plpgsql") != 0) { return (PLpgSQL_function *) palloc0(sizeof(PLpgSQL_function)); } return plpgsql_compile_inline(proc_source); } 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; char *language = "plpgsql"; 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)); } } else if (strcmp(elem->defname, "language") == 0) { language = strVal(elem->arg); } } assert(proc_source != NULL); if(strcmp(language, "plpgsql") != 0) { return (PLpgSQL_function *) palloc0(sizeof(PLpgSQL_function)); } 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); 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, param->argType); argvariable = plpgsql_build_variable(param->name ? param->name : buf, 0, argdtype, false); if (param->mode == FUNC_PARAM_OUT || param->mode == FUNC_PARAM_INOUT || param->mode == FUNC_PARAM_TABLE) function->out_param_varno = argvariable->dno; 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(Node* 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(); { if (IsA(stmt, CreateFunctionStmt)) { result.func = compile_create_function_stmt((CreateFunctionStmt *) stmt); } else if (IsA(stmt, DoStmt)){ result.func = compile_do_stmt((DoStmt *) stmt); } else { elog(ERROR, "Unexpected node type for PL/pgSQL parsing: %d", nodeTag(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 plStmts { Node **stmts; int stmts_buf_size; int stmts_count; } plStmts; static bool stmts_walker(Node *node, plStmts *state) { bool result; MemoryContext ccxt = CurrentMemoryContext; if (node == NULL) return false; if (IsA(node, CreateFunctionStmt) || IsA(node, DoStmt)) { if (state->stmts_count >= state->stmts_buf_size) { state->stmts_buf_size *= 2; state->stmts = (Node**) repalloc(state->stmts, state->stmts_buf_size * sizeof(Node*)); } state->stmts[state->stmts_count] = (Node *) node; state->stmts_count++; } else if (IsA(node, RawStmt)) { return stmts_walker((Node *) ((RawStmt *) node)->stmt, state); } PG_TRY(); { result = raw_expression_tree_walker(node, 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; plStmts statements; size_t i; ctx = pg_query_enter_memory_context(); parse_result = pg_query_raw_parse(input, PG_QUERY_PARSE_DEFAULT); result.error = parse_result.error; if (result.error != NULL) { pg_query_exit_memory_context(ctx); return result; } statements.stmts_buf_size = 100; statements.stmts = (Node**) palloc(statements.stmts_buf_size * sizeof(Node*)); statements.stmts_count = 0; 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; size_t new_out_len; func_json = plpgsqlToJSON(func_and_error.func); plpgsql_free_function_memory(func_and_error.func); new_out_len = strlen(result.plpgsql_funcs) + strlen(func_json) + 3; new_out = malloc(new_out_len); int n = snprintf(new_out, new_out_len, "%s%s,\n", result.plpgsql_funcs, func_json); if (n < 0 || n >= new_out_len) { PgQueryError* error = malloc(sizeof(PgQueryError)); error->message = strdup("Failed to output PL/pgSQL functions due to snprintf 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-17-6.1.0/src/pg_query_readfuncs.h000066400000000000000000000003111477334012600211140ustar00rootroot00000000000000#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-17-6.1.0/src/pg_query_readfuncs_protobuf.c000066400000000000000000000131571477334012600230430ustar00rootroot00000000000000#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_UINT64_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_ABSTRACT_PTR_FIELD(outname, outname_json, fldname, fldtype) \ if (msg->outname != NULL) { \ node->fldname = (fldtype) _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); static String * _readString(PgQuery__String* msg) { return makeString(pstrdup(msg->sval)); } #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_->fval)); case PG_QUERY__NODE__NODE_BOOLEAN: return (Node *) makeBoolean(msg->boolean->boolval); case PG_QUERY__NODE__NODE_STRING: return (Node *) makeString(pstrdup(msg->string->sval)); case PG_QUERY__NODE__NODE_BIT_STRING: return (Node *) makeBitString(pstrdup(msg->bit_string->bsval)); case PG_QUERY__NODE__NODE_A_CONST: { A_Const *ac = makeNode(A_Const); ac->location = msg->a_const->location; if (msg->a_const->isnull) { ac->isnull = true; } else { switch (msg->a_const->val_case) { case PG_QUERY__A__CONST__VAL_IVAL: ac->val.ival = *makeInteger(msg->a_const->ival->ival); break; case PG_QUERY__A__CONST__VAL_FVAL: ac->val.fval = *makeFloat(pstrdup(msg->a_const->fval->fval)); break; case PG_QUERY__A__CONST__VAL_BOOLVAL: ac->val.boolval = *makeBoolean(msg->a_const->boolval->boolval); break; case PG_QUERY__A__CONST__VAL_SVAL: ac->val.sval = *makeString(pstrdup(msg->a_const->sval->sval)); break; case PG_QUERY__A__CONST__VAL_BSVAL: ac->val.bsval = *makeBitString(pstrdup(msg->a_const->bsval->bsval)); break; case PG_QUERY__A__CONST__VAL__NOT_SET: case _PG_QUERY__A__CONST__VAL__CASE_IS_INT_SIZE: Assert(false); break; } } return (Node *) ac; } 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-17-6.1.0/src/pg_query_scan.c000066400000000000000000000112501477334012600200650ustar00rootroot00000000000000#include "pg_query.h" #include "pg_query_internal.h" #include "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 == USCONST || tok == BCONST || tok == XCONST || tok == IDENT || tok == UIDENT || 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,d) case b: output_tokens[i]->keyword_kind = c + 1; break; #include "parser/kwlist.h" #undef PG_KEYWORD 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-17-6.1.0/src/pg_query_split.c000066400000000000000000000136001477334012600202750ustar00rootroot00000000000000#include "pg_query.h" #include "pg_query_internal.h" #include "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,d) case b: is_keyword = true; break; #include "parser/kwlist.h" #undef PG_KEYWORD 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,d) 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 = {0}; ctx = pg_query_enter_memory_context(); parsetree_and_error = pg_query_raw_parse(input, PG_QUERY_PARSE_DEFAULT); // 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-17-6.1.0/src/postgres/000077500000000000000000000000001477334012600167315ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/000077500000000000000000000000001477334012600203545ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/access/000077500000000000000000000000001477334012600216155ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/access/amapi.h000066400000000000000000000244631477334012600230660ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * amapi.h * API for Postgres index access methods. * * Copyright (c) 2015-2024, 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; /* * We use lists of this struct type to keep track of both operators and * support functions while building or adding to an opclass or opfamily. * amadjustmembers functions receive lists of these structs, and are allowed * to alter their "ref" fields. * * The "ref" fields define how the pg_amop or pg_amproc entry should depend * on the associated objects (that is, which dependency type to use, and * which opclass or opfamily it should depend on). * * If ref_is_hard is true, the entry will have a NORMAL dependency on the * operator or support func, and an INTERNAL dependency on the opclass or * opfamily. This forces the opclass or opfamily to be dropped if the * operator or support func is dropped, and requires the CASCADE option * to do so. Nor will ALTER OPERATOR FAMILY DROP be allowed. This is * the right behavior for objects that are essential to an opclass. * * If ref_is_hard is false, the entry will have an AUTO dependency on the * operator or support func, and also an AUTO dependency on the opclass or * opfamily. This allows ALTER OPERATOR FAMILY DROP, and causes that to * happen automatically if the operator or support func is dropped. This * is the right behavior for inessential ("loose") objects. * * We also make dependencies on lefttype/righttype, of the same strength as * the dependency on the operator or support func, unless these dependencies * are redundant with the dependency on the operator or support func. */ typedef struct OpFamilyMember { bool is_func; /* is this an operator, or support func? */ Oid object; /* operator or support func's OID */ int number; /* strategy or support func number */ Oid lefttype; /* lefttype */ Oid righttype; /* righttype */ Oid sortfamily; /* ordering operator's sort opfamily, or 0 */ bool ref_is_hard; /* hard or soft dependency? */ bool ref_is_family; /* is dependency on opclass or opfamily? */ Oid refobjid; /* OID of opclass or opfamily */ } OpFamilyMember; /* * 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, bool indexUnchanged, struct IndexInfo *indexInfo); /* cleanup after insert */ typedef void (*aminsertcleanup_function) (Relation indexRelation, 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); /* validate operators and support functions to be added to an opclass/family */ typedef void (*amadjustmembers_function) (Oid opfamilyoid, Oid opclassoid, List *operators, List *functions); /* 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) (int nkeys, int norderbys); /* 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 parallel build? */ bool amcanbuildparallel; /* does AM support columns included with clause INCLUDE? */ bool amcaninclude; /* does AM use maintenance_work_mem? */ bool amusemaintenanceworkmem; /* does AM store tuple information only at block granularity? */ bool amsummarizing; /* 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; aminsertcleanup_function aminsertcleanup; 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; amadjustmembers_function amadjustmembers; /* can be NULL */ 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-17-6.1.0/src/postgres/include/access/attmap.h000066400000000000000000000032611477334012600232560ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * attmap.h * Definitions for PostgreSQL attribute mappings * * * Portions Copyright (c) 1996-2024, 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, bool missing_ok); extern AttrMap *build_attrmap_by_name_if_req(TupleDesc indesc, TupleDesc outdesc, bool missing_ok); extern AttrMap *build_attrmap_by_position(TupleDesc indesc, TupleDesc outdesc, const char *msg); #endif /* ATTMAP_H */ libpg_query-17-6.1.0/src/postgres/include/access/attnum.h000066400000000000000000000030131477334012600232730ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * attnum.h * POSTGRES attribute number definitions. * * * Portions Copyright (c) 1996-2024, 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 a 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-17-6.1.0/src/postgres/include/access/brin_internal.h000066400000000000000000000071471477334012600246250ustar00rootroot00000000000000/* * brin_internal.h * internal declarations for BRIN indexes * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/access/brin_internal.h */ #ifndef BRIN_INTERNAL_H #define BRIN_INTERNAL_H #include "access/amapi.h" #include "storage/bufpage.h" #include "utils/typcache.h" /* * A BrinDesc is a struct designed to enable decoding a BRIN tuple from the * on-disk format to an in-memory tuple and vice-versa. */ /* struct returned by "OpcInfo" amproc */ typedef struct BrinOpcInfo { /* Number of columns stored in an index column of this opclass */ uint16 oi_nstored; /* Regular processing of NULLs in BrinValues? */ bool oi_regular_nulls; /* Opaque pointer for the opclass' private use */ void *oi_opaque; /* Type cache entries of the stored columns */ TypeCacheEntry *oi_typcache[FLEXIBLE_ARRAY_MEMBER]; } BrinOpcInfo; /* the size of a BrinOpcInfo for the given number of columns */ #define SizeofBrinOpcInfo(ncols) \ (offsetof(BrinOpcInfo, oi_typcache) + sizeof(TypeCacheEntry *) * ncols) typedef struct BrinDesc { /* Containing memory context */ MemoryContext bd_context; /* the index relation itself */ Relation bd_index; /* tuple descriptor of the index relation */ TupleDesc bd_tupdesc; /* cached copy for on-disk tuples; generated at first use */ TupleDesc bd_disktdesc; /* total number of Datum entries that are stored on-disk for all columns */ int bd_totalstored; /* per-column info; bd_tupdesc->natts entries long */ BrinOpcInfo *bd_info[FLEXIBLE_ARRAY_MEMBER]; } BrinDesc; /* * Globally-known function support numbers for BRIN indexes. Individual * opclasses can define more function support numbers, which must fall into * BRIN_FIRST_OPTIONAL_PROCNUM .. BRIN_LAST_OPTIONAL_PROCNUM. */ #define BRIN_PROCNUM_OPCINFO 1 #define BRIN_PROCNUM_ADDVALUE 2 #define BRIN_PROCNUM_CONSISTENT 3 #define BRIN_PROCNUM_UNION 4 #define BRIN_MANDATORY_NPROCS 4 #define BRIN_PROCNUM_OPTIONS 5 /* optional */ /* procedure numbers up to 10 are reserved for BRIN future expansion */ #define BRIN_FIRST_OPTIONAL_PROCNUM 11 #define BRIN_LAST_OPTIONAL_PROCNUM 15 #undef BRIN_DEBUG #ifdef BRIN_DEBUG #define BRIN_elog(args) elog args #else #define BRIN_elog(args) ((void) 0) #endif /* brin.c */ extern BrinDesc *brin_build_desc(Relation rel); extern void brin_free_desc(BrinDesc *bdesc); extern IndexBuildResult *brinbuild(Relation heap, Relation index, struct IndexInfo *indexInfo); extern void brinbuildempty(Relation index); extern bool brininsert(Relation idxRel, Datum *values, bool *nulls, ItemPointer heaptid, Relation heapRel, IndexUniqueCheck checkUnique, bool indexUnchanged, struct IndexInfo *indexInfo); extern void brininsertcleanup(Relation index, struct IndexInfo *indexInfo); extern IndexScanDesc brinbeginscan(Relation r, int nkeys, int norderbys); extern int64 bringetbitmap(IndexScanDesc scan, TIDBitmap *tbm); extern void brinrescan(IndexScanDesc scan, ScanKey scankey, int nscankeys, ScanKey orderbys, int norderbys); extern void brinendscan(IndexScanDesc scan); extern IndexBulkDeleteResult *brinbulkdelete(IndexVacuumInfo *info, IndexBulkDeleteResult *stats, IndexBulkDeleteCallback callback, void *callback_state); extern IndexBulkDeleteResult *brinvacuumcleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *stats); extern bytea *brinoptions(Datum reloptions, bool validate); /* brin_validate.c */ extern bool brinvalidate(Oid opclassoid); #endif /* BRIN_INTERNAL_H */ libpg_query-17-6.1.0/src/postgres/include/access/brin_tuple.h000066400000000000000000000076161477334012600241430ustar00rootroot00000000000000/* * brin_tuple.h * Declarations for dealing with BRIN-specific tuples. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/access/brin_tuple.h */ #ifndef BRIN_TUPLE_H #define BRIN_TUPLE_H #include "access/brin_internal.h" #include "access/tupdesc.h" /* * The BRIN opclasses may register serialization callback, in case the on-disk * and in-memory representations differ (e.g. for performance reasons). */ typedef void (*brin_serialize_callback_type) (BrinDesc *bdesc, Datum src, Datum *dst); /* * A BRIN index stores one index tuple per page range. Each index tuple * has one BrinValues struct for each indexed column; in turn, each BrinValues * has (besides the null flags) an array of Datum whose size is determined by * the opclass. */ typedef struct BrinValues { AttrNumber bv_attno; /* index attribute number */ bool bv_hasnulls; /* are there any nulls in the page range? */ bool bv_allnulls; /* are all values nulls in the page range? */ Datum *bv_values; /* current accumulated values */ Datum bv_mem_value; /* expanded accumulated values */ MemoryContext bv_context; brin_serialize_callback_type bv_serialize; } BrinValues; /* * This struct is used to represent an in-memory index tuple. The values can * only be meaningfully decoded with an appropriate BrinDesc. */ typedef struct BrinMemTuple { bool bt_placeholder; /* this is a placeholder tuple */ bool bt_empty_range; /* range represents no tuples */ BlockNumber bt_blkno; /* heap blkno that the tuple is for */ MemoryContext bt_context; /* memcxt holding the bt_columns values */ /* output arrays for brin_deform_tuple: */ Datum *bt_values; /* values array */ bool *bt_allnulls; /* allnulls array */ bool *bt_hasnulls; /* hasnulls array */ /* not an output array, but must be last */ BrinValues bt_columns[FLEXIBLE_ARRAY_MEMBER]; } BrinMemTuple; /* * An on-disk BRIN tuple. This is possibly followed by a nulls bitmask, with * room for 2 null bits (two bits for each indexed column); an opclass-defined * number of Datum values for each column follow. */ typedef struct BrinTuple { /* heap block number that the tuple is for */ BlockNumber bt_blkno; /* --------------- * bt_info is laid out in the following fashion: * * 7th (high) bit: has nulls * 6th bit: is placeholder tuple * 5th bit: range is empty * 4-0 bit: offset of data * --------------- */ uint8 bt_info; } BrinTuple; #define SizeOfBrinTuple (offsetof(BrinTuple, bt_info) + sizeof(uint8)) /* * bt_info manipulation macros */ #define BRIN_OFFSET_MASK 0x1F #define BRIN_EMPTY_RANGE_MASK 0x20 #define BRIN_PLACEHOLDER_MASK 0x40 #define BRIN_NULLS_MASK 0x80 #define BrinTupleDataOffset(tup) ((Size) (((BrinTuple *) (tup))->bt_info & BRIN_OFFSET_MASK)) #define BrinTupleHasNulls(tup) (((((BrinTuple *) (tup))->bt_info & BRIN_NULLS_MASK)) != 0) #define BrinTupleIsPlaceholder(tup) (((((BrinTuple *) (tup))->bt_info & BRIN_PLACEHOLDER_MASK)) != 0) #define BrinTupleIsEmptyRange(tup) (((((BrinTuple *) (tup))->bt_info & BRIN_EMPTY_RANGE_MASK)) != 0) extern BrinTuple *brin_form_tuple(BrinDesc *brdesc, BlockNumber blkno, BrinMemTuple *tuple, Size *size); extern BrinTuple *brin_form_placeholder_tuple(BrinDesc *brdesc, BlockNumber blkno, Size *size); extern void brin_free_tuple(BrinTuple *tuple); extern BrinTuple *brin_copy_tuple(BrinTuple *tuple, Size len, BrinTuple *dest, Size *destsz); extern bool brin_tuples_equal(const BrinTuple *a, Size alen, const BrinTuple *b, Size blen); extern BrinMemTuple *brin_new_memtuple(BrinDesc *brdesc); extern BrinMemTuple *brin_memtuple_initialize(BrinMemTuple *dtuple, BrinDesc *brdesc); extern BrinMemTuple *brin_deform_tuple(BrinDesc *brdesc, BrinTuple *tuple, BrinMemTuple *dMemtuple); #endif /* BRIN_TUPLE_H */ libpg_query-17-6.1.0/src/postgres/include/access/clog.h000066400000000000000000000033211477334012600227110ustar00rootroot00000000000000/* * clog.h * * PostgreSQL transaction-commit-log manager * * Portions Copyright (c) 1996-2024, 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 "storage/sync.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 { int64 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 CLOGShmemSize(void); extern void CLOGShmemInit(void); extern void BootStrapCLOG(void); extern void StartupCLOG(void); extern void TrimCLOG(void); extern void CheckPointCLOG(void); extern void ExtendCLOG(TransactionId newestXact); extern void TruncateCLOG(TransactionId oldestXact, Oid oldestxid_datoid); extern int clogsyncfiletag(const FileTag *ftag, char *path); /* 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-17-6.1.0/src/postgres/include/access/commit_ts.h000066400000000000000000000042601477334012600237660ustar00rootroot00000000000000/* * commit_ts.h * * PostgreSQL commit timestamp manager * * Portions Copyright (c) 1996-2024, 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 "storage/sync.h" extern PGDLLIMPORT bool track_commit_timestamp; extern void TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids, TransactionId *subxids, TimestampTz timestamp, RepOriginId nodeid); extern bool TransactionIdGetCommitTsData(TransactionId xid, TimestampTz *ts, RepOriginId *nodeid); extern TransactionId GetLatestCommitTsData(TimestampTz *ts, RepOriginId *nodeid); 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 CheckPointCommitTs(void); extern void ExtendCommitTs(TransactionId newestXact); extern void TruncateCommitTs(TransactionId oldestXact); extern void SetCommitTsLimit(TransactionId oldestXact, TransactionId newestXact); extern void AdvanceOldestCommitTsXid(TransactionId oldestXact); extern int committssyncfiletag(const FileTag *ftag, char *path); /* XLOG stuff */ #define COMMIT_TS_ZEROPAGE 0x00 #define COMMIT_TS_TRUNCATE 0x10 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 { int64 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-17-6.1.0/src/postgres/include/access/detoast.h000066400000000000000000000046131477334012600234350ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * detoast.h * Access to compressed and external varlena values. * * Copyright (c) 2000-2024, PostgreSQL Global Development Group * * src/include/access/detoast.h * *------------------------------------------------------------------------- */ #ifndef DETOAST_H #define DETOAST_H /* * 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-17-6.1.0/src/postgres/include/access/genam.h000066400000000000000000000230571477334012600230640ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * genam.h * POSTGRES generalized index access method definitions. * * * Portions Copyright (c) 1996-2024, 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, so it could * even be -1). It will always just be an estimate during ambulkdelete. */ typedef struct IndexVacuumInfo { Relation index; /* the index being vacuumed */ Relation heaprel; /* the heap relation the index belongs to */ 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_newly_deleted is the number of pages in the index that were * deleted by the current vacuum operation. pages_deleted and pages_free * refer to free space within the index file. * * Note: 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 */ bool estimated_count; /* num_index_tuples is an estimate */ double num_index_tuples; /* tuples remaining */ double tuples_removed; /* # removed during vacuum operation */ BlockNumber pages_newly_deleted; /* # pages marked deleted by us */ BlockNumber pages_deleted; /* # pages marked deleted (could be by us) */ 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 Relation try_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, bool indexUnchanged, struct IndexInfo *indexInfo); extern void index_insert_cleanup(Relation indexRelation, 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 indexRelation, int nkeys, int norderbys, Snapshot snapshot); extern void index_parallelscan_initialize(Relation heapRelation, Relation indexRelation, 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 *istat, IndexBulkDeleteCallback callback, void *callback_state); extern IndexBulkDeleteResult *index_vacuum_cleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *istat); 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 indrel, 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, const Datum *values, const 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); extern void systable_inplace_update_begin(Relation relation, Oid indexId, bool indexOK, Snapshot snapshot, int nkeys, const ScanKeyData *key, HeapTuple *oldtupcopy, void **state); extern void systable_inplace_update_finish(void *state, HeapTuple tuple); extern void systable_inplace_update_cancel(void *state); #endif /* GENAM_H */ libpg_query-17-6.1.0/src/postgres/include/access/gin.h000066400000000000000000000045351477334012600225520ustar00rootroot00000000000000/*-------------------------------------------------------------------------- * gin.h * Public header file for Generalized Inverted Index access method. * * Copyright (c) 2006-2024, 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; StaticAssertDecl(sizeof(GinTernaryValue) == sizeof(bool), "sizes of GinTernaryValue and bool are not equal"); #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 */ static inline GinTernaryValue DatumGetGinTernaryValue(Datum X) { return (GinTernaryValue) X; } static inline Datum GinTernaryValueGetDatum(GinTernaryValue X) { return (Datum) X; } #define PG_RETURN_GIN_TERNARY_VALUE(x) return GinTernaryValueGetDatum(x) /* GUC parameters */ extern PGDLLIMPORT int GinFuzzySearchLimit; extern PGDLLIMPORT 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-17-6.1.0/src/postgres/include/access/htup.h000066400000000000000000000063141477334012600227520ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * htup.h * POSTGRES heap tuple definitions. * * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/access/htup_details.h000066400000000000000000000713601477334012600244620ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * htup_details.h * POSTGRES heap tuple header definitions. * * * Portions Copyright (c) 1996-2024, 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" #include "varatt.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) StaticAssertDecl(MaxOffsetNumber < SpecTokenOffsetNumber, "invalid speculative token constant"); #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) \ ItemPointerIndicatesMovedPartitions(&(tup)->t_ctid) #define HeapTupleHeaderSetMovedPartitions(tup) \ ItemPointerSetMovedPartitions(&(tup)->t_ctid) #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) /* prototypes for functions in common/heaptuple.c */ extern Size heap_compute_data_size(TupleDesc tupleDesc, const Datum *values, const bool *isnull); extern void heap_fill_tuple(TupleDesc tupleDesc, const Datum *values, const 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 tupleDesc); 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, const Datum *values, const bool *isnull); extern HeapTuple heap_modify_tuple(HeapTuple tuple, TupleDesc tupleDesc, const Datum *replValues, const bool *replIsnull, const bool *doReplace); extern HeapTuple heap_modify_tuple_by_cols(HeapTuple tuple, TupleDesc tupleDesc, int nCols, const int *replCols, const Datum *replValues, const 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, const Datum *values, const 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); #ifndef FRONTEND /* * 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. */ static inline Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull) { Assert(attnum > 0); *isnull = false; if (HeapTupleNoNulls(tup)) { Form_pg_attribute att; att = TupleDescAttr(tupleDesc, attnum - 1); if (att->attcacheoff >= 0) return fetchatt(att, (char *) tup->t_data + tup->t_data->t_hoff + att->attcacheoff); else return nocachegetattr(tup, attnum, tupleDesc); } else { if (att_isnull(attnum - 1, tup->t_data->t_bits)) { *isnull = true; return (Datum) NULL; } else return nocachegetattr(tup, attnum, tupleDesc); } } /* * 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. * */ static inline Datum heap_getattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull) { if (attnum > 0) { if (attnum > (int) HeapTupleHeaderGetNatts(tup->t_data)) return getmissingattr(tupleDesc, attnum, isnull); else return fastgetattr(tup, attnum, tupleDesc, isnull); } else return heap_getsysattr(tup, attnum, tupleDesc, isnull); } #endif /* FRONTEND */ #endif /* HTUP_DETAILS_H */ libpg_query-17-6.1.0/src/postgres/include/access/itup.h000066400000000000000000000124431477334012600227530ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * itup.h * POSTGRES index tuple definitions. * * * Portions Copyright (c) 1996-2024, 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)) /* routines in indextuple.c */ extern IndexTuple index_form_tuple(TupleDesc tupleDescriptor, const Datum *values, const bool *isnull); extern IndexTuple index_form_tuple_context(TupleDesc tupleDescriptor, const Datum *values, const bool *isnull, MemoryContext context); 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 void index_deform_tuple_internal(TupleDesc tupleDescriptor, Datum *values, bool *isnull, char *tp, bits8 *bp, int hasnulls); extern IndexTuple CopyIndexTuple(IndexTuple source); extern IndexTuple index_truncate_tuple(TupleDesc sourceDescriptor, IndexTuple source, int leavenatts); /* * Takes an infomask as argument (primarily because this needs to be usable * at index_form_tuple time so enough space is allocated). */ static inline Size IndexInfoFindDataOffset(unsigned short t_info) { if (!(t_info & INDEX_NULL_MASK)) return MAXALIGN(sizeof(IndexTupleData)); else return MAXALIGN(sizeof(IndexTupleData) + sizeof(IndexAttributeBitMapData)); } #ifndef FRONTEND /* ---------------- * index_getattr * * This gets called many times, so we macro the cacheable and NULL * lookups, and call nocache_index_getattr() for the rest. * * ---------------- */ static inline Datum index_getattr(IndexTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull) { Assert(PointerIsValid(isnull)); Assert(attnum > 0); *isnull = false; if (!IndexTupleHasNulls(tup)) { if (TupleDescAttr(tupleDesc, attnum - 1)->attcacheoff >= 0) { return fetchatt(TupleDescAttr(tupleDesc, attnum - 1), (char *) tup + IndexInfoFindDataOffset(tup->t_info) + TupleDescAttr(tupleDesc, attnum - 1)->attcacheoff); } else return nocache_index_getattr(tup, attnum, tupleDesc); } else { if (att_isnull(attnum - 1, (bits8 *) tup + sizeof(IndexTupleData))) { *isnull = true; return (Datum) NULL; } else return nocache_index_getattr(tup, attnum, tupleDesc); } } #endif /* * 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)))) #endif /* ITUP_H */ libpg_query-17-6.1.0/src/postgres/include/access/parallel.h000066400000000000000000000051141477334012600235630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parallel.h * Infrastructure for launching parallel workers * * Portions Copyright (c) 1996-2024, 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; } 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 PGDLLIMPORT volatile sig_atomic_t 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-17-6.1.0/src/postgres/include/access/printtup.h000066400000000000000000000020701477334012600236520ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * printtup.h * * * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/access/relation.h000066400000000000000000000017211477334012600236040ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * relation.h * Generic relation related routines. * * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/access/relscan.h000066400000000000000000000152551477334012600234250ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * relscan.h * POSTGRES relation scan descriptor definitions. * * * Portions Copyright (c) 1996-2024, 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 */ /* Range of ItemPointers for table_scan_getnextslot_tidrange() to scan. */ ItemPointerData rs_mintid; ItemPointerData rs_maxtid; /* * 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; /* * Per backend state for parallel table scan, for block-oriented storage. */ typedef struct ParallelBlockTableScanWorkerData { uint64 phsw_nallocated; /* Current # of blocks into the scan */ uint32 phsw_chunk_remaining; /* # blocks left in this chunk */ uint32 phsw_chunk_size; /* The number of blocks to allocate in * each I/O chunk for the scan */ } ParallelBlockTableScanWorkerData; typedef struct ParallelBlockTableScanWorkerData *ParallelBlockTableScanWorker; /* * 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-17-6.1.0/src/postgres/include/access/rmgr.h000066400000000000000000000025701477334012600227410ustar00rootroot00000000000000/* * 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,decode) \ symname, typedef enum RmgrIds { #include "access/rmgrlist.h" RM_NEXT_ID } RmgrIds; #undef PG_RMGR #define RM_MAX_ID UINT8_MAX #define RM_MAX_BUILTIN_ID (RM_NEXT_ID - 1) #define RM_MIN_CUSTOM_ID 128 #define RM_MAX_CUSTOM_ID UINT8_MAX #define RM_N_IDS (UINT8_MAX + 1) #define RM_N_BUILTIN_IDS (RM_MAX_BUILTIN_ID + 1) #define RM_N_CUSTOM_IDS (RM_MAX_CUSTOM_ID - RM_MIN_CUSTOM_ID + 1) static inline bool RmgrIdIsBuiltin(int rmid) { return rmid <= RM_MAX_BUILTIN_ID; } static inline bool RmgrIdIsCustom(int rmid) { return rmid >= RM_MIN_CUSTOM_ID && rmid <= RM_MAX_CUSTOM_ID; } #define RmgrIdIsValid(rmid) (RmgrIdIsBuiltin((rmid)) || RmgrIdIsCustom((rmid))) /* * RmgrId to use for extensions that require an RmgrId, but are still in * development and have not reserved their own unique RmgrId yet. See: * https://wiki.postgresql.org/wiki/CustomWALResourceManagers */ #define RM_EXPERIMENTAL_ID 128 #endif /* RMGR_H */ libpg_query-17-6.1.0/src/postgres/include/access/rmgrlist.h000066400000000000000000000065701477334012600236410ustar00rootroot00000000000000/*--------------------------------------------------------------------------- * 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-2024, 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, mask, decode */ PG_RMGR(RM_XLOG_ID, "XLOG", xlog_redo, xlog_desc, xlog_identify, NULL, NULL, NULL, xlog_decode) PG_RMGR(RM_XACT_ID, "Transaction", xact_redo, xact_desc, xact_identify, NULL, NULL, NULL, xact_decode) PG_RMGR(RM_SMGR_ID, "Storage", smgr_redo, smgr_desc, smgr_identify, NULL, NULL, NULL, NULL) PG_RMGR(RM_CLOG_ID, "CLOG", clog_redo, clog_desc, clog_identify, NULL, NULL, NULL, NULL) PG_RMGR(RM_DBASE_ID, "Database", dbase_redo, dbase_desc, dbase_identify, NULL, NULL, NULL, NULL) PG_RMGR(RM_TBLSPC_ID, "Tablespace", tblspc_redo, tblspc_desc, tblspc_identify, NULL, NULL, NULL, NULL) PG_RMGR(RM_MULTIXACT_ID, "MultiXact", multixact_redo, multixact_desc, multixact_identify, NULL, NULL, NULL, NULL) PG_RMGR(RM_RELMAP_ID, "RelMap", relmap_redo, relmap_desc, relmap_identify, NULL, NULL, NULL, NULL) PG_RMGR(RM_STANDBY_ID, "Standby", standby_redo, standby_desc, standby_identify, NULL, NULL, NULL, standby_decode) PG_RMGR(RM_HEAP2_ID, "Heap2", heap2_redo, heap2_desc, heap2_identify, NULL, NULL, heap_mask, heap2_decode) PG_RMGR(RM_HEAP_ID, "Heap", heap_redo, heap_desc, heap_identify, NULL, NULL, heap_mask, heap_decode) PG_RMGR(RM_BTREE_ID, "Btree", btree_redo, btree_desc, btree_identify, btree_xlog_startup, btree_xlog_cleanup, btree_mask, NULL) PG_RMGR(RM_HASH_ID, "Hash", hash_redo, hash_desc, hash_identify, NULL, NULL, hash_mask, NULL) PG_RMGR(RM_GIN_ID, "Gin", gin_redo, gin_desc, gin_identify, gin_xlog_startup, gin_xlog_cleanup, gin_mask, NULL) PG_RMGR(RM_GIST_ID, "Gist", gist_redo, gist_desc, gist_identify, gist_xlog_startup, gist_xlog_cleanup, gist_mask, NULL) PG_RMGR(RM_SEQ_ID, "Sequence", seq_redo, seq_desc, seq_identify, NULL, NULL, seq_mask, NULL) PG_RMGR(RM_SPGIST_ID, "SPGist", spg_redo, spg_desc, spg_identify, spg_xlog_startup, spg_xlog_cleanup, spg_mask, NULL) PG_RMGR(RM_BRIN_ID, "BRIN", brin_redo, brin_desc, brin_identify, NULL, NULL, brin_mask, NULL) PG_RMGR(RM_COMMIT_TS_ID, "CommitTs", commit_ts_redo, commit_ts_desc, commit_ts_identify, NULL, NULL, NULL, NULL) PG_RMGR(RM_REPLORIGIN_ID, "ReplicationOrigin", replorigin_redo, replorigin_desc, replorigin_identify, NULL, NULL, NULL, NULL) PG_RMGR(RM_GENERIC_ID, "Generic", generic_redo, generic_desc, generic_identify, NULL, NULL, generic_mask, NULL) PG_RMGR(RM_LOGICALMSG_ID, "LogicalMessage", logicalmsg_redo, logicalmsg_desc, logicalmsg_identify, NULL, NULL, NULL, logicalmsg_decode) libpg_query-17-6.1.0/src/postgres/include/access/sdir.h000066400000000000000000000035521477334012600227340ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sdir.h * POSTGRES scan direction definitions. * * * Portions Copyright (c) 1996-2024, 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 /* * Defines the direction for scanning a table or an index. Scans are never * invoked using NoMovementScanDirectionScans. For convenience, we use the * values -1 and 1 for backward and forward scans. This allows us to perform * a few mathematical tricks such as what is done in ScanDirectionCombine. */ typedef enum ScanDirection { BackwardScanDirection = -1, NoMovementScanDirection = 0, ForwardScanDirection = 1 } ScanDirection; /* * Determine the net effect of two direction specifications. * This relies on having ForwardScanDirection = +1, BackwardScanDirection = -1, * and will probably not do what you want if applied to any other values. */ #define ScanDirectionCombine(a, b) ((a) * (b)) /* * 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-17-6.1.0/src/postgres/include/access/skey.h000066400000000000000000000144541477334012600227510ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * skey.h * POSTGRES scan key definitions. * * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/access/slru.h000066400000000000000000000166721477334012600227670ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * slru.h * Simple LRU buffering for transaction status logfiles * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/slru.h * *------------------------------------------------------------------------- */ #ifndef SLRU_H #define SLRU_H #include "access/xlogdefs.h" #include "storage/lwlock.h" #include "storage/sync.h" /* * To avoid overflowing internal arithmetic and the size_t data type, the * number of buffers must not exceed this number. */ #define SLRU_MAX_ALLOWED_BUFFERS ((1024 * 1024 * 1024) / BLCKSZ) /* * Define SLRU segment size. A page is the same BLCKSZ as is used everywhere * else in Postgres. The segment size can be chosen somewhat arbitrarily; * we make it 32 pages by default, or 256Kb, i.e. 1M transactions for CLOG * or 64K transactions for SUBTRANS. * * Note: because TransactionIds are 32 bits and wrap around at 0xFFFFFFFF, * page numbering also wraps around at 0xFFFFFFFF/xxxx_XACTS_PER_PAGE (where * xxxx is CLOG or SUBTRANS, respectively), and segment numbering at * 0xFFFFFFFF/xxxx_XACTS_PER_PAGE/SLRU_PAGES_PER_SEGMENT. We need * take no explicit notice of that fact in slru.c, except when comparing * segment and page numbers in SimpleLruTruncate (see PagePrecedes()). */ #define SLRU_PAGES_PER_SEGMENT 32 /* * Page status codes. Note that these do not include the "dirty" bit. * page_dirty can be true only in the VALID or WRITE_IN_PROGRESS states; * in the latter case it implies that the page has been re-dirtied since * the write started. */ typedef enum { SLRU_PAGE_EMPTY, /* buffer is not in use */ SLRU_PAGE_READ_IN_PROGRESS, /* page is being read in */ SLRU_PAGE_VALID, /* page is valid and not being written */ SLRU_PAGE_WRITE_IN_PROGRESS, /* page is being written out */ } SlruPageStatus; /* * Shared-memory state * * ControlLock is used to protect access to the other fields, except * latest_page_number, which uses atomics; see comment in slru.c. */ typedef struct SlruSharedData { /* Number of buffers managed by this SLRU structure */ int num_slots; /* * Arrays holding info for each buffer slot. Page number is undefined * when status is EMPTY, as is page_lru_count. */ char **page_buffer; SlruPageStatus *page_status; bool *page_dirty; int64 *page_number; int *page_lru_count; /* The buffer_locks protects the I/O on each buffer slots */ LWLockPadded *buffer_locks; /* Locks to protect the in memory buffer slot access in SLRU bank. */ LWLockPadded *bank_locks; /*---------- * A bank-wise LRU counter is maintained because we do a victim buffer * search within a bank. Furthermore, manipulating an individual bank * counter avoids frequent cache invalidation since we update it every time * we access the page. * * We mark a page "most recently used" by setting * page_lru_count[slotno] = ++bank_cur_lru_count[bankno]; * The oldest page in the bank is therefore the one with the highest value * of * bank_cur_lru_count[bankno] - page_lru_count[slotno] * The counts will eventually wrap around, but this calculation still * works as long as no page's age exceeds INT_MAX counts. *---------- */ int *bank_cur_lru_count; /* * Optional array of WAL flush LSNs associated with entries in the SLRU * pages. If not zero/NULL, we must flush WAL before writing pages (true * for pg_xact, false for everything else). group_lsn[] has * lsn_groups_per_page entries per buffer slot, each containing the * highest LSN known for a contiguous group of SLRU entries on that slot's * page. */ XLogRecPtr *group_lsn; int lsn_groups_per_page; /* * latest_page_number is the page number of the current end of the log; * this is not critical data, since we use it only to avoid swapping out * the latest page. */ pg_atomic_uint64 latest_page_number; /* SLRU's index for statistics purposes (might not be unique) */ int slru_stats_idx; } SlruSharedData; typedef SlruSharedData *SlruShared; /* * SlruCtlData is an unshared structure that points to the active information * in shared memory. */ typedef struct SlruCtlData { SlruShared shared; /* Number of banks in this SLRU. */ uint16 nbanks; /* * If true, use long segment file names. Otherwise, use short file names. * * For details about the file name format, see SlruFileName(). */ bool long_segment_names; /* * Which sync handler function to use when handing sync requests over to * the checkpointer. SYNC_HANDLER_NONE to disable fsync (eg pg_notify). */ SyncRequestHandler sync_handler; /* * Decide whether a page is "older" for truncation and as a hint for * evicting pages in LRU order. Return true if every entry of the first * argument is older than every entry of the second argument. Note that * !PagePrecedes(a,b) && !PagePrecedes(b,a) need not imply a==b; it also * arises when some entries are older and some are not. For SLRUs using * SimpleLruTruncate(), this must use modular arithmetic. (For others, * the behavior of this callback has no functional implications.) Use * SlruPagePrecedesUnitTests() in SLRUs meeting its criteria. */ bool (*PagePrecedes) (int64, int64); /* * Dir is set during SimpleLruInit and does not change thereafter. Since * it's always the same, it doesn't need to be in shared memory. */ char Dir[64]; } SlruCtlData; typedef SlruCtlData *SlruCtl; /* * Get the SLRU bank lock for given SlruCtl and the pageno. * * This lock needs to be acquired to access the slru buffer slots in the * respective bank. */ static inline LWLock * SimpleLruGetBankLock(SlruCtl ctl, int64 pageno) { int bankno; bankno = pageno % ctl->nbanks; return &(ctl->shared->bank_locks[bankno].lock); } extern Size SimpleLruShmemSize(int nslots, int nlsns); extern int SimpleLruAutotuneBuffers(int divisor, int max); extern void SimpleLruInit(SlruCtl ctl, const char *name, int nslots, int nlsns, const char *subdir, int buffer_tranche_id, int bank_tranche_id, SyncRequestHandler sync_handler, bool long_segment_names); extern int SimpleLruZeroPage(SlruCtl ctl, int64 pageno); extern int SimpleLruReadPage(SlruCtl ctl, int64 pageno, bool write_ok, TransactionId xid); extern int SimpleLruReadPage_ReadOnly(SlruCtl ctl, int64 pageno, TransactionId xid); extern void SimpleLruWritePage(SlruCtl ctl, int slotno); extern void SimpleLruWriteAll(SlruCtl ctl, bool allow_redirtied); #ifdef USE_ASSERT_CHECKING extern void SlruPagePrecedesUnitTests(SlruCtl ctl, int per_page); #else #define SlruPagePrecedesUnitTests(ctl, per_page) do {} while (0) #endif extern void SimpleLruTruncate(SlruCtl ctl, int64 cutoffPage); extern bool SimpleLruDoesPhysicalPageExist(SlruCtl ctl, int64 pageno); typedef bool (*SlruScanCallback) (SlruCtl ctl, char *filename, int64 segpage, void *data); extern bool SlruScanDirectory(SlruCtl ctl, SlruScanCallback callback, void *data); extern void SlruDeleteSegment(SlruCtl ctl, int64 segno); extern int SlruSyncFileTag(SlruCtl ctl, const FileTag *ftag, char *path); /* SlruScanDirectory public callbacks */ extern bool SlruScanDirCbReportPresence(SlruCtl ctl, char *filename, int64 segpage, void *data); extern bool SlruScanDirCbDeleteAll(SlruCtl ctl, char *filename, int64 segpage, void *data); extern bool check_slru_buffers(const char *name, int *newval); #endif /* SLRU_H */ libpg_query-17-6.1.0/src/postgres/include/access/stratnum.h000066400000000000000000000060031477334012600236420ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * stratnum.h * POSTGRES strategy number definitions. * * * Portions Copyright (c) 1996-2024, 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 RTOldBelowStrategyNumber 29 /* for old spelling of <<| */ #define RTOldAboveStrategyNumber 30 /* for old spelling of |>> */ #define RTMaxStrategyNumber 30 #endif /* STRATNUM_H */ libpg_query-17-6.1.0/src/postgres/include/access/sysattr.h000066400000000000000000000015251477334012600235020ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sysattr.h * POSTGRES system attribute definitions. * * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/access/table.h000066400000000000000000000016441477334012600230620ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * table.h * Generic routines for table related code. * * * Portions Copyright (c) 1996-2024, 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 Relation try_table_open(Oid relationId, LOCKMODE lockmode); extern void table_close(Relation relation, LOCKMODE lockmode); #endif /* TABLE_H */ libpg_query-17-6.1.0/src/postgres/include/access/tableam.h000066400000000000000000002273341477334012600234060ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tableam.h * POSTGRES table access method definitions. * * * Portions Copyright (c) 1996-2024, 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 "access/xact.h" #include "executor/tuptable.h" #include "storage/read_stream.h" #include "utils/rel.h" #include "utils/snapshot.h" #define DEFAULT_TABLE_ACCESS_METHOD "heap" /* GUCs */ extern PGDLLIMPORT char *default_table_access_method; extern PGDLLIMPORT 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_TIDRANGESCAN = 1 << 4, SO_TYPE_ANALYZE = 1 << 5, /* several of SO_ALLOW_* may be specified */ /* allow or disallow use of access strategy */ SO_ALLOW_STRAT = 1 << 6, /* report location to syncscan logic? */ SO_ALLOW_SYNC = 1 << 7, /* verify visibility page-at-a-time? */ SO_ALLOW_PAGEMODE = 1 << 8, /* unregister snapshot at scan end? */ SO_TEMP_SNAPSHOT = 1 << 9, /* * At the discretion of the table AM, bitmap table scans may be able to * skip fetching a block from the table if none of the table data is * needed. If table data may be needed, set SO_NEED_TUPLES. */ SO_NEED_TUPLES = 1 << 10, } 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; /* * Result codes for table_update(..., update_indexes*..). * Used to determine which indexes to update. */ typedef enum TU_UpdateIndexes { /* No indexed columns were updated (incl. TID addressing of tuple) */ TU_None, /* A non-summarizing indexed column was updated, or the TID has changed */ TU_All, /* Only summarized columns were updated, TID is unchanged */ TU_Summarizing, } TU_UpdateIndexes; /* * 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. This is InvalidTransactionId if the target * was !LP_NORMAL (expected only for a TID retrieved from syscache). * * 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; /* * State used when calling table_index_delete_tuples(). * * Represents the status of table tuples, referenced by table TID and taken by * index AM from index tuples. State consists of high level parameters of the * deletion operation, plus two mutable palloc()'d arrays for information * about the status of individual table tuples. These are conceptually one * single array. Using two arrays keeps the TM_IndexDelete struct small, * which makes sorting the first array (the deltids array) fast. * * Some index AM callers perform simple index tuple deletion (by specifying * bottomup = false), and include only known-dead deltids. These known-dead * entries are all marked knowndeletable = true directly (typically these are * TIDs from LP_DEAD-marked index tuples), but that isn't strictly required. * * Callers that specify bottomup = true are "bottom-up index deletion" * callers. The considerations for the tableam are more subtle with these * callers because they ask the tableam to perform highly speculative work, * and might only expect the tableam to check a small fraction of all entries. * Caller is not allowed to specify knowndeletable = true for any entry * because everything is highly speculative. Bottom-up caller provides * context and hints to tableam -- see comments below for details on how index * AMs and tableams should coordinate during bottom-up index deletion. * * Simple index deletion callers may ask the tableam to perform speculative * work, too. This is a little like bottom-up deletion, but not too much. * The tableam will only perform speculative work when it's practically free * to do so in passing for simple deletion caller (while always performing * whatever work is needed to enable knowndeletable/LP_DEAD index tuples to * be deleted within index AM). This is the real reason why it's possible for * simple index deletion caller to specify knowndeletable = false up front * (this means "check if it's possible for me to delete corresponding index * tuple when it's cheap to do so in passing"). The index AM should only * include "extra" entries for index tuples whose TIDs point to a table block * that tableam is expected to have to visit anyway (in the event of a block * orientated tableam). The tableam isn't strictly obligated to check these * "extra" TIDs, but a block-based AM should always manage to do so in * practice. * * The final contents of the deltids/status arrays are interesting to callers * that ask tableam to perform speculative work (i.e. when _any_ items have * knowndeletable set to false up front). These index AM callers will * naturally need to consult final state to determine which index tuples are * in fact deletable. * * The index AM can keep track of which index tuple relates to which deltid by * setting idxoffnum (and/or relying on each entry being uniquely identifiable * using tid), which is important when the final contents of the array will * need to be interpreted -- the array can shrink from initial size after * tableam processing and/or have entries in a new order (tableam may sort * deltids array for its own reasons). Bottom-up callers may find that final * ndeltids is 0 on return from call to tableam, in which case no index tuple * deletions are possible. Simple deletion callers can rely on any entries * they know to be deletable appearing in the final array as deletable. */ typedef struct TM_IndexDelete { ItemPointerData tid; /* table TID from index tuple */ int16 id; /* Offset into TM_IndexStatus array */ } TM_IndexDelete; typedef struct TM_IndexStatus { OffsetNumber idxoffnum; /* Index am page offset number */ bool knowndeletable; /* Currently known to be deletable? */ /* Bottom-up index deletion specific fields follow */ bool promising; /* Promising (duplicate) index tuple? */ int16 freespace; /* Space freed in index if deleted */ } TM_IndexStatus; /* * Index AM/tableam coordination is central to the design of bottom-up index * deletion. The index AM provides hints about where to look to the tableam * by marking some entries as "promising". Index AM does this with duplicate * index tuples that are strongly suspected to be old versions left behind by * UPDATEs that did not logically modify indexed values. Index AM may find it * helpful to only mark entries as promising when they're thought to have been * affected by such an UPDATE in the recent past. * * Bottom-up index deletion casts a wide net at first, usually by including * all TIDs on a target index page. It is up to the tableam to worry about * the cost of checking transaction status information. The tableam is in * control, but needs careful guidance from the index AM. Index AM requests * that bottomupfreespace target be met, while tableam measures progress * towards that goal by tallying the per-entry freespace value for known * deletable entries. (All !bottomup callers can just set these space related * fields to zero.) */ typedef struct TM_IndexDeleteOp { Relation irel; /* Target index relation */ BlockNumber iblknum; /* Index block number (for error reports) */ bool bottomup; /* Bottom-up (not simple) deletion? */ int bottomupfreespace; /* Bottom-up space target */ /* Mutable per-TID information follows (index AM initializes entries) */ int ndeltids; /* Current # of deltids/status elements */ TM_IndexDelete *deltids; TM_IndexStatus *status; } TM_IndexDeleteOp; /* "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); /*----------- * Optional functions to provide scanning for ranges of ItemPointers. * Implementations must either provide both of these functions, or neither * of them. * * Implementations of scan_set_tidrange must themselves handle * ItemPointers of any value. i.e, they must handle each of the following: * * 1) mintid or maxtid is beyond the end of the table; and * 2) mintid is above maxtid; and * 3) item offset for mintid or maxtid is beyond the maximum offset * allowed by the AM. * * Implementations can assume that scan_set_tidrange is always called * before scan_getnextslot_tidrange or after scan_rescan and before any * further calls to scan_getnextslot_tidrange. */ void (*scan_set_tidrange) (TableScanDesc scan, ItemPointer mintid, ItemPointer maxtid); /* * Return next tuple from `scan` that's in the range of TIDs defined by * scan_set_tidrange. */ bool (*scan_getnextslot_tidrange) (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_index_delete_tuples() */ TransactionId (*index_delete_tuples) (Relation rel, TM_IndexDeleteOp *delstate); /* ------------------------------------------------------------------------ * 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, TU_UpdateIndexes *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 new relation storage 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 relfilelocator. * * 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_filelocator(). */ void (*relation_set_new_filelocator) (Relation rel, const RelFileLocator *newrlocator, char persistence, TransactionId *freezeXid, MultiXactId *minmulti); /* * This callback needs to remove all contents from `rel`'s current * relfilelocator. 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 RelFileLocator *newrlocator); /* See table_relation_copy_for_cluster() */ void (*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); /* * 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 rel, 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, ReadStream *stream); /* * 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 relation); /* * Returns slot using the callbacks returned by table_slot_callbacks(), and * registers it on *reglist. */ extern TupleTableSlot *table_slot_create(Relation relation, 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 relation, 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, bool need_tuple) { uint32 flags = SO_TYPE_BITMAPSCAN | SO_ALLOW_PAGEMODE; if (need_tuple) flags |= SO_NEED_TUPLES; 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); } /* * 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); /* We don't expect actual scans using NoMovementScanDirection */ Assert(direction == ForwardScanDirection || direction == BackwardScanDirection); /* * We don't expect direct calls to table_scan_getnextslot with valid * CheckXidAlive for catalog or regular tables. See detailed comments in * xact.c where these variables are declared. */ if (unlikely(TransactionIdIsValid(CheckXidAlive) && !bsysscan)) elog(ERROR, "unexpected table_scan_getnextslot call during logical decoding"); return sscan->rs_rd->rd_tableam->scan_getnextslot(sscan, direction, slot); } /* ---------------------------------------------------------------------------- * TID Range scanning related functions. * ---------------------------------------------------------------------------- */ /* * table_beginscan_tidrange is the entry point for setting up a TableScanDesc * for a TID range scan. */ static inline TableScanDesc table_beginscan_tidrange(Relation rel, Snapshot snapshot, ItemPointer mintid, ItemPointer maxtid) { TableScanDesc sscan; uint32 flags = SO_TYPE_TIDRANGESCAN | SO_ALLOW_PAGEMODE; sscan = rel->rd_tableam->scan_begin(rel, snapshot, 0, NULL, NULL, flags); /* Set the range of TIDs to scan */ sscan->rs_rd->rd_tableam->scan_set_tidrange(sscan, mintid, maxtid); return sscan; } /* * table_rescan_tidrange resets the scan position and sets the minimum and * maximum TID range to scan for a TableScanDesc created by * table_beginscan_tidrange. */ static inline void table_rescan_tidrange(TableScanDesc sscan, ItemPointer mintid, ItemPointer maxtid) { /* Ensure table_beginscan_tidrange() was used. */ Assert((sscan->rs_flags & SO_TYPE_TIDRANGESCAN) != 0); sscan->rs_rd->rd_tableam->scan_rescan(sscan, NULL, false, false, false, false); sscan->rs_rd->rd_tableam->scan_set_tidrange(sscan, mintid, maxtid); } /* * Fetch the next tuple from `sscan` for a TID range scan created by * table_beginscan_tidrange(). Stores the tuple in `slot` and returns true, * or returns false if no more tuples exist in the range. */ static inline bool table_scan_getnextslot_tidrange(TableScanDesc sscan, ScanDirection direction, TupleTableSlot *slot) { /* Ensure table_beginscan_tidrange() was used. */ Assert((sscan->rs_flags & SO_TYPE_TIDRANGESCAN) != 0); /* We don't expect actual scans using NoMovementScanDirection */ Assert(direction == ForwardScanDirection || direction == BackwardScanDirection); return sscan->rs_rd->rd_tableam->scan_getnextslot_tidrange(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 relation, 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) { /* * We don't expect direct calls to table_index_fetch_tuple with valid * CheckXidAlive for catalog or regular tables. See detailed comments in * xact.c where these variables are declared. */ if (unlikely(TransactionIdIsValid(CheckXidAlive) && !bsysscan)) elog(ERROR, "unexpected table_index_fetch_tuple call during logical decoding"); 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) { /* * We don't expect direct calls to table_tuple_fetch_row_version with * valid CheckXidAlive for catalog or regular tables. See detailed * comments in xact.c where these variables are declared. */ if (unlikely(TransactionIdIsValid(CheckXidAlive) && !bsysscan)) elog(ERROR, "unexpected table_tuple_fetch_row_version call during logical decoding"); 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); } /* * Determine which index tuples are safe to delete based on their table TID. * * Determines which entries from index AM caller's TM_IndexDeleteOp state * point to vacuumable table tuples. Entries that are found by tableam to be * vacuumable are naturally safe for index AM to delete, and so get directly * marked as deletable. See comments above TM_IndexDelete and comments above * TM_IndexDeleteOp for full details. * * Returns a snapshotConflictHorizon transaction ID that caller places in * its index deletion WAL record. This might be used during subsequent REDO * of the WAL record when in Hot Standby mode -- a recovery conflict for the * index deletion operation might be required on the standby. */ static inline TransactionId table_index_delete_tuples(Relation rel, TM_IndexDeleteOp *delstate) { return rel->rd_tableam->index_delete_tuples(rel, delstate); } /* ---------------------------------------------------------------------------- * 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 * relation storage 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, 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, TU_UpdateIndexes *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 `newrlocator`, with persistence set to * `persistence`. * * This is used both during relation creation and various DDL operations to * create new rel storage that can be filled from scratch. When creating * new storage for an existing relfilelocator, 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_filelocator(Relation rel, const RelFileLocator *newrlocator, char persistence, TransactionId *freezeXid, MultiXactId *minmulti) { rel->rd_tableam->relation_set_new_filelocator(rel, newrlocator, 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 relation storage 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 relfilelocator `newrlocator`. The new * relfilelocator 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 RelFileLocator *newrlocator) { rel->rd_tableam->relation_copy_data(rel, newrlocator); } /* * 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_get_cutoffs(), 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 the next block in the read stream. 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, ReadStream *stream) { return scan->rs_rd->rd_tableam->scan_analyze_next_block(scan, stream); } /* * 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 identifies 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) { /* * We don't expect direct calls to table_scan_bitmap_next_block with valid * CheckXidAlive for catalog or regular tables. See detailed comments in * xact.c where these variables are declared. */ if (unlikely(TransactionIdIsValid(CheckXidAlive) && !bsysscan)) elog(ERROR, "unexpected table_scan_bitmap_next_block call during logical decoding"); 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) { /* * We don't expect direct calls to table_scan_bitmap_next_tuple with valid * CheckXidAlive for catalog or regular tables. See detailed comments in * xact.c where these variables are declared. */ if (unlikely(TransactionIdIsValid(CheckXidAlive) && !bsysscan)) elog(ERROR, "unexpected table_scan_bitmap_next_tuple call during logical decoding"); 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) { /* * We don't expect direct calls to table_scan_sample_next_block with valid * CheckXidAlive for catalog or regular tables. See detailed comments in * xact.c where these variables are declared. */ if (unlikely(TransactionIdIsValid(CheckXidAlive) && !bsysscan)) elog(ERROR, "unexpected table_scan_sample_next_block call during logical decoding"); 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) { /* * We don't expect direct calls to table_scan_sample_next_tuple with valid * CheckXidAlive for catalog or regular tables. See detailed comments in * xact.c where these variables are declared. */ if (unlikely(TransactionIdIsValid(CheckXidAlive) && !bsysscan)) elog(ERROR, "unexpected table_scan_sample_next_tuple call during logical decoding"); 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, TU_UpdateIndexes *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, ParallelBlockTableScanWorker pbscanwork, ParallelBlockTableScanDesc pbscan); extern void table_block_parallelscan_startblock_init(Relation rel, ParallelBlockTableScanWorker pbscanwork, 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); /* ---------------------------------------------------------------------------- * Functions in heapam_handler.c * ---------------------------------------------------------------------------- */ extern const TableAmRoutine *GetHeapamTableAmRoutine(void); #endif /* TABLEAM_H */ libpg_query-17-6.1.0/src/postgres/include/access/tidstore.h000066400000000000000000000032741477334012600236310ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tidstore.h * TidStore interface. * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/tidstore.h * *------------------------------------------------------------------------- */ #ifndef TIDSTORE_H #define TIDSTORE_H #include "storage/itemptr.h" #include "utils/dsa.h" typedef struct TidStore TidStore; typedef struct TidStoreIter TidStoreIter; /* Result struct for TidStoreIterateNext */ typedef struct TidStoreIterResult { BlockNumber blkno; int max_offset; int num_offsets; OffsetNumber *offsets; } TidStoreIterResult; extern TidStore *TidStoreCreateLocal(size_t max_bytes, bool insert_only); extern TidStore *TidStoreCreateShared(size_t max_bytes, int tranche_id); extern TidStore *TidStoreAttach(dsa_handle area_handle, dsa_pointer handle); extern void TidStoreDetach(TidStore *ts); extern void TidStoreLockExclusive(TidStore *ts); extern void TidStoreLockShare(TidStore *ts); extern void TidStoreUnlock(TidStore *ts); extern void TidStoreDestroy(TidStore *ts); extern void TidStoreSetBlockOffsets(TidStore *ts, BlockNumber blkno, OffsetNumber *offsets, int num_offsets); extern bool TidStoreIsMember(TidStore *ts, ItemPointer tid); extern TidStoreIter *TidStoreBeginIterate(TidStore *ts); extern TidStoreIterResult *TidStoreIterateNext(TidStoreIter *iter); extern void TidStoreEndIterate(TidStoreIter *iter); extern size_t TidStoreMemoryUsage(TidStore *ts); extern dsa_pointer TidStoreGetHandle(TidStore *ts); extern dsa_area *TidStoreGetDSA(TidStore *ts); #endif /* TIDSTORE_H */ libpg_query-17-6.1.0/src/postgres/include/access/toast_compression.h000066400000000000000000000052631477334012600255470ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * toast_compression.h * Functions for toast compression. * * Copyright (c) 2021-2024, PostgreSQL Global Development Group * * src/include/access/toast_compression.h * *------------------------------------------------------------------------- */ #ifndef TOAST_COMPRESSION_H #define TOAST_COMPRESSION_H /* * GUC support. * * default_toast_compression is an integer for purposes of the GUC machinery, * but the value is one of the char values defined below, as they appear in * pg_attribute.attcompression, e.g. TOAST_PGLZ_COMPRESSION. */ extern PGDLLIMPORT int default_toast_compression; /* * Built-in compression method ID. The toast compression header will store * this in the first 2 bits of the raw length. These built-in compression * method IDs are directly mapped to the built-in compression methods. * * Don't use these values for anything other than understanding the meaning * of the raw bits from a varlena; in particular, if the goal is to identify * a compression method, use the constants TOAST_PGLZ_COMPRESSION, etc. * below. We might someday support more than 4 compression methods, but * we can never have more than 4 values in this enum, because there are * only 2 bits available in the places where this is stored. */ typedef enum ToastCompressionId { TOAST_PGLZ_COMPRESSION_ID = 0, TOAST_LZ4_COMPRESSION_ID = 1, TOAST_INVALID_COMPRESSION_ID = 2, } ToastCompressionId; /* * Built-in compression methods. pg_attribute will store these in the * attcompression column. In attcompression, InvalidCompressionMethod * denotes the default behavior. */ #define TOAST_PGLZ_COMPRESSION 'p' #define TOAST_LZ4_COMPRESSION 'l' #define InvalidCompressionMethod '\0' #define CompressionMethodIsValid(cm) ((cm) != InvalidCompressionMethod) /* pglz compression/decompression routines */ extern struct varlena *pglz_compress_datum(const struct varlena *value); extern struct varlena *pglz_decompress_datum(const struct varlena *value); extern struct varlena *pglz_decompress_datum_slice(const struct varlena *value, int32 slicelength); /* lz4 compression/decompression routines */ extern struct varlena *lz4_compress_datum(const struct varlena *value); extern struct varlena *lz4_decompress_datum(const struct varlena *value); extern struct varlena *lz4_decompress_datum_slice(const struct varlena *value, int32 slicelength); /* other stuff */ extern ToastCompressionId toast_get_compression_id(struct varlena *attr); extern char CompressionNameToMethod(const char *compression); extern const char *GetCompressionMethodName(char method); #endif /* TOAST_COMPRESSION_H */ libpg_query-17-6.1.0/src/postgres/include/access/transam.h000066400000000000000000000336771477334012600234530ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * transam.h * postgres transaction access method support code * * * Portions Copyright (c) 1996-2024, 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) #define FirstNormalFullTransactionId FullTransactionIdFromEpochAndXid(0, FirstNormalTransactionId) #define FullTransactionIdIsNormal(x) FullTransactionIdFollowsOrEquals(x, FirstNormalFullTransactionId) /* * 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) /* * Retreat a FullTransactionId variable, stepping over xids that would appear * to be special only when viewed as 32bit XIDs. */ static inline void FullTransactionIdRetreat(FullTransactionId *dest) { dest->value--; /* * In contrast to 32bit XIDs don't step over the "actual" special xids. * For 64bit xids these can't be reached as part of a wraparound as they * can in the 32bit case. */ if (FullTransactionIdPrecedes(*dest, FirstNormalFullTransactionId)) return; /* * But we do need to step over XIDs that'd appear special only for 32bit * XIDs. */ while (XidFromFullTransactionId(*dest) < FirstNormalTransactionId) dest->value--; } /* * Advance a FullTransactionId variable, stepping over xids that would appear * to be special only when viewed as 32bit XIDs. */ static inline void FullTransactionIdAdvance(FullTransactionId *dest) { dest->value++; /* see FullTransactionIdAdvance() */ if (FullTransactionIdPrecedes(*dest, FirstNormalFullTransactionId)) return; 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. Note that genbki.pl assigns * these OIDs independently in each catalog, so they're not guaranteed * to be globally unique. Furthermore, the bootstrap backend and * initdb's post-bootstrap processing can also assign OIDs in this range. * The normal OID-generation logic takes care of any OID conflicts that * might arise from that. * * OIDs 12000-16383 are reserved for unpinned objects created by initdb's * post-bootstrap processing. initdb forces the OID generator up to * 12000 as soon as it's made the pinned objects it's responsible for. * * 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. Critically, * it also ensures that no user-created object will be considered pinned. * ---------- */ #define FirstGenbkiObjectId 10000 #define FirstUnpinnedObjectId 12000 #define FirstNormalObjectId 16384 /* * TransamVariables 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 TransamVariablesData { /* * 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 nextXid; /* next 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 nextXid 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. */ FullTransactionId latestCompletedXid; /* newest full XID that has * committed or aborted */ /* * Number of top-level transactions with xids (i.e. which may have * modified the database) that completed in some form since the start of * the server. This currently is solely used to check whether * GetSnapshotData() needs to recompute the contents of the snapshot, or * not. There are likely other users of this. Always above 1. */ uint64 xactCompletionCount; /* * These fields are protected by XactTruncationLock */ TransactionId oldestClogXid; /* oldest it's safe to look up in clog */ } TransamVariablesData; /* ---------------- * extern declarations * ---------------- */ /* in transam/xact.c */ extern bool TransactionStartedDuringRecovery(void); /* in transam/varsup.c */ extern PGDLLIMPORT TransamVariablesData *TransamVariables; /* * prototypes for functions in transam/transam.c */ extern bool TransactionIdDidCommit(TransactionId transactionId); extern bool TransactionIdDidAbort(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 Size VarsupShmemSize(void); extern void VarsupShmemInit(void); 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); extern void StopGeneratingPinnedObjectIds(void); #ifdef USE_ASSERT_CHECKING extern void AssertTransactionIdInAllowableRange(TransactionId xid); #else #define AssertTransactionIdInAllowableRange(xid) ((void)true) #endif /* * 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 ReadNextTransactionId(void) { return XidFromFullTransactionId(ReadNextFullTransactionId()); } /* return transaction ID backed up by amount, handling wraparound correctly */ static inline TransactionId TransactionIdRetreatedBy(TransactionId xid, uint32 amount) { xid -= amount; while (xid < FirstNormalTransactionId) xid--; return xid; } /* return the older of the two IDs */ static inline TransactionId TransactionIdOlder(TransactionId a, TransactionId b) { if (!TransactionIdIsValid(a)) return b; if (!TransactionIdIsValid(b)) return a; if (TransactionIdPrecedes(a, b)) return a; return b; } /* return the older of the two IDs, assuming they're both normal */ static inline TransactionId NormalTransactionIdOlder(TransactionId a, TransactionId b) { Assert(TransactionIdIsNormal(a)); Assert(TransactionIdIsNormal(b)); if (NormalTransactionIdPrecedes(a, b)) return a; return b; } /* return the newer of the two IDs */ static inline FullTransactionId FullTransactionIdNewer(FullTransactionId a, FullTransactionId b) { if (!FullTransactionIdIsValid(a)) return b; if (!FullTransactionIdIsValid(b)) return a; if (FullTransactionIdFollows(a, b)) return a; return b; } /* * Compute FullTransactionId for the given TransactionId, assuming xid was * between [oldestXid, nextXid] at the time when TransamVariables->nextXid was * nextFullXid. When adding calls, evaluate what prevents xid from preceding * oldestXid if SetTransactionIdLimit() runs between the collection of xid and * the collection of nextFullXid. */ static inline FullTransactionId FullTransactionIdFromAllowableAt(FullTransactionId nextFullXid, TransactionId xid) { uint32 epoch; /* Special transaction ID. */ if (!TransactionIdIsNormal(xid)) return FullTransactionIdFromEpochAndXid(0, xid); Assert(TransactionIdPrecedesOrEquals(xid, XidFromFullTransactionId(nextFullXid))); /* * The 64 bit result must be <= nextFullXid, since nextFullXid hadn't been * issued yet when xid was in the past. The xid must therefore be from * the epoch of nextFullXid or the epoch before. We know this because we * must remove (by freezing) an XID before assigning the XID half an epoch * ahead of it. * * The unlikely() branch hint is dubious. It's perfect for the first 2^32 * XIDs of a cluster's life. Right at 2^32 XIDs, misprediction shoots to * 100%, then improves until perfection returns 2^31 XIDs later. Since * current callers pass relatively-recent XIDs, expect >90% prediction * accuracy overall. This favors average latency over tail latency. */ epoch = EpochFromFullTransactionId(nextFullXid); if (unlikely(xid > XidFromFullTransactionId(nextFullXid))) { Assert(epoch != 0); epoch--; } return FullTransactionIdFromEpochAndXid(epoch, xid); } #endif /* FRONTEND */ #endif /* TRANSAM_H */ libpg_query-17-6.1.0/src/postgres/include/access/tsmapi.h000066400000000000000000000051111477334012600232610ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tsmapi.h * API for tablesample methods * * Copyright (c) 2015-2024, PostgreSQL Global Development Group * * src/include/access/tsmapi.h * *------------------------------------------------------------------------- */ #ifndef TSMAPI_H #define TSMAPI_H #include "nodes/execnodes.h" #include "nodes/pathnodes.h" /* * Callback function signatures --- see tablesample-method.sgml for more info. */ typedef void (*SampleScanGetSampleSize_function) (PlannerInfo *root, RelOptInfo *baserel, List *paramexprs, BlockNumber *pages, double *tuples); typedef void (*InitSampleScan_function) (SampleScanState *node, int eflags); typedef void (*BeginSampleScan_function) (SampleScanState *node, Datum *params, int nparams, uint32 seed); typedef BlockNumber (*NextSampleBlock_function) (SampleScanState *node, BlockNumber nblocks); typedef OffsetNumber (*NextSampleTuple_function) (SampleScanState *node, BlockNumber blockno, OffsetNumber maxoffset); typedef void (*EndSampleScan_function) (SampleScanState *node); /* * TsmRoutine is the struct returned by a tablesample method's handler * function. It provides pointers to the callback functions needed by the * planner and executor, as well as additional information about the method. * * More function pointers are likely to be added in the future. * Therefore it's recommended that the handler initialize the struct with * makeNode(TsmRoutine) so that all fields are set to NULL. This will * ensure that no fields are accidentally left undefined. */ typedef struct TsmRoutine { NodeTag type; /* List of datatype OIDs for the arguments of the TABLESAMPLE clause */ List *parameterTypes; /* Can method produce repeatable samples across, or even within, queries? */ bool repeatable_across_queries; bool repeatable_across_scans; /* Functions for planning a SampleScan on a physical table */ SampleScanGetSampleSize_function SampleScanGetSampleSize; /* Functions for executing a SampleScan on a physical table */ InitSampleScan_function InitSampleScan; /* can be NULL */ BeginSampleScan_function BeginSampleScan; NextSampleBlock_function NextSampleBlock; /* can be NULL */ NextSampleTuple_function NextSampleTuple; EndSampleScan_function EndSampleScan; /* can be NULL */ } TsmRoutine; /* Functions in access/tablesample/tablesample.c */ extern TsmRoutine *GetTsmRoutine(Oid tsmhandler); #endif /* TSMAPI_H */ libpg_query-17-6.1.0/src/postgres/include/access/tupconvert.h000066400000000000000000000033511477334012600242010ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tupconvert.h * Tuple conversion support. * * * Portions Copyright (c) 1996-2024, 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 TupleConversionMap *convert_tuples_by_name_attrmap(TupleDesc indesc, TupleDesc outdesc, AttrMap *attrMap); 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 *in_cols); extern void free_conversion_map(TupleConversionMap *map); #endif /* TUPCONVERT_H */ libpg_query-17-6.1.0/src/postgres/include/access/tupdesc.h000066400000000000000000000124401477334012600234360ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tupdesc.h * POSTGRES tuple descriptor definitions. * * * Portions Copyright (c) 1996-2024, 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 bool equalRowTypes(TupleDesc tupdesc1, TupleDesc tupdesc2); extern uint32 hashRowType(TupleDesc desc); 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 BuildDescFromLists(const List *names, const List *types, const List *typmods, const List *collations); extern Node *TupleDescGetDefault(TupleDesc tupdesc, AttrNumber attnum); #endif /* TUPDESC_H */ libpg_query-17-6.1.0/src/postgres/include/access/tupmacs.h000066400000000000000000000150761477334012600234530ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tupmacs.h * Tuple macros used by both index tuples and heap tuples. * * * Portions Copyright (c) 1996-2024, 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. */ static inline bool att_isnull(int ATT, const bits8 *BITS) { return !(BITS[ATT >> 3] & (1 << (ATT & 0x07))); } #ifndef FRONTEND /* * 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. */ static inline Datum fetch_att(const void *T, bool attbyval, int attlen) { if (attbyval) { switch (attlen) { case sizeof(char): return CharGetDatum(*((const char *) T)); case sizeof(int16): return Int16GetDatum(*((const int16 *) T)); case sizeof(int32): return Int32GetDatum(*((const int32 *) T)); #if SIZEOF_DATUM == 8 case sizeof(Datum): return *((const Datum *) T); #endif default: elog(ERROR, "unsupported byval length: %d", attlen); return 0; } } else return PointerGetDatum(T); } #endif /* FRONTEND */ /* * 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 and multiranges, 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) \ )) \ ) #ifndef FRONTEND /* * 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 function * wouldn't be convenient. */ static inline void store_att_byval(void *T, Datum newdatum, int attlen) { 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; #if SIZEOF_DATUM == 8 case sizeof(Datum): *(Datum *) T = newdatum; break; #endif default: elog(ERROR, "unsupported byval length: %d", attlen); } } #endif /* FRONTEND */ #endif /* TUPMACS_H */ libpg_query-17-6.1.0/src/postgres/include/access/twophase.h000066400000000000000000000042561477334012600236270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * twophase.h * Two-phase-commit related declarations. * * * Portions Copyright (c) 1996-2024, 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 TransactionId TwoPhaseGetXidByVirtualXID(VirtualTransactionId vxid, bool *have_more); extern PGPROC *TwoPhaseGetDummyProc(TransactionId xid, bool lock_held); extern int TwoPhaseGetDummyProcNumber(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); extern bool LookupGXact(const char *gid, XLogRecPtr prepare_end_lsn, TimestampTz origin_prepare_timestamp); #endif /* TWOPHASE_H */ libpg_query-17-6.1.0/src/postgres/include/access/xact.h000066400000000000000000000434521477334012600227350ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * xact.h * postgres transaction system definitions * * * Portions Copyright (c) 1996-2024, 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 "datatype/timestamp.h" #include "lib/stringinfo.h" #include "nodes/pg_list.h" #include "storage/relfilelocator.h" #include "storage/sinval.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 PGDLLIMPORT 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 PGDLLIMPORT bool DefaultXactReadOnly; extern PGDLLIMPORT bool XactReadOnly; /* flag for logging statements in this transaction */ extern PGDLLIMPORT bool xact_is_sampled; /* * Xact is deferrable -- only meaningful (currently) for read only * SERIALIZABLE transactions */ extern PGDLLIMPORT bool DefaultXactDeferrable; extern PGDLLIMPORT 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 PGDLLIMPORT int synchronous_commit; /* used during logical streaming of a transaction */ extern PGDLLIMPORT TransactionId CheckXidAlive; extern PGDLLIMPORT bool bsysscan; /* * 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 PGDLLIMPORT 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) /* * XACT_FLAGS_NEEDIMMEDIATECOMMIT - records whether the top level statement * is one that requires immediate commit, such as CREATE DATABASE. */ #define XACT_FLAGS_NEEDIMMEDIATECOMMIT (1U << 2) /* * XACT_FLAGS_PIPELINING - set when we complete an extended-query-protocol * Execute message. This is useful for detecting that an implicit transaction * block has been created via pipelining. */ #define XACT_FLAGS_PIPELINING (1U << 3) /* * 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); /* Data structure for Save/RestoreTransactionCharacteristics */ typedef struct SavedTransactionCharacteristics { int save_XactIsoLevel; bool save_XactReadOnly; bool save_XactDeferrable; } SavedTransactionCharacteristics; /* ---------------- * 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 #define XLOG_XACT_INVALIDATIONS 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_RELFILELOCATORS (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) #define XACT_XINFO_HAS_DROPPED_STATS (1U << 8) /* * 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 two bytes 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_relfilelocators { int nrels; /* number of relations */ RelFileLocator xlocators[FLEXIBLE_ARRAY_MEMBER]; } xl_xact_relfilelocators; #define MinSizeOfXactRelfileLocators offsetof(xl_xact_relfilelocators, xlocators) /* * A transactionally dropped statistics entry. * * Declared here rather than pgstat.h because pgstat.h can't be included from * frontend code, but the WAL format needs to be readable by frontend * programs. */ typedef struct xl_xact_stats_item { int kind; Oid dboid; Oid objoid; } xl_xact_stats_item; typedef struct xl_xact_stats_items { int nitems; xl_xact_stats_item items[FLEXIBLE_ARRAY_MEMBER]; } xl_xact_stats_items; #define MinSizeOfXactStatsItems offsetof(xl_xact_stats_items, items) 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_relfilelocators follows if XINFO_HAS_RELFILELOCATORS */ /* xl_xact_stats_items follows if XINFO_HAS_DROPPED_STATS */ /* 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_relfilelocators follows if XINFO_HAS_RELFILELOCATORS */ /* xl_xact_stats_items follows if XINFO_HAS_DROPPED_STATS */ /* 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 ncommitstats; /* number of stats to drop on commit */ int32 nabortstats; /* number of stats to drop on abort */ 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; RelFileLocator *xlocators; int nstats; xl_xact_stats_item *stats; int nmsgs; SharedInvalidationMessage *msgs; TransactionId twophase_xid; /* only for 2PC */ char twophase_gid[GIDSIZE]; /* only for 2PC */ int nabortrels; /* only for 2PC */ RelFileLocator *abortlocators; /* only for 2PC */ int nabortstats; /* only for 2PC */ xl_xact_stats_item *abortstats; /* 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; RelFileLocator *xlocators; int nstats; xl_xact_stats_item *stats; 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(SavedTransactionCharacteristics *s); extern void RestoreTransactionCharacteristics(const SavedTransactionCharacteristics *s); 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 bool IsSubxactTopXidLogPending(void); extern void MarkSubxactTopXidLogged(void); extern int xactGetCommittedChildren(TransactionId **ptr); extern XLogRecPtr XactLogCommitRecord(TimestampTz commit_time, int nsubxacts, TransactionId *subxacts, int nrels, RelFileLocator *rels, int ndroppedstats, xl_xact_stats_item *droppedstats, int nmsgs, SharedInvalidationMessage *msgs, bool relcacheInval, int xactflags, TransactionId twophase_xid, const char *twophase_gid); extern XLogRecPtr XactLogAbortRecord(TimestampTz abort_time, int nsubxacts, TransactionId *subxacts, int nrels, RelFileLocator *rels, int ndroppedstats, xl_xact_stats_item *droppedstats, 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-17-6.1.0/src/postgres/include/access/xlog.h000066400000000000000000000260751477334012600227510ustar00rootroot00000000000000/* * xlog.h * * PostgreSQL write-ahead log manager * * Portions Copyright (c) 1996-2024, 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/xlogbackup.h" #include "access/xlogdefs.h" #include "datatype/timestamp.h" #include "lib/stringinfo.h" #include "nodes/pg_list.h" /* Sync methods */ enum WalSyncMethod { WAL_SYNC_METHOD_FSYNC = 0, WAL_SYNC_METHOD_FDATASYNC, WAL_SYNC_METHOD_OPEN, /* for O_SYNC */ WAL_SYNC_METHOD_FSYNC_WRITETHROUGH, WAL_SYNC_METHOD_OPEN_DSYNC /* for O_DSYNC */ }; extern PGDLLIMPORT int wal_sync_method; extern PGDLLIMPORT XLogRecPtr ProcLastRecPtr; extern PGDLLIMPORT XLogRecPtr XactLastRecEnd; extern PGDLLIMPORT XLogRecPtr XactLastCommitEnd; /* these variables are GUC parameters related to XLOG */ extern PGDLLIMPORT int wal_segment_size; extern PGDLLIMPORT int min_wal_size_mb; extern PGDLLIMPORT int max_wal_size_mb; extern PGDLLIMPORT int wal_keep_size_mb; extern PGDLLIMPORT int max_slot_wal_keep_size_mb; extern PGDLLIMPORT int XLOGbuffers; extern PGDLLIMPORT int XLogArchiveTimeout; extern PGDLLIMPORT int wal_retrieve_retry_interval; extern PGDLLIMPORT char *XLogArchiveCommand; extern PGDLLIMPORT bool EnableHotStandby; extern PGDLLIMPORT bool fullPageWrites; extern PGDLLIMPORT bool wal_log_hints; extern PGDLLIMPORT int wal_compression; extern PGDLLIMPORT bool wal_init_zero; extern PGDLLIMPORT bool wal_recycle; extern PGDLLIMPORT bool *wal_consistency_checking; extern PGDLLIMPORT char *wal_consistency_checking_string; extern PGDLLIMPORT bool log_checkpoints; extern PGDLLIMPORT bool track_wal_io_timing; extern PGDLLIMPORT int wal_decode_buffer_size; extern PGDLLIMPORT int CheckPointSegments; /* 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 PGDLLIMPORT int XLogArchiveMode; /* WAL levels */ typedef enum WalLevel { WAL_LEVEL_MINIMAL = 0, WAL_LEVEL_REPLICA, WAL_LEVEL_LOGICAL, } WalLevel; /* Compression algorithms for WAL */ typedef enum WalCompression { WAL_COMPRESSION_NONE = 0, WAL_COMPRESSION_PGLZ, WAL_COMPRESSION_LZ4, WAL_COMPRESSION_ZSTD, } WalCompression; /* 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) /* * 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 PGDLLIMPORT 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 PGDLLIMPORT 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; struct XLogReaderState; extern XLogRecPtr XLogInsertRecord(struct XLogRecData *rdata, XLogRecPtr fpw_lsn, uint8 flags, int num_fpi, bool topxid_included); extern void XLogFlush(XLogRecPtr record); extern bool XLogBackgroundFlush(void); extern bool XLogNeedsFlush(XLogRecPtr record); extern int XLogFileInit(XLogSegNo logsegno, TimeLineID logtli); extern int XLogFileOpen(XLogSegNo segno, TimeLineID tli); extern void CheckXLogRemoved(XLogSegNo segno, TimeLineID tli); extern XLogSegNo XLogGetLastRemovedSegno(void); extern XLogSegNo XLogGetOldestSegno(TimeLineID tli); extern void XLogSetAsyncXactLSN(XLogRecPtr asyncXactLSN); extern void XLogSetReplicationSlotMinimumLSN(XLogRecPtr lsn); extern void xlog_redo(struct XLogReaderState *record); extern void xlog_desc(StringInfo buf, struct XLogReaderState *record); extern const char *xlog_identify(uint8 info); extern void issue_xlog_fsync(int fd, XLogSegNo segno, TimeLineID tli); extern bool RecoveryInProgress(void); extern RecoveryState GetRecoveryState(void); extern bool XLogInsertAllowed(void); extern XLogRecPtr GetXLogInsertRecPtr(void); extern XLogRecPtr GetXLogWriteRecPtr(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 InitializeWalConsistencyChecking(void); extern void LocalProcessControlFile(bool reset); extern WalLevel GetActiveWalLevelOnStandby(void); extern void StartupXLOG(void); extern void ShutdownXLOG(int code, Datum arg); extern void CreateCheckPoint(int flags); extern bool CreateRestartPoint(int flags); extern WALAvailability GetWALAvailability(XLogRecPtr targetLSN); 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(TimeLineID *insertTLI); extern TimeLineID GetWALInsertionTimeLine(void); extern TimeLineID GetWALInsertionTimeLineIfSet(void); extern XLogRecPtr GetLastImportantRecPtr(void); extern void SetWalWriterSleeping(bool sleeping); extern Size WALReadFromBuffers(char *dstbuf, XLogRecPtr startptr, Size count, TimeLineID tli); /* * Routines used by xlogrecovery.c to call back into xlog.c during recovery. */ extern void RemoveNonParentXlogFiles(XLogRecPtr switchpoint, TimeLineID newTLI); extern bool XLogCheckpointNeeded(XLogSegNo new_segno); extern void SwitchIntoArchiveRecovery(XLogRecPtr EndRecPtr, TimeLineID replayTLI); extern void ReachedEndOfBackup(XLogRecPtr EndRecPtr, TimeLineID tli); extern void SetInstallXLogFileSegmentActive(void); extern bool IsInstallXLogFileSegmentActive(void); extern void XLogShutdownWalRcv(void); /* * 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_RUNNING, } SessionBackupState; extern void do_pg_backup_start(const char *backupidstr, bool fast, List **tablespaces, BackupState *state, StringInfo tblspcmapfile); extern void do_pg_backup_stop(BackupState *state, bool waitforarchive); 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" #endif /* XLOG_H */ libpg_query-17-6.1.0/src/postgres/include/access/xlog_internal.h000066400000000000000000000307241477334012600246410ustar00rootroot00000000000000/* * 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-2024, 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/relfilelocator.h" /* * Each page of XLOG file has a header like this: */ #define XLOG_PAGE_MAGIC 0xD116 /* 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; it tracks xl_tot_len in the initial * header. 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 /* Replaces a missing contrecord; see CreateOverwriteContrecordRecord */ #define XLP_FIRST_IS_OVERWRITE_CONTRECORD 0x0008 /* All defined flag bits in xlp_info (used for validity checking of header) */ #define XLP_ALL_FLAGS 0x000F #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 function in a helper * function allocating the result generated. */ static inline void XLogFileName(char *fname, TimeLineID tli, XLogSegNo logSegNo, int wal_segsz_bytes) { snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli, (uint32) (logSegNo / XLogSegmentsPerXLogId(wal_segsz_bytes)), (uint32) (logSegNo % XLogSegmentsPerXLogId(wal_segsz_bytes))); } static inline void XLogFileNameById(char *fname, TimeLineID tli, uint32 log, uint32 seg) { snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli, log, seg); } static inline bool IsXLogFileName(const char *fname) { return (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. */ static inline bool IsPartialXLogFileName(const char *fname) { return (strlen(fname) == XLOG_FNAME_LEN + strlen(".partial") && strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN && strcmp(fname + XLOG_FNAME_LEN, ".partial") == 0); } static inline void XLogFromFileName(const char *fname, TimeLineID *tli, XLogSegNo *logSegNo, int wal_segsz_bytes) { uint32 log; uint32 seg; sscanf(fname, "%08X%08X%08X", tli, &log, &seg); *logSegNo = (uint64) log * XLogSegmentsPerXLogId(wal_segsz_bytes) + seg; } static inline void XLogFilePath(char *path, TimeLineID tli, XLogSegNo logSegNo, int wal_segsz_bytes) { snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X", tli, (uint32) (logSegNo / XLogSegmentsPerXLogId(wal_segsz_bytes)), (uint32) (logSegNo % XLogSegmentsPerXLogId(wal_segsz_bytes))); } static inline void TLHistoryFileName(char *fname, TimeLineID tli) { snprintf(fname, MAXFNAMELEN, "%08X.history", tli); } static inline bool IsTLHistoryFileName(const char *fname) { return (strlen(fname) == 8 + strlen(".history") && strspn(fname, "0123456789ABCDEF") == 8 && strcmp(fname + 8, ".history") == 0); } static inline void TLHistoryFilePath(char *path, TimeLineID tli) { snprintf(path, MAXPGPATH, XLOGDIR "/%08X.history", tli); } static inline void StatusFilePath(char *path, const char *xlog, const char *suffix) { snprintf(path, MAXPGPATH, XLOGDIR "/archive_status/%s%s", xlog, suffix); } static inline void BackupHistoryFileName(char *fname, TimeLineID tli, XLogSegNo logSegNo, XLogRecPtr startpoint, int 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))); } static inline bool IsBackupHistoryFileName(const char *fname) { return (strlen(fname) > XLOG_FNAME_LEN && strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN && strcmp(fname + strlen(fname) - strlen(".backup"), ".backup") == 0); } static inline void BackupHistoryFilePath(char *path, TimeLineID tli, XLogSegNo logSegNo, XLogRecPtr startpoint, int 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; /* Overwrite of prior contrecord */ typedef struct xl_overwrite_contrecord { XLogRecPtr overwritten_lsn; TimestampTz overwrite_time; } xl_overwrite_contrecord; /* 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 */ int wal_level; } 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; struct LogicalDecodingContext; struct XLogRecordBuffer; /* * 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). If rm_name is * NULL, the corresponding RmgrTable entry is considered invalid. */ 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); void (*rm_decode) (struct LogicalDecodingContext *ctx, struct XLogRecordBuffer *buf); } RmgrData; extern PGDLLIMPORT RmgrData RmgrTable[]; extern void RmgrStartup(void); extern void RmgrCleanup(void); extern void RmgrNotFound(RmgrId rmid); extern void RegisterCustomRmgr(RmgrId rmid, const RmgrData *rmgr); #ifndef FRONTEND static inline bool RmgrIdExists(RmgrId rmid) { return RmgrTable[rmid].rm_name != NULL; } static inline RmgrData GetRmgr(RmgrId rmid) { if (unlikely(!RmgrIdExists(rmid))) RmgrNotFound(rmid); return RmgrTable[rmid]; } #endif /* * 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); extern void XLogRecGetBlockRefInfo(XLogReaderState *record, bool pretty, bool detailed_format, StringInfo buf, uint32 *fpi_len); /* * Exported for the functions in timeline.c and xlogarchive.c. Only valid * in the startup process. */ extern PGDLLIMPORT bool ArchiveRecoveryRequested; extern PGDLLIMPORT bool InArchiveRecovery; extern PGDLLIMPORT bool StandbyMode; extern PGDLLIMPORT char *recoveryRestoreCommand; #endif /* XLOG_INTERNAL_H */ libpg_query-17-6.1.0/src/postgres/include/access/xlogbackup.h000066400000000000000000000026471477334012600241360ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * xlogbackup.h * Definitions for internals of base backups. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/access/xlogbackup.h *------------------------------------------------------------------------- */ #ifndef XLOG_BACKUP_H #define XLOG_BACKUP_H #include "access/xlogdefs.h" #include "pgtime.h" /* Structure to hold backup state. */ typedef struct BackupState { /* Fields saved at backup start */ /* Backup label name one extra byte for null-termination */ char name[MAXPGPATH + 1]; XLogRecPtr startpoint; /* backup start WAL location */ TimeLineID starttli; /* backup start TLI */ XLogRecPtr checkpointloc; /* last checkpoint location */ pg_time_t starttime; /* backup start time */ bool started_in_recovery; /* backup started in recovery? */ XLogRecPtr istartpoint; /* incremental based on backup at this LSN */ TimeLineID istarttli; /* incremental based on backup on this TLI */ /* Fields saved at the end of backup */ XLogRecPtr stoppoint; /* backup stop WAL location */ TimeLineID stoptli; /* backup stop TLI */ pg_time_t stoptime; /* backup stop time */ } BackupState; extern char *build_backup_content(BackupState *state, bool ishistoryfile); #endif /* XLOG_BACKUP_H */ libpg_query-17-6.1.0/src/postgres/include/access/xlogdefs.h000066400000000000000000000050331477334012600236020ustar00rootroot00000000000000/* * xlogdefs.h * * Postgres write-ahead log manager record pointer and * timeline number definitions * * Portions Copyright (c) 1996-2024, 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) /* * Handy macro for printing XLogRecPtr in conventional format, e.g., * * printf("%X/%X", LSN_FORMAT_ARGS(lsn)); */ #define LSN_FORMAT_ARGS(lsn) (AssertVariableIsOfTypeMacro((lsn), XLogRecPtr), (uint32) ((lsn) >> 32)), ((uint32) (lsn)) /* * 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; /* * This chunk of hackery attempts to determine which file sync methods * are available on the current platform, and to choose an appropriate * default method. * * Note that we define our own O_DSYNC on Windows, but not O_SYNC. */ #if defined(PLATFORM_DEFAULT_WAL_SYNC_METHOD) #define DEFAULT_WAL_SYNC_METHOD PLATFORM_DEFAULT_WAL_SYNC_METHOD #elif defined(O_DSYNC) && (!defined(O_SYNC) || O_DSYNC != O_SYNC) #define DEFAULT_WAL_SYNC_METHOD WAL_SYNC_METHOD_OPEN_DSYNC #else #define DEFAULT_WAL_SYNC_METHOD WAL_SYNC_METHOD_FDATASYNC #endif #endif /* XLOG_DEFS_H */ libpg_query-17-6.1.0/src/postgres/include/access/xlogprefetcher.h000066400000000000000000000027611477334012600250150ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * xlogprefetcher.h * Declarations for the recovery prefetching module. * * Portions Copyright (c) 2022-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/access/xlogprefetcher.h *------------------------------------------------------------------------- */ #ifndef XLOGPREFETCHER_H #define XLOGPREFETCHER_H #include "access/xlogdefs.h" #include "access/xlogreader.h" #include "access/xlogrecord.h" /* GUCs */ extern PGDLLIMPORT int recovery_prefetch; /* Possible values for recovery_prefetch */ typedef enum { RECOVERY_PREFETCH_OFF, RECOVERY_PREFETCH_ON, RECOVERY_PREFETCH_TRY, } RecoveryPrefetchValue; struct XLogPrefetcher; typedef struct XLogPrefetcher XLogPrefetcher; extern void XLogPrefetchReconfigure(void); extern size_t XLogPrefetchShmemSize(void); extern void XLogPrefetchShmemInit(void); extern void XLogPrefetchResetStats(void); extern XLogPrefetcher *XLogPrefetcherAllocate(XLogReaderState *reader); extern void XLogPrefetcherFree(XLogPrefetcher *prefetcher); extern XLogReaderState *XLogPrefetcherGetReader(XLogPrefetcher *prefetcher); extern void XLogPrefetcherBeginRead(XLogPrefetcher *prefetcher, XLogRecPtr recPtr); extern XLogRecord *XLogPrefetcherReadRecord(XLogPrefetcher *prefetcher, char **errmsg); extern void XLogPrefetcherComputeStats(XLogPrefetcher *prefetcher); #endif libpg_query-17-6.1.0/src/postgres/include/access/xlogreader.h000066400000000000000000000362101477334012600241240ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * xlogreader.h * Definitions for the generic XLog reading facility * * Portions Copyright (c) 2013-2024, 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 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" #include "storage/buf.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 */ RelFileLocator rlocator; ForkNumber forknum; BlockNumber blkno; /* Prefetching workspace. */ Buffer prefetch_buffer; /* 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; /* * The decoded contents of a record. This occupies a contiguous region of * memory, with main_data and blocks[n].data pointing to memory after the * members declared here. */ typedef struct DecodedXLogRecord { /* Private member used for resource management. */ size_t size; /* total size of decoded record */ bool oversized; /* outside the regular decode buffer? */ struct DecodedXLogRecord *next; /* decoded record queue link */ /* Public members. */ XLogRecPtr lsn; /* location */ XLogRecPtr next_lsn; /* location of next record */ XLogRecord header; /* header */ RepOriginId record_origin; TransactionId toplevel_xid; /* XID of top-level transaction */ char *main_data; /* record's main data portion */ uint32 main_data_len; /* main data portion's length */ int max_block_id; /* highest block_id in use (-1 if none) */ DecodedBkpBlock blocks[FLEXIBLE_ARRAY_MEMBER]; } DecodedXLogRecord; 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. * * Start and end point of last record returned by XLogReadRecord(). These * are also available as record->lsn and record->next_lsn. */ XLogRecPtr ReadRecPtr; /* start of last record read */ XLogRecPtr EndRecPtr; /* end+1 of last record read */ /* * Set at the end of recovery: the start point of a partial record at the * end of WAL (InvalidXLogRecPtr if there wasn't one), and the start * location of its first contrecord that went missing. */ XLogRecPtr abortedRecPtr; XLogRecPtr missingContrecPtr; /* Set when XLP_FIRST_IS_OVERWRITE_CONTRECORD is found */ XLogRecPtr overwrittenRecPtr; /* ---------------------------------------- * Decoded representation of current record * * Use XLogRecGet* functions to investigate the record; these fields * should not be accessed directly. * ---------------------------------------- * Start and end point of the last record read and decoded by * XLogReadRecordInternal(). NextRecPtr is also used as the position to * decode next. Calling XLogBeginRead() sets NextRecPtr and EndRecPtr to * the requested starting position. */ XLogRecPtr DecodeRecPtr; /* start of last record decoded */ XLogRecPtr NextRecPtr; /* end+1 of last record decoded */ XLogRecPtr PrevRecPtr; /* start of previous record decoded */ /* Last record returned by XLogReadRecord(). */ DecodedXLogRecord *record; /* ---------------------------------------- * private/internal state * ---------------------------------------- */ /* * Buffer for decoded records. This is a circular buffer, though * individual records can't be split in the middle, so some space is often * wasted at the end. Oversized records that don't fit in this space are * allocated separately. */ char *decode_buffer; size_t decode_buffer_size; bool free_decode_buffer; /* need to free? */ char *decode_buffer_head; /* data is read from the head */ char *decode_buffer_tail; /* new data is written at the tail */ /* * Queue of records that have been decoded. This is a linked list that * usually consists of consecutive records in decode_buffer, but may also * contain oversized records allocated with palloc(). */ DecodedXLogRecord *decode_queue_head; /* oldest decoded record */ DecodedXLogRecord *decode_queue_tail; /* newest decoded record */ /* * 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; bool errormsg_deferred; /* * Flag to indicate to XLogPageReadCB that it should not block waiting for * data. */ bool nonblocking; }; /* * Check if XLogNextRecord() has any more queued records or an error to return. */ static inline bool XLogReaderHasQueuedRecordOrError(XLogReaderState *state) { return (state->decode_queue_head != NULL) || state->errormsg_deferred; } /* Get a new XLogReader */ extern XLogReaderState *XLogReaderAllocate(int wal_segment_size, const char *waldir, XLogReaderRoutine *routine, void *private_data); /* Free an XLogReader */ extern void XLogReaderFree(XLogReaderState *state); /* Optionally provide a circular decoding buffer to allow readahead. */ extern void XLogReaderSetDecodeBuffer(XLogReaderState *state, void *buffer, size_t size); /* Position the XLogReader to given record */ extern void XLogBeginRead(XLogReaderState *state, XLogRecPtr RecPtr); extern XLogRecPtr XLogFindNextRecord(XLogReaderState *state, XLogRecPtr RecPtr); /* Return values from XLogPageReadCB. */ typedef enum XLogPageReadResult { XLREAD_SUCCESS = 0, /* record is successfully read */ XLREAD_FAIL = -1, /* failed during reading a record */ XLREAD_WOULDBLOCK = -2, /* nonblocking mode only, no data */ } XLogPageReadResult; /* Read the next XLog record. Returns NULL on end-of-WAL or failure */ extern struct XLogRecord *XLogReadRecord(XLogReaderState *state, char **errormsg); /* Consume the next record or error. */ extern DecodedXLogRecord *XLogNextRecord(XLogReaderState *state, char **errormsg); /* Release the previously returned record, if necessary. */ extern XLogRecPtr XLogReleasePreviousRecord(XLogReaderState *state); /* Try to read ahead, if there is data and space. */ extern DecodedXLogRecord *XLogReadAhead(XLogReaderState *state, bool nonblocking); /* Validate a page */ extern bool XLogReaderValidatePageHeader(XLogReaderState *state, XLogRecPtr recptr, char *phdr); /* Forget error produced by XLogReaderValidatePageHeader(). */ extern void XLogReaderResetError(XLogReaderState *state); /* * 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 size_t DecodeXLogRecordRequiredSpace(size_t xl_tot_len); extern bool DecodeXLogRecord(XLogReaderState *state, DecodedXLogRecord *decoded, XLogRecord *record, XLogRecPtr lsn, char **errormsg); /* * Macros that provide access to parts of the record most recently returned by * XLogReadRecord() or XLogNextRecord(). */ #define XLogRecGetTotalLen(decoder) ((decoder)->record->header.xl_tot_len) #define XLogRecGetPrev(decoder) ((decoder)->record->header.xl_prev) #define XLogRecGetInfo(decoder) ((decoder)->record->header.xl_info) #define XLogRecGetRmid(decoder) ((decoder)->record->header.xl_rmid) #define XLogRecGetXid(decoder) ((decoder)->record->header.xl_xid) #define XLogRecGetOrigin(decoder) ((decoder)->record->record_origin) #define XLogRecGetTopXid(decoder) ((decoder)->record->toplevel_xid) #define XLogRecGetData(decoder) ((decoder)->record->main_data) #define XLogRecGetDataLen(decoder) ((decoder)->record->main_data_len) #define XLogRecHasAnyBlockRefs(decoder) ((decoder)->record->max_block_id >= 0) #define XLogRecMaxBlockId(decoder) ((decoder)->record->max_block_id) #define XLogRecGetBlock(decoder, i) (&(decoder)->record->blocks[(i)]) #define XLogRecHasBlockRef(decoder, block_id) \ (((decoder)->record->max_block_id >= (block_id)) && \ ((decoder)->record->blocks[block_id].in_use)) #define XLogRecHasBlockImage(decoder, block_id) \ ((decoder)->record->blocks[block_id].has_image) #define XLogRecBlockImageApply(decoder, block_id) \ ((decoder)->record->blocks[block_id].apply_image) #define XLogRecHasBlockData(decoder, block_id) \ ((decoder)->record->blocks[block_id].has_data) #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 void XLogRecGetBlockTag(XLogReaderState *record, uint8 block_id, RelFileLocator *rlocator, ForkNumber *forknum, BlockNumber *blknum); extern bool XLogRecGetBlockTagExtended(XLogReaderState *record, uint8 block_id, RelFileLocator *rlocator, ForkNumber *forknum, BlockNumber *blknum, Buffer *prefetch_buffer); #endif /* XLOGREADER_H */ libpg_query-17-6.1.0/src/postgres/include/access/xlogrecord.h000066400000000000000000000220001477334012600241300ustar00rootroot00000000000000/* * xlogrecord.h * * Definitions for the WAL record format. * * Portions Copyright (c) 1996-2024, 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/relfilelocator.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 /* * XLogReader needs to allocate all the data of a WAL record in a single * chunk. This means that a single XLogRecord cannot exceed MaxAllocSize * in length if we ignore any allocation overhead of the XLogReader. * * To accommodate some overhead, this value allows for 4M of allocation * overhead, that should be plenty enough for what the XLogReader * infrastructure expects as extra. */ #define XLogRecordMaxSize (1020 * 1024 * 1024) /* * 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 RelFileLocator 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 one of the supported algorithms, 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_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_APPLY 0x02 /* page image should be restored * during replay */ /* compression methods supported */ #define BKPIMAGE_COMPRESS_PGLZ 0x04 #define BKPIMAGE_COMPRESS_LZ4 0x08 #define BKPIMAGE_COMPRESS_ZSTD 0x10 #define BKPIMAGE_COMPRESSED(info) \ ((info & (BKPIMAGE_COMPRESS_PGLZ | BKPIMAGE_COMPRESS_LZ4 | \ BKPIMAGE_COMPRESS_ZSTD)) != 0) /* * 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(RelFileLocator) + \ 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 /* RelFileLocator 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 few ID * numbers are reserved to denote the "main" data portion of the record, * as well as replication-supporting transaction metadata. * * 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 #define XLR_BLOCK_ID_TOPLEVEL_XID 252 #endif /* XLOGRECORD_H */ libpg_query-17-6.1.0/src/postgres/include/access/xlogrecovery.h000066400000000000000000000122761477334012600245260ustar00rootroot00000000000000/* * xlogrecovery.h * * Functions for WAL recovery and standby mode * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xlogrecovery.h */ #ifndef XLOGRECOVERY_H #define XLOGRECOVERY_H #include "access/xlogreader.h" #include "catalog/pg_control.h" #include "lib/stringinfo.h" #include "utils/timestamp.h" /* * 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; /* Recovery pause states */ typedef enum RecoveryPauseState { RECOVERY_NOT_PAUSED, /* pause not requested */ RECOVERY_PAUSE_REQUESTED, /* pause requested, but not yet paused */ RECOVERY_PAUSED, /* recovery is paused */ } RecoveryPauseState; /* User-settable GUC parameters */ extern PGDLLIMPORT bool recoveryTargetInclusive; extern PGDLLIMPORT int recoveryTargetAction; extern PGDLLIMPORT int recovery_min_apply_delay; extern PGDLLIMPORT char *PrimaryConnInfo; extern PGDLLIMPORT char *PrimarySlotName; extern PGDLLIMPORT char *recoveryRestoreCommand; extern PGDLLIMPORT char *recoveryEndCommand; extern PGDLLIMPORT char *archiveCleanupCommand; /* indirectly set via GUC system */ extern PGDLLIMPORT TransactionId recoveryTargetXid; extern PGDLLIMPORT char *recovery_target_time_string; extern PGDLLIMPORT TimestampTz recoveryTargetTime; extern PGDLLIMPORT const char *recoveryTargetName; extern PGDLLIMPORT XLogRecPtr recoveryTargetLSN; extern PGDLLIMPORT RecoveryTargetType recoveryTarget; extern PGDLLIMPORT bool wal_receiver_create_temp_slot; extern PGDLLIMPORT RecoveryTargetTimeLineGoal recoveryTargetTimeLineGoal; extern PGDLLIMPORT TimeLineID recoveryTargetTLIRequested; extern PGDLLIMPORT TimeLineID recoveryTargetTLI; /* Have we already reached a consistent database state? */ extern PGDLLIMPORT bool reachedConsistency; /* Are we currently in standby mode? */ extern PGDLLIMPORT bool StandbyMode; extern Size XLogRecoveryShmemSize(void); extern void XLogRecoveryShmemInit(void); extern void InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr, bool *haveBackupLabel_ptr, bool *haveTblspcMap_ptr); extern void PerformWalRecovery(void); /* * FinishWalRecovery() returns this. It contains information about the point * where recovery ended, and why it ended. */ typedef struct { /* * Information about the last valid or applied record, after which new WAL * can be appended. 'lastRec' is the position where the last record * starts, and 'endOfLog' is its end. 'lastPage' is a copy of the last * partial page that contains endOfLog (or NULL if endOfLog is exactly at * page boundary). 'lastPageBeginPtr' is the position where the last page * begins. * * endOfLogTLI is the TLI in the filename of the XLOG segment containing * the last applied record. It could be different from lastRecTLI, if * there was a timeline switch in that segment, and we were reading the * old WAL from a segment belonging to a higher timeline. */ XLogRecPtr lastRec; /* start of last valid or applied record */ TimeLineID lastRecTLI; XLogRecPtr endOfLog; /* end of last valid or applied record */ TimeLineID endOfLogTLI; XLogRecPtr lastPageBeginPtr; /* LSN of page that contains endOfLog */ char *lastPage; /* copy of the last page, up to endOfLog */ /* * abortedRecPtr is the start pointer of a broken record at end of WAL * when recovery completes; missingContrecPtr is the location of the first * contrecord that went missing. See CreateOverwriteContrecordRecord for * details. */ XLogRecPtr abortedRecPtr; XLogRecPtr missingContrecPtr; /* short human-readable string describing why recovery ended */ char *recoveryStopReason; /* * If standby or recovery signal file was found, these flags are set * accordingly. */ bool standby_signal_file_found; bool recovery_signal_file_found; } EndOfWalRecoveryInfo; extern EndOfWalRecoveryInfo *FinishWalRecovery(void); extern void ShutdownWalRecovery(void); extern void RemovePromoteSignalFiles(void); extern bool HotStandbyActive(void); extern XLogRecPtr GetXLogReplayRecPtr(TimeLineID *replayTLI); extern RecoveryPauseState GetRecoveryPauseState(void); extern void SetRecoveryPause(bool recoveryPause); extern void GetXLogReceiptTime(TimestampTz *rtime, bool *fromStream); extern TimestampTz GetLatestXTime(void); extern TimestampTz GetCurrentChunkReplayStartTime(void); extern XLogRecPtr GetCurrentReplayRecPtr(TimeLineID *replayEndTLI); extern bool PromoteIsTriggered(void); extern bool CheckPromoteSignal(void); extern void WakeupRecovery(void); extern void StartupRequestWalReceiverRestart(void); extern void XLogRequestWalReceiverReply(void); extern void RecoveryRequiresIntParameter(const char *param_name, int currValue, int minValue); extern void xlog_outdesc(StringInfo buf, XLogReaderState *record); #endif /* XLOGRECOVERY_H */ libpg_query-17-6.1.0/src/postgres/include/archive/000077500000000000000000000000001477334012600217755ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/archive/archive_module.h000066400000000000000000000040711477334012600251360ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * archive_module.h * Exports for archive modules. * * Copyright (c) 2022-2024, PostgreSQL Global Development Group * * src/include/archive/archive_module.h * *------------------------------------------------------------------------- */ #ifndef _ARCHIVE_MODULE_H #define _ARCHIVE_MODULE_H /* * The value of the archive_library GUC. */ extern PGDLLIMPORT char *XLogArchiveLibrary; typedef struct ArchiveModuleState { /* * Private data pointer for use by an archive module. This can be used to * store state for the module that will be passed to each of its * callbacks. */ void *private_data; } ArchiveModuleState; /* * Archive module callbacks * * These callback functions should be defined by archive libraries and returned * via _PG_archive_module_init(). ArchiveFileCB is the only required callback. * For more information about the purpose of each callback, refer to the * archive modules documentation. */ typedef void (*ArchiveStartupCB) (ArchiveModuleState *state); typedef bool (*ArchiveCheckConfiguredCB) (ArchiveModuleState *state); typedef bool (*ArchiveFileCB) (ArchiveModuleState *state, const char *file, const char *path); typedef void (*ArchiveShutdownCB) (ArchiveModuleState *state); typedef struct ArchiveModuleCallbacks { ArchiveStartupCB startup_cb; ArchiveCheckConfiguredCB check_configured_cb; ArchiveFileCB archive_file_cb; ArchiveShutdownCB shutdown_cb; } ArchiveModuleCallbacks; /* * Type of the shared library symbol _PG_archive_module_init that is looked * up when loading an archive library. */ typedef const ArchiveModuleCallbacks *(*ArchiveModuleInit) (void); extern PGDLLEXPORT const ArchiveModuleCallbacks *_PG_archive_module_init(void); /* Support for messages reported from archive module callbacks. */ extern PGDLLIMPORT char *arch_module_check_errdetail_string; #define arch_module_check_errdetail \ pre_format_elog_string(errno, TEXTDOMAIN), \ arch_module_check_errdetail_string = format_elog_string #endif /* _ARCHIVE_MODULE_H */ libpg_query-17-6.1.0/src/postgres/include/c.h000066400000000000000000001315631477334012600207600ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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) 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 /* Define before including zlib.h to add const decorations to zlib API. */ #ifdef HAVE_LIBZ #define ZLIB_CONST #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 * Clang: https://clang.llvm.org/docs/AttributeReference.html * Sunpro: https://docs.oracle.com/cd/E18659_01/html/821-1384/gjzke.html */ /* * For compilers which don't support __has_attribute, we just define * __has_attribute(x) to 0 so that we can define macros for various * __attribute__s more easily below. */ #ifndef __has_attribute #define __has_attribute(attribute) 0 #endif /* only GCC supports the unused attribute */ #ifdef __GNUC__ #define pg_attribute_unused() __attribute__((unused)) #else #define pg_attribute_unused() #endif /* * pg_nodiscard means the compiler should warn if the result of a function * call is ignored. The name "nodiscard" is chosen in alignment with * (possibly future) C and C++ standards. For maximum compatibility, use it * as a function declaration specifier, so it goes before the return type. */ #ifdef __GNUC__ #define pg_nodiscard __attribute__((warn_unused_result)) #else #define pg_nodiscard #endif /* * This macro will disable address safety instrumentation for a function * when running with "-fsanitize=address". Think twice before using this! */ #if defined(__clang__) || __GNUC__ >= 8 #define pg_attribute_no_sanitize_address() __attribute__((no_sanitize("address"))) #elif __has_attribute(no_sanitize_address) /* This would work for clang, but it's deprecated. */ #define pg_attribute_no_sanitize_address() __attribute__((no_sanitize_address)) #else #define pg_attribute_no_sanitize_address() #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 /* * pg_attribute_nonnull means the compiler should warn if the function is * called with the listed arguments set to NULL. If no arguments are * listed, the compiler should warn if any pointer arguments are set to NULL. */ #if __has_attribute (nonnull) #define pg_attribute_nonnull(...) __attribute__((nonnull(__VA_ARGS__))) #else #define pg_attribute_nonnull(...) #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 supports format attributes */ #if defined(__GNUC__) #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 and Sunpro support aligned, packed and noreturn */ #if defined(__GNUC__) || defined(__SUNPRO_C) #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 #elif defined(_MSC_VER) /* * MSVC supports aligned. noreturn is also possible but in MSVC it is * declared before the definition while pg_attribute_noreturn() macro * is currently used after the definition. * * Packing is also possible but only by wrapping the entire struct definition * which doesn't fit into our current macro declarations. */ #define pg_attribute_aligned(a) __declspec(align(a)) #define pg_attribute_noreturn() #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) /* GCC > 3 and Sunpro 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 and Sunpro support noinline via __attribute__ */ #if (defined(__GNUC__) && __GNUC__ > 2) || defined(__SUNPRO_C) #define pg_noinline __attribute__((noinline)) /* msvc via declspec */ #elif defined(_MSC_VER) #define pg_noinline __declspec(noinline) #else #define pg_noinline #endif /* * For now, just define pg_attribute_cold and pg_attribute_hot to be empty * macros on minGW 8.1. There appears to be a compiler bug that results in * compilation failure. At this time, we still have at least one buildfarm * animal running that compiler, so this should make that green again. It's * likely this compiler is not popular enough to warrant keeping this code * around forever, so let's just remove it once the last buildfarm animal * upgrades. */ #if defined(__MINGW64__) && __GNUC__ == 8 && __GNUC_MINOR__ == 1 #define pg_attribute_cold #define pg_attribute_hot #else /* * Marking certain functions as "hot" or "cold" can be useful to assist the * compiler in arranging the assembly code in a more efficient way. */ #if __has_attribute (cold) #define pg_attribute_cold __attribute__((cold)) #else #define pg_attribute_cold #endif #if __has_attribute (hot) #define pg_attribute_hot __attribute__((hot)) #else #define pg_attribute_hot #endif #endif /* defined(__MINGW64__) && __GNUC__ == 8 && * __GNUC_MINOR__ == 1 */ /* * 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. * * MSVC has an implementation of __VA_ARGS__ that doesn't conform to the * standard unless you use the /Zc:preprocessor compiler flag, but that * isn't available before Visual Studio 2019. For now, use a different * definition that also works on older compilers. */ #ifdef _MSC_VER #define EXPAND(args) args #define VA_ARGS_NARGS(...) \ VA_ARGS_NARGS_ EXPAND((__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)) #else #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) #endif #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) /* * Generic function pointer. This can be used in the rare cases where it's * necessary to cast a function pointer to a seemingly incompatible function * pointer type while avoiding gcc's -Wcast-function-type warnings. */ typedef void (*pg_funcptr_t) (void); /* * 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 */ /* * Does the compiler support #pragma GCC system_header? We optionally use it * to avoid warnings that we can't fix (e.g. in the perl headers). * See https://gcc.gnu.org/onlinedocs/cpp/System-Headers.html * * Headers for which we do not want to show compiler warnings can, * conditionally, use #pragma GCC system_header to avoid warnings. Obviously * this should only be used for external headers over which we do not have * control. * * Support for the pragma is tested here, instead of during configure, as gcc * also warns about the pragma being used in a .c file. It's surprisingly hard * to get autoconf to use .h as the file-ending. Looks like gcc has * implemented the pragma since the 2000, so this test should suffice. * * * Alternatively, we could add the include paths for problematic headers with * -isystem, but that is a larger hammer and is harder to search for. * * A more granular alternative would be to use #pragma GCC diagnostic * push/ignored/pop, but gcc warns about unknown warnings being ignored, so * every to-be-ignored-temporarily compiler warning would require its own * pg_config.h symbol and #ifdef. */ #ifdef __GNUC__ #define HAVE_PRAGMA_GCC_SYSTEM_HEADER 1 #endif /* ---------------------------------------------------------------- * Section 2: bool, true, false * ---------------------------------------------------------------- */ /* * bool * Boolean value, either true or false. * * We use stdbool.h if bool has size 1 after including it. 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) /* ---------------- * 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: lengthof, alignment * ---------------------------------------------------------------- */ /* * 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) #elif defined(FRONTEND) #include #define Assert(p) assert(p) #define AssertMacro(p) ((void) assert(p)) #else /* USE_ASSERT_CHECKING && !FRONTEND */ /* * Assert * Generates a fatal exception if the given condition is false. */ #define Assert(condition) \ do { \ if (!(condition)) \ ExceptionalCondition(#condition, __FILE__, __LINE__); \ } while (0) /* * AssertMacro is the same as Assert but it's suitable for use in * expression-like macros, for example: * * #define foo(x) (AssertMacro(x != 0), bar(x)) */ #define AssertMacro(condition) \ ((void) ((condition) || \ (ExceptionalCondition(#condition, __FILE__, __LINE__), 0))) #endif /* USE_ASSERT_CHECKING && !FRONTEND */ /* * Check that `ptr' is `bndr' aligned. */ #define AssertPointerAlignment(ptr, bndr) \ Assert(TYPEALIGN(bndr, (uintptr_t)(ptr)) == (uintptr_t)(ptr)) /* * 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 *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). * * C11 has _Static_assert(), and most C99 compilers already support that. For * portability, we wrap it into StaticAssertDecl(). _Static_assert() is a * "declaration", and so it must be placed where for example a variable * declaration would be valid. As long as we compile with * -Wno-declaration-after-statement, that also means it cannot be placed after * statements in a function. Macros StaticAssertStmt() and StaticAssertExpr() * make it safe to use as a statement or in an expression, respectively. * * For compilers without _Static_assert(), 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 StaticAssertDecl(condition, errmessage) \ _Static_assert(condition, errmessage) #define StaticAssertStmt(condition, errmessage) \ do { _Static_assert(condition, errmessage); } while(0) #define StaticAssertExpr(condition, errmessage) \ ((void) ({ StaticAssertStmt(condition, errmessage); true; })) #else /* !HAVE__STATIC_ASSERT */ #define StaticAssertDecl(condition, errmessage) \ extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1]) #define StaticAssertStmt(condition, errmessage) \ ((void) sizeof(struct { int static_assert_failure : (condition) ? 1 : -1; })) #define StaticAssertExpr(condition, errmessage) \ StaticAssertStmt(condition, errmessage) #endif /* HAVE__STATIC_ASSERT */ #else /* C++ */ #if defined(__cpp_static_assert) && __cpp_static_assert >= 200410 #define StaticAssertDecl(condition, errmessage) \ static_assert(condition, errmessage) #define StaticAssertStmt(condition, errmessage) \ static_assert(condition, errmessage) #define StaticAssertExpr(condition, errmessage) \ ({ static_assert(condition, errmessage); }) #else /* !__cpp_static_assert */ #define StaticAssertDecl(condition, errmessage) \ extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1]) #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); })) #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)) /* 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) /* * 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 * ---------------------------------------------------------------- */ /* * 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. Otherwise * the variable might be under-aligned, causing problems on alignment-picky * hardware. 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; /* * Use this to declare a field or local variable holding a page buffer, if that * page might be accessed as a page or passed to an SMgr I/O function. If * allocating using the MemoryContext API, the aligned allocation functions * should be used with PG_IO_ALIGN_SIZE. This alignment may be more efficient * for I/O in general, but may be strictly required on some platforms when * using direct I/O. */ typedef union PGIOAlignedBlock { #ifdef pg_attribute_aligned pg_attribute_aligned(PG_IO_ALIGN_SIZE) #endif char data[BLCKSZ]; double force_align_d; int64 force_align_i64; } PGIOAlignedBlock; /* Same, but for an XLOG_BLCKSZ-sized buffer */ typedef union PGAlignedXLogBlock { #ifdef pg_attribute_aligned pg_attribute_aligned(PG_IO_ALIGN_SIZE) #endif 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) /* * 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. * * https://www.gnu.org/software/gettext/manual/html_node/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(__cplusplus) #define unconstify(underlying_type, expr) const_cast(expr) #define unvolatize(underlying_type, expr) const_cast(expr) #elif 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 !HAVE_DECL_FDATASYNC extern int fdatasync(int fildes); #endif /* * Thin wrappers that convert strings to exactly 64-bit integers, matching our * definition of int64. (For the naming, compare that POSIX has * strtoimax()/strtoumax() which return intmax_t/uintmax_t.) */ #ifdef HAVE_LONG_INT_64 #define strtoi64(str, endptr, base) ((int64) strtol(str, endptr, base)) #define strtou64(str, endptr, base) ((uint64) strtoul(str, endptr, base)) #else #define strtoi64(str, endptr, base) ((int64) strtoll(str, endptr, base)) #define strtou64(str, endptr, base) ((uint64) strtoull(str, endptr, base)) #endif /* * Similarly, wrappers around labs()/llabs() matching our int64. */ #ifdef HAVE_LONG_INT_64 #define i64abs(i) labs(i) #else #define i64abs(i) llabs(i) #endif /* * Use "extern PGDLLIMPORT ..." to declare variables that are defined * in the core backend and need to be accessible by loadable modules. * No special marking is required on most ports. */ #ifndef PGDLLIMPORT #define PGDLLIMPORT #endif /* * Use "extern PGDLLEXPORT ..." to declare functions that are defined in * loadable modules and need to be callable by the core backend or other * loadable modules. * If the compiler knows __attribute__((visibility("*"))), we use that, * unless we already have a platform-specific definition. Otherwise, * no special marking is required. */ #ifndef PGDLLEXPORT #ifdef HAVE_VISIBILITY_ATTRIBUTE #define PGDLLEXPORT __attribute__((visibility("default"))) #else #define PGDLLEXPORT #endif #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. We now support the case only on Windows. However, it seems * that MinGW-64 has some longstanding issues in its setjmp support, * so on that toolchain we cheat and use gcc's builtins. */ #ifdef WIN32 #ifdef __MINGW64__ typedef intptr_t sigjmp_buf[5]; #define sigsetjmp(x,y) __builtin_setjmp(x) #define siglongjmp __builtin_longjmp #else /* !__MINGW64__ */ #define sigjmp_buf jmp_buf #define sigsetjmp(x,y) setjmp(x) #define siglongjmp longjmp #endif /* __MINGW64__ */ #endif /* WIN32 */ /* /port compatibility functions */ #include "port.h" #endif /* C_H */ #undef StaticAssertDecl #define StaticAssertDecl(condition, errmessage) libpg_query-17-6.1.0/src/postgres/include/catalog/000077500000000000000000000000001477334012600217665ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/catalog/catalog.h000066400000000000000000000026131477334012600235530ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * catalog.h * prototypes for functions in backend/catalog/catalog.c * * * Portions Copyright (c) 1996-2024, 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 IsInplaceUpdateRelation(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 IsInplaceUpdateOid(Oid relid); extern bool IsCatalogNamespace(Oid namespaceId); extern bool IsToastNamespace(Oid namespaceId); extern bool IsReservedName(const char *name); extern bool IsSharedRelation(Oid relationId); extern bool IsPinnedObject(Oid classId, Oid objectId); extern Oid GetNewOidWithIndex(Relation relation, Oid indexId, AttrNumber oidcolumn); extern RelFileNumber GetNewRelFileNumber(Oid reltablespace, Relation pg_class, char relpersistence); #endif /* CATALOG_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/catversion.h000066400000000000000000000054571477334012600243270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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. * Another common reason for a catversion update is a change in parsetree * external representation, since serialized parsetrees appear in stored * rules and new-style SQL functions. Almost any change in primnodes.h or * parsenodes.h will warrant a catversion update. * * * Portions Copyright (c) 1996-2024, 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 202406281 #endif libpg_query-17-6.1.0/src/postgres/include/catalog/dependency.h000066400000000000000000000202431477334012600242560ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * dependency.h * Routines to support inter-object dependencies. * * * Portions Copyright (c) 1996-2024, 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', } 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) 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. * * (b) 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.) * * (c) a SHARED_DEPENDENCY_INITACL entry means that the referenced object is * a role mentioned in a pg_init_privs entry for the dependent object. * The referenced object must be a pg_authid entry. (Unlike the case for * SHARED_DEPENDENCY_ACL, we make an entry for such a role whether or not * it is the object's owner.) * * (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_OWNER = 'o', SHARED_DEPENDENCY_ACL = 'a', SHARED_DEPENDENCY_INITACL = 'i', 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; /* 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 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 void checkMembershipInCurrentExtension(const ObjectAddress *object); 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(Relation rel, AttrNumber attnum, bool missing_ok); 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 objsubId, Oid ownerId, int noldmembers, Oid *oldmembers, int nnewmembers, Oid *newmembers); extern void updateInitAclDependencies(Oid classId, Oid objectId, int32 objsubId, 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 *roleids, DropBehavior behavior); extern void shdepReassignOwned(List *roleids, Oid newrole); #endif /* DEPENDENCY_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/genbki.h000066400000000000000000000151011477334012600233740ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 that the attribute contains OIDs referencing the named catalog; * can be applied to columns of oid, regproc, oid[], or oidvector type. * genbki.pl uses this to know how to perform name lookups in the initial * data (if any), and it also feeds into regression-test validity checks. * The _OPT suffix indicates that values can be zero instead of * a valid OID reference. */ #define BKI_LOOKUP(catalog) #define BKI_LOOKUP_OPT(catalog) /* * These lines are processed by genbki.pl to create the statements * the bootstrap parser will turn into BootstrapToastTable commands. * Each line specifies the system catalog that needs a toast table, * the OID to assign to the toast table, and the OID to assign to the * toast table's index. The reason we hard-wire these OIDs is that we * need stable OIDs for shared relations, and that includes toast tables * of shared relations. * * The DECLARE_TOAST_WITH_MACRO variant is used when C macros are needed * for the toast table/index OIDs (usually only for shared catalogs). * * The macro definitions are just to keep the C compiler from spitting up. */ #define DECLARE_TOAST(name,toastoid,indexoid) extern int no_such_variable #define DECLARE_TOAST_WITH_MACRO(name,toastoid,indexoid,toastoidmacro,indexoidmacro) extern int no_such_variable /* * These lines are 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 or * DECLARE_UNIQUE_INDEX_PKEY. ("PKEY" marks the index as being the catalog's * primary key; currently this is only cosmetically different from a regular * unique index. By convention, we usually make a catalog's OID column its * pkey, if it has one.) * * The first two arguments are the index's name and OID. The third argument * is the name of a #define to generate 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). The fourth argument is the table name. The * rest is much like a standard 'create index' SQL command. * * The macro definitions are just to keep the C compiler from spitting up. */ #define DECLARE_INDEX(name,oid,oidmacro,tblname,decl) extern int no_such_variable #define DECLARE_UNIQUE_INDEX(name,oid,oidmacro,tblname,decl) extern int no_such_variable #define DECLARE_UNIQUE_INDEX_PKEY(name,oid,oidmacro,tblname,decl) extern int no_such_variable /* * These lines inform genbki.pl about manually-assigned OIDs that do not * correspond to any entry in the catalog *.dat files, but should be subject * to uniqueness verification and renumber_oids.pl renumbering. A C macro * to #define the given name is emitted into the corresponding *_d.h file. */ #define DECLARE_OID_DEFINING_MACRO(name,oid) extern int no_such_variable /* * These lines are processed by genbki.pl to create a table for use * by the pg_get_catalog_foreign_keys() function. We do not have any * mechanism that actually enforces foreign-key relationships in the * system catalogs, but it is still useful to record the intended * relationships in a machine-readable form. * * The keyword is DECLARE_FOREIGN_KEY[_OPT] or DECLARE_ARRAY_FOREIGN_KEY[_OPT]. * The first argument is a parenthesized list of the referencing columns; * the second, the name of the referenced table; the third, a parenthesized * list of the referenced columns. Use of the ARRAY macros means that the * last referencing column is an array, each of whose elements is supposed * to match some entry in the last referenced column. Use of the OPT suffix * indicates that the referencing column(s) can be zero instead of a valid * reference. * * Columns that are marked with a BKI_LOOKUP rule do not need an explicit * DECLARE_FOREIGN_KEY macro, as genbki.pl can infer the FK relationship * from that. Thus, these macros are only needed in special cases. * * The macro definitions are just to keep the C compiler from spitting up. */ #define DECLARE_FOREIGN_KEY(cols,reftbl,refcols) extern int no_such_variable #define DECLARE_FOREIGN_KEY_OPT(cols,reftbl,refcols) extern int no_such_variable #define DECLARE_ARRAY_FOREIGN_KEY(cols,reftbl,refcols) extern int no_such_variable #define DECLARE_ARRAY_FOREIGN_KEY_OPT(cols,reftbl,refcols) extern int no_such_variable /* * Create a syscache with the given name, index, and bucket size. See * syscache.c. */ #define MAKE_SYSCACHE(name,idxname,nbuckets) extern int no_such_variable /* 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 the BOOTCOL_NULL_AUTO code 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-17-6.1.0/src/postgres/include/catalog/index.h000066400000000000000000000152531477334012600232540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * index.h * prototypes for catalog/index.c. * * * Portions Copyright (c) 1996-2024, 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; /* options for REINDEX */ typedef struct ReindexParams { bits32 options; /* bitmask of REINDEXOPT_* */ Oid tablespaceOid; /* New tablespace to move indexes to. * InvalidOid to do nothing. */ } ReindexParams; /* flag bits for ReindexParams->flags */ #define REINDEXOPT_VERBOSE 0x01 /* print progress info */ #define REINDEXOPT_REPORT_PROGRESS 0x02 /* report pgstat progress */ #define REINDEXOPT_MISSING_OK 0x04 /* skip missing relations */ #define REINDEXOPT_CONCURRENTLY 0x08 /* concurrent mode */ /* 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, const IndexInfo *indexInfo, bool is_alter_table, const 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, RelFileNumber relFileNumber, IndexInfo *indexInfo, const List *indexColNames, Oid accessMethodId, Oid tableSpaceId, const Oid *collationIds, const Oid *opclassIds, const Datum *opclassOptions, const int16 *coloptions, const NullableDatum *stattargets, 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, Oid tablespaceOid, 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, const 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(const IndexInfo *info1, const IndexInfo *info2, const Oid *collations1, const Oid *collations2, const Oid *opfamilies1, const Oid *opfamilies2, const 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(const ReindexStmt *stmt, Oid indexId, bool skip_constraint_checks, char persistence, const ReindexParams *params); /* 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(const ReindexStmt *stmt, Oid relid, int flags, const ReindexParams *params); 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(const void *reindexstate); extern void IndexSetParentIndex(Relation partitionIdx, 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-17-6.1.0/src/postgres/include/catalog/indexing.h000066400000000000000000000034401477334012600237450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * indexing.h * This file provides some definitions to support indexing * on system catalogs * * * Portions Copyright (c) 1996-2024, 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 "nodes/execnodes.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; /* * Cap the maximum amount of bytes allocated for multi-inserts with system * catalogs, limiting the number of slots used. */ #define MAX_CATALOG_MULTI_INSERT_BYTES 65535 /* * 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 CatalogTuplesMultiInsertWithInfo(Relation heapRel, TupleTableSlot **slot, int ntuples, 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); #endif /* INDEXING_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/namespace.h000066400000000000000000000162561477334012600241050ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * namespace.h * prototypes for functions in backend/catalog/namespace.c * * * Portions Copyright (c) 1996-2024, 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" #include "storage/procnumber.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 nominalnargs; /* either pronargs or length(proallargtypes) */ 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 xxxSearchPathMatcher 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 SearchPathMatcher { 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 */ } SearchPathMatcher; /* * 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 *relation, 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 include_out_arguments, 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 stxid); 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(const 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(const List *names, char **objname_p); extern RangeVar *makeRangeVarFromNameList(const List *names); extern char *NameListToString(const List *names); extern char *NameListToQuotedString(const 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 ProcNumber GetTempNamespaceProcNumber(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 SearchPathMatcher *GetSearchPathMatcher(MemoryContext context); extern SearchPathMatcher *CopySearchPathMatcher(SearchPathMatcher *path); extern bool SearchPathMatchesCurrentEnvironment(SearchPathMatcher *path); 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 PGDLLIMPORT 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-17-6.1.0/src/postgres/include/catalog/objectaccess.h000066400000000000000000000222421477334012600245710ustar00rootroot00000000000000/* * objectaccess.h * * Object access hooks. * * Portions Copyright (c) 1996-2024, 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. The command counter may or may not be incremented * at the time the hook is invoked; if not, the extension can use SnapshotSelf * to get the new version of the tuple. * * 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 one or both of these signatures. */ typedef void (*object_access_hook_type) (ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg); typedef void (*object_access_hook_type_str) (ObjectAccessType access, Oid classId, const char *objectStr, int subId, void *arg); /* Plugin sets this variable to a suitable hook function. */ extern PGDLLIMPORT object_access_hook_type object_access_hook; extern PGDLLIMPORT object_access_hook_type_str object_access_hook_str; /* 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); /* String versions */ extern void RunObjectPostCreateHookStr(Oid classId, const char *objectName, int subId, bool is_internal); extern void RunObjectDropHookStr(Oid classId, const char *objectName, int subId, int dropflags); extern void RunObjectTruncateHookStr(const char *objectName); extern void RunObjectPostAlterHookStr(Oid classId, const char *objectName, int subId, Oid auxiliaryId, bool is_internal); extern bool RunNamespaceSearchHookStr(const char *objectName, bool ereport_on_violation); extern void RunFunctionExecuteHookStr(const char *objectName); /* * 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) #define InvokeObjectPostCreateHookStr(classId,objectName,subId) \ InvokeObjectPostCreateHookArgStr((classId),(objectName),(subId),false) #define InvokeObjectPostCreateHookArgStr(classId,objectName,subId,is_internal) \ do { \ if (object_access_hook_str) \ RunObjectPostCreateHookStr((classId),(objectName),(subId), \ (is_internal)); \ } while(0) #define InvokeObjectDropHookStr(classId,objectName,subId) \ InvokeObjectDropHookArgStr((classId),(objectName),(subId),0) #define InvokeObjectDropHookArgStr(classId,objectName,subId,dropflags) \ do { \ if (object_access_hook_str) \ RunObjectDropHookStr((classId),(objectName),(subId), \ (dropflags)); \ } while(0) #define InvokeObjectTruncateHookStr(objectName) \ do { \ if (object_access_hook_str) \ RunObjectTruncateHookStr(objectName); \ } while(0) #define InvokeObjectPostAlterHookStr(classId,objectName,subId) \ InvokeObjectPostAlterHookArgStr((classId),(objectName),(subId), \ InvalidOid,false) #define InvokeObjectPostAlterHookArgStr(classId,objectName,subId, \ auxiliaryId,is_internal) \ do { \ if (object_access_hook_str) \ RunObjectPostAlterHookStr((classId),(objectName),(subId), \ (auxiliaryId),(is_internal)); \ } while(0) #define InvokeNamespaceSearchHookStr(objectName, ereport_on_violation) \ (!object_access_hook_str \ ? true \ : RunNamespaceSearchHookStr((objectName), (ereport_on_violation))) #define InvokeFunctionExecuteHookStr(objectName) \ do { \ if (object_access_hook_str) \ RunFunctionExecuteHookStr(objectName); \ } while(0) #endif /* OBJECTACCESS_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/objectaddress.h000066400000000000000000000064431477334012600247620ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * objectaddress.h * functions for working with object addresses * * Portions Copyright (c) 1996-2024, 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 PGDLLIMPORT 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 const char *get_object_class_descr(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 HeapTuple get_catalog_object_by_oid_extended(Relation catalog, AttrNumber oidcol, Oid objectId, bool locktup); extern char *getObjectDescription(const ObjectAddress *object, bool missing_ok); extern char *getObjectDescriptionOids(Oid classid, Oid objid); extern int read_objtype_from_string(const char *objtype); extern char *getObjectTypeDescription(const ObjectAddress *object, bool missing_ok); extern char *getObjectIdentity(const ObjectAddress *object, bool missing_ok); extern char *getObjectIdentityParts(const ObjectAddress *object, List **objname, List **objargs, bool missing_ok); extern struct ArrayType *strlist_to_textarray(List *list); extern ObjectType get_relkind_objtype(char relkind); #endif /* OBJECTADDRESS_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_aggregate.h000066400000000000000000000136461477334012600245650ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_aggregate.h * definition of the "aggregate" system catalog (pg_aggregate) * * * Portions Copyright (c) 1996-2024, 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_OPT(pg_proc); /* combine function (0 if none) */ regproc aggcombinefn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc); /* function to convert transtype to bytea (0 if none) */ regproc aggserialfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc); /* function to convert bytea to transtype (0 if none) */ regproc aggdeserialfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc); /* forward function for moving-aggregate mode (0 if none) */ regproc aggmtransfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc); /* inverse function for moving-aggregate mode (0 if none) */ regproc aggminvtransfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc); /* final function for moving-aggregate mode (0 if none) */ regproc aggmfinalfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(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_OPT(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_OPT(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; DECLARE_TOAST(pg_aggregate, 4159, 4160); DECLARE_UNIQUE_INDEX_PKEY(pg_aggregate_fnoid_index, 2650, AggregateFnoidIndexId, pg_aggregate, btree(aggfnoid oid_ops)); MAKE_SYSCACHE(AGGFNOID, pg_aggregate_fnoid_index, 16); #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-17-6.1.0/src/postgres/include/catalog/pg_aggregate_d.h000066400000000000000000000054011477334012600250560ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_aggregate_d.h * Macro definitions for pg_aggregate * * Portions Copyright (c) 1996-2024, 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 AggregateFnoidIndexId 2650 #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-17-6.1.0/src/postgres/include/catalog/pg_am.h000066400000000000000000000032011477334012600232160ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_am.h * definition of the "access method" system catalog (pg_am) * * * Portions Copyright (c) 1996-2024, 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; DECLARE_UNIQUE_INDEX(pg_am_name_index, 2651, AmNameIndexId, pg_am, btree(amname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_am_oid_index, 2652, AmOidIndexId, pg_am, btree(oid oid_ops)); MAKE_SYSCACHE(AMNAME, pg_am_name_index, 4); MAKE_SYSCACHE(AMOID, pg_am_oid_index, 4); #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-17-6.1.0/src/postgres/include/catalog/pg_am_d.h000066400000000000000000000022021477334012600235210ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_am_d.h * Macro definitions for pg_am * * Portions Copyright (c) 1996-2024, 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 AmNameIndexId 2651 #define AmOidIndexId 2652 #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-17-6.1.0/src/postgres/include/catalog/pg_attribute.h000066400000000000000000000206241477334012600246340ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 BKI_LOOKUP(pg_class); /* 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. In an entry for a dropped column, this field is set to zero * since the pg_type entry may no longer exist; but we rely on attlen, * attbyval, and attalign to still tell us how large the values in the * table are. */ Oid atttypid BKI_LOOKUP_OPT(pg_type); /* * 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; /* * 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); /* * attndims is the declared number of dimensions, if an array type, * otherwise zero. */ int16 attndims; /* * attbyval is a copy of the typbyval field from pg_type for this * attribute. See atttypid comments above. */ bool attbyval; /* * attalign is a copy of the typalign field from pg_type for this * attribute. See atttypid comments above. */ char attalign; /*---------- * 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; /* * attcompression sets the current compression method of the attribute. * Typically this is InvalidCompressionMethod ('\0') to specify use of the * current default setting (see default_toast_compression). Otherwise, * 'p' selects pglz compression, while 'l' selects LZ4 compression. * However, this field is ignored whenever attstorage does not allow * compression. */ char attcompression BKI_DEFAULT('\0'); /* 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) */ int16 attinhcount BKI_DEFAULT(0); /* attribute's collation, if any */ Oid attcollation BKI_LOOKUP_OPT(pg_collation); #ifdef CATALOG_VARLEN /* variable-length/nullable fields start here */ /* NOTE: The following fields are not present in tuple descriptors. */ /* * 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 null value here * indicates that no value has been explicitly set for this column, so * ANALYZE should use the default setting. * * int16 is sufficient for the current max value (MAX_STATISTICS_TARGET). */ int16 attstattarget BKI_DEFAULT(_null_) BKI_FORCE_NULL; /* 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 the variable-length fields 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; /* * FormExtraData_pg_attribute contains (some of) the fields that are not in * FormData_pg_attribute because they are excluded by CATALOG_VARLEN. It is * meant to be used by DDL code so that the combination of * FormData_pg_attribute (often via tuple descriptor) and * FormExtraData_pg_attribute can be used to pass around all the information * about an attribute. Fields can be included here as needed. */ typedef struct FormExtraData_pg_attribute { NullableDatum attstattarget; NullableDatum attoptions; } FormExtraData_pg_attribute; DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnam_index, 2658, AttributeRelidNameIndexId, pg_attribute, btree(attrelid oid_ops, attname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_attribute_relid_attnum_index, 2659, AttributeRelidNumIndexId, pg_attribute, btree(attrelid oid_ops, attnum int2_ops)); MAKE_SYSCACHE(ATTNAME, pg_attribute_relid_attnam_index, 32); MAKE_SYSCACHE(ATTNUM, pg_attribute_relid_attnum_index, 128); #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-17-6.1.0/src/postgres/include/catalog/pg_attribute_d.h000066400000000000000000000036761477334012600251470ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_attribute_d.h * Macro definitions for pg_attribute * * Portions Copyright (c) 1996-2024, 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 AttributeRelidNameIndexId 2658 #define AttributeRelidNumIndexId 2659 #define Anum_pg_attribute_attrelid 1 #define Anum_pg_attribute_attname 2 #define Anum_pg_attribute_atttypid 3 #define Anum_pg_attribute_attlen 4 #define Anum_pg_attribute_attnum 5 #define Anum_pg_attribute_attcacheoff 6 #define Anum_pg_attribute_atttypmod 7 #define Anum_pg_attribute_attndims 8 #define Anum_pg_attribute_attbyval 9 #define Anum_pg_attribute_attalign 10 #define Anum_pg_attribute_attstorage 11 #define Anum_pg_attribute_attcompression 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_attstattarget 22 #define Anum_pg_attribute_attacl 23 #define Anum_pg_attribute_attoptions 24 #define Anum_pg_attribute_attfdwoptions 25 #define Anum_pg_attribute_attmissingval 26 #define Natts_pg_attribute 26 #define ATTRIBUTE_IDENTITY_ALWAYS 'a' #define ATTRIBUTE_IDENTITY_BY_DEFAULT 'd' #define ATTRIBUTE_GENERATED_STORED 's' #endif /* PG_ATTRIBUTE_D_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_authid.h000066400000000000000000000045651477334012600241150ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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; DECLARE_TOAST_WITH_MACRO(pg_authid, 4175, 4176, PgAuthidToastTable, PgAuthidToastIndex); DECLARE_UNIQUE_INDEX(pg_authid_rolname_index, 2676, AuthIdRolnameIndexId, pg_authid, btree(rolname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_authid_oid_index, 2677, AuthIdOidIndexId, pg_authid, btree(oid oid_ops)); MAKE_SYSCACHE(AUTHNAME, pg_authid_rolname_index, 8); MAKE_SYSCACHE(AUTHOID, pg_authid_oid_index, 8); #endif /* PG_AUTHID_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_authid_d.h000066400000000000000000000035301477334012600244070ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_authid_d.h * Macro definitions for pg_authid * * Portions Copyright (c) 1996-2024, 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 PgAuthidToastTable 4175 #define PgAuthidToastIndex 4176 #define AuthIdRolnameIndexId 2676 #define AuthIdOidIndexId 2677 #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 ROLE_PG_DATABASE_OWNER 6171 #define ROLE_PG_READ_ALL_DATA 6181 #define ROLE_PG_WRITE_ALL_DATA 6182 #define ROLE_PG_MONITOR 3373 #define ROLE_PG_READ_ALL_SETTINGS 3374 #define ROLE_PG_READ_ALL_STATS 3375 #define ROLE_PG_STAT_SCAN_TABLES 3377 #define ROLE_PG_READ_SERVER_FILES 4569 #define ROLE_PG_WRITE_SERVER_FILES 4570 #define ROLE_PG_EXECUTE_SERVER_PROGRAM 4571 #define ROLE_PG_SIGNAL_BACKEND 4200 #define ROLE_PG_CHECKPOINT 4544 #define ROLE_PG_MAINTAIN 6337 #define ROLE_PG_USE_RESERVED_CONNECTIONS 4550 #define ROLE_PG_CREATE_SUBSCRIPTION 6304 #endif /* PG_AUTHID_D_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_class.h000066400000000000000000000201011477334012600237240ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_class.h * definition of the "relation" system catalog (pg_class) * * * Portions Copyright (c) 1996-2024, 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(pg_catalog) BKI_LOOKUP(pg_namespace); /* OID of entry in pg_type for relation's implicit row type, if any */ Oid reltype BKI_LOOKUP_OPT(pg_type); /* OID of entry in pg_type for underlying composite type, if any */ Oid reloftype BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_type); /* class owner */ Oid relowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid); /* access method; 0 if not a table / index */ Oid relam BKI_DEFAULT(heap) BKI_LOOKUP_OPT(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_OPT(pg_tablespace); /* # of blocks (not always up-to-date) */ int32 relpages BKI_DEFAULT(0); /* # of tuples (not always up-to-date; -1 means "unknown") */ float4 reltuples BKI_DEFAULT(-1); /* # 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) BKI_LOOKUP_OPT(pg_class); /* 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); /* link to original rel during table rewrite; otherwise 0 */ Oid relrewrite BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_class); /* 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; DECLARE_UNIQUE_INDEX_PKEY(pg_class_oid_index, 2662, ClassOidIndexId, pg_class, btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_class_relname_nsp_index, 2663, ClassNameNspIndexId, pg_class, btree(relname name_ops, relnamespace oid_ops)); DECLARE_INDEX(pg_class_tblspc_relfilenode_index, 3455, ClassTblspcRelfilenodeIndexId, pg_class, btree(reltablespace oid_ops, relfilenode oid_ops)); MAKE_SYSCACHE(RELOID, pg_class_oid_index, 128); MAKE_SYSCACHE(RELNAMENSP, pg_class_relname_nsp_index, 128); #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 'n'. */ #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) #define RELKIND_HAS_PARTITIONS(relkind) \ ((relkind) == RELKIND_PARTITIONED_TABLE || \ (relkind) == RELKIND_PARTITIONED_INDEX) /* * Relation kinds that support tablespaces: All relation kinds with storage * support tablespaces, except that we don't support moving sequences around * into different tablespaces. Partitioned tables and indexes don't have * physical storage, but they have a tablespace settings so that their * children can inherit it. */ #define RELKIND_HAS_TABLESPACE(relkind) \ ((RELKIND_HAS_STORAGE(relkind) || RELKIND_HAS_PARTITIONS(relkind)) \ && (relkind) != RELKIND_SEQUENCE) /* * Relation kinds with a table access method (rd_tableam). Although sequences * use the heap table AM, they are enough of a special case in most uses that * they are not included here. Likewise, partitioned tables can have an access * method defined so that their partitions can inherit it, but they do not set * rd_tableam; hence, this is handled specially outside of this macro. */ #define RELKIND_HAS_TABLE_AM(relkind) \ ((relkind) == RELKIND_RELATION || \ (relkind) == RELKIND_TOASTVALUE || \ (relkind) == RELKIND_MATVIEW) extern int errdetail_relkind_not_supported(char relkind); #endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_CLASS_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_class_d.h000066400000000000000000000114741477334012600242440ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_class_d.h * Macro definitions for pg_class * * Portions Copyright (c) 1996-2024, 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 ClassOidIndexId 2662 #define ClassNameNspIndexId 2663 #define ClassTblspcRelfilenodeIndexId 3455 #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 'n'. */ #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) #define RELKIND_HAS_PARTITIONS(relkind) \ ((relkind) == RELKIND_PARTITIONED_TABLE || \ (relkind) == RELKIND_PARTITIONED_INDEX) /* * Relation kinds that support tablespaces: All relation kinds with storage * support tablespaces, except that we don't support moving sequences around * into different tablespaces. Partitioned tables and indexes don't have * physical storage, but they have a tablespace settings so that their * children can inherit it. */ #define RELKIND_HAS_TABLESPACE(relkind) \ ((RELKIND_HAS_STORAGE(relkind) || RELKIND_HAS_PARTITIONS(relkind)) \ && (relkind) != RELKIND_SEQUENCE) /* * Relation kinds with a table access method (rd_tableam). Although sequences * use the heap table AM, they are enough of a special case in most uses that * they are not included here. Likewise, partitioned tables can have an access * method defined so that their partitions can inherit it, but they do not set * rd_tableam; hence, this is handled specially outside of this macro. */ #define RELKIND_HAS_TABLE_AM(relkind) \ ((relkind) == RELKIND_RELATION || \ (relkind) == RELKIND_TOASTVALUE || \ (relkind) == RELKIND_MATVIEW) extern int errdetail_relkind_not_supported(char relkind); #endif /* PG_CLASS_D_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_collation.h000066400000000000000000000062301477334012600246120ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_collation.h * definition of the "collation" system catalog (pg_collation) * * * Portions Copyright (c) 1996-2024, 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 of namespace containing this collation */ Oid collnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace); /* owner of collation */ Oid collowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid); char collprovider; /* see constants below */ bool collisdeterministic BKI_DEFAULT(t); int32 collencoding; /* encoding for this collation; -1 = "all" */ #ifdef CATALOG_VARLEN /* variable-length fields start here */ text collcollate BKI_DEFAULT(_null_); /* LC_COLLATE setting */ text collctype BKI_DEFAULT(_null_); /* LC_CTYPE setting */ text colllocale BKI_DEFAULT(_null_); /* locale ID */ text collicurules BKI_DEFAULT(_null_); /* ICU collation rules */ text collversion BKI_DEFAULT(_null_); /* 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; DECLARE_TOAST(pg_collation, 6175, 6176); DECLARE_UNIQUE_INDEX(pg_collation_name_enc_nsp_index, 3164, CollationNameEncNspIndexId, pg_collation, btree(collname name_ops, collencoding int4_ops, collnamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_collation_oid_index, 3085, CollationOidIndexId, pg_collation, btree(oid oid_ops)); MAKE_SYSCACHE(COLLNAMEENCNSP, pg_collation_name_enc_nsp_index, 8); MAKE_SYSCACHE(COLLOID, pg_collation_oid_index, 8); #ifdef EXPOSE_TO_CLIENT_CODE #define COLLPROVIDER_DEFAULT 'd' #define COLLPROVIDER_BUILTIN 'b' #define COLLPROVIDER_ICU 'i' #define COLLPROVIDER_LIBC 'c' static inline const char * collprovider_name(char c) { switch (c) { case COLLPROVIDER_BUILTIN: return "builtin"; case COLLPROVIDER_ICU: return "icu"; case COLLPROVIDER_LIBC: return "libc"; default: return "???"; } } #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 *colllocale, const char *collicurules, const char *collversion, bool if_not_exists, bool quiet); #endif /* PG_COLLATION_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_collation_d.h000066400000000000000000000032701477334012600251160ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_collation_d.h * Macro definitions for pg_collation * * Portions Copyright (c) 1996-2024, 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 CollationNameEncNspIndexId 3164 #define CollationOidIndexId 3085 #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_colllocale 10 #define Anum_pg_collation_collicurules 11 #define Anum_pg_collation_collversion 12 #define Natts_pg_collation 12 #define COLLPROVIDER_DEFAULT 'd' #define COLLPROVIDER_BUILTIN 'b' #define COLLPROVIDER_ICU 'i' #define COLLPROVIDER_LIBC 'c' static inline const char * collprovider_name(char c) { switch (c) { case COLLPROVIDER_BUILTIN: return "builtin"; case COLLPROVIDER_ICU: return "icu"; case COLLPROVIDER_LIBC: return "libc"; default: return "???"; } } #define DEFAULT_COLLATION_OID 100 #define C_COLLATION_OID 950 #define POSIX_COLLATION_OID 951 #endif /* PG_COLLATION_D_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_constraint.h000066400000000000000000000232651477334012600250210ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_constraint.h * definition of the "constraint" system catalog (pg_constraint) * * * Portions Copyright (c) 1996-2024, 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 BKI_LOOKUP(pg_namespace); /* 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 BKI_LOOKUP_OPT(pg_class); /* 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 BKI_LOOKUP_OPT(pg_type); /* 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 BKI_LOOKUP_OPT(pg_class); /* 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 BKI_LOOKUP_OPT(pg_constraint); /* * These fields, plus confkey, are only meaningful for a foreign-key * constraint. Otherwise confrelid is 0 and the char fields are spaces. */ Oid confrelid BKI_LOOKUP_OPT(pg_class); /* 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) */ int16 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] BKI_LOOKUP(pg_operator); /* * 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] BKI_LOOKUP(pg_operator); /* * 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] BKI_LOOKUP(pg_operator); /* * If a foreign key with an ON DELETE SET NULL/DEFAULT action, the subset * of conkey to updated. If null, all columns are updated. */ int16 confdelsetcols[1]; /* * If an exclusion constraint, the OIDs of the exclusion operators for * each column of the constraint */ Oid conexclop[1] BKI_LOOKUP(pg_operator); /* * 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; DECLARE_TOAST(pg_constraint, 2832, 2833); DECLARE_INDEX(pg_constraint_conname_nsp_index, 2664, ConstraintNameNspIndexId, pg_constraint, btree(conname name_ops, connamespace oid_ops)); DECLARE_UNIQUE_INDEX(pg_constraint_conrelid_contypid_conname_index, 2665, ConstraintRelidTypidNameIndexId, pg_constraint, btree(conrelid oid_ops, contypid oid_ops, conname name_ops)); DECLARE_INDEX(pg_constraint_contypid_index, 2666, ConstraintTypidIndexId, pg_constraint, btree(contypid oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_constraint_oid_index, 2667, ConstraintOidIndexId, pg_constraint, btree(oid oid_ops)); DECLARE_INDEX(pg_constraint_conparentid_index, 2579, ConstraintParentIndexId, pg_constraint, btree(conparentid oid_ops)); MAKE_SYSCACHE(CONSTROID, pg_constraint_oid_index, 16); /* conkey can contain zero (InvalidAttrNumber) if a whole-row Var is used */ DECLARE_ARRAY_FOREIGN_KEY_OPT((conrelid, conkey), pg_attribute, (attrelid, attnum)); DECLARE_ARRAY_FOREIGN_KEY((confrelid, confkey), pg_attribute, (attrelid, attnum)); #ifdef EXPOSE_TO_CLIENT_CODE /* Valid values for contype */ #define CONSTRAINT_CHECK 'c' #define CONSTRAINT_FOREIGN 'f' #define CONSTRAINT_NOTNULL 'n' #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, const int16 *fkDeleteSetCols, int numFkDeleteSetCols, char foreignMatchType, const Oid *exclOp, Node *conExpr, const char *conBin, bool conIsLocal, int conInhCount, bool conNoInherit, bool is_internal); 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 HeapTuple findDomainNotNullConstraint(Oid typid); extern void RemoveConstraintById(Oid conId); extern void RenameConstraintById(Oid conId, const char *newname); 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, int *num_fk_del_set_cols, AttrNumber *fk_del_set_cols); extern bool check_functional_grouping(Oid relid, Index varno, Index varlevelsup, List *grouping_columns, List **constraintDeps); #endif /* PG_CONSTRAINT_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_constraint_d.h000066400000000000000000000045711477334012600253230ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_constraint_d.h * Macro definitions for pg_constraint * * Portions Copyright (c) 1996-2024, 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 ConstraintNameNspIndexId 2664 #define ConstraintRelidTypidNameIndexId 2665 #define ConstraintTypidIndexId 2666 #define ConstraintOidIndexId 2667 #define ConstraintParentIndexId 2579 #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_confdelsetcols 24 #define Anum_pg_constraint_conexclop 25 #define Anum_pg_constraint_conbin 26 #define Natts_pg_constraint 26 /* Valid values for contype */ #define CONSTRAINT_CHECK 'c' #define CONSTRAINT_FOREIGN 'f' #define CONSTRAINT_NOTNULL 'n' #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-17-6.1.0/src/postgres/include/catalog/pg_control.h000066400000000000000000000224431477334012600243120ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 1700 /* 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 */ int wal_level; /* current wal_level */ FullTransactionId nextXid; /* next free 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 /* 0xC0 is used in Postgres 9.5-11 */ #define XLOG_OVERWRITE_CONTRECORD 0xD0 #define XLOG_CHECKPOINT_REDO 0xE0 /* * 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. */ 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 /* * Ensure that the size of the pg_control data structure is sane. */ StaticAssertDecl(sizeof(ControlFileData) <= PG_CONTROL_MAX_SAFE_SIZE, "pg_control is too large for atomic disk writes"); StaticAssertDecl(sizeof(ControlFileData) <= PG_CONTROL_FILE_SIZE, "sizeof(ControlFileData) exceeds PG_CONTROL_FILE_SIZE"); #endif /* PG_CONTROL_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_conversion.h000066400000000000000000000050761477334012600250220ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_conversion.h * definition of the "conversion" system catalog (pg_conversion) * * Portions Copyright (c) 1996-2024, 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(pg_catalog) BKI_LOOKUP(pg_namespace); /* owner of the conversion */ Oid conowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid); /* 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; DECLARE_UNIQUE_INDEX(pg_conversion_default_index, 2668, ConversionDefaultIndexId, pg_conversion, btree(connamespace oid_ops, conforencoding int4_ops, contoencoding int4_ops, oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_conversion_name_nsp_index, 2669, ConversionNameNspIndexId, pg_conversion, btree(conname name_ops, connamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_conversion_oid_index, 2670, ConversionOidIndexId, pg_conversion, btree(oid oid_ops)); MAKE_SYSCACHE(CONDEFAULT, pg_conversion_default_index, 8); MAKE_SYSCACHE(CONNAMENSP, pg_conversion_name_nsp_index, 8); MAKE_SYSCACHE(CONVOID, pg_conversion_oid_index, 8); extern ObjectAddress ConversionCreate(const char *conname, Oid connamespace, Oid conowner, int32 conforencoding, int32 contoencoding, Oid conproc, bool def); extern Oid FindDefaultConversion(Oid name_space, int32 for_encoding, int32 to_encoding); #endif /* PG_CONVERSION_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_conversion_d.h000066400000000000000000000021561477334012600253210ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_conversion_d.h * Macro definitions for pg_conversion * * Portions Copyright (c) 1996-2024, 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 ConversionDefaultIndexId 2668 #define ConversionNameNspIndexId 2669 #define ConversionOidIndexId 2670 #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-17-6.1.0/src/postgres/include/catalog/pg_database.h000066400000000000000000000070111477334012600243700ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_database.h * definition of the "database" system catalog (pg_database) * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_database.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_DATABASE_H #define PG_DATABASE_H #include "catalog/genbki.h" #include "catalog/pg_database_d.h" /* ---------------- * pg_database definition. cpp turns this into * typedef struct FormData_pg_database * ---------------- */ CATALOG(pg_database,1262,DatabaseRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248,DatabaseRelation_Rowtype_Id) BKI_SCHEMA_MACRO { /* oid */ Oid oid; /* database name */ NameData datname; /* owner of database */ Oid datdba BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid); /* character encoding */ int32 encoding; /* locale provider, see pg_collation.collprovider */ char datlocprovider; /* allowed as CREATE DATABASE template? */ bool datistemplate; /* new connections allowed? */ bool datallowconn; /* database has login event triggers? */ bool dathasloginevt; /* * Max connections allowed. Negative values have special meaning, see * DATCONNLIMIT_* defines below. */ int32 datconnlimit; /* all Xids < this are frozen in this DB */ TransactionId datfrozenxid; /* all multixacts in the DB are >= this */ TransactionId datminmxid; /* default table space for this DB */ Oid dattablespace BKI_LOOKUP(pg_tablespace); #ifdef CATALOG_VARLEN /* variable-length fields start here */ /* LC_COLLATE setting */ text datcollate BKI_FORCE_NOT_NULL; /* LC_CTYPE setting */ text datctype BKI_FORCE_NOT_NULL; /* ICU locale ID */ text datlocale; /* ICU collation rules */ text daticurules; /* provider-dependent version of collation data */ text datcollversion BKI_DEFAULT(_null_); /* access permissions */ aclitem datacl[1]; #endif } FormData_pg_database; /* ---------------- * Form_pg_database corresponds to a pointer to a tuple with * the format of pg_database relation. * ---------------- */ typedef FormData_pg_database *Form_pg_database; DECLARE_TOAST_WITH_MACRO(pg_database, 4177, 4178, PgDatabaseToastTable, PgDatabaseToastIndex); DECLARE_UNIQUE_INDEX(pg_database_datname_index, 2671, DatabaseNameIndexId, pg_database, btree(datname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_database_oid_index, 2672, DatabaseOidIndexId, pg_database, btree(oid oid_ops)); MAKE_SYSCACHE(DATABASEOID, pg_database_oid_index, 4); /* * pg_database.dat contains an entry for template1, but not for the template0 * or postgres databases, because those are created later in initdb. * However, we still want to manually assign the OIDs for template0 and * postgres, so declare those here. */ DECLARE_OID_DEFINING_MACRO(Template0DbOid, 4); DECLARE_OID_DEFINING_MACRO(PostgresDbOid, 5); /* * Special values for pg_database.datconnlimit. Normal values are >= 0. */ #define DATCONNLIMIT_UNLIMITED -1 /* no limit */ /* * A database is set to invalid partway through being dropped. Using * datconnlimit=-2 for this purpose isn't particularly clean, but is * backpatchable. */ #define DATCONNLIMIT_INVALID_DB -2 extern bool database_is_invalid_form(Form_pg_database datform); extern bool database_is_invalid_oid(Oid dboid); #endif /* PG_DATABASE_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_database_d.h000066400000000000000000000031501477334012600246730ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_database_d.h * Macro definitions for pg_database * * Portions Copyright (c) 1996-2024, 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_DATABASE_D_H #define PG_DATABASE_D_H #define DatabaseRelationId 1262 #define DatabaseRelation_Rowtype_Id 1248 #define PgDatabaseToastTable 4177 #define PgDatabaseToastIndex 4178 #define DatabaseNameIndexId 2671 #define DatabaseOidIndexId 2672 #define Template0DbOid 4 #define PostgresDbOid 5 #define Anum_pg_database_oid 1 #define Anum_pg_database_datname 2 #define Anum_pg_database_datdba 3 #define Anum_pg_database_encoding 4 #define Anum_pg_database_datlocprovider 5 #define Anum_pg_database_datistemplate 6 #define Anum_pg_database_datallowconn 7 #define Anum_pg_database_dathasloginevt 8 #define Anum_pg_database_datconnlimit 9 #define Anum_pg_database_datfrozenxid 10 #define Anum_pg_database_datminmxid 11 #define Anum_pg_database_dattablespace 12 #define Anum_pg_database_datcollate 13 #define Anum_pg_database_datctype 14 #define Anum_pg_database_datlocale 15 #define Anum_pg_database_daticurules 16 #define Anum_pg_database_datcollversion 17 #define Anum_pg_database_datacl 18 #define Natts_pg_database 18 #define Template1DbOid 1 #endif /* PG_DATABASE_D_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_depend.h000066400000000000000000000053471477334012600240750ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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; dependencies for system-defined objects are loaded into it * on-the-fly during initdb. Most built-in objects are pinned anyway, * and hence need no explicit entries in pg_depend. * * 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-2024, 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. */ Oid classid BKI_LOOKUP(pg_class); /* 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 BKI_LOOKUP(pg_class); /* 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; DECLARE_INDEX(pg_depend_depender_index, 2673, DependDependerIndexId, pg_depend, btree(classid oid_ops, objid oid_ops, objsubid int4_ops)); DECLARE_INDEX(pg_depend_reference_index, 2674, DependReferenceIndexId, pg_depend, btree(refclassid oid_ops, refobjid oid_ops, refobjsubid int4_ops)); #endif /* PG_DEPEND_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_depend_d.h000066400000000000000000000017371477334012600243770ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_depend_d.h * Macro definitions for pg_depend * * Portions Copyright (c) 1996-2024, 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 DependDependerIndexId 2673 #define DependReferenceIndexId 2674 #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-17-6.1.0/src/postgres/include/catalog/pg_event_trigger.h000066400000000000000000000037571477334012600255050ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_event_trigger.h * definition of the "event trigger" system catalog (pg_event_trigger) * * * Portions Copyright (c) 1996-2024, 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 BKI_LOOKUP(pg_authid); /* trigger's owner */ Oid evtfoid BKI_LOOKUP(pg_proc); /* 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; DECLARE_TOAST(pg_event_trigger, 4145, 4146); DECLARE_UNIQUE_INDEX(pg_event_trigger_evtname_index, 3467, EventTriggerNameIndexId, pg_event_trigger, btree(evtname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_event_trigger_oid_index, 3468, EventTriggerOidIndexId, pg_event_trigger, btree(oid oid_ops)); MAKE_SYSCACHE(EVENTTRIGGERNAME, pg_event_trigger_evtname_index, 8); MAKE_SYSCACHE(EVENTTRIGGEROID, pg_event_trigger_oid_index, 8); #endif /* PG_EVENT_TRIGGER_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_event_trigger_d.h000066400000000000000000000020741477334012600257770ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_event_trigger_d.h * Macro definitions for pg_event_trigger * * Portions Copyright (c) 1996-2024, 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 EventTriggerNameIndexId 3467 #define EventTriggerOidIndexId 3468 #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-17-6.1.0/src/postgres/include/catalog/pg_index.h000066400000000000000000000070041477334012600237350ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_index.h * definition of the "index" system catalog (pg_index) * * * Portions Copyright (c) 1996-2024, 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 BKI_LOOKUP(pg_class); /* OID of the index */ Oid indrelid BKI_LOOKUP(pg_class); /* 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 indnullsnotdistinct; /* null treatment in 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 BKI_FORCE_NOT_NULL; /* column numbers of indexed cols, * or 0 */ #ifdef CATALOG_VARLEN oidvector indcollation BKI_LOOKUP_OPT(pg_collation) BKI_FORCE_NOT_NULL; /* collation identifiers */ oidvector indclass BKI_LOOKUP(pg_opclass) BKI_FORCE_NOT_NULL; /* opclass identifiers */ int2vector indoption BKI_FORCE_NOT_NULL; /* 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; DECLARE_INDEX(pg_index_indrelid_index, 2678, IndexIndrelidIndexId, pg_index, btree(indrelid oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_index_indexrelid_index, 2679, IndexRelidIndexId, pg_index, btree(indexrelid oid_ops)); MAKE_SYSCACHE(INDEXRELID, pg_index_indexrelid_index, 64); /* indkey can contain zero (InvalidAttrNumber) to represent expressions */ DECLARE_ARRAY_FOREIGN_KEY_OPT((indrelid, indkey), pg_attribute, (attrelid, attnum)); #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-17-6.1.0/src/postgres/include/catalog/pg_index_d.h000066400000000000000000000034431477334012600242430ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_index_d.h * Macro definitions for pg_index * * Portions Copyright (c) 1996-2024, 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 IndexIndrelidIndexId 2678 #define IndexRelidIndexId 2679 #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_indnullsnotdistinct 6 #define Anum_pg_index_indisprimary 7 #define Anum_pg_index_indisexclusion 8 #define Anum_pg_index_indimmediate 9 #define Anum_pg_index_indisclustered 10 #define Anum_pg_index_indisvalid 11 #define Anum_pg_index_indcheckxmin 12 #define Anum_pg_index_indisready 13 #define Anum_pg_index_indislive 14 #define Anum_pg_index_indisreplident 15 #define Anum_pg_index_indkey 16 #define Anum_pg_index_indcollation 17 #define Anum_pg_index_indclass 18 #define Anum_pg_index_indoption 19 #define Anum_pg_index_indexprs 20 #define Anum_pg_index_indpred 21 #define Natts_pg_index 21 /* * 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-17-6.1.0/src/postgres/include/catalog/pg_language.h000066400000000000000000000041371477334012600244150ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_language.h * definition of the "language" system catalog (pg_language) * * * Portions Copyright (c) 1996-2024, 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(POSTGRES) BKI_LOOKUP(pg_authid); /* 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_OPT(pg_proc); /* Optional anonymous-block handler function */ Oid laninline BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_proc); /* Optional validation function */ Oid lanvalidator BKI_DEFAULT(0) BKI_LOOKUP_OPT(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; DECLARE_TOAST(pg_language, 4157, 4158); DECLARE_UNIQUE_INDEX(pg_language_name_index, 2681, LanguageNameIndexId, pg_language, btree(lanname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_language_oid_index, 2682, LanguageOidIndexId, pg_language, btree(oid oid_ops)); MAKE_SYSCACHE(LANGNAME, pg_language_name_index, 4); MAKE_SYSCACHE(LANGOID, pg_language_oid_index, 4); #endif /* PG_LANGUAGE_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_language_d.h000066400000000000000000000022201477334012600247070ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_language_d.h * Macro definitions for pg_language * * Portions Copyright (c) 1996-2024, 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 LanguageNameIndexId 2681 #define LanguageOidIndexId 2682 #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-17-6.1.0/src/postgres/include/catalog/pg_namespace.h000066400000000000000000000037741477334012600245740ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_namespace.h * definition of the "namespace" system catalog (pg_namespace) * * * Portions Copyright (c) 1996-2024, 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 BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid); #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; DECLARE_TOAST(pg_namespace, 4163, 4164); DECLARE_UNIQUE_INDEX(pg_namespace_nspname_index, 2684, NamespaceNameIndexId, pg_namespace, btree(nspname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_namespace_oid_index, 2685, NamespaceOidIndexId, pg_namespace, btree(oid oid_ops)); MAKE_SYSCACHE(NAMESPACENAME, pg_namespace_nspname_index, 4); MAKE_SYSCACHE(NAMESPACEOID, pg_namespace_oid_index, 16); /* * prototypes for functions in pg_namespace.c */ extern Oid NamespaceCreate(const char *nspName, Oid ownerId, bool isTemp); #endif /* PG_NAMESPACE_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_namespace_d.h000066400000000000000000000017551477334012600250740ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_namespace_d.h * Macro definitions for pg_namespace * * Portions Copyright (c) 1996-2024, 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 NamespaceNameIndexId 2684 #define NamespaceOidIndexId 2685 #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-17-6.1.0/src/postgres/include/catalog/pg_opclass.h000066400000000000000000000064111477334012600242730ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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(pg_catalog) BKI_LOOKUP(pg_namespace); /* opclass owner */ Oid opcowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid); /* 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 if same as input column type */ Oid opckeytype BKI_DEFAULT(0) BKI_LOOKUP_OPT(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; DECLARE_UNIQUE_INDEX(pg_opclass_am_name_nsp_index, 2686, OpclassAmNameNspIndexId, pg_opclass, btree(opcmethod oid_ops, opcname name_ops, opcnamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_opclass_oid_index, 2687, OpclassOidIndexId, pg_opclass, btree(oid oid_ops)); MAKE_SYSCACHE(CLAAMNAMENSP, pg_opclass_am_name_nsp_index, 8); MAKE_SYSCACHE(CLAOID, pg_opclass_oid_index, 8); #endif /* PG_OPCLASS_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_opclass_d.h000066400000000000000000000030101477334012600245660ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_opclass_d.h * Macro definitions for pg_opclass * * Portions Copyright (c) 1996-2024, 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 OpclassAmNameNspIndexId 2686 #define OpclassOidIndexId 2687 #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-17-6.1.0/src/postgres/include/catalog/pg_operator.h000066400000000000000000000072231477334012600244640ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_operator.h * definition of the "operator" system catalog (pg_operator) * * * Portions Copyright (c) 1996-2024, 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(pg_catalog) BKI_LOOKUP(pg_namespace); /* operator owner */ Oid oprowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid); /* 'l' for prefix or 'b' for infix */ 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 prefix operator */ Oid oprleft BKI_LOOKUP_OPT(pg_type); /* right arg type */ Oid oprright BKI_LOOKUP(pg_type); /* result datatype; can be 0 in a "shell" operator */ Oid oprresult BKI_LOOKUP_OPT(pg_type); /* OID of commutator oper, or 0 if none */ Oid oprcom BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_operator); /* OID of negator oper, or 0 if none */ Oid oprnegate BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_operator); /* OID of underlying function; can be 0 in a "shell" operator */ regproc oprcode BKI_LOOKUP_OPT(pg_proc); /* OID of restriction estimator, or 0 */ regproc oprrest BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc); /* OID of join estimator, or 0 */ regproc oprjoin BKI_DEFAULT(-) BKI_LOOKUP_OPT(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; DECLARE_UNIQUE_INDEX_PKEY(pg_operator_oid_index, 2688, OperatorOidIndexId, pg_operator, btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_operator_oprname_l_r_n_index, 2689, OperatorNameNspIndexId, pg_operator, btree(oprname name_ops, oprleft oid_ops, oprright oid_ops, oprnamespace oid_ops)); MAKE_SYSCACHE(OPEROID, pg_operator_oid_index, 32); MAKE_SYSCACHE(OPERNAMENSP, pg_operator_oprname_l_r_n_index, 256); extern Oid OperatorLookup(List *operatorName, Oid leftObjectId, Oid rightObjectId, bool *defined); 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 makeExtensionDep, bool isUpdate); extern void OperatorValidateParams(Oid leftTypeId, Oid rightTypeId, Oid operResultType, bool hasCommutator, bool hasNegator, bool hasRestrictionSelectivity, bool hasJoinSelectivity, bool canMerge, bool canHash); extern void OperatorUpd(Oid baseId, Oid commId, Oid negId, bool isDelete); #endif /* PG_OPERATOR_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_operator_d.h000066400000000000000000000115601477334012600247660ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_operator_d.h * Macro definitions for pg_operator * * Portions Copyright (c) 1996-2024, 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 OperatorOidIndexId 2688 #define OperatorNameNspIndexId 2689 #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 TextPrefixOperator 3877 #define NameEqualTextOperator 254 #define NameLessTextOperator 255 #define NameGreaterEqualTextOperator 257 #define TIDEqualOperator 387 #define TIDLessOperator 2799 #define TIDGreaterOperator 2800 #define TIDLessEqOperator 2801 #define TIDGreaterEqOperator 2802 #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 #define OID_MULTIRANGE_LESS_OP 2862 #define OID_MULTIRANGE_LESS_EQUAL_OP 2863 #define OID_MULTIRANGE_GREATER_EQUAL_OP 2864 #define OID_MULTIRANGE_GREATER_OP 2865 #define OID_RANGE_OVERLAPS_MULTIRANGE_OP 2866 #define OID_MULTIRANGE_OVERLAPS_RANGE_OP 2867 #define OID_MULTIRANGE_OVERLAPS_MULTIRANGE_OP 2868 #define OID_MULTIRANGE_CONTAINS_ELEM_OP 2869 #define OID_MULTIRANGE_CONTAINS_RANGE_OP 2870 #define OID_MULTIRANGE_CONTAINS_MULTIRANGE_OP 2871 #define OID_MULTIRANGE_ELEM_CONTAINED_OP 2872 #define OID_MULTIRANGE_RANGE_CONTAINED_OP 2873 #define OID_MULTIRANGE_MULTIRANGE_CONTAINED_OP 2874 #define OID_RANGE_CONTAINS_MULTIRANGE_OP 4539 #define OID_RANGE_MULTIRANGE_CONTAINED_OP 4540 #define OID_RANGE_OVERLAPS_LEFT_MULTIRANGE_OP 2875 #define OID_MULTIRANGE_OVERLAPS_LEFT_RANGE_OP 2876 #define OID_MULTIRANGE_OVERLAPS_LEFT_MULTIRANGE_OP 2877 #define OID_RANGE_OVERLAPS_RIGHT_MULTIRANGE_OP 3585 #define OID_MULTIRANGE_OVERLAPS_RIGHT_RANGE_OP 4035 #define OID_MULTIRANGE_OVERLAPS_RIGHT_MULTIRANGE_OP 4142 #define OID_RANGE_ADJACENT_MULTIRANGE_OP 4179 #define OID_MULTIRANGE_ADJACENT_RANGE_OP 4180 #define OID_MULTIRANGE_ADJACENT_MULTIRANGE_OP 4198 #define OID_RANGE_LEFT_MULTIRANGE_OP 4395 #define OID_MULTIRANGE_LEFT_RANGE_OP 4396 #define OID_MULTIRANGE_LEFT_MULTIRANGE_OP 4397 #define OID_RANGE_RIGHT_MULTIRANGE_OP 4398 #define OID_MULTIRANGE_RIGHT_RANGE_OP 4399 #define OID_MULTIRANGE_RIGHT_MULTIRANGE_OP 4400 #endif /* PG_OPERATOR_D_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_opfamily.h000066400000000000000000000040451477334012600244500ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_opfamily.h * definition of the "operator family" system catalog (pg_opfamily) * * * Portions Copyright (c) 1996-2024, 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(pg_catalog) BKI_LOOKUP(pg_namespace); /* opfamily owner */ Oid opfowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid); } 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; DECLARE_UNIQUE_INDEX(pg_opfamily_am_name_nsp_index, 2754, OpfamilyAmNameNspIndexId, pg_opfamily, btree(opfmethod oid_ops, opfname name_ops, opfnamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_opfamily_oid_index, 2755, OpfamilyOidIndexId, pg_opfamily, btree(oid oid_ops)); MAKE_SYSCACHE(OPFAMILYAMNAMENSP, pg_opfamily_am_name_nsp_index, 8); MAKE_SYSCACHE(OPFAMILYOID, pg_opfamily_oid_index, 8); #ifdef EXPOSE_TO_CLIENT_CODE /* This does not account for non-core opfamilies that might accept boolean */ #define IsBuiltinBooleanOpfamily(opfamily) \ ((opfamily) == BOOL_BTREE_FAM_OID || (opfamily) == BOOL_HASH_FAM_OID) #endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_OPFAMILY_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_opfamily_d.h000066400000000000000000000030261477334012600247510ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_opfamily_d.h * Macro definitions for pg_opfamily * * Portions Copyright (c) 1996-2024, 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 OpfamilyAmNameNspIndexId 2754 #define OpfamilyOidIndexId 2755 #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 /* This does not account for non-core opfamilies that might accept boolean */ #define IsBuiltinBooleanOpfamily(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 INTERVAL_BTREE_FAM_OID 1982 #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-17-6.1.0/src/postgres/include/catalog/pg_partitioned_table.h000066400000000000000000000054731477334012600263270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_partitioned_table.h * definition of the "partitioned table" system catalog * (pg_partitioned_table) * * * Portions Copyright (c) 1996-2024, 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 BKI_LOOKUP(pg_class); /* partitioned table oid */ char partstrat; /* partitioning strategy */ int16 partnatts; /* number of partition key columns */ Oid partdefid BKI_LOOKUP_OPT(pg_class); /* default partition oid; * 0 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 BKI_FORCE_NOT_NULL; /* 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 BKI_LOOKUP(pg_opclass) BKI_FORCE_NOT_NULL; /* operator class to * compare keys */ oidvector partcollation BKI_LOOKUP_OPT(pg_collation) BKI_FORCE_NOT_NULL; /* 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; DECLARE_TOAST(pg_partitioned_table, 4165, 4166); DECLARE_UNIQUE_INDEX_PKEY(pg_partitioned_table_partrelid_index, 3351, PartitionedRelidIndexId, pg_partitioned_table, btree(partrelid oid_ops)); MAKE_SYSCACHE(PARTRELID, pg_partitioned_table_partrelid_index, 32); /* partattrs can contain zero (InvalidAttrNumber) to represent expressions */ DECLARE_ARRAY_FOREIGN_KEY_OPT((partrelid, partattrs), pg_attribute, (attrelid, attnum)); #endif /* PG_PARTITIONED_TABLE_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_partitioned_table_d.h000066400000000000000000000022121477334012600266160ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_partitioned_table_d.h * Macro definitions for pg_partitioned_table * * Portions Copyright (c) 1996-2024, 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 PartitionedRelidIndexId 3351 #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-17-6.1.0/src/postgres/include/catalog/pg_proc.h000066400000000000000000000151511477334012600235730ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_proc.h * definition of the "procedure" system catalog (pg_proc) * * Portions Copyright (c) 1996-2024, 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(pg_catalog) BKI_LOOKUP(pg_namespace); /* procedure owner */ Oid proowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid); /* 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 if not variadic */ Oid provariadic BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_type); /* planner support function for this function, or 0 if none */ regproc prosupport BKI_DEFAULT(0) BKI_LOOKUP_OPT(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) BKI_FORCE_NOT_NULL; #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_) BKI_LOOKUP(pg_type); /* procedure source text */ text prosrc BKI_FORCE_NOT_NULL; /* secondary procedure info (can be NULL) */ text probin BKI_DEFAULT(_null_); /* pre-parsed SQL function body */ pg_node_tree prosqlbody 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; DECLARE_TOAST(pg_proc, 2836, 2837); DECLARE_UNIQUE_INDEX_PKEY(pg_proc_oid_index, 2690, ProcedureOidIndexId, pg_proc, btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_proc_proname_args_nsp_index, 2691, ProcedureNameArgsNspIndexId, pg_proc, btree(proname name_ops, proargtypes oidvector_ops, pronamespace oid_ops)); MAKE_SYSCACHE(PROCOID, pg_proc_oid_index, 128); MAKE_SYSCACHE(PROCNAMEARGSNSP, pg_proc_proname_args_nsp_index, 128); #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 leader, or only in non-parallel mode. */ #define PROPARALLEL_SAFE 's' /* can run in worker or leader */ #define PROPARALLEL_RESTRICTED 'r' /* can run in parallel leader 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, Node *prosqlbody, 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-17-6.1.0/src/postgres/include/catalog/pg_proc_d.h000066400000000000000000000064651477334012600241060ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_proc_d.h * Macro definitions for pg_proc * * Portions Copyright (c) 1996-2024, 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 ProcedureOidIndexId 2690 #define ProcedureNameArgsNspIndexId 2691 #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_prosqlbody 28 #define Anum_pg_proc_proconfig 29 #define Anum_pg_proc_proacl 30 #define Natts_pg_proc 30 /* * 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 leader, or only in non-parallel mode. */ #define PROPARALLEL_SAFE 's' /* can run in worker or leader */ #define PROPARALLEL_RESTRICTED 'r' /* can run in parallel leader 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 /* PG_PROC_D_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_publication.h000066400000000000000000000114331477334012600251400ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_publication.h * definition of the "publication" system catalog (pg_publication) * * Portions Copyright (c) 1996-2024, 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 BKI_LOOKUP(pg_authid); /* 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; DECLARE_UNIQUE_INDEX_PKEY(pg_publication_oid_index, 6110, PublicationObjectIndexId, pg_publication, btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_publication_pubname_index, 6111, PublicationNameIndexId, pg_publication, btree(pubname name_ops)); MAKE_SYSCACHE(PUBLICATIONOID, pg_publication_oid_index, 8); MAKE_SYSCACHE(PUBLICATIONNAME, pg_publication_pubname_index, 8); typedef struct PublicationActions { bool pubinsert; bool pubupdate; bool pubdelete; bool pubtruncate; } PublicationActions; typedef struct PublicationDesc { PublicationActions pubactions; /* * true if the columns referenced in row filters which are used for UPDATE * or DELETE are part of the replica identity or the publication actions * do not include UPDATE or DELETE. */ bool rf_valid_for_update; bool rf_valid_for_delete; /* * true if the columns are part of the replica identity or the publication * actions do not include UPDATE or DELETE. */ bool cols_valid_for_update; bool cols_valid_for_delete; } PublicationDesc; typedef struct Publication { Oid oid; char *name; bool alltables; bool pubviaroot; PublicationActions pubactions; } Publication; typedef struct PublicationRelInfo { Relation relation; Node *whereClause; List *columns; } PublicationRelInfo; 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 List *GetPublicationSchemas(Oid pubid); extern List *GetSchemaPublications(Oid schemaid); extern List *GetSchemaPublicationRelations(Oid schemaid, PublicationPartOpt pub_partopt); extern List *GetAllSchemaPublicationRelations(Oid pubid, PublicationPartOpt pub_partopt); extern List *GetPubPartitionOptionRelations(List *result, PublicationPartOpt pub_partopt, Oid relid); extern Oid GetTopMostAncestorInPublication(Oid puboid, List *ancestors, int *ancestor_level); extern bool is_publishable_relation(Relation rel); extern bool is_schema_publication(Oid pubid); extern ObjectAddress publication_add_relation(Oid pubid, PublicationRelInfo *pri, bool if_not_exists); extern ObjectAddress publication_add_schema(Oid pubid, Oid schemaid, bool if_not_exists); extern Bitmapset *pub_collist_to_bitmapset(Bitmapset *columns, Datum pubcols, MemoryContext mcxt); #endif /* PG_PUBLICATION_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_publication_d.h000066400000000000000000000021741477334012600254450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_publication_d.h * Macro definitions for pg_publication * * Portions Copyright (c) 1996-2024, 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 PublicationObjectIndexId 6110 #define PublicationNameIndexId 6111 #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-17-6.1.0/src/postgres/include/catalog/pg_replication_origin.h000066400000000000000000000042531477334012600265110ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_replication_origin.h * definition of the "replication origin" system catalog * (pg_replication_origin) * * Portions Copyright (c) 1996-2024, 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; DECLARE_TOAST_WITH_MACRO(pg_replication_origin, 4181, 4182, PgReplicationOriginToastTable, PgReplicationOriginToastIndex); DECLARE_UNIQUE_INDEX_PKEY(pg_replication_origin_roiident_index, 6001, ReplicationOriginIdentIndex, pg_replication_origin, btree(roident oid_ops)); DECLARE_UNIQUE_INDEX(pg_replication_origin_roname_index, 6002, ReplicationOriginNameIndex, pg_replication_origin, btree(roname text_ops)); MAKE_SYSCACHE(REPLORIGIDENT, pg_replication_origin_roiident_index, 16); MAKE_SYSCACHE(REPLORIGNAME, pg_replication_origin_roname_index, 16); #endif /* PG_REPLICATION_ORIGIN_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_replication_origin_d.h000066400000000000000000000017751477334012600270220ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_replication_origin_d.h * Macro definitions for pg_replication_origin * * Portions Copyright (c) 1996-2024, 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 PgReplicationOriginToastTable 4181 #define PgReplicationOriginToastIndex 4182 #define ReplicationOriginIdentIndex 6001 #define ReplicationOriginNameIndex 6002 #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-17-6.1.0/src/postgres/include/catalog/pg_statistic.h000066400000000000000000000306361477334012600246440ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_statistic.h * definition of the "statistics" system catalog (pg_statistic) * * * Portions Copyright (c) 1996-2024, 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 BKI_LOOKUP(pg_class); /* 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 BKI_LOOKUP_OPT(pg_operator); Oid staop2 BKI_LOOKUP_OPT(pg_operator); Oid staop3 BKI_LOOKUP_OPT(pg_operator); Oid staop4 BKI_LOOKUP_OPT(pg_operator); Oid staop5 BKI_LOOKUP_OPT(pg_operator); Oid stacoll1 BKI_LOOKUP_OPT(pg_collation); Oid stacoll2 BKI_LOOKUP_OPT(pg_collation); Oid stacoll3 BKI_LOOKUP_OPT(pg_collation); Oid stacoll4 BKI_LOOKUP_OPT(pg_collation); Oid stacoll5 BKI_LOOKUP_OPT(pg_collation); #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; DECLARE_TOAST(pg_statistic, 2840, 2841); DECLARE_UNIQUE_INDEX_PKEY(pg_statistic_relid_att_inh_index, 2696, StatisticRelidAttnumInhIndexId, pg_statistic, btree(starelid oid_ops, staattnum int2_ops, stainherit bool_ops)); MAKE_SYSCACHE(STATRELATTINH, pg_statistic_relid_att_inh_index, 128); DECLARE_FOREIGN_KEY((starelid, staattnum), pg_attribute, (attrelid, attnum)); #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.) * * Note: The pg_stats view needs to be modified whenever a new slot kind is * added to core. */ /* * 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 may be chosen at ANALYZE time. 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, non-empty 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-17-6.1.0/src/postgres/include/catalog/pg_statistic_d.h000066400000000000000000000220711477334012600251410ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_statistic_d.h * Macro definitions for pg_statistic * * Portions Copyright (c) 1996-2024, 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 StatisticRelidAttnumInhIndexId 2696 #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.) * * Note: The pg_stats view needs to be modified whenever a new slot kind is * added to core. */ /* * 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 may be chosen at ANALYZE time. 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, non-empty 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-17-6.1.0/src/postgres/include/catalog/pg_statistic_ext.h000066400000000000000000000060541477334012600255210ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 BKI_LOOKUP(pg_class); /* relation containing * attributes */ /* These two fields form the unique key for the entry: */ NameData stxname; /* statistics object name */ Oid stxnamespace BKI_LOOKUP(pg_namespace); /* OID of statistics * object's namespace */ Oid stxowner BKI_LOOKUP(pg_authid); /* statistics object's owner */ /* * variable-length/nullable fields start here, but we allow direct access * to stxkeys */ int2vector stxkeys BKI_FORCE_NOT_NULL; /* array of column keys */ #ifdef CATALOG_VARLEN int16 stxstattarget BKI_DEFAULT(_null_) BKI_FORCE_NULL; /* statistics target */ char stxkind[1] BKI_FORCE_NOT_NULL; /* statistics kinds requested * to build */ pg_node_tree stxexprs; /* A list of expression trees for stats * attributes that are not simple column * references. */ #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; DECLARE_TOAST(pg_statistic_ext, 3439, 3440); DECLARE_UNIQUE_INDEX_PKEY(pg_statistic_ext_oid_index, 3380, StatisticExtOidIndexId, pg_statistic_ext, btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_statistic_ext_name_index, 3997, StatisticExtNameIndexId, pg_statistic_ext, btree(stxname name_ops, stxnamespace oid_ops)); DECLARE_INDEX(pg_statistic_ext_relid_index, 3379, StatisticExtRelidIndexId, pg_statistic_ext, btree(stxrelid oid_ops)); MAKE_SYSCACHE(STATEXTOID, pg_statistic_ext_oid_index, 4); MAKE_SYSCACHE(STATEXTNAMENSP, pg_statistic_ext_name_index, 4); DECLARE_ARRAY_FOREIGN_KEY((stxrelid, stxkeys), pg_attribute, (attrelid, attnum)); #ifdef EXPOSE_TO_CLIENT_CODE #define STATS_EXT_NDISTINCT 'd' #define STATS_EXT_DEPENDENCIES 'f' #define STATS_EXT_MCV 'm' #define STATS_EXT_EXPRESSIONS 'e' #endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_STATISTIC_EXT_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_statistic_ext_d.h000066400000000000000000000025031477334012600260170ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_statistic_ext_d.h * Macro definitions for pg_statistic_ext * * Portions Copyright (c) 1996-2024, 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 StatisticExtOidIndexId 3380 #define StatisticExtNameIndexId 3997 #define StatisticExtRelidIndexId 3379 #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_stxkeys 6 #define Anum_pg_statistic_ext_stxstattarget 7 #define Anum_pg_statistic_ext_stxkind 8 #define Anum_pg_statistic_ext_stxexprs 9 #define Natts_pg_statistic_ext 9 #define STATS_EXT_NDISTINCT 'd' #define STATS_EXT_DEPENDENCIES 'f' #define STATS_EXT_MCV 'm' #define STATS_EXT_EXPRESSIONS 'e' #endif /* PG_STATISTIC_EXT_D_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_transform.h000066400000000000000000000031501477334012600246370ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_transform.h * definition of the "transform" system catalog (pg_transform) * * * Portions Copyright (c) 1996-2024, 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 BKI_LOOKUP(pg_type); Oid trflang BKI_LOOKUP(pg_language); regproc trffromsql BKI_LOOKUP_OPT(pg_proc); regproc trftosql BKI_LOOKUP_OPT(pg_proc); } 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; DECLARE_UNIQUE_INDEX_PKEY(pg_transform_oid_index, 3574, TransformOidIndexId, pg_transform, btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_transform_type_lang_index, 3575, TransformTypeLangIndexId, pg_transform, btree(trftype oid_ops, trflang oid_ops)); MAKE_SYSCACHE(TRFOID, pg_transform_oid_index, 16); MAKE_SYSCACHE(TRFTYPELANG, pg_transform_type_lang_index, 16); #endif /* PG_TRANSFORM_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_transform_d.h000066400000000000000000000016721477334012600251510ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_transform_d.h * Macro definitions for pg_transform * * Portions Copyright (c) 1996-2024, 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 TransformOidIndexId 3574 #define TransformTypeLangIndexId 3575 #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-17-6.1.0/src/postgres/include/catalog/pg_trigger.h000066400000000000000000000142211477334012600242700ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_trigger.h * definition of the "trigger" system catalog (pg_trigger) * * * Portions Copyright (c) 1996-2024, 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 BKI_LOOKUP(pg_class); /* relation trigger is * attached to */ Oid tgparentid BKI_LOOKUP_OPT(pg_trigger); /* OID of parent * trigger, if any */ NameData tgname; /* trigger's name */ Oid tgfoid BKI_LOOKUP(pg_proc); /* 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 BKI_LOOKUP_OPT(pg_class); /* constraint's FROM * table, if any */ Oid tgconstrindid BKI_LOOKUP_OPT(pg_class); /* constraint's * supporting index, if * any */ Oid tgconstraint BKI_LOOKUP_OPT(pg_constraint); /* 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 BKI_FORCE_NOT_NULL; /* 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; DECLARE_TOAST(pg_trigger, 2336, 2337); DECLARE_INDEX(pg_trigger_tgconstraint_index, 2699, TriggerConstraintIndexId, pg_trigger, btree(tgconstraint oid_ops)); DECLARE_UNIQUE_INDEX(pg_trigger_tgrelid_tgname_index, 2701, TriggerRelidNameIndexId, pg_trigger, btree(tgrelid oid_ops, tgname name_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_trigger_oid_index, 2702, TriggerOidIndexId, pg_trigger, btree(oid oid_ops)); DECLARE_ARRAY_FOREIGN_KEY((tgrelid, tgattr), pg_attribute, (attrelid, attnum)); #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-17-6.1.0/src/postgres/include/catalog/pg_trigger_d.h000066400000000000000000000102151477334012600245720ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_trigger_d.h * Macro definitions for pg_trigger * * Portions Copyright (c) 1996-2024, 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 TriggerConstraintIndexId 2699 #define TriggerRelidNameIndexId 2701 #define TriggerOidIndexId 2702 #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-17-6.1.0/src/postgres/include/catalog/pg_ts_config.h000066400000000000000000000031351477334012600246020ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_config.h * definition of the "text search configuration" system catalog * (pg_ts_config) * * * Portions Copyright (c) 1996-2024, 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(pg_catalog) BKI_LOOKUP(pg_namespace); /* owner */ Oid cfgowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid); /* OID of parser */ Oid cfgparser BKI_LOOKUP(pg_ts_parser); } FormData_pg_ts_config; typedef FormData_pg_ts_config *Form_pg_ts_config; DECLARE_UNIQUE_INDEX(pg_ts_config_cfgname_index, 3608, TSConfigNameNspIndexId, pg_ts_config, btree(cfgname name_ops, cfgnamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_ts_config_oid_index, 3712, TSConfigOidIndexId, pg_ts_config, btree(oid oid_ops)); MAKE_SYSCACHE(TSCONFIGNAMENSP, pg_ts_config_cfgname_index, 2); MAKE_SYSCACHE(TSCONFIGOID, pg_ts_config_oid_index, 2); #endif /* PG_TS_CONFIG_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_ts_config_d.h000066400000000000000000000016721477334012600251110ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_config_d.h * Macro definitions for pg_ts_config * * Portions Copyright (c) 1996-2024, 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 TSConfigNameNspIndexId 3608 #define TSConfigOidIndexId 3712 #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-17-6.1.0/src/postgres/include/catalog/pg_ts_dict.h000066400000000000000000000033611477334012600242610ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_dict.h * definition of the "text search dictionary" system catalog (pg_ts_dict) * * * Portions Copyright (c) 1996-2024, 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(pg_catalog) BKI_LOOKUP(pg_namespace); /* owner */ Oid dictowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid); /* 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; DECLARE_TOAST(pg_ts_dict, 4169, 4170); DECLARE_UNIQUE_INDEX(pg_ts_dict_dictname_index, 3604, TSDictionaryNameNspIndexId, pg_ts_dict, btree(dictname name_ops, dictnamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_ts_dict_oid_index, 3605, TSDictionaryOidIndexId, pg_ts_dict, btree(oid oid_ops)); MAKE_SYSCACHE(TSDICTNAMENSP, pg_ts_dict_dictname_index, 2); MAKE_SYSCACHE(TSDICTOID, pg_ts_dict_oid_index, 2); #endif /* PG_TS_DICT_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_ts_dict_d.h000066400000000000000000000017371477334012600245710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_dict_d.h * Macro definitions for pg_ts_dict * * Portions Copyright (c) 1996-2024, 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 TSDictionaryNameNspIndexId 3604 #define TSDictionaryOidIndexId 3605 #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-17-6.1.0/src/postgres/include/catalog/pg_ts_parser.h000066400000000000000000000034751477334012600246400ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_parser.h * definition of the "text search parser" system catalog (pg_ts_parser) * * * Portions Copyright (c) 1996-2024, 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(pg_catalog) BKI_LOOKUP(pg_namespace); /* 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_OPT(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; DECLARE_UNIQUE_INDEX(pg_ts_parser_prsname_index, 3606, TSParserNameNspIndexId, pg_ts_parser, btree(prsname name_ops, prsnamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_ts_parser_oid_index, 3607, TSParserOidIndexId, pg_ts_parser, btree(oid oid_ops)); MAKE_SYSCACHE(TSPARSERNAMENSP, pg_ts_parser_prsname_index, 2); MAKE_SYSCACHE(TSPARSEROID, pg_ts_parser_oid_index, 2); #endif /* PG_TS_PARSER_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_ts_parser_d.h000066400000000000000000000020531477334012600251320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_parser_d.h * Macro definitions for pg_ts_parser * * Portions Copyright (c) 1996-2024, 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 TSParserNameNspIndexId 3606 #define TSParserOidIndexId 3607 #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-17-6.1.0/src/postgres/include/catalog/pg_ts_template.h000066400000000000000000000032371477334012600251530ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_template.h * definition of the "text search template" system catalog (pg_ts_template) * * * Portions Copyright (c) 1996-2024, 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(pg_catalog) BKI_LOOKUP(pg_namespace); /* initialization method of dict (may be 0) */ regproc tmplinit BKI_LOOKUP_OPT(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; DECLARE_UNIQUE_INDEX(pg_ts_template_tmplname_index, 3766, TSTemplateNameNspIndexId, pg_ts_template, btree(tmplname name_ops, tmplnamespace oid_ops)); DECLARE_UNIQUE_INDEX_PKEY(pg_ts_template_oid_index, 3767, TSTemplateOidIndexId, pg_ts_template, btree(oid oid_ops)); MAKE_SYSCACHE(TSTEMPLATENAMENSP, pg_ts_template_tmplname_index, 2); MAKE_SYSCACHE(TSTEMPLATEOID, pg_ts_template_oid_index, 2); #endif /* PG_TS_TEMPLATE_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_ts_template_d.h000066400000000000000000000017311477334012600254530ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_template_d.h * Macro definitions for pg_ts_template * * Portions Copyright (c) 1996-2024, 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 TSTemplateNameNspIndexId 3766 #define TSTemplateOidIndexId 3767 #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-17-6.1.0/src/postgres/include/catalog/pg_type.h000066400000000000000000000342641477334012600236170ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_type.h * definition of the "type" system catalog (pg_type) * * * Portions Copyright (c) 1996-2024, 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(pg_catalog) BKI_LOOKUP(pg_namespace); /* type owner */ Oid typowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid); /* * 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_OPT(pg_class); /* * Type-specific subscripting handler. If typsubscript is 0, it means * that this type doesn't support subscripting. Note that various parts * of the system deem types to be "true" array types only if their * typsubscript is array_subscript_handler. */ regproc typsubscript BKI_DEFAULT(-) BKI_ARRAY_DEFAULT(array_subscript_handler) BKI_LOOKUP_OPT(pg_proc); /* * If typelem is not 0 then it identifies another row in pg_type, defining * the type yielded by subscripting. This should be 0 if typsubscript is * 0. However, it can be 0 when typsubscript isn't 0, if the handler * doesn't need typelem to determine the subscripting result type. Note * that a typelem dependency is considered to imply physical containment * of the element type in this type; so DDL changes on the element type * might be restricted by the presence of this type. */ Oid typelem BKI_DEFAULT(0) BKI_LOOKUP_OPT(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_OPT(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_OPT(pg_proc); regproc typsend BKI_ARRAY_DEFAULT(array_send) BKI_LOOKUP_OPT(pg_proc); /* * I/O functions for optional type modifiers. */ regproc typmodin BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc); regproc typmodout BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc); /* * Custom ANALYZE procedure for the datatype (0 selects the default). */ regproc typanalyze BKI_DEFAULT(-) BKI_ARRAY_DEFAULT(array_typanalyze) BKI_LOOKUP_OPT(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) BKI_LOOKUP_OPT(pg_type); /* * 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_OPT(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; DECLARE_TOAST(pg_type, 4171, 4172); DECLARE_UNIQUE_INDEX_PKEY(pg_type_oid_index, 2703, TypeOidIndexId, pg_type, btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_type_typname_nsp_index, 2704, TypeNameNspIndexId, pg_type, btree(typname name_ops, typnamespace oid_ops)); MAKE_SYSCACHE(TYPEOID, pg_type_oid_index, 64); MAKE_SYSCACHE(TYPENAMENSP, pg_type_typname_nsp_index, 64); #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_MULTIRANGE 'm' /* multirange 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 TYPCATEGORY_INTERNAL 'Z' #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 || \ (typid) == ANYMULTIRANGEOID) #define IsPolymorphicTypeFamily2(typid) \ ((typid) == ANYCOMPATIBLEOID || \ (typid) == ANYCOMPATIBLEARRAYOID || \ (typid) == ANYCOMPATIBLENONARRAYOID || \ (typid) == ANYCOMPATIBLERANGEOID || \ (typid) == ANYCOMPATIBLEMULTIRANGEOID) /* Is this a "true" array type? (Requires fmgroids.h) */ #define IsTrueArrayType(typeForm) \ (OidIsValid((typeForm)->typelem) && \ (typeForm)->typsubscript == F_ARRAY_SUBSCRIPT_HANDLER) /* * Backwards compatibility for ancient random spellings of pg_type OID macros. * Don't use these names in new code. */ #define CASHOID MONEYOID #define LSNOID PG_LSNOID #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 subscriptProcedure, 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 makeExtensionDep, 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); extern char *makeMultirangeTypeName(const char *rangeTypeName, Oid typeNamespace); #endif /* PG_TYPE_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/pg_type_d.h000066400000000000000000000227101477334012600241130ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_type_d.h * Macro definitions for pg_type * * Portions Copyright (c) 1996-2024, 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 TypeOidIndexId 2703 #define TypeNameNspIndexId 2704 #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_typsubscript 13 #define Anum_pg_type_typelem 14 #define Anum_pg_type_typarray 15 #define Anum_pg_type_typinput 16 #define Anum_pg_type_typoutput 17 #define Anum_pg_type_typreceive 18 #define Anum_pg_type_typsend 19 #define Anum_pg_type_typmodin 20 #define Anum_pg_type_typmodout 21 #define Anum_pg_type_typanalyze 22 #define Anum_pg_type_typalign 23 #define Anum_pg_type_typstorage 24 #define Anum_pg_type_typnotnull 25 #define Anum_pg_type_typbasetype 26 #define Anum_pg_type_typtypmod 27 #define Anum_pg_type_typndims 28 #define Anum_pg_type_typcollation 29 #define Anum_pg_type_typdefaultbin 30 #define Anum_pg_type_typdefault 31 #define Anum_pg_type_typacl 32 #define Natts_pg_type 32 /* * 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_MULTIRANGE 'm' /* multirange 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 TYPCATEGORY_INTERNAL 'Z' #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 || \ (typid) == ANYMULTIRANGEOID) #define IsPolymorphicTypeFamily2(typid) \ ((typid) == ANYCOMPATIBLEOID || \ (typid) == ANYCOMPATIBLEARRAYOID || \ (typid) == ANYCOMPATIBLENONARRAYOID || \ (typid) == ANYCOMPATIBLERANGEOID || \ (typid) == ANYCOMPATIBLEMULTIRANGEOID) /* Is this a "true" array type? (Requires fmgroids.h) */ #define IsTrueArrayType(typeForm) \ (OidIsValid((typeForm)->typelem) && \ (typeForm)->typsubscript == F_ARRAY_SUBSCRIPT_HANDLER) /* * Backwards compatibility for ancient random spellings of pg_type OID macros. * Don't use these names in new code. */ #define CASHOID MONEYOID #define LSNOID PG_LSNOID #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 PG_NODE_TREEOID 194 #define PG_NDISTINCTOID 3361 #define PG_DEPENDENCIESOID 3402 #define PG_MCV_LISTOID 5017 #define PG_DDL_COMMANDOID 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 MONEYOID 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 PG_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 INT4MULTIRANGEOID 4451 #define NUMMULTIRANGEOID 4532 #define TSMULTIRANGEOID 4533 #define TSTZMULTIRANGEOID 4534 #define DATEMULTIRANGEOID 4535 #define INT8MULTIRANGEOID 4536 #define RECORDOID 2249 #define RECORDARRAYOID 2287 #define CSTRINGOID 2275 #define ANYOID 2276 #define ANYARRAYOID 2277 #define VOIDOID 2278 #define TRIGGEROID 2279 #define EVENT_TRIGGEROID 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 ANYMULTIRANGEOID 4537 #define ANYCOMPATIBLEMULTIRANGEOID 4538 #define PG_BRIN_BLOOM_SUMMARYOID 4600 #define PG_BRIN_MINMAX_MULTI_SUMMARYOID 4601 #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 PG_TYPEARRAYOID 210 #define PG_ATTRIBUTEARRAYOID 270 #define PG_PROCARRAYOID 272 #define PG_CLASSARRAYOID 273 #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 INT4MULTIRANGEARRAYOID 6150 #define NUMMULTIRANGEARRAYOID 6151 #define TSMULTIRANGEARRAYOID 6152 #define TSTZMULTIRANGEARRAYOID 6153 #define DATEMULTIRANGEARRAYOID 6155 #define INT8MULTIRANGEARRAYOID 6157 #define CSTRINGARRAYOID 1263 #endif /* PG_TYPE_D_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/storage.h000066400000000000000000000033631477334012600236100ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * storage.h * prototypes for functions in backend/catalog/storage.c * * * Portions Copyright (c) 1996-2024, 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/relfilelocator.h" #include "storage/smgr.h" #include "utils/relcache.h" /* GUC variables */ extern PGDLLIMPORT int wal_skip_threshold; extern SMgrRelation RelationCreateStorage(RelFileLocator rlocator, char relpersistence, bool register_delete); extern void RelationDropStorage(Relation rel); extern void RelationPreserveStorage(RelFileLocator rlocator, 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 RelFileLocatorSkippingWAL(RelFileLocator rlocator); 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, RelFileLocator **ptr); extern void AtSubCommit_smgr(void); extern void AtSubAbort_smgr(void); extern void PostPrepare_smgr(void); #endif /* STORAGE_H */ libpg_query-17-6.1.0/src/postgres/include/catalog/syscache_ids.h000066400000000000000000000035201477334012600246000ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * syscache_ids.h * SysCache identifiers * * Portions Copyright (c) 1996-2024, 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 * *------------------------------------------------------------------------- */ enum SysCacheIdentifier { AGGFNOID, 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, PARAMETERACLNAME, PARAMETERACLOID, PARTRELID, PROCNAMEARGSNSP, PROCOID, PUBLICATIONNAME, PUBLICATIONNAMESPACE, PUBLICATIONNAMESPACEMAP, PUBLICATIONOID, PUBLICATIONREL, PUBLICATIONRELMAP, RANGEMULTIRANGE, 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) libpg_query-17-6.1.0/src/postgres/include/commands/000077500000000000000000000000001477334012600221555ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/commands/async.h000066400000000000000000000027741477334012600234550ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * async.h * Asynchronous notification: NOTIFY, LISTEN, UNLISTEN * * Portions Copyright (c) 1996-2024, 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 extern PGDLLIMPORT bool Trace_notify; extern PGDLLIMPORT int max_notify_queue_pages; extern PGDLLIMPORT 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); /* signal handler for inbound notifies (PROCSIG_NOTIFY_INTERRUPT) */ extern void HandleNotifyInterrupt(void); /* process interrupts */ extern void ProcessNotifyInterrupt(bool flush); #endif /* ASYNC_H */ libpg_query-17-6.1.0/src/postgres/include/commands/dbcommands.h000066400000000000000000000026661477334012600244470ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * dbcommands.h * Database management commands (create/drop database). * * * Portions Copyright (c) 1996-2024, 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 ObjectAddress AlterDatabaseRefreshColl(AlterDatabaseRefreshCollStmt *stmt); 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 bool have_createdb_privilege(void); extern void check_encoding_locale_matches(int encoding, const char *collate, const char *ctype); #endif /* DBCOMMANDS_H */ libpg_query-17-6.1.0/src/postgres/include/commands/defrem.h000066400000000000000000000153761477334012600236040ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * defrem.h * POSTGRES define and remove utility definitions. * * * Portions Copyright (c) 1996-2024, 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 tableId, IndexStmt *stmt, Oid indexRelationId, Oid parentIndexId, Oid parentConstraintId, int total_parts, bool is_alter_table, bool check_rights, bool check_not_in_use, bool skip_build, bool quiet); extern void ExecReindex(ParseState *pstate, const ReindexStmt *stmt, bool isTopLevel); 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, const List *attributeList, const List *exclusionOpNames); extern Oid GetDefaultOpClass(Oid type_id, Oid am_id); extern Oid ResolveOpClass(const 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 ObjectAddress CreateTransform(CreateTransformStmt *stmt); extern void IsThereFunctionInNamespace(const char *proname, int pronargs, oidvector *proargtypes, Oid nspOid); extern void ExecuteDoStmt(ParseState *pstate, 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, List **parameterTypes_list, ArrayType **allParameterTypes, ArrayType **parameterModes, ArrayType **parameterNames, List **inParameterNames_list, 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 RemoveStatisticsDataById(Oid statsOid, bool inh); extern Oid StatisticsGetRelation(Oid statId, bool missing_ok); /* 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 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 ObjectAddress DefineTSDictionary(List *names, List *parameters); extern ObjectAddress AlterTSDictionary(AlterTSDictionaryStmt *stmt); extern ObjectAddress DefineTSTemplate(List *names, List *parameters); 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(ParseState *pstate, CreateFdwStmt *stmt); extern ObjectAddress AlterForeignDataWrapper(ParseState *pstate, AlterFdwStmt *stmt); extern ObjectAddress CreateForeignServer(CreateForeignServerStmt *stmt); extern ObjectAddress AlterForeignServer(AlterForeignServerStmt *stmt); extern ObjectAddress CreateUserMapping(CreateUserMappingStmt *stmt); extern ObjectAddress AlterUserMapping(AlterUserMappingStmt *stmt); extern Oid RemoveUserMapping(DropUserMappingStmt *stmt); 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 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 Oid defGetObjectId(DefElem *def); extern List *defGetQualifiedName(DefElem *def); extern TypeName *defGetTypeName(DefElem *def); extern int defGetTypeLength(DefElem *def); extern List *defGetStringList(DefElem *def); extern void errorConflictingDefElem(DefElem *defel, ParseState *pstate) pg_attribute_noreturn(); #endif /* DEFREM_H */ libpg_query-17-6.1.0/src/postgres/include/commands/event_trigger.h000066400000000000000000000070201477334012600251710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * event_trigger.h * Declarations for command trigger handling. * * Portions Copyright (c) 1996-2024, 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; extern PGDLLIMPORT bool event_triggers; /* * Reasons for relation rewrites. * * pg_event_trigger_table_rewrite_reason() uses these values, so make sure to * update the documentation when changing this list. */ #define AT_REWRITE_ALTER_PERSISTENCE 0x01 #define AT_REWRITE_DEFAULT_VAL 0x02 #define AT_REWRITE_COLUMN_REWRITE 0x04 #define AT_REWRITE_ACCESS_METHOD 0x08 /* * 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 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 EventTriggerSupportsObject(const ObjectAddress *object); 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 void EventTriggerOnLogin(void); 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-17-6.1.0/src/postgres/include/commands/explain.h000066400000000000000000000131351477334012600237710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * explain.h * prototypes for explain.c * * Portions Copyright (c) 1996-2024, 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 ExplainSerializeOption { EXPLAIN_SERIALIZE_NONE, EXPLAIN_SERIALIZE_TEXT, EXPLAIN_SERIALIZE_BINARY, } ExplainSerializeOption; 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 memory; /* print planner's memory usage information */ bool settings; /* print modified settings */ bool generic; /* generate a generic plan */ ExplainSerializeOption serialize; /* serialize the query's output? */ 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 void standard_ExplainOneQuery(Query *query, int cursorOptions, IntoClause *into, ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv); 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, const MemoryContextCounters *mem_counters); 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 ExplainQueryParameters(ExplainState *es, ParamListInfo params, int maxlen); 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); extern DestReceiver *CreateExplainSerializeDestReceiver(ExplainState *es); #endif /* EXPLAIN_H */ libpg_query-17-6.1.0/src/postgres/include/commands/prepare.h000066400000000000000000000042311477334012600237640ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * prepare.h * PREPARE, EXECUTE and DEALLOCATE commands, and prepared-stmt storage * * * Copyright (c) 2002-2024, 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-17-6.1.0/src/postgres/include/commands/tablespace.h000066400000000000000000000040251477334012600244320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tablespace.h * Tablespace management commands (create/drop tablespace). * * * Portions Copyright (c) 1996-2024, 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" extern PGDLLIMPORT bool allow_in_place_tablespaces; /* 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 spcOid, Oid dbOid, 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 *record); extern void tblspc_desc(StringInfo buf, XLogReaderState *record); extern const char *tblspc_identify(uint8 info); #endif /* TABLESPACE_H */ libpg_query-17-6.1.0/src/postgres/include/commands/trigger.h000066400000000000000000000236331477334012600240000ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * trigger.h * Declarations for trigger handling. * * Portions Copyright (c) 1996-2024, 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 "access/tableam.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. copyfrom.c). * * This is per-caller to avoid conflicts in setting * 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 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 (copyfrom.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 ObjectAddress CreateTriggerFiringOn(CreateTrigStmt *stmt, const char *queryString, Oid relOid, Oid refRelOid, Oid constraintOid, Oid indexOid, Oid funcoid, Oid parentTriggerOid, Node *whenClause, bool isInternal, bool in_partition, char trigger_fires_when); extern void TriggerSetParentTrigger(Relation trigRel, Oid childTrigId, Oid parentTrigId, Oid childTableId); extern void RemoveTriggerById(Oid trigOid); extern Oid get_trigger_oid(Oid relid, const char *trigname, bool missing_ok); extern ObjectAddress renametrig(RenameStmt *stmt); extern void EnableDisableTrigger(Relation rel, const char *tgname, Oid tgparent, char fires_when, bool skip_system, bool recurse, 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, TM_Result *tmresult, TM_FailureData *tmfd); extern void ExecARDeleteTriggers(EState *estate, ResultRelInfo *relinfo, ItemPointer tupleid, HeapTuple fdw_trigtuple, TransitionCaptureState *transition_capture, bool is_crosspart_update); 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 *newslot, TM_Result *tmresult, TM_FailureData *tmfd); extern void ExecARUpdateTriggers(EState *estate, ResultRelInfo *relinfo, ResultRelInfo *src_partinfo, ResultRelInfo *dst_partinfo, ItemPointer tupleid, HeapTuple fdw_trigtuple, TupleTableSlot *newslot, List *recheckIndexes, TransitionCaptureState *transition_capture, bool is_crosspart_update); extern bool ExecIRUpdateTriggers(EState *estate, ResultRelInfo *relinfo, HeapTuple trigtuple, TupleTableSlot *newslot); 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 *oldslot, TupleTableSlot *newslot); extern bool RI_FKey_fk_upd_check_required(Trigger *trigger, Relation fk_rel, TupleTableSlot *oldslot, TupleTableSlot *newslot); 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-17-6.1.0/src/postgres/include/commands/user.h000066400000000000000000000030741477334012600233100ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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" #include "utils/guc.h" /* GUCs */ extern PGDLLIMPORT int Password_encryption; /* values from enum PasswordType */ extern PGDLLIMPORT char *createrole_self_grant; /* 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(ParseState *pstate, AlterRoleStmt *stmt); extern Oid AlterRoleSet(AlterRoleSetStmt *stmt); extern void DropRole(DropRoleStmt *stmt); extern void GrantRole(ParseState *pstate, 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); extern bool check_createrole_self_grant(char **newval, void **extra, GucSource source); extern void assign_createrole_self_grant(const char *newval, void *extra); #endif /* USER_H */ libpg_query-17-6.1.0/src/postgres/include/commands/vacuum.h000066400000000000000000000355271477334012600236420ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * vacuum.h * header file for postgres vacuum cleaner and statistics analyzer * * * Portions Copyright (c) 1996-2024, 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 "access/genam.h" #include "access/parallel.h" #include "access/tidstore.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 * index AMs that need to scan indexes to delete 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) /* Abstract type for parallel vacuum state */ typedef struct ParallelVacuumState ParallelVacuumState; /*---------- * 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. They don't necessarily match what * is in pg_attribute, because some index opclasses store a different type * than the underlying column/expression. Therefore, use these fields for * information about the datatype being fed to the typanalyze function. */ int attstattarget; /* -1 to use default */ 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; /* flag bits for VacuumParams->options */ #define VACOPT_VACUUM 0x01 /* do VACUUM */ #define VACOPT_ANALYZE 0x02 /* do ANALYZE */ #define VACOPT_VERBOSE 0x04 /* output INFO instrumentation messages */ #define VACOPT_FREEZE 0x08 /* FREEZE option */ #define VACOPT_FULL 0x10 /* FULL (non-concurrent) vacuum */ #define VACOPT_SKIP_LOCKED 0x20 /* skip if cannot get lock */ #define VACOPT_PROCESS_MAIN 0x40 /* process main relation */ #define VACOPT_PROCESS_TOAST 0x80 /* process the TOAST table, if any */ #define VACOPT_DISABLE_PAGE_SKIPPING 0x100 /* don't skip any pages */ #define VACOPT_SKIP_DATABASE_STATS 0x200 /* skip vac_update_datfrozenxid() */ #define VACOPT_ONLY_DATABASE_STATS 0x400 /* only vac_update_datfrozenxid() */ /* * Values used by index_cleanup and truncate params. * * VACOPTVALUE_UNSPECIFIED is used as an initial placeholder when VACUUM * command has no explicit value. When that happens the final usable value * comes from the corresponding reloption (though the reloption default is * usually used). */ typedef enum VacOptValue { VACOPTVALUE_UNSPECIFIED = 0, VACOPTVALUE_AUTO, VACOPTVALUE_DISABLED, VACOPTVALUE_ENABLED, } VacOptValue; /* * Parameters customizing behavior of VACUUM and ANALYZE. * * Note that at least one of VACOPT_VACUUM and VACOPT_ANALYZE must be set * in options. * * When adding a new VacuumParam member, consider adding it to vacuumdb as * well. */ typedef struct VacuumParams { bits32 options; /* bitmask of VACOPT_* */ 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 autovacuum is logged, -1 to use * default */ VacOptValue index_cleanup; /* Do index vacuum and cleanup */ VacOptValue truncate; /* Truncate empty pages at the end */ Oid toast_parent; /* for privilege checks when recursing */ /* * 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; /* * VacuumCutoffs is immutable state that describes the cutoffs used by VACUUM. * Established at the beginning of each VACUUM operation. */ struct VacuumCutoffs { /* * Existing pg_class fields at start of VACUUM */ TransactionId relfrozenxid; MultiXactId relminmxid; /* * OldestXmin is the Xid below which tuples deleted by any xact (that * committed) should be considered DEAD, not just RECENTLY_DEAD. * * OldestMxact is the Mxid below which MultiXacts are definitely not seen * as visible by any running transaction. * * OldestXmin and OldestMxact are also the most recent values that can * ever be passed to vac_update_relstats() as frozenxid and minmulti * arguments at the end of VACUUM. These same values should be passed * when it turns out that VACUUM will leave no unfrozen XIDs/MXIDs behind * in the table. */ TransactionId OldestXmin; MultiXactId OldestMxact; /* * FreezeLimit is the Xid below which all Xids are definitely frozen or * removed in pages VACUUM scans and cleanup locks. * * MultiXactCutoff is the value below which all MultiXactIds are * definitely removed from Xmax in pages VACUUM scans and cleanup locks. */ TransactionId FreezeLimit; MultiXactId MultiXactCutoff; }; /* * VacDeadItemsInfo stores supplemental information for dead tuple TID * storage (i.e. TidStore). */ typedef struct VacDeadItemsInfo { size_t max_bytes; /* the maximum bytes TidStore can use */ int64 num_items; /* current # of entries */ } VacDeadItemsInfo; /* GUC parameters */ extern PGDLLIMPORT int default_statistics_target; /* PGDLLIMPORT for PostGIS */ extern PGDLLIMPORT int vacuum_freeze_min_age; extern PGDLLIMPORT int vacuum_freeze_table_age; extern PGDLLIMPORT int vacuum_multixact_freeze_min_age; extern PGDLLIMPORT int vacuum_multixact_freeze_table_age; extern PGDLLIMPORT int vacuum_failsafe_age; extern PGDLLIMPORT int vacuum_multixact_failsafe_age; /* * Maximum value for default_statistics_target and per-column statistics * targets. This is fairly arbitrary, mainly to prevent users from creating * unreasonably large statistics that the system cannot handle well. */ #define MAX_STATISTICS_TARGET 10000 /* Variables for cost-based parallel vacuum */ extern PGDLLIMPORT pg_atomic_uint32 *VacuumSharedCostBalance; extern PGDLLIMPORT pg_atomic_uint32 *VacuumActiveNWorkers; extern PGDLLIMPORT int VacuumCostBalanceLocal; extern PGDLLIMPORT bool VacuumFailsafeActive; extern PGDLLIMPORT double vacuum_cost_delay; extern PGDLLIMPORT int vacuum_cost_limit; /* in commands/vacuum.c */ extern void ExecVacuum(ParseState *pstate, VacuumStmt *vacstmt, bool isTopLevel); extern void vacuum(List *relations, VacuumParams *params, BufferAccessStrategy bstrategy, MemoryContext vac_context, 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 *frozenxid_updated, bool *minmulti_updated, bool in_outer_xact); extern bool vacuum_get_cutoffs(Relation rel, const VacuumParams *params, struct VacuumCutoffs *cutoffs); extern bool vacuum_xid_failsafe_check(const struct VacuumCutoffs *cutoffs); extern void vac_update_datfrozenxid(void); extern void vacuum_delay_point(void); extern bool vacuum_is_permitted_for_relation(Oid relid, Form_pg_class reltuple, bits32 options); extern Relation vacuum_open_relation(Oid relid, RangeVar *relation, bits32 options, bool verbose, LOCKMODE lmode); extern IndexBulkDeleteResult *vac_bulkdel_one_index(IndexVacuumInfo *ivinfo, IndexBulkDeleteResult *istat, TidStore *dead_items, VacDeadItemsInfo *dead_items_info); extern IndexBulkDeleteResult *vac_cleanup_one_index(IndexVacuumInfo *ivinfo, IndexBulkDeleteResult *istat); /* In postmaster/autovacuum.c */ extern void AutoVacuumUpdateCostLimit(void); extern void VacuumUpdateCosts(void); /* in commands/vacuumparallel.c */ extern ParallelVacuumState *parallel_vacuum_init(Relation rel, Relation *indrels, int nindexes, int nrequested_workers, int vac_work_mem, int elevel, BufferAccessStrategy bstrategy); extern void parallel_vacuum_end(ParallelVacuumState *pvs, IndexBulkDeleteResult **istats); extern TidStore *parallel_vacuum_get_dead_items(ParallelVacuumState *pvs, VacDeadItemsInfo **dead_items_info_p); extern void parallel_vacuum_reset_dead_items(ParallelVacuumState *pvs); extern void parallel_vacuum_bulkdel_all_indexes(ParallelVacuumState *pvs, long num_table_tuples, int num_index_scans); extern void parallel_vacuum_cleanup_all_indexes(ParallelVacuumState *pvs, long num_table_tuples, int num_index_scans, bool estimated_count); extern void parallel_vacuum_main(dsm_segment *seg, shm_toc *toc); /* 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-17-6.1.0/src/postgres/include/common/000077500000000000000000000000001477334012600216445ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/common/cryptohash.h000066400000000000000000000023011477334012600241750ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * cryptohash.h * Generic headers for cryptographic hash functions. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/common/cryptohash.h * *------------------------------------------------------------------------- */ #ifndef PG_CRYPTOHASH_H #define PG_CRYPTOHASH_H /* Context Structures for each hash function */ typedef enum { PG_MD5 = 0, PG_SHA1, PG_SHA224, PG_SHA256, PG_SHA384, PG_SHA512, } pg_cryptohash_type; /* opaque context, private to each cryptohash implementation */ typedef struct pg_cryptohash_ctx pg_cryptohash_ctx; extern pg_cryptohash_ctx *pg_cryptohash_create(pg_cryptohash_type type); extern int pg_cryptohash_init(pg_cryptohash_ctx *ctx); extern int pg_cryptohash_update(pg_cryptohash_ctx *ctx, const uint8 *data, size_t len); extern int pg_cryptohash_final(pg_cryptohash_ctx *ctx, uint8 *dest, size_t len); extern void pg_cryptohash_free(pg_cryptohash_ctx *ctx); extern const char *pg_cryptohash_error(pg_cryptohash_ctx *ctx); #endif /* PG_CRYPTOHASH_H */ libpg_query-17-6.1.0/src/postgres/include/common/file_perm.h000066400000000000000000000032641477334012600237640ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * File and directory permission definitions * * * Portions Copyright (c) 1996-2024, 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 PGDLLIMPORT int pg_dir_create_mode; extern PGDLLIMPORT int pg_file_create_mode; /* Mode mask to pass to umask() */ extern PGDLLIMPORT 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-17-6.1.0/src/postgres/include/common/file_utils.h000066400000000000000000000033651477334012600241630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * Assorted utility functions to work on files. * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/common/file_utils.h * *------------------------------------------------------------------------- */ #ifndef FILE_UTILS_H #define FILE_UTILS_H #include typedef enum PGFileType { PGFILETYPE_ERROR, PGFILETYPE_UNKNOWN, PGFILETYPE_REG, PGFILETYPE_DIR, PGFILETYPE_LNK, } PGFileType; typedef enum DataDirSyncMethod { DATA_DIR_SYNC_METHOD_FSYNC, DATA_DIR_SYNC_METHOD_SYNCFS, } DataDirSyncMethod; struct iovec; /* avoid including port/pg_iovec.h here */ #ifdef FRONTEND extern int fsync_fname(const char *fname, bool isdir); extern void sync_pgdata(const char *pg_data, int serverVersion, DataDirSyncMethod sync_method); extern void sync_dir_recurse(const char *dir, DataDirSyncMethod sync_method); extern int durable_rename(const char *oldfile, const char *newfile); extern int fsync_parent_path(const char *fname); #endif extern PGFileType get_dirent_type(const char *path, const struct dirent *de, bool look_through_symlinks, int elevel); extern int compute_remaining_iovec(struct iovec *destination, const struct iovec *source, int iovcnt, size_t transferred); extern ssize_t pg_pwritev_with_retry(int fd, const struct iovec *iov, int iovcnt, off_t offset); extern ssize_t pg_pwrite_zeros(int fd, size_t size, off_t offset); /* Filename components */ #define PG_TEMP_FILES_DIR "pgsql_tmp" #define PG_TEMP_FILE_PREFIX "pgsql_tmp" #endif /* FILE_UTILS_H */ libpg_query-17-6.1.0/src/postgres/include/common/hashfn.h000066400000000000000000000053101477334012600232630ustar00rootroot00000000000000/* * Utilities for working with hash values. * * Portions Copyright (c) 2017-2024, 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; } /* 64-bit variant */ static inline uint64 murmurhash64(uint64 data) { uint64 h = data; h ^= h >> 33; h *= 0xff51afd7ed558ccd; h ^= h >> 33; h *= 0xc4ceb9fe1a85ec53; h ^= h >> 33; return h; } #endif /* HASHFN_H */ libpg_query-17-6.1.0/src/postgres/include/common/hashfn_unstable.h000066400000000000000000000234551477334012600251720ustar00rootroot00000000000000/* * hashfn_unstable.h * * Building blocks for creating fast inlineable hash functions. The * functions in this file are not guaranteed to be stable between versions, * and may differ by hardware platform. Hence they must not be used in * indexes or other on-disk structures. See hashfn.h if you need stability. * * * Portions Copyright (c) 2024, PostgreSQL Global Development Group * * src/include/common/hashfn_unstable.h */ #ifndef HASHFN_UNSTABLE_H #define HASHFN_UNSTABLE_H /* * fasthash is a modification of code taken from * https://code.google.com/archive/p/fast-hash/source/default/source * under the terms of the MIT license. The original copyright * notice follows: */ /* The MIT License Copyright (C) 2012 Zilong Tan (eric.zltan@gmail.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* * fasthash as implemented here has two interfaces: * * 1) Standalone functions, e.g. fasthash32() for a single value with a * known length. These return the same hash code as the original, at * least on little-endian machines. * * 2) Incremental interface. This can used for incorporating multiple * inputs. First, initialize the hash state (here with a zero seed): * * fasthash_state hs; * fasthash_init(&hs, 0); * * If the inputs are of types that can be trivially cast to uint64, it's * sufficient to do: * * hs.accum = value1; * fasthash_combine(&hs); * hs.accum = value2; * fasthash_combine(&hs); * ... * * For longer or variable-length input, fasthash_accum() is a more * flexible, but more verbose method. The standalone functions use this * internally, so see fasthash64() for an example of this. * * After all inputs have been mixed in, finalize the hash: * * hashcode = fasthash_final32(&hs, 0); * * The incremental interface allows an optimization for NUL-terminated * C strings: * * len = fasthash_accum_cstring(&hs, str); * hashcode = fasthash_final32(&hs, len); * * By handling the terminator on-the-fly, we can avoid needing a strlen() * call to tell us how many bytes to hash. Experimentation has found that * SMHasher fails unless we incorporate the length, so it is passed to * the finalizer as a tweak. */ typedef struct fasthash_state { /* staging area for chunks of input */ uint64 accum; uint64 hash; } fasthash_state; #define FH_SIZEOF_ACCUM sizeof(uint64) /* * Initialize the hash state. * * 'seed' can be zero. */ static inline void fasthash_init(fasthash_state *hs, uint64 seed) { memset(hs, 0, sizeof(fasthash_state)); hs->hash = seed ^ 0x880355f21e6d1965; } /* both the finalizer and part of the combining step */ static inline uint64 fasthash_mix(uint64 h, uint64 tweak) { h ^= (h >> 23) + tweak; h *= 0x2127599bf4325c37; h ^= h >> 47; return h; } /* combine one chunk of input into the hash */ static inline void fasthash_combine(fasthash_state *hs) { hs->hash ^= fasthash_mix(hs->accum, 0); hs->hash *= 0x880355f21e6d1965; } /* accumulate up to 8 bytes of input and combine it into the hash */ static inline void fasthash_accum(fasthash_state *hs, const char *k, size_t len) { uint32 lower_four; Assert(len <= FH_SIZEOF_ACCUM); hs->accum = 0; /* * For consistency, bytewise loads must match the platform's endianness. */ #ifdef WORDS_BIGENDIAN switch (len) { case 8: memcpy(&hs->accum, k, 8); break; case 7: hs->accum |= (uint64) k[6] << 8; /* FALLTHROUGH */ case 6: hs->accum |= (uint64) k[5] << 16; /* FALLTHROUGH */ case 5: hs->accum |= (uint64) k[4] << 24; /* FALLTHROUGH */ case 4: memcpy(&lower_four, k, sizeof(lower_four)); hs->accum |= (uint64) lower_four << 32; break; case 3: hs->accum |= (uint64) k[2] << 40; /* FALLTHROUGH */ case 2: hs->accum |= (uint64) k[1] << 48; /* FALLTHROUGH */ case 1: hs->accum |= (uint64) k[0] << 56; break; case 0: return; } #else switch (len) { case 8: memcpy(&hs->accum, k, 8); break; case 7: hs->accum |= (uint64) k[6] << 48; /* FALLTHROUGH */ case 6: hs->accum |= (uint64) k[5] << 40; /* FALLTHROUGH */ case 5: hs->accum |= (uint64) k[4] << 32; /* FALLTHROUGH */ case 4: memcpy(&lower_four, k, sizeof(lower_four)); hs->accum |= lower_four; break; case 3: hs->accum |= (uint64) k[2] << 16; /* FALLTHROUGH */ case 2: hs->accum |= (uint64) k[1] << 8; /* FALLTHROUGH */ case 1: hs->accum |= (uint64) k[0]; break; case 0: return; } #endif fasthash_combine(hs); } /* * Set high bit in lowest byte where the input is zero, from: * https://graphics.stanford.edu/~seander/bithacks.html#ZeroInWord */ #define haszero64(v) \ (((v) - 0x0101010101010101) & ~(v) & 0x8080808080808080) /* * all-purpose workhorse for fasthash_accum_cstring */ static inline size_t fasthash_accum_cstring_unaligned(fasthash_state *hs, const char *str) { const char *const start = str; while (*str) { size_t chunk_len = 0; while (chunk_len < FH_SIZEOF_ACCUM && str[chunk_len] != '\0') chunk_len++; fasthash_accum(hs, str, chunk_len); str += chunk_len; } return str - start; } /* * specialized workhorse for fasthash_accum_cstring * * With an aligned pointer, we consume the string a word at a time. * Loading the word containing the NUL terminator cannot segfault since * allocation boundaries are suitably aligned. To keep from setting * off alarms with address sanitizers, exclude this function from * such testing. */ pg_attribute_no_sanitize_address() static inline size_t fasthash_accum_cstring_aligned(fasthash_state *hs, const char *str) { const char *const start = str; size_t remainder; uint64 zero_byte_low; Assert(PointerIsAligned(start, uint64)); /* * For every chunk of input, check for zero bytes before mixing into the * hash. The chunk with zeros must contain the NUL terminator. */ for (;;) { uint64 chunk = *(uint64 *) str; zero_byte_low = haszero64(chunk); if (zero_byte_low) break; hs->accum = chunk; fasthash_combine(hs); str += FH_SIZEOF_ACCUM; } /* mix in remaining bytes */ remainder = fasthash_accum_cstring_unaligned(hs, str); str += remainder; return str - start; } /* * Mix 'str' into the hash state and return the length of the string. */ static inline size_t fasthash_accum_cstring(fasthash_state *hs, const char *str) { #if SIZEOF_VOID_P >= 8 size_t len; #ifdef USE_ASSERT_CHECKING size_t len_check; fasthash_state hs_check; memcpy(&hs_check, hs, sizeof(fasthash_state)); len_check = fasthash_accum_cstring_unaligned(&hs_check, str); #endif if (PointerIsAligned(str, uint64)) { len = fasthash_accum_cstring_aligned(hs, str); Assert(len_check == len); Assert(hs_check.hash == hs->hash); return len; } #endif /* SIZEOF_VOID_P */ /* * It's not worth it to try to make the word-at-a-time optimization work * on 32-bit platforms. */ return fasthash_accum_cstring_unaligned(hs, str); } /* * The finalizer * * 'tweak' is intended to be the input length when the caller doesn't know * the length ahead of time, such as for NUL-terminated strings, otherwise * zero. */ static inline uint64 fasthash_final64(fasthash_state *hs, uint64 tweak) { return fasthash_mix(hs->hash, tweak); } /* * Reduce a 64-bit hash to a 32-bit hash. * * This optional step provides a bit more additional mixing compared to * just taking the lower 32-bits. */ static inline uint32 fasthash_reduce32(uint64 h) { /* * Convert the 64-bit hashcode to Fermat residue, which shall retain * information from both the higher and lower parts of hashcode. */ return h - (h >> 32); } /* finalize and reduce */ static inline uint32 fasthash_final32(fasthash_state *hs, uint64 tweak) { return fasthash_reduce32(fasthash_final64(hs, tweak)); } /* * The original fasthash64 function, re-implemented using the incremental * interface. Returns a 64-bit hashcode. 'len' controls not only how * many bytes to hash, but also modifies the internal seed. * 'seed' can be zero. */ static inline uint64 fasthash64(const char *k, size_t len, uint64 seed) { fasthash_state hs; fasthash_init(&hs, 0); /* re-initialize the seed according to input length */ hs.hash = seed ^ (len * 0x880355f21e6d1965); while (len >= FH_SIZEOF_ACCUM) { fasthash_accum(&hs, k, FH_SIZEOF_ACCUM); k += FH_SIZEOF_ACCUM; len -= FH_SIZEOF_ACCUM; } fasthash_accum(&hs, k, len); return fasthash_final64(&hs, 0); } /* like fasthash64, but returns a 32-bit hashcode */ static inline uint32 fasthash32(const char *k, size_t len, uint64 seed) { return fasthash_reduce32(fasthash64(k, len, seed)); } /* * Convenience function for hashing NUL-terminated strings */ static inline uint32 hash_string(const char *s) { fasthash_state hs; size_t s_len; fasthash_init(&hs, 0); /* * Combine string into the hash and save the length for tweaking the final * mix. */ s_len = fasthash_accum_cstring(&hs, s); return fasthash_final32(&hs, s_len); } #endif /* HASHFN_UNSTABLE_H */ libpg_query-17-6.1.0/src/postgres/include/common/int.h000066400000000000000000000264741477334012600226240ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * int.h * Overflow-aware integer math and integer comparison routines. * * The routines in this file are intended to be well defined C, without * relying on compiler flags like -fwrapv. * * To reduce the overhead of these routines try to use compiler intrinsics * where available. That's not that important for the 16, 32 bit cases, but * the 64 bit cases can be considerably faster with intrinsics. In case no * intrinsics are available 128 bit math is used where available. * * Copyright (c) 2017-2024, PostgreSQL Global Development Group * * src/include/common/int.h * *------------------------------------------------------------------------- */ #ifndef COMMON_INT_H #define COMMON_INT_H /*--------- * The following guidelines apply to all the overflow routines: * - If a + b overflows, return true, otherwise store the result of a + b * into *result. The content of *result is implementation defined in case of * overflow. * - If a - b overflows, return true, otherwise store the result of a - b * into *result. The content of *result is implementation defined in case of * overflow. * - If a * b overflows, return true, otherwise store the result of a * b * into *result. The content of *result is implementation defined in case of * overflow. *--------- */ /*------------------------------------------------------------------------ * Overflow routines for signed integers *------------------------------------------------------------------------ */ /* * INT16 */ static inline bool pg_add_s16_overflow(int16 a, int16 b, int16 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_add_overflow(a, b, result); #else int32 res = (int32) a + (int32) b; if (res > PG_INT16_MAX || res < PG_INT16_MIN) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = (int16) res; return false; #endif } static inline bool pg_sub_s16_overflow(int16 a, int16 b, int16 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_sub_overflow(a, b, result); #else int32 res = (int32) a - (int32) b; if (res > PG_INT16_MAX || res < PG_INT16_MIN) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = (int16) res; return false; #endif } static inline bool pg_mul_s16_overflow(int16 a, int16 b, int16 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_mul_overflow(a, b, result); #else int32 res = (int32) a * (int32) b; if (res > PG_INT16_MAX || res < PG_INT16_MIN) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = (int16) res; return false; #endif } /* * INT32 */ static inline bool pg_add_s32_overflow(int32 a, int32 b, int32 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_add_overflow(a, b, result); #else int64 res = (int64) a + (int64) b; if (res > PG_INT32_MAX || res < PG_INT32_MIN) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = (int32) res; return false; #endif } static inline bool pg_sub_s32_overflow(int32 a, int32 b, int32 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_sub_overflow(a, b, result); #else int64 res = (int64) a - (int64) b; if (res > PG_INT32_MAX || res < PG_INT32_MIN) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = (int32) res; return false; #endif } static inline bool pg_mul_s32_overflow(int32 a, int32 b, int32 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_mul_overflow(a, b, result); #else int64 res = (int64) a * (int64) b; if (res > PG_INT32_MAX || res < PG_INT32_MIN) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = (int32) res; return false; #endif } /* * INT64 */ static inline bool pg_add_s64_overflow(int64 a, int64 b, int64 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_add_overflow(a, b, result); #elif defined(HAVE_INT128) int128 res = (int128) a + (int128) b; if (res > PG_INT64_MAX || res < PG_INT64_MIN) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = (int64) res; return false; #else if ((a > 0 && b > 0 && a > PG_INT64_MAX - b) || (a < 0 && b < 0 && a < PG_INT64_MIN - b)) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = a + b; return false; #endif } static inline bool pg_sub_s64_overflow(int64 a, int64 b, int64 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_sub_overflow(a, b, result); #elif defined(HAVE_INT128) int128 res = (int128) a - (int128) b; if (res > PG_INT64_MAX || res < PG_INT64_MIN) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = (int64) res; return false; #else /* * Note: overflow is also possible when a == 0 and b < 0 (specifically, * when b == PG_INT64_MIN). */ if ((a < 0 && b > 0 && a < PG_INT64_MIN + b) || (a >= 0 && b < 0 && a > PG_INT64_MAX + b)) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = a - b; return false; #endif } static inline bool pg_mul_s64_overflow(int64 a, int64 b, int64 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_mul_overflow(a, b, result); #elif defined(HAVE_INT128) int128 res = (int128) a * (int128) b; if (res > PG_INT64_MAX || res < PG_INT64_MIN) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = (int64) res; return false; #else /* * Overflow can only happen if at least one value is outside the range * sqrt(min)..sqrt(max) so check that first as the division can be quite a * bit more expensive than the multiplication. * * Multiplying by 0 or 1 can't overflow of course and checking for 0 * separately avoids any risk of dividing by 0. Be careful about dividing * INT_MIN by -1 also, note reversing the a and b to ensure we're always * dividing it by a positive value. * */ if ((a > PG_INT32_MAX || a < PG_INT32_MIN || b > PG_INT32_MAX || b < PG_INT32_MIN) && a != 0 && a != 1 && b != 0 && b != 1 && ((a > 0 && b > 0 && a > PG_INT64_MAX / b) || (a > 0 && b < 0 && b < PG_INT64_MIN / a) || (a < 0 && b > 0 && a < PG_INT64_MIN / b) || (a < 0 && b < 0 && a < PG_INT64_MAX / b))) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = a * b; return false; #endif } /*------------------------------------------------------------------------ * Overflow routines for unsigned integers *------------------------------------------------------------------------ */ /* * UINT16 */ static inline bool pg_add_u16_overflow(uint16 a, uint16 b, uint16 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_add_overflow(a, b, result); #else uint16 res = a + b; if (res < a) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = res; return false; #endif } static inline bool pg_sub_u16_overflow(uint16 a, uint16 b, uint16 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_sub_overflow(a, b, result); #else if (b > a) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = a - b; return false; #endif } static inline bool pg_mul_u16_overflow(uint16 a, uint16 b, uint16 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_mul_overflow(a, b, result); #else uint32 res = (uint32) a * (uint32) b; if (res > PG_UINT16_MAX) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = (uint16) res; return false; #endif } /* * INT32 */ static inline bool pg_add_u32_overflow(uint32 a, uint32 b, uint32 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_add_overflow(a, b, result); #else uint32 res = a + b; if (res < a) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = res; return false; #endif } static inline bool pg_sub_u32_overflow(uint32 a, uint32 b, uint32 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_sub_overflow(a, b, result); #else if (b > a) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = a - b; return false; #endif } static inline bool pg_mul_u32_overflow(uint32 a, uint32 b, uint32 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_mul_overflow(a, b, result); #else uint64 res = (uint64) a * (uint64) b; if (res > PG_UINT32_MAX) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = (uint32) res; return false; #endif } /* * UINT64 */ static inline bool pg_add_u64_overflow(uint64 a, uint64 b, uint64 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_add_overflow(a, b, result); #else uint64 res = a + b; if (res < a) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = res; return false; #endif } static inline bool pg_sub_u64_overflow(uint64 a, uint64 b, uint64 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_sub_overflow(a, b, result); #else if (b > a) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = a - b; return false; #endif } static inline bool pg_mul_u64_overflow(uint64 a, uint64 b, uint64 *result) { #if defined(HAVE__BUILTIN_OP_OVERFLOW) return __builtin_mul_overflow(a, b, result); #elif defined(HAVE_INT128) uint128 res = (uint128) a * (uint128) b; if (res > PG_UINT64_MAX) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = (uint64) res; return false; #else uint64 res = a * b; if (a != 0 && b != res / a) { *result = 0x5EED; /* to avoid spurious warnings */ return true; } *result = res; return false; #endif } /*------------------------------------------------------------------------ * * Comparison routines for integer types. * * These routines are primarily intended for use in qsort() comparator * functions and therefore return a positive integer, 0, or a negative * integer depending on whether "a" is greater than, equal to, or less * than "b", respectively. These functions are written to be as efficient * as possible without introducing overflow risks, thereby helping ensure * the comparators that use them are transitive. * * Types with fewer than 32 bits are cast to signed integers and * subtracted. Other types are compared using > and <, and the results of * those comparisons (which are either (int) 0 or (int) 1 per the C * standard) are subtracted. * * NB: If the comparator function is inlined, some compilers may produce * worse code with these helper functions than with code with the * following form: * * if (a < b) * return -1; * if (a > b) * return 1; * return 0; * *------------------------------------------------------------------------ */ static inline int pg_cmp_s16(int16 a, int16 b) { return (int32) a - (int32) b; } static inline int pg_cmp_u16(uint16 a, uint16 b) { return (int32) a - (int32) b; } static inline int pg_cmp_s32(int32 a, int32 b) { return (a > b) - (a < b); } static inline int pg_cmp_u32(uint32 a, uint32 b) { return (a > b) - (a < b); } static inline int pg_cmp_s64(int64 a, int64 b) { return (a > b) - (a < b); } static inline int pg_cmp_u64(uint64 a, uint64 b) { return (a > b) - (a < b); } static inline int pg_cmp_size(size_t a, size_t b) { return (a > b) - (a < b); } #endif /* COMMON_INT_H */ libpg_query-17-6.1.0/src/postgres/include/common/keywords.h000066400000000000000000000015151477334012600236660ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * keywords.h * PostgreSQL's list of SQL keywords * * * Portions Copyright (c) 1996-2024, 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 extern PGDLLIMPORT const ScanKeywordList ScanKeywords; extern PGDLLIMPORT const uint8 ScanKeywordCategories[]; extern PGDLLIMPORT const bool ScanKeywordBareLabel[]; #endif /* KEYWORDS_H */ libpg_query-17-6.1.0/src/postgres/include/common/kwlookup.h000066400000000000000000000027111477334012600236710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * kwlookup.h * Key word lookup for PostgreSQL * * * Portions Copyright (c) 1996-2024, 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 *str, 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-17-6.1.0/src/postgres/include/common/pg_prng.h000066400000000000000000000043251477334012600234550ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * Pseudo-Random Number Generator * * Copyright (c) 2021-2024, PostgreSQL Global Development Group * * src/include/common/pg_prng.h * *------------------------------------------------------------------------- */ #ifndef PG_PRNG_H #define PG_PRNG_H /* * State vector for PRNG generation. Callers should treat this as an * opaque typedef, but we expose its definition to allow it to be * embedded in other structs. */ typedef struct pg_prng_state { uint64 s0, s1; } pg_prng_state; /* * Callers not needing local PRNG series may use this global state vector, * after initializing it with one of the pg_prng_...seed functions. */ extern PGDLLIMPORT pg_prng_state pg_global_prng_state; extern void pg_prng_seed(pg_prng_state *state, uint64 seed); extern void pg_prng_fseed(pg_prng_state *state, double fseed); extern bool pg_prng_seed_check(pg_prng_state *state); /* * Initialize the PRNG state from the pg_strong_random source, * taking care that we don't produce all-zeroes. If this returns false, * caller should initialize the PRNG state from some other random seed, * using pg_prng_[f]seed. * * We implement this as a macro, so that the pg_strong_random() call is * in the caller. If it were in pg_prng.c, programs using pg_prng.c * but not needing strong seeding would nonetheless be forced to pull in * pg_strong_random.c and thence OpenSSL. */ #define pg_prng_strong_seed(state) \ (pg_strong_random((void *) (state), sizeof(pg_prng_state)) ? \ pg_prng_seed_check(state) : false) extern uint64 pg_prng_uint64(pg_prng_state *state); extern uint64 pg_prng_uint64_range(pg_prng_state *state, uint64 rmin, uint64 rmax); extern int64 pg_prng_int64(pg_prng_state *state); extern int64 pg_prng_int64p(pg_prng_state *state); extern int64 pg_prng_int64_range(pg_prng_state *state, int64 rmin, int64 rmax); extern uint32 pg_prng_uint32(pg_prng_state *state); extern int32 pg_prng_int32(pg_prng_state *state); extern int32 pg_prng_int32p(pg_prng_state *state); extern double pg_prng_double(pg_prng_state *state); extern double pg_prng_double_normal(pg_prng_state *state); extern bool pg_prng_bool(pg_prng_state *state); #endif /* PG_PRNG_H */ libpg_query-17-6.1.0/src/postgres/include/common/relpath.h000066400000000000000000000055711477334012600234640ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * relpath.h * Declarations for GetRelationPath() and friends * * Portions Copyright (c) 1996-2024, 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 */ /* * RelFileNumber data type identifies the specific relation file name. */ typedef Oid RelFileNumber; #define InvalidRelFileNumber ((RelFileNumber) InvalidOid) #define RelFileNumberIsValid(relnumber) \ ((bool) ((relnumber) != InvalidRelFileNumber)) /* * 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 PGDLLIMPORT 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 dbOid, Oid spcOid); extern char *GetRelationPath(Oid dbOid, Oid spcOid, RelFileNumber relNumber, int procNumber, ForkNumber forkNumber); /* * Wrapper macros for GetRelationPath. Beware of multiple * evaluation of the RelFileLocator or RelFileLocatorBackend argument! */ /* First argument is a RelFileLocator */ #define relpathbackend(rlocator, backend, forknum) \ GetRelationPath((rlocator).dbOid, (rlocator).spcOid, (rlocator).relNumber, \ backend, forknum) /* First argument is a RelFileLocator */ #define relpathperm(rlocator, forknum) \ relpathbackend(rlocator, INVALID_PROC_NUMBER, forknum) /* First argument is a RelFileLocatorBackend */ #define relpath(rlocator, forknum) \ relpathbackend((rlocator).locator, (rlocator).backend, forknum) #endif /* RELPATH_H */ libpg_query-17-6.1.0/src/postgres/include/common/scram-common.h000066400000000000000000000046671477334012600244250ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * scram-common.h * Declarations for helper functions used for SCRAM authentication * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/common/scram-common.h * *------------------------------------------------------------------------- */ #ifndef SCRAM_COMMON_H #define SCRAM_COMMON_H #include "common/cryptohash.h" #include "common/sha2.h" /* Name of SCRAM mechanisms per IANA */ #define SCRAM_SHA_256_NAME "SCRAM-SHA-256" #define SCRAM_SHA_256_PLUS_NAME "SCRAM-SHA-256-PLUS" /* with channel binding */ /* Length of SCRAM keys (client and server) */ #define SCRAM_SHA_256_KEY_LEN PG_SHA256_DIGEST_LENGTH /* * Size of buffers used internally by SCRAM routines, that should be the * maximum of SCRAM_SHA_*_KEY_LEN among the hash methods supported. */ #define SCRAM_MAX_KEY_LEN SCRAM_SHA_256_KEY_LEN /* * Size of random nonce generated in the authentication exchange. This * is in "raw" number of bytes, the actual nonces sent over the wire are * encoded using only ASCII-printable characters. */ #define SCRAM_RAW_NONCE_LEN 18 /* * Length of salt when generating new secrets, in bytes. (It will be stored * and sent over the wire encoded in Base64.) 16 bytes is what the example in * RFC 7677 uses. */ #define SCRAM_DEFAULT_SALT_LEN 16 /* * Default number of iterations when generating secret. Should be at least * 4096 per RFC 7677. */ #define SCRAM_SHA_256_DEFAULT_ITERATIONS 4096 extern int scram_SaltedPassword(const char *password, pg_cryptohash_type hash_type, int key_length, const char *salt, int saltlen, int iterations, uint8 *result, const char **errstr); extern int scram_H(const uint8 *input, pg_cryptohash_type hash_type, int key_length, uint8 *result, const char **errstr); extern int scram_ClientKey(const uint8 *salted_password, pg_cryptohash_type hash_type, int key_length, uint8 *result, const char **errstr); extern int scram_ServerKey(const uint8 *salted_password, pg_cryptohash_type hash_type, int key_length, uint8 *result, const char **errstr); extern char *scram_build_secret(pg_cryptohash_type hash_type, int key_length, const char *salt, int saltlen, int iterations, const char *password, const char **errstr); #endif /* SCRAM_COMMON_H */ libpg_query-17-6.1.0/src/postgres/include/common/sha2.h000066400000000000000000000022111477334012600226460ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sha2.h * Constants related to SHA224, 256, 384 AND 512. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/common/sha2.h * *------------------------------------------------------------------------- */ #ifndef _PG_SHA2_H_ #define _PG_SHA2_H_ /*** SHA224/256/384/512 Various Length Definitions ***********************/ #define PG_SHA224_BLOCK_LENGTH 64 #define PG_SHA224_DIGEST_LENGTH 28 #define PG_SHA224_DIGEST_STRING_LENGTH (PG_SHA224_DIGEST_LENGTH * 2 + 1) #define PG_SHA256_BLOCK_LENGTH 64 #define PG_SHA256_DIGEST_LENGTH 32 #define PG_SHA256_DIGEST_STRING_LENGTH (PG_SHA256_DIGEST_LENGTH * 2 + 1) #define PG_SHA384_BLOCK_LENGTH 128 #define PG_SHA384_DIGEST_LENGTH 48 #define PG_SHA384_DIGEST_STRING_LENGTH (PG_SHA384_DIGEST_LENGTH * 2 + 1) #define PG_SHA512_BLOCK_LENGTH 128 #define PG_SHA512_DIGEST_LENGTH 64 #define PG_SHA512_DIGEST_STRING_LENGTH (PG_SHA512_DIGEST_LENGTH * 2 + 1) #endif /* _PG_SHA2_H_ */ libpg_query-17-6.1.0/src/postgres/include/common/string.h000066400000000000000000000030711477334012600233240ustar00rootroot00000000000000/* * string.h * string handling helpers * * Portions Copyright (c) 1996-2024, 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 #include struct StringInfoData; /* avoid including stringinfo.h here */ typedef struct PromptInterruptContext { /* To avoid including here, jmpbuf is declared "void *" */ void *jmpbuf; /* existing longjmp buffer */ volatile sig_atomic_t *enabled; /* flag that enables longjmp-on-interrupt */ bool canceled; /* indicates whether cancellation occurred */ } PromptInterruptContext; /* functions in src/common/string.c */ 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 char *pg_clean_ascii(const char *str, int alloc_flags); extern int pg_strip_crlf(char *str); extern bool pg_is_ascii(const char *str); /* functions in src/common/pg_get_line.c */ extern char *pg_get_line(FILE *stream, PromptInterruptContext *prompt_ctx); extern bool pg_get_line_buf(FILE *stream, struct StringInfoData *buf); extern bool pg_get_line_append(FILE *stream, struct StringInfoData *buf, PromptInterruptContext *prompt_ctx); /* functions in src/common/sprompt.c */ extern char *simple_prompt(const char *prompt, bool echo); extern char *simple_prompt_extended(const char *prompt, bool echo, PromptInterruptContext *prompt_ctx); #endif /* COMMON_STRING_H */ libpg_query-17-6.1.0/src/postgres/include/common/unicode_east_asian_fw_table.h000066400000000000000000000047661477334012600275120ustar00rootroot00000000000000/* generated by src/common/unicode/generate-unicode_east_asian_fw_table.pl, do not edit */ static const struct mbinterval east_asian_fw[] = { {0x1100, 0x115F}, {0x231A, 0x231B}, {0x2329, 0x232A}, {0x23E9, 0x23EC}, {0x23F0, 0x23F0}, {0x23F3, 0x23F3}, {0x25FD, 0x25FE}, {0x2614, 0x2615}, {0x2648, 0x2653}, {0x267F, 0x267F}, {0x2693, 0x2693}, {0x26A1, 0x26A1}, {0x26AA, 0x26AB}, {0x26BD, 0x26BE}, {0x26C4, 0x26C5}, {0x26CE, 0x26CE}, {0x26D4, 0x26D4}, {0x26EA, 0x26EA}, {0x26F2, 0x26F3}, {0x26F5, 0x26F5}, {0x26FA, 0x26FA}, {0x26FD, 0x26FD}, {0x2705, 0x2705}, {0x270A, 0x270B}, {0x2728, 0x2728}, {0x274C, 0x274C}, {0x274E, 0x274E}, {0x2753, 0x2755}, {0x2757, 0x2757}, {0x2795, 0x2797}, {0x27B0, 0x27B0}, {0x27BF, 0x27BF}, {0x2B1B, 0x2B1C}, {0x2B50, 0x2B50}, {0x2B55, 0x2B55}, {0x2E80, 0x2E99}, {0x2E9B, 0x2EF3}, {0x2F00, 0x2FD5}, {0x2FF0, 0x303E}, {0x3041, 0x3096}, {0x3099, 0x30FF}, {0x3105, 0x312F}, {0x3131, 0x318E}, {0x3190, 0x31E3}, {0x31EF, 0x321E}, {0x3220, 0x3247}, {0x3250, 0x4DBF}, {0x4E00, 0xA48C}, {0xA490, 0xA4C6}, {0xA960, 0xA97C}, {0xAC00, 0xD7A3}, {0xF900, 0xFAFF}, {0xFE10, 0xFE19}, {0xFE30, 0xFE52}, {0xFE54, 0xFE66}, {0xFE68, 0xFE6B}, {0xFF01, 0xFF60}, {0xFFE0, 0xFFE6}, {0x16FE0, 0x16FE4}, {0x16FF0, 0x16FF1}, {0x17000, 0x187F7}, {0x18800, 0x18CD5}, {0x18D00, 0x18D08}, {0x1AFF0, 0x1AFF3}, {0x1AFF5, 0x1AFFB}, {0x1AFFD, 0x1AFFE}, {0x1B000, 0x1B122}, {0x1B132, 0x1B132}, {0x1B150, 0x1B152}, {0x1B155, 0x1B155}, {0x1B164, 0x1B167}, {0x1B170, 0x1B2FB}, {0x1F004, 0x1F004}, {0x1F0CF, 0x1F0CF}, {0x1F18E, 0x1F18E}, {0x1F191, 0x1F19A}, {0x1F200, 0x1F202}, {0x1F210, 0x1F23B}, {0x1F240, 0x1F248}, {0x1F250, 0x1F251}, {0x1F260, 0x1F265}, {0x1F300, 0x1F320}, {0x1F32D, 0x1F335}, {0x1F337, 0x1F37C}, {0x1F37E, 0x1F393}, {0x1F3A0, 0x1F3CA}, {0x1F3CF, 0x1F3D3}, {0x1F3E0, 0x1F3F0}, {0x1F3F4, 0x1F3F4}, {0x1F3F8, 0x1F43E}, {0x1F440, 0x1F440}, {0x1F442, 0x1F4FC}, {0x1F4FF, 0x1F53D}, {0x1F54B, 0x1F54E}, {0x1F550, 0x1F567}, {0x1F57A, 0x1F57A}, {0x1F595, 0x1F596}, {0x1F5A4, 0x1F5A4}, {0x1F5FB, 0x1F64F}, {0x1F680, 0x1F6C5}, {0x1F6CC, 0x1F6CC}, {0x1F6D0, 0x1F6D2}, {0x1F6D5, 0x1F6D7}, {0x1F6DC, 0x1F6DF}, {0x1F6EB, 0x1F6EC}, {0x1F6F4, 0x1F6FC}, {0x1F7E0, 0x1F7EB}, {0x1F7F0, 0x1F7F0}, {0x1F90C, 0x1F93A}, {0x1F93C, 0x1F945}, {0x1F947, 0x1F9FF}, {0x1FA70, 0x1FA7C}, {0x1FA80, 0x1FA88}, {0x1FA90, 0x1FABD}, {0x1FABF, 0x1FAC5}, {0x1FACE, 0x1FADB}, {0x1FAE0, 0x1FAE8}, {0x1FAF0, 0x1FAF8}, {0x20000, 0x2FFFD}, {0x30000, 0x3FFFD}, }; libpg_query-17-6.1.0/src/postgres/include/common/unicode_nonspacing_table.h000066400000000000000000000145421477334012600270370ustar00rootroot00000000000000/* generated by src/common/unicode/generate-unicode_nonspacing_table.pl, do not edit */ static const struct mbinterval nonspacing[] = { {0x00AD, 0x00AD}, {0x0300, 0x036F}, {0x0483, 0x0489}, {0x0591, 0x05BD}, {0x05BF, 0x05BF}, {0x05C1, 0x05C2}, {0x05C4, 0x05C5}, {0x05C7, 0x05C7}, {0x0600, 0x0605}, {0x0610, 0x061A}, {0x061C, 0x061C}, {0x064B, 0x065F}, {0x0670, 0x0670}, {0x06D6, 0x06DD}, {0x06DF, 0x06E4}, {0x06E7, 0x06E8}, {0x06EA, 0x06ED}, {0x070F, 0x070F}, {0x0711, 0x0711}, {0x0730, 0x074A}, {0x07A6, 0x07B0}, {0x07EB, 0x07F3}, {0x07FD, 0x07FD}, {0x0816, 0x0819}, {0x081B, 0x0823}, {0x0825, 0x0827}, {0x0829, 0x082D}, {0x0859, 0x085B}, {0x0890, 0x089F}, {0x08CA, 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}, {0x0C3C, 0x0C3C}, {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, 0x0ECE}, {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, 0x1733}, {0x1752, 0x1753}, {0x1772, 0x1773}, {0x17B4, 0x17B5}, {0x17B7, 0x17BD}, {0x17C6, 0x17C6}, {0x17C9, 0x17D3}, {0x17DD, 0x17DD}, {0x180B, 0x180F}, {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}, {0x200B, 0x200F}, {0x202A, 0x202E}, {0x2060, 0x206F}, {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}, {0xFEFF, 0xFEFF}, {0xFFF9, 0xFFFB}, {0x101FD, 0x101FD}, {0x102E0, 0x102E0}, {0x10376, 0x1037A}, {0x10A01, 0x10A0F}, {0x10A38, 0x10A3F}, {0x10AE5, 0x10AE6}, {0x10D24, 0x10D27}, {0x10EAB, 0x10EAC}, {0x10EFD, 0x10EFF}, {0x10F46, 0x10F50}, {0x10F82, 0x10F85}, {0x11001, 0x11001}, {0x11038, 0x11046}, {0x11070, 0x11070}, {0x11073, 0x11074}, {0x1107F, 0x11081}, {0x110B3, 0x110B6}, {0x110B9, 0x110BA}, {0x110BD, 0x110BD}, {0x110C2, 0x110CD}, {0x11100, 0x11102}, {0x11127, 0x1112B}, {0x1112D, 0x11134}, {0x11173, 0x11173}, {0x11180, 0x11181}, {0x111B6, 0x111BE}, {0x111C9, 0x111CC}, {0x111CF, 0x111CF}, {0x1122F, 0x11231}, {0x11234, 0x11234}, {0x11236, 0x11237}, {0x1123E, 0x1123E}, {0x11241, 0x11241}, {0x112DF, 0x112DF}, {0x112E3, 0x112EA}, {0x11300, 0x11301}, {0x1133B, 0x1133C}, {0x11340, 0x11340}, {0x11366, 0x11374}, {0x11438, 0x1143F}, {0x11442, 0x11444}, {0x11446, 0x11446}, {0x1145E, 0x1145E}, {0x114B3, 0x114B8}, {0x114BA, 0x114BA}, {0x114BF, 0x114C0}, {0x114C2, 0x114C3}, {0x115B2, 0x115B5}, {0x115BC, 0x115BD}, {0x115BF, 0x115C0}, {0x115DC, 0x115DD}, {0x11633, 0x1163A}, {0x1163D, 0x1163D}, {0x1163F, 0x11640}, {0x116AB, 0x116AB}, {0x116AD, 0x116AD}, {0x116B0, 0x116B5}, {0x116B7, 0x116B7}, {0x1171D, 0x1171F}, {0x11722, 0x11725}, {0x11727, 0x1172B}, {0x1182F, 0x11837}, {0x11839, 0x1183A}, {0x1193B, 0x1193C}, {0x1193E, 0x1193E}, {0x11943, 0x11943}, {0x119D4, 0x119DB}, {0x119E0, 0x119E0}, {0x11A01, 0x11A0A}, {0x11A33, 0x11A38}, {0x11A3B, 0x11A3E}, {0x11A47, 0x11A47}, {0x11A51, 0x11A56}, {0x11A59, 0x11A5B}, {0x11A8A, 0x11A96}, {0x11A98, 0x11A99}, {0x11C30, 0x11C3D}, {0x11C3F, 0x11C3F}, {0x11C92, 0x11CA7}, {0x11CAA, 0x11CB0}, {0x11CB2, 0x11CB3}, {0x11CB5, 0x11CB6}, {0x11D31, 0x11D45}, {0x11D47, 0x11D47}, {0x11D90, 0x11D91}, {0x11D95, 0x11D95}, {0x11D97, 0x11D97}, {0x11EF3, 0x11EF4}, {0x11F00, 0x11F01}, {0x11F36, 0x11F3A}, {0x11F40, 0x11F40}, {0x11F42, 0x11F42}, {0x13430, 0x13440}, {0x13447, 0x13455}, {0x16AF0, 0x16AF4}, {0x16B30, 0x16B36}, {0x16F4F, 0x16F4F}, {0x16F8F, 0x16F92}, {0x16FE4, 0x16FE4}, {0x1BC9D, 0x1BC9E}, {0x1BCA0, 0x1CF46}, {0x1D167, 0x1D169}, {0x1D173, 0x1D182}, {0x1D185, 0x1D18B}, {0x1D1AA, 0x1D1AD}, {0x1D242, 0x1D244}, {0x1DA00, 0x1DA36}, {0x1DA3B, 0x1DA6C}, {0x1DA75, 0x1DA75}, {0x1DA84, 0x1DA84}, {0x1DA9B, 0x1DAAF}, {0x1E000, 0x1E02A}, {0x1E08F, 0x1E08F}, {0x1E130, 0x1E136}, {0x1E2AE, 0x1E2AE}, {0x1E2EC, 0x1E2EF}, {0x1E4EC, 0x1E4EF}, {0x1E8D0, 0x1E8D6}, {0x1E944, 0x1E94A}, {0xE0001, 0xE01EF}, }; libpg_query-17-6.1.0/src/postgres/include/copyfuncs.funcs.c000066400000000000000000003657611477334012600236700ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * copyfuncs.funcs.c * Generated node infrastructure code * * Portions Copyright (c) 1996-2024, 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/nodes/gen_node_support.pl * *------------------------------------------------------------------------- */ #include "access/amapi.h" #include "access/sdir.h" #include "access/tableam.h" #include "access/tsmapi.h" #include "commands/event_trigger.h" #include "commands/trigger.h" #include "executor/tuptable.h" #include "foreign/fdwapi.h" #include "nodes/bitmapset.h" #include "nodes/execnodes.h" #include "nodes/extensible.h" #include "nodes/lockoptions.h" #include "nodes/miscnodes.h" #include "nodes/nodes.h" #include "nodes/parsenodes.h" #include "nodes/pathnodes.h" #include "nodes/plannodes.h" #include "nodes/primnodes.h" #include "nodes/replnodes.h" #include "nodes/supportnodes.h" #include "nodes/value.h" #include "utils/rel.h" static Alias * _copyAlias(const Alias *from) { Alias *newnode = makeNode(Alias); COPY_STRING_FIELD(aliasname); COPY_NODE_FIELD(colnames); return newnode; } 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; } static TableFunc * _copyTableFunc(const TableFunc *from) { TableFunc *newnode = makeNode(TableFunc); COPY_SCALAR_FIELD(functype); 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_NODE_FIELD(colvalexprs); COPY_NODE_FIELD(passingvalexprs); COPY_BITMAPSET_FIELD(notnulls); COPY_NODE_FIELD(plan); COPY_SCALAR_FIELD(ordinalitycol); COPY_LOCATION_FIELD(location); return newnode; } 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; } 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_BITMAPSET_FIELD(varnullingrels); COPY_SCALAR_FIELD(varlevelsup); COPY_SCALAR_FIELD(varnosyn); COPY_SCALAR_FIELD(varattnosyn); COPY_LOCATION_FIELD(location); return newnode; } 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; } 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(aggpresorted); COPY_SCALAR_FIELD(agglevelsup); COPY_SCALAR_FIELD(aggsplit); COPY_SCALAR_FIELD(aggno); COPY_SCALAR_FIELD(aggtransno); COPY_LOCATION_FIELD(location); return newnode; } 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; } 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_NODE_FIELD(runCondition); COPY_SCALAR_FIELD(winref); COPY_SCALAR_FIELD(winstar); COPY_SCALAR_FIELD(winagg); COPY_LOCATION_FIELD(location); return newnode; } static WindowFuncRunCondition * _copyWindowFuncRunCondition(const WindowFuncRunCondition *from) { WindowFuncRunCondition *newnode = makeNode(WindowFuncRunCondition); COPY_SCALAR_FIELD(opno); COPY_SCALAR_FIELD(inputcollid); COPY_SCALAR_FIELD(wfunc_left); COPY_NODE_FIELD(arg); return newnode; } static MergeSupportFunc * _copyMergeSupportFunc(const MergeSupportFunc *from) { MergeSupportFunc *newnode = makeNode(MergeSupportFunc); COPY_SCALAR_FIELD(msftype); COPY_SCALAR_FIELD(msfcollid); COPY_LOCATION_FIELD(location); return newnode; } static SubscriptingRef * _copySubscriptingRef(const SubscriptingRef *from) { SubscriptingRef *newnode = makeNode(SubscriptingRef); COPY_SCALAR_FIELD(refcontainertype); COPY_SCALAR_FIELD(refelemtype); COPY_SCALAR_FIELD(refrestype); 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; } 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; } 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; } 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; } 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; } 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; } static ScalarArrayOpExpr * _copyScalarArrayOpExpr(const ScalarArrayOpExpr *from) { ScalarArrayOpExpr *newnode = makeNode(ScalarArrayOpExpr); COPY_SCALAR_FIELD(opno); COPY_SCALAR_FIELD(opfuncid); COPY_SCALAR_FIELD(hashfuncid); COPY_SCALAR_FIELD(negfuncid); COPY_SCALAR_FIELD(useOr); COPY_SCALAR_FIELD(inputcollid); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } static BoolExpr * _copyBoolExpr(const BoolExpr *from) { BoolExpr *newnode = makeNode(BoolExpr); COPY_SCALAR_FIELD(boolop); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } 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; } 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; } static AlternativeSubPlan * _copyAlternativeSubPlan(const AlternativeSubPlan *from) { AlternativeSubPlan *newnode = makeNode(AlternativeSubPlan); COPY_NODE_FIELD(subplans); return newnode; } 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; } 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; } 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; } 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; } 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; } 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; } static CollateExpr * _copyCollateExpr(const CollateExpr *from) { CollateExpr *newnode = makeNode(CollateExpr); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(collOid); COPY_LOCATION_FIELD(location); return newnode; } 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; } static CaseWhen * _copyCaseWhen(const CaseWhen *from) { CaseWhen *newnode = makeNode(CaseWhen); COPY_NODE_FIELD(expr); COPY_NODE_FIELD(result); COPY_LOCATION_FIELD(location); return newnode; } static CaseTestExpr * _copyCaseTestExpr(const CaseTestExpr *from) { CaseTestExpr *newnode = makeNode(CaseTestExpr); COPY_SCALAR_FIELD(typeId); COPY_SCALAR_FIELD(typeMod); COPY_SCALAR_FIELD(collation); return newnode; } 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; } 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; } 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; } 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; } 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; } 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; } 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(indent); COPY_SCALAR_FIELD(type); COPY_SCALAR_FIELD(typmod); COPY_LOCATION_FIELD(location); return newnode; } static JsonFormat * _copyJsonFormat(const JsonFormat *from) { JsonFormat *newnode = makeNode(JsonFormat); COPY_SCALAR_FIELD(format_type); COPY_SCALAR_FIELD(encoding); COPY_LOCATION_FIELD(location); return newnode; } static JsonReturning * _copyJsonReturning(const JsonReturning *from) { JsonReturning *newnode = makeNode(JsonReturning); COPY_NODE_FIELD(format); COPY_SCALAR_FIELD(typid); COPY_SCALAR_FIELD(typmod); return newnode; } static JsonValueExpr * _copyJsonValueExpr(const JsonValueExpr *from) { JsonValueExpr *newnode = makeNode(JsonValueExpr); COPY_NODE_FIELD(raw_expr); COPY_NODE_FIELD(formatted_expr); COPY_NODE_FIELD(format); return newnode; } static JsonConstructorExpr * _copyJsonConstructorExpr(const JsonConstructorExpr *from) { JsonConstructorExpr *newnode = makeNode(JsonConstructorExpr); COPY_SCALAR_FIELD(type); COPY_NODE_FIELD(args); COPY_NODE_FIELD(func); COPY_NODE_FIELD(coercion); COPY_NODE_FIELD(returning); COPY_SCALAR_FIELD(absent_on_null); COPY_SCALAR_FIELD(unique); COPY_LOCATION_FIELD(location); return newnode; } static JsonIsPredicate * _copyJsonIsPredicate(const JsonIsPredicate *from) { JsonIsPredicate *newnode = makeNode(JsonIsPredicate); COPY_NODE_FIELD(expr); COPY_NODE_FIELD(format); COPY_SCALAR_FIELD(item_type); COPY_SCALAR_FIELD(unique_keys); COPY_LOCATION_FIELD(location); return newnode; } static JsonBehavior * _copyJsonBehavior(const JsonBehavior *from) { JsonBehavior *newnode = makeNode(JsonBehavior); COPY_SCALAR_FIELD(btype); COPY_NODE_FIELD(expr); COPY_SCALAR_FIELD(coerce); COPY_LOCATION_FIELD(location); return newnode; } static JsonExpr * _copyJsonExpr(const JsonExpr *from) { JsonExpr *newnode = makeNode(JsonExpr); COPY_SCALAR_FIELD(op); COPY_STRING_FIELD(column_name); COPY_NODE_FIELD(formatted_expr); COPY_NODE_FIELD(format); COPY_NODE_FIELD(path_spec); COPY_NODE_FIELD(returning); COPY_NODE_FIELD(passing_names); COPY_NODE_FIELD(passing_values); COPY_NODE_FIELD(on_empty); COPY_NODE_FIELD(on_error); COPY_SCALAR_FIELD(use_io_coercion); COPY_SCALAR_FIELD(use_json_coercion); COPY_SCALAR_FIELD(wrapper); COPY_SCALAR_FIELD(omit_quotes); COPY_SCALAR_FIELD(collation); COPY_LOCATION_FIELD(location); return newnode; } static JsonTablePath * _copyJsonTablePath(const JsonTablePath *from) { JsonTablePath *newnode = makeNode(JsonTablePath); COPY_NODE_FIELD(value); COPY_STRING_FIELD(name); return newnode; } static JsonTablePathScan * _copyJsonTablePathScan(const JsonTablePathScan *from) { JsonTablePathScan *newnode = makeNode(JsonTablePathScan); COPY_NODE_FIELD(path); COPY_SCALAR_FIELD(errorOnError); COPY_NODE_FIELD(child); COPY_SCALAR_FIELD(colMin); COPY_SCALAR_FIELD(colMax); return newnode; } static JsonTableSiblingJoin * _copyJsonTableSiblingJoin(const JsonTableSiblingJoin *from) { JsonTableSiblingJoin *newnode = makeNode(JsonTableSiblingJoin); COPY_NODE_FIELD(lplan); COPY_NODE_FIELD(rplan); return newnode; } 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; } static BooleanTest * _copyBooleanTest(const BooleanTest *from) { BooleanTest *newnode = makeNode(BooleanTest); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(booltesttype); COPY_LOCATION_FIELD(location); return newnode; } static MergeAction * _copyMergeAction(const MergeAction *from) { MergeAction *newnode = makeNode(MergeAction); COPY_SCALAR_FIELD(matchKind); COPY_SCALAR_FIELD(commandType); COPY_SCALAR_FIELD(override); COPY_NODE_FIELD(qual); COPY_NODE_FIELD(targetList); COPY_NODE_FIELD(updateColnos); return newnode; } 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; } 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; } 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; } 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; } static NextValueExpr * _copyNextValueExpr(const NextValueExpr *from) { NextValueExpr *newnode = makeNode(NextValueExpr); COPY_SCALAR_FIELD(seqid); COPY_SCALAR_FIELD(typeId); return newnode; } static InferenceElem * _copyInferenceElem(const InferenceElem *from) { InferenceElem *newnode = makeNode(InferenceElem); COPY_NODE_FIELD(expr); COPY_SCALAR_FIELD(infercollid); COPY_SCALAR_FIELD(inferopclass); return newnode; } 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; } static RangeTblRef * _copyRangeTblRef(const RangeTblRef *from) { RangeTblRef *newnode = makeNode(RangeTblRef); COPY_SCALAR_FIELD(rtindex); return newnode; } 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(join_using_alias); COPY_NODE_FIELD(quals); COPY_NODE_FIELD(alias); COPY_SCALAR_FIELD(rtindex); return newnode; } static FromExpr * _copyFromExpr(const FromExpr *from) { FromExpr *newnode = makeNode(FromExpr); COPY_NODE_FIELD(fromlist); COPY_NODE_FIELD(quals); return newnode; } 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; } 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_SCALAR_FIELD(isReturn); COPY_NODE_FIELD(cteList); COPY_NODE_FIELD(rtable); COPY_NODE_FIELD(rteperminfos); COPY_NODE_FIELD(jointree); COPY_NODE_FIELD(mergeActionList); COPY_SCALAR_FIELD(mergeTargetRelation); COPY_NODE_FIELD(mergeJoinCondition); COPY_NODE_FIELD(targetList); COPY_SCALAR_FIELD(override); COPY_NODE_FIELD(onConflict); COPY_NODE_FIELD(returningList); COPY_NODE_FIELD(groupClause); COPY_SCALAR_FIELD(groupDistinct); 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_LOCATION_FIELD(stmt_len); 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 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_Expr * _copyA_Expr(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 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 RoleSpec * _copyRoleSpec(const RoleSpec *from) { RoleSpec *newnode = makeNode(RoleSpec); COPY_SCALAR_FIELD(roletype); COPY_STRING_FIELD(rolename); 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_NODE_FIELD(over); COPY_SCALAR_FIELD(agg_within_group); COPY_SCALAR_FIELD(agg_star); COPY_SCALAR_FIELD(agg_distinct); COPY_SCALAR_FIELD(func_variadic); COPY_SCALAR_FIELD(funcformat); COPY_LOCATION_FIELD(location); return newnode; } static A_Star * _copyA_Star(const A_Star *from) { A_Star *newnode = makeNode(A_Star); return newnode; } static A_Indices * _copyA_Indices(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 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 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 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 ColumnDef * _copyColumnDef(const ColumnDef *from) { ColumnDef *newnode = makeNode(ColumnDef); COPY_STRING_FIELD(colname); COPY_NODE_FIELD(typeName); COPY_STRING_FIELD(compression); 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_STRING_FIELD(storage_name); 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 TableLikeClause * _copyTableLikeClause(const TableLikeClause *from) { TableLikeClause *newnode = makeNode(TableLikeClause); COPY_NODE_FIELD(relation); COPY_SCALAR_FIELD(options); COPY_SCALAR_FIELD(relationOid); 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 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_SCALAR_FIELD(indent); COPY_LOCATION_FIELD(location); 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_SCALAR_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 SinglePartitionSpec * _copySinglePartitionSpec(const SinglePartitionSpec *from) { SinglePartitionSpec *newnode = makeNode(SinglePartitionSpec); return newnode; } static PartitionCmd * _copyPartitionCmd(const PartitionCmd *from) { PartitionCmd *newnode = makeNode(PartitionCmd); COPY_NODE_FIELD(name); COPY_NODE_FIELD(bound); COPY_SCALAR_FIELD(concurrent); return newnode; } static RangeTblEntry * _copyRangeTblEntry(const RangeTblEntry *from) { RangeTblEntry *newnode = makeNode(RangeTblEntry); COPY_NODE_FIELD(alias); COPY_NODE_FIELD(eref); COPY_SCALAR_FIELD(rtekind); COPY_SCALAR_FIELD(relid); COPY_SCALAR_FIELD(inh); COPY_SCALAR_FIELD(relkind); COPY_SCALAR_FIELD(rellockmode); COPY_SCALAR_FIELD(perminfoindex); 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(join_using_alias); 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_SCALAR_FIELD(lateral); COPY_SCALAR_FIELD(inFromCl); COPY_NODE_FIELD(securityQuals); return newnode; } static RTEPermissionInfo * _copyRTEPermissionInfo(const RTEPermissionInfo *from) { RTEPermissionInfo *newnode = makeNode(RTEPermissionInfo); COPY_SCALAR_FIELD(relid); COPY_SCALAR_FIELD(inh); COPY_SCALAR_FIELD(requiredPerms); COPY_SCALAR_FIELD(checkAsUser); COPY_BITMAPSET_FIELD(selectedCols); COPY_BITMAPSET_FIELD(insertedCols); COPY_BITMAPSET_FIELD(updatedCols); 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 CTESearchClause * _copyCTESearchClause(const CTESearchClause *from) { CTESearchClause *newnode = makeNode(CTESearchClause); COPY_NODE_FIELD(search_col_list); COPY_SCALAR_FIELD(search_breadth_first); COPY_STRING_FIELD(search_seq_column); COPY_LOCATION_FIELD(location); return newnode; } static CTECycleClause * _copyCTECycleClause(const CTECycleClause *from) { CTECycleClause *newnode = makeNode(CTECycleClause); COPY_NODE_FIELD(cycle_col_list); COPY_STRING_FIELD(cycle_mark_column); COPY_NODE_FIELD(cycle_mark_value); COPY_NODE_FIELD(cycle_mark_default); COPY_STRING_FIELD(cycle_path_column); COPY_LOCATION_FIELD(location); COPY_SCALAR_FIELD(cycle_mark_type); COPY_SCALAR_FIELD(cycle_mark_typmod); COPY_SCALAR_FIELD(cycle_mark_collation); COPY_SCALAR_FIELD(cycle_mark_neop); 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_NODE_FIELD(search_clause); COPY_NODE_FIELD(cycle_clause); 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 MergeWhenClause * _copyMergeWhenClause(const MergeWhenClause *from) { MergeWhenClause *newnode = makeNode(MergeWhenClause); COPY_SCALAR_FIELD(matchKind); COPY_SCALAR_FIELD(commandType); COPY_SCALAR_FIELD(override); COPY_NODE_FIELD(condition); COPY_NODE_FIELD(targetList); COPY_NODE_FIELD(values); 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 JsonOutput * _copyJsonOutput(const JsonOutput *from) { JsonOutput *newnode = makeNode(JsonOutput); COPY_NODE_FIELD(typeName); COPY_NODE_FIELD(returning); return newnode; } static JsonArgument * _copyJsonArgument(const JsonArgument *from) { JsonArgument *newnode = makeNode(JsonArgument); COPY_NODE_FIELD(val); COPY_STRING_FIELD(name); return newnode; } static JsonFuncExpr * _copyJsonFuncExpr(const JsonFuncExpr *from) { JsonFuncExpr *newnode = makeNode(JsonFuncExpr); COPY_SCALAR_FIELD(op); COPY_STRING_FIELD(column_name); COPY_NODE_FIELD(context_item); COPY_NODE_FIELD(pathspec); COPY_NODE_FIELD(passing); COPY_NODE_FIELD(output); COPY_NODE_FIELD(on_empty); COPY_NODE_FIELD(on_error); COPY_SCALAR_FIELD(wrapper); COPY_SCALAR_FIELD(quotes); COPY_LOCATION_FIELD(location); return newnode; } static JsonTablePathSpec * _copyJsonTablePathSpec(const JsonTablePathSpec *from) { JsonTablePathSpec *newnode = makeNode(JsonTablePathSpec); COPY_NODE_FIELD(string); COPY_STRING_FIELD(name); COPY_LOCATION_FIELD(name_location); COPY_LOCATION_FIELD(location); return newnode; } static JsonTable * _copyJsonTable(const JsonTable *from) { JsonTable *newnode = makeNode(JsonTable); COPY_NODE_FIELD(context_item); COPY_NODE_FIELD(pathspec); COPY_NODE_FIELD(passing); COPY_NODE_FIELD(columns); COPY_NODE_FIELD(on_error); COPY_NODE_FIELD(alias); COPY_SCALAR_FIELD(lateral); COPY_LOCATION_FIELD(location); return newnode; } static JsonTableColumn * _copyJsonTableColumn(const JsonTableColumn *from) { JsonTableColumn *newnode = makeNode(JsonTableColumn); COPY_SCALAR_FIELD(coltype); COPY_STRING_FIELD(name); COPY_NODE_FIELD(typeName); COPY_NODE_FIELD(pathspec); COPY_NODE_FIELD(format); COPY_SCALAR_FIELD(wrapper); COPY_SCALAR_FIELD(quotes); COPY_NODE_FIELD(columns); COPY_NODE_FIELD(on_empty); COPY_NODE_FIELD(on_error); COPY_LOCATION_FIELD(location); return newnode; } static JsonKeyValue * _copyJsonKeyValue(const JsonKeyValue *from) { JsonKeyValue *newnode = makeNode(JsonKeyValue); COPY_NODE_FIELD(key); COPY_NODE_FIELD(value); return newnode; } static JsonParseExpr * _copyJsonParseExpr(const JsonParseExpr *from) { JsonParseExpr *newnode = makeNode(JsonParseExpr); COPY_NODE_FIELD(expr); COPY_NODE_FIELD(output); COPY_SCALAR_FIELD(unique_keys); COPY_LOCATION_FIELD(location); return newnode; } static JsonScalarExpr * _copyJsonScalarExpr(const JsonScalarExpr *from) { JsonScalarExpr *newnode = makeNode(JsonScalarExpr); COPY_NODE_FIELD(expr); COPY_NODE_FIELD(output); COPY_LOCATION_FIELD(location); return newnode; } static JsonSerializeExpr * _copyJsonSerializeExpr(const JsonSerializeExpr *from) { JsonSerializeExpr *newnode = makeNode(JsonSerializeExpr); COPY_NODE_FIELD(expr); COPY_NODE_FIELD(output); COPY_LOCATION_FIELD(location); return newnode; } static JsonObjectConstructor * _copyJsonObjectConstructor(const JsonObjectConstructor *from) { JsonObjectConstructor *newnode = makeNode(JsonObjectConstructor); COPY_NODE_FIELD(exprs); COPY_NODE_FIELD(output); COPY_SCALAR_FIELD(absent_on_null); COPY_SCALAR_FIELD(unique); COPY_LOCATION_FIELD(location); return newnode; } static JsonArrayConstructor * _copyJsonArrayConstructor(const JsonArrayConstructor *from) { JsonArrayConstructor *newnode = makeNode(JsonArrayConstructor); COPY_NODE_FIELD(exprs); COPY_NODE_FIELD(output); COPY_SCALAR_FIELD(absent_on_null); COPY_LOCATION_FIELD(location); return newnode; } static JsonArrayQueryConstructor * _copyJsonArrayQueryConstructor(const JsonArrayQueryConstructor *from) { JsonArrayQueryConstructor *newnode = makeNode(JsonArrayQueryConstructor); COPY_NODE_FIELD(query); COPY_NODE_FIELD(output); COPY_NODE_FIELD(format); COPY_SCALAR_FIELD(absent_on_null); COPY_LOCATION_FIELD(location); return newnode; } static JsonAggConstructor * _copyJsonAggConstructor(const JsonAggConstructor *from) { JsonAggConstructor *newnode = makeNode(JsonAggConstructor); COPY_NODE_FIELD(output); COPY_NODE_FIELD(agg_filter); COPY_NODE_FIELD(agg_order); COPY_NODE_FIELD(over); COPY_LOCATION_FIELD(location); return newnode; } static JsonObjectAgg * _copyJsonObjectAgg(const JsonObjectAgg *from) { JsonObjectAgg *newnode = makeNode(JsonObjectAgg); COPY_NODE_FIELD(constructor); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(absent_on_null); COPY_SCALAR_FIELD(unique); return newnode; } static JsonArrayAgg * _copyJsonArrayAgg(const JsonArrayAgg *from) { JsonArrayAgg *newnode = makeNode(JsonArrayAgg); COPY_NODE_FIELD(constructor); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(absent_on_null); return newnode; } static RawStmt * _copyRawStmt(const RawStmt *from) { RawStmt *newnode = makeNode(RawStmt); COPY_NODE_FIELD(stmt); COPY_LOCATION_FIELD(stmt_location); COPY_LOCATION_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 MergeStmt * _copyMergeStmt(const MergeStmt *from) { MergeStmt *newnode = makeNode(MergeStmt); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(sourceRelation); COPY_NODE_FIELD(joinCondition); COPY_NODE_FIELD(mergeWhenClauses); 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_SCALAR_FIELD(groupDistinct); 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 ReturnStmt * _copyReturnStmt(const ReturnStmt *from) { ReturnStmt *newnode = makeNode(ReturnStmt); COPY_NODE_FIELD(returnval); return newnode; } static PLAssignStmt * _copyPLAssignStmt(const PLAssignStmt *from) { PLAssignStmt *newnode = makeNode(PLAssignStmt); COPY_STRING_FIELD(name); COPY_NODE_FIELD(indirection); COPY_SCALAR_FIELD(nnames); COPY_NODE_FIELD(val); COPY_LOCATION_FIELD(location); 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 AlterTableStmt * _copyAlterTableStmt(const AlterTableStmt *from) { AlterTableStmt *newnode = makeNode(AlterTableStmt); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(cmds); COPY_SCALAR_FIELD(objtype); COPY_SCALAR_FIELD(missing_ok); return newnode; } static ReplicaIdentityStmt * _copyReplicaIdentityStmt(const ReplicaIdentityStmt *from) { ReplicaIdentityStmt *newnode = makeNode(ReplicaIdentityStmt); COPY_SCALAR_FIELD(identity_type); COPY_STRING_FIELD(name); 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); COPY_SCALAR_FIELD(recurse); 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_NODE_FIELD(grantor); 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_NODE_FIELD(objfuncargs); 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_NODE_FIELD(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 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; } 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 CreateStmt * _copyCreateStmt(const CreateStmt *from) { CreateStmt *newnode = makeNode(CreateStmt); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(tableElts); COPY_NODE_FIELD(inhRelations); COPY_NODE_FIELD(partbound); COPY_NODE_FIELD(partspec); 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); 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_SCALAR_FIELD(skip_validation); COPY_SCALAR_FIELD(initially_valid); COPY_SCALAR_FIELD(is_no_inherit); COPY_NODE_FIELD(raw_expr); COPY_STRING_FIELD(cooked_expr); COPY_SCALAR_FIELD(generated_when); COPY_SCALAR_FIELD(inhcount); COPY_SCALAR_FIELD(nulls_not_distinct); 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(fk_del_set_cols); COPY_NODE_FIELD(old_conpfeqop); COPY_SCALAR_FIELD(old_pktable_oid); COPY_LOCATION_FIELD(location); 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 CreateForeignTableStmt * _copyCreateForeignTableStmt(const CreateForeignTableStmt *from) { CreateForeignTableStmt *newnode = makeNode(CreateForeignTableStmt); COPY_NODE_FIELD(base.relation); COPY_NODE_FIELD(base.tableElts); COPY_NODE_FIELD(base.inhRelations); COPY_NODE_FIELD(base.partbound); COPY_NODE_FIELD(base.partspec); COPY_NODE_FIELD(base.ofTypename); COPY_NODE_FIELD(base.constraints); COPY_NODE_FIELD(base.options); COPY_SCALAR_FIELD(base.oncommit); COPY_STRING_FIELD(base.tablespacename); COPY_STRING_FIELD(base.accessMethod); COPY_SCALAR_FIELD(base.if_not_exists); COPY_STRING_FIELD(servername); COPY_NODE_FIELD(options); 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 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 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 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_SCALAR_FIELD(replace); COPY_SCALAR_FIELD(isconstraint); 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_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 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 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 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 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 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 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(oldNumber); COPY_SCALAR_FIELD(oldCreateSubid); COPY_SCALAR_FIELD(oldFirstRelfilelocatorSubid); COPY_SCALAR_FIELD(unique); COPY_SCALAR_FIELD(nulls_not_distinct); 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(transformed); COPY_SCALAR_FIELD(if_not_exists); return newnode; } static StatsElem * _copyStatsElem(const StatsElem *from) { StatsElem *newnode = makeNode(StatsElem); COPY_STRING_FIELD(name); COPY_NODE_FIELD(expr); return newnode; } static AlterStatsStmt * _copyAlterStatsStmt(const AlterStatsStmt *from) { AlterStatsStmt *newnode = makeNode(AlterStatsStmt); COPY_NODE_FIELD(defnames); COPY_NODE_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); COPY_NODE_FIELD(sql_body); 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 CallStmt * _copyCallStmt(const CallStmt *from) { CallStmt *newnode = makeNode(CallStmt); COPY_NODE_FIELD(funccall); COPY_NODE_FIELD(funcexpr); COPY_NODE_FIELD(outargs); 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); COPY_LOCATION_FIELD(location); 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 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 AlterDatabaseRefreshCollStmt * _copyAlterDatabaseRefreshCollStmt(const AlterDatabaseRefreshCollStmt *from) { AlterDatabaseRefreshCollStmt *newnode = makeNode(AlterDatabaseRefreshCollStmt); COPY_STRING_FIELD(dbname); 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 AlterSystemStmt * _copyAlterSystemStmt(const AlterSystemStmt *from) { AlterSystemStmt *newnode = makeNode(AlterSystemStmt); COPY_NODE_FIELD(setstmt); return newnode; } static ClusterStmt * _copyClusterStmt(const ClusterStmt *from) { ClusterStmt *newnode = makeNode(ClusterStmt); COPY_NODE_FIELD(relation); COPY_STRING_FIELD(indexname); COPY_NODE_FIELD(params); 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(objtype); 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 CheckPointStmt * _copyCheckPointStmt(const CheckPointStmt *from) { CheckPointStmt *newnode = makeNode(CheckPointStmt); return newnode; } static DiscardStmt * _copyDiscardStmt(const DiscardStmt *from) { DiscardStmt *newnode = makeNode(DiscardStmt); COPY_SCALAR_FIELD(target); 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_NODE_FIELD(params); 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 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 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); COPY_SCALAR_FIELD(isall); COPY_LOCATION_FIELD(location); 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 PublicationTable * _copyPublicationTable(const PublicationTable *from) { PublicationTable *newnode = makeNode(PublicationTable); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(whereClause); COPY_NODE_FIELD(columns); return newnode; } static PublicationObjSpec * _copyPublicationObjSpec(const PublicationObjSpec *from) { PublicationObjSpec *newnode = makeNode(PublicationObjSpec); COPY_SCALAR_FIELD(pubobjtype); COPY_STRING_FIELD(name); COPY_NODE_FIELD(pubtable); COPY_LOCATION_FIELD(location); return newnode; } static CreatePublicationStmt * _copyCreatePublicationStmt(const CreatePublicationStmt *from) { CreatePublicationStmt *newnode = makeNode(CreatePublicationStmt); COPY_STRING_FIELD(pubname); COPY_NODE_FIELD(options); COPY_NODE_FIELD(pubobjects); 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(pubobjects); COPY_SCALAR_FIELD(for_all_tables); COPY_SCALAR_FIELD(action); 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; } static PathKey * _copyPathKey(const PathKey *from) { PathKey *newnode = makeNode(PathKey); COPY_SCALAR_FIELD(pk_eclass); COPY_SCALAR_FIELD(pk_opfamily); COPY_SCALAR_FIELD(pk_strategy); COPY_SCALAR_FIELD(pk_nulls_first); return newnode; } static GroupByOrdering * _copyGroupByOrdering(const GroupByOrdering *from) { GroupByOrdering *newnode = makeNode(GroupByOrdering); COPY_NODE_FIELD(pathkeys); COPY_NODE_FIELD(clauses); return newnode; } static RestrictInfo * _copyRestrictInfo(const RestrictInfo *from) { RestrictInfo *newnode = makeNode(RestrictInfo); COPY_NODE_FIELD(clause); COPY_SCALAR_FIELD(is_pushed_down); COPY_SCALAR_FIELD(can_join); COPY_SCALAR_FIELD(pseudoconstant); COPY_SCALAR_FIELD(has_clone); COPY_SCALAR_FIELD(is_clone); COPY_SCALAR_FIELD(leakproof); COPY_SCALAR_FIELD(has_volatile); COPY_SCALAR_FIELD(security_level); COPY_SCALAR_FIELD(num_base_rels); COPY_BITMAPSET_FIELD(clause_relids); COPY_BITMAPSET_FIELD(required_relids); COPY_BITMAPSET_FIELD(incompatible_relids); COPY_BITMAPSET_FIELD(outer_relids); COPY_BITMAPSET_FIELD(left_relids); COPY_BITMAPSET_FIELD(right_relids); COPY_NODE_FIELD(orclause); COPY_SCALAR_FIELD(rinfo_serial); COPY_SCALAR_FIELD(parent_ec); COPY_SCALAR_FIELD(eval_cost); COPY_SCALAR_FIELD(norm_selec); COPY_SCALAR_FIELD(outer_selec); COPY_NODE_FIELD(mergeopfamilies); COPY_SCALAR_FIELD(left_ec); COPY_SCALAR_FIELD(right_ec); COPY_SCALAR_FIELD(left_em); COPY_SCALAR_FIELD(right_em); 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); COPY_SCALAR_FIELD(left_hasheqoperator); COPY_SCALAR_FIELD(right_hasheqoperator); return newnode; } static PlaceHolderVar * _copyPlaceHolderVar(const PlaceHolderVar *from) { PlaceHolderVar *newnode = makeNode(PlaceHolderVar); COPY_NODE_FIELD(phexpr); COPY_BITMAPSET_FIELD(phrels); COPY_BITMAPSET_FIELD(phnullingrels); COPY_SCALAR_FIELD(phid); COPY_SCALAR_FIELD(phlevelsup); return newnode; } 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(ojrelid); COPY_BITMAPSET_FIELD(commute_above_l); COPY_BITMAPSET_FIELD(commute_above_r); COPY_BITMAPSET_FIELD(commute_below_l); COPY_BITMAPSET_FIELD(commute_below_r); COPY_SCALAR_FIELD(lhs_strict); 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; } 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; } 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; } 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(permInfos); COPY_NODE_FIELD(resultRelations); 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_LOCATION_FIELD(stmt_len); return newnode; } static Result * _copyResult(const Result *from) { Result *newnode = makeNode(Result); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); COPY_NODE_FIELD(resconstantqual); return newnode; } static ProjectSet * _copyProjectSet(const ProjectSet *from) { ProjectSet *newnode = makeNode(ProjectSet); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); return newnode; } static ModifyTable * _copyModifyTable(const ModifyTable *from) { ModifyTable *newnode = makeNode(ModifyTable); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); 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_NODE_FIELD(updateColnosLists); 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(onConflictCols); COPY_NODE_FIELD(onConflictWhere); COPY_SCALAR_FIELD(exclRelRTI); COPY_NODE_FIELD(exclRelTlist); COPY_NODE_FIELD(mergeActionLists); COPY_NODE_FIELD(mergeJoinConditions); return newnode; } static Append * _copyAppend(const Append *from) { Append *newnode = makeNode(Append); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); COPY_BITMAPSET_FIELD(apprelids); COPY_NODE_FIELD(appendplans); COPY_SCALAR_FIELD(nasyncplans); COPY_SCALAR_FIELD(first_partial_plan); COPY_NODE_FIELD(part_prune_info); return newnode; } static MergeAppend * _copyMergeAppend(const MergeAppend *from) { MergeAppend *newnode = makeNode(MergeAppend); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); 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; } static RecursiveUnion * _copyRecursiveUnion(const RecursiveUnion *from) { RecursiveUnion *newnode = makeNode(RecursiveUnion); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); COPY_SCALAR_FIELD(wtParam); 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(numGroups); return newnode; } static BitmapAnd * _copyBitmapAnd(const BitmapAnd *from) { BitmapAnd *newnode = makeNode(BitmapAnd); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); COPY_NODE_FIELD(bitmapplans); return newnode; } static BitmapOr * _copyBitmapOr(const BitmapOr *from) { BitmapOr *newnode = makeNode(BitmapOr); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); COPY_SCALAR_FIELD(isshared); COPY_NODE_FIELD(bitmapplans); return newnode; } static SeqScan * _copySeqScan(const SeqScan *from) { SeqScan *newnode = makeNode(SeqScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); return newnode; } static SampleScan * _copySampleScan(const SampleScan *from) { SampleScan *newnode = makeNode(SampleScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); COPY_NODE_FIELD(tablesample); return newnode; } static IndexScan * _copyIndexScan(const IndexScan *from) { IndexScan *newnode = makeNode(IndexScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); 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; } static IndexOnlyScan * _copyIndexOnlyScan(const IndexOnlyScan *from) { IndexOnlyScan *newnode = makeNode(IndexOnlyScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); COPY_SCALAR_FIELD(indexid); COPY_NODE_FIELD(indexqual); COPY_NODE_FIELD(recheckqual); COPY_NODE_FIELD(indexorderby); COPY_NODE_FIELD(indextlist); COPY_SCALAR_FIELD(indexorderdir); return newnode; } static BitmapIndexScan * _copyBitmapIndexScan(const BitmapIndexScan *from) { BitmapIndexScan *newnode = makeNode(BitmapIndexScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); COPY_SCALAR_FIELD(indexid); COPY_SCALAR_FIELD(isshared); COPY_NODE_FIELD(indexqual); COPY_NODE_FIELD(indexqualorig); return newnode; } static BitmapHeapScan * _copyBitmapHeapScan(const BitmapHeapScan *from) { BitmapHeapScan *newnode = makeNode(BitmapHeapScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); COPY_NODE_FIELD(bitmapqualorig); return newnode; } static TidScan * _copyTidScan(const TidScan *from) { TidScan *newnode = makeNode(TidScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); COPY_NODE_FIELD(tidquals); return newnode; } static TidRangeScan * _copyTidRangeScan(const TidRangeScan *from) { TidRangeScan *newnode = makeNode(TidRangeScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); COPY_NODE_FIELD(tidrangequals); return newnode; } static SubqueryScan * _copySubqueryScan(const SubqueryScan *from) { SubqueryScan *newnode = makeNode(SubqueryScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); COPY_NODE_FIELD(subplan); COPY_SCALAR_FIELD(scanstatus); return newnode; } static FunctionScan * _copyFunctionScan(const FunctionScan *from) { FunctionScan *newnode = makeNode(FunctionScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); COPY_NODE_FIELD(functions); COPY_SCALAR_FIELD(funcordinality); return newnode; } static ValuesScan * _copyValuesScan(const ValuesScan *from) { ValuesScan *newnode = makeNode(ValuesScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); COPY_NODE_FIELD(values_lists); return newnode; } static TableFuncScan * _copyTableFuncScan(const TableFuncScan *from) { TableFuncScan *newnode = makeNode(TableFuncScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); COPY_NODE_FIELD(tablefunc); return newnode; } static CteScan * _copyCteScan(const CteScan *from) { CteScan *newnode = makeNode(CteScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); COPY_SCALAR_FIELD(ctePlanId); COPY_SCALAR_FIELD(cteParam); return newnode; } static NamedTuplestoreScan * _copyNamedTuplestoreScan(const NamedTuplestoreScan *from) { NamedTuplestoreScan *newnode = makeNode(NamedTuplestoreScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); COPY_STRING_FIELD(enrname); return newnode; } static WorkTableScan * _copyWorkTableScan(const WorkTableScan *from) { WorkTableScan *newnode = makeNode(WorkTableScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); COPY_SCALAR_FIELD(wtParam); return newnode; } static ForeignScan * _copyForeignScan(const ForeignScan *from) { ForeignScan *newnode = makeNode(ForeignScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); COPY_SCALAR_FIELD(operation); COPY_SCALAR_FIELD(resultRelation); COPY_SCALAR_FIELD(checkAsUser); 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_BITMAPSET_FIELD(fs_base_relids); COPY_SCALAR_FIELD(fsSystemCol); return newnode; } static CustomScan * _copyCustomScan(const CustomScan *from) { CustomScan *newnode = makeNode(CustomScan); COPY_SCALAR_FIELD(scan.plan.startup_cost); COPY_SCALAR_FIELD(scan.plan.total_cost); COPY_SCALAR_FIELD(scan.plan.plan_rows); COPY_SCALAR_FIELD(scan.plan.plan_width); COPY_SCALAR_FIELD(scan.plan.parallel_aware); COPY_SCALAR_FIELD(scan.plan.parallel_safe); COPY_SCALAR_FIELD(scan.plan.async_capable); COPY_SCALAR_FIELD(scan.plan.plan_node_id); COPY_NODE_FIELD(scan.plan.targetlist); COPY_NODE_FIELD(scan.plan.qual); COPY_NODE_FIELD(scan.plan.lefttree); COPY_NODE_FIELD(scan.plan.righttree); COPY_NODE_FIELD(scan.plan.initPlan); COPY_BITMAPSET_FIELD(scan.plan.extParam); COPY_BITMAPSET_FIELD(scan.plan.allParam); COPY_SCALAR_FIELD(scan.scanrelid); 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); COPY_SCALAR_FIELD(methods); return newnode; } static NestLoop * _copyNestLoop(const NestLoop *from) { NestLoop *newnode = makeNode(NestLoop); COPY_SCALAR_FIELD(join.plan.startup_cost); COPY_SCALAR_FIELD(join.plan.total_cost); COPY_SCALAR_FIELD(join.plan.plan_rows); COPY_SCALAR_FIELD(join.plan.plan_width); COPY_SCALAR_FIELD(join.plan.parallel_aware); COPY_SCALAR_FIELD(join.plan.parallel_safe); COPY_SCALAR_FIELD(join.plan.async_capable); COPY_SCALAR_FIELD(join.plan.plan_node_id); COPY_NODE_FIELD(join.plan.targetlist); COPY_NODE_FIELD(join.plan.qual); COPY_NODE_FIELD(join.plan.lefttree); COPY_NODE_FIELD(join.plan.righttree); COPY_NODE_FIELD(join.plan.initPlan); COPY_BITMAPSET_FIELD(join.plan.extParam); COPY_BITMAPSET_FIELD(join.plan.allParam); COPY_SCALAR_FIELD(join.jointype); COPY_SCALAR_FIELD(join.inner_unique); COPY_NODE_FIELD(join.joinqual); COPY_NODE_FIELD(nestParams); return newnode; } static NestLoopParam * _copyNestLoopParam(const NestLoopParam *from) { NestLoopParam *newnode = makeNode(NestLoopParam); COPY_SCALAR_FIELD(paramno); COPY_NODE_FIELD(paramval); return newnode; } static MergeJoin * _copyMergeJoin(const MergeJoin *from) { MergeJoin *newnode = makeNode(MergeJoin); COPY_SCALAR_FIELD(join.plan.startup_cost); COPY_SCALAR_FIELD(join.plan.total_cost); COPY_SCALAR_FIELD(join.plan.plan_rows); COPY_SCALAR_FIELD(join.plan.plan_width); COPY_SCALAR_FIELD(join.plan.parallel_aware); COPY_SCALAR_FIELD(join.plan.parallel_safe); COPY_SCALAR_FIELD(join.plan.async_capable); COPY_SCALAR_FIELD(join.plan.plan_node_id); COPY_NODE_FIELD(join.plan.targetlist); COPY_NODE_FIELD(join.plan.qual); COPY_NODE_FIELD(join.plan.lefttree); COPY_NODE_FIELD(join.plan.righttree); COPY_NODE_FIELD(join.plan.initPlan); COPY_BITMAPSET_FIELD(join.plan.extParam); COPY_BITMAPSET_FIELD(join.plan.allParam); COPY_SCALAR_FIELD(join.jointype); COPY_SCALAR_FIELD(join.inner_unique); COPY_NODE_FIELD(join.joinqual); COPY_SCALAR_FIELD(skip_mark_restore); COPY_NODE_FIELD(mergeclauses); COPY_POINTER_FIELD(mergeFamilies, list_length(from->mergeclauses) * sizeof(Oid)); COPY_POINTER_FIELD(mergeCollations, list_length(from->mergeclauses) * sizeof(Oid)); COPY_POINTER_FIELD(mergeStrategies, list_length(from->mergeclauses) * sizeof(int)); COPY_POINTER_FIELD(mergeNullsFirst, list_length(from->mergeclauses) * sizeof(bool)); return newnode; } static HashJoin * _copyHashJoin(const HashJoin *from) { HashJoin *newnode = makeNode(HashJoin); COPY_SCALAR_FIELD(join.plan.startup_cost); COPY_SCALAR_FIELD(join.plan.total_cost); COPY_SCALAR_FIELD(join.plan.plan_rows); COPY_SCALAR_FIELD(join.plan.plan_width); COPY_SCALAR_FIELD(join.plan.parallel_aware); COPY_SCALAR_FIELD(join.plan.parallel_safe); COPY_SCALAR_FIELD(join.plan.async_capable); COPY_SCALAR_FIELD(join.plan.plan_node_id); COPY_NODE_FIELD(join.plan.targetlist); COPY_NODE_FIELD(join.plan.qual); COPY_NODE_FIELD(join.plan.lefttree); COPY_NODE_FIELD(join.plan.righttree); COPY_NODE_FIELD(join.plan.initPlan); COPY_BITMAPSET_FIELD(join.plan.extParam); COPY_BITMAPSET_FIELD(join.plan.allParam); COPY_SCALAR_FIELD(join.jointype); COPY_SCALAR_FIELD(join.inner_unique); COPY_NODE_FIELD(join.joinqual); COPY_NODE_FIELD(hashclauses); COPY_NODE_FIELD(hashoperators); COPY_NODE_FIELD(hashcollations); COPY_NODE_FIELD(hashkeys); return newnode; } static Material * _copyMaterial(const Material *from) { Material *newnode = makeNode(Material); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); return newnode; } static Memoize * _copyMemoize(const Memoize *from) { Memoize *newnode = makeNode(Memoize); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); COPY_SCALAR_FIELD(numKeys); COPY_POINTER_FIELD(hashOperators, from->numKeys * sizeof(Oid)); COPY_POINTER_FIELD(collations, from->numKeys * sizeof(Oid)); COPY_NODE_FIELD(param_exprs); COPY_SCALAR_FIELD(singlerow); COPY_SCALAR_FIELD(binary_mode); COPY_SCALAR_FIELD(est_entries); COPY_BITMAPSET_FIELD(keyparamids); return newnode; } static Sort * _copySort(const Sort *from) { Sort *newnode = makeNode(Sort); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); 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)); return newnode; } static IncrementalSort * _copyIncrementalSort(const IncrementalSort *from) { IncrementalSort *newnode = makeNode(IncrementalSort); COPY_SCALAR_FIELD(sort.plan.startup_cost); COPY_SCALAR_FIELD(sort.plan.total_cost); COPY_SCALAR_FIELD(sort.plan.plan_rows); COPY_SCALAR_FIELD(sort.plan.plan_width); COPY_SCALAR_FIELD(sort.plan.parallel_aware); COPY_SCALAR_FIELD(sort.plan.parallel_safe); COPY_SCALAR_FIELD(sort.plan.async_capable); COPY_SCALAR_FIELD(sort.plan.plan_node_id); COPY_NODE_FIELD(sort.plan.targetlist); COPY_NODE_FIELD(sort.plan.qual); COPY_NODE_FIELD(sort.plan.lefttree); COPY_NODE_FIELD(sort.plan.righttree); COPY_NODE_FIELD(sort.plan.initPlan); COPY_BITMAPSET_FIELD(sort.plan.extParam); COPY_BITMAPSET_FIELD(sort.plan.allParam); COPY_SCALAR_FIELD(sort.numCols); COPY_POINTER_FIELD(sort.sortColIdx, from->sort.numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(sort.sortOperators, from->sort.numCols * sizeof(Oid)); COPY_POINTER_FIELD(sort.collations, from->sort.numCols * sizeof(Oid)); COPY_POINTER_FIELD(sort.nullsFirst, from->sort.numCols * sizeof(bool)); COPY_SCALAR_FIELD(nPresortedCols); return newnode; } static Group * _copyGroup(const Group *from) { Group *newnode = makeNode(Group); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); 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; } static Agg * _copyAgg(const Agg *from) { Agg *newnode = makeNode(Agg); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); COPY_SCALAR_FIELD(aggstrategy); COPY_SCALAR_FIELD(aggsplit); 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)); COPY_SCALAR_FIELD(numGroups); COPY_SCALAR_FIELD(transitionSpace); COPY_BITMAPSET_FIELD(aggParams); COPY_NODE_FIELD(groupingSets); COPY_NODE_FIELD(chain); return newnode; } static WindowAgg * _copyWindowAgg(const WindowAgg *from) { WindowAgg *newnode = makeNode(WindowAgg); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); COPY_SCALAR_FIELD(winref); COPY_SCALAR_FIELD(partNumCols); 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); 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_NODE_FIELD(runCondition); COPY_NODE_FIELD(runConditionOrig); COPY_SCALAR_FIELD(startInRangeFunc); COPY_SCALAR_FIELD(endInRangeFunc); COPY_SCALAR_FIELD(inRangeColl); COPY_SCALAR_FIELD(inRangeAsc); COPY_SCALAR_FIELD(inRangeNullsFirst); COPY_SCALAR_FIELD(topWindow); return newnode; } static Unique * _copyUnique(const Unique *from) { Unique *newnode = makeNode(Unique); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); 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; } static Gather * _copyGather(const Gather *from) { Gather *newnode = makeNode(Gather); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); 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; } static GatherMerge * _copyGatherMerge(const GatherMerge *from) { GatherMerge *newnode = makeNode(GatherMerge); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); 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; } static Hash * _copyHash(const Hash *from) { Hash *newnode = makeNode(Hash); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); COPY_NODE_FIELD(hashkeys); COPY_SCALAR_FIELD(skewTable); COPY_SCALAR_FIELD(skewColumn); COPY_SCALAR_FIELD(skewInherit); COPY_SCALAR_FIELD(rows_total); return newnode; } static SetOp * _copySetOp(const SetOp *from) { SetOp *newnode = makeNode(SetOp); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); 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; } static LockRows * _copyLockRows(const LockRows *from) { LockRows *newnode = makeNode(LockRows); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); COPY_NODE_FIELD(rowMarks); COPY_SCALAR_FIELD(epqParam); return newnode; } static Limit * _copyLimit(const Limit *from) { Limit *newnode = makeNode(Limit); COPY_SCALAR_FIELD(plan.startup_cost); COPY_SCALAR_FIELD(plan.total_cost); COPY_SCALAR_FIELD(plan.plan_rows); COPY_SCALAR_FIELD(plan.plan_width); COPY_SCALAR_FIELD(plan.parallel_aware); COPY_SCALAR_FIELD(plan.parallel_safe); COPY_SCALAR_FIELD(plan.async_capable); COPY_SCALAR_FIELD(plan.plan_node_id); COPY_NODE_FIELD(plan.targetlist); COPY_NODE_FIELD(plan.qual); COPY_NODE_FIELD(plan.lefttree); COPY_NODE_FIELD(plan.righttree); COPY_NODE_FIELD(plan.initPlan); COPY_BITMAPSET_FIELD(plan.extParam); COPY_BITMAPSET_FIELD(plan.allParam); 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; } 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; } 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; } 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; } static PlanInvalItem * _copyPlanInvalItem(const PlanInvalItem *from) { PlanInvalItem *newnode = makeNode(PlanInvalItem); COPY_SCALAR_FIELD(cacheId); COPY_SCALAR_FIELD(hashValue); return newnode; } static Integer * _copyInteger(const Integer *from) { Integer *newnode = makeNode(Integer); COPY_SCALAR_FIELD(ival); return newnode; } static Float * _copyFloat(const Float *from) { Float *newnode = makeNode(Float); COPY_STRING_FIELD(fval); return newnode; } static Boolean * _copyBoolean(const Boolean *from) { Boolean *newnode = makeNode(Boolean); COPY_SCALAR_FIELD(boolval); return newnode; } static String * _copyString(const String *from) { String *newnode = makeNode(String); COPY_STRING_FIELD(sval); return newnode; } static BitString * _copyBitString(const BitString *from) { BitString *newnode = makeNode(BitString); COPY_STRING_FIELD(bsval); 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_ARRAY_FIELD(conkey); COPY_ARRAY_FIELD(confkey); COPY_ARRAY_FIELD(conpfeqop); return newnode; } libpg_query-17-6.1.0/src/postgres/include/copyfuncs.switch.c000066400000000000000000000564401477334012600240420ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * copyfuncs.switch.c * Generated node infrastructure code * * Portions Copyright (c) 1996-2024, 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/nodes/gen_node_support.pl * *------------------------------------------------------------------------- */ 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_WindowFuncRunCondition: retval = _copyWindowFuncRunCondition(from); break; case T_MergeSupportFunc: retval = _copyMergeSupportFunc(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_JsonFormat: retval = _copyJsonFormat(from); break; case T_JsonReturning: retval = _copyJsonReturning(from); break; case T_JsonValueExpr: retval = _copyJsonValueExpr(from); break; case T_JsonConstructorExpr: retval = _copyJsonConstructorExpr(from); break; case T_JsonIsPredicate: retval = _copyJsonIsPredicate(from); break; case T_JsonBehavior: retval = _copyJsonBehavior(from); break; case T_JsonExpr: retval = _copyJsonExpr(from); break; case T_JsonTablePath: retval = _copyJsonTablePath(from); break; case T_JsonTablePathScan: retval = _copyJsonTablePathScan(from); break; case T_JsonTableSiblingJoin: retval = _copyJsonTableSiblingJoin(from); break; case T_NullTest: retval = _copyNullTest(from); break; case T_BooleanTest: retval = _copyBooleanTest(from); break; case T_MergeAction: retval = _copyMergeAction(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; case T_Query: retval = _copyQuery(from); break; case T_TypeName: retval = _copyTypeName(from); break; case T_ColumnRef: retval = _copyColumnRef(from); break; case T_ParamRef: retval = _copyParamRef(from); break; case T_A_Expr: retval = _copyA_Expr(from); break; case T_A_Const: retval = _copyA_Const(from); break; case T_TypeCast: retval = _copyTypeCast(from); break; case T_CollateClause: retval = _copyCollateClause(from); break; case T_RoleSpec: retval = _copyRoleSpec(from); break; case T_FuncCall: retval = _copyFuncCall(from); break; case T_A_Star: retval = _copyA_Star(from); break; case T_A_Indices: retval = _copyA_Indices(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_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_RangeTableFunc: retval = _copyRangeTableFunc(from); break; case T_RangeTableFuncCol: retval = _copyRangeTableFuncCol(from); break; case T_RangeTableSample: retval = _copyRangeTableSample(from); break; case T_ColumnDef: retval = _copyColumnDef(from); break; case T_TableLikeClause: retval = _copyTableLikeClause(from); break; case T_IndexElem: retval = _copyIndexElem(from); break; case T_DefElem: retval = _copyDefElem(from); break; case T_LockingClause: retval = _copyLockingClause(from); break; case T_XmlSerialize: retval = _copyXmlSerialize(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_SinglePartitionSpec: retval = _copySinglePartitionSpec(from); break; case T_PartitionCmd: retval = _copyPartitionCmd(from); break; case T_RangeTblEntry: retval = _copyRangeTblEntry(from); break; case T_RTEPermissionInfo: retval = _copyRTEPermissionInfo(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_CTESearchClause: retval = _copyCTESearchClause(from); break; case T_CTECycleClause: retval = _copyCTECycleClause(from); break; case T_CommonTableExpr: retval = _copyCommonTableExpr(from); break; case T_MergeWhenClause: retval = _copyMergeWhenClause(from); break; case T_TriggerTransition: retval = _copyTriggerTransition(from); break; case T_JsonOutput: retval = _copyJsonOutput(from); break; case T_JsonArgument: retval = _copyJsonArgument(from); break; case T_JsonFuncExpr: retval = _copyJsonFuncExpr(from); break; case T_JsonTablePathSpec: retval = _copyJsonTablePathSpec(from); break; case T_JsonTable: retval = _copyJsonTable(from); break; case T_JsonTableColumn: retval = _copyJsonTableColumn(from); break; case T_JsonKeyValue: retval = _copyJsonKeyValue(from); break; case T_JsonParseExpr: retval = _copyJsonParseExpr(from); break; case T_JsonScalarExpr: retval = _copyJsonScalarExpr(from); break; case T_JsonSerializeExpr: retval = _copyJsonSerializeExpr(from); break; case T_JsonObjectConstructor: retval = _copyJsonObjectConstructor(from); break; case T_JsonArrayConstructor: retval = _copyJsonArrayConstructor(from); break; case T_JsonArrayQueryConstructor: retval = _copyJsonArrayQueryConstructor(from); break; case T_JsonAggConstructor: retval = _copyJsonAggConstructor(from); break; case T_JsonObjectAgg: retval = _copyJsonObjectAgg(from); break; case T_JsonArrayAgg: retval = _copyJsonArrayAgg(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_MergeStmt: retval = _copyMergeStmt(from); break; case T_SelectStmt: retval = _copySelectStmt(from); break; case T_SetOperationStmt: retval = _copySetOperationStmt(from); break; case T_ReturnStmt: retval = _copyReturnStmt(from); break; case T_PLAssignStmt: retval = _copyPLAssignStmt(from); break; case T_CreateSchemaStmt: retval = _copyCreateSchemaStmt(from); break; case T_AlterTableStmt: retval = _copyAlterTableStmt(from); break; case T_ReplicaIdentityStmt: retval = _copyReplicaIdentityStmt(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_ObjectWithArgs: retval = _copyObjectWithArgs(from); break; case T_AccessPriv: retval = _copyAccessPriv(from); break; case T_GrantRoleStmt: retval = _copyGrantRoleStmt(from); break; case T_AlterDefaultPrivilegesStmt: retval = _copyAlterDefaultPrivilegesStmt(from); break; case T_CopyStmt: retval = _copyCopyStmt(from); break; case T_VariableSetStmt: retval = _copyVariableSetStmt(from); break; case T_VariableShowStmt: retval = _copyVariableShowStmt(from); break; case T_CreateStmt: retval = _copyCreateStmt(from); break; case T_Constraint: retval = _copyConstraint(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_CreateForeignTableStmt: retval = _copyCreateForeignTableStmt(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_ImportForeignSchemaStmt: retval = _copyImportForeignSchemaStmt(from); break; case T_CreatePolicyStmt: retval = _copyCreatePolicyStmt(from); break; case T_AlterPolicyStmt: retval = _copyAlterPolicyStmt(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_CreateSeqStmt: retval = _copyCreateSeqStmt(from); break; case T_AlterSeqStmt: retval = _copyAlterSeqStmt(from); break; case T_DefineStmt: retval = _copyDefineStmt(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_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_DeclareCursorStmt: retval = _copyDeclareCursorStmt(from); break; case T_ClosePortalStmt: retval = _copyClosePortalStmt(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_StatsElem: retval = _copyStatsElem(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_CallStmt: retval = _copyCallStmt(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_CreatedbStmt: retval = _copyCreatedbStmt(from); break; case T_AlterDatabaseStmt: retval = _copyAlterDatabaseStmt(from); break; case T_AlterDatabaseRefreshCollStmt: retval = _copyAlterDatabaseRefreshCollStmt(from); break; case T_AlterDatabaseSetStmt: retval = _copyAlterDatabaseSetStmt(from); break; case T_DropdbStmt: retval = _copyDropdbStmt(from); break; case T_AlterSystemStmt: retval = _copyAlterSystemStmt(from); break; case T_ClusterStmt: retval = _copyClusterStmt(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_CheckPointStmt: retval = _copyCheckPointStmt(from); break; case T_DiscardStmt: retval = _copyDiscardStmt(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_CreateConversionStmt: retval = _copyCreateConversionStmt(from); break; case T_CreateCastStmt: retval = _copyCreateCastStmt(from); break; case T_CreateTransformStmt: retval = _copyCreateTransformStmt(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_PublicationTable: retval = _copyPublicationTable(from); break; case T_PublicationObjSpec: retval = _copyPublicationObjSpec(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_PathKey: retval = _copyPathKey(from); break; case T_GroupByOrdering: retval = _copyGroupByOrdering(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; case T_PlannedStmt: retval = _copyPlannedStmt(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_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_TidRangeScan: retval = _copyTidRangeScan(from); break; case T_SubqueryScan: retval = _copySubqueryScan(from); break; case T_FunctionScan: retval = _copyFunctionScan(from); break; case T_ValuesScan: retval = _copyValuesScan(from); break; case T_TableFuncScan: retval = _copyTableFuncScan(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_NestLoop: retval = _copyNestLoop(from); break; case T_NestLoopParam: retval = _copyNestLoopParam(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_Memoize: retval = _copyMemoize(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_Gather: retval = _copyGather(from); break; case T_GatherMerge: retval = _copyGatherMerge(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_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; case T_Bitmapset: retval = _copyBitmapset(from); break; case T_ExtensibleNode: retval = _copyExtensibleNode(from); break; case T_Integer: retval = _copyInteger(from); break; case T_Float: retval = _copyFloat(from); break; case T_Boolean: retval = _copyBoolean(from); break; case T_String: retval = _copyString(from); break; case T_BitString: retval = _copyBitString(from); break; case T_ForeignKeyCacheInfo: retval = _copyForeignKeyCacheInfo(from); break; libpg_query-17-6.1.0/src/postgres/include/datatype/000077500000000000000000000000001477334012600221675ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/datatype/timestamp.h000066400000000000000000000225721477334012600243530ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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) */ /* * Storage format for type interval. */ 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; /* * Data structure representing a broken-down interval. * * For historical reasons, this is modeled on struct pg_tm for timestamps. * Unlike the situation for timestamps, there's no magic interpretation * needed for months or years: they're just zero or not. Note that fields * can be negative; however, because of the divisions done while converting * from struct Interval, only tm_mday could be INT_MIN. This is important * because we may need to negate the values in some code paths. */ struct pg_itm { int tm_usec; int tm_sec; int tm_min; int64 tm_hour; /* needs to be wide */ int tm_mday; int tm_mon; int tm_year; }; /* * Data structure for decoding intervals. We could just use struct pg_itm, * but then the requirement for tm_usec to be 64 bits would propagate to * places where it's not really needed. Also, omitting the fields that * aren't used during decoding seems like a good error-prevention measure. */ struct pg_itm_in { int64 tm_usec; /* needs to be wide */ int tm_mday; int tm_mon; int tm_year; }; /* 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 DAYS_PER_WEEK 7 #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:08 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) /* * We reserve the minimum and maximum integer values to represent * timestamp (or timestamptz) -infinity and +infinity. */ #define TIMESTAMP_MINUS_INFINITY PG_INT64_MIN #define TIMESTAMP_INFINITY PG_INT64_MAX /* * Historically these aliases for infinity have been used. */ #define DT_NOBEGIN TIMESTAMP_MINUS_INFINITY #define DT_NOEND TIMESTAMP_INFINITY #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)) /* * Infinite intervals are represented by setting all fields to the minimum or * maximum integer values. */ #define INTERVAL_NOBEGIN(i) \ do { \ (i)->time = PG_INT64_MIN; \ (i)->day = PG_INT32_MIN; \ (i)->month = PG_INT32_MIN; \ } while (0) #define INTERVAL_IS_NOBEGIN(i) \ ((i)->month == PG_INT32_MIN && (i)->day == PG_INT32_MIN && (i)->time == PG_INT64_MIN) #define INTERVAL_NOEND(i) \ do { \ (i)->time = PG_INT64_MAX; \ (i)->day = PG_INT32_MAX; \ (i)->month = PG_INT32_MAX; \ } while (0) #define INTERVAL_IS_NOEND(i) \ ((i)->month == PG_INT32_MAX && (i)->day == PG_INT32_MAX && (i)->time == PG_INT64_MAX) #define INTERVAL_NOT_FINITE(i) (INTERVAL_IS_NOBEGIN(i) || INTERVAL_IS_NOEND(i)) /* * 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-17-6.1.0/src/postgres/include/equalfuncs.funcs.c000066400000000000000000002213541477334012600240120ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * equalfuncs.funcs.c * Generated node infrastructure code * * Portions Copyright (c) 1996-2024, 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/nodes/gen_node_support.pl * *------------------------------------------------------------------------- */ #include "access/amapi.h" #include "access/sdir.h" #include "access/tableam.h" #include "access/tsmapi.h" #include "commands/event_trigger.h" #include "commands/trigger.h" #include "executor/tuptable.h" #include "foreign/fdwapi.h" #include "nodes/bitmapset.h" #include "nodes/execnodes.h" #include "nodes/extensible.h" #include "nodes/lockoptions.h" #include "nodes/miscnodes.h" #include "nodes/nodes.h" #include "nodes/parsenodes.h" #include "nodes/pathnodes.h" #include "nodes/plannodes.h" #include "nodes/primnodes.h" #include "nodes/replnodes.h" #include "nodes/supportnodes.h" #include "nodes/value.h" #include "utils/rel.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_SCALAR_FIELD(functype); 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_NODE_FIELD(colvalexprs); COMPARE_NODE_FIELD(passingvalexprs); COMPARE_BITMAPSET_FIELD(notnulls); COMPARE_NODE_FIELD(plan); 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; } 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_BITMAPSET_FIELD(varnullingrels); COMPARE_SCALAR_FIELD(varlevelsup); COMPARE_LOCATION_FIELD(location); return true; } 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); 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_SCALAR_FIELD(aggno); COMPARE_SCALAR_FIELD(aggtransno); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalGroupingFunc(const GroupingFunc *a, const GroupingFunc *b) { COMPARE_NODE_FIELD(args); 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_NODE_FIELD(runCondition); COMPARE_SCALAR_FIELD(winref); COMPARE_SCALAR_FIELD(winstar); COMPARE_SCALAR_FIELD(winagg); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalWindowFuncRunCondition(const WindowFuncRunCondition *a, const WindowFuncRunCondition *b) { COMPARE_SCALAR_FIELD(opno); COMPARE_SCALAR_FIELD(inputcollid); COMPARE_SCALAR_FIELD(wfunc_left); COMPARE_NODE_FIELD(arg); return true; } static bool _equalMergeSupportFunc(const MergeSupportFunc *a, const MergeSupportFunc *b) { COMPARE_SCALAR_FIELD(msftype); COMPARE_SCALAR_FIELD(msfcollid); 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(refrestype); 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_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); 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); 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); 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); if (a->opfuncid != b->opfuncid && a->opfuncid != 0 && b->opfuncid != 0) return false; if (a->hashfuncid != b->hashfuncid && a->hashfuncid != 0 && b->hashfuncid != 0) return false; if (a->negfuncid != b->negfuncid && a->negfuncid != 0 && b->negfuncid != 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_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_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_LOCATION_FIELD(location); return true; } static bool _equalConvertRowtypeExpr(const ConvertRowtypeExpr *a, const ConvertRowtypeExpr *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(resulttype); 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_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(indent); COMPARE_SCALAR_FIELD(type); COMPARE_SCALAR_FIELD(typmod); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonFormat(const JsonFormat *a, const JsonFormat *b) { COMPARE_SCALAR_FIELD(format_type); COMPARE_SCALAR_FIELD(encoding); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonReturning(const JsonReturning *a, const JsonReturning *b) { COMPARE_NODE_FIELD(format); COMPARE_SCALAR_FIELD(typid); COMPARE_SCALAR_FIELD(typmod); return true; } static bool _equalJsonValueExpr(const JsonValueExpr *a, const JsonValueExpr *b) { COMPARE_NODE_FIELD(raw_expr); COMPARE_NODE_FIELD(formatted_expr); COMPARE_NODE_FIELD(format); return true; } static bool _equalJsonConstructorExpr(const JsonConstructorExpr *a, const JsonConstructorExpr *b) { COMPARE_SCALAR_FIELD(type); COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(func); COMPARE_NODE_FIELD(coercion); COMPARE_NODE_FIELD(returning); COMPARE_SCALAR_FIELD(absent_on_null); COMPARE_SCALAR_FIELD(unique); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonIsPredicate(const JsonIsPredicate *a, const JsonIsPredicate *b) { COMPARE_NODE_FIELD(expr); COMPARE_NODE_FIELD(format); COMPARE_SCALAR_FIELD(item_type); COMPARE_SCALAR_FIELD(unique_keys); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonBehavior(const JsonBehavior *a, const JsonBehavior *b) { COMPARE_SCALAR_FIELD(btype); COMPARE_NODE_FIELD(expr); COMPARE_SCALAR_FIELD(coerce); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonExpr(const JsonExpr *a, const JsonExpr *b) { COMPARE_SCALAR_FIELD(op); COMPARE_STRING_FIELD(column_name); COMPARE_NODE_FIELD(formatted_expr); COMPARE_NODE_FIELD(format); COMPARE_NODE_FIELD(path_spec); COMPARE_NODE_FIELD(returning); COMPARE_NODE_FIELD(passing_names); COMPARE_NODE_FIELD(passing_values); COMPARE_NODE_FIELD(on_empty); COMPARE_NODE_FIELD(on_error); COMPARE_SCALAR_FIELD(use_io_coercion); COMPARE_SCALAR_FIELD(use_json_coercion); COMPARE_SCALAR_FIELD(wrapper); COMPARE_SCALAR_FIELD(omit_quotes); COMPARE_SCALAR_FIELD(collation); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonTablePath(const JsonTablePath *a, const JsonTablePath *b) { COMPARE_NODE_FIELD(value); COMPARE_STRING_FIELD(name); return true; } static bool _equalJsonTablePathScan(const JsonTablePathScan *a, const JsonTablePathScan *b) { COMPARE_NODE_FIELD(path); COMPARE_SCALAR_FIELD(errorOnError); COMPARE_NODE_FIELD(child); COMPARE_SCALAR_FIELD(colMin); COMPARE_SCALAR_FIELD(colMax); return true; } static bool _equalJsonTableSiblingJoin(const JsonTableSiblingJoin *a, const JsonTableSiblingJoin *b) { COMPARE_NODE_FIELD(lplan); COMPARE_NODE_FIELD(rplan); 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 _equalMergeAction(const MergeAction *a, const MergeAction *b) { COMPARE_SCALAR_FIELD(matchKind); COMPARE_SCALAR_FIELD(commandType); COMPARE_SCALAR_FIELD(override); COMPARE_NODE_FIELD(qual); COMPARE_NODE_FIELD(targetList); COMPARE_NODE_FIELD(updateColnos); 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_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(join_using_alias); 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; } static bool _equalQuery(const Query *a, const Query *b) { COMPARE_SCALAR_FIELD(commandType); COMPARE_SCALAR_FIELD(querySource); 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_SCALAR_FIELD(isReturn); COMPARE_NODE_FIELD(cteList); COMPARE_NODE_FIELD(rtable); COMPARE_NODE_FIELD(rteperminfos); COMPARE_NODE_FIELD(jointree); COMPARE_NODE_FIELD(mergeActionList); COMPARE_SCALAR_FIELD(mergeTargetRelation); COMPARE_NODE_FIELD(mergeJoinCondition); COMPARE_NODE_FIELD(targetList); COMPARE_SCALAR_FIELD(override); COMPARE_NODE_FIELD(onConflict); COMPARE_NODE_FIELD(returningList); COMPARE_NODE_FIELD(groupClause); COMPARE_SCALAR_FIELD(groupDistinct); 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_LOCATION_FIELD(stmt_len); 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 _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 _equalA_Expr(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 _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 _equalRoleSpec(const RoleSpec *a, const RoleSpec *b) { COMPARE_SCALAR_FIELD(roletype); COMPARE_STRING_FIELD(rolename); 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_NODE_FIELD(over); COMPARE_SCALAR_FIELD(agg_within_group); COMPARE_SCALAR_FIELD(agg_star); COMPARE_SCALAR_FIELD(agg_distinct); COMPARE_SCALAR_FIELD(func_variadic); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalA_Star(const A_Star *a, const A_Star *b) { return true; } static bool _equalA_Indices(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 _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 _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 _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 _equalColumnDef(const ColumnDef *a, const ColumnDef *b) { COMPARE_STRING_FIELD(colname); COMPARE_NODE_FIELD(typeName); COMPARE_STRING_FIELD(compression); 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_STRING_FIELD(storage_name); 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 _equalTableLikeClause(const TableLikeClause *a, const TableLikeClause *b) { COMPARE_NODE_FIELD(relation); COMPARE_SCALAR_FIELD(options); COMPARE_SCALAR_FIELD(relationOid); 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 _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 _equalXmlSerialize(const XmlSerialize *a, const XmlSerialize *b) { COMPARE_SCALAR_FIELD(xmloption); COMPARE_NODE_FIELD(expr); COMPARE_NODE_FIELD(typeName); COMPARE_SCALAR_FIELD(indent); COMPARE_LOCATION_FIELD(location); 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_SCALAR_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 _equalSinglePartitionSpec(const SinglePartitionSpec *a, const SinglePartitionSpec *b) { return true; } static bool _equalPartitionCmd(const PartitionCmd *a, const PartitionCmd *b) { COMPARE_NODE_FIELD(name); COMPARE_NODE_FIELD(bound); COMPARE_SCALAR_FIELD(concurrent); return true; } static bool _equalRangeTblEntry(const RangeTblEntry *a, const RangeTblEntry *b) { COMPARE_NODE_FIELD(alias); COMPARE_NODE_FIELD(eref); COMPARE_SCALAR_FIELD(rtekind); COMPARE_SCALAR_FIELD(relid); COMPARE_SCALAR_FIELD(inh); COMPARE_SCALAR_FIELD(relkind); COMPARE_SCALAR_FIELD(rellockmode); COMPARE_SCALAR_FIELD(perminfoindex); 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(join_using_alias); 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_SCALAR_FIELD(lateral); COMPARE_SCALAR_FIELD(inFromCl); COMPARE_NODE_FIELD(securityQuals); return true; } static bool _equalRTEPermissionInfo(const RTEPermissionInfo *a, const RTEPermissionInfo *b) { COMPARE_SCALAR_FIELD(relid); COMPARE_SCALAR_FIELD(inh); COMPARE_SCALAR_FIELD(requiredPerms); COMPARE_SCALAR_FIELD(checkAsUser); COMPARE_BITMAPSET_FIELD(selectedCols); COMPARE_BITMAPSET_FIELD(insertedCols); COMPARE_BITMAPSET_FIELD(updatedCols); 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 _equalCTESearchClause(const CTESearchClause *a, const CTESearchClause *b) { COMPARE_NODE_FIELD(search_col_list); COMPARE_SCALAR_FIELD(search_breadth_first); COMPARE_STRING_FIELD(search_seq_column); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCTECycleClause(const CTECycleClause *a, const CTECycleClause *b) { COMPARE_NODE_FIELD(cycle_col_list); COMPARE_STRING_FIELD(cycle_mark_column); COMPARE_NODE_FIELD(cycle_mark_value); COMPARE_NODE_FIELD(cycle_mark_default); COMPARE_STRING_FIELD(cycle_path_column); COMPARE_LOCATION_FIELD(location); COMPARE_SCALAR_FIELD(cycle_mark_type); COMPARE_SCALAR_FIELD(cycle_mark_typmod); COMPARE_SCALAR_FIELD(cycle_mark_collation); COMPARE_SCALAR_FIELD(cycle_mark_neop); 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_NODE_FIELD(search_clause); COMPARE_NODE_FIELD(cycle_clause); 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 _equalMergeWhenClause(const MergeWhenClause *a, const MergeWhenClause *b) { COMPARE_SCALAR_FIELD(matchKind); COMPARE_SCALAR_FIELD(commandType); COMPARE_SCALAR_FIELD(override); COMPARE_NODE_FIELD(condition); COMPARE_NODE_FIELD(targetList); COMPARE_NODE_FIELD(values); 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 _equalJsonOutput(const JsonOutput *a, const JsonOutput *b) { COMPARE_NODE_FIELD(typeName); COMPARE_NODE_FIELD(returning); return true; } static bool _equalJsonArgument(const JsonArgument *a, const JsonArgument *b) { COMPARE_NODE_FIELD(val); COMPARE_STRING_FIELD(name); return true; } static bool _equalJsonFuncExpr(const JsonFuncExpr *a, const JsonFuncExpr *b) { COMPARE_SCALAR_FIELD(op); COMPARE_STRING_FIELD(column_name); COMPARE_NODE_FIELD(context_item); COMPARE_NODE_FIELD(pathspec); COMPARE_NODE_FIELD(passing); COMPARE_NODE_FIELD(output); COMPARE_NODE_FIELD(on_empty); COMPARE_NODE_FIELD(on_error); COMPARE_SCALAR_FIELD(wrapper); COMPARE_SCALAR_FIELD(quotes); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonTablePathSpec(const JsonTablePathSpec *a, const JsonTablePathSpec *b) { COMPARE_NODE_FIELD(string); COMPARE_STRING_FIELD(name); COMPARE_LOCATION_FIELD(name_location); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonTable(const JsonTable *a, const JsonTable *b) { COMPARE_NODE_FIELD(context_item); COMPARE_NODE_FIELD(pathspec); COMPARE_NODE_FIELD(passing); COMPARE_NODE_FIELD(columns); COMPARE_NODE_FIELD(on_error); COMPARE_NODE_FIELD(alias); COMPARE_SCALAR_FIELD(lateral); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonTableColumn(const JsonTableColumn *a, const JsonTableColumn *b) { COMPARE_SCALAR_FIELD(coltype); COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(typeName); COMPARE_NODE_FIELD(pathspec); COMPARE_NODE_FIELD(format); COMPARE_SCALAR_FIELD(wrapper); COMPARE_SCALAR_FIELD(quotes); COMPARE_NODE_FIELD(columns); COMPARE_NODE_FIELD(on_empty); COMPARE_NODE_FIELD(on_error); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonKeyValue(const JsonKeyValue *a, const JsonKeyValue *b) { COMPARE_NODE_FIELD(key); COMPARE_NODE_FIELD(value); return true; } static bool _equalJsonParseExpr(const JsonParseExpr *a, const JsonParseExpr *b) { COMPARE_NODE_FIELD(expr); COMPARE_NODE_FIELD(output); COMPARE_SCALAR_FIELD(unique_keys); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonScalarExpr(const JsonScalarExpr *a, const JsonScalarExpr *b) { COMPARE_NODE_FIELD(expr); COMPARE_NODE_FIELD(output); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonSerializeExpr(const JsonSerializeExpr *a, const JsonSerializeExpr *b) { COMPARE_NODE_FIELD(expr); COMPARE_NODE_FIELD(output); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonObjectConstructor(const JsonObjectConstructor *a, const JsonObjectConstructor *b) { COMPARE_NODE_FIELD(exprs); COMPARE_NODE_FIELD(output); COMPARE_SCALAR_FIELD(absent_on_null); COMPARE_SCALAR_FIELD(unique); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonArrayConstructor(const JsonArrayConstructor *a, const JsonArrayConstructor *b) { COMPARE_NODE_FIELD(exprs); COMPARE_NODE_FIELD(output); COMPARE_SCALAR_FIELD(absent_on_null); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonArrayQueryConstructor(const JsonArrayQueryConstructor *a, const JsonArrayQueryConstructor *b) { COMPARE_NODE_FIELD(query); COMPARE_NODE_FIELD(output); COMPARE_NODE_FIELD(format); COMPARE_SCALAR_FIELD(absent_on_null); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonAggConstructor(const JsonAggConstructor *a, const JsonAggConstructor *b) { COMPARE_NODE_FIELD(output); COMPARE_NODE_FIELD(agg_filter); COMPARE_NODE_FIELD(agg_order); COMPARE_NODE_FIELD(over); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalJsonObjectAgg(const JsonObjectAgg *a, const JsonObjectAgg *b) { COMPARE_NODE_FIELD(constructor); COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(absent_on_null); COMPARE_SCALAR_FIELD(unique); return true; } static bool _equalJsonArrayAgg(const JsonArrayAgg *a, const JsonArrayAgg *b) { COMPARE_NODE_FIELD(constructor); COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(absent_on_null); return true; } static bool _equalRawStmt(const RawStmt *a, const RawStmt *b) { COMPARE_NODE_FIELD(stmt); COMPARE_LOCATION_FIELD(stmt_location); COMPARE_LOCATION_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 _equalMergeStmt(const MergeStmt *a, const MergeStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(sourceRelation); COMPARE_NODE_FIELD(joinCondition); COMPARE_NODE_FIELD(mergeWhenClauses); 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_SCALAR_FIELD(groupDistinct); 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 _equalReturnStmt(const ReturnStmt *a, const ReturnStmt *b) { COMPARE_NODE_FIELD(returnval); return true; } static bool _equalPLAssignStmt(const PLAssignStmt *a, const PLAssignStmt *b) { COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(indirection); COMPARE_SCALAR_FIELD(nnames); COMPARE_NODE_FIELD(val); COMPARE_LOCATION_FIELD(location); 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 _equalAlterTableStmt(const AlterTableStmt *a, const AlterTableStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(cmds); COMPARE_SCALAR_FIELD(objtype); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalReplicaIdentityStmt(const ReplicaIdentityStmt *a, const ReplicaIdentityStmt *b) { COMPARE_SCALAR_FIELD(identity_type); COMPARE_STRING_FIELD(name); 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); COMPARE_SCALAR_FIELD(recurse); 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_NODE_FIELD(grantor); COMPARE_SCALAR_FIELD(behavior); return true; } static bool _equalObjectWithArgs(const ObjectWithArgs *a, const ObjectWithArgs *b) { COMPARE_NODE_FIELD(objname); COMPARE_NODE_FIELD(objargs); COMPARE_NODE_FIELD(objfuncargs); 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_NODE_FIELD(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 _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 _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 _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 _equalConstraint(const Constraint *a, const Constraint *b) { COMPARE_SCALAR_FIELD(contype); COMPARE_STRING_FIELD(conname); COMPARE_SCALAR_FIELD(deferrable); COMPARE_SCALAR_FIELD(initdeferred); COMPARE_SCALAR_FIELD(skip_validation); COMPARE_SCALAR_FIELD(initially_valid); COMPARE_SCALAR_FIELD(is_no_inherit); COMPARE_NODE_FIELD(raw_expr); COMPARE_STRING_FIELD(cooked_expr); COMPARE_SCALAR_FIELD(generated_when); COMPARE_SCALAR_FIELD(inhcount); COMPARE_SCALAR_FIELD(nulls_not_distinct); 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(fk_del_set_cols); COMPARE_NODE_FIELD(old_conpfeqop); COMPARE_SCALAR_FIELD(old_pktable_oid); COMPARE_LOCATION_FIELD(location); 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 _equalCreateForeignTableStmt(const CreateForeignTableStmt *a, const CreateForeignTableStmt *b) { COMPARE_NODE_FIELD(base.relation); COMPARE_NODE_FIELD(base.tableElts); COMPARE_NODE_FIELD(base.inhRelations); COMPARE_NODE_FIELD(base.partbound); COMPARE_NODE_FIELD(base.partspec); COMPARE_NODE_FIELD(base.ofTypename); COMPARE_NODE_FIELD(base.constraints); COMPARE_NODE_FIELD(base.options); COMPARE_SCALAR_FIELD(base.oncommit); COMPARE_STRING_FIELD(base.tablespacename); COMPARE_STRING_FIELD(base.accessMethod); COMPARE_SCALAR_FIELD(base.if_not_exists); COMPARE_STRING_FIELD(servername); COMPARE_NODE_FIELD(options); 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 _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 _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 _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_SCALAR_FIELD(replace); COMPARE_SCALAR_FIELD(isconstraint); 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_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 _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 _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 _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 _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 _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 _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(oldNumber); COMPARE_SCALAR_FIELD(oldCreateSubid); COMPARE_SCALAR_FIELD(oldFirstRelfilelocatorSubid); COMPARE_SCALAR_FIELD(unique); COMPARE_SCALAR_FIELD(nulls_not_distinct); 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(transformed); COMPARE_SCALAR_FIELD(if_not_exists); return true; } static bool _equalStatsElem(const StatsElem *a, const StatsElem *b) { COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(expr); return true; } static bool _equalAlterStatsStmt(const AlterStatsStmt *a, const AlterStatsStmt *b) { COMPARE_NODE_FIELD(defnames); COMPARE_NODE_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); COMPARE_NODE_FIELD(sql_body); 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 _equalCallStmt(const CallStmt *a, const CallStmt *b) { COMPARE_NODE_FIELD(funccall); COMPARE_NODE_FIELD(funcexpr); COMPARE_NODE_FIELD(outargs); 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); COMPARE_LOCATION_FIELD(location); 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 _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 _equalAlterDatabaseRefreshCollStmt(const AlterDatabaseRefreshCollStmt *a, const AlterDatabaseRefreshCollStmt *b) { COMPARE_STRING_FIELD(dbname); 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 _equalAlterSystemStmt(const AlterSystemStmt *a, const AlterSystemStmt *b) { COMPARE_NODE_FIELD(setstmt); return true; } static bool _equalClusterStmt(const ClusterStmt *a, const ClusterStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_STRING_FIELD(indexname); COMPARE_NODE_FIELD(params); 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(objtype); 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 _equalCheckPointStmt(const CheckPointStmt *a, const CheckPointStmt *b) { return true; } static bool _equalDiscardStmt(const DiscardStmt *a, const DiscardStmt *b) { COMPARE_SCALAR_FIELD(target); 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_NODE_FIELD(params); 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 _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 _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); COMPARE_SCALAR_FIELD(isall); COMPARE_LOCATION_FIELD(location); 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 _equalPublicationTable(const PublicationTable *a, const PublicationTable *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(whereClause); COMPARE_NODE_FIELD(columns); return true; } static bool _equalPublicationObjSpec(const PublicationObjSpec *a, const PublicationObjSpec *b) { COMPARE_SCALAR_FIELD(pubobjtype); COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(pubtable); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCreatePublicationStmt(const CreatePublicationStmt *a, const CreatePublicationStmt *b) { COMPARE_STRING_FIELD(pubname); COMPARE_NODE_FIELD(options); COMPARE_NODE_FIELD(pubobjects); 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(pubobjects); COMPARE_SCALAR_FIELD(for_all_tables); COMPARE_SCALAR_FIELD(action); 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 _equalPathKey(const PathKey *a, const PathKey *b) { 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 _equalGroupByOrdering(const GroupByOrdering *a, const GroupByOrdering *b) { COMPARE_NODE_FIELD(pathkeys); COMPARE_NODE_FIELD(clauses); return true; } static bool _equalRestrictInfo(const RestrictInfo *a, const RestrictInfo *b) { COMPARE_NODE_FIELD(clause); COMPARE_SCALAR_FIELD(is_pushed_down); COMPARE_SCALAR_FIELD(has_clone); COMPARE_SCALAR_FIELD(is_clone); COMPARE_SCALAR_FIELD(security_level); COMPARE_BITMAPSET_FIELD(required_relids); COMPARE_BITMAPSET_FIELD(incompatible_relids); COMPARE_BITMAPSET_FIELD(outer_relids); COMPARE_SCALAR_FIELD(rinfo_serial); return true; } static bool _equalPlaceHolderVar(const PlaceHolderVar *a, const PlaceHolderVar *b) { COMPARE_BITMAPSET_FIELD(phnullingrels); 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(ojrelid); COMPARE_BITMAPSET_FIELD(commute_above_l); COMPARE_BITMAPSET_FIELD(commute_above_r); COMPARE_BITMAPSET_FIELD(commute_below_l); COMPARE_BITMAPSET_FIELD(commute_below_r); COMPARE_SCALAR_FIELD(lhs_strict); 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); COMPARE_BITMAPSET_FIELD(ph_eval_at); COMPARE_BITMAPSET_FIELD(ph_lateral); COMPARE_BITMAPSET_FIELD(ph_needed); COMPARE_SCALAR_FIELD(ph_width); return true; } static bool _equalInteger(const Integer *a, const Integer *b) { COMPARE_SCALAR_FIELD(ival); return true; } static bool _equalFloat(const Float *a, const Float *b) { COMPARE_STRING_FIELD(fval); return true; } static bool _equalBoolean(const Boolean *a, const Boolean *b) { COMPARE_SCALAR_FIELD(boolval); return true; } static bool _equalString(const String *a, const String *b) { COMPARE_STRING_FIELD(sval); return true; } static bool _equalBitString(const BitString *a, const BitString *b) { COMPARE_STRING_FIELD(bsval); return true; } libpg_query-17-6.1.0/src/postgres/include/equalfuncs.switch.c000066400000000000000000000503121477334012600241670ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * equalfuncs.switch.c * Generated node infrastructure code * * Portions Copyright (c) 1996-2024, 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/nodes/gen_node_support.pl * *------------------------------------------------------------------------- */ 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_WindowFuncRunCondition: retval = _equalWindowFuncRunCondition(a, b); break; case T_MergeSupportFunc: retval = _equalMergeSupportFunc(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_JsonFormat: retval = _equalJsonFormat(a, b); break; case T_JsonReturning: retval = _equalJsonReturning(a, b); break; case T_JsonValueExpr: retval = _equalJsonValueExpr(a, b); break; case T_JsonConstructorExpr: retval = _equalJsonConstructorExpr(a, b); break; case T_JsonIsPredicate: retval = _equalJsonIsPredicate(a, b); break; case T_JsonBehavior: retval = _equalJsonBehavior(a, b); break; case T_JsonExpr: retval = _equalJsonExpr(a, b); break; case T_JsonTablePath: retval = _equalJsonTablePath(a, b); break; case T_JsonTablePathScan: retval = _equalJsonTablePathScan(a, b); break; case T_JsonTableSiblingJoin: retval = _equalJsonTableSiblingJoin(a, b); break; case T_NullTest: retval = _equalNullTest(a, b); break; case T_BooleanTest: retval = _equalBooleanTest(a, b); break; case T_MergeAction: retval = _equalMergeAction(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_JoinExpr: retval = _equalJoinExpr(a, b); break; case T_FromExpr: retval = _equalFromExpr(a, b); break; case T_OnConflictExpr: retval = _equalOnConflictExpr(a, b); break; case T_Query: retval = _equalQuery(a, b); break; case T_TypeName: retval = _equalTypeName(a, b); break; case T_ColumnRef: retval = _equalColumnRef(a, b); break; case T_ParamRef: retval = _equalParamRef(a, b); break; case T_A_Expr: retval = _equalA_Expr(a, b); break; case T_A_Const: retval = _equalA_Const(a, b); break; case T_TypeCast: retval = _equalTypeCast(a, b); break; case T_CollateClause: retval = _equalCollateClause(a, b); break; case T_RoleSpec: retval = _equalRoleSpec(a, b); break; case T_FuncCall: retval = _equalFuncCall(a, b); break; case T_A_Star: retval = _equalA_Star(a, b); break; case T_A_Indices: retval = _equalA_Indices(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_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_RangeTableFunc: retval = _equalRangeTableFunc(a, b); break; case T_RangeTableFuncCol: retval = _equalRangeTableFuncCol(a, b); break; case T_RangeTableSample: retval = _equalRangeTableSample(a, b); break; case T_ColumnDef: retval = _equalColumnDef(a, b); break; case T_TableLikeClause: retval = _equalTableLikeClause(a, b); break; case T_IndexElem: retval = _equalIndexElem(a, b); break; case T_DefElem: retval = _equalDefElem(a, b); break; case T_LockingClause: retval = _equalLockingClause(a, b); break; case T_XmlSerialize: retval = _equalXmlSerialize(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_SinglePartitionSpec: retval = _equalSinglePartitionSpec(a, b); break; case T_PartitionCmd: retval = _equalPartitionCmd(a, b); break; case T_RangeTblEntry: retval = _equalRangeTblEntry(a, b); break; case T_RTEPermissionInfo: retval = _equalRTEPermissionInfo(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_CTESearchClause: retval = _equalCTESearchClause(a, b); break; case T_CTECycleClause: retval = _equalCTECycleClause(a, b); break; case T_CommonTableExpr: retval = _equalCommonTableExpr(a, b); break; case T_MergeWhenClause: retval = _equalMergeWhenClause(a, b); break; case T_TriggerTransition: retval = _equalTriggerTransition(a, b); break; case T_JsonOutput: retval = _equalJsonOutput(a, b); break; case T_JsonArgument: retval = _equalJsonArgument(a, b); break; case T_JsonFuncExpr: retval = _equalJsonFuncExpr(a, b); break; case T_JsonTablePathSpec: retval = _equalJsonTablePathSpec(a, b); break; case T_JsonTable: retval = _equalJsonTable(a, b); break; case T_JsonTableColumn: retval = _equalJsonTableColumn(a, b); break; case T_JsonKeyValue: retval = _equalJsonKeyValue(a, b); break; case T_JsonParseExpr: retval = _equalJsonParseExpr(a, b); break; case T_JsonScalarExpr: retval = _equalJsonScalarExpr(a, b); break; case T_JsonSerializeExpr: retval = _equalJsonSerializeExpr(a, b); break; case T_JsonObjectConstructor: retval = _equalJsonObjectConstructor(a, b); break; case T_JsonArrayConstructor: retval = _equalJsonArrayConstructor(a, b); break; case T_JsonArrayQueryConstructor: retval = _equalJsonArrayQueryConstructor(a, b); break; case T_JsonAggConstructor: retval = _equalJsonAggConstructor(a, b); break; case T_JsonObjectAgg: retval = _equalJsonObjectAgg(a, b); break; case T_JsonArrayAgg: retval = _equalJsonArrayAgg(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_MergeStmt: retval = _equalMergeStmt(a, b); break; case T_SelectStmt: retval = _equalSelectStmt(a, b); break; case T_SetOperationStmt: retval = _equalSetOperationStmt(a, b); break; case T_ReturnStmt: retval = _equalReturnStmt(a, b); break; case T_PLAssignStmt: retval = _equalPLAssignStmt(a, b); break; case T_CreateSchemaStmt: retval = _equalCreateSchemaStmt(a, b); break; case T_AlterTableStmt: retval = _equalAlterTableStmt(a, b); break; case T_ReplicaIdentityStmt: retval = _equalReplicaIdentityStmt(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_ObjectWithArgs: retval = _equalObjectWithArgs(a, b); break; case T_AccessPriv: retval = _equalAccessPriv(a, b); break; case T_GrantRoleStmt: retval = _equalGrantRoleStmt(a, b); break; case T_AlterDefaultPrivilegesStmt: retval = _equalAlterDefaultPrivilegesStmt(a, b); break; case T_CopyStmt: retval = _equalCopyStmt(a, b); break; case T_VariableSetStmt: retval = _equalVariableSetStmt(a, b); break; case T_VariableShowStmt: retval = _equalVariableShowStmt(a, b); break; case T_CreateStmt: retval = _equalCreateStmt(a, b); break; case T_Constraint: retval = _equalConstraint(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_CreateForeignTableStmt: retval = _equalCreateForeignTableStmt(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_ImportForeignSchemaStmt: retval = _equalImportForeignSchemaStmt(a, b); break; case T_CreatePolicyStmt: retval = _equalCreatePolicyStmt(a, b); break; case T_AlterPolicyStmt: retval = _equalAlterPolicyStmt(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_CreateSeqStmt: retval = _equalCreateSeqStmt(a, b); break; case T_AlterSeqStmt: retval = _equalAlterSeqStmt(a, b); break; case T_DefineStmt: retval = _equalDefineStmt(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_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_DeclareCursorStmt: retval = _equalDeclareCursorStmt(a, b); break; case T_ClosePortalStmt: retval = _equalClosePortalStmt(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_StatsElem: retval = _equalStatsElem(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_CallStmt: retval = _equalCallStmt(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_CreatedbStmt: retval = _equalCreatedbStmt(a, b); break; case T_AlterDatabaseStmt: retval = _equalAlterDatabaseStmt(a, b); break; case T_AlterDatabaseRefreshCollStmt: retval = _equalAlterDatabaseRefreshCollStmt(a, b); break; case T_AlterDatabaseSetStmt: retval = _equalAlterDatabaseSetStmt(a, b); break; case T_DropdbStmt: retval = _equalDropdbStmt(a, b); break; case T_AlterSystemStmt: retval = _equalAlterSystemStmt(a, b); break; case T_ClusterStmt: retval = _equalClusterStmt(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_CheckPointStmt: retval = _equalCheckPointStmt(a, b); break; case T_DiscardStmt: retval = _equalDiscardStmt(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_CreateConversionStmt: retval = _equalCreateConversionStmt(a, b); break; case T_CreateCastStmt: retval = _equalCreateCastStmt(a, b); break; case T_CreateTransformStmt: retval = _equalCreateTransformStmt(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_PublicationTable: retval = _equalPublicationTable(a, b); break; case T_PublicationObjSpec: retval = _equalPublicationObjSpec(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_PathKey: retval = _equalPathKey(a, b); break; case T_GroupByOrdering: retval = _equalGroupByOrdering(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_Bitmapset: retval = _equalBitmapset(a, b); break; case T_ExtensibleNode: retval = _equalExtensibleNode(a, b); break; case T_Integer: retval = _equalInteger(a, b); break; case T_Float: retval = _equalFloat(a, b); break; case T_Boolean: retval = _equalBoolean(a, b); break; case T_String: retval = _equalString(a, b); break; case T_BitString: retval = _equalBitString(a, b); break; libpg_query-17-6.1.0/src/postgres/include/executor/000077500000000000000000000000001477334012600222125ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/executor/execdesc.h000066400000000000000000000045311477334012600241510ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * execdesc.h * plan and query descriptor accessor macros used by the executor * and related modules. * * * Portions Copyright (c) 1996-2024, 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 ExecutePlan */ 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-17-6.1.0/src/postgres/include/executor/executor.h000066400000000000000000000635331477334012600242330ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * executor.h * support for the POSTGRES executor module * * * Portions Copyright (c) 1996-2024, 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. * * EXPLAIN_GENERIC can only be used together with EXPLAIN_ONLY. It indicates * that a generic plan is being shown using EXPLAIN (GENERIC_PLAN), which * means that missing parameter values must be tolerated. Currently, the only * effect is to suppress execution-time partition pruning. * * 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. * * WITH_NO_DATA indicates that we are performing REFRESH MATERIALIZED VIEW * ... WITH NO DATA. Currently, the only effect is to suppress errors about * scanning unpopulated materialized views. */ #define EXEC_FLAG_EXPLAIN_ONLY 0x0001 /* EXPLAIN, no ANALYZE */ #define EXEC_FLAG_EXPLAIN_GENERIC 0x0002 /* EXPLAIN (GENERIC_PLAN) */ #define EXEC_FLAG_REWIND 0x0004 /* need efficient rescan */ #define EXEC_FLAG_BACKWARD 0x0008 /* need backward scan */ #define EXEC_FLAG_MARK 0x0010 /* need mark/restore */ #define EXEC_FLAG_SKIP_TRIGGERS 0x0020 /* skip AfterTrigger setup */ #define EXEC_FLAG_WITH_NO_DATA 0x0040 /* REFRESH ... WITH NO DATA */ /* 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 ExecCheckPermissions() */ typedef bool (*ExecutorCheckPerms_hook_type) (List *rangeTable, List *rtePermInfos, bool ereport_on_violation); 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 *ExecInitJunkFilterConversion(List *targetList, TupleDesc cleanTupType, TupleTableSlot *slot); extern AttrNumber ExecFindJunkAttribute(JunkFilter *junkfilter, const char *attrName); extern AttrNumber ExecFindJunkAttributeInTlist(List *targetlist, const char *attrName); extern TupleTableSlot *ExecFilterJunk(JunkFilter *junkfilter, TupleTableSlot *slot); /* * ExecGetJunkAttribute * * Given a junk filter's input tuple (slot) and a junk attribute's number * previously found by ExecFindJunkAttribute, extract & return the value and * isNull flag of the attribute. */ #ifndef FRONTEND static inline Datum ExecGetJunkAttribute(TupleTableSlot *slot, AttrNumber attno, bool *isNull) { Assert(attno > 0); return slot_getattr(slot, attno, isNull); } #endif /* * 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 ExecCheckPermissions(List *rangeTable, List *rteperminfos, bool ereport_on_violation); extern void CheckValidResultRel(ResultRelInfo *resultRelInfo, CmdType operation, List *mergeActions); extern void InitResultRelInfo(ResultRelInfo *resultRelInfo, Relation resultRelationDesc, Index resultRelationIndex, ResultRelInfo *partition_root_rri, int instrument_options); extern ResultRelInfo *ExecGetTriggerResultRel(EState *estate, Oid relid, ResultRelInfo *rootRelInfo); extern List *ExecGetAncestorResultRels(EState *estate, ResultRelInfo *resultRelInfo); 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 *inputslot); extern void EvalPlanQualInit(EPQState *epqstate, EState *parentestate, Plan *subplan, List *auxrowmarks, int epqParam, List *resultRelations); 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 void 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 ExprState *ExecBuildParamSetEqual(TupleDesc desc, const TupleTableSlotOps *lops, const TupleTableSlotOps *rops, const Oid *eqfunctions, const Oid *collations, const List *param_exprs, PlanState *parent); extern ProjectionInfo *ExecBuildProjectionInfo(List *targetList, ExprContext *econtext, TupleTableSlot *slot, PlanState *parent, TupleDesc inputDesc); extern ProjectionInfo *ExecBuildUpdateProjection(List *targetList, bool evalTargetList, List *targetColnos, TupleDesc relDesc, ExprContext *econtext, TupleTableSlot *slot, PlanState *parent); 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 *econtext); /* * 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, int 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, const Datum *values, const 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, int varno); 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, List *permInfos); extern void ExecCloseRangeTableRelations(EState *estate); extern void ExecCloseResultRelations(EState *estate); 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 void ExecInitResultRelation(EState *estate, ResultRelInfo *resultRelInfo, 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 TupleConversionMap *ExecGetChildToRootMap(ResultRelInfo *resultRelInfo); extern TupleConversionMap *ExecGetRootToChildMap(ResultRelInfo *resultRelInfo, EState *estate); extern Oid ExecGetResultRelCheckAsUser(ResultRelInfo *relInfo, EState *estate); 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(ResultRelInfo *resultRelInfo, TupleTableSlot *slot, EState *estate, bool update, bool noDupErr, bool *specConflict, List *arbiterIndexes, bool onlySummarizing); extern bool ExecCheckIndexConstraints(ResultRelInfo *resultRelInfo, TupleTableSlot *slot, EState *estate, ItemPointer conflictTid, List *arbiterIndexes); extern void check_exclusion_constraint(Relation heap, Relation index, IndexInfo *indexInfo, ItemPointer tupleid, const Datum *values, const bool *isnull, EState *estate, bool newIndex); /* * prototypes from functions in execReplication.c */ extern StrategyNumber get_equal_strategy_number_for_am(Oid am); 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(ResultRelInfo *resultRelInfo, EState *estate, TupleTableSlot *slot); extern void ExecSimpleRelationUpdate(ResultRelInfo *resultRelInfo, EState *estate, EPQState *epqstate, TupleTableSlot *searchslot, TupleTableSlot *slot); extern void ExecSimpleRelationDelete(ResultRelInfo *resultRelInfo, EState *estate, EPQState *epqstate, TupleTableSlot *searchslot); extern void CheckCmdReplicaIdentity(Relation rel, CmdType cmd); extern void CheckSubscriptionRelkind(char relkind, const char *nspname, const char *relname); /* * prototypes from functions in nodeModifyTable.c */ extern TupleTableSlot *ExecGetUpdateNewTuple(ResultRelInfo *relinfo, TupleTableSlot *planSlot, TupleTableSlot *oldSlot); extern ResultRelInfo *ExecLookupResultRelByOid(ModifyTableState *node, Oid resultoid, bool missing_ok, bool update_cache); #endif /* EXECUTOR_H */ libpg_query-17-6.1.0/src/postgres/include/executor/functions.h000066400000000000000000000034721477334012600244010ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * functions.h * Declarations for execution of SQL-language functions. * * * Portions Copyright (c) 1996-2024, 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" /* * Data structure needed by the parser callback hooks to resolve parameter * references during parsing of a SQL function's body. This is separate from * SQLFunctionCache since we sometimes do parsing separately from execution. */ typedef struct SQLFunctionParseInfo { char *fname; /* function's name */ int nargs; /* number of input arguments */ Oid *argtypes; /* resolved types of input arguments */ char **argnames; /* names of input arguments; NULL if none */ /* Note that argnames[i] can be NULL, if some args are unnamed */ Oid collation; /* function's input collation, if known */ } SQLFunctionParseInfo; typedef 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, char prokind, bool insertDroppedCols, List **resultTargetList); extern DestReceiver *CreateSQLFunctionDestReceiver(void); #endif /* FUNCTIONS_H */ libpg_query-17-6.1.0/src/postgres/include/executor/instrument.h000066400000000000000000000120321477334012600245710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * instrument.h * definitions for run-time statistics collection * * * Copyright (c) 2001-2024, PostgreSQL Global Development Group * * src/include/executor/instrument.h * *------------------------------------------------------------------------- */ #ifndef INSTRUMENT_H #define INSTRUMENT_H #include "portability/instr_time.h" /* * BufferUsage and WalUsage counters keep being incremented infinitely, * i.e., must never be reset to zero, so that we can calculate how much * the counters are incremented in an arbitrary period. */ typedef struct BufferUsage { int64 shared_blks_hit; /* # of shared buffer hits */ int64 shared_blks_read; /* # of shared disk blocks read */ int64 shared_blks_dirtied; /* # of shared blocks dirtied */ int64 shared_blks_written; /* # of shared disk blocks written */ int64 local_blks_hit; /* # of local buffer hits */ int64 local_blks_read; /* # of local disk blocks read */ int64 local_blks_dirtied; /* # of local blocks dirtied */ int64 local_blks_written; /* # of local disk blocks written */ int64 temp_blks_read; /* # of temp blocks read */ int64 temp_blks_written; /* # of temp blocks written */ instr_time shared_blk_read_time; /* time spent reading shared blocks */ instr_time shared_blk_write_time; /* time spent writing shared blocks */ instr_time local_blk_read_time; /* time spent reading local blocks */ instr_time local_blk_write_time; /* time spent writing local blocks */ instr_time temp_blk_read_time; /* time spent reading temp blocks */ instr_time temp_blk_write_time; /* time spent writing temp blocks */ } BufferUsage; /* * WalUsage tracks only WAL activity like WAL records generation that * can be measured per query and is displayed by EXPLAIN command, * pg_stat_statements extension, etc. It does not track other WAL activity * like WAL writes that it's not worth measuring per query. That's tracked * by WAL global statistics counters in WalStats, instead. */ typedef struct WalUsage { int64 wal_records; /* # of WAL records produced */ int64 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 */ bool async_mode; /* true if node is in async mode */ /* 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, bool async_mode); extern void InstrInit(Instrumentation *instr, int instrument_options); extern void InstrStartNode(Instrumentation *instr); extern void InstrStopNode(Instrumentation *instr, double nTuples); extern void InstrUpdateTupleCount(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-17-6.1.0/src/postgres/include/executor/spi.h000066400000000000000000000167601477334012600231700ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * spi.h * Server Programming Interface public declarations * * Portions Copyright (c) 1996-2024, 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 "parser/parser.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; /* Optional arguments for SPI_prepare_extended */ typedef struct SPIPrepareOptions { ParserSetupHook parserSetup; void *parserSetupArg; RawParseMode parseMode; int cursorOptions; } SPIPrepareOptions; /* Optional arguments for SPI_execute[_plan]_extended */ typedef struct SPIExecuteOptions { ParamListInfo params; bool read_only; bool allow_nonatomic; bool must_return_tuples; uint64 tcount; DestReceiver *dest; ResourceOwner owner; } SPIExecuteOptions; /* Optional arguments for SPI_cursor_parse_open */ typedef struct SPIParseOpenOptions { ParamListInfo params; int cursorOptions; bool read_only; } SPIParseOpenOptions; /* 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_OK_MERGE 18 #define SPI_OK_MERGE_RETURNING 19 #define SPI_OPT_NONATOMIC (1 << 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_extended(const char *src, const SPIExecuteOptions *options); extern int SPI_execute_plan(SPIPlanPtr plan, Datum *Values, const char *Nulls, bool read_only, long tcount); extern int SPI_execute_plan_extended(SPIPlanPtr plan, const SPIExecuteOptions *options); 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_extended(const char *src, const SPIPrepareOptions *options); 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 tuple); 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_parse_open(const char *name, const char *src, const SPIParseOpenOptions *options); 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 AtEOXact_SPI(bool isCommit); extern void AtEOSubXact_SPI(bool isCommit, SubTransactionId mySubid); extern bool SPI_inside_nonatomic_context(void); #endif /* SPI_H */ libpg_query-17-6.1.0/src/postgres/include/executor/tablefunc.h000066400000000000000000000054421477334012600243330ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tablefunc.h * interface for TableFunc executor node * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/executor/tuptable.h000066400000000000000000000440231477334012600242060ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tuptable.h * tuple table support stuff * * * Portions Copyright (c) 1996-2024, 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". * * 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_FLAG_SHOULDFREE should not be set in tts_flags and * tts_nvalid should be set to 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_FLAG_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); /* * Check if the tuple is created by the current transaction. Throws an * error if the slot doesn't contain the storage tuple. */ bool (*is_current_xact_tuple) (TupleTableSlot *slot); /* * 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. 'dstslot' and * 'srcslot' can be assumed to have the same number of attributes. */ 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 { pg_node_attr(abstract) TupleTableSlot base; char *data; /* data for materialized slots */ } VirtualTupleTableSlot; typedef struct HeapTupleTableSlot { pg_node_attr(abstract) 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 { pg_node_attr(abstract) 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 base.tuple is pointing into the buffer.) */ Buffer buffer; /* tuple's buffer, or InvalidBuffer */ } BufferHeapTupleTableSlot; typedef struct MinimalTupleTableSlot { pg_node_attr(abstract) 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) { Assert(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) { Assert(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) { Assert(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); } /* * slot_is_current_xact_tuple - check if the slot's current tuple is created * by the current transaction. * * If the slot does not contain a storage tuple, this will throw an error. * Hence before calling this function, callers should make sure that the * slot type supports storage tuples and that there is currently one inside * the slot. */ static inline bool slot_is_current_xact_tuple(TupleTableSlot *slot) { return slot->tts_ops->is_current_xact_tuple(slot); } /* * 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. * * Currently, 'dstslot' and 'srcslot' must have the same number of attributes. * Future work could see this relaxed to allow the source to contain * additional attributes and have the code here only copy over the leading * attributes. */ static inline TupleTableSlot * ExecCopySlot(TupleTableSlot *dstslot, TupleTableSlot *srcslot) { Assert(!TTS_EMPTY(srcslot)); Assert(srcslot != dstslot); Assert(dstslot->tts_tupleDescriptor->natts == srcslot->tts_tupleDescriptor->natts); dstslot->tts_ops->copyslot(dstslot, srcslot); return dstslot; } #endif /* FRONTEND */ #endif /* TUPTABLE_H */ libpg_query-17-6.1.0/src/postgres/include/fmgr.h000066400000000000000000001054771477334012600214760ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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)) #define PG_GETARG_TRANSACTIONID(n) DatumGetTransactionId(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) #define PG_RETURN_TRANSACTIONID(x) return TransactionIdGetDatum(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 PGDLLEXPORT 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 /* * Declare _PG_init/_PG_fini centrally. Historically each shared library had * its own declaration; but now that we want to mark these PGDLLEXPORT, using * central declarations avoids each extension having to add that. Any * existing declarations in extensions will continue to work if fmgr.h is * included before them, otherwise compilation for Windows will fail. */ extern PGDLLEXPORT void _PG_init(void); extern PGDLLEXPORT void _PG_fini(void); /*------------------------------------------------------------------------- * 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 */ char abi_extra[32]; /* see pg_config_manual.h */ } 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, \ FMGR_ABI_EXTRA, \ } StaticAssertDecl(sizeof(FMGR_ABI_EXTRA) <= sizeof(((Pg_magic_struct *) 0)->abi_extra), "FMGR_ABI_EXTRA too long"); /* * 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 bool InputFunctionCallSafe(FmgrInfo *flinfo, char *str, Oid typioparam, int32 typmod, fmNodePtr escontext, Datum *result); extern bool DirectInputFunctionCallSafe(PGFunction func, char *str, Oid typioparam, int32 typmod, fmNodePtr escontext, Datum *result); 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 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 PGDLLIMPORT char *Dynamic_library_path; extern void *load_external_function(const char *filename, const char *funcname, bool signalNotFound, void **filehandle); extern void *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-17-6.1.0/src/postgres/include/foreign/000077500000000000000000000000001477334012600220055ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/foreign/fdwapi.h000066400000000000000000000247521477334012600234420ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fdwapi.h * API for foreign-data wrappers * * Copyright (c) 2010-2024, PostgreSQL Global Development Group * * src/include/foreign/fdwapi.h * *------------------------------------------------------------------------- */ #ifndef FDWAPI_H #define FDWAPI_H #include "access/parallel.h" #include "nodes/execnodes.h" #include "nodes/pathnodes.h" /* To avoid including explain.h here, reference ExplainState thus: */ struct ExplainState; /* * Callback function signatures --- see fdwhandler.sgml for more info. */ typedef void (*GetForeignRelSize_function) (PlannerInfo *root, RelOptInfo *baserel, Oid foreigntableid); typedef void (*GetForeignPaths_function) (PlannerInfo *root, RelOptInfo *baserel, Oid foreigntableid); typedef ForeignScan *(*GetForeignPlan_function) (PlannerInfo *root, RelOptInfo *baserel, Oid foreigntableid, ForeignPath *best_path, List *tlist, List *scan_clauses, Plan *outer_plan); typedef void (*BeginForeignScan_function) (ForeignScanState *node, int eflags); typedef TupleTableSlot *(*IterateForeignScan_function) (ForeignScanState *node); typedef bool (*RecheckForeignScan_function) (ForeignScanState *node, TupleTableSlot *slot); typedef void (*ReScanForeignScan_function) (ForeignScanState *node); typedef void (*EndForeignScan_function) (ForeignScanState *node); typedef void (*GetForeignJoinPaths_function) (PlannerInfo *root, RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel, JoinType jointype, JoinPathExtraData *extra); typedef void (*GetForeignUpperPaths_function) (PlannerInfo *root, UpperRelationKind stage, RelOptInfo *input_rel, RelOptInfo *output_rel, void *extra); typedef void (*AddForeignUpdateTargets_function) (PlannerInfo *root, Index rtindex, RangeTblEntry *target_rte, Relation target_relation); typedef List *(*PlanForeignModify_function) (PlannerInfo *root, ModifyTable *plan, Index resultRelation, int subplan_index); typedef void (*BeginForeignModify_function) (ModifyTableState *mtstate, ResultRelInfo *rinfo, List *fdw_private, int subplan_index, int eflags); typedef TupleTableSlot *(*ExecForeignInsert_function) (EState *estate, ResultRelInfo *rinfo, TupleTableSlot *slot, TupleTableSlot *planSlot); typedef TupleTableSlot **(*ExecForeignBatchInsert_function) (EState *estate, ResultRelInfo *rinfo, TupleTableSlot **slots, TupleTableSlot **planSlots, int *numSlots); typedef int (*GetForeignModifyBatchSize_function) (ResultRelInfo *rinfo); typedef TupleTableSlot *(*ExecForeignUpdate_function) (EState *estate, ResultRelInfo *rinfo, TupleTableSlot *slot, TupleTableSlot *planSlot); typedef TupleTableSlot *(*ExecForeignDelete_function) (EState *estate, ResultRelInfo *rinfo, TupleTableSlot *slot, TupleTableSlot *planSlot); typedef void (*EndForeignModify_function) (EState *estate, ResultRelInfo *rinfo); typedef void (*BeginForeignInsert_function) (ModifyTableState *mtstate, ResultRelInfo *rinfo); typedef void (*EndForeignInsert_function) (EState *estate, ResultRelInfo *rinfo); typedef int (*IsForeignRelUpdatable_function) (Relation rel); typedef bool (*PlanDirectModify_function) (PlannerInfo *root, ModifyTable *plan, Index resultRelation, int subplan_index); typedef void (*BeginDirectModify_function) (ForeignScanState *node, int eflags); typedef TupleTableSlot *(*IterateDirectModify_function) (ForeignScanState *node); typedef void (*EndDirectModify_function) (ForeignScanState *node); typedef RowMarkType (*GetForeignRowMarkType_function) (RangeTblEntry *rte, LockClauseStrength strength); typedef void (*RefetchForeignRow_function) (EState *estate, ExecRowMark *erm, Datum rowid, TupleTableSlot *slot, bool *updated); typedef void (*ExplainForeignScan_function) (ForeignScanState *node, struct ExplainState *es); typedef void (*ExplainForeignModify_function) (ModifyTableState *mtstate, ResultRelInfo *rinfo, List *fdw_private, int subplan_index, struct ExplainState *es); typedef void (*ExplainDirectModify_function) (ForeignScanState *node, struct ExplainState *es); typedef int (*AcquireSampleRowsFunc) (Relation relation, int elevel, HeapTuple *rows, int targrows, double *totalrows, double *totaldeadrows); typedef bool (*AnalyzeForeignTable_function) (Relation relation, AcquireSampleRowsFunc *func, BlockNumber *totalpages); typedef List *(*ImportForeignSchema_function) (ImportForeignSchemaStmt *stmt, Oid serverOid); typedef void (*ExecForeignTruncate_function) (List *rels, DropBehavior behavior, bool restart_seqs); typedef Size (*EstimateDSMForeignScan_function) (ForeignScanState *node, ParallelContext *pcxt); typedef void (*InitializeDSMForeignScan_function) (ForeignScanState *node, ParallelContext *pcxt, void *coordinate); typedef void (*ReInitializeDSMForeignScan_function) (ForeignScanState *node, ParallelContext *pcxt, void *coordinate); typedef void (*InitializeWorkerForeignScan_function) (ForeignScanState *node, shm_toc *toc, void *coordinate); typedef void (*ShutdownForeignScan_function) (ForeignScanState *node); typedef bool (*IsForeignScanParallelSafe_function) (PlannerInfo *root, RelOptInfo *rel, RangeTblEntry *rte); typedef List *(*ReparameterizeForeignPathByChild_function) (PlannerInfo *root, List *fdw_private, RelOptInfo *child_rel); typedef bool (*IsForeignPathAsyncCapable_function) (ForeignPath *path); typedef void (*ForeignAsyncRequest_function) (AsyncRequest *areq); typedef void (*ForeignAsyncConfigureWait_function) (AsyncRequest *areq); typedef void (*ForeignAsyncNotify_function) (AsyncRequest *areq); /* * FdwRoutine is the struct returned by a foreign-data wrapper's handler * function. It provides pointers to the callback functions needed by the * planner and executor. * * More function pointers are likely to be added in the future. Therefore * it's recommended that the handler initialize the struct with * makeNode(FdwRoutine) so that all fields are set to NULL. This will * ensure that no fields are accidentally left undefined. */ typedef struct FdwRoutine { NodeTag type; /* Functions for scanning foreign tables */ GetForeignRelSize_function GetForeignRelSize; GetForeignPaths_function GetForeignPaths; GetForeignPlan_function GetForeignPlan; BeginForeignScan_function BeginForeignScan; IterateForeignScan_function IterateForeignScan; ReScanForeignScan_function ReScanForeignScan; EndForeignScan_function EndForeignScan; /* * Remaining functions are optional. Set the pointer to NULL for any that * are not provided. */ /* Functions for remote-join planning */ GetForeignJoinPaths_function GetForeignJoinPaths; /* Functions for remote upper-relation (post scan/join) planning */ GetForeignUpperPaths_function GetForeignUpperPaths; /* Functions for updating foreign tables */ AddForeignUpdateTargets_function AddForeignUpdateTargets; PlanForeignModify_function PlanForeignModify; BeginForeignModify_function BeginForeignModify; ExecForeignInsert_function ExecForeignInsert; ExecForeignBatchInsert_function ExecForeignBatchInsert; GetForeignModifyBatchSize_function GetForeignModifyBatchSize; ExecForeignUpdate_function ExecForeignUpdate; ExecForeignDelete_function ExecForeignDelete; EndForeignModify_function EndForeignModify; BeginForeignInsert_function BeginForeignInsert; EndForeignInsert_function EndForeignInsert; IsForeignRelUpdatable_function IsForeignRelUpdatable; PlanDirectModify_function PlanDirectModify; BeginDirectModify_function BeginDirectModify; IterateDirectModify_function IterateDirectModify; EndDirectModify_function EndDirectModify; /* Functions for SELECT FOR UPDATE/SHARE row locking */ GetForeignRowMarkType_function GetForeignRowMarkType; RefetchForeignRow_function RefetchForeignRow; RecheckForeignScan_function RecheckForeignScan; /* Support functions for EXPLAIN */ ExplainForeignScan_function ExplainForeignScan; ExplainForeignModify_function ExplainForeignModify; ExplainDirectModify_function ExplainDirectModify; /* Support functions for ANALYZE */ AnalyzeForeignTable_function AnalyzeForeignTable; /* Support functions for IMPORT FOREIGN SCHEMA */ ImportForeignSchema_function ImportForeignSchema; /* Support functions for TRUNCATE */ ExecForeignTruncate_function ExecForeignTruncate; /* Support functions for parallelism under Gather node */ IsForeignScanParallelSafe_function IsForeignScanParallelSafe; EstimateDSMForeignScan_function EstimateDSMForeignScan; InitializeDSMForeignScan_function InitializeDSMForeignScan; ReInitializeDSMForeignScan_function ReInitializeDSMForeignScan; InitializeWorkerForeignScan_function InitializeWorkerForeignScan; ShutdownForeignScan_function ShutdownForeignScan; /* Support functions for path reparameterization. */ ReparameterizeForeignPathByChild_function ReparameterizeForeignPathByChild; /* Support functions for asynchronous execution */ IsForeignPathAsyncCapable_function IsForeignPathAsyncCapable; ForeignAsyncRequest_function ForeignAsyncRequest; ForeignAsyncConfigureWait_function ForeignAsyncConfigureWait; ForeignAsyncNotify_function ForeignAsyncNotify; } FdwRoutine; /* Functions in foreign/foreign.c */ extern FdwRoutine *GetFdwRoutine(Oid fdwhandler); extern Oid GetForeignServerIdByRelId(Oid relid); extern FdwRoutine *GetFdwRoutineByServerId(Oid serverid); extern FdwRoutine *GetFdwRoutineByRelId(Oid relid); extern FdwRoutine *GetFdwRoutineForRelation(Relation relation, bool makecopy); extern bool IsImportableForeignTable(const char *tablename, ImportForeignSchemaStmt *stmt); extern Path *GetExistingLocalJoinPath(RelOptInfo *joinrel); #endif /* FDWAPI_H */ libpg_query-17-6.1.0/src/postgres/include/funcapi.h000066400000000000000000000307551477334012600221640ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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. * * Inline 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. *---------- */ 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); static inline Datum HeapTupleGetDatum(const HeapTupleData *tuple) { return HeapTupleHeaderGetDatum(tuple->t_data); } /* obsolete version of above */ #define TupleGetDatum(_slot, _tuple) HeapTupleGetDatum(_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, as set up by InitMaterializedSRF() (see * fmgr/README). Alternatively, set up a callback to release resources * at query shutdown, using RegisterExprContextCallback(). * *---------- */ /* from funcapi.c */ /* flag bits for InitMaterializedSRF() */ #define MAT_SRF_USE_EXPECTED_DESC 0x01 /* use expectedDesc as tupdesc. */ #define MAT_SRF_BLESS 0x02 /* "Bless" a tuple descriptor with * BlessTupleDesc(). */ extern void InitMaterializedSRF(FunctionCallInfo fcinfo, bits32 flags); 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 **args, Oid **types, bool **nulls); #endif /* FUNCAPI_H */ libpg_query-17-6.1.0/src/postgres/include/gram.h000066400000000000000000000600071477334012600214560ustar00rootroot00000000000000/* 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, ABSENT = 278, ABSOLUTE_P = 279, ACCESS = 280, ACTION = 281, ADD_P = 282, ADMIN = 283, AFTER = 284, AGGREGATE = 285, ALL = 286, ALSO = 287, ALTER = 288, ALWAYS = 289, ANALYSE = 290, ANALYZE = 291, AND = 292, ANY = 293, ARRAY = 294, AS = 295, ASC = 296, ASENSITIVE = 297, ASSERTION = 298, ASSIGNMENT = 299, ASYMMETRIC = 300, ATOMIC = 301, AT = 302, ATTACH = 303, ATTRIBUTE = 304, AUTHORIZATION = 305, BACKWARD = 306, BEFORE = 307, BEGIN_P = 308, BETWEEN = 309, BIGINT = 310, BINARY = 311, BIT = 312, BOOLEAN_P = 313, BOTH = 314, BREADTH = 315, BY = 316, CACHE = 317, CALL = 318, CALLED = 319, CASCADE = 320, CASCADED = 321, CASE = 322, CAST = 323, CATALOG_P = 324, CHAIN = 325, CHAR_P = 326, CHARACTER = 327, CHARACTERISTICS = 328, CHECK = 329, CHECKPOINT = 330, CLASS = 331, CLOSE = 332, CLUSTER = 333, COALESCE = 334, COLLATE = 335, COLLATION = 336, COLUMN = 337, COLUMNS = 338, COMMENT = 339, COMMENTS = 340, COMMIT = 341, COMMITTED = 342, COMPRESSION = 343, CONCURRENTLY = 344, CONDITIONAL = 345, CONFIGURATION = 346, CONFLICT = 347, CONNECTION = 348, CONSTRAINT = 349, CONSTRAINTS = 350, CONTENT_P = 351, CONTINUE_P = 352, CONVERSION_P = 353, COPY = 354, COST = 355, CREATE = 356, CROSS = 357, CSV = 358, CUBE = 359, CURRENT_P = 360, CURRENT_CATALOG = 361, CURRENT_DATE = 362, CURRENT_ROLE = 363, CURRENT_SCHEMA = 364, CURRENT_TIME = 365, CURRENT_TIMESTAMP = 366, CURRENT_USER = 367, CURSOR = 368, CYCLE = 369, DATA_P = 370, DATABASE = 371, DAY_P = 372, DEALLOCATE = 373, DEC = 374, DECIMAL_P = 375, DECLARE = 376, DEFAULT = 377, DEFAULTS = 378, DEFERRABLE = 379, DEFERRED = 380, DEFINER = 381, DELETE_P = 382, DELIMITER = 383, DELIMITERS = 384, DEPENDS = 385, DEPTH = 386, DESC = 387, DETACH = 388, DICTIONARY = 389, DISABLE_P = 390, DISCARD = 391, DISTINCT = 392, DO = 393, DOCUMENT_P = 394, DOMAIN_P = 395, DOUBLE_P = 396, DROP = 397, EACH = 398, ELSE = 399, EMPTY_P = 400, ENABLE_P = 401, ENCODING = 402, ENCRYPTED = 403, END_P = 404, ENUM_P = 405, ERROR_P = 406, ESCAPE = 407, EVENT = 408, EXCEPT = 409, EXCLUDE = 410, EXCLUDING = 411, EXCLUSIVE = 412, EXECUTE = 413, EXISTS = 414, EXPLAIN = 415, EXPRESSION = 416, EXTENSION = 417, EXTERNAL = 418, EXTRACT = 419, FALSE_P = 420, FAMILY = 421, FETCH = 422, FILTER = 423, FINALIZE = 424, FIRST_P = 425, FLOAT_P = 426, FOLLOWING = 427, FOR = 428, FORCE = 429, FOREIGN = 430, FORMAT = 431, FORWARD = 432, FREEZE = 433, FROM = 434, FULL = 435, FUNCTION = 436, FUNCTIONS = 437, GENERATED = 438, GLOBAL = 439, GRANT = 440, GRANTED = 441, GREATEST = 442, GROUP_P = 443, GROUPING = 444, GROUPS = 445, HANDLER = 446, HAVING = 447, HEADER_P = 448, HOLD = 449, HOUR_P = 450, IDENTITY_P = 451, IF_P = 452, ILIKE = 453, IMMEDIATE = 454, IMMUTABLE = 455, IMPLICIT_P = 456, IMPORT_P = 457, IN_P = 458, INCLUDE = 459, INCLUDING = 460, INCREMENT = 461, INDENT = 462, INDEX = 463, INDEXES = 464, INHERIT = 465, INHERITS = 466, INITIALLY = 467, INLINE_P = 468, INNER_P = 469, INOUT = 470, INPUT_P = 471, INSENSITIVE = 472, INSERT = 473, INSTEAD = 474, INT_P = 475, INTEGER = 476, INTERSECT = 477, INTERVAL = 478, INTO = 479, INVOKER = 480, IS = 481, ISNULL = 482, ISOLATION = 483, JOIN = 484, JSON = 485, JSON_ARRAY = 486, JSON_ARRAYAGG = 487, JSON_EXISTS = 488, JSON_OBJECT = 489, JSON_OBJECTAGG = 490, JSON_QUERY = 491, JSON_SCALAR = 492, JSON_SERIALIZE = 493, JSON_TABLE = 494, JSON_VALUE = 495, KEEP = 496, KEY = 497, KEYS = 498, LABEL = 499, LANGUAGE = 500, LARGE_P = 501, LAST_P = 502, LATERAL_P = 503, LEADING = 504, LEAKPROOF = 505, LEAST = 506, LEFT = 507, LEVEL = 508, LIKE = 509, LIMIT = 510, LISTEN = 511, LOAD = 512, LOCAL = 513, LOCALTIME = 514, LOCALTIMESTAMP = 515, LOCATION = 516, LOCK_P = 517, LOCKED = 518, LOGGED = 519, MAPPING = 520, MATCH = 521, MATCHED = 522, MATERIALIZED = 523, MAXVALUE = 524, MERGE = 525, MERGE_ACTION = 526, METHOD = 527, MINUTE_P = 528, MINVALUE = 529, MODE = 530, MONTH_P = 531, MOVE = 532, NAME_P = 533, NAMES = 534, NATIONAL = 535, NATURAL = 536, NCHAR = 537, NESTED = 538, NEW = 539, NEXT = 540, NFC = 541, NFD = 542, NFKC = 543, NFKD = 544, NO = 545, NONE = 546, NORMALIZE = 547, NORMALIZED = 548, NOT = 549, NOTHING = 550, NOTIFY = 551, NOTNULL = 552, NOWAIT = 553, NULL_P = 554, NULLIF = 555, NULLS_P = 556, NUMERIC = 557, OBJECT_P = 558, OF = 559, OFF = 560, OFFSET = 561, OIDS = 562, OLD = 563, OMIT = 564, ON = 565, ONLY = 566, OPERATOR = 567, OPTION = 568, OPTIONS = 569, OR = 570, ORDER = 571, ORDINALITY = 572, OTHERS = 573, OUT_P = 574, OUTER_P = 575, OVER = 576, OVERLAPS = 577, OVERLAY = 578, OVERRIDING = 579, OWNED = 580, OWNER = 581, PARALLEL = 582, PARAMETER = 583, PARSER = 584, PARTIAL = 585, PARTITION = 586, PASSING = 587, PASSWORD = 588, PATH = 589, PLACING = 590, PLAN = 591, PLANS = 592, POLICY = 593, POSITION = 594, PRECEDING = 595, PRECISION = 596, PRESERVE = 597, PREPARE = 598, PREPARED = 599, PRIMARY = 600, PRIOR = 601, PRIVILEGES = 602, PROCEDURAL = 603, PROCEDURE = 604, PROCEDURES = 605, PROGRAM = 606, PUBLICATION = 607, QUOTE = 608, QUOTES = 609, RANGE = 610, READ = 611, REAL = 612, REASSIGN = 613, RECHECK = 614, RECURSIVE = 615, REF_P = 616, REFERENCES = 617, REFERENCING = 618, REFRESH = 619, REINDEX = 620, RELATIVE_P = 621, RELEASE = 622, RENAME = 623, REPEATABLE = 624, REPLACE = 625, REPLICA = 626, RESET = 627, RESTART = 628, RESTRICT = 629, RETURN = 630, RETURNING = 631, RETURNS = 632, REVOKE = 633, RIGHT = 634, ROLE = 635, ROLLBACK = 636, ROLLUP = 637, ROUTINE = 638, ROUTINES = 639, ROW = 640, ROWS = 641, RULE = 642, SAVEPOINT = 643, SCALAR = 644, SCHEMA = 645, SCHEMAS = 646, SCROLL = 647, SEARCH = 648, SECOND_P = 649, SECURITY = 650, SELECT = 651, SEQUENCE = 652, SEQUENCES = 653, SERIALIZABLE = 654, SERVER = 655, SESSION = 656, SESSION_USER = 657, SET = 658, SETS = 659, SETOF = 660, SHARE = 661, SHOW = 662, SIMILAR = 663, SIMPLE = 664, SKIP = 665, SMALLINT = 666, SNAPSHOT = 667, SOME = 668, SOURCE = 669, SQL_P = 670, STABLE = 671, STANDALONE_P = 672, START = 673, STATEMENT = 674, STATISTICS = 675, STDIN = 676, STDOUT = 677, STORAGE = 678, STORED = 679, STRICT_P = 680, STRING_P = 681, STRIP_P = 682, SUBSCRIPTION = 683, SUBSTRING = 684, SUPPORT = 685, SYMMETRIC = 686, SYSID = 687, SYSTEM_P = 688, SYSTEM_USER = 689, TABLE = 690, TABLES = 691, TABLESAMPLE = 692, TABLESPACE = 693, TARGET = 694, TEMP = 695, TEMPLATE = 696, TEMPORARY = 697, TEXT_P = 698, THEN = 699, TIES = 700, TIME = 701, TIMESTAMP = 702, TO = 703, TRAILING = 704, TRANSACTION = 705, TRANSFORM = 706, TREAT = 707, TRIGGER = 708, TRIM = 709, TRUE_P = 710, TRUNCATE = 711, TRUSTED = 712, TYPE_P = 713, TYPES_P = 714, UESCAPE = 715, UNBOUNDED = 716, UNCONDITIONAL = 717, UNCOMMITTED = 718, UNENCRYPTED = 719, UNION = 720, UNIQUE = 721, UNKNOWN = 722, UNLISTEN = 723, UNLOGGED = 724, UNTIL = 725, UPDATE = 726, USER = 727, USING = 728, VACUUM = 729, VALID = 730, VALIDATE = 731, VALIDATOR = 732, VALUE_P = 733, VALUES = 734, VARCHAR = 735, VARIADIC = 736, VARYING = 737, VERBOSE = 738, VERSION_P = 739, VIEW = 740, VIEWS = 741, VOLATILE = 742, WHEN = 743, WHERE = 744, WHITESPACE_P = 745, WINDOW = 746, WITH = 747, WITHIN = 748, WITHOUT = 749, WORK = 750, WRAPPER = 751, WRITE = 752, XML_P = 753, XMLATTRIBUTES = 754, XMLCONCAT = 755, XMLELEMENT = 756, XMLEXISTS = 757, XMLFOREST = 758, XMLNAMESPACES = 759, XMLPARSE = 760, XMLPI = 761, XMLROOT = 762, XMLSERIALIZE = 763, XMLTABLE = 764, YEAR_P = 765, YES_P = 766, ZONE = 767, FORMAT_LA = 768, NOT_LA = 769, NULLS_LA = 770, WITH_LA = 771, WITHOUT_LA = 772, MODE_TYPE_NAME = 773, MODE_PLPGSQL_EXPR = 774, MODE_PLPGSQL_ASSIGN1 = 775, MODE_PLPGSQL_ASSIGN2 = 776, MODE_PLPGSQL_ASSIGN3 = 777, UMINUS = 778 }; #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 ABSENT 278 #define ABSOLUTE_P 279 #define ACCESS 280 #define ACTION 281 #define ADD_P 282 #define ADMIN 283 #define AFTER 284 #define AGGREGATE 285 #define ALL 286 #define ALSO 287 #define ALTER 288 #define ALWAYS 289 #define ANALYSE 290 #define ANALYZE 291 #define AND 292 #define ANY 293 #define ARRAY 294 #define AS 295 #define ASC 296 #define ASENSITIVE 297 #define ASSERTION 298 #define ASSIGNMENT 299 #define ASYMMETRIC 300 #define ATOMIC 301 #define AT 302 #define ATTACH 303 #define ATTRIBUTE 304 #define AUTHORIZATION 305 #define BACKWARD 306 #define BEFORE 307 #define BEGIN_P 308 #define BETWEEN 309 #define BIGINT 310 #define BINARY 311 #define BIT 312 #define BOOLEAN_P 313 #define BOTH 314 #define BREADTH 315 #define BY 316 #define CACHE 317 #define CALL 318 #define CALLED 319 #define CASCADE 320 #define CASCADED 321 #define CASE 322 #define CAST 323 #define CATALOG_P 324 #define CHAIN 325 #define CHAR_P 326 #define CHARACTER 327 #define CHARACTERISTICS 328 #define CHECK 329 #define CHECKPOINT 330 #define CLASS 331 #define CLOSE 332 #define CLUSTER 333 #define COALESCE 334 #define COLLATE 335 #define COLLATION 336 #define COLUMN 337 #define COLUMNS 338 #define COMMENT 339 #define COMMENTS 340 #define COMMIT 341 #define COMMITTED 342 #define COMPRESSION 343 #define CONCURRENTLY 344 #define CONDITIONAL 345 #define CONFIGURATION 346 #define CONFLICT 347 #define CONNECTION 348 #define CONSTRAINT 349 #define CONSTRAINTS 350 #define CONTENT_P 351 #define CONTINUE_P 352 #define CONVERSION_P 353 #define COPY 354 #define COST 355 #define CREATE 356 #define CROSS 357 #define CSV 358 #define CUBE 359 #define CURRENT_P 360 #define CURRENT_CATALOG 361 #define CURRENT_DATE 362 #define CURRENT_ROLE 363 #define CURRENT_SCHEMA 364 #define CURRENT_TIME 365 #define CURRENT_TIMESTAMP 366 #define CURRENT_USER 367 #define CURSOR 368 #define CYCLE 369 #define DATA_P 370 #define DATABASE 371 #define DAY_P 372 #define DEALLOCATE 373 #define DEC 374 #define DECIMAL_P 375 #define DECLARE 376 #define DEFAULT 377 #define DEFAULTS 378 #define DEFERRABLE 379 #define DEFERRED 380 #define DEFINER 381 #define DELETE_P 382 #define DELIMITER 383 #define DELIMITERS 384 #define DEPENDS 385 #define DEPTH 386 #define DESC 387 #define DETACH 388 #define DICTIONARY 389 #define DISABLE_P 390 #define DISCARD 391 #define DISTINCT 392 #define DO 393 #define DOCUMENT_P 394 #define DOMAIN_P 395 #define DOUBLE_P 396 #define DROP 397 #define EACH 398 #define ELSE 399 #define EMPTY_P 400 #define ENABLE_P 401 #define ENCODING 402 #define ENCRYPTED 403 #define END_P 404 #define ENUM_P 405 #define ERROR_P 406 #define ESCAPE 407 #define EVENT 408 #define EXCEPT 409 #define EXCLUDE 410 #define EXCLUDING 411 #define EXCLUSIVE 412 #define EXECUTE 413 #define EXISTS 414 #define EXPLAIN 415 #define EXPRESSION 416 #define EXTENSION 417 #define EXTERNAL 418 #define EXTRACT 419 #define FALSE_P 420 #define FAMILY 421 #define FETCH 422 #define FILTER 423 #define FINALIZE 424 #define FIRST_P 425 #define FLOAT_P 426 #define FOLLOWING 427 #define FOR 428 #define FORCE 429 #define FOREIGN 430 #define FORMAT 431 #define FORWARD 432 #define FREEZE 433 #define FROM 434 #define FULL 435 #define FUNCTION 436 #define FUNCTIONS 437 #define GENERATED 438 #define GLOBAL 439 #define GRANT 440 #define GRANTED 441 #define GREATEST 442 #define GROUP_P 443 #define GROUPING 444 #define GROUPS 445 #define HANDLER 446 #define HAVING 447 #define HEADER_P 448 #define HOLD 449 #define HOUR_P 450 #define IDENTITY_P 451 #define IF_P 452 #define ILIKE 453 #define IMMEDIATE 454 #define IMMUTABLE 455 #define IMPLICIT_P 456 #define IMPORT_P 457 #define IN_P 458 #define INCLUDE 459 #define INCLUDING 460 #define INCREMENT 461 #define INDENT 462 #define INDEX 463 #define INDEXES 464 #define INHERIT 465 #define INHERITS 466 #define INITIALLY 467 #define INLINE_P 468 #define INNER_P 469 #define INOUT 470 #define INPUT_P 471 #define INSENSITIVE 472 #define INSERT 473 #define INSTEAD 474 #define INT_P 475 #define INTEGER 476 #define INTERSECT 477 #define INTERVAL 478 #define INTO 479 #define INVOKER 480 #define IS 481 #define ISNULL 482 #define ISOLATION 483 #define JOIN 484 #define JSON 485 #define JSON_ARRAY 486 #define JSON_ARRAYAGG 487 #define JSON_EXISTS 488 #define JSON_OBJECT 489 #define JSON_OBJECTAGG 490 #define JSON_QUERY 491 #define JSON_SCALAR 492 #define JSON_SERIALIZE 493 #define JSON_TABLE 494 #define JSON_VALUE 495 #define KEEP 496 #define KEY 497 #define KEYS 498 #define LABEL 499 #define LANGUAGE 500 #define LARGE_P 501 #define LAST_P 502 #define LATERAL_P 503 #define LEADING 504 #define LEAKPROOF 505 #define LEAST 506 #define LEFT 507 #define LEVEL 508 #define LIKE 509 #define LIMIT 510 #define LISTEN 511 #define LOAD 512 #define LOCAL 513 #define LOCALTIME 514 #define LOCALTIMESTAMP 515 #define LOCATION 516 #define LOCK_P 517 #define LOCKED 518 #define LOGGED 519 #define MAPPING 520 #define MATCH 521 #define MATCHED 522 #define MATERIALIZED 523 #define MAXVALUE 524 #define MERGE 525 #define MERGE_ACTION 526 #define METHOD 527 #define MINUTE_P 528 #define MINVALUE 529 #define MODE 530 #define MONTH_P 531 #define MOVE 532 #define NAME_P 533 #define NAMES 534 #define NATIONAL 535 #define NATURAL 536 #define NCHAR 537 #define NESTED 538 #define NEW 539 #define NEXT 540 #define NFC 541 #define NFD 542 #define NFKC 543 #define NFKD 544 #define NO 545 #define NONE 546 #define NORMALIZE 547 #define NORMALIZED 548 #define NOT 549 #define NOTHING 550 #define NOTIFY 551 #define NOTNULL 552 #define NOWAIT 553 #define NULL_P 554 #define NULLIF 555 #define NULLS_P 556 #define NUMERIC 557 #define OBJECT_P 558 #define OF 559 #define OFF 560 #define OFFSET 561 #define OIDS 562 #define OLD 563 #define OMIT 564 #define ON 565 #define ONLY 566 #define OPERATOR 567 #define OPTION 568 #define OPTIONS 569 #define OR 570 #define ORDER 571 #define ORDINALITY 572 #define OTHERS 573 #define OUT_P 574 #define OUTER_P 575 #define OVER 576 #define OVERLAPS 577 #define OVERLAY 578 #define OVERRIDING 579 #define OWNED 580 #define OWNER 581 #define PARALLEL 582 #define PARAMETER 583 #define PARSER 584 #define PARTIAL 585 #define PARTITION 586 #define PASSING 587 #define PASSWORD 588 #define PATH 589 #define PLACING 590 #define PLAN 591 #define PLANS 592 #define POLICY 593 #define POSITION 594 #define PRECEDING 595 #define PRECISION 596 #define PRESERVE 597 #define PREPARE 598 #define PREPARED 599 #define PRIMARY 600 #define PRIOR 601 #define PRIVILEGES 602 #define PROCEDURAL 603 #define PROCEDURE 604 #define PROCEDURES 605 #define PROGRAM 606 #define PUBLICATION 607 #define QUOTE 608 #define QUOTES 609 #define RANGE 610 #define READ 611 #define REAL 612 #define REASSIGN 613 #define RECHECK 614 #define RECURSIVE 615 #define REF_P 616 #define REFERENCES 617 #define REFERENCING 618 #define REFRESH 619 #define REINDEX 620 #define RELATIVE_P 621 #define RELEASE 622 #define RENAME 623 #define REPEATABLE 624 #define REPLACE 625 #define REPLICA 626 #define RESET 627 #define RESTART 628 #define RESTRICT 629 #define RETURN 630 #define RETURNING 631 #define RETURNS 632 #define REVOKE 633 #define RIGHT 634 #define ROLE 635 #define ROLLBACK 636 #define ROLLUP 637 #define ROUTINE 638 #define ROUTINES 639 #define ROW 640 #define ROWS 641 #define RULE 642 #define SAVEPOINT 643 #define SCALAR 644 #define SCHEMA 645 #define SCHEMAS 646 #define SCROLL 647 #define SEARCH 648 #define SECOND_P 649 #define SECURITY 650 #define SELECT 651 #define SEQUENCE 652 #define SEQUENCES 653 #define SERIALIZABLE 654 #define SERVER 655 #define SESSION 656 #define SESSION_USER 657 #define SET 658 #define SETS 659 #define SETOF 660 #define SHARE 661 #define SHOW 662 #define SIMILAR 663 #define SIMPLE 664 #define SKIP 665 #define SMALLINT 666 #define SNAPSHOT 667 #define SOME 668 #define SOURCE 669 #define SQL_P 670 #define STABLE 671 #define STANDALONE_P 672 #define START 673 #define STATEMENT 674 #define STATISTICS 675 #define STDIN 676 #define STDOUT 677 #define STORAGE 678 #define STORED 679 #define STRICT_P 680 #define STRING_P 681 #define STRIP_P 682 #define SUBSCRIPTION 683 #define SUBSTRING 684 #define SUPPORT 685 #define SYMMETRIC 686 #define SYSID 687 #define SYSTEM_P 688 #define SYSTEM_USER 689 #define TABLE 690 #define TABLES 691 #define TABLESAMPLE 692 #define TABLESPACE 693 #define TARGET 694 #define TEMP 695 #define TEMPLATE 696 #define TEMPORARY 697 #define TEXT_P 698 #define THEN 699 #define TIES 700 #define TIME 701 #define TIMESTAMP 702 #define TO 703 #define TRAILING 704 #define TRANSACTION 705 #define TRANSFORM 706 #define TREAT 707 #define TRIGGER 708 #define TRIM 709 #define TRUE_P 710 #define TRUNCATE 711 #define TRUSTED 712 #define TYPE_P 713 #define TYPES_P 714 #define UESCAPE 715 #define UNBOUNDED 716 #define UNCONDITIONAL 717 #define UNCOMMITTED 718 #define UNENCRYPTED 719 #define UNION 720 #define UNIQUE 721 #define UNKNOWN 722 #define UNLISTEN 723 #define UNLOGGED 724 #define UNTIL 725 #define UPDATE 726 #define USER 727 #define USING 728 #define VACUUM 729 #define VALID 730 #define VALIDATE 731 #define VALIDATOR 732 #define VALUE_P 733 #define VALUES 734 #define VARCHAR 735 #define VARIADIC 736 #define VARYING 737 #define VERBOSE 738 #define VERSION_P 739 #define VIEW 740 #define VIEWS 741 #define VOLATILE 742 #define WHEN 743 #define WHERE 744 #define WHITESPACE_P 745 #define WINDOW 746 #define WITH 747 #define WITHIN 748 #define WITHOUT 749 #define WORK 750 #define WRAPPER 751 #define WRITE 752 #define XML_P 753 #define XMLATTRIBUTES 754 #define XMLCONCAT 755 #define XMLELEMENT 756 #define XMLEXISTS 757 #define XMLFOREST 758 #define XMLNAMESPACES 759 #define XMLPARSE 760 #define XMLPI 761 #define XMLROOT 762 #define XMLSERIALIZE 763 #define XMLTABLE 764 #define YEAR_P 765 #define YES_P 766 #define ZONE 767 #define FORMAT_LA 768 #define NOT_LA 769 #define NULLS_LA 770 #define WITH_LA 771 #define WITHOUT_LA 772 #define MODE_TYPE_NAME 773 #define MODE_PLPGSQL_EXPR 774 #define MODE_PLPGSQL_ASSIGN1 775 #define MODE_PLPGSQL_ASSIGN2 776 #define MODE_PLPGSQL_ASSIGN3 777 #define UMINUS 778 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 233 "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; ObjectType objtype; TypeName *typnam; FunctionParameter *fun_param; FunctionParameterMode fun_param_mode; ObjectWithArgs *objwithargs; DefElem *defelt; SortBy *sortby; WindowDef *windef; JoinExpr *jexpr; IndexElem *ielem; StatsElem *selem; 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; PublicationObjSpec *publicationobjectspec; struct SelectLimit *selectlimit; SetQuantifier setquantifier; struct GroupClause *groupclause; MergeMatchKind mergematch; MergeWhenClause *mergewhen; struct KeyActions *keyactions; struct KeyAction *keyaction; } /* Line 1529 of yacc.c. */ #line 1147 "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-17-6.1.0/src/postgres/include/gramparse.h000066400000000000000000000043201477334012600225050ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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, * i.e., parser.c, gram.y, and scan.l. * Definitions that are needed outside the core parser should be in parser.h. * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/backend/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 "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-17-6.1.0/src/postgres/include/jit/000077500000000000000000000000001477334012600211425ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/jit/jit.h000066400000000000000000000055361477334012600221120ustar00rootroot00000000000000/*------------------------------------------------------------------------- * jit.h * Provider independent JIT infrastructure. * * Copyright (c) 2016-2024, 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 to deform tuples, included into generation_counter */ instr_time deform_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; JitInstrumentation instr; } JitContext; typedef struct JitProviderCallbacks JitProviderCallbacks; extern PGDLLEXPORT 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 PGDLLIMPORT bool jit_enabled; extern PGDLLIMPORT char *jit_provider; extern PGDLLIMPORT bool jit_debugging_support; extern PGDLLIMPORT bool jit_dump_bitcode; extern PGDLLIMPORT bool jit_expressions; extern PGDLLIMPORT bool jit_profiling_support; extern PGDLLIMPORT bool jit_tuple_deforming; extern PGDLLIMPORT double jit_above_cost; extern PGDLLIMPORT double jit_inline_above_cost; extern PGDLLIMPORT 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-17-6.1.0/src/postgres/include/kwlist_d.h000066400000000000000000000425151477334012600223540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * kwlist_d.h * List of keywords represented as a ScanKeywordList. * * Portions Copyright (c) 1996-2024, 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" "absent\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" "asensitive\0" "assertion\0" "assignment\0" "asymmetric\0" "at\0" "atomic\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" "breadth\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" "compression\0" "concurrently\0" "conditional\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" "depth\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" "empty\0" "enable\0" "encoding\0" "encrypted\0" "end\0" "enum\0" "error\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" "finalize\0" "first\0" "float\0" "following\0" "for\0" "force\0" "foreign\0" "format\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" "indent\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" "json\0" "json_array\0" "json_arrayagg\0" "json_exists\0" "json_object\0" "json_objectagg\0" "json_query\0" "json_scalar\0" "json_serialize\0" "json_table\0" "json_value\0" "keep\0" "key\0" "keys\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" "matched\0" "materialized\0" "maxvalue\0" "merge\0" "merge_action\0" "method\0" "minute\0" "minvalue\0" "mode\0" "month\0" "move\0" "name\0" "names\0" "national\0" "natural\0" "nchar\0" "nested\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" "omit\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" "parameter\0" "parser\0" "partial\0" "partition\0" "passing\0" "password\0" "path\0" "placing\0" "plan\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" "quotes\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" "return\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" "scalar\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" "source\0" "sql\0" "stable\0" "standalone\0" "start\0" "statement\0" "statistics\0" "stdin\0" "stdout\0" "storage\0" "stored\0" "strict\0" "string\0" "strip\0" "subscription\0" "substring\0" "support\0" "symmetric\0" "sysid\0" "system\0" "system_user\0" "table\0" "tables\0" "tablesample\0" "tablespace\0" "target\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" "unconditional\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, 13, 22, 29, 36, 40, 46, 52, 62, 66, 71, 77, 84, 92, 100, 104, 108, 114, 117, 121, 132, 142, 153, 164, 167, 174, 181, 191, 205, 214, 221, 227, 235, 242, 249, 253, 261, 266, 274, 277, 283, 288, 295, 303, 312, 317, 322, 330, 336, 341, 351, 367, 373, 384, 390, 396, 404, 413, 421, 431, 438, 446, 454, 463, 470, 480, 492, 505, 517, 531, 540, 551, 562, 574, 582, 591, 602, 607, 612, 619, 625, 629, 634, 642, 658, 671, 684, 699, 712, 730, 743, 750, 756, 761, 770, 774, 785, 789, 797, 805, 813, 822, 833, 842, 850, 857, 867, 878, 886, 892, 897, 904, 915, 923, 931, 940, 943, 952, 959, 966, 971, 976, 981, 987, 994, 1003, 1013, 1017, 1022, 1028, 1035, 1041, 1048, 1056, 1066, 1076, 1084, 1091, 1099, 1110, 1120, 1129, 1137, 1143, 1150, 1156, 1163, 1172, 1178, 1184, 1194, 1198, 1204, 1212, 1219, 1227, 1234, 1239, 1244, 1253, 1263, 1273, 1280, 1286, 1294, 1303, 1309, 1318, 1325, 1333, 1340, 1347, 1352, 1357, 1366, 1369, 1375, 1385, 1395, 1404, 1411, 1414, 1422, 1432, 1442, 1449, 1455, 1463, 1471, 1480, 1490, 1497, 1503, 1509, 1515, 1527, 1534, 1542, 1546, 1554, 1564, 1573, 1578, 1586, 1589, 1596, 1606, 1611, 1616, 1627, 1641, 1653, 1665, 1680, 1691, 1703, 1718, 1729, 1740, 1745, 1749, 1754, 1760, 1769, 1775, 1780, 1788, 1796, 1806, 1812, 1817, 1823, 1828, 1834, 1841, 1846, 1852, 1862, 1877, 1886, 1891, 1898, 1905, 1913, 1919, 1927, 1940, 1949, 1955, 1968, 1975, 1982, 1991, 1996, 2002, 2007, 2012, 2018, 2027, 2035, 2041, 2048, 2052, 2057, 2061, 2065, 2070, 2075, 2078, 2083, 2093, 2104, 2108, 2116, 2123, 2131, 2138, 2143, 2150, 2156, 2164, 2171, 2174, 2178, 2185, 2190, 2194, 2199, 2202, 2207, 2216, 2223, 2231, 2234, 2240, 2251, 2258, 2262, 2268, 2273, 2282, 2290, 2301, 2307, 2313, 2322, 2332, 2339, 2347, 2357, 2365, 2374, 2379, 2387, 2392, 2398, 2405, 2414, 2424, 2434, 2442, 2451, 2460, 2468, 2474, 2485, 2496, 2506, 2517, 2525, 2537, 2543, 2550, 2556, 2561, 2566, 2575, 2583, 2593, 2597, 2608, 2620, 2628, 2636, 2645, 2653, 2660, 2671, 2679, 2687, 2693, 2701, 2710, 2717, 2727, 2735, 2742, 2748, 2753, 2762, 2769, 2777, 2786, 2790, 2795, 2800, 2810, 2817, 2824, 2832, 2839, 2846, 2853, 2862, 2869, 2878, 2888, 2901, 2908, 2916, 2929, 2933, 2939, 2944, 2950, 2955, 2963, 2970, 2975, 2984, 2993, 2998, 3005, 3009, 3016, 3027, 3033, 3043, 3054, 3060, 3067, 3075, 3082, 3089, 3096, 3102, 3115, 3125, 3133, 3143, 3149, 3156, 3168, 3174, 3181, 3193, 3204, 3211, 3216, 3225, 3235, 3240, 3245, 3250, 3255, 3265, 3268, 3277, 3289, 3299, 3305, 3313, 3318, 3323, 3332, 3340, 3345, 3351, 3359, 3369, 3381, 3395, 3407, 3413, 3420, 3428, 3437, 3446, 3452, 3459, 3464, 3470, 3477, 3483, 3492, 3502, 3508, 3515, 3523, 3532, 3540, 3548, 3556, 3561, 3567, 3576, 3581, 3587, 3598, 3605, 3610, 3617, 3625, 3630, 3638, 3644, 3648, 3662, 3672, 3683, 3693, 3703, 3717, 3726, 3732, 3740, 3753, 3762, 3767, 3771, }; #define SCANKEYWORDS_NUM_KEYWORDS 491 static int ScanKeywords_hash_func(const void *key, size_t keylen) { static const int16 h[983] = { 283, 32767, 500, 226, 291, 32767, 32767, 32767, 467, 152, 66, 291, -300, 32767, -427, -45, 0, 219, 224, 189, 32767, 195, 0, -507, 324, 32767, 300, 32767, 0, 32767, 161, 32767, 32767, 32767, 32767, 131, 32767, 101, 32767, 391, 32767, 32767, 32767, 0, 2, 32767, 128, 418, -291, 32767, 32767, -631, 32767, 250, 219, -142, 133, 334, 32767, 0, 170, 32767, 516, 32767, 307, 288, 391, 32767, 216, 319, 0, 32767, 152, 32767, 375, 444, 433, 32767, 242, 32767, 4, -119, 481, -13, 32767, 32767, -94, 0, 290, -113, 32767, 137, 122, 120, 32767, 32767, 32767, 414, -397, -45, -267, -5, 605, 32767, 453, 514, 32767, 400, 32767, 32767, 32767, 32767, 361, 150, 32767, 107, 172, -32, 81, -232, -15, 830, -46, 32767, 32767, 32767, 543, -341, 0, 32767, 288, 488, 32767, 43, 410, -99, 32767, 384, 32767, 32767, 315, 32767, -419, -458, 0, -459, 0, 232, 32767, 32767, 333, -413, 32767, 584, -76, 0, -6, 125, 32767, 421, 32767, 32767, -88, 128, -1, 15, 55, 32767, 214, 32767, 0, 0, 166, 348, -337, 32767, 260, 319, 32767, 180, 158, 0, 32767, 0, -226, 0, 129, 0, 378, 517, -293, 671, 32767, 32767, 0, 167, 305, -61, -229, 97, 164, 88, 380, 50, 32767, 71, -637, 106, 32767, 79, 0, 415, 32767, 0, 32767, 317, 379, 28, 431, 0, 32767, 32767, 301, 185, 196, 37, 32767, 142, 200, 32767, -211, -223, -392, 99, 32767, -366, 32767, 287, 32767, 0, -309, 0, 32767, -963, 32767, 222, 432, 32767, 32767, 0, 32767, 32767, 266, 56, 0, 32767, 391, 606, 32767, 32767, 360, 0, 60, 32767, 32767, 0, 32767, 0, 325, 32767, 333, 32767, -54, 399, 0, 28, 237, -648, 32767, 108, 438, 32767, 221, 390, 32767, 32767, 223, 687, 452, 125, 32767, -913, 186, 0, 32767, 32767, 32767, 32767, 0, 0, 32767, 32767, 32767, -27, 1087, 464, -305, 427, 898, 32767, 0, 32767, 0, 32767, 104, 32767, 32767, 260, 1065, 0, 703, 32767, 0, 337, 350, 767, 32767, -330, 379, 32767, 32767, 32767, 32767, 32767, 32767, 228, 32767, 32767, 32767, 0, -87, -48, 32767, -541, 415, 32767, 306, 32767, 32767, 32767, -117, 15, 0, 0, 32767, 412, -645, 223, -558, 32767, 32767, 32767, 32767, 32767, -254, 162, -372, 0, 0, 32767, 353, 0, 199, 32767, 664, 32767, 32767, 0, 32767, -148, 32767, -98, 32767, 449, 0, 32767, 383, -495, -295, 208, 0, 32767, 511, 17, 32767, 32767, 0, 387, 32767, 32767, 32767, 0, 32767, 32767, 2, -2, -177, 32767, 0, 32767, 150, 32767, -471, 32767, -282, 32767, 240, 183, 357, 423, 32767, 435, 32767, 284, 32767, 358, 298, 195, 72, 0, 421, 535, 32767, 426, -206, 222, 32767, 0, 466, 36, 426, 32767, 32767, 0, 32767, 0, 32767, 70, 479, 32767, 514, 32767, 32767, 697, 436, 43, 155, 32767, 32767, 0, 32767, -155, 32767, 11, 649, -376, 32767, 0, -683, -330, 361, 0, 57, 263, -43, 32767, 383, 0, 32767, 217, 32767, 0, 478, 32767, 0, 32767, 463, 32767, 501, 32767, 237, 301, 545, 302, 67, 311, 1135, 152, 0, 342, 32767, 350, 418, 32767, 0, 428, 0, 0, -353, 381, 790, 32767, 32767, -259, 32767, 32767, 32767, 229, 417, 0, 232, 32767, 0, 980, 32767, 0, 0, 275, -314, 0, 0, 32767, 32767, 32767, 32767, 32767, 0, 0, -89, 292, 1049, 32767, 32767, -284, 18, 32767, 175, 0, 732, 111, 32767, 428, -167, 92, -59, 199, 0, 793, 702, -231, 32767, 32767, 32767, 32767, 187, 549, 32767, 32767, 32767, 32767, 69, 480, 0, 490, 430, 32767, 32767, 32767, 32767, -2, 32767, 240, 32767, 471, 275, 32767, 524, 17, 0, 32767, 144, 0, 310, 371, 328, 1016, -639, 32767, 51, 32767, -982, 32767, 0, -727, 32767, 32767, -117, -115, 249, 32767, 32767, -6, 32767, 183, -350, 32767, 14, 32767, 32767, 118, -137, -321, 32767, 793, 32767, 32767, 32767, 0, 32767, 77, 204, 71, 32767, -228, -516, 32767, 790, 389, -1, 112, 366, 245, 32767, 0, 32767, 0, -625, 154, -211, 32767, 32767, 105, -253, 214, 0, 203, 392, 0, 32767, 32767, 62, 102, 32767, 32767, 29, 0, 0, 306, 32767, 32767, -29, 194, 0, -120, 32767, 32767, 32767, 376, 32767, 27, 32767, 356, 32767, 0, 32767, 75, 174, 32767, 32767, 32767, -37, 32767, 255, 124, 845, 32767, 0, 32767, 64, 32767, -472, -648, 32767, 584, 0, 32767, 19, 201, 32767, 0, 32767, 32767, -414, -171, -621, 32767, -134, 0, 515, 0, 767, 32767, 32767, 414, 32767, -88, -236, 32767, -52, 298, -254, 32767, 39, 0, 65, 118, 32767, 182, 32767, 134, 0, 32767, 32767, 400, 0, 32767, 32767, 705, 0, 32767, 32767, 269, 32767, 32767, 296, 290, 32767, 0, 0, 32767, 61, 32767, 299, 32767, -227, 240, 32767, 0, 32767, 32767, 32767, 129, 32767, 0, 252, 32767, 0, -487, 32767, 0, -127, 32767, 32767, 132, 18, 0, 32767, 32767, -154, 0, 946, 401, 264, 378, 0, 326, 32767, 0, 465, 233, 87, 32767, 47, 0, -357, 32767, 32767, 0, 0, -245, 835, 887, 32767, 32767, 32767, 32767, 32767, 334, 0, -56, 32767, -196, 0, 32767, 32767, 32767, 154, 32767, 20, -175, 63, 537, 32767, 358, 32767, 121, 32767, 32767, 754, 0, 32767, 0, -113, 0, 0, 207, 0, -256, 32767, 241, 32767, 257, 32767, 194, -595, 23, 19, 268, 666, 231, 0, 211, 32767, 32767, 32767, 32767, 0, 115, 136, 0, 32767, 32767, 404, -252, -432, 0, 0, 341, 32767, 410, 32767, -125, 9, 32767, 482, 727, 0, 32767, 252, 0, 32767, 32767, 147, 124, 270, 10, -124, 47, 0, 300, 445, -246, 32767, 111, 32767, 32767, 32767, -356, 103, 81, 32767, 32767, 32767, 32767, 280, 306, 0, 32767, 695, 32767, -768, 32767, 32767, 0, 32767, 0, 32767, 145, 44, 32767, 32767, 32767, 432, 136, 32767, 0, -903, 251, 32767, -222, 370, 405, 99, 17, 32767, 564, 32767, 32767, 32767, 0, 32767, 32767, 32767, 141, 0, 0, 32767, 32767, 32767, 344, 0, 464, 0, 0, 32767, 32767, 32767, 0, 463, 32767, 32767, 329, 32767, 32767, 422, 32767, 220, 32767, 347, 32767, -17, 253, 18 }; const unsigned char *k = (const unsigned char *) key; uint32 a = 0; uint32 b = 0; while (keylen--) { unsigned char c = *k++ | 0x20; a = a * 257 + c; b = b * 31 + c; } return h[a % 983] + h[b % 983]; } const ScanKeywordList ScanKeywords = { ScanKeywords_kw_string, ScanKeywords_kw_offsets, ScanKeywords_hash_func, SCANKEYWORDS_NUM_KEYWORDS, 17 }; #endif /* KWLIST_D_H */ libpg_query-17-6.1.0/src/postgres/include/lib/000077500000000000000000000000001477334012600211225ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/lib/dshash.h000066400000000000000000000116361477334012600225540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * dshash.h * Concurrent hash tables backed by dynamic shared memory areas. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/lib/dshash.h * *------------------------------------------------------------------------- */ #ifndef DSHASH_H #define DSHASH_H #include "utils/dsa.h" /* The opaque type representing a hash table. */ struct dshash_table; typedef struct dshash_table dshash_table; /* A handle for a dshash_table which can be shared with other processes. */ typedef dsa_pointer dshash_table_handle; /* Sentinel value to use for invalid dshash_table handles. */ #define DSHASH_HANDLE_INVALID ((dshash_table_handle) InvalidDsaPointer) /* The type for hash values. */ typedef uint32 dshash_hash; /* A function type for comparing keys. */ typedef int (*dshash_compare_function) (const void *a, const void *b, size_t size, void *arg); /* A function type for computing hash values for keys. */ typedef dshash_hash (*dshash_hash_function) (const void *v, size_t size, void *arg); /* A function type for copying keys. */ typedef void (*dshash_copy_function) (void *dest, const void *src, size_t size, void *arg); /* * The set of parameters needed to create or attach to a hash table. The * tranche_id member does not need to be initialized when attaching to an * existing hash table. * * Compare, hash, and copy functions must be supplied even when attaching, * because we can't safely share function pointers between backends in general. * The user data pointer supplied to the create and attach functions will be * passed to these functions. */ typedef struct dshash_parameters { size_t key_size; /* Size of the key (initial bytes of entry) */ size_t entry_size; /* Total size of entry */ dshash_compare_function compare_function; /* Compare function */ dshash_hash_function hash_function; /* Hash function */ dshash_copy_function copy_function; /* Copy function */ int tranche_id; /* The tranche ID to use for locks */ } dshash_parameters; /* Forward declaration of private types for use only by dshash.c. */ struct dshash_table_item; typedef struct dshash_table_item dshash_table_item; /* * Sequential scan state. The detail is exposed to let users know the storage * size but it should be considered as an opaque type by callers. */ typedef struct dshash_seq_status { dshash_table *hash_table; /* dshash table working on */ int curbucket; /* bucket number we are at */ int nbuckets; /* total number of buckets in the dshash */ dshash_table_item *curitem; /* item we are currently at */ dsa_pointer pnextitem; /* dsa-pointer to the next item */ int curpartition; /* partition number we are at */ bool exclusive; /* locking mode */ } dshash_seq_status; /* Creating, sharing and destroying from hash tables. */ extern dshash_table *dshash_create(dsa_area *area, const dshash_parameters *params, void *arg); extern dshash_table *dshash_attach(dsa_area *area, const dshash_parameters *params, dshash_table_handle handle, void *arg); extern void dshash_detach(dshash_table *hash_table); extern dshash_table_handle dshash_get_hash_table_handle(dshash_table *hash_table); extern void dshash_destroy(dshash_table *hash_table); /* Finding, creating, deleting entries. */ extern void *dshash_find(dshash_table *hash_table, const void *key, bool exclusive); extern void *dshash_find_or_insert(dshash_table *hash_table, const void *key, bool *found); extern bool dshash_delete_key(dshash_table *hash_table, const void *key); extern void dshash_delete_entry(dshash_table *hash_table, void *entry); extern void dshash_release_lock(dshash_table *hash_table, void *entry); /* seq scan support */ extern void dshash_seq_init(dshash_seq_status *status, dshash_table *hash_table, bool exclusive); extern void *dshash_seq_next(dshash_seq_status *status); extern void dshash_seq_term(dshash_seq_status *status); extern void dshash_delete_current(dshash_seq_status *status); /* * Convenience hash, compare, and copy functions wrapping memcmp, tag_hash, and * memcpy. */ extern int dshash_memcmp(const void *a, const void *b, size_t size, void *arg); extern dshash_hash dshash_memhash(const void *v, size_t size, void *arg); extern void dshash_memcpy(void *dest, const void *src, size_t size, void *arg); /* * Convenience hash, compare, and copy functions wrapping strcmp, string_hash, * and strcpy. */ extern int dshash_strcmp(const void *a, const void *b, size_t size, void *arg); extern dshash_hash dshash_strhash(const void *v, size_t size, void *arg); extern void dshash_strcpy(void *dest, const void *src, size_t size, void *arg); /* Debugging support. */ extern void dshash_dump(dshash_table *hash_table); #endif /* DSHASH_H */ libpg_query-17-6.1.0/src/postgres/include/lib/ilist.h000066400000000000000000000764631477334012600224370ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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.) * * The doubly-linked list comes in 2 forms. dlist_head defines a head of a * doubly-linked list of dlist_nodes, whereas dclist_head defines the head of * a doubly-linked list of dlist_nodes with an additional 'count' field to * keep track of how many items are contained within the given list. For * simplicity, dlist_head and dclist_head share the same node and iterator * types. The functions to manipulate a dlist_head always have a name * starting with "dlist", whereas functions to manipulate a dclist_head have a * name starting with "dclist". dclist_head comes with an additional function * (dclist_count) to return the number of entries in the list. dclists are * able to store a maximum of PG_UINT32_MAX elements. It is up to the caller * to ensure no more than this many items are added to a dclist. * * None of the functions here allocate any memory; they just manipulate * externally managed memory. With the exception doubly-linked count lists * providing the ability to obtain the number of items in the list, the APIs * for singly and both 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. * * For both doubly-linked list types, there are two valid ways to represent an * empty list. The head's 'next' pointer can either be NULL or the head's * 'next' and 'prev' links can both point back to the list head (circular). * (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 NULL initialization. * * 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-2024, 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 type for dlist_head and dclist_head types. * * Used as state in dlist_foreach() and dlist_reverse_foreach() (and the * dclist variant thereof). * * 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() and dclist_foreach() macros. */ typedef struct dlist_iter { dlist_node *cur; /* current element */ dlist_node *end; /* last node we'll iterate to */ } dlist_iter; /* * Doubly linked list iterator for both dlist_head and dclist_head types. * This iterator type allows some modifications while iterating. * * Used as state in dlist_foreach_modify() and dclist_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; /* * Head of a doubly linked list with a count of the number of items * * This internally makes use of a dlist to implement the actual list. When * items are added or removed from the list the count is updated to reflect * the current number of items in the list. */ typedef struct dclist_head { dlist_head dlist; /* the actual list header */ uint32 count; /* the number of items in the list */ } dclist_head; /* * 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 DCLIST_STATIC_INIT(name) {{{&(name).dlist.head, &(name).dlist.head}}, 0} #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, const slist_node *node); #ifdef ILIST_DEBUG extern void dlist_member_check(const dlist_head *head, const dlist_node *node); extern void dlist_check(const dlist_head *head); extern void slist_check(const 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_member_check(head, node) ((void) (head)) #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; } /* * Initialize a doubly linked list element. * * This is only needed when dlist_node_is_detached() may be needed. */ static inline void dlist_node_init(dlist_node *node) { node->next = node->prev = NULL; } /* * 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(const 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; } /* * Like dlist_delete(), but also sets next/prev to NULL to signal not being in * a list. */ static inline void dlist_delete_thoroughly(dlist_node *node) { node->prev->next = node->next; node->next->prev = node->prev; node->next = NULL; node->prev = NULL; } /* * Same as dlist_delete, but performs checks in ILIST_DEBUG builds to ensure * that 'node' belongs to 'head'. */ static inline void dlist_delete_from(dlist_head *head, dlist_node *node) { dlist_member_check(head, node); dlist_delete(node); } /* * Like dlist_delete_from, but also sets next/prev to NULL to signal not * being in a list. */ static inline void dlist_delete_from_thoroughly(dlist_head *head, dlist_node *node) { dlist_member_check(head, node); dlist_delete_thoroughly(node); } /* * 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); } /* * Move element from its current position in the list to the tail position in * the same list. * * Undefined behaviour if 'node' is not already part of the list. */ static inline void dlist_move_tail(dlist_head *head, dlist_node *node) { /* fast path if it's already at the tail */ if (head->head.prev == node) return; dlist_delete(node); dlist_push_tail(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(const dlist_head *head, const 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(const dlist_head *head, const dlist_node *node) { return node->prev != &head->head; } /* * Check if node is detached. A node is only detached if it either has been * initialized with dlist_init_node(), or deleted with * dlist_delete_thoroughly() / dlist_delete_from_thoroughly() / * dclist_delete_from_thoroughly(). */ static inline bool dlist_node_is_detached(const dlist_node *node) { Assert((node->next == NULL && node->prev == NULL) || (node->next != NULL && node->prev != NULL)); return node->next == NULL; } /* * 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) /* doubly-linked count list implementation */ /* * dclist_init * Initialize a doubly linked count list. * * Previous state will be thrown away without any cleanup. */ static inline void dclist_init(dclist_head *head) { dlist_init(&head->dlist); head->count = 0; } /* * dclist_is_empty * Returns true if the list is empty, otherwise false. */ static inline bool dclist_is_empty(const dclist_head *head) { Assert(dlist_is_empty(&head->dlist) == (head->count == 0)); return (head->count == 0); } /* * dclist_push_head * Insert a node at the beginning of the list. */ static inline void dclist_push_head(dclist_head *head, dlist_node *node) { if (head->dlist.head.next == NULL) /* convert NULL header to circular */ dclist_init(head); dlist_push_head(&head->dlist, node); head->count++; Assert(head->count > 0); /* count overflow check */ } /* * dclist_push_tail * Insert a node at the end of the list. */ static inline void dclist_push_tail(dclist_head *head, dlist_node *node) { if (head->dlist.head.next == NULL) /* convert NULL header to circular */ dclist_init(head); dlist_push_tail(&head->dlist, node); head->count++; Assert(head->count > 0); /* count overflow check */ } /* * dclist_insert_after * Insert a node after another *in the same list* * * Caution: 'after' must be a member of 'head'. */ static inline void dclist_insert_after(dclist_head *head, dlist_node *after, dlist_node *node) { dlist_member_check(&head->dlist, after); Assert(head->count > 0); /* must be at least 1 already */ dlist_insert_after(after, node); head->count++; Assert(head->count > 0); /* count overflow check */ } /* * dclist_insert_before * Insert a node before another *in the same list* * * Caution: 'before' must be a member of 'head'. */ static inline void dclist_insert_before(dclist_head *head, dlist_node *before, dlist_node *node) { dlist_member_check(&head->dlist, before); Assert(head->count > 0); /* must be at least 1 already */ dlist_insert_before(before, node); head->count++; Assert(head->count > 0); /* count overflow check */ } /* * dclist_delete_from * Deletes 'node' from 'head'. * * Caution: 'node' must be a member of 'head'. */ static inline void dclist_delete_from(dclist_head *head, dlist_node *node) { Assert(head->count > 0); dlist_delete_from(&head->dlist, node); head->count--; } /* * Like dclist_delete_from(), but also sets next/prev to NULL to signal not * being in a list. */ static inline void dclist_delete_from_thoroughly(dclist_head *head, dlist_node *node) { Assert(head->count > 0); dlist_delete_from_thoroughly(&head->dlist, node); head->count--; } /* * dclist_pop_head_node * Remove and return the first node from a list (there must be one). */ static inline dlist_node * dclist_pop_head_node(dclist_head *head) { dlist_node *node; Assert(head->count > 0); node = dlist_pop_head_node(&head->dlist); head->count--; return node; } /* * dclist_move_head * Move 'node' from its current position in the list to the head position * in 'head'. * * Caution: 'node' must be a member of 'head'. */ static inline void dclist_move_head(dclist_head *head, dlist_node *node) { dlist_member_check(&head->dlist, node); Assert(head->count > 0); dlist_move_head(&head->dlist, node); } /* * dclist_move_tail * Move 'node' from its current position in the list to the tail position * in 'head'. * * Caution: 'node' must be a member of 'head'. */ static inline void dclist_move_tail(dclist_head *head, dlist_node *node) { dlist_member_check(&head->dlist, node); Assert(head->count > 0); dlist_move_tail(&head->dlist, node); } /* * dclist_has_next * Check whether 'node' has a following node. * * Caution: 'node' must be a member of 'head'. */ static inline bool dclist_has_next(const dclist_head *head, const dlist_node *node) { dlist_member_check(&head->dlist, node); Assert(head->count > 0); return dlist_has_next(&head->dlist, node); } /* * dclist_has_prev * Check whether 'node' has a preceding node. * * Caution: 'node' must be a member of 'head'. */ static inline bool dclist_has_prev(const dclist_head *head, const dlist_node *node) { dlist_member_check(&head->dlist, node); Assert(head->count > 0); return dlist_has_prev(&head->dlist, node); } /* * dclist_next_node * Return the next node in the list (there must be one). */ static inline dlist_node * dclist_next_node(dclist_head *head, dlist_node *node) { Assert(head->count > 0); return dlist_next_node(&head->dlist, node); } /* * dclist_prev_node * Return the prev node in the list (there must be one). */ static inline dlist_node * dclist_prev_node(dclist_head *head, dlist_node *node) { Assert(head->count > 0); return dlist_prev_node(&head->dlist, node); } /* internal support function to get address of head element's struct */ static inline void * dclist_head_element_off(dclist_head *head, size_t off) { Assert(!dclist_is_empty(head)); return (char *) head->dlist.head.next - off; } /* * dclist_head_node * Return the first node in the list (there must be one). */ static inline dlist_node * dclist_head_node(dclist_head *head) { Assert(head->count > 0); return (dlist_node *) dlist_head_element_off(&head->dlist, 0); } /* internal support function to get address of tail element's struct */ static inline void * dclist_tail_element_off(dclist_head *head, size_t off) { Assert(!dclist_is_empty(head)); return (char *) head->dlist.head.prev - off; } /* * Return the last node in the list (there must be one). */ static inline dlist_node * dclist_tail_node(dclist_head *head) { Assert(head->count > 0); return (dlist_node *) dlist_tail_element_off(&head->dlist, 0); } /* * dclist_count * Returns the stored number of entries in 'head' */ static inline uint32 dclist_count(const dclist_head *head) { Assert(dlist_is_empty(&head->dlist) == (head->count == 0)); return head->count; } /* * 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. * * Note: This is effectively just the same as dlist_container, so reuse that. */ #define dclist_container(type, membername, ptr) \ dlist_container(type, membername, ptr) /* * Return the address of the first element in the list. * * The list must not be empty. */ #define dclist_head_element(type, membername, lhead) \ (AssertVariableIsOfTypeMacro(((type *) NULL)->membername, dlist_node), \ (type *) dclist_head_element_off(lhead, offsetof(type, membername))) /* * Return the address of the last element in the list. * * The list must not be empty. */ #define dclist_tail_element(type, membername, lhead) \ (AssertVariableIsOfTypeMacro(((type *) NULL)->membername, dlist_node), \ ((type *) dclist_tail_element_off(lhead, offsetof(type, membername)))) /* Iterators for dclists */ #define dclist_foreach(iter, lhead) \ dlist_foreach(iter, &((lhead)->dlist)) #define dclist_foreach_modify(iter, lhead) \ dlist_foreach_modify(iter, &((lhead)->dlist)) #define dclist_reverse_foreach(iter, lhead) \ dlist_reverse_foreach(iter, &((lhead)->dlist)) /* 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(const 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(const slist_head *head, const 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-17-6.1.0/src/postgres/include/lib/pairingheap.h000066400000000000000000000066611477334012600235730ustar00rootroot00000000000000/* * pairingheap.h * * A Pairing Heap implementation * * Portions Copyright (c) 2012-2024, 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-17-6.1.0/src/postgres/include/lib/simplehash.h000066400000000000000000001017121477334012600234320ustar00rootroot00000000000000/* * simplehash.h * * When included this file generates a "templated" (by way of macros) * open-addressing hash table implementation specialized to user-defined * types. * * It's probably not worthwhile to generate such a specialized implementation * for hash tables that aren't performance or space sensitive. * * Compared to dynahash, simplehash has the following benefits: * * - Due to the "templated" code generation has known structure sizes and no * indirect function calls (which show up substantially in dynahash * profiles). These features considerably increase speed for small * entries. * - Open addressing has better CPU cache behavior than dynahash's chained * hashtables. * - The generated interface is type-safe and easier to use than dynahash, * though at the cost of more complex setup. * - Allocates memory in a MemoryContext or another allocator with a * malloc/free style interface (which isn't easily usable in a shared * memory context) * - Does not require the overhead of a separate memory context. * * 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. The allocator must zero the returned space. * - 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 * * The element type is required to contain a "status" member that can store * the range of values defined in the SH_STATUS enum. * * While SH_STORE_HASH (and subsequently SH_GET_HASH) are optional, because * the hash table implementation needs to compare hashes to move elements * (particularly when growing the hash), it's preferable, if possible, to * store the element's hash in the element's data type. If the hash is so * stored, the hash table will also compare hashes before calling SH_EQUAL * when comparing two keys. * * For convenience the hash table create functions accept a void pointer * that will be stored in the hash table type's member private_data. This * allows callbacks to reference caller provided data. * * 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. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/lib/simplehash.h */ #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_ITEM SH_MAKE_NAME(delete_item) #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_SIZE SH_MAKE_NAME(compute_size) #define SH_UPDATE_PARAMETERS SH_MAKE_NAME(update_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 /* _hash _create(uint32 nelements, void *private_data) */ SH_SCOPE SH_TYPE *SH_CREATE(uint32 nelements, void *private_data); #else /* * _hash _create(MemoryContext ctx, uint32 nelements, * void *private_data) */ SH_SCOPE SH_TYPE *SH_CREATE(MemoryContext ctx, uint32 nelements, void *private_data); #endif /* void _destroy(_hash *tb) */ SH_SCOPE void SH_DESTROY(SH_TYPE * tb); /* void _reset(_hash *tb) */ SH_SCOPE void SH_RESET(SH_TYPE * tb); /* void _grow(_hash *tb, uint64 newsize) */ SH_SCOPE void SH_GROW(SH_TYPE * tb, uint64 newsize); /* *_insert(_hash *tb, key, bool *found) */ SH_SCOPE SH_ELEMENT_TYPE *SH_INSERT(SH_TYPE * tb, SH_KEY_TYPE key, bool *found); /* * *_insert_hash(_hash *tb, key, uint32 hash, * bool *found) */ SH_SCOPE SH_ELEMENT_TYPE *SH_INSERT_HASH(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash, bool *found); /* *_lookup(_hash *tb, key) */ SH_SCOPE SH_ELEMENT_TYPE *SH_LOOKUP(SH_TYPE * tb, SH_KEY_TYPE key); /* *_lookup_hash(_hash *tb, key, uint32 hash) */ SH_SCOPE SH_ELEMENT_TYPE *SH_LOOKUP_HASH(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash); /* void _delete_item(_hash *tb, *entry) */ SH_SCOPE void SH_DELETE_ITEM(SH_TYPE * tb, SH_ELEMENT_TYPE * entry); /* bool _delete(_hash *tb, key) */ SH_SCOPE bool SH_DELETE(SH_TYPE * tb, SH_KEY_TYPE key); /* void _start_iterate(_hash *tb, _iterator *iter) */ SH_SCOPE void SH_START_ITERATE(SH_TYPE * tb, SH_ITERATOR * iter); /* * void _start_iterate_at(_hash *tb, _iterator *iter, * uint32 at) */ SH_SCOPE void SH_START_ITERATE_AT(SH_TYPE * tb, SH_ITERATOR * iter, uint32 at); /* *_iterate(_hash *tb, _iterator *iter) */ SH_SCOPE SH_ELEMENT_TYPE *SH_ITERATE(SH_TYPE * tb, SH_ITERATOR * iter); /* void _stat(_hash *tb */ 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_fatal(__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 allocation size for hashtable. Result can be passed to * SH_UPDATE_PARAMETERS. */ static inline uint64 SH_COMPUTE_SIZE(uint64 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 (unlikely((((uint64) sizeof(SH_ELEMENT_TYPE)) * size) >= SIZE_MAX / 2)) sh_error("hash table too large"); return size; } /* * Update sizing parameters for hashtable. Called when creating and growing * the hashtable. */ static inline void SH_UPDATE_PARAMETERS(SH_TYPE * tb, uint64 newsize) { uint64 size = SH_COMPUTE_SIZE(newsize); /* now set size */ tb->size = size; tb->sizemask = (uint32) (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_TYPE *) SH_RAW_ALLOCATOR(sizeof(SH_TYPE)); #else tb = (SH_TYPE *) 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); size = SH_COMPUTE_SIZE(size); tb->data = (SH_ELEMENT_TYPE *) SH_ALLOCATE(tb, sizeof(SH_ELEMENT_TYPE) * size); SH_UPDATE_PARAMETERS(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, uint64 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); newsize = SH_COMPUTE_SIZE(newsize); tb->data = (SH_ELEMENT_TYPE *) SH_ALLOCATE(tb, sizeof(SH_ELEMENT_TYPE) * newsize); /* * Update parameters for new table after allocation succeeds to avoid * inconsistent state on OOM. */ SH_UPDATE_PARAMETERS(tb, newsize); 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 startelem2; uint32 curelem; SH_ELEMENT_TYPE *newentry; hash = SH_ENTRY_HASH(tb, oldentry); startelem2 = SH_INITIAL_BUCKET(tb, hash); curelem = startelem2; /* find empty element to put data into */ while (true) { newentry = &newdata[curelem]; if (newentry->status == SH_STATUS_EMPTY) { break; } curelem = SH_NEXT(tb, curelem, startelem2); } /* 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 (unlikely(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 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 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 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 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 by key. 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); } } /* * Delete entry from hash table by entry pointer */ SH_SCOPE void SH_DELETE_ITEM(SH_TYPE * tb, SH_ELEMENT_TYPE * entry) { SH_ELEMENT_TYPE *lastentry = entry; uint32 hash = SH_ENTRY_HASH(tb, entry); uint32 startelem = SH_INITIAL_BUCKET(tb, hash); uint32 curelem; /* Calculate the index of 'entry' */ curelem = entry - &tb->data[0]; 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; } } /* * Initialize iterator. */ SH_SCOPE void SH_START_ITERATE(SH_TYPE * tb, SH_ITERATOR * iter) { 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 (uint32 i = 0; i < tb->size; i++) { SH_ELEMENT_TYPE *entry = &tb->data[i]; if (entry->status != SH_STATUS_IN_USE) { startelem = i; break; } } /* we should have found an empty element */ 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 = (uint32 *) 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; } /* large enough to be worth freeing, even if just used for debugging */ pfree(collisions); 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: %u, 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_ITEM #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_SIZE #undef SH_UPDATE_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-17-6.1.0/src/postgres/include/lib/sort_template.h000066400000000000000000000323151477334012600241610ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sort_template.h * * A template for a sort algorithm that supports varying degrees of * specialization. * * Copyright (c) 2021-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1992-1994, Regents of the University of California * * Usage notes: * * To generate functions specialized for a type, the following parameter * macros should be #define'd before this file is included. * * - ST_SORT - the name of a sort function to be generated * - ST_ELEMENT_TYPE - type of the referenced elements * - ST_DECLARE - if defined the functions and types are declared * - ST_DEFINE - if defined the functions and types are defined * - ST_SCOPE - scope (e.g. extern, static inline) for functions * - ST_CHECK_FOR_INTERRUPTS - if defined the sort is interruptible * * Instead of ST_ELEMENT_TYPE, ST_ELEMENT_TYPE_VOID can be defined. Then * the generated functions will automatically gain an "element_size" * parameter. This allows us to generate a traditional qsort function. * * One of the following macros must be defined, to show how to compare * elements. The first two options are arbitrary expressions depending * on whether an extra pass-through argument is desired, and the third * option should be defined if the sort function should receive a * function pointer at runtime. * * - ST_COMPARE(a, b) - a simple comparison expression * - ST_COMPARE(a, b, arg) - variant that takes an extra argument * - ST_COMPARE_RUNTIME_POINTER - sort function takes a function pointer * * NB: If the comparator function is inlined, some compilers may produce * worse code with the optimized comparison routines in common/int.h than * with code with the following form: * * if (a < b) * return -1; * if (a > b) * return 1; * return 0; * * To say that the comparator and therefore also sort function should * receive an extra pass-through argument, specify the type of the * argument. * * - ST_COMPARE_ARG_TYPE - type of extra argument * * The prototype of the generated sort function is: * * void ST_SORT(ST_ELEMENT_TYPE *data, size_t n, * [size_t element_size,] * [ST_SORT_compare_function compare,] * [ST_COMPARE_ARG_TYPE *arg]); * * ST_SORT_compare_function is a function pointer of the following type: * * int (*)(const ST_ELEMENT_TYPE *a, const ST_ELEMENT_TYPE *b, * [ST_COMPARE_ARG_TYPE *arg]) * * HISTORY * * 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 * - Convert into a header that can generate specialized functions * * IDENTIFICATION * src/include/lib/sort_template.h * *------------------------------------------------------------------------- */ /* $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. */ /* * 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 ST_MAKE_PREFIX(a) CppConcat(a,_) #define ST_MAKE_NAME(a,b) ST_MAKE_NAME_(ST_MAKE_PREFIX(a),b) #define ST_MAKE_NAME_(a,b) CppConcat(a,b) /* * If the element type is void, we'll also need an element_size argument * because we don't know the size. */ #ifdef ST_ELEMENT_TYPE_VOID #define ST_ELEMENT_TYPE void #define ST_SORT_PROTO_ELEMENT_SIZE , size_t element_size #define ST_SORT_INVOKE_ELEMENT_SIZE , element_size #else #define ST_SORT_PROTO_ELEMENT_SIZE #define ST_SORT_INVOKE_ELEMENT_SIZE #endif /* * If the user wants to be able to pass in compare functions at runtime, * we'll need to make that an argument of the sort and med3 functions. */ #ifdef ST_COMPARE_RUNTIME_POINTER /* * The type of the comparator function pointer that ST_SORT will take, unless * you've already declared a type name manually and want to use that instead of * having a new one defined. */ #ifndef ST_COMPARATOR_TYPE_NAME #define ST_COMPARATOR_TYPE_NAME ST_MAKE_NAME(ST_SORT, compare_function) #endif #define ST_COMPARE compare #ifndef ST_COMPARE_ARG_TYPE #define ST_SORT_PROTO_COMPARE , ST_COMPARATOR_TYPE_NAME compare #define ST_SORT_INVOKE_COMPARE , compare #else #define ST_SORT_PROTO_COMPARE , ST_COMPARATOR_TYPE_NAME compare #define ST_SORT_INVOKE_COMPARE , compare #endif #else #define ST_SORT_PROTO_COMPARE #define ST_SORT_INVOKE_COMPARE #endif /* * If the user wants to use a compare function or expression that takes an * extra argument, we'll need to make that an argument of the sort, compare and * med3 functions. */ #ifdef ST_COMPARE_ARG_TYPE #define ST_SORT_PROTO_ARG , ST_COMPARE_ARG_TYPE *arg #define ST_SORT_INVOKE_ARG , arg #else #define ST_SORT_PROTO_ARG #define ST_SORT_INVOKE_ARG #endif #ifdef ST_DECLARE #ifdef ST_COMPARE_RUNTIME_POINTER typedef int (*ST_COMPARATOR_TYPE_NAME) (const ST_ELEMENT_TYPE *, const ST_ELEMENT_TYPE * ST_SORT_PROTO_ARG); #endif /* Declare the sort function. Note optional arguments at end. */ ST_SCOPE void ST_SORT(ST_ELEMENT_TYPE * first, size_t n ST_SORT_PROTO_ELEMENT_SIZE ST_SORT_PROTO_COMPARE ST_SORT_PROTO_ARG); #endif #ifdef ST_DEFINE /* sort private helper functions */ #define ST_MED3 ST_MAKE_NAME(ST_SORT, med3) #define ST_SWAP ST_MAKE_NAME(ST_SORT, swap) #define ST_SWAPN ST_MAKE_NAME(ST_SORT, swapn) /* Users expecting to run very large sorts may need them to be interruptible. */ #ifdef ST_CHECK_FOR_INTERRUPTS #define DO_CHECK_FOR_INTERRUPTS() CHECK_FOR_INTERRUPTS() #else #define DO_CHECK_FOR_INTERRUPTS() #endif /* * Create wrapper macros that know how to invoke compare, med3 and sort with * the right arguments. */ #ifdef ST_COMPARE_RUNTIME_POINTER #define DO_COMPARE(a_, b_) ST_COMPARE((a_), (b_) ST_SORT_INVOKE_ARG) #elif defined(ST_COMPARE_ARG_TYPE) #define DO_COMPARE(a_, b_) ST_COMPARE((a_), (b_), arg) #else #define DO_COMPARE(a_, b_) ST_COMPARE((a_), (b_)) #endif #define DO_MED3(a_, b_, c_) \ ST_MED3((a_), (b_), (c_) \ ST_SORT_INVOKE_COMPARE \ ST_SORT_INVOKE_ARG) #define DO_SORT(a_, n_) \ ST_SORT((a_), (n_) \ ST_SORT_INVOKE_ELEMENT_SIZE \ ST_SORT_INVOKE_COMPARE \ ST_SORT_INVOKE_ARG) /* * If we're working with void pointers, we'll use pointer arithmetic based on * uint8, and use the runtime element_size to step through the array and swap * elements. Otherwise we'll work with ST_ELEMENT_TYPE. */ #ifndef ST_ELEMENT_TYPE_VOID #define ST_POINTER_TYPE ST_ELEMENT_TYPE #define ST_POINTER_STEP 1 #define DO_SWAPN(a_, b_, n_) ST_SWAPN((a_), (b_), (n_)) #define DO_SWAP(a_, b_) ST_SWAP((a_), (b_)) #else #define ST_POINTER_TYPE uint8 #define ST_POINTER_STEP element_size #define DO_SWAPN(a_, b_, n_) ST_SWAPN((a_), (b_), (n_)) #define DO_SWAP(a_, b_) DO_SWAPN((a_), (b_), element_size) #endif /* * Find the median of three values. Currently, performance seems to be best * if the comparator is inlined here, but the med3 function is not inlined * in the qsort function. * * Refer to the comment at the top of this file for known caveats to consider * when writing inlined comparator functions. */ static pg_noinline ST_ELEMENT_TYPE * ST_MED3(ST_ELEMENT_TYPE * a, ST_ELEMENT_TYPE * b, ST_ELEMENT_TYPE * c ST_SORT_PROTO_COMPARE ST_SORT_PROTO_ARG) { return DO_COMPARE(a, b) < 0 ? (DO_COMPARE(b, c) < 0 ? b : (DO_COMPARE(a, c) < 0 ? c : a)) : (DO_COMPARE(b, c) > 0 ? b : (DO_COMPARE(a, c) < 0 ? a : c)); } static inline void ST_SWAP(ST_POINTER_TYPE * a, ST_POINTER_TYPE * b) { ST_POINTER_TYPE tmp = *a; *a = *b; *b = tmp; } static inline void ST_SWAPN(ST_POINTER_TYPE * a, ST_POINTER_TYPE * b, size_t n) { for (size_t i = 0; i < n; ++i) ST_SWAP(&a[i], &b[i]); } /* * Sort an array. */ ST_SCOPE void ST_SORT(ST_ELEMENT_TYPE * data, size_t n ST_SORT_PROTO_ELEMENT_SIZE ST_SORT_PROTO_COMPARE ST_SORT_PROTO_ARG) { ST_POINTER_TYPE *a = (ST_POINTER_TYPE *) data, *pa, *pb, *pc, *pd, *pl, *pm, *pn; size_t d1, d2; int r, presorted; loop: DO_CHECK_FOR_INTERRUPTS(); if (n < 7) { for (pm = a + ST_POINTER_STEP; pm < a + n * ST_POINTER_STEP; pm += ST_POINTER_STEP) for (pl = pm; pl > a && DO_COMPARE(pl - ST_POINTER_STEP, pl) > 0; pl -= ST_POINTER_STEP) DO_SWAP(pl, pl - ST_POINTER_STEP); return; } presorted = 1; for (pm = a + ST_POINTER_STEP; pm < a + n * ST_POINTER_STEP; pm += ST_POINTER_STEP) { DO_CHECK_FOR_INTERRUPTS(); if (DO_COMPARE(pm - ST_POINTER_STEP, pm) > 0) { presorted = 0; break; } } if (presorted) return; pm = a + (n / 2) * ST_POINTER_STEP; if (n > 7) { pl = a; pn = a + (n - 1) * ST_POINTER_STEP; if (n > 40) { size_t d = (n / 8) * ST_POINTER_STEP; pl = DO_MED3(pl, pl + d, pl + 2 * d); pm = DO_MED3(pm - d, pm, pm + d); pn = DO_MED3(pn - 2 * d, pn - d, pn); } pm = DO_MED3(pl, pm, pn); } DO_SWAP(a, pm); pa = pb = a + ST_POINTER_STEP; pc = pd = a + (n - 1) * ST_POINTER_STEP; for (;;) { while (pb <= pc && (r = DO_COMPARE(pb, a)) <= 0) { if (r == 0) { DO_SWAP(pa, pb); pa += ST_POINTER_STEP; } pb += ST_POINTER_STEP; DO_CHECK_FOR_INTERRUPTS(); } while (pb <= pc && (r = DO_COMPARE(pc, a)) >= 0) { if (r == 0) { DO_SWAP(pc, pd); pd -= ST_POINTER_STEP; } pc -= ST_POINTER_STEP; DO_CHECK_FOR_INTERRUPTS(); } if (pb > pc) break; DO_SWAP(pb, pc); pb += ST_POINTER_STEP; pc -= ST_POINTER_STEP; } pn = a + n * ST_POINTER_STEP; d1 = Min(pa - a, pb - pa); DO_SWAPN(a, pb - d1, d1); d1 = Min(pd - pc, pn - pd - ST_POINTER_STEP); DO_SWAPN(pb, pn - d1, d1); d1 = pb - pa; d2 = pd - pc; if (d1 <= d2) { /* Recurse on left partition, then iterate on right partition */ if (d1 > ST_POINTER_STEP) DO_SORT(a, d1 / ST_POINTER_STEP); if (d2 > ST_POINTER_STEP) { /* Iterate rather than recurse to save stack space */ /* DO_SORT(pn - d2, d2 / ST_POINTER_STEP) */ a = pn - d2; n = d2 / ST_POINTER_STEP; goto loop; } } else { /* Recurse on right partition, then iterate on left partition */ if (d2 > ST_POINTER_STEP) DO_SORT(pn - d2, d2 / ST_POINTER_STEP); if (d1 > ST_POINTER_STEP) { /* Iterate rather than recurse to save stack space */ /* DO_SORT(a, d1 / ST_POINTER_STEP) */ n = d1 / ST_POINTER_STEP; goto loop; } } } #endif #undef DO_CHECK_FOR_INTERRUPTS #undef DO_COMPARE #undef DO_MED3 #undef DO_SORT #undef DO_SWAP #undef DO_SWAPN #undef ST_CHECK_FOR_INTERRUPTS #undef ST_COMPARATOR_TYPE_NAME #undef ST_COMPARE #undef ST_COMPARE_ARG_TYPE #undef ST_COMPARE_RUNTIME_POINTER #undef ST_ELEMENT_TYPE #undef ST_ELEMENT_TYPE_VOID #undef ST_MAKE_NAME #undef ST_MAKE_NAME_ #undef ST_MAKE_PREFIX #undef ST_MED3 #undef ST_POINTER_STEP #undef ST_POINTER_TYPE #undef ST_SCOPE #undef ST_SORT #undef ST_SORT_INVOKE_ARG #undef ST_SORT_INVOKE_COMPARE #undef ST_SORT_INVOKE_ELEMENT_SIZE #undef ST_SORT_PROTO_ARG #undef ST_SORT_PROTO_COMPARE #undef ST_SORT_PROTO_ELEMENT_SIZE #undef ST_SWAP #undef ST_SWAPN libpg_query-17-6.1.0/src/postgres/include/lib/stringinfo.h000066400000000000000000000220511477334012600234550ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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. * len is the current string length. Except in the case of read-only * strings described below, there is guaranteed to be a * terminating '\0' at data[len]. * 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, except * in the read-only case described below. * cursor is initialized to zero by makeStringInfo, initStringInfo, * initReadOnlyStringInfo and initStringInfoFromString but is not * otherwise touched by the stringinfo.c routines. Some routines * use it to scan through a StringInfo. * * As a special case, a StringInfoData can be initialized with a read-only * string buffer. In this case "data" does not necessarily point at a * palloc'd chunk, and management of the buffer storage is the caller's * responsibility. maxlen is set to zero to indicate that this is the case. * Read-only StringInfoDatas cannot be appended to or reset. * Also, it is caller's option whether a read-only string buffer has a * terminating '\0' or not. This depends on the intended usage. *------------------------- */ typedef struct StringInfoData { char *data; int len; int maxlen; int cursor; } StringInfoData; typedef StringInfoData *StringInfo; /*------------------------ * There are four 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. * * StringInfoData string; * initReadOnlyStringInfo(&string, existingbuf, len); * The StringInfoData's data field is set to point directly to the * existing buffer and the StringInfoData's len is set to the given len. * The given buffer can point to memory that's not managed by palloc or * is pointing partway through a palloc'd chunk. The maxlen field is set * to 0. A read-only StringInfo cannot be appended to using any of the * appendStringInfo functions or reset with resetStringInfo(). The given * buffer can optionally omit the trailing NUL. * * StringInfoData string; * initStringInfoFromString(&string, palloced_buf, len); * The StringInfoData's data field is set to point directly to the given * buffer and the StringInfoData's len is set to the given len. This * method of initialization is useful when the buffer already exists. * StringInfos initialized this way can be appended to using the * appendStringInfo functions and reset with resetStringInfo(). The * given buffer must be NUL-terminated. The palloc'd buffer is assumed * to be len + 1 in size. * * To destroy a StringInfo, pfree() the data buffer, and then pfree() the * StringInfoData if it was palloc'd. For StringInfos created with * makeStringInfo(), destroyStringInfo() is provided for this purpose. * However, if the StringInfo was initialized using initReadOnlyStringInfo() * then the caller will need to consider if it is safe to pfree the data * buffer. * * 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); /*------------------------ * initReadOnlyStringInfo * Initialize a StringInfoData struct from an existing string without copying * the string. The caller is responsible for ensuring the given string * remains valid as long as the StringInfoData does. Calls to this are used * in performance critical locations where allocating a new buffer and copying * would be too costly. Read-only StringInfoData's may not be appended to * using any of the appendStringInfo functions or reset with * resetStringInfo(). * * 'data' does not need to point directly to a palloc'd chunk of memory and may * omit the NUL termination character at data[len]. */ static inline void initReadOnlyStringInfo(StringInfo str, char *data, int len) { str->data = data; str->len = len; str->maxlen = 0; /* read-only */ str->cursor = 0; } /*------------------------ * initStringInfoFromString * Initialize a StringInfoData struct from an existing string without copying * the string. 'data' must be a valid palloc'd chunk of memory that can have * repalloc() called should more space be required during a call to any of the * appendStringInfo functions. * * 'data' must be NUL terminated at 'len' bytes. */ static inline void initStringInfoFromString(StringInfo str, char *data, int len) { Assert(data[len] == '\0'); str->data = data; str->len = len; str->maxlen = len + 1; str->cursor = 0; } /*------------------------ * 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 void *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 void *data, int datalen); /*------------------------ * enlargeStringInfo * Make sure a StringInfo's buffer can hold at least 'needed' more bytes. */ extern void enlargeStringInfo(StringInfo str, int needed); /*------------------------ * destroyStringInfo * Frees a StringInfo and its buffer (opposite of makeStringInfo()). */ extern void destroyStringInfo(StringInfo str); #endif /* STRINGINFO_H */ libpg_query-17-6.1.0/src/postgres/include/libpq/000077500000000000000000000000001477334012600214635ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/libpq/auth.h000066400000000000000000000023151477334012600225760ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * auth.h * Definitions for network authentication routines * * * Portions Copyright (c) 1996-2024, 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 PGDLLIMPORT char *pg_krb_server_keyfile; extern PGDLLIMPORT bool pg_krb_caseins_users; extern PGDLLIMPORT bool pg_gss_accept_delegation; extern void ClientAuthentication(Port *port); extern void sendAuthRequest(Port *port, AuthRequest areq, const char *extradata, int extralen); /* Hook for plugins to get control in ClientAuthentication() */ typedef void (*ClientAuthentication_hook_type) (Port *, int); extern PGDLLIMPORT ClientAuthentication_hook_type ClientAuthentication_hook; /* hook type for password manglers */ typedef char *(*auth_password_hook_typ) (char *input); /* Default LDAP password mutator hook, can be overridden by a shared library */ extern PGDLLIMPORT auth_password_hook_typ ldap_password_hook; #endif /* AUTH_H */ libpg_query-17-6.1.0/src/postgres/include/libpq/crypt.h000066400000000000000000000027701477334012600230030ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * crypt.h * Interface to libpq/crypt.c * * Portions Copyright (c) 1996-2024, 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, const 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, const char **logdetail); extern int plain_crypt_verify(const char *role, const char *shadow_pass, const char *client_pass, const char **logdetail); #endif libpg_query-17-6.1.0/src/postgres/include/libpq/hba.h000066400000000000000000000106611477334012600223720ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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 enum ClientCertName { clientCertCN, clientCertDN, } ClientCertName; /* * A single string token lexed from an authentication configuration file * (pg_ident.conf or pg_hba.conf), together with whether the token has * been quoted. If "string" begins with a slash, it may optionally * contain a regular expression (currently used for pg_ident.conf when * building IdentLines and for pg_hba.conf when building HbaLines). */ typedef struct AuthToken { char *string; bool quoted; regex_t *regex; } AuthToken; typedef struct HbaLine { char *sourcefile; int linenumber; char *rawline; ConnType conntype; List *databases; List *roles; struct sockaddr_storage addr; int addrlen; /* zero if we don't have a valid addr */ struct sockaddr_storage mask; int masklen; /* zero if we don't have a valid 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; ClientCertName clientcertname; 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; } HbaLine; typedef struct IdentLine { int linenumber; char *usermap; AuthToken *system_user; AuthToken *pg_user; } IdentLine; /* * TokenizedAuthLine represents one line lexed from an authentication * configuration file. Each item in the "fields" list is a sub-list of * AuthTokens. We don't emit a TokenizedAuthLine for empty or all-comment * lines, so "fields" is never NIL (nor are any of its sub-lists). * * Exception: if an error occurs during tokenization, we might have * fields == NIL, in which case err_msg != NULL. */ typedef struct TokenizedAuthLine { List *fields; /* List of lists of AuthTokens */ char *file_name; /* File name of origin */ int line_num; /* Line number */ char *raw_line; /* Raw line text */ char *err_msg; /* Error message if any */ } TokenizedAuthLine; /* kluge to avoid including libpq/libpq-be.h here */ typedef struct Port hbaPort; extern bool load_hba(void); extern bool load_ident(void); extern const char *hba_authname(UserAuth auth_method); extern void hba_getauthmethod(hbaPort *port); extern int check_usermap(const char *usermap_name, const char *pg_user, const char *system_user, bool case_insensitive); extern HbaLine *parse_hba_line(TokenizedAuthLine *tok_line, int elevel); extern IdentLine *parse_ident_line(TokenizedAuthLine *tok_line, int elevel); extern bool pg_isblank(const char c); extern FILE *open_auth_file(const char *filename, int elevel, int depth, char **err_msg); extern void free_auth_file(FILE *file, int depth); extern void tokenize_auth_file(const char *filename, FILE *file, List **tok_lines, int elevel, int depth); #endif /* HBA_H */ libpg_query-17-6.1.0/src/postgres/include/libpq/libpq-be.h000066400000000000000000000264601477334012600233370ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 #include #ifdef ENABLE_GSS #if defined(HAVE_GSSAPI_H) #include #else #include #endif /* HAVE_GSSAPI_H */ #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" /* * 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 */ bool delegated_creds; /* GSSAPI Delegated credentials */ #endif } pg_gssinfo; #endif /* * ClientConnectionInfo includes the fields describing the client connection * that are copied over to parallel workers as nothing from Port does that. * The same rules apply for allocations here as for Port (everything must be * malloc'd or palloc'd in TopMemoryContext). * * If you add a struct member here, remember to also handle serialization in * SerializeClientConnectionInfo() and co. */ typedef struct ClientConnectionInfo { /* * Authenticated identity. The meaning of this identifier is dependent on * auth_method; it is the identity (if any) that the user presented during * the authentication cycle, before they were assigned a database role. * (It is effectively the "SYSTEM-USERNAME" of a pg_ident usermap -- * though the exact string in use may be different, depending on pg_hba * options.) * * authn_id is NULL if the user has not actually been authenticated, for * example if the "trust" auth method is in use. */ const char *authn_id; /* * The HBA method that determined the above authn_id. This only has * meaning if authn_id is not NULL; otherwise it's undefined. */ UserAuth auth_method; } ClientConnectionInfo; /* * The Port structure holds state information about a client connection in a * backend process. It is available in the global variable MyProcPort. The * struct and all the data it points are kept in TopMemoryContext. * * 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 */ /* * 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 of the "SSL structures" below the same (for * extension ABI compatibility). */ pg_gssinfo *gss; #else void *gss; #endif /* * SSL structures. */ bool ssl_in_use; char *peer_cn; char *peer_dn; bool peer_cert_valid; bool alpn_used; /* * OpenSSL structures. */ #ifdef USE_OPENSSL SSL *ssl; X509 *peer; #endif /* * This is a bit of a hack. raw_buf is data that was previously read and * buffered in a higher layer but then "unread" and needs to be read again * while establishing an SSL connection via the SSL library layer. * * There's no API to "unread", the upper layer just places the data in the * Port structure in raw_buf and sets raw_buf_remaining to the amount of * bytes unread and raw_buf_consumed to 0. * * NB: the offsets of these fields depend on USE_OPENSSL. These should * not be accessed in an extension because of the ABI incompatibility. */ char *raw_buf; ssize_t raw_buf_consumed, raw_buf_remaining; } Port; /* * ClientSocket holds a socket for an accepted connection, along with the * information about the remote endpoint. This is passed from postmaster to * the backend process. */ typedef struct ClientSocket { pgsocket sock; /* File descriptor */ SockAddr raddr; /* remote addr (client) */ } ClientSocket; #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 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. */ extern char *be_tls_get_certificate_hash(Port *port, size_t *len); /* 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); extern bool be_gssapi_get_delegation(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 PGDLLIMPORT ProtocolVersion FrontendProtocol; extern PGDLLIMPORT ClientConnectionInfo MyClientConnectionInfo; /* 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-17-6.1.0/src/postgres/include/libpq/libpq.h000066400000000000000000000107431477334012600227500ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * libpq.h * POSTGRES LIBPQ buffer structure definitions. * * * Portions Copyright (c) 1996-2024, 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" /* * Callers of pq_getmessage() must supply a maximum expected message size. * By convention, if there's not any specific reason to use another value, * use PQ_SMALL_MESSAGE_LIMIT for messages that shouldn't be too long, and * PQ_LARGE_MESSAGE_LIMIT for messages that can be long. */ #define PQ_SMALL_MESSAGE_LIMIT 10000 #define PQ_LARGE_MESSAGE_LIMIT (MaxAllocSize - 1) 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); } 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)) /* * External functions. */ /* * prototypes for functions in pqcomm.c */ extern PGDLLIMPORT WaitEventSet *FeBeWaitSet; #define FeBeWaitSetSocketPos 0 #define FeBeWaitSetLatchPos 1 #define FeBeWaitSetNEvents 3 extern int ListenServerPort(int family, const char *hostName, unsigned short portNumber, const char *unixSocketDir, pgsocket ListenSockets[], int *NumListenSockets, int MaxListen); extern int AcceptConnection(pgsocket server_fd, ClientSocket *client_sock); extern void TouchSocketFiles(void); extern void RemoveSocketFiles(void); extern Port *pq_init(ClientSocket *client_sock); extern int pq_getbytes(char *s, size_t len); 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 ssize_t pq_buffer_remaining_data(void); extern int pq_putmessage_v2(char msgtype, const char *s, size_t len); extern bool pq_check_connection(void); /* * prototypes for functions in be-secure.c */ extern PGDLLIMPORT char *ssl_library; extern PGDLLIMPORT char *ssl_cert_file; extern PGDLLIMPORT char *ssl_key_file; extern PGDLLIMPORT char *ssl_ca_file; extern PGDLLIMPORT char *ssl_crl_file; extern PGDLLIMPORT char *ssl_crl_dir; extern PGDLLIMPORT char *ssl_dh_params_file; extern PGDLLIMPORT char *ssl_passphrase_command; extern PGDLLIMPORT bool ssl_passphrase_command_supports_reload; #ifdef USE_SSL extern PGDLLIMPORT 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 PGDLLIMPORT char *SSLCipherSuites; extern PGDLLIMPORT char *SSLECDHCurve; extern PGDLLIMPORT bool SSLPreferServerCiphers; extern PGDLLIMPORT int ssl_min_protocol_version; extern PGDLLIMPORT 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-17-6.1.0/src/postgres/include/libpq/pqcomm.h000066400000000000000000000124221477334012600231310ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 #include #include /* * The definitions for the request/response codes are kept in a separate file * for ease of use in third party programs. */ #include "libpq/protocol.h" typedef struct { struct sockaddr_storage addr; socklen_t salen; } SockAddr; typedef struct { int family; SockAddr addr; } AddrInfo; /* 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) /* * A host that looks either like an absolute path or starts with @ is * interpreted as a Unix-domain socket address. */ static inline bool is_unixsock_path(const char *path) { return is_absolute_path(path) || path[0] == '@'; } /* * 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. * (Only protocol version 3 is currently supported) */ #define PG_PROTOCOL_EARLIEST PG_PROTOCOL(3,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; /* * 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 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; /* Application-Layer Protocol Negotiation is required for direct connections * to avoid protocol confusion attacks (e.g https://alpaca-attack.com/). * * ALPN is specified in RFC 7301 * * This string should be registered at: * https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids * * OpenSSL uses this wire-format for the list of alpn protocols even in the * API. Both server and client take the same format parameter but the client * actually sends it to the server as-is and the server it specifies the * preference order to use to choose the one selected to send back. * * c.f. https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_alpn_select_cb.html * * The #define can be used to initialize a char[] vector to use directly in the API */ #define PG_ALPN_PROTOCOL "postgresql" #define PG_ALPN_PROTOCOL_VECTOR { 10, 'p','o','s','t','g','r','e','s','q','l' } /* * 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-17-6.1.0/src/postgres/include/libpq/pqformat.h000066400000000000000000000134561477334012600234760ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pqformat.h * Definitions for formatting and parsing frontend/backend messages * * Portions Copyright (c) 1996-2024, 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 void *data, int datalen); extern void pq_sendcountedtext(StringInfo buf, const char *str, int slen); 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-17-6.1.0/src/postgres/include/libpq/pqsignal.h000066400000000000000000000030101477334012600234440ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pqsignal.h * Backend signal(2) support (see also src/port/pqsignal.c) * * Portions Copyright (c) 1996-2024, 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 #ifdef WIN32 /* Emulate POSIX sigset_t APIs on Windows */ typedef int sigset_t; #define SA_RESTART 1 #define SA_NODEFER 2 struct sigaction { void (*sa_handler) (int); /* sa_sigaction not yet implemented */ sigset_t sa_mask; int sa_flags; }; extern int pqsigprocmask(int how, const sigset_t *set, sigset_t *oset); extern int pqsigaction(int signum, const struct sigaction *act, struct sigaction *oldact); #define SIG_BLOCK 1 #define SIG_UNBLOCK 2 #define SIG_SETMASK 3 #define sigprocmask(how, set, oset) pqsigprocmask((how), (set), (oset)) #define sigaction(signum, act, oldact) pqsigaction((signum), (act), (oldact)) #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 PGDLLIMPORT sigset_t UnBlockSig; extern PGDLLIMPORT sigset_t BlockSig; extern PGDLLIMPORT sigset_t StartupBlockSig; extern void pqinitmask(void); #endif /* PQSIGNAL_H */ libpg_query-17-6.1.0/src/postgres/include/libpq/protocol.h000066400000000000000000000057001477334012600234770ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * protocol.h * Definitions of the request/response codes for the wire protocol. * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/protocol.h * *------------------------------------------------------------------------- */ #ifndef PROTOCOL_H #define PROTOCOL_H /* These are the request codes sent by the frontend. */ #define PqMsg_Bind 'B' #define PqMsg_Close 'C' #define PqMsg_Describe 'D' #define PqMsg_Execute 'E' #define PqMsg_FunctionCall 'F' #define PqMsg_Flush 'H' #define PqMsg_Parse 'P' #define PqMsg_Query 'Q' #define PqMsg_Sync 'S' #define PqMsg_Terminate 'X' #define PqMsg_CopyFail 'f' #define PqMsg_GSSResponse 'p' #define PqMsg_PasswordMessage 'p' #define PqMsg_SASLInitialResponse 'p' #define PqMsg_SASLResponse 'p' /* These are the response codes sent by the backend. */ #define PqMsg_ParseComplete '1' #define PqMsg_BindComplete '2' #define PqMsg_CloseComplete '3' #define PqMsg_NotificationResponse 'A' #define PqMsg_CommandComplete 'C' #define PqMsg_DataRow 'D' #define PqMsg_ErrorResponse 'E' #define PqMsg_CopyInResponse 'G' #define PqMsg_CopyOutResponse 'H' #define PqMsg_EmptyQueryResponse 'I' #define PqMsg_BackendKeyData 'K' #define PqMsg_NoticeResponse 'N' #define PqMsg_AuthenticationRequest 'R' #define PqMsg_ParameterStatus 'S' #define PqMsg_RowDescription 'T' #define PqMsg_FunctionCallResponse 'V' #define PqMsg_CopyBothResponse 'W' #define PqMsg_ReadyForQuery 'Z' #define PqMsg_NoData 'n' #define PqMsg_PortalSuspended 's' #define PqMsg_ParameterDescription 't' #define PqMsg_NegotiateProtocolVersion 'v' /* These are the codes sent by both the frontend and backend. */ #define PqMsg_CopyDone 'c' #define PqMsg_CopyData 'd' /* These are the codes sent by parallel workers to leader processes. */ #define PqMsg_Progress 'P' /* 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 */ /* 6 is available. It was used for SCM creds, not supported any more. */ #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 */ #define AUTH_REQ_MAX AUTH_REQ_SASL_FIN /* maximum AUTH_REQ_* value */ #endif /* PROTOCOL_H */ libpg_query-17-6.1.0/src/postgres/include/libpq/sasl.h000066400000000000000000000112211477334012600225730ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sasl.h * Defines the SASL mechanism interface for the backend. * * Each SASL mechanism defines a frontend and a backend callback structure. * * See src/interfaces/libpq/fe-auth-sasl.h for the frontend counterpart. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/sasl.h * *------------------------------------------------------------------------- */ #ifndef PG_SASL_H #define PG_SASL_H #include "lib/stringinfo.h" #include "libpq/libpq-be.h" /* Status codes for message exchange */ #define PG_SASL_EXCHANGE_CONTINUE 0 #define PG_SASL_EXCHANGE_SUCCESS 1 #define PG_SASL_EXCHANGE_FAILURE 2 /* * Backend SASL mechanism callbacks. * * To implement a backend mechanism, declare a pg_be_sasl_mech struct with * appropriate callback implementations. Then pass the mechanism to * CheckSASLAuth() during ClientAuthentication(), once the server has decided * which authentication method to use. */ typedef struct pg_be_sasl_mech { /*--------- * get_mechanisms() * * Retrieves the list of SASL mechanism names supported by this * implementation. * * Input parameters: * * port: The client Port * * Output parameters: * * buf: A StringInfo buffer that the callback should populate with * supported mechanism names. The names are appended into this * StringInfo, each one ending with '\0' bytes. *--------- */ void (*get_mechanisms) (Port *port, StringInfo buf); /*--------- * init() * * Initializes mechanism-specific state for a connection. This callback * must return a pointer to its allocated state, which will be passed * as-is as the first argument to the other callbacks. * * Input parameters: * * port: The client Port. * * mech: The actual mechanism name in use by the client. * * shadow_pass: The stored secret for the role being authenticated, or * NULL if one does not exist. Mechanisms that do not use * shadow entries may ignore this parameter. If a * mechanism uses shadow entries but shadow_pass is NULL, * the implementation must continue the exchange as if the * user existed and the password did not match, to avoid * disclosing valid user names. *--------- */ void *(*init) (Port *port, const char *mech, const char *shadow_pass); /*--------- * exchange() * * Produces a server challenge to be sent to the client. The callback * must return one of the PG_SASL_EXCHANGE_* values, depending on * whether the exchange continues, has finished successfully, or has * failed. * * Input parameters: * * state: The opaque mechanism state returned by init() * * input: The response data sent by the client, or NULL if the * mechanism is client-first but the client did not send an * initial response. (This can only happen during the first * message from the client.) This is guaranteed to be * null-terminated for safety, but SASL allows embedded * nulls in responses, so mechanisms must be careful to * check inputlen. * * inputlen: The length of the challenge data sent by the server, or * -1 if the client did not send an initial response * * Output parameters, to be set by the callback function: * * output: A palloc'd buffer containing either the server's next * challenge (if PG_SASL_EXCHANGE_CONTINUE is returned) or * the server's outcome data (if PG_SASL_EXCHANGE_SUCCESS is * returned and the mechanism requires data to be sent during * a successful outcome). The callback should set this to * NULL if the exchange is over and no output should be sent, * which should correspond to either PG_SASL_EXCHANGE_FAILURE * or a PG_SASL_EXCHANGE_SUCCESS with no outcome data. * * outputlen: The length of the challenge data. Ignored if *output is * NULL. * * logdetail: Set to an optional DETAIL message to be printed to the * server log, to disambiguate failure modes. (The client * will only ever see the same generic authentication * failure message.) Ignored if the exchange is completed * with PG_SASL_EXCHANGE_SUCCESS. *--------- */ int (*exchange) (void *state, const char *input, int inputlen, char **output, int *outputlen, const char **logdetail); } pg_be_sasl_mech; /* Common implementation for auth.c */ extern int CheckSASLAuth(const pg_be_sasl_mech *mech, Port *port, char *shadow_pass, const char **logdetail); #endif /* PG_SASL_H */ libpg_query-17-6.1.0/src/postgres/include/libpq/scram.h000066400000000000000000000022701477334012600227420ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * scram.h * Interface to libpq/scram.c * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/scram.h * *------------------------------------------------------------------------- */ #ifndef PG_SCRAM_H #define PG_SCRAM_H #include "common/cryptohash.h" #include "lib/stringinfo.h" #include "libpq/libpq-be.h" #include "libpq/sasl.h" /* Number of iterations when generating new secrets */ extern PGDLLIMPORT int scram_sha_256_iterations; /* SASL implementation callbacks */ extern PGDLLIMPORT const pg_be_sasl_mech pg_be_scram_mech; /* Routines to handle and check SCRAM-SHA-256 secret */ extern char *pg_be_scram_build_secret(const char *password); extern bool parse_scram_secret(const char *secret, int *iterations, pg_cryptohash_type *hash_type, int *key_length, char **salt, uint8 *stored_key, uint8 *server_key); extern bool scram_verify_plain_password(const char *username, const char *password, const char *secret); #endif /* PG_SCRAM_H */ libpg_query-17-6.1.0/src/postgres/include/mb/000077500000000000000000000000001477334012600207525ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/mb/pg_wchar.h000066400000000000000000000722501477334012600227230ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_wchar.h * multibyte-character support * * Portions Copyright (c) 1996-2024, 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. * To help prevent mistakes, relevant functions that are exported by * libpq have a physically different name when being referenced * statically. * *------------------------------------------------------------------------- */ #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: If you add some encoding don't forget to update * the pg_enc2name_tbl[] array (in src/common/encnames.c), * the pg_enc2gettext_tbl[] array (in src/common/encnames.c) and * the pg_wchar_table[] array (in src/common/wchar.c) and 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 * kana -> 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 a string that's required in any encoding to convert * at least one character to any other encoding. In other words, if you feed * MAX_CONVERSION_INPUT_LENGTH bytes to any encoding conversion function, it * is guaranteed to be able to convert something without needing more input * (assuming the input is valid). * * Currently, the maximum case is the conversion UTF8 -> SJIS JIS X0201 half * width kana, where a pair of UTF-8 characters is converted into a single * SHIFT_JIS_2004 character (the reverse of the worst case for * MAX_CONVERSION_GROWTH). It needs 6 bytes of input. In theory, a * user-defined conversion function might have more complicated cases, although * for the reverse mapping you would probably also need to bump up * MAX_CONVERSION_GROWTH. But there is no need to be stingy here, so make it * generous. */ #define MAX_CONVERSION_INPUT_LENGTH 16 /* * 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 PGDLLIMPORT const pg_enc2name pg_enc2name_tbl[]; /* * Encoding names for gettext */ extern PGDLLIMPORT const char *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 (*mbchar_verifier) (const unsigned char *mbstr, int len); typedef int (*mbstr_verifier) (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 */ mbchar_verifier mbverifychar; /* verify multibyte character */ mbstr_verifier mbverifystr; /* verify multibyte string */ int maxmblen; /* max bytes for a char in this encoding */ } pg_wchar_tbl; extern PGDLLIMPORT 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); } /* * 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. */ static inline 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; } /* * Map a Unicode code point to UTF-8. utf8string must have at least * unicode_utf8len(c) bytes available. */ static inline 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; } /* * Number of bytes needed to represent the given char in UTF8. */ static inline int unicode_utf8len(pg_wchar c) { if (c <= 0x7F) return 1; else if (c <= 0x7FF) return 2; else if (c <= 0xFFFF) return 3; else return 4; } /* * The functions in this list are exported by libpq, and we need to be sure * that we know which calls are satisfied by libpq and which are satisfied * by static linkage to libpgcommon. (This is because we might be using a * libpq.so that's of a different major version and has encoding IDs that * differ from the current version's.) The nominal function names are what * are actually used in and exported by libpq, while the names exported by * libpgcommon.a and libpgcommon_srv.a end in "_private". */ #if defined(USE_PRIVATE_ENCODING_FUNCS) || !defined(FRONTEND) #define pg_char_to_encoding pg_char_to_encoding_private #define pg_encoding_to_char pg_encoding_to_char_private #define pg_valid_server_encoding pg_valid_server_encoding_private #define pg_valid_server_encoding_id pg_valid_server_encoding_id_private #define pg_utf_mblen pg_utf_mblen_private #endif /* * 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 void pg_encoding_set_invalid(int encoding, char *dst); extern int pg_encoding_mblen(int encoding, const char *mbstr); extern int pg_encoding_mblen_bounded(int encoding, const char *mbstr); extern int pg_encoding_dsplen(int encoding, const char *mbstr); extern int pg_encoding_verifymbchar(int encoding, const char *mbstr, int len); extern int pg_encoding_verifymbstr(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 *str); 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 limit); 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 int pg_do_encoding_conversion_buf(Oid proc, int src_encoding, int dest_encoding, unsigned char *src, int srclen, unsigned char *dest, int destlen, bool noError); 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 bool pg_unicode_to_server_noerror(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 int 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, bool noError); extern int 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, bool noError); 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 int local2local(const unsigned char *l, unsigned char *p, int len, int src_encoding, int dest_encoding, const unsigned char *tab, bool noError); extern int latin2mic(const unsigned char *l, unsigned char *p, int len, int lc, int encoding, bool noError); extern int mic2latin(const unsigned char *mic, unsigned char *p, int len, int lc, int encoding, bool noError); extern int latin2mic_with_table(const unsigned char *l, unsigned char *p, int len, int lc, int encoding, const unsigned char *tab, bool noError); extern int mic2latin_with_table(const unsigned char *mic, unsigned char *p, int len, int lc, int encoding, const unsigned char *tab, bool noError); #ifdef WIN32 extern WCHAR *pgwin32_message_to_UTF16(const char *str, int len, int *utf16len); #endif #endif /* PG_WCHAR_H */ libpg_query-17-6.1.0/src/postgres/include/mb/stringinfo_mb.h000066400000000000000000000012331477334012600237620ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * stringinfo_mb.h * multibyte support for StringInfo * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/miscadmin.h000066400000000000000000000462431477334012600225020ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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(). * * Note that ProcessInterrupts() has also acquired a number of tasks that * do not necessarily cause a query-cancel-or-die response. Hence, it's * possible that it will just clear InterruptPending and return. * * INTERRUPTS_PENDING_CONDITION() can be checked to see whether an * interrupt needs to be serviced, without trying to do so immediately. * Some callers are also interested in INTERRUPTS_CAN_BE_PROCESSED(), * which tells whether ProcessInterrupts is sure to clear the interrupt. * * 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 TransactionTimeoutPending; extern PGDLLIMPORT volatile sig_atomic_t IdleSessionTimeoutPending; extern PGDLLIMPORT volatile sig_atomic_t ProcSignalBarrierPending; extern PGDLLIMPORT volatile sig_atomic_t LogMemoryContextPending; extern PGDLLIMPORT volatile sig_atomic_t IdleStatsUpdateTimeoutPending; extern PGDLLIMPORT volatile sig_atomic_t CheckClientConnectionPending; 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); /* Test whether an interrupt is pending */ #ifndef WIN32 #define INTERRUPTS_PENDING_CONDITION() \ (unlikely(InterruptPending)) #else #define INTERRUPTS_PENDING_CONDITION() \ (unlikely(UNBLOCKED_SIGNAL_QUEUE()) ? pgwin32_dispatch_queued_signals() : 0, \ unlikely(InterruptPending)) #endif /* Service interrupt, if one is pending and it's safe to service it now */ #define CHECK_FOR_INTERRUPTS() \ do { \ if (INTERRUPTS_PENDING_CONDITION()) \ ProcessInterrupts(); \ } while(0) /* Is ProcessInterrupts() guaranteed to clear InterruptPending? */ #define INTERRUPTS_CAN_BE_PROCESSED() \ (InterruptHoldoffCount == 0 && CritSectionCount == 0 && \ QueryCancelHoldoffCount == 0) #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 bool IsPostmasterEnvironment; extern PGDLLIMPORT bool IsUnderPostmaster; 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 commit_timestamp_buffers; extern PGDLLIMPORT int multixact_member_buffers; extern PGDLLIMPORT int multixact_offset_buffers; extern PGDLLIMPORT int notify_buffers; extern PGDLLIMPORT int serializable_buffers; extern PGDLLIMPORT int subtransaction_buffers; extern PGDLLIMPORT int transaction_buffers; 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 PGDLLIMPORT int32 MyCancelKey; extern PGDLLIMPORT int MyPMChildSlot; extern PGDLLIMPORT char OutputFileName[]; extern PGDLLIMPORT char my_exec_path[]; extern PGDLLIMPORT char pkglib_path[]; #ifdef EXEC_BACKEND extern PGDLLIMPORT char postgres_exec_path[]; #endif extern PGDLLIMPORT Oid MyDatabaseId; extern PGDLLIMPORT Oid MyDatabaseTableSpace; extern PGDLLIMPORT bool MyDatabaseHasLoginEventTriggers; /* * 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 PGDLLIMPORT 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; /* * Upper and lower hard limits for the buffer access strategy ring size * specified by the VacuumBufferUsageLimit GUC and BUFFER_USAGE_LIMIT option * to VACUUM and ANALYZE. */ #define MIN_BAS_VAC_RING_SIZE_KB 128 #define MAX_BAS_VAC_RING_SIZE_KB (16 * 1024 * 1024) extern PGDLLIMPORT int VacuumBufferUsageLimit; extern PGDLLIMPORT int VacuumCostPageHit; extern PGDLLIMPORT int VacuumCostPageMiss; extern PGDLLIMPORT int VacuumCostPageDirty; extern PGDLLIMPORT int VacuumCostLimit; extern PGDLLIMPORT double VacuumCostDelay; extern PGDLLIMPORT int64 VacuumPageHit; extern PGDLLIMPORT int64 VacuumPageMiss; extern PGDLLIMPORT int64 VacuumPageDirty; extern PGDLLIMPORT int VacuumCostBalance; extern PGDLLIMPORT bool VacuumCostActive; /* in tcop/postgres.c */ typedef char *pg_stack_base_t; 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); /***************************************************************************** * 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 PGDLLIMPORT char *DatabasePath; /* now in utils/init/miscinit.c */ extern void InitPostmasterChild(void); extern void InitStandaloneProcess(const char *argv0); extern void InitProcessLocalLatch(void); extern void SwitchToSharedLatch(void); extern void SwitchBackToLocalLatch(void); /* * MyBackendType indicates what kind of a backend this is. * * If you add entries, please also update the child_process_kinds array in * launch_backend.c. */ typedef enum BackendType { B_INVALID = 0, /* Backends and other backend-like processes */ B_BACKEND, B_AUTOVAC_LAUNCHER, B_AUTOVAC_WORKER, B_BG_WORKER, B_WAL_SENDER, B_SLOTSYNC_WORKER, B_STANDALONE_BACKEND, /* * Auxiliary processes. These have PGPROC entries, but they are not * attached to any particular database, and cannot run transactions or * even take heavyweight locks. There can be only one of each of these * running at a time. * * If you modify these, make sure to update NUM_AUXILIARY_PROCS and the * glossary in the docs. */ B_ARCHIVER, B_BG_WRITER, B_CHECKPOINTER, B_STARTUP, B_WAL_RECEIVER, B_WAL_SUMMARIZER, B_WAL_WRITER, /* * Logger is not connected to shared memory and does not have a PGPROC * entry. */ B_LOGGER, } BackendType; #define BACKEND_NUM_TYPES (B_LOGGER + 1) extern PGDLLIMPORT BackendType MyBackendType; #define AmRegularBackendProcess() (MyBackendType == B_BACKEND) #define AmAutoVacuumLauncherProcess() (MyBackendType == B_AUTOVAC_LAUNCHER) #define AmAutoVacuumWorkerProcess() (MyBackendType == B_AUTOVAC_WORKER) #define AmBackgroundWorkerProcess() (MyBackendType == B_BG_WORKER) #define AmWalSenderProcess() (MyBackendType == B_WAL_SENDER) #define AmLogicalSlotSyncWorkerProcess() (MyBackendType == B_SLOTSYNC_WORKER) #define AmArchiverProcess() (MyBackendType == B_ARCHIVER) #define AmBackgroundWriterProcess() (MyBackendType == B_BG_WRITER) #define AmCheckpointerProcess() (MyBackendType == B_CHECKPOINTER) #define AmStartupProcess() (MyBackendType == B_STARTUP) #define AmWalReceiverProcess() (MyBackendType == B_WAL_RECEIVER) #define AmWalSummarizerProcess() (MyBackendType == B_WAL_SUMMARIZER) #define AmWalWriterProcess() (MyBackendType == B_WAL_WRITER) #define AmSpecialWorkerProcess() \ (AmAutoVacuumLauncherProcess() || \ AmLogicalSlotSyncWorkerProcess()) 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 bool GetSessionUserIsSuperuser(void); extern Oid GetAuthenticatedUserId(void); extern void SetAuthenticatedUserId(Oid userid); 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 roleid, bool bypass_login_check); extern void InitializeSessionUserIdStandalone(void); extern void SetSessionAuthorization(Oid userid, bool is_superuser); extern Oid GetCurrentRoleId(void); extern void SetCurrentRoleId(Oid roleid, bool is_superuser); extern void InitializeSystemUser(const char *authn_id, const char *auth_method); extern const char *GetSystemUser(void); /* 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 PGDLLIMPORT ProcessingMode Mode; #define IsBootstrapProcessingMode() (Mode == BootstrapProcessing) #define IsInitProcessingMode() (Mode == InitProcessing) #define IsNormalProcessingMode() (Mode == NormalProcessing) #define GetProcessingMode() Mode #define SetProcessingMode(mode) \ do { \ Assert((mode) == BootstrapProcessing || \ (mode) == InitProcessing || \ (mode) == NormalProcessing); \ Mode = (mode); \ } while(0) /***************************************************************************** * pinit.h -- * * POSTGRES initialization and cleanup definitions. * *****************************************************************************/ /* in utils/init/postinit.c */ /* flags for InitPostgres() */ #define INIT_PG_LOAD_SESSION_LIBS 0x0001 #define INIT_PG_OVERRIDE_ALLOW_CONNS 0x0002 #define INIT_PG_OVERRIDE_ROLE_LOGIN 0x0004 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, bits32 flags, char *out_dbname); extern void BaseInit(void); /* in utils/init/miscinit.c */ extern PGDLLIMPORT bool IgnoreSystemIndexes; extern PGDLLIMPORT bool process_shared_preload_libraries_in_progress; extern PGDLLIMPORT bool process_shared_preload_libraries_done; extern PGDLLIMPORT bool process_shmem_requests_in_progress; extern PGDLLIMPORT char *session_preload_libraries_string; extern PGDLLIMPORT char *shared_preload_libraries_string; extern PGDLLIMPORT 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 process_shmem_requests(void); extern void pg_bindtextdomain(const char *domain); extern bool has_rolreplication(Oid roleid); typedef void (*shmem_request_hook_type) (void); extern PGDLLIMPORT shmem_request_hook_type shmem_request_hook; extern Size EstimateClientConnectionInfoSpace(void); extern void SerializeClientConnectionInfo(Size maxsize, char *start_address); extern void RestoreClientConnectionInfo(char *conninfo); /* in executor/nodeHash.c */ extern size_t get_hash_memory_limit(void); #endif /* MISCADMIN_H */ libpg_query-17-6.1.0/src/postgres/include/nodes/000077500000000000000000000000001477334012600214645ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/nodes/bitmapset.h000066400000000000000000000115511477334012600236300ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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, we always represent the * empty set by a NULL pointer. * * * Copyright (c) 2003-2024, PostgreSQL Global Development Group * * src/include/nodes/bitmapset.h * *------------------------------------------------------------------------- */ #ifndef BITMAPSET_H #define BITMAPSET_H #include "nodes/nodes.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 { pg_node_attr(custom_copy_equal, special_read_write, no_query_jumble) NodeTag type; 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; /* 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 /* * 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); /* NULL is now the only allowed representation of an empty bitmapset */ #define bms_is_empty(a) ((a) == NULL) /* 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_replace_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_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-17-6.1.0/src/postgres/include/nodes/execnodes.h000066400000000000000000003157631477334012600236310ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * execnodes.h * definitions for executor state nodes * * Most plan node types declared in plannodes.h have a corresponding * execution-state node type declared here. An exception is that * expression nodes (subtypes of Expr) are usually represented by steps * of an ExprState, and fully handled within execExpr* - but sometimes * their state needs to be shared with other parts of the executor, as * for example with SubPlanState, which nodeSubplan.c has to modify. * * Node types declared in this file do not have any copy/equal/out/read * support. (That is currently hard-wired in gen_node_support.pl, rather * than being explicitly represented by pg_node_attr decorations here.) * There is no need for copy, equal, or read support for executor trees. * Output support could be useful for debugging; but there are a lot of * specialized fields that would require custom code, so for now it's * not provided. * * * Portions Copyright (c) 1996-2024, 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/ilist.h" #include "lib/pairingheap.h" #include "nodes/miscnodes.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 ParallelHashJoinState; struct ExecRowMark; struct ExprState; struct ExprContext; struct RangeTblEntry; /* avoid including parsenodes.h here */ struct ExprEvalStep; /* avoid including execExpr.h everywhere */ struct CopyMultiInsertBuffer; struct LogicalTapeSet; /* ---------------- * ExprState node * * ExprState represents the evaluation state for a whole expression tree. * 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 type; 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; /* * For expression nodes that support soft errors. Should be set to NULL if * the caller wants errors to be thrown. Callers that do not want errors * thrown should set it to a valid ErrorSaveContext before calling * ExecInitExprRec(). */ ErrorSaveContext *escontext; } 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? * CheckedUnchanged IndexUnchanged status determined yet? * IndexUnchanged aminsert hint, cached for retail inserts * Concurrent are we doing a concurrent index build? * BrokenHotChain did we detect any broken HOT chains? * Summarizing is it a summarizing index? * 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 */ bool ii_Unique; bool ii_NullsNotDistinct; bool ii_ReadyForInserts; bool ii_CheckedUnchanged; bool ii_IndexUnchanged; bool ii_Concurrent; bool ii_BrokenHotChain; bool ii_Summarizing; 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. * ---------------- */ typedef struct JunkFilter { NodeTag type; List *jf_targetList; TupleDesc jf_cleanTupType; AttrNumber *jf_cleanMap; TupleTableSlot *jf_resultSlot; } 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; /* ---------------- * MergeActionState information * * Executor state for a MERGE action. * ---------------- */ typedef struct MergeActionState { NodeTag type; MergeAction *mas_action; /* associated MergeAction node */ ProjectionInfo *mas_proj; /* projection of the action's targetlist for * this rel */ ExprState *mas_whenqual; /* WHEN [NOT] MATCHED AND conditions */ } MergeActionState; /* * 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; /* * For UPDATE/DELETE result relations, the attribute number of the row * identity junk attribute in the source plan's output tuples */ AttrNumber ri_RowIdAttNo; /* For UPDATE, attnums of generated columns to be computed */ Bitmapset *ri_extraUpdatedCols; /* Projection to generate new tuple in an INSERT/UPDATE */ ProjectionInfo *ri_projectNew; /* Slot to hold that tuple */ TupleTableSlot *ri_newTupleSlot; /* Slot to hold the old tuple being updated */ TupleTableSlot *ri_oldTupleSlot; /* Have the projection and the slots above been initialized? */ bool ri_projectNewInfoValid; /* updates do LockTuple() before oldtup read; see README.tuplock */ bool ri_needLockTagTuple; /* 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; /* batch insert stuff */ int ri_NumSlots; /* number of slots in the array */ int ri_NumSlotsInitialized; /* number of initialized slots */ int ri_BatchSize; /* max slots inserted in a single batch */ TupleTableSlot **ri_Slots; /* input tuples for batch insert */ TupleTableSlot **ri_PlanSlots; /* 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; /* arrays of stored generated columns expr states, for INSERT and UPDATE */ ExprState **ri_GeneratedExprsI; ExprState **ri_GeneratedExprsU; /* number of stored generated columns we need to compute */ int ri_NumGeneratedNeededI; int ri_NumGeneratedNeededU; /* 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; /* for MERGE, lists of MergeActionState (one per MergeMatchKind) */ List *ri_MergeActions[NUM_MERGE_MATCH_KINDS]; /* for MERGE, expr state for checking the join condition */ ExprState *ri_MergeJoinCondition; /* partition check expression state (NULL if not set up yet) */ ExprState *ri_PartitionCheckExpr; /* * Map to convert child result relation tuples to the format of the table * actually mentioned in the query (called "root"). Computed only if * needed. A NULL map value indicates that no conversion is needed, so we * must have a separate flag to show if the map has been computed. */ TupleConversionMap *ri_ChildToRootMap; bool ri_ChildToRootMapValid; /* * As above, but in the other direction. */ TupleConversionMap *ri_RootToChildMap; bool ri_RootToChildMapValid; /* * Information needed by tuple routing target relations * * 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. * * PartitionTupleSlot is non-NULL if RootToChild conversion is needed and * the relation is a partition. */ struct ResultRelInfo *ri_RootResultRelInfo; TupleTableSlot *ri_PartitionTupleSlot; /* for use by copyfrom.c when performing multi-inserts */ struct CopyMultiInsertBuffer *ri_CopyMultiInsertBuffer; /* * Used when a leaf partition is involved in a cross-partition update of * one of its ancestors; see ExecCrossPartitionUpdateForeignKey(). */ List *ri_ancestorResultRels; } ResultRelInfo; /* ---------------- * AsyncRequest * * State for an asynchronous tuple request. * ---------------- */ typedef struct AsyncRequest { struct PlanState *requestor; /* Node that wants a tuple */ struct PlanState *requestee; /* Node from which a tuple is wanted */ int request_index; /* Scratch space for requestor */ bool callback_pending; /* Callback is needed */ bool request_complete; /* Request complete, result valid */ TupleTableSlot *result; /* Result (NULL or an empty slot if no more * tuples) */ } AsyncRequest; /* ---------------- * EState information * * 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 */ List *es_rteperminfos; /* List of RTEPermissionInfo */ 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 per-range-table-entry * ResultRelInfo pointers, or NULL * if not a target table */ List *es_opened_result_relations; /* List of non-NULL entries in * es_result_relations in no * specific order */ PartitionDirectory es_partition_directory; /* for PartitionDesc lookup */ /* * The following list contains ResultRelInfos created by the tuple routing * code for partitions that aren't found in the es_result_relations array. */ 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 during one * ExecutorRun() call. */ uint64 es_total_processed; /* total # of tuples aggregated across all * ExecutorRun() calls. */ 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; /* * Lists of ResultRelInfos for foreign tables on which batch-inserts are * to be executed and owning ModifyTableStates, stored in the same order. */ List *es_insert_pending_result_relations; List *es_insert_pending_modifytables; } EState; /* * ExecRowMark - * runtime representation of FOR [KEY] UPDATE/SHARE clauses * * When doing UPDATE/DELETE/MERGE/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). */ 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. * ---------------------------------------------------------------- */ /* ---------------- * 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; /* * 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; /* * State for JsonExpr evaluation, too big to inline. * * This contains the information going into and coming out of the * EEOP_JSONEXPR_PATH eval step. */ typedef struct JsonExprState { /* original expression node */ JsonExpr *jsexpr; /* value/isnull for formatted_expr */ NullableDatum formatted_expr; /* value/isnull for pathspec */ NullableDatum pathspec; /* JsonPathVariable entries for passing_values */ List *args; /* * Output variables that drive the EEOP_JUMP_IF_NOT_TRUE steps that are * added for ON ERROR and ON EMPTY expressions, if any. * * Reset for each evaluation of EEOP_JSONEXPR_PATH. */ /* Set to true if jsonpath evaluation cause an error. */ NullableDatum error; /* Set to true if the jsonpath evaluation returned 0 items. */ NullableDatum empty; /* * Addresses of steps that implement the non-ERROR variant of ON EMPTY and * ON ERROR behaviors, respectively. */ int jump_empty; int jump_error; /* * Address of the step to coerce the result value of jsonpath evaluation * to the RETURNING type. -1 if no coercion if JsonExpr.use_io_coercion * is true. */ int jump_eval_coercion; /* * Address to jump to when skipping all the steps after performing * ExecEvalJsonExprPath() so as to return whatever the JsonPath* function * returned as is, that is, in the cases where there's no error and no * coercion is necessary. */ int jump_end; /* * RETURNING type input function invocation info when * JsonExpr.use_io_coercion is true. */ FunctionCallInfo input_fcinfo; /* * For error-safe evaluation of coercions. When the ON ERROR behavior is * not ERROR, a pointer to this is passed to ExecInitExprRec() when * initializing the coercion expressions or to ExecInitJsonCoercion(). * * Reset for each evaluation of EEOP_JSONEXPR_PATH. */ ErrorSaveContext escontext; } JsonExprState; /* ---------------------------------------------------------------- * 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 { pg_node_attr(abstract) 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 */ bool async_capable; /* true if node is async-capable */ /* * 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(), * all such plans need to share the same EState. */ typedef struct EPQState { /* These are initialized by EvalPlanQualInit() and do not change later: */ EState *parentestate; /* main query's EState */ int epqParam; /* ID of Param to force scan node re-eval */ List *resultRelations; /* integer list of RT indexes, or NIL */ /* * relsubs_slot[scanrelid - 1] holds the EPQ test tuple to be returned by * the scan node for the scanrelid'th RT index, in place of performing an * actual table scan. Callers should use EvalPlanQualSlot() to fetch * these slots. */ 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; /* * relsubs_done[scanrelid - 1] is true if there is no EPQ tuple for this * target relation or it has already been fetched in the current scan of * this target relation within the current EvalPlanQual test. */ bool *relsubs_done; /* * relsubs_blocked[scanrelid - 1] is true if there is no EPQ tuple for * this target relation during the current EvalPlanQual test. We keep * these flags set for all relids listed in resultRelations, but * transiently clear the one for the relation whose tuple is actually * passed to EvalPlanQual(). */ bool *relsubs_blocked; 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; /* flags for mt_merge_subcommands */ #define MERGE_INSERT 0x01 #define MERGE_UPDATE 0x02 #define MERGE_DELETE 0x04 /* ---------------- * ModifyTableState information * ---------------- */ typedef struct ModifyTableState { PlanState ps; /* its first field is NodeTag */ CmdType operation; /* INSERT, UPDATE, DELETE, or MERGE */ bool canSetTag; /* do we set the command tag/es_processed? */ bool mt_done; /* are we done? */ int mt_nrels; /* number of entries in resultRelInfo[] */ ResultRelInfo *resultRelInfo; /* info about target relation(s) */ /* * Target relation mentioned in the original statement, used to fire * statement-level triggers and as the root for tuple routing. (This * might point to one of the resultRelInfo[] entries, but it can also be a * distinct struct.) */ ResultRelInfo *rootResultRelInfo; EPQState mt_epqstate; /* for evaluating EvalPlanQual rechecks */ bool fireBSTriggers; /* do we need to fire stmt triggers? */ /* * These fields are used for inherited UPDATE and DELETE, to track which * target relation a given tuple is from. If there are a lot of target * relations, we use a hash table to translate table OIDs to * resultRelInfo[] indexes; otherwise mt_resultOidHash is NULL. */ int mt_resultOidAttno; /* resno of "tableoid" junk attr */ Oid mt_lastResultOid; /* last-seen value of tableoid */ int mt_lastResultIndex; /* corresponding index in resultRelInfo[] */ HTAB *mt_resultOidHash; /* optional hash table to speed lookups */ /* * 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; /* Flags showing which subcommands are present INS/UPD/DEL/DO NOTHING */ int mt_merge_subcommands; /* For MERGE, the action currently being executed */ MergeActionState *mt_merge_action; /* * For MERGE, if there is a pending NOT MATCHED [BY TARGET] action to be * performed, this will be the last tuple read from the subplan; otherwise * it will be NULL --- see the comments in ExecMerge(). */ TupleTableSlot *mt_merge_pending_not_matched; /* tuple counters for MERGE */ double mt_merge_inserted; double mt_merge_updated; double mt_merge_deleted; } ModifyTableState; /* ---------------- * AppendState information * * nplans how many plans are in the array * whichplan which synchronous 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 synchronous 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; bool as_begun; /* false means need to initialize */ Bitmapset *as_asyncplans; /* asynchronous plans indexes */ int as_nasyncplans; /* # of asynchronous plans */ AsyncRequest **as_asyncrequests; /* array of AsyncRequests */ TupleTableSlot **as_asyncresults; /* unreturned results of async plans */ int as_nasyncresults; /* # of valid entries in as_asyncresults */ bool as_syncdone; /* true if all synchronous plans done in * asynchronous mode, else false */ int as_nasyncremain; /* # of remaining asynchronous plans */ Bitmapset *as_needrequest; /* asynchronous plans needing a new request */ struct WaitEventSet *as_eventset; /* WaitEventSet used to configure file * descriptor wait events */ 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; bool as_valid_subplans_identified; /* is as_valid_subplans valid? */ Bitmapset *as_valid_subplans; Bitmapset *as_valid_asyncplans; /* valid asynchronous plans indexes */ 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 * * recheckqual execution state for recheckqual 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 * NameCStringAttNums attnums of name typed columns to pad to NAMEDATALEN * NameCStringCount number of elements in the NameCStringAttNums array * ---------------- */ typedef struct IndexOnlyScanState { ScanState ss; /* its first field is NodeTag */ ExprState *recheckqual; 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; AttrNumber *ioss_NameCStringAttNums; int ioss_NameCStringCount; } 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 * ---------------- */ typedef struct ParallelBitmapHeapState { dsa_pointer tbmiterator; dsa_pointer prefetch_iterator; slock_t mutex; int prefetch_pages; int prefetch_target; SharedBitmapState state; ConditionVariable cv; } 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 * pvmbuffer buffer for visibility-map lookups of 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 * 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; Buffer pvmbuffer; long exact_pages; long lossy_pages; TBMIterator *prefetch_iterator; int prefetch_pages; int prefetch_target; int prefetch_maximum; 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) * ---------------- */ 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; } TidScanState; /* ---------------- * TidRangeScanState information * * trss_tidexprs list of TidOpExpr structs (see nodeTidrangescan.c) * trss_mintid the lowest TID in the scan range * trss_maxtid the highest TID in the scan range * trss_inScan is a scan currently in progress? * ---------------- */ typedef struct TidRangeScanState { ScanState ss; /* its first field is NodeTag */ List *trss_tidexprs; ItemPointerData trss_mintid; ItemPointerData trss_maxtid; bool trss_inScan; } TidRangeScanState; /* ---------------- * 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 *colvalexprs; /* state for column value expressions */ List *passingvalexprs; /* state for PASSING argument 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 */ ResultRelInfo *resultRelInfo; /* result rel info, if UPDATE or DELETE */ /* 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; const struct TupleTableSlotOps *slotOps; } 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/right-anti/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; struct MemoizeEntry; struct MemoizeTuple; struct MemoizeKey; typedef struct MemoizeInstrumentation { uint64 cache_hits; /* number of rescans where we've found the * scan parameter values to be cached */ uint64 cache_misses; /* number of rescans where we've not found the * scan parameter values to be cached. */ uint64 cache_evictions; /* number of cache entries removed due to * the need to free memory */ uint64 cache_overflows; /* number of times we've had to bypass the * cache when filling it due to not being * able to free enough space to store the * current scan's tuples. */ uint64 mem_peak; /* peak memory usage in bytes */ } MemoizeInstrumentation; /* ---------------- * Shared memory container for per-worker memoize information * ---------------- */ typedef struct SharedMemoizeInfo { int num_workers; MemoizeInstrumentation sinstrument[FLEXIBLE_ARRAY_MEMBER]; } SharedMemoizeInfo; /* ---------------- * MemoizeState information * * memoize nodes are used to cache recent and commonly seen results from * a parameterized scan. * ---------------- */ typedef struct MemoizeState { ScanState ss; /* its first field is NodeTag */ int mstatus; /* value of ExecMemoize state machine */ int nkeys; /* number of cache keys */ struct memoize_hash *hashtable; /* hash table for cache entries */ TupleDesc hashkeydesc; /* tuple descriptor for cache keys */ TupleTableSlot *tableslot; /* min tuple slot for existing cache entries */ TupleTableSlot *probeslot; /* virtual slot used for hash lookups */ ExprState *cache_eq_expr; /* Compare exec params to hash key */ ExprState **param_exprs; /* exprs containing the parameters to this * node */ FmgrInfo *hashfunctions; /* lookup data for hash funcs nkeys in size */ Oid *collations; /* collation for comparisons nkeys in size */ uint64 mem_used; /* bytes of memory used by cache */ uint64 mem_limit; /* memory limit in bytes for the cache */ MemoryContext tableContext; /* memory context to store cache data */ dlist_head lru_list; /* least recently used entry list */ struct MemoizeTuple *last_tuple; /* Used to point to the last tuple * returned during a cache hit and the * tuple we last stored when * populating the cache. */ struct MemoizeEntry *entry; /* the entry that 'last_tuple' belongs to or * NULL if 'last_tuple' is NULL. */ bool singlerow; /* true if the cache entry is to be marked as * complete after caching the first tuple. */ bool binary_mode; /* true when cache key should be compared bit * by bit, false when using hash equality ops */ MemoizeInstrumentation stats; /* execution statistics */ SharedMemoizeInfo *shared_info; /* statistics for parallel workers */ Bitmapset *keyparamids; /* Param->paramids of expressions belonging to * param_exprs */ } MemoizeState; /* ---------------- * 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? */ bool datumSort; /* Datum sort instead of tuple sort? */ 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 LogicalTapeSet *hash_tapeset; /* tape set for hash 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 */ 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; /* * WindowAggStatus -- Used to track the status of WindowAggState */ typedef enum WindowAggStatus { WINDOWAGG_DONE, /* No more processing to do */ WINDOWAGG_RUN, /* Normal processing of window funcs */ WINDOWAGG_PASSTHROUGH, /* Don't eval window funcs */ WINDOWAGG_PASSTHROUGH_STRICT, /* Pass-through plus don't store new * tuples during spool */ } WindowAggStatus; 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 */ WindowAggStatus status; /* run status of WindowAggState */ 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 */ ExprState *runcondition; /* Condition which must remain true otherwise * execution of the WindowAgg will finish or * go into pass-through mode. NULL when there * is no such condition. */ bool use_pass_through; /* When false, stop execution when * runcondition is no longer true. Else * just stop evaluating window funcs. */ bool top_window; /* true if this is the top-most WindowAgg or * the only WindowAgg in this query level */ bool all_first; /* true if the scan is starting */ 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-17-6.1.0/src/postgres/include/nodes/extensible.h000066400000000000000000000130721477334012600240020ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * extensible.h * Definitions for extensible nodes and custom scans * * * Portions Copyright (c) 1996-2024, 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 { pg_node_attr(custom_copy_equal, custom_read_write) 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 *methods); extern const ExtensibleNodeMethods *GetExtensibleNodeMethods(const char *extnodename, bool missing_ok); /* * Flags for custom paths, indicating what capabilities the resulting scan * will have. The flags fields of CustomPath and CustomScan nodes are * bitmasks of these flags. */ #define CUSTOMPATH_SUPPORT_BACKWARD_SCAN 0x0001 #define CUSTOMPATH_SUPPORT_MARK_RESTORE 0x0002 #define CUSTOMPATH_SUPPORT_PROJECTION 0x0004 /* * 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-17-6.1.0/src/postgres/include/nodes/lockoptions.h000066400000000000000000000035371477334012600242110ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * lockoptions.h * Common header for some locking-related declarations. * * * Copyright (c) 2014-2024, 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-17-6.1.0/src/postgres/include/nodes/makefuncs.h000066400000000000000000000103641477334012600236150ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * makefuncs.h * prototypes for the creator functions of various nodes * * * Portions Copyright (c) 1996-2024, 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(int varno, AttrNumber varattno, Oid vartype, int32 vartypmod, Oid varcollid, Index varlevelsup); extern Var *makeVarFromTargetEntry(int varno, TargetEntry *tle); extern Var *makeWholeRowVar(RangeTblEntry *rte, int 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, CoercionForm funcformat, 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 nulls_not_distinct, bool isready, bool concurrent, bool summarizing); extern Node *makeStringConst(char *str, int location); 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); extern JsonFormat *makeJsonFormat(JsonFormatType type, JsonEncoding encoding, int location); extern JsonValueExpr *makeJsonValueExpr(Expr *raw_expr, Expr *formatted_expr, JsonFormat *format); extern Node *makeJsonKeyValue(Node *key, Node *value); extern Node *makeJsonIsPredicate(Node *expr, JsonFormat *format, JsonValueType item_type, bool unique_keys, int location); extern JsonBehavior *makeJsonBehavior(JsonBehaviorType btype, Node *expr, int location); extern JsonTablePath *makeJsonTablePath(Const *pathvalue, char *pathname); extern JsonTablePathSpec *makeJsonTablePathSpec(char *string, char *name, int string_location, int name_location); #endif /* MAKEFUNC_H */ libpg_query-17-6.1.0/src/postgres/include/nodes/memnodes.h000066400000000000000000000123511477334012600234460ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * memnodes.h * POSTGRES memory context node definitions. * * * Portions Copyright (c) 1996-2024, 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, bool print_to_stderr); typedef struct MemoryContextMethods { /* * Function to handle memory allocation requests of 'size' to allocate * memory into the given 'context'. The function must handle flags * MCXT_ALLOC_HUGE and MCXT_ALLOC_NO_OOM. MCXT_ALLOC_ZERO is handled by * the calling function. */ void *(*alloc) (MemoryContext context, Size size, int flags); /* call this free_p in case someone #define's free() */ void (*free_p) (void *pointer); /* * Function to handle a size change request for an existing allocation. * The implementation must handle flags MCXT_ALLOC_HUGE and * MCXT_ALLOC_NO_OOM. MCXT_ALLOC_ZERO is handled by the calling function. */ void *(*realloc) (void *pointer, Size size, int flags); /* * Invalidate all previous allocations in the given memory context and * prepare the context for a new set of allocations. Implementations may * optionally free() excess memory back to the OS during this time. */ void (*reset) (MemoryContext context); /* Free all memory consumed by the given MemoryContext. */ void (*delete_context) (MemoryContext context); /* Return the MemoryContext that the given pointer belongs to. */ MemoryContext (*get_chunk_context) (void *pointer); /* * Return the number of bytes consumed by the given pointer within its * memory context, including the overhead of alignment and chunk headers. */ Size (*get_chunk_space) (void *pointer); /* * Return true if the given MemoryContext has not had any allocations * since it was created or last reset. */ bool (*is_empty) (MemoryContext context); void (*stats) (MemoryContext context, MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals, bool print_to_stderr); #ifdef MEMORY_CONTEXT_CHECKING /* * Perform validation checks on the given context and raise any discovered * anomalies as WARNINGs. */ void (*check) (MemoryContext context); #endif } MemoryContextMethods; typedef struct MemoryContextData { pg_node_attr(abstract) /* there are no nodes of this type */ 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) || \ IsA((context), BumpContext))) #endif /* MEMNODES_H */ libpg_query-17-6.1.0/src/postgres/include/nodes/miscnodes.h000066400000000000000000000042641477334012600236270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * miscnodes.h * Definitions for hard-to-classify node types. * * Node types declared here are not part of parse trees, plan trees, * or execution state trees. We only assign them NodeTag values because * IsA() tests provide a convenient way to disambiguate what kind of * structure is being passed through assorted APIs, such as function * "context" pointers. * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/miscnodes.h * *------------------------------------------------------------------------- */ #ifndef MISCNODES_H #define MISCNODES_H #include "nodes/nodes.h" /* * ErrorSaveContext - * function call context node for handling of "soft" errors * * A caller wishing to trap soft errors must initialize a struct like this * with all fields zero/NULL except for the NodeTag. Optionally, set * details_wanted = true if more than the bare knowledge that a soft error * occurred is required. The struct is then passed to a SQL-callable function * via the FunctionCallInfo.context field; or below the level of SQL calls, * it could be passed to a subroutine directly. * * After calling code that might report an error this way, check * error_occurred to see if an error happened. If so, and if details_wanted * is true, error_data has been filled with error details (stored in the * callee's memory context!). FreeErrorData() can be called to release * error_data, although that step is typically not necessary if the called * code was run in a short-lived context. */ typedef struct ErrorSaveContext { NodeTag type; bool error_occurred; /* set to true if we detect a soft error */ bool details_wanted; /* does caller want more info than that? */ ErrorData *error_data; /* details of error, if so */ } ErrorSaveContext; /* Often-useful macro for checking if a soft error was reported */ #define SOFT_ERROR_OCCURRED(escontext) \ ((escontext) != NULL && IsA(escontext, ErrorSaveContext) && \ ((ErrorSaveContext *) (escontext))->error_occurred) #endif /* MISCNODES_H */ libpg_query-17-6.1.0/src/postgres/include/nodes/nodeFuncs.h000066400000000000000000000167401477334012600235710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * nodeFuncs.h * Various general-purpose manipulations of Node trees * * Portions Copyright (c) 1996-2024, 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" struct PlanState; /* avoid including execnodes.h too */ /* 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 SortGroupClause lists */ /* callback function for check_functions_in_node */ typedef bool (*check_function_callback) (Oid func_id, void *context); /* callback functions for tree walkers */ typedef bool (*tree_walker_callback) (Node *node, void *context); typedef bool (*planstate_tree_walker_callback) (struct PlanState *planstate, void *context); /* callback functions for tree mutators */ typedef Node *(*tree_mutator_callback) (Node *node, 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); /* * The following functions are usually passed walker or mutator callbacks * that are declared like "bool walker(Node *node, my_struct *context)" * rather than "bool walker(Node *node, void *context)" as a strict reading * of the C standard would require. Changing the callbacks' declarations * to "void *" would create serious hazards of passing them the wrong context * struct type, so we respectfully decline to support the standard's position * that a pointer to struct is incompatible with "void *". Instead, silence * related compiler warnings by inserting casts into these macro wrappers. */ #define expression_tree_walker(n, w, c) \ expression_tree_walker_impl(n, (tree_walker_callback) (w), c) #define expression_tree_mutator(n, m, c) \ expression_tree_mutator_impl(n, (tree_mutator_callback) (m), c) #define query_tree_walker(q, w, c, f) \ query_tree_walker_impl(q, (tree_walker_callback) (w), c, f) #define query_tree_mutator(q, m, c, f) \ query_tree_mutator_impl(q, (tree_mutator_callback) (m), c, f) #define range_table_walker(rt, w, c, f) \ range_table_walker_impl(rt, (tree_walker_callback) (w), c, f) #define range_table_mutator(rt, m, c, f) \ range_table_mutator_impl(rt, (tree_mutator_callback) (m), c, f) #define range_table_entry_walker(r, w, c, f) \ range_table_entry_walker_impl(r, (tree_walker_callback) (w), c, f) #define query_or_expression_tree_walker(n, w, c, f) \ query_or_expression_tree_walker_impl(n, (tree_walker_callback) (w), c, f) #define query_or_expression_tree_mutator(n, m, c, f) \ query_or_expression_tree_mutator_impl(n, (tree_mutator_callback) (m), c, f) #define raw_expression_tree_walker(n, w, c) \ raw_expression_tree_walker_impl(n, (tree_walker_callback) (w), c) #define planstate_tree_walker(ps, w, c) \ planstate_tree_walker_impl(ps, (planstate_tree_walker_callback) (w), c) extern bool expression_tree_walker_impl(Node *node, tree_walker_callback walker, void *context); extern Node *expression_tree_mutator_impl(Node *node, tree_mutator_callback mutator, void *context); extern bool query_tree_walker_impl(Query *query, tree_walker_callback walker, void *context, int flags); extern Query *query_tree_mutator_impl(Query *query, tree_mutator_callback mutator, void *context, int flags); extern bool range_table_walker_impl(List *rtable, tree_walker_callback walker, void *context, int flags); extern List *range_table_mutator_impl(List *rtable, tree_mutator_callback mutator, void *context, int flags); extern bool range_table_entry_walker_impl(RangeTblEntry *rte, tree_walker_callback walker, void *context, int flags); extern bool query_or_expression_tree_walker_impl(Node *node, tree_walker_callback walker, void *context, int flags); extern Node *query_or_expression_tree_mutator_impl(Node *node, tree_mutator_callback mutator, void *context, int flags); extern bool raw_expression_tree_walker_impl(Node *node, tree_walker_callback walker, void *context); extern bool planstate_tree_walker_impl(struct PlanState *planstate, planstate_tree_walker_callback walker, void *context); #endif /* NODEFUNCS_H */ libpg_query-17-6.1.0/src/postgres/include/nodes/nodes.h000066400000000000000000000346551477334012600227620ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * nodes.h * Definitions for tagged nodes. * * * Portions Copyright (c) 1996-2024, 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, #include "nodes/nodetags.h" } NodeTag; /* * pg_node_attr() - Used in node definitions to set extra information for * gen_node_support.pl * * Attributes can be attached to a node as a whole (place the attribute * specification on the first line after the struct's opening brace) * or to a specific field (place it at the end of that field's line). The * argument is a comma-separated list of attributes. Unrecognized attributes * cause an error. * * Valid node attributes: * * - abstract: Abstract types are types that cannot be instantiated but that * can be supertypes of other types. We track their fields, so that * subtypes can use them, but we don't emit a node tag, so you can't * instantiate them. * * - custom_copy_equal: Has custom implementations in copyfuncs.c and * equalfuncs.c. * * - custom_read_write: Has custom implementations in outfuncs.c and * readfuncs.c. * * - custom_query_jumble: Has custom implementation in queryjumblefuncs.c. * * - no_copy: Does not support copyObject() at all. * * - no_equal: Does not support equal() at all. * * - no_copy_equal: Shorthand for both no_copy and no_equal. * * - no_query_jumble: Does not support JumbleQuery() at all. * * - no_read: Does not support nodeRead() at all. * * - nodetag_only: Does not support copyObject(), equal(), jumbleQuery() * outNode() or nodeRead(). * * - special_read_write: Has special treatment in outNode() and nodeRead(). * * - nodetag_number(VALUE): assign the specified nodetag number instead of * an auto-generated number. Typically this would only be used in stable * branches, to give a newly-added node type a number without breaking ABI * by changing the numbers of existing node types. * * Node types can be supertypes of other types whether or not they are marked * abstract: if a node struct appears as the first field of another struct * type, then it is the supertype of that type. The no_copy, no_equal, * no_query_jumble and no_read node attributes are automatically inherited * from the supertype. (Notice that nodetag_only does not inherit, so it's * not quite equivalent to a combination of other attributes.) * * Valid node field attributes: * * - array_size(OTHERFIELD): This field is a dynamically allocated array with * size indicated by the mentioned other field. The other field is either a * scalar or a list, in which case the length of the list is used. * * - copy_as(VALUE): In copyObject(), replace the field's value with VALUE. * * - copy_as_scalar: In copyObject(), copy the field as a scalar value * (e.g. a pointer) even if it is a node-type pointer. * * - equal_as_scalar: In equal(), compare the field as a scalar value * even if it is a node-type pointer. * * - equal_ignore: Ignore the field for equality. * * - equal_ignore_if_zero: Ignore the field for equality if it is zero. * (Otherwise, compare normally.) * * - query_jumble_ignore: Ignore the field for the query jumbling. Note * that typmod and collation information are usually irrelevant for the * query jumbling. * * - query_jumble_location: Mark the field as a location to track. This is * only allowed for integer fields that include "location" in their name. * * - read_as(VALUE): In nodeRead(), replace the field's value with VALUE. * * - read_write_ignore: Ignore the field for read/write. This is only allowed * if the node type is marked no_read or read_as() is also specified. * * - write_only_relids, write_only_nondefault_pathtarget, write_only_req_outer: * Special handling for Path struct; see there. * */ #define pg_node_attr(...) /* * 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) */ static inline Node * newNode(size_t size, NodeTag tag) { Node *result; Assert(size >= sizeof(Node)); /* need the tag, at least */ result = (Node *) palloc0(size); result->type = tag; return result; } #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 *nodeToStringWithLocations(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 *from); /* 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); /* * Typedef for parse location. This is just an int, but this way * gen_node_support.pl knows which fields should get special treatment for * location values. * * -1 is used for unknown. */ typedef int ParseLoc; /* * Typedefs for identifying qualifier selectivities, plan costs, and row * counts as such. These are just plain "double"s, but declaring a variable * as Selectivity, Cost, or Cardinality 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) */ typedef double Cardinality; /* (estimated) number of rows or other integer * count */ /* * 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, /* delete stmt */ CMD_MERGE, /* merge stmt */ 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 */ JOIN_RIGHT_ANTI, /* 1 copy of each RHS 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) | \ (1 << JOIN_RIGHT_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-17-6.1.0/src/postgres/include/nodes/nodetags.h000066400000000000000000000272161477334012600234510ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * nodetags.h * Generated node infrastructure code * * Portions Copyright (c) 1996-2024, 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/nodes/gen_node_support.pl * *------------------------------------------------------------------------- */ T_List = 1, T_Alias = 2, T_RangeVar = 3, T_TableFunc = 4, T_IntoClause = 5, T_Var = 6, T_Const = 7, T_Param = 8, T_Aggref = 9, T_GroupingFunc = 10, T_WindowFunc = 11, T_WindowFuncRunCondition = 12, T_MergeSupportFunc = 13, T_SubscriptingRef = 14, T_FuncExpr = 15, T_NamedArgExpr = 16, T_OpExpr = 17, T_DistinctExpr = 18, T_NullIfExpr = 19, T_ScalarArrayOpExpr = 20, T_BoolExpr = 21, T_SubLink = 22, T_SubPlan = 23, T_AlternativeSubPlan = 24, T_FieldSelect = 25, T_FieldStore = 26, T_RelabelType = 27, T_CoerceViaIO = 28, T_ArrayCoerceExpr = 29, T_ConvertRowtypeExpr = 30, T_CollateExpr = 31, T_CaseExpr = 32, T_CaseWhen = 33, T_CaseTestExpr = 34, T_ArrayExpr = 35, T_RowExpr = 36, T_RowCompareExpr = 37, T_CoalesceExpr = 38, T_MinMaxExpr = 39, T_SQLValueFunction = 40, T_XmlExpr = 41, T_JsonFormat = 42, T_JsonReturning = 43, T_JsonValueExpr = 44, T_JsonConstructorExpr = 45, T_JsonIsPredicate = 46, T_JsonBehavior = 47, T_JsonExpr = 48, T_JsonTablePath = 49, T_JsonTablePathScan = 50, T_JsonTableSiblingJoin = 51, T_NullTest = 52, T_BooleanTest = 53, T_MergeAction = 54, T_CoerceToDomain = 55, T_CoerceToDomainValue = 56, T_SetToDefault = 57, T_CurrentOfExpr = 58, T_NextValueExpr = 59, T_InferenceElem = 60, T_TargetEntry = 61, T_RangeTblRef = 62, T_JoinExpr = 63, T_FromExpr = 64, T_OnConflictExpr = 65, T_Query = 66, T_TypeName = 67, T_ColumnRef = 68, T_ParamRef = 69, T_A_Expr = 70, T_A_Const = 71, T_TypeCast = 72, T_CollateClause = 73, T_RoleSpec = 74, T_FuncCall = 75, T_A_Star = 76, T_A_Indices = 77, T_A_Indirection = 78, T_A_ArrayExpr = 79, T_ResTarget = 80, T_MultiAssignRef = 81, T_SortBy = 82, T_WindowDef = 83, T_RangeSubselect = 84, T_RangeFunction = 85, T_RangeTableFunc = 86, T_RangeTableFuncCol = 87, T_RangeTableSample = 88, T_ColumnDef = 89, T_TableLikeClause = 90, T_IndexElem = 91, T_DefElem = 92, T_LockingClause = 93, T_XmlSerialize = 94, T_PartitionElem = 95, T_PartitionSpec = 96, T_PartitionBoundSpec = 97, T_PartitionRangeDatum = 98, T_SinglePartitionSpec = 99, T_PartitionCmd = 100, T_RangeTblEntry = 101, T_RTEPermissionInfo = 102, T_RangeTblFunction = 103, T_TableSampleClause = 104, T_WithCheckOption = 105, T_SortGroupClause = 106, T_GroupingSet = 107, T_WindowClause = 108, T_RowMarkClause = 109, T_WithClause = 110, T_InferClause = 111, T_OnConflictClause = 112, T_CTESearchClause = 113, T_CTECycleClause = 114, T_CommonTableExpr = 115, T_MergeWhenClause = 116, T_TriggerTransition = 117, T_JsonOutput = 118, T_JsonArgument = 119, T_JsonFuncExpr = 120, T_JsonTablePathSpec = 121, T_JsonTable = 122, T_JsonTableColumn = 123, T_JsonKeyValue = 124, T_JsonParseExpr = 125, T_JsonScalarExpr = 126, T_JsonSerializeExpr = 127, T_JsonObjectConstructor = 128, T_JsonArrayConstructor = 129, T_JsonArrayQueryConstructor = 130, T_JsonAggConstructor = 131, T_JsonObjectAgg = 132, T_JsonArrayAgg = 133, T_RawStmt = 134, T_InsertStmt = 135, T_DeleteStmt = 136, T_UpdateStmt = 137, T_MergeStmt = 138, T_SelectStmt = 139, T_SetOperationStmt = 140, T_ReturnStmt = 141, T_PLAssignStmt = 142, T_CreateSchemaStmt = 143, T_AlterTableStmt = 144, T_ReplicaIdentityStmt = 145, T_AlterTableCmd = 146, T_AlterCollationStmt = 147, T_AlterDomainStmt = 148, T_GrantStmt = 149, T_ObjectWithArgs = 150, T_AccessPriv = 151, T_GrantRoleStmt = 152, T_AlterDefaultPrivilegesStmt = 153, T_CopyStmt = 154, T_VariableSetStmt = 155, T_VariableShowStmt = 156, T_CreateStmt = 157, T_Constraint = 158, T_CreateTableSpaceStmt = 159, T_DropTableSpaceStmt = 160, T_AlterTableSpaceOptionsStmt = 161, T_AlterTableMoveAllStmt = 162, T_CreateExtensionStmt = 163, T_AlterExtensionStmt = 164, T_AlterExtensionContentsStmt = 165, T_CreateFdwStmt = 166, T_AlterFdwStmt = 167, T_CreateForeignServerStmt = 168, T_AlterForeignServerStmt = 169, T_CreateForeignTableStmt = 170, T_CreateUserMappingStmt = 171, T_AlterUserMappingStmt = 172, T_DropUserMappingStmt = 173, T_ImportForeignSchemaStmt = 174, T_CreatePolicyStmt = 175, T_AlterPolicyStmt = 176, T_CreateAmStmt = 177, T_CreateTrigStmt = 178, T_CreateEventTrigStmt = 179, T_AlterEventTrigStmt = 180, T_CreatePLangStmt = 181, T_CreateRoleStmt = 182, T_AlterRoleStmt = 183, T_AlterRoleSetStmt = 184, T_DropRoleStmt = 185, T_CreateSeqStmt = 186, T_AlterSeqStmt = 187, T_DefineStmt = 188, T_CreateDomainStmt = 189, T_CreateOpClassStmt = 190, T_CreateOpClassItem = 191, T_CreateOpFamilyStmt = 192, T_AlterOpFamilyStmt = 193, T_DropStmt = 194, T_TruncateStmt = 195, T_CommentStmt = 196, T_SecLabelStmt = 197, T_DeclareCursorStmt = 198, T_ClosePortalStmt = 199, T_FetchStmt = 200, T_IndexStmt = 201, T_CreateStatsStmt = 202, T_StatsElem = 203, T_AlterStatsStmt = 204, T_CreateFunctionStmt = 205, T_FunctionParameter = 206, T_AlterFunctionStmt = 207, T_DoStmt = 208, T_InlineCodeBlock = 209, T_CallStmt = 210, T_CallContext = 211, T_RenameStmt = 212, T_AlterObjectDependsStmt = 213, T_AlterObjectSchemaStmt = 214, T_AlterOwnerStmt = 215, T_AlterOperatorStmt = 216, T_AlterTypeStmt = 217, T_RuleStmt = 218, T_NotifyStmt = 219, T_ListenStmt = 220, T_UnlistenStmt = 221, T_TransactionStmt = 222, T_CompositeTypeStmt = 223, T_CreateEnumStmt = 224, T_CreateRangeStmt = 225, T_AlterEnumStmt = 226, T_ViewStmt = 227, T_LoadStmt = 228, T_CreatedbStmt = 229, T_AlterDatabaseStmt = 230, T_AlterDatabaseRefreshCollStmt = 231, T_AlterDatabaseSetStmt = 232, T_DropdbStmt = 233, T_AlterSystemStmt = 234, T_ClusterStmt = 235, T_VacuumStmt = 236, T_VacuumRelation = 237, T_ExplainStmt = 238, T_CreateTableAsStmt = 239, T_RefreshMatViewStmt = 240, T_CheckPointStmt = 241, T_DiscardStmt = 242, T_LockStmt = 243, T_ConstraintsSetStmt = 244, T_ReindexStmt = 245, T_CreateConversionStmt = 246, T_CreateCastStmt = 247, T_CreateTransformStmt = 248, T_PrepareStmt = 249, T_ExecuteStmt = 250, T_DeallocateStmt = 251, T_DropOwnedStmt = 252, T_ReassignOwnedStmt = 253, T_AlterTSDictionaryStmt = 254, T_AlterTSConfigurationStmt = 255, T_PublicationTable = 256, T_PublicationObjSpec = 257, T_CreatePublicationStmt = 258, T_AlterPublicationStmt = 259, T_CreateSubscriptionStmt = 260, T_AlterSubscriptionStmt = 261, T_DropSubscriptionStmt = 262, T_PlannerGlobal = 263, T_PlannerInfo = 264, T_RelOptInfo = 265, T_IndexOptInfo = 266, T_ForeignKeyOptInfo = 267, T_StatisticExtInfo = 268, T_JoinDomain = 269, T_EquivalenceClass = 270, T_EquivalenceMember = 271, T_PathKey = 272, T_GroupByOrdering = 273, T_PathTarget = 274, T_ParamPathInfo = 275, T_Path = 276, T_IndexPath = 277, T_IndexClause = 278, T_BitmapHeapPath = 279, T_BitmapAndPath = 280, T_BitmapOrPath = 281, T_TidPath = 282, T_TidRangePath = 283, T_SubqueryScanPath = 284, T_ForeignPath = 285, T_CustomPath = 286, T_AppendPath = 287, T_MergeAppendPath = 288, T_GroupResultPath = 289, T_MaterialPath = 290, T_MemoizePath = 291, T_UniquePath = 292, T_GatherPath = 293, T_GatherMergePath = 294, T_NestPath = 295, T_MergePath = 296, T_HashPath = 297, T_ProjectionPath = 298, T_ProjectSetPath = 299, T_SortPath = 300, T_IncrementalSortPath = 301, T_GroupPath = 302, T_UpperUniquePath = 303, T_AggPath = 304, T_GroupingSetData = 305, T_RollupData = 306, T_GroupingSetsPath = 307, T_MinMaxAggPath = 308, T_WindowAggPath = 309, T_SetOpPath = 310, T_RecursiveUnionPath = 311, T_LockRowsPath = 312, T_ModifyTablePath = 313, T_LimitPath = 314, T_RestrictInfo = 315, T_PlaceHolderVar = 316, T_SpecialJoinInfo = 317, T_OuterJoinClauseInfo = 318, T_AppendRelInfo = 319, T_RowIdentityVarInfo = 320, T_PlaceHolderInfo = 321, T_MinMaxAggInfo = 322, T_PlannerParamItem = 323, T_AggInfo = 324, T_AggTransInfo = 325, T_PlannedStmt = 326, T_Result = 327, T_ProjectSet = 328, T_ModifyTable = 329, T_Append = 330, T_MergeAppend = 331, T_RecursiveUnion = 332, T_BitmapAnd = 333, T_BitmapOr = 334, T_SeqScan = 335, T_SampleScan = 336, T_IndexScan = 337, T_IndexOnlyScan = 338, T_BitmapIndexScan = 339, T_BitmapHeapScan = 340, T_TidScan = 341, T_TidRangeScan = 342, T_SubqueryScan = 343, T_FunctionScan = 344, T_ValuesScan = 345, T_TableFuncScan = 346, T_CteScan = 347, T_NamedTuplestoreScan = 348, T_WorkTableScan = 349, T_ForeignScan = 350, T_CustomScan = 351, T_NestLoop = 352, T_NestLoopParam = 353, T_MergeJoin = 354, T_HashJoin = 355, T_Material = 356, T_Memoize = 357, T_Sort = 358, T_IncrementalSort = 359, T_Group = 360, T_Agg = 361, T_WindowAgg = 362, T_Unique = 363, T_Gather = 364, T_GatherMerge = 365, T_Hash = 366, T_SetOp = 367, T_LockRows = 368, T_Limit = 369, T_PlanRowMark = 370, T_PartitionPruneInfo = 371, T_PartitionedRelPruneInfo = 372, T_PartitionPruneStepOp = 373, T_PartitionPruneStepCombine = 374, T_PlanInvalItem = 375, T_ExprState = 376, T_IndexInfo = 377, T_ExprContext = 378, T_ReturnSetInfo = 379, T_ProjectionInfo = 380, T_JunkFilter = 381, T_OnConflictSetState = 382, T_MergeActionState = 383, T_ResultRelInfo = 384, T_EState = 385, T_WindowFuncExprState = 386, T_SetExprState = 387, T_SubPlanState = 388, T_DomainConstraintState = 389, T_ResultState = 390, T_ProjectSetState = 391, T_ModifyTableState = 392, T_AppendState = 393, T_MergeAppendState = 394, T_RecursiveUnionState = 395, T_BitmapAndState = 396, T_BitmapOrState = 397, T_ScanState = 398, T_SeqScanState = 399, T_SampleScanState = 400, T_IndexScanState = 401, T_IndexOnlyScanState = 402, T_BitmapIndexScanState = 403, T_BitmapHeapScanState = 404, T_TidScanState = 405, T_TidRangeScanState = 406, T_SubqueryScanState = 407, T_FunctionScanState = 408, T_ValuesScanState = 409, T_TableFuncScanState = 410, T_CteScanState = 411, T_NamedTuplestoreScanState = 412, T_WorkTableScanState = 413, T_ForeignScanState = 414, T_CustomScanState = 415, T_JoinState = 416, T_NestLoopState = 417, T_MergeJoinState = 418, T_HashJoinState = 419, T_MaterialState = 420, T_MemoizeState = 421, T_SortState = 422, T_IncrementalSortState = 423, T_GroupState = 424, T_AggState = 425, T_WindowAggState = 426, T_UniqueState = 427, T_GatherState = 428, T_GatherMergeState = 429, T_HashState = 430, T_SetOpState = 431, T_LockRowsState = 432, T_LimitState = 433, T_IndexAmRoutine = 434, T_TableAmRoutine = 435, T_TsmRoutine = 436, T_EventTriggerData = 437, T_TriggerData = 438, T_TupleTableSlot = 439, T_FdwRoutine = 440, T_Bitmapset = 441, T_ExtensibleNode = 442, T_ErrorSaveContext = 443, T_IdentifySystemCmd = 444, T_BaseBackupCmd = 445, T_CreateReplicationSlotCmd = 446, T_DropReplicationSlotCmd = 447, T_AlterReplicationSlotCmd = 448, T_StartReplicationCmd = 449, T_ReadReplicationSlotCmd = 450, T_TimeLineHistoryCmd = 451, T_UploadManifestCmd = 452, T_SupportRequestSimplify = 453, T_SupportRequestSelectivity = 454, T_SupportRequestCost = 455, T_SupportRequestRows = 456, T_SupportRequestIndexCondition = 457, T_SupportRequestWFuncMonotonic = 458, T_SupportRequestOptimizeWindowClause = 459, T_Integer = 460, T_Float = 461, T_Boolean = 462, T_String = 463, T_BitString = 464, T_ForeignKeyCacheInfo = 465, T_IntList = 466, T_OidList = 467, T_XidList = 468, T_AllocSetContext = 469, T_GenerationContext = 470, T_SlabContext = 471, T_BumpContext = 472, T_TIDBitmap = 473, T_WindowObjectData = 474, libpg_query-17-6.1.0/src/postgres/include/nodes/params.h000066400000000000000000000150471477334012600231270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * params.h * Support for finding the values associated with Param nodes. * * * Portions Copyright (c) 1996-2024, 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 **knownTextValues, int maxlen); extern void ParamsErrorCallback(void *arg); #endif /* PARAMS_H */ libpg_query-17-6.1.0/src/postgres/include/nodes/parsenodes.h000066400000000000000000004322151477334012600240070ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 "common/relpath.h" #include "nodes/bitmapset.h" #include "nodes/lockoptions.h" #include "nodes/primnodes.h" #include "nodes/value.h" #include "partitioning/partdefs.h" /* 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; /* Options for [ ALL | DISTINCT ] */ typedef enum SetQuantifier { SET_QUANTIFIER_DEFAULT, SET_QUANTIFIER_ALL, SET_QUANTIFIER_DISTINCT, } SetQuantifier; /* * Grantable rights are encoded so that we can OR them together in a bitmask. * The present representation of AclItem limits us to 32 distinct rights, * even though AclMode is defined as uint64. See utils/acl.h. * * Caution: changing these codes breaks stored ACLs, hence forces initdb. */ typedef uint64 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 various object types */ #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 ACL_SET (1<<12) /* for configuration parameters */ #define ACL_ALTER_SYSTEM (1<<13) /* for configuration parameters */ #define ACL_MAINTAIN (1<<14) /* for relations */ #define N_ACL_RIGHTS 15 /* 1 plus the last 1< 0 */ List *rteperminfos pg_node_attr(query_jumble_ignore); FromExpr *jointree; /* table join tree (FROM and WHERE clauses); * also USING clause for MERGE */ List *mergeActionList; /* list of actions for MERGE (only) */ /* * rtable index of target relation for MERGE to pull data. Initially, this * is the same as resultRelation, but after query rewriting, if the target * relation is a trigger-updatable view, this is the index of the expanded * view subquery, whereas resultRelation is the index of the target view. */ int mergeTargetRelation pg_node_attr(query_jumble_ignore); /* join condition between source and target for MERGE */ Node *mergeJoinCondition; List *targetList; /* target list (of TargetEntry) */ /* OVERRIDING clause */ OverridingKind override pg_node_attr(query_jumble_ignore); OnConflictExpr *onConflict; /* ON CONFLICT DO [NOTHING | UPDATE] */ List *returningList; /* return-values list (of TargetEntry) */ List *groupClause; /* a list of SortGroupClause's */ bool groupDistinct; /* is the group by clause distinct? */ List *groupingSets; /* a list of GroupingSet's if present */ Node *havingQual; /* qualifications applied to groups */ List *windowClause; /* a list of WindowClause's */ List *distinctClause; /* a list of SortGroupClause's */ List *sortClause; /* a list of SortGroupClause's */ Node *limitOffset; /* # of result tuples to skip (int8 expr) */ Node *limitCount; /* # of result tuples to return (int8 expr) */ LimitOption limitOption; /* limit type */ List *rowMarks; /* a list of RowMarkClause's */ Node *setOperations; /* set-operation tree if this is top level of * a UNION/INTERSECT/EXCEPT query */ /* * A list of pg_constraint OIDs that the query depends on to be * semantically valid */ List *constraintDeps pg_node_attr(query_jumble_ignore); /* a list of WithCheckOption's (added during rewrite) */ List *withCheckOptions pg_node_attr(query_jumble_ignore); /* * The following two fields identify the portion of the source text string * containing this query. They are typically only populated in top-level * Queries, not in sub-queries. When not set, they might both be zero, or * both be -1 meaning "unknown". */ /* start location, or -1 if unknown */ ParseLoc stmt_location; /* length in bytes; 0 means "rest of string" */ ParseLoc stmt_len pg_node_attr(query_jumble_ignore); } Query; /**************************************************************************** * Supporting data structures for Parse Trees * * Most of these node types appear in raw parsetrees output by the grammar, * and get transformed to something else by the analyzer. A few of them * are used as-is in transformed querytrees. ****************************************************************************/ /* * TypeName - specifies a type in definitions * * For TypeName structures generated internally, it is often easier to * specify the type by OID than by name. If "names" is NIL then the * actual type OID is given by typeOid, otherwise typeOid is unused. * Similarly, if "typmods" is NIL then the actual typmod is expected to * be prespecified in typemod, otherwise typemod is unused. * * If pct_type is true, then names is actually a field name and we look up * the type of that field. Otherwise (the normal case), names is a type * name possibly qualified with schema and database name. */ typedef struct TypeName { NodeTag type; List *names; /* qualified name (list of String nodes) */ Oid typeOid; /* type identified by OID */ bool setof; /* is a set? */ bool pct_type; /* %TYPE specified? */ List *typmods; /* type modifier expression(s) */ int32 typemod; /* prespecified type modifier */ List *arrayBounds; /* array bounds */ ParseLoc location; /* token location, or -1 if unknown */ } TypeName; /* * ColumnRef - specifies a reference to a column, or possibly a whole tuple * * The "fields" list must be nonempty. It can contain String nodes * (representing names) and A_Star nodes (representing occurrence of a '*'). * Currently, A_Star must appear only as the last list element --- the grammar * is responsible for enforcing this! * * Note: any container subscripting or selection of fields from composite columns * is represented by an A_Indirection node above the ColumnRef. However, * for simplicity in the normal case, initial field selection from a table * name is represented within ColumnRef and not by adding A_Indirection. */ typedef struct ColumnRef { NodeTag type; List *fields; /* field names (String nodes) or A_Star */ ParseLoc location; /* token location, or -1 if unknown */ } ColumnRef; /* * ParamRef - specifies a $n parameter reference */ typedef struct ParamRef { NodeTag type; int number; /* the number of the parameter */ ParseLoc location; /* token location, or -1 if unknown */ } ParamRef; /* * A_Expr - infix, prefix, and postfix expressions */ typedef enum A_Expr_Kind { AEXPR_OP, /* normal operator */ AEXPR_OP_ANY, /* scalar op ANY (array) */ AEXPR_OP_ALL, /* scalar op ALL (array) */ AEXPR_DISTINCT, /* IS DISTINCT FROM - name must be "=" */ AEXPR_NOT_DISTINCT, /* IS NOT DISTINCT FROM - name must be "=" */ AEXPR_NULLIF, /* NULLIF - name must be "=" */ 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" */ } A_Expr_Kind; typedef struct A_Expr { pg_node_attr(custom_read_write) 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 */ ParseLoc location; /* token location, or -1 if unknown */ } A_Expr; /* * A_Const - a literal constant * * Value nodes are inline for performance. You can treat 'val' as a node, * as in IsA(&val, Integer). 'val' is not valid if isnull is true. */ union ValUnion { Node node; Integer ival; Float fval; Boolean boolval; String sval; BitString bsval; }; typedef struct A_Const { pg_node_attr(custom_copy_equal, custom_read_write, custom_query_jumble) NodeTag type; union ValUnion val; bool isnull; /* SQL NULL constant */ ParseLoc 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 */ ParseLoc 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 */ ParseLoc 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_ROLE, /* role spec is CURRENT_ROLE */ 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 */ ParseLoc 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 */ struct WindowDef *over; /* OVER 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 */ CoercionForm funcformat; /* how to display this node */ ParseLoc 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 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 */ ParseLoc 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 */ ParseLoc 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 */ ParseLoc 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 */ ParseLoc 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 * * Note: JSON_TABLE is also a "table function", but it uses JsonTable node, * not RangeTableFunc. */ 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 */ ParseLoc 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 */ ParseLoc 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 */ ParseLoc 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 */ char *compression; /* compression method for 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 */ char *storage_name; /* attstorage setting name or NULL 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 */ ParseLoc 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_COMPRESSION = 1 << 1, CREATE_TABLE_LIKE_CONSTRAINTS = 1 << 2, CREATE_TABLE_LIKE_DEFAULTS = 1 << 3, CREATE_TABLE_LIKE_GENERATED = 1 << 4, CREATE_TABLE_LIKE_IDENTITY = 1 << 5, CREATE_TABLE_LIKE_INDEXES = 1 << 6, CREATE_TABLE_LIKE_STATISTICS = 1 << 7, CREATE_TABLE_LIKE_STORAGE = 1 << 8, 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; /* typically Integer, Float, String, or * TypeName */ DefElemAction defaction; /* unspecified action, or SET/ADD/DROP */ ParseLoc 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; bool indent; /* [NO] INDENT */ ParseLoc 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 */ ParseLoc location; /* token location, or -1 if unknown */ } PartitionElem; typedef enum PartitionStrategy { PARTITION_STRATEGY_LIST = 'l', PARTITION_STRATEGY_RANGE = 'r', PARTITION_STRATEGY_HASH = 'h', } PartitionStrategy; /* * PartitionSpec - parse-time representation of a partition key specification * * This represents the key space we will be partitioning on. */ typedef struct PartitionSpec { NodeTag type; PartitionStrategy strategy; List *partParams; /* List of PartitionElems */ ParseLoc location; /* token location, or -1 if unknown */ } PartitionSpec; /* * 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 */ ParseLoc 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 */ ParseLoc location; /* token location, or -1 if unknown */ } PartitionRangeDatum; /* * PartitionDesc - used in reverted ALTER TABLE SPLIT PARTITION command * * Kept as a stub for nodetag ABI compatibility. */ typedef struct SinglePartitionSpec { NodeTag type; } SinglePartitionSpec; /* * 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 */ bool concurrent; } 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.) * * 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 during parsing (except in transformLockingClause, * q.v.); 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. * * 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 { pg_node_attr(custom_read_write) NodeTag type; /* * Fields valid in all RTEs: * * put alias + eref first to make dump more legible */ /* user-written alias clause, if any */ Alias *alias pg_node_attr(query_jumble_ignore); /* expanded reference names */ Alias *eref pg_node_attr(query_jumble_ignore); RTEKind rtekind; /* see above */ /* * Fields valid for a plain relation RTE (else zero): * * inh is true for relation references that should be expanded to include * inheritance children, if the rel has any. In the parser, this will * only be true for RTE_RELATION entries. The planner also uses this * field to mark RTE_SUBQUERY entries that contain UNION ALL queries that * it has flattened into pulled-up subqueries (creating a structure much * like the effects of inheritance). * * 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/MERGE 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. * * perminfoindex is 1-based index of the RTEPermissionInfo belonging to * this RTE in the containing struct's list of same; 0 if permissions need * not be checked for this RTE. * * As a special case, relid, relkind, rellockmode, and perminfoindex can * also be set (nonzero) in an RTE_SUBQUERY RTE. This occurs when we * convert an RTE_RELATION RTE naming a view into an RTE_SUBQUERY * containing the view's query. We still need to perform run-time locking * and permission checks on the view, even though it's not directly used * in the query anymore, and the most expedient way to do that is to * retain these fields from the old state of the RTE. * * 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. */ /* OID of the relation */ Oid relid; /* inheritance requested? */ bool inh; /* relation kind (see pg_class.relkind) */ char relkind pg_node_attr(query_jumble_ignore); /* lock level that query requires on the rel */ int rellockmode pg_node_attr(query_jumble_ignore); /* index of RTEPermissionInfo entry, or 0 */ Index perminfoindex pg_node_attr(query_jumble_ignore); /* sampling info, or NULL */ struct TableSampleClause *tablesample; /* * Fields valid for a subquery RTE (else NULL): */ /* the sub-query */ Query *subquery; /* is from security_barrier view? */ bool security_barrier pg_node_attr(query_jumble_ignore); /* * 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. * * Vars appearing within joinaliasvars are marked with varnullingrels sets * that describe the nulling effects of this join and lower ones. This is * essential for FULL JOIN cases, because the COALESCE expression only * describes the semantics correctly if its inputs have been nulled by the * join. For other cases, it allows expandRTE() to generate a valid * representation of the join's output without consulting additional * parser state. * * 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; /* number of merged (JOIN USING) columns */ int joinmergedcols pg_node_attr(query_jumble_ignore); /* list of alias-var expansions */ List *joinaliasvars pg_node_attr(query_jumble_ignore); /* left-side input column numbers */ List *joinleftcols pg_node_attr(query_jumble_ignore); /* right-side input column numbers */ List *joinrightcols pg_node_attr(query_jumble_ignore); /* * join_using_alias is an alias clause attached directly to JOIN/USING. It * is different from the alias field (below) in that it does not hide the * range variables of the tables being joined. */ Alias *join_using_alias pg_node_attr(query_jumble_ignore); /* * 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 of RangeTblFunction nodes */ List *functions; /* is this called WITH ORDINALITY? */ bool funcordinality; /* * Fields valid for a TableFunc RTE (else NULL): */ TableFunc *tablefunc; /* * Fields valid for a values RTE (else NIL): */ /* list of expression lists */ List *values_lists; /* * Fields valid for a CTE RTE (else NULL/zero): */ /* name of the WITH list item */ char *ctename; /* number of query levels up */ Index ctelevelsup; /* is this a recursive self-reference? */ bool self_reference pg_node_attr(query_jumble_ignore); /* * 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. */ /* OID list of column type OIDs */ List *coltypes pg_node_attr(query_jumble_ignore); /* integer list of column typmods */ List *coltypmods pg_node_attr(query_jumble_ignore); /* OID list of column collation OIDs */ List *colcollations pg_node_attr(query_jumble_ignore); /* * Fields valid for ENR RTEs (else NULL/zero): */ /* name of ephemeral named relation */ char *enrname; /* estimated or actual from caller */ Cardinality enrtuples pg_node_attr(query_jumble_ignore); /* * Fields valid in all RTEs: */ /* was LATERAL specified? */ bool lateral pg_node_attr(query_jumble_ignore); /* present in FROM clause? */ bool inFromCl pg_node_attr(query_jumble_ignore); /* security barrier quals to apply, if any */ List *securityQuals pg_node_attr(query_jumble_ignore); } RangeTblEntry; /* * RTEPermissionInfo * Per-relation information for permission checking. Added to the Query * node by the parser when adding the corresponding RTE to the query * range table and subsequently editorialized on by the rewriter if * needed after rule expansion. * * Only the relations directly mentioned in the query are checked for * access permissions by the core executor, so only their RTEPermissionInfos * are present in the Query. However, extensions may want to check inheritance * children too, depending on the value of rte->inh, so it's copied in 'inh' * for their perusal. * * 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 (never 0!). 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.) * * 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. */ typedef struct RTEPermissionInfo { NodeTag type; Oid relid; /* relation OID */ bool inh; /* separately check inheritance children? */ 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 */ } RTEPermissionInfo; /* * 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. * * The query jumbling only needs to track the function expression. */ typedef struct RangeTblFunction { NodeTag type; Node *funcexpr; /* expression tree for func call */ /* number of columns it contributes to RTE */ int funccolcount pg_node_attr(query_jumble_ignore); /* These fields record the contents of a column definition list, if any: */ /* column names (list of String) */ List *funccolnames pg_node_attr(query_jumble_ignore); /* OID list of column type OIDs */ List *funccoltypes pg_node_attr(query_jumble_ignore); /* integer list of column typmods */ List *funccoltypmods pg_node_attr(query_jumble_ignore); /* OID list of column collation OIDs */ List *funccolcollations pg_node_attr(query_jumble_ignore); /* This is set during planning for use by the executor: */ /* PARAM_EXEC Param IDs affecting this func */ Bitmapset *funcparams pg_node_attr(query_jumble_ignore); } 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 */ WCO_RLS_MERGE_UPDATE_CHECK, /* RLS MERGE UPDATE USING policy */ WCO_RLS_MERGE_DELETE_CHECK, /* RLS MERGE DELETE 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? */ /* can eqop be implemented by hashing? */ bool hashable pg_node_attr(query_jumble_ignore); } 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 GroupingSetKind { GROUPING_SET_EMPTY, GROUPING_SET_SIMPLE, GROUPING_SET_ROLLUP, GROUPING_SET_CUBE, GROUPING_SET_SETS, } GroupingSetKind; typedef struct GroupingSet { NodeTag type; GroupingSetKind kind pg_node_attr(query_jumble_ignore); List *content; ParseLoc 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. * partitionClause is sanitized by the query planner to remove any columns or * expressions belonging to redundant PathKeys. * 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. * * The information relevant for the query jumbling is the partition clause * type and its bounds. */ typedef struct WindowClause { NodeTag type; /* window name (NULL in an OVER clause) */ char *name pg_node_attr(query_jumble_ignore); /* referenced window name, if any */ char *refname pg_node_attr(query_jumble_ignore); List *partitionClause; /* PARTITION BY list */ /* ORDER BY list */ List *orderClause; int frameOptions; /* frame_clause options, see WindowDef */ Node *startOffset; /* expression for starting bound, if any */ Node *endOffset; /* expression for ending bound, if any */ /* in_range function for startOffset */ Oid startInRangeFunc pg_node_attr(query_jumble_ignore); /* in_range function for endOffset */ Oid endInRangeFunc pg_node_attr(query_jumble_ignore); /* collation for in_range tests */ Oid inRangeColl pg_node_attr(query_jumble_ignore); /* use ASC sort order for in_range tests? */ bool inRangeAsc pg_node_attr(query_jumble_ignore); /* nulls sort first for in_range tests? */ bool inRangeNullsFirst pg_node_attr(query_jumble_ignore); Index winref; /* ID referenced by window functions */ /* did we copy orderClause from refname? */ bool copiedOrder pg_node_attr(query_jumble_ignore); } 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 */ ParseLoc 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 */ ParseLoc 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 */ ParseLoc location; /* token location, or -1 if unknown */ } OnConflictClause; /* * CommonTableExpr - * representation of WITH list element */ typedef enum CTEMaterialize { CTEMaterializeDefault, /* no option specified */ CTEMaterializeAlways, /* MATERIALIZED */ CTEMaterializeNever, /* NOT MATERIALIZED */ } CTEMaterialize; typedef struct CTESearchClause { NodeTag type; List *search_col_list; bool search_breadth_first; char *search_seq_column; ParseLoc location; } CTESearchClause; typedef struct CTECycleClause { NodeTag type; List *cycle_col_list; char *cycle_mark_column; Node *cycle_mark_value; Node *cycle_mark_default; char *cycle_path_column; ParseLoc location; /* These fields are set during parse analysis: */ Oid cycle_mark_type; /* common type of _value and _default */ int cycle_mark_typmod; Oid cycle_mark_collation; Oid cycle_mark_neop; /* <> operator for type */ } CTECycleClause; typedef struct CommonTableExpr { NodeTag type; /* * Query name (never qualified). The string name is included in the query * jumbling because RTE_CTE RTEs need it. */ char *ctename; /* optional list of column names */ List *aliascolnames pg_node_attr(query_jumble_ignore); CTEMaterialize ctematerialized; /* is this an optimization fence? */ /* SelectStmt/InsertStmt/etc before parse analysis, Query afterwards: */ Node *ctequery; /* the CTE's subquery */ CTESearchClause *search_clause pg_node_attr(query_jumble_ignore); CTECycleClause *cycle_clause pg_node_attr(query_jumble_ignore); ParseLoc location; /* token location, or -1 if unknown */ /* These fields are set during parse analysis: */ /* is this CTE actually recursive? */ bool cterecursive pg_node_attr(query_jumble_ignore); /* * Number of RTEs referencing this CTE (excluding internal * self-references), irrelevant for query jumbling. */ int cterefcount pg_node_attr(query_jumble_ignore); /* list of output column names */ List *ctecolnames pg_node_attr(query_jumble_ignore); /* OID list of output column type OIDs */ List *ctecoltypes pg_node_attr(query_jumble_ignore); /* integer list of output column typmods */ List *ctecoltypmods pg_node_attr(query_jumble_ignore); /* OID list of column collation OIDs */ List *ctecolcollations pg_node_attr(query_jumble_ignore); } 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) /* * MergeWhenClause - * raw parser representation of a WHEN clause in a MERGE statement * * This is transformed into MergeAction by parse analysis */ typedef struct MergeWhenClause { NodeTag type; MergeMatchKind matchKind; /* MATCHED/NOT MATCHED BY SOURCE/TARGET */ CmdType commandType; /* INSERT/UPDATE/DELETE/DO NOTHING */ OverridingKind override; /* OVERRIDING clause */ Node *condition; /* WHEN conditions (raw parser) */ List *targetList; /* INSERT/UPDATE targetlist */ /* the following members are only used in INSERT actions */ List *values; /* VALUES to INSERT, or NULL */ } MergeWhenClause; /* * 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; /* Nodes for SQL/JSON support */ /* * JsonOutput - * representation of JSON output clause (RETURNING type [FORMAT format]) */ typedef struct JsonOutput { NodeTag type; TypeName *typeName; /* RETURNING type name, if specified */ JsonReturning *returning; /* RETURNING FORMAT clause and type Oids */ } JsonOutput; /* * JsonArgument - * representation of argument from JSON PASSING clause */ typedef struct JsonArgument { NodeTag type; JsonValueExpr *val; /* argument value expression */ char *name; /* argument name */ } JsonArgument; /* * JsonQuotes - * representation of [KEEP|OMIT] QUOTES clause for JSON_QUERY() */ typedef enum JsonQuotes { JS_QUOTES_UNSPEC, /* unspecified */ JS_QUOTES_KEEP, /* KEEP QUOTES */ JS_QUOTES_OMIT, /* OMIT QUOTES */ } JsonQuotes; /* * JsonFuncExpr - * untransformed representation of function expressions for * SQL/JSON query functions */ typedef struct JsonFuncExpr { NodeTag type; JsonExprOp op; /* expression type */ char *column_name; /* JSON_TABLE() column name or NULL if this is * not for a JSON_TABLE() */ JsonValueExpr *context_item; /* context item expression */ Node *pathspec; /* JSON path specification expression */ List *passing; /* list of PASSING clause arguments, if any */ JsonOutput *output; /* output clause, if specified */ JsonBehavior *on_empty; /* ON EMPTY behavior */ JsonBehavior *on_error; /* ON ERROR behavior */ JsonWrapper wrapper; /* array wrapper behavior (JSON_QUERY only) */ JsonQuotes quotes; /* omit or keep quotes? (JSON_QUERY only) */ ParseLoc location; /* token location, or -1 if unknown */ } JsonFuncExpr; /* * JsonTablePathSpec * untransformed specification of JSON path expression with an optional * name */ typedef struct JsonTablePathSpec { NodeTag type; Node *string; char *name; ParseLoc name_location; ParseLoc location; /* location of 'string' */ } JsonTablePathSpec; /* * JsonTable - * untransformed representation of JSON_TABLE */ typedef struct JsonTable { NodeTag type; JsonValueExpr *context_item; /* context item expression */ JsonTablePathSpec *pathspec; /* JSON path specification */ List *passing; /* list of PASSING clause arguments, if any */ List *columns; /* list of JsonTableColumn */ JsonBehavior *on_error; /* ON ERROR behavior */ Alias *alias; /* table alias in FROM clause */ bool lateral; /* does it have LATERAL prefix? */ ParseLoc location; /* token location, or -1 if unknown */ } JsonTable; /* * JsonTableColumnType - * enumeration of JSON_TABLE column types */ typedef enum JsonTableColumnType { JTC_FOR_ORDINALITY, JTC_REGULAR, JTC_EXISTS, JTC_FORMATTED, JTC_NESTED, } JsonTableColumnType; /* * JsonTableColumn - * untransformed representation of JSON_TABLE column */ typedef struct JsonTableColumn { NodeTag type; JsonTableColumnType coltype; /* column type */ char *name; /* column name */ TypeName *typeName; /* column type name */ JsonTablePathSpec *pathspec; /* JSON path specification */ JsonFormat *format; /* JSON format clause, if specified */ JsonWrapper wrapper; /* WRAPPER behavior for formatted columns */ JsonQuotes quotes; /* omit or keep quotes on scalar strings? */ List *columns; /* nested columns */ JsonBehavior *on_empty; /* ON EMPTY behavior */ JsonBehavior *on_error; /* ON ERROR behavior */ ParseLoc location; /* token location, or -1 if unknown */ } JsonTableColumn; /* * JsonKeyValue - * untransformed representation of JSON object key-value pair for * JSON_OBJECT() and JSON_OBJECTAGG() */ typedef struct JsonKeyValue { NodeTag type; Expr *key; /* key expression */ JsonValueExpr *value; /* JSON value expression */ } JsonKeyValue; /* * JsonParseExpr - * untransformed representation of JSON() */ typedef struct JsonParseExpr { NodeTag type; JsonValueExpr *expr; /* string expression */ JsonOutput *output; /* RETURNING clause, if specified */ bool unique_keys; /* WITH UNIQUE KEYS? */ ParseLoc location; /* token location, or -1 if unknown */ } JsonParseExpr; /* * JsonScalarExpr - * untransformed representation of JSON_SCALAR() */ typedef struct JsonScalarExpr { NodeTag type; Expr *expr; /* scalar expression */ JsonOutput *output; /* RETURNING clause, if specified */ ParseLoc location; /* token location, or -1 if unknown */ } JsonScalarExpr; /* * JsonSerializeExpr - * untransformed representation of JSON_SERIALIZE() function */ typedef struct JsonSerializeExpr { NodeTag type; JsonValueExpr *expr; /* json value expression */ JsonOutput *output; /* RETURNING clause, if specified */ ParseLoc location; /* token location, or -1 if unknown */ } JsonSerializeExpr; /* * JsonObjectConstructor - * untransformed representation of JSON_OBJECT() constructor */ typedef struct JsonObjectConstructor { NodeTag type; List *exprs; /* list of JsonKeyValue pairs */ JsonOutput *output; /* RETURNING clause, if specified */ bool absent_on_null; /* skip NULL values? */ bool unique; /* check key uniqueness? */ ParseLoc location; /* token location, or -1 if unknown */ } JsonObjectConstructor; /* * JsonArrayConstructor - * untransformed representation of JSON_ARRAY(element,...) constructor */ typedef struct JsonArrayConstructor { NodeTag type; List *exprs; /* list of JsonValueExpr elements */ JsonOutput *output; /* RETURNING clause, if specified */ bool absent_on_null; /* skip NULL elements? */ ParseLoc location; /* token location, or -1 if unknown */ } JsonArrayConstructor; /* * JsonArrayQueryConstructor - * untransformed representation of JSON_ARRAY(subquery) constructor */ typedef struct JsonArrayQueryConstructor { NodeTag type; Node *query; /* subquery */ JsonOutput *output; /* RETURNING clause, if specified */ JsonFormat *format; /* FORMAT clause for subquery, if specified */ bool absent_on_null; /* skip NULL elements? */ ParseLoc location; /* token location, or -1 if unknown */ } JsonArrayQueryConstructor; /* * JsonAggConstructor - * common fields of untransformed representation of * JSON_ARRAYAGG() and JSON_OBJECTAGG() */ typedef struct JsonAggConstructor { NodeTag type; JsonOutput *output; /* RETURNING clause, if any */ Node *agg_filter; /* FILTER clause, if any */ List *agg_order; /* ORDER BY clause, if any */ struct WindowDef *over; /* OVER clause, if any */ ParseLoc location; /* token location, or -1 if unknown */ } JsonAggConstructor; /* * JsonObjectAgg - * untransformed representation of JSON_OBJECTAGG() */ typedef struct JsonObjectAgg { NodeTag type; JsonAggConstructor *constructor; /* common fields */ JsonKeyValue *arg; /* object key-value pair */ bool absent_on_null; /* skip NULL values? */ bool unique; /* check key uniqueness? */ } JsonObjectAgg; /* * JsonArrayAgg - * untransformed representation of JSON_ARRAYAGG() */ typedef struct JsonArrayAgg { NodeTag type; JsonAggConstructor *constructor; /* common fields */ JsonValueExpr *arg; /* array element expression */ bool absent_on_null; /* skip NULL elements? */ } JsonArrayAgg; /***************************************************************************** * 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). * * This is irrelevant for query jumbling, as this is not used in parsed * queries. */ typedef struct RawStmt { pg_node_attr(no_query_jumble) NodeTag type; Node *stmt; /* raw parse tree */ ParseLoc stmt_location; /* start location, or -1 if unknown */ ParseLoc 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; /* ---------------------- * Merge Statement * ---------------------- */ typedef struct MergeStmt { NodeTag type; RangeVar *relation; /* target relation to merge into */ Node *sourceRelation; /* source relation */ Node *joinCondition; /* join condition between source and target */ List *mergeWhenClauses; /* list of MergeWhenClause(es) */ List *returningList; /* list of expressions to return */ WithClause *withClause; /* WITH clause */ } MergeStmt; /* ---------------------- * 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 */ bool groupDistinct; /* Is this GROUP BY DISTINCT? */ 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 (irrelevant for query jumbling): */ /* OID list of output column type OIDs */ List *colTypes pg_node_attr(query_jumble_ignore); /* integer list of output column typmods */ List *colTypmods pg_node_attr(query_jumble_ignore); /* OID list of output column collation OIDs */ List *colCollations pg_node_attr(query_jumble_ignore); /* a list of SortGroupClause's */ List *groupClauses pg_node_attr(query_jumble_ignore); /* groupClauses is NIL if UNION ALL, but must be set otherwise */ } SetOperationStmt; /* * RETURN statement (inside SQL function body) */ typedef struct ReturnStmt { NodeTag type; Node *returnval; } ReturnStmt; /* ---------------------- * PL/pgSQL Assignment Statement * * Like SelectStmt, this is transformed into a SELECT Query. * However, the targetlist of the result looks more like an UPDATE. * ---------------------- */ typedef struct PLAssignStmt { NodeTag type; char *name; /* initial column name */ List *indirection; /* subscripts and field names, if any */ int nnames; /* number of names to use in ColumnRef */ SelectStmt *val; /* the PL/pgSQL expression to assign */ ParseLoc location; /* name's token location, or -1 if unknown */ } PLAssignStmt; /***************************************************************************** * 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_PARAMETER_ACL, OBJECT_POLICY, OBJECT_PROCEDURE, OBJECT_PUBLICATION, OBJECT_PUBLICATION_NAMESPACE, 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 objtype; /* type of object */ bool missing_ok; /* skip error if table missing */ } AlterTableStmt; typedef enum AlterTableType { AT_AddColumn, /* add column */ 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_SetExpression, /* alter column set expression */ 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_SetCompression, /* alter column set compression */ AT_DropColumn, /* drop column */ AT_AddIndex, /* add index */ AT_ReAddIndex, /* internal to commands/tablecmds.c */ AT_AddConstraint, /* add constraint */ AT_ReAddConstraint, /* internal to commands/tablecmds.c */ AT_ReAddDomainConstraint, /* internal to commands/tablecmds.c */ AT_AlterConstraint, /* alter constraint */ AT_ValidateConstraint, /* validate constraint */ AT_AddIndexConstraint, /* add constraint using existing index */ AT_DropConstraint, /* drop constraint */ 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_SetAccessMethod, /* SET ACCESS METHOD */ 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_DetachPartitionFinalize, /* DETACH PARTITION FINALIZE */ AT_AddIdentity, /* ADD IDENTITY */ AT_SetIdentity, /* SET identity column options */ AT_DropIdentity, /* DROP IDENTITY */ AT_ReAddStatistics, /* internal to commands/tablecmds.c */ } 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, access method */ 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? */ bool recurse; /* exec-time recursion */ } 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 String values) */ 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 */ RoleSpec *grantor; DropBehavior behavior; /* drop behavior (for REVOKE) */ } GrantStmt; /* * ObjectWithArgs represents a function/procedure/operator name plus parameter * identification. * * objargs includes only the types of the input parameters of the object. * In some contexts, that will be all we have, and it's enough to look up * objects according to the traditional Postgres rules (i.e., when only input * arguments matter). * * objfuncargs, if not NIL, carries the full specification of the parameter * list, including parameter mode annotations. * * Some grammar productions can set args_unspecified = true instead of * providing parameter info. In this case, lookup will succeed only if * the object name is unique. Note that otherwise, NIL parameter lists * mean zero arguments. */ typedef struct ObjectWithArgs { NodeTag type; List *objname; /* qualified name of function/operator */ List *objargs; /* list of Typename nodes (input args only) */ List *objfuncargs; /* list of FunctionParameter nodes */ bool args_unspecified; /* argument list was omitted? */ } 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 String */ } 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 String values. * ---------------------- */ 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 */ List *opt; /* options e.g. WITH GRANT 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 VariableSetKind { 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 * RangeVar) */ 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 */ char *conname; /* Constraint name, or NULL if unnamed */ bool deferrable; /* DEFERRABLE? */ bool initdeferred; /* INITIALLY DEFERRED? */ bool skip_validation; /* skip validation of existing rows? */ bool initially_valid; /* mark the new constraint as valid? */ bool is_no_inherit; /* is constraint non-inheritable? */ Node *raw_expr; /* CHECK or DEFAULT expression, as * untransformed parse tree */ char *cooked_expr; /* CHECK or DEFAULT expression, as * nodeToString representation */ char generated_when; /* ALWAYS or BY DEFAULT */ int inhcount; /* initial inheritance count to apply, for * "raw" NOT NULL constraints */ bool nulls_not_distinct; /* null treatment for UNIQUE constraints */ List *keys; /* String nodes naming referenced key * column(s); for UNIQUE/PK/NOT NULL */ List *including; /* String nodes naming referenced nonkey * column(s); for UNIQUE/PK */ List *exclusions; /* list of (IndexElem, operator name) pairs; * for exclusion constraints */ 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 */ 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 *fk_del_set_cols; /* ON DELETE SET NULL/DEFAULT (col1, col2) */ List *old_conpfeqop; /* pg_constraint.conpfeqop of my former self */ Oid old_pktable_oid; /* pg_constraint.confrelid of my former * self */ ParseLoc location; /* token location, or -1 if unknown */ } 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; bool replace; /* replace trigger if already exists */ bool isconstraint; /* This is a constraint trigger */ char *trigname; /* TRIGGER's name */ RangeVar *relation; /* relation trigger is on */ List *funcname; /* qual. name of function to call */ List *args; /* list of String 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 */ /* 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 String) */ 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 String) */ 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 String) */ 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 String) */ 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 String) */ 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_ASENSITIVE 0x0010 /* ASENSITIVE */ #define CURSOR_OPT_HOLD 0x0020 /* WITH HOLD */ /* these planner-control flags do not correspond to any SQL grammar: */ #define CURSOR_OPT_FAST_PLAN 0x0100 /* prefer fast-start plan */ #define CURSOR_OPT_GENERIC_PLAN 0x0200 /* force use of generic plan */ #define CURSOR_OPT_CUSTOM_PLAN 0x0400 /* force use of custom plan */ #define CURSOR_OPT_PARALLEL_OK 0x0800 /* 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 */ RelFileNumber oldNumber; /* relfilenumber of existing storage, if any */ SubTransactionId oldCreateSubid; /* rd_createSubid of oldNumber */ SubTransactionId oldFirstRelfilelocatorSubid; /* rd_firstRelfilelocatorSubid * of oldNumber */ bool unique; /* is index unique? */ bool nulls_not_distinct; /* null treatment for UNIQUE constraints */ 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 String) */ List *stat_types; /* stat types (list of String) */ 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 transformed; /* true when transformStatsStmt is finished */ bool if_not_exists; /* do nothing if stats name already exists */ } CreateStatsStmt; /* * StatsElem - statistics parameters (used in CREATE STATISTICS) * * For a plain attribute, 'name' is the name of the referenced table column * and 'expr' is NULL. For an expression, 'name' is NULL and 'expr' is the * expression tree. */ typedef struct StatsElem { NodeTag type; char *name; /* name of attribute to index, or NULL */ Node *expr; /* expression to index, or NULL */ } StatsElem; /* ---------------------- * Alter Statistics Statement * ---------------------- */ typedef struct AlterStatsStmt { NodeTag type; List *defnames; /* qualified name (list of String) */ Node *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 */ Node *sql_body; } 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 */ /* this is not used in pg_proc: */ FUNC_PARAM_DEFAULT = 'd', /* default; effectively same as IN */ } 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 { pg_node_attr(nodetag_only) /* this is not a member of parse trees */ 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 * * OUT-mode arguments are removed from the transformed funcexpr. The outargs * list contains copies of the expressions for all output arguments, in the * order of the procedure's declared arguments. (outargs is never evaluated, * but is useful to the caller as a reference for what to assign to.) * The transformed call state is not relevant in the query jumbling, only the * function call is. * ---------------------- */ typedef struct CallStmt { NodeTag type; /* from the parser */ FuncCall *funccall pg_node_attr(query_jumble_ignore); /* transformed call, with only input args */ FuncExpr *funcexpr; /* transformed output-argument expressions */ List *outargs; } CallStmt; typedef struct CallContext { pg_node_attr(nodetag_only) /* this is not a member of parse trees */ 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 */ String *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 */ /* for savepoint commands */ char *savepoint_name pg_node_attr(query_jumble_ignore); /* for two-phase-commit related commands */ char *gid pg_node_attr(query_jumble_ignore); bool chain; /* AND CHAIN option */ /* token location, or -1 if unknown */ ParseLoc location pg_node_attr(query_jumble_location); } 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 String) */ List *vals; /* enum values (list of String) */ } CreateEnumStmt; /* ---------------------- * Create Type Statement, range types * ---------------------- */ typedef struct CreateRangeStmt { NodeTag type; List *typeName; /* qualified name (list of String) */ List *params; /* range parameters (list of DefElem) */ } CreateRangeStmt; /* ---------------------- * Alter Type Statement, enum types * ---------------------- */ typedef struct AlterEnumStmt { NodeTag type; List *typeName; /* qualified name (list of String) */ 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 AlterDatabaseRefreshCollStmt { NodeTag type; char *dbname; } AlterDatabaseRefreshCollStmt; 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 struct ClusterStmt { NodeTag type; RangeVar *relation; /* relation being indexed, or NULL if all */ char *indexname; /* original index defined */ List *params; /* list of DefElem nodes */ } 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 objtype; /* 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 * ---------------------- */ 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 */ List *params; /* list of DefElem nodes */ } 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; /* The name of the plan to remove, NULL if DEALLOCATE ALL */ char *name pg_node_attr(query_jumble_ignore); /* * True if DEALLOCATE ALL. This is redundant with "name == NULL", but we * make it a separate field so that exactly this condition (and not the * precise name) will be accounted for in query jumbling. */ bool isall; /* token location, or -1 if unknown */ ParseLoc location pg_node_attr(query_jumble_location); } 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 String) */ 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 String) */ /* * 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 String */ List *dicts; /* list of list of String */ 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 PublicationTable { NodeTag type; RangeVar *relation; /* relation to be published */ Node *whereClause; /* qualifications */ List *columns; /* List of columns in a publication table */ } PublicationTable; /* * Publication object type */ typedef enum PublicationObjSpecType { PUBLICATIONOBJ_TABLE, /* A table */ PUBLICATIONOBJ_TABLES_IN_SCHEMA, /* All tables in schema */ PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA, /* All tables in first element of * search_path */ PUBLICATIONOBJ_CONTINUATION, /* Continuation of previous type */ } PublicationObjSpecType; typedef struct PublicationObjSpec { NodeTag type; PublicationObjSpecType pubobjtype; /* type of this publication object */ char *name; PublicationTable *pubtable; ParseLoc location; /* token location, or -1 if unknown */ } PublicationObjSpec; typedef struct CreatePublicationStmt { NodeTag type; char *pubname; /* Name of the publication */ List *options; /* List of DefElem nodes */ List *pubobjects; /* Optional list of publication objects */ bool for_all_tables; /* Special publication for all tables in db */ } CreatePublicationStmt; typedef enum AlterPublicationAction { AP_AddObjects, /* add objects to publication */ AP_DropObjects, /* remove objects from publication */ AP_SetObjects, /* set list of objects */ } AlterPublicationAction; 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/SET publication * objects. */ List *pubobjects; /* Optional list of publication objects */ bool for_all_tables; /* Special publication for all tables in db */ AlterPublicationAction action; /* What action to perform with the given * objects */ } 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_SET_PUBLICATION, ALTER_SUBSCRIPTION_ADD_PUBLICATION, ALTER_SUBSCRIPTION_DROP_PUBLICATION, ALTER_SUBSCRIPTION_REFRESH, ALTER_SUBSCRIPTION_ENABLED, ALTER_SUBSCRIPTION_SKIP, } 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-17-6.1.0/src/postgres/include/nodes/pathnodes.h000066400000000000000000004070671477334012600236400ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pathnodes.h * Definitions for planner's internal data structures, especially Paths. * * We don't support copying RelOptInfo, IndexOptInfo, or Path nodes. * There are some subsidiary structs that are useful to copy, though. * * Portions Copyright (c) 1996-2024, 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 { 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_PARTIAL_DISTINCT, /* result of partial "SELECT DISTINCT", 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; /*---------- * 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. * * Not all fields are printed. (In some cases, there is no print support for * the field type; in others, doing so would lead to infinite recursion.) *---------- */ typedef struct PlannerGlobal { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; /* Param values provided to planner() */ ParamListInfo boundParams pg_node_attr(read_write_ignore); /* Plans for SubPlan nodes */ List *subplans; /* Paths from which the SubPlan Plans were made */ List *subpaths; /* PlannerInfos for SubPlan nodes */ List *subroots pg_node_attr(read_write_ignore); /* indices of subplans that require REWIND */ Bitmapset *rewindPlanIDs; /* "flat" rangetable for executor */ List *finalrtable; /* "flat" list of RTEPermissionInfos */ List *finalrteperminfos; /* "flat" list of PlanRowMarks */ List *finalrowmarks; /* "flat" list of integer RT indexes */ List *resultRelations; /* "flat" list of AppendRelInfos */ List *appendRelations; /* OIDs of relations the plan depends on */ List *relationOids; /* other dependencies, as PlanInvalItems */ List *invalItems; /* type OIDs for PARAM_EXEC Params */ List *paramExecTypes; /* highest PlaceHolderVar ID assigned */ Index lastPHId; /* highest PlanRowMark ID assigned */ Index lastRowMarkId; /* highest plan node ID assigned */ int lastPlanNodeId; /* redo plan when TransactionXmin changes? */ bool transientPlan; /* is plan specific to current role? */ bool dependsOnRole; /* parallel mode potentially OK? */ bool parallelModeOK; /* parallel mode actually required? */ bool parallelModeNeeded; /* worst PROPARALLEL hazard level */ char maxParallelHazard; /* partition descriptors */ PartitionDirectory partition_directory pg_node_attr(read_write_ignore); } 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. * * Not all fields are printed. (In some cases, there is no print support for * the field type; in others, doing so would lead to infinite recursion or * bloat dump output more than seems useful.) *---------- */ #ifndef HAVE_PLANNERINFO_TYPEDEF typedef struct PlannerInfo PlannerInfo; #define HAVE_PLANNERINFO_TYPEDEF 1 #endif struct PlannerInfo { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; /* the Query being planned */ Query *parse; /* global info for current planner run */ PlannerGlobal *glob; /* 1 at the outermost Query */ Index query_level; /* NULL at outermost Query */ PlannerInfo *parent_root pg_node_attr(read_write_ignore); /* * 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 of PlannerParamItems, see below */ List *plan_params; 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 pg_node_attr(array_size(simple_rel_array_size)); /* allocated size of array */ int simple_rel_array_size; /* * 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. (Not * printed because it'd be redundant with parse->rtable.) */ RangeTblEntry **simple_rte_array pg_node_attr(read_write_ignore); /* * 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. (Not printed * because it'd be redundant with append_rel_list.) */ struct AppendRelInfo **append_rel_array pg_node_attr(read_write_ignore); /* * all_baserels is a Relids set of all base relids (but not joins or * "other" rels) in the query. This is computed in deconstruct_jointree. */ Relids all_baserels; /* * outer_join_rels is a Relids set of all outer-join relids in the query. * This is computed in deconstruct_jointree. */ Relids outer_join_rels; /* * all_query_rels is a Relids set of all base relids and outer join relids * (but not "other" relids) in the query. This is the Relids identifier * of the final join we need to form. This is computed in * deconstruct_jointree. */ Relids all_query_rels; /* * 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; struct HTAB *join_rel_hash pg_node_attr(read_write_ignore); /* * 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. * * Note: we've already printed all baserel and joinrel RelOptInfos above, * so we don't dump join_rel_level or other lists of RelOptInfos. */ /* lists of join-relation RelOptInfos */ List **join_rel_level pg_node_attr(read_write_ignore); /* index of list being extended */ int join_cur_level; /* init SubPlans for query */ List *init_plans; /* * per-CTE-item list of subplan IDs (or -1 if no subplan was made for that * CTE) */ List *cte_plan_ids; /* List of Lists of Params for MULTIEXPR subquery outputs */ List *multiexpr_params; /* list of JoinDomains used in the query (higher ones first) */ List *join_domains; /* list of active EquivalenceClasses */ List *eq_classes; /* set true once ECs are canonical */ bool ec_merging_done; /* list of "canonical" PathKeys */ List *canon_pathkeys; /* * list of OuterJoinClauseInfos for mergejoinable outer join clauses * w/nonnullable var on left */ List *left_join_clauses; /* * list of OuterJoinClauseInfos for mergejoinable outer join clauses * w/nonnullable var on right */ List *right_join_clauses; /* * list of OuterJoinClauseInfos for mergejoinable full join clauses */ List *full_join_clauses; /* list of SpecialJoinInfos */ List *join_info_list; /* counter for assigning RestrictInfo serial numbers */ int last_rinfo_serial; /* * all_result_relids is empty for SELECT, otherwise it contains at least * parse->resultRelation. For UPDATE/DELETE/MERGE across an inheritance * or partitioning tree, the result rel's child relids are added. When * using multi-level partitioning, intermediate partitioned rels are * included. leaf_result_relids is similar except that only actual result * tables, not partitioned tables, are included in it. */ /* set of all result relids */ Relids all_result_relids; /* set of all leaf relids */ Relids leaf_result_relids; /* * list of AppendRelInfos * * 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 RowIdentityVarInfos */ List *row_identity_vars; /* list of PlanRowMarks */ List *rowMarks; /* list of PlaceHolderInfos */ List *placeholder_list; /* array of PlaceHolderInfos indexed by phid */ struct PlaceHolderInfo **placeholder_array pg_node_attr(read_write_ignore, array_size(placeholder_array_size)); /* allocated size of array */ int placeholder_array_size pg_node_attr(read_write_ignore); /* list of ForeignKeyOptInfos */ List *fkey_list; /* desired pathkeys for query_planner() */ List *query_pathkeys; /* groupClause pathkeys, if any */ List *group_pathkeys; /* * The number of elements in the group_pathkeys list which belong to the * GROUP BY clause. Additional ones belong to ORDER BY / DISTINCT * aggregates. */ int num_groupby_pathkeys; /* pathkeys of bottom window, if any */ List *window_pathkeys; /* distinctClause pathkeys, if any */ List *distinct_pathkeys; /* sortClause pathkeys, if any */ List *sort_pathkeys; /* set operator pathkeys, if any */ List *setop_pathkeys; /* Canonicalised partition schemes used in the query. */ List *part_schemes pg_node_attr(read_write_ignore); /* RelOptInfos we are now trying to join */ List *initial_rels pg_node_attr(read_write_ignore); /* * Upper-rel RelOptInfos. Use fetch_upper_rel() to get any particular * upper rel. */ List *upper_rels[UPPERREL_FINAL + 1] pg_node_attr(read_write_ignore); /* Result tlists chosen by grouping_planner for upper-stage processing */ struct PathTarget *upper_targets[UPPERREL_FINAL + 1] pg_node_attr(read_write_ignore); /* * The fully-processed groupClause is kept here. It differs from * parse->groupClause in that we remove any items that we can prove * redundant, so that only the columns named here actually need to be * compared to determine grouping. Note that it's possible for *all* the * items to be proven redundant, implying that there is only one group * containing all the query's rows. Hence, if you want to check whether * GROUP BY was specified, test for nonempty parse->groupClause, not for * nonempty processed_groupClause. Optimizer chooses specific order of * group-by clauses during the upper paths generation process, attempting * to use different strategies to minimize number of sorts or engage * incremental sort. See preprocess_groupclause() and * get_useful_group_keys_orderings() for details. * * Currently, when grouping sets are specified we do not attempt to * optimize the groupClause, so that processed_groupClause will be * identical to parse->groupClause. */ List *processed_groupClause; /* * The fully-processed distinctClause is kept here. It differs from * parse->distinctClause in that we remove any items that we can prove * redundant, so that only the columns named here actually need to be * compared to determine uniqueness. Note that it's possible for *all* * the items to be proven redundant, implying that there should be only * one output row. Hence, if you want to check whether DISTINCT was * specified, test for nonempty parse->distinctClause, not for nonempty * processed_distinctClause. */ List *processed_distinctClause; /* * The fully-processed targetlist is kept here. It differs from * parse->targetList in that (for INSERT) 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 * that 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; /* * For UPDATE, this list contains the target table's attribute numbers to * which the first N entries of processed_tlist are to be assigned. (Any * additional entries in processed_tlist must be resjunk.) DO NOT use the * resnos in processed_tlist to identify the UPDATE target columns. */ List *update_colnos; /* * Fields filled during create_plan() for use in setrefs.c */ /* for GroupingFunc fixup (can't print: array length not known here) */ AttrNumber *grouping_map pg_node_attr(read_write_ignore); /* List of MinMaxAggInfos */ List *minmax_aggs; /* context holding PlannerInfo */ MemoryContext planner_cxt pg_node_attr(read_write_ignore); /* # of pages in all non-dummy tables of query */ Cardinality total_table_pages; /* tuple_fraction passed to query_planner */ Selectivity tuple_fraction; /* limit_tuples passed to query_planner */ Cardinality limit_tuples; /* * Minimum security_level for quals. Note: qual_security_level is zero if * there are no securityQuals. */ Index qual_security_level; /* true if any RTEs are RTE_JOIN kind */ bool hasJoinRTEs; /* true if any RTEs are marked LATERAL */ bool hasLateralRTEs; /* true if havingQual was non-null */ bool hasHavingQual; /* true if any RestrictInfo has pseudoconstant = true */ bool hasPseudoConstantQuals; /* true if we've made any of those */ bool hasAlternativeSubPlans; /* true once we're no longer allowed to add PlaceHolderInfos */ bool placeholdersFrozen; /* true if planning a recursive WITH item */ bool hasRecursion; /* * Information about aggregates. Filled by preprocess_aggrefs(). */ /* AggInfo structs */ List *agginfos; /* AggTransInfo structs */ List *aggtransinfos; /* number of aggs with DISTINCT/ORDER BY/WITHIN GROUP */ int numOrderedAggs; /* does any agg not support partial mode? */ bool hasNonPartialAggs; /* is any partial agg non-serializable? */ bool hasNonSerialAggs; /* * These fields are used only when hasRecursion is true: */ /* PARAM_EXEC ID for the work table */ int wt_param_id; /* a path for non-recursive term */ struct Path *non_recursive_path; /* * These fields are workspace for createplan.c */ /* outer rels above current node */ Relids curOuterRels; /* not-yet-assigned NestLoopParams */ List *curOuterParams; /* * These fields are workspace for setrefs.c. Each is an array * corresponding to glob->subplans. (We could probably teach * gen_node_support.pl how to determine the array length, but it doesn't * seem worth the trouble, so just mark them read_write_ignore.) */ bool *isAltSubplan pg_node_attr(read_write_ignore); bool *isUsedSubplan pg_node_attr(read_write_ignore); /* optional private data for join_search_hook, e.g., GEQO */ void *join_search_private pg_node_attr(read_write_ignore); /* 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, along with RT indexes * for any outer joins it has computed. 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. * * 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 relation identifiers (RT indexes). This is a base * relation if there is just one, a join relation if more; * in the join case, RT indexes of any outer joins formed * at or below this join are included along with baserels * 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 * nulling_relids - relids of outer joins that can null this rel * 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 or partitioned 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 * * 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. * * Not all fields are printed. (In some cases, there is no print support for * the field type.) *---------- */ /* Bitmask of flags supported by table AMs */ #define AMFLAG_HAS_TID_RANGE (1 << 0) typedef enum RelOptKind { RELOPT_BASEREL, RELOPT_JOINREL, RELOPT_OTHER_MEMBER_REL, RELOPT_OTHER_JOINREL, RELOPT_UPPER_REL, RELOPT_OTHER_UPPER_REL, } 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 { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; RelOptKind reloptkind; /* * all relations included in this RelOptInfo; set of base + OJ relids * (rangetable indexes) */ Relids relids; /* * size estimates generated by planner */ /* estimated number of result tuples */ Cardinality rows; /* * per-relation planner control flags */ /* keep cheap-startup-cost paths? */ bool consider_startup; /* ditto, for parameterized paths? */ bool consider_param_startup; /* consider parallel paths? */ bool consider_parallel; /* * default result targetlist for Paths scanning this relation; list of * Vars/Exprs, cost, width */ struct PathTarget *reltarget; /* * 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) */ /* rels directly laterally referenced */ Relids direct_lateral_relids; /* minimum parameterization of rel */ Relids lateral_relids; /* * information about a base rel (not set for join rels!) */ Index relid; /* containing tablespace */ Oid reltablespace; /* RELATION, SUBQUERY, FUNCTION, etc */ RTEKind rtekind; /* smallest attrno of rel (often <0) */ AttrNumber min_attr; /* largest attrno of rel */ AttrNumber max_attr; /* array indexed [min_attr .. max_attr] */ Relids *attr_needed pg_node_attr(read_write_ignore); /* array indexed [min_attr .. max_attr] */ int32 *attr_widths pg_node_attr(read_write_ignore); /* * Zero-based set containing attnums of NOT NULL columns. Not populated * for rels corresponding to non-partitioned inh==true RTEs. */ Bitmapset *notnullattnums; /* relids of outer joins that can null this baserel */ Relids nulling_relids; /* LATERAL Vars and PHVs referenced by rel */ List *lateral_vars; /* rels that reference this baserel laterally */ Relids lateral_referencers; /* list of IndexOptInfo */ List *indexlist; /* list of StatisticExtInfo */ List *statlist; /* size estimates derived from pg_class */ BlockNumber pages; Cardinality tuples; double allvisfrac; /* indexes in PlannerInfo's eq_classes list of ECs that mention this rel */ Bitmapset *eclass_indexes; PlannerInfo *subroot; /* if subquery */ List *subplan_params; /* if subquery */ /* wanted number of parallel workers */ int rel_parallel_workers; /* Bitmask of optional features supported by the table AM */ uint32 amflags; /* * Information about foreign tables and foreign joins */ /* identifies server for the table or join */ Oid serverid; /* identifies user to check access as; 0 means to check as current user */ Oid userid; /* join is only valid for current user */ bool useridiscurrent; /* use "struct FdwRoutine" to avoid including fdwapi.h here */ struct FdwRoutine *fdwroutine pg_node_attr(read_write_ignore); void *fdw_private pg_node_attr(read_write_ignore); /* * cache space for remembering if we have proven this relation unique */ /* known unique for these other relid set(s) */ List *unique_for_rels; /* known not unique for these set(s) */ List *non_unique_for_rels; /* * used by various scans and joins: */ /* RestrictInfo structures (if base rel) */ List *baserestrictinfo; /* cost of evaluating the above */ QualCost baserestrictcost; /* min security_level found in baserestrictinfo */ Index baserestrict_min_security; /* RestrictInfo structures for join clauses involving this rel */ List *joininfo; /* T means joininfo is incomplete */ bool has_eclass_joins; /* * used by partitionwise joins: */ /* consider partitionwise join paths? (if partitioned rel) */ bool consider_partitionwise_join; /* * inheritance links, if this is an otherrel (otherwise NULL): */ /* Immediate parent relation (dumping it would be too verbose) */ struct RelOptInfo *parent pg_node_attr(read_write_ignore); /* Topmost parent relation (dumping it would be too verbose) */ struct RelOptInfo *top_parent pg_node_attr(read_write_ignore); /* Relids of topmost parent (redundant, but handy) */ Relids top_parent_relids; /* * used for partitioned relations: */ /* Partitioning scheme */ PartitionScheme part_scheme pg_node_attr(read_write_ignore); /* * Number of partitions; -1 if not yet set; in case of a join relation 0 * means it's considered unpartitioned */ int nparts; /* Partition bounds */ struct PartitionBoundInfoData *boundinfo pg_node_attr(read_write_ignore); /* True if partition bounds were created by partition_bounds_merge() */ bool partbounds_merged; /* Partition constraint, if not the root */ List *partition_qual; /* * Array of RelOptInfos of partitions, stored in the same order as bounds * (don't print, too bulky and duplicative) */ struct RelOptInfo **part_rels pg_node_attr(read_write_ignore); /* * Bitmap with members acting as indexes into the part_rels[] array to * indicate which partitions survived partition pruning. */ Bitmapset *live_parts; /* Relids set of all partition relids */ Relids all_partrels; /* * These arrays are of length partkey->partnatts, which we don't have at * hand, so don't try to print */ /* Non-nullable partition key expressions */ List **partexprs pg_node_attr(read_write_ignore); /* Nullable partition key expressions */ List **nullable_partexprs pg_node_attr(read_write_ignore); } 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 IndexPath; /* avoid including pathnodes.h here */ struct PlannerInfo; /* avoid including pathnodes.h here */ struct IndexOptInfo { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; /* OID of the index relation */ Oid indexoid; /* tablespace of index (not table) */ Oid reltablespace; /* back-link to index's table; don't print, else infinite recursion */ RelOptInfo *rel pg_node_attr(read_write_ignore); /* * index-size statistics (from pg_class and elsewhere) */ /* number of disk pages in index */ BlockNumber pages; /* number of index tuples in index */ Cardinality tuples; /* index tree height, or -1 if unknown */ int tree_height; /* * index descriptor information */ /* number of columns in index */ int ncolumns; /* number of key columns in index */ int nkeycolumns; /* * table column numbers of index's columns (both key and included * columns), or 0 for expression columns */ int *indexkeys pg_node_attr(array_size(ncolumns)); /* OIDs of collations of index columns */ Oid *indexcollations pg_node_attr(array_size(nkeycolumns)); /* OIDs of operator families for columns */ Oid *opfamily pg_node_attr(array_size(nkeycolumns)); /* OIDs of opclass declared input data types */ Oid *opcintype pg_node_attr(array_size(nkeycolumns)); /* OIDs of btree opfamilies, if orderable. NULL if partitioned index */ Oid *sortopfamily pg_node_attr(array_size(nkeycolumns)); /* is sort order descending? or NULL if partitioned index */ bool *reverse_sort pg_node_attr(array_size(nkeycolumns)); /* do NULLs come first in the sort order? or NULL if partitioned index */ bool *nulls_first pg_node_attr(array_size(nkeycolumns)); /* opclass-specific options for columns */ bytea **opclassoptions pg_node_attr(read_write_ignore); /* which index cols can be returned in an index-only scan? */ bool *canreturn pg_node_attr(array_size(ncolumns)); /* OID of the access method (in pg_am) */ Oid relam; /* * expressions for non-simple index columns; redundant to print since we * print indextlist */ List *indexprs pg_node_attr(read_write_ignore); /* predicate if a partial index, else NIL */ List *indpred; /* targetlist representing index columns */ List *indextlist; /* * 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()) */ List *indrestrictinfo; /* true if index predicate matches query */ bool predOK; /* true if a unique index */ bool unique; /* is uniqueness enforced immediately? */ bool immediate; /* true if index doesn't really exist */ bool hypothetical; /* * Remaining fields are copied from the index AM's API struct * (IndexAmRoutine). These fields are not set for partitioned indexes. */ bool amcanorderbyop; bool amoptionalkey; bool amsearcharray; bool amsearchnulls; /* does AM have amgettuple interface? */ bool amhasgettuple; /* does AM have amgetbitmap interface? */ bool amhasgetbitmap; bool amcanparallel; /* does AM have ammarkpos interface? */ bool amcanmarkpos; /* AM's cost estimator */ /* Rather than include amapi.h here, we declare amcostestimate like this */ void (*amcostestimate) (struct PlannerInfo *, struct IndexPath *, double, Cost *, Cost *, Selectivity *, double *, double *) pg_node_attr(read_write_ignore); }; /* * 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 { pg_node_attr(custom_read_write, no_copy_equal, no_read, no_query_jumble) NodeTag type; /* * Basic data about the foreign key (fetched from catalogs): */ /* RT index of the referencing table */ Index con_relid; /* RT index of the referenced table */ Index ref_relid; /* number of columns in the foreign key */ int nkeys; /* cols in referencing table */ AttrNumber conkey[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys)); /* cols in referenced table */ AttrNumber confkey[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys)); /* PK = FK operator OIDs */ Oid conpfeqop[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys)); /* * Derived info about whether FK's equality conditions match the query: */ /* # of FK cols matched by ECs */ int nmatched_ec; /* # of these ECs that are ec_has_const */ int nconst_ec; /* # of FK cols matched by non-EC rinfos */ int nmatched_rcols; /* total # of non-EC rinfos matched to FK */ int nmatched_ri; /* Pointer to eclass matching each column's condition, if there is one */ struct EquivalenceClass *eclass[INDEX_MAX_KEYS]; /* Pointer to eclass member for the referencing Var, if there is one */ struct EquivalenceMember *fk_eclass_member[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 { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; /* OID of the statistics row */ Oid statOid; /* includes child relations */ bool inherit; /* back-link to statistic's table; don't print, else infinite recursion */ RelOptInfo *rel pg_node_attr(read_write_ignore); /* statistics kind of this entry */ char kind; /* attnums of the columns covered */ Bitmapset *keys; /* expressions */ List *exprs; } StatisticExtInfo; /* * JoinDomains * * A "join domain" defines the scope of applicability of deductions made via * the EquivalenceClass mechanism. Roughly speaking, a join domain is a set * of base+OJ relations that are inner-joined together. More precisely, it is * the set of relations at which equalities deduced from an EquivalenceClass * can be enforced or should be expected to hold. The topmost JoinDomain * covers the whole query (so its jd_relids should equal all_query_rels). * An outer join creates a new JoinDomain that includes all base+OJ relids * within its nullable side, but (by convention) not the OJ's own relid. * A FULL join creates two new JoinDomains, one for each side. * * Notice that a rel that is below outer join(s) will thus appear to belong * to multiple join domains. However, any of its Vars that appear in * EquivalenceClasses belonging to higher join domains will have nullingrel * bits preventing them from being evaluated at the rel's scan level, so that * we will not be able to derive enforceable-at-the-rel-scan-level clauses * from such ECs. We define the join domain relid sets this way so that * domains can be said to be "higher" or "lower" when one domain relid set * includes another. * * The JoinDomains for a query are computed in deconstruct_jointree. * We do not copy JoinDomain structs once made, so they can be compared * for equality by simple pointer equality. */ typedef struct JoinDomain { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; Relids jd_relids; /* all relids contained within the domain */ } JoinDomain; /* * EquivalenceClasses * * Whenever we identify a mergejoinable equality clause A = B that is * not an outer-join clause, 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.) * * Strictly speaking, deductions from an EquivalenceClass hold only within * a "join domain", that is a set of relations that are innerjoined together * (see JoinDomain above). For the most part we don't need to account for * this explicitly, because equality clauses from different join domains * will contain Vars that are not equal() because they have different * nullingrel sets, and thus we will never falsely merge ECs from different * join domains. But Var-free (pseudoconstant) expressions lack that safety * feature. We handle that by marking "const" EC members with the JoinDomain * of the clause they came from; two nominally-equal const members will be * considered different if they came from different JoinDomains. This ensures * no false EquivalenceClass merges will occur. * * 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. * * 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. * * NB: EquivalenceClasses are never copied after creation. Therefore, * copyObject() copies pointers to them as pointers, and equal() compares * pointers to EquivalenceClasses via pointer equality. This is implemented * by putting copy_as_scalar and equal_as_scalar attributes on fields that * are pointers to EquivalenceClasses. The same goes for EquivalenceMembers. */ typedef struct EquivalenceClass { pg_node_attr(custom_read_write, no_copy_equal, no_read, no_query_jumble) 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_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 constant, 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) /* * 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 { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; Expr *em_expr; /* the expression represented */ Relids em_relids; /* all relids appearing in em_expr */ 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 */ JoinDomain *em_jdomain; /* join domain containing the source clause */ /* if em_is_child is true, this links to corresponding EM for top parent */ struct EquivalenceMember *em_parent pg_node_attr(read_write_ignore); } 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 { pg_node_attr(no_read, no_query_jumble) NodeTag type; /* the value that is ordered */ EquivalenceClass *pk_eclass pg_node_attr(copy_as_scalar, equal_as_scalar); 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; /* * Contains an order of group-by clauses and the corresponding list of * pathkeys. * * The elements of 'clauses' list should have the same order as the head of * 'pathkeys' list. The tleSortGroupRef of the clause should be equal to * ec_sortref of the pathkey equivalence class. If there are redundant * clauses with the same tleSortGroupRef, they must be grouped together. */ typedef struct GroupByOrdering { NodeTag type; List *pathkeys; List *clauses; } GroupByOrdering; /* * VolatileFunctionStatus -- allows nodes to cache their * contain_volatile_functions properties. VOLATILITY_UNKNOWN means not yet * determined. */ typedef enum VolatileFunctionStatus { VOLATILITY_UNKNOWN = 0, VOLATILITY_VOLATILE, VOLATILITY_NOVOLATILE, } VolatileFunctionStatus; /* * 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 { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; /* list of expressions to be computed */ List *exprs; /* corresponding sort/group refnos, or 0 */ Index *sortgrouprefs pg_node_attr(array_size(exprs)); /* cost of evaluating the expressions */ QualCost cost; /* estimated avg width of result tuples */ int width; /* indicates if exprs contain any volatile functions */ VolatileFunctionStatus has_volatile_expr; } 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. ParamPathInfos * for append relations don't bother with this, either. * * ppi_serials is the set of rinfo_serial numbers for quals that are enforced * by this path. As with ppi_clauses, it's only maintained for baserels. * (We could construct it on-the-fly from ppi_clauses, but it seems better * to materialize a copy.) */ typedef struct ParamPathInfo { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; Relids ppi_req_outer; /* rels supplying parameters used by path */ Cardinality ppi_rows; /* estimated number of result tuples */ List *ppi_clauses; /* join clauses available from outer rels */ Bitmapset *ppi_serials; /* set of rinfo_serial for enforced quals */ } 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. * * We 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. We also don't have read support at the moment. */ typedef struct Path { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; /* tag identifying scan/join method */ NodeTag pathtype; /* * the relation this path can build * * We do NOT print the parent, else we'd be in infinite recursion. We can * print the parent's relids for identification purposes, though. */ RelOptInfo *parent pg_node_attr(write_only_relids); /* * list of Vars/Exprs, cost, width * * We print the pathtarget only if it's not the default one for the rel. */ PathTarget *pathtarget pg_node_attr(write_only_nondefault_pathtarget); /* * parameterization info, or NULL if none * * We do not print the whole of param_info, since it's printed via * RelOptInfo; it's sufficient and less cluttering to print just the * required outer relids. */ ParamPathInfo *param_info pg_node_attr(write_only_req_outer); /* engage parallel-aware logic? */ bool parallel_aware; /* OK to use as part of parallel plan? */ bool parallel_safe; /* desired # of workers; 0 = not parallel */ int parallel_workers; /* estimated size/costs for path (see costsize.c for more info) */ Cardinality rows; /* estimated number of result tuples */ Cost startup_cost; /* cost expended before fetching any tuples */ Cost total_cost; /* total cost (assuming all tuples fetched) */ /* sort ordering of path's output; a List of PathKey nodes; see above */ List *pathkeys; } 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 index * BackwardScanDirection: backward scan of an ordered index * Unordered indexes will always have an indexscandir of ForwardScanDirection. * * '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 { pg_node_attr(no_copy_equal, no_read, no_query_jumble) 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; /* * TidRangePath represents a scan by a contiguous range of TIDs * * tidrangequals is an implicitly AND'ed list of qual expressions of the form * "CTID relop pseudoconstant", where relop is one of >,>=,<,<=. */ typedef struct TidRangePath { Path path; List *tidrangequals; } TidRangePath; /* * 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. * * In the case of a foreign join, fdw_restrictinfo stores the RestrictInfos to * apply to the join, which are used by createplan.c to get pseudoconstant * clauses evaluated as one-time quals in a gating Result plan node. * * 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_restrictinfo; List *fdw_private; } ForeignPath; /* * CustomPath represents a table scan or a table join 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 or join relations. 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 base or join * relation by set_rel_pathlist_hook or set_join_pathlist_hook functions, * respectively. * * In the case of a table join, custom_restrictinfo stores the RestrictInfos * to apply to the join, which are used by createplan.c to get pseudoconstant * clauses evaluated as one-time quals in a gating Result plan node. * * 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_restrictinfo; 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; List *subpaths; /* list of component Paths */ /* Index of first partial path in subpaths; list_length(subpaths) if none */ int first_partial_path; Cardinality 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; List *subpaths; /* list of component Paths */ Cardinality 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; /* * MemoizePath represents a Memoize plan node, i.e., a cache that caches * tuples from parameterized paths to save the underlying node from having to * be rescanned for parameter values which are already cached. */ typedef struct MemoizePath { Path path; Path *subpath; /* outerpath to cache tuples from */ List *hash_operators; /* OIDs of hash equality ops for cache keys */ List *param_exprs; /* expressions that are cache keys */ bool singlerow; /* true if the cache entry is to be marked as * complete after caching the first record. */ bool binary_mode; /* true when cache key should be compared bit * by bit, false when using hash equality ops */ Cardinality calls; /* expected number of rescans */ uint32 est_entries; /* The maximum number of entries that the * planner expects will fit in the cache, or 0 * if unknown */ } MemoizePath; /* * 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 UniquePathMethod { 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 { pg_node_attr(abstract) 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 struct NestPath { JoinPath jpath; } 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 */ Cardinality 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 */ Cardinality 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 { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; List *set; /* grouping set as list of sortgrouprefs */ Cardinality numGroups; /* est. number of result groups */ } GroupingSetData; typedef struct RollupData { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; List *groupClause; /* applicable subset of parse->groupClause */ List *gsets; /* lists of integer indexes into groupClause */ List *gsets_data; /* list of GroupingSetData */ Cardinality 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 */ List *qual; /* lower-level WindowAgg runconditions */ List *runCondition; /* OpExpr List to short-circuit execution */ bool topwindow; /* false for all apart from the WindowAgg * that's closest to the root of the plan */ } 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 */ Cardinality 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 */ Cardinality 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/MERGE * * We represent most things that will be in the ModifyTable plan node * literally, except we have a child Path not Plan. But analysis of the * OnConflictExpr is deferred to createplan.c, as is collection of FDW data. */ typedef struct ModifyTablePath { Path path; Path *subpath; /* Path producing source data */ CmdType operation; /* INSERT, UPDATE, DELETE, or MERGE */ 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 partitioned/inherited */ bool partColsUpdated; /* some part key in hierarchy updated? */ List *resultRelations; /* integer list of RT indexes */ List *updateColnosLists; /* per-target-table update_colnos lists */ 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 */ List *mergeActionLists; /* per-target-table lists of actions for * MERGE */ List *mergeJoinConditions; /* per-target-table join conditions * for MERGE */ } 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+OJ relation, it will * appear in the joininfo list of every RelOptInfo that describes a strict * subset of the relations 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 relations it references, however. * * When we construct a join rel that includes all the relations 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 relations 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. * * The clause_relids field lists the base plus outer-join RT indexes that * actually appear in the clause. required_relids lists the minimum set of * relids needed to evaluate the clause; while this is often equal to * clause_relids, it can be more. We will add relids to required_relids when * we need to force an outer join ON clause to be evaluated exactly at the * level of the outer join, which is true except when it is a "degenerate" * condition that references only Vars from the nullable side of the join. * * 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.) * * There is also an incompatible_relids field, which is a set of outer-join * relids above which we cannot evaluate the clause (because they might null * Vars it uses that should not be nulled yet). In principle this could be * filled in any RestrictInfo as the set of OJ relids that appear above the * clause and null Vars that it uses. In practice we only bother to populate * it for "clone" clauses, as it's currently only needed to prevent multiple * clones of the same clause from being accepted for evaluation at the same * join level. * * 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.) * * 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 we generate multiple versions of a clause so as to have versions * that will work after commuting some left joins per outer join identity 3, * we mark the one with the fewest nullingrels bits with has_clone = true, * and the rest with is_clone = true. This allows proper filtering of * these redundant clauses, so that we apply only one version of them. * * 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. * * Most fields are ignored for equality, since they may not be set yet, and * should be derivable from the clause anyway. * * parent_ec, left_ec, right_ec are not printed, lest it lead to infinite * recursion in plan tree dump. */ typedef struct RestrictInfo { pg_node_attr(no_read, no_query_jumble) NodeTag type; /* the represented clause of WHERE or JOIN */ Expr *clause; /* true if clause was pushed down in level */ bool is_pushed_down; /* see comment above */ bool can_join pg_node_attr(equal_ignore); /* see comment above */ bool pseudoconstant pg_node_attr(equal_ignore); /* see comment above */ bool has_clone; bool is_clone; /* true if known to contain no leaked Vars */ bool leakproof pg_node_attr(equal_ignore); /* indicates if clause contains any volatile functions */ VolatileFunctionStatus has_volatile pg_node_attr(equal_ignore); /* see comment above */ Index security_level; /* number of base rels in clause_relids */ int num_base_rels pg_node_attr(equal_ignore); /* The relids (varnos+varnullingrels) actually referenced in the clause: */ Relids clause_relids pg_node_attr(equal_ignore); /* The set of relids required to evaluate the clause: */ Relids required_relids; /* Relids above which we cannot evaluate the clause (see comment above) */ Relids incompatible_relids; /* If an outer-join clause, the outer-side relations, else NULL: */ Relids outer_relids; /* * Relids in the left/right side of the clause. These fields are set for * any binary opclause. */ Relids left_relids pg_node_attr(equal_ignore); Relids right_relids pg_node_attr(equal_ignore); /* * Modified clause with RestrictInfos. This field is NULL unless clause * is an OR clause. */ Expr *orclause pg_node_attr(equal_ignore); /*---------- * Serial number of this RestrictInfo. This is unique within the current * PlannerInfo context, with a few critical exceptions: * 1. When we generate multiple clones of the same qual condition to * cope with outer join identity 3, all the clones get the same serial * number. This reflects that we only want to apply one of them in any * given plan. * 2. If we manufacture a commuted version of a qual to use as an index * condition, it copies the original's rinfo_serial, since it is in * practice the same condition. * 3. If we reduce a qual to constant-FALSE, the new constant-FALSE qual * copies the original's rinfo_serial, since it is in practice the same * condition. * 4. RestrictInfos made for a child relation copy their parent's * rinfo_serial. Likewise, when an EquivalenceClass makes a derived * equality clause for a child relation, it copies the rinfo_serial of * the matching equality clause for the parent. This allows detection * of redundant pushed-down equality clauses. *---------- */ int rinfo_serial; /* * Generating EquivalenceClass. This field is NULL unless clause is * potentially redundant. */ EquivalenceClass *parent_ec pg_node_attr(copy_as_scalar, equal_ignore, read_write_ignore); /* * cache space for cost and selectivity */ /* eval cost of clause; -1 if not yet set */ QualCost eval_cost pg_node_attr(equal_ignore); /* selectivity for "normal" (JOIN_INNER) semantics; -1 if not yet set */ Selectivity norm_selec pg_node_attr(equal_ignore); /* selectivity for outer join semantics; -1 if not yet set */ Selectivity outer_selec pg_node_attr(equal_ignore); /* * opfamilies containing clause operator; valid if clause is * mergejoinable, else NIL */ List *mergeopfamilies pg_node_attr(equal_ignore); /* * cache space for mergeclause processing; NULL if not yet set */ /* EquivalenceClass containing lefthand */ EquivalenceClass *left_ec pg_node_attr(copy_as_scalar, equal_ignore, read_write_ignore); /* EquivalenceClass containing righthand */ EquivalenceClass *right_ec pg_node_attr(copy_as_scalar, equal_ignore, read_write_ignore); /* EquivalenceMember for lefthand */ EquivalenceMember *left_em pg_node_attr(copy_as_scalar, equal_ignore); /* EquivalenceMember for righthand */ EquivalenceMember *right_em pg_node_attr(copy_as_scalar, equal_ignore); /* * List of MergeScanSelCache structs. Those aren't Nodes, so hard to * copy; instead replace with NIL. That has the effect that copying will * just reset the cache. Likewise, can't compare or print them. */ List *scansel_cache pg_node_attr(copy_as(NIL), equal_ignore, read_write_ignore); /* * transient workspace for use while considering a specific join path; T = * outer var on left, F = on right */ bool outer_is_left pg_node_attr(equal_ignore); /* * copy of clause operator; valid if clause is hashjoinable, else * InvalidOid */ Oid hashjoinoperator pg_node_attr(equal_ignore); /* * cache space for hashclause processing; -1 if not yet set */ /* avg bucketsize of left side */ Selectivity left_bucketsize pg_node_attr(equal_ignore); /* avg bucketsize of right side */ Selectivity right_bucketsize pg_node_attr(equal_ignore); /* left side's most common val's freq */ Selectivity left_mcvfreq pg_node_attr(equal_ignore); /* right side's most common val's freq */ Selectivity right_mcvfreq pg_node_attr(equal_ignore); /* hash equality operators used for memoize nodes, else InvalidOid */ Oid left_hasheqoperator pg_node_attr(equal_ignore); Oid right_hasheqoperator pg_node_attr(equal_ignore); } 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. Generally the evaluation occurs below an outer * join, and Var references above the outer join might thereby yield NULL * instead of the expression value. * * phrels and phlevelsup correspond to the varno/varlevelsup fields of a * plain Var, except that phrels has to be a relid set since the evaluation * level of a PlaceHolderVar might be a join rather than a base relation. * Likewise, phnullingrels corresponds to varnullingrels. * * 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. * * 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. But we do * need to compare phnullingrels, as that represents effects that are * external to the original value of the PHV. */ typedef struct PlaceHolderVar { pg_node_attr(no_query_jumble) Expr xpr; /* the represented expression */ Expr *phexpr pg_node_attr(equal_ignore); /* base+OJ relids syntactically within expr src */ Relids phrels pg_node_attr(equal_ignore); /* RT indexes of outer joins that can null PHV's value */ Relids phnullingrels; /* ID for PHV (unique within planner run) */ Index phid; /* > 0 if PHV belongs to outer query */ Index phlevelsup; } 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+OJ relids that must be * available on each side when performing the special join. * 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+OJ relids that are * syntactically below this special join. (These are needed to help compute * min_lefthand and min_righthand for higher joins.) * * jointype is never JOIN_RIGHT; a RIGHT JOIN is handled by switching * the inputs to make it a LEFT JOIN. It's never JOIN_RIGHT_ANTI either. * So the allowed values of jointype in a join_info_list member are only * LEFT, FULL, SEMI, or ANTI. * * ojrelid is the RT index of the join RTE representing this outer join, * if there is one. It is zero when jointype is INNER or SEMI, and can be * zero for jointype ANTI (if the join was transformed from a SEMI join). * One use for this field is that when constructing the output targetlist of a * join relation that implements this OJ, we add ojrelid to the varnullingrels * and phnullingrels fields of nullable (RHS) output columns, so that the * output Vars and PlaceHolderVars correctly reflect the nulling that has * potentially happened to them. * * commute_above_l is filled with the relids of syntactically-higher outer * joins that have been found to commute with this one per outer join identity * 3 (see optimizer/README), when this join is in the LHS of the upper join * (so, this is the lower join in the first form of the identity). * * commute_above_r is filled with the relids of syntactically-higher outer * joins that have been found to commute with this one per outer join identity * 3, when this join is in the RHS of the upper join (so, this is the lower * join in the second form of the identity). * * commute_below_l is filled with the relids of syntactically-lower outer * joins that have been found to commute with this one per outer join identity * 3 and are in the LHS of this join (so, this is the upper join in the first * form of the identity). * * commute_below_r is filled with the relids of syntactically-lower outer * joins that have been found to commute with this one per outer join identity * 3 and are in the RHS of this join (so, this is the upper join in the second * form of the identity). * * 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. * * 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.) * * 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 and the semi_xxx fields * are not set meaningfully within such structs. * * We also create transient SpecialJoinInfos for child joins during * partitionwise join planning, which are also not present in join_info_list. */ #ifndef HAVE_SPECIALJOININFO_TYPEDEF typedef struct SpecialJoinInfo SpecialJoinInfo; #define HAVE_SPECIALJOININFO_TYPEDEF 1 #endif struct SpecialJoinInfo { pg_node_attr(no_read, no_query_jumble) NodeTag type; Relids min_lefthand; /* base+OJ relids in minimum LHS for join */ Relids min_righthand; /* base+OJ relids in minimum RHS for join */ Relids syn_lefthand; /* base+OJ relids syntactically within LHS */ Relids syn_righthand; /* base+OJ relids syntactically within RHS */ JoinType jointype; /* always INNER, LEFT, FULL, SEMI, or ANTI */ Index ojrelid; /* outer join's RT index; 0 if none */ Relids commute_above_l; /* commuting OJs above this one, if LHS */ Relids commute_above_r; /* commuting OJs above this one, if RHS */ Relids commute_below_l; /* commuting OJs in this one's LHS */ Relids commute_below_r; /* commuting OJs in this one's RHS */ bool lhs_strict; /* joinclause is strict for some LHS rel */ /* 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 */ }; /* * Transient outer-join clause info. * * We set aside every outer join ON clause that looks mergejoinable, * and process it specially at the end of qual distribution. */ typedef struct OuterJoinClauseInfo { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; RestrictInfo *rinfo; /* a mergejoinable outer-join clause */ SpecialJoinInfo *sjinfo; /* the outer join's SpecialJoinInfo */ } OuterJoinClauseInfo; /* * 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 { pg_node_attr(no_query_jumble) 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 pg_node_attr(array_size(num_child_cols)); /* * 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; /* * Information about a row-identity "resjunk" column in UPDATE/DELETE/MERGE. * * In partitioned UPDATE/DELETE/MERGE it's important for child partitions to * share row-identity columns whenever possible, so as not to chew up too many * targetlist columns. We use these structs to track which identity columns * have been requested. In the finished plan, each of these will give rise * to one resjunk entry in the targetlist of the ModifyTable's subplan node. * * All the Vars stored in RowIdentityVarInfos must have varno ROWID_VAR, for * convenience of detecting duplicate requests. We'll replace that, in the * final plan, with the varno of the generating rel. * * Outside this list, a Var with varno ROWID_VAR and varattno k is a reference * to the k-th element of the row_identity_vars list (k counting from 1). * We add such a reference to root->processed_tlist when creating the entry, * and it propagates into the plan tree from there. */ typedef struct RowIdentityVarInfo { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; Var *rowidvar; /* Var to be evaluated (but varno=ROWID_VAR) */ int32 rowidwidth; /* estimated average width */ char *rowidname; /* name of the resjunk column */ Relids rowidrels; /* RTE indexes of target rels using this */ } RowIdentityVarInfo; /* * 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 { pg_node_attr(no_read, no_query_jumble) NodeTag type; /* ID for PH (unique within planner run) */ Index phid; /* * copy of PlaceHolderVar tree (should be redundant for comparison, could * be ignored) */ PlaceHolderVar *ph_var; /* lowest level we can evaluate value at */ Relids ph_eval_at; /* relids of contained lateral refs, if any */ Relids ph_lateral; /* highest level the value is needed at */ Relids ph_needed; /* estimated attribute width */ int32 ph_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 { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; /* pg_proc Oid of the aggregate */ Oid aggfnoid; /* Oid of its sort operator */ Oid aggsortop; /* expression we are aggregating on */ Expr *target; /* * modified "root" for planning the subquery; not printed, too large, not * interesting enough */ PlannerInfo *subroot pg_node_attr(read_write_ignore); /* access path for subquery */ Path *path; /* estimated cost to fetch first row */ Cost pathcost; /* param for subplan's output */ Param *param; } 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 { pg_node_attr(no_copy_equal, no_read, no_query_jumble) 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; Cardinality 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 */ Cardinality outer_rows; Cardinality inner_rows; Cardinality outer_skip_rows; Cardinality inner_skip_rows; /* private for cost_hashjoin code */ int numbuckets; int numbatches; Cardinality inner_rows_total; } JoinCostWorkspace; /* * AggInfo holds information about an aggregate that needs to be computed. * Multiple Aggrefs in a query can refer to the same AggInfo by having the * same 'aggno' value, so that the aggregate is computed only once. */ typedef struct AggInfo { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; /* * List of Aggref exprs that this state value is for. * * There will always be at least one, but there can be multiple identical * Aggref's sharing the same per-agg. */ List *aggrefs; /* Transition state number for this aggregate */ int transno; /* * "shareable" is false if this agg cannot share state values with other * aggregates because the final function is read-write. */ bool shareable; /* Oid of the final function, or InvalidOid if none */ Oid finalfn_oid; } AggInfo; /* * AggTransInfo holds information about transition state that is used by one * or more aggregates in the query. Multiple aggregates can share the same * transition state, if they have the same inputs and the same transition * function. Aggrefs that share the same transition info have the same * 'aggtransno' value. */ typedef struct AggTransInfo { pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type; /* Inputs for this transition state */ List *args; Expr *aggfilter; /* Oid of the state transition function */ Oid transfn_oid; /* Oid of the serialization function, or InvalidOid if none */ Oid serialfn_oid; /* Oid of the deserialization function, or InvalidOid if none */ Oid deserialfn_oid; /* Oid of the combine function, or InvalidOid if none */ Oid combinefn_oid; /* Oid of state value's datatype */ Oid aggtranstype; /* Additional data about transtype */ int32 aggtranstypmod; int transtypeLen; bool transtypeByVal; /* Space-consumption estimate */ int32 aggtransspace; /* Initial value from pg_aggregate entry */ Datum initValue pg_node_attr(read_write_ignore); bool initValueIsNull; } AggTransInfo; #endif /* PATHNODES_H */ libpg_query-17-6.1.0/src/postgres/include/nodes/pg_list.h000066400000000000000000000614501477334012600233040ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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 four 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 * T_XidList: lists of TransactionIds * (the XidList infrastructure is less complete than the other cases) * * (At the moment, ints, Oids, and XIDs are the same size, but they may not * always be so; be careful to use the appropriate list type for your data.) * * * Portions Copyright (c) 1996-2024, 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; TransactionId xid_value; } ListCell; typedef struct List { NodeTag type; /* T_List, T_IntList, T_OidList, or T_XidList */ 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 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_xid(lc) ((lc)->xid_value) #define lfirst_node(type,lc) castNode(type, lfirst(lc)) #define linitial(l) lfirst(list_nth_cell(l, 0)) #define linitial_int(l) lfirst_int(list_nth_cell(l, 0)) #define linitial_oid(l) lfirst_oid(list_nth_cell(l, 0)) #define linitial_node(type,l) castNode(type, linitial(l)) #define lsecond(l) lfirst(list_nth_cell(l, 1)) #define lsecond_int(l) lfirst_int(list_nth_cell(l, 1)) #define lsecond_oid(l) lfirst_oid(list_nth_cell(l, 1)) #define lsecond_node(type,l) castNode(type, lsecond(l)) #define lthird(l) lfirst(list_nth_cell(l, 2)) #define lthird_int(l) lfirst_int(list_nth_cell(l, 2)) #define lthird_oid(l) lfirst_oid(list_nth_cell(l, 2)) #define lthird_node(type,l) castNode(type, lthird(l)) #define lfourth(l) lfirst(list_nth_cell(l, 3)) #define lfourth_int(l) lfirst_int(list_nth_cell(l, 3)) #define lfourth_oid(l) lfirst_oid(list_nth_cell(l, 3)) #define lfourth_node(type,l) castNode(type, lfourth(l)) #define llast(l) lfirst(list_last_cell(l)) #define llast_int(l) lfirst_int(list_last_cell(l)) #define llast_oid(l) lfirst_oid(list_last_cell(l)) #define llast_xid(l) lfirst_xid(list_last_cell(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_make_xid_cell(v) ((ListCell) {.xid_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_make5(x1,x2,x3,x4,x5) \ list_make5_impl(T_List, list_make_ptr_cell(x1), list_make_ptr_cell(x2), \ list_make_ptr_cell(x3), list_make_ptr_cell(x4), \ list_make_ptr_cell(x5)) #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_make5_int(x1,x2,x3,x4,x5) \ list_make5_impl(T_IntList, list_make_int_cell(x1), list_make_int_cell(x2), \ list_make_int_cell(x3), list_make_int_cell(x4), \ list_make_int_cell(x5)) #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)) #define list_make5_oid(x1,x2,x3,x4,x5) \ list_make5_impl(T_OidList, list_make_oid_cell(x1), list_make_oid_cell(x2), \ list_make_oid_cell(x3), list_make_oid_cell(x4), \ list_make_oid_cell(x5)) #define list_make1_xid(x1) \ list_make1_impl(T_XidList, list_make_xid_cell(x1)) #define list_make2_xid(x1,x2) \ list_make2_impl(T_XidList, list_make_xid_cell(x1), list_make_xid_cell(x2)) #define list_make3_xid(x1,x2,x3) \ list_make3_impl(T_XidList, list_make_xid_cell(x1), list_make_xid_cell(x2), \ list_make_xid_cell(x3)) #define list_make4_xid(x1,x2,x3,x4) \ list_make4_impl(T_XidList, list_make_xid_cell(x1), list_make_xid_cell(x2), \ list_make_xid_cell(x3), list_make_xid_cell(x4)) #define list_make5_xid(x1,x2,x3,x4,x5) \ list_make5_impl(T_XidList, list_make_xid_cell(x1), list_make_xid_cell(x2), \ list_make_xid_cell(x3), list_make_xid_cell(x4), \ list_make_xid_cell(x5)) /* * 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 last cell in a non-NIL List. */ static inline ListCell * list_last_cell(const List *list) { Assert(list != NIL); return &list->elements[list->length - 1]; } /* * 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() or foreach_*() loop, returning the new List * pointer; pass the name of the iterator variable. * * This is similar to list_delete_cell(), but it also adjusts the loop's state * so that no list elements will be missed. Do not delete elements from an * active foreach or foreach_* loop's list in any other way! */ #define foreach_delete_current(lst, var_or_cell) \ ((List *) (var_or_cell##__state.l = list_delete_nth_cell(lst, var_or_cell##__state.i--))) /* * foreach_current_index - * get the zero-based list index of a surrounding foreach() or foreach_*() * loop's current element; pass the name of the 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(var_or_cell) (var_or_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; } /* * Convenience macros that loop through a list without needing a separate * "ListCell *" variable. Instead, the macros declare a locally-scoped loop * variable with the provided name and the appropriate type. * * Since the variable is scoped to the loop, it's not possible to detect an * early break by checking its value after the loop completes, as is common * practice. If you need to do this, you can either use foreach() instead or * manually track early breaks with a separate variable declared outside of the * loop. * * Note that the caveats described in the comment above the foreach() macro * also apply to these convenience macros. */ #define foreach_ptr(type, var, lst) foreach_internal(type, *, var, lst, lfirst) #define foreach_int(var, lst) foreach_internal(int, , var, lst, lfirst_int) #define foreach_oid(var, lst) foreach_internal(Oid, , var, lst, lfirst_oid) #define foreach_xid(var, lst) foreach_internal(TransactionId, , var, lst, lfirst_xid) /* * The internal implementation of the above macros. Do not use directly. * * This macro actually generates two loops in order to declare two variables of * different types. The outer loop only iterates once, so we expect optimizing * compilers will unroll it, thereby optimizing it away. */ #define foreach_internal(type, pointer, var, lst, func) \ for (type pointer var = 0, pointer var##__outerloop = (type pointer) 1; \ var##__outerloop; \ var##__outerloop = 0) \ for (ForEachState var##__state = {(lst), 0}; \ (var##__state.l != NIL && \ var##__state.i < var##__state.l->length && \ (var = (type pointer) func(&var##__state.l->elements[var##__state.i]), true)); \ var##__state.i++) /* * foreach_node - * The same as foreach_ptr, but asserts that the element is of the specified * node type. */ #define foreach_node(type, var, lst) \ for (type * var = 0, *var##__outerloop = (type *) 1; \ var##__outerloop; \ var##__outerloop = 0) \ for (ForEachState var##__state = {(lst), 0}; \ (var##__state.l != NIL && \ var##__state.i < var##__state.l->length && \ (var = lfirst_node(type, &var##__state.l->elements[var##__state.i]), true)); \ var##__state.i++) /* * 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 *list_make5_impl(NodeTag t, ListCell datum1, ListCell datum2, ListCell datum3, ListCell datum4, ListCell datum5); extern pg_nodiscard List *lappend(List *list, void *datum); extern pg_nodiscard List *lappend_int(List *list, int datum); extern pg_nodiscard List *lappend_oid(List *list, Oid datum); extern pg_nodiscard List *lappend_xid(List *list, TransactionId datum); extern pg_nodiscard List *list_insert_nth(List *list, int pos, void *datum); extern pg_nodiscard List *list_insert_nth_int(List *list, int pos, int datum); extern pg_nodiscard List *list_insert_nth_oid(List *list, int pos, Oid datum); extern pg_nodiscard List *lcons(void *datum, List *list); extern pg_nodiscard List *lcons_int(int datum, List *list); extern pg_nodiscard List *lcons_oid(Oid datum, List *list); extern pg_nodiscard List *list_concat(List *list1, const List *list2); extern pg_nodiscard List *list_concat_copy(const List *list1, const List *list2); extern pg_nodiscard 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 bool list_member_xid(const List *list, TransactionId datum); extern pg_nodiscard List *list_delete(List *list, void *datum); extern pg_nodiscard List *list_delete_ptr(List *list, void *datum); extern pg_nodiscard List *list_delete_int(List *list, int datum); extern pg_nodiscard List *list_delete_oid(List *list, Oid datum); extern pg_nodiscard List *list_delete_first(List *list); extern pg_nodiscard List *list_delete_last(List *list); extern pg_nodiscard List *list_delete_first_n(List *list, int n); extern pg_nodiscard List *list_delete_nth_cell(List *list, int n); extern pg_nodiscard 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 pg_nodiscard List *list_append_unique(List *list, void *datum); extern pg_nodiscard List *list_append_unique_ptr(List *list, void *datum); extern pg_nodiscard List *list_append_unique_int(List *list, int datum); extern pg_nodiscard List *list_append_unique_oid(List *list, Oid datum); extern pg_nodiscard List *list_concat_unique(List *list1, const List *list2); extern pg_nodiscard List *list_concat_unique_ptr(List *list1, const List *list2); extern pg_nodiscard List *list_concat_unique_int(List *list1, const List *list2); extern pg_nodiscard 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 pg_nodiscard List *list_copy(const List *oldlist); extern pg_nodiscard List *list_copy_head(const List *oldlist, int len); extern pg_nodiscard List *list_copy_tail(const List *oldlist, int nskip); extern pg_nodiscard 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_int_cmp(const ListCell *p1, const ListCell *p2); extern int list_oid_cmp(const ListCell *p1, const ListCell *p2); #endif /* PG_LIST_H */ libpg_query-17-6.1.0/src/postgres/include/nodes/plannodes.h000066400000000000000000001504301477334012600236230ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * plannodes.h * definitions for query plan nodes * * * Portions Copyright (c) 1996-2024, 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 "common/relpath.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.) * * PlannedStmt, as well as all varieties of Plan, do not support equal(), * not because it's not sensible but because we currently have no need. * ---------------- */ typedef struct PlannedStmt { pg_node_attr(no_equal, no_query_jumble) NodeTag type; CmdType commandType; /* select|insert|update|delete|merge|utility */ uint64 queryId; /* query identifier (copied from Query) */ bool hasReturning; /* is it insert|update|delete|merge RETURNING? */ bool hasModifyingCTE; /* has insert|update|delete|merge 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 */ List *permInfos; /* list of RTEPermissionInfo nodes for rtable * entries needing one */ /* rtable indexes of target relations for INSERT/UPDATE/DELETE/MERGE */ List *resultRelations; /* integer list of RT indexes, or NIL */ 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) */ ParseLoc stmt_location; /* start location, or -1 if unknown */ ParseLoc 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 { pg_node_attr(abstract, no_equal, no_query_jumble) 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 */ Cardinality 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? */ /* * information needed for asynchronous execution */ bool async_capable; /* engage asynchronous-capable logic? */ /* * 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 outer plan to result table(s), * by inserting, updating, or deleting. * * If the originally named target table is a partitioned table or inheritance * tree, both nominalRelation and rootRelation contain the RT index of the * partition root or appendrel RTE, 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/MERGE target. * * Note that rowMarks and epqParam are presumed to be valid for all the * table(s); they can't contain any info that varies across tables. * ---------------- */ typedef struct ModifyTable { Plan plan; CmdType operation; /* INSERT, UPDATE, DELETE, or MERGE */ 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 partitioned/inherited */ bool partColsUpdated; /* some part key in hierarchy updated? */ List *resultRelations; /* integer list of RT indexes */ List *updateColnosLists; /* per-target-table update_colnos lists */ 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; /* INSERT ON CONFLICT DO UPDATE targetlist */ List *onConflictCols; /* target column numbers for onConflictSet */ Node *onConflictWhere; /* WHERE for ON CONFLICT UPDATE */ Index exclRelRTI; /* RTI of the EXCLUDED pseudo relation */ List *exclRelTlist; /* tlist of the EXCLUDED pseudo relation */ List *mergeActionLists; /* per-target-table lists of actions for * MERGE */ List *mergeJoinConditions; /* per-target-table join conditions * for MERGE */ } 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; int nasyncplans; /* # of asynchronous plans */ /* * 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; /* RTIs of appendrel(s) formed by this node */ Bitmapset *apprelids; List *mergeplans; /* these fields are just like the sort-key info in struct Sort: */ /* number of sort-key columns */ int numCols; /* their indexes in the target list */ AttrNumber *sortColIdx pg_node_attr(array_size(numCols)); /* OIDs of operators to sort them by */ Oid *sortOperators pg_node_attr(array_size(numCols)); /* OIDs of collations */ Oid *collations pg_node_attr(array_size(numCols)); /* NULLS FIRST/LAST directions */ bool *nullsFirst pg_node_attr(array_size(numCols)); /* 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; /* ID of Param representing work table */ int wtParam; /* Remaining fields are zero/null in UNION ALL case */ /* number of columns to check for duplicate-ness */ int numCols; /* their indexes in the target list */ AttrNumber *dupColIdx pg_node_attr(array_size(numCols)); /* equality operators to compare with */ Oid *dupOperators pg_node_attr(array_size(numCols)); Oid *dupCollations pg_node_attr(array_size(numCols)); /* estimated number of groups in input */ long numGroups; } 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 * * Scan is an abstract type that all relation scan plan types inherit from. * ========== */ typedef struct Scan { pg_node_attr(abstract) Plan plan; Index scanrelid; /* relid is index into the range table */ } Scan; /* ---------------- * sequential scan node * ---------------- */ typedef struct SeqScan { Scan 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. * * We could almost use indexqual directly against the index's output tuple * when rechecking lossy index operators, but that won't work for quals on * index columns that are not retrievable. Hence, recheckqual is needed * for rechecks: it expresses the same condition as indexqual, but using * only index columns that are retrievable. (We will not generate an * index-only scan if this is not possible. An example is that if an * index has table column "x" in a retrievable index column "ind1", plus * an expression f(x) in a non-retrievable column "ind2", an indexable * query on f(x) will use "ind2" in indexqual and f(ind1) in recheckqual. * Without the "ind1" column, an index-only scan would be disallowed.) * * We don't currently need a recheckable equivalent of indexorderby, * because we don't support lossy operators in index ORDER BY. * * 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. Also, for the convenience of setrefs.c, TLEs in * indextlist are marked as resjunk if they correspond to columns that * the index AM cannot reconstruct. * ---------------- */ typedef struct IndexOnlyScan { Scan scan; Oid indexid; /* OID of index to scan */ List *indexqual; /* list of index quals (usually OpExprs) */ List *recheckqual; /* index quals in recheckable form */ 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; /* ---------------- * tid range scan node * * tidrangequals is an implicitly AND'ed list of qual expressions of the form * "CTID relop pseudoconstant", where relop is one of >,>=,<,<=. * ---------------- */ typedef struct TidRangeScan { Scan scan; List *tidrangequals; /* qual(s) involving CTID op something */ } TidRangeScan; /* ---------------- * 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. * * SubqueryScanStatus caches the trivial_subqueryscan property of the node. * SUBQUERY_SCAN_UNKNOWN means not yet determined. This is only used during * planning. * * 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 enum SubqueryScanStatus { SUBQUERY_SCAN_UNKNOWN, SUBQUERY_SCAN_TRIVIAL, SUBQUERY_SCAN_NONTRIVIAL, } SubqueryScanStatus; typedef struct SubqueryScan { Scan scan; Plan *subplan; SubqueryScanStatus scanstatus; } 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.) * fs_relids includes outer joins; fs_base_relids does not. * * If the FDW's PlanDirectModify() callback decides to repurpose a ForeignScan * node to perform the UPDATE or DELETE operation directly in the remote * server, it sets 'operation' and 'resultRelation' to identify the operation * type and target relation. Note that these fields are only set if the * modification is performed *fully* remotely; otherwise, the modification is * driven by a local ModifyTable node and 'operation' is left to CMD_SELECT. * ---------------- */ typedef struct ForeignScan { Scan scan; CmdType operation; /* SELECT/INSERT/UPDATE/DELETE */ Index resultRelation; /* direct modification target's RT index */ Oid checkAsUser; /* user to perform the scan as; 0 means to * check as current user */ 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; /* base+OJ RTIs generated by this scan */ Bitmapset *fs_base_relids; /* base 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 */ /* * 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. */ 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 { pg_node_attr(abstract) 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 { pg_node_attr(no_equal, no_query_jumble) 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; /* Can we skip mark/restore calls? */ bool skip_mark_restore; /* mergeclauses as expression trees */ List *mergeclauses; /* these are arrays, but have the same length as the mergeclauses list: */ /* per-clause OIDs of btree opfamilies */ Oid *mergeFamilies pg_node_attr(array_size(mergeclauses)); /* per-clause OIDs of collations */ Oid *mergeCollations pg_node_attr(array_size(mergeclauses)); /* per-clause ordering (ASC or DESC) */ int *mergeStrategies pg_node_attr(array_size(mergeclauses)); /* per-clause nulls ordering */ bool *mergeNullsFirst pg_node_attr(array_size(mergeclauses)); } 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; /* ---------------- * memoize node * ---------------- */ typedef struct Memoize { Plan plan; /* size of the two arrays below */ int numKeys; /* hash operators for each key */ Oid *hashOperators pg_node_attr(array_size(numKeys)); /* collations for each key */ Oid *collations pg_node_attr(array_size(numKeys)); /* cache keys in the form of exprs containing parameters */ List *param_exprs; /* * true if the cache entry should be marked as complete after we store the * first tuple in it. */ bool singlerow; /* * true when cache key should be compared bit by bit, false when using * hash equality ops */ bool binary_mode; /* * The maximum number of entries that the planner expects will fit in the * cache, or 0 if unknown */ uint32 est_entries; /* paramids from param_exprs */ Bitmapset *keyparamids; } Memoize; /* ---------------- * sort node * ---------------- */ typedef struct Sort { Plan plan; /* number of sort-key columns */ int numCols; /* their indexes in the target list */ AttrNumber *sortColIdx pg_node_attr(array_size(numCols)); /* OIDs of operators to sort them by */ Oid *sortOperators pg_node_attr(array_size(numCols)); /* OIDs of collations */ Oid *collations pg_node_attr(array_size(numCols)); /* NULLS FIRST/LAST directions */ bool *nullsFirst pg_node_attr(array_size(numCols)); } 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; /* number of grouping columns */ int numCols; /* their indexes in the target list */ AttrNumber *grpColIdx pg_node_attr(array_size(numCols)); /* equality operators to compare with */ Oid *grpOperators pg_node_attr(array_size(numCols)); Oid *grpCollations pg_node_attr(array_size(numCols)); } 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; /* basic strategy, see nodes.h */ AggStrategy aggstrategy; /* agg-splitting mode, see nodes.h */ AggSplit aggsplit; /* number of grouping columns */ int numCols; /* their indexes in the target list */ AttrNumber *grpColIdx pg_node_attr(array_size(numCols)); /* equality operators to compare with */ Oid *grpOperators pg_node_attr(array_size(numCols)); Oid *grpCollations pg_node_attr(array_size(numCols)); /* estimated number of groups in input */ long numGroups; /* for pass-by-ref transition data */ uint64 transitionSpace; /* IDs of Params used in Aggref inputs */ Bitmapset *aggParams; /* Note: planner provides numGroups & aggParams only in HASHED/MIXED case */ /* grouping sets to use */ List *groupingSets; /* chained Agg/Sort nodes */ List *chain; } Agg; /* ---------------- * window aggregate node * ---------------- */ typedef struct WindowAgg { Plan plan; /* ID referenced by window functions */ Index winref; /* number of columns in partition clause */ int partNumCols; /* their indexes in the target list */ AttrNumber *partColIdx pg_node_attr(array_size(partNumCols)); /* equality operators for partition columns */ Oid *partOperators pg_node_attr(array_size(partNumCols)); /* collations for partition columns */ Oid *partCollations pg_node_attr(array_size(partNumCols)); /* number of columns in ordering clause */ int ordNumCols; /* their indexes in the target list */ AttrNumber *ordColIdx pg_node_attr(array_size(ordNumCols)); /* equality operators for ordering columns */ Oid *ordOperators pg_node_attr(array_size(ordNumCols)); /* collations for ordering columns */ Oid *ordCollations pg_node_attr(array_size(ordNumCols)); /* frame_clause options, see WindowDef */ int frameOptions; /* expression for starting bound, if any */ Node *startOffset; /* expression for ending bound, if any */ Node *endOffset; /* qual to help short-circuit execution */ List *runCondition; /* runCondition for display in EXPLAIN */ List *runConditionOrig; /* these fields are used with RANGE offset PRECEDING/FOLLOWING: */ /* in_range function for startOffset */ Oid startInRangeFunc; /* in_range function for endOffset */ Oid endInRangeFunc; /* collation for in_range tests */ Oid inRangeColl; /* use ASC sort order for in_range tests? */ bool inRangeAsc; /* nulls sort first for in_range tests? */ bool inRangeNullsFirst; /* * false for all apart from the WindowAgg that's closest to the root of * the plan */ bool topWindow; } WindowAgg; /* ---------------- * unique node * ---------------- */ typedef struct Unique { Plan plan; /* number of columns to check for uniqueness */ int numCols; /* their indexes in the target list */ AttrNumber *uniqColIdx pg_node_attr(array_size(numCols)); /* equality operators to compare with */ Oid *uniqOperators pg_node_attr(array_size(numCols)); /* collations for equality comparisons */ Oid *uniqCollations pg_node_attr(array_size(numCols)); } 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; /* planned number of worker processes */ int num_workers; /* ID of Param that signals a rescan, or -1 */ int rescan_param; /* remaining fields are just like the sort-key info in struct Sort */ /* number of sort-key columns */ int numCols; /* their indexes in the target list */ AttrNumber *sortColIdx pg_node_attr(array_size(numCols)); /* OIDs of operators to sort them by */ Oid *sortOperators pg_node_attr(array_size(numCols)); /* OIDs of collations */ Oid *collations pg_node_attr(array_size(numCols)); /* NULLS FIRST/LAST directions */ bool *nullsFirst pg_node_attr(array_size(numCols)); /* * param id's of initplans which are referred at gather merge or one of * it's child node */ Bitmapset *initParam; } 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 */ Cardinality rows_total; /* estimate total rows if parallel_aware */ } Hash; /* ---------------- * setop node * ---------------- */ typedef struct SetOp { Plan plan; /* what to do, see nodes.h */ SetOpCmd cmd; /* how to do it, see nodes.h */ SetOpStrategy strategy; /* number of columns to check for duplicate-ness */ int numCols; /* their indexes in the target list */ AttrNumber *dupColIdx pg_node_attr(array_size(numCols)); /* equality operators to compare with */ Oid *dupOperators pg_node_attr(array_size(numCols)); Oid *dupCollations pg_node_attr(array_size(numCols)); /* where is the flag column, if any */ AttrNumber flagColIdx; /* flag value for first input relation */ int firstFlag; /* estimated number of groups in input */ long numGroups; } 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; /* OFFSET parameter, or NULL if none */ Node *limitOffset; /* COUNT parameter, or NULL if none */ Node *limitCount; /* limit type */ LimitOption limitOption; /* number of columns to check for similarity */ int uniqNumCols; /* their indexes in the target list */ AttrNumber *uniqColIdx pg_node_attr(array_size(uniqNumCols)); /* equality operators to compare with */ Oid *uniqOperators pg_node_attr(array_size(uniqNumCols)); /* collations for equality comparisons */ Oid *uniqCollations pg_node_attr(array_size(uniqNumCols)); } 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/MERGE/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/MERGE/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, if it is not a partitioned table). Any non-leaf partitioned * child relations will also have entries with isParent = true. The child * entries have rti == child rel's RT index and prti == top 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<0 means N levels up */ Index varlevelsup; /* * varnosyn/varattnosyn are ignored for equality, because Vars with * different syntactic identifiers are semantically the same as long as * their varno/varattno match. */ /* syntactic relation index (0 if unknown) */ Index varnosyn pg_node_attr(equal_ignore, query_jumble_ignore); /* syntactic attribute number */ AttrNumber varattnosyn pg_node_attr(equal_ignore, query_jumble_ignore); /* token location, or -1 if unknown */ ParseLoc location; } 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. * * Only the constant type OID is relevant for the query jumbling. */ typedef struct Const { pg_node_attr(custom_copy_equal, custom_read_write) Expr xpr; /* pg_type OID of the constant's datatype */ Oid consttype; /* typmod value, if any */ int32 consttypmod pg_node_attr(query_jumble_ignore); /* OID of collation, or InvalidOid if none */ Oid constcollid pg_node_attr(query_jumble_ignore); /* typlen of the constant's datatype */ int constlen pg_node_attr(query_jumble_ignore); /* the constant's value */ Datum constvalue pg_node_attr(query_jumble_ignore); /* whether the constant is null (if true, constvalue is undefined) */ bool constisnull pg_node_attr(query_jumble_ignore); /* * 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. */ bool constbyval pg_node_attr(query_jumble_ignore); /* * token location, or -1 if unknown. All constants are tracked as * locations in query jumbling, to be marked as parameters. */ ParseLoc location pg_node_attr(query_jumble_location); } 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 */ /* typmod value, if known */ int32 paramtypmod pg_node_attr(query_jumble_ignore); /* OID of collation, or InvalidOid if none */ Oid paramcollid pg_node_attr(query_jumble_ignore); /* token location, or -1 if unknown */ ParseLoc location; } 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. * * aggpresorted is set by the query planner for ORDER BY and DISTINCT * aggregates where the chosen plan provides presorted input for this * aggregate during execution. * * 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. * * aggno and aggtransno are -1 in the parse stage, and are set in planning. * Aggregates with the same 'aggno' represent the same aggregate expression, * and can share the result. Aggregates with same 'transno' but different * 'aggno' can share the same transition state, only the final function needs * to be called separately. * * Information related to collations, transition types and internal states * are irrelevant for the query jumbling. */ typedef struct Aggref { Expr xpr; /* pg_proc Oid of the aggregate */ Oid aggfnoid; /* type Oid of result of the aggregate */ Oid aggtype pg_node_attr(query_jumble_ignore); /* OID of collation of result */ Oid aggcollid pg_node_attr(query_jumble_ignore); /* OID of collation that function should use */ Oid inputcollid pg_node_attr(query_jumble_ignore); /* * type Oid of aggregate's transition value; ignored for equal since it * might not be set yet */ Oid aggtranstype pg_node_attr(equal_ignore, query_jumble_ignore); /* type Oids of direct and aggregated args */ List *aggargtypes pg_node_attr(query_jumble_ignore); /* direct arguments, if an ordered-set agg */ List *aggdirectargs; /* aggregated arguments and sort expressions */ List *args; /* ORDER BY (list of SortGroupClause) */ List *aggorder; /* DISTINCT (list of SortGroupClause) */ List *aggdistinct; /* FILTER expression, if any */ Expr *aggfilter; /* true if argument list was really '*' */ bool aggstar pg_node_attr(query_jumble_ignore); /* * true if variadic arguments have been combined into an array last * argument */ bool aggvariadic pg_node_attr(query_jumble_ignore); /* aggregate kind (see pg_aggregate.h) */ char aggkind pg_node_attr(query_jumble_ignore); /* aggregate input already sorted */ bool aggpresorted pg_node_attr(equal_ignore, query_jumble_ignore); /* > 0 if agg belongs to outer query */ Index agglevelsup pg_node_attr(query_jumble_ignore); /* expected agg-splitting mode of parent Agg */ AggSplit aggsplit pg_node_attr(query_jumble_ignore); /* unique ID within the Agg node */ int aggno pg_node_attr(query_jumble_ignore); /* unique ID of transition state in the Agg */ int aggtransno pg_node_attr(query_jumble_ignore); /* token location, or -1 if unknown */ ParseLoc location; } 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. * * All the fields used as information for an internal state are irrelevant * for the query jumbling. */ typedef struct GroupingFunc { Expr xpr; /* arguments, not evaluated but kept for benefit of EXPLAIN etc. */ List *args pg_node_attr(query_jumble_ignore); /* ressortgrouprefs of arguments */ List *refs pg_node_attr(equal_ignore); /* actual column positions set by planner */ List *cols pg_node_attr(equal_ignore, query_jumble_ignore); /* same as Aggref.agglevelsup */ Index agglevelsup; /* token location */ ParseLoc location; } GroupingFunc; /* * WindowFunc * * Collation information is irrelevant for the query jumbling, as is the * internal state information of the node like "winstar" and "winagg". */ typedef struct WindowFunc { Expr xpr; /* pg_proc Oid of the function */ Oid winfnoid; /* type Oid of result of the window function */ Oid wintype pg_node_attr(query_jumble_ignore); /* OID of collation of result */ Oid wincollid pg_node_attr(query_jumble_ignore); /* OID of collation that function should use */ Oid inputcollid pg_node_attr(query_jumble_ignore); /* arguments to the window function */ List *args; /* FILTER expression, if any */ Expr *aggfilter; /* List of WindowFuncRunConditions to help short-circuit execution */ List *runCondition pg_node_attr(query_jumble_ignore); /* index of associated WindowClause */ Index winref; /* true if argument list was really '*' */ bool winstar pg_node_attr(query_jumble_ignore); /* is function a simple aggregate? */ bool winagg pg_node_attr(query_jumble_ignore); /* token location, or -1 if unknown */ ParseLoc location; } WindowFunc; /* * WindowFuncRunCondition * * Represents intermediate OpExprs which will be used by WindowAgg to * short-circuit execution. */ typedef struct WindowFuncRunCondition { Expr xpr; /* PG_OPERATOR OID of the operator */ Oid opno; /* OID of collation that operator should use */ Oid inputcollid pg_node_attr(query_jumble_ignore); /* * true of WindowFunc belongs on the left of the resulting OpExpr or false * if the WindowFunc is on the right. */ bool wfunc_left; /* * The Expr being compared to the WindowFunc to use in the OpExpr in the * WindowAgg's runCondition */ Expr *arg; } WindowFuncRunCondition; /* * MergeSupportFunc * * A MergeSupportFunc is a merge support function expression that can only * appear in the RETURNING list of a MERGE command. It returns information * about the currently executing merge action. * * Currently, the only supported function is MERGE_ACTION(), which returns the * command executed ("INSERT", "UPDATE", or "DELETE"). */ typedef struct MergeSupportFunc { Expr xpr; /* type Oid of result */ Oid msftype; /* OID of collation, or InvalidOid if none */ Oid msfcollid; /* token location, or -1 if unknown */ ParseLoc location; } MergeSupportFunc; /* * 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 a container (e.g. an 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". * (Non-array containers may or may not support this.) * * refcontainertype is the actual container type that determines the * subscripting semantics. (This will generally be either the exposed type of * refexpr, or the base type if that is a domain.) refelemtype is the type of * the container's elements; this is saved for the use of the subscripting * functions, but is not used by the core code. refrestype, reftypmod, and * refcollid describe the type of the SubscriptingRef's result. In a store * expression, refrestype will always match refcontainertype; in a fetch, * it could be refelemtype for an element fetch, or refcontainertype for a * slice fetch, or possibly something else as determined by type-specific * subscripting logic. Likewise, reftypmod and refcollid will match the * container's properties in a store, but could be different in a fetch. * * Any internal state data is ignored for the query jumbling. * * 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; /* type of the container proper */ Oid refcontainertype pg_node_attr(query_jumble_ignore); /* the container type's pg_type.typelem */ Oid refelemtype pg_node_attr(query_jumble_ignore); /* type of the SubscriptingRef's result */ Oid refrestype pg_node_attr(query_jumble_ignore); /* typmod of the result */ int32 reftypmod pg_node_attr(query_jumble_ignore); /* collation of result, or InvalidOid if none */ Oid refcollid pg_node_attr(query_jumble_ignore); /* expressions that evaluate to upper container indexes */ List *refupperindexpr; /* * expressions that evaluate to lower container indexes, or NIL for single * container element. */ List *reflowerindexpr; /* the expression that evaluates to a container value */ Expr *refexpr; /* expression for the source value, or NULL if fetch */ Expr *refassgnexpr; } 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_PLPGSQL, /* if no assignment cast, use CoerceViaIO */ COERCION_EXPLICIT, /* explicit cast operation */ } CoercionContext; /* * CoercionForm - how to display a FuncExpr or related node * * "Coercion" is a bit of a misnomer, since this value records other * special syntaxes besides casts, but for now we'll keep this naming. * * 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 */ COERCE_SQL_SYNTAX, /* display with SQL-mandated special syntax */ } CoercionForm; /* * FuncExpr - expression node for a function call * * Collation information is irrelevant for the query jumbling, only the * arguments and the function OID matter. */ typedef struct FuncExpr { Expr xpr; /* PG_PROC OID of the function */ Oid funcid; /* PG_TYPE OID of result value */ Oid funcresulttype pg_node_attr(query_jumble_ignore); /* true if function returns set */ bool funcretset pg_node_attr(query_jumble_ignore); /* * true if variadic arguments have been combined into an array last * argument */ bool funcvariadic pg_node_attr(query_jumble_ignore); /* how to display this function call */ CoercionForm funcformat pg_node_attr(query_jumble_ignore); /* OID of collation of result */ Oid funccollid pg_node_attr(query_jumble_ignore); /* OID of collation that function should use */ Oid inputcollid pg_node_attr(query_jumble_ignore); /* arguments to the function */ List *args; /* token location, or -1 if unknown */ ParseLoc location; } 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; /* the argument expression */ Expr *arg; /* the name */ char *name pg_node_attr(query_jumble_ignore); /* argument's number in positional notation */ int argnumber; /* argument name location, or -1 if unknown */ ParseLoc location; } 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. * Therefore, equal() will accept a zero value as being equal to other values. * * Internal state information and collation data is irrelevant for the query * jumbling. */ typedef struct OpExpr { Expr xpr; /* PG_OPERATOR OID of the operator */ Oid opno; /* PG_PROC OID of underlying function */ Oid opfuncid pg_node_attr(equal_ignore_if_zero, query_jumble_ignore); /* PG_TYPE OID of result value */ Oid opresulttype pg_node_attr(query_jumble_ignore); /* true if operator returns set */ bool opretset pg_node_attr(query_jumble_ignore); /* OID of collation of result */ Oid opcollid pg_node_attr(query_jumble_ignore); /* OID of collation that operator should use */ Oid inputcollid pg_node_attr(query_jumble_ignore); /* arguments to the operator (1 or 2) */ List *args; /* token location, or -1 if unknown */ ParseLoc location; } 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. * * A ScalarArrayOpExpr with a valid hashfuncid is evaluated during execution * by building a hash table containing the Const values from the RHS arg. * This table is probed during expression evaluation. The planner will set * hashfuncid to the hash function which must be used to build and probe the * hash table. The executor determines if it should use hash-based checks or * the more traditional means based on if the hashfuncid is set or not. * * When performing hashed NOT IN, the negfuncid will also be set to the * equality function which the hash table must use to build and probe the hash * table. opno and opfuncid will remain set to the <> operator and its * corresponding function and won't be used during execution. For * non-hashtable based NOT INs, negfuncid will be set to InvalidOid. See * convert_saop_to_hashed_saop(). * * Similar to OpExpr, opfuncid, hashfuncid, and negfuncid are not necessarily * filled in right away, so will be ignored for equality if they are not set * yet. * * OID entries of the internal function types are irrelevant for the query * jumbling, but the operator OID and the arguments are. */ typedef struct ScalarArrayOpExpr { Expr xpr; /* PG_OPERATOR OID of the operator */ Oid opno; /* PG_PROC OID of comparison function */ Oid opfuncid pg_node_attr(equal_ignore_if_zero, query_jumble_ignore); /* PG_PROC OID of hash func or InvalidOid */ Oid hashfuncid pg_node_attr(equal_ignore_if_zero, query_jumble_ignore); /* PG_PROC OID of negator of opfuncid function or InvalidOid. See above */ Oid negfuncid pg_node_attr(equal_ignore_if_zero, query_jumble_ignore); /* true for ANY, false for ALL */ bool useOr; /* OID of collation that operator should use */ Oid inputcollid pg_node_attr(query_jumble_ignore); /* the scalar and array operands */ List *args; /* token location, or -1 if unknown */ ParseLoc location; } 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 { pg_node_attr(custom_read_write) Expr xpr; BoolExprType boolop; List *args; /* arguments to this expression */ ParseLoc 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 */ /* originally specified operator name */ List *operName pg_node_attr(query_jumble_ignore); /* subselect as Query* or raw parsetree */ Node *subselect; ParseLoc 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 or MULTIEXPR plan; 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 { pg_node_attr(no_query_jumble) 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 and MULTIEXPR 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 * * This is used only transiently during planning: by the time the plan * reaches the executor, all AlternativeSubPlan nodes have been removed. * * 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 { pg_node_attr(no_query_jumble) 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 */ /* type of the field (result type of this node) */ Oid resulttype pg_node_attr(query_jumble_ignore); /* output typmod (usually -1) */ int32 resulttypmod pg_node_attr(query_jumble_ignore); /* OID of collation of the field */ Oid resultcollid pg_node_attr(query_jumble_ignore); } 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) */ /* integer list of field attnums */ List *fieldnums pg_node_attr(query_jumble_ignore); /* type of result (same as type of arg) */ Oid resulttype pg_node_attr(query_jumble_ignore); /* 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 */ /* output typmod (usually -1) */ int32 resulttypmod pg_node_attr(query_jumble_ignore); /* OID of collation, or InvalidOid if none */ Oid resultcollid pg_node_attr(query_jumble_ignore); /* how to display this node */ CoercionForm relabelformat pg_node_attr(query_jumble_ignore); ParseLoc 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 of collation, or InvalidOid if none */ Oid resultcollid pg_node_attr(query_jumble_ignore); /* how to display this node */ CoercionForm coerceformat pg_node_attr(query_jumble_ignore); ParseLoc 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) */ /* output typmod (also element typmod) */ int32 resulttypmod pg_node_attr(query_jumble_ignore); /* OID of collation, or InvalidOid if none */ Oid resultcollid pg_node_attr(query_jumble_ignore); /* how to display this node */ CoercionForm coerceformat pg_node_attr(query_jumble_ignore); ParseLoc 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 */ /* how to display this node */ CoercionForm convertformat pg_node_attr(query_jumble_ignore); ParseLoc 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 */ ParseLoc 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; /* type of expression result */ Oid casetype pg_node_attr(query_jumble_ignore); /* OID of collation, or InvalidOid if none */ Oid casecollid pg_node_attr(query_jumble_ignore); Expr *arg; /* implicit equality comparison argument */ List *args; /* the arguments (list of WHEN clauses) */ Expr *defresult; /* the default result (ELSE clause) */ ParseLoc 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 */ ParseLoc 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(). * * Placeholder for intermediate results in some SQL/JSON expression nodes, * such as JsonConstructorExpr. * * 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 */ /* typemod for substituted value */ int32 typeMod pg_node_attr(query_jumble_ignore); /* collation for the substituted value */ Oid collation pg_node_attr(query_jumble_ignore); } 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; /* type of expression result */ Oid array_typeid pg_node_attr(query_jumble_ignore); /* OID of collation, or InvalidOid if none */ Oid array_collid pg_node_attr(query_jumble_ignore); /* common type of array elements */ Oid element_typeid pg_node_attr(query_jumble_ignore); /* the array elements or sub-arrays */ List *elements; /* true if elements are sub-arrays */ bool multidims pg_node_attr(query_jumble_ignore); /* token location, or -1 if unknown */ ParseLoc location; } 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 if the ROW() result is of type RECORD. * Names *must* be provided if row_typeid is RECORDOID; but if it is a * named composite type, colnames will be ignored in favor of using the * type's cataloged field names, so colnames should be NIL. Like the * args list, colnames is defined to be one-for-one with physical fields * of the rowtype (although dropped columns shouldn't appear in the * RECORD case, so this fine point is currently moot). */ typedef struct RowExpr { Expr xpr; List *args; /* the fields */ /* RECORDOID or a composite type's ID */ Oid row_typeid pg_node_attr(query_jumble_ignore); /* * 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. */ /* how to display this node */ CoercionForm row_format pg_node_attr(query_jumble_ignore); /* list of String, or NIL */ List *colnames pg_node_attr(query_jumble_ignore); ParseLoc 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; /* LT LE GE or GT, never EQ or NE */ RowCompareType rctype; /* OID list of pairwise comparison ops */ List *opnos pg_node_attr(query_jumble_ignore); /* OID list of containing operator families */ List *opfamilies pg_node_attr(query_jumble_ignore); /* OID list of collations for comparisons */ List *inputcollids pg_node_attr(query_jumble_ignore); /* the left-hand input arguments */ List *largs; /* the right-hand input arguments */ List *rargs; } RowCompareExpr; /* * CoalesceExpr - a COALESCE expression */ typedef struct CoalesceExpr { Expr xpr; /* type of expression result */ Oid coalescetype pg_node_attr(query_jumble_ignore); /* OID of collation, or InvalidOid if none */ Oid coalescecollid pg_node_attr(query_jumble_ignore); /* the arguments */ List *args; /* token location, or -1 if unknown */ ParseLoc location; } CoalesceExpr; /* * MinMaxExpr - a GREATEST or LEAST function */ typedef enum MinMaxOp { IS_GREATEST, IS_LEAST } MinMaxOp; typedef struct MinMaxExpr { Expr xpr; /* common type of arguments and result */ Oid minmaxtype pg_node_attr(query_jumble_ignore); /* OID of collation of result */ Oid minmaxcollid pg_node_attr(query_jumble_ignore); /* OID of collation that function should use */ Oid inputcollid pg_node_attr(query_jumble_ignore); /* function to execute */ MinMaxOp op; /* the arguments */ List *args; /* token location, or -1 if unknown */ ParseLoc location; } 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 */ /* * Result type/typmod. Type is fully determined by "op", so no need to * include this Oid in the query jumbling. */ Oid type pg_node_attr(query_jumble_ignore); int32 typmod; ParseLoc 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, indent) */ IS_DOCUMENT, /* xmlval IS DOCUMENT */ } XmlExprOp; typedef enum XmlOptionType { XMLOPTION_DOCUMENT, XMLOPTION_CONTENT, } XmlOptionType; typedef struct XmlExpr { Expr xpr; /* xml function ID */ XmlExprOp op; /* name in xml(NAME foo ...) syntaxes */ char *name pg_node_attr(query_jumble_ignore); /* non-XML expressions for xml_attributes */ List *named_args; /* parallel list of String values */ List *arg_names pg_node_attr(query_jumble_ignore); /* list of expressions */ List *args; /* DOCUMENT or CONTENT */ XmlOptionType xmloption pg_node_attr(query_jumble_ignore); /* INDENT option for XMLSERIALIZE */ bool indent; /* target type/typmod for XMLSERIALIZE */ Oid type pg_node_attr(query_jumble_ignore); int32 typmod pg_node_attr(query_jumble_ignore); /* token location, or -1 if unknown */ ParseLoc location; } XmlExpr; /* * JsonEncoding - * representation of JSON ENCODING clause */ typedef enum JsonEncoding { JS_ENC_DEFAULT, /* unspecified */ JS_ENC_UTF8, JS_ENC_UTF16, JS_ENC_UTF32, } JsonEncoding; /* * JsonFormatType - * enumeration of JSON formats used in JSON FORMAT clause */ typedef enum JsonFormatType { JS_FORMAT_DEFAULT, /* unspecified */ JS_FORMAT_JSON, /* FORMAT JSON [ENCODING ...] */ JS_FORMAT_JSONB, /* implicit internal format for RETURNING * jsonb */ } JsonFormatType; /* * JsonFormat - * representation of JSON FORMAT clause */ typedef struct JsonFormat { NodeTag type; JsonFormatType format_type; /* format type */ JsonEncoding encoding; /* JSON encoding */ ParseLoc location; /* token location, or -1 if unknown */ } JsonFormat; /* * JsonReturning - * transformed representation of JSON RETURNING clause */ typedef struct JsonReturning { NodeTag type; JsonFormat *format; /* output JSON format */ Oid typid; /* target type Oid */ int32 typmod; /* target type modifier */ } JsonReturning; /* * JsonValueExpr - * representation of JSON value expression (expr [FORMAT JsonFormat]) * * raw_expr is the user-specified value, while formatted_expr is the value * obtained by coercing raw_expr to the type required by either the FORMAT * clause or an enclosing node's RETURNING clause. * * When deparsing a JsonValueExpr, get_rule_expr() prints raw_expr. However, * during the evaluation of a JsonValueExpr, the value of formatted_expr * takes precedence over that of raw_expr. */ typedef struct JsonValueExpr { NodeTag type; Expr *raw_expr; /* user-specified expression */ Expr *formatted_expr; /* coerced formatted expression */ JsonFormat *format; /* FORMAT clause, if specified */ } JsonValueExpr; typedef enum JsonConstructorType { JSCTOR_JSON_OBJECT = 1, JSCTOR_JSON_ARRAY = 2, JSCTOR_JSON_OBJECTAGG = 3, JSCTOR_JSON_ARRAYAGG = 4, JSCTOR_JSON_PARSE = 5, JSCTOR_JSON_SCALAR = 6, JSCTOR_JSON_SERIALIZE = 7, } JsonConstructorType; /* * JsonConstructorExpr - * wrapper over FuncExpr/Aggref/WindowFunc for SQL/JSON constructors */ typedef struct JsonConstructorExpr { Expr xpr; JsonConstructorType type; /* constructor type */ List *args; Expr *func; /* underlying json[b]_xxx() function call */ Expr *coercion; /* coercion to RETURNING type */ JsonReturning *returning; /* RETURNING clause */ bool absent_on_null; /* ABSENT ON NULL? */ bool unique; /* WITH UNIQUE KEYS? (JSON_OBJECT[AGG] only) */ ParseLoc location; } JsonConstructorExpr; /* * JsonValueType - * representation of JSON item type in IS JSON predicate */ typedef enum JsonValueType { JS_TYPE_ANY, /* IS JSON [VALUE] */ JS_TYPE_OBJECT, /* IS JSON OBJECT */ JS_TYPE_ARRAY, /* IS JSON ARRAY */ JS_TYPE_SCALAR, /* IS JSON SCALAR */ } JsonValueType; /* * JsonIsPredicate - * representation of IS JSON predicate */ typedef struct JsonIsPredicate { NodeTag type; Node *expr; /* subject expression */ JsonFormat *format; /* FORMAT clause, if specified */ JsonValueType item_type; /* JSON item type */ bool unique_keys; /* check key uniqueness? */ ParseLoc location; /* token location, or -1 if unknown */ } JsonIsPredicate; /* Nodes used in SQL/JSON query functions */ /* * JsonWrapper - * representation of WRAPPER clause for JSON_QUERY() */ typedef enum JsonWrapper { JSW_UNSPEC, JSW_NONE, JSW_CONDITIONAL, JSW_UNCONDITIONAL, } JsonWrapper; /* * JsonBehaviorType - * enumeration of behavior types used in SQL/JSON ON ERROR/EMPTY clauses * * If enum members are reordered, get_json_behavior() from ruleutils.c * must be updated accordingly. */ typedef enum JsonBehaviorType { JSON_BEHAVIOR_NULL = 0, JSON_BEHAVIOR_ERROR, JSON_BEHAVIOR_EMPTY, JSON_BEHAVIOR_TRUE, JSON_BEHAVIOR_FALSE, JSON_BEHAVIOR_UNKNOWN, JSON_BEHAVIOR_EMPTY_ARRAY, JSON_BEHAVIOR_EMPTY_OBJECT, JSON_BEHAVIOR_DEFAULT, } JsonBehaviorType; /* * JsonBehavior * Specifications for ON ERROR / ON EMPTY behaviors of SQL/JSON * query functions specified by a JsonExpr * * 'expr' is the expression to emit when a given behavior (EMPTY or ERROR) * occurs on evaluating the SQL/JSON query function. 'coerce' is set to true * if 'expr' isn't already of the expected target type given by * JsonExpr.returning. */ typedef struct JsonBehavior { NodeTag type; JsonBehaviorType btype; Node *expr; bool coerce; ParseLoc location; /* token location, or -1 if unknown */ } JsonBehavior; /* * JsonExprOp - * enumeration of SQL/JSON query function types */ typedef enum JsonExprOp { JSON_EXISTS_OP, /* JSON_EXISTS() */ JSON_QUERY_OP, /* JSON_QUERY() */ JSON_VALUE_OP, /* JSON_VALUE() */ JSON_TABLE_OP, /* JSON_TABLE() */ } JsonExprOp; /* * JsonExpr - * Transformed representation of JSON_VALUE(), JSON_QUERY(), and * JSON_EXISTS() */ typedef struct JsonExpr { Expr xpr; JsonExprOp op; char *column_name; /* JSON_TABLE() column name or NULL if this is * not for a JSON_TABLE() */ /* jsonb-valued expression to query */ Node *formatted_expr; /* Format of the above expression needed by ruleutils.c */ JsonFormat *format; /* jsonpath-valued expression containing the query pattern */ Node *path_spec; /* Expected type/format of the output. */ JsonReturning *returning; /* Information about the PASSING argument expressions */ List *passing_names; List *passing_values; /* User-specified or default ON EMPTY and ON ERROR behaviors */ JsonBehavior *on_empty; JsonBehavior *on_error; /* * Information about converting the result of jsonpath functions * JsonPathQuery() and JsonPathValue() to the RETURNING type. */ bool use_io_coercion; bool use_json_coercion; /* WRAPPER specification for JSON_QUERY */ JsonWrapper wrapper; /* KEEP or OMIT QUOTES for singleton scalars returned by JSON_QUERY() */ bool omit_quotes; /* JsonExpr's collation. */ Oid collation; /* Original JsonFuncExpr's location */ ParseLoc location; } JsonExpr; /* * JsonTablePath * A JSON path expression to be computed as part of evaluating * a JSON_TABLE plan node */ typedef struct JsonTablePath { NodeTag type; Const *value; char *name; } JsonTablePath; /* * JsonTablePlan - * Abstract class to represent different types of JSON_TABLE "plans". * A plan is used to generate a "row pattern" value by evaluating a JSON * path expression against an input JSON document, which is then used for * populating JSON_TABLE() columns */ typedef struct JsonTablePlan { pg_node_attr(abstract) NodeTag type; } JsonTablePlan; /* * JSON_TABLE plan to evaluate a JSON path expression and NESTED paths, if * any. */ typedef struct JsonTablePathScan { JsonTablePlan plan; /* JSON path to evaluate */ JsonTablePath *path; /* * ERROR/EMPTY ON ERROR behavior; only significant in the plan for the * top-level path. */ bool errorOnError; /* Plan(s) for nested columns, if any. */ JsonTablePlan *child; /* * 0-based index in TableFunc.colvalexprs of the 1st and the last column * covered by this plan. Both are -1 if all columns are nested and thus * computed by the child plan(s). */ int colMin; int colMax; } JsonTablePathScan; /* * JsonTableSiblingJoin - * Plan to join rows of sibling NESTED COLUMNS clauses in the same parent * COLUMNS clause */ typedef struct JsonTableSiblingJoin { JsonTablePlan plan; JsonTablePlan *lplan; JsonTablePlan *rplan; } JsonTableSiblingJoin; /* ---------------- * 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 */ /* T to perform field-by-field null checks */ bool argisrow pg_node_attr(query_jumble_ignore); ParseLoc 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 */ ParseLoc location; /* token location, or -1 if unknown */ } BooleanTest; /* * MergeAction * * Transformed representation of a WHEN clause in a MERGE statement */ typedef enum MergeMatchKind { MERGE_WHEN_MATCHED, MERGE_WHEN_NOT_MATCHED_BY_SOURCE, MERGE_WHEN_NOT_MATCHED_BY_TARGET } MergeMatchKind; #define NUM_MERGE_MATCH_KINDS (MERGE_WHEN_NOT_MATCHED_BY_TARGET + 1) typedef struct MergeAction { NodeTag type; MergeMatchKind matchKind; /* MATCHED/NOT MATCHED BY SOURCE/TARGET */ CmdType commandType; /* INSERT/UPDATE/DELETE/DO NOTHING */ /* OVERRIDING clause */ OverridingKind override pg_node_attr(query_jumble_ignore); Node *qual; /* transformed WHEN conditions */ List *targetList; /* the target list (of TargetEntry) */ /* target attribute numbers of an UPDATE */ List *updateColnos pg_node_attr(query_jumble_ignore); } MergeAction; /* * 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) */ /* output typmod (currently always -1) */ int32 resulttypmod pg_node_attr(query_jumble_ignore); /* OID of collation, or InvalidOid if none */ Oid resultcollid pg_node_attr(query_jumble_ignore); /* how to display this node */ CoercionForm coercionformat pg_node_attr(query_jumble_ignore); ParseLoc 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; /* type for substituted value */ Oid typeId; /* typemod for substituted value */ int32 typeMod pg_node_attr(query_jumble_ignore); /* collation for the substituted value */ Oid collation pg_node_attr(query_jumble_ignore); /* token location, or -1 if unknown */ ParseLoc location; } 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; /* type for substituted value */ Oid typeId; /* typemod for substituted value */ int32 typeMod pg_node_attr(query_jumble_ignore); /* collation for the substituted value */ Oid collation pg_node_attr(query_jumble_ignore); /* token location, or -1 if unknown */ ParseLoc location; } 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. * Also, cvarno will always be a true RT index, never INNER_VAR etc. * * 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] = ..., ... * In an INSERT, the rewriter and planner will normalize the tlist by * reordering it into physical column order and filling in default values * for any columns not assigned values by the original query. In an UPDATE, * after the rewriter merges multiple assignments for the same column, the * planner extracts the target-column numbers into a separate "update_colnos" * list, and then renumbers the tlist elements serially. Thus, tlist resnos * match ordinal position in all tlists seen by the executor; but it is wrong * to assume that before planning has happened. * * 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; /* expression to evaluate */ Expr *expr; /* attribute number (see notes above) */ AttrNumber resno; /* name of the column (could be NULL) */ char *resname pg_node_attr(query_jumble_ignore); /* nonzero if referenced by a sort/group clause */ Index ressortgroupref; /* OID of column's source table */ Oid resorigtbl pg_node_attr(query_jumble_ignore); /* column's number in source table */ AttrNumber resorigcol pg_node_attr(query_jumble_ignore); /* set to true to eliminate the attribute from final target list */ bool resjunk pg_node_attr(query_jumble_ignore); } 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. * * join_using_alias is an Alias node representing the join correlation * name that SQL:2016 and later allow to be attached to JOIN/USING. * Its column alias list includes only the common column names from USING, * and it does not restrict visibility of the join's input tables. * * 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 */ /* USING clause, if any (list of String) */ List *usingClause pg_node_attr(query_jumble_ignore); /* alias attached to USING clause, if any */ Alias *join_using_alias pg_node_attr(query_jumble_ignore); /* qualifiers on join, if any */ Node *quals; /* user-written alias clause, if any */ Alias *alias pg_node_attr(query_jumble_ignore); /* RT index assigned for join, or 0 */ int rtindex; } 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-17-6.1.0/src/postgres/include/nodes/print.h000066400000000000000000000020651477334012600227740ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * print.h * definitions for nodes/print.c * * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/nodes/queryjumble.h000066400000000000000000000041721477334012600242050ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * queryjumble.h * Query normalization and fingerprinting. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/nodes/queryjumble.h * *------------------------------------------------------------------------- */ #ifndef QUERYJUMBLE_H #define QUERYJUMBLE_H #include "nodes/parsenodes.h" /* * Struct for tracking locations/lengths of constants during normalization */ typedef struct LocationLen { int location; /* start offset in query text */ int length; /* length in bytes, or -1 to ignore */ } LocationLen; /* * Working state for computing a query jumble and producing a normalized * query string */ typedef struct JumbleState { /* Jumble of current query tree */ unsigned char *jumble; /* Number of bytes used in jumble[] */ Size jumble_len; /* Array of locations of constants that should be removed */ LocationLen *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've seen, in order to start normalization correctly */ int highest_extern_param_id; } JumbleState; /* Values for the compute_query_id GUC */ enum ComputeQueryIdType { COMPUTE_QUERY_ID_OFF, COMPUTE_QUERY_ID_ON, COMPUTE_QUERY_ID_AUTO, COMPUTE_QUERY_ID_REGRESS, }; /* GUC parameters */ extern PGDLLIMPORT int compute_query_id; extern const char *CleanQuerytext(const char *query, int *location, int *len); extern JumbleState *JumbleQuery(Query *query); extern void EnableQueryId(void); extern PGDLLIMPORT bool query_id_enabled; /* * Returns whether query identifier computation has been enabled, either * directly in the GUC or by a module when the setting is 'auto'. */ static inline bool IsQueryIdEnabled(void) { if (compute_query_id == COMPUTE_QUERY_ID_OFF) return false; if (compute_query_id == COMPUTE_QUERY_ID_ON) return true; return query_id_enabled; } #endif /* QUERYJUMBLE_H */ libpg_query-17-6.1.0/src/postgres/include/nodes/replnodes.h000066400000000000000000000046621477334012600236400ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * replnodes.h * definitions for replication grammar parse nodes * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/replnodes.h * *------------------------------------------------------------------------- */ #ifndef REPLNODES_H #define REPLNODES_H #include "access/xlogdefs.h" #include "nodes/pg_list.h" typedef enum ReplicationKind { REPLICATION_KIND_PHYSICAL, REPLICATION_KIND_LOGICAL, } ReplicationKind; /* ---------------------- * IDENTIFY_SYSTEM command * ---------------------- */ typedef struct IdentifySystemCmd { NodeTag type; } IdentifySystemCmd; /* ---------------------- * BASE_BACKUP command * ---------------------- */ typedef struct BaseBackupCmd { NodeTag type; List *options; } BaseBackupCmd; /* ---------------------- * CREATE_REPLICATION_SLOT command * ---------------------- */ typedef struct CreateReplicationSlotCmd { NodeTag type; char *slotname; ReplicationKind kind; char *plugin; bool temporary; List *options; } CreateReplicationSlotCmd; /* ---------------------- * DROP_REPLICATION_SLOT command * ---------------------- */ typedef struct DropReplicationSlotCmd { NodeTag type; char *slotname; bool wait; } DropReplicationSlotCmd; /* ---------------------- * ALTER_REPLICATION_SLOT command * ---------------------- */ typedef struct AlterReplicationSlotCmd { NodeTag type; char *slotname; List *options; } AlterReplicationSlotCmd; /* ---------------------- * START_REPLICATION command * ---------------------- */ typedef struct StartReplicationCmd { NodeTag type; ReplicationKind kind; char *slotname; TimeLineID timeline; XLogRecPtr startpoint; List *options; } StartReplicationCmd; /* ---------------------- * READ_REPLICATION_SLOT command * ---------------------- */ typedef struct ReadReplicationSlotCmd { NodeTag type; char *slotname; } ReadReplicationSlotCmd; /* ---------------------- * TIMELINE_HISTORY command * ---------------------- */ typedef struct TimeLineHistoryCmd { NodeTag type; TimeLineID timeline; } TimeLineHistoryCmd; /* ---------------------- * UPLOAD_MANIFEST command * ---------------------- */ typedef struct UploadManifestCmd { NodeTag type; } UploadManifestCmd; #endif /* REPLNODES_H */ libpg_query-17-6.1.0/src/postgres/include/nodes/supportnodes.h000066400000000000000000000372351477334012600244140ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * supportnodes.h * Definitions for planner support functions. * * This file defines the API for "planner support functions", which * are SQL functions (normally written in C) that can be attached to * another "target" function to give the system additional knowledge * about the target function. All the current capabilities have to do * with planning queries that use the target function, though it is * possible that future extensions will add functionality to be invoked * by the parser or executor. * * A support function must have the SQL signature * supportfn(internal) returns internal * The argument is a pointer to one of the Node types defined in this file. * The result is usually also a Node pointer, though its type depends on * which capability is being invoked. In all cases, a NULL pointer result * (that's PG_RETURN_POINTER(NULL), not PG_RETURN_NULL()) indicates that * the support function cannot do anything useful for the given request. * Support functions must return a NULL pointer, not fail, if they do not * recognize the request node type or cannot handle the given case; this * allows for future extensions of the set of request cases. * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/supportnodes.h * *------------------------------------------------------------------------- */ #ifndef SUPPORTNODES_H #define SUPPORTNODES_H #include "nodes/plannodes.h" struct PlannerInfo; /* avoid including pathnodes.h here */ struct IndexOptInfo; struct SpecialJoinInfo; struct WindowClause; /* * The Simplify request allows the support function to perform plan-time * simplification of a call to its target function. For example, a varchar * length coercion that does not decrease the allowed length of its argument * could be replaced by a RelabelType node, or "x + 0" could be replaced by * "x". This is invoked during the planner's constant-folding pass, so the * function's arguments can be presumed already simplified. * * The planner's PlannerInfo "root" is typically not needed, but can be * consulted if it's necessary to obtain info about Vars present in * the given node tree. Beware that root could be NULL in some usages. * * "fcall" will be a FuncExpr invoking the support function's target * function. (This is true even if the original parsetree node was an * operator call; a FuncExpr is synthesized for this purpose.) * * The result should be a semantically-equivalent transformed node tree, * or NULL if no simplification could be performed. Do *not* return or * modify *fcall, as it isn't really a separately allocated Node. But * it's okay to use fcall->args, or parts of it, in the result tree. */ typedef struct SupportRequestSimplify { NodeTag type; struct PlannerInfo *root; /* Planner's infrastructure */ FuncExpr *fcall; /* Function call to be simplified */ } SupportRequestSimplify; /* * The Selectivity request allows the support function to provide a * selectivity estimate for a function appearing at top level of a WHERE * clause (so it applies only to functions returning boolean). * * The input arguments are the same as are supplied to operator restriction * and join estimators, except that we unify those two APIs into just one * request type. See clause_selectivity() for the details. * * If an estimate can be made, store it into the "selectivity" field and * return the address of the SupportRequestSelectivity node; the estimate * must be between 0 and 1 inclusive. Return NULL if no estimate can be * made (in which case the planner will fall back to a default estimate, * traditionally 1/3). * * If the target function is being used as the implementation of an operator, * the support function will not be used for this purpose; the operator's * restriction or join estimator is consulted instead. */ typedef struct SupportRequestSelectivity { NodeTag type; /* Input fields: */ struct PlannerInfo *root; /* Planner's infrastructure */ Oid funcid; /* function we are inquiring about */ List *args; /* pre-simplified arguments to function */ Oid inputcollid; /* function's input collation */ bool is_join; /* is this a join or restriction case? */ int varRelid; /* if restriction, RTI of target relation */ JoinType jointype; /* if join, outer join type */ struct SpecialJoinInfo *sjinfo; /* if outer join, info about join */ /* Output fields: */ Selectivity selectivity; /* returned selectivity estimate */ } SupportRequestSelectivity; /* * The Cost request allows the support function to provide an execution * cost estimate for its target function. The cost estimate can include * both a one-time (query startup) component and a per-execution component. * The estimate should *not* include the costs of evaluating the target * function's arguments, only the target function itself. * * The "node" argument is normally the parse node that is invoking the * target function. This is a FuncExpr in the simplest case, but it could * also be an OpExpr, DistinctExpr, NullIfExpr, or WindowFunc, or possibly * other cases in future. NULL is passed if the function cannot presume * its arguments to be equivalent to what the calling node presents as * arguments; that happens for, e.g., aggregate support functions and * per-column comparison operators used by RowExprs. * * If an estimate can be made, store it into the cost fields and return the * address of the SupportRequestCost node. Return NULL if no estimate can be * made, in which case the planner will rely on the target function's procost * field. (Note: while procost is automatically scaled by cpu_operator_cost, * this is not the case for the outputs of the Cost request; the support * function must scale its results appropriately on its own.) */ typedef struct SupportRequestCost { NodeTag type; /* Input fields: */ struct PlannerInfo *root; /* Planner's infrastructure (could be NULL) */ Oid funcid; /* function we are inquiring about */ Node *node; /* parse node invoking function, or NULL */ /* Output fields: */ Cost startup; /* one-time cost */ Cost per_tuple; /* per-evaluation cost */ } SupportRequestCost; /* * The Rows request allows the support function to provide an output rowcount * estimate for its target function (so it applies only to set-returning * functions). * * The "node" argument is the parse node that is invoking the target function; * currently this will always be a FuncExpr or OpExpr. * * If an estimate can be made, store it into the rows field and return the * address of the SupportRequestRows node. Return NULL if no estimate can be * made, in which case the planner will rely on the target function's prorows * field. */ typedef struct SupportRequestRows { NodeTag type; /* Input fields: */ struct PlannerInfo *root; /* Planner's infrastructure (could be NULL) */ Oid funcid; /* function we are inquiring about */ Node *node; /* parse node invoking function */ /* Output fields: */ double rows; /* number of rows expected to be returned */ } SupportRequestRows; /* * The IndexCondition request allows the support function to generate * a directly-indexable condition based on a target function call that is * not itself indexable. The target function call must appear at the top * level of WHERE or JOIN/ON, so this applies only to functions returning * boolean. * * The "node" argument is the parse node that is invoking the target function; * currently this will always be a FuncExpr or OpExpr. The call is made * only if at least one function argument matches an index column's variable * or expression. "indexarg" identifies the matching argument (it's the * argument's zero-based index in the node's args list). * * If the transformation is possible, return a List of directly-indexable * condition expressions, else return NULL. (A List is used because it's * sometimes useful to generate more than one indexable condition, such as * when a LIKE with constant prefix gives rise to both >= and < conditions.) * * "Directly indexable" means that the condition must be directly executable * by the index machinery. Typically this means that it is a binary OpExpr * with the index column value on the left, a pseudo-constant on the right, * and an operator that is in the index column's operator family. Other * possibilities include RowCompareExpr, ScalarArrayOpExpr, and NullTest, * depending on the index type; but those seem less likely to be useful for * derived index conditions. "Pseudo-constant" means that the right-hand * expression must not contain any volatile functions, nor any Vars of the * table the index is for; use is_pseudo_constant_for_index() to check this. * (Note: if the passed "node" is an OpExpr, the core planner already verified * that the non-indexkey operand is pseudo-constant; but when the "node" * is a FuncExpr, it does not check, since it doesn't know which of the * function's arguments you might need to use in an index comparison value.) * * In many cases, an index condition can be generated but it is weaker than * the function condition itself; for example, a LIKE with a constant prefix * can produce an index range check based on the prefix, but we still need * to execute the LIKE operator to verify the rest of the pattern. We say * that such an index condition is "lossy". When returning an index condition, * you should set the "lossy" request field to true if the condition is lossy, * or false if it is an exact equivalent of the function's result. The core * code will initialize that field to true, which is the common case. * * It is important to verify that the index operator family is the correct * one for the condition you want to generate. Core support functions tend * to use the known OID of a built-in opfamily for this, but extensions need * to work harder, since their OIDs aren't fixed. A possibly workable * answer for an index on an extension datatype is to verify the index AM's * OID instead, and then assume that there's only one relevant opclass for * your datatype so the opfamily must be the right one. Generating OpExpr * nodes may also require knowing extension datatype OIDs (often you can * find these out by applying exprType() to a function argument) and * operator OIDs (which you can look up using get_opfamily_member). */ typedef struct SupportRequestIndexCondition { NodeTag type; /* Input fields: */ struct PlannerInfo *root; /* Planner's infrastructure */ Oid funcid; /* function we are inquiring about */ Node *node; /* parse node invoking function */ int indexarg; /* index of function arg matching indexcol */ struct IndexOptInfo *index; /* planner's info about target index */ int indexcol; /* index of target index column (0-based) */ Oid opfamily; /* index column's operator family */ Oid indexcollation; /* index column's collation */ /* Output fields: */ bool lossy; /* set to false if index condition is an exact * equivalent of the function call */ } SupportRequestIndexCondition; /* ---------- * To support more efficient query execution of any monotonically increasing * and/or monotonically decreasing window functions, we support calling the * window function's prosupport function passing along this struct whenever * the planner sees an OpExpr qual directly reference a window function in a * subquery. When the planner encounters this, we populate this struct and * pass it along to the window function's prosupport function so that it can * evaluate if the given WindowFunc is; * * a) monotonically increasing, or * b) monotonically decreasing, or * c) both monotonically increasing and decreasing, or * d) none of the above. * * A function that is monotonically increasing can never return a value that * is lower than a value returned in a "previous call". A monotonically * decreasing function can never return a value higher than a value returned * in a previous call. A function that is both must return the same value * each time. * * We define "previous call" to mean a previous call to the same WindowFunc * struct in the same window partition. * * row_number() is an example of a monotonically increasing function. The * return value will be reset back to 1 in each new partition. An example of * a monotonically increasing and decreasing function is COUNT(*) OVER (). * Since there is no ORDER BY clause in this example, all rows in the * partition are peers and all rows within the partition will be within the * frame bound. Likewise for COUNT(*) OVER(ORDER BY a ROWS BETWEEN UNBOUNDED * PRECEDING AND UNBOUNDED FOLLOWING). * * COUNT(*) OVER (ORDER BY a ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) * is an example of a monotonically decreasing function. * * Implementations must only concern themselves with the given WindowFunc * being monotonic in a single partition. * * Inputs: * 'window_func' is the pointer to the window function being called. * * 'window_clause' pointer to the WindowClause data. Support functions can * use this to check frame bounds, etc. * * Outputs: * 'monotonic' the resulting MonotonicFunction value for the given input * window function and window clause. * ---------- */ typedef struct SupportRequestWFuncMonotonic { NodeTag type; /* Input fields: */ WindowFunc *window_func; /* Pointer to the window function data */ struct WindowClause *window_clause; /* Pointer to the window clause data */ /* Output fields: */ MonotonicFunction monotonic; } SupportRequestWFuncMonotonic; /* * Some WindowFunc behavior might not be affected by certain variations in * the WindowClause's frameOptions. For example, row_number() is coded in * such a way that the frame options don't change the returned row number. * nodeWindowAgg.c will have less work to do if the ROWS option is used * instead of the RANGE option as no check needs to be done for peer rows. * Since RANGE is included in the default frame options, window functions * such as row_number() might want to change that to ROW. * * Here we allow a WindowFunc's support function to determine which, if * anything, can be changed about the WindowClause which the WindowFunc * belongs to. Currently only the frameOptions can be modified. However, * we may want to allow more optimizations in the future. * * The support function is responsible for ensuring the optimized version of * the frameOptions doesn't affect the result of the window function. The * planner is responsible for only changing the frame options when all * WindowFuncs using this particular WindowClause agree on what the optimized * version of the frameOptions are. If a particular WindowFunc being used * does not have a support function then the planner will not make any changes * to the WindowClause's frameOptions. * * 'window_func' and 'window_clause' are set by the planner before calling the * support function so that the support function has these fields available. * These may be required in order to determine which optimizations are * possible. * * 'frameOptions' is set by the planner to WindowClause.frameOptions. The * support function must only adjust this if optimizations are possible for * the given WindowFunc. */ typedef struct SupportRequestOptimizeWindowClause { NodeTag type; /* Input fields: */ WindowFunc *window_func; /* Pointer to the window function data */ struct WindowClause *window_clause; /* Pointer to the window clause data */ /* Input/Output fields: */ int frameOptions; /* New frameOptions, or left untouched if no * optimizations are possible. */ } SupportRequestOptimizeWindowClause; #endif /* SUPPORTNODES_H */ libpg_query-17-6.1.0/src/postgres/include/nodes/tidbitmap.h000066400000000000000000000052541477334012600236200ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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-17-6.1.0/src/postgres/include/nodes/value.h000066400000000000000000000043651477334012600227610ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * value.h * interface for value nodes * * * Copyright (c) 2003-2024, PostgreSQL Global Development Group * * src/include/nodes/value.h * *------------------------------------------------------------------------- */ #ifndef VALUE_H #define VALUE_H #include "nodes/nodes.h" /* * The node types Integer, Float, String, and BitString are used to represent * literals in the lexer and are also used to pass constants around in the * parser. One difference between these node types and, say, a plain int or * char * is that the nodes can be put into a List. * * (There used to be a Value node, which encompassed all these different node types. Hence the name of this file.) */ typedef struct Integer { pg_node_attr(special_read_write) NodeTag type; int ival; } Integer; /* * Float is internally represented as string. Using T_Float as the node type * simply indicates that the contents of the string look like a valid numeric * literal. The value might end up being converted to NUMERIC, so we can't * store it internally as a C double, since that could lose precision. Since * these nodes are generally 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'. */ typedef struct Float { pg_node_attr(special_read_write) NodeTag type; char *fval; } Float; typedef struct Boolean { pg_node_attr(special_read_write) NodeTag type; bool boolval; } Boolean; typedef struct String { pg_node_attr(special_read_write) NodeTag type; char *sval; } String; typedef struct BitString { pg_node_attr(special_read_write) NodeTag type; char *bsval; } BitString; #define intVal(v) (castNode(Integer, v)->ival) #define floatVal(v) atof(castNode(Float, v)->fval) #define boolVal(v) (castNode(Boolean, v)->boolval) #define strVal(v) (castNode(String, v)->sval) extern Integer *makeInteger(int i); extern Float *makeFloat(char *numericStr); extern Boolean *makeBoolean(bool val); extern String *makeString(char *str); extern BitString *makeBitString(char *str); #endif /* VALUE_H */ libpg_query-17-6.1.0/src/postgres/include/optimizer/000077500000000000000000000000001477334012600223765ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/optimizer/cost.h000066400000000000000000000230701477334012600235210ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * cost.h * prototypes for costsize.c and clausesel.c. * * * Portions Copyright (c) 1996-2024, 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.conf.sample */ #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 /* defaults for non-Cost parameters */ #define DEFAULT_RECURSIVE_WORKTABLE_FACTOR 10.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_memoize; 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 bool enable_presorted_aggregate; extern PGDLLIMPORT bool enable_async_append; 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_tidrangescan(Path *path, PlannerInfo *root, RelOptInfo *baserel, List *tidrangequals, ParamPathInfo *param_info); extern void cost_subqueryscan(SubqueryScanPath *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info, bool trivial_pathtarget); 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 *apath); 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, WindowClause *winclause, 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 *rel, 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, double loop_count, Cost *cost_p, double *tuples_p); #endif /* COST_H */ libpg_query-17-6.1.0/src/postgres/include/optimizer/geqo.h000066400000000000000000000043461477334012600235110ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * geqo.h * prototypes for various files in optimizer/geqo * * Portions Copyright (c) 1996-2024, 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 "common/pg_prng.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 PGDLLIMPORT 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 PGDLLIMPORT int Geqo_pool_size; /* 2 .. inf, or 0 to use default */ extern PGDLLIMPORT int Geqo_generations; /* 1 .. inf, or 0 to use default */ extern PGDLLIMPORT 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 PGDLLIMPORT 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 */ pg_prng_state random_state; /* PRNG state */ } 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-17-6.1.0/src/postgres/include/optimizer/geqo_gene.h000066400000000000000000000021361477334012600245020ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * geqo_gene.h * genome representation in optimizer/geqo * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/optimizer/optimizer.h000066400000000000000000000162021477334012600245720ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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" /* * 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 clause_selectivity_ext(PlannerInfo *root, Node *clause, int varRelid, JoinType jointype, SpecialJoinInfo *sjinfo, bool use_extended_stats); extern Selectivity clauselist_selectivity(PlannerInfo *root, List *clauses, int varRelid, JoinType jointype, SpecialJoinInfo *sjinfo); extern Selectivity clauselist_selectivity_ext(PlannerInfo *root, List *clauses, int varRelid, JoinType jointype, SpecialJoinInfo *sjinfo, bool use_extended_stats); /* 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 double recursive_worktable_factor; extern PGDLLIMPORT int effective_cache_size; extern double clamp_row_est(double nrows); extern int32 clamp_width_est(int64 tuple_width); extern long clamp_cardinality_to_long(Cardinality x); /* in path/indxpath.c: */ extern bool is_pseudo_constant_for_index(PlannerInfo *root, Node *expr, IndexOptInfo *index); /* in plan/planner.c: */ /* possible values for debug_parallel_query */ typedef enum { DEBUG_PARALLEL_OFF, DEBUG_PARALLEL_ON, DEBUG_PARALLEL_REGRESS, } DebugParallelMode; /* GUC parameters */ extern PGDLLIMPORT int debug_parallel_query; extern PGDLLIMPORT 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_mutable_functions_after_planning(Expr *expr); extern bool contain_volatile_functions(Node *clause); extern bool contain_volatile_functions_after_planning(Expr *expr); extern bool contain_volatile_functions_not_nextval(Node *clause); extern Node *eval_const_expressions(PlannerInfo *root, Node *node); extern void convert_saop_to_hashed_saop(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, bool include_out_arguments, 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(PlannerInfo *root, Node *node); extern Bitmapset *pull_varnos_of_level(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(PlannerInfo *root, Query *query, Node *node); #endif /* OPTIMIZER_H */ libpg_query-17-6.1.0/src/postgres/include/optimizer/paths.h000066400000000000000000000247761477334012600237060ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * paths.h * prototypes for various files in optimizer/path * * * Portions Copyright (c) 1996-2024, 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; extern PGDLLIMPORT bool enable_group_by_reordering; /* 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); /* * 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.c * 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 Relids add_outer_joins_to_relids(PlannerInfo *root, Relids input_relids, SpecialJoinInfo *sjinfo, List **pushed_down_joins); 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); extern void init_dummy_sjinfo(SpecialJoinInfo *sjinfo, Relids left_relids, Relids right_relids); /* * 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, JoinDomain *jdomain); 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, 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 bool relation_can_be_sorted_early(PlannerInfo *root, RelOptInfo *rel, EquivalenceClass *ec, 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, SpecialJoinInfo *sjinfo); 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 RestrictInfo *find_derived_clause_for_ec_member(EquivalenceClass *ec, EquivalenceMember *em); 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_joinrel, RelOptInfo *child_joinrel); extern void add_setop_child_rel_equivalences(PlannerInfo *root, RelOptInfo *child_rel, List *child_tlist, List *setop_pathkeys); 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 List *get_useful_group_keys_orderings(PlannerInfo *root, Path *path); 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, 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 List *make_pathkeys_for_sortclauses_extended(PlannerInfo *root, List **sortclauses, List *tlist, bool remove_redundant, bool *sortable, bool set_ec_sortref); 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 List *append_pathkeys(List *target, List *source); 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-17-6.1.0/src/postgres/include/optimizer/planmain.h000066400000000000000000000111111477334012600243410ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * planmain.h * prototypes for various files in optimizer/plan * * * Portions Copyright (c) 1996-2024, 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 PGDLLIMPORT 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 PGDLLIMPORT int from_collapse_limit; extern PGDLLIMPORT 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); extern void find_lateral_references(PlannerInfo *root); extern void create_lateral_join_info(PlannerInfo *root); extern List *deconstruct_jointree(PlannerInfo *root); extern bool restriction_is_always_true(PlannerInfo *root, RestrictInfo *restrictinfo); extern bool restriction_is_always_false(PlannerInfo *root, RestrictInfo *restrictinfo); extern void distribute_restrictinfo_to_rels(PlannerInfo *root, RestrictInfo *restrictinfo); extern RestrictInfo *process_implied_equality(PlannerInfo *root, Oid opno, Oid collation, Expr *item1, Expr *item2, Relids qualscope, Index security_level, bool both_const); extern RestrictInfo *build_implied_join_equality(PlannerInfo *root, Oid opno, Oid collation, Expr *item1, Expr *item2, Relids qualscope, 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 bool trivial_subqueryscan(SubqueryScan *plan); extern Param *find_minmax_agg_replacement_param(PlannerInfo *root, Aggref *aggref); 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 *context); #endif /* PLANMAIN_H */ libpg_query-17-6.1.0/src/postgres/include/parser/000077500000000000000000000000001477334012600216505ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/parser/analyze.h000066400000000000000000000050751477334012600234730ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * analyze.h * parse analysis for optimizable statements * * * Portions Copyright (c) 1996-2024, 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 "nodes/params.h" #include "nodes/queryjumble.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, JumbleState *jstate); extern PGDLLIMPORT post_parse_analyze_hook_type post_parse_analyze_hook; extern Query *parse_analyze_fixedparams(RawStmt *parseTree, const char *sourceText, const Oid *paramTypes, int numParams, QueryEnvironment *queryEnv); extern Query *parse_analyze_varparams(RawStmt *parseTree, const char *sourceText, Oid **paramTypes, int *numParams, QueryEnvironment *queryEnv); extern Query *parse_analyze_withcb(RawStmt *parseTree, const char *sourceText, ParserSetupHook parserSetup, void *parserSetupArg, QueryEnvironment *queryEnv); extern Query *parse_sub_analyze(Node *parseTree, ParseState *parentParseState, CommonTableExpr *parentCTE, bool locked_from_parent, bool resolve_unknowns); extern List *transformInsertRow(ParseState *pstate, List *exprlist, List *stmtcols, List *icolumns, List *attrnos, bool strip_indirection); extern List *transformUpdateTargetList(ParseState *pstate, List *origTlist); extern List *transformReturningList(ParseState *pstate, List *returningList, ParseExprKind exprKind); extern Query *transformTopLevelStmt(ParseState *pstate, RawStmt *parseTree); extern Query *transformStmt(ParseState *pstate, Node *parseTree); extern bool stmt_requires_parse_analysis(RawStmt *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); extern SortGroupClause *makeSortGroupClauseForSetOp(Oid rescoltype, bool require_hash); #endif /* ANALYZE_H */ libpg_query-17-6.1.0/src/postgres/include/parser/kwlist.h000066400000000000000000000753051477334012600233500ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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, bare-label-status) entries. * * Note: gen_keywordlist.pl requires the entries to appear in ASCII order. */ /* name, value, category, is-bare-label */ PG_KEYWORD("abort", ABORT_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("absent", ABSENT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("absolute", ABSOLUTE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("access", ACCESS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("action", ACTION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("add", ADD_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("admin", ADMIN, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("after", AFTER, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("aggregate", AGGREGATE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("all", ALL, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("also", ALSO, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("alter", ALTER, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("always", ALWAYS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("analyse", ANALYSE, RESERVED_KEYWORD, BARE_LABEL) /* British spelling */ PG_KEYWORD("analyze", ANALYZE, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("and", AND, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("any", ANY, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("array", ARRAY, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("as", AS, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("asc", ASC, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("asensitive", ASENSITIVE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("assertion", ASSERTION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("assignment", ASSIGNMENT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("asymmetric", ASYMMETRIC, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("at", AT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("atomic", ATOMIC, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("attach", ATTACH, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("attribute", ATTRIBUTE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("authorization", AUTHORIZATION, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("backward", BACKWARD, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("before", BEFORE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("begin", BEGIN_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("between", BETWEEN, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("bigint", BIGINT, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("binary", BINARY, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("bit", BIT, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("boolean", BOOLEAN_P, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("both", BOTH, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("breadth", BREADTH, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("by", BY, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("cache", CACHE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("call", CALL, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("called", CALLED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("cascade", CASCADE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("cascaded", CASCADED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("case", CASE, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("cast", CAST, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("catalog", CATALOG_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("chain", CHAIN, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("char", CHAR_P, COL_NAME_KEYWORD, AS_LABEL) PG_KEYWORD("character", CHARACTER, COL_NAME_KEYWORD, AS_LABEL) PG_KEYWORD("characteristics", CHARACTERISTICS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("check", CHECK, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("checkpoint", CHECKPOINT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("class", CLASS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("close", CLOSE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("cluster", CLUSTER, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("coalesce", COALESCE, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("collate", COLLATE, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("collation", COLLATION, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("column", COLUMN, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("columns", COLUMNS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("comment", COMMENT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("comments", COMMENTS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("commit", COMMIT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("committed", COMMITTED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("compression", COMPRESSION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("concurrently", CONCURRENTLY, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("conditional", CONDITIONAL, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("configuration", CONFIGURATION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("conflict", CONFLICT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("connection", CONNECTION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("constraint", CONSTRAINT, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("constraints", CONSTRAINTS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("content", CONTENT_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("continue", CONTINUE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("conversion", CONVERSION_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("copy", COPY, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("cost", COST, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("create", CREATE, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("cross", CROSS, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("csv", CSV, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("cube", CUBE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("current", CURRENT_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("current_catalog", CURRENT_CATALOG, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("current_date", CURRENT_DATE, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("current_role", CURRENT_ROLE, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("current_schema", CURRENT_SCHEMA, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("current_time", CURRENT_TIME, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("current_timestamp", CURRENT_TIMESTAMP, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("current_user", CURRENT_USER, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("cursor", CURSOR, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("cycle", CYCLE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("data", DATA_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("database", DATABASE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("day", DAY_P, UNRESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("deallocate", DEALLOCATE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("dec", DEC, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("decimal", DECIMAL_P, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("declare", DECLARE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("default", DEFAULT, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("defaults", DEFAULTS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("deferrable", DEFERRABLE, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("deferred", DEFERRED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("definer", DEFINER, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("delete", DELETE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("delimiter", DELIMITER, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("delimiters", DELIMITERS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("depends", DEPENDS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("depth", DEPTH, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("desc", DESC, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("detach", DETACH, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("dictionary", DICTIONARY, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("disable", DISABLE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("discard", DISCARD, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("distinct", DISTINCT, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("do", DO, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("document", DOCUMENT_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("domain", DOMAIN_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("double", DOUBLE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("drop", DROP, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("each", EACH, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("else", ELSE, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("empty", EMPTY_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("enable", ENABLE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("encoding", ENCODING, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("encrypted", ENCRYPTED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("end", END_P, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("enum", ENUM_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("error", ERROR_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("escape", ESCAPE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("event", EVENT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("except", EXCEPT, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("exclude", EXCLUDE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("excluding", EXCLUDING, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("exclusive", EXCLUSIVE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("execute", EXECUTE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("exists", EXISTS, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("explain", EXPLAIN, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("expression", EXPRESSION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("extension", EXTENSION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("external", EXTERNAL, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("extract", EXTRACT, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("false", FALSE_P, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("family", FAMILY, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("fetch", FETCH, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("filter", FILTER, UNRESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("finalize", FINALIZE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("first", FIRST_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("float", FLOAT_P, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("following", FOLLOWING, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("for", FOR, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("force", FORCE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("foreign", FOREIGN, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("format", FORMAT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("forward", FORWARD, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("freeze", FREEZE, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("from", FROM, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("full", FULL, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("function", FUNCTION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("functions", FUNCTIONS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("generated", GENERATED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("global", GLOBAL, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("grant", GRANT, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("granted", GRANTED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("greatest", GREATEST, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("group", GROUP_P, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("grouping", GROUPING, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("groups", GROUPS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("handler", HANDLER, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("having", HAVING, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("header", HEADER_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("hold", HOLD, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("hour", HOUR_P, UNRESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("identity", IDENTITY_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("if", IF_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("ilike", ILIKE, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("immediate", IMMEDIATE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("immutable", IMMUTABLE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("implicit", IMPLICIT_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("import", IMPORT_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("in", IN_P, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("include", INCLUDE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("including", INCLUDING, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("increment", INCREMENT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("indent", INDENT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("index", INDEX, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("indexes", INDEXES, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("inherit", INHERIT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("inherits", INHERITS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("initially", INITIALLY, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("inline", INLINE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("inner", INNER_P, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("inout", INOUT, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("input", INPUT_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("insensitive", INSENSITIVE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("insert", INSERT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("instead", INSTEAD, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("int", INT_P, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("integer", INTEGER, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("intersect", INTERSECT, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("interval", INTERVAL, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("into", INTO, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("invoker", INVOKER, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("is", IS, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("isnull", ISNULL, TYPE_FUNC_NAME_KEYWORD, AS_LABEL) PG_KEYWORD("isolation", ISOLATION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("join", JOIN, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("json", JSON, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("json_array", JSON_ARRAY, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("json_arrayagg", JSON_ARRAYAGG, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("json_exists", JSON_EXISTS, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("json_object", JSON_OBJECT, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("json_objectagg", JSON_OBJECTAGG, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("json_query", JSON_QUERY, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("json_scalar", JSON_SCALAR, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("json_serialize", JSON_SERIALIZE, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("json_table", JSON_TABLE, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("json_value", JSON_VALUE, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("keep", KEEP, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("key", KEY, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("keys", KEYS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("label", LABEL, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("language", LANGUAGE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("large", LARGE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("last", LAST_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("lateral", LATERAL_P, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("leading", LEADING, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("leakproof", LEAKPROOF, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("least", LEAST, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("left", LEFT, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("level", LEVEL, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("like", LIKE, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("limit", LIMIT, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("listen", LISTEN, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("load", LOAD, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("local", LOCAL, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("localtime", LOCALTIME, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("localtimestamp", LOCALTIMESTAMP, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("location", LOCATION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("lock", LOCK_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("locked", LOCKED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("logged", LOGGED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("mapping", MAPPING, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("match", MATCH, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("matched", MATCHED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("materialized", MATERIALIZED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("maxvalue", MAXVALUE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("merge", MERGE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("merge_action", MERGE_ACTION, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("method", METHOD, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("minute", MINUTE_P, UNRESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("minvalue", MINVALUE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("mode", MODE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("month", MONTH_P, UNRESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("move", MOVE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("name", NAME_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("names", NAMES, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("national", NATIONAL, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("natural", NATURAL, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("nchar", NCHAR, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("nested", NESTED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("new", NEW, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("next", NEXT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("nfc", NFC, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("nfd", NFD, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("nfkc", NFKC, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("nfkd", NFKD, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("no", NO, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("none", NONE, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("normalize", NORMALIZE, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("normalized", NORMALIZED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("not", NOT, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("nothing", NOTHING, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("notify", NOTIFY, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("notnull", NOTNULL, TYPE_FUNC_NAME_KEYWORD, AS_LABEL) PG_KEYWORD("nowait", NOWAIT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("null", NULL_P, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("nullif", NULLIF, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("nulls", NULLS_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("numeric", NUMERIC, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("object", OBJECT_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("of", OF, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("off", OFF, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("offset", OFFSET, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("oids", OIDS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("old", OLD, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("omit", OMIT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("on", ON, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("only", ONLY, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("operator", OPERATOR, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("option", OPTION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("options", OPTIONS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("or", OR, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("order", ORDER, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("ordinality", ORDINALITY, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("others", OTHERS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("out", OUT_P, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("outer", OUTER_P, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("over", OVER, UNRESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("overlaps", OVERLAPS, TYPE_FUNC_NAME_KEYWORD, AS_LABEL) PG_KEYWORD("overlay", OVERLAY, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("overriding", OVERRIDING, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("owned", OWNED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("owner", OWNER, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("parallel", PARALLEL, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("parameter", PARAMETER, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("parser", PARSER, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("partial", PARTIAL, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("partition", PARTITION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("passing", PASSING, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("password", PASSWORD, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("path", PATH, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("placing", PLACING, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("plan", PLAN, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("plans", PLANS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("policy", POLICY, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("position", POSITION, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("preceding", PRECEDING, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("precision", PRECISION, COL_NAME_KEYWORD, AS_LABEL) PG_KEYWORD("prepare", PREPARE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("prepared", PREPARED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("preserve", PRESERVE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("primary", PRIMARY, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("prior", PRIOR, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("privileges", PRIVILEGES, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("procedural", PROCEDURAL, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("procedure", PROCEDURE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("procedures", PROCEDURES, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("program", PROGRAM, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("publication", PUBLICATION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("quote", QUOTE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("quotes", QUOTES, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("range", RANGE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("read", READ, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("real", REAL, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("reassign", REASSIGN, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("recheck", RECHECK, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("recursive", RECURSIVE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("ref", REF_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("references", REFERENCES, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("referencing", REFERENCING, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("refresh", REFRESH, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("reindex", REINDEX, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("relative", RELATIVE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("release", RELEASE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("rename", RENAME, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("repeatable", REPEATABLE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("replace", REPLACE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("replica", REPLICA, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("reset", RESET, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("restart", RESTART, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("restrict", RESTRICT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("return", RETURN, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("returning", RETURNING, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("returns", RETURNS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("revoke", REVOKE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("right", RIGHT, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("role", ROLE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("rollback", ROLLBACK, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("rollup", ROLLUP, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("routine", ROUTINE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("routines", ROUTINES, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("row", ROW, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("rows", ROWS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("rule", RULE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("savepoint", SAVEPOINT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("scalar", SCALAR, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("schema", SCHEMA, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("schemas", SCHEMAS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("scroll", SCROLL, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("search", SEARCH, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("second", SECOND_P, UNRESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("security", SECURITY, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("select", SELECT, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("sequence", SEQUENCE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("sequences", SEQUENCES, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("serializable", SERIALIZABLE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("server", SERVER, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("session", SESSION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("session_user", SESSION_USER, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("set", SET, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("setof", SETOF, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("sets", SETS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("share", SHARE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("show", SHOW, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("similar", SIMILAR, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("simple", SIMPLE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("skip", SKIP, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("smallint", SMALLINT, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("snapshot", SNAPSHOT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("some", SOME, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("source", SOURCE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("sql", SQL_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("stable", STABLE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("standalone", STANDALONE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("start", START, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("statement", STATEMENT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("statistics", STATISTICS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("stdin", STDIN, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("stdout", STDOUT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("storage", STORAGE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("stored", STORED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("strict", STRICT_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("string", STRING_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("strip", STRIP_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("subscription", SUBSCRIPTION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("substring", SUBSTRING, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("support", SUPPORT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("symmetric", SYMMETRIC, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("sysid", SYSID, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("system", SYSTEM_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("system_user", SYSTEM_USER, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("table", TABLE, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("tables", TABLES, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("tablesample", TABLESAMPLE, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("tablespace", TABLESPACE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("target", TARGET, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("temp", TEMP, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("template", TEMPLATE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("temporary", TEMPORARY, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("text", TEXT_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("then", THEN, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("ties", TIES, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("time", TIME, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("timestamp", TIMESTAMP, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("to", TO, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("trailing", TRAILING, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("transaction", TRANSACTION, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("transform", TRANSFORM, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("treat", TREAT, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("trigger", TRIGGER, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("trim", TRIM, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("true", TRUE_P, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("truncate", TRUNCATE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("trusted", TRUSTED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("type", TYPE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("types", TYPES_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("uescape", UESCAPE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("unbounded", UNBOUNDED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("uncommitted", UNCOMMITTED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("unconditional", UNCONDITIONAL, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("unencrypted", UNENCRYPTED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("union", UNION, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("unique", UNIQUE, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("unknown", UNKNOWN, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("unlisten", UNLISTEN, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("unlogged", UNLOGGED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("until", UNTIL, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("update", UPDATE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("user", USER, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("using", USING, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("vacuum", VACUUM, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("valid", VALID, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("validate", VALIDATE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("validator", VALIDATOR, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("value", VALUE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("values", VALUES, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("varchar", VARCHAR, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("variadic", VARIADIC, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("varying", VARYING, UNRESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("verbose", VERBOSE, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("version", VERSION_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("view", VIEW, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("views", VIEWS, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("volatile", VOLATILE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("when", WHEN, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("where", WHERE, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("whitespace", WHITESPACE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("window", WINDOW, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("with", WITH, RESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("within", WITHIN, UNRESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("without", WITHOUT, UNRESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("work", WORK, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("wrapper", WRAPPER, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("write", WRITE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("xml", XML_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("xmlattributes", XMLATTRIBUTES, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("xmlconcat", XMLCONCAT, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("xmlelement", XMLELEMENT, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("xmlexists", XMLEXISTS, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("xmlforest", XMLFOREST, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("xmlnamespaces", XMLNAMESPACES, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("xmlparse", XMLPARSE, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("xmlpi", XMLPI, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("xmlroot", XMLROOT, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("xmlserialize", XMLSERIALIZE, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("xmltable", XMLTABLE, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("year", YEAR_P, UNRESERVED_KEYWORD, AS_LABEL) PG_KEYWORD("yes", YES_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("zone", ZONE, UNRESERVED_KEYWORD, BARE_LABEL) libpg_query-17-6.1.0/src/postgres/include/parser/parse_agg.h000066400000000000000000000040231477334012600237500ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_agg.h * handle aggregates and window functions in parser * * Portions Copyright (c) 1996-2024, 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 *p); extern void transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc, WindowDef *windef); extern void parseCheckAggregates(ParseState *pstate, Query *qry); extern List *expand_grouping_sets(List *groupingSets, bool groupDistinct, 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 bool agg_args_support_sendreceive(Aggref *aggref); 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_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-17-6.1.0/src/postgres/include/parser/parse_coerce.h000066400000000000000000000075221477334012600244610ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_coerce.h * Routines for type coercion. * * * Portions Copyright (c) 1996-2024, 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 IsBinaryCoercibleWithCast(Oid srctype, Oid targettype, Oid *castoid); 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 Node *coerce_null_to_domain(Oid typid, int32 typmod, Oid collation, int typlen, bool typbyval); 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 verify_common_type(Oid common_type, List *exprs); extern int32 select_common_typmod(ParseState *pstate, List *exprs, Oid common_type); 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-17-6.1.0/src/postgres/include/parser/parse_expr.h000066400000000000000000000013221477334012600241670ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_expr.h * handle expressions in parser * * Portions Copyright (c) 1996-2024, 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 PGDLLIMPORT 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-17-6.1.0/src/postgres/include/parser/parse_func.h000066400000000000000000000047111477334012600241510ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_func.h * * * * Portions Copyright (c) 1996-2024, 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, bool include_out_arguments, 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-17-6.1.0/src/postgres/include/parser/parse_node.h000066400000000000000000000400031477334012600241350ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_node.h * Internal definitions for parser * * * Portions Copyright (c) 1996-2024, 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_MERGE_WHEN, /* MERGE WHEN [NOT] MATCHED condition */ 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 in INSERT/UPDATE/DELETE */ EXPR_KIND_MERGE_RETURNING, /* RETURNING in MERGE */ 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_STATS_EXPRESSION, /* extended statistics expression */ 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 */ EXPR_KIND_CYCLE_MARK, /* cycle mark value */ } 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_rteperminfos: list of RTEPermissionInfo containing an entry corresponding * to each RTE_RELATION entry in p_rtable. * * 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_nullingrels: list of Bitmapsets associated with p_rtable entries, each * containing the set of outer-join RTE indexes that can null that relation * at the current point in the parse tree. This is one-for-one with p_rtable, * but may be shorter than p_rtable, in which case the missing entries are * implicitly empty (NULL). That rule allows us to save work when the query * contains no outer 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/DELETE/MERGE * * 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_rteperminfos; /* list of RTEPermissionInfo nodes for each * RTE_RELATION entry in rtable */ List *p_joinexprs; /* JoinExprs for RTE_JOIN p_rtable entries */ List *p_nullingrels; /* Bitmapsets showing nulling outer joins */ 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/MERGE 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. * * p_names contains the table name and column names exposed by this nsitem. * (Typically it's equal to p_rte->eref, but for a JOIN USING alias it's * equal to p_rte->join_using_alias. Since the USING columns will be the * join's first N columns, the net effect is just that we expose only those * join columns via this nsitem.) * * p_rte and p_rtindex link to the underlying rangetable entry, and * p_perminfo to the entry in rteperminfos. * * The p_nscolumns array contains info showing how to construct Vars * referencing the names appearing in the p_names->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). * Conversely, a subquery without an alias does not hide the columns selected * by the subquery, but it does hide the auto-generated relation name (so the * subquery columns are visible for unqualified references only). 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 { Alias *p_names; /* Table and column names */ RangeTblEntry *p_rte; /* The relation's rangetable entry */ int p_rtindex; /* The relation's index in the rangetable */ RTEPermissionInfo *p_perminfo; /* The relation's rteperminfos entry */ /* array of same length as p_names->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 */ bool p_dontexpand; /* not included in star expansion */ }; /* 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 void transformContainerType(Oid *containerType, int32 *containerTypmod); extern SubscriptingRef *transformContainerSubscripts(ParseState *pstate, Node *containerBase, Oid containerType, int32 containerTypMod, List *indirection, bool isAssignment); extern Const *make_const(ParseState *pstate, A_Const *aconst); #endif /* PARSE_NODE_H */ libpg_query-17-6.1.0/src/postgres/include/parser/parse_oper.h000066400000000000000000000047251477334012600241700ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_oper.h * handle operator things for parser * * * Portions Copyright (c) 1996-2024, 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 *opname, Oid ltypeId, Oid rtypeId, 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 */ /* Error reporting support */ extern const char *op_signature_string(List *op, Oid arg1, Oid arg2); /* 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-17-6.1.0/src/postgres/include/parser/parse_relation.h000066400000000000000000000124241477334012600250330ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_relation.h * prototypes for parse_relation.c. * * * Portions Copyright (c) 1996-2024, 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 markNullableIfNeeded(ParseState *pstate, Var *var); extern void markVarForSelectPriv(ParseState *pstate, Var *var); 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 *join_using_alias, 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 RTEPermissionInfo *addRTEPermissionInfo(List **rteperminfos, RangeTblEntry *rte); extern RTEPermissionInfo *getRTEPermissionInfo(List *rteperminfos, RangeTblEntry *rte); 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(ParseState *pstate, ParseNamespaceItem *nsitem, int sublevels_up, int location, List **colnames); extern List *expandNSItemAttrs(ParseState *pstate, ParseNamespaceItem *nsitem, int sublevels_up, bool require_col_privs, 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-17-6.1.0/src/postgres/include/parser/parse_type.h000066400000000000000000000042621477334012600242000ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_type.h * handle type operations for parser * * Portions Copyright (c) 1996-2024, 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, const 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, Node *escontext); extern bool parseTypeString(const char *str, Oid *typeid_p, int32 *typmod_p, Node *escontext); /* true if typeid is composite, or domain over composite, but not RECORD */ #define ISCOMPLEX(typeid) (typeOrDomainTypeRelid(typeid) != InvalidOid) #endif /* PARSE_TYPE_H */ libpg_query-17-6.1.0/src/postgres/include/parser/parser.h000066400000000000000000000040411477334012600233140ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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" /* * RawParseMode determines the form of the string that raw_parser() accepts: * * RAW_PARSE_DEFAULT: parse a semicolon-separated list of SQL commands, * and return a List of RawStmt nodes. * * RAW_PARSE_TYPE_NAME: parse a type name, and return a one-element List * containing a TypeName node. * * RAW_PARSE_PLPGSQL_EXPR: parse a PL/pgSQL expression, and return * a one-element List containing a RawStmt node. * * RAW_PARSE_PLPGSQL_ASSIGNn: parse a PL/pgSQL assignment statement, * and return a one-element List containing a RawStmt node. "n" * gives the number of dotted names comprising the target ColumnRef. */ typedef enum { RAW_PARSE_DEFAULT = 0, RAW_PARSE_TYPE_NAME, RAW_PARSE_PLPGSQL_EXPR, RAW_PARSE_PLPGSQL_ASSIGN1, RAW_PARSE_PLPGSQL_ASSIGN2, RAW_PARSE_PLPGSQL_ASSIGN3, } RawParseMode; /* Values for the backslash_quote GUC */ 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 PGDLLIMPORT __thread int backslash_quote; extern PGDLLIMPORT __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, RawParseMode mode); /* 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-17-6.1.0/src/postgres/include/parser/parsetree.h000066400000000000000000000027011477334012600240130ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parsetree.h * Routines to access various components and subcomponents of * parse trees. * * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/parser/scanner.h000066400000000000000000000125551477334012600234620ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 *yylval_param, YYLTYPE *yylloc_param, 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-17-6.1.0/src/postgres/include/parser/scansup.h000066400000000000000000000014111477334012600234720ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * scansup.h * scanner support routines used by the core lexer * * Portions Copyright (c) 1996-2024, 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 *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-17-6.1.0/src/postgres/include/partitioning/000077500000000000000000000000001477334012600230635ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/partitioning/partdefs.h000066400000000000000000000012501477334012600250420ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * partdefs.h * Base definitions for partitioned table handling * * Copyright (c) 2007-2024, 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-17-6.1.0/src/postgres/include/pg_config.h000066400000000000000000000740371477334012600224730ustar00rootroot00000000000000/* src/include/pg_config.h. Generated from pg_config.h.in by configure. */ /* src/include/pg_config.h.in. Generated from configure.ac by autoheader. */ /* 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' '--without-icu'" /* 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 the file name extension of dynamically-loadable modules. */ #define DLSUFFIX ".dylib" /* 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 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_meth_new' function. */ /* #undef HAVE_BIO_METH_NEW */ /* 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 `copy_file_range' function. */ /* #undef HAVE_COPY_FILE_RANGE */ /* 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 `posix_fadvise', and to 0 if you don't. */ #define HAVE_DECL_POSIX_FADVISE 0 /* Define to 1 if you have the declaration of `preadv', and to 0 if you don't. */ #define HAVE_DECL_PREADV 1 /* Define to 1 if you have the declaration of `pwritev', and to 0 if you don't. */ #define HAVE_DECL_PWRITEV 1 /* Define to 1 if you have the declaration of `strchrnul', and to 0 if you don't. */ #define HAVE_DECL_STRCHRNUL 0 /* 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 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 fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* 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 `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 header file. */ /* #undef HAVE_GSSAPI_EXT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_GSSAPI_GSSAPI_EXT_H */ /* 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 `HMAC_CTX_free' function. */ /* #undef HAVE_HMAC_CTX_FREE */ /* Define to 1 if you have the `HMAC_CTX_new' function. */ /* #undef HAVE_HMAC_CTX_NEW */ /* 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 you have the `inet_pton' function. */ #define HAVE_INET_PTON 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 __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 `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 `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* 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 `zstd' library (-lzstd). */ /* #undef HAVE_LIBZSTD */ /* 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 you have the `mkdtemp' function. */ #define HAVE_MKDTEMP 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 `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 you have the `ppoll' function. */ /* #undef HAVE_PPOLL */ /* Define if you have POSIX threads libraries and header files. */ #define HAVE_PTHREAD 1 /* Define to 1 if you have the `pthread_barrier_wait' function. */ /* #undef HAVE_PTHREAD_BARRIER_WAIT */ /* 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 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 `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 `rl_variable_bind' function. */ /* #undef HAVE_RL_VARIABLE_BIND */ /* 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 the system has the type `socklen_t'. */ #define HAVE_SOCKLEN_T 1 /* Define to 1 if you have spinlocks. */ #define HAVE_SPINLOCKS 1 /* Define to 1 if you have the `SSL_CTX_set_cert_cb' function. */ /* #undef HAVE_SSL_CTX_SET_CERT_CB */ /* Define to 1 if you have the `SSL_CTX_set_num_tickets' function. */ /* #undef HAVE_SSL_CTX_SET_NUM_TICKETS */ /* 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 `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 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 `tm_zone' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_ZONE 1 /* Define to 1 if you have the `syncfs' function. */ /* #undef HAVE_SYNCFS */ /* 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. */ /* #undef HAVE_SYS_PERSONALITY_H */ /* 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_SIGNALFD_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* 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_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 `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 your compiler knows the visibility("hidden") attribute. */ #define HAVE_VISIBILITY_ATTRIBUTE 1 /* Define to 1 if you have the `wcstombs_l' function. */ #define HAVE_WCSTOMBS_L 1 /* Define to 1 if you have the `X509_get_signature_info' function. */ /* #undef HAVE_X509_GET_SIGNATURE_INFO */ /* Define to 1 if the assembler supports X86_64's POPCNTQ instruction. */ /* #undef HAVE_X86_64_POPCNTQ */ /* Define to 1 if you have XSAVE intrinsics. */ /* #undef HAVE_XSAVE_INTRINSICS */ /* 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_frame_address. */ #define HAVE__BUILTIN_FRAME_ADDRESS 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 __cpuidex. */ /* #undef HAVE__CPUIDEX */ /* Define to 1 if you have __get_cpuid. */ /* #undef HAVE__GET_CPUID */ /* Define to 1 if you have __get_cpuid_count. */ /* #undef HAVE__GET_CPUID_COUNT */ /* Define to 1 if your compiler understands _Static_assert. */ #define HAVE__STATIC_ASSERT 1 /* Define to the appropriate printf length modifier for 64-bit ints. */ #define INT64_MODIFIER "l" /* Define to 1 if `locale_t' requires . */ /* #undef LOCALE_T_IN_XLOCALE */ /* 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 OpenSSL API version in use. This avoids deprecation warnings from newer OpenSSL versions. */ /* #undef OPENSSL_API_COMPAT */ /* 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 17.4" /* 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 "17.4" /* 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 "17" /* PostgreSQL major version number */ #define PG_MAJORVERSION_NUM 17 /* PostgreSQL minor version number */ #define PG_MINORVERSION_NUM 4 /* 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 "17.4" /* PostgreSQL version as a number */ #define PG_VERSION_NUM 170004 /* A string containing the version number, platform, and C compiler */ #define PG_VERSION_STR "PostgreSQL 17.4 (libpg_query)" /* 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. */ #define USE_ARMV8_CRC32C 1 /* 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 use AVX-512 popcount instructions with a runtime check. */ /* #undef USE_AVX512_POPCNT_WITH_RUNTIME_CHECK */ /* 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 build with ICU support. (--with-icu) */ /* #undef USE_ICU */ /* Define to 1 to build with injection points. (--enable-injection-points) */ /* #undef USE_INJECTION_POINTS */ /* 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 1 to use LoongArch CRCC instructions. */ /* #undef USE_LOONGARCH_CRC32C */ /* Define to 1 to build with LZ4 support. (--with-lz4) */ /* #undef USE_LZ4 */ /* Define to select named POSIX semaphores. */ /* #undef USE_NAMED_POSIX_SEMAPHORES */ /* Define to 1 to build with OpenSSL support. (--with-ssl=openssl) */ /* #undef USE_OPENSSL */ /* 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. */ /* #undef USE_SSE42_CRC32C_WITH_RUNTIME_CHECK */ /* 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 select Win32-style semaphores. */ /* #undef USE_WIN32_SEMAPHORES */ /* Define to select Win32-style shared memory. */ /* #undef USE_WIN32_SHARED_MEMORY */ /* Define to 1 to build with ZSTD support. (--with-zstd) */ /* #undef USE_ZSTD */ /* 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 */ /* * Assume we don't have xlocale.h on non-MacOS, as not all Linux distros have "xlocale.h" available. * * Note this is required on older MacOS to avoid "unknown type name 'locale_t'" */ #undef LOCALE_T_IN_XLOCALE #ifdef __APPLE__ #define LOCALE_T_IN_XLOCALE 1 #endif #undef WCSTOMBS_L_IN_XLOCALE /* Support gcc earlier than 4.6.0 and MSVC */ #undef HAVE__STATIC_ASSERT /* Avoid dependency on execinfo (requires extra library on musl-libc based systems, not supported on Windows) */ #undef HAVE_EXECINFO_H #undef HAVE_BACKTRACE_SYMBOLS /* Avoid dependency on hardware popcount instructions (POPQNTQ) on x86 */ #undef HAVE_X86_64_POPCNTQ /* Avoid dependency on cpuid.h (only supported on x86 systems) */ #undef HAVE__GET_CPUID /* Avoid CRC extension usage to ensure we are not architecture-dependent */ #undef USE_ARMV8_CRC32C #undef USE_SSE42_CRC32C_WITH_RUNTIME_CHECK /* * Ensure we use built-in strchrnul on systems that have strchrnul support (FreeBSD, NetBSD and newer glibc) * * Note MacOS 15.4+ also has strchrnul implemented, but is complex to handle correctly, and the code works * around the double define. */ #include #undef HAVE_DECL_STRCHRNUL #if defined(__FreeBSD__) || defined(__NetBSD__) || (defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 38) || __GLIBC__ > 2)) #define HAVE_DECL_STRCHRNUL 1 #else #define HAVE_DECL_STRCHRNUL 0 #endif /* 32-bit */ #if defined(_WIN32) || __SIZEOF_POINTER__ == 4 #undef ALIGNOF_DOUBLE #define ALIGNOF_DOUBLE 4 #undef ALIGNOF_LONG #define ALIGNOF_LONG 4 #define ALIGNOF_LONG_LONG_INT 4 #undef ALIGNOF_PG_INT128_TYPE #undef HAVE_LONG_INT_64 #define HAVE_LONG_LONG_INT_64 1 #undef INT64_MODIFIER #define INT64_MODIFIER "ll" #undef PG_INT128_TYPE #undef PG_INT64_TYPE #define PG_INT64_TYPE long long int #undef SIZEOF_LONG #define SIZEOF_LONG 4 #undef SIZEOF_OFF_T #define SIZEOF_OFF_T 4 #undef SIZEOF_SIZE_T #define SIZEOF_SIZE_T 4 #undef SIZEOF_VOID_P #define SIZEOF_VOID_P 4 #endif /* Windows */ #if defined(_WIN32) || defined(_WIN64) #undef HAVE_COPYFILE #undef HAVE_COPYFILE_H #undef HAVE_DECL_F_FULLFSYNC #define HAVE_DECL_F_FULLFSYNC 0 #undef HAVE_DECL_PREADV #define HAVE_DECL_PREADV 0 #undef HAVE_DECL_PWRITEV #define HAVE_DECL_PWRITEV 0 #undef HAVE_DECL_STRLCAT #define HAVE_DECL_STRLCAT 0 #undef HAVE_DECL_STRLCPY #define HAVE_DECL_STRLCPY 0 #undef HAVE_GETIFADDRS #undef HAVE_GETPEEREID #undef HAVE_IFADDRS_H #undef HAVE_INET_ATON #undef HAVE_INT_OPTRESET #undef HAVE_KQUEUE #undef HAVE_LANGINFO_H #undef HAVE_MEMSET_S #undef HAVE_MKDTEMP #undef HAVE_PTHREAD #undef HAVE_PTHREAD_BARRIER_WAIT #undef HAVE_PTHREAD_IS_THREADED_NP #undef HAVE_PTHREAD_PRIO_INHERIT #undef HAVE_STRERROR_R #undef HAVE_STRLCAT #undef HAVE_STRLCPY #undef HAVE_STRSIGNAL #undef HAVE_STRUCT_SOCKADDR_SA_LEN #undef HAVE_STRUCT_TM_TM_ZONE #undef HAVE_SYSLOG #undef HAVE_SYS_EVENT_H #undef HAVE_SYS_UCRED_H #undef HAVE_TERMIOS_H #undef HAVE_UNION_SEMUN #undef HAVE_USELOCALE #define HAVE__CONFIGTHREADLOCALE 1 #undef STRERROR_R_INT #undef USE_SYSV_SEMAPHORES #undef USE_SYSV_SHARED_MEMORY #define USE_WIN32_SEMAPHORES 1 #define USE_WIN32_SHARED_MEMORY 1 #undef PG_PRINTF_ATTRIBUTE #if defined(__clang__) #define PG_PRINTF_ATTRIBUTE printf #elif defined(__MINGW32__) || defined(__MINGW64__) || defined(__MSYS__) || defined(__CYGWIN__) #define PG_PRINTF_ATTRIBUTE gnu_printf #endif #if defined(__MINGW32__) || defined(__MINGW64__) || defined(__MSYS__) || defined(__CYGWIN__) #undef HAVE_MBSTOWCS_L #undef HAVE_WCSTOMBS_L #define HAVE_CRTDEFS_H 1 #define HAVE_PTHREAD_BARRIER_WAIT 1 #endif #endif /* Microsoft Visual Studio Compiler */ #ifdef _MSC_VER #undef HAVE_COMPUTED_GOTO #undef HAVE_GCC__ATOMIC_INT32_CAS #undef HAVE_GCC__ATOMIC_INT64_CAS #undef HAVE_GCC__SYNC_CHAR_TAS #undef HAVE_GCC__SYNC_INT32_CAS #undef HAVE_GCC__SYNC_INT32_TAS #undef HAVE_GCC__SYNC_INT64_CAS #undef HAVE_GETOPT #undef HAVE_GETOPT_H #undef HAVE_GETOPT_LONG #undef HAVE_INTTYPES_H #undef HAVE_INT_OPTERR #undef HAVE_LIBM #undef HAVE_STRINGS_H #undef HAVE_STRUCT_OPTION #undef HAVE_TYPEOF #undef HAVE_VISIBILITY_ATTRIBUTE #undef HAVE__BOOL #undef HAVE__BUILTIN_BSWAP16 #undef HAVE__BUILTIN_BSWAP32 #undef HAVE__BUILTIN_BSWAP64 #undef HAVE__BUILTIN_CLZ #undef HAVE__BUILTIN_CONSTANT_P #undef HAVE__BUILTIN_CTZ #undef HAVE__BUILTIN_FRAME_ADDRESS #undef HAVE__BUILTIN_OP_OVERFLOW #undef HAVE__BUILTIN_POPCOUNT #undef HAVE__BUILTIN_TYPES_COMPATIBLE_P #undef HAVE__BUILTIN_UNREACHABLE #ifndef __cplusplus #define inline __inline #endif #undef restrict #define __thread __declspec( thread ) #endif libpg_query-17-6.1.0/src/postgres/include/pg_config_ext.h000066400000000000000000000005031477334012600233360ustar00rootroot00000000000000/* 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-17-6.1.0/src/postgres/include/pg_config_manual.h000066400000000000000000000336231477334012600240240ustar00rootroot00000000000000/*------------------------------------------------------------------------ * 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-2024, 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 fewer 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 /* * When creating a product derived from PostgreSQL with changes that cause * incompatibilities for loadable modules, it is recommended to change this * string so that dfmgr.c can refuse to load incompatible modules with a clean * error message. Typical examples that cause incompatibilities are any * changes to node tags or node structures. (Note that dfmgr.c already * detects common sources of incompatibilities due to major version * differences and due to some changed compile-time constants. This setting * is for catching anything that cannot be detected in a straightforward way.) * * There is no prescribed format for the string. The suggestion is to include * product or company name, and optionally any internally-relevant ABI * version. Example: "ACME Postgres/1.2". Note that the string will appear * in a user-facing error message if an ABI mismatch is detected. */ #define FMGR_ABI_EXTRA "PostgreSQL" /* * 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 /* * 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 /* * 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. */ #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" /* * Assumed cache line size. This doesn't affect correctness, but can be used * for low-level optimizations. This is mostly used to pad various data * structures, 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 /* * Assumed alignment requirement for direct I/O. 4K corresponds to common * sector and memory page size. */ #define PG_IO_ALIGN_SIZE 4096 /* *------------------------------------------------------------------------ * The following symbols are for enabling debugging code, not for * controlling user-visible features or resource limits. *------------------------------------------------------------------------ */ /* * Force use of the non-recursive JSON parser in all cases. This is useful * to validate the working of the parser, and the regression tests should * pass except for some different error messages about the stack limit. */ /* #define FORCE_JSON_PSTACK */ /* * 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. It also * enables detection of buffer accesses that take place without holding a * buffer pin (or without holding a buffer lock in the case of index access * methods that superimpose their own custom client requests on top of the * generic bufmgr.c requests). * * "make installcheck" is significantly slower under Valgrind. The client * requests fall in hot code paths, so USE_VALGRIND slows execution by a few * percentage points even when not run under Valgrind. * * Do not try to test the server under Valgrind without having built the * server with USE_VALGRIND; else you will get false positives from sinval * messaging (see comments in AddCatcacheInvalidationMessage). It's also * important to use the suppression file src/tools/valgrind.supp to * exclude other known false positives. * * 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 */ /* * For cache-invalidation debugging, define DISCARD_CACHES_ENABLED to enable * use of the debug_discard_caches GUC to aggressively flush syscache/relcache * entries whenever it's possible to deliver invalidations. See * AcceptInvalidationMessages() in src/backend/utils/cache/inval.c for * details. * * USE_ASSERT_CHECKING builds default to enabling this. It's possible to use * DISCARD_CACHES_ENABLED without a cassert build and the implied * CLOBBER_FREED_MEMORY and MEMORY_CONTEXT_CHECKING options, but it's unlikely * to be as effective at identifying problems. */ /* #define DISCARD_CACHES_ENABLED */ #if defined(USE_ASSERT_CHECKING) && !defined(DISCARD_CACHES_ENABLED) #define DISCARD_CACHES_ENABLED #endif /* * Backwards compatibility for the older compile-time-only clobber-cache * macros. */ #if !defined(DISCARD_CACHES_ENABLED) && (defined(CLOBBER_CACHE_ALWAYS) || defined(CLOBBER_CACHE_RECURSIVELY)) #define DISCARD_CACHES_ENABLED #endif /* * Recover memory used for relcache entries when invalidated. See * RelationBuildDesc() in src/backend/utils/cache/relcache.c. * * This is active automatically for clobber-cache builds when clobbering is * active, but can be overridden here by explicitly defining * RECOVER_RELATION_BUILD_MEMORY. Define to 1 to always free relation cache * memory even when clobber is off, or to 0 to never free relation cache * memory even when clobbering is on. */ /* #define RECOVER_RELATION_BUILD_MEMORY 0 */ /* Force disable */ /* #define RECOVER_RELATION_BUILD_MEMORY 1 */ /* Force enable */ /* * 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 Bitmapset reallocation on each modification. Helps * to find dangling pointers to Bitmapset's. */ /* #define REALLOCATE_BITMAPSETS */ /* * 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-17-6.1.0/src/postgres/include/pg_config_os.h000066400000000000000000000002471477334012600231640ustar00rootroot00000000000000#if defined(_WIN32) || defined(_WIN64) #include "port/win32.h" #undef PGDLLIMPORT #undef PGDLLEXPORT #ifdef __clang__ #undef __MINGW64__ #endif /* __clang__ */ #endif libpg_query-17-6.1.0/src/postgres/include/pg_getopt.h000066400000000000000000000032671477334012600225250ustar00rootroot00000000000000/* * 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-2024, 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 PGDLLIMPORT char *optarg; extern PGDLLIMPORT int optind; extern PGDLLIMPORT int opterr; extern PGDLLIMPORT 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 PGDLLIMPORT 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-17-6.1.0/src/postgres/include/pg_trace.h000066400000000000000000000005001477334012600223040ustar00rootroot00000000000000/* ---------- * pg_trace.h * * Definitions for the PostgreSQL tracing framework * * Copyright (c) 2006-2024, 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-17-6.1.0/src/postgres/include/pgstat.h000066400000000000000000000565721477334012600220460ustar00rootroot00000000000000/* ---------- * pgstat.h * * Definitions for the PostgreSQL cumulative statistics system. * * Copyright (c) 2001-2024, PostgreSQL Global Development Group * * src/include/pgstat.h * ---------- */ #ifndef PGSTAT_H #define PGSTAT_H #include "datatype/timestamp.h" #include "portability/instr_time.h" #include "postmaster/pgarch.h" /* for MAX_XFN_CHARS */ #include "utils/backend_progress.h" /* for backward compatibility */ #include "utils/backend_status.h" /* for backward compatibility */ #include "utils/relcache.h" #include "utils/wait_event.h" /* for backward compatibility */ /* ---------- * Paths for the statistics files (relative to installation's $PGDATA). * ---------- */ #define PGSTAT_STAT_PERMANENT_DIRECTORY "pg_stat" #define PGSTAT_STAT_PERMANENT_FILENAME "pg_stat/pgstat.stat" #define PGSTAT_STAT_PERMANENT_TMPFILE "pg_stat/pgstat.tmp" /* Default directory to store temporary statistics data in */ #define PG_STAT_TMP_DIR "pg_stat_tmp" /* The types of statistics entries */ typedef enum PgStat_Kind { /* use 0 for INVALID, to catch zero-initialized data */ PGSTAT_KIND_INVALID = 0, /* stats for variable-numbered objects */ PGSTAT_KIND_DATABASE, /* database-wide statistics */ PGSTAT_KIND_RELATION, /* per-table statistics */ PGSTAT_KIND_FUNCTION, /* per-function statistics */ PGSTAT_KIND_REPLSLOT, /* per-slot statistics */ PGSTAT_KIND_SUBSCRIPTION, /* per-subscription statistics */ /* stats for fixed-numbered objects */ PGSTAT_KIND_ARCHIVER, PGSTAT_KIND_BGWRITER, PGSTAT_KIND_CHECKPOINTER, PGSTAT_KIND_IO, PGSTAT_KIND_SLRU, PGSTAT_KIND_WAL, } PgStat_Kind; #define PGSTAT_KIND_FIRST_VALID PGSTAT_KIND_DATABASE #define PGSTAT_KIND_LAST PGSTAT_KIND_WAL #define PGSTAT_NUM_KINDS (PGSTAT_KIND_LAST + 1) /* Values for track_functions GUC variable --- order is significant! */ typedef enum TrackFunctionsLevel { TRACK_FUNC_OFF, TRACK_FUNC_PL, TRACK_FUNC_ALL, } TrackFunctionsLevel; typedef enum PgStat_FetchConsistency { PGSTAT_FETCH_CONSISTENCY_NONE, PGSTAT_FETCH_CONSISTENCY_CACHE, PGSTAT_FETCH_CONSISTENCY_SNAPSHOT, } PgStat_FetchConsistency; /* Values to track the cause of session termination */ typedef enum SessionEndType { DISCONNECT_NOT_YET, /* still active */ DISCONNECT_NORMAL, DISCONNECT_CLIENT_EOF, DISCONNECT_FATAL, DISCONNECT_KILLED, } SessionEndType; /* ---------- * The data type used for counters. * ---------- */ typedef int64 PgStat_Counter; /* ------------------------------------------------------------ * Structures kept in backend local memory while accumulating counts * ------------------------------------------------------------ */ /* ---------- * 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 pending stats. * * Note that the time counters are in instr_time format here. We convert to * microseconds in PgStat_Counter format when flushing out pending statistics. * ---------- */ typedef struct PgStat_FunctionCounts { PgStat_Counter numcalls; instr_time total_time; instr_time self_time; } PgStat_FunctionCounts; /* * 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 start; } PgStat_FunctionCallUsage; /* ---------- * PgStat_BackendSubEntry Non-flushed subscription stats. * ---------- */ typedef struct PgStat_BackendSubEntry { PgStat_Counter apply_error_count; PgStat_Counter sync_error_count; } PgStat_BackendSubEntry; /* ---------- * 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 stats updates to apply. * It is a component of PgStat_TableStatus (within-backend state). * * 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/newpage_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 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 tuples_newpage_updated; bool truncdropped; PgStat_Counter delta_live_tuples; PgStat_Counter delta_dead_tuples; PgStat_Counter changed_tuples; PgStat_Counter blocks_fetched; PgStat_Counter blocks_hit; } PgStat_TableCounts; /* ---------- * 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 id; /* table's OID */ bool shared; /* is it a shared catalog? */ struct PgStat_TableXactStatus *trans; /* lowest subxact's counts */ PgStat_TableCounts counts; /* event counts to be sent */ Relation relation; /* rel that is using this entry */ } 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 truncdropped; /* relation truncated/dropped in this * (sub)xact */ /* tuples i/u/d prior to truncate/drop */ PgStat_Counter inserted_pre_truncdrop; PgStat_Counter updated_pre_truncdrop; PgStat_Counter deleted_pre_truncdrop; 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; /* ------------------------------------------------------------ * Data structures on disk and in shared memory follow * * PGSTAT_FILE_FORMAT_ID should be changed whenever any of these * data structures change. * ------------------------------------------------------------ */ #define PGSTAT_FILE_FORMAT_ID 0x01A5BCAC 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; typedef struct PgStat_BgWriterStats { PgStat_Counter buf_written_clean; PgStat_Counter maxwritten_clean; PgStat_Counter buf_alloc; TimestampTz stat_reset_timestamp; } PgStat_BgWriterStats; typedef struct PgStat_CheckpointerStats { PgStat_Counter num_timed; PgStat_Counter num_requested; PgStat_Counter restartpoints_timed; PgStat_Counter restartpoints_requested; PgStat_Counter restartpoints_performed; PgStat_Counter write_time; /* times in milliseconds */ PgStat_Counter sync_time; PgStat_Counter buffers_written; TimestampTz stat_reset_timestamp; } PgStat_CheckpointerStats; /* * Types related to counting IO operations */ typedef enum IOObject { IOOBJECT_RELATION, IOOBJECT_TEMP_RELATION, } IOObject; #define IOOBJECT_NUM_TYPES (IOOBJECT_TEMP_RELATION + 1) typedef enum IOContext { IOCONTEXT_BULKREAD, IOCONTEXT_BULKWRITE, IOCONTEXT_NORMAL, IOCONTEXT_VACUUM, } IOContext; #define IOCONTEXT_NUM_TYPES (IOCONTEXT_VACUUM + 1) typedef enum IOOp { IOOP_EVICT, IOOP_EXTEND, IOOP_FSYNC, IOOP_HIT, IOOP_READ, IOOP_REUSE, IOOP_WRITE, IOOP_WRITEBACK, } IOOp; #define IOOP_NUM_TYPES (IOOP_WRITEBACK + 1) typedef struct PgStat_BktypeIO { PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES]; PgStat_Counter times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES]; } PgStat_BktypeIO; typedef struct PgStat_IO { TimestampTz stat_reset_timestamp; PgStat_BktypeIO stats[BACKEND_NUM_TYPES]; } PgStat_IO; typedef struct PgStat_StatDBEntry { PgStat_Counter xact_commit; PgStat_Counter xact_rollback; PgStat_Counter blocks_fetched; PgStat_Counter blocks_hit; PgStat_Counter tuples_returned; PgStat_Counter tuples_fetched; PgStat_Counter tuples_inserted; PgStat_Counter tuples_updated; PgStat_Counter tuples_deleted; TimestampTz last_autovac_time; PgStat_Counter conflict_tablespace; PgStat_Counter conflict_lock; PgStat_Counter conflict_snapshot; PgStat_Counter conflict_logicalslot; PgStat_Counter conflict_bufferpin; PgStat_Counter conflict_startup_deadlock; PgStat_Counter temp_files; PgStat_Counter temp_bytes; PgStat_Counter deadlocks; PgStat_Counter checksum_failures; TimestampTz last_checksum_failure; PgStat_Counter blk_read_time; /* times in microseconds */ PgStat_Counter blk_write_time; PgStat_Counter sessions; PgStat_Counter session_time; PgStat_Counter active_time; PgStat_Counter idle_in_transaction_time; PgStat_Counter sessions_abandoned; PgStat_Counter sessions_fatal; PgStat_Counter sessions_killed; TimestampTz stat_reset_timestamp; } PgStat_StatDBEntry; typedef struct PgStat_StatFuncEntry { PgStat_Counter numcalls; PgStat_Counter total_time; /* times in microseconds */ PgStat_Counter self_time; } PgStat_StatFuncEntry; typedef struct PgStat_StatReplSlotEntry { PgStat_Counter spill_txns; PgStat_Counter spill_count; PgStat_Counter spill_bytes; PgStat_Counter stream_txns; PgStat_Counter stream_count; PgStat_Counter stream_bytes; PgStat_Counter total_txns; PgStat_Counter total_bytes; TimestampTz stat_reset_timestamp; } PgStat_StatReplSlotEntry; 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; typedef struct PgStat_StatSubEntry { PgStat_Counter apply_error_count; PgStat_Counter sync_error_count; TimestampTz stat_reset_timestamp; } PgStat_StatSubEntry; typedef struct PgStat_StatTabEntry { PgStat_Counter numscans; TimestampTz lastscan; 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 tuples_newpage_updated; PgStat_Counter live_tuples; PgStat_Counter dead_tuples; PgStat_Counter mod_since_analyze; PgStat_Counter ins_since_vacuum; PgStat_Counter blocks_fetched; PgStat_Counter blocks_hit; TimestampTz last_vacuum_time; /* user initiated vacuum */ PgStat_Counter vacuum_count; TimestampTz last_autovacuum_time; /* autovacuum initiated */ PgStat_Counter autovacuum_count; TimestampTz last_analyze_time; /* user initiated */ PgStat_Counter analyze_count; TimestampTz last_autoanalyze_time; /* autovacuum initiated */ PgStat_Counter autoanalyze_count; } PgStat_StatTabEntry; typedef struct PgStat_WalStats { PgStat_Counter wal_records; PgStat_Counter wal_fpi; uint64 wal_bytes; PgStat_Counter wal_buffers_full; PgStat_Counter wal_write; PgStat_Counter wal_sync; PgStat_Counter wal_write_time; PgStat_Counter wal_sync_time; TimestampTz stat_reset_timestamp; } PgStat_WalStats; /* * This struct stores wal-related durations as instr_time, which makes it * cheaper and easier to accumulate them, by not requiring type * conversions. During stats flush instr_time will be converted into * microseconds. */ typedef struct PgStat_PendingWalStats { PgStat_Counter wal_buffers_full; PgStat_Counter wal_write; PgStat_Counter wal_sync; instr_time wal_write_time; instr_time wal_sync_time; } PgStat_PendingWalStats; /* * Functions in pgstat.c */ /* functions called from postmaster */ extern Size StatsShmemSize(void); extern void StatsShmemInit(void); /* Functions called during server startup / shutdown */ extern void pgstat_restore_stats(void); extern void pgstat_discard_stats(void); extern void pgstat_before_server_shutdown(int code, Datum arg); /* Functions for backend initialization */ extern void pgstat_initialize(void); /* Functions called from backends */ extern long pgstat_report_stat(bool force); extern void pgstat_force_next_flush(void); extern void pgstat_reset_counters(void); extern void pgstat_reset(PgStat_Kind kind, Oid dboid, Oid objoid); extern void pgstat_reset_of_kind(PgStat_Kind kind); /* stats accessors */ extern void pgstat_clear_snapshot(void); extern TimestampTz pgstat_get_stat_snapshot_timestamp(bool *have_snapshot); /* helpers */ extern PgStat_Kind pgstat_get_kind_from_str(char *kind_str); extern bool pgstat_have_entry(PgStat_Kind kind, Oid dboid, Oid objoid); /* * Functions in pgstat_archiver.c */ extern void pgstat_report_archiver(const char *xlog, bool failed); extern PgStat_ArchiverStats *pgstat_fetch_stat_archiver(void); /* * Functions in pgstat_bgwriter.c */ extern void pgstat_report_bgwriter(void); extern PgStat_BgWriterStats *pgstat_fetch_stat_bgwriter(void); /* * Functions in pgstat_checkpointer.c */ extern void pgstat_report_checkpointer(void); extern PgStat_CheckpointerStats *pgstat_fetch_stat_checkpointer(void); /* * Functions in pgstat_io.c */ extern bool pgstat_bktype_io_stats_valid(PgStat_BktypeIO *backend_io, BackendType bktype); extern void pgstat_count_io_op(IOObject io_object, IOContext io_context, IOOp io_op); extern void pgstat_count_io_op_n(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt); extern instr_time pgstat_prepare_io_time(bool track_io_guc); extern void pgstat_count_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op, instr_time start_time, uint32 cnt); extern PgStat_IO *pgstat_fetch_stat_io(void); extern const char *pgstat_get_io_context_name(IOContext io_context); extern const char *pgstat_get_io_object_name(IOObject io_object); extern bool pgstat_tracks_io_bktype(BackendType bktype); extern bool pgstat_tracks_io_object(BackendType bktype, IOObject io_object, IOContext io_context); extern bool pgstat_tracks_io_op(BackendType bktype, IOObject io_object, IOContext io_context, IOOp io_op); /* * Functions in pgstat_database.c */ extern void pgstat_drop_database(Oid databaseid); extern void pgstat_report_autovac(Oid dboid); 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_report_connect(Oid dboid); #define pgstat_count_buffer_read_time(n) \ (pgStatBlockReadTime += (n)) #define pgstat_count_buffer_write_time(n) \ (pgStatBlockWriteTime += (n)) #define pgstat_count_conn_active_time(n) \ (pgStatActiveTime += (n)) #define pgstat_count_conn_txn_idle_time(n) \ (pgStatTransactionIdleTime += (n)) extern PgStat_StatDBEntry *pgstat_fetch_stat_dbentry(Oid dboid); /* * Functions in pgstat_function.c */ extern void pgstat_create_function(Oid proid); extern void pgstat_drop_function(Oid proid); 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 PgStat_StatFuncEntry *pgstat_fetch_stat_funcentry(Oid func_id); extern PgStat_FunctionCounts *find_funcstat_entry(Oid func_id); /* * Functions in pgstat_relation.c */ extern void pgstat_create_relation(Relation rel); extern void pgstat_drop_relation(Relation rel); extern void pgstat_copy_relation_stats(Relation dst, Relation src); extern void pgstat_init_relation(Relation rel); extern void pgstat_assoc_relation(Relation rel); extern void pgstat_unlink_relation(Relation rel); 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); /* * If stats are enabled, but pending data hasn't been prepared yet, call * pgstat_assoc_relation() to do so. See its comment for why this is done * separately from pgstat_init_relation(). */ #define pgstat_should_count_relation(rel) \ (likely((rel)->pgstat_info != NULL) ? true : \ ((rel)->pgstat_enabled ? pgstat_assoc_relation(rel), true : false)) /* nontransactional event counts are simple enough to inline */ #define pgstat_count_heap_scan(rel) \ do { \ if (pgstat_should_count_relation(rel)) \ (rel)->pgstat_info->counts.numscans++; \ } while (0) #define pgstat_count_heap_getnext(rel) \ do { \ if (pgstat_should_count_relation(rel)) \ (rel)->pgstat_info->counts.tuples_returned++; \ } while (0) #define pgstat_count_heap_fetch(rel) \ do { \ if (pgstat_should_count_relation(rel)) \ (rel)->pgstat_info->counts.tuples_fetched++; \ } while (0) #define pgstat_count_index_scan(rel) \ do { \ if (pgstat_should_count_relation(rel)) \ (rel)->pgstat_info->counts.numscans++; \ } while (0) #define pgstat_count_index_tuples(rel, n) \ do { \ if (pgstat_should_count_relation(rel)) \ (rel)->pgstat_info->counts.tuples_returned += (n); \ } while (0) #define pgstat_count_buffer_read(rel) \ do { \ if (pgstat_should_count_relation(rel)) \ (rel)->pgstat_info->counts.blocks_fetched++; \ } while (0) #define pgstat_count_buffer_hit(rel) \ do { \ if (pgstat_should_count_relation(rel)) \ (rel)->pgstat_info->counts.blocks_hit++; \ } while (0) extern void pgstat_count_heap_insert(Relation rel, PgStat_Counter n); extern void pgstat_count_heap_update(Relation rel, bool hot, bool newpage); 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); 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 PgStat_StatTabEntry *pgstat_fetch_stat_tabentry(Oid relid); extern PgStat_StatTabEntry *pgstat_fetch_stat_tabentry_ext(bool shared, Oid reloid); extern PgStat_TableStatus *find_tabstat_entry(Oid rel_id); /* * Functions in pgstat_replslot.c */ extern void pgstat_reset_replslot(const char *name); struct ReplicationSlot; extern void pgstat_report_replslot(struct ReplicationSlot *slot, const PgStat_StatReplSlotEntry *repSlotStat); extern void pgstat_create_replslot(struct ReplicationSlot *slot); extern void pgstat_acquire_replslot(struct ReplicationSlot *slot); extern void pgstat_drop_replslot(struct ReplicationSlot *slot); extern PgStat_StatReplSlotEntry *pgstat_fetch_replslot(NameData slotname); /* * Functions in pgstat_slru.c */ extern void pgstat_reset_slru(const char *); 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_get_slru_name(int slru_idx); extern int pgstat_get_slru_index(const char *name); extern PgStat_SLRUStats *pgstat_fetch_slru(void); /* * Functions in pgstat_subscription.c */ extern void pgstat_report_subscription_error(Oid subid, bool is_apply_error); extern void pgstat_create_subscription(Oid subid); extern void pgstat_drop_subscription(Oid subid); extern PgStat_StatSubEntry *pgstat_fetch_stat_subscription(Oid subid); /* * Functions in pgstat_xact.c */ 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); struct xl_xact_stats_item; extern int pgstat_get_transactional_drops(bool isCommit, struct xl_xact_stats_item **items); extern void pgstat_execute_transactional_drops(int ndrops, struct xl_xact_stats_item *items, bool is_redo); /* * Functions in pgstat_wal.c */ extern void pgstat_report_wal(bool force); extern PgStat_WalStats *pgstat_fetch_stat_wal(void); /* * Variables in pgstat.c */ /* GUC parameters */ extern PGDLLIMPORT bool pgstat_track_counts; extern PGDLLIMPORT int pgstat_track_functions; extern PGDLLIMPORT int pgstat_fetch_consistency; /* * Variables in pgstat_bgwriter.c */ /* updated directly by bgwriter and bufmgr */ extern PGDLLIMPORT PgStat_BgWriterStats PendingBgWriterStats; /* * Variables in pgstat_checkpointer.c */ /* * Checkpointer statistics counters are updated directly by checkpointer and * bufmgr. */ extern PGDLLIMPORT PgStat_CheckpointerStats PendingCheckpointerStats; /* * Variables in pgstat_database.c */ /* Updated by pgstat_count_buffer_*_time macros */ extern PGDLLIMPORT PgStat_Counter pgStatBlockReadTime; extern PGDLLIMPORT PgStat_Counter pgStatBlockWriteTime; /* * Updated by pgstat_count_conn_*_time macros, called by * pgstat_report_activity(). */ extern PGDLLIMPORT PgStat_Counter pgStatActiveTime; extern PGDLLIMPORT PgStat_Counter pgStatTransactionIdleTime; /* updated by the traffic cop and in errfinish() */ extern PGDLLIMPORT __thread SessionEndType pgStatSessionEndCause; /* * Variables in pgstat_wal.c */ /* updated directly by backends and background processes */ extern PGDLLIMPORT PgStat_PendingWalStats PendingWalStats; #endif /* PGSTAT_H */ libpg_query-17-6.1.0/src/postgres/include/pgtime.h000066400000000000000000000054361477334012600220220ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pgtime.h * PostgreSQL internal timezone library * * Portions Copyright (c) 1996-2024, 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; /* * Data structure representing a broken-down timestamp. * * CAUTION: the IANA timezone library (src/timezone/) follows the POSIX * convention that tm_mon counts from 0 and tm_year is relative to 1900. * However, Postgres' datetime functions generally treat tm_mon as counting * from 1 and tm_year as relative to 1 BC. Be sure to make the appropriate * adjustments when moving from one code domain to the other. */ struct pg_tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; /* see above */ int tm_year; /* see above */ int tm_wday; int tm_yday; int tm_isdst; long int tm_gmtoff; const char *tm_zone; }; /* These structs are opaque outside the timezone library */ 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 maxsize, const char *format, const struct pg_tm *t); /* these functions and variables are in pgtz.c */ extern PGDLLIMPORT pg_tz *session_timezone; extern PGDLLIMPORT 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-17-6.1.0/src/postgres/include/pl_gram.h000066400000000000000000000214511477334012600221510ustar00rootroot00000000000000/* 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_MERGE = 339, K_MESSAGE = 340, K_MESSAGE_TEXT = 341, K_MOVE = 342, K_NEXT = 343, K_NO = 344, K_NOT = 345, K_NOTICE = 346, K_NULL = 347, K_OPEN = 348, K_OPTION = 349, K_OR = 350, K_PERFORM = 351, K_PG_CONTEXT = 352, K_PG_DATATYPE_NAME = 353, K_PG_EXCEPTION_CONTEXT = 354, K_PG_EXCEPTION_DETAIL = 355, K_PG_EXCEPTION_HINT = 356, K_PG_ROUTINE_OID = 357, K_PRINT_STRICT_PARAMS = 358, K_PRIOR = 359, K_QUERY = 360, K_RAISE = 361, K_RELATIVE = 362, K_RETURN = 363, K_RETURNED_SQLSTATE = 364, K_REVERSE = 365, K_ROLLBACK = 366, K_ROW_COUNT = 367, K_ROWTYPE = 368, K_SCHEMA = 369, K_SCHEMA_NAME = 370, K_SCROLL = 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_MERGE 339 #define K_MESSAGE 340 #define K_MESSAGE_TEXT 341 #define K_MOVE 342 #define K_NEXT 343 #define K_NO 344 #define K_NOT 345 #define K_NOTICE 346 #define K_NULL 347 #define K_OPEN 348 #define K_OPTION 349 #define K_OR 350 #define K_PERFORM 351 #define K_PG_CONTEXT 352 #define K_PG_DATATYPE_NAME 353 #define K_PG_EXCEPTION_CONTEXT 354 #define K_PG_EXCEPTION_DETAIL 355 #define K_PG_EXCEPTION_HINT 356 #define K_PG_ROUTINE_OID 357 #define K_PRINT_STRICT_PARAMS 358 #define K_PRIOR 359 #define K_QUERY 360 #define K_RAISE 361 #define K_RELATIVE 362 #define K_RETURN 363 #define K_RETURNED_SQLSTATE 364 #define K_REVERSE 365 #define K_ROLLBACK 366 #define K_ROW_COUNT 367 #define K_ROWTYPE 368 #define K_SCHEMA 369 #define K_SCHEMA_NAME 370 #define K_SCROLL 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 117 "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-17-6.1.0/src/postgres/include/pl_reserved_kwlist.h000066400000000000000000000030701477334012600244340ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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-17-6.1.0/src/postgres/include/pl_reserved_kwlist_d.h000066400000000000000000000040321477334012600247360ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pl_reserved_kwlist_d.h * List of keywords represented as a ScanKeywordList. * * Portions Copyright (c) 1996-2024, 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] = { 127, 7, 127, 127, -2, 127, 13, 127, 127, 5, 0, 23, 0, 2, 127, 0, 17, 0, 127, 19, 5, 127, 6, 2, -3, 17, 0, 6, 127, 8, 18, 127, -6, 3, -5, 0, 127, 0, 0, 11, 15, 127, 127, 127, 13, 127, 0, 17, 127 }; const unsigned char *k = (const unsigned char *) key; uint32 a = 0; uint32 b = 1; while (keylen--) { unsigned char c = *k++ | 0x20; a = a * 257 + c; b = b * 8191 + 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-17-6.1.0/src/postgres/include/pl_unreserved_kwlist.h000066400000000000000000000074071477334012600250070ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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("merge", K_MERGE) 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("pg_routine_oid", K_PG_ROUTINE_OID) 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("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("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-17-6.1.0/src/postgres/include/pl_unreserved_kwlist_d.h000066400000000000000000000101241477334012600253000ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pl_unreserved_kwlist_d.h * List of keywords represented as a ScanKeywordList. * * Portions Copyright (c) 1996-2024, 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" "merge\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" "pg_routine_oid\0" "print_strict_params\0" "prior\0" "query\0" "raise\0" "relative\0" "return\0" "returned_sqlstate\0" "reverse\0" "rollback\0" "row_count\0" "rowtype\0" "schema\0" "schema_name\0" "scroll\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, 310, 318, 331, 336, 341, 344, 351, 356, 363, 371, 382, 399, 420, 440, 458, 473, 493, 499, 505, 511, 520, 527, 545, 553, 562, 572, 580, 587, 599, 606, 612, 621, 629, 635, 646, 651, 662, 675, 693, }; #define UNRESERVEDPLKEYWORDS_NUM_KEYWORDS 83 static int UnreservedPLKeywords_hash_func(const void *key, size_t keylen) { static const int16 h[167] = { 0, -26, 32767, 0, 74, -36, 32767, 32767, 93, 0, 35, 14, 34, -65, -42, 78, -22, 8, 10, 0, 5, 32767, 10, 26, 32767, 4, 32767, 32767, -81, -9, -25, 32767, -17, 11, 0, -43, 11, 8, 45, 0, 32767, 32767, 32767, 12, 0, 32767, 32, 32767, 0, 32767, -18, 64, 32767, -2, 31, 32767, 50, 80, -75, 32767, 32767, 32767, 0, 32767, 32767, 0, 54, 82, 32767, 32767, 69, 60, 43, 32767, 0, 95, 21, 1, 27, 0, 120, 32767, -46, 32767, -57, 32767, 32767, 55, 70, 32767, 28, 32767, 0, -14, -38, 32767, 57, 0, 32767, 19, 98, 0, 32767, 68, 32767, 32767, 32767, 32767, -26, 13, 27, 35, 37, 32767, 49, -44, 65, -35, 0, 32767, 32767, 32767, 30, 0, 0, 32767, 26, 42, 7, 32767, 72, -43, 32767, 0, 32767, 89, 36, 48, 32767, 32, 38, 3, 32767, 49, 32767, 0, 51, 0, 32767, 73, 32767, 32767, 79, 32767, 30, 32767, 0, 0, 50, 32767, 0, 32767, 32767, 32767, 0, 32767, 32767 }; const unsigned char *k = (const unsigned char *) key; uint32 a = 0; uint32 b = 1; while (keylen--) { unsigned char c = *k++ | 0x20; a = a * 257 + c; b = b * 8191 + 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-17-6.1.0/src/postgres/include/plerrcodes.h000066400000000000000000000414261477334012600226760ustar00rootroot00000000000000/* 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 }, { "sql_json_item_cannot_be_cast_to_target_type", ERRCODE_SQL_JSON_ITEM_CANNOT_BE_CAST_TO_TARGET_TYPE }, { "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 }, { "transaction_timeout", ERRCODE_TRANSACTION_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 }, { "idle_session_timeout", ERRCODE_IDLE_SESSION_TIMEOUT }, { "system_error", ERRCODE_SYSTEM_ERROR }, { "io_error", ERRCODE_IO_ERROR }, { "undefined_file", ERRCODE_UNDEFINED_FILE }, { "duplicate_file", ERRCODE_DUPLICATE_FILE }, { "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-17-6.1.0/src/postgres/include/plpgsql.h000066400000000000000000001116651477334012600222210ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * plpgsql.h - Definitions for the PL/pgSQL * procedural language * * Portions Copyright (c) 1996-2024, 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_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_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_ROUTINE_OID, 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; /* query string, verbatim from function body */ RawParseMode parseMode; /* raw_parser() mode to use */ SPIPlanPtr plan; /* plan, or NULL if not made yet */ Bitmapset *paramnos; /* all dnos referenced by this query */ /* 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 */ /* * These fields are used to optimize assignments to expanded-datum * variables. If this expression is the source of an assignment to a * simple variable, target_param holds that variable's dno; else it's -1. * If we match a Param within expr_simple_expr to such a variable, that * Param's address is stored in expr_rw_param; then expression code * generation will allow the value for that Param to be passed read/write. */ int target_param; /* dno of assign target, or -1 if none */ Param *expr_rw_param; /* read/write Param within expr, if any */ /* * 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, and PLpgSQL_recfield. */ 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; /* * 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; /* * 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/MERGE? */ bool mod_stmt_set; /* is mod_stmt valid yet? */ 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; /* 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; /* data derived while parsing body */ unsigned int nstatements; /* counter for assigning stmtids */ bool requires_procedure_resowner; /* contains CALL or DO? */ /* 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; /* if running nonatomic procedure or DO block, resowner to use for CALL */ ResourceOwner procedure_resowner; /* lookup table to use for executing type casts */ HTAB *cast_hash; /* 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 */ PLpgSQL_variable *err_var; /* current variable, if in a DECLARE section */ 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()). * * 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 * remaining fields with pointers to some of its own functions, allowing the * plugin to invoke those functions conveniently. The exposed functions are: * plpgsql_exec_error_callback * exec_assign_expr * exec_assign_value * exec_eval_datum * exec_cast_value * (plpgsql_exec_error_callback is not actually meant to be called by the * plugin, but rather to allow it to identify PL/pgSQL error context stack * frames. The others are useful for debugger-like plugins to examine and * set variables.) */ 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); void (*assign_value) (PLpgSQL_execstate *estate, PLpgSQL_datum *target, Datum value, bool isNull, Oid valtype, int32 valtypmod); void (*eval_datum) (PLpgSQL_execstate *estate, PLpgSQL_datum *datum, Oid *typeId, int32 *typetypmod, Datum *value, bool *isnull); Datum (*cast_value) (PLpgSQL_execstate *estate, Datum value, bool *isnull, Oid valtype, int32 valtypmod, Oid reqtype, int32 reqtypmod); } 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 PGDLLEXPORT PLpgSQL_function *plpgsql_compile(FunctionCallInfo fcinfo, bool forValidator); extern PLpgSQL_function *plpgsql_compile_inline(char *proc_source); extern PGDLLEXPORT 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 PGDLLEXPORT PLpgSQL_type *plpgsql_build_datatype(Oid typeOid, int32 typmod, Oid collation, TypeName *origtypname); extern PLpgSQL_type *plpgsql_build_datatype_arrayof(PLpgSQL_type *dtype); 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 PGDLLEXPORT 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_exec.c */ extern Datum plpgsql_exec_function(PLpgSQL_function *func, FunctionCallInfo fcinfo, EState *simple_eval_estate, ResourceOwner simple_eval_resowner, ResourceOwner procedure_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 PGDLLEXPORT 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 PGDLLEXPORT 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 PGDLLEXPORT 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 int plpgsql_token_length(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-17-6.1.0/src/postgres/include/port.h000066400000000000000000000427511477334012600215220ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * port.h * Header for src/port/ compatibility functions. * * Portions Copyright (c) 1996-2024, 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 /* * 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 /* if platform lacks socklen_t, we assume this will work */ #ifndef HAVE_SOCKLEN_T typedef unsigned int socklen_t; #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 *path); 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 canonicalize_path_enc(char *path, int encoding); extern void make_native_path(char *filename); 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); #define IS_NONWINDOWS_DIR_SEP(ch) ((ch) == '/') #define is_nonwindows_absolute_path(filename) \ ( \ IS_NONWINDOWS_DIR_SEP((filename)[0]) \ ) #define IS_WINDOWS_DIR_SEP(ch) ((ch) == '/' || (ch) == '\\') /* See path_is_relative_and_below_cwd() for how we handle 'E:abc'. */ #define is_windows_absolute_path(filename) \ ( \ IS_WINDOWS_DIR_SEP((filename)[0]) || \ (isalpha((unsigned char) ((filename)[0])) && (filename)[1] == ':' && \ IS_WINDOWS_DIR_SEP((filename)[2])) \ ) /* * is_absolute_path and IS_DIR_SEP * * By using macros here we avoid needing to include path.c in libpq. */ #ifndef WIN32 #define IS_DIR_SEP(ch) IS_NONWINDOWS_DIR_SEP(ch) #define is_absolute_path(filename) is_nonwindows_absolute_path(filename) #else #define IS_DIR_SEP(ch) IS_WINDOWS_DIR_SEP(ch) #define is_absolute_path(filename) is_windows_absolute_path(filename) #endif /* * This macro provides a centralized list of all errnos that identify * hard failure of a previously-established network connection. * The macro is intended to be used in a switch statement, in the form * "case ALL_CONNECTION_FAILURE_ERRNOS:". * * Note: this groups EPIPE and ECONNRESET, which we take to indicate a * probable server crash, with other errors that indicate loss of network * connectivity without proving much about the server's state. Places that * are actually reporting errors typically single out EPIPE and ECONNRESET, * while allowing the network failures to be reported generically. */ #define ALL_CONNECTION_FAILURE_ERRNOS \ EPIPE: \ case ECONNRESET: \ case ECONNABORTED: \ case EHOSTDOWN: \ case EHOSTUNREACH: \ case ENETDOWN: \ case ENETRESET: \ case ENETUNREACH: \ case ETIMEDOUT /* 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 validate_exec(const char *path); 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); /* Doesn't belong here, but this is used with find_other_exec(), so... */ #define PG_BACKEND_VERSIONSTR "postgres (PostgreSQL) " PG_VERSION "\n" #ifdef EXEC_BACKEND /* Disable ASLR before exec, for developer builds only (in exec.c) */ extern int pg_disable_aslr(void); #endif #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) pg_attribute_printf(3, 0); 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) pg_attribute_printf(2, 0); 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) pg_attribute_printf(2, 0); extern int pg_fprintf(FILE *stream, const char *fmt,...) pg_attribute_printf(2, 3); extern int pg_vprintf(const char *fmt, va_list args) pg_attribute_printf(1, 0); extern int pg_printf(const char *fmt,...) pg_attribute_printf(1, 2); #ifndef WIN32 /* * We add a pg_ prefix as a warning that the Windows implementations have the * non-standard side-effect of changing the current file position. */ #define pg_pread pread #define pg_pwrite pwrite #endif /* * 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); 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); #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__) /* * We want the 64-bit variant of lseek(). * * For Visual Studio, this must be after to avoid messing up its * lseek() and _lseeki64() function declarations. * * For MinGW there is already a macro, so we have to undefine it (depending on * _FILE_OFFSET_BITS, it may point at its own lseek64, but we don't want to * count on that being set). */ #undef lseek #define lseek(a,b,c) _lseeki64((a),(b),(c)) /* * We want the 64-bit variant of chsize(). It sets errno and also returns it, * so convert non-zero result to -1 to match POSIX. * * Prevent MinGW from declaring functions, and undefine its macro before we * define our own. */ #ifndef _MSC_VER #define FTRUNCATE_DEFINED #include #undef ftruncate #endif #define ftruncate(a,b) (_chsize_s((a),(b)) == 0 ? 0 : -1) /* * open() and fopen() replacements to allow deletion of open files and * passing of other special options. */ #define O_DIRECT 0x80000000 extern HANDLE pgwin32_open_handle(const char *, int, bool); 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) #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 #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 #ifdef HAVE_BUGGY_STRTOF extern float pg_strtof(const char *nptr, char **endptr); #define strtof(a,b) (pg_strtof((a),(b))) #endif #ifdef WIN32 /* src/port/win32link.c */ 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 #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 /* port/user.c */ #ifndef WIN32 extern bool pg_get_user_name(uid_t user_id, char *buffer, size_t buflen); extern bool pg_get_user_home_dir(uid_t user_id, char *buffer, size_t buflen); #endif /* * Callers should use the qsort() macro defined below instead of calling * pg_qsort() directly. */ 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); extern void qsort_interruptible(void *base, size_t nel, size_t elsize, qsort_arg_comparator cmp, void *arg); extern void *bsearch_arg(const void *key, const void *base0, size_t nmemb, size_t size, int (*compar) (const void *, const void *, void *), 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 void pg_strong_random_init(void); 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 (see also interfaces/libpq/legacy-pqsignal.c) */ #ifdef FRONTEND #define pqsignal pqsignal_fe #endif typedef void (*pqsigfunc) (SIGNAL_ARGS); 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 exitstatus); 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); extern int wait_result_to_exit_code(int exit_status); /* * Interfaces that we assume all Unix system have. We retain individual macros * for better documentation. * * For symlink-related functions, there is often no need to test these macros, * because we provided basic support on Windows that can work with absolute * paths to directories. Code that wants to test for complete symlink support * (including relative paths and non-directories) should be conditional on * HAVE_READLINK or HAVE_SYMLINK. */ #ifndef WIN32 #define HAVE_GETRLIMIT 1 #define HAVE_POLL 1 #define HAVE_POLL_H 1 #define HAVE_READLINK 1 #define HAVE_SETSID 1 #define HAVE_SHM_OPEN 1 #define HAVE_SYMLINK 1 #endif #endif /* PG_PORT_H */ libpg_query-17-6.1.0/src/postgres/include/port/000077500000000000000000000000001477334012600213405ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/port/atomics.h000066400000000000000000000424071477334012600231570ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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__) #include "port/atomics/arch-arm.h" #elif defined(__i386__) || defined(__i386) || defined(__x86_64__) #include "port/atomics/arch-x86.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. */ #if defined(__GNUC__) || defined(__INTEL_COMPILER) #include "port/atomics/generic-gcc.h" #elif defined(_MSC_VER) #include "port/atomics/generic-msvc.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_read_membarrier_u32 - read with barrier semantics. * * This read is guaranteed to return the current value, provided that the value * is only ever updated via operations with barrier semantics, such as * pg_atomic_compare_exchange_u32() and pg_atomic_write_membarrier_u32(). * While this may be less performant than pg_atomic_read_u32(), it may be * easier to reason about correctness with this function in less performance- * sensitive code. * * Full barrier semantics. */ static inline uint32 pg_atomic_read_membarrier_u32(volatile pg_atomic_uint32 *ptr) { AssertPointerAlignment(ptr, 4); return pg_atomic_read_membarrier_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_write_membarrier_u32 - write with barrier semantics. * * 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 both pg_atomic_compare_exchange_u32() and * pg_atomic_read_membarrier_u32(). While this may be less performant than * pg_atomic_write_u32(), it may be easier to reason about correctness with * this function in less performance-sensitive code. * * Full barrier semantics. */ static inline void pg_atomic_write_membarrier_u32(volatile pg_atomic_uint32 *ptr, uint32 val) { AssertPointerAlignment(ptr, 4); pg_atomic_write_membarrier_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 uint64 pg_atomic_read_membarrier_u64(volatile pg_atomic_uint64 *ptr) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif return pg_atomic_read_membarrier_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 void pg_atomic_write_membarrier_u64(volatile pg_atomic_uint64 *ptr, uint64 val) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif pg_atomic_write_membarrier_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); #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_); } /* * Monotonically advance the given variable using only atomic operations until * it's at least the target value. Returns the latest value observed, which * may or may not be the target value. * * Full barrier semantics (even when value is unchanged). */ static inline uint64 pg_atomic_monotonic_advance_u64(volatile pg_atomic_uint64 *ptr, uint64 target) { uint64 currval; #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif currval = pg_atomic_read_u64_impl(ptr); if (currval >= target) { pg_memory_barrier(); return currval; } while (currval < target) { if (pg_atomic_compare_exchange_u64(ptr, &currval, target)) return target; } return currval; } #undef INSIDE_ATOMICS_H #endif /* ATOMICS_H */ libpg_query-17-6.1.0/src/postgres/include/port/atomics/000077500000000000000000000000001477334012600227775ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/port/atomics/arch-arm.h000066400000000000000000000016421477334012600246450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * arch-arm.h * Atomic operations considerations specific to ARM * * Portions Copyright (c) 2013-2024, 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__) #define PG_DISABLE_64_BIT_ATOMICS #else /* * Architecture Reference Manual for ARMv8 states aligned read/write to/from * general purpose register is atomic. */ #define PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY #endif /* __aarch64__ */ libpg_query-17-6.1.0/src/postgres/include/port/atomics/arch-hppa.h000066400000000000000000000010501477334012600250070ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * arch-hppa.h * Atomic operations considerations specific to HPPA * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES: * * src/include/port/atomics/arch-hppa.h * *------------------------------------------------------------------------- */ /* HPPA doesn't do either read or write reordering */ #define pg_memory_barrier_impl() pg_compiler_barrier_impl() libpg_query-17-6.1.0/src/postgres/include/port/atomics/arch-ppc.h000066400000000000000000000157441477334012600246600ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * arch-ppc.h * Atomic operations considerations specific to PowerPC * * Portions Copyright (c) 1996-2024, 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,1 \n" " cmpwi %0,%3 \n" " bne $+12 \n" /* branch to lwsync */ " stwcx. %4,0,%5 \n" " bne $-16 \n" /* branch to lwarx */ " lwsync \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,1 \n" " cmpw %0,%3 \n" " bne $+12 \n" /* branch to lwsync */ " stwcx. %4,0,%5 \n" " bne $-16 \n" /* branch to lwarx */ " lwsync \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,1 \n" " addi %0,%1,%3 \n" " stwcx. %0,0,%4 \n" " bne $-12 \n" /* branch to lwarx */ " lwsync \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,1 \n" " add %0,%1,%3 \n" " stwcx. %0,0,%4 \n" " bne $-12 \n" /* branch to lwarx */ " lwsync \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; AssertPointerAlignment(expected, 8); /* 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,1 \n" " cmpdi %0,%3 \n" " bne $+12 \n" /* branch to lwsync */ " stdcx. %4,0,%5 \n" " bne $-16 \n" /* branch to ldarx */ " lwsync \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,1 \n" " cmpd %0,%3 \n" " bne $+12 \n" /* branch to lwsync */ " stdcx. %4,0,%5 \n" " bne $-16 \n" /* branch to ldarx */ " lwsync \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,1 \n" " addi %0,%1,%3 \n" " stdcx. %0,0,%4 \n" " bne $-12 \n" /* branch to ldarx */ " lwsync \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,1 \n" " add %0,%1,%3 \n" " stdcx. %0,0,%4 \n" " bne $-12 \n" /* branch to ldarx */ " lwsync \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-17-6.1.0/src/postgres/include/port/atomics/arch-x86.h000066400000000000000000000163341477334012600245170ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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) { 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; AssertPointerAlignment(expected, 8); /* * 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-17-6.1.0/src/postgres/include/port/atomics/fallback.h000066400000000000000000000127511477334012600247150ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fallback.h * Fallback for platforms without spinlock and/or atomics support. Slower * than native atomics support, but not unusably slow. * * Portions Copyright (c) 1996-2024, 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 */ 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 */ 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-17-6.1.0/src/postgres/include/port/atomics/generic-gcc.h000066400000000000000000000235721477334012600253270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * generic-gcc.h * Atomic operations, implemented using gcc (or compatible) intrinsics. * * Portions Copyright (c) 1996-2024, 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 * https://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/_005f_005fsync-Builtins.html * * Built-in functions for memory model aware atomic operations * https://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 /* * __sync_lock_test_and_set() only supports setting the value to 1 on some * platforms, so we only provide an __atomic implementation for * pg_atomic_exchange. * * We assume the availability of 32-bit __atomic_compare_exchange_n() implies * the availability of 32-bit __atomic_exchange_n(). */ #if !defined(PG_HAVE_ATOMIC_EXCHANGE_U32) && defined(HAVE_GCC__ATOMIC_INT32_CAS) #define PG_HAVE_ATOMIC_EXCHANGE_U32 static inline uint32 pg_atomic_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 newval) { return __atomic_exchange_n(&ptr->value, newval, __ATOMIC_SEQ_CST); } #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) { AssertPointerAlignment(expected, 8); 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; AssertPointerAlignment(expected, 8); current = __sync_val_compare_and_swap(&ptr->value, *expected, newval); ret = current == *expected; *expected = current; return ret; } #endif /* * __sync_lock_test_and_set() only supports setting the value to 1 on some * platforms, so we only provide an __atomic implementation for * pg_atomic_exchange. * * We assume the availability of 64-bit __atomic_compare_exchange_n() implies * the availability of 64-bit __atomic_exchange_n(). */ #if !defined(PG_HAVE_ATOMIC_EXCHANGE_U64) && defined(HAVE_GCC__ATOMIC_INT64_CAS) #define PG_HAVE_ATOMIC_EXCHANGE_U64 static inline uint64 pg_atomic_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 newval) { return __atomic_exchange_n(&ptr->value, newval, __ATOMIC_SEQ_CST); } #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-17-6.1.0/src/postgres/include/port/atomics/generic-msvc.h000066400000000000000000000060661477334012600255420ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * generic-msvc.h * Atomic operations support when using MSVC * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES: * * Documentation: * * Interlocked Variable Access * http://msdn.microsoft.com/en-us/library/ms684122%28VS.85%29.aspx * * src/include/port/atomics/generic-msvc.h * *------------------------------------------------------------------------- */ #include /* intentionally no include guards, should only be included by atomics.h */ #ifndef INSIDE_ATOMICS_H #error "should be included via atomics.h" #endif #pragma intrinsic(_ReadWriteBarrier) #define pg_compiler_barrier_impl() _ReadWriteBarrier() #ifndef pg_memory_barrier_impl #define pg_memory_barrier_impl() MemoryBarrier() #endif #if defined(HAVE_ATOMICS) #define PG_HAVE_ATOMIC_U32_SUPPORT typedef struct pg_atomic_uint32 { volatile uint32 value; } pg_atomic_uint32; #define PG_HAVE_ATOMIC_U64_SUPPORT typedef struct pg_attribute_aligned(8) pg_atomic_uint64 { volatile uint64 value; } pg_atomic_uint64; #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 = InterlockedCompareExchange(&ptr->value, newval, *expected); ret = current == *expected; *expected = current; return ret; } #define PG_HAVE_ATOMIC_EXCHANGE_U32 static inline uint32 pg_atomic_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 newval) { return InterlockedExchange(&ptr->value, newval); } #define PG_HAVE_ATOMIC_FETCH_ADD_U32 static inline uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) { return InterlockedExchangeAdd(&ptr->value, add_); } /* * The non-intrinsics versions are only available in vista upwards, so use the * intrinsic version. Only supported on >486, but we require XP as a minimum * baseline, which doesn't support the 486, so we don't need to add checks for * that case. */ #pragma intrinsic(_InterlockedCompareExchange64) #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 = _InterlockedCompareExchange64(&ptr->value, newval, *expected); ret = current == *expected; *expected = current; return ret; } /* Only implemented on 64bit builds */ #ifdef _WIN64 #pragma intrinsic(_InterlockedExchange64) #define PG_HAVE_ATOMIC_EXCHANGE_U64 static inline uint64 pg_atomic_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 newval) { return _InterlockedExchange64(&ptr->value, newval); } #pragma intrinsic(_InterlockedExchangeAdd64) #define PG_HAVE_ATOMIC_FETCH_ADD_U64 static inline uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) { return _InterlockedExchangeAdd64(&ptr->value, add_); } #endif /* _WIN64 */ #endif /* HAVE_ATOMICS */ libpg_query-17-6.1.0/src/postgres/include/port/atomics/generic-sunpro.h000066400000000000000000000056711477334012600261210ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * generic-sunpro.h * Atomic operations for solaris' CC * * Portions Copyright (c) 2013-2024, PostgreSQL Global Development Group * * NOTES: * * Documentation: * * manpage for atomic_cas(3C) * http://www.unix.com/man-page/opensolaris/3c/atomic_cas/ * http://docs.oracle.com/cd/E23824_01/html/821-1465/atomic-cas-3c.html * * src/include/port/atomics/generic-sunpro.h * * ------------------------------------------------------------------------- */ #if defined(HAVE_ATOMICS) #ifdef HAVE_MBARRIER_H #include #define pg_compiler_barrier_impl() __compiler_barrier() #ifndef pg_memory_barrier_impl /* * Despite the name this is actually a full barrier. Expanding to mfence/ * membar #StoreStore | #LoadStore | #StoreLoad | #LoadLoad on x86/sparc * respectively. */ # define pg_memory_barrier_impl() __machine_rw_barrier() #endif #ifndef pg_read_barrier_impl # define pg_read_barrier_impl() __machine_r_barrier() #endif #ifndef pg_write_barrier_impl # define pg_write_barrier_impl() __machine_w_barrier() #endif #endif /* HAVE_MBARRIER_H */ /* Older versions of the compiler don't have atomic.h... */ #ifdef HAVE_ATOMIC_H #include #define PG_HAVE_ATOMIC_U32_SUPPORT typedef struct pg_atomic_uint32 { volatile uint32 value; } pg_atomic_uint32; #define PG_HAVE_ATOMIC_U64_SUPPORT typedef struct pg_atomic_uint64 { /* * Syntax to enforce variable alignment should be supported by versions * supporting atomic.h, but it's hard to find accurate documentation. If * it proves to be a problem, we'll have to add more version checks for 64 * bit support. */ volatile uint64 value pg_attribute_aligned(8); } pg_atomic_uint64; #endif /* HAVE_ATOMIC_H */ #endif /* defined(HAVE_ATOMICS) */ #if defined(HAVE_ATOMICS) #ifdef HAVE_ATOMIC_H #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 = atomic_cas_32(&ptr->value, *expected, newval); ret = current == *expected; *expected = current; return ret; } #define PG_HAVE_ATOMIC_EXCHANGE_U32 static inline uint32 pg_atomic_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 newval) { return atomic_swap_32(&ptr->value, newval); } #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; AssertPointerAlignment(expected, 8); current = atomic_cas_64(&ptr->value, *expected, newval); ret = current == *expected; *expected = current; return ret; } #define PG_HAVE_ATOMIC_EXCHANGE_U64 static inline uint64 pg_atomic_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 newval) { return atomic_swap_64(&ptr->value, newval); } #endif /* HAVE_ATOMIC_H */ #endif /* defined(HAVE_ATOMICS) */ libpg_query-17-6.1.0/src/postgres/include/port/atomics/generic.h000066400000000000000000000276671477334012600246060ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * generic.h * Implement higher level operations based on some lower level atomic * operations. * * Portions Copyright (c) 1996-2024, 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, 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_READ_MEMBARRIER_U32) && defined(PG_HAVE_ATOMIC_FETCH_ADD_U32) #define PG_HAVE_ATOMIC_READ_MEMBARRIER_U32 static inline uint32 pg_atomic_read_membarrier_u32_impl(volatile pg_atomic_uint32 *ptr) { return pg_atomic_fetch_add_u32_impl(ptr, 0); } #endif #if !defined(PG_HAVE_ATOMIC_WRITE_MEMBARRIER_U32) && defined(PG_HAVE_ATOMIC_EXCHANGE_U32) #define PG_HAVE_ATOMIC_WRITE_MEMBARRIER_U32 static inline void pg_atomic_write_membarrier_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val) { (void) pg_atomic_exchange_u32_impl(ptr, val); } #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 #if !defined(PG_HAVE_ATOMIC_READ_MEMBARRIER_U64) && defined(PG_HAVE_ATOMIC_FETCH_ADD_U64) #define PG_HAVE_ATOMIC_READ_MEMBARRIER_U64 static inline uint64 pg_atomic_read_membarrier_u64_impl(volatile pg_atomic_uint64 *ptr) { return pg_atomic_fetch_add_u64_impl(ptr, 0); } #endif #if !defined(PG_HAVE_ATOMIC_WRITE_MEMBARRIER_U64) && defined(PG_HAVE_ATOMIC_EXCHANGE_U64) #define PG_HAVE_ATOMIC_WRITE_MEMBARRIER_U64 static inline void pg_atomic_write_membarrier_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val) { (void) pg_atomic_exchange_u64_impl(ptr, val); } #endif libpg_query-17-6.1.0/src/postgres/include/port/pg_bitutils.h000066400000000000000000000233051477334012600240410ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_bitutils.h * Miscellaneous functions for bit-wise operations. * * * Copyright (c) 2019-2024, PostgreSQL Global Development Group * * src/include/port/pg_bitutils.h * *------------------------------------------------------------------------- */ #ifndef PG_BITUTILS_H #define PG_BITUTILS_H #ifdef _MSC_VER #include #define HAVE_BITSCAN_FORWARD #define HAVE_BITSCAN_REVERSE #else #if defined(HAVE__BUILTIN_CTZ) #define HAVE_BITSCAN_FORWARD #endif #if defined(HAVE__BUILTIN_CLZ) #define HAVE_BITSCAN_REVERSE #endif #endif /* _MSC_VER */ 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]; /* * 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); #elif defined(_MSC_VER) unsigned long result; bool non_zero; Assert(word != 0); non_zero = _BitScanReverse(&result, word); return (int) result; #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 /* HAVE_LONG_INT_64 */ #elif defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_ARM64)) unsigned long result; bool non_zero; Assert(word != 0); non_zero = _BitScanReverse64(&result, word); return (int) result; #else 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); #elif defined(_MSC_VER) unsigned long result; bool non_zero; Assert(word != 0); non_zero = _BitScanForward(&result, word); return (int) result; #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 /* HAVE_LONG_INT_64 */ #elif defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_ARM64)) unsigned long result; bool non_zero; Assert(word != 0); non_zero = _BitScanForward64(&result, word); return (int) result; #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_nextpower2_32 * Returns the next higher power of 2 above '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 higher power of 2 above '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_prevpower2_32 * Returns the next lower power of 2 below 'num', or 'num' if it's * already a power of 2. * * 'num' mustn't be 0. */ static inline uint32 pg_prevpower2_32(uint32 num) { return ((uint32) 1) << pg_leftmost_one_pos32(num); } /* * pg_prevpower2_64 * Returns the next lower power of 2 below 'num', or 'num' if it's * already a power of 2. * * 'num' mustn't be 0. */ static inline uint64 pg_prevpower2_64(uint64 num) { return ((uint64) 1) << pg_leftmost_one_pos64(num); } /* * 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; } /* * With MSVC on x86_64 builds, try using native popcnt instructions via the * __popcnt and __popcnt64 intrinsics. These don't work the same as GCC's * __builtin_popcount* intrinsic functions as they always emit popcnt * instructions. */ #if defined(_MSC_VER) && defined(_M_AMD64) #define HAVE_X86_64_POPCNTQ #endif /* * 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 a hand-rolled implementation. */ #ifdef HAVE_X86_64_POPCNTQ #if defined(HAVE__GET_CPUID) || defined(HAVE__CPUID) #define TRY_POPCNT_FAST 1 #endif #endif #ifdef TRY_POPCNT_FAST /* Attempt to use the POPCNT instruction, but perform a runtime check first */ extern PGDLLIMPORT int (*pg_popcount32) (uint32 word); extern PGDLLIMPORT int (*pg_popcount64) (uint64 word); extern PGDLLIMPORT uint64 (*pg_popcount_optimized) (const char *buf, int bytes); extern PGDLLIMPORT uint64 (*pg_popcount_masked_optimized) (const char *buf, int bytes, bits8 mask); /* * We can also try to use the AVX-512 popcount instruction on some systems. * The implementation of that is located in its own file because it may * require special compiler flags that we don't want to apply to any other * files. */ #ifdef USE_AVX512_POPCNT_WITH_RUNTIME_CHECK extern bool pg_popcount_avx512_available(void); extern uint64 pg_popcount_avx512(const char *buf, int bytes); extern uint64 pg_popcount_masked_avx512(const char *buf, int bytes, bits8 mask); #endif #else /* Use a portable implementation -- no need for a function pointer. */ extern int pg_popcount32(uint32 word); extern int pg_popcount64(uint64 word); extern uint64 pg_popcount_optimized(const char *buf, int bytes); extern uint64 pg_popcount_masked_optimized(const char *buf, int bytes, bits8 mask); #endif /* TRY_POPCNT_FAST */ /* * Returns the number of 1-bits in buf. * * If there aren't many bytes to process, the function call overhead of the * optimized versions isn't worth taking, so we inline a loop that consults * pg_number_of_ones in that case. If there are many bytes to process, we * accept the function call overhead because the optimized versions are likely * to be faster. */ static inline uint64 pg_popcount(const char *buf, int bytes) { /* * We set the threshold to the point at which we'll first use special * instructions in the optimized version. */ #if SIZEOF_VOID_P >= 8 int threshold = 8; #else int threshold = 4; #endif if (bytes < threshold) { uint64 popcnt = 0; while (bytes--) popcnt += pg_number_of_ones[(unsigned char) *buf++]; return popcnt; } return pg_popcount_optimized(buf, bytes); } /* * Returns the number of 1-bits in buf after applying the mask to each byte. * * Similar to pg_popcount(), we only take on the function pointer overhead when * it's likely to be faster. */ static inline uint64 pg_popcount_masked(const char *buf, int bytes, bits8 mask) { /* * We set the threshold to the point at which we'll first use special * instructions in the optimized version. */ #if SIZEOF_VOID_P >= 8 int threshold = 8; #else int threshold = 4; #endif if (bytes < threshold) { uint64 popcnt = 0; while (bytes--) popcnt += pg_number_of_ones[(unsigned char) *buf++ & mask]; return popcnt; } return pg_popcount_masked_optimized(buf, bytes, mask); } /* * Rotate the bits of "word" to the right/left by n bits. */ static inline uint32 pg_rotate_right32(uint32 word, int n) { return (word >> n) | (word << (32 - n)); } static inline uint32 pg_rotate_left32(uint32 word, int n) { return (word << n) | (word >> (32 - n)); } /* size_t variants of the above, as required */ #if SIZEOF_SIZE_T == 4 #define pg_leftmost_one_pos_size_t pg_leftmost_one_pos32 #define pg_nextpower2_size_t pg_nextpower2_32 #define pg_prevpower2_size_t pg_prevpower2_32 #else #define pg_leftmost_one_pos_size_t pg_leftmost_one_pos64 #define pg_nextpower2_size_t pg_nextpower2_64 #define pg_prevpower2_size_t pg_prevpower2_64 #endif #endif /* PG_BITUTILS_H */ libpg_query-17-6.1.0/src/postgres/include/port/pg_bswap.h000066400000000000000000000102541477334012600233150ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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-17-6.1.0/src/postgres/include/port/pg_crc32c.h000066400000000000000000000070071477334012600232620ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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_LOONGARCH_CRC32C) /* Use LoongArch CRCC instructions. */ #define COMP_CRC32C(crc, data, len) \ ((crc) = pg_comp_crc32c_loongarch((crc), (data), (len))) #define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF) extern pg_crc32c pg_comp_crc32c_loongarch(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-17-6.1.0/src/postgres/include/port/pg_iovec.h000066400000000000000000000047131477334012600233110ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_iovec.h * Header for vectored I/O functions, to use in place of . * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/pg_iovec.h * *------------------------------------------------------------------------- */ #ifndef PG_IOVEC_H #define PG_IOVEC_H #ifndef WIN32 #include #include #include #else /* POSIX requires at least 16 as a maximum iovcnt. */ #define IOV_MAX 16 /* Define our own POSIX-compatible iovec struct. */ struct iovec { void *iov_base; size_t iov_len; }; #endif /* Define a reasonable maximum that is safe to use on the stack. */ #define PG_IOV_MAX Min(IOV_MAX, 32) /* * Like preadv(), but with a prefix to remind us of a side-effect: on Windows * this changes the current file position. */ static inline ssize_t pg_preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset) { #if HAVE_DECL_PREADV /* * Avoid a small amount of argument copying overhead in the kernel if * there is only one iovec. */ if (iovcnt == 1) return pread(fd, iov[0].iov_base, iov[0].iov_len, offset); else return preadv(fd, iov, iovcnt, offset); #else ssize_t sum = 0; ssize_t part; for (int i = 0; i < iovcnt; ++i) { part = pg_pread(fd, iov[i].iov_base, iov[i].iov_len, offset); if (part < 0) { if (i == 0) return -1; else return sum; } sum += part; offset += part; if ((size_t) part < iov[i].iov_len) return sum; } return sum; #endif } /* * Like pwritev(), but with a prefix to remind us of a side-effect: on Windows * this changes the current file position. */ static inline ssize_t pg_pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset) { #if HAVE_DECL_PWRITEV /* * Avoid a small amount of argument copying overhead in the kernel if * there is only one iovec. */ if (iovcnt == 1) return pwrite(fd, iov[0].iov_base, iov[0].iov_len, offset); else return pwritev(fd, iov, iovcnt, offset); #else ssize_t sum = 0; ssize_t part; for (int i = 0; i < iovcnt; ++i) { part = pg_pwrite(fd, iov[i].iov_base, iov[i].iov_len, offset); if (part < 0) { if (i == 0) return -1; else return sum; } sum += part; offset += part; if ((size_t) part < iov[i].iov_len) return sum; } return sum; #endif } #endif /* PG_IOVEC_H */ libpg_query-17-6.1.0/src/postgres/include/port/simd.h000066400000000000000000000250441477334012600224520ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * simd.h * Support for platform-specific vector operations. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/simd.h * * NOTES * - VectorN in this file refers to a register where the element operands * are N bits wide. The vector width is platform-specific, so users that care * about that will need to inspect "sizeof(VectorN)". * *------------------------------------------------------------------------- */ #ifndef SIMD_H #define SIMD_H #if (defined(__x86_64__) || defined(_M_AMD64)) /* * SSE2 instructions are part of the spec for the 64-bit x86 ISA. We assume * that compilers targeting this architecture understand SSE2 intrinsics. * * We use emmintrin.h rather than the comprehensive header immintrin.h in * order to exclude extensions beyond SSE2. This is because MSVC, at least, * will allow the use of intrinsics that haven't been enabled at compile * time. */ #include #define USE_SSE2 typedef __m128i Vector8; typedef __m128i Vector32; #elif defined(__aarch64__) && defined(__ARM_NEON) /* * We use the Neon instructions if the compiler provides access to them (as * indicated by __ARM_NEON) and we are on aarch64. While Neon support is * technically optional for aarch64, it appears that all available 64-bit * hardware does have it. Neon exists in some 32-bit hardware too, but we * could not realistically use it there without a run-time check, which seems * not worth the trouble for now. */ #include #define USE_NEON typedef uint8x16_t Vector8; typedef uint32x4_t Vector32; #else /* * If no SIMD instructions are available, we can in some cases emulate vector * operations using bitwise operations on unsigned integers. Note that many * of the functions in this file presently do not have non-SIMD * implementations. In particular, none of the functions involving Vector32 * are implemented without SIMD since it's likely not worthwhile to represent * two 32-bit integers using a uint64. */ #define USE_NO_SIMD typedef uint64 Vector8; #endif /* load/store operations */ static inline void vector8_load(Vector8 *v, const uint8 *s); #ifndef USE_NO_SIMD static inline void vector32_load(Vector32 *v, const uint32 *s); #endif /* assignment operations */ static inline Vector8 vector8_broadcast(const uint8 c); #ifndef USE_NO_SIMD static inline Vector32 vector32_broadcast(const uint32 c); #endif /* element-wise comparisons to a scalar */ static inline bool vector8_has(const Vector8 v, const uint8 c); static inline bool vector8_has_zero(const Vector8 v); static inline bool vector8_has_le(const Vector8 v, const uint8 c); static inline bool vector8_is_highbit_set(const Vector8 v); #ifndef USE_NO_SIMD static inline bool vector32_is_highbit_set(const Vector32 v); static inline uint32 vector8_highbit_mask(const Vector8 v); #endif /* arithmetic operations */ static inline Vector8 vector8_or(const Vector8 v1, const Vector8 v2); #ifndef USE_NO_SIMD static inline Vector32 vector32_or(const Vector32 v1, const Vector32 v2); static inline Vector8 vector8_ssub(const Vector8 v1, const Vector8 v2); #endif /* * comparisons between vectors * * Note: These return a vector rather than boolean, which is why we don't * have non-SIMD implementations. */ #ifndef USE_NO_SIMD static inline Vector8 vector8_eq(const Vector8 v1, const Vector8 v2); static inline Vector8 vector8_min(const Vector8 v1, const Vector8 v2); static inline Vector32 vector32_eq(const Vector32 v1, const Vector32 v2); #endif /* * Load a chunk of memory into the given vector. */ static inline void vector8_load(Vector8 *v, const uint8 *s) { #if defined(USE_SSE2) *v = _mm_loadu_si128((const __m128i *) s); #elif defined(USE_NEON) *v = vld1q_u8(s); #else memcpy(v, s, sizeof(Vector8)); #endif } #ifndef USE_NO_SIMD static inline void vector32_load(Vector32 *v, const uint32 *s) { #ifdef USE_SSE2 *v = _mm_loadu_si128((const __m128i *) s); #elif defined(USE_NEON) *v = vld1q_u32(s); #endif } #endif /* ! USE_NO_SIMD */ /* * Create a vector with all elements set to the same value. */ static inline Vector8 vector8_broadcast(const uint8 c) { #if defined(USE_SSE2) return _mm_set1_epi8(c); #elif defined(USE_NEON) return vdupq_n_u8(c); #else return ~UINT64CONST(0) / 0xFF * c; #endif } #ifndef USE_NO_SIMD static inline Vector32 vector32_broadcast(const uint32 c) { #ifdef USE_SSE2 return _mm_set1_epi32(c); #elif defined(USE_NEON) return vdupq_n_u32(c); #endif } #endif /* ! USE_NO_SIMD */ /* * Return true if any elements in the vector are equal to the given scalar. */ static inline bool vector8_has(const Vector8 v, const uint8 c) { bool result; /* pre-compute the result for assert checking */ #ifdef USE_ASSERT_CHECKING bool assert_result = false; for (Size i = 0; i < sizeof(Vector8); i++) { if (((const uint8 *) &v)[i] == c) { assert_result = true; break; } } #endif /* USE_ASSERT_CHECKING */ #if defined(USE_NO_SIMD) /* any bytes in v equal to c will evaluate to zero via XOR */ result = vector8_has_zero(v ^ vector8_broadcast(c)); #else result = vector8_is_highbit_set(vector8_eq(v, vector8_broadcast(c))); #endif Assert(assert_result == result); return result; } /* * Convenience function equivalent to vector8_has(v, 0) */ static inline bool vector8_has_zero(const Vector8 v) { #if defined(USE_NO_SIMD) /* * We cannot call vector8_has() here, because that would lead to a * circular definition. */ return vector8_has_le(v, 0); #else return vector8_has(v, 0); #endif } /* * Return true if any elements in the vector are less than or equal to the * given scalar. */ static inline bool vector8_has_le(const Vector8 v, const uint8 c) { bool result = false; /* pre-compute the result for assert checking */ #ifdef USE_ASSERT_CHECKING bool assert_result = false; for (Size i = 0; i < sizeof(Vector8); i++) { if (((const uint8 *) &v)[i] <= c) { assert_result = true; break; } } #endif /* USE_ASSERT_CHECKING */ #if defined(USE_NO_SIMD) /* * To find bytes <= c, we can use bitwise operations to find bytes < c+1, * but it only works if c+1 <= 128 and if the highest bit in v is not set. * Adapted from * https://graphics.stanford.edu/~seander/bithacks.html#HasLessInWord */ if ((int64) v >= 0 && c < 0x80) result = (v - vector8_broadcast(c + 1)) & ~v & vector8_broadcast(0x80); else { /* one byte at a time */ for (Size i = 0; i < sizeof(Vector8); i++) { if (((const uint8 *) &v)[i] <= c) { result = true; break; } } } #else /* * Use saturating subtraction to find bytes <= c, which will present as * NUL bytes. This approach is a workaround for the lack of unsigned * comparison instructions on some architectures. */ result = vector8_has_zero(vector8_ssub(v, vector8_broadcast(c))); #endif Assert(assert_result == result); return result; } /* * Return true if the high bit of any element is set */ static inline bool vector8_is_highbit_set(const Vector8 v) { #ifdef USE_SSE2 return _mm_movemask_epi8(v) != 0; #elif defined(USE_NEON) return vmaxvq_u8(v) > 0x7F; #else return v & vector8_broadcast(0x80); #endif } /* * Exactly like vector8_is_highbit_set except for the input type, so it * looks at each byte separately. * * XXX x86 uses the same underlying type for 8-bit, 16-bit, and 32-bit * integer elements, but Arm does not, hence the need for a separate * function. We could instead adopt the behavior of Arm's vmaxvq_u32(), i.e. * check each 32-bit element, but that would require an additional mask * operation on x86. */ #ifndef USE_NO_SIMD static inline bool vector32_is_highbit_set(const Vector32 v) { #if defined(USE_NEON) return vector8_is_highbit_set((Vector8) v); #else return vector8_is_highbit_set(v); #endif } #endif /* ! USE_NO_SIMD */ /* * Return a bitmask formed from the high-bit of each element. */ #ifndef USE_NO_SIMD static inline uint32 vector8_highbit_mask(const Vector8 v) { #ifdef USE_SSE2 return (uint32) _mm_movemask_epi8(v); #elif defined(USE_NEON) /* * Note: It would be faster to use vget_lane_u64 and vshrn_n_u16, but that * returns a uint64, making it inconvenient to combine mask values from * multiple vectors. */ static const uint8 mask[16] = { 1 << 0, 1 << 1, 1 << 2, 1 << 3, 1 << 4, 1 << 5, 1 << 6, 1 << 7, 1 << 0, 1 << 1, 1 << 2, 1 << 3, 1 << 4, 1 << 5, 1 << 6, 1 << 7, }; uint8x16_t masked = vandq_u8(vld1q_u8(mask), (uint8x16_t) vshrq_n_s8((int8x16_t) v, 7)); uint8x16_t maskedhi = vextq_u8(masked, masked, 8); return (uint32) vaddvq_u16((uint16x8_t) vzip1q_u8(masked, maskedhi)); #endif } #endif /* ! USE_NO_SIMD */ /* * Return the bitwise OR of the inputs */ static inline Vector8 vector8_or(const Vector8 v1, const Vector8 v2) { #ifdef USE_SSE2 return _mm_or_si128(v1, v2); #elif defined(USE_NEON) return vorrq_u8(v1, v2); #else return v1 | v2; #endif } #ifndef USE_NO_SIMD static inline Vector32 vector32_or(const Vector32 v1, const Vector32 v2) { #ifdef USE_SSE2 return _mm_or_si128(v1, v2); #elif defined(USE_NEON) return vorrq_u32(v1, v2); #endif } #endif /* ! USE_NO_SIMD */ /* * Return the result of subtracting the respective elements of the input * vectors using saturation (i.e., if the operation would yield a value less * than zero, zero is returned instead). For more information on saturation * arithmetic, see https://en.wikipedia.org/wiki/Saturation_arithmetic */ #ifndef USE_NO_SIMD static inline Vector8 vector8_ssub(const Vector8 v1, const Vector8 v2) { #ifdef USE_SSE2 return _mm_subs_epu8(v1, v2); #elif defined(USE_NEON) return vqsubq_u8(v1, v2); #endif } #endif /* ! USE_NO_SIMD */ /* * Return a vector with all bits set in each lane where the corresponding * lanes in the inputs are equal. */ #ifndef USE_NO_SIMD static inline Vector8 vector8_eq(const Vector8 v1, const Vector8 v2) { #ifdef USE_SSE2 return _mm_cmpeq_epi8(v1, v2); #elif defined(USE_NEON) return vceqq_u8(v1, v2); #endif } #endif /* ! USE_NO_SIMD */ #ifndef USE_NO_SIMD static inline Vector32 vector32_eq(const Vector32 v1, const Vector32 v2) { #ifdef USE_SSE2 return _mm_cmpeq_epi32(v1, v2); #elif defined(USE_NEON) return vceqq_u32(v1, v2); #endif } #endif /* ! USE_NO_SIMD */ /* * Given two vectors, return a vector with the minimum element of each. */ #ifndef USE_NO_SIMD static inline Vector8 vector8_min(const Vector8 v1, const Vector8 v2) { #ifdef USE_SSE2 return _mm_min_epu8(v1, v2); #elif defined(USE_NEON) return vminq_u8(v1, v2); #endif } #endif /* ! USE_NO_SIMD */ #endif /* SIMD_H */ libpg_query-17-6.1.0/src/postgres/include/port/win32.h000066400000000000000000000032271477334012600224570ustar00rootroot00000000000000/* src/include/port/win32.h */ /* * We always rely on the WIN32 macro being set by our build system, * but _WIN32 is the compiler pre-defined macro. So make sure we define * WIN32 whenever _WIN32 is set, to facilitate standalone building. */ #if defined(_WIN32) && !defined(WIN32) #define WIN32 #endif /* * Make sure _WIN32_WINNT has the minimum required value. * Leave a higher value in place. The minimum requirement is Windows 10. */ #ifdef _WIN32_WINNT #undef _WIN32_WINNT #endif #define _WIN32_WINNT 0x0A00 /* * We need to prevent from defining a symbol conflicting with * our errcode() function. Since it's likely to get included by standard * system headers, pre-emptively include it now. */ #if defined(_MSC_VER) || defined(HAVE_CRTDEFS_H) #define errcode __msvc_errcode #include #undef errcode #endif /* * defines for dynamic linking on Win32 platform */ /* * Variables declared in the core backend and referenced by loadable * modules need to be marked "dllimport" in the core build, but * "dllexport" when the declaration is read in a loadable module. * No special markings should be used when compiling frontend code. */ #ifndef FRONTEND #ifdef BUILDING_DLL #define PGDLLIMPORT __declspec (dllexport) #else #define PGDLLIMPORT __declspec (dllimport) #endif #endif /* * Functions exported by a loadable module must be marked "dllexport". * * While mingw would otherwise fall back to * __attribute__((visibility("default"))), that appears to only work as long * as no symbols are declared with __declspec(dllexport). But we can end up * with some, e.g. plpython's Py_Init. */ #define PGDLLEXPORT __declspec (dllexport) libpg_query-17-6.1.0/src/postgres/include/port/win32/000077500000000000000000000000001477334012600223025ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/port/win32/arpa/000077500000000000000000000000001477334012600232255ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/port/win32/arpa/inet.h000066400000000000000000000001021477334012600243260ustar00rootroot00000000000000/* src/include/port/win32/arpa/inet.h */ #include libpg_query-17-6.1.0/src/postgres/include/port/win32/dlfcn.h000066400000000000000000000000451477334012600235400ustar00rootroot00000000000000/* src/include/port/win32/dlfcn.h */ libpg_query-17-6.1.0/src/postgres/include/port/win32/grp.h000066400000000000000000000000431477334012600232400ustar00rootroot00000000000000/* src/include/port/win32/grp.h */ libpg_query-17-6.1.0/src/postgres/include/port/win32/netdb.h000066400000000000000000000001601477334012600235440ustar00rootroot00000000000000/* src/include/port/win32/netdb.h */ #ifndef WIN32_NETDB_H #define WIN32_NETDB_H #include #endif libpg_query-17-6.1.0/src/postgres/include/port/win32/netinet/000077500000000000000000000000001477334012600237505ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/port/win32/netinet/in.h000066400000000000000000000001031477334012600245210ustar00rootroot00000000000000/* src/include/port/win32/netinet/in.h */ #include libpg_query-17-6.1.0/src/postgres/include/port/win32/netinet/tcp.h000066400000000000000000000002041477334012600247030ustar00rootroot00000000000000/* src/include/port/win32/netinet/tcp.h */ #ifndef WIN32_NETINET_TCP_H #define WIN32_NETINET_TCP_H #include #endif libpg_query-17-6.1.0/src/postgres/include/port/win32/pwd.h000066400000000000000000000000471477334012600232460ustar00rootroot00000000000000/* * src/include/port/win32/pwd.h */ libpg_query-17-6.1.0/src/postgres/include/port/win32/sys/000077500000000000000000000000001477334012600231205ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/port/win32/sys/resource.h000066400000000000000000000006551477334012600251260ustar00rootroot00000000000000/* * Replacement for for Windows. */ #ifndef WIN32_SYS_RESOURCE_H #define WIN32_SYS_RESOURCE_H #include /* for struct timeval */ #define RUSAGE_SELF 0 #define RUSAGE_CHILDREN (-1) struct rusage { struct timeval ru_utime; /* user time used */ struct timeval ru_stime; /* system time used */ }; extern int getrusage(int who, struct rusage *rusage); #endif /* WIN32_SYS_RESOURCE_H */ libpg_query-17-6.1.0/src/postgres/include/port/win32/sys/select.h000066400000000000000000000000561477334012600245510ustar00rootroot00000000000000/* * src/include/port/win32/sys/select.h */ libpg_query-17-6.1.0/src/postgres/include/port/win32/sys/socket.h000066400000000000000000000013521477334012600245620ustar00rootroot00000000000000/* * src/include/port/win32/sys/socket.h */ #ifndef WIN32_SYS_SOCKET_H #define WIN32_SYS_SOCKET_H /* * Unfortunately, of VC++ also defines ERROR. * To avoid the conflict, we include here and undefine ERROR * immediately. * * Note: Don't include directly. It causes compile errors. */ #include #include #include #undef ERROR #undef small /* Restore old ERROR value */ #ifdef PGERROR #define ERROR PGERROR #endif /* * We don't use the Windows gai_strerror[A] function because it is not * thread-safe. We define our own in src/port/win32gai_strerror.c. */ #undef gai_strerror extern const char *gai_strerror(int ecode); #endif /* WIN32_SYS_SOCKET_H */ libpg_query-17-6.1.0/src/postgres/include/port/win32/sys/un.h000066400000000000000000000004611477334012600237140ustar00rootroot00000000000000/* * src/include/port/win32/sys/un.h */ #ifndef WIN32_SYS_UN_H #define WIN32_SYS_UN_H /* * Windows defines this structure in , but not all tool chains have * the header yet, so we define it here for now. */ struct sockaddr_un { unsigned short sun_family; char sun_path[108]; }; #endif libpg_query-17-6.1.0/src/postgres/include/port/win32/sys/wait.h000066400000000000000000000000541477334012600242340ustar00rootroot00000000000000/* * src/include/port/win32/sys/wait.h */ libpg_query-17-6.1.0/src/postgres/include/port/win32_msvc/000077500000000000000000000000001477334012600233325ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/port/win32_msvc/dirent.h000066400000000000000000000012031477334012600247640ustar00rootroot00000000000000/* * Headers for port/dirent.c, win32 native implementation of dirent functions * * src/include/port/win32_msvc/dirent.h */ #ifndef _WIN32VC_DIRENT_H #define _WIN32VC_DIRENT_H struct dirent { long d_ino; unsigned short d_reclen; unsigned char d_type; unsigned short d_namlen; char d_name[MAX_PATH]; }; typedef struct DIR DIR; DIR *opendir(const char *); struct dirent *readdir(DIR *); int closedir(DIR *); /* File types for 'd_type'. */ #define DT_UNKNOWN 0 #define DT_FIFO 1 #define DT_CHR 2 #define DT_DIR 4 #define DT_BLK 6 #define DT_REG 8 #define DT_LNK 10 #define DT_SOCK 12 #define DT_WHT 14 #endif libpg_query-17-6.1.0/src/postgres/include/port/win32_msvc/sys/000077500000000000000000000000001477334012600241505ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/port/win32_msvc/sys/file.h000066400000000000000000000000551477334012600252400ustar00rootroot00000000000000/* src/include/port/win32_msvc/sys/file.h */ libpg_query-17-6.1.0/src/postgres/include/port/win32_msvc/sys/param.h000066400000000000000000000000561477334012600254220ustar00rootroot00000000000000/* src/include/port/win32_msvc/sys/param.h */ libpg_query-17-6.1.0/src/postgres/include/port/win32_msvc/sys/time.h000066400000000000000000000000551477334012600252570ustar00rootroot00000000000000/* src/include/port/win32_msvc/sys/time.h */ libpg_query-17-6.1.0/src/postgres/include/port/win32_msvc/unistd.h000066400000000000000000000003601477334012600250100ustar00rootroot00000000000000/* src/include/port/win32_msvc/unistd.h */ /* * MSVC does not define these, nor does _fileno(stdin) etc reliably work * (returns -1 if stdin/out/err are closed). */ #define STDIN_FILENO 0 #define STDOUT_FILENO 1 #define STDERR_FILENO 2 libpg_query-17-6.1.0/src/postgres/include/port/win32_msvc/utime.h000066400000000000000000000001421477334012600246230ustar00rootroot00000000000000/* src/include/port/win32_msvc/utime.h */ #include /* for non-unicode version */ libpg_query-17-6.1.0/src/postgres/include/port/win32_port.h000066400000000000000000000412671477334012600235310ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * win32_port.h * Windows-specific compatibility stuff. * * Note this is read in MinGW as well as native Windows builds, * but not in Cygwin builds. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/win32_port.h * *------------------------------------------------------------------------- */ #ifndef PG_WIN32_PORT_H #define PG_WIN32_PORT_H /* * Always build with SSPI support. Keep it as a #define in case * we want a switch to disable it sometime in the future. */ #define ENABLE_SSPI 1 /* undefine and redefine after #include */ #undef mkdir #undef ERROR /* * VS2013 and later issue warnings about using the old Winsock API, * which we don't really want to hear about. */ #ifdef _MSC_VER #define _WINSOCK_DEPRECATED_NO_WARNINGS #endif /* * The MinGW64 headers choke if this is already defined - they * define it themselves. */ #if !defined(__MINGW64_VERSION_MAJOR) || defined(_MSC_VER) #define _WINSOCKAPI_ #endif /* * windows.h includes a lot of other headers, slowing down compilation * significantly. WIN32_LEAN_AND_MEAN reduces that a bit. It'd be better to * remove the include of windows.h (as well as indirect inclusions of it) from * such a central place, but until then... * * To be able to include ntstatus.h tell windows.h to not declare NTSTATUS by * temporarily defining UMDF_USING_NTSTATUS, otherwise we'll get warning about * macro redefinitions, as windows.h also defines NTSTATUS (yuck). That in * turn requires including ntstatus.h, winternl.h to get common symbols. */ #define WIN32_LEAN_AND_MEAN #define UMDF_USING_NTSTATUS #include #include #include #include #include #undef small #include #include #include #undef near /* needed before sys/stat hacking below: */ #define fstat microsoft_native_fstat #define stat microsoft_native_stat #include #undef fstat #undef stat /* Must be here to avoid conflicting with prototype in windows.h */ #define mkdir(a,b) mkdir(a) /* Windows doesn't have fsync() as such, use _commit() */ #define fsync(fd) _commit(fd) #define USES_WINSOCK /* * IPC defines */ #undef HAVE_UNION_SEMUN #define HAVE_UNION_SEMUN 1 #define IPC_RMID 256 #define IPC_CREAT 512 #define IPC_EXCL 1024 #define IPC_PRIVATE 234564 #define IPC_NOWAIT 2048 #define IPC_STAT 4096 #define EACCESS 2048 #ifndef EIDRM #define EIDRM 4096 #endif #define SETALL 8192 #define GETNCNT 16384 #define GETVAL 65536 #define SETVAL 131072 #define GETPID 262144 /* * Signal stuff * * For WIN32, there is no wait() call so there are no wait() macros * to interpret the return value of system(). Instead, system() * return values < 0x100 are used for exit() termination, and higher * values are used to indicate non-exit() termination, which is * similar to a unix-style signal exit (think SIGSEGV == * STATUS_ACCESS_VIOLATION). Return values are broken up into groups: * * https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/using-ntstatus-values * * NT_SUCCESS 0 - 0x3FFFFFFF * NT_INFORMATION 0x40000000 - 0x7FFFFFFF * NT_WARNING 0x80000000 - 0xBFFFFFFF * NT_ERROR 0xC0000000 - 0xFFFFFFFF * * Effectively, we don't care on the severity of the return value from * system(), we just need to know if it was because of exit() or generated * by the system, and it seems values >= 0x100 are system-generated. * See this URL for a list of WIN32 STATUS_* values: * * Wine (URL used in our error messages) - * http://source.winehq.org/source/include/ntstatus.h * Descriptions - * https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/596a1078-e883-4972-9bbc-49e60bebca55 * * The comprehensive exception list is included in ntstatus.h from the * Windows Driver Kit (WDK). A subset of the list is also included in * winnt.h from the Windows SDK. Defining WIN32_NO_STATUS before including * windows.h helps to avoid any conflicts. * * Some day we might want to print descriptions for the most common * exceptions, rather than printing an include file name. We could use * RtlNtStatusToDosError() and pass to FormatMessage(), which can print * the text of error values, but MinGW does not support * RtlNtStatusToDosError(). */ #define WIFEXITED(w) (((w) & 0XFFFFFF00) == 0) #define WIFSIGNALED(w) (!WIFEXITED(w)) #define WEXITSTATUS(w) (w) #define WTERMSIG(w) (w) #define sigmask(sig) ( 1 << ((sig)-1) ) /* Signal function return values */ #undef SIG_DFL #undef SIG_ERR #undef SIG_IGN #define SIG_DFL ((pqsigfunc)0) #define SIG_ERR ((pqsigfunc)-1) #define SIG_IGN ((pqsigfunc)1) /* Some extra signals */ #define SIGHUP 1 #define SIGQUIT 3 #define SIGTRAP 5 #define SIGABRT 22 /* Set to match W32 value -- not UNIX value */ #define SIGKILL 9 #define SIGPIPE 13 #define SIGALRM 14 #define SIGSTOP 17 #define SIGTSTP 18 #define SIGCONT 19 #define SIGCHLD 20 #define SIGWINCH 28 #define SIGUSR1 30 #define SIGUSR2 31 /* MinGW has gettimeofday(), but MSVC doesn't */ #ifdef _MSC_VER /* Last parameter not used */ extern int gettimeofday(struct timeval *tp, void *tzp); #endif /* for setitimer in backend/port/win32/timer.c */ #define ITIMER_REAL 0 struct itimerval { struct timeval it_interval; struct timeval it_value; }; int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue); /* Convenience wrapper for GetFileType() */ extern DWORD pgwin32_get_file_type(HANDLE hFile); /* * WIN32 does not provide 64-bit off_t, but does provide the functions operating * with 64-bit offsets. Also, fseek() might not give an error for unseekable * streams, so harden that function with our version. */ #define pgoff_t __int64 #ifdef _MSC_VER extern int _pgfseeko64(FILE *stream, pgoff_t offset, int origin); extern pgoff_t _pgftello64(FILE *stream); #define fseeko(stream, offset, origin) _pgfseeko64(stream, offset, origin) #define ftello(stream) _pgftello64(stream) #else #ifndef fseeko #define fseeko(stream, offset, origin) fseeko64(stream, offset, origin) #endif #ifndef ftello #define ftello(stream) ftello64(stream) #endif #endif /* * 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. */ extern int pgsymlink(const char *oldpath, const char *newpath); extern int pgreadlink(const char *path, char *buf, size_t size); #define symlink(oldpath, newpath) pgsymlink(oldpath, newpath) #define readlink(path, buf, size) pgreadlink(path, buf, size) /* * Supplement to . * * Perl already has typedefs for uid_t and gid_t. */ #ifndef PLPERL_HAVE_UID_GID typedef int uid_t; typedef int gid_t; #endif typedef long key_t; #ifdef _MSC_VER typedef int pid_t; #endif /* * Supplement to . * * We must pull in sys/stat.h before this part, else our overrides lose. * * stat() is not guaranteed to set the st_size field on win32, so we * redefine it to our own implementation. See src/port/win32stat.c. * * The struct stat is 32 bit in MSVC, so we redefine it as a copy of * struct __stat64. This also fixes the struct size for MINGW builds. */ struct stat /* This should match struct __stat64 */ { _dev_t st_dev; _ino_t st_ino; unsigned short st_mode; short st_nlink; short st_uid; short st_gid; _dev_t st_rdev; __int64 st_size; __time64_t st_atime; __time64_t st_mtime; __time64_t st_ctime; }; extern int _pgfstat64(int fileno, struct stat *buf); extern int _pgstat64(const char *name, struct stat *buf); extern int _pglstat64(const char *name, struct stat *buf); #define fstat(fileno, sb) _pgfstat64(fileno, sb) #define stat(path, sb) _pgstat64(path, sb) #define lstat(path, sb) _pglstat64(path, sb) /* These macros are not provided by older MinGW, nor by MSVC */ #ifndef S_IRUSR #define S_IRUSR _S_IREAD #endif #ifndef S_IWUSR #define S_IWUSR _S_IWRITE #endif #ifndef S_IXUSR #define S_IXUSR _S_IEXEC #endif #ifndef S_IRWXU #define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) #endif #ifndef S_IRGRP #define S_IRGRP 0 #endif #ifndef S_IWGRP #define S_IWGRP 0 #endif #ifndef S_IXGRP #define S_IXGRP 0 #endif #ifndef S_IRWXG #define S_IRWXG 0 #endif #ifndef S_IROTH #define S_IROTH 0 #endif #ifndef S_IWOTH #define S_IWOTH 0 #endif #ifndef S_IXOTH #define S_IXOTH 0 #endif #ifndef S_IRWXO #define S_IRWXO 0 #endif #ifndef S_ISDIR #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) #endif #ifndef S_ISREG #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) #endif /* * In order for lstat() to be able to report junction points as symlinks, we * need to hijack a bit in st_mode, since neither MSVC nor MinGW provides * S_ISLNK and there aren't any spare bits. We'll steal the one for character * devices, because we don't otherwise make use of those. */ #ifdef S_ISLNK #error "S_ISLNK is already defined" #endif #ifdef S_IFLNK #error "S_IFLNK is already defined" #endif #define S_IFLNK S_IFCHR #define S_ISLNK(m) (((m) & S_IFLNK) == S_IFLNK) /* * Supplement to . * This is the same value as _O_NOINHERIT in the MS header file. This is * to ensure that we don't collide with a future definition. It means * we cannot use _O_NOINHERIT ourselves. */ #define O_DSYNC 0x0080 /* * Our open() replacement does not create inheritable handles, so it is safe to * ignore O_CLOEXEC. (If we were using Windows' own open(), it might be * necessary to convert this to _O_NOINHERIT.) */ #define O_CLOEXEC 0 /* * Supplement to . * * We redefine network-related Berkeley error symbols as the corresponding WSA * constants. This allows strerror.c to recognize them as being in the Winsock * error code range and pass them off to win32_socket_strerror(), since * Windows' version of plain strerror() won't cope. Note that this will break * if these names are used for anything else besides Windows Sockets errors. * See TranslateSocketError() when changing this list. */ #undef EAGAIN #define EAGAIN WSAEWOULDBLOCK #undef EINTR #define EINTR WSAEINTR #undef EMSGSIZE #define EMSGSIZE WSAEMSGSIZE #undef EAFNOSUPPORT #define EAFNOSUPPORT WSAEAFNOSUPPORT #undef EWOULDBLOCK #define EWOULDBLOCK WSAEWOULDBLOCK #undef ECONNABORTED #define ECONNABORTED WSAECONNABORTED #undef ECONNRESET #define ECONNRESET WSAECONNRESET #undef EINPROGRESS #define EINPROGRESS WSAEINPROGRESS #undef EISCONN #define EISCONN WSAEISCONN #undef ENOBUFS #define ENOBUFS WSAENOBUFS #undef EPROTONOSUPPORT #define EPROTONOSUPPORT WSAEPROTONOSUPPORT #undef ECONNREFUSED #define ECONNREFUSED WSAECONNREFUSED #undef ENOTSOCK #define ENOTSOCK WSAENOTSOCK #undef EOPNOTSUPP #define EOPNOTSUPP WSAEOPNOTSUPP #undef EADDRINUSE #define EADDRINUSE WSAEADDRINUSE #undef EADDRNOTAVAIL #define EADDRNOTAVAIL WSAEADDRNOTAVAIL #undef EHOSTDOWN #define EHOSTDOWN WSAEHOSTDOWN #undef EHOSTUNREACH #define EHOSTUNREACH WSAEHOSTUNREACH #undef ENETDOWN #define ENETDOWN WSAENETDOWN #undef ENETRESET #define ENETRESET WSAENETRESET #undef ENETUNREACH #define ENETUNREACH WSAENETUNREACH #undef ENOTCONN #define ENOTCONN WSAENOTCONN #undef ETIMEDOUT #define ETIMEDOUT WSAETIMEDOUT /* * Locale stuff. * * Extended locale functions with gratuitous underscore prefixes. * (These APIs are nevertheless fully documented by Microsoft.) */ #define locale_t _locale_t #define tolower_l _tolower_l #define toupper_l _toupper_l #define towlower_l _towlower_l #define towupper_l _towupper_l #define isdigit_l _isdigit_l #define iswdigit_l _iswdigit_l #define isalpha_l _isalpha_l #define iswalpha_l _iswalpha_l #define isalnum_l _isalnum_l #define iswalnum_l _iswalnum_l #define isupper_l _isupper_l #define iswupper_l _iswupper_l #define islower_l _islower_l #define iswlower_l _iswlower_l #define isgraph_l _isgraph_l #define iswgraph_l _iswgraph_l #define isprint_l _isprint_l #define iswprint_l _iswprint_l #define ispunct_l _ispunct_l #define iswpunct_l _iswpunct_l #define isspace_l _isspace_l #define iswspace_l _iswspace_l #define strcoll_l _strcoll_l #define strxfrm_l _strxfrm_l #define wcscoll_l _wcscoll_l /* * Versions of libintl >= 0.18? try to replace setlocale() with a macro * to their own versions. Remove the macro, if it exists, because it * ends up calling the wrong version when the backend and libintl use * different versions of msvcrt. */ #if defined(setlocale) #undef setlocale #endif /* * Define our own wrapper macro around setlocale() to work around bugs in * Windows' native setlocale() function. */ extern char *pgwin32_setlocale(int category, const char *locale); #define setlocale(a,b) pgwin32_setlocale(a,b) /* In backend/port/win32/signal.c */ extern PGDLLIMPORT __thread volatile int pg_signal_queue; extern PGDLLIMPORT __thread int pg_signal_mask; extern PGDLLIMPORT HANDLE pgwin32_signal_event; extern PGDLLIMPORT HANDLE pgwin32_initial_signal_pipe; #define UNBLOCKED_SIGNAL_QUEUE() (pg_signal_queue & ~pg_signal_mask) #define PG_SIGNAL_COUNT 32 extern void pgwin32_signal_initialize(void); extern HANDLE pgwin32_create_signal_listener(pid_t pid); extern void pgwin32_dispatch_queued_signals(void); extern void pg_queue_signal(int signum); /* In src/port/kill.c */ #define kill(pid,sig) pgkill(pid,sig) extern int pgkill(int pid, int sig); /* In backend/port/win32/socket.c */ #ifndef FRONTEND #define socket(af, type, protocol) pgwin32_socket(af, type, protocol) #define bind(s, addr, addrlen) pgwin32_bind(s, addr, addrlen) #define listen(s, backlog) pgwin32_listen(s, backlog) #define accept(s, addr, addrlen) pgwin32_accept(s, addr, addrlen) #define connect(s, name, namelen) pgwin32_connect(s, name, namelen) #define select(n, r, w, e, timeout) pgwin32_select(n, r, w, e, timeout) #define recv(s, buf, len, flags) pgwin32_recv(s, buf, len, flags) #define send(s, buf, len, flags) pgwin32_send(s, buf, len, flags) extern SOCKET pgwin32_socket(int af, int type, int protocol); extern int pgwin32_bind(SOCKET s, struct sockaddr *addr, int addrlen); extern int pgwin32_listen(SOCKET s, int backlog); extern SOCKET pgwin32_accept(SOCKET s, struct sockaddr *addr, int *addrlen); extern int pgwin32_connect(SOCKET s, const struct sockaddr *name, int namelen); extern int pgwin32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout); extern int pgwin32_recv(SOCKET s, char *buf, int len, int flags); extern int pgwin32_send(SOCKET s, const void *buf, int len, int flags); extern int pgwin32_waitforsinglesocket(SOCKET s, int what, int timeout); extern PGDLLIMPORT int pgwin32_noblock; #endif /* FRONTEND */ /* in backend/port/win32_shmem.c */ extern int pgwin32_ReserveSharedMemoryRegion(HANDLE); /* in backend/port/win32/crashdump.c */ extern void pgwin32_install_crashdump_handler(void); /* in port/win32dlopen.c */ 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); #define RTLD_NOW 1 #define RTLD_GLOBAL 0 /* in port/win32error.c */ extern void _dosmaperr(unsigned long); /* in port/win32env.c */ extern int pgwin32_putenv(const char *); extern int pgwin32_setenv(const char *name, const char *value, int overwrite); extern int pgwin32_unsetenv(const char *name); #define putenv(x) pgwin32_putenv(x) #define setenv(x,y,z) pgwin32_setenv(x,y,z) #define unsetenv(x) pgwin32_unsetenv(x) /* in port/win32security.c */ extern int pgwin32_is_service(void); extern int pgwin32_is_admin(void); /* Windows security token manipulation (in src/common/exec.c) */ extern BOOL AddUserToTokenDacl(HANDLE hToken); /* Things that exist in MinGW headers, but need to be added to MSVC */ #ifdef _MSC_VER #ifndef _WIN64 typedef long ssize_t; #else typedef __int64 ssize_t; #endif typedef unsigned short mode_t; #define F_OK 0 #define W_OK 2 #define R_OK 4 #endif /* _MSC_VER */ #if defined(__MINGW32__) || defined(__MINGW64__) /* * Mingw claims to have a strtof, and my reading of its source code suggests * that it ought to work (and not need this hack), but the regression test * results disagree with me; whether this is a version issue or not is not * clear. However, using our wrapper (and the misrounded-input variant file, * already required for supporting ancient systems) can't make things any * worse, except for a tiny performance loss when reading zeros. * * See also cygwin.h for another instance of this. */ #define HAVE_BUGGY_STRTOF 1 #endif /* in port/win32pread.c */ extern ssize_t pg_pread(int fd, void *buf, size_t nbyte, off_t offset); /* in port/win32pwrite.c */ extern ssize_t pg_pwrite(int fd, const void *buf, size_t nbyte, off_t offset); #endif /* PG_WIN32_PORT_H */ libpg_query-17-6.1.0/src/postgres/include/portability/000077500000000000000000000000001477334012600227165ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/portability/instr_time.h000066400000000000000000000121611477334012600252450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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(), and on Windows we use * QueryPerformanceCounter(). 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) * * INSTR_TIME_GET_NANOSEC(t) convert t to uint64 (in nanoseconds) * * 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-2024, PostgreSQL Global Development Group * * src/include/portability/instr_time.h * *------------------------------------------------------------------------- */ #ifndef INSTR_TIME_H #define INSTR_TIME_H /* * We store interval times as an int64 integer on all platforms, as int64 is * cheap to add/subtract, the most common operation for instr_time. The * acquisition of time and converting to specific units of time is platform * specific. * * To avoid users of the API relying on the integer representation, we wrap * the 64bit integer in a struct. */ typedef struct instr_time { int64 ticks; /* in platforms specific unit */ } instr_time; /* helpers macros used in platform specific code below */ #define NS_PER_S INT64CONST(1000000000) #define NS_PER_MS INT64CONST(1000000) #define NS_PER_US INT64CONST(1000) #ifndef WIN32 /* 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 /* helper for INSTR_TIME_SET_CURRENT */ static inline instr_time pg_clock_gettime_ns(void) { instr_time now; struct timespec tmp; clock_gettime(PG_INSTR_CLOCK, &tmp); now.ticks = tmp.tv_sec * NS_PER_S + tmp.tv_nsec; return now; } #define INSTR_TIME_SET_CURRENT(t) \ ((t) = pg_clock_gettime_ns()) #define INSTR_TIME_GET_NANOSEC(t) \ ((int64) (t).ticks) #else /* WIN32 */ /* Use QueryPerformanceCounter() */ /* helper for INSTR_TIME_SET_CURRENT */ static inline instr_time pg_query_performance_counter(void) { instr_time now; LARGE_INTEGER tmp; QueryPerformanceCounter(&tmp); now.ticks = tmp.QuadPart; return now; } static inline double GetTimerFrequency(void) { LARGE_INTEGER f; QueryPerformanceFrequency(&f); return (double) f.QuadPart; } #define INSTR_TIME_SET_CURRENT(t) \ ((t) = pg_query_performance_counter()) #define INSTR_TIME_GET_NANOSEC(t) \ ((int64) ((t).ticks * ((double) NS_PER_S / GetTimerFrequency()))) #endif /* WIN32 */ /* * Common macros */ #define INSTR_TIME_IS_ZERO(t) ((t).ticks == 0) #define INSTR_TIME_SET_ZERO(t) ((t).ticks = 0) #define INSTR_TIME_SET_CURRENT_LAZY(t) \ (INSTR_TIME_IS_ZERO(t) ? INSTR_TIME_SET_CURRENT(t), true : false) #define INSTR_TIME_ADD(x,y) \ ((x).ticks += (y).ticks) #define INSTR_TIME_SUBTRACT(x,y) \ ((x).ticks -= (y).ticks) #define INSTR_TIME_ACCUM_DIFF(x,y,z) \ ((x).ticks += (y).ticks - (z).ticks) #define INSTR_TIME_GET_DOUBLE(t) \ ((double) INSTR_TIME_GET_NANOSEC(t) / NS_PER_S) #define INSTR_TIME_GET_MILLISEC(t) \ ((double) INSTR_TIME_GET_NANOSEC(t) / NS_PER_MS) #define INSTR_TIME_GET_MICROSEC(t) \ (INSTR_TIME_GET_NANOSEC(t) / NS_PER_US) #endif /* INSTR_TIME_H */ libpg_query-17-6.1.0/src/postgres/include/postgres.h000066400000000000000000000274311477334012600224020ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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) Datum type + support functions * 2) miscellaneous * * 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. * *---------------------------------------------------------------- */ #ifndef POSTGRES_H #define POSTGRES_H #include "c.h" #include "utils/elog.h" #include "utils/palloc.h" /* ---------------------------------------------------------------- * Section 1: Datum type + support functions * ---------------------------------------------------------------- */ /* * 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 functions below and the analogous functions 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. */ static inline bool DatumGetBool(Datum X) { return (X != 0); } /* * BoolGetDatum * Returns datum representation for a boolean. * * Note: any nonzero value will be considered true. */ static inline Datum BoolGetDatum(bool X) { return (Datum) (X ? 1 : 0); } /* * DatumGetChar * Returns character value of a datum. */ static inline char DatumGetChar(Datum X) { return (char) X; } /* * CharGetDatum * Returns datum representation for a character. */ static inline Datum CharGetDatum(char X) { return (Datum) X; } /* * Int8GetDatum * Returns datum representation for an 8-bit integer. */ static inline Datum Int8GetDatum(int8 X) { return (Datum) X; } /* * DatumGetUInt8 * Returns 8-bit unsigned integer value of a datum. */ static inline uint8 DatumGetUInt8(Datum X) { return (uint8) X; } /* * UInt8GetDatum * Returns datum representation for an 8-bit unsigned integer. */ static inline Datum UInt8GetDatum(uint8 X) { return (Datum) X; } /* * DatumGetInt16 * Returns 16-bit integer value of a datum. */ static inline int16 DatumGetInt16(Datum X) { return (int16) X; } /* * Int16GetDatum * Returns datum representation for a 16-bit integer. */ static inline Datum Int16GetDatum(int16 X) { return (Datum) X; } /* * DatumGetUInt16 * Returns 16-bit unsigned integer value of a datum. */ static inline uint16 DatumGetUInt16(Datum X) { return (uint16) X; } /* * UInt16GetDatum * Returns datum representation for a 16-bit unsigned integer. */ static inline Datum UInt16GetDatum(uint16 X) { return (Datum) X; } /* * DatumGetInt32 * Returns 32-bit integer value of a datum. */ static inline int32 DatumGetInt32(Datum X) { return (int32) X; } /* * Int32GetDatum * Returns datum representation for a 32-bit integer. */ static inline Datum Int32GetDatum(int32 X) { return (Datum) X; } /* * DatumGetUInt32 * Returns 32-bit unsigned integer value of a datum. */ static inline uint32 DatumGetUInt32(Datum X) { return (uint32) X; } /* * UInt32GetDatum * Returns datum representation for a 32-bit unsigned integer. */ static inline Datum UInt32GetDatum(uint32 X) { return (Datum) X; } /* * DatumGetObjectId * Returns object identifier value of a datum. */ static inline Oid DatumGetObjectId(Datum X) { return (Oid) X; } /* * ObjectIdGetDatum * Returns datum representation for an object identifier. */ static inline Datum ObjectIdGetDatum(Oid X) { return (Datum) X; } /* * DatumGetTransactionId * Returns transaction identifier value of a datum. */ static inline TransactionId DatumGetTransactionId(Datum X) { return (TransactionId) X; } /* * TransactionIdGetDatum * Returns datum representation for a transaction identifier. */ static inline Datum TransactionIdGetDatum(TransactionId X) { return (Datum) X; } /* * MultiXactIdGetDatum * Returns datum representation for a multixact identifier. */ static inline Datum MultiXactIdGetDatum(MultiXactId X) { return (Datum) X; } /* * DatumGetCommandId * Returns command identifier value of a datum. */ static inline CommandId DatumGetCommandId(Datum X) { return (CommandId) X; } /* * CommandIdGetDatum * Returns datum representation for a command identifier. */ static inline Datum CommandIdGetDatum(CommandId X) { return (Datum) X; } /* * DatumGetPointer * Returns pointer value of a datum. */ static inline Pointer DatumGetPointer(Datum X) { return (Pointer) X; } /* * PointerGetDatum * Returns datum representation for a pointer. */ static inline Datum PointerGetDatum(const void *X) { return (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. */ static inline char * DatumGetCString(Datum X) { return (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. */ static inline Datum CStringGetDatum(const char *X) { return PointerGetDatum(X); } /* * DatumGetName * Returns name value of a datum. */ static inline Name DatumGetName(Datum X) { return (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. */ static inline Datum NameGetDatum(const NameData *X) { return CStringGetDatum(NameStr(*X)); } /* * DatumGetInt64 * Returns 64-bit integer value of a datum. * * Note: this function hides whether int64 is pass by value or by reference. */ static inline int64 DatumGetInt64(Datum X) { #ifdef USE_FLOAT8_BYVAL return (int64) X; #else return *((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 static inline Datum Int64GetDatum(int64 X) { return (Datum) X; } #else extern Datum Int64GetDatum(int64 X); #endif /* * DatumGetUInt64 * Returns 64-bit unsigned integer value of a datum. * * Note: this function hides whether int64 is pass by value or by reference. */ static inline uint64 DatumGetUInt64(Datum X) { #ifdef USE_FLOAT8_BYVAL return (uint64) X; #else return *((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. */ static inline Datum UInt64GetDatum(uint64 X) { #ifdef USE_FLOAT8_BYVAL return (Datum) X; #else return 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 function hides whether float8 is pass by value or by reference. */ static inline float8 DatumGetFloat8(Datum X) { #ifdef USE_FLOAT8_BYVAL union { int64 value; float8 retval; } myunion; myunion.value = DatumGetInt64(X); return myunion.retval; #else return *((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 are the same as the non-Fast * functions, except for asserting that the variable is of the correct type. */ #ifdef USE_FLOAT8_BYVAL #define Int64GetDatumFast(X) \ (AssertVariableIsOfTypeMacro(X, int64), Int64GetDatum(X)) #define Float8GetDatumFast(X) \ (AssertVariableIsOfTypeMacro(X, double), Float8GetDatum(X)) #else #define Int64GetDatumFast(X) \ (AssertVariableIsOfTypeMacro(X, int64), PointerGetDatum(&(X))) #define Float8GetDatumFast(X) \ (AssertVariableIsOfTypeMacro(X, double), PointerGetDatum(&(X))) #endif /* ---------------------------------------------------------------- * Section 2: miscellaneous * ---------------------------------------------------------------- */ /* * NON_EXEC_STATIC: It's sometimes useful to define a variable or function * that is normally static but extern when using EXEC_BACKEND (see * pg_config_manual.h). There would then typically be some code in * postmaster.c that uses those extern symbols to transfer state between * processes or do whatever other things it needs to do in EXEC_BACKEND mode. */ #ifdef EXEC_BACKEND #define NON_EXEC_STATIC #else #define NON_EXEC_STATIC static #endif #endif /* POSTGRES_H */ libpg_query-17-6.1.0/src/postgres/include/postgres_ext.h000066400000000000000000000042761477334012600232640ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-17-6.1.0/src/postgres/include/postmaster/000077500000000000000000000000001477334012600225555ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/postmaster/autovacuum.h000066400000000000000000000043211477334012600251170ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * autovacuum.h * header file for integrated autovacuum daemon * * * Portions Copyright (c) 1996-2024, 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 PGDLLIMPORT bool autovacuum_start_daemon; extern PGDLLIMPORT int autovacuum_max_workers; extern PGDLLIMPORT int autovacuum_work_mem; extern PGDLLIMPORT int autovacuum_naptime; extern PGDLLIMPORT int autovacuum_vac_thresh; extern PGDLLIMPORT double autovacuum_vac_scale; extern PGDLLIMPORT int autovacuum_vac_ins_thresh; extern PGDLLIMPORT double autovacuum_vac_ins_scale; extern PGDLLIMPORT int autovacuum_anl_thresh; extern PGDLLIMPORT double autovacuum_anl_scale; extern PGDLLIMPORT int autovacuum_freeze_max_age; extern PGDLLIMPORT int autovacuum_multixact_freeze_max_age; extern PGDLLIMPORT double autovacuum_vac_cost_delay; extern PGDLLIMPORT int autovacuum_vac_cost_limit; /* autovacuum launcher PID, only valid when worker is shutting down */ extern PGDLLIMPORT int AutovacuumLauncherPid; extern PGDLLIMPORT int Log_autovacuum_min_duration; /* Status inquiry functions */ extern bool AutoVacuumingActive(void); /* called from postmaster at server startup */ extern void autovac_init(void); /* called from postmaster when a worker could not be forked */ extern void AutoVacWorkerFailed(void); extern void AutoVacLauncherMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern void AutoVacWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); 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-17-6.1.0/src/postgres/include/postmaster/bgworker.h000066400000000000000000000140761477334012600245600ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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-2024, 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. * This flag is required. */ #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[MAXPGPATH]; 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 *pidp); 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 and login check when connecting * to database */ #define BGWORKER_BYPASS_ALLOWCONN 0x0001 #define BGWORKER_BYPASS_ROLELOGINCHECK 0x0002 /* Block/unblock signals in a background worker process */ extern void BackgroundWorkerBlockSignals(void); extern void BackgroundWorkerUnblockSignals(void); #endif /* BGWORKER_H */ libpg_query-17-6.1.0/src/postgres/include/postmaster/bgworker_internals.h000066400000000000000000000041031477334012600266250ustar00rootroot00000000000000/*-------------------------------------------------------------------- * bgworker_internals.h * POSTGRES pluggable background workers internals * * Portions Copyright (c) 1996-2024, 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 PGDLLIMPORT 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); /* Entry point for background worker processes */ extern void BackgroundWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); #endif /* BGWORKER_INTERNALS_H */ libpg_query-17-6.1.0/src/postgres/include/postmaster/bgwriter.h000066400000000000000000000026531477334012600245610ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, PostgreSQL Global Development Group * * src/include/postmaster/bgwriter.h * *------------------------------------------------------------------------- */ #ifndef _BGWRITER_H #define _BGWRITER_H #include "storage/block.h" #include "storage/relfilelocator.h" #include "storage/smgr.h" #include "storage/sync.h" /* GUC options */ extern PGDLLIMPORT int BgWriterDelay; extern PGDLLIMPORT int CheckPointTimeout; extern PGDLLIMPORT int CheckPointWarning; extern PGDLLIMPORT double CheckPointCompletionTarget; extern void BackgroundWriterMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern void CheckpointerMain(char *startup_data, size_t startup_data_len) 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-17-6.1.0/src/postgres/include/postmaster/interrupt.h000066400000000000000000000017601477334012600247660ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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-17-6.1.0/src/postgres/include/postmaster/pgarch.h000066400000000000000000000022561477334012600241770ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pgarch.h * Exports from postmaster/pgarch.c. * * Portions Copyright (c) 1996-2024, 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" extern Size PgArchShmemSize(void); extern void PgArchShmemInit(void); extern bool PgArchCanRestart(void); extern void PgArchiverMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern void PgArchWakeup(void); extern void PgArchForceDirScan(void); #endif /* _PGARCH_H */ libpg_query-17-6.1.0/src/postgres/include/postmaster/postmaster.h000066400000000000000000000067261477334012600251420ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * postmaster.h * Exports from postmaster/postmaster.c. * * Portions Copyright (c) 1996-2024, 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 #include "miscadmin.h" /* GUC options */ extern PGDLLIMPORT bool EnableSSL; extern PGDLLIMPORT int SuperuserReservedConnections; extern PGDLLIMPORT int ReservedConnections; extern PGDLLIMPORT int PostPortNumber; extern PGDLLIMPORT int Unix_socket_permissions; extern PGDLLIMPORT char *Unix_socket_group; extern PGDLLIMPORT char *Unix_socket_directories; extern PGDLLIMPORT char *ListenAddresses; extern PGDLLIMPORT bool ClientAuthInProgress; extern PGDLLIMPORT int PreAuthDelay; extern PGDLLIMPORT int AuthenticationTimeout; extern PGDLLIMPORT bool Log_connections; extern PGDLLIMPORT bool log_hostname; extern PGDLLIMPORT bool enable_bonjour; extern PGDLLIMPORT char *bonjour_name; extern PGDLLIMPORT bool restart_after_crash; extern PGDLLIMPORT bool remove_temp_files_after_crash; extern PGDLLIMPORT bool send_abort_for_crash; extern PGDLLIMPORT bool send_abort_for_kill; #ifdef WIN32 extern PGDLLIMPORT HANDLE PostmasterHandle; #else extern PGDLLIMPORT 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 PGDLLIMPORT bool LoadedSSL; 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); extern void processCancelRequest(int backendPID, int32 cancelAuthCode); #ifdef EXEC_BACKEND extern Size ShmemBackendArraySize(void); extern void ShmemBackendArrayAllocation(void); #ifdef WIN32 extern void pgwin32_register_deadchild_callback(HANDLE procHandle, DWORD procId); #endif #endif /* defined in globals.c */ extern PGDLLIMPORT struct ClientSocket *MyClientSocket; /* prototypes for functions in launch_backend.c */ extern pid_t postmaster_child_launch(BackendType child_type, char *startup_data, size_t startup_data_len, struct ClientSocket *client_sock); const char *PostmasterChildName(BackendType child_type); #ifdef EXEC_BACKEND extern void SubPostmasterMain(int argc, char *argv[]) pg_attribute_noreturn(); #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 ProcNumber 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-17-6.1.0/src/postgres/include/postmaster/startup.h000066400000000000000000000024661477334012600244400ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * startup.h * Exports from postmaster/startup.c. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * * src/include/postmaster/startup.h * *------------------------------------------------------------------------- */ #ifndef _STARTUP_H #define _STARTUP_H /* * Log the startup progress message if a timer has expired. */ #define ereport_startup_progress(msg, ...) \ do { \ long secs; \ int usecs; \ if (has_startup_progress_timeout_expired(&secs, &usecs)) \ ereport(LOG, errmsg(msg, secs, (usecs / 10000), __VA_ARGS__ )); \ } while(0) extern PGDLLIMPORT int log_startup_progress_interval; extern void HandleStartupProcInterrupts(void); extern void StartupProcessMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern void PreRestoreCommand(void); extern void PostRestoreCommand(void); extern bool IsPromoteSignaled(void); extern void ResetPromoteSignaled(void); extern void enable_startup_progress_timeout(void); extern void disable_startup_progress_timeout(void); extern void begin_startup_progress_phase(void); extern void startup_progress_timeout_handler(void); extern bool has_startup_progress_timeout_expired(long *secs, int *usecs); #endif /* _STARTUP_H */ libpg_query-17-6.1.0/src/postgres/include/postmaster/syslogger.h000066400000000000000000000061521477334012600247500ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * syslogger.h * Exports from postmaster/syslogger.c. * * Copyright (c) 2004-2024, 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 */ bits8 flags; /* bitmask of PIPE_PROTO_* */ 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)) /* flag bits for PipeProtoHeader->flags */ #define PIPE_PROTO_IS_LAST 0x01 /* last chunk of message? */ /* log destinations */ #define PIPE_PROTO_DEST_STDERR 0x10 #define PIPE_PROTO_DEST_CSVLOG 0x20 #define PIPE_PROTO_DEST_JSONLOG 0x40 /* GUC options */ extern PGDLLIMPORT bool Logging_collector; extern PGDLLIMPORT int Log_RotationAge; extern PGDLLIMPORT int Log_RotationSize; extern PGDLLIMPORT char *Log_directory; extern PGDLLIMPORT char *Log_filename; extern PGDLLIMPORT bool Log_truncate_on_rotation; extern PGDLLIMPORT int Log_file_mode; #ifndef WIN32 extern PGDLLIMPORT int syslogPipe[2]; #else extern PGDLLIMPORT HANDLE syslogPipe[2]; #endif extern int SysLogger_Start(void); extern void write_syslogger_file(const char *buffer, int count, int destination); extern void SysLoggerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); 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-17-6.1.0/src/postgres/include/postmaster/walsummarizer.h000066400000000000000000000021071477334012600256300ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * walsummarizer.h * * Header file for background WAL summarization process. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/postmaster/walsummarizer.h * *------------------------------------------------------------------------- */ #ifndef WALSUMMARIZER_H #define WALSUMMARIZER_H #include "access/xlogdefs.h" extern PGDLLIMPORT bool summarize_wal; extern PGDLLIMPORT int wal_summary_keep_time; extern Size WalSummarizerShmemSize(void); extern void WalSummarizerShmemInit(void); extern void WalSummarizerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern void GetWalSummarizerState(TimeLineID *summarized_tli, XLogRecPtr *summarized_lsn, XLogRecPtr *pending_lsn, int *summarizer_pid); extern XLogRecPtr GetOldestUnsummarizedLSN(TimeLineID *tli, bool *lsn_is_exact); extern void SetWalSummarizerLatch(void); extern void WaitForWalSummarization(XLogRecPtr lsn); #endif libpg_query-17-6.1.0/src/postgres/include/postmaster/walwriter.h000066400000000000000000000012501477334012600247440ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * walwriter.h * Exports from postmaster/walwriter.c. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * * src/include/postmaster/walwriter.h * *------------------------------------------------------------------------- */ #ifndef _WALWRITER_H #define _WALWRITER_H #define DEFAULT_WAL_WRITER_FLUSH_AFTER ((1024 * 1024) / XLOG_BLCKSZ) /* GUC options */ extern PGDLLIMPORT int WalWriterDelay; extern PGDLLIMPORT int WalWriterFlushAfter; extern void WalWriterMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); #endif /* _WALWRITER_H */ libpg_query-17-6.1.0/src/postgres/include/regex/000077500000000000000000000000001477334012600214665ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/regex/regex.h000066400000000000000000000225231477334012600227550ustar00rootroot00000000000000#ifndef _PG_REGEX_H_ #define _PG_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 */ /* * This is an implementation of POSIX regex_t, so it clashes with the * system-provided header. That header might be unintentionally * included already, so we force that to happen now on all systems to show that * we can cope and that we completely replace the system regex interfaces. * * Note that we avoided using _REGEX_H_ as an include guard, as that confuses * matters on BSD family systems including macOS that use the same include * guard. */ #ifndef _WIN32 #include #endif /* Avoid redefinition errors due to the system header. */ #undef REG_UBACKREF #undef REG_ULOOKAROUND #undef REG_UBOUNDS #undef REG_UBRACES #undef REG_UBSALNUM #undef REG_UPBOTCH #undef REG_UBBS #undef REG_UNONPOSIX #undef REG_UUNSPEC #undef REG_UUNPORT #undef REG_ULOCALE #undef REG_UEMPTYMATCH #undef REG_UIMPOSSIBLE #undef REG_USHORTEST #undef REG_BASIC #undef REG_EXTENDED #undef REG_ADVF #undef REG_ADVANCED #undef REG_QUOTE #undef REG_NOSPEC #undef REG_ICASE #undef REG_NOSUB #undef REG_EXPANDED #undef REG_NLSTOP #undef REG_NLANCH #undef REG_NEWLINE #undef REG_PEND #undef REG_EXPECT #undef REG_BOSONLY #undef REG_DUMP #undef REG_FAKE #undef REG_PROGRESS #undef REG_NOTBOL #undef REG_NOTEOL #undef REG_STARTEND #undef REG_FTRACE #undef REG_MTRACE #undef REG_SMALL #undef REG_OKAY #undef REG_NOMATCH #undef REG_BADPAT #undef REG_ECOLLATE #undef REG_ECTYPE #undef REG_EESCAPE #undef REG_ESUBREG #undef REG_EBRACK #undef REG_EPAREN #undef REG_EBRACE #undef REG_BADBR #undef REG_ERANGE #undef REG_ESPACE #undef REG_BADRPT #undef REG_ASSERT #undef REG_INVARG #undef REG_MIXED #undef REG_BADOPT #undef REG_ETOOBIG #undef REG_ECOLORS #undef REG_ATOI #undef REG_ITOA #undef REG_PREFIX #undef REG_EXACT /* * 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 pg_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; /* bitmask of the following flags: */ #define REG_UBACKREF 000001 /* has back-reference (\n) */ #define REG_ULOOKAROUND 000002 /* has lookahead/lookbehind constraint */ #define REG_UBOUNDS 000004 /* has bounded quantifier ({m,n}) */ #define REG_UBRACES 000010 /* has { that doesn't begin a quantifier */ #define REG_UBSALNUM 000020 /* has backslash-alphanumeric in non-ARE */ #define REG_UPBOTCH 000040 /* has unmatched right paren in ERE (legal * per spec, but that was a mistake) */ #define REG_UBBS 000100 /* has backslash within bracket expr */ #define REG_UNONPOSIX 000200 /* has any construct that extends POSIX */ #define REG_UUNSPEC 000400 /* has any case disallowed by POSIX, e.g. * an empty branch */ #define REG_UUNPORT 001000 /* has numeric character code dependency */ #define REG_ULOCALE 002000 /* has locale dependency */ #define REG_UEMPTYMATCH 004000 /* can match a zero-length string */ #define REG_UIMPOSSIBLE 010000 /* provably cannot match anything */ #define REG_USHORTEST 020000 /* has non-greedy quantifier */ 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; } pg_regex_t; /* result reporting (may acquire more fields later) */ typedef struct { pg_regoff_t rm_so; /* start of substring */ pg_regoff_t rm_eo; /* end of substring */ } pg_regmatch_t; /* supplementary control and reporting */ typedef struct { pg_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 /* caller doesn't need subexpr match data */ #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 */ /* 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 */ /* Redirect the standard typenames to our typenames. */ #define regoff_t pg_regoff_t #define regex_t pg_regex_t #define regmatch_t pg_regmatch_t /* * the prototypes for exported functions */ /* regcomp.c */ extern int pg_regcomp(regex_t *re, const pg_wchar *string, size_t len, int flags, Oid collation); extern int pg_regexec(regex_t *re, const pg_wchar *string, size_t len, size_t search_start, rm_detail_t *details, size_t nmatch, regmatch_t pmatch[], int flags); extern int pg_regprefix(regex_t *re, pg_wchar **string, size_t *slength); extern void pg_regfree(regex_t *re); extern size_t pg_regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size); /* 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 /* _PG_REGEX_H_ */ libpg_query-17-6.1.0/src/postgres/include/replication/000077500000000000000000000000001477334012600226655ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/replication/logicallauncher.h000066400000000000000000000020301477334012600261650ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * logicallauncher.h * Exports for logical replication launcher. * * Portions Copyright (c) 2016-2024, PostgreSQL Global Development Group * * src/include/replication/logicallauncher.h * *------------------------------------------------------------------------- */ #ifndef LOGICALLAUNCHER_H #define LOGICALLAUNCHER_H extern PGDLLIMPORT int max_logical_replication_workers; extern PGDLLIMPORT int max_sync_workers_per_subscription; extern PGDLLIMPORT int max_parallel_apply_workers_per_subscription; extern void ApplyLauncherRegister(void); extern void ApplyLauncherMain(Datum main_arg); extern Size ApplyLauncherShmemSize(void); extern void ApplyLauncherShmemInit(void); extern void ApplyLauncherForgetWorkerStartTime(Oid subid); extern void ApplyLauncherWakeupAtCommit(void); extern void AtEOXact_ApplyLauncher(bool isCommit); extern bool IsLogicalLauncher(void); extern pid_t GetLeaderApplyWorkerPid(pid_t pid); #endif /* LOGICALLAUNCHER_H */ libpg_query-17-6.1.0/src/postgres/include/replication/logicalproto.h000066400000000000000000000237731477334012600255500ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * logicalproto.h * logical replication protocol * * Copyright (c) 2015-2024, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/replication/logicalproto.h * *------------------------------------------------------------------------- */ #ifndef LOGICAL_PROTO_H #define LOGICAL_PROTO_H #include "access/xact.h" #include "executor/tuptable.h" #include "replication/reorderbuffer.h" #include "utils/rel.h" /* * Protocol capabilities * * LOGICALREP_PROTO_VERSION_NUM is our native protocol. * LOGICALREP_PROTO_MAX_VERSION_NUM is 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. * * LOGICALREP_PROTO_STREAM_VERSION_NUM is the minimum protocol version with * support for streaming large transactions. Introduced in PG14. * * LOGICALREP_PROTO_TWOPHASE_VERSION_NUM is the minimum protocol version with * support for two-phase commit decoding (at prepare time). Introduced in PG15. * * LOGICALREP_PROTO_STREAM_PARALLEL_VERSION_NUM is the minimum protocol version * where we support applying large streaming transactions in parallel. * Introduced in PG16. */ #define LOGICALREP_PROTO_MIN_VERSION_NUM 1 #define LOGICALREP_PROTO_VERSION_NUM 1 #define LOGICALREP_PROTO_STREAM_VERSION_NUM 2 #define LOGICALREP_PROTO_TWOPHASE_VERSION_NUM 3 #define LOGICALREP_PROTO_STREAM_PARALLEL_VERSION_NUM 4 #define LOGICALREP_PROTO_MAX_VERSION_NUM LOGICALREP_PROTO_STREAM_PARALLEL_VERSION_NUM /* * Logical message types * * Used by logical replication wire protocol. * * Note: though this is an enum, the values are used to identify message types * in logical replication protocol, which uses a single byte to identify a * message type. Hence the values should be single-byte wide and preferably * human-readable characters. */ typedef enum LogicalRepMsgType { LOGICAL_REP_MSG_BEGIN = 'B', LOGICAL_REP_MSG_COMMIT = 'C', LOGICAL_REP_MSG_ORIGIN = 'O', LOGICAL_REP_MSG_INSERT = 'I', LOGICAL_REP_MSG_UPDATE = 'U', LOGICAL_REP_MSG_DELETE = 'D', LOGICAL_REP_MSG_TRUNCATE = 'T', LOGICAL_REP_MSG_RELATION = 'R', LOGICAL_REP_MSG_TYPE = 'Y', LOGICAL_REP_MSG_MESSAGE = 'M', LOGICAL_REP_MSG_BEGIN_PREPARE = 'b', LOGICAL_REP_MSG_PREPARE = 'P', LOGICAL_REP_MSG_COMMIT_PREPARED = 'K', LOGICAL_REP_MSG_ROLLBACK_PREPARED = 'r', LOGICAL_REP_MSG_STREAM_START = 'S', LOGICAL_REP_MSG_STREAM_STOP = 'E', LOGICAL_REP_MSG_STREAM_COMMIT = 'c', LOGICAL_REP_MSG_STREAM_ABORT = 'A', LOGICAL_REP_MSG_STREAM_PREPARE = 'p', } LogicalRepMsgType; /* * This struct stores a tuple received via logical replication. * Keep in mind that the columns correspond to the *remote* table. */ typedef struct LogicalRepTupleData { /* Array of StringInfos, one per column; some may be unused */ StringInfoData *colvalues; /* Array of markers for null/unchanged/text/binary, one per column */ char *colstatus; /* Length of above arrays */ int ncols; } LogicalRepTupleData; /* Possible values for LogicalRepTupleData.colstatus[colnum] */ /* These values are also used in the on-the-wire protocol */ #define LOGICALREP_COLUMN_NULL 'n' #define LOGICALREP_COLUMN_UNCHANGED 'u' #define LOGICALREP_COLUMN_TEXT 't' #define LOGICALREP_COLUMN_BINARY 'b' /* added in PG14 */ 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; /* * Prepared transaction protocol information for begin_prepare, and prepare. */ typedef struct LogicalRepPreparedTxnData { XLogRecPtr prepare_lsn; XLogRecPtr end_lsn; TimestampTz prepare_time; TransactionId xid; char gid[GIDSIZE]; } LogicalRepPreparedTxnData; /* * Prepared transaction protocol information for commit prepared. */ typedef struct LogicalRepCommitPreparedTxnData { XLogRecPtr commit_lsn; XLogRecPtr end_lsn; TimestampTz commit_time; TransactionId xid; char gid[GIDSIZE]; } LogicalRepCommitPreparedTxnData; /* * Rollback Prepared transaction protocol information. The prepare information * prepare_end_lsn and prepare_time are used to check if the downstream has * received this prepared transaction in which case it can apply the rollback, * otherwise, it can skip the rollback operation. The gid alone is not * sufficient because the downstream node can have a prepared transaction with * same identifier. */ typedef struct LogicalRepRollbackPreparedTxnData { XLogRecPtr prepare_end_lsn; XLogRecPtr rollback_end_lsn; TimestampTz prepare_time; TimestampTz rollback_time; TransactionId xid; char gid[GIDSIZE]; } LogicalRepRollbackPreparedTxnData; /* * Transaction protocol information for stream abort. */ typedef struct LogicalRepStreamAbortData { TransactionId xid; TransactionId subxid; XLogRecPtr abort_lsn; TimestampTz abort_time; } LogicalRepStreamAbortData; 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_begin_prepare(StringInfo out, ReorderBufferTXN *txn); extern void logicalrep_read_begin_prepare(StringInfo in, LogicalRepPreparedTxnData *begin_data); extern void logicalrep_write_prepare(StringInfo out, ReorderBufferTXN *txn, XLogRecPtr prepare_lsn); extern void logicalrep_read_prepare(StringInfo in, LogicalRepPreparedTxnData *prepare_data); extern void logicalrep_write_commit_prepared(StringInfo out, ReorderBufferTXN *txn, XLogRecPtr commit_lsn); extern void logicalrep_read_commit_prepared(StringInfo in, LogicalRepCommitPreparedTxnData *prepare_data); extern void logicalrep_write_rollback_prepared(StringInfo out, ReorderBufferTXN *txn, XLogRecPtr prepare_end_lsn, TimestampTz prepare_time); extern void logicalrep_read_rollback_prepared(StringInfo in, LogicalRepRollbackPreparedTxnData *rollback_data); extern void logicalrep_write_stream_prepare(StringInfo out, ReorderBufferTXN *txn, XLogRecPtr prepare_lsn); extern void logicalrep_read_stream_prepare(StringInfo in, LogicalRepPreparedTxnData *prepare_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, TransactionId xid, Relation rel, TupleTableSlot *newslot, bool binary, Bitmapset *columns); extern LogicalRepRelId logicalrep_read_insert(StringInfo in, LogicalRepTupleData *newtup); extern void logicalrep_write_update(StringInfo out, TransactionId xid, Relation rel, TupleTableSlot *oldslot, TupleTableSlot *newslot, bool binary, Bitmapset *columns); extern LogicalRepRelId logicalrep_read_update(StringInfo in, bool *has_oldtuple, LogicalRepTupleData *oldtup, LogicalRepTupleData *newtup); extern void logicalrep_write_delete(StringInfo out, TransactionId xid, Relation rel, TupleTableSlot *oldslot, bool binary, Bitmapset *columns); extern LogicalRepRelId logicalrep_read_delete(StringInfo in, LogicalRepTupleData *oldtup); extern void logicalrep_write_truncate(StringInfo out, TransactionId xid, 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_message(StringInfo out, TransactionId xid, XLogRecPtr lsn, bool transactional, const char *prefix, Size sz, const char *message); extern void logicalrep_write_rel(StringInfo out, TransactionId xid, Relation rel, Bitmapset *columns); extern LogicalRepRelation *logicalrep_read_rel(StringInfo in); extern void logicalrep_write_typ(StringInfo out, TransactionId xid, Oid typoid); extern void logicalrep_read_typ(StringInfo in, LogicalRepTyp *ltyp); extern void logicalrep_write_stream_start(StringInfo out, TransactionId xid, bool first_segment); extern TransactionId logicalrep_read_stream_start(StringInfo in, bool *first_segment); extern void logicalrep_write_stream_stop(StringInfo out); extern void logicalrep_write_stream_commit(StringInfo out, ReorderBufferTXN *txn, XLogRecPtr commit_lsn); extern TransactionId logicalrep_read_stream_commit(StringInfo in, LogicalRepCommitData *commit_data); extern void logicalrep_write_stream_abort(StringInfo out, TransactionId xid, TransactionId subxid, XLogRecPtr abort_lsn, TimestampTz abort_time, bool write_abort_info); extern void logicalrep_read_stream_abort(StringInfo in, LogicalRepStreamAbortData *abort_data, bool read_abort_info); extern const char *logicalrep_message_type(LogicalRepMsgType action); #endif /* LOGICAL_PROTO_H */ libpg_query-17-6.1.0/src/postgres/include/replication/logicalworker.h000066400000000000000000000017151477334012600257060ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * logicalworker.h * Exports for logical replication workers. * * Portions Copyright (c) 2016-2024, PostgreSQL Global Development Group * * src/include/replication/logicalworker.h * *------------------------------------------------------------------------- */ #ifndef LOGICALWORKER_H #define LOGICALWORKER_H #include extern PGDLLIMPORT volatile sig_atomic_t ParallelApplyMessagePending; extern void ApplyWorkerMain(Datum main_arg); extern void ParallelApplyWorkerMain(Datum main_arg); extern void TablesyncWorkerMain(Datum main_arg); extern bool IsLogicalWorker(void); extern bool IsLogicalParallelApplyWorker(void); extern void HandleParallelApplyMessageInterrupt(void); extern void HandleParallelApplyMessages(void); extern void LogicalRepWorkersWakeupAtCommit(Oid subid); extern void AtEOXact_LogicalRepWorkers(bool isCommit); #endif /* LOGICALWORKER_H */ libpg_query-17-6.1.0/src/postgres/include/replication/origin.h000066400000000000000000000046301477334012600243300ustar00rootroot00000000000000/*------------------------------------------------------------------------- * origin.h * Exports from replication/logical/origin.c * * Copyright (c) 2013-2024, 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(const char *roname, bool missing_ok); extern RepOriginId replorigin_create(const char *roname); extern void replorigin_drop_by_name(const char *name, bool missing_ok, 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, int acquired_by); 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 */ extern void replorigin_redo(XLogReaderState *record); extern void replorigin_desc(StringInfo buf, XLogReaderState *record); extern const char *replorigin_identify(uint8 info); /* shared memory allocation */ extern Size ReplicationOriginShmemSize(void); extern void ReplicationOriginShmemInit(void); #endif /* PG_ORIGIN_H */ libpg_query-17-6.1.0/src/postgres/include/replication/reorderbuffer.h000066400000000000000000000534421477334012600257020ustar00rootroot00000000000000/* * reorderbuffer.h * PostgreSQL logical replay/reorder buffer management. * * Copyright (c) 2012-2024, 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 "lib/pairingheap.h" #include "storage/sinval.h" #include "utils/hsearch.h" #include "utils/relcache.h" #include "utils/snapshot.h" #include "utils/timestamp.h" /* GUC variables */ extern PGDLLIMPORT int logical_decoding_work_mem; extern PGDLLIMPORT int debug_logical_replication_streaming; /* possible values for debug_logical_replication_streaming */ typedef enum { DEBUG_LOGICAL_REP_STREAMING_BUFFERED, DEBUG_LOGICAL_REP_STREAMING_IMMEDIATE, } DebugLogicalRepStreamingMode; /* * 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, and INTERNAL_SPEC_ABORT * changes concern "speculative insertions", their confirmation, and abort * respectively. They're used by INSERT .. ON CONFLICT .. UPDATE. Users of * logical decoding don't have to care about these. */ typedef enum ReorderBufferChangeType { REORDER_BUFFER_CHANGE_INSERT, REORDER_BUFFER_CHANGE_UPDATE, REORDER_BUFFER_CHANGE_DELETE, REORDER_BUFFER_CHANGE_MESSAGE, REORDER_BUFFER_CHANGE_INVALIDATION, 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_INTERNAL_SPEC_ABORT, REORDER_BUFFER_CHANGE_TRUNCATE, } ReorderBufferChangeType; /* 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. */ 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 */ RelFileLocator rlocator; /* no previously reassembled toast chunks are necessary anymore */ bool clear_toast_afterwards; /* valid for DELETE || UPDATE */ HeapTuple oldtuple; /* valid for INSERT || UPDATE */ HeapTuple 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 { RelFileLocator locator; ItemPointerData tid; CommandId cmin; CommandId cmax; CommandId combocid; } tuplecid; /* Invalidation. */ struct { uint32 ninvalidations; /* Number of messages */ SharedInvalidationMessage *invalidations; /* invalidation message */ } inval; } 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 #define RBTXN_IS_SERIALIZED_CLEAR 0x0008 #define RBTXN_IS_STREAMED 0x0010 #define RBTXN_HAS_PARTIAL_CHANGE 0x0020 #define RBTXN_PREPARE 0x0040 #define RBTXN_SKIPPED_PREPARE 0x0080 #define RBTXN_HAS_STREAMABLE_CHANGE 0x0100 /* 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 \ ) /* Has this transaction ever been spilled to disk? */ #define rbtxn_is_serialized_clear(txn) \ ( \ ((txn)->txn_flags & RBTXN_IS_SERIALIZED_CLEAR) != 0 \ ) /* Has this transaction contains partial changes? */ #define rbtxn_has_partial_change(txn) \ ( \ ((txn)->txn_flags & RBTXN_HAS_PARTIAL_CHANGE) != 0 \ ) /* Does this transaction contain streamable changes? */ #define rbtxn_has_streamable_change(txn) \ ( \ ((txn)->txn_flags & RBTXN_HAS_STREAMABLE_CHANGE) != 0 \ ) /* * Has this transaction been streamed to downstream? * * (It's not possible to deduce this from nentries and nentries_mem for * various reasons. For example, all changes may be in subtransactions in * which case we'd have nentries==0 for the toplevel one, which would say * nothing about the streaming. So we maintain this flag, but only for the * toplevel transaction.) */ #define rbtxn_is_streamed(txn) \ ( \ ((txn)->txn_flags & RBTXN_IS_STREAMED) != 0 \ ) /* Has this transaction been prepared? */ #define rbtxn_prepared(txn) \ ( \ ((txn)->txn_flags & RBTXN_PREPARE) != 0 \ ) /* prepare for this transaction skipped? */ #define rbtxn_skip_prepared(txn) \ ( \ ((txn)->txn_flags & RBTXN_SKIPPED_PREPARE) != 0 \ ) /* Is this a top-level transaction? */ #define rbtxn_is_toptxn(txn) \ ( \ (txn)->toptxn == NULL \ ) /* Is this a subtransaction? */ #define rbtxn_is_subtxn(txn) \ ( \ (txn)->toptxn != NULL \ ) /* Get the top-level transaction of this (sub)transaction. */ #define rbtxn_get_toptxn(txn) \ ( \ rbtxn_is_subtxn(txn) ? (txn)->toptxn : (txn) \ ) 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; /* * Global transaction id required for identification of prepared * transactions. */ char *gid; /* * 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 prepared or committed or * aborted. This can be a * * plain commit record * * plain commit record, of a parent transaction * * prepared 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; /* Toplevel transaction for this subxact (NULL for top-level). */ struct ReorderBufferTXN *toptxn; /* * 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 or Prepare time, only known when we read the actual commit or * prepare record. */ union { TimestampTz commit_time; TimestampTz prepare_time; TimestampTz abort_time; } xact_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 */ /* * Snapshot/CID from the previous streaming run. Only valid for already * streamed transactions (NULL/InvalidCommandId otherwise). */ Snapshot snapshot_now; CommandId command_id; /* * 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, new * CommandIds and command invalidation messages. */ 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; /* * A node in the list of catalog modifying transactions */ dlist_node catchange_node; /* * A node in txn_heap */ pairingheap_node txn_node; /* * Size of this transaction (changes currently in memory, in bytes). */ Size size; /* Size of top-transaction including sub-transactions. */ Size total_size; /* If we have detected concurrent abort then ignore future changes. */ bool concurrent_abort; /* * Private data pointer of the output plugin. */ void *output_plugin_private; } 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); /* begin prepare callback signature */ typedef void (*ReorderBufferBeginPrepareCB) (ReorderBuffer *rb, ReorderBufferTXN *txn); /* prepare callback signature */ typedef void (*ReorderBufferPrepareCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr prepare_lsn); /* commit prepared callback signature */ typedef void (*ReorderBufferCommitPreparedCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr commit_lsn); /* rollback prepared callback signature */ typedef void (*ReorderBufferRollbackPreparedCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr prepare_end_lsn, TimestampTz prepare_time); /* start streaming transaction callback signature */ typedef void (*ReorderBufferStreamStartCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr first_lsn); /* stop streaming transaction callback signature */ typedef void (*ReorderBufferStreamStopCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr last_lsn); /* discard streamed transaction callback signature */ typedef void (*ReorderBufferStreamAbortCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr abort_lsn); /* prepare streamed transaction callback signature */ typedef void (*ReorderBufferStreamPrepareCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr prepare_lsn); /* commit streamed transaction callback signature */ typedef void (*ReorderBufferStreamCommitCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr commit_lsn); /* stream change callback signature */ typedef void (*ReorderBufferStreamChangeCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, Relation relation, ReorderBufferChange *change); /* stream message callback signature */ typedef void (*ReorderBufferStreamMessageCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr message_lsn, bool transactional, const char *prefix, Size sz, const char *message); /* stream truncate callback signature */ typedef void (*ReorderBufferStreamTruncateCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, int nrelations, Relation relations[], ReorderBufferChange *change); /* update progress txn callback signature */ typedef void (*ReorderBufferUpdateProgressTxnCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr lsn); 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; /* * Transactions and subtransactions that have modified system catalogs. */ dclist_head catchange_txns; /* * 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; /* * Callbacks to be called when streaming a transaction at prepare time. */ ReorderBufferBeginCB begin_prepare; ReorderBufferPrepareCB prepare; ReorderBufferCommitPreparedCB commit_prepared; ReorderBufferRollbackPreparedCB rollback_prepared; /* * Callbacks to be called when streaming a transaction. */ ReorderBufferStreamStartCB stream_start; ReorderBufferStreamStopCB stream_stop; ReorderBufferStreamAbortCB stream_abort; ReorderBufferStreamPrepareCB stream_prepare; ReorderBufferStreamCommitCB stream_commit; ReorderBufferStreamChangeCB stream_change; ReorderBufferStreamMessageCB stream_message; ReorderBufferStreamTruncateCB stream_truncate; /* * Callback to be called when updating progress during sending data of a * transaction (and its subtransactions) to the output plugin. */ ReorderBufferUpdateProgressTxnCB update_progress_txn; /* * 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; /* Max-heap for sizes of all top-level and sub transactions */ pairingheap *txn_heap; /* * Statistics about transactions spilled to disk. * * A single transaction may be spilled repeatedly, which is why we keep * two different counters. For spilling, the transaction counter includes * both toplevel transactions and subtransactions. */ int64 spillTxns; /* number of transactions spilled to disk */ int64 spillCount; /* spill-to-disk invocation counter */ int64 spillBytes; /* amount of data spilled to disk */ /* Statistics about transactions streamed to the decoding output plugin */ int64 streamTxns; /* number of transactions streamed */ int64 streamCount; /* streaming invocation counter */ int64 streamBytes; /* amount of data decoded */ /* * Statistics about all the transactions sent to the decoding output * plugin */ int64 totalTxns; /* total number of transactions sent */ int64 totalBytes; /* total amount of data decoded */ }; extern ReorderBuffer *ReorderBufferAllocate(void); extern void ReorderBufferFree(ReorderBuffer *rb); extern HeapTuple ReorderBufferGetTupleBuf(ReorderBuffer *rb, Size tuple_len); extern void ReorderBufferReturnTupleBuf(HeapTuple tuple); extern ReorderBufferChange *ReorderBufferGetChange(ReorderBuffer *rb); extern void ReorderBufferReturnChange(ReorderBuffer *rb, ReorderBufferChange *change, bool upd_mem); extern Oid *ReorderBufferGetRelids(ReorderBuffer *rb, int nrelids); extern void ReorderBufferReturnRelids(ReorderBuffer *rb, Oid *relids); extern void ReorderBufferQueueChange(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn, ReorderBufferChange *change, bool toast_insert); extern void ReorderBufferQueueMessage(ReorderBuffer *rb, TransactionId xid, Snapshot snap, XLogRecPtr lsn, bool transactional, const char *prefix, Size message_size, const char *message); extern void ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid, XLogRecPtr commit_lsn, XLogRecPtr end_lsn, TimestampTz commit_time, RepOriginId origin_id, XLogRecPtr origin_lsn); extern void ReorderBufferFinishPrepared(ReorderBuffer *rb, TransactionId xid, XLogRecPtr commit_lsn, XLogRecPtr end_lsn, XLogRecPtr two_phase_at, TimestampTz commit_time, RepOriginId origin_id, XLogRecPtr origin_lsn, char *gid, bool is_commit); extern void ReorderBufferAssignChild(ReorderBuffer *rb, TransactionId xid, TransactionId subxid, XLogRecPtr lsn); extern void ReorderBufferCommitChild(ReorderBuffer *rb, TransactionId xid, TransactionId subxid, XLogRecPtr commit_lsn, XLogRecPtr end_lsn); extern void ReorderBufferAbort(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn, TimestampTz abort_time); extern void ReorderBufferAbortOld(ReorderBuffer *rb, TransactionId oldestRunningXid); extern void ReorderBufferForget(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn); extern void ReorderBufferInvalidate(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn); extern void ReorderBufferSetBaseSnapshot(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn, Snapshot snap); extern void ReorderBufferAddSnapshot(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn, Snapshot snap); extern void ReorderBufferAddNewCommandId(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn, CommandId cid); extern void ReorderBufferAddNewTupleCids(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn, RelFileLocator locator, ItemPointerData tid, CommandId cmin, CommandId cmax, CommandId combocid); extern void ReorderBufferAddInvalidations(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn, Size nmsgs, SharedInvalidationMessage *msgs); extern void ReorderBufferImmediateInvalidation(ReorderBuffer *rb, uint32 ninvalidations, SharedInvalidationMessage *invalidations); extern void ReorderBufferProcessXid(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn); extern void ReorderBufferXidSetCatalogChanges(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn); extern bool ReorderBufferXidHasCatalogChanges(ReorderBuffer *rb, TransactionId xid); extern bool ReorderBufferXidHasBaseSnapshot(ReorderBuffer *rb, TransactionId xid); extern bool ReorderBufferRememberPrepareInfo(ReorderBuffer *rb, TransactionId xid, XLogRecPtr prepare_lsn, XLogRecPtr end_lsn, TimestampTz prepare_time, RepOriginId origin_id, XLogRecPtr origin_lsn); extern void ReorderBufferSkipPrepare(ReorderBuffer *rb, TransactionId xid); extern void ReorderBufferPrepare(ReorderBuffer *rb, TransactionId xid, char *gid); extern ReorderBufferTXN *ReorderBufferGetOldestTXN(ReorderBuffer *rb); extern TransactionId ReorderBufferGetOldestXmin(ReorderBuffer *rb); extern TransactionId *ReorderBufferGetCatalogChangesXacts(ReorderBuffer *rb); extern void ReorderBufferSetRestartPoint(ReorderBuffer *rb, XLogRecPtr ptr); extern void StartupReorderBuffer(void); #endif libpg_query-17-6.1.0/src/postgres/include/replication/slot.h000066400000000000000000000227741477334012600240330ustar00rootroot00000000000000/*------------------------------------------------------------------------- * slot.h * Replication slot management. * * Copyright (c) 2012-2024, 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" #include "replication/walreceiver.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; /* * Slots can be invalidated, e.g. due to max_slot_wal_keep_size. If so, the * 'invalidated' field is set to a value other than _NONE. * * When adding a new invalidation cause here, remember to update * SlotInvalidationCauses and RS_INVAL_MAX_CAUSES. */ typedef enum ReplicationSlotInvalidationCause { RS_INVAL_NONE, /* required WAL has been removed */ RS_INVAL_WAL_REMOVED, /* required rows have been removed */ RS_INVAL_HORIZON, /* wal_level insufficient for slot */ RS_INVAL_WAL_LEVEL, } ReplicationSlotInvalidationCause; extern PGDLLIMPORT const char *const SlotInvalidationCauses[]; /* * 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; /* RS_INVAL_NONE if valid, or the reason for having been invalidated */ ReplicationSlotInvalidationCause invalidated; /* * 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; /* * LSN at which we enabled two_phase commit for this slot or LSN at which * we found a consistent point at the time of slot creation. */ XLogRecPtr two_phase_at; /* * Allow decoding of prepared transactions? */ bool two_phase; /* plugin name */ NameData plugin; /* * Was this slot synchronized from the primary server? */ char synced; /* * Is this a failover slot (sync candidate for standbys)? Only relevant * for logical slots on the primary server. */ bool failover; } 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; /* * This value tracks the last confirmed_flush LSN flushed which is used * during a shutdown checkpoint to decide if logical's slot data should be * forcibly flushed or not. */ XLogRecPtr last_saved_confirmed_flush; /* * The time when the slot became inactive. For synced slots on a standby * server, it represents the time when slot synchronization was most * recently stopped. */ TimestampTz inactive_since; } 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; extern PGDLLIMPORT char *synchronized_standby_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 persistency, bool two_phase, bool failover, bool synced); extern void ReplicationSlotPersist(void); extern void ReplicationSlotDrop(const char *name, bool nowait); extern void ReplicationSlotDropAcquired(void); extern void ReplicationSlotAlter(const char *name, bool failover); extern void ReplicationSlotAcquire(const char *name, bool nowait); extern void ReplicationSlotRelease(void); extern void ReplicationSlotCleanup(bool synced_only); extern void ReplicationSlotSave(void); extern void ReplicationSlotMarkDirty(void); /* misc stuff */ extern void ReplicationSlotInitialize(void); 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 bool InvalidateObsoleteReplicationSlots(ReplicationSlotInvalidationCause cause, XLogSegNo oldestSegno, Oid dboid, TransactionId snapshotConflictHorizon); extern ReplicationSlot *SearchNamedReplicationSlot(const char *name, bool need_lock); extern int ReplicationSlotIndex(ReplicationSlot *slot); extern bool ReplicationSlotName(int index, Name name); extern void ReplicationSlotNameForTablesync(Oid suboid, Oid relid, char *syncslotname, Size szslot); extern void ReplicationSlotDropAtPubNode(WalReceiverConn *wrconn, char *slotname, bool missing_ok); extern void StartupReplicationSlots(void); extern void CheckPointReplicationSlots(bool is_shutdown); extern void CheckSlotRequirements(void); extern void CheckSlotPermissions(void); extern ReplicationSlotInvalidationCause GetSlotInvalidationCause(const char *invalidation_reason); extern bool SlotExistsInSyncStandbySlots(const char *slot_name); extern bool StandbySlotsHaveCaughtup(XLogRecPtr wait_for_lsn, int elevel); extern void WaitForStandbyConfirmation(XLogRecPtr wait_for_lsn); #endif /* SLOT_H */ libpg_query-17-6.1.0/src/postgres/include/replication/slotsync.h000066400000000000000000000022041477334012600247120ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * slotsync.h * Exports for slot synchronization. * * Portions Copyright (c) 2016-2024, PostgreSQL Global Development Group * * src/include/replication/slotsync.h * *------------------------------------------------------------------------- */ #ifndef SLOTSYNC_H #define SLOTSYNC_H #include "replication/walreceiver.h" extern PGDLLIMPORT bool sync_replication_slots; /* * GUCs needed by slot sync worker to connect to the primary * server and carry on with slots synchronization. */ extern PGDLLIMPORT char *PrimaryConnInfo; extern PGDLLIMPORT char *PrimarySlotName; extern char *CheckAndGetDbnameFromConninfo(void); extern bool ValidateSlotSyncParams(int elevel); extern void ReplSlotSyncWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern void ShutDownSlotSync(void); extern bool SlotSyncWorkerCanRestart(void); extern bool IsSyncingReplicationSlots(void); extern Size SlotSyncShmemSize(void); extern void SlotSyncShmemInit(void); extern void SyncReplicationSlots(WalReceiverConn *wrconn); #endif /* SLOTSYNC_H */ libpg_query-17-6.1.0/src/postgres/include/replication/syncrep.h000066400000000000000000000063551477334012600245320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * syncrep.h * Exports from replication/syncrep.c. * * Portions Copyright (c) 2010-2024, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/replication/syncrep.h * *------------------------------------------------------------------------- */ #ifndef _SYNCREP_H #define _SYNCREP_H #include "access/xlogdefs.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 PGDLLIMPORT SyncRepConfigData *SyncRepConfig; /* communication variables for parsing synchronous_standby_names GUC */ extern PGDLLIMPORT SyncRepConfigData *syncrep_parse_result; extern PGDLLIMPORT char *syncrep_parse_error_msg; /* user-settable parameters for synchronous replication */ extern PGDLLIMPORT 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); /* * 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 *str); extern void syncrep_scanner_finish(void); #endif /* _SYNCREP_H */ libpg_query-17-6.1.0/src/postgres/include/replication/walreceiver.h000066400000000000000000000402041477334012600253460ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * walreceiver.h * Exports from replication/walreceiverfuncs.c. * * Portions Copyright (c) 2010-2024, PostgreSQL Global Development Group * * src/include/replication/walreceiver.h * *------------------------------------------------------------------------- */ #ifndef _WALRECEIVER_H #define _WALRECEIVER_H #include #include "access/xlog.h" #include "access/xlogdefs.h" #include "pgtime.h" #include "port/atomics.h" #include "replication/logicalproto.h" #include "replication/walsender.h" #include "storage/condition_variable.h" #include "storage/latch.h" #include "storage/spin.h" #include "utils/tuplestore.h" /* user-settable parameters */ extern PGDLLIMPORT int wal_receiver_status_interval; extern PGDLLIMPORT int wal_receiver_timeout; extern PGDLLIMPORT 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; ConditionVariable walRcvStoppedCV; 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 PGDLLIMPORT 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 */ bool binary; /* Ask publisher to use binary */ char *streaming_str; /* Streaming of large transactions */ bool twophase; /* Streaming of two-phase transactions at * prepare time */ char *origin; /* Only publish data originating from the * specified origin */ } 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; int sqlstate; char *err; Tuplestorestate *tuplestore; TupleDesc tupledesc; } WalRcvExecResult; /* WAL receiver - libpqwalreceiver hooks */ /* * walrcv_connect_fn * * Establish connection to a cluster. 'replication' is true if the * connection is a replication connection, and false if it is a * regular connection. If it is a replication connection, it could * be either logical or physical based on input argument 'logical'. * 'appname' is a name associated to the connection, to use for example * with fallback_application_name or application_name. Returns the * details about the connection established, as defined by * WalReceiverConn for each WAL receiver module. On error, NULL is * returned with 'err' including the error generated. */ typedef WalReceiverConn *(*walrcv_connect_fn) (const char *conninfo, bool replication, bool logical, bool must_use_password, const char *appname, char **err); /* * walrcv_check_conninfo_fn * * Parse and validate the connection string given as of 'conninfo'. */ typedef void (*walrcv_check_conninfo_fn) (const char *conninfo, bool must_use_password); /* * walrcv_get_conninfo_fn * * Returns a user-displayable conninfo string. Note that any * security-sensitive fields should be obfuscated. */ typedef char *(*walrcv_get_conninfo_fn) (WalReceiverConn *conn); /* * walrcv_get_senderinfo_fn * * Provide information of the WAL sender this WAL receiver is connected * to, as of 'sender_host' for the host of the sender and 'sender_port' * for its port. */ typedef void (*walrcv_get_senderinfo_fn) (WalReceiverConn *conn, char **sender_host, int *sender_port); /* * walrcv_identify_system_fn * * Run IDENTIFY_SYSTEM on the cluster connected to and validate the * identity of the cluster. Returns the system ID of the cluster * connected to. 'primary_tli' is the timeline ID of the sender. */ typedef char *(*walrcv_identify_system_fn) (WalReceiverConn *conn, TimeLineID *primary_tli); /* * walrcv_get_dbname_from_conninfo_fn * * Returns the database name from the primary_conninfo */ typedef char *(*walrcv_get_dbname_from_conninfo_fn) (const char *conninfo); /* * walrcv_server_version_fn * * Returns the version number of the cluster connected to. */ typedef int (*walrcv_server_version_fn) (WalReceiverConn *conn); /* * walrcv_readtimelinehistoryfile_fn * * Fetch from cluster the timeline history file for timeline 'tli'. * Returns the name of the timeline history file as of 'filename', its * contents as of 'content' and its 'size'. */ typedef void (*walrcv_readtimelinehistoryfile_fn) (WalReceiverConn *conn, TimeLineID tli, char **filename, char **content, int *size); /* * walrcv_startstreaming_fn * * Start streaming WAL data from given streaming options. Returns true * if the connection has switched successfully to copy-both mode and false * if the server received the command and executed it successfully, but * didn't switch to copy-mode. */ typedef bool (*walrcv_startstreaming_fn) (WalReceiverConn *conn, const WalRcvStreamOptions *options); /* * walrcv_endstreaming_fn * * Stop streaming of WAL data. Returns the next timeline ID of the cluster * connected to in 'next_tli', or 0 if there was no report. */ typedef void (*walrcv_endstreaming_fn) (WalReceiverConn *conn, TimeLineID *next_tli); /* * walrcv_receive_fn * * Receive a message available from the WAL stream. 'buffer' is a pointer * to a buffer holding the message received. Returns the length of the data, * 0 if no data is available yet ('wait_fd' is a socket descriptor which can * be waited on before a retry), and -1 if the cluster ended the COPY. */ typedef int (*walrcv_receive_fn) (WalReceiverConn *conn, char **buffer, pgsocket *wait_fd); /* * walrcv_send_fn * * Send a message of size 'nbytes' to the WAL stream with 'buffer' as * contents. */ typedef void (*walrcv_send_fn) (WalReceiverConn *conn, const char *buffer, int nbytes); /* * walrcv_create_slot_fn * * Create a new replication slot named 'slotname'. 'temporary' defines * if the slot is temporary. 'snapshot_action' defines the behavior wanted * for an exported snapshot (see replication protocol for more details). * 'lsn' includes the LSN position at which the created slot became * consistent. Returns the name of the exported snapshot for a logical * slot, or NULL for a physical slot. */ typedef char *(*walrcv_create_slot_fn) (WalReceiverConn *conn, const char *slotname, bool temporary, bool two_phase, bool failover, CRSSnapshotAction snapshot_action, XLogRecPtr *lsn); /* * walrcv_alter_slot_fn * * Change the definition of a replication slot. Currently, it only supports * changing the failover property of the slot. */ typedef void (*walrcv_alter_slot_fn) (WalReceiverConn *conn, const char *slotname, bool failover); /* * walrcv_get_backend_pid_fn * * Returns the PID of the remote backend process. */ typedef pid_t (*walrcv_get_backend_pid_fn) (WalReceiverConn *conn); /* * walrcv_exec_fn * * Send generic queries (and commands) to the remote cluster. 'nRetTypes' * is the expected number of returned attributes, and 'retTypes' an array * including their type OIDs. Returns the status of the execution and * tuples if any. */ typedef WalRcvExecResult *(*walrcv_exec_fn) (WalReceiverConn *conn, const char *query, const int nRetTypes, const Oid *retTypes); /* * walrcv_disconnect_fn * * Disconnect with the cluster. */ 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_get_dbname_from_conninfo_fn walrcv_get_dbname_from_conninfo; 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_alter_slot_fn walrcv_alter_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, replication, logical, must_use_password, appname, err) \ WalReceiverFunctions->walrcv_connect(conninfo, replication, logical, must_use_password, appname, err) #define walrcv_check_conninfo(conninfo, must_use_password) \ WalReceiverFunctions->walrcv_check_conninfo(conninfo, must_use_password) #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_get_dbname_from_conninfo(conninfo) \ WalReceiverFunctions->walrcv_get_dbname_from_conninfo(conninfo) #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, two_phase, failover, snapshot_action, lsn) \ WalReceiverFunctions->walrcv_create_slot(conn, slotname, temporary, two_phase, failover, snapshot_action, lsn) #define walrcv_alter_slot(conn, slotname, failover) \ WalReceiverFunctions->walrcv_alter_slot(conn, slotname, failover) #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(char *startup_data, size_t startup_data_len) pg_attribute_noreturn(); extern void ProcessWalRcvInterrupts(void); extern void WalRcvForceReply(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); #endif /* _WALRECEIVER_H */ libpg_query-17-6.1.0/src/postgres/include/replication/walsender.h000066400000000000000000000040471477334012600250270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * walsender.h * Exports from replication/walsender.c. * * Portions Copyright (c) 2010-2024, PostgreSQL Global Development Group * * src/include/replication/walsender.h * *------------------------------------------------------------------------- */ #ifndef _WALSENDER_H #define _WALSENDER_H #include "access/xlogdefs.h" /* * 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 PGDLLIMPORT bool am_walsender; extern PGDLLIMPORT bool am_cascading_walsender; extern PGDLLIMPORT bool am_db_walsender; extern PGDLLIMPORT bool wake_wal_senders; /* user-settable parameters */ extern PGDLLIMPORT int max_wal_senders; extern PGDLLIMPORT int wal_sender_timeout; extern PGDLLIMPORT bool log_replication_commands; extern void InitWalSender(void); extern bool exec_replication_command(const char *cmd_string); extern void WalSndErrorCleanup(void); extern void WalSndResourceCleanup(bool isCommit); extern void PhysicalWakeupLogicalWalSnd(void); extern XLogRecPtr GetStandbyFlushRecPtr(TimeLineID *tli); extern void WalSndSignals(void); extern Size WalSndShmemSize(void); extern void WalSndShmemInit(void); extern void WalSndWakeup(bool physical, bool logical); 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 */ static inline void WalSndWakeupProcessRequests(bool physical, bool logical) { if (wake_wal_senders) { wake_wal_senders = false; if (max_wal_senders > 0) WalSndWakeup(physical, logical); } } #endif /* _WALSENDER_H */ libpg_query-17-6.1.0/src/postgres/include/rewrite/000077500000000000000000000000001477334012600220355ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/rewrite/prs2lock.h000066400000000000000000000020401477334012600237410ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * prs2lock.h * data structures for POSTGRES Rule System II (rewrite rules only) * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/rewrite/rewriteHandler.h000066400000000000000000000024411477334012600251660ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * rewriteHandler.h * External interface to query rewriter. * * * Portions Copyright (c) 1996-2024, 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 Query *get_view_query(Relation view); extern bool view_has_instead_trigger(Relation view, CmdType event, List *mergeActionList); 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); extern void error_view_not_updatable(Relation view, CmdType command, List *mergeActionList, const char *detail); #endif /* REWRITEHANDLER_H */ libpg_query-17-6.1.0/src/postgres/include/rewrite/rewriteManip.h000066400000000000000000000066341477334012600246650ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * rewriteManip.h * Querytree manipulation subroutines for query rewriter. * * * Portions Copyright (c) 1996-2024, 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 CombineRangeTables(List **dst_rtable, List **dst_perminfos, List *src_rtable, List *src_perminfos); extern void OffsetVarNodes(Node *node, int offset, int sublevels_up); extern void ChangeVarNodes(Node *node, int rt_index, int new_index, 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 *add_nulling_relids(Node *node, const Bitmapset *target_relids, const Bitmapset *added_relids); extern Node *remove_nulling_relids(Node *node, const Bitmapset *removable_relids, const Bitmapset *except_relids); 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-17-6.1.0/src/postgres/include/rewrite/rewriteSupport.h000066400000000000000000000014161477334012600252660ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * rewriteSupport.h * * * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/storage/000077500000000000000000000000001477334012600220205ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/storage/block.h000066400000000000000000000055321477334012600232700ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * block.h * POSTGRES disk block definitions. * * * Portions Copyright (c) 1996-2024, 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 functions * ---------------- */ /* * BlockNumberIsValid * True iff blockNumber is valid. */ static inline bool BlockNumberIsValid(BlockNumber blockNumber) { return blockNumber != InvalidBlockNumber; } /* * BlockIdSet * Sets a block identifier to the specified value. */ static inline void BlockIdSet(BlockIdData *blockId, BlockNumber blockNumber) { blockId->bi_hi = blockNumber >> 16; blockId->bi_lo = blockNumber & 0xffff; } /* * BlockIdEquals * Check for block number equality. */ static inline bool BlockIdEquals(const BlockIdData *blockId1, const BlockIdData *blockId2) { return (blockId1->bi_hi == blockId2->bi_hi && blockId1->bi_lo == blockId2->bi_lo); } /* * BlockIdGetBlockNumber * Retrieve the block number from a block identifier. */ static inline BlockNumber BlockIdGetBlockNumber(const BlockIdData *blockId) { return (((BlockNumber) blockId->bi_hi) << 16) | ((BlockNumber) blockId->bi_lo); } #endif /* BLOCK_H */ libpg_query-17-6.1.0/src/postgres/include/storage/buf.h000066400000000000000000000020761477334012600227520ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * buf.h * Basic buffer manager data types. * * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/storage/bufmgr.h000066400000000000000000000314071477334012600234600ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * bufmgr.h * POSTGRES buffer manager definitions. * * * Portions Copyright (c) 1996-2024, 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 "port/pg_iovec.h" #include "storage/block.h" #include "storage/buf.h" #include "storage/bufpage.h" #include "storage/relfilelocator.h" #include "utils/relcache.h" #include "utils/snapmgr.h" typedef void *Block; /* * Possible arguments for GetAccessStrategy(). * * If adding a new BufferAccessStrategyType, also add a new IOContext so * IO statistics using this strategy are tracked. */ 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; /* * Flags influencing the behaviour of ExtendBufferedRel* */ typedef enum ExtendBufferedFlags { /* * Don't acquire extension lock. This is safe only if the relation isn't * shared, an access exclusive lock is held or if this is the startup * process. */ EB_SKIP_EXTENSION_LOCK = (1 << 0), /* Is this extension part of recovery? */ EB_PERFORMING_RECOVERY = (1 << 1), /* * Should the fork be created if it does not currently exist? This likely * only ever makes sense for relation forks. */ EB_CREATE_FORK_IF_NEEDED = (1 << 2), /* Should the first (possibly only) return buffer be returned locked? */ EB_LOCK_FIRST = (1 << 3), /* Should the smgr size cache be cleared? */ EB_CLEAR_SIZE_CACHE = (1 << 4), /* internal flags follow */ EB_LOCK_TARGET = (1 << 5), } ExtendBufferedFlags; /* * Some functions identify relations either by relation or smgr + * relpersistence. Used via the BMR_REL()/BMR_SMGR() macros below. This * allows us to use the same function for both recovery and normal operation. */ typedef struct BufferManagerRelation { Relation rel; struct SMgrRelationData *smgr; char relpersistence; } BufferManagerRelation; #define BMR_REL(p_rel) ((BufferManagerRelation){.rel = p_rel}) #define BMR_SMGR(p_smgr, p_relpersistence) ((BufferManagerRelation){.smgr = p_smgr, .relpersistence = p_relpersistence}) /* Zero out page if reading fails. */ #define READ_BUFFERS_ZERO_ON_ERROR (1 << 0) /* Call smgrprefetch() if I/O necessary. */ #define READ_BUFFERS_ISSUE_ADVICE (1 << 1) struct ReadBuffersOperation { /* * The following members should be set by the caller. If only smgr is * provided without rel, then smgr_persistence can be set to override the * default assumption of RELPERSISTENCE_PERMANENT. */ Relation rel; struct SMgrRelationData *smgr; char smgr_persistence; ForkNumber forknum; BufferAccessStrategy strategy; /* * The following private members are private state for communication * between StartReadBuffers() and WaitReadBuffers(), initialized only if * an actual read is required, and should not be modified. */ Buffer *buffers; BlockNumber blocknum; int flags; int16 nblocks; int16 io_buffers_len; }; typedef struct ReadBuffersOperation ReadBuffersOperation; /* 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 PGDLLIMPORT bool zero_damaged_pages; extern PGDLLIMPORT int bgwriter_lru_maxpages; extern PGDLLIMPORT double bgwriter_lru_multiplier; extern PGDLLIMPORT bool track_io_timing; /* only applicable when prefetching is available */ #ifdef USE_PREFETCH #define DEFAULT_EFFECTIVE_IO_CONCURRENCY 1 #define DEFAULT_MAINTENANCE_IO_CONCURRENCY 10 #else #define DEFAULT_EFFECTIVE_IO_CONCURRENCY 0 #define DEFAULT_MAINTENANCE_IO_CONCURRENCY 0 #endif extern PGDLLIMPORT int effective_io_concurrency; extern PGDLLIMPORT int maintenance_io_concurrency; #define MAX_IO_COMBINE_LIMIT PG_IOV_MAX #define DEFAULT_IO_COMBINE_LIMIT Min(MAX_IO_COMBINE_LIMIT, (128 * 1024) / BLCKSZ) extern PGDLLIMPORT int io_combine_limit; extern PGDLLIMPORT int checkpoint_flush_after; extern PGDLLIMPORT int backend_flush_after; extern PGDLLIMPORT 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 /* * 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 bool ReadRecentBuffer(RelFileLocator rlocator, ForkNumber forkNum, BlockNumber blockNum, Buffer recent_buffer); extern Buffer ReadBuffer(Relation reln, BlockNumber blockNum); extern Buffer ReadBufferExtended(Relation reln, ForkNumber forkNum, BlockNumber blockNum, ReadBufferMode mode, BufferAccessStrategy strategy); extern Buffer ReadBufferWithoutRelcache(RelFileLocator rlocator, ForkNumber forkNum, BlockNumber blockNum, ReadBufferMode mode, BufferAccessStrategy strategy, bool permanent); extern bool StartReadBuffer(ReadBuffersOperation *operation, Buffer *buffer, BlockNumber blocknum, int flags); extern bool StartReadBuffers(ReadBuffersOperation *operation, Buffer *buffers, BlockNumber blockNum, int *nblocks, int flags); extern void WaitReadBuffers(ReadBuffersOperation *operation); extern void ReleaseBuffer(Buffer buffer); extern void UnlockReleaseBuffer(Buffer buffer); extern bool BufferIsExclusiveLocked(Buffer buffer); extern bool BufferIsDirty(Buffer buffer); extern void MarkBufferDirty(Buffer buffer); extern void IncrBufferRefCount(Buffer buffer); extern void CheckBufferIsPinnedOnce(Buffer buffer); extern Buffer ReleaseAndReadBuffer(Buffer buffer, Relation relation, BlockNumber blockNum); extern Buffer ExtendBufferedRel(BufferManagerRelation bmr, ForkNumber forkNum, BufferAccessStrategy strategy, uint32 flags); extern BlockNumber ExtendBufferedRelBy(BufferManagerRelation bmr, ForkNumber fork, BufferAccessStrategy strategy, uint32 flags, uint32 extend_by, Buffer *buffers, uint32 *extended_by); extern Buffer ExtendBufferedRelTo(BufferManagerRelation bmr, ForkNumber fork, BufferAccessStrategy strategy, uint32 flags, BlockNumber extend_to, ReadBufferMode mode); extern void InitBufferPoolAccess(void); extern void AtEOXact_Buffers(bool isCommit); extern char *DebugPrintBufferRefcount(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 CreateAndCopyRelationData(RelFileLocator src_rlocator, RelFileLocator dst_rlocator, bool permanent); extern void FlushDatabaseBuffers(Oid dbid); extern void DropRelationBuffers(struct SMgrRelationData *smgr_reln, ForkNumber *forkNum, int nforks, BlockNumber *firstDelBlock); extern void DropRelationsAllBuffers(struct SMgrRelationData **smgr_reln, int nlocators); 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 void BufferGetTag(Buffer buffer, RelFileLocator *rlocator, 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 bool BgBufferSync(struct WritebackContext *wb_context); extern void LimitAdditionalPins(uint32 *additional_pins); extern void LimitAdditionalLocalPins(uint32 *additional_pins); extern bool EvictUnpinnedBuffer(Buffer buf); /* in buf_init.c */ extern void InitBufferPool(void); extern Size BufferShmemSize(void); /* in localbuf.c */ extern void AtProcExit_LocalBuffers(void); /* in freelist.c */ extern BufferAccessStrategy GetAccessStrategy(BufferAccessStrategyType btype); extern BufferAccessStrategy GetAccessStrategyWithSize(BufferAccessStrategyType btype, int ring_size_kb); extern int GetAccessStrategyBufferCount(BufferAccessStrategy strategy); extern int GetAccessStrategyPinLimit(BufferAccessStrategy strategy); 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 /* * 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. */ static inline bool BufferIsValid(Buffer bufnum) { Assert(bufnum <= NBuffers); Assert(bufnum >= -NLocBuffer); return bufnum != InvalidBuffer; } /* * BufferGetBlock * Returns a reference to a disk page image associated with a buffer. * * Note: * Assumes buffer is valid. */ static inline Block BufferGetBlock(Buffer buffer) { Assert(BufferIsValid(buffer)); if (BufferIsLocal(buffer)) return LocalBufferBlockPointers[-buffer - 1]; else return (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 */ static inline Size BufferGetPageSize(Buffer buffer) { AssertMacro(BufferIsValid(buffer)); return (Size) BLCKSZ; } /* * BufferGetPage * Returns the page associated with a buffer. */ static inline Page BufferGetPage(Buffer buffer) { return (Page) BufferGetBlock(buffer); } #endif /* FRONTEND */ #endif /* BUFMGR_H */ libpg_query-17-6.1.0/src/postgres/include/storage/bufpage.h000066400000000000000000000375001477334012600236070ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * bufpage.h * Standard POSTGRES buffer page definitions. * * * Portions Copyright (c) 1996-2024, 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; static inline XLogRecPtr PageXLogRecPtrGet(PageXLogRecPtr val) { return (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 functions * ---------------------------------------------------------------- */ /* * 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 */ static inline bool PageIsEmpty(Page page) { return ((PageHeader) page)->pd_lower <= SizeOfPageHeaderData; } /* * PageIsNew * returns true iff page has not been initialized (by PageInit) */ static inline bool PageIsNew(Page page) { return ((PageHeader) page)->pd_upper == 0; } /* * PageGetItemId * Returns an item identifier of a page. */ static inline ItemId PageGetItemId(Page page, OffsetNumber offsetNumber) { return &((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). */ static inline char * PageGetContents(Page page) { return (char *) page + MAXALIGN(SizeOfPageHeaderData); } /* ---------------- * functions to access page size info * ---------------- */ /* * 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. */ static inline Size PageGetPageSize(Page page) { return (Size) (((PageHeader) page)->pd_pagesize_version & (uint16) 0xFF00); } /* * PageGetPageLayoutVersion * Returns the page layout version of a page. */ static inline uint8 PageGetPageLayoutVersion(Page page) { return (((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. */ static inline void PageSetPageSizeAndVersion(Page page, Size size, uint8 version) { Assert((size & 0xFF00) == size); Assert((version & 0x00FF) == version); ((PageHeader) page)->pd_pagesize_version = size | version; } /* ---------------- * page special data functions * ---------------- */ /* * PageGetSpecialSize * Returns size of special space on a page. */ static inline uint16 PageGetSpecialSize(Page page) { return (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. */ static inline void PageValidateSpecialPointer(Page page) { Assert(page); Assert(((PageHeader) page)->pd_special <= BLCKSZ); Assert(((PageHeader) page)->pd_special >= SizeOfPageHeaderData); } /* * PageGetSpecialPointer * Returns pointer to special space on a page. */ static inline char * PageGetSpecialPointer(Page page) { PageValidateSpecialPointer(page); return (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. */ static inline Item PageGetItem(Page page, ItemId itemId) { Assert(page); Assert(ItemIdHasStorage(itemId)); return (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. */ static inline OffsetNumber PageGetMaxOffsetNumber(Page page) { PageHeader pageheader = (PageHeader) page; if (pageheader->pd_lower <= SizeOfPageHeaderData) return 0; else return (pageheader->pd_lower - SizeOfPageHeaderData) / sizeof(ItemIdData); } /* * Additional functions for access to page headers. */ static inline XLogRecPtr PageGetLSN(Page page) { return PageXLogRecPtrGet(((PageHeader) page)->pd_lsn); } static inline void PageSetLSN(Page page, XLogRecPtr lsn) { PageXLogRecPtrSet(((PageHeader) page)->pd_lsn, lsn); } static inline bool PageHasFreeLinePointers(Page page) { return ((PageHeader) page)->pd_flags & PD_HAS_FREE_LINES; } static inline void PageSetHasFreeLinePointers(Page page) { ((PageHeader) page)->pd_flags |= PD_HAS_FREE_LINES; } static inline void PageClearHasFreeLinePointers(Page page) { ((PageHeader) page)->pd_flags &= ~PD_HAS_FREE_LINES; } static inline bool PageIsFull(Page page) { return ((PageHeader) page)->pd_flags & PD_PAGE_FULL; } static inline void PageSetFull(Page page) { ((PageHeader) page)->pd_flags |= PD_PAGE_FULL; } static inline void PageClearFull(Page page) { ((PageHeader) page)->pd_flags &= ~PD_PAGE_FULL; } static inline bool PageIsAllVisible(Page page) { return ((PageHeader) page)->pd_flags & PD_ALL_VISIBLE; } static inline void PageSetAllVisible(Page page) { ((PageHeader) page)->pd_flags |= PD_ALL_VISIBLE; } static inline void PageClearAllVisible(Page page) { ((PageHeader) page)->pd_flags &= ~PD_ALL_VISIBLE; } /* * These two require "access/transam.h", so left as macros. */ #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)) #define PageIsVerified(page, blkno) \ PageIsVerifiedExtended(page, blkno, \ PIV_LOG_WARNING | PIV_REPORT_STAT) /* * 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 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 void PageTruncateLinePointerArray(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 offnum); extern void PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems); extern void PageIndexTupleDeleteNoCompact(Page page, OffsetNumber offnum); 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-17-6.1.0/src/postgres/include/storage/condition_variable.h000066400000000000000000000056331477334012600260330ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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/spin.h" typedef struct { slock_t mutex; /* spinlock protecting the wakeup list */ proclist_head wakeup; /* list of wake-able processes */ } ConditionVariable; /* * Pad a condition variable to a power-of-two size so that an array of * condition variables does not cross a cache line boundary. */ #define CV_MINIMAL_SIZE (sizeof(ConditionVariable) <= 16 ? 16 : 32) typedef union ConditionVariableMinimallyPadded { ConditionVariable cv; char pad[CV_MINIMAL_SIZE]; } ConditionVariableMinimallyPadded; /* 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 bool 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-17-6.1.0/src/postgres/include/storage/dsm.h000066400000000000000000000037601477334012600227620ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * dsm.h * manage dynamic shared memory segments * * Portions Copyright (c) 1996-2024, 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 /* 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); extern size_t dsm_estimate_size(void); extern void dsm_shmem_init(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 handle); extern dsm_segment *dsm_find_mapping(dsm_handle handle); /* 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-17-6.1.0/src/postgres/include/storage/dsm_impl.h000066400000000000000000000044071477334012600240020ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * dsm_impl.h * low-level dynamic shared memory primitives * * Portions Copyright (c) 1996-2024, 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 PGDLLIMPORT int dynamic_shared_memory_type; extern PGDLLIMPORT int min_dynamic_shared_memory; /* * 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; /* Sentinel value to use for invalid DSM handles. */ #define DSM_HANDLE_INVALID ((dsm_handle) 0) /* 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-17-6.1.0/src/postgres/include/storage/fd.h000066400000000000000000000200341477334012600225610ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fd.h * Virtual file descriptor definitions. * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/fd.h * *------------------------------------------------------------------------- */ /* * calls: * * File {Close, Read, ReadV, Write, WriteV, 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 "port/pg_iovec.h" #include #include typedef int File; #define IO_DIRECT_DATA 0x01 #define IO_DIRECT_WAL 0x02 #define IO_DIRECT_WAL_INIT 0x04 /* GUC parameter */ extern PGDLLIMPORT int max_files_per_process; extern PGDLLIMPORT bool data_sync_retry; extern PGDLLIMPORT int recovery_init_sync_method; extern PGDLLIMPORT int io_direct_flags; /* * This is private to fd.c, but exported for save/restore_backend_variables() */ extern PGDLLIMPORT 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 /* * O_DIRECT is not standard, but almost every Unix has it. We translate it * to the appropriate Windows flag in src/port/open.c. We simulate it with * fcntl(F_NOCACHE) on macOS inside fd.c's open() wrapper. We use the name * PG_O_DIRECT rather than defining O_DIRECT in that case (probably not a good * idea on a Unix). We can only use it if the compiler will correctly align * PGIOAlignedBlock for us, though. */ #if defined(O_DIRECT) && defined(pg_attribute_aligned) #define PG_O_DIRECT O_DIRECT #elif defined(F_NOCACHE) #define PG_O_DIRECT 0x80000000 #define PG_O_DIRECT_USE_F_NOCACHE #else #define PG_O_DIRECT 0 #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, off_t amount, uint32 wait_event_info); extern ssize_t FileReadV(File file, const struct iovec *iov, int iovcnt, off_t offset, uint32 wait_event_info); extern ssize_t FileWriteV(File file, const struct iovec *iov, int iovcnt, off_t offset, uint32 wait_event_info); extern int FileSync(File file, uint32 wait_event_info); extern int FileZero(File file, off_t offset, off_t amount, uint32 wait_event_info); extern int FileFallocate(File file, off_t offset, off_t amount, 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 *path, bool error_on_failure); extern File PathNameOpenTemporaryFile(const char *path, int mode); extern bool PathNameDeleteTemporaryFile(const char *path, bool error_on_failure); extern void PathNameCreateTemporaryDir(const char *basedir, const char *directory); extern void PathNameDeleteTemporaryDir(const char *dirname); 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 InitTemporaryFileAccess(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 bool pg_file_exists(const char *name); extern void pg_flush_data(int fd, off_t offset, off_t nbytes); extern int pg_truncate(const char *path, off_t length); 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 elevel); extern int durable_unlink(const char *fname, int elevel); extern void SyncDataDirectory(void); extern int data_sync_elevel(int elevel); static inline ssize_t FileRead(File file, void *buffer, size_t amount, off_t offset, uint32 wait_event_info) { struct iovec iov = { .iov_base = buffer, .iov_len = amount }; return FileReadV(file, &iov, 1, offset, wait_event_info); } static inline ssize_t FileWrite(File file, const void *buffer, size_t amount, off_t offset, uint32 wait_event_info) { struct iovec iov = { .iov_base = unconstify(void *, buffer), .iov_len = amount }; return FileWriteV(file, &iov, 1, offset, wait_event_info); } #endif /* FD_H */ libpg_query-17-6.1.0/src/postgres/include/storage/fileset.h000066400000000000000000000022161477334012600236250ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fileset.h * Management of named temporary files. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/fileset.h * *------------------------------------------------------------------------- */ #ifndef FILESET_H #define FILESET_H #include "storage/fd.h" /* * A set of temporary files. */ typedef struct FileSet { pid_t creator_pid; /* PID of the creating process */ uint32 number; /* per-PID identifier */ 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. */ } FileSet; extern void FileSetInit(FileSet *fileset); extern File FileSetCreate(FileSet *fileset, const char *name); extern File FileSetOpen(FileSet *fileset, const char *name, int mode); extern bool FileSetDelete(FileSet *fileset, const char *name, bool error_on_failure); extern void FileSetDeleteAll(FileSet *fileset); #endif libpg_query-17-6.1.0/src/postgres/include/storage/ipc.h000066400000000000000000000056571477334012600227610ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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); extern void check_on_shmem_exit_lists_are_empty(void); /* ipci.c */ extern PGDLLIMPORT shmem_startup_hook_type shmem_startup_hook; extern Size CalculateShmemSize(int *num_semaphores); extern void CreateSharedMemoryAndSemaphores(void); #ifdef EXEC_BACKEND extern void AttachSharedMemoryStructs(void); #endif extern void InitializeShmemGUCs(void); #endif /* IPC_H */ libpg_query-17-6.1.0/src/postgres/include/storage/item.h000066400000000000000000000007311477334012600231300ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * item.h * POSTGRES disk item definitions. * * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/storage/itemid.h000066400000000000000000000105141477334012600234450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * itemid.h * Standard POSTGRES buffer page item identifier/line pointer definitions. * * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/storage/itemptr.h000066400000000000000000000145371477334012600236670ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * itemptr.h * POSTGRES disk item pointer definitions. * * * Portions Copyright (c) 1996-2024, 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 functions * ---------------- */ /* * ItemPointerIsValid * True iff the disk item pointer is not NULL. */ static inline bool ItemPointerIsValid(const ItemPointerData *pointer) { return PointerIsValid(pointer) && pointer->ip_posid != 0; } /* * ItemPointerGetBlockNumberNoCheck * Returns the block number of a disk item pointer. */ static inline BlockNumber ItemPointerGetBlockNumberNoCheck(const ItemPointerData *pointer) { return BlockIdGetBlockNumber(&pointer->ip_blkid); } /* * ItemPointerGetBlockNumber * As above, but verifies that the item pointer looks valid. */ static inline BlockNumber ItemPointerGetBlockNumber(const ItemPointerData *pointer) { Assert(ItemPointerIsValid(pointer)); return ItemPointerGetBlockNumberNoCheck(pointer); } /* * ItemPointerGetOffsetNumberNoCheck * Returns the offset number of a disk item pointer. */ static inline OffsetNumber ItemPointerGetOffsetNumberNoCheck(const ItemPointerData *pointer) { return pointer->ip_posid; } /* * ItemPointerGetOffsetNumber * As above, but verifies that the item pointer looks valid. */ static inline OffsetNumber ItemPointerGetOffsetNumber(const ItemPointerData *pointer) { Assert(ItemPointerIsValid(pointer)); return ItemPointerGetOffsetNumberNoCheck(pointer); } /* * ItemPointerSet * Sets a disk item pointer to the specified block and offset. */ static inline void ItemPointerSet(ItemPointerData *pointer, BlockNumber blockNumber, OffsetNumber offNum) { Assert(PointerIsValid(pointer)); BlockIdSet(&pointer->ip_blkid, blockNumber); pointer->ip_posid = offNum; } /* * ItemPointerSetBlockNumber * Sets a disk item pointer to the specified block. */ static inline void ItemPointerSetBlockNumber(ItemPointerData *pointer, BlockNumber blockNumber) { Assert(PointerIsValid(pointer)); BlockIdSet(&pointer->ip_blkid, blockNumber); } /* * ItemPointerSetOffsetNumber * Sets a disk item pointer to the specified offset. */ static inline void ItemPointerSetOffsetNumber(ItemPointerData *pointer, OffsetNumber offsetNumber) { Assert(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. */ static inline void ItemPointerCopy(const ItemPointerData *fromPointer, ItemPointerData *toPointer) { Assert(PointerIsValid(toPointer)); Assert(PointerIsValid(fromPointer)); *toPointer = *fromPointer; } /* * ItemPointerSetInvalid * Sets a disk item pointer to be invalid. */ static inline void ItemPointerSetInvalid(ItemPointerData *pointer) { Assert(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. */ static inline bool ItemPointerIndicatesMovedPartitions(const ItemPointerData *pointer) { return ItemPointerGetOffsetNumber(pointer) == MovedPartitionsOffsetNumber && ItemPointerGetBlockNumberNoCheck(pointer) == MovedPartitionsBlockNumber; } /* * ItemPointerSetMovedPartitions * Indicate that the item referenced by the itempointer has moved into a * different partition. */ static inline void ItemPointerSetMovedPartitions(ItemPointerData *pointer) { ItemPointerSet(pointer, MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber); } /* ---------------- * externs * ---------------- */ extern bool ItemPointerEquals(ItemPointer pointer1, ItemPointer pointer2); extern int32 ItemPointerCompare(ItemPointer arg1, ItemPointer arg2); extern void ItemPointerInc(ItemPointer pointer); extern void ItemPointerDec(ItemPointer pointer); /* ---------------- * Datum conversion functions * ---------------- */ static inline ItemPointer DatumGetItemPointer(Datum X) { return (ItemPointer) DatumGetPointer(X); } static inline Datum ItemPointerGetDatum(const ItemPointerData *X) { return PointerGetDatum(X); } #define PG_GETARG_ITEMPOINTER(n) DatumGetItemPointer(PG_GETARG_DATUM(n)) #define PG_RETURN_ITEMPOINTER(x) return ItemPointerGetDatum(x) #endif /* ITEMPTR_H */ libpg_query-17-6.1.0/src/postgres/include/storage/large_object.h000066400000000000000000000071211477334012600246120ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 PGDLLIMPORT 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-17-6.1.0/src/postgres/include/storage/latch.h000066400000000000000000000164001477334012600232650ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 #include "utils/resowner.h" /* * 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; sig_atomic_t maybe_sleeping; 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_CLOSED (1 << 7) #ifdef WIN32 #define WL_SOCKET_ACCEPT (1 << 8) #else /* avoid having to deal with case on platforms not requiring it */ #define WL_SOCKET_ACCEPT WL_SOCKET_READABLE #endif #define WL_SOCKET_MASK (WL_SOCKET_READABLE | \ WL_SOCKET_WRITEABLE | \ WL_SOCKET_CONNECTED | \ WL_SOCKET_ACCEPT | \ WL_SOCKET_CLOSED) 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 void ShutdownLatchSupport(void); extern WaitEventSet *CreateWaitEventSet(ResourceOwner resowner, int nevents); extern void FreeWaitEventSet(WaitEventSet *set); extern void FreeWaitEventSetAfterFork(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); extern void InitializeLatchWaitSet(void); extern int GetNumRegisteredWaitEvents(WaitEventSet *set); extern bool WaitEventSetCanReportClosed(void); #endif /* LATCH_H */ libpg_query-17-6.1.0/src/postgres/include/storage/lmgr.h000066400000000000000000000121361477334012600231350ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * lmgr.h * POSTGRES lock manager definitions. * * * Portions Copyright (c) 1996-2024, 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 void LockRelationId(LockRelId *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 CheckRelationOidLockedByMe(Oid relid, 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 bool ConditionalLockDatabaseObject(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 bool ConditionalLockSharedObject(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); extern void LockApplyTransactionForSession(Oid suboid, TransactionId xid, uint16 objid, LOCKMODE lockmode); extern void UnlockApplyTransactionForSession(Oid suboid, TransactionId xid, uint16 objid, 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-17-6.1.0/src/postgres/include/storage/lock.h000066400000000000000000000613631477334012600231320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * lock.h * POSTGRES low-level lock mechanism * * * Portions Copyright (c) 1996-2024, 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 "lib/ilist.h" #include "storage/lockdefs.h" #include "storage/lwlock.h" #include "storage/procnumber.h" #include "storage/shmem.h" #include "utils/timestamp.h" /* struct PGPROC is declared in proc.h, but must forward-reference it */ typedef struct PGPROC PGPROC; /* GUC variables */ extern PGDLLIMPORT int max_locks_per_xact; #ifdef LOCK_DEBUG extern PGDLLIMPORT int Trace_lock_oidmin; extern PGDLLIMPORT bool Trace_locks; extern PGDLLIMPORT bool Trace_userlocks; extern PGDLLIMPORT int Trace_lock_table; extern PGDLLIMPORT bool Debug_deadlocks; #endif /* LOCK_DEBUG */ /* * Top-level transactions are identified by VirtualTransactionIDs comprising * PGPROC fields procNumber and lxid. For recovered prepared transactions, the * LocalTransactionId is an ordinary XID; LOCKTAG_VIRTUALTRANSACTION never * refers to that kind. 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 proc number 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 { ProcNumber procNumber; /* proc number of the PGPROC */ LocalTransactionId localTransactionId; /* lxid from PGPROC */ } VirtualTransactionId; #define InvalidLocalTransactionId 0 #define LocalTransactionIdIsValid(lxid) ((lxid) != InvalidLocalTransactionId) #define VirtualTransactionIdIsValid(vxid) \ (LocalTransactionIdIsValid((vxid).localTransactionId)) #define VirtualTransactionIdIsRecoveredPreparedXact(vxid) \ ((vxid).procNumber == INVALID_PROC_NUMBER) #define VirtualTransactionIdEquals(vxid1, vxid2) \ ((vxid1).procNumber == (vxid2).procNumber && \ (vxid1).localTransactionId == (vxid2).localTransactionId) #define SetInvalidVirtualTransactionId(vxid) \ ((vxid).procNumber = INVALID_PROC_NUMBER, \ (vxid).localTransactionId = InvalidLocalTransactionId) #define GET_VXID_FROM_PGPROC(vxid_dst, proc) \ ((vxid_dst).procNumber = (proc).vxid.procNumber, \ (vxid_dst).localTransactionId = (proc).vxid.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 */ LOCKTAG_APPLY_TRANSACTION, /* transaction being applied on a logical * replication subscriber */ } LockTagType; #define LOCKTAG_LAST_TYPE LOCKTAG_APPLY_TRANSACTION extern PGDLLIMPORT 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).procNumber, \ (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) /* * ID info for a remote transaction on a logical replication subscriber is: DB * OID + SUBSCRIPTION OID + TRANSACTION ID + OBJID */ #define SET_LOCKTAG_APPLY_TRANSACTION(locktag,dboid,suboid,xid,objid) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (suboid), \ (locktag).locktag_field3 = (xid), \ (locktag).locktag_field4 = (objid), \ (locktag).locktag_type = LOCKTAG_APPLY_TRANSACTION, \ (locktag).locktag_lockmethodid = DEFAULT_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 */ dlist_head procLocks; /* list of PROCLOCK objects assoc. with lock */ dclist_head 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 */ dlist_node lockLink; /* list link in LOCK's list of proclocks */ dlist_node 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 */ VirtualTransactionId vxid; /* virtual transaction ID of this PGPROC */ TimestampTz waitStart; /* time at which this PGPROC started waiting * for lock */ 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(GetNumberFromPGProc(leader_pgproc)) /* * 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, bool orstronger); #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-17-6.1.0/src/postgres/include/storage/lockdefs.h000066400000000000000000000042051477334012600237640ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 PGDLLIMPORT 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, pg_atomic_uint64 *valptr, uint64 val); extern void LWLockReleaseAll(void); extern bool LWLockHeldByMe(LWLock *lock); extern bool LWLockAnyHeldByMe(LWLock *lock, int nlocks, size_t stride); extern bool LWLockHeldByMeInMode(LWLock *lock, LWLockMode mode); extern bool LWLockWaitForVar(LWLock *lock, pg_atomic_uint64 *valptr, uint64 oldval, uint64 *newval); extern void LWLockUpdateVar(LWLock *lock, pg_atomic_uint64 *valptr, uint64 val); 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_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_PGSTATS_DSA, LWTRANCHE_PGSTATS_HASH, LWTRANCHE_PGSTATS_DATA, LWTRANCHE_LAUNCHER_DSA, LWTRANCHE_LAUNCHER_HASH, LWTRANCHE_DSM_REGISTRY_DSA, LWTRANCHE_DSM_REGISTRY_HASH, LWTRANCHE_COMMITTS_SLRU, LWTRANCHE_MULTIXACTMEMBER_SLRU, LWTRANCHE_MULTIXACTOFFSET_SLRU, LWTRANCHE_NOTIFY_SLRU, LWTRANCHE_SERIAL_SLRU, LWTRANCHE_SUBTRANS_SLRU, LWTRANCHE_XACT_SLRU, LWTRANCHE_PARALLEL_VACUUM_DSA, 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-17-6.1.0/src/postgres/include/storage/lwlocknames.h000066400000000000000000000046431477334012600245170ustar00rootroot00000000000000/* autogenerated from src/include/storage/lwlocklist.h, 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 MultiXactGenLock (&MainLWLockArray[13].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 NotifyQueueLock (&MainLWLockArray[27].lock) #define SerializableXactHashLock (&MainLWLockArray[28].lock) #define SerializableFinishedListLock (&MainLWLockArray[29].lock) #define SerializablePredicateListLock (&MainLWLockArray[30].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 CommitTsLock (&MainLWLockArray[39].lock) #define ReplicationOriginLock (&MainLWLockArray[40].lock) #define MultiXactTruncationLock (&MainLWLockArray[41].lock) #define LogicalRepWorkerLock (&MainLWLockArray[43].lock) #define XactTruncationLock (&MainLWLockArray[44].lock) #define WrapLimitsVacuumLock (&MainLWLockArray[46].lock) #define NotifyQueueTailLock (&MainLWLockArray[47].lock) #define WaitEventCustomLock (&MainLWLockArray[48].lock) #define WALSummarizerLock (&MainLWLockArray[49].lock) #define DSMRegistryLock (&MainLWLockArray[50].lock) #define InjectionPointLock (&MainLWLockArray[51].lock) #define SerialControlLock (&MainLWLockArray[52].lock) #define NUM_INDIVIDUAL_LWLOCKS 53 libpg_query-17-6.1.0/src/postgres/include/storage/off.h000066400000000000000000000030321477334012600227410ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * off.h * POSTGRES disk "offset" definitions. * * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/storage/pg_sema.h000066400000000000000000000042171477334012600236100ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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-17-6.1.0/src/postgres/include/storage/pg_shmem.h000066400000000000000000000057061477334012600240000ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 PGDLLIMPORT int shared_memory_type; extern PGDLLIMPORT int huge_pages; extern PGDLLIMPORT int huge_page_size; /* Possible values for huge_pages and huge_pages_status */ typedef enum { HUGE_PAGES_OFF, HUGE_PAGES_ON, HUGE_PAGES_TRY, /* only for huge_pages */ HUGE_PAGES_UNKNOWN, /* only for huge_pages_status */ } HugePagesType; /* Possible values for shared_memory_type */ typedef enum { SHMEM_TYPE_WINDOWS, SHMEM_TYPE_SYSV, SHMEM_TYPE_MMAP, } PGShmemType; #ifndef WIN32 extern PGDLLIMPORT unsigned long UsedShmemSegID; #else extern PGDLLIMPORT HANDLE UsedShmemSegID; extern PGDLLIMPORT void *ShmemProtectiveRegion; #endif extern PGDLLIMPORT 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); extern void GetHugePageSize(Size *hugepagesize, int *mmap_flags); #endif /* PG_SHMEM_H */ libpg_query-17-6.1.0/src/postgres/include/storage/pmsignal.h000066400000000000000000000065531477334012600240140ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pmsignal.h * routines for signaling between the postmaster and its child processes * * * Portions Copyright (c) 1996-2024, 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_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; /* * Reasons why the postmaster would send SIGQUIT to its children. */ typedef enum { PMQUIT_NOT_SENT = 0, /* postmaster hasn't sent SIGQUIT */ PMQUIT_FOR_CRASH, /* some other backend bought the farm */ PMQUIT_FOR_STOP, /* immediate stop was commanded */ } QuitSignalReason; /* 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 void SetQuitSignalReason(QuitSignalReason reason); extern QuitSignalReason GetQuitSignalReason(void); 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 PGDLLIMPORT 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-17-6.1.0/src/postgres/include/storage/predicate.h000066400000000000000000000061061477334012600241340ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * predicate.h * POSTGRES public predicate locking definitions. * * * Portions Copyright (c) 1996-2024, 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 PGDLLIMPORT int max_predicate_locks_per_xact; extern PGDLLIMPORT int max_predicate_locks_per_relation; extern PGDLLIMPORT int max_predicate_locks_per_page; /* * 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 tuple_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-17-6.1.0/src/postgres/include/storage/proc.h000066400000000000000000000462171477334012600231460ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * proc.h * per-process shared memory data structures * * * Portions Copyright (c) 1996-2024, 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" #include "storage/procnumber.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. * * See src/test/isolation/specs/subxid-overflow.spec if you change this. */ #define PGPROC_MAX_CACHED_SUBXIDS 64 /* XXX guessed-at value */ typedef struct XidCacheStatus { /* number of cached subxids, never more than PGPROC_MAX_CACHED_SUBXIDS */ uint8 count; /* has PGPROC->subxids overflowed */ bool overflowed; } XidCacheStatus; struct XidCache { TransactionId xids[PGPROC_MAX_CACHED_SUBXIDS]; }; /* * Flags for PGPROC->statusFlags and PROC_HDR->statusFlags[] */ #define PROC_IS_AUTOVACUUM 0x01 /* is it an autovac worker? */ #define PROC_IN_VACUUM 0x02 /* currently running lazy vacuum */ #define PROC_IN_SAFE_IC 0x04 /* currently running CREATE INDEX * CONCURRENTLY or REINDEX * CONCURRENTLY on non-expressional, * non-partial index */ #define PROC_VACUUM_FOR_WRAPAROUND 0x08 /* set by autovac only */ #define PROC_IN_LOGICAL_DECODING 0x10 /* currently doing logical * decoding outside xact */ #define PROC_AFFECTS_ALL_HORIZONS 0x20 /* this proc's xmin must be * included in vacuum horizons * in all databases */ /* flags reset at EOXact */ #define PROC_VACUUM_STATE_MASK \ (PROC_IN_VACUUM | PROC_IN_SAFE_IC | PROC_VACUUM_FOR_WRAPAROUND) /* * Xmin-related flags. Make sure any flags that affect how the process' Xmin * value is interpreted by VACUUM are included here. */ #define PROC_XMIN_FLAGS (PROC_IN_VACUUM | PROC_IN_SAFE_IC) /* * 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 /* * Flags for PGPROC.delayChkptFlags * * These flags can be used to delay the start or completion of a checkpoint * for short periods. A flag is in effect if the corresponding bit is set in * the PGPROC of any backend. * * For our purposes here, a checkpoint has three phases: (1) determine the * location to which the redo pointer will be moved, (2) write all the * data durably to disk, and (3) WAL-log the checkpoint. * * Setting DELAY_CHKPT_START prevents the system from moving from phase 1 * to phase 2. This is useful when we are performing a WAL-logged modification * of data that will be flushed to disk in phase 2. By setting this flag * before writing WAL and clearing it after we've both written WAL and * performed the corresponding modification, we ensure that if the WAL record * is inserted prior to the new redo point, the corresponding data changes will * also be flushed to disk before the checkpoint can complete. (In the * extremely common case where the data being modified is in shared buffers * and we acquire an exclusive content lock on the relevant buffers before * writing WAL, this mechanism is not needed, because phase 2 will block * until we release the content lock and then flush the modified data to * disk.) * * Setting DELAY_CHKPT_COMPLETE prevents the system from moving from phase 2 * to phase 3. This is useful if we are performing a WAL-logged operation that * might invalidate buffers, such as relation truncation. In this case, we need * to ensure that any buffers which were invalidated and thus not flushed by * the checkpoint are actually destroyed on disk. Replay can cope with a file * or block that doesn't exist, but not with a block that has the wrong * contents. */ #define DELAY_CHKPT_START (1<<0) #define DELAY_CHKPT_COMPLETE (1<<1) typedef enum { PROC_WAIT_STATUS_OK, PROC_WAIT_STATUS_WAITING, PROC_WAIT_STATUS_ERROR, } ProcWaitStatus; /* * 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. * * We allow many fields of this struct to be accessed without locks, such as * delayChkptFlags and isBackgroundWorker. However, keep in mind that writing * mirrored ones (see below) requires holding ProcArrayLock or XidGenLock in * at least shared mode, so that pgxactoff does not change concurrently. * * Mirrored fields: * * Some fields in PGPROC (see "mirrored in ..." comment) are mirrored into an * element of more densely packed ProcGlobal arrays. These arrays are indexed * by PGPROC->pgxactoff. Both copies need to be maintained coherently. * * NB: The pgxactoff indexed value can *never* be accessed without holding * locks. * * See PROC_HDR for details. */ struct PGPROC { /* proc->links MUST BE FIRST IN STRUCT (see ProcSleep,ProcWakeup,etc) */ dlist_node links; /* list link if process is in a list */ dlist_head *procgloballist; /* procglobal list that owns this PGPROC */ PGSemaphore sem; /* ONE semaphore to sleep on */ ProcWaitStatus waitStatus; Latch procLatch; /* generic latch for process */ TransactionId xid; /* id of top-level transaction currently being * executed by this proc, if running and XID * is assigned; else InvalidTransactionId. * mirrored in ProcGlobal->xids[pgxactoff] */ 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 ! */ int pid; /* Backend's process ID; 0 if prepared xact */ int pgxactoff; /* offset into various ProcGlobal->arrays with * data mirrored from this PGPROC */ /* * Currently running top-level transaction's virtual xid. Together these * form a VirtualTransactionId, but we don't use that struct because this * is not atomically assignable as whole, and we want to enforce code to * consider both parts separately. See comments at VirtualTransactionId. */ struct { ProcNumber procNumber; /* For regular backends, equal to * GetNumberFromPGProc(proc). For prepared * xacts, ID of the original backend that * processed the transaction. For unused * PGPROC entries, INVALID_PROC_NUMBER. */ LocalTransactionId lxid; /* local id of top-level transaction * currently * being executed by this * proc, if running; else * InvalidLocalTransactionId */ } vxid; /* These fields are zero while a backend is still starting up: */ 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 not a regular backend. */ /* * 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. */ uint8 lwWaiting; /* see LWLockWaitState */ 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 */ pg_atomic_uint64 waitStart; /* time at which wait for lock acquisition * started */ int delayChkptFlags; /* for DELAY_CHKPT_* flags */ uint8 statusFlags; /* this backend's status flags, see PROC_* * above. mirrored in * ProcGlobal->statusFlags[pgxactoff] */ /* * 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 */ dlist_node 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. */ dlist_head myProcLocks[NUM_LOCK_PARTITIONS]; XidCacheStatus subxidStatus; /* mirrored with * ProcGlobal->subxidStates[i] */ 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 */ int64 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; /* * There is one ProcGlobal struct for the whole database cluster. * * Adding/Removing an entry into the procarray requires holding *both* * ProcArrayLock and XidGenLock in exclusive mode (in that order). Both are * needed because the dense arrays (see below) are accessed from * GetNewTransactionId() and GetSnapshotData(), and we don't want to add * further contention by both using the same lock. Adding/Removing a procarray * entry is much less frequent. * * Some fields in PGPROC are mirrored into more densely packed arrays (e.g. * xids), with one entry for each backend. These arrays only contain entries * for PGPROCs that have been added to the shared array with ProcArrayAdd() * (in contrast to PGPROC array which has unused PGPROCs interspersed). * * The dense arrays are indexed by PGPROC->pgxactoff. Any concurrent * ProcArrayAdd() / ProcArrayRemove() can lead to pgxactoff of a procarray * member to change. Therefore it is only safe to use PGPROC->pgxactoff to * access the dense array while holding either ProcArrayLock or XidGenLock. * * As long as a PGPROC is in the procarray, the mirrored values need to be * maintained in both places in a coherent manner. * * The denser separate arrays are beneficial for three main reasons: First, to * allow for as tight loops accessing the data as possible. Second, to prevent * updates of frequently changing data (e.g. xmin) from invalidating * cachelines also containing less frequently changing data (e.g. xid, * statusFlags). Third to condense frequently accessed data into as few * cachelines as possible. * * There are two main reasons to have the data mirrored between these dense * arrays and PGPROC. First, as explained above, a PGPROC's array entries can * only be accessed with either ProcArrayLock or XidGenLock held, whereas the * PGPROC entries do not require that (obviously there may still be locking * requirements around the individual field, separate from the concerns * here). That is particularly important for a backend to efficiently checks * it own values, which it often can safely do without locking. Second, the * PGPROC fields allow to avoid unnecessary accesses and modification to the * dense arrays. A backend's own PGPROC is more likely to be in a local cache, * whereas the cachelines for the dense array will be modified by other * backends (often removing it from the cache for other cores/sockets). At * commit/abort time a check of the PGPROC value can avoid accessing/dirtying * the corresponding array value. * * Basically it makes sense to access the PGPROC variable when checking a * single backend's data, especially when already looking at the PGPROC for * other reasons already. It makes sense to look at the "dense" arrays if we * need to look at many / most entries, because we then benefit from the * reduced indirection and better cross-process cache-ability. * * When entering a PGPROC for 2PC transactions with ProcArrayAdd(), the data * in the dense arrays is initialized from the PGPROC while it already holds * ProcArrayLock. */ typedef struct PROC_HDR { /* Array of PGPROC structures (not including dummies for prepared txns) */ PGPROC *allProcs; /* Array mirroring PGPROC.xid for each PGPROC currently in the procarray */ TransactionId *xids; /* * Array mirroring PGPROC.subxidStatus for each PGPROC currently in the * procarray. */ XidCacheStatus *subxidStates; /* * Array mirroring PGPROC.statusFlags for each PGPROC currently in the * procarray. */ uint8 *statusFlags; /* Length of allProcs array */ uint32 allProcCount; /* Head of list of free PGPROC structures */ dlist_head freeProcs; /* Head of list of autovacuum & special worker free PGPROC structures */ dlist_head autovacFreeProcs; /* Head of list of bgworker free PGPROC structures */ dlist_head bgworkerFreeProcs; /* Head of list of walsender free PGPROC structures */ dlist_head 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; /* Buffer id of the buffer that Startup process waits for pin on, or -1 */ int startupBufferPinWaitBufId; } PROC_HDR; extern PGDLLIMPORT PROC_HDR *ProcGlobal; extern PGDLLIMPORT PGPROC *PreparedXactProcs; /* * Accessors for getting PGPROC given a ProcNumber and vice versa. */ #define GetPGProcByNumber(n) (&ProcGlobal->allProcs[(n)]) #define GetNumberFromPGProc(proc) ((proc) - &ProcGlobal->allProcs[0]) /* * We set aside some extra PGPROC structures for "special worker" processes, * which are full-fledged backends (they can run transactions) * but are unique animals that there's never more than one of. * Currently there are two such processes: the autovacuum launcher * and the slotsync worker. */ #define NUM_SPECIAL_WORKER_PROCS 2 /* * We set aside some extra PGPROC structures for auxiliary processes, * ie things that aren't full-fledged backends (they cannot run transactions * or take heavyweight locks) but need shmem access. * * Background writer, checkpointer, WAL writer, WAL summarizer, and archiver * 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 6 slots. */ #define NUM_AUXILIARY_PROCS 6 /* configurable options */ extern PGDLLIMPORT int DeadlockTimeout; extern PGDLLIMPORT int StatementTimeout; extern PGDLLIMPORT int LockTimeout; extern PGDLLIMPORT int IdleInTransactionSessionTimeout; extern PGDLLIMPORT int TransactionTimeout; extern PGDLLIMPORT int IdleSessionTimeout; extern PGDLLIMPORT 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 SetStartupBufferPinWaitBufId(int bufid); extern int GetStartupBufferPinWaitBufId(void); extern bool HaveNFreeProcs(int n, int *nfree); extern void ProcReleaseLocks(bool isCommit); extern ProcWaitStatus ProcSleep(LOCALLOCK *locallock, LockMethod lockMethodTable, bool dontWait); extern void ProcWakeup(PGPROC *proc, ProcWaitStatus 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(ProcNumber procNumber); extern PGPROC *AuxiliaryPidGetProc(int pid); extern void BecomeLockGroupLeader(void); extern bool BecomeLockGroupMember(PGPROC *leader, int pid); #endif /* _PROC_H_ */ libpg_query-17-6.1.0/src/postgres/include/storage/procarray.h000066400000000000000000000102521477334012600241730ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * procarray.h * POSTGRES process array definitions. * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/procarray.h * *------------------------------------------------------------------------- */ #ifndef PROCARRAY_H #define PROCARRAY_H #include "storage/lock.h" #include "storage/standby.h" #include "utils/relcache.h" #include "utils/snapshot.h" extern Size ProcArrayShmemSize(void); extern void CreateSharedProcArray(void); extern void ProcArrayAdd(PGPROC *proc); extern void ProcArrayRemove(PGPROC *proc, TransactionId latestXid); extern void ProcArrayEndTransaction(PGPROC *proc, TransactionId latestXid); extern void ProcArrayClearTransaction(PGPROC *proc); extern void ProcArrayInitRecovery(TransactionId initializedUptoXID); extern void ProcArrayApplyRecoveryInfo(RunningTransactions running); extern void ProcArrayApplyXidAssignment(TransactionId topxid, int nsubxids, TransactionId *subxids); extern void RecordKnownAssignedTransactionIds(TransactionId xid); extern void ExpireTreeKnownAssignedTransactionIds(TransactionId xid, int nsubxids, TransactionId *subxids, TransactionId max_xid); extern void ExpireAllKnownAssignedTransactionIds(void); extern void ExpireOldKnownAssignedTransactionIds(TransactionId xid); extern void KnownAssignedTransactionIdsIdleMaintenance(void); extern int GetMaxSnapshotXidCount(void); extern int GetMaxSnapshotSubxidCount(void); extern Snapshot GetSnapshotData(Snapshot snapshot); extern bool ProcArrayInstallImportedXmin(TransactionId xmin, VirtualTransactionId *sourcevxid); extern bool ProcArrayInstallRestoredXmin(TransactionId xmin, PGPROC *proc); extern RunningTransactions GetRunningTransactionData(void); extern bool TransactionIdIsInProgress(TransactionId xid); extern bool TransactionIdIsActive(TransactionId xid); extern TransactionId GetOldestNonRemovableTransactionId(Relation rel); extern TransactionId GetOldestTransactionIdConsideredRunning(void); extern TransactionId GetOldestActiveTransactionId(void); extern TransactionId GetOldestSafeDecodingTransactionId(bool catalogOnly); extern void GetReplicationHorizons(TransactionId *xmin, TransactionId *catalog_xmin); extern VirtualTransactionId *GetVirtualXIDsDelayingChkpt(int *nvxids, int type); extern bool HaveVirtualXIDsDelayingChkpt(VirtualTransactionId *vxids, int nvxids, int type); extern PGPROC *ProcNumberGetProc(int procNumber); extern void ProcNumberGetTransactionIds(int procNumber, TransactionId *xid, TransactionId *xmin, int *nsubxid, bool *overflowed); extern PGPROC *BackendPidGetProc(int pid); extern PGPROC *BackendPidGetProcWithLock(int pid); extern int BackendXidGetPid(TransactionId xid); extern bool IsBackendPid(int pid); extern VirtualTransactionId *GetCurrentVirtualXIDs(TransactionId limitXmin, bool excludeXmin0, bool allDbs, int excludeVacuum, int *nvxids); extern VirtualTransactionId *GetConflictingVirtualXIDs(TransactionId limitXmin, Oid dbOid); extern pid_t CancelVirtualTransaction(VirtualTransactionId vxid, ProcSignalReason sigmode); extern pid_t SignalVirtualTransaction(VirtualTransactionId vxid, ProcSignalReason sigmode, bool conflictPending); extern bool MinimumActiveBackends(int min); extern int CountDBBackends(Oid databaseid); extern int CountDBConnections(Oid databaseid); extern void CancelDBBackends(Oid databaseid, ProcSignalReason sigmode, bool conflictPending); extern int CountUserBackends(Oid roleid); extern bool CountOtherDBBackends(Oid databaseId, int *nbackends, int *nprepared); extern void TerminateOtherDBBackends(Oid databaseId); extern void XidCacheRemoveRunningXids(TransactionId xid, int nxids, const TransactionId *xids, TransactionId latestXid); extern void ProcArraySetReplicationSlotXmin(TransactionId xmin, TransactionId catalog_xmin, bool already_locked); extern void ProcArrayGetReplicationSlotXmin(TransactionId *xmin, TransactionId *catalog_xmin); #endif /* PROCARRAY_H */ libpg_query-17-6.1.0/src/postgres/include/storage/proclist_types.h000066400000000000000000000031751477334012600252620ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * proclist_types.h * doubly-linked lists of pgprocnos * * See proclist.h for functions that operate on these types. * * Portions Copyright (c) 2016-2024, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/storage/proclist_types.h *------------------------------------------------------------------------- */ #ifndef PROCLIST_TYPES_H #define PROCLIST_TYPES_H #include "storage/procnumber.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_PROC_NUMBER 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 { ProcNumber next; /* pgprocno of the next PGPROC */ ProcNumber 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_PROC_NUMBER. */ typedef struct proclist_head { ProcNumber head; /* pgprocno of the head PGPROC */ ProcNumber tail; /* pgprocno of the tail PGPROC */ } proclist_head; /* * List iterator allowing some modifications while iterating. */ typedef struct proclist_mutable_iter { ProcNumber cur; /* pgprocno of the current PGPROC */ ProcNumber next; /* pgprocno of the next PGPROC */ } proclist_mutable_iter; #endif /* PROCLIST_TYPES_H */ libpg_query-17-6.1.0/src/postgres/include/storage/procnumber.h000066400000000000000000000026201477334012600243450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * procnumber.h * definition of process number * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/procnumber.h * *------------------------------------------------------------------------- */ #ifndef PROCNUMBER_H #define PROCNUMBER_H /* * ProcNumber uniquely identifies an active backend or auxiliary process. * It's assigned at backend startup after authentication, when the process * adds itself to the proc array. It is an index into the proc array, * starting from 0. Note that a ProcNumber can be reused for a different * backend immediately after a backend exits. */ typedef int ProcNumber; #define INVALID_PROC_NUMBER (-1) /* * Proc number of this backend (same as GetNumberFromPGProc(MyProc)) */ extern PGDLLIMPORT ProcNumber MyProcNumber; /* proc number of our parallel session leader, or INVALID_PROC_NUMBER if none */ extern PGDLLIMPORT ProcNumber ParallelLeaderProcNumber; /* * The ProcNumber to use for our session's temp relations is normally our own, * but parallel workers should use their leader's proc number. */ #define ProcNumberForTempRelations() \ (ParallelLeaderProcNumber == INVALID_PROC_NUMBER ? MyProcNumber : ParallelLeaderProcNumber) #endif /* PROCNUMBER_H */ libpg_query-17-6.1.0/src/postgres/include/storage/procsignal.h000066400000000000000000000050611477334012600243340ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * procsignal.h * Routines for interprocess signaling * * * Portions Copyright (c) 1996-2024, 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/procnumber.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 */ PROCSIG_LOG_MEMORY_CONTEXT, /* ask backend to log the memory contexts */ PROCSIG_PARALLEL_APPLY_MESSAGE, /* Message from parallel apply workers */ /* Recovery conflict reasons */ PROCSIG_RECOVERY_CONFLICT_FIRST, PROCSIG_RECOVERY_CONFLICT_DATABASE = PROCSIG_RECOVERY_CONFLICT_FIRST, PROCSIG_RECOVERY_CONFLICT_TABLESPACE, PROCSIG_RECOVERY_CONFLICT_LOCK, PROCSIG_RECOVERY_CONFLICT_SNAPSHOT, PROCSIG_RECOVERY_CONFLICT_LOGICALSLOT, PROCSIG_RECOVERY_CONFLICT_BUFFERPIN, PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK, PROCSIG_RECOVERY_CONFLICT_LAST = PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK, NUM_PROCSIGNALS /* Must be last! */ } ProcSignalReason; typedef enum { PROCSIGNAL_BARRIER_SMGRRELEASE, /* ask smgr to close files */ } ProcSignalBarrierType; /* * prototypes for functions in procsignal.c */ extern Size ProcSignalShmemSize(void); extern void ProcSignalShmemInit(void); extern void ProcSignalInit(void); extern int SendProcSignal(pid_t pid, ProcSignalReason reason, ProcNumber procNumber); 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-17-6.1.0/src/postgres/include/storage/read_stream.h000066400000000000000000000044721477334012600244660ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * read_stream.h * Mechanism for accessing buffered relation data with look-ahead * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/read_stream.h * *------------------------------------------------------------------------- */ #ifndef READ_STREAM_H #define READ_STREAM_H #include "storage/bufmgr.h" /* Default tuning, reasonable for many users. */ #define READ_STREAM_DEFAULT 0x00 /* * I/O streams that are performing maintenance work on behalf of potentially * many users, and thus should be governed by maintenance_io_concurrency * instead of effective_io_concurrency. For example, VACUUM or CREATE INDEX. */ #define READ_STREAM_MAINTENANCE 0x01 /* * We usually avoid issuing prefetch advice automatically when sequential * access is detected, but this flag explicitly disables it, for cases that * might not be correctly detected. Explicit advice is known to perform worse * than letting the kernel (at least Linux) detect sequential access. */ #define READ_STREAM_SEQUENTIAL 0x02 /* * We usually ramp up from smaller reads to larger ones, to support users who * don't know if it's worth reading lots of buffers yet. This flag disables * that, declaring ahead of time that we'll be reading all available buffers. */ #define READ_STREAM_FULL 0x04 struct ReadStream; typedef struct ReadStream ReadStream; /* Callback that returns the next block number to read. */ typedef BlockNumber (*ReadStreamBlockNumberCB) (ReadStream *stream, void *callback_private_data, void *per_buffer_data); extern ReadStream *read_stream_begin_relation(int flags, BufferAccessStrategy strategy, Relation rel, ForkNumber forknum, ReadStreamBlockNumberCB callback, void *callback_private_data, size_t per_buffer_data_size); extern Buffer read_stream_next_buffer(ReadStream *stream, void **per_buffer_data); extern BlockNumber read_stream_next_block(ReadStream *stream, BufferAccessStrategy *strategy); extern void read_stream_reset(ReadStream *stream); extern void read_stream_end(ReadStream *stream); #endif /* READ_STREAM_H */ libpg_query-17-6.1.0/src/postgres/include/storage/relfilelocator.h000066400000000000000000000100051477334012600251730ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * relfilelocator.h * Physical access information for relations. * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/relfilelocator.h * *------------------------------------------------------------------------- */ #ifndef RELFILELOCATOR_H #define RELFILELOCATOR_H #include "common/relpath.h" #include "storage/procnumber.h" /* * RelFileLocator must provide all that we need to know to physically access * a relation, with the exception of the backend's proc number, 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. * * spcOid identifies the tablespace of the relation. It corresponds to * pg_tablespace.oid. * * dbOid identifies the database of the relation. It is zero for * "shared" relations (those common to all databases of a cluster). * Nonzero dbOid values correspond to pg_database.oid. * * relNumber identifies the specific relation. relNumber 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 relNumber is only unique within a database in a particular * tablespace. * * Note: spcOid must be GLOBALTABLESPACE_OID if and only if dbOid 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 RelFileLocator structs --- the real tablespace ID * must be supplied when setting spcOid. * * 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 RelFileLocators. * * Note: various places use RelFileLocator 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 RelFileLocator { Oid spcOid; /* tablespace */ Oid dbOid; /* database */ RelFileNumber relNumber; /* relation */ } RelFileLocator; /* * Augmenting a relfilelocator with the backend's proc number provides all the * information we need to locate the physical storage. 'backend' is * INVALID_PROC_NUMBER for regular relations (those accessible to more than * one backend), or the owning backend's proc number 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 RelFileLocatorBackend { RelFileLocator locator; ProcNumber backend; } RelFileLocatorBackend; #define RelFileLocatorBackendIsTemp(rlocator) \ ((rlocator).backend != INVALID_PROC_NUMBER) /* * Note: RelFileLocatorEquals and RelFileLocatorBackendEquals compare relNumber * first since that is most likely to be different in two unequal * RelFileLocators. It is probably redundant to compare spcOid if the other * fields are found equal, but do it anyway to be sure. Likewise for checking * the backend number in RelFileLocatorBackendEquals. */ #define RelFileLocatorEquals(locator1, locator2) \ ((locator1).relNumber == (locator2).relNumber && \ (locator1).dbOid == (locator2).dbOid && \ (locator1).spcOid == (locator2).spcOid) #define RelFileLocatorBackendEquals(locator1, locator2) \ ((locator1).locator.relNumber == (locator2).locator.relNumber && \ (locator1).locator.dbOid == (locator2).locator.dbOid && \ (locator1).backend == (locator2).backend && \ (locator1).locator.spcOid == (locator2).locator.spcOid) #endif /* RELFILELOCATOR_H */ libpg_query-17-6.1.0/src/postgres/include/storage/s_lock.h000066400000000000000000000610101477334012600234410ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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) { 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) { 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__ */ /* * 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__) #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) /* * Using an ISB instruction to delay in spinlock loops appears beneficial on * high-core-count ARM64 processors. It seems mostly a wash for smaller gear, * and ISB doesn't exist at all on pre-v7 ARM chips. */ #if defined(__aarch64__) #define SPIN_DELAY() spin_delay() static __inline__ void spin_delay(void) { __asm__ __volatile__( " isb; \n"); } #endif /* __aarch64__ */ #endif /* HAVE_GCC__SYNC_INT32_TAS */ #endif /* __arm__ || __arm || __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 members 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) { 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. * But if the spinlock is in ordinary memory, we can use lwsync instead for * better performance. */ static __inline__ int tas(volatile slock_t *lock) { slock_t _t; int _res; __asm__ __volatile__( " lwarx %0,0,%3,1 \n" " cmpwi %0,0 \n" " bne 1f \n" " addi %0,%0,1 \n" " stwcx. %0,0,%3 \n" " beq 2f \n" "1: \n" " li %1,1 \n" " b 3f \n" "2: \n" " lwsync \n" " li %1,0 \n" "3: \n" : "=&b"(_t), "=r"(_res), "+m"(*lock) : "r"(lock) : "memory", "cc"); return _res; } /* * PowerPC S_UNLOCK is almost standard but requires a "sync" instruction. * But we can use lwsync instead for better performance. */ #define S_UNLOCK(lock) \ do \ { \ __asm__ __volatile__ (" lwsync \n" ::: "memory"); \ *((volatile slock_t *) (lock)) = 0; \ } while (0) #endif /* powerpc */ #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) { volatile slock_t *_l = lock; int _res; 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(__hppa) || defined(__hppa__) /* HP PA-RISC */ /* * HP's PA-RISC * * 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. */ #define HAS_TEST_AND_SET typedef struct { int sema[4]; } slock_t; #define TAS_ACTIVE_WORD(lock) ((volatile int *) (((uintptr_t) (lock) + 15) & ~15)) static __inline__ int tas(volatile slock_t *lock) { volatile int *lockword = TAS_ACTIVE_WORD(lock); int lockval; /* * The LDCWX instruction atomically clears the target word and * returns the previous value. Hence, if the instruction returns * 0, someone else has already acquired the lock before we tested * it (i.e., we have failed). * * Notice that this means that we actually clear the word to set * the lock and set the word to clear the lock. This is the * opposite behavior from the SPARC LDSTUB instruction. For some * reason everything that H-P does is rather baroque... * * For details about the LDCWX instruction, see the "Precision * Architecture and Instruction Reference Manual" (09740-90014 of June * 1987), p. 5-38. */ __asm__ __volatile__( " ldcwx 0(0,%2),%0 \n" : "=r"(lockval), "+m"(*lockword) : "r"(lockword) : "memory"); return (lockval == 0); } #define S_UNLOCK(lock) \ do { \ __asm__ __volatile__("" : : : "memory"); \ *TAS_ACTIVE_WORD(lock) = -1; \ } while (0) #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 we have no platform-specific knowledge, but we found that the compiler * provides __sync_lock_test_and_set(), use that. Prefer the int-width * version over the char-width version if we have both, on the rather dubious * grounds that that's known to be more likely to work in the ARM ecosystem. * (But we dealt with ARM above.) */ #if !defined(HAS_TEST_AND_SET) #if defined(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) #elif defined(HAVE_GCC__SYNC_CHAR_TAS) #define HAS_TEST_AND_SET #define TAS(lock) tas(lock) typedef char 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 /* !defined(HAS_TEST_AND_SET) */ /* * 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 */ /* 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__, __func__) : 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 */ /* * 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__, __func__) extern void perform_spin_delay(SpinDelayStatus *status); extern void finish_spin_delay(SpinDelayStatus *status); #endif /* S_LOCK_H */ libpg_query-17-6.1.0/src/postgres/include/storage/sharedfileset.h000066400000000000000000000020141477334012600250100ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sharedfileset.h * Shared temporary file management. * * * Portions Copyright (c) 1996-2024, 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/fileset.h" #include "storage/spin.h" /* * A set of temporary files that can be shared by multiple backends. */ typedef struct SharedFileSet { FileSet fs; slock_t mutex; /* mutex protecting the reference count */ int refcnt; /* number of attached backends */ } SharedFileSet; extern void SharedFileSetInit(SharedFileSet *fileset, dsm_segment *seg); extern void SharedFileSetAttach(SharedFileSet *fileset, dsm_segment *seg); extern void SharedFileSetDeleteAll(SharedFileSet *fileset); #endif libpg_query-17-6.1.0/src/postgres/include/storage/shm_mq.h000066400000000000000000000053011477334012600234540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * shm_mq.h * single-reader, single-writer shared memory message queue * * Portions Copyright (c) 1996-2024, 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, bool force_flush); extern shm_mq_result shm_mq_sendv(shm_mq_handle *mqh, shm_mq_iovec *iov, int iovcnt, bool nowait, bool force_flush); 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-17-6.1.0/src/postgres/include/storage/shm_toc.h000066400000000000000000000043171477334012600236320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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-17-6.1.0/src/postgres/include/storage/shmem.h000066400000000000000000000040701477334012600233030ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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" /* 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; #endif /* SHMEM_H */ libpg_query-17-6.1.0/src/postgres/include/storage/sinval.h000066400000000000000000000130261477334012600234670ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sinval.h * POSTGRES shared cache invalidation communication definitions. * * * Portions Copyright (c) 1996-2024, 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/relfilelocator.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 procno, if temprel */ uint16 backend_lo; /* low bits of backend procno, if temprel */ RelFileLocator rlocator; /* spcOid, dbOid, relNumber */ } 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 PGDLLIMPORT uint64 SharedInvalidMessageCounter; extern PGDLLIMPORT 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-17-6.1.0/src/postgres/include/storage/smgr.h000066400000000000000000000115711477334012600231460ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * smgr.h * storage manager switch public interface declarations. * * * Portions Copyright (c) 1996-2024, 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/relfilelocator.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 smgrdestroy(). Note that neither of these * operations imply I/O, they just create or destroy a hashtable entry. (But * smgrdestroy() may release associated resources, such as OS-level file * descriptors.) * * An SMgrRelation may be "pinned", to prevent it from being destroyed while * it's in use. We use this to prevent pointers relcache to smgr from being * invalidated. SMgrRelations that are not pinned are deleted at end of * transaction. */ typedef struct SMgrRelationData { /* rlocator is the hashtable lookup key, so it must be first! */ RelFileLocatorBackend smgr_rlocator; /* relation physical identifier */ /* * The following fields are reset to InvalidBlockNumber upon a cache flush * event, and hold the last known size for each fork. This information is * currently only reliable during recovery, since there is no cache * invalidation for fork extension. */ BlockNumber smgr_targblock; /* current insertion target block */ BlockNumber smgr_cached_nblocks[MAX_FORKNUM + 1]; /* last known size */ /* 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]; /* * Pinning support. If unpinned (ie. pincount == 0), 'node' is a list * link in list of all unpinned SMgrRelations. */ int pincount; dlist_node node; } SMgrRelationData; typedef SMgrRelationData *SMgrRelation; #define SmgrIsTemp(smgr) \ RelFileLocatorBackendIsTemp((smgr)->smgr_rlocator) extern void smgrinit(void); extern SMgrRelation smgropen(RelFileLocator rlocator, ProcNumber backend); extern bool smgrexists(SMgrRelation reln, ForkNumber forknum); extern void smgrpin(SMgrRelation reln); extern void smgrunpin(SMgrRelation reln); extern void smgrclose(SMgrRelation reln); extern void smgrdestroyall(void); extern void smgrrelease(SMgrRelation reln); extern void smgrreleaseall(void); extern void smgrreleaserellocator(RelFileLocatorBackend rlocator); 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, const void *buffer, bool skipFsync); extern void smgrzeroextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, int nblocks, bool skipFsync); extern bool smgrprefetch(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, int nblocks); extern void smgrreadv(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, void **buffers, BlockNumber nblocks); extern void smgrwritev(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, const void **buffers, BlockNumber nblocks, bool skipFsync); extern void smgrwriteback(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, BlockNumber nblocks); extern BlockNumber smgrnblocks(SMgrRelation reln, ForkNumber forknum); extern BlockNumber smgrnblocks_cached(SMgrRelation reln, ForkNumber forknum); extern void smgrtruncate(SMgrRelation reln, ForkNumber *forknum, int nforks, BlockNumber *nblocks); extern void smgrtruncate2(SMgrRelation reln, ForkNumber *forknum, int nforks, BlockNumber *old_nblocks, BlockNumber *nblocks); extern void smgrimmedsync(SMgrRelation reln, ForkNumber forknum); extern void smgrregistersync(SMgrRelation reln, ForkNumber forknum); extern void AtEOXact_SMgr(void); extern bool ProcessBarrierSmgrRelease(void); static inline void smgrread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, void *buffer) { smgrreadv(reln, forknum, blocknum, &buffer, 1); } static inline void smgrwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, const void *buffer, bool skipFsync) { smgrwritev(reln, forknum, blocknum, &buffer, 1, skipFsync); } #endif /* SMGR_H */ libpg_query-17-6.1.0/src/postgres/include/storage/spin.h000066400000000000000000000046731477334012600231540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 PGDLLIMPORT PGSemaphore *SpinlockSemaArray; #endif #endif /* SPIN_H */ libpg_query-17-6.1.0/src/postgres/include/storage/standby.h000066400000000000000000000102701477334012600236350ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * standby.h * Definitions for hot standby mode. * * * Portions Copyright (c) 1996-2024, 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 "datatype/timestamp.h" #include "storage/lock.h" #include "storage/procsignal.h" #include "storage/relfilelocator.h" #include "storage/standbydefs.h" /* User-settable GUC parameters */ extern PGDLLIMPORT int max_standby_archive_delay; extern PGDLLIMPORT int max_standby_streaming_delay; extern PGDLLIMPORT bool log_recovery_conflict_waits; extern void InitRecoveryTransactionEnvironment(void); extern void ShutdownRecoveryTransactionEnvironment(void); extern void ResolveRecoveryConflictWithSnapshot(TransactionId snapshotConflictHorizon, bool isCatalogRel, RelFileLocator locator); extern void ResolveRecoveryConflictWithSnapshotFullXid(FullTransactionId snapshotConflictHorizon, bool isCatalogRel, RelFileLocator locator); extern void ResolveRecoveryConflictWithTablespace(Oid tsid); extern void ResolveRecoveryConflictWithDatabase(Oid dbid); extern void ResolveRecoveryConflictWithLock(LOCKTAG locktag, bool logging_conflict); extern void ResolveRecoveryConflictWithBufferPin(void); extern void CheckRecoveryConflictDeadlock(void); extern void StandbyDeadLockHandler(void); extern void StandbyTimeoutHandler(void); extern void StandbyLockTimeoutHandler(void); extern void LogRecoveryConflict(ProcSignalReason reason, TimestampTz wait_start, TimestampTz now, VirtualTransactionId *wait_list, bool still_waiting); /* * 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 enum { SUBXIDS_IN_ARRAY, /* xids array includes all running subxids */ SUBXIDS_MISSING, /* snapshot overflowed, subxids are missing */ SUBXIDS_IN_SUBTRANS, /* subxids are not included in 'xids', but * pg_subtrans is fully up-to-date */ } subxids_array_status; typedef struct RunningTransactionsData { int xcnt; /* # of xact ids in xids[] */ int subxcnt; /* # of subxact ids in xids[] */ subxids_array_status subxid_status; TransactionId nextXid; /* xid from TransamVariables->nextXid */ TransactionId oldestRunningXid; /* *not* oldestXmin */ TransactionId oldestDatabaseRunningXid; /* same as above, but within the * current database */ 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-17-6.1.0/src/postgres/include/storage/standbydefs.h000066400000000000000000000044141477334012600245020ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * standbydefs.h * Frontend exposed definitions for hot standby mode. * * * Portions Copyright (c) 1996-2024, 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 TransamVariables->nextXid */ 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-17-6.1.0/src/postgres/include/storage/sync.h000066400000000000000000000037711477334012600231550ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sync.h * File synchronization management code. * * Portions Copyright (c) 1996-2024, 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/relfilelocator.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, SYNC_HANDLER_CLOG, SYNC_HANDLER_COMMIT_TS, SYNC_HANDLER_MULTIXACT_OFFSET, SYNC_HANDLER_MULTIXACT_MEMBER, SYNC_HANDLER_NONE, } 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 */ RelFileLocator rlocator; uint64 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 bool RegisterSyncRequest(const FileTag *ftag, SyncRequestType type, bool retryOnError); #endif /* SYNC_H */ libpg_query-17-6.1.0/src/postgres/include/tcop/000077500000000000000000000000001477334012600213215ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/tcop/cmdtag.h000066400000000000000000000032631477334012600227350ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * cmdtag.h * Declarations for commandtag names and enumeration. * * Portions Copyright (c) 1996-2024, 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 /* buffer size required for command completion tags */ #define COMPLETION_TAG_BUFSIZE 64 #define PG_CMDTAG(tag, name, evtrgok, rwrok, rowcnt) \ tag, typedef enum CommandTag { #include "tcop/cmdtaglist.h" } 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 const char *GetCommandTagNameAndLen(CommandTag commandTag, Size *len); 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 *commandname); extern Size BuildQueryCompletionString(char *buff, const QueryCompletion *qc, bool nameonly); #endif /* CMDTAG_H */ libpg_query-17-6.1.0/src/postgres/include/tcop/cmdtaglist.h000066400000000000000000000345741477334012600236420ustar00rootroot00000000000000/*---------------------------------------------------------------------- * * 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-2024, 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, true, 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_LOGIN, "LOGIN", true, false, false) PG_CMDTAG(CMDTAG_MERGE, "MERGE", false, false, true) 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", true, 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-17-6.1.0/src/postgres/include/tcop/deparse_utility.h000066400000000000000000000040511477334012600247000ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * deparse_utility.h * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/tcop/dest.h000066400000000000000000000137751477334012600224460ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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" /* ---------------- * 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 */ DestExplainSerialize, /* results are serialized and discarded */ } 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-17-6.1.0/src/postgres/include/tcop/fastpath.h000066400000000000000000000010021477334012600232750ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fastpath.h * * * Portions Copyright (c) 1996-2024, 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 void HandleFunctionRequest(StringInfo msgBuf); #endif /* FASTPATH_H */ libpg_query-17-6.1.0/src/postgres/include/tcop/pquery.h000066400000000000000000000025341477334012600230230ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pquery.h * prototypes for pquery.c. * * * Portions Copyright (c) 1996-2024, 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" struct PlannedStmt; /* avoid including plannodes.h here */ 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); extern bool PlannedStmtRequiresSnapshot(struct PlannedStmt *pstmt); extern void EnsurePortalSnapshotExists(void); #endif /* PQUERY_H */ libpg_query-17-6.1.0/src/postgres/include/tcop/tcopprot.h000066400000000000000000000071101477334012600233430ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tcopprot.h * prototypes for postgres.c. * * * Portions Copyright (c) 1996-2024, 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/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 PGDLLIMPORT __thread CommandDest whereToSendOutput; extern PGDLLIMPORT __thread const char *debug_query_string; extern PGDLLIMPORT __thread int max_stack_depth; extern PGDLLIMPORT int PostAuthDelay; extern PGDLLIMPORT int client_connection_check_interval; /* 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; /* Flags for restrict_nonsystem_relation_kind value */ #define RESTRICT_RELKIND_VIEW 0x01 #define RESTRICT_RELKIND_FOREIGN_TABLE 0x02 extern PGDLLIMPORT int restrict_nonsystem_relation_kind; extern List *pg_parse_query(const char *query_string); extern List *pg_rewrite_query(Query *query); extern List *pg_analyze_and_rewrite_fixedparams(RawStmt *parsetree, const char *query_string, const Oid *paramTypes, int numParams, QueryEnvironment *queryEnv); extern List *pg_analyze_and_rewrite_varparams(RawStmt *parsetree, const char *query_string, Oid **paramTypes, int *numParams, QueryEnvironment *queryEnv); extern List *pg_analyze_and_rewrite_withcb(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 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 HandleRecoveryConflictInterrupt(ProcSignalReason reason); 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 PostgresSingleUserMain(int argc, char *argv[], const char *username) pg_attribute_noreturn(); extern void PostgresMain(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-17-6.1.0/src/postgres/include/tcop/utility.h000066400000000000000000000076331477334012600232060ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * utility.h * prototypes for utility.c. * * * Portions Copyright (c) 1996-2024, 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 primary. */ #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, bool readOnlyTree, 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, bool readOnlyTree, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc); extern void standard_ProcessUtility(PlannedStmt *pstmt, const char *queryString, bool readOnlyTree, 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-17-6.1.0/src/postgres/include/tsearch/000077500000000000000000000000001477334012600220055ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/tsearch/ts_cache.h000066400000000000000000000036611477334012600237350ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * ts_cache.h * Tsearch related object caches. * * Portions Copyright (c) 1996-2024, 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 "fmgr.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 PGDLLIMPORT 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); #endif /* TS_CACHE_H */ libpg_query-17-6.1.0/src/postgres/include/utils/000077500000000000000000000000001477334012600215145ustar00rootroot00000000000000libpg_query-17-6.1.0/src/postgres/include/utils/acl.h000066400000000000000000000257621477334012600224400ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * acl.h * Definition of (and support for) access control list data structures. * * * Portions Copyright (c) 1996-2024, 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 32 bits of the ai_privs field of an AclItem are the grant option * bits, and the lower 32 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 & 0xFFFFFFFF) #define ACLITEM_GET_GOPTIONS(item) (((item).ai_privs >> 32) & 0xFFFFFFFF) #define ACLITEM_GET_RIGHTS(item) ((item).ai_privs) #define ACL_GRANT_OPTION_FOR(privs) (((AclMode) (privs) & 0xFFFFFFFF) << 32) #define ACL_OPTION_TO_PRIVS(privs) (((AclMode) (privs) >> 32) & 0xFFFFFFFF) #define ACLITEM_SET_PRIVS(item,privs) \ ((item).ai_privs = ((item).ai_privs & ~((AclMode) 0xFFFFFFFF)) | \ ((AclMode) (privs) & 0xFFFFFFFF)) #define ACLITEM_SET_GOPTIONS(item,goptions) \ ((item).ai_privs = ((item).ai_privs & ~(((AclMode) 0xFFFFFFFF) << 32)) | \ (((AclMode) (goptions) & 0xFFFFFFFF) << 32)) #define ACLITEM_SET_RIGHTS(item,rights) \ ((item).ai_privs = (AclMode) (rights)) #define ACLITEM_SET_PRIVS_GOPTIONS(item,privs,goptions) \ ((item).ai_privs = ((AclMode) (privs) & 0xFFFFFFFF) | \ (((AclMode) (goptions) & 0xFFFFFFFF) << 32)) #define ACLITEM_ALL_PRIV_BITS ((AclMode) 0xFFFFFFFF) #define ACLITEM_ALL_GOPTION_BITS ((AclMode) 0xFFFFFFFF << 32) /* * 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' #define ACL_SET_CHR 's' #define ACL_ALTER_SYSTEM_CHR 'A' #define ACL_MAINTAIN_CHR 'm' /* string holding all privilege code chars, in order by bitmask position */ #define ACL_ALL_RIGHTS_STR "arwdDxtXUCTcsAm" /* * 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|ACL_MAINTAIN) #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_PARAMETER_ACL (ACL_SET|ACL_ALTER_SYSTEM) #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 member_can_set_role(Oid member, Oid role); extern void check_can_set_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 Oid select_best_admin(Oid member, Oid role); extern Oid get_role_oid(const char *rolname, bool missing_ok); extern Oid get_role_oid_or_public(const char *rolname); 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 AclMode pg_class_aclmask(Oid table_oid, Oid roleid, AclMode mask, AclMaskHow how); /* generic functions */ extern AclResult object_aclcheck(Oid classid, Oid objectid, Oid roleid, AclMode mode); extern AclResult object_aclcheck_ext(Oid classid, Oid objectid, Oid roleid, AclMode mode, bool *is_missing); /* special cases */ extern AclResult pg_attribute_aclcheck(Oid table_oid, AttrNumber attnum, Oid roleid, AclMode mode); extern AclResult pg_attribute_aclcheck_ext(Oid table_oid, AttrNumber attnum, Oid roleid, AclMode mode, bool *is_missing); extern AclResult pg_attribute_aclcheck_all(Oid table_oid, Oid roleid, AclMode mode, AclMaskHow how); extern AclResult pg_attribute_aclcheck_all_ext(Oid table_oid, Oid roleid, AclMode mode, AclMaskHow how, bool *is_missing); extern AclResult pg_class_aclcheck(Oid table_oid, Oid roleid, AclMode mode); extern AclResult pg_class_aclcheck_ext(Oid table_oid, Oid roleid, AclMode mode, bool *is_missing); extern AclResult pg_parameter_aclcheck(const char *name, Oid roleid, AclMode mode); extern AclResult pg_largeobject_aclcheck_snapshot(Oid lobj_oid, Oid roleid, AclMode mode, Snapshot snapshot); 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); extern void ReplaceRoleInInitPriv(Oid oldroleid, Oid newroleid, Oid classid, Oid objid, int32 objsubid); extern void RemoveRoleFromInitPriv(Oid roleid, Oid classid, Oid objid, int32 objsubid); /* ownercheck routines just return true (owner) or false (not) */ extern bool object_ownercheck(Oid classid, Oid objectid, Oid roleid); extern bool has_createrole_privilege(Oid roleid); extern bool has_bypassrls_privilege(Oid roleid); #endif /* ACL_H */ libpg_query-17-6.1.0/src/postgres/include/utils/aclchk_internal.h000066400000000000000000000026531477334012600250140ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * aclchk_internal.h * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/utils/array.h000066400000000000000000000444261477334012600230150ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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; /* * Maximum number of array subscripts (arbitrary limit) */ #define MAXDIM 6 /* * Maximum number of elements in an array. We limit this to at most about a * quarter billion elements, so that it's not necessary to check for overflow * in quite so many places --- for instance when palloc'ing Datum arrays. */ #define MaxArraySize ((Size) (MaxAllocSize / sizeof(Datum))) /* * 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 PGDLLIMPORT 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_array_builtin(Datum *elems, int nelems, Oid elmtype); 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 void deconstruct_array_builtin(ArrayType *array, Oid elmtype, 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 *initArrayResultWithSize(Oid element_type, MemoryContext rcontext, bool subcontext, int initsize); 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 ArrayGetNItems(int ndim, const int *dims); extern int ArrayGetNItemsSafe(int ndim, const int *dims, struct Node *escontext); extern void ArrayCheckBounds(int ndim, const int *dims, const int *lb); extern bool ArrayCheckBoundsSafe(int ndim, const int *dims, const int *lb, struct Node *escontext); 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-17-6.1.0/src/postgres/include/utils/ascii.h000066400000000000000000000043341477334012600227610ustar00rootroot00000000000000/*----------------------------------------------------------------------- * ascii.h * * Portions Copyright (c) 1999-2024, PostgreSQL Global Development Group * * src/include/utils/ascii.h * *----------------------------------------------------------------------- */ #ifndef _ASCII_H_ #define _ASCII_H_ #include "port/simd.h" extern void ascii_safe_strlcpy(char *dest, const char *src, size_t destsiz); /* * Verify a chunk of bytes for valid ASCII. * * Returns false if the input contains any zero bytes or bytes with the * high-bit set. Input len must be a multiple of the chunk size (8 or 16). */ static inline bool is_valid_ascii(const unsigned char *s, int len) { const unsigned char *const s_end = s + len; Vector8 chunk; Vector8 highbit_cum = vector8_broadcast(0); #ifdef USE_NO_SIMD Vector8 zero_cum = vector8_broadcast(0x80); #endif Assert(len % sizeof(chunk) == 0); while (s < s_end) { vector8_load(&chunk, s); /* Capture any zero bytes in this chunk. */ #ifdef USE_NO_SIMD /* * First, add 0x7f to each byte. This sets the high bit in each byte, * unless it was a zero. If any resulting high bits are zero, the * corresponding high bits in the zero accumulator will be cleared. * * If none of the bytes in the chunk had the high bit set, the max * value each byte can have after the addition is 0x7f + 0x7f = 0xfe, * and we don't need to worry about carrying over to the next byte. If * any input bytes did have the high bit set, it doesn't matter * because we check for those separately. */ zero_cum &= (chunk + vector8_broadcast(0x7F)); #else /* * Set all bits in each lane of the highbit accumulator where input * bytes are zero. */ highbit_cum = vector8_or(highbit_cum, vector8_eq(chunk, vector8_broadcast(0))); #endif /* Capture all set bits in this chunk. */ highbit_cum = vector8_or(highbit_cum, chunk); s += sizeof(chunk); } /* Check if any high bits in the high bit accumulator got set. */ if (vector8_is_highbit_set(highbit_cum)) return false; #ifdef USE_NO_SIMD /* Check if any high bits in the zero accumulator got cleared. */ if (zero_cum != vector8_broadcast(0x80)) return false; #endif return true; } #endif /* _ASCII_H_ */ libpg_query-17-6.1.0/src/postgres/include/utils/backend_progress.h000066400000000000000000000025071477334012600252040ustar00rootroot00000000000000/* ---------- * backend_progress.h * Command progress reporting definition. * * Note that this file provides the infrastructure for storing a single * backend's command progress counters, without ascribing meaning to the * individual fields. See commands/progress.h and system_views.sql for that. * * Copyright (c) 2001-2024, PostgreSQL Global Development Group * * src/include/utils/backend_progress.h * ---------- */ #ifndef BACKEND_PROGRESS_H #define BACKEND_PROGRESS_H /* ---------- * 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, PROGRESS_COMMAND_COPY, } ProgressCommandType; #define PGSTAT_NUM_PROGRESS_PARAM 20 extern void pgstat_progress_start_command(ProgressCommandType cmdtype, Oid relid); extern void pgstat_progress_update_param(int index, int64 val); extern void pgstat_progress_incr_param(int index, int64 incr); extern void pgstat_progress_parallel_incr_param(int index, int64 incr); extern void pgstat_progress_update_multi_param(int nparam, const int *index, const int64 *val); extern void pgstat_progress_end_command(void); #endif /* BACKEND_PROGRESS_H */ libpg_query-17-6.1.0/src/postgres/include/utils/backend_status.h000066400000000000000000000232401477334012600246600ustar00rootroot00000000000000/* ---------- * backend_status.h * Definitions related to backend status reporting * * Copyright (c) 2001-2024, PostgreSQL Global Development Group * * src/include/utils/backend_status.h * ---------- */ #ifndef BACKEND_STATUS_H #define BACKEND_STATUS_H #include "datatype/timestamp.h" #include "libpq/pqcomm.h" #include "miscadmin.h" /* for BackendType */ #include "storage/procnumber.h" #include "utils/backend_progress.h" /* ---------- * Backend states * ---------- */ typedef enum BackendState { STATE_UNDEFINED, STATE_IDLE, STATE_RUNNING, STATE_IDLEINTRANSACTION, STATE_FASTPATH, STATE_IDLEINTRANSACTION_ABORTED, STATE_DISABLED, } BackendState; /* ---------- * 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; 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 */ bool gss_delegation; /* If credentials delegated */ } PgBackendGSSStatus; /* ---------- * PgBackendStatus * * Each live backend maintains a PgBackendStatus struct in shared memory * showing its current activity. (The structs are allocated according to * ProcNumber, but that is not critical.) Note that this is unrelated to the * cumulative stats system (i.e. pgstat.c et al). * * 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]; /* query identifier, optionally computed using post_parse_analyze_hook */ uint64 st_query_id; } 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 proc number. */ ProcNumber proc_number; /* * 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; /* * Number of cached subtransactions in the current session. */ int backend_subxact_count; /* * The number of subtransactions in the current session which exceeded the * cached subtransaction limit. */ bool backend_subxact_overflowed; } LocalPgBackendStatus; /* ---------- * GUC parameters * ---------- */ extern PGDLLIMPORT bool pgstat_track_activities; extern PGDLLIMPORT int pgstat_track_activity_query_size; /* ---------- * Other global variables * ---------- */ extern PGDLLIMPORT PgBackendStatus *MyBEEntry; /* ---------- * Functions called from postmaster * ---------- */ extern Size BackendStatusShmemSize(void); extern void CreateSharedBackendStatus(void); /* ---------- * Functions called from backends * ---------- */ /* Initialization functions */ extern void pgstat_beinit(void); extern void pgstat_bestart(void); extern void pgstat_clear_backend_activity_snapshot(void); /* Activity reporting functions */ extern void pgstat_report_activity(BackendState state, const char *cmd_str); extern void pgstat_report_query_id(uint64 query_id, bool force); 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_backend_current_activity(int pid, bool checkUser); extern const char *pgstat_get_crashed_backend_activity(int pid, char *buffer, int buflen); extern uint64 pgstat_get_my_query_id(void); /* ---------- * Support functions for the SQL-callable functions to * generate the pgstat* views. * ---------- */ extern int pgstat_fetch_stat_numbackends(void); extern PgBackendStatus *pgstat_get_beentry_by_proc_number(ProcNumber procNumber); extern LocalPgBackendStatus *pgstat_get_local_beentry_by_proc_number(ProcNumber procNumber); extern LocalPgBackendStatus *pgstat_get_local_beentry_by_index(int idx); extern char *pgstat_clip_activity(const char *raw_activity); #endif /* BACKEND_STATUS_H */ libpg_query-17-6.1.0/src/postgres/include/utils/builtins.h000066400000000000000000000117071477334012600235240ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * builtins.h * Declarations for operations on built-in types. * * * Portions Copyright (c) 1996-2024, 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 bool domain_check_safe(Datum value, bool isnull, Oid domainType, void **extra, MemoryContext mcxt, Node *escontext); 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); extern uint64 hex_decode_safe(const char *src, size_t len, char *dst, Node *escontext); /* int.c */ extern int2vector *buildint2vector(const int16 *int2s, int n); /* name.c */ extern void namestrcpy(Name name, const char *str); extern int namestrcmp(Name name, const char *str); /* numutils.c */ extern int16 pg_strtoint16(const char *s); extern int16 pg_strtoint16_safe(const char *s, Node *escontext); extern int32 pg_strtoint32(const char *s); extern int32 pg_strtoint32_safe(const char *s, Node *escontext); extern int64 pg_strtoint64(const char *s); extern int64 pg_strtoint64_safe(const char *s, Node *escontext); extern uint32 uint32in_subr(const char *s, char **endloc, const char *typname, Node *escontext); extern uint64 uint64in_subr(const char *s, char **endloc, const char *typname, Node *escontext); extern int pg_itoa(int16 i, char *a); extern int pg_ultoa_n(uint32 value, char *a); extern int pg_ulltoa_n(uint64 value, char *a); extern int pg_ltoa(int32 value, char *a); extern int pg_lltoa(int64 value, char *a); extern char *pg_ultostr_zeropad(char *str, uint32 value, int32 minwidth); extern char *pg_ultostr(char *str, uint32 value); /* 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 PGDLLIMPORT __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); extern int xidLogicalComparator(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 */ #define FORMAT_TYPE_INVALID_AS_NULL 0x08 /* NULL if undefined */ 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-17-6.1.0/src/postgres/include/utils/bytea.h000066400000000000000000000011761477334012600227760ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * bytea.h * Declarations for BYTEA data type support. * * * Portions Copyright (c) 1996-2024, 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 PGDLLIMPORT int bytea_output; /* ByteaOutputType, but int for GUC * enum */ #endif /* BYTEA_H */ libpg_query-17-6.1.0/src/postgres/include/utils/catcache.h000066400000000000000000000207621477334012600234270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 */ int cc_nkeys; /* # of keys (1..CATCACHE_MAXKEYS) */ int cc_ntup; /* # of tuples currently in this cache */ int cc_nlist; /* # of CatCLists currently in this cache */ int cc_nlbuckets; /* # of CatCList hash buckets in this cache */ dlist_head *cc_lbucket; /* hash buckets for CatCLists */ 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 ResetCatalogCachesExt(bool debug_discard); 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)); #endif /* CATCACHE_H */ libpg_query-17-6.1.0/src/postgres/include/utils/date.h000066400000000000000000000065721477334012600226140ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * date.h * Definitions for the SQL "date" and "time" types. * * * Portions Copyright (c) 1996-2024, 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)) #define MAX_TIME_PRECISION 6 /* * Functions 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! */ static inline DateADT DatumGetDateADT(Datum X) { return (DateADT) DatumGetInt32(X); } static inline TimeADT DatumGetTimeADT(Datum X) { return (TimeADT) DatumGetInt64(X); } static inline TimeTzADT * DatumGetTimeTzADTP(Datum X) { return (TimeTzADT *) DatumGetPointer(X); } static inline Datum DateADTGetDatum(DateADT X) { return Int32GetDatum(X); } static inline Datum TimeADTGetDatum(TimeADT X) { return Int64GetDatum(X); } static inline Datum TimeTzADTPGetDatum(const TimeTzADT *X) { return 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-17-6.1.0/src/postgres/include/utils/datetime.h000066400000000000000000000265751477334012600235000ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 "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 PGDLLIMPORT const char *const months[]; /* months (3-char * abbreviations) */ extern PGDLLIMPORT const char *const days[]; /* days (full names) */ extern PGDLLIMPORT 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 suitable error report. For some of these codes, * DateTimeParseError requires additional information, which is carried * in struct DateTimeErrorExtra. */ #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) #define DTERR_BAD_TIMEZONE (-6) #define DTERR_BAD_ZONE_ABBREV (-7) typedef struct DateTimeErrorExtra { /* Needed for DTERR_BAD_TIMEZONE and DTERR_BAD_ZONE_ABBREV: */ const char *dtee_timezone; /* incorrect time zone name */ /* Needed for DTERR_BAD_ZONE_ABBREV: */ const char *dtee_abbrev; /* relevant time zone abbreviation */ } DateTimeErrorExtra; /* Result codes for DecodeTimezoneName() */ #define TZNAME_FIXED_OFFSET 0 #define TZNAME_DYNTZ 1 #define TZNAME_ZONE 2 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, DateTimeErrorExtra *extra); extern int DecodeTimezone(const char *str, int *tzp); extern int DecodeTimeOnly(char **field, int *ftype, int nf, int *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp, DateTimeErrorExtra *extra); extern int DecodeInterval(char **field, int *ftype, int nf, int range, int *dtype, struct pg_itm_in *itm_in); extern int DecodeISO8601Interval(char *str, int *dtype, struct pg_itm_in *itm_in); extern void DateTimeParseError(int dterr, DateTimeErrorExtra *extra, const char *str, const char *datatype, struct Node *escontext); 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_itm *itm, 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, const char *lowtoken, int *ftype, int *offset, pg_tz **tz, DateTimeErrorExtra *extra); extern int DecodeSpecial(int field, const char *lowtoken, int *val); extern int DecodeUnits(int field, const char *lowtoken, int *val); extern int DecodeTimezoneName(const char *tzname, int *offset, pg_tz **tz); extern pg_tz *DecodeTimezoneNameToTz(const char *tzname); extern int DecodeTimezoneAbbrevPrefix(const char *str, int *offset, pg_tz **tz); extern int j2day(int date); extern struct Node *TemporalSimplify(int32 max_precis, struct Node *node); extern bool CheckDateTokenTables(void); extern TimeZoneAbbrevTable *ConvertTimeZoneAbbrevs(struct tzEntry *abbrevs, int n); extern void InstallTimeZoneAbbrevs(TimeZoneAbbrevTable *tbl); extern bool AdjustTimestampForTypmod(Timestamp *time, int32 typmod, struct Node *escontext); #endif /* DATETIME_H */ libpg_query-17-6.1.0/src/postgres/include/utils/datum.h000066400000000000000000000045141477334012600230030ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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); /* * datum_image_hash * * Generates hash value for 'value' based on its bits rather than logical * value. */ extern uint32 datum_image_hash(Datum value, 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-17-6.1.0/src/postgres/include/utils/dsa.h000066400000000000000000000146261477334012600224450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * dsa.h * Dynamic shared memory areas. * * Portions Copyright (c) 1996-2024, 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) /* * The number of bits used to represent the offset part of a dsa_pointer. * This controls the maximum size of a segment, the maximum possible * allocation size and also the maximum number of segments per area. */ #if SIZEOF_DSA_POINTER == 4 #define DSA_OFFSET_WIDTH 27 /* 32 segments of size up to 128MB */ #else #define DSA_OFFSET_WIDTH 40 /* 1024 segments of size up to 1TB */ #endif /* * The default size of the initial DSM segment that backs a dsa_area created * by dsa_create. After creating some number of segments of the initial size * we'll double this size, and so on. Larger segments may be created if * necessary to satisfy large requests. */ #define DSA_DEFAULT_INIT_SEGMENT_SIZE ((size_t) (1 * 1024 * 1024)) /* The minimum size of a DSM segment. */ #define DSA_MIN_SEGMENT_SIZE ((size_t) (256 * 1024L)) /* The maximum size of a DSM segment. */ #define DSA_MAX_SEGMENT_SIZE ((size_t) 1 << DSA_OFFSET_WIDTH) /* 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) /* Create dsa_area with default segment sizes */ #define dsa_create(tranch_id) \ dsa_create_ext(tranch_id, DSA_DEFAULT_INIT_SEGMENT_SIZE, \ DSA_MAX_SEGMENT_SIZE) /* Create dsa_area with default segment sizes in an existing share memory space */ #define dsa_create_in_place(place, size, tranch_id, segment) \ dsa_create_in_place_ext(place, size, tranch_id, segment, \ DSA_DEFAULT_INIT_SEGMENT_SIZE, \ DSA_MAX_SEGMENT_SIZE) /* * 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; /* Sentinel value to use for invalid dsa_handles. */ #define DSA_HANDLE_INVALID ((dsa_handle) DSM_HANDLE_INVALID) extern dsa_area *dsa_create_ext(int tranche_id, size_t init_segment_size, size_t max_segment_size); extern dsa_area *dsa_create_in_place_ext(void *place, size_t size, int tranche_id, dsm_segment *segment, size_t init_segment_size, size_t max_segment_size); 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 size_t dsa_get_total_size(dsa_area *area); extern void dsa_trim(dsa_area *area); extern void dsa_dump(dsa_area *area); #endif /* DSA_H */ libpg_query-17-6.1.0/src/postgres/include/utils/elog.h000066400000000000000000000503631477334012600226220ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * elog.h * POSTGRES error reporting/logging definitions. * * * Portions Copyright (c) 1996-2024, 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 #include "lib/stringinfo.h" /* We cannot include nodes.h yet, so forward-declare struct Node */ struct Node; /* 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 PGWARNING 19 /* Must equal WARNING; see NOTE below. */ #define WARNING_CLIENT_ONLY 20 /* Warnings to be sent to client as usual, but * never to the server log. */ #define ERROR 21 /* user error - abort transaction; return to * known state */ #define PGERROR 21 /* Must equal ERROR; see NOTE below. */ #define FATAL 22 /* fatal error - abort process */ #define PANIC 23 /* take down the other backends with me */ /* * NOTE: the alternate names PGWARNING and PGERROR are useful for dealing * with third-party headers that make other definitions of WARNING and/or * ERROR. One can, for example, re-define ERROR as PGERROR after including * such a header. */ /* 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. * * When __builtin_constant_p is available and elevel >= ERROR we make a call * to errstart_cold() instead of errstart(). This version of the function is * marked with pg_attribute_cold which will coax supporting compilers into * generating code which is more optimized towards non-ERROR cases. Because * we use __builtin_constant_p() in the condition, when elevel is not a * compile-time constant, or if it is, but it's < ERROR, the compiler has no * need to generate any code for this branch. It can simply call errstart() * unconditionally. * * 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 (__builtin_constant_p(elevel) && (elevel) >= ERROR ? \ errstart_cold(elevel, domain) : \ errstart(elevel, domain)) \ __VA_ARGS__, errfinish(__FILE__, __LINE__, __func__); \ 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__, __func__); \ 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 message_level_is_interesting(int elevel); extern bool errstart(int elevel, const char *domain); extern pg_attribute_cold bool errstart_cold(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); extern int errhint_plural(const char *fmt_singular, const char *fmt_plural, unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4); /* * 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 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 geterrlevel(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 reporting "soft" errors that don't require a full transaction * abort to clean up. This is to be used in this way: * errsave(context, * errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), * errmsg("invalid input syntax for type %s: \"%s\"", * "boolean", in_str), * ... other errxxx() fields as needed ...); * * "context" is a node pointer or NULL, and the remaining auxiliary calls * provide the same error details as in ereport(). If context is not a * pointer to an ErrorSaveContext node, then errsave(context, ...) * behaves identically to ereport(ERROR, ...). If context is a pointer * to an ErrorSaveContext node, then the information provided by the * auxiliary calls is stored in the context node and control returns * normally. The caller of errsave() must then do any required cleanup * and return control back to its caller. That caller must check the * ErrorSaveContext node to see whether an error occurred before * it can trust the function's result to be meaningful. * * errsave_domain() allows a message domain to be specified; it is * precisely analogous to ereport_domain(). *---------- */ #define errsave_domain(context, domain, ...) \ do { \ struct Node *context_ = (context); \ pg_prevent_errno_in_scope(); \ if (errsave_start(context_, domain)) \ __VA_ARGS__, errsave_finish(context_, __FILE__, __LINE__, __func__); \ } while(0) #define errsave(context, ...) \ errsave_domain(context, TEXTDOMAIN, __VA_ARGS__) /* * "ereturn(context, dummy_value, ...);" is exactly the same as * "errsave(context, ...); return dummy_value;". This saves a bit * of typing in the common case where a function has no cleanup * actions to take after reporting a soft error. "dummy_value" * can be empty if the function returns void. */ #define ereturn_domain(context, dummy_value, domain, ...) \ do { \ errsave_domain(context, domain, __VA_ARGS__); \ return dummy_value; \ } while(0) #define ereturn(context, dummy_value, ...) \ ereturn_domain(context, dummy_value, TEXTDOMAIN, __VA_ARGS__) extern bool errsave_start(struct Node *context, const char *domain); extern void errsave_finish(struct Node *context, const char *filename, int lineno, const char *funcname); /* 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. * * Each of these macros accepts an optional argument which can be specified * to apply a suffix to the variables declared within the macros. This suffix * can be used to avoid the compiler emitting warnings about shadowed * variables when compiling with -Wshadow in situations where nested PG_TRY() * statements are required. The optional suffix may contain any character * that's allowed in a variable name. The suffix, if specified, must be the * same within each component macro of the given PG_TRY() statement. *---------- */ #define PG_TRY(...) \ do { \ sigjmp_buf *_save_exception_stack##__VA_ARGS__ = PG_exception_stack; \ ErrorContextCallback *_save_context_stack##__VA_ARGS__ = error_context_stack; \ sigjmp_buf _local_sigjmp_buf##__VA_ARGS__; \ bool _do_rethrow##__VA_ARGS__ = false; \ if (sigsetjmp(_local_sigjmp_buf##__VA_ARGS__, 0) == 0) \ { \ PG_exception_stack = &_local_sigjmp_buf##__VA_ARGS__ #define PG_CATCH(...) \ } \ else \ { \ PG_exception_stack = _save_exception_stack##__VA_ARGS__; \ error_context_stack = _save_context_stack##__VA_ARGS__ #define PG_FINALLY(...) \ } \ else \ _do_rethrow##__VA_ARGS__ = true; \ { \ PG_exception_stack = _save_exception_stack##__VA_ARGS__; \ error_context_stack = _save_context_stack##__VA_ARGS__ #define PG_END_TRY(...) \ } \ if (_do_rethrow##__VA_ARGS__) \ PG_RE_THROW(); \ PG_exception_stack = _save_exception_stack##__VA_ARGS__; \ error_context_stack = _save_context_stack##__VA_ARGS__; \ } 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 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 PGDLLIMPORT int Log_error_verbosity; extern PGDLLIMPORT char *Log_line_prefix; extern PGDLLIMPORT int Log_destination; extern PGDLLIMPORT char *Log_destination_string; extern PGDLLIMPORT bool syslog_sequence_numbers; extern PGDLLIMPORT 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 #define LOG_DESTINATION_JSONLOG 16 /* Other exported functions */ extern void log_status_format(StringInfo buf, const char *format, ErrorData *edata); extern void DebugFileOpen(void); extern char *unpack_sql_state(int sql_state); extern bool in_error_recursion_trouble(void); /* Common functions shared across destinations */ extern void reset_formatted_start_time(void); extern char *get_formatted_start_time(void); extern char *get_formatted_log_time(void); extern const char *get_backend_type_for_log(void); extern bool check_log_of_query(ErrorData *edata); extern const char *error_severity(int elevel); extern void write_pipe_chunks(char *data, int len, int dest); /* Destination-specific functions */ extern void write_csvlog(ErrorData *edata); extern void write_jsonlog(ErrorData *edata); /* * 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-17-6.1.0/src/postgres/include/utils/errcodes.h000066400000000000000000000534361477334012600235060ustar00rootroot00000000000000/* 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') #define ERRCODE_SQL_JSON_ITEM_CANNOT_BE_CAST_TO_TARGET_TYPE MAKE_SQLSTATE('2','2','0','3','G') /* 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') #define ERRCODE_TRANSACTION_TIMEOUT MAKE_SQLSTATE('2','5','P','0','4') /* 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') #define ERRCODE_IDLE_SESSION_TIMEOUT MAKE_SQLSTATE('5','7','P','0','5') /* 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 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-17-6.1.0/src/postgres/include/utils/expandeddatum.h000066400000000000000000000160551477334012600245170ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 #include "varatt.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.) */ static inline Datum EOHPGetRWDatum(const struct ExpandedObjectHeader *eohptr) { return PointerGetDatum(eohptr->eoh_rw_ptr); } static inline Datum EOHPGetRODatum(const struct ExpandedObjectHeader *eohptr) { return 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-17-6.1.0/src/postgres/include/utils/expandedrecord.h000066400000000000000000000230271477334012600246600ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * expandedrecord.h * Declarations for composite expanded objects. * * Portions Copyright (c) 1996-2024, 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 functions and macros for expanded record objects */ static inline Datum ExpandedRecordGetDatum(const ExpandedRecordHeader *erh) { return EOHPGetRWDatum(&erh->hdr); } static inline Datum ExpandedRecordGetRODatum(const ExpandedRecordHeader *erh) { return EOHPGetRODatum(&erh->hdr); } #define PG_GETARG_EXPANDED_RECORD(n) DatumGetExpandedRecord(PG_GETARG_DATUM(n)) #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-17-6.1.0/src/postgres/include/utils/float.h000066400000000000000000000204411477334012600227730ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * float.h * Definitions for the built-in floating-point types * * Portions Copyright (c) 1996-2024, 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 /* X/Open (XSI) requires to provide M_PI, but core POSIX does not */ #ifndef M_PI #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, struct Node *escontext); extern float4 float4in_internal(char *num, char **endptr_p, const char *type_name, const char *orig_string, struct Node *escontext); 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) && !isnan(val1)) float_zero_divide_error(); result = val1 / val2; if (unlikely(isinf(result)) && !isinf(val1)) float_overflow_error(); if (unlikely(result == 0.0f) && val1 != 0.0f && !isinf(val2)) float_underflow_error(); return result; } static inline float8 float8_div(const float8 val1, const float8 val2) { float8 result; if (unlikely(val2 == 0.0) && !isnan(val1)) float_zero_divide_error(); result = val1 / val2; if (unlikely(isinf(result)) && !isinf(val1)) float_overflow_error(); if (unlikely(result == 0.0) && val1 != 0.0 && !isinf(val2)) 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-17-6.1.0/src/postgres/include/utils/fmgroids.h000066400000000000000000003232661477334012600235130ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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. * * F_XXX macros are named after the proname field; if that is not unique, * we append the proargtypes field, replacing spaces with underscores. * For example, we have F_OIDEQ because that proname is unique, but * F_POW_FLOAT8_FLOAT8 (among others) because that proname is not. */ #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_INT4_CHAR 77 #define F_CHAR_INT4 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_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_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_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_FLOAT8_INT2 235 #define F_FLOAT4_INT2 236 #define F_INT2_FLOAT8 237 #define F_INT2_FLOAT4 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_FLOAT8_FLOAT4 311 #define F_FLOAT4_FLOAT8 312 #define F_INT4_INT2 313 #define F_INT2_INT4 314 #define F_PG_JIT_AVAILABLE 315 #define F_FLOAT8_INT4 316 #define F_INT4_FLOAT8 317 #define F_FLOAT4_INT4 318 #define F_INT4_FLOAT4 319 #define F_WIDTH_BUCKET_FLOAT8_FLOAT8_FLOAT8_INT4 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_STRING_TO_ARRAY_TEXT_TEXT_TEXT 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_STRING_ANYARRAY_TEXT_TEXT 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_STRING_TO_ARRAY_TEXT_TEXT 394 #define F_ARRAY_TO_STRING_ANYARRAY_TEXT 395 #define F_ARRAY_GE 396 #define F_SCALARGEJOINSEL 398 #define F_HASHMACADDR 399 #define F_HASHTEXT 400 #define F_TEXT_BPCHAR 401 #define F_BTOIDVECTORCMP 404 #define F_TEXT_NAME 406 #define F_NAME_TEXT 407 #define F_BPCHAR_NAME 408 #define F_NAME_BPCHAR 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_NUM_NULLS 438 #define F_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_INT4_INT8 480 #define F_INT8_INT4 481 #define F_FLOAT8_INT8 482 #define F_INT8_FLOAT8 483 #define F_ARRAY_LARGER 515 #define F_ARRAY_SMALLER 516 #define F_ABBREV_INET 598 #define F_ABBREV_CIDR 599 #define F_SET_MASKLEN_INET_INT4 605 #define F_OIDVECTORNE 619 #define F_HASH_ARRAY 626 #define F_SET_MASKLEN_CIDR_INT4 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_FLOAT4_INT8 652 #define F_INT8_FLOAT4 653 #define F_NAMELT 655 #define F_NAMELE 656 #define F_NAMEGT 657 #define F_NAMEGE 658 #define F_NAMENE 659 #define F_BPCHAR_BPCHAR_INT4_BOOL 668 #define F_VARCHAR_VARCHAR_INT4_BOOL 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 683 #define F_NETMASK 696 #define F_MASKLEN 697 #define F_BROADCAST 698 #define F_HOST 699 #define F_DIST_LP 702 #define F_DIST_LS 704 #define F_GETPGUSERNAME 710 #define F_FAMILY 711 #define F_INT2_INT8 714 #define F_LO_CREATE 715 #define F_OIDLT 716 #define F_OIDLE 717 #define F_OCTET_LENGTH_BYTEA 720 #define F_GET_BYTE 721 #define F_SET_BYTE 722 #define F_GET_BIT_BYTEA_INT8 723 #define F_SET_BIT_BYTEA_INT8_INT4 724 #define F_DIST_PL 725 #define F_DIST_SL 727 #define F_DIST_CPOLY 728 #define F_POLY_DISTANCE 729 #define F_TEXT_INET 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_CURRENT_USER 745 #define F_SESSION_USER 746 #define F_ARRAY_DIMS 747 #define F_ARRAY_NDIMS 748 #define F_OVERLAY_BYTEA_BYTEA_INT4_INT4 749 #define F_ARRAY_IN 750 #define F_ARRAY_OUT 751 #define F_OVERLAY_BYTEA_BYTEA_INT4 752 #define F_TRUNC_MACADDR 753 #define F_INT8_INT2 754 #define F_LO_IMPORT_TEXT 764 #define F_LO_EXPORT 765 #define F_INT4INC 766 #define F_LO_IMPORT_TEXT_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_POSITION_TEXT_TEXT 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_BPCHAR_CHAR 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_STRPOS 868 #define F_LOWER_TEXT 870 #define F_UPPER_TEXT 871 #define F_INITCAP 872 #define F_LPAD_TEXT_INT4_TEXT 873 #define F_RPAD_TEXT_INT4_TEXT 874 #define F_LTRIM_TEXT_TEXT 875 #define F_RTRIM_TEXT_TEXT 876 #define F_SUBSTR_TEXT_INT4_INT4 877 #define F_TRANSLATE 878 #define F_LPAD_TEXT_INT4 879 #define F_RPAD_TEXT_INT4 880 #define F_LTRIM_TEXT 881 #define F_RTRIM_TEXT 882 #define F_SUBSTR_TEXT_INT4 883 #define F_BTRIM_TEXT_TEXT 884 #define F_BTRIM_TEXT 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_SUBSTRING_TEXT_INT4_INT4 936 #define F_SUBSTRING_TEXT_INT4 937 #define F_GENERATE_SERIES_TIMESTAMP_TIMESTAMP_INTERVAL 938 #define F_GENERATE_SERIES_TIMESTAMPTZ_TIMESTAMPTZ_INTERVAL 939 #define F_MOD_INT2_INT2 940 #define F_MOD_INT4_INT4 941 #define F_INT28MI 942 #define F_INT28MUL 943 #define F_CHAR_TEXT 944 #define F_INT8MOD 945 #define F_TEXT_CHAR 946 #define F_MOD_INT8_INT8 947 #define F_INT28DIV 948 #define F_HASHINT8 949 #define F_LO_OPEN 952 #define F_LO_CLOSE 953 #define F_LOREAD 954 #define F_LOWRITE 955 #define F_LO_LSEEK 956 #define F_LO_CREAT 957 #define F_LO_TELL 958 #define F_ON_PL 959 #define F_ON_SL 960 #define F_CLOSE_PL 961 #define F_LO_UNLINK 964 #define F_HASHBPCHAREXTENDED 972 #define F_PATH_INTER 973 #define F_AREA_BOX 975 #define F_WIDTH 976 #define F_HEIGHT 977 #define F_BOX_DISTANCE 978 #define F_AREA_PATH 979 #define F_BOX_INTERSECT 980 #define F_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_SLOPE 992 #define F_LSEG_POINT_POINT 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_LO_TRUNCATE 1004 #define F_TEXTLIKE_SUPPORT 1023 #define F_TEXTICREGEXEQ_SUPPORT 1024 #define F_TEXTICLIKE_SUPPORT 1025 #define F_TIMEZONE_INTERVAL_TIMESTAMPTZ 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_ACLITEMEQ 1062 #define F_BPCHAR_LARGER 1063 #define F_BPCHAR_SMALLER 1064 #define F_PG_PREPARED_XACT 1065 #define F_GENERATE_SERIES_INT4_INT4_INT4 1066 #define F_GENERATE_SERIES_INT4_INT4 1067 #define F_GENERATE_SERIES_INT8_INT8_INT8 1068 #define F_GENERATE_SERIES_INT8_INT8 1069 #define F_BPCHARCMP 1078 #define F_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_PG_STAT_GET_WAL 1136 #define F_PG_GET_WAL_REPLAY_PAUSE_STATE 1137 #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_TIMESTAMPTZ_EQ 1152 #define F_TIMESTAMPTZ_NE 1153 #define F_TIMESTAMPTZ_LT 1154 #define F_TIMESTAMPTZ_LE 1155 #define F_TIMESTAMPTZ_GE 1156 #define F_TIMESTAMPTZ_GT 1157 #define F_TO_TIMESTAMP_FLOAT8 1158 #define F_TIMEZONE_TEXT_TIMESTAMPTZ 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_DATE_PART_TEXT_TIMESTAMPTZ 1171 #define F_DATE_PART_TEXT_INTERVAL 1172 #define F_NETWORK_SUBSET_SUPPORT 1173 #define F_TIMESTAMPTZ_DATE 1174 #define F_JUSTIFY_HOURS 1175 #define F_TIMESTAMPTZ_DATE_TIME 1176 #define F_JSONB_PATH_EXISTS_TZ 1177 #define F_DATE_TIMESTAMPTZ 1178 #define F_JSONB_PATH_QUERY_TZ 1179 #define F_JSONB_PATH_QUERY_ARRAY_TZ 1180 #define F_AGE_XID 1181 #define F_TIMESTAMPTZ_MI 1188 #define F_TIMESTAMPTZ_PL_INTERVAL 1189 #define F_TIMESTAMPTZ_MI_INTERVAL 1190 #define F_GENERATE_SUBSCRIPTS_ANYARRAY_INT4_BOOL 1191 #define F_GENERATE_SUBSCRIPTS_ANYARRAY_INT4 1192 #define F_ARRAY_FILL_ANYELEMENT__INT4 1193 #define F_LOG10_FLOAT8 1194 #define F_TIMESTAMPTZ_SMALLER 1195 #define F_TIMESTAMPTZ_LARGER 1196 #define F_INTERVAL_SMALLER 1197 #define F_INTERVAL_LARGER 1198 #define F_AGE_TIMESTAMPTZ_TIMESTAMPTZ 1199 #define F_INTERVAL_INTERVAL_INT4 1200 #define F_OBJ_DESCRIPTION_OID_NAME 1215 #define F_COL_DESCRIPTION 1216 #define F_DATE_TRUNC_TEXT_TIMESTAMPTZ 1217 #define F_DATE_TRUNC_TEXT_INTERVAL 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_TIMETZ_TIMETZ_TIMETZ 1271 #define F_DATETIME_PL 1272 #define F_DATE_PART_TEXT_TIMETZ 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_TEXT 1283 #define F_DATE_TRUNC_TEXT_TIMESTAMPTZ_TEXT 1284 #define F_QUOTE_LITERAL_ANYELEMENT 1285 #define F_ARRAY_FILL_ANYELEMENT__INT4__INT4 1286 #define F_OID 1287 #define F_INT8_OID 1288 #define F_QUOTE_NULLABLE_TEXT 1289 #define F_QUOTE_NULLABLE_ANYELEMENT 1290 #define F_SUPPRESS_REDUNDANT_UPDATES_TRIGGER 1291 #define F_TIDEQ 1292 #define F_UNNEST_ANYMULTIRANGE 1293 #define F_CURRTID2 1294 #define F_JUSTIFY_DAYS 1295 #define F_TIMEDATE_PL 1296 #define F_DATETIMETZ_PL 1297 #define F_TIMETZDATE_PL 1298 #define F_NOW 1299 #define F_POSITIONSEL 1300 #define F_POSITIONJOINSEL 1301 #define F_CONTSEL 1302 #define F_CONTJOINSEL 1303 #define F_OVERLAPS_TIMESTAMPTZ_TIMESTAMPTZ_TIMESTAMPTZ_TIMESTAMPTZ 1304 #define F_OVERLAPS_TIMESTAMPTZ_INTERVAL_TIMESTAMPTZ_INTERVAL 1305 #define F_OVERLAPS_TIMESTAMPTZ_TIMESTAMPTZ_TIMESTAMPTZ_INTERVAL 1306 #define F_OVERLAPS_TIMESTAMPTZ_INTERVAL_TIMESTAMPTZ_TIMESTAMPTZ 1307 #define F_OVERLAPS_TIME_TIME_TIME_TIME 1308 #define F_OVERLAPS_TIME_INTERVAL_TIME_INTERVAL 1309 #define F_OVERLAPS_TIME_TIME_TIME_INTERVAL 1310 #define F_OVERLAPS_TIME_INTERVAL_TIME_TIME 1311 #define F_TIMESTAMP_IN 1312 #define F_TIMESTAMP_OUT 1313 #define F_TIMESTAMPTZ_CMP 1314 #define F_INTERVAL_CMP 1315 #define F_TIME_TIMESTAMP 1316 #define F_LENGTH_TEXT 1317 #define F_LENGTH_BPCHAR 1318 #define F_XIDEQINT4 1319 #define F_INTERVAL_DIV 1326 #define F_DLOG10 1339 #define F_LOG_FLOAT8 1340 #define F_LN_FLOAT8 1341 #define F_ROUND_FLOAT8 1342 #define F_TRUNC_FLOAT8 1343 #define F_SQRT_FLOAT8 1344 #define F_CBRT 1345 #define F_POW_FLOAT8_FLOAT8 1346 #define F_EXP_FLOAT8 1347 #define F_OBJ_DESCRIPTION_OID 1348 #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_TIMESTAMPTZ_DATE_TIMETZ 1359 #define F_HOSTMASK 1362 #define F_TEXTREGEXEQ_SUPPORT 1364 #define F_MAKEACLITEM 1365 #define F_CHARACTER_LENGTH_BPCHAR 1367 #define F_POWER_FLOAT8_FLOAT8 1368 #define F_CHARACTER_LENGTH_TEXT 1369 #define F_INTERVAL_TIME 1370 #define F_PG_LOCK_STATUS 1371 #define F_CHAR_LENGTH_BPCHAR 1372 #define F_ISFINITE_DATE 1373 #define F_OCTET_LENGTH_TEXT 1374 #define F_OCTET_LENGTH_BPCHAR 1375 #define F_FACTORIAL 1376 #define F_TIME_LARGER 1377 #define F_TIME_SMALLER 1378 #define F_TIMETZ_LARGER 1379 #define F_TIMETZ_SMALLER 1380 #define F_CHAR_LENGTH_TEXT 1381 #define F_DATE_PART_TEXT_DATE 1384 #define F_DATE_PART_TEXT_TIME 1385 #define F_AGE_TIMESTAMPTZ 1386 #define F_PG_GET_CONSTRAINTDEF_OID 1387 #define F_TIMETZ_TIMESTAMPTZ 1388 #define F_ISFINITE_TIMESTAMPTZ 1389 #define F_ISFINITE_INTERVAL 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_ABS_FLOAT4 1394 #define F_ABS_FLOAT8 1395 #define F_ABS_INT8 1396 #define F_ABS_INT4 1397 #define F_ABS_INT2 1398 #define F_NAME_VARCHAR 1400 #define F_VARCHAR_NAME 1401 #define F_CURRENT_SCHEMA 1402 #define F_CURRENT_SCHEMAS 1403 #define F_OVERLAY_TEXT_TEXT_INT4_INT4 1404 #define F_OVERLAY_TEXT_TEXT_INT4 1405 #define F_ISVERTICAL_POINT_POINT 1406 #define F_ISHORIZONTAL_POINT_POINT 1407 #define F_ISPARALLEL_LSEG_LSEG 1408 #define F_ISPERP_LSEG_LSEG 1409 #define F_ISVERTICAL_LSEG 1410 #define F_ISHORIZONTAL_LSEG 1411 #define F_ISPARALLEL_LINE_LINE 1412 #define F_ISPERP_LINE_LINE 1413 #define F_ISVERTICAL_LINE 1414 #define F_ISHORIZONTAL_LINE 1415 #define F_POINT_CIRCLE 1416 #define F_TIME_INTERVAL 1419 #define F_BOX_POINT_POINT 1421 #define F_BOX_ADD 1422 #define F_BOX_SUB 1423 #define F_BOX_MUL 1424 #define F_BOX_DIV 1425 #define F_PATH_CONTAIN_PT 1426 #define F_CIDR_OUT 1427 #define F_POLY_CONTAIN_PT 1428 #define F_PT_CONTAINED_POLY 1429 #define F_ISCLOSED 1430 #define F_ISOPEN 1431 #define F_PATH_NPOINTS 1432 #define F_PCLOSE 1433 #define F_POPEN 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_POINT_FLOAT8_FLOAT8 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_BOX_POLYGON 1446 #define F_PATH 1447 #define F_POLYGON_BOX 1448 #define F_POLYGON_PATH 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_AREA_CIRCLE 1468 #define F_DIAMETER 1469 #define F_RADIUS 1470 #define F_CIRCLE_DISTANCE 1471 #define F_CIRCLE_CENTER 1472 #define F_CIRCLE_POINT_FLOAT8 1473 #define F_CIRCLE_POLYGON 1474 #define F_POLYGON_INT4_CIRCLE 1475 #define F_DIST_PC 1476 #define F_CIRCLE_CONTAIN_PT 1477 #define F_PT_CONTAINED_CIRCLE 1478 #define F_CIRCLE_BOX 1479 #define F_BOX_CIRCLE 1480 #define F_LOG10_NUMERIC 1481 #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 1493 #define F_LINE_INTERPT 1494 #define F_LINE_INTERSECT 1495 #define F_LINE_PARALLEL 1496 #define F_LINE_PERP 1497 #define F_LINE_VERTICAL 1498 #define F_LINE_HORIZONTAL 1499 #define F_LENGTH_LSEG 1530 #define F_LENGTH_PATH 1531 #define F_POINT_LSEG 1532 #define F_POINT_BOX 1534 #define F_POINT_POLYGON 1540 #define F_LSEG_BOX 1541 #define F_CENTER_BOX 1542 #define F_CENTER_CIRCLE 1543 #define F_POLYGON_CIRCLE 1544 #define F_NPOINTS_PATH 1545 #define F_NPOINTS_POLYGON 1556 #define F_BIT_IN 1564 #define F_BIT_OUT 1565 #define F_LIKE_TEXT_TEXT 1569 #define F_NOTLIKE_TEXT_TEXT 1570 #define F_LIKE_NAME_TEXT 1571 #define F_NOTLIKE_NAME_TEXT 1572 #define F_PG_GET_RULEDEF_OID 1573 #define F_NEXTVAL 1574 #define F_CURRVAL 1575 #define F_SETVAL_REGCLASS_INT8 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_RANDOM_ 1598 #define F_SETSEED 1599 #define F_ASIN 1600 #define F_ACOS 1601 #define F_ATAN 1602 #define F_ATAN2 1603 #define F_SIN 1604 #define F_COS 1605 #define F_TAN 1606 #define F_COT 1607 #define F_DEGREES 1608 #define F_RADIANS 1609 #define F_PI 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_BPCHARLIKE 1631 #define F_BPCHARNLIKE 1632 #define F_TEXTICLIKE 1633 #define F_TEXTICNLIKE 1634 #define F_NAMEICLIKE 1635 #define F_NAMEICNLIKE 1636 #define F_LIKE_ESCAPE_TEXT_TEXT 1637 #define F_OIDGT 1638 #define F_OIDGE 1639 #define F_PG_GET_VIEWDEF_TEXT 1640 #define F_PG_GET_VIEWDEF_OID 1641 #define F_PG_GET_USERBYID 1642 #define F_PG_GET_INDEXDEF_OID 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_BPCHARICREGEXEQ 1656 #define F_BPCHARICREGEXNE 1657 #define F_BPCHARREGEXEQ 1658 #define F_BPCHARREGEXNE 1659 #define F_BPCHARICLIKE 1660 #define F_BPCHARICNLIKE 1661 #define F_PG_GET_TRIGGERDEF_OID 1662 #define F_PG_GET_SERIAL_SEQUENCE 1665 #define F_VARBITEQ 1666 #define F_VARBITNE 1667 #define F_VARBITGE 1668 #define F_VARBITGT 1669 #define F_VARBITLE 1670 #define F_VARBITLT 1671 #define F_VARBITCMP 1672 #define F_BITAND 1673 #define F_BITOR 1674 #define F_BITXOR 1675 #define F_BITNOT 1676 #define F_BITSHIFTLEFT 1677 #define F_BITSHIFTRIGHT 1678 #define F_BITCAT 1679 #define F_SUBSTRING_BIT_INT4_INT4 1680 #define F_LENGTH_BIT 1681 #define F_OCTET_LENGTH_BIT 1682 #define F_BIT_INT4_INT4 1683 #define F_INT4_BIT 1684 #define F_BIT_BIT_INT4_BOOL 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_POSITION_BIT_BIT 1698 #define F_SUBSTRING_BIT_INT4 1699 #define F_NUMERIC_IN 1701 #define F_NUMERIC_OUT 1702 #define F_NUMERIC_NUMERIC_INT4 1703 #define F_NUMERIC_ABS 1704 #define F_ABS_NUMERIC 1705 #define F_SIGN_NUMERIC 1706 #define F_ROUND_NUMERIC_INT4 1707 #define F_ROUND_NUMERIC 1708 #define F_TRUNC_NUMERIC_INT4 1709 #define F_TRUNC_NUMERIC 1710 #define F_CEIL_NUMERIC 1711 #define F_FLOOR_NUMERIC 1712 #define F_LENGTH_BYTEA_NAME 1713 #define F_CONVERT_FROM 1714 #define F_CIDR 1715 #define F_PG_GET_EXPR_PG_NODE_TREE_OID 1716 #define F_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_MOD_NUMERIC_NUMERIC 1728 #define F_NUMERIC_MOD 1729 #define F_SQRT_NUMERIC 1730 #define F_NUMERIC_SQRT 1731 #define F_EXP_NUMERIC 1732 #define F_NUMERIC_EXP 1733 #define F_LN_NUMERIC 1734 #define F_NUMERIC_LN 1735 #define F_LOG_NUMERIC_NUMERIC 1736 #define F_NUMERIC_LOG 1737 #define F_POW_NUMERIC_NUMERIC 1738 #define F_NUMERIC_POWER 1739 #define F_NUMERIC_INT4 1740 #define F_LOG_NUMERIC 1741 #define F_NUMERIC_FLOAT4 1742 #define F_NUMERIC_FLOAT8 1743 #define F_INT4_NUMERIC 1744 #define F_FLOAT4_NUMERIC 1745 #define F_FLOAT8_NUMERIC 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_SETVAL_REGCLASS_INT8_BOOL 1765 #define F_NUMERIC_SMALLER 1766 #define F_NUMERIC_LARGER 1767 #define F_TO_CHAR_INTERVAL_TEXT 1768 #define F_NUMERIC_CMP 1769 #define F_TO_CHAR_TIMESTAMPTZ_TEXT 1770 #define F_NUMERIC_UMINUS 1771 #define F_TO_CHAR_NUMERIC_TEXT 1772 #define F_TO_CHAR_INT4_TEXT 1773 #define F_TO_CHAR_INT8_TEXT 1774 #define F_TO_CHAR_FLOAT4_TEXT 1775 #define F_TO_CHAR_FLOAT8_TEXT 1776 #define F_TO_NUMBER 1777 #define F_TO_TIMESTAMP_TEXT_TEXT 1778 #define F_INT8_NUMERIC 1779 #define F_TO_DATE 1780 #define F_NUMERIC_INT8 1781 #define F_NUMERIC_INT2 1782 #define F_INT2_NUMERIC 1783 #define F_OIDIN 1798 #define F_OIDOUT 1799 #define F_BIT_LENGTH_BYTEA 1810 #define F_BIT_LENGTH_TEXT 1811 #define F_BIT_LENGTH_BIT 1812 #define F_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_AVG_ACCUM 1843 #define F_INTERVAL_AVG 1844 #define F_TO_ASCII_TEXT 1845 #define F_TO_ASCII_TEXT_INT4 1846 #define F_TO_ASCII_TEXT_NAME 1847 #define F_INTERVAL_PL_TIME 1848 #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_TEXT_TEXT 1922 #define F_HAS_TABLE_PRIVILEGE_NAME_OID_TEXT 1923 #define F_HAS_TABLE_PRIVILEGE_OID_TEXT_TEXT 1924 #define F_HAS_TABLE_PRIVILEGE_OID_OID_TEXT 1925 #define F_HAS_TABLE_PRIVILEGE_TEXT_TEXT 1926 #define F_HAS_TABLE_PRIVILEGE_OID_TEXT 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_ENCODE 1946 #define F_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_TIMESTAMP_INT4 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_TIMESTAMPTZ_INT4 1967 #define F_TIME_TIME_INT4 1968 #define F_TIMETZ_TIMETZ_INT4 1969 #define F_PG_STAT_GET_TUPLES_HOT_UPDATED 1972 #define F_DIV 1973 #define F_NUMERIC_DIV_TRUNC 1980 #define F_SIMILAR_TO_ESCAPE_TEXT_TEXT 1986 #define F_SIMILAR_TO_ESCAPE_TEXT 1987 #define F_SHOBJ_DESCRIPTION 1993 #define F_TEXTANYCAT 2003 #define F_ANYTEXTCAT 2004 #define F_BYTEALIKE 2005 #define F_BYTEANLIKE 2006 #define F_LIKE_BYTEA_BYTEA 2007 #define F_NOTLIKE_BYTEA_BYTEA 2008 #define F_LIKE_ESCAPE_BYTEA_BYTEA 2009 #define F_LENGTH_BYTEA 2010 #define F_BYTEACAT 2011 #define F_SUBSTRING_BYTEA_INT4_INT4 2012 #define F_SUBSTRING_BYTEA_INT4 2013 #define F_POSITION_BYTEA_BYTEA 2014 #define F_BTRIM_BYTEA_BYTEA 2015 #define F_TIME_TIMESTAMPTZ 2019 #define F_DATE_TRUNC_TEXT_TIMESTAMP 2020 #define F_DATE_PART_TEXT_TIMESTAMP 2021 #define F_PG_STAT_GET_ACTIVITY 2022 #define F_JSONB_PATH_QUERY_FIRST_TZ 2023 #define F_TIMESTAMP_DATE 2024 #define F_TIMESTAMP_DATE_TIME 2025 #define F_PG_BACKEND_PID 2026 #define F_TIMESTAMP_TIMESTAMPTZ 2027 #define F_TIMESTAMPTZ_TIMESTAMP 2028 #define F_DATE_TIMESTAMP 2029 #define F_JSONB_PATH_MATCH_TZ 2030 #define F_TIMESTAMP_MI 2031 #define F_TIMESTAMP_PL_INTERVAL 2032 #define F_TIMESTAMP_MI_INTERVAL 2033 #define F_PG_CONF_LOAD_TIME 2034 #define F_TIMESTAMP_SMALLER 2035 #define F_TIMESTAMP_LARGER 2036 #define F_TIMEZONE_TEXT_TIMETZ 2037 #define F_TIMEZONE_INTERVAL_TIMETZ 2038 #define F_TIMESTAMP_HASH 2039 #define F_OVERLAPS_TIMESTAMP_TIMESTAMP_TIMESTAMP_TIMESTAMP 2041 #define F_OVERLAPS_TIMESTAMP_INTERVAL_TIMESTAMP_INTERVAL 2042 #define F_OVERLAPS_TIMESTAMP_TIMESTAMP_TIMESTAMP_INTERVAL 2043 #define F_OVERLAPS_TIMESTAMP_INTERVAL_TIMESTAMP_TIMESTAMP 2044 #define F_TIMESTAMP_CMP 2045 #define F_TIME_TIMETZ 2046 #define F_TIMETZ_TIME 2047 #define F_ISFINITE_TIMESTAMP 2048 #define F_TO_CHAR_TIMESTAMP_TEXT 2049 #define F_MAX_ANYARRAY 2050 #define F_MIN_ANYARRAY 2051 #define F_TIMESTAMP_EQ 2052 #define F_TIMESTAMP_NE 2053 #define F_TIMESTAMP_LT 2054 #define F_TIMESTAMP_LE 2055 #define F_TIMESTAMP_GE 2056 #define F_TIMESTAMP_GT 2057 #define F_AGE_TIMESTAMP_TIMESTAMP 2058 #define F_AGE_TIMESTAMP 2059 #define F_TIMEZONE_TEXT_TIMESTAMP 2069 #define F_TIMEZONE_INTERVAL_TIMESTAMP 2070 #define F_DATE_PL_INTERVAL 2071 #define F_DATE_MI_INTERVAL 2072 #define F_SUBSTRING_TEXT_TEXT 2073 #define F_SUBSTRING_TEXT_TEXT_TEXT 2074 #define F_BIT_INT8_INT4 2075 #define F_INT8_BIT 2076 #define F_CURRENT_SETTING_TEXT 2077 #define F_SET_CONFIG 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_PG_SHOW_ALL_SETTINGS 2084 #define F_SUBSTR_BYTEA_INT4_INT4 2085 #define F_SUBSTR_BYTEA_INT4 2086 #define F_REPLACE 2087 #define F_SPLIT_PART 2088 #define F_TO_HEX_INT4 2089 #define F_TO_HEX_INT8 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_AVG_INT8 2100 #define F_AVG_INT4 2101 #define F_AVG_INT2 2102 #define F_AVG_NUMERIC 2103 #define F_AVG_FLOAT4 2104 #define F_AVG_FLOAT8 2105 #define F_AVG_INTERVAL 2106 #define F_SUM_INT8 2107 #define F_SUM_INT4 2108 #define F_SUM_INT2 2109 #define F_SUM_FLOAT4 2110 #define F_SUM_FLOAT8 2111 #define F_SUM_MONEY 2112 #define F_SUM_INTERVAL 2113 #define F_SUM_NUMERIC 2114 #define F_MAX_INT8 2115 #define F_MAX_INT4 2116 #define F_MAX_INT2 2117 #define F_MAX_OID 2118 #define F_MAX_FLOAT4 2119 #define F_MAX_FLOAT8 2120 #define F_PG_COLUMN_COMPRESSION 2121 #define F_MAX_DATE 2122 #define F_MAX_TIME 2123 #define F_MAX_TIMETZ 2124 #define F_MAX_MONEY 2125 #define F_MAX_TIMESTAMP 2126 #define F_MAX_TIMESTAMPTZ 2127 #define F_MAX_INTERVAL 2128 #define F_MAX_TEXT 2129 #define F_MAX_NUMERIC 2130 #define F_MIN_INT8 2131 #define F_MIN_INT4 2132 #define F_MIN_INT2 2133 #define F_MIN_OID 2134 #define F_MIN_FLOAT4 2135 #define F_MIN_FLOAT8 2136 #define F_PG_STAT_FORCE_NEXT_FLUSH 2137 #define F_MIN_DATE 2138 #define F_MIN_TIME 2139 #define F_MIN_TIMETZ 2140 #define F_MIN_MONEY 2141 #define F_MIN_TIMESTAMP 2142 #define F_MIN_TIMESTAMPTZ 2143 #define F_MIN_INTERVAL 2144 #define F_MIN_TEXT 2145 #define F_MIN_NUMERIC 2146 #define F_COUNT_ANY 2147 #define F_VARIANCE_INT8 2148 #define F_VARIANCE_INT4 2149 #define F_VARIANCE_INT2 2150 #define F_VARIANCE_FLOAT4 2151 #define F_VARIANCE_FLOAT8 2152 #define F_VARIANCE_NUMERIC 2153 #define F_STDDEV_INT8 2154 #define F_STDDEV_INT4 2155 #define F_STDDEV_INT2 2156 #define F_STDDEV_FLOAT4 2157 #define F_STDDEV_FLOAT8 2158 #define F_STDDEV_NUMERIC 2159 #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_CEILING_NUMERIC 2167 #define F_PG_DATABASE_SIZE_NAME 2168 #define F_POWER_NUMERIC_NUMERIC 2169 #define F_WIDTH_BUCKET_NUMERIC_NUMERIC_NUMERIC_INT4 2170 #define F_PG_CANCEL_BACKEND 2171 #define F_PG_BACKUP_START 2172 #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_TEXT_TEXT 2181 #define F_HAS_SEQUENCE_PRIVILEGE_NAME_OID_TEXT 2182 #define F_HAS_SEQUENCE_PRIVILEGE_OID_TEXT_TEXT 2183 #define F_HAS_SEQUENCE_PRIVILEGE_OID_OID_TEXT 2184 #define F_HAS_SEQUENCE_PRIVILEGE_TEXT_TEXT 2185 #define F_HAS_SEQUENCE_PRIVILEGE_OID_TEXT 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_BIT_AND_INT2 2236 #define F_BIT_OR_INT2 2237 #define F_BIT_AND_INT4 2238 #define F_BIT_OR_INT4 2239 #define F_BIT_AND_INT8 2240 #define F_BIT_OR_INT8 2241 #define F_BIT_AND_BIT 2242 #define F_BIT_OR_BIT 2243 #define F_MAX_BPCHAR 2244 #define F_MIN_BPCHAR 2245 #define F_FMGR_INTERNAL_VALIDATOR 2246 #define F_FMGR_C_VALIDATOR 2247 #define F_FMGR_SQL_VALIDATOR 2248 #define F_HAS_DATABASE_PRIVILEGE_NAME_TEXT_TEXT 2250 #define F_HAS_DATABASE_PRIVILEGE_NAME_OID_TEXT 2251 #define F_HAS_DATABASE_PRIVILEGE_OID_TEXT_TEXT 2252 #define F_HAS_DATABASE_PRIVILEGE_OID_OID_TEXT 2253 #define F_HAS_DATABASE_PRIVILEGE_TEXT_TEXT 2254 #define F_HAS_DATABASE_PRIVILEGE_OID_TEXT 2255 #define F_HAS_FUNCTION_PRIVILEGE_NAME_TEXT_TEXT 2256 #define F_HAS_FUNCTION_PRIVILEGE_NAME_OID_TEXT 2257 #define F_HAS_FUNCTION_PRIVILEGE_OID_TEXT_TEXT 2258 #define F_HAS_FUNCTION_PRIVILEGE_OID_OID_TEXT 2259 #define F_HAS_FUNCTION_PRIVILEGE_TEXT_TEXT 2260 #define F_HAS_FUNCTION_PRIVILEGE_OID_TEXT 2261 #define F_HAS_LANGUAGE_PRIVILEGE_NAME_TEXT_TEXT 2262 #define F_HAS_LANGUAGE_PRIVILEGE_NAME_OID_TEXT 2263 #define F_HAS_LANGUAGE_PRIVILEGE_OID_TEXT_TEXT 2264 #define F_HAS_LANGUAGE_PRIVILEGE_OID_OID_TEXT 2265 #define F_HAS_LANGUAGE_PRIVILEGE_TEXT_TEXT 2266 #define F_HAS_LANGUAGE_PRIVILEGE_OID_TEXT 2267 #define F_HAS_SCHEMA_PRIVILEGE_NAME_TEXT_TEXT 2268 #define F_HAS_SCHEMA_PRIVILEGE_NAME_OID_TEXT 2269 #define F_HAS_SCHEMA_PRIVILEGE_OID_TEXT_TEXT 2270 #define F_HAS_SCHEMA_PRIVILEGE_OID_OID_TEXT 2271 #define F_HAS_SCHEMA_PRIVILEGE_TEXT_TEXT 2272 #define F_HAS_SCHEMA_PRIVILEGE_OID_TEXT 2273 #define F_PG_STAT_RESET 2274 #define F_PG_GET_BACKEND_MEMORY_CONTEXTS 2282 #define F_REGEXP_REPLACE_TEXT_TEXT_TEXT 2284 #define F_REGEXP_REPLACE_TEXT_TEXT_TEXT_TEXT 2285 #define F_PG_TOTAL_RELATION_SIZE 2286 #define F_PG_SIZE_PRETTY_INT8 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_CEIL_FLOAT8 2308 #define F_FLOOR_FLOAT8 2309 #define F_SIGN_FLOAT8 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 2319 #define F_CEILING_FLOAT8 2320 #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_PG_RELATION_SIZE_REGCLASS 2325 #define F_UNNEST_ANYARRAY 2331 #define F_PG_RELATION_SIZE_REGCLASS_TEXT 2332 #define F_ARRAY_AGG_TRANSFN 2333 #define F_ARRAY_AGG_FINALFN 2334 #define F_ARRAY_AGG_ANYNONARRAY 2335 #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_TEXT_TEXT 2390 #define F_HAS_TABLESPACE_PRIVILEGE_NAME_OID_TEXT 2391 #define F_HAS_TABLESPACE_PRIVILEGE_OID_TEXT_TEXT 2392 #define F_HAS_TABLESPACE_PRIVILEGE_OID_OID_TEXT 2393 #define F_HAS_TABLESPACE_PRIVILEGE_TEXT_TEXT 2394 #define F_HAS_TABLESPACE_PRIVILEGE_OID_TEXT 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_SINH 2462 #define F_COSH 2463 #define F_TANH 2464 #define F_ASINH 2465 #define F_ACOSH 2466 #define F_ATANH 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_OID_BOOL 2504 #define F_PG_GET_VIEWDEF_TEXT_BOOL 2505 #define F_PG_GET_VIEWDEF_OID_BOOL 2506 #define F_PG_GET_INDEXDEF_OID_INT4_BOOL 2507 #define F_PG_GET_CONSTRAINTDEF_OID_BOOL 2508 #define F_PG_GET_EXPR_PG_NODE_TREE_OID_BOOL 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_BOOL_AND 2517 #define F_BOOL_OR 2518 #define F_EVERY 2519 #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_INTERVAL_PL_DATE 2546 #define F_INTERVAL_PL_TIMETZ 2547 #define F_INTERVAL_PL_TIMESTAMP 2548 #define F_INTERVAL_PL_TIMESTAMPTZ 2549 #define F_INTEGER_PL_DATE 2550 #define F_PG_TABLESPACE_DATABASES 2556 #define F_BOOL_INT4 2557 #define F_INT4_BOOL 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_FLOAT8_JSONB 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 2622 #define F_PG_STAT_FILE_TEXT 2623 #define F_PG_READ_FILE_TEXT_INT8_INT8 2624 #define F_PG_LS_DIR_TEXT 2625 #define F_PG_SLEEP 2626 #define F_INETNOT 2627 #define F_INETAND 2628 #define F_INETOR 2629 #define F_INETPL 2630 #define F_INT8PL_INET 2631 #define F_INETMI_INT8 2632 #define F_INETMI 2633 #define F_VAR_SAMP_INT8 2641 #define F_VAR_SAMP_INT4 2642 #define F_VAR_SAMP_INT2 2643 #define F_VAR_SAMP_FLOAT4 2644 #define F_VAR_SAMP_FLOAT8 2645 #define F_VAR_SAMP_NUMERIC 2646 #define F_TRANSACTION_TIMESTAMP 2647 #define F_STATEMENT_TIMESTAMP 2648 #define F_CLOCK_TIMESTAMP 2649 #define F_GIN_CMP_PREFIX 2700 #define F_PG_HAS_ROLE_NAME_NAME_TEXT 2705 #define F_PG_HAS_ROLE_NAME_OID_TEXT 2706 #define F_PG_HAS_ROLE_OID_NAME_TEXT 2707 #define F_PG_HAS_ROLE_OID_OID_TEXT 2708 #define F_PG_HAS_ROLE_NAME_TEXT 2709 #define F_PG_HAS_ROLE_OID_TEXT 2710 #define F_JUSTIFY_INTERVAL 2711 #define F_STDDEV_SAMP_INT8 2712 #define F_STDDEV_SAMP_INT4 2713 #define F_STDDEV_SAMP_INT2 2714 #define F_STDDEV_SAMP_FLOAT4 2715 #define F_STDDEV_SAMP_FLOAT8 2716 #define F_STDDEV_SAMP_NUMERIC 2717 #define F_VAR_POP_INT8 2718 #define F_VAR_POP_INT4 2719 #define F_VAR_POP_INT2 2720 #define F_VAR_POP_FLOAT4 2721 #define F_VAR_POP_FLOAT8 2722 #define F_VAR_POP_NUMERIC 2723 #define F_STDDEV_POP_INT8 2724 #define F_STDDEV_POP_INT4 2725 #define F_STDDEV_POP_INT2 2726 #define F_STDDEV_POP_FLOAT4 2727 #define F_STDDEV_POP_FLOAT8 2728 #define F_STDDEV_POP_NUMERIC 2729 #define F_PG_GET_TRIGGERDEF_OID_BOOL 2730 #define F_ASIND 2731 #define F_ACOSD 2732 #define F_ATAND 2733 #define F_ATAN2D 2734 #define F_SIND 2735 #define F_COSD 2736 #define F_TAND 2737 #define F_COTD 2738 #define F_PG_BACKUP_STOP 2739 #define F_NUMERIC_AVG_SERIALIZE 2740 #define F_NUMERIC_AVG_DESERIALIZE 2741 #define F_GINARRAYEXTRACT_ANYARRAY_INTERNAL_INTERNAL 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_TEXT_TEXT 2763 #define F_REGEXP_MATCHES_TEXT_TEXT_TEXT 2764 #define F_REGEXP_SPLIT_TO_TABLE_TEXT_TEXT 2765 #define F_REGEXP_SPLIT_TO_TABLE_TEXT_TEXT_TEXT 2766 #define F_REGEXP_SPLIT_TO_ARRAY_TEXT_TEXT 2767 #define F_REGEXP_SPLIT_TO_ARRAY_TEXT_TEXT_TEXT 2768 #define F_PG_STAT_GET_CHECKPOINTER_NUM_TIMED 2769 #define F_PG_STAT_GET_CHECKPOINTER_NUM_REQUESTED 2770 #define F_PG_STAT_GET_CHECKPOINTER_BUFFERS_WRITTEN 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_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_MAX_TID 2797 #define F_MIN_TID 2798 #define F_COUNT_ 2803 #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_REGR_COUNT 2818 #define F_REGR_SXX 2819 #define F_REGR_SYY 2820 #define F_REGR_SXY 2821 #define F_REGR_AVGX 2822 #define F_REGR_AVGY 2823 #define F_REGR_R2 2824 #define F_REGR_SLOPE 2825 #define F_REGR_INTERCEPT 2826 #define F_COVAR_POP 2827 #define F_COVAR_SAMP 2828 #define F_CORR 2829 #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_INT4 2886 #define F_PG_ADVISORY_LOCK_SHARED_INT4_INT4 2887 #define F_PG_TRY_ADVISORY_LOCK_INT4_INT4 2888 #define F_PG_TRY_ADVISORY_LOCK_SHARED_INT4_INT4 2889 #define F_PG_ADVISORY_UNLOCK_INT4_INT4 2890 #define F_PG_ADVISORY_UNLOCK_SHARED_INT4_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_XML 2896 #define F_XMLVALIDATE 2897 #define F_XML_RECV 2898 #define F_XML_SEND 2899 #define F_XMLCONCAT2 2900 #define F_XMLAGG 2901 #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_TEXT_XML 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_TEXT_XML__TEXT 2931 #define F_XPATH_TEXT_XML 2932 #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_TXID_SNAPSHOT_IN 2939 #define F_TXID_SNAPSHOT_OUT 2940 #define F_TXID_SNAPSHOT_RECV 2941 #define F_TXID_SNAPSHOT_SEND 2942 #define F_TXID_CURRENT 2943 #define F_TXID_CURRENT_SNAPSHOT 2944 #define F_TXID_SNAPSHOT_XMIN 2945 #define F_TXID_SNAPSHOT_XMAX 2946 #define F_TXID_SNAPSHOT_XIP 2947 #define F_TXID_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_TEXT_BOOL 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_TEXT_TEXT 3000 #define F_HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE_NAME_OID_TEXT 3001 #define F_HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE_OID_TEXT_TEXT 3002 #define F_HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE_OID_OID_TEXT 3003 #define F_HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE_TEXT_TEXT 3004 #define F_HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE_OID_TEXT 3005 #define F_HAS_SERVER_PRIVILEGE_NAME_TEXT_TEXT 3006 #define F_HAS_SERVER_PRIVILEGE_NAME_OID_TEXT 3007 #define F_HAS_SERVER_PRIVILEGE_OID_TEXT_TEXT 3008 #define F_HAS_SERVER_PRIVILEGE_OID_OID_TEXT 3009 #define F_HAS_SERVER_PRIVILEGE_TEXT_TEXT 3010 #define F_HAS_SERVER_PRIVILEGE_OID_TEXT 3011 #define F_HAS_COLUMN_PRIVILEGE_NAME_TEXT_TEXT_TEXT 3012 #define F_HAS_COLUMN_PRIVILEGE_NAME_TEXT_INT2_TEXT 3013 #define F_HAS_COLUMN_PRIVILEGE_NAME_OID_TEXT_TEXT 3014 #define F_HAS_COLUMN_PRIVILEGE_NAME_OID_INT2_TEXT 3015 #define F_HAS_COLUMN_PRIVILEGE_OID_TEXT_TEXT_TEXT 3016 #define F_HAS_COLUMN_PRIVILEGE_OID_TEXT_INT2_TEXT 3017 #define F_HAS_COLUMN_PRIVILEGE_OID_OID_TEXT_TEXT 3018 #define F_HAS_COLUMN_PRIVILEGE_OID_OID_INT2_TEXT 3019 #define F_HAS_COLUMN_PRIVILEGE_TEXT_TEXT_TEXT 3020 #define F_HAS_COLUMN_PRIVILEGE_TEXT_INT2_TEXT 3021 #define F_HAS_COLUMN_PRIVILEGE_OID_TEXT_TEXT 3022 #define F_HAS_COLUMN_PRIVILEGE_OID_INT2_TEXT 3023 #define F_HAS_ANY_COLUMN_PRIVILEGE_NAME_TEXT_TEXT 3024 #define F_HAS_ANY_COLUMN_PRIVILEGE_NAME_OID_TEXT 3025 #define F_HAS_ANY_COLUMN_PRIVILEGE_OID_TEXT_TEXT 3026 #define F_HAS_ANY_COLUMN_PRIVILEGE_OID_OID_TEXT 3027 #define F_HAS_ANY_COLUMN_PRIVILEGE_TEXT_TEXT 3028 #define F_HAS_ANY_COLUMN_PRIVILEGE_OID_TEXT 3029 #define F_OVERLAY_BIT_BIT_INT4_INT4 3030 #define F_OVERLAY_BIT_BIT_INT4 3031 #define F_GET_BIT_BIT_INT4 3032 #define F_SET_BIT_BIT_INT4_INT4 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_TEXT_XML__TEXT 3049 #define F_XPATH_EXISTS_TEXT_XML 3050 #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_CONCAT 3058 #define F_CONCAT_WS 3059 #define F_LEFT 3060 #define F_RIGHT 3061 #define F_REVERSE 3062 #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_ANYARRAY_INTERNAL 3076 #define F_GIN_EXTRACT_TSVECTOR_TSVECTOR_INTERNAL 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_TSQUERY_INTERNAL_INT2_INTERNAL_INTERNAL 3087 #define F_GIN_TSQUERY_CONSISTENT_INTERNAL_INT2_TSQUERY_INT4_INTERNAL_INTERNAL 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_INT4 3093 #define F_PG_ADVISORY_XACT_LOCK_SHARED_INT4_INT4 3094 #define F_PG_TRY_ADVISORY_XACT_LOCK_INT4_INT4 3095 #define F_PG_TRY_ADVISORY_XACT_LOCK_SHARED_INT4_INT4 3096 #define F_VARCHAR_SUPPORT 3097 #define F_PG_CREATE_RESTORE_POINT 3098 #define F_PG_STAT_GET_WAL_SENDERS 3099 #define F_ROW_NUMBER 3100 #define F_RANK_ 3101 #define F_DENSE_RANK_ 3102 #define F_PERCENT_RANK_ 3103 #define F_CUME_DIST_ 3104 #define F_NTILE 3105 #define F_LAG_ANYELEMENT 3106 #define F_LAG_ANYELEMENT_INT4 3107 #define F_LAG_ANYCOMPATIBLE_INT4_ANYCOMPATIBLE 3108 #define F_LEAD_ANYELEMENT 3109 #define F_LEAD_ANYELEMENT_INT4 3110 #define F_LEAD_ANYCOMPATIBLE_INT4_ANYCOMPATIBLE 3111 #define F_FIRST_VALUE 3112 #define F_LAST_VALUE 3113 #define F_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_TEXT_TEXT 3138 #define F_HAS_TYPE_PRIVILEGE_NAME_OID_TEXT 3139 #define F_HAS_TYPE_PRIVILEGE_OID_TEXT_TEXT 3140 #define F_HAS_TYPE_PRIVILEGE_OID_OID_TEXT 3141 #define F_HAS_TYPE_PRIVILEGE_TEXT_TEXT 3142 #define F_HAS_TYPE_PRIVILEGE_OID_TEXT 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_ANYARRAY 3153 #define F_ARRAY_TO_JSON_ANYARRAY_BOOL 3154 #define F_ROW_TO_JSON_RECORD 3155 #define F_ROW_TO_JSON_RECORD_BOOL 3156 #define F_NUMERIC_SUPPORT 3157 #define F_VARBIT_SUPPORT 3158 #define F_PG_GET_VIEWDEF_OID_INT4 3159 #define F_PG_STAT_GET_CHECKPOINTER_WRITE_TIME 3160 #define F_PG_STAT_GET_CHECKPOINTER_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_LO_LSEEK64 3170 #define F_LO_TELL64 3171 #define F_LO_TRUNCATE64 3172 #define F_JSON_AGG_TRANSFN 3173 #define F_JSON_AGG_FINALFN 3174 #define F_JSON_AGG 3175 #define F_TO_JSON 3176 #define F_PG_STAT_GET_MOD_SINCE_ANALYZE 3177 #define F_NUMERIC_SUM 3178 #define F_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_OBJECT_AGG 3197 #define F_JSON_BUILD_ARRAY_ANY 3198 #define F_JSON_BUILD_ARRAY_ 3199 #define F_JSON_BUILD_OBJECT_ANY 3200 #define F_JSON_BUILD_OBJECT_ 3201 #define F_JSON_OBJECT__TEXT 3202 #define F_JSON_OBJECT__TEXT__TEXT 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_ANYCOMPATIBLE_ANYCOMPATIBLEARRAY 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_NUMERIC_NUMERIC_NUMERIC 3259 #define F_GENERATE_SERIES_NUMERIC_NUMERIC 3260 #define F_JSON_STRIP_NULLS 3261 #define F_JSONB_STRIP_NULLS 3262 #define F_JSONB_OBJECT__TEXT 3263 #define F_JSONB_OBJECT__TEXT__TEXT 3264 #define F_JSONB_AGG_TRANSFN 3265 #define F_JSONB_AGG_FINALFN 3266 #define F_JSONB_AGG 3267 #define F_JSONB_OBJECT_AGG_TRANSFN 3268 #define F_JSONB_OBJECT_AGG_FINALFN 3269 #define F_JSONB_OBJECT_AGG 3270 #define F_JSONB_BUILD_ARRAY_ANY 3271 #define F_JSONB_BUILD_ARRAY_ 3272 #define F_JSONB_BUILD_OBJECT_ANY 3273 #define F_JSONB_BUILD_OBJECT_ 3274 #define F_DIST_PPOLY 3275 #define F_ARRAY_POSITION_ANYCOMPATIBLEARRAY_ANYCOMPATIBLE 3277 #define F_ARRAY_POSITION_ANYCOMPATIBLEARRAY_ANYCOMPATIBLE_INT4 3278 #define F_ARRAY_POSITIONS 3279 #define F_GIST_CIRCLE_DISTANCE 3280 #define F_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_TEXT_INT8_INT8_BOOL 3293 #define F_CURRENT_SETTING_TEXT_BOOL 3294 #define F_PG_READ_BINARY_FILE_TEXT_INT8_INT8_BOOL 3295 #define F_PG_NOTIFICATION_QUEUE_USAGE 3296 #define F_PG_LS_DIR_TEXT_BOOL_BOOL 3297 #define F_ROW_SECURITY_ACTIVE_OID 3298 #define F_ROW_SECURITY_ACTIVE_TEXT 3299 #define F_UUID_SORTSUPPORT 3300 #define F_JSONB_CONCAT 3301 #define F_JSONB_DELETE_JSONB_TEXT 3302 #define F_JSONB_DELETE_JSONB_INT4 3303 #define F_JSONB_DELETE_PATH 3304 #define F_JSONB_SET 3305 #define F_JSONB_PRETTY 3306 #define F_PG_STAT_FILE_TEXT_BOOL 3307 #define F_XIDNEQ 3308 #define F_XIDNEQINT4 3309 #define F_TSM_HANDLER_IN 3311 #define F_TSM_HANDLER_OUT 3312 #define F_BERNOULLI 3313 #define F_SYSTEM 3314 #define F_PG_STAT_GET_WAL_RECEIVER 3317 #define F_PG_STAT_GET_PROGRESS_INFO 3318 #define F_TS_FILTER 3319 #define F_SETWEIGHT_TSVECTOR_CHAR__TEXT 3320 #define F_TS_DELETE_TSVECTOR_TEXT 3321 #define F_UNNEST_TSVECTOR 3322 #define F_TS_DELETE_TSVECTOR__TEXT 3323 #define F_INT4_AVG_COMBINE 3324 #define F_INTERVAL_AVG_COMBINE 3325 #define F_TSVECTOR_TO_ARRAY 3326 #define F_ARRAY_TO_TSVECTOR 3327 #define F_BPCHAR_SORTSUPPORT 3328 #define F_PG_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_JSONB__TEXT 3343 #define F_CASH_MUL_INT8 3344 #define F_CASH_DIV_INT8 3345 #define F_TXID_CURRENT_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_TXID_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_TEXT_TEXT 3396 #define F_REGEXP_MATCH_TEXT_TEXT_TEXT 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 3419 #define F_SHA256 3420 #define F_SHA384 3421 #define F_SHA512 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_MCV_LIST_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_GIST_POINT_SORTSUPPORT 3435 #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_NUMERIC_JSONB 3449 #define F_INT2_JSONB 3450 #define F_INT4_JSONB 3451 #define F_INT8_JSONB 3452 #define F_FLOAT4_JSONB 3453 #define F_PG_FILENODE_RELATION 3454 #define F_LO_FROM_BYTEA 3457 #define F_LO_GET_OID 3458 #define F_LO_GET_OID_INT8_INT4 3459 #define F_LO_PUT 3460 #define F_MAKE_TIMESTAMP 3461 #define F_MAKE_TIMESTAMPTZ_INT4_INT4_INT4_INT4_INT4_FLOAT8 3462 #define F_MAKE_TIMESTAMPTZ_INT4_INT4_INT4_INT4_INT4_FLOAT8_TEXT 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_MAX_ANYENUM 3526 #define F_MIN_ANYENUM 3527 #define F_ENUM_FIRST 3528 #define F_ENUM_LAST 3529 #define F_ENUM_RANGE_ANYENUM_ANYENUM 3530 #define F_ENUM_RANGE_ANYENUM 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_STRING_AGG_TEXT_TEXT 3538 #define F_FORMAT_TEXT_ANY 3539 #define F_FORMAT_TEXT 3540 #define F_BYTEA_STRING_AGG_TRANSFN 3543 #define F_BYTEA_STRING_AGG_FINALFN 3544 #define F_STRING_AGG_BYTEA_BYTEA 3545 #define F_INT8DEC 3546 #define F_INT8DEC_ANY 3547 #define F_NUMERIC_ACCUM_INV 3548 #define F_INTERVAL_AVG_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_BOOL_JSONB 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_MAX_INET 3564 #define F_MIN_INET 3565 #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_BOOL_TEXT_TEXT_BOOL 3577 #define F_PG_LOGICAL_EMIT_MESSAGE_BOOL_TEXT_BYTEA_BOOL 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_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_STRIP 3623 #define F_SETWEIGHT_TSVECTOR_CHAR 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_INTERNAL_TSVECTOR_INT2_OID_INTERNAL 3654 #define F_GIN_EXTRACT_TSVECTOR_TSVECTOR_INTERNAL_INTERNAL 3656 #define F_GIN_EXTRACT_TSQUERY_TSVECTOR_INTERNAL_INT2_INTERNAL_INTERNAL_INTERNAL_INTERNAL 3657 #define F_GIN_TSQUERY_CONSISTENT_INTERNAL_INT2_TSVECTOR_INT4_INTERNAL_INTERNAL_INTERNAL_INTERNAL 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_NUMNODE 3672 #define F_QUERYTREE 3673 #define F_TS_REWRITE_TSQUERY_TSQUERY_TSQUERY 3684 #define F_TS_REWRITE_TSQUERY_TEXT 3685 #define F_TSMATCHSEL 3686 #define F_TSMATCHJOINSEL 3687 #define F_TS_TYPANALYZE 3688 #define F_TS_STAT_TEXT 3689 #define F_TS_STAT_TEXT_TEXT 3690 #define F_TSQ_MCONTAINS 3691 #define F_TSQ_MCONTAINED 3692 #define F_GTSQUERY_COMPRESS 3695 #define F_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_INTERNAL_TSQUERY_INT2_OID_INTERNAL 3701 #define F_TS_RANK__FLOAT4_TSVECTOR_TSQUERY_INT4 3703 #define F_TS_RANK__FLOAT4_TSVECTOR_TSQUERY 3704 #define F_TS_RANK_TSVECTOR_TSQUERY_INT4 3705 #define F_TS_RANK_TSVECTOR_TSQUERY 3706 #define F_TS_RANK_CD__FLOAT4_TSVECTOR_TSQUERY_INT4 3707 #define F_TS_RANK_CD__FLOAT4_TSVECTOR_TSQUERY 3708 #define F_TS_RANK_CD_TSVECTOR_TSQUERY_INT4 3709 #define F_TS_RANK_CD_TSVECTOR_TSQUERY 3710 #define F_LENGTH_TSVECTOR 3711 #define F_TS_TOKEN_TYPE_OID 3713 #define F_TS_TOKEN_TYPE_TEXT 3714 #define F_TS_PARSE_OID_TEXT 3715 #define F_TS_PARSE_TEXT_TEXT 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_REGCONFIG_TEXT_TSQUERY_TEXT 3743 #define F_TS_HEADLINE_REGCONFIG_TEXT_TSQUERY 3744 #define F_TO_TSVECTOR_REGCONFIG_TEXT 3745 #define F_TO_TSQUERY_REGCONFIG_TEXT 3746 #define F_PLAINTO_TSQUERY_REGCONFIG_TEXT 3747 #define F_TO_TSVECTOR_TEXT 3749 #define F_TO_TSQUERY_TEXT 3750 #define F_PLAINTO_TSQUERY_TEXT 3751 #define F_TSVECTOR_UPDATE_TRIGGER 3752 #define F_TSVECTOR_UPDATE_TRIGGER_COLUMN 3753 #define F_TS_HEADLINE_TEXT_TSQUERY_TEXT 3754 #define F_TS_HEADLINE_TEXT_TSQUERY 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_INTERNAL_GTSVECTOR_INT4_OID_INTERNAL 3790 #define F_GIN_EXTRACT_TSQUERY_TSQUERY_INTERNAL_INT2_INTERNAL_INTERNAL_INTERNAL_INTERNAL 3791 #define F_GIN_TSQUERY_CONSISTENT_INTERNAL_INT2_TSQUERY_INT4_INTERNAL_INTERNAL_INTERNAL_INTERNAL 3792 #define F_GTSQUERY_CONSISTENT_INTERNAL_INTERNAL_INT4_OID_INTERNAL 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_TEXT 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_MONEY_INT4 3811 #define F_MONEY_INT8 3812 #define F_XMLTEXT 3813 #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_NUMERIC_MONEY 3823 #define F_MONEY_NUMERIC 3824 #define F_PG_READ_FILE_TEXT 3826 #define F_PG_READ_BINARY_FILE_TEXT_INT8_INT8 3827 #define F_PG_READ_BINARY_FILE_TEXT 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_INT4RANGE_INT4_INT4 3840 #define F_INT4RANGE_INT4_INT4_TEXT 3841 #define F_PG_RELATION_IS_UPDATABLE 3842 #define F_PG_COLUMN_IS_UPDATABLE 3843 #define F_NUMRANGE_NUMERIC_NUMERIC 3844 #define F_NUMRANGE_NUMERIC_NUMERIC_TEXT 3845 #define F_MAKE_DATE 3846 #define F_MAKE_TIME 3847 #define F_LOWER_ANYRANGE 3848 #define F_UPPER_ANYRANGE 3849 #define F_ISEMPTY_ANYRANGE 3850 #define F_LOWER_INC_ANYRANGE 3851 #define F_UPPER_INC_ANYRANGE 3852 #define F_LOWER_INF_ANYRANGE 3853 #define F_UPPER_INF_ANYRANGE 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_TSRANGE_TIMESTAMP_TIMESTAMP 3933 #define F_TSRANGE_TIMESTAMP_TIMESTAMP_TEXT 3934 #define F_PG_SLEEP_FOR 3935 #define F_PG_SLEEP_UNTIL 3936 #define F_TSTZRANGE_TIMESTAMPTZ_TIMESTAMPTZ 3937 #define F_TSTZRANGE_TIMESTAMPTZ_TIMESTAMPTZ_TEXT 3938 #define F_MXID_AGE 3939 #define F_JSONB_EXTRACT_PATH_TEXT 3940 #define F_DATERANGE_DATE_DATE 3941 #define F_DATERANGE_DATE_DATE_TEXT 3942 #define F_ACLDEFAULT 3943 #define F_TIME_SUPPORT 3944 #define F_INT8RANGE_INT8_INT8 3945 #define F_INT8RANGE_INT8_INT8_TEXT 3946 #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_FLOAT8_ANYELEMENT 3972 #define F_PERCENTILE_DISC_FINAL 3973 #define F_PERCENTILE_CONT_FLOAT8_FLOAT8 3974 #define F_PERCENTILE_CONT_FLOAT8_FINAL 3975 #define F_PERCENTILE_CONT_FLOAT8_INTERVAL 3976 #define F_PERCENTILE_CONT_INTERVAL_FINAL 3977 #define F_PERCENTILE_DISC__FLOAT8_ANYELEMENT 3978 #define F_PERCENTILE_DISC_MULTI_FINAL 3979 #define F_PERCENTILE_CONT__FLOAT8_FLOAT8 3980 #define F_PERCENTILE_CONT_FLOAT8_MULTI_FINAL 3981 #define F_PERCENTILE_CONT__FLOAT8_INTERVAL 3982 #define F_PERCENTILE_CONT_INTERVAL_MULTI_FINAL 3983 #define F_MODE 3984 #define F_MODE_FINAL 3985 #define F_RANK_ANY 3986 #define F_RANK_FINAL 3987 #define F_PERCENT_RANK_ANY 3988 #define F_PERCENT_RANK_FINAL 3989 #define F_CUME_DIST_ANY 3990 #define F_CUME_DIST_FINAL 3991 #define F_DENSE_RANK_ANY 3992 #define F_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_ARRAY_AGG_ANYARRAY 4053 #define F_RANGE_MERGE_ANYRANGE_ANYRANGE 4057 #define F_INET_MERGE 4063 #define F_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_BOX_POINT 4091 #define F_REGROLEOUT 4092 #define F_TO_REGROLE 4093 #define F_REGROLERECV 4094 #define F_REGROLESEND 4095 #define F_REGROLEIN 4098 #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_TRUNC_MACADDR8 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_MACADDR8 4123 #define F_MACADDR 4124 #define F_MACADDR8_SET7BIT 4125 #define F_IN_RANGE_INT8_INT8_INT8_BOOL_BOOL 4126 #define F_IN_RANGE_INT4_INT4_INT8_BOOL_BOOL 4127 #define F_IN_RANGE_INT4_INT4_INT4_BOOL_BOOL 4128 #define F_IN_RANGE_INT4_INT4_INT2_BOOL_BOOL 4129 #define F_IN_RANGE_INT2_INT2_INT8_BOOL_BOOL 4130 #define F_IN_RANGE_INT2_INT2_INT4_BOOL_BOOL 4131 #define F_IN_RANGE_INT2_INT2_INT2_BOOL_BOOL 4132 #define F_IN_RANGE_DATE_DATE_INTERVAL_BOOL_BOOL 4133 #define F_IN_RANGE_TIMESTAMP_TIMESTAMP_INTERVAL_BOOL_BOOL 4134 #define F_IN_RANGE_TIMESTAMPTZ_TIMESTAMPTZ_INTERVAL_BOOL_BOOL 4135 #define F_IN_RANGE_INTERVAL_INTERVAL_INTERVAL_BOOL_BOOL 4136 #define F_IN_RANGE_TIME_TIME_INTERVAL_BOOL_BOOL 4137 #define F_IN_RANGE_TIMETZ_TIMETZ_INTERVAL_BOOL_BOOL 4138 #define F_IN_RANGE_FLOAT8_FLOAT8_FLOAT8_BOOL_BOOL 4139 #define F_IN_RANGE_FLOAT4_FLOAT4_FLOAT8_BOOL_BOOL 4140 #define F_IN_RANGE_NUMERIC_NUMERIC_NUMERIC_BOOL_BOOL 4141 #define F_PG_LSN_LARGER 4187 #define F_PG_LSN_SMALLER 4188 #define F_MAX_PG_LSN 4189 #define F_MIN_PG_LSN 4190 #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_REGCONFIG_JSONB_TSQUERY_TEXT 4201 #define F_TS_HEADLINE_REGCONFIG_JSONB_TSQUERY 4202 #define F_TS_HEADLINE_JSONB_TSQUERY_TEXT 4203 #define F_TS_HEADLINE_JSONB_TSQUERY 4204 #define F_TS_HEADLINE_REGCONFIG_JSON_TSQUERY_TEXT 4205 #define F_TS_HEADLINE_REGCONFIG_JSON_TSQUERY 4206 #define F_TS_HEADLINE_JSON_TSQUERY_TEXT 4207 #define F_TS_HEADLINE_JSON_TSQUERY 4208 #define F_TO_TSVECTOR_JSONB 4209 #define F_TO_TSVECTOR_JSON 4210 #define F_TO_TSVECTOR_REGCONFIG_JSONB 4211 #define F_TO_TSVECTOR_REGCONFIG_JSON 4212 #define F_JSONB_TO_TSVECTOR_JSONB_JSONB 4213 #define F_JSONB_TO_TSVECTOR_REGCONFIG_JSONB_JSONB 4214 #define F_JSON_TO_TSVECTOR_JSON_JSONB 4215 #define F_JSON_TO_TSVECTOR_REGCONFIG_JSON_JSONB 4216 #define F_PG_COPY_PHYSICAL_REPLICATION_SLOT_NAME_NAME_BOOL 4220 #define F_PG_COPY_PHYSICAL_REPLICATION_SLOT_NAME_NAME 4221 #define F_PG_COPY_LOGICAL_REPLICATION_SLOT_NAME_NAME_BOOL_NAME 4222 #define F_PG_COPY_LOGICAL_REPLICATION_SLOT_NAME_NAME_BOOL 4223 #define F_PG_COPY_LOGICAL_REPLICATION_SLOT_NAME_NAME 4224 #define F_ANYCOMPATIBLEMULTIRANGE_IN 4226 #define F_ANYCOMPATIBLEMULTIRANGE_OUT 4227 #define F_RANGE_MERGE_ANYMULTIRANGE 4228 #define F_ANYMULTIRANGE_IN 4229 #define F_ANYMULTIRANGE_OUT 4230 #define F_MULTIRANGE_IN 4231 #define F_MULTIRANGE_OUT 4232 #define F_MULTIRANGE_RECV 4233 #define F_MULTIRANGE_SEND 4234 #define F_LOWER_ANYMULTIRANGE 4235 #define F_UPPER_ANYMULTIRANGE 4236 #define F_ISEMPTY_ANYMULTIRANGE 4237 #define F_LOWER_INC_ANYMULTIRANGE 4238 #define F_UPPER_INC_ANYMULTIRANGE 4239 #define F_LOWER_INF_ANYMULTIRANGE 4240 #define F_UPPER_INF_ANYMULTIRANGE 4241 #define F_MULTIRANGE_TYPANALYZE 4242 #define F_MULTIRANGESEL 4243 #define F_MULTIRANGE_EQ 4244 #define F_MULTIRANGE_NE 4245 #define F_RANGE_OVERLAPS_MULTIRANGE 4246 #define F_MULTIRANGE_OVERLAPS_RANGE 4247 #define F_MULTIRANGE_OVERLAPS_MULTIRANGE 4248 #define F_MULTIRANGE_CONTAINS_ELEM 4249 #define F_MULTIRANGE_CONTAINS_RANGE 4250 #define F_MULTIRANGE_CONTAINS_MULTIRANGE 4251 #define F_ELEM_CONTAINED_BY_MULTIRANGE 4252 #define F_RANGE_CONTAINED_BY_MULTIRANGE 4253 #define F_MULTIRANGE_CONTAINED_BY_MULTIRANGE 4254 #define F_RANGE_ADJACENT_MULTIRANGE 4255 #define F_MULTIRANGE_ADJACENT_MULTIRANGE 4256 #define F_MULTIRANGE_ADJACENT_RANGE 4257 #define F_RANGE_BEFORE_MULTIRANGE 4258 #define F_MULTIRANGE_BEFORE_RANGE 4259 #define F_MULTIRANGE_BEFORE_MULTIRANGE 4260 #define F_RANGE_AFTER_MULTIRANGE 4261 #define F_MULTIRANGE_AFTER_RANGE 4262 #define F_MULTIRANGE_AFTER_MULTIRANGE 4263 #define F_RANGE_OVERLEFT_MULTIRANGE 4264 #define F_MULTIRANGE_OVERLEFT_RANGE 4265 #define F_MULTIRANGE_OVERLEFT_MULTIRANGE 4266 #define F_RANGE_OVERRIGHT_MULTIRANGE 4267 #define F_MULTIRANGE_OVERRIGHT_RANGE 4268 #define F_MULTIRANGE_OVERRIGHT_MULTIRANGE 4269 #define F_MULTIRANGE_UNION 4270 #define F_MULTIRANGE_MINUS 4271 #define F_MULTIRANGE_INTERSECT 4272 #define F_MULTIRANGE_CMP 4273 #define F_MULTIRANGE_LT 4274 #define F_MULTIRANGE_LE 4275 #define F_MULTIRANGE_GE 4276 #define F_MULTIRANGE_GT 4277 #define F_HASH_MULTIRANGE 4278 #define F_HASH_MULTIRANGE_EXTENDED 4279 #define F_INT4MULTIRANGE_ 4280 #define F_INT4MULTIRANGE_INT4RANGE 4281 #define F_INT4MULTIRANGE__INT4RANGE 4282 #define F_NUMMULTIRANGE_ 4283 #define F_NUMMULTIRANGE_NUMRANGE 4284 #define F_NUMMULTIRANGE__NUMRANGE 4285 #define F_TSMULTIRANGE_ 4286 #define F_TSMULTIRANGE_TSRANGE 4287 #define F_TSMULTIRANGE__TSRANGE 4288 #define F_TSTZMULTIRANGE_ 4289 #define F_TSTZMULTIRANGE_TSTZRANGE 4290 #define F_TSTZMULTIRANGE__TSTZRANGE 4291 #define F_DATEMULTIRANGE_ 4292 #define F_DATEMULTIRANGE_DATERANGE 4293 #define F_DATEMULTIRANGE__DATERANGE 4294 #define F_INT8MULTIRANGE_ 4295 #define F_INT8MULTIRANGE_INT8RANGE 4296 #define F_INT8MULTIRANGE__INT8RANGE 4297 #define F_MULTIRANGE 4298 #define F_RANGE_AGG_TRANSFN 4299 #define F_RANGE_AGG_FINALFN 4300 #define F_RANGE_AGG_ANYRANGE 4301 #define F_KOI8R_TO_MIC 4302 #define F_MIC_TO_KOI8R 4303 #define F_ISO_TO_MIC 4304 #define F_MIC_TO_ISO 4305 #define F_WIN1251_TO_MIC 4306 #define F_MIC_TO_WIN1251 4307 #define F_WIN866_TO_MIC 4308 #define F_MIC_TO_WIN866 4309 #define F_KOI8R_TO_WIN1251 4310 #define F_WIN1251_TO_KOI8R 4311 #define F_KOI8R_TO_WIN866 4312 #define F_WIN866_TO_KOI8R 4313 #define F_WIN866_TO_WIN1251 4314 #define F_WIN1251_TO_WIN866 4315 #define F_ISO_TO_KOI8R 4316 #define F_KOI8R_TO_ISO 4317 #define F_ISO_TO_WIN1251 4318 #define F_WIN1251_TO_ISO 4319 #define F_ISO_TO_WIN866 4320 #define F_WIN866_TO_ISO 4321 #define F_EUC_CN_TO_MIC 4322 #define F_MIC_TO_EUC_CN 4323 #define F_EUC_JP_TO_SJIS 4324 #define F_SJIS_TO_EUC_JP 4325 #define F_EUC_JP_TO_MIC 4326 #define F_SJIS_TO_MIC 4327 #define F_MIC_TO_EUC_JP 4328 #define F_MIC_TO_SJIS 4329 #define F_EUC_KR_TO_MIC 4330 #define F_MIC_TO_EUC_KR 4331 #define F_EUC_TW_TO_BIG5 4332 #define F_BIG5_TO_EUC_TW 4333 #define F_EUC_TW_TO_MIC 4334 #define F_BIG5_TO_MIC 4335 #define F_MIC_TO_EUC_TW 4336 #define F_MIC_TO_BIG5 4337 #define F_LATIN2_TO_MIC 4338 #define F_MIC_TO_LATIN2 4339 #define F_WIN1250_TO_MIC 4340 #define F_MIC_TO_WIN1250 4341 #define F_LATIN2_TO_WIN1250 4342 #define F_WIN1250_TO_LATIN2 4343 #define F_LATIN1_TO_MIC 4344 #define F_MIC_TO_LATIN1 4345 #define F_LATIN3_TO_MIC 4346 #define F_MIC_TO_LATIN3 4347 #define F_LATIN4_TO_MIC 4348 #define F_MIC_TO_LATIN4 4349 #define F_NORMALIZE 4350 #define F_IS_NORMALIZED 4351 #define F_BIG5_TO_UTF8 4352 #define F_UTF8_TO_BIG5 4353 #define F_UTF8_TO_KOI8R 4354 #define F_KOI8R_TO_UTF8 4355 #define F_UTF8_TO_KOI8U 4356 #define F_KOI8U_TO_UTF8 4357 #define F_UTF8_TO_WIN 4358 #define F_WIN_TO_UTF8 4359 #define F_EUC_CN_TO_UTF8 4360 #define F_UTF8_TO_EUC_CN 4361 #define F_EUC_JP_TO_UTF8 4362 #define F_UTF8_TO_EUC_JP 4363 #define F_EUC_KR_TO_UTF8 4364 #define F_UTF8_TO_EUC_KR 4365 #define F_EUC_TW_TO_UTF8 4366 #define F_UTF8_TO_EUC_TW 4367 #define F_GB18030_TO_UTF8 4368 #define F_UTF8_TO_GB18030 4369 #define F_GBK_TO_UTF8 4370 #define F_UTF8_TO_GBK 4371 #define F_UTF8_TO_ISO8859 4372 #define F_ISO8859_TO_UTF8 4373 #define F_ISO8859_1_TO_UTF8 4374 #define F_UTF8_TO_ISO8859_1 4375 #define F_JOHAB_TO_UTF8 4376 #define F_UTF8_TO_JOHAB 4377 #define F_SJIS_TO_UTF8 4378 #define F_UTF8_TO_SJIS 4379 #define F_UHC_TO_UTF8 4380 #define F_UTF8_TO_UHC 4381 #define F_EUC_JIS_2004_TO_UTF8 4382 #define F_UTF8_TO_EUC_JIS_2004 4383 #define F_SHIFT_JIS_2004_TO_UTF8 4384 #define F_UTF8_TO_SHIFT_JIS_2004 4385 #define F_EUC_JIS_2004_TO_SHIFT_JIS_2004 4386 #define F_SHIFT_JIS_2004_TO_EUC_JIS_2004 4387 #define F_MULTIRANGE_INTERSECT_AGG_TRANSFN 4388 #define F_RANGE_INTERSECT_AGG_ANYMULTIRANGE 4389 #define F_BINARY_UPGRADE_SET_NEXT_MULTIRANGE_PG_TYPE_OID 4390 #define F_BINARY_UPGRADE_SET_NEXT_MULTIRANGE_ARRAY_PG_TYPE_OID 4391 #define F_RANGE_INTERSECT_AGG_TRANSFN 4401 #define F_RANGE_INTERSECT_AGG_ANYRANGE 4450 #define F_RANGE_CONTAINS_MULTIRANGE 4541 #define F_MULTIRANGE_CONTAINED_BY_RANGE 4542 #define F_PG_LOG_BACKEND_MEMORY_CONTEXTS 4543 #define F_BINARY_UPGRADE_SET_NEXT_HEAP_RELFILENODE 4545 #define F_BINARY_UPGRADE_SET_NEXT_INDEX_RELFILENODE 4546 #define F_BINARY_UPGRADE_SET_NEXT_TOAST_RELFILENODE 4547 #define F_BINARY_UPGRADE_SET_NEXT_PG_TABLESPACE_OID 4548 #define F_UNICODE_VERSION 4549 #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_BRIN_BLOOM_OPCINFO 4591 #define F_BRIN_BLOOM_ADD_VALUE 4592 #define F_BRIN_BLOOM_CONSISTENT 4593 #define F_BRIN_BLOOM_UNION 4594 #define F_BRIN_BLOOM_OPTIONS 4595 #define F_BRIN_BLOOM_SUMMARY_IN 4596 #define F_BRIN_BLOOM_SUMMARY_OUT 4597 #define F_BRIN_BLOOM_SUMMARY_RECV 4598 #define F_BRIN_BLOOM_SUMMARY_SEND 4599 #define F_BRIN_MINMAX_MULTI_OPCINFO 4616 #define F_BRIN_MINMAX_MULTI_ADD_VALUE 4617 #define F_BRIN_MINMAX_MULTI_CONSISTENT 4618 #define F_BRIN_MINMAX_MULTI_UNION 4619 #define F_BRIN_MINMAX_MULTI_OPTIONS 4620 #define F_BRIN_MINMAX_MULTI_DISTANCE_INT2 4621 #define F_BRIN_MINMAX_MULTI_DISTANCE_INT4 4622 #define F_BRIN_MINMAX_MULTI_DISTANCE_INT8 4623 #define F_BRIN_MINMAX_MULTI_DISTANCE_FLOAT4 4624 #define F_BRIN_MINMAX_MULTI_DISTANCE_FLOAT8 4625 #define F_BRIN_MINMAX_MULTI_DISTANCE_NUMERIC 4626 #define F_BRIN_MINMAX_MULTI_DISTANCE_TID 4627 #define F_BRIN_MINMAX_MULTI_DISTANCE_UUID 4628 #define F_BRIN_MINMAX_MULTI_DISTANCE_DATE 4629 #define F_BRIN_MINMAX_MULTI_DISTANCE_TIME 4630 #define F_BRIN_MINMAX_MULTI_DISTANCE_INTERVAL 4631 #define F_BRIN_MINMAX_MULTI_DISTANCE_TIMETZ 4632 #define F_BRIN_MINMAX_MULTI_DISTANCE_PG_LSN 4633 #define F_BRIN_MINMAX_MULTI_DISTANCE_MACADDR 4634 #define F_BRIN_MINMAX_MULTI_DISTANCE_MACADDR8 4635 #define F_BRIN_MINMAX_MULTI_DISTANCE_INET 4636 #define F_BRIN_MINMAX_MULTI_DISTANCE_TIMESTAMP 4637 #define F_BRIN_MINMAX_MULTI_SUMMARY_IN 4638 #define F_BRIN_MINMAX_MULTI_SUMMARY_OUT 4639 #define F_BRIN_MINMAX_MULTI_SUMMARY_RECV 4640 #define F_BRIN_MINMAX_MULTI_SUMMARY_SEND 4641 #define F_PHRASETO_TSQUERY_TEXT 5001 #define F_TSQUERY_PHRASE_TSQUERY_TSQUERY 5003 #define F_TSQUERY_PHRASE_TSQUERY_TSQUERY_INT4 5004 #define F_PHRASETO_TSQUERY_REGCONFIG_TEXT 5006 #define F_WEBSEARCH_TO_TSQUERY_REGCONFIG_TEXT 5007 #define F_WEBSEARCH_TO_TSQUERY_TEXT 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_PG_LSN_PLI 5022 #define F_NUMERIC_PL_PG_LSN 5023 #define F_PG_LSN_MII 5024 #define F_SATISFIES_HASH_PARTITION 5028 #define F_PG_LS_TMPDIR_ 5029 #define F_PG_LS_TMPDIR_OID 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_MIN_SCALE 5042 #define F_TRIM_SCALE 5043 #define F_GCD_INT4_INT4 5044 #define F_GCD_INT8_INT8 5045 #define F_LCM_INT4_INT4 5046 #define F_LCM_INT8_INT8 5047 #define F_GCD_NUMERIC_NUMERIC 5048 #define F_LCM_NUMERIC_NUMERIC 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_PG_SNAPSHOT_IN 5055 #define F_PG_SNAPSHOT_OUT 5056 #define F_PG_SNAPSHOT_RECV 5057 #define F_PG_SNAPSHOT_SEND 5058 #define F_PG_CURRENT_XACT_ID 5059 #define F_PG_CURRENT_XACT_ID_IF_ASSIGNED 5060 #define F_PG_CURRENT_SNAPSHOT 5061 #define F_PG_SNAPSHOT_XMIN 5062 #define F_PG_SNAPSHOT_XMAX 5063 #define F_PG_SNAPSHOT_XIP 5064 #define F_PG_VISIBLE_IN_SNAPSHOT 5065 #define F_PG_XACT_STATUS 5066 #define F_XID8IN 5070 #define F_XID 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_XID8_LARGER 5097 #define F_XID8_SMALLER 5098 #define F_MAX_XID8 5099 #define F_MIN_XID8 5100 #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_JSONB_SUBSCRIPT_HANDLER 6098 #define F_ICU_UNICODE_VERSION 6099 #define F_PG_LSN 6103 #define F_UNICODE_ASSIGNED 6105 #define F_PG_STAT_GET_BACKEND_SUBXACT 6107 #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 #define F_MULTIRANGE_GIST_CONSISTENT 6154 #define F_MULTIRANGE_GIST_COMPRESS 6156 #define F_PG_GET_CATALOG_FOREIGN_KEYS 6159 #define F_STRING_TO_TABLE_TEXT_TEXT 6160 #define F_STRING_TO_TABLE_TEXT_TEXT_TEXT 6161 #define F_BIT_COUNT_BIT 6162 #define F_BIT_COUNT_BYTEA 6163 #define F_BIT_XOR_INT2 6164 #define F_BIT_XOR_INT4 6165 #define F_BIT_XOR_INT8 6166 #define F_BIT_XOR_BIT 6167 #define F_PG_XACT_COMMIT_TIMESTAMP_ORIGIN 6168 #define F_PG_STAT_GET_REPLICATION_SLOT 6169 #define F_PG_STAT_RESET_REPLICATION_SLOT 6170 #define F_TRIM_ARRAY 6172 #define F_PG_GET_STATISTICSOBJDEF_EXPRESSIONS 6173 #define F_PG_GET_STATISTICSOBJDEF_COLUMNS 6174 #define F_DATE_BIN_INTERVAL_TIMESTAMP_TIMESTAMP 6177 #define F_DATE_BIN_INTERVAL_TIMESTAMPTZ_TIMESTAMPTZ 6178 #define F_ARRAY_SUBSCRIPT_HANDLER 6179 #define F_RAW_ARRAY_SUBSCRIPT_HANDLER 6180 #define F_TS_DEBUG_REGCONFIG_TEXT 6183 #define F_TS_DEBUG_TEXT 6184 #define F_PG_STAT_GET_DB_SESSION_TIME 6185 #define F_PG_STAT_GET_DB_ACTIVE_TIME 6186 #define F_PG_STAT_GET_DB_IDLE_IN_TRANSACTION_TIME 6187 #define F_PG_STAT_GET_DB_SESSIONS 6188 #define F_PG_STAT_GET_DB_SESSIONS_ABANDONED 6189 #define F_PG_STAT_GET_DB_SESSIONS_FATAL 6190 #define F_PG_STAT_GET_DB_SESSIONS_KILLED 6191 #define F_HASH_RECORD 6192 #define F_HASH_RECORD_EXTENDED 6193 #define F_LTRIM_BYTEA_BYTEA 6195 #define F_RTRIM_BYTEA_BYTEA 6196 #define F_PG_GET_FUNCTION_SQLBODY 6197 #define F_UNISTR 6198 #define F_EXTRACT_TEXT_DATE 6199 #define F_EXTRACT_TEXT_TIME 6200 #define F_EXTRACT_TEXT_TIMETZ 6201 #define F_EXTRACT_TEXT_TIMESTAMP 6202 #define F_EXTRACT_TEXT_TIMESTAMPTZ 6203 #define F_EXTRACT_TEXT_INTERVAL 6204 #define F_HAS_PARAMETER_PRIVILEGE_NAME_TEXT_TEXT 6205 #define F_HAS_PARAMETER_PRIVILEGE_OID_TEXT_TEXT 6206 #define F_HAS_PARAMETER_PRIVILEGE_TEXT_TEXT 6207 #define F_PG_READ_FILE_TEXT_BOOL 6208 #define F_PG_READ_BINARY_FILE_TEXT_BOOL 6209 #define F_PG_INPUT_IS_VALID 6210 #define F_PG_INPUT_ERROR_INFO 6211 #define F_RANDOM_NORMAL 6212 #define F_PG_SPLIT_WALFILE_NAME 6213 #define F_PG_STAT_GET_IO 6214 #define F_ARRAY_SHUFFLE 6215 #define F_ARRAY_SAMPLE 6216 #define F_PG_STAT_GET_TUPLES_NEWPAGE_UPDATED 6217 #define F_PG_STAT_GET_XACT_TUPLES_NEWPAGE_UPDATED 6218 #define F_ERF 6219 #define F_ERFC 6220 #define F_DATE_ADD_TIMESTAMPTZ_INTERVAL 6221 #define F_DATE_ADD_TIMESTAMPTZ_INTERVAL_TEXT 6222 #define F_DATE_SUBTRACT_TIMESTAMPTZ_INTERVAL 6223 #define F_PG_GET_WAL_RESOURCE_MANAGERS 6224 #define F_MULTIRANGE_AGG_TRANSFN 6225 #define F_MULTIRANGE_AGG_FINALFN 6226 #define F_RANGE_AGG_ANYMULTIRANGE 6227 #define F_PG_STAT_HAVE_STATS 6230 #define F_PG_STAT_GET_SUBSCRIPTION_STATS 6231 #define F_PG_STAT_RESET_SUBSCRIPTION_STATS 6232 #define F_WINDOW_ROW_NUMBER_SUPPORT 6233 #define F_WINDOW_RANK_SUPPORT 6234 #define F_WINDOW_DENSE_RANK_SUPPORT 6235 #define F_INT8INC_SUPPORT 6236 #define F_PG_SETTINGS_GET_FLAGS 6240 #define F_PG_STOP_MAKING_PINNED_OBJECTS 6241 #define F_TEXT_STARTS_WITH_SUPPORT 6242 #define F_PG_STAT_GET_RECOVERY_PREFETCH 6248 #define F_PG_DATABASE_COLLATION_ACTUAL_VERSION 6249 #define F_PG_IDENT_FILE_MAPPINGS 6250 #define F_REGEXP_REPLACE_TEXT_TEXT_TEXT_INT4_INT4_TEXT 6251 #define F_REGEXP_REPLACE_TEXT_TEXT_TEXT_INT4_INT4 6252 #define F_REGEXP_REPLACE_TEXT_TEXT_TEXT_INT4 6253 #define F_REGEXP_COUNT_TEXT_TEXT 6254 #define F_REGEXP_COUNT_TEXT_TEXT_INT4 6255 #define F_REGEXP_COUNT_TEXT_TEXT_INT4_TEXT 6256 #define F_REGEXP_INSTR_TEXT_TEXT 6257 #define F_REGEXP_INSTR_TEXT_TEXT_INT4 6258 #define F_REGEXP_INSTR_TEXT_TEXT_INT4_INT4 6259 #define F_REGEXP_INSTR_TEXT_TEXT_INT4_INT4_INT4 6260 #define F_REGEXP_INSTR_TEXT_TEXT_INT4_INT4_INT4_TEXT 6261 #define F_REGEXP_INSTR_TEXT_TEXT_INT4_INT4_INT4_TEXT_INT4 6262 #define F_REGEXP_LIKE_TEXT_TEXT 6263 #define F_REGEXP_LIKE_TEXT_TEXT_TEXT 6264 #define F_REGEXP_SUBSTR_TEXT_TEXT 6265 #define F_REGEXP_SUBSTR_TEXT_TEXT_INT4 6266 #define F_REGEXP_SUBSTR_TEXT_TEXT_INT4_INT4 6267 #define F_REGEXP_SUBSTR_TEXT_TEXT_INT4_INT4_TEXT 6268 #define F_REGEXP_SUBSTR_TEXT_TEXT_INT4_INT4_TEXT_INT4 6269 #define F_PG_LS_LOGICALSNAPDIR 6270 #define F_PG_LS_LOGICALMAPDIR 6271 #define F_PG_LS_REPLSLOTDIR 6272 #define F_DATE_SUBTRACT_TIMESTAMPTZ_INTERVAL_TEXT 6273 #define F_GENERATE_SERIES_TIMESTAMPTZ_TIMESTAMPTZ_INTERVAL_TEXT 6274 #define F_JSON_AGG_STRICT_TRANSFN 6275 #define F_JSON_AGG_STRICT 6276 #define F_JSON_OBJECT_AGG_STRICT_TRANSFN 6277 #define F_JSON_OBJECT_AGG_UNIQUE_TRANSFN 6278 #define F_JSON_OBJECT_AGG_UNIQUE_STRICT_TRANSFN 6279 #define F_JSON_OBJECT_AGG_STRICT 6280 #define F_JSON_OBJECT_AGG_UNIQUE 6281 #define F_JSON_OBJECT_AGG_UNIQUE_STRICT 6282 #define F_JSONB_AGG_STRICT_TRANSFN 6283 #define F_JSONB_AGG_STRICT 6284 #define F_JSONB_OBJECT_AGG_STRICT_TRANSFN 6285 #define F_JSONB_OBJECT_AGG_UNIQUE_TRANSFN 6286 #define F_JSONB_OBJECT_AGG_UNIQUE_STRICT_TRANSFN 6287 #define F_JSONB_OBJECT_AGG_STRICT 6288 #define F_JSONB_OBJECT_AGG_UNIQUE 6289 #define F_JSONB_OBJECT_AGG_UNIQUE_STRICT 6290 #define F_ANY_VALUE 6291 #define F_ANY_VALUE_TRANSFN 6292 #define F_ARRAY_AGG_COMBINE 6293 #define F_ARRAY_AGG_SERIALIZE 6294 #define F_ARRAY_AGG_DESERIALIZE 6295 #define F_ARRAY_AGG_ARRAY_COMBINE 6296 #define F_ARRAY_AGG_ARRAY_SERIALIZE 6297 #define F_ARRAY_AGG_ARRAY_DESERIALIZE 6298 #define F_STRING_AGG_COMBINE 6299 #define F_STRING_AGG_SERIALIZE 6300 #define F_STRING_AGG_DESERIALIZE 6301 #define F_PG_LOG_STANDBY_SNAPSHOT 6305 #define F_WINDOW_PERCENT_RANK_SUPPORT 6306 #define F_WINDOW_CUME_DIST_SUPPORT 6307 #define F_WINDOW_NTILE_SUPPORT 6308 #define F_PG_STAT_GET_DB_CONFLICT_LOGICALSLOT 6309 #define F_PG_STAT_GET_LASTSCAN 6310 #define F_SYSTEM_USER 6311 #define F_BINARY_UPGRADE_LOGICAL_SLOT_HAS_CAUGHT_UP 6312 #define F_PG_STAT_GET_CHECKPOINTER_STAT_RESET_TIME 6314 #define F_PG_BASETYPE 6315 #define F_PG_COLUMN_TOAST_CHUNK_ID 6316 #define F_TO_REGTYPEMOD 6317 #define F_PG_GET_WAIT_EVENTS 6318 #define F_BINARY_UPGRADE_ADD_SUB_REL_STATE 6319 #define F_BINARY_UPGRADE_REPLORIGIN_ADVANCE 6320 #define F_PG_AVAILABLE_WAL_SUMMARIES 6321 #define F_PG_WAL_SUMMARY_CONTENTS 6322 #define F_PG_GET_WAL_SUMMARIZER_STATE 6323 #define F_INTERVAL_AVG_SERIALIZE 6324 #define F_INTERVAL_AVG_DESERIALIZE 6325 #define F_INTERVAL_SUM 6326 #define F_PG_STAT_GET_CHECKPOINTER_RESTARTPOINTS_TIMED 6327 #define F_PG_STAT_GET_CHECKPOINTER_RESTARTPOINTS_REQUESTED 6328 #define F_PG_STAT_GET_CHECKPOINTER_RESTARTPOINTS_PERFORMED 6329 #define F_TO_BIN_INT4 6330 #define F_TO_BIN_INT8 6331 #define F_TO_OCT_INT4 6332 #define F_TO_OCT_INT8 6333 #define F_TIMEZONE_TIMESTAMPTZ 6334 #define F_TIMEZONE_TIMESTAMP 6335 #define F_TIMEZONE_TIMETZ 6336 #define F_JSONB_POPULATE_RECORD_VALID 6338 #define F_RANDOM_INT4_INT4 6339 #define F_RANDOM_INT8_INT8 6340 #define F_RANDOM_NUMERIC_NUMERIC 6341 #define F_UUID_EXTRACT_TIMESTAMP 6342 #define F_UUID_EXTRACT_VERSION 6343 #define F_PG_SYNC_REPLICATION_SLOTS 6344 #define F_RANGE_CONTAINS_ELEM_SUPPORT 6345 #define F_ELEM_CONTAINED_BY_RANGE_SUPPORT 6346 #endif /* FMGROIDS_H */ libpg_query-17-6.1.0/src/postgres/include/utils/fmgrprotos.h000066400000000000000000004220271477334012600240760ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fmgrprotos.h * Prototypes for built-in functions. * * Portions Copyright (c) 1996-2024, 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 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 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_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_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 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 pg_stat_get_wal(PG_FUNCTION_ARGS); extern Datum pg_get_wal_replay_pause_state(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 multirange_unnest(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 numeric_fac(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_avg_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 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_part(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 pg_column_compression(PG_FUNCTION_ARGS); extern Datum pg_stat_force_next_flush(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_backup_start(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 pg_get_backend_memory_contexts(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(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_backup_stop(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_checkpointer_num_timed(PG_FUNCTION_ARGS); extern Datum pg_stat_get_checkpointer_num_requested(PG_FUNCTION_ARGS); extern Datum pg_stat_get_checkpointer_buffers_written(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 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 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_checkpointer_write_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_checkpointer_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_off_len_missing(PG_FUNCTION_ARGS); extern Datum show_config_by_name_missing_ok(PG_FUNCTION_ARGS); extern Datum pg_read_binary_file_off_len_missing(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_avg_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 gist_point_sortsupport(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_avg_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_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 xmltext(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 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 anycompatiblemultirange_in(PG_FUNCTION_ARGS); extern Datum anycompatiblemultirange_out(PG_FUNCTION_ARGS); extern Datum range_merge_from_multirange(PG_FUNCTION_ARGS); extern Datum anymultirange_in(PG_FUNCTION_ARGS); extern Datum anymultirange_out(PG_FUNCTION_ARGS); extern Datum multirange_in(PG_FUNCTION_ARGS); extern Datum multirange_out(PG_FUNCTION_ARGS); extern Datum multirange_recv(PG_FUNCTION_ARGS); extern Datum multirange_send(PG_FUNCTION_ARGS); extern Datum multirange_lower(PG_FUNCTION_ARGS); extern Datum multirange_upper(PG_FUNCTION_ARGS); extern Datum multirange_empty(PG_FUNCTION_ARGS); extern Datum multirange_lower_inc(PG_FUNCTION_ARGS); extern Datum multirange_upper_inc(PG_FUNCTION_ARGS); extern Datum multirange_lower_inf(PG_FUNCTION_ARGS); extern Datum multirange_upper_inf(PG_FUNCTION_ARGS); extern Datum multirange_typanalyze(PG_FUNCTION_ARGS); extern Datum multirangesel(PG_FUNCTION_ARGS); extern Datum multirange_eq(PG_FUNCTION_ARGS); extern Datum multirange_ne(PG_FUNCTION_ARGS); extern Datum range_overlaps_multirange(PG_FUNCTION_ARGS); extern Datum multirange_overlaps_range(PG_FUNCTION_ARGS); extern Datum multirange_overlaps_multirange(PG_FUNCTION_ARGS); extern Datum multirange_contains_elem(PG_FUNCTION_ARGS); extern Datum multirange_contains_range(PG_FUNCTION_ARGS); extern Datum multirange_contains_multirange(PG_FUNCTION_ARGS); extern Datum elem_contained_by_multirange(PG_FUNCTION_ARGS); extern Datum range_contained_by_multirange(PG_FUNCTION_ARGS); extern Datum multirange_contained_by_multirange(PG_FUNCTION_ARGS); extern Datum range_adjacent_multirange(PG_FUNCTION_ARGS); extern Datum multirange_adjacent_multirange(PG_FUNCTION_ARGS); extern Datum multirange_adjacent_range(PG_FUNCTION_ARGS); extern Datum range_before_multirange(PG_FUNCTION_ARGS); extern Datum multirange_before_range(PG_FUNCTION_ARGS); extern Datum multirange_before_multirange(PG_FUNCTION_ARGS); extern Datum range_after_multirange(PG_FUNCTION_ARGS); extern Datum multirange_after_range(PG_FUNCTION_ARGS); extern Datum multirange_after_multirange(PG_FUNCTION_ARGS); extern Datum range_overleft_multirange(PG_FUNCTION_ARGS); extern Datum multirange_overleft_range(PG_FUNCTION_ARGS); extern Datum multirange_overleft_multirange(PG_FUNCTION_ARGS); extern Datum range_overright_multirange(PG_FUNCTION_ARGS); extern Datum multirange_overright_range(PG_FUNCTION_ARGS); extern Datum multirange_overright_multirange(PG_FUNCTION_ARGS); extern Datum multirange_union(PG_FUNCTION_ARGS); extern Datum multirange_minus(PG_FUNCTION_ARGS); extern Datum multirange_intersect(PG_FUNCTION_ARGS); extern Datum multirange_cmp(PG_FUNCTION_ARGS); extern Datum multirange_lt(PG_FUNCTION_ARGS); extern Datum multirange_le(PG_FUNCTION_ARGS); extern Datum multirange_ge(PG_FUNCTION_ARGS); extern Datum multirange_gt(PG_FUNCTION_ARGS); extern Datum hash_multirange(PG_FUNCTION_ARGS); extern Datum hash_multirange_extended(PG_FUNCTION_ARGS); extern Datum multirange_constructor0(PG_FUNCTION_ARGS); extern Datum multirange_constructor1(PG_FUNCTION_ARGS); extern Datum multirange_constructor2(PG_FUNCTION_ARGS); extern Datum range_agg_transfn(PG_FUNCTION_ARGS); extern Datum range_agg_finalfn(PG_FUNCTION_ARGS); extern Datum unicode_normalize_func(PG_FUNCTION_ARGS); extern Datum unicode_is_normalized(PG_FUNCTION_ARGS); extern Datum multirange_intersect_agg_transfn(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_next_multirange_pg_type_oid(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_next_multirange_array_pg_type_oid(PG_FUNCTION_ARGS); extern Datum range_intersect_agg_transfn(PG_FUNCTION_ARGS); extern Datum range_contains_multirange(PG_FUNCTION_ARGS); extern Datum multirange_contained_by_range(PG_FUNCTION_ARGS); extern Datum pg_log_backend_memory_contexts(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_next_heap_relfilenode(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_next_index_relfilenode(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_next_toast_relfilenode(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_next_pg_tablespace_oid(PG_FUNCTION_ARGS); extern Datum unicode_version(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 brin_bloom_opcinfo(PG_FUNCTION_ARGS); extern Datum brin_bloom_add_value(PG_FUNCTION_ARGS); extern Datum brin_bloom_consistent(PG_FUNCTION_ARGS); extern Datum brin_bloom_union(PG_FUNCTION_ARGS); extern Datum brin_bloom_options(PG_FUNCTION_ARGS); extern Datum brin_bloom_summary_in(PG_FUNCTION_ARGS); extern Datum brin_bloom_summary_out(PG_FUNCTION_ARGS); extern Datum brin_bloom_summary_recv(PG_FUNCTION_ARGS); extern Datum brin_bloom_summary_send(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_opcinfo(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_add_value(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_consistent(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_union(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_options(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_int2(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_int4(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_int8(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_float4(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_float8(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_numeric(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_tid(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_uuid(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_date(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_time(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_interval(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_timetz(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_pg_lsn(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_macaddr(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_macaddr8(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_inet(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_distance_timestamp(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_summary_in(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_summary_out(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_summary_recv(PG_FUNCTION_ARGS); extern Datum brin_minmax_multi_summary_send(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 pg_lsn_pli(PG_FUNCTION_ARGS); extern Datum pg_lsn_mii(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 xid8_larger(PG_FUNCTION_ARGS); extern Datum xid8_smaller(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 jsonb_subscript_handler(PG_FUNCTION_ARGS); extern Datum icu_unicode_version(PG_FUNCTION_ARGS); extern Datum numeric_pg_lsn(PG_FUNCTION_ARGS); extern Datum unicode_assigned(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_subxact(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); extern Datum multirange_gist_consistent(PG_FUNCTION_ARGS); extern Datum multirange_gist_compress(PG_FUNCTION_ARGS); extern Datum pg_get_catalog_foreign_keys(PG_FUNCTION_ARGS); extern Datum text_to_table(PG_FUNCTION_ARGS); extern Datum text_to_table_null(PG_FUNCTION_ARGS); extern Datum bit_bit_count(PG_FUNCTION_ARGS); extern Datum bytea_bit_count(PG_FUNCTION_ARGS); extern Datum pg_xact_commit_timestamp_origin(PG_FUNCTION_ARGS); extern Datum pg_stat_get_replication_slot(PG_FUNCTION_ARGS); extern Datum pg_stat_reset_replication_slot(PG_FUNCTION_ARGS); extern Datum trim_array(PG_FUNCTION_ARGS); extern Datum pg_get_statisticsobjdef_expressions(PG_FUNCTION_ARGS); extern Datum pg_get_statisticsobjdef_columns(PG_FUNCTION_ARGS); extern Datum timestamp_bin(PG_FUNCTION_ARGS); extern Datum timestamptz_bin(PG_FUNCTION_ARGS); extern Datum array_subscript_handler(PG_FUNCTION_ARGS); extern Datum raw_array_subscript_handler(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_session_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_active_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_idle_in_transaction_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_sessions(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_sessions_abandoned(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_sessions_fatal(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_sessions_killed(PG_FUNCTION_ARGS); extern Datum hash_record(PG_FUNCTION_ARGS); extern Datum hash_record_extended(PG_FUNCTION_ARGS); extern Datum bytealtrim(PG_FUNCTION_ARGS); extern Datum byteartrim(PG_FUNCTION_ARGS); extern Datum pg_get_function_sqlbody(PG_FUNCTION_ARGS); extern Datum unistr(PG_FUNCTION_ARGS); extern Datum extract_date(PG_FUNCTION_ARGS); extern Datum extract_time(PG_FUNCTION_ARGS); extern Datum extract_timetz(PG_FUNCTION_ARGS); extern Datum extract_timestamp(PG_FUNCTION_ARGS); extern Datum extract_timestamptz(PG_FUNCTION_ARGS); extern Datum extract_interval(PG_FUNCTION_ARGS); extern Datum has_parameter_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_parameter_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_parameter_privilege_name(PG_FUNCTION_ARGS); extern Datum pg_read_file_all_missing(PG_FUNCTION_ARGS); extern Datum pg_read_binary_file_all_missing(PG_FUNCTION_ARGS); extern Datum pg_input_is_valid(PG_FUNCTION_ARGS); extern Datum pg_input_error_info(PG_FUNCTION_ARGS); extern Datum drandom_normal(PG_FUNCTION_ARGS); extern Datum pg_split_walfile_name(PG_FUNCTION_ARGS); extern Datum pg_stat_get_io(PG_FUNCTION_ARGS); extern Datum array_shuffle(PG_FUNCTION_ARGS); extern Datum array_sample(PG_FUNCTION_ARGS); extern Datum pg_stat_get_tuples_newpage_updated(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_tuples_newpage_updated(PG_FUNCTION_ARGS); extern Datum derf(PG_FUNCTION_ARGS); extern Datum derfc(PG_FUNCTION_ARGS); extern Datum timestamptz_pl_interval_at_zone(PG_FUNCTION_ARGS); extern Datum pg_get_wal_resource_managers(PG_FUNCTION_ARGS); extern Datum multirange_agg_transfn(PG_FUNCTION_ARGS); extern Datum pg_stat_have_stats(PG_FUNCTION_ARGS); extern Datum pg_stat_get_subscription_stats(PG_FUNCTION_ARGS); extern Datum pg_stat_reset_subscription_stats(PG_FUNCTION_ARGS); extern Datum window_row_number_support(PG_FUNCTION_ARGS); extern Datum window_rank_support(PG_FUNCTION_ARGS); extern Datum window_dense_rank_support(PG_FUNCTION_ARGS); extern Datum int8inc_support(PG_FUNCTION_ARGS); extern Datum pg_settings_get_flags(PG_FUNCTION_ARGS); extern Datum pg_stop_making_pinned_objects(PG_FUNCTION_ARGS); extern Datum text_starts_with_support(PG_FUNCTION_ARGS); extern Datum pg_stat_get_recovery_prefetch(PG_FUNCTION_ARGS); extern Datum pg_database_collation_actual_version(PG_FUNCTION_ARGS); extern Datum pg_ident_file_mappings(PG_FUNCTION_ARGS); extern Datum textregexreplace_extended(PG_FUNCTION_ARGS); extern Datum textregexreplace_extended_no_flags(PG_FUNCTION_ARGS); extern Datum textregexreplace_extended_no_n(PG_FUNCTION_ARGS); extern Datum regexp_count_no_start(PG_FUNCTION_ARGS); extern Datum regexp_count_no_flags(PG_FUNCTION_ARGS); extern Datum regexp_count(PG_FUNCTION_ARGS); extern Datum regexp_instr_no_start(PG_FUNCTION_ARGS); extern Datum regexp_instr_no_n(PG_FUNCTION_ARGS); extern Datum regexp_instr_no_endoption(PG_FUNCTION_ARGS); extern Datum regexp_instr_no_flags(PG_FUNCTION_ARGS); extern Datum regexp_instr_no_subexpr(PG_FUNCTION_ARGS); extern Datum regexp_instr(PG_FUNCTION_ARGS); extern Datum regexp_like_no_flags(PG_FUNCTION_ARGS); extern Datum regexp_like(PG_FUNCTION_ARGS); extern Datum regexp_substr_no_start(PG_FUNCTION_ARGS); extern Datum regexp_substr_no_n(PG_FUNCTION_ARGS); extern Datum regexp_substr_no_flags(PG_FUNCTION_ARGS); extern Datum regexp_substr_no_subexpr(PG_FUNCTION_ARGS); extern Datum regexp_substr(PG_FUNCTION_ARGS); extern Datum pg_ls_logicalsnapdir(PG_FUNCTION_ARGS); extern Datum pg_ls_logicalmapdir(PG_FUNCTION_ARGS); extern Datum pg_ls_replslotdir(PG_FUNCTION_ARGS); extern Datum timestamptz_mi_interval_at_zone(PG_FUNCTION_ARGS); extern Datum generate_series_timestamptz_at_zone(PG_FUNCTION_ARGS); extern Datum json_agg_strict_transfn(PG_FUNCTION_ARGS); extern Datum json_object_agg_strict_transfn(PG_FUNCTION_ARGS); extern Datum json_object_agg_unique_transfn(PG_FUNCTION_ARGS); extern Datum json_object_agg_unique_strict_transfn(PG_FUNCTION_ARGS); extern Datum jsonb_agg_strict_transfn(PG_FUNCTION_ARGS); extern Datum jsonb_object_agg_strict_transfn(PG_FUNCTION_ARGS); extern Datum jsonb_object_agg_unique_transfn(PG_FUNCTION_ARGS); extern Datum jsonb_object_agg_unique_strict_transfn(PG_FUNCTION_ARGS); extern Datum any_value_transfn(PG_FUNCTION_ARGS); extern Datum array_agg_combine(PG_FUNCTION_ARGS); extern Datum array_agg_serialize(PG_FUNCTION_ARGS); extern Datum array_agg_deserialize(PG_FUNCTION_ARGS); extern Datum array_agg_array_combine(PG_FUNCTION_ARGS); extern Datum array_agg_array_serialize(PG_FUNCTION_ARGS); extern Datum array_agg_array_deserialize(PG_FUNCTION_ARGS); extern Datum string_agg_combine(PG_FUNCTION_ARGS); extern Datum string_agg_serialize(PG_FUNCTION_ARGS); extern Datum string_agg_deserialize(PG_FUNCTION_ARGS); extern Datum pg_log_standby_snapshot(PG_FUNCTION_ARGS); extern Datum window_percent_rank_support(PG_FUNCTION_ARGS); extern Datum window_cume_dist_support(PG_FUNCTION_ARGS); extern Datum window_ntile_support(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_logicalslot(PG_FUNCTION_ARGS); extern Datum pg_stat_get_lastscan(PG_FUNCTION_ARGS); extern Datum system_user(PG_FUNCTION_ARGS); extern Datum binary_upgrade_logical_slot_has_caught_up(PG_FUNCTION_ARGS); extern Datum pg_stat_get_checkpointer_stat_reset_time(PG_FUNCTION_ARGS); extern Datum pg_basetype(PG_FUNCTION_ARGS); extern Datum pg_column_toast_chunk_id(PG_FUNCTION_ARGS); extern Datum to_regtypemod(PG_FUNCTION_ARGS); extern Datum pg_get_wait_events(PG_FUNCTION_ARGS); extern Datum binary_upgrade_add_sub_rel_state(PG_FUNCTION_ARGS); extern Datum binary_upgrade_replorigin_advance(PG_FUNCTION_ARGS); extern Datum pg_available_wal_summaries(PG_FUNCTION_ARGS); extern Datum pg_wal_summary_contents(PG_FUNCTION_ARGS); extern Datum pg_get_wal_summarizer_state(PG_FUNCTION_ARGS); extern Datum interval_avg_serialize(PG_FUNCTION_ARGS); extern Datum interval_avg_deserialize(PG_FUNCTION_ARGS); extern Datum interval_sum(PG_FUNCTION_ARGS); extern Datum pg_stat_get_checkpointer_restartpoints_timed(PG_FUNCTION_ARGS); extern Datum pg_stat_get_checkpointer_restartpoints_requested(PG_FUNCTION_ARGS); extern Datum pg_stat_get_checkpointer_restartpoints_performed(PG_FUNCTION_ARGS); extern Datum to_bin32(PG_FUNCTION_ARGS); extern Datum to_bin64(PG_FUNCTION_ARGS); extern Datum to_oct32(PG_FUNCTION_ARGS); extern Datum to_oct64(PG_FUNCTION_ARGS); extern Datum timestamptz_at_local(PG_FUNCTION_ARGS); extern Datum timestamp_at_local(PG_FUNCTION_ARGS); extern Datum timetz_at_local(PG_FUNCTION_ARGS); extern Datum jsonb_populate_record_valid(PG_FUNCTION_ARGS); extern Datum int4random(PG_FUNCTION_ARGS); extern Datum int8random(PG_FUNCTION_ARGS); extern Datum numeric_random(PG_FUNCTION_ARGS); extern Datum uuid_extract_timestamp(PG_FUNCTION_ARGS); extern Datum uuid_extract_version(PG_FUNCTION_ARGS); extern Datum pg_sync_replication_slots(PG_FUNCTION_ARGS); extern Datum range_contains_elem_support(PG_FUNCTION_ARGS); extern Datum elem_contained_by_range_support(PG_FUNCTION_ARGS); #endif /* FMGRPROTOS_H */ libpg_query-17-6.1.0/src/postgres/include/utils/fmgrtab.h000066400000000000000000000027351477334012600233160ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fmgrtab.h * The function manager's table of internal functions. * * Portions Copyright (c) 1996-2024, 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 PGDLLIMPORT const FmgrBuiltin fmgr_builtins[]; extern PGDLLIMPORT const int fmgr_nbuiltins; /* number of entries in table */ extern PGDLLIMPORT 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 PGDLLIMPORT const uint16 fmgr_builtin_oid_index[]; #endif /* FMGRTAB_H */ libpg_query-17-6.1.0/src/postgres/include/utils/guc.h000066400000000000000000000430771477334012600224560ustar00rootroot00000000000000/*-------------------------------------------------------------------- * guc.h * * External declarations pertaining to Grand Unified Configuration. * * Copyright (c) 2000-2024, 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. * * 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. 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. * * When setting the value of a non-compile-time-constant PGC_INTERNAL option, * source == PGC_S_DYNAMIC_DEFAULT should typically be used so that the value * will show as "default" in pg_settings. If there is a specific reason not * to want that, use source == PGC_S_OVERRIDE. * * 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; typedef struct config_generic config_handle; 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); extern char *DeescapeQuotedString(const char *s); /* * 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. Note that these don't appear * on disk, so we can reassign their values freely. */ #define GUC_LIST_INPUT 0x000001 /* input can be list format */ #define GUC_LIST_QUOTE 0x000002 /* double-quote list elements */ #define GUC_NO_SHOW_ALL 0x000004 /* exclude from SHOW ALL */ #define GUC_NO_RESET 0x000008 /* disallow RESET and SAVE */ #define GUC_NO_RESET_ALL 0x000010 /* exclude from RESET ALL */ #define GUC_EXPLAIN 0x000020 /* include in EXPLAIN */ #define GUC_REPORT 0x000040 /* auto-report changes to client */ #define GUC_NOT_IN_SAMPLE 0x000080 /* not in postgresql.conf.sample */ #define GUC_DISALLOW_IN_FILE 0x000100 /* can't set in postgresql.conf */ #define GUC_CUSTOM_PLACEHOLDER 0x000200 /* placeholder for custom variable */ #define GUC_SUPERUSER_ONLY 0x000400 /* show only to superusers */ #define GUC_IS_NAME 0x000800 /* limit string to NAMEDATALEN-1 */ #define GUC_NOT_WHILE_SEC_REST 0x001000 /* can't set if security restricted */ #define GUC_DISALLOW_IN_AUTO_FILE \ 0x002000 /* can't set in PG_AUTOCONF_FILENAME */ #define GUC_RUNTIME_COMPUTED 0x004000 /* delay processing in 'postgres -C' */ #define GUC_ALLOW_IN_PARALLEL 0x008000 /* allow setting in parallel mode */ #define GUC_UNIT_KB 0x01000000 /* value is in kilobytes */ #define GUC_UNIT_BLOCKS 0x02000000 /* value is in blocks */ #define GUC_UNIT_XBLOCKS 0x03000000 /* value is in xlog blocks */ #define GUC_UNIT_MB 0x04000000 /* value is in megabytes */ #define GUC_UNIT_BYTE 0x05000000 /* value is in bytes */ #define GUC_UNIT_MEMORY 0x0F000000 /* mask for size-related units */ #define GUC_UNIT_MS 0x10000000 /* value is in milliseconds */ #define GUC_UNIT_S 0x20000000 /* value is in seconds */ #define GUC_UNIT_MIN 0x30000000 /* value is in minutes */ #define GUC_UNIT_TIME 0x70000000 /* mask for time-related units */ #define GUC_UNIT (GUC_UNIT_MEMORY | GUC_UNIT_TIME) /* GUC vars that are actually defined in guc_tables.c, rather than elsewhere */ extern PGDLLIMPORT bool Debug_print_plan; extern PGDLLIMPORT bool Debug_print_parse; extern PGDLLIMPORT bool Debug_print_rewritten; extern PGDLLIMPORT bool Debug_pretty_print; extern PGDLLIMPORT bool log_parser_stats; extern PGDLLIMPORT bool log_planner_stats; extern PGDLLIMPORT bool log_executor_stats; extern PGDLLIMPORT bool log_statement_stats; extern PGDLLIMPORT bool log_btree_build_stats; extern PGDLLIMPORT __thread bool check_function_bodies; extern PGDLLIMPORT bool current_role_is_superuser; extern PGDLLIMPORT bool AllowAlterSystem; extern PGDLLIMPORT bool log_duration; extern PGDLLIMPORT int log_parameter_max_length; extern PGDLLIMPORT int log_parameter_max_length_on_error; extern PGDLLIMPORT int log_min_error_statement; extern PGDLLIMPORT __thread int log_min_messages; extern PGDLLIMPORT int client_min_messages; extern PGDLLIMPORT int log_min_duration_sample; extern PGDLLIMPORT int log_min_duration_statement; extern PGDLLIMPORT int log_temp_files; extern PGDLLIMPORT double log_statement_sample_rate; extern PGDLLIMPORT double log_xact_sample_rate; extern PGDLLIMPORT __thread char *backtrace_functions; extern PGDLLIMPORT int temp_file_limit; extern PGDLLIMPORT int num_temp_buffers; extern PGDLLIMPORT char *cluster_name; extern PGDLLIMPORT char *ConfigFileName; extern PGDLLIMPORT char *HbaFileName; extern PGDLLIMPORT char *IdentFileName; extern PGDLLIMPORT char *external_pid_file; extern PGDLLIMPORT char *application_name; extern PGDLLIMPORT int tcp_keepalives_idle; extern PGDLLIMPORT int tcp_keepalives_interval; extern PGDLLIMPORT int tcp_keepalives_count; extern PGDLLIMPORT int tcp_user_timeout; #ifdef TRACE_SORT extern PGDLLIMPORT 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) pg_attribute_nonnull(1, 4); 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) pg_attribute_nonnull(1, 4); 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) pg_attribute_nonnull(1, 4); 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) pg_attribute_nonnull(1, 4); 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) pg_attribute_nonnull(1, 4); extern void MarkGUCPrefixReserved(const char *className); /* old name for MarkGUCPrefixReserved, for backwards compatibility: */ #define EmitWarningsOnPlaceholders(className) MarkGUCPrefixReserved(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 char *convert_GUC_name_for_parameter_acl(const char *name); extern void check_GUC_name_for_parameter_acl(const char *name); 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 RestrictSearchPath(void); extern void AtEOXact_GUC(bool isCommit, int nestLevel); extern void BeginReportingGUCOptions(void); extern void ReportChangedGUCOptions(void); extern void ParseLongOption(const char *string, char **name, char **value); extern const char *get_config_unit_name(int flags); 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 int set_config_option_ext(const char *name, const char *value, GucContext context, GucSource source, Oid srole, GucAction action, bool changeVal, int elevel, bool is_reload); extern int set_config_with_handle(const char *name, config_handle *handle, const char *value, GucContext context, GucSource source, Oid srole, GucAction action, bool changeVal, int elevel, bool is_reload); extern config_handle *get_config_handle(const char *name); extern void AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt); extern char *GetConfigOptionByName(const char *name, const char **varname, bool missing_ok); extern void TransformGUCArray(ArrayType *array, List **names, List **values); 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); extern void *guc_malloc(int elevel, size_t size); extern pg_nodiscard void *guc_realloc(int elevel, void *old, size_t size); extern char *guc_strdup(int elevel, const char *src); extern void guc_free(void *ptr); #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); /* Functions exported by guc_funcs.c */ extern void ExecSetVariableStmt(VariableSetStmt *stmt, bool isTopLevel); extern char *ExtractSetVariableArgs(VariableSetStmt *stmt); 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); /* 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 #endif /* GUC_H */ libpg_query-17-6.1.0/src/postgres/include/utils/guc_hooks.h000066400000000000000000000241451477334012600236540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * guc_hooks.h * Declarations of per-variable callback functions used by GUC. * * These functions are scattered throughout the system, but we * declare them all here to avoid having to propagate guc.h into * a lot of unrelated header files. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * * src/include/utils/guc_hooks.h * *------------------------------------------------------------------------- */ #ifndef GUC_HOOKS_H #define GUC_HOOKS_H 1 #include "utils/guc.h" /* * See guc.h for the typedefs that these hook functions should match * (GucBoolCheckHook and so on). * * Please keep the declarations in order by GUC variable name. */ extern bool check_application_name(char **newval, void **extra, GucSource source); extern void assign_application_name(const char *newval, void *extra); extern const char *show_archive_command(void); extern bool check_autovacuum_max_workers(int *newval, void **extra, GucSource source); extern bool check_autovacuum_work_mem(int *newval, void **extra, GucSource source); extern bool check_vacuum_buffer_usage_limit(int *newval, void **extra, GucSource source); extern bool check_backtrace_functions(char **newval, void **extra, GucSource source); extern void assign_backtrace_functions(const char *newval, void *extra); extern bool check_bonjour(bool *newval, void **extra, GucSource source); extern bool check_canonical_path(char **newval, void **extra, GucSource source); extern void assign_checkpoint_completion_target(double newval, void *extra); extern bool check_client_connection_check_interval(int *newval, void **extra, GucSource source); extern bool check_client_encoding(char **newval, void **extra, GucSource source); extern void assign_client_encoding(const char *newval, void *extra); extern bool check_cluster_name(char **newval, void **extra, GucSource source); extern bool check_commit_ts_buffers(int *newval, void **extra, GucSource source); extern const char *show_data_directory_mode(void); extern bool check_datestyle(char **newval, void **extra, GucSource source); extern void assign_datestyle(const char *newval, void *extra); extern bool check_debug_io_direct(char **newval, void **extra, GucSource source); extern void assign_debug_io_direct(const char *newval, void *extra); extern bool check_default_table_access_method(char **newval, void **extra, GucSource source); extern bool check_default_tablespace(char **newval, void **extra, GucSource source); extern bool check_default_text_search_config(char **newval, void **extra, GucSource source); extern void assign_default_text_search_config(const char *newval, void *extra); extern bool check_default_with_oids(bool *newval, void **extra, GucSource source); extern bool check_effective_io_concurrency(int *newval, void **extra, GucSource source); extern bool check_huge_page_size(int *newval, void **extra, GucSource source); extern const char *show_in_hot_standby(void); 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_log_destination(char **newval, void **extra, GucSource source); extern void assign_log_destination(const char *newval, void *extra); extern const char *show_log_file_mode(void); extern bool check_log_stats(bool *newval, void **extra, GucSource source); 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_maintenance_io_concurrency(int *newval, void **extra, GucSource source); extern void assign_maintenance_io_concurrency(int newval, void *extra); extern bool check_max_connections(int *newval, void **extra, GucSource source); extern bool check_max_wal_senders(int *newval, void **extra, GucSource source); extern bool check_max_slot_wal_keep_size(int *newval, void **extra, GucSource source); extern void assign_max_wal_size(int newval, void *extra); extern bool check_max_worker_processes(int *newval, void **extra, GucSource source); extern bool check_max_stack_depth(int *newval, void **extra, GucSource source); extern void assign_max_stack_depth(int newval, void *extra); extern bool check_multixact_member_buffers(int *newval, void **extra, GucSource source); extern bool check_multixact_offset_buffers(int *newval, void **extra, GucSource source); extern bool check_notify_buffers(int *newval, void **extra, GucSource source); extern bool check_primary_slot_name(char **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_recovery_prefetch(int *new_value, void **extra, GucSource source); extern void assign_recovery_prefetch(int new_value, void *extra); extern bool check_recovery_target(char **newval, void **extra, GucSource source); extern void assign_recovery_target(const char *newval, void *extra); extern bool check_recovery_target_lsn(char **newval, void **extra, GucSource source); extern void assign_recovery_target_lsn(const char *newval, void *extra); extern bool check_recovery_target_name(char **newval, void **extra, GucSource source); extern void assign_recovery_target_name(const char *newval, void *extra); extern bool check_recovery_target_time(char **newval, void **extra, GucSource source); extern void assign_recovery_target_time(const char *newval, void *extra); extern bool check_recovery_target_timeline(char **newval, void **extra, GucSource source); extern void assign_recovery_target_timeline(const char *newval, void *extra); extern bool check_recovery_target_xid(char **newval, void **extra, GucSource source); extern void assign_recovery_target_xid(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); extern bool check_restrict_nonsystem_relation_kind(char **newval, void **extra, GucSource source); extern void assign_restrict_nonsystem_relation_kind(const char *newval, void *extra); extern bool check_search_path(char **newval, void **extra, GucSource source); extern void assign_search_path(const char *newval, void *extra); extern bool check_serial_buffers(int *newval, void **extra, GucSource source); extern bool check_session_authorization(char **newval, void **extra, GucSource source); extern void assign_session_authorization(const char *newval, void *extra); extern void assign_session_replication_role(int newval, void *extra); extern void assign_stats_fetch_consistency(int newval, void *extra); extern bool check_ssl(bool *newval, void **extra, GucSource source); extern bool check_stage_log_stats(bool *newval, void **extra, GucSource source); extern bool check_subtrans_buffers(int *newval, void **extra, GucSource source); 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); extern void assign_syslog_facility(int newval, void *extra); extern void assign_syslog_ident(const char *newval, void *extra); extern void assign_tcp_keepalives_count(int newval, void *extra); extern const char *show_tcp_keepalives_count(void); extern void assign_tcp_keepalives_idle(int newval, void *extra); extern const char *show_tcp_keepalives_idle(void); extern void assign_tcp_keepalives_interval(int newval, void *extra); extern const char *show_tcp_keepalives_interval(void); extern void assign_tcp_user_timeout(int newval, void *extra); extern const char *show_tcp_user_timeout(void); extern bool check_temp_buffers(int *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); 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_timezone_abbreviations(char **newval, void **extra, GucSource source); extern void assign_timezone_abbreviations(const char *newval, void *extra); extern bool check_transaction_buffers(int *newval, void **extra, GucSource source); extern bool check_transaction_deferrable(bool *newval, void **extra, GucSource source); extern bool check_transaction_isolation(int *newval, void **extra, GucSource source); extern bool check_transaction_read_only(bool *newval, void **extra, GucSource source); extern void assign_transaction_timeout(int newval, void *extra); extern const char *show_unix_socket_permissions(void); extern bool check_wal_buffers(int *newval, void **extra, GucSource source); extern bool check_wal_consistency_checking(char **newval, void **extra, GucSource source); extern void assign_wal_consistency_checking(const char *newval, void *extra); extern bool check_wal_segment_size(int *newval, void **extra, GucSource source); extern void assign_wal_sync_method(int new_wal_sync_method, void *extra); extern bool check_synchronized_standby_slots(char **newval, void **extra, GucSource source); extern void assign_synchronized_standby_slots(const char *newval, void *extra); #endif /* GUC_HOOKS_H */ libpg_query-17-6.1.0/src/postgres/include/utils/guc_tables.h000066400000000000000000000243611477334012600240030ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * guc_tables.h * Declarations of tables used by GUC. * * See src/backend/utils/misc/README for design notes. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * * src/include/utils/guc_tables.h * *------------------------------------------------------------------------- */ #ifndef GUC_TABLES_H #define GUC_TABLES_H 1 #include "lib/ilist.h" #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. * Be sure this agrees with the way the options are categorized in config.sgml! */ enum config_group { UNGROUPED, /* use for options not shown in pg_settings */ FILE_LOCATIONS, CONN_AUTH_SETTINGS, CONN_AUTH_TCP, CONN_AUTH_AUTH, CONN_AUTH_SSL, RESOURCES_MEM, RESOURCES_DISK, RESOURCES_KERNEL, RESOURCES_VACUUM_DELAY, RESOURCES_BGWRITER, RESOURCES_ASYNCHRONOUS, WAL_SETTINGS, WAL_CHECKPOINTS, WAL_ARCHIVING, WAL_RECOVERY, WAL_ARCHIVE_RECOVERY, WAL_RECOVERY_TARGET, WAL_SUMMARIZATION, REPLICATION_SENDING, REPLICATION_PRIMARY, REPLICATION_STANDBY, REPLICATION_SUBSCRIBERS, QUERY_TUNING_METHOD, QUERY_TUNING_COST, QUERY_TUNING_GEQO, QUERY_TUNING_OTHER, LOGGING_WHERE, LOGGING_WHEN, LOGGING_WHAT, PROCESS_TITLE, STATS_MONITORING, STATS_CUMULATIVE, AUTOVACUUM, CLIENT_CONN_STATEMENT, CLIENT_CONN_LOCALE, CLIENT_CONN_PRELOAD, CLIENT_CONN_OTHER, LOCK_MANAGEMENT, COMPAT_OPTIONS_PREVIOUS, COMPAT_OPTIONS_OTHER, 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 */ Oid srole; /* role that set the prior value */ Oid masked_srole; /* role 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 '. ') * * srole is the role that set the current value, or BOOTSTRAP_SUPERUSERID * if the value came from an internal source or the config file. Similarly * for reset_srole (which is usually BOOTSTRAP_SUPERUSERID, but not always). * * Variables that are currently of active interest for maintenance * operations are linked into various lists using the xxx_link fields. * The link fields are unused/garbage in variables not currently having * the specified properties. * * 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 */ Oid srole; /* role that set the current value */ Oid reset_srole; /* role that set the reset value */ GucStack *stack; /* stacked prior values */ void *extra; /* "extra" pointer for current actual value */ dlist_node nondef_link; /* list link for variables that have source * different from PGC_S_DEFAULT */ slist_node stack_link; /* list link for variables that have non-NULL * stack */ slist_node report_link; /* list link for variables that have the * GUC_NEEDS_REPORT bit set in status */ char *last_reported; /* if variable is GUC_REPORT, value last sent * to client (NULL if not yet sent) */ 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 /* changed value cannot be applied yet */ #define GUC_NEEDS_REPORT 0x0004 /* new value must be reported to client */ /* 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; }; /* * A note about string GUCs: the boot_val is allowed to be NULL, which leads * to the reset_val and the actual variable value (*variable) also being NULL. * However, there is no way to set a NULL value subsequently using * set_config_option or any other GUC API. Also, GUC APIs such as SHOW will * display a NULL value as an empty string. Callers that choose to use a NULL * boot_val should overwrite the setting later in startup, or else be careful * that NULL doesn't have semantics that are visibly different from an empty * string. */ 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 PGDLLIMPORT const char *const config_group_names[]; extern PGDLLIMPORT const char *const config_type_names[]; extern PGDLLIMPORT const char *const GucContext_Names[]; extern PGDLLIMPORT const char *const GucSource_Names[]; /* data arrays defining all the built-in GUC variables */ extern PGDLLIMPORT struct config_bool ConfigureNamesBool[]; extern PGDLLIMPORT struct config_int ConfigureNamesInt[]; extern PGDLLIMPORT struct config_real ConfigureNamesReal[]; extern PGDLLIMPORT struct config_string ConfigureNamesString[]; extern PGDLLIMPORT struct config_enum ConfigureNamesEnum[]; /* lookup GUC variables, returning config_generic pointers */ extern struct config_generic *find_option(const char *name, bool create_placeholders, bool skip_errors, int elevel); extern struct config_generic **get_explain_guc_options(int *num); /* get string value of variable */ extern char *ShowGUCOption(struct config_generic *record, bool use_units); /* get whether or not the GUC variable is visible to current user */ extern bool ConfigOptionIsVisible(struct config_generic *conf); /* get the current set of variables */ extern struct config_generic **get_guc_variables(int *num_vars); 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 char *config_enum_get_options(struct config_enum *record, const char *prefix, const char *suffix, const char *separator); #endif /* GUC_TABLES_H */ libpg_query-17-6.1.0/src/postgres/include/utils/hsearch.h000066400000000000000000000135141477334012600233060ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * hsearch.h * exported definitions for utils/hash/dynahash.c; see notes therein * * * Portions Copyright (c) 1996-2024, 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 { /* Used if HASH_PARTITION flag is set: */ long num_partitions; /* # partitions (must be power of 2) */ /* Used if HASH_SEGMENT flag is set: */ long ssize; /* segment size */ /* Used if HASH_DIRSIZE flag is set: */ long dsize; /* (initial) directory size */ long max_dsize; /* limit to dsize if dir size is limited */ /* Used if HASH_ELEM flag is set (which is now required): */ Size keysize; /* hash key length in bytes */ Size entrysize; /* total user element size in bytes */ /* Used if HASH_FUNCTION flag is set: */ HashValueFunc hash; /* hash function */ /* Used if HASH_COMPARE flag is set: */ HashCompareFunc match; /* key comparison function */ /* Used if HASH_KEYCOPY flag is set: */ HashCopyFunc keycopy; /* key copying function */ /* Used if HASH_ALLOC flag is set: */ HashAllocFunc alloc; /* memory allocator */ /* Used if HASH_CONTEXT flag is set: */ MemoryContext hcxt; /* memory context to use for allocations */ /* Used if HASH_SHARED_MEM flag is set: */ HASHHDR *hctl; /* location of header in shared mem */ } HASHCTL; /* Flag bits for hash_create; most 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_ELEM 0x0008 /* Set keysize and entrysize (now required!) */ #define HASH_STRINGS 0x0010 /* Select support functions for string keys */ #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 */ extern HTAB *hash_create(const char *tabname, long nelem, const 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-17-6.1.0/src/postgres/include/utils/injection_point.h000066400000000000000000000023541477334012600250640ustar00rootroot00000000000000/*------------------------------------------------------------------------- * injection_point.h * Definitions related to injection points. * * Copyright (c) 2001-2024, PostgreSQL Global Development Group * * src/include/utils/injection_point.h *------------------------------------------------------------------------- */ #ifndef INJECTION_POINT_H #define INJECTION_POINT_H /* * Injections points require --enable-injection-points. */ #ifdef USE_INJECTION_POINTS #define INJECTION_POINT(name) InjectionPointRun(name) #else #define INJECTION_POINT(name) ((void) name) #endif /* * Typedef for callback function launched by an injection point. */ typedef void (*InjectionPointCallback) (const char *name, const void *private_data); extern Size InjectionPointShmemSize(void); extern void InjectionPointShmemInit(void); extern void InjectionPointAttach(const char *name, const char *library, const char *function, const void *private_data, int private_data_size); extern void InjectionPointRun(const char *name); extern bool InjectionPointDetach(const char *name); #ifdef EXEC_BACKEND extern PGDLLIMPORT struct InjectionPointsCtl *ActiveInjectionPoints; #endif #endif /* INJECTION_POINT_H */ libpg_query-17-6.1.0/src/postgres/include/utils/inval.h000066400000000000000000000036221477334012600230010ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * inval.h * POSTGRES cache invalidation dispatcher definitions. * * * Portions Copyright (c) 1996-2024, 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/relfilelocator.h" #include "utils/relcache.h" extern PGDLLIMPORT int debug_discard_caches; 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(RelFileLocatorBackend rlocator); 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); extern void InvalidateSystemCachesExtended(bool debug_discard); extern void LogLogicalInvalidations(void); #endif /* INVAL_H */ libpg_query-17-6.1.0/src/postgres/include/utils/logtape.h000066400000000000000000000057301477334012600233250ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * logtape.h * Management of "logical tapes" within temporary files. * * See logtape.c for explanations. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/logtape.h * *------------------------------------------------------------------------- */ #ifndef LOGTAPE_H #define LOGTAPE_H #include "storage/sharedfileset.h" /* * LogicalTapeSet and LogicalTape are opaque types whose details are not * known outside logtape.c. */ typedef struct LogicalTapeSet LogicalTapeSet; typedef struct LogicalTape LogicalTape; /* * The approach tuplesort.c takes to parallel external sorts is that workers, * whose state is almost the same as independent serial sorts, are made to * produce a final materialized tape of sorted output in all cases. This is * frozen, just like any case requiring a final materialized tape. However, * there is one difference, which is that freezing will also export an * underlying shared fileset BufFile for sharing. Freezing produces TapeShare * metadata for the worker when this happens, which is passed along through * shared memory to leader. * * The leader process can then pass an array of TapeShare metadata (one per * worker participant) to LogicalTapeSetCreate(), alongside a handle to a * shared fileset, which is sufficient to construct a new logical tapeset that * consists of each of the tapes materialized by workers. * * Note that while logtape.c does create an empty leader tape at the end of the * tapeset in the leader case, it can never be written to due to a restriction * in the shared buffile infrastructure. */ typedef struct TapeShare { /* * Currently, all the leader process needs is the location of the * materialized tape's first block. */ int64 firstblocknumber; } TapeShare; /* * prototypes for functions in logtape.c */ extern LogicalTapeSet *LogicalTapeSetCreate(bool preallocate, SharedFileSet *fileset, int worker); extern void LogicalTapeClose(LogicalTape *lt); extern void LogicalTapeSetClose(LogicalTapeSet *lts); extern LogicalTape *LogicalTapeCreate(LogicalTapeSet *lts); extern LogicalTape *LogicalTapeImport(LogicalTapeSet *lts, int worker, TapeShare *shared); extern void LogicalTapeSetForgetFreeSpace(LogicalTapeSet *lts); extern size_t LogicalTapeRead(LogicalTape *lt, void *ptr, size_t size); extern void LogicalTapeWrite(LogicalTape *lt, const void *ptr, size_t size); extern void LogicalTapeRewindForRead(LogicalTape *lt, size_t buffer_size); extern void LogicalTapeFreeze(LogicalTape *lt, TapeShare *share); extern size_t LogicalTapeBackspace(LogicalTape *lt, size_t size); extern void LogicalTapeSeek(LogicalTape *lt, int64 blocknum, int offset); extern void LogicalTapeTell(LogicalTape *lt, int64 *blocknum, int *offset); extern int64 LogicalTapeSetBlocks(LogicalTapeSet *lts); #endif /* LOGTAPE_H */ libpg_query-17-6.1.0/src/postgres/include/utils/lsyscache.h000066400000000000000000000222051477334012600236440ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * lsyscache.h * Convenience routines for common queries in the system catalog cache. * * Portions Copyright (c) 1996-2024, 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" /* avoid including subscripting.h here */ struct SubscriptRoutines; /* 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 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 Oid get_constraint_index(Oid conoid); extern char get_constraint_type(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 Oid get_opclass_method(Oid opclass); 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_rel_relam(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 bool type_is_multirange(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 RegProcedure get_typsubscript(Oid typid, Oid *typelemp); extern const struct SubscriptRoutines *getSubscriptingRoutines(Oid typid, Oid *typelemp); 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_range_multirange(Oid rangeOid); extern Oid get_multirange_range(Oid multirangeOid); 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); extern Oid get_publication_oid(const char *pubname, bool missing_ok); extern char *get_publication_name(Oid pubid, bool missing_ok); extern Oid get_subscription_oid(const char *subname, bool missing_ok); extern char *get_subscription_name(Oid subid, bool missing_ok); #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-17-6.1.0/src/postgres/include/utils/memdebug.h000066400000000000000000000042241477334012600234540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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-17-6.1.0/src/postgres/include/utils/memutils.h000066400000000000000000000154371477334012600235360ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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) /* Must be less than SIZE_MAX */ #define MaxAllocHugeSize (SIZE_MAX / 2) #define InvalidAllocSize SIZE_MAX #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; /* * 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 MemoryContext GetMemoryChunkContext(void *pointer); extern Size GetMemoryChunkSpace(void *pointer); extern MemoryContext MemoryContextGetParent(MemoryContext context); extern bool MemoryContextIsEmpty(MemoryContext context); extern Size MemoryContextMemAllocated(MemoryContext context, bool recurse); extern void MemoryContextMemConsumed(MemoryContext context, MemoryContextCounters *consumed); extern void MemoryContextStats(MemoryContext context); extern void MemoryContextStatsDetail(MemoryContext context, int max_level, int max_children, bool print_to_stderr); extern void MemoryContextAllowInCriticalSection(MemoryContext context, bool allow); #ifdef MEMORY_CONTEXT_CHECKING extern void MemoryContextCheck(MemoryContext context); #endif /* Handy macro for copying and assigning context ID ... but note double eval */ #define MemoryContextCopyAndSetIdentifier(cxt, id) \ MemoryContextSetIdentifier(cxt, MemoryContextStrdup(cxt, id)) extern void HandleLogMemoryContextInterrupt(void); extern void ProcessLogMemoryContextInterrupt(void); /* * 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 minContextSize, Size initBlockSize, Size maxBlockSize); /* bump.c */ extern MemoryContext BumpContextCreate(MemoryContext parent, const char *name, Size minContextSize, Size initBlockSize, Size maxBlockSize); /* * 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-17-6.1.0/src/postgres/include/utils/memutils_internal.h000066400000000000000000000153361477334012600254300ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * memutils_internal.h * This file contains declarations for memory allocation utility * functions for internal use. * * * Portions Copyright (c) 2022-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/memutils_internal.h * *------------------------------------------------------------------------- */ #ifndef MEMUTILS_INTERNAL_H #define MEMUTILS_INTERNAL_H #include "utils/memutils.h" /* These functions implement the MemoryContext API for AllocSet context. */ extern void *AllocSetAlloc(MemoryContext context, Size size, int flags); extern void AllocSetFree(void *pointer); extern void *AllocSetRealloc(void *pointer, Size size, int flags); extern void AllocSetReset(MemoryContext context); extern void AllocSetDelete(MemoryContext context); extern MemoryContext AllocSetGetChunkContext(void *pointer); extern Size AllocSetGetChunkSpace(void *pointer); extern bool AllocSetIsEmpty(MemoryContext context); extern void AllocSetStats(MemoryContext context, MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals, bool print_to_stderr); #ifdef MEMORY_CONTEXT_CHECKING extern void AllocSetCheck(MemoryContext context); #endif /* These functions implement the MemoryContext API for Generation context. */ extern void *GenerationAlloc(MemoryContext context, Size size, int flags); extern void GenerationFree(void *pointer); extern void *GenerationRealloc(void *pointer, Size size, int flags); extern void GenerationReset(MemoryContext context); extern void GenerationDelete(MemoryContext context); extern MemoryContext GenerationGetChunkContext(void *pointer); extern Size GenerationGetChunkSpace(void *pointer); extern bool GenerationIsEmpty(MemoryContext context); extern void GenerationStats(MemoryContext context, MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals, bool print_to_stderr); #ifdef MEMORY_CONTEXT_CHECKING extern void GenerationCheck(MemoryContext context); #endif /* These functions implement the MemoryContext API for Slab context. */ extern void *SlabAlloc(MemoryContext context, Size size, int flags); extern void SlabFree(void *pointer); extern void *SlabRealloc(void *pointer, Size size, int flags); extern void SlabReset(MemoryContext context); extern void SlabDelete(MemoryContext context); extern MemoryContext SlabGetChunkContext(void *pointer); extern Size SlabGetChunkSpace(void *pointer); extern bool SlabIsEmpty(MemoryContext context); extern void SlabStats(MemoryContext context, MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals, bool print_to_stderr); #ifdef MEMORY_CONTEXT_CHECKING extern void SlabCheck(MemoryContext context); #endif /* * These functions support the implementation of palloc_aligned() and are not * part of a fully-fledged MemoryContext type. */ extern void AlignedAllocFree(void *pointer); extern void *AlignedAllocRealloc(void *pointer, Size size, int flags); extern MemoryContext AlignedAllocGetChunkContext(void *pointer); extern Size AlignedAllocGetChunkSpace(void *pointer); /* These functions implement the MemoryContext API for the Bump context. */ extern void *BumpAlloc(MemoryContext context, Size size, int flags); extern void BumpFree(void *pointer); extern void *BumpRealloc(void *pointer, Size size, int flags); extern void BumpReset(MemoryContext context); extern void BumpDelete(MemoryContext context); extern MemoryContext BumpGetChunkContext(void *pointer); extern Size BumpGetChunkSpace(void *pointer); extern bool BumpIsEmpty(MemoryContext context); extern void BumpStats(MemoryContext context, MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals, bool print_to_stderr); #ifdef MEMORY_CONTEXT_CHECKING extern void BumpCheck(MemoryContext context); #endif /* * How many extra bytes do we need to request in order to ensure that we can * align a pointer to 'alignto'. Since palloc'd pointers are already aligned * to MAXIMUM_ALIGNOF we can subtract that amount. We also need to make sure * there is enough space for the redirection MemoryChunk. */ #define PallocAlignedExtraBytes(alignto) \ ((alignto) + (sizeof(MemoryChunk) - MAXIMUM_ALIGNOF)) /* * MemoryContextMethodID * A unique identifier for each MemoryContext implementation which * indicates the index into the mcxt_methods[] array. See mcxt.c. * * For robust error detection, ensure that MemoryContextMethodID has a value * for each possible bit-pattern of MEMORY_CONTEXT_METHODID_MASK, and make * dummy entries for unused IDs in the mcxt_methods[] array. We also try * to avoid using bit-patterns as valid IDs if they are likely to occur in * garbage data, or if they could falsely match on chunks that are really from * malloc not palloc. (We can't tell that for most malloc implementations, * but it happens that glibc stores flag bits in the same place where we put * the MemoryContextMethodID, so the possible values are predictable for it.) */ typedef enum MemoryContextMethodID { MCTX_0_RESERVED_UNUSEDMEM_ID, /* 0000 occurs in never-used memory */ MCTX_1_RESERVED_GLIBC_ID, /* glibc malloc'd chunks usually match 0001 */ MCTX_2_RESERVED_GLIBC_ID, /* glibc malloc'd chunks > 128kB match 0010 */ MCTX_ASET_ID, MCTX_GENERATION_ID, MCTX_SLAB_ID, MCTX_ALIGNED_REDIRECT_ID, MCTX_BUMP_ID, MCTX_8_UNUSED_ID, MCTX_9_UNUSED_ID, MCTX_10_UNUSED_ID, MCTX_11_UNUSED_ID, MCTX_12_UNUSED_ID, MCTX_13_UNUSED_ID, MCTX_14_UNUSED_ID, MCTX_15_RESERVED_WIPEDMEM_ID /* 1111 occurs in wipe_mem'd memory */ } MemoryContextMethodID; /* * The number of bits that 8-byte memory chunk headers can use to encode the * MemoryContextMethodID. */ #define MEMORY_CONTEXT_METHODID_BITS 4 #define MEMORY_CONTEXT_METHODID_MASK \ ((((uint64) 1) << MEMORY_CONTEXT_METHODID_BITS) - 1) /* * 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, MemoryContextMethodID method_id, MemoryContext parent, const char *name); extern void *MemoryContextAllocationFailure(MemoryContext context, Size size, int flags); extern void MemoryContextSizeFailure(MemoryContext context, Size size, int flags) pg_attribute_noreturn(); static inline void MemoryContextCheckSize(MemoryContext context, Size size, int flags) { if (unlikely(!AllocSizeIsValid(size))) { if (!(flags & MCXT_ALLOC_HUGE) || !AllocHugeSizeIsValid(size)) MemoryContextSizeFailure(context, size, flags); } } #endif /* MEMUTILS_INTERNAL_H */ libpg_query-17-6.1.0/src/postgres/include/utils/memutils_memorychunk.h000066400000000000000000000216351477334012600261540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * memutils_memorychunk.h * Here we define a struct named MemoryChunk which implementations of * MemoryContexts may use as a header for chunks of memory they allocate. * * MemoryChunk provides a lightweight header that a MemoryContext can use to * store a reference back to the block which the given chunk is allocated on * and also an additional 30-bits to store another value such as the size of * the allocated chunk. * * Although MemoryChunks are used by each of our MemoryContexts, future * implementations may choose to implement their own method for storing chunk * headers. The only requirement is that the header ends with an 8-byte value * which the least significant 4-bits of are set to the MemoryContextMethodID * of the given context. * * By default, a MemoryChunk is 8 bytes in size, however, when * MEMORY_CONTEXT_CHECKING is defined the header becomes 16 bytes in size due * to the additional requested_size field. The MemoryContext may use this * field for whatever they wish, but it is intended to be used for additional * checks which are only done in MEMORY_CONTEXT_CHECKING builds. * * The MemoryChunk contains a uint64 field named 'hdrmask'. This field is * used to encode 4 separate pieces of information. Starting with the least * significant bits of 'hdrmask', the bit space is reserved as follows: * * 1. 4-bits to indicate the MemoryContextMethodID as defined by * MEMORY_CONTEXT_METHODID_MASK * 2. 1-bit to denote an "external" chunk (see below) * 3. 30-bits reserved for the MemoryContext to use for anything it * requires. Most MemoryContexts likely want to store the size of the * chunk here. * 4. 30-bits for the number of bytes that must be subtracted from the chunk * to obtain the address of the block that the chunk is stored on. * * If you're paying close attention, you'll notice this adds up to 65 bits * rather than 64 bits. This is because the highest-order bit of #3 is the * same bit as the lowest-order bit of #4. We can do this as we insist that * the chunk and block pointers are both MAXALIGNed, therefore the relative * offset between those will always be a MAXALIGNed value which means the * lowest order bit is always 0. When fetching the chunk to block offset we * mask out the lowest-order bit to ensure it's still zero. * * In some cases, for example when memory allocations become large, it's * possible fields 3 and 4 above are not large enough to store the values * required for the chunk. In this case, the MemoryContext can choose to mark * the chunk as "external" by calling the MemoryChunkSetHdrMaskExternal() * function. When this is done, fields 3 and 4 are unavailable for use by the * MemoryContext and it's up to the MemoryContext itself to devise its own * method for getting the reference to the block. * * Interface: * * MemoryChunkSetHdrMask: * Used to set up a non-external MemoryChunk. * * MemoryChunkSetHdrMaskExternal: * Used to set up an externally managed MemoryChunk. * * MemoryChunkIsExternal: * Determine if the given MemoryChunk is externally managed, i.e. * MemoryChunkSetHdrMaskExternal() was called on the chunk. * * MemoryChunkGetValue: * For non-external chunks, return the stored 30-bit value as it was set * in the call to MemoryChunkSetHdrMask(). * * MemoryChunkGetBlock: * For non-external chunks, return a pointer to the block as it was set * in the call to MemoryChunkSetHdrMask(). * * Also exports: * MEMORYCHUNK_MAX_VALUE * MEMORYCHUNK_MAX_BLOCKOFFSET * PointerGetMemoryChunk * MemoryChunkGetPointer * * Portions Copyright (c) 2022-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/memutils_memorychunk.h * *------------------------------------------------------------------------- */ #ifndef MEMUTILS_MEMORYCHUNK_H #define MEMUTILS_MEMORYCHUNK_H #include "utils/memutils_internal.h" /* * The maximum allowed value that MemoryContexts can store in the value * field. Must be 1 less than a power of 2. */ #define MEMORYCHUNK_MAX_VALUE UINT64CONST(0x3FFFFFFF) /* * The maximum distance in bytes that a MemoryChunk can be offset from the * block that is storing the chunk. Must be 1 less than a power of 2. */ #define MEMORYCHUNK_MAX_BLOCKOFFSET UINT64CONST(0x3FFFFFFF) /* * As above, but mask out the lowest-order (always zero) bit as this is shared * with the MemoryChunkGetValue field. */ #define MEMORYCHUNK_BLOCKOFFSET_MASK UINT64CONST(0x3FFFFFFE) /* define the least significant base-0 bit of each portion of the hdrmask */ #define MEMORYCHUNK_EXTERNAL_BASEBIT MEMORY_CONTEXT_METHODID_BITS #define MEMORYCHUNK_VALUE_BASEBIT (MEMORYCHUNK_EXTERNAL_BASEBIT + 1) #define MEMORYCHUNK_BLOCKOFFSET_BASEBIT (MEMORYCHUNK_VALUE_BASEBIT + 29) /* * A magic number for storing in the free bits of an external chunk. This * must mask out the bits used for storing the MemoryContextMethodID and the * external bit. */ #define MEMORYCHUNK_MAGIC (UINT64CONST(0xB1A8DB858EB6EFBA) >> \ MEMORYCHUNK_VALUE_BASEBIT << \ MEMORYCHUNK_VALUE_BASEBIT) typedef struct MemoryChunk { #ifdef MEMORY_CONTEXT_CHECKING Size requested_size; #endif /* bitfield for storing details about the chunk */ uint64 hdrmask; /* must be last */ } MemoryChunk; /* Get the MemoryChunk from the pointer */ #define PointerGetMemoryChunk(p) \ ((MemoryChunk *) ((char *) (p) - sizeof(MemoryChunk))) /* Get the pointer from the MemoryChunk */ #define MemoryChunkGetPointer(c) \ ((void *) ((char *) (c) + sizeof(MemoryChunk))) /* private macros for making the inline functions below more simple */ #define HdrMaskIsExternal(hdrmask) \ ((hdrmask) & (((uint64) 1) << MEMORYCHUNK_EXTERNAL_BASEBIT)) #define HdrMaskGetValue(hdrmask) \ (((hdrmask) >> MEMORYCHUNK_VALUE_BASEBIT) & MEMORYCHUNK_MAX_VALUE) /* * Shift the block offset down to the 0th bit position and mask off the single * bit that's shared with the MemoryChunkGetValue field. */ #define HdrMaskBlockOffset(hdrmask) \ (((hdrmask) >> MEMORYCHUNK_BLOCKOFFSET_BASEBIT) & MEMORYCHUNK_BLOCKOFFSET_MASK) /* For external chunks only, check the magic number matches */ #define HdrMaskCheckMagic(hdrmask) \ (MEMORYCHUNK_MAGIC == \ ((hdrmask) >> MEMORYCHUNK_VALUE_BASEBIT << MEMORYCHUNK_VALUE_BASEBIT)) /* * MemoryChunkSetHdrMask * Store the given 'block', 'chunk_size' and 'methodid' in the given * MemoryChunk. * * The number of bytes between 'block' and 'chunk' must be <= * MEMORYCHUNK_MAX_BLOCKOFFSET. * 'value' must be <= MEMORYCHUNK_MAX_VALUE. * Both 'chunk' and 'block' must be MAXALIGNed pointers. */ static inline void MemoryChunkSetHdrMask(MemoryChunk *chunk, void *block, Size value, MemoryContextMethodID methodid) { Size blockoffset = (char *) chunk - (char *) block; Assert((char *) chunk >= (char *) block); Assert((blockoffset & MEMORYCHUNK_BLOCKOFFSET_MASK) == blockoffset); Assert(value <= MEMORYCHUNK_MAX_VALUE); Assert((int) methodid <= MEMORY_CONTEXT_METHODID_MASK); chunk->hdrmask = (((uint64) blockoffset) << MEMORYCHUNK_BLOCKOFFSET_BASEBIT) | (((uint64) value) << MEMORYCHUNK_VALUE_BASEBIT) | methodid; } /* * MemoryChunkSetHdrMaskExternal * Set 'chunk' as an externally managed chunk. Here we only record the * MemoryContextMethodID and set the external chunk bit. */ static inline void MemoryChunkSetHdrMaskExternal(MemoryChunk *chunk, MemoryContextMethodID methodid) { Assert((int) methodid <= MEMORY_CONTEXT_METHODID_MASK); chunk->hdrmask = MEMORYCHUNK_MAGIC | (((uint64) 1) << MEMORYCHUNK_EXTERNAL_BASEBIT) | methodid; } /* * MemoryChunkIsExternal * Return true if 'chunk' is marked as external. */ static inline bool MemoryChunkIsExternal(MemoryChunk *chunk) { /* * External chunks should always store MEMORYCHUNK_MAGIC in the upper * portion of the hdrmask, check that nothing has stomped on that. */ Assert(!HdrMaskIsExternal(chunk->hdrmask) || HdrMaskCheckMagic(chunk->hdrmask)); return HdrMaskIsExternal(chunk->hdrmask); } /* * MemoryChunkGetValue * For non-external chunks, returns the value field as it was set in * MemoryChunkSetHdrMask. */ static inline Size MemoryChunkGetValue(MemoryChunk *chunk) { Assert(!HdrMaskIsExternal(chunk->hdrmask)); return HdrMaskGetValue(chunk->hdrmask); } /* * MemoryChunkGetBlock * For non-external chunks, returns the pointer to the block as was set * in MemoryChunkSetHdrMask. */ static inline void * MemoryChunkGetBlock(MemoryChunk *chunk) { Assert(!HdrMaskIsExternal(chunk->hdrmask)); return (void *) ((char *) chunk - HdrMaskBlockOffset(chunk->hdrmask)); } /* cleanup all internal definitions */ #undef MEMORYCHUNK_BLOCKOFFSET_MASK #undef MEMORYCHUNK_EXTERNAL_BASEBIT #undef MEMORYCHUNK_VALUE_BASEBIT #undef MEMORYCHUNK_BLOCKOFFSET_BASEBIT #undef MEMORYCHUNK_MAGIC #undef HdrMaskIsExternal #undef HdrMaskGetValue #undef HdrMaskBlockOffset #undef HdrMaskCheckMagic #endif /* MEMUTILS_MEMORYCHUNK_H */ libpg_query-17-6.1.0/src/postgres/include/utils/numeric.h000066400000000000000000000064261477334012600233370ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * numeric.h * Definitions for the exact numeric data type of Postgres * * Original coding 1998, Jan Wieck. Heavily revised 2003, Tom Lane. * * Copyright (c) 1998-2024, PostgreSQL Global Development Group * * src/include/utils/numeric.h * *------------------------------------------------------------------------- */ #ifndef _PG_NUMERIC_H_ #define _PG_NUMERIC_H_ #include "common/pg_prng.h" #include "fmgr.h" /* * Limits on the precision and scale specifiable in a NUMERIC typmod. The * precision is strictly positive, but the scale may be positive or negative. * A negative scale implies rounding before the decimal point. * * Note that the minimum display scale defined below is zero --- we always * display all digits before the decimal point, even when the scale is * negative. * * Note that the implementation limits on the precision and display scale of a * numeric value are much larger --- beware of what you use these for! */ #define NUMERIC_MAX_PRECISION 1000 #define NUMERIC_MIN_SCALE (-1000) #define NUMERIC_MAX_SCALE 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 */ static inline Numeric DatumGetNumeric(Datum X) { return (Numeric) PG_DETOAST_DATUM(X); } static inline Numeric DatumGetNumericCopy(Datum X) { return (Numeric) PG_DETOAST_DATUM_COPY(X); } static inline Datum NumericGetDatum(Numeric X) { return 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); extern bool numeric_is_inf(Numeric num); extern int32 numeric_maximum_size(int32 typmod); extern char *numeric_out_sci(Numeric num, int scale); extern char *numeric_normalize(Numeric num); extern Numeric int64_to_numeric(int64 val); extern Numeric int64_div_fast_to_numeric(int64 val1, int log10val2); 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 *have_error); extern int64 numeric_int8_opt_error(Numeric num, bool *have_error); extern Numeric random_numeric(pg_prng_state *state, Numeric rmin, Numeric rmax); #endif /* _PG_NUMERIC_H_ */ libpg_query-17-6.1.0/src/postgres/include/utils/palloc.h000066400000000000000000000132031477334012600231360ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 *MemoryContextAllocExtended(MemoryContext context, Size size, int flags); extern void *MemoryContextAllocAligned(MemoryContext context, Size size, Size alignto, int flags); extern void *palloc(Size size); extern void *palloc0(Size size); extern void *palloc_extended(Size size, int flags); extern void *palloc_aligned(Size size, Size alignto, int flags); extern pg_nodiscard void *repalloc(void *pointer, Size size); extern pg_nodiscard void *repalloc_extended(void *pointer, Size size, int flags); extern pg_nodiscard void *repalloc0(void *pointer, Size oldsize, Size size); extern void pfree(void *pointer); /* * Variants with easier notation and more type safety */ /* * Allocate space for one object of type "type" */ #define palloc_object(type) ((type *) palloc(sizeof(type))) #define palloc0_object(type) ((type *) palloc0(sizeof(type))) /* * Allocate space for "count" objects of type "type" */ #define palloc_array(type, count) ((type *) palloc(sizeof(type) * (count))) #define palloc0_array(type, count) ((type *) palloc0(sizeof(type) * (count))) /* * Change size of allocation pointed to by "pointer" to have space for "count" * objects of type "type" */ #define repalloc_array(pointer, type, count) ((type *) repalloc(pointer, sizeof(type) * (count))) #define repalloc0_array(pointer, type, oldcount, count) ((type *) repalloc0(pointer, sizeof(type) * (oldcount), sizeof(type) * (count))) /* Higher-limit allocators. */ extern void *MemoryContextAllocHuge(MemoryContext context, Size size); extern pg_nodiscard 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-17-6.1.0/src/postgres/include/utils/partcache.h000066400000000000000000000045431477334012600236250ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * partcache.h * * Copyright (c) 1996-2024, PostgreSQL Global Development Group * * src/include/utils/partcache.h * *------------------------------------------------------------------------- */ #ifndef PARTCACHE_H #define PARTCACHE_H #include "access/attnum.h" #include "fmgr.h" #include "nodes/parsenodes.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 { PartitionStrategy 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-17-6.1.0/src/postgres/include/utils/pg_locale.h000066400000000000000000000102121477334012600236060ustar00rootroot00000000000000/*----------------------------------------------------------------------- * * PostgreSQL locale utilities * * src/include/utils/pg_locale.h * * Copyright (c) 2002-2024, 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 #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 /* use for libc locale names */ #define LOCALE_NAME_BUFLEN 128 /* GUC settings */ extern PGDLLIMPORT char *locale_messages; extern PGDLLIMPORT char *locale_monetary; extern PGDLLIMPORT char *locale_numeric; extern PGDLLIMPORT char *locale_time; extern PGDLLIMPORT int icu_validation_level; /* lc_time localization cache */ extern PGDLLIMPORT char *localized_abbrev_days[]; extern PGDLLIMPORT char *localized_full_days[]; extern PGDLLIMPORT char *localized_abbrev_months[]; extern PGDLLIMPORT char *localized_full_months[]; /* is the databases's LC_CTYPE the C locale? */ extern PGDLLIMPORT bool database_ctype_is_c; extern bool check_locale(int category, const char *locale, char **canonname); extern char *pg_perm_setlocale(int category, const char *locale); 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 use a discriminated union to hold either a locale_t or an ICU collator. * pg_locale_t is occasionally checked for truth, so make it a pointer. */ struct pg_locale_struct { char provider; bool deterministic; union { struct { const char *locale; } builtin; locale_t lt; #ifdef USE_ICU struct { const char *locale; UCollator *ucol; } icu; #endif } info; }; typedef struct pg_locale_struct *pg_locale_t; extern PGDLLIMPORT struct pg_locale_struct default_locale; extern void make_icu_collator(const char *iculocstr, const char *icurules, struct pg_locale_struct *resultp); extern bool pg_locale_deterministic(pg_locale_t locale); extern pg_locale_t pg_newlocale_from_collation(Oid collid); extern char *get_collation_actual_version(char collprovider, const char *collcollate); extern int pg_strcoll(const char *arg1, const char *arg2, pg_locale_t locale); extern int pg_strncoll(const char *arg1, size_t len1, const char *arg2, size_t len2, pg_locale_t locale); extern bool pg_strxfrm_enabled(pg_locale_t locale); extern size_t pg_strxfrm(char *dest, const char *src, size_t destsize, pg_locale_t locale); extern size_t pg_strnxfrm(char *dest, size_t destsize, const char *src, size_t srclen, pg_locale_t locale); extern bool pg_strxfrm_prefix_enabled(pg_locale_t locale); extern size_t pg_strxfrm_prefix(char *dest, const char *src, size_t destsize, pg_locale_t locale); extern size_t pg_strnxfrm_prefix(char *dest, size_t destsize, const char *src, size_t srclen, pg_locale_t locale); extern int builtin_locale_encoding(const char *locale); extern const char *builtin_validate_locale(int encoding, const char *locale); extern void icu_validate_locale(const char *loc_str); extern char *icu_language_tag(const char *loc_str, int elevel); #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-17-6.1.0/src/postgres/include/utils/pgstat_internal.h000066400000000000000000000551521477334012600250730ustar00rootroot00000000000000/* ---------- * pgstat_internal.h * * Definitions for the PostgreSQL cumulative statistics system that should * only be needed by files implementing statistics support (rather than ones * reporting / querying stats). * * Copyright (c) 2001-2024, PostgreSQL Global Development Group * * src/include/utils/pgstat_internal.h * ---------- */ #ifndef PGSTAT_INTERNAL_H #define PGSTAT_INTERNAL_H #include "common/hashfn_unstable.h" #include "lib/dshash.h" #include "lib/ilist.h" #include "pgstat.h" #include "storage/lwlock.h" #include "utils/dsa.h" /* * Types related to shared memory storage of statistics. * * Per-object statistics are stored in the "shared stats" hashtable. That * table's entries (PgStatShared_HashEntry) contain a pointer to the actual stats * data for the object (the size of the stats data varies depending on the * kind of stats). The table is keyed by PgStat_HashKey. * * Once a backend has a reference to a shared stats entry, it increments the * entry's refcount. Even after stats data is dropped (e.g., due to a DROP * TABLE), the entry itself can only be deleted once all references have been * released. * * These refcounts, in combination with a backend local hashtable * (pgStatEntryRefHash, with entries pointing to PgStat_EntryRef) in front of * the shared hash table, mean that most stats work can happen without * touching the shared hash table, reducing contention. * * Once there are pending stats updates for a table PgStat_EntryRef->pending * is allocated to contain a working space for as-of-yet-unapplied stats * updates. Once the stats are flushed, PgStat_EntryRef->pending is freed. * * Each stat kind in the shared hash table has a fixed member * PgStatShared_Common as the first element. */ /* struct for shared statistics hash entry key. */ typedef struct PgStat_HashKey { PgStat_Kind kind; /* statistics entry kind */ Oid dboid; /* database ID. InvalidOid for shared objects. */ Oid objoid; /* object ID, either table or function. */ } PgStat_HashKey; /* * Shared statistics hash entry. Doesn't itself contain any stats, but points * to them (with ->body). That allows the stats entries themselves to be of * variable size. */ typedef struct PgStatShared_HashEntry { PgStat_HashKey key; /* hash key */ /* * If dropped is set, backends need to release their references so that * the memory for the entry can be freed. No new references may be made * once marked as dropped. */ bool dropped; /* * Refcount managing lifetime of the entry itself (as opposed to the * dshash entry pointing to it). The stats lifetime has to be separate * from the hash table entry lifetime because we allow backends to point * to a stats entry without holding a hash table lock (and some other * reasons). * * As long as the entry is not dropped, 1 is added to the refcount * representing that the entry should not be dropped. In addition each * backend that has a reference to the entry needs to increment the * refcount as long as it does. * * May only be incremented / decremented while holding at least a shared * lock on the dshash partition containing the entry. It needs to be an * atomic variable because multiple backends can increment the refcount * with just a shared lock. * * When the refcount reaches 0 the entry needs to be freed. */ pg_atomic_uint32 refcount; /* * Counter tracking the number of times the entry has been reused. * * Set to 0 when the entry is created, and incremented by one each time * the shared entry is reinitialized with pgstat_reinit_entry(). * * May only be incremented / decremented while holding at least a shared * lock on the dshash partition containing the entry. Like refcount, it * needs to be an atomic variable because multiple backends can increment * the generation with just a shared lock. */ pg_atomic_uint32 generation; /* * Pointer to shared stats. The stats entry always starts with * PgStatShared_Common, embedded in a larger struct containing the * PgStat_Kind specific stats fields. */ dsa_pointer body; } PgStatShared_HashEntry; /* * Common header struct for PgStatShared_*. */ typedef struct PgStatShared_Common { uint32 magic; /* just a validity cross-check */ /* lock protecting stats contents (i.e. data following the header) */ LWLock lock; } PgStatShared_Common; /* * A backend local reference to a shared stats entry. As long as at least one * such reference exists, the shared stats entry will not be released. * * If there are pending stats update to the shared stats, these are stored in * ->pending. */ typedef struct PgStat_EntryRef { /* * Pointer to the PgStatShared_HashEntry entry in the shared stats * hashtable. */ PgStatShared_HashEntry *shared_entry; /* * Pointer to the stats data (i.e. PgStatShared_HashEntry->body), resolved * as a local pointer, to avoid repeated dsa_get_address() calls. */ PgStatShared_Common *shared_stats; /* * Copy of PgStatShared_HashEntry->generation, keeping locally track of * the shared stats entry "generation" retrieved (number of times reused). */ uint32 generation; /* * Pending statistics data that will need to be flushed to shared memory * stats eventually. Each stats kind utilizing pending data defines what * format its pending data has and needs to provide a * PgStat_KindInfo->flush_pending_cb callback to merge pending into shared * stats. */ void *pending; dlist_node pending_node; /* membership in pgStatPending list */ } PgStat_EntryRef; /* * Some stats changes are transactional. To maintain those, a stack of * PgStat_SubXactStatus entries is maintained, which contain data pertaining * to the current transaction and its active subtransactions. */ typedef struct PgStat_SubXactStatus { int nest_level; /* subtransaction nest level */ struct PgStat_SubXactStatus *prev; /* higher-level subxact if any */ /* * Statistics for transactionally dropped objects need to be * transactionally dropped as well. Collect the stats dropped in the * current (sub-)transaction and only execute the stats drop when we know * if the transaction commits/aborts. To handle replicas and crashes, * stats drops are included in commit / abort records. */ dclist_head pending_drops; /* * Tuple insertion/deletion counts for an open transaction can't be * propagated into PgStat_TableStatus counters until we know if it is * going to commit or abort. Hence, we keep these counts in per-subxact * structs that live in TopTransactionContext. This data structure is * designed on the assumption that subxacts won't usually modify very many * tables. */ PgStat_TableXactStatus *first; /* head of list for this subxact */ } PgStat_SubXactStatus; /* * Metadata for a specific kind of statistics. */ typedef struct PgStat_KindInfo { /* * Do a fixed number of stats objects exist for this kind of stats (e.g. * bgwriter stats) or not (e.g. tables). */ bool fixed_amount:1; /* * Can stats of this kind be accessed from another database? Determines * whether a stats object gets included in stats snapshots. */ bool accessed_across_databases:1; /* * For variable-numbered stats: Identified on-disk using a name, rather * than PgStat_HashKey. Probably only needed for replication slot stats. */ bool named_on_disk:1; /* * The size of an entry in the shared stats hash table (pointed to by * PgStatShared_HashEntry->body). */ uint32 shared_size; /* * The offset/size of statistics inside the shared stats entry. Used when * [de-]serializing statistics to / from disk respectively. Separate from * shared_size because [de-]serialization may not include in-memory state * like lwlocks. */ uint32 shared_data_off; uint32 shared_data_len; /* * The size of the pending data for this kind. E.g. how large * PgStat_EntryRef->pending is. Used for allocations. * * 0 signals that an entry of this kind should never have a pending entry. */ uint32 pending_size; /* * For variable-numbered stats: flush pending stats. Required if pending * data is used. */ bool (*flush_pending_cb) (PgStat_EntryRef *sr, bool nowait); /* * For variable-numbered stats: delete pending stats. Optional. */ void (*delete_pending_cb) (PgStat_EntryRef *sr); /* * For variable-numbered stats: reset the reset timestamp. Optional. */ void (*reset_timestamp_cb) (PgStatShared_Common *header, TimestampTz ts); /* * For variable-numbered stats with named_on_disk. Optional. */ void (*to_serialized_name) (const PgStat_HashKey *key, const PgStatShared_Common *header, NameData *name); bool (*from_serialized_name) (const NameData *name, PgStat_HashKey *key); /* * For fixed-numbered statistics: Reset All. */ void (*reset_all_cb) (TimestampTz ts); /* * For fixed-numbered statistics: Build snapshot for entry */ void (*snapshot_cb) (void); /* name of the kind of stats */ const char *const name; } PgStat_KindInfo; /* * List of SLRU names that we keep stats for. There is no central registry of * SLRUs, so we use this fixed list instead. The "other" entry is used for * all SLRUs without an explicit entry (e.g. SLRUs in extensions). * * This is only defined here so that SLRU_NUM_ELEMENTS is known for later type * definitions. */ static const char *const slru_names[] = { "commit_timestamp", "multixact_member", "multixact_offset", "notify", "serializable", "subtransaction", "transaction", "other" /* has to be last */ }; #define SLRU_NUM_ELEMENTS lengthof(slru_names) /* ---------- * Types and definitions for different kinds of fixed-amount stats. * * Single-writer stats use the changecount mechanism to achieve low-overhead * writes - they're obviously more performance critical than reads. Check the * definition of struct PgBackendStatus for some explanation of the * changecount mechanism. * * Because the obvious implementation of resetting single-writer stats isn't * compatible with that (another backend needs to write), we don't scribble on * shared stats while resetting. Instead, just record the current counter * values in a copy of the stats data, which is protected by ->lock. See * pgstat_fetch_stat_(archiver|bgwriter|checkpointer) for the reader side. * * The only exception to that is the stat_reset_timestamp in these structs, * which is protected by ->lock, because it has to be written by another * backend while resetting. * ---------- */ typedef struct PgStatShared_Archiver { /* lock protects ->reset_offset as well as stats->stat_reset_timestamp */ LWLock lock; uint32 changecount; PgStat_ArchiverStats stats; PgStat_ArchiverStats reset_offset; } PgStatShared_Archiver; typedef struct PgStatShared_BgWriter { /* lock protects ->reset_offset as well as stats->stat_reset_timestamp */ LWLock lock; uint32 changecount; PgStat_BgWriterStats stats; PgStat_BgWriterStats reset_offset; } PgStatShared_BgWriter; typedef struct PgStatShared_Checkpointer { /* lock protects ->reset_offset as well as stats->stat_reset_timestamp */ LWLock lock; uint32 changecount; PgStat_CheckpointerStats stats; PgStat_CheckpointerStats reset_offset; } PgStatShared_Checkpointer; /* Shared-memory ready PgStat_IO */ typedef struct PgStatShared_IO { /* * locks[i] protects stats.stats[i]. locks[0] also protects * stats.stat_reset_timestamp. */ LWLock locks[BACKEND_NUM_TYPES]; PgStat_IO stats; } PgStatShared_IO; typedef struct PgStatShared_SLRU { /* lock protects ->stats */ LWLock lock; PgStat_SLRUStats stats[SLRU_NUM_ELEMENTS]; } PgStatShared_SLRU; typedef struct PgStatShared_Wal { /* lock protects ->stats */ LWLock lock; PgStat_WalStats stats; } PgStatShared_Wal; /* ---------- * Types and definitions for different kinds of variable-amount stats. * * Each struct has to start with PgStatShared_Common, containing information * common across the different types of stats. Kind-specific data follows. * ---------- */ typedef struct PgStatShared_Database { PgStatShared_Common header; PgStat_StatDBEntry stats; } PgStatShared_Database; typedef struct PgStatShared_Relation { PgStatShared_Common header; PgStat_StatTabEntry stats; } PgStatShared_Relation; typedef struct PgStatShared_Function { PgStatShared_Common header; PgStat_StatFuncEntry stats; } PgStatShared_Function; typedef struct PgStatShared_Subscription { PgStatShared_Common header; PgStat_StatSubEntry stats; } PgStatShared_Subscription; typedef struct PgStatShared_ReplSlot { PgStatShared_Common header; PgStat_StatReplSlotEntry stats; } PgStatShared_ReplSlot; /* * Central shared memory entry for the cumulative stats system. * * Fixed amount stats, the dynamic shared memory hash table for * non-fixed-amount stats, as well as remaining bits and pieces are all * reached from here. */ typedef struct PgStat_ShmemControl { void *raw_dsa_area; /* * Stats for variable-numbered objects are kept in this shared hash table. * See comment above PgStat_Kind for details. */ dshash_table_handle hash_handle; /* shared dbstat hash */ /* Has the stats system already been shut down? Just a debugging check. */ bool is_shutdown; /* * Whenever statistics for dropped objects could not be freed - because * backends still have references - the dropping backend calls * pgstat_request_entry_refs_gc() incrementing this counter. Eventually * that causes backends to run pgstat_gc_entry_refs(), allowing memory to * be reclaimed. */ pg_atomic_uint64 gc_request_count; /* * Stats data for fixed-numbered objects. */ PgStatShared_Archiver archiver; PgStatShared_BgWriter bgwriter; PgStatShared_Checkpointer checkpointer; PgStatShared_IO io; PgStatShared_SLRU slru; PgStatShared_Wal wal; } PgStat_ShmemControl; /* * Cached statistics snapshot */ typedef struct PgStat_Snapshot { PgStat_FetchConsistency mode; /* time at which snapshot was taken */ TimestampTz snapshot_timestamp; bool fixed_valid[PGSTAT_NUM_KINDS]; PgStat_ArchiverStats archiver; PgStat_BgWriterStats bgwriter; PgStat_CheckpointerStats checkpointer; PgStat_IO io; PgStat_SLRUStats slru[SLRU_NUM_ELEMENTS]; PgStat_WalStats wal; /* to free snapshot in bulk */ MemoryContext context; struct pgstat_snapshot_hash *stats; } PgStat_Snapshot; /* * Collection of backend-local stats state. */ typedef struct PgStat_LocalState { PgStat_ShmemControl *shmem; dsa_area *dsa; dshash_table *shared_hash; /* the current statistics snapshot */ PgStat_Snapshot snapshot; } PgStat_LocalState; /* * Inline functions defined further below. */ static inline void pgstat_begin_changecount_write(uint32 *cc); static inline void pgstat_end_changecount_write(uint32 *cc); static inline uint32 pgstat_begin_changecount_read(uint32 *cc); static inline bool pgstat_end_changecount_read(uint32 *cc, uint32 cc_before); static inline void pgstat_copy_changecounted_stats(void *dst, void *src, size_t len, uint32 *cc); static inline int pgstat_cmp_hash_key(const void *a, const void *b, size_t size, void *arg); static inline uint32 pgstat_hash_hash_key(const void *d, size_t size, void *arg); static inline size_t pgstat_get_entry_len(PgStat_Kind kind); static inline void *pgstat_get_entry_data(PgStat_Kind kind, PgStatShared_Common *entry); /* * Functions in pgstat.c */ extern const PgStat_KindInfo *pgstat_get_kind_info(PgStat_Kind kind); #ifdef USE_ASSERT_CHECKING extern void pgstat_assert_is_up(void); #else #define pgstat_assert_is_up() ((void)true) #endif extern void pgstat_delete_pending_entry(PgStat_EntryRef *entry_ref); extern PgStat_EntryRef *pgstat_prep_pending_entry(PgStat_Kind kind, Oid dboid, Oid objoid, bool *created_entry); extern PgStat_EntryRef *pgstat_fetch_pending_entry(PgStat_Kind kind, Oid dboid, Oid objoid); extern void *pgstat_fetch_entry(PgStat_Kind kind, Oid dboid, Oid objoid); extern void pgstat_snapshot_fixed(PgStat_Kind kind); /* * Functions in pgstat_archiver.c */ extern void pgstat_archiver_reset_all_cb(TimestampTz ts); extern void pgstat_archiver_snapshot_cb(void); /* * Functions in pgstat_bgwriter.c */ extern void pgstat_bgwriter_reset_all_cb(TimestampTz ts); extern void pgstat_bgwriter_snapshot_cb(void); /* * Functions in pgstat_checkpointer.c */ extern void pgstat_checkpointer_reset_all_cb(TimestampTz ts); extern void pgstat_checkpointer_snapshot_cb(void); /* * Functions in pgstat_database.c */ extern void pgstat_report_disconnect(Oid dboid); extern void pgstat_update_dbstats(TimestampTz ts); extern void AtEOXact_PgStat_Database(bool isCommit, bool parallel); extern PgStat_StatDBEntry *pgstat_prep_database_pending(Oid dboid); extern void pgstat_reset_database_timestamp(Oid dboid, TimestampTz ts); extern bool pgstat_database_flush_cb(PgStat_EntryRef *entry_ref, bool nowait); extern void pgstat_database_reset_timestamp_cb(PgStatShared_Common *header, TimestampTz ts); /* * Functions in pgstat_function.c */ extern bool pgstat_function_flush_cb(PgStat_EntryRef *entry_ref, bool nowait); /* * Functions in pgstat_io.c */ extern bool pgstat_flush_io(bool nowait); extern void pgstat_io_reset_all_cb(TimestampTz ts); extern void pgstat_io_snapshot_cb(void); /* * Functions in pgstat_relation.c */ extern void AtEOXact_PgStat_Relations(PgStat_SubXactStatus *xact_state, bool isCommit); extern void AtEOSubXact_PgStat_Relations(PgStat_SubXactStatus *xact_state, bool isCommit, int nestDepth); extern void AtPrepare_PgStat_Relations(PgStat_SubXactStatus *xact_state); extern void PostPrepare_PgStat_Relations(PgStat_SubXactStatus *xact_state); extern bool pgstat_relation_flush_cb(PgStat_EntryRef *entry_ref, bool nowait); extern void pgstat_relation_delete_pending_cb(PgStat_EntryRef *entry_ref); /* * Functions in pgstat_replslot.c */ extern void pgstat_replslot_reset_timestamp_cb(PgStatShared_Common *header, TimestampTz ts); extern void pgstat_replslot_to_serialized_name_cb(const PgStat_HashKey *key, const PgStatShared_Common *header, NameData *name); extern bool pgstat_replslot_from_serialized_name_cb(const NameData *name, PgStat_HashKey *key); /* * Functions in pgstat_shmem.c */ extern void pgstat_attach_shmem(void); extern void pgstat_detach_shmem(void); extern PgStat_EntryRef *pgstat_get_entry_ref(PgStat_Kind kind, Oid dboid, Oid objoid, bool create, bool *created_entry); extern bool pgstat_lock_entry(PgStat_EntryRef *entry_ref, bool nowait); extern bool pgstat_lock_entry_shared(PgStat_EntryRef *entry_ref, bool nowait); extern void pgstat_unlock_entry(PgStat_EntryRef *entry_ref); extern bool pgstat_drop_entry(PgStat_Kind kind, Oid dboid, Oid objoid); extern void pgstat_drop_all_entries(void); extern PgStat_EntryRef *pgstat_get_entry_ref_locked(PgStat_Kind kind, Oid dboid, Oid objoid, bool nowait); extern void pgstat_reset_entry(PgStat_Kind kind, Oid dboid, Oid objoid, TimestampTz ts); extern void pgstat_reset_entries_of_kind(PgStat_Kind kind, TimestampTz ts); extern void pgstat_reset_matching_entries(bool (*do_reset) (PgStatShared_HashEntry *, Datum), Datum match_data, TimestampTz ts); extern void pgstat_request_entry_refs_gc(void); extern PgStatShared_Common *pgstat_init_entry(PgStat_Kind kind, PgStatShared_HashEntry *shhashent); /* * Functions in pgstat_slru.c */ extern bool pgstat_slru_flush(bool nowait); extern void pgstat_slru_reset_all_cb(TimestampTz ts); extern void pgstat_slru_snapshot_cb(void); /* * Functions in pgstat_wal.c */ extern bool pgstat_flush_wal(bool nowait); extern void pgstat_init_wal(void); extern bool pgstat_have_pending_wal(void); extern void pgstat_wal_reset_all_cb(TimestampTz ts); extern void pgstat_wal_snapshot_cb(void); /* * Functions in pgstat_subscription.c */ extern bool pgstat_subscription_flush_cb(PgStat_EntryRef *entry_ref, bool nowait); extern void pgstat_subscription_reset_timestamp_cb(PgStatShared_Common *header, TimestampTz ts); /* * Functions in pgstat_xact.c */ extern PgStat_SubXactStatus *pgstat_get_xact_stack_level(int nest_level); extern void pgstat_drop_transactional(PgStat_Kind kind, Oid dboid, Oid objoid); extern void pgstat_create_transactional(PgStat_Kind kind, Oid dboid, Oid objoid); /* * Variables in pgstat.c */ extern PGDLLIMPORT PgStat_LocalState pgStatLocal; /* * Variables in pgstat_io.c */ extern PGDLLIMPORT bool have_iostats; /* * Variables in pgstat_slru.c */ extern PGDLLIMPORT bool have_slrustats; /* * Implementation of inline functions declared above. */ /* * Helpers for changecount manipulation. See comments around struct * PgBackendStatus for details. */ static inline void pgstat_begin_changecount_write(uint32 *cc) { Assert((*cc & 1) == 0); START_CRIT_SECTION(); (*cc)++; pg_write_barrier(); } static inline void pgstat_end_changecount_write(uint32 *cc) { Assert((*cc & 1) == 1); pg_write_barrier(); (*cc)++; END_CRIT_SECTION(); } static inline uint32 pgstat_begin_changecount_read(uint32 *cc) { uint32 before_cc = *cc; CHECK_FOR_INTERRUPTS(); pg_read_barrier(); return before_cc; } /* * Returns true if the read succeeded, false if it needs to be repeated. */ static inline bool pgstat_end_changecount_read(uint32 *cc, uint32 before_cc) { uint32 after_cc; pg_read_barrier(); after_cc = *cc; /* was a write in progress when we started? */ if (before_cc & 1) return false; /* did writes start and complete while we read? */ return before_cc == after_cc; } /* * helper function for PgStat_KindInfo->snapshot_cb * PgStat_KindInfo->reset_all_cb callbacks. * * Copies out the specified memory area following change-count protocol. */ static inline void pgstat_copy_changecounted_stats(void *dst, void *src, size_t len, uint32 *cc) { uint32 cc_before; do { cc_before = pgstat_begin_changecount_read(cc); memcpy(dst, src, len); } while (!pgstat_end_changecount_read(cc, cc_before)); } /* helpers for dshash / simplehash hashtables */ static inline int pgstat_cmp_hash_key(const void *a, const void *b, size_t size, void *arg) { Assert(size == sizeof(PgStat_HashKey) && arg == NULL); return memcmp(a, b, sizeof(PgStat_HashKey)); } static inline uint32 pgstat_hash_hash_key(const void *d, size_t size, void *arg) { const char *key = (const char *) d; Assert(size == sizeof(PgStat_HashKey) && arg == NULL); return fasthash32(key, size, 0); } /* * The length of the data portion of a shared memory stats entry (i.e. without * transient data such as refcounts, lwlocks, ...). */ static inline size_t pgstat_get_entry_len(PgStat_Kind kind) { return pgstat_get_kind_info(kind)->shared_data_len; } /* * Returns a pointer to the data portion of a shared memory stats entry. */ static inline void * pgstat_get_entry_data(PgStat_Kind kind, PgStatShared_Common *entry) { size_t off = pgstat_get_kind_info(kind)->shared_data_off; Assert(off != 0 && off < PG_UINT32_MAX); return ((char *) (entry)) + off; } #endif /* PGSTAT_INTERNAL_H */ libpg_query-17-6.1.0/src/postgres/include/utils/plancache.h000066400000000000000000000252201477334012600236040ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * plancache.h * Plan cache definitions. * * See plancache.c for comments. * * Portions Copyright (c) 1996-2024, 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 PGDLLIMPORT 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 SearchPathMatcher *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 */ int64 num_custom_plans; /* # of custom plans included in total */ int64 num_generic_plans; /* # of generic plans */ } 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 void ReleaseAllPlanCacheRefsInOwner(ResourceOwner owner); 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, ResourceOwner owner, QueryEnvironment *queryEnv); extern void ReleaseCachedPlan(CachedPlan *plan, ResourceOwner owner); 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-17-6.1.0/src/postgres/include/utils/portal.h000066400000000000000000000244241477334012600231740ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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/ * MERGE 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 */ int createLevel; /* creating subxact's nesting level */ /* 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; /* unused */ /* 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 */ /* * Outermost ActiveSnapshot for execution of the portal's queries. For * all but a few utility commands, we require such a snapshot to exist. * This ensures that TOAST references in query results can be detoasted, * and helps to reduce thrashing of the process's exposed xmin. */ Snapshot portalSnapshot; /* active snapshot, or NULL if none */ /* * Where we store tuples for a held cursor or a PORTAL_ONE_RETURNING, * PORTAL_ONE_MOD_WITH, 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, int parentLevel, 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); extern void ForgetPortalSnapshots(void); #endif /* PORTAL_H */ libpg_query-17-6.1.0/src/postgres/include/utils/probes.h000066400000000000000000000166021477334012600231640ustar00rootroot00000000000000#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) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_READ_START_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_READ_DONE(INT1, INT2, INT3, INT4, INT5, INT6, INT7) 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_EXTEND_START(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_EXTEND_START_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_EXTEND_DONE(INT1, INT2, INT3, INT4, INT5, INT6, INT7) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_EXTEND_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_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-17-6.1.0/src/postgres/include/utils/ps_status.h000066400000000000000000000021771477334012600237210ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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 /* disabled on Windows as the performance overhead can be significant */ #ifdef WIN32 #define DEFAULT_UPDATE_PROCESS_TITLE false #else #define DEFAULT_UPDATE_PROCESS_TITLE true #endif extern PGDLLIMPORT 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_suffix(const char *suffix); extern void set_ps_display_remove_suffix(void); extern void set_ps_display_with_len(const char *activity, size_t len); /* * set_ps_display * inlined to allow strlen to be evaluated during compilation when * passing string constants. */ static inline void set_ps_display(const char *activity) { set_ps_display_with_len(activity, strlen(activity)); } extern const char *get_ps_display(int *displen); #endif /* PS_STATUS_H */ libpg_query-17-6.1.0/src/postgres/include/utils/queryenvironment.h000066400000000000000000000053731477334012600253270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * queryenvironment.h * Access to functions to mutate the query environment and retrieve the * actual data related to entries (if any). * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/utils/regproc.h000066400000000000000000000030011477334012600233200ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * regproc.h * Functions for the built-in types regproc, regclass, regtype, etc. * * Portions Copyright (c) 1996-2024, 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" /* Control flags for format_procedure_extended */ #define FORMAT_PROC_INVALID_AS_NULL 0x01 /* NULL if undefined */ #define FORMAT_PROC_FORCE_QUALIFY 0x02 /* force qualification */ extern char *format_procedure_extended(Oid procedure_oid, bits16 flags); /* Control flags for format_operator_extended */ #define FORMAT_OPERATOR_INVALID_AS_NULL 0x01 /* NULL if undefined */ #define FORMAT_OPERATOR_FORCE_QUALIFY 0x02 /* force qualification */ extern char *format_operator_extended(Oid operator_oid, bits16 flags); extern List *stringToQualifiedNameList(const char *string, Node *escontext); extern char *format_procedure(Oid procedure_oid); extern char *format_procedure_qualified(Oid procedure_oid); extern void format_procedure_parts(Oid procedure_oid, List **objnames, List **objargs, bool missing_ok); 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, bool missing_ok); #endif libpg_query-17-6.1.0/src/postgres/include/utils/rel.h000066400000000000000000000606471477334012600224640ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * rel.h * POSTGRES relation descriptor (a/k/a relcache entry) definitions. * * * Portions Copyright (c) 1996-2024, 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/catalog.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/relfilelocator.h" #include "storage/smgr.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 { RelFileLocator rd_locator; /* relation physical identifier */ SMgrRelation rd_smgr; /* cached file handle, or NULL */ int rd_refcnt; /* reference count */ ProcNumber rd_backend; /* owning backend's proc number, if temp rel */ 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 storage was created before the * current top transaction. (IndexStmt.oldNumber leads to the case of a new * rel with an old rd_locator.) rd_firstRelfilelocatorSubid is the ID of the * highest subtransaction an rd_locator change has survived into or zero if * rd_locator matches the value it had at the start of the current top * transaction. (Rolling back the subtransaction that * rd_firstRelfilelocatorSubid denotes would restore rd_locator 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_newRelfilelocatorSubid is the ID of the highest subtransaction the * most-recent relfilenumber 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 relfilenumbers 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_newRelfilelocatorSubid is now forgotten * * If every rd_*Subid field is zero, they are read-only outside * relcache.c. Files that trigger rd_locator changes by updating * pg_class.reltablespace and/or pg_class.relfilenode call * RelationAssumeNewRelfilelocator() 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_newRelfilelocatorSubid; /* highest subxact changing * rd_locator to current value */ SubTransactionId rd_firstRelfilelocatorSubid; /* highest subxact * changing rd_locator 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 */ /* Same as above, for partdescs that omit detached partitions */ PartitionDesc rd_partdesc_nodetached; /* partdesc w/o detached parts */ MemoryContext rd_pddcxt; /* for rd_partdesc_nodetached, if any */ /* * pg_inherits.xmin of the partition that was excluded in * rd_partdesc_nodetached. This informs a future user of that partdesc: * if this value is not in progress for the active snapshot, then the * partdesc can be used, otherwise they have to build a new one. (This * matches what find_inheritance_children_extended would do). */ TransactionId rd_partdesc_nodetached_xmin; /* 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 (deferrable?) primary key, if any */ bool rd_ispkdeferrable; /* is rd_pkindex a deferrable PK? */ 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: */ bool rd_attrsvalid; /* are bitmaps of attrs valid? */ 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 */ Bitmapset *rd_hotblockingattr; /* cols blocking HOT update */ Bitmapset *rd_summarizedattr; /* cols indexed by summarizing indexes */ PublicationDesc *rd_pubdesc; /* publication descriptor, or NULL */ /* * 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 */ bool pgstat_enabled; /* should relation stats be counted */ /* 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 { pg_node_attr(no_equal, no_read, no_query_jumble) NodeTag type; /* oid of the constraint itself */ Oid conoid; /* relation constrained by the foreign key */ Oid conrelid; /* relation referenced by the foreign key */ Oid confrelid; /* number of columns in the foreign key */ int nkeys; /* * these arrays each have nkeys valid entries: */ /* cols in referencing table */ AttrNumber conkey[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys)); /* cols in referenced table */ AttrNumber confkey[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys)); /* PK = FK operator OIDs */ Oid conpfeqop[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys)); } 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; /* StdRdOptions->vacuum_index_cleanup values */ typedef enum StdRdOptIndexCleanup { STDRD_OPTION_VACUUM_INDEX_CLEANUP_AUTO = 0, STDRD_OPTION_VACUUM_INDEX_CLEANUP_OFF, STDRD_OPTION_VACUUM_INDEX_CLEANUP_ON, } StdRdOptIndexCleanup; typedef struct StdRdOptions { int32 vl_len_; /* varlena header (do not touch directly!) */ int fillfactor; /* page fill factor in percent (0..100) */ 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 */ StdRdOptIndexCleanup vacuum_index_cleanup; /* controls index vacuuming */ 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; bool security_invoker; 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) /* * RelationHasSecurityInvoker * Returns true if the relation has the security_invoker property set. * Note multiple eval of argument! */ #define RelationHasSecurityInvoker(relation) \ (AssertMacro(relation->rd_rel->relkind == RELKIND_VIEW), \ (relation)->rd_options ? \ ((ViewOptions *) (relation)->rd_options)->security_invoker : 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 relfilenumber map. Note multiple eval * of argument! */ #define RelationIsMapped(relation) \ (RELKIND_HAS_STORAGE((relation)->rd_rel->relkind) && \ ((relation)->rd_rel->relfilenode == InvalidRelFileNumber)) #ifndef FRONTEND /* * RelationGetSmgr * Returns smgr file handle for a relation, opening it if needed. * * Very little code is authorized to touch rel->rd_smgr directly. Instead * use this function to fetch its value. */ static inline SMgrRelation RelationGetSmgr(Relation rel) { if (unlikely(rel->rd_smgr == NULL)) { rel->rd_smgr = smgropen(rel->rd_locator, rel->rd_backend); smgrpin(rel->rd_smgr); } return rel->rd_smgr; } /* * RelationCloseSmgr * Close the relation at the smgr level, if not already done. */ static inline void RelationCloseSmgr(Relation relation) { if (relation->rd_smgr != NULL) { smgrunpin(relation->rd_smgr); smgrclose(relation->rd_smgr); relation->rd_smgr = NULL; } } #endif /* !FRONTEND */ /* * 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, * so there's no need to re-open the smgr handle if it's not currently open. */ #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 { \ RelationGetSmgr(relation)->smgr_targblock = (targblock); \ } while (0) /* * RelationIsPermanent * True if relation is permanent. */ #define RelationIsPermanent(relation) \ ((relation)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT) /* * 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 * RelFileLocator" in src/backend/access/transam/README. */ #define RelationNeedsWAL(relation) \ (RelationIsPermanent(relation) && (XLogIsNeeded() || \ (relation->rd_createSubid == InvalidSubTransactionId && \ relation->rd_firstRelfilelocatorSubid == 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), for foreign tables (since they don't WAL log, either), * 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) && \ (relation)->rd_rel->relkind != RELKIND_FOREIGN_TABLE && \ !IsCatalogRelation(relation)) /* routines in utils/cache/relcache.c */ extern void RelationIncrementReferenceCount(Relation rel); extern void RelationDecrementReferenceCount(Relation rel); #endif /* REL_H */ libpg_query-17-6.1.0/src/postgres/include/utils/relcache.h000066400000000000000000000113521477334012600234350ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * relcache.h * Relation descriptor cache definitions. * * * Portions Copyright (c) 1996-2024, 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 "access/tupdesc.h" #include "common/relpath.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 bytea **RelationGetIndexAttOptions(Relation relation, bool copy); /* * Which set of columns to return by RelationGetIndexAttrBitmap. */ typedef enum IndexAttrBitmapKind { INDEX_ATTR_BITMAP_KEY, INDEX_ATTR_BITMAP_PRIMARY_KEY, INDEX_ATTR_BITMAP_IDENTITY_KEY, INDEX_ATTR_BITMAP_HOT_BLOCKING, INDEX_ATTR_BITMAP_SUMMARIZED, } IndexAttrBitmapKind; extern Bitmapset *RelationGetIndexAttrBitmap(Relation relation, IndexAttrBitmapKind attrKind); extern Bitmapset *RelationGetIdentityKeyBitmap(Relation relation); extern void RelationGetExclusionInfo(Relation indexRelation, Oid **operators, Oid **procs, uint16 **strategies); extern void RelationInitIndexAccessInfo(Relation relation); /* caller must include pg_publication.h */ struct PublicationDesc; extern void RelationBuildPublicationDesc(Relation relation, struct PublicationDesc *pubdesc); 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, RelFileNumber relfilenumber, Oid reltablespace, bool shared_relation, bool mapped_relation, char relpersistence, char relkind); /* * Routines to manage assignment of new relfilenumber to a relation */ extern void RelationSetNewRelfilenumber(Relation relation, char persistence); extern void RelationAssumeNewRelfilelocator(Relation relation); /* * Routines for flushing/rebuilding relcache entries in various scenarios */ extern void RelationForgetRelation(Oid rid); extern void RelationCacheInvalidateEntry(Oid relationId); extern void RelationCacheInvalidate(bool debug_discard); #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 PGDLLIMPORT bool criticalRelcachesBuilt; /* should be used only by relcache.c and postinit.c */ extern PGDLLIMPORT bool criticalSharedRelcachesBuilt; #endif /* RELCACHE_H */ libpg_query-17-6.1.0/src/postgres/include/utils/reltrigger.h000066400000000000000000000043221477334012600240340ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * reltrigger.h * POSTGRES relation trigger definitions. * * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/utils/resowner.h000066400000000000000000000133451477334012600235370ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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. * * Within each phase, resources are released in priority order. Priority is * just an integer specified in ResourceOwnerDesc. The priorities of built-in * resource types are given below, extensions may use any priority relative to * those or RELEASE_PRIO_FIRST/LAST. RELEASE_PRIO_FIRST is a fine choice if * your resource doesn't depend on any other resources. */ typedef enum { RESOURCE_RELEASE_BEFORE_LOCKS = 1, RESOURCE_RELEASE_LOCKS, RESOURCE_RELEASE_AFTER_LOCKS, } ResourceReleasePhase; typedef uint32 ResourceReleasePriority; /* priorities of built-in BEFORE_LOCKS resources */ #define RELEASE_PRIO_BUFFER_IOS 100 #define RELEASE_PRIO_BUFFER_PINS 200 #define RELEASE_PRIO_RELCACHE_REFS 300 #define RELEASE_PRIO_DSMS 400 #define RELEASE_PRIO_JIT_CONTEXTS 500 #define RELEASE_PRIO_CRYPTOHASH_CONTEXTS 600 #define RELEASE_PRIO_HMAC_CONTEXTS 700 /* priorities of built-in AFTER_LOCKS resources */ #define RELEASE_PRIO_CATCACHE_REFS 100 #define RELEASE_PRIO_CATCACHE_LIST_REFS 200 #define RELEASE_PRIO_PLANCACHE_REFS 300 #define RELEASE_PRIO_TUPDESC_REFS 400 #define RELEASE_PRIO_SNAPSHOT_REFS 500 #define RELEASE_PRIO_FILES 600 #define RELEASE_PRIO_WAITEVENTSETS 700 /* 0 is considered invalid */ #define RELEASE_PRIO_FIRST 1 #define RELEASE_PRIO_LAST UINT32_MAX /* * In order to track an object, resowner.c needs a few callbacks for it. * The callbacks for resources of a specific kind are encapsulated in * ResourceOwnerDesc. * * Note that the callbacks occur post-commit or post-abort, so the callback * functions can only do noncritical cleanup and must not fail. */ typedef struct ResourceOwnerDesc { const char *name; /* name for the object kind, for debugging */ /* when are these objects released? */ ResourceReleasePhase release_phase; ResourceReleasePriority release_priority; /* * Release resource. * * This is called for each resource in the resource owner, in the order * specified by 'release_phase' and 'release_priority' when the whole * resource owner is been released or when ResourceOwnerReleaseAllOfKind() * is called. The resource is implicitly removed from the owner, the * callback function doesn't need to call ResourceOwnerForget. */ void (*ReleaseResource) (Datum res); /* * Format a string describing the resource, for debugging purposes. If a * resource has not been properly released before commit, this is used to * print a WARNING. * * This can be left to NULL, in which case a generic "[resource name]: %p" * format is used. */ char *(*DebugPrint) (Datum res); } ResourceOwnerDesc; /* * 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 ResourceOwnerDelete(ResourceOwner owner); extern ResourceOwner ResourceOwnerGetParent(ResourceOwner owner); extern void ResourceOwnerNewParent(ResourceOwner owner, ResourceOwner newparent); extern void ResourceOwnerEnlarge(ResourceOwner owner); extern void ResourceOwnerRemember(ResourceOwner owner, Datum value, const ResourceOwnerDesc *kind); extern void ResourceOwnerForget(ResourceOwner owner, Datum value, const ResourceOwnerDesc *kind); extern void ResourceOwnerReleaseAllOfKind(ResourceOwner owner, const ResourceOwnerDesc *kind); extern void RegisterResourceReleaseCallback(ResourceReleaseCallback callback, void *arg); extern void UnregisterResourceReleaseCallback(ResourceReleaseCallback callback, void *arg); extern void CreateAuxProcessResourceOwner(void); extern void ReleaseAuxProcessResources(bool isCommit); /* special support for local lock management */ struct LOCALLOCK; extern void ResourceOwnerRememberLock(ResourceOwner owner, struct LOCALLOCK *locallock); extern void ResourceOwnerForgetLock(ResourceOwner owner, struct LOCALLOCK *locallock); #endif /* RESOWNER_H */ libpg_query-17-6.1.0/src/postgres/include/utils/ruleutils.h000066400000000000000000000036401477334012600237200ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * ruleutils.h * Declarations for ruleutils.c * * Portions Copyright (c) 1996-2024, 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; /* Flags for pg_get_indexdef_columns_extended() */ #define RULE_INDEXDEF_PRETTY 0x01 #define RULE_INDEXDEF_KEYS_ONLY 0x02 /* ignore included attributes */ extern char *pg_get_indexdef_string(Oid indexrelid); extern char *pg_get_indexdef_columns(Oid indexrelid, bool pretty); extern char *pg_get_indexdef_columns_extended(Oid indexrelid, bits16 flags); extern char *pg_get_querydef(Query *query, 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); extern char *pg_get_statisticsobjdef_string(Oid statextid); #endif /* RULEUTILS_H */ libpg_query-17-6.1.0/src/postgres/include/utils/sharedtuplestore.h000066400000000000000000000035631477334012600252710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sharedtuplestore.h * Simple mechanism for sharing tuples between backends. * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/include/utils/snapmgr.h000066400000000000000000000116301477334012600233350ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * snapmgr.h * POSTGRES snapshot manager * * Portions Copyright (c) 1996-2024, 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" extern PGDLLIMPORT bool FirstSnapshotSet; extern PGDLLIMPORT TransactionId TransactionXmin; extern PGDLLIMPORT TransactionId RecentXmin; /* 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 visibility cutoff state to use (c.f. * GlobalVisTestFor()). */ #define InitNonVacuumableSnapshot(snapshotdata, vistestp) \ ((snapshotdata).snapshot_type = SNAPSHOT_NON_VACUUMABLE, \ (snapshotdata).vistest = (vistestp)) /* * 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 PushActiveSnapshotWithLevel(Snapshot snapshot, int snap_level); 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 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 void WaitForOlderSnapshots(TransactionId limitXmin, bool progress); extern bool ThereAreNoPriorRegisteredSnapshots(void); extern bool HaveRegisteredOrActiveSnapshot(void); extern char *ExportSnapshot(Snapshot snapshot); /* * These live in procarray.c because they're intimately linked to the * procarray contents, but thematically they better fit into snapmgr.h. */ typedef struct GlobalVisState GlobalVisState; extern GlobalVisState *GlobalVisTestFor(Relation rel); extern bool GlobalVisTestIsRemovableXid(GlobalVisState *state, TransactionId xid); extern bool GlobalVisTestIsRemovableFullXid(GlobalVisState *state, FullTransactionId fxid); extern bool GlobalVisCheckRemovableXid(Relation rel, TransactionId xid); extern bool GlobalVisCheckRemovableFullXid(Relation rel, FullTransactionId fxid); /* * 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 historic_snapshot, 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 *source_pgproc); #endif /* SNAPMGR_H */ libpg_query-17-6.1.0/src/postgres/include/utils/snapshot.h000066400000000000000000000175261477334012600235370ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * snapshot.h * POSTGRES snapshot definition * * Portions Copyright (c) 1996-2024, 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; /* * For SNAPSHOT_NON_VACUUMABLE (and hopefully more in the future) this is * used to determine whether row could be vacuumed. */ struct GlobalVisState *vistest; /* * 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 */ /* * The transaction completion count at the time GetSnapshotData() built * this snapshot. Allows to avoid re-computing static snapshots when no * transactions completed since the last GetSnapshotData(). */ uint64 snapXactCompletionCount; } SnapshotData; #endif /* SNAPSHOT_H */ libpg_query-17-6.1.0/src/postgres/include/utils/sortsupport.h000066400000000000000000000324671477334012600243250ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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; } static inline int ApplyUnsignedSortComparator(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 = datum1 < datum2 ? -1 : datum1 > datum2 ? 1 : 0; if (ssup->ssup_reverse) INVERT_COMPARE_RESULT(compare); } return compare; } #if SIZEOF_DATUM >= 8 static inline int ApplySignedSortComparator(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 = DatumGetInt64(datum1) < DatumGetInt64(datum2) ? -1 : DatumGetInt64(datum1) > DatumGetInt64(datum2) ? 1 : 0; if (ssup->ssup_reverse) INVERT_COMPARE_RESULT(compare); } return compare; } #endif static inline int ApplyInt32SortComparator(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 = DatumGetInt32(datum1) < DatumGetInt32(datum2) ? -1 : DatumGetInt32(datum1) > DatumGetInt32(datum2) ? 1 : 0; 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; } /* * Datum comparison functions that we have specialized sort routines for. * Datatypes that install these as their comparator or abbreviated comparator * are eligible for faster sorting. */ extern int ssup_datum_unsigned_cmp(Datum x, Datum y, SortSupport ssup); #if SIZEOF_DATUM >= 8 extern int ssup_datum_signed_cmp(Datum x, Datum y, SortSupport ssup); #endif extern int ssup_datum_int32_cmp(Datum x, Datum y, SortSupport ssup); /* 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); extern void PrepareSortSupportFromGistIndexRel(Relation indexRel, SortSupport ssup); #endif /* SORTSUPPORT_H */ libpg_query-17-6.1.0/src/postgres/include/utils/syscache.h000066400000000000000000000122621477334012600234720ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * syscache.h * System catalog cache definitions. * * See also lsyscache.h, which provides convenience routines for * common cache-lookup operations. * * Portions Copyright (c) 1996-2024, 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 */ #include "catalog/syscache_ids.h" 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); extern HeapTuple SearchSysCacheLocked1(int cacheId, Datum key1); /* convenience routines */ extern HeapTuple SearchSysCacheCopy(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4); extern HeapTuple SearchSysCacheLockedCopy1(int cacheId, Datum key1); 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 Datum SysCacheGetAttrNotNull(int cacheId, HeapTuple tup, AttrNumber attributeNumber); 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-17-6.1.0/src/postgres/include/utils/timeout.h000066400000000000000000000054441477334012600233620ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * timeout.h * Routines to multiplex SIGALRM interrupts for multiple timeout reasons. * * * Portions Copyright (c) 1996-2024, 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, TRANSACTION_TIMEOUT, IDLE_SESSION_TIMEOUT, IDLE_STATS_UPDATE_TIMEOUT, CLIENT_CONNECTION_CHECK_TIMEOUT, STARTUP_PROGRESS_TIMEOUT, /* First user-definable timeout reason */ USER_TIMEOUT, /* Maximum number of timeout reasons */ MAX_TIMEOUTS = USER_TIMEOUT + 10 } 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, TMPARAM_EVERY, } TimeoutType; typedef struct { TimeoutId id; /* timeout to set */ TimeoutType type; /* TMPARAM_AFTER or TMPARAM_AT */ int delay_ms; /* only used for TMPARAM_AFTER/EVERY */ 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_every(TimeoutId id, TimestampTz fin_time, 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-17-6.1.0/src/postgres/include/utils/timestamp.h000066400000000000000000000112641477334012600236740ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * timestamp.h * Definitions for the SQL "timestamp" and "interval" types. * * Portions Copyright (c) 1996-2024, 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" /* * Functions 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! */ static inline Timestamp DatumGetTimestamp(Datum X) { return (Timestamp) DatumGetInt64(X); } static inline TimestampTz DatumGetTimestampTz(Datum X) { return (TimestampTz) DatumGetInt64(X); } static inline Interval * DatumGetIntervalP(Datum X) { return (Interval *) DatumGetPointer(X); } static inline Datum TimestampGetDatum(Timestamp X) { return Int64GetDatum(X); } static inline Datum TimestampTzGetDatum(TimestampTz X) { return Int64GetDatum(X); } static inline Datum IntervalPGetDatum(const Interval *X) { return 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) /* Macros for doing timestamp arithmetic without assuming timestamp's units */ #define TimestampTzPlusMilliseconds(tz,ms) ((tz) + ((ms) * (int64) 1000)) #define TimestampTzPlusSeconds(tz,s) ((tz) + ((s) * (int64) 1000000)) /* Set at postmaster start */ extern PGDLLIMPORT TimestampTz PgStartTime; /* Set at configuration reload */ extern PGDLLIMPORT 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 *result); extern int timestamp2tm(Timestamp dt, int *tzp, struct pg_tm *tm, fsec_t *fsec, const char **tzn, pg_tz *attimezone); extern void dt2time(Timestamp jd, int *hour, int *min, int *sec, fsec_t *fsec); extern void interval2itm(Interval span, struct pg_itm *itm); extern int itm2interval(struct pg_itm *itm, Interval *span); extern int itmin2interval(struct pg_itm_in *itm_in, 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-17-6.1.0/src/postgres/include/utils/tuplesort.h000066400000000000000000000477711477334012600237460ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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/brin_tuple.h" #include "access/itup.h" #include "executor/tuptable.h" #include "storage/dsm.h" #include "utils/logtape.h" #include "utils/relcache.h" #include "utils/sortsupport.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; /* Bitwise option flags for tuple sorts */ #define TUPLESORT_NONE 0 /* specifies whether non-sequential access to the sort result is required */ #define TUPLESORT_RANDOMACCESS (1 << 0) /* specifies if the tuplesort is able to support bounded sorts */ #define TUPLESORT_ALLOWBOUNDED (1 << 1) /* * For bounded sort, tuples get pfree'd when they fall outside of the bound. * When bounded sorts are not required, we can use a bump context for tuple * allocation as there's no risk that pfree will ever be called for a tuple. * Define a macro to make it easier for code to figure out if we're using a * bump allocator. */ #define TupleSortUseBumpTupleCxt(opt) (((opt) & TUPLESORT_ALLOWBOUNDED) == 0) typedef struct TuplesortInstrumentation { TuplesortMethod sortMethod; /* sort algorithm used */ TuplesortSpaceType spaceType; /* type of space spaceUsed represents */ int64 spaceUsed; /* space consumption, in kB */ } TuplesortInstrumentation; /* * The objects we actually sort are SortTuple structs. These contain * a pointer to the tuple proper (might be a MinimalTuple or IndexTuple), * which is a separate palloc chunk --- we assume it is just one chunk and * can be freed by a simple pfree() (except during merge, where we use a * simple slab allocator, and during a non-bounded sort where we use a bump * allocator). SortTuples also contain the tuple's first key column in * Datum/nullflag format, and a source/input tape number that tracks which * tape each heap element/slot belongs to during merging. * * Storing the first key column lets us save heap_getattr or index_getattr * calls during tuple comparisons. We could extract and save all the key * columns not just the first, but this would increase code complexity and * overhead, and wouldn't actually save any comparison cycles in the common * case where the first key determines the comparison result. Note that * for a pass-by-reference datatype, datum1 points into the "tuple" storage. * * There is one special case: when the sort support infrastructure provides an * "abbreviated key" representation, where the key is (typically) a pass by * value proxy for a pass by reference type. In this case, the abbreviated key * is stored in datum1 in place of the actual first key column. * * When sorting single Datums, the data value is represented directly by * datum1/isnull1 for pass by value types (or null values). If the datatype is * pass-by-reference and isnull1 is false, then "tuple" points to a separately * palloc'd data value, otherwise "tuple" is NULL. The value of datum1 is then * either the same pointer as "tuple", or is an abbreviated key value as * described above. Accordingly, "tuple" is always used in preference to * datum1 as the authoritative value for pass-by-reference cases. */ typedef struct { void *tuple; /* the tuple itself */ Datum datum1; /* value of first key column */ bool isnull1; /* is first key column NULL? */ int srctape; /* source tape number */ } SortTuple; typedef int (*SortTupleComparator) (const SortTuple *a, const SortTuple *b, Tuplesortstate *state); /* * The public part of a Tuple sort operation state. This data structure * contains the definition of sort-variant-specific interface methods and * the part of Tuple sort operation state required by their implementations. */ typedef struct { /* * These function pointers decouple the routines that must know what kind * of tuple we are sorting from the routines that don't need to know it. * They are set up by the tuplesort_begin_xxx routines. * * Function to compare two tuples; result is per qsort() convention, ie: * <0, 0, >0 according as ab. The API must match * qsort_arg_comparator. */ SortTupleComparator comparetup; /* * Fall back to the full tuple for comparison, but only compare the first * sortkey if it was abbreviated. Otherwise, only compare second and later * sortkeys. */ SortTupleComparator comparetup_tiebreak; /* * Alter datum1 representation in the SortTuple's array back from the * abbreviated key to the first column value. */ void (*removeabbrev) (Tuplesortstate *state, SortTuple *stups, int count); /* * Function to write a stored tuple onto tape. The representation of the * tuple on tape need not be the same as it is in memory. */ void (*writetup) (Tuplesortstate *state, LogicalTape *tape, SortTuple *stup); /* * Function to read a stored tuple from tape back into memory. 'len' is * the already-read length of the stored tuple. The tuple is allocated * from the slab memory arena, or is palloc'd, see * tuplesort_readtup_alloc(). */ void (*readtup) (Tuplesortstate *state, SortTuple *stup, LogicalTape *tape, unsigned int len); /* * Function to do some specific release of resources for the sort variant. * In particular, this function should free everything stored in the "arg" * field, which wouldn't be cleared on reset of the Tuple sort memory * contexts. This can be NULL if nothing specific needs to be done. */ void (*freestate) (Tuplesortstate *state); /* * The subsequent fields are used in the implementations of the functions * above. */ MemoryContext maincontext; /* memory context for tuple sort metadata that * persists across multiple batches */ MemoryContext sortcontext; /* memory context holding most sort data */ MemoryContext tuplecontext; /* sub-context of sortcontext for tuple data */ /* * Whether SortTuple's datum1 and isnull1 members are maintained by the * above routines. If not, some sort specializations are disabled. */ bool haveDatum1; /* * The sortKeys variable is used by every case other than the hash index * case; it is set by tuplesort_begin_xxx. tupDesc is only used by the * MinimalTuple and CLUSTER routines, though. */ int nKeys; /* number of columns in sort key */ SortSupport sortKeys; /* array of length nKeys */ /* * This variable is shared by the single-key MinimalTuple case and the * Datum case (which both use qsort_ssup()). Otherwise, it's NULL. The * presence of a value in this field is also checked by various sort * specialization functions as an optimization when comparing the leading * key in a tiebreak situation to determine if there are any subsequent * keys to sort on. */ SortSupport onlyKey; int sortopt; /* Bitmask of flags used to setup sort */ bool tuples; /* Can SortTuple.tuple ever be set? */ void *arg; /* Specific information for the sort variant */ } TuplesortPublic; /* Sort parallel code from state for sort__start probes */ #define PARALLEL_SORT(coordinate) (coordinate == NULL || \ (coordinate)->sharedsort == NULL ? 0 : \ (coordinate)->isWorker ? 1 : 2) #define TuplesortstateGetPublic(state) ((TuplesortPublic *) state) /* When using this macro, beware of double evaluation of len */ #define LogicalTapeReadExact(tape, ptr, len) \ do { \ if (LogicalTapeRead(tape, ptr, len) != (size_t) (len)) \ elog(ERROR, "unexpected end of data"); \ } while(0) /* * 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. * * The "index_brin" API is similar to index_btree, but the tuples are * BrinTuple and are sorted by their block number 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_common(int workMem, SortCoordinate coordinate, int sortopt); extern void tuplesort_set_bound(Tuplesortstate *state, int64 bound); extern bool tuplesort_used_bound(Tuplesortstate *state); extern void tuplesort_puttuple_common(Tuplesortstate *state, SortTuple *tuple, bool useAbbrev, Size tuplen); extern void tuplesort_performsort(Tuplesortstate *state); extern bool tuplesort_gettuple_common(Tuplesortstate *state, bool forward, SortTuple *stup); 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 TUPLESORT_RANDOMACCESS was specified * during tuplesort_begin_*. Additionally backwards scan in gettuple/getdatum * also require TUPLESORT_RANDOMACCESS. Note that parallel sorts do not * support random access. */ extern void tuplesort_rescan(Tuplesortstate *state); extern void tuplesort_markpos(Tuplesortstate *state); extern void tuplesort_restorepos(Tuplesortstate *state); extern void *tuplesort_readtup_alloc(Tuplesortstate *state, Size tuplen); /* tuplesortvariants.c */ extern Tuplesortstate *tuplesort_begin_heap(TupleDesc tupDesc, int nkeys, AttrNumber *attNums, Oid *sortOperators, Oid *sortCollations, bool *nullsFirstFlags, int workMem, SortCoordinate coordinate, int sortopt); extern Tuplesortstate *tuplesort_begin_cluster(TupleDesc tupDesc, Relation indexRel, int workMem, SortCoordinate coordinate, int sortopt); extern Tuplesortstate *tuplesort_begin_index_btree(Relation heapRel, Relation indexRel, bool enforceUnique, bool uniqueNullsNotDistinct, int workMem, SortCoordinate coordinate, int sortopt); extern Tuplesortstate *tuplesort_begin_index_hash(Relation heapRel, Relation indexRel, uint32 high_mask, uint32 low_mask, uint32 max_buckets, int workMem, SortCoordinate coordinate, int sortopt); extern Tuplesortstate *tuplesort_begin_index_gist(Relation heapRel, Relation indexRel, int workMem, SortCoordinate coordinate, int sortopt); extern Tuplesortstate *tuplesort_begin_index_brin(int workMem, SortCoordinate coordinate, int sortopt); extern Tuplesortstate *tuplesort_begin_datum(Oid datumType, Oid sortOperator, Oid sortCollation, bool nullsFirstFlag, int workMem, SortCoordinate coordinate, int sortopt); 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, const Datum *values, const bool *isnull); extern void tuplesort_putbrintuple(Tuplesortstate *state, BrinTuple *tuple, Size size); extern void tuplesort_putdatum(Tuplesortstate *state, Datum val, bool isNull); 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 BrinTuple *tuplesort_getbrintuple(Tuplesortstate *state, Size *len, bool forward); extern bool tuplesort_getdatum(Tuplesortstate *state, bool forward, bool copy, Datum *val, bool *isNull, Datum *abbrev); #endif /* TUPLESORT_H */ libpg_query-17-6.1.0/src/postgres/include/utils/tuplestore.h000066400000000000000000000063341477334012600241010ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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, const Datum *values, const bool *isnull); 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-17-6.1.0/src/postgres/include/utils/typcache.h000066400000000000000000000170071477334012600234720ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * 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-2024, 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 typsubscript; 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_opfamily; /* opfamily to use for range comparisons */ 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 */ /* * Fields computed when TYPECACHE_MULTIRANGE_INFO is required. */ struct TypeCacheEntry *rngtype; /* multirange's range underlying type */ /* * 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 0x00001 #define TYPECACHE_LT_OPR 0x00002 #define TYPECACHE_GT_OPR 0x00004 #define TYPECACHE_CMP_PROC 0x00008 #define TYPECACHE_HASH_PROC 0x00010 #define TYPECACHE_EQ_OPR_FINFO 0x00020 #define TYPECACHE_CMP_PROC_FINFO 0x00040 #define TYPECACHE_HASH_PROC_FINFO 0x00080 #define TYPECACHE_TUPDESC 0x00100 #define TYPECACHE_BTREE_OPFAMILY 0x00200 #define TYPECACHE_HASH_OPFAMILY 0x00400 #define TYPECACHE_RANGE_INFO 0x00800 #define TYPECACHE_DOMAIN_BASE_INFO 0x01000 #define TYPECACHE_DOMAIN_CONSTR_INFO 0x02000 #define TYPECACHE_HASH_EXTENDED_PROC 0x04000 #define TYPECACHE_HASH_EXTENDED_PROC_FINFO 0x08000 #define TYPECACHE_MULTIRANGE_INFO 0x10000 /* 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-17-6.1.0/src/postgres/include/utils/varlena.h000066400000000000000000000035521477334012600233220ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * varlena.h * Functions for the variable-length built-in types. * * Portions Copyright (c) 1996-2024, 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, text *pattern_text, text *replace_text, int cflags, Oid collation, int search_start, int n); typedef struct ClosestMatchState { const char *source; int min_d; int max_d; const char *match; } ClosestMatchState; extern void initClosestMatch(ClosestMatchState *state, const char *source, int max_d); extern void updateClosestMatch(ClosestMatchState *state, const char *candidate); extern const char *getClosestMatch(ClosestMatchState *state); #endif libpg_query-17-6.1.0/src/postgres/include/utils/wait_event.h000066400000000000000000000070371477334012600240410ustar00rootroot00000000000000/*------------------------------------------------------------------------- * wait_event.h * Definitions related to wait event reporting * * Copyright (c) 2001-2024, PostgreSQL Global Development Group * * src/include/utils/wait_event.h * ---------- */ #ifndef WAIT_EVENT_H #define WAIT_EVENT_H /* ---------- * Wait Classes * ---------- */ #define PG_WAIT_LWLOCK 0x01000000U #define PG_WAIT_LOCK 0x03000000U #define PG_WAIT_BUFFERPIN 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 #define PG_WAIT_INJECTIONPOINT 0x0B000000U /* enums for wait events */ #include "utils/wait_event_types.h" extern const char *pgstat_get_wait_event(uint32 wait_event_info); extern const char *pgstat_get_wait_event_type(uint32 wait_event_info); static inline void pgstat_report_wait_start(uint32 wait_event_info); static inline void pgstat_report_wait_end(void); extern void pgstat_set_wait_event_storage(uint32 *wait_event_info); extern void pgstat_reset_wait_event_storage(void); extern PGDLLIMPORT uint32 *my_wait_event_info; /* * Wait Events - Extension, InjectionPoint * * Use InjectionPoint when the server process is waiting in an injection * point. Use Extension for other cases of the server process waiting for * some condition defined by an extension module. * * Extensions can define their own wait events in these categories. They * should call one of these functions with a wait event string. If the wait * event associated to a string is already allocated, it returns the wait * event information to use. If not, it gets one wait event ID allocated from * a shared counter, associates the string to the ID in the shared dynamic * hash and returns the wait event information. * * The ID retrieved can be used with pgstat_report_wait_start() or equivalent. */ extern uint32 WaitEventExtensionNew(const char *wait_event_name); extern uint32 WaitEventInjectionPointNew(const char *wait_event_name); extern void WaitEventCustomShmemInit(void); extern Size WaitEventCustomShmemSize(void); extern char **GetWaitEventCustomNames(uint32 classId, int *nwaitevents); /* ---------- * 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. * * Historically we used to make this reporting conditional on * pgstat_track_activities, but the check for that seems to add more cost * than it saves. * * my_wait_event_info initially points to local memory, making it safe to * call this before MyProc has been initialized. * ---------- */ static inline void pgstat_report_wait_start(uint32 wait_event_info) { /* * Since this is a four-byte field which is always read and written as * four-bytes, updates are atomic. */ *(volatile uint32 *) my_wait_event_info = wait_event_info; } /* ---------- * pgstat_report_wait_end() - * * Called to report end of a wait. * ---------- */ static inline void pgstat_report_wait_end(void) { /* see pgstat_report_wait_start() */ *(volatile uint32 *) my_wait_event_info = 0; } #endif /* WAIT_EVENT_H */ libpg_query-17-6.1.0/src/postgres/include/utils/wait_event_types.h000066400000000000000000000147431477334012600252670ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * wait_event_types.h * Generated wait events infrastructure code * * Portions Copyright (c) 1996-2024, 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/activity/generate-wait_event_types.pl * *------------------------------------------------------------------------- */ #ifndef WAIT_EVENT_TYPES_H #define WAIT_EVENT_TYPES_H #include "utils/wait_event.h" 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_LOGICAL_PARALLEL_APPLY_MAIN, WAIT_EVENT_RECOVERY_WAL_STREAM, WAIT_EVENT_REPLICATION_SLOTSYNC_MAIN, WAIT_EVENT_REPLICATION_SLOTSYNC_SHUTDOWN, WAIT_EVENT_SYSLOGGER_MAIN, WAIT_EVENT_WAL_RECEIVER_MAIN, WAIT_EVENT_WAL_SENDER_MAIN, WAIT_EVENT_WAL_SUMMARIZER_WAL, WAIT_EVENT_WAL_WRITER_MAIN } WaitEventActivity; typedef enum { WAIT_EVENT_BUFFER_PIN = PG_WAIT_BUFFERPIN } WaitEventBufferPin; 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_WAIT_FOR_STANDBY_CONFIRMATION, WAIT_EVENT_WAL_SENDER_WAIT_FOR_WAL, WAIT_EVENT_WAL_SENDER_WRITE_DATA } WaitEventClient; typedef enum { WAIT_EVENT_BASEBACKUP_READ = PG_WAIT_IO, WAIT_EVENT_BASEBACKUP_SYNC, WAIT_EVENT_BASEBACKUP_WRITE, WAIT_EVENT_BUFFILE_READ, WAIT_EVENT_BUFFILE_TRUNCATE, 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_ALLOCATE, 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_REPLACE, 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_VERSION_FILE_SYNC, WAIT_EVENT_VERSION_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_SUMMARY_READ, WAIT_EVENT_WAL_SUMMARY_WRITE, WAIT_EVENT_WAL_SYNC, WAIT_EVENT_WAL_SYNC_METHOD_ASSIGN, WAIT_EVENT_WAL_WRITE } WaitEventIO; typedef enum { WAIT_EVENT_APPEND_READY = PG_WAIT_IPC, WAIT_EVENT_ARCHIVE_CLEANUP_COMMAND, WAIT_EVENT_ARCHIVE_COMMAND, WAIT_EVENT_BACKEND_TERMINATION, WAIT_EVENT_BACKUP_WAIT_WAL_ARCHIVE, WAIT_EVENT_BGWORKER_SHUTDOWN, WAIT_EVENT_BGWORKER_STARTUP, WAIT_EVENT_BTREE_PAGE, WAIT_EVENT_BUFFER_IO, WAIT_EVENT_CHECKPOINT_DELAY_COMPLETE, WAIT_EVENT_CHECKPOINT_DELAY_START, 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_DECIDE, WAIT_EVENT_HASH_GROW_BATCHES_ELECT, WAIT_EVENT_HASH_GROW_BATCHES_FINISH, WAIT_EVENT_HASH_GROW_BATCHES_REALLOCATE, WAIT_EVENT_HASH_GROW_BATCHES_REPARTITION, WAIT_EVENT_HASH_GROW_BUCKETS_ELECT, WAIT_EVENT_HASH_GROW_BUCKETS_REALLOCATE, WAIT_EVENT_HASH_GROW_BUCKETS_REINSERT, WAIT_EVENT_LOGICAL_APPLY_SEND_DATA, WAIT_EVENT_LOGICAL_PARALLEL_APPLY_STATE_CHANGE, WAIT_EVENT_LOGICAL_SYNC_DATA, WAIT_EVENT_LOGICAL_SYNC_STATE_CHANGE, WAIT_EVENT_MESSAGE_QUEUE_INTERNAL, WAIT_EVENT_MESSAGE_QUEUE_PUT_MESSAGE, WAIT_EVENT_MESSAGE_QUEUE_RECEIVE, WAIT_EVENT_MESSAGE_QUEUE_SEND, WAIT_EVENT_MULTIXACT_CREATION, 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_END_COMMAND, WAIT_EVENT_RECOVERY_PAUSE, WAIT_EVENT_REPLICATION_ORIGIN_DROP, WAIT_EVENT_REPLICATION_SLOT_DROP, WAIT_EVENT_RESTORE_COMMAND, WAIT_EVENT_SAFE_SNAPSHOT, WAIT_EVENT_SYNC_REP, WAIT_EVENT_WAL_RECEIVER_EXIT, WAIT_EVENT_WAL_RECEIVER_WAIT_START, WAIT_EVENT_WAL_SUMMARY_READY, WAIT_EVENT_XACT_GROUP_UPDATE } WaitEventIPC; typedef enum { WAIT_EVENT_BASE_BACKUP_THROTTLE = PG_WAIT_TIMEOUT, WAIT_EVENT_CHECKPOINT_WRITE_DELAY, WAIT_EVENT_PG_SLEEP, WAIT_EVENT_RECOVERY_APPLY_DELAY, WAIT_EVENT_RECOVERY_RETRIEVE_RETRY_INTERVAL, WAIT_EVENT_REGISTER_SYNC_REQUEST, WAIT_EVENT_SPIN_DELAY, WAIT_EVENT_VACUUM_DELAY, WAIT_EVENT_VACUUM_TRUNCATE, WAIT_EVENT_WAL_SUMMARIZER_ERROR } WaitEventTimeout; #endif /* WAIT_EVENT_TYPES_H */ libpg_query-17-6.1.0/src/postgres/include/utils/xml.h000066400000000000000000000055051477334012600224720ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * xml.h * Declarations for XML data type support. * * * Portions Copyright (c) 1996-2024, 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; static inline xmltype * DatumGetXmlP(Datum X) { return (xmltype *) PG_DETOAST_DATUM(X); } static inline Datum XmlPGetDatum(const xmltype *X) { return 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_arg, 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_options(xmltype *data, XmlOptionType xmloption_arg, bool indent); 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 PGDLLIMPORT int xmlbinary; /* XmlBinaryType, but int for guc enum */ extern PGDLLIMPORT int xmloption; /* XmlOptionType, but int for guc enum */ extern PGDLLIMPORT const TableFuncRoutine XmlTableRoutine; #endif /* XML_H */ libpg_query-17-6.1.0/src/postgres/include/varatt.h000066400000000000000000000332701477334012600220330ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * varatt.h * variable-length datatypes (TOAST support) * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1995, Regents of the University of California * * src/include/varatt.h * *------------------------------------------------------------------------- */ #ifndef VARATT_H #define VARATT_H /* * 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 the external size stored in * va_extinfo is less than 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) */ uint32 va_extinfo; /* External saved size (without header) and * compression method */ Oid va_valueid; /* Unique ID of value within TOAST table */ Oid va_toastrelid; /* RelID of TOAST table containing it */ } varatt_external; /* * These macros define the "saved size" portion of va_extinfo. Its remaining * two high-order bits identify the compression method. */ #define VARLENA_EXTSIZE_BITS 30 #define VARLENA_EXTSIZE_MASK ((1U << VARLENA_EXTSIZE_BITS) - 1) /* * 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) : \ (AssertMacro(false), 0)) /* * 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_tcinfo; /* Original data size (excludes header) and * compression method; see va_extinfo */ 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 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) /* * Externally visible TOAST macros begin here. */ #define VARHDRSZ_EXTERNAL offsetof(varattrib_1b_e, va_data) #define VARHDRSZ_COMPRESSED offsetof(varattrib_4b, va_compressed.va_data) #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) /* * 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)) /* Decompressed size and compression method of a compressed-in-line Datum */ #define VARDATA_COMPRESSED_GET_EXTSIZE(PTR) \ (((varattrib_4b *) (PTR))->va_compressed.va_tcinfo & VARLENA_EXTSIZE_MASK) #define VARDATA_COMPRESSED_GET_COMPRESS_METHOD(PTR) \ (((varattrib_4b *) (PTR))->va_compressed.va_tcinfo >> VARLENA_EXTSIZE_BITS) /* Same for external Datums; but note argument is a struct varatt_external */ #define VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer) \ ((toast_pointer).va_extinfo & VARLENA_EXTSIZE_MASK) #define VARATT_EXTERNAL_GET_COMPRESS_METHOD(toast_pointer) \ ((toast_pointer).va_extinfo >> VARLENA_EXTSIZE_BITS) #define VARATT_EXTERNAL_SET_SIZE_AND_COMPRESS_METHOD(toast_pointer, len, cm) \ do { \ Assert((cm) == TOAST_PGLZ_COMPRESSION_ID || \ (cm) == TOAST_LZ4_COMPRESSION_ID); \ ((toast_pointer).va_extinfo = \ (len) | ((uint32) (cm) << VARLENA_EXTSIZE_BITS)); \ } while (0) /* * Testing whether an externally-stored value is compressed now requires * comparing size stored in va_extinfo (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) \ (VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer) < \ (toast_pointer).va_rawsize - VARHDRSZ) #endif libpg_query-17-6.1.0/src/postgres/src_backend_catalog_namespace.c000066400000000000000000001135651477334012600250540ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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-2024, 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/namespace.h" #include "catalog/objectaccess.h" #include "catalog/pg_authid.h" #include "catalog/pg_collation.h" #include "catalog/pg_conversion.h" #include "catalog/pg_database.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 "common/hashfn_unstable.h" #include "funcapi.h" #include "mb/pg_wchar.h" #include "miscadmin.h" #include "nodes/makefuncs.h" #include "storage/ipc.h" #include "storage/lmgr.h" #include "storage/procarray.h" #include "utils/acl.h" #include "utils/builtins.h" #include "utils/catcache.h" #include "utils/guc_hooks.h" #include "utils/inval.h" #include "utils/lsyscache.h" #include "utils/memutils.h" #include "utils/snapmgr.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. * * 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). * * activeSearchPath is always the actually active path; it points 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, or retrieved * from the search path cache if there haven't been any syscache * invalidations. We mark it invalid upon an assignment to * namespace_search_path or receipt of a syscache invalidation event for * pg_namespace or pg_authid. The recomputation is done during the next * lookup attempt. * * 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 */ /* * Storage for search path cache. Clear searchPathCacheValid as a simple * way to invalidate *all* the cache entries, not just the active one. */ typedef struct SearchPathCacheKey { const char *searchPath; Oid roleid; } SearchPathCacheKey; typedef struct SearchPathCacheEntry { SearchPathCacheKey key; List *oidlist; /* namespace OIDs that pass ACL checks */ List *finalPath; /* cached final computed search path */ Oid firstNS; /* first explicitly-listed namespace */ bool temp_missing; bool forceRecompute; /* force recompute of finalPath */ /* needed for simplehash */ char status; } SearchPathCacheEntry; /* * 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 bool RelationIsVisibleExt(Oid relid, bool *is_missing); static bool TypeIsVisibleExt(Oid typid, bool *is_missing); static bool FunctionIsVisibleExt(Oid funcid, bool *is_missing); static bool OperatorIsVisibleExt(Oid oprid, bool *is_missing); static bool OpclassIsVisibleExt(Oid opcid, bool *is_missing); static bool OpfamilyIsVisibleExt(Oid opfid, bool *is_missing); static bool CollationIsVisibleExt(Oid collid, bool *is_missing); static bool ConversionIsVisibleExt(Oid conid, bool *is_missing); static bool StatisticsObjIsVisibleExt(Oid stxid, bool *is_missing); static bool TSParserIsVisibleExt(Oid prsId, bool *is_missing); static bool TSDictionaryIsVisibleExt(Oid dictId, bool *is_missing); static bool TSTemplateIsVisibleExt(Oid tmplId, bool *is_missing); static bool TSConfigIsVisibleExt(Oid cfgid, bool *is_missing); 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 InvalidationCallback(Datum arg, int cacheid, uint32 hashvalue); static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames, bool include_out_arguments, int pronargs, int **argnumbers); /* * Recomputing the namespace path can be costly when done frequently, such as * when a function has search_path set in proconfig. Add a search path cache * that can be used by recomputeNamespacePath(). * * The cache is also used to remember already-validated strings in * check_search_path() to avoid the need to call SplitIdentifierString() * repeatedly. * * The search path cache is based on a wrapper around a simplehash hash table * (nsphash, defined below). The spcache wrapper deals with OOM while trying * to initialize a key, optimizes repeated lookups of the same key, and also * offers a more convenient API. */ #define SH_PREFIX nsphash #define SH_ELEMENT_TYPE SearchPathCacheEntry #define SH_KEY_TYPE SearchPathCacheKey #define SH_KEY key #define SH_HASH_KEY(tb, key) spcachekey_hash(key) #define SH_EQUAL(tb, a, b) spcachekey_equal(a, b) #define SH_SCOPE static inline #define SH_DECLARE // #define SH_DEFINE #include "lib/simplehash.h" /* * We only expect a small number of unique search_path strings to be used. If * this cache grows to an unreasonable size, reset it to avoid steady-state * memory growth. Most likely, only a few of those entries will benefit from * the cache, and the cache will be quickly repopulated with such entries. */ #define SPCACHE_RESET_THRESHOLD 256 /* * Create or reset search_path cache as necessary. */ /* * Look up entry in search path cache without inserting. Returns NULL if not * present. */ /* * Look up or insert entry in search path cache. * * Initialize key safely, so that OOM does not leave an entry without a valid * key. Caller must ensure that non-key contents are properly initialized. */ /* * 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". */ /* * RelationIsVisibleExt * As above, but if the relation isn't found and is_missing is not NULL, * then set *is_missing = true and return false instead of throwing * an error. (Caller must initialize *is_missing = false.) */ /* * 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". */ /* * TypeIsVisibleExt * As above, but if the type isn't found and is_missing is not NULL, * then set *is_missing = true and return false instead of throwing * an error. (Caller must initialize *is_missing = false.) */ /* * 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). * * If include_out_arguments is true, then OUT-mode arguments are considered to * be included in the argument list. Their types are included in the returned * arrays, and argnumbers are indexes in proallargtypes not proargtypes. * We also set nominalnargs to be the length of proallargtypes not proargtypes. * Otherwise OUT-mode arguments are ignored. * * 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 or proallargtypes 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. * * If include_out_arguments is true, we are treating OUT arguments as * included in the argument list. pronargs is the number of arguments * we're considering (the length of either proargtypes or proallargtypes). * * 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". */ /* * FunctionIsVisibleExt * As above, but if the function isn't found and is_missing is not NULL, * then set *is_missing = true and return false instead of throwing * an error. (Caller must initialize *is_missing = false.) */ /* * 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. * * 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 --- the first will be * InvalidOid for a prefix oprkind. nargs is always 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". */ /* * OperatorIsVisibleExt * As above, but if the operator isn't found and is_missing is not NULL, * then set *is_missing = true and return false instead of throwing * an error. (Caller must initialize *is_missing = false.) */ /* * 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". */ /* * OpclassIsVisibleExt * As above, but if the opclass isn't found and is_missing is not NULL, * then set *is_missing = true and return false instead of throwing * an error. (Caller must initialize *is_missing = false.) */ /* * 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". */ /* * OpfamilyIsVisibleExt * As above, but if the opfamily isn't found and is_missing is not NULL, * then set *is_missing = true and return false instead of throwing * an error. (Caller must initialize *is_missing = false.) */ /* * 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. */ /* * CollationIsVisibleExt * As above, but if the collation isn't found and is_missing is not NULL, * then set *is_missing = true and return false instead of throwing * an error. (Caller must initialize *is_missing = false.) */ /* * 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". */ /* * ConversionIsVisibleExt * As above, but if the conversion isn't found and is_missing is not NULL, * then set *is_missing = true and return false instead of throwing * an error. (Caller must initialize *is_missing = false.) */ /* * 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". */ /* * StatisticsObjIsVisibleExt * As above, but if the statistics object isn't found and is_missing is * not NULL, then set *is_missing = true and return false instead of * throwing an error. (Caller must initialize *is_missing = false.) */ /* * 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". */ /* * TSParserIsVisibleExt * As above, but if the parser isn't found and is_missing is not NULL, * then set *is_missing = true and return false instead of throwing * an error. (Caller must initialize *is_missing = false.) */ /* * 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". */ /* * TSDictionaryIsVisibleExt * As above, but if the dictionary isn't found and is_missing is not NULL, * then set *is_missing = true and return false instead of throwing * an error. (Caller must initialize *is_missing = false.) */ /* * 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". */ /* * TSTemplateIsVisibleExt * As above, but if the template isn't found and is_missing is not NULL, * then set *is_missing = true and return false instead of throwing * an error. (Caller must initialize *is_missing = false.) */ /* * 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". */ /* * TSConfigIsVisibleExt * As above, but if the configuration isn't found and is_missing is not * NULL, then set *is_missing = true and return false instead of throwing * an error. (Caller must initialize *is_missing = false.) */ /* * 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-Strings * 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 String values, * but we also allow A_Star for the convenience of ColumnRef processing. */ char * NameListToString(const 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. */ /* * GetTempNamespaceProcNumber - if the given namespace is a temporary-table * namespace (either my own, or another backend's), return the proc number * that owns it. Temporary-toast-table namespaces are included, too. * If it isn't a temp namespace, return INVALID_PROC_NUMBER. */ /* * 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. */ /* * GetSearchPathMatcher - fetch current search path definition. * * 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. */ /* * CopySearchPathMatcher - copy the specified SearchPathMatcher. * * The result structure is allocated in CurrentMemoryContext. */ /* * SearchPathMatchesCurrentEnvironment - does path match current environment? * * 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. */ /* * 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 DEFAULT_COLLATION_OID; } /* * get_conversion_oid - find a conversion by possibly qualified name */ /* * FindDefaultConversionProc - find default encoding conversion proc */ /* * Look up namespace IDs and perform ACL checks. Return newly-allocated list. */ /* * Remove duplicates, run namespace search hooks, and prepend * implicitly-searched namespaces. Return newly-allocated list. * * If an object_access_hook is present, this must always be recalculated. It * may seem that duplicate elimination is not dependent on the result of the * hook, but if a hook returns different results on different calls for the * same namespace ID, then it could affect the order in which that namespace * appears in the final list. */ /* * Retrieve search path information from the cache; or if not there, fill * it. The returned entry is valid only until the next call to this function. */ /* * 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. */ /* * InvalidationCallback * 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. */ libpg_query-17-6.1.0/src/postgres/src_backend_catalog_pg_proc.c000066400000000000000000000077641477334012600245540ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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-2024, 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 "pgstat.h" #include "rewrite/rewriteHandler.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-17-6.1.0/src/postgres/src_backend_commands_define.c000066400000000000000000000052321477334012600245300ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - defGetInt32 *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * define.c * Support routines for various kinds of object creation. * * * Portions Copyright (c) 1996-2024, 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 "utils/fmgrprotos.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 an OID 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. */ /* * Raise an error about a conflicting DefElem. */ libpg_query-17-6.1.0/src/postgres/src_backend_nodes_bitmapset.c000066400000000000000000000277401477334012600246050ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - bms_copy * - bms_is_valid_set * - bms_equal * - 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, we always represent a set with * the minimum possible number of words, i.e, there are never any trailing * zero words. Enforcing this requires that an empty set is represented as * NULL. Because an empty Bitmapset is represented as NULL, a non-NULL * Bitmapset always has at least 1 Bitmapword. We can exploit this fact to * speed up various loops over the Bitmapset's words array by using "do while" * loops instead of "for" loops. This means the code does not waste time * checking the loop condition before the first iteration. For Bitmapsets * containing only a single word (likely the majority of them) this halves the * number of loop condition checks. * * Callers must ensure that the set returned by functions in this file which * adjust the members of an existing set is assigned to all pointers pointing * to that existing set. No guarantees are made that we'll ever modify the * existing set in-place and return it. * * To help find bugs caused by callers failing to record the return value of * the function which manipulates an existing set, we support building with * REALLOCATE_BITMAPSETS. This results in the set being reallocated each time * the set is altered and the existing being pfreed. This is useful as if any * references still exist to the old set, we're more likely to notice as * any users of the old set will be accessing pfree'd memory. This option is * only intended to be used for debugging. * * Copyright (c) 2003-2024, 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)) #ifdef USE_ASSERT_CHECKING /* * bms_is_valid_set - for cassert builds to check for valid sets */ static bool bms_is_valid_set(const Bitmapset *a) { /* NULL is the correct representation of an empty set */ if (a == NULL) return true; /* check the node tag is set correctly. pfree'd pointer, maybe? */ if (!IsA(a, Bitmapset)) return false; /* trailing zero words are not allowed */ if (a->words[a->nwords - 1] == 0) return false; return true; } #endif #ifdef REALLOCATE_BITMAPSETS /* * bms_copy_and_free * Only required in REALLOCATE_BITMAPSETS builds. Provide a simple way * to return a freshly allocated set and pfree the original. * * Note: callers which accept multiple sets must be careful when calling this * function to clone one parameter as other parameters may point to the same * set. A good option is to call this just before returning the resulting * set. */ static Bitmapset * bms_copy_and_free(Bitmapset *a) { Bitmapset *c = bms_copy(a); bms_free(a); return c; } #endif /* * bms_copy - make a palloc'd copy of a bitmapset */ Bitmapset * bms_copy(const Bitmapset *a) { Bitmapset *result; size_t size; Assert(bms_is_valid_set(a)); 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? or both NULL? */ bool bms_equal(const Bitmapset *a, const Bitmapset *b) { int i; Assert(bms_is_valid_set(a)); Assert(bms_is_valid_set(b)); /* Handle cases where either input is NULL */ if (a == NULL) { if (b == NULL) return true; return false; } else if (b == NULL) return false; /* can't be equal if the word counts don't match */ if (a->nwords != b->nwords) return false; /* check each word matches */ i = 0; do { if (a->words[i] != b->words[i]) return false; } while (++i < a->nwords); 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); } /* * bms_union - create and return a new set containing all members from both * input sets. Both inputs are left unmodified. */ /* * bms_intersect - create and return a new set containing members which both * input sets have in common. Both inputs are left unmodified. */ /* * bms_difference - create and return a new set containing all the members of * 'a' without the 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? * * i.e., are any members set in 'a' that are not also set in 'b'. */ /* * 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; Assert(bms_is_valid_set(a)); if (a == NULL) return 0; nwords = a->nwords; wordnum = 0; do { bitmapword w = a->words[wordnum]; /* No need to count the bits in a zero word */ if (w != 0) result += bmw_popcount(w); } while (++wordnum < nwords); 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_add_member - add a specified member to set * * 'a' is recycled when possible. */ #ifdef REALLOCATE_BITMAPSETS #endif /* * bms_del_member - remove a specified member from set * * No error if x is not currently a member of set * * 'a' is recycled when possible. */ #ifdef REALLOCATE_BITMAPSETS #endif /* * bms_add_members - like bms_union, but left input is recycled when possible */ #ifdef REALLOCATE_BITMAPSETS #endif #ifdef REALLOCATE_BITMAPSETS #endif /* * bms_replace_members * Remove all existing members from 'a' and repopulate the set with members * from 'b', recycling 'a', when possible. */ #ifdef REALLOCATE_BITMAPSETS #endif /* * 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. */ #ifdef REALLOCATE_BITMAPSETS #endif #ifdef REALLOCATE_BITMAPSETS #endif /* * bms_int_members - like bms_intersect, but left input is recycled when * possible */ #ifdef REALLOCATE_BITMAPSETS #endif /* * bms_del_members - delete members in 'a' that are set in 'b'. 'a' is * recycled when possible. */ #ifdef REALLOCATE_BITMAPSETS #endif #ifdef REALLOCATE_BITMAPSETS #endif /* * bms_join - like bms_union, but *either* input *may* be recycled */ #ifdef REALLOCATE_BITMAPSETS #endif #ifdef REALLOCATE_BITMAPSETS #endif #ifdef REALLOCATE_BITMAPSETS #endif /* * 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; Assert(bms_is_valid_set(a)); 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 */ /* * 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-17-6.1.0/src/postgres/src_backend_nodes_copyfuncs.c000066400000000000000000000121661477334012600246220ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - copyObjectImpl * - _copyConst * - _copyA_Const * - _copyBitmapset * - _copyExtensibleNode *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * copyfuncs.c * Copy functions for Postgres tree nodes. * * * Portions Copyright (c) 1996-2024, 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 "utils/datum.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 an inline array */ #define COPY_ARRAY_FIELD(fldname) \ memcpy(newnode->fldname, from->fldname, sizeof(newnode->fldname)) /* 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); \ if (_size > 0) \ { \ 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) #include "copyfuncs.funcs.c" /* * Support functions for nodes with custom_copy_equal attribute */ 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; } static A_Const * _copyA_Const(const A_Const *from) { A_Const *newnode = makeNode(A_Const); COPY_SCALAR_FIELD(isnull); if (!from->isnull) { /* This part must duplicate other _copy*() functions. */ COPY_SCALAR_FIELD(val.node.type); switch (nodeTag(&from->val)) { case T_Integer: COPY_SCALAR_FIELD(val.ival.ival); break; case T_Float: COPY_STRING_FIELD(val.fval.fval); break; case T_Boolean: COPY_SCALAR_FIELD(val.boolval.boolval); break; case T_String: COPY_STRING_FIELD(val.sval.sval); break; case T_BitString: COPY_STRING_FIELD(val.bsval.bsval); break; default: elog(ERROR, "unrecognized node type: %d", (int) nodeTag(&from->val)); break; } } COPY_LOCATION_FIELD(location); return newnode; } 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; } static Bitmapset * _copyBitmapset(const Bitmapset *from) { return bms_copy(from); } /* * 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)) { #include "copyfuncs.switch.c" case T_List: retval = list_copy_deep(from); break; /* * Lists of integers, OIDs and XIDs don't need to be deep-copied, * so we perform a shallow copy via list_copy() */ case T_IntList: case T_OidList: case T_XidList: retval = list_copy(from); break; default: elog(ERROR, "unrecognized node type: %d", (int) nodeTag(from)); retval = 0; /* keep compiler quiet */ break; } return retval; } libpg_query-17-6.1.0/src/postgres/src_backend_nodes_equalfuncs.c000066400000000000000000000143341477334012600247560ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - equal * - _equalConst * - _equalA_Const * - _equalBitmapset * - _equalExtensibleNode * - _equalList *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * equalfuncs.c * Equality functions to compare node trees. * * 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-2024, 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 "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 an inline array */ #define COMPARE_ARRAY_FIELD(fldname) \ do { \ if (memcmp(a->fldname, b->fldname, sizeof(a->fldname)) != 0) \ return false; \ } while (0) /* 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) #include "equalfuncs.funcs.c" /* * Support functions for nodes with custom_copy_equal attribute */ 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 _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; } static bool _equalA_Const(const A_Const *a, const A_Const *b) { COMPARE_SCALAR_FIELD(isnull); /* Hack for in-line val field. Also val is not valid if isnull is true */ if (!a->isnull && !equal(&a->val, &b->val)) return false; COMPARE_LOCATION_FIELD(location); return true; } static bool _equalBitmapset(const Bitmapset *a, const Bitmapset *b) { return bms_equal(a, b); } /* * Lists are handled specially */ 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; case T_XidList: forboth(item_a, a, item_b, b) { if (lfirst_xid(item_a) != lfirst_xid(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; } /* * 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)) { #include "equalfuncs.switch.c" case T_List: case T_IntList: case T_OidList: case T_XidList: retval = _equalList(a, b); break; default: elog(ERROR, "unrecognized node type: %d", (int) nodeTag(a)); retval = false; /* keep compiler quiet */ break; } return retval; } libpg_query-17-6.1.0/src/postgres/src_backend_nodes_extensible.c000066400000000000000000000033211477334012600247440ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - GetExtensibleNodeMethods *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * 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-2024, 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" 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 */ /* * Get the methods for a given type of extensible node. */ const ExtensibleNodeMethods * GetExtensibleNodeMethods(const char *extnodename, bool missing_ok) { return NULL; } /* * Get the methods for a given name of CustomScanMethods */ libpg_query-17-6.1.0/src/postgres/src_backend_nodes_list.c000066400000000000000000000652331477334012600235670ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - list_make1_impl * - new_list * - check_list_invariants * - lappend * - new_tail_cell * - enlarge_list * - list_make2_impl * - list_concat * - list_copy * - lcons * - new_head_cell * - list_make3_impl * - list_make4_impl * - 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-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/nodes/list.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "common/int.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)) #define IsXidList(l) ((l) == NIL || IsA((l), XidList)) #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 || list->type == T_XidList); } #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); llast(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() */ /* * Append a TransactionId 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. * * Note that this takes time proportional to the distance to the end of the * list, since the following entries must be moved. */ /* * 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. * * Note that this takes time proportional to the length of the list, * since the existing entries must be moved. * * 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); linitial(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. * * Note that this takes at least time proportional to the length of list2. * It'd typically be the case that we have to enlarge list1's storage, * probably adding time proportional to the length of list1. */ 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'. * * This does a simple linear search --- avoid using it on long lists. */ /* * 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. */ /* * Return true iff the TransactionId '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. * * Note that this takes time proportional to the distance to the end of the * list, since the following entries must be moved. */ 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. * * Note that this takes time proportional to the distance to the end of the * list, since the following entries must be moved. */ /* * Delete the first cell in list that matches datum, if any. * Equality is determined via equal(). * * This does a simple linear search --- avoid using it on long lists. */ /* 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. * * Note that this takes time proportional to the length of the list, * since the remaining entries must be moved. Consider reversing the * list order so that you can use list_delete_last() instead. However, * if that causes you to replace lappend() with lcons(), you haven't * improved matters. (In short, you can make an efficient stack from * a List, but not an efficient FIFO queue.) */ /* * Delete the last element of the list. */ /* * Delete the first N cells of the list. * * The List is pfree'd if the request causes all cells to be deleted. * * Note that this takes time proportional to the distance to the end of the * list, since the following entries must be moved. */ #ifndef DEBUG_LIST_MEMORY_USAGE #else #ifdef CLOBBER_FREED_MEMORY #else #endif #endif /* * 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. * * Note that this takes time proportional to the product of the list * lengths, so beware of using it on long lists. (We could probably * improve that, but really you should be using some other data structure * if this'd be 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. * * Note that this takes time proportional to the product of the list * lengths, so beware of using it on long lists. (We could probably * improve that, but really you should be using some other data structure * if this'd be a performance bottleneck.) */ /* * 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() * * Note that this takes time proportional to the product of the list * lengths, so beware of using it on long lists. (We could probably * improve that, but really you should be using some other data structure * if this'd be a performance bottleneck.) */ /* * 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 does a simple linear search --- avoid using it on long lists. */ /* * 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. * * Note that this takes time proportional to the product of the list * lengths, so beware of using it on long lists. (We could probably * improve that, but really you should be using some other data structure * if this'd be a performance bottleneck.) */ /* * 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). * * Note that this takes time proportional to the length of the list. */ /* * 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 containing only the first 'len' * elements. If oldlist is shorter than 'len' then we copy the entire list. */ /* * 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. * * This is based on qsort(), so it likewise has O(N log N) runtime. */ /* * list_sort comparator for sorting a list into ascending int order. */ /* * list_sort comparator for sorting a list into ascending OID order. */ libpg_query-17-6.1.0/src/postgres/src_backend_nodes_makefuncs.c000066400000000000000000000257111477334012600245650ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - makeDefElem * - makeStringConst * - makeTypeNameFromNameList * - makeDefElemExtended * - makeRangeVar * - makeVacuumRelation * - makeAlias * - makeSimpleA_Expr * - makeGroupingSet * - makeJsonTablePathSpec * - makeJsonFormat * - makeTypeName * - makeFuncCall * - makeA_Expr * - makeJsonIsPredicate * - makeJsonBehavior * - makeJsonValueExpr * - makeJsonKeyValue * - makeBoolExpr *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * makefuncs.c * creator functions for various nodes. The functions here are for the * most frequently created nodes. * * Portions Copyright (c) 1996-2024, 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. */ /* * makeStringConst - * build a A_Const node of type T_String for given string */ Node * makeStringConst(char *str, int location) { A_Const *n = makeNode(A_Const); n->val.sval.type = T_String; n->val.sval.sval = str; n->location = location; return (Node *) n; } /* * 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, CoercionForm funcformat, int location) { FuncCall *n = makeNode(FuncCall); n->funcname = name; n->args = args; n->agg_order = NIL; n->agg_filter = NULL; n->over = NULL; n->agg_within_group = false; n->agg_star = false; n->agg_distinct = false; n->func_variadic = false; n->funcformat = funcformat; 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; } /* * makeJsonFormat - * creates a JsonFormat node */ JsonFormat * makeJsonFormat(JsonFormatType type, JsonEncoding encoding, int location) { JsonFormat *jf = makeNode(JsonFormat); jf->format_type = type; jf->encoding = encoding; jf->location = location; return jf; } /* * makeJsonValueExpr - * creates a JsonValueExpr node */ JsonValueExpr * makeJsonValueExpr(Expr *raw_expr, Expr *formatted_expr, JsonFormat *format) { JsonValueExpr *jve = makeNode(JsonValueExpr); jve->raw_expr = raw_expr; jve->formatted_expr = formatted_expr; jve->format = format; return jve; } /* * makeJsonBehavior - * creates a JsonBehavior node */ JsonBehavior * makeJsonBehavior(JsonBehaviorType btype, Node *expr, int location) { JsonBehavior *behavior = makeNode(JsonBehavior); behavior->btype = btype; behavior->expr = expr; behavior->location = location; return behavior; } /* * makeJsonKeyValue - * creates a JsonKeyValue node */ Node * makeJsonKeyValue(Node *key, Node *value) { JsonKeyValue *n = makeNode(JsonKeyValue); n->key = (Expr *) key; n->value = castNode(JsonValueExpr, value); return (Node *) n; } /* * makeJsonIsPredicate - * creates a JsonIsPredicate node */ Node * makeJsonIsPredicate(Node *expr, JsonFormat *format, JsonValueType item_type, bool unique_keys, int location) { JsonIsPredicate *n = makeNode(JsonIsPredicate); n->expr = expr; n->format = format; n->item_type = item_type; n->unique_keys = unique_keys; n->location = location; return (Node *) n; } /* * makeJsonTablePathSpec - * Make JsonTablePathSpec node from given path string and name (if any) */ JsonTablePathSpec * makeJsonTablePathSpec(char *string, char *name, int string_location, int name_location) { JsonTablePathSpec *pathspec = makeNode(JsonTablePathSpec); Assert(string != NULL); pathspec->string = makeStringConst(string, string_location); if (name != NULL) pathspec->name = pstrdup(name); pathspec->name_location = name_location; pathspec->location = string_location; return pathspec; } /* * makeJsonTablePath - * Make JsonTablePath node for given path string and name */ libpg_query-17-6.1.0/src/postgres/src_backend_nodes_nodeFuncs.c000066400000000000000000001344601477334012600245370ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - exprLocation * - leftmostLoc * - raw_expression_tree_walker_impl *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * nodeFuncs.c * Various general-purpose manipulations of Node trees * * Portions Copyright (c) 1996-2024, 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/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, planstate_tree_walker_callback walker, void *context); static bool planstate_walk_members(PlanState **planstates, int nplans, planstate_tree_walker_callback 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_MergeSupportFunc: loc = ((const MergeSupportFunc *) 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_JsonFormat: loc = ((const JsonFormat *) expr)->location; break; case T_JsonValueExpr: loc = exprLocation((Node *) ((const JsonValueExpr *) expr)->raw_expr); break; case T_JsonConstructorExpr: loc = ((const JsonConstructorExpr *) expr)->location; break; case T_JsonIsPredicate: loc = ((const JsonIsPredicate *) expr)->location; break; case T_JsonExpr: { const JsonExpr *jsexpr = (const JsonExpr *) expr; /* consider both function name and leftmost arg */ loc = leftmostLoc(jsexpr->location, exprLocation(jsexpr->formatted_expr)); } break; case T_JsonBehavior: loc = exprLocation(((JsonBehavior *) expr)->expr); 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_CTESearchClause: loc = ((const CTESearchClause *) expr)->location; break; case T_CTECycleClause: loc = ((const CTECycleClause *) expr)->location; break; case T_CommonTableExpr: loc = ((const CommonTableExpr *) expr)->location; break; case T_JsonKeyValue: /* just use the key's location */ loc = exprLocation((Node *) ((const JsonKeyValue *) expr)->key); break; case T_JsonObjectConstructor: loc = ((const JsonObjectConstructor *) expr)->location; break; case T_JsonArrayConstructor: loc = ((const JsonArrayConstructor *) expr)->location; break; case T_JsonArrayQueryConstructor: loc = ((const JsonArrayQueryConstructor *) expr)->location; break; case T_JsonAggConstructor: loc = ((const JsonAggConstructor *) expr)->location; break; case T_JsonObjectAgg: loc = exprLocation((Node *) ((const JsonObjectAgg *) expr)->constructor); break; case T_JsonArrayAgg: loc = exprLocation((Node *) ((const JsonArrayAgg *) expr)->constructor); 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. */ #define WALK(n) walker((Node *) (n), context) #define LIST_WALK(l) expression_tree_walker_impl((Node *) (l), walker, context) #undef LIST_WALK /* * 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 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 top-level 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/MERGE) 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_impl(Node *node, tree_walker_callback 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_JsonFormat: case T_SetToDefault: case T_CurrentOfExpr: case T_SQLValueFunction: case T_Integer: case T_Float: case T_Boolean: case T_String: case T_BitString: case T_ParamRef: case T_A_Const: case T_A_Star: case T_MergeSupportFunc: /* primitive node types with no subnodes */ break; case T_Alias: /* we assume the colnames list isn't interesting */ break; case T_RangeVar: return WALK(((RangeVar *) node)->alias); case T_GroupingFunc: return WALK(((GroupingFunc *) node)->args); case T_SubLink: { SubLink *sublink = (SubLink *) node; if (WALK(sublink->testexpr)) return true; /* we assume the operName is not interesting */ if (WALK(sublink->subselect)) return true; } break; case T_CaseExpr: { CaseExpr *caseexpr = (CaseExpr *) node; if (WALK(caseexpr->arg)) return true; /* we assume walker doesn't care about CaseWhens, either */ foreach(temp, caseexpr->args) { CaseWhen *when = lfirst_node(CaseWhen, temp); if (WALK(when->expr)) return true; if (WALK(when->result)) return true; } if (WALK(caseexpr->defresult)) return true; } break; case T_RowExpr: /* Assume colnames isn't interesting */ return WALK(((RowExpr *) node)->args); case T_CoalesceExpr: return WALK(((CoalesceExpr *) node)->args); case T_MinMaxExpr: return WALK(((MinMaxExpr *) node)->args); case T_XmlExpr: { XmlExpr *xexpr = (XmlExpr *) node; if (WALK(xexpr->named_args)) return true; /* we assume walker doesn't care about arg_names */ if (WALK(xexpr->args)) return true; } break; case T_JsonReturning: return WALK(((JsonReturning *) node)->format); case T_JsonValueExpr: { JsonValueExpr *jve = (JsonValueExpr *) node; if (WALK(jve->raw_expr)) return true; if (WALK(jve->formatted_expr)) return true; if (WALK(jve->format)) return true; } break; case T_JsonParseExpr: { JsonParseExpr *jpe = (JsonParseExpr *) node; if (WALK(jpe->expr)) return true; if (WALK(jpe->output)) return true; } break; case T_JsonScalarExpr: { JsonScalarExpr *jse = (JsonScalarExpr *) node; if (WALK(jse->expr)) return true; if (WALK(jse->output)) return true; } break; case T_JsonSerializeExpr: { JsonSerializeExpr *jse = (JsonSerializeExpr *) node; if (WALK(jse->expr)) return true; if (WALK(jse->output)) return true; } break; case T_JsonConstructorExpr: { JsonConstructorExpr *ctor = (JsonConstructorExpr *) node; if (WALK(ctor->args)) return true; if (WALK(ctor->func)) return true; if (WALK(ctor->coercion)) return true; if (WALK(ctor->returning)) return true; } break; case T_JsonIsPredicate: return WALK(((JsonIsPredicate *) node)->expr); case T_JsonArgument: return WALK(((JsonArgument *) node)->val); case T_JsonFuncExpr: { JsonFuncExpr *jfe = (JsonFuncExpr *) node; if (WALK(jfe->context_item)) return true; if (WALK(jfe->pathspec)) return true; if (WALK(jfe->passing)) return true; if (WALK(jfe->output)) return true; if (WALK(jfe->on_empty)) return true; if (WALK(jfe->on_error)) return true; } break; case T_JsonBehavior: { JsonBehavior *jb = (JsonBehavior *) node; if (WALK(jb->expr)) return true; } break; case T_JsonTable: { JsonTable *jt = (JsonTable *) node; if (WALK(jt->context_item)) return true; if (WALK(jt->pathspec)) return true; if (WALK(jt->passing)) return true; if (WALK(jt->columns)) return true; if (WALK(jt->on_error)) return true; } break; case T_JsonTableColumn: { JsonTableColumn *jtc = (JsonTableColumn *) node; if (WALK(jtc->typeName)) return true; if (WALK(jtc->on_empty)) return true; if (WALK(jtc->on_error)) return true; if (WALK(jtc->columns)) return true; } break; case T_JsonTablePathSpec: return WALK(((JsonTablePathSpec *) node)->string); case T_NullTest: return WALK(((NullTest *) node)->arg); case T_BooleanTest: return WALK(((BooleanTest *) node)->arg); case T_JoinExpr: { JoinExpr *join = (JoinExpr *) node; if (WALK(join->larg)) return true; if (WALK(join->rarg)) return true; if (WALK(join->quals)) return true; if (WALK(join->alias)) return true; /* using list is deemed uninteresting */ } break; case T_IntoClause: { IntoClause *into = (IntoClause *) node; if (WALK(into->rel)) return true; /* colNames, options are deemed uninteresting */ /* viewQuery should be null in raw parsetree, but check it */ if (WALK(into->viewQuery)) return true; } break; case T_List: foreach(temp, (List *) node) { if (WALK((Node *) lfirst(temp))) return true; } break; case T_InsertStmt: { InsertStmt *stmt = (InsertStmt *) node; if (WALK(stmt->relation)) return true; if (WALK(stmt->cols)) return true; if (WALK(stmt->selectStmt)) return true; if (WALK(stmt->onConflictClause)) return true; if (WALK(stmt->returningList)) return true; if (WALK(stmt->withClause)) return true; } break; case T_DeleteStmt: { DeleteStmt *stmt = (DeleteStmt *) node; if (WALK(stmt->relation)) return true; if (WALK(stmt->usingClause)) return true; if (WALK(stmt->whereClause)) return true; if (WALK(stmt->returningList)) return true; if (WALK(stmt->withClause)) return true; } break; case T_UpdateStmt: { UpdateStmt *stmt = (UpdateStmt *) node; if (WALK(stmt->relation)) return true; if (WALK(stmt->targetList)) return true; if (WALK(stmt->whereClause)) return true; if (WALK(stmt->fromClause)) return true; if (WALK(stmt->returningList)) return true; if (WALK(stmt->withClause)) return true; } break; case T_MergeStmt: { MergeStmt *stmt = (MergeStmt *) node; if (WALK(stmt->relation)) return true; if (WALK(stmt->sourceRelation)) return true; if (WALK(stmt->joinCondition)) return true; if (WALK(stmt->mergeWhenClauses)) return true; if (WALK(stmt->returningList)) return true; if (WALK(stmt->withClause)) return true; } break; case T_MergeWhenClause: { MergeWhenClause *mergeWhenClause = (MergeWhenClause *) node; if (WALK(mergeWhenClause->condition)) return true; if (WALK(mergeWhenClause->targetList)) return true; if (WALK(mergeWhenClause->values)) return true; } break; case T_SelectStmt: { SelectStmt *stmt = (SelectStmt *) node; if (WALK(stmt->distinctClause)) return true; if (WALK(stmt->intoClause)) return true; if (WALK(stmt->targetList)) return true; if (WALK(stmt->fromClause)) return true; if (WALK(stmt->whereClause)) return true; if (WALK(stmt->groupClause)) return true; if (WALK(stmt->havingClause)) return true; if (WALK(stmt->windowClause)) return true; if (WALK(stmt->valuesLists)) return true; if (WALK(stmt->sortClause)) return true; if (WALK(stmt->limitOffset)) return true; if (WALK(stmt->limitCount)) return true; if (WALK(stmt->lockingClause)) return true; if (WALK(stmt->withClause)) return true; if (WALK(stmt->larg)) return true; if (WALK(stmt->rarg)) return true; } break; case T_PLAssignStmt: { PLAssignStmt *stmt = (PLAssignStmt *) node; if (WALK(stmt->indirection)) return true; if (WALK(stmt->val)) return true; } break; case T_A_Expr: { A_Expr *expr = (A_Expr *) node; if (WALK(expr->lexpr)) return true; if (WALK(expr->rexpr)) return true; /* operator name is deemed uninteresting */ } break; case T_BoolExpr: { BoolExpr *expr = (BoolExpr *) node; if (WALK(expr->args)) return true; } break; case T_ColumnRef: /* we assume the fields contain nothing interesting */ break; case T_FuncCall: { FuncCall *fcall = (FuncCall *) node; if (WALK(fcall->args)) return true; if (WALK(fcall->agg_order)) return true; if (WALK(fcall->agg_filter)) return true; if (WALK(fcall->over)) return true; /* function name is deemed uninteresting */ } break; case T_NamedArgExpr: return WALK(((NamedArgExpr *) node)->arg); case T_A_Indices: { A_Indices *indices = (A_Indices *) node; if (WALK(indices->lidx)) return true; if (WALK(indices->uidx)) return true; } break; case T_A_Indirection: { A_Indirection *indir = (A_Indirection *) node; if (WALK(indir->arg)) return true; if (WALK(indir->indirection)) return true; } break; case T_A_ArrayExpr: return WALK(((A_ArrayExpr *) node)->elements); case T_ResTarget: { ResTarget *rt = (ResTarget *) node; if (WALK(rt->indirection)) return true; if (WALK(rt->val)) return true; } break; case T_MultiAssignRef: return WALK(((MultiAssignRef *) node)->source); case T_TypeCast: { TypeCast *tc = (TypeCast *) node; if (WALK(tc->arg)) return true; if (WALK(tc->typeName)) return true; } break; case T_CollateClause: return WALK(((CollateClause *) node)->arg); case T_SortBy: return WALK(((SortBy *) node)->node); case T_WindowDef: { WindowDef *wd = (WindowDef *) node; if (WALK(wd->partitionClause)) return true; if (WALK(wd->orderClause)) return true; if (WALK(wd->startOffset)) return true; if (WALK(wd->endOffset)) return true; } break; case T_RangeSubselect: { RangeSubselect *rs = (RangeSubselect *) node; if (WALK(rs->subquery)) return true; if (WALK(rs->alias)) return true; } break; case T_RangeFunction: { RangeFunction *rf = (RangeFunction *) node; if (WALK(rf->functions)) return true; if (WALK(rf->alias)) return true; if (WALK(rf->coldeflist)) return true; } break; case T_RangeTableSample: { RangeTableSample *rts = (RangeTableSample *) node; if (WALK(rts->relation)) return true; /* method name is deemed uninteresting */ if (WALK(rts->args)) return true; if (WALK(rts->repeatable)) return true; } break; case T_RangeTableFunc: { RangeTableFunc *rtf = (RangeTableFunc *) node; if (WALK(rtf->docexpr)) return true; if (WALK(rtf->rowexpr)) return true; if (WALK(rtf->namespaces)) return true; if (WALK(rtf->columns)) return true; if (WALK(rtf->alias)) return true; } break; case T_RangeTableFuncCol: { RangeTableFuncCol *rtfc = (RangeTableFuncCol *) node; if (WALK(rtfc->colexpr)) return true; if (WALK(rtfc->coldefexpr)) return true; } break; case T_TypeName: { TypeName *tn = (TypeName *) node; if (WALK(tn->typmods)) return true; if (WALK(tn->arrayBounds)) return true; /* type name itself is deemed uninteresting */ } break; case T_ColumnDef: { ColumnDef *coldef = (ColumnDef *) node; if (WALK(coldef->typeName)) return true; if (WALK(coldef->raw_default)) return true; if (WALK(coldef->collClause)) return true; /* for now, constraints are ignored */ } break; case T_IndexElem: { IndexElem *indelem = (IndexElem *) node; if (WALK(indelem->expr)) return true; /* collation and opclass names are deemed uninteresting */ } break; case T_GroupingSet: return WALK(((GroupingSet *) node)->content); case T_LockingClause: return WALK(((LockingClause *) node)->lockedRels); case T_XmlSerialize: { XmlSerialize *xs = (XmlSerialize *) node; if (WALK(xs->expr)) return true; if (WALK(xs->typeName)) return true; } break; case T_WithClause: return WALK(((WithClause *) node)->ctes); case T_InferClause: { InferClause *stmt = (InferClause *) node; if (WALK(stmt->indexElems)) return true; if (WALK(stmt->whereClause)) return true; } break; case T_OnConflictClause: { OnConflictClause *stmt = (OnConflictClause *) node; if (WALK(stmt->infer)) return true; if (WALK(stmt->targetList)) return true; if (WALK(stmt->whereClause)) return true; } break; case T_CommonTableExpr: /* search_clause and cycle_clause are not interesting here */ return WALK(((CommonTableExpr *) node)->ctequery); case T_JsonOutput: { JsonOutput *out = (JsonOutput *) node; if (WALK(out->typeName)) return true; if (WALK(out->returning)) return true; } break; case T_JsonKeyValue: { JsonKeyValue *jkv = (JsonKeyValue *) node; if (WALK(jkv->key)) return true; if (WALK(jkv->value)) return true; } break; case T_JsonObjectConstructor: { JsonObjectConstructor *joc = (JsonObjectConstructor *) node; if (WALK(joc->output)) return true; if (WALK(joc->exprs)) return true; } break; case T_JsonArrayConstructor: { JsonArrayConstructor *jac = (JsonArrayConstructor *) node; if (WALK(jac->output)) return true; if (WALK(jac->exprs)) return true; } break; case T_JsonAggConstructor: { JsonAggConstructor *ctor = (JsonAggConstructor *) node; if (WALK(ctor->output)) return true; if (WALK(ctor->agg_order)) return true; if (WALK(ctor->agg_filter)) return true; if (WALK(ctor->over)) return true; } break; case T_JsonObjectAgg: { JsonObjectAgg *joa = (JsonObjectAgg *) node; if (WALK(joa->constructor)) return true; if (WALK(joa->arg)) return true; } break; case T_JsonArrayAgg: { JsonArrayAgg *jaa = (JsonArrayAgg *) node; if (WALK(jaa->constructor)) return true; if (WALK(jaa->arg)) return true; } break; case T_JsonArrayQueryConstructor: { JsonArrayQueryConstructor *jaqc = (JsonArrayQueryConstructor *) node; if (WALK(jaqc->output)) return true; if (WALK(jaqc->query)) return true; } break; 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. */ #define PSWALK(n) walker(n, context) /* * 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-17-6.1.0/src/postgres/src_backend_nodes_value.c000066400000000000000000000026511477334012600237230ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - makeString * - makeBoolean * - makeInteger * - makeFloat * - makeBitString *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * value.c * implementation of value nodes * * * Copyright (c) 2003-2024, PostgreSQL Global Development Group * * * IDENTIFICATION * src/backend/nodes/value.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "nodes/value.h" /* * makeInteger */ Integer * makeInteger(int i) { Integer *v = makeNode(Integer); v->ival = i; return v; } /* * makeFloat * * Caller is responsible for passing a palloc'd string. */ Float * makeFloat(char *numericStr) { Float *v = makeNode(Float); v->fval = numericStr; return v; } /* * makeBoolean */ Boolean * makeBoolean(bool val) { Boolean *v = makeNode(Boolean); v->boolval = val; return v; } /* * makeString * * Caller is responsible for passing a palloc'd string. */ String * makeString(char *str) { String *v = makeNode(String); v->sval = str; return v; } /* * makeBitString * * Caller is responsible for passing a palloc'd string. */ BitString * makeBitString(char *str) { BitString *v = makeNode(BitString); v->bsval = str; return v; } libpg_query-17-6.1.0/src/postgres/src_backend_parser_gram.c000066400000000000000000123413561477334012600237340ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - parser_init * - base_yyparse * - SystemTypeName * - SystemFuncName * - yypact * - yytranslate * - yycheck * - yytable * - yydefact * - yyr2 * - makeRawStmt * - updateRawStmtEnd * - makeParamRef * - makeAConst * - makeStringConstCast * - makeIntConst * - processCASbits * - makeRangeVarFromAnyName * - SplitColQualList * - parsePartitionStrategy * - doNegateFloat * - makeRoleSpec * - mergeTableFuncParameters * - TableFuncTypeName * - extractArgTypes * - check_func_name * - makeOrderedSetArgs * - extractAggrArgTypes * - preprocess_pubobj_list * - makeRangeVarFromQualifiedName * - check_qualified_name * - makeRecursiveViewSelect * - check_indirection * - insertSelectOptions * - makeSetOp * - makeBoolAConst * - makeNullAConst * - doNegate * - makeFloatConst * - makeTypeCast * - makeAndExpr * - makeOrExpr * - makeNotExpr * - makeXmlExpr * - makeSQLValueFunction * - makeAArrayExpr * - makeColumnRef * - 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, ABSENT = 278, ABSOLUTE_P = 279, ACCESS = 280, ACTION = 281, ADD_P = 282, ADMIN = 283, AFTER = 284, AGGREGATE = 285, ALL = 286, ALSO = 287, ALTER = 288, ALWAYS = 289, ANALYSE = 290, ANALYZE = 291, AND = 292, ANY = 293, ARRAY = 294, AS = 295, ASC = 296, ASENSITIVE = 297, ASSERTION = 298, ASSIGNMENT = 299, ASYMMETRIC = 300, ATOMIC = 301, AT = 302, ATTACH = 303, ATTRIBUTE = 304, AUTHORIZATION = 305, BACKWARD = 306, BEFORE = 307, BEGIN_P = 308, BETWEEN = 309, BIGINT = 310, BINARY = 311, BIT = 312, BOOLEAN_P = 313, BOTH = 314, BREADTH = 315, BY = 316, CACHE = 317, CALL = 318, CALLED = 319, CASCADE = 320, CASCADED = 321, CASE = 322, CAST = 323, CATALOG_P = 324, CHAIN = 325, CHAR_P = 326, CHARACTER = 327, CHARACTERISTICS = 328, CHECK = 329, CHECKPOINT = 330, CLASS = 331, CLOSE = 332, CLUSTER = 333, COALESCE = 334, COLLATE = 335, COLLATION = 336, COLUMN = 337, COLUMNS = 338, COMMENT = 339, COMMENTS = 340, COMMIT = 341, COMMITTED = 342, COMPRESSION = 343, CONCURRENTLY = 344, CONDITIONAL = 345, CONFIGURATION = 346, CONFLICT = 347, CONNECTION = 348, CONSTRAINT = 349, CONSTRAINTS = 350, CONTENT_P = 351, CONTINUE_P = 352, CONVERSION_P = 353, COPY = 354, COST = 355, CREATE = 356, CROSS = 357, CSV = 358, CUBE = 359, CURRENT_P = 360, CURRENT_CATALOG = 361, CURRENT_DATE = 362, CURRENT_ROLE = 363, CURRENT_SCHEMA = 364, CURRENT_TIME = 365, CURRENT_TIMESTAMP = 366, CURRENT_USER = 367, CURSOR = 368, CYCLE = 369, DATA_P = 370, DATABASE = 371, DAY_P = 372, DEALLOCATE = 373, DEC = 374, DECIMAL_P = 375, DECLARE = 376, DEFAULT = 377, DEFAULTS = 378, DEFERRABLE = 379, DEFERRED = 380, DEFINER = 381, DELETE_P = 382, DELIMITER = 383, DELIMITERS = 384, DEPENDS = 385, DEPTH = 386, DESC = 387, DETACH = 388, DICTIONARY = 389, DISABLE_P = 390, DISCARD = 391, DISTINCT = 392, DO = 393, DOCUMENT_P = 394, DOMAIN_P = 395, DOUBLE_P = 396, DROP = 397, EACH = 398, ELSE = 399, EMPTY_P = 400, ENABLE_P = 401, ENCODING = 402, ENCRYPTED = 403, END_P = 404, ENUM_P = 405, ERROR_P = 406, ESCAPE = 407, EVENT = 408, EXCEPT = 409, EXCLUDE = 410, EXCLUDING = 411, EXCLUSIVE = 412, EXECUTE = 413, EXISTS = 414, EXPLAIN = 415, EXPRESSION = 416, EXTENSION = 417, EXTERNAL = 418, EXTRACT = 419, FALSE_P = 420, FAMILY = 421, FETCH = 422, FILTER = 423, FINALIZE = 424, FIRST_P = 425, FLOAT_P = 426, FOLLOWING = 427, FOR = 428, FORCE = 429, FOREIGN = 430, FORMAT = 431, FORWARD = 432, FREEZE = 433, FROM = 434, FULL = 435, FUNCTION = 436, FUNCTIONS = 437, GENERATED = 438, GLOBAL = 439, GRANT = 440, GRANTED = 441, GREATEST = 442, GROUP_P = 443, GROUPING = 444, GROUPS = 445, HANDLER = 446, HAVING = 447, HEADER_P = 448, HOLD = 449, HOUR_P = 450, IDENTITY_P = 451, IF_P = 452, ILIKE = 453, IMMEDIATE = 454, IMMUTABLE = 455, IMPLICIT_P = 456, IMPORT_P = 457, IN_P = 458, INCLUDE = 459, INCLUDING = 460, INCREMENT = 461, INDENT = 462, INDEX = 463, INDEXES = 464, INHERIT = 465, INHERITS = 466, INITIALLY = 467, INLINE_P = 468, INNER_P = 469, INOUT = 470, INPUT_P = 471, INSENSITIVE = 472, INSERT = 473, INSTEAD = 474, INT_P = 475, INTEGER = 476, INTERSECT = 477, INTERVAL = 478, INTO = 479, INVOKER = 480, IS = 481, ISNULL = 482, ISOLATION = 483, JOIN = 484, JSON = 485, JSON_ARRAY = 486, JSON_ARRAYAGG = 487, JSON_EXISTS = 488, JSON_OBJECT = 489, JSON_OBJECTAGG = 490, JSON_QUERY = 491, JSON_SCALAR = 492, JSON_SERIALIZE = 493, JSON_TABLE = 494, JSON_VALUE = 495, KEEP = 496, KEY = 497, KEYS = 498, LABEL = 499, LANGUAGE = 500, LARGE_P = 501, LAST_P = 502, LATERAL_P = 503, LEADING = 504, LEAKPROOF = 505, LEAST = 506, LEFT = 507, LEVEL = 508, LIKE = 509, LIMIT = 510, LISTEN = 511, LOAD = 512, LOCAL = 513, LOCALTIME = 514, LOCALTIMESTAMP = 515, LOCATION = 516, LOCK_P = 517, LOCKED = 518, LOGGED = 519, MAPPING = 520, MATCH = 521, MATCHED = 522, MATERIALIZED = 523, MAXVALUE = 524, MERGE = 525, MERGE_ACTION = 526, METHOD = 527, MINUTE_P = 528, MINVALUE = 529, MODE = 530, MONTH_P = 531, MOVE = 532, NAME_P = 533, NAMES = 534, NATIONAL = 535, NATURAL = 536, NCHAR = 537, NESTED = 538, NEW = 539, NEXT = 540, NFC = 541, NFD = 542, NFKC = 543, NFKD = 544, NO = 545, NONE = 546, NORMALIZE = 547, NORMALIZED = 548, NOT = 549, NOTHING = 550, NOTIFY = 551, NOTNULL = 552, NOWAIT = 553, NULL_P = 554, NULLIF = 555, NULLS_P = 556, NUMERIC = 557, OBJECT_P = 558, OF = 559, OFF = 560, OFFSET = 561, OIDS = 562, OLD = 563, OMIT = 564, ON = 565, ONLY = 566, OPERATOR = 567, OPTION = 568, OPTIONS = 569, OR = 570, ORDER = 571, ORDINALITY = 572, OTHERS = 573, OUT_P = 574, OUTER_P = 575, OVER = 576, OVERLAPS = 577, OVERLAY = 578, OVERRIDING = 579, OWNED = 580, OWNER = 581, PARALLEL = 582, PARAMETER = 583, PARSER = 584, PARTIAL = 585, PARTITION = 586, PASSING = 587, PASSWORD = 588, PATH = 589, PLACING = 590, PLAN = 591, PLANS = 592, POLICY = 593, POSITION = 594, PRECEDING = 595, PRECISION = 596, PRESERVE = 597, PREPARE = 598, PREPARED = 599, PRIMARY = 600, PRIOR = 601, PRIVILEGES = 602, PROCEDURAL = 603, PROCEDURE = 604, PROCEDURES = 605, PROGRAM = 606, PUBLICATION = 607, QUOTE = 608, QUOTES = 609, RANGE = 610, READ = 611, REAL = 612, REASSIGN = 613, RECHECK = 614, RECURSIVE = 615, REF_P = 616, REFERENCES = 617, REFERENCING = 618, REFRESH = 619, REINDEX = 620, RELATIVE_P = 621, RELEASE = 622, RENAME = 623, REPEATABLE = 624, REPLACE = 625, REPLICA = 626, RESET = 627, RESTART = 628, RESTRICT = 629, RETURN = 630, RETURNING = 631, RETURNS = 632, REVOKE = 633, RIGHT = 634, ROLE = 635, ROLLBACK = 636, ROLLUP = 637, ROUTINE = 638, ROUTINES = 639, ROW = 640, ROWS = 641, RULE = 642, SAVEPOINT = 643, SCALAR = 644, SCHEMA = 645, SCHEMAS = 646, SCROLL = 647, SEARCH = 648, SECOND_P = 649, SECURITY = 650, SELECT = 651, SEQUENCE = 652, SEQUENCES = 653, SERIALIZABLE = 654, SERVER = 655, SESSION = 656, SESSION_USER = 657, SET = 658, SETS = 659, SETOF = 660, SHARE = 661, SHOW = 662, SIMILAR = 663, SIMPLE = 664, SKIP = 665, SMALLINT = 666, SNAPSHOT = 667, SOME = 668, SOURCE = 669, SQL_P = 670, STABLE = 671, STANDALONE_P = 672, START = 673, STATEMENT = 674, STATISTICS = 675, STDIN = 676, STDOUT = 677, STORAGE = 678, STORED = 679, STRICT_P = 680, STRING_P = 681, STRIP_P = 682, SUBSCRIPTION = 683, SUBSTRING = 684, SUPPORT = 685, SYMMETRIC = 686, SYSID = 687, SYSTEM_P = 688, SYSTEM_USER = 689, TABLE = 690, TABLES = 691, TABLESAMPLE = 692, TABLESPACE = 693, TARGET = 694, TEMP = 695, TEMPLATE = 696, TEMPORARY = 697, TEXT_P = 698, THEN = 699, TIES = 700, TIME = 701, TIMESTAMP = 702, TO = 703, TRAILING = 704, TRANSACTION = 705, TRANSFORM = 706, TREAT = 707, TRIGGER = 708, TRIM = 709, TRUE_P = 710, TRUNCATE = 711, TRUSTED = 712, TYPE_P = 713, TYPES_P = 714, UESCAPE = 715, UNBOUNDED = 716, UNCONDITIONAL = 717, UNCOMMITTED = 718, UNENCRYPTED = 719, UNION = 720, UNIQUE = 721, UNKNOWN = 722, UNLISTEN = 723, UNLOGGED = 724, UNTIL = 725, UPDATE = 726, USER = 727, USING = 728, VACUUM = 729, VALID = 730, VALIDATE = 731, VALIDATOR = 732, VALUE_P = 733, VALUES = 734, VARCHAR = 735, VARIADIC = 736, VARYING = 737, VERBOSE = 738, VERSION_P = 739, VIEW = 740, VIEWS = 741, VOLATILE = 742, WHEN = 743, WHERE = 744, WHITESPACE_P = 745, WINDOW = 746, WITH = 747, WITHIN = 748, WITHOUT = 749, WORK = 750, WRAPPER = 751, WRITE = 752, XML_P = 753, XMLATTRIBUTES = 754, XMLCONCAT = 755, XMLELEMENT = 756, XMLEXISTS = 757, XMLFOREST = 758, XMLNAMESPACES = 759, XMLPARSE = 760, XMLPI = 761, XMLROOT = 762, XMLSERIALIZE = 763, XMLTABLE = 764, YEAR_P = 765, YES_P = 766, ZONE = 767, FORMAT_LA = 768, NOT_LA = 769, NULLS_LA = 770, WITH_LA = 771, WITHOUT_LA = 772, MODE_TYPE_NAME = 773, MODE_PLPGSQL_EXPR = 774, MODE_PLPGSQL_ASSIGN1 = 775, MODE_PLPGSQL_ASSIGN2 = 776, MODE_PLPGSQL_ASSIGN3 = 777, UMINUS = 778 }; #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 ABSENT 278 #define ABSOLUTE_P 279 #define ACCESS 280 #define ACTION 281 #define ADD_P 282 #define ADMIN 283 #define AFTER 284 #define AGGREGATE 285 #define ALL 286 #define ALSO 287 #define ALTER 288 #define ALWAYS 289 #define ANALYSE 290 #define ANALYZE 291 #define AND 292 #define ANY 293 #define ARRAY 294 #define AS 295 #define ASC 296 #define ASENSITIVE 297 #define ASSERTION 298 #define ASSIGNMENT 299 #define ASYMMETRIC 300 #define ATOMIC 301 #define AT 302 #define ATTACH 303 #define ATTRIBUTE 304 #define AUTHORIZATION 305 #define BACKWARD 306 #define BEFORE 307 #define BEGIN_P 308 #define BETWEEN 309 #define BIGINT 310 #define BINARY 311 #define BIT 312 #define BOOLEAN_P 313 #define BOTH 314 #define BREADTH 315 #define BY 316 #define CACHE 317 #define CALL 318 #define CALLED 319 #define CASCADE 320 #define CASCADED 321 #define CASE 322 #define CAST 323 #define CATALOG_P 324 #define CHAIN 325 #define CHAR_P 326 #define CHARACTER 327 #define CHARACTERISTICS 328 #define CHECK 329 #define CHECKPOINT 330 #define CLASS 331 #define CLOSE 332 #define CLUSTER 333 #define COALESCE 334 #define COLLATE 335 #define COLLATION 336 #define COLUMN 337 #define COLUMNS 338 #define COMMENT 339 #define COMMENTS 340 #define COMMIT 341 #define COMMITTED 342 #define COMPRESSION 343 #define CONCURRENTLY 344 #define CONDITIONAL 345 #define CONFIGURATION 346 #define CONFLICT 347 #define CONNECTION 348 #define CONSTRAINT 349 #define CONSTRAINTS 350 #define CONTENT_P 351 #define CONTINUE_P 352 #define CONVERSION_P 353 #define COPY 354 #define COST 355 #define CREATE 356 #define CROSS 357 #define CSV 358 #define CUBE 359 #define CURRENT_P 360 #define CURRENT_CATALOG 361 #define CURRENT_DATE 362 #define CURRENT_ROLE 363 #define CURRENT_SCHEMA 364 #define CURRENT_TIME 365 #define CURRENT_TIMESTAMP 366 #define CURRENT_USER 367 #define CURSOR 368 #define CYCLE 369 #define DATA_P 370 #define DATABASE 371 #define DAY_P 372 #define DEALLOCATE 373 #define DEC 374 #define DECIMAL_P 375 #define DECLARE 376 #define DEFAULT 377 #define DEFAULTS 378 #define DEFERRABLE 379 #define DEFERRED 380 #define DEFINER 381 #define DELETE_P 382 #define DELIMITER 383 #define DELIMITERS 384 #define DEPENDS 385 #define DEPTH 386 #define DESC 387 #define DETACH 388 #define DICTIONARY 389 #define DISABLE_P 390 #define DISCARD 391 #define DISTINCT 392 #define DO 393 #define DOCUMENT_P 394 #define DOMAIN_P 395 #define DOUBLE_P 396 #define DROP 397 #define EACH 398 #define ELSE 399 #define EMPTY_P 400 #define ENABLE_P 401 #define ENCODING 402 #define ENCRYPTED 403 #define END_P 404 #define ENUM_P 405 #define ERROR_P 406 #define ESCAPE 407 #define EVENT 408 #define EXCEPT 409 #define EXCLUDE 410 #define EXCLUDING 411 #define EXCLUSIVE 412 #define EXECUTE 413 #define EXISTS 414 #define EXPLAIN 415 #define EXPRESSION 416 #define EXTENSION 417 #define EXTERNAL 418 #define EXTRACT 419 #define FALSE_P 420 #define FAMILY 421 #define FETCH 422 #define FILTER 423 #define FINALIZE 424 #define FIRST_P 425 #define FLOAT_P 426 #define FOLLOWING 427 #define FOR 428 #define FORCE 429 #define FOREIGN 430 #define FORMAT 431 #define FORWARD 432 #define FREEZE 433 #define FROM 434 #define FULL 435 #define FUNCTION 436 #define FUNCTIONS 437 #define GENERATED 438 #define GLOBAL 439 #define GRANT 440 #define GRANTED 441 #define GREATEST 442 #define GROUP_P 443 #define GROUPING 444 #define GROUPS 445 #define HANDLER 446 #define HAVING 447 #define HEADER_P 448 #define HOLD 449 #define HOUR_P 450 #define IDENTITY_P 451 #define IF_P 452 #define ILIKE 453 #define IMMEDIATE 454 #define IMMUTABLE 455 #define IMPLICIT_P 456 #define IMPORT_P 457 #define IN_P 458 #define INCLUDE 459 #define INCLUDING 460 #define INCREMENT 461 #define INDENT 462 #define INDEX 463 #define INDEXES 464 #define INHERIT 465 #define INHERITS 466 #define INITIALLY 467 #define INLINE_P 468 #define INNER_P 469 #define INOUT 470 #define INPUT_P 471 #define INSENSITIVE 472 #define INSERT 473 #define INSTEAD 474 #define INT_P 475 #define INTEGER 476 #define INTERSECT 477 #define INTERVAL 478 #define INTO 479 #define INVOKER 480 #define IS 481 #define ISNULL 482 #define ISOLATION 483 #define JOIN 484 #define JSON 485 #define JSON_ARRAY 486 #define JSON_ARRAYAGG 487 #define JSON_EXISTS 488 #define JSON_OBJECT 489 #define JSON_OBJECTAGG 490 #define JSON_QUERY 491 #define JSON_SCALAR 492 #define JSON_SERIALIZE 493 #define JSON_TABLE 494 #define JSON_VALUE 495 #define KEEP 496 #define KEY 497 #define KEYS 498 #define LABEL 499 #define LANGUAGE 500 #define LARGE_P 501 #define LAST_P 502 #define LATERAL_P 503 #define LEADING 504 #define LEAKPROOF 505 #define LEAST 506 #define LEFT 507 #define LEVEL 508 #define LIKE 509 #define LIMIT 510 #define LISTEN 511 #define LOAD 512 #define LOCAL 513 #define LOCALTIME 514 #define LOCALTIMESTAMP 515 #define LOCATION 516 #define LOCK_P 517 #define LOCKED 518 #define LOGGED 519 #define MAPPING 520 #define MATCH 521 #define MATCHED 522 #define MATERIALIZED 523 #define MAXVALUE 524 #define MERGE 525 #define MERGE_ACTION 526 #define METHOD 527 #define MINUTE_P 528 #define MINVALUE 529 #define MODE 530 #define MONTH_P 531 #define MOVE 532 #define NAME_P 533 #define NAMES 534 #define NATIONAL 535 #define NATURAL 536 #define NCHAR 537 #define NESTED 538 #define NEW 539 #define NEXT 540 #define NFC 541 #define NFD 542 #define NFKC 543 #define NFKD 544 #define NO 545 #define NONE 546 #define NORMALIZE 547 #define NORMALIZED 548 #define NOT 549 #define NOTHING 550 #define NOTIFY 551 #define NOTNULL 552 #define NOWAIT 553 #define NULL_P 554 #define NULLIF 555 #define NULLS_P 556 #define NUMERIC 557 #define OBJECT_P 558 #define OF 559 #define OFF 560 #define OFFSET 561 #define OIDS 562 #define OLD 563 #define OMIT 564 #define ON 565 #define ONLY 566 #define OPERATOR 567 #define OPTION 568 #define OPTIONS 569 #define OR 570 #define ORDER 571 #define ORDINALITY 572 #define OTHERS 573 #define OUT_P 574 #define OUTER_P 575 #define OVER 576 #define OVERLAPS 577 #define OVERLAY 578 #define OVERRIDING 579 #define OWNED 580 #define OWNER 581 #define PARALLEL 582 #define PARAMETER 583 #define PARSER 584 #define PARTIAL 585 #define PARTITION 586 #define PASSING 587 #define PASSWORD 588 #define PATH 589 #define PLACING 590 #define PLAN 591 #define PLANS 592 #define POLICY 593 #define POSITION 594 #define PRECEDING 595 #define PRECISION 596 #define PRESERVE 597 #define PREPARE 598 #define PREPARED 599 #define PRIMARY 600 #define PRIOR 601 #define PRIVILEGES 602 #define PROCEDURAL 603 #define PROCEDURE 604 #define PROCEDURES 605 #define PROGRAM 606 #define PUBLICATION 607 #define QUOTE 608 #define QUOTES 609 #define RANGE 610 #define READ 611 #define REAL 612 #define REASSIGN 613 #define RECHECK 614 #define RECURSIVE 615 #define REF_P 616 #define REFERENCES 617 #define REFERENCING 618 #define REFRESH 619 #define REINDEX 620 #define RELATIVE_P 621 #define RELEASE 622 #define RENAME 623 #define REPEATABLE 624 #define REPLACE 625 #define REPLICA 626 #define RESET 627 #define RESTART 628 #define RESTRICT 629 #define RETURN 630 #define RETURNING 631 #define RETURNS 632 #define REVOKE 633 #define RIGHT 634 #define ROLE 635 #define ROLLBACK 636 #define ROLLUP 637 #define ROUTINE 638 #define ROUTINES 639 #define ROW 640 #define ROWS 641 #define RULE 642 #define SAVEPOINT 643 #define SCALAR 644 #define SCHEMA 645 #define SCHEMAS 646 #define SCROLL 647 #define SEARCH 648 #define SECOND_P 649 #define SECURITY 650 #define SELECT 651 #define SEQUENCE 652 #define SEQUENCES 653 #define SERIALIZABLE 654 #define SERVER 655 #define SESSION 656 #define SESSION_USER 657 #define SET 658 #define SETS 659 #define SETOF 660 #define SHARE 661 #define SHOW 662 #define SIMILAR 663 #define SIMPLE 664 #define SKIP 665 #define SMALLINT 666 #define SNAPSHOT 667 #define SOME 668 #define SOURCE 669 #define SQL_P 670 #define STABLE 671 #define STANDALONE_P 672 #define START 673 #define STATEMENT 674 #define STATISTICS 675 #define STDIN 676 #define STDOUT 677 #define STORAGE 678 #define STORED 679 #define STRICT_P 680 #define STRING_P 681 #define STRIP_P 682 #define SUBSCRIPTION 683 #define SUBSTRING 684 #define SUPPORT 685 #define SYMMETRIC 686 #define SYSID 687 #define SYSTEM_P 688 #define SYSTEM_USER 689 #define TABLE 690 #define TABLES 691 #define TABLESAMPLE 692 #define TABLESPACE 693 #define TARGET 694 #define TEMP 695 #define TEMPLATE 696 #define TEMPORARY 697 #define TEXT_P 698 #define THEN 699 #define TIES 700 #define TIME 701 #define TIMESTAMP 702 #define TO 703 #define TRAILING 704 #define TRANSACTION 705 #define TRANSFORM 706 #define TREAT 707 #define TRIGGER 708 #define TRIM 709 #define TRUE_P 710 #define TRUNCATE 711 #define TRUSTED 712 #define TYPE_P 713 #define TYPES_P 714 #define UESCAPE 715 #define UNBOUNDED 716 #define UNCONDITIONAL 717 #define UNCOMMITTED 718 #define UNENCRYPTED 719 #define UNION 720 #define UNIQUE 721 #define UNKNOWN 722 #define UNLISTEN 723 #define UNLOGGED 724 #define UNTIL 725 #define UPDATE 726 #define USER 727 #define USING 728 #define VACUUM 729 #define VALID 730 #define VALIDATE 731 #define VALIDATOR 732 #define VALUE_P 733 #define VALUES 734 #define VARCHAR 735 #define VARIADIC 736 #define VARYING 737 #define VERBOSE 738 #define VERSION_P 739 #define VIEW 740 #define VIEWS 741 #define VOLATILE 742 #define WHEN 743 #define WHERE 744 #define WHITESPACE_P 745 #define WINDOW 746 #define WITH 747 #define WITHIN 748 #define WITHOUT 749 #define WORK 750 #define WRAPPER 751 #define WRITE 752 #define XML_P 753 #define XMLATTRIBUTES 754 #define XMLCONCAT 755 #define XMLELEMENT 756 #define XMLEXISTS 757 #define XMLFOREST 758 #define XMLNAMESPACES 759 #define XMLPARSE 760 #define XMLPI 761 #define XMLROOT 762 #define XMLSERIALIZE 763 #define XMLTABLE 764 #define YEAR_P 765 #define YES_P 766 #define ZONE 767 #define FORMAT_LA 768 #define NOT_LA 769 #define NULLS_LA 770 #define WITH_LA 771 #define WITHOUT_LA 772 #define MODE_TYPE_NAME 773 #define MODE_PLPGSQL_EXPR 774 #define MODE_PLPGSQL_ASSIGN1 775 #define MODE_PLPGSQL_ASSIGN2 776 #define MODE_PLPGSQL_ASSIGN3 777 #define UMINUS 778 /* Copy the first part of user declarations. */ #line 1 "gram.y" /*#define YYDEBUG 1*/ /*------------------------------------------------------------------------- * * gram.y * POSTGRESQL BISON rules/actions * * Portions Copyright (c) 1996-2024, 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 "gramparse.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "parser/parser.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. */ #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; /* Private struct for the result of group_clause production */ typedef struct GroupClause { bool distinct; List *list; } GroupClause; /* Private structs for the result of key_actions and key_action productions */ typedef struct KeyAction { char action; List *cols; } KeyAction; typedef struct KeyActions { KeyAction *updateAction; KeyAction *deleteAction; } KeyActions; /* 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 *makeStringConstCast(char *str, int location, TypeName *typename); static Node *makeIntConst(int val, int location); static Node *makeFloatConst(char *str, int location); static Node *makeBoolAConst(bool state, int location); static Node *makeBitStringConst(char *str, int location); static Node *makeNullAConst(int location); static Node *makeAConst(Node *v, 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); 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(Float *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 RangeVar *makeRangeVarFromQualifiedName(char *name, List *namelist, int location, 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 PartitionStrategy parsePartitionStrategy(char *strategy); static void preprocess_pubobj_list(List *pubobjspec_list, 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 233 "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; ObjectType objtype; TypeName *typnam; FunctionParameter *fun_param; FunctionParameterMode fun_param_mode; ObjectWithArgs *objwithargs; DefElem *defelt; SortBy *sortby; WindowDef *windef; JoinExpr *jexpr; IndexElem *ielem; StatsElem *selem; 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; PublicationObjSpec *publicationobjectspec; struct SelectLimit *selectlimit; SetQuantifier setquantifier; struct GroupClause *groupclause; MergeMatchKind mergematch; MergeWhenClause *mergewhen; struct KeyActions *keyactions; struct KeyAction *keyaction; } /* Line 193 of yacc.c. */ #line 1425 "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 1450 "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 928 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 122949 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 541 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 728 /* YYNRULES -- Number of rules. */ #define YYNRULES 3421 /* YYNRULES -- Number of states. */ #define YYNSTATES 6474 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 778 #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, 530, 2, 2, 535, 536, 528, 526, 539, 527, 537, 529, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 540, 538, 523, 525, 524, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 533, 2, 534, 531, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 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, 532 }; #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, 8, 11, 14, 17, 20, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 279, 281, 282, 284, 285, 287, 288, 290, 292, 293, 296, 302, 304, 306, 307, 310, 311, 314, 315, 318, 321, 324, 328, 332, 336, 338, 342, 346, 349, 351, 353, 356, 359, 362, 366, 370, 376, 382, 388, 389, 393, 399, 405, 411, 417, 421, 427, 431, 437, 441, 447, 453, 460, 462, 464, 471, 476, 486, 494, 497, 498, 500, 502, 504, 506, 508, 510, 513, 517, 521, 524, 530, 532, 536, 540, 544, 548, 550, 554, 558, 561, 564, 567, 570, 573, 576, 580, 584, 588, 592, 596, 598, 602, 604, 608, 610, 612, 614, 617, 620, 623, 625, 627, 629, 631, 633, 635, 637, 639, 643, 649, 651, 653, 655, 657, 659, 660, 662, 664, 667, 669, 672, 676, 679, 681, 683, 686, 688, 691, 693, 696, 700, 705, 709, 712, 717, 719, 721, 723, 725, 727, 730, 733, 736, 739, 742, 747, 754, 759, 766, 777, 791, 796, 803, 808, 819, 833, 838, 845, 850, 857, 863, 871, 883, 898, 904, 912, 914, 918, 923, 928, 933, 937, 940, 946, 950, 957, 962, 969, 976, 986, 992, 1000, 1007, 1014, 1020, 1026, 1032, 1038, 1048, 1053, 1059, 1067, 1074, 1079, 1088, 1093, 1096, 1101, 1105, 1112, 1117, 1121, 1125, 1129, 1132, 1135, 1139, 1144, 1149, 1153, 1157, 1161, 1165, 1169, 1173, 1178, 1183, 1187, 1190, 1194, 1197, 1200, 1204, 1209, 1213, 1216, 1219, 1223, 1228, 1233, 1238, 1244, 1246, 1250, 1253, 1256, 1257, 1260, 1261, 1263, 1265, 1267, 1271, 1275, 1278, 1279, 1281, 1285, 1289, 1291, 1297, 1301, 1303, 1306, 1308, 1312, 1315, 1319, 1321, 1323, 1325, 1327, 1334, 1341, 1352, 1354, 1357, 1359, 1363, 1368, 1370, 1374, 1379, 1386, 1391, 1400, 1403, 1406, 1418, 1428, 1430, 1432, 1434, 1435, 1437, 1439, 1441, 1443, 1447, 1450, 1451, 1453, 1455, 1459, 1463, 1465, 1467, 1471, 1475, 1479, 1483, 1488, 1493, 1497, 1501, 1504, 1506, 1507, 1511, 1512, 1514, 1515, 1517, 1521, 1524, 1526, 1528, 1530, 1532, 1536, 1537, 1539, 1543, 1545, 1559, 1576, 1589, 1605, 1620, 1638, 1640, 1642, 1645, 1648, 1651, 1654, 1656, 1657, 1659, 1660, 1664, 1665, 1667, 1671, 1673, 1677, 1679, 1681, 1683, 1685, 1687, 1694, 1697, 1702, 1705, 1708, 1710, 1711, 1714, 1717, 1719, 1720, 1723, 1724, 1728, 1730, 1732, 1735, 1738, 1740, 1745, 1750, 1756, 1759, 1765, 1773, 1779, 1782, 1786, 1787, 1789, 1792, 1794, 1797, 1800, 1803, 1807, 1811, 1815, 1816, 1818, 1820, 1822, 1824, 1826, 1828, 1830, 1832, 1834, 1836, 1840, 1842, 1848, 1858, 1862, 1872, 1877, 1888, 1900, 1904, 1906, 1912, 1916, 1919, 1920, 1924, 1925, 1927, 1931, 1933, 1938, 1939, 1942, 1945, 1948, 1949, 1951, 1955, 1959, 1966, 1971, 1972, 1974, 1976, 1979, 1982, 1983, 1987, 1991, 1994, 1996, 1998, 2002, 2006, 2011, 2012, 2014, 2015, 2022, 2024, 2028, 2032, 2036, 2042, 2045, 2046, 2049, 2052, 2053, 2057, 2062, 2067, 2068, 2071, 2072, 2077, 2078, 2082, 2091, 2103, 2105, 2109, 2111, 2113, 2117, 2124, 2133, 2141, 2152, 2159, 2162, 2166, 2167, 2176, 2188, 2194, 2196, 2197, 2204, 2210, 2219, 2224, 2231, 2233, 2234, 2238, 2239, 2241, 2244, 2247, 2250, 2252, 2255, 2259, 2261, 2264, 2267, 2270, 2273, 2277, 2281, 2285, 2287, 2291, 2293, 2295, 2296, 2298, 2301, 2304, 2306, 2308, 2312, 2319, 2330, 2332, 2333, 2335, 2338, 2341, 2342, 2345, 2348, 2350, 2351, 2353, 2354, 2362, 2365, 2366, 2370, 2376, 2382, 2391, 2394, 2395, 2398, 2401, 2404, 2406, 2412, 2415, 2416, 2419, 2426, 2433, 2440, 2451, 2458, 2465, 2472, 2482, 2492, 2499, 2506, 2516, 2523, 2531, 2534, 2537, 2540, 2543, 2545, 2548, 2550, 2551, 2559, 2566, 2571, 2572, 2574, 2578, 2583, 2585, 2589, 2591, 2594, 2597, 2600, 2603, 2605, 2607, 2618, 2632, 2635, 2636, 2639, 2642, 2644, 2645, 2651, 2656, 2661, 2673, 2688, 2701, 2717, 2729, 2732, 2734, 2739, 2740, 2749, 2761, 2763, 2765, 2773, 2783, 2792, 2803, 2812, 2817, 2818, 2824, 2825, 2828, 2829, 2832, 2833, 2836, 2837, 2840, 2841, 2843, 2845, 2847, 2849, 2851, 2860, 2862, 2864, 2882, 2904, 2906, 2908, 2911, 2913, 2917, 2919, 2921, 2923, 2927, 2929, 2932, 2933, 2935, 2938, 2943, 2945, 2947, 2949, 2951, 2953, 2957, 2958, 2960, 2961, 2963, 2965, 2970, 2971, 2973, 2975, 2977, 2981, 2982, 2984, 2986, 2988, 2990, 2993, 2994, 2995, 2998, 3001, 3003, 3006, 3009, 3012, 3015, 3027, 3041, 3043, 3047, 3053, 3055, 3059, 3065, 3067, 3070, 3073, 3075, 3084, 3091, 3097, 3102, 3107, 3111, 3119, 3128, 3135, 3142, 3149, 3156, 3163, 3168, 3176, 3182, 3191, 3195, 3197, 3201, 3205, 3207, 3209, 3211, 3213, 3215, 3217, 3219, 3223, 3225, 3229, 3233, 3235, 3236, 3238, 3242, 3250, 3260, 3270, 3279, 3286, 3290, 3291, 3305, 3307, 3311, 3317, 3323, 3327, 3334, 3337, 3339, 3340, 3343, 3344, 3347, 3352, 3353, 3355, 3356, 3363, 3372, 3381, 3383, 3387, 3393, 3399, 3407, 3417, 3425, 3435, 3441, 3448, 3455, 3460, 3467, 3472, 3479, 3488, 3493, 3500, 3505, 3512, 3518, 3526, 3528, 3530, 3532, 3535, 3537, 3540, 3542, 3544, 3546, 3550, 3554, 3558, 3562, 3564, 3566, 3568, 3570, 3572, 3575, 3578, 3580, 3584, 3587, 3589, 3591, 3593, 3595, 3597, 3599, 3601, 3605, 3607, 3610, 3613, 3617, 3619, 3623, 3629, 3632, 3635, 3636, 3643, 3650, 3657, 3664, 3671, 3678, 3685, 3692, 3701, 3711, 3720, 3727, 3734, 3744, 3754, 3764, 3772, 3783, 3785, 3787, 3796, 3805, 3814, 3823, 3832, 3841, 3850, 3860, 3869, 3878, 3881, 3882, 3884, 3886, 3889, 3892, 3894, 3897, 3901, 3905, 3909, 3913, 3918, 3923, 3927, 3931, 3935, 3940, 3945, 3949, 3954, 3959, 3961, 3963, 3965, 3966, 3975, 3984, 3996, 3998, 4000, 4003, 4008, 4014, 4016, 4020, 4023, 4026, 4029, 4032, 4035, 4037, 4041, 4043, 4047, 4049, 4052, 4055, 4060, 4064, 4067, 4070, 4073, 4076, 4079, 4082, 4086, 4089, 4092, 4095, 4098, 4104, 4110, 4116, 4122, 4128, 4130, 4134, 4136, 4139, 4143, 4144, 4150, 4158, 4165, 4175, 4179, 4181, 4184, 4186, 4188, 4190, 4194, 4195, 4201, 4204, 4205, 4209, 4213, 4217, 4225, 4233, 4244, 4246, 4248, 4250, 4252, 4254, 4256, 4273, 4293, 4295, 4296, 4299, 4300, 4302, 4306, 4311, 4317, 4320, 4323, 4328, 4333, 4334, 4336, 4340, 4343, 4344, 4346, 4348, 4349, 4352, 4355, 4356, 4366, 4379, 4387, 4395, 4398, 4399, 4403, 4406, 4408, 4412, 4414, 4418, 4421, 4423, 4425, 4428, 4432, 4435, 4437, 4441, 4445, 4449, 4452, 4455, 4457, 4459, 4461, 4463, 4466, 4468, 4470, 4472, 4474, 4479, 4485, 4487, 4491, 4495, 4497, 4501, 4505, 4511, 4518, 4520, 4524, 4527, 4529, 4533, 4535, 4536, 4538, 4541, 4546, 4552, 4554, 4556, 4558, 4560, 4564, 4568, 4571, 4574, 4576, 4579, 4582, 4585, 4588, 4590, 4593, 4596, 4599, 4602, 4604, 4606, 4608, 4612, 4615, 4617, 4622, 4623, 4627, 4628, 4630, 4632, 4636, 4642, 4645, 4646, 4649, 4651, 4655, 4661, 4667, 4673, 4675, 4678, 4680, 4681, 4686, 4693, 4698, 4705, 4710, 4717, 4722, 4729, 4734, 4741, 4745, 4751, 4757, 4763, 4765, 4769, 4771, 4775, 4778, 4781, 4783, 4786, 4788, 4791, 4803, 4814, 4825, 4828, 4831, 4832, 4842, 4845, 4846, 4857, 4869, 4881, 4887, 4893, 4902, 4908, 4914, 4920, 4922, 4924, 4926, 4928, 4932, 4933, 4939, 4945, 4952, 4959, 4966, 4973, 4980, 4989, 4998, 5005, 5012, 5020, 5030, 5040, 5049, 5060, 5067, 5074, 5081, 5088, 5095, 5102, 5109, 5118, 5125, 5134, 5141, 5150, 5158, 5168, 5175, 5184, 5192, 5202, 5211, 5222, 5231, 5242, 5252, 5264, 5273, 5284, 5294, 5306, 5315, 5324, 5332, 5339, 5346, 5353, 5360, 5369, 5378, 5387, 5396, 5403, 5413, 5415, 5416, 5419, 5420, 5429, 5438, 5447, 5458, 5468, 5477, 5479, 5480, 5487, 5494, 5501, 5508, 5515, 5522, 5529, 5539, 5549, 5556, 5563, 5570, 5579, 5586, 5595, 5604, 5613, 5622, 5629, 5638, 5645, 5654, 5662, 5672, 5680, 5690, 5697, 5705, 5707, 5711, 5715, 5719, 5721, 5723, 5725, 5727, 5729, 5731, 5739, 5746, 5753, 5760, 5767, 5774, 5781, 5789, 5797, 5804, 5814, 5824, 5831, 5838, 5845, 5852, 5859, 5866, 5875, 5884, 5893, 5900, 5908, 5915, 5922, 5927, 5935, 5942, 5947, 5952, 5957, 5961, 5966, 5970, 5972, 5974, 5978, 5984, 5990, 5996, 6002, 6011, 6017, 6023, 6030, 6038, 6046, 6054, 6059, 6064, 6070, 6075, 6082, 6096, 6098, 6100, 6104, 6108, 6110, 6112, 6114, 6116, 6118, 6120, 6122, 6123, 6125, 6127, 6129, 6131, 6133, 6135, 6136, 6140, 6143, 6144, 6147, 6150, 6153, 6157, 6161, 6165, 6169, 6172, 6176, 6179, 6185, 6190, 6194, 6198, 6202, 6206, 6210, 6212, 6214, 6215, 6219, 6222, 6225, 6227, 6230, 6232, 6236, 6239, 6241, 6242, 6245, 6249, 6250, 6260, 6272, 6285, 6300, 6304, 6309, 6314, 6315, 6318, 6324, 6326, 6327, 6329, 6332, 6336, 6340, 6344, 6346, 6349, 6351, 6353, 6355, 6357, 6359, 6361, 6362, 6368, 6373, 6380, 6387, 6392, 6396, 6402, 6410, 6420, 6422, 6426, 6428, 6434, 6439, 6444, 6451, 6456, 6463, 6470, 6476, 6484, 6494, 6501, 6503, 6504, 6511, 6523, 6535, 6547, 6561, 6571, 6583, 6585, 6587, 6598, 6605, 6610, 6615, 6618, 6624, 6627, 6628, 6635, 6641, 6645, 6651, 6653, 6657, 6659, 6661, 6664, 6666, 6668, 6670, 6672, 6674, 6675, 6677, 6678, 6680, 6681, 6683, 6684, 6686, 6687, 6691, 6692, 6695, 6697, 6701, 6703, 6704, 6707, 6712, 6716, 6722, 6724, 6726, 6728, 6730, 6732, 6734, 6736, 6738, 6740, 6742, 6748, 6752, 6753, 6755, 6757, 6759, 6761, 6763, 6767, 6777, 6790, 6794, 6795, 6798, 6802, 6805, 6809, 6817, 6819, 6823, 6825, 6830, 6835, 6843, 6846, 6848, 6850, 6852, 6856, 6859, 6868, 6874, 6875, 6880, 6884, 6885, 6888, 6889, 6897, 6900, 6901, 6907, 6911, 6912, 6915, 6918, 6921, 6925, 6927, 6931, 6933, 6936, 6938, 6939, 6941, 6944, 6945, 6954, 6956, 6960, 6964, 6970, 6973, 6975, 6979, 6990, 6992, 6995, 7000, 7005, 7010, 7016, 7022, 7025, 7031, 7035, 7041, 7044, 7045, 7049, 7051, 7054, 7060, 7066, 7075, 7079, 7084, 7092, 7094, 7095, 7099, 7102, 7105, 7108, 7111, 7112, 7115, 7118, 7120, 7122, 7126, 7130, 7132, 7135, 7140, 7145, 7148, 7152, 7158, 7164, 7166, 7168, 7178, 7188, 7190, 7193, 7198, 7203, 7208, 7211, 7214, 7218, 7220, 7224, 7234, 7236, 7239, 7240, 7248, 7256, 7257, 7268, 7275, 7276, 7278, 7279, 7282, 7283, 7287, 7291, 7296, 7301, 7306, 7311, 7315, 7318, 7320, 7322, 7323, 7325, 7327, 7328, 7330, 7336, 7338, 7339, 7341, 7343, 7345, 7346, 7350, 7352, 7356, 7361, 7365, 7368, 7371, 7373, 7375, 7377, 7378, 7381, 7386, 7392, 7399, 7404, 7410, 7413, 7417, 7419, 7421, 7423, 7425, 7428, 7431, 7433, 7435, 7437, 7439, 7441, 7443, 7448, 7449, 7451, 7455, 7457, 7459, 7461, 7463, 7465, 7468, 7473, 7478, 7484, 7487, 7488, 7490, 7494, 7496, 7497, 7499, 7502, 7506, 7509, 7514, 7517, 7521, 7524, 7525, 7530, 7536, 7539, 7540, 7542, 7546, 7549, 7553, 7556, 7560, 7563, 7567, 7570, 7574, 7576, 7581, 7584, 7588, 7592, 7597, 7603, 7608, 7614, 7619, 7625, 7628, 7633, 7635, 7637, 7638, 7641, 7642, 7644, 7649, 7655, 7660, 7661, 7664, 7667, 7670, 7672, 7674, 7675, 7681, 7684, 7686, 7688, 7691, 7694, 7699, 7701, 7705, 7707, 7710, 7714, 7721, 7726, 7727, 7730, 7737, 7740, 7742, 7746, 7751, 7752, 7755, 7756, 7759, 7760, 7763, 7768, 7769, 7771, 7772, 7774, 7778, 7782, 7790, 7803, 7805, 7809, 7812, 7816, 7820, 7822, 7825, 7828, 7831, 7834, 7836, 7839, 7841, 7845, 7849, 7852, 7866, 7869, 7870, 7872, 7876, 7880, 7887, 7895, 7901, 7909, 7919, 7921, 7922, 7925, 7926, 7929, 7933, 7939, 7946, 7949, 7953, 7957, 7962, 7963, 7965, 7967, 7969, 7971, 7973, 7976, 7981, 7983, 7985, 7987, 7989, 7991, 7993, 7996, 8000, 8004, 8005, 8007, 8009, 8011, 8013, 8015, 8018, 8021, 8024, 8027, 8030, 8032, 8036, 8037, 8039, 8041, 8043, 8045, 8051, 8054, 8056, 8058, 8060, 8062, 8067, 8069, 8072, 8075, 8077, 8081, 8085, 8088, 8090, 8091, 8097, 8100, 8106, 8109, 8111, 8115, 8119, 8120, 8122, 8124, 8126, 8128, 8130, 8132, 8136, 8140, 8144, 8148, 8152, 8156, 8160, 8161, 8163, 8168, 8170, 8172, 8176, 8180, 8186, 8190, 8193, 8196, 8200, 8204, 8208, 8212, 8216, 8220, 8224, 8228, 8232, 8236, 8240, 8244, 8248, 8251, 8255, 8259, 8262, 8265, 8269, 8275, 8280, 8287, 8291, 8297, 8302, 8309, 8314, 8321, 8327, 8335, 8339, 8342, 8347, 8350, 8354, 8358, 8363, 8367, 8372, 8376, 8381, 8387, 8394, 8401, 8409, 8416, 8424, 8428, 8433, 8438, 8445, 8449, 8453, 8458, 8462, 8467, 8472, 8478, 8483, 8489, 8491, 8493, 8497, 8500, 8503, 8507, 8511, 8515, 8519, 8523, 8527, 8531, 8535, 8539, 8543, 8547, 8551, 8555, 8558, 8564, 8571, 8575, 8580, 8582, 8584, 8587, 8592, 8594, 8596, 8598, 8601, 8604, 8607, 8610, 8612, 8614, 8619, 8623, 8629, 8636, 8645, 8652, 8659, 8664, 8669, 8673, 8675, 8677, 8679, 8681, 8687, 8689, 8691, 8696, 8698, 8703, 8705, 8710, 8712, 8717, 8719, 8721, 8723, 8725, 8727, 8729, 8731, 8738, 8743, 8748, 8755, 8760, 8765, 8770, 8775, 8780, 8787, 8793, 8799, 8805, 8810, 8817, 8822, 8827, 8832, 8837, 8843, 8851, 8859, 8869, 8875, 8880, 8887, 8893, 8901, 8909, 8918, 8923, 8931, 8936, 8943, 8950, 8955, 8961, 8966, 8972, 8976, 8988, 8997, 9007, 9010, 9014, 9018, 9022, 9027, 9028, 9033, 9035, 9039, 9043, 9045, 9047, 9049, 9051, 9054, 9055, 9058, 9061, 9062, 9065, 9069, 9073, 9078, 9081, 9084, 9090, 9091, 9097, 9098, 9101, 9102, 9104, 9108, 9112, 9115, 9118, 9119, 9126, 9128, 9129, 9133, 9134, 9138, 9142, 9146, 9147, 9149, 9154, 9157, 9160, 9163, 9166, 9169, 9173, 9176, 9179, 9183, 9184, 9189, 9193, 9199, 9204, 9208, 9214, 9216, 9218, 9220, 9222, 9224, 9226, 9228, 9230, 9232, 9234, 9236, 9238, 9240, 9242, 9244, 9246, 9248, 9250, 9255, 9257, 9262, 9264, 9269, 9271, 9274, 9276, 9279, 9281, 9285, 9287, 9291, 9293, 9297, 9301, 9303, 9304, 9306, 9310, 9314, 9318, 9321, 9323, 9327, 9331, 9335, 9337, 9339, 9341, 9343, 9345, 9347, 9349, 9351, 9353, 9355, 9357, 9359, 9367, 9373, 9377, 9383, 9389, 9393, 9397, 9403, 9407, 9410, 9412, 9414, 9418, 9424, 9426, 9429, 9434, 9437, 9438, 9440, 9441, 9443, 9446, 9449, 9452, 9456, 9462, 9464, 9465, 9467, 9470, 9471, 9474, 9476, 9477, 9480, 9481, 9483, 9487, 9491, 9494, 9498, 9501, 9505, 9510, 9515, 9519, 9523, 9524, 9527, 9529, 9531, 9533, 9535, 9537, 9539, 9542, 9545, 9547, 9551, 9555, 9562, 9563, 9567, 9568, 9571, 9576, 9579, 9581, 9582, 9588, 9591, 9597, 9600, 9601, 9605, 9606, 9608, 9611, 9614, 9617, 9620, 9624, 9627, 9631, 9634, 9635, 9637, 9641, 9645, 9649, 9653, 9657, 9658, 9662, 9666, 9667, 9669, 9673, 9681, 9689, 9693, 9694, 9696, 9697, 9699, 9703, 9707, 9710, 9712, 9714, 9716, 9720, 9722, 9725, 9727, 9731, 9733, 9735, 9737, 9739, 9742, 9744, 9746, 9748, 9750, 9752, 9755, 9762, 9765, 9772, 9775, 9779, 9785, 9788, 9792, 9798, 9800, 9802, 9804, 9806, 9808, 9810, 9813, 9816, 9818, 9820, 9822, 9824, 9826, 9828, 9832, 9843, 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, 10224, 10226, 10228, 10230, 10232, 10234, 10236, 10238, 10240, 10242, 10244, 10246, 10248, 10250, 10252, 10254, 10256, 10258, 10260, 10262, 10264, 10266, 10268, 10270, 10272, 10274, 10276, 10278, 10280, 10282, 10284, 10286, 10288, 10290, 10292, 10294, 10296, 10298, 10300, 10302, 10304, 10306, 10308, 10310, 10312, 10314, 10316, 10318, 10320, 10322, 10324, 10326, 10328, 10330, 10332, 10334, 10336, 10338, 10340, 10342, 10344, 10346, 10348, 10350, 10352, 10354, 10356, 10358, 10360, 10362, 10364, 10366, 10368, 10370, 10372, 10374, 10376, 10378, 10380, 10382, 10384, 10386, 10388, 10390, 10392, 10394, 10396, 10398, 10400, 10402, 10404, 10406, 10408, 10410, 10412, 10414, 10416, 10418, 10420, 10422, 10424, 10426, 10428, 10430, 10432, 10434, 10436, 10438, 10440, 10442, 10444, 10446, 10448, 10450, 10452, 10454, 10456, 10458, 10460, 10462, 10464, 10466, 10468, 10470, 10472, 10474, 10476, 10478, 10480, 10482, 10484, 10486, 10488, 10490, 10492, 10494, 10496, 10498, 10500, 10502, 10504, 10506, 10508, 10510, 10512, 10514, 10516, 10518, 10520, 10522, 10524, 10526, 10528, 10530, 10532, 10534, 10536, 10538, 10540, 10542, 10544, 10546, 10548, 10550, 10552, 10554, 10556, 10558, 10560, 10562, 10564, 10566, 10568, 10570, 10572, 10574, 10576, 10578, 10580, 10582, 10584, 10586, 10588, 10590, 10592, 10594, 10596, 10598, 10600, 10602, 10604, 10606, 10608, 10610, 10612, 10614, 10616, 10618, 10620, 10622, 10624, 10626, 10628, 10630, 10632, 10634, 10636, 10638, 10640, 10642, 10644, 10646, 10648, 10650, 10652, 10654, 10656, 10658, 10660, 10662, 10664, 10666, 10668, 10670, 10672, 10674, 10676, 10678, 10680, 10682, 10684, 10686, 10688, 10690, 10692, 10694, 10696, 10698, 10700, 10702, 10704, 10706, 10708, 10710, 10712, 10714, 10716, 10718, 10720, 10722, 10724, 10726, 10728, 10730, 10732, 10734, 10736, 10738, 10740, 10742, 10744, 10746, 10748, 10750, 10752, 10754, 10756, 10758, 10760, 10762, 10764, 10766, 10768, 10770, 10772, 10774, 10776, 10778, 10780, 10782, 10784, 10786, 10788, 10790, 10792, 10794, 10796, 10798, 10800, 10802, 10804, 10806, 10808, 10810, 10812, 10814, 10816, 10818, 10820, 10822, 10824, 10826, 10828, 10830, 10832, 10834, 10836, 10838, 10840, 10842, 10844, 10846, 10848, 10850, 10852, 10854, 10856, 10858, 10860, 10862, 10864, 10866, 10868, 10870, 10872, 10874, 10876, 10878, 10880, 10882, 10884, 10886, 10888, 10890, 10892, 10894, 10896, 10898, 10900, 10902, 10904, 10906, 10908, 10910, 10912, 10914, 10916, 10918, 10920, 10922, 10924, 10926, 10928, 10930, 10932, 10934, 10936, 10938, 10940, 10942, 10944, 10946, 10948, 10950, 10952, 10954, 10956, 10958, 10960, 10962, 10964, 10966, 10968, 10970, 10972, 10974, 10976, 10978, 10980, 10982, 10984, 10986, 10988, 10990, 10992, 10994, 10996, 10998, 11000, 11002, 11004, 11006, 11008, 11010, 11012, 11014, 11016, 11018, 11020, 11022, 11024, 11026, 11028, 11030, 11032, 11034, 11036, 11038, 11040, 11042, 11044, 11046, 11048, 11050, 11052, 11054, 11056, 11058, 11060, 11062, 11064, 11066, 11068, 11070, 11072, 11074, 11076, 11078, 11080, 11082, 11084, 11086, 11088, 11090, 11092, 11094, 11096, 11098, 11100, 11102, 11104, 11106, 11108, 11110, 11112, 11114, 11116, 11118, 11120, 11122, 11124, 11126, 11128, 11130, 11132, 11134, 11136, 11138, 11140, 11142, 11144, 11146, 11148, 11150, 11152, 11154, 11156, 11158, 11160, 11162, 11164, 11166, 11168, 11170, 11172, 11174, 11176, 11178, 11180, 11182, 11184, 11186, 11188, 11190, 11192, 11194, 11196, 11198, 11200, 11202, 11204, 11206, 11208, 11210, 11212, 11214, 11216, 11218, 11220, 11222, 11224, 11226, 11228, 11230, 11232, 11234, 11236, 11238, 11240, 11242, 11244, 11246, 11248, 11250, 11252, 11254, 11256, 11258, 11260, 11262, 11264, 11266, 11268, 11270, 11272, 11274, 11276, 11278, 11280, 11282, 11284, 11286, 11288, 11290, 11292, 11294, 11296, 11298, 11300, 11302, 11304, 11306, 11308, 11310, 11312, 11314, 11316, 11318, 11320, 11322, 11324, 11326, 11328, 11330, 11332, 11334, 11336, 11338, 11340, 11342, 11344, 11346, 11348, 11350, 11352, 11354, 11356, 11358, 11360, 11362, 11364, 11366, 11368, 11370, 11372, 11374, 11376, 11378, 11380, 11382, 11384, 11386, 11388, 11390, 11392, 11394, 11396, 11398, 11400, 11402, 11404, 11406, 11408, 11410, 11412, 11414, 11416, 11418, 11420, 11422, 11424, 11426, 11428, 11430, 11432, 11434, 11436, 11438, 11440, 11442, 11444, 11446, 11448, 11450, 11452, 11454, 11456, 11458, 11460, 11462, 11464, 11466, 11468, 11470, 11472, 11474, 11476, 11478, 11480, 11482, 11484, 11486, 11488, 11490, 11492, 11494, 11496, 11498, 11500, 11502, 11504, 11506, 11508, 11510, 11512, 11514, 11516, 11518, 11520, 11522, 11524, 11526, 11528, 11530, 11532, 11534, 11536, 11538, 11540, 11542, 11544, 11546, 11548, 11550, 11552, 11554, 11556, 11558, 11560, 11562, 11564, 11566, 11568, 11570, 11572, 11574, 11576, 11578, 11580, 11582, 11584, 11586, 11588, 11590, 11592, 11594, 11596, 11598, 11600, 11602, 11604, 11606, 11608, 11610, 11612, 11614, 11616, 11618, 11620, 11622, 11624, 11626, 11628, 11630, 11632, 11634, 11636, 11638, 11640, 11642, 11644, 11646, 11648, 11650, 11652, 11654, 11656, 11658, 11660, 11662, 11664, 11666, 11668, 11670, 11672, 11674, 11676, 11678, 11680, 11682, 11684, 11686, 11688, 11690, 11692, 11694, 11696, 11698, 11700, 11702, 11704, 11706, 11708, 11710, 11712, 11714, 11716, 11718, 11720, 11722, 11724, 11726, 11728, 11730, 11732, 11734, 11736, 11738, 11740, 11742, 11744, 11746, 11748, 11750, 11752, 11754, 11756, 11758, 11760, 11762, 11764, 11766, 11768, 11770, 11772, 11774 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { 542, 0, -1, 543, -1, 518, 1127, -1, 519, 1255, -1, 520, 1256, -1, 521, 1256, -1, 522, 1256, -1, 543, 538, 544, -1, 544, -1, 545, -1, 950, -1, 779, -1, 970, -1, 965, -1, 966, -1, 846, -1, 973, -1, 792, -1, 714, -1, 717, -1, 722, -1, 735, -1, 894, -1, 563, -1, 922, -1, 924, -1, 930, -1, 925, -1, 929, -1, 745, -1, 693, -1, 971, -1, 591, -1, 918, -1, 611, -1, 934, -1, 560, -1, 558, -1, 936, -1, 684, -1, 976, -1, 975, -1, 743, -1, 982, -1, 550, -1, 589, -1, 614, -1, 979, -1, 820, -1, 586, -1, 615, -1, 753, -1, 685, -1, 781, -1, 907, -1, 978, -1, 972, -1, 711, -1, 718, -1, 731, -1, 736, -1, 862, -1, 562, -1, 688, -1, 794, -1, 801, -1, 931, -1, 802, -1, 744, -1, 701, -1, 565, -1, 692, -1, 630, -1, 935, -1, 681, -1, 708, -1, 911, -1, 755, -1, 775, -1, 551, -1, 557, -1, 740, -1, 959, -1, 1003, -1, 1035, -1, 782, -1, 1013, -1, 590, -1, 904, -1, 909, -1, 805, -1, 806, -1, 807, -1, 809, -1, 937, -1, 710, -1, 913, -1, 561, -1, 742, -1, 967, -1, 1001, -1, 996, -1, 825, -1, 829, -1, 840, -1, 737, -1, 851, -1, 1004, -1, 947, -1, 691, -1, 958, -1, 1015, -1, 1025, -1, 945, -1, 998, -1, 808, -1, 914, -1, 898, -1, 897, -1, 899, -1, 919, -1, 830, -1, 841, -1, 938, -1, 822, -1, 1039, -1, 949, -1, 818, -1, 948, -1, 1020, -1, 981, -1, 580, -1, 568, -1, 585, -1, 956, -1, -1, 1259, -1, -1, 815, -1, -1, 89, -1, -1, 65, -1, 374, -1, -1, 63, 1154, -1, 101, 380, 1252, 552, 553, -1, 492, -1, 516, -1, -1, 553, 556, -1, -1, 554, 555, -1, -1, 333, 1250, -1, 333, 12, -1, 333, 299, -1, 148, 333, 1250, -1, 148, 333, 12, -1, 464, 333, 1250, -1, 210, -1, 93, 255, 1251, -1, 475, 470, 1250, -1, 472, 1254, -1, 3, -1, 555, -1, 432, 1249, -1, 28, 1254, -1, 380, 1254, -1, 203, 380, 1254, -1, 203, 188, 1254, -1, 101, 472, 1252, 552, 553, -1, 33, 380, 1253, 552, 554, -1, 33, 472, 1253, 552, 554, -1, -1, 203, 116, 1244, -1, 33, 380, 1253, 559, 583, -1, 33, 380, 31, 559, 583, -1, 33, 472, 1253, 559, 583, -1, 33, 472, 31, 559, 583, -1, 142, 380, 1254, -1, 142, 380, 197, 159, 1254, -1, 142, 472, 1254, -1, 142, 472, 197, 159, 1254, -1, 142, 188, 1254, -1, 142, 188, 197, 159, 1254, -1, 101, 188, 1252, 552, 553, -1, 33, 188, 1253, 564, 472, 1254, -1, 27, -1, 142, -1, 101, 390, 546, 50, 1253, 566, -1, 101, 390, 1259, 566, -1, 101, 390, 197, 294, 159, 546, 50, 1253, 566, -1, 101, 390, 197, 294, 159, 1259, 566, -1, 566, 567, -1, -1, 630, -1, 851, -1, 692, -1, 755, -1, 829, -1, 956, -1, 403, 569, -1, 403, 258, 569, -1, 403, 401, 569, -1, 450, 953, -1, 401, 73, 40, 450, 953, -1, 571, -1, 572, 448, 573, -1, 572, 525, 573, -1, 572, 448, 122, -1, 572, 525, 122, -1, 570, -1, 572, 179, 105, -1, 446, 512, 577, -1, 69, 1250, -1, 390, 1250, -1, 390, 12, -1, 279, 578, -1, 380, 579, -1, 380, 12, -1, 401, 50, 579, -1, 401, 50, 12, -1, 401, 50, 122, -1, 498, 313, 1163, -1, 450, 412, 1250, -1, 1259, -1, 572, 537, 1259, -1, 574, -1, 573, 539, 574, -1, 576, -1, 699, -1, 12, -1, 356, 463, -1, 356, 87, -1, 369, 356, -1, 399, -1, 455, -1, 165, -1, 310, -1, 579, -1, 1250, -1, 12, -1, 3, -1, 1146, 1250, 1148, -1, 1146, 535, 1249, 536, 1250, -1, 699, -1, 122, -1, 258, -1, 1250, -1, 122, -1, -1, 1261, -1, 1250, -1, 372, 581, -1, 582, -1, 446, 512, -1, 450, 228, 253, -1, 401, 50, -1, 572, -1, 31, -1, 403, 569, -1, 580, -1, 403, 571, -1, 580, -1, 407, 572, -1, 407, 446, 512, -1, 407, 450, 228, 253, -1, 407, 401, 50, -1, 407, 31, -1, 403, 95, 587, 588, -1, 31, -1, 1241, -1, 125, -1, 199, -1, 75, -1, 136, 31, -1, 136, 440, -1, 136, 442, -1, 136, 337, -1, 136, 398, -1, 33, 435, 1098, 592, -1, 33, 435, 197, 159, 1098, 592, -1, 33, 435, 1098, 593, -1, 33, 435, 197, 159, 1098, 593, -1, 33, 435, 31, 203, 438, 1244, 403, 438, 1244, 1018, -1, 33, 435, 31, 203, 438, 1244, 325, 61, 1254, 403, 438, 1244, 1018, -1, 33, 208, 1242, 592, -1, 33, 208, 197, 159, 1242, 592, -1, 33, 208, 1242, 594, -1, 33, 208, 31, 203, 438, 1244, 403, 438, 1244, 1018, -1, 33, 208, 31, 203, 438, 1244, 325, 61, 1254, 403, 438, 1244, 1018, -1, 33, 397, 1242, 592, -1, 33, 397, 197, 159, 1242, 592, -1, 33, 485, 1242, 592, -1, 33, 485, 197, 159, 1242, 592, -1, 33, 268, 485, 1242, 592, -1, 33, 268, 485, 197, 159, 1242, 592, -1, 33, 268, 485, 31, 203, 438, 1244, 403, 438, 1244, 1018, -1, 33, 268, 485, 31, 203, 438, 1244, 325, 61, 1254, 403, 438, 1244, 1018, -1, 33, 175, 435, 1098, 592, -1, 33, 175, 435, 197, 159, 1098, 592, -1, 595, -1, 592, 539, 595, -1, 48, 331, 1242, 608, -1, 133, 331, 1242, 548, -1, 133, 331, 1242, 169, -1, 48, 331, 1242, -1, 27, 638, -1, 27, 197, 294, 159, 638, -1, 27, 82, 638, -1, 27, 82, 197, 294, 159, 638, -1, 33, 920, 1259, 596, -1, 33, 920, 1259, 142, 294, 299, -1, 33, 920, 1259, 403, 294, 299, -1, 33, 920, 1259, 403, 161, 40, 535, 1151, 536, -1, 33, 920, 1259, 142, 161, -1, 33, 920, 1259, 142, 161, 197, 159, -1, 33, 920, 1259, 403, 420, 606, -1, 33, 920, 1249, 403, 420, 606, -1, 33, 920, 1259, 403, 600, -1, 33, 920, 1259, 372, 600, -1, 33, 920, 1259, 403, 642, -1, 33, 920, 1259, 403, 640, -1, 33, 920, 1259, 27, 183, 648, 40, 196, 695, -1, 33, 920, 1259, 604, -1, 33, 920, 1259, 142, 196, -1, 33, 920, 1259, 142, 196, 197, 159, -1, 142, 920, 197, 159, 1259, 549, -1, 142, 920, 1259, 549, -1, 33, 920, 1259, 921, 458, 1127, 597, 598, -1, 33, 920, 1259, 725, -1, 27, 653, -1, 33, 94, 1244, 773, -1, 476, 94, 1244, -1, 142, 94, 197, 159, 1244, 549, -1, 142, 94, 1244, 549, -1, 403, 494, 307, -1, 78, 310, 1244, -1, 403, 494, 78, -1, 403, 264, -1, 403, 469, -1, 146, 453, 1244, -1, 146, 34, 453, 1244, -1, 146, 371, 453, 1244, -1, 146, 453, 31, -1, 146, 453, 472, -1, 135, 453, 1244, -1, 135, 453, 31, -1, 135, 453, 472, -1, 146, 387, 1244, -1, 146, 34, 387, 1244, -1, 146, 371, 387, 1244, -1, 135, 387, 1244, -1, 210, 1242, -1, 290, 210, 1242, -1, 304, 815, -1, 294, 304, -1, 326, 448, 1253, -1, 403, 25, 272, 607, -1, 403, 438, 1244, -1, 403, 600, -1, 372, 600, -1, 371, 196, 599, -1, 146, 385, 253, 395, -1, 135, 385, 253, 395, -1, 174, 385, 253, 395, -1, 290, 174, 385, 253, 395, -1, 725, -1, 403, 122, 1151, -1, 142, 122, -1, 80, 815, -1, -1, 473, 1151, -1, -1, 295, -1, 180, -1, 122, -1, 473, 208, 1244, -1, 535, 602, 536, -1, 492, 600, -1, -1, 603, -1, 602, 539, 603, -1, 1262, 525, 786, -1, 1262, -1, 1262, 537, 1262, 525, 786, -1, 1262, 537, 1262, -1, 605, -1, 604, 605, -1, 373, -1, 373, 552, 699, -1, 403, 697, -1, 403, 183, 648, -1, 1251, -1, 122, -1, 1259, -1, 122, -1, 173, 479, 492, 535, 610, 536, -1, 173, 479, 203, 535, 1190, 536, -1, 173, 479, 179, 535, 1190, 536, 448, 535, 1190, 536, -1, 122, -1, 1261, 1249, -1, 609, -1, 610, 539, 609, -1, 33, 458, 815, 612, -1, 613, -1, 612, 539, 613, -1, 27, 49, 1113, 549, -1, 142, 49, 197, 159, 1259, 549, -1, 142, 49, 1259, 549, -1, 33, 49, 1259, 921, 458, 1127, 597, 549, -1, 77, 1036, -1, 77, 31, -1, 99, 622, 1242, 658, 616, 617, 618, 623, 552, 619, 1109, -1, 99, 535, 1000, 536, 448, 617, 618, 552, 619, -1, 179, -1, 448, -1, 351, -1, -1, 1250, -1, 421, -1, 422, -1, 620, -1, 535, 625, 536, -1, 620, 621, -1, -1, 56, -1, 178, -1, 128, 974, 1250, -1, 299, 974, 1250, -1, 103, -1, 193, -1, 353, 974, 1250, -1, 152, 974, 1250, -1, 174, 353, 659, -1, 174, 353, 528, -1, 174, 294, 299, 659, -1, 174, 294, 299, 528, -1, 174, 299, 659, -1, 174, 299, 528, -1, 147, 1250, -1, 56, -1, -1, 624, 129, 1250, -1, -1, 473, -1, -1, 626, -1, 625, 539, 626, -1, 1262, 627, -1, 576, -1, 699, -1, 528, -1, 122, -1, 535, 628, 536, -1, -1, 629, -1, 628, 539, 629, -1, 576, -1, 101, 631, 435, 1242, 535, 632, 536, 670, 671, 675, 676, 677, 678, -1, 101, 631, 435, 197, 294, 159, 1242, 535, 632, 536, 670, 671, 675, 676, 677, 678, -1, 101, 631, 435, 1242, 304, 815, 633, 671, 675, 676, 677, 678, -1, 101, 631, 435, 197, 294, 159, 1242, 304, 815, 633, 671, 675, 676, 677, 678, -1, 101, 631, 435, 1242, 331, 304, 1242, 633, 608, 671, 675, 676, 677, 678, -1, 101, 631, 435, 197, 294, 159, 1242, 331, 304, 1242, 633, 608, 671, 675, 676, 677, 678, -1, 442, -1, 440, -1, 258, 442, -1, 258, 440, -1, 184, 442, -1, 184, 440, -1, 469, -1, -1, 634, -1, -1, 535, 635, 536, -1, -1, 636, -1, 634, 539, 636, -1, 637, -1, 635, 539, 637, -1, 638, -1, 650, -1, 653, -1, 639, -1, 653, -1, 1259, 1127, 643, 641, 723, 644, -1, 1259, 644, -1, 1259, 492, 314, 644, -1, 88, 1259, -1, 88, 122, -1, 640, -1, -1, 423, 1259, -1, 423, 122, -1, 642, -1, -1, 644, 645, -1, -1, 94, 1244, 646, -1, 646, -1, 649, -1, 80, 815, -1, 294, 299, -1, 299, -1, 466, 647, 891, 679, -1, 345, 242, 891, 679, -1, 74, 535, 1151, 536, 657, -1, 122, 1152, -1, 183, 648, 40, 196, 695, -1, 183, 648, 40, 535, 1151, 536, 424, -1, 362, 1242, 658, 662, 666, -1, 301, 137, -1, 301, 294, 137, -1, -1, 34, -1, 61, 122, -1, 124, -1, 294, 124, -1, 212, 125, -1, 212, 199, -1, 254, 1242, 651, -1, 651, 205, 652, -1, 651, 156, 652, -1, -1, 85, -1, 88, -1, 95, -1, 123, -1, 196, -1, 183, -1, 209, -1, 420, -1, 423, -1, 31, -1, 94, 1244, 654, -1, 654, -1, 74, 535, 1151, 536, 773, -1, 466, 647, 535, 659, 536, 661, 891, 679, 773, -1, 466, 680, 773, -1, 345, 242, 535, 659, 536, 661, 891, 679, 773, -1, 345, 242, 680, 773, -1, 155, 853, 535, 663, 536, 661, 891, 679, 665, 773, -1, 175, 242, 535, 659, 536, 362, 1242, 658, 662, 666, 773, -1, 94, 1244, 656, -1, 656, -1, 74, 535, 1151, 536, 773, -1, 294, 299, 773, -1, 290, 210, -1, -1, 535, 659, 536, -1, -1, 660, -1, 659, 539, 660, -1, 1259, -1, 204, 535, 659, 536, -1, -1, 266, 180, -1, 266, 330, -1, 266, 409, -1, -1, 664, -1, 663, 539, 664, -1, 856, 492, 901, -1, 856, 492, 312, 535, 901, 536, -1, 489, 535, 1151, 536, -1, -1, 667, -1, 668, -1, 667, 668, -1, 668, 667, -1, -1, 310, 471, 669, -1, 310, 127, 669, -1, 290, 26, -1, 374, -1, 65, -1, 403, 299, 658, -1, 403, 122, 658, -1, 211, 535, 1241, 536, -1, -1, 672, -1, -1, 331, 61, 1259, 535, 673, 536, -1, 674, -1, 673, 539, 674, -1, 1259, 859, 547, -1, 1156, 859, 547, -1, 535, 1151, 536, 859, 547, -1, 473, 1244, -1, -1, 492, 600, -1, 494, 307, -1, -1, 310, 86, 142, -1, 310, 86, 127, 386, -1, 310, 86, 342, 386, -1, -1, 438, 1244, -1, -1, 473, 208, 438, 1244, -1, -1, 473, 208, 1244, -1, 101, 420, 547, 992, 310, 682, 179, 1088, -1, 101, 420, 197, 294, 159, 815, 992, 310, 682, 179, 1088, -1, 683, -1, 682, 539, 683, -1, 1259, -1, 1156, -1, 535, 1151, 536, -1, 33, 420, 815, 403, 420, 606, -1, 33, 420, 197, 159, 815, 403, 420, 606, -1, 101, 631, 435, 686, 40, 1039, 687, -1, 101, 631, 435, 197, 294, 159, 686, 40, 1039, 687, -1, 1242, 658, 675, 676, 677, 678, -1, 492, 115, -1, 492, 290, 115, -1, -1, 101, 690, 268, 485, 689, 40, 1039, 687, -1, 101, 690, 268, 485, 197, 294, 159, 689, 40, 1039, 687, -1, 1242, 658, 675, 601, 678, -1, 469, -1, -1, 364, 268, 485, 548, 1242, 687, -1, 101, 631, 397, 1242, 694, -1, 101, 631, 397, 197, 294, 159, 1242, 694, -1, 33, 397, 1242, 696, -1, 33, 397, 197, 159, 1242, 696, -1, 696, -1, -1, 535, 696, 536, -1, -1, 697, -1, 696, 697, -1, 40, 1129, -1, 62, 699, -1, 114, -1, 290, 114, -1, 206, 698, 699, -1, 264, -1, 269, 699, -1, 274, 699, -1, 290, 269, -1, 290, 274, -1, 325, 61, 815, -1, 397, 278, 815, -1, 418, 552, 699, -1, 373, -1, 373, 552, 699, -1, 469, -1, 61, -1, -1, 5, -1, 526, 5, -1, 527, 5, -1, 1251, -1, 699, -1, 700, 539, 699, -1, 101, 863, 702, 707, 245, 1244, -1, 101, 863, 702, 707, 245, 1244, 191, 703, 704, 706, -1, 457, -1, -1, 1244, -1, 1244, 816, -1, 213, 703, -1, -1, 477, 703, -1, 290, 477, -1, 705, -1, -1, 348, -1, -1, 101, 438, 1244, 709, 261, 1250, 601, -1, 326, 1253, -1, -1, 142, 438, 1244, -1, 142, 438, 197, 159, 1244, -1, 101, 162, 1244, 552, 712, -1, 101, 162, 197, 294, 159, 1244, 552, 712, -1, 712, 713, -1, -1, 390, 1244, -1, 484, 579, -1, 179, 579, -1, 65, -1, 33, 162, 1244, 471, 715, -1, 715, 716, -1, -1, 448, 579, -1, 33, 162, 1244, 564, 811, 1244, -1, 33, 162, 1244, 564, 810, 815, -1, 33, 162, 1244, 564, 30, 879, -1, 33, 162, 1244, 564, 68, 535, 1127, 40, 1127, 536, -1, 33, 162, 1244, 564, 140, 1127, -1, 33, 162, 1244, 564, 181, 867, -1, 33, 162, 1244, 564, 312, 903, -1, 33, 162, 1244, 564, 312, 76, 815, 473, 1244, -1, 33, 162, 1244, 564, 312, 166, 815, 473, 1244, -1, 33, 162, 1244, 564, 349, 867, -1, 33, 162, 1244, 564, 383, 867, -1, 33, 162, 1244, 564, 451, 173, 1127, 245, 1244, -1, 33, 162, 1244, 564, 458, 1127, -1, 101, 175, 115, 496, 1244, 721, 723, -1, 191, 703, -1, 290, 191, -1, 477, 703, -1, 290, 477, -1, 719, -1, 720, 719, -1, 720, -1, -1, 33, 175, 115, 496, 1244, 721, 725, -1, 33, 175, 115, 496, 1244, 720, -1, 314, 535, 724, 536, -1, -1, 728, -1, 724, 539, 728, -1, 314, 535, 726, 536, -1, 727, -1, 726, 539, 727, -1, 728, -1, 403, 728, -1, 27, 728, -1, 142, 729, -1, 729, 730, -1, 1262, -1, 1250, -1, 101, 400, 1244, 732, 734, 175, 115, 496, 1244, 723, -1, 101, 400, 197, 294, 159, 1244, 732, 734, 175, 115, 496, 1244, 723, -1, 458, 1250, -1, -1, 484, 1250, -1, 484, 299, -1, 733, -1, -1, 33, 400, 1244, 733, 725, -1, 33, 400, 1244, 733, -1, 33, 400, 1244, 725, -1, 101, 175, 435, 1242, 535, 632, 536, 670, 400, 1244, 723, -1, 101, 175, 435, 197, 294, 159, 1242, 535, 632, 536, 670, 400, 1244, 723, -1, 101, 175, 435, 1242, 331, 304, 1242, 633, 608, 400, 1244, 723, -1, 101, 175, 435, 197, 294, 159, 1242, 331, 304, 1242, 633, 608, 400, 1244, 723, -1, 202, 175, 390, 1244, 739, 179, 400, 1244, 224, 1244, 723, -1, 255, 448, -1, 154, -1, 738, 535, 1100, 536, -1, -1, 101, 472, 265, 173, 741, 400, 1244, 723, -1, 101, 472, 265, 197, 294, 159, 173, 741, 400, 1244, 723, -1, 1253, -1, 472, -1, 142, 472, 265, 173, 741, 400, 1244, -1, 142, 472, 265, 197, 159, 173, 741, 400, 1244, -1, 33, 472, 265, 173, 741, 400, 1244, 725, -1, 101, 338, 1244, 310, 1242, 750, 751, 748, 746, 747, -1, 33, 338, 1244, 310, 1242, 749, 746, 747, -1, 473, 535, 1151, 536, -1, -1, 492, 74, 535, 1151, 536, -1, -1, 448, 1254, -1, -1, 448, 1254, -1, -1, 40, 3, -1, -1, 173, 752, -1, -1, 31, -1, 396, -1, 218, -1, 471, -1, 127, -1, 101, 25, 272, 1244, 458, 754, 191, 703, -1, 208, -1, 435, -1, 101, 863, 453, 1244, 756, 757, 310, 1242, 759, 765, 768, 158, 769, 1247, 535, 770, 536, -1, 101, 863, 94, 453, 1244, 29, 757, 310, 1242, 772, 773, 173, 143, 385, 768, 158, 769, 1247, 535, 770, 536, -1, 52, -1, 29, -1, 219, 304, -1, 758, -1, 757, 315, 758, -1, 218, -1, 127, -1, 471, -1, 471, 304, 659, -1, 456, -1, 363, 760, -1, -1, 761, -1, 760, 761, -1, 762, 763, 974, 764, -1, 284, -1, 308, -1, 435, -1, 385, -1, 1259, -1, 173, 766, 767, -1, -1, 143, -1, -1, 385, -1, 419, -1, 488, 535, 1151, 536, -1, -1, 181, -1, 349, -1, 771, -1, 770, 539, 771, -1, -1, 1249, -1, 5, -1, 1250, -1, 1262, -1, 179, 1242, -1, -1, -1, 773, 774, -1, 294, 124, -1, 124, -1, 212, 199, -1, 212, 125, -1, 294, 475, -1, 290, 210, -1, 101, 153, 453, 1244, 310, 1262, 158, 769, 1247, 535, 536, -1, 101, 153, 453, 1244, 310, 1262, 488, 776, 158, 769, 1247, 535, 536, -1, 777, -1, 776, 37, 777, -1, 1259, 203, 535, 778, 536, -1, 6, -1, 778, 539, 6, -1, 33, 153, 453, 1244, 780, -1, 146, -1, 146, 371, -1, 146, 34, -1, 135, -1, 101, 43, 815, 74, 535, 1151, 536, 773, -1, 101, 863, 30, 1247, 877, 783, -1, 101, 863, 30, 1247, 787, -1, 101, 312, 901, 783, -1, 101, 458, 815, 783, -1, 101, 458, 815, -1, 101, 458, 815, 40, 535, 1111, 536, -1, 101, 458, 815, 40, 150, 535, 790, 536, -1, 101, 458, 815, 40, 355, 783, -1, 101, 443, 393, 329, 815, 783, -1, 101, 443, 393, 134, 815, 783, -1, 101, 443, 393, 441, 815, 783, -1, 101, 443, 393, 91, 815, 783, -1, 101, 81, 815, 783, -1, 101, 81, 197, 294, 159, 815, 783, -1, 101, 81, 815, 179, 815, -1, 101, 81, 197, 294, 159, 815, 179, 815, -1, 535, 784, 536, -1, 785, -1, 784, 539, 785, -1, 1262, 525, 786, -1, 1262, -1, 874, -1, 1267, -1, 1188, -1, 699, -1, 1250, -1, 291, -1, 535, 788, 536, -1, 789, -1, 788, 539, 789, -1, 3, 525, 786, -1, 791, -1, -1, 1250, -1, 791, 539, 1250, -1, 33, 458, 815, 27, 478, 793, 1250, -1, 33, 458, 815, 27, 478, 793, 1250, 52, 1250, -1, 33, 458, 815, 27, 478, 793, 1250, 29, 1250, -1, 33, 458, 815, 368, 478, 1250, 448, 1250, -1, 33, 458, 815, 142, 478, 1250, -1, 197, 294, 159, -1, -1, 101, 312, 76, 815, 797, 173, 458, 1127, 473, 1244, 798, 40, 795, -1, 796, -1, 795, 539, 796, -1, 312, 1249, 901, 799, 800, -1, 312, 1249, 903, 799, 800, -1, 181, 1249, 867, -1, 181, 1249, 535, 1194, 536, 867, -1, 423, 1127, -1, 122, -1, -1, 166, 815, -1, -1, 173, 393, -1, 173, 316, 61, 815, -1, -1, 359, -1, -1, 101, 312, 166, 815, 473, 1244, -1, 33, 312, 166, 815, 473, 1244, 27, 795, -1, 33, 312, 166, 815, 473, 1244, 142, 803, -1, 804, -1, 803, 539, 804, -1, 312, 1249, 535, 1194, 536, -1, 181, 1249, 535, 1194, 536, -1, 142, 312, 76, 815, 473, 1244, 549, -1, 142, 312, 76, 197, 159, 815, 473, 1244, 549, -1, 142, 312, 166, 815, 473, 1244, 549, -1, 142, 312, 166, 197, 159, 815, 473, 1244, 549, -1, 142, 325, 61, 1254, 549, -1, 358, 325, 61, 1254, 448, 1253, -1, 142, 810, 197, 159, 814, 549, -1, 142, 810, 814, 549, -1, 142, 812, 197, 159, 1243, 549, -1, 142, 812, 1243, 549, -1, 142, 813, 1244, 310, 815, 549, -1, 142, 813, 197, 159, 1244, 310, 815, 549, -1, 142, 458, 817, 549, -1, 142, 458, 197, 159, 817, 549, -1, 142, 140, 817, 549, -1, 142, 140, 197, 159, 817, 549, -1, 142, 208, 89, 814, 549, -1, 142, 208, 89, 197, 159, 814, 549, -1, 435, -1, 397, -1, 485, -1, 268, 485, -1, 208, -1, 175, 435, -1, 81, -1, 98, -1, 420, -1, 443, 393, 329, -1, 443, 393, 134, -1, 443, 393, 441, -1, 443, 393, 91, -1, 812, -1, 116, -1, 380, -1, 428, -1, 438, -1, 25, 272, -1, 153, 453, -1, 162, -1, 175, 115, 496, -1, 707, 245, -1, 352, -1, 390, -1, 400, -1, 338, -1, 387, -1, 453, -1, 815, -1, 814, 539, 815, -1, 1259, -1, 1259, 816, -1, 537, 1245, -1, 816, 537, 1245, -1, 1127, -1, 817, 539, 1127, -1, 456, 1053, 1100, 819, 549, -1, 97, 196, -1, 373, 196, -1, -1, 84, 310, 810, 815, 226, 821, -1, 84, 310, 82, 815, 226, 821, -1, 84, 310, 811, 1244, 226, 821, -1, 84, 310, 458, 1127, 226, 821, -1, 84, 310, 140, 1127, 226, 821, -1, 84, 310, 30, 879, 226, 821, -1, 84, 310, 181, 867, 226, 821, -1, 84, 310, 312, 903, 226, 821, -1, 84, 310, 94, 1244, 310, 815, 226, 821, -1, 84, 310, 94, 1244, 310, 140, 815, 226, 821, -1, 84, 310, 813, 1244, 310, 815, 226, 821, -1, 84, 310, 349, 867, 226, 821, -1, 84, 310, 383, 867, 226, 821, -1, 84, 310, 451, 173, 1127, 245, 1244, 226, 821, -1, 84, 310, 312, 76, 815, 473, 1244, 226, 821, -1, 84, 310, 312, 166, 815, 473, 1244, 226, 821, -1, 84, 310, 246, 303, 699, 226, 821, -1, 84, 310, 68, 535, 1127, 40, 1127, 536, 226, 821, -1, 1250, -1, 299, -1, 395, 244, 823, 310, 810, 815, 226, 824, -1, 395, 244, 823, 310, 82, 815, 226, 824, -1, 395, 244, 823, 310, 811, 1244, 226, 824, -1, 395, 244, 823, 310, 458, 1127, 226, 824, -1, 395, 244, 823, 310, 140, 1127, 226, 824, -1, 395, 244, 823, 310, 30, 879, 226, 824, -1, 395, 244, 823, 310, 181, 867, 226, 824, -1, 395, 244, 823, 310, 246, 303, 699, 226, 824, -1, 395, 244, 823, 310, 349, 867, 226, 824, -1, 395, 244, 823, 310, 383, 867, 226, 824, -1, 173, 579, -1, -1, 1250, -1, 299, -1, 167, 826, -1, 277, 826, -1, 1036, -1, 827, 1036, -1, 285, 828, 1036, -1, 346, 828, 1036, -1, 170, 828, 1036, -1, 247, 828, 1036, -1, 24, 1251, 828, 1036, -1, 366, 1251, 828, 1036, -1, 1251, 828, 1036, -1, 31, 828, 1036, -1, 177, 828, 1036, -1, 177, 1251, 828, 1036, -1, 177, 31, 828, 1036, -1, 51, 828, 1036, -1, 51, 1251, 828, 1036, -1, 51, 31, 828, 1036, -1, 179, -1, 203, -1, 827, -1, -1, 185, 831, 310, 836, 448, 837, 839, 845, -1, 378, 831, 310, 836, 179, 837, 845, 549, -1, 378, 185, 313, 173, 831, 310, 836, 179, 837, 845, 549, -1, 832, -1, 31, -1, 31, 347, -1, 31, 535, 659, 536, -1, 31, 347, 535, 659, 536, -1, 833, -1, 832, 539, 833, -1, 396, 658, -1, 362, 658, -1, 101, 658, -1, 33, 433, -1, 1259, 658, -1, 835, -1, 834, 539, 835, -1, 1259, -1, 835, 537, 1259, -1, 1241, -1, 435, 1241, -1, 397, 1241, -1, 175, 115, 496, 1243, -1, 175, 400, 1243, -1, 181, 866, -1, 349, 866, -1, 383, 866, -1, 116, 1243, -1, 140, 814, -1, 245, 1243, -1, 246, 303, 700, -1, 328, 834, -1, 390, 1243, -1, 438, 1243, -1, 458, 814, -1, 31, 436, 203, 390, 1243, -1, 31, 398, 203, 390, 1243, -1, 31, 182, 203, 390, 1243, -1, 31, 350, 203, 390, 1243, -1, 31, 384, 203, 390, 1243, -1, 838, -1, 837, 539, 838, -1, 1253, -1, 188, 1253, -1, 492, 185, 313, -1, -1, 185, 832, 448, 1254, 845, -1, 185, 832, 448, 1254, 492, 842, 845, -1, 378, 832, 179, 1254, 845, 549, -1, 378, 1259, 313, 173, 832, 179, 1254, 845, 549, -1, 842, 539, 843, -1, 843, -1, 1262, 844, -1, 313, -1, 455, -1, 165, -1, 186, 61, 1253, -1, -1, 33, 122, 347, 847, 849, -1, 847, 848, -1, -1, 203, 390, 1243, -1, 173, 380, 1254, -1, 173, 472, 1254, -1, 185, 831, 310, 850, 448, 837, 839, -1, 378, 831, 310, 850, 179, 837, 549, -1, 378, 185, 313, 173, 831, 310, 850, 179, 837, 549, -1, 436, -1, 182, -1, 384, -1, 398, -1, 459, -1, 391, -1, 101, 852, 208, 548, 546, 310, 1098, 853, 535, 854, 536, 857, 647, 601, 678, 1109, -1, 101, 852, 208, 548, 197, 294, 159, 1244, 310, 1098, 853, 535, 854, 536, 857, 647, 601, 678, 1109, -1, 466, -1, -1, 473, 1244, -1, -1, 856, -1, 854, 539, 856, -1, 859, 547, 860, 861, -1, 859, 815, 600, 860, 861, -1, 1259, 855, -1, 1156, 855, -1, 535, 1151, 536, 855, -1, 204, 535, 858, 536, -1, -1, 856, -1, 858, 539, 856, -1, 80, 815, -1, -1, 41, -1, 132, -1, -1, 515, 170, -1, 515, 247, -1, -1, 101, 863, 181, 1247, 868, 377, 873, 881, 887, -1, 101, 863, 181, 1247, 868, 377, 435, 535, 893, 536, 881, 887, -1, 101, 863, 181, 1247, 868, 881, 887, -1, 101, 863, 349, 1247, 868, 881, 887, -1, 315, 370, -1, -1, 535, 865, 536, -1, 535, 536, -1, 870, -1, 865, 539, 870, -1, 867, -1, 866, 539, 867, -1, 1247, 864, -1, 1266, -1, 1259, -1, 1259, 1213, -1, 535, 869, 536, -1, 535, 536, -1, 875, -1, 869, 539, 875, -1, 871, 872, 874, -1, 872, 871, 874, -1, 872, 874, -1, 871, 874, -1, 874, -1, 203, -1, 319, -1, 215, -1, 203, 319, -1, 481, -1, 1260, -1, 874, -1, 1127, -1, 1260, 816, 530, 458, -1, 405, 1260, 816, 530, 458, -1, 870, -1, 870, 122, 1151, -1, 870, 525, 1151, -1, 870, -1, 535, 528, 536, -1, 535, 878, 536, -1, 535, 316, 61, 878, 536, -1, 535, 878, 316, 61, 878, 536, -1, 876, -1, 878, 539, 876, -1, 1247, 877, -1, 879, -1, 880, 539, 879, -1, 882, -1, -1, 884, -1, 882, 884, -1, 64, 310, 299, 216, -1, 377, 299, 310, 299, 216, -1, 425, -1, 200, -1, 416, -1, 487, -1, 163, 395, 126, -1, 163, 395, 225, -1, 395, 126, -1, 395, 225, -1, 250, -1, 294, 250, -1, 100, 699, -1, 386, 699, -1, 430, 815, -1, 584, -1, 327, 1259, -1, 40, 885, -1, 245, 579, -1, 451, 890, -1, 491, -1, 883, -1, 1250, -1, 1250, 539, 1250, -1, 375, 1151, -1, 886, -1, 53, 46, 888, 149, -1, -1, 888, 889, 538, -1, -1, 545, -1, 886, -1, 173, 458, 1127, -1, 890, 539, 173, 458, 1127, -1, 492, 783, -1, -1, 872, 874, -1, 892, -1, 893, 539, 892, -1, 33, 181, 867, 895, 896, -1, 33, 349, 867, 895, 896, -1, 33, 383, 867, 895, 896, -1, 883, -1, 895, 883, -1, 374, -1, -1, 142, 181, 866, 549, -1, 142, 181, 197, 159, 866, 549, -1, 142, 349, 866, 549, -1, 142, 349, 197, 159, 866, 549, -1, 142, 383, 866, 549, -1, 142, 383, 197, 159, 866, 549, -1, 142, 30, 880, 549, -1, 142, 30, 197, 159, 880, 549, -1, 142, 312, 902, 549, -1, 142, 312, 197, 159, 902, 549, -1, 535, 1127, 536, -1, 535, 1127, 539, 1127, 536, -1, 535, 291, 539, 1127, 536, -1, 535, 1127, 539, 291, 536, -1, 1185, -1, 1259, 537, 901, -1, 903, -1, 902, 539, 903, -1, 901, 900, -1, 138, 905, -1, 906, -1, 905, 906, -1, 1250, -1, 245, 579, -1, 101, 68, 535, 1127, 40, 1127, 536, 492, 181, 867, 908, -1, 101, 68, 535, 1127, 40, 1127, 536, 494, 181, 908, -1, 101, 68, 535, 1127, 40, 1127, 536, 492, 215, 908, -1, 40, 201, -1, 40, 44, -1, -1, 142, 68, 910, 535, 1127, 40, 1127, 536, 549, -1, 197, 159, -1, -1, 101, 863, 451, 173, 1127, 245, 1244, 535, 912, 536, -1, 179, 415, 492, 181, 867, 539, 448, 415, 492, 181, 867, -1, 448, 415, 492, 181, 867, 539, 179, 415, 492, 181, 867, -1, 179, 415, 492, 181, 867, -1, 448, 415, 492, 181, 867, -1, 142, 451, 910, 173, 1127, 245, 1244, 549, -1, 365, 917, 915, 548, 1242, -1, 365, 917, 390, 548, 1244, -1, 365, 917, 916, 548, 546, -1, 208, -1, 435, -1, 433, -1, 116, -1, 535, 983, 536, -1, -1, 33, 438, 1244, 403, 600, -1, 33, 438, 1244, 372, 600, -1, 33, 30, 879, 368, 448, 1244, -1, 33, 81, 815, 368, 448, 1244, -1, 33, 98, 815, 368, 448, 1244, -1, 33, 116, 1244, 368, 448, 1244, -1, 33, 140, 815, 368, 448, 1244, -1, 33, 140, 815, 368, 94, 1244, 448, 1244, -1, 33, 175, 115, 496, 1244, 368, 448, 1244, -1, 33, 181, 867, 368, 448, 1244, -1, 33, 188, 1252, 368, 448, 1252, -1, 33, 707, 245, 1244, 368, 448, 1244, -1, 33, 312, 76, 815, 473, 1244, 368, 448, 1244, -1, 33, 312, 166, 815, 473, 1244, 368, 448, 1244, -1, 33, 338, 1244, 310, 1242, 368, 448, 1244, -1, 33, 338, 197, 159, 1244, 310, 1242, 368, 448, 1244, -1, 33, 349, 867, 368, 448, 1244, -1, 33, 352, 1244, 368, 448, 1244, -1, 33, 383, 867, 368, 448, 1244, -1, 33, 390, 1244, 368, 448, 1244, -1, 33, 400, 1244, 368, 448, 1244, -1, 33, 428, 1244, 368, 448, 1244, -1, 33, 435, 1098, 368, 448, 1244, -1, 33, 435, 197, 159, 1098, 368, 448, 1244, -1, 33, 397, 1242, 368, 448, 1244, -1, 33, 397, 197, 159, 1242, 368, 448, 1244, -1, 33, 485, 1242, 368, 448, 1244, -1, 33, 485, 197, 159, 1242, 368, 448, 1244, -1, 33, 268, 485, 1242, 368, 448, 1244, -1, 33, 268, 485, 197, 159, 1242, 368, 448, 1244, -1, 33, 208, 1242, 368, 448, 1244, -1, 33, 208, 197, 159, 1242, 368, 448, 1244, -1, 33, 175, 435, 1098, 368, 448, 1244, -1, 33, 175, 435, 197, 159, 1098, 368, 448, 1244, -1, 33, 435, 1098, 368, 920, 1244, 448, 1244, -1, 33, 435, 197, 159, 1098, 368, 920, 1244, 448, 1244, -1, 33, 485, 1242, 368, 920, 1244, 448, 1244, -1, 33, 485, 197, 159, 1242, 368, 920, 1244, 448, 1244, -1, 33, 268, 485, 1242, 368, 920, 1244, 448, 1244, -1, 33, 268, 485, 197, 159, 1242, 368, 920, 1244, 448, 1244, -1, 33, 435, 1098, 368, 94, 1244, 448, 1244, -1, 33, 435, 197, 159, 1098, 368, 94, 1244, 448, 1244, -1, 33, 175, 435, 1098, 368, 920, 1244, 448, 1244, -1, 33, 175, 435, 197, 159, 1098, 368, 920, 1244, 448, 1244, -1, 33, 387, 1244, 310, 1242, 368, 448, 1244, -1, 33, 453, 1244, 310, 1242, 368, 448, 1244, -1, 33, 153, 453, 1244, 368, 448, 1244, -1, 33, 380, 1252, 368, 448, 1252, -1, 33, 472, 1252, 368, 448, 1252, -1, 33, 438, 1244, 368, 448, 1244, -1, 33, 420, 815, 368, 448, 1244, -1, 33, 443, 393, 329, 815, 368, 448, 1244, -1, 33, 443, 393, 134, 815, 368, 448, 1244, -1, 33, 443, 393, 441, 815, 368, 448, 1244, -1, 33, 443, 393, 91, 815, 368, 448, 1244, -1, 33, 458, 815, 368, 448, 1244, -1, 33, 458, 815, 368, 49, 1244, 448, 1244, 549, -1, 82, -1, -1, 403, 115, -1, -1, 33, 181, 867, 923, 130, 310, 162, 1244, -1, 33, 349, 867, 923, 130, 310, 162, 1244, -1, 33, 383, 867, 923, 130, 310, 162, 1244, -1, 33, 453, 1244, 310, 1242, 923, 130, 310, 162, 1244, -1, 33, 268, 485, 1242, 923, 130, 310, 162, 1244, -1, 33, 208, 1242, 923, 130, 310, 162, 1244, -1, 290, -1, -1, 33, 30, 879, 403, 390, 1244, -1, 33, 81, 815, 403, 390, 1244, -1, 33, 98, 815, 403, 390, 1244, -1, 33, 140, 815, 403, 390, 1244, -1, 33, 162, 1244, 403, 390, 1244, -1, 33, 181, 867, 403, 390, 1244, -1, 33, 312, 903, 403, 390, 1244, -1, 33, 312, 76, 815, 473, 1244, 403, 390, 1244, -1, 33, 312, 166, 815, 473, 1244, 403, 390, 1244, -1, 33, 349, 867, 403, 390, 1244, -1, 33, 383, 867, 403, 390, 1244, -1, 33, 435, 1098, 403, 390, 1244, -1, 33, 435, 197, 159, 1098, 403, 390, 1244, -1, 33, 420, 815, 403, 390, 1244, -1, 33, 443, 393, 329, 815, 403, 390, 1244, -1, 33, 443, 393, 134, 815, 403, 390, 1244, -1, 33, 443, 393, 441, 815, 403, 390, 1244, -1, 33, 443, 393, 91, 815, 403, 390, 1244, -1, 33, 397, 1242, 403, 390, 1244, -1, 33, 397, 197, 159, 1242, 403, 390, 1244, -1, 33, 485, 1242, 403, 390, 1244, -1, 33, 485, 197, 159, 1242, 403, 390, 1244, -1, 33, 268, 485, 1242, 403, 390, 1244, -1, 33, 268, 485, 197, 159, 1242, 403, 390, 1244, -1, 33, 175, 435, 1098, 403, 390, 1244, -1, 33, 175, 435, 197, 159, 1098, 403, 390, 1244, -1, 33, 458, 815, 403, 390, 1244, -1, 33, 312, 903, 403, 535, 926, 536, -1, 927, -1, 926, 539, 927, -1, 1262, 525, 291, -1, 1262, 525, 928, -1, 1262, -1, 874, -1, 1267, -1, 1188, -1, 699, -1, 1250, -1, 33, 458, 815, 403, 535, 926, 536, -1, 33, 30, 879, 326, 448, 1253, -1, 33, 81, 815, 326, 448, 1253, -1, 33, 98, 815, 326, 448, 1253, -1, 33, 116, 1244, 326, 448, 1253, -1, 33, 140, 815, 326, 448, 1253, -1, 33, 181, 867, 326, 448, 1253, -1, 33, 707, 245, 1244, 326, 448, 1253, -1, 33, 246, 303, 699, 326, 448, 1253, -1, 33, 312, 903, 326, 448, 1253, -1, 33, 312, 76, 815, 473, 1244, 326, 448, 1253, -1, 33, 312, 166, 815, 473, 1244, 326, 448, 1253, -1, 33, 349, 867, 326, 448, 1253, -1, 33, 383, 867, 326, 448, 1253, -1, 33, 390, 1244, 326, 448, 1253, -1, 33, 458, 815, 326, 448, 1253, -1, 33, 438, 1244, 326, 448, 1253, -1, 33, 420, 815, 326, 448, 1253, -1, 33, 443, 393, 134, 815, 326, 448, 1253, -1, 33, 443, 393, 91, 815, 326, 448, 1253, -1, 33, 175, 115, 496, 1244, 326, 448, 1253, -1, 33, 400, 1244, 326, 448, 1253, -1, 33, 153, 453, 1244, 326, 448, 1253, -1, 33, 352, 1244, 326, 448, 1253, -1, 33, 428, 1244, 326, 448, 1253, -1, 101, 352, 1244, 891, -1, 101, 352, 1244, 173, 31, 436, 891, -1, 101, 352, 1244, 173, 933, 891, -1, 435, 1098, 658, 665, -1, 436, 203, 390, 1259, -1, 436, 203, 390, 109, -1, 1259, 658, 665, -1, 1259, 1213, 658, 665, -1, 1099, 658, 665, -1, 109, -1, 932, -1, 933, 539, 932, -1, 33, 352, 1244, 403, 783, -1, 33, 352, 1244, 27, 933, -1, 33, 352, 1244, 403, 933, -1, 33, 352, 1244, 142, 933, -1, 101, 428, 1244, 93, 1250, 352, 1243, 891, -1, 33, 428, 1244, 403, 783, -1, 33, 428, 1244, 93, 1250, -1, 33, 428, 1244, 364, 352, 891, -1, 33, 428, 1244, 27, 352, 1243, 891, -1, 33, 428, 1244, 142, 352, 1243, 891, -1, 33, 428, 1244, 403, 352, 1243, 891, -1, 33, 428, 1244, 146, -1, 33, 428, 1244, 135, -1, 33, 428, 1244, 410, 783, -1, 142, 428, 1244, 549, -1, 142, 428, 197, 159, 1244, 549, -1, 101, 863, 387, 1244, 40, 310, 943, 448, 1242, 1109, 138, 944, 939, -1, 295, -1, 941, -1, 535, 940, 536, -1, 940, 538, 942, -1, 942, -1, 1039, -1, 1004, -1, 1020, -1, 1013, -1, 945, -1, 941, -1, -1, 396, -1, 471, -1, 127, -1, 218, -1, 219, -1, 32, -1, -1, 296, 1259, 946, -1, 539, 1250, -1, -1, 256, 1259, -1, 468, 1259, -1, 468, 528, -1, 22, 951, 955, -1, 418, 450, 954, -1, 86, 951, 955, -1, 381, 951, 955, -1, 388, 1259, -1, 367, 388, 1259, -1, 367, 1259, -1, 381, 951, 448, 388, 1259, -1, 381, 951, 448, 1259, -1, 343, 450, 1250, -1, 86, 344, 1250, -1, 381, 344, 1250, -1, 53, 951, 954, -1, 149, 951, 955, -1, 495, -1, 450, -1, -1, 228, 253, 575, -1, 356, 311, -1, 356, 497, -1, 124, -1, 294, 124, -1, 952, -1, 953, 539, 952, -1, 953, 952, -1, 953, -1, -1, 37, 70, -1, 37, 290, 70, -1, -1, 101, 631, 485, 1242, 658, 601, 40, 1039, 957, -1, 101, 315, 370, 631, 485, 1242, 658, 601, 40, 1039, 957, -1, 101, 631, 360, 485, 1242, 535, 659, 536, 601, 40, 1039, 957, -1, 101, 315, 370, 631, 360, 485, 1242, 535, 659, 536, 601, 40, 1039, 957, -1, 492, 74, 313, -1, 492, 66, 74, 313, -1, 492, 258, 74, 313, -1, -1, 257, 1246, -1, 101, 116, 1244, 552, 960, -1, 961, -1, -1, 962, -1, 961, 962, -1, 963, 964, 699, -1, 963, 964, 576, -1, 963, 964, 122, -1, 3, -1, 93, 255, -1, 147, -1, 261, -1, 326, -1, 438, -1, 441, -1, 525, -1, -1, 33, 116, 1244, 492, 960, -1, 33, 116, 1244, 960, -1, 33, 116, 1244, 403, 438, 1244, -1, 33, 116, 1244, 364, 81, 484, -1, 33, 116, 1244, 583, -1, 142, 116, 1244, -1, 142, 116, 197, 159, 1244, -1, 142, 116, 1244, 552, 535, 968, 536, -1, 142, 116, 197, 159, 1244, 552, 535, 968, 536, -1, 969, -1, 968, 539, 969, -1, 174, -1, 33, 81, 815, 364, 484, -1, 33, 433, 403, 570, -1, 33, 433, 372, 582, -1, 101, 140, 815, 974, 1127, 644, -1, 33, 140, 815, 596, -1, 33, 140, 815, 142, 294, 299, -1, 33, 140, 815, 403, 294, 299, -1, 33, 140, 815, 27, 655, -1, 33, 140, 815, 142, 94, 1244, 549, -1, 33, 140, 815, 142, 94, 197, 159, 1244, 549, -1, 33, 140, 815, 476, 94, 1244, -1, 40, -1, -1, 33, 443, 393, 134, 815, 783, -1, 33, 443, 393, 91, 815, 27, 265, 173, 1243, 977, 814, -1, 33, 443, 393, 91, 815, 33, 265, 173, 1243, 977, 814, -1, 33, 443, 393, 91, 815, 33, 265, 370, 815, 977, 815, -1, 33, 443, 393, 91, 815, 33, 265, 173, 1243, 370, 815, 977, 815, -1, 33, 443, 393, 91, 815, 142, 265, 173, 1243, -1, 33, 443, 393, 91, 815, 142, 265, 197, 159, 173, 1243, -1, 492, -1, 516, -1, 101, 797, 98, 815, 173, 1250, 448, 1250, 179, 815, -1, 78, 535, 983, 536, 1242, 980, -1, 78, 535, 983, 536, -1, 78, 989, 1242, 980, -1, 78, 989, -1, 78, 989, 1244, 310, 1242, -1, 473, 1244, -1, -1, 474, 990, 991, 989, 988, 995, -1, 474, 535, 983, 536, 995, -1, 984, 989, 995, -1, 984, 535, 983, 536, 995, -1, 985, -1, 983, 539, 985, -1, 36, -1, 35, -1, 986, 987, -1, 1261, -1, 984, -1, 513, -1, 576, -1, 699, -1, -1, 984, -1, -1, 483, -1, -1, 180, -1, -1, 178, -1, -1, 535, 1243, 536, -1, -1, 1242, 992, -1, 993, -1, 994, 539, 993, -1, 994, -1, -1, 160, 997, -1, 160, 984, 989, 997, -1, 160, 483, 997, -1, 160, 535, 983, 536, 997, -1, 1039, -1, 1004, -1, 1020, -1, 1013, -1, 1025, -1, 1035, -1, 685, -1, 688, -1, 691, -1, 1001, -1, 343, 1244, 999, 40, 1000, -1, 535, 1194, 536, -1, -1, 1039, -1, 1004, -1, 1020, -1, 1013, -1, 1025, -1, 158, 1244, 1002, -1, 101, 631, 435, 686, 40, 158, 1244, 1002, 687, -1, 101, 631, 435, 197, 294, 159, 686, 40, 158, 1244, 1002, 687, -1, 535, 1190, 536, -1, -1, 118, 1244, -1, 118, 343, 1244, -1, 118, 31, -1, 118, 343, 31, -1, 1050, 218, 224, 1005, 1006, 1010, 1012, -1, 1242, -1, 1242, 40, 1259, -1, 1039, -1, 324, 1007, 478, 1039, -1, 535, 1008, 536, 1039, -1, 535, 1008, 536, 324, 1007, 478, 1039, -1, 122, 479, -1, 472, -1, 433, -1, 1009, -1, 1008, 539, 1009, -1, 1259, 1214, -1, 310, 92, 1011, 138, 471, 403, 1021, 1109, -1, 310, 92, 1011, 138, 295, -1, -1, 535, 854, 536, 1109, -1, 310, 94, 1244, -1, -1, 376, 1239, -1, -1, 1050, 127, 179, 1101, 1014, 1110, 1012, -1, 473, 1088, -1, -1, 262, 1053, 1100, 1016, 1018, -1, 203, 1017, 275, -1, -1, 25, 406, -1, 385, 406, -1, 385, 157, -1, 406, 471, 157, -1, 406, -1, 406, 385, 157, -1, 157, -1, 25, 157, -1, 298, -1, -1, 298, -1, 410, 263, -1, -1, 1050, 471, 1101, 403, 1021, 1087, 1110, 1012, -1, 1022, -1, 1021, 539, 1022, -1, 1023, 525, 1151, -1, 535, 1024, 536, 525, 1151, -1, 1259, 1214, -1, 1023, -1, 1024, 539, 1023, -1, 1050, 270, 224, 1101, 473, 1089, 310, 1151, 1026, 1012, -1, 1027, -1, 1026, 1027, -1, 1028, 1030, 444, 1031, -1, 1028, 1030, 444, 1032, -1, 1029, 1030, 444, 1033, -1, 1028, 1030, 444, 138, 295, -1, 1029, 1030, 444, 138, 295, -1, 488, 267, -1, 488, 294, 267, 61, 414, -1, 488, 294, 267, -1, 488, 294, 267, 61, 439, -1, 37, 1151, -1, -1, 471, 403, 1021, -1, 127, -1, 218, 1034, -1, 218, 324, 1007, 478, 1034, -1, 218, 535, 1008, 536, 1034, -1, 218, 535, 1008, 536, 324, 1007, 478, 1034, -1, 218, 122, 479, -1, 479, 535, 1190, 536, -1, 121, 1036, 1037, 113, 1038, 173, 1039, -1, 1244, -1, -1, 1037, 290, 392, -1, 1037, 392, -1, 1037, 56, -1, 1037, 42, -1, 1037, 217, -1, -1, 492, 194, -1, 494, 194, -1, 1041, -1, 1040, -1, 535, 1041, 536, -1, 535, 1040, 536, -1, 1043, -1, 1042, 1059, -1, 1042, 1058, 1080, 1063, -1, 1042, 1058, 1062, 1081, -1, 1044, 1042, -1, 1044, 1042, 1059, -1, 1044, 1042, 1058, 1080, 1063, -1, 1044, 1042, 1058, 1062, 1081, -1, 1043, -1, 1040, -1, 396, 1056, 1238, 1051, 1087, 1109, 1072, 1079, 1170, -1, 396, 1055, 1239, 1051, 1087, 1109, 1072, 1079, 1170, -1, 1086, -1, 435, 1098, -1, 1042, 465, 1054, 1042, -1, 1042, 222, 1054, 1042, -1, 1042, 154, 1054, 1042, -1, 492, 1045, -1, 516, 1045, -1, 492, 360, 1045, -1, 1046, -1, 1045, 539, 1046, -1, 1244, 992, 40, 1047, 535, 1000, 536, 1048, 1049, -1, 268, -1, 294, 268, -1, -1, 393, 131, 170, 61, 659, 403, 1259, -1, 393, 60, 170, 61, 659, 403, 1259, -1, -1, 114, 659, 403, 1259, 448, 1248, 122, 1248, 473, 1259, -1, 114, 659, 403, 1259, 473, 1259, -1, -1, 1044, -1, -1, 224, 1052, -1, -1, 442, 1053, 1242, -1, 440, 1053, 1242, -1, 258, 442, 1053, 1242, -1, 258, 440, 1053, 1242, -1, 184, 442, 1053, 1242, -1, 184, 440, 1053, 1242, -1, 469, 1053, 1242, -1, 435, 1242, -1, 1242, -1, 435, -1, -1, 31, -1, 137, -1, -1, 137, -1, 137, 310, 535, 1190, 536, -1, 31, -1, -1, 1055, -1, 1056, -1, 1059, -1, -1, 316, 61, 1060, -1, 1061, -1, 1060, 539, 1061, -1, 1151, 473, 1188, 861, -1, 1151, 860, 861, -1, 1064, 1065, -1, 1065, 1064, -1, 1064, -1, 1065, -1, 1062, -1, -1, 255, 1066, -1, 255, 1066, 539, 1067, -1, 167, 1071, 1068, 1070, 311, -1, 167, 1071, 1068, 1070, 492, 445, -1, 167, 1071, 1070, 311, -1, 167, 1071, 1070, 492, 445, -1, 306, 1067, -1, 306, 1068, 1070, -1, 1151, -1, 31, -1, 1151, -1, 1153, -1, 526, 1069, -1, 527, 1069, -1, 1249, -1, 5, -1, 385, -1, 386, -1, 170, -1, 285, -1, 188, 61, 1054, 1073, -1, -1, 1074, -1, 1073, 539, 1074, -1, 1151, -1, 1075, -1, 1077, -1, 1076, -1, 1078, -1, 535, 536, -1, 382, 535, 1190, 536, -1, 104, 535, 1190, 536, -1, 189, 404, 535, 1073, 536, -1, 192, 1151, -1, -1, 1082, -1, 173, 356, 311, -1, 1080, -1, -1, 1083, -1, 1082, 1083, -1, 1084, 1085, 1019, -1, 173, 471, -1, 173, 290, 242, 471, -1, 173, 406, -1, 173, 242, 406, -1, 304, 1241, -1, -1, 479, 535, 1190, 536, -1, 1086, 539, 535, 1190, 536, -1, 179, 1088, -1, -1, 1089, -1, 1088, 539, 1089, -1, 1098, 1092, -1, 1098, 1092, 1102, -1, 1104, 1094, -1, 248, 1104, 1094, -1, 1114, 1092, -1, 248, 1114, 1092, -1, 1040, 1092, -1, 248, 1040, 1092, -1, 1090, -1, 535, 1090, 536, 1091, -1, 1121, 1092, -1, 248, 1121, 1092, -1, 535, 1090, 536, -1, 1089, 102, 229, 1089, -1, 1089, 1095, 229, 1089, 1097, -1, 1089, 229, 1089, 1097, -1, 1089, 281, 1095, 229, 1089, -1, 1089, 281, 229, 1089, -1, 40, 1259, 535, 1243, 536, -1, 40, 1259, -1, 1259, 535, 1243, 536, -1, 1259, -1, 1091, -1, -1, 40, 1259, -1, -1, 1091, -1, 40, 535, 1112, 536, -1, 40, 1259, 535, 1112, 536, -1, 1259, 535, 1112, 536, -1, -1, 180, 1096, -1, 252, 1096, -1, 379, 1096, -1, 214, -1, 320, -1, -1, 473, 535, 1243, 536, 1093, -1, 310, 1151, -1, 1242, -1, 1099, -1, 1242, 528, -1, 311, 1242, -1, 311, 535, 1242, 536, -1, 1098, -1, 1100, 539, 1098, -1, 1098, -1, 1098, 1259, -1, 1098, 40, 1259, -1, 437, 1247, 535, 1190, 536, 1103, -1, 369, 535, 1151, 536, -1, -1, 1156, 1108, -1, 386, 179, 535, 1106, 536, 1108, -1, 1156, 1107, -1, 1105, -1, 1106, 539, 1105, -1, 40, 535, 1112, 536, -1, -1, 516, 317, -1, -1, 489, 1151, -1, -1, 489, 1151, -1, 489, 105, 304, 1036, -1, -1, 1112, -1, -1, 1113, -1, 1112, 539, 1113, -1, 1259, 1127, 597, -1, 509, 535, 1153, 1166, 83, 1115, 536, -1, 509, 535, 504, 535, 1119, 536, 539, 1153, 1166, 83, 1115, 536, -1, 1116, -1, 1115, 539, 1116, -1, 1259, 1127, -1, 1259, 1127, 1117, -1, 1259, 173, 317, -1, 1118, -1, 1117, 1118, -1, 3, 1152, -1, 122, 1152, -1, 294, 299, -1, 299, -1, 334, 1152, -1, 1120, -1, 1119, 539, 1120, -1, 1152, 40, 1262, -1, 122, 1152, -1, 239, 535, 1224, 539, 1151, 1122, 1216, 83, 535, 1123, 536, 1223, 536, -1, 40, 1244, -1, -1, 1124, -1, 1123, 539, 1124, -1, 1259, 173, 317, -1, 1259, 1127, 1126, 1219, 1227, 1222, -1, 1259, 1127, 1225, 1126, 1219, 1227, 1222, -1, 1259, 1127, 159, 1126, 1223, -1, 283, 1125, 1250, 83, 535, 1123, 536, -1, 283, 1125, 1250, 40, 1244, 83, 535, 1123, 536, -1, 334, -1, -1, 334, 1250, -1, -1, 1129, 1128, -1, 405, 1129, 1128, -1, 1129, 39, 533, 1249, 534, -1, 405, 1129, 39, 533, 1249, 534, -1, 1129, 39, -1, 405, 1129, 39, -1, 1128, 533, 534, -1, 1128, 533, 1249, 534, -1, -1, 1131, -1, 1133, -1, 1135, -1, 1139, -1, 1145, -1, 1146, 1148, -1, 1146, 535, 1249, 536, -1, 1150, -1, 1133, -1, 1136, -1, 1140, -1, 1145, -1, 1150, -1, 1260, 1132, -1, 1260, 816, 1132, -1, 535, 1190, 536, -1, -1, 220, -1, 221, -1, 411, -1, 55, -1, 357, -1, 171, 1134, -1, 141, 341, -1, 120, 1132, -1, 119, 1132, -1, 302, 1132, -1, 58, -1, 535, 1249, 536, -1, -1, 1137, -1, 1138, -1, 1137, -1, 1138, -1, 57, 1144, 535, 1190, 536, -1, 57, 1144, -1, 1141, -1, 1142, -1, 1141, -1, 1142, -1, 1143, 535, 1249, 536, -1, 1143, -1, 72, 1144, -1, 71, 1144, -1, 480, -1, 280, 72, 1144, -1, 280, 71, 1144, -1, 282, 1144, -1, 482, -1, -1, 447, 535, 1249, 536, 1147, -1, 447, 1147, -1, 446, 535, 1249, 536, 1147, -1, 446, 1147, -1, 223, -1, 516, 446, 512, -1, 517, 446, 512, -1, -1, 510, -1, 276, -1, 117, -1, 195, -1, 273, -1, 1149, -1, 510, 448, 276, -1, 117, 448, 195, -1, 117, 448, 273, -1, 117, 448, 1149, -1, 195, 448, 273, -1, 195, 448, 1149, -1, 273, 448, 1149, -1, -1, 394, -1, 394, 535, 1249, 536, -1, 230, -1, 1153, -1, 1151, 13, 1127, -1, 1151, 80, 815, -1, 1151, 47, 446, 512, 1151, -1, 1151, 47, 258, -1, 526, 1151, -1, 527, 1151, -1, 1151, 526, 1151, -1, 1151, 527, 1151, -1, 1151, 528, 1151, -1, 1151, 529, 1151, -1, 1151, 530, 1151, -1, 1151, 531, 1151, -1, 1151, 523, 1151, -1, 1151, 524, 1151, -1, 1151, 525, 1151, -1, 1151, 17, 1151, -1, 1151, 18, 1151, -1, 1151, 19, 1151, -1, 1151, 1187, 1151, -1, 1187, 1151, -1, 1151, 37, 1151, -1, 1151, 315, 1151, -1, 294, 1151, -1, 514, 1151, -1, 1151, 254, 1151, -1, 1151, 254, 1151, 152, 1151, -1, 1151, 514, 254, 1151, -1, 1151, 514, 254, 1151, 152, 1151, -1, 1151, 198, 1151, -1, 1151, 198, 1151, 152, 1151, -1, 1151, 514, 198, 1151, -1, 1151, 514, 198, 1151, 152, 1151, -1, 1151, 408, 448, 1151, -1, 1151, 408, 448, 1151, 152, 1151, -1, 1151, 514, 408, 448, 1151, -1, 1151, 514, 408, 448, 1151, 152, 1151, -1, 1151, 226, 299, -1, 1151, 227, -1, 1151, 226, 294, 299, -1, 1151, 297, -1, 1181, 322, 1181, -1, 1151, 226, 455, -1, 1151, 226, 294, 455, -1, 1151, 226, 165, -1, 1151, 226, 294, 165, -1, 1151, 226, 467, -1, 1151, 226, 294, 467, -1, 1151, 226, 137, 179, 1151, -1, 1151, 226, 294, 137, 179, 1151, -1, 1151, 54, 1215, 1152, 37, 1151, -1, 1151, 514, 54, 1215, 1152, 37, 1151, -1, 1151, 54, 431, 1152, 37, 1151, -1, 1151, 514, 54, 431, 1152, 37, 1151, -1, 1151, 203, 1204, -1, 1151, 514, 203, 1204, -1, 1151, 1189, 1184, 1040, -1, 1151, 1189, 1184, 535, 1151, 536, -1, 466, 647, 1040, -1, 1151, 226, 139, -1, 1151, 226, 294, 139, -1, 1151, 226, 293, -1, 1151, 226, 1199, 293, -1, 1151, 226, 294, 293, -1, 1151, 226, 294, 1199, 293, -1, 1151, 226, 1229, 1230, -1, 1151, 226, 294, 1229, 1230, -1, 122, -1, 1153, -1, 1152, 13, 1127, -1, 526, 1152, -1, 527, 1152, -1, 1152, 526, 1152, -1, 1152, 527, 1152, -1, 1152, 528, 1152, -1, 1152, 529, 1152, -1, 1152, 530, 1152, -1, 1152, 531, 1152, -1, 1152, 523, 1152, -1, 1152, 524, 1152, -1, 1152, 525, 1152, -1, 1152, 17, 1152, -1, 1152, 18, 1152, -1, 1152, 19, 1152, -1, 1152, 1187, 1152, -1, 1187, 1152, -1, 1152, 226, 137, 179, 1152, -1, 1152, 226, 294, 137, 179, 1152, -1, 1152, 226, 139, -1, 1152, 226, 294, 139, -1, 1210, -1, 1248, -1, 12, 1214, -1, 535, 1151, 536, 1214, -1, 1205, -1, 1155, -1, 1040, -1, 1040, 1213, -1, 159, 1040, -1, 39, 1040, -1, 39, 1195, -1, 1182, -1, 1183, -1, 189, 535, 1190, 536, -1, 1247, 535, 536, -1, 1247, 535, 1191, 1058, 536, -1, 1247, 535, 481, 1192, 1058, 536, -1, 1247, 535, 1191, 539, 481, 1192, 1058, 536, -1, 1247, 535, 31, 1191, 1058, 536, -1, 1247, 535, 137, 1191, 1058, 536, -1, 1247, 535, 528, 536, -1, 1154, 1168, 1169, 1173, -1, 1236, 1169, 1173, -1, 1157, -1, 1154, -1, 1157, -1, 1236, -1, 81, 173, 535, 1151, 536, -1, 107, -1, 110, -1, 110, 535, 1249, 536, -1, 111, -1, 111, 535, 1249, 536, -1, 259, -1, 259, 535, 1249, 536, -1, 260, -1, 260, 535, 1249, 536, -1, 108, -1, 112, -1, 402, -1, 434, -1, 472, -1, 106, -1, 109, -1, 68, 535, 1151, 40, 1127, 536, -1, 164, 535, 1197, 536, -1, 292, 535, 1151, 536, -1, 292, 535, 1151, 539, 1199, 536, -1, 323, 535, 1200, 536, -1, 323, 535, 1193, 536, -1, 339, 535, 1201, 536, -1, 429, 535, 1202, 536, -1, 429, 535, 1193, 536, -1, 452, 535, 1151, 40, 1127, 536, -1, 454, 535, 59, 1203, 536, -1, 454, 535, 249, 1203, 536, -1, 454, 535, 449, 1203, 536, -1, 454, 535, 1203, 536, -1, 300, 535, 1151, 539, 1151, 536, -1, 79, 535, 1190, 536, -1, 187, 535, 1190, 536, -1, 251, 535, 1190, 536, -1, 500, 535, 1190, 536, -1, 501, 535, 278, 1262, 536, -1, 501, 535, 278, 1262, 539, 1160, 536, -1, 501, 535, 278, 1262, 539, 1190, 536, -1, 501, 535, 278, 1262, 539, 1160, 539, 1190, 536, -1, 502, 535, 1153, 1166, 536, -1, 503, 535, 1161, 536, -1, 505, 535, 1163, 1151, 1165, 536, -1, 506, 535, 278, 1262, 536, -1, 506, 535, 278, 1262, 539, 1151, 536, -1, 507, 535, 1151, 539, 1158, 1159, 536, -1, 508, 535, 1163, 1151, 40, 1129, 1164, 536, -1, 234, 535, 1191, 536, -1, 234, 535, 1231, 1233, 1230, 1228, 536, -1, 234, 535, 1228, 536, -1, 231, 535, 1235, 1234, 1228, 536, -1, 231, 535, 1041, 1226, 1228, 536, -1, 231, 535, 1228, 536, -1, 230, 535, 1224, 1230, 536, -1, 237, 535, 1151, 536, -1, 238, 535, 1224, 1228, 536, -1, 271, 535, 536, -1, 236, 535, 1224, 539, 1151, 1216, 1228, 1219, 1227, 1222, 536, -1, 233, 535, 1224, 539, 1151, 1216, 1223, 536, -1, 240, 535, 1224, 539, 1151, 1216, 1228, 1222, 536, -1, 484, 1151, -1, 484, 290, 478, -1, 539, 417, 511, -1, 539, 417, 290, -1, 539, 417, 290, 478, -1, -1, 499, 535, 1161, 536, -1, 1162, -1, 1161, 539, 1162, -1, 1151, 40, 1262, -1, 1151, -1, 139, -1, 96, -1, 207, -1, 290, 207, -1, -1, 342, 490, -1, 427, 490, -1, -1, 332, 1153, -1, 332, 1153, 1167, -1, 332, 1167, 1153, -1, 332, 1167, 1153, 1167, -1, 61, 361, -1, 61, 478, -1, 493, 188, 535, 1059, 536, -1, -1, 168, 535, 489, 1151, 536, -1, -1, 491, 1171, -1, -1, 1172, -1, 1171, 539, 1172, -1, 1259, 40, 1174, -1, 321, 1174, -1, 321, 1259, -1, -1, 535, 1175, 1176, 1058, 1177, 536, -1, 1259, -1, -1, 331, 61, 1190, -1, -1, 355, 1178, 1180, -1, 386, 1178, 1180, -1, 190, 1178, 1180, -1, -1, 1179, -1, 54, 1179, 37, 1179, -1, 461, 340, -1, 461, 172, -1, 105, 385, -1, 1151, 340, -1, 1151, 172, -1, 155, 105, 385, -1, 155, 188, -1, 155, 445, -1, 155, 290, 318, -1, -1, 385, 535, 1190, 536, -1, 385, 535, 536, -1, 535, 1190, 539, 1151, 536, -1, 385, 535, 1190, 536, -1, 385, 535, 536, -1, 535, 1190, 539, 1151, 536, -1, 38, -1, 413, -1, 31, -1, 10, -1, 1186, -1, 526, -1, 527, -1, 528, -1, 529, -1, 530, -1, 531, -1, 523, -1, 524, -1, 525, -1, 17, -1, 18, -1, 19, -1, 10, -1, 312, 535, 901, 536, -1, 1185, -1, 312, 535, 901, 536, -1, 1185, -1, 312, 535, 901, 536, -1, 254, -1, 514, 254, -1, 198, -1, 514, 198, -1, 1151, -1, 1190, 539, 1151, -1, 1192, -1, 1191, 539, 1192, -1, 1151, -1, 872, 15, 1151, -1, 872, 16, 1151, -1, 1191, -1, -1, 1127, -1, 1194, 539, 1127, -1, 533, 1190, 534, -1, 533, 1196, 534, -1, 533, 534, -1, 1195, -1, 1196, 539, 1195, -1, 1198, 179, 1151, -1, 12, 179, 1151, -1, 3, -1, 510, -1, 276, -1, 117, -1, 195, -1, 273, -1, 394, -1, 1250, -1, 286, -1, 287, -1, 288, -1, 289, -1, 1151, 335, 1151, 179, 1151, 173, 1151, -1, 1151, 335, 1151, 179, 1151, -1, 1152, 203, 1152, -1, 1151, 179, 1151, 173, 1151, -1, 1151, 173, 1151, 179, 1151, -1, 1151, 179, 1151, -1, 1151, 173, 1151, -1, 1151, 408, 1151, 152, 1151, -1, 1151, 179, 1190, -1, 179, 1190, -1, 1190, -1, 1040, -1, 535, 1190, 536, -1, 67, 1209, 1206, 1208, 149, -1, 1207, -1, 1206, 1207, -1, 488, 1151, 444, 1151, -1, 144, 1151, -1, -1, 1151, -1, -1, 1259, -1, 1259, 1213, -1, 537, 1245, -1, 537, 528, -1, 533, 1151, 534, -1, 533, 1212, 540, 1212, 534, -1, 1151, -1, -1, 1211, -1, 1213, 1211, -1, -1, 1214, 1211, -1, 45, -1, -1, 332, 1217, -1, -1, 1218, -1, 1217, 539, 1218, -1, 1224, 40, 1262, -1, 494, 496, -1, 494, 39, 496, -1, 492, 496, -1, 492, 39, 496, -1, 492, 90, 39, 496, -1, 492, 462, 39, 496, -1, 492, 90, 496, -1, 492, 462, 496, -1, -1, 122, 1151, -1, 1221, -1, 151, -1, 299, -1, 455, -1, 165, -1, 467, -1, 145, 39, -1, 145, 303, -1, 145, -1, 1220, 310, 145, -1, 1220, 310, 151, -1, 1220, 310, 145, 1220, 310, 151, -1, -1, 1220, 310, 151, -1, -1, 1151, 1226, -1, 513, 230, 147, 1244, -1, 513, 230, -1, 1225, -1, -1, 241, 354, 310, 389, 426, -1, 241, 354, -1, 309, 354, 310, 389, 426, -1, 309, 354, -1, -1, 376, 1127, 1226, -1, -1, 230, -1, 230, 478, -1, 230, 39, -1, 230, 303, -1, 230, 389, -1, 492, 466, 243, -1, 492, 466, -1, 494, 466, 243, -1, 494, 466, -1, -1, 1232, -1, 1231, 539, 1232, -1, 1153, 478, 1224, -1, 1151, 540, 1224, -1, 299, 310, 299, -1, 23, 310, 299, -1, -1, 299, 310, 299, -1, 23, 310, 299, -1, -1, 1224, -1, 1235, 539, 1224, -1, 235, 535, 1232, 1233, 1230, 1228, 536, -1, 232, 535, 1224, 1237, 1234, 1228, 536, -1, 316, 61, 1060, -1, -1, 1239, -1, -1, 1240, -1, 1239, 539, 1240, -1, 1151, 40, 1262, -1, 1151, 1263, -1, 1151, -1, 528, -1, 1242, -1, 1241, 539, 1242, -1, 1259, -1, 1259, 1213, -1, 1244, -1, 1243, 539, 1244, -1, 1259, -1, 1262, -1, 1250, -1, 1260, -1, 1259, 1213, -1, 1249, -1, 5, -1, 1250, -1, 8, -1, 9, -1, 1247, 1250, -1, 1247, 535, 1191, 1058, 536, 1250, -1, 1247, 12, -1, 1247, 535, 1191, 1058, 536, 12, -1, 1130, 1250, -1, 1146, 1250, 1148, -1, 1146, 535, 1249, 536, 1250, -1, 1130, 12, -1, 1146, 12, 1148, -1, 1146, 535, 1249, 536, 12, -1, 455, -1, 165, -1, 299, -1, 11, -1, 6, -1, 1249, -1, 526, 1249, -1, 527, 1249, -1, 1253, -1, 1261, -1, 108, -1, 112, -1, 402, -1, 1253, -1, 1254, 539, 1253, -1, 1057, 1238, 1087, 1109, 1072, 1079, 1170, 1058, 1063, 1081, -1, 1257, 1214, 1258, 1255, -1, 1259, -1, 12, -1, 15, -1, 525, -1, 3, -1, 1264, -1, 1265, -1, 3, -1, 1264, -1, 1266, -1, 3, -1, 1264, -1, 1265, -1, 1266, -1, 3, -1, 1264, -1, 1265, -1, 1266, -1, 1267, -1, 3, -1, 1268, -1, 22, -1, 23, -1, 24, -1, 25, -1, 26, -1, 27, -1, 28, -1, 29, -1, 30, -1, 32, -1, 33, -1, 34, -1, 42, -1, 43, -1, 44, -1, 47, -1, 46, -1, 48, -1, 49, -1, 51, -1, 52, -1, 53, -1, 60, -1, 61, -1, 62, -1, 63, -1, 64, -1, 65, -1, 66, -1, 69, -1, 70, -1, 73, -1, 75, -1, 76, -1, 77, -1, 78, -1, 83, -1, 84, -1, 85, -1, 86, -1, 87, -1, 88, -1, 90, -1, 91, -1, 92, -1, 93, -1, 95, -1, 96, -1, 97, -1, 98, -1, 99, -1, 100, -1, 103, -1, 104, -1, 105, -1, 113, -1, 114, -1, 115, -1, 116, -1, 117, -1, 118, -1, 121, -1, 123, -1, 125, -1, 126, -1, 127, -1, 128, -1, 129, -1, 130, -1, 131, -1, 133, -1, 134, -1, 135, -1, 136, -1, 139, -1, 140, -1, 141, -1, 142, -1, 143, -1, 145, -1, 146, -1, 147, -1, 148, -1, 150, -1, 151, -1, 152, -1, 153, -1, 155, -1, 156, -1, 157, -1, 158, -1, 160, -1, 161, -1, 162, -1, 163, -1, 166, -1, 168, -1, 169, -1, 170, -1, 172, -1, 174, -1, 176, -1, 177, -1, 181, -1, 182, -1, 183, -1, 184, -1, 186, -1, 190, -1, 191, -1, 193, -1, 194, -1, 195, -1, 196, -1, 197, -1, 199, -1, 200, -1, 201, -1, 202, -1, 204, -1, 205, -1, 206, -1, 207, -1, 208, -1, 209, -1, 210, -1, 211, -1, 213, -1, 216, -1, 217, -1, 218, -1, 219, -1, 225, -1, 228, -1, 241, -1, 242, -1, 243, -1, 244, -1, 245, -1, 246, -1, 247, -1, 250, -1, 253, -1, 256, -1, 257, -1, 258, -1, 261, -1, 262, -1, 263, -1, 264, -1, 265, -1, 266, -1, 267, -1, 268, -1, 269, -1, 270, -1, 272, -1, 273, -1, 274, -1, 275, -1, 276, -1, 277, -1, 278, -1, 279, -1, 283, -1, 284, -1, 285, -1, 286, -1, 287, -1, 288, -1, 289, -1, 290, -1, 293, -1, 295, -1, 296, -1, 298, -1, 301, -1, 303, -1, 304, -1, 305, -1, 307, -1, 308, -1, 309, -1, 312, -1, 313, -1, 314, -1, 317, -1, 318, -1, 321, -1, 324, -1, 325, -1, 326, -1, 327, -1, 328, -1, 329, -1, 330, -1, 331, -1, 332, -1, 333, -1, 334, -1, 336, -1, 337, -1, 338, -1, 340, -1, 343, -1, 344, -1, 342, -1, 346, -1, 347, -1, 348, -1, 349, -1, 350, -1, 351, -1, 352, -1, 353, -1, 354, -1, 355, -1, 356, -1, 358, -1, 359, -1, 360, -1, 361, -1, 363, -1, 364, -1, 365, -1, 366, -1, 367, -1, 368, -1, 369, -1, 370, -1, 371, -1, 372, -1, 373, -1, 374, -1, 375, -1, 377, -1, 378, -1, 380, -1, 381, -1, 382, -1, 383, -1, 384, -1, 386, -1, 387, -1, 388, -1, 389, -1, 390, -1, 391, -1, 392, -1, 393, -1, 394, -1, 395, -1, 397, -1, 398, -1, 399, -1, 400, -1, 401, -1, 403, -1, 404, -1, 406, -1, 407, -1, 409, -1, 410, -1, 412, -1, 414, -1, 415, -1, 416, -1, 417, -1, 418, -1, 419, -1, 420, -1, 421, -1, 422, -1, 423, -1, 424, -1, 425, -1, 426, -1, 427, -1, 428, -1, 430, -1, 432, -1, 433, -1, 436, -1, 438, -1, 439, -1, 440, -1, 441, -1, 442, -1, 443, -1, 445, -1, 450, -1, 451, -1, 453, -1, 456, -1, 457, -1, 458, -1, 459, -1, 460, -1, 461, -1, 463, -1, 462, -1, 464, -1, 467, -1, 468, -1, 469, -1, 470, -1, 471, -1, 474, -1, 475, -1, 476, -1, 477, -1, 478, -1, 482, -1, 484, -1, 485, -1, 486, -1, 487, -1, 490, -1, 493, -1, 494, -1, 495, -1, 496, -1, 497, -1, 498, -1, 510, -1, 511, -1, 512, -1, 54, -1, 55, -1, 57, -1, 58, -1, 71, -1, 72, -1, 79, -1, 119, -1, 120, -1, 159, -1, 164, -1, 171, -1, 187, -1, 189, -1, 215, -1, 220, -1, 221, -1, 223, -1, 230, -1, 231, -1, 232, -1, 233, -1, 234, -1, 235, -1, 236, -1, 237, -1, 238, -1, 239, -1, 240, -1, 251, -1, 271, -1, 280, -1, 282, -1, 291, -1, 292, -1, 300, -1, 302, -1, 319, -1, 323, -1, 339, -1, 341, -1, 357, -1, 385, -1, 405, -1, 411, -1, 429, -1, 446, -1, 447, -1, 452, -1, 454, -1, 479, -1, 480, -1, 499, -1, 500, -1, 501, -1, 502, -1, 503, -1, 504, -1, 505, -1, 506, -1, 507, -1, 508, -1, 509, -1, 50, -1, 56, -1, 81, -1, 89, -1, 102, -1, 109, -1, 178, -1, 180, -1, 198, -1, 214, -1, 226, -1, 227, -1, 229, -1, 252, -1, 254, -1, 281, -1, 297, -1, 320, -1, 322, -1, 379, -1, 408, -1, 437, -1, 483, -1, 31, -1, 35, -1, 36, -1, 37, -1, 38, -1, 39, -1, 40, -1, 41, -1, 45, -1, 59, -1, 67, -1, 68, -1, 74, -1, 80, -1, 82, -1, 94, -1, 101, -1, 106, -1, 107, -1, 108, -1, 110, -1, 111, -1, 112, -1, 122, -1, 124, -1, 132, -1, 137, -1, 138, -1, 144, -1, 149, -1, 154, -1, 165, -1, 167, -1, 173, -1, 175, -1, 179, -1, 185, -1, 188, -1, 192, -1, 203, -1, 212, -1, 222, -1, 224, -1, 248, -1, 249, -1, 255, -1, 259, -1, 260, -1, 294, -1, 299, -1, 306, -1, 310, -1, 311, -1, 315, -1, 316, -1, 335, -1, 345, -1, 362, -1, 376, -1, 396, -1, 402, -1, 413, -1, 431, -1, 434, -1, 435, -1, 444, -1, 448, -1, 449, -1, 455, -1, 465, -1, 466, -1, 472, -1, 473, -1, 481, -1, 488, -1, 489, -1, 491, -1, 492, -1, 22, -1, 23, -1, 24, -1, 25, -1, 26, -1, 27, -1, 28, -1, 29, -1, 30, -1, 31, -1, 32, -1, 33, -1, 34, -1, 35, -1, 36, -1, 37, -1, 38, -1, 41, -1, 42, -1, 43, -1, 44, -1, 45, -1, 47, -1, 46, -1, 48, -1, 49, -1, 50, -1, 51, -1, 52, -1, 53, -1, 54, -1, 55, -1, 56, -1, 57, -1, 58, -1, 59, -1, 60, -1, 61, -1, 62, -1, 63, -1, 64, -1, 65, -1, 66, -1, 67, -1, 68, -1, 69, -1, 70, -1, 73, -1, 74, -1, 75, -1, 76, -1, 77, -1, 78, -1, 79, -1, 80, -1, 81, -1, 82, -1, 83, -1, 84, -1, 85, -1, 86, -1, 87, -1, 88, -1, 89, -1, 90, -1, 91, -1, 92, -1, 93, -1, 94, -1, 95, -1, 96, -1, 97, -1, 98, -1, 99, -1, 100, -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, 118, -1, 119, -1, 120, -1, 121, -1, 122, -1, 123, -1, 124, -1, 125, -1, 126, -1, 127, -1, 128, -1, 129, -1, 130, -1, 131, -1, 132, -1, 133, -1, 134, -1, 135, -1, 136, -1, 137, -1, 138, -1, 139, -1, 140, -1, 141, -1, 142, -1, 143, -1, 144, -1, 145, -1, 146, -1, 147, -1, 148, -1, 149, -1, 150, -1, 151, -1, 152, -1, 153, -1, 155, -1, 156, -1, 157, -1, 158, -1, 159, -1, 160, -1, 161, -1, 162, -1, 163, -1, 164, -1, 165, -1, 166, -1, 169, -1, 170, -1, 171, -1, 172, -1, 174, -1, 175, -1, 176, -1, 177, -1, 178, -1, 180, -1, 181, -1, 182, -1, 183, -1, 184, -1, 186, -1, 187, -1, 189, -1, 190, -1, 191, -1, 193, -1, 194, -1, 196, -1, 197, -1, 198, -1, 199, -1, 200, -1, 201, -1, 202, -1, 203, -1, 204, -1, 205, -1, 206, -1, 207, -1, 208, -1, 209, -1, 210, -1, 211, -1, 212, -1, 213, -1, 214, -1, 215, -1, 216, -1, 217, -1, 218, -1, 219, -1, 220, -1, 221, -1, 223, -1, 225, -1, 226, -1, 228, -1, 229, -1, 230, -1, 231, -1, 232, -1, 233, -1, 234, -1, 235, -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, 252, -1, 253, -1, 254, -1, 256, -1, 257, -1, 258, -1, 259, -1, 260, -1, 261, -1, 262, -1, 263, -1, 264, -1, 265, -1, 266, -1, 267, -1, 268, -1, 269, -1, 270, -1, 271, -1, 272, -1, 274, -1, 275, -1, 277, -1, 278, -1, 279, -1, 280, -1, 281, -1, 282, -1, 283, -1, 284, -1, 285, -1, 286, -1, 287, -1, 288, -1, 289, -1, 290, -1, 291, -1, 292, -1, 293, -1, 294, -1, 295, -1, 296, -1, 298, -1, 299, -1, 300, -1, 301, -1, 302, -1, 303, -1, 304, -1, 305, -1, 307, -1, 308, -1, 309, -1, 311, -1, 312, -1, 313, -1, 314, -1, 315, -1, 317, -1, 318, -1, 319, -1, 320, -1, 323, -1, 324, -1, 325, -1, 326, -1, 327, -1, 328, -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, 343, -1, 344, -1, 342, -1, 345, -1, 346, -1, 347, -1, 348, -1, 349, -1, 350, -1, 351, -1, 352, -1, 353, -1, 354, -1, 355, -1, 356, -1, 357, -1, 358, -1, 359, -1, 360, -1, 361, -1, 362, -1, 363, -1, 364, -1, 365, -1, 366, -1, 367, -1, 368, -1, 369, -1, 370, -1, 371, -1, 372, -1, 373, -1, 374, -1, 375, -1, 377, -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, 391, -1, 392, -1, 393, -1, 395, -1, 396, -1, 397, -1, 398, -1, 399, -1, 400, -1, 401, -1, 402, -1, 403, -1, 405, -1, 404, -1, 406, -1, 407, -1, 408, -1, 409, -1, 410, -1, 411, -1, 412, -1, 413, -1, 414, -1, 415, -1, 416, -1, 417, -1, 418, -1, 419, -1, 420, -1, 421, -1, 422, -1, 423, -1, 424, -1, 425, -1, 426, -1, 427, -1, 428, -1, 429, -1, 430, -1, 431, -1, 432, -1, 433, -1, 434, -1, 435, -1, 436, -1, 437, -1, 438, -1, 439, -1, 440, -1, 441, -1, 442, -1, 443, -1, 444, -1, 445, -1, 446, -1, 447, -1, 449, -1, 450, -1, 451, -1, 452, -1, 453, -1, 454, -1, 455, -1, 456, -1, 457, -1, 458, -1, 459, -1, 460, -1, 461, -1, 463, -1, 462, -1, 464, -1, 466, -1, 467, -1, 468, -1, 469, -1, 470, -1, 471, -1, 472, -1, 473, -1, 474, -1, 475, -1, 476, -1, 477, -1, 478, -1, 479, -1, 480, -1, 481, -1, 483, -1, 484, -1, 485, -1, 486, -1, 487, -1, 488, -1, 490, -1, 495, -1, 496, -1, 497, -1, 498, -1, 499, -1, 500, -1, 501, -1, 502, -1, 503, -1, 504, -1, 505, -1, 506, -1, 507, -1, 508, -1, 509, -1, 511, -1, 512, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 923, 923, 928, 932, 937, 945, 953, 973, 985, 999, 1000, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1129, 1136, 1137, 1141, 1142, 1146, 1147, 1151, 1152, 1153, 1162, 1178, 1190, 1191, 1192, 1201, 1202, 1206, 1207, 1211, 1216, 1221, 1225, 1235, 1245, 1253, 1257, 1261, 1266, 1270, 1318, 1320, 1324, 1328, 1332, 1336, 1350, 1369, 1378, 1390, 1391, 1395, 1404, 1413, 1422, 1444, 1452, 1460, 1468, 1476, 1484, 1502, 1521, 1533, 1534, 1545, 1556, 1567, 1583, 1602, 1609, 1617, 1618, 1619, 1620, 1621, 1622, 1636, 1643, 1650, 1660, 1669, 1678, 1682, 1691, 1700, 1708, 1719, 1720, 1729, 1741, 1749, 1758, 1766, 1778, 1787, 1795, 1804, 1812, 1820, 1830, 1841, 1842, 1846, 1847, 1850, 1852, 1854, 1858, 1859, 1860, 1861, 1865, 1866, 1867, 1873, 1885, 1889, 1893, 1897, 1914, 1922, 1923, 1924, 1928, 1929, 1930, 1934, 1935, 1939, 1943, 1944, 1952, 1960, 1971, 1979, 1990, 1991, 1996, 1997, 2002, 2009, 2016, 2023, 2030, 2041, 2052, 2053, 2057, 2058, 2066, 2082, 2089, 2096, 2103, 2110, 2130, 2140, 2150, 2160, 2170, 2182, 2194, 2204, 2214, 2224, 2236, 2248, 2258, 2268, 2278, 2288, 2298, 2308, 2320, 2332, 2342, 2355, 2356, 2361, 2375, 2388, 2404, 2421, 2431, 2441, 2451, 2461, 2471, 2480, 2489, 2499, 2508, 2518, 2528, 2544, 2554, 2564, 2574, 2584, 2601, 2611, 2621, 2631, 2642, 2656, 2672, 2682, 2691, 2707, 2716, 2727, 2738, 2746, 2755, 2764, 2772, 2780, 2789, 2798, 2807, 2815, 2823, 2832, 2840, 2848, 2857, 2866, 2875, 2884, 2893, 2902, 2913, 2921, 2930, 2939, 2948, 2957, 2966, 2975, 2983, 2991, 2999, 3006, 3017, 3018, 3022, 3031, 3035, 3036, 3040, 3048, 3056, 3064, 3075, 3078, 3079, 3083, 3084, 3089, 3093, 3097, 3102, 3109, 3111, 3116, 3120, 3124, 3135, 3142, 3143, 3147, 3148, 3153, 3206, 3219, 3233, 3245, 3252, 3256, 3270, 3283, 3284, 3289, 3299, 3310, 3321, 3348, 3355, 3389, 3425, 3448, 3449, 3453, 3454, 3463, 3464, 3465, 3468, 3469, 3474, 3475, 3479, 3483, 3487, 3491, 3495, 3499, 3503, 3507, 3511, 3515, 3519, 3523, 3527, 3531, 3535, 3544, 3548, 3552, 3556, 3560, 3561, 3566, 3570, 3577, 3584, 3585, 3586, 3587, 3588, 3589, 3593, 3597, 3605, 3616, 3636, 3656, 3677, 3698, 3719, 3753, 3754, 3755, 3756, 3757, 3764, 3771, 3772, 3776, 3777, 3781, 3782, 3786, 3790, 3797, 3801, 3808, 3809, 3810, 3814, 3815, 3818, 3842, 3861, 3883, 3884, 3888, 3889, 3893, 3894, 3898, 3899, 3903, 3904, 3908, 3916, 3917, 3918, 3950, 3958, 3966, 3979, 3991, 4004, 4014, 4024, 4048, 4068, 4069, 4070, 4074, 4075, 4094, 4102, 4110, 4118, 4130, 4142, 4143, 4144, 4148, 4149, 4150, 4151, 4152, 4153, 4154, 4155, 4156, 4157, 4166, 4174, 4178, 4192, 4210, 4226, 4243, 4259, 4279, 4314, 4322, 4326, 4340, 4356, 4357, 4361, 4362, 4366, 4367, 4370, 4376, 4377, 4380, 4384, 4392, 4397, 4403, 4404, 4408, 4413, 4420, 4421, 4425, 4435, 4445, 4453, 4462, 4475, 4487, 4494, 4502, 4510, 4518, 4526, 4536, 4537, 4541, 4542, 4545, 4557, 4558, 4561, 4572, 4583, 4597, 4598, 4603, 4604, 4605, 4608, 4609, 4610, 4611, 4614, 4615, 4618, 4619, 4622, 4642, 4655, 4677, 4678, 4681, 4687, 4693, 4710, 4719, 4741, 4755, 4772, 4788, 4789, 4790, 4802, 4816, 4833, 4847, 4848, 4860, 4881, 4892, 4906, 4915, 4927, 4928, 4931, 4932, 4935, 4936, 4939, 4943, 4947, 4951, 4955, 4959, 4963, 4967, 4971, 4975, 4979, 4983, 4987, 4991, 4995, 4999, 5005, 5006, 5010, 5011, 5012, 5019, 5022, 5023, 5035, 5051, 5067, 5068, 5076, 5077, 5081, 5082, 5086, 5087, 5091, 5092, 5096, 5097, 5107, 5119, 5120, 5133, 5141, 5159, 5168, 5180, 5183, 5187, 5191, 5195, 5202, 5214, 5225, 5228, 5232, 5245, 5255, 5265, 5275, 5285, 5295, 5305, 5315, 5325, 5335, 5345, 5355, 5365, 5384, 5396, 5397, 5398, 5399, 5403, 5404, 5408, 5409, 5419, 5428, 5441, 5442, 5446, 5450, 5458, 5462, 5466, 5473, 5477, 5482, 5487, 5494, 5501, 5506, 5516, 5529, 5545, 5546, 5551, 5552, 5556, 5557, 5567, 5577, 5586, 5604, 5625, 5646, 5668, 5702, 5718, 5719, 5723, 5732, 5747, 5757, 5770, 5771, 5783, 5792, 5810, 5835, 5853, 5868, 5869, 5873, 5874, 5878, 5879, 5883, 5884, 5888, 5902, 5906, 5907, 5911, 5912, 5913, 5914, 5915, 5925, 5937, 5938, 5949, 5972, 6004, 6005, 6006, 6010, 6012, 6034, 6036, 6038, 6040, 6042, 6047, 6048, 6052, 6053, 6057, 6069, 6070, 6074, 6083, 6087, 6091, 6096, 6106, 6107, 6111, 6112, 6116, 6117, 6121, 6122, 6126, 6127, 6128, 6132, 6136, 6137, 6138, 6142, 6143, 6148, 6149, 6176, 6177, 6178, 6179, 6180, 6181, 6194, 6205, 6220, 6222, 6227, 6232, 6234, 6239, 6250, 6251, 6252, 6253, 6264, 6283, 6295, 6308, 6319, 6330, 6342, 6351, 6359, 6367, 6377, 6387, 6397, 6407, 6417, 6428, 6438, 6451, 6454, 6455, 6458, 6462, 6469, 6470, 6471, 6472, 6473, 6474, 6477, 6480, 6481, 6489, 6496, 6497, 6500, 6502, 6513, 6525, 6537, 6549, 6561, 6590, 6591, 6607, 6623, 6624, 6628, 6641, 6652, 6661, 6671, 6681, 6682, 6685, 6686, 6689, 6690, 6691, 6694, 6708, 6713, 6724, 6734, 6747, 6748, 6752, 6761, 6774, 6785, 6799, 6810, 6833, 6844, 6863, 6874, 6885, 6896, 6907, 6918, 6929, 6940, 6951, 6962, 6973, 6984, 6999, 7000, 7001, 7002, 7003, 7004, 7005, 7006, 7007, 7008, 7009, 7010, 7011, 7021, 7022, 7023, 7024, 7025, 7029, 7030, 7031, 7032, 7033, 7034, 7035, 7036, 7041, 7042, 7043, 7047, 7048, 7051, 7052, 7055, 7057, 7062, 7063, 7074, 7086, 7087, 7088, 7098, 7107, 7116, 7125, 7134, 7143, 7152, 7161, 7170, 7179, 7193, 7202, 7211, 7220, 7229, 7238, 7247, 7256, 7268, 7269, 7283, 7294, 7305, 7316, 7327, 7338, 7349, 7360, 7371, 7382, 7395, 7396, 7399, 7400, 7410, 7417, 7426, 7435, 7444, 7453, 7462, 7471, 7480, 7489, 7498, 7507, 7516, 7525, 7534, 7543, 7552, 7561, 7572, 7573, 7576, 7577, 7587, 7605, 7621, 7649, 7651, 7653, 7655, 7663, 7673, 7674, 7677, 7685, 7693, 7701, 7708, 7719, 7723, 7730, 7734, 7745, 7754, 7763, 7772, 7781, 7790, 7799, 7808, 7817, 7826, 7835, 7844, 7853, 7861, 7870, 7879, 7888, 7897, 7906, 7915, 7924, 7937, 7938, 7942, 7943, 7948, 7949, 7959, 7970, 7984, 7996, 8014, 8015, 8019, 8026, 8027, 8028, 8031, 8032, 8042, 8053, 8054, 8058, 8062, 8066, 8077, 8091, 8106, 8124, 8125, 8126, 8127, 8128, 8129, 8141, 8173, 8208, 8209, 8213, 8214, 8217, 8218, 8223, 8235, 8254, 8259, 8264, 8271, 8272, 8275, 8276, 8279, 8280, 8284, 8285, 8286, 8289, 8290, 8291, 8307, 8321, 8336, 8350, 8367, 8368, 8371, 8372, 8376, 8377, 8381, 8382, 8387, 8401, 8409, 8417, 8433, 8434, 8438, 8439, 8454, 8464, 8474, 8484, 8494, 8507, 8508, 8509, 8510, 8511, 8517, 8521, 8536, 8537, 8543, 8553, 8557, 8562, 8570, 8612, 8616, 8620, 8624, 8632, 8633, 8637, 8649, 8650, 8655, 8656, 8661, 8662, 8669, 8673, 8677, 8681, 8685, 8689, 8693, 8697, 8701, 8705, 8709, 8713, 8717, 8721, 8725, 8729, 8734, 8741, 8745, 8749, 8753, 8757, 8763, 8764, 8770, 8780, 8784, 8795, 8801, 8810, 8816, 8817, 8821, 8822, 8826, 8827, 8830, 8843, 8847, 8862, 8871, 8880, 8893, 8894, 8899, 8900, 8917, 8928, 8939, 8950, 8961, 8972, 8986, 8997, 9011, 9022, 9036, 9044, 9046, 9048, 9053, 9055, 9060, 9061, 9066, 9085, 9095, 9096, 9100, 9104, 9116, 9128, 9140, 9154, 9155, 9156, 9160, 9173, 9174, 9184, 9197, 9201, 9205, 9209, 9216, 9238, 9251, 9264, 9279, 9280, 9283, 9284, 9287, 9288, 9298, 9308, 9326, 9336, 9346, 9356, 9366, 9376, 9386, 9396, 9406, 9416, 9426, 9436, 9446, 9457, 9468, 9478, 9488, 9498, 9508, 9518, 9528, 9539, 9550, 9561, 9572, 9583, 9594, 9605, 9616, 9627, 9638, 9649, 9660, 9672, 9684, 9696, 9708, 9720, 9732, 9743, 9754, 9766, 9778, 9789, 9800, 9809, 9819, 9829, 9839, 9849, 9859, 9869, 9879, 9889, 9899, 9914, 9915, 9918, 9919, 9929, 9939, 9949, 9959, 9970, 9980, 9992, 9993, 10003, 10013, 10023, 10033, 10043, 10053, 10063, 10073, 10083, 10093, 10103, 10113, 10123, 10133, 10143, 10153, 10163, 10173, 10183, 10193, 10203, 10213, 10223, 10233, 10243, 10253, 10263, 10282, 10292, 10293, 10296, 10298, 10300, 10306, 10307, 10308, 10309, 10310, 10322, 10338, 10347, 10356, 10365, 10374, 10383, 10392, 10401, 10410, 10419, 10428, 10437, 10446, 10455, 10464, 10473, 10482, 10491, 10500, 10509, 10518, 10527, 10536, 10545, 10573, 10581, 10590, 10616, 10625, 10632, 10638, 10665, 10676, 10685, 10693, 10695, 10717, 10725, 10735, 10745, 10764, 10783, 10793, 10803, 10813, 10824, 10835, 10846, 10857, 10868, 10886, 10895, 10912, 10930, 10931, 10932, 10937, 10943, 10952, 10953, 10954, 10955, 10956, 10960, 10961, 10964, 10965, 10966, 10967, 10971, 10972, 10973, 10985, 10996, 10997, 11000, 11010, 11017, 11037, 11047, 11056, 11066, 11076, 11085, 11094, 11103, 11112, 11121, 11130, 11139, 11151, 11160, 11172, 11173, 11174, 11178, 11181, 11184, 11187, 11190, 11197, 11199, 11201, 11206, 11208, 11212, 11213, 11214, 11226, 11240, 11254, 11273, 11295, 11296, 11297, 11298, 11308, 11325, 11336, 11337, 11341, 11342, 11346, 11350, 11354, 11372, 11373, 11374, 11375, 11376, 11377, 11378, 11385, 11386, 11397, 11405, 11413, 11422, 11432, 11450, 11459, 11468, 11477, 11489, 11493, 11504, 11516, 11534, 11541, 11558, 11572, 11582, 11591, 11600, 11610, 11622, 11634, 11645, 11646, 11657, 11668, 11680, 11692, 11704, 11716, 11726, 11739, 11740, 11754, 11778, 11787, 11797, 11809, 11821, 11835, 11836, 11848, 11869, 11880, 11892, 11904, 11908, 11915, 11916, 11920, 11927, 11928, 11929, 11933, 11934, 11935, 11939, 11940, 11944, 11945, 11948, 11949, 11952, 11953, 11957, 11958, 11962, 11969, 11971, 11976, 11977, 11990, 11998, 12009, 12017, 12028, 12029, 12030, 12031, 12032, 12033, 12034, 12035, 12036, 12037, 12047, 12058, 12059, 12063, 12064, 12065, 12066, 12067, 12077, 12085, 12103, 12123, 12124, 12134, 12143, 12152, 12161, 12180, 12198, 12202, 12210, 12216, 12223, 12229, 12236, 12245, 12246, 12250, 12252, 12257, 12268, 12278, 12288, 12294, 12303, 12312, 12318, 12319, 12330, 12345, 12346, 12357, 12368, 12369, 12372, 12373, 12374, 12375, 12376, 12377, 12378, 12379, 12382, 12383, 12387, 12388, 12389, 12400, 12419, 12420, 12424, 12429, 12453, 12464, 12465, 12477, 12497, 12498, 12508, 12515, 12522, 12529, 12539, 12552, 12553, 12557, 12558, 12562, 12563, 12567, 12580, 12593, 12602, 12611, 12620, 12629, 12641, 12653, 12665, 12668, 12669, 12670, 12671, 12672, 12673, 12676, 12677, 12678, 12726, 12727, 12731, 12732, 12747, 12748, 12755, 12763, 12771, 12779, 12787, 12795, 12806, 12807, 12839, 12855, 12872, 12873, 12892, 12896, 12900, 12915, 12922, 12929, 12939, 12940, 12943, 12959, 12960, 12961, 12965, 12975, 12986, 12992, 13004, 13017, 13023, 13024, 13028, 13040, 13048, 13053, 13058, 13063, 13068, 13076, 13084, 13089, 13094, 13101, 13102, 13106, 13107, 13108, 13115, 13116, 13120, 13121, 13125, 13126, 13130, 13131, 13135, 13139, 13140, 13143, 13152, 13165, 13170, 13175, 13179, 13191, 13192, 13196, 13205, 13221, 13230, 13239, 13248, 13260, 13263, 13268, 13269, 13277, 13297, 13298, 13300, 13305, 13306, 13310, 13311, 13314, 13315, 13340, 13349, 13359, 13360, 13364, 13365, 13366, 13367, 13368, 13372, 13385, 13392, 13399, 13406, 13407, 13411, 13412, 13416, 13417, 13421, 13422, 13426, 13438, 13439, 13440, 13441, 13445, 13446, 13456, 13463, 13482, 13483, 13487, 13488, 13494, 13499, 13508, 13516, 13525, 13532, 13540, 13549, 13558, 13562, 13567, 13574, 13603, 13607, 13621, 13642, 13664, 13677, 13694, 13700, 13705, 13711, 13718, 13719, 13729, 13735, 13743, 13747, 13751, 13758, 13766, 13771, 13772, 13773, 13774, 13778, 13779, 13794, 13798, 13806, 13813, 13820, 13827, 13834, 13845, 13846, 13859, 13863, 13871, 13885, 13899, 13900, 13915, 13926, 13939, 13944, 13945, 13948, 13949, 13952, 13953, 13958, 13959, 13964, 13965, 13974, 13979, 13980, 13984, 13988, 13994, 14019, 14030, 14044, 14045, 14049, 14063, 14120, 14134, 14136, 14141, 14143, 14145, 14147, 14149, 14154, 14156, 14161, 14169, 14180, 14208, 14209, 14213, 14215, 14220, 14229, 14249, 14269, 14287, 14299, 14314, 14315, 14319, 14322, 14335, 14340, 14347, 14352, 14358, 14363, 14372, 14374, 14377, 14381, 14382, 14383, 14384, 14385, 14386, 14391, 14397, 14412, 14413, 14414, 14415, 14416, 14427, 14433, 14441, 14442, 14448, 14453, 14458, 14463, 14468, 14473, 14478, 14483, 14489, 14495, 14501, 14508, 14530, 14539, 14543, 14551, 14555, 14563, 14575, 14596, 14600, 14606, 14610, 14623, 14631, 14641, 14643, 14645, 14647, 14649, 14651, 14656, 14657, 14664, 14673, 14681, 14690, 14701, 14709, 14710, 14711, 14715, 14717, 14719, 14721, 14723, 14725, 14727, 14732, 14737, 14743, 14751, 14756, 14763, 14770, 14774, 14778, 14786, 14821, 14822, 14824, 14833, 14840, 14856, 14858, 14860, 14862, 14864, 14866, 14868, 14870, 14872, 14874, 14876, 14878, 14880, 14882, 14885, 14887, 14890, 14892, 14894, 14896, 14899, 14904, 14913, 14918, 14927, 14932, 14941, 14946, 14956, 14965, 14974, 14983, 15002, 15011, 15020, 15029, 15038, 15055, 15064, 15073, 15082, 15091, 15100, 15109, 15113, 15117, 15125, 15133, 15141, 15149, 15170, 15193, 15205, 15212, 15228, 15233, 15239, 15246, 15253, 15261, 15269, 15286, 15305, 15331, 15333, 15335, 15337, 15339, 15341, 15343, 15345, 15347, 15349, 15351, 15353, 15355, 15357, 15359, 15361, 15363, 15365, 15367, 15371, 15375, 15380, 15396, 15397, 15398, 15415, 15428, 15430, 15432, 15444, 15469, 15481, 15493, 15501, 15512, 15523, 15533, 15539, 15548, 15558, 15568, 15581, 15591, 15622, 15658, 15668, 15679, 15680, 15681, 15688, 15695, 15699, 15703, 15707, 15711, 15715, 15719, 15723, 15727, 15731, 15735, 15739, 15743, 15750, 15754, 15758, 15762, 15764, 15771, 15778, 15785, 15792, 15803, 15817, 15827, 15838, 15854, 15864, 15871, 15878, 15885, 15889, 15897, 15906, 15915, 15919, 15923, 15927, 15931, 15935, 15944, 15948, 15958, 15962, 15966, 15971, 15982, 15988, 16002, 16013, 16027, 16043, 16055, 16065, 16074, 16083, 16091, 16113, 16129, 16153, 16155, 16159, 16161, 16163, 16166, 16169, 16172, 16173, 16176, 16184, 16194, 16195, 16198, 16199, 16200, 16203, 16204, 16205, 16210, 16214, 16218, 16222, 16229, 16230, 16238, 16239, 16243, 16244, 16252, 16253, 16257, 16258, 16263, 16272, 16274, 16289, 16292, 16320, 16321, 16324, 16325, 16333, 16341, 16349, 16358, 16368, 16386, 16432, 16441, 16450, 16459, 16468, 16480, 16481, 16482, 16483, 16484, 16498, 16499, 16500, 16503, 16504, 16507, 16510, 16511, 16512, 16515, 16516, 16519, 16520, 16521, 16522, 16523, 16524, 16525, 16526, 16527, 16528, 16529, 16530, 16533, 16535, 16540, 16542, 16547, 16549, 16551, 16553, 16555, 16557, 16569, 16573, 16580, 16584, 16590, 16594, 16604, 16616, 16617, 16620, 16621, 16624, 16628, 16632, 16638, 16639, 16644, 16648, 16658, 16659, 16660, 16661, 16662, 16663, 16664, 16665, 16669, 16670, 16671, 16672, 16677, 16682, 16691, 16712, 16716, 16721, 16732, 16749, 16755, 16756, 16757, 16760, 16768, 16778, 16793, 16794, 16798, 16810, 16811, 16814, 16815, 16818, 16822, 16829, 16833, 16837, 16846, 16858, 16859, 16863, 16864, 16868, 16869, 16872, 16873, 16878, 16879, 16883, 16884, 16888, 16900, 16901, 16902, 16903, 16904, 16905, 16906, 16907, 16908, 16912, 16914, 16919, 16920, 16921, 16922, 16923, 16924, 16925, 16927, 16931, 16933, 16935, 16938, 16942, 16945, 16949, 16958, 16975, 16982, 16987, 16993, 16994, 16995, 16996, 16997, 17001, 17010, 17024, 17025, 17026, 17027, 17028, 17037, 17038, 17039, 17040, 17041, 17045, 17047, 17057, 17060, 17066, 17067, 17068, 17072, 17073, 17074, 17078, 17079, 17083, 17101, 17121, 17122, 17131, 17132, 17136, 17137, 17140, 17148, 17156, 17164, 17187, 17188, 17199, 17203, 17209, 17211, 17216, 17218, 17220, 17230, 17232, 17243, 17247, 17251, 17255, 17259, 17268, 17276, 17308, 17315, 17347, 17351, 17358, 17366, 17370, 17376, 17383, 17387, 17391, 17397, 17398, 17400, 17401, 17402, 17406, 17447, 17475, 17479, 17483, 17489, 17491, 17505, 17541, 17554, 17555, 17558, 17559, 17576, 17577, 17578, 17583, 17584, 17585, 17590, 17591, 17592, 17593, 17599, 17600, 17601, 17602, 17603, 17609, 17610, 17630, 17631, 17632, 17633, 17634, 17635, 17636, 17637, 17638, 17639, 17640, 17641, 17642, 17643, 17644, 17645, 17646, 17647, 17648, 17649, 17650, 17651, 17652, 17653, 17654, 17655, 17656, 17657, 17658, 17659, 17660, 17661, 17662, 17663, 17664, 17665, 17666, 17667, 17668, 17669, 17670, 17671, 17672, 17673, 17674, 17675, 17676, 17677, 17678, 17679, 17680, 17681, 17682, 17683, 17684, 17685, 17686, 17687, 17688, 17689, 17690, 17691, 17692, 17693, 17694, 17695, 17696, 17697, 17698, 17699, 17700, 17701, 17702, 17703, 17704, 17705, 17706, 17707, 17708, 17709, 17710, 17711, 17712, 17713, 17714, 17715, 17716, 17717, 17718, 17719, 17720, 17721, 17722, 17723, 17724, 17725, 17726, 17727, 17728, 17729, 17730, 17731, 17732, 17733, 17734, 17735, 17736, 17737, 17738, 17739, 17740, 17741, 17742, 17743, 17744, 17745, 17746, 17747, 17748, 17749, 17750, 17751, 17752, 17753, 17754, 17755, 17756, 17757, 17758, 17759, 17760, 17761, 17762, 17763, 17764, 17765, 17766, 17767, 17768, 17769, 17770, 17771, 17772, 17773, 17774, 17775, 17776, 17777, 17778, 17779, 17780, 17781, 17782, 17783, 17784, 17785, 17786, 17787, 17788, 17789, 17790, 17791, 17792, 17793, 17794, 17795, 17796, 17797, 17798, 17799, 17800, 17801, 17802, 17803, 17804, 17805, 17806, 17807, 17808, 17809, 17810, 17811, 17812, 17813, 17814, 17815, 17816, 17817, 17818, 17819, 17820, 17821, 17822, 17823, 17824, 17825, 17826, 17827, 17828, 17829, 17830, 17831, 17832, 17833, 17834, 17835, 17836, 17837, 17838, 17839, 17840, 17841, 17842, 17843, 17844, 17845, 17846, 17847, 17848, 17849, 17850, 17851, 17852, 17853, 17854, 17855, 17856, 17857, 17858, 17859, 17860, 17861, 17862, 17863, 17864, 17865, 17866, 17867, 17868, 17869, 17870, 17871, 17872, 17873, 17874, 17875, 17876, 17877, 17878, 17879, 17880, 17881, 17882, 17883, 17884, 17885, 17886, 17887, 17888, 17889, 17890, 17891, 17892, 17893, 17894, 17895, 17896, 17897, 17898, 17899, 17900, 17901, 17902, 17903, 17904, 17905, 17906, 17907, 17908, 17909, 17910, 17911, 17912, 17913, 17914, 17915, 17916, 17917, 17918, 17919, 17920, 17921, 17922, 17923, 17924, 17925, 17926, 17927, 17928, 17929, 17930, 17931, 17932, 17933, 17934, 17935, 17936, 17937, 17938, 17939, 17940, 17941, 17942, 17943, 17944, 17945, 17946, 17947, 17948, 17949, 17950, 17951, 17952, 17953, 17954, 17955, 17956, 17970, 17971, 17972, 17973, 17974, 17975, 17976, 17977, 17978, 17979, 17980, 17981, 17982, 17983, 17984, 17985, 17986, 17987, 17988, 17989, 17990, 17991, 17992, 17993, 17994, 17995, 17996, 17997, 17998, 17999, 18000, 18001, 18002, 18003, 18004, 18005, 18006, 18007, 18008, 18009, 18010, 18011, 18012, 18013, 18014, 18015, 18016, 18017, 18018, 18019, 18020, 18021, 18022, 18023, 18024, 18025, 18026, 18027, 18028, 18029, 18030, 18031, 18032, 18046, 18047, 18048, 18049, 18050, 18051, 18052, 18053, 18054, 18055, 18056, 18057, 18058, 18059, 18060, 18061, 18062, 18063, 18064, 18065, 18066, 18067, 18068, 18078, 18079, 18080, 18081, 18082, 18083, 18084, 18085, 18086, 18087, 18088, 18089, 18090, 18091, 18092, 18093, 18094, 18095, 18096, 18097, 18098, 18099, 18100, 18101, 18102, 18103, 18104, 18105, 18106, 18107, 18108, 18109, 18110, 18111, 18112, 18113, 18114, 18115, 18116, 18117, 18118, 18119, 18120, 18121, 18122, 18123, 18124, 18125, 18126, 18127, 18128, 18129, 18130, 18131, 18132, 18133, 18134, 18135, 18136, 18137, 18138, 18139, 18140, 18141, 18142, 18143, 18144, 18145, 18146, 18147, 18148, 18149, 18150, 18151, 18152, 18153, 18154, 18155, 18168, 18169, 18170, 18171, 18172, 18173, 18174, 18175, 18176, 18177, 18178, 18179, 18180, 18181, 18182, 18183, 18184, 18185, 18186, 18187, 18188, 18189, 18190, 18191, 18192, 18193, 18194, 18195, 18196, 18197, 18198, 18199, 18200, 18201, 18202, 18203, 18204, 18205, 18206, 18207, 18208, 18209, 18210, 18211, 18212, 18213, 18214, 18215, 18216, 18217, 18218, 18219, 18220, 18221, 18222, 18223, 18224, 18225, 18226, 18227, 18228, 18229, 18230, 18231, 18232, 18233, 18234, 18235, 18236, 18237, 18238, 18239, 18240, 18241, 18242, 18243, 18244, 18245, 18246, 18247, 18248, 18249, 18250, 18251, 18252, 18253, 18254, 18255, 18256, 18257, 18258, 18259, 18260, 18261, 18262, 18263, 18264, 18265, 18266, 18267, 18268, 18269, 18270, 18271, 18272, 18273, 18274, 18275, 18276, 18277, 18278, 18279, 18280, 18281, 18282, 18283, 18284, 18285, 18286, 18287, 18288, 18289, 18290, 18291, 18292, 18293, 18294, 18295, 18296, 18297, 18298, 18299, 18300, 18301, 18302, 18303, 18304, 18305, 18306, 18307, 18308, 18309, 18310, 18311, 18312, 18313, 18314, 18315, 18316, 18317, 18318, 18319, 18320, 18321, 18322, 18323, 18324, 18325, 18326, 18327, 18328, 18329, 18330, 18331, 18332, 18333, 18334, 18335, 18336, 18337, 18338, 18339, 18340, 18341, 18342, 18343, 18344, 18345, 18346, 18347, 18348, 18349, 18350, 18351, 18352, 18353, 18354, 18355, 18356, 18357, 18358, 18359, 18360, 18361, 18362, 18363, 18364, 18365, 18366, 18367, 18368, 18369, 18370, 18371, 18372, 18373, 18374, 18375, 18376, 18377, 18378, 18379, 18380, 18381, 18382, 18383, 18384, 18385, 18386, 18387, 18388, 18389, 18390, 18391, 18392, 18393, 18394, 18395, 18396, 18397, 18398, 18399, 18400, 18401, 18402, 18403, 18404, 18405, 18406, 18407, 18408, 18409, 18410, 18411, 18412, 18413, 18414, 18415, 18416, 18417, 18418, 18419, 18420, 18421, 18422, 18423, 18424, 18425, 18426, 18427, 18428, 18429, 18430, 18431, 18432, 18433, 18434, 18435, 18436, 18437, 18438, 18439, 18440, 18441, 18442, 18443, 18444, 18445, 18446, 18447, 18448, 18449, 18450, 18451, 18452, 18453, 18454, 18455, 18456, 18457, 18458, 18459, 18460, 18461, 18462, 18463, 18464, 18465, 18466, 18467, 18468, 18469, 18470, 18471, 18472, 18473, 18474, 18475, 18476, 18477, 18478, 18479, 18480, 18481, 18482, 18483, 18484, 18485, 18486, 18487, 18488, 18489, 18490, 18491, 18492, 18493, 18494, 18495, 18496, 18497, 18498, 18499, 18500, 18501, 18502, 18503, 18504, 18505, 18506, 18507, 18508, 18509, 18510, 18511, 18512, 18513, 18514, 18515, 18516, 18517, 18518, 18519, 18520, 18521, 18522, 18523, 18524, 18525, 18526, 18527, 18528, 18529, 18530, 18531, 18532, 18533, 18534, 18535, 18536, 18537, 18538, 18539, 18540, 18541, 18542, 18543, 18544, 18545, 18546, 18547, 18548, 18549, 18550, 18551, 18552, 18553, 18554, 18555, 18556, 18557, 18558, 18559, 18560, 18561, 18562, 18563, 18564, 18565, 18566, 18567, 18568, 18569, 18570, 18571, 18572, 18573, 18574, 18575, 18576, 18577, 18578, 18579, 18580, 18581, 18582, 18583, 18584, 18585, 18586, 18587, 18588, 18589, 18590, 18591, 18592, 18593, 18594, 18595, 18596, 18597, 18598, 18599, 18600, 18601, 18602, 18603, 18604, 18605, 18606, 18607, 18608, 18609, 18610, 18611, 18612, 18613, 18614, 18615, 18616, 18617, 18618, 18619 }; #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", "ABSENT", "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", "AGGREGATE", "ALL", "ALSO", "ALTER", "ALWAYS", "ANALYSE", "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", "ASENSITIVE", "ASSERTION", "ASSIGNMENT", "ASYMMETRIC", "ATOMIC", "AT", "ATTACH", "ATTRIBUTE", "AUTHORIZATION", "BACKWARD", "BEFORE", "BEGIN_P", "BETWEEN", "BIGINT", "BINARY", "BIT", "BOOLEAN_P", "BOTH", "BREADTH", "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", "COMPRESSION", "CONCURRENTLY", "CONDITIONAL", "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", "DEPTH", "DESC", "DETACH", "DICTIONARY", "DISABLE_P", "DISCARD", "DISTINCT", "DO", "DOCUMENT_P", "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ELSE", "EMPTY_P", "ENABLE_P", "ENCODING", "ENCRYPTED", "END_P", "ENUM_P", "ERROR_P", "ESCAPE", "EVENT", "EXCEPT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", "EXECUTE", "EXISTS", "EXPLAIN", "EXPRESSION", "EXTENSION", "EXTERNAL", "EXTRACT", "FALSE_P", "FAMILY", "FETCH", "FILTER", "FINALIZE", "FIRST_P", "FLOAT_P", "FOLLOWING", "FOR", "FORCE", "FOREIGN", "FORMAT", "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", "INDENT", "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", "JSON", "JSON_ARRAY", "JSON_ARRAYAGG", "JSON_EXISTS", "JSON_OBJECT", "JSON_OBJECTAGG", "JSON_QUERY", "JSON_SCALAR", "JSON_SERIALIZE", "JSON_TABLE", "JSON_VALUE", "KEEP", "KEY", "KEYS", "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", "MATCHED", "MATERIALIZED", "MAXVALUE", "MERGE", "MERGE_ACTION", "METHOD", "MINUTE_P", "MINVALUE", "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", "NATIONAL", "NATURAL", "NCHAR", "NESTED", "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", "OMIT", "ON", "ONLY", "OPERATOR", "OPTION", "OPTIONS", "OR", "ORDER", "ORDINALITY", "OTHERS", "OUT_P", "OUTER_P", "OVER", "OVERLAPS", "OVERLAY", "OVERRIDING", "OWNED", "OWNER", "PARALLEL", "PARAMETER", "PARSER", "PARTIAL", "PARTITION", "PASSING", "PASSWORD", "PATH", "PLACING", "PLAN", "PLANS", "POLICY", "POSITION", "PRECEDING", "PRECISION", "PRESERVE", "PREPARE", "PREPARED", "PRIMARY", "PRIOR", "PRIVILEGES", "PROCEDURAL", "PROCEDURE", "PROCEDURES", "PROGRAM", "PUBLICATION", "QUOTE", "QUOTES", "RANGE", "READ", "REAL", "REASSIGN", "RECHECK", "RECURSIVE", "REF_P", "REFERENCES", "REFERENCING", "REFRESH", "REINDEX", "RELATIVE_P", "RELEASE", "RENAME", "REPEATABLE", "REPLACE", "REPLICA", "RESET", "RESTART", "RESTRICT", "RETURN", "RETURNING", "RETURNS", "REVOKE", "RIGHT", "ROLE", "ROLLBACK", "ROLLUP", "ROUTINE", "ROUTINES", "ROW", "ROWS", "RULE", "SAVEPOINT", "SCALAR", "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", "SOURCE", "SQL_P", "STABLE", "STANDALONE_P", "START", "STATEMENT", "STATISTICS", "STDIN", "STDOUT", "STORAGE", "STORED", "STRICT_P", "STRING_P", "STRIP_P", "SUBSCRIPTION", "SUBSTRING", "SUPPORT", "SYMMETRIC", "SYSID", "SYSTEM_P", "SYSTEM_USER", "TABLE", "TABLES", "TABLESAMPLE", "TABLESPACE", "TARGET", "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", "UNCONDITIONAL", "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", "FORMAT_LA", "NOT_LA", "NULLS_LA", "WITH_LA", "WITHOUT_LA", "MODE_TYPE_NAME", "MODE_PLPGSQL_EXPR", "MODE_PLPGSQL_ASSIGN1", "MODE_PLPGSQL_ASSIGN2", "MODE_PLPGSQL_ASSIGN3", "'<'", "'>'", "'='", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", "':'", "$accept", "parse_toplevel", "stmtmulti", "toplevel_stmt", "stmt", "opt_single_name", "opt_qualified_name", "opt_concurrently", "opt_drop_behavior", "CallStmt", "CreateRoleStmt", "opt_with", "OptRoleList", "AlterOptRoleList", "AlterOptRoleElem", "CreateOptRoleElem", "CreateUserStmt", "AlterRoleStmt", "opt_in_database", "AlterRoleSetStmt", "DropRoleStmt", "CreateGroupStmt", "AlterGroupStmt", "add_drop", "CreateSchemaStmt", "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_collate_clause", "alter_using", "replica_identity", "reloptions", "opt_reloptions", "reloption_list", "reloption_elem", "alter_identity_column_option_list", "alter_identity_column_option", "set_statistics_value", "set_access_method_name", "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", "column_compression", "opt_column_compression", "column_storage", "opt_column_storage", "ColQualList", "ColConstraint", "ColConstraintElem", "opt_unique_null_treatment", "generated_when", "ConstraintAttr", "TableLikeClause", "TableLikeOptionList", "TableLikeOption", "TableConstraint", "ConstraintElem", "DomainConstraint", "DomainConstraintElem", "opt_no_inherit", "opt_column_list", "columnList", "columnElem", "opt_c_include", "key_match", "ExclusionConstraintList", "ExclusionConstraintElem", "OptWhereClause", "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", "stats_params", "stats_param", "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", "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", "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", "object_type_any_name", "object_type_name", "drop_type_name", "object_type_name_on_any_name", "any_name_list", "any_name", "attrs", "type_name_list", "TruncateStmt", "opt_restart_seqs", "CommentStmt", "comment_text", "SecLabelStmt", "opt_provider", "security_label", "FetchStmt", "fetch_args", "from_in", "opt_from_in", "GrantStmt", "RevokeStmt", "privileges", "privilege_list", "privilege", "parameter_name_list", "parameter_name", "privilege_target", "grantee_list", "grantee", "opt_grant_grant_option", "GrantRoleStmt", "RevokeRoleStmt", "grant_role_opt_list", "grant_role_opt", "grant_role_opt_value", "opt_granted_by", "AlterDefaultPrivilegesStmt", "DefACLOptionList", "DefACLOption", "DefACLAction", "defacl_privilege_target", "IndexStmt", "opt_unique", "access_method_clause", "index_params", "index_elem_options", "index_elem", "opt_include", "index_including_params", "opt_collate", "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", "opt_createfunc_opt_list", "createfunc_opt_list", "common_func_opt_item", "createfunc_opt_item", "func_as", "ReturnStmt", "opt_routine_body", "routine_body_stmt_list", "routine_body_stmt", "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_relation", "reindex_target_all", "opt_reindex_option_list", "AlterTblSpcStmt", "RenameStmt", "opt_column", "opt_set_data", "AlterObjectDependsStmt", "opt_no", "AlterObjectSchemaStmt", "AlterOperatorStmt", "operator_def_list", "operator_def_elem", "operator_def_arg", "AlterTypeStmt", "AlterOwnerStmt", "CreatePublicationStmt", "PublicationObjSpec", "pub_obj_list", "AlterPublicationStmt", "CreateSubscriptionStmt", "AlterSubscriptionStmt", "DropSubscriptionStmt", "RuleStmt", "RuleActionList", "RuleActionMulti", "RuleActionStmt", "RuleActionStmtOrEmpty", "event", "opt_instead", "NotifyStmt", "notify_payload", "ListenStmt", "UnlistenStmt", "TransactionStmt", "TransactionStmtLegacy", "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", "utility_option_list", "analyze_keyword", "utility_option_elem", "utility_option_name", "utility_option_arg", "opt_analyze", "opt_verbose", "opt_full", "opt_freeze", "opt_name_list", "vacuum_relation", "vacuum_relation_list", "opt_vacuum_relation_list", "ExplainStmt", "ExplainableStmt", "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", "MergeStmt", "merge_when_list", "merge_when_clause", "merge_when_tgt_matched", "merge_when_tgt_not_matched", "opt_merge_when_condition", "merge_update", "merge_delete", "merge_insert", "merge_values_clause", "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_search_clause", "opt_cycle_clause", "opt_with_clause", "into_clause", "OptTempTableName", "opt_table", "set_quantifier", "distinct_clause", "opt_all_clause", "opt_distinct_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", "opt_alias_clause_for_join_using", "func_alias_clause", "join_type", "opt_outer", "join_qual", "relation_expr", "extended_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", "json_table", "json_table_path_name_opt", "json_table_column_definition_list", "json_table_column_definition", "path_opt", "json_table_column_path_clause_opt", "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", "JsonType", "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_indent_option", "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", "func_arg_list_opt", "type_list", "array_expr", "array_expr_list", "extract_list", "extract_arg", "unicode_normal_form", "overlay_list", "position_list", "substr_list", "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", "json_passing_clause_opt", "json_arguments", "json_argument", "json_wrapper_behavior", "json_behavior", "json_behavior_type", "json_behavior_clause_opt", "json_on_error_clause_opt", "json_value_expr", "json_format_clause", "json_format_clause_opt", "json_quotes_clause_opt", "json_returning_clause_opt", "json_predicate_type_constraint", "json_key_uniqueness_constraint_opt", "json_name_and_value_list", "json_name_and_value", "json_object_constructor_null_clause_opt", "json_array_constructor_null_clause_opt", "json_value_expr_list", "json_aggregate_func", "json_array_aggregate_order_by_clause_opt", "opt_target_list", "target_list", "target_el", "qualified_name_list", "qualified_name", "name_list", "name", "attr_name", "file_name", "func_name", "AexprConst", "Iconst", "Sconst", "SignedIconst", "RoleId", "RoleSpec", "role_list", "PLpgSQL_Expr", "PLAssignStmt", "plassign_target", "plassign_equals", "ColId", "type_function_name", "NonReservedWord", "ColLabel", "BareColLabel", "unreserved_keyword", "col_name_keyword", "type_func_name_keyword", "reserved_keyword", "bare_label_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, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 60, 62, 61, 43, 45, 42, 47, 37, 94, 778, 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, 541, 542, 542, 542, 542, 542, 542, 543, 543, 544, 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, 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, 545, 545, 545, 545, 545, 545, 545, 545, 545, 546, 546, 547, 547, 548, 548, 549, 549, 549, 550, 551, 552, 552, 552, 553, 553, 554, 554, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 556, 556, 556, 556, 556, 556, 557, 558, 558, 559, 559, 560, 560, 560, 560, 561, 561, 561, 561, 561, 561, 562, 563, 564, 564, 565, 565, 565, 565, 566, 566, 567, 567, 567, 567, 567, 567, 568, 568, 568, 569, 569, 569, 570, 570, 570, 570, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 572, 572, 573, 573, 574, 574, 574, 575, 575, 575, 575, 576, 576, 576, 576, 577, 577, 577, 577, 577, 577, 577, 577, 578, 578, 578, 579, 579, 580, 581, 581, 581, 581, 582, 582, 583, 583, 584, 584, 585, 585, 585, 585, 585, 586, 587, 587, 588, 588, 589, 590, 590, 590, 590, 590, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 592, 592, 593, 593, 593, 594, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, 596, 596, 597, 597, 598, 598, 599, 599, 599, 599, 600, 601, 601, 602, 602, 603, 603, 603, 603, 604, 604, 605, 605, 605, 605, 606, 606, 607, 607, 608, 608, 608, 608, 609, 610, 610, 611, 612, 612, 613, 613, 613, 613, 614, 614, 615, 615, 616, 616, 617, 617, 618, 618, 618, 619, 619, 620, 620, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 622, 622, 623, 623, 624, 624, 625, 625, 626, 627, 627, 627, 627, 627, 627, 628, 628, 629, 630, 630, 630, 630, 630, 630, 631, 631, 631, 631, 631, 631, 631, 631, 632, 632, 633, 633, 634, 634, 635, 635, 636, 636, 636, 637, 637, 638, 639, 639, 640, 640, 641, 641, 642, 642, 643, 643, 644, 644, 645, 645, 645, 645, 646, 646, 646, 646, 646, 646, 646, 646, 646, 647, 647, 647, 648, 648, 649, 649, 649, 649, 650, 651, 651, 651, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 653, 653, 654, 654, 654, 654, 654, 654, 654, 655, 655, 656, 656, 657, 657, 658, 658, 659, 659, 660, 661, 661, 662, 662, 662, 662, 663, 663, 664, 664, 665, 665, 666, 666, 666, 666, 666, 667, 668, 669, 669, 669, 669, 669, 670, 670, 671, 671, 672, 673, 673, 674, 674, 674, 675, 675, 676, 676, 676, 677, 677, 677, 677, 678, 678, 679, 679, 680, 681, 681, 682, 682, 683, 683, 683, 684, 684, 685, 685, 686, 687, 687, 687, 688, 688, 689, 690, 690, 691, 692, 692, 693, 693, 694, 694, 695, 695, 696, 696, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 698, 698, 699, 699, 699, 699, 700, 700, 701, 701, 702, 702, 703, 703, 704, 704, 705, 705, 706, 706, 707, 707, 708, 709, 709, 710, 710, 711, 711, 712, 712, 713, 713, 713, 713, 714, 715, 715, 716, 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, 717, 718, 719, 719, 719, 719, 720, 720, 721, 721, 722, 722, 723, 723, 724, 724, 725, 726, 726, 727, 727, 727, 727, 728, 729, 730, 731, 731, 732, 732, 733, 733, 734, 734, 735, 735, 735, 736, 736, 736, 736, 737, 738, 738, 739, 739, 740, 740, 741, 741, 742, 742, 743, 744, 745, 746, 746, 747, 747, 748, 748, 749, 749, 750, 750, 751, 751, 752, 752, 752, 752, 752, 753, 754, 754, 755, 755, 756, 756, 756, 757, 757, 758, 758, 758, 758, 758, 759, 759, 760, 760, 761, 762, 762, 763, 763, 764, 765, 765, 766, 766, 767, 767, 768, 768, 769, 769, 770, 770, 770, 771, 771, 771, 771, 772, 772, 773, 773, 774, 774, 774, 774, 774, 774, 775, 775, 776, 776, 777, 778, 778, 779, 780, 780, 780, 780, 781, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 783, 784, 784, 785, 785, 786, 786, 786, 786, 786, 786, 787, 788, 788, 789, 790, 790, 791, 791, 792, 792, 792, 792, 792, 793, 793, 794, 795, 795, 796, 796, 796, 796, 796, 797, 797, 798, 798, 799, 799, 799, 800, 800, 801, 802, 802, 803, 803, 804, 804, 805, 805, 806, 806, 807, 808, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 811, 811, 811, 811, 811, 812, 812, 812, 812, 812, 812, 812, 812, 813, 813, 813, 814, 814, 815, 815, 816, 816, 817, 817, 818, 819, 819, 819, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 821, 821, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 823, 823, 824, 824, 825, 825, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 827, 827, 828, 828, 829, 830, 830, 831, 831, 831, 831, 831, 832, 832, 833, 833, 833, 833, 833, 834, 834, 835, 835, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 837, 837, 838, 838, 839, 839, 840, 840, 841, 841, 842, 842, 843, 844, 844, 844, 845, 845, 846, 847, 847, 848, 848, 848, 849, 849, 849, 850, 850, 850, 850, 850, 850, 851, 851, 852, 852, 853, 853, 854, 854, 855, 855, 856, 856, 856, 857, 857, 858, 858, 859, 859, 860, 860, 860, 861, 861, 861, 862, 862, 862, 862, 863, 863, 864, 864, 865, 865, 866, 866, 867, 867, 867, 867, 868, 868, 869, 869, 870, 870, 870, 870, 870, 871, 871, 871, 871, 871, 872, 873, 874, 874, 874, 875, 875, 875, 876, 877, 877, 877, 877, 878, 878, 879, 880, 880, 881, 881, 882, 882, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 884, 884, 884, 884, 884, 885, 885, 886, 887, 887, 887, 888, 888, 889, 889, 890, 890, 891, 891, 892, 893, 893, 894, 894, 894, 895, 895, 896, 896, 897, 897, 897, 897, 897, 897, 898, 898, 899, 899, 900, 900, 900, 900, 901, 901, 902, 902, 903, 904, 905, 905, 906, 906, 907, 907, 907, 908, 908, 908, 909, 910, 910, 911, 912, 912, 912, 912, 913, 914, 914, 914, 915, 915, 916, 916, 917, 917, 918, 918, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 920, 920, 921, 921, 922, 922, 922, 922, 922, 922, 923, 923, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 925, 926, 926, 927, 927, 927, 928, 928, 928, 928, 928, 929, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 931, 931, 931, 932, 932, 932, 932, 932, 932, 932, 933, 933, 934, 934, 934, 934, 935, 936, 936, 936, 936, 936, 936, 936, 936, 936, 937, 937, 938, 939, 939, 939, 940, 940, 941, 941, 941, 941, 941, 942, 942, 943, 943, 943, 943, 944, 944, 944, 945, 946, 946, 947, 948, 948, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 950, 950, 951, 951, 951, 952, 952, 952, 952, 952, 953, 953, 953, 954, 954, 955, 955, 955, 956, 956, 956, 956, 957, 957, 957, 957, 958, 959, 960, 960, 961, 961, 962, 962, 962, 963, 963, 963, 963, 963, 963, 963, 964, 964, 965, 965, 965, 965, 966, 967, 967, 967, 967, 968, 968, 969, 970, 971, 971, 972, 973, 973, 973, 973, 973, 973, 973, 974, 974, 975, 976, 976, 976, 976, 976, 976, 977, 977, 978, 979, 979, 979, 979, 979, 980, 980, 981, 981, 982, 982, 983, 983, 984, 984, 985, 986, 986, 986, 987, 987, 987, 988, 988, 989, 989, 990, 990, 991, 991, 992, 992, 993, 994, 994, 995, 995, 996, 996, 996, 996, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 998, 999, 999, 1000, 1000, 1000, 1000, 1000, 1001, 1001, 1001, 1002, 1002, 1003, 1003, 1003, 1003, 1004, 1005, 1005, 1006, 1006, 1006, 1006, 1006, 1007, 1007, 1008, 1008, 1009, 1010, 1010, 1010, 1011, 1011, 1011, 1012, 1012, 1013, 1014, 1014, 1015, 1016, 1016, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1018, 1018, 1019, 1019, 1019, 1020, 1021, 1021, 1022, 1022, 1023, 1024, 1024, 1025, 1026, 1026, 1027, 1027, 1027, 1027, 1027, 1028, 1028, 1029, 1029, 1030, 1030, 1031, 1032, 1033, 1033, 1033, 1033, 1033, 1034, 1035, 1036, 1037, 1037, 1037, 1037, 1037, 1037, 1038, 1038, 1038, 1039, 1039, 1040, 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1042, 1042, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1044, 1044, 1044, 1045, 1045, 1046, 1047, 1047, 1047, 1048, 1048, 1048, 1049, 1049, 1049, 1050, 1050, 1051, 1051, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1053, 1053, 1054, 1054, 1054, 1055, 1055, 1056, 1056, 1057, 1057, 1058, 1058, 1059, 1060, 1060, 1061, 1061, 1062, 1062, 1062, 1062, 1063, 1063, 1064, 1064, 1064, 1064, 1064, 1064, 1065, 1065, 1066, 1066, 1067, 1068, 1068, 1068, 1069, 1069, 1070, 1070, 1071, 1071, 1072, 1072, 1073, 1073, 1074, 1074, 1074, 1074, 1074, 1075, 1076, 1077, 1078, 1079, 1079, 1080, 1080, 1081, 1081, 1082, 1082, 1083, 1084, 1084, 1084, 1084, 1085, 1085, 1086, 1086, 1087, 1087, 1088, 1088, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1090, 1090, 1090, 1090, 1090, 1090, 1091, 1091, 1091, 1091, 1092, 1092, 1093, 1093, 1094, 1094, 1094, 1094, 1094, 1095, 1095, 1095, 1095, 1096, 1096, 1097, 1097, 1098, 1098, 1099, 1099, 1099, 1100, 1100, 1101, 1101, 1101, 1102, 1103, 1103, 1104, 1104, 1105, 1106, 1106, 1107, 1107, 1108, 1108, 1109, 1109, 1110, 1110, 1110, 1111, 1111, 1112, 1112, 1113, 1114, 1114, 1115, 1115, 1116, 1116, 1116, 1117, 1117, 1118, 1118, 1118, 1118, 1118, 1119, 1119, 1120, 1120, 1121, 1122, 1122, 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1125, 1125, 1126, 1126, 1127, 1127, 1127, 1127, 1127, 1127, 1128, 1128, 1128, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1130, 1130, 1130, 1130, 1130, 1131, 1131, 1132, 1132, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1134, 1134, 1135, 1135, 1136, 1136, 1137, 1138, 1139, 1139, 1140, 1140, 1141, 1142, 1143, 1143, 1143, 1143, 1143, 1143, 1144, 1144, 1145, 1145, 1145, 1145, 1146, 1147, 1147, 1147, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1149, 1149, 1150, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1155, 1155, 1155, 1156, 1156, 1156, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1158, 1158, 1159, 1159, 1159, 1159, 1160, 1161, 1161, 1162, 1162, 1163, 1163, 1164, 1164, 1164, 1165, 1165, 1165, 1166, 1166, 1166, 1166, 1167, 1167, 1168, 1168, 1169, 1169, 1170, 1170, 1171, 1171, 1172, 1173, 1173, 1173, 1174, 1175, 1175, 1176, 1176, 1177, 1177, 1177, 1177, 1178, 1178, 1179, 1179, 1179, 1179, 1179, 1180, 1180, 1180, 1180, 1180, 1181, 1181, 1181, 1182, 1182, 1183, 1184, 1184, 1184, 1185, 1185, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1187, 1187, 1188, 1188, 1189, 1189, 1189, 1189, 1189, 1189, 1190, 1190, 1191, 1191, 1192, 1192, 1192, 1193, 1193, 1194, 1194, 1195, 1195, 1195, 1196, 1196, 1197, 1197, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1199, 1199, 1199, 1199, 1200, 1200, 1201, 1202, 1202, 1202, 1202, 1202, 1203, 1203, 1203, 1204, 1204, 1205, 1206, 1206, 1207, 1208, 1208, 1209, 1209, 1210, 1210, 1211, 1211, 1211, 1211, 1212, 1212, 1213, 1213, 1214, 1214, 1215, 1215, 1216, 1216, 1217, 1217, 1218, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1220, 1220, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1222, 1222, 1222, 1222, 1223, 1223, 1224, 1225, 1225, 1226, 1226, 1227, 1227, 1227, 1227, 1227, 1228, 1228, 1229, 1229, 1229, 1229, 1229, 1230, 1230, 1230, 1230, 1230, 1231, 1231, 1232, 1232, 1233, 1233, 1233, 1234, 1234, 1234, 1235, 1235, 1236, 1236, 1237, 1237, 1238, 1238, 1239, 1239, 1240, 1240, 1240, 1240, 1241, 1241, 1242, 1242, 1243, 1243, 1244, 1245, 1246, 1247, 1247, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1249, 1250, 1251, 1251, 1251, 1252, 1253, 1253, 1253, 1253, 1254, 1254, 1255, 1256, 1257, 1257, 1258, 1258, 1259, 1259, 1259, 1260, 1260, 1260, 1261, 1261, 1261, 1261, 1262, 1262, 1262, 1262, 1262, 1263, 1263, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 1, 2, 2, 2, 2, 2, 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, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 2, 5, 1, 1, 0, 2, 0, 2, 0, 2, 2, 2, 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, 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, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 2, 2, 2, 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, 5, 7, 1, 3, 4, 4, 4, 3, 2, 5, 3, 6, 4, 6, 6, 9, 5, 7, 6, 6, 5, 5, 5, 5, 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, 4, 3, 2, 2, 3, 4, 4, 4, 5, 1, 3, 2, 2, 0, 2, 0, 1, 1, 1, 3, 3, 2, 0, 1, 3, 3, 1, 5, 3, 1, 2, 1, 3, 2, 3, 1, 1, 1, 1, 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, 4, 3, 3, 2, 1, 0, 3, 0, 1, 0, 1, 3, 2, 1, 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, 6, 2, 4, 2, 2, 1, 0, 2, 2, 1, 0, 2, 0, 3, 1, 1, 2, 2, 1, 4, 4, 5, 2, 5, 7, 5, 2, 3, 0, 1, 2, 1, 2, 2, 2, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 5, 9, 3, 9, 4, 10, 11, 3, 1, 5, 3, 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, 3, 3, 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, 1, 3, 1, 1, 3, 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, 1, 2, 2, 2, 2, 3, 3, 3, 1, 3, 1, 1, 0, 1, 2, 2, 1, 1, 3, 6, 10, 1, 0, 1, 2, 2, 0, 2, 2, 1, 0, 1, 0, 7, 2, 0, 3, 5, 5, 8, 2, 0, 2, 2, 2, 1, 5, 2, 0, 2, 6, 6, 6, 10, 6, 6, 6, 9, 9, 6, 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, 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, 17, 21, 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, 6, 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, 1, 1, 1, 1, 1, 2, 2, 1, 3, 2, 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, 6, 8, 9, 8, 6, 6, 9, 9, 9, 7, 10, 1, 1, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 2, 0, 1, 1, 2, 2, 1, 2, 3, 3, 3, 3, 4, 4, 3, 3, 3, 4, 4, 3, 4, 4, 1, 1, 1, 0, 8, 8, 11, 1, 1, 2, 4, 5, 1, 3, 2, 2, 2, 2, 2, 1, 3, 1, 3, 1, 2, 2, 4, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 5, 5, 5, 5, 5, 1, 3, 1, 2, 3, 0, 5, 7, 6, 9, 3, 1, 2, 1, 1, 1, 3, 0, 5, 2, 0, 3, 3, 3, 7, 7, 10, 1, 1, 1, 1, 1, 1, 16, 19, 1, 0, 2, 0, 1, 3, 4, 5, 2, 2, 4, 4, 0, 1, 3, 2, 0, 1, 1, 0, 2, 2, 0, 9, 12, 7, 7, 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, 0, 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, 2, 1, 4, 0, 3, 0, 1, 1, 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, 5, 5, 5, 1, 1, 1, 1, 3, 0, 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, 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, 4, 7, 6, 4, 4, 4, 3, 4, 3, 1, 1, 3, 5, 5, 5, 5, 8, 5, 5, 6, 7, 7, 7, 4, 4, 5, 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, 2, 3, 2, 5, 4, 3, 3, 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, 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, 6, 4, 4, 2, 5, 2, 0, 6, 5, 3, 5, 1, 3, 1, 1, 2, 1, 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, 5, 3, 0, 1, 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, 10, 1, 2, 4, 4, 4, 5, 5, 2, 5, 3, 5, 2, 0, 3, 1, 2, 5, 5, 8, 3, 4, 7, 1, 0, 3, 2, 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, 9, 1, 2, 0, 7, 7, 0, 10, 6, 0, 1, 0, 2, 0, 3, 3, 4, 4, 4, 4, 3, 2, 1, 1, 0, 1, 1, 0, 1, 5, 1, 0, 1, 1, 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, 4, 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, 2, 3, 3, 4, 5, 4, 5, 4, 5, 2, 4, 1, 1, 0, 2, 0, 1, 4, 5, 4, 0, 2, 2, 2, 1, 1, 0, 5, 2, 1, 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, 2, 1, 3, 3, 2, 13, 2, 0, 1, 3, 3, 6, 7, 5, 7, 9, 1, 0, 2, 0, 2, 3, 5, 6, 2, 3, 3, 4, 0, 1, 1, 1, 1, 1, 2, 4, 1, 1, 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, 1, 3, 3, 5, 3, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 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, 3, 4, 4, 6, 3, 3, 4, 3, 4, 4, 5, 4, 5, 1, 1, 3, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 5, 6, 3, 4, 1, 1, 2, 4, 1, 1, 1, 2, 2, 2, 2, 1, 1, 4, 3, 5, 6, 8, 6, 6, 4, 4, 3, 1, 1, 1, 1, 5, 1, 1, 4, 1, 4, 1, 4, 1, 4, 1, 1, 1, 1, 1, 1, 1, 6, 4, 4, 6, 4, 4, 4, 4, 4, 6, 5, 5, 5, 4, 6, 4, 4, 4, 4, 5, 7, 7, 9, 5, 4, 6, 5, 7, 7, 8, 4, 7, 4, 6, 6, 4, 5, 4, 5, 3, 11, 8, 9, 2, 3, 3, 3, 4, 0, 4, 1, 3, 3, 1, 1, 1, 1, 2, 0, 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, 4, 1, 4, 1, 4, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 3, 1, 0, 1, 3, 3, 3, 2, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 5, 3, 5, 5, 3, 3, 5, 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, 2, 0, 1, 3, 3, 2, 3, 2, 3, 4, 4, 3, 3, 0, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 3, 3, 6, 0, 3, 0, 2, 4, 2, 1, 0, 5, 2, 5, 2, 0, 3, 0, 1, 2, 2, 2, 2, 3, 2, 3, 2, 0, 1, 3, 3, 3, 3, 3, 0, 3, 3, 0, 1, 3, 7, 7, 3, 0, 1, 0, 1, 3, 3, 2, 1, 1, 1, 3, 1, 2, 1, 3, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 6, 2, 6, 2, 3, 5, 2, 3, 5, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 3, 10, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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[] = { 1728, 1467, 673, 1556, 1555, 1467, 0, 276, 0, 1567, 0, 1467, 444, 1124, 0, 0, 0, 0, 673, 1467, 0, 1728, 0, 0, 0, 0, 0, 1741, 0, 0, 0, 0, 0, 1264, 0, 0, 0, 1467, 0, 0, 1748, 0, 0, 0, 0, 1741, 0, 1569, 0, 0, 0, 0, 1748, 0, 0, 0, 0, 0, 2, 9, 10, 45, 80, 81, 38, 37, 98, 63, 24, 71, 133, 132, 134, 50, 46, 88, 33, 35, 47, 51, 73, 75, 40, 53, 64, 110, 72, 31, 70, 76, 96, 58, 19, 20, 59, 21, 60, 22, 61, 106, 82, 99, 43, 69, 30, 52, 78, 79, 12, 54, 86, 18, 65, 66, 68, 91, 92, 93, 116, 94, 128, 49, 125, 103, 104, 122, 105, 123, 16, 107, 62, 23, 119, 118, 120, 89, 55, 90, 77, 97, 117, 34, 121, 25, 26, 28, 29, 27, 67, 36, 74, 39, 95, 124, 114, 109, 129, 127, 11, 135, 111, 83, 14, 15, 100, 13, 32, 57, 17, 42, 41, 56, 48, 131, 44, 1567, 102, 115, 101, 84, 108, 87, 112, 130, 113, 85, 126, 1692, 1691, 1752, 1695, 1727, 0, 1707, 1466, 1465, 1480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1477, 2462, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2495, 2494, 2496, 2497, 2869, 2498, 2499, 2500, 2806, 2807, 2870, 2808, 2809, 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2810, 2811, 2510, 2511, 2512, 2513, 2514, 2812, 2871, 2515, 2516, 2517, 2518, 2519, 2520, 2872, 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2873, 2531, 2532, 2533, 2874, 2534, 2535, 2536, 2537, 2538, 2539, 2813, 2814, 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, 2815, 2570, 2571, 2572, 2573, 2816, 2574, 2575, 2576, 2577, 2817, 2578, 2579, 2580, 2581, 2875, 2876, 2582, 2583, 2584, 2585, 2586, 2818, 2819, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2877, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, 2602, 2603, 2604, 2605, 2606, 2878, 2820, 2607, 2608, 2609, 2610, 2821, 2822, 2823, 2611, 2879, 2880, 2612, 2881, 2824, 2825, 2826, 2827, 2828, 2829, 2830, 2831, 2832, 2833, 2834, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2835, 2882, 2621, 2883, 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2633, 2634, 2836, 2635, 2636, 2637, 2638, 2639, 2640, 2641, 2642, 2837, 2884, 2838, 2643, 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2839, 2840, 2651, 2652, 2653, 2885, 2654, 2841, 2655, 2842, 2656, 2657, 2658, 2659, 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2843, 2886, 2667, 2887, 2844, 2668, 2669, 2670, 2671, 2672, 2673, 2674, 2675, 2676, 2677, 2678, 2679, 2680, 2681, 2845, 2682, 2846, 2685, 2683, 2684, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2695, 2696, 2847, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2888, 2716, 2717, 2718, 2719, 2720, 2848, 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2734, 2735, 2736, 2737, 2849, 2738, 2739, 2889, 2740, 2741, 2850, 2742, 2743, 2744, 2745, 2746, 2747, 2748, 2749, 2750, 2751, 2752, 2753, 2754, 2755, 2756, 2757, 2851, 2758, 2759, 2760, 2761, 2890, 2762, 2763, 2764, 2765, 2766, 2767, 2768, 2852, 2853, 2769, 2770, 2854, 2771, 2855, 2772, 2773, 2774, 2775, 2776, 2777, 2779, 2778, 2780, 2781, 2782, 2783, 2784, 2785, 2786, 2787, 2788, 2789, 2790, 2856, 2857, 2791, 2891, 2792, 2793, 2794, 2795, 2796, 2797, 2798, 2799, 2800, 2801, 2802, 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2865, 2866, 2867, 2868, 2803, 2804, 2805, 146, 0, 0, 2424, 2463, 2464, 2467, 2462, 414, 413, 1681, 2421, 2463, 1566, 0, 1545, 673, 0, 1480, 443, 1728, 0, 0, 0, 0, 0, 0, 890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 140, 0, 0, 468, 467, 0, 0, 1096, 473, 0, 0, 0, 0, 0, 663, 1608, 2683, 1606, 1682, 277, 280, 281, 278, 279, 2445, 0, 1236, 1237, 1239, 0, 0, 1249, 930, 931, 0, 0, 0, 944, 0, 0, 0, 928, 0, 0, 0, 950, 0, 947, 0, 0, 951, 948, 925, 949, 932, 0, 924, 0, 0, 1249, 952, 0, 0, 926, 0, 0, 0, 0, 1480, 1605, 474, 1728, 0, 1589, 1590, 1591, 1567, 1579, 1592, 1584, 1586, 1585, 1587, 1588, 1583, 2444, 2481, 1020, 1020, 1020, 1020, 1017, 1018, 1020, 1020, 1020, 2704, 0, 0, 999, 0, 1001, 2446, 1020, 1025, 2489, 553, 553, 553, 0, 1024, 1029, 553, 0, 1448, 1489, 2423, 1740, 0, 1000, 1447, 2769, 1595, 0, 0, 0, 0, 2723, 1457, 261, 2735, 2852, 2769, 260, 255, 256, 227, 0, 0, 1024, 553, 0, 1480, 1455, 996, 1747, 1745, 0, 2408, 2508, 2525, 2624, 252, 2716, 2725, 2735, 2852, 2769, 2802, 203, 213, 208, 0, 270, 2735, 2852, 2769, 266, 1477, 0, 1708, 1858, 1857, 2417, 0, 1450, 1449, 1568, 0, 1571, 0, 2699, 1712, 1715, 1573, 1713, 2465, 1951, 1980, 1958, 1980, 1980, 1947, 1947, 2555, 1960, 1948, 1949, 1985, 2005, 0, 1980, 1947, 1952, 0, 1950, 1988, 1988, 1975, 3, 1930, 1931, 1932, 1933, 1961, 1962, 1934, 1967, 1968, 1972, 1935, 2002, 1938, 1947, 2466, 1749, 1750, 2408, 4, 2459, 5, 2335, 2458, 6, 7, 1704, 0, 0, 1, 1728, 0, 1578, 1744, 1744, 0, 1744, 0, 1696, 1704, 1699, 1703, 0, 0, 0, 0, 0, 0, 1451, 0, 0, 0, 955, 0, 1492, 1081, 0, 0, 0, 0, 0, 1333, 0, 1133, 1132, 2468, 2451, 2452, 2453, 0, 2449, 2450, 2469, 2470, 2471, 0, 2593, 1333, 0, 0, 2250, 2261, 2262, 2263, 2512, 2574, 2258, 2259, 2260, 2252, 2253, 2254, 2255, 2256, 2257, 0, 0, 1231, 2251, 0, 2593, 0, 1333, 0, 175, 0, 150, 1333, 0, 0, 2593, 0, 0, 2593, 0, 0, 0, 0, 0, 2593, 0, 0, 0, 0, 0, 175, 2629, 0, 150, 2593, 0, 0, 1471, 0, 0, 0, 1473, 1476, 1463, 0, 2332, 0, 2333, 2425, 1560, 0, 1559, 1553, 1563, 1558, 1548, 0, 2417, 0, 0, 0, 0, 938, 0, 0, 928, 0, 0, 0, 939, 0, 940, 941, 0, 0, 0, 0, 937, 0, 1461, 1453, 0, 1597, 1599, 1598, 1600, 1596, 553, 0, 0, 0, 2593, 0, 150, 1531, 0, 2593, 150, 0, 0, 472, 471, 150, 2449, 470, 469, 2512, 2574, 0, 1123, 0, 1206, 150, 2593, 0, 196, 2593, 732, 2593, 1573, 139, 0, 676, 0, 844, 2629, 150, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 662, 673, 1609, 1607, 0, 1240, 254, 253, 1238, 942, 2593, 1165, 145, 0, 0, 2593, 1512, 2593, 145, 959, 943, 0, 929, 2593, 145, 1129, 2593, 2454, 185, 0, 927, 2512, 2574, 2593, 145, 1233, 0, 2593, 145, 2593, 181, 2593, 145, 2593, 145, 2593, 677, 0, 0, 2593, 145, 2593, 2629, 183, 946, 2593, 145, 953, 2593, 145, 2419, 2593, 0, 1464, 0, 1601, 0, 1581, 2856, 0, 1728, 1020, 1019, 0, 1020, 0, 1020, 0, 1020, 0, 1020, 0, 0, 0, 1020, 2447, 2448, 1002, 0, 1026, 0, 1034, 0, 1033, 1032, 1031, 0, 0, 0, 1035, 0, 1862, 1636, 0, 1445, 1460, 0, 0, 0, 142, 0, 1262, 1259, 142, 1261, 1260, 142, 142, 1456, 259, 257, 0, 0, 0, 0, 0, 0, 1462, 0, 1454, 0, 0, 0, 2427, 2429, 2430, 2264, 2335, 0, 2807, 2808, 2809, 2324, 0, 2810, 2811, 2812, 2871, 2138, 2124, 2133, 2139, 2125, 2127, 2134, 2813, 2814, 2073, 2815, 2816, 2442, 2817, 2818, 2819, 2821, 2822, 2823, 2824, 2825, 2826, 2827, 2828, 2829, 2830, 2831, 2832, 2834, 2835, 2129, 2131, 2836, 2837, 2838, 2840, 0, 2443, 2841, 2842, 2662, 2844, 2845, 2847, 2848, 2135, 2850, 2851, 2136, 2852, 2853, 2854, 2855, 2441, 516, 2137, 2857, 2859, 2860, 2861, 2862, 2864, 2865, 2866, 2867, 0, 0, 0, 2414, 0, 2102, 0, 1939, 1940, 1963, 1964, 1941, 1969, 1970, 1942, 0, 1943, 2413, 2006, 2209, 2101, 2119, 0, 2107, 2108, 0, 2100, 2096, 2211, 1730, 2409, 0, 2097, 2426, 2428, 2325, 1730, 2407, 216, 272, 0, 273, 2415, 2735, 204, 251, 219, 250, 221, 220, 218, 217, 0, 2510, 205, 0, 0, 206, 0, 0, 0, 0, 269, 267, 0, 1452, 0, 1860, 1859, 2418, 964, 0, 1570, 1567, 2274, 0, 1714, 0, 0, 0, 1979, 1966, 1974, 1973, 0, 1956, 1955, 1954, 0, 1953, 1980, 1980, 1978, 1957, 1930, 0, 0, 0, 1984, 0, 1982, 1926, 1922, 0, 1991, 1992, 1993, 1990, 2003, 1989, 0, 1936, 1994, 0, 1947, 1944, 1815, 0, 1694, 1693, 8, 0, 1575, 1577, 1551, 1573, 1742, 1743, 0, 0, 0, 0, 0, 0, 0, 0, 1802, 1760, 1761, 1763, 1799, 1803, 1811, 0, 1700, 0, 0, 0, 1864, 0, 0, 1478, 0, 0, 0, 0, 0, 1164, 0, 0, 0, 0, 956, 0, 0, 0, 1498, 0, 1500, 1501, 1502, 0, 0, 0, 1503, 1504, 1492, 263, 1511, 1508, 1491, 1493, 1506, 0, 0, 0, 0, 0, 0, 0, 1523, 0, 189, 190, 0, 689, 673, 0, 2593, 0, 0, 0, 0, 1174, 1181, 1332, 0, 0, 0, 0, 0, 0, 0, 0, 1175, 1173, 0, 1176, 265, 1186, 1213, 1216, 0, 0, 1131, 1134, 0, 0, 0, 0, 0, 1323, 0, 0, 0, 1323, 0, 0, 0, 1332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 288, 290, 303, 369, 0, 654, 0, 0, 0, 657, 0, 2593, 1333, 0, 0, 0, 1235, 0, 0, 0, 0, 0, 0, 0, 0, 1216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 149, 154, 0, 0, 0, 0, 1216, 0, 0, 0, 0, 0, 0, 0, 638, 653, 641, 0, 0, 0, 0, 0, 649, 0, 0, 150, 651, 293, 628, 634, 0, 0, 0, 739, 738, 0, 0, 0, 0, 0, 0, 1421, 0, 1420, 0, 0, 0, 0, 0, 1521, 1520, 0, 0, 0, 0, 0, 0, 1323, 0, 282, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 406, 407, 0, 0, 0, 154, 0, 0, 1323, 0, 295, 0, 0, 1472, 1469, 1470, 0, 1475, 0, 0, 0, 0, 2110, 0, 2278, 1752, 2276, 2424, 2331, 0, 2472, 2892, 2893, 2894, 2895, 2896, 2897, 2898, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2906, 2907, 2908, 2909, 2910, 2911, 2912, 2913, 2914, 2915, 2916, 2917, 2918, 2919, 2920, 2921, 2922, 2923, 2924, 2925, 2926, 2927, 2928, 2929, 2930, 2931, 2932, 2933, 2934, 2935, 2936, 2937, 2938, 2939, 2940, 2941, 2942, 2943, 2944, 2945, 2946, 2947, 2948, 2949, 2950, 2951, 2952, 2953, 2954, 2955, 2956, 2957, 2958, 2959, 2960, 2961, 2962, 2963, 2964, 2965, 2966, 2967, 2968, 2969, 2328, 2327, 2422, 2473, 2474, 2475, 2476, 2334, 1543, 0, 239, 240, 238, 1561, 241, 1562, 1557, 0, 1544, 0, 0, 0, 0, 0, 0, 0, 0, 2512, 2574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 852, 1492, 1530, 0, 0, 0, 682, 0, 2593, 0, 152, 891, 0, 842, 473, 0, 0, 0, 0, 1397, 152, 0, 0, 192, 0, 0, 736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 843, 0, 0, 152, 0, 2593, 631, 2593, 0, 553, 553, 0, 0, 141, 138, 0, 0, 0, 0, 0, 0, 0, 0, 1686, 1685, 1688, 1687, 0, 1684, 0, 143, 144, 0, 1223, 1248, 0, 0, 0, 0, 0, 920, 945, 0, 0, 1217, 0, 0, 2593, 145, 2593, 0, 2593, 0, 0, 0, 1225, 145, 0, 1219, 0, 0, 1221, 0, 1423, 0, 936, 934, 933, 935, 0, 0, 918, 0, 0, 0, 0, 0, 913, 0, 0, 915, 0, 0, 0, 0, 1728, 1580, 0, 1010, 0, 1014, 0, 1005, 0, 1011, 0, 1006, 1003, 1004, 0, 1009, 0, 0, 554, 556, 0, 0, 2537, 2554, 0, 2582, 2617, 2618, 2672, 2689, 2719, 2725, 2731, 0, 2762, 2774, 0, 1040, 1078, 1030, 748, 0, 0, 1646, 1446, 2283, 0, 1728, 0, 0, 1263, 0, 0, 138, 258, 228, 0, 0, 1078, 0, 2723, 1459, 995, 673, 0, 2098, 0, 2105, 2106, 2323, 0, 0, 0, 0, 0, 0, 2104, 0, 0, 0, 0, 2380, 0, 0, 2380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2029, 0, 0, 2282, 0, 0, 2282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2030, 2011, 2012, 2102, 2274, 0, 2103, 2438, 2435, 2002, 0, 2002, 2477, 2264, 0, 2261, 2262, 2263, 2970, 2971, 2972, 2973, 2974, 2975, 2976, 2977, 2978, 2979, 2980, 2981, 2982, 2983, 2984, 2985, 2986, 0, 2987, 2988, 2989, 2990, 2991, 2993, 2992, 2994, 2995, 2996, 2997, 2998, 2999, 2338, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019, 3020, 3021, 3022, 3023, 3024, 3025, 3026, 3027, 3028, 3029, 3030, 3031, 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3039, 3040, 3041, 3042, 3043, 3044, 3045, 3046, 3047, 3048, 3049, 3050, 3051, 3052, 3053, 3054, 3055, 3056, 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064, 3065, 3066, 3067, 3068, 3069, 3070, 3071, 3072, 3073, 3074, 3075, 3076, 3077, 3078, 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086, 3087, 3088, 3089, 3090, 3091, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099, 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3110, 3111, 3112, 3113, 3114, 3115, 3116, 3117, 3118, 3119, 3120, 3121, 3122, 3123, 3124, 3125, 3126, 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3136, 3137, 3138, 3139, 3140, 3141, 3142, 3143, 3144, 3145, 3146, 3147, 3148, 3149, 3150, 3151, 3152, 3153, 3154, 3155, 3156, 3157, 2044, 3158, 3159, 3160, 3161, 3162, 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 3172, 3173, 3174, 3175, 3176, 3177, 3178, 3179, 3180, 3181, 3182, 3183, 3184, 3185, 3186, 3187, 3188, 3189, 3190, 3191, 3192, 3193, 3194, 3195, 3196, 3197, 3198, 3199, 3200, 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208, 3209, 3210, 3211, 3212, 3213, 3214, 3215, 3216, 3217, 3218, 3219, 3220, 3221, 3222, 3223, 2046, 3224, 3225, 3226, 3227, 3228, 3229, 3230, 3231, 3232, 3233, 3234, 3235, 3236, 3237, 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3245, 3246, 3247, 3248, 3249, 3250, 3251, 3252, 3253, 3254, 3255, 3256, 3257, 3258, 3259, 3260, 3261, 3264, 3262, 3263, 3265, 3266, 3267, 3268, 3269, 3270, 3271, 3272, 3273, 3274, 3275, 3276, 3277, 3278, 3279, 3280, 3281, 3282, 3283, 3284, 3285, 3286, 3287, 3288, 3289, 3290, 3291, 3292, 3293, 3294, 3295, 3296, 3297, 3298, 3299, 3300, 3301, 3302, 3303, 3304, 3305, 3306, 3307, 3308, 3309, 3310, 3311, 3312, 3313, 3314, 3315, 3316, 3317, 3318, 3319, 3320, 3321, 3323, 3322, 3324, 3325, 3326, 3327, 3328, 3329, 3330, 3331, 3332, 3333, 3334, 3335, 3336, 3337, 3338, 3339, 3340, 3341, 3342, 3343, 3344, 3345, 3346, 3347, 3348, 3349, 3350, 3351, 3352, 3353, 3354, 3355, 3356, 3357, 3358, 3359, 3360, 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 3369, 3370, 3371, 3372, 3373, 3374, 3375, 3376, 3377, 3378, 3380, 3379, 3381, 3382, 3383, 3384, 3385, 3386, 3387, 3388, 3389, 3390, 3391, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3399, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3413, 3414, 3415, 3416, 3417, 3418, 3419, 3420, 3421, 0, 2258, 2259, 2260, 2252, 2253, 2254, 2255, 2256, 2257, 2268, 0, 0, 2412, 2478, 0, 2211, 0, 2026, 0, 2219, 0, 0, 1815, 2433, 0, 2431, 2326, 1815, 274, 275, 271, 0, 0, 223, 224, 222, 0, 244, 243, 248, 249, 215, 247, 0, 242, 226, 2195, 2194, 225, 214, 233, 211, 209, 229, 231, 232, 212, 210, 268, 0, 0, 0, 145, 1578, 1565, 0, 0, 2338, 0, 2272, 0, 0, 2270, 0, 0, 0, 1812, 0, 1716, 0, 1720, 0, 0, 0, 1977, 1976, 1927, 1923, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 957, 0, 1945, 0, 1880, 2460, 2461, 2336, 1748, 1578, 0, 1574, 1711, 1710, 1753, 1754, 1115, 1709, 1782, 1783, 0, 0, 0, 0, 1808, 1806, 1773, 1764, 1772, 0, 0, 1770, 0, 1774, 2006, 1801, 1698, 1758, 1759, 1762, 1697, 0, 1804, 0, 1649, 1802, 1763, 1633, 0, 1611, 0, 0, 1865, 0, 0, 1479, 0, 0, 0, 1144, 1146, 0, 1145, 0, 1148, 0, 1157, 0, 0, 1143, 1162, 0, 1151, 1149, 0, 1519, 0, 0, 0, 0, 0, 1499, 0, 0, 0, 2762, 262, 1502, 1507, 1494, 1505, 0, 0, 0, 0, 0, 1080, 1079, 0, 0, 0, 1526, 547, 0, 371, 0, 0, 0, 0, 0, 0, 0, 0, 838, 835, 0, 0, 834, 0, 687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 712, 0, 1323, 0, 301, 0, 1183, 0, 1182, 0, 1187, 0, 0, 1184, 1179, 1180, 2725, 2735, 2769, 264, 1185, 1215, 0, 1214, 1210, 0, 1126, 0, 1127, 0, 0, 0, 0, 0, 0, 0, 2566, 0, 2593, 0, 516, 309, 333, 538, 0, 1322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 355, 0, 0, 358, 357, 0, 0, 0, 0, 0, 363, 0, 341, 0, 342, 0, 362, 0, 0, 0, 655, 656, 0, 0, 0, 1323, 0, 297, 0, 0, 0, 0, 0, 0, 0, 0, 1232, 0, 765, 0, 0, 2725, 1211, 0, 1406, 0, 2761, 1407, 1410, 553, 0, 553, 1412, 0, 0, 1409, 1411, 0, 0, 178, 0, 173, 177, 0, 0, 2725, 1212, 0, 0, 0, 0, 0, 636, 637, 652, 0, 642, 643, 639, 644, 645, 0, 0, 0, 0, 0, 0, 0, 635, 0, 0, 734, 733, 737, 0, 0, 0, 0, 0, 0, 1415, 0, 0, 1206, 0, 0, 1414, 1422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1266, 1265, 0, 0, 0, 0, 1333, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 752, 0, 751, 0, 174, 179, 0, 0, 0, 0, 0, 0, 0, 0, 237, 1468, 1474, 1752, 1752, 1752, 2116, 0, 0, 0, 0, 1751, 2329, 2332, 1548, 1554, 1547, 1546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 417, 418, 420, 0, 0, 0, 0, 854, 0, 857, 860, 1490, 500, 0, 0, 679, 712, 0, 0, 476, 187, 0, 0, 0, 0, 767, 0, 1206, 1205, 147, 138, 196, 474, 0, 195, 197, 199, 200, 201, 198, 202, 0, 731, 735, 0, 0, 0, 0, 675, 0, 0, 0, 0, 0, 0, 0, 1885, 0, 0, 172, 0, 0, 626, 630, 0, 0, 0, 0, 476, 592, 382, 2593, 0, 553, 0, 2593, 0, 137, 0, 841, 0, 0, 0, 1168, 1168, 0, 0, 781, 780, 0, 0, 0, 0, 0, 0, 1683, 145, 1166, 0, 1513, 0, 145, 960, 145, 1130, 186, 2455, 0, 922, 0, 0, 0, 0, 145, 1234, 910, 145, 182, 145, 145, 678, 0, 145, 184, 0, 0, 145, 954, 145, 2420, 0, 145, 1604, 2593, 553, 1582, 1007, 1016, 1015, 1013, 1012, 1008, 0, 1027, 0, 552, 0, 0, 0, 0, 0, 1048, 1049, 0, 0, 1045, 1050, 0, 1052, 1036, 1038, 1046, 1047, 1053, 1042, 1041, 1054, 1055, 0, 0, 0, 1067, 746, 0, 0, 0, 0, 1643, 0, 1641, 0, 1863, 1645, 1634, 1594, 0, 1593, 0, 619, 1257, 1256, 1258, 0, 1024, 0, 145, 0, 1458, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2287, 0, 2288, 0, 0, 2322, 2318, 0, 0, 0, 0, 0, 2292, 0, 2295, 2296, 2297, 2294, 2298, 2293, 0, 0, 2299, 0, 0, 2373, 2390, 0, 2102, 2373, 2401, 0, 2400, 2406, 0, 2278, 2006, 0, 0, 2397, 2391, 0, 2397, 0, 0, 2380, 0, 0, 0, 0, 2179, 0, 0, 0, 2278, 2281, 0, 0, 2848, 0, 0, 0, 0, 2074, 0, 0, 2245, 0, 2278, 0, 0, 0, 0, 0, 0, 0, 2274, 2314, 0, 514, 0, 2064, 0, 0, 0, 2193, 0, 2190, 0, 0, 0, 0, 2335, 0, 2439, 0, 2436, 2007, 2022, 2023, 2024, 2027, 2411, 2010, 0, 2337, 0, 0, 2008, 2035, 0, 2315, 2060, 0, 2065, 2050, 2381, 2300, 2301, 2302, 2303, 2067, 0, 2043, 2048, 2052, 0, 2390, 2031, 0, 2028, 0, 2338, 2273, 0, 2271, 0, 2019, 2020, 2021, 2013, 2014, 2015, 2016, 2017, 2018, 2025, 2249, 2247, 2248, 0, 0, 2219, 0, 0, 2047, 0, 0, 2118, 2585, 2624, 0, 1741, 1741, 1741, 1729, 1739, 2410, 1880, 1752, 1880, 2416, 0, 0, 2002, 0, 1861, 962, 963, 961, 1550, 1564, 1578, 2275, 1572, 1718, 0, 0, 0, 1946, 1959, 0, 1986, 1987, 1988, 1988, 0, 1928, 0, 1971, 1996, 1997, 1998, 1999, 2000, 2001, 0, 1995, 1937, 958, 2824, 2833, 0, 2721, 2868, 0, 1841, 1814, 1816, 1826, 1841, 1848, 1841, 1841, 2120, 1878, 2121, 2122, 2417, 0, 1785, 2457, 1552, 1576, 0, 1113, 1114, 0, 1118, 2848, 2721, 0, 0, 0, 0, 1775, 1809, 0, 1800, 0, 2427, 1776, 2426, 1777, 1780, 1781, 1771, 1810, 1647, 0, 1805, 1702, 1701, 0, 1883, 0, 0, 0, 1625, 1613, 0, 0, 1866, 0, 1815, 1651, 0, 2335, 1813, 1373, 1267, 1334, 1147, 0, 1947, 1158, 0, 1142, 0, 1141, 1947, 0, 1159, 0, 1947, 1374, 1268, 1335, 1375, 1269, 1336, 1376, 1510, 1270, 1509, 1497, 1496, 1495, 0, 0, 0, 0, 0, 0, 0, 0, 819, 2593, 145, 1524, 1377, 0, 1271, 370, 1525, 1337, 1529, 837, 836, 0, 0, 1338, 0, 688, 693, 0, 695, 696, 2512, 2574, 697, 700, 701, 0, 703, 692, 691, 0, 0, 0, 0, 0, 709, 714, 0, 0, 0, 0, 0, 0, 1177, 1178, 1378, 1274, 0, 1339, 0, 1125, 0, 1275, 188, 0, 0, 289, 0, 2593, 311, 0, 0, 0, 0, 0, 0, 0, 0, 819, 498, 819, 0, 1325, 308, 339, 0, 354, 349, 350, 348, 2593, 145, 2593, 145, 0, 0, 0, 0, 0, 351, 346, 347, 343, 0, 0, 356, 2484, 2556, 2736, 0, 720, 722, 0, 727, 359, 1295, 378, 377, 376, 0, 364, 0, 383, 386, 0, 361, 340, 338, 335, 304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1227, 0, 1381, 1340, 0, 1362, 1366, 0, 0, 0, 759, 1384, 1281, 1343, 0, 553, 0, 0, 568, 568, 553, 1395, 1282, 176, 1312, 165, 0, 0, 161, 0, 0, 0, 0, 153, 1385, 1283, 1344, 0, 0, 1386, 1284, 0, 0, 294, 629, 640, 646, 1289, 650, 647, 1352, 648, 1393, 1285, 0, 1389, 1315, 1347, 396, 612, 395, 1206, 1206, 1396, 1416, 1286, 1206, 0, 1323, 0, 283, 285, 0, 142, 0, 1287, 0, 1345, 1388, 1314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1532, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 1325, 2593, 145, 879, 1387, 0, 1320, 0, 1360, 0, 0, 0, 408, 0, 1313, 1323, 0, 296, 1291, 0, 1354, 0, 0, 235, 234, 236, 0, 0, 0, 0, 2279, 2280, 0, 2277, 2111, 2331, 0, 1542, 984, 970, 983, 0, 966, 2554, 0, 969, 971, 0, 0, 0, 972, 976, 977, 0, 968, 965, 967, 0, 419, 0, 0, 776, 777, 0, 0, 0, 0, 856, 0, 0, 1522, 0, 150, 686, 0, 0, 0, 681, 711, 716, 0, 0, 0, 0, 475, 479, 483, 484, 485, 0, 0, 0, 0, 166, 151, 0, 899, 0, 553, 0, 769, 1206, 1399, 0, 196, 191, 0, 0, 732, 0, 1573, 0, 0, 607, 610, 609, 0, 382, 851, 849, 848, 850, 872, 847, 0, 1884, 1886, 0, 0, 0, 0, 0, 0, 619, 478, 0, 0, 556, 0, 595, 0, 0, 0, 0, 592, 0, 0, 0, 2465, 0, 868, 840, 0, 1136, 0, 1154, 1137, 0, 0, 0, 0, 1191, 1198, 1167, 1192, 1169, 1198, 0, 0, 782, 786, 785, 789, 787, 0, 783, 660, 1689, 1690, 0, 1224, 0, 0, 1518, 0, 1516, 921, 1218, 145, 0, 145, 0, 145, 1226, 1220, 1222, 1424, 0, 919, 0, 0, 912, 914, 0, 916, 0, 1028, 555, 0, 0, 0, 0, 0, 0, 1044, 658, 1051, 0, 0, 0, 1066, 1061, 1063, 0, 1078, 1072, 0, 745, 0, 0, 1644, 1637, 1639, 1638, 0, 0, 1635, 2284, 911, 0, 625, 0, 1078, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1746, 2285, 2286, 0, 0, 0, 2319, 0, 0, 2155, 0, 2126, 2128, 0, 2141, 0, 2156, 2109, 0, 2372, 2369, 0, 0, 0, 2373, 2380, 2175, 0, 0, 0, 2380, 0, 2400, 0, 0, 0, 2170, 2172, 0, 0, 0, 2390, 2390, 0, 2177, 0, 0, 2157, 2130, 2132, 2142, 0, 0, 2265, 0, 2145, 2144, 0, 2076, 2077, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2091, 2146, 2244, 0, 0, 0, 2148, 2147, 0, 0, 2313, 0, 0, 0, 2153, 515, 2158, 0, 0, 0, 0, 2164, 0, 2201, 0, 0, 0, 2099, 2275, 0, 0, 0, 0, 0, 0, 0, 2383, 2384, 2385, 2382, 0, 2066, 2051, 2069, 2045, 2049, 2053, 0, 2390, 2068, 2071, 0, 0, 2039, 0, 0, 2037, 2061, 2033, 0, 0, 2062, 0, 2117, 0, 0, 0, 2222, 2217, 2218, 1741, 1741, 1741, 1741, 1738, 0, 0, 0, 1785, 0, 1785, 207, 0, 245, 230, 1549, 1719, 1728, 1965, 0, 1983, 1981, 1924, 1929, 2004, 0, 1841, 1848, 1841, 1841, 0, 0, 1704, 0, 1826, 0, 1840, 1824, 1839, 0, 0, 1854, 1852, 0, 1854, 0, 1854, 0, 1818, 0, 1844, 1820, 1839, 1822, 1828, 0, 1870, 2418, 1879, 0, 1798, 1755, 0, 2266, 1118, 0, 1757, 1779, 1778, 0, 1768, 0, 1807, 1765, 1648, 1632, 0, 1630, 1617, 1619, 1618, 0, 0, 1620, 2335, 0, 1630, 1612, 0, 1656, 0, 0, 1883, 0, 1655, 0, 1947, 1139, 1140, 0, 1163, 0, 1083, 1084, 0, 1082, 0, 0, 0, 546, 549, 0, 1527, 0, 1394, 1311, 690, 0, 0, 0, 0, 705, 664, 706, 708, 0, 0, 707, 710, 713, 1323, 0, 302, 1297, 0, 1358, 1171, 0, 0, 1128, 0, 0, 0, 0, 0, 1099, 537, 1098, 0, 0, 0, 0, 819, 0, 0, 541, 0, 497, 494, 334, 0, 0, 0, 0, 391, 0, 313, 326, 389, 332, 0, 366, 0, 337, 0, 330, 352, 344, 353, 345, 365, 367, 0, 724, 725, 723, 719, 0, 726, 728, 0, 380, 0, 0, 0, 398, 360, 397, 0, 1380, 0, 1323, 0, 298, 1293, 0, 1356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1361, 0, 0, 0, 0, 764, 0, 761, 0, 568, 0, 1408, 0, 1405, 1403, 568, 0, 0, 156, 157, 155, 0, 164, 0, 0, 0, 0, 0, 0, 1417, 1418, 1419, 0, 0, 0, 0, 0, 0, 402, 0, 305, 307, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 409, 373, 0, 875, 0, 0, 0, 411, 0, 0, 1372, 0, 0, 0, 0, 0, 1379, 1276, 2114, 2115, 2112, 1752, 2330, 0, 0, 0, 981, 0, 0, 0, 0, 422, 423, 150, 421, 446, 0, 819, 0, 0, 853, 858, 866, 2662, 2252, 2253, 864, 859, 861, 863, 865, 862, 0, 0, 0, 0, 519, 0, 0, 0, 506, 0, 0, 516, 499, 502, 503, 0, 0, 682, 685, 683, 684, 0, 704, 0, 478, 526, 582, 0, 168, 0, 0, 169, 167, 0, 0, 382, 766, 0, 763, 1398, 0, 194, 0, 736, 0, 0, 0, 0, 0, 1206, 674, 0, 871, 873, 845, 0, 716, 0, 0, 631, 0, 553, 1605, 614, 0, 584, 478, 582, 591, 0, 0, 599, 381, 0, 0, 619, 382, 0, 0, 1099, 0, 867, 0, 0, 1135, 0, 0, 0, 1188, 1193, 1189, 0, 1168, 1150, 0, 1190, 0, 0, 1196, 1121, 1170, 1122, 1440, 1441, 1438, 1439, 0, 0, 0, 0, 0, 0, 1680, 0, 0, 1514, 0, 923, 0, 906, 0, 908, 145, 753, 0, 145, 0, 0, 0, 0, 0, 0, 1043, 0, 1037, 1039, 1064, 0, 0, 1078, 1077, 0, 1068, 1076, 1074, 1075, 1073, 0, 0, 1642, 1640, 617, 0, 0, 145, 1078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2289, 0, 2321, 2317, 0, 2123, 2291, 2290, 2371, 2387, 2389, 2176, 2379, 0, 0, 0, 2402, 0, 0, 2380, 2340, 2394, 2393, 0, 0, 2392, 2380, 2380, 2340, 2178, 2340, 0, 0, 0, 2245, 0, 0, 2075, 2087, 2088, 2089, 2306, 0, 2094, 0, 2084, 2085, 2086, 2078, 2079, 2080, 2081, 2082, 2083, 2090, 2310, 2309, 0, 0, 2150, 2151, 2152, 2312, 2159, 0, 2502, 2202, 0, 2163, 2192, 2191, 0, 0, 0, 2166, 0, 0, 2188, 0, 2246, 2440, 2437, 2009, 0, 0, 2036, 2316, 2054, 0, 2070, 2072, 2032, 2265, 0, 0, 0, 0, 0, 2041, 0, 0, 2242, 0, 0, 0, 2224, 2221, 0, 0, 0, 0, 1732, 1731, 1737, 1798, 2111, 1798, 0, 0, 1925, 0, 1825, 1821, 1823, 1829, 0, 2863, 0, 1830, 1837, 0, 1817, 0, 1853, 1849, 0, 1850, 0, 0, 1851, 0, 0, 1819, 0, 1837, 0, 1877, 1744, 0, 2213, 0, 1756, 1116, 1117, 1766, 0, 1769, 2533, 1881, 0, 1631, 0, 0, 0, 1622, 1628, 1610, 0, 0, 0, 1652, 1630, 1653, 1160, 0, 0, 1152, 1089, 1090, 1093, 1091, 1088, 1092, 0, 0, 0, 819, 822, 0, 0, 0, 820, 145, 1272, 0, 0, 0, 0, 665, 1392, 1273, 0, 0, 0, 0, 1172, 1326, 0, 0, 1296, 819, 0, 0, 0, 563, 0, 1112, 1112, 0, 310, 0, 543, 604, 0, 496, 495, 0, 493, 716, 0, 0, 317, 327, 0, 322, 0, 1324, 0, 0, 0, 0, 321, 324, 323, 393, 0, 390, 0, 145, 145, 368, 721, 379, 384, 385, 388, 1331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 900, 883, 0, 0, 901, 902, 0, 0, 0, 1229, 1230, 1228, 1363, 1364, 1370, 1367, 1365, 1369, 1371, 1368, 0, 1279, 0, 0, 757, 1327, 1400, 1402, 1401, 0, 1404, 162, 159, 158, 160, 163, 1328, 1309, 1290, 1353, 613, 0, 0, 0, 1288, 0, 1346, 0, 1305, 1299, 0, 0, 0, 0, 0, 1391, 1319, 1351, 1390, 1317, 1349, 1316, 1348, 1318, 1350, 1310, 0, 0, 1888, 880, 0, 0, 0, 145, 145, 878, 755, 1292, 0, 1355, 1301, 0, 0, 0, 973, 0, 0, 0, 975, 427, 447, 150, 0, 775, 839, 0, 0, 855, 0, 504, 0, 510, 517, 0, 0, 521, 522, 520, 505, 1206, 553, 1206, 808, 809, 0, 0, 829, 0, 680, 0, 0, 476, 0, 523, 0, 0, 480, 171, 170, 0, 0, 0, 770, 774, 772, 771, 773, 768, 0, 759, 196, 2593, 0, 0, 0, 0, 611, 605, 608, 1413, 846, 0, 1887, 749, 0, 382, 627, 0, 0, 0, 476, 619, 0, 481, 486, 487, 500, 0, 592, 583, 0, 584, 593, 594, 0, 601, 1488, 0, 620, 601, 0, 0, 0, 870, 0, 869, 0, 1138, 1155, 1156, 0, 0, 1198, 0, 0, 1200, 1195, 0, 0, 788, 791, 784, 667, 145, 0, 1517, 145, 145, 1255, 0, 917, 1058, 1059, 1060, 1057, 1056, 659, 0, 1062, 1021, 1071, 747, 0, 618, 0, 1022, 145, 998, 990, 997, 986, 989, 991, 0, 993, 994, 988, 985, 987, 2320, 2140, 0, 2386, 2388, 2174, 2399, 2398, 2173, 2405, 0, 0, 2368, 2396, 2395, 0, 0, 2380, 2380, 2143, 2154, 0, 2244, 2275, 0, 0, 2095, 0, 0, 0, 2149, 2858, 0, 0, 2206, 2207, 0, 2203, 2204, 2199, 2200, 2165, 0, 2650, 2183, 0, 0, 2198, 2058, 2056, 2055, 2040, 0, 0, 2038, 2034, 0, 2063, 2208, 2241, 2275, 2210, 0, 1752, 1736, 1735, 1734, 1733, 2213, 2434, 2432, 2213, 246, 1723, 0, 1873, 0, 1876, 0, 0, 1827, 0, 0, 1831, 0, 0, 1833, 1835, 0, 0, 0, 0, 0, 0, 2421, 0, 1797, 0, 1752, 0, 1767, 0, 1629, 1614, 0, 1615, 1621, 0, 0, 0, 0, 0, 1657, 1650, 1153, 1161, 0, 0, 0, 548, 824, 823, 826, 821, 825, 1528, 0, 698, 699, 702, 1298, 0, 1359, 1307, 0, 1646, 539, 312, 0, 558, 0, 0, 0, 1105, 140, 1104, 0, 558, 558, 492, 491, 500, 320, 0, 0, 0, 314, 392, 0, 394, 315, 319, 373, 336, 329, 0, 0, 0, 1294, 0, 1357, 1303, 1330, 1382, 1277, 1341, 0, 0, 889, 0, 0, 0, 0, 1383, 1278, 1342, 0, 0, 0, 0, 0, 1646, 0, 0, 0, 0, 0, 0, 0, 0, 1537, 0, 0, 372, 877, 876, 373, 410, 1321, 0, 2113, 0, 974, 979, 980, 978, 0, 416, 424, 427, 0, 0, 1246, 1246, 0, 0, 501, 518, 0, 603, 562, 603, 0, 0, 0, 0, 0, 717, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 762, 761, 193, 0, 476, 0, 716, 0, 874, 0, 0, 0, 619, 478, 0, 0, 1602, 477, 0, 0, 489, 0, 595, 584, 592, 0, 0, 616, 0, 1481, 0, 622, 0, 0, 0, 818, 1194, 0, 1208, 0, 1149, 1119, 1203, 0, 1728, 1880, 0, 0, 0, 0, 801, 0, 671, 1247, 1515, 907, 909, 754, 1065, 0, 1078, 1070, 992, 2370, 2404, 2339, 2341, 0, 0, 2362, 2355, 2358, 2356, 2357, 2359, 0, 2354, 0, 2171, 2403, 2352, 2366, 2305, 2246, 2092, 0, 2308, 2307, 2311, 0, 2160, 0, 2161, 2205, 2167, 2184, 0, 2168, 2196, 0, 0, 2059, 2057, 2042, 2243, 0, 2228, 1706, 1705, 0, 1726, 1909, 1878, 0, 0, 1872, 0, 0, 1903, 0, 0, 0, 1838, 1856, 0, 1834, 1832, 0, 1845, 0, 1847, 2532, 2819, 2718, 0, 1784, 1786, 1789, 1791, 1790, 1792, 1788, 2212, 2214, 0, 1763, 2267, 1882, 0, 0, 0, 1100, 0, 0, 1630, 1659, 1671, 1671, 1654, 1066, 0, 145, 694, 0, 0, 291, 1112, 0, 1206, 564, 2662, 565, 1111, 1115, 139, 0, 1206, 1206, 488, 0, 318, 328, 0, 375, 387, 0, 1646, 0, 0, 887, 896, 896, 884, 0, 0, 903, 1280, 758, 0, 567, 0, 286, 1306, 1300, 0, 0, 0, 1539, 1540, 0, 0, 0, 0, 0, 1329, 145, 1302, 982, 0, 449, 457, 428, 432, 1531, 0, 1531, 0, 429, 433, 1531, 1531, 426, 1880, 445, 1246, 0, 1243, 1242, 551, 633, 0, 0, 508, 0, 573, 507, 0, 830, 0, 0, 715, 0, 478, 582, 0, 536, 527, 528, 529, 530, 532, 531, 533, 534, 535, 525, 524, 0, 716, 893, 382, 1488, 756, 0, 0, 729, 0, 716, 0, 1605, 615, 584, 478, 582, 482, 500, 0, 599, 592, 595, 0, 596, 0, 600, 0, 0, 0, 619, 1541, 1099, 0, 0, 819, 1207, 1168, 0, 0, 1197, 1201, 1202, 0, 0, 0, 0, 1250, 795, 796, 790, 792, 0, 803, 807, 666, 0, 0, 670, 661, 716, 145, 0, 0, 2353, 2360, 2361, 0, 2181, 0, 0, 2378, 0, 0, 0, 2093, 0, 0, 2186, 2185, 2197, 2169, 2223, 0, 0, 0, 0, 0, 0, 0, 1717, 0, 2340, 1871, 1874, 0, 1906, 0, 0, 0, 0, 1891, 0, 1836, 0, 0, 1846, 0, 0, 0, 1793, 0, 0, 0, 1802, 0, 1627, 1880, 0, 1624, 0, 1666, 0, 1658, 1660, 0, 0, 0, 1085, 0, 1086, 1308, 0, 1106, 0, 603, 0, 1118, 1115, 553, 603, 603, 633, 0, 0, 331, 0, 299, 1304, 0, 0, 898, 898, 0, 0, 0, 0, 0, 0, 404, 0, 0, 1533, 0, 1534, 1535, 1538, 412, 425, 0, 455, 454, 0, 452, 451, 453, 0, 442, 0, 0, 0, 0, 0, 0, 415, 1241, 1245, 1244, 0, 509, 0, 511, 0, 0, 559, 560, 561, 0, 513, 569, 570, 827, 0, 832, 0, 718, 0, 0, 716, 581, 740, 0, 0, 0, 1482, 0, 0, 606, 750, 1488, 619, 592, 0, 584, 490, 0, 601, 595, 599, 597, 598, 0, 1485, 0, 621, 0, 1108, 817, 0, 1198, 1209, 1204, 1199, 1444, 0, 0, 793, 798, 797, 1531, 802, 0, 0, 0, 669, 668, 744, 1023, 2342, 2343, 2367, 0, 0, 0, 2346, 0, 2344, 0, 0, 2366, 0, 2182, 2304, 2189, 2162, 2187, 2806, 2533, 2777, 0, 2240, 2229, 2240, 2240, 2220, 0, 0, 0, 1908, 0, 0, 0, 1904, 1905, 1889, 0, 0, 1893, 1843, 1869, 0, 0, 0, 1787, 2215, 2216, 2456, 1616, 1626, 1101, 0, 1668, 1670, 0, 0, 0, 1646, 0, 568, 0, 1102, 1118, 562, 819, 819, 325, 316, 374, 0, 0, 0, 894, 897, 885, 886, 905, 904, 760, 1646, 0, 400, 399, 0, 403, 0, 450, 460, 0, 458, 430, 435, 0, 441, 440, 437, 436, 431, 434, 550, 0, 0, 0, 0, 0, 0, 571, 0, 572, 0, 831, 0, 0, 0, 742, 892, 0, 0, 476, 716, 1483, 1603, 595, 584, 592, 0, 0, 586, 1112, 1112, 463, 599, 601, 1486, 1487, 0, 0, 516, 0, 1120, 1443, 1442, 1728, 0, 0, 0, 804, 805, 800, 0, 0, 2347, 0, 2350, 0, 2351, 2345, 2375, 2377, 0, 2363, 2364, 0, 2233, 2232, 2231, 2235, 2234, 0, 2227, 2225, 2226, 0, 0, 0, 0, 1875, 0, 1892, 1895, 0, 0, 0, 1901, 0, 1894, 1896, 0, 1855, 0, 1867, 1795, 0, 1794, 1880, 0, 1673, 0, 0, 1661, 1662, 0, 0, 1663, 145, 292, 557, 819, 566, 1103, 573, 542, 540, 1646, 888, 0, 287, 0, 405, 1536, 456, 0, 439, 438, 632, 512, 602, 578, 0, 577, 0, 575, 574, 828, 833, 0, 716, 882, 1488, 730, 599, 592, 595, 0, 585, 0, 140, 140, 601, 461, 0, 0, 382, 0, 1426, 1728, 1425, 1427, 1435, 1432, 1434, 1433, 1431, 0, 1253, 1254, 794, 799, 0, 0, 2348, 2349, 0, 0, 2180, 0, 0, 0, 2237, 0, 2238, 0, 0, 0, 0, 0, 1898, 1899, 1900, 1902, 1897, 1842, 0, 1796, 1623, 1667, 1669, 1664, 0, 1665, 0, 0, 0, 0, 1674, 1087, 544, 819, 300, 895, 0, 459, 576, 553, 553, 716, 741, 1484, 601, 595, 599, 1112, 587, 589, 588, 465, 1108, 1109, 0, 601, 807, 0, 1436, 1430, 1704, 1691, 0, 0, 806, 0, 0, 0, 0, 2230, 2236, 2239, 0, 0, 0, 0, 2643, 0, 1910, 0, 0, 0, 1672, 1678, 0, 0, 0, 545, 0, 580, 579, 743, 464, 599, 601, 140, 516, 1107, 0, 1880, 0, 1428, 1728, 0, 0, 812, 2374, 2376, 2365, 1722, 1721, 2005, 0, 0, 1725, 1918, 0, 2368, 0, 0, 1921, 0, 1868, 0, 0, 0, 401, 601, 462, 590, 382, 1110, 1094, 0, 1429, 0, 0, 814, 0, 810, 813, 815, 816, 0, 0, 0, 0, 1911, 1912, 1921, 0, 2352, 1921, 1890, 1675, 1679, 0, 1676, 466, 601, 0, 0, 0, 778, 0, 1752, 0, 0, 0, 1907, 2368, 1920, 2378, 2352, 0, 1880, 0, 0, 0, 811, 0, 0, 0, 0, 1915, 2366, 2378, 0, 1095, 812, 1251, 1252, 0, 1724, 0, 0, 1913, 2366, 1677, 0, 0, 1916, 1914, 779, 0, 1917 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 57, 58, 59, 60, 1108, 1113, 1914, 1933, 61, 62, 1634, 3074, 2927, 3904, 3905, 63, 64, 1630, 65, 66, 67, 68, 1544, 69, 1886, 3088, 70, 2760, 850, 851, 852, 2625, 2626, 3019, 2627, 2614, 1394, 1832, 1566, 824, 825, 1526, 1567, 72, 73, 1388, 2603, 74, 75, 76, 1597, 1693, 1598, 1599, 1538, 5049, 5880, 3690, 2882, 3952, 3691, 3692, 4381, 4382, 3770, 4410, 4473, 5894, 5895, 77, 1709, 1710, 78, 79, 3056, 3870, 4526, 5437, 5438, 5699, 669, 5072, 5073, 5686, 5687, 5909, 6082, 6083, 3089, 700, 3947, 4610, 3895, 5143, 3896, 5144, 3897, 5145, 4938, 4939, 4371, 4372, 3881, 4557, 4558, 2090, 5085, 4559, 3898, 5104, 5733, 3899, 2848, 2775, 2776, 5924, 3123, 2005, 2003, 5636, 5712, 4924, 4925, 4446, 5933, 5934, 5935, 6225, 5106, 5149, 5150, 6120, 6121, 3950, 4616, 5156, 5495, 5710, 3648, 81, 3923, 3924, 82, 763, 1908, 4051, 764, 3126, 701, 765, 3090, 87, 3116, 5926, 3117, 1662, 2941, 4539, 4027, 88, 1136, 4335, 5520, 5793, 5794, 754, 89, 1894, 90, 91, 3069, 3888, 92, 2793, 3596, 93, 94, 3615, 3616, 3617, 95, 4567, 5456, 1600, 3679, 3680, 3681, 3682, 4402, 96, 1889, 3097, 3098, 97, 98, 99, 3228, 3229, 100, 3005, 101, 102, 103, 104, 4440, 5005, 5120, 3721, 3911, 4583, 5118, 105, 3874, 3091, 3144, 3985, 3986, 5518, 5785, 5786, 5787, 5984, 6260, 5789, 5986, 6142, 5988, 5095, 6406, 6407, 5770, 4324, 4902, 107, 5096, 5097, 5939, 108, 2791, 109, 110, 1863, 3062, 3063, 4540, 3133, 3960, 3961, 4596, 4597, 111, 3810, 112, 4981, 4982, 702, 5947, 5886, 6068, 113, 114, 4985, 4986, 115, 116, 117, 118, 119, 755, 1070, 1071, 757, 1191, 1192, 3557, 1153, 120, 2635, 121, 3850, 122, 1266, 5209, 123, 789, 1207, 1208, 3092, 125, 799, 3247, 801, 3212, 3213, 2021, 4031, 4032, 4684, 126, 127, 4035, 4036, 4691, 3225, 128, 1531, 2770, 2771, 4894, 3093, 703, 3642, 5618, 5363, 5619, 6131, 6322, 5364, 3501, 4280, 130, 704, 1572, 2832, 1159, 1160, 3137, 3965, 2740, 2741, 1732, 4637, 2743, 3967, 2744, 1505, 2745, 1146, 1147, 3973, 3974, 3975, 3976, 4633, 4643, 4644, 5512, 5778, 4640, 1882, 5506, 5507, 131, 1569, 2829, 132, 133, 134, 1613, 994, 1169, 1170, 135, 716, 717, 136, 5704, 137, 1149, 138, 5516, 139, 140, 1251, 1252, 816, 141, 142, 2852, 4384, 143, 1570, 144, 145, 3715, 3716, 4997, 146, 147, 148, 2913, 2914, 149, 150, 151, 152, 153, 6250, 6325, 6326, 6327, 4651, 6136, 154, 1239, 155, 156, 157, 158, 196, 1035, 1036, 1037, 947, 3094, 5497, 160, 161, 1527, 1528, 1529, 1530, 2765, 162, 163, 164, 3995, 3996, 165, 166, 167, 168, 1866, 169, 170, 5677, 171, 172, 1836, 173, 174, 1044, 1045, 1046, 1047, 1834, 3445, 663, 869, 1421, 1427, 1470, 1471, 1472, 176, 767, 177, 1242, 1075, 768, 1200, 179, 769, 2722, 3531, 4295, 4296, 4297, 4300, 5329, 4871, 770, 3527, 182, 2028, 3234, 3237, 3523, 771, 3537, 3538, 3539, 4304, 772, 5622, 5623, 5624, 5625, 5861, 6193, 6194, 6197, 6298, 773, 791, 1139, 3148, 774, 1353, 188, 189, 190, 927, 872, 873, 3450, 5578, 5825, 192, 2595, 3428, 808, 1476, 915, 916, 917, 936, 3029, 2688, 2689, 2713, 2714, 1485, 1486, 2701, 2705, 2706, 3514, 3507, 2694, 4274, 5603, 5604, 5605, 5606, 5607, 5608, 4860, 2709, 2710, 1488, 1489, 1490, 2718, 193, 2678, 3480, 3481, 3482, 4250, 4251, 6182, 4265, 4261, 4845, 5306, 3483, 861, 1237, 1497, 4853, 6184, 3484, 5295, 5296, 5583, 4270, 3493, 4291, 3935, 3936, 3937, 3485, 5835, 5836, 6179, 6180, 5585, 5586, 3486, 5827, 6345, 6346, 6384, 6419, 2746, 1450, 900, 1354, 901, 1463, 1355, 1437, 903, 1356, 1357, 1358, 906, 1359, 1360, 1361, 909, 1429, 1362, 1363, 1446, 1459, 1460, 1364, 1422, 5587, 1366, 1367, 1368, 3488, 1369, 4788, 5266, 5252, 3349, 3350, 2621, 5568, 4784, 4163, 4778, 2588, 2592, 5318, 5610, 5611, 3421, 4212, 4816, 5283, 5821, 6015, 6016, 6163, 1370, 1371, 1372, 3413, 2582, 997, 1373, 4542, 2584, 3340, 3318, 1735, 3319, 2031, 2053, 3266, 3283, 3284, 3389, 3320, 3328, 3333, 3341, 3375, 1374, 3268, 3269, 4073, 2055, 1375, 1041, 1738, 1042, 1465, 3370, 5232, 5533, 5534, 5806, 5807, 5544, 5808, 5545, 5535, 4085, 4086, 6004, 3294, 3390, 4089, 3302, 3303, 4107, 4096, 3295, 1376, 4098, 1384, 1385, 1378, 2022, 862, 5302, 1195, 1819, 805, 1379, 1380, 1381, 1382, 1606, 968, 1162, 1163, 918, 920, 921, 2682, 659, 651, 970, 3683, 2585, 660, 653, 654, 1824, 2586 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -5911 static const int yypact[] = { 6451, 57, 23393, -5911, -5911, 57, 72611, -5911, 82811, 23, 231, 122, 264, 22681, 83321, 93521, 1112, 398, 22892, 57, 93521, 1171, 62410, 78221, 1041, 93521, 1377, 1003, 62410, 93521, 94031, 1349, 1465, 1347, 94541, 83831, 76691, 1386, 93521, 1728, 1909, 95051, 84341, 1414, 84851, 1003, 56826, 204, 1448, 95561, 93521,119957, 1909, 85361, 85361, 85361, 2190, 2157, 1706, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 1750, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 2605, -5911, 1074, 2701, 1982, 1024, 1742, -5911, -5911, 2166, 72611, 93521, 93521, 93521, 1970, 93521, 1903, 93521, 591, 72611, 68531, 85871, 2070, 1962, 52632, 96071, -5911, 72611, 93521, 65981, 72611, 93521, 93521, 96581, 93521, 97091, 93521, 858, 80771, 93521, 2120, 93521, 93521, 66491, 97601, 2286, 275, 295, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 2012, 1269, -5911, 336, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 62920, 93521, 23073, 1377, 2166, -5911, 2190, 93521, 2288, 93521, 2081, 98111, 93521, -5911, 93521, 2171, 98621, 939, 761, 68531, 1979, 53161, 2298, 93521, 93521, 68531, 99131, 99641, 100151, 93521, 93521, -5911, -5911, 2256, 93521, -5911, 2412, 69041, 1951, 2428, 2610, 2574, 1027, -5911, 86381, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 72101, 398, -5911, -5911, 2518, 73121, 2563, -5911, -5911,100661,120453, 2387, -5911, 950, 73631, 69551, 2756, 2364, 53690, 2810, -5911, 74141, -5911, 70061, 74651, -5911, -5911, -5911, -5911, -5911,101171, -5911,101681, 2483, 2563, -5911,120949, 70571, -5911, 2616,102191,102701,103211, 2166, 2365, 214, 2041, 46933, -5911, -5911, -5911, 2425, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 236, 2210, 335, 248, 356, -5911, -5911, 252, 254, 255, 236, 2893, 2893, -5911, 93521, -5911, -5911, 2210, 745, 2499, 2385, 2385, 2385, 2651, 35, -5911, 2385, 2575, -5911, -5911, -5911, -5911, 84851, -5911, 2447, 1377, 2455, 2936, 2521, 62920, 1696, 93521, -5911, -5911, 2966, 2531, 2803, 2500, -5911, -5911, -5911, 2749, 2777, 189, 897, 1377, 323, -5911, 2895, -5911, 2814, 31767, 31767, 1377, 86891,103721, 288, 71591, 2588, 87401, 2601, 1575, 2806, -5911, -5911, -5911, 1083, -5911, 3080, 2692, 2972, 2500, 275, 48989, -5911, -5911, 2730, 1269, 84851, -5911, -5911, -5911, 62920, 3044, 34935, 93521, 2689, -5911, 2793, 2689, -5911, -5911, 2785, -5911, 2785, 2785, 2807, 2807, 2943, 2835, -5911, -5911, -5911, -5911, 2809, 2785, 2807, -5911,121941, -5911, 2178, 2200, -5911, -5911, 3259, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 2844, -5911, 1010, -5911, 2319, -5911, -5911, -5911, 31767, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 2802, 2813, 1982, -5911, 7392, 62920, 93521, 1933, 1933, 3323, 1933, 2255, 2426, -5911, 2855, -5911, 3210, 3167, 3169, 84851, 2859, 1441, -5911, 2127, 2860, 2046, 2863, 2132, 1421, -5911, 276, 93521, 457, 2901, 87911, 7983, 2866, 1269, 2867, -5911, -5911, -5911, -5911, 3035, 1638, -5911, -5911, -5911, -5911, 3201, 3246, 7569, 391, 88421, -5911, -5911, -5911, -5911, 93521, 93521, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 2871, 819, -5911, -5911, 2870, 3249, 3099, 8355, 1135, 3207, 3045, 1499, 11093, 3102, 2112, 3256, 14375, 1630, 3257, 2140, 2253, 88931, 93521, 3216, 3261, 6326, 1887, 1175, 3111, 872, 3207, 3250, 3054, 1499, 3265, 7940, 93521, -5911, 3173, 3304, 1329, -5911, 284, -5911, 24436, 34935, 56316, -5911, 1269, -5911, 1446, -5911, -5911, 61900, -5911, 2959, 3123, 990, 72611, 2900, 93521, 93521, -5911,119957, 72611, -5911, 3134, 54219, 72611, -5911, 72611, -5911, -5911, 3267,119957, 93521, 93521, -5911, 93521, -5911, -5911, 2905, -5911, -5911, -5911, -5911, -5911, 2385, 93521, 3368,119957, 3149, 137, 1943, 3404, 93521, 3151, 1943, 2951,104231, -5911, -5911, 1943, -5911, -5911, -5911, 93521, 93521, 2913, 1954, 3140, 886, 1943, 3161, 3418, 3420, 3187, 3024, 3194, 2793, -5911, 3396, 3168, 1522, 226, 354, 1943, 3012,104741,105251, 93521, 3014, 93521, 3412, 72611, 3049, 72611, 72611, 93521, 3330, 93521, -5911, 3156, -5911, -5911, 1178, -5911, -5911, -5911, -5911, -5911, 3346, -5911, 311, 3349, 2974, 3351, 1938, 3352, 371, -5911, -5911, 3016, -5911, 3354, 373, -5911, 3355, -5911, 2977,105761, -5911,106271,106781, 3358, 383, -5911, 68531, 3359, 373, 3360, 2977, 3364, 373, 3366, 1017, 3367, -5911, 1534, 3356, 3372, 371, 3374, 2295, 2977, -5911, 3376, 420, -5911, 3377, 424, -5911, 3378, 3228, -5911, 34935, -5911, 3104, -5911, 1448, 2044, 2041, 2210, -5911, 93521, 2210, 93521, 2210, 93521, 2210, 93521, 2210, 93521, 93521, 93521, 2210, -5911, -5911, -5911, 93521, 3005, 93521, -5911, 93521, -5911, -5911, -5911, 79241, 68531, 79751, -5911, 93521, -5911, 489, 1377, -5911, -5911,119957, 3501, 68531, 3412, 2098, -5911, -5911, 3412, -5911, -5911, 3412, 3412, -5911, -5911, -5911, 3289, 93521, 3370, 79241, 68531, 3373, -5911,107291, -5911, 72101, 3235, 3015, -5911, -5911, -5911, -5911, -5911, 2403, 2600, 256, 2614, 34935, 3017, 256, 256, 3018, 3381, -5911, -5911, -5911, 343, 3020, 3021, -5911, 285, 285, -5911, 3022, 3023, -5911, 287, 3027, 3030, 2647, 2661, 292, 328, 3031, 3032, 3038, 3039, 3040, 3041, 3042, 3043, 3046, 3047, 3048, 3051, 3052, 2809, 256, 3053, 34935, -5911, 3055, 285, 3057, 3062, 3063, 2664, 3064, -5911, 2673, 3065, -5911, 351, 368, 3066, 3067, -5911, 3248, -5911, 341, 3068, 3069, 3070, 3072, 3073, 3075, 3076, 3077, 34935, 34935, 34935, -5911, 29122, 1269, 2706, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 358, -5911, 51045, -5911, 3086, -5911, -5911, 3225, -5911, -5911, 34935, -5911, -5911, 3391, 169, -5911, 363, -5911, -5911, -5911, 1269, 3365, 3074, -5911, -5911, 1919, 3078, -5911, 2318, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 71081, 3530, -5911, 380, 1377, 284, 2181, 3475, 59860, 60370, -5911, -5911, 3331, -5911, 93521, -5911, -5911, 1269, 209, 2121, -5911, 2425, 21693, 2202, 2689, 93521, 93521, 3554, -5911, 3083, -5911, -5911, 34935, -5911, -5911, -5911, 2893, -5911, 2785, 2785, -5911, -5911, 3576, 3174, 3175, 2893, -5911, 2893, -5911, 3089, 3090, 2893, 3171, 3176, 3177, -5911, 3091, 3179, 2893, -5911, -5911, 63941, 2418, -5911, 3449, 458, -5911, -5911, -5911, 2245, -5911, 3093, -5911, 2793, -5911, -5911, 1982, 1982, 34935, 1982, 1592, 1523, 32295, 35463, 3456, 3324, 321, 1829, 3460, -5911, 3332, 2255, 2426, 84851, 93521, 84851,107801, 3231, 34935, -5911, 3567, 3190, 3193, 3253, 58866, -5911, 3196, 3162, 3197, 3258, 3110, 3202, 3203, 3262, -5911, 3398, -5911, -5911, 3206, 3574, 3208,108311, -5911, -5911, 1406, -5911, -5911, -5911, 1406, -5911, 3133, 1606, 1381, 1624, 3211, 512, 1009, 3566, -5911, 293, -5911, -5911, 3271, -5911, 10227, 93521, 3503, 8489, 3353, 391, 3269, -5911, -5911, -5911, 3415, 3218, 93521, 3219, 3369, 391, 339,108821, -5911, -5911, 93521, -5911, -5911, -5911, -5911, 7749, 3539, 27602, -5911, 2342, 3222, 3199, 3234, 93521, 75671, 1885, 3342, 3379, 1830, 2468, 613, 3290, 93521, 1803, 3383, 93521, 3139, 3229, 3242, 3480, 3157, 249, 3597, 3158, -5911, -5911, -5911, 3564, -5911, 2717, 2719, 3375, -5911, 3492, 3537, 8867, 3226, 3227,117973, -5911, 3255, 70, 54748, 93521, 93521, 3260, 3263,109331, 7749, 3568, 80261, 80261, 3266, 3268, 48475, 3588, 1868, 3270, -5911, -5911, -5911, 1868, 3272, 3275,109841, 7749, 3577, 93521, 3276, 3277, 93521,121941, 391, -5911, 3645, -5911, 391, 391, 2238, 3648, 3278, 466, 3439, 265, 1943, -5911, 3158, 4593, -5911, 3280, 3281, 1072, -5911, 3405, 93521, 3282, 3283, 1955, 3380, 1377, -5911, 3382, -5911, 3287, 3386, 3291, 733, 2913, -5911, -5911, 1691, 3303, 84851, 3411, 3413, 1803, 471, 743, 3158, -5911, 3295, 3298, 3157, 3157, 93521, 93521, 93521, 93521, 93521, 221, 3696, 301, 3300, 289, 1323, 3212, -5911, 1868, 67001, 3301, -5911, 1868, 93521, 259, 895, 3158, 2158, 2160, -5911, -5911, -5911, 275, -5911, 34935, 34935, 34935, 3214, -5911, 2911, 21693, 127, -5911, 3059, 9295, 3213, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 93521, 62920, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 93521, -5911, 93521, 3526,119957, 3528, 3445, 3531, 3532, 391, 93521, 93521, 3533, 3536, 3538, 119957, 3540, 3542, 3545, 3446, 3315, 850, 3307, 3232, 3733, 3615, 93521, 63941, -5911, 1406, -5911,119957, 3465, 3617, -5911, 93521, 3483, 1194, -5911, 3657, 3308, -5911, -5911, 1186, 93521, 78731, 2913, -5911, -5911, 3621, 68531, 408, 3623, 1377, 3302, 3625, 3477, 1377, 68531, 3524, 93521, 93521, 93521, 93521, 229, -5911, 67001, 3494, -5911, 93521, 3495, 4593, 3496, 3751, 898, 2385,110351, 3620, -5911,110861, 3264, 93521, 3273, 3273, 3754, 119957, 452, 3551, -5911, -5911, 2482, -5911, 3406, -5911, 72611, -5911, -5911, 72611, -5911, -5911,119957, 93521, 3274,119957,119957, -5911, -5911, 72611, 72611, -5911, 68531, 68531, 3638, 420, 3641, 3328, 3646, 3333, 54748, 54748, -5911, 469, 72611, -5911, 68531, 72611, -5911, 93521, -5911, 93521, -5911, -5911, -5911, -5911,119957, 119957, -5911, 68531, 67001, 3651, 93521, 93521, -5911, 93521, 93521, -5911, 93521, 93521, 2265,111371, 2041, -5911, 93521, -5911, 93521, -5911, 93521, -5911, 93521, -5911, 93521, -5911, -5911, -5911, 93521, -5911, 93521, 2331, -5911, -5911, 2346, 1245, 93521, 93521, 286, 72611, 93521, 3504, 93521, 72611, 72611, 93521, 93521, 93521, 93521, 93521, 3371, 3078, 202, -5911, 1664, 995, 84851, 3506, -5911, -5911, 2360, 2190, 728, 93521, -5911, 93521, 93521, 93521, -5911, -5911, 78221, 3634, 472, 79751, 93521, -5911, -5911, 11955, 34935, 1269, 31234, -5911, -5911, 21693, 3326, 34935, 34935, 3285, 2893, 2893, -5911, 359, 34935, 34935, 34935, 28594, 34935, 34935, 32823, 34935, 34935, 34935, 34935, 34935, 34935, 2893, 2893, 3286, 34935, 3865, 34935, 54748, 34935, 40743, 25504, 34935, 34935, 29650, 300, 3022, 34935, 3543, 41793, 34935, 2181, 3555, 34935, 2181, 3865, 3803, 3803, 1665, 4703, 3279, 1269, -5911, -5911, 1431, 2893, 1431, -5911, 425,119957, 34935, 34935, 34935, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 34935, -5911, 63941, -5911, -5911, -5911, -5911, -5911, -5911, 163, -5911, -5911, -5911, -5911, -5911, -5911, 3548, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 93521, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 30178, -5911, -5911, -5911, -5911, 3294, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 2176, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 30706, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 3299, -5911, -5911, 34935, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 3384, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 1020, 34935, 34935, 34935, 34935, 34935, 34935, 34935, 34935, 34935, -5911, 34935, 462, -5911, -5911, 3629, 3391, 793, 573, 3305, 3515, 89441, 31767, 3449, -5911, 24436, -5911, 312, 3449, -5911, -5911, -5911, 93521, 3530, -5911, -5911, -5911, 3388, -5911, -5911, -5911, -5911, -5911, -5911, 253, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 3310, -5911, -5911, -5911, -5911, 3310, -5911, 3309, 3643, 3650, 1017, 93521, 2912, 34935, 163, 260, 93521, 34935, 3294, 2176, 34935, 3299, 34935, 3384, -5911, 34935, -5911, 2370, 1262, 34935, 2383, 3311, -5911, -5911, 3317, 3090, 3329, 3340, 3319, 3320, 2893, 240, 3321, 222, 197, 3448, 2893, 3583, 3325, -5911, 63941, -5911, 43849, 3385, -5911, -5911, -5911, 1909, 93521, 93521, -5911, 3622, -5911, 3314, -5911, 17072, 3622, -5911, -5911, 41268, 3454, 3626, 3552, -5911, -5911, -5911, 3334, 21693, 35991, 35991, -5911, 2715, 21693, 2722, -5911, -5911, -5911, -5911, -5911, -5911, 1634, -5911, 93521, 182, 3456, 1829, 3389, 1276, 3825, 3394, 93521, -5911, 49503, 2392, -5911, 68531, 93521, 93521, 3550, -5911, 3811, -5911,121941, -5911, 3341, -5911,121445,116981, -5911, -5911, 1233, -5911, 1068, 68531, -5911, 93521, 93521, 68531, 93521, 93521, -5911, 68531, 3395, 93521, 93521, -5911, -5911, -5911, -5911, -5911, 60880, 94, 78221, 3490, 77201, -5911, -5911, 3387, 93521, 3582, -5911, -5911,111881, -5911, 3589, 68531, 93521, 93521, 34935, 3591, 93521, 93521, -5911, 626, 3443, 3447, -5911, 93521, 3453, 72611, 3392,119957, 72611, 55277, 72611, 72611, 3721,119957, 93521, 93521, 1570, 84851, 348, 918, 3158, 3604, -5911, 1558, -5911, 68531, -5911, 93521, 3594, -5911, -5911, -5911, 81281, 3855, 3497, -5911, -5911, -5911,112391, -5911, -5911, 3598, -5911, 2401, -5911, 68531, 68531, 93521, 9590, 3397,112901, 93521, 721, 3665, 3616, 3669, 1384, -5911, -5911, -5911,119957, -5911, 93521, 89951, 93521, 93521, 3660, 93521, 81791,113411,113921, 782, 1782, 3662, 93521, 82301, 3664, -5911, 3535, 93521, -5911, -5911, 64451, 68531, 93521, 975, 63941, -5911, 3649, -5911, 93521, -5911, 1089, -5911, 93521, 7405, 3608, -5911, -5911, 3478, 3485, 93521, 449, 1025, 3158, 3800, 93521, 93521, 3399, 2406, 68531, 93521, 63941, -5911, 3627, 821, 68531, 93521, 81281, -5911, 3631, -5911, 84851, 3728, -5911, 3400, 2385, 2730, 2304, 3400, 68531, 93521, -5911, 3400, 93521,103721, -5911, 68531, 1102, -5911, 68531, 93521, 81281, -5911, 3632, 3565, 68531, 93521, 16342, -5911, -5911, -5911, 391, -5911, -5911, -5911, -5911, -5911, 93521, 93521, 391, 93521, 93521, 391, 1681, -5911, 68531, 93521, -5911, -5911, -5911, 3544, 68531, 93521, 93521, 302, 93521, -5911, 93521, 68531, 3451, 93521, 93521, -5911, -5911, 93521, 7284, 93521, 93521, 93521, 93521, 93521, 93521, 68531, 93521, -5911, -5911, 1043, 1620, 1786, 1904, 1637, 93521, 3747, 93521,114431, 1377, 68531, 93521, 93521, 1377, 93521, 63941, 465, -5911, -5911, 3546, -5911, 68531, 1102, -5911, 9968, 93521, 93521, 93521, 3500, 3502, 238, 3593, -5911, -5911, -5911, 928, 928, 3635, -5911, 34935, 34935, 33351, 3419, -5911, -5911, 34935, 2959, -5911, -5911, -5911, 1078, 3917, 1078,114941, 1078, 1078, 3734, 3488, 3493, 1078, 1078, 1078, 3722, 1078, 1078, 1078, 93521, 3619, -5911, -5911, 3619, 996, 34935,119957, 93521, -5911, 2407, -5911, 3450, -5911, -5911, 63941, 93521, 1012, 973, 3809, 3667, 76181, 2536, 3799, 93521, 3489, 93521, 3936, 3547, 1730, -5911, 2536, 93521, -5911, 1492, 78221, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 93521, -5911, -5911, 3802, 93521, 44363, 3628, -5911, 1377, 2913, 2913, 2913, 2913, 3455, 2913, 93521, 3578, 3822, 2536, 3457, 3823, -5911, 4593, 3826, 1364, 93521, 3680, 76181, 3513, 3499, 3694, 3949, 2385, 1377, 3700, 3686, -5911, 59363, -5911, 2913, 3969, 28098, 4251, 5348, 3689, 3761, -5911, -5911, 3703, 954, 93521, 3815, 3816, 3838, -5911, 311, -5911, 3972, 1938, 3840, 371, -5911, 373, -5911, 2977, -5911, 93521, -5911, 93521, 93521, 93521, 93521, 383, -5911, -5911, 373, 2977, 373, 1017, -5911, 3770, 371, 2977, 3618, 3843, 420, -5911, 424, -5911, 3707, 1017, -5911, 3725, 2385, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 2413, -5911, 93521, -5911, 3818, 3821, 3824, 3827, 3828, 3486, 3505, 3553, 93521, 3508, 3486, 391, 3509, 3498, -5911, 3508, 3508, 3486, 3078, 3078, 3486, 3505, 67511, 3968, 63941, -5911, -5911, 3584, 3507, 3857, 246, -5911, 258, 1450, 3759, -5911, -5911, -5911, -5911,119957, -5911, 68531, 3549, -5911, -5911, -5911, 3740, 3512, 67511, 1017, 211, -5911, 72611, 93521,119957, 72611, 3735, 72611, 72611,119957, 93521, 93521, 2421, -5911, 2010, -5911, 2063, 34935, 492, -5911, 18367, 2430, 34935, 3516, 3517, -5911, 3864, -5911, -5911, -5911, -5911, -5911, -5911, 3518, 3876, -5911, 2442, 2444, 18504, 2510, 119957, 2125, 3556, -5911, 3520, 234, 3741, 3519, 6754, 3596, 2456, 3560, 244, -5911, 6754, 1021, 3521, 8141, 3690, 3523, 2460, 3561, 3562, -5911, 7153, 7765, 3563, 18922, 3569, 3573, 3575, 3580, 40743, 40743, 29122, 1571, -5911, 40743, 3585, 3749, 2462, 17220, 3590, 3602, 19467, 33879, 34935, 33879, 33879, 19519, 3571, 3603, -5911, 3935, -5911, 2474, 63941, 3744, 19643, 2479, -5911, 34935, 63941, 7807, 34935, -5911, 34935, -5911, 3609, -5911, -5911, 3946, 3946, 3946, 3865, -5911, -5911, 3570, -5911, 40743, 40743, -5911, 3297, 29122, -5911, -5911, 3898, -5911, -5911, 257, -5911, -5911, -5911, -5911, -5911, 2932, -5911, -5911, -5911, 3785, 2510, 3915, 54748, 8683, 34935, 423, 34935, 3294, 34935, 3633, 3946, 3946, 3946, 508, 508, 382, 382, 382, 2184, 573, -5911, -5911, -5911, 3581, 3592, 3515, 3611, 34935, -5911, 3599, 50017, -5911, 2609, 2718, 93521, 5554, 6400, 6590, -5911, -5911, -5911, 3385, 127, 3385, -5911, 275, 2893, 1431, 61390, -5911, -5911, -5911, -5911, -5911, -5911, 93521, 21693, -5911, -5911, 3812, 3612, 2487, -5911, -5911, 2893, -5911, -5911, 2629, 2629, 3586, -5911, 3624, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 3614, -5911, -5911, -5911, 3630, 3637, 44877, 3900, 3640, 43335, 90461, 3613, 2272, -5911, 90461, 90971, 90461, 90461, -5911, 3639, -5911, -5911, 1269, 34935, 3897, -5911, -5911, -5911, 34935, -5911, -5911, 1214, 3587, 902, 1341, 2729, 2729, 2715, 1380, -5911, -5911, 3682, -5911, 34935, 2778, -5911, 2784, -5911, -5911, -5911, -5911, 3078, -5911, 3841, -5911, -5911, -5911, 43849, 3670, 3675, 84, 47961, 3851, -5911, 93521, 43849, -5911, 93521, 446, -5911, 3642, -5911, -5911, -5911, -5911, -5911, -5911,116981, 2319, -5911,121445, -5911,121445, -5911, 2319, 4102, -5911,116981, 2103, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 68531, 68531, 3854, 93521, 3853, 3860, 34935, 1528, -5911, 4017, 1017, -5911, -5911, 3730, -5911, 21693, -5911, -5911, -5911, -5911, -5911, 68531, 93521, -5911, 72101, -5911, -5911,119957, -5911, -5911, 93521, 93521, -5911, -5911, -5911,119957, -5911, -5911, -5911, 93521, 218, 3731, 3732, 93521, -5911, 1462, 3405, 10002, 93521, 93521, 93521, 3965, -5911, -5911, -5911, -5911, 3884, -5911, 4022, -5911,116981, -5911, 2977, 1712, 3737, 3158, 34935, 3892, -5911, 1109, 93521, 3652, 3653, 4031, 1519, 3986, 3666, -5911, 3776, -5911, 3804, 1443, -5911, -5911, 3808, -5911, -5911, -5911, -5911, 4047, 1017, 4049, 1017, 93521, 93521, 93521, 93521, 3814, -5911, -5911, -5911, -5911, 3817, 3957, -5911, 63941, 63941, 63941, 2488, -5911, -5911, 1377, -5911, -5911, -5911, -5911, -5911, -5911, 4003, -5911, 2503, -5911, 2026, 91481, -5911, -5911, -5911, -5911, -5911, 4054, 68531, 93521, 10621, 93521, 93521, 93521, 3907, 2151, 1231, 119957, -5911,118469, -5911, -5911, 2505, -5911, 3693, 93521, 3771, 68531, 3748, -5911, -5911, -5911, 4060, 2385, 3833, 80261, 3736, 3736, 2315, -5911, -5911, -5911, -5911, -5911, 3971, 3895, -5911, 394, 3905, 68531, 3760, -5911, -5911, -5911, -5911, 4069, 3794, -5911, -5911, 3796, 1154, 3158, 4593, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 3829, -5911, -5911, -5911, -5911, -5911, -5911, 1747, 1747, -5911, -5911, -5911, 1747, 1767, 481, 1192, 3158, -5911, 389, 412, 3797, -5911, 3798, -5911, -5911, -5911, 3985, 3990, 3991, 3813, 3819, 3869, 3820, 3830, 3870, -5911, 3831, 3872, 3834, 3880, 3835, 4139, 1017,119957, 3977, 1377, 3871, 4113, 1017, -5911, -5911, 3837, -5911, 3839, -5911, 2509, 4226, 4227, -5911, 93521, -5911, 454, 1221, 3158, -5911, 3842, -5911, 68531, 93521, -5911, -5911, -5911, 34935, 3745, 3757, 3758, 21693, 21693, 34935, -5911, -5911, 21693, 3743, -5911, -5911, -5911, -5911,119957, -5911, 93521, 4070, -5911, -5911, 1078, 93521, 93521, -5911, -5911, -5911, 93521, -5911, -5911, -5911, 4072, -5911, 594, 594, -5911, -5911, 4104, 8344, 3764, 470, -5911, 63941, 51574, 2310, 224, 1943, -5911, 72101, 93521, 72101, -5911, 973, 3988, 93521, 93521, 93521, 3768, 3769, -5911, -5911, -5911, -5911, 68531, 1461, 68531, 2893, -5911, -5911, 3852, -5911, 93521, 2385, 4306, 4138, 3451, -5911, 4262, 3420, 408, 2021, 251, 3024, 4201, 2793, 34935, 447, -5911, -5911, 1269, 93521, 3499, -5911, -5911, -5911, -5911, 1377, -5911, 3782, 3781, -5911, 93521, 4149, 93521, 93521, 93521, 93521, 3549, 3789, 93521, 3790,119957, 93521, 2626, 3157, 4285, 4171, 2190, 3513, 3883, 4173, 84851, 3810, 2514, -5911, -5911, 954, -5911, 2519, 150, -5911, 1377, 72101, 117477, 4160, -5911, 344, 5348, -5911, -5911, 344, 1070, 93521, -5911, -5911, -5911, -5911, 4030, 2492, -5911, 4145, -5911, -5911, 2190, -5911,119957, 3805, -5911, 2520, -5911, -5911, -5911, 420, 3866, 1017, 3868, 1017, -5911, -5911, -5911, -5911, 93521, -5911, 93521, 67001, -5911, -5911, 93521, -5911, 4178, -5911, -5911, 3952, 3953, 3954, 3955, 3956, 93521, 3486, -5911, 3832, 93521, 93521, 68531, 1766, -5911, -5911, 68531, 502, -5911, 1308, -5911, 84851, 3947, -5911, -5911, -5911, -5911, 4191, 4193, -5911, -5911, -5911, 1610, -5911, 79241, 510, -5911, 68531, 4126, 4129, 4140, 4141, 391, 4144, 4147, 4148, 4150, 4151, -5911, -5911, -5911, 3845, 19689, 34935, -5911, 4216,119957, -5911, 8392, -5911, -5911, 34935, -5911, 34935, -5911, -5911, 4153, -5911, -5911, 3914, 3920, 3861, 3556, 3690, -5911, 4071, 4077, 34935, 3690, 4338, 1152, 34935, 34935, 34935, -5911, -5911, 4090, 4101, 34935, 2510, 2510, 34935, -5911, 3877, 34935, -5911, -5911, -5911, -5911, 2602, 34935, -5911, 34935, -5911, -5911, 26038, 4399, 4399, 3878,119957, 40743, 40743, 40743, 40743, 1671, 3057, 40743, 40743, 40743, 40743, 40743, 40743, 40743, 40743, 40743, 40743, 584, -5911, 4093, 34935, 34935, 34407, -5911, -5911,119957, 3882, 3571, 3885, 3886, 34935, -5911, -5911, -5911, 2525, 42307, 3887, 63941, -5911, 34935, 17773, 2537, 3932, 20059, 1269, 8519, 2731, 34935, 2224, 4510, 34935, 2544, 34935, -5911, -5911, -5911, -5911, 4240, -5911, -5911, -5911, -5911, -5911, -5911, 4131, 2510, -5911, -5911, 34935, 3889, 5652, 40743, 40743, 6145, -5911, 6867, 34935, 29122, -5911, 3635, -5911, 26572, 3888, 34935,116471, -5911, -5911, 1003, 1003, 1003, 1003, -5911, 93521, 93521, 93521, 3897, 3890, 3897, 284, 3894, -5911, -5911, -5911, -5911, 2190, -5911, 3899, -5911, -5911, -5911, -5911, -5911, 34935, 90461, 90971, 90461, 90461, 3896, 42821, 27087, 2272, 3903, 93521, -5911, -5911, 3901, 43849, 4203, 4114, -5911, 43849, 4114, 2231, 4114, 4206, 4011, 50531, -5911, -5911, 3918, -5911, -5911, 4123, -5911, 2342, 21693, 4388, 4258, -5911, 3919, -5911, 3587, 1763, -5911, -5911, -5911, 1460, -5911, 4007, -5911, -5911, -5911, 3613, 36519, 4079, -5911, -5911, -5911, 3979, 2546, -5911, -5911, 4366, 4079, -5911, 2275, -5911, 2550, 49503, 3670, 34935, 1269, 2552, 2289, -5911, -5911,116981, -5911, 4001, 2977, 2977, 1544, 3486, 4289, 1544, 9048, -5911, 1762, 93521, -5911, 93521, -5911, -5911, -5911, 4423, 3992, 3994, 4219, -5911, 2863, -5911, -5911, 68531, 93521, -5911, -5911, -5911, 460, 1265, 3158, -5911, 4020, -5911, -5911, 4263, 93521, -5911, 4419, 4043, 93521, 9112, 4324, 4014, -5911, -5911, 45391, 93521, 93521, 93521, -5911, 93521, 93521, 1762, 91991, -5911, 4396, 1762, 4074, 4308, 1705, 3157, 466, 4192, -5911, 1994, -5911, -5911, 4037, -5911, 93521, -5911, 93521, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 4094, -5911, -5911, -5911, -5911, 64451, -5911, -5911, 93521, -5911, 63941, 51574, 63941, -5911, -5911, -5911, 93521, -5911, 1788, 498, 1279, 3158, -5911, 4051, -5911, 4335, 4052, 4055, 4112, 1352, 283, 4056, 4057, 4116, 3973, 3974, 3975, -5911, 63941, 52103, 4146, 93521, 2977, 3978, 4015, 93521, 3736, 92501, -5911, 3980, -5911, -5911, 3736, 236, 2759, -5911, -5911, -5911, 1377, 2977, 1377, 93521, 93521, 93521, 93521, 302, -5911, -5911, -5911, 4447, 4078, 93521, 93521, 93521, 93521, -5911, 4033, -5911, -5911, -5911, 93521, 93521, 4346, 243, 2321, 68531, 93521, 93521, 68531, 93521, 93521, 93521, 93521, 93521, 93521, 93521, 4211, -5911, 4442, 4371, 2480, 4410, 4073, 93521, -5911, 93521, 1377, -5911, 3405, 93521, 93521, 93521, 93521, -5911, -5911, -5911, -5911, -5911, 3635, -5911, 3996, 4307, 1078, -5911, 4309, 4310, 4311, 1078, -5911, -5911, 1943, -5911, 533, 93521, -5911, 2642, 93521, -5911, -5911, -5911, 3919, 2717, 2719, -5911, -5911, -5911, -5911, -5911, -5911, 3999, 93521, 93521, 40743, -5911, 2464, 1991, 1611, -5911, 4296, 93521, 3248, -5911, -5911, -5911, 1137, 93521, -5911, -5911, -5911, -5911, 4004, -5911, 1314, 3789, -5911, 4330, 76181, 2977, 68531, 68531, 2977, -5911,119957, 4008, 3499, -5911, 456, 4096, -5911, 68531, 408,115451, 3302, 4050, 4238, 9242, 43849, 44363, 1747, -5911, 4016, 4012, -5911, -5911, 93521, 3988, 67001, 2559, 4593, 4513, 1247, 2365, -5911, 77711, 4223, 3789, 4330, -5911, 3157, 4243, 4246, -5911, 2190, 93521, 3549, 3499, 1377, 93521, 4014, 51574, -5911, 4555, 2493, -5911, 116981, 34935, 34935, -5911, 4021, -5911, 4026, 5348, -5911, 4105, 4025, 4523, 34935, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 4124, 4036, 93521, 93521, 954, 93521, -5911, 4039, 3840, -5911, 3840, -5911, 93521, -5911, 93521, -5911, 1017, -5911, 4176, 1017, 93521, 93521, 93521, 93521, 93521, 93521, 3486, 391, 3498, -5911, -5911, 4392, 67511, 4387, -5911, 63941, -5911, -5911, -5911, -5911, -5911, 2566, 93521, -5911, -5911, -5911, 4464, 4401, 1017, 472, 1122, 1122, 1122, 1122, 4356, 1122, 1122, 1122, 1122, 1122, -5911, 34935, 21693, -5911, 4048, -5911, 21693, 21693, 4436, 4342, 4347, -5911, -5911, 4059, 4292, 4293, -5911, 4062, 34935, 3690, 20097, -5911, -5911, 4297, 4300, -5911, 3690, 3690, 20097, -5911, 20097, 4064, 9641, 20298, -5911, 2570, 34935, -5911, 1835, 1835, 1835, 3155, 4422, -5911, 3105, 1835, 1835, 1835, 560, 560, 247, 247, 247, 4399, 584, 20453, 20707, 20877, 4066, -5911, -5911, -5911, 3571, -5911, 37047, 93, 4543, 41793, -5911, -5911, -5911, 4115, 4117, 4075, -5911, 34935, 37575, 4067,121941, 4286, -5911, -5911, 1179, 34935, 34935, 2173, -5911, 10222, 34935, -5911, -5911, 2173, 477, 34935, 4877, 5259, 34935, 34935, 7106, 9694, 4080, -5911, 2587, 34935, 10508, 4278, -5911, 93521, 93521, 93521, 93521, -5911, -5911, -5911, 4258, 2762, 4258, 1377, 4081, -5911, 4083, -5911, -5911, -5911, -5911, 64961, 4084, 3744, 90461, 4085, 93521, 2272, 43849, -5911, -5911, 2584, -5911, 43849, 4385, -5911, 43849, 72611, -5911, 93521, 4089, 93521, -5911, 1933, 34935, 4127, 54748, -5911, -5911, -5911, -5911, 4182, -5911, 4325, 21693, 31767, -5911, 2190, 2438, 93521, 1269, 110, -5911, 34935, 4106, 93521, -5911, 4079, 21693, -5911, 4174, 2589, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 4186, 78221, 4456, -5911, -5911, 1995, 4428, 205, -5911, 1017, -5911,119957, 93521, 93521, 93521, 3110, -5911, -5911, 93521, 93521, 93521, 93521, -5911, -5911, 68531, 93521, -5911, -5911, 93521, 34935, 2593, -5911, 4152, 4559, 436, 2603, -5911, 2608, 1762, -5911, 2615, -5911, -5911, 93011, -5911, 3988, 302, 2464, 4443, 4446, 4350, -5911, 391, -5911, 4605, 2464, 4352, 302, -5911, -5911, -5911, -5911, 2561, -5911,119957, 1017, 1017, -5911, -5911, -5911, -5911, -5911, 4128, -5911, 4591, 4218, 93521, 93521, 93521, 93521, 93521, 68531, 93521, 93521, 2893, 2893, 119957, 4118, -5911, 2893, 2893, 4119, -5911, 68531, 93521, 93521, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 4214, -5911, 34935, 4585, -5911, -5911, -5911, -5911, -5911, 34935, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 68531, 93521, 4215, -5911, 4220, -5911, 968, -5911, -5911, 93521, 93521, 93521, 93521, 4505, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 4504, 93521, -5911, -5911, 1377, 1377,119957, 1017, 1017, -5911, -5911, -5911, 4221, -5911, -5911, 4134, 4445, 1078, -5911, 1078, 1078, 1078, -5911, 4142, -5911, 1943, 4544, -5911, 1762, 2073, 4494, -5911, 34935, -5911, 2126, 3155, -5911, 4556, 4640, -5911, -5911, -5911, -5911, 3451, 2385, 3451, -5911, -5911, 72611, 438, -5911, 4479, 1012, 63941, 4379, 76181, 389, 1257, 4154, 4284, -5911, 2977, 2977, 4212, 93521, 4646, -5911, -5911, -5911, -5911, -5911, -5911, 68531, 3748, -5911, 4394, 1335, 4515, 93521, 44363, -5911, 3613, -5911, -5911, -5911, 1377, -5911, -5911, 4291, 3499, -5911, 1433, 93521, 4389, 76181, 3549, 2639, -5911, -5911, -5911, 4202, 4634, 3513, -5911, 389, 4223, -5911, -5911, 4611, 4260, 4207, 4660, -5911, 4260, 4522, 4395, 4169, -5911, 3810, -5911, 93521, -5911, 21693, 21693, 1377,122437, 344,119957, 4535, -5911, 21693, 93521, 971, 4170, 4348, -5911, 4497, 1017, 2640, -5911, 1017, 1017, -5911, 93521, -5911, 3486, 3486, 3486, 3486, 3486, -5911, 4402, -5911, -5911, -5911, -5911, 4488, -5911, 67511, -5911, 1017, -5911, -5911, -5911, -5911, -5911, -5911, 1122, -5911, -5911, -5911, -5911, -5911, 21693, -5911, 93521, -5911, -5911, -5911, -5911, -5911, -5911, 3314, 4181, 34935, 1808, -5911, -5911, 4183, 4188, 3690, 3690, -5911, -5911, 34935, -5911, 10924, 40743, 4539, -5911, 34935, 34935, 34935, -5911, 4179, 2641, 2646, -5911, -5911, 93, -5911, 4543, -5911, -5911, -5911, 11427, 4247, 21693, 4312, 4190, 1710, 2173, 2173, 10222, 2173, 34935, 34935, 2173, 2173, 34935, -5911, -5911, -5911, 11925, -5911, 4669, 3635, -5911, -5911, -5911, -5911, 4127, -5911, -5911, 4127, -5911, 4344, 34935, -5911, 2648, 4691, 39687, 4652, -5911, 93521, 2652, -5911, 34935, 4204, -5911, -5911, 43849, 2584, 4208, 2658, 93521, 2662,119957, 38103, 21693, 93521, 3635, 4209, -5911, 93521, 3074, -5911, 84, -5911, -5911, 4650, 45391, 4608, 21115, 34935, -5911, -5911, -5911, -5911, 67511, 4437, 67511, 1762, -5911, -5911, -5911, -5911, -5911, -5911, 4213, -5911, -5911, -5911, -5911, 4303, -5911, -5911, 50, 3506, 1762, -5911, 12062, 4548, 45391, 55806, 93521, -5911, 93521, -5911, 4386, 4548, 4548, -5911, -5911, -5911, -5911, 4713, 4595, 4596, -5911, -5911, 4224, -5911, -5911, -5911, 4442, -5911, -5911, 51574, 68531, 93521, -5911, 4313, -5911, -5911, -5911, -5911, -5911, -5911, 47447, 54748, -5911, 1352, 4225, 4228, 283, -5911, -5911, -5911, 93521, 12165, 4229, 12884, 1295, 3506, 93521, 93521, 4231, 4232, 4233, 1863, 1533, 2097, 3486, 4583, 93521, -5911, -5911, -5911, 4442, -5911, -5911, 93521, -5911, 1078, -5911, -5911, -5911, -5911, 63941, -5911, 2104, 4142, 1377, 72611, 4718, 4718, 13769, 4463, -5911, -5911, 165, 4298, 4507, 4298, 4235, 93521, 1137, 4239, 2663, -5911, 93521, 4241, 4375, 1474, 1474, 93521, 93521, 93521, 2667, 2190, 2977, 4015, 408, 4617, 76181, 4663, 3988, 455, -5911, 93521, 4739, 93521, 3549, 3789, 93521, 4248, -5911, -5911, 77711, 4468, 2310, 93521, 2626, 4223, 3513, 1500, 93521, -5911, 1199, -5911, 2190, -5911, 93521, 84851, 45391, 4606, -5911,121445, -5911, 2672, -5911, -5911, -5911, 4328, 22297, 3385, 4372, 4376, 4254, 2311, 4619, 93521, 133, -5911, -5911, -5911, -5911, -5911, -5911, 93521, 510, -5911, -5911, -5911, -5911, 4255, -5911, 4755, 34935, 338, -5911, -5911, -5911, -5911, -5911, 4486, -5911, 4261, -5911, -5911, 2761, 1808, 21569, -5911, 3879, 40743, 21693, 21693, 21693, 34935, -5911, 34935, -5911, -5911, -5911, -5911, 948, -5911, -5911, 4597, 4264, 2173, 2173, 2173, -5911, 34935, 976, -5911, -5911, 426, 4689, 21618, 3639, 64961, 4270, -5911, 40743, 2674, -5911, 611, 93521, 2678, -5911, 21693, 93521, -5911, -5911, 34935, -5911, 2687, -5911, 4272, 744, 4274, 24970, 4271, -5911, -5911, -5911, -5911, -5911, 21693, 4277, -5911, 4771, 1829, -5911, -5911, 4339, 93521, 2688, -5911, 1333, 2271, 1200, -5911, 4781, 4781, 21693, 1766, 1544, 483, -5911, 93521, 4381, -5911, 4559, 4288, 3451, -5911, 4290, -5911, -5911, 2093, 3157, 93521, 3451, 3451, 2310, 4624, -5911, -5911, 34935, 4351, -5911, 1418, 3506, 93521,119957, -5911, 170, 4648, -5911,119957,119957, -5911, -5911, -5911, 34935, -5911, 4391, -5911, -5911, -5911, 34935, 34935, 75161, -5911, -5911, 93521, 93521, 93521, 93521, 93521, -5911, 1017, -5911, -5911, 2693, -5911, 46419, -5911, -5911, 3404, 1377, 3404, 2045, -5911, -5911, 3404, 3404, -5911, 3385, -5911, 4718, 403, -5911, -5911, 4536, 4299, 34935, 4623, -5911, 1311, 4525, -5911, 4302, -5911, 72611, 4826, -5911, 63941, 3789, 4330, 93521, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 2694, 3988, 4670, 3499, 4207, -5911, 93521, 4343, -5911, 43849, 3988, 2190, 2365, -5911, 4223, 3789, 4330, -5911, -5911, 4314, 4246, 3513, 2626, 4455, -5911, 4457, -5911, 4770, 4534, 4777, 3549, -5911, 4014, 2698, 93521, -5911, -5911, 5348,122437,119957, -5911, -5911, -5911, 4316, 4714, 4364, 4367, -5911, -5911, -5911, 2311, -5911, 114, 4715, 4373, -5911, 4383, 93521, -5911, -5911, 3988, 1017, 34935, 63941, 21693, -5911, -5911, 4712, -5911, 500, 270, 1256, 4560, 4329, 34935, 3879, 2700, 2702, 4393, -5911, -5911, -5911, 3571, 38631, 38631, 38631, 4333, 4696, 4705, 93521, -5911, 93521, 4541, -5911, -5911, 93521, 3155, 4340, 39687, 63941, 2704, -5911,118965, -5911, 2709, 2724, -5911, 34935, 4345, 34935, -5911, 38103, 93521, 4349, 3456, 2190, -5911, 3385, 45391, -5911, 4474, -5911, 4614, -5911, -5911, 34935, 4434, 4438, -5911, 4707, -5911, -5911, 93521, -5911, 93521, 4298, 54748, 3587, 2093, 2385, 4298, 4298, 4299, 14677, 34935, -5911, 4450, -5911, -5911, 2732, 175, 4533, 4533, 2733, 2734, 15235, 93521, 2739, 2744, -5911, 2746, 2893, 3505, 2097, 3505, -5911, 3486, -5911, -5911, 63941, -5911, -5911, 68021, -5911, -5911, -5911, 1377, -5911, 1377, 4594, 57336, 57846, 1377, 1377, -5911, -5911, -5911, -5911, 4687, -5911, 4593, -5911, 15319, 4460, -5911, -5911, -5911, 765, -5911, 4589, 4590, -5911, 4368, -5911, 2752, -5911, 389, 4502, 3988, -5911, -5911, 93521, 4865, 4868, -5911, 1374, 93521, 3613, -5911, 4207, 3549, 3513, 389, 4223, 2310, 45905, 4260, 2626, 4246, -5911, -5911, 4598, -5911, 4599, -5911, 4378, 4711, -5911, 2197, 344, -5911, -5911, -5911, 414, 4738, 4741, -5911, -5911, -5911, 3404, -5911, 1841, 4390, 4762, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 4427, 291, 350, -5911, 4430, -5911, 4573, 4574, 1808, 2624, -5911, 21693, -5911, -5911, -5911, 40215, 4547, 268, 17949, 4778, -5911, 4778, 4778, -5911, 4873, 4874, 1427, -5911, 4853, 2753, 41793, -5911, -5911, -5911, 93521, 4621, 1420, 4899, 4571, 2758, 38103, 2763, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 49503, 4880, 21693, 981, 1660, 67511, 3506, 2764, 3736, 4406, -5911, 3587, 4507, -5911, -5911, -5911, -5911, 21693, 93521, 72611, 4882, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 3506, 4503, -5911, -5911, 75161, -5911, 93521, -5911, -5911, 2765, -5911, -5911, -5911, 58356, -5911, 4170, -5911, 4170, -5911, -5911, -5911, 2441, 4521, 93521, 1144, 1144, 4825, -5911, 4482, -5911, 4418, -5911, 4949, 4558, 93521, -5911, -5911, 1352, 2190, 76181, 3988, -5911, -5911, 2626, 4223, 3513, 34935, 2769, -5911, 4559, 436, -5911, 4246, 4260, -5911, -5911, 45391, 4421, 3248, 4816, -5911, -5911, -5911, 2568, 72611, 72611, 93521, -5911, -5911, -5911, 34935, 1137, -5911, 4465, -5911, 4466, -5911, -5911, 4653, 4654, 4429, 1808, -5911, 4930, -5911, -5911, -5911, -5911, -5911, 1283, -5911, -5911, -5911, 93521, 93521, 93521, 4433, -5911, 3744, -5911, -5911, 40743, 40743, 4671, -5911, 40743, 1420, -5911, 93521, -5911, 4439, -5911, -5911, 2770, -5911, 1679, 1719, -5911, 4676, 4569, -5911, -5911, 4678, 802, -5911, 483, -5911, -5911, -5911, -5911, -5911, 4525, 1762, 1762, 3506, -5911, 93521, -5911, 4440, -5911, -5911, -5911, 68021, -5911, 4170, -5911, -5911, -5911, -5911, 4950, -5911, 313, -5911, -5911, -5911, -5911, 93521, 3988, 4118, 4207, -5911, 4246, 3513, 2626, 15398, -5911, 45905, 93521, 93521, 4260, -5911, 2775, 45391, 3499, 4602, -5911, 1908, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 450, 4444, 4452, -5911, -5911, 15995, 72611, -5911, -5911, 4592, 4600, -5911, 4668, 39159, 4609, -5911, 4661, -5911, 1447, 1458, 1934,115961, 4910, 3155, 3155, -5911, 3155, -5911, -5911, 34935, -5911, -5911, -5911, -5911, -5911, 49503, -5911, 4516, 84, 4461, 93521, -5911, -5911, 1762, -5911, -5911, -5911, 34935, -5911, -5911, 2385, 2385, 3988, -5911, -5911, 4260, 2626, 4246, 4559, -5911, -5911, -5911, -5911, 4711, -5911, 2776, 4260, 4373, 2738, -5911, -5911, 2757, 2813, 4550, 4803, -5911, 4467, 4575, 4577, 4854, -5911, -5911, -5911, 93521, 93521, 65471, 93521, 388, 2788, -5911,119461, 93521, 16662, 4470, -5911, 4528, 34935, 2798, 1762, 2800, -5911, -5911, -5911, -5911, 4246, 4260, 93521, 3248, -5911, 45391, 3385, 4849, -5911, 1908, 4601, 4604, 63431, -5911, -5911, -5911, -5911, -5911, 2279, 366, 4890, -5911, -5911, 1377, 1808,115961, 4697, 862, 2804, -5911, 4538, 2818, 135, -5911, 4260, -5911, -5911, 3499, -5911, -5911, 1137, -5911, 4529, 4531, -5911, 2819, -5911, -5911, -5911, -5911, 34935, 65471, 2459, 4477, -5911, -5911, 4686, 1377, 2761, 4686, -5911, -5911, -5911, 84, -5911, -5911, 4260, 72611, 4843, 4844, -5911, 63431, 928, 4553, 93521, 4493, -5911, 1808, -5911, 1256, 2761, 4551, 3385, 4496, 72611, 72611, -5911, 4509, 93521, 4960,115961, -5911, 1808, 1256, 4538, -5911, 63431, -5911, -5911, 2762, -5911, 4512, 2820, -5911, 1808, -5911, 2826,115961, -5911, -5911, -5911, 2830, -5911 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -5911, -5911, -5911, 4103, -464, -1749, -5179, -1132, 1958, -5911, -5911, -982, 645, 3335, -1203, -5911, -5911, -5911, 1591, -5911, -5911, -5911, -5911, 4087, -5911, -2945, -5911, -5911, 223, 4034, -1388, 171, 3644, 1614, -5911, -1016, -5911, -5911, -623, 1, -5911, 4042, 627, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -801, 2079, -5911, 2174, 1407, -3392, -5911, -5911, -1535, -3795, -5911, 655, -5911, 682, -4107, -5911, -4874, -1013, -5911, -5911, -5911, 2064, -5911, -5911, -5911, 2009, 1196, -371, -5911, -5911, -5911, -5911, -5911, -5911, -835, -5911, -5911, -1145, 2, -653, -2990, -4401, -5911, -5911, 503, -414, -1492, -5911, 695, -5911, 697, -5911, -4902, -5911, -4, -2779, -2631, -5911, -5911, -5911, -383, -1513, 1440, -5911, 1503, -5911, -742, -1182, 1884, -2178, -973, -5911, -275, -3624, -1116, -844, -842, -1005, -4426, -4954, -5911, -5911, -1144, -3834, -5260, -5502, -4926, -5159, 1449, -5911, -29, 505, -5911, 3, -3703, -3803, 4, 480, -5911, 6, 7, -5911, 497, -775, -977, -1609, -5911, -633, -5911, -5911, -5911, -3486, -5911, -5911, -5911, 187, -5911, -5911, -5911, -5911, 542, -5911, -5911, -5911, -5911, -5911, -5911, -2467, 2036, 2037, -5911, -4434, -5911, -943, -5911, 708, -3539, 1435, -5911, -5911, 1191, 4107, 526, -5911, -5911, -5911, -5911, -5911, -5911, -1803, -5911, -5911, -5911, -5911, -3, -353, -5911, -5911, -5911, -5911, -5911, -5911, -5911, 8, -5911, 1156, 468, -5911, -5911, -661, -5911, -5911, -5911, -5911, -5911, -5911, -1198, -5255, -1330, -1296, -5911, -3518, -5911, -5911, -5911, -324, -5911, -5911, -5911, -5911, -5911, -839, -5911, 1258, -4212, -5911, -5911, 514, -5911, -5911, -5911, -5911, -5911, -971, -257, 3284, -5911, -513, -740, -5911, -5911, -5911, -254, -5911, -5911, -5911, -5911, -5911, -520, -1288, 5131, 4487, -1120, 16340, -840, -588, -5911, -5911, -5911, -2765, -5911, -5911, -4184, -5911, 5122, 2767, 575, 11, -5911, 42, 112, 3922, -5911, 1124, -1169, -3157, 474, -468, -5911, -5911, -5911, 476, -5911, -1964, -5911, -5911, -5911, -5911, -4170, 12, -5911, -4445, -5264, -4682, -4216, -1157, -5911, -5697, -4543, -4163, -5911, 2078, -5911, -5911, -478, -192, 3251, -5911, -1490, 2424, -1435, -5911, -2570, 537, 1615, 3288, -3311, -104, 3241, -3039, -5911, -673, 1201, -5911, -339, -3821, -5911, -5911, -5911, -2816, -597, -5911, -5911, 1817, -1094, -5911, -5911, -5911, -5911, -665, 3224, -184, -5911, -5911, 4462, -5911, -5021, -5911, 4431, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -1486, 1368, -5911, -769, -5911, -5911, 2180, 748, -5911, -5911, -5911, -5911, 1455, -373, -5911, -5911, -5911, -5911, -5911, -5911, -5911, -952, -1185, -5911, -5911, -4662, -5911, -5911, -5911, -5911, -5911, 2547, -960, -744, 4332, 1157, 13, -5422, -5911, -5911, -1151, -5911, 3658, -5911, -5911, -5911, -5911, -5911, 529, 532, -5911, -5911, -5911, -5911, -5286, -5911, -5911, -5082, -5911, -5911, 2162, -5911, -5911, 1423, 5, 3393, -5911, -5911, -5911, -15, -5911, -5911, -1029, 2511, -5911, -2414, -5911, -604, -5911, -5911, -1919, 15, -4433, -5911, 58, -5911, -5911, -5142, -1101, 326, -5911, -5911, -4157, 61, -5911, -5911, -5911, -5911, -5084, -5911, 72, -4966, 892, -3387, -5911, 10, -5911, -421, -5911, -5911, -423, -5911, -5911, -5911, -4104, 16, 31, -5911, -5911, 74, 2163, -47, -36, -32, 21, 176, 3780, -5911, -5911, -5911, -4485, 3856, -5911, 49, -871, 5168, 5169, -5911, -898, -136, 482, 1717, -694, -2638, 3729, 3738, -5911, 1704, 2524, -2480, -2479, -5911, -851, -817, -625, -5911, -5911, -5911, -5911, -1451, -687, -2642, -5911, 3756, -5911, -5911, -5911, -2383, -3418, -3234, 1744, -3337, -3171, -5911, 983, 977, -878, -72, 101, -1499, -789, 1890, -5911, -5911, 1770, -335, -5911, -5911, -333, -3331, 942, -5911, -4653, -2864, 1775, -1097, -778, -5911, -926, -5911, -579, 1780, -5911, -4307, -1130, -5911, -3691, 576, 3844, -831, -5911, -5911, -812, 9265, -5911, -5911, -5911, 11105, 11338, -5911, -5911, 11988, 12269, -5911, -559, 12497, 8476, -793, -1956, 245, 12981, 17180, -1806, -677, 317, -5911, -2920, -2369, -5911, -5911, -5911, -300, 1092, 1055, -5911, -5911, -4688, -4489, -5911, 2671, -2150, -5911, -587, 1846, -585, -5911, -5911, -5911, -2604, -4938, -2695, 2675, -5911, -5911, -5911, -187, -5911, 18169, -3279, -5911, -551, -1018, -1607, 3182, -3034, -1950, -5911, -5911, -5911, -3142, -5911, -5911, -5911, -440, 1874, -5911, -5911, 1997, -5911, -5911, -5911, -975, 2242, -768, -1183, 1879, -4551, -5911, -522, -4276, -5068, -5911, -5709, -5891, -1890, -1108, -3056, -5910, -1951, 1896, -3193, -5911, -1947, 1978, 1187, -5911, -2346, -5911, 4370, -787, 2690, -803, 16194, -671, 10668, -1303, -5911, 235, -4225, 3541, 7082, 29, -120, 9781, -621, 2607, 3306, -5911, -5911, -6, 9253, -628, -874, -5911, 5256, 15755, 16120, -3738, -5911 }; /* 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 -3001 static const yytype_int16 yytable[] = { 650, 71, 80, 83, 84, 175, 85, 86, 106, 926, 184, 124, 129, 159, 960, 178, 185, 802, 1102, 804, 1734, 191, 1001, 810, 996, 1006, 766, 995, 818, 826, 830, 1831, 833, 1661, 1048, 826, 826, 1389, 863, 657, 866, 1491, 191, 2002, 1948, 1714, 708, 922, 922, 922, 1377, 793, 2954, 937, 1228, 1229, 1230, 793, 180, 2876, 1234, 181, 1477, 1442, 1479, 2847, 3647, 1825, 1666, 2742, 1433, 1434, 183, 1462, 186, 1418, 1726, 3524, 828, 3249, 1441, 2833, 3525, 3894, 1891, 1194, 2846, 1142, 1234, 2050, 2042, 4053, 1140, 948, 864, 1417, 1004, 2859, 3111, 3977, 4222, 3265, 4224, 1405, 1448, 1864, 4447, 1201, 4289, 1869, 1026, 1510, 2034, 3240, 1873, 4862, 2036, 1175, 3301, 2037, 2038, 4621, 3023, 3305, 1883, 2915, 2915, 3807, 4341, 2915, 4369, 1188, 4373, 4595, 1048, 800, 2742, 4397, 1903, 4399, 3916, 4608, 4544, 4877, 1069, 860, 4926, 4264, 829, 4303, 5299, 4896, 3357, 3775, 3359, 939, 4646, 1202, 2674, 940, 931, 2984, 2985, 1185, 5543, 3130, 1820, 5134, 5103, 1937, 3178, 3550, 3552, 2824, 5142, 3289, 3293, 3296, 3297, 5163, 3925, 3306, 5616, 3308, 3309, 5641, 5152, 1048, 5237, 232, 5238, 650, 951, 951, 1573, 4965, 951, 4194, 5492, 5716, 962, 5311, 863, 5313, 2980, 998, 823, 1601, 962, 1660, 5151, 962, 3431, 857, 863, 1142, 951, 3433, 1692, 863, 1397, 4278, 3443, 951, 3516, 863, 875, 3519, 1719, 5460, 5755, 3012, 1623, 2824, 5499, 4309, 4091, 1640, 5768, 4605, 1048, 649, 1484, 4191, 4247, 5488, 5365, 775, -2577, 1487, 2824, 775, -2619, 5961, -2645, -2686, 2804, 4093, 1173, 714, 4127, 1177, -1980, 1876, 849, 3913, 1899, 4104, -1980, 3495, 2991, 5633, 4631, 3853, 2877, 3856, 3857, 5491, 3325, 1900, 3861, 3862, 3863, 1417, 3865, 3866, 3867, 1568, 5257, 3245, 2877, -1947, 5713, -1960, 714, 6153, 4180, -1947, -1985, -1960, 4302, -2465, 1048, 1532, -1985, 3368, 2633, -2465, 3489, 6000, -2465, -2465, 4262, 775, 4267, 4268, 1861, 5949, -2425, 1423, 667, 1430, 1431, 648, -2425, 3834, 1019, 5669, 1568, 5343, 6146, 3490, 1440, 1568, -2005, -2498, 5679, 5680, 2997, 1856, -2005, 2850, -2466, 5885, 1605, 1129, 775, -1975, -2466, -2874, 2994, -2466, -2466, -1975, 5021, -2874, -2581, -1988, -2874, -2874, 946, 5707, 3275, -1988, 714, 714, 1209, 775, 1260, 714, 2108, 3276, 714, 2762, -1988, 2596, 1930, 5800, 2596, 3108, -1988, 2915, 4560, 2610, 867, 1602, 714, 1213, 3223, 6148, 4055, 775, 2611, 2593, -1919, 2113, 1602, 4641, 680, 1031, 714, 3207, 775, 4041, 714, 5911, 4451, 5913, 1031, 4337, 1393, 5917, 5918, 5164, 1833, 4043, 5032, 3463, 1533, 1142, 5327, 3366, 5705, 5791, 3769, 6240, 6241, 781, 2787, 2639, 2850, 781, 949, 781, 781, 6307, 1930, 3342, 1930, 2788, 6158, 961, 1825, 934, 2685, 1726, 6134, 5921, 1930, 961, 1878, 782, 961, 5632, 5254, 782, -2250, 782, 782, 6424, 2900, 6126, 2641, -2250, 4983, 2819, 665, -2642, 3368, 5646, 3466, -150, 682, 2679, 3571, 5453, 3277, -150, 1433, 1434, 3521, 3141, -624, 1232, 1540, 1930, 5822, 5113, 1480, 1930, 2681, 6065, 3821, 3410, 6414, 3464, 996, 5963, 1704, 5982, 3411, 1913, 2612, 1032, 3142, 5371, 661, 194, -2269, 3086, 1441, 4471, 1032, 2878, 781, -2269, 5362, 4293, 5211, 5212, 5213, 2113, 5215, 5216, 5217, 5218, 5219, 1901, 2908, 2878, 6453, 2850, 6114, 4094, 1930, 781, 2850, 5756, 782, 5996, 1448, 664, 2850, 4105, 6465, 2932, 996, 6452, 1930, 5983, 1956, 1902, 195, 2850, 3278, 2639, 4294, 5823, 662, 782, 4181, 1096, 4472, 2850, 2820, 2978, 3572, 1106, 6066, 1033, 5882, 5255, 194, 4127, 1233, 4467, 1482, 941, 1033, 1120, 2850, 4474, 2634, 5114, 3109, 2105, 2113, 1820, 2641, 1946, 5997, 1456, 3522, 3087, 3343, 4984, 5454, 4127, 1825, 1541, 714, 1986, 1534, 888, 5922, 2901, 2781, 3822, 6159, 3367, 5792, 2023, 6308, 5033, 6296, 2599, 1456, 195, 6363, 2789, 2639, 1271, 2033, 6242, 4127, 2677, 4592, 899, 4128, 4129, 4130, 1034, 3279, 6135, 5744, 3280, 4071, 1142, 2613, 2043, 1034, 5801, 2047, 715, 1535, 5328, 4182, 2860, 1983, 4532, 2676, 5834, 4042, 2641, 693, 2951, 694, 1051, 3223, 5597, 3590, 2790, -448, 863, 4044, 951, 3027, 951, 942, 4544, 951, 3143, 1862, 2949, 5115, 4632, 2952, 998, 1079, 1536, 5344, 5920, 1109, 698, 951, 1931, 3208, 2879, 3223, 191, 951, 3369, 2026, 4452, 3224, 4338, 3223, 5000, 6139, 2992, 5708, 3835, 6125, 2879, 1134, 1612, 958, 3011, 2594, 3021, 3022, 6053, 4561, 3065, 650, 926, 6058, 6059, 2880, 4642, 1430, 1431, 6383, 962, 2959, 5333, 1076, 998, 1233, 1077, 962, 3489, 6312, 962, 2880, 4183, -2642, 2998, 1428, 868, 1078, 1946, 1080, 2881, 6464, 1931, 2809, 1931, 2027, 951, 1233, 1205, 1537, 3281, 3490, 2652, 6470, 1931, 1440, 2881, 3261, 1862, 787, 788, 3110, 3020, 6001, 2999, 2877, 5561, 2615, 1263, 1142, 4095, 3460, 2628, 2628, 2608, 4142, 2995, 1142, 1142, 191, 4106, 2875, 5112, -2577, 6147, 3436, 2921, -2619, -1980, -2645, -2686, 1931, 5956, 3619, 2719, 1931, 668, 2875, 2104, 863, 1492, 2720, 1206, 2708, 1211, 2893, 1215, 6311, 1253, 6362, -2642, 2938, 1219, 6079, 5159, 5007, 3196, 1432, 1222, 1436, 1725, 5011, -2642, 5160, -1985, 787, 788, -2465, 1383, 1383, 5372, 863, 826, 3028, 4132, -2250, 826, 2894, 2972, 2973, 1931, 5381, 1039, 6149, -2425, 4932, 1040, 1932, 5959, 5116, 863, 4198, 3180, 6234, 1931, 863, 6395, 1542, 787, 788, 2065, 1383, 6244, 1843, 1443, 1444, 3282, 1848, -2466, 1849, -2498, 996, 3412, -1975, 1847, -2874, 2657, 2658, 2655, 787, 788, 1443, 1444, 1445, 4544, 3206, 6263, -2269, 939, 6097, 2109, -2581, 940, 2828, 3704, 2597, 1703, 3221, 6411, 4505, 1447, 4264, 1704, 1603, 1604, 4912, 1236, 1939, 1383, 1943, 2581, 4737, 4738, 2811, 1603, 1604, 2979, 2877, 944, 1954, 4133, 6294, 863, 2818, 5117, 1543, 4468, 71, 80, 83, 84, 175, 85, 86, 106, 863, 184, 124, 129, 159, 2877, 178, 185, 4970, 2728, 1838, 2828, 191, 2902, 5868, 863, 1525, 949, 4462, 4463, 1632, 1976, 2782, 4464, 5998, 1979, 961, 1236, 2828, 6199, 4605, 1039, 4586, 961, 863, 1040, 961, 4742, 6314, 951, 951, 4311, 3267, 4312, 1633, 2680, 2861, 4305, 4593, 180, 3064, 6210, 181, 1039, -150, -150, 4593, 1040, 5999, 3591, 2862, 4801, 2863, 183, 4886, 186, 6118, 1862, 5071, 2878, 1946, 826, 826, 1946, 5075, 2939, 1705, 4524, 4525, 2942, 2943, 4842, 3230, 6417, 4683, 4846, 2803, 3516, 959, 4283, 2027, 3054, 5530, 4229, 1383, 1383, 4723, 6124, 2578, 2579, 2580, 2581, 5743, 4686, 3082, 5074, 4104, 1496, 650, 1424, 951, 4683, 2877, 3300, 962, 6361, 1092, 998, 962, 1128, 962, 1880, 1547, 6317, 6318, 951, 1392, 1156, 2864, 6106, 1402, 4832, 3791, 4834, 4835, 6156, 3395, 2681, 3792, 3884, 714, 6188, 5749, 3981, 1930, 6117, 714, 2971, 6269, 863, 4139, 4140, 4141, 4142, 1224, 4519, 951, 951, 4584, 3686, 5872, 2576, 2577, 2578, 2579, 2580, 2581, 3736, 3489, -1947, 6190, 3489, 4137, 4138, 4139, 4140, 4141, 4142, 863, 863, 863, 6191, 951, 1129, 650, 6302, 650, 650, 6295, 1452, 714, 3490, 1825, 2783, 3490, 2981, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 709, 4926, 1614, 6428, 5414, 5843, 4342, 5514, 941, 3231, 6352, 4306, 3687, 4998, 3489, 951, 2878, 951, 951, 1624, 6235, 3610, 3489, 5818, 3696, 3124, 3664, 5183, 5415, 3982, 5652, 5128, 4093, 3241, 6025, 3416, 2877, 3490, 2879, 2878, 2838, 6397, 3793, 823, 1684, 3490, 3719, -1947, 3885, 2113, 1383, 3641, 3737, 6418, 4647, 1706, 1048, 6243, 1094, 3120, 1095, 3872, 1453, 3, 4, 1130, 6221, 1261, 3042, 2880, -1780, 3218, 3219, 803, 2877, 3396, 2004, 1923, 2004, 1615, 3397, 979, 863, 191, 802, 932, 3121, 1015, 980, 981, 982, 1924, 3665, 6098, 2881, 5813, 1988, 1707, 1990, 942, 1992, 934, 1994, 2877, 1996, 1997, 1998, 3738, 2040, 2918, 863, 2000, 2922, -1099, 2046, 4425, 2641, 3365, 1016, 1407, 3611, 4359, 5762, 1698, 1946, 1862, 3720, 3688, 1383, 760, 5763, 3398, 1708, 6024, 1625, 2875, 2064, 1225, 6296, 6442, 1454, 2842, 3013, 1455, 949, 4648, 2878, 2877, 1925, 15, 961, 943, 5942, 933, 961, 3055, 961, -2421, 1154, 5945, 2784, 2877, 926, 3549, 3182, 3621, 1699, 4541, 5953, 3739, 1383, 5955, 5490, 6319, 5543, 5093, 5941, 4105, 3620, 5970, 1922, 3159, 5958, 6350, 1154, 3417, 20, 6056, 5819, 6337, 2879, 2105, 3914, 3205, 6297, 3171, 5484, 3210, 5478, 1383, 1383, 1383, 3217, 1383, 3639, 3220, 5957, 3155, 3177, 5509, 1210, 1212, 1214, 2879, 4111, 1216, 1217, 1218, 5991, 5820, 1915, 2880, 1917, 1918, 1383, 1223, 3794, 5543, 2957, 3472, 4426, 1093, 4084, 1131, 3849, 1881, 5339, 3232, 3189, 3176, 714, -1947, 1157, 6360, 2880, 6271, 2881, 934, 1931, 3299, 3299, -1780, 1926, 3697, 6367, 3528, 2785, 4638, 3233, 3886, 5356, 1456, 3705, 2637, 3326, 863, 1514, 3983, 3795, 2881, 5461, 1132, 3706, 3347, 3316, 2878, 5515, 3844, 5208, 4342, 6174, 1514, 3984, 1383, 3200, 3399, 996, 2875, 3873, 1227, 3122, 6222, 3740, 6396, 4123, 807, 2824, 2686, 2687, 4927, 2691, 940, 940, 3796, 940, 3689, 710, 3614, 4094, 6192, 2875, 2844, 2772, 2878, 5764, 5864, 5814, 5416, 1626, 5462, 2879, 3157, 5858, 4649, 3837, 1927, 6426, 4375, 6272, 1383, 4688, 6252, 2773, 1383, 1383, 1133, 3170, 1134, 4227, 3172, 6279, 1135, 2878, 5094, 863, 863, 863, 2726, 5929, 1383, 5332, 2880, 944, 3887, 6002, 3262, 1515, 3264, 6443, 5300, 1627, 1700, 5723, 3271, 3081, 2954, 6108, 711, 1499, 3286, 3287, 1515, 826, 4124, 4125, 6223, 2881, 1457, 4144, 3943, 1039, 3310, 3072, 4276, 1040, 3260, 2878, 3448, 1408, 3209, 4978, 3330, 32, 3215, 3216, 1628, 935, 3345, 4650, 6175, 2878, 4460, 1458, 3077, 6224, 1452, 3554, 2815, 5139, 712, 1516, 713, 826, 3449, 4427, 951, 5724, 2875, 5457, 5725, 4175, 4176, 6003, 3741, 40, 1516, 5726, 1928, 863, 2849, 6273, 3742, 2845, 4870, 3743, 5140, 3432, 863, 1271, 4470, 951, 4127, 4376, -1124, 6252, 4128, 4129, 4130, 5479, 2879, -1947, 1496, 3201, 1496, 5727, 5173, 4428, 3529, -1947, 2772, 1432, -1947, 1461, 44, -1947, 1409, 5303, 998, 4507, 863, 1895, 5307, 826, 1701, 5309, 2917, 2917, 1257, 4689, 2917, 2880, 1825, 1965, 1453, 5758, 5854, 3202, 2879, 1525, 826, 1842, 4429, 863, 1525, 6044, 863, 3120, 1723, 5930, 5759, 3203, 1851, 5101, 3966, 4544, 2881, 4574, 48, 6257, -1781, 3610, 761, 4914, 1896, 5728, 5757, 2879, 1859, 2880, 951, 49, 4979, 1540, 3121, 1517, 1966, 4972, 5729, 3078, 40, 3925, 813, 2774, 680, 5748, 5139, 6233, 863, 3204, 1517, 5730, 3623, 2089, 2881, 50, 5621, 2875, 2880, 4284, 951, 951, 951, 951, 863, 2742, 5668, 1031, -1097, 2742, 1629, 2879, 1454, 5140, 762, 1455, 6252, 6055, 863, 44, 1525, 3000, 6176, 2881, 1525, 2879, 2777, 6177, 5931, 1383, 1383, 1383, 3744, 4696, 4888, 2875, 6274, 3073, 831, 1500, 2761, 814, 2880, 5088, 5133, 985, 986, 987, 988, 989, 990, 991, 992, 993, 2778, 1518, 2880, 3569, 682, 3158, 3611, 5065, 6178, 48, 2875, 1590, 5069, 2881, 40, 3610, 2692, 4690, 6257, 2695, 996, 996, 49, 3555, 3168, 4865, 3556, 2881, 4131, 4980, -711, 5092, 5130, 2766, 1541, 1987, 5141, 3624, 1989, 1519, 1991, 2975, 1993, 1520, 1995, 2767, 50, 35, 1999, 2944, 6310, 4132, 6195, 44, 2875, 1820, 1039, 1032, 5855, 3744, 1040, 684, 4753, 2768, 4754, 3530, 1246, 2696, 2875, 4377, 4378, 2030, 3226, -1704, 863, 5881, 2774, 1074, 1521, 1456, 1724, 2778, 3151, 40, 6168, 863, -1704, -1781, 1946, 4045, 194, 4541, -1704, 951, 951, 4575, 5760, 48, 1522, 1271, 4379, 1523, 4127, 5102, 6340, 1897, -3001, -3001, -3001, 951, 49, 3646, 3001, 1522, 3611, 6341, 1523, 1967, 858, 4996, 4942, -2449, 44, 1033, 5472, -175, 4285, 863, 2917, 6359, 2695, 2693, 6196, 2697, 50, 195, 815, 4133, 3489, 6257, 4898, -1704, 3489, 951, 951, 951, 951, 6203, 5731, 996, 3612, 5732, 863, 56, 4697, 4943, -175, 5678, 1247, 863, 1442, 3490, 3131, 6112, 5089, 3490, 48, 1524, 3520, 1198, 5297, 5566, 2779, 3227, -1704, 4046, 5962, 650, 2696, 49, 650, 1553, 4889, 2698, 5536, 1034, 693, 4863, 694, 4890, 962, 962, 3613, 3614, 835, 1457, 4891, 5948, 1590, -1124, 3797, 998, 998, 50, 2945, 962, 4866, 5537, 962, 2946, 1663, 1946, 697, 5538, 3755, 1877, 5969, 1898, 1474, 4755, 3198, 2850, 56, 951, 951, -1704, 834, 5539, 4899, 1968, 951, 2867, 863, 2851, 4892, -1704, 1826, 870, 2769, 1827, 3198, 1404, 3798, 1264, 5651, 1632, 3646, 3489, 2699, 2004, 1480, 3198, 1664, 4944, 5567, 3693, 951, 4893, 962, 3805, 191, 3214, 962, 962, 4864, 863, 863, 2868, 951, 1633, 3490, 3508, 3190, 3292, 3191, 863, 3192, 3799, 3193, 5675, 3194, 3717, 863, 6321, 3195, 863, 3131, 5790, 5683, 802, 3636, 4354, 802, 3251, 2698, 3999, 1079, 1383, 2601, 1383, 836, 3614, 5528, 5676, 1383, 1383, 4900, 191, 4365, 4541, 4901, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1475, 4687, 1979, 1383, 5593, 1383, 998, 1383, 1383, 1383, 1383, 1383, 1383, 3246, 1482, 1383, 1248, 1383, 1383, 4699, 1076, 1383, 4465, 1077, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 3451, 1078, 2699, 1080, 5540, 1383, 1383, 1383, 2742, 5459, 4968, 1665, 4355, 5086, 6381, 2602, 4711, 5340, 2742, 6116, 3838, 3839, 3840, 1383, 3717, 3235, 1249, -1704, 1250, 3570, 6289, 3498, 1483, 3754, 1142, 680, 1408, 4724, 4353, 760, 6440, 6463, 4728, 2954, 4133, 3800, 3731, 6399, 5483, 6115, 6133, 3801, 1862, 3250, 928, 6290, 4736, 5689, 6472, 15, 187, 949, 6454, 951, 949, 3492, 3666, 4466, 3993, 4171, 3729, 3781, 3730, 5470, 961, 961, 5627, 5940, 5629, 5779, 2112, 187, 1204, 2113, 6434, 2898, 3802, 5087, 4969, 961, 3882, 5341, 961, 2742, 2113, 1039, 20, 4545, 1466, 1040, 946, 29, 4727, 3925, 5690, 4669, 3828, 4732, 4733, 682, 1694, 3633, 2855, 1409, 2856, 4305, 925, 2639, 3806, 1881, 3489, 3489, 3499, 6140, -3001, 1257, 2915, 3844, 2639, 5691, 661, 1271, 3667, 4514, 4127, 1245, 1881, 35, 4128, 4129, 4130, 929, 961, 3490, 3490, 4548, 961, 961, 5692, 5973, 2641, 5441, 1695, 5693, 2925, 4682, 1696, 6141, 4794, 2928, 5541, 2641, 3929, 3930, 3931, 3932, 3728, 3934, 2924, 3803, 1383, 5449, 5542, 5451, 2619, 5694, -1704, 1672, 945, 5695, 2857, 6236, 930, 1979, 6422, 5442, 6425, 1697, 1419, -1704, 4469, 3772, 3962, 3773, 5696, -1704, 5432, 3777, 5433, 5434, 5435, 40, 4683, 5990, 3804, 3756, 4550, 5373, 1121, 4829, 3376, -474, 3377, 3759, 954, 5379, 3762, 2620, 4898, 4749, 4750, 4751, 4752, 5952, 1383, 4756, 4757, 4758, 4759, 4760, 4761, 4762, 4763, 4764, 4765, 3003, 5914, 4506, 3378, 3009, 44, 5915, 2963, 1673, -1704, 1122, 4831, 4037, 6466, 2944, 1469, 938, 5675, 956, 4308, -3001, -3001, -3001, 4137, 4138, 4139, 4140, 4141, 4142, 4378, 1400, 5919, 6132, -3001, 1506, 977, 4254, 2964, -3001, 4254, 40, 5676, -1704, 1121, 6342, 1383, 4545, 3955, 1123, 48, 1674, 781, 4546, 2605, 4805, 4806, 693, 1675, 694, 4956, 5916, 1676, 49, 6313, 1979, 5697, 4547, 32, 3379, 6343, 4927, 4899, 1507, 4255, 2867, 782, 1508, 3037, 4617, 44, 1122, 1098, 5445, 1099, 1480, 1877, 50, 4553, 3048, -3001, 1481, 6201, 1632, -1704, 4548, 3917, 4549, 1632, 1124, 40, 1642, -474, 4927, -1704, 3066, 56, -1437, 4256, -1437, 978, 2868, 1509, 4132, 6323, 4255, 1501, 1633, 4255, 4587, 5698, 1511, 1633, 4848, 48, 3380, 3381, 3382, 3383, 1669, 3489, 1973, 3384, 3385, 4554, 4161, -150, 3489, 3386, 44, 4422, 4168, 3489, 1643, 1645, 3489, 4258, 3014, 2646, 4256, 4900, 4555, 4256, 3490, 4901, 1974, 4550, 5034, 1502, 3140, 3490, 5083, 6435, 1512, 4257, 3490, 1646, 4257, 3490, 1124, 2945, 1670, 5051, 1482, 3152, 2946, 1021, 1154, 3156, 3016, 56, 5035, 4423, 48, 6043, 4551, 2105, 4258, 5084, 3015, 4258, 3083, 3017, 1503, 1030, 5052, 49, 4223, 1513, 4133, 4025, 5856, 3736, 6205, 6206, 6436, 1671, 4067, 3175, 1154, 1038, 3113, 2650, 2850, 4407, 233, 4259, 4424, 1647, 4259, 50, 666, 3018, 1082, 1483, 2858, 4408, 3900, 5857, 758, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 56, 1383, 4026, 1677, 1985, -3001, 4927, 1827, 832, 4878, 40, 863, 1383, 5675, -1704, 1383, 4556, -1751, 714, 5783, 1635, 4068, 863, -1751, 1398, 1645, 4069, 6427, 4552, 3600, -1951, 3604, 3605, 4553, 4260, 996, -1951, 5676, 3603, 1711, 1084, 1678, 1715, 5784, -1958, 1679, 5884, 1646, 1089, 44, -1958, 5888, 5889, 3737, 863, 3387, 1383, 4315, 2035, 951, 1383, 1827, 1432, 1383, 2675, 1383, 3444, 3388, 1383, 3326, 3326, 1648, 1383, 1117, 3326, 4260, 4475, -1948, 4260, 4554, 1680, 2636, 1039, -1948, 1827, 5297, 1040, 1681, 4234, 4235, 5685, -1949, 1103, 48, -1952, 3491, 4555, -1949, 4343, 1647, -1952, 863, 863, -1950, -623, -1751, 49, 6300, 3738, -1950, 4254, -3001, 1383, 3360, 3597, 4225, 3326, 3326, 1443, 1444, 1125, 1383, 1383, 2576, 2577, 2578, 2579, 2580, 2581, 1649, 50, 4310, 1126, 4383, 1650, 863, 714, 1445, 3632, 1651, 1443, 1444, 2106, 3535, 5200, 3540, 2886, 4271, 2887, 56, 6438, 4196, 775, 6441, 775, 2953, -1751, 5974, 4281, 1447, 5207, 714, 2649, 3901, 775, 2650, 5082, 4791, 4949, 2676, 3739, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 1825, 3489, 4603, -1704, 1148, 802, 5324, 802, 4255, 714, 1653, 1648, 714, 6154, 4955, 5013, -1704, 4126, 5289, 6155, 4556, 1383, -1704, 5230, 3490, 2683, 1127, 6355, 1827, 4154, 5235, 5236, 650, 790, 1144, 962, 998, 962, 962, 790, 3532, 951, 4256, 5135, 863, 3186, 4654, 5167, 2650, 2628, 3735, 4655, 4655, 3573, 1142, 3576, -2824, 4257, 1655, 4541, -2824, 4346, 1622, 4885, 5870, 826, 4178, 1639, 1432, 1649, 2675, -1704, 5875, 5876, 1650, 187, -2417, 2849, 40, 1651, 4258, 1039, 1656, 1227, 1155, 1040, 4945, -2418, 4952, 1164, 3652, 863, 1039, 1165, 1227, 2953, 1040, 3663, 1432, -1703, 1461, 6288, 4913, 1658, -1704, 1189, 863, 6248, 29, 4259, 4209, 3197, -1703, 3740, 3198, 1171, 4930, 44, -1703, 1039, 1182, -2425, 2742, 1040, 1438, 1439, 3199, 4698, 863, 3198, 1653, 3825, 3380, 3381, 3382, 3383, 4590, 6198, 5304, 4153, 3238, 4155, 4156, 3239, 1199, 4562, 4417, 4319, 775, 863, 3447, 3618, 661, 1979, 1659, -1704, 649, 3465, 3467, 3468, 3902, 48, 826, 3452, 1227, -1704, 2650, -1703, 187, 925, 3025, 3026, 3541, 4971, 49, 2650, 1226, 4927, 1655, 5771, 2051, 3630, 56, 3489, 3631, 951, 3711, 3878, 951, 3712, 3879, 3, 4, 4017, 4316, 4317, 3198, 1432, 50, 2675, -1703, 4066, 1656, 3489, 2650, 1231, 3490, 4260, 40, 1235, 4075, 1142, 3903, 2650, 863, 863, 4330, 56, 3146, 5849, 3147, 6218, 4082, 1658, 4083, 2650, 3490, 2650, 4442, 3808, 1238, 3811, 3813, 4448, 1241, 3489, 4102, 3771, 3487, 3837, 4113, 1243, 4146, 2650, 3741, 2650, 4087, 44, 4088, 3064, 1244, -1703, 3742, 932, 4160, 3743, 3726, 2650, 3490, 4165, 1254, -1703, 4166, 1383, 1383, 1383, -1752, 4232, 4400, 1383, 2650, 4401, -1752, 949, 1659, 1256, 961, 951, 961, 961, 6400, 1257, 4533, 4405, 6122, 4433, 4406, 1255, 4434, 4503, 951, 48, 4434, 4214, 4626, 4215, 1383, 4627, 951, 4629, 4660, 5305, 4630, 4661, 49, 4774, 1258, 4059, 4775, 4061, 4062, 2849, 1265, 4184, -1704, 4185, 863, 4785, -1149, -1149, 4786, 933, 3915, 5153, 4797, 802, 4873, 2650, 50, 4874, 4879, 1259, 4884, 4880, 938, 3556, 187, 951, 3926, 5136, 5146, 4186, 3198, 4438, 3517, 3518, 5202, 6249, 3808, 2027, 5242, -1775, -1775, 2650, -1752, 1940, 6456, 1403, 951, 4875, 3948, 1944, 4614, 1406, 4615, 4455, 5483, 5279, 1267, 5335, 2650, 1955, 3556, 5359, 1410, 1958, 5360, 3489, 5076, 1961, 5077, 1963, 5575, 5366, 3966, 5576, 3198, 1971, 5367, 1443, 1444, 3198, 4056, 1977, 3351, 5368, 1980, 3354, 3198, 951, 3490, 951, 4216, 951, 4217, -1752, 3379, -1779, -1779, 1271, -1703, 4580, 4127, -1778, -1778, 934, 4128, 4129, 4130, 5485, 5522, 5558, 5486, 4661, 5559, 4929, 5560, 4931, 5580, 2650, 4934, 5581, 5590, 5644, 5645, 1979, 2004, 3944, 5596, 2742, 2681, 4600, 5598, 5718, 1412, 4600, 5719, 5738, 1411, 996, 3198, 6041, 5772, 4927, 5832, 5773, 3489, 5833, 5838, 6017, 6018, 1979, 3380, 3381, 3382, 3383, 1420, 5841, 5852, 4187, 4600, 5853, 1425, 5903, 5944, 4188, 5904, 2604, 5971, 3490, 6008, 5853, 6009, 4166, 6029, 2650, 5245, 6030, 5246, 6033, 650, 951, 1979, 962, 4692, 962, 962, 5804, 951, 5805, 4594, 1142, 1416, 1142, 6034, 1383, 4563, 2650, 4565, 1726, 1383, 1428, 6064, 6070, 6071, 3239, 3239, 3239, 6369, 6074, 6370, 926, 2650, 4573, 6075, 4576, 6076, 2650, 1435, 6077, 5548, 5549, 6104, 6170, 4780, 6105, 4600, 1466, 6185, -1692, 1825, 2650, 1449, 6187, 6200, 6214, 2650, 3198, 6215, 6238, 6287, 2112, 6239, 5846, 2113, 6320, 6365, 4277, 5853, 6366, 1383, 1383, 1383, 6122, 935, 1383, 6164, 6165, 6385, 4927, 926, 6386, 1426, 1383, 1383, 1383, 1383, 2681, 6393, 649, 6394, 4874, 1466, 2650, 6421, 1142, 1432, 6030, 2639, 1383, 4635, 4955, 1383, 1467, 1383, -3001, 6246, 4677, 6423, 6431, 6469, 2650, 6432, 6386, 923, 924, 6471, 1383, 1383, 6432, 6473, 1383, 187, 6386, 1436, 4825, 3599, 4827, 5288, 3489, 5291, 2641, 3607, 1451, 4847, 4132, 4850, 2721, 1478, 2724, 998, 4189, 1383, 1493, 1383, 1494, 1383, 1495, 1498, 1504, 4946, 1545, 3490, 4190, 1461, 1571, -2467, 1574, 1576, 1577, 1612, 1616, 1617, 1618, 1629, 1383, 1641, 1631, 4213, 1644, 1668, 3487, 863, 1685, 1686, 1702, 1713, 1712, 1716, 3649, 1721, 4705, 1722, 3299, 5357, 926, 1835, 1837, 4700, 1839, 2052, 1844, 5552, 863, 1850, 1855, 1858, 1860, 1865, 1868, 4927, 1870, 1862, 4177, 1879, 3326, 3326, 3326, 3326, 1884, 2061, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 4133, 1885, 650, -137, 5180, 3491, 4252, 4219, 4220, 4221, 4252, 4266, 4252, 4252, 1887, 1888, 926, 3489, 4777, 1383, 949, 1890, 1892, 961, 1383, 961, 961, 1893, -3001, 4909, 1904, 2676, 1911, -3001, 1913, 1916, 1920, 213, 1929, 1383, 3490, 1934, 1935, 1936, 1938, 1941, 1942, 1945, 2102, 1946, 1953, 1957, 1959, 3491, 3326, 3326, 1960, 4298, 1962, 1964, 4301, 3491, 1969, 3540, 1970, 3693, 1972, 4966, 1975, 1978, 1981, 1982, 1984, 2001, 2032, 2039, 2041, 5070, 2048, 2044, 2589, -3000, 2089, 2049, -3001, 2056, 2057, 2058, 2059, 2060, 56, 2062, 2591, 3717, 5057, 2063, 792, 5796, 2064, 2066, 2067, 4838, 792, 2609, 1383, 4746, 2068, 2069, 2070, 2071, 2072, 2073, 2587, 2622, 2074, 2075, 2076, 2631, 6398, 2077, 2078, 2079, 2593, 2081, 3489, 2082, 3368, 2653, 951, 951, 2083, 2084, 2085, 2086, 2087, 2088, 2091, 2092, 2093, 4773, 2094, 2095, 2646, 2096, 2097, 2098, 2594, 3490, 2659, 5062, 2604, 2654, 2668, 2661, 2662, 2665, 2666, 2669, 2670, 2671, 2672, 2677, 1481, 1483, 1383, 2684, 2715, 2727, 3876, 2717, 2729, 2730, 938, 938, 2731, 938, 2732, 2748, 2750, 2749, 2675, 2751, -3000, 2752, 2753, 2754, 2755, 2756, 2757, 2758, 4813, 2764, 2780, 2786, 2792, 2806, 2810, 2812, 2813, 2814, 2816, 2817, 2830, 2834, 2835, 2836, 2853, 2871, 2865, 2874, 2872, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 2869, 4411, 2854, 2873, 2883, 2875, 4277, 2885, 2889, 2890, 2884, 2909, 2895, 2896, 2888, -3000, 2899, 2923, -3001, 2940, 2933, 2905, 2947, 649, 2906, 863, 649, 2919, -3000, 2920, 2950, 2926, 1590, 2929, -3000, 2917, 2930, 2935, 2936, 2948, -3000, 2955, 2956, 2961, 2962, 2965, -3000, 2967, 2968, -3000, 5505, 2969, 2970, -3000, 2974, 2976, 2982, 2977, 2993, 2983, 5810, 2996, 3007, 3024, 3002, 3036, 3031, 3038, 3039, 3052, 3040, 3041, 3045, 3489, 649, 3046, 3053, 3047, 3057, 3049, 3058, 3050, 649, -3000, 3051, -3000, 3059, 3060, 3067, 3068, 3071, 5831, 675, 3084, 3076, 3095, 3490, 3099, 3103, 1665, 3100, 3112, 3115, 3118, 3119, 3487, 3128, 3139, 3487, 3145, 3161, 3149, 3132, 3163, 3164, 4995, -3000, 3236, 3165, 3166, 3211, 3136, 3154, 3179, -3001, 4037, 3248, 3267, 4048, 2113, 3414, 3356, 3222, 3272, 3346, 3313, 2576, 2577, 2578, 2579, 2580, 2581, 3373, 4058, 1383, 3394, 3352, 3392, 4063, 3420, 1383, 3435, 3440, 3419, 3455, 1456, 3487, 933, 3439, 3441, 3453, 951, 3438, 3454, 3487, 3456, 3497, -3000, 3457, 3458, 3462, -3000, 3470, 3509, 3471, 3526, 3511, -3000, 3533, 4090, 3534, 3510, 3545, 3489, 3326, 3546, 3512, 3492, 2112, 3489, 3548, 2113, 3565, 3574, 3579, 2114, 2115, 2116, 863, 863, 863, 3582, 1271, 3587, 3592, 4127, 3490, 3606, 3593, 4128, 4129, 4130, 3490, 2681, 3595, 863, 3622, 3627, 1400, 3162, 3643, 3629, 1404, 3644, 3645, 2639, 3655, 3169, 3668, 1383, 3673, 3700, 2640, 3674, 3694, 3577, 3702, -3000, 2112, 3701, 3598, 2113, 5466, 3707, 3727, 3637, 3749, 2004, 863, 863, 3718, 3710, 3728, 863, 3725, 3748, 1881, 3809, 2641, 3824, 3765, 3832, 3836, 3833, 934, 863, 5108, 5109, 3845, 2112, 3852, 5267, 2113, 3858, 3859, 2639, -3001, -3001, -3001, 3860, 3864, 3891, -3001, 3869, 3892, 3906, 5146, 3908, 3880, 3910, 3920, 3938, 3369, 3927, 3939, 3941, 3912, 3946, 3942, 3949, 5315, 3953, 3954, 3933, 3951, 3940, 2639, 3957, 2641, 3958, 3489, 3963, 3978, 2640, 5192, 5193, 5194, 5195, 5196, 3979, 3980, 951, 3988, 3989, 3990, 3992, -3000, 3994, 4008, 4011, 4014, 4010, 4016, 3490, 4019, 3214, 4680, 4020, 1979, 2641, 4021, 4620, 4034, 4022, 4023, 4038, 863, 4047, 4029, 4040, -3000, 4060, -3000, -3000, 4050, 4039, 4079, 1976, 5197, 863, 1943, 4028, 4024, 4052, 1233, 4077, 4078, 4080, 4081, 4092, 4097, 4099, 4624, 4109, -3000, 4112, 2642, 4657, 1383, 3290, 4195, 2643, 4084, 4811, -2242, 4159, 1383, 4101, 1383, 4162, 4179, 4193, 4244, 4230, 4203, 4174, 5322, -3000, 4273, -3000, -3000, 4210, 1383, 5439, 2644, 2306, 1383, 1383, 1383, 4103, 4114, 4115, 4119, 1383, 5258, 4279, 1383, 4288, -3001, 1383, 5873, 3837, 4121, 2650, 4122, 1383, -3001, 1383, 4123, 4204, 1383, -3001, 2645, 4236, 4145, 1383, 1383, 1383, 1383, 4150, 4206, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 4151, 4158, 1236, 1383, 1383, 1383, 2642, 4173, 4208, 4231, 187, 2643, 4238, 1383, 4253, 4286, 4292, 4269, 1383, 926, 4237, 4290, 1383, 4299, 2373, 4313, 4318, 2065, 4320, 4307, 1383, -3001, 4321, 1383, 4239, 1383, 4331, 4245, 4325, 2646, 4327, 4339, 4340, 4350, 4334, 4351, 4352, 4356, 4358, 4362, 4363, 1383, 4364, 4133, 1383, 1383, 4367, 187, 5319, 1383, 1383, 4370, 2645, 4368, 1383, 4385, 1383, 4817, 4386, 4374, 4388, 4394, 4396, 4404, 4395, 863, 863, 863, 4412, 4421, 4435, 4437, 4277, 4439, 4441, 4443, 5253, 4445, 4449, 2646, 4450, 3291, 4456, 4457, 1645, 1383, 4252, 4266, 4252, 4252, 4454, 1383, 4252, 1079, 4458, 4840, 4459, 4476, 4477, 3491, 4277, 4461, 4478, 3491, 191, 3344, 1646, 4479, 4480, 4855, 2646, 4483, 4486, 4481, 4488, 4818, 4819, 4820, 4821, 4482, 4484, 4492, 4490, 4495, 4499, 2648, 4497, 2991, 2994, 4515, 4485, 4487, 4937, 4511, 4489, 4491, 1383, 4501, 4430, 4502, 4432, 1076, 4508, 3968, 1077, 4512, 4513, 4529, 4518, 5354, 4523, 3540, 4531, 1383, 4566, 1078, 4571, 1080, 1647, 4947, 4572, 4581, 4578, 4582, 4585, 5377, 2783, 1548, 4589, 792, 4599, 792, 4600, 792, 4602, -3001, 4609, 4618, 4612, 792, 1220, 1221, 4619, 4622, 4623, 4639, 4653, 4625, 4656, 4671, 5505, 4663, 4659, 4665, 4672, 4673, 4674, 4675, 4676, 4693, 4694, 5450, 4695, 1549, 4701, 4948, 2648, 4702, 4928, 2004, 2849, 2004, 5417, 5418, 2004, 5420, 4936, 4714, 4703, 4704, 6280, 6281, 4706, 4678, 6283, 4707, 4708, 4949, 4709, 4710, 2051, 2572, 4720, 4725, 4960, 4719, 4494, 5574, 4721, 4726, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 4722, 1648, 4729, 4734, 5410, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 4735, 4127, 4740, 1550, -2241, 4787, 4747, 4770, 4799, 5613, 4771, 4772, 4779, 4800, 4803, 4826, 4814, 4516, -3001, 4828, 4836, 4843, 4830, 4844, 4851, 4841, 5009, 4277, 4839, 4857, 2576, 2577, 2578, 2579, 2580, 2581, 3374, 4852, 4858, 4859, 1551, 4867, 4856, 4861, 4870, 1649, 4872, 4876, 4887, 2572, 1650, 4895, 4905, 4908, 4906, 1651, 4907, 4915, -3001, -3001, -3001, 2576, 2577, 2578, 2579, 2580, 2581, 5012, 4916, 4918, 4919, 2953, 4922, 4937, 2954, 4950, 3641, 649, 4961, 3771, 4941, 649, 5054, 4940, 4958, 3969, 4974, 5468, 4973, 4975, 1552, 4977, 4976, 4987, 4988, 4989, 5004, 5022, 4990, 4991, 4992, 5028, 5003, 5001, 5010, 5023, 1653, 792, 5031, 1271, 5047, 5048, 4127, 3649, 4947, 951, 4128, 4129, 4130, 5050, 5053, 5063, 5064, 5079, 5066, 5067, 5068, 5090, 5100, 951, 5105, 1383, 5111, 5119, 1554, 5125, 4795, 5126, 863, 5154, 5132, 5131, 5138, 5148, 5098, 5155, 5897, 5165, 5899, 5171, 5172, 5688, 5174, 5175, 1655, 2849, 3326, 4658, 5176, 3487, 5179, 5178, 3223, 3487, 5184, 5190, 5198, 1556, 5204, 5205, 863, 5214, 5222, 5221, 5223, 3491, 3926, 792, 1656, 5224, 5226, 5227, 3442, 3808, 5225, 5233, 649, 5228, 5234, 5239, 5244, 5250, 5147, 5256, 5259, 5265, 5260, -2243, 5282, 1658, 5261, 4951, 863, 5308, 4370, 5278, 5293, 5317, 5298, 5301, 3326, 5294, 35, 5312, 1383, 1383, 5320, 3970, 5321, 5589, 5331, 5334, 1645, 5336, 5338, 1383, 1559, 5342, 5362, 5374, 5589, 6022, 5375, 5361, 5378, 1560, 2004, 863, 5376, 4715, 5380, 5386, 5385, 2827, 1646, 5387, 5399, 5402, 5408, 5735, 1659, 5406, 5412, 5421, 863, 5422, 1562, 5413, 5429, 5430, 5431, 5908, 5440, 996, 5443, 1563, 5436, 5447, 3487, 5448, 1564, 5455, 5458, 5464, 5465, 5467, 6052, 5471, 5463, 5473, 5477, 5157, 5482, 5487, 5489, 5639, 5493, 5494, 5496, 5498, 5500, 3971, 4748, 5502, 5501, 1383, 1647, 5511, 3198, 5519, 5517, 5527, 2112, 5557, 5526, 2113, 5532, 5553, 5546, 2114, 2115, 2116, 1383, 5547, 5563, 5565, 2875, 4769, 5564, 5573, 5582, 5658, 6088, 6090, 5588, 4132, 5577, 1565, 5592, 2638, 1383, 3972, 5595, 5617, 5614, 5620, 5628, 5643, 5630, 2639, 5631, 5635, 5647, 5648, 5649, 5681, 2640, 5703, 5650, 5661, 5655, 5089, 5662, 5666, 5653, 5672, 5673, 5674, 1383, 5714, 5709, 1383, 5711, 5717, 5722, 5741, 5721, 5742, 5746, 1383, 1383, 5753, 2641, 5751, 5769, 5774, 5780, 1383, 1383, 5782, 5781, 5788, 1383, 5797, 5798, 5802, 5803, 1383, 1648, 5816, 1383, 1383, 5824, 5815, 5830, 3374, 5842, 1383, 5844, 5846, 5848, 863, 863, 863, 863, 5847, 5850, 5860, 5867, 5877, 5885, 4133, 5869, 5879, 5871, 5923, 649, 649, 5891, 650, 5928, 5938, 4252, 5925, 5932, 5946, 3491, 5936, 5951, 3479, 5964, 3491, 5965, 5966, 3491, 650, 5967, 3808, 5960, 5314, 5968, 5978, 1383, 5977, 998, 5979, 1649, 5985, 5980, 5989, 5987, 1650, 5995, 1383, 6006, 6020, 1651, 4298, 6019, 6005, 6010, 1383, 5231, 3540, 6021, 3326, 6045, 6048, 6026, 6036, 6046, 6049, 2953, 4211, 187, 6050, 1271, 6063, 802, 4127, 6081, 6067, 6086, 4128, 4129, 4130, 6093, 6096, 6099, 6101, 2642, 6107, 6103, 6217, 6110, 2643, 3326, 6111, 3487, 3487, 6127, 6128, 6129, 5272, 6130, 2849, 1383, 1653, 6137, 6144, 5839, 6138, 6145, 5994, 6143, 6150, 6151, 6152, 2644, 2306, 5370, 6157, 6162, 6166, 6167, 6169, 5337, 6173, 6181, 6183, 6189, 6202, 6209, 792, 6219, 5323, 5325, 6094, 792, 792, 6211, 6097, 6098, 6227, 6228, 6245, 2645, 6229, 6247, 6028, 6264, 6265, 6266, 6267, 6268, 1655, 6270, 6278, 3771, 6282, 6291, 6292, 6293, 6286, 6304, 6306, 2656, 6336, 6339, 3771, 6334, 6372, 6330, 6275, 6276, 2663, 6324, 2664, 6335, 1656, 6331, 2667, 6348, 6338, 6351, 6353, 1383, 6371, 2673, 2373, 6374, 6373, 6375, 1383, 6376, 6391, 6401, 5812, 4305, 5901, 1658, 6412, 6437, 6416, 2646, 6403, 6296, 2647, 6404, 6418, 6429, 5817, 6430, 6445, 6446, 6449, 951, 6451, 6455, 5688, 6457, 1468, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 951, 6462, 5840, 6460, 5896, 6468, 5776, 3008, 1683, 2104, 4228, 2630, 3782, 5910, 1575, 1682, 3699, 4380, 1142, 4964, 1659, 4957, 6212, 3871, 3823, 4528, 5700, 6080, 6305, 649, 5752, 1383, 4953, 5107, 4954, 5446, 649, 5734, 4360, 4323, 4018, 649, 6204, 5637, 649, 5310, 6301, 650, 792, 6102, 6100, 6226, 4366, 6316, 2849, 5475, 5129, 5158, 792, 5137, 6060, 4132, 5099, 2004, 3889, 3890, 3991, 4962, 4588, 2648, 4398, 3997, 5124, 3998, 5740, 5469, 1667, 4628, 3926, 5892, 5893, 5182, 5981, 4004, 6368, 6467, 4005, 5715, 4006, 4007, 6057, 951, 4009, 3948, 6447, 4534, 4012, 6231, 4013, 5166, 5660, 4015, 1220, 1221, 5887, 6069, 5663, 756, 809, 1072, 4679, 3487, 5110, 2024, 3326, 5199, 3075, 5863, 3487, 863, 5201, 6364, 3918, 3487, 3551, 5168, 3487, 3138, 3150, 4314, 863, 5777, 996, 4645, 5975, 3167, 1143, 4498, 1183, 3820, 4993, 4444, 6251, 6402, 2763, 792, 5185, 4133, 1413, 792, 792, 5186, 3848, 3496, 6354, 4881, 4277, 6081, 5326, 5859, 5862, 3134, 5657, 2651, 6054, 4054, 837, 838, 996, 5229, 5480, 5659, 4275, 2712, 4287, 2572, 3506, 6186, 3033, 6038, 4248, 2711, 4833, 1383, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 1383, 4849, 5594, 1383, 3355, 2600, 1383, 1383, 1383, 2716, 4241, 5829, 5828, 4882, 5702, 4242, 6389, 6172, 6284, 6027, 4243, 6415, 5811, 4781, 3415, 6039, 4207, 652, 6040, 3418, 4072, 1383, 1383, 3332, 1271, 1383, 4201, 4127, 3847, 4199, 5993, 4128, 4129, 4130, 1142, 6420, 4192, 187, 4108, 3430, 4730, 2660, 1464, 1383, 3494, 0, 6035, 1383, 6037, 0, 0, 5273, 0, 1383, 0, 0, 0, 3491, 0, 0, 0, 5314, 914, 0, 1383, 0, 5612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4928, 0, 0, 1383, 0, 0, 0, 0, 5452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6171, 0, 0, 5615, 0, 4928, 998, 951, 0, 951, 0, 0, 649, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 792, 0, 0, 3968, 0, 962, 998, 0, 6433, 0, 0, 0, 0, 0, 0, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 0, 0, 0, 1548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 962, 0, 0, 0, 0, 0, 0, 0, 3487, 0, 0, 0, 5098, 1549, 5896, 0, 0, 863, 652, 0, 0, 0, 863, 0, 0, 0, 0, 652, 971, 0, 0, 2849, 0, 0, 0, 652, 0, 971, 652, 0, 0, 863, 0, 0, 0, 5147, 5346, 0, 5754, 0, 4132, 971, 2102, 0, 0, 0, 0, 0, 0, 951, 863, 4928, 3326, 3326, 6410, 0, 3326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1550, 0, 71, 80, 83, 84, 175, 85, 86, 106, 0, 184, 124, 129, 159, 0, 178, 185, 0, 1383, 0, 0, 191, 5382, 6448, 2102, 0, 0, 4326, 0, 5739, 0, 649, 0, 0, 0, 1383, 1551, 0, 0, 1383, 0, 1383, -2764, 926, 5398, 0, 6410, 0, 3374, 0, 0, 649, 0, 6357, 6358, 1383, 0, 0, 180, 4133, 5765, 181, 0, 650, 4205, 0, 1383, 0, 0, 0, 5837, 6410, 183, 0, 186, 1142, 0, 1383, 0, 0, 0, 3969, 0, 649, 1383, 0, 1552, 0, 3273, 3274, 5767, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3311, 3312, 4387, 0, 4389, 0, 0, 0, 3487, 0, 0, 0, 5426, 0, 961, 0, 0, 0, 0, 0, 863, 4240, 0, 0, 4246, 1554, 0, 1383, 3487, 0, 0, 0, 0, 3358, 0, 0, 0, 0, -2764, 0, 0, 0, 0, 1383, 0, 2112, 0, 0, 2113, 1383, 1383, 0, 0, 0, 951, 951, 951, 951, 1556, 961, 3487, 0, 0, 0, 0, 0, 0, 996, 0, 0, 0, 0, 3479, 0, 0, 0, 925, 0, 0, 0, 3479, 0, 2639, 0, 0, 1383, 0, 0, 0, -3001, 0, -2764, 0, 650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, -2764, 0, 0, 0, 1558, 0, -2764, 0, 0, 0, 0, 2641, -2764, 1559, 863, 0, 649, 3491, -2764, 0, 0, -2764, 1560, 0, 0, -2764, 0, 0, 0, 5510, 2827, 0, 6356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 863, 1562, 4493, 0, 0, 0, 0, 0, 4500, 0, 1563, 0, 0, -2764, 0, 1564, 0, 0, 0, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 1383, 0, 0, 0, 0, 0, 0, 0, 3971, 0, 0, 6392, 1383, 4804, 0, 0, 0, 0, -2764, 0, 0, 1383, 1383, 1383, 0, 649, 0, 2004, 3487, 5954, 0, 0, 0, 3808, 0, 0, 1383, 0, 0, 0, 0, 0, 0, 0, 1565, 1383, 0, 1383, 3972, 1383, 5612, 0, 0, 0, 0, 0, 4928, 0, 0, -3001, 0, 0, 0, 1383, -3001, 0, 0, 0, 0, -2764, 0, 0, 2004, -2764, 998, 0, 0, 0, 0, -2764, 0, 6208, 1383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4494, 0, 0, 0, 0, 0, 0, 0, 3487, 0, 0, 0, 0, 0, 0, 0, -3001, 0, 0, 2004, 2004, 0, 0, 0, 0, 0, 0, 0, 971, 0, 0, 0, 0, 0, 6042, 0, 0, 0, 0, 0, -2764, 0, 0, 0, 0, 0, 0, 971, 0, 0, 951, 0, 0, 971, 0, 6258, 6259, 0, 0, 0, 0, 5937, 0, 0, 6123, 971, 0, 4662, 0, 4664, 0, 4666, 0, 0, 2646, 0, 0, 0, 0, 0, 0, 971, 0, 0, 0, 0, 652, 0, 0, 649, 0, 914, 0, 0, 0, 652, 971, 0, 0, 807, 0, 0, 652, 0, 971, 652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1383, 0, 914, 971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 971, -2764, 1383, 0, 0, 0, 5837, 0, 0, 0, 0, 0, 1383, 0, 0, 0, 0, 0, 0, 0, 0, 3540, 0, 0, 0, -2764, 0, -2764, -2764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 962, 0, -3001, 3487, 0, 0, 0, 0, 0, -2764, 0, 0, 0, 971, 0, 951, 0, 0, 0, 0, 0, 0, 2004, 0, 0, 0, 0, 0, 0, -2764, 649, 0, -2764, -2764, -2764, 652, 652, 0, 0, 0, 0, 971, 0, 0, 0, 0, 0, 0, 2849, 0, 0, 0, 0, 0, 0, 1383, 0, 0, 0, 187, 0, 0, 0, 0, 0, 4928, 971, 0, 652, 0, 0, 0, 0, 962, 962, 6261, 0, 0, 0, 1383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 914, 0, 0, 187, 0, 2112, 0, 191, 2113, 0, 2004, 2004, 6277, 0, 0, 0, -3001, 0, 1383, 1383, 3487, 0, 1383, 652, 0, 6285, 0, 0, 2576, 2577, 2578, 2579, 2580, 2581, 0, 6232, 971, 0, 0, 0, 0, 0, 2639, 0, 6253, 649, 0, 6254, 0, -3001, 0, 0, 6329, 951, 0, 0, 3459, 3461, 6255, 0, 6256, 0, 3469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2641, 0, 0, 0, 0, 0, 0, 2030, 6123, 951, 951, 0, 2030, 2030, 4928, 0, 0, 0, 0, 3515, 3515, 0, 0, 0, 0, 0, 0, 0, 6458, 6459, 0, 0, 650, 0, 0, 0, 0, 0, 0, 1383, 0, 0, 0, 0, 0, 191, 0, 6347, 0, 0, 0, 0, 3487, 0, 0, 1383, 0, 0, 0, 0, 0, 3540, 0, 0, 0, 0, 4298, 0, 0, 652, 652, 1821, 4807, 1383, 961, 0, 0, 0, 971, 0, 0, 792, 6253, 652, 0, 6254, 0, 0, 914, 652, 0, 0, 0, 652, 0, 652, 6255, 0, 6256, 914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6377, 6378, 650, 6382, 0, 0, 914, 0, 5837, -3001, 0, 0, 0, 1383, -3001, 0, 5976, 0, 0, 1578, 0, 0, 0, 951, 0, 1579, 4928, 0, 0, 0, 649, 0, 0, 2102, 0, 0, 0, 0, 961, 961, 1687, 0, 0, 0, 0, 0, 6347, 0, 0, 0, 652, 0, 652, 652, 0, 0, 0, 191, 0, 3651, 187, 0, 0, 0, 0, -3001, -2766, 0, 0, 0, 1581, 1383, 650, 0, 0, 0, 0, 0, 0, 6032, 0, 0, 3479, 0, 0, 0, 3479, 0, 650, 0, 0, 0, 0, 971, 6253, 0, 0, 6254, 0, 0, 0, 0, 0, 0, 0, 962, 962, 0, 6255, 6461, 6256, 6347, 3487, 0, 0, 0, 0, -136, 0, 0, 0, 652, 0, 2646, 0, 1688, 0, 1582, 6347, 0, 0, 0, 0, 0, 1583, 0, 0, 0, 1584, 1, 649, 0, 0, 0, 0, 0, 649, 0, 792, 0, 2, 0, 3, 4, 971, 0, 792, 0, 0, 792, 0, 0, 0, 914, 6333, 971, 1585, -2766, 0, 0, 5, 792, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 971, 0, 0, 0, 0, 971, 0, 0, 0, 0, 7, 0, 8, 9, 0, 0, 0, 652, 0, 10, 1586, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, -3001, -2766, 0, 3487, 0, 0, 0, 0, 0, 3487, 0, 0, 0, 0, -2766, 0, 14, 0, 0, 15, -2766, 0, 652, 0, 6380, 0, -2766, 0, 0, 0, 0, 0, -2766, 0, 16, -2766, 17, -2783, 0, -2766, 18, 0, 0, 0, 0, 0, 0, 19, 649, 0, 0, 652, 652, 652, 0, 652, 20, 0, 21, 0, 0, 0, 0, 1689, 0, 22, 0, 1588, 0, -2766, 0, 0, 5189, 0, 0, 5191, 652, 1589, 0, 0, 0, 0, 0, 23, 0, 0, 0, 1590, 0, 0, 0, 0, 0, 0, 6380, 0, 0, 0, 0, 1591, 24, 0, -2766, 971, 5206, 0, -3001, 0, 0, 0, 6444, 971, 971, 0, 0, 0, 0, 0, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 961, 961, 0, 3487, 0, 0, 0, 0, 652, 0, 0, -2783, 0, 0, 1690, 0, 0, 1593, 1594, 0, 0, 0, 0, 0, 0, 0, -2766, 25, 26, 0, -2766, 0, 0, 27, 0, 0, -2766, 1821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1691, 0, 0, 0, 0, 652, 0, 0, 0, 652, 652, 0, 0, 0, 0, -2783, 0, 0, 29, 0, 0, 0, 0, 792, 0, 652, 3479, 0, -2783, 0, 0, 914, 0, 0, -2783, 2112, 0, 0, 2113, 0, -2783, 0, 2114, 2115, 2116, 0, -2783, -2766, 0, -2783, 0, 0, 187, -2783, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 0, 30, 0, 0, 0, 0, 0, 0, 2639, 1596, 0, 0, 0, 0, 0, 2640, 31, 0, 0, -2783, 0, 0, 32, 33, 0, 34, 0, 0, 0, 0, 35, 0, 0, 0, 914, 0, 36, 0, 0, 37, 0, 2641, 807, 0, 0, 0, 38, 0, 0, 0, 0, 0, -2783, 39, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 5345, 0, 0, 0, -2766, 0, 0, 914, 43, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 0, 2113, 0, 0, 0, 0, 0, 44, 0, 0, -2766, 0, -2766, -2766, 0, 0, 0, -2783, 0, 0, 0, -2783, 914, 0, 0, 0, 0, -2783, 45, 0, 0, 0, 0, 0, -2766, 2639, 0, 0, 5383, 5384, 46, 0, -3001, 0, 6388, 0, 47, 0, 0, 0, 0, 48, 0, 0, -2766, 0, 0, -2766, -2766, -2766, 0, 0, 0, 0, 49, 0, 0, 0, 2641, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 0, 0, 0, 0, 0, -2783, 50, 971, 51, 52, 53, 54, 55, 0, 0, 0, 4226, 0, 792, 2644, 2306, 0, 652, 652, 652, 56, 0, 0, -136, 0, 0, 0, 0, 0, 4233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3479, 0, 2645, 0, 0, 3479, 5427, 5428, 3479, 0, 0, 0, 0, 4808, 0, 0, 0, 0, 0, 807, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 187, 0, 0, 0, 0, 0, 0, 0, 0, 4282, 4282, 0, 0, 0, 0, 2373, 0, 0, 0, -2783, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3001, 2646, 0, 0, 2647, -3001, 0, 0, 0, 0, 0, 0, 0, 0, -2783, 0, -2783, -2783, 971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 914, 0, 0, 0, 718, 0, 0, 0, -2783, 0, 0, 914, 0, 806, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 1821, 2113, 0, -3001, 914, -2783, 0, 0, -2783, -2783, -2783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 971, 5521, 0, 0, 5523, 5524, 0, 0, 971, 0, 0, 0, 2639, 0, 0, 0, 971, 0, 0, -3001, 0, 2648, 2112, 0, 5529, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 914, 0, 0, 2646, 0, 0, 0, 0, 0, 652, 2641, 0, 652, 0, 2638, 914, 0, 0, 914, 914, 0, 0, 652, 652, 2639, 971, 971, 0, 0, 0, 0, 2640, 0, 0, 0, 0, 0, 652, 0, 971, 652, 0, 0, 0, 0, 0, 0, 0, 0, 914, 914, 0, 971, 971, 0, 0, 0, 2641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5276, 0, 0, 0, 0, 0, 0, 0, 652, 0, 2572, 0, 652, 652, 0, 0, 0, -3001, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 0, 0, 0, 0, 4100, 0, 0, 0, 0, 0, 0, 187, 0, 0, -3001, 652, 0, 652, 0, -3001, 0, 1578, 652, 652, 0, 0, 0, 1579, 0, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 1687, 0, 0, 652, 0, 652, 0, 652, 652, 652, 652, 652, 652, 0, 0, 652, 0, 652, 652, 2642, 0, 652, 0, 0, 2643, 0, 0, 0, -3001, 0, 1581, 0, 0, 0, 0, 0, 0, 914, 652, 652, 652, 0, 0, 0, 0, 0, 0, 2644, 2306, -3001, 0, 0, 0, 0, 0, 0, 652, 0, 1821, 0, -136, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 0, 0, 0, 0, 2645, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1688, 2646, 1582, 0, 792, 0, 0, 0, 2, 1583, 3, 4, 0, 1584, 0, 1578, 0, 0, 0, 0, 0, 1579, 0, 0, 0, 0, 0, 4577, 5, 0, 0, 0, 0, 2373, 0, 0, 0, 0, 6, 0, 0, 1585, 0, 0, 0, 0, 0, 0, 2646, 0, 7, 2647, 8, 9, 3479, 0, 0, 0, 0, 10, 0, 11, 0, 0, 0, 0, 1581, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 1586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 15, -3001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, 0, 0, 0, 18, 652, 0, 0, 0, 0, 1582, 19, 0, 0, 0, 0, 0, 1583, 0, 0, 20, 1584, 21, 0, 0, 0, 0, 0, 0, 22, 0, 2648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1689, 0, 0, 23, 1588, 1585, 0, 0, 0, 0, 0, 0, 0, 5865, 1589, 652, 0, 0, 0, 0, 24, 0, 1578, 0, 1590, 0, 0, 792, 1579, 0, 0, 0, 0, 0, 0, 0, 1591, 0, 0, 0, 0, 1586, 0, 1580, 0, 0, -3001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 5902, 0, 0, 0, 652, 0, 1581, 25, 26, 0, 0, 3779, 0, 27, 1593, 1594, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 2572, 0, 28, 0, 0, 0, 0, 0, 187, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 3780, 29, 4116, 0, 0, 4117, 0, 0, 1689, 0, 0, 0, 1588, 0, 0, 0, 0, 1582, 0, 0, 0, 0, 1589, 0, 1583, 0, 0, 0, 1584, 0, 0, 0, 1590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1591, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 1585, 0, 0, 0, 1073, 0, 0, 31, 0, 0, 0, 5992, 0, 32, 33, 0, 34, 1596, 0, 0, 0, 35, 2102, 0, 0, 0, 0, 36, 0, 0, 37, 0, 2112, 1593, 1594, 2113, 1586, 38, 0, 2114, 2115, 2116, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 0, 1141, 718, 42, 0, 0, 2638, 0, 0, 0, 0, 0, 1595, 0, 43, 0, 2639, 1548, 0, 0, 0, 2112, 0, 2640, 2113, 0, 0, 0, 2114, 2115, 2116, 44, 0, 652, 652, 652, 652, 652, 652, 652, 652, 652, 0, 652, 0, 0, 0, 0, 2638, 2641, 0, 0, 45, 1549, 652, 0, 0, 652, 2639, 0, 0, 0, 0, 1587, 46, 2640, 0, 1588, 0, 0, 47, 0, 0, 0, 0, 48, 0, 1589, 0, 0, 0, 0, 0, 0, 0, 1596, 0, 1590, 49, 0, 0, 2641, 0, 0, 0, 0, 0, 1240, 652, 1591, 0, 0, 652, 0, 0, 652, 0, 652, 0, 0, 652, 3479, 50, 187, 652, 0, 1550, 1262, 0, 0, 0, 0, 0, 0, 0, 1386, 0, 0, 1395, 1141, 1399, 56, 0, 0, -136, 1821, 0, 652, 0, 0, 0, 1592, 0, 0, 1593, 1594, 0, 0, 0, 0, 0, 0, 792, 1551, 652, 0, 0, 0, 0, 0, 0, 0, 0, 652, 652, 0, 0, 2642, 0, 0, 0, 1578, 2643, 0, 0, 0, 1595, 1579, 0, 0, 792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 971, 0, 0, 0, 792, 2644, 2306, 914, 0, 0, 0, 914, 914, 1552, 0, 0, 792, 0, 971, 2642, 0, 0, 971, 0, 2643, 0, 971, 187, 0, 0, 0, 0, 1581, 2645, 0, 971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2644, 2306, 0, 971, 0, 0, 652, 0, 0, 0, 1554, 0, 1596, 0, 1548, 0, 0, 652, 0, 914, 652, 0, 652, 652, 0, 914, 0, 0, 2645, 2373, 0, 0, 0, 0, 0, 0, 0, 971, 0, 0, 0, 0, 1582, 1556, 2646, 1220, 1221, 2647, 0, 1583, 1549, 0, 0, 1584, 0, 0, 0, 971, 971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2373, 914, 0, 0, 0, 0, 0, 0, 0, 0, 1585, 0, 0, 0, 0, 2646, 0, 35, 2647, 2826, 0, 0, 1558, 1821, 971, 1141, 0, 1821, 0, 0, 0, 1559, 0, 0, 0, 0, 0, 0, 0, 0, 1560, 0, 1550, 0, 0, 0, 1586, 2112, 2827, 0, 2113, 971, 6299, 1821, 2114, 2115, 2116, 971, 0, 0, 0, 1562, 792, 0, 0, 0, 0, 0, 0, 2648, 1563, 971, 0, 0, 2638, 1564, 0, 0, 971, 1551, 0, 971, 0, 0, 2639, 0, 0, 971, 0, 0, 0, 2640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 971, 0, 0, 0, 2648, 0, 971, 0, 792, 0, 2641, 0, 0, 971, 0, 0, 0, 0, 0, 1689, 0, 0, 1552, 1588, 0, 1565, 0, 971, 0, 0, 0, 0, 0, 1589, 0, 0, 0, 0, 0, 0, 0, 971, 0, 1590, 0, 0, 1821, 0, 0, 0, 0, 0, 971, 0, 0, 1591, 0, 0, 0, 0, 0, 0, 1553, 187, 0, 0, 1554, 0, 2572, 0, 652, 652, 652, 0, 0, 0, 652, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 187, 0, 0, 0, 0, 4118, 0, 0, 0, 1717, 1555, 1556, 1593, 1594, 0, 652, 914, 0, 0, 0, 0, 2029, 2572, 0, 1821, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2642, 0, 0, 0, 1718, 2643, 0, 4169, 1141, 0, 0, 0, 1557, 0, 0, 2112, 35, 652, 2113, 0, 0, 1558, 2114, 2115, 2116, 0, 0, 0, 2644, 2306, 1559, 0, 0, 0, 0, 0, 0, 0, 0, 1560, 0, 0, 2638, 0, 0, 0, 0, 1561, 0, 914, 0, 0, 2639, 914, 0, 0, 2645, 0, 0, 2640, 1562, 0, 0, 2112, 0, 0, 2113, 0, 0, 1563, 2114, 2115, 2116, 6328, 1564, 0, 0, 1596, 0, 0, 1548, 0, 0, 0, 0, 2641, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 2107, 0, 2373, 2639, 0, 0, 0, 0, 0, 2110, 2640, 0, 0, 0, 0, 0, 0, 2646, 0, 1549, 2647, 0, 0, 0, 0, 2598, 0, 0, 0, 0, 0, 0, 0, 0, 1565, 0, 2641, 0, 0, 0, 0, 0, 971, 0, 1821, 792, 1141, 0, 0, 2617, 2618, 792, 0, 0, 1141, 1141, 792, 0, 0, 914, 0, 971, 0, 0, 0, 0, 0, 0, 971, 0, 0, 0, 652, 0, 914, 652, 0, 652, 652, 914, 1578, 0, 1550, 5396, 5397, 0, 1579, 652, 5400, 5401, 0, 911, 652, 2112, 0, 0, 2113, 187, 0, 0, 2114, 2115, 2116, 0, 0, 0, 2642, 0, 0, 0, 914, 2643, 0, 2648, 0, 0, 0, 0, 0, 1551, 2638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2639, 1581, 0, 0, 2644, 2306, 0, 2640, 0, 0, 0, 0, 652, 652, 652, 0, 0, 652, 0, 0, 0, 0, 0, 0, 2642, 652, 652, 652, 652, 2643, 0, 0, 2645, 2641, 0, 0, 1821, 0, 0, 1552, 0, 652, 1821, 0, 652, 0, 652, 0, 0, 0, 0, 0, 2644, 2306, 0, 0, 0, 0, 1582, 652, 652, 0, 0, 652, 0, 1583, 0, 0, 0, 1584, 0, 0, 0, 0, 0, 2373, 0, 0, 0, 1553, 2645, 0, 0, 1554, 652, 0, 652, 0, 652, 2572, 2646, 0, 0, 2647, 0, 0, 0, 1585, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 652, 0, 0, 0, 4110, 0, 0, 0, 1619, 1556, 0, 0, 0, 0, 0, 0, 2373, 0, 0, 0, 2112, 971, 0, 2113, 0, 0, 1586, 2114, 2115, 2116, 0, 2646, 0, 0, 2647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 2638, 0, 2643, 1620, 0, 0, 0, 35, 0, 0, 2639, 652, 1558, 0, 652, 0, 0, 2640, 0, 0, 0, 1559, 0, 0, 0, 2644, 2306, 2958, 652, 0, 1560, 0, 2648, 652, 0, 2966, 0, 0, 1621, 0, 0, 0, 0, 2641, 0, 0, 0, 0, 652, 0, 0, 1562, 0, 2645, 0, 0, 0, 0, 0, 1689, 1563, 0, 652, 1588, 0, 1564, 0, 0, 0, 0, 652, 0, 0, 1589, 0, 0, 0, 0, 0, 0, 2648, 0, 914, 1590, 0, 914, 0, 914, 0, 0, 0, 0, 914, 0, 0, 1591, 2373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 971, 971, 0, 0, 2646, 0, 652, 2647, 0, 0, 0, 0, 0, 0, 0, 1565, 0, 0, 0, 0, 0, 971, 0, 0, 971, 0, 0, 914, 0, 0, 2807, 2572, 0, 1593, 1594, 914, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 4530, 2642, 0, 0, 0, 0, 2643, 914, 0, 0, 0, 0, 2808, 652, 1578, 0, 0, 0, 0, 0, 1579, 0, 0, 0, 0, 0, 2572, 0, 0, 2644, 2306, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 792, 2648, 4716, 0, 0, 0, 1821, 1821, 1821, 0, 0, 2645, 0, 0, 0, 0, 0, 0, 0, 1581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 971, 0, 0, 0, 0, 0, 0, 0, 1596, 914, 0, 914, 0, 3096, 0, 0, 0, 3101, 0, 971, 0, 0, 0, 2373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2646, 0, 0, 971, 0, 0, 0, 1582, 0, 0, 0, 0, 0, 0, 1583, 0, 0, 0, 1584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2572, 0, 0, 0, 0, 0, 0, 0, 1585, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 4790, 0, 0, 2112, 0, 0, 2113, 0, 0, 914, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1586, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 0, 971, 0, 0, 2648, 0, 652, 0, 2639, 0, 0, 0, 652, 0, 0, 2640, 0, 0, 0, 0, 0, 914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 0, 2113, 0, 0, 2641, 2114, 2115, 2116, 0, 0, 0, 1821, 914, 0, 0, 0, 0, 971, 0, 971, 3285, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 971, 1587, 971, 2639, 0, 1588, 0, 0, 0, 0, 2640, 0, 0, 0, 0, 1589, 0, 0, 0, 0, 0, 0, 652, 0, 0, 1590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2641, 1591, 0, 0, 0, 2572, 0, 0, 0, 911, 0, 0, 914, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 971, 914, 911, 0, 792, 0, 0, 0, 0, 0, 2891, 0, 0, 1593, 1594, 0, 0, 0, 0, 0, 0, 2642, 0, 914, 0, 0, 2643, 2112, 0, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 971, 0, 0, 2892, 0, 0, 0, 2644, 2306, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 971, 0, 0, 2639, 971, 0, 0, 0, 0, 0, 2640, 0, 0, 0, 0, 0, 2645, 0, 913, 2112, 0, 0, 2113, 0, 2642, 971, 2114, 2115, 2116, 2643, 902, 0, 0, 0, 0, 0, 2641, 0, 0, 0, 0, 652, 0, 0, 914, 0, 2638, 0, 0, 652, 0, 652, 2644, 2306, 0, 0, 2639, 1596, 0, 2373, 0, 0, 0, 2640, 0, 652, 0, 0, 0, 652, 652, 652, 0, 0, 2646, 0, 652, 2647, 0, 652, 2645, 0, 652, 0, 911, 0, 0, 0, 652, 2641, 652, 0, 0, 652, 0, 0, 0, 914, 652, 652, 652, 652, 0, 0, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 0, 0, 0, 652, 652, 652, 0, 0, 914, 2373, 0, 0, 0, 652, 0, 0, 0, 0, 652, 0, 1821, 0, 652, 0, 2646, 0, 0, 2647, 0, 0, 652, 0, 0, 652, 0, 652, 0, 6078, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 0, 0, 652, 0, 0, 652, 652, 2648, 0, 0, 652, 652, 0, 0, 0, 652, 0, 652, 0, 2644, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2642, 0, 652, 2645, 0, 2643, 0, 0, 652, 0, 0, 0, 0, 0, 0, 0, 652, 0, 0, 0, 652, 0, 0, 0, 0, 0, 0, 2648, 2644, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 911, 0, 0, 0, 0, 0, 2373, 0, 0, 0, 0, 911, 0, 652, 0, 0, 2645, 0, 0, 0, 0, 2646, 0, 0, 2647, 0, 0, 911, 0, 2572, 652, 0, 0, 0, 0, 0, 914, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 4897, 0, 0, 0, 0, 0, 0, 0, 2373, 0, 0, 971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2646, 0, 0, 2647, 0, 0, 0, 0, 0, 0, 1578, 652, 0, 0, 0, 0, 1579, 0, 0, 2572, 0, 0, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 4921, 0, 2648, 2112, 0, 0, 2113, 0, 0, 1821, 2114, 2115, 2116, 0, 1821, 914, 1821, 0, 0, 0, 1581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2639, 0, 1821, 914, 0, 0, 0, 2640, 0, 0, 3437, 0, 0, 0, 0, 2648, 2112, 0, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 911, 0, 0, 0, 2641, 0, 0, 0, 1582, 0, 0, 0, 0, 0, 2638, 1583, 0, 0, 0, 1584, 971, 0, 0, 971, 2639, 0, 0, 0, 0, 0, 0, 2640, 0, 0, 0, 0, 0, 0, 0, 2572, 0, 0, 0, 0, 0, 0, 0, 1585, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2641, 0, 0, 0, 5127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1586, 0, 0, 0, 652, 0, 0, 0, 0, 2572, 0, 0, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 3030, 971, 971, 0, 0, 914, 0, 0, 0, 0, 2642, 0, 971, 0, 0, 2643, 0, 0, 1141, 652, 652, 0, 0, 0, 0, 0, 0, 0, 0, 971, 0, 0, 0, 0, 0, 0, 0, 0, 2644, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2616, 1689, 914, 0, 0, 1588, 0, 914, 652, 652, 0, 0, 0, 2642, 0, 1589, 2645, 0, 2643, 652, 0, 0, 0, 0, 1399, 1590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6408, 0, 1591, 0, 0, 0, 2644, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2373, 971, 0, 0, 1821, 0, 0, 0, 0, 0, 2645, 0, 0, 0, 0, 2646, 0, 0, 2647, 0, 3635, 0, 0, 1593, 1594, 0, 0, 0, 0, 0, 652, 0, 0, 0, 0, 6408, 0, 0, 0, 0, 913, 0, 911, 0, 0, 0, 0, 652, 0, 0, 969, 1399, 902, 2373, 0, 1595, 0, 1578, 0, 1005, 6408, 0, 0, 1579, 0, 652, 913, 0, 2646, 0, 0, 2647, 0, 1027, 0, 1399, 0, 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1578, 0, 652, 0, 0, 652, 1579, 0, 0, 0, 0, 0, 0, 652, 652, 0, 914, 1581, 911, 0, 2648, 652, 652, 0, 0, 0, 652, 0, 0, 0, 0, 652, 0, 0, 652, 652, 0, 1596, 0, 0, 0, 652, 0, 0, 0, 0, 0, 0, 3814, 0, 0, 1581, 3818, 0, 0, 0, 0, 0, 0, 911, 0, 0, 0, 652, 0, 0, 0, 0, 0, 0, 652, 0, 0, 2648, 1582, 652, 0, 0, 652, 652, 0, 1583, 0, 0, 0, 1584, 652, 0, 0, 3851, 0, 3851, 911, 3851, 3851, 0, 0, 652, 3851, 3851, 3851, 0, 3851, 3851, 3851, 652, 0, 0, 1582, 0, 0, 0, 0, 1585, 0, 1583, 0, 0, 913, 1584, 0, 0, 0, 0, 0, 0, 2572, 0, 0, 0, 902, 0, 914, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 971, 0, 1585, 5240, 1586, 652, 0, 0, 0, 0, 0, 3928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2572, 0, 3956, 0, 1586, 0, 914, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 5277, 971, 2112, 0, 0, 2113, 914, 0, 0, 2114, 2115, 2116, 0, 971, 0, 0, 0, 0, 0, 0, 0, 0, 719, 0, 0, 0, 0, 2794, 1689, 652, 0, 0, 1588, 0, 0, 0, 652, 0, 0, 2639, 0, 0, 1589, 0, 0, 0, 2640, 0, 971, 0, 0, 0, 1590, 0, 0, 0, 0, 0, 0, 0, 0, 1736, 1689, 0, 1591, 2795, 1588, 0, 0, 0, 0, 0, 2641, 0, 0, 0, 1589, 0, 722, 914, 913, 0, 0, 0, 0, 911, 1590, 0, 0, 0, 0, 913, 902, 0, 0, 723, 911, 0, 1591, 0, 0, 0, 0, 902, 0, 652, 3826, 913, 0, 1593, 1594, 0, 911, 1056, 0, 0, 0, 0, 0, 902, 0, 652, 0, 0, 0, 0, 1821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2796, 0, 0, 4344, 3827, 0, 1593, 1594, 971, 0, 0, 0, 0, 726, 0, 652, 0, 0, 0, 0, 0, 0, 727, 0, 0, 0, 0, 0, 0, 911, 0, 0, 0, 0, 0, 728, 0, 0, 4345, 0, 0, 2797, 0, 0, 911, 0, 0, 911, 911, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 914, 0, 914, 0, 0, 0, 0, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 1596, 911, 911, 0, -3001, -3001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 971, 1097, 0, 0, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 0, 0, 2645, 0, 1596, 0, 1097, 0, 0, 0, 0, 0, 0, 652, 0, 0, 0, 0, 0, 0, 913, 732, 0, 652, 0, 0, 652, 0, 0, 652, 652, 652, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2112, -3001, 1141, 2113, 0, 0, 0, 2114, 2115, 2116, 652, 652, 0, 0, 652, 0, 2646, 0, 0, 0, 0, 2798, 0, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 652, 0, 0, 0, 652, 2639, 0, 0, 0, 0, 652, 0, 2640, 0, 652, 0, 0, 0, 0, 0, 914, 652, 0, 0, 0, 213, 2799, 0, 0, 737, 0, 0, 0, 0, 652, 0, 0, 652, 2641, 911, 0, 0, 971, 0, 971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, 0, 0, 2800, 0, 0, 0, 0, 0, 652, 741, 0, 0, 0, 0, 0, 0, 742, 0, 0, 743, 0, 0, 2648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 914, 971, 0, 0, 0, 0, 744, 1578, 0, 0, 0, 652, 0, 1579, 1065, 0, 0, 0, 0, 0, 0, 746, 0, 0, 1066, 0, 0, 0, 0, 748, 0, 0, 0, 0, 0, 658, 1141, 2801, 0, 0, 0, 707, 658, 0, 2802, 0, 0, 759, 0, 658, 0, 1821, 0, 0, 0, 658, 652, 812, 1581, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 753, 0, 0, 0, 0, 874, 874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2644, 2306, 2572, 0, 0, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 1582, 2747, 652, 0, 0, 914, 2645, 1583, 4403, 0, 0, 1584, 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 652, 0, 0, 1585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2373, 0, 0, 0, 652, 0, 0, 0, 652, 0, 652, 0, 0, 0, 0, 2646, 0, 4453, 2647, 2747, 0, 0, 0, 0, 652, 0, 1586, 0, 0, 0, 0, 902, 652, 0, 0, 652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 652, 0, 0, 0, 0, 0, 0, 652, 0, 0, 0, 0, 0, 0, 913, 0, 0, 953, 0, 0, 0, 957, 0, 0, 0, 0, 902, 0, 0, 1000, 0, 0, 1002, 0, 0, 1007, 1008, 0, 1011, 0, 1014, 4496, 0, 1020, 0, 1022, 0, 913, 0, 0, 0, 0, 0, 0, 0, 652, 0, 0, 0, 902, 1689, 914, 0, 0, 1588, 2648, 914, 914, 0, 0, 0, 652, 0, 0, 1589, 0, 0, 652, 652, 971, 0, 0, 0, 2112, 1590, 0, 2113, 0, 0, 3851, 2114, 2115, 2116, 971, 0, 0, 1591, 0, 0, 0, 0, 4527, 4527, 0, 0, 0, 0, 0, 0, 0, 2638, 4543, 0, 652, 0, 0, 1141, 0, 1141, 0, 2639, 652, 0, 0, 1821, 0, 0, 2640, 0, 1736, 1736, 1736, 0, 0, 0, 0, 0, 0, 4415, 0, 0, 1593, 1594, 0, 0, 0, 0, 0, 0, 652, 0, 0, 0, 2641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4598, 0, 0, 0, 0, 0, 0, 2572, 0, 4416, 0, 0, 0, 0, 914, 914, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 5281, 0, 0, 0, 0, 0, 4634, 1141, 0, 652, 1821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 652, 0, 0, 0, 0, 0, 0, 0, 0, 652, 652, 652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 652, 1821, 0, 913, 914, 0, 0, 0, 1596, 652, 0, 652, 0, 652, 913, 902, 0, 0, 0, 0, 652, 0, 0, 0, 0, 0, 902, 652, 0, 0, 913, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 902, 0, 0, 0, 652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2644, 2306, 0, 0, 0, 0, 904, 1548, 0, 0, 1821, 0, 0, 971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 913, 0, 0, 0, 0, 2645, 0, 0, 0, 0, 0, 0, 902, 0, 0, 913, 0, 0, 913, 913, 1549, 0, 0, 0, 0, 0, 0, 902, 0, 0, 902, 902, 0, 0, 0, 0, 0, 0, 0, 0, 911, 0, 0, 652, 911, 911, 0, 0, 2373, 913, 913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 902, 902, 2646, 0, 0, 2647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4792, 1550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 652, 0, 0, 0, 0, 911, 0, 0, 0, 0, 0, 911, 0, 0, 0, 652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 652, 1551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 652, 0, 1736, 0, 0, 911, 0, 0, 0, 0, 0, 1050, 2648, 971, 0, 0, 1736, 0, 0, 1736, 0, 0, 1087, 1552, 0, 0, 1091, 0, 0, 0, 0, 0, 0, 1104, 1105, 0, 0, 1111, 0, 1115, 1116, 0, 0, 0, 0, 0, 913, 0, 0, 0, 0, 0, 0, 0, 1138, 652, 0, 0, 902, 0, 0, 0, 0, 1553, 0, 652, 0, 1554, 0, 905, 0, 0, 1151, 652, 652, 0, 0, 0, 0, 652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1179, 0, 1181, 0, 0, 0, 1636, 1556, 0, 0, 0, 0, 1197, 0, 0, 0, 0, 652, 652, 0, 0, 652, 0, 0, 2112, 2572, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 658, 0, 5551, 1637, 0, 0, 2638, 35, 0, 0, 0, 0, 1558, 971, 0, 0, 2639, 0, 0, 0, 0, 1559, 0, 2640, 0, 0, 0, 0, 0, 0, 1560, 4543, 0, 0, 0, 3006, 0, 652, 1638, 0, 0, 0, 0, 652, 0, 0, 0, 0, 0, 2641, 0, 1562, 0, 0, 0, 0, 0, 0, 0, 4999, 1563, 652, 0, 0, 0, 1564, 0, 0, 652, 0, 0, 0, 0, 0, 5014, 0, 0, 911, 5015, 0, 5016, 874, 0, 0, 652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1565, 0, 0, 0, 5056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 652, 0, 3851, 0, 0, 914, 0, 3851, 0, 0, 911, 652, 0, 0, 911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 652, 0, 1539, 2642, 0, 0, 0, 1821, 2643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2644, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3085, 652, 652, 0, 0, 0, 0, 0, 3102, 0, 0, 0, 0, 0, 0, 2645, 3006, 0, 652, 0, 0, 0, 1821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1720, 0, 0, 652, 652, 0, 5161, 0, 0, 4543, 0, 0, 0, 0, 0, 1821, 0, 911, 0, 0, 0, 0, 0, 0, 0, 1841, 2373, 0, 0, 3160, 0, 0, 911, 0, 0, 0, 0, 911, 0, 0, 1853, 2646, 1854, 0, 2647, 0, 0, 0, 0, 0, 0, 0, 1857, 0, 0, 0, 3006, 0, 0, 1867, 0, 0, 0, 0, 0, 0, 0, 0, 911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5210, 5210, 5210, 5210, 0, 5210, 5210, 5210, 5210, 5210, 0, 0, 0, 0, 0, 0, 0, 1919, 0, 1921, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 904, 0, 0, 0, 0, 2648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1736, 0, 0, 0, 0, 0, 904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 658, 0, 658, 0, 658, 0, 658, 0, 658, 658, 658, 0, 0, 0, 0, 658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2025, 0, 0, 0, 0, 5290, 0, 5292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 0, 2113, 0, 0, 2572, 2114, 2115, 2116, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 2638, 5562, 0, 0, 0, 0, 0, 0, 0, 0, 2639, 0, 0, 0, 0, 0, 0, 2640, 719, 0, 0, 0, 0, 3252, 0, 0, 0, 0, 3547, 0, 0, 0, 2747, 3553, 0, 0, 0, 904, 0, 0, 902, 0, 0, 2641, 902, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 911, 0, 0, 911, 0, 911, 0, 0, 0, 0, 911, 0, 0, 0, 722, 3253, 0, 907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 913, 0, 0, 0, 723, 0, 913, 0, 0, 0, 0, 0, 902, 0, 905, 0, 0, 0, 902, 0, 0, 0, 1056, 2112, 0, 911, 2113, 0, 0, 0, 2114, 2115, 2116, 911, 0, 0, 0, 0, 0, 0, 905, 0, 0, 0, 874, 0, 3254, 0, 0, 0, 2638, 0, 0, 913, 0, 0, 0, 0, 911, 726, 2639, 0, 0, 0, 0, 902, 0, 2640, 727, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 728, 0, 0, 5424, 5425, 0, 3255, 0, 0, 0, 0, 0, 2641, 0, 0, 0, 3851, 0, 3851, 3851, 3851, 2644, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 904, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 904, 0, 2112, 0, 0, 2113, 2645, 0, 0, 2114, 2115, 2116, 0, 911, 0, 911, 904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3256, 2638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2639, 2805, 5476, 0, 0, 0, 0, 2640, 0, 0, 2373, 732, 0, 0, 0, 0, 0, 0, 0, 0, 905, 0, 0, 0, 0, 2646, 0, 0, 2647, 0, 0, 0, 0, 2641, 0, 0, 0, 0, 0, 0, 0, 5504, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1736, 0, 0, 0, 911, 2903, 0, 0, 2644, 2306, 0, 0, 0, 0, 0, 0, 5210, 0, 0, 0, 0, 0, 0, 213, 3257, 0, 0, 737, 0, 0, 0, 0, 913, 0, 0, 0, 2645, 0, 0, 0, 908, 0, 0, 0, 902, 0, 0, 0, 911, 0, 0, 0, 0, 2648, 0, 1063, 0, 0, 3258, 0, 0, 0, 0, 0, 0, 741, 904, 0, 0, 0, 0, 0, 742, 0, 0, 743, 911, 0, 0, 2373, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 0, 0, 2646, 744, 0, 2647, 0, 0, 0, 0, 0, 1065, 0, 2747, 0, 0, 0, 2747, 746, 2644, 2306, 1066, 0, 905, 0, 902, 748, 0, 0, 902, 0, 0, 0, 0, 905, 0, 0, 0, 0, 0, 0, 3259, 0, 0, 0, 0, 0, 2645, 0, 0, 905, 0, 911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2572, 753, 0, 0, 0, 0, 0, 911, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 5572, 2373, 0, 0, 0, 0, 4543, 911, 0, 2648, 0, 0, 0, 0, 0, 0, 2646, 0, 0, 2647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3034, 902, 0, 0, 913, 0, 0, 0, 3542, 913, 3851, 0, 0, 0, 0, 0, 902, 0, 0, 5701, 0, 902, 0, 0, 0, 0, 3558, 0, 0, 0, 3561, 0, 0, 0, 3564, 3070, 0, 0, 0, 0, 913, 0, 0, 0, 0, 910, 0, 911, 0, 0, 0, 0, 902, 0, 0, 0, 0, 0, 3583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2648, 0, 0, 2572, 0, 0, 905, 0, 0, 0, 0, 3135, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 3625, 0, 0, 5634, 0, 0, 0, 0, 911, 3153, 0, 0, 0, 0, 904, 0, 0, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 911, 0, 3173, 0, 3174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3183, 0, 3184, 0, 0, 0, 3684, 0, 658, 0, 658, 0, 658, 0, 658, 0, 658, 0, 0, 0, 658, 0, 0, 0, 0, 0, 0, 0, 0, 904, 0, 0, 2572, 3713, 0, 0, 0, 0, 0, 3722, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 3732, 5665, 0, 0, 3243, 0, 0, 1097, 0, 0, 3745, 0, 0, 907, 0, 0, 3750, 904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3763, 0, 0, 907, 0, 0, 3766, 0, 0, 0, 0, 0, 0, 3774, 904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3789, 0, 0, 0, 0, 0, 0, 1141, 0, 0, 0, 5912, 0, 0, 3815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1097, 911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2747, 0, 0, 3553, 0, 3553, 0, 0, 0, 0, 2747, 0, 902, 0, 0, 902, 0, 902, 0, 0, 0, 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 905, 0, 0, 0, 0, 0, 0, 0, 0, 913, 0, 0, 0, 0, 0, 0, 0, 913, 0, 0, 0, 902, 0, 0, 0, 0, 0, 0, 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 907, 911, 2747, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 902, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 905, 0, 911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2639, 0, 0, 0, 0, 0, 0, 2640, 0, 0, 0, 0, 0, 904, 0, 0, 0, 0, 0, 905, 0, 0, 0, 0, 904, 0, 0, 0, 0, 0, 0, 0, 913, 2641, 913, 0, 0, 0, 0, 0, 904, 0, 0, 0, 902, 0, 902, 0, 0, 0, 0, 0, 905, 0, 0, 0, 0, 0, 1141, 0, 0, 0, 6084, 908, 6085, 0, 0, 0, 6091, 6092, 0, 0, 4033, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 4049, 0, 0, 904, 0, 0, 0, 4033, 0, 0, 912, 0, 0, 0, 0, 0, 0, 0, 904, 0, 0, 904, 904, 907, 0, 0, 0, 0, 0, 0, 0, 0, 911, 0, 907, 0, 0, 0, 0, 913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 907, 902, 904, 904, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 1736, 0, 0, 0, 0, 0, 1736, 0, 0, 0, 0, 911, 0, 0, 0, 913, 911, 0, 0, 0, 2644, 2306, 0, 0, 0, 0, 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3553, 0, 0, 0, 0, 2645, 0, 0, 0, 0, 0, 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 905, 0, 0, 0, 2373, 0, 0, 0, 0, 0, 0, 905, 0, 0, 0, 0, 0, 0, 0, 2646, 0, 0, 2647, 0, 913, 0, 0, 905, 0, 0, 0, 0, 0, 0, 0, 0, 902, 0, 0, 0, 0, 904, 0, 0, 0, 910, 3553, 0, 0, 0, 0, 0, 907, 0, 0, 0, 0, 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 913, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 902, 905, 0, 0, 0, 0, 0, 0, 911, 0, 0, 0, 0, 0, 0, 0, 905, 0, 0, 905, 905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2648, 0, 0, 0, 0, 1141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 905, 905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4328, 0, 0, 0, 0, 0, 0, 913, 911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, 902, 0, 0, 0, 0, 0, 2572, 3543, 3544, 0, 0, 0, 0, 913, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 902, 3559, 3560, 5667, 3562, 3563, 0, 0, 0, 3566, 3567, 0, 0, 0, 0, 0, 0, 911, 0, 0, 0, 0, 0, 0, 3578, 0, 0, 0, 3581, 0, 0, 0, 3584, 3585, 905, 0, 3588, 3589, 6409, 911, 0, 0, 0, 3594, 0, 2598, 0, 0, 0, 6413, 0, 0, 0, 0, 0, 3609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4413, 0, 3626, 0, 0, 0, 0, 3628, 0, 0, 907, 0, 0, 0, 0, 0, 0, 0, 6439, 0, 0, 0, 3634, 0, 0, 0, 3640, 0, 908, 0, 0, 0, 6409, 0, 0, 0, 0, 3650, 0, 0, 3654, 0, 3656, 3659, 3661, 0, 0, 911, 0, 3669, 3672, 0, 0, 0, 0, 0, 0, 6409, 0, 3685, 5290, 0, 0, 0, 0, 3695, 0, 0, 0, 3698, 0, 0, 910, 0, 0, 0, 0, 907, 0, 0, 0, 3708, 3709, 910, 2747, 0, 3714, 0, 0, 0, 0, 0, 3723, 3724, 0, 0, 902, 0, 0, 910, 0, 0, 0, 0, 0, 0, 3733, 0, 0, 3734, 0, 0, 0, 0, 0, 0, 3746, 3747, 907, 0, 0, 0, 3751, 0, 0, 0, 0, 0, 0, 0, 0, 4509, 0, 0, 3758, 0, 0, 3761, 0, 0, 0, 0, 3764, 0, 0, 0, 0, 0, 3767, 3768, 0, 907, 0, 0, 0, 0, 3776, 0, 0, 0, 3778, 0, 0, 0, 3785, 3786, 3787, 3788, 911, 3790, 0, 0, 0, 0, 0, 0, 0, 0, 3553, 0, 0, 0, 0, 3816, 3817, 0, 3819, 0, 0, 0, 902, 0, 0, 0, 0, 0, 0, 3829, 3830, 3831, 0, 0, 0, 0, 0, 0, 3553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 902, 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 3883, 0, 910, 0, 0, 0, 0, 0, 3907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 0, 0, 0, 0, 2112, 0, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 911, 0, 3006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 4681, 0, 3987, 0, 4685, 2639, 0, 0, 0, 0, 0, 0, 2640, 0, 0, 0, 907, 0, 0, 0, 913, 4001, 0, 4003, 0, 0, 0, 907, 0, 908, 0, 904, 902, 0, 0, 904, 904, 0, 2641, 0, 0, 0, 0, 907, 0, 0, 0, 0, 0, 0, 911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, 0, 3553, 0, 0, 908, 0, 2747, 0, 0, 0, 0, 0, 0, 902, 0, 0, 0, 0, 902, 0, 0, 0, 0, 0, 904, 0, 0, 0, 0, 0, 904, 907, 0, 0, 0, 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 907, 0, 0, 907, 907, 0, 4065, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 904, 0, 0, 907, 907, 0, 0, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 0, 0, 0, 0, 0, 911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2644, 2306, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 913, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 912, 2373, 0, 910, 0, 0, 0, 0, 0, 0, 905, 0, 0, 0, 905, 905, 2646, 0, 0, 2647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 907, 0, 0, 0, 0, 0, 0, 908, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 4910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 911, 0, 905, 908, 0, 911, 911, 0, 905, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 913, 0, 0, 0, 0, 0, 904, 0, 0, 0, 0, 0, 902, 0, 0, 0, 0, 0, 0, 2648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 905, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 0, 908, 908, 0, 0, 913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 912, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 913, 0, 0, 0, 904, 908, 908, 0, 904, 0, 0, 0, 902, 0, 0, 0, 0, 911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4329, 5036, 0, 0, 5039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4336, 0, 0, 0, 4336, 2572, 0, 0, 0, 4347, 4348, 4349, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 5706, 913, 0, 0, 4361, 0, 0, 0, 911, 0, 0, 0, 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4390, 4391, 4392, 4393, 910, 0, 0, 0, 0, 0, 0, 0, 904, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 904, 0, 0, 0, 910, 904, 0, 5121, 0, 0, 0, 4414, 0, 4418, 4419, 4420, 0, 0, 0, 0, 0, 0, 0, 908, 3006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 904, 0, 905, 0, 0, 0, 0, 1578, 0, 0, 0, 0, 0, 1579, 0, 0, 0, 0, 0, 0, 1645, 0, 910, 0, 0, 0, 0, 0, 0, 0, 5508, 0, 913, 0, 0, 0, 0, 910, 0, 0, 910, 910, 1646, 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4033, 0, 910, 910, 0, 0, 905, 0, 0, 0, 905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 1647, 0, 0, 4504, 0, 0, 0, 0, 0, 0, 0, 0, 4510, 0, 0, 0, 0, 0, 0, 0, 0, 1582, 0, 0, 0, 0, 0, 0, 1583, 0, 0, 0, 1584, 0, 0, 0, 0, 0, 4520, 4521, 0, 0, 0, 4522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1585, 0, 0, 912, 0, 4564, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 905, 0, 902, 0, 1648, 0, 0, 0, 1586, 0, 0, 0, 0, 0, 0, 905, 912, 0, 0, 0, 905, 0, 0, 0, 0, 0, 0, 0, 0, 4601, 0, 0, 0, 910, 4607, 0, 0, 0, 0, 0, 4613, 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, 905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3553, 1649, 0, 0, 0, 0, 1650, 0, 0, 4652, 0, 1651, 902, 904, 0, 0, 904, 0, 904, 0, 0, 0, 0, 904, 0, 0, 0, 1652, 0, 0, 0, 1588, 0, 0, 0, 0, 0, 0, 4667, 0, 4668, 1589, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 1590, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 1653, 1591, 0, 904, 0, 0, 0, 0, 0, 0, 0, 904, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2639, 907, 0, 0, 0, 907, 907, 2640, 0, 0, 0, 0, 904, 0, 0, 0, 0, 0, 0, 1654, 0, 0, 1593, 1594, 1655, 0, 0, 0, 0, 0, 0, 0, 5393, 2641, 3553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5403, 0, 902, 0, 1656, 0, 0, 0, 0, 0, 1657, 0, 0, 0, 0, 0, 907, 0, 0, 0, 0, 0, 907, 0, 0, 1658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 904, 0, 904, 0, 0, 912, 0, 0, 911, 0, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, 0, 907, 0, 0, 0, 0, 0, 0, 1659, 0, 0, 912, 0, 0, 0, 1596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 905, 0, 0, 905, 0, 905, 0, 0, 0, 0, 905, 0, 0, 0, 0, 0, 0, 912, 0, 2644, 2306, 0, 0, 0, 0, 913, 0, 0, 0, 904, 913, 913, 912, 0, 0, 912, 912, 902, 0, 0, 0, 0, 902, 902, 0, 0, 0, 2645, 0, 0, 0, 0, 905, 0, 0, 0, 0, 0, 0, 0, 905, 0, 0, 0, 0, 0, 912, 912, 0, 0, 0, 0, 0, 904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 905, 0, 0, 0, 0, 2373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 904, 4033, 0, 0, 2646, 0, 0, 2647, 4903, 0, 4904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 4911, 0, 908, 908, 0, 0, 0, 0, 0, 0, 0, 0, 4917, 0, 0, 0, 4920, 0, 5508, 913, 0, 0, 0, 0, 0, 0, 0, 4933, 0, 0, 0, 902, 0, 0, 0, 0, 0, 0, 0, 907, 905, 0, 905, 0, 0, 904, 4959, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 0, 0, 0, 0, 908, 4963, 0, 0, 904, 0, 0, 0, 0, 4967, 0, 0, 0, 0, 2648, 0, 0, 0, 0, 913, 0, 0, 0, 912, 0, 0, 904, 0, 0, 0, 0, 902, 0, 0, 5002, 0, 0, 0, 5006, 0, 0, 0, 0, 0, 0, 0, 4033, 908, 4033, 907, 0, 0, 0, 907, 5017, 5018, 5019, 5020, 0, 0, 0, 0, 0, 0, 5024, 5025, 5026, 5027, 0, 0, 0, 0, 0, 5029, 5030, 905, 0, 0, 0, 5037, 5038, 0, 5040, 5041, 5042, 5043, 5044, 5045, 5046, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5055, 0, 0, 0, 5058, 5059, 5060, 5061, 0, 0, 904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 905, 2572, 0, 0, 0, 0, 0, 4336, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 6061, 0, 5081, 0, 0, 905, 0, 0, 0, 0, 0, 0, 0, 0, 907, 0, 0, 0, 0, 904, 0, 910, 0, 0, 0, 910, 910, 0, 0, 907, 0, 0, 2112, 0, 907, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 907, 0, 0, 0, 2639, 0, 0, 0, 905, 0, 0, 2640, 0, 5162, 0, 910, 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 905, 0, 0, 0, 0, 0, 0, 2641, 0, 0, 0, 0, 0, 0, 0, 0, 4336, 0, 0, 0, 908, 2112, 905, 5187, 2113, 5188, 0, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 5203, 0, 0, 0, 0, 2639, 0, 0, 0, 0, 0, 0, 2640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2641, 0, 908, 0, 0, 0, 908, 0, 0, 2112, 0, 0, 2113, 905, 0, 0, 2114, 2115, 2116, 904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2642, 0, 2638, 0, 0, 2643, 0, 0, 0, 0, 0, 0, 2639, 0, 0, 0, 0, 0, 0, 2640, 0, 0, 0, 0, 0, 0, 0, 0, 2644, 2306, 0, 0, 905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2645, 905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 0, 0, 904, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 908, 0, 0, 0, 0, 908, 0, 0, 0, 2373, 0, 907, 0, 0, 907, 0, 907, 904, 0, 0, 0, 907, 2644, 2306, 2646, 0, 0, 2647, 0, 0, 0, 0, 0, 910, 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2645, 5347, 5348, 5349, 0, 0, 0, 5350, 5351, 5352, 5353, 0, 0, 907, 5355, 0, 0, 0, 0, 0, 0, 907, 0, 2642, 0, 0, 0, 913, 2643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 902, 0, 0, 0, 2373, 0, 0, 907, 0, 0, 0, 0, 2644, 2306, 0, 0, 0, 910, 0, 2646, 0, 910, 2647, 0, 0, 0, 5388, 5389, 5390, 5391, 5392, 2648, 5394, 5395, 0, 0, 0, 0, 0, 905, 2645, 0, 0, 0, 5404, 5405, 0, 0, 0, 0, 0, 0, 1736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 904, 0, 0, 0, 0, 0, 0, 0, 5411, 0, 0, 0, 2373, 0, 0, 907, 0, 907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2646, 0, 0, 2647, 0, 0, 0, 0, 912, 0, 0, 0, 912, 912, 0, 0, 0, 2648, 0, 0, 904, 0, 0, 0, 0, 904, 910, 0, 0, 0, 0, 0, 0, 0, 0, 905, 0, 0, 0, 2572, 0, 910, 0, 0, 0, 0, 910, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 6072, 0, 905, 0, 0, 0, 912, 0, 0, 0, 0, 0, 912, 0, 0, 0, 910, 0, 0, 0, 0, 0, 5474, 0, 0, 907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2648, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 0, 908, 0, 908, 0, 0, 0, 0, 908, 0, 0, 0, 0, 912, 4033, 0, 2572, 0, 0, 0, 0, 0, 0, 907, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 6095, 0, 0, 5525, 0, 0, 0, 0, 0, 0, 0, 0, 908, 907, 0, 0, 0, 0, 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5531, 0, 0, 0, 904, 0, 0, 0, 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2572, 0, 0, 0, 905, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 6315, 0, 907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 907, 0, 0, 0, 972, 905, 0, 0, 0, 0, 905, 0, 0, 972, 0, 0, 0, 0, 0, 0, 0, 908, 907, 908, 0, 0, 0, 972, 0, 0, 0, 658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 0, 2113, 0, 904, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 0, 912, 0, 2639, 910, 0, 0, 910, 0, 910, 2640, 0, 0, 0, 910, 0, 5654, 0, 0, 0, 0, 0, 0, 907, 904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5664, 2641, 0, 908, 0, 0, 5670, 5671, 0, 0, 0, 904, 0, 0, 0, 0, 5682, 0, 0, 0, 0, 910, 0, 5684, 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, 907, 0, 912, 0, 0, 0, 908, 0, 0, 0, 0, 0, 905, 910, 0, 0, 0, 5736, 5737, 0, 0, 0, 0, 0, 0, 907, 0, 0, 0, 0, 5745, 0, 5747, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 904, 0, 0, 0, 5761, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4336, 0, 0, 0, 0, 0, 2642, 0, 5795, 0, 0, 2643, 0, 0, 0, 0, 0, 0, 0, 0, 910, 0, 910, 0, 0, 0, 0, 0, 0, 0, 908, 0, 0, 912, 2644, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 908, 912, 0, 0, 905, 0, 0, 0, 0, 0, 2645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, 0, 0, 0, 904, 0, 0, 0, 0, 0, 5851, 0, 0, 0, 0, 0, 0, 2373, 0, 0, 0, 905, 0, 0, 5866, 0, 907, 0, 0, 0, 910, 0, 2646, 0, 0, 2647, 0, 0, 0, 0, 0, 0, 0, 905, 0, 0, 0, 0, 5883, 0, 0, 963, 973, 0, 0, 0, 0, 0, 0, 963, 0, 973, 963, 0, 0, 0, 0, 0, 908, 0, 0, 0, 0, 0, 910, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1578, 0, 0, 0, 0, 0, 1579, 0, 910, 0, 0, 0, 0, 1645, 0, 0, 0, 0, 0, 0, 0, 5943, 905, 0, 0, 0, 907, 908, 0, 0, 0, 0, 0, 976, 2648, 1646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1010, 0, 0, 972, 0, 904, 1581, 908, 0, 907, 0, 1029, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 0, 0, 0, 972, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 1647, 0, 0, 0, 4336, 0, 0, 0, 0, 0, 0, 910, 0, 0, 972, 0, 0, 0, 0, 0, 0, 1582, 0, 0, 0, 0, 0, 0, 1583, 972, 0, 0, 1584, 910, 904, 0, 0, 972, 6023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 2572, 0, 0, 905, 0, 0, 0, 1585, 972, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 912, 0, 0, 912, 6332, 912, 0, 0, 6051, 0, 912, 950, 952, 0, 0, 955, 0, 0, 0, 0, 0, 1648, 0, 0, 0, 1586, 0, 0, 0, 0, 0, 0, 6073, 0, 0, 1013, 0, 0, 0, 907, 0, 0, 1023, 972, 910, 0, 0, 0, 0, 0, 0, 0, 912, 0, 0, 908, 0, 0, 0, 0, 912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 0, 0, 0, 0, 0, 1649, 0, 0, 0, 904, 1650, 912, 907, 0, 0, 1651, 0, 907, 6113, 0, 0, 0, 972, 910, 0, 0, 0, 0, 0, 0, 0, 1652, 0, 0, 0, 1588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1589, 0, 0, 910, 0, 0, 905, 0, 0, 0, 1590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1653, 1591, 0, 0, 0, 2112, 0, 0, 2113, 908, 0, 0, 2114, 2115, 2116, 0, 0, 0, 972, 0, 0, 0, 0, 0, 912, 0, 912, 0, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 908, 0, 0, 0, 0, 2639, 3752, 0, 0, 1593, 1594, 1655, 2640, 0, 0, 0, 0, 0, 0, 905, 0, 0, 0, 0, 0, 0, 0, 6207, 0, 0, 0, 0, 0, 0, 0, 1656, 0, 0, 2641, 0, 0, 3753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1658, 904, 0, 0, 6220, 0, 904, 904, 0, 0, 0, 0, 0, 0, 0, 6230, 0, 907, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, 0, 1822, 0, 0, 0, 0, 0, 973, 972, 0, 0, 0, 0, 973, 0, 0, 910, 1659, 0, 0, 0, 0, 0, 0, 1596, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, 973, 0, 0, 0, 0, 0, 0, 0, 905, 0, 0, 0, 908, 0, 963, 973, 0, 0, 0, 0, 0, 963, 1049, 973, 963, 2642, 912, 0, 1081, 0, 2643, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 904, 0, 0, 973, 0, 0, 0, 0, 0, 2644, 2306, 0, 0, 0, 907, 908, 0, 0, 6309, 0, 908, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 912, 0, 0, 910, 0, 0, 973, 0, 0, 0, 0, 0, 0, 904, 0, 0, 0, 907, 0, 0, 0, 0, 912, 0, 0, 0, 0, 0, 0, 0, 2373, 0, 0, 0, 973, 0, 0, 0, 0, 907, 0, 0, 0, 0, 912, 2646, 0, 0, 2647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 973, 0, 0, 0, 0, 0, 905, 0, 0, 0, 972, 905, 905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1083, 0, 1086, 0, 972, 1088, 0, 0, 0, 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1114, 0, 0, 0, 1390, 0, 1118, 0, 0, 0, 0, 907, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 1415, 0, 912, 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2648, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 2112, 0, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6450, 0, 0, 0, 0, 912, 2638, 0, 0, 905, 3498, 0, 0, 0, 0, 0, 2639, 0, 0, 910, 0, 0, 1473, 2640, 910, 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2641, 0, 0, 972, 0, 0, 0, 0, 1823, 0, 907, 972, 972, 0, 0, 973, 0, 0, 0, 0, 1609, 0, 908, 905, 2572, 0, 963, 0, 0, 0, 963, 0, 963, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 6390, 0, 0, 0, 0, 0, 3499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 0, 2112, 0, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2639, 0, 0, 2642, 0, 0, 0, 2640, 2643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, 1872, 0, 0, 0, 973, 0, 0, 912, 0, 0, 0, 2644, 2306, 2641, 0, 907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1906, 1909, 1910, 0, 0, 0, 908, 1610, 1611, 0, 2645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 2373, 0, 0, 0, 907, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 2646, 973, 0, 2647, 912, 0, 0, 0, 0, 4147, 1840, 0, 0, 0, 0, 4148, 0, 0, 910, 0, 0, 0, 0, 0, 0, 1852, 0, 0, 0, 0, 0, 0, 912, 0, 2642, 0, 0, 0, 0, 2643, 0, 1390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1874, 1875, 0, 908, 0, 0, 2644, 2306, 0, 0, 0, 0, 904, 1390, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1912, 972, 0, 0, 0, 0, 0, 0, 2645, 0, 0, 910, 0, 0, 2648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1950, 1952, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2373, 0, 0, 973, 0, 0, 0, 0, 0, 0, 0, 973, 973, 0, 0, 2646, 0, 0, 2647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3500, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1823, 972, 908, 0, 0, 2572, 0, 0, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 912, 0, 2632, 0, 0, 912, 0, 0, 0, 0, 0, 1822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 0, 907, 0, 0, 0, 972, 907, 907, 0, 0, 0, 908, 0, 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 905, 0, 0, 2723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 972, 0, 0, 0, 0, 0, 2572, 0, 0, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 907, 0, 0, 0, 0, 0, 0, 0, 912, 2837, 0, 0, 908, 0, 0, 0, 0, 0, 2866, 0, 0, 2112, 0, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 910, 2904, 0, 0, 0, 0, 0, 2916, 2916, 2639, 0, 2916, 0, 0, 907, 0, 2640, 0, 0, 0, 0, 973, 0, 0, 2934, 0, 0, 2937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, 0, 0, 0, 912, 0, 0, 1822, 0, 0, 0, 0, 0, 0, 2990, 0, 0, 0, 0, 0, 0, 0, 2825, 0, 0, 0, 0, 0, 3010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 0, 0, 2870, 908, 908, 0, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 912, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 0, 0, 1823, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2639, 0, 0, 2644, 2306, 0, 910, 2640, 0, 973, 0, 0, 2960, 0, 0, 0, 0, 973, 0, 0, 0, 1365, 1365, 0, 3032, 973, 0, 0, 0, 0, 0, 2645, 0, 2641, 0, 3035, 0, 0, 912, 0, 0, 0, 2986, 2987, 2988, 2989, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 963, 963, 0, 973, 973, 0, 0, 0, 2373, 0, 0, 3079, 2916, 0, 0, 963, 0, 973, 963, 0, 0, 0, 0, 2646, 0, 0, 2647, 0, 0, 0, 973, 973, 0, 0, 0, 1365, 3114, 0, 0, 0, 0, 0, 0, 3127, 908, 0, 0, 0, 0, 0, 0, 0, 0, 4782, 0, 0, 0, 0, 0, 6160, 0, 0, 0, 0, 0, 0, 0, 0, 963, 0, 0, 0, 963, 963, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 910, 0, 912, 0, 0, 910, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2644, 2306, 0, 3188, 0, 0, 2648, 0, 0, 0, 3043, 3044, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4783, 3061, 0, 2645, 0, 0, 0, 0, 0, 0, 0, 1390, 1390, 0, 0, 0, 0, 0, 1733, 1737, 0, 0, 0, 0, 0, 0, 0, 0, 3242, 0, 0, 3244, 0, 0, 0, 3104, 3105, 3106, 3107, 0, 0, 0, 0, 0, 0, 0, 2373, 0, 0, 0, 0, 0, 0, 0, 1823, 0, 0, 0, 0, 0, 0, 2646, 0, 0, 2647, 0, 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2572, 0, 6161, 0, 0, 0, 0, 0, 912, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3181, 0, 0, 0, 0, 0, 3185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, 907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2648, 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 0, 4074, 0, 0, 0, 0, 0, 0, 2639, 0, 0, 0, 0, 0, 0, 2640, 0, 0, 0, 0, 0, 0, 0, 0, 1822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2054, 0, 0, 0, 0, 0, 2572, 0, 0, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 972, 912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2080, 0, 0, 0, 972, 0, 0, 0, 972, 0, 0, 0, 972, 3371, 0, 2112, 0, 0, 2113, 0, 0, 972, 2114, 2115, 2116, 0, 0, 0, 0, 2099, 2100, 2101, 0, 2103, 0, 0, 972, 0, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2639, 0, 2590, 0, 0, 0, 0, 2640, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 972, 2643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2641, 0, 0, 0, 0, 972, 972, 0, 0, 2644, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 0, 0, 0, 2645, 0, 0, 0, 0, 1822, 972, 0, 0, 1822, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, 912, 912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 1822, 0, 2690, 0, 972, 0, 2702, 2707, 2373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 0, 0, 2646, 0, 972, 2647, 0, 972, 0, 0, 0, 0, 0, 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 972, 0, 0, 0, 0, 0, 972, 0, 0, 0, 0, 0, 0, 972, 0, 0, 0, 0, 0, 0, 2644, 2306, 0, 0, 0, 0, 0, 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 0, 912, 1822, 0, 2645, 0, 0, 0, 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3429, 0, 0, 0, 0, 0, 0, 0, 1823, 0, 0, 3434, 0, 0, 2373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2646, 0, 912, 2647, 0, 0, 1822, 0, 0, 0, 0, 0, 0, 0, 1473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 973, 0, 0, 0, 973, 1473, 1473, 0, 0, 2572, 0, 0, 0, 973, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 973, 0, 0, 0, 0, 0, 0, 1733, 1733, 1733, 0, 1390, 2648, 0, 0, 0, 0, 963, 0, 963, 963, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 973, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 973, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2639, 0, 0, 0, 0, 0, 0, 2640, 972, 0, 1822, 0, 3371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1823, 973, 0, 0, 1823, 972, 0, 0, 0, 0, 0, 2641, 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4084, 2572, 973, 0, 1823, 0, 0, 0, 973, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 973, 3653, 0, 973, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 3675, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 973, 0, 0, 3703, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1822, 973, 0, 0, 0, 0, 1822, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 2642, 1823, 0, 0, 0, 2643, 0, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3608, 0, 0, 0, 0, 2644, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3783, 3784, 0, 0, 0, 0, 2645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1823, 0, 0, 0, 0, 0, 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2646, 0, 3270, 2647, 0, 0, 0, 0, 0, 0, 0, 3288, 3288, 3288, 3288, 3298, 3304, 3288, 3307, 3288, 3288, 0, 0, 4120, 0, 3314, 0, 3315, 0, 3317, 0, 0, 3331, 3334, 3339, 0, 0, 0, 3909, 0, 3348, 0, 0, 3353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3757, 0, 0, 3760, 0, 0, 0, 3361, 3362, 3363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 972, 912, 0, 2648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 1823, 0, 0, 972, 0, 0, 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 963, 0, 963, 963, 3855, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3868, 0, 0, 0, 0, 0, 0, 0, 3877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1822, 1822, 1822, 0, 0, 2572, 0, 0, 3921, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 972, 0, 0, 3372, 3945, 0, 0, 0, 0, 0, 1823, 0, 0, 0, 0, 0, 1823, 0, 0, 972, 0, 2112, 0, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 0, 0, 0, 4000, 2638, 4002, 0, 4152, 0, 0, 0, 0, 0, 3391, 2639, 0, 0, 0, 0, 0, 0, 2640, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 0, 2113, 0, 2583, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 0, 0, 2641, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 973, 0, 0, 0, 0, 0, 0, 0, 2639, 0, 0, 3393, 0, 0, 0, 2640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 0, 2583, 0, 4057, 0, 0, 0, 0, 0, 2641, 4064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1822, 0, 0, 0, 0, 1473, 972, 0, 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 972, 2113, 972, 0, 0, 2114, 2115, 2116, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 0, 4164, 0, 0, 0, 0, 0, 0, 2639, 973, 973, 2644, 2306, 0, 0, 2640, 4157, 2112, 0, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 973, 0, 0, 973, 0, 2642, 0, 0, 0, 2645, 2643, 2641, 972, 0, 2638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2639, 0, 0, 0, 0, 0, 0, 2640, 0, 2644, 2306, 0, 0, 0, 0, 0, 0, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 0, 3409, 2373, 0, 972, 0, 0, 2641, 0, 0, 0, 2645, 1365, 0, 0, 1733, 0, 2646, 0, 0, 2647, 0, 0, 972, 0, 0, 0, 972, 0, 0, 0, 0, 0, 0, 1823, 1823, 1823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 0, 0, 0, 2373, 0, 3364, 0, 0, 973, 3372, 0, 0, 3391, 0, 3393, 0, 0, 3446, 2646, 0, 0, 2647, 0, 0, 0, 0, 0, 973, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 2644, 2306, 0, 0, 0, 0, 2648, 0, 0, 0, 0, 0, 0, 0, 2100, 2101, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 0, 2645, 0, 0, 0, 0, 2583, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 4436, 0, 0, 2644, 2306, 0, 0, 1822, 0, 0, 2916, 0, 0, 0, 0, 2648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2373, 4332, 4333, 2645, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 2646, 0, 0, 2647, 0, 0, 0, 0, 3586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2572, 0, 0, 0, 0, 2373, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 1823, 0, 2646, 0, 0, 2647, 973, 0, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2572, 0, 0, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 4568, 4569, 4570, 0, 973, 0, 0, 0, 0, 972, 0, 2638, 2648, 0, 4789, 0, 0, 4579, 0, 0, 0, 2639, 2112, 0, 0, 2113, 0, 0, 2640, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 4712, 2638, 4604, 4606, 0, 0, 2641, 4611, 0, 0, 0, 2639, 0, 0, 0, 0, 0, 973, 2640, 0, 0, 973, 0, 1822, 2572, 0, 0, 0, 1822, 0, 1822, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 973, 0, 2641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1822, 0, 0, 0, 0, 4517, 0, 0, 0, 0, 0, 0, 0, 0, 2572, 0, 3841, 3842, 1733, 0, 0, 0, 3846, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 3875, 972, 0, 0, 0, 0, 0, 0, 1390, 0, 0, 2583, 0, 0, 0, 3327, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 0, 0, 2583, 2583, 2583, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1823, 2644, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 0, 2113, 0, 2645, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 2644, 2306, 0, 0, 0, 0, 972, 972, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 972, 0, 0, 0, 0, 2639, 0, 0, 0, 0, 0, 2645, 2640, 0, 4670, 0, 2373, 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2646, 0, 0, 2647, 0, 0, 0, 2641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2646, 0, 0, 2647, 4822, 4823, 4824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5231, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 1822, 0, 0, 0, 0, 0, 4070, 0, 0, 0, 0, 4076, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 2112, 0, 0, 2113, 2648, 0, 0, 2114, 2115, 2116, 0, 0, 0, 0, 5241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 2639, 2643, 0, 0, 2103, 2648, 0, 2640, 0, 0, 0, 0, 0, 0, 0, 3339, 0, 3339, 3339, 0, 0, 1823, 0, 0, 2644, 2306, 1823, 0, 1823, 0, 0, 4167, 0, 2641, 4170, 0, 4172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2645, 0, 1823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2572, 4197, 0, 4200, 0, 4202, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 2373, 0, 0, 0, 0, 0, 973, 0, 0, 973, 0, 0, 0, 0, 0, 2646, 2572, 0, 2647, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 5247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4272, 972, 0, 0, 0, 2690, 0, 2644, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2707, 0, 973, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 2648, 2645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 0, 2113, 0, 973, 0, 2114, 2115, 2116, 0, 0, 0, 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 2638, 0, 0, 0, 0, 5091, 2373, 0, 0, 0, 2639, 0, 0, 4322, 0, 2583, 0, 2640, 0, 0, 0, 2646, 0, 0, 2647, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 0, 5123, 0, 0, 0, 0, 0, 2641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 1823, 0, 0, 0, 0, 0, 2572, 3127, 0, 0, 0, 4357, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5181, 0, 0, 0, 0, 0, 0, 1822, 0, 0, 0, 2583, 0, 2648, 0, 0, 0, 3188, 0, 0, 0, 0, 0, 2583, 5078, 0, 972, 0, 2583, 0, 0, 0, 5248, 0, 0, 0, 0, 0, 5080, 2112, 0, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2639, 0, 0, 0, 0, 0, 0, 2640, 0, 2644, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2641, 0, 0, 972, 2645, 0, 0, 0, 0, 0, 2572, 0, 0, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2373, 0, 0, 0, 0, 0, 0, 0, 5284, 5285, 5286, 5287, 0, 1733, 0, 2646, 0, 0, 2647, 1733, 0, 0, 0, 0, 0, 5249, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 972, 0, 973, 0, 0, 0, 0, 0, 0, 4591, 2644, 2306, 0, 0, 973, 0, 0, 0, 0, 0, 0, 0, 2648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2112, 0, 0, 2113, 0, 0, 2645, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 972, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2639, 0, 0, 0, 0, 0, 0, 2640, 0, 0, 0, 0, 2373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2646, 0, 1822, 2647, 0, 0, 2641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1823, 2572, 0, 0, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4713, 0, 0, 0, 0, 0, 0, 0, 4717, 0, 4718, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3288, 0, 0, 0, 4731, 3288, 3288, 0, 0, 0, 2648, 3304, 0, 0, 4739, 0, 0, 4741, 0, 0, 0, 0, 0, 4743, 0, 4744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 0, 0, 0, 0, 0, 973, 0, 4766, 4767, 4768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2644, 2306, 0, 0, 0, 3348, 0, 0, 0, 0, 0, 0, 0, 4793, 0, 0, 4796, 0, 4798, 0, 5503, 0, 0, 0, 0, 0, 0, 0, 2645, 0, 0, 5513, 5419, 0, 4802, 0, 0, 0, 0, 0, 0, 0, 4809, 4810, 0, 0, 0, 5423, 0, 4815, 2572, 0, 0, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 2373, 0, 0, 0, 0, 0, 0, 3288, 0, 0, 0, 0, 0, 0, 0, 2646, 0, 972, 2647, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 2583, 973, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 4869, 0, 0, 2583, 1822, 0, 2583, 0, 0, 5481, 0, 0, 0, 2583, 2583, 0, 2583, 4883, 0, 0, 0, 3327, 3327, 0, 4143, 0, 3327, 0, 0, 0, 2583, 0, 0, 2583, 0, 0, 973, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 963, 2583, 0, 0, 0, 0, 2583, 2648, 0, 0, 0, 0, 0, 0, 2583, 2583, 2583, 2583, 0, 0, 0, 0, 3327, 3327, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1822, 0, 0, 1823, 0, 0, 0, 2583, 963, 2583, 0, 0, 0, 0, 0, 0, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2112, 0, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 1822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5621, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 2639, 0, 0, 0, 0, 0, 0, 2640, 0, 0, 0, 0, 2112, 2572, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 2641, 0, 0, 5720, 0, 0, 2638, 0, 1390, 5826, 1822, 0, 0, 972, 0, 0, 2639, 0, 0, 0, 0, 0, 0, 2640, 0, 0, 0, 5750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2641, 0, 0, 0, 5640, 2112, 5642, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2639, 0, 5809, 0, 0, 0, 0, 2640, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 2641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 2644, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 973, 0, 0, 5169, 5170, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 5177, 2645, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 0, 0, 5874, 0, 1823, 5766, 0, 0, 0, 2644, 2306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2373, 0, 0, 0, 0, 0, 2645, 0, 0, 0, 0, 0, 0, 0, 0, 2646, 0, 0, 2647, 0, 0, 0, 0, 0, 0, 2642, 5220, 0, 0, 0, 2643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2690, 0, 0, 0, 0, 0, 2373, 0, 0, 1823, 2644, 2306, 0, 0, 0, 0, 0, 0, 5243, 0, 0, 2646, 0, 0, 2647, 0, 5950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2645, 0, 0, 0, 0, 0, 0, 1823, 0, 0, 0, 0, 0, 0, 0, 0, 5972, 0, 0, 5262, 5264, 0, 0, 972, 0, 0, 0, 5268, 5269, 0, 2648, 0, 5270, 0, 0, 0, 0, 5271, 0, 0, 5274, 5275, 0, 2373, 0, 0, 0, 5280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2646, 0, 0, 2647, 0, 2583, 2583, 0, 0, 0, 2583, 0, 0, 5898, 0, 5900, 0, 0, 0, 1823, 0, 2648, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5316, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 1365, 0, 0, 0, 0, 0, 0, 0, 5330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2572, 0, 0, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2648, 0, 5358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1822, 0, 0, 0, 2572, 0, 0, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5407, 963, 0, 0, 1822, 0, 0, 5409, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2572, 0, 0, 0, 0, 1822, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 963, 963, 5444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6109, 0, 0, 0, 0, 0, 0, 4143, 4143, 0, 0, 3327, 3327, 3327, 3327, 0, 0, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 4143, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 4, 0, 973, 2583, 0, 0, 2583, 0, 2583, 0, 0, 4143, 4143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2583, 3327, 3327, 2583, 0, 2583, 7, 0, 8, 9, 0, 0, 0, 0, 0, 10, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3288, 0, 0, 0, 14, 0, 0, 15, 6213, 0, 5550, 0, 0, 0, 0, 0, 5554, 5555, 5556, 0, 0, 0, 16, 0, 17, 0, 0, 0, 18, 0, 2583, 0, 0, 0, 0, 5775, 0, 0, 0, 0, 0, 5569, 5570, 0, 20, 5571, 21, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5579, 0, 0, 0, 0, 0, 0, 0, 23, 0, 5591, 0, 0, 0, 0, 0, 0, 2583, 0, 1823, 0, 5609, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6303, 0, 0, 1823, 25, 26, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 963, 963, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 1823, 0, 0, 1114, 1114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 32, 33, 0, 34, 0, 0, 0, 0, 35, 0, 0, 4642, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 1114, 42, 0, 670, 0, 0, 0, 0, 0, 0, 0, 0, 43, 5799, 3327, 0, 0, 0, 0, 0, 0, 671, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 3348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 672, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 2583, 0, 673, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 48, 0, 0, -891, 0, 0, 2103, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 674, 0, 0, 0, 0, 0, 675, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 676, 0, 0, 0, 0, 0, 0, 0, 0, 5878, 0, 56, 0, 677, -136, 0, 0, 0, 0, 0, 0, 0, 678, 0, 0, 5890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 679, 0, 0, 0, 0, 0, 0, 0, 0, 680, 0, 0, 0, 681, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 2583, 2583, 5927, -1097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 2583, 0, 2583, 2583, 0, 0, 0, 719, 4143, 4143, 4143, 4143, 720, 0, 0, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 2583, 2583, 2583, 0, 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, -624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 721, 0, 2583, 0, 0, 2583, 0, 2583, 0, 0, 0, 2583, 0, 722, 4143, 4143, 0, 3288, 2583, 2583, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 6007, 723, 0, 0, 683, 0, 0, 684, 0, 6014, 6014, 6014, 0, 0, 0, 0, 0, 0, 0, 724, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 685, 0, 0, 0, 0, 0, 0, 5609, 0, 0, 0, 0, 0, 725, 686, 0, 0, 0, 0, 2583, 0, 6047, -474, 0, 0, 0, 726, 0, 0, 0, 0, 0, 0, 2583, 0, 727, 0, 0, 0, 0, 6062, 0, 687, 0, 0, 0, 0, 0, 728, 0, 0, 0, 688, 0, 729, 0, 0, 0, 0, -474, 0, 730, 689, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 719, 0, 731, 690, 0, 1052, 0, 0, 0, 0, 0, 691, 0, 0, 0, 0, 0, 0, -474, 0, 0, 692, 0, 693, 0, 694, 695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 696, 0, 1053, 0, 0, 0, 0, 0, 697, 0, 0, 698, 0, 0, 699, 722, 1054, 0, 0, 0, 0, 732, 0, 0, 0, 0, 0, -474, 1055, 0, 0, 0, 723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1056, 0, 6014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 733, 0, 0, 0, 0, 0, 0, 0, 0, 1057, 0, 0, 5609, 734, 0, 0, 0, 0, 0, 0, 0, 0, 726, 0, 0, 0, 735, 0, 0, 0, 0, 727, 0, 0, 0, 0, 213, 736, 0, 0, 737, 0, 0, 0, 728, 0, 0, 4143, 0, 0, 1058, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 738, 0, 0, 739, 0, 0, 0, 740, 0, 1059, 741, 0, 0, 0, 0, 0, 0, 742, 0, 0, 743, 0, 0, 0, 0, 0, 0, 6237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 744, 0, 0, 0, 0, 0, 0, 1060, 745, 0, 0, 6262, 0, 0, 0, 746, 0, 0, 747, 0, 0, 0, 0, 748, 0, 0, 2583, 2583, 0, 732, 0, 749, 0, 750, 2583, 0, 0, 0, 751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 735, 2583, 3327, 0, 0, 0, 0, 0, 0, 0, 213, 1062, 197, 0, 737, 0, 0, 0, 0, 0, 2583, 0, 2583, 0, 0, 0, 2583, 2583, 2583, 2583, 0, 0, 2583, 2583, 0, 0, 0, 0, 2583, 6014, 0, 0, 1063, 0, 0, 1064, 0, 0, 0, 740, 0, 0, 741, 0, 0, 6349, 3327, 0, 0, 742, 0, 0, 743, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 199, 0, 744, 0, 0, 0, 0, 0, 2583, 0, 1065, 0, 0, 0, 0, 0, 0, 746, 200, 0, 1066, 0, 0, 0, 201, 748, 0, 0, 0, 0, 0, 0, 0, 1067, 0, 750, 2583, 0, 0, 0, 1068, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, 0, 0, 0, 0, 0, 206, 0, 2583, 0, 2583, 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 4143, 3327, 2583, 2583, 2583, 0, 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 0, 2583, 2583, 2583, 213, 214, 0, 0, 215, 0, 0, 2583, 0, 0, 0, 0, 3327, 0, 0, 4143, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 0, 0, 217, 0, 2583, 0, 218, 0, 0, 219, 0, 0, 0, 0, 0, 0, 220, 0, 0, 221, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 224, 0, 225, 0, 0, 226, 0, 0, 0, 0, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4143, 0, 3327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3327, 3327, 0, 0, 3327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 234, 0, 1268, 714, 0, 1269, 1270, 1271, 775, 1272, 4143, 4143, 0, 4143, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 1727, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 2583, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 1728, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 1729, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 1730, 0, 0, 0, 0, 0, 0, 1352, 1731, 234, 0, 1268, 714, 0, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 40, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 44, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 1203, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 49, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 0, 0, 0, 0, 1352, 5845, 234, 0, 1268, 714, 0, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 0, 0, 0, 0, 1352, 3329, 234, 0, 1268, 714, 0, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 0, 0, 0, 0, 1352, 4745, 234, 0, 1268, 714, 0, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 655, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 0, 0, 0, 0, 1352, 4812, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 4249, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, -1841, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, -1841, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, -1841, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, -1841, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, -1841, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, -1841, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, -1841, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 0, 0, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1466, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 2733, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 2734, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 0, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 2736, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 2737, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 2738, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 2831, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 2733, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 2734, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 0, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 2736, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 2737, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 2738, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 234, 0, 1268, 714, 0, 1269, 1270, 1271, 775, 1272, 0, 645, 646, 647, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 3964, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 3290, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 40, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 44, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 1203, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 49, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 40, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 44, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 1203, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 49, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 3335, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 3336, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 3337, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 3338, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, -2272, 244, 245, 246, 0, 0, 0, -2272, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, -2272, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, -2270, 244, 245, 246, 0, 0, 0, -2270, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, -2270, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 0, 0, 2051, 3263, 1352, 234, 0, 1268, 714, 0, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 1351, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 2700, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 3290, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 3843, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 3336, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 3394, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2703, 2704, 0, 0, 0, 234, 0, 3513, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 4868, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 5251, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 5263, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 5599, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 5600, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 5601, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 5602, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 6011, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 6012, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 6013, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 6012, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 6013, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 1348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 5584, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 0, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 3321, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3322, 3323, 0, 0, 0, 234, 0, 1268, 714, 3324, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, -3001, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 6012, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 1292, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, -3001, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 0, 0, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, -3001, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 1319, 459, 460, 0, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 1327, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, -3001, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 6013, 606, 607, 608, 0, 1337, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, -3001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 1350, 0, 0, 0, 234, 0, 1268, 714, 1352, 1269, 1270, 1271, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 0, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 1323, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 3321, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3322, 3323, 234, 0, 1268, 714, 0, 1269, 1270, 3324, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 0, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 3502, 3503, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3504, 3505, 234, 0, 1268, 714, 0, 1269, 1270, 3324, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 0, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 3321, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 0, 0, 0, 234, 0, 1268, 714, 0, 1269, 1270, 0, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 3324, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 4776, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 0, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 3321, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 0, 0, 0, 234, 0, 1268, 714, 0, 1269, 1270, 0, 775, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 3324, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 1273, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 1277, 1278, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 1293, 342, 343, 344, 345, 1294, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 1298, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 0, 459, 460, 461, 462, 1320, 1321, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 3321, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 1334, 598, 1335, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 4837, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3324, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 1278, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 1294, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 3473, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 3474, 1311, 411, 412, 413, 414, 415, 416, 417, 3475, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 0, 459, 460, 461, 462, 0, 1321, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 859, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 3476, 541, 542, 543, 544, 545, 546, 547, 548, 549, 40, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 44, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 1334, 598, 1335, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 1203, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 49, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 3477, 645, 646, 647, 0, 0, 0, 50, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3478, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 1278, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 1294, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 3473, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 3474, 1311, 411, 412, 413, 414, 415, 416, 417, 3475, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 0, 459, 460, 461, 462, 0, 1321, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 859, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 3476, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 1334, 598, 1335, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 3477, 645, 646, 647, 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3478, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 1278, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 1294, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 3473, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 0, 459, 460, 461, 462, 0, 1321, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 1334, 598, 1335, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3922, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 1278, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 1294, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 3473, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 3474, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 0, 459, 460, 461, 462, 0, 1321, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 3476, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 1334, 598, 1335, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 3477, 645, 646, 647, 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 1278, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 1294, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 3473, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 0, 459, 460, 461, 462, 0, 1321, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 1334, 598, 1335, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4923, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 1278, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 1294, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 3473, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 0, 459, 460, 461, 462, 0, 1321, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 1334, 598, 1335, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 0, 0, 0, 0, 964, 0, 1602, 714, 0, 0, 0, 0, 775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6119, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 5905, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 1828, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 1829, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 1830, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 0, 964, 0, 0, 0, 0, 0, 0, 0, 0, 1603, 1604, 5906, 0, 0, 0, 0, 0, 0, 5907, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 3, 4, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 40, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 44, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 1203, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 49, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 1043, 0, 0, 50, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 0, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5656, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 40, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 44, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 1203, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 49, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 50, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 2910, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 859, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 2911, 2912, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 0, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1862, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 0, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1414, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 0, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3536, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 0, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4211, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 0, 2111, 0, 0, 0, 0, 0, 0, 2112, 0, 0, 2113, 0, 0, 0, 2114, 2115, 2116, 0, 4854, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 0, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 0, 0, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 0, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 0, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 0, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 0, 0, 2256, 2257, 2258, 2259, 0, 2260, 2261, 2262, 2263, 2264, 0, 2265, 2266, 2267, 2268, 2269, 0, 2270, 2271, 0, 2272, 2273, 2274, 0, 2275, 2276, 0, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 0, 2303, 0, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, 0, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 0, 2351, 2352, 0, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 0, 2382, 2383, 2384, 0, 2385, 2386, 2387, 2388, 2389, 0, 2390, 2391, 2392, 2393, 0, 0, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 0, 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2439, 2440, 2441, 2442, 2443, 2444, 2445, 0, 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, 0, 2463, 2464, 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 0, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 0, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543, 2544, 2545, 2546, 2547, 0, 2548, 2549, 2550, 2551, 2552, 2553, 0, 2554, 0, 0, 0, 0, 2555, 2556, 2557, 2558, 2559, 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 0, 2570, 2571, 0, 2572, 0, 0, 0, 0, 0, 0, 0, 0, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 876, 0, 1602, 714, 0, 0, 0, 979, 775, 0, 0, 0, 0, 0, 980, 981, 982, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 1740, 244, 245, 246, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 247, 248, 249, 1748, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 1749, 263, 264, 265, 266, 267, 268, 269, 1750, 1751, 270, 271, 880, 881, 274, 1752, 275, 276, 277, 278, 0, 1753, 280, 1754, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 1755, 292, 293, 294, 295, 296, 297, 1756, 298, 299, 300, 301, 1757, 1758, 1759, 302, 1760, 1761, 1762, 303, 304, 305, 306, 307, 308, 882, 883, 311, 1763, 312, 1764, 313, 314, 315, 316, 317, 318, 319, 1765, 320, 321, 322, 323, 1766, 1767, 324, 325, 884, 327, 328, 1768, 329, 330, 331, 332, 1769, 333, 334, 335, 336, 1770, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 1771, 347, 1772, 348, 349, 350, 885, 352, 1773, 353, 1774, 354, 355, 356, 1775, 357, 358, 359, 360, 361, 1776, 362, 0, 1777, 0, 365, 366, 1778, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 1779, 377, 378, 379, 380, 381, 382, 383, 384, 1780, 385, 386, 0, 388, 389, 390, 391, 886, 887, 1781, 888, 1782, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 1783, 1784, 418, 0, 420, 421, 422, 1785, 423, 424, 425, 1786, 1787, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 4535, 0, 458, 1788, 459, 460, 461, 462, 1789, 0, 464, 892, 466, 467, 468, 1790, 469, 470, 471, 1791, 1792, 4536, 473, 474, 1793, 1794, 475, 476, 0, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 1795, 493, 494, 495, 0, 497, 0, 499, 500, 501, 1796, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 1797, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 1798, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 1799, 550, 551, 552, 553, 554, 1800, 555, 556, 2737, 558, 559, 560, 561, 562, 895, 564, 1801, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 1802, 582, 583, 1803, 1804, 584, 585, 586, 587, 588, 589, 590, 591, 1805, 592, 896, 897, 1806, 1807, 595, 596, 0, 598, 0, 1808, 600, 601, 602, 603, 604, 605, 606, 607, 608, 1809, 1810, 609, 610, 611, 612, 613, 1811, 1812, 614, 615, 616, 617, 618, 0, 898, 1813, 621, 622, 623, 624, 625, 626, 1814, 1815, 627, 1816, 1817, 628, 629, 630, 631, 632, 633, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 985, 986, 987, 4537, 4538, 990, 991, 992, 993, 876, 0, 1602, 714, 0, 0, 0, 979, 775, 0, 0, 0, 0, 0, 980, 981, 982, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 1740, 244, 245, 246, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 247, 248, 249, 1748, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 1749, 263, 264, 265, 266, 267, 268, 269, 1750, 1751, 270, 271, 880, 881, 274, 1752, 275, 276, 277, 278, 0, 1753, 280, 1754, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 1755, 292, 293, 294, 295, 296, 297, 1756, 298, 299, 300, 301, 1757, 1758, 1759, 302, 1760, 1761, 1762, 303, 304, 305, 306, 307, 308, 882, 883, 311, 1763, 312, 1764, 313, 314, 315, 316, 317, 318, 319, 1765, 320, 321, 322, 323, 1766, 1767, 324, 325, 884, 327, 328, 1768, 329, 330, 331, 332, 1769, 333, 334, 335, 336, 1770, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 1771, 347, 1772, 348, 349, 350, 885, 352, 1773, 353, 1774, 354, 355, 356, 1775, 357, 358, 359, 360, 361, 1776, 362, 0, 1777, 0, 365, 366, 1778, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 1779, 377, 378, 379, 380, 381, 382, 383, 384, 1780, 385, 386, 0, 388, 389, 390, 391, 886, 887, 1781, 888, 1782, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 1783, 1784, 418, 0, 420, 421, 422, 1785, 423, 424, 425, 1786, 1787, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 4994, 0, 458, 1788, 459, 460, 461, 462, 1789, 0, 464, 892, 466, 467, 468, 1790, 469, 470, 471, 1791, 1792, 4536, 473, 474, 1793, 1794, 475, 476, 0, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 1795, 493, 494, 495, 0, 497, 0, 499, 500, 501, 1796, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 1797, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 1798, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 1799, 550, 551, 552, 553, 554, 1800, 555, 556, 2737, 558, 559, 560, 561, 562, 895, 564, 1801, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 1802, 582, 583, 1803, 1804, 584, 585, 586, 587, 588, 589, 590, 591, 1805, 592, 896, 897, 1806, 1807, 595, 596, 0, 598, 0, 1808, 600, 601, 602, 603, 604, 605, 606, 607, 608, 1809, 1810, 609, 610, 611, 612, 613, 1811, 1812, 614, 615, 616, 617, 618, 0, 898, 1813, 621, 622, 623, 624, 625, 626, 1814, 1815, 627, 1816, 1817, 628, 629, 630, 631, 632, 633, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 985, 986, 987, 4537, 4538, 990, 991, 992, 993, 655, 0, 0, 0, 0, 0, 0, 979, 0, 0, 0, 0, 0, 0, 980, 981, 982, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 983, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 984, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 985, 986, 987, 988, 989, 990, 991, 992, 993, 655, 0, 0, 0, 0, 0, 0, 979, 0, 0, 0, 0, 0, 0, 980, 981, 982, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 1100, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 1101, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 985, 986, 987, 988, 989, 990, 991, 992, 993, 655, 0, 0, 0, 0, 0, 0, 979, 0, 0, 0, 0, 0, 0, 980, 981, 982, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 1166, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 1167, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1168, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 985, 986, 987, 988, 989, 990, 991, 992, 993, 655, 0, 0, 0, 0, 0, 0, 979, 0, 0, 0, 0, 0, 0, 980, 981, 982, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 1845, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 1846, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 985, 986, 987, 988, 989, 990, 991, 992, 993, 655, 0, 0, 0, 0, 0, 0, 979, 0, 0, 0, 0, 0, 0, 980, 981, 982, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 985, 986, 987, 988, 989, 990, 991, 992, 993, 655, 0, 0, 0, 0, 0, 0, 979, 0, 0, 0, 0, 0, 0, 980, 981, 982, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 3601, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 3602, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 985, 986, 987, 988, 989, 990, 991, 992, 993, 655, 0, 0, 0, 0, 0, 0, 979, 0, 0, 0, 0, 0, 0, 980, 981, 982, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 5638, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 1739, 0, 0, 0, 0, 0, 0, 0, 0, 0, 985, 986, 987, 988, 989, 990, 991, 992, 993, 235, 236, 237, 238, 239, 240, 241, 242, 243, 1740, 244, 245, 246, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 247, 248, 249, 1748, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 1749, 263, 264, 265, 266, 267, 268, 269, 1750, 1751, 270, 271, 272, 273, 274, 1752, 275, 276, 277, 278, 279, 1753, 280, 1754, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 1755, 292, 293, 294, 295, 296, 297, 1756, 298, 299, 300, 301, 1757, 1758, 1759, 302, 1760, 1761, 1762, 303, 304, 305, 306, 307, 308, 309, 310, 311, 1763, 312, 1764, 313, 314, 315, 316, 317, 318, 319, 1765, 320, 321, 322, 323, 1766, 1767, 324, 325, 326, 327, 328, 1768, 329, 330, 331, 332, 1769, 333, 334, 335, 336, 1770, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 1771, 347, 1772, 348, 349, 350, 351, 352, 1773, 353, 1774, 354, 355, 356, 1775, 357, 358, 359, 360, 361, 1776, 362, 363, 1777, 364, 365, 366, 1778, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 1779, 377, 378, 379, 380, 381, 382, 383, 384, 1780, 385, 386, 387, 388, 389, 390, 391, 392, 393, 1781, 394, 1782, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 1783, 1784, 418, 419, 420, 421, 422, 1785, 423, 424, 425, 1786, 1787, 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, 1788, 459, 460, 461, 462, 1789, 463, 464, 465, 466, 467, 468, 1790, 469, 470, 471, 1791, 1792, 472, 473, 474, 1793, 1794, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 1795, 493, 494, 495, 496, 497, 498, 499, 500, 501, 1796, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 1797, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 1798, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 1799, 550, 551, 552, 553, 554, 1800, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 1801, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 1802, 582, 583, 1803, 1804, 584, 585, 586, 587, 588, 589, 590, 591, 1805, 592, 593, 594, 1806, 1807, 595, 596, 597, 598, 599, 1808, 600, 601, 602, 603, 604, 605, 606, 607, 608, 1809, 1810, 609, 610, 611, 612, 613, 1811, 1812, 614, 615, 616, 617, 618, 619, 620, 1813, 621, 622, 623, 624, 625, 626, 1814, 1815, 627, 1816, 1817, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1818, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 865, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6087, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6089, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6216, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 2733, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 2734, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 0, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 2735, 475, 476, 2736, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 2737, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 2738, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 0, 3959, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 2739, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 2733, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 2734, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 0, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 2735, 475, 476, 2736, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 2737, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 2738, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 0, 964, 0, 1602, 714, 0, 0, 0, 0, 775, 2623, 645, 646, 647, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 2739, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 2624, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 1828, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 1829, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 1830, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 1602, 714, 0, 0, 0, 0, 775, 2623, 0, 0, 0, 1603, 1604, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 2629, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 1828, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 1829, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 1830, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 1602, 714, 0, 0, 0, 0, 775, 0, 0, 0, 0, 1603, 1604, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 3568, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 1828, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 1829, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 1830, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 1602, 714, 0, 0, 0, 0, 775, 2623, 0, 0, 0, 1603, 1604, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 1828, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 1829, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 1830, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 1602, 714, 0, 0, 0, 0, 775, 0, 0, 0, 0, 1603, 1604, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 1828, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 1829, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 1830, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 775, 0, 0, 0, 0, 1603, 1604, 0, 0, 0, 0, 235, 236, 776, 238, 239, 240, 241, 242, 243, 777, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 778, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 779, 351, 352, 0, 353, 0, 354, 780, 0, 781, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 782, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 783, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 784, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 785, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 786, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 787, 788, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 3, 4, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 1043, 1739, 0, 6405, 714, 0, 0, 0, 0, 775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 1740, 244, 245, 246, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 247, 248, 249, 1748, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 1749, 263, 264, 265, 266, 267, 268, 269, 1750, 1751, 270, 271, 272, 273, 274, 1752, 275, 276, 277, 278, 279, 1753, 280, 1754, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 1755, 292, 293, 294, 295, 296, 297, 1756, 298, 299, 300, 301, 1757, 1758, 1759, 302, 1760, 1761, 1762, 303, 304, 305, 306, 307, 308, 309, 310, 311, 1763, 312, 1764, 313, 314, 315, 316, 317, 318, 319, 1765, 320, 321, 322, 323, 1766, 1767, 324, 325, 326, 327, 328, 1768, 329, 330, 331, 332, 1769, 333, 334, 335, 336, 1770, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 1771, 347, 1772, 348, 349, 350, 351, 352, 1773, 353, 1774, 354, 355, 356, 1775, 357, 358, 359, 360, 361, 1776, 362, 363, 1777, 364, 365, 366, 1778, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 1779, 377, 378, 379, 380, 381, 382, 383, 384, 1780, 385, 386, 387, 388, 389, 390, 391, 392, 393, 1781, 394, 1782, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 1783, 1784, 418, 419, 420, 421, 422, 1785, 423, 424, 425, 1786, 1787, 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, 1788, 459, 460, 461, 462, 1789, 463, 464, 465, 466, 467, 468, 1790, 469, 470, 471, 1791, 1792, 472, 473, 474, 1793, 1794, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 1795, 493, 494, 495, 496, 497, 498, 499, 500, 501, 1796, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 1797, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 1798, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 1799, 550, 551, 552, 553, 554, 1800, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 1801, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 1802, 582, 583, 1803, 1804, 584, 585, 586, 587, 588, 589, 590, 591, 1805, 592, 593, 594, 1806, 1807, 595, 596, 597, 598, 599, 1808, 600, 601, 602, 603, 604, 605, 606, 607, 608, 1809, 1810, 609, 610, 611, 612, 613, 1811, 1812, 614, 615, 616, 617, 618, 619, 620, 1813, 621, 622, 623, 624, 625, 626, 1814, 1815, 627, 1816, 1817, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 1739, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 1740, 244, 245, 246, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 247, 248, 249, 1748, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 1749, 263, 264, 265, 266, 267, 268, 269, 1750, 1751, 270, 271, 272, 273, 274, 1752, 275, 276, 277, 278, 279, 1753, 280, 1754, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 1755, 292, 293, 294, 295, 296, 297, 1756, 298, 299, 300, 301, 1757, 1758, 1759, 302, 1760, 1761, 1762, 303, 304, 305, 306, 307, 308, 309, 310, 311, 1763, 312, 1764, 313, 314, 315, 316, 317, 318, 319, 1765, 320, 321, 322, 323, 1766, 1767, 324, 325, 326, 327, 328, 1768, 329, 330, 331, 332, 1769, 333, 334, 335, 336, 1770, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 1771, 347, 1772, 348, 349, 350, 351, 352, 1773, 353, 1774, 354, 355, 356, 1775, 357, 358, 359, 360, 361, 1776, 362, 363, 1777, 364, 365, 366, 1778, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 1779, 377, 378, 379, 380, 381, 382, 383, 384, 1780, 385, 386, 387, 388, 389, 390, 391, 392, 393, 1781, 394, 1782, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 1783, 1784, 418, 419, 420, 421, 422, 1785, 423, 424, 425, 1786, 1787, 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, 1788, 459, 460, 461, 462, 1789, 463, 464, 465, 466, 467, 468, 1790, 469, 470, 471, 1791, 1792, 472, 473, 474, 1793, 1794, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 1795, 493, 494, 495, 496, 497, 498, 499, 500, 501, 1796, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 1797, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 1798, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 1799, 550, 551, 552, 553, 554, 1800, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 1801, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 1802, 582, 583, 1803, 1804, 584, 585, 586, 587, 588, 589, 590, 591, 1805, 592, 593, 594, 1806, 1807, 595, 596, 597, 598, 599, 1808, 600, 601, 602, 603, 604, 605, 606, 607, 608, 1809, 1810, 609, 610, 611, 612, 613, 1811, 1812, 614, 615, 616, 617, 618, 619, 620, 1813, 621, 622, 623, 624, 625, 626, 1814, 1815, 627, 1816, 1817, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 1739, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 3676, 241, 242, 243, 1740, 244, 245, 246, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 247, 248, 249, 1748, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 1749, 263, 264, 265, 266, 267, 268, 269, 1750, 1751, 270, 271, 272, 273, 274, 1752, 275, 276, 277, 278, 279, 1753, 280, 1754, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 1755, 292, 293, 294, 295, 296, 297, 1756, 298, 299, 300, 301, 1757, 1758, 1759, 302, 1760, 1761, 1762, 303, 304, 305, 306, 307, 308, 309, 310, 311, 1763, 312, 1764, 313, 314, 315, 316, 317, 318, 319, 1765, 320, 321, 322, 323, 1766, 1767, 324, 325, 326, 3677, 328, 1768, 329, 330, 331, 332, 1769, 333, 334, 335, 336, 1770, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 1771, 347, 1772, 348, 349, 350, 351, 352, 1773, 353, 1774, 354, 355, 356, 1775, 357, 358, 359, 360, 361, 1776, 362, 363, 1777, 364, 365, 366, 1778, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 1779, 377, 378, 379, 380, 381, 382, 383, 384, 1780, 385, 386, 387, 388, 389, 390, 391, 392, 393, 1781, 394, 1782, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 1783, 1784, 418, 419, 420, 421, 422, 1785, 423, 424, 425, 1786, 1787, 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, 1788, 459, 460, 461, 462, 1789, 463, 464, 465, 466, 467, 468, 1790, 469, 470, 471, 1791, 1792, 472, 473, 474, 1793, 1794, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 1795, 493, 494, 495, 496, 497, 498, 499, 500, 501, 1796, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 1797, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 1798, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 1799, 550, 551, 552, 553, 554, 1800, 3678, 556, 557, 558, 559, 560, 561, 562, 563, 564, 1801, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 1802, 582, 583, 1803, 1804, 584, 585, 586, 587, 588, 589, 590, 591, 1805, 592, 593, 594, 1806, 1807, 595, 596, 597, 598, 599, 1808, 600, 601, 602, 603, 604, 605, 606, 607, 608, 1809, 1810, 609, 610, 611, 612, 613, 1811, 1812, 614, 615, 616, 617, 618, 619, 620, 1813, 621, 622, 623, 624, 625, 626, 1814, 1815, 627, 1816, 1817, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 1278, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 1281, 0, 1282, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 1294, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 1297, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 3473, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 409, 1311, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 1312, 420, 421, 422, 0, 423, 424, 425, 1313, 1314, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 1315, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 1318, 458, 0, 459, 460, 461, 462, 0, 1321, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 1324, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 1325, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 1328, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 1330, 581, 0, 582, 583, 1331, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 1334, 598, 1335, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 1338, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 1340, 1341, 1342, 1343, 639, 1344, 1345, 1346, 1347, 644, 645, 646, 647, 234, 0, 1268, 714, 0, 1269, 1270, 0, 775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 1274, 260, 1275, 1276, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 1279, 1280, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 1290, 1291, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 1295, 347, 0, 348, 349, 350, 1296, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 1299, 1300, 0, 1301, 0, 395, 396, 397, 398, 399, 6379, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 1316, 446, 1317, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 461, 462, 1320, 463, 464, 1322, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1326, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 1329, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 1332, 1333, 0, 0, 595, 596, 597, 598, 599, 1336, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 1339, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 1003, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 965, 302, 0, 0, 966, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 967, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 1024, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 965, 302, 0, 0, 966, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 1025, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 967, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 965, 302, 0, 0, 966, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 967, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 3004, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 965, 302, 0, 0, 966, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 4030, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 967, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 714, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 1828, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 1829, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 1830, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 965, 302, 0, 0, 966, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 967, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 965, 302, 0, 0, 966, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 1119, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 967, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 965, 302, 0, 0, 966, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1161, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 967, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 965, 302, 0, 0, 966, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1174, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 967, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 965, 302, 0, 0, 966, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1186, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 1187, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 967, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 714, 0, 0, 0, 0, 0, 2606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 2607, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 714, 0, 0, 0, 0, 0, 1396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 714, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1145, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1158, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1172, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1176, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 420, 421, 422, 0, 423, 424, 425, 0, 0, 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, 0, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 2838, 275, 276, 277, 278, 279, 0, 0, 2839, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 2840, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 2841, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 2842, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 2843, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 2844, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 2845, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 2838, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 2840, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 2841, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 2842, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 3893, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 2844, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 2845, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 794, 244, 795, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 796, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 827, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 797, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 798, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 794, 244, 795, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 796, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 3575, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 797, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 798, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 2838, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 2840, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 2841, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 2842, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 2844, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 2845, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 794, 244, 795, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 796, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 797, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 798, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 3080, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 2910, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 859, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 2911, 2912, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 2006, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 2007, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 2008, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 2009, 354, 355, 0, 0, 0, 2010, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 2011, 2012, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 2013, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 2014, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 2015, 538, 539, 540, 541, 542, 543, 2016, 545, 546, 547, 548, 549, 0, 2017, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 2018, 584, 0, 2019, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 2020, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 795, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 796, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 797, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 798, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 2910, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 859, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 2911, 2912, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 1017, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1018, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 859, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 714, 0, 0, 0, 0, 0, 1398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 3657, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 3658, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 3670, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 3671, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 656, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 705, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 706, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 819, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 820, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 821, 594, 0, 0, 822, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 853, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 854, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 855, 594, 0, 0, 856, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 859, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 974, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 975, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 1137, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 1387, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 1400, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 839, 271, 272, 273, 1401, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 842, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 843, 535, 536, 537, 538, 539, 540, 541, 542, 543, 844, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 1391, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 846, 594, 0, 0, 847, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 848, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1546, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 859, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 1607, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1608, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 819, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 3422, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 3423, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 3424, 584, 0, 586, 587, 3425, 589, 3426, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 3427, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 4249, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 4263, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 4409, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 4935, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 5008, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 5369, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 811, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 817, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 839, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 840, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 841, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 842, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 843, 535, 536, 537, 538, 539, 540, 541, 542, 543, 844, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 845, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 846, 594, 0, 0, 847, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 848, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 871, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 999, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1009, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1012, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1028, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1085, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1090, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1107, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1110, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1112, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1150, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1178, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1180, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1190, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1193, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1196, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 839, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 842, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 843, 535, 536, 537, 538, 539, 540, 541, 542, 543, 844, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 1391, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 846, 594, 0, 0, 847, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 848, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1871, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1905, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1907, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1947, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1949, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 1951, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 2045, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 2725, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 0, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 839, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 842, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 843, 535, 536, 537, 538, 539, 540, 541, 542, 543, 844, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 1391, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 2759, 587, 588, 589, 590, 591, 0, 592, 846, 594, 0, 0, 847, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 848, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 839, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 842, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 843, 535, 536, 537, 538, 539, 540, 541, 542, 543, 2821, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 2822, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 846, 594, 0, 0, 2823, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 848, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 839, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 842, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 843, 535, 536, 537, 538, 539, 540, 541, 542, 543, 2907, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 2822, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 846, 594, 0, 0, 2823, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 848, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 839, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 842, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 843, 535, 536, 537, 538, 539, 540, 541, 542, 543, 2931, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 2822, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 846, 594, 0, 0, 2823, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 848, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 3125, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 3129, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 3187, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 3580, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 839, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 842, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 843, 535, 536, 537, 538, 539, 540, 541, 542, 543, 844, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 2822, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 846, 594, 0, 0, 2823, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 848, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 3638, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 3660, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 3662, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 3812, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 3854, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 5122, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 365, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 6344, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 0, 255, 256, 257, 258, 259, 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, 0, 0, 0, 281, 282, 283, 284, 285, 286, 0, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 0, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 0, 347, 0, 348, 349, 350, 351, 352, 0, 353, 0, 354, 355, 0, 0, 0, 358, 359, 360, 361, 0, 362, 363, 0, 364, 0, 366, 0, 367, 368, 369, 370, 371, 0, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 0, 387, 388, 389, 390, 391, 392, 393, 0, 394, 0, 395, 0, 0, 398, 0, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 419, 0, 421, 0, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 0, 459, 460, 0, 462, 0, 463, 464, 465, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 477, 0, 479, 0, 481, 482, 483, 484, 485, 486, 487, 488, 0, 490, 491, 492, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 0, 512, 513, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 0, 534, 535, 536, 537, 538, 539, 0, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 0, 561, 562, 563, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 0, 582, 583, 0, 0, 584, 0, 586, 587, 588, 589, 590, 591, 0, 592, 593, 594, 0, 0, 595, 596, 597, 598, 599, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 619, 620, 0, 621, 0, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 2733, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 2734, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 0, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 2736, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 2737, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 2738, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 0, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 0, 0, 458, 0, 459, 460, 461, 462, 2817, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 0, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 2737, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 4636, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 0, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 2897, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 0, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 894, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 0, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 4431, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 0, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 894, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 6031, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 0, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 0, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 0, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 894, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 6387, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 0, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 0, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 0, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 894, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 0, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 0, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 0, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 894, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 1152, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 0, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 0, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 0, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 894, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 1184, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 0, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 0, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 0, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 894, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 0, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 0, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 0, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 2737, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 877, 260, 878, 879, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 880, 881, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 882, 883, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 884, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 885, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 0, 388, 389, 390, 391, 886, 887, 0, 888, 0, 395, 396, 397, 398, 399, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 890, 446, 891, 448, 449, 450, 451, 452, 453, 454, 455, 0, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 892, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 0, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 893, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 0, 558, 559, 560, 561, 562, 895, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 896, 897, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 898, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647, 0, 0, 0, 0, 0, 235, 236, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, 0, 0, 260, 0, 0, 0, 263, 264, 265, 266, 267, 268, 269, 0, 0, 270, 271, 0, 0, 274, 0, 275, 276, 277, 278, 0, 0, 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 0, 292, 293, 294, 295, 296, 297, 0, 298, 299, 300, 301, 0, 0, 0, 302, 0, 0, 0, 303, 304, 305, 306, 307, 308, 0, 0, 311, 0, 312, 0, 313, 314, 315, 316, 317, 318, 319, 0, 320, 321, 322, 323, 0, 0, 324, 325, 326, 327, 328, 0, 329, 330, 331, 332, 0, 333, 334, 335, 336, 0, 337, 338, 339, 340, 0, 342, 343, 344, 345, 0, 0, 347, 0, 348, 349, 350, 0, 352, 0, 353, 0, 354, 355, 356, 0, 357, 358, 359, 360, 361, 0, 362, 0, 0, 0, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 0, 385, 386, 0, 388, 389, 390, 391, 0, 0, 0, 0, 0, 395, 396, 397, 398, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, 412, 413, 414, 415, 416, 417, 0, 0, 418, 0, 420, 421, 422, 0, 423, 424, 425, 0, 0, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 437, 438, 439, 440, 441, 442, 443, 444, 0, 446, 0, 448, 449, 450, 451, 452, 453, 454, 455, 0, 0, 458, 0, 459, 460, 461, 462, 0, 0, 464, 0, 466, 467, 468, 0, 469, 470, 471, 0, 0, 472, 473, 474, 0, 0, 475, 476, 0, 478, 479, 480, 0, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 0, 493, 494, 495, 0, 497, 0, 499, 500, 501, 0, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 0, 514, 515, 516, 517, 0, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 0, 531, 532, 533, 534, 535, 536, 537, 538, 0, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 0, 550, 551, 552, 553, 554, 0, 555, 556, 0, 558, 559, 560, 561, 562, 0, 564, 0, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 0, 581, 0, 582, 583, 0, 0, 584, 585, 586, 587, 588, 589, 590, 591, 0, 592, 0, 0, 0, 0, 595, 596, 0, 598, 0, 0, 600, 601, 602, 603, 604, 605, 606, 607, 608, 0, 0, 609, 610, 611, 612, 613, 0, 0, 614, 615, 616, 617, 618, 0, 0, 0, 621, 622, 623, 624, 625, 626, 0, 0, 627, 0, 0, 628, 629, 630, 631, 632, 633, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646, 647 }; static const yytype_int16 yycheck[] = { 6, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 206, 0, 0, 23, 683, 25, 1038, 0, 214, 29, 211, 217, 21, 211, 34, 35, 36, 1047, 38, 1010, 662, 41, 42, 840, 44, 8, 46, 939, 21, 1225, 1164, 1027, 15, 53, 54, 55, 837, 22, 1661, 189, 796, 797, 798, 28, 0, 1594, 802, 0, 933, 894, 935, 1578, 2845, 1042, 1011, 1504, 882, 883, 0, 913, 0, 864, 1036, 2719, 36, 2043, 892, 1571, 2720, 3073, 1113, 756, 1578, 715, 830, 1272, 1259, 3248, 715, 197, 45, 863, 216, 1583, 1901, 3138, 3431, 2051, 3433, 847, 897, 1087, 3730, 760, 3526, 1091, 230, 951, 1244, 2032, 1096, 4278, 1248, 738, 2069, 1251, 1252, 3955, 1729, 2070, 1106, 1624, 1625, 2991, 3614, 1628, 3648, 752, 3650, 3928, 762, 23, 1571, 3676, 1120, 3678, 3085, 3944, 3880, 4300, 664, 44, 4362, 3484, 36, 3536, 4838, 4321, 2108, 2969, 2110, 191, 3977, 761, 1461, 191, 175, 1696, 1697, 751, 5232, 1914, 1040, 4601, 4569, 1151, 1973, 2741, 2742, 1561, 4607, 2065, 2066, 2067, 2068, 4624, 3100, 2071, 5324, 2073, 2074, 5364, 4612, 815, 4739, 2, 4741, 197, 198, 199, 962, 4407, 202, 3390, 5152, 5454, 206, 4854, 208, 4856, 1690, 211, 35, 976, 214, 1010, 4611, 217, 2595, 42, 220, 843, 222, 2600, 1019, 225, 843, 3500, 2636, 229, 2704, 231, 50, 2706, 1029, 5103, 5490, 1717, 1001, 1621, 5160, 3546, 3292, 1006, 5502, 3942, 868, 6, 936, 3385, 3478, 5147, 4928, 11, 0, 936, 1638, 11, 0, 5755, 0, 0, 1544, 23, 736, 6, 13, 739, 6, 1102, 41, 3081, 40, 23, 12, 2683, 49, 5355, 122, 3038, 25, 3040, 3041, 5151, 2084, 1118, 3045, 3046, 3047, 1051, 3049, 3050, 3051, 960, 4777, 2038, 25, 6, 5451, 6, 6, 6004, 39, 12, 6, 12, 3534, 6, 930, 27, 12, 45, 97, 12, 2677, 39, 15, 16, 3483, 11, 3485, 3486, 179, 5739, 6, 870, 56, 880, 881, 6, 12, 87, 225, 5411, 1001, 124, 39, 2677, 891, 1006, 6, 0, 5418, 5419, 49, 1081, 12, 82, 6, 173, 977, 94, 11, 6, 12, 6, 49, 15, 16, 12, 4461, 12, 0, 6, 15, 16, 37, 196, 3, 12, 6, 6, 31, 11, 179, 6, 12, 12, 6, 1524, 6, 12, 65, 39, 12, 150, 12, 1880, 158, 3, 180, 5, 6, 31, 186, 39, 179, 11, 12, 224, 6, 13, 5, 53, 184, 124, 6, 115, 11, 157, 6, 5691, 12, 5693, 124, 191, 122, 5697, 5698, 4625, 1047, 157, 173, 195, 142, 1047, 310, 258, 5443, 290, 122, 6122, 6123, 179, 135, 47, 82, 179, 197, 179, 179, 122, 65, 137, 65, 146, 172, 206, 1417, 316, 1473, 1405, 32, 44, 65, 214, 1103, 203, 217, 403, 361, 203, 31, 203, 203, 324, 390, 5963, 80, 38, 181, 126, 344, 179, 45, 5371, 273, 5, 258, 15, 380, 37, 117, 11, 1290, 1291, 298, 29, 268, 448, 27, 65, 60, 31, 167, 65, 1465, 316, 27, 31, 6385, 273, 683, 5757, 33, 385, 38, 89, 122, 228, 52, 4939, 483, 450, 31, 101, 1322, 122, 228, 264, 179, 38, 80, 433, 4702, 4703, 4704, 13, 4706, 4707, 4708, 4709, 4710, 173, 1622, 264, 6440, 82, 5954, 299, 65, 179, 82, 5491, 203, 39, 1333, 310, 82, 299, 6454, 1639, 733, 6438, 65, 435, 1171, 197, 495, 82, 195, 47, 472, 131, 535, 203, 303, 681, 173, 82, 225, 94, 472, 687, 393, 294, 5654, 478, 450, 13, 539, 94, 255, 127, 294, 699, 82, 169, 373, 127, 355, 1353, 13, 1461, 80, 539, 90, 394, 410, 185, 294, 312, 158, 13, 1573, 142, 6, 1205, 326, 223, 201, 535, 94, 142, 340, 446, 477, 1232, 299, 370, 479, 1383, 394, 495, 6315, 326, 47, 10, 1243, 6125, 13, 179, 179, 51, 17, 18, 19, 356, 273, 219, 179, 276, 144, 1265, 258, 1260, 356, 303, 1265, 245, 368, 535, 389, 34, 1199, 179, 1462, 40, 406, 80, 440, 390, 442, 663, 186, 5312, 34, 368, 129, 669, 406, 671, 539, 673, 218, 4407, 676, 219, 535, 1655, 218, 525, 1658, 683, 668, 403, 475, 5702, 688, 469, 690, 374, 400, 438, 186, 668, 696, 431, 203, 299, 492, 477, 186, 4435, 5984, 478, 535, 463, 5962, 438, 453, 535, 115, 448, 539, 1727, 1728, 5870, 488, 1864, 720, 762, 5875, 5876, 469, 375, 1279, 1280, 334, 729, 1667, 4882, 668, 733, 539, 668, 736, 3100, 6234, 739, 469, 478, 448, 448, 482, 535, 668, 539, 668, 494, 6453, 374, 1547, 374, 539, 755, 539, 766, 476, 394, 3100, 1426, 6465, 374, 1317, 494, 2048, 535, 526, 527, 535, 1725, 496, 478, 25, 5258, 1403, 448, 1400, 539, 534, 1408, 1409, 1400, 531, 478, 1408, 1409, 761, 539, 535, 4580, 538, 496, 535, 1628, 538, 535, 538, 538, 374, 5749, 448, 1491, 374, 535, 535, 1352, 808, 939, 1491, 776, 1483, 778, 1609, 780, 6232, 817, 6314, 525, 1645, 786, 5898, 4620, 4442, 2001, 535, 790, 535, 539, 4448, 537, 4621, 535, 526, 527, 535, 837, 838, 4940, 840, 841, 1734, 226, 413, 845, 1609, 1680, 1681, 374, 4951, 533, 496, 535, 4366, 537, 539, 5753, 396, 859, 431, 1975, 6116, 374, 864, 6361, 403, 526, 527, 535, 870, 6129, 1058, 516, 517, 510, 1062, 535, 1064, 538, 1061, 413, 535, 1061, 535, 1438, 1439, 1432, 526, 527, 516, 517, 535, 4625, 2008, 6144, 413, 927, 127, 535, 538, 927, 1569, 448, 535, 27, 2020, 535, 448, 535, 4241, 33, 526, 527, 448, 808, 539, 917, 539, 531, 4107, 4108, 1549, 526, 527, 448, 25, 471, 539, 312, 122, 931, 1559, 471, 471, 448, 929, 929, 929, 929, 929, 929, 929, 929, 944, 929, 929, 929, 929, 25, 929, 929, 448, 1498, 1052, 1622, 929, 1616, 5634, 959, 953, 720, 3772, 3773, 492, 539, 448, 3777, 462, 539, 729, 864, 1639, 6051, 4671, 533, 3915, 736, 978, 537, 739, 4117, 6236, 983, 984, 3549, 488, 3551, 516, 525, 371, 539, 539, 929, 1862, 6073, 929, 533, 526, 527, 539, 537, 496, 371, 385, 4192, 387, 929, 4313, 929, 5958, 535, 473, 264, 539, 1015, 1016, 539, 4530, 1646, 142, 421, 422, 1650, 1651, 4253, 25, 159, 539, 4257, 1544, 3505, 435, 3506, 539, 179, 5214, 3445, 1038, 1039, 4090, 5961, 528, 529, 530, 531, 5474, 539, 1881, 4529, 23, 944, 1052, 871, 1054, 539, 25, 2069, 1058, 6313, 115, 1061, 1062, 30, 1064, 173, 959, 6240, 6241, 1069, 841, 115, 453, 5941, 845, 4240, 27, 4242, 4243, 6011, 54, 2050, 33, 65, 6, 6045, 5481, 127, 65, 5957, 6, 352, 6154, 1093, 528, 529, 530, 531, 347, 3858, 1100, 1101, 3912, 122, 5641, 526, 527, 528, 529, 530, 531, 3, 3475, 39, 127, 3478, 526, 527, 528, 529, 530, 531, 1122, 1123, 1124, 138, 1126, 94, 1128, 6207, 1130, 1131, 324, 117, 6, 3475, 2105, 122, 3478, 390, 523, 524, 525, 526, 527, 528, 529, 530, 531, 31, 5360, 326, 6401, 179, 404, 3616, 179, 127, 157, 6295, 3537, 180, 4435, 3526, 1164, 264, 1166, 1167, 27, 6117, 191, 3534, 190, 78, 1910, 387, 4656, 203, 218, 5385, 4592, 23, 448, 5830, 385, 25, 3526, 438, 264, 74, 6363, 142, 1015, 1016, 3534, 368, 122, 179, 13, 1199, 473, 93, 334, 127, 326, 1827, 6126, 440, 304, 442, 208, 195, 35, 36, 181, 65, 313, 1844, 469, 311, 2017, 2018, 175, 25, 198, 1225, 42, 1227, 403, 203, 10, 1231, 1205, 1233, 154, 331, 372, 17, 18, 19, 56, 453, 471, 494, 290, 1208, 368, 1210, 218, 1212, 316, 1214, 25, 1216, 1217, 1218, 148, 1257, 1625, 1259, 1223, 1628, 535, 1263, 27, 80, 2134, 403, 179, 290, 155, 66, 91, 539, 535, 448, 295, 1277, 101, 74, 254, 403, 5827, 142, 535, 535, 535, 479, 6424, 273, 175, 390, 276, 1052, 218, 264, 25, 113, 121, 1058, 270, 5721, 222, 1062, 448, 1064, 310, 725, 5736, 294, 25, 1352, 2741, 1978, 390, 134, 3880, 5745, 210, 1319, 5747, 5149, 6242, 6385, 181, 5720, 299, 2807, 5767, 1136, 1945, 5751, 6292, 751, 535, 158, 5873, 355, 6270, 438, 2102, 3084, 2007, 535, 1959, 5142, 2011, 5136, 1348, 1349, 1350, 2016, 1352, 2839, 2019, 5750, 1938, 1972, 5173, 778, 779, 780, 438, 3308, 783, 784, 785, 5795, 386, 1128, 469, 1130, 1131, 1373, 793, 326, 6438, 299, 2675, 142, 435, 513, 349, 299, 492, 4897, 385, 1985, 1970, 6, 316, 435, 6312, 469, 105, 494, 316, 374, 2069, 2070, 492, 217, 307, 6323, 122, 390, 3970, 406, 390, 4921, 394, 2891, 1421, 2084, 1414, 3, 456, 368, 494, 156, 387, 390, 2093, 2082, 264, 448, 3027, 299, 3889, 3, 3, 471, 1432, 182, 408, 1616, 535, 435, 535, 535, 290, 333, 6362, 535, 435, 2827, 1476, 1477, 4362, 1479, 1476, 1477, 403, 1479, 473, 337, 477, 299, 471, 535, 345, 74, 264, 258, 5628, 511, 492, 326, 205, 438, 1942, 5622, 396, 539, 290, 6395, 27, 188, 1478, 165, 6136, 94, 1482, 1483, 451, 1957, 453, 3437, 1960, 6171, 457, 264, 349, 1493, 1494, 1495, 1496, 180, 1498, 4880, 469, 471, 484, 241, 2049, 93, 2051, 6427, 4839, 368, 329, 31, 2057, 1880, 3117, 5943, 398, 70, 2063, 2064, 93, 1521, 3322, 3323, 374, 494, 510, 3327, 158, 533, 2075, 331, 312, 537, 2048, 264, 268, 448, 2010, 181, 2085, 364, 2014, 2015, 403, 465, 2091, 471, 122, 264, 390, 535, 360, 403, 117, 316, 1556, 304, 440, 147, 442, 1561, 294, 326, 1564, 85, 535, 5100, 88, 3369, 3370, 309, 464, 396, 147, 95, 392, 1577, 1578, 290, 472, 466, 376, 475, 331, 2597, 1586, 10, 390, 1589, 13, 142, 94, 6249, 17, 18, 19, 158, 438, 525, 1493, 350, 1495, 123, 4637, 368, 324, 533, 74, 535, 536, 537, 435, 539, 525, 4843, 1616, 390, 1618, 91, 4848, 1621, 441, 4851, 1624, 1625, 537, 313, 1628, 469, 2599, 91, 195, 127, 295, 384, 438, 1630, 1638, 1057, 403, 1641, 1635, 5853, 1644, 304, 311, 330, 142, 398, 1068, 331, 3136, 5385, 494, 188, 479, 6136, 311, 191, 483, 390, 134, 183, 5492, 438, 1084, 469, 1668, 492, 312, 27, 331, 261, 134, 390, 196, 485, 396, 4593, 325, 294, 184, 5480, 304, 6113, 1686, 436, 261, 209, 126, 301, 494, 516, 488, 535, 469, 311, 1698, 1699, 1700, 1701, 1702, 3132, 403, 124, 208, 3136, 203, 438, 273, 331, 535, 276, 6370, 5872, 1716, 435, 1711, 390, 294, 494, 1715, 438, 94, 299, 409, 1727, 1728, 1729, 2927, 115, 182, 535, 445, 535, 344, 290, 326, 268, 469, 124, 4600, 523, 524, 525, 526, 527, 528, 529, 530, 531, 122, 326, 469, 2765, 258, 1943, 290, 4518, 334, 479, 535, 314, 4523, 494, 396, 191, 170, 455, 6249, 242, 1953, 1954, 492, 536, 1954, 311, 539, 494, 203, 423, 314, 4556, 4594, 173, 142, 1206, 535, 225, 1209, 364, 1211, 1686, 1213, 368, 1215, 185, 516, 372, 1219, 114, 6230, 226, 138, 435, 535, 2675, 533, 228, 471, 3008, 537, 315, 137, 203, 139, 535, 116, 290, 535, 372, 373, 1241, 154, 154, 1826, 403, 294, 666, 403, 394, 497, 122, 1932, 396, 403, 1837, 167, 492, 539, 385, 450, 4407, 173, 1845, 1846, 380, 342, 479, 438, 10, 403, 441, 13, 535, 403, 329, 17, 18, 19, 1861, 492, 473, 535, 438, 290, 403, 441, 329, 450, 4435, 161, 368, 435, 294, 535, 372, 492, 1879, 1880, 6309, 242, 285, 218, 356, 516, 495, 535, 312, 4253, 6370, 124, 222, 4257, 1895, 1896, 1897, 1898, 6056, 420, 2082, 326, 423, 1904, 535, 290, 196, 403, 370, 208, 1911, 2737, 4253, 1914, 535, 299, 4257, 479, 492, 2717, 758, 4836, 207, 294, 255, 255, 471, 5756, 1929, 290, 492, 1932, 290, 384, 406, 122, 356, 440, 170, 442, 391, 1942, 1943, 368, 477, 31, 510, 398, 5738, 314, 453, 326, 1953, 1954, 516, 269, 1957, 492, 145, 1960, 274, 326, 539, 466, 151, 2937, 469, 5765, 441, 31, 294, 539, 82, 535, 1975, 1976, 306, 244, 165, 212, 441, 1982, 174, 1984, 94, 436, 316, 536, 535, 378, 539, 539, 412, 368, 832, 5382, 492, 473, 4362, 471, 2001, 167, 539, 368, 294, 290, 2875, 2008, 459, 2010, 368, 1985, 2013, 2014, 2015, 247, 2017, 2018, 210, 2020, 516, 4362, 2694, 1987, 2066, 1989, 2027, 1991, 403, 1993, 492, 1995, 2901, 2034, 6245, 1999, 2037, 2038, 5519, 5426, 2041, 2837, 325, 2044, 2045, 406, 3161, 2032, 2049, 125, 2051, 137, 477, 5205, 516, 2056, 2057, 290, 2032, 535, 4625, 294, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 137, 4035, 539, 2079, 5308, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2041, 255, 2091, 390, 2093, 2094, 4053, 2032, 2097, 325, 2032, 523, 524, 525, 526, 527, 528, 529, 530, 531, 2654, 2032, 471, 2032, 299, 2114, 2115, 2116, 3546, 5102, 325, 484, 403, 125, 6342, 199, 4069, 125, 3556, 5956, 3021, 3022, 3023, 2132, 3001, 2027, 433, 465, 435, 2765, 414, 41, 306, 2937, 2765, 184, 448, 4091, 3631, 101, 6419, 6451, 4096, 3755, 312, 2987, 2917, 6366, 5141, 5955, 5974, 368, 535, 2044, 0, 439, 4106, 56, 6468, 121, 0, 1929, 6441, 2172, 1932, 489, 387, 403, 3153, 3355, 2915, 2975, 2917, 5121, 1942, 1943, 5336, 5719, 5338, 5513, 10, 21, 762, 13, 6412, 1612, 403, 199, 403, 1957, 3067, 199, 1960, 3631, 13, 533, 158, 74, 536, 537, 37, 296, 4095, 5126, 103, 4011, 3010, 4100, 4101, 258, 326, 2835, 385, 525, 387, 539, 56, 47, 2990, 492, 4592, 4593, 132, 385, 54, 537, 3728, 3837, 47, 128, 483, 10, 453, 3843, 13, 815, 492, 372, 17, 18, 19, 538, 2010, 4592, 4593, 122, 2014, 2015, 147, 5770, 80, 181, 368, 152, 1630, 492, 372, 419, 37, 1635, 455, 80, 3104, 3105, 3106, 3107, 539, 3109, 403, 368, 2279, 5090, 467, 5092, 96, 174, 154, 27, 539, 178, 453, 6118, 535, 539, 6391, 215, 6393, 403, 868, 167, 3779, 2965, 3134, 2967, 193, 173, 5064, 2971, 5066, 5067, 5068, 396, 539, 5792, 403, 2941, 183, 4941, 360, 4231, 137, 360, 139, 2949, 347, 4949, 2952, 139, 124, 4128, 4129, 4130, 4131, 5744, 2333, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 4143, 1711, 294, 3826, 165, 1715, 435, 299, 390, 93, 222, 397, 4239, 3224, 6455, 114, 930, 191, 492, 453, 3540, 523, 524, 525, 526, 527, 528, 529, 530, 531, 373, 50, 5700, 173, 198, 326, 303, 102, 420, 203, 102, 396, 516, 255, 360, 448, 2389, 74, 3127, 435, 479, 135, 179, 80, 73, 4198, 4199, 440, 142, 442, 403, 353, 146, 492, 6235, 539, 299, 94, 364, 230, 473, 5328, 212, 364, 180, 174, 203, 368, 1839, 3951, 435, 397, 440, 294, 442, 167, 469, 516, 299, 1850, 254, 173, 6053, 492, 306, 122, 3086, 124, 492, 485, 396, 326, 485, 5360, 316, 1866, 535, 536, 214, 538, 485, 210, 403, 226, 6246, 180, 326, 516, 180, 435, 353, 326, 516, 229, 479, 286, 287, 288, 289, 326, 4836, 173, 293, 294, 345, 3346, 535, 4843, 299, 435, 326, 3352, 4848, 368, 40, 4851, 252, 326, 312, 214, 290, 362, 214, 4836, 294, 197, 183, 173, 368, 1920, 4843, 34, 40, 368, 229, 4848, 62, 229, 4851, 485, 269, 368, 29, 255, 1935, 274, 393, 1938, 1939, 356, 535, 197, 368, 479, 5852, 212, 3291, 252, 61, 368, 252, 1883, 369, 403, 245, 52, 492, 3432, 403, 312, 3208, 267, 3, 6058, 6059, 83, 403, 534, 1969, 1970, 535, 1903, 539, 82, 525, 5, 281, 403, 114, 281, 516, 11, 399, 272, 306, 94, 537, 28, 294, 19, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 535, 2583, 3211, 326, 536, 408, 5502, 539, 37, 310, 396, 2593, 2594, 492, 465, 2597, 466, 167, 6, 284, 1005, 534, 2604, 173, 12, 40, 539, 6398, 294, 2797, 6, 2799, 2800, 299, 379, 2798, 12, 516, 2798, 1024, 535, 364, 1027, 308, 6, 368, 5656, 62, 453, 435, 12, 5661, 5662, 93, 2636, 455, 2638, 530, 536, 2641, 2642, 539, 535, 2645, 537, 2647, 2637, 467, 2650, 3322, 3323, 206, 2654, 393, 3327, 379, 3784, 6, 379, 345, 403, 536, 533, 12, 539, 5581, 537, 410, 3457, 3458, 5431, 6, 370, 479, 6, 2677, 362, 12, 3617, 114, 12, 2683, 2684, 6, 268, 255, 492, 6201, 148, 12, 102, 514, 2694, 2113, 2794, 3435, 3369, 3370, 516, 517, 268, 2703, 2704, 526, 527, 528, 529, 530, 531, 264, 516, 3547, 98, 3652, 269, 2717, 6, 535, 2834, 274, 516, 517, 12, 2725, 4684, 2727, 5, 3491, 5, 535, 6417, 3392, 11, 6420, 11, 290, 306, 5772, 5, 535, 4700, 6, 536, 203, 11, 539, 4548, 12, 183, 3557, 210, 523, 524, 525, 526, 527, 528, 529, 530, 531, 3731, 5126, 3940, 154, 197, 2767, 324, 2769, 180, 6, 325, 206, 6, 145, 4379, 12, 167, 3324, 12, 151, 466, 2783, 173, 4730, 5126, 536, 208, 6301, 539, 3336, 4737, 4738, 2794, 22, 272, 2797, 2798, 2799, 2800, 28, 2722, 2803, 214, 4602, 2806, 536, 310, 310, 539, 3438, 2926, 315, 315, 2767, 3438, 2769, 533, 229, 373, 5385, 537, 3618, 1001, 530, 5636, 2827, 3373, 1006, 535, 264, 537, 222, 5644, 5645, 269, 668, 528, 2839, 396, 274, 252, 533, 397, 535, 453, 537, 4377, 528, 4379, 89, 2852, 2853, 533, 485, 535, 290, 537, 2859, 535, 154, 537, 6188, 4344, 418, 255, 245, 2868, 295, 296, 281, 3417, 536, 167, 333, 539, 61, 4364, 435, 173, 533, 393, 535, 4313, 537, 71, 72, 536, 4052, 2890, 539, 325, 3007, 286, 287, 288, 289, 3921, 6050, 310, 3335, 536, 3337, 3338, 539, 535, 3883, 3703, 3574, 11, 2911, 536, 2806, 483, 539, 469, 306, 2677, 2668, 2669, 2670, 380, 479, 2924, 536, 535, 316, 539, 222, 761, 762, 15, 16, 536, 4415, 492, 539, 433, 5853, 373, 5505, 533, 536, 535, 5308, 539, 2947, 536, 536, 2950, 539, 539, 35, 36, 536, 3571, 3572, 539, 535, 516, 537, 255, 536, 397, 5328, 539, 310, 5308, 379, 396, 390, 536, 3595, 432, 539, 2976, 2977, 3595, 535, 492, 5613, 494, 536, 536, 418, 536, 539, 5328, 539, 3726, 2991, 539, 2993, 2994, 3731, 535, 5360, 536, 2964, 2677, 539, 536, 61, 536, 539, 464, 539, 492, 435, 494, 3879, 485, 306, 472, 154, 536, 475, 2911, 539, 5360, 536, 50, 316, 539, 3025, 3026, 3027, 167, 536, 536, 3031, 539, 539, 173, 2794, 469, 228, 2797, 3039, 2799, 2800, 6367, 537, 3877, 536, 5960, 536, 539, 512, 539, 536, 3052, 479, 539, 440, 536, 442, 3058, 539, 3060, 536, 536, 473, 539, 539, 492, 536, 313, 3255, 539, 3257, 3258, 3073, 173, 137, 465, 139, 3078, 536, 15, 16, 539, 222, 3084, 4614, 536, 3087, 536, 539, 516, 539, 536, 310, 536, 539, 927, 539, 929, 3099, 3100, 536, 4609, 165, 539, 3720, 385, 386, 536, 535, 3110, 539, 536, 385, 386, 539, 255, 1153, 6443, 512, 3120, 4298, 3122, 1159, 492, 313, 494, 3742, 6112, 536, 310, 536, 539, 1169, 539, 536, 50, 1173, 539, 5502, 492, 1177, 494, 1179, 5288, 536, 4630, 5291, 539, 1185, 536, 516, 517, 539, 3252, 1191, 2095, 536, 1194, 2098, 539, 3161, 5502, 3163, 440, 3165, 442, 306, 230, 385, 386, 10, 465, 3909, 13, 385, 386, 316, 17, 18, 19, 536, 536, 536, 539, 539, 539, 4363, 536, 4365, 536, 539, 4368, 539, 536, 5367, 5368, 539, 3198, 3119, 536, 4630, 4171, 539, 536, 536, 228, 539, 539, 536, 512, 3392, 539, 5849, 536, 6129, 536, 539, 5581, 539, 536, 5819, 5820, 539, 286, 287, 288, 289, 178, 536, 536, 293, 539, 539, 539, 536, 536, 299, 539, 539, 536, 5581, 536, 539, 536, 539, 536, 539, 137, 539, 139, 536, 3252, 3253, 539, 3255, 4039, 3257, 3258, 492, 3260, 494, 3927, 3885, 528, 3887, 536, 3267, 3885, 539, 3887, 4225, 3272, 482, 536, 536, 536, 539, 539, 539, 536, 536, 538, 3324, 539, 3900, 536, 3902, 536, 539, 341, 539, 5237, 5238, 536, 536, 4164, 539, 539, 536, 536, 538, 4271, 539, 39, 536, 536, 536, 539, 539, 539, 536, 536, 10, 539, 539, 13, 536, 536, 3500, 539, 539, 3322, 3323, 3324, 6239, 465, 3327, 6017, 6018, 536, 6245, 3373, 539, 535, 3335, 3336, 3337, 3338, 4308, 536, 3100, 536, 539, 536, 539, 536, 3969, 535, 539, 47, 3351, 3969, 4956, 3354, 536, 3356, 54, 6131, 4024, 536, 536, 536, 539, 539, 539, 54, 55, 536, 3369, 3370, 539, 536, 3373, 1205, 539, 535, 4222, 2796, 4224, 4825, 5744, 4827, 80, 2802, 535, 4258, 226, 4260, 1493, 61, 1495, 3392, 455, 3394, 179, 3396, 224, 3398, 224, 535, 535, 4378, 496, 5744, 467, 537, 535, 535, 368, 203, 159, 535, 537, 159, 310, 203, 3417, 310, 368, 3420, 159, 159, 3100, 3424, 203, 159, 310, 368, 173, 159, 2849, 253, 4060, 124, 4106, 4922, 3478, 473, 310, 4055, 535, 1273, 303, 5244, 3445, 173, 536, 74, 294, 40, 294, 6366, 496, 535, 152, 310, 4128, 4129, 4130, 4131, 294, 1293, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 4143, 312, 50, 3475, 50, 4653, 3478, 3479, 3425, 3426, 3427, 3483, 3484, 3485, 3486, 294, 458, 3530, 5853, 4162, 3492, 3252, 294, 93, 3255, 3497, 3257, 3258, 326, 198, 4336, 485, 4310, 485, 203, 89, 453, 173, 348, 159, 3512, 5853, 159, 535, 159, 159, 496, 159, 159, 1352, 539, 159, 159, 159, 3526, 4198, 4199, 159, 3530, 159, 159, 3533, 3534, 173, 3536, 159, 4406, 159, 4408, 159, 159, 159, 310, 435, 535, 40, 253, 173, 4526, 310, 173, 322, 0, 301, 535, 254, 535, 535, 173, 535, 535, 535, 535, 168, 4434, 4504, 535, 22, 5528, 535, 535, 535, 4245, 28, 40, 3577, 4123, 535, 535, 535, 535, 535, 535, 493, 105, 535, 535, 535, 253, 6364, 535, 535, 535, 224, 535, 5960, 535, 45, 40, 3601, 3602, 535, 535, 535, 535, 535, 535, 535, 535, 535, 4157, 535, 535, 312, 535, 535, 535, 539, 5960, 39, 4514, 539, 535, 448, 446, 446, 533, 533, 448, 448, 535, 448, 179, 173, 306, 3637, 539, 173, 403, 3059, 304, 70, 448, 1476, 1477, 448, 1479, 390, 448, 448, 484, 537, 390, 101, 448, 448, 390, 255, 448, 81, 448, 4208, 525, 448, 94, 390, 159, 310, 395, 250, 448, 448, 299, 130, 448, 472, 438, 331, 535, 385, 196, 448, 523, 524, 525, 526, 527, 528, 529, 530, 531, 304, 3694, 310, 448, 94, 535, 3880, 130, 203, 159, 539, 130, 473, 473, 326, 154, 448, 116, 408, 61, 130, 448, 61, 3475, 448, 3718, 3478, 448, 167, 448, 278, 448, 314, 448, 173, 3728, 448, 448, 448, 448, 179, 448, 448, 448, 448, 352, 185, 352, 448, 188, 5172, 352, 448, 192, 438, 331, 448, 331, 49, 448, 5553, 448, 448, 536, 539, 226, 540, 226, 310, 310, 226, 226, 226, 6129, 3526, 226, 448, 226, 458, 226, 535, 226, 3534, 222, 226, 224, 40, 159, 310, 159, 294, 5584, 122, 159, 473, 159, 6129, 159, 261, 484, 310, 294, 294, 294, 40, 3475, 173, 40, 3478, 245, 159, 392, 535, 159, 473, 4435, 255, 298, 159, 473, 303, 535, 535, 159, 514, 4686, 179, 488, 3239, 13, 188, 539, 448, 535, 278, 536, 526, 527, 528, 529, 530, 531, 535, 3254, 3837, 448, 278, 535, 3259, 321, 3843, 450, 196, 535, 512, 394, 3526, 222, 536, 196, 536, 3854, 539, 533, 3534, 512, 539, 306, 536, 536, 536, 310, 276, 406, 536, 473, 311, 316, 40, 3290, 473, 242, 319, 6239, 4548, 61, 539, 489, 10, 6245, 536, 13, 484, 390, 299, 17, 18, 19, 3891, 3892, 3893, 299, 10, 299, 448, 13, 6239, 173, 448, 17, 18, 19, 6245, 4875, 448, 3908, 299, 310, 50, 1948, 242, 310, 412, 294, 242, 47, 253, 1956, 253, 3922, 253, 310, 54, 385, 272, 535, 438, 376, 10, 448, 535, 13, 5111, 130, 203, 535, 368, 3940, 3941, 3942, 310, 539, 539, 3946, 310, 310, 492, 197, 80, 400, 403, 448, 356, 448, 316, 3958, 4574, 4575, 536, 10, 40, 4789, 13, 226, 473, 47, 17, 18, 19, 473, 245, 159, 54, 351, 304, 173, 5486, 485, 525, 40, 175, 400, 431, 352, 159, 159, 436, 304, 159, 473, 4858, 294, 40, 535, 492, 535, 47, 294, 80, 310, 6366, 29, 310, 54, 4672, 4673, 4674, 4675, 4676, 245, 304, 4014, 194, 194, 173, 40, 465, 174, 245, 173, 310, 400, 294, 6366, 203, 4028, 4029, 203, 539, 80, 203, 3954, 61, 203, 203, 448, 4039, 275, 537, 179, 489, 303, 491, 492, 492, 535, 179, 539, 4678, 4052, 539, 539, 496, 310, 539, 536, 536, 536, 179, 536, 316, 539, 3958, 539, 513, 539, 198, 3990, 4071, 376, 152, 203, 513, 4206, 322, 137, 4079, 478, 4081, 332, 179, 293, 179, 268, 448, 512, 4870, 536, 188, 538, 539, 489, 4095, 5072, 226, 227, 4099, 4100, 4101, 536, 536, 536, 536, 4106, 4778, 515, 4109, 263, 226, 4112, 5642, 539, 536, 539, 536, 4118, 198, 4120, 535, 535, 4123, 203, 254, 534, 536, 4128, 4129, 4130, 4131, 536, 535, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 4143, 536, 536, 4039, 4147, 4148, 4149, 198, 536, 535, 535, 1985, 203, 536, 4157, 539, 471, 479, 516, 4162, 4204, 534, 489, 4166, 310, 297, 61, 310, 535, 313, 525, 4174, 254, 310, 4177, 535, 4179, 3598, 535, 159, 312, 448, 448, 448, 216, 3606, 299, 162, 448, 294, 535, 535, 4195, 159, 312, 4198, 4199, 208, 2032, 4861, 4203, 4204, 423, 254, 535, 4208, 395, 4210, 4211, 159, 403, 159, 395, 253, 208, 395, 4219, 4220, 4221, 162, 310, 525, 448, 4407, 473, 162, 390, 4775, 489, 255, 312, 333, 2066, 470, 162, 40, 4239, 4240, 4241, 4242, 4243, 333, 4245, 4246, 4231, 448, 4249, 448, 448, 448, 4253, 4435, 420, 265, 4257, 4231, 2090, 62, 265, 265, 4263, 312, 390, 390, 448, 390, 4214, 4215, 4216, 4217, 448, 448, 130, 390, 294, 159, 408, 403, 49, 49, 534, 448, 448, 88, 536, 448, 448, 4290, 448, 3710, 448, 3712, 4231, 448, 40, 4231, 536, 536, 191, 226, 4918, 226, 4305, 536, 4307, 314, 4231, 536, 4231, 114, 115, 539, 3, 458, 173, 50, 4946, 122, 64, 115, 776, 536, 778, 539, 780, 173, 408, 535, 40, 536, 786, 787, 788, 159, 448, 159, 173, 304, 525, 191, 159, 5773, 473, 535, 473, 390, 390, 390, 390, 390, 400, 157, 5091, 157, 100, 226, 161, 408, 226, 4362, 4363, 4364, 4365, 5031, 5032, 4368, 5034, 4370, 149, 226, 226, 6174, 6175, 226, 539, 6178, 226, 226, 183, 226, 226, 533, 514, 466, 310, 4388, 230, 3808, 5283, 466, 310, 523, 524, 525, 526, 527, 528, 529, 530, 531, 536, 206, 61, 310, 5022, 523, 524, 525, 526, 527, 528, 529, 530, 531, 310, 13, 536, 163, 322, 484, 539, 536, 179, 5318, 536, 536, 536, 293, 536, 536, 539, 3852, 514, 536, 535, 229, 534, 320, 229, 535, 4443, 4625, 536, 317, 526, 527, 528, 529, 530, 531, 2284, 437, 61, 192, 200, 445, 535, 535, 376, 264, 478, 92, 458, 514, 269, 173, 40, 245, 473, 274, 473, 448, 523, 524, 525, 526, 527, 528, 529, 530, 531, 4449, 216, 61, 438, 290, 159, 88, 6094, 294, 473, 4253, 395, 4461, 183, 4257, 4499, 420, 458, 245, 162, 5119, 448, 448, 250, 390, 448, 448, 448, 390, 492, 61, 536, 536, 536, 479, 535, 368, 535, 438, 325, 977, 173, 10, 310, 80, 13, 3948, 115, 4532, 17, 18, 19, 159, 458, 536, 226, 535, 226, 226, 226, 242, 535, 4546, 211, 4548, 535, 448, 294, 496, 37, 310, 4555, 307, 539, 536, 40, 331, 4561, 310, 5677, 3, 5679, 539, 535, 5436, 458, 539, 373, 4572, 5244, 3992, 46, 4253, 535, 448, 186, 4257, 536, 400, 185, 327, 115, 179, 4587, 226, 147, 536, 243, 4592, 4593, 1047, 397, 243, 299, 299, 2635, 4600, 536, 299, 4362, 536, 299, 536, 179, 536, 4609, 61, 490, 539, 490, 322, 331, 418, 536, 420, 4619, 229, 423, 536, 536, 491, 535, 535, 5298, 539, 372, 535, 4631, 4632, 445, 377, 304, 5301, 525, 458, 40, 448, 179, 4642, 386, 210, 80, 197, 5312, 5824, 197, 492, 40, 395, 4653, 4654, 299, 4074, 299, 61, 525, 403, 62, 438, 539, 539, 74, 5463, 469, 448, 448, 159, 4671, 162, 416, 448, 448, 536, 226, 5688, 129, 4861, 181, 425, 535, 122, 4362, 40, 430, 203, 304, 400, 473, 40, 5869, 294, 535, 175, 400, 4618, 304, 492, 61, 5361, 86, 438, 492, 40, 179, 451, 4127, 535, 310, 4712, 114, 173, 539, 213, 363, 224, 10, 535, 313, 13, 536, 179, 536, 17, 18, 19, 4729, 536, 478, 536, 535, 4152, 417, 61, 40, 5397, 5915, 5916, 83, 226, 393, 487, 535, 37, 4747, 491, 535, 94, 536, 138, 310, 362, 536, 47, 448, 204, 40, 159, 159, 173, 54, 40, 535, 535, 448, 299, 535, 535, 5386, 535, 535, 535, 4775, 535, 473, 4778, 266, 535, 400, 159, 536, 115, 40, 4786, 4787, 314, 80, 536, 179, 458, 415, 4794, 4795, 536, 415, 173, 4799, 539, 40, 310, 536, 4804, 206, 536, 4807, 4808, 114, 207, 535, 2643, 535, 4814, 535, 539, 40, 4818, 4819, 4820, 4821, 539, 478, 37, 438, 196, 173, 312, 535, 473, 535, 290, 4592, 4593, 438, 4836, 208, 6, 4839, 535, 310, 166, 4843, 536, 496, 2677, 386, 4848, 386, 74, 4851, 4852, 313, 4854, 535, 4856, 74, 138, 4859, 538, 4861, 492, 264, 143, 492, 477, 488, 269, 151, 4870, 536, 170, 274, 4874, 536, 310, 478, 4878, 332, 4880, 170, 5553, 403, 444, 539, 535, 267, 444, 290, 535, 2722, 179, 10, 438, 4895, 13, 5907, 359, 299, 17, 18, 19, 210, 438, 310, 310, 198, 400, 535, 6086, 40, 203, 5584, 40, 4592, 4593, 313, 313, 535, 37, 204, 4922, 4923, 325, 181, 158, 5592, 181, 496, 5798, 535, 496, 354, 354, 226, 227, 4937, 385, 155, 61, 61, 83, 4895, 317, 40, 369, 61, 536, 61, 1403, 424, 4872, 4873, 5925, 1408, 1409, 448, 127, 471, 536, 6, 535, 254, 400, 143, 5834, 496, 496, 310, 310, 536, 373, 37, 535, 4940, 299, 295, 403, 295, 535, 535, 26, 1436, 310, 318, 4951, 389, 179, 539, 6166, 6167, 1445, 385, 1447, 389, 397, 539, 1451, 83, 385, 479, 535, 5003, 448, 1458, 297, 426, 535, 426, 5010, 151, 478, 158, 5559, 539, 5681, 418, 122, 536, 317, 312, 415, 479, 315, 415, 334, 492, 5573, 492, 181, 181, 473, 5033, 535, 478, 5904, 535, 929, 523, 524, 525, 526, 527, 528, 529, 530, 531, 5048, 83, 5595, 536, 5674, 535, 5512, 1714, 1016, 5602, 3438, 1409, 2975, 5688, 969, 1015, 2884, 3652, 5688, 4406, 469, 4381, 6077, 3056, 3002, 3871, 5439, 5904, 6215, 4836, 5486, 5079, 4379, 4572, 4379, 5081, 4843, 5462, 3640, 3578, 3198, 4848, 6057, 5360, 4851, 4852, 6204, 5095, 1549, 5935, 5934, 6098, 3645, 6239, 5102, 5126, 4593, 4619, 1559, 4604, 5877, 226, 4562, 5111, 3070, 3070, 3150, 4401, 3919, 408, 3677, 3155, 4588, 3157, 5469, 5120, 1011, 3963, 5126, 5672, 5673, 4655, 5785, 3167, 6324, 6457, 3170, 5453, 3172, 3173, 5874, 5139, 3176, 5141, 6432, 3879, 3180, 6110, 3182, 4627, 5399, 3185, 1603, 1604, 5659, 5887, 5402, 18, 28, 664, 4028, 4836, 4578, 1233, 5833, 4683, 1874, 5627, 4843, 5167, 4686, 6320, 3086, 4848, 2742, 4630, 4851, 1918, 1929, 3556, 5178, 5512, 5361, 3974, 5773, 1953, 716, 3811, 749, 3001, 4434, 3728, 6136, 6370, 1528, 1646, 4659, 312, 858, 1650, 1651, 4661, 3032, 2684, 6297, 4305, 5385, 6215, 4874, 5622, 5625, 1915, 5396, 1425, 5871, 3249, 40, 40, 5397, 4729, 5138, 5397, 3497, 1486, 3512, 514, 2694, 6036, 1827, 5846, 3478, 1485, 4241, 5231, 523, 524, 525, 526, 527, 528, 529, 530, 531, 5241, 4259, 5309, 5244, 536, 1384, 5247, 5248, 5249, 1488, 3475, 5581, 5580, 4306, 5441, 3475, 6348, 6030, 6179, 5833, 3475, 6386, 5557, 4166, 2588, 5847, 3415, 6, 5848, 2589, 3268, 5272, 5273, 2086, 10, 5276, 3397, 13, 3031, 3395, 5797, 17, 18, 19, 5907, 6388, 3385, 3119, 3305, 2594, 4098, 1442, 917, 5294, 2682, -1, 5842, 5298, 5844, -1, -1, 37, -1, 5304, -1, -1, -1, 5308, -1, -1, -1, 5312, 51, -1, 5315, -1, 5317, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5328, -1, -1, 5331, -1, -1, -1, -1, 5095, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6026, -1, -1, 5321, -1, 5360, 5361, 5362, -1, 5364, -1, -1, 5126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1844, -1, -1, 40, -1, 5396, 5397, -1, 6411, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5441, -1, -1, -1, -1, -1, -1, -1, 5126, -1, -1, -1, 5453, 100, 6077, -1, -1, 5458, 197, -1, -1, -1, 5463, -1, -1, -1, -1, 206, 207, -1, -1, 5472, -1, -1, -1, 214, -1, 216, 217, -1, -1, 5482, -1, -1, -1, 5486, 4905, -1, 5489, -1, 226, 230, 3324, -1, -1, -1, -1, -1, -1, 5500, 5501, 5502, 6174, 6175, 6373, -1, 6178, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, 5512, 5512, 5512, 5512, 5512, 5512, 5512, 5512, -1, 5512, 5512, 5512, 5512, -1, 5512, 5512, -1, 5536, -1, -1, 5512, 4958, 6433, 3373, -1, -1, 3581, -1, 5467, -1, 5308, -1, -1, -1, 5553, 200, -1, -1, 5557, -1, 5559, 0, 5602, 4980, -1, 6432, -1, 3397, -1, -1, 5328, -1, 6307, 6308, 5573, -1, -1, 5512, 312, 5498, 5512, -1, 5581, 3413, -1, 5584, -1, -1, -1, 5588, 6457, 5512, -1, 5512, 6215, -1, 5595, -1, -1, -1, 245, -1, 5360, 5602, -1, 250, -1, 2059, 2060, 5501, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2076, 2077, 3661, -1, 3663, -1, -1, -1, 5308, -1, -1, -1, 5053, -1, 5396, -1, -1, -1, -1, -1, 5643, 3475, -1, -1, 3478, 294, -1, 5650, 5328, -1, -1, -1, -1, 2109, -1, -1, -1, -1, 101, -1, -1, -1, -1, 5666, -1, 10, -1, -1, 13, 5672, 5673, -1, -1, -1, 5677, 5678, 5679, 5680, 327, 5441, 5360, -1, -1, -1, -1, -1, -1, 5871, -1, -1, -1, -1, 3526, -1, -1, -1, 3530, -1, -1, -1, 3534, -1, 47, -1, -1, 5708, -1, -1, -1, 54, -1, 154, -1, 5716, -1, -1, -1, -1, -1, -1, -1, -1, -1, 372, 167, -1, -1, -1, 377, -1, 173, -1, -1, -1, -1, 80, 179, 386, 5741, -1, 5502, 5744, 185, -1, -1, 188, 395, -1, -1, 192, -1, -1, -1, 5174, 403, -1, 6304, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5769, 416, 3807, -1, -1, -1, -1, -1, 3813, -1, 425, -1, -1, 222, -1, 430, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 5797, -1, -1, -1, -1, -1, -1, -1, 451, -1, -1, 6353, 5809, 152, -1, -1, -1, -1, 255, -1, -1, 5818, 5819, 5820, -1, 5581, -1, 5824, 5502, 5746, -1, -1, -1, 5830, -1, -1, 5833, -1, -1, -1, -1, -1, -1, -1, 487, 5842, -1, 5844, 491, 5846, 5847, -1, -1, -1, -1, -1, 5853, -1, -1, 198, -1, -1, -1, 5860, 203, -1, -1, -1, -1, 306, -1, -1, 5869, 310, 5871, -1, -1, -1, -1, 316, -1, 6064, 5879, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5314, -1, -1, -1, -1, -1, -1, -1, 5581, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, 5915, 5916, -1, -1, -1, -1, -1, -1, -1, 662, -1, -1, -1, -1, -1, 5850, -1, -1, -1, -1, -1, 376, -1, -1, -1, -1, -1, -1, 681, -1, -1, 5946, -1, -1, 687, -1, 6137, 6138, -1, -1, -1, -1, 5716, -1, -1, 5960, 699, -1, 3999, -1, 4001, -1, 4003, -1, -1, 312, -1, -1, -1, -1, -1, -1, 715, -1, -1, -1, -1, 720, -1, -1, 5744, -1, 725, -1, -1, -1, 729, 730, -1, -1, 435, -1, -1, 736, -1, 738, 739, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6011, -1, 751, 752, -1, -1, -1, -1, -1, -1, -1, -1, -1, 762, 465, 6026, -1, -1, -1, 6030, -1, -1, -1, -1, -1, 6036, -1, -1, -1, -1, -1, -1, -1, -1, 6045, -1, -1, -1, 489, -1, 491, 492, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6064, -1, 408, 5744, -1, -1, -1, -1, -1, 513, -1, -1, -1, 815, -1, 6079, -1, -1, -1, -1, -1, -1, 6086, -1, -1, -1, -1, -1, -1, 533, 5853, -1, 536, 537, 538, 837, 838, -1, -1, -1, -1, 843, -1, -1, -1, -1, -1, -1, 6112, -1, -1, -1, -1, -1, -1, 6119, -1, -1, -1, 3954, -1, -1, -1, -1, -1, 6129, 868, -1, 870, -1, -1, -1, -1, 6137, 6138, 6139, -1, -1, -1, 6143, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 894, -1, -1, 3990, -1, 10, -1, 6136, 13, -1, 6166, 6167, 6168, -1, -1, -1, 514, -1, 6174, 6175, 5853, -1, 6178, 917, -1, 6181, -1, -1, 526, 527, 528, 529, 530, 531, -1, 6111, 930, -1, -1, -1, -1, -1, 47, -1, 6136, 5960, -1, 6136, -1, 54, -1, -1, 6249, 6209, -1, -1, 2665, 2666, 6136, -1, 6136, -1, 2671, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, 5656, 6239, 6240, 6241, -1, 5661, 5662, 6245, -1, -1, -1, -1, 2703, 2704, -1, -1, -1, -1, -1, -1, -1, 6445, 6446, -1, -1, 6263, -1, -1, -1, -1, -1, -1, 6270, -1, -1, -1, -1, -1, 6249, -1, 6278, -1, -1, -1, -1, 5960, -1, -1, 6286, -1, -1, -1, -1, -1, 6292, -1, -1, -1, -1, 6297, -1, -1, 1038, 1039, 1040, 152, 6304, 6064, -1, -1, -1, 1047, -1, -1, 2765, 6249, 1052, -1, 6249, -1, -1, 1057, 1058, -1, -1, -1, 1062, -1, 1064, 6249, -1, 6249, 1068, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6340, 6341, 6342, 6343, -1, -1, 1084, -1, 6348, 198, -1, -1, -1, 6353, 203, -1, 5774, -1, -1, 27, -1, -1, -1, 6363, -1, 33, 6366, -1, -1, -1, 6129, -1, -1, 4204, -1, -1, -1, -1, 6137, 6138, 48, -1, -1, -1, -1, -1, 6386, -1, -1, -1, 1128, -1, 1130, 1131, -1, -1, -1, 6370, -1, 2852, 4231, -1, -1, -1, -1, 254, 0, -1, -1, -1, 78, 6411, 6412, -1, -1, -1, -1, -1, -1, 5837, -1, -1, 4253, -1, -1, -1, 4257, -1, 6428, -1, -1, -1, -1, 1171, 6370, -1, -1, 6370, -1, -1, -1, -1, -1, -1, -1, 6445, 6446, -1, 6370, 6449, 6370, 6451, 6129, -1, -1, -1, -1, 0, -1, -1, -1, 1199, -1, 312, -1, 133, -1, 135, 6468, -1, -1, -1, -1, -1, 142, -1, -1, -1, 146, 22, 6239, -1, -1, -1, -1, -1, 6245, -1, 2941, -1, 33, -1, 35, 36, 1232, -1, 2949, -1, -1, 2952, -1, -1, -1, 1241, 6263, 1243, 174, 101, -1, -1, 53, 2964, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, 1260, -1, -1, -1, -1, 1265, -1, -1, -1, -1, 75, -1, 77, 78, -1, -1, -1, 1277, -1, 84, 210, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, -1, 101, 408, 154, -1, 6239, -1, -1, -1, -1, -1, 6245, -1, -1, -1, -1, 167, -1, 118, -1, -1, 121, 173, -1, 1319, -1, 6342, -1, 179, -1, -1, -1, -1, -1, 185, -1, 136, 188, 138, 0, -1, 192, 142, -1, -1, -1, -1, -1, -1, 149, 6366, -1, -1, 1348, 1349, 1350, -1, 1352, 158, -1, 160, -1, -1, -1, -1, 290, -1, 167, -1, 294, -1, 222, -1, -1, 4667, -1, -1, 4670, 1373, 304, -1, -1, -1, -1, -1, 185, -1, -1, -1, 314, -1, -1, -1, -1, -1, -1, 6412, -1, -1, -1, -1, 326, 202, -1, 255, 1400, 4699, -1, 514, -1, -1, -1, 6428, 1408, 1409, -1, -1, -1, -1, -1, 526, 527, 528, 529, 530, 531, -1, -1, -1, 6445, 6446, -1, 6366, -1, -1, -1, -1, 1432, -1, -1, 101, -1, -1, 368, -1, -1, 371, 372, -1, -1, -1, -1, -1, -1, -1, 306, 256, 257, -1, 310, -1, -1, 262, -1, -1, 316, 1461, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 277, 403, -1, -1, -1, -1, 1478, -1, -1, -1, 1482, 1483, -1, -1, -1, -1, 154, -1, -1, 296, -1, -1, -1, -1, 3211, -1, 1498, 4592, -1, 167, -1, -1, 1504, -1, -1, 173, 10, -1, -1, 13, -1, 179, -1, 17, 18, 19, -1, 185, 376, -1, 188, -1, -1, 4618, 192, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, 343, -1, -1, -1, -1, -1, -1, 47, 476, -1, -1, -1, -1, -1, 54, 358, -1, -1, 222, -1, -1, 364, 365, -1, 367, -1, -1, -1, -1, 372, -1, -1, -1, 1571, -1, 378, -1, -1, 381, -1, 80, 435, -1, -1, -1, 388, -1, -1, -1, -1, -1, 255, 395, 396, -1, -1, -1, -1, -1, -1, 403, -1, -1, -1, 407, -1, -1, 4903, -1, -1, -1, 465, -1, -1, 1612, 418, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, -1, -1, 435, -1, -1, 489, -1, 491, 492, -1, -1, -1, 306, -1, -1, -1, 310, 1645, -1, -1, -1, -1, 316, 456, -1, -1, -1, -1, -1, 513, 47, -1, -1, 4959, 4960, 468, -1, 54, -1, 6347, -1, 474, -1, -1, -1, -1, 479, -1, -1, 533, -1, -1, 536, 537, 538, -1, -1, -1, -1, 492, -1, -1, -1, 80, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, 376, 516, 1712, 518, 519, 520, 521, 522, -1, -1, -1, 3436, -1, 3438, 226, 227, -1, 1727, 1728, 1729, 535, -1, -1, 538, -1, -1, -1, -1, -1, 3454, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4843, -1, 254, -1, -1, 4848, 5054, 5055, 4851, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, 435, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4872, 4873, -1, -1, -1, -1, -1, -1, -1, -1, 3504, 3505, -1, -1, -1, -1, 297, -1, -1, -1, 465, -1, -1, -1, -1, -1, -1, -1, -1, -1, 198, 312, -1, -1, 315, 203, -1, -1, -1, -1, -1, -1, -1, -1, 489, -1, 491, 492, 1827, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1839, -1, -1, -1, 17, -1, -1, -1, 513, -1, -1, 1850, -1, 26, -1, -1, -1, -1, -1, -1, -1, 10, -1, 1862, 13, -1, 254, 1866, 533, -1, -1, 536, 537, 538, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1885, 5184, -1, -1, 5187, 5188, -1, -1, 1893, -1, -1, -1, 47, -1, -1, -1, 1901, -1, -1, 54, -1, 408, 10, -1, 5207, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, 1920, -1, -1, 312, -1, -1, -1, -1, -1, 1929, 80, -1, 1932, -1, 37, 1935, -1, -1, 1938, 1939, -1, -1, 1942, 1943, 47, 1945, 1946, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, 1957, -1, 1959, 1960, -1, -1, -1, -1, -1, -1, -1, -1, 1969, 1970, -1, 1972, 1973, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, 2010, -1, 514, -1, 2014, 2015, -1, -1, -1, 408, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, -1, -1, -1, -1, 540, -1, -1, -1, -1, -1, -1, 5138, -1, -1, 198, 2049, -1, 2051, -1, 203, -1, 27, 2056, 2057, -1, -1, -1, 33, -1, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 48, -1, -1, 2079, -1, 2081, -1, 2083, 2084, 2085, 2086, 2087, 2088, -1, -1, 2091, -1, 2093, 2094, 198, -1, 2097, -1, -1, 203, -1, -1, -1, 254, -1, 78, -1, -1, -1, -1, -1, -1, 2113, 2114, 2115, 2116, -1, -1, -1, -1, -1, -1, 226, 227, 514, -1, -1, -1, -1, -1, -1, 2132, -1, 2134, -1, 0, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, 22, -1, -1, 133, 312, 135, -1, 3880, -1, -1, -1, 33, 142, 35, 36, -1, 146, -1, 27, -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, 3903, 53, -1, -1, -1, -1, 297, -1, -1, -1, -1, 63, -1, -1, 174, -1, -1, -1, -1, -1, -1, 312, -1, 75, 315, 77, 78, 5308, -1, -1, -1, -1, 84, -1, 86, -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, 99, -1, 101, 210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 118, -1, -1, 121, 408, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 136, -1, 138, -1, -1, -1, 142, 2279, -1, -1, -1, -1, 135, 149, -1, -1, -1, -1, -1, 142, -1, -1, 158, 146, 160, -1, -1, -1, -1, -1, -1, 167, -1, 408, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290, -1, -1, 185, 294, 174, -1, -1, -1, -1, -1, -1, -1, 5629, 304, 2333, -1, -1, -1, -1, 202, -1, 27, -1, 314, -1, -1, 4060, 33, -1, -1, -1, -1, -1, -1, -1, 326, -1, -1, -1, -1, 210, -1, 48, -1, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5467, -1, 526, 527, 528, 529, 530, 531, -1, -1, -1, 5683, -1, -1, -1, 2389, -1, 78, 256, 257, -1, -1, 368, -1, 262, 371, 372, -1, -1, -1, -1, 5498, -1, -1, -1, -1, -1, 514, -1, 277, -1, -1, -1, -1, -1, 5512, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, 403, 296, 536, -1, -1, 539, -1, -1, 290, -1, -1, -1, 294, -1, -1, -1, -1, 135, -1, -1, -1, -1, 304, -1, 142, -1, -1, -1, 146, -1, -1, -1, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 326, -1, -1, -1, 343, -1, -1, -1, -1, -1, -1, -1, 174, -1, -1, -1, 665, -1, -1, 358, -1, -1, -1, 5796, -1, 364, 365, -1, 367, 476, -1, -1, -1, 372, 5602, -1, -1, -1, -1, 378, -1, -1, 381, -1, 10, 371, 372, 13, 210, 388, -1, 17, 18, 19, -1, -1, 395, 396, -1, -1, -1, -1, -1, -1, 403, -1, 715, 716, 407, -1, -1, 37, -1, -1, -1, -1, -1, 403, -1, 418, -1, 47, 64, -1, -1, -1, 10, -1, 54, 13, -1, -1, -1, 17, 18, 19, 435, -1, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, -1, 2583, -1, -1, -1, -1, 37, 80, -1, -1, 456, 100, 2594, -1, -1, 2597, 47, -1, -1, -1, -1, 290, 468, 54, -1, 294, -1, -1, 474, -1, -1, -1, -1, 479, -1, 304, -1, -1, -1, -1, -1, -1, -1, 476, -1, 314, 492, -1, -1, 80, -1, -1, -1, -1, -1, 811, 2638, 326, -1, -1, 2642, -1, -1, 2645, -1, 2647, -1, -1, 2650, 5744, 516, 5746, 2654, -1, 163, 831, -1, -1, -1, -1, -1, -1, -1, 839, -1, -1, 842, 843, 844, 535, -1, -1, 538, 2675, -1, 2677, -1, -1, -1, 368, -1, -1, 371, 372, -1, -1, -1, -1, -1, -1, 4407, 200, 2694, -1, -1, -1, -1, -1, -1, -1, -1, 2703, 2704, -1, -1, 198, -1, -1, -1, 27, 203, -1, -1, -1, 403, 33, -1, -1, 4435, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2730, -1, -1, -1, 4449, 226, 227, 2737, -1, -1, -1, 2741, 2742, 250, -1, -1, 4461, -1, 2748, 198, -1, -1, 2752, -1, 203, -1, 2756, 5850, -1, -1, -1, -1, 78, 254, -1, 2765, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 226, 227, -1, 2780, -1, -1, 2783, -1, -1, -1, 294, -1, 476, -1, 64, -1, -1, 2794, -1, 2796, 2797, -1, 2799, 2800, -1, 2802, -1, -1, 254, 297, -1, -1, -1, -1, -1, -1, -1, 2814, -1, -1, -1, -1, 135, 327, 312, 4537, 4538, 315, -1, 142, 100, -1, -1, 146, -1, -1, -1, 2834, 2835, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297, 2849, -1, -1, -1, -1, -1, -1, -1, -1, 174, -1, -1, -1, -1, 312, -1, 372, 315, 374, -1, -1, 377, 2871, 2872, 1047, -1, 2875, -1, -1, -1, 386, -1, -1, -1, -1, -1, -1, -1, -1, 395, -1, 163, -1, -1, -1, 210, 10, 403, -1, 13, 2899, 6198, 2901, 17, 18, 19, 2905, -1, -1, -1, 416, 4625, -1, -1, -1, -1, -1, -1, 408, 425, 2919, -1, -1, 37, 430, -1, -1, 2926, 200, -1, 2929, -1, -1, 47, -1, -1, 2935, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2955, -1, -1, -1, 408, -1, 2961, -1, 4678, -1, 80, -1, -1, 2968, -1, -1, -1, -1, -1, 290, -1, -1, 250, 294, -1, 487, -1, 2982, -1, -1, -1, -1, -1, 304, -1, -1, -1, -1, -1, -1, -1, 2996, -1, 314, -1, -1, 3001, -1, -1, -1, -1, -1, 3007, -1, -1, 326, -1, -1, -1, -1, -1, -1, 290, 6111, -1, -1, 294, -1, 514, -1, 3025, 3026, 3027, -1, -1, -1, 3031, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, 6136, -1, -1, -1, -1, 539, -1, -1, -1, 368, 326, 327, 371, 372, -1, 3058, 3059, -1, -1, -1, -1, 1238, 514, -1, 3067, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 198, -1, -1, -1, 403, 203, -1, 539, 1265, -1, -1, -1, 368, -1, -1, 10, 372, 3100, 13, -1, -1, 377, 17, 18, 19, -1, -1, -1, 226, 227, 386, -1, -1, -1, -1, -1, -1, -1, -1, 395, -1, -1, 37, -1, -1, -1, -1, 403, -1, 3132, -1, -1, 47, 3136, -1, -1, 254, -1, -1, 54, 416, -1, -1, 10, -1, -1, 13, -1, -1, 425, 17, 18, 19, 6249, 430, -1, -1, 476, -1, -1, 64, -1, -1, -1, -1, 80, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, 1354, -1, 297, 47, -1, -1, -1, -1, -1, 1363, 54, -1, -1, -1, -1, -1, -1, 312, -1, 100, 315, -1, -1, -1, -1, 1379, -1, -1, -1, -1, -1, -1, -1, -1, 487, -1, 80, -1, -1, -1, -1, -1, 3222, -1, 3224, 4940, 1400, -1, -1, 1403, 1404, 4946, -1, -1, 1408, 1409, 4951, -1, -1, 3239, -1, 3241, -1, -1, -1, -1, -1, -1, 3248, -1, -1, -1, 3252, -1, 3254, 3255, -1, 3257, 3258, 3259, 27, -1, 163, 4978, 4979, -1, 33, 3267, 4983, 4984, -1, 51, 3272, 10, -1, -1, 13, 6370, -1, -1, 17, 18, 19, -1, -1, -1, 198, -1, -1, -1, 3290, 203, -1, 408, -1, -1, -1, -1, -1, 200, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, 78, -1, -1, 226, 227, -1, 54, -1, -1, -1, -1, 3322, 3323, 3324, -1, -1, 3327, -1, -1, -1, -1, -1, -1, 198, 3335, 3336, 3337, 3338, 203, -1, -1, 254, 80, -1, -1, 3346, -1, -1, 250, -1, 3351, 3352, -1, 3354, -1, 3356, -1, -1, -1, -1, -1, 226, 227, -1, -1, -1, -1, 135, 3369, 3370, -1, -1, 3373, -1, 142, -1, -1, -1, 146, -1, -1, -1, -1, -1, 297, -1, -1, -1, 290, 254, -1, -1, 294, 3394, -1, 3396, -1, 3398, 514, 312, -1, -1, 315, -1, -1, -1, 174, 523, 524, 525, 526, 527, 528, 529, 530, 531, 3417, -1, -1, -1, 536, -1, -1, -1, 326, 327, -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, 10, 3438, -1, 13, -1, -1, 210, 17, 18, 19, -1, 312, -1, -1, 315, -1, -1, -1, -1, -1, -1, -1, -1, -1, 198, -1, -1, 37, -1, 203, 368, -1, -1, -1, 372, -1, -1, 47, 3475, 377, -1, 3478, -1, -1, 54, -1, -1, -1, 386, -1, -1, -1, 226, 227, 1665, 3492, -1, 395, -1, 408, 3497, -1, 1673, -1, -1, 403, -1, -1, -1, -1, 80, -1, -1, -1, -1, 3512, -1, -1, 416, -1, 254, -1, -1, -1, -1, -1, 290, 425, -1, 3526, 294, -1, 430, -1, -1, -1, -1, 3534, -1, -1, 304, -1, -1, -1, -1, -1, -1, 408, -1, 3546, 314, -1, 3549, -1, 3551, -1, -1, -1, -1, 3556, -1, -1, 326, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3571, 3572, -1, -1, 312, -1, 3577, 315, -1, -1, -1, -1, -1, -1, -1, 487, -1, -1, -1, -1, -1, 3592, -1, -1, 3595, -1, -1, 3598, -1, -1, 368, 514, -1, 371, 372, 3606, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 536, 198, -1, -1, -1, -1, 203, 3631, -1, -1, -1, -1, 403, 3637, 27, -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, 514, -1, -1, 226, 227, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, 5385, 408, 536, -1, -1, -1, 3676, 3677, 3678, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3701, -1, -1, -1, -1, -1, -1, -1, 476, 3710, -1, 3712, -1, 1888, -1, -1, -1, 1892, -1, 3720, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, 3742, -1, -1, -1, 135, -1, -1, -1, -1, -1, -1, 142, -1, -1, -1, 146, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 514, -1, -1, -1, -1, -1, -1, -1, 174, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 536, -1, -1, 10, -1, -1, 13, -1, -1, 3808, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, 210, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, 3832, -1, -1, 408, -1, 3837, -1, 47, -1, -1, -1, 3843, -1, -1, 54, -1, -1, -1, -1, -1, 3852, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, 80, 17, 18, 19, -1, -1, -1, 3879, 3880, -1, -1, -1, -1, 3885, -1, 3887, 2062, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, 3900, 290, 3902, 47, -1, 294, -1, -1, -1, -1, 54, -1, -1, -1, -1, 304, -1, -1, -1, -1, -1, -1, 3922, -1, -1, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, 326, -1, -1, -1, 514, -1, -1, -1, 725, -1, -1, 3948, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3969, 3970, 751, -1, 5688, -1, -1, -1, -1, -1, 368, -1, -1, 371, 372, -1, -1, -1, -1, -1, -1, 198, -1, 3992, -1, -1, 203, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, 4011, -1, -1, 403, -1, -1, -1, 226, 227, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, 4030, -1, -1, 47, 4034, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, 254, -1, 51, 10, -1, -1, 13, -1, 198, 4055, 17, 18, 19, 203, 51, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, 4071, -1, -1, 4074, -1, 37, -1, -1, 4079, -1, 4081, 226, 227, -1, -1, 47, 476, -1, 297, -1, -1, -1, 54, -1, 4095, -1, -1, -1, 4099, 4100, 4101, -1, -1, 312, -1, 4106, 315, -1, 4109, 254, -1, 4112, -1, 894, -1, -1, -1, 4118, 80, 4120, -1, -1, 4123, -1, -1, -1, 4127, 4128, 4129, 4130, 4131, -1, -1, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 4143, -1, -1, -1, 4147, 4148, 4149, -1, -1, 4152, 297, -1, -1, -1, 4157, -1, -1, -1, -1, 4162, -1, 4164, -1, 4166, -1, 312, -1, -1, 315, -1, -1, 4174, -1, -1, 4177, -1, 4179, -1, 5896, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, -1, -1, -1, 4195, -1, -1, 4198, 4199, 408, -1, -1, 4203, 4204, -1, -1, -1, 4208, -1, 4210, -1, 226, 227, -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, 4239, 254, -1, 203, -1, -1, 4245, -1, -1, -1, -1, -1, -1, -1, 4253, -1, -1, -1, 4257, -1, -1, -1, -1, -1, -1, 408, 226, 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1057, -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, 1068, -1, 4290, -1, -1, 254, -1, -1, -1, -1, 312, -1, -1, 315, -1, -1, 1084, -1, 514, 4307, -1, -1, -1, -1, -1, 4313, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 536, -1, -1, -1, -1, -1, -1, -1, 297, -1, -1, 4339, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, 315, -1, -1, -1, -1, -1, -1, 27, 4362, -1, -1, -1, -1, 33, -1, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 536, -1, 408, 10, -1, -1, 13, -1, -1, 4401, 17, 18, 19, -1, 4406, 4407, 4408, -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, 4434, 4435, -1, -1, -1, 54, -1, -1, 2616, -1, -1, -1, -1, 408, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, 1241, -1, -1, -1, 80, -1, -1, -1, 135, -1, -1, -1, -1, -1, 37, 142, -1, -1, -1, 146, 4481, -1, -1, 4484, 47, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, 514, -1, -1, -1, -1, -1, -1, -1, 174, 523, 524, 525, 526, 527, 528, 529, 530, 531, 80, -1, -1, -1, 536, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 210, -1, -1, -1, 4548, -1, -1, -1, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, 534, 4574, 4575, -1, -1, 4578, -1, -1, -1, -1, 198, -1, 4585, -1, -1, 203, -1, -1, 2765, 4592, 4593, -1, -1, -1, -1, -1, -1, -1, -1, 4602, -1, -1, -1, -1, -1, -1, -1, -1, 226, 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1403, 290, 4625, -1, -1, 294, -1, 4630, 4631, 4632, -1, -1, -1, 198, -1, 304, 254, -1, 203, 4642, -1, -1, -1, -1, 2821, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6373, -1, 326, -1, -1, -1, 226, 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297, 4683, -1, -1, 4686, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, 312, -1, -1, 315, -1, 368, -1, -1, 371, 372, -1, -1, -1, -1, -1, 4712, -1, -1, -1, -1, 6432, -1, -1, -1, -1, 725, -1, 1504, -1, -1, -1, -1, 4729, -1, -1, 207, 2907, 725, 297, -1, 403, -1, 27, -1, 216, 6457, -1, -1, 33, -1, 4747, 751, -1, 312, -1, -1, 315, -1, 230, -1, 2931, -1, -1, 751, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, -1, 4775, -1, -1, 4778, 33, -1, -1, -1, -1, -1, -1, 4786, 4787, -1, 4789, 78, 1571, -1, 408, 4794, 4795, -1, -1, -1, 4799, -1, -1, -1, -1, 4804, -1, -1, 4807, 4808, -1, 476, -1, -1, -1, 4814, -1, -1, -1, -1, -1, -1, 2995, -1, -1, 78, 2999, -1, -1, -1, -1, -1, -1, 1612, -1, -1, -1, 4836, -1, -1, -1, -1, -1, -1, 4843, -1, -1, 408, 135, 4848, -1, -1, 4851, 4852, -1, 142, -1, -1, -1, 146, 4859, -1, -1, 3036, -1, 3038, 1645, 3040, 3041, -1, -1, 4870, 3045, 3046, 3047, -1, 3049, 3050, 3051, 4878, -1, -1, 135, -1, -1, -1, -1, 174, -1, 142, -1, -1, 894, 146, -1, -1, -1, -1, -1, -1, 514, -1, -1, -1, 894, -1, 4905, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, 4918, -1, 174, 536, 210, 4923, -1, -1, -1, -1, -1, 3103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 514, -1, 3128, -1, 210, -1, 4958, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 536, 4975, 10, -1, -1, 13, 4980, -1, -1, 17, 18, 19, -1, 4987, -1, -1, -1, -1, -1, -1, -1, -1, 25, -1, -1, -1, -1, 30, 290, 5003, -1, -1, 294, -1, -1, -1, 5010, -1, -1, 47, -1, -1, 304, -1, -1, -1, 54, -1, 5022, -1, -1, -1, 314, -1, -1, -1, -1, -1, -1, -1, -1, 1038, 290, -1, 326, 68, 294, -1, -1, -1, -1, -1, 80, -1, -1, -1, 304, -1, 81, 5053, 1057, -1, -1, -1, -1, 1839, 314, -1, -1, -1, -1, 1068, 1057, -1, -1, 98, 1850, -1, 326, -1, -1, -1, -1, 1068, -1, 5079, 368, 1084, -1, 371, 372, -1, 1866, 116, -1, -1, -1, -1, -1, 1084, -1, 5095, -1, -1, -1, -1, 5100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 140, -1, -1, 368, 403, -1, 371, 372, 5119, -1, -1, -1, -1, 153, -1, 5126, -1, -1, -1, -1, -1, -1, 162, -1, -1, -1, -1, -1, -1, 1920, -1, -1, -1, -1, -1, 175, -1, -1, 403, -1, -1, 181, -1, -1, 1935, -1, -1, 1938, 1939, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, 5172, -1, 5174, -1, -1, -1, -1, 208, -1, -1, -1, -1, -1, -1, -1, -1, 476, 1969, 1970, -1, 226, 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5205, 681, -1, -1, -1, -1, -1, 687, -1, -1, -1, -1, -1, -1, -1, 254, -1, 476, -1, 699, -1, -1, -1, -1, -1, -1, 5231, -1, -1, -1, -1, -1, -1, 1241, 268, -1, 5241, -1, -1, 5244, -1, -1, 5247, 5248, 5249, 1241, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, 297, 3438, 13, -1, -1, -1, 17, 18, 19, 5272, 5273, -1, -1, 5276, -1, 312, -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, 5294, -1, -1, -1, 5298, 47, -1, -1, -1, -1, 5304, -1, 54, -1, 5308, -1, -1, -1, -1, -1, 5314, 5315, -1, -1, -1, 348, 349, -1, -1, 352, -1, -1, -1, -1, 5328, -1, -1, 5331, 80, 2113, -1, -1, 5336, -1, 5338, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 380, -1, -1, 383, -1, -1, -1, -1, -1, 5360, 390, -1, -1, -1, -1, -1, -1, 397, -1, -1, 400, -1, -1, 408, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5385, 5386, -1, -1, -1, -1, 420, 27, -1, -1, -1, 5396, -1, 33, 428, -1, -1, -1, -1, -1, -1, 435, -1, -1, 438, -1, -1, -1, -1, 443, -1, -1, -1, -1, -1, 8, 3595, 451, -1, -1, -1, 14, 15, -1, 458, -1, -1, 20, -1, 22, -1, 5436, -1, -1, -1, 28, 5441, 30, 78, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, 485, -1, -1, -1, -1, 49, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 226, 227, 514, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, 135, 1504, 5502, -1, -1, 5505, 254, 142, 3682, -1, -1, 146, -1, 1504, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5536, -1, -1, 174, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, 5553, -1, -1, -1, 5557, -1, 5559, -1, -1, -1, -1, 312, -1, 3740, 315, 1571, -1, -1, -1, -1, 5573, -1, 210, -1, -1, -1, -1, 1571, 5581, -1, -1, 5584, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5595, -1, -1, -1, -1, -1, -1, 5602, -1, -1, -1, -1, -1, -1, 1612, -1, -1, 200, -1, -1, -1, 204, -1, -1, -1, -1, 1612, -1, -1, 212, -1, -1, 215, -1, -1, 218, 219, -1, 221, -1, 223, 3810, -1, 226, -1, 228, -1, 1645, -1, -1, -1, -1, -1, -1, -1, 5650, -1, -1, -1, 1645, 290, 5656, -1, -1, 294, 408, 5661, 5662, -1, -1, -1, 5666, -1, -1, 304, -1, -1, 5672, 5673, 5674, -1, -1, -1, 10, 314, -1, 13, -1, -1, 3858, 17, 18, 19, 5688, -1, -1, 326, -1, -1, -1, -1, 3870, 3871, -1, -1, -1, -1, -1, -1, -1, 37, 3880, -1, 5708, -1, -1, 3885, -1, 3887, -1, 47, 5716, -1, -1, 5719, -1, -1, 54, -1, 1727, 1728, 1729, -1, -1, -1, -1, -1, -1, 368, -1, -1, 371, 372, -1, -1, -1, -1, -1, -1, 5744, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3933, -1, -1, -1, -1, -1, -1, 514, -1, 403, -1, -1, -1, -1, 5773, 5774, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 536, -1, -1, -1, -1, -1, 3968, 3969, -1, 5797, 5798, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5809, -1, -1, -1, -1, -1, -1, -1, -1, 5818, 5819, 5820, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5833, 5834, -1, 1839, 5837, -1, -1, -1, 476, 5842, -1, 5844, -1, 5846, 1850, 1839, -1, -1, -1, -1, 5853, -1, -1, -1, -1, -1, 1850, 5860, -1, -1, 1866, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, -1, 1866, -1, -1, -1, 5879, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 226, 227, -1, -1, -1, -1, 51, 64, -1, -1, 5904, -1, -1, 5907, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1920, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, 1920, -1, -1, 1935, -1, -1, 1938, 1939, 100, -1, -1, -1, -1, -1, -1, 1935, -1, -1, 1938, 1939, -1, -1, -1, -1, -1, -1, -1, -1, 2737, -1, -1, 5960, 2741, 2742, -1, -1, 297, 1969, 1970, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1969, 1970, 312, -1, -1, 315, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4173, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6011, -1, -1, -1, -1, 2796, -1, -1, -1, -1, -1, 2802, -1, -1, -1, 6026, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6036, 200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6050, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6064, -1, 2069, -1, -1, 2849, -1, -1, -1, -1, -1, 663, 408, 6077, -1, -1, 2083, -1, -1, 2086, -1, -1, 674, 250, -1, -1, 678, -1, -1, -1, -1, -1, -1, 685, 686, -1, -1, 689, -1, 691, 692, -1, -1, -1, -1, -1, 2113, -1, -1, -1, -1, -1, -1, -1, 706, 6119, -1, -1, 2113, -1, -1, -1, -1, 290, -1, 6129, -1, 294, -1, 51, -1, -1, 724, 6137, 6138, -1, -1, -1, -1, 6143, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 745, -1, 747, -1, -1, -1, 326, 327, -1, -1, -1, -1, 757, -1, -1, -1, -1, 6174, 6175, -1, -1, 6178, -1, -1, 10, 514, -1, 13, -1, -1, -1, 17, 18, 19, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, 790, -1, 536, 368, -1, -1, 37, 372, -1, -1, -1, -1, 377, 6215, -1, -1, 47, -1, -1, -1, -1, 386, -1, 54, -1, -1, -1, -1, -1, -1, 395, 4407, -1, -1, -1, 1712, -1, 6239, 403, -1, -1, -1, -1, 6245, -1, -1, -1, -1, -1, 80, -1, 416, -1, -1, -1, -1, -1, -1, -1, 4435, 425, 6263, -1, -1, -1, 430, -1, -1, 6270, -1, -1, -1, -1, -1, 4450, -1, -1, 3059, 4454, -1, 4456, 871, -1, -1, 6286, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 487, -1, -1, -1, 4502, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6342, -1, 4518, -1, -1, 6347, -1, 4523, -1, -1, 3132, 6353, -1, -1, 3136, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6366, -1, 956, 198, -1, -1, -1, 6373, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 226, 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1885, 6411, 6412, -1, -1, -1, -1, -1, 1893, -1, -1, -1, -1, -1, -1, 254, 1901, -1, 6428, -1, -1, -1, 6432, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1030, -1, -1, 6445, 6446, -1, 4622, -1, -1, 4625, -1, -1, -1, -1, -1, 6457, -1, 3239, -1, -1, -1, -1, -1, -1, -1, 1055, 297, -1, -1, 1946, -1, -1, 3254, -1, -1, -1, -1, 3259, -1, -1, 1070, 312, 1072, -1, 315, -1, -1, -1, -1, -1, -1, -1, 1082, -1, -1, -1, 1973, -1, -1, 1089, -1, -1, -1, -1, -1, -1, -1, -1, 3290, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4701, 4702, 4703, 4704, -1, 4706, 4707, 4708, 4709, 4710, -1, -1, -1, -1, -1, -1, -1, 1132, -1, 1134, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 725, -1, -1, -1, -1, 408, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2597, -1, -1, -1, -1, -1, 751, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1208, -1, 1210, -1, 1212, -1, 1214, -1, 1216, 1217, 1218, -1, -1, -1, -1, 1223, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1235, -1, -1, -1, -1, 4826, -1, 4828, -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, -1, 514, 17, 18, 19, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, 37, 536, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, 54, 25, -1, -1, -1, -1, 30, -1, -1, -1, -1, 2737, -1, -1, -1, 2741, 2742, -1, -1, -1, 894, -1, -1, 2737, -1, -1, 80, 2741, 2742, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3546, -1, -1, 3549, -1, 3551, -1, -1, -1, -1, 3556, -1, -1, -1, 81, 82, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2796, -1, -1, -1, 98, -1, 2802, -1, -1, -1, -1, -1, 2796, -1, 725, -1, -1, -1, 2802, -1, -1, -1, 116, 10, -1, 3598, 13, -1, -1, -1, 17, 18, 19, 3606, -1, -1, -1, -1, -1, -1, 751, -1, -1, -1, 1425, -1, 140, -1, -1, -1, 37, -1, -1, 2849, -1, -1, -1, -1, 3631, 153, 47, -1, -1, -1, -1, 2849, -1, 54, 162, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, -1, 175, -1, -1, 5051, 5052, -1, 181, -1, -1, -1, -1, -1, 80, -1, -1, -1, 5064, -1, 5066, 5067, 5068, 226, 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1057, 208, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1068, -1, 10, -1, -1, 13, 254, -1, -1, 17, 18, 19, -1, 3710, -1, 3712, 1084, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 246, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, 1545, 5132, -1, -1, -1, -1, 54, -1, -1, 297, 268, -1, -1, -1, -1, -1, -1, -1, -1, 894, -1, -1, -1, -1, 312, -1, -1, 315, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, 5171, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3027, -1, -1, -1, 3808, 1617, -1, -1, 226, 227, -1, -1, -1, -1, -1, -1, 5214, -1, -1, -1, -1, -1, -1, 348, 349, -1, -1, 352, -1, -1, -1, -1, 3059, -1, -1, -1, 254, -1, -1, -1, 51, -1, -1, -1, 3059, -1, -1, -1, 3852, -1, -1, -1, -1, 408, -1, 380, -1, -1, 383, -1, -1, -1, -1, -1, -1, 390, 1241, -1, -1, -1, -1, -1, 397, -1, -1, 400, 3880, -1, -1, 297, -1, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, -1, -1, -1, 312, 420, -1, 315, -1, -1, -1, -1, -1, 428, -1, 3132, -1, -1, -1, 3136, 435, 226, 227, 438, -1, 1057, -1, 3132, 443, -1, -1, 3136, -1, -1, -1, -1, 1068, -1, -1, -1, -1, -1, -1, 458, -1, -1, -1, -1, -1, 254, -1, -1, 1084, -1, 3948, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 514, 485, -1, -1, -1, -1, -1, 3970, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 536, 297, -1, -1, -1, -1, 5385, 3992, -1, 408, -1, -1, -1, -1, -1, -1, 312, -1, -1, 315, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1835, 3239, -1, -1, 3254, -1, -1, -1, 2730, 3259, 5431, -1, -1, -1, -1, -1, 3254, -1, -1, 5440, -1, 3259, -1, -1, -1, -1, 2748, -1, -1, -1, 2752, -1, -1, -1, 2756, 1870, -1, -1, -1, -1, 3290, -1, -1, -1, -1, 51, -1, 4074, -1, -1, -1, -1, 3290, -1, -1, -1, -1, -1, 2780, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, -1, -1, 514, -1, -1, 1241, -1, -1, -1, -1, 1916, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, 2814, -1, -1, 536, -1, -1, -1, -1, 4127, 1936, -1, -1, -1, -1, 1504, -1, -1, -1, -1, -1, 2834, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4152, -1, 1962, -1, 1964, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1979, -1, 1981, -1, -1, -1, 2872, -1, 1987, -1, 1989, -1, 1991, -1, 1993, -1, 1995, -1, -1, -1, 1999, -1, -1, -1, -1, -1, -1, -1, -1, 1571, -1, -1, 514, 2899, -1, -1, -1, -1, -1, 2905, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, 2919, 536, -1, -1, 2036, -1, -1, 2926, -1, -1, 2929, -1, -1, 725, -1, -1, 2935, 1612, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2955, -1, -1, 751, -1, -1, 2961, -1, -1, -1, -1, -1, -1, 2968, 1645, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2982, -1, -1, -1, -1, -1, -1, 5688, -1, -1, -1, 5692, -1, -1, 2996, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3007, 4313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3546, -1, -1, 3549, -1, 3551, -1, -1, -1, -1, 3556, -1, 3546, -1, -1, 3549, -1, 3551, -1, -1, -1, -1, 3556, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1504, -1, -1, -1, -1, -1, -1, -1, -1, 3598, -1, -1, -1, -1, -1, -1, -1, 3606, -1, -1, -1, 3598, -1, -1, -1, -1, -1, -1, -1, 3606, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 894, 4407, 3631, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, 3631, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, 1571, -1, 4435, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, 1839, -1, -1, -1, -1, -1, 1612, -1, -1, -1, -1, 1850, -1, -1, -1, -1, -1, -1, -1, 3710, 80, 3712, -1, -1, -1, -1, -1, 1866, -1, -1, -1, 3710, -1, 3712, -1, -1, -1, -1, -1, 1645, -1, -1, -1, -1, -1, 5907, -1, -1, -1, 5911, 725, 5913, -1, -1, -1, 5917, 5918, -1, -1, 3222, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 751, -1, 3241, -1, -1, 1920, -1, -1, -1, 3248, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, 1935, -1, -1, 1938, 1939, 1057, -1, -1, -1, -1, -1, -1, -1, -1, 4578, -1, 1068, -1, -1, -1, -1, 3808, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1084, 3808, 1969, 1970, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, 3837, -1, -1, -1, -1, -1, 3843, -1, -1, -1, -1, 4625, -1, -1, -1, 3852, 4630, -1, -1, -1, 226, 227, -1, -1, -1, -1, -1, 3852, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3880, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, 3880, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 894, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1839, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, 1850, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, 315, -1, 3948, -1, -1, 1866, -1, -1, -1, -1, -1, -1, -1, -1, 3948, -1, -1, -1, -1, 2113, -1, -1, -1, 725, 3970, -1, -1, -1, -1, -1, 1241, -1, -1, -1, -1, -1, 3970, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3992, -1, -1, 751, -1, -1, -1, -1, -1, -1, -1, -1, 3992, 1920, -1, -1, -1, -1, -1, -1, 4789, -1, -1, -1, -1, -1, -1, -1, 1935, -1, -1, 1938, 1939, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, -1, -1, -1, -1, 6215, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1969, 1970, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1057, 4074, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1068, -1, 4074, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1084, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3592, -1, -1, -1, -1, -1, -1, 4127, 4905, -1, -1, -1, -1, -1, -1, -1, -1, -1, 894, 4127, -1, -1, -1, -1, -1, 514, 2731, 2732, -1, -1, -1, -1, 4152, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, 4152, 2750, 2751, 536, 2753, 2754, -1, -1, -1, 2758, 2759, -1, -1, -1, -1, -1, -1, 4958, -1, -1, -1, -1, -1, -1, 2773, -1, -1, -1, 2777, -1, -1, -1, 2781, 2782, 2113, -1, 2785, 2786, 6373, 4980, -1, -1, -1, 2792, -1, 6380, -1, -1, -1, 6384, -1, -1, -1, -1, -1, 2804, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3701, -1, 2816, -1, -1, -1, -1, 2821, -1, -1, 1504, -1, -1, -1, -1, -1, -1, -1, 6418, -1, -1, -1, 2836, -1, -1, -1, 2840, -1, 1241, -1, -1, -1, 6432, -1, -1, -1, -1, 2851, -1, -1, 2854, -1, 2856, 2857, 2858, -1, -1, 5053, -1, 2863, 2864, -1, -1, -1, -1, -1, -1, 6457, -1, 2873, 6460, -1, -1, -1, -1, 2879, -1, -1, -1, 2883, -1, -1, 1057, -1, -1, -1, -1, 1571, -1, -1, -1, 2895, 2896, 1068, 4313, -1, 2900, -1, -1, -1, -1, -1, 2906, 2907, -1, -1, 4313, -1, -1, 1084, -1, -1, -1, -1, -1, -1, 2920, -1, -1, 2923, -1, -1, -1, -1, -1, -1, 2930, 2931, 1612, -1, -1, -1, 2936, -1, -1, -1, -1, -1, -1, -1, -1, 3832, -1, -1, 2948, -1, -1, 2951, -1, -1, -1, -1, 2956, -1, -1, -1, -1, -1, 2962, 2963, -1, 1645, -1, -1, -1, -1, 2970, -1, -1, -1, 2974, -1, -1, -1, 2978, 2979, 2980, 2981, 5174, 2983, -1, -1, -1, -1, -1, -1, -1, -1, 4407, -1, -1, -1, -1, 2997, 2998, -1, 3000, -1, -1, -1, 4407, -1, -1, -1, -1, -1, -1, 3011, 3012, 3013, -1, -1, -1, -1, -1, -1, 4435, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4435, -1, -1, -1, -1, -1, 725, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 751, -1, -1, -1, 3068, -1, 1241, -1, -1, -1, -1, -1, 3076, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3095, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1504, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, 5314, -1, 4011, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, 4030, -1, 3145, -1, 4034, 47, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, 1839, -1, -1, -1, 4578, 3164, -1, 3166, -1, -1, -1, 1850, -1, 1571, -1, 2737, 4578, -1, -1, 2741, 2742, -1, 80, -1, -1, -1, -1, 1866, -1, -1, -1, -1, -1, -1, 5385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 894, -1, -1, 4625, -1, -1, 1612, -1, 4630, -1, -1, -1, -1, -1, -1, 4625, -1, -1, -1, -1, 4630, -1, -1, -1, -1, -1, 2796, -1, -1, -1, -1, -1, 2802, 1920, -1, -1, -1, -1, -1, 1645, -1, -1, -1, -1, -1, -1, -1, -1, 1935, -1, -1, 1938, 1939, -1, 3261, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2849, -1, -1, 1969, 1970, -1, -1, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, 5505, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 226, 227, -1, -1, -1, -1, 1504, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1057, -1, -1, -1, 4789, -1, -1, -1, -1, -1, -1, 1068, -1, -1, -1, -1, 4789, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1084, 297, -1, 1571, -1, -1, -1, -1, -1, -1, 2737, -1, -1, -1, 2741, 2742, 312, -1, -1, 315, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2113, -1, -1, -1, -1, -1, -1, 1839, 1612, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1850, 4339, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5656, -1, 2796, 1866, -1, 5661, 5662, -1, 2802, -1, 1645, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4905, -1, -1, -1, -1, -1, 3059, -1, -1, -1, -1, -1, 4905, -1, -1, -1, -1, -1, -1, 408, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2849, -1, 1920, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1935, -1, -1, 1938, 1939, -1, -1, 4958, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1241, 4958, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4980, -1, -1, -1, 3132, 1969, 1970, -1, 3136, -1, -1, -1, 4980, -1, -1, -1, -1, 5774, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3593, 4481, -1, -1, 4484, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3610, -1, -1, -1, 3614, 514, -1, -1, -1, 3619, 3620, 3621, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 536, 5053, -1, -1, 3641, -1, -1, -1, 5837, -1, -1, -1, -1, 5053, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3664, 3665, 3666, 3667, 1839, -1, -1, -1, -1, -1, -1, -1, 3239, -1, -1, 1850, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3254, -1, -1, -1, 1866, 3259, -1, 4585, -1, -1, -1, 3702, -1, 3704, 3705, 3706, -1, -1, -1, -1, -1, -1, -1, 2113, 4602, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3290, -1, 3059, -1, -1, -1, -1, 27, -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, 40, -1, 1920, -1, -1, -1, -1, -1, -1, -1, 5172, -1, 5174, -1, -1, -1, -1, 1935, -1, -1, 1938, 1939, 62, -1, 5174, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4683, -1, 1969, 1970, -1, -1, 3132, -1, -1, -1, 3136, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1504, -1, -1, -1, 114, -1, -1, 3824, -1, -1, -1, -1, -1, -1, -1, -1, 3833, -1, -1, -1, -1, -1, -1, -1, -1, 135, -1, -1, -1, -1, -1, -1, 142, -1, -1, -1, 146, -1, -1, -1, -1, -1, 3859, 3860, -1, -1, -1, 3864, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 174, -1, -1, 1571, -1, 3886, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5314, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3239, -1, 5314, -1, 206, -1, -1, -1, 210, -1, -1, -1, -1, -1, -1, 3254, 1612, -1, -1, -1, 3259, -1, -1, -1, -1, -1, -1, -1, -1, 3938, -1, -1, -1, 2113, 3943, -1, -1, -1, -1, -1, 3949, -1, -1, -1, -1, -1, -1, -1, -1, 1645, -1, 3290, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5385, 264, -1, -1, -1, -1, 269, -1, -1, 3979, -1, 274, 5385, 3546, -1, -1, 3549, -1, 3551, -1, -1, -1, -1, 3556, -1, -1, -1, 290, -1, -1, -1, 294, -1, -1, -1, -1, -1, -1, 4008, -1, 4010, 304, -1, -1, -1, -1, -1, -1, -1, 10, -1, 314, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, 325, 326, -1, 3598, -1, -1, -1, -1, -1, -1, -1, 3606, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, 2737, -1, -1, -1, 2741, 2742, 54, -1, -1, -1, -1, 3631, -1, -1, -1, -1, -1, -1, 368, -1, -1, 371, 372, 373, -1, -1, -1, -1, -1, -1, -1, 4975, 80, 5505, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4987, -1, 5505, -1, 397, -1, -1, -1, -1, -1, 403, -1, -1, -1, -1, -1, 2796, -1, -1, -1, -1, -1, 2802, -1, -1, 418, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3710, -1, 3712, -1, -1, 1839, -1, -1, 6347, -1, -1, -1, -1, -1, -1, -1, 1850, -1, -1, -1, -1, -1, 2849, -1, -1, -1, -1, -1, -1, 469, -1, -1, 1866, -1, -1, -1, 476, -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, 203, -1, -1, -1, 3546, -1, -1, 3549, -1, 3551, -1, -1, -1, -1, 3556, -1, -1, -1, -1, -1, -1, 1920, -1, 226, 227, -1, -1, -1, -1, 5656, -1, -1, -1, 3808, 5661, 5662, 1935, -1, -1, 1938, 1939, 5656, -1, -1, -1, -1, 5661, 5662, -1, -1, -1, 254, -1, -1, -1, -1, 3598, -1, -1, -1, -1, -1, -1, -1, 3606, -1, -1, -1, -1, -1, 1969, 1970, -1, -1, -1, -1, -1, 3852, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3631, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3880, 5205, -1, -1, 312, -1, -1, 315, 4325, -1, 4327, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2737, -1, 4340, -1, 2741, 2742, -1, -1, -1, -1, -1, -1, -1, -1, 4352, -1, -1, -1, 4356, -1, 5773, 5774, -1, -1, -1, -1, -1, -1, -1, 4367, -1, -1, -1, 5774, -1, -1, -1, -1, -1, -1, -1, 3059, 3710, -1, 3712, -1, -1, 3948, 4386, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2796, -1, -1, -1, -1, -1, 2802, 4404, -1, -1, 3970, -1, -1, -1, -1, 4412, -1, -1, -1, -1, 408, -1, -1, -1, -1, 5837, -1, -1, -1, 2113, -1, -1, 3992, -1, -1, -1, -1, 5837, -1, -1, 4437, -1, -1, -1, 4441, -1, -1, -1, -1, -1, -1, -1, 5336, 2849, 5338, 3132, -1, -1, -1, 3136, 4457, 4458, 4459, 4460, -1, -1, -1, -1, -1, -1, 4467, 4468, 4469, 4470, -1, -1, -1, -1, -1, 4476, 4477, 3808, -1, -1, -1, 4482, 4483, -1, 4485, 4486, 4487, 4488, 4489, 4490, 4491, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4501, -1, -1, -1, 4505, 4506, 4507, 4508, -1, -1, 4074, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3852, 514, -1, -1, -1, -1, -1, 4529, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 536, -1, 4547, -1, -1, 3880, -1, -1, -1, -1, -1, -1, -1, -1, 3239, -1, -1, -1, -1, 4127, -1, 2737, -1, -1, -1, 2741, 2742, -1, -1, 3254, -1, -1, 10, -1, 3259, 13, -1, -1, -1, 17, 18, 19, -1, -1, 4152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, 3290, -1, -1, -1, 47, -1, -1, -1, 3948, -1, -1, 54, -1, 4623, -1, 2796, -1, -1, -1, -1, -1, 2802, -1, -1, -1, -1, -1, -1, -1, -1, 3970, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, 4656, -1, -1, -1, 3059, 10, 3992, 4663, 13, 4665, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, 2849, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, 4693, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, 3132, -1, -1, -1, 3136, -1, -1, 10, -1, -1, 13, 4074, -1, -1, 17, 18, 19, 4313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 198, -1, 37, -1, -1, 203, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, 226, 227, -1, -1, 4127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, 4152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3239, -1, -1, -1, 4407, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, 3254, -1, -1, -1, -1, 3259, -1, -1, -1, 297, -1, 3546, -1, -1, 3549, -1, 3551, 4435, -1, -1, -1, 3556, 226, 227, 312, -1, -1, 315, -1, -1, -1, -1, -1, 3059, -1, -1, 3290, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, 4906, 4907, 4908, -1, -1, -1, 4912, 4913, 4914, 4915, -1, -1, 3598, 4919, -1, -1, -1, -1, -1, -1, 3606, -1, 198, -1, -1, -1, 6347, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6347, -1, -1, -1, 297, -1, -1, 3631, -1, -1, -1, -1, 226, 227, -1, -1, -1, 3132, -1, 312, -1, 3136, 315, -1, -1, -1, 4970, 4971, 4972, 4973, 4974, 408, 4976, 4977, -1, -1, -1, -1, -1, 4313, 254, -1, -1, -1, 4988, 4989, -1, -1, -1, -1, -1, -1, 6411, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4578, -1, -1, -1, -1, -1, -1, -1, 5023, -1, -1, -1, 297, -1, -1, 3710, -1, 3712, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, 315, -1, -1, -1, -1, 2737, -1, -1, -1, 2741, 2742, -1, -1, -1, 408, -1, -1, 4625, -1, -1, -1, -1, 4630, 3239, -1, -1, -1, -1, -1, -1, -1, -1, 4407, -1, -1, -1, 514, -1, 3254, -1, -1, -1, -1, 3259, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 536, -1, 4435, -1, -1, -1, 2796, -1, -1, -1, -1, -1, 2802, -1, -1, -1, 3290, -1, -1, -1, -1, -1, 5125, -1, -1, 3808, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, -1, -1, -1, -1, -1, -1, -1, -1, 3546, -1, -1, 3549, -1, 3551, -1, -1, -1, -1, 3556, -1, -1, -1, -1, 2849, 6050, -1, 514, -1, -1, -1, -1, -1, -1, 3852, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 536, -1, -1, 5190, -1, -1, -1, -1, -1, -1, -1, -1, 3598, 3880, -1, -1, -1, -1, -1, -1, 3606, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5222, -1, -1, -1, 4789, -1, -1, -1, -1, -1, 3631, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 514, -1, -1, -1, 4578, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 536, -1, 3948, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3970, -1, -1, -1, 207, 4625, -1, -1, -1, -1, 4630, -1, -1, 216, -1, -1, -1, -1, -1, -1, -1, 3710, 3992, 3712, -1, -1, -1, 230, -1, -1, -1, 5321, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, 4905, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, 3059, -1, 47, 3546, -1, -1, 3549, -1, 3551, 54, -1, -1, -1, 3556, -1, 5387, -1, -1, -1, -1, -1, -1, 4074, 4958, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5406, 80, -1, 3808, -1, -1, 5412, 5413, -1, -1, -1, 4980, -1, -1, -1, -1, 5422, -1, -1, -1, -1, 3598, -1, 5429, -1, -1, -1, -1, -1, 3606, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3132, -1, 4127, -1, 3136, -1, -1, -1, 3852, -1, -1, -1, -1, -1, 4789, 3631, -1, -1, -1, 5464, 5465, -1, -1, -1, -1, -1, -1, 4152, -1, -1, -1, -1, 5477, -1, 5479, -1, 3880, -1, -1, -1, -1, -1, -1, -1, -1, 5053, -1, -1, -1, 5494, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5519, -1, -1, -1, -1, -1, 198, -1, 5527, -1, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, 3710, -1, 3712, -1, -1, -1, -1, -1, -1, -1, 3948, -1, -1, 3239, 226, 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3254, -1, -1, -1, 3970, 3259, -1, -1, 4905, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3992, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3290, -1, -1, -1, -1, -1, -1, -1, 5174, -1, -1, -1, -1, -1, 5617, -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, 4958, -1, -1, 5631, -1, 4313, -1, -1, -1, 3808, -1, 312, -1, -1, 315, -1, -1, -1, -1, -1, -1, -1, 4980, -1, -1, -1, -1, 5655, -1, -1, 206, 207, -1, -1, -1, -1, -1, -1, 214, -1, 216, 217, -1, -1, -1, -1, -1, 4074, -1, -1, -1, -1, -1, 3852, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, -1, -1, -1, -1, -1, 33, -1, 3880, -1, -1, -1, -1, 40, -1, -1, -1, -1, -1, -1, -1, 5722, 5053, -1, -1, -1, 4407, 4127, -1, -1, -1, -1, -1, 208, 408, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, 662, -1, 5314, 78, 4152, -1, 4435, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 681, -1, -1, -1, -1, -1, 687, -1, -1, 3948, -1, -1, -1, -1, -1, -1, -1, -1, 699, -1, 114, -1, -1, -1, 5792, -1, -1, -1, -1, -1, -1, 3970, -1, -1, 715, -1, -1, -1, -1, -1, -1, 135, -1, -1, -1, -1, -1, -1, 142, 730, -1, -1, 146, 3992, 5385, -1, -1, 738, 5826, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 752, -1, 514, -1, -1, 5174, -1, -1, -1, 174, 762, 523, 524, 525, 526, 527, 528, 529, 530, 531, 3546, -1, -1, 3549, 536, 3551, -1, -1, 5867, -1, 3556, 198, 199, -1, -1, 202, -1, -1, -1, -1, -1, 206, -1, -1, -1, 210, -1, -1, -1, -1, -1, -1, 5891, -1, -1, 222, -1, -1, -1, 4578, -1, -1, 229, 815, 4074, -1, -1, -1, -1, -1, -1, -1, 3598, -1, -1, 4313, -1, -1, -1, -1, 3606, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 843, -1, -1, -1, -1, -1, -1, -1, 264, -1, -1, -1, 5505, 269, 3631, 4625, -1, -1, 274, -1, 4630, 5951, -1, -1, -1, 868, 4127, -1, -1, -1, -1, -1, -1, -1, 290, -1, -1, -1, 294, -1, -1, -1, -1, -1, -1, -1, -1, -1, 304, -1, -1, 4152, -1, -1, 5314, -1, -1, -1, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 325, 326, -1, -1, -1, 10, -1, -1, 13, 4407, -1, -1, 17, 18, 19, -1, -1, -1, 930, -1, -1, -1, -1, -1, 3710, -1, 3712, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, 4435, -1, -1, -1, -1, 47, 368, -1, -1, 371, 372, 373, 54, -1, -1, -1, -1, -1, -1, 5385, -1, -1, -1, -1, -1, -1, -1, 6063, -1, -1, -1, -1, -1, -1, -1, 397, -1, -1, 80, -1, -1, 403, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 418, 5656, -1, -1, 6096, -1, 5661, 5662, -1, -1, -1, -1, -1, -1, -1, 6107, -1, 4789, -1, -1, -1, -1, 662, -1, -1, -1, -1, -1, -1, 3808, -1, -1, -1, -1, -1, 1040, -1, -1, -1, -1, -1, 681, 1047, -1, -1, -1, -1, 687, -1, -1, 4313, 469, -1, -1, -1, -1, -1, -1, 476, 699, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3852, -1, 715, -1, -1, -1, -1, -1, -1, -1, 5505, -1, -1, -1, 4578, -1, 729, 730, -1, -1, -1, -1, -1, 736, 663, 738, 739, 198, 3880, -1, 669, -1, 203, -1, -1, -1, -1, -1, -1, 752, -1, -1, -1, -1, -1, -1, 5774, -1, -1, 762, -1, -1, -1, -1, -1, 226, 227, -1, -1, -1, 4905, 4625, -1, -1, 6229, -1, 4630, -1, -1, -1, -1, 4407, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1171, -1, -1, 3948, -1, -1, 4435, -1, -1, 815, -1, -1, -1, -1, -1, -1, 5837, -1, -1, -1, 4958, -1, -1, -1, -1, 3970, -1, -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, 843, -1, -1, -1, -1, 4980, -1, -1, -1, -1, 3992, 312, -1, -1, 315, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1232, 868, -1, -1, -1, -1, -1, 5656, -1, -1, -1, 1243, 5661, 5662, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 671, -1, 673, -1, 1260, 676, -1, -1, -1, 1265, -1, -1, -1, -1, -1, -1, -1, -1, -1, 690, -1, -1, -1, 840, -1, 696, -1, -1, -1, -1, 5053, -1, -1, -1, -1, -1, -1, -1, -1, 930, -1, -1, 859, -1, 4074, -1, -1, 4789, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, -1, -1, -1, -1, 4578, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6435, -1, -1, -1, -1, 4127, 37, -1, -1, 5774, 41, -1, -1, -1, -1, -1, 47, -1, -1, 4625, -1, -1, 931, 54, 4630, -1, -1, -1, -1, -1, 4152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, 1400, -1, -1, -1, -1, 1040, -1, 5174, 1408, 1409, -1, -1, 1047, -1, -1, -1, -1, 978, -1, 4905, 5837, 514, -1, 1058, -1, -1, -1, 1062, -1, 1064, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 536, -1, -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1461, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4958, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4980, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, 198, -1, -1, -1, 54, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4789, 1093, -1, -1, -1, 1171, -1, -1, 4313, -1, -1, -1, 226, 227, 80, -1, 5314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1122, 1123, 1124, -1, -1, -1, 5053, 983, 984, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1232, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1243, -1, -1, -1, -1, -1, 297, -1, -1, -1, 5385, -1, -1, -1, -1, -1, -1, 1260, -1, -1, -1, 312, 1265, -1, 315, 4407, -1, -1, -1, -1, 173, 1054, -1, -1, -1, -1, 179, -1, -1, 4905, -1, -1, -1, -1, -1, -1, 1069, -1, -1, -1, -1, -1, -1, 4435, -1, 198, -1, -1, -1, -1, 203, -1, 1231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1100, 1101, -1, 5174, -1, -1, 226, 227, -1, -1, -1, -1, 6347, 1259, -1, 4958, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1126, 1712, -1, -1, -1, -1, -1, -1, 254, -1, -1, 4980, -1, -1, 408, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5505, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1166, 1167, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297, -1, -1, 1400, -1, -1, -1, -1, -1, -1, -1, 1408, 1409, -1, -1, 312, -1, -1, 315, -1, -1, -1, -1, -1, -1, -1, -1, -1, 473, -1, -1, -1, -1, 5053, -1, -1, -1, -1, -1, -1, -1, -1, 4578, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1461, 1827, 5314, -1, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, 4625, -1, 1414, -1, -1, 4630, -1, -1, -1, -1, -1, 1862, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1885, -1, -1, -1, 5656, -1, -1, -1, 1893, 5661, 5662, -1, -1, -1, 5385, -1, 1901, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5174, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6347, -1, -1, 1494, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1945, 1946, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1959, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1972, 1973, -1, -1, -1, -1, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5774, -1, -1, -1, -1, -1, -1, -1, 4789, 1577, -1, -1, 5505, -1, -1, -1, -1, -1, 1586, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 5314, 1618, -1, -1, -1, -1, -1, 1624, 1625, 47, -1, 1628, -1, -1, 5837, -1, 54, -1, -1, -1, -1, 1712, -1, -1, 1641, -1, -1, 1644, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5385, -1, -1, -1, 4905, -1, -1, 2134, -1, -1, -1, -1, -1, -1, 1702, -1, -1, -1, -1, -1, -1, -1, 1564, -1, -1, -1, -1, -1, 1716, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5656, -1, -1, -1, 1589, 5661, 5662, -1, -1, -1, -1, -1, -1, -1, 4958, -1, -1, -1, -1, -1, -1, -1, 1827, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, 4980, 13, -1, -1, -1, 17, 18, 19, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, -1, -1, -1, 1862, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, 226, 227, -1, 5505, 54, -1, 1885, -1, -1, 1668, -1, -1, -1, -1, 1893, -1, -1, -1, 837, 838, -1, 1826, 1901, -1, -1, -1, -1, -1, 254, -1, 80, -1, 1837, -1, -1, 5053, -1, -1, -1, 1698, 1699, 1700, 1701, -1, 5774, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1942, 1943, -1, 1945, 1946, -1, -1, -1, 297, -1, -1, 1879, 1880, -1, -1, 1957, -1, 1959, 1960, -1, -1, -1, -1, 312, -1, -1, 315, -1, -1, -1, 1972, 1973, -1, -1, -1, 917, 1904, -1, -1, -1, -1, -1, -1, 1911, 5837, -1, -1, -1, -1, -1, -1, -1, -1, 342, -1, -1, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, -1, -1, 2010, -1, -1, -1, 2014, 2015, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, 5656, -1, 5174, -1, -1, 5661, 5662, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 226, 227, -1, 1984, -1, -1, 408, -1, -1, -1, 1845, 1846, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 427, 1861, -1, 254, -1, -1, -1, -1, -1, -1, -1, 2017, 2018, -1, -1, -1, -1, -1, 1038, 1039, -1, -1, -1, -1, -1, -1, -1, -1, 2034, -1, -1, 2037, -1, -1, -1, 1895, 1896, 1897, 1898, -1, -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, 2134, -1, -1, -1, -1, -1, -1, 312, -1, -1, 315, -1, -1, -1, -1, -1, -1, 5774, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 514, -1, 340, -1, -1, -1, -1, -1, 5314, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1976, -1, -1, -1, -1, -1, 1982, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5837, 6347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, -1, -1, -1, -1, -1, -1, -1, -1, 5385, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, 40, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, 2675, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1277, -1, -1, -1, -1, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 2730, 5505, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1319, -1, -1, -1, 2748, -1, -1, -1, 2752, -1, -1, -1, 2756, 2172, -1, 10, -1, -1, 13, -1, -1, 2765, 17, 18, 19, -1, -1, -1, -1, 1348, 1349, 1350, -1, 1352, -1, -1, 2780, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, 1373, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, 2814, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, 2834, 2835, -1, -1, 226, 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6347, -1, -1, -1, -1, 254, -1, -1, -1, -1, 2871, 2872, -1, -1, 2875, -1, -1, -1, -1, -1, -1, 5656, -1, -1, -1, -1, 5661, 5662, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2899, -1, 2901, -1, 1478, -1, 2905, -1, 1482, 1483, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2919, -1, -1, -1, -1, 312, -1, 2926, 315, -1, 2929, -1, -1, -1, -1, -1, 2935, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, 2955, -1, -1, -1, -1, -1, 2961, -1, -1, -1, -1, -1, -1, 2968, -1, -1, -1, -1, -1, -1, 226, 227, -1, -1, -1, -1, -1, 2982, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2996, -1, -1, -1, 5774, 3001, -1, 254, -1, -1, -1, 3007, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2593, -1, -1, -1, -1, -1, -1, -1, 2675, -1, -1, 2604, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, 5837, 315, -1, -1, 3067, -1, -1, -1, -1, -1, -1, -1, 2636, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6347, -1, -1, -1, -1, -1, 2730, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2748, -1, -1, -1, 2752, -1, -1, -1, 2756, 2683, 2684, -1, -1, 514, -1, -1, -1, 2765, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, 2780, -1, -1, -1, -1, -1, -1, 1727, 1728, 1729, -1, 2717, 408, -1, -1, -1, -1, 2797, -1, 2799, 2800, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, 2814, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2834, 2835, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, 54, 3222, -1, 3224, -1, 2641, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2871, 2872, -1, -1, 2875, 3241, -1, -1, -1, -1, -1, 80, 3248, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 513, 514, 2899, -1, 2901, -1, -1, -1, 2905, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, 2919, -1, -1, -1, -1, -1, -1, 2926, 2853, -1, 2929, -1, -1, -1, -1, -1, 2935, -1, -1, -1, -1, -1, -1, 2868, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2955, -1, -1, -1, -1, -1, 2961, -1, -1, 2890, -1, -1, -1, 2968, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3346, 2982, -1, -1, -1, -1, 3352, -1, -1, -1, -1, -1, -1, -1, -1, 2996, -1, -1, -1, 198, 3001, -1, -1, -1, 203, -1, 3007, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2803, -1, -1, -1, -1, 226, 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2976, 2977, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3067, -1, -1, -1, -1, -1, 3438, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, 2056, 315, -1, -1, -1, -1, -1, -1, -1, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, -1, -1, 335, -1, 2079, -1, 2081, -1, 2083, -1, -1, 2086, 2087, 2088, -1, -1, -1, 3078, -1, 2094, -1, -1, 2097, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2947, -1, -1, 2950, -1, -1, -1, 2114, 2115, 2116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2132, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3571, 3572, 6347, -1, 408, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3222, -1, 3224, -1, -1, 3592, -1, -1, 3595, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3241, -1, -1, -1, -1, -1, -1, 3248, -1, -1, -1, -1, -1, -1, 3255, -1, 3257, 3258, 3039, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3052, -1, -1, -1, -1, -1, -1, -1, 3060, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3676, 3677, 3678, -1, -1, 514, -1, -1, 3099, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, 3701, -1, -1, 2279, 3120, -1, -1, -1, -1, -1, 3346, -1, -1, -1, -1, -1, 3352, -1, -1, 3720, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3742, -1, -1, -1, -1, -1, 3163, 37, 3165, -1, 40, -1, -1, -1, -1, -1, 2333, 47, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, 1365, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, 3438, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, 2389, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3832, -1, -1, -1, 1422, -1, 3253, -1, -1, -1, -1, -1, 80, 3260, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3424, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3879, -1, -1, -1, -1, 3445, 3885, -1, 3887, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, 3900, 13, 3902, -1, -1, 17, 18, 19, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, 40, -1, -1, -1, -1, -1, -1, 47, 3571, 3572, 226, 227, -1, -1, 54, 179, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, 3592, -1, -1, 3595, -1, 198, -1, -1, -1, 254, 203, 80, 3969, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, 54, -1, 226, 227, -1, -1, -1, -1, -1, -1, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, -1, 2583, 297, -1, 4011, -1, -1, 80, -1, -1, -1, 254, 2594, -1, -1, 2597, -1, 312, -1, -1, 315, -1, -1, 4030, -1, -1, -1, 4034, -1, -1, -1, -1, -1, -1, 3676, 3677, 3678, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4055, -1, -1, -1, -1, -1, 297, -1, 2638, -1, -1, 3701, 2642, -1, -1, 2645, -1, 2647, -1, -1, 2650, 312, -1, -1, 315, -1, -1, -1, -1, -1, 3720, 198, -1, -1, -1, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3742, -1, -1, -1, -1, -1, -1, 226, 227, -1, -1, -1, -1, 408, -1, -1, -1, -1, -1, -1, -1, 2703, 2704, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, -1, -1, 254, -1, -1, -1, -1, 1733, -1, -1, -1, 1737, -1, -1, -1, -1, -1, 3718, -1, -1, 226, 227, -1, -1, 4164, -1, -1, 3728, -1, -1, -1, -1, 408, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297, 3601, 3602, 254, -1, -1, -1, -1, -1, -1, -1, -1, 3832, -1, -1, 312, -1, -1, 315, -1, -1, -1, -1, 2783, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 514, -1, -1, -1, -1, 297, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 3879, -1, 312, -1, -1, 315, 3885, -1, 3887, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3900, -1, 3902, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 408, -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, -1, -1, -1, 3891, 3892, 3893, -1, 3969, -1, -1, -1, -1, 4339, -1, 37, 408, -1, 40, -1, -1, 3908, -1, -1, -1, 47, 10, -1, -1, 13, -1, -1, 54, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4011, -1, 444, 37, 3941, 3942, -1, -1, 80, 3946, -1, -1, -1, 47, -1, -1, -1, -1, -1, 4030, 54, -1, -1, 4034, -1, 4401, 514, -1, -1, -1, 4406, -1, 4408, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 4055, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4434, -1, -1, -1, -1, 3854, -1, -1, -1, -1, -1, -1, -1, -1, 514, -1, 3025, 3026, 3027, -1, -1, -1, 3031, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, 2054, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4481, -1, 3058, 4484, -1, -1, -1, -1, -1, -1, 4052, -1, -1, 2080, -1, -1, -1, 2084, -1, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, -1, -1, -1, 2099, 2100, 2101, -1, 2103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4164, 226, 227, -1, -1, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, 254, -1, 17, 18, 19, -1, -1, -1, -1, -1, 226, 227, -1, -1, -1, -1, 4574, 4575, -1, -1, -1, -1, 37, -1, -1, -1, -1, 4585, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, 254, 54, -1, 4014, -1, 297, 4602, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, 315, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, 315, 4219, 4220, 4221, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 332, -1, -1, -1, -1, -1, -1, -1, -1, 4683, -1, -1, 4686, -1, -1, -1, -1, -1, 3267, -1, -1, -1, -1, 3272, -1, -1, -1, -1, -1, -1, 4339, -1, -1, -1, 10, -1, -1, 13, 408, -1, -1, 17, 18, 19, -1, -1, -1, -1, 179, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, 198, -1, -1, -1, 47, 203, -1, -1, 3324, 408, -1, 54, -1, -1, -1, -1, -1, -1, -1, 3335, -1, 3337, 3338, -1, -1, 4401, -1, -1, 226, 227, 4406, -1, 4408, -1, -1, 3351, -1, 80, 3354, -1, 3356, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, -1, 4434, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 514, 3394, -1, 3396, -1, 3398, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, 4481, -1, -1, 4484, -1, -1, -1, -1, -1, 312, 514, -1, 315, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, 179, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3492, 4918, -1, -1, -1, 3497, -1, 226, 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3512, -1, 4574, 4575, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4585, 408, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, 4602, -1, 17, 18, 19, -1, -1, -1, 4975, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4987, -1, 37, -1, -1, -1, -1, 4555, 297, -1, -1, -1, 47, -1, -1, 3577, -1, 2590, -1, 54, -1, -1, -1, 312, -1, -1, 315, -1, -1, -1, -1, -1, -1, -1, -1, 5022, -1, -1, -1, 4587, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4683, -1, -1, 4686, -1, -1, -1, -1, -1, 514, 4619, -1, -1, -1, 3637, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4654, -1, -1, -1, -1, -1, -1, 5100, -1, -1, -1, 2690, -1, 408, -1, -1, -1, 4671, -1, -1, -1, -1, -1, 2702, 4532, -1, 5119, -1, 2707, -1, -1, -1, 173, -1, -1, -1, -1, -1, 4546, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, 54, -1, 226, 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, 5205, 254, -1, -1, -1, -1, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, 4818, 4819, 4820, 4821, -1, 3837, -1, 312, -1, -1, 315, 3843, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, 4918, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5336, -1, 5338, -1, 4975, -1, -1, -1, -1, -1, -1, 3922, 226, 227, -1, -1, 4987, -1, -1, -1, -1, -1, -1, -1, 408, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, 254, 17, 18, 19, -1, -1, -1, -1, -1, -1, 5386, 5022, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, 5436, 315, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5100, 514, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 5119, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4071, -1, -1, -1, -1, -1, -1, -1, 4079, -1, 4081, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4095, -1, -1, -1, 4099, 4100, 4101, -1, -1, -1, 408, 4106, -1, -1, 4109, -1, -1, 4112, -1, -1, -1, -1, -1, 4118, -1, 4120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, -1, -1, -1, -1, -1, -1, 5205, -1, 4147, 4148, 4149, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 226, 227, -1, -1, -1, 4166, -1, -1, -1, -1, -1, -1, -1, 4174, -1, -1, 4177, -1, 4179, -1, 5167, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, 5178, 5033, -1, 4195, -1, -1, -1, -1, -1, -1, -1, 4203, 4204, -1, -1, -1, 5048, -1, 4210, 514, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, 4239, -1, -1, -1, -1, -1, -1, -1, 312, -1, 5674, 315, -1, -1, -1, -1, -1, -1, -1, -1, 3270, -1, -1, -1, 5688, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5336, 3288, 5338, -1, -1, -1, -1, -1, -1, -1, -1, 3298, -1, -1, 4290, -1, -1, 3304, 5719, -1, 3307, -1, -1, 5139, -1, -1, -1, 3314, 3315, -1, 3317, 4307, -1, -1, -1, 3322, 3323, -1, 3325, -1, 3327, -1, -1, -1, 3331, -1, -1, 3334, -1, -1, 5386, -1, 3339, -1, -1, -1, -1, -1, -1, -1, 5396, 3348, -1, -1, -1, -1, 3353, 408, -1, -1, -1, -1, -1, -1, 3361, 3362, 3363, 3364, -1, -1, -1, -1, 3369, 3370, -1, 3372, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5798, -1, -1, 5436, -1, -1, -1, 3391, 5441, 3393, -1, -1, -1, -1, -1, -1, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, 5834, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 488, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, 3446, 47, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, 10, 514, -1, 13, -1, -1, -1, 17, 18, 19, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, 80, -1, -1, 5458, -1, -1, 37, -1, 5463, 40, 5904, -1, -1, 5907, -1, -1, 47, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, 5482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, 5362, 10, 5364, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, 173, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, 3586, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, 203, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5674, 226, 227, -1, -1, -1, -1, -1, -1, -1, -1, 6050, -1, -1, 5688, -1, -1, 4631, 4632, -1, -1, -1, 198, -1, -1, -1, -1, 203, 4642, 254, -1, -1, -1, -1, -1, -1, -1, -1, 6077, -1, -1, -1, -1, 5643, -1, 5719, 5500, -1, -1, -1, 226, 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, 315, -1, -1, -1, -1, -1, -1, 198, 4712, -1, -1, -1, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4729, -1, -1, -1, -1, -1, 297, -1, -1, 5798, 226, 227, -1, -1, -1, -1, -1, -1, 4747, -1, -1, 312, -1, -1, 315, -1, 5741, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, 5834, -1, -1, -1, -1, -1, -1, -1, -1, 5769, -1, -1, 4786, 4787, -1, -1, 6215, -1, -1, -1, 4794, 4795, -1, 408, -1, 4799, -1, -1, -1, -1, 4804, -1, -1, 4807, 4808, -1, 297, -1, -1, -1, 4814, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, 315, -1, 3841, 3842, -1, -1, -1, 3846, -1, -1, 5678, -1, 5680, -1, -1, -1, 5904, -1, 408, 5907, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4859, -1, -1, -1, -1, 3875, -1, -1, -1, -1, -1, 4870, -1, -1, -1, -1, -1, -1, -1, 4878, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 408, -1, 4923, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6373, -1, -1, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6050, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5003, 6064, -1, -1, 6432, -1, -1, 5010, -1, -1, -1, -1, -1, -1, 6077, -1, -1, -1, -1, -1, -1, -1, -1, -1, 514, -1, -1, -1, -1, 6457, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4070, -1, -1, -1, -1, -1, 4076, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6137, 6138, 5079, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5946, -1, -1, -1, -1, -1, -1, 4124, 4125, -1, -1, 4128, 4129, 4130, 4131, -1, -1, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 4143, 4144, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, 35, 36, -1, 6215, 4167, -1, -1, 4170, -1, 4172, -1, -1, 4175, 4176, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, 4197, 4198, 4199, 4200, -1, 4202, 75, -1, 77, 78, -1, -1, -1, -1, -1, 84, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5231, -1, -1, -1, 118, -1, -1, 121, 6079, -1, 5241, -1, -1, -1, -1, -1, 5247, 5248, 5249, -1, -1, -1, 136, -1, 138, -1, -1, -1, 142, -1, 4272, -1, -1, -1, -1, 149, -1, -1, -1, -1, -1, 5272, 5273, -1, 158, 5276, 160, -1, -1, -1, -1, -1, -1, 167, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5294, -1, -1, -1, -1, -1, -1, -1, 185, -1, 5304, -1, -1, -1, -1, -1, -1, 4322, -1, 6373, -1, 5315, -1, -1, -1, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6209, -1, -1, 6432, 256, 257, -1, -1, -1, -1, 262, -1, -1, -1, -1, -1, 6445, 6446, -1, -1, -1, -1, -1, -1, -1, 277, -1, -1, 6457, -1, -1, 6240, 6241, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 358, -1, -1, -1, -1, -1, 364, 365, -1, 367, -1, -1, -1, -1, 372, -1, -1, 375, -1, -1, 378, -1, -1, 381, -1, -1, -1, -1, -1, -1, 388, -1, -1, -1, -1, -1, -1, 395, 396, -1, -1, -1, -1, -1, -1, 403, -1, -1, 6363, 407, -1, 25, -1, -1, -1, -1, -1, -1, -1, -1, 418, 5536, 4548, -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, 435, -1, -1, -1, -1, 5557, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, -1, 456, -1, -1, -1, -1, -1, -1, 4591, -1, 81, -1, -1, 468, -1, -1, -1, -1, -1, 474, -1, -1, -1, -1, 479, -1, -1, 98, -1, -1, 5602, -1, -1, -1, -1, -1, -1, 492, -1, -1, -1, -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, 516, -1, -1, -1, -1, -1, -1, -1, 140, -1, -1, -1, -1, -1, -1, -1, -1, 5650, -1, 535, -1, 153, 538, -1, -1, -1, -1, -1, -1, -1, 162, -1, -1, 5666, -1, -1, -1, -1, -1, -1, -1, -1, -1, 175, -1, -1, -1, -1, -1, -1, -1, -1, 184, -1, -1, -1, 188, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4713, -1, -1, -1, 4717, 4718, 5708, 208, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4731, -1, -1, -1, -1, -1, -1, -1, 4739, -1, 4741, -1, 4743, 4744, -1, -1, -1, 25, 4749, 4750, 4751, 4752, 30, -1, -1, 4756, 4757, 4758, 4759, 4760, 4761, 4762, 4763, 4764, 4765, 4766, 4767, 4768, -1, 258, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, 4793, -1, -1, 4796, -1, 4798, -1, -1, -1, 4802, -1, 81, 4805, 4806, -1, 5797, 4809, 4810, -1, -1, -1, -1, 4815, -1, -1, -1, -1, 5809, 98, -1, -1, 312, -1, -1, 315, -1, 5818, 5819, 5820, -1, -1, -1, -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 338, -1, -1, -1, -1, -1, -1, 5846, -1, -1, -1, -1, -1, 140, 352, -1, -1, -1, -1, 4869, -1, 5860, 360, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1, 4883, -1, 162, -1, -1, -1, -1, 5879, -1, 380, -1, -1, -1, -1, -1, 175, -1, -1, -1, 390, -1, 181, -1, -1, -1, -1, 397, -1, 188, 400, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, -1, 208, 420, -1, 30, -1, -1, -1, -1, -1, 428, -1, -1, -1, -1, -1, -1, 435, -1, -1, 438, -1, 440, -1, 442, 443, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 458, -1, 68, -1, -1, -1, -1, -1, 466, -1, -1, 469, -1, -1, 472, 81, 82, -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, 485, 94, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 116, -1, 6011, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, 140, -1, -1, 6036, 325, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, 338, -1, -1, -1, -1, 162, -1, -1, -1, -1, 348, 349, -1, -1, 352, -1, -1, -1, 175, -1, -1, 5082, -1, -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 380, -1, -1, 383, -1, -1, -1, 387, -1, 208, 390, -1, -1, -1, -1, -1, -1, 397, -1, -1, 400, -1, -1, -1, -1, -1, -1, 6119, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 420, -1, -1, -1, -1, -1, -1, 246, 428, -1, -1, 6143, -1, -1, -1, 435, -1, -1, 438, -1, -1, -1, -1, 443, -1, -1, 5169, 5170, -1, 268, -1, 451, -1, 453, 5177, -1, -1, -1, 458, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 472, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 485, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, 5220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 338, 5243, 5244, -1, -1, -1, -1, -1, -1, -1, 348, 349, 30, -1, 352, -1, -1, -1, -1, -1, 5262, -1, 5264, -1, -1, -1, 5268, 5269, 5270, 5271, -1, -1, 5274, 5275, -1, -1, -1, -1, 5280, 6270, -1, -1, 380, -1, -1, 383, -1, -1, -1, 387, -1, -1, 390, -1, -1, 6286, 5298, -1, -1, 397, -1, -1, 400, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5316, -1, -1, -1, -1, -1, 98, -1, 420, -1, -1, -1, -1, -1, 5330, -1, 428, -1, -1, -1, -1, -1, -1, 435, 116, -1, 438, -1, -1, -1, 122, 443, -1, -1, -1, -1, -1, -1, -1, 451, -1, 453, 5358, -1, -1, -1, 458, -1, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1, -1, -1, 162, -1, -1, 485, -1, -1, -1, -1, -1, -1, -1, -1, -1, 175, -1, -1, -1, -1, -1, 181, -1, 5407, -1, 5409, -1, -1, 188, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6411, -1, -1, -1, -1, -1, -1, -1, -1, -1, 208, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5444, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 246, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5550, -1, 5552, 5553, 5554, 5555, 5556, -1, -1, -1, -1, -1, 338, -1, -1, -1, -1, -1, -1, 5569, 5570, 5571, 348, 349, -1, -1, 352, -1, -1, 5579, -1, -1, -1, -1, 5584, -1, -1, 5587, -1, -1, -1, 5591, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 380, -1, -1, 383, -1, 5609, -1, 387, -1, -1, 390, -1, -1, -1, -1, -1, -1, 397, -1, -1, 400, -1, 5626, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 420, -1, -1, -1, -1, -1, -1, -1, 428, -1, -1, -1, -1, 433, -1, 435, -1, -1, 438, -1, -1, -1, -1, 443, -1, -1, -1, -1, -1, -1, -1, -1, -1, 453, -1, -1, -1, -1, 458, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 472, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 485, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5799, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5810, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5831, -1, 5833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5878, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5890, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5927, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6007, -1, -1, -1, -1, -1, -1, 6014, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6047, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6062, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6174, 6175, -1, -1, 6178, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6262, -1, -1, -1, -1, -1, -1, -1, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, 6280, 6281, -1, 6283, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, 6349, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, 137, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, 528, -1, -1, -1, -1, -1, -1, 535, 536, 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, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 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, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, 516, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, -1, -1, -1, -1, 535, 536, 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, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, -1, -1, -1, -1, 535, 536, 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, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, -1, -1, -1, -1, 535, 536, 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, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, -1, -1, -1, -1, 535, 536, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, 40, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, -1, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 536, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, -1, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, 536, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, -1, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, 510, 511, 512, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, 536, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 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, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, 516, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 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, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, 516, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 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, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, 249, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 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, 34, -1, -1, -1, 38, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 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, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 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, 34, -1, -1, -1, 38, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 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, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, -1, -1, 533, 534, 535, 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, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, 528, -1, -1, 3, -1, 5, 6, 535, 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, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 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, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, 179, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, 448, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 298, 299, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, 3, -1, 5, 6, 535, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, 3, -1, 5, 6, -1, 8, 9, 535, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, 3, -1, 5, 6, -1, 8, 9, 535, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, 5, 6, -1, 8, 9, -1, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, 5, 6, -1, 8, 9, -1, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, -1, 250, 251, 252, 253, 254, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, 311, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 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, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, 516, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, -1, 250, 251, 252, 253, 254, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, 311, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, 5, 6, -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, 310, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, 528, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, 35, 36, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 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, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, -1, -1, 516, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, 435, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, 516, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, 311, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, 435, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, 535, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, -1, 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, -1, -1, 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, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, 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, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, 169, 170, 171, 172, -1, 174, 175, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, -1, 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, -1, 223, -1, 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, -1, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, -1, 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, -1, 307, 308, 309, -1, 311, 312, 313, 314, 315, -1, 317, 318, 319, 320, -1, -1, 323, 324, 325, 326, 327, 328, 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, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, -1, 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, -1, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, -1, 483, 484, 485, 486, 487, 488, -1, 490, -1, -1, -1, -1, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, -1, 511, 512, -1, 514, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 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, 51, 52, 53, -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 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, -1, 160, 161, 162, 163, -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, -1, 188, -1, 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, -1, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 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, 289, 290, 291, -1, 293, 294, 295, 296, 297, 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, -1, 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, 377, 378, 379, 380, 381, 382, 383, 384, -1, 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, -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, -1, 453, -1, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 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, 51, 52, 53, -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 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, -1, 160, 161, 162, 163, -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, -1, 188, -1, 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, -1, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 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, 289, 290, 291, -1, 293, 294, 295, 296, 297, 298, 299, -1, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, -1, 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, 377, 378, 379, 380, 381, 382, 383, 384, -1, 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, -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, -1, 453, -1, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 3, -1, -1, -1, -1, -1, -1, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 3, -1, -1, -1, -1, -1, -1, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 3, -1, -1, -1, -1, -1, -1, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 3, -1, -1, -1, -1, -1, -1, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 3, -1, -1, -1, -1, -1, -1, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 3, -1, -1, -1, -1, -1, -1, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 3, -1, -1, -1, -1, -1, -1, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 523, 524, 525, 526, 527, 528, 529, 530, 531, 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, 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, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 528, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 528, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 528, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 528, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 528, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, -1, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, 316, 317, 318, 319, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 528, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, -1, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, 316, 317, 318, 319, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, -1, 3, -1, 5, 6, -1, -1, -1, -1, 11, 12, 510, 511, 512, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 528, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, 310, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, 5, 6, -1, -1, -1, -1, 11, 12, -1, -1, -1, 526, 527, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, 310, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, 5, 6, -1, -1, -1, -1, 11, -1, -1, -1, -1, 526, 527, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, 310, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, 5, 6, -1, -1, -1, -1, 11, 12, -1, -1, -1, 526, 527, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, 310, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, 5, 6, -1, -1, -1, -1, 11, -1, -1, -1, -1, 526, 527, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, 310, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, -1, 526, 527, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, 179, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 526, 527, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, 35, 36, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 3, -1, 5, 6, -1, -1, -1, -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, 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, 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, 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, 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, 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, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, 5, 6, -1, 8, 9, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, 108, 109, -1, -1, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, 108, 109, -1, -1, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, 108, 109, -1, -1, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, 108, 109, -1, -1, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, 310, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, 108, 109, -1, -1, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, 108, 109, -1, -1, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, 108, 109, -1, -1, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, 108, 109, -1, -1, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, 108, 109, -1, -1, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, -1, 6, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, -1, 6, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, 252, 253, 254, -1, 256, 257, 258, -1, -1, 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, -1, 295, 296, 297, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, -1, -1, 82, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, 175, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 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, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, 175, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 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, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, 101, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, 185, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 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, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, 101, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, 185, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 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, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, 175, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 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, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, 466, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, 101, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 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, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, 311, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, 435, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, 175, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, 435, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, 101, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 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, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, 311, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, 435, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, 311, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, -1, 6, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, 472, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, 311, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 3, -1, -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, 311, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, 435, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, 40, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, 40, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, 40, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, -1, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, -1, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, -1, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, -1, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, -1, -1, -1, 181, 182, 183, 184, -1, 186, 187, -1, 189, -1, 191, -1, 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, -1, -1, 228, -1, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, 251, -1, 253, -1, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, -1, 321, -1, 323, 324, 325, 326, 327, 328, 329, 330, -1, 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, -1, 380, 381, 382, 383, 384, 385, -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, -1, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, -1, 432, 433, -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, 452, 453, 454, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, 479, 480, -1, 482, -1, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 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, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, -1, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, 319, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, -1, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, -1, -1, 293, -1, 295, 296, 297, 298, 299, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, 435, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, -1, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, 291, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, -1, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, 291, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, 173, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, -1, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, -1, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, 173, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, -1, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, -1, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, -1, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, -1, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, -1, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, -1, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, -1, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, -1, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, -1, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, -1, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, 71, 72, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, 171, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, -1, 216, 217, 218, 219, 220, 221, -1, 223, -1, 225, 226, 227, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 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, 289, 290, -1, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, 302, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, -1, 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, 446, 447, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, 480, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, -1, 56, -1, -1, -1, 60, 61, 62, 63, 64, 65, 66, -1, -1, 69, 70, -1, -1, 73, -1, 75, 76, 77, 78, -1, -1, 81, -1, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, -1, 95, 96, 97, 98, 99, 100, -1, 102, 103, 104, 105, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, -1, -1, 121, -1, 123, -1, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, 135, 136, -1, -1, 139, 140, 141, 142, 143, -1, 145, 146, 147, 148, -1, 150, 151, 152, 153, -1, 155, 156, 157, 158, -1, 160, 161, 162, 163, -1, -1, 166, -1, 168, 169, 170, -1, 172, -1, 174, -1, 176, 177, 178, -1, 180, 181, 182, 183, 184, -1, 186, -1, -1, -1, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, -1, 213, 214, -1, 216, 217, 218, 219, -1, -1, -1, -1, -1, 225, 226, 227, 228, 229, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241, 242, 243, 244, 245, 246, 247, -1, -1, 250, -1, 252, 253, 254, -1, 256, 257, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, -1, 272, 273, 274, 275, 276, 277, 278, 279, -1, 281, -1, 283, 284, 285, 286, 287, 288, 289, 290, -1, -1, 293, -1, 295, 296, 297, 298, -1, -1, 301, -1, 303, 304, 305, -1, 307, 308, 309, -1, -1, 312, 313, 314, -1, -1, 317, 318, -1, 320, 321, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, 337, 338, -1, 340, -1, 342, 343, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, -1, 397, 398, 399, 400, 401, -1, 403, 404, -1, 406, 407, 408, 409, 410, -1, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, -1, 430, -1, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, 443, -1, 445, -1, -1, -1, -1, 450, 451, -1, 453, -1, -1, 456, 457, 458, 459, 460, 461, 462, 463, 464, -1, -1, 467, 468, 469, 470, 471, -1, -1, 474, 475, 476, 477, 478, -1, -1, -1, 482, 483, 484, 485, 486, 487, -1, -1, 490, -1, -1, 493, 494, 495, 496, 497, 498, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 510, 511, 512 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { 0, 22, 33, 35, 36, 53, 63, 75, 77, 78, 84, 86, 99, 101, 118, 121, 136, 138, 142, 149, 158, 160, 167, 185, 202, 256, 257, 262, 277, 296, 343, 358, 364, 365, 367, 372, 378, 381, 388, 395, 396, 403, 407, 418, 435, 456, 468, 474, 479, 492, 516, 518, 519, 520, 521, 522, 535, 542, 543, 544, 545, 550, 551, 557, 558, 560, 561, 562, 563, 565, 568, 580, 585, 586, 589, 590, 591, 611, 614, 615, 630, 681, 684, 685, 688, 691, 692, 693, 701, 708, 710, 711, 714, 717, 718, 722, 731, 735, 736, 737, 740, 742, 743, 744, 745, 753, 755, 775, 779, 781, 782, 792, 794, 801, 802, 805, 806, 807, 808, 809, 818, 820, 822, 825, 829, 830, 840, 841, 846, 851, 862, 894, 897, 898, 899, 904, 907, 909, 911, 913, 914, 918, 919, 922, 924, 925, 929, 930, 931, 934, 935, 936, 937, 938, 945, 947, 948, 949, 950, 956, 958, 959, 965, 966, 967, 970, 971, 972, 973, 975, 976, 978, 979, 981, 982, 984, 996, 998, 1001, 1003, 1004, 1013, 1015, 1020, 1025, 1035, 1039, 1040, 1041, 1042, 1043, 1044, 1050, 1086, 450, 495, 951, 30, 81, 98, 116, 122, 140, 153, 162, 175, 181, 188, 208, 246, 268, 312, 338, 348, 349, 352, 380, 383, 387, 390, 397, 400, 420, 428, 433, 435, 438, 443, 453, 458, 472, 485, 707, 951, 3, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60, 61, 62, 63, 64, 65, 66, 69, 70, 71, 72, 73, 75, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 95, 96, 97, 98, 99, 100, 102, 103, 104, 105, 109, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 125, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 139, 140, 141, 142, 143, 145, 146, 147, 148, 150, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 168, 169, 170, 171, 172, 174, 176, 177, 178, 180, 181, 182, 183, 184, 186, 187, 189, 190, 191, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 208, 209, 210, 211, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 250, 251, 252, 253, 254, 256, 257, 258, 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, 295, 296, 297, 298, 300, 301, 302, 303, 304, 305, 307, 308, 309, 312, 313, 314, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 336, 337, 338, 339, 340, 341, 342, 343, 344, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 397, 398, 399, 400, 401, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 432, 433, 436, 437, 438, 439, 440, 441, 442, 443, 445, 446, 447, 450, 451, 452, 453, 454, 456, 457, 458, 459, 460, 461, 462, 463, 464, 467, 468, 469, 470, 471, 474, 475, 476, 477, 478, 479, 480, 482, 483, 484, 485, 486, 487, 490, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 1154, 1247, 1259, 1260, 1264, 1265, 1266, 3, 31, 1036, 1244, 1259, 1264, 483, 535, 989, 310, 344, 951, 56, 535, 622, 25, 43, 68, 81, 116, 122, 140, 153, 162, 175, 184, 188, 258, 312, 315, 338, 352, 380, 390, 400, 420, 428, 438, 440, 442, 443, 458, 466, 469, 472, 631, 690, 797, 852, 863, 31, 343, 1244, 1036, 31, 337, 398, 440, 442, 6, 245, 905, 906, 1250, 25, 30, 68, 81, 98, 116, 140, 153, 162, 175, 181, 188, 208, 268, 312, 325, 338, 349, 352, 380, 383, 387, 390, 397, 400, 420, 428, 435, 438, 443, 451, 453, 458, 472, 485, 707, 810, 812, 813, 951, 1244, 101, 483, 535, 685, 688, 691, 984, 997, 1001, 1004, 1013, 1020, 1025, 1035, 1039, 11, 24, 31, 51, 170, 177, 179, 203, 247, 285, 346, 366, 526, 527, 826, 827, 1036, 1249, 1251, 31, 33, 101, 362, 396, 831, 832, 833, 1259, 175, 1259, 1246, 1250, 435, 1053, 826, 1259, 450, 1244, 325, 268, 535, 917, 388, 1259, 31, 401, 446, 450, 572, 581, 582, 1259, 185, 831, 832, 1259, 344, 951, 1259, 244, 31, 137, 1055, 1056, 69, 95, 258, 279, 380, 390, 401, 446, 450, 498, 569, 570, 571, 572, 31, 401, 446, 450, 572, 450, 311, 1098, 1099, 1242, 1259, 1053, 528, 1259, 180, 535, 990, 535, 360, 1045, 1046, 1244, 1045, 3, 55, 57, 58, 71, 72, 119, 120, 141, 171, 220, 221, 223, 230, 280, 282, 302, 357, 405, 411, 446, 447, 480, 1127, 1129, 1131, 1133, 1135, 1137, 1138, 1139, 1141, 1142, 1143, 1145, 1146, 1150, 1260, 1264, 1055, 1056, 1057, 1255, 12, 1256, 1257, 1259, 1256, 1256, 1040, 1041, 1044, 0, 538, 535, 989, 154, 222, 316, 465, 1058, 1059, 1040, 1042, 1043, 127, 218, 270, 471, 539, 37, 955, 879, 1247, 815, 1259, 815, 1244, 347, 815, 453, 1244, 115, 435, 867, 1247, 1259, 1266, 3, 108, 112, 402, 1252, 1253, 1261, 1264, 1265, 1266, 31, 197, 1242, 303, 485, 10, 17, 18, 19, 76, 166, 523, 524, 525, 526, 527, 528, 529, 530, 531, 901, 903, 1185, 1186, 1259, 197, 1244, 867, 1244, 31, 1252, 1253, 867, 1244, 1244, 197, 1242, 1244, 197, 815, 1244, 372, 403, 31, 197, 1098, 1244, 393, 1244, 815, 31, 265, 1252, 1253, 197, 1242, 245, 124, 228, 294, 356, 952, 953, 954, 535, 533, 537, 1211, 1213, 513, 983, 984, 985, 986, 1261, 1242, 1244, 1259, 30, 68, 82, 94, 116, 140, 181, 208, 246, 312, 349, 380, 383, 428, 438, 451, 458, 810, 811, 812, 813, 1250, 955, 1000, 1004, 1013, 1020, 1025, 1039, 1242, 272, 815, 535, 197, 815, 1244, 815, 453, 197, 1244, 115, 435, 440, 442, 1252, 1253, 440, 442, 76, 166, 901, 370, 1244, 1244, 1252, 197, 546, 1259, 197, 1244, 197, 547, 815, 1244, 1244, 393, 815, 265, 1252, 360, 397, 435, 485, 268, 98, 208, 30, 94, 181, 349, 387, 451, 453, 457, 702, 31, 1244, 1037, 579, 1250, 1261, 906, 272, 197, 879, 880, 197, 910, 197, 1244, 197, 817, 1127, 453, 115, 435, 197, 866, 867, 197, 1253, 1254, 89, 485, 76, 166, 197, 902, 903, 61, 197, 866, 197, 1254, 197, 866, 197, 1244, 197, 1244, 393, 910, 197, 817, 197, 265, 1254, 245, 197, 814, 815, 197, 1243, 1244, 197, 1244, 955, 535, 1002, 631, 997, 479, 983, 989, 1251, 827, 828, 31, 828, 1251, 828, 31, 828, 1251, 828, 828, 828, 1251, 1249, 1249, 1036, 828, 347, 535, 433, 535, 658, 658, 658, 310, 448, 539, 658, 390, 1098, 1100, 539, 946, 1250, 535, 999, 61, 485, 983, 116, 208, 390, 433, 435, 915, 916, 1259, 50, 512, 228, 537, 313, 310, 179, 313, 1250, 448, 955, 173, 823, 310, 5, 8, 9, 10, 12, 39, 55, 57, 58, 67, 68, 71, 72, 79, 81, 106, 107, 108, 109, 110, 111, 112, 119, 120, 122, 159, 164, 165, 171, 187, 189, 220, 221, 223, 230, 231, 232, 233, 234, 235, 236, 237, 238, 240, 251, 259, 260, 271, 280, 282, 292, 294, 299, 300, 302, 312, 323, 339, 357, 385, 402, 411, 429, 434, 446, 447, 452, 454, 455, 466, 472, 480, 500, 501, 502, 503, 505, 506, 507, 508, 514, 526, 527, 528, 535, 1040, 1130, 1133, 1136, 1137, 1138, 1140, 1141, 1142, 1145, 1146, 1150, 1151, 1153, 1154, 1155, 1157, 1181, 1182, 1183, 1187, 1205, 1210, 1236, 1239, 1240, 1247, 1248, 1249, 1250, 1259, 1238, 1239, 1250, 31, 587, 1241, 1242, 401, 569, 122, 578, 1250, 12, 579, 12, 1250, 50, 73, 569, 512, 412, 953, 313, 179, 448, 525, 50, 512, 228, 954, 535, 1242, 528, 1213, 1100, 983, 178, 991, 1151, 1190, 1045, 539, 535, 992, 482, 1144, 1144, 1144, 535, 1132, 1132, 341, 535, 1134, 71, 72, 1144, 1132, 1129, 516, 517, 535, 1147, 535, 1147, 39, 1128, 535, 117, 195, 273, 276, 394, 510, 535, 1148, 1149, 537, 816, 1132, 1238, 1214, 536, 536, 544, 983, 993, 994, 995, 1242, 31, 137, 1054, 1054, 61, 1054, 167, 173, 255, 306, 1062, 1064, 1065, 1080, 1082, 1083, 1084, 1058, 1059, 179, 224, 224, 1098, 1101, 535, 70, 290, 326, 368, 403, 535, 877, 326, 364, 368, 403, 816, 326, 368, 403, 3, 93, 147, 261, 326, 364, 368, 403, 438, 441, 492, 580, 583, 960, 961, 962, 963, 847, 27, 142, 326, 368, 403, 476, 596, 1244, 27, 142, 403, 471, 564, 496, 197, 1098, 64, 100, 163, 200, 250, 290, 294, 326, 327, 368, 377, 386, 395, 403, 416, 425, 430, 487, 580, 584, 883, 895, 923, 535, 864, 1213, 368, 564, 203, 159, 27, 33, 48, 78, 135, 142, 146, 174, 210, 290, 294, 304, 314, 326, 368, 371, 372, 403, 476, 592, 594, 595, 725, 923, 5, 526, 527, 699, 1251, 31, 197, 1242, 815, 815, 535, 900, 326, 403, 537, 159, 310, 326, 368, 403, 895, 923, 27, 142, 326, 368, 403, 203, 559, 368, 492, 516, 552, 559, 326, 368, 403, 895, 923, 310, 326, 368, 159, 40, 62, 114, 206, 264, 269, 274, 290, 325, 368, 373, 397, 403, 418, 469, 592, 696, 697, 326, 368, 484, 725, 733, 159, 326, 368, 403, 27, 93, 135, 142, 146, 326, 364, 368, 403, 410, 582, 570, 572, 203, 159, 48, 133, 290, 368, 403, 592, 593, 326, 368, 372, 403, 91, 134, 329, 441, 310, 27, 33, 142, 326, 368, 403, 612, 613, 559, 173, 368, 552, 559, 159, 368, 403, 592, 1244, 253, 124, 311, 497, 539, 952, 31, 137, 481, 528, 536, 872, 1151, 1191, 1192, 1260, 1151, 1212, 3, 31, 35, 36, 37, 38, 39, 40, 41, 45, 59, 67, 68, 74, 80, 82, 94, 101, 106, 107, 108, 110, 111, 112, 122, 124, 132, 137, 138, 144, 149, 154, 165, 167, 173, 175, 179, 185, 188, 192, 203, 212, 222, 224, 248, 249, 255, 259, 260, 294, 299, 306, 310, 311, 315, 316, 335, 345, 362, 376, 396, 402, 413, 431, 434, 435, 444, 448, 449, 455, 465, 466, 472, 473, 481, 488, 489, 491, 492, 528, 1245, 1262, 1264, 1265, 1266, 1267, 1211, 536, 539, 165, 310, 455, 576, 579, 699, 987, 473, 980, 310, 879, 535, 815, 1244, 1127, 867, 303, 76, 166, 903, 867, 867, 173, 1127, 815, 1244, 1244, 536, 658, 1244, 74, 1127, 294, 179, 535, 783, 552, 40, 974, 1244, 294, 552, 496, 197, 1242, 552, 815, 815, 783, 469, 631, 310, 173, 492, 891, 552, 294, 50, 566, 294, 458, 732, 294, 992, 93, 326, 709, 91, 134, 329, 441, 40, 783, 173, 197, 552, 485, 197, 1242, 197, 686, 1242, 1242, 485, 815, 89, 548, 1247, 453, 1247, 1247, 1244, 173, 1244, 707, 42, 56, 113, 217, 290, 392, 159, 65, 374, 539, 549, 159, 535, 159, 552, 159, 539, 549, 496, 159, 539, 549, 159, 539, 197, 814, 197, 815, 197, 815, 159, 539, 549, 1254, 159, 549, 159, 159, 549, 159, 549, 159, 91, 134, 329, 441, 173, 159, 549, 159, 173, 197, 159, 539, 549, 159, 539, 549, 159, 310, 1190, 435, 536, 997, 828, 1036, 828, 1036, 828, 1036, 828, 1036, 828, 1036, 1036, 1036, 828, 1036, 535, 659, 660, 1259, 659, 31, 116, 140, 175, 181, 245, 246, 328, 349, 383, 390, 397, 435, 438, 458, 836, 1241, 1254, 833, 1244, 203, 539, 1016, 1250, 1127, 1194, 40, 1254, 548, 536, 548, 548, 548, 253, 1259, 173, 836, 1254, 173, 388, 1259, 579, 310, 535, 1214, 533, 1040, 1195, 1151, 1209, 535, 535, 173, 535, 535, 1040, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, 1151, 535, 535, 535, 535, 535, 535, 535, 535, 301, 647, 535, 535, 535, 535, 535, 535, 535, 535, 1151, 1151, 1151, 1040, 1151, 1190, 1213, 12, 1250, 12, 535, 1250, 3, 10, 13, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 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, 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, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 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, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 169, 170, 171, 172, 174, 175, 176, 177, 178, 180, 181, 182, 183, 184, 186, 187, 189, 190, 191, 193, 194, 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, 223, 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, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 274, 275, 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, 307, 308, 309, 311, 312, 313, 314, 315, 317, 318, 319, 320, 323, 324, 325, 326, 327, 328, 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, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 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, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 483, 484, 485, 486, 487, 488, 490, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 514, 523, 524, 525, 526, 527, 528, 529, 530, 531, 1185, 1187, 1189, 1263, 1268, 493, 1168, 322, 1151, 168, 1169, 224, 539, 1051, 12, 535, 1250, 1213, 1051, 125, 199, 588, 539, 73, 12, 122, 579, 40, 3, 12, 122, 258, 577, 699, 1146, 1250, 1250, 96, 139, 1163, 105, 12, 122, 573, 574, 576, 699, 122, 573, 253, 1242, 97, 373, 819, 536, 989, 37, 47, 54, 80, 198, 203, 226, 254, 312, 315, 408, 536, 539, 1046, 1243, 40, 535, 1190, 1249, 1144, 1144, 39, 1128, 446, 446, 1249, 1249, 533, 533, 1249, 448, 448, 448, 535, 448, 1249, 1245, 537, 1132, 179, 1087, 15, 525, 1211, 1258, 536, 539, 992, 1042, 1042, 1060, 1061, 1151, 1042, 170, 285, 1071, 242, 290, 356, 406, 471, 31, 1066, 1151, 526, 527, 1067, 1068, 1151, 1153, 1080, 1081, 1065, 1064, 1062, 1063, 173, 1083, 304, 1085, 1062, 1080, 1101, 1005, 1242, 1101, 40, 1259, 403, 1190, 70, 448, 448, 390, 203, 215, 316, 319, 405, 481, 528, 870, 871, 872, 874, 876, 878, 1127, 1260, 448, 484, 448, 390, 448, 448, 390, 255, 448, 81, 448, 438, 569, 326, 960, 962, 525, 964, 173, 185, 203, 378, 848, 849, 74, 94, 294, 655, 656, 94, 122, 294, 448, 94, 448, 122, 294, 390, 94, 135, 146, 326, 368, 780, 390, 715, 30, 68, 140, 181, 312, 349, 383, 451, 458, 810, 811, 1244, 159, 368, 403, 592, 310, 699, 395, 250, 448, 1259, 448, 299, 699, 126, 225, 390, 401, 450, 571, 815, 374, 403, 883, 896, 130, 536, 865, 870, 448, 472, 438, 1242, 74, 82, 94, 155, 175, 197, 345, 466, 638, 653, 654, 1259, 82, 94, 920, 331, 310, 385, 387, 453, 94, 920, 34, 371, 385, 387, 453, 385, 1242, 174, 210, 304, 815, 535, 448, 448, 196, 535, 600, 25, 264, 438, 469, 494, 600, 94, 539, 130, 5, 5, 326, 203, 159, 368, 403, 592, 923, 473, 473, 291, 1127, 448, 390, 535, 901, 1244, 1242, 448, 448, 390, 896, 130, 109, 435, 436, 932, 933, 1099, 1242, 1259, 933, 448, 448, 783, 933, 116, 403, 583, 448, 554, 583, 448, 448, 390, 896, 130, 1242, 448, 448, 1242, 1129, 699, 61, 698, 699, 699, 114, 269, 274, 61, 448, 552, 278, 390, 552, 290, 697, 448, 448, 299, 1250, 725, 815, 448, 448, 390, 420, 352, 1250, 352, 448, 352, 448, 352, 783, 783, 438, 1098, 331, 331, 94, 448, 920, 390, 448, 448, 600, 600, 815, 815, 815, 815, 1242, 49, 478, 49, 49, 478, 448, 49, 448, 478, 390, 535, 539, 583, 472, 741, 1253, 448, 554, 583, 1242, 448, 920, 390, 326, 368, 356, 369, 399, 575, 952, 1191, 1191, 1192, 536, 15, 16, 539, 1058, 1059, 534, 540, 1242, 985, 1244, 1242, 226, 1127, 226, 310, 226, 226, 699, 815, 815, 226, 226, 226, 1127, 226, 226, 226, 310, 448, 179, 448, 616, 458, 535, 40, 159, 815, 784, 785, 1262, 960, 1127, 310, 159, 712, 1244, 294, 331, 535, 553, 797, 473, 360, 485, 1242, 31, 933, 783, 553, 159, 1253, 101, 185, 567, 630, 692, 755, 829, 851, 956, 159, 1250, 733, 734, 159, 310, 1250, 1253, 261, 815, 815, 815, 815, 150, 355, 535, 741, 294, 553, 1242, 294, 694, 696, 294, 40, 304, 331, 535, 658, 658, 197, 689, 1242, 173, 197, 546, 1259, 535, 787, 877, 1244, 535, 868, 868, 40, 1127, 29, 52, 219, 756, 245, 492, 494, 1038, 392, 880, 879, 1127, 1244, 535, 817, 1127, 866, 867, 1254, 1253, 159, 549, 159, 473, 159, 473, 902, 903, 549, 866, 1254, 866, 1244, 1244, 1127, 817, 1254, 741, 159, 814, 815, 1243, 1244, 1244, 815, 536, 197, 1242, 997, 1036, 1036, 1036, 1036, 1036, 1036, 659, 536, 539, 536, 182, 350, 384, 398, 436, 1243, 814, 115, 400, 866, 1243, 303, 834, 835, 1259, 866, 866, 1243, 1241, 1241, 1243, 814, 448, 186, 492, 845, 154, 255, 738, 739, 25, 157, 385, 406, 1017, 1098, 298, 1018, 536, 539, 1000, 448, 1242, 1244, 1242, 546, 831, 832, 179, 845, 832, 1259, 30, 82, 140, 181, 246, 349, 383, 458, 810, 811, 1190, 534, 1190, 1195, 1196, 488, 1206, 1207, 1151, 1190, 535, 1249, 1249, 3, 12, 117, 195, 273, 276, 394, 510, 1197, 1198, 1250, 1190, 1190, 1151, 1224, 376, 1040, 1041, 1224, 1228, 1235, 1224, 1224, 1151, 1153, 1191, 1228, 1231, 1232, 1151, 1232, 1224, 1151, 1224, 1224, 1190, 1249, 1249, 536, 1151, 1151, 901, 1151, 1191, 1193, 1200, 385, 526, 527, 535, 1152, 1153, 1187, 1201, 536, 1190, 1151, 1193, 1202, 1151, 59, 179, 249, 449, 1151, 1190, 1203, 137, 294, 1040, 1190, 278, 1153, 1151, 1161, 1162, 1163, 278, 1151, 1163, 536, 539, 1148, 1249, 1148, 1127, 1151, 1151, 1151, 1151, 1262, 258, 446, 45, 431, 1215, 815, 1151, 535, 1040, 1204, 137, 139, 165, 230, 286, 287, 288, 289, 293, 294, 299, 455, 467, 1199, 1229, 1151, 535, 1151, 448, 54, 198, 203, 254, 408, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 31, 38, 413, 1184, 188, 1169, 385, 535, 1181, 535, 321, 1173, 184, 258, 435, 440, 442, 469, 1052, 1242, 1240, 1087, 1191, 1087, 1242, 450, 535, 1250, 539, 536, 196, 196, 549, 995, 984, 988, 1151, 536, 268, 294, 1047, 1190, 536, 536, 533, 512, 512, 536, 536, 1249, 534, 1249, 536, 195, 273, 1149, 273, 1149, 1149, 1249, 276, 536, 1245, 230, 239, 248, 386, 509, 535, 1040, 1088, 1089, 1090, 1098, 1104, 1114, 1121, 1154, 1156, 1157, 1236, 1259, 489, 1109, 1255, 995, 993, 539, 41, 132, 473, 860, 385, 386, 526, 527, 1068, 1070, 1153, 406, 242, 311, 539, 5, 1069, 1249, 1069, 385, 386, 1070, 1241, 298, 410, 1019, 1081, 1063, 473, 1014, 122, 324, 535, 1006, 1039, 40, 473, 1259, 535, 1021, 1022, 1023, 1259, 536, 1253, 1244, 1244, 319, 61, 1260, 536, 872, 874, 871, 874, 1260, 316, 536, 539, 816, 1253, 1244, 1244, 1253, 1244, 1244, 1253, 484, 1244, 1244, 122, 576, 699, 380, 472, 831, 390, 185, 831, 535, 1244, 299, 197, 1244, 299, 1253, 1244, 1244, 1151, 299, 1244, 1244, 34, 371, 448, 448, 1244, 448, 716, 879, 535, 1127, 867, 76, 166, 903, 867, 867, 173, 1127, 815, 1244, 191, 290, 326, 368, 477, 719, 720, 721, 1098, 448, 920, 390, 299, 126, 225, 1253, 1244, 310, 1244, 310, 536, 539, 1252, 1254, 1244, 368, 592, 535, 197, 638, 1244, 473, 853, 242, 294, 242, 473, 647, 680, 1127, 1244, 1249, 1259, 1242, 1244, 253, 1244, 31, 472, 1244, 197, 1244, 197, 1259, 387, 453, 387, 453, 253, 1244, 31, 472, 1244, 253, 385, 1242, 27, 142, 403, 726, 727, 728, 729, 1262, 1253, 1244, 122, 180, 295, 473, 599, 602, 603, 1262, 272, 1244, 78, 307, 1244, 595, 310, 448, 438, 1242, 448, 920, 390, 130, 1244, 1244, 539, 536, 539, 1253, 1244, 926, 927, 1262, 310, 368, 448, 749, 1253, 1244, 1244, 310, 1098, 203, 539, 658, 658, 1213, 1253, 1244, 1244, 1252, 3, 93, 148, 210, 333, 464, 472, 475, 555, 1253, 1244, 1244, 310, 368, 1253, 1244, 368, 403, 592, 696, 699, 815, 1244, 699, 815, 1244, 699, 1253, 1244, 403, 1253, 1244, 1244, 122, 606, 1251, 1243, 1243, 1253, 891, 1244, 1243, 1244, 368, 403, 592, 593, 1242, 1242, 1244, 1244, 1244, 1244, 1253, 1244, 27, 33, 142, 326, 368, 403, 326, 368, 403, 783, 368, 403, 368, 403, 368, 923, 1113, 1259, 197, 793, 1259, 197, 1259, 1250, 1253, 1244, 1244, 1250, 1244, 926, 27, 142, 613, 400, 1252, 368, 403, 592, 1244, 1244, 1244, 448, 448, 87, 463, 356, 539, 1058, 1058, 1058, 1151, 1151, 481, 1192, 536, 1151, 1212, 980, 299, 821, 1250, 40, 821, 140, 815, 821, 821, 226, 473, 473, 821, 821, 821, 245, 821, 821, 821, 815, 351, 617, 617, 208, 435, 754, 1151, 1127, 815, 536, 539, 525, 644, 1262, 1244, 65, 179, 390, 484, 713, 720, 721, 159, 304, 254, 632, 634, 636, 638, 650, 653, 28, 203, 380, 432, 555, 556, 173, 1244, 485, 1242, 40, 750, 436, 891, 546, 1259, 566, 631, 863, 1244, 175, 815, 535, 682, 683, 1156, 1259, 352, 1250, 783, 783, 783, 783, 535, 783, 1111, 1112, 1113, 400, 159, 535, 159, 159, 158, 1039, 815, 304, 632, 1259, 473, 675, 492, 601, 294, 40, 658, 1250, 294, 310, 3, 788, 789, 783, 29, 536, 869, 870, 875, 40, 245, 377, 451, 491, 881, 882, 883, 884, 881, 310, 245, 304, 127, 218, 456, 471, 757, 758, 1244, 194, 194, 173, 549, 40, 552, 174, 968, 969, 549, 549, 814, 815, 1244, 815, 1244, 549, 549, 549, 549, 245, 549, 400, 173, 549, 549, 310, 549, 294, 536, 660, 203, 203, 203, 203, 203, 496, 1243, 699, 700, 539, 537, 188, 837, 838, 1253, 61, 842, 843, 1262, 448, 535, 179, 157, 406, 157, 406, 385, 471, 275, 1127, 1253, 492, 687, 310, 837, 549, 179, 879, 815, 1127, 867, 303, 867, 867, 1127, 815, 1244, 536, 534, 534, 539, 1151, 144, 1207, 1208, 40, 536, 1151, 536, 536, 179, 536, 179, 536, 536, 513, 1225, 1226, 492, 494, 1230, 1127, 1226, 536, 23, 299, 539, 1234, 316, 1237, 539, 540, 478, 536, 536, 23, 299, 539, 1233, 1233, 539, 536, 1228, 539, 536, 536, 536, 536, 539, 539, 536, 335, 536, 536, 535, 1152, 1152, 1190, 13, 17, 18, 19, 203, 226, 312, 523, 524, 525, 526, 527, 528, 529, 530, 531, 1187, 1152, 536, 536, 173, 179, 408, 536, 536, 40, 1203, 1190, 1203, 1203, 179, 536, 137, 536, 1262, 332, 1166, 40, 536, 539, 1151, 1262, 539, 1151, 1214, 1151, 536, 512, 1152, 1152, 152, 1190, 179, 39, 303, 389, 478, 137, 139, 165, 293, 299, 455, 467, 1199, 1229, 293, 1230, 152, 901, 1151, 431, 1215, 1151, 1204, 1151, 448, 535, 1040, 535, 1173, 535, 1190, 489, 535, 1174, 1259, 440, 442, 440, 442, 1242, 1053, 1053, 1053, 1109, 1058, 1109, 953, 1249, 1148, 574, 995, 268, 535, 536, 1249, 1147, 1147, 534, 534, 536, 535, 1040, 1104, 1114, 1121, 179, 535, 1040, 1089, 1090, 40, 1091, 1092, 1259, 539, 102, 180, 214, 229, 252, 281, 379, 1095, 1092, 40, 1091, 1094, 1259, 1092, 1092, 516, 1108, 1213, 1151, 188, 1072, 1061, 312, 1185, 1188, 515, 861, 5, 1249, 1070, 311, 492, 471, 1067, 263, 1088, 489, 1110, 479, 433, 472, 1007, 1008, 1009, 1259, 310, 1010, 1259, 1089, 1023, 1024, 539, 1087, 525, 1214, 878, 816, 874, 874, 61, 876, 530, 1254, 1254, 310, 1243, 313, 310, 1151, 656, 773, 159, 549, 448, 1253, 1244, 579, 1127, 815, 815, 1127, 703, 1244, 191, 477, 448, 448, 703, 719, 725, 368, 403, 592, 1244, 1244, 1244, 216, 299, 162, 870, 325, 403, 448, 1151, 294, 155, 654, 1244, 535, 535, 159, 535, 680, 208, 535, 773, 423, 642, 643, 773, 403, 27, 142, 372, 373, 403, 596, 604, 605, 725, 921, 395, 159, 549, 159, 549, 1244, 1244, 1244, 1244, 395, 395, 253, 728, 729, 728, 536, 539, 730, 1250, 208, 536, 539, 525, 537, 122, 607, 1259, 162, 1253, 1244, 368, 403, 592, 1244, 1244, 1244, 310, 326, 368, 403, 27, 142, 326, 368, 403, 1127, 291, 1127, 536, 539, 525, 1242, 448, 1254, 473, 746, 162, 658, 390, 932, 489, 665, 665, 658, 255, 333, 12, 299, 1250, 333, 1254, 470, 162, 448, 448, 390, 420, 891, 891, 891, 325, 403, 94, 448, 920, 390, 122, 173, 608, 169, 548, 448, 448, 265, 265, 265, 448, 448, 390, 448, 448, 390, 448, 390, 448, 390, 448, 130, 549, 1127, 294, 1250, 403, 921, 159, 549, 448, 448, 536, 1244, 448, 920, 390, 448, 1253, 1244, 536, 536, 536, 1192, 534, 1127, 815, 226, 821, 1244, 1244, 1244, 226, 421, 422, 618, 1250, 618, 191, 536, 536, 179, 783, 785, 291, 312, 526, 527, 699, 786, 874, 1188, 1250, 1267, 74, 80, 94, 122, 124, 183, 212, 294, 299, 345, 362, 466, 645, 646, 649, 158, 488, 552, 579, 1244, 579, 314, 723, 1242, 1242, 1242, 536, 539, 1254, 188, 380, 1254, 1249, 458, 1242, 658, 3, 173, 751, 891, 50, 566, 435, 732, 115, 992, 1151, 179, 539, 1243, 601, 790, 791, 1250, 536, 539, 1244, 173, 659, 1242, 686, 1242, 1244, 687, 535, 633, 1242, 536, 1244, 492, 494, 676, 600, 40, 159, 1039, 675, 448, 159, 1098, 525, 536, 539, 757, 536, 539, 122, 525, 885, 1250, 579, 435, 873, 874, 173, 890, 53, 375, 886, 887, 884, 887, 127, 218, 396, 471, 943, 1244, 304, 310, 315, 191, 1039, 1127, 535, 536, 539, 549, 473, 549, 473, 549, 1244, 1244, 741, 815, 159, 390, 390, 390, 390, 390, 1243, 539, 835, 1259, 1253, 492, 539, 839, 1253, 539, 845, 165, 313, 455, 844, 1100, 400, 157, 157, 115, 290, 836, 845, 1254, 226, 226, 226, 226, 699, 226, 226, 226, 226, 226, 1195, 444, 1151, 149, 1127, 536, 1151, 1151, 230, 466, 466, 536, 1226, 1228, 310, 310, 1224, 1228, 61, 1234, 1151, 1224, 1224, 310, 310, 1232, 1230, 1230, 1151, 536, 1151, 1199, 1151, 1151, 536, 1190, 539, 1127, 1152, 1152, 1152, 1152, 137, 139, 294, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1151, 1151, 1151, 1127, 536, 536, 536, 1190, 536, 539, 61, 1153, 1167, 536, 1262, 1162, 342, 427, 1165, 536, 539, 484, 1158, 40, 536, 12, 1250, 1151, 37, 37, 1151, 536, 1151, 179, 293, 1230, 1151, 536, 152, 1152, 1152, 152, 152, 1151, 1151, 1059, 536, 1190, 539, 1151, 1175, 1259, 1053, 1053, 1053, 1053, 1242, 1242, 1242, 1072, 536, 1072, 536, 1000, 534, 1224, 1092, 1094, 1092, 1092, 535, 504, 1153, 536, 1259, 535, 1089, 229, 320, 1096, 1089, 1096, 229, 1095, 1096, 229, 437, 1102, 535, 1259, 535, 317, 61, 192, 1079, 535, 861, 170, 247, 311, 492, 445, 105, 1151, 376, 1012, 478, 536, 539, 1214, 92, 1012, 310, 536, 539, 1022, 1110, 1151, 536, 530, 878, 458, 182, 384, 391, 398, 436, 459, 850, 173, 850, 536, 124, 212, 290, 294, 774, 1244, 1244, 40, 473, 473, 245, 816, 1253, 1244, 448, 920, 390, 448, 216, 1244, 61, 438, 1244, 536, 159, 535, 663, 664, 856, 1156, 1259, 659, 638, 659, 773, 1244, 659, 122, 1259, 88, 640, 641, 420, 183, 161, 196, 294, 600, 552, 115, 161, 183, 294, 420, 600, 640, 642, 697, 403, 605, 458, 1244, 1259, 395, 727, 1244, 603, 786, 1262, 1244, 325, 403, 448, 920, 390, 448, 162, 448, 448, 390, 181, 312, 423, 795, 796, 181, 312, 803, 804, 448, 448, 390, 536, 536, 536, 927, 291, 699, 874, 928, 1188, 1250, 1267, 368, 1244, 535, 492, 747, 1244, 665, 109, 1259, 535, 665, 1251, 12, 1250, 1250, 1250, 1244, 1244, 1244, 1244, 606, 61, 438, 1244, 1244, 1244, 1244, 479, 1244, 1244, 173, 173, 370, 173, 197, 1253, 1244, 1244, 1253, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 310, 80, 597, 159, 29, 52, 458, 1259, 1244, 1250, 725, 1244, 1244, 1244, 1244, 1058, 536, 226, 821, 226, 226, 226, 821, 552, 473, 623, 624, 703, 773, 492, 494, 815, 535, 815, 1244, 1152, 34, 61, 648, 125, 199, 124, 299, 242, 1242, 647, 181, 349, 769, 776, 777, 1259, 712, 535, 331, 535, 633, 651, 211, 670, 636, 1254, 1254, 1127, 535, 601, 31, 127, 218, 396, 471, 752, 448, 748, 1253, 197, 1242, 734, 496, 310, 536, 1088, 683, 891, 536, 539, 1113, 723, 741, 536, 694, 40, 304, 331, 535, 1002, 635, 637, 639, 653, 1259, 331, 671, 672, 633, 670, 600, 307, 310, 677, 1039, 689, 687, 601, 1250, 1244, 853, 786, 3, 789, 310, 875, 1151, 1151, 539, 535, 881, 458, 539, 46, 1151, 448, 535, 659, 1242, 758, 703, 536, 968, 969, 1244, 1244, 549, 400, 549, 1243, 1243, 1243, 1243, 1243, 699, 185, 838, 845, 843, 536, 1244, 115, 179, 549, 845, 299, 824, 1250, 824, 824, 824, 226, 824, 824, 824, 824, 824, 1151, 536, 147, 243, 243, 536, 299, 299, 536, 1060, 1228, 332, 1216, 299, 299, 1228, 1228, 1216, 1216, 536, 536, 179, 536, 1151, 179, 137, 139, 179, 173, 152, 536, 499, 1160, 1190, 361, 478, 61, 1167, 1153, 490, 490, 536, 1151, 290, 1151, 539, 1159, 1129, 1151, 1151, 1151, 1151, 37, 37, 1151, 1151, 152, 536, 536, 536, 1151, 536, 331, 1176, 1242, 1242, 1242, 1242, 1079, 12, 1250, 1079, 1250, 536, 539, 1105, 1106, 1156, 535, 1166, 1091, 535, 1243, 1089, 310, 473, 1097, 1089, 229, 1089, 1247, 1112, 535, 1112, 1259, 1054, 1151, 491, 1170, 901, 445, 304, 1239, 1039, 324, 1039, 1009, 310, 535, 1011, 1151, 525, 1023, 1012, 458, 536, 448, 831, 179, 773, 125, 199, 210, 124, 475, 549, 1127, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1254, 1244, 773, 638, 1151, 536, 539, 492, 80, 855, 859, 855, 536, 536, 536, 122, 1259, 723, 606, 648, 197, 197, 299, 699, 40, 648, 299, 606, 1127, 549, 549, 525, 61, 438, 1244, 1244, 1244, 1244, 1244, 1253, 1244, 1244, 1249, 1249, 1127, 539, 1249, 1249, 539, 1253, 1244, 1244, 448, 1151, 74, 1151, 1254, 1244, 448, 448, 179, 203, 492, 1243, 1243, 815, 1243, 159, 162, 815, 1250, 1250, 1127, 549, 549, 448, 536, 226, 821, 821, 821, 821, 535, 619, 620, 552, 129, 181, 215, 181, 1151, 294, 646, 122, 40, 891, 658, 891, 1247, 37, 158, 203, 724, 728, 304, 632, 608, 156, 205, 535, 400, 473, 659, 40, 1254, 746, 566, 294, 535, 175, 1244, 682, 1250, 400, 601, 158, 1039, 815, 304, 632, 687, 536, 539, 492, 644, 61, 675, 608, 671, 86, 438, 678, 492, 957, 40, 678, 179, 310, 535, 1242, 1250, 872, 892, 893, 1260, 887, 1127, 173, 888, 1242, 179, 448, 912, 363, 759, 213, 704, 549, 536, 549, 549, 1244, 313, 224, 837, 549, 824, 1244, 536, 1217, 1218, 1224, 122, 145, 151, 165, 299, 455, 467, 1220, 1221, 1223, 536, 536, 1228, 1228, 1151, 536, 1152, 179, 1151, 1151, 1151, 535, 536, 539, 536, 1167, 536, 478, 417, 536, 207, 290, 1164, 1151, 1151, 1151, 536, 61, 1058, 1170, 1170, 393, 1048, 1151, 536, 539, 40, 1107, 122, 1119, 1120, 1152, 83, 1243, 536, 1151, 535, 1089, 1097, 535, 536, 1112, 536, 104, 189, 382, 535, 1073, 1074, 1075, 1076, 1077, 1078, 1151, 1171, 1172, 1259, 1058, 536, 1036, 1007, 94, 854, 856, 138, 488, 1026, 1027, 1028, 1029, 1151, 837, 310, 837, 536, 448, 403, 1018, 536, 204, 661, 664, 312, 901, 815, 547, 815, 362, 661, 661, 644, 40, 159, 159, 535, 597, 786, 1254, 1244, 448, 535, 867, 901, 903, 796, 535, 535, 804, 1244, 536, 535, 536, 403, 1018, 1244, 1244, 535, 535, 535, 492, 516, 977, 370, 977, 977, 173, 1244, 597, 1244, 821, 625, 626, 1262, 56, 103, 128, 147, 152, 174, 178, 193, 299, 353, 621, 619, 1250, 867, 40, 908, 908, 536, 196, 535, 473, 679, 266, 662, 679, 535, 777, 769, 535, 536, 539, 1242, 536, 400, 31, 85, 88, 95, 123, 183, 196, 209, 420, 423, 652, 652, 1241, 1244, 1244, 536, 1039, 747, 159, 115, 723, 179, 1244, 40, 1244, 687, 633, 1242, 536, 637, 314, 1259, 676, 671, 675, 127, 142, 342, 1244, 66, 74, 258, 1039, 815, 1098, 854, 179, 772, 874, 536, 539, 458, 149, 545, 886, 889, 1109, 415, 415, 536, 284, 308, 760, 761, 762, 173, 765, 703, 290, 477, 705, 706, 1244, 845, 539, 40, 1151, 39, 303, 310, 536, 492, 494, 1219, 1220, 1222, 173, 1152, 1161, 1190, 290, 511, 207, 536, 1190, 190, 355, 386, 1177, 60, 131, 114, 1049, 40, 1122, 1108, 1105, 535, 1152, 536, 539, 40, 1115, 1116, 1259, 536, 1243, 1190, 536, 535, 404, 535, 536, 539, 539, 40, 1063, 478, 1244, 536, 539, 295, 471, 267, 294, 1012, 1027, 37, 1030, 1030, 839, 850, 549, 1244, 438, 855, 535, 891, 535, 860, 600, 1242, 891, 891, 196, 1151, 473, 598, 403, 1018, 1244, 1194, 173, 799, 799, 1194, 1194, 1151, 438, 1190, 1190, 609, 610, 1261, 814, 815, 814, 815, 1243, 549, 536, 539, 122, 528, 535, 576, 627, 699, 974, 1250, 974, 294, 299, 353, 974, 974, 1109, 908, 44, 201, 290, 657, 535, 695, 1151, 208, 180, 330, 409, 310, 666, 667, 668, 536, 1247, 6, 778, 728, 633, 670, 1244, 536, 723, 166, 798, 601, 957, 1242, 496, 1088, 723, 1039, 1002, 671, 633, 670, 644, 535, 677, 675, 676, 386, 386, 74, 313, 74, 687, 853, 536, 1242, 773, 881, 892, 1127, 538, 138, 492, 492, 761, 385, 435, 763, 143, 766, 488, 768, 477, 703, 723, 549, 1218, 1262, 151, 39, 90, 462, 496, 39, 496, 241, 309, 1227, 310, 536, 1151, 536, 536, 478, 54, 105, 461, 1151, 1178, 1179, 1178, 1178, 536, 170, 170, 659, 1244, 1216, 1112, 539, 1120, 1262, 536, 539, 173, 1127, 536, 536, 1190, 535, 1190, 1074, 1172, 1174, 1081, 1039, 1109, 856, 403, 267, 1151, 444, 444, 179, 1244, 659, 679, 901, 861, 860, 658, 679, 679, 695, 536, 1151, 438, 536, 316, 393, 359, 800, 800, 536, 536, 536, 1244, 536, 536, 536, 539, 1249, 977, 626, 576, 628, 629, 1250, 1250, 299, 528, 659, 528, 659, 1250, 1250, 210, 696, 536, 438, 127, 471, 310, 668, 310, 667, 535, 536, 539, 608, 400, 723, 815, 40, 40, 535, 1244, 957, 687, 675, 608, 671, 535, 673, 674, 1156, 1259, 678, 676, 677, 313, 313, 535, 204, 857, 173, 887, 32, 219, 944, 181, 181, 974, 385, 419, 767, 535, 158, 496, 39, 496, 39, 496, 496, 354, 354, 1222, 145, 151, 1179, 385, 172, 340, 172, 340, 155, 1180, 1180, 1180, 61, 61, 403, 83, 536, 1153, 1116, 317, 3, 122, 294, 299, 334, 1117, 1118, 40, 1093, 369, 1103, 536, 1073, 536, 1021, 61, 127, 138, 471, 1031, 1032, 138, 218, 1033, 837, 1018, 536, 665, 536, 861, 662, 773, 773, 1244, 867, 61, 1018, 448, 609, 815, 536, 539, 528, 659, 536, 424, 1244, 65, 290, 374, 403, 669, 669, 536, 6, 400, 1244, 795, 1039, 723, 676, 671, 675, 1151, 536, 539, 859, 859, 677, 678, 854, 535, 647, 143, 295, 535, 939, 941, 945, 1004, 1013, 1020, 1039, 1050, 867, 867, 764, 1259, 1151, 769, 496, 496, 310, 310, 536, 1220, 37, 105, 188, 290, 445, 659, 659, 1259, 535, 1166, 1152, 1152, 299, 1152, 1118, 1259, 535, 536, 1109, 414, 439, 295, 403, 295, 122, 324, 479, 535, 1034, 549, 773, 666, 1018, 815, 535, 629, 26, 122, 299, 1244, 723, 957, 677, 675, 676, 536, 674, 547, 547, 678, 536, 856, 858, 601, 385, 940, 941, 942, 1040, 1041, 539, 539, 536, 1247, 389, 389, 310, 1179, 385, 318, 403, 403, 448, 473, 283, 1123, 1124, 1259, 83, 1151, 1021, 479, 1007, 535, 1008, 773, 1190, 658, 658, 723, 678, 676, 677, 859, 857, 536, 539, 678, 768, 536, 538, 448, 179, 535, 426, 426, 151, 1259, 1259, 230, 1247, 1248, 1259, 334, 1125, 536, 539, 173, 1127, 1115, 536, 478, 1190, 536, 536, 677, 678, 547, 647, 856, 1109, 158, 942, 415, 415, 5, 770, 771, 1249, 1250, 1262, 535, 122, 1250, 1223, 1124, 317, 159, 334, 1126, 1225, 536, 1034, 536, 324, 1034, 678, 601, 769, 492, 492, 536, 539, 1191, 1248, 40, 83, 536, 1126, 1250, 1219, 1126, 1007, 678, 1247, 181, 181, 771, 1058, 473, 1244, 535, 1223, 1227, 1219, 478, 1109, 535, 867, 867, 536, 1259, 83, 1123, 1222, 1227, 1034, 770, 535, 536, 1222, 536, 1123, 536 }; #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 924 "gram.y" { pg_yyget_extra(yyscanner)->parsetree = (yyvsp[(1) - (1)].list); (void) yynerrs; /* suppress compiler warning */ ;} break; case 3: #line 929 "gram.y" { pg_yyget_extra(yyscanner)->parsetree = list_make1((yyvsp[(2) - (2)].typnam)); ;} break; case 4: #line 933 "gram.y" { pg_yyget_extra(yyscanner)->parsetree = list_make1(makeRawStmt((yyvsp[(2) - (2)].node), 0)); ;} break; case 5: #line 938 "gram.y" { PLAssignStmt *n = (PLAssignStmt *) (yyvsp[(2) - (2)].node); n->nnames = 1; pg_yyget_extra(yyscanner)->parsetree = list_make1(makeRawStmt((Node *) n, 0)); ;} break; case 6: #line 946 "gram.y" { PLAssignStmt *n = (PLAssignStmt *) (yyvsp[(2) - (2)].node); n->nnames = 2; pg_yyget_extra(yyscanner)->parsetree = list_make1(makeRawStmt((Node *) n, 0)); ;} break; case 7: #line 954 "gram.y" { PLAssignStmt *n = (PLAssignStmt *) (yyvsp[(2) - (2)].node); n->nnames = 3; pg_yyget_extra(yyscanner)->parsetree = list_make1(makeRawStmt((Node *) n, 0)); ;} break; case 8: #line 974 "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 9: #line 986 "gram.y" { if ((yyvsp[(1) - (1)].node) != NULL) (yyval.list) = list_make1(makeRawStmt((yyvsp[(1) - (1)].node), 0)); else (yyval.list) = NIL; ;} break; case 136: #line 1129 "gram.y" { (yyval.node) = NULL; ;} break; case 137: #line 1136 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 138: #line 1137 "gram.y" { (yyval.str) = NULL; ;} break; case 139: #line 1141 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 140: #line 1142 "gram.y" { (yyval.list) = NIL; ;} break; case 141: #line 1146 "gram.y" { (yyval.boolean) = true; ;} break; case 142: #line 1147 "gram.y" { (yyval.boolean) = false; ;} break; case 143: #line 1151 "gram.y" { (yyval.dbehavior) = DROP_CASCADE; ;} break; case 144: #line 1152 "gram.y" { (yyval.dbehavior) = DROP_RESTRICT; ;} break; case 145: #line 1153 "gram.y" { (yyval.dbehavior) = DROP_RESTRICT; /* default */ ;} break; case 146: #line 1163 "gram.y" { CallStmt *n = makeNode(CallStmt); n->funccall = castNode(FuncCall, (yyvsp[(2) - (2)].node)); (yyval.node) = (Node *) n; ;} break; case 147: #line 1179 "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 151: #line 1201 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 152: #line 1202 "gram.y" { (yyval.list) = NIL; ;} break; case 153: #line 1206 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 154: #line 1207 "gram.y" { (yyval.list) = NIL; ;} break; case 155: #line 1212 "gram.y" { (yyval.defelt) = makeDefElem("password", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 156: #line 1217 "gram.y" { (yyval.defelt) = makeDefElem("password", (Node *)makeParamRef((yyvsp[(2) - (2)].ival), (yylsp[(2) - (2)])), (yylsp[(1) - (2)])); ;} break; case 157: #line 1222 "gram.y" { (yyval.defelt) = makeDefElem("password", NULL, (yylsp[(1) - (2)])); ;} break; case 158: #line 1226 "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 159: #line 1236 "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 160: #line 1246 "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 161: #line 1254 "gram.y" { (yyval.defelt) = makeDefElem("inherit", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 162: #line 1258 "gram.y" { (yyval.defelt) = makeDefElem("connectionlimit", (Node *) makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); ;} break; case 163: #line 1262 "gram.y" { (yyval.defelt) = makeDefElem("validUntil", (Node *) makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 164: #line 1267 "gram.y" { (yyval.defelt) = makeDefElem("rolemembers", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 165: #line 1271 "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 *) makeBoolean(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nosuperuser") == 0) (yyval.defelt) = makeDefElem("superuser", (Node *) makeBoolean(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "createrole") == 0) (yyval.defelt) = makeDefElem("createrole", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nocreaterole") == 0) (yyval.defelt) = makeDefElem("createrole", (Node *) makeBoolean(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "replication") == 0) (yyval.defelt) = makeDefElem("isreplication", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "noreplication") == 0) (yyval.defelt) = makeDefElem("isreplication", (Node *) makeBoolean(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "createdb") == 0) (yyval.defelt) = makeDefElem("createdb", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nocreatedb") == 0) (yyval.defelt) = makeDefElem("createdb", (Node *) makeBoolean(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "login") == 0) (yyval.defelt) = makeDefElem("canlogin", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nologin") == 0) (yyval.defelt) = makeDefElem("canlogin", (Node *) makeBoolean(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "bypassrls") == 0) (yyval.defelt) = makeDefElem("bypassrls", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nobypassrls") == 0) (yyval.defelt) = makeDefElem("bypassrls", (Node *) makeBoolean(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 *) makeBoolean(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 166: #line 1318 "gram.y" { (yyval.defelt) = (yyvsp[(1) - (1)].defelt); ;} break; case 167: #line 1321 "gram.y" { (yyval.defelt) = makeDefElem("sysid", (Node *) makeInteger((yyvsp[(2) - (2)].ival)), (yylsp[(1) - (2)])); ;} break; case 168: #line 1325 "gram.y" { (yyval.defelt) = makeDefElem("adminmembers", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 169: #line 1329 "gram.y" { (yyval.defelt) = makeDefElem("rolemembers", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 170: #line 1333 "gram.y" { (yyval.defelt) = makeDefElem("addroleto", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 171: #line 1337 "gram.y" { (yyval.defelt) = makeDefElem("addroleto", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 172: #line 1351 "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 173: #line 1370 "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 174: #line 1379 "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 175: #line 1390 "gram.y" { (yyval.str) = NULL; ;} break; case 176: #line 1391 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].str); ;} break; case 177: #line 1396 "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 178: #line 1405 "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 179: #line 1414 "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 180: #line 1423 "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 181: #line 1445 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = false; n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *) n; ;} break; case 182: #line 1453 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = true; n->roles = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 183: #line 1461 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = false; n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *) n; ;} break; case 184: #line 1469 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->roles = (yyvsp[(5) - (5)].list); n->missing_ok = true; (yyval.node) = (Node *) n; ;} break; case 185: #line 1477 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = false; n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *) n; ;} break; case 186: #line 1485 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = true; n->roles = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 187: #line 1503 "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 188: #line 1522 "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 189: #line 1533 "gram.y" { (yyval.ival) = +1; ;} break; case 190: #line 1534 "gram.y" { (yyval.ival) = -1; ;} break; case 191: #line 1546 "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 192: #line 1557 "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 193: #line 1568 "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 194: #line 1584 "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 195: #line 1603 "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 196: #line 1609 "gram.y" { (yyval.list) = NIL; ;} break; case 203: #line 1637 "gram.y" { VariableSetStmt *n = (yyvsp[(2) - (2)].vsetstmt); n->is_local = false; (yyval.node) = (Node *) n; ;} break; case 204: #line 1644 "gram.y" { VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->is_local = true; (yyval.node) = (Node *) n; ;} break; case 205: #line 1651 "gram.y" { VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->is_local = false; (yyval.node) = (Node *) n; ;} break; case 206: #line 1661 "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 207: #line 1670 "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 209: #line 1683 "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 210: #line 1692 "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 211: #line 1701 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; ;} break; case 212: #line 1709 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; ;} break; case 213: #line 1719 "gram.y" {(yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt);;} break; case 214: #line 1721 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_CURRENT; n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; ;} break; case 215: #line 1730 "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 216: #line 1742 "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 217: #line 1750 "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 218: #line 1759 "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 219: #line 1767 "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 220: #line 1779 "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 221: #line 1788 "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 222: #line 1796 "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 223: #line 1805 "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 224: #line 1813 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; n->name = "session_authorization"; (yyval.vsetstmt) = n; ;} break; case 225: #line 1821 "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 226: #line 1831 "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 227: #line 1841 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 228: #line 1843 "gram.y" { (yyval.str) = psprintf("%s.%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); ;} break; case 229: #line 1846 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 230: #line 1847 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 231: #line 1851 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 232: #line 1853 "gram.y" { (yyval.node) = makeAConst((yyvsp[(1) - (1)].node), (yylsp[(1) - (1)])); ;} break; case 233: #line 1855 "gram.y" { (yyval.node) = makeParamRef((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); ;} break; case 234: #line 1858 "gram.y" { (yyval.str) = "read uncommitted"; ;} break; case 235: #line 1859 "gram.y" { (yyval.str) = "read committed"; ;} break; case 236: #line 1860 "gram.y" { (yyval.str) = "repeatable read"; ;} break; case 237: #line 1861 "gram.y" { (yyval.str) = "serializable"; ;} break; case 238: #line 1865 "gram.y" { (yyval.str) = "true"; ;} break; case 239: #line 1866 "gram.y" { (yyval.str) = "false"; ;} break; case 240: #line 1867 "gram.y" { (yyval.str) = "on"; ;} break; case 241: #line 1873 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 242: #line 1886 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 243: #line 1890 "gram.y" { (yyval.node) = makeParamRef((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); ;} break; case 244: #line 1894 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 245: #line 1898 "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.ival.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 246: #line 1915 "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 247: #line 1922 "gram.y" { (yyval.node) = makeAConst((yyvsp[(1) - (1)].node), (yylsp[(1) - (1)])); ;} break; case 248: #line 1923 "gram.y" { (yyval.node) = NULL; ;} break; case 249: #line 1924 "gram.y" { (yyval.node) = NULL; ;} break; case 250: #line 1928 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 251: #line 1929 "gram.y" { (yyval.str) = NULL; ;} break; case 252: #line 1930 "gram.y" { (yyval.str) = NULL; ;} break; case 253: #line 1934 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 254: #line 1935 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 255: #line 1939 "gram.y" { (yyval.node) = (Node *) (yyvsp[(2) - (2)].vsetstmt); ;} break; case 256: #line 1943 "gram.y" { (yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt); ;} break; case 257: #line 1945 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "timezone"; (yyval.vsetstmt) = n; ;} break; case 258: #line 1953 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "transaction_isolation"; (yyval.vsetstmt) = n; ;} break; case 259: #line 1961 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "session_authorization"; (yyval.vsetstmt) = n; ;} break; case 260: #line 1972 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = (yyvsp[(1) - (1)].str); (yyval.vsetstmt) = n; ;} break; case 261: #line 1980 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET_ALL; (yyval.vsetstmt) = n; ;} break; case 262: #line 1990 "gram.y" { (yyval.vsetstmt) = (yyvsp[(2) - (2)].vsetstmt); ;} break; case 263: #line 1991 "gram.y" { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[(1) - (1)].node); ;} break; case 264: #line 1996 "gram.y" { (yyval.vsetstmt) = (yyvsp[(2) - (2)].vsetstmt); ;} break; case 265: #line 1997 "gram.y" { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[(1) - (1)].node); ;} break; case 266: #line 2003 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 267: #line 2010 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "timezone"; (yyval.node) = (Node *) n; ;} break; case 268: #line 2017 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "transaction_isolation"; (yyval.node) = (Node *) n; ;} break; case 269: #line 2024 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "session_authorization"; (yyval.node) = (Node *) n; ;} break; case 270: #line 2031 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "all"; (yyval.node) = (Node *) n; ;} break; case 271: #line 2042 "gram.y" { ConstraintsSetStmt *n = makeNode(ConstraintsSetStmt); n->constraints = (yyvsp[(3) - (4)].list); n->deferred = (yyvsp[(4) - (4)].boolean); (yyval.node) = (Node *) n; ;} break; case 272: #line 2052 "gram.y" { (yyval.list) = NIL; ;} break; case 273: #line 2053 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 274: #line 2057 "gram.y" { (yyval.boolean) = true; ;} break; case 275: #line 2058 "gram.y" { (yyval.boolean) = false; ;} break; case 276: #line 2067 "gram.y" { CheckPointStmt *n = makeNode(CheckPointStmt); (yyval.node) = (Node *) n; ;} break; case 277: #line 2083 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_ALL; (yyval.node) = (Node *) n; ;} break; case 278: #line 2090 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_TEMP; (yyval.node) = (Node *) n; ;} break; case 279: #line 2097 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_TEMP; (yyval.node) = (Node *) n; ;} break; case 280: #line 2104 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_PLANS; (yyval.node) = (Node *) n; ;} break; case 281: #line 2111 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_SEQUENCES; (yyval.node) = (Node *) n; ;} break; case 282: #line 2131 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); n->cmds = (yyvsp[(4) - (4)].list); n->objtype = OBJECT_TABLE; n->missing_ok = false; (yyval.node) = (Node *) n; ;} break; case 283: #line 2141 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); n->cmds = (yyvsp[(6) - (6)].list); n->objtype = OBJECT_TABLE; n->missing_ok = true; (yyval.node) = (Node *) n; ;} break; case 284: #line 2151 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); n->cmds = list_make1((yyvsp[(4) - (4)].node)); n->objtype = OBJECT_TABLE; n->missing_ok = false; (yyval.node) = (Node *) n; ;} break; case 285: #line 2161 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); n->cmds = list_make1((yyvsp[(6) - (6)].node)); n->objtype = OBJECT_TABLE; n->missing_ok = true; (yyval.node) = (Node *) n; ;} break; case 286: #line 2171 "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 287: #line 2183 "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 288: #line 2195 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); n->cmds = (yyvsp[(4) - (4)].list); n->objtype = OBJECT_INDEX; n->missing_ok = false; (yyval.node) = (Node *) n; ;} break; case 289: #line 2205 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); n->cmds = (yyvsp[(6) - (6)].list); n->objtype = OBJECT_INDEX; n->missing_ok = true; (yyval.node) = (Node *) n; ;} break; case 290: #line 2215 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); n->cmds = list_make1((yyvsp[(4) - (4)].node)); n->objtype = OBJECT_INDEX; n->missing_ok = false; (yyval.node) = (Node *) n; ;} break; case 291: #line 2225 "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 292: #line 2237 "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 293: #line 2249 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); n->cmds = (yyvsp[(4) - (4)].list); n->objtype = OBJECT_SEQUENCE; n->missing_ok = false; (yyval.node) = (Node *) n; ;} break; case 294: #line 2259 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); n->cmds = (yyvsp[(6) - (6)].list); n->objtype = OBJECT_SEQUENCE; n->missing_ok = true; (yyval.node) = (Node *) n; ;} break; case 295: #line 2269 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); n->cmds = (yyvsp[(4) - (4)].list); n->objtype = OBJECT_VIEW; n->missing_ok = false; (yyval.node) = (Node *) n; ;} break; case 296: #line 2279 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); n->cmds = (yyvsp[(6) - (6)].list); n->objtype = OBJECT_VIEW; n->missing_ok = true; (yyval.node) = (Node *) n; ;} break; case 297: #line 2289 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(4) - (5)].range); n->cmds = (yyvsp[(5) - (5)].list); n->objtype = OBJECT_MATVIEW; n->missing_ok = false; (yyval.node) = (Node *) n; ;} break; case 298: #line 2299 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(6) - (7)].range); n->cmds = (yyvsp[(7) - (7)].list); n->objtype = OBJECT_MATVIEW; n->missing_ok = true; (yyval.node) = (Node *) n; ;} break; case 299: #line 2309 "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 300: #line 2321 "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 301: #line 2333 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(4) - (5)].range); n->cmds = (yyvsp[(5) - (5)].list); n->objtype = OBJECT_FOREIGN_TABLE; n->missing_ok = false; (yyval.node) = (Node *) n; ;} break; case 302: #line 2343 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(6) - (7)].range); n->cmds = (yyvsp[(7) - (7)].list); n->objtype = OBJECT_FOREIGN_TABLE; n->missing_ok = true; (yyval.node) = (Node *) n; ;} break; case 303: #line 2355 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 304: #line 2356 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 305: #line 2362 "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); cmd->concurrent = false; n->def = (Node *) cmd; (yyval.node) = (Node *) n; ;} break; case 306: #line 2376 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); PartitionCmd *cmd = makeNode(PartitionCmd); n->subtype = AT_DetachPartition; cmd->name = (yyvsp[(3) - (4)].range); cmd->bound = NULL; cmd->concurrent = (yyvsp[(4) - (4)].boolean); n->def = (Node *) cmd; (yyval.node) = (Node *) n; ;} break; case 307: #line 2389 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); PartitionCmd *cmd = makeNode(PartitionCmd); n->subtype = AT_DetachPartitionFinalize; cmd->name = (yyvsp[(3) - (4)].range); cmd->bound = NULL; cmd->concurrent = false; n->def = (Node *) cmd; (yyval.node) = (Node *) n; ;} break; case 308: #line 2405 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); PartitionCmd *cmd = makeNode(PartitionCmd); n->subtype = AT_AttachPartition; cmd->name = (yyvsp[(3) - (3)].range); cmd->bound = NULL; cmd->concurrent = false; n->def = (Node *) cmd; (yyval.node) = (Node *) n; ;} break; case 309: #line 2422 "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 310: #line 2432 "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 311: #line 2442 "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 312: #line 2452 "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 313: #line 2462 "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 314: #line 2472 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropNotNull; n->name = (yyvsp[(3) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 315: #line 2481 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetNotNull; n->name = (yyvsp[(3) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 316: #line 2490 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetExpression; n->name = (yyvsp[(3) - (9)].str); n->def = (yyvsp[(8) - (9)].node); (yyval.node) = (Node *) n; ;} break; case 317: #line 2500 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropExpression; n->name = (yyvsp[(3) - (5)].str); (yyval.node) = (Node *) n; ;} break; case 318: #line 2509 "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 319: #line 2519 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStatistics; n->name = (yyvsp[(3) - (6)].str); n->def = (yyvsp[(6) - (6)].node); (yyval.node) = (Node *) n; ;} break; case 320: #line 2529 "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 = (yyvsp[(6) - (6)].node); (yyval.node) = (Node *) n; ;} break; case 321: #line 2545 "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 322: #line 2555 "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 323: #line 2565 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStorage; n->name = (yyvsp[(3) - (5)].str); n->def = (Node *) makeString((yyvsp[(5) - (5)].str)); (yyval.node) = (Node *) n; ;} break; case 324: #line 2575 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetCompression; n->name = (yyvsp[(3) - (5)].str); n->def = (Node *) makeString((yyvsp[(5) - (5)].str)); (yyval.node) = (Node *) n; ;} break; case 325: #line 2585 "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 326: #line 2602 "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 327: #line 2612 "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 328: #line 2622 "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 329: #line 2632 "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 330: #line 2643 "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 331: #line 2657 "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 332: #line 2673 "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 333: #line 2683 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddConstraint; n->def = (yyvsp[(2) - (2)].node); (yyval.node) = (Node *) n; ;} break; case 334: #line 2692 "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)]), "FOREIGN KEY", &c->deferrable, &c->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *) n; ;} break; case 335: #line 2708 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ValidateConstraint; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 336: #line 2717 "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 337: #line 2728 "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 338: #line 2739 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropOids; (yyval.node) = (Node *) n; ;} break; case 339: #line 2747 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ClusterOn; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 340: #line 2756 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropCluster; n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 341: #line 2765 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetLogged; (yyval.node) = (Node *) n; ;} break; case 342: #line 2773 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetUnLogged; (yyval.node) = (Node *) n; ;} break; case 343: #line 2781 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrig; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 344: #line 2790 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableAlwaysTrig; n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *) n; ;} break; case 345: #line 2799 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableReplicaTrig; n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *) n; ;} break; case 346: #line 2808 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrigAll; (yyval.node) = (Node *) n; ;} break; case 347: #line 2816 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrigUser; (yyval.node) = (Node *) n; ;} break; case 348: #line 2824 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrig; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 349: #line 2833 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrigAll; (yyval.node) = (Node *) n; ;} break; case 350: #line 2841 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrigUser; (yyval.node) = (Node *) n; ;} break; case 351: #line 2849 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableRule; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 352: #line 2858 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableAlwaysRule; n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *) n; ;} break; case 353: #line 2867 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableReplicaRule; n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *) n; ;} break; case 354: #line 2876 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableRule; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 355: #line 2885 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddInherit; n->def = (Node *) (yyvsp[(2) - (2)].range); (yyval.node) = (Node *) n; ;} break; case 356: #line 2894 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropInherit; n->def = (Node *) (yyvsp[(3) - (3)].range); (yyval.node) = (Node *) n; ;} break; case 357: #line 2903 "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 358: #line 2914 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropOf; (yyval.node) = (Node *) n; ;} break; case 359: #line 2922 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ChangeOwner; n->newowner = (yyvsp[(3) - (3)].rolespec); (yyval.node) = (Node *) n; ;} break; case 360: #line 2931 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetAccessMethod; n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *) n; ;} break; case 361: #line 2940 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetTableSpace; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 362: #line 2949 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetRelOptions; n->def = (Node *) (yyvsp[(2) - (2)].list); (yyval.node) = (Node *) n; ;} break; case 363: #line 2958 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ResetRelOptions; n->def = (Node *) (yyvsp[(2) - (2)].list); (yyval.node) = (Node *) n; ;} break; case 364: #line 2967 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ReplicaIdentity; n->def = (yyvsp[(3) - (3)].node); (yyval.node) = (Node *) n; ;} break; case 365: #line 2976 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableRowSecurity; (yyval.node) = (Node *) n; ;} break; case 366: #line 2984 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableRowSecurity; (yyval.node) = (Node *) n; ;} break; case 367: #line 2992 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ForceRowSecurity; (yyval.node) = (Node *) n; ;} break; case 368: #line 3000 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_NoForceRowSecurity; (yyval.node) = (Node *) n; ;} break; case 369: #line 3007 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_GenericOptions; n->def = (Node *) (yyvsp[(1) - (1)].list); (yyval.node) = (Node *) n; ;} break; case 370: #line 3017 "gram.y" { (yyval.node) = (yyvsp[(3) - (3)].node); ;} break; case 371: #line 3018 "gram.y" { (yyval.node) = NULL; ;} break; case 372: #line 3023 "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 373: #line 3031 "gram.y" { (yyval.node) = NULL; ;} break; case 374: #line 3035 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 375: #line 3036 "gram.y" { (yyval.node) = NULL; ;} break; case 376: #line 3041 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_NOTHING; n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 377: #line 3049 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_FULL; n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 378: #line 3057 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_DEFAULT; n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 379: #line 3065 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_INDEX; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 380: #line 3075 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 381: #line 3078 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 382: #line 3079 "gram.y" { (yyval.list) = NIL; ;} break; case 383: #line 3083 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 384: #line 3084 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 385: #line 3090 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 386: #line 3094 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); ;} break; case 387: #line 3098 "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 388: #line 3103 "gram.y" { (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str), NULL, DEFELEM_UNSPEC, (yylsp[(1) - (3)])); ;} break; case 389: #line 3110 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 390: #line 3112 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 391: #line 3117 "gram.y" { (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); ;} break; case 392: #line 3121 "gram.y" { (yyval.defelt) = makeDefElem("restart", (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 393: #line 3125 "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 394: #line 3136 "gram.y" { (yyval.defelt) = makeDefElem("generated", (Node *) makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); ;} break; case 395: #line 3142 "gram.y" { (yyval.node) = (Node *) makeInteger((yyvsp[(1) - (1)].ival)); ;} break; case 396: #line 3143 "gram.y" { (yyval.node) = NULL; ;} break; case 397: #line 3147 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 398: #line 3148 "gram.y" { (yyval.str) = NULL; ;} break; case 399: #line 3154 "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 400: #line 3207 "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 401: #line 3220 "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 402: #line 3234 "gram.y" { PartitionBoundSpec *n = makeNode(PartitionBoundSpec); n->is_default = true; n->location = (yylsp[(1) - (1)]); (yyval.partboundspec) = n; ;} break; case 403: #line 3246 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (Node *) makeInteger((yyvsp[(2) - (2)].ival)), (yylsp[(1) - (2)])); ;} break; case 404: #line 3253 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 405: #line 3257 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 406: #line 3271 "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->objtype = OBJECT_TYPE; (yyval.node) = (Node *) n; ;} break; case 407: #line 3283 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 408: #line 3284 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 409: #line 3290 "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 410: #line 3300 "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 411: #line 3311 "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 412: #line 3322 "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 413: #line 3349 "gram.y" { ClosePortalStmt *n = makeNode(ClosePortalStmt); n->portalname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 414: #line 3356 "gram.y" { ClosePortalStmt *n = makeNode(ClosePortalStmt); n->portalname = NULL; (yyval.node) = (Node *) n; ;} break; case 415: #line 3392 "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 416: #line 3426 "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 417: #line 3448 "gram.y" { (yyval.boolean) = true; ;} break; case 418: #line 3449 "gram.y" { (yyval.boolean) = false; ;} break; case 419: #line 3453 "gram.y" { (yyval.boolean) = true; ;} break; case 420: #line 3454 "gram.y" { (yyval.boolean) = false; ;} break; case 421: #line 3463 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 422: #line 3464 "gram.y" { (yyval.str) = NULL; ;} break; case 423: #line 3465 "gram.y" { (yyval.str) = NULL; ;} break; case 424: #line 3468 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 425: #line 3469 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 426: #line 3474 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 427: #line 3475 "gram.y" { (yyval.list) = NIL; ;} break; case 428: #line 3480 "gram.y" { (yyval.defelt) = makeDefElem("format", (Node *) makeString("binary"), (yylsp[(1) - (1)])); ;} break; case 429: #line 3484 "gram.y" { (yyval.defelt) = makeDefElem("freeze", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 430: #line 3488 "gram.y" { (yyval.defelt) = makeDefElem("delimiter", (Node *) makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 431: #line 3492 "gram.y" { (yyval.defelt) = makeDefElem("null", (Node *) makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 432: #line 3496 "gram.y" { (yyval.defelt) = makeDefElem("format", (Node *) makeString("csv"), (yylsp[(1) - (1)])); ;} break; case 433: #line 3500 "gram.y" { (yyval.defelt) = makeDefElem("header", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 434: #line 3504 "gram.y" { (yyval.defelt) = makeDefElem("quote", (Node *) makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 435: #line 3508 "gram.y" { (yyval.defelt) = makeDefElem("escape", (Node *) makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 436: #line 3512 "gram.y" { (yyval.defelt) = makeDefElem("force_quote", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 437: #line 3516 "gram.y" { (yyval.defelt) = makeDefElem("force_quote", (Node *) makeNode(A_Star), (yylsp[(1) - (3)])); ;} break; case 438: #line 3520 "gram.y" { (yyval.defelt) = makeDefElem("force_not_null", (Node *) (yyvsp[(4) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 439: #line 3524 "gram.y" { (yyval.defelt) = makeDefElem("force_not_null", (Node *) makeNode(A_Star), (yylsp[(1) - (4)])); ;} break; case 440: #line 3528 "gram.y" { (yyval.defelt) = makeDefElem("force_null", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 441: #line 3532 "gram.y" { (yyval.defelt) = makeDefElem("force_null", (Node *) makeNode(A_Star), (yylsp[(1) - (3)])); ;} break; case 442: #line 3536 "gram.y" { (yyval.defelt) = makeDefElem("encoding", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 443: #line 3545 "gram.y" { (yyval.defelt) = makeDefElem("format", (Node *) makeString("binary"), (yylsp[(1) - (1)])); ;} break; case 444: #line 3548 "gram.y" { (yyval.defelt) = NULL; ;} break; case 445: #line 3553 "gram.y" { (yyval.defelt) = makeDefElem("delimiter", (Node *) makeString((yyvsp[(3) - (3)].str)), (yylsp[(2) - (3)])); ;} break; case 446: #line 3556 "gram.y" { (yyval.defelt) = NULL; ;} break; case 449: #line 3567 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 450: #line 3571 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 451: #line 3578 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 452: #line 3584 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 453: #line 3585 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].node); ;} break; case 454: #line 3586 "gram.y" { (yyval.node) = (Node *) makeNode(A_Star); ;} break; case 455: #line 3587 "gram.y" { (yyval.node) = (Node *) makeString("default"); ;} break; case 456: #line 3588 "gram.y" { (yyval.node) = (Node *) (yyvsp[(2) - (3)].list); ;} break; case 457: #line 3589 "gram.y" { (yyval.node) = NULL; ;} break; case 458: #line 3594 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 459: #line 3598 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 460: #line 3605 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 461: #line 3619 "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 462: #line 3639 "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 463: #line 3659 "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 464: #line 3680 "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 465: #line 3701 "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 466: #line 3722 "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 467: #line 3753 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 468: #line 3754 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 469: #line 3755 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 470: #line 3756 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 471: #line 3758 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), parser_errposition((yylsp[(1) - (2)])))); (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 472: #line 3765 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), parser_errposition((yylsp[(1) - (2)])))); (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 473: #line 3771 "gram.y" { (yyval.ival) = RELPERSISTENCE_UNLOGGED; ;} break; case 474: #line 3772 "gram.y" { (yyval.ival) = RELPERSISTENCE_PERMANENT; ;} break; case 475: #line 3776 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 476: #line 3777 "gram.y" { (yyval.list) = NIL; ;} break; case 477: #line 3781 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 478: #line 3782 "gram.y" { (yyval.list) = NIL; ;} break; case 479: #line 3787 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 480: #line 3791 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 481: #line 3798 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 482: #line 3802 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 483: #line 3808 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 484: #line 3809 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 485: #line 3810 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 486: #line 3814 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 487: #line 3815 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 488: #line 3819 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = (yyvsp[(1) - (6)].str); n->typeName = (yyvsp[(2) - (6)].typnam); n->storage_name = (yyvsp[(3) - (6)].str); n->compression = (yyvsp[(4) - (6)].str); 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[(5) - (6)].list); SplitColQualList((yyvsp[(6) - (6)].list), &n->constraints, &n->collClause, yyscanner); n->location = (yylsp[(1) - (6)]); (yyval.node) = (Node *) n; ;} break; case 489: #line 3843 "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 490: #line 3862 "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 491: #line 3883 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 492: #line 3884 "gram.y" { (yyval.str) = pstrdup("default"); ;} break; case 493: #line 3888 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 494: #line 3889 "gram.y" { (yyval.str) = NULL; ;} break; case 495: #line 3893 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 496: #line 3894 "gram.y" { (yyval.str) = pstrdup("default"); ;} break; case 497: #line 3898 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 498: #line 3899 "gram.y" { (yyval.str) = NULL; ;} break; case 499: #line 3903 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 500: #line 3904 "gram.y" { (yyval.list) = NIL; ;} break; case 501: #line 3909 "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 502: #line 3916 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 503: #line 3917 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 504: #line 3919 "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 505: #line 3951 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NOTNULL; n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) n; ;} break; case 506: #line 3959 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NULL; n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *) n; ;} break; case 507: #line 3967 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; n->location = (yylsp[(1) - (4)]); n->nulls_not_distinct = !(yyvsp[(2) - (4)].boolean); n->keys = NULL; n->options = (yyvsp[(3) - (4)].list); n->indexname = NULL; n->indexspace = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *) n; ;} break; case 508: #line 3980 "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 509: #line 3992 "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 510: #line 4005 "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 511: #line 4015 "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 512: #line 4025 "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 513: #line 4049 "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 = ((yyvsp[(5) - (5)].keyactions))->updateAction->action; n->fk_del_action = ((yyvsp[(5) - (5)].keyactions))->deleteAction->action; n->fk_del_set_cols = ((yyvsp[(5) - (5)].keyactions))->deleteAction->cols; n->skip_validation = false; n->initially_valid = true; (yyval.node) = (Node *) n; ;} break; case 514: #line 4068 "gram.y" { (yyval.boolean) = true; ;} break; case 515: #line 4069 "gram.y" { (yyval.boolean) = false; ;} break; case 516: #line 4070 "gram.y" { (yyval.boolean) = true; ;} break; case 517: #line 4074 "gram.y" { (yyval.ival) = ATTRIBUTE_IDENTITY_ALWAYS; ;} break; case 518: #line 4075 "gram.y" { (yyval.ival) = ATTRIBUTE_IDENTITY_BY_DEFAULT; ;} break; case 519: #line 4095 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_DEFERRABLE; n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *) n; ;} break; case 520: #line 4103 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_NOT_DEFERRABLE; n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) n; ;} break; case 521: #line 4111 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_DEFERRED; n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) n; ;} break; case 522: #line 4119 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_IMMEDIATE; n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) n; ;} break; case 523: #line 4131 "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 524: #line 4142 "gram.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); ;} break; case 525: #line 4143 "gram.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) & ~(yyvsp[(3) - (3)].ival); ;} break; case 526: #line 4144 "gram.y" { (yyval.ival) = 0; ;} break; case 527: #line 4148 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_COMMENTS; ;} break; case 528: #line 4149 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_COMPRESSION; ;} break; case 529: #line 4150 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_CONSTRAINTS; ;} break; case 530: #line 4151 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_DEFAULTS; ;} break; case 531: #line 4152 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_IDENTITY; ;} break; case 532: #line 4153 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_GENERATED; ;} break; case 533: #line 4154 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_INDEXES; ;} break; case 534: #line 4155 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_STATISTICS; ;} break; case 535: #line 4156 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_STORAGE; ;} break; case 536: #line 4157 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_ALL; ;} break; case 537: #line 4167 "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 538: #line 4174 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 539: #line 4179 "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 540: #line 4194 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; n->location = (yylsp[(1) - (9)]); n->nulls_not_distinct = !(yyvsp[(2) - (9)].boolean); 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)]), "UNIQUE", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *) n; ;} break; case 541: #line 4211 "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 542: #line 4228 "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 543: #line 4244 "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 544: #line 4262 "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 545: #line 4281 "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 = ((yyvsp[(10) - (11)].keyactions))->updateAction->action; n->fk_del_action = ((yyvsp[(10) - (11)].keyactions))->deleteAction->action; n->fk_del_set_cols = ((yyvsp[(10) - (11)].keyactions))->deleteAction->cols; 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 546: #line 4315 "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 547: #line 4322 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 548: #line 4327 "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 549: #line 4341 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NOTNULL; n->location = (yylsp[(1) - (3)]); n->keys = list_make1(makeString("value")); /* no NOT VALID support yet */ processCASbits((yyvsp[(3) - (3)].ival), (yylsp[(3) - (3)]), "NOT NULL", NULL, NULL, NULL, &n->is_no_inherit, yyscanner); n->initially_valid = true; (yyval.node) = (Node *) n; ;} break; case 550: #line 4356 "gram.y" { (yyval.boolean) = true; ;} break; case 551: #line 4357 "gram.y" { (yyval.boolean) = false; ;} break; case 552: #line 4361 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 553: #line 4362 "gram.y" { (yyval.list) = NIL; ;} break; case 554: #line 4366 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 555: #line 4367 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 556: #line 4371 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 557: #line 4376 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 558: #line 4377 "gram.y" { (yyval.list) = NIL; ;} break; case 559: #line 4381 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_FULL; ;} break; case 560: #line 4385 "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 561: #line 4393 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_SIMPLE; ;} break; case 562: #line 4397 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_SIMPLE; ;} break; case 563: #line 4403 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; case 564: #line 4405 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; case 565: #line 4409 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (3)].ielem), (yyvsp[(3) - (3)].list)); ;} break; case 566: #line 4414 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (6)].ielem), (yyvsp[(5) - (6)].list)); ;} break; case 567: #line 4420 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; case 568: #line 4421 "gram.y" { (yyval.node) = NULL; ;} break; case 569: #line 4426 "gram.y" { KeyActions *n = palloc(sizeof(KeyActions)); n->updateAction = (yyvsp[(1) - (1)].keyaction); n->deleteAction = palloc(sizeof(KeyAction)); n->deleteAction->action = FKCONSTR_ACTION_NOACTION; n->deleteAction->cols = NIL; (yyval.keyactions) = n; ;} break; case 570: #line 4436 "gram.y" { KeyActions *n = palloc(sizeof(KeyActions)); n->updateAction = palloc(sizeof(KeyAction)); n->updateAction->action = FKCONSTR_ACTION_NOACTION; n->updateAction->cols = NIL; n->deleteAction = (yyvsp[(1) - (1)].keyaction); (yyval.keyactions) = n; ;} break; case 571: #line 4446 "gram.y" { KeyActions *n = palloc(sizeof(KeyActions)); n->updateAction = (yyvsp[(1) - (2)].keyaction); n->deleteAction = (yyvsp[(2) - (2)].keyaction); (yyval.keyactions) = n; ;} break; case 572: #line 4454 "gram.y" { KeyActions *n = palloc(sizeof(KeyActions)); n->updateAction = (yyvsp[(2) - (2)].keyaction); n->deleteAction = (yyvsp[(1) - (2)].keyaction); (yyval.keyactions) = n; ;} break; case 573: #line 4462 "gram.y" { KeyActions *n = palloc(sizeof(KeyActions)); n->updateAction = palloc(sizeof(KeyAction)); n->updateAction->action = FKCONSTR_ACTION_NOACTION; n->updateAction->cols = NIL; n->deleteAction = palloc(sizeof(KeyAction)); n->deleteAction->action = FKCONSTR_ACTION_NOACTION; n->deleteAction->cols = NIL; (yyval.keyactions) = n; ;} break; case 574: #line 4476 "gram.y" { if (((yyvsp[(3) - (3)].keyaction))->cols) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("a column list with %s is only supported for ON DELETE actions", ((yyvsp[(3) - (3)].keyaction))->action == FKCONSTR_ACTION_SETNULL ? "SET NULL" : "SET DEFAULT"), parser_errposition((yylsp[(1) - (3)])))); (yyval.keyaction) = (yyvsp[(3) - (3)].keyaction); ;} break; case 575: #line 4488 "gram.y" { (yyval.keyaction) = (yyvsp[(3) - (3)].keyaction); ;} break; case 576: #line 4495 "gram.y" { KeyAction *n = palloc(sizeof(KeyAction)); n->action = FKCONSTR_ACTION_NOACTION; n->cols = NIL; (yyval.keyaction) = n; ;} break; case 577: #line 4503 "gram.y" { KeyAction *n = palloc(sizeof(KeyAction)); n->action = FKCONSTR_ACTION_RESTRICT; n->cols = NIL; (yyval.keyaction) = n; ;} break; case 578: #line 4511 "gram.y" { KeyAction *n = palloc(sizeof(KeyAction)); n->action = FKCONSTR_ACTION_CASCADE; n->cols = NIL; (yyval.keyaction) = n; ;} break; case 579: #line 4519 "gram.y" { KeyAction *n = palloc(sizeof(KeyAction)); n->action = FKCONSTR_ACTION_SETNULL; n->cols = (yyvsp[(3) - (3)].list); (yyval.keyaction) = n; ;} break; case 580: #line 4527 "gram.y" { KeyAction *n = palloc(sizeof(KeyAction)); n->action = FKCONSTR_ACTION_SETDEFAULT; n->cols = (yyvsp[(3) - (3)].list); (yyval.keyaction) = n; ;} break; case 581: #line 4536 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 582: #line 4537 "gram.y" { (yyval.list) = NIL; ;} break; case 583: #line 4541 "gram.y" { (yyval.partspec) = (yyvsp[(1) - (1)].partspec); ;} break; case 584: #line 4542 "gram.y" { (yyval.partspec) = NULL; ;} break; case 585: #line 4546 "gram.y" { PartitionSpec *n = makeNode(PartitionSpec); n->strategy = parsePartitionStrategy((yyvsp[(3) - (6)].str)); n->partParams = (yyvsp[(5) - (6)].list); n->location = (yylsp[(1) - (6)]); (yyval.partspec) = n; ;} break; case 586: #line 4557 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].partelem)); ;} break; case 587: #line 4558 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].partelem)); ;} break; case 588: #line 4562 "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 589: #line 4573 "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 590: #line 4584 "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 591: #line 4597 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 592: #line 4598 "gram.y" { (yyval.str) = NULL; ;} break; case 593: #line 4603 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 594: #line 4604 "gram.y" { (yyval.list) = NIL; ;} break; case 595: #line 4605 "gram.y" { (yyval.list) = NIL; ;} break; case 596: #line 4608 "gram.y" { (yyval.oncommit) = ONCOMMIT_DROP; ;} break; case 597: #line 4609 "gram.y" { (yyval.oncommit) = ONCOMMIT_DELETE_ROWS; ;} break; case 598: #line 4610 "gram.y" { (yyval.oncommit) = ONCOMMIT_PRESERVE_ROWS; ;} break; case 599: #line 4611 "gram.y" { (yyval.oncommit) = ONCOMMIT_NOOP; ;} break; case 600: #line 4614 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 601: #line 4615 "gram.y" { (yyval.str) = NULL; ;} break; case 602: #line 4618 "gram.y" { (yyval.str) = (yyvsp[(4) - (4)].str); ;} break; case 603: #line 4619 "gram.y" { (yyval.str) = NULL; ;} break; case 604: #line 4622 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].str); ;} break; case 605: #line 4644 "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 606: #line 4657 "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 607: #line 4677 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].selem)); ;} break; case 608: #line 4678 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].selem)); ;} break; case 609: #line 4682 "gram.y" { (yyval.selem) = makeNode(StatsElem); (yyval.selem)->name = (yyvsp[(1) - (1)].str); (yyval.selem)->expr = NULL; ;} break; case 610: #line 4688 "gram.y" { (yyval.selem) = makeNode(StatsElem); (yyval.selem)->name = NULL; (yyval.selem)->expr = (yyvsp[(1) - (1)].node); ;} break; case 611: #line 4694 "gram.y" { (yyval.selem) = makeNode(StatsElem); (yyval.selem)->name = NULL; (yyval.selem)->expr = (yyvsp[(2) - (3)].node); ;} break; case 612: #line 4711 "gram.y" { AlterStatsStmt *n = makeNode(AlterStatsStmt); n->defnames = (yyvsp[(3) - (6)].list); n->missing_ok = false; n->stxstattarget = (yyvsp[(6) - (6)].node); (yyval.node) = (Node *) n; ;} break; case 613: #line 4720 "gram.y" { AlterStatsStmt *n = makeNode(AlterStatsStmt); n->defnames = (yyvsp[(5) - (8)].list); n->missing_ok = true; n->stxstattarget = (yyvsp[(8) - (8)].node); (yyval.node) = (Node *) n; ;} break; case 614: #line 4742 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ctas->query = (yyvsp[(6) - (7)].node); ctas->into = (yyvsp[(4) - (7)].into); ctas->objtype = 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 615: #line 4756 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ctas->query = (yyvsp[(9) - (10)].node); ctas->into = (yyvsp[(7) - (10)].into); ctas->objtype = 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 616: #line 4774 "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 617: #line 4788 "gram.y" { (yyval.boolean) = true; ;} break; case 618: #line 4789 "gram.y" { (yyval.boolean) = false; ;} break; case 619: #line 4790 "gram.y" { (yyval.boolean) = true; ;} break; case 620: #line 4803 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ctas->query = (yyvsp[(7) - (8)].node); ctas->into = (yyvsp[(5) - (8)].into); ctas->objtype = 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 621: #line 4817 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ctas->query = (yyvsp[(10) - (11)].node); ctas->into = (yyvsp[(8) - (11)].into); ctas->objtype = 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 622: #line 4834 "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 623: #line 4847 "gram.y" { (yyval.ival) = RELPERSISTENCE_UNLOGGED; ;} break; case 624: #line 4848 "gram.y" { (yyval.ival) = RELPERSISTENCE_PERMANENT; ;} break; case 625: #line 4861 "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 626: #line 4882 "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 627: #line 4893 "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 628: #line 4907 "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 629: #line 4916 "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 630: #line 4927 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 631: #line 4928 "gram.y" { (yyval.list) = NIL; ;} break; case 632: #line 4931 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 633: #line 4932 "gram.y" { (yyval.list) = NIL; ;} break; case 634: #line 4935 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 635: #line 4936 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 636: #line 4940 "gram.y" { (yyval.defelt) = makeDefElem("as", (Node *) (yyvsp[(2) - (2)].typnam), (yylsp[(1) - (2)])); ;} break; case 637: #line 4944 "gram.y" { (yyval.defelt) = makeDefElem("cache", (Node *) (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 638: #line 4948 "gram.y" { (yyval.defelt) = makeDefElem("cycle", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 639: #line 4952 "gram.y" { (yyval.defelt) = makeDefElem("cycle", (Node *) makeBoolean(false), (yylsp[(1) - (2)])); ;} break; case 640: #line 4956 "gram.y" { (yyval.defelt) = makeDefElem("increment", (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 641: #line 4960 "gram.y" { (yyval.defelt) = makeDefElem("logged", NULL, (yylsp[(1) - (1)])); ;} break; case 642: #line 4964 "gram.y" { (yyval.defelt) = makeDefElem("maxvalue", (Node *) (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 643: #line 4968 "gram.y" { (yyval.defelt) = makeDefElem("minvalue", (Node *) (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 644: #line 4972 "gram.y" { (yyval.defelt) = makeDefElem("maxvalue", NULL, (yylsp[(1) - (2)])); ;} break; case 645: #line 4976 "gram.y" { (yyval.defelt) = makeDefElem("minvalue", NULL, (yylsp[(1) - (2)])); ;} break; case 646: #line 4980 "gram.y" { (yyval.defelt) = makeDefElem("owned_by", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 647: #line 4984 "gram.y" { (yyval.defelt) = makeDefElem("sequence_name", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 648: #line 4988 "gram.y" { (yyval.defelt) = makeDefElem("start", (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 649: #line 4992 "gram.y" { (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); ;} break; case 650: #line 4996 "gram.y" { (yyval.defelt) = makeDefElem("restart", (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 651: #line 5000 "gram.y" { (yyval.defelt) = makeDefElem("unlogged", NULL, (yylsp[(1) - (1)])); ;} break; case 654: #line 5010 "gram.y" { (yyval.node) = (Node *) makeFloat((yyvsp[(1) - (1)].str)); ;} break; case 655: #line 5011 "gram.y" { (yyval.node) = (Node *) makeFloat((yyvsp[(2) - (2)].str)); ;} break; case 656: #line 5013 "gram.y" { Float *f = makeFloat((yyvsp[(2) - (2)].str)); doNegateFloat(f); (yyval.node) = (Node *) f; ;} break; case 657: #line 5019 "gram.y" { (yyval.node) = (Node *) makeInteger((yyvsp[(1) - (1)].ival)); ;} break; case 658: #line 5022 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 659: #line 5023 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 660: #line 5036 "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 661: #line 5053 "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 662: #line 5067 "gram.y" { (yyval.boolean) = true; ;} break; case 663: #line 5068 "gram.y" { (yyval.boolean) = false; ;} break; case 664: #line 5076 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 665: #line 5077 "gram.y" { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); ;} break; case 666: #line 5081 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 667: #line 5082 "gram.y" { (yyval.list) = NIL; ;} break; case 668: #line 5086 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 669: #line 5087 "gram.y" { (yyval.list) = NIL; ;} break; case 670: #line 5091 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 671: #line 5092 "gram.y" { (yyval.list) = NIL; ;} break; case 674: #line 5108 "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 675: #line 5119 "gram.y" { (yyval.rolespec) = (yyvsp[(2) - (2)].rolespec); ;} break; case 676: #line 5120 "gram.y" { (yyval.rolespec) = NULL; ;} break; case 677: #line 5134 "gram.y" { DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); n->tablespacename = (yyvsp[(3) - (3)].str); n->missing_ok = false; (yyval.node) = (Node *) n; ;} break; case 678: #line 5142 "gram.y" { DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); n->tablespacename = (yyvsp[(5) - (5)].str); n->missing_ok = true; (yyval.node) = (Node *) n; ;} break; case 679: #line 5160 "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 680: #line 5169 "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 681: #line 5181 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 682: #line 5183 "gram.y" { (yyval.list) = NIL; ;} break; case 683: #line 5188 "gram.y" { (yyval.defelt) = makeDefElem("schema", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 684: #line 5192 "gram.y" { (yyval.defelt) = makeDefElem("new_version", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 685: #line 5196 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("CREATE EXTENSION ... FROM is no longer supported"), parser_errposition((yylsp[(1) - (2)])))); ;} break; case 686: #line 5203 "gram.y" { (yyval.defelt) = makeDefElem("cascade", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 687: #line 5215 "gram.y" { AlterExtensionStmt *n = makeNode(AlterExtensionStmt); n->extname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 688: #line 5226 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 689: #line 5228 "gram.y" { (yyval.list) = NIL; ;} break; case 690: #line 5233 "gram.y" { (yyval.defelt) = makeDefElem("new_version", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 691: #line 5246 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = (yyvsp[(5) - (6)].objtype); n->object = (Node *) makeString((yyvsp[(6) - (6)].str)); (yyval.node) = (Node *) n; ;} break; case 692: #line 5256 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = (yyvsp[(5) - (6)].objtype); n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *) n; ;} break; case 693: #line 5266 "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 694: #line 5276 "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 695: #line 5286 "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 696: #line 5296 "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 697: #line 5306 "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 698: #line 5316 "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 699: #line 5326 "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 700: #line 5336 "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 701: #line 5346 "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 702: #line 5356 "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 703: #line 5366 "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 704: #line 5385 "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 705: #line 5396 "gram.y" { (yyval.defelt) = makeDefElem("handler", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 706: #line 5397 "gram.y" { (yyval.defelt) = makeDefElem("handler", NULL, (yylsp[(1) - (2)])); ;} break; case 707: #line 5398 "gram.y" { (yyval.defelt) = makeDefElem("validator", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 708: #line 5399 "gram.y" { (yyval.defelt) = makeDefElem("validator", NULL, (yylsp[(1) - (2)])); ;} break; case 709: #line 5403 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 710: #line 5404 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 711: #line 5408 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 712: #line 5409 "gram.y" { (yyval.list) = NIL; ;} break; case 713: #line 5420 "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 714: #line 5429 "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 715: #line 5441 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 716: #line 5442 "gram.y" { (yyval.list) = NIL; ;} break; case 717: #line 5447 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 718: #line 5451 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 719: #line 5458 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 720: #line 5463 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 721: #line 5467 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 722: #line 5474 "gram.y" { (yyval.defelt) = (yyvsp[(1) - (1)].defelt); ;} break; case 723: #line 5478 "gram.y" { (yyval.defelt) = (yyvsp[(2) - (2)].defelt); (yyval.defelt)->defaction = DEFELEM_SET; ;} break; case 724: #line 5483 "gram.y" { (yyval.defelt) = (yyvsp[(2) - (2)].defelt); (yyval.defelt)->defaction = DEFELEM_ADD; ;} break; case 725: #line 5488 "gram.y" { (yyval.defelt) = makeDefElemExtended(NULL, (yyvsp[(2) - (2)].str), NULL, DEFELEM_DROP, (yylsp[(2) - (2)])); ;} break; case 726: #line 5495 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 727: #line 5501 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 728: #line 5506 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 729: #line 5518 "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 730: #line 5531 "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 731: #line 5545 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 732: #line 5546 "gram.y" { (yyval.str) = NULL; ;} break; case 733: #line 5551 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 734: #line 5552 "gram.y" { (yyval.str) = NULL; ;} break; case 735: #line 5556 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 736: #line 5557 "gram.y" { (yyval.str) = NULL; ;} break; case 737: #line 5568 "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 738: #line 5578 "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 739: #line 5587 "gram.y" { AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); n->servername = (yyvsp[(3) - (4)].str); n->options = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *) n; ;} break; case 740: #line 5607 "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 741: #line 5628 "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 742: #line 5649 "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 743: #line 5671 "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 744: #line 5704 "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 745: #line 5718 "gram.y" { (yyval.ival) = FDW_IMPORT_SCHEMA_LIMIT_TO; ;} break; case 746: #line 5719 "gram.y" { (yyval.ival) = FDW_IMPORT_SCHEMA_EXCEPT; ;} break; case 747: #line 5724 "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 748: #line 5732 "gram.y" { ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); n->type = FDW_IMPORT_SCHEMA_ALL; n->table_names = NIL; (yyval.importqual) = n; ;} break; case 749: #line 5748 "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 750: #line 5758 "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 751: #line 5770 "gram.y" { (yyval.rolespec) = (yyvsp[(1) - (1)].rolespec); ;} break; case 752: #line 5771 "gram.y" { (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[(1) - (1)])); ;} break; case 753: #line 5784 "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 754: #line 5793 "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 755: #line 5811 "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 756: #line 5838 "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 757: #line 5855 "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 758: #line 5868 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; case 759: #line 5869 "gram.y" { (yyval.node) = NULL; ;} break; case 760: #line 5873 "gram.y" { (yyval.node) = (yyvsp[(4) - (5)].node); ;} break; case 761: #line 5874 "gram.y" { (yyval.node) = NULL; ;} break; case 762: #line 5878 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 763: #line 5879 "gram.y" { (yyval.list) = list_make1(makeRoleSpec(ROLESPEC_PUBLIC, -1)); ;} break; case 764: #line 5883 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 765: #line 5884 "gram.y" { (yyval.list) = NULL; ;} break; case 766: #line 5889 "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 767: #line 5902 "gram.y" { (yyval.boolean) = true; ;} break; case 768: #line 5906 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 769: #line 5907 "gram.y" { (yyval.str) = "all"; ;} break; case 770: #line 5911 "gram.y" { (yyval.str) = "all"; ;} break; case 771: #line 5912 "gram.y" { (yyval.str) = "select"; ;} break; case 772: #line 5913 "gram.y" { (yyval.str) = "insert"; ;} break; case 773: #line 5914 "gram.y" { (yyval.str) = "update"; ;} break; case 774: #line 5915 "gram.y" { (yyval.str) = "delete"; ;} break; case 775: #line 5926 "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 776: #line 5937 "gram.y" { (yyval.chr) = AMTYPE_INDEX; ;} break; case 777: #line 5938 "gram.y" { (yyval.chr) = AMTYPE_TABLE; ;} break; case 778: #line 5952 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); n->replace = (yyvsp[(2) - (17)].boolean); n->isconstraint = false; n->trigname = (yyvsp[(4) - (17)].str); n->relation = (yyvsp[(8) - (17)].range); n->funcname = (yyvsp[(14) - (17)].list); n->args = (yyvsp[(16) - (17)].list); n->row = (yyvsp[(10) - (17)].boolean); n->timing = (yyvsp[(5) - (17)].ival); n->events = intVal(linitial((yyvsp[(6) - (17)].list))); n->columns = (List *) lsecond((yyvsp[(6) - (17)].list)); n->whenClause = (yyvsp[(11) - (17)].node); n->transitionRels = (yyvsp[(9) - (17)].list); n->deferrable = false; n->initdeferred = false; n->constrrel = NULL; (yyval.node) = (Node *) n; ;} break; case 779: #line 5976 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); n->replace = (yyvsp[(2) - (21)].boolean); if (n->replace) /* not supported, see CreateTrigger */ ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("CREATE OR REPLACE CONSTRAINT TRIGGER is not supported"))); n->isconstraint = true; n->trigname = (yyvsp[(5) - (21)].str); n->relation = (yyvsp[(9) - (21)].range); n->funcname = (yyvsp[(18) - (21)].list); n->args = (yyvsp[(20) - (21)].list); n->row = true; n->timing = TRIGGER_TYPE_AFTER; n->events = intVal(linitial((yyvsp[(7) - (21)].list))); n->columns = (List *) lsecond((yyvsp[(7) - (21)].list)); n->whenClause = (yyvsp[(15) - (21)].node); n->transitionRels = NIL; processCASbits((yyvsp[(11) - (21)].ival), (yylsp[(11) - (21)]), "TRIGGER", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); n->constrrel = (yyvsp[(10) - (21)].range); (yyval.node) = (Node *) n; ;} break; case 780: #line 6004 "gram.y" { (yyval.ival) = TRIGGER_TYPE_BEFORE; ;} break; case 781: #line 6005 "gram.y" { (yyval.ival) = TRIGGER_TYPE_AFTER; ;} break; case 782: #line 6006 "gram.y" { (yyval.ival) = TRIGGER_TYPE_INSTEAD; ;} break; case 783: #line 6011 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 784: #line 6013 "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 785: #line 6035 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); ;} break; case 786: #line 6037 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); ;} break; case 787: #line 6039 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); ;} break; case 788: #line 6041 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), (yyvsp[(3) - (3)].list)); ;} break; case 789: #line 6043 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_TRUNCATE), NIL); ;} break; case 790: #line 6047 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 791: #line 6048 "gram.y" { (yyval.list) = NIL; ;} break; case 792: #line 6052 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 793: #line 6053 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 794: #line 6058 "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 795: #line 6069 "gram.y" { (yyval.boolean) = true; ;} break; case 796: #line 6070 "gram.y" { (yyval.boolean) = false; ;} break; case 797: #line 6074 "gram.y" { (yyval.boolean) = true; ;} break; case 798: #line 6083 "gram.y" { (yyval.boolean) = false; ;} break; case 799: #line 6087 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 800: #line 6092 "gram.y" { (yyval.boolean) = (yyvsp[(3) - (3)].boolean); ;} break; case 801: #line 6096 "gram.y" { /* * If ROW/STATEMENT not specified, default to * STATEMENT, per SQL */ (yyval.boolean) = false; ;} break; case 804: #line 6111 "gram.y" { (yyval.boolean) = true; ;} break; case 805: #line 6112 "gram.y" { (yyval.boolean) = false; ;} break; case 806: #line 6116 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; case 807: #line 6117 "gram.y" { (yyval.node) = NULL; ;} break; case 810: #line 6126 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 811: #line 6127 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 812: #line 6128 "gram.y" { (yyval.list) = NIL; ;} break; case 813: #line 6133 "gram.y" { (yyval.node) = (Node *) makeString(psprintf("%d", (yyvsp[(1) - (1)].ival))); ;} break; case 814: #line 6136 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 815: #line 6137 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 816: #line 6138 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 817: #line 6142 "gram.y" { (yyval.range) = (yyvsp[(2) - (2)].range); ;} break; case 818: #line 6143 "gram.y" { (yyval.range) = NULL; ;} break; case 819: #line 6148 "gram.y" { (yyval.ival) = 0; ;} break; case 820: #line 6150 "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 821: #line 6176 "gram.y" { (yyval.ival) = CAS_NOT_DEFERRABLE; ;} break; case 822: #line 6177 "gram.y" { (yyval.ival) = CAS_DEFERRABLE; ;} break; case 823: #line 6178 "gram.y" { (yyval.ival) = CAS_INITIALLY_IMMEDIATE; ;} break; case 824: #line 6179 "gram.y" { (yyval.ival) = CAS_INITIALLY_DEFERRED; ;} break; case 825: #line 6180 "gram.y" { (yyval.ival) = CAS_NOT_VALID; ;} break; case 826: #line 6181 "gram.y" { (yyval.ival) = CAS_NO_INHERIT; ;} break; case 827: #line 6196 "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 828: #line 6208 "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 829: #line 6221 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 830: #line 6223 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 831: #line 6228 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (5)].str), (Node *) (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; case 832: #line 6233 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 833: #line 6235 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; case 834: #line 6240 "gram.y" { AlterEventTrigStmt *n = makeNode(AlterEventTrigStmt); n->trigname = (yyvsp[(4) - (5)].str); n->tgenabled = (yyvsp[(5) - (5)].chr); (yyval.node) = (Node *) n; ;} break; case 835: #line 6250 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ON_ORIGIN; ;} break; case 836: #line 6251 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ON_REPLICA; ;} break; case 837: #line 6252 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ALWAYS; ;} break; case 838: #line 6253 "gram.y" { (yyval.chr) = TRIGGER_DISABLED; ;} break; case 839: #line 6265 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("CREATE ASSERTION is not yet implemented"))); (yyval.node) = NULL; ;} break; case 840: #line 6284 "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 841: #line 6296 "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 842: #line 6309 "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 843: #line 6320 "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 844: #line 6331 "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 845: #line 6343 "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 846: #line 6352 "gram.y" { CreateEnumStmt *n = makeNode(CreateEnumStmt); n->typeName = (yyvsp[(3) - (8)].list); n->vals = (yyvsp[(7) - (8)].list); (yyval.node) = (Node *) n; ;} break; case 847: #line 6360 "gram.y" { CreateRangeStmt *n = makeNode(CreateRangeStmt); n->typeName = (yyvsp[(3) - (6)].list); n->params = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *) n; ;} break; case 848: #line 6368 "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 849: #line 6378 "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 850: #line 6388 "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 851: #line 6398 "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 852: #line 6408 "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 853: #line 6418 "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 854: #line 6429 "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 855: #line 6439 "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 856: #line 6451 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 857: #line 6454 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 858: #line 6455 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 859: #line 6459 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 860: #line 6463 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); ;} break; case 861: #line 6469 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].typnam); ;} break; case 862: #line 6470 "gram.y" { (yyval.node) = (Node *) makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} break; case 863: #line 6471 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].list); ;} break; case 864: #line 6472 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].node); ;} break; case 865: #line 6473 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 866: #line 6474 "gram.y" { (yyval.node) = (Node *) makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} break; case 867: #line 6477 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 868: #line 6480 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 869: #line 6481 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 870: #line 6490 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 871: #line 6496 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 872: #line 6497 "gram.y" { (yyval.list) = NIL; ;} break; case 873: #line 6501 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 874: #line 6503 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; case 875: #line 6514 "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 876: #line 6526 "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 877: #line 6538 "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 878: #line 6550 "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 879: #line 6562 "gram.y" { /* * The following problems must be solved before this can be * implemented: * * - There must be no instance of the target value in * any table. * * - The value must not appear in any catalog metadata, * such as stored view expressions or column defaults. * * - The value must not appear in any non-leaf page of a * btree (and similar issues with other index types). * This is problematic because a value could persist * there long after it's gone from user-visible data. * * - Concurrent sessions must not be able to insert the * value while the preceding conditions are being checked. * * - Possibly more... */ ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("dropping an enum value is not implemented"), parser_errposition((yylsp[(4) - (6)])))); ;} break; case 880: #line 6590 "gram.y" { (yyval.boolean) = true; ;} break; case 881: #line 6591 "gram.y" { (yyval.boolean) = false; ;} break; case 882: #line 6609 "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 883: #line 6623 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 884: #line 6624 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 885: #line 6629 "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 886: #line 6643 "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 887: #line 6653 "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 888: #line 6662 "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 889: #line 6672 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_STORAGETYPE; n->storedtype = (yyvsp[(2) - (2)].typnam); (yyval.node) = (Node *) n; ;} break; case 890: #line 6681 "gram.y" { (yyval.boolean) = true; ;} break; case 891: #line 6682 "gram.y" { (yyval.boolean) = false; ;} break; case 892: #line 6685 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 893: #line 6686 "gram.y" { (yyval.list) = NIL; ;} break; case 894: #line 6689 "gram.y" { (yyval.list) = NIL; ;} break; case 895: #line 6690 "gram.y" { (yyval.list) = (yyvsp[(4) - (4)].list); ;} break; case 896: #line 6691 "gram.y" { (yyval.list) = NIL; ;} break; case 897: #line 6695 "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 898: #line 6708 "gram.y" { (yyval.boolean) = false; ;} break; case 899: #line 6714 "gram.y" { CreateOpFamilyStmt *n = makeNode(CreateOpFamilyStmt); n->opfamilyname = (yyvsp[(4) - (6)].list); n->amname = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 900: #line 6725 "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 901: #line 6735 "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 902: #line 6747 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 903: #line 6748 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 904: #line 6753 "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 905: #line 6762 "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 906: #line 6775 "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 907: #line 6786 "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 908: #line 6800 "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 909: #line 6811 "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 910: #line 6834 "gram.y" { DropOwnedStmt *n = makeNode(DropOwnedStmt); n->roles = (yyvsp[(4) - (5)].list); n->behavior = (yyvsp[(5) - (5)].dbehavior); (yyval.node) = (Node *) n; ;} break; case 911: #line 6845 "gram.y" { ReassignOwnedStmt *n = makeNode(ReassignOwnedStmt); n->roles = (yyvsp[(4) - (6)].list); n->newrole = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *) n; ;} break; case 912: #line 6864 "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 913: #line 6875 "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 914: #line 6886 "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 915: #line 6897 "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 916: #line 6908 "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 917: #line 6919 "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 918: #line 6930 "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 919: #line 6941 "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 920: #line 6952 "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 921: #line 6963 "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 922: #line 6974 "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 923: #line 6985 "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 924: #line 6999 "gram.y" { (yyval.objtype) = OBJECT_TABLE; ;} break; case 925: #line 7000 "gram.y" { (yyval.objtype) = OBJECT_SEQUENCE; ;} break; case 926: #line 7001 "gram.y" { (yyval.objtype) = OBJECT_VIEW; ;} break; case 927: #line 7002 "gram.y" { (yyval.objtype) = OBJECT_MATVIEW; ;} break; case 928: #line 7003 "gram.y" { (yyval.objtype) = OBJECT_INDEX; ;} break; case 929: #line 7004 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_TABLE; ;} break; case 930: #line 7005 "gram.y" { (yyval.objtype) = OBJECT_COLLATION; ;} break; case 931: #line 7006 "gram.y" { (yyval.objtype) = OBJECT_CONVERSION; ;} break; case 932: #line 7007 "gram.y" { (yyval.objtype) = OBJECT_STATISTIC_EXT; ;} break; case 933: #line 7008 "gram.y" { (yyval.objtype) = OBJECT_TSPARSER; ;} break; case 934: #line 7009 "gram.y" { (yyval.objtype) = OBJECT_TSDICTIONARY; ;} break; case 935: #line 7010 "gram.y" { (yyval.objtype) = OBJECT_TSTEMPLATE; ;} break; case 936: #line 7011 "gram.y" { (yyval.objtype) = OBJECT_TSCONFIGURATION; ;} break; case 937: #line 7021 "gram.y" { (yyval.objtype) = (yyvsp[(1) - (1)].objtype); ;} break; case 938: #line 7022 "gram.y" { (yyval.objtype) = OBJECT_DATABASE; ;} break; case 939: #line 7023 "gram.y" { (yyval.objtype) = OBJECT_ROLE; ;} break; case 940: #line 7024 "gram.y" { (yyval.objtype) = OBJECT_SUBSCRIPTION; ;} break; case 941: #line 7025 "gram.y" { (yyval.objtype) = OBJECT_TABLESPACE; ;} break; case 942: #line 7029 "gram.y" { (yyval.objtype) = OBJECT_ACCESS_METHOD; ;} break; case 943: #line 7030 "gram.y" { (yyval.objtype) = OBJECT_EVENT_TRIGGER; ;} break; case 944: #line 7031 "gram.y" { (yyval.objtype) = OBJECT_EXTENSION; ;} break; case 945: #line 7032 "gram.y" { (yyval.objtype) = OBJECT_FDW; ;} break; case 946: #line 7033 "gram.y" { (yyval.objtype) = OBJECT_LANGUAGE; ;} break; case 947: #line 7034 "gram.y" { (yyval.objtype) = OBJECT_PUBLICATION; ;} break; case 948: #line 7035 "gram.y" { (yyval.objtype) = OBJECT_SCHEMA; ;} break; case 949: #line 7036 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_SERVER; ;} break; case 950: #line 7041 "gram.y" { (yyval.objtype) = OBJECT_POLICY; ;} break; case 951: #line 7042 "gram.y" { (yyval.objtype) = OBJECT_RULE; ;} break; case 952: #line 7043 "gram.y" { (yyval.objtype) = OBJECT_TRIGGER; ;} break; case 953: #line 7047 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; case 954: #line 7048 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; case 955: #line 7051 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 956: #line 7052 "gram.y" { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); ;} break; case 957: #line 7056 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(2) - (2)].str))); ;} break; case 958: #line 7058 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; case 959: #line 7062 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); ;} break; case 960: #line 7063 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); ;} break; case 961: #line 7075 "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 962: #line 7086 "gram.y" { (yyval.boolean) = false; ;} break; case 963: #line 7087 "gram.y" { (yyval.boolean) = true; ;} break; case 964: #line 7088 "gram.y" { (yyval.boolean) = false; ;} break; case 965: #line 7099 "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 966: #line 7108 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_COLUMN; n->object = (Node *) (yyvsp[(4) - (6)].list); n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 967: #line 7117 "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 968: #line 7126 "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 969: #line 7135 "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 970: #line 7144 "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 971: #line 7153 "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 972: #line 7162 "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 973: #line 7171 "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 974: #line 7180 "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 975: #line 7194 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = (yyvsp[(3) - (8)].objtype); 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 976: #line 7203 "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 977: #line 7212 "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 978: #line 7221 "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 979: #line 7230 "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 980: #line 7239 "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 981: #line 7248 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_LARGEOBJECT; n->object = (Node *) (yyvsp[(5) - (7)].node); n->comment = (yyvsp[(7) - (7)].str); (yyval.node) = (Node *) n; ;} break; case 982: #line 7257 "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 983: #line 7268 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 984: #line 7269 "gram.y" { (yyval.str) = NULL; ;} break; case 985: #line 7285 "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 7296 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); n->objtype = OBJECT_COLUMN; n->object = (Node *) (yyvsp[(6) - (8)].list); n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; ;} break; case 987: #line 7307 "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 988: #line 7318 "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 989: #line 7329 "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 990: #line 7340 "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 991: #line 7351 "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 992: #line 7362 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (9)].str); n->objtype = OBJECT_LARGEOBJECT; n->object = (Node *) (yyvsp[(7) - (9)].node); n->label = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; ;} break; case 993: #line 7373 "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 994: #line 7384 "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 995: #line 7395 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 996: #line 7396 "gram.y" { (yyval.str) = NULL; ;} break; case 997: #line 7399 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 998: #line 7400 "gram.y" { (yyval.str) = NULL; ;} break; case 999: #line 7411 "gram.y" { FetchStmt *n = (FetchStmt *) (yyvsp[(2) - (2)].node); n->ismove = false; (yyval.node) = (Node *) n; ;} break; case 1000: #line 7418 "gram.y" { FetchStmt *n = (FetchStmt *) (yyvsp[(2) - (2)].node); n->ismove = true; (yyval.node) = (Node *) n; ;} break; case 1001: #line 7427 "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 1002: #line 7436 "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 1003: #line 7445 "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 1004: #line 7454 "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 1005: #line 7463 "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 1006: #line 7472 "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 1007: #line 7481 "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 1008: #line 7490 "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 1009: #line 7499 "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 1010: #line 7508 "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 1011: #line 7517 "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 1012: #line 7526 "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 1013: #line 7535 "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 1014: #line 7544 "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 1015: #line 7553 "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 1016: #line 7562 "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 1021: #line 7589 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = true; n->privileges = (yyvsp[(2) - (8)].list); n->targtype = ((yyvsp[(4) - (8)].privtarget))->targtype; n->objtype = ((yyvsp[(4) - (8)].privtarget))->objtype; n->objects = ((yyvsp[(4) - (8)].privtarget))->objs; n->grantees = (yyvsp[(6) - (8)].list); n->grant_option = (yyvsp[(7) - (8)].boolean); n->grantor = (yyvsp[(8) - (8)].rolespec); (yyval.node) = (Node *) n; ;} break; case 1022: #line 7607 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; n->grant_option = false; n->privileges = (yyvsp[(2) - (8)].list); n->targtype = ((yyvsp[(4) - (8)].privtarget))->targtype; n->objtype = ((yyvsp[(4) - (8)].privtarget))->objtype; n->objects = ((yyvsp[(4) - (8)].privtarget))->objs; n->grantees = (yyvsp[(6) - (8)].list); n->grantor = (yyvsp[(7) - (8)].rolespec); n->behavior = (yyvsp[(8) - (8)].dbehavior); (yyval.node) = (Node *) n; ;} break; case 1023: #line 7623 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; n->grant_option = true; n->privileges = (yyvsp[(5) - (11)].list); n->targtype = ((yyvsp[(7) - (11)].privtarget))->targtype; n->objtype = ((yyvsp[(7) - (11)].privtarget))->objtype; n->objects = ((yyvsp[(7) - (11)].privtarget))->objs; n->grantees = (yyvsp[(9) - (11)].list); n->grantor = (yyvsp[(10) - (11)].rolespec); n->behavior = (yyvsp[(11) - (11)].dbehavior); (yyval.node) = (Node *) n; ;} break; case 1024: #line 7650 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1025: #line 7652 "gram.y" { (yyval.list) = NIL; ;} break; case 1026: #line 7654 "gram.y" { (yyval.list) = NIL; ;} break; case 1027: #line 7656 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = NULL; n->cols = (yyvsp[(3) - (4)].list); (yyval.list) = list_make1(n); ;} break; case 1028: #line 7664 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = NULL; n->cols = (yyvsp[(4) - (5)].list); (yyval.list) = list_make1(n); ;} break; case 1029: #line 7673 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].accesspriv)); ;} break; case 1030: #line 7674 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].accesspriv)); ;} break; case 1031: #line 7678 "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 1032: #line 7686 "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 1033: #line 7694 "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 1034: #line 7702 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = pstrdup("alter system"); n->cols = NIL; (yyval.accesspriv) = n; ;} break; case 1035: #line 7709 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = (yyvsp[(1) - (2)].str); n->cols = (yyvsp[(2) - (2)].list); (yyval.accesspriv) = n; ;} break; case 1036: #line 7720 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 1037: #line 7724 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; case 1038: #line 7731 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1039: #line 7735 "gram.y" { (yyval.str) = psprintf("%s.%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); ;} break; case 1040: #line 7746 "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 1041: #line 7755 "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 1042: #line 7764 "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 1043: #line 7773 "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 1044: #line 7782 "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 1045: #line 7791 "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 1046: #line 7800 "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 1047: #line 7809 "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 1048: #line 7818 "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 1049: #line 7827 "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 1050: #line 7836 "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 1051: #line 7845 "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 1052: #line 7854 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_PARAMETER_ACL; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; case 1053: #line 7862 "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 1054: #line 7871 "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 1055: #line 7880 "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 1056: #line 7889 "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 1057: #line 7898 "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 1058: #line 7907 "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 1059: #line 7916 "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 1060: #line 7925 "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 1061: #line 7937 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].rolespec)); ;} break; case 1062: #line 7938 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].rolespec)); ;} break; case 1063: #line 7942 "gram.y" { (yyval.rolespec) = (yyvsp[(1) - (1)].rolespec); ;} break; case 1064: #line 7943 "gram.y" { (yyval.rolespec) = (yyvsp[(2) - (2)].rolespec); ;} break; case 1065: #line 7948 "gram.y" { (yyval.boolean) = true; ;} break; case 1066: #line 7949 "gram.y" { (yyval.boolean) = false; ;} break; case 1067: #line 7960 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = true; n->granted_roles = (yyvsp[(2) - (5)].list); n->grantee_roles = (yyvsp[(4) - (5)].list); n->opt = NIL; n->grantor = (yyvsp[(5) - (5)].rolespec); (yyval.node) = (Node *) n; ;} break; case 1068: #line 7971 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = true; n->granted_roles = (yyvsp[(2) - (7)].list); n->grantee_roles = (yyvsp[(4) - (7)].list); n->opt = (yyvsp[(6) - (7)].list); n->grantor = (yyvsp[(7) - (7)].rolespec); (yyval.node) = (Node *) n; ;} break; case 1069: #line 7985 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; n->opt = NIL; n->granted_roles = (yyvsp[(2) - (6)].list); n->grantee_roles = (yyvsp[(4) - (6)].list); n->grantor = (yyvsp[(5) - (6)].rolespec); n->behavior = (yyvsp[(6) - (6)].dbehavior); (yyval.node) = (Node *) n; ;} break; case 1070: #line 7997 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); DefElem *opt; opt = makeDefElem(pstrdup((yyvsp[(2) - (9)].str)), (Node *) makeBoolean(false), (yylsp[(2) - (9)])); n->is_grant = false; n->opt = list_make1(opt); n->granted_roles = (yyvsp[(5) - (9)].list); n->grantee_roles = (yyvsp[(7) - (9)].list); n->grantor = (yyvsp[(8) - (9)].rolespec); n->behavior = (yyvsp[(9) - (9)].dbehavior); (yyval.node) = (Node *) n; ;} break; case 1071: #line 8014 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 1072: #line 8015 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1073: #line 8020 "gram.y" { (yyval.defelt) = makeDefElem(pstrdup((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1074: #line 8026 "gram.y" { (yyval.node) = (Node *) makeBoolean(true); ;} break; case 1075: #line 8027 "gram.y" { (yyval.node) = (Node *) makeBoolean(true); ;} break; case 1076: #line 8028 "gram.y" { (yyval.node) = (Node *) makeBoolean(false); ;} break; case 1077: #line 8031 "gram.y" { (yyval.rolespec) = (yyvsp[(3) - (3)].rolespec); ;} break; case 1078: #line 8032 "gram.y" { (yyval.rolespec) = NULL; ;} break; case 1079: #line 8043 "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 1080: #line 8053 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1081: #line 8054 "gram.y" { (yyval.list) = NIL; ;} break; case 1082: #line 8059 "gram.y" { (yyval.defelt) = makeDefElem("schemas", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 1083: #line 8063 "gram.y" { (yyval.defelt) = makeDefElem("roles", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 1084: #line 8067 "gram.y" { (yyval.defelt) = makeDefElem("roles", (Node *) (yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 1085: #line 8079 "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 1086: #line 8093 "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 1087: #line 8108 "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 1088: #line 8124 "gram.y" { (yyval.ival) = OBJECT_TABLE; ;} break; case 1089: #line 8125 "gram.y" { (yyval.ival) = OBJECT_FUNCTION; ;} break; case 1090: #line 8126 "gram.y" { (yyval.ival) = OBJECT_FUNCTION; ;} break; case 1091: #line 8127 "gram.y" { (yyval.ival) = OBJECT_SEQUENCE; ;} break; case 1092: #line 8128 "gram.y" { (yyval.ival) = OBJECT_TYPE; ;} break; case 1093: #line 8129 "gram.y" { (yyval.ival) = OBJECT_SCHEMA; ;} break; case 1094: #line 8144 "gram.y" { IndexStmt *n = makeNode(IndexStmt); n->unique = (yyvsp[(2) - (16)].boolean); n->concurrent = (yyvsp[(4) - (16)].boolean); n->idxname = (yyvsp[(5) - (16)].str); n->relation = (yyvsp[(7) - (16)].range); n->accessMethod = (yyvsp[(8) - (16)].str); n->indexParams = (yyvsp[(10) - (16)].list); n->indexIncludingParams = (yyvsp[(12) - (16)].list); n->nulls_not_distinct = !(yyvsp[(13) - (16)].boolean); n->options = (yyvsp[(14) - (16)].list); n->tableSpace = (yyvsp[(15) - (16)].str); n->whereClause = (yyvsp[(16) - (16)].node); n->excludeOpNames = NIL; n->idxcomment = NULL; n->indexOid = InvalidOid; n->oldNumber = InvalidRelFileNumber; n->oldCreateSubid = InvalidSubTransactionId; n->oldFirstRelfilelocatorSubid = 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 1095: #line 8176 "gram.y" { IndexStmt *n = makeNode(IndexStmt); n->unique = (yyvsp[(2) - (19)].boolean); n->concurrent = (yyvsp[(4) - (19)].boolean); n->idxname = (yyvsp[(8) - (19)].str); n->relation = (yyvsp[(10) - (19)].range); n->accessMethod = (yyvsp[(11) - (19)].str); n->indexParams = (yyvsp[(13) - (19)].list); n->indexIncludingParams = (yyvsp[(15) - (19)].list); n->nulls_not_distinct = !(yyvsp[(16) - (19)].boolean); n->options = (yyvsp[(17) - (19)].list); n->tableSpace = (yyvsp[(18) - (19)].str); n->whereClause = (yyvsp[(19) - (19)].node); n->excludeOpNames = NIL; n->idxcomment = NULL; n->indexOid = InvalidOid; n->oldNumber = InvalidRelFileNumber; n->oldCreateSubid = InvalidSubTransactionId; n->oldFirstRelfilelocatorSubid = 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 1096: #line 8208 "gram.y" { (yyval.boolean) = true; ;} break; case 1097: #line 8209 "gram.y" { (yyval.boolean) = false; ;} break; case 1098: #line 8213 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 1099: #line 8214 "gram.y" { (yyval.str) = DEFAULT_INDEX_TYPE; ;} break; case 1100: #line 8217 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].ielem)); ;} break; case 1101: #line 8218 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].ielem)); ;} break; case 1102: #line 8224 "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 1103: #line 8236 "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 1104: #line 8255 "gram.y" { (yyval.ielem) = (yyvsp[(2) - (2)].ielem); (yyval.ielem)->name = (yyvsp[(1) - (2)].str); ;} break; case 1105: #line 8260 "gram.y" { (yyval.ielem) = (yyvsp[(2) - (2)].ielem); (yyval.ielem)->expr = (yyvsp[(1) - (2)].node); ;} break; case 1106: #line 8265 "gram.y" { (yyval.ielem) = (yyvsp[(4) - (4)].ielem); (yyval.ielem)->expr = (yyvsp[(2) - (4)].node); ;} break; case 1107: #line 8271 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 1108: #line 8272 "gram.y" { (yyval.list) = NIL; ;} break; case 1109: #line 8275 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].ielem)); ;} break; case 1110: #line 8276 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].ielem)); ;} break; case 1111: #line 8279 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1112: #line 8280 "gram.y" { (yyval.list) = NIL; ;} break; case 1113: #line 8284 "gram.y" { (yyval.ival) = SORTBY_ASC; ;} break; case 1114: #line 8285 "gram.y" { (yyval.ival) = SORTBY_DESC; ;} break; case 1115: #line 8286 "gram.y" { (yyval.ival) = SORTBY_DEFAULT; ;} break; case 1116: #line 8289 "gram.y" { (yyval.ival) = SORTBY_NULLS_FIRST; ;} break; case 1117: #line 8290 "gram.y" { (yyval.ival) = SORTBY_NULLS_LAST; ;} break; case 1118: #line 8291 "gram.y" { (yyval.ival) = SORTBY_NULLS_DEFAULT; ;} break; case 1119: #line 8309 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); n->is_procedure = false; n->replace = (yyvsp[(2) - (9)].boolean); n->funcname = (yyvsp[(4) - (9)].list); n->parameters = (yyvsp[(5) - (9)].list); n->returnType = (yyvsp[(7) - (9)].typnam); n->options = (yyvsp[(8) - (9)].list); n->sql_body = (yyvsp[(9) - (9)].node); (yyval.node) = (Node *) n; ;} break; case 1120: #line 8323 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); n->is_procedure = false; n->replace = (yyvsp[(2) - (12)].boolean); n->funcname = (yyvsp[(4) - (12)].list); n->parameters = mergeTableFuncParameters((yyvsp[(5) - (12)].list), (yyvsp[(9) - (12)].list)); n->returnType = TableFuncTypeName((yyvsp[(9) - (12)].list)); n->returnType->location = (yylsp[(7) - (12)]); n->options = (yyvsp[(11) - (12)].list); n->sql_body = (yyvsp[(12) - (12)].node); (yyval.node) = (Node *) n; ;} break; case 1121: #line 8338 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); n->is_procedure = false; n->replace = (yyvsp[(2) - (7)].boolean); n->funcname = (yyvsp[(4) - (7)].list); n->parameters = (yyvsp[(5) - (7)].list); n->returnType = NULL; n->options = (yyvsp[(6) - (7)].list); n->sql_body = (yyvsp[(7) - (7)].node); (yyval.node) = (Node *) n; ;} break; case 1122: #line 8352 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); n->is_procedure = true; n->replace = (yyvsp[(2) - (7)].boolean); n->funcname = (yyvsp[(4) - (7)].list); n->parameters = (yyvsp[(5) - (7)].list); n->returnType = NULL; n->options = (yyvsp[(6) - (7)].list); n->sql_body = (yyvsp[(7) - (7)].node); (yyval.node) = (Node *) n; ;} break; case 1123: #line 8367 "gram.y" { (yyval.boolean) = true; ;} break; case 1124: #line 8368 "gram.y" { (yyval.boolean) = false; ;} break; case 1125: #line 8371 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1126: #line 8372 "gram.y" { (yyval.list) = NIL; ;} break; case 1127: #line 8376 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; case 1128: #line 8377 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; case 1129: #line 8381 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); ;} break; case 1130: #line 8383 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); ;} break; case 1131: #line 8388 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = (yyvsp[(1) - (2)].list); n->objargs = extractArgTypes((yyvsp[(2) - (2)].list)); n->objfuncargs = (yyvsp[(2) - (2)].list); (yyval.objwithargs) = n; ;} break; case 1132: #line 8402 "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 1133: #line 8410 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = list_make1(makeString((yyvsp[(1) - (1)].str))); n->args_unspecified = true; (yyval.objwithargs) = n; ;} break; case 1134: #line 8418 "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 1135: #line 8433 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1136: #line 8434 "gram.y" { (yyval.list) = NIL; ;} break; case 1137: #line 8438 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; case 1138: #line 8440 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; case 1139: #line 8455 "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 1140: #line 8465 "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 1141: #line 8475 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = (yyvsp[(1) - (2)].str); n->argType = (yyvsp[(2) - (2)].typnam); n->mode = FUNC_PARAM_DEFAULT; n->defexpr = NULL; (yyval.fun_param) = n; ;} break; case 1142: #line 8485 "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 1143: #line 8495 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = NULL; n->argType = (yyvsp[(1) - (1)].typnam); n->mode = FUNC_PARAM_DEFAULT; n->defexpr = NULL; (yyval.fun_param) = n; ;} break; case 1144: #line 8507 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_IN; ;} break; case 1145: #line 8508 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_OUT; ;} break; case 1146: #line 8509 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_INOUT; ;} break; case 1147: #line 8510 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_INOUT; ;} break; case 1148: #line 8511 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_VARIADIC; ;} break; case 1150: #line 8522 "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 1151: #line 8536 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1152: #line 8538 "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 1153: #line 8544 "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 1154: #line 8554 "gram.y" { (yyval.fun_param) = (yyvsp[(1) - (1)].fun_param); ;} break; case 1155: #line 8558 "gram.y" { (yyval.fun_param) = (yyvsp[(1) - (3)].fun_param); (yyval.fun_param)->defexpr = (yyvsp[(3) - (3)].node); ;} break; case 1156: #line 8563 "gram.y" { (yyval.fun_param) = (yyvsp[(1) - (3)].fun_param); (yyval.fun_param)->defexpr = (yyvsp[(3) - (3)].node); ;} break; case 1157: #line 8571 "gram.y" { if (!((yyvsp[(1) - (1)].fun_param)->mode == FUNC_PARAM_DEFAULT || (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 1158: #line 8613 "gram.y" { (yyval.list) = list_make2(NIL, makeInteger(-1)); ;} break; case 1159: #line 8617 "gram.y" { (yyval.list) = list_make2((yyvsp[(2) - (3)].list), makeInteger(-1)); ;} break; case 1160: #line 8621 "gram.y" { (yyval.list) = list_make2((yyvsp[(4) - (5)].list), makeInteger(0)); ;} break; case 1161: #line 8625 "gram.y" { /* this is the only case requiring consistency checking */ (yyval.list) = makeOrderedSetArgs((yyvsp[(2) - (6)].list), (yyvsp[(5) - (6)].list), yyscanner); ;} break; case 1162: #line 8632 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; case 1163: #line 8633 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; case 1164: #line 8638 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = (yyvsp[(1) - (2)].list); n->objargs = extractAggrArgTypes((yyvsp[(2) - (2)].list)); n->objfuncargs = (List *) linitial((yyvsp[(2) - (2)].list)); (yyval.objwithargs) = n; ;} break; case 1165: #line 8649 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); ;} break; case 1166: #line 8651 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); ;} break; case 1168: #line 8656 "gram.y" { (yyval.list) = NIL; ;} break; case 1169: #line 8661 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1170: #line 8662 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1171: #line 8670 "gram.y" { (yyval.defelt) = makeDefElem("strict", (Node *) makeBoolean(false), (yylsp[(1) - (4)])); ;} break; case 1172: #line 8674 "gram.y" { (yyval.defelt) = makeDefElem("strict", (Node *) makeBoolean(true), (yylsp[(1) - (5)])); ;} break; case 1173: #line 8678 "gram.y" { (yyval.defelt) = makeDefElem("strict", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 1174: #line 8682 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *) makeString("immutable"), (yylsp[(1) - (1)])); ;} break; case 1175: #line 8686 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *) makeString("stable"), (yylsp[(1) - (1)])); ;} break; case 1176: #line 8690 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *) makeString("volatile"), (yylsp[(1) - (1)])); ;} break; case 1177: #line 8694 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *) makeBoolean(true), (yylsp[(1) - (3)])); ;} break; case 1178: #line 8698 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *) makeBoolean(false), (yylsp[(1) - (3)])); ;} break; case 1179: #line 8702 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *) makeBoolean(true), (yylsp[(1) - (2)])); ;} break; case 1180: #line 8706 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *) makeBoolean(false), (yylsp[(1) - (2)])); ;} break; case 1181: #line 8710 "gram.y" { (yyval.defelt) = makeDefElem("leakproof", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 1182: #line 8714 "gram.y" { (yyval.defelt) = makeDefElem("leakproof", (Node *) makeBoolean(false), (yylsp[(1) - (2)])); ;} break; case 1183: #line 8718 "gram.y" { (yyval.defelt) = makeDefElem("cost", (Node *) (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1184: #line 8722 "gram.y" { (yyval.defelt) = makeDefElem("rows", (Node *) (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1185: #line 8726 "gram.y" { (yyval.defelt) = makeDefElem("support", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 1186: #line 8730 "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 1187: #line 8735 "gram.y" { (yyval.defelt) = makeDefElem("parallel", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 1188: #line 8742 "gram.y" { (yyval.defelt) = makeDefElem("as", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 1189: #line 8746 "gram.y" { (yyval.defelt) = makeDefElem("language", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 1190: #line 8750 "gram.y" { (yyval.defelt) = makeDefElem("transform", (Node *) (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 1191: #line 8754 "gram.y" { (yyval.defelt) = makeDefElem("window", (Node *) makeBoolean(true), (yylsp[(1) - (1)])); ;} break; case 1192: #line 8758 "gram.y" { (yyval.defelt) = (yyvsp[(1) - (1)].defelt); ;} break; case 1193: #line 8763 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 1194: #line 8765 "gram.y" { (yyval.list) = list_make2(makeString((yyvsp[(1) - (3)].str)), makeString((yyvsp[(3) - (3)].str))); ;} break; case 1195: #line 8771 "gram.y" { ReturnStmt *r = makeNode(ReturnStmt); r->returnval = (Node *) (yyvsp[(2) - (2)].node); (yyval.node) = (Node *) r; ;} break; case 1196: #line 8781 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1197: #line 8785 "gram.y" { /* * A compound statement is stored as a single-item list * containing the list of statements as its member. That * way, the parse analysis code can tell apart an empty * body from no body at all. */ (yyval.node) = (Node *) list_make1((yyvsp[(3) - (4)].list)); ;} break; case 1198: #line 8795 "gram.y" { (yyval.node) = NULL; ;} break; case 1199: #line 8802 "gram.y" { /* As in stmtmulti, discard empty statements */ if ((yyvsp[(2) - (3)].node) != NULL) (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].node)); else (yyval.list) = (yyvsp[(1) - (3)].list); ;} break; case 1200: #line 8810 "gram.y" { (yyval.list) = NIL; ;} break; case 1203: #line 8821 "gram.y" { (yyval.list) = list_make1((yyvsp[(3) - (3)].typnam)); ;} break; case 1204: #line 8822 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (5)].list), (yyvsp[(5) - (5)].typnam)); ;} break; case 1205: #line 8826 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1206: #line 8827 "gram.y" { (yyval.list) = NIL; ;} break; case 1207: #line 8831 "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 1208: #line 8844 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; case 1209: #line 8848 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; case 1210: #line 8863 "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 1211: #line 8872 "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 1212: #line 8881 "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 1213: #line 8893 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1214: #line 8894 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1217: #line 8918 "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 1218: #line 8929 "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 1219: #line 8940 "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 1220: #line 8951 "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 1221: #line 8962 "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 1222: #line 8973 "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 1223: #line 8987 "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 1224: #line 8998 "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 1225: #line 9012 "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 1226: #line 9023 "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 1227: #line 9037 "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 1228: #line 9045 "gram.y" { (yyval.list) = list_make2((yyvsp[(2) - (5)].typnam), (yyvsp[(4) - (5)].typnam)); ;} break; case 1229: #line 9047 "gram.y" { (yyval.list) = list_make2(NULL, (yyvsp[(4) - (5)].typnam)); ;} break; case 1230: #line 9049 "gram.y" { (yyval.list) = list_make2((yyvsp[(2) - (5)].typnam), NULL); ;} break; case 1231: #line 9054 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 1232: #line 9056 "gram.y" { (yyval.list) = lcons(makeString((yyvsp[(1) - (3)].str)), (yyvsp[(3) - (3)].list)); ;} break; case 1233: #line 9060 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); ;} break; case 1234: #line 9062 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); ;} break; case 1235: #line 9067 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = (yyvsp[(1) - (2)].list); n->objargs = (yyvsp[(2) - (2)].list); (yyval.objwithargs) = n; ;} break; case 1236: #line 9086 "gram.y" { DoStmt *n = makeNode(DoStmt); n->args = (yyvsp[(2) - (2)].list); (yyval.node) = (Node *) n; ;} break; case 1237: #line 9095 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1238: #line 9096 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1239: #line 9101 "gram.y" { (yyval.defelt) = makeDefElem("as", (Node *) makeString((yyvsp[(1) - (1)].str)), (yylsp[(1) - (1)])); ;} break; case 1240: #line 9105 "gram.y" { (yyval.defelt) = makeDefElem("language", (Node *) makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 1241: #line 9118 "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 1242: #line 9130 "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 1243: #line 9142 "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 1244: #line 9154 "gram.y" { (yyval.ival) = COERCION_IMPLICIT; ;} break; case 1245: #line 9155 "gram.y" { (yyval.ival) = COERCION_ASSIGNMENT; ;} break; case 1246: #line 9156 "gram.y" { (yyval.ival) = COERCION_EXPLICIT; ;} break; case 1247: #line 9161 "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 1248: #line 9173 "gram.y" { (yyval.boolean) = true; ;} break; case 1249: #line 9174 "gram.y" { (yyval.boolean) = false; ;} break; case 1250: #line 9185 "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 1251: #line 9198 "gram.y" { (yyval.list) = list_make2((yyvsp[(5) - (11)].objwithargs), (yyvsp[(11) - (11)].objwithargs)); ;} break; case 1252: #line 9202 "gram.y" { (yyval.list) = list_make2((yyvsp[(11) - (11)].objwithargs), (yyvsp[(5) - (11)].objwithargs)); ;} break; case 1253: #line 9206 "gram.y" { (yyval.list) = list_make2((yyvsp[(5) - (5)].objwithargs), NULL); ;} break; case 1254: #line 9210 "gram.y" { (yyval.list) = list_make2(NULL, (yyvsp[(5) - (5)].objwithargs)); ;} break; case 1255: #line 9217 "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 1256: #line 9239 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); n->kind = (yyvsp[(3) - (5)].ival); n->relation = (yyvsp[(5) - (5)].range); n->name = NULL; n->params = (yyvsp[(2) - (5)].list); if ((yyvsp[(4) - (5)].boolean)) n->params = lappend(n->params, makeDefElem("concurrently", NULL, (yylsp[(4) - (5)]))); (yyval.node) = (Node *) n; ;} break; case 1257: #line 9252 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); n->kind = REINDEX_OBJECT_SCHEMA; n->relation = NULL; n->name = (yyvsp[(5) - (5)].str); n->params = (yyvsp[(2) - (5)].list); if ((yyvsp[(4) - (5)].boolean)) n->params = lappend(n->params, makeDefElem("concurrently", NULL, (yylsp[(4) - (5)]))); (yyval.node) = (Node *) n; ;} break; case 1258: #line 9265 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); n->kind = (yyvsp[(3) - (5)].ival); n->relation = NULL; n->name = (yyvsp[(5) - (5)].str); n->params = (yyvsp[(2) - (5)].list); if ((yyvsp[(4) - (5)].boolean)) n->params = lappend(n->params, makeDefElem("concurrently", NULL, (yylsp[(4) - (5)]))); (yyval.node) = (Node *) n; ;} break; case 1259: #line 9279 "gram.y" { (yyval.ival) = REINDEX_OBJECT_INDEX; ;} break; case 1260: #line 9280 "gram.y" { (yyval.ival) = REINDEX_OBJECT_TABLE; ;} break; case 1261: #line 9283 "gram.y" { (yyval.ival) = REINDEX_OBJECT_SYSTEM; ;} break; case 1262: #line 9284 "gram.y" { (yyval.ival) = REINDEX_OBJECT_DATABASE; ;} break; case 1263: #line 9287 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1264: #line 9288 "gram.y" { (yyval.list) = NULL; ;} break; case 1265: #line 9299 "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 1266: #line 9309 "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 1267: #line 9327 "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 1268: #line 9337 "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 1269: #line 9347 "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 1270: #line 9357 "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 1271: #line 9367 "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 1272: #line 9377 "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 1273: #line 9387 "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 1274: #line 9397 "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 1275: #line 9407 "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 1276: #line 9417 "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 1277: #line 9427 "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 1278: #line 9437 "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 1279: #line 9447 "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 1280: #line 9458 "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 1281: #line 9469 "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 1282: #line 9479 "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 1283: #line 9489 "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 1284: #line 9499 "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 1285: #line 9509 "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 1286: #line 9519 "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 1287: #line 9529 "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 1288: #line 9540 "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 1289: #line 9551 "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 1290: #line 9562 "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 1291: #line 9573 "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 1292: #line 9584 "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 1293: #line 9595 "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 1294: #line 9606 "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 1295: #line 9617 "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 1296: #line 9628 "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 1297: #line 9639 "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 1298: #line 9650 "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 1299: #line 9661 "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 1300: #line 9673 "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 1301: #line 9685 "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 1302: #line 9697 "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 1303: #line 9709 "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 1304: #line 9721 "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 1305: #line 9733 "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 1306: #line 9744 "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 1307: #line 9755 "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 1308: #line 9767 "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 1309: #line 9779 "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 1310: #line 9790 "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 1311: #line 9801 "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 1312: #line 9810 "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 1313: #line 9820 "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 9830 "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 1315: #line 9840 "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 1316: #line 9850 "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 1317: #line 9860 "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 1318: #line 9870 "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 1319: #line 9880 "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 1320: #line 9890 "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 1321: #line 9900 "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 1324: #line 9918 "gram.y" { (yyval.ival) = 1; ;} break; case 1325: #line 9919 "gram.y" { (yyval.ival) = 0; ;} break; case 1326: #line 9930 "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 1327: #line 9940 "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 1328: #line 9950 "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 1329: #line 9960 "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 1330: #line 9971 "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 1331: #line 9981 "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 1332: #line 9992 "gram.y" { (yyval.boolean) = true; ;} break; case 1333: #line 9993 "gram.y" { (yyval.boolean) = false; ;} break; case 1334: #line 10004 "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 1335: #line 10014 "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 1336: #line 10024 "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 1337: #line 10034 "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 1338: #line 10044 "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 1339: #line 10054 "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 1340: #line 10064 "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 1341: #line 10074 "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 1342: #line 10084 "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 1343: #line 10094 "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 1344: #line 10104 "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 1345: #line 10114 "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 1346: #line 10124 "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 1347: #line 10134 "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 1348: #line 10144 "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 1349: #line 10154 "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 1350: #line 10164 "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 1351: #line 10174 "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 1352: #line 10184 "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 1353: #line 10194 "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 1354: #line 10204 "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 1355: #line 10214 "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 1356: #line 10224 "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 1357: #line 10234 "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 1358: #line 10244 "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 1359: #line 10254 "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 1360: #line 10264 "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 1361: #line 10283 "gram.y" { AlterOperatorStmt *n = makeNode(AlterOperatorStmt); n->opername = (yyvsp[(3) - (7)].objwithargs); n->options = (yyvsp[(6) - (7)].list); (yyval.node) = (Node *) n; ;} break; case 1362: #line 10292 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1363: #line 10293 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 1364: #line 10297 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), NULL, (yylsp[(1) - (3)])); ;} break; case 1365: #line 10299 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 1366: #line 10301 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); ;} break; case 1367: #line 10306 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].typnam); ;} break; case 1368: #line 10307 "gram.y" { (yyval.node) = (Node *) makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} break; case 1369: #line 10308 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].list); ;} break; case 1370: #line 10309 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].node); ;} break; case 1371: #line 10310 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 1372: #line 10323 "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 10339 "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 10348 "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 10357 "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 10366 "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 10375 "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 10384 "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 10393 "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 10402 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_LARGEOBJECT; n->object = (Node *) (yyvsp[(4) - (7)].node); n->newowner = (yyvsp[(7) - (7)].rolespec); (yyval.node) = (Node *) n; ;} break; case 1381: #line 10411 "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 10420 "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 10429 "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 10438 "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 10447 "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 10456 "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 10465 "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 10474 "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 10483 "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 10492 "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 10501 "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 10510 "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 10519 "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 10528 "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 10537 "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 10546 "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 10574 "gram.y" { CreatePublicationStmt *n = makeNode(CreatePublicationStmt); n->pubname = (yyvsp[(3) - (4)].str); n->options = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *) n; ;} break; case 1398: #line 10582 "gram.y" { CreatePublicationStmt *n = makeNode(CreatePublicationStmt); n->pubname = (yyvsp[(3) - (7)].str); n->options = (yyvsp[(7) - (7)].list); n->for_all_tables = true; (yyval.node) = (Node *) n; ;} break; case 1399: #line 10591 "gram.y" { CreatePublicationStmt *n = makeNode(CreatePublicationStmt); n->pubname = (yyvsp[(3) - (6)].str); n->options = (yyvsp[(6) - (6)].list); n->pubobjects = (List *) (yyvsp[(5) - (6)].list); preprocess_pubobj_list(n->pubobjects, yyscanner); (yyval.node) = (Node *) n; ;} break; case 1400: #line 10617 "gram.y" { (yyval.publicationobjectspec) = makeNode(PublicationObjSpec); (yyval.publicationobjectspec)->pubobjtype = PUBLICATIONOBJ_TABLE; (yyval.publicationobjectspec)->pubtable = makeNode(PublicationTable); (yyval.publicationobjectspec)->pubtable->relation = (yyvsp[(2) - (4)].range); (yyval.publicationobjectspec)->pubtable->columns = (yyvsp[(3) - (4)].list); (yyval.publicationobjectspec)->pubtable->whereClause = (yyvsp[(4) - (4)].node); ;} break; case 1401: #line 10626 "gram.y" { (yyval.publicationobjectspec) = makeNode(PublicationObjSpec); (yyval.publicationobjectspec)->pubobjtype = PUBLICATIONOBJ_TABLES_IN_SCHEMA; (yyval.publicationobjectspec)->name = (yyvsp[(4) - (4)].str); (yyval.publicationobjectspec)->location = (yylsp[(4) - (4)]); ;} break; case 1402: #line 10633 "gram.y" { (yyval.publicationobjectspec) = makeNode(PublicationObjSpec); (yyval.publicationobjectspec)->pubobjtype = PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA; (yyval.publicationobjectspec)->location = (yylsp[(4) - (4)]); ;} break; case 1403: #line 10639 "gram.y" { (yyval.publicationobjectspec) = makeNode(PublicationObjSpec); (yyval.publicationobjectspec)->pubobjtype = PUBLICATIONOBJ_CONTINUATION; /* * If either a row filter or column list is specified, create * a PublicationTable object. */ if ((yyvsp[(2) - (3)].list) || (yyvsp[(3) - (3)].node)) { /* * The OptWhereClause must be stored here but it is * valid only for tables. For non-table objects, an * error will be thrown later via * preprocess_pubobj_list(). */ (yyval.publicationobjectspec)->pubtable = makeNode(PublicationTable); (yyval.publicationobjectspec)->pubtable->relation = makeRangeVar(NULL, (yyvsp[(1) - (3)].str), (yylsp[(1) - (3)])); (yyval.publicationobjectspec)->pubtable->columns = (yyvsp[(2) - (3)].list); (yyval.publicationobjectspec)->pubtable->whereClause = (yyvsp[(3) - (3)].node); } else { (yyval.publicationobjectspec)->name = (yyvsp[(1) - (3)].str); } (yyval.publicationobjectspec)->location = (yylsp[(1) - (3)]); ;} break; case 1404: #line 10666 "gram.y" { (yyval.publicationobjectspec) = makeNode(PublicationObjSpec); (yyval.publicationobjectspec)->pubobjtype = PUBLICATIONOBJ_CONTINUATION; (yyval.publicationobjectspec)->pubtable = makeNode(PublicationTable); (yyval.publicationobjectspec)->pubtable->relation = makeRangeVarFromQualifiedName((yyvsp[(1) - (4)].str), (yyvsp[(2) - (4)].list), (yylsp[(1) - (4)]), yyscanner); (yyval.publicationobjectspec)->pubtable->columns = (yyvsp[(3) - (4)].list); (yyval.publicationobjectspec)->pubtable->whereClause = (yyvsp[(4) - (4)].node); (yyval.publicationobjectspec)->location = (yylsp[(1) - (4)]); ;} break; case 1405: #line 10677 "gram.y" { (yyval.publicationobjectspec) = makeNode(PublicationObjSpec); (yyval.publicationobjectspec)->pubobjtype = PUBLICATIONOBJ_CONTINUATION; (yyval.publicationobjectspec)->pubtable = makeNode(PublicationTable); (yyval.publicationobjectspec)->pubtable->relation = (yyvsp[(1) - (3)].range); (yyval.publicationobjectspec)->pubtable->columns = (yyvsp[(2) - (3)].list); (yyval.publicationobjectspec)->pubtable->whereClause = (yyvsp[(3) - (3)].node); ;} break; case 1406: #line 10686 "gram.y" { (yyval.publicationobjectspec) = makeNode(PublicationObjSpec); (yyval.publicationobjectspec)->pubobjtype = PUBLICATIONOBJ_CONTINUATION; (yyval.publicationobjectspec)->location = (yylsp[(1) - (1)]); ;} break; case 1407: #line 10694 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].publicationobjectspec)); ;} break; case 1408: #line 10696 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].publicationobjectspec)); ;} break; case 1409: #line 10718 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); n->pubname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1410: #line 10726 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); n->pubname = (yyvsp[(3) - (5)].str); n->pubobjects = (yyvsp[(5) - (5)].list); preprocess_pubobj_list(n->pubobjects, yyscanner); n->action = AP_AddObjects; (yyval.node) = (Node *) n; ;} break; case 1411: #line 10736 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); n->pubname = (yyvsp[(3) - (5)].str); n->pubobjects = (yyvsp[(5) - (5)].list); preprocess_pubobj_list(n->pubobjects, yyscanner); n->action = AP_SetObjects; (yyval.node) = (Node *) n; ;} break; case 1412: #line 10746 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); n->pubname = (yyvsp[(3) - (5)].str); n->pubobjects = (yyvsp[(5) - (5)].list); preprocess_pubobj_list(n->pubobjects, yyscanner); n->action = AP_DropObjects; (yyval.node) = (Node *) n; ;} break; case 1413: #line 10765 "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 1414: #line 10784 "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 1415: #line 10794 "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 1416: #line 10804 "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 1417: #line 10814 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_ADD_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 1418: #line 10825 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_DROP_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 1419: #line 10836 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_SET_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 1420: #line 10847 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_ENABLED; n->subname = (yyvsp[(3) - (4)].str); n->options = list_make1(makeDefElem("enabled", (Node *) makeBoolean(true), (yylsp[(1) - (4)]))); (yyval.node) = (Node *) n; ;} break; case 1421: #line 10858 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_ENABLED; n->subname = (yyvsp[(3) - (4)].str); n->options = list_make1(makeDefElem("enabled", (Node *) makeBoolean(false), (yylsp[(1) - (4)]))); (yyval.node) = (Node *) n; ;} break; case 1422: #line 10869 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_SKIP; n->subname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1423: #line 10887 "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 1424: #line 10896 "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 1425: #line 10915 "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 1426: #line 10930 "gram.y" { (yyval.list) = NIL; ;} break; case 1427: #line 10931 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1428: #line 10932 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1429: #line 10938 "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 1430: #line 10944 "gram.y" { if ((yyvsp[(1) - (1)].node) != NULL) (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); else (yyval.list) = NIL; ;} break; case 1436: #line 10960 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1437: #line 10961 "gram.y" { (yyval.node) = NULL; ;} break; case 1438: #line 10964 "gram.y" { (yyval.ival) = CMD_SELECT; ;} break; case 1439: #line 10965 "gram.y" { (yyval.ival) = CMD_UPDATE; ;} break; case 1440: #line 10966 "gram.y" { (yyval.ival) = CMD_DELETE; ;} break; case 1441: #line 10967 "gram.y" { (yyval.ival) = CMD_INSERT; ;} break; case 1442: #line 10971 "gram.y" { (yyval.boolean) = true; ;} break; case 1443: #line 10972 "gram.y" { (yyval.boolean) = false; ;} break; case 1444: #line 10973 "gram.y" { (yyval.boolean) = false; ;} break; case 1445: #line 10986 "gram.y" { NotifyStmt *n = makeNode(NotifyStmt); n->conditionname = (yyvsp[(2) - (3)].str); n->payload = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 1446: #line 10996 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 1447: #line 10997 "gram.y" { (yyval.str) = NULL; ;} break; case 1448: #line 11001 "gram.y" { ListenStmt *n = makeNode(ListenStmt); n->conditionname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 1449: #line 11011 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); n->conditionname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 1450: #line 11018 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); n->conditionname = NULL; (yyval.node) = (Node *) n; ;} break; case 1451: #line 11038 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK; n->options = NIL; n->chain = (yyvsp[(3) - (3)].boolean); n->location = -1; (yyval.node) = (Node *) n; ;} break; case 1452: #line 11048 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_START; n->options = (yyvsp[(3) - (3)].list); n->location = -1; (yyval.node) = (Node *) n; ;} break; case 1453: #line 11057 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT; n->options = NIL; n->chain = (yyvsp[(3) - (3)].boolean); n->location = -1; (yyval.node) = (Node *) n; ;} break; case 1454: #line 11067 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK; n->options = NIL; n->chain = (yyvsp[(3) - (3)].boolean); n->location = -1; (yyval.node) = (Node *) n; ;} break; case 1455: #line 11077 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_SAVEPOINT; n->savepoint_name = (yyvsp[(2) - (2)].str); n->location = (yylsp[(2) - (2)]); (yyval.node) = (Node *) n; ;} break; case 1456: #line 11086 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; n->savepoint_name = (yyvsp[(3) - (3)].str); n->location = (yylsp[(3) - (3)]); (yyval.node) = (Node *) n; ;} break; case 1457: #line 11095 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; n->savepoint_name = (yyvsp[(2) - (2)].str); n->location = (yylsp[(2) - (2)]); (yyval.node) = (Node *) n; ;} break; case 1458: #line 11104 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; n->savepoint_name = (yyvsp[(5) - (5)].str); n->location = (yylsp[(5) - (5)]); (yyval.node) = (Node *) n; ;} break; case 1459: #line 11113 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; n->savepoint_name = (yyvsp[(4) - (4)].str); n->location = (yylsp[(4) - (4)]); (yyval.node) = (Node *) n; ;} break; case 1460: #line 11122 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_PREPARE; n->gid = (yyvsp[(3) - (3)].str); n->location = (yylsp[(3) - (3)]); (yyval.node) = (Node *) n; ;} break; case 1461: #line 11131 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT_PREPARED; n->gid = (yyvsp[(3) - (3)].str); n->location = (yylsp[(3) - (3)]); (yyval.node) = (Node *) n; ;} break; case 1462: #line 11140 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_PREPARED; n->gid = (yyvsp[(3) - (3)].str); n->location = (yylsp[(3) - (3)]); (yyval.node) = (Node *) n; ;} break; case 1463: #line 11152 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_BEGIN; n->options = (yyvsp[(3) - (3)].list); n->location = -1; (yyval.node) = (Node *) n; ;} break; case 1464: #line 11161 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT; n->options = NIL; n->chain = (yyvsp[(3) - (3)].boolean); n->location = -1; (yyval.node) = (Node *) n; ;} break; case 1468: #line 11179 "gram.y" { (yyval.defelt) = makeDefElem("transaction_isolation", makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)])), (yylsp[(1) - (3)])); ;} break; case 1469: #line 11182 "gram.y" { (yyval.defelt) = makeDefElem("transaction_read_only", makeIntConst(true, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} break; case 1470: #line 11185 "gram.y" { (yyval.defelt) = makeDefElem("transaction_read_only", makeIntConst(false, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} break; case 1471: #line 11188 "gram.y" { (yyval.defelt) = makeDefElem("transaction_deferrable", makeIntConst(true, (yylsp[(1) - (1)])), (yylsp[(1) - (1)])); ;} break; case 1472: #line 11191 "gram.y" { (yyval.defelt) = makeDefElem("transaction_deferrable", makeIntConst(false, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} break; case 1473: #line 11198 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1474: #line 11200 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 1475: #line 11202 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1477: #line 11208 "gram.y" { (yyval.list) = NIL; ;} break; case 1478: #line 11212 "gram.y" { (yyval.boolean) = true; ;} break; case 1479: #line 11213 "gram.y" { (yyval.boolean) = false; ;} break; case 1480: #line 11214 "gram.y" { (yyval.boolean) = false; ;} break; case 1481: #line 11228 "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 1482: #line 11242 "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 1483: #line 11256 "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 1484: #line 11275 "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 1485: #line 11295 "gram.y" { (yyval.ival) = CASCADED_CHECK_OPTION; ;} break; case 1486: #line 11296 "gram.y" { (yyval.ival) = CASCADED_CHECK_OPTION; ;} break; case 1487: #line 11297 "gram.y" { (yyval.ival) = LOCAL_CHECK_OPTION; ;} break; case 1488: #line 11298 "gram.y" { (yyval.ival) = NO_CHECK_OPTION; ;} break; case 1489: #line 11309 "gram.y" { LoadStmt *n = makeNode(LoadStmt); n->filename = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 1490: #line 11326 "gram.y" { CreatedbStmt *n = makeNode(CreatedbStmt); n->dbname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1491: #line 11336 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1492: #line 11337 "gram.y" { (yyval.list) = NIL; ;} break; case 1493: #line 11341 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1494: #line 11342 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1495: #line 11347 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 1496: #line 11351 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 1497: #line 11355 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), NULL, (yylsp[(1) - (3)])); ;} break; case 1498: #line 11372 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1499: #line 11373 "gram.y" { (yyval.str) = pstrdup("connection_limit"); ;} break; case 1500: #line 11374 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1501: #line 11375 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1502: #line 11376 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1503: #line 11377 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1504: #line 11378 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1507: #line 11398 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1508: #line 11406 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = (yyvsp[(3) - (4)].str); n->options = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *) n; ;} break; case 1509: #line 11414 "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 1510: #line 11423 "gram.y" { AlterDatabaseRefreshCollStmt *n = makeNode(AlterDatabaseRefreshCollStmt); n->dbname = (yyvsp[(3) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 1511: #line 11433 "gram.y" { AlterDatabaseSetStmt *n = makeNode(AlterDatabaseSetStmt); n->dbname = (yyvsp[(3) - (4)].str); n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *) n; ;} break; case 1512: #line 11451 "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 1513: #line 11460 "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 1514: #line 11469 "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 1515: #line 11478 "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 1516: #line 11490 "gram.y" { (yyval.list) = list_make1((Node *) (yyvsp[(1) - (1)].defelt)); ;} break; case 1517: #line 11494 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (Node *) (yyvsp[(3) - (3)].defelt)); ;} break; case 1518: #line 11505 "gram.y" { (yyval.defelt) = makeDefElem("force", NULL, (yylsp[(1) - (1)])); ;} break; case 1519: #line 11517 "gram.y" { AlterCollationStmt *n = makeNode(AlterCollationStmt); n->collname = (yyvsp[(3) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1520: #line 11535 "gram.y" { AlterSystemStmt *n = makeNode(AlterSystemStmt); n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *) n; ;} break; case 1521: #line 11542 "gram.y" { AlterSystemStmt *n = makeNode(AlterSystemStmt); n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *) n; ;} break; case 1522: #line 11559 "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 1523: #line 11573 "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 1524: #line 11583 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'N'; n->typeName = (yyvsp[(3) - (6)].list); (yyval.node) = (Node *) n; ;} break; case 1525: #line 11592 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'O'; n->typeName = (yyvsp[(3) - (6)].list); (yyval.node) = (Node *) n; ;} break; case 1526: #line 11601 "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 1527: #line 11611 "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 1528: #line 11623 "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 1529: #line 11635 "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 1532: #line 11658 "gram.y" { AlterTSDictionaryStmt *n = makeNode(AlterTSDictionaryStmt); n->dictname = (yyvsp[(5) - (6)].list); n->options = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *) n; ;} break; case 1533: #line 11669 "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 1534: #line 11681 "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 1535: #line 11693 "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 1536: #line 11705 "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 1537: #line 11717 "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 1538: #line 11727 "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 1541: #line 11756 "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 1542: #line 11779 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = (yyvsp[(5) - (6)].range); n->indexname = (yyvsp[(6) - (6)].str); n->params = (yyvsp[(3) - (6)].list); (yyval.node) = (Node *) n; ;} break; case 1543: #line 11788 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = NULL; n->indexname = NULL; n->params = (yyvsp[(3) - (4)].list); (yyval.node) = (Node *) n; ;} break; case 1544: #line 11798 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = (yyvsp[(3) - (4)].range); n->indexname = (yyvsp[(4) - (4)].str); n->params = NIL; if ((yyvsp[(2) - (4)].boolean)) n->params = lappend(n->params, makeDefElem("verbose", NULL, (yylsp[(2) - (4)]))); (yyval.node) = (Node *) n; ;} break; case 1545: #line 11810 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = NULL; n->indexname = NULL; n->params = NIL; if ((yyvsp[(2) - (2)].boolean)) n->params = lappend(n->params, makeDefElem("verbose", NULL, (yylsp[(2) - (2)]))); (yyval.node) = (Node *) n; ;} break; case 1546: #line 11822 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = (yyvsp[(5) - (5)].range); n->indexname = (yyvsp[(3) - (5)].str); n->params = NIL; if ((yyvsp[(2) - (5)].boolean)) n->params = lappend(n->params, makeDefElem("verbose", NULL, (yylsp[(2) - (5)]))); (yyval.node) = (Node *) n; ;} break; case 1547: #line 11835 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 1548: #line 11836 "gram.y" { (yyval.str) = NULL; ;} break; case 1549: #line 11849 "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 1550: #line 11870 "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 1551: #line 11881 "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 1552: #line 11893 "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 1553: #line 11905 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1554: #line 11909 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 1557: #line 11921 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1558: #line 11927 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1559: #line 11928 "gram.y" { (yyval.str) = "analyze"; ;} break; case 1560: #line 11929 "gram.y" { (yyval.str) = "format"; ;} break; case 1561: #line 11933 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 1562: #line 11934 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].node); ;} break; case 1563: #line 11935 "gram.y" { (yyval.node) = NULL; ;} break; case 1564: #line 11939 "gram.y" { (yyval.boolean) = true; ;} break; case 1565: #line 11940 "gram.y" { (yyval.boolean) = false; ;} break; case 1566: #line 11944 "gram.y" { (yyval.boolean) = true; ;} break; case 1567: #line 11945 "gram.y" { (yyval.boolean) = false; ;} break; case 1568: #line 11948 "gram.y" { (yyval.boolean) = true; ;} break; case 1569: #line 11949 "gram.y" { (yyval.boolean) = false; ;} break; case 1570: #line 11952 "gram.y" { (yyval.boolean) = true; ;} break; case 1571: #line 11953 "gram.y" { (yyval.boolean) = false; ;} break; case 1572: #line 11957 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1573: #line 11958 "gram.y" { (yyval.list) = NIL; ;} break; case 1574: #line 11963 "gram.y" { (yyval.node) = (Node *) makeVacuumRelation((yyvsp[(1) - (2)].range), InvalidOid, (yyvsp[(2) - (2)].list)); ;} break; case 1575: #line 11970 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1576: #line 11972 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1577: #line 11976 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1578: #line 11977 "gram.y" { (yyval.list) = NIL; ;} break; case 1579: #line 11991 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); n->query = (yyvsp[(2) - (2)].node); n->options = NIL; (yyval.node) = (Node *) n; ;} break; case 1580: #line 11999 "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 1581: #line 12010 "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 1582: #line 12018 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); n->query = (yyvsp[(5) - (5)].node); n->options = (yyvsp[(3) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1593: #line 12048 "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 1594: #line 12058 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1595: #line 12059 "gram.y" { (yyval.list) = NIL; ;} break; case 1601: #line 12078 "gram.y" { ExecuteStmt *n = makeNode(ExecuteStmt); n->name = (yyvsp[(2) - (3)].str); n->params = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *) n; ;} break; case 1602: #line 12087 "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->objtype = 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 1603: #line 12105 "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->objtype = 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 1604: #line 12123 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1605: #line 12124 "gram.y" { (yyval.list) = NIL; ;} break; case 1606: #line 12135 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = (yyvsp[(2) - (2)].str); n->isall = false; n->location = (yylsp[(2) - (2)]); (yyval.node) = (Node *) n; ;} break; case 1607: #line 12144 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = (yyvsp[(3) - (3)].str); n->isall = false; n->location = (yylsp[(3) - (3)]); (yyval.node) = (Node *) n; ;} break; case 1608: #line 12153 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = NULL; n->isall = true; n->location = -1; (yyval.node) = (Node *) n; ;} break; case 1609: #line 12162 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = NULL; n->isall = true; n->location = -1; (yyval.node) = (Node *) n; ;} break; case 1610: #line 12182 "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 1611: #line 12199 "gram.y" { (yyval.range) = (yyvsp[(1) - (1)].range); ;} break; case 1612: #line 12203 "gram.y" { (yyvsp[(1) - (3)].range)->alias = makeAlias((yyvsp[(3) - (3)].str), NIL); (yyval.range) = (yyvsp[(1) - (3)].range); ;} break; case 1613: #line 12211 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; (yyval.istmt)->selectStmt = (yyvsp[(1) - (1)].node); ;} break; case 1614: #line 12217 "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 1615: #line 12224 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = (yyvsp[(2) - (4)].list); (yyval.istmt)->selectStmt = (yyvsp[(4) - (4)].node); ;} break; case 1616: #line 12230 "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 1617: #line 12237 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; (yyval.istmt)->selectStmt = NULL; ;} break; case 1618: #line 12245 "gram.y" { (yyval.ival) = OVERRIDING_USER_VALUE; ;} break; case 1619: #line 12246 "gram.y" { (yyval.ival) = OVERRIDING_SYSTEM_VALUE; ;} break; case 1620: #line 12251 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 1621: #line 12253 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; case 1622: #line 12258 "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 1623: #line 12269 "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 1624: #line 12279 "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 1625: #line 12288 "gram.y" { (yyval.onconflict) = NULL; ;} break; case 1626: #line 12295 "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 1627: #line 12304 "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 1628: #line 12312 "gram.y" { (yyval.infer) = NULL; ;} break; case 1629: #line 12318 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1630: #line 12319 "gram.y" { (yyval.list) = NIL; ;} break; case 1631: #line 12332 "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 1632: #line 12345 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1633: #line 12346 "gram.y" { (yyval.list) = NIL; ;} break; case 1634: #line 12358 "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 1635: #line 12368 "gram.y" { (yyval.ival) = (yyvsp[(2) - (3)].ival); ;} break; case 1636: #line 12369 "gram.y" { (yyval.ival) = AccessExclusiveLock; ;} break; case 1637: #line 12372 "gram.y" { (yyval.ival) = AccessShareLock; ;} break; case 1638: #line 12373 "gram.y" { (yyval.ival) = RowShareLock; ;} break; case 1639: #line 12374 "gram.y" { (yyval.ival) = RowExclusiveLock; ;} break; case 1640: #line 12375 "gram.y" { (yyval.ival) = ShareUpdateExclusiveLock; ;} break; case 1641: #line 12376 "gram.y" { (yyval.ival) = ShareLock; ;} break; case 1642: #line 12377 "gram.y" { (yyval.ival) = ShareRowExclusiveLock; ;} break; case 1643: #line 12378 "gram.y" { (yyval.ival) = ExclusiveLock; ;} break; case 1644: #line 12379 "gram.y" { (yyval.ival) = AccessExclusiveLock; ;} break; case 1645: #line 12382 "gram.y" { (yyval.boolean) = true; ;} break; case 1646: #line 12383 "gram.y" { (yyval.boolean) = false; ;} break; case 1647: #line 12387 "gram.y" { (yyval.ival) = LockWaitError; ;} break; case 1648: #line 12388 "gram.y" { (yyval.ival) = LockWaitSkip; ;} break; case 1649: #line 12389 "gram.y" { (yyval.ival) = LockWaitBlock; ;} break; case 1650: #line 12405 "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 1651: #line 12419 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1652: #line 12420 "gram.y" { (yyval.list) = list_concat((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].list)); ;} break; case 1653: #line 12425 "gram.y" { (yyvsp[(1) - (3)].target)->val = (Node *) (yyvsp[(3) - (3)].node); (yyval.list) = list_make1((yyvsp[(1) - (3)].target)); ;} break; case 1654: #line 12430 "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 1655: #line 12454 "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 1656: #line 12464 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 1657: #line 12465 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].target)); ;} break; case 1658: #line 12482 "gram.y" { MergeStmt *m = makeNode(MergeStmt); m->withClause = (yyvsp[(1) - (10)].with); m->relation = (yyvsp[(4) - (10)].range); m->sourceRelation = (yyvsp[(6) - (10)].node); m->joinCondition = (yyvsp[(8) - (10)].node); m->mergeWhenClauses = (yyvsp[(9) - (10)].list); m->returningList = (yyvsp[(10) - (10)].list); (yyval.node) = (Node *) m; ;} break; case 1659: #line 12497 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1660: #line 12498 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list),(yyvsp[(2) - (2)].node)); ;} break; case 1661: #line 12509 "gram.y" { (yyvsp[(4) - (4)].mergewhen)->matchKind = (yyvsp[(1) - (4)].mergematch); (yyvsp[(4) - (4)].mergewhen)->condition = (yyvsp[(2) - (4)].node); (yyval.node) = (Node *) (yyvsp[(4) - (4)].mergewhen); ;} break; case 1662: #line 12516 "gram.y" { (yyvsp[(4) - (4)].mergewhen)->matchKind = (yyvsp[(1) - (4)].mergematch); (yyvsp[(4) - (4)].mergewhen)->condition = (yyvsp[(2) - (4)].node); (yyval.node) = (Node *) (yyvsp[(4) - (4)].mergewhen); ;} break; case 1663: #line 12523 "gram.y" { (yyvsp[(4) - (4)].mergewhen)->matchKind = (yyvsp[(1) - (4)].mergematch); (yyvsp[(4) - (4)].mergewhen)->condition = (yyvsp[(2) - (4)].node); (yyval.node) = (Node *) (yyvsp[(4) - (4)].mergewhen); ;} break; case 1664: #line 12530 "gram.y" { MergeWhenClause *m = makeNode(MergeWhenClause); m->matchKind = (yyvsp[(1) - (5)].mergematch); m->commandType = CMD_NOTHING; m->condition = (yyvsp[(2) - (5)].node); (yyval.node) = (Node *) m; ;} break; case 1665: #line 12540 "gram.y" { MergeWhenClause *m = makeNode(MergeWhenClause); m->matchKind = (yyvsp[(1) - (5)].mergematch); m->commandType = CMD_NOTHING; m->condition = (yyvsp[(2) - (5)].node); (yyval.node) = (Node *) m; ;} break; case 1666: #line 12552 "gram.y" { (yyval.mergematch) = MERGE_WHEN_MATCHED; ;} break; case 1667: #line 12553 "gram.y" { (yyval.mergematch) = MERGE_WHEN_NOT_MATCHED_BY_SOURCE; ;} break; case 1668: #line 12557 "gram.y" { (yyval.mergematch) = MERGE_WHEN_NOT_MATCHED_BY_TARGET; ;} break; case 1669: #line 12558 "gram.y" { (yyval.mergematch) = MERGE_WHEN_NOT_MATCHED_BY_TARGET; ;} break; case 1670: #line 12562 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1671: #line 12563 "gram.y" { (yyval.node) = NULL; ;} break; case 1672: #line 12568 "gram.y" { MergeWhenClause *n = makeNode(MergeWhenClause); n->commandType = CMD_UPDATE; n->override = OVERRIDING_NOT_SET; n->targetList = (yyvsp[(3) - (3)].list); n->values = NIL; (yyval.mergewhen) = n; ;} break; case 1673: #line 12581 "gram.y" { MergeWhenClause *n = makeNode(MergeWhenClause); n->commandType = CMD_DELETE; n->override = OVERRIDING_NOT_SET; n->targetList = NIL; n->values = NIL; (yyval.mergewhen) = n; ;} break; case 1674: #line 12594 "gram.y" { MergeWhenClause *n = makeNode(MergeWhenClause); n->commandType = CMD_INSERT; n->override = OVERRIDING_NOT_SET; n->targetList = NIL; n->values = (yyvsp[(2) - (2)].list); (yyval.mergewhen) = n; ;} break; case 1675: #line 12603 "gram.y" { MergeWhenClause *n = makeNode(MergeWhenClause); n->commandType = CMD_INSERT; n->override = (yyvsp[(3) - (5)].ival); n->targetList = NIL; n->values = (yyvsp[(5) - (5)].list); (yyval.mergewhen) = n; ;} break; case 1676: #line 12612 "gram.y" { MergeWhenClause *n = makeNode(MergeWhenClause); n->commandType = CMD_INSERT; n->override = OVERRIDING_NOT_SET; n->targetList = (yyvsp[(3) - (5)].list); n->values = (yyvsp[(5) - (5)].list); (yyval.mergewhen) = n; ;} break; case 1677: #line 12621 "gram.y" { MergeWhenClause *n = makeNode(MergeWhenClause); n->commandType = CMD_INSERT; n->override = (yyvsp[(6) - (8)].ival); n->targetList = (yyvsp[(3) - (8)].list); n->values = (yyvsp[(8) - (8)].list); (yyval.mergewhen) = n; ;} break; case 1678: #line 12630 "gram.y" { MergeWhenClause *n = makeNode(MergeWhenClause); n->commandType = CMD_INSERT; n->override = OVERRIDING_NOT_SET; n->targetList = NIL; n->values = NIL; (yyval.mergewhen) = n; ;} break; case 1679: #line 12642 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 1680: #line 12654 "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 1681: #line 12665 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1682: #line 12668 "gram.y" { (yyval.ival) = 0; ;} break; case 1683: #line 12669 "gram.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) | CURSOR_OPT_NO_SCROLL; ;} break; case 1684: #line 12670 "gram.y" { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_SCROLL; ;} break; case 1685: #line 12671 "gram.y" { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_BINARY; ;} break; case 1686: #line 12672 "gram.y" { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_ASENSITIVE; ;} break; case 1687: #line 12673 "gram.y" { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_INSENSITIVE; ;} break; case 1688: #line 12676 "gram.y" { (yyval.ival) = 0; ;} break; case 1689: #line 12677 "gram.y" { (yyval.ival) = CURSOR_OPT_HOLD; ;} break; case 1690: #line 12678 "gram.y" { (yyval.ival) = 0; ;} break; case 1693: #line 12731 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; case 1694: #line 12732 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; case 1695: #line 12747 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1696: #line 12749 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list), NIL, NULL, NULL, yyscanner); (yyval.node) = (yyvsp[(1) - (2)].node); ;} break; case 1697: #line 12756 "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 1698: #line 12764 "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 1699: #line 12772 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(2) - (2)].node), NULL, NIL, NULL, (yyvsp[(1) - (2)].with), yyscanner); (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1700: #line 12780 "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 1701: #line 12788 "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 1702: #line 12796 "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 1703: #line 12806 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1704: #line 12807 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1705: #line 12842 "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)].groupclause))->list; n->groupDistinct = ((yyvsp[(7) - (9)].groupclause))->distinct; n->havingClause = (yyvsp[(8) - (9)].node); n->windowClause = (yyvsp[(9) - (9)].list); (yyval.node) = (Node *) n; ;} break; case 1706: #line 12858 "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)].groupclause))->list; n->groupDistinct = ((yyvsp[(7) - (9)].groupclause))->distinct; n->havingClause = (yyvsp[(8) - (9)].node); n->windowClause = (yyvsp[(9) - (9)].list); (yyval.node) = (Node *) n; ;} break; case 1707: #line 12872 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1708: #line 12874 "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 1709: #line 12893 "gram.y" { (yyval.node) = makeSetOp(SETOP_UNION, (yyvsp[(3) - (4)].setquantifier) == SET_QUANTIFIER_ALL, (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; case 1710: #line 12897 "gram.y" { (yyval.node) = makeSetOp(SETOP_INTERSECT, (yyvsp[(3) - (4)].setquantifier) == SET_QUANTIFIER_ALL, (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; case 1711: #line 12901 "gram.y" { (yyval.node) = makeSetOp(SETOP_EXCEPT, (yyvsp[(3) - (4)].setquantifier) == SET_QUANTIFIER_ALL, (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; case 1712: #line 12916 "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 1713: #line 12923 "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 1714: #line 12930 "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 1715: #line 12939 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1716: #line 12940 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1717: #line 12944 "gram.y" { CommonTableExpr *n = makeNode(CommonTableExpr); n->ctename = (yyvsp[(1) - (9)].str); n->aliascolnames = (yyvsp[(2) - (9)].list); n->ctematerialized = (yyvsp[(4) - (9)].ival); n->ctequery = (yyvsp[(6) - (9)].node); n->search_clause = castNode(CTESearchClause, (yyvsp[(8) - (9)].node)); n->cycle_clause = castNode(CTECycleClause, (yyvsp[(9) - (9)].node)); n->location = (yylsp[(1) - (9)]); (yyval.node) = (Node *) n; ;} break; case 1718: #line 12959 "gram.y" { (yyval.ival) = CTEMaterializeAlways; ;} break; case 1719: #line 12960 "gram.y" { (yyval.ival) = CTEMaterializeNever; ;} break; case 1720: #line 12961 "gram.y" { (yyval.ival) = CTEMaterializeDefault; ;} break; case 1721: #line 12966 "gram.y" { CTESearchClause *n = makeNode(CTESearchClause); n->search_col_list = (yyvsp[(5) - (7)].list); n->search_breadth_first = false; n->search_seq_column = (yyvsp[(7) - (7)].str); n->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *) n; ;} break; case 1722: #line 12976 "gram.y" { CTESearchClause *n = makeNode(CTESearchClause); n->search_col_list = (yyvsp[(5) - (7)].list); n->search_breadth_first = true; n->search_seq_column = (yyvsp[(7) - (7)].str); n->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *) n; ;} break; case 1723: #line 12986 "gram.y" { (yyval.node) = NULL; ;} break; case 1724: #line 12993 "gram.y" { CTECycleClause *n = makeNode(CTECycleClause); n->cycle_col_list = (yyvsp[(2) - (10)].list); n->cycle_mark_column = (yyvsp[(4) - (10)].str); n->cycle_mark_value = (yyvsp[(6) - (10)].node); n->cycle_mark_default = (yyvsp[(8) - (10)].node); n->cycle_path_column = (yyvsp[(10) - (10)].str); n->location = (yylsp[(1) - (10)]); (yyval.node) = (Node *) n; ;} break; case 1725: #line 13005 "gram.y" { CTECycleClause *n = makeNode(CTECycleClause); n->cycle_col_list = (yyvsp[(2) - (6)].list); n->cycle_mark_column = (yyvsp[(4) - (6)].str); n->cycle_mark_value = makeBoolAConst(true, -1); n->cycle_mark_default = makeBoolAConst(false, -1); n->cycle_path_column = (yyvsp[(6) - (6)].str); n->location = (yylsp[(1) - (6)]); (yyval.node) = (Node *) n; ;} break; case 1726: #line 13017 "gram.y" { (yyval.node) = NULL; ;} break; case 1727: #line 13023 "gram.y" { (yyval.with) = (yyvsp[(1) - (1)].with); ;} break; case 1728: #line 13024 "gram.y" { (yyval.with) = NULL; ;} break; case 1729: #line 13029 "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 1730: #line 13040 "gram.y" { (yyval.into) = NULL; ;} break; case 1731: #line 13049 "gram.y" { (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; case 1732: #line 13054 "gram.y" { (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; case 1733: #line 13059 "gram.y" { (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; case 1734: #line 13064 "gram.y" { (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; case 1735: #line 13069 "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 1736: #line 13077 "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 1737: #line 13085 "gram.y" { (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_UNLOGGED; ;} break; case 1738: #line 13090 "gram.y" { (yyval.range) = (yyvsp[(2) - (2)].range); (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; ;} break; case 1739: #line 13095 "gram.y" { (yyval.range) = (yyvsp[(1) - (1)].range); (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; ;} break; case 1742: #line 13106 "gram.y" { (yyval.setquantifier) = SET_QUANTIFIER_ALL; ;} break; case 1743: #line 13107 "gram.y" { (yyval.setquantifier) = SET_QUANTIFIER_DISTINCT; ;} break; case 1744: #line 13108 "gram.y" { (yyval.setquantifier) = SET_QUANTIFIER_DEFAULT; ;} break; case 1745: #line 13115 "gram.y" { (yyval.list) = list_make1(NIL); ;} break; case 1746: #line 13116 "gram.y" { (yyval.list) = (yyvsp[(4) - (5)].list); ;} break; case 1749: #line 13125 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1750: #line 13126 "gram.y" { (yyval.list) = NIL; ;} break; case 1751: #line 13130 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1752: #line 13131 "gram.y" { (yyval.list) = NIL; ;} break; case 1753: #line 13135 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; case 1754: #line 13139 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].sortby)); ;} break; case 1755: #line 13140 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].sortby)); ;} break; case 1756: #line 13144 "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 1757: #line 13153 "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 1758: #line 13166 "gram.y" { (yyval.selectlimit) = (yyvsp[(1) - (2)].selectlimit); ((yyval.selectlimit))->limitOffset = (yyvsp[(2) - (2)].node); ;} break; case 1759: #line 13171 "gram.y" { (yyval.selectlimit) = (yyvsp[(2) - (2)].selectlimit); ((yyval.selectlimit))->limitOffset = (yyvsp[(1) - (2)].node); ;} break; case 1760: #line 13176 "gram.y" { (yyval.selectlimit) = (yyvsp[(1) - (1)].selectlimit); ;} break; case 1761: #line 13180 "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 1762: #line 13191 "gram.y" { (yyval.selectlimit) = (yyvsp[(1) - (1)].selectlimit); ;} break; case 1763: #line 13192 "gram.y" { (yyval.selectlimit) = NULL; ;} break; case 1764: #line 13197 "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 1765: #line 13206 "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 1766: #line 13222 "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 1767: #line 13231 "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 1768: #line 13240 "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 1769: #line 13249 "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 1770: #line 13261 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1771: #line 13264 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; case 1772: #line 13268 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1773: #line 13270 "gram.y" { /* LIMIT ALL is represented as a NULL constant */ (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); ;} break; case 1774: #line 13277 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1775: #line 13297 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1776: #line 13299 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1777: #line 13301 "gram.y" { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1778: #line 13305 "gram.y" { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival),(yylsp[(1) - (1)])); ;} break; case 1779: #line 13306 "gram.y" { (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str),(yylsp[(1) - (1)])); ;} break; case 1780: #line 13310 "gram.y" { (yyval.ival) = 0; ;} break; case 1781: #line 13311 "gram.y" { (yyval.ival) = 0; ;} break; case 1782: #line 13314 "gram.y" { (yyval.ival) = 0; ;} break; case 1783: #line 13315 "gram.y" { (yyval.ival) = 0; ;} break; case 1784: #line 13341 "gram.y" { GroupClause *n = (GroupClause *) palloc(sizeof(GroupClause)); n->distinct = (yyvsp[(3) - (4)].setquantifier) == SET_QUANTIFIER_DISTINCT; n->list = (yyvsp[(4) - (4)].list); (yyval.groupclause) = n; ;} break; case 1785: #line 13349 "gram.y" { GroupClause *n = (GroupClause *) palloc(sizeof(GroupClause)); n->distinct = false; n->list = NIL; (yyval.groupclause) = n; ;} break; case 1786: #line 13359 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1787: #line 13360 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].node)); ;} break; case 1788: #line 13364 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1789: #line 13365 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1790: #line 13366 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1791: #line 13367 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1792: #line 13368 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1793: #line 13373 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_EMPTY, NIL, (yylsp[(1) - (2)])); ;} break; case 1794: #line 13386 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_ROLLUP, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 1795: #line 13393 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_CUBE, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 1796: #line 13400 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_SETS, (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; case 1797: #line 13406 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1798: #line 13407 "gram.y" { (yyval.node) = NULL; ;} break; case 1799: #line 13411 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1800: #line 13412 "gram.y" { (yyval.list) = NIL; ;} break; case 1801: #line 13416 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1802: #line 13417 "gram.y" { (yyval.list) = NIL; ;} break; case 1803: #line 13421 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1804: #line 13422 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 1805: #line 13427 "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 1806: #line 13438 "gram.y" { (yyval.ival) = LCS_FORUPDATE; ;} break; case 1807: #line 13439 "gram.y" { (yyval.ival) = LCS_FORNOKEYUPDATE; ;} break; case 1808: #line 13440 "gram.y" { (yyval.ival) = LCS_FORSHARE; ;} break; case 1809: #line 13441 "gram.y" { (yyval.ival) = LCS_FORKEYSHARE; ;} break; case 1810: #line 13445 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1811: #line 13446 "gram.y" { (yyval.list) = NIL; ;} break; case 1812: #line 13457 "gram.y" { SelectStmt *n = makeNode(SelectStmt); n->valuesLists = list_make1((yyvsp[(3) - (4)].list)); (yyval.node) = (Node *) n; ;} break; case 1813: #line 13464 "gram.y" { SelectStmt *n = (SelectStmt *) (yyvsp[(1) - (5)].node); n->valuesLists = lappend(n->valuesLists, (yyvsp[(4) - (5)].list)); (yyval.node) = (Node *) n; ;} break; case 1814: #line 13482 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1815: #line 13483 "gram.y" { (yyval.list) = NIL; ;} break; case 1816: #line 13487 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1817: #line 13488 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1818: #line 13495 "gram.y" { (yyvsp[(1) - (2)].range)->alias = (yyvsp[(2) - (2)].alias); (yyval.node) = (Node *) (yyvsp[(1) - (2)].range); ;} break; case 1819: #line 13500 "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 1820: #line 13509 "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 1821: #line 13517 "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 1822: #line 13526 "gram.y" { RangeTableFunc *n = (RangeTableFunc *) (yyvsp[(1) - (2)].node); n->alias = (yyvsp[(2) - (2)].alias); (yyval.node) = (Node *) n; ;} break; case 1823: #line 13533 "gram.y" { RangeTableFunc *n = (RangeTableFunc *) (yyvsp[(2) - (3)].node); n->lateral = true; n->alias = (yyvsp[(3) - (3)].alias); (yyval.node) = (Node *) n; ;} break; case 1824: #line 13541 "gram.y" { RangeSubselect *n = makeNode(RangeSubselect); n->lateral = false; n->subquery = (yyvsp[(1) - (2)].node); n->alias = (yyvsp[(2) - (2)].alias); (yyval.node) = (Node *) n; ;} break; case 1825: #line 13550 "gram.y" { RangeSubselect *n = makeNode(RangeSubselect); n->lateral = true; n->subquery = (yyvsp[(2) - (3)].node); n->alias = (yyvsp[(3) - (3)].alias); (yyval.node) = (Node *) n; ;} break; case 1826: #line 13559 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].jexpr); ;} break; case 1827: #line 13563 "gram.y" { (yyvsp[(2) - (4)].jexpr)->alias = (yyvsp[(4) - (4)].alias); (yyval.node) = (Node *) (yyvsp[(2) - (4)].jexpr); ;} break; case 1828: #line 13568 "gram.y" { JsonTable *jt = castNode(JsonTable, (yyvsp[(1) - (2)].node)); jt->alias = (yyvsp[(2) - (2)].alias); (yyval.node) = (Node *) jt; ;} break; case 1829: #line 13575 "gram.y" { JsonTable *jt = castNode(JsonTable, (yyvsp[(2) - (3)].node)); jt->alias = (yyvsp[(3) - (3)].alias); jt->lateral = true; (yyval.node) = (Node *) jt; ;} break; case 1830: #line 13604 "gram.y" { (yyval.jexpr) = (yyvsp[(2) - (3)].jexpr); ;} break; case 1831: #line 13608 "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->join_using_alias = NULL; n->quals = NULL; (yyval.jexpr) = n; ;} break; case 1832: #line 13622 "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)) { /* USING clause */ n->usingClause = linitial_node(List, castNode(List, (yyvsp[(5) - (5)].node))); n->join_using_alias = lsecond_node(Alias, castNode(List, (yyvsp[(5) - (5)].node))); } else { /* ON clause */ n->quals = (yyvsp[(5) - (5)].node); } (yyval.jexpr) = n; ;} break; case 1833: #line 13643 "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)) { /* USING clause */ n->usingClause = linitial_node(List, castNode(List, (yyvsp[(4) - (4)].node))); n->join_using_alias = lsecond_node(Alias, castNode(List, (yyvsp[(4) - (4)].node))); } else { /* ON clause */ n->quals = (yyvsp[(4) - (4)].node); } (yyval.jexpr) = n; ;} break; case 1834: #line 13665 "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->join_using_alias = NULL; n->quals = NULL; /* fill later */ (yyval.jexpr) = n; ;} break; case 1835: #line 13678 "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->join_using_alias = NULL; n->quals = NULL; /* fill later */ (yyval.jexpr) = n; ;} break; case 1836: #line 13695 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(2) - (5)].str); (yyval.alias)->colnames = (yyvsp[(4) - (5)].list); ;} break; case 1837: #line 13701 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(2) - (2)].str); ;} break; case 1838: #line 13706 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(1) - (4)].str); (yyval.alias)->colnames = (yyvsp[(3) - (4)].list); ;} break; case 1839: #line 13712 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(1) - (1)].str); ;} break; case 1840: #line 13718 "gram.y" { (yyval.alias) = (yyvsp[(1) - (1)].alias); ;} break; case 1841: #line 13719 "gram.y" { (yyval.alias) = NULL; ;} break; case 1842: #line 13730 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(2) - (2)].str); /* the column name list will be inserted later */ ;} break; case 1843: #line 13735 "gram.y" { (yyval.alias) = NULL; ;} break; case 1844: #line 13744 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (1)].alias), NIL); ;} break; case 1845: #line 13748 "gram.y" { (yyval.list) = list_make2(NULL, (yyvsp[(3) - (4)].list)); ;} break; case 1846: #line 13752 "gram.y" { Alias *a = makeNode(Alias); a->aliasname = (yyvsp[(2) - (5)].str); (yyval.list) = list_make2(a, (yyvsp[(4) - (5)].list)); ;} break; case 1847: #line 13759 "gram.y" { Alias *a = makeNode(Alias); a->aliasname = (yyvsp[(1) - (4)].str); (yyval.list) = list_make2(a, (yyvsp[(3) - (4)].list)); ;} break; case 1848: #line 13766 "gram.y" { (yyval.list) = list_make2(NULL, NIL); ;} break; case 1849: #line 13771 "gram.y" { (yyval.jtype) = JOIN_FULL; ;} break; case 1850: #line 13772 "gram.y" { (yyval.jtype) = JOIN_LEFT; ;} break; case 1851: #line 13773 "gram.y" { (yyval.jtype) = JOIN_RIGHT; ;} break; case 1852: #line 13774 "gram.y" { (yyval.jtype) = JOIN_INNER; ;} break; case 1855: #line 13795 "gram.y" { (yyval.node) = (Node *) list_make2((yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].alias)); ;} break; case 1856: #line 13799 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1857: #line 13807 "gram.y" { /* inheritance query, implicitly */ (yyval.range) = (yyvsp[(1) - (1)].range); (yyval.range)->inh = true; (yyval.range)->alias = NULL; ;} break; case 1858: #line 13814 "gram.y" { (yyval.range) = (yyvsp[(1) - (1)].range); ;} break; case 1859: #line 13821 "gram.y" { /* inheritance query, explicitly */ (yyval.range) = (yyvsp[(1) - (2)].range); (yyval.range)->inh = true; (yyval.range)->alias = NULL; ;} break; case 1860: #line 13828 "gram.y" { /* no inheritance */ (yyval.range) = (yyvsp[(2) - (2)].range); (yyval.range)->inh = false; (yyval.range)->alias = NULL; ;} break; case 1861: #line 13835 "gram.y" { /* no inheritance, SQL99-style syntax */ (yyval.range) = (yyvsp[(3) - (4)].range); (yyval.range)->inh = false; (yyval.range)->alias = NULL; ;} break; case 1862: #line 13845 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); ;} break; case 1863: #line 13846 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); ;} break; case 1864: #line 13860 "gram.y" { (yyval.range) = (yyvsp[(1) - (1)].range); ;} break; case 1865: #line 13864 "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 1866: #line 13872 "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 1867: #line 13886 "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 1868: #line 13899 "gram.y" { (yyval.node) = (Node *) (yyvsp[(3) - (4)].node); ;} break; case 1869: #line 13900 "gram.y" { (yyval.node) = NULL; ;} break; case 1870: #line 13916 "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 1871: #line 13927 "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 1872: #line 13940 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list)); ;} break; case 1873: #line 13944 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; case 1874: #line 13945 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; case 1875: #line 13948 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 1876: #line 13949 "gram.y" { (yyval.list) = NIL; ;} break; case 1877: #line 13952 "gram.y" { (yyval.boolean) = true; ;} break; case 1878: #line 13953 "gram.y" { (yyval.boolean) = false; ;} break; case 1879: #line 13958 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1880: #line 13959 "gram.y" { (yyval.node) = NULL; ;} break; case 1881: #line 13964 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1882: #line 13966 "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 1883: #line 13974 "gram.y" { (yyval.node) = NULL; ;} break; case 1884: #line 13979 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1885: #line 13980 "gram.y" { (yyval.list) = NIL; ;} break; case 1886: #line 13985 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1887: #line 13989 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1888: #line 13995 "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 1889: #line 14020 "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 1890: #line 14032 "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 1891: #line 14044 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1892: #line 14045 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1893: #line 14050 "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 1894: #line 14064 "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 = boolVal(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 1895: #line 14121 "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 1896: #line 14135 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1897: #line 14137 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1898: #line 14142 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1899: #line 14144 "gram.y" { (yyval.defelt) = makeDefElem("default", (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1900: #line 14146 "gram.y" { (yyval.defelt) = makeDefElem("is_not_null", (Node *) makeBoolean(true), (yylsp[(1) - (2)])); ;} break; case 1901: #line 14148 "gram.y" { (yyval.defelt) = makeDefElem("is_not_null", (Node *) makeBoolean(false), (yylsp[(1) - (1)])); ;} break; case 1902: #line 14150 "gram.y" { (yyval.defelt) = makeDefElem("path", (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1903: #line 14155 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 1904: #line 14157 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; case 1905: #line 14162 "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 1906: #line 14170 "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 1907: #line 14186 "gram.y" { JsonTable *n = makeNode(JsonTable); char *pathstring; n->context_item = (JsonValueExpr *) (yyvsp[(3) - (13)].node); if (!IsA((yyvsp[(5) - (13)].node), A_Const) || castNode(A_Const, (yyvsp[(5) - (13)].node))->val.node.type != T_String) ereport(ERROR, errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("only string constants are supported in JSON_TABLE path specification"), parser_errposition((yylsp[(5) - (13)]))); pathstring = castNode(A_Const, (yyvsp[(5) - (13)].node))->val.sval.sval; n->pathspec = makeJsonTablePathSpec(pathstring, (yyvsp[(6) - (13)].str), (yylsp[(5) - (13)]), (yylsp[(6) - (13)])); n->passing = (yyvsp[(7) - (13)].list); n->columns = (yyvsp[(10) - (13)].list); n->on_error = (JsonBehavior *) (yyvsp[(12) - (13)].node); n->location = (yylsp[(1) - (13)]); (yyval.node) = (Node *) n; ;} break; case 1908: #line 14208 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 1909: #line 14209 "gram.y" { (yyval.str) = NULL; ;} break; case 1910: #line 14214 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1911: #line 14216 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1912: #line 14221 "gram.y" { JsonTableColumn *n = makeNode(JsonTableColumn); n->coltype = JTC_FOR_ORDINALITY; n->name = (yyvsp[(1) - (3)].str); n->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) n; ;} break; case 1913: #line 14234 "gram.y" { JsonTableColumn *n = makeNode(JsonTableColumn); n->coltype = JTC_REGULAR; n->name = (yyvsp[(1) - (6)].str); n->typeName = (yyvsp[(2) - (6)].typnam); n->format = makeJsonFormat(JS_FORMAT_DEFAULT, JS_ENC_DEFAULT, -1); n->pathspec = (JsonTablePathSpec *) (yyvsp[(3) - (6)].node); n->wrapper = (yyvsp[(4) - (6)].ival); n->quotes = (yyvsp[(5) - (6)].ival); n->on_empty = (JsonBehavior *) linitial((yyvsp[(6) - (6)].list)); n->on_error = (JsonBehavior *) lsecond((yyvsp[(6) - (6)].list)); n->location = (yylsp[(1) - (6)]); (yyval.node) = (Node *) n; ;} break; case 1914: #line 14254 "gram.y" { JsonTableColumn *n = makeNode(JsonTableColumn); n->coltype = JTC_FORMATTED; n->name = (yyvsp[(1) - (7)].str); n->typeName = (yyvsp[(2) - (7)].typnam); n->format = (JsonFormat *) (yyvsp[(3) - (7)].node); n->pathspec = (JsonTablePathSpec *) (yyvsp[(4) - (7)].node); n->wrapper = (yyvsp[(5) - (7)].ival); n->quotes = (yyvsp[(6) - (7)].ival); n->on_empty = (JsonBehavior *) linitial((yyvsp[(7) - (7)].list)); n->on_error = (JsonBehavior *) lsecond((yyvsp[(7) - (7)].list)); n->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *) n; ;} break; case 1915: #line 14272 "gram.y" { JsonTableColumn *n = makeNode(JsonTableColumn); n->coltype = JTC_EXISTS; n->name = (yyvsp[(1) - (5)].str); n->typeName = (yyvsp[(2) - (5)].typnam); n->format = makeJsonFormat(JS_FORMAT_DEFAULT, JS_ENC_DEFAULT, -1); n->wrapper = JSW_NONE; n->quotes = JS_QUOTES_UNSPEC; n->pathspec = (JsonTablePathSpec *) (yyvsp[(4) - (5)].node); n->on_empty = NULL; n->on_error = (JsonBehavior *) (yyvsp[(5) - (5)].node); n->location = (yylsp[(1) - (5)]); (yyval.node) = (Node *) n; ;} break; case 1916: #line 14289 "gram.y" { JsonTableColumn *n = makeNode(JsonTableColumn); n->coltype = JTC_NESTED; n->pathspec = (JsonTablePathSpec *) makeJsonTablePathSpec((yyvsp[(3) - (7)].str), NULL, (yylsp[(3) - (7)]), -1); n->columns = (yyvsp[(6) - (7)].list); n->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *) n; ;} break; case 1917: #line 14301 "gram.y" { JsonTableColumn *n = makeNode(JsonTableColumn); n->coltype = JTC_NESTED; n->pathspec = (JsonTablePathSpec *) makeJsonTablePathSpec((yyvsp[(3) - (9)].str), (yyvsp[(5) - (9)].str), (yylsp[(3) - (9)]), (yylsp[(5) - (9)])); n->columns = (yyvsp[(8) - (9)].list); n->location = (yylsp[(1) - (9)]); (yyval.node) = (Node *) n; ;} break; case 1920: #line 14320 "gram.y" { (yyval.node) = (Node *) makeJsonTablePathSpec((yyvsp[(2) - (2)].str), NULL, (yylsp[(2) - (2)]), -1); ;} break; case 1921: #line 14322 "gram.y" { (yyval.node) = NULL; ;} break; case 1922: #line 14336 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); (yyval.typnam)->arrayBounds = (yyvsp[(2) - (2)].list); ;} break; case 1923: #line 14341 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (3)].typnam); (yyval.typnam)->arrayBounds = (yyvsp[(3) - (3)].list); (yyval.typnam)->setof = true; ;} break; case 1924: #line 14348 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (5)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(4) - (5)].ival))); ;} break; case 1925: #line 14353 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (6)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(5) - (6)].ival))); (yyval.typnam)->setof = true; ;} break; case 1926: #line 14359 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); ;} break; case 1927: #line 14364 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (3)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); (yyval.typnam)->setof = true; ;} break; case 1928: #line 14373 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeInteger(-1)); ;} break; case 1929: #line 14375 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (4)].list), makeInteger((yyvsp[(3) - (4)].ival))); ;} break; case 1930: #line 14377 "gram.y" { (yyval.list) = NIL; ;} break; case 1931: #line 14381 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1932: #line 14382 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1933: #line 14383 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1934: #line 14384 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1935: #line 14385 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1936: #line 14387 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); ;} break; case 1937: #line 14392 "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 1938: #line 14397 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1939: #line 14412 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1940: #line 14413 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1941: #line 14414 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1942: #line 14415 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1943: #line 14416 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1944: #line 14428 "gram.y" { (yyval.typnam) = makeTypeName((yyvsp[(1) - (2)].str)); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1945: #line 14434 "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 1946: #line 14441 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1947: #line 14442 "gram.y" { (yyval.list) = NIL; ;} break; case 1948: #line 14449 "gram.y" { (yyval.typnam) = SystemTypeName("int4"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1949: #line 14454 "gram.y" { (yyval.typnam) = SystemTypeName("int4"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1950: #line 14459 "gram.y" { (yyval.typnam) = SystemTypeName("int2"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1951: #line 14464 "gram.y" { (yyval.typnam) = SystemTypeName("int8"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1952: #line 14469 "gram.y" { (yyval.typnam) = SystemTypeName("float4"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1953: #line 14474 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (2)].typnam); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1954: #line 14479 "gram.y" { (yyval.typnam) = SystemTypeName("float8"); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1955: #line 14484 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1956: #line 14490 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1957: #line 14496 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1958: #line 14502 "gram.y" { (yyval.typnam) = SystemTypeName("bool"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1959: #line 14509 "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 1960: #line 14530 "gram.y" { (yyval.typnam) = SystemTypeName("float8"); ;} break; case 1961: #line 14540 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1962: #line 14544 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1963: #line 14552 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1964: #line 14556 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); (yyval.typnam)->typmods = NIL; ;} break; case 1965: #line 14564 "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 1966: #line 14576 "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 1967: #line 14597 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1968: #line 14601 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1969: #line 14607 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1970: #line 14611 "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 1971: #line 14624 "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 1972: #line 14632 "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 1973: #line 14642 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; case 1974: #line 14644 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; case 1975: #line 14646 "gram.y" { (yyval.str) = "varchar"; ;} break; case 1976: #line 14648 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; ;} break; case 1977: #line 14650 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; ;} break; case 1978: #line 14652 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; case 1979: #line 14656 "gram.y" { (yyval.boolean) = true; ;} break; case 1980: #line 14657 "gram.y" { (yyval.boolean) = false; ;} break; case 1981: #line 14665 "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 1982: #line 14674 "gram.y" { if ((yyvsp[(2) - (2)].boolean)) (yyval.typnam) = SystemTypeName("timestamptz"); else (yyval.typnam) = SystemTypeName("timestamp"); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1983: #line 14682 "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 1984: #line 14691 "gram.y" { if ((yyvsp[(2) - (2)].boolean)) (yyval.typnam) = SystemTypeName("timetz"); else (yyval.typnam) = SystemTypeName("time"); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1985: #line 14702 "gram.y" { (yyval.typnam) = SystemTypeName("interval"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1986: #line 14709 "gram.y" { (yyval.boolean) = true; ;} break; case 1987: #line 14710 "gram.y" { (yyval.boolean) = false; ;} break; case 1988: #line 14711 "gram.y" { (yyval.boolean) = false; ;} break; case 1989: #line 14716 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR), (yylsp[(1) - (1)]))); ;} break; case 1990: #line 14718 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MONTH), (yylsp[(1) - (1)]))); ;} break; case 1991: #line 14720 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY), (yylsp[(1) - (1)]))); ;} break; case 1992: #line 14722 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR), (yylsp[(1) - (1)]))); ;} break; case 1993: #line 14724 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), (yylsp[(1) - (1)]))); ;} break; case 1994: #line 14726 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1995: #line 14728 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | INTERVAL_MASK(MONTH), (yylsp[(1) - (3)]))); ;} break; case 1996: #line 14733 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR), (yylsp[(1) - (3)]))); ;} break; case 1997: #line 14738 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); ;} break; case 1998: #line 14744 "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 1999: #line 14752 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); ;} break; case 2000: #line 14757 "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 2001: #line 14764 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND), (yylsp[(1) - (3)])); ;} break; case 2002: #line 14770 "gram.y" { (yyval.list) = NIL; ;} break; case 2003: #line 14775 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (1)]))); ;} break; case 2004: #line 14779 "gram.y" { (yyval.list) = list_make2(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (4)])), makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); ;} break; case 2005: #line 14787 "gram.y" { (yyval.typnam) = SystemTypeName("json"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 2006: #line 14821 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2007: #line 14823 "gram.y" { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), (yylsp[(2) - (3)])); ;} break; case 2008: #line 14825 "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 2009: #line 14834 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("timezone"), list_make2((yyvsp[(5) - (5)].node), (yyvsp[(1) - (5)].node)), COERCE_SQL_SYNTAX, (yylsp[(2) - (5)])); ;} break; case 2010: #line 14841 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("timezone"), list_make1((yyvsp[(1) - (3)].node)), COERCE_SQL_SYNTAX, -1); ;} break; case 2011: #line 14857 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2012: #line 14859 "gram.y" { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2013: #line 14861 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2014: #line 14863 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2015: #line 14865 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2016: #line 14867 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2017: #line 14869 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2018: #line 14871 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2019: #line 14873 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2020: #line 14875 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2021: #line 14877 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2022: #line 14879 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2023: #line 14881 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2024: #line 14883 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2025: #line 14886 "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 2026: #line 14888 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2027: #line 14891 "gram.y" { (yyval.node) = makeAndExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2028: #line 14893 "gram.y" { (yyval.node) = makeOrExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2029: #line 14895 "gram.y" { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2030: #line 14897 "gram.y" { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2031: #line 14900 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "~~", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2032: #line 14905 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), list_make2((yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)), COERCE_EXPLICIT_CALL, (yylsp[(2) - (5)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "~~", (yyvsp[(1) - (5)].node), (Node *) n, (yylsp[(2) - (5)])); ;} break; case 2033: #line 14914 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "!~~", (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); ;} break; case 2034: #line 14919 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), COERCE_EXPLICIT_CALL, (yylsp[(2) - (6)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "!~~", (yyvsp[(1) - (6)].node), (Node *) n, (yylsp[(2) - (6)])); ;} break; case 2035: #line 14928 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "~~*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2036: #line 14933 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), list_make2((yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)), COERCE_EXPLICIT_CALL, (yylsp[(2) - (5)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "~~*", (yyvsp[(1) - (5)].node), (Node *) n, (yylsp[(2) - (5)])); ;} break; case 2037: #line 14942 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "!~~*", (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); ;} break; case 2038: #line 14947 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), COERCE_EXPLICIT_CALL, (yylsp[(2) - (6)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "!~~*", (yyvsp[(1) - (6)].node), (Node *) n, (yylsp[(2) - (6)])); ;} break; case 2039: #line 14957 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_to_escape"), list_make1((yyvsp[(4) - (4)].node)), COERCE_EXPLICIT_CALL, (yylsp[(2) - (4)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "~", (yyvsp[(1) - (4)].node), (Node *) n, (yylsp[(2) - (4)])); ;} break; case 2040: #line 14966 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_to_escape"), list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), COERCE_EXPLICIT_CALL, (yylsp[(2) - (6)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "~", (yyvsp[(1) - (6)].node), (Node *) n, (yylsp[(2) - (6)])); ;} break; case 2041: #line 14975 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_to_escape"), list_make1((yyvsp[(5) - (5)].node)), COERCE_EXPLICIT_CALL, (yylsp[(2) - (5)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "!~", (yyvsp[(1) - (5)].node), (Node *) n, (yylsp[(2) - (5)])); ;} break; case 2042: #line 14984 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_to_escape"), list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), COERCE_EXPLICIT_CALL, (yylsp[(2) - (7)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "!~", (yyvsp[(1) - (7)].node), (Node *) n, (yylsp[(2) - (7)])); ;} break; case 2043: #line 15003 "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 2044: #line 15012 "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 2045: #line 15021 "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 2046: #line 15030 "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 2047: #line 15039 "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)), COERCE_SQL_SYNTAX, (yylsp[(2) - (3)])); ;} break; case 2048: #line 15056 "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 2049: #line 15065 "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 2050: #line 15074 "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 2051: #line 15083 "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 2052: #line 15092 "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 2053: #line 15101 "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 2054: #line 15110 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); ;} break; case 2055: #line 15114 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); ;} break; case 2056: #line 15118 "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 2057: #line 15126 "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 2058: #line 15134 "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 2059: #line 15142 "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 2060: #line 15150 "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 2061: #line 15171 "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 2062: #line 15194 "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 2063: #line 15206 "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 2064: #line 15213 "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) - (3)])))); ;} break; case 2065: #line 15229 "gram.y" { (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (3)].node)), (yylsp[(2) - (3)])); ;} break; case 2066: #line 15234 "gram.y" { (yyval.node) = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (4)].node)), (yylsp[(2) - (4)])), (yylsp[(2) - (4)])); ;} break; case 2067: #line 15240 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("is_normalized"), list_make1((yyvsp[(1) - (3)].node)), COERCE_SQL_SYNTAX, (yylsp[(2) - (3)])); ;} break; case 2068: #line 15247 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("is_normalized"), list_make2((yyvsp[(1) - (4)].node), makeStringConst((yyvsp[(3) - (4)].str), (yylsp[(3) - (4)]))), COERCE_SQL_SYNTAX, (yylsp[(2) - (4)])); ;} break; case 2069: #line 15254 "gram.y" { (yyval.node) = makeNotExpr((Node *) makeFuncCall(SystemFuncName("is_normalized"), list_make1((yyvsp[(1) - (4)].node)), COERCE_SQL_SYNTAX, (yylsp[(2) - (4)])), (yylsp[(2) - (4)])); ;} break; case 2070: #line 15262 "gram.y" { (yyval.node) = makeNotExpr((Node *) makeFuncCall(SystemFuncName("is_normalized"), list_make2((yyvsp[(1) - (5)].node), makeStringConst((yyvsp[(4) - (5)].str), (yylsp[(4) - (5)]))), COERCE_SQL_SYNTAX, (yylsp[(2) - (5)])), (yylsp[(2) - (5)])); ;} break; case 2071: #line 15271 "gram.y" { JsonFormat *format = makeJsonFormat(JS_FORMAT_DEFAULT, JS_ENC_DEFAULT, -1); (yyval.node) = makeJsonIsPredicate((yyvsp[(1) - (4)].node), format, (yyvsp[(3) - (4)].ival), (yyvsp[(4) - (4)].boolean), (yylsp[(1) - (4)])); ;} break; case 2072: #line 15289 "gram.y" { JsonFormat *format = makeJsonFormat(JS_FORMAT_DEFAULT, JS_ENC_DEFAULT, -1); (yyval.node) = makeNotExpr(makeJsonIsPredicate((yyvsp[(1) - (5)].node), format, (yyvsp[(4) - (5)].ival), (yyvsp[(5) - (5)].boolean), (yylsp[(1) - (5)])), (yylsp[(1) - (5)])); ;} break; case 2073: #line 15306 "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 2074: #line 15332 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2075: #line 15334 "gram.y" { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), (yylsp[(2) - (3)])); ;} break; case 2076: #line 15336 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2077: #line 15338 "gram.y" { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2078: #line 15340 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2079: #line 15342 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2080: #line 15344 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2081: #line 15346 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2082: #line 15348 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2083: #line 15350 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2084: #line 15352 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2085: #line 15354 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2086: #line 15356 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2087: #line 15358 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2088: #line 15360 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2089: #line 15362 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2090: #line 15364 "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 2091: #line 15366 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2092: #line 15368 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); ;} break; case 2093: #line 15372 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); ;} break; case 2094: #line 15376 "gram.y" { (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (3)].node)), (yylsp[(2) - (3)])); ;} break; case 2095: #line 15381 "gram.y" { (yyval.node) = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (4)].node)), (yylsp[(2) - (4)])), (yylsp[(2) - (4)])); ;} break; case 2096: #line 15396 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2097: #line 15397 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2098: #line 15399 "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 2099: #line 15416 "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 (yyval.node) = (yyvsp[(2) - (4)].node); ;} break; case 2100: #line 15429 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2101: #line 15431 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2102: #line 15433 "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 2103: #line 15445 "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 2104: #line 15470 "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 2105: #line 15482 "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 2106: #line 15494 "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 2107: #line 15502 "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 2108: #line 15513 "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 2109: #line 15524 "gram.y" { GroupingFunc *g = makeNode(GroupingFunc); g->args = (yyvsp[(3) - (4)].list); g->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *) g; ;} break; case 2110: #line 15534 "gram.y" { (yyval.node) = (Node *) makeFuncCall((yyvsp[(1) - (3)].list), NIL, COERCE_EXPLICIT_CALL, (yylsp[(1) - (3)])); ;} break; case 2111: #line 15540 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (5)].list), (yyvsp[(3) - (5)].list), COERCE_EXPLICIT_CALL, (yylsp[(1) - (5)])); n->agg_order = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 2112: #line 15549 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), list_make1((yyvsp[(4) - (6)].node)), COERCE_EXPLICIT_CALL, (yylsp[(1) - (6)])); n->func_variadic = true; n->agg_order = (yyvsp[(5) - (6)].list); (yyval.node) = (Node *) n; ;} break; case 2113: #line 15559 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (8)].list), lappend((yyvsp[(3) - (8)].list), (yyvsp[(6) - (8)].node)), COERCE_EXPLICIT_CALL, (yylsp[(1) - (8)])); n->func_variadic = true; n->agg_order = (yyvsp[(7) - (8)].list); (yyval.node) = (Node *) n; ;} break; case 2114: #line 15569 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), (yyvsp[(4) - (6)].list), COERCE_EXPLICIT_CALL, (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 2115: #line 15582 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), (yyvsp[(4) - (6)].list), COERCE_EXPLICIT_CALL, (yylsp[(1) - (6)])); n->agg_order = (yyvsp[(5) - (6)].list); n->agg_distinct = true; (yyval.node) = (Node *) n; ;} break; case 2116: #line 15592 "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, COERCE_EXPLICIT_CALL, (yylsp[(1) - (4)])); n->agg_star = true; (yyval.node) = (Node *) n; ;} break; case 2117: #line 15623 "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 2118: #line 15659 "gram.y" { JsonAggConstructor *n = IsA((yyvsp[(1) - (3)].node), JsonObjectAgg) ? ((JsonObjectAgg *) (yyvsp[(1) - (3)].node))->constructor : ((JsonArrayAgg *) (yyvsp[(1) - (3)].node))->constructor; n->agg_filter = (yyvsp[(2) - (3)].node); n->over = (yyvsp[(3) - (3)].windef); (yyval.node) = (Node *) (yyvsp[(1) - (3)].node); ;} break; case 2119: #line 15669 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2120: #line 15679 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2121: #line 15680 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2122: #line 15681 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2123: #line 15689 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("pg_collation_for"), list_make1((yyvsp[(4) - (5)].node)), COERCE_SQL_SYNTAX, (yylsp[(1) - (5)])); ;} break; case 2124: #line 15696 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_DATE, -1, (yylsp[(1) - (1)])); ;} break; case 2125: #line 15700 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIME, -1, (yylsp[(1) - (1)])); ;} break; case 2126: #line 15704 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; case 2127: #line 15708 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP, -1, (yylsp[(1) - (1)])); ;} break; case 2128: #line 15712 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; case 2129: #line 15716 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIME, -1, (yylsp[(1) - (1)])); ;} break; case 2130: #line 15720 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; case 2131: #line 15724 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP, -1, (yylsp[(1) - (1)])); ;} break; case 2132: #line 15728 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; case 2133: #line 15732 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_ROLE, -1, (yylsp[(1) - (1)])); ;} break; case 2134: #line 15736 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_USER, -1, (yylsp[(1) - (1)])); ;} break; case 2135: #line 15740 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_SESSION_USER, -1, (yylsp[(1) - (1)])); ;} break; case 2136: #line 15744 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("system_user"), NIL, COERCE_SQL_SYNTAX, (yylsp[(1) - (1)])); ;} break; case 2137: #line 15751 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_USER, -1, (yylsp[(1) - (1)])); ;} break; case 2138: #line 15755 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_CATALOG, -1, (yylsp[(1) - (1)])); ;} break; case 2139: #line 15759 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_SCHEMA, -1, (yylsp[(1) - (1)])); ;} break; case 2140: #line 15763 "gram.y" { (yyval.node) = makeTypeCast((yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].typnam), (yylsp[(1) - (6)])); ;} break; case 2141: #line 15765 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("extract"), (yyvsp[(3) - (4)].list), COERCE_SQL_SYNTAX, (yylsp[(1) - (4)])); ;} break; case 2142: #line 15772 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("normalize"), list_make1((yyvsp[(3) - (4)].node)), COERCE_SQL_SYNTAX, (yylsp[(1) - (4)])); ;} break; case 2143: #line 15779 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("normalize"), list_make2((yyvsp[(3) - (6)].node), makeStringConst((yyvsp[(5) - (6)].str), (yylsp[(5) - (6)]))), COERCE_SQL_SYNTAX, (yylsp[(1) - (6)])); ;} break; case 2144: #line 15786 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("overlay"), (yyvsp[(3) - (4)].list), COERCE_SQL_SYNTAX, (yylsp[(1) - (4)])); ;} break; case 2145: #line 15793 "gram.y" { /* * allow functions named overlay() to be called without * special syntax */ (yyval.node) = (Node *) makeFuncCall(list_make1(makeString("overlay")), (yyvsp[(3) - (4)].list), COERCE_EXPLICIT_CALL, (yylsp[(1) - (4)])); ;} break; case 2146: #line 15804 "gram.y" { /* * position(A in B) is converted to position(B, A) * * We deliberately don't offer a "plain syntax" option * for position(), because the reversal of the arguments * creates too much risk of confusion. */ (yyval.node) = (Node *) makeFuncCall(SystemFuncName("position"), (yyvsp[(3) - (4)].list), COERCE_SQL_SYNTAX, (yylsp[(1) - (4)])); ;} break; case 2147: #line 15818 "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), COERCE_SQL_SYNTAX, (yylsp[(1) - (4)])); ;} break; case 2148: #line 15828 "gram.y" { /* * allow functions named substring() to be called without * special syntax */ (yyval.node) = (Node *) makeFuncCall(list_make1(makeString("substring")), (yyvsp[(3) - (4)].list), COERCE_EXPLICIT_CALL, (yylsp[(1) - (4)])); ;} break; case 2149: #line 15839 "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(strVal(llast((yyvsp[(5) - (6)].typnam)->names))), list_make1((yyvsp[(3) - (6)].node)), COERCE_EXPLICIT_CALL, (yylsp[(1) - (6)])); ;} break; case 2150: #line 15855 "gram.y" { /* various trim expressions are defined in SQL * - thomas 1997-07-19 */ (yyval.node) = (Node *) makeFuncCall(SystemFuncName("btrim"), (yyvsp[(4) - (5)].list), COERCE_SQL_SYNTAX, (yylsp[(1) - (5)])); ;} break; case 2151: #line 15865 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("ltrim"), (yyvsp[(4) - (5)].list), COERCE_SQL_SYNTAX, (yylsp[(1) - (5)])); ;} break; case 2152: #line 15872 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("rtrim"), (yyvsp[(4) - (5)].list), COERCE_SQL_SYNTAX, (yylsp[(1) - (5)])); ;} break; case 2153: #line 15879 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("btrim"), (yyvsp[(3) - (4)].list), COERCE_SQL_SYNTAX, (yylsp[(1) - (4)])); ;} break; case 2154: #line 15886 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(1) - (6)])); ;} break; case 2155: #line 15890 "gram.y" { CoalesceExpr *c = makeNode(CoalesceExpr); c->args = (yyvsp[(3) - (4)].list); c->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *) c; ;} break; case 2156: #line 15898 "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 2157: #line 15907 "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 2158: #line 15916 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 2159: #line 15920 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (5)].str), NIL, NIL, (yylsp[(1) - (5)])); ;} break; case 2160: #line 15924 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (7)].str), (yyvsp[(6) - (7)].list), NIL, (yylsp[(1) - (7)])); ;} break; case 2161: #line 15928 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (7)].str), NIL, (yyvsp[(6) - (7)].list), (yylsp[(1) - (7)])); ;} break; case 2162: #line 15932 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (9)].str), (yyvsp[(6) - (9)].list), (yyvsp[(8) - (9)].list), (yylsp[(1) - (9)])); ;} break; case 2163: #line 15936 "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)), COERCE_SQL_SYNTAX, (yylsp[(1) - (5)])); ;} break; case 2164: #line 15945 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLFOREST, NULL, (yyvsp[(3) - (4)].list), NIL, (yylsp[(1) - (4)])); ;} break; case 2165: #line 15949 "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 2166: #line 15959 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[(4) - (5)].str), NULL, NIL, (yylsp[(1) - (5)])); ;} break; case 2167: #line 15963 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[(4) - (7)].str), NULL, list_make1((yyvsp[(6) - (7)].node)), (yylsp[(1) - (7)])); ;} break; case 2168: #line 15967 "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 2169: #line 15972 "gram.y" { XmlSerialize *n = makeNode(XmlSerialize); n->xmloption = (yyvsp[(3) - (8)].ival); n->expr = (yyvsp[(4) - (8)].node); n->typeName = (yyvsp[(6) - (8)].typnam); n->indent = (yyvsp[(7) - (8)].boolean); n->location = (yylsp[(1) - (8)]); (yyval.node) = (Node *) n; ;} break; case 2170: #line 15983 "gram.y" { /* Support for legacy (non-standard) json_object() */ (yyval.node) = (Node *) makeFuncCall(SystemFuncName("json_object"), (yyvsp[(3) - (4)].list), COERCE_EXPLICIT_CALL, (yylsp[(1) - (4)])); ;} break; case 2171: #line 15992 "gram.y" { JsonObjectConstructor *n = makeNode(JsonObjectConstructor); n->exprs = (yyvsp[(3) - (7)].list); n->absent_on_null = (yyvsp[(4) - (7)].boolean); n->unique = (yyvsp[(5) - (7)].boolean); n->output = (JsonOutput *) (yyvsp[(6) - (7)].node); n->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *) n; ;} break; case 2172: #line 16003 "gram.y" { JsonObjectConstructor *n = makeNode(JsonObjectConstructor); n->exprs = NULL; n->absent_on_null = false; n->unique = false; n->output = (JsonOutput *) (yyvsp[(3) - (4)].node); n->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *) n; ;} break; case 2173: #line 16018 "gram.y" { JsonArrayConstructor *n = makeNode(JsonArrayConstructor); n->exprs = (yyvsp[(3) - (6)].list); n->absent_on_null = (yyvsp[(4) - (6)].boolean); n->output = (JsonOutput *) (yyvsp[(5) - (6)].node); n->location = (yylsp[(1) - (6)]); (yyval.node) = (Node *) n; ;} break; case 2174: #line 16033 "gram.y" { JsonArrayQueryConstructor *n = makeNode(JsonArrayQueryConstructor); n->query = (yyvsp[(3) - (6)].node); n->format = (JsonFormat *) (yyvsp[(4) - (6)].node); n->absent_on_null = true; /* XXX */ n->output = (JsonOutput *) (yyvsp[(5) - (6)].node); n->location = (yylsp[(1) - (6)]); (yyval.node) = (Node *) n; ;} break; case 2175: #line 16046 "gram.y" { JsonArrayConstructor *n = makeNode(JsonArrayConstructor); n->exprs = NIL; n->absent_on_null = true; n->output = (JsonOutput *) (yyvsp[(3) - (4)].node); n->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *) n; ;} break; case 2176: #line 16056 "gram.y" { JsonParseExpr *n = makeNode(JsonParseExpr); n->expr = (JsonValueExpr *) (yyvsp[(3) - (5)].node); n->unique_keys = (yyvsp[(4) - (5)].boolean); n->output = NULL; n->location = (yylsp[(1) - (5)]); (yyval.node) = (Node *) n; ;} break; case 2177: #line 16066 "gram.y" { JsonScalarExpr *n = makeNode(JsonScalarExpr); n->expr = (Expr *) (yyvsp[(3) - (4)].node); n->output = NULL; n->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *) n; ;} break; case 2178: #line 16075 "gram.y" { JsonSerializeExpr *n = makeNode(JsonSerializeExpr); n->expr = (JsonValueExpr *) (yyvsp[(3) - (5)].node); n->output = (JsonOutput *) (yyvsp[(4) - (5)].node); n->location = (yylsp[(1) - (5)]); (yyval.node) = (Node *) n; ;} break; case 2179: #line 16084 "gram.y" { MergeSupportFunc *m = makeNode(MergeSupportFunc); m->msftype = TEXTOID; m->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) m; ;} break; case 2180: #line 16098 "gram.y" { JsonFuncExpr *n = makeNode(JsonFuncExpr); n->op = JSON_QUERY_OP; n->context_item = (JsonValueExpr *) (yyvsp[(3) - (11)].node); n->pathspec = (yyvsp[(5) - (11)].node); n->passing = (yyvsp[(6) - (11)].list); n->output = (JsonOutput *) (yyvsp[(7) - (11)].node); n->wrapper = (yyvsp[(8) - (11)].ival); n->quotes = (yyvsp[(9) - (11)].ival); n->on_empty = (JsonBehavior *) linitial((yyvsp[(10) - (11)].list)); n->on_error = (JsonBehavior *) lsecond((yyvsp[(10) - (11)].list)); n->location = (yylsp[(1) - (11)]); (yyval.node) = (Node *) n; ;} break; case 2181: #line 16117 "gram.y" { JsonFuncExpr *n = makeNode(JsonFuncExpr); n->op = JSON_EXISTS_OP; n->context_item = (JsonValueExpr *) (yyvsp[(3) - (8)].node); n->pathspec = (yyvsp[(5) - (8)].node); n->passing = (yyvsp[(6) - (8)].list); n->output = NULL; n->on_error = (JsonBehavior *) (yyvsp[(7) - (8)].node); n->location = (yylsp[(1) - (8)]); (yyval.node) = (Node *) n; ;} break; case 2182: #line 16134 "gram.y" { JsonFuncExpr *n = makeNode(JsonFuncExpr); n->op = JSON_VALUE_OP; n->context_item = (JsonValueExpr *) (yyvsp[(3) - (9)].node); n->pathspec = (yyvsp[(5) - (9)].node); n->passing = (yyvsp[(6) - (9)].list); n->output = (JsonOutput *) (yyvsp[(7) - (9)].node); n->on_empty = (JsonBehavior *) linitial((yyvsp[(8) - (9)].list)); n->on_error = (JsonBehavior *) lsecond((yyvsp[(8) - (9)].list)); n->location = (yylsp[(1) - (9)]); (yyval.node) = (Node *) n; ;} break; case 2183: #line 16154 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 2184: #line 16156 "gram.y" { (yyval.node) = makeNullAConst(-1); ;} break; case 2185: #line 16160 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_YES, -1); ;} break; case 2186: #line 16162 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_NO, -1); ;} break; case 2187: #line 16164 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_NO_VALUE, -1); ;} break; case 2188: #line 16166 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_OMITTED, -1); ;} break; case 2189: #line 16169 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2190: #line 16172 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 2191: #line 16173 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; case 2192: #line 16177 "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 2193: #line 16185 "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 2194: #line 16194 "gram.y" { (yyval.ival) = XMLOPTION_DOCUMENT; ;} break; case 2195: #line 16195 "gram.y" { (yyval.ival) = XMLOPTION_CONTENT; ;} break; case 2196: #line 16198 "gram.y" { (yyval.boolean) = true; ;} break; case 2197: #line 16199 "gram.y" { (yyval.boolean) = false; ;} break; case 2198: #line 16200 "gram.y" { (yyval.boolean) = false; ;} break; case 2199: #line 16203 "gram.y" { (yyval.boolean) = true; ;} break; case 2200: #line 16204 "gram.y" { (yyval.boolean) = false; ;} break; case 2201: #line 16205 "gram.y" { (yyval.boolean) = false; ;} break; case 2202: #line 16211 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 2203: #line 16215 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; case 2204: #line 16219 "gram.y" { (yyval.node) = (yyvsp[(3) - (3)].node); ;} break; case 2205: #line 16223 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; case 2208: #line 16238 "gram.y" { (yyval.list) = (yyvsp[(4) - (5)].list); ;} break; case 2209: #line 16239 "gram.y" { (yyval.list) = NIL; ;} break; case 2210: #line 16243 "gram.y" { (yyval.node) = (yyvsp[(4) - (5)].node); ;} break; case 2211: #line 16244 "gram.y" { (yyval.node) = NULL; ;} break; case 2212: #line 16252 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 2213: #line 16253 "gram.y" { (yyval.list) = NIL; ;} break; case 2214: #line 16257 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].windef)); ;} break; case 2215: #line 16259 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].windef)); ;} break; case 2216: #line 16264 "gram.y" { WindowDef *n = (yyvsp[(3) - (3)].windef); n->name = (yyvsp[(1) - (3)].str); (yyval.windef) = n; ;} break; case 2217: #line 16273 "gram.y" { (yyval.windef) = (yyvsp[(2) - (2)].windef); ;} break; case 2218: #line 16275 "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 2219: #line 16289 "gram.y" { (yyval.windef) = NULL; ;} break; case 2220: #line 16294 "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 2221: #line 16320 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2222: #line 16321 "gram.y" { (yyval.str) = NULL; ;} break; case 2223: #line 16324 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; case 2224: #line 16325 "gram.y" { (yyval.list) = NIL; ;} break; case 2225: #line 16334 "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 2226: #line 16342 "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 2227: #line 16350 "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 2228: #line 16358 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_DEFAULTS; n->startOffset = NULL; n->endOffset = NULL; (yyval.windef) = n; ;} break; case 2229: #line 16369 "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 2230: #line 16387 "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 2231: #line 16433 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_UNBOUNDED_PRECEDING; n->startOffset = NULL; n->endOffset = NULL; (yyval.windef) = n; ;} break; case 2232: #line 16442 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; n->startOffset = NULL; n->endOffset = NULL; (yyval.windef) = n; ;} break; case 2233: #line 16451 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_CURRENT_ROW; n->startOffset = NULL; n->endOffset = NULL; (yyval.windef) = n; ;} break; case 2234: #line 16460 "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 2235: #line 16469 "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 2236: #line 16480 "gram.y" { (yyval.ival) = FRAMEOPTION_EXCLUDE_CURRENT_ROW; ;} break; case 2237: #line 16481 "gram.y" { (yyval.ival) = FRAMEOPTION_EXCLUDE_GROUP; ;} break; case 2238: #line 16482 "gram.y" { (yyval.ival) = FRAMEOPTION_EXCLUDE_TIES; ;} break; case 2239: #line 16483 "gram.y" { (yyval.ival) = 0; ;} break; case 2240: #line 16484 "gram.y" { (yyval.ival) = 0; ;} break; case 2241: #line 16498 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2242: #line 16499 "gram.y" { (yyval.list) = NIL; ;} break; case 2243: #line 16500 "gram.y" { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); ;} break; case 2244: #line 16503 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2245: #line 16504 "gram.y" { (yyval.list) = NIL; ;} break; case 2246: #line 16507 "gram.y" { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); ;} break; case 2247: #line 16510 "gram.y" { (yyval.ival) = ANY_SUBLINK; ;} break; case 2248: #line 16511 "gram.y" { (yyval.ival) = ANY_SUBLINK; ;} break; case 2249: #line 16512 "gram.y" { (yyval.ival) = ALL_SUBLINK; ;} break; case 2250: #line 16515 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2251: #line 16516 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2252: #line 16519 "gram.y" { (yyval.str) = "+"; ;} break; case 2253: #line 16520 "gram.y" { (yyval.str) = "-"; ;} break; case 2254: #line 16521 "gram.y" { (yyval.str) = "*"; ;} break; case 2255: #line 16522 "gram.y" { (yyval.str) = "/"; ;} break; case 2256: #line 16523 "gram.y" { (yyval.str) = "%"; ;} break; case 2257: #line 16524 "gram.y" { (yyval.str) = "^"; ;} break; case 2258: #line 16525 "gram.y" { (yyval.str) = "<"; ;} break; case 2259: #line 16526 "gram.y" { (yyval.str) = ">"; ;} break; case 2260: #line 16527 "gram.y" { (yyval.str) = "="; ;} break; case 2261: #line 16528 "gram.y" { (yyval.str) = "<="; ;} break; case 2262: #line 16529 "gram.y" { (yyval.str) = ">="; ;} break; case 2263: #line 16530 "gram.y" { (yyval.str) = "<>"; ;} break; case 2264: #line 16534 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2265: #line 16536 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2266: #line 16541 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2267: #line 16543 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2268: #line 16548 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2269: #line 16550 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2270: #line 16552 "gram.y" { (yyval.list) = list_make1(makeString("~~")); ;} break; case 2271: #line 16554 "gram.y" { (yyval.list) = list_make1(makeString("!~~")); ;} break; case 2272: #line 16556 "gram.y" { (yyval.list) = list_make1(makeString("~~*")); ;} break; case 2273: #line 16558 "gram.y" { (yyval.list) = list_make1(makeString("!~~*")); ;} break; case 2274: #line 16570 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2275: #line 16574 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 2276: #line 16581 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2277: #line 16585 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 2278: #line 16591 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2279: #line 16595 "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 2280: #line 16605 "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 2281: #line 16616 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 2282: #line 16617 "gram.y" { (yyval.list) = NIL; ;} break; case 2283: #line 16620 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); ;} break; case 2284: #line 16621 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); ;} break; case 2285: #line 16625 "gram.y" { (yyval.node) = makeAArrayExpr((yyvsp[(2) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 2286: #line 16629 "gram.y" { (yyval.node) = makeAArrayExpr((yyvsp[(2) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 2287: #line 16633 "gram.y" { (yyval.node) = makeAArrayExpr(NIL, (yylsp[(1) - (2)])); ;} break; case 2288: #line 16638 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2289: #line 16639 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 2290: #line 16645 "gram.y" { (yyval.list) = list_make2(makeStringConst((yyvsp[(1) - (3)].str), (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); ;} break; case 2291: #line 16649 "gram.y" { (yyval.list) = list_make2(makeParamRef((yyvsp[(1) - (3)].ival), (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); ;} break; case 2292: #line 16658 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2293: #line 16659 "gram.y" { (yyval.str) = "year"; ;} break; case 2294: #line 16660 "gram.y" { (yyval.str) = "month"; ;} break; case 2295: #line 16661 "gram.y" { (yyval.str) = "day"; ;} break; case 2296: #line 16662 "gram.y" { (yyval.str) = "hour"; ;} break; case 2297: #line 16663 "gram.y" { (yyval.str) = "minute"; ;} break; case 2298: #line 16664 "gram.y" { (yyval.str) = "second"; ;} break; case 2299: #line 16665 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2300: #line 16669 "gram.y" { (yyval.str) = "NFC"; ;} break; case 2301: #line 16670 "gram.y" { (yyval.str) = "NFD"; ;} break; case 2302: #line 16671 "gram.y" { (yyval.str) = "NFKC"; ;} break; case 2303: #line 16672 "gram.y" { (yyval.str) = "NFKD"; ;} break; case 2304: #line 16678 "gram.y" { /* overlay(A PLACING B FROM C FOR D) is converted to overlay(A, B, C, D) */ (yyval.list) = list_make4((yyvsp[(1) - (7)].node), (yyvsp[(3) - (7)].node), (yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)); ;} break; case 2305: #line 16683 "gram.y" { /* overlay(A PLACING B FROM C) is converted to overlay(A, B, C) */ (yyval.list) = list_make3((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)); ;} break; case 2306: #line 16691 "gram.y" { (yyval.list) = list_make2((yyvsp[(3) - (3)].node), (yyvsp[(1) - (3)].node)); ;} break; case 2307: #line 16713 "gram.y" { (yyval.list) = list_make3((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)); ;} break; case 2308: #line 16717 "gram.y" { /* not legal per SQL, but might as well allow it */ (yyval.list) = list_make3((yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yyvsp[(3) - (5)].node)); ;} break; case 2309: #line 16722 "gram.y" { /* * Because we aren't restricting data types here, this * syntax can end up resolving to textregexsubstr(). * We've historically allowed that to happen, so continue * to accept it. However, ruleutils.c will reverse-list * such a call in regular function call syntax. */ (yyval.list) = list_make2((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); ;} break; case 2310: #line 16733 "gram.y" { /* not legal per SQL */ /* * 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) - (3)].node), makeIntConst(1, -1), makeTypeCast((yyvsp[(3) - (3)].node), SystemTypeName("int4"), -1)); ;} break; case 2311: #line 16750 "gram.y" { (yyval.list) = list_make3((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)); ;} break; case 2312: #line 16755 "gram.y" { (yyval.list) = lappend((yyvsp[(3) - (3)].list), (yyvsp[(1) - (3)].node)); ;} break; case 2313: #line 16756 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 2314: #line 16757 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 2315: #line 16761 "gram.y" { SubLink *n = makeNode(SubLink); n->subselect = (yyvsp[(1) - (1)].node); /* other fields will be filled later */ (yyval.node) = (Node *) n; ;} break; case 2316: #line 16768 "gram.y" { (yyval.node) = (Node *) (yyvsp[(2) - (3)].list); ;} break; case 2317: #line 16779 "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 2318: #line 16793 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2319: #line 16794 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 2320: #line 16799 "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 2321: #line 16810 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 2322: #line 16811 "gram.y" { (yyval.node) = NULL; ;} break; case 2323: #line 16814 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2324: #line 16815 "gram.y" { (yyval.node) = NULL; ;} break; case 2325: #line 16819 "gram.y" { (yyval.node) = makeColumnRef((yyvsp[(1) - (1)].str), NIL, (yylsp[(1) - (1)]), yyscanner); ;} break; case 2326: #line 16823 "gram.y" { (yyval.node) = makeColumnRef((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)]), yyscanner); ;} break; case 2327: #line 16830 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(2) - (2)].str)); ;} break; case 2328: #line 16834 "gram.y" { (yyval.node) = (Node *) makeNode(A_Star); ;} break; case 2329: #line 16838 "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 2330: #line 16847 "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 2331: #line 16858 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2332: #line 16859 "gram.y" { (yyval.node) = NULL; ;} break; case 2333: #line 16863 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2334: #line 16864 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 2335: #line 16868 "gram.y" { (yyval.list) = NIL; ;} break; case 2336: #line 16869 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 2339: #line 16878 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 2340: #line 16879 "gram.y" { (yyval.list) = NIL; ;} break; case 2341: #line 16883 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2342: #line 16884 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 2343: #line 16889 "gram.y" { JsonArgument *n = makeNode(JsonArgument); n->val = (JsonValueExpr *) (yyvsp[(1) - (3)].node); n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 2344: #line 16900 "gram.y" { (yyval.ival) = JSW_NONE; ;} break; case 2345: #line 16901 "gram.y" { (yyval.ival) = JSW_NONE; ;} break; case 2346: #line 16902 "gram.y" { (yyval.ival) = JSW_UNCONDITIONAL; ;} break; case 2347: #line 16903 "gram.y" { (yyval.ival) = JSW_UNCONDITIONAL; ;} break; case 2348: #line 16904 "gram.y" { (yyval.ival) = JSW_CONDITIONAL; ;} break; case 2349: #line 16905 "gram.y" { (yyval.ival) = JSW_UNCONDITIONAL; ;} break; case 2350: #line 16906 "gram.y" { (yyval.ival) = JSW_CONDITIONAL; ;} break; case 2351: #line 16907 "gram.y" { (yyval.ival) = JSW_UNCONDITIONAL; ;} break; case 2352: #line 16908 "gram.y" { (yyval.ival) = JSW_UNSPEC; ;} break; case 2353: #line 16913 "gram.y" { (yyval.node) = (Node *) makeJsonBehavior(JSON_BEHAVIOR_DEFAULT, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2354: #line 16915 "gram.y" { (yyval.node) = (Node *) makeJsonBehavior((yyvsp[(1) - (1)].ival), NULL, (yylsp[(1) - (1)])); ;} break; case 2355: #line 16919 "gram.y" { (yyval.ival) = JSON_BEHAVIOR_ERROR; ;} break; case 2356: #line 16920 "gram.y" { (yyval.ival) = JSON_BEHAVIOR_NULL; ;} break; case 2357: #line 16921 "gram.y" { (yyval.ival) = JSON_BEHAVIOR_TRUE; ;} break; case 2358: #line 16922 "gram.y" { (yyval.ival) = JSON_BEHAVIOR_FALSE; ;} break; case 2359: #line 16923 "gram.y" { (yyval.ival) = JSON_BEHAVIOR_UNKNOWN; ;} break; case 2360: #line 16924 "gram.y" { (yyval.ival) = JSON_BEHAVIOR_EMPTY_ARRAY; ;} break; case 2361: #line 16925 "gram.y" { (yyval.ival) = JSON_BEHAVIOR_EMPTY_OBJECT; ;} break; case 2362: #line 16927 "gram.y" { (yyval.ival) = JSON_BEHAVIOR_EMPTY_ARRAY; ;} break; case 2363: #line 16932 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (3)].node), NULL); ;} break; case 2364: #line 16934 "gram.y" { (yyval.list) = list_make2(NULL, (yyvsp[(1) - (3)].node)); ;} break; case 2365: #line 16936 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (6)].node), (yyvsp[(4) - (6)].node)); ;} break; case 2366: #line 16938 "gram.y" { (yyval.list) = list_make2(NULL, NULL); ;} break; case 2367: #line 16943 "gram.y" { (yyval.node) = (yyvsp[(1) - (3)].node); ;} break; case 2368: #line 16945 "gram.y" { (yyval.node) = NULL; ;} break; case 2369: #line 16950 "gram.y" { /* formatted_expr will be set during parse-analysis. */ (yyval.node) = (Node *) makeJsonValueExpr((Expr *) (yyvsp[(1) - (2)].node), NULL, castNode(JsonFormat, (yyvsp[(2) - (2)].node))); ;} break; case 2370: #line 16959 "gram.y" { int encoding; if (!pg_strcasecmp((yyvsp[(4) - (4)].str), "utf8")) encoding = JS_ENC_UTF8; else if (!pg_strcasecmp((yyvsp[(4) - (4)].str), "utf16")) encoding = JS_ENC_UTF16; else if (!pg_strcasecmp((yyvsp[(4) - (4)].str), "utf32")) encoding = JS_ENC_UTF32; else ereport(ERROR, errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("unrecognized JSON encoding: %s", (yyvsp[(4) - (4)].str))); (yyval.node) = (Node *) makeJsonFormat(JS_FORMAT_JSON, encoding, (yylsp[(1) - (4)])); ;} break; case 2371: #line 16976 "gram.y" { (yyval.node) = (Node *) makeJsonFormat(JS_FORMAT_JSON, JS_ENC_DEFAULT, (yylsp[(1) - (2)])); ;} break; case 2372: #line 16983 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2373: #line 16987 "gram.y" { (yyval.node) = (Node *) makeJsonFormat(JS_FORMAT_DEFAULT, JS_ENC_DEFAULT, -1); ;} break; case 2374: #line 16993 "gram.y" { (yyval.ival) = JS_QUOTES_KEEP; ;} break; case 2375: #line 16994 "gram.y" { (yyval.ival) = JS_QUOTES_KEEP; ;} break; case 2376: #line 16995 "gram.y" { (yyval.ival) = JS_QUOTES_OMIT; ;} break; case 2377: #line 16996 "gram.y" { (yyval.ival) = JS_QUOTES_OMIT; ;} break; case 2378: #line 16997 "gram.y" { (yyval.ival) = JS_QUOTES_UNSPEC; ;} break; case 2379: #line 17002 "gram.y" { JsonOutput *n = makeNode(JsonOutput); n->typeName = (yyvsp[(2) - (3)].typnam); n->returning = makeNode(JsonReturning); n->returning->format = (JsonFormat *) (yyvsp[(3) - (3)].node); (yyval.node) = (Node *) n; ;} break; case 2380: #line 17010 "gram.y" { (yyval.node) = NULL; ;} break; case 2381: #line 17024 "gram.y" { (yyval.ival) = JS_TYPE_ANY; ;} break; case 2382: #line 17025 "gram.y" { (yyval.ival) = JS_TYPE_ANY; ;} break; case 2383: #line 17026 "gram.y" { (yyval.ival) = JS_TYPE_ARRAY; ;} break; case 2384: #line 17027 "gram.y" { (yyval.ival) = JS_TYPE_OBJECT; ;} break; case 2385: #line 17028 "gram.y" { (yyval.ival) = JS_TYPE_SCALAR; ;} break; case 2386: #line 17037 "gram.y" { (yyval.boolean) = true; ;} break; case 2387: #line 17038 "gram.y" { (yyval.boolean) = true; ;} break; case 2388: #line 17039 "gram.y" { (yyval.boolean) = false; ;} break; case 2389: #line 17040 "gram.y" { (yyval.boolean) = false; ;} break; case 2390: #line 17041 "gram.y" { (yyval.boolean) = false; ;} break; case 2391: #line 17046 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2392: #line 17048 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 2393: #line 17058 "gram.y" { (yyval.node) = makeJsonKeyValue((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); ;} break; case 2394: #line 17061 "gram.y" { (yyval.node) = makeJsonKeyValue((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); ;} break; case 2395: #line 17066 "gram.y" { (yyval.boolean) = false; ;} break; case 2396: #line 17067 "gram.y" { (yyval.boolean) = true; ;} break; case 2397: #line 17068 "gram.y" { (yyval.boolean) = false; ;} break; case 2398: #line 17072 "gram.y" { (yyval.boolean) = false; ;} break; case 2399: #line 17073 "gram.y" { (yyval.boolean) = true; ;} break; case 2400: #line 17074 "gram.y" { (yyval.boolean) = true; ;} break; case 2401: #line 17078 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2402: #line 17079 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));;} break; case 2403: #line 17089 "gram.y" { JsonObjectAgg *n = makeNode(JsonObjectAgg); n->arg = (JsonKeyValue *) (yyvsp[(3) - (7)].node); n->absent_on_null = (yyvsp[(4) - (7)].boolean); n->unique = (yyvsp[(5) - (7)].boolean); n->constructor = makeNode(JsonAggConstructor); n->constructor->output = (JsonOutput *) (yyvsp[(6) - (7)].node); n->constructor->agg_order = NULL; n->constructor->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *) n; ;} break; case 2404: #line 17107 "gram.y" { JsonArrayAgg *n = makeNode(JsonArrayAgg); n->arg = (JsonValueExpr *) (yyvsp[(3) - (7)].node); n->absent_on_null = (yyvsp[(5) - (7)].boolean); n->constructor = makeNode(JsonAggConstructor); n->constructor->agg_order = (yyvsp[(4) - (7)].list); n->constructor->output = (JsonOutput *) (yyvsp[(6) - (7)].node); n->constructor->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *) n; ;} break; case 2405: #line 17121 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; case 2406: #line 17122 "gram.y" { (yyval.list) = NIL; ;} break; case 2407: #line 17131 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 2408: #line 17132 "gram.y" { (yyval.list) = NIL; ;} break; case 2409: #line 17136 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 2410: #line 17137 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; case 2411: #line 17141 "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 2412: #line 17149 "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 2413: #line 17157 "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 2414: #line 17165 "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 2415: #line 17187 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); ;} break; case 2416: #line 17188 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); ;} break; case 2417: #line 17200 "gram.y" { (yyval.range) = makeRangeVar(NULL, (yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 2418: #line 17204 "gram.y" { (yyval.range) = makeRangeVarFromQualifiedName((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)]), yyscanner); ;} break; case 2419: #line 17210 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2420: #line 17212 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; case 2421: #line 17216 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2422: #line 17218 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2423: #line 17220 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2424: #line 17231 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2425: #line 17233 "gram.y" { (yyval.list) = check_func_name(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)), yyscanner); ;} break; case 2426: #line 17244 "gram.y" { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); ;} break; case 2427: #line 17248 "gram.y" { (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 2428: #line 17252 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 2429: #line 17256 "gram.y" { (yyval.node) = makeBitStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 2430: #line 17260 "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 2431: #line 17269 "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 2432: #line 17277 "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 2433: #line 17309 "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 2434: #line 17316 "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 2435: #line 17348 "gram.y" { (yyval.node) = makeStringConstCast((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]), (yyvsp[(1) - (2)].typnam)); ;} break; case 2436: #line 17352 "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 2437: #line 17359 "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 2438: #line 17367 "gram.y" { (yyval.node) = makeParamRefCast((yyvsp[(2) - (2)].ival), (yylsp[(2) - (2)]), (yyvsp[(1) - (2)].typnam)); ;} break; case 2439: #line 17371 "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 2440: #line 17377 "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 2441: #line 17384 "gram.y" { (yyval.node) = makeBoolAConst(true, (yylsp[(1) - (1)])); ;} break; case 2442: #line 17388 "gram.y" { (yyval.node) = makeBoolAConst(false, (yylsp[(1) - (1)])); ;} break; case 2443: #line 17392 "gram.y" { (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); ;} break; case 2444: #line 17397 "gram.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} break; case 2445: #line 17398 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2446: #line 17400 "gram.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} break; case 2447: #line 17401 "gram.y" { (yyval.ival) = + (yyvsp[(2) - (2)].ival); ;} break; case 2448: #line 17402 "gram.y" { (yyval.ival) = - (yyvsp[(2) - (2)].ival); ;} break; case 2449: #line 17407 "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; case ROLESPEC_CURRENT_ROLE: ereport(ERROR, (errcode(ERRCODE_RESERVED_NAME), errmsg("%s cannot be used as a role name here", "CURRENT_ROLE"), parser_errposition((yylsp[(1) - (1)])))); break; } ;} break; case 2450: #line 17448 "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 2451: #line 17476 "gram.y" { (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_ROLE, (yylsp[(1) - (1)])); ;} break; case 2452: #line 17480 "gram.y" { (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[(1) - (1)])); ;} break; case 2453: #line 17484 "gram.y" { (yyval.rolespec) = makeRoleSpec(ROLESPEC_SESSION_USER, (yylsp[(1) - (1)])); ;} break; case 2454: #line 17490 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].rolespec)); ;} break; case 2455: #line 17492 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].rolespec)); ;} break; case 2456: #line 17509 "gram.y" { SelectStmt *n = makeNode(SelectStmt); n->distinctClause = (yyvsp[(1) - (10)].list); n->targetList = (yyvsp[(2) - (10)].list); n->fromClause = (yyvsp[(3) - (10)].list); n->whereClause = (yyvsp[(4) - (10)].node); n->groupClause = ((yyvsp[(5) - (10)].groupclause))->list; n->groupDistinct = ((yyvsp[(5) - (10)].groupclause))->distinct; n->havingClause = (yyvsp[(6) - (10)].node); n->windowClause = (yyvsp[(7) - (10)].list); n->sortClause = (yyvsp[(8) - (10)].list); if ((yyvsp[(9) - (10)].selectlimit)) { n->limitOffset = (yyvsp[(9) - (10)].selectlimit)->limitOffset; n->limitCount = (yyvsp[(9) - (10)].selectlimit)->limitCount; if (!n->sortClause && (yyvsp[(9) - (10)].selectlimit)->limitOption == LIMIT_OPTION_WITH_TIES) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("WITH TIES cannot be specified without ORDER BY clause"))); n->limitOption = (yyvsp[(9) - (10)].selectlimit)->limitOption; } n->lockingClause = (yyvsp[(10) - (10)].list); (yyval.node) = (Node *) n; ;} break; case 2457: #line 17542 "gram.y" { PLAssignStmt *n = makeNode(PLAssignStmt); n->name = (yyvsp[(1) - (4)].str); n->indirection = check_indirection((yyvsp[(2) - (4)].list), yyscanner); /* nnames will be filled by calling production */ n->val = (SelectStmt *) (yyvsp[(4) - (4)].node); n->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *) n; ;} break; case 2458: #line 17554 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2459: #line 17555 "gram.y" { (yyval.str) = psprintf("$%d", (yyvsp[(1) - (1)].ival)); ;} break; case 2462: #line 17576 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2463: #line 17577 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2464: #line 17578 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2465: #line 17583 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2466: #line 17584 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2467: #line 17585 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2468: #line 17590 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2469: #line 17591 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2470: #line 17592 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2471: #line 17593 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2472: #line 17599 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2473: #line 17600 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2474: #line 17601 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2475: #line 17602 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2476: #line 17603 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2477: #line 17609 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2478: #line 17610 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; /* Line 1267 of yacc.c. */ #line 52543 "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 18622 "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 * 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.ival.type = T_Integer; n->val.ival.ival = val; n->location = location; return (Node *) n; } static Node * makeFloatConst(char *str, int location) { A_Const *n = makeNode(A_Const); n->val.fval.type = T_Float; n->val.fval.fval = str; n->location = location; return (Node *) n; } static Node * makeBoolAConst(bool state, int location) { A_Const *n = makeNode(A_Const); n->val.boolval.type = T_Boolean; n->val.boolval.boolval = state; n->location = location; return (Node *) n; } static Node * makeBitStringConst(char *str, int location) { A_Const *n = makeNode(A_Const); n->val.bsval.type = T_BitString; n->val.bsval.bsval = str; n->location = location; return (Node *) n; } static Node * makeNullAConst(int location) { A_Const *n = makeNode(A_Const); n->isnull = true; n->location = location; return (Node *) n; } static Node * makeAConst(Node *v, int location) { Node *n; switch (v->type) { case T_Float: n = makeFloatConst(castNode(Float, v)->fval, location); break; case T_Integer: n = makeIntConst(castNode(Integer, v)->ival, location); break; default: /* currently not used */ Assert(false); n = NULL; } return n; } /* 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 */ 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); Integer *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) { 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"))); if (limitClause->limitOption == LIMIT_OPTION_WITH_TIES && stmt->lockingClause) { ListCell *lc; foreach(lc, stmt->lockingClause) { LockingClause *lock = lfirst_node(LockingClause, lc); if (lock->waitPolicy == LockWaitSkip) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("%s and %s options cannot be used together", "SKIP LOCKED", "WITH TIES"))); } } 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 (IsA(&con->val, Integer)) { con->val.ival.ival = -con->val.ival.ival; return n; } if (IsA(&con->val, Float)) { doNegateFloat(&con->val.fval); return n; } } return (Node *) makeSimpleA_Expr(AEXPR_OP, "-", NULL, n, location); } static void doNegateFloat(Float *v) { char *oldval = v->fval; if (*oldval == '+') oldval++; if (*oldval == '-') v->fval = oldval+1; /* just strip the '-' */ else v->fval = psprintf("-%s", oldval); } static Node * makeAndExpr(Node *lexpr, Node *rexpr, int location) { /* Flatten "a AND b AND c ..." to a single BoolExpr on sight */ if (IsA(lexpr, BoolExpr)) { BoolExpr *blexpr = (BoolExpr *) lexpr; 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) { /* Flatten "a OR b OR c ..." to a single BoolExpr on sight */ if (IsA(lexpr, BoolExpr)) { BoolExpr *blexpr = (BoolExpr *) lexpr; 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_DEFAULT && 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; } /* * Convert a relation_name with name and namelist to a RangeVar using * makeRangeVar. */ static RangeVar * makeRangeVarFromQualifiedName(char *name, List *namelist, int location, core_yyscan_t yyscanner) { RangeVar *r; check_qualified_name(namelist, yyscanner); r = makeRangeVar(NULL, NULL, location); switch (list_length(namelist)) { case 1: r->catalogname = NULL; r->schemaname = name; r->relname = strVal(linitial(namelist)); break; case 2: r->catalogname = name; r->schemaname = strVal(linitial(namelist)); r->relname = strVal(lsecond(namelist)); break; default: ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), errmsg("improper qualified name (too many dotted names): %s", NameListToString(lcons(makeString(name), namelist))), parser_errposition(location)); break; } 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))); } } /* * Parse a user-supplied partition strategy string into parse node * PartitionStrategy representation, or die trying. */ static PartitionStrategy parsePartitionStrategy(char *strategy) { if (pg_strcasecmp(strategy, "list") == 0) return PARTITION_STRATEGY_LIST; else if (pg_strcasecmp(strategy, "range") == 0) return PARTITION_STRATEGY_RANGE; else if (pg_strcasecmp(strategy, "hash") == 0) return PARTITION_STRATEGY_HASH; ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("unrecognized partitioning strategy \"%s\"", strategy))); return PARTITION_STRATEGY_LIST; /* keep compiler quiet */ } /* * Process pubobjspec_list to check for errors in any of the objects and * convert PUBLICATIONOBJ_CONTINUATION into appropriate PublicationObjSpecType. */ static void preprocess_pubobj_list(List *pubobjspec_list, core_yyscan_t yyscanner) { ListCell *cell; PublicationObjSpec *pubobj; PublicationObjSpecType prevobjtype = PUBLICATIONOBJ_CONTINUATION; if (!pubobjspec_list) return; pubobj = (PublicationObjSpec *) linitial(pubobjspec_list); if (pubobj->pubobjtype == PUBLICATIONOBJ_CONTINUATION) ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid publication object list"), errdetail("One of TABLE or TABLES IN SCHEMA must be specified before a standalone table or schema name."), parser_errposition(pubobj->location)); foreach(cell, pubobjspec_list) { pubobj = (PublicationObjSpec *) lfirst(cell); if (pubobj->pubobjtype == PUBLICATIONOBJ_CONTINUATION) pubobj->pubobjtype = prevobjtype; if (pubobj->pubobjtype == PUBLICATIONOBJ_TABLE) { /* relation name or pubtable must be set for this type of object */ if (!pubobj->name && !pubobj->pubtable) ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid table name"), parser_errposition(pubobj->location)); if (pubobj->name) { /* convert it to PublicationTable */ PublicationTable *pubtable = makeNode(PublicationTable); pubtable->relation = makeRangeVar(NULL, pubobj->name, pubobj->location); pubobj->pubtable = pubtable; pubobj->name = NULL; } } else if (pubobj->pubobjtype == PUBLICATIONOBJ_TABLES_IN_SCHEMA || pubobj->pubobjtype == PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA) { /* WHERE clause is not allowed on a schema object */ if (pubobj->pubtable && pubobj->pubtable->whereClause) ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), errmsg("WHERE clause not allowed for schema"), parser_errposition(pubobj->location)); /* Column list is not allowed on a schema object */ if (pubobj->pubtable && pubobj->pubtable->columns) ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), errmsg("column specification not allowed for schema"), parser_errposition(pubobj->location)); /* * We can distinguish between the different type of schema * objects based on whether name and pubtable is set. */ if (pubobj->name) pubobj->pubobjtype = PUBLICATIONOBJ_TABLES_IN_SCHEMA; else if (!pubobj->name && !pubobj->pubtable) pubobj->pubobjtype = PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA; else ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid schema name"), parser_errposition(pubobj->location)); } prevobjtype = pubobj->pubobjtype; } } /*---------- * 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-17-6.1.0/src/postgres/src_backend_parser_parser.c000066400000000000000000000336321477334012600242720ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/parser/parser.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "gramparse.h" #include "mb/pg_wchar.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 contents of the * list have the form required by the specified RawParseMode. */ List * raw_parser(const char *str, RawParseMode mode) { 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 us to initialize the lookahead token, if any */ if (mode == RAW_PARSE_DEFAULT) yyextra.have_lookahead = false; else { /* this array is indexed by RawParseMode enum */ static const int mode_token[] = { [RAW_PARSE_DEFAULT] = 0, [RAW_PARSE_TYPE_NAME] = MODE_TYPE_NAME, [RAW_PARSE_PLPGSQL_EXPR] = MODE_PLPGSQL_EXPR, [RAW_PARSE_PLPGSQL_ASSIGN1] = MODE_PLPGSQL_ASSIGN1, [RAW_PARSE_PLPGSQL_ASSIGN2] = MODE_PLPGSQL_ASSIGN2, [RAW_PARSE_PLPGSQL_ASSIGN3] = MODE_PLPGSQL_ASSIGN3, }; yyextra.have_lookahead = true; yyextra.lookahead_token = mode_token[mode]; yyextra.lookahead_yylloc = 0; yyextra.lookahead_end = NULL; } /* 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; if (yyextra->lookahead_end) *(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 FORMAT: cur_token_length = 6; break; 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 WITHOUT: cur_token_length = 7; 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 FORMAT: /* Replace FORMAT by FORMAT_LA if it's followed by JSON */ switch (next_token) { case JSON: cur_token = FORMAT_LA; break; } break; 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 WITHOUT: /* Replace WITHOUT by WITHOUT_LA if it's followed by TIME */ switch (next_token) { case TIME: cur_token = WITHOUT_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-17-6.1.0/src/postgres/src_backend_parser_scan.c000066400000000000000000021376461477334012600237360ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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 1 "scan.c" /*------------------------------------------------------------------------- * * 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-2024, 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 "gramparse.h" #include "nodes/miscnodes.h" #include "parser/parser.h" /* only needed for GUC variables */ #include "parser/scansup.h" #include "port/pg_bitutils.h" #include "mb/pg_wchar.h" #include "utils/builtins.h" #line 47 "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 6 #define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif #ifdef yy_create_buffer #define core_yy_create_buffer_ALREADY_DEFINED #else #define yy_create_buffer core_yy_create_buffer #endif #ifdef yy_delete_buffer #define core_yy_delete_buffer_ALREADY_DEFINED #else #define yy_delete_buffer core_yy_delete_buffer #endif #ifdef yy_scan_buffer #define core_yy_scan_buffer_ALREADY_DEFINED #else #define yy_scan_buffer core_yy_scan_buffer #endif #ifdef yy_scan_string #define core_yy_scan_string_ALREADY_DEFINED #else #define yy_scan_string core_yy_scan_string #endif #ifdef yy_scan_bytes #define core_yy_scan_bytes_ALREADY_DEFINED #else #define yy_scan_bytes core_yy_scan_bytes #endif #ifdef yy_init_buffer #define core_yy_init_buffer_ALREADY_DEFINED #else #define yy_init_buffer core_yy_init_buffer #endif #ifdef yy_flush_buffer #define core_yy_flush_buffer_ALREADY_DEFINED #else #define yy_flush_buffer core_yy_flush_buffer #endif #ifdef yy_load_buffer_state #define core_yy_load_buffer_state_ALREADY_DEFINED #else #define yy_load_buffer_state core_yy_load_buffer_state #endif #ifdef yy_switch_to_buffer #define core_yy_switch_to_buffer_ALREADY_DEFINED #else #define yy_switch_to_buffer core_yy_switch_to_buffer #endif #ifdef yypush_buffer_state #define core_yypush_buffer_state_ALREADY_DEFINED #else #define yypush_buffer_state core_yypush_buffer_state #endif #ifdef yypop_buffer_state #define core_yypop_buffer_state_ALREADY_DEFINED #else #define yypop_buffer_state core_yypop_buffer_state #endif #ifdef yyensure_buffer_stack #define core_yyensure_buffer_stack_ALREADY_DEFINED #else #define yyensure_buffer_stack core_yyensure_buffer_stack #endif #ifdef yylex #define core_yylex_ALREADY_DEFINED #else #define yylex core_yylex #endif #ifdef yyrestart #define core_yyrestart_ALREADY_DEFINED #else #define yyrestart core_yyrestart #endif #ifdef yylex_init #define core_yylex_init_ALREADY_DEFINED #else #define yylex_init core_yylex_init #endif #ifdef yylex_init_extra #define core_yylex_init_extra_ALREADY_DEFINED #else #define yylex_init_extra core_yylex_init_extra #endif #ifdef yylex_destroy #define core_yylex_destroy_ALREADY_DEFINED #else #define yylex_destroy core_yylex_destroy #endif #ifdef yyget_debug #define core_yyget_debug_ALREADY_DEFINED #else #define yyget_debug core_yyget_debug #endif #ifdef yyset_debug #define core_yyset_debug_ALREADY_DEFINED #else #define yyset_debug core_yyset_debug #endif #ifdef yyget_extra #define core_yyget_extra_ALREADY_DEFINED #else #define yyget_extra core_yyget_extra #endif #ifdef yyset_extra #define core_yyset_extra_ALREADY_DEFINED #else #define yyset_extra core_yyset_extra #endif #ifdef yyget_in #define core_yyget_in_ALREADY_DEFINED #else #define yyget_in core_yyget_in #endif #ifdef yyset_in #define core_yyset_in_ALREADY_DEFINED #else #define yyset_in core_yyset_in #endif #ifdef yyget_out #define core_yyget_out_ALREADY_DEFINED #else #define yyget_out core_yyget_out #endif #ifdef yyset_out #define core_yyset_out_ALREADY_DEFINED #else #define yyset_out core_yyset_out #endif #ifdef yyget_leng #define core_yyget_leng_ALREADY_DEFINED #else #define yyget_leng core_yyget_leng #endif #ifdef yyget_text #define core_yyget_text_ALREADY_DEFINED #else #define yyget_text core_yyget_text #endif #ifdef yyget_lineno #define core_yyget_lineno_ALREADY_DEFINED #else #define yyget_lineno core_yyget_lineno #endif #ifdef yyset_lineno #define core_yyset_lineno_ALREADY_DEFINED #else #define yyset_lineno core_yyset_lineno #endif #ifdef yyget_column #define core_yyget_column_ALREADY_DEFINED #else #define yyget_column core_yyget_column #endif #ifdef yyset_column #define core_yyset_column_ALREADY_DEFINED #else #define yyset_column core_yyset_column #endif #ifdef yywrap #define core_yywrap_ALREADY_DEFINED #else #define yywrap core_yywrap #endif #ifdef yyget_lval #define core_yyget_lval_ALREADY_DEFINED #else #define yyget_lval core_yyget_lval #endif #ifdef yyset_lval #define core_yyset_lval_ALREADY_DEFINED #else #define yyset_lval core_yyset_lval #endif #ifdef yyget_lloc #define core_yyget_lloc_ALREADY_DEFINED #else #define yyget_lloc core_yyget_lloc #endif #ifdef yyset_lloc #define core_yyset_lloc_ALREADY_DEFINED #else #define yyset_lloc core_yyset_lloc #endif #ifdef yyalloc #define core_yyalloc_ALREADY_DEFINED #else #define yyalloc core_yyalloc #endif #ifdef yyrealloc #define core_yyrealloc_ALREADY_DEFINED #else #define yyrealloc core_yyrealloc #endif #ifdef yyfree #define core_yyfree_ALREADY_DEFINED #else #define yyfree core_yyfree #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; /* 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 #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* begin standard C++ headers. */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ #define YY_SC_TO_UI(c) ((YY_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 yyrestart( yyin , yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define YY_BUF_SIZE 32768 #else #define YY_BUF_SIZE 16384 #endif /* __ia64__ */ #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) #define YY_LINENO_REWIND_TO(ptr) /* 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. */ int 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 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 yyrestart ( FILE *input_file , yyscan_t yyscanner ); void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); void yypop_buffer_state ( yyscan_t yyscanner ); static void yyensure_buffer_stack ( yyscan_t yyscanner ); static void yy_load_buffer_state ( yyscan_t yyscanner ); static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner ); #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner) YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, yy_size_t len , yyscan_t yyscanner ); void *yyalloc ( yy_size_t , yyscan_t yyscanner ); void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); void yyfree ( void * , yyscan_t yyscanner ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ 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 ){\ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ 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(yyscanner) (/*CONSTCOND*/1) #define YY_SKIP_YYWRAP typedef flex_uint8_t YY_CHAR; typedef const 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 yynoreturn yy_fatal_error ( const 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 73 #define YY_END_OF_BUFFER 74 struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static const struct yy_trans_info yy_transition[33677] = { { 0, 0 }, { 0,33421 }, { 0, 0 }, { 0,33419 }, { 1,6192 }, { 2,6192 }, { 3,6192 }, { 4,6192 }, { 5,6192 }, { 6,6192 }, { 7,6192 }, { 8,6192 }, { 9,6194 }, { 10,6199 }, { 11,6194 }, { 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,6697 }, { 49,6954 }, { 50,6954 }, { 51,6954 }, { 52,6954 }, { 53,6954 }, { 54,6954 }, { 55,6954 }, { 56,6954 }, { 57,6954 }, { 58,6219 }, { 59,6216 }, { 60,7211 }, { 61,7222 }, { 62,7289 }, { 63,6241 }, { 64,6241 }, { 65,7321 }, { 66,7578 }, { 67,7321 }, { 68,7321 }, { 69,7835 }, { 70,7321 }, { 71,7321 }, { 72,7321 }, { 73,7321 }, { 74,7321 }, { 75,7321 }, { 76,7321 }, { 77,7321 }, { 78,8092 }, { 79,7321 }, { 80,7321 }, { 81,7321 }, { 82,7321 }, { 83,7321 }, { 84,7321 }, { 85,8349 }, { 86,7321 }, { 87,7321 }, { 88,8606 }, { 89,7321 }, { 90,7321 }, { 91,6216 }, { 92,6192 }, { 93,6216 }, { 94,6564 }, { 95,7321 }, { 96,6241 }, { 97,7321 }, { 98,7578 }, { 99,7321 }, { 100,7321 }, { 101,7835 }, { 102,7321 }, { 103,7321 }, { 104,7321 }, { 105,7321 }, { 106,7321 }, { 107,7321 }, { 108,7321 }, { 109,7321 }, { 110,8092 }, { 111,7321 }, { 112,7321 }, { 113,7321 }, { 114,7321 }, { 115,7321 }, { 116,7321 }, { 117,8349 }, { 118,7321 }, { 119,7321 }, { 120,8606 }, { 121,7321 }, { 122,7321 }, { 123,6192 }, { 124,6241 }, { 125,6192 }, { 126,6241 }, { 127,6192 }, { 128,7321 }, { 129,7321 }, { 130,7321 }, { 131,7321 }, { 132,7321 }, { 133,7321 }, { 134,7321 }, { 135,7321 }, { 136,7321 }, { 137,7321 }, { 138,7321 }, { 139,7321 }, { 140,7321 }, { 141,7321 }, { 142,7321 }, { 143,7321 }, { 144,7321 }, { 145,7321 }, { 146,7321 }, { 147,7321 }, { 148,7321 }, { 149,7321 }, { 150,7321 }, { 151,7321 }, { 152,7321 }, { 153,7321 }, { 154,7321 }, { 155,7321 }, { 156,7321 }, { 157,7321 }, { 158,7321 }, { 159,7321 }, { 160,7321 }, { 161,7321 }, { 162,7321 }, { 163,7321 }, { 164,7321 }, { 165,7321 }, { 166,7321 }, { 167,7321 }, { 168,7321 }, { 169,7321 }, { 170,7321 }, { 171,7321 }, { 172,7321 }, { 173,7321 }, { 174,7321 }, { 175,7321 }, { 176,7321 }, { 177,7321 }, { 178,7321 }, { 179,7321 }, { 180,7321 }, { 181,7321 }, { 182,7321 }, { 183,7321 }, { 184,7321 }, { 185,7321 }, { 186,7321 }, { 187,7321 }, { 188,7321 }, { 189,7321 }, { 190,7321 }, { 191,7321 }, { 192,7321 }, { 193,7321 }, { 194,7321 }, { 195,7321 }, { 196,7321 }, { 197,7321 }, { 198,7321 }, { 199,7321 }, { 200,7321 }, { 201,7321 }, { 202,7321 }, { 203,7321 }, { 204,7321 }, { 205,7321 }, { 206,7321 }, { 207,7321 }, { 208,7321 }, { 209,7321 }, { 210,7321 }, { 211,7321 }, { 212,7321 }, { 213,7321 }, { 214,7321 }, { 215,7321 }, { 216,7321 }, { 217,7321 }, { 218,7321 }, { 219,7321 }, { 220,7321 }, { 221,7321 }, { 222,7321 }, { 223,7321 }, { 224,7321 }, { 225,7321 }, { 226,7321 }, { 227,7321 }, { 228,7321 }, { 229,7321 }, { 230,7321 }, { 231,7321 }, { 232,7321 }, { 233,7321 }, { 234,7321 }, { 235,7321 }, { 236,7321 }, { 237,7321 }, { 238,7321 }, { 239,7321 }, { 240,7321 }, { 241,7321 }, { 242,7321 }, { 243,7321 }, { 244,7321 }, { 245,7321 }, { 246,7321 }, { 247,7321 }, { 248,7321 }, { 249,7321 }, { 250,7321 }, { 251,7321 }, { 252,7321 }, { 253,7321 }, { 254,7321 }, { 255,7321 }, { 256,6192 }, { 0, 0 }, { 0,33161 }, { 1,5934 }, { 2,5934 }, { 3,5934 }, { 4,5934 }, { 5,5934 }, { 6,5934 }, { 7,5934 }, { 8,5934 }, { 9,5936 }, { 10,5941 }, { 11,5936 }, { 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,6439 }, { 49,6696 }, { 50,6696 }, { 51,6696 }, { 52,6696 }, { 53,6696 }, { 54,6696 }, { 55,6696 }, { 56,6696 }, { 57,6696 }, { 58,5961 }, { 59,5958 }, { 60,6953 }, { 61,6964 }, { 62,7031 }, { 63,5983 }, { 64,5983 }, { 65,7063 }, { 66,7320 }, { 67,7063 }, { 68,7063 }, { 69,7577 }, { 70,7063 }, { 71,7063 }, { 72,7063 }, { 73,7063 }, { 74,7063 }, { 75,7063 }, { 76,7063 }, { 77,7063 }, { 78,7834 }, { 79,7063 }, { 80,7063 }, { 81,7063 }, { 82,7063 }, { 83,7063 }, { 84,7063 }, { 85,8091 }, { 86,7063 }, { 87,7063 }, { 88,8348 }, { 89,7063 }, { 90,7063 }, { 91,5958 }, { 92,5934 }, { 93,5958 }, { 94,6306 }, { 95,7063 }, { 96,5983 }, { 97,7063 }, { 98,7320 }, { 99,7063 }, { 100,7063 }, { 101,7577 }, { 102,7063 }, { 103,7063 }, { 104,7063 }, { 105,7063 }, { 106,7063 }, { 107,7063 }, { 108,7063 }, { 109,7063 }, { 110,7834 }, { 111,7063 }, { 112,7063 }, { 113,7063 }, { 114,7063 }, { 115,7063 }, { 116,7063 }, { 117,8091 }, { 118,7063 }, { 119,7063 }, { 120,8348 }, { 121,7063 }, { 122,7063 }, { 123,5934 }, { 124,5983 }, { 125,5934 }, { 126,5983 }, { 127,5934 }, { 128,7063 }, { 129,7063 }, { 130,7063 }, { 131,7063 }, { 132,7063 }, { 133,7063 }, { 134,7063 }, { 135,7063 }, { 136,7063 }, { 137,7063 }, { 138,7063 }, { 139,7063 }, { 140,7063 }, { 141,7063 }, { 142,7063 }, { 143,7063 }, { 144,7063 }, { 145,7063 }, { 146,7063 }, { 147,7063 }, { 148,7063 }, { 149,7063 }, { 150,7063 }, { 151,7063 }, { 152,7063 }, { 153,7063 }, { 154,7063 }, { 155,7063 }, { 156,7063 }, { 157,7063 }, { 158,7063 }, { 159,7063 }, { 160,7063 }, { 161,7063 }, { 162,7063 }, { 163,7063 }, { 164,7063 }, { 165,7063 }, { 166,7063 }, { 167,7063 }, { 168,7063 }, { 169,7063 }, { 170,7063 }, { 171,7063 }, { 172,7063 }, { 173,7063 }, { 174,7063 }, { 175,7063 }, { 176,7063 }, { 177,7063 }, { 178,7063 }, { 179,7063 }, { 180,7063 }, { 181,7063 }, { 182,7063 }, { 183,7063 }, { 184,7063 }, { 185,7063 }, { 186,7063 }, { 187,7063 }, { 188,7063 }, { 189,7063 }, { 190,7063 }, { 191,7063 }, { 192,7063 }, { 193,7063 }, { 194,7063 }, { 195,7063 }, { 196,7063 }, { 197,7063 }, { 198,7063 }, { 199,7063 }, { 200,7063 }, { 201,7063 }, { 202,7063 }, { 203,7063 }, { 204,7063 }, { 205,7063 }, { 206,7063 }, { 207,7063 }, { 208,7063 }, { 209,7063 }, { 210,7063 }, { 211,7063 }, { 212,7063 }, { 213,7063 }, { 214,7063 }, { 215,7063 }, { 216,7063 }, { 217,7063 }, { 218,7063 }, { 219,7063 }, { 220,7063 }, { 221,7063 }, { 222,7063 }, { 223,7063 }, { 224,7063 }, { 225,7063 }, { 226,7063 }, { 227,7063 }, { 228,7063 }, { 229,7063 }, { 230,7063 }, { 231,7063 }, { 232,7063 }, { 233,7063 }, { 234,7063 }, { 235,7063 }, { 236,7063 }, { 237,7063 }, { 238,7063 }, { 239,7063 }, { 240,7063 }, { 241,7063 }, { 242,7063 }, { 243,7063 }, { 244,7063 }, { 245,7063 }, { 246,7063 }, { 247,7063 }, { 248,7063 }, { 249,7063 }, { 250,7063 }, { 251,7063 }, { 252,7063 }, { 253,7063 }, { 254,7063 }, { 255,7063 }, { 256,5934 }, { 0, 11 }, { 0,32903 }, { 1,8347 }, { 2,8347 }, { 3,8347 }, { 4,8347 }, { 5,8347 }, { 6,8347 }, { 7,8347 }, { 8,8347 }, { 9,8347 }, { 10,8347 }, { 11,8347 }, { 12,8347 }, { 13,8347 }, { 14,8347 }, { 15,8347 }, { 16,8347 }, { 17,8347 }, { 18,8347 }, { 19,8347 }, { 20,8347 }, { 21,8347 }, { 22,8347 }, { 23,8347 }, { 24,8347 }, { 25,8347 }, { 26,8347 }, { 27,8347 }, { 28,8347 }, { 29,8347 }, { 30,8347 }, { 31,8347 }, { 32,8347 }, { 33,8347 }, { 34,8347 }, { 35,8347 }, { 36,8347 }, { 37,8347 }, { 38,8347 }, { 39,5705 }, { 40,8347 }, { 41,8347 }, { 42,8347 }, { 43,8347 }, { 44,8347 }, { 45,8347 }, { 46,8347 }, { 47,8347 }, { 48,8347 }, { 49,8347 }, { 50,8347 }, { 51,8347 }, { 52,8347 }, { 53,8347 }, { 54,8347 }, { 55,8347 }, { 56,8347 }, { 57,8347 }, { 58,8347 }, { 59,8347 }, { 60,8347 }, { 61,8347 }, { 62,8347 }, { 63,8347 }, { 64,8347 }, { 65,8347 }, { 66,8347 }, { 67,8347 }, { 68,8347 }, { 69,8347 }, { 70,8347 }, { 71,8347 }, { 72,8347 }, { 73,8347 }, { 74,8347 }, { 75,8347 }, { 76,8347 }, { 77,8347 }, { 78,8347 }, { 79,8347 }, { 80,8347 }, { 81,8347 }, { 82,8347 }, { 83,8347 }, { 84,8347 }, { 85,8347 }, { 86,8347 }, { 87,8347 }, { 88,8347 }, { 89,8347 }, { 90,8347 }, { 91,8347 }, { 92,8347 }, { 93,8347 }, { 94,8347 }, { 95,8347 }, { 96,8347 }, { 97,8347 }, { 98,8347 }, { 99,8347 }, { 100,8347 }, { 101,8347 }, { 102,8347 }, { 103,8347 }, { 104,8347 }, { 105,8347 }, { 106,8347 }, { 107,8347 }, { 108,8347 }, { 109,8347 }, { 110,8347 }, { 111,8347 }, { 112,8347 }, { 113,8347 }, { 114,8347 }, { 115,8347 }, { 116,8347 }, { 117,8347 }, { 118,8347 }, { 119,8347 }, { 120,8347 }, { 121,8347 }, { 122,8347 }, { 123,8347 }, { 124,8347 }, { 125,8347 }, { 126,8347 }, { 127,8347 }, { 128,8347 }, { 129,8347 }, { 130,8347 }, { 131,8347 }, { 132,8347 }, { 133,8347 }, { 134,8347 }, { 135,8347 }, { 136,8347 }, { 137,8347 }, { 138,8347 }, { 139,8347 }, { 140,8347 }, { 141,8347 }, { 142,8347 }, { 143,8347 }, { 144,8347 }, { 145,8347 }, { 146,8347 }, { 147,8347 }, { 148,8347 }, { 149,8347 }, { 150,8347 }, { 151,8347 }, { 152,8347 }, { 153,8347 }, { 154,8347 }, { 155,8347 }, { 156,8347 }, { 157,8347 }, { 158,8347 }, { 159,8347 }, { 160,8347 }, { 161,8347 }, { 162,8347 }, { 163,8347 }, { 164,8347 }, { 165,8347 }, { 166,8347 }, { 167,8347 }, { 168,8347 }, { 169,8347 }, { 170,8347 }, { 171,8347 }, { 172,8347 }, { 173,8347 }, { 174,8347 }, { 175,8347 }, { 176,8347 }, { 177,8347 }, { 178,8347 }, { 179,8347 }, { 180,8347 }, { 181,8347 }, { 182,8347 }, { 183,8347 }, { 184,8347 }, { 185,8347 }, { 186,8347 }, { 187,8347 }, { 188,8347 }, { 189,8347 }, { 190,8347 }, { 191,8347 }, { 192,8347 }, { 193,8347 }, { 194,8347 }, { 195,8347 }, { 196,8347 }, { 197,8347 }, { 198,8347 }, { 199,8347 }, { 200,8347 }, { 201,8347 }, { 202,8347 }, { 203,8347 }, { 204,8347 }, { 205,8347 }, { 206,8347 }, { 207,8347 }, { 208,8347 }, { 209,8347 }, { 210,8347 }, { 211,8347 }, { 212,8347 }, { 213,8347 }, { 214,8347 }, { 215,8347 }, { 216,8347 }, { 217,8347 }, { 218,8347 }, { 219,8347 }, { 220,8347 }, { 221,8347 }, { 222,8347 }, { 223,8347 }, { 224,8347 }, { 225,8347 }, { 226,8347 }, { 227,8347 }, { 228,8347 }, { 229,8347 }, { 230,8347 }, { 231,8347 }, { 232,8347 }, { 233,8347 }, { 234,8347 }, { 235,8347 }, { 236,8347 }, { 237,8347 }, { 238,8347 }, { 239,8347 }, { 240,8347 }, { 241,8347 }, { 242,8347 }, { 243,8347 }, { 244,8347 }, { 245,8347 }, { 246,8347 }, { 247,8347 }, { 248,8347 }, { 249,8347 }, { 250,8347 }, { 251,8347 }, { 252,8347 }, { 253,8347 }, { 254,8347 }, { 255,8347 }, { 256,8347 }, { 0, 11 }, { 0,32645 }, { 1,8089 }, { 2,8089 }, { 3,8089 }, { 4,8089 }, { 5,8089 }, { 6,8089 }, { 7,8089 }, { 8,8089 }, { 9,8089 }, { 10,8089 }, { 11,8089 }, { 12,8089 }, { 13,8089 }, { 14,8089 }, { 15,8089 }, { 16,8089 }, { 17,8089 }, { 18,8089 }, { 19,8089 }, { 20,8089 }, { 21,8089 }, { 22,8089 }, { 23,8089 }, { 24,8089 }, { 25,8089 }, { 26,8089 }, { 27,8089 }, { 28,8089 }, { 29,8089 }, { 30,8089 }, { 31,8089 }, { 32,8089 }, { 33,8089 }, { 34,8089 }, { 35,8089 }, { 36,8089 }, { 37,8089 }, { 38,8089 }, { 39,5447 }, { 40,8089 }, { 41,8089 }, { 42,8089 }, { 43,8089 }, { 44,8089 }, { 45,8089 }, { 46,8089 }, { 47,8089 }, { 48,8089 }, { 49,8089 }, { 50,8089 }, { 51,8089 }, { 52,8089 }, { 53,8089 }, { 54,8089 }, { 55,8089 }, { 56,8089 }, { 57,8089 }, { 58,8089 }, { 59,8089 }, { 60,8089 }, { 61,8089 }, { 62,8089 }, { 63,8089 }, { 64,8089 }, { 65,8089 }, { 66,8089 }, { 67,8089 }, { 68,8089 }, { 69,8089 }, { 70,8089 }, { 71,8089 }, { 72,8089 }, { 73,8089 }, { 74,8089 }, { 75,8089 }, { 76,8089 }, { 77,8089 }, { 78,8089 }, { 79,8089 }, { 80,8089 }, { 81,8089 }, { 82,8089 }, { 83,8089 }, { 84,8089 }, { 85,8089 }, { 86,8089 }, { 87,8089 }, { 88,8089 }, { 89,8089 }, { 90,8089 }, { 91,8089 }, { 92,8089 }, { 93,8089 }, { 94,8089 }, { 95,8089 }, { 96,8089 }, { 97,8089 }, { 98,8089 }, { 99,8089 }, { 100,8089 }, { 101,8089 }, { 102,8089 }, { 103,8089 }, { 104,8089 }, { 105,8089 }, { 106,8089 }, { 107,8089 }, { 108,8089 }, { 109,8089 }, { 110,8089 }, { 111,8089 }, { 112,8089 }, { 113,8089 }, { 114,8089 }, { 115,8089 }, { 116,8089 }, { 117,8089 }, { 118,8089 }, { 119,8089 }, { 120,8089 }, { 121,8089 }, { 122,8089 }, { 123,8089 }, { 124,8089 }, { 125,8089 }, { 126,8089 }, { 127,8089 }, { 128,8089 }, { 129,8089 }, { 130,8089 }, { 131,8089 }, { 132,8089 }, { 133,8089 }, { 134,8089 }, { 135,8089 }, { 136,8089 }, { 137,8089 }, { 138,8089 }, { 139,8089 }, { 140,8089 }, { 141,8089 }, { 142,8089 }, { 143,8089 }, { 144,8089 }, { 145,8089 }, { 146,8089 }, { 147,8089 }, { 148,8089 }, { 149,8089 }, { 150,8089 }, { 151,8089 }, { 152,8089 }, { 153,8089 }, { 154,8089 }, { 155,8089 }, { 156,8089 }, { 157,8089 }, { 158,8089 }, { 159,8089 }, { 160,8089 }, { 161,8089 }, { 162,8089 }, { 163,8089 }, { 164,8089 }, { 165,8089 }, { 166,8089 }, { 167,8089 }, { 168,8089 }, { 169,8089 }, { 170,8089 }, { 171,8089 }, { 172,8089 }, { 173,8089 }, { 174,8089 }, { 175,8089 }, { 176,8089 }, { 177,8089 }, { 178,8089 }, { 179,8089 }, { 180,8089 }, { 181,8089 }, { 182,8089 }, { 183,8089 }, { 184,8089 }, { 185,8089 }, { 186,8089 }, { 187,8089 }, { 188,8089 }, { 189,8089 }, { 190,8089 }, { 191,8089 }, { 192,8089 }, { 193,8089 }, { 194,8089 }, { 195,8089 }, { 196,8089 }, { 197,8089 }, { 198,8089 }, { 199,8089 }, { 200,8089 }, { 201,8089 }, { 202,8089 }, { 203,8089 }, { 204,8089 }, { 205,8089 }, { 206,8089 }, { 207,8089 }, { 208,8089 }, { 209,8089 }, { 210,8089 }, { 211,8089 }, { 212,8089 }, { 213,8089 }, { 214,8089 }, { 215,8089 }, { 216,8089 }, { 217,8089 }, { 218,8089 }, { 219,8089 }, { 220,8089 }, { 221,8089 }, { 222,8089 }, { 223,8089 }, { 224,8089 }, { 225,8089 }, { 226,8089 }, { 227,8089 }, { 228,8089 }, { 229,8089 }, { 230,8089 }, { 231,8089 }, { 232,8089 }, { 233,8089 }, { 234,8089 }, { 235,8089 }, { 236,8089 }, { 237,8089 }, { 238,8089 }, { 239,8089 }, { 240,8089 }, { 241,8089 }, { 242,8089 }, { 243,8089 }, { 244,8089 }, { 245,8089 }, { 246,8089 }, { 247,8089 }, { 248,8089 }, { 249,8089 }, { 250,8089 }, { 251,8089 }, { 252,8089 }, { 253,8089 }, { 254,8089 }, { 255,8089 }, { 256,8089 }, { 0, 0 }, { 0,32387 }, { 1,8089 }, { 2,8089 }, { 3,8089 }, { 4,8089 }, { 5,8089 }, { 6,8089 }, { 7,8089 }, { 8,8089 }, { 9,8089 }, { 10,8089 }, { 11,8089 }, { 12,8089 }, { 13,8089 }, { 14,8089 }, { 15,8089 }, { 16,8089 }, { 17,8089 }, { 18,8089 }, { 19,8089 }, { 20,8089 }, { 21,8089 }, { 22,8089 }, { 23,8089 }, { 24,8089 }, { 25,8089 }, { 26,8089 }, { 27,8089 }, { 28,8089 }, { 29,8089 }, { 30,8089 }, { 31,8089 }, { 32,8089 }, { 33,8347 }, { 34,8089 }, { 35,8347 }, { 36,8089 }, { 37,8347 }, { 38,8347 }, { 39,8089 }, { 40,8089 }, { 41,8089 }, { 42,5192 }, { 43,8347 }, { 44,8089 }, { 45,8347 }, { 46,8089 }, { 47,5196 }, { 48,8089 }, { 49,8089 }, { 50,8089 }, { 51,8089 }, { 52,8089 }, { 53,8089 }, { 54,8089 }, { 55,8089 }, { 56,8089 }, { 57,8089 }, { 58,8089 }, { 59,8089 }, { 60,8347 }, { 61,8347 }, { 62,8347 }, { 63,8347 }, { 64,8347 }, { 65,8089 }, { 66,8089 }, { 67,8089 }, { 68,8089 }, { 69,8089 }, { 70,8089 }, { 71,8089 }, { 72,8089 }, { 73,8089 }, { 74,8089 }, { 75,8089 }, { 76,8089 }, { 77,8089 }, { 78,8089 }, { 79,8089 }, { 80,8089 }, { 81,8089 }, { 82,8089 }, { 83,8089 }, { 84,8089 }, { 85,8089 }, { 86,8089 }, { 87,8089 }, { 88,8089 }, { 89,8089 }, { 90,8089 }, { 91,8089 }, { 92,8089 }, { 93,8089 }, { 94,8347 }, { 95,8089 }, { 96,8347 }, { 97,8089 }, { 98,8089 }, { 99,8089 }, { 100,8089 }, { 101,8089 }, { 102,8089 }, { 103,8089 }, { 104,8089 }, { 105,8089 }, { 106,8089 }, { 107,8089 }, { 108,8089 }, { 109,8089 }, { 110,8089 }, { 111,8089 }, { 112,8089 }, { 113,8089 }, { 114,8089 }, { 115,8089 }, { 116,8089 }, { 117,8089 }, { 118,8089 }, { 119,8089 }, { 120,8089 }, { 121,8089 }, { 122,8089 }, { 123,8089 }, { 124,8347 }, { 125,8089 }, { 126,8347 }, { 127,8089 }, { 128,8089 }, { 129,8089 }, { 130,8089 }, { 131,8089 }, { 132,8089 }, { 133,8089 }, { 134,8089 }, { 135,8089 }, { 136,8089 }, { 137,8089 }, { 138,8089 }, { 139,8089 }, { 140,8089 }, { 141,8089 }, { 142,8089 }, { 143,8089 }, { 144,8089 }, { 145,8089 }, { 146,8089 }, { 147,8089 }, { 148,8089 }, { 149,8089 }, { 150,8089 }, { 151,8089 }, { 152,8089 }, { 153,8089 }, { 154,8089 }, { 155,8089 }, { 156,8089 }, { 157,8089 }, { 158,8089 }, { 159,8089 }, { 160,8089 }, { 161,8089 }, { 162,8089 }, { 163,8089 }, { 164,8089 }, { 165,8089 }, { 166,8089 }, { 167,8089 }, { 168,8089 }, { 169,8089 }, { 170,8089 }, { 171,8089 }, { 172,8089 }, { 173,8089 }, { 174,8089 }, { 175,8089 }, { 176,8089 }, { 177,8089 }, { 178,8089 }, { 179,8089 }, { 180,8089 }, { 181,8089 }, { 182,8089 }, { 183,8089 }, { 184,8089 }, { 185,8089 }, { 186,8089 }, { 187,8089 }, { 188,8089 }, { 189,8089 }, { 190,8089 }, { 191,8089 }, { 192,8089 }, { 193,8089 }, { 194,8089 }, { 195,8089 }, { 196,8089 }, { 197,8089 }, { 198,8089 }, { 199,8089 }, { 200,8089 }, { 201,8089 }, { 202,8089 }, { 203,8089 }, { 204,8089 }, { 205,8089 }, { 206,8089 }, { 207,8089 }, { 208,8089 }, { 209,8089 }, { 210,8089 }, { 211,8089 }, { 212,8089 }, { 213,8089 }, { 214,8089 }, { 215,8089 }, { 216,8089 }, { 217,8089 }, { 218,8089 }, { 219,8089 }, { 220,8089 }, { 221,8089 }, { 222,8089 }, { 223,8089 }, { 224,8089 }, { 225,8089 }, { 226,8089 }, { 227,8089 }, { 228,8089 }, { 229,8089 }, { 230,8089 }, { 231,8089 }, { 232,8089 }, { 233,8089 }, { 234,8089 }, { 235,8089 }, { 236,8089 }, { 237,8089 }, { 238,8089 }, { 239,8089 }, { 240,8089 }, { 241,8089 }, { 242,8089 }, { 243,8089 }, { 244,8089 }, { 245,8089 }, { 246,8089 }, { 247,8089 }, { 248,8089 }, { 249,8089 }, { 250,8089 }, { 251,8089 }, { 252,8089 }, { 253,8089 }, { 254,8089 }, { 255,8089 }, { 256,8089 }, { 0, 0 }, { 0,32129 }, { 1,7831 }, { 2,7831 }, { 3,7831 }, { 4,7831 }, { 5,7831 }, { 6,7831 }, { 7,7831 }, { 8,7831 }, { 9,7831 }, { 10,7831 }, { 11,7831 }, { 12,7831 }, { 13,7831 }, { 14,7831 }, { 15,7831 }, { 16,7831 }, { 17,7831 }, { 18,7831 }, { 19,7831 }, { 20,7831 }, { 21,7831 }, { 22,7831 }, { 23,7831 }, { 24,7831 }, { 25,7831 }, { 26,7831 }, { 27,7831 }, { 28,7831 }, { 29,7831 }, { 30,7831 }, { 31,7831 }, { 32,7831 }, { 33,8089 }, { 34,7831 }, { 35,8089 }, { 36,7831 }, { 37,8089 }, { 38,8089 }, { 39,7831 }, { 40,7831 }, { 41,7831 }, { 42,4934 }, { 43,8089 }, { 44,7831 }, { 45,8089 }, { 46,7831 }, { 47,4938 }, { 48,7831 }, { 49,7831 }, { 50,7831 }, { 51,7831 }, { 52,7831 }, { 53,7831 }, { 54,7831 }, { 55,7831 }, { 56,7831 }, { 57,7831 }, { 58,7831 }, { 59,7831 }, { 60,8089 }, { 61,8089 }, { 62,8089 }, { 63,8089 }, { 64,8089 }, { 65,7831 }, { 66,7831 }, { 67,7831 }, { 68,7831 }, { 69,7831 }, { 70,7831 }, { 71,7831 }, { 72,7831 }, { 73,7831 }, { 74,7831 }, { 75,7831 }, { 76,7831 }, { 77,7831 }, { 78,7831 }, { 79,7831 }, { 80,7831 }, { 81,7831 }, { 82,7831 }, { 83,7831 }, { 84,7831 }, { 85,7831 }, { 86,7831 }, { 87,7831 }, { 88,7831 }, { 89,7831 }, { 90,7831 }, { 91,7831 }, { 92,7831 }, { 93,7831 }, { 94,8089 }, { 95,7831 }, { 96,8089 }, { 97,7831 }, { 98,7831 }, { 99,7831 }, { 100,7831 }, { 101,7831 }, { 102,7831 }, { 103,7831 }, { 104,7831 }, { 105,7831 }, { 106,7831 }, { 107,7831 }, { 108,7831 }, { 109,7831 }, { 110,7831 }, { 111,7831 }, { 112,7831 }, { 113,7831 }, { 114,7831 }, { 115,7831 }, { 116,7831 }, { 117,7831 }, { 118,7831 }, { 119,7831 }, { 120,7831 }, { 121,7831 }, { 122,7831 }, { 123,7831 }, { 124,8089 }, { 125,7831 }, { 126,8089 }, { 127,7831 }, { 128,7831 }, { 129,7831 }, { 130,7831 }, { 131,7831 }, { 132,7831 }, { 133,7831 }, { 134,7831 }, { 135,7831 }, { 136,7831 }, { 137,7831 }, { 138,7831 }, { 139,7831 }, { 140,7831 }, { 141,7831 }, { 142,7831 }, { 143,7831 }, { 144,7831 }, { 145,7831 }, { 146,7831 }, { 147,7831 }, { 148,7831 }, { 149,7831 }, { 150,7831 }, { 151,7831 }, { 152,7831 }, { 153,7831 }, { 154,7831 }, { 155,7831 }, { 156,7831 }, { 157,7831 }, { 158,7831 }, { 159,7831 }, { 160,7831 }, { 161,7831 }, { 162,7831 }, { 163,7831 }, { 164,7831 }, { 165,7831 }, { 166,7831 }, { 167,7831 }, { 168,7831 }, { 169,7831 }, { 170,7831 }, { 171,7831 }, { 172,7831 }, { 173,7831 }, { 174,7831 }, { 175,7831 }, { 176,7831 }, { 177,7831 }, { 178,7831 }, { 179,7831 }, { 180,7831 }, { 181,7831 }, { 182,7831 }, { 183,7831 }, { 184,7831 }, { 185,7831 }, { 186,7831 }, { 187,7831 }, { 188,7831 }, { 189,7831 }, { 190,7831 }, { 191,7831 }, { 192,7831 }, { 193,7831 }, { 194,7831 }, { 195,7831 }, { 196,7831 }, { 197,7831 }, { 198,7831 }, { 199,7831 }, { 200,7831 }, { 201,7831 }, { 202,7831 }, { 203,7831 }, { 204,7831 }, { 205,7831 }, { 206,7831 }, { 207,7831 }, { 208,7831 }, { 209,7831 }, { 210,7831 }, { 211,7831 }, { 212,7831 }, { 213,7831 }, { 214,7831 }, { 215,7831 }, { 216,7831 }, { 217,7831 }, { 218,7831 }, { 219,7831 }, { 220,7831 }, { 221,7831 }, { 222,7831 }, { 223,7831 }, { 224,7831 }, { 225,7831 }, { 226,7831 }, { 227,7831 }, { 228,7831 }, { 229,7831 }, { 230,7831 }, { 231,7831 }, { 232,7831 }, { 233,7831 }, { 234,7831 }, { 235,7831 }, { 236,7831 }, { 237,7831 }, { 238,7831 }, { 239,7831 }, { 240,7831 }, { 241,7831 }, { 242,7831 }, { 243,7831 }, { 244,7831 }, { 245,7831 }, { 246,7831 }, { 247,7831 }, { 248,7831 }, { 249,7831 }, { 250,7831 }, { 251,7831 }, { 252,7831 }, { 253,7831 }, { 254,7831 }, { 255,7831 }, { 256,7831 }, { 0, 0 }, { 0,31871 }, { 1,8089 }, { 2,8089 }, { 3,8089 }, { 4,8089 }, { 5,8089 }, { 6,8089 }, { 7,8089 }, { 8,8089 }, { 9,8089 }, { 10,8089 }, { 11,8089 }, { 12,8089 }, { 13,8089 }, { 14,8089 }, { 15,8089 }, { 16,8089 }, { 17,8089 }, { 18,8089 }, { 19,8089 }, { 20,8089 }, { 21,8089 }, { 22,8089 }, { 23,8089 }, { 24,8089 }, { 25,8089 }, { 26,8089 }, { 27,8089 }, { 28,8089 }, { 29,8089 }, { 30,8089 }, { 31,8089 }, { 32,8089 }, { 33,8089 }, { 34,4685 }, { 35,8089 }, { 36,8089 }, { 37,8089 }, { 38,8089 }, { 39,8089 }, { 40,8089 }, { 41,8089 }, { 42,8089 }, { 43,8089 }, { 44,8089 }, { 45,8089 }, { 46,8089 }, { 47,8089 }, { 48,8089 }, { 49,8089 }, { 50,8089 }, { 51,8089 }, { 52,8089 }, { 53,8089 }, { 54,8089 }, { 55,8089 }, { 56,8089 }, { 57,8089 }, { 58,8089 }, { 59,8089 }, { 60,8089 }, { 61,8089 }, { 62,8089 }, { 63,8089 }, { 64,8089 }, { 65,8089 }, { 66,8089 }, { 67,8089 }, { 68,8089 }, { 69,8089 }, { 70,8089 }, { 71,8089 }, { 72,8089 }, { 73,8089 }, { 74,8089 }, { 75,8089 }, { 76,8089 }, { 77,8089 }, { 78,8089 }, { 79,8089 }, { 80,8089 }, { 81,8089 }, { 82,8089 }, { 83,8089 }, { 84,8089 }, { 85,8089 }, { 86,8089 }, { 87,8089 }, { 88,8089 }, { 89,8089 }, { 90,8089 }, { 91,8089 }, { 92,8089 }, { 93,8089 }, { 94,8089 }, { 95,8089 }, { 96,8089 }, { 97,8089 }, { 98,8089 }, { 99,8089 }, { 100,8089 }, { 101,8089 }, { 102,8089 }, { 103,8089 }, { 104,8089 }, { 105,8089 }, { 106,8089 }, { 107,8089 }, { 108,8089 }, { 109,8089 }, { 110,8089 }, { 111,8089 }, { 112,8089 }, { 113,8089 }, { 114,8089 }, { 115,8089 }, { 116,8089 }, { 117,8089 }, { 118,8089 }, { 119,8089 }, { 120,8089 }, { 121,8089 }, { 122,8089 }, { 123,8089 }, { 124,8089 }, { 125,8089 }, { 126,8089 }, { 127,8089 }, { 128,8089 }, { 129,8089 }, { 130,8089 }, { 131,8089 }, { 132,8089 }, { 133,8089 }, { 134,8089 }, { 135,8089 }, { 136,8089 }, { 137,8089 }, { 138,8089 }, { 139,8089 }, { 140,8089 }, { 141,8089 }, { 142,8089 }, { 143,8089 }, { 144,8089 }, { 145,8089 }, { 146,8089 }, { 147,8089 }, { 148,8089 }, { 149,8089 }, { 150,8089 }, { 151,8089 }, { 152,8089 }, { 153,8089 }, { 154,8089 }, { 155,8089 }, { 156,8089 }, { 157,8089 }, { 158,8089 }, { 159,8089 }, { 160,8089 }, { 161,8089 }, { 162,8089 }, { 163,8089 }, { 164,8089 }, { 165,8089 }, { 166,8089 }, { 167,8089 }, { 168,8089 }, { 169,8089 }, { 170,8089 }, { 171,8089 }, { 172,8089 }, { 173,8089 }, { 174,8089 }, { 175,8089 }, { 176,8089 }, { 177,8089 }, { 178,8089 }, { 179,8089 }, { 180,8089 }, { 181,8089 }, { 182,8089 }, { 183,8089 }, { 184,8089 }, { 185,8089 }, { 186,8089 }, { 187,8089 }, { 188,8089 }, { 189,8089 }, { 190,8089 }, { 191,8089 }, { 192,8089 }, { 193,8089 }, { 194,8089 }, { 195,8089 }, { 196,8089 }, { 197,8089 }, { 198,8089 }, { 199,8089 }, { 200,8089 }, { 201,8089 }, { 202,8089 }, { 203,8089 }, { 204,8089 }, { 205,8089 }, { 206,8089 }, { 207,8089 }, { 208,8089 }, { 209,8089 }, { 210,8089 }, { 211,8089 }, { 212,8089 }, { 213,8089 }, { 214,8089 }, { 215,8089 }, { 216,8089 }, { 217,8089 }, { 218,8089 }, { 219,8089 }, { 220,8089 }, { 221,8089 }, { 222,8089 }, { 223,8089 }, { 224,8089 }, { 225,8089 }, { 226,8089 }, { 227,8089 }, { 228,8089 }, { 229,8089 }, { 230,8089 }, { 231,8089 }, { 232,8089 }, { 233,8089 }, { 234,8089 }, { 235,8089 }, { 236,8089 }, { 237,8089 }, { 238,8089 }, { 239,8089 }, { 240,8089 }, { 241,8089 }, { 242,8089 }, { 243,8089 }, { 244,8089 }, { 245,8089 }, { 246,8089 }, { 247,8089 }, { 248,8089 }, { 249,8089 }, { 250,8089 }, { 251,8089 }, { 252,8089 }, { 253,8089 }, { 254,8089 }, { 255,8089 }, { 256,8089 }, { 0, 0 }, { 0,31613 }, { 1,7831 }, { 2,7831 }, { 3,7831 }, { 4,7831 }, { 5,7831 }, { 6,7831 }, { 7,7831 }, { 8,7831 }, { 9,7831 }, { 10,7831 }, { 11,7831 }, { 12,7831 }, { 13,7831 }, { 14,7831 }, { 15,7831 }, { 16,7831 }, { 17,7831 }, { 18,7831 }, { 19,7831 }, { 20,7831 }, { 21,7831 }, { 22,7831 }, { 23,7831 }, { 24,7831 }, { 25,7831 }, { 26,7831 }, { 27,7831 }, { 28,7831 }, { 29,7831 }, { 30,7831 }, { 31,7831 }, { 32,7831 }, { 33,7831 }, { 34,4427 }, { 35,7831 }, { 36,7831 }, { 37,7831 }, { 38,7831 }, { 39,7831 }, { 40,7831 }, { 41,7831 }, { 42,7831 }, { 43,7831 }, { 44,7831 }, { 45,7831 }, { 46,7831 }, { 47,7831 }, { 48,7831 }, { 49,7831 }, { 50,7831 }, { 51,7831 }, { 52,7831 }, { 53,7831 }, { 54,7831 }, { 55,7831 }, { 56,7831 }, { 57,7831 }, { 58,7831 }, { 59,7831 }, { 60,7831 }, { 61,7831 }, { 62,7831 }, { 63,7831 }, { 64,7831 }, { 65,7831 }, { 66,7831 }, { 67,7831 }, { 68,7831 }, { 69,7831 }, { 70,7831 }, { 71,7831 }, { 72,7831 }, { 73,7831 }, { 74,7831 }, { 75,7831 }, { 76,7831 }, { 77,7831 }, { 78,7831 }, { 79,7831 }, { 80,7831 }, { 81,7831 }, { 82,7831 }, { 83,7831 }, { 84,7831 }, { 85,7831 }, { 86,7831 }, { 87,7831 }, { 88,7831 }, { 89,7831 }, { 90,7831 }, { 91,7831 }, { 92,7831 }, { 93,7831 }, { 94,7831 }, { 95,7831 }, { 96,7831 }, { 97,7831 }, { 98,7831 }, { 99,7831 }, { 100,7831 }, { 101,7831 }, { 102,7831 }, { 103,7831 }, { 104,7831 }, { 105,7831 }, { 106,7831 }, { 107,7831 }, { 108,7831 }, { 109,7831 }, { 110,7831 }, { 111,7831 }, { 112,7831 }, { 113,7831 }, { 114,7831 }, { 115,7831 }, { 116,7831 }, { 117,7831 }, { 118,7831 }, { 119,7831 }, { 120,7831 }, { 121,7831 }, { 122,7831 }, { 123,7831 }, { 124,7831 }, { 125,7831 }, { 126,7831 }, { 127,7831 }, { 128,7831 }, { 129,7831 }, { 130,7831 }, { 131,7831 }, { 132,7831 }, { 133,7831 }, { 134,7831 }, { 135,7831 }, { 136,7831 }, { 137,7831 }, { 138,7831 }, { 139,7831 }, { 140,7831 }, { 141,7831 }, { 142,7831 }, { 143,7831 }, { 144,7831 }, { 145,7831 }, { 146,7831 }, { 147,7831 }, { 148,7831 }, { 149,7831 }, { 150,7831 }, { 151,7831 }, { 152,7831 }, { 153,7831 }, { 154,7831 }, { 155,7831 }, { 156,7831 }, { 157,7831 }, { 158,7831 }, { 159,7831 }, { 160,7831 }, { 161,7831 }, { 162,7831 }, { 163,7831 }, { 164,7831 }, { 165,7831 }, { 166,7831 }, { 167,7831 }, { 168,7831 }, { 169,7831 }, { 170,7831 }, { 171,7831 }, { 172,7831 }, { 173,7831 }, { 174,7831 }, { 175,7831 }, { 176,7831 }, { 177,7831 }, { 178,7831 }, { 179,7831 }, { 180,7831 }, { 181,7831 }, { 182,7831 }, { 183,7831 }, { 184,7831 }, { 185,7831 }, { 186,7831 }, { 187,7831 }, { 188,7831 }, { 189,7831 }, { 190,7831 }, { 191,7831 }, { 192,7831 }, { 193,7831 }, { 194,7831 }, { 195,7831 }, { 196,7831 }, { 197,7831 }, { 198,7831 }, { 199,7831 }, { 200,7831 }, { 201,7831 }, { 202,7831 }, { 203,7831 }, { 204,7831 }, { 205,7831 }, { 206,7831 }, { 207,7831 }, { 208,7831 }, { 209,7831 }, { 210,7831 }, { 211,7831 }, { 212,7831 }, { 213,7831 }, { 214,7831 }, { 215,7831 }, { 216,7831 }, { 217,7831 }, { 218,7831 }, { 219,7831 }, { 220,7831 }, { 221,7831 }, { 222,7831 }, { 223,7831 }, { 224,7831 }, { 225,7831 }, { 226,7831 }, { 227,7831 }, { 228,7831 }, { 229,7831 }, { 230,7831 }, { 231,7831 }, { 232,7831 }, { 233,7831 }, { 234,7831 }, { 235,7831 }, { 236,7831 }, { 237,7831 }, { 238,7831 }, { 239,7831 }, { 240,7831 }, { 241,7831 }, { 242,7831 }, { 243,7831 }, { 244,7831 }, { 245,7831 }, { 246,7831 }, { 247,7831 }, { 248,7831 }, { 249,7831 }, { 250,7831 }, { 251,7831 }, { 252,7831 }, { 253,7831 }, { 254,7831 }, { 255,7831 }, { 256,7831 }, { 0, 10 }, { 0,31355 }, { 1,7831 }, { 2,7831 }, { 3,7831 }, { 4,7831 }, { 5,7831 }, { 6,7831 }, { 7,7831 }, { 8,7831 }, { 9,7831 }, { 10,7831 }, { 11,7831 }, { 12,7831 }, { 13,7831 }, { 14,7831 }, { 15,7831 }, { 16,7831 }, { 17,7831 }, { 18,7831 }, { 19,7831 }, { 20,7831 }, { 21,7831 }, { 22,7831 }, { 23,7831 }, { 24,7831 }, { 25,7831 }, { 26,7831 }, { 27,7831 }, { 28,7831 }, { 29,7831 }, { 30,7831 }, { 31,7831 }, { 32,7831 }, { 33,7831 }, { 34,7831 }, { 35,7831 }, { 36,7831 }, { 37,7831 }, { 38,7831 }, { 39,4157 }, { 40,7831 }, { 41,7831 }, { 42,7831 }, { 43,7831 }, { 44,7831 }, { 45,7831 }, { 46,7831 }, { 47,7831 }, { 48,7831 }, { 49,7831 }, { 50,7831 }, { 51,7831 }, { 52,7831 }, { 53,7831 }, { 54,7831 }, { 55,7831 }, { 56,7831 }, { 57,7831 }, { 58,7831 }, { 59,7831 }, { 60,7831 }, { 61,7831 }, { 62,7831 }, { 63,7831 }, { 64,7831 }, { 65,7831 }, { 66,7831 }, { 67,7831 }, { 68,7831 }, { 69,7831 }, { 70,7831 }, { 71,7831 }, { 72,7831 }, { 73,7831 }, { 74,7831 }, { 75,7831 }, { 76,7831 }, { 77,7831 }, { 78,7831 }, { 79,7831 }, { 80,7831 }, { 81,7831 }, { 82,7831 }, { 83,7831 }, { 84,7831 }, { 85,7831 }, { 86,7831 }, { 87,7831 }, { 88,7831 }, { 89,7831 }, { 90,7831 }, { 91,7831 }, { 92,7831 }, { 93,7831 }, { 94,7831 }, { 95,7831 }, { 96,7831 }, { 97,7831 }, { 98,7831 }, { 99,7831 }, { 100,7831 }, { 101,7831 }, { 102,7831 }, { 103,7831 }, { 104,7831 }, { 105,7831 }, { 106,7831 }, { 107,7831 }, { 108,7831 }, { 109,7831 }, { 110,7831 }, { 111,7831 }, { 112,7831 }, { 113,7831 }, { 114,7831 }, { 115,7831 }, { 116,7831 }, { 117,7831 }, { 118,7831 }, { 119,7831 }, { 120,7831 }, { 121,7831 }, { 122,7831 }, { 123,7831 }, { 124,7831 }, { 125,7831 }, { 126,7831 }, { 127,7831 }, { 128,7831 }, { 129,7831 }, { 130,7831 }, { 131,7831 }, { 132,7831 }, { 133,7831 }, { 134,7831 }, { 135,7831 }, { 136,7831 }, { 137,7831 }, { 138,7831 }, { 139,7831 }, { 140,7831 }, { 141,7831 }, { 142,7831 }, { 143,7831 }, { 144,7831 }, { 145,7831 }, { 146,7831 }, { 147,7831 }, { 148,7831 }, { 149,7831 }, { 150,7831 }, { 151,7831 }, { 152,7831 }, { 153,7831 }, { 154,7831 }, { 155,7831 }, { 156,7831 }, { 157,7831 }, { 158,7831 }, { 159,7831 }, { 160,7831 }, { 161,7831 }, { 162,7831 }, { 163,7831 }, { 164,7831 }, { 165,7831 }, { 166,7831 }, { 167,7831 }, { 168,7831 }, { 169,7831 }, { 170,7831 }, { 171,7831 }, { 172,7831 }, { 173,7831 }, { 174,7831 }, { 175,7831 }, { 176,7831 }, { 177,7831 }, { 178,7831 }, { 179,7831 }, { 180,7831 }, { 181,7831 }, { 182,7831 }, { 183,7831 }, { 184,7831 }, { 185,7831 }, { 186,7831 }, { 187,7831 }, { 188,7831 }, { 189,7831 }, { 190,7831 }, { 191,7831 }, { 192,7831 }, { 193,7831 }, { 194,7831 }, { 195,7831 }, { 196,7831 }, { 197,7831 }, { 198,7831 }, { 199,7831 }, { 200,7831 }, { 201,7831 }, { 202,7831 }, { 203,7831 }, { 204,7831 }, { 205,7831 }, { 206,7831 }, { 207,7831 }, { 208,7831 }, { 209,7831 }, { 210,7831 }, { 211,7831 }, { 212,7831 }, { 213,7831 }, { 214,7831 }, { 215,7831 }, { 216,7831 }, { 217,7831 }, { 218,7831 }, { 219,7831 }, { 220,7831 }, { 221,7831 }, { 222,7831 }, { 223,7831 }, { 224,7831 }, { 225,7831 }, { 226,7831 }, { 227,7831 }, { 228,7831 }, { 229,7831 }, { 230,7831 }, { 231,7831 }, { 232,7831 }, { 233,7831 }, { 234,7831 }, { 235,7831 }, { 236,7831 }, { 237,7831 }, { 238,7831 }, { 239,7831 }, { 240,7831 }, { 241,7831 }, { 242,7831 }, { 243,7831 }, { 244,7831 }, { 245,7831 }, { 246,7831 }, { 247,7831 }, { 248,7831 }, { 249,7831 }, { 250,7831 }, { 251,7831 }, { 252,7831 }, { 253,7831 }, { 254,7831 }, { 255,7831 }, { 256,7831 }, { 0, 10 }, { 0,31097 }, { 1,7573 }, { 2,7573 }, { 3,7573 }, { 4,7573 }, { 5,7573 }, { 6,7573 }, { 7,7573 }, { 8,7573 }, { 9,7573 }, { 10,7573 }, { 11,7573 }, { 12,7573 }, { 13,7573 }, { 14,7573 }, { 15,7573 }, { 16,7573 }, { 17,7573 }, { 18,7573 }, { 19,7573 }, { 20,7573 }, { 21,7573 }, { 22,7573 }, { 23,7573 }, { 24,7573 }, { 25,7573 }, { 26,7573 }, { 27,7573 }, { 28,7573 }, { 29,7573 }, { 30,7573 }, { 31,7573 }, { 32,7573 }, { 33,7573 }, { 34,7573 }, { 35,7573 }, { 36,7573 }, { 37,7573 }, { 38,7573 }, { 39,3899 }, { 40,7573 }, { 41,7573 }, { 42,7573 }, { 43,7573 }, { 44,7573 }, { 45,7573 }, { 46,7573 }, { 47,7573 }, { 48,7573 }, { 49,7573 }, { 50,7573 }, { 51,7573 }, { 52,7573 }, { 53,7573 }, { 54,7573 }, { 55,7573 }, { 56,7573 }, { 57,7573 }, { 58,7573 }, { 59,7573 }, { 60,7573 }, { 61,7573 }, { 62,7573 }, { 63,7573 }, { 64,7573 }, { 65,7573 }, { 66,7573 }, { 67,7573 }, { 68,7573 }, { 69,7573 }, { 70,7573 }, { 71,7573 }, { 72,7573 }, { 73,7573 }, { 74,7573 }, { 75,7573 }, { 76,7573 }, { 77,7573 }, { 78,7573 }, { 79,7573 }, { 80,7573 }, { 81,7573 }, { 82,7573 }, { 83,7573 }, { 84,7573 }, { 85,7573 }, { 86,7573 }, { 87,7573 }, { 88,7573 }, { 89,7573 }, { 90,7573 }, { 91,7573 }, { 92,7573 }, { 93,7573 }, { 94,7573 }, { 95,7573 }, { 96,7573 }, { 97,7573 }, { 98,7573 }, { 99,7573 }, { 100,7573 }, { 101,7573 }, { 102,7573 }, { 103,7573 }, { 104,7573 }, { 105,7573 }, { 106,7573 }, { 107,7573 }, { 108,7573 }, { 109,7573 }, { 110,7573 }, { 111,7573 }, { 112,7573 }, { 113,7573 }, { 114,7573 }, { 115,7573 }, { 116,7573 }, { 117,7573 }, { 118,7573 }, { 119,7573 }, { 120,7573 }, { 121,7573 }, { 122,7573 }, { 123,7573 }, { 124,7573 }, { 125,7573 }, { 126,7573 }, { 127,7573 }, { 128,7573 }, { 129,7573 }, { 130,7573 }, { 131,7573 }, { 132,7573 }, { 133,7573 }, { 134,7573 }, { 135,7573 }, { 136,7573 }, { 137,7573 }, { 138,7573 }, { 139,7573 }, { 140,7573 }, { 141,7573 }, { 142,7573 }, { 143,7573 }, { 144,7573 }, { 145,7573 }, { 146,7573 }, { 147,7573 }, { 148,7573 }, { 149,7573 }, { 150,7573 }, { 151,7573 }, { 152,7573 }, { 153,7573 }, { 154,7573 }, { 155,7573 }, { 156,7573 }, { 157,7573 }, { 158,7573 }, { 159,7573 }, { 160,7573 }, { 161,7573 }, { 162,7573 }, { 163,7573 }, { 164,7573 }, { 165,7573 }, { 166,7573 }, { 167,7573 }, { 168,7573 }, { 169,7573 }, { 170,7573 }, { 171,7573 }, { 172,7573 }, { 173,7573 }, { 174,7573 }, { 175,7573 }, { 176,7573 }, { 177,7573 }, { 178,7573 }, { 179,7573 }, { 180,7573 }, { 181,7573 }, { 182,7573 }, { 183,7573 }, { 184,7573 }, { 185,7573 }, { 186,7573 }, { 187,7573 }, { 188,7573 }, { 189,7573 }, { 190,7573 }, { 191,7573 }, { 192,7573 }, { 193,7573 }, { 194,7573 }, { 195,7573 }, { 196,7573 }, { 197,7573 }, { 198,7573 }, { 199,7573 }, { 200,7573 }, { 201,7573 }, { 202,7573 }, { 203,7573 }, { 204,7573 }, { 205,7573 }, { 206,7573 }, { 207,7573 }, { 208,7573 }, { 209,7573 }, { 210,7573 }, { 211,7573 }, { 212,7573 }, { 213,7573 }, { 214,7573 }, { 215,7573 }, { 216,7573 }, { 217,7573 }, { 218,7573 }, { 219,7573 }, { 220,7573 }, { 221,7573 }, { 222,7573 }, { 223,7573 }, { 224,7573 }, { 225,7573 }, { 226,7573 }, { 227,7573 }, { 228,7573 }, { 229,7573 }, { 230,7573 }, { 231,7573 }, { 232,7573 }, { 233,7573 }, { 234,7573 }, { 235,7573 }, { 236,7573 }, { 237,7573 }, { 238,7573 }, { 239,7573 }, { 240,7573 }, { 241,7573 }, { 242,7573 }, { 243,7573 }, { 244,7573 }, { 245,7573 }, { 246,7573 }, { 247,7573 }, { 248,7573 }, { 249,7573 }, { 250,7573 }, { 251,7573 }, { 252,7573 }, { 253,7573 }, { 254,7573 }, { 255,7573 }, { 256,7573 }, { 0, 0 }, { 0,30839 }, { 1,7573 }, { 2,7573 }, { 3,7573 }, { 4,7573 }, { 5,7573 }, { 6,7573 }, { 7,7573 }, { 8,7573 }, { 9,7573 }, { 10,7573 }, { 11,7573 }, { 12,7573 }, { 13,7573 }, { 14,7573 }, { 15,7573 }, { 16,7573 }, { 17,7573 }, { 18,7573 }, { 19,7573 }, { 20,7573 }, { 21,7573 }, { 22,7573 }, { 23,7573 }, { 24,7573 }, { 25,7573 }, { 26,7573 }, { 27,7573 }, { 28,7573 }, { 29,7573 }, { 30,7573 }, { 31,7573 }, { 32,7573 }, { 33,7573 }, { 34,7573 }, { 35,7573 }, { 36,7573 }, { 37,7573 }, { 38,7573 }, { 39,3670 }, { 40,7573 }, { 41,7573 }, { 42,7573 }, { 43,7573 }, { 44,7573 }, { 45,7573 }, { 46,7573 }, { 47,7573 }, { 48,7573 }, { 49,7573 }, { 50,7573 }, { 51,7573 }, { 52,7573 }, { 53,7573 }, { 54,7573 }, { 55,7573 }, { 56,7573 }, { 57,7573 }, { 58,7573 }, { 59,7573 }, { 60,7573 }, { 61,7573 }, { 62,7573 }, { 63,7573 }, { 64,7573 }, { 65,7573 }, { 66,7573 }, { 67,7573 }, { 68,7573 }, { 69,7573 }, { 70,7573 }, { 71,7573 }, { 72,7573 }, { 73,7573 }, { 74,7573 }, { 75,7573 }, { 76,7573 }, { 77,7573 }, { 78,7573 }, { 79,7573 }, { 80,7573 }, { 81,7573 }, { 82,7573 }, { 83,7573 }, { 84,7573 }, { 85,7573 }, { 86,7573 }, { 87,7573 }, { 88,7573 }, { 89,7573 }, { 90,7573 }, { 91,7573 }, { 92,7573 }, { 93,7573 }, { 94,7573 }, { 95,7573 }, { 96,7573 }, { 97,7573 }, { 98,7573 }, { 99,7573 }, { 100,7573 }, { 101,7573 }, { 102,7573 }, { 103,7573 }, { 104,7573 }, { 105,7573 }, { 106,7573 }, { 107,7573 }, { 108,7573 }, { 109,7573 }, { 110,7573 }, { 111,7573 }, { 112,7573 }, { 113,7573 }, { 114,7573 }, { 115,7573 }, { 116,7573 }, { 117,7573 }, { 118,7573 }, { 119,7573 }, { 120,7573 }, { 121,7573 }, { 122,7573 }, { 123,7573 }, { 124,7573 }, { 125,7573 }, { 126,7573 }, { 127,7573 }, { 128,7573 }, { 129,7573 }, { 130,7573 }, { 131,7573 }, { 132,7573 }, { 133,7573 }, { 134,7573 }, { 135,7573 }, { 136,7573 }, { 137,7573 }, { 138,7573 }, { 139,7573 }, { 140,7573 }, { 141,7573 }, { 142,7573 }, { 143,7573 }, { 144,7573 }, { 145,7573 }, { 146,7573 }, { 147,7573 }, { 148,7573 }, { 149,7573 }, { 150,7573 }, { 151,7573 }, { 152,7573 }, { 153,7573 }, { 154,7573 }, { 155,7573 }, { 156,7573 }, { 157,7573 }, { 158,7573 }, { 159,7573 }, { 160,7573 }, { 161,7573 }, { 162,7573 }, { 163,7573 }, { 164,7573 }, { 165,7573 }, { 166,7573 }, { 167,7573 }, { 168,7573 }, { 169,7573 }, { 170,7573 }, { 171,7573 }, { 172,7573 }, { 173,7573 }, { 174,7573 }, { 175,7573 }, { 176,7573 }, { 177,7573 }, { 178,7573 }, { 179,7573 }, { 180,7573 }, { 181,7573 }, { 182,7573 }, { 183,7573 }, { 184,7573 }, { 185,7573 }, { 186,7573 }, { 187,7573 }, { 188,7573 }, { 189,7573 }, { 190,7573 }, { 191,7573 }, { 192,7573 }, { 193,7573 }, { 194,7573 }, { 195,7573 }, { 196,7573 }, { 197,7573 }, { 198,7573 }, { 199,7573 }, { 200,7573 }, { 201,7573 }, { 202,7573 }, { 203,7573 }, { 204,7573 }, { 205,7573 }, { 206,7573 }, { 207,7573 }, { 208,7573 }, { 209,7573 }, { 210,7573 }, { 211,7573 }, { 212,7573 }, { 213,7573 }, { 214,7573 }, { 215,7573 }, { 216,7573 }, { 217,7573 }, { 218,7573 }, { 219,7573 }, { 220,7573 }, { 221,7573 }, { 222,7573 }, { 223,7573 }, { 224,7573 }, { 225,7573 }, { 226,7573 }, { 227,7573 }, { 228,7573 }, { 229,7573 }, { 230,7573 }, { 231,7573 }, { 232,7573 }, { 233,7573 }, { 234,7573 }, { 235,7573 }, { 236,7573 }, { 237,7573 }, { 238,7573 }, { 239,7573 }, { 240,7573 }, { 241,7573 }, { 242,7573 }, { 243,7573 }, { 244,7573 }, { 245,7573 }, { 246,7573 }, { 247,7573 }, { 248,7573 }, { 249,7573 }, { 250,7573 }, { 251,7573 }, { 252,7573 }, { 253,7573 }, { 254,7573 }, { 255,7573 }, { 256,7573 }, { 0, 0 }, { 0,30581 }, { 1,7315 }, { 2,7315 }, { 3,7315 }, { 4,7315 }, { 5,7315 }, { 6,7315 }, { 7,7315 }, { 8,7315 }, { 9,7315 }, { 10,7315 }, { 11,7315 }, { 12,7315 }, { 13,7315 }, { 14,7315 }, { 15,7315 }, { 16,7315 }, { 17,7315 }, { 18,7315 }, { 19,7315 }, { 20,7315 }, { 21,7315 }, { 22,7315 }, { 23,7315 }, { 24,7315 }, { 25,7315 }, { 26,7315 }, { 27,7315 }, { 28,7315 }, { 29,7315 }, { 30,7315 }, { 31,7315 }, { 32,7315 }, { 33,7315 }, { 34,7315 }, { 35,7315 }, { 36,7315 }, { 37,7315 }, { 38,7315 }, { 39,3412 }, { 40,7315 }, { 41,7315 }, { 42,7315 }, { 43,7315 }, { 44,7315 }, { 45,7315 }, { 46,7315 }, { 47,7315 }, { 48,7315 }, { 49,7315 }, { 50,7315 }, { 51,7315 }, { 52,7315 }, { 53,7315 }, { 54,7315 }, { 55,7315 }, { 56,7315 }, { 57,7315 }, { 58,7315 }, { 59,7315 }, { 60,7315 }, { 61,7315 }, { 62,7315 }, { 63,7315 }, { 64,7315 }, { 65,7315 }, { 66,7315 }, { 67,7315 }, { 68,7315 }, { 69,7315 }, { 70,7315 }, { 71,7315 }, { 72,7315 }, { 73,7315 }, { 74,7315 }, { 75,7315 }, { 76,7315 }, { 77,7315 }, { 78,7315 }, { 79,7315 }, { 80,7315 }, { 81,7315 }, { 82,7315 }, { 83,7315 }, { 84,7315 }, { 85,7315 }, { 86,7315 }, { 87,7315 }, { 88,7315 }, { 89,7315 }, { 90,7315 }, { 91,7315 }, { 92,7315 }, { 93,7315 }, { 94,7315 }, { 95,7315 }, { 96,7315 }, { 97,7315 }, { 98,7315 }, { 99,7315 }, { 100,7315 }, { 101,7315 }, { 102,7315 }, { 103,7315 }, { 104,7315 }, { 105,7315 }, { 106,7315 }, { 107,7315 }, { 108,7315 }, { 109,7315 }, { 110,7315 }, { 111,7315 }, { 112,7315 }, { 113,7315 }, { 114,7315 }, { 115,7315 }, { 116,7315 }, { 117,7315 }, { 118,7315 }, { 119,7315 }, { 120,7315 }, { 121,7315 }, { 122,7315 }, { 123,7315 }, { 124,7315 }, { 125,7315 }, { 126,7315 }, { 127,7315 }, { 128,7315 }, { 129,7315 }, { 130,7315 }, { 131,7315 }, { 132,7315 }, { 133,7315 }, { 134,7315 }, { 135,7315 }, { 136,7315 }, { 137,7315 }, { 138,7315 }, { 139,7315 }, { 140,7315 }, { 141,7315 }, { 142,7315 }, { 143,7315 }, { 144,7315 }, { 145,7315 }, { 146,7315 }, { 147,7315 }, { 148,7315 }, { 149,7315 }, { 150,7315 }, { 151,7315 }, { 152,7315 }, { 153,7315 }, { 154,7315 }, { 155,7315 }, { 156,7315 }, { 157,7315 }, { 158,7315 }, { 159,7315 }, { 160,7315 }, { 161,7315 }, { 162,7315 }, { 163,7315 }, { 164,7315 }, { 165,7315 }, { 166,7315 }, { 167,7315 }, { 168,7315 }, { 169,7315 }, { 170,7315 }, { 171,7315 }, { 172,7315 }, { 173,7315 }, { 174,7315 }, { 175,7315 }, { 176,7315 }, { 177,7315 }, { 178,7315 }, { 179,7315 }, { 180,7315 }, { 181,7315 }, { 182,7315 }, { 183,7315 }, { 184,7315 }, { 185,7315 }, { 186,7315 }, { 187,7315 }, { 188,7315 }, { 189,7315 }, { 190,7315 }, { 191,7315 }, { 192,7315 }, { 193,7315 }, { 194,7315 }, { 195,7315 }, { 196,7315 }, { 197,7315 }, { 198,7315 }, { 199,7315 }, { 200,7315 }, { 201,7315 }, { 202,7315 }, { 203,7315 }, { 204,7315 }, { 205,7315 }, { 206,7315 }, { 207,7315 }, { 208,7315 }, { 209,7315 }, { 210,7315 }, { 211,7315 }, { 212,7315 }, { 213,7315 }, { 214,7315 }, { 215,7315 }, { 216,7315 }, { 217,7315 }, { 218,7315 }, { 219,7315 }, { 220,7315 }, { 221,7315 }, { 222,7315 }, { 223,7315 }, { 224,7315 }, { 225,7315 }, { 226,7315 }, { 227,7315 }, { 228,7315 }, { 229,7315 }, { 230,7315 }, { 231,7315 }, { 232,7315 }, { 233,7315 }, { 234,7315 }, { 235,7315 }, { 236,7315 }, { 237,7315 }, { 238,7315 }, { 239,7315 }, { 240,7315 }, { 241,7315 }, { 242,7315 }, { 243,7315 }, { 244,7315 }, { 245,7315 }, { 246,7315 }, { 247,7315 }, { 248,7315 }, { 249,7315 }, { 250,7315 }, { 251,7315 }, { 252,7315 }, { 253,7315 }, { 254,7315 }, { 255,7315 }, { 256,7315 }, { 0, 19 }, { 0,30323 }, { 1,3156 }, { 2,3156 }, { 3,3156 }, { 4,3156 }, { 5,3156 }, { 6,3156 }, { 7,3156 }, { 8,3156 }, { 9,7315 }, { 10,7320 }, { 11,7315 }, { 12,7315 }, { 13,7344 }, { 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,7315 }, { 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,30065 }, { 1,2898 }, { 2,2898 }, { 3,2898 }, { 4,2898 }, { 5,2898 }, { 6,2898 }, { 7,2898 }, { 8,2898 }, { 9,7057 }, { 10,7062 }, { 11,7057 }, { 12,7057 }, { 13,7086 }, { 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,7057 }, { 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,29807 }, { 1,6875 }, { 2,6875 }, { 3,6875 }, { 4,6875 }, { 5,6875 }, { 6,6875 }, { 7,6875 }, { 8,6875 }, { 9,6875 }, { 10,7133 }, { 11,6875 }, { 12,6875 }, { 13,6875 }, { 14,6875 }, { 15,6875 }, { 16,6875 }, { 17,6875 }, { 18,6875 }, { 19,6875 }, { 20,6875 }, { 21,6875 }, { 22,6875 }, { 23,6875 }, { 24,6875 }, { 25,6875 }, { 26,6875 }, { 27,6875 }, { 28,6875 }, { 29,6875 }, { 30,6875 }, { 31,6875 }, { 32,6875 }, { 33,6875 }, { 34,6875 }, { 35,6875 }, { 36,6875 }, { 37,6875 }, { 38,6875 }, { 39,2645 }, { 40,6875 }, { 41,6875 }, { 42,6875 }, { 43,6875 }, { 44,6875 }, { 45,6875 }, { 46,6875 }, { 47,6875 }, { 48,6875 }, { 49,6875 }, { 50,6875 }, { 51,6875 }, { 52,6875 }, { 53,6875 }, { 54,6875 }, { 55,6875 }, { 56,6875 }, { 57,6875 }, { 58,6875 }, { 59,6875 }, { 60,6875 }, { 61,6875 }, { 62,6875 }, { 63,6875 }, { 64,6875 }, { 65,6875 }, { 66,6875 }, { 67,6875 }, { 68,6875 }, { 69,6875 }, { 70,6875 }, { 71,6875 }, { 72,6875 }, { 73,6875 }, { 74,6875 }, { 75,6875 }, { 76,6875 }, { 77,6875 }, { 78,6875 }, { 79,6875 }, { 80,6875 }, { 81,6875 }, { 82,6875 }, { 83,6875 }, { 84,6875 }, { 85,6875 }, { 86,6875 }, { 87,6875 }, { 88,6875 }, { 89,6875 }, { 90,6875 }, { 91,6875 }, { 92,7391 }, { 93,6875 }, { 94,6875 }, { 95,6875 }, { 96,6875 }, { 97,6875 }, { 98,6875 }, { 99,6875 }, { 100,6875 }, { 101,6875 }, { 102,6875 }, { 103,6875 }, { 104,6875 }, { 105,6875 }, { 106,6875 }, { 107,6875 }, { 108,6875 }, { 109,6875 }, { 110,6875 }, { 111,6875 }, { 112,6875 }, { 113,6875 }, { 114,6875 }, { 115,6875 }, { 116,6875 }, { 117,6875 }, { 118,6875 }, { 119,6875 }, { 120,6875 }, { 121,6875 }, { 122,6875 }, { 123,6875 }, { 124,6875 }, { 125,6875 }, { 126,6875 }, { 127,6875 }, { 128,6875 }, { 129,6875 }, { 130,6875 }, { 131,6875 }, { 132,6875 }, { 133,6875 }, { 134,6875 }, { 135,6875 }, { 136,6875 }, { 137,6875 }, { 138,6875 }, { 139,6875 }, { 140,6875 }, { 141,6875 }, { 142,6875 }, { 143,6875 }, { 144,6875 }, { 145,6875 }, { 146,6875 }, { 147,6875 }, { 148,6875 }, { 149,6875 }, { 150,6875 }, { 151,6875 }, { 152,6875 }, { 153,6875 }, { 154,6875 }, { 155,6875 }, { 156,6875 }, { 157,6875 }, { 158,6875 }, { 159,6875 }, { 160,6875 }, { 161,6875 }, { 162,6875 }, { 163,6875 }, { 164,6875 }, { 165,6875 }, { 166,6875 }, { 167,6875 }, { 168,6875 }, { 169,6875 }, { 170,6875 }, { 171,6875 }, { 172,6875 }, { 173,6875 }, { 174,6875 }, { 175,6875 }, { 176,6875 }, { 177,6875 }, { 178,6875 }, { 179,6875 }, { 180,6875 }, { 181,6875 }, { 182,6875 }, { 183,6875 }, { 184,6875 }, { 185,6875 }, { 186,6875 }, { 187,6875 }, { 188,6875 }, { 189,6875 }, { 190,6875 }, { 191,6875 }, { 192,6875 }, { 193,6875 }, { 194,6875 }, { 195,6875 }, { 196,6875 }, { 197,6875 }, { 198,6875 }, { 199,6875 }, { 200,6875 }, { 201,6875 }, { 202,6875 }, { 203,6875 }, { 204,6875 }, { 205,6875 }, { 206,6875 }, { 207,6875 }, { 208,6875 }, { 209,6875 }, { 210,6875 }, { 211,6875 }, { 212,6875 }, { 213,6875 }, { 214,6875 }, { 215,6875 }, { 216,6875 }, { 217,6875 }, { 218,6875 }, { 219,6875 }, { 220,6875 }, { 221,6875 }, { 222,6875 }, { 223,6875 }, { 224,6875 }, { 225,6875 }, { 226,6875 }, { 227,6875 }, { 228,6875 }, { 229,6875 }, { 230,6875 }, { 231,6875 }, { 232,6875 }, { 233,6875 }, { 234,6875 }, { 235,6875 }, { 236,6875 }, { 237,6875 }, { 238,6875 }, { 239,6875 }, { 240,6875 }, { 241,6875 }, { 242,6875 }, { 243,6875 }, { 244,6875 }, { 245,6875 }, { 246,6875 }, { 247,6875 }, { 248,6875 }, { 249,6875 }, { 250,6875 }, { 251,6875 }, { 252,6875 }, { 253,6875 }, { 254,6875 }, { 255,6875 }, { 256,6875 }, { 0, 0 }, { 0,29549 }, { 1,6617 }, { 2,6617 }, { 3,6617 }, { 4,6617 }, { 5,6617 }, { 6,6617 }, { 7,6617 }, { 8,6617 }, { 9,6617 }, { 10,6875 }, { 11,6617 }, { 12,6617 }, { 13,6617 }, { 14,6617 }, { 15,6617 }, { 16,6617 }, { 17,6617 }, { 18,6617 }, { 19,6617 }, { 20,6617 }, { 21,6617 }, { 22,6617 }, { 23,6617 }, { 24,6617 }, { 25,6617 }, { 26,6617 }, { 27,6617 }, { 28,6617 }, { 29,6617 }, { 30,6617 }, { 31,6617 }, { 32,6617 }, { 33,6617 }, { 34,6617 }, { 35,6617 }, { 36,6617 }, { 37,6617 }, { 38,6617 }, { 39,2387 }, { 40,6617 }, { 41,6617 }, { 42,6617 }, { 43,6617 }, { 44,6617 }, { 45,6617 }, { 46,6617 }, { 47,6617 }, { 48,6617 }, { 49,6617 }, { 50,6617 }, { 51,6617 }, { 52,6617 }, { 53,6617 }, { 54,6617 }, { 55,6617 }, { 56,6617 }, { 57,6617 }, { 58,6617 }, { 59,6617 }, { 60,6617 }, { 61,6617 }, { 62,6617 }, { 63,6617 }, { 64,6617 }, { 65,6617 }, { 66,6617 }, { 67,6617 }, { 68,6617 }, { 69,6617 }, { 70,6617 }, { 71,6617 }, { 72,6617 }, { 73,6617 }, { 74,6617 }, { 75,6617 }, { 76,6617 }, { 77,6617 }, { 78,6617 }, { 79,6617 }, { 80,6617 }, { 81,6617 }, { 82,6617 }, { 83,6617 }, { 84,6617 }, { 85,6617 }, { 86,6617 }, { 87,6617 }, { 88,6617 }, { 89,6617 }, { 90,6617 }, { 91,6617 }, { 92,7133 }, { 93,6617 }, { 94,6617 }, { 95,6617 }, { 96,6617 }, { 97,6617 }, { 98,6617 }, { 99,6617 }, { 100,6617 }, { 101,6617 }, { 102,6617 }, { 103,6617 }, { 104,6617 }, { 105,6617 }, { 106,6617 }, { 107,6617 }, { 108,6617 }, { 109,6617 }, { 110,6617 }, { 111,6617 }, { 112,6617 }, { 113,6617 }, { 114,6617 }, { 115,6617 }, { 116,6617 }, { 117,6617 }, { 118,6617 }, { 119,6617 }, { 120,6617 }, { 121,6617 }, { 122,6617 }, { 123,6617 }, { 124,6617 }, { 125,6617 }, { 126,6617 }, { 127,6617 }, { 128,6617 }, { 129,6617 }, { 130,6617 }, { 131,6617 }, { 132,6617 }, { 133,6617 }, { 134,6617 }, { 135,6617 }, { 136,6617 }, { 137,6617 }, { 138,6617 }, { 139,6617 }, { 140,6617 }, { 141,6617 }, { 142,6617 }, { 143,6617 }, { 144,6617 }, { 145,6617 }, { 146,6617 }, { 147,6617 }, { 148,6617 }, { 149,6617 }, { 150,6617 }, { 151,6617 }, { 152,6617 }, { 153,6617 }, { 154,6617 }, { 155,6617 }, { 156,6617 }, { 157,6617 }, { 158,6617 }, { 159,6617 }, { 160,6617 }, { 161,6617 }, { 162,6617 }, { 163,6617 }, { 164,6617 }, { 165,6617 }, { 166,6617 }, { 167,6617 }, { 168,6617 }, { 169,6617 }, { 170,6617 }, { 171,6617 }, { 172,6617 }, { 173,6617 }, { 174,6617 }, { 175,6617 }, { 176,6617 }, { 177,6617 }, { 178,6617 }, { 179,6617 }, { 180,6617 }, { 181,6617 }, { 182,6617 }, { 183,6617 }, { 184,6617 }, { 185,6617 }, { 186,6617 }, { 187,6617 }, { 188,6617 }, { 189,6617 }, { 190,6617 }, { 191,6617 }, { 192,6617 }, { 193,6617 }, { 194,6617 }, { 195,6617 }, { 196,6617 }, { 197,6617 }, { 198,6617 }, { 199,6617 }, { 200,6617 }, { 201,6617 }, { 202,6617 }, { 203,6617 }, { 204,6617 }, { 205,6617 }, { 206,6617 }, { 207,6617 }, { 208,6617 }, { 209,6617 }, { 210,6617 }, { 211,6617 }, { 212,6617 }, { 213,6617 }, { 214,6617 }, { 215,6617 }, { 216,6617 }, { 217,6617 }, { 218,6617 }, { 219,6617 }, { 220,6617 }, { 221,6617 }, { 222,6617 }, { 223,6617 }, { 224,6617 }, { 225,6617 }, { 226,6617 }, { 227,6617 }, { 228,6617 }, { 229,6617 }, { 230,6617 }, { 231,6617 }, { 232,6617 }, { 233,6617 }, { 234,6617 }, { 235,6617 }, { 236,6617 }, { 237,6617 }, { 238,6617 }, { 239,6617 }, { 240,6617 }, { 241,6617 }, { 242,6617 }, { 243,6617 }, { 244,6617 }, { 245,6617 }, { 246,6617 }, { 247,6617 }, { 248,6617 }, { 249,6617 }, { 250,6617 }, { 251,6617 }, { 252,6617 }, { 253,6617 }, { 254,6617 }, { 255,6617 }, { 256,6617 }, { 0, 0 }, { 0,29291 }, { 1,7133 }, { 2,7133 }, { 3,7133 }, { 4,7133 }, { 5,7133 }, { 6,7133 }, { 7,7133 }, { 8,7133 }, { 9,7133 }, { 10,7391 }, { 11,7133 }, { 12,7133 }, { 13,7133 }, { 14,7133 }, { 15,7133 }, { 16,7133 }, { 17,7133 }, { 18,7133 }, { 19,7133 }, { 20,7133 }, { 21,7133 }, { 22,7133 }, { 23,7133 }, { 24,7133 }, { 25,7133 }, { 26,7133 }, { 27,7133 }, { 28,7133 }, { 29,7133 }, { 30,7133 }, { 31,7133 }, { 32,7133 }, { 33,7133 }, { 34,7133 }, { 35,7133 }, { 36,7649 }, { 37,7133 }, { 38,7133 }, { 39,7133 }, { 40,7133 }, { 41,7133 }, { 42,7133 }, { 43,7133 }, { 44,7133 }, { 45,7133 }, { 46,7133 }, { 47,7133 }, { 48,7133 }, { 49,7133 }, { 50,7133 }, { 51,7133 }, { 52,7133 }, { 53,7133 }, { 54,7133 }, { 55,7133 }, { 56,7133 }, { 57,7133 }, { 58,7133 }, { 59,7133 }, { 60,7133 }, { 61,7133 }, { 62,7133 }, { 63,7133 }, { 64,7133 }, { 65,7133 }, { 66,7133 }, { 67,7133 }, { 68,7133 }, { 69,7133 }, { 70,7133 }, { 71,7133 }, { 72,7133 }, { 73,7133 }, { 74,7133 }, { 75,7133 }, { 76,7133 }, { 77,7133 }, { 78,7133 }, { 79,7133 }, { 80,7133 }, { 81,7133 }, { 82,7133 }, { 83,7133 }, { 84,7133 }, { 85,7133 }, { 86,7133 }, { 87,7133 }, { 88,7133 }, { 89,7133 }, { 90,7133 }, { 91,7133 }, { 92,7133 }, { 93,7133 }, { 94,7133 }, { 95,7133 }, { 96,7133 }, { 97,7133 }, { 98,7133 }, { 99,7133 }, { 100,7133 }, { 101,7133 }, { 102,7133 }, { 103,7133 }, { 104,7133 }, { 105,7133 }, { 106,7133 }, { 107,7133 }, { 108,7133 }, { 109,7133 }, { 110,7133 }, { 111,7133 }, { 112,7133 }, { 113,7133 }, { 114,7133 }, { 115,7133 }, { 116,7133 }, { 117,7133 }, { 118,7133 }, { 119,7133 }, { 120,7133 }, { 121,7133 }, { 122,7133 }, { 123,7133 }, { 124,7133 }, { 125,7133 }, { 126,7133 }, { 127,7133 }, { 128,7133 }, { 129,7133 }, { 130,7133 }, { 131,7133 }, { 132,7133 }, { 133,7133 }, { 134,7133 }, { 135,7133 }, { 136,7133 }, { 137,7133 }, { 138,7133 }, { 139,7133 }, { 140,7133 }, { 141,7133 }, { 142,7133 }, { 143,7133 }, { 144,7133 }, { 145,7133 }, { 146,7133 }, { 147,7133 }, { 148,7133 }, { 149,7133 }, { 150,7133 }, { 151,7133 }, { 152,7133 }, { 153,7133 }, { 154,7133 }, { 155,7133 }, { 156,7133 }, { 157,7133 }, { 158,7133 }, { 159,7133 }, { 160,7133 }, { 161,7133 }, { 162,7133 }, { 163,7133 }, { 164,7133 }, { 165,7133 }, { 166,7133 }, { 167,7133 }, { 168,7133 }, { 169,7133 }, { 170,7133 }, { 171,7133 }, { 172,7133 }, { 173,7133 }, { 174,7133 }, { 175,7133 }, { 176,7133 }, { 177,7133 }, { 178,7133 }, { 179,7133 }, { 180,7133 }, { 181,7133 }, { 182,7133 }, { 183,7133 }, { 184,7133 }, { 185,7133 }, { 186,7133 }, { 187,7133 }, { 188,7133 }, { 189,7133 }, { 190,7133 }, { 191,7133 }, { 192,7133 }, { 193,7133 }, { 194,7133 }, { 195,7133 }, { 196,7133 }, { 197,7133 }, { 198,7133 }, { 199,7133 }, { 200,7133 }, { 201,7133 }, { 202,7133 }, { 203,7133 }, { 204,7133 }, { 205,7133 }, { 206,7133 }, { 207,7133 }, { 208,7133 }, { 209,7133 }, { 210,7133 }, { 211,7133 }, { 212,7133 }, { 213,7133 }, { 214,7133 }, { 215,7133 }, { 216,7133 }, { 217,7133 }, { 218,7133 }, { 219,7133 }, { 220,7133 }, { 221,7133 }, { 222,7133 }, { 223,7133 }, { 224,7133 }, { 225,7133 }, { 226,7133 }, { 227,7133 }, { 228,7133 }, { 229,7133 }, { 230,7133 }, { 231,7133 }, { 232,7133 }, { 233,7133 }, { 234,7133 }, { 235,7133 }, { 236,7133 }, { 237,7133 }, { 238,7133 }, { 239,7133 }, { 240,7133 }, { 241,7133 }, { 242,7133 }, { 243,7133 }, { 244,7133 }, { 245,7133 }, { 246,7133 }, { 247,7133 }, { 248,7133 }, { 249,7133 }, { 250,7133 }, { 251,7133 }, { 252,7133 }, { 253,7133 }, { 254,7133 }, { 255,7133 }, { 256,7133 }, { 0, 0 }, { 0,29033 }, { 1,6875 }, { 2,6875 }, { 3,6875 }, { 4,6875 }, { 5,6875 }, { 6,6875 }, { 7,6875 }, { 8,6875 }, { 9,6875 }, { 10,7133 }, { 11,6875 }, { 12,6875 }, { 13,6875 }, { 14,6875 }, { 15,6875 }, { 16,6875 }, { 17,6875 }, { 18,6875 }, { 19,6875 }, { 20,6875 }, { 21,6875 }, { 22,6875 }, { 23,6875 }, { 24,6875 }, { 25,6875 }, { 26,6875 }, { 27,6875 }, { 28,6875 }, { 29,6875 }, { 30,6875 }, { 31,6875 }, { 32,6875 }, { 33,6875 }, { 34,6875 }, { 35,6875 }, { 36,7391 }, { 37,6875 }, { 38,6875 }, { 39,6875 }, { 40,6875 }, { 41,6875 }, { 42,6875 }, { 43,6875 }, { 44,6875 }, { 45,6875 }, { 46,6875 }, { 47,6875 }, { 48,6875 }, { 49,6875 }, { 50,6875 }, { 51,6875 }, { 52,6875 }, { 53,6875 }, { 54,6875 }, { 55,6875 }, { 56,6875 }, { 57,6875 }, { 58,6875 }, { 59,6875 }, { 60,6875 }, { 61,6875 }, { 62,6875 }, { 63,6875 }, { 64,6875 }, { 65,6875 }, { 66,6875 }, { 67,6875 }, { 68,6875 }, { 69,6875 }, { 70,6875 }, { 71,6875 }, { 72,6875 }, { 73,6875 }, { 74,6875 }, { 75,6875 }, { 76,6875 }, { 77,6875 }, { 78,6875 }, { 79,6875 }, { 80,6875 }, { 81,6875 }, { 82,6875 }, { 83,6875 }, { 84,6875 }, { 85,6875 }, { 86,6875 }, { 87,6875 }, { 88,6875 }, { 89,6875 }, { 90,6875 }, { 91,6875 }, { 92,6875 }, { 93,6875 }, { 94,6875 }, { 95,6875 }, { 96,6875 }, { 97,6875 }, { 98,6875 }, { 99,6875 }, { 100,6875 }, { 101,6875 }, { 102,6875 }, { 103,6875 }, { 104,6875 }, { 105,6875 }, { 106,6875 }, { 107,6875 }, { 108,6875 }, { 109,6875 }, { 110,6875 }, { 111,6875 }, { 112,6875 }, { 113,6875 }, { 114,6875 }, { 115,6875 }, { 116,6875 }, { 117,6875 }, { 118,6875 }, { 119,6875 }, { 120,6875 }, { 121,6875 }, { 122,6875 }, { 123,6875 }, { 124,6875 }, { 125,6875 }, { 126,6875 }, { 127,6875 }, { 128,6875 }, { 129,6875 }, { 130,6875 }, { 131,6875 }, { 132,6875 }, { 133,6875 }, { 134,6875 }, { 135,6875 }, { 136,6875 }, { 137,6875 }, { 138,6875 }, { 139,6875 }, { 140,6875 }, { 141,6875 }, { 142,6875 }, { 143,6875 }, { 144,6875 }, { 145,6875 }, { 146,6875 }, { 147,6875 }, { 148,6875 }, { 149,6875 }, { 150,6875 }, { 151,6875 }, { 152,6875 }, { 153,6875 }, { 154,6875 }, { 155,6875 }, { 156,6875 }, { 157,6875 }, { 158,6875 }, { 159,6875 }, { 160,6875 }, { 161,6875 }, { 162,6875 }, { 163,6875 }, { 164,6875 }, { 165,6875 }, { 166,6875 }, { 167,6875 }, { 168,6875 }, { 169,6875 }, { 170,6875 }, { 171,6875 }, { 172,6875 }, { 173,6875 }, { 174,6875 }, { 175,6875 }, { 176,6875 }, { 177,6875 }, { 178,6875 }, { 179,6875 }, { 180,6875 }, { 181,6875 }, { 182,6875 }, { 183,6875 }, { 184,6875 }, { 185,6875 }, { 186,6875 }, { 187,6875 }, { 188,6875 }, { 189,6875 }, { 190,6875 }, { 191,6875 }, { 192,6875 }, { 193,6875 }, { 194,6875 }, { 195,6875 }, { 196,6875 }, { 197,6875 }, { 198,6875 }, { 199,6875 }, { 200,6875 }, { 201,6875 }, { 202,6875 }, { 203,6875 }, { 204,6875 }, { 205,6875 }, { 206,6875 }, { 207,6875 }, { 208,6875 }, { 209,6875 }, { 210,6875 }, { 211,6875 }, { 212,6875 }, { 213,6875 }, { 214,6875 }, { 215,6875 }, { 216,6875 }, { 217,6875 }, { 218,6875 }, { 219,6875 }, { 220,6875 }, { 221,6875 }, { 222,6875 }, { 223,6875 }, { 224,6875 }, { 225,6875 }, { 226,6875 }, { 227,6875 }, { 228,6875 }, { 229,6875 }, { 230,6875 }, { 231,6875 }, { 232,6875 }, { 233,6875 }, { 234,6875 }, { 235,6875 }, { 236,6875 }, { 237,6875 }, { 238,6875 }, { 239,6875 }, { 240,6875 }, { 241,6875 }, { 242,6875 }, { 243,6875 }, { 244,6875 }, { 245,6875 }, { 246,6875 }, { 247,6875 }, { 248,6875 }, { 249,6875 }, { 250,6875 }, { 251,6875 }, { 252,6875 }, { 253,6875 }, { 254,6875 }, { 255,6875 }, { 256,6875 }, { 0, 0 }, { 0,28775 }, { 1,4993 }, { 2,4993 }, { 3,4993 }, { 4,4993 }, { 5,4993 }, { 6,4993 }, { 7,4993 }, { 8,4993 }, { 9,4993 }, { 10,4993 }, { 11,4993 }, { 12,4993 }, { 13,4993 }, { 14,4993 }, { 15,4993 }, { 16,4993 }, { 17,4993 }, { 18,4993 }, { 19,4993 }, { 20,4993 }, { 21,4993 }, { 22,4993 }, { 23,4993 }, { 24,4993 }, { 25,4993 }, { 26,4993 }, { 27,4993 }, { 28,4993 }, { 29,4993 }, { 30,4993 }, { 31,4993 }, { 32,4993 }, { 33,4993 }, { 34,1615 }, { 35,4993 }, { 36,4993 }, { 37,4993 }, { 38,4993 }, { 39,4993 }, { 40,4993 }, { 41,4993 }, { 42,4993 }, { 43,4993 }, { 44,4993 }, { 45,4993 }, { 46,4993 }, { 47,4993 }, { 48,4993 }, { 49,4993 }, { 50,4993 }, { 51,4993 }, { 52,4993 }, { 53,4993 }, { 54,4993 }, { 55,4993 }, { 56,4993 }, { 57,4993 }, { 58,4993 }, { 59,4993 }, { 60,4993 }, { 61,4993 }, { 62,4993 }, { 63,4993 }, { 64,4993 }, { 65,4993 }, { 66,4993 }, { 67,4993 }, { 68,4993 }, { 69,4993 }, { 70,4993 }, { 71,4993 }, { 72,4993 }, { 73,4993 }, { 74,4993 }, { 75,4993 }, { 76,4993 }, { 77,4993 }, { 78,4993 }, { 79,4993 }, { 80,4993 }, { 81,4993 }, { 82,4993 }, { 83,4993 }, { 84,4993 }, { 85,4993 }, { 86,4993 }, { 87,4993 }, { 88,4993 }, { 89,4993 }, { 90,4993 }, { 91,4993 }, { 92,4993 }, { 93,4993 }, { 94,4993 }, { 95,4993 }, { 96,4993 }, { 97,4993 }, { 98,4993 }, { 99,4993 }, { 100,4993 }, { 101,4993 }, { 102,4993 }, { 103,4993 }, { 104,4993 }, { 105,4993 }, { 106,4993 }, { 107,4993 }, { 108,4993 }, { 109,4993 }, { 110,4993 }, { 111,4993 }, { 112,4993 }, { 113,4993 }, { 114,4993 }, { 115,4993 }, { 116,4993 }, { 117,4993 }, { 118,4993 }, { 119,4993 }, { 120,4993 }, { 121,4993 }, { 122,4993 }, { 123,4993 }, { 124,4993 }, { 125,4993 }, { 126,4993 }, { 127,4993 }, { 128,4993 }, { 129,4993 }, { 130,4993 }, { 131,4993 }, { 132,4993 }, { 133,4993 }, { 134,4993 }, { 135,4993 }, { 136,4993 }, { 137,4993 }, { 138,4993 }, { 139,4993 }, { 140,4993 }, { 141,4993 }, { 142,4993 }, { 143,4993 }, { 144,4993 }, { 145,4993 }, { 146,4993 }, { 147,4993 }, { 148,4993 }, { 149,4993 }, { 150,4993 }, { 151,4993 }, { 152,4993 }, { 153,4993 }, { 154,4993 }, { 155,4993 }, { 156,4993 }, { 157,4993 }, { 158,4993 }, { 159,4993 }, { 160,4993 }, { 161,4993 }, { 162,4993 }, { 163,4993 }, { 164,4993 }, { 165,4993 }, { 166,4993 }, { 167,4993 }, { 168,4993 }, { 169,4993 }, { 170,4993 }, { 171,4993 }, { 172,4993 }, { 173,4993 }, { 174,4993 }, { 175,4993 }, { 176,4993 }, { 177,4993 }, { 178,4993 }, { 179,4993 }, { 180,4993 }, { 181,4993 }, { 182,4993 }, { 183,4993 }, { 184,4993 }, { 185,4993 }, { 186,4993 }, { 187,4993 }, { 188,4993 }, { 189,4993 }, { 190,4993 }, { 191,4993 }, { 192,4993 }, { 193,4993 }, { 194,4993 }, { 195,4993 }, { 196,4993 }, { 197,4993 }, { 198,4993 }, { 199,4993 }, { 200,4993 }, { 201,4993 }, { 202,4993 }, { 203,4993 }, { 204,4993 }, { 205,4993 }, { 206,4993 }, { 207,4993 }, { 208,4993 }, { 209,4993 }, { 210,4993 }, { 211,4993 }, { 212,4993 }, { 213,4993 }, { 214,4993 }, { 215,4993 }, { 216,4993 }, { 217,4993 }, { 218,4993 }, { 219,4993 }, { 220,4993 }, { 221,4993 }, { 222,4993 }, { 223,4993 }, { 224,4993 }, { 225,4993 }, { 226,4993 }, { 227,4993 }, { 228,4993 }, { 229,4993 }, { 230,4993 }, { 231,4993 }, { 232,4993 }, { 233,4993 }, { 234,4993 }, { 235,4993 }, { 236,4993 }, { 237,4993 }, { 238,4993 }, { 239,4993 }, { 240,4993 }, { 241,4993 }, { 242,4993 }, { 243,4993 }, { 244,4993 }, { 245,4993 }, { 246,4993 }, { 247,4993 }, { 248,4993 }, { 249,4993 }, { 250,4993 }, { 251,4993 }, { 252,4993 }, { 253,4993 }, { 254,4993 }, { 255,4993 }, { 256,4993 }, { 0, 0 }, { 0,28517 }, { 1,4735 }, { 2,4735 }, { 3,4735 }, { 4,4735 }, { 5,4735 }, { 6,4735 }, { 7,4735 }, { 8,4735 }, { 9,4735 }, { 10,4735 }, { 11,4735 }, { 12,4735 }, { 13,4735 }, { 14,4735 }, { 15,4735 }, { 16,4735 }, { 17,4735 }, { 18,4735 }, { 19,4735 }, { 20,4735 }, { 21,4735 }, { 22,4735 }, { 23,4735 }, { 24,4735 }, { 25,4735 }, { 26,4735 }, { 27,4735 }, { 28,4735 }, { 29,4735 }, { 30,4735 }, { 31,4735 }, { 32,4735 }, { 33,4735 }, { 34,1357 }, { 35,4735 }, { 36,4735 }, { 37,4735 }, { 38,4735 }, { 39,4735 }, { 40,4735 }, { 41,4735 }, { 42,4735 }, { 43,4735 }, { 44,4735 }, { 45,4735 }, { 46,4735 }, { 47,4735 }, { 48,4735 }, { 49,4735 }, { 50,4735 }, { 51,4735 }, { 52,4735 }, { 53,4735 }, { 54,4735 }, { 55,4735 }, { 56,4735 }, { 57,4735 }, { 58,4735 }, { 59,4735 }, { 60,4735 }, { 61,4735 }, { 62,4735 }, { 63,4735 }, { 64,4735 }, { 65,4735 }, { 66,4735 }, { 67,4735 }, { 68,4735 }, { 69,4735 }, { 70,4735 }, { 71,4735 }, { 72,4735 }, { 73,4735 }, { 74,4735 }, { 75,4735 }, { 76,4735 }, { 77,4735 }, { 78,4735 }, { 79,4735 }, { 80,4735 }, { 81,4735 }, { 82,4735 }, { 83,4735 }, { 84,4735 }, { 85,4735 }, { 86,4735 }, { 87,4735 }, { 88,4735 }, { 89,4735 }, { 90,4735 }, { 91,4735 }, { 92,4735 }, { 93,4735 }, { 94,4735 }, { 95,4735 }, { 96,4735 }, { 97,4735 }, { 98,4735 }, { 99,4735 }, { 100,4735 }, { 101,4735 }, { 102,4735 }, { 103,4735 }, { 104,4735 }, { 105,4735 }, { 106,4735 }, { 107,4735 }, { 108,4735 }, { 109,4735 }, { 110,4735 }, { 111,4735 }, { 112,4735 }, { 113,4735 }, { 114,4735 }, { 115,4735 }, { 116,4735 }, { 117,4735 }, { 118,4735 }, { 119,4735 }, { 120,4735 }, { 121,4735 }, { 122,4735 }, { 123,4735 }, { 124,4735 }, { 125,4735 }, { 126,4735 }, { 127,4735 }, { 128,4735 }, { 129,4735 }, { 130,4735 }, { 131,4735 }, { 132,4735 }, { 133,4735 }, { 134,4735 }, { 135,4735 }, { 136,4735 }, { 137,4735 }, { 138,4735 }, { 139,4735 }, { 140,4735 }, { 141,4735 }, { 142,4735 }, { 143,4735 }, { 144,4735 }, { 145,4735 }, { 146,4735 }, { 147,4735 }, { 148,4735 }, { 149,4735 }, { 150,4735 }, { 151,4735 }, { 152,4735 }, { 153,4735 }, { 154,4735 }, { 155,4735 }, { 156,4735 }, { 157,4735 }, { 158,4735 }, { 159,4735 }, { 160,4735 }, { 161,4735 }, { 162,4735 }, { 163,4735 }, { 164,4735 }, { 165,4735 }, { 166,4735 }, { 167,4735 }, { 168,4735 }, { 169,4735 }, { 170,4735 }, { 171,4735 }, { 172,4735 }, { 173,4735 }, { 174,4735 }, { 175,4735 }, { 176,4735 }, { 177,4735 }, { 178,4735 }, { 179,4735 }, { 180,4735 }, { 181,4735 }, { 182,4735 }, { 183,4735 }, { 184,4735 }, { 185,4735 }, { 186,4735 }, { 187,4735 }, { 188,4735 }, { 189,4735 }, { 190,4735 }, { 191,4735 }, { 192,4735 }, { 193,4735 }, { 194,4735 }, { 195,4735 }, { 196,4735 }, { 197,4735 }, { 198,4735 }, { 199,4735 }, { 200,4735 }, { 201,4735 }, { 202,4735 }, { 203,4735 }, { 204,4735 }, { 205,4735 }, { 206,4735 }, { 207,4735 }, { 208,4735 }, { 209,4735 }, { 210,4735 }, { 211,4735 }, { 212,4735 }, { 213,4735 }, { 214,4735 }, { 215,4735 }, { 216,4735 }, { 217,4735 }, { 218,4735 }, { 219,4735 }, { 220,4735 }, { 221,4735 }, { 222,4735 }, { 223,4735 }, { 224,4735 }, { 225,4735 }, { 226,4735 }, { 227,4735 }, { 228,4735 }, { 229,4735 }, { 230,4735 }, { 231,4735 }, { 232,4735 }, { 233,4735 }, { 234,4735 }, { 235,4735 }, { 236,4735 }, { 237,4735 }, { 238,4735 }, { 239,4735 }, { 240,4735 }, { 241,4735 }, { 242,4735 }, { 243,4735 }, { 244,4735 }, { 245,4735 }, { 246,4735 }, { 247,4735 }, { 248,4735 }, { 249,4735 }, { 250,4735 }, { 251,4735 }, { 252,4735 }, { 253,4735 }, { 254,4735 }, { 255,4735 }, { 256,4735 }, { 0, 0 }, { 0,28259 }, { 1,4993 }, { 2,4993 }, { 3,4993 }, { 4,4993 }, { 5,4993 }, { 6,4993 }, { 7,4993 }, { 8,4993 }, { 9,4993 }, { 10,4993 }, { 11,4993 }, { 12,4993 }, { 13,4993 }, { 14,4993 }, { 15,4993 }, { 16,4993 }, { 17,4993 }, { 18,4993 }, { 19,4993 }, { 20,4993 }, { 21,4993 }, { 22,4993 }, { 23,4993 }, { 24,4993 }, { 25,4993 }, { 26,4993 }, { 27,4993 }, { 28,4993 }, { 29,4993 }, { 30,4993 }, { 31,4993 }, { 32,4993 }, { 33,4993 }, { 34,4993 }, { 35,4993 }, { 36,4993 }, { 37,4993 }, { 38,4993 }, { 39,1090 }, { 40,4993 }, { 41,4993 }, { 42,4993 }, { 43,4993 }, { 44,4993 }, { 45,4993 }, { 46,4993 }, { 47,4993 }, { 48,4993 }, { 49,4993 }, { 50,4993 }, { 51,4993 }, { 52,4993 }, { 53,4993 }, { 54,4993 }, { 55,4993 }, { 56,4993 }, { 57,4993 }, { 58,4993 }, { 59,4993 }, { 60,4993 }, { 61,4993 }, { 62,4993 }, { 63,4993 }, { 64,4993 }, { 65,4993 }, { 66,4993 }, { 67,4993 }, { 68,4993 }, { 69,4993 }, { 70,4993 }, { 71,4993 }, { 72,4993 }, { 73,4993 }, { 74,4993 }, { 75,4993 }, { 76,4993 }, { 77,4993 }, { 78,4993 }, { 79,4993 }, { 80,4993 }, { 81,4993 }, { 82,4993 }, { 83,4993 }, { 84,4993 }, { 85,4993 }, { 86,4993 }, { 87,4993 }, { 88,4993 }, { 89,4993 }, { 90,4993 }, { 91,4993 }, { 92,4993 }, { 93,4993 }, { 94,4993 }, { 95,4993 }, { 96,4993 }, { 97,4993 }, { 98,4993 }, { 99,4993 }, { 100,4993 }, { 101,4993 }, { 102,4993 }, { 103,4993 }, { 104,4993 }, { 105,4993 }, { 106,4993 }, { 107,4993 }, { 108,4993 }, { 109,4993 }, { 110,4993 }, { 111,4993 }, { 112,4993 }, { 113,4993 }, { 114,4993 }, { 115,4993 }, { 116,4993 }, { 117,4993 }, { 118,4993 }, { 119,4993 }, { 120,4993 }, { 121,4993 }, { 122,4993 }, { 123,4993 }, { 124,4993 }, { 125,4993 }, { 126,4993 }, { 127,4993 }, { 128,4993 }, { 129,4993 }, { 130,4993 }, { 131,4993 }, { 132,4993 }, { 133,4993 }, { 134,4993 }, { 135,4993 }, { 136,4993 }, { 137,4993 }, { 138,4993 }, { 139,4993 }, { 140,4993 }, { 141,4993 }, { 142,4993 }, { 143,4993 }, { 144,4993 }, { 145,4993 }, { 146,4993 }, { 147,4993 }, { 148,4993 }, { 149,4993 }, { 150,4993 }, { 151,4993 }, { 152,4993 }, { 153,4993 }, { 154,4993 }, { 155,4993 }, { 156,4993 }, { 157,4993 }, { 158,4993 }, { 159,4993 }, { 160,4993 }, { 161,4993 }, { 162,4993 }, { 163,4993 }, { 164,4993 }, { 165,4993 }, { 166,4993 }, { 167,4993 }, { 168,4993 }, { 169,4993 }, { 170,4993 }, { 171,4993 }, { 172,4993 }, { 173,4993 }, { 174,4993 }, { 175,4993 }, { 176,4993 }, { 177,4993 }, { 178,4993 }, { 179,4993 }, { 180,4993 }, { 181,4993 }, { 182,4993 }, { 183,4993 }, { 184,4993 }, { 185,4993 }, { 186,4993 }, { 187,4993 }, { 188,4993 }, { 189,4993 }, { 190,4993 }, { 191,4993 }, { 192,4993 }, { 193,4993 }, { 194,4993 }, { 195,4993 }, { 196,4993 }, { 197,4993 }, { 198,4993 }, { 199,4993 }, { 200,4993 }, { 201,4993 }, { 202,4993 }, { 203,4993 }, { 204,4993 }, { 205,4993 }, { 206,4993 }, { 207,4993 }, { 208,4993 }, { 209,4993 }, { 210,4993 }, { 211,4993 }, { 212,4993 }, { 213,4993 }, { 214,4993 }, { 215,4993 }, { 216,4993 }, { 217,4993 }, { 218,4993 }, { 219,4993 }, { 220,4993 }, { 221,4993 }, { 222,4993 }, { 223,4993 }, { 224,4993 }, { 225,4993 }, { 226,4993 }, { 227,4993 }, { 228,4993 }, { 229,4993 }, { 230,4993 }, { 231,4993 }, { 232,4993 }, { 233,4993 }, { 234,4993 }, { 235,4993 }, { 236,4993 }, { 237,4993 }, { 238,4993 }, { 239,4993 }, { 240,4993 }, { 241,4993 }, { 242,4993 }, { 243,4993 }, { 244,4993 }, { 245,4993 }, { 246,4993 }, { 247,4993 }, { 248,4993 }, { 249,4993 }, { 250,4993 }, { 251,4993 }, { 252,4993 }, { 253,4993 }, { 254,4993 }, { 255,4993 }, { 256,4993 }, { 0, 0 }, { 0,28001 }, { 1,4735 }, { 2,4735 }, { 3,4735 }, { 4,4735 }, { 5,4735 }, { 6,4735 }, { 7,4735 }, { 8,4735 }, { 9,4735 }, { 10,4735 }, { 11,4735 }, { 12,4735 }, { 13,4735 }, { 14,4735 }, { 15,4735 }, { 16,4735 }, { 17,4735 }, { 18,4735 }, { 19,4735 }, { 20,4735 }, { 21,4735 }, { 22,4735 }, { 23,4735 }, { 24,4735 }, { 25,4735 }, { 26,4735 }, { 27,4735 }, { 28,4735 }, { 29,4735 }, { 30,4735 }, { 31,4735 }, { 32,4735 }, { 33,4735 }, { 34,4735 }, { 35,4735 }, { 36,4735 }, { 37,4735 }, { 38,4735 }, { 39, 832 }, { 40,4735 }, { 41,4735 }, { 42,4735 }, { 43,4735 }, { 44,4735 }, { 45,4735 }, { 46,4735 }, { 47,4735 }, { 48,4735 }, { 49,4735 }, { 50,4735 }, { 51,4735 }, { 52,4735 }, { 53,4735 }, { 54,4735 }, { 55,4735 }, { 56,4735 }, { 57,4735 }, { 58,4735 }, { 59,4735 }, { 60,4735 }, { 61,4735 }, { 62,4735 }, { 63,4735 }, { 64,4735 }, { 65,4735 }, { 66,4735 }, { 67,4735 }, { 68,4735 }, { 69,4735 }, { 70,4735 }, { 71,4735 }, { 72,4735 }, { 73,4735 }, { 74,4735 }, { 75,4735 }, { 76,4735 }, { 77,4735 }, { 78,4735 }, { 79,4735 }, { 80,4735 }, { 81,4735 }, { 82,4735 }, { 83,4735 }, { 84,4735 }, { 85,4735 }, { 86,4735 }, { 87,4735 }, { 88,4735 }, { 89,4735 }, { 90,4735 }, { 91,4735 }, { 92,4735 }, { 93,4735 }, { 94,4735 }, { 95,4735 }, { 96,4735 }, { 97,4735 }, { 98,4735 }, { 99,4735 }, { 100,4735 }, { 101,4735 }, { 102,4735 }, { 103,4735 }, { 104,4735 }, { 105,4735 }, { 106,4735 }, { 107,4735 }, { 108,4735 }, { 109,4735 }, { 110,4735 }, { 111,4735 }, { 112,4735 }, { 113,4735 }, { 114,4735 }, { 115,4735 }, { 116,4735 }, { 117,4735 }, { 118,4735 }, { 119,4735 }, { 120,4735 }, { 121,4735 }, { 122,4735 }, { 123,4735 }, { 124,4735 }, { 125,4735 }, { 126,4735 }, { 127,4735 }, { 128,4735 }, { 129,4735 }, { 130,4735 }, { 131,4735 }, { 132,4735 }, { 133,4735 }, { 134,4735 }, { 135,4735 }, { 136,4735 }, { 137,4735 }, { 138,4735 }, { 139,4735 }, { 140,4735 }, { 141,4735 }, { 142,4735 }, { 143,4735 }, { 144,4735 }, { 145,4735 }, { 146,4735 }, { 147,4735 }, { 148,4735 }, { 149,4735 }, { 150,4735 }, { 151,4735 }, { 152,4735 }, { 153,4735 }, { 154,4735 }, { 155,4735 }, { 156,4735 }, { 157,4735 }, { 158,4735 }, { 159,4735 }, { 160,4735 }, { 161,4735 }, { 162,4735 }, { 163,4735 }, { 164,4735 }, { 165,4735 }, { 166,4735 }, { 167,4735 }, { 168,4735 }, { 169,4735 }, { 170,4735 }, { 171,4735 }, { 172,4735 }, { 173,4735 }, { 174,4735 }, { 175,4735 }, { 176,4735 }, { 177,4735 }, { 178,4735 }, { 179,4735 }, { 180,4735 }, { 181,4735 }, { 182,4735 }, { 183,4735 }, { 184,4735 }, { 185,4735 }, { 186,4735 }, { 187,4735 }, { 188,4735 }, { 189,4735 }, { 190,4735 }, { 191,4735 }, { 192,4735 }, { 193,4735 }, { 194,4735 }, { 195,4735 }, { 196,4735 }, { 197,4735 }, { 198,4735 }, { 199,4735 }, { 200,4735 }, { 201,4735 }, { 202,4735 }, { 203,4735 }, { 204,4735 }, { 205,4735 }, { 206,4735 }, { 207,4735 }, { 208,4735 }, { 209,4735 }, { 210,4735 }, { 211,4735 }, { 212,4735 }, { 213,4735 }, { 214,4735 }, { 215,4735 }, { 216,4735 }, { 217,4735 }, { 218,4735 }, { 219,4735 }, { 220,4735 }, { 221,4735 }, { 222,4735 }, { 223,4735 }, { 224,4735 }, { 225,4735 }, { 226,4735 }, { 227,4735 }, { 228,4735 }, { 229,4735 }, { 230,4735 }, { 231,4735 }, { 232,4735 }, { 233,4735 }, { 234,4735 }, { 235,4735 }, { 236,4735 }, { 237,4735 }, { 238,4735 }, { 239,4735 }, { 240,4735 }, { 241,4735 }, { 242,4735 }, { 243,4735 }, { 244,4735 }, { 245,4735 }, { 246,4735 }, { 247,4735 }, { 248,4735 }, { 249,4735 }, { 250,4735 }, { 251,4735 }, { 252,4735 }, { 253,4735 }, { 254,4735 }, { 255,4735 }, { 256,4735 }, { 0, 0 }, { 0,27743 }, { 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,27485 }, { 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, 72 }, { 0,27227 }, { 0, 1 }, { 0,27225 }, { 0, 39 }, { 0,27223 }, { 0, 0 }, { 0, 1 }, { 0,27220 }, { 0, 55 }, { 0,27218 }, { 0, 0 }, { 9,5585 }, { 10,5585 }, { 11,5585 }, { 12,5585 }, { 13,5585 }, { 9,5580 }, { 10,5580 }, { 11,5580 }, { 12,5580 }, { 13,5580 }, { 0, 14 }, { 0,27205 }, { 0, 54 }, { 0,27203 }, { 0, 0 }, { 0, 54 }, { 0,27200 }, { 0, 17 }, { 0,27198 }, { 0, 0 }, { 0, 7 }, { 0,27195 }, { 0, 0 }, { 32,5585 }, { 0, 7 }, { 0,27191 }, { 0, 0 }, { 0, 0 }, { 32,5580 }, { 0, 41 }, { 0,27186 }, { 33,5833 }, { 0, 0 }, { 35,5833 }, { 0, 0 }, { 37,5833 }, { 38,5833 }, { 0, 55 }, { 0,27178 }, { 0, 0 }, { 42,5833 }, { 43,5833 }, { 0, 0 }, { 45,5833 }, { 0, 0 }, { 47,5833 }, { 0, 17 }, { 0,27169 }, { 0, 20 }, { 0,27167 }, { 0, 19 }, { 0,27165 }, { 0, 0 }, { 0, 17 }, { 0,27162 }, { 0, 42 }, { 0,27160 }, { 0, 0 }, { 60,5833 }, { 61,5844 }, { 62,5833 }, { 63,5833 }, { 64,5833 }, { 42, 348 }, { 34, 346 }, { 0, 26 }, { 0,27150 }, { 42,9714 }, { 47, 353 }, { 0, 27 }, { 0,27146 }, { 33,5793 }, { 0, 0 }, { 35,5793 }, { 58, 100 }, { 37,5793 }, { 38,5793 }, { 61, 102 }, { 0, 0 }, { 0, 0 }, { 42,5793 }, { 43,5793 }, { 0, 0 }, { 45,5793 }, { 0, 0 }, { 47,5793 }, { 39, 331 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 34, 320 }, { 0, 0 }, { 94,5833 }, { 39, 324 }, { 96,5833 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,5793 }, { 61,5793 }, { 62,5793 }, { 63,5793 }, { 64,5793 }, { 0, 72 }, { 0,27112 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 26 }, { 0,27106 }, { 0, 33 }, { 0,27104 }, { 0, 47 }, { 0,27102 }, { 0, 46 }, { 0,27100 }, { 0, 48 }, { 0,27098 }, { 0, 9 }, { 0,27096 }, { 0, 0 }, { 124,5833 }, { 0, 0 }, { 126,5833 }, { 0, 15 }, { 0,27090 }, { 0, 13 }, { 0,27088 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,5793 }, { 0, 0 }, { 96,5793 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36, 8 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,5755 }, { 49,5755 }, { 50,5755 }, { 51,5755 }, { 52,5755 }, { 53,5755 }, { 54,5755 }, { 55,5755 }, { 56,5755 }, { 57,5755 }, { 124,5793 }, { 0, 0 }, { 126,5793 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,5818 }, { 66,5818 }, { 67,5818 }, { 68,5818 }, { 69,5818 }, { 70,5818 }, { 71,5818 }, { 72,5818 }, { 73,5818 }, { 74,5818 }, { 75,5818 }, { 76,5818 }, { 77,5818 }, { 78,5818 }, { 79,5818 }, { 80,5818 }, { 81,5818 }, { 82,5818 }, { 83,5818 }, { 84,5818 }, { 85,5818 }, { 86,5818 }, { 87,5818 }, { 88,5818 }, { 89,5818 }, { 90,5818 }, { 85,11553 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,5818 }, { 0, 0 }, { 97,5818 }, { 98,5818 }, { 99,5818 }, { 100,5818 }, { 101,5818 }, { 102,5818 }, { 103,5818 }, { 104,5818 }, { 105,5818 }, { 106,5818 }, { 107,5818 }, { 108,5818 }, { 109,5818 }, { 110,5818 }, { 111,5818 }, { 112,5818 }, { 113,5818 }, { 114,5818 }, { 115,5818 }, { 116,5818 }, { 117,5818 }, { 118,5818 }, { 119,5818 }, { 120,5818 }, { 121,5818 }, { 122,5818 }, { 117,11576 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5818 }, { 129,5818 }, { 130,5818 }, { 131,5818 }, { 132,5818 }, { 133,5818 }, { 134,5818 }, { 135,5818 }, { 136,5818 }, { 137,5818 }, { 138,5818 }, { 139,5818 }, { 140,5818 }, { 141,5818 }, { 142,5818 }, { 143,5818 }, { 144,5818 }, { 145,5818 }, { 146,5818 }, { 147,5818 }, { 148,5818 }, { 149,5818 }, { 150,5818 }, { 151,5818 }, { 152,5818 }, { 153,5818 }, { 154,5818 }, { 155,5818 }, { 156,5818 }, { 157,5818 }, { 158,5818 }, { 159,5818 }, { 160,5818 }, { 161,5818 }, { 162,5818 }, { 163,5818 }, { 164,5818 }, { 165,5818 }, { 166,5818 }, { 167,5818 }, { 168,5818 }, { 169,5818 }, { 170,5818 }, { 171,5818 }, { 172,5818 }, { 173,5818 }, { 174,5818 }, { 175,5818 }, { 176,5818 }, { 177,5818 }, { 178,5818 }, { 179,5818 }, { 180,5818 }, { 181,5818 }, { 182,5818 }, { 183,5818 }, { 184,5818 }, { 185,5818 }, { 186,5818 }, { 187,5818 }, { 188,5818 }, { 189,5818 }, { 190,5818 }, { 191,5818 }, { 192,5818 }, { 193,5818 }, { 194,5818 }, { 195,5818 }, { 196,5818 }, { 197,5818 }, { 198,5818 }, { 199,5818 }, { 200,5818 }, { 201,5818 }, { 202,5818 }, { 203,5818 }, { 204,5818 }, { 205,5818 }, { 206,5818 }, { 207,5818 }, { 208,5818 }, { 209,5818 }, { 210,5818 }, { 211,5818 }, { 212,5818 }, { 213,5818 }, { 214,5818 }, { 215,5818 }, { 216,5818 }, { 217,5818 }, { 218,5818 }, { 219,5818 }, { 220,5818 }, { 221,5818 }, { 222,5818 }, { 223,5818 }, { 224,5818 }, { 225,5818 }, { 226,5818 }, { 227,5818 }, { 228,5818 }, { 229,5818 }, { 230,5818 }, { 231,5818 }, { 232,5818 }, { 233,5818 }, { 234,5818 }, { 235,5818 }, { 236,5818 }, { 237,5818 }, { 238,5818 }, { 239,5818 }, { 240,5818 }, { 241,5818 }, { 242,5818 }, { 243,5818 }, { 244,5818 }, { 245,5818 }, { 246,5818 }, { 247,5818 }, { 248,5818 }, { 249,5818 }, { 250,5818 }, { 251,5818 }, { 252,5818 }, { 253,5818 }, { 254,5818 }, { 255,5818 }, { 0, 54 }, { 0,26855 }, { 0, 45 }, { 0,26853 }, { 0, 12 }, { 0,26851 }, { 0, 0 }, { 0, 0 }, { 0, 8 }, { 0,26847 }, { 0, 0 }, { 0, 54 }, { 0,26844 }, { 0, 5 }, { 0,26842 }, { 0, 43 }, { 0,26840 }, { 0, 21 }, { 0,26838 }, { 0, 19 }, { 0,26836 }, { 0, 18 }, { 0,26834 }, { 0, 29 }, { 0,26832 }, { 0, 35 }, { 0,26830 }, { 0, 65 }, { 0,26828 }, { 0, 0 }, { 0, 54 }, { 0,26825 }, { 0, 40 }, { 0,26823 }, { 33,5470 }, { 0, 0 }, { 35,5470 }, { 34, 30 }, { 37,5470 }, { 38,5470 }, { 0, 16 }, { 0,26815 }, { 39, 38 }, { 42,5470 }, { 43,5470 }, { 33,5459 }, { 45,5470 }, { 35,5459 }, { 47,5470 }, { 37,5459 }, { 38,5459 }, { 42, 0 }, { 0, 30 }, { 0,26803 }, { 42,5459 }, { 43,5459 }, { 47, 5 }, { 45,5807 }, { 0, 0 }, { 47,5459 }, { 0, 0 }, { 60,5470 }, { 61,5470 }, { 62,5470 }, { 63,5470 }, { 64,5470 }, { 0, 31 }, { 0,26789 }, { 0, 24 }, { 0,26787 }, { 0, 25 }, { 0,26785 }, { 60,5459 }, { 61,5459 }, { 62,5459 }, { 63,5459 }, { 64,5459 }, { 46,-277 }, { 0, 0 }, { 48,6046 }, { 49,6046 }, { 50,6046 }, { 51,6046 }, { 52,6046 }, { 53,6046 }, { 54,6046 }, { 55,6046 }, { 56,6046 }, { 57,6046 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,5470 }, { 0, 0 }, { 96,5470 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 54 }, { 0,26754 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,5459 }, { 0, 0 }, { 96,5459 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,5470 }, { 0, 0 }, { 126,5470 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 57 }, { 0,26722 }, { 33,5369 }, { 124,5459 }, { 35,5369 }, { 126,5459 }, { 37,5369 }, { 38,5369 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,6232 }, { 43,5369 }, { 0, 0 }, { 45,5369 }, { 0, 0 }, { 47,5369 }, { 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,5369 }, { 61,5369 }, { 62,5369 }, { 63,5369 }, { 64,5369 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 46,6232 }, { 0, 0 }, { 48,6489 }, { 49,6489 }, { 50,6489 }, { 51,6489 }, { 52,6489 }, { 53,6489 }, { 54,6489 }, { 55,6489 }, { 56,6489 }, { 57,6489 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,5369 }, { 0, 0 }, { 96,5369 }, { 65,6746 }, { 66,7003 }, { 67,6746 }, { 68,6746 }, { 69,7260 }, { 70,6746 }, { 71,6746 }, { 72,6746 }, { 73,6746 }, { 74,6746 }, { 75,6746 }, { 76,6746 }, { 77,6746 }, { 78,6746 }, { 79,7517 }, { 80,6746 }, { 81,6746 }, { 82,6746 }, { 83,6746 }, { 84,6746 }, { 85,6746 }, { 86,6746 }, { 87,6746 }, { 88,7774 }, { 89,6746 }, { 90,6746 }, { 0, 0 }, { 124,5369 }, { 0, 0 }, { 126,5369 }, { 95,8031 }, { 0, 0 }, { 97,6746 }, { 98,7003 }, { 99,6746 }, { 100,6746 }, { 101,7260 }, { 102,6746 }, { 103,6746 }, { 104,6746 }, { 105,6746 }, { 106,6746 }, { 107,6746 }, { 108,6746 }, { 109,6746 }, { 110,6746 }, { 111,7517 }, { 112,6746 }, { 113,6746 }, { 114,6746 }, { 115,6746 }, { 116,6746 }, { 117,6746 }, { 118,6746 }, { 119,6746 }, { 120,7774 }, { 121,6746 }, { 122,6746 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,6746 }, { 129,6746 }, { 130,6746 }, { 131,6746 }, { 132,6746 }, { 133,6746 }, { 134,6746 }, { 135,6746 }, { 136,6746 }, { 137,6746 }, { 138,6746 }, { 139,6746 }, { 140,6746 }, { 141,6746 }, { 142,6746 }, { 143,6746 }, { 144,6746 }, { 145,6746 }, { 146,6746 }, { 147,6746 }, { 148,6746 }, { 149,6746 }, { 150,6746 }, { 151,6746 }, { 152,6746 }, { 153,6746 }, { 154,6746 }, { 155,6746 }, { 156,6746 }, { 157,6746 }, { 158,6746 }, { 159,6746 }, { 160,6746 }, { 161,6746 }, { 162,6746 }, { 163,6746 }, { 164,6746 }, { 165,6746 }, { 166,6746 }, { 167,6746 }, { 168,6746 }, { 169,6746 }, { 170,6746 }, { 171,6746 }, { 172,6746 }, { 173,6746 }, { 174,6746 }, { 175,6746 }, { 176,6746 }, { 177,6746 }, { 178,6746 }, { 179,6746 }, { 180,6746 }, { 181,6746 }, { 182,6746 }, { 183,6746 }, { 184,6746 }, { 185,6746 }, { 186,6746 }, { 187,6746 }, { 188,6746 }, { 189,6746 }, { 190,6746 }, { 191,6746 }, { 192,6746 }, { 193,6746 }, { 194,6746 }, { 195,6746 }, { 196,6746 }, { 197,6746 }, { 198,6746 }, { 199,6746 }, { 200,6746 }, { 201,6746 }, { 202,6746 }, { 203,6746 }, { 204,6746 }, { 205,6746 }, { 206,6746 }, { 207,6746 }, { 208,6746 }, { 209,6746 }, { 210,6746 }, { 211,6746 }, { 212,6746 }, { 213,6746 }, { 214,6746 }, { 215,6746 }, { 216,6746 }, { 217,6746 }, { 218,6746 }, { 219,6746 }, { 220,6746 }, { 221,6746 }, { 222,6746 }, { 223,6746 }, { 224,6746 }, { 225,6746 }, { 226,6746 }, { 227,6746 }, { 228,6746 }, { 229,6746 }, { 230,6746 }, { 231,6746 }, { 232,6746 }, { 233,6746 }, { 234,6746 }, { 235,6746 }, { 236,6746 }, { 237,6746 }, { 238,6746 }, { 239,6746 }, { 240,6746 }, { 241,6746 }, { 242,6746 }, { 243,6746 }, { 244,6746 }, { 245,6746 }, { 246,6746 }, { 247,6746 }, { 248,6746 }, { 249,6746 }, { 250,6746 }, { 251,6746 }, { 252,6746 }, { 253,6746 }, { 254,6746 }, { 255,6746 }, { 0, 57 }, { 0,26465 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 46,5975 }, { 0, 0 }, { 48,6232 }, { 49,6232 }, { 50,6232 }, { 51,6232 }, { 52,6232 }, { 53,6232 }, { 54,6232 }, { 55,6232 }, { 56,6232 }, { 57,6232 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,6489 }, { 66,6489 }, { 67,6489 }, { 68,6489 }, { 69,7003 }, { 70,6489 }, { 71,6489 }, { 72,6489 }, { 73,6489 }, { 74,6489 }, { 75,6489 }, { 76,6489 }, { 77,6489 }, { 78,6489 }, { 79,6489 }, { 80,6489 }, { 81,6489 }, { 82,6489 }, { 83,6489 }, { 84,6489 }, { 85,6489 }, { 86,6489 }, { 87,6489 }, { 88,6489 }, { 89,6489 }, { 90,6489 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,7774 }, { 0, 0 }, { 97,6489 }, { 98,6489 }, { 99,6489 }, { 100,6489 }, { 101,7003 }, { 102,6489 }, { 103,6489 }, { 104,6489 }, { 105,6489 }, { 106,6489 }, { 107,6489 }, { 108,6489 }, { 109,6489 }, { 110,6489 }, { 111,6489 }, { 112,6489 }, { 113,6489 }, { 114,6489 }, { 115,6489 }, { 116,6489 }, { 117,6489 }, { 118,6489 }, { 119,6489 }, { 120,6489 }, { 121,6489 }, { 122,6489 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,6489 }, { 129,6489 }, { 130,6489 }, { 131,6489 }, { 132,6489 }, { 133,6489 }, { 134,6489 }, { 135,6489 }, { 136,6489 }, { 137,6489 }, { 138,6489 }, { 139,6489 }, { 140,6489 }, { 141,6489 }, { 142,6489 }, { 143,6489 }, { 144,6489 }, { 145,6489 }, { 146,6489 }, { 147,6489 }, { 148,6489 }, { 149,6489 }, { 150,6489 }, { 151,6489 }, { 152,6489 }, { 153,6489 }, { 154,6489 }, { 155,6489 }, { 156,6489 }, { 157,6489 }, { 158,6489 }, { 159,6489 }, { 160,6489 }, { 161,6489 }, { 162,6489 }, { 163,6489 }, { 164,6489 }, { 165,6489 }, { 166,6489 }, { 167,6489 }, { 168,6489 }, { 169,6489 }, { 170,6489 }, { 171,6489 }, { 172,6489 }, { 173,6489 }, { 174,6489 }, { 175,6489 }, { 176,6489 }, { 177,6489 }, { 178,6489 }, { 179,6489 }, { 180,6489 }, { 181,6489 }, { 182,6489 }, { 183,6489 }, { 184,6489 }, { 185,6489 }, { 186,6489 }, { 187,6489 }, { 188,6489 }, { 189,6489 }, { 190,6489 }, { 191,6489 }, { 192,6489 }, { 193,6489 }, { 194,6489 }, { 195,6489 }, { 196,6489 }, { 197,6489 }, { 198,6489 }, { 199,6489 }, { 200,6489 }, { 201,6489 }, { 202,6489 }, { 203,6489 }, { 204,6489 }, { 205,6489 }, { 206,6489 }, { 207,6489 }, { 208,6489 }, { 209,6489 }, { 210,6489 }, { 211,6489 }, { 212,6489 }, { 213,6489 }, { 214,6489 }, { 215,6489 }, { 216,6489 }, { 217,6489 }, { 218,6489 }, { 219,6489 }, { 220,6489 }, { 221,6489 }, { 222,6489 }, { 223,6489 }, { 224,6489 }, { 225,6489 }, { 226,6489 }, { 227,6489 }, { 228,6489 }, { 229,6489 }, { 230,6489 }, { 231,6489 }, { 232,6489 }, { 233,6489 }, { 234,6489 }, { 235,6489 }, { 236,6489 }, { 237,6489 }, { 238,6489 }, { 239,6489 }, { 240,6489 }, { 241,6489 }, { 242,6489 }, { 243,6489 }, { 244,6489 }, { 245,6489 }, { 246,6489 }, { 247,6489 }, { 248,6489 }, { 249,6489 }, { 250,6489 }, { 251,6489 }, { 252,6489 }, { 253,6489 }, { 254,6489 }, { 255,6489 }, { 0, 54 }, { 0,26208 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 54 }, { 0,26197 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,4823 }, { 0, 0 }, { 35,4823 }, { 0, 0 }, { 37,4823 }, { 38,4823 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,4823 }, { 43,4823 }, { 33,4812 }, { 45,4823 }, { 35,4812 }, { 47,4823 }, { 37,4812 }, { 38,4812 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,4812 }, { 43,4812 }, { 0, 0 }, { 45,4812 }, { 0, 0 }, { 47,4812 }, { 0, 0 }, { 60,4823 }, { 61,7774 }, { 62,7785 }, { 63,4823 }, { 64,4823 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,4812 }, { 61,4812 }, { 62,7841 }, { 63,4812 }, { 64,4812 }, { 0, 0 }, { 0, 54 }, { 0,26130 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,4823 }, { 0, 0 }, { 96,4823 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,4812 }, { 0, 0 }, { 96,4812 }, { 0, 0 }, { 0, 71 }, { 0,26098 }, { 33,4745 }, { 0, 0 }, { 35,4745 }, { 0, 0 }, { 37,4745 }, { 38,4745 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,4745 }, { 43,4745 }, { 0, 0 }, { 45,4745 }, { 124,4823 }, { 47,4745 }, { 126,4823 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,4812 }, { 0, 0 }, { 126,4812 }, { 60,4745 }, { 61,7814 }, { 62,4745 }, { 63,4745 }, { 64,4745 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,7848 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,7848 }, { 49,7848 }, { 50,7848 }, { 51,7848 }, { 52,7848 }, { 53,7848 }, { 54,7848 }, { 55,7848 }, { 56,7848 }, { 57,7848 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,4745 }, { 0, 0 }, { 96,4745 }, { 65,7848 }, { 66,7848 }, { 67,7848 }, { 68,7848 }, { 69,7848 }, { 70,7848 }, { 71,7848 }, { 72,7848 }, { 73,7848 }, { 74,7848 }, { 75,7848 }, { 76,7848 }, { 77,7848 }, { 78,7848 }, { 79,7848 }, { 80,7848 }, { 81,7848 }, { 82,7848 }, { 83,7848 }, { 84,7848 }, { 85,7848 }, { 86,7848 }, { 87,7848 }, { 88,7848 }, { 89,7848 }, { 90,7848 }, { 0, 0 }, { 124,4745 }, { 0, 0 }, { 126,4745 }, { 95,7848 }, { 0, 0 }, { 97,7848 }, { 98,7848 }, { 99,7848 }, { 100,7848 }, { 101,7848 }, { 102,7848 }, { 103,7848 }, { 104,7848 }, { 105,7848 }, { 106,7848 }, { 107,7848 }, { 108,7848 }, { 109,7848 }, { 110,7848 }, { 111,7848 }, { 112,7848 }, { 113,7848 }, { 114,7848 }, { 115,7848 }, { 116,7848 }, { 117,7848 }, { 118,7848 }, { 119,7848 }, { 120,7848 }, { 121,7848 }, { 122,7848 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,7848 }, { 129,7848 }, { 130,7848 }, { 131,7848 }, { 132,7848 }, { 133,7848 }, { 134,7848 }, { 135,7848 }, { 136,7848 }, { 137,7848 }, { 138,7848 }, { 139,7848 }, { 140,7848 }, { 141,7848 }, { 142,7848 }, { 143,7848 }, { 144,7848 }, { 145,7848 }, { 146,7848 }, { 147,7848 }, { 148,7848 }, { 149,7848 }, { 150,7848 }, { 151,7848 }, { 152,7848 }, { 153,7848 }, { 154,7848 }, { 155,7848 }, { 156,7848 }, { 157,7848 }, { 158,7848 }, { 159,7848 }, { 160,7848 }, { 161,7848 }, { 162,7848 }, { 163,7848 }, { 164,7848 }, { 165,7848 }, { 166,7848 }, { 167,7848 }, { 168,7848 }, { 169,7848 }, { 170,7848 }, { 171,7848 }, { 172,7848 }, { 173,7848 }, { 174,7848 }, { 175,7848 }, { 176,7848 }, { 177,7848 }, { 178,7848 }, { 179,7848 }, { 180,7848 }, { 181,7848 }, { 182,7848 }, { 183,7848 }, { 184,7848 }, { 185,7848 }, { 186,7848 }, { 187,7848 }, { 188,7848 }, { 189,7848 }, { 190,7848 }, { 191,7848 }, { 192,7848 }, { 193,7848 }, { 194,7848 }, { 195,7848 }, { 196,7848 }, { 197,7848 }, { 198,7848 }, { 199,7848 }, { 200,7848 }, { 201,7848 }, { 202,7848 }, { 203,7848 }, { 204,7848 }, { 205,7848 }, { 206,7848 }, { 207,7848 }, { 208,7848 }, { 209,7848 }, { 210,7848 }, { 211,7848 }, { 212,7848 }, { 213,7848 }, { 214,7848 }, { 215,7848 }, { 216,7848 }, { 217,7848 }, { 218,7848 }, { 219,7848 }, { 220,7848 }, { 221,7848 }, { 222,7848 }, { 223,7848 }, { 224,7848 }, { 225,7848 }, { 226,7848 }, { 227,7848 }, { 228,7848 }, { 229,7848 }, { 230,7848 }, { 231,7848 }, { 232,7848 }, { 233,7848 }, { 234,7848 }, { 235,7848 }, { 236,7848 }, { 237,7848 }, { 238,7848 }, { 239,7848 }, { 240,7848 }, { 241,7848 }, { 242,7848 }, { 243,7848 }, { 244,7848 }, { 245,7848 }, { 246,7848 }, { 247,7848 }, { 248,7848 }, { 249,7848 }, { 250,7848 }, { 251,7848 }, { 252,7848 }, { 253,7848 }, { 254,7848 }, { 255,7848 }, { 0, 71 }, { 0,25841 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,7591 }, { 0, 0 }, { 0, 0 }, { 39,-1255 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,7591 }, { 49,7591 }, { 50,7591 }, { 51,7591 }, { 52,7591 }, { 53,7591 }, { 54,7591 }, { 55,7591 }, { 56,7591 }, { 57,7591 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,7591 }, { 66,7591 }, { 67,7591 }, { 68,7591 }, { 69,7591 }, { 70,7591 }, { 71,7591 }, { 72,7591 }, { 73,7591 }, { 74,7591 }, { 75,7591 }, { 76,7591 }, { 77,7591 }, { 78,7591 }, { 79,7591 }, { 80,7591 }, { 81,7591 }, { 82,7591 }, { 83,7591 }, { 84,7591 }, { 85,7591 }, { 86,7591 }, { 87,7591 }, { 88,7591 }, { 89,7591 }, { 90,7591 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,7591 }, { 0, 0 }, { 97,7591 }, { 98,7591 }, { 99,7591 }, { 100,7591 }, { 101,7591 }, { 102,7591 }, { 103,7591 }, { 104,7591 }, { 105,7591 }, { 106,7591 }, { 107,7591 }, { 108,7591 }, { 109,7591 }, { 110,7591 }, { 111,7591 }, { 112,7591 }, { 113,7591 }, { 114,7591 }, { 115,7591 }, { 116,7591 }, { 117,7591 }, { 118,7591 }, { 119,7591 }, { 120,7591 }, { 121,7591 }, { 122,7591 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,7591 }, { 129,7591 }, { 130,7591 }, { 131,7591 }, { 132,7591 }, { 133,7591 }, { 134,7591 }, { 135,7591 }, { 136,7591 }, { 137,7591 }, { 138,7591 }, { 139,7591 }, { 140,7591 }, { 141,7591 }, { 142,7591 }, { 143,7591 }, { 144,7591 }, { 145,7591 }, { 146,7591 }, { 147,7591 }, { 148,7591 }, { 149,7591 }, { 150,7591 }, { 151,7591 }, { 152,7591 }, { 153,7591 }, { 154,7591 }, { 155,7591 }, { 156,7591 }, { 157,7591 }, { 158,7591 }, { 159,7591 }, { 160,7591 }, { 161,7591 }, { 162,7591 }, { 163,7591 }, { 164,7591 }, { 165,7591 }, { 166,7591 }, { 167,7591 }, { 168,7591 }, { 169,7591 }, { 170,7591 }, { 171,7591 }, { 172,7591 }, { 173,7591 }, { 174,7591 }, { 175,7591 }, { 176,7591 }, { 177,7591 }, { 178,7591 }, { 179,7591 }, { 180,7591 }, { 181,7591 }, { 182,7591 }, { 183,7591 }, { 184,7591 }, { 185,7591 }, { 186,7591 }, { 187,7591 }, { 188,7591 }, { 189,7591 }, { 190,7591 }, { 191,7591 }, { 192,7591 }, { 193,7591 }, { 194,7591 }, { 195,7591 }, { 196,7591 }, { 197,7591 }, { 198,7591 }, { 199,7591 }, { 200,7591 }, { 201,7591 }, { 202,7591 }, { 203,7591 }, { 204,7591 }, { 205,7591 }, { 206,7591 }, { 207,7591 }, { 208,7591 }, { 209,7591 }, { 210,7591 }, { 211,7591 }, { 212,7591 }, { 213,7591 }, { 214,7591 }, { 215,7591 }, { 216,7591 }, { 217,7591 }, { 218,7591 }, { 219,7591 }, { 220,7591 }, { 221,7591 }, { 222,7591 }, { 223,7591 }, { 224,7591 }, { 225,7591 }, { 226,7591 }, { 227,7591 }, { 228,7591 }, { 229,7591 }, { 230,7591 }, { 231,7591 }, { 232,7591 }, { 233,7591 }, { 234,7591 }, { 235,7591 }, { 236,7591 }, { 237,7591 }, { 238,7591 }, { 239,7591 }, { 240,7591 }, { 241,7591 }, { 242,7591 }, { 243,7591 }, { 244,7591 }, { 245,7591 }, { 246,7591 }, { 247,7591 }, { 248,7591 }, { 249,7591 }, { 250,7591 }, { 251,7591 }, { 252,7591 }, { 253,7591 }, { 254,7591 }, { 255,7591 }, { 0, 71 }, { 0,25584 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,7334 }, { 0, 0 }, { 0, 0 }, { 39,-1506 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,7334 }, { 49,7334 }, { 50,7334 }, { 51,7334 }, { 52,7334 }, { 53,7334 }, { 54,7334 }, { 55,7334 }, { 56,7334 }, { 57,7334 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,7334 }, { 66,7334 }, { 67,7334 }, { 68,7334 }, { 69,7334 }, { 70,7334 }, { 71,7334 }, { 72,7334 }, { 73,7334 }, { 74,7334 }, { 75,7334 }, { 76,7334 }, { 77,7334 }, { 78,7334 }, { 79,7334 }, { 80,7334 }, { 81,7334 }, { 82,7334 }, { 83,7334 }, { 84,7334 }, { 85,7334 }, { 86,7334 }, { 87,7334 }, { 88,7334 }, { 89,7334 }, { 90,7334 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,7334 }, { 0, 0 }, { 97,7334 }, { 98,7334 }, { 99,7334 }, { 100,7334 }, { 101,7334 }, { 102,7334 }, { 103,7334 }, { 104,7334 }, { 105,7334 }, { 106,7334 }, { 107,7334 }, { 108,7334 }, { 109,7334 }, { 110,7334 }, { 111,7334 }, { 112,7334 }, { 113,7334 }, { 114,7334 }, { 115,7334 }, { 116,7334 }, { 117,7334 }, { 118,7334 }, { 119,7334 }, { 120,7334 }, { 121,7334 }, { 122,7334 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,7334 }, { 129,7334 }, { 130,7334 }, { 131,7334 }, { 132,7334 }, { 133,7334 }, { 134,7334 }, { 135,7334 }, { 136,7334 }, { 137,7334 }, { 138,7334 }, { 139,7334 }, { 140,7334 }, { 141,7334 }, { 142,7334 }, { 143,7334 }, { 144,7334 }, { 145,7334 }, { 146,7334 }, { 147,7334 }, { 148,7334 }, { 149,7334 }, { 150,7334 }, { 151,7334 }, { 152,7334 }, { 153,7334 }, { 154,7334 }, { 155,7334 }, { 156,7334 }, { 157,7334 }, { 158,7334 }, { 159,7334 }, { 160,7334 }, { 161,7334 }, { 162,7334 }, { 163,7334 }, { 164,7334 }, { 165,7334 }, { 166,7334 }, { 167,7334 }, { 168,7334 }, { 169,7334 }, { 170,7334 }, { 171,7334 }, { 172,7334 }, { 173,7334 }, { 174,7334 }, { 175,7334 }, { 176,7334 }, { 177,7334 }, { 178,7334 }, { 179,7334 }, { 180,7334 }, { 181,7334 }, { 182,7334 }, { 183,7334 }, { 184,7334 }, { 185,7334 }, { 186,7334 }, { 187,7334 }, { 188,7334 }, { 189,7334 }, { 190,7334 }, { 191,7334 }, { 192,7334 }, { 193,7334 }, { 194,7334 }, { 195,7334 }, { 196,7334 }, { 197,7334 }, { 198,7334 }, { 199,7334 }, { 200,7334 }, { 201,7334 }, { 202,7334 }, { 203,7334 }, { 204,7334 }, { 205,7334 }, { 206,7334 }, { 207,7334 }, { 208,7334 }, { 209,7334 }, { 210,7334 }, { 211,7334 }, { 212,7334 }, { 213,7334 }, { 214,7334 }, { 215,7334 }, { 216,7334 }, { 217,7334 }, { 218,7334 }, { 219,7334 }, { 220,7334 }, { 221,7334 }, { 222,7334 }, { 223,7334 }, { 224,7334 }, { 225,7334 }, { 226,7334 }, { 227,7334 }, { 228,7334 }, { 229,7334 }, { 230,7334 }, { 231,7334 }, { 232,7334 }, { 233,7334 }, { 234,7334 }, { 235,7334 }, { 236,7334 }, { 237,7334 }, { 238,7334 }, { 239,7334 }, { 240,7334 }, { 241,7334 }, { 242,7334 }, { 243,7334 }, { 244,7334 }, { 245,7334 }, { 246,7334 }, { 247,7334 }, { 248,7334 }, { 249,7334 }, { 250,7334 }, { 251,7334 }, { 252,7334 }, { 253,7334 }, { 254,7334 }, { 255,7334 }, { 0, 71 }, { 0,25327 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,7077 }, { 0, 0 }, { 0, 0 }, { 39,-1761 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,7077 }, { 49,7077 }, { 50,7077 }, { 51,7077 }, { 52,7077 }, { 53,7077 }, { 54,7077 }, { 55,7077 }, { 56,7077 }, { 57,7077 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,7077 }, { 66,7077 }, { 67,7077 }, { 68,7077 }, { 69,7077 }, { 70,7077 }, { 71,7077 }, { 72,7077 }, { 73,7077 }, { 74,7077 }, { 75,7077 }, { 76,7077 }, { 77,7077 }, { 78,7077 }, { 79,7077 }, { 80,7077 }, { 81,7077 }, { 82,7077 }, { 83,7077 }, { 84,7077 }, { 85,7077 }, { 86,7077 }, { 87,7077 }, { 88,7077 }, { 89,7077 }, { 90,7077 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,7077 }, { 0, 0 }, { 97,7077 }, { 98,7077 }, { 99,7077 }, { 100,7077 }, { 101,7077 }, { 102,7077 }, { 103,7077 }, { 104,7077 }, { 105,7077 }, { 106,7077 }, { 107,7077 }, { 108,7077 }, { 109,7077 }, { 110,7077 }, { 111,7077 }, { 112,7077 }, { 113,7077 }, { 114,7077 }, { 115,7077 }, { 116,7077 }, { 117,7077 }, { 118,7077 }, { 119,7077 }, { 120,7077 }, { 121,7077 }, { 122,7077 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,7077 }, { 129,7077 }, { 130,7077 }, { 131,7077 }, { 132,7077 }, { 133,7077 }, { 134,7077 }, { 135,7077 }, { 136,7077 }, { 137,7077 }, { 138,7077 }, { 139,7077 }, { 140,7077 }, { 141,7077 }, { 142,7077 }, { 143,7077 }, { 144,7077 }, { 145,7077 }, { 146,7077 }, { 147,7077 }, { 148,7077 }, { 149,7077 }, { 150,7077 }, { 151,7077 }, { 152,7077 }, { 153,7077 }, { 154,7077 }, { 155,7077 }, { 156,7077 }, { 157,7077 }, { 158,7077 }, { 159,7077 }, { 160,7077 }, { 161,7077 }, { 162,7077 }, { 163,7077 }, { 164,7077 }, { 165,7077 }, { 166,7077 }, { 167,7077 }, { 168,7077 }, { 169,7077 }, { 170,7077 }, { 171,7077 }, { 172,7077 }, { 173,7077 }, { 174,7077 }, { 175,7077 }, { 176,7077 }, { 177,7077 }, { 178,7077 }, { 179,7077 }, { 180,7077 }, { 181,7077 }, { 182,7077 }, { 183,7077 }, { 184,7077 }, { 185,7077 }, { 186,7077 }, { 187,7077 }, { 188,7077 }, { 189,7077 }, { 190,7077 }, { 191,7077 }, { 192,7077 }, { 193,7077 }, { 194,7077 }, { 195,7077 }, { 196,7077 }, { 197,7077 }, { 198,7077 }, { 199,7077 }, { 200,7077 }, { 201,7077 }, { 202,7077 }, { 203,7077 }, { 204,7077 }, { 205,7077 }, { 206,7077 }, { 207,7077 }, { 208,7077 }, { 209,7077 }, { 210,7077 }, { 211,7077 }, { 212,7077 }, { 213,7077 }, { 214,7077 }, { 215,7077 }, { 216,7077 }, { 217,7077 }, { 218,7077 }, { 219,7077 }, { 220,7077 }, { 221,7077 }, { 222,7077 }, { 223,7077 }, { 224,7077 }, { 225,7077 }, { 226,7077 }, { 227,7077 }, { 228,7077 }, { 229,7077 }, { 230,7077 }, { 231,7077 }, { 232,7077 }, { 233,7077 }, { 234,7077 }, { 235,7077 }, { 236,7077 }, { 237,7077 }, { 238,7077 }, { 239,7077 }, { 240,7077 }, { 241,7077 }, { 242,7077 }, { 243,7077 }, { 244,7077 }, { 245,7077 }, { 246,7077 }, { 247,7077 }, { 248,7077 }, { 249,7077 }, { 250,7077 }, { 251,7077 }, { 252,7077 }, { 253,7077 }, { 254,7077 }, { 255,7077 }, { 0, 71 }, { 0,25070 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,6820 }, { 0, 0 }, { 38,-1783 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,6820 }, { 49,6820 }, { 50,6820 }, { 51,6820 }, { 52,6820 }, { 53,6820 }, { 54,6820 }, { 55,6820 }, { 56,6820 }, { 57,6820 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,6820 }, { 66,6820 }, { 67,6820 }, { 68,6820 }, { 69,6820 }, { 70,6820 }, { 71,6820 }, { 72,6820 }, { 73,6820 }, { 74,6820 }, { 75,6820 }, { 76,6820 }, { 77,6820 }, { 78,6820 }, { 79,6820 }, { 80,6820 }, { 81,6820 }, { 82,6820 }, { 83,6820 }, { 84,6820 }, { 85,6820 }, { 86,6820 }, { 87,6820 }, { 88,6820 }, { 89,6820 }, { 90,6820 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,6820 }, { 0, 0 }, { 97,6820 }, { 98,6820 }, { 99,6820 }, { 100,6820 }, { 101,6820 }, { 102,6820 }, { 103,6820 }, { 104,6820 }, { 105,6820 }, { 106,6820 }, { 107,6820 }, { 108,6820 }, { 109,6820 }, { 110,6820 }, { 111,6820 }, { 112,6820 }, { 113,6820 }, { 114,6820 }, { 115,6820 }, { 116,6820 }, { 117,6820 }, { 118,6820 }, { 119,6820 }, { 120,6820 }, { 121,6820 }, { 122,6820 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,6820 }, { 129,6820 }, { 130,6820 }, { 131,6820 }, { 132,6820 }, { 133,6820 }, { 134,6820 }, { 135,6820 }, { 136,6820 }, { 137,6820 }, { 138,6820 }, { 139,6820 }, { 140,6820 }, { 141,6820 }, { 142,6820 }, { 143,6820 }, { 144,6820 }, { 145,6820 }, { 146,6820 }, { 147,6820 }, { 148,6820 }, { 149,6820 }, { 150,6820 }, { 151,6820 }, { 152,6820 }, { 153,6820 }, { 154,6820 }, { 155,6820 }, { 156,6820 }, { 157,6820 }, { 158,6820 }, { 159,6820 }, { 160,6820 }, { 161,6820 }, { 162,6820 }, { 163,6820 }, { 164,6820 }, { 165,6820 }, { 166,6820 }, { 167,6820 }, { 168,6820 }, { 169,6820 }, { 170,6820 }, { 171,6820 }, { 172,6820 }, { 173,6820 }, { 174,6820 }, { 175,6820 }, { 176,6820 }, { 177,6820 }, { 178,6820 }, { 179,6820 }, { 180,6820 }, { 181,6820 }, { 182,6820 }, { 183,6820 }, { 184,6820 }, { 185,6820 }, { 186,6820 }, { 187,6820 }, { 188,6820 }, { 189,6820 }, { 190,6820 }, { 191,6820 }, { 192,6820 }, { 193,6820 }, { 194,6820 }, { 195,6820 }, { 196,6820 }, { 197,6820 }, { 198,6820 }, { 199,6820 }, { 200,6820 }, { 201,6820 }, { 202,6820 }, { 203,6820 }, { 204,6820 }, { 205,6820 }, { 206,6820 }, { 207,6820 }, { 208,6820 }, { 209,6820 }, { 210,6820 }, { 211,6820 }, { 212,6820 }, { 213,6820 }, { 214,6820 }, { 215,6820 }, { 216,6820 }, { 217,6820 }, { 218,6820 }, { 219,6820 }, { 220,6820 }, { 221,6820 }, { 222,6820 }, { 223,6820 }, { 224,6820 }, { 225,6820 }, { 226,6820 }, { 227,6820 }, { 228,6820 }, { 229,6820 }, { 230,6820 }, { 231,6820 }, { 232,6820 }, { 233,6820 }, { 234,6820 }, { 235,6820 }, { 236,6820 }, { 237,6820 }, { 238,6820 }, { 239,6820 }, { 240,6820 }, { 241,6820 }, { 242,6820 }, { 243,6820 }, { 244,6820 }, { 245,6820 }, { 246,6820 }, { 247,6820 }, { 248,6820 }, { 249,6820 }, { 250,6820 }, { 251,6820 }, { 252,6820 }, { 253,6820 }, { 254,6820 }, { 255,6820 }, { 0, 71 }, { 0,24813 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,6563 }, { 0, 0 }, { 0, 0 }, { 39,-2038 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,6563 }, { 49,6563 }, { 50,6563 }, { 51,6563 }, { 52,6563 }, { 53,6563 }, { 54,6563 }, { 55,6563 }, { 56,6563 }, { 57,6563 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,6563 }, { 66,6563 }, { 67,6563 }, { 68,6563 }, { 69,6563 }, { 70,6563 }, { 71,6563 }, { 72,6563 }, { 73,6563 }, { 74,6563 }, { 75,6563 }, { 76,6563 }, { 77,6563 }, { 78,6563 }, { 79,6563 }, { 80,6563 }, { 81,6563 }, { 82,6563 }, { 83,6563 }, { 84,6563 }, { 85,6563 }, { 86,6563 }, { 87,6563 }, { 88,6563 }, { 89,6563 }, { 90,6563 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,6563 }, { 0, 0 }, { 97,6563 }, { 98,6563 }, { 99,6563 }, { 100,6563 }, { 101,6563 }, { 102,6563 }, { 103,6563 }, { 104,6563 }, { 105,6563 }, { 106,6563 }, { 107,6563 }, { 108,6563 }, { 109,6563 }, { 110,6563 }, { 111,6563 }, { 112,6563 }, { 113,6563 }, { 114,6563 }, { 115,6563 }, { 116,6563 }, { 117,6563 }, { 118,6563 }, { 119,6563 }, { 120,6563 }, { 121,6563 }, { 122,6563 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,6563 }, { 129,6563 }, { 130,6563 }, { 131,6563 }, { 132,6563 }, { 133,6563 }, { 134,6563 }, { 135,6563 }, { 136,6563 }, { 137,6563 }, { 138,6563 }, { 139,6563 }, { 140,6563 }, { 141,6563 }, { 142,6563 }, { 143,6563 }, { 144,6563 }, { 145,6563 }, { 146,6563 }, { 147,6563 }, { 148,6563 }, { 149,6563 }, { 150,6563 }, { 151,6563 }, { 152,6563 }, { 153,6563 }, { 154,6563 }, { 155,6563 }, { 156,6563 }, { 157,6563 }, { 158,6563 }, { 159,6563 }, { 160,6563 }, { 161,6563 }, { 162,6563 }, { 163,6563 }, { 164,6563 }, { 165,6563 }, { 166,6563 }, { 167,6563 }, { 168,6563 }, { 169,6563 }, { 170,6563 }, { 171,6563 }, { 172,6563 }, { 173,6563 }, { 174,6563 }, { 175,6563 }, { 176,6563 }, { 177,6563 }, { 178,6563 }, { 179,6563 }, { 180,6563 }, { 181,6563 }, { 182,6563 }, { 183,6563 }, { 184,6563 }, { 185,6563 }, { 186,6563 }, { 187,6563 }, { 188,6563 }, { 189,6563 }, { 190,6563 }, { 191,6563 }, { 192,6563 }, { 193,6563 }, { 194,6563 }, { 195,6563 }, { 196,6563 }, { 197,6563 }, { 198,6563 }, { 199,6563 }, { 200,6563 }, { 201,6563 }, { 202,6563 }, { 203,6563 }, { 204,6563 }, { 205,6563 }, { 206,6563 }, { 207,6563 }, { 208,6563 }, { 209,6563 }, { 210,6563 }, { 211,6563 }, { 212,6563 }, { 213,6563 }, { 214,6563 }, { 215,6563 }, { 216,6563 }, { 217,6563 }, { 218,6563 }, { 219,6563 }, { 220,6563 }, { 221,6563 }, { 222,6563 }, { 223,6563 }, { 224,6563 }, { 225,6563 }, { 226,6563 }, { 227,6563 }, { 228,6563 }, { 229,6563 }, { 230,6563 }, { 231,6563 }, { 232,6563 }, { 233,6563 }, { 234,6563 }, { 235,6563 }, { 236,6563 }, { 237,6563 }, { 238,6563 }, { 239,6563 }, { 240,6563 }, { 241,6563 }, { 242,6563 }, { 243,6563 }, { 244,6563 }, { 245,6563 }, { 246,6563 }, { 247,6563 }, { 248,6563 }, { 249,6563 }, { 250,6563 }, { 251,6563 }, { 252,6563 }, { 253,6563 }, { 254,6563 }, { 255,6563 }, { 0, 11 }, { 0,24556 }, { 1,6563 }, { 2,6563 }, { 3,6563 }, { 4,6563 }, { 5,6563 }, { 6,6563 }, { 7,6563 }, { 8,6563 }, { 9,6563 }, { 10,6563 }, { 11,6563 }, { 12,6563 }, { 13,6563 }, { 14,6563 }, { 15,6563 }, { 16,6563 }, { 17,6563 }, { 18,6563 }, { 19,6563 }, { 20,6563 }, { 21,6563 }, { 22,6563 }, { 23,6563 }, { 24,6563 }, { 25,6563 }, { 26,6563 }, { 27,6563 }, { 28,6563 }, { 29,6563 }, { 30,6563 }, { 31,6563 }, { 32,6563 }, { 33,6563 }, { 34,6563 }, { 35,6563 }, { 36,6563 }, { 37,6563 }, { 38,6563 }, { 0, 0 }, { 40,6563 }, { 41,6563 }, { 42,6563 }, { 43,6563 }, { 44,6563 }, { 45,6563 }, { 46,6563 }, { 47,6563 }, { 48,6563 }, { 49,6563 }, { 50,6563 }, { 51,6563 }, { 52,6563 }, { 53,6563 }, { 54,6563 }, { 55,6563 }, { 56,6563 }, { 57,6563 }, { 58,6563 }, { 59,6563 }, { 60,6563 }, { 61,6563 }, { 62,6563 }, { 63,6563 }, { 64,6563 }, { 65,6563 }, { 66,6563 }, { 67,6563 }, { 68,6563 }, { 69,6563 }, { 70,6563 }, { 71,6563 }, { 72,6563 }, { 73,6563 }, { 74,6563 }, { 75,6563 }, { 76,6563 }, { 77,6563 }, { 78,6563 }, { 79,6563 }, { 80,6563 }, { 81,6563 }, { 82,6563 }, { 83,6563 }, { 84,6563 }, { 85,6563 }, { 86,6563 }, { 87,6563 }, { 88,6563 }, { 89,6563 }, { 90,6563 }, { 91,6563 }, { 92,6563 }, { 93,6563 }, { 94,6563 }, { 95,6563 }, { 96,6563 }, { 97,6563 }, { 98,6563 }, { 99,6563 }, { 100,6563 }, { 101,6563 }, { 102,6563 }, { 103,6563 }, { 104,6563 }, { 105,6563 }, { 106,6563 }, { 107,6563 }, { 108,6563 }, { 109,6563 }, { 110,6563 }, { 111,6563 }, { 112,6563 }, { 113,6563 }, { 114,6563 }, { 115,6563 }, { 116,6563 }, { 117,6563 }, { 118,6563 }, { 119,6563 }, { 120,6563 }, { 121,6563 }, { 122,6563 }, { 123,6563 }, { 124,6563 }, { 125,6563 }, { 126,6563 }, { 127,6563 }, { 128,6563 }, { 129,6563 }, { 130,6563 }, { 131,6563 }, { 132,6563 }, { 133,6563 }, { 134,6563 }, { 135,6563 }, { 136,6563 }, { 137,6563 }, { 138,6563 }, { 139,6563 }, { 140,6563 }, { 141,6563 }, { 142,6563 }, { 143,6563 }, { 144,6563 }, { 145,6563 }, { 146,6563 }, { 147,6563 }, { 148,6563 }, { 149,6563 }, { 150,6563 }, { 151,6563 }, { 152,6563 }, { 153,6563 }, { 154,6563 }, { 155,6563 }, { 156,6563 }, { 157,6563 }, { 158,6563 }, { 159,6563 }, { 160,6563 }, { 161,6563 }, { 162,6563 }, { 163,6563 }, { 164,6563 }, { 165,6563 }, { 166,6563 }, { 167,6563 }, { 168,6563 }, { 169,6563 }, { 170,6563 }, { 171,6563 }, { 172,6563 }, { 173,6563 }, { 174,6563 }, { 175,6563 }, { 176,6563 }, { 177,6563 }, { 178,6563 }, { 179,6563 }, { 180,6563 }, { 181,6563 }, { 182,6563 }, { 183,6563 }, { 184,6563 }, { 185,6563 }, { 186,6563 }, { 187,6563 }, { 188,6563 }, { 189,6563 }, { 190,6563 }, { 191,6563 }, { 192,6563 }, { 193,6563 }, { 194,6563 }, { 195,6563 }, { 196,6563 }, { 197,6563 }, { 198,6563 }, { 199,6563 }, { 200,6563 }, { 201,6563 }, { 202,6563 }, { 203,6563 }, { 204,6563 }, { 205,6563 }, { 206,6563 }, { 207,6563 }, { 208,6563 }, { 209,6563 }, { 210,6563 }, { 211,6563 }, { 212,6563 }, { 213,6563 }, { 214,6563 }, { 215,6563 }, { 216,6563 }, { 217,6563 }, { 218,6563 }, { 219,6563 }, { 220,6563 }, { 221,6563 }, { 222,6563 }, { 223,6563 }, { 224,6563 }, { 225,6563 }, { 226,6563 }, { 227,6563 }, { 228,6563 }, { 229,6563 }, { 230,6563 }, { 231,6563 }, { 232,6563 }, { 233,6563 }, { 234,6563 }, { 235,6563 }, { 236,6563 }, { 237,6563 }, { 238,6563 }, { 239,6563 }, { 240,6563 }, { 241,6563 }, { 242,6563 }, { 243,6563 }, { 244,6563 }, { 245,6563 }, { 246,6563 }, { 247,6563 }, { 248,6563 }, { 249,6563 }, { 250,6563 }, { 251,6563 }, { 252,6563 }, { 253,6563 }, { 254,6563 }, { 255,6563 }, { 256,6563 }, { 0, 6 }, { 0,24298 }, { 1,6563 }, { 2,6563 }, { 3,6563 }, { 4,6563 }, { 5,6563 }, { 6,6563 }, { 7,6563 }, { 8,6563 }, { 9,6563 }, { 10,6563 }, { 11,6563 }, { 12,6563 }, { 13,6563 }, { 14,6563 }, { 15,6563 }, { 16,6563 }, { 17,6563 }, { 18,6563 }, { 19,6563 }, { 20,6563 }, { 21,6563 }, { 22,6563 }, { 23,6563 }, { 24,6563 }, { 25,6563 }, { 26,6563 }, { 27,6563 }, { 28,6563 }, { 29,6563 }, { 30,6563 }, { 31,6563 }, { 32,6563 }, { 33,6563 }, { 34,6563 }, { 35,6563 }, { 36,6563 }, { 37,6563 }, { 38,6563 }, { 39,6563 }, { 40,6563 }, { 41,6563 }, { 0, 0 }, { 43,6563 }, { 44,6563 }, { 45,6563 }, { 46,6563 }, { 0, 0 }, { 48,6563 }, { 49,6563 }, { 50,6563 }, { 51,6563 }, { 52,6563 }, { 53,6563 }, { 54,6563 }, { 55,6563 }, { 56,6563 }, { 57,6563 }, { 58,6563 }, { 59,6563 }, { 60,6563 }, { 61,6563 }, { 62,6563 }, { 63,6563 }, { 64,6563 }, { 65,6563 }, { 66,6563 }, { 67,6563 }, { 68,6563 }, { 69,6563 }, { 70,6563 }, { 71,6563 }, { 72,6563 }, { 73,6563 }, { 74,6563 }, { 75,6563 }, { 76,6563 }, { 77,6563 }, { 78,6563 }, { 79,6563 }, { 80,6563 }, { 81,6563 }, { 82,6563 }, { 83,6563 }, { 84,6563 }, { 85,6563 }, { 86,6563 }, { 87,6563 }, { 88,6563 }, { 89,6563 }, { 90,6563 }, { 91,6563 }, { 92,6563 }, { 93,6563 }, { 94,6563 }, { 95,6563 }, { 96,6563 }, { 97,6563 }, { 98,6563 }, { 99,6563 }, { 100,6563 }, { 101,6563 }, { 102,6563 }, { 103,6563 }, { 104,6563 }, { 105,6563 }, { 106,6563 }, { 107,6563 }, { 108,6563 }, { 109,6563 }, { 110,6563 }, { 111,6563 }, { 112,6563 }, { 113,6563 }, { 114,6563 }, { 115,6563 }, { 116,6563 }, { 117,6563 }, { 118,6563 }, { 119,6563 }, { 120,6563 }, { 121,6563 }, { 122,6563 }, { 123,6563 }, { 124,6563 }, { 125,6563 }, { 126,6563 }, { 127,6563 }, { 128,6563 }, { 129,6563 }, { 130,6563 }, { 131,6563 }, { 132,6563 }, { 133,6563 }, { 134,6563 }, { 135,6563 }, { 136,6563 }, { 137,6563 }, { 138,6563 }, { 139,6563 }, { 140,6563 }, { 141,6563 }, { 142,6563 }, { 143,6563 }, { 144,6563 }, { 145,6563 }, { 146,6563 }, { 147,6563 }, { 148,6563 }, { 149,6563 }, { 150,6563 }, { 151,6563 }, { 152,6563 }, { 153,6563 }, { 154,6563 }, { 155,6563 }, { 156,6563 }, { 157,6563 }, { 158,6563 }, { 159,6563 }, { 160,6563 }, { 161,6563 }, { 162,6563 }, { 163,6563 }, { 164,6563 }, { 165,6563 }, { 166,6563 }, { 167,6563 }, { 168,6563 }, { 169,6563 }, { 170,6563 }, { 171,6563 }, { 172,6563 }, { 173,6563 }, { 174,6563 }, { 175,6563 }, { 176,6563 }, { 177,6563 }, { 178,6563 }, { 179,6563 }, { 180,6563 }, { 181,6563 }, { 182,6563 }, { 183,6563 }, { 184,6563 }, { 185,6563 }, { 186,6563 }, { 187,6563 }, { 188,6563 }, { 189,6563 }, { 190,6563 }, { 191,6563 }, { 192,6563 }, { 193,6563 }, { 194,6563 }, { 195,6563 }, { 196,6563 }, { 197,6563 }, { 198,6563 }, { 199,6563 }, { 200,6563 }, { 201,6563 }, { 202,6563 }, { 203,6563 }, { 204,6563 }, { 205,6563 }, { 206,6563 }, { 207,6563 }, { 208,6563 }, { 209,6563 }, { 210,6563 }, { 211,6563 }, { 212,6563 }, { 213,6563 }, { 214,6563 }, { 215,6563 }, { 216,6563 }, { 217,6563 }, { 218,6563 }, { 219,6563 }, { 220,6563 }, { 221,6563 }, { 222,6563 }, { 223,6563 }, { 224,6563 }, { 225,6563 }, { 226,6563 }, { 227,6563 }, { 228,6563 }, { 229,6563 }, { 230,6563 }, { 231,6563 }, { 232,6563 }, { 233,6563 }, { 234,6563 }, { 235,6563 }, { 236,6563 }, { 237,6563 }, { 238,6563 }, { 239,6563 }, { 240,6563 }, { 241,6563 }, { 242,6563 }, { 243,6563 }, { 244,6563 }, { 245,6563 }, { 246,6563 }, { 247,6563 }, { 248,6563 }, { 249,6563 }, { 250,6563 }, { 251,6563 }, { 252,6563 }, { 253,6563 }, { 254,6563 }, { 255,6563 }, { 256,6563 }, { 0, 6 }, { 0,24040 }, { 1,6305 }, { 2,6305 }, { 3,6305 }, { 4,6305 }, { 5,6305 }, { 6,6305 }, { 7,6305 }, { 8,6305 }, { 9,6305 }, { 10,6305 }, { 11,6305 }, { 12,6305 }, { 13,6305 }, { 14,6305 }, { 15,6305 }, { 16,6305 }, { 17,6305 }, { 18,6305 }, { 19,6305 }, { 20,6305 }, { 21,6305 }, { 22,6305 }, { 23,6305 }, { 24,6305 }, { 25,6305 }, { 26,6305 }, { 27,6305 }, { 28,6305 }, { 29,6305 }, { 30,6305 }, { 31,6305 }, { 32,6305 }, { 33,6305 }, { 34,6305 }, { 35,6305 }, { 36,6305 }, { 37,6305 }, { 38,6305 }, { 39,6305 }, { 40,6305 }, { 41,6305 }, { 0, 0 }, { 43,6305 }, { 44,6305 }, { 45,6305 }, { 46,6305 }, { 0, 0 }, { 48,6305 }, { 49,6305 }, { 50,6305 }, { 51,6305 }, { 52,6305 }, { 53,6305 }, { 54,6305 }, { 55,6305 }, { 56,6305 }, { 57,6305 }, { 58,6305 }, { 59,6305 }, { 60,6305 }, { 61,6305 }, { 62,6305 }, { 63,6305 }, { 64,6305 }, { 65,6305 }, { 66,6305 }, { 67,6305 }, { 68,6305 }, { 69,6305 }, { 70,6305 }, { 71,6305 }, { 72,6305 }, { 73,6305 }, { 74,6305 }, { 75,6305 }, { 76,6305 }, { 77,6305 }, { 78,6305 }, { 79,6305 }, { 80,6305 }, { 81,6305 }, { 82,6305 }, { 83,6305 }, { 84,6305 }, { 85,6305 }, { 86,6305 }, { 87,6305 }, { 88,6305 }, { 89,6305 }, { 90,6305 }, { 91,6305 }, { 92,6305 }, { 93,6305 }, { 94,6305 }, { 95,6305 }, { 96,6305 }, { 97,6305 }, { 98,6305 }, { 99,6305 }, { 100,6305 }, { 101,6305 }, { 102,6305 }, { 103,6305 }, { 104,6305 }, { 105,6305 }, { 106,6305 }, { 107,6305 }, { 108,6305 }, { 109,6305 }, { 110,6305 }, { 111,6305 }, { 112,6305 }, { 113,6305 }, { 114,6305 }, { 115,6305 }, { 116,6305 }, { 117,6305 }, { 118,6305 }, { 119,6305 }, { 120,6305 }, { 121,6305 }, { 122,6305 }, { 123,6305 }, { 124,6305 }, { 125,6305 }, { 126,6305 }, { 127,6305 }, { 128,6305 }, { 129,6305 }, { 130,6305 }, { 131,6305 }, { 132,6305 }, { 133,6305 }, { 134,6305 }, { 135,6305 }, { 136,6305 }, { 137,6305 }, { 138,6305 }, { 139,6305 }, { 140,6305 }, { 141,6305 }, { 142,6305 }, { 143,6305 }, { 144,6305 }, { 145,6305 }, { 146,6305 }, { 147,6305 }, { 148,6305 }, { 149,6305 }, { 150,6305 }, { 151,6305 }, { 152,6305 }, { 153,6305 }, { 154,6305 }, { 155,6305 }, { 156,6305 }, { 157,6305 }, { 158,6305 }, { 159,6305 }, { 160,6305 }, { 161,6305 }, { 162,6305 }, { 163,6305 }, { 164,6305 }, { 165,6305 }, { 166,6305 }, { 167,6305 }, { 168,6305 }, { 169,6305 }, { 170,6305 }, { 171,6305 }, { 172,6305 }, { 173,6305 }, { 174,6305 }, { 175,6305 }, { 176,6305 }, { 177,6305 }, { 178,6305 }, { 179,6305 }, { 180,6305 }, { 181,6305 }, { 182,6305 }, { 183,6305 }, { 184,6305 }, { 185,6305 }, { 186,6305 }, { 187,6305 }, { 188,6305 }, { 189,6305 }, { 190,6305 }, { 191,6305 }, { 192,6305 }, { 193,6305 }, { 194,6305 }, { 195,6305 }, { 196,6305 }, { 197,6305 }, { 198,6305 }, { 199,6305 }, { 200,6305 }, { 201,6305 }, { 202,6305 }, { 203,6305 }, { 204,6305 }, { 205,6305 }, { 206,6305 }, { 207,6305 }, { 208,6305 }, { 209,6305 }, { 210,6305 }, { 211,6305 }, { 212,6305 }, { 213,6305 }, { 214,6305 }, { 215,6305 }, { 216,6305 }, { 217,6305 }, { 218,6305 }, { 219,6305 }, { 220,6305 }, { 221,6305 }, { 222,6305 }, { 223,6305 }, { 224,6305 }, { 225,6305 }, { 226,6305 }, { 227,6305 }, { 228,6305 }, { 229,6305 }, { 230,6305 }, { 231,6305 }, { 232,6305 }, { 233,6305 }, { 234,6305 }, { 235,6305 }, { 236,6305 }, { 237,6305 }, { 238,6305 }, { 239,6305 }, { 240,6305 }, { 241,6305 }, { 242,6305 }, { 243,6305 }, { 244,6305 }, { 245,6305 }, { 246,6305 }, { 247,6305 }, { 248,6305 }, { 249,6305 }, { 250,6305 }, { 251,6305 }, { 252,6305 }, { 253,6305 }, { 254,6305 }, { 255,6305 }, { 256,6305 }, { 0, 44 }, { 0,23782 }, { 1,6433 }, { 2,6433 }, { 3,6433 }, { 4,6433 }, { 5,6433 }, { 6,6433 }, { 7,6433 }, { 8,6433 }, { 9,6433 }, { 10,6433 }, { 11,6433 }, { 12,6433 }, { 13,6433 }, { 14,6433 }, { 15,6433 }, { 16,6433 }, { 17,6433 }, { 18,6433 }, { 19,6433 }, { 20,6433 }, { 21,6433 }, { 22,6433 }, { 23,6433 }, { 24,6433 }, { 25,6433 }, { 26,6433 }, { 27,6433 }, { 28,6433 }, { 29,6433 }, { 30,6433 }, { 31,6433 }, { 32,6433 }, { 33,6433 }, { 0, 0 }, { 35,6433 }, { 36,6433 }, { 37,6433 }, { 38,6433 }, { 39,6433 }, { 40,6433 }, { 41,6433 }, { 42,6433 }, { 43,6433 }, { 44,6433 }, { 45,6433 }, { 46,6433 }, { 47,6433 }, { 48,6433 }, { 49,6433 }, { 50,6433 }, { 51,6433 }, { 52,6433 }, { 53,6433 }, { 54,6433 }, { 55,6433 }, { 56,6433 }, { 57,6433 }, { 58,6433 }, { 59,6433 }, { 60,6433 }, { 61,6433 }, { 62,6433 }, { 63,6433 }, { 64,6433 }, { 65,6433 }, { 66,6433 }, { 67,6433 }, { 68,6433 }, { 69,6433 }, { 70,6433 }, { 71,6433 }, { 72,6433 }, { 73,6433 }, { 74,6433 }, { 75,6433 }, { 76,6433 }, { 77,6433 }, { 78,6433 }, { 79,6433 }, { 80,6433 }, { 81,6433 }, { 82,6433 }, { 83,6433 }, { 84,6433 }, { 85,6433 }, { 86,6433 }, { 87,6433 }, { 88,6433 }, { 89,6433 }, { 90,6433 }, { 91,6433 }, { 92,6433 }, { 93,6433 }, { 94,6433 }, { 95,6433 }, { 96,6433 }, { 97,6433 }, { 98,6433 }, { 99,6433 }, { 100,6433 }, { 101,6433 }, { 102,6433 }, { 103,6433 }, { 104,6433 }, { 105,6433 }, { 106,6433 }, { 107,6433 }, { 108,6433 }, { 109,6433 }, { 110,6433 }, { 111,6433 }, { 112,6433 }, { 113,6433 }, { 114,6433 }, { 115,6433 }, { 116,6433 }, { 117,6433 }, { 118,6433 }, { 119,6433 }, { 120,6433 }, { 121,6433 }, { 122,6433 }, { 123,6433 }, { 124,6433 }, { 125,6433 }, { 126,6433 }, { 127,6433 }, { 128,6433 }, { 129,6433 }, { 130,6433 }, { 131,6433 }, { 132,6433 }, { 133,6433 }, { 134,6433 }, { 135,6433 }, { 136,6433 }, { 137,6433 }, { 138,6433 }, { 139,6433 }, { 140,6433 }, { 141,6433 }, { 142,6433 }, { 143,6433 }, { 144,6433 }, { 145,6433 }, { 146,6433 }, { 147,6433 }, { 148,6433 }, { 149,6433 }, { 150,6433 }, { 151,6433 }, { 152,6433 }, { 153,6433 }, { 154,6433 }, { 155,6433 }, { 156,6433 }, { 157,6433 }, { 158,6433 }, { 159,6433 }, { 160,6433 }, { 161,6433 }, { 162,6433 }, { 163,6433 }, { 164,6433 }, { 165,6433 }, { 166,6433 }, { 167,6433 }, { 168,6433 }, { 169,6433 }, { 170,6433 }, { 171,6433 }, { 172,6433 }, { 173,6433 }, { 174,6433 }, { 175,6433 }, { 176,6433 }, { 177,6433 }, { 178,6433 }, { 179,6433 }, { 180,6433 }, { 181,6433 }, { 182,6433 }, { 183,6433 }, { 184,6433 }, { 185,6433 }, { 186,6433 }, { 187,6433 }, { 188,6433 }, { 189,6433 }, { 190,6433 }, { 191,6433 }, { 192,6433 }, { 193,6433 }, { 194,6433 }, { 195,6433 }, { 196,6433 }, { 197,6433 }, { 198,6433 }, { 199,6433 }, { 200,6433 }, { 201,6433 }, { 202,6433 }, { 203,6433 }, { 204,6433 }, { 205,6433 }, { 206,6433 }, { 207,6433 }, { 208,6433 }, { 209,6433 }, { 210,6433 }, { 211,6433 }, { 212,6433 }, { 213,6433 }, { 214,6433 }, { 215,6433 }, { 216,6433 }, { 217,6433 }, { 218,6433 }, { 219,6433 }, { 220,6433 }, { 221,6433 }, { 222,6433 }, { 223,6433 }, { 224,6433 }, { 225,6433 }, { 226,6433 }, { 227,6433 }, { 228,6433 }, { 229,6433 }, { 230,6433 }, { 231,6433 }, { 232,6433 }, { 233,6433 }, { 234,6433 }, { 235,6433 }, { 236,6433 }, { 237,6433 }, { 238,6433 }, { 239,6433 }, { 240,6433 }, { 241,6433 }, { 242,6433 }, { 243,6433 }, { 244,6433 }, { 245,6433 }, { 246,6433 }, { 247,6433 }, { 248,6433 }, { 249,6433 }, { 250,6433 }, { 251,6433 }, { 252,6433 }, { 253,6433 }, { 254,6433 }, { 255,6433 }, { 256,6433 }, { 0, 10 }, { 0,23524 }, { 1,6433 }, { 2,6433 }, { 3,6433 }, { 4,6433 }, { 5,6433 }, { 6,6433 }, { 7,6433 }, { 8,6433 }, { 9,6433 }, { 10,6433 }, { 11,6433 }, { 12,6433 }, { 13,6433 }, { 14,6433 }, { 15,6433 }, { 16,6433 }, { 17,6433 }, { 18,6433 }, { 19,6433 }, { 20,6433 }, { 21,6433 }, { 22,6433 }, { 23,6433 }, { 24,6433 }, { 25,6433 }, { 26,6433 }, { 27,6433 }, { 28,6433 }, { 29,6433 }, { 30,6433 }, { 31,6433 }, { 32,6433 }, { 33,6433 }, { 34,6433 }, { 35,6433 }, { 36,6433 }, { 37,6433 }, { 38,6433 }, { 0, 0 }, { 40,6433 }, { 41,6433 }, { 42,6433 }, { 43,6433 }, { 44,6433 }, { 45,6433 }, { 46,6433 }, { 47,6433 }, { 48,6433 }, { 49,6433 }, { 50,6433 }, { 51,6433 }, { 52,6433 }, { 53,6433 }, { 54,6433 }, { 55,6433 }, { 56,6433 }, { 57,6433 }, { 58,6433 }, { 59,6433 }, { 60,6433 }, { 61,6433 }, { 62,6433 }, { 63,6433 }, { 64,6433 }, { 65,6433 }, { 66,6433 }, { 67,6433 }, { 68,6433 }, { 69,6433 }, { 70,6433 }, { 71,6433 }, { 72,6433 }, { 73,6433 }, { 74,6433 }, { 75,6433 }, { 76,6433 }, { 77,6433 }, { 78,6433 }, { 79,6433 }, { 80,6433 }, { 81,6433 }, { 82,6433 }, { 83,6433 }, { 84,6433 }, { 85,6433 }, { 86,6433 }, { 87,6433 }, { 88,6433 }, { 89,6433 }, { 90,6433 }, { 91,6433 }, { 92,6433 }, { 93,6433 }, { 94,6433 }, { 95,6433 }, { 96,6433 }, { 97,6433 }, { 98,6433 }, { 99,6433 }, { 100,6433 }, { 101,6433 }, { 102,6433 }, { 103,6433 }, { 104,6433 }, { 105,6433 }, { 106,6433 }, { 107,6433 }, { 108,6433 }, { 109,6433 }, { 110,6433 }, { 111,6433 }, { 112,6433 }, { 113,6433 }, { 114,6433 }, { 115,6433 }, { 116,6433 }, { 117,6433 }, { 118,6433 }, { 119,6433 }, { 120,6433 }, { 121,6433 }, { 122,6433 }, { 123,6433 }, { 124,6433 }, { 125,6433 }, { 126,6433 }, { 127,6433 }, { 128,6433 }, { 129,6433 }, { 130,6433 }, { 131,6433 }, { 132,6433 }, { 133,6433 }, { 134,6433 }, { 135,6433 }, { 136,6433 }, { 137,6433 }, { 138,6433 }, { 139,6433 }, { 140,6433 }, { 141,6433 }, { 142,6433 }, { 143,6433 }, { 144,6433 }, { 145,6433 }, { 146,6433 }, { 147,6433 }, { 148,6433 }, { 149,6433 }, { 150,6433 }, { 151,6433 }, { 152,6433 }, { 153,6433 }, { 154,6433 }, { 155,6433 }, { 156,6433 }, { 157,6433 }, { 158,6433 }, { 159,6433 }, { 160,6433 }, { 161,6433 }, { 162,6433 }, { 163,6433 }, { 164,6433 }, { 165,6433 }, { 166,6433 }, { 167,6433 }, { 168,6433 }, { 169,6433 }, { 170,6433 }, { 171,6433 }, { 172,6433 }, { 173,6433 }, { 174,6433 }, { 175,6433 }, { 176,6433 }, { 177,6433 }, { 178,6433 }, { 179,6433 }, { 180,6433 }, { 181,6433 }, { 182,6433 }, { 183,6433 }, { 184,6433 }, { 185,6433 }, { 186,6433 }, { 187,6433 }, { 188,6433 }, { 189,6433 }, { 190,6433 }, { 191,6433 }, { 192,6433 }, { 193,6433 }, { 194,6433 }, { 195,6433 }, { 196,6433 }, { 197,6433 }, { 198,6433 }, { 199,6433 }, { 200,6433 }, { 201,6433 }, { 202,6433 }, { 203,6433 }, { 204,6433 }, { 205,6433 }, { 206,6433 }, { 207,6433 }, { 208,6433 }, { 209,6433 }, { 210,6433 }, { 211,6433 }, { 212,6433 }, { 213,6433 }, { 214,6433 }, { 215,6433 }, { 216,6433 }, { 217,6433 }, { 218,6433 }, { 219,6433 }, { 220,6433 }, { 221,6433 }, { 222,6433 }, { 223,6433 }, { 224,6433 }, { 225,6433 }, { 226,6433 }, { 227,6433 }, { 228,6433 }, { 229,6433 }, { 230,6433 }, { 231,6433 }, { 232,6433 }, { 233,6433 }, { 234,6433 }, { 235,6433 }, { 236,6433 }, { 237,6433 }, { 238,6433 }, { 239,6433 }, { 240,6433 }, { 241,6433 }, { 242,6433 }, { 243,6433 }, { 244,6433 }, { 245,6433 }, { 246,6433 }, { 247,6433 }, { 248,6433 }, { 249,6433 }, { 250,6433 }, { 251,6433 }, { 252,6433 }, { 253,6433 }, { 254,6433 }, { 255,6433 }, { 256,6433 }, { 0, 22 }, { 0,23266 }, { 1,6433 }, { 2,6433 }, { 3,6433 }, { 4,6433 }, { 5,6433 }, { 6,6433 }, { 7,6433 }, { 8,6433 }, { 9,6433 }, { 10,6433 }, { 11,6433 }, { 12,6433 }, { 13,6433 }, { 14,6433 }, { 15,6433 }, { 16,6433 }, { 17,6433 }, { 18,6433 }, { 19,6433 }, { 20,6433 }, { 21,6433 }, { 22,6433 }, { 23,6433 }, { 24,6433 }, { 25,6433 }, { 26,6433 }, { 27,6433 }, { 28,6433 }, { 29,6433 }, { 30,6433 }, { 31,6433 }, { 32,6433 }, { 33,6433 }, { 34,6433 }, { 35,6433 }, { 36,6433 }, { 37,6433 }, { 38,6433 }, { 0, 0 }, { 40,6433 }, { 41,6433 }, { 42,6433 }, { 43,6433 }, { 44,6433 }, { 45,6433 }, { 46,6433 }, { 47,6433 }, { 48,6433 }, { 49,6433 }, { 50,6433 }, { 51,6433 }, { 52,6433 }, { 53,6433 }, { 54,6433 }, { 55,6433 }, { 56,6433 }, { 57,6433 }, { 58,6433 }, { 59,6433 }, { 60,6433 }, { 61,6433 }, { 62,6433 }, { 63,6433 }, { 64,6433 }, { 65,6433 }, { 66,6433 }, { 67,6433 }, { 68,6433 }, { 69,6433 }, { 70,6433 }, { 71,6433 }, { 72,6433 }, { 73,6433 }, { 74,6433 }, { 75,6433 }, { 76,6433 }, { 77,6433 }, { 78,6433 }, { 79,6433 }, { 80,6433 }, { 81,6433 }, { 82,6433 }, { 83,6433 }, { 84,6433 }, { 85,6433 }, { 86,6433 }, { 87,6433 }, { 88,6433 }, { 89,6433 }, { 90,6433 }, { 91,6433 }, { 92,6433 }, { 93,6433 }, { 94,6433 }, { 95,6433 }, { 96,6433 }, { 97,6433 }, { 98,6433 }, { 99,6433 }, { 100,6433 }, { 101,6433 }, { 102,6433 }, { 103,6433 }, { 104,6433 }, { 105,6433 }, { 106,6433 }, { 107,6433 }, { 108,6433 }, { 109,6433 }, { 110,6433 }, { 111,6433 }, { 112,6433 }, { 113,6433 }, { 114,6433 }, { 115,6433 }, { 116,6433 }, { 117,6433 }, { 118,6433 }, { 119,6433 }, { 120,6433 }, { 121,6433 }, { 122,6433 }, { 123,6433 }, { 124,6433 }, { 125,6433 }, { 126,6433 }, { 127,6433 }, { 128,6433 }, { 129,6433 }, { 130,6433 }, { 131,6433 }, { 132,6433 }, { 133,6433 }, { 134,6433 }, { 135,6433 }, { 136,6433 }, { 137,6433 }, { 138,6433 }, { 139,6433 }, { 140,6433 }, { 141,6433 }, { 142,6433 }, { 143,6433 }, { 144,6433 }, { 145,6433 }, { 146,6433 }, { 147,6433 }, { 148,6433 }, { 149,6433 }, { 150,6433 }, { 151,6433 }, { 152,6433 }, { 153,6433 }, { 154,6433 }, { 155,6433 }, { 156,6433 }, { 157,6433 }, { 158,6433 }, { 159,6433 }, { 160,6433 }, { 161,6433 }, { 162,6433 }, { 163,6433 }, { 164,6433 }, { 165,6433 }, { 166,6433 }, { 167,6433 }, { 168,6433 }, { 169,6433 }, { 170,6433 }, { 171,6433 }, { 172,6433 }, { 173,6433 }, { 174,6433 }, { 175,6433 }, { 176,6433 }, { 177,6433 }, { 178,6433 }, { 179,6433 }, { 180,6433 }, { 181,6433 }, { 182,6433 }, { 183,6433 }, { 184,6433 }, { 185,6433 }, { 186,6433 }, { 187,6433 }, { 188,6433 }, { 189,6433 }, { 190,6433 }, { 191,6433 }, { 192,6433 }, { 193,6433 }, { 194,6433 }, { 195,6433 }, { 196,6433 }, { 197,6433 }, { 198,6433 }, { 199,6433 }, { 200,6433 }, { 201,6433 }, { 202,6433 }, { 203,6433 }, { 204,6433 }, { 205,6433 }, { 206,6433 }, { 207,6433 }, { 208,6433 }, { 209,6433 }, { 210,6433 }, { 211,6433 }, { 212,6433 }, { 213,6433 }, { 214,6433 }, { 215,6433 }, { 216,6433 }, { 217,6433 }, { 218,6433 }, { 219,6433 }, { 220,6433 }, { 221,6433 }, { 222,6433 }, { 223,6433 }, { 224,6433 }, { 225,6433 }, { 226,6433 }, { 227,6433 }, { 228,6433 }, { 229,6433 }, { 230,6433 }, { 231,6433 }, { 232,6433 }, { 233,6433 }, { 234,6433 }, { 235,6433 }, { 236,6433 }, { 237,6433 }, { 238,6433 }, { 239,6433 }, { 240,6433 }, { 241,6433 }, { 242,6433 }, { 243,6433 }, { 244,6433 }, { 245,6433 }, { 246,6433 }, { 247,6433 }, { 248,6433 }, { 249,6433 }, { 250,6433 }, { 251,6433 }, { 252,6433 }, { 253,6433 }, { 254,6433 }, { 255,6433 }, { 256,6433 }, { 0, 19 }, { 0,23008 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 19 }, { 0,23003 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9,6433 }, { 10,6438 }, { 11,6433 }, { 12,6433 }, { 13,6438 }, { 9,6457 }, { 10,6457 }, { 11,6457 }, { 12,6457 }, { 13,6457 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 19 }, { 0,22979 }, { 0, 0 }, { 0, 0 }, { 32,6433 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32,6457 }, { 9,6433 }, { 10,6433 }, { 11,6433 }, { 12,6433 }, { 13,6433 }, { 0, 0 }, { 39,-3831 }, { 45,-3828 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-3833 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32,6433 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-3855 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-3857 }, { 0, 23 }, { 0,22932 }, { 1,6433 }, { 2,6433 }, { 3,6433 }, { 4,6433 }, { 5,6433 }, { 6,6433 }, { 7,6433 }, { 8,6433 }, { 9,6433 }, { 10,6433 }, { 11,6433 }, { 12,6433 }, { 13,6433 }, { 14,6433 }, { 15,6433 }, { 16,6433 }, { 17,6433 }, { 18,6433 }, { 19,6433 }, { 20,6433 }, { 21,6433 }, { 22,6433 }, { 23,6433 }, { 24,6433 }, { 25,6433 }, { 26,6433 }, { 27,6433 }, { 28,6433 }, { 29,6433 }, { 30,6433 }, { 31,6433 }, { 32,6433 }, { 33,6433 }, { 34,6433 }, { 35,6433 }, { 36,6433 }, { 37,6433 }, { 38,6433 }, { 0, 0 }, { 40,6433 }, { 41,6433 }, { 42,6433 }, { 43,6433 }, { 44,6433 }, { 45,6433 }, { 46,6433 }, { 47,6433 }, { 48,6433 }, { 49,6433 }, { 50,6433 }, { 51,6433 }, { 52,6433 }, { 53,6433 }, { 54,6433 }, { 55,6433 }, { 56,6433 }, { 57,6433 }, { 58,6433 }, { 59,6433 }, { 60,6433 }, { 61,6433 }, { 62,6433 }, { 63,6433 }, { 64,6433 }, { 65,6433 }, { 66,6433 }, { 67,6433 }, { 68,6433 }, { 69,6433 }, { 70,6433 }, { 71,6433 }, { 72,6433 }, { 73,6433 }, { 74,6433 }, { 75,6433 }, { 76,6433 }, { 77,6433 }, { 78,6433 }, { 79,6433 }, { 80,6433 }, { 81,6433 }, { 82,6433 }, { 83,6433 }, { 84,6433 }, { 85,6433 }, { 86,6433 }, { 87,6433 }, { 88,6433 }, { 89,6433 }, { 90,6433 }, { 91,6433 }, { 0, 0 }, { 93,6433 }, { 94,6433 }, { 95,6433 }, { 96,6433 }, { 97,6433 }, { 98,6433 }, { 99,6433 }, { 100,6433 }, { 101,6433 }, { 102,6433 }, { 103,6433 }, { 104,6433 }, { 105,6433 }, { 106,6433 }, { 107,6433 }, { 108,6433 }, { 109,6433 }, { 110,6433 }, { 111,6433 }, { 112,6433 }, { 113,6433 }, { 114,6433 }, { 115,6433 }, { 116,6433 }, { 117,6433 }, { 118,6433 }, { 119,6433 }, { 120,6433 }, { 121,6433 }, { 122,6433 }, { 123,6433 }, { 124,6433 }, { 125,6433 }, { 126,6433 }, { 127,6433 }, { 128,6433 }, { 129,6433 }, { 130,6433 }, { 131,6433 }, { 132,6433 }, { 133,6433 }, { 134,6433 }, { 135,6433 }, { 136,6433 }, { 137,6433 }, { 138,6433 }, { 139,6433 }, { 140,6433 }, { 141,6433 }, { 142,6433 }, { 143,6433 }, { 144,6433 }, { 145,6433 }, { 146,6433 }, { 147,6433 }, { 148,6433 }, { 149,6433 }, { 150,6433 }, { 151,6433 }, { 152,6433 }, { 153,6433 }, { 154,6433 }, { 155,6433 }, { 156,6433 }, { 157,6433 }, { 158,6433 }, { 159,6433 }, { 160,6433 }, { 161,6433 }, { 162,6433 }, { 163,6433 }, { 164,6433 }, { 165,6433 }, { 166,6433 }, { 167,6433 }, { 168,6433 }, { 169,6433 }, { 170,6433 }, { 171,6433 }, { 172,6433 }, { 173,6433 }, { 174,6433 }, { 175,6433 }, { 176,6433 }, { 177,6433 }, { 178,6433 }, { 179,6433 }, { 180,6433 }, { 181,6433 }, { 182,6433 }, { 183,6433 }, { 184,6433 }, { 185,6433 }, { 186,6433 }, { 187,6433 }, { 188,6433 }, { 189,6433 }, { 190,6433 }, { 191,6433 }, { 192,6433 }, { 193,6433 }, { 194,6433 }, { 195,6433 }, { 196,6433 }, { 197,6433 }, { 198,6433 }, { 199,6433 }, { 200,6433 }, { 201,6433 }, { 202,6433 }, { 203,6433 }, { 204,6433 }, { 205,6433 }, { 206,6433 }, { 207,6433 }, { 208,6433 }, { 209,6433 }, { 210,6433 }, { 211,6433 }, { 212,6433 }, { 213,6433 }, { 214,6433 }, { 215,6433 }, { 216,6433 }, { 217,6433 }, { 218,6433 }, { 219,6433 }, { 220,6433 }, { 221,6433 }, { 222,6433 }, { 223,6433 }, { 224,6433 }, { 225,6433 }, { 226,6433 }, { 227,6433 }, { 228,6433 }, { 229,6433 }, { 230,6433 }, { 231,6433 }, { 232,6433 }, { 233,6433 }, { 234,6433 }, { 235,6433 }, { 236,6433 }, { 237,6433 }, { 238,6433 }, { 239,6433 }, { 240,6433 }, { 241,6433 }, { 242,6433 }, { 243,6433 }, { 244,6433 }, { 245,6433 }, { 246,6433 }, { 247,6433 }, { 248,6433 }, { 249,6433 }, { 250,6433 }, { 251,6433 }, { 252,6433 }, { 253,6433 }, { 254,6433 }, { 255,6433 }, { 256,6433 }, { 0, 23 }, { 0,22674 }, { 1,6175 }, { 2,6175 }, { 3,6175 }, { 4,6175 }, { 5,6175 }, { 6,6175 }, { 7,6175 }, { 8,6175 }, { 9,6175 }, { 10,6175 }, { 11,6175 }, { 12,6175 }, { 13,6175 }, { 14,6175 }, { 15,6175 }, { 16,6175 }, { 17,6175 }, { 18,6175 }, { 19,6175 }, { 20,6175 }, { 21,6175 }, { 22,6175 }, { 23,6175 }, { 24,6175 }, { 25,6175 }, { 26,6175 }, { 27,6175 }, { 28,6175 }, { 29,6175 }, { 30,6175 }, { 31,6175 }, { 32,6175 }, { 33,6175 }, { 34,6175 }, { 35,6175 }, { 36,6175 }, { 37,6175 }, { 38,6175 }, { 0, 0 }, { 40,6175 }, { 41,6175 }, { 42,6175 }, { 43,6175 }, { 44,6175 }, { 45,6175 }, { 46,6175 }, { 47,6175 }, { 48,6175 }, { 49,6175 }, { 50,6175 }, { 51,6175 }, { 52,6175 }, { 53,6175 }, { 54,6175 }, { 55,6175 }, { 56,6175 }, { 57,6175 }, { 58,6175 }, { 59,6175 }, { 60,6175 }, { 61,6175 }, { 62,6175 }, { 63,6175 }, { 64,6175 }, { 65,6175 }, { 66,6175 }, { 67,6175 }, { 68,6175 }, { 69,6175 }, { 70,6175 }, { 71,6175 }, { 72,6175 }, { 73,6175 }, { 74,6175 }, { 75,6175 }, { 76,6175 }, { 77,6175 }, { 78,6175 }, { 79,6175 }, { 80,6175 }, { 81,6175 }, { 82,6175 }, { 83,6175 }, { 84,6175 }, { 85,6175 }, { 86,6175 }, { 87,6175 }, { 88,6175 }, { 89,6175 }, { 90,6175 }, { 91,6175 }, { 0, 0 }, { 93,6175 }, { 94,6175 }, { 95,6175 }, { 96,6175 }, { 97,6175 }, { 98,6175 }, { 99,6175 }, { 100,6175 }, { 101,6175 }, { 102,6175 }, { 103,6175 }, { 104,6175 }, { 105,6175 }, { 106,6175 }, { 107,6175 }, { 108,6175 }, { 109,6175 }, { 110,6175 }, { 111,6175 }, { 112,6175 }, { 113,6175 }, { 114,6175 }, { 115,6175 }, { 116,6175 }, { 117,6175 }, { 118,6175 }, { 119,6175 }, { 120,6175 }, { 121,6175 }, { 122,6175 }, { 123,6175 }, { 124,6175 }, { 125,6175 }, { 126,6175 }, { 127,6175 }, { 128,6175 }, { 129,6175 }, { 130,6175 }, { 131,6175 }, { 132,6175 }, { 133,6175 }, { 134,6175 }, { 135,6175 }, { 136,6175 }, { 137,6175 }, { 138,6175 }, { 139,6175 }, { 140,6175 }, { 141,6175 }, { 142,6175 }, { 143,6175 }, { 144,6175 }, { 145,6175 }, { 146,6175 }, { 147,6175 }, { 148,6175 }, { 149,6175 }, { 150,6175 }, { 151,6175 }, { 152,6175 }, { 153,6175 }, { 154,6175 }, { 155,6175 }, { 156,6175 }, { 157,6175 }, { 158,6175 }, { 159,6175 }, { 160,6175 }, { 161,6175 }, { 162,6175 }, { 163,6175 }, { 164,6175 }, { 165,6175 }, { 166,6175 }, { 167,6175 }, { 168,6175 }, { 169,6175 }, { 170,6175 }, { 171,6175 }, { 172,6175 }, { 173,6175 }, { 174,6175 }, { 175,6175 }, { 176,6175 }, { 177,6175 }, { 178,6175 }, { 179,6175 }, { 180,6175 }, { 181,6175 }, { 182,6175 }, { 183,6175 }, { 184,6175 }, { 185,6175 }, { 186,6175 }, { 187,6175 }, { 188,6175 }, { 189,6175 }, { 190,6175 }, { 191,6175 }, { 192,6175 }, { 193,6175 }, { 194,6175 }, { 195,6175 }, { 196,6175 }, { 197,6175 }, { 198,6175 }, { 199,6175 }, { 200,6175 }, { 201,6175 }, { 202,6175 }, { 203,6175 }, { 204,6175 }, { 205,6175 }, { 206,6175 }, { 207,6175 }, { 208,6175 }, { 209,6175 }, { 210,6175 }, { 211,6175 }, { 212,6175 }, { 213,6175 }, { 214,6175 }, { 215,6175 }, { 216,6175 }, { 217,6175 }, { 218,6175 }, { 219,6175 }, { 220,6175 }, { 221,6175 }, { 222,6175 }, { 223,6175 }, { 224,6175 }, { 225,6175 }, { 226,6175 }, { 227,6175 }, { 228,6175 }, { 229,6175 }, { 230,6175 }, { 231,6175 }, { 232,6175 }, { 233,6175 }, { 234,6175 }, { 235,6175 }, { 236,6175 }, { 237,6175 }, { 238,6175 }, { 239,6175 }, { 240,6175 }, { 241,6175 }, { 242,6175 }, { 243,6175 }, { 244,6175 }, { 245,6175 }, { 246,6175 }, { 247,6175 }, { 248,6175 }, { 249,6175 }, { 250,6175 }, { 251,6175 }, { 252,6175 }, { 253,6175 }, { 254,6175 }, { 255,6175 }, { 256,6175 }, { 0, 32 }, { 0,22416 }, { 1,-4416 }, { 2,-4416 }, { 3,-4416 }, { 4,-4416 }, { 5,-4416 }, { 6,-4416 }, { 7,-4416 }, { 8,-4416 }, { 9,-4416 }, { 10,-4416 }, { 11,-4416 }, { 12,-4416 }, { 13,-4416 }, { 14,-4416 }, { 15,-4416 }, { 16,-4416 }, { 17,-4416 }, { 18,-4416 }, { 19,-4416 }, { 20,-4416 }, { 21,-4416 }, { 22,-4416 }, { 23,-4416 }, { 24,-4416 }, { 25,-4416 }, { 26,-4416 }, { 27,-4416 }, { 28,-4416 }, { 29,-4416 }, { 30,-4416 }, { 31,-4416 }, { 32,-4416 }, { 33,-4416 }, { 34,-4416 }, { 35,-4416 }, { 36,-4416 }, { 37,-4416 }, { 38,-4416 }, { 39,-4416 }, { 40,-4416 }, { 41,-4416 }, { 42,-4416 }, { 43,-4416 }, { 44,-4416 }, { 45,-4416 }, { 46,-4416 }, { 47,-4416 }, { 48,6175 }, { 49,6175 }, { 50,6175 }, { 51,6175 }, { 52,6175 }, { 53,6175 }, { 54,6175 }, { 55,6175 }, { 56,-4416 }, { 57,-4416 }, { 58,-4416 }, { 59,-4416 }, { 60,-4416 }, { 61,-4416 }, { 62,-4416 }, { 63,-4416 }, { 64,-4416 }, { 65,-4416 }, { 66,-4416 }, { 67,-4416 }, { 68,-4416 }, { 69,-4416 }, { 70,-4416 }, { 71,-4416 }, { 72,-4416 }, { 73,-4416 }, { 74,-4416 }, { 75,-4416 }, { 76,-4416 }, { 77,-4416 }, { 78,-4416 }, { 79,-4416 }, { 80,-4416 }, { 81,-4416 }, { 82,-4416 }, { 83,-4416 }, { 84,-4416 }, { 85,6183 }, { 86,-4416 }, { 87,-4416 }, { 88,-4416 }, { 89,-4416 }, { 90,-4416 }, { 91,-4416 }, { 92,-4416 }, { 93,-4416 }, { 94,-4416 }, { 95,-4416 }, { 96,-4416 }, { 97,-4416 }, { 98,-4416 }, { 99,-4416 }, { 100,-4416 }, { 101,-4416 }, { 102,-4416 }, { 103,-4416 }, { 104,-4416 }, { 105,-4416 }, { 106,-4416 }, { 107,-4416 }, { 108,-4416 }, { 109,-4416 }, { 110,-4416 }, { 111,-4416 }, { 112,-4416 }, { 113,-4416 }, { 114,-4416 }, { 115,-4416 }, { 116,-4416 }, { 117,6206 }, { 118,-4416 }, { 119,-4416 }, { 120,6244 }, { 121,-4416 }, { 122,-4416 }, { 123,-4416 }, { 124,-4416 }, { 125,-4416 }, { 126,-4416 }, { 127,-4416 }, { 128,-4416 }, { 129,-4416 }, { 130,-4416 }, { 131,-4416 }, { 132,-4416 }, { 133,-4416 }, { 134,-4416 }, { 135,-4416 }, { 136,-4416 }, { 137,-4416 }, { 138,-4416 }, { 139,-4416 }, { 140,-4416 }, { 141,-4416 }, { 142,-4416 }, { 143,-4416 }, { 144,-4416 }, { 145,-4416 }, { 146,-4416 }, { 147,-4416 }, { 148,-4416 }, { 149,-4416 }, { 150,-4416 }, { 151,-4416 }, { 152,-4416 }, { 153,-4416 }, { 154,-4416 }, { 155,-4416 }, { 156,-4416 }, { 157,-4416 }, { 158,-4416 }, { 159,-4416 }, { 160,-4416 }, { 161,-4416 }, { 162,-4416 }, { 163,-4416 }, { 164,-4416 }, { 165,-4416 }, { 166,-4416 }, { 167,-4416 }, { 168,-4416 }, { 169,-4416 }, { 170,-4416 }, { 171,-4416 }, { 172,-4416 }, { 173,-4416 }, { 174,-4416 }, { 175,-4416 }, { 176,-4416 }, { 177,-4416 }, { 178,-4416 }, { 179,-4416 }, { 180,-4416 }, { 181,-4416 }, { 182,-4416 }, { 183,-4416 }, { 184,-4416 }, { 185,-4416 }, { 186,-4416 }, { 187,-4416 }, { 188,-4416 }, { 189,-4416 }, { 190,-4416 }, { 191,-4416 }, { 192,-4416 }, { 193,-4416 }, { 194,-4416 }, { 195,-4416 }, { 196,-4416 }, { 197,-4416 }, { 198,-4416 }, { 199,-4416 }, { 200,-4416 }, { 201,-4416 }, { 202,-4416 }, { 203,-4416 }, { 204,-4416 }, { 205,-4416 }, { 206,-4416 }, { 207,-4416 }, { 208,-4416 }, { 209,-4416 }, { 210,-4416 }, { 211,-4416 }, { 212,-4416 }, { 213,-4416 }, { 214,-4416 }, { 215,-4416 }, { 216,-4416 }, { 217,-4416 }, { 218,-4416 }, { 219,-4416 }, { 220,-4416 }, { 221,-4416 }, { 222,-4416 }, { 223,-4416 }, { 224,-4416 }, { 225,-4416 }, { 226,-4416 }, { 227,-4416 }, { 228,-4416 }, { 229,-4416 }, { 230,-4416 }, { 231,-4416 }, { 232,-4416 }, { 233,-4416 }, { 234,-4416 }, { 235,-4416 }, { 236,-4416 }, { 237,-4416 }, { 238,-4416 }, { 239,-4416 }, { 240,-4416 }, { 241,-4416 }, { 242,-4416 }, { 243,-4416 }, { 244,-4416 }, { 245,-4416 }, { 246,-4416 }, { 247,-4416 }, { 248,-4416 }, { 249,-4416 }, { 250,-4416 }, { 251,-4416 }, { 252,-4416 }, { 253,-4416 }, { 254,-4416 }, { 255,-4416 }, { 256,-4416 }, { 0, 36 }, { 0,22158 }, { 1,6090 }, { 2,6090 }, { 3,6090 }, { 4,6090 }, { 5,6090 }, { 6,6090 }, { 7,6090 }, { 8,6090 }, { 9,6090 }, { 10,6090 }, { 11,6090 }, { 12,6090 }, { 13,6090 }, { 14,6090 }, { 15,6090 }, { 16,6090 }, { 17,6090 }, { 18,6090 }, { 19,6090 }, { 20,6090 }, { 21,6090 }, { 22,6090 }, { 23,6090 }, { 24,6090 }, { 25,6090 }, { 26,6090 }, { 27,6090 }, { 28,6090 }, { 29,6090 }, { 30,6090 }, { 31,6090 }, { 32,6090 }, { 33,6090 }, { 34,6090 }, { 35,6090 }, { 0, 0 }, { 37,6090 }, { 38,6090 }, { 39,6090 }, { 40,6090 }, { 41,6090 }, { 42,6090 }, { 43,6090 }, { 44,6090 }, { 45,6090 }, { 46,6090 }, { 47,6090 }, { 48,6090 }, { 49,6090 }, { 50,6090 }, { 51,6090 }, { 52,6090 }, { 53,6090 }, { 54,6090 }, { 55,6090 }, { 56,6090 }, { 57,6090 }, { 58,6090 }, { 59,6090 }, { 60,6090 }, { 61,6090 }, { 62,6090 }, { 63,6090 }, { 64,6090 }, { 65,6090 }, { 66,6090 }, { 67,6090 }, { 68,6090 }, { 69,6090 }, { 70,6090 }, { 71,6090 }, { 72,6090 }, { 73,6090 }, { 74,6090 }, { 75,6090 }, { 76,6090 }, { 77,6090 }, { 78,6090 }, { 79,6090 }, { 80,6090 }, { 81,6090 }, { 82,6090 }, { 83,6090 }, { 84,6090 }, { 85,6090 }, { 86,6090 }, { 87,6090 }, { 88,6090 }, { 89,6090 }, { 90,6090 }, { 91,6090 }, { 92,6090 }, { 93,6090 }, { 94,6090 }, { 95,6090 }, { 96,6090 }, { 97,6090 }, { 98,6090 }, { 99,6090 }, { 100,6090 }, { 101,6090 }, { 102,6090 }, { 103,6090 }, { 104,6090 }, { 105,6090 }, { 106,6090 }, { 107,6090 }, { 108,6090 }, { 109,6090 }, { 110,6090 }, { 111,6090 }, { 112,6090 }, { 113,6090 }, { 114,6090 }, { 115,6090 }, { 116,6090 }, { 117,6090 }, { 118,6090 }, { 119,6090 }, { 120,6090 }, { 121,6090 }, { 122,6090 }, { 123,6090 }, { 124,6090 }, { 125,6090 }, { 126,6090 }, { 127,6090 }, { 128,6090 }, { 129,6090 }, { 130,6090 }, { 131,6090 }, { 132,6090 }, { 133,6090 }, { 134,6090 }, { 135,6090 }, { 136,6090 }, { 137,6090 }, { 138,6090 }, { 139,6090 }, { 140,6090 }, { 141,6090 }, { 142,6090 }, { 143,6090 }, { 144,6090 }, { 145,6090 }, { 146,6090 }, { 147,6090 }, { 148,6090 }, { 149,6090 }, { 150,6090 }, { 151,6090 }, { 152,6090 }, { 153,6090 }, { 154,6090 }, { 155,6090 }, { 156,6090 }, { 157,6090 }, { 158,6090 }, { 159,6090 }, { 160,6090 }, { 161,6090 }, { 162,6090 }, { 163,6090 }, { 164,6090 }, { 165,6090 }, { 166,6090 }, { 167,6090 }, { 168,6090 }, { 169,6090 }, { 170,6090 }, { 171,6090 }, { 172,6090 }, { 173,6090 }, { 174,6090 }, { 175,6090 }, { 176,6090 }, { 177,6090 }, { 178,6090 }, { 179,6090 }, { 180,6090 }, { 181,6090 }, { 182,6090 }, { 183,6090 }, { 184,6090 }, { 185,6090 }, { 186,6090 }, { 187,6090 }, { 188,6090 }, { 189,6090 }, { 190,6090 }, { 191,6090 }, { 192,6090 }, { 193,6090 }, { 194,6090 }, { 195,6090 }, { 196,6090 }, { 197,6090 }, { 198,6090 }, { 199,6090 }, { 200,6090 }, { 201,6090 }, { 202,6090 }, { 203,6090 }, { 204,6090 }, { 205,6090 }, { 206,6090 }, { 207,6090 }, { 208,6090 }, { 209,6090 }, { 210,6090 }, { 211,6090 }, { 212,6090 }, { 213,6090 }, { 214,6090 }, { 215,6090 }, { 216,6090 }, { 217,6090 }, { 218,6090 }, { 219,6090 }, { 220,6090 }, { 221,6090 }, { 222,6090 }, { 223,6090 }, { 224,6090 }, { 225,6090 }, { 226,6090 }, { 227,6090 }, { 228,6090 }, { 229,6090 }, { 230,6090 }, { 231,6090 }, { 232,6090 }, { 233,6090 }, { 234,6090 }, { 235,6090 }, { 236,6090 }, { 237,6090 }, { 238,6090 }, { 239,6090 }, { 240,6090 }, { 241,6090 }, { 242,6090 }, { 243,6090 }, { 244,6090 }, { 245,6090 }, { 246,6090 }, { 247,6090 }, { 248,6090 }, { 249,6090 }, { 250,6090 }, { 251,6090 }, { 252,6090 }, { 253,6090 }, { 254,6090 }, { 255,6090 }, { 256,6090 }, { 0, 36 }, { 0,21900 }, { 1,5832 }, { 2,5832 }, { 3,5832 }, { 4,5832 }, { 5,5832 }, { 6,5832 }, { 7,5832 }, { 8,5832 }, { 9,5832 }, { 10,5832 }, { 11,5832 }, { 12,5832 }, { 13,5832 }, { 14,5832 }, { 15,5832 }, { 16,5832 }, { 17,5832 }, { 18,5832 }, { 19,5832 }, { 20,5832 }, { 21,5832 }, { 22,5832 }, { 23,5832 }, { 24,5832 }, { 25,5832 }, { 26,5832 }, { 27,5832 }, { 28,5832 }, { 29,5832 }, { 30,5832 }, { 31,5832 }, { 32,5832 }, { 33,5832 }, { 34,5832 }, { 35,5832 }, { 0, 0 }, { 37,5832 }, { 38,5832 }, { 39,5832 }, { 40,5832 }, { 41,5832 }, { 42,5832 }, { 43,5832 }, { 44,5832 }, { 45,5832 }, { 46,5832 }, { 47,5832 }, { 48,5832 }, { 49,5832 }, { 50,5832 }, { 51,5832 }, { 52,5832 }, { 53,5832 }, { 54,5832 }, { 55,5832 }, { 56,5832 }, { 57,5832 }, { 58,5832 }, { 59,5832 }, { 60,5832 }, { 61,5832 }, { 62,5832 }, { 63,5832 }, { 64,5832 }, { 65,5832 }, { 66,5832 }, { 67,5832 }, { 68,5832 }, { 69,5832 }, { 70,5832 }, { 71,5832 }, { 72,5832 }, { 73,5832 }, { 74,5832 }, { 75,5832 }, { 76,5832 }, { 77,5832 }, { 78,5832 }, { 79,5832 }, { 80,5832 }, { 81,5832 }, { 82,5832 }, { 83,5832 }, { 84,5832 }, { 85,5832 }, { 86,5832 }, { 87,5832 }, { 88,5832 }, { 89,5832 }, { 90,5832 }, { 91,5832 }, { 92,5832 }, { 93,5832 }, { 94,5832 }, { 95,5832 }, { 96,5832 }, { 97,5832 }, { 98,5832 }, { 99,5832 }, { 100,5832 }, { 101,5832 }, { 102,5832 }, { 103,5832 }, { 104,5832 }, { 105,5832 }, { 106,5832 }, { 107,5832 }, { 108,5832 }, { 109,5832 }, { 110,5832 }, { 111,5832 }, { 112,5832 }, { 113,5832 }, { 114,5832 }, { 115,5832 }, { 116,5832 }, { 117,5832 }, { 118,5832 }, { 119,5832 }, { 120,5832 }, { 121,5832 }, { 122,5832 }, { 123,5832 }, { 124,5832 }, { 125,5832 }, { 126,5832 }, { 127,5832 }, { 128,5832 }, { 129,5832 }, { 130,5832 }, { 131,5832 }, { 132,5832 }, { 133,5832 }, { 134,5832 }, { 135,5832 }, { 136,5832 }, { 137,5832 }, { 138,5832 }, { 139,5832 }, { 140,5832 }, { 141,5832 }, { 142,5832 }, { 143,5832 }, { 144,5832 }, { 145,5832 }, { 146,5832 }, { 147,5832 }, { 148,5832 }, { 149,5832 }, { 150,5832 }, { 151,5832 }, { 152,5832 }, { 153,5832 }, { 154,5832 }, { 155,5832 }, { 156,5832 }, { 157,5832 }, { 158,5832 }, { 159,5832 }, { 160,5832 }, { 161,5832 }, { 162,5832 }, { 163,5832 }, { 164,5832 }, { 165,5832 }, { 166,5832 }, { 167,5832 }, { 168,5832 }, { 169,5832 }, { 170,5832 }, { 171,5832 }, { 172,5832 }, { 173,5832 }, { 174,5832 }, { 175,5832 }, { 176,5832 }, { 177,5832 }, { 178,5832 }, { 179,5832 }, { 180,5832 }, { 181,5832 }, { 182,5832 }, { 183,5832 }, { 184,5832 }, { 185,5832 }, { 186,5832 }, { 187,5832 }, { 188,5832 }, { 189,5832 }, { 190,5832 }, { 191,5832 }, { 192,5832 }, { 193,5832 }, { 194,5832 }, { 195,5832 }, { 196,5832 }, { 197,5832 }, { 198,5832 }, { 199,5832 }, { 200,5832 }, { 201,5832 }, { 202,5832 }, { 203,5832 }, { 204,5832 }, { 205,5832 }, { 206,5832 }, { 207,5832 }, { 208,5832 }, { 209,5832 }, { 210,5832 }, { 211,5832 }, { 212,5832 }, { 213,5832 }, { 214,5832 }, { 215,5832 }, { 216,5832 }, { 217,5832 }, { 218,5832 }, { 219,5832 }, { 220,5832 }, { 221,5832 }, { 222,5832 }, { 223,5832 }, { 224,5832 }, { 225,5832 }, { 226,5832 }, { 227,5832 }, { 228,5832 }, { 229,5832 }, { 230,5832 }, { 231,5832 }, { 232,5832 }, { 233,5832 }, { 234,5832 }, { 235,5832 }, { 236,5832 }, { 237,5832 }, { 238,5832 }, { 239,5832 }, { 240,5832 }, { 241,5832 }, { 242,5832 }, { 243,5832 }, { 244,5832 }, { 245,5832 }, { 246,5832 }, { 247,5832 }, { 248,5832 }, { 249,5832 }, { 250,5832 }, { 251,5832 }, { 252,5832 }, { 253,5832 }, { 254,5832 }, { 255,5832 }, { 256,5832 }, { 0, 38 }, { 0,21642 }, { 0, 1 }, { 0,21640 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 0 }, { 11, 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,-5188 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,5832 }, { 66,5832 }, { 67,5832 }, { 68,5832 }, { 69,5832 }, { 70,5832 }, { 71,5832 }, { 72,5832 }, { 73,5832 }, { 74,5832 }, { 75,5832 }, { 76,5832 }, { 77,5832 }, { 78,5832 }, { 79,5832 }, { 80,5832 }, { 81,5832 }, { 82,5832 }, { 83,5832 }, { 84,5832 }, { 85,5832 }, { 86,5832 }, { 87,5832 }, { 88,5832 }, { 89,5832 }, { 90,5832 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,5832 }, { 0, 0 }, { 97,5832 }, { 98,5832 }, { 99,5832 }, { 100,5832 }, { 101,5832 }, { 102,5832 }, { 103,5832 }, { 104,5832 }, { 105,5832 }, { 106,5832 }, { 107,5832 }, { 108,5832 }, { 109,5832 }, { 110,5832 }, { 111,5832 }, { 112,5832 }, { 113,5832 }, { 114,5832 }, { 115,5832 }, { 116,5832 }, { 117,5832 }, { 118,5832 }, { 119,5832 }, { 120,5832 }, { 121,5832 }, { 122,5832 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5832 }, { 129,5832 }, { 130,5832 }, { 131,5832 }, { 132,5832 }, { 133,5832 }, { 134,5832 }, { 135,5832 }, { 136,5832 }, { 137,5832 }, { 138,5832 }, { 139,5832 }, { 140,5832 }, { 141,5832 }, { 142,5832 }, { 143,5832 }, { 144,5832 }, { 145,5832 }, { 146,5832 }, { 147,5832 }, { 148,5832 }, { 149,5832 }, { 150,5832 }, { 151,5832 }, { 152,5832 }, { 153,5832 }, { 154,5832 }, { 155,5832 }, { 156,5832 }, { 157,5832 }, { 158,5832 }, { 159,5832 }, { 160,5832 }, { 161,5832 }, { 162,5832 }, { 163,5832 }, { 164,5832 }, { 165,5832 }, { 166,5832 }, { 167,5832 }, { 168,5832 }, { 169,5832 }, { 170,5832 }, { 171,5832 }, { 172,5832 }, { 173,5832 }, { 174,5832 }, { 175,5832 }, { 176,5832 }, { 177,5832 }, { 178,5832 }, { 179,5832 }, { 180,5832 }, { 181,5832 }, { 182,5832 }, { 183,5832 }, { 184,5832 }, { 185,5832 }, { 186,5832 }, { 187,5832 }, { 188,5832 }, { 189,5832 }, { 190,5832 }, { 191,5832 }, { 192,5832 }, { 193,5832 }, { 194,5832 }, { 195,5832 }, { 196,5832 }, { 197,5832 }, { 198,5832 }, { 199,5832 }, { 200,5832 }, { 201,5832 }, { 202,5832 }, { 203,5832 }, { 204,5832 }, { 205,5832 }, { 206,5832 }, { 207,5832 }, { 208,5832 }, { 209,5832 }, { 210,5832 }, { 211,5832 }, { 212,5832 }, { 213,5832 }, { 214,5832 }, { 215,5832 }, { 216,5832 }, { 217,5832 }, { 218,5832 }, { 219,5832 }, { 220,5832 }, { 221,5832 }, { 222,5832 }, { 223,5832 }, { 224,5832 }, { 225,5832 }, { 226,5832 }, { 227,5832 }, { 228,5832 }, { 229,5832 }, { 230,5832 }, { 231,5832 }, { 232,5832 }, { 233,5832 }, { 234,5832 }, { 235,5832 }, { 236,5832 }, { 237,5832 }, { 238,5832 }, { 239,5832 }, { 240,5832 }, { 241,5832 }, { 242,5832 }, { 243,5832 }, { 244,5832 }, { 245,5832 }, { 246,5832 }, { 247,5832 }, { 248,5832 }, { 249,5832 }, { 250,5832 }, { 251,5832 }, { 252,5832 }, { 253,5832 }, { 254,5832 }, { 255,5832 }, { 0, 55 }, { 0,21385 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 53 }, { 0,21374 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 56 }, { 0,21357 }, { 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,21294 }, { 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,-5810 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124, -11 }, { 0, 0 }, { 126, -11 }, { 0, 0 }, { 48,5823 }, { 49,5823 }, { 50,5823 }, { 51,5823 }, { 52,5823 }, { 53,5823 }, { 54,5823 }, { 55,5823 }, { 56,5823 }, { 57,5823 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,5823 }, { 66,5823 }, { 67,5823 }, { 68,5823 }, { 69,5823 }, { 70,5823 }, { 71,5823 }, { 72,5823 }, { 73,5823 }, { 74,5823 }, { 75,5823 }, { 76,5823 }, { 77,5823 }, { 78,5823 }, { 79,5823 }, { 80,5823 }, { 81,5823 }, { 82,5823 }, { 83,5823 }, { 84,5823 }, { 85,5823 }, { 86,5823 }, { 87,5823 }, { 88,5823 }, { 89,5823 }, { 90,5823 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,5823 }, { 0, 0 }, { 97,5823 }, { 98,5823 }, { 99,5823 }, { 100,5823 }, { 101,5823 }, { 102,5823 }, { 103,5823 }, { 104,5823 }, { 105,5823 }, { 106,5823 }, { 107,5823 }, { 108,5823 }, { 109,5823 }, { 110,5823 }, { 111,5823 }, { 112,5823 }, { 113,5823 }, { 114,5823 }, { 115,5823 }, { 116,5823 }, { 117,5823 }, { 118,5823 }, { 119,5823 }, { 120,5823 }, { 121,5823 }, { 122,5823 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5823 }, { 129,5823 }, { 130,5823 }, { 131,5823 }, { 132,5823 }, { 133,5823 }, { 134,5823 }, { 135,5823 }, { 136,5823 }, { 137,5823 }, { 138,5823 }, { 139,5823 }, { 140,5823 }, { 141,5823 }, { 142,5823 }, { 143,5823 }, { 144,5823 }, { 145,5823 }, { 146,5823 }, { 147,5823 }, { 148,5823 }, { 149,5823 }, { 150,5823 }, { 151,5823 }, { 152,5823 }, { 153,5823 }, { 154,5823 }, { 155,5823 }, { 156,5823 }, { 157,5823 }, { 158,5823 }, { 159,5823 }, { 160,5823 }, { 161,5823 }, { 162,5823 }, { 163,5823 }, { 164,5823 }, { 165,5823 }, { 166,5823 }, { 167,5823 }, { 168,5823 }, { 169,5823 }, { 170,5823 }, { 171,5823 }, { 172,5823 }, { 173,5823 }, { 174,5823 }, { 175,5823 }, { 176,5823 }, { 177,5823 }, { 178,5823 }, { 179,5823 }, { 180,5823 }, { 181,5823 }, { 182,5823 }, { 183,5823 }, { 184,5823 }, { 185,5823 }, { 186,5823 }, { 187,5823 }, { 188,5823 }, { 189,5823 }, { 190,5823 }, { 191,5823 }, { 192,5823 }, { 193,5823 }, { 194,5823 }, { 195,5823 }, { 196,5823 }, { 197,5823 }, { 198,5823 }, { 199,5823 }, { 200,5823 }, { 201,5823 }, { 202,5823 }, { 203,5823 }, { 204,5823 }, { 205,5823 }, { 206,5823 }, { 207,5823 }, { 208,5823 }, { 209,5823 }, { 210,5823 }, { 211,5823 }, { 212,5823 }, { 213,5823 }, { 214,5823 }, { 215,5823 }, { 216,5823 }, { 217,5823 }, { 218,5823 }, { 219,5823 }, { 220,5823 }, { 221,5823 }, { 222,5823 }, { 223,5823 }, { 224,5823 }, { 225,5823 }, { 226,5823 }, { 227,5823 }, { 228,5823 }, { 229,5823 }, { 230,5823 }, { 231,5823 }, { 232,5823 }, { 233,5823 }, { 234,5823 }, { 235,5823 }, { 236,5823 }, { 237,5823 }, { 238,5823 }, { 239,5823 }, { 240,5823 }, { 241,5823 }, { 242,5823 }, { 243,5823 }, { 244,5823 }, { 245,5823 }, { 246,5823 }, { 247,5823 }, { 248,5823 }, { 249,5823 }, { 250,5823 }, { 251,5823 }, { 252,5823 }, { 253,5823 }, { 254,5823 }, { 255,5823 }, { 0, 2 }, { 0,21037 }, { 1,5823 }, { 2,5823 }, { 3,5823 }, { 4,5823 }, { 5,5823 }, { 6,5823 }, { 7,5823 }, { 8,5823 }, { 9,5823 }, { 0, 0 }, { 11,5823 }, { 12,5823 }, { 0, 0 }, { 14,5823 }, { 15,5823 }, { 16,5823 }, { 17,5823 }, { 18,5823 }, { 19,5823 }, { 20,5823 }, { 21,5823 }, { 22,5823 }, { 23,5823 }, { 24,5823 }, { 25,5823 }, { 26,5823 }, { 27,5823 }, { 28,5823 }, { 29,5823 }, { 30,5823 }, { 31,5823 }, { 32,5823 }, { 33,6081 }, { 34,5823 }, { 35,6081 }, { 36,5823 }, { 37,6081 }, { 38,6081 }, { 39,5823 }, { 40,5823 }, { 41,5823 }, { 42,6081 }, { 43,6081 }, { 44,5823 }, { 45,6081 }, { 46,5823 }, { 47,6081 }, { 48,5823 }, { 49,5823 }, { 50,5823 }, { 51,5823 }, { 52,5823 }, { 53,5823 }, { 54,5823 }, { 55,5823 }, { 56,5823 }, { 57,5823 }, { 58,5823 }, { 59,5823 }, { 60,6081 }, { 61,6081 }, { 62,6081 }, { 63,6081 }, { 64,6081 }, { 65,5823 }, { 66,5823 }, { 67,5823 }, { 68,5823 }, { 69,5823 }, { 70,5823 }, { 71,5823 }, { 72,5823 }, { 73,5823 }, { 74,5823 }, { 75,5823 }, { 76,5823 }, { 77,5823 }, { 78,5823 }, { 79,5823 }, { 80,5823 }, { 81,5823 }, { 82,5823 }, { 83,5823 }, { 84,5823 }, { 85,5823 }, { 86,5823 }, { 87,5823 }, { 88,5823 }, { 89,5823 }, { 90,5823 }, { 91,5823 }, { 92,5823 }, { 93,5823 }, { 94,6081 }, { 95,5823 }, { 96,6081 }, { 97,5823 }, { 98,5823 }, { 99,5823 }, { 100,5823 }, { 101,5823 }, { 102,5823 }, { 103,5823 }, { 104,5823 }, { 105,5823 }, { 106,5823 }, { 107,5823 }, { 108,5823 }, { 109,5823 }, { 110,5823 }, { 111,5823 }, { 112,5823 }, { 113,5823 }, { 114,5823 }, { 115,5823 }, { 116,5823 }, { 117,5823 }, { 118,5823 }, { 119,5823 }, { 120,5823 }, { 121,5823 }, { 122,5823 }, { 123,5823 }, { 124,6081 }, { 125,5823 }, { 126,6081 }, { 127,5823 }, { 128,5823 }, { 129,5823 }, { 130,5823 }, { 131,5823 }, { 132,5823 }, { 133,5823 }, { 134,5823 }, { 135,5823 }, { 136,5823 }, { 137,5823 }, { 138,5823 }, { 139,5823 }, { 140,5823 }, { 141,5823 }, { 142,5823 }, { 143,5823 }, { 144,5823 }, { 145,5823 }, { 146,5823 }, { 147,5823 }, { 148,5823 }, { 149,5823 }, { 150,5823 }, { 151,5823 }, { 152,5823 }, { 153,5823 }, { 154,5823 }, { 155,5823 }, { 156,5823 }, { 157,5823 }, { 158,5823 }, { 159,5823 }, { 160,5823 }, { 161,5823 }, { 162,5823 }, { 163,5823 }, { 164,5823 }, { 165,5823 }, { 166,5823 }, { 167,5823 }, { 168,5823 }, { 169,5823 }, { 170,5823 }, { 171,5823 }, { 172,5823 }, { 173,5823 }, { 174,5823 }, { 175,5823 }, { 176,5823 }, { 177,5823 }, { 178,5823 }, { 179,5823 }, { 180,5823 }, { 181,5823 }, { 182,5823 }, { 183,5823 }, { 184,5823 }, { 185,5823 }, { 186,5823 }, { 187,5823 }, { 188,5823 }, { 189,5823 }, { 190,5823 }, { 191,5823 }, { 192,5823 }, { 193,5823 }, { 194,5823 }, { 195,5823 }, { 196,5823 }, { 197,5823 }, { 198,5823 }, { 199,5823 }, { 200,5823 }, { 201,5823 }, { 202,5823 }, { 203,5823 }, { 204,5823 }, { 205,5823 }, { 206,5823 }, { 207,5823 }, { 208,5823 }, { 209,5823 }, { 210,5823 }, { 211,5823 }, { 212,5823 }, { 213,5823 }, { 214,5823 }, { 215,5823 }, { 216,5823 }, { 217,5823 }, { 218,5823 }, { 219,5823 }, { 220,5823 }, { 221,5823 }, { 222,5823 }, { 223,5823 }, { 224,5823 }, { 225,5823 }, { 226,5823 }, { 227,5823 }, { 228,5823 }, { 229,5823 }, { 230,5823 }, { 231,5823 }, { 232,5823 }, { 233,5823 }, { 234,5823 }, { 235,5823 }, { 236,5823 }, { 237,5823 }, { 238,5823 }, { 239,5823 }, { 240,5823 }, { 241,5823 }, { 242,5823 }, { 243,5823 }, { 244,5823 }, { 245,5823 }, { 246,5823 }, { 247,5823 }, { 248,5823 }, { 249,5823 }, { 250,5823 }, { 251,5823 }, { 252,5823 }, { 253,5823 }, { 254,5823 }, { 255,5823 }, { 256,5823 }, { 0, 64 }, { 0,20779 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,6081 }, { 49,6081 }, { 50,6081 }, { 51,6081 }, { 52,6081 }, { 53,6081 }, { 54,6081 }, { 55,6081 }, { 56,6081 }, { 57,6081 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,6338 }, { 66,6338 }, { 67,6338 }, { 68,6338 }, { 69,6595 }, { 70,6338 }, { 71,6338 }, { 72,6338 }, { 73,6338 }, { 74,6338 }, { 75,6338 }, { 76,6338 }, { 77,6338 }, { 78,6338 }, { 79,6338 }, { 80,6338 }, { 81,6338 }, { 82,6338 }, { 83,6338 }, { 84,6338 }, { 85,6338 }, { 86,6338 }, { 87,6338 }, { 88,6338 }, { 89,6338 }, { 90,6338 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,6852 }, { 0, 0 }, { 97,6338 }, { 98,6338 }, { 99,6338 }, { 100,6338 }, { 101,6595 }, { 102,6338 }, { 103,6338 }, { 104,6338 }, { 105,6338 }, { 106,6338 }, { 107,6338 }, { 108,6338 }, { 109,6338 }, { 110,6338 }, { 111,6338 }, { 112,6338 }, { 113,6338 }, { 114,6338 }, { 115,6338 }, { 116,6338 }, { 117,6338 }, { 118,6338 }, { 119,6338 }, { 120,6338 }, { 121,6338 }, { 122,6338 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,6338 }, { 129,6338 }, { 130,6338 }, { 131,6338 }, { 132,6338 }, { 133,6338 }, { 134,6338 }, { 135,6338 }, { 136,6338 }, { 137,6338 }, { 138,6338 }, { 139,6338 }, { 140,6338 }, { 141,6338 }, { 142,6338 }, { 143,6338 }, { 144,6338 }, { 145,6338 }, { 146,6338 }, { 147,6338 }, { 148,6338 }, { 149,6338 }, { 150,6338 }, { 151,6338 }, { 152,6338 }, { 153,6338 }, { 154,6338 }, { 155,6338 }, { 156,6338 }, { 157,6338 }, { 158,6338 }, { 159,6338 }, { 160,6338 }, { 161,6338 }, { 162,6338 }, { 163,6338 }, { 164,6338 }, { 165,6338 }, { 166,6338 }, { 167,6338 }, { 168,6338 }, { 169,6338 }, { 170,6338 }, { 171,6338 }, { 172,6338 }, { 173,6338 }, { 174,6338 }, { 175,6338 }, { 176,6338 }, { 177,6338 }, { 178,6338 }, { 179,6338 }, { 180,6338 }, { 181,6338 }, { 182,6338 }, { 183,6338 }, { 184,6338 }, { 185,6338 }, { 186,6338 }, { 187,6338 }, { 188,6338 }, { 189,6338 }, { 190,6338 }, { 191,6338 }, { 192,6338 }, { 193,6338 }, { 194,6338 }, { 195,6338 }, { 196,6338 }, { 197,6338 }, { 198,6338 }, { 199,6338 }, { 200,6338 }, { 201,6338 }, { 202,6338 }, { 203,6338 }, { 204,6338 }, { 205,6338 }, { 206,6338 }, { 207,6338 }, { 208,6338 }, { 209,6338 }, { 210,6338 }, { 211,6338 }, { 212,6338 }, { 213,6338 }, { 214,6338 }, { 215,6338 }, { 216,6338 }, { 217,6338 }, { 218,6338 }, { 219,6338 }, { 220,6338 }, { 221,6338 }, { 222,6338 }, { 223,6338 }, { 224,6338 }, { 225,6338 }, { 226,6338 }, { 227,6338 }, { 228,6338 }, { 229,6338 }, { 230,6338 }, { 231,6338 }, { 232,6338 }, { 233,6338 }, { 234,6338 }, { 235,6338 }, { 236,6338 }, { 237,6338 }, { 238,6338 }, { 239,6338 }, { 240,6338 }, { 241,6338 }, { 242,6338 }, { 243,6338 }, { 244,6338 }, { 245,6338 }, { 246,6338 }, { 247,6338 }, { 248,6338 }, { 249,6338 }, { 250,6338 }, { 251,6338 }, { 252,6338 }, { 253,6338 }, { 254,6338 }, { 255,6338 }, { 0, 3 }, { 0,20522 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 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,20490 }, { 33,6852 }, { 0, 0 }, { 35,6852 }, { 0, 0 }, { 37,6852 }, { 38,6852 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,6852 }, { 43,6852 }, { 0, 0 }, { 45,6852 }, { 0, 0 }, { 47,6852 }, { 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,6852 }, { 61,6852 }, { 62,6852 }, { 63,6852 }, { 64,6852 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 46,-6338 }, { 0, 0 }, { 48,6852 }, { 49,6852 }, { 50,6852 }, { 51,6852 }, { 52,6852 }, { 53,6852 }, { 54,6852 }, { 55,6852 }, { 56,6852 }, { 57,6852 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,6852 }, { 0, 0 }, { 96,6852 }, { 65,6049 }, { 66,6049 }, { 67,6049 }, { 68,6049 }, { 69,6306 }, { 70,6049 }, { 71,6049 }, { 72,6049 }, { 73,6049 }, { 74,6049 }, { 75,6049 }, { 76,6049 }, { 77,6049 }, { 78,6049 }, { 79,6049 }, { 80,6049 }, { 81,6049 }, { 82,6049 }, { 83,6049 }, { 84,6049 }, { 85,6049 }, { 86,6049 }, { 87,6049 }, { 88,6049 }, { 89,6049 }, { 90,6049 }, { 0, 0 }, { 124,6852 }, { 0, 0 }, { 126,6852 }, { 95,6049 }, { 0, 0 }, { 97,6049 }, { 98,6049 }, { 99,6049 }, { 100,6049 }, { 101,6306 }, { 102,6049 }, { 103,6049 }, { 104,6049 }, { 105,6049 }, { 106,6049 }, { 107,6049 }, { 108,6049 }, { 109,6049 }, { 110,6049 }, { 111,6049 }, { 112,6049 }, { 113,6049 }, { 114,6049 }, { 115,6049 }, { 116,6049 }, { 117,6049 }, { 118,6049 }, { 119,6049 }, { 120,6049 }, { 121,6049 }, { 122,6049 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,6049 }, { 129,6049 }, { 130,6049 }, { 131,6049 }, { 132,6049 }, { 133,6049 }, { 134,6049 }, { 135,6049 }, { 136,6049 }, { 137,6049 }, { 138,6049 }, { 139,6049 }, { 140,6049 }, { 141,6049 }, { 142,6049 }, { 143,6049 }, { 144,6049 }, { 145,6049 }, { 146,6049 }, { 147,6049 }, { 148,6049 }, { 149,6049 }, { 150,6049 }, { 151,6049 }, { 152,6049 }, { 153,6049 }, { 154,6049 }, { 155,6049 }, { 156,6049 }, { 157,6049 }, { 158,6049 }, { 159,6049 }, { 160,6049 }, { 161,6049 }, { 162,6049 }, { 163,6049 }, { 164,6049 }, { 165,6049 }, { 166,6049 }, { 167,6049 }, { 168,6049 }, { 169,6049 }, { 170,6049 }, { 171,6049 }, { 172,6049 }, { 173,6049 }, { 174,6049 }, { 175,6049 }, { 176,6049 }, { 177,6049 }, { 178,6049 }, { 179,6049 }, { 180,6049 }, { 181,6049 }, { 182,6049 }, { 183,6049 }, { 184,6049 }, { 185,6049 }, { 186,6049 }, { 187,6049 }, { 188,6049 }, { 189,6049 }, { 190,6049 }, { 191,6049 }, { 192,6049 }, { 193,6049 }, { 194,6049 }, { 195,6049 }, { 196,6049 }, { 197,6049 }, { 198,6049 }, { 199,6049 }, { 200,6049 }, { 201,6049 }, { 202,6049 }, { 203,6049 }, { 204,6049 }, { 205,6049 }, { 206,6049 }, { 207,6049 }, { 208,6049 }, { 209,6049 }, { 210,6049 }, { 211,6049 }, { 212,6049 }, { 213,6049 }, { 214,6049 }, { 215,6049 }, { 216,6049 }, { 217,6049 }, { 218,6049 }, { 219,6049 }, { 220,6049 }, { 221,6049 }, { 222,6049 }, { 223,6049 }, { 224,6049 }, { 225,6049 }, { 226,6049 }, { 227,6049 }, { 228,6049 }, { 229,6049 }, { 230,6049 }, { 231,6049 }, { 232,6049 }, { 233,6049 }, { 234,6049 }, { 235,6049 }, { 236,6049 }, { 237,6049 }, { 238,6049 }, { 239,6049 }, { 240,6049 }, { 241,6049 }, { 242,6049 }, { 243,6049 }, { 244,6049 }, { 245,6049 }, { 246,6049 }, { 247,6049 }, { 248,6049 }, { 249,6049 }, { 250,6049 }, { 251,6049 }, { 252,6049 }, { 253,6049 }, { 254,6049 }, { 255,6049 }, { 0, 57 }, { 0,20233 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 46,-257 }, { 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, 257 }, { 66, 257 }, { 67, 257 }, { 68, 257 }, { 69, 771 }, { 70, 257 }, { 71, 257 }, { 72, 257 }, { 73, 257 }, { 74, 257 }, { 75, 257 }, { 76, 257 }, { 77, 257 }, { 78, 257 }, { 79, 257 }, { 80, 257 }, { 81, 257 }, { 82, 257 }, { 83, 257 }, { 84, 257 }, { 85, 257 }, { 86, 257 }, { 87, 257 }, { 88, 257 }, { 89, 257 }, { 90, 257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,1542 }, { 0, 0 }, { 97, 257 }, { 98, 257 }, { 99, 257 }, { 100, 257 }, { 101, 771 }, { 102, 257 }, { 103, 257 }, { 104, 257 }, { 105, 257 }, { 106, 257 }, { 107, 257 }, { 108, 257 }, { 109, 257 }, { 110, 257 }, { 111, 257 }, { 112, 257 }, { 113, 257 }, { 114, 257 }, { 115, 257 }, { 116, 257 }, { 117, 257 }, { 118, 257 }, { 119, 257 }, { 120, 257 }, { 121, 257 }, { 122, 257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128, 257 }, { 129, 257 }, { 130, 257 }, { 131, 257 }, { 132, 257 }, { 133, 257 }, { 134, 257 }, { 135, 257 }, { 136, 257 }, { 137, 257 }, { 138, 257 }, { 139, 257 }, { 140, 257 }, { 141, 257 }, { 142, 257 }, { 143, 257 }, { 144, 257 }, { 145, 257 }, { 146, 257 }, { 147, 257 }, { 148, 257 }, { 149, 257 }, { 150, 257 }, { 151, 257 }, { 152, 257 }, { 153, 257 }, { 154, 257 }, { 155, 257 }, { 156, 257 }, { 157, 257 }, { 158, 257 }, { 159, 257 }, { 160, 257 }, { 161, 257 }, { 162, 257 }, { 163, 257 }, { 164, 257 }, { 165, 257 }, { 166, 257 }, { 167, 257 }, { 168, 257 }, { 169, 257 }, { 170, 257 }, { 171, 257 }, { 172, 257 }, { 173, 257 }, { 174, 257 }, { 175, 257 }, { 176, 257 }, { 177, 257 }, { 178, 257 }, { 179, 257 }, { 180, 257 }, { 181, 257 }, { 182, 257 }, { 183, 257 }, { 184, 257 }, { 185, 257 }, { 186, 257 }, { 187, 257 }, { 188, 257 }, { 189, 257 }, { 190, 257 }, { 191, 257 }, { 192, 257 }, { 193, 257 }, { 194, 257 }, { 195, 257 }, { 196, 257 }, { 197, 257 }, { 198, 257 }, { 199, 257 }, { 200, 257 }, { 201, 257 }, { 202, 257 }, { 203, 257 }, { 204, 257 }, { 205, 257 }, { 206, 257 }, { 207, 257 }, { 208, 257 }, { 209, 257 }, { 210, 257 }, { 211, 257 }, { 212, 257 }, { 213, 257 }, { 214, 257 }, { 215, 257 }, { 216, 257 }, { 217, 257 }, { 218, 257 }, { 219, 257 }, { 220, 257 }, { 221, 257 }, { 222, 257 }, { 223, 257 }, { 224, 257 }, { 225, 257 }, { 226, 257 }, { 227, 257 }, { 228, 257 }, { 229, 257 }, { 230, 257 }, { 231, 257 }, { 232, 257 }, { 233, 257 }, { 234, 257 }, { 235, 257 }, { 236, 257 }, { 237, 257 }, { 238, 257 }, { 239, 257 }, { 240, 257 }, { 241, 257 }, { 242, 257 }, { 243, 257 }, { 244, 257 }, { 245, 257 }, { 246, 257 }, { 247, 257 }, { 248, 257 }, { 249, 257 }, { 250, 257 }, { 251, 257 }, { 252, 257 }, { 253, 257 }, { 254, 257 }, { 255, 257 }, { 0, 68 }, { 0,19976 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,6595 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,6595 }, { 49,6595 }, { 50,6595 }, { 51,6595 }, { 52,6595 }, { 53,6595 }, { 54,6595 }, { 55,6595 }, { 56,6595 }, { 57,6595 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,6595 }, { 66,6595 }, { 67,6595 }, { 68,6595 }, { 69,6595 }, { 70,6595 }, { 71,6595 }, { 72,6595 }, { 73,6595 }, { 74,6595 }, { 75,6595 }, { 76,6595 }, { 77,6595 }, { 78,6595 }, { 79,6595 }, { 80,6595 }, { 81,6595 }, { 82,6595 }, { 83,6595 }, { 84,6595 }, { 85,6595 }, { 86,6595 }, { 87,6595 }, { 88,6595 }, { 89,6595 }, { 90,6595 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,6595 }, { 0, 0 }, { 97,6595 }, { 98,6595 }, { 99,6595 }, { 100,6595 }, { 101,6595 }, { 102,6595 }, { 103,6595 }, { 104,6595 }, { 105,6595 }, { 106,6595 }, { 107,6595 }, { 108,6595 }, { 109,6595 }, { 110,6595 }, { 111,6595 }, { 112,6595 }, { 113,6595 }, { 114,6595 }, { 115,6595 }, { 116,6595 }, { 117,6595 }, { 118,6595 }, { 119,6595 }, { 120,6595 }, { 121,6595 }, { 122,6595 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,6595 }, { 129,6595 }, { 130,6595 }, { 131,6595 }, { 132,6595 }, { 133,6595 }, { 134,6595 }, { 135,6595 }, { 136,6595 }, { 137,6595 }, { 138,6595 }, { 139,6595 }, { 140,6595 }, { 141,6595 }, { 142,6595 }, { 143,6595 }, { 144,6595 }, { 145,6595 }, { 146,6595 }, { 147,6595 }, { 148,6595 }, { 149,6595 }, { 150,6595 }, { 151,6595 }, { 152,6595 }, { 153,6595 }, { 154,6595 }, { 155,6595 }, { 156,6595 }, { 157,6595 }, { 158,6595 }, { 159,6595 }, { 160,6595 }, { 161,6595 }, { 162,6595 }, { 163,6595 }, { 164,6595 }, { 165,6595 }, { 166,6595 }, { 167,6595 }, { 168,6595 }, { 169,6595 }, { 170,6595 }, { 171,6595 }, { 172,6595 }, { 173,6595 }, { 174,6595 }, { 175,6595 }, { 176,6595 }, { 177,6595 }, { 178,6595 }, { 179,6595 }, { 180,6595 }, { 181,6595 }, { 182,6595 }, { 183,6595 }, { 184,6595 }, { 185,6595 }, { 186,6595 }, { 187,6595 }, { 188,6595 }, { 189,6595 }, { 190,6595 }, { 191,6595 }, { 192,6595 }, { 193,6595 }, { 194,6595 }, { 195,6595 }, { 196,6595 }, { 197,6595 }, { 198,6595 }, { 199,6595 }, { 200,6595 }, { 201,6595 }, { 202,6595 }, { 203,6595 }, { 204,6595 }, { 205,6595 }, { 206,6595 }, { 207,6595 }, { 208,6595 }, { 209,6595 }, { 210,6595 }, { 211,6595 }, { 212,6595 }, { 213,6595 }, { 214,6595 }, { 215,6595 }, { 216,6595 }, { 217,6595 }, { 218,6595 }, { 219,6595 }, { 220,6595 }, { 221,6595 }, { 222,6595 }, { 223,6595 }, { 224,6595 }, { 225,6595 }, { 226,6595 }, { 227,6595 }, { 228,6595 }, { 229,6595 }, { 230,6595 }, { 231,6595 }, { 232,6595 }, { 233,6595 }, { 234,6595 }, { 235,6595 }, { 236,6595 }, { 237,6595 }, { 238,6595 }, { 239,6595 }, { 240,6595 }, { 241,6595 }, { 242,6595 }, { 243,6595 }, { 244,6595 }, { 245,6595 }, { 246,6595 }, { 247,6595 }, { 248,6595 }, { 249,6595 }, { 250,6595 }, { 251,6595 }, { 252,6595 }, { 253,6595 }, { 254,6595 }, { 255,6595 }, { 0, 63 }, { 0,19719 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,6338 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,6595 }, { 49,6595 }, { 50,6338 }, { 51,6338 }, { 52,6338 }, { 53,6338 }, { 54,6338 }, { 55,6338 }, { 56,6338 }, { 57,6338 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,6338 }, { 66,6338 }, { 67,6338 }, { 68,6338 }, { 69,6338 }, { 70,6338 }, { 71,6338 }, { 72,6338 }, { 73,6338 }, { 74,6338 }, { 75,6338 }, { 76,6338 }, { 77,6338 }, { 78,6338 }, { 79,6338 }, { 80,6338 }, { 81,6338 }, { 82,6338 }, { 83,6338 }, { 84,6338 }, { 85,6338 }, { 86,6338 }, { 87,6338 }, { 88,6338 }, { 89,6338 }, { 90,6338 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,6852 }, { 0, 0 }, { 97,6338 }, { 98,6338 }, { 99,6338 }, { 100,6338 }, { 101,6338 }, { 102,6338 }, { 103,6338 }, { 104,6338 }, { 105,6338 }, { 106,6338 }, { 107,6338 }, { 108,6338 }, { 109,6338 }, { 110,6338 }, { 111,6338 }, { 112,6338 }, { 113,6338 }, { 114,6338 }, { 115,6338 }, { 116,6338 }, { 117,6338 }, { 118,6338 }, { 119,6338 }, { 120,6338 }, { 121,6338 }, { 122,6338 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,6338 }, { 129,6338 }, { 130,6338 }, { 131,6338 }, { 132,6338 }, { 133,6338 }, { 134,6338 }, { 135,6338 }, { 136,6338 }, { 137,6338 }, { 138,6338 }, { 139,6338 }, { 140,6338 }, { 141,6338 }, { 142,6338 }, { 143,6338 }, { 144,6338 }, { 145,6338 }, { 146,6338 }, { 147,6338 }, { 148,6338 }, { 149,6338 }, { 150,6338 }, { 151,6338 }, { 152,6338 }, { 153,6338 }, { 154,6338 }, { 155,6338 }, { 156,6338 }, { 157,6338 }, { 158,6338 }, { 159,6338 }, { 160,6338 }, { 161,6338 }, { 162,6338 }, { 163,6338 }, { 164,6338 }, { 165,6338 }, { 166,6338 }, { 167,6338 }, { 168,6338 }, { 169,6338 }, { 170,6338 }, { 171,6338 }, { 172,6338 }, { 173,6338 }, { 174,6338 }, { 175,6338 }, { 176,6338 }, { 177,6338 }, { 178,6338 }, { 179,6338 }, { 180,6338 }, { 181,6338 }, { 182,6338 }, { 183,6338 }, { 184,6338 }, { 185,6338 }, { 186,6338 }, { 187,6338 }, { 188,6338 }, { 189,6338 }, { 190,6338 }, { 191,6338 }, { 192,6338 }, { 193,6338 }, { 194,6338 }, { 195,6338 }, { 196,6338 }, { 197,6338 }, { 198,6338 }, { 199,6338 }, { 200,6338 }, { 201,6338 }, { 202,6338 }, { 203,6338 }, { 204,6338 }, { 205,6338 }, { 206,6338 }, { 207,6338 }, { 208,6338 }, { 209,6338 }, { 210,6338 }, { 211,6338 }, { 212,6338 }, { 213,6338 }, { 214,6338 }, { 215,6338 }, { 216,6338 }, { 217,6338 }, { 218,6338 }, { 219,6338 }, { 220,6338 }, { 221,6338 }, { 222,6338 }, { 223,6338 }, { 224,6338 }, { 225,6338 }, { 226,6338 }, { 227,6338 }, { 228,6338 }, { 229,6338 }, { 230,6338 }, { 231,6338 }, { 232,6338 }, { 233,6338 }, { 234,6338 }, { 235,6338 }, { 236,6338 }, { 237,6338 }, { 238,6338 }, { 239,6338 }, { 240,6338 }, { 241,6338 }, { 242,6338 }, { 243,6338 }, { 244,6338 }, { 245,6338 }, { 246,6338 }, { 247,6338 }, { 248,6338 }, { 249,6338 }, { 250,6338 }, { 251,6338 }, { 252,6338 }, { 253,6338 }, { 254,6338 }, { 255,6338 }, { 0, 68 }, { 0,19462 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,6081 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 43,6852 }, { 0, 0 }, { 45,6852 }, { 0, 0 }, { 0, 0 }, { 48,6862 }, { 49,6862 }, { 50,6862 }, { 51,6862 }, { 52,6862 }, { 53,6862 }, { 54,6862 }, { 55,6862 }, { 56,6862 }, { 57,6862 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,6081 }, { 66,6081 }, { 67,6081 }, { 68,6081 }, { 69,6081 }, { 70,6081 }, { 71,6081 }, { 72,6081 }, { 73,6081 }, { 74,6081 }, { 75,6081 }, { 76,6081 }, { 77,6081 }, { 78,6081 }, { 79,6081 }, { 80,6081 }, { 81,6081 }, { 82,6081 }, { 83,6081 }, { 84,6081 }, { 85,6081 }, { 86,6081 }, { 87,6081 }, { 88,6081 }, { 89,6081 }, { 90,6081 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,6081 }, { 0, 0 }, { 97,6081 }, { 98,6081 }, { 99,6081 }, { 100,6081 }, { 101,6081 }, { 102,6081 }, { 103,6081 }, { 104,6081 }, { 105,6081 }, { 106,6081 }, { 107,6081 }, { 108,6081 }, { 109,6081 }, { 110,6081 }, { 111,6081 }, { 112,6081 }, { 113,6081 }, { 114,6081 }, { 115,6081 }, { 116,6081 }, { 117,6081 }, { 118,6081 }, { 119,6081 }, { 120,6081 }, { 121,6081 }, { 122,6081 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,6081 }, { 129,6081 }, { 130,6081 }, { 131,6081 }, { 132,6081 }, { 133,6081 }, { 134,6081 }, { 135,6081 }, { 136,6081 }, { 137,6081 }, { 138,6081 }, { 139,6081 }, { 140,6081 }, { 141,6081 }, { 142,6081 }, { 143,6081 }, { 144,6081 }, { 145,6081 }, { 146,6081 }, { 147,6081 }, { 148,6081 }, { 149,6081 }, { 150,6081 }, { 151,6081 }, { 152,6081 }, { 153,6081 }, { 154,6081 }, { 155,6081 }, { 156,6081 }, { 157,6081 }, { 158,6081 }, { 159,6081 }, { 160,6081 }, { 161,6081 }, { 162,6081 }, { 163,6081 }, { 164,6081 }, { 165,6081 }, { 166,6081 }, { 167,6081 }, { 168,6081 }, { 169,6081 }, { 170,6081 }, { 171,6081 }, { 172,6081 }, { 173,6081 }, { 174,6081 }, { 175,6081 }, { 176,6081 }, { 177,6081 }, { 178,6081 }, { 179,6081 }, { 180,6081 }, { 181,6081 }, { 182,6081 }, { 183,6081 }, { 184,6081 }, { 185,6081 }, { 186,6081 }, { 187,6081 }, { 188,6081 }, { 189,6081 }, { 190,6081 }, { 191,6081 }, { 192,6081 }, { 193,6081 }, { 194,6081 }, { 195,6081 }, { 196,6081 }, { 197,6081 }, { 198,6081 }, { 199,6081 }, { 200,6081 }, { 201,6081 }, { 202,6081 }, { 203,6081 }, { 204,6081 }, { 205,6081 }, { 206,6081 }, { 207,6081 }, { 208,6081 }, { 209,6081 }, { 210,6081 }, { 211,6081 }, { 212,6081 }, { 213,6081 }, { 214,6081 }, { 215,6081 }, { 216,6081 }, { 217,6081 }, { 218,6081 }, { 219,6081 }, { 220,6081 }, { 221,6081 }, { 222,6081 }, { 223,6081 }, { 224,6081 }, { 225,6081 }, { 226,6081 }, { 227,6081 }, { 228,6081 }, { 229,6081 }, { 230,6081 }, { 231,6081 }, { 232,6081 }, { 233,6081 }, { 234,6081 }, { 235,6081 }, { 236,6081 }, { 237,6081 }, { 238,6081 }, { 239,6081 }, { 240,6081 }, { 241,6081 }, { 242,6081 }, { 243,6081 }, { 244,6081 }, { 245,6081 }, { 246,6081 }, { 247,6081 }, { 248,6081 }, { 249,6081 }, { 250,6081 }, { 251,6081 }, { 252,6081 }, { 253,6081 }, { 254,6081 }, { 255,6081 }, { 0, 62 }, { 0,19205 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,5824 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,6862 }, { 49,6862 }, { 50,6862 }, { 51,6862 }, { 52,6862 }, { 53,6862 }, { 54,6862 }, { 55,6862 }, { 56,5824 }, { 57,5824 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,5824 }, { 66,5824 }, { 67,5824 }, { 68,5824 }, { 69,5824 }, { 70,5824 }, { 71,5824 }, { 72,5824 }, { 73,5824 }, { 74,5824 }, { 75,5824 }, { 76,5824 }, { 77,5824 }, { 78,5824 }, { 79,5824 }, { 80,5824 }, { 81,5824 }, { 82,5824 }, { 83,5824 }, { 84,5824 }, { 85,5824 }, { 86,5824 }, { 87,5824 }, { 88,5824 }, { 89,5824 }, { 90,5824 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,7119 }, { 0, 0 }, { 97,5824 }, { 98,5824 }, { 99,5824 }, { 100,5824 }, { 101,5824 }, { 102,5824 }, { 103,5824 }, { 104,5824 }, { 105,5824 }, { 106,5824 }, { 107,5824 }, { 108,5824 }, { 109,5824 }, { 110,5824 }, { 111,5824 }, { 112,5824 }, { 113,5824 }, { 114,5824 }, { 115,5824 }, { 116,5824 }, { 117,5824 }, { 118,5824 }, { 119,5824 }, { 120,5824 }, { 121,5824 }, { 122,5824 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5824 }, { 129,5824 }, { 130,5824 }, { 131,5824 }, { 132,5824 }, { 133,5824 }, { 134,5824 }, { 135,5824 }, { 136,5824 }, { 137,5824 }, { 138,5824 }, { 139,5824 }, { 140,5824 }, { 141,5824 }, { 142,5824 }, { 143,5824 }, { 144,5824 }, { 145,5824 }, { 146,5824 }, { 147,5824 }, { 148,5824 }, { 149,5824 }, { 150,5824 }, { 151,5824 }, { 152,5824 }, { 153,5824 }, { 154,5824 }, { 155,5824 }, { 156,5824 }, { 157,5824 }, { 158,5824 }, { 159,5824 }, { 160,5824 }, { 161,5824 }, { 162,5824 }, { 163,5824 }, { 164,5824 }, { 165,5824 }, { 166,5824 }, { 167,5824 }, { 168,5824 }, { 169,5824 }, { 170,5824 }, { 171,5824 }, { 172,5824 }, { 173,5824 }, { 174,5824 }, { 175,5824 }, { 176,5824 }, { 177,5824 }, { 178,5824 }, { 179,5824 }, { 180,5824 }, { 181,5824 }, { 182,5824 }, { 183,5824 }, { 184,5824 }, { 185,5824 }, { 186,5824 }, { 187,5824 }, { 188,5824 }, { 189,5824 }, { 190,5824 }, { 191,5824 }, { 192,5824 }, { 193,5824 }, { 194,5824 }, { 195,5824 }, { 196,5824 }, { 197,5824 }, { 198,5824 }, { 199,5824 }, { 200,5824 }, { 201,5824 }, { 202,5824 }, { 203,5824 }, { 204,5824 }, { 205,5824 }, { 206,5824 }, { 207,5824 }, { 208,5824 }, { 209,5824 }, { 210,5824 }, { 211,5824 }, { 212,5824 }, { 213,5824 }, { 214,5824 }, { 215,5824 }, { 216,5824 }, { 217,5824 }, { 218,5824 }, { 219,5824 }, { 220,5824 }, { 221,5824 }, { 222,5824 }, { 223,5824 }, { 224,5824 }, { 225,5824 }, { 226,5824 }, { 227,5824 }, { 228,5824 }, { 229,5824 }, { 230,5824 }, { 231,5824 }, { 232,5824 }, { 233,5824 }, { 234,5824 }, { 235,5824 }, { 236,5824 }, { 237,5824 }, { 238,5824 }, { 239,5824 }, { 240,5824 }, { 241,5824 }, { 242,5824 }, { 243,5824 }, { 244,5824 }, { 245,5824 }, { 246,5824 }, { 247,5824 }, { 248,5824 }, { 249,5824 }, { 250,5824 }, { 251,5824 }, { 252,5824 }, { 253,5824 }, { 254,5824 }, { 255,5824 }, { 0, 61 }, { 0,18948 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,5567 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,7119 }, { 49,7119 }, { 50,7119 }, { 51,7119 }, { 52,7119 }, { 53,7119 }, { 54,7119 }, { 55,7119 }, { 56,7119 }, { 57,7119 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,7119 }, { 66,7119 }, { 67,7119 }, { 68,7119 }, { 69,7119 }, { 70,7119 }, { 71,5567 }, { 72,5567 }, { 73,5567 }, { 74,5567 }, { 75,5567 }, { 76,5567 }, { 77,5567 }, { 78,5567 }, { 79,5567 }, { 80,5567 }, { 81,5567 }, { 82,5567 }, { 83,5567 }, { 84,5567 }, { 85,5567 }, { 86,5567 }, { 87,5567 }, { 88,5567 }, { 89,5567 }, { 90,5567 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,7376 }, { 0, 0 }, { 97,7119 }, { 98,7119 }, { 99,7119 }, { 100,7119 }, { 101,7119 }, { 102,7119 }, { 103,5567 }, { 104,5567 }, { 105,5567 }, { 106,5567 }, { 107,5567 }, { 108,5567 }, { 109,5567 }, { 110,5567 }, { 111,5567 }, { 112,5567 }, { 113,5567 }, { 114,5567 }, { 115,5567 }, { 116,5567 }, { 117,5567 }, { 118,5567 }, { 119,5567 }, { 120,5567 }, { 121,5567 }, { 122,5567 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5567 }, { 129,5567 }, { 130,5567 }, { 131,5567 }, { 132,5567 }, { 133,5567 }, { 134,5567 }, { 135,5567 }, { 136,5567 }, { 137,5567 }, { 138,5567 }, { 139,5567 }, { 140,5567 }, { 141,5567 }, { 142,5567 }, { 143,5567 }, { 144,5567 }, { 145,5567 }, { 146,5567 }, { 147,5567 }, { 148,5567 }, { 149,5567 }, { 150,5567 }, { 151,5567 }, { 152,5567 }, { 153,5567 }, { 154,5567 }, { 155,5567 }, { 156,5567 }, { 157,5567 }, { 158,5567 }, { 159,5567 }, { 160,5567 }, { 161,5567 }, { 162,5567 }, { 163,5567 }, { 164,5567 }, { 165,5567 }, { 166,5567 }, { 167,5567 }, { 168,5567 }, { 169,5567 }, { 170,5567 }, { 171,5567 }, { 172,5567 }, { 173,5567 }, { 174,5567 }, { 175,5567 }, { 176,5567 }, { 177,5567 }, { 178,5567 }, { 179,5567 }, { 180,5567 }, { 181,5567 }, { 182,5567 }, { 183,5567 }, { 184,5567 }, { 185,5567 }, { 186,5567 }, { 187,5567 }, { 188,5567 }, { 189,5567 }, { 190,5567 }, { 191,5567 }, { 192,5567 }, { 193,5567 }, { 194,5567 }, { 195,5567 }, { 196,5567 }, { 197,5567 }, { 198,5567 }, { 199,5567 }, { 200,5567 }, { 201,5567 }, { 202,5567 }, { 203,5567 }, { 204,5567 }, { 205,5567 }, { 206,5567 }, { 207,5567 }, { 208,5567 }, { 209,5567 }, { 210,5567 }, { 211,5567 }, { 212,5567 }, { 213,5567 }, { 214,5567 }, { 215,5567 }, { 216,5567 }, { 217,5567 }, { 218,5567 }, { 219,5567 }, { 220,5567 }, { 221,5567 }, { 222,5567 }, { 223,5567 }, { 224,5567 }, { 225,5567 }, { 226,5567 }, { 227,5567 }, { 228,5567 }, { 229,5567 }, { 230,5567 }, { 231,5567 }, { 232,5567 }, { 233,5567 }, { 234,5567 }, { 235,5567 }, { 236,5567 }, { 237,5567 }, { 238,5567 }, { 239,5567 }, { 240,5567 }, { 241,5567 }, { 242,5567 }, { 243,5567 }, { 244,5567 }, { 245,5567 }, { 246,5567 }, { 247,5567 }, { 248,5567 }, { 249,5567 }, { 250,5567 }, { 251,5567 }, { 252,5567 }, { 253,5567 }, { 254,5567 }, { 255,5567 }, { 0, 68 }, { 0,18691 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,5310 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,7376 }, { 49,7376 }, { 50,7376 }, { 51,7376 }, { 52,7376 }, { 53,7376 }, { 54,7376 }, { 55,7376 }, { 56,7376 }, { 57,7376 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,5310 }, { 66,5310 }, { 67,5310 }, { 68,5310 }, { 69,5310 }, { 70,5310 }, { 71,5310 }, { 72,5310 }, { 73,5310 }, { 74,5310 }, { 75,5310 }, { 76,5310 }, { 77,5310 }, { 78,5310 }, { 79,5310 }, { 80,5310 }, { 81,5310 }, { 82,5310 }, { 83,5310 }, { 84,5310 }, { 85,5310 }, { 86,5310 }, { 87,5310 }, { 88,5310 }, { 89,5310 }, { 90,5310 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,5310 }, { 0, 0 }, { 97,5310 }, { 98,5310 }, { 99,5310 }, { 100,5310 }, { 101,5310 }, { 102,5310 }, { 103,5310 }, { 104,5310 }, { 105,5310 }, { 106,5310 }, { 107,5310 }, { 108,5310 }, { 109,5310 }, { 110,5310 }, { 111,5310 }, { 112,5310 }, { 113,5310 }, { 114,5310 }, { 115,5310 }, { 116,5310 }, { 117,5310 }, { 118,5310 }, { 119,5310 }, { 120,5310 }, { 121,5310 }, { 122,5310 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5310 }, { 129,5310 }, { 130,5310 }, { 131,5310 }, { 132,5310 }, { 133,5310 }, { 134,5310 }, { 135,5310 }, { 136,5310 }, { 137,5310 }, { 138,5310 }, { 139,5310 }, { 140,5310 }, { 141,5310 }, { 142,5310 }, { 143,5310 }, { 144,5310 }, { 145,5310 }, { 146,5310 }, { 147,5310 }, { 148,5310 }, { 149,5310 }, { 150,5310 }, { 151,5310 }, { 152,5310 }, { 153,5310 }, { 154,5310 }, { 155,5310 }, { 156,5310 }, { 157,5310 }, { 158,5310 }, { 159,5310 }, { 160,5310 }, { 161,5310 }, { 162,5310 }, { 163,5310 }, { 164,5310 }, { 165,5310 }, { 166,5310 }, { 167,5310 }, { 168,5310 }, { 169,5310 }, { 170,5310 }, { 171,5310 }, { 172,5310 }, { 173,5310 }, { 174,5310 }, { 175,5310 }, { 176,5310 }, { 177,5310 }, { 178,5310 }, { 179,5310 }, { 180,5310 }, { 181,5310 }, { 182,5310 }, { 183,5310 }, { 184,5310 }, { 185,5310 }, { 186,5310 }, { 187,5310 }, { 188,5310 }, { 189,5310 }, { 190,5310 }, { 191,5310 }, { 192,5310 }, { 193,5310 }, { 194,5310 }, { 195,5310 }, { 196,5310 }, { 197,5310 }, { 198,5310 }, { 199,5310 }, { 200,5310 }, { 201,5310 }, { 202,5310 }, { 203,5310 }, { 204,5310 }, { 205,5310 }, { 206,5310 }, { 207,5310 }, { 208,5310 }, { 209,5310 }, { 210,5310 }, { 211,5310 }, { 212,5310 }, { 213,5310 }, { 214,5310 }, { 215,5310 }, { 216,5310 }, { 217,5310 }, { 218,5310 }, { 219,5310 }, { 220,5310 }, { 221,5310 }, { 222,5310 }, { 223,5310 }, { 224,5310 }, { 225,5310 }, { 226,5310 }, { 227,5310 }, { 228,5310 }, { 229,5310 }, { 230,5310 }, { 231,5310 }, { 232,5310 }, { 233,5310 }, { 234,5310 }, { 235,5310 }, { 236,5310 }, { 237,5310 }, { 238,5310 }, { 239,5310 }, { 240,5310 }, { 241,5310 }, { 242,5310 }, { 243,5310 }, { 244,5310 }, { 245,5310 }, { 246,5310 }, { 247,5310 }, { 248,5310 }, { 249,5310 }, { 250,5310 }, { 251,5310 }, { 252,5310 }, { 253,5310 }, { 254,5310 }, { 255,5310 }, { 0, 50 }, { 0,18434 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 52 }, { 0,18423 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-2951 }, { 0, 0 }, { 35,-2951 }, { 0, 0 }, { 37,-2951 }, { 38,-2951 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,-2951 }, { 43,-2951 }, { 33,-2962 }, { 45,-2951 }, { 35,-2962 }, { 47,-2951 }, { 37,-2962 }, { 38,-2962 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,-2962 }, { 43,-2962 }, { 0, 0 }, { 45,-2962 }, { 0, 0 }, { 47,-2962 }, { 0, 0 }, { 60,-2951 }, { 61,-2951 }, { 62,-2951 }, { 63,-2951 }, { 64,-2951 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,-2962 }, { 61,-2962 }, { 62,-2962 }, { 63,-2962 }, { 64,-2962 }, { 0, 0 }, { 0, 49 }, { 0,18356 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-2951 }, { 0, 0 }, { 96,-2951 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,-2962 }, { 0, 0 }, { 96,-2962 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,-3029 }, { 0, 0 }, { 35,-3029 }, { 0, 0 }, { 37,-3029 }, { 38,-3029 }, { 0, 51 }, { 0,18316 }, { 0, 0 }, { 42,-3029 }, { 43,-3029 }, { 0, 0 }, { 45,-3029 }, { 124,-2951 }, { 47,-3029 }, { 126,-2951 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,-2962 }, { 0, 0 }, { 126,-2962 }, { 60,-3029 }, { 61,-3029 }, { 62,-3029 }, { 63,-3029 }, { 64,-3029 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,-3069 }, { 0, 0 }, { 35,-3069 }, { 0, 0 }, { 37,-3069 }, { 38,-3069 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,-3069 }, { 43,-3069 }, { 0, 0 }, { 45,-3069 }, { 0, 0 }, { 47,-3069 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,-3029 }, { 0, 0 }, { 96,-3029 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,-3069 }, { 61,-3069 }, { 62,-3069 }, { 63,-3069 }, { 64,-3069 }, { 0, 71 }, { 0,18250 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-3029 }, { 0, 0 }, { 126,-3029 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,-3069 }, { 0, 0 }, { 96,-3069 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36, 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 }, { 124,-3069 }, { 0, 0 }, { 126,-3069 }, { 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, 11 }, { 0,17993 }, { 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,17735 }, { 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,17477 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,6419 }, { 0, 0 }, { 35,6419 }, { 0, 0 }, { 37,6419 }, { 38,6419 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,6419 }, { 43,6419 }, { 0, 0 }, { 45,6419 }, { 0, 0 }, { 47,6419 }, { 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,6419 }, { 61,6419 }, { 62,6419 }, { 63,6419 }, { 64,6419 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,6419 }, { 0, 0 }, { 96,6419 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,6419 }, { 0, 0 }, { 126,6419 }, { 0, 44 }, { 0,17349 }, { 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,17091 }, { 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,16833 }, { 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,16575 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 19 }, { 0,16570 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 5 }, { 11, 0 }, { 12, 0 }, { 13, 5 }, { 9, 24 }, { 10, 24 }, { 11, 24 }, { 12, 24 }, { 13, 24 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 19 }, { 0,16546 }, { 0, 0 }, { 0, 0 }, { 32, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32, 24 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 0, 0 }, { 39,-10264 }, { 45,-10261 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-10266 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-10288 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-10290 }, { 0, 23 }, { 0,16499 }, { 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,16241 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0,16233 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 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,16210 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,5185 }, { 49,5185 }, { 50,5185 }, { 51,5185 }, { 52,5185 }, { 53,5185 }, { 54,5185 }, { 55,5185 }, { 48,5192 }, { 49,5192 }, { 50,5192 }, { 51,5192 }, { 52,5192 }, { 53,5192 }, { 54,5192 }, { 55,5192 }, { 56,5192 }, { 57,5192 }, { 0, 0 }, { 0, 0 }, { 0, 29 }, { 0,16172 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,5192 }, { 66,5192 }, { 67,5192 }, { 68,5192 }, { 69,5192 }, { 70,5192 }, { 48,5231 }, { 49,5231 }, { 50,5231 }, { 51,5231 }, { 52,5231 }, { 53,5231 }, { 54,5231 }, { 55,5231 }, { 56,5231 }, { 57,5231 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,5231 }, { 66,5231 }, { 67,5231 }, { 68,5231 }, { 69,5231 }, { 70,5231 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,5192 }, { 98,5192 }, { 99,5192 }, { 100,5192 }, { 101,5192 }, { 102,5192 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,5216 }, { 49,5216 }, { 50,5216 }, { 51,5216 }, { 52,5216 }, { 53,5216 }, { 54,5216 }, { 55,5216 }, { 56,5216 }, { 57,5216 }, { 0, 0 }, { 97,5231 }, { 98,5231 }, { 99,5231 }, { 100,5231 }, { 101,5231 }, { 102,5231 }, { 65,5216 }, { 66,5216 }, { 67,5216 }, { 68,5216 }, { 69,5216 }, { 70,5216 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,5216 }, { 98,5216 }, { 99,5216 }, { 100,5216 }, { 101,5216 }, { 102,5216 }, { 0, 36 }, { 0,16068 }, { 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,15810 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-11020 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,4913 }, { 49,4913 }, { 50,4913 }, { 51,4913 }, { 52,4913 }, { 53,4913 }, { 54,4913 }, { 55,4913 }, { 56,4913 }, { 57,4913 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4913 }, { 66,4913 }, { 67,4913 }, { 68,4913 }, { 69,4913 }, { 70,4913 }, { 71,4913 }, { 72,4913 }, { 73,4913 }, { 74,4913 }, { 75,4913 }, { 76,4913 }, { 77,4913 }, { 78,4913 }, { 79,4913 }, { 80,4913 }, { 81,4913 }, { 82,4913 }, { 83,4913 }, { 84,4913 }, { 85,4913 }, { 86,4913 }, { 87,4913 }, { 88,4913 }, { 89,4913 }, { 90,4913 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4913 }, { 0, 0 }, { 97,4913 }, { 98,4913 }, { 99,4913 }, { 100,4913 }, { 101,4913 }, { 102,4913 }, { 103,4913 }, { 104,4913 }, { 105,4913 }, { 106,4913 }, { 107,4913 }, { 108,4913 }, { 109,4913 }, { 110,4913 }, { 111,4913 }, { 112,4913 }, { 113,4913 }, { 114,4913 }, { 115,4913 }, { 116,4913 }, { 117,4913 }, { 118,4913 }, { 119,4913 }, { 120,4913 }, { 121,4913 }, { 122,4913 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4913 }, { 129,4913 }, { 130,4913 }, { 131,4913 }, { 132,4913 }, { 133,4913 }, { 134,4913 }, { 135,4913 }, { 136,4913 }, { 137,4913 }, { 138,4913 }, { 139,4913 }, { 140,4913 }, { 141,4913 }, { 142,4913 }, { 143,4913 }, { 144,4913 }, { 145,4913 }, { 146,4913 }, { 147,4913 }, { 148,4913 }, { 149,4913 }, { 150,4913 }, { 151,4913 }, { 152,4913 }, { 153,4913 }, { 154,4913 }, { 155,4913 }, { 156,4913 }, { 157,4913 }, { 158,4913 }, { 159,4913 }, { 160,4913 }, { 161,4913 }, { 162,4913 }, { 163,4913 }, { 164,4913 }, { 165,4913 }, { 166,4913 }, { 167,4913 }, { 168,4913 }, { 169,4913 }, { 170,4913 }, { 171,4913 }, { 172,4913 }, { 173,4913 }, { 174,4913 }, { 175,4913 }, { 176,4913 }, { 177,4913 }, { 178,4913 }, { 179,4913 }, { 180,4913 }, { 181,4913 }, { 182,4913 }, { 183,4913 }, { 184,4913 }, { 185,4913 }, { 186,4913 }, { 187,4913 }, { 188,4913 }, { 189,4913 }, { 190,4913 }, { 191,4913 }, { 192,4913 }, { 193,4913 }, { 194,4913 }, { 195,4913 }, { 196,4913 }, { 197,4913 }, { 198,4913 }, { 199,4913 }, { 200,4913 }, { 201,4913 }, { 202,4913 }, { 203,4913 }, { 204,4913 }, { 205,4913 }, { 206,4913 }, { 207,4913 }, { 208,4913 }, { 209,4913 }, { 210,4913 }, { 211,4913 }, { 212,4913 }, { 213,4913 }, { 214,4913 }, { 215,4913 }, { 216,4913 }, { 217,4913 }, { 218,4913 }, { 219,4913 }, { 220,4913 }, { 221,4913 }, { 222,4913 }, { 223,4913 }, { 224,4913 }, { 225,4913 }, { 226,4913 }, { 227,4913 }, { 228,4913 }, { 229,4913 }, { 230,4913 }, { 231,4913 }, { 232,4913 }, { 233,4913 }, { 234,4913 }, { 235,4913 }, { 236,4913 }, { 237,4913 }, { 238,4913 }, { 239,4913 }, { 240,4913 }, { 241,4913 }, { 242,4913 }, { 243,4913 }, { 244,4913 }, { 245,4913 }, { 246,4913 }, { 247,4913 }, { 248,4913 }, { 249,4913 }, { 250,4913 }, { 251,4913 }, { 252,4913 }, { 253,4913 }, { 254,4913 }, { 255,4913 }, { 0, 28 }, { 0,15553 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 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,15530 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,4913 }, { 49,4913 }, { 50,4913 }, { 51,4913 }, { 52,4913 }, { 53,4913 }, { 54,4913 }, { 55,4913 }, { 56,4913 }, { 57,4913 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4913 }, { 66,4913 }, { 67,4913 }, { 68,4913 }, { 69,4913 }, { 70,4913 }, { 48,4913 }, { 49,4913 }, { 50,4913 }, { 51,4913 }, { 52,4913 }, { 53,4913 }, { 54,4913 }, { 55,4913 }, { 56,4913 }, { 57,4913 }, { 0, 34 }, { 0,15471 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4913 }, { 66,4913 }, { 67,4913 }, { 68,4913 }, { 69,4913 }, { 70,4913 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,4913 }, { 98,4913 }, { 99,4913 }, { 100,4913 }, { 101,4913 }, { 102,4913 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-11633 }, { 0, 0 }, { 97,4913 }, { 98,4913 }, { 99,4913 }, { 100,4913 }, { 101,4913 }, { 102,4913 }, { 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,15214 }, { 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,14956 }, { 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, 64 }, { 0,14698 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 257 }, { 66, 257 }, { 67, 257 }, { 68, 257 }, { 69, 514 }, { 70, 257 }, { 71, 257 }, { 72, 257 }, { 73, 257 }, { 74, 257 }, { 75, 257 }, { 76, 257 }, { 77, 257 }, { 78, 257 }, { 79, 257 }, { 80, 257 }, { 81, 257 }, { 82, 257 }, { 83, 257 }, { 84, 257 }, { 85, 257 }, { 86, 257 }, { 87, 257 }, { 88, 257 }, { 89, 257 }, { 90, 257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95, 771 }, { 0, 0 }, { 97, 257 }, { 98, 257 }, { 99, 257 }, { 100, 257 }, { 101, 514 }, { 102, 257 }, { 103, 257 }, { 104, 257 }, { 105, 257 }, { 106, 257 }, { 107, 257 }, { 108, 257 }, { 109, 257 }, { 110, 257 }, { 111, 257 }, { 112, 257 }, { 113, 257 }, { 114, 257 }, { 115, 257 }, { 116, 257 }, { 117, 257 }, { 118, 257 }, { 119, 257 }, { 120, 257 }, { 121, 257 }, { 122, 257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128, 257 }, { 129, 257 }, { 130, 257 }, { 131, 257 }, { 132, 257 }, { 133, 257 }, { 134, 257 }, { 135, 257 }, { 136, 257 }, { 137, 257 }, { 138, 257 }, { 139, 257 }, { 140, 257 }, { 141, 257 }, { 142, 257 }, { 143, 257 }, { 144, 257 }, { 145, 257 }, { 146, 257 }, { 147, 257 }, { 148, 257 }, { 149, 257 }, { 150, 257 }, { 151, 257 }, { 152, 257 }, { 153, 257 }, { 154, 257 }, { 155, 257 }, { 156, 257 }, { 157, 257 }, { 158, 257 }, { 159, 257 }, { 160, 257 }, { 161, 257 }, { 162, 257 }, { 163, 257 }, { 164, 257 }, { 165, 257 }, { 166, 257 }, { 167, 257 }, { 168, 257 }, { 169, 257 }, { 170, 257 }, { 171, 257 }, { 172, 257 }, { 173, 257 }, { 174, 257 }, { 175, 257 }, { 176, 257 }, { 177, 257 }, { 178, 257 }, { 179, 257 }, { 180, 257 }, { 181, 257 }, { 182, 257 }, { 183, 257 }, { 184, 257 }, { 185, 257 }, { 186, 257 }, { 187, 257 }, { 188, 257 }, { 189, 257 }, { 190, 257 }, { 191, 257 }, { 192, 257 }, { 193, 257 }, { 194, 257 }, { 195, 257 }, { 196, 257 }, { 197, 257 }, { 198, 257 }, { 199, 257 }, { 200, 257 }, { 201, 257 }, { 202, 257 }, { 203, 257 }, { 204, 257 }, { 205, 257 }, { 206, 257 }, { 207, 257 }, { 208, 257 }, { 209, 257 }, { 210, 257 }, { 211, 257 }, { 212, 257 }, { 213, 257 }, { 214, 257 }, { 215, 257 }, { 216, 257 }, { 217, 257 }, { 218, 257 }, { 219, 257 }, { 220, 257 }, { 221, 257 }, { 222, 257 }, { 223, 257 }, { 224, 257 }, { 225, 257 }, { 226, 257 }, { 227, 257 }, { 228, 257 }, { 229, 257 }, { 230, 257 }, { 231, 257 }, { 232, 257 }, { 233, 257 }, { 234, 257 }, { 235, 257 }, { 236, 257 }, { 237, 257 }, { 238, 257 }, { 239, 257 }, { 240, 257 }, { 241, 257 }, { 242, 257 }, { 243, 257 }, { 244, 257 }, { 245, 257 }, { 246, 257 }, { 247, 257 }, { 248, 257 }, { 249, 257 }, { 250, 257 }, { 251, 257 }, { 252, 257 }, { 253, 257 }, { 254, 257 }, { 255, 257 }, { 0, 69 }, { 0,14441 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,3883 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,3883 }, { 49,3883 }, { 50,3883 }, { 51,3883 }, { 52,3883 }, { 53,3883 }, { 54,3883 }, { 55,3883 }, { 56,3883 }, { 57,3883 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3883 }, { 66,3883 }, { 67,3883 }, { 68,3883 }, { 69,3883 }, { 70,3883 }, { 71,3883 }, { 72,3883 }, { 73,3883 }, { 74,3883 }, { 75,3883 }, { 76,3883 }, { 77,3883 }, { 78,3883 }, { 79,3883 }, { 80,3883 }, { 81,3883 }, { 82,3883 }, { 83,3883 }, { 84,3883 }, { 85,3883 }, { 86,3883 }, { 87,3883 }, { 88,3883 }, { 89,3883 }, { 90,3883 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,3883 }, { 0, 0 }, { 97,3883 }, { 98,3883 }, { 99,3883 }, { 100,3883 }, { 101,3883 }, { 102,3883 }, { 103,3883 }, { 104,3883 }, { 105,3883 }, { 106,3883 }, { 107,3883 }, { 108,3883 }, { 109,3883 }, { 110,3883 }, { 111,3883 }, { 112,3883 }, { 113,3883 }, { 114,3883 }, { 115,3883 }, { 116,3883 }, { 117,3883 }, { 118,3883 }, { 119,3883 }, { 120,3883 }, { 121,3883 }, { 122,3883 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,3883 }, { 129,3883 }, { 130,3883 }, { 131,3883 }, { 132,3883 }, { 133,3883 }, { 134,3883 }, { 135,3883 }, { 136,3883 }, { 137,3883 }, { 138,3883 }, { 139,3883 }, { 140,3883 }, { 141,3883 }, { 142,3883 }, { 143,3883 }, { 144,3883 }, { 145,3883 }, { 146,3883 }, { 147,3883 }, { 148,3883 }, { 149,3883 }, { 150,3883 }, { 151,3883 }, { 152,3883 }, { 153,3883 }, { 154,3883 }, { 155,3883 }, { 156,3883 }, { 157,3883 }, { 158,3883 }, { 159,3883 }, { 160,3883 }, { 161,3883 }, { 162,3883 }, { 163,3883 }, { 164,3883 }, { 165,3883 }, { 166,3883 }, { 167,3883 }, { 168,3883 }, { 169,3883 }, { 170,3883 }, { 171,3883 }, { 172,3883 }, { 173,3883 }, { 174,3883 }, { 175,3883 }, { 176,3883 }, { 177,3883 }, { 178,3883 }, { 179,3883 }, { 180,3883 }, { 181,3883 }, { 182,3883 }, { 183,3883 }, { 184,3883 }, { 185,3883 }, { 186,3883 }, { 187,3883 }, { 188,3883 }, { 189,3883 }, { 190,3883 }, { 191,3883 }, { 192,3883 }, { 193,3883 }, { 194,3883 }, { 195,3883 }, { 196,3883 }, { 197,3883 }, { 198,3883 }, { 199,3883 }, { 200,3883 }, { 201,3883 }, { 202,3883 }, { 203,3883 }, { 204,3883 }, { 205,3883 }, { 206,3883 }, { 207,3883 }, { 208,3883 }, { 209,3883 }, { 210,3883 }, { 211,3883 }, { 212,3883 }, { 213,3883 }, { 214,3883 }, { 215,3883 }, { 216,3883 }, { 217,3883 }, { 218,3883 }, { 219,3883 }, { 220,3883 }, { 221,3883 }, { 222,3883 }, { 223,3883 }, { 224,3883 }, { 225,3883 }, { 226,3883 }, { 227,3883 }, { 228,3883 }, { 229,3883 }, { 230,3883 }, { 231,3883 }, { 232,3883 }, { 233,3883 }, { 234,3883 }, { 235,3883 }, { 236,3883 }, { 237,3883 }, { 238,3883 }, { 239,3883 }, { 240,3883 }, { 241,3883 }, { 242,3883 }, { 243,3883 }, { 244,3883 }, { 245,3883 }, { 246,3883 }, { 247,3883 }, { 248,3883 }, { 249,3883 }, { 250,3883 }, { 251,3883 }, { 252,3883 }, { 253,3883 }, { 254,3883 }, { 255,3883 }, { 0, 69 }, { 0,14184 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,3626 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 43,1574 }, { 0, 0 }, { 45,1574 }, { 0, 0 }, { 0, 0 }, { 48,3883 }, { 49,3883 }, { 50,3883 }, { 51,3883 }, { 52,3883 }, { 53,3883 }, { 54,3883 }, { 55,3883 }, { 56,3883 }, { 57,3883 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3626 }, { 66,3626 }, { 67,3626 }, { 68,3626 }, { 69,3626 }, { 70,3626 }, { 71,3626 }, { 72,3626 }, { 73,3626 }, { 74,3626 }, { 75,3626 }, { 76,3626 }, { 77,3626 }, { 78,3626 }, { 79,3626 }, { 80,3626 }, { 81,3626 }, { 82,3626 }, { 83,3626 }, { 84,3626 }, { 85,3626 }, { 86,3626 }, { 87,3626 }, { 88,3626 }, { 89,3626 }, { 90,3626 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,3626 }, { 0, 0 }, { 97,3626 }, { 98,3626 }, { 99,3626 }, { 100,3626 }, { 101,3626 }, { 102,3626 }, { 103,3626 }, { 104,3626 }, { 105,3626 }, { 106,3626 }, { 107,3626 }, { 108,3626 }, { 109,3626 }, { 110,3626 }, { 111,3626 }, { 112,3626 }, { 113,3626 }, { 114,3626 }, { 115,3626 }, { 116,3626 }, { 117,3626 }, { 118,3626 }, { 119,3626 }, { 120,3626 }, { 121,3626 }, { 122,3626 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,3626 }, { 129,3626 }, { 130,3626 }, { 131,3626 }, { 132,3626 }, { 133,3626 }, { 134,3626 }, { 135,3626 }, { 136,3626 }, { 137,3626 }, { 138,3626 }, { 139,3626 }, { 140,3626 }, { 141,3626 }, { 142,3626 }, { 143,3626 }, { 144,3626 }, { 145,3626 }, { 146,3626 }, { 147,3626 }, { 148,3626 }, { 149,3626 }, { 150,3626 }, { 151,3626 }, { 152,3626 }, { 153,3626 }, { 154,3626 }, { 155,3626 }, { 156,3626 }, { 157,3626 }, { 158,3626 }, { 159,3626 }, { 160,3626 }, { 161,3626 }, { 162,3626 }, { 163,3626 }, { 164,3626 }, { 165,3626 }, { 166,3626 }, { 167,3626 }, { 168,3626 }, { 169,3626 }, { 170,3626 }, { 171,3626 }, { 172,3626 }, { 173,3626 }, { 174,3626 }, { 175,3626 }, { 176,3626 }, { 177,3626 }, { 178,3626 }, { 179,3626 }, { 180,3626 }, { 181,3626 }, { 182,3626 }, { 183,3626 }, { 184,3626 }, { 185,3626 }, { 186,3626 }, { 187,3626 }, { 188,3626 }, { 189,3626 }, { 190,3626 }, { 191,3626 }, { 192,3626 }, { 193,3626 }, { 194,3626 }, { 195,3626 }, { 196,3626 }, { 197,3626 }, { 198,3626 }, { 199,3626 }, { 200,3626 }, { 201,3626 }, { 202,3626 }, { 203,3626 }, { 204,3626 }, { 205,3626 }, { 206,3626 }, { 207,3626 }, { 208,3626 }, { 209,3626 }, { 210,3626 }, { 211,3626 }, { 212,3626 }, { 213,3626 }, { 214,3626 }, { 215,3626 }, { 216,3626 }, { 217,3626 }, { 218,3626 }, { 219,3626 }, { 220,3626 }, { 221,3626 }, { 222,3626 }, { 223,3626 }, { 224,3626 }, { 225,3626 }, { 226,3626 }, { 227,3626 }, { 228,3626 }, { 229,3626 }, { 230,3626 }, { 231,3626 }, { 232,3626 }, { 233,3626 }, { 234,3626 }, { 235,3626 }, { 236,3626 }, { 237,3626 }, { 238,3626 }, { 239,3626 }, { 240,3626 }, { 241,3626 }, { 242,3626 }, { 243,3626 }, { 244,3626 }, { 245,3626 }, { 246,3626 }, { 247,3626 }, { 248,3626 }, { 249,3626 }, { 250,3626 }, { 251,3626 }, { 252,3626 }, { 253,3626 }, { 254,3626 }, { 255,3626 }, { 0, 69 }, { 0,13927 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,3369 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,3883 }, { 49,3883 }, { 50,3883 }, { 51,3883 }, { 52,3883 }, { 53,3883 }, { 54,3883 }, { 55,3883 }, { 56,3883 }, { 57,3883 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3369 }, { 66,3369 }, { 67,3369 }, { 68,3369 }, { 69,3369 }, { 70,3369 }, { 71,3369 }, { 72,3369 }, { 73,3369 }, { 74,3369 }, { 75,3369 }, { 76,3369 }, { 77,3369 }, { 78,3369 }, { 79,3369 }, { 80,3369 }, { 81,3369 }, { 82,3369 }, { 83,3369 }, { 84,3369 }, { 85,3369 }, { 86,3369 }, { 87,3369 }, { 88,3369 }, { 89,3369 }, { 90,3369 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,3369 }, { 0, 0 }, { 97,3369 }, { 98,3369 }, { 99,3369 }, { 100,3369 }, { 101,3369 }, { 102,3369 }, { 103,3369 }, { 104,3369 }, { 105,3369 }, { 106,3369 }, { 107,3369 }, { 108,3369 }, { 109,3369 }, { 110,3369 }, { 111,3369 }, { 112,3369 }, { 113,3369 }, { 114,3369 }, { 115,3369 }, { 116,3369 }, { 117,3369 }, { 118,3369 }, { 119,3369 }, { 120,3369 }, { 121,3369 }, { 122,3369 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,3369 }, { 129,3369 }, { 130,3369 }, { 131,3369 }, { 132,3369 }, { 133,3369 }, { 134,3369 }, { 135,3369 }, { 136,3369 }, { 137,3369 }, { 138,3369 }, { 139,3369 }, { 140,3369 }, { 141,3369 }, { 142,3369 }, { 143,3369 }, { 144,3369 }, { 145,3369 }, { 146,3369 }, { 147,3369 }, { 148,3369 }, { 149,3369 }, { 150,3369 }, { 151,3369 }, { 152,3369 }, { 153,3369 }, { 154,3369 }, { 155,3369 }, { 156,3369 }, { 157,3369 }, { 158,3369 }, { 159,3369 }, { 160,3369 }, { 161,3369 }, { 162,3369 }, { 163,3369 }, { 164,3369 }, { 165,3369 }, { 166,3369 }, { 167,3369 }, { 168,3369 }, { 169,3369 }, { 170,3369 }, { 171,3369 }, { 172,3369 }, { 173,3369 }, { 174,3369 }, { 175,3369 }, { 176,3369 }, { 177,3369 }, { 178,3369 }, { 179,3369 }, { 180,3369 }, { 181,3369 }, { 182,3369 }, { 183,3369 }, { 184,3369 }, { 185,3369 }, { 186,3369 }, { 187,3369 }, { 188,3369 }, { 189,3369 }, { 190,3369 }, { 191,3369 }, { 192,3369 }, { 193,3369 }, { 194,3369 }, { 195,3369 }, { 196,3369 }, { 197,3369 }, { 198,3369 }, { 199,3369 }, { 200,3369 }, { 201,3369 }, { 202,3369 }, { 203,3369 }, { 204,3369 }, { 205,3369 }, { 206,3369 }, { 207,3369 }, { 208,3369 }, { 209,3369 }, { 210,3369 }, { 211,3369 }, { 212,3369 }, { 213,3369 }, { 214,3369 }, { 215,3369 }, { 216,3369 }, { 217,3369 }, { 218,3369 }, { 219,3369 }, { 220,3369 }, { 221,3369 }, { 222,3369 }, { 223,3369 }, { 224,3369 }, { 225,3369 }, { 226,3369 }, { 227,3369 }, { 228,3369 }, { 229,3369 }, { 230,3369 }, { 231,3369 }, { 232,3369 }, { 233,3369 }, { 234,3369 }, { 235,3369 }, { 236,3369 }, { 237,3369 }, { 238,3369 }, { 239,3369 }, { 240,3369 }, { 241,3369 }, { 242,3369 }, { 243,3369 }, { 244,3369 }, { 245,3369 }, { 246,3369 }, { 247,3369 }, { 248,3369 }, { 249,3369 }, { 250,3369 }, { 251,3369 }, { 252,3369 }, { 253,3369 }, { 254,3369 }, { 255,3369 }, { 0, 3 }, { 0,13670 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 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,13638 }, { 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 }, { 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 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,3851 }, { 49,3851 }, { 50,3851 }, { 51,3851 }, { 52,3851 }, { 53,3851 }, { 54,3851 }, { 55,3851 }, { 56,3851 }, { 57,3851 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94, 0 }, { 0, 0 }, { 96, 0 }, { 65,-803 }, { 66,-803 }, { 67,-803 }, { 68,-803 }, { 69,-546 }, { 70,-803 }, { 71,-803 }, { 72,-803 }, { 73,-803 }, { 74,-803 }, { 75,-803 }, { 76,-803 }, { 77,-803 }, { 78,-803 }, { 79,-803 }, { 80,-803 }, { 81,-803 }, { 82,-803 }, { 83,-803 }, { 84,-803 }, { 85,-803 }, { 86,-803 }, { 87,-803 }, { 88,-803 }, { 89,-803 }, { 90,-803 }, { 0, 0 }, { 124, 0 }, { 0, 0 }, { 126, 0 }, { 95,4108 }, { 0, 0 }, { 97,-803 }, { 98,-803 }, { 99,-803 }, { 100,-803 }, { 101,-546 }, { 102,-803 }, { 103,-803 }, { 104,-803 }, { 105,-803 }, { 106,-803 }, { 107,-803 }, { 108,-803 }, { 109,-803 }, { 110,-803 }, { 111,-803 }, { 112,-803 }, { 113,-803 }, { 114,-803 }, { 115,-803 }, { 116,-803 }, { 117,-803 }, { 118,-803 }, { 119,-803 }, { 120,-803 }, { 121,-803 }, { 122,-803 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-803 }, { 129,-803 }, { 130,-803 }, { 131,-803 }, { 132,-803 }, { 133,-803 }, { 134,-803 }, { 135,-803 }, { 136,-803 }, { 137,-803 }, { 138,-803 }, { 139,-803 }, { 140,-803 }, { 141,-803 }, { 142,-803 }, { 143,-803 }, { 144,-803 }, { 145,-803 }, { 146,-803 }, { 147,-803 }, { 148,-803 }, { 149,-803 }, { 150,-803 }, { 151,-803 }, { 152,-803 }, { 153,-803 }, { 154,-803 }, { 155,-803 }, { 156,-803 }, { 157,-803 }, { 158,-803 }, { 159,-803 }, { 160,-803 }, { 161,-803 }, { 162,-803 }, { 163,-803 }, { 164,-803 }, { 165,-803 }, { 166,-803 }, { 167,-803 }, { 168,-803 }, { 169,-803 }, { 170,-803 }, { 171,-803 }, { 172,-803 }, { 173,-803 }, { 174,-803 }, { 175,-803 }, { 176,-803 }, { 177,-803 }, { 178,-803 }, { 179,-803 }, { 180,-803 }, { 181,-803 }, { 182,-803 }, { 183,-803 }, { 184,-803 }, { 185,-803 }, { 186,-803 }, { 187,-803 }, { 188,-803 }, { 189,-803 }, { 190,-803 }, { 191,-803 }, { 192,-803 }, { 193,-803 }, { 194,-803 }, { 195,-803 }, { 196,-803 }, { 197,-803 }, { 198,-803 }, { 199,-803 }, { 200,-803 }, { 201,-803 }, { 202,-803 }, { 203,-803 }, { 204,-803 }, { 205,-803 }, { 206,-803 }, { 207,-803 }, { 208,-803 }, { 209,-803 }, { 210,-803 }, { 211,-803 }, { 212,-803 }, { 213,-803 }, { 214,-803 }, { 215,-803 }, { 216,-803 }, { 217,-803 }, { 218,-803 }, { 219,-803 }, { 220,-803 }, { 221,-803 }, { 222,-803 }, { 223,-803 }, { 224,-803 }, { 225,-803 }, { 226,-803 }, { 227,-803 }, { 228,-803 }, { 229,-803 }, { 230,-803 }, { 231,-803 }, { 232,-803 }, { 233,-803 }, { 234,-803 }, { 235,-803 }, { 236,-803 }, { 237,-803 }, { 238,-803 }, { 239,-803 }, { 240,-803 }, { 241,-803 }, { 242,-803 }, { 243,-803 }, { 244,-803 }, { 245,-803 }, { 246,-803 }, { 247,-803 }, { 248,-803 }, { 249,-803 }, { 250,-803 }, { 251,-803 }, { 252,-803 }, { 253,-803 }, { 254,-803 }, { 255,-803 }, { 0, 68 }, { 0,13381 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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, 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 }, { 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, 60 }, { 0,13124 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-257 }, { 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,-257 }, { 51,-257 }, { 52,-257 }, { 53,-257 }, { 54,-257 }, { 55,-257 }, { 56,-257 }, { 57,-257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-257 }, { 66,-257 }, { 67,-257 }, { 68,-257 }, { 69,-257 }, { 70,-257 }, { 71,-257 }, { 72,-257 }, { 73,-257 }, { 74,-257 }, { 75,-257 }, { 76,-257 }, { 77,-257 }, { 78,-257 }, { 79,-257 }, { 80,-257 }, { 81,-257 }, { 82,-257 }, { 83,-257 }, { 84,-257 }, { 85,-257 }, { 86,-257 }, { 87,-257 }, { 88,-257 }, { 89,-257 }, { 90,-257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,3851 }, { 0, 0 }, { 97,-257 }, { 98,-257 }, { 99,-257 }, { 100,-257 }, { 101,-257 }, { 102,-257 }, { 103,-257 }, { 104,-257 }, { 105,-257 }, { 106,-257 }, { 107,-257 }, { 108,-257 }, { 109,-257 }, { 110,-257 }, { 111,-257 }, { 112,-257 }, { 113,-257 }, { 114,-257 }, { 115,-257 }, { 116,-257 }, { 117,-257 }, { 118,-257 }, { 119,-257 }, { 120,-257 }, { 121,-257 }, { 122,-257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-257 }, { 129,-257 }, { 130,-257 }, { 131,-257 }, { 132,-257 }, { 133,-257 }, { 134,-257 }, { 135,-257 }, { 136,-257 }, { 137,-257 }, { 138,-257 }, { 139,-257 }, { 140,-257 }, { 141,-257 }, { 142,-257 }, { 143,-257 }, { 144,-257 }, { 145,-257 }, { 146,-257 }, { 147,-257 }, { 148,-257 }, { 149,-257 }, { 150,-257 }, { 151,-257 }, { 152,-257 }, { 153,-257 }, { 154,-257 }, { 155,-257 }, { 156,-257 }, { 157,-257 }, { 158,-257 }, { 159,-257 }, { 160,-257 }, { 161,-257 }, { 162,-257 }, { 163,-257 }, { 164,-257 }, { 165,-257 }, { 166,-257 }, { 167,-257 }, { 168,-257 }, { 169,-257 }, { 170,-257 }, { 171,-257 }, { 172,-257 }, { 173,-257 }, { 174,-257 }, { 175,-257 }, { 176,-257 }, { 177,-257 }, { 178,-257 }, { 179,-257 }, { 180,-257 }, { 181,-257 }, { 182,-257 }, { 183,-257 }, { 184,-257 }, { 185,-257 }, { 186,-257 }, { 187,-257 }, { 188,-257 }, { 189,-257 }, { 190,-257 }, { 191,-257 }, { 192,-257 }, { 193,-257 }, { 194,-257 }, { 195,-257 }, { 196,-257 }, { 197,-257 }, { 198,-257 }, { 199,-257 }, { 200,-257 }, { 201,-257 }, { 202,-257 }, { 203,-257 }, { 204,-257 }, { 205,-257 }, { 206,-257 }, { 207,-257 }, { 208,-257 }, { 209,-257 }, { 210,-257 }, { 211,-257 }, { 212,-257 }, { 213,-257 }, { 214,-257 }, { 215,-257 }, { 216,-257 }, { 217,-257 }, { 218,-257 }, { 219,-257 }, { 220,-257 }, { 221,-257 }, { 222,-257 }, { 223,-257 }, { 224,-257 }, { 225,-257 }, { 226,-257 }, { 227,-257 }, { 228,-257 }, { 229,-257 }, { 230,-257 }, { 231,-257 }, { 232,-257 }, { 233,-257 }, { 234,-257 }, { 235,-257 }, { 236,-257 }, { 237,-257 }, { 238,-257 }, { 239,-257 }, { 240,-257 }, { 241,-257 }, { 242,-257 }, { 243,-257 }, { 244,-257 }, { 245,-257 }, { 246,-257 }, { 247,-257 }, { 248,-257 }, { 249,-257 }, { 250,-257 }, { 251,-257 }, { 252,-257 }, { 253,-257 }, { 254,-257 }, { 255,-257 }, { 0, 63 }, { 0,12867 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-514 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-257 }, { 49,-257 }, { 50,-514 }, { 51,-514 }, { 52,-514 }, { 53,-514 }, { 54,-514 }, { 55,-514 }, { 56,-514 }, { 57,-514 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-514 }, { 66,-514 }, { 67,-514 }, { 68,-514 }, { 69,-514 }, { 70,-514 }, { 71,-514 }, { 72,-514 }, { 73,-514 }, { 74,-514 }, { 75,-514 }, { 76,-514 }, { 77,-514 }, { 78,-514 }, { 79,-514 }, { 80,-514 }, { 81,-514 }, { 82,-514 }, { 83,-514 }, { 84,-514 }, { 85,-514 }, { 86,-514 }, { 87,-514 }, { 88,-514 }, { 89,-514 }, { 90,-514 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-514 }, { 0, 0 }, { 97,-514 }, { 98,-514 }, { 99,-514 }, { 100,-514 }, { 101,-514 }, { 102,-514 }, { 103,-514 }, { 104,-514 }, { 105,-514 }, { 106,-514 }, { 107,-514 }, { 108,-514 }, { 109,-514 }, { 110,-514 }, { 111,-514 }, { 112,-514 }, { 113,-514 }, { 114,-514 }, { 115,-514 }, { 116,-514 }, { 117,-514 }, { 118,-514 }, { 119,-514 }, { 120,-514 }, { 121,-514 }, { 122,-514 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-514 }, { 129,-514 }, { 130,-514 }, { 131,-514 }, { 132,-514 }, { 133,-514 }, { 134,-514 }, { 135,-514 }, { 136,-514 }, { 137,-514 }, { 138,-514 }, { 139,-514 }, { 140,-514 }, { 141,-514 }, { 142,-514 }, { 143,-514 }, { 144,-514 }, { 145,-514 }, { 146,-514 }, { 147,-514 }, { 148,-514 }, { 149,-514 }, { 150,-514 }, { 151,-514 }, { 152,-514 }, { 153,-514 }, { 154,-514 }, { 155,-514 }, { 156,-514 }, { 157,-514 }, { 158,-514 }, { 159,-514 }, { 160,-514 }, { 161,-514 }, { 162,-514 }, { 163,-514 }, { 164,-514 }, { 165,-514 }, { 166,-514 }, { 167,-514 }, { 168,-514 }, { 169,-514 }, { 170,-514 }, { 171,-514 }, { 172,-514 }, { 173,-514 }, { 174,-514 }, { 175,-514 }, { 176,-514 }, { 177,-514 }, { 178,-514 }, { 179,-514 }, { 180,-514 }, { 181,-514 }, { 182,-514 }, { 183,-514 }, { 184,-514 }, { 185,-514 }, { 186,-514 }, { 187,-514 }, { 188,-514 }, { 189,-514 }, { 190,-514 }, { 191,-514 }, { 192,-514 }, { 193,-514 }, { 194,-514 }, { 195,-514 }, { 196,-514 }, { 197,-514 }, { 198,-514 }, { 199,-514 }, { 200,-514 }, { 201,-514 }, { 202,-514 }, { 203,-514 }, { 204,-514 }, { 205,-514 }, { 206,-514 }, { 207,-514 }, { 208,-514 }, { 209,-514 }, { 210,-514 }, { 211,-514 }, { 212,-514 }, { 213,-514 }, { 214,-514 }, { 215,-514 }, { 216,-514 }, { 217,-514 }, { 218,-514 }, { 219,-514 }, { 220,-514 }, { 221,-514 }, { 222,-514 }, { 223,-514 }, { 224,-514 }, { 225,-514 }, { 226,-514 }, { 227,-514 }, { 228,-514 }, { 229,-514 }, { 230,-514 }, { 231,-514 }, { 232,-514 }, { 233,-514 }, { 234,-514 }, { 235,-514 }, { 236,-514 }, { 237,-514 }, { 238,-514 }, { 239,-514 }, { 240,-514 }, { 241,-514 }, { 242,-514 }, { 243,-514 }, { 244,-514 }, { 245,-514 }, { 246,-514 }, { 247,-514 }, { 248,-514 }, { 249,-514 }, { 250,-514 }, { 251,-514 }, { 252,-514 }, { 253,-514 }, { 254,-514 }, { 255,-514 }, { 0, 67 }, { 0,12610 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 66 }, { 0,12600 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-781 }, { 0, 0 }, { 48,3594 }, { 49,3594 }, { 50,3594 }, { 51,3594 }, { 52,3594 }, { 53,3594 }, { 54,3594 }, { 55,3594 }, { 56,3594 }, { 57,3594 }, { 48,3841 }, { 49,3841 }, { 50,3841 }, { 51,3841 }, { 52,3841 }, { 53,3841 }, { 54,3841 }, { 55,3841 }, { 56,3841 }, { 57,3841 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4098 }, { 66,4098 }, { 67,4098 }, { 68,4098 }, { 69,4098 }, { 70,4098 }, { 71,4098 }, { 72,4098 }, { 73,4098 }, { 74,4098 }, { 75,4098 }, { 76,4098 }, { 77,4098 }, { 78,4098 }, { 79,4098 }, { 80,4098 }, { 81,4098 }, { 82,4098 }, { 83,4098 }, { 84,4098 }, { 85,4098 }, { 86,4098 }, { 87,4098 }, { 88,4098 }, { 89,4098 }, { 90,4098 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4355 }, { 0, 0 }, { 97,4098 }, { 98,4098 }, { 99,4098 }, { 100,4098 }, { 101,4098 }, { 102,4098 }, { 103,4098 }, { 104,4098 }, { 105,4098 }, { 106,4098 }, { 107,4098 }, { 108,4098 }, { 109,4098 }, { 110,4098 }, { 111,4098 }, { 112,4098 }, { 113,4098 }, { 114,4098 }, { 115,4098 }, { 116,4098 }, { 117,4098 }, { 118,4098 }, { 119,4098 }, { 120,4098 }, { 121,4098 }, { 122,4098 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4098 }, { 129,4098 }, { 130,4098 }, { 131,4098 }, { 132,4098 }, { 133,4098 }, { 134,4098 }, { 135,4098 }, { 136,4098 }, { 137,4098 }, { 138,4098 }, { 139,4098 }, { 140,4098 }, { 141,4098 }, { 142,4098 }, { 143,4098 }, { 144,4098 }, { 145,4098 }, { 146,4098 }, { 147,4098 }, { 148,4098 }, { 149,4098 }, { 150,4098 }, { 151,4098 }, { 152,4098 }, { 153,4098 }, { 154,4098 }, { 155,4098 }, { 156,4098 }, { 157,4098 }, { 158,4098 }, { 159,4098 }, { 160,4098 }, { 161,4098 }, { 162,4098 }, { 163,4098 }, { 164,4098 }, { 165,4098 }, { 166,4098 }, { 167,4098 }, { 168,4098 }, { 169,4098 }, { 170,4098 }, { 171,4098 }, { 172,4098 }, { 173,4098 }, { 174,4098 }, { 175,4098 }, { 176,4098 }, { 177,4098 }, { 178,4098 }, { 179,4098 }, { 180,4098 }, { 181,4098 }, { 182,4098 }, { 183,4098 }, { 184,4098 }, { 185,4098 }, { 186,4098 }, { 187,4098 }, { 188,4098 }, { 189,4098 }, { 190,4098 }, { 191,4098 }, { 192,4098 }, { 193,4098 }, { 194,4098 }, { 195,4098 }, { 196,4098 }, { 197,4098 }, { 198,4098 }, { 199,4098 }, { 200,4098 }, { 201,4098 }, { 202,4098 }, { 203,4098 }, { 204,4098 }, { 205,4098 }, { 206,4098 }, { 207,4098 }, { 208,4098 }, { 209,4098 }, { 210,4098 }, { 211,4098 }, { 212,4098 }, { 213,4098 }, { 214,4098 }, { 215,4098 }, { 216,4098 }, { 217,4098 }, { 218,4098 }, { 219,4098 }, { 220,4098 }, { 221,4098 }, { 222,4098 }, { 223,4098 }, { 224,4098 }, { 225,4098 }, { 226,4098 }, { 227,4098 }, { 228,4098 }, { 229,4098 }, { 230,4098 }, { 231,4098 }, { 232,4098 }, { 233,4098 }, { 234,4098 }, { 235,4098 }, { 236,4098 }, { 237,4098 }, { 238,4098 }, { 239,4098 }, { 240,4098 }, { 241,4098 }, { 242,4098 }, { 243,4098 }, { 244,4098 }, { 245,4098 }, { 246,4098 }, { 247,4098 }, { 248,4098 }, { 249,4098 }, { 250,4098 }, { 251,4098 }, { 252,4098 }, { 253,4098 }, { 254,4098 }, { 255,4098 }, { 0, 59 }, { 0,12343 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-1038 }, { 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,-1038 }, { 57,-1038 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-1038 }, { 66,-1038 }, { 67,-1038 }, { 68,-1038 }, { 69,-1038 }, { 70,-1038 }, { 71,-1038 }, { 72,-1038 }, { 73,-1038 }, { 74,-1038 }, { 75,-1038 }, { 76,-1038 }, { 77,-1038 }, { 78,-1038 }, { 79,-1038 }, { 80,-1038 }, { 81,-1038 }, { 82,-1038 }, { 83,-1038 }, { 84,-1038 }, { 85,-1038 }, { 86,-1038 }, { 87,-1038 }, { 88,-1038 }, { 89,-1038 }, { 90,-1038 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4355 }, { 0, 0 }, { 97,-1038 }, { 98,-1038 }, { 99,-1038 }, { 100,-1038 }, { 101,-1038 }, { 102,-1038 }, { 103,-1038 }, { 104,-1038 }, { 105,-1038 }, { 106,-1038 }, { 107,-1038 }, { 108,-1038 }, { 109,-1038 }, { 110,-1038 }, { 111,-1038 }, { 112,-1038 }, { 113,-1038 }, { 114,-1038 }, { 115,-1038 }, { 116,-1038 }, { 117,-1038 }, { 118,-1038 }, { 119,-1038 }, { 120,-1038 }, { 121,-1038 }, { 122,-1038 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-1038 }, { 129,-1038 }, { 130,-1038 }, { 131,-1038 }, { 132,-1038 }, { 133,-1038 }, { 134,-1038 }, { 135,-1038 }, { 136,-1038 }, { 137,-1038 }, { 138,-1038 }, { 139,-1038 }, { 140,-1038 }, { 141,-1038 }, { 142,-1038 }, { 143,-1038 }, { 144,-1038 }, { 145,-1038 }, { 146,-1038 }, { 147,-1038 }, { 148,-1038 }, { 149,-1038 }, { 150,-1038 }, { 151,-1038 }, { 152,-1038 }, { 153,-1038 }, { 154,-1038 }, { 155,-1038 }, { 156,-1038 }, { 157,-1038 }, { 158,-1038 }, { 159,-1038 }, { 160,-1038 }, { 161,-1038 }, { 162,-1038 }, { 163,-1038 }, { 164,-1038 }, { 165,-1038 }, { 166,-1038 }, { 167,-1038 }, { 168,-1038 }, { 169,-1038 }, { 170,-1038 }, { 171,-1038 }, { 172,-1038 }, { 173,-1038 }, { 174,-1038 }, { 175,-1038 }, { 176,-1038 }, { 177,-1038 }, { 178,-1038 }, { 179,-1038 }, { 180,-1038 }, { 181,-1038 }, { 182,-1038 }, { 183,-1038 }, { 184,-1038 }, { 185,-1038 }, { 186,-1038 }, { 187,-1038 }, { 188,-1038 }, { 189,-1038 }, { 190,-1038 }, { 191,-1038 }, { 192,-1038 }, { 193,-1038 }, { 194,-1038 }, { 195,-1038 }, { 196,-1038 }, { 197,-1038 }, { 198,-1038 }, { 199,-1038 }, { 200,-1038 }, { 201,-1038 }, { 202,-1038 }, { 203,-1038 }, { 204,-1038 }, { 205,-1038 }, { 206,-1038 }, { 207,-1038 }, { 208,-1038 }, { 209,-1038 }, { 210,-1038 }, { 211,-1038 }, { 212,-1038 }, { 213,-1038 }, { 214,-1038 }, { 215,-1038 }, { 216,-1038 }, { 217,-1038 }, { 218,-1038 }, { 219,-1038 }, { 220,-1038 }, { 221,-1038 }, { 222,-1038 }, { 223,-1038 }, { 224,-1038 }, { 225,-1038 }, { 226,-1038 }, { 227,-1038 }, { 228,-1038 }, { 229,-1038 }, { 230,-1038 }, { 231,-1038 }, { 232,-1038 }, { 233,-1038 }, { 234,-1038 }, { 235,-1038 }, { 236,-1038 }, { 237,-1038 }, { 238,-1038 }, { 239,-1038 }, { 240,-1038 }, { 241,-1038 }, { 242,-1038 }, { 243,-1038 }, { 244,-1038 }, { 245,-1038 }, { 246,-1038 }, { 247,-1038 }, { 248,-1038 }, { 249,-1038 }, { 250,-1038 }, { 251,-1038 }, { 252,-1038 }, { 253,-1038 }, { 254,-1038 }, { 255,-1038 }, { 0, 62 }, { 0,12086 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-1295 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-257 }, { 49,-257 }, { 50,-257 }, { 51,-257 }, { 52,-257 }, { 53,-257 }, { 54,-257 }, { 55,-257 }, { 56,-1295 }, { 57,-1295 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-1295 }, { 66,-1295 }, { 67,-1295 }, { 68,-1295 }, { 69,-1295 }, { 70,-1295 }, { 71,-1295 }, { 72,-1295 }, { 73,-1295 }, { 74,-1295 }, { 75,-1295 }, { 76,-1295 }, { 77,-1295 }, { 78,-1295 }, { 79,-1295 }, { 80,-1295 }, { 81,-1295 }, { 82,-1295 }, { 83,-1295 }, { 84,-1295 }, { 85,-1295 }, { 86,-1295 }, { 87,-1295 }, { 88,-1295 }, { 89,-1295 }, { 90,-1295 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-1295 }, { 0, 0 }, { 97,-1295 }, { 98,-1295 }, { 99,-1295 }, { 100,-1295 }, { 101,-1295 }, { 102,-1295 }, { 103,-1295 }, { 104,-1295 }, { 105,-1295 }, { 106,-1295 }, { 107,-1295 }, { 108,-1295 }, { 109,-1295 }, { 110,-1295 }, { 111,-1295 }, { 112,-1295 }, { 113,-1295 }, { 114,-1295 }, { 115,-1295 }, { 116,-1295 }, { 117,-1295 }, { 118,-1295 }, { 119,-1295 }, { 120,-1295 }, { 121,-1295 }, { 122,-1295 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-1295 }, { 129,-1295 }, { 130,-1295 }, { 131,-1295 }, { 132,-1295 }, { 133,-1295 }, { 134,-1295 }, { 135,-1295 }, { 136,-1295 }, { 137,-1295 }, { 138,-1295 }, { 139,-1295 }, { 140,-1295 }, { 141,-1295 }, { 142,-1295 }, { 143,-1295 }, { 144,-1295 }, { 145,-1295 }, { 146,-1295 }, { 147,-1295 }, { 148,-1295 }, { 149,-1295 }, { 150,-1295 }, { 151,-1295 }, { 152,-1295 }, { 153,-1295 }, { 154,-1295 }, { 155,-1295 }, { 156,-1295 }, { 157,-1295 }, { 158,-1295 }, { 159,-1295 }, { 160,-1295 }, { 161,-1295 }, { 162,-1295 }, { 163,-1295 }, { 164,-1295 }, { 165,-1295 }, { 166,-1295 }, { 167,-1295 }, { 168,-1295 }, { 169,-1295 }, { 170,-1295 }, { 171,-1295 }, { 172,-1295 }, { 173,-1295 }, { 174,-1295 }, { 175,-1295 }, { 176,-1295 }, { 177,-1295 }, { 178,-1295 }, { 179,-1295 }, { 180,-1295 }, { 181,-1295 }, { 182,-1295 }, { 183,-1295 }, { 184,-1295 }, { 185,-1295 }, { 186,-1295 }, { 187,-1295 }, { 188,-1295 }, { 189,-1295 }, { 190,-1295 }, { 191,-1295 }, { 192,-1295 }, { 193,-1295 }, { 194,-1295 }, { 195,-1295 }, { 196,-1295 }, { 197,-1295 }, { 198,-1295 }, { 199,-1295 }, { 200,-1295 }, { 201,-1295 }, { 202,-1295 }, { 203,-1295 }, { 204,-1295 }, { 205,-1295 }, { 206,-1295 }, { 207,-1295 }, { 208,-1295 }, { 209,-1295 }, { 210,-1295 }, { 211,-1295 }, { 212,-1295 }, { 213,-1295 }, { 214,-1295 }, { 215,-1295 }, { 216,-1295 }, { 217,-1295 }, { 218,-1295 }, { 219,-1295 }, { 220,-1295 }, { 221,-1295 }, { 222,-1295 }, { 223,-1295 }, { 224,-1295 }, { 225,-1295 }, { 226,-1295 }, { 227,-1295 }, { 228,-1295 }, { 229,-1295 }, { 230,-1295 }, { 231,-1295 }, { 232,-1295 }, { 233,-1295 }, { 234,-1295 }, { 235,-1295 }, { 236,-1295 }, { 237,-1295 }, { 238,-1295 }, { 239,-1295 }, { 240,-1295 }, { 241,-1295 }, { 242,-1295 }, { 243,-1295 }, { 244,-1295 }, { 245,-1295 }, { 246,-1295 }, { 247,-1295 }, { 248,-1295 }, { 249,-1295 }, { 250,-1295 }, { 251,-1295 }, { 252,-1295 }, { 253,-1295 }, { 254,-1295 }, { 255,-1295 }, { 0, 58 }, { 0,11829 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-1552 }, { 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 }, { 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,-1552 }, { 72,-1552 }, { 73,-1552 }, { 74,-1552 }, { 75,-1552 }, { 76,-1552 }, { 77,-1552 }, { 78,-1552 }, { 79,-1552 }, { 80,-1552 }, { 81,-1552 }, { 82,-1552 }, { 83,-1552 }, { 84,-1552 }, { 85,-1552 }, { 86,-1552 }, { 87,-1552 }, { 88,-1552 }, { 89,-1552 }, { 90,-1552 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4098 }, { 0, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103,-1552 }, { 104,-1552 }, { 105,-1552 }, { 106,-1552 }, { 107,-1552 }, { 108,-1552 }, { 109,-1552 }, { 110,-1552 }, { 111,-1552 }, { 112,-1552 }, { 113,-1552 }, { 114,-1552 }, { 115,-1552 }, { 116,-1552 }, { 117,-1552 }, { 118,-1552 }, { 119,-1552 }, { 120,-1552 }, { 121,-1552 }, { 122,-1552 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-1552 }, { 129,-1552 }, { 130,-1552 }, { 131,-1552 }, { 132,-1552 }, { 133,-1552 }, { 134,-1552 }, { 135,-1552 }, { 136,-1552 }, { 137,-1552 }, { 138,-1552 }, { 139,-1552 }, { 140,-1552 }, { 141,-1552 }, { 142,-1552 }, { 143,-1552 }, { 144,-1552 }, { 145,-1552 }, { 146,-1552 }, { 147,-1552 }, { 148,-1552 }, { 149,-1552 }, { 150,-1552 }, { 151,-1552 }, { 152,-1552 }, { 153,-1552 }, { 154,-1552 }, { 155,-1552 }, { 156,-1552 }, { 157,-1552 }, { 158,-1552 }, { 159,-1552 }, { 160,-1552 }, { 161,-1552 }, { 162,-1552 }, { 163,-1552 }, { 164,-1552 }, { 165,-1552 }, { 166,-1552 }, { 167,-1552 }, { 168,-1552 }, { 169,-1552 }, { 170,-1552 }, { 171,-1552 }, { 172,-1552 }, { 173,-1552 }, { 174,-1552 }, { 175,-1552 }, { 176,-1552 }, { 177,-1552 }, { 178,-1552 }, { 179,-1552 }, { 180,-1552 }, { 181,-1552 }, { 182,-1552 }, { 183,-1552 }, { 184,-1552 }, { 185,-1552 }, { 186,-1552 }, { 187,-1552 }, { 188,-1552 }, { 189,-1552 }, { 190,-1552 }, { 191,-1552 }, { 192,-1552 }, { 193,-1552 }, { 194,-1552 }, { 195,-1552 }, { 196,-1552 }, { 197,-1552 }, { 198,-1552 }, { 199,-1552 }, { 200,-1552 }, { 201,-1552 }, { 202,-1552 }, { 203,-1552 }, { 204,-1552 }, { 205,-1552 }, { 206,-1552 }, { 207,-1552 }, { 208,-1552 }, { 209,-1552 }, { 210,-1552 }, { 211,-1552 }, { 212,-1552 }, { 213,-1552 }, { 214,-1552 }, { 215,-1552 }, { 216,-1552 }, { 217,-1552 }, { 218,-1552 }, { 219,-1552 }, { 220,-1552 }, { 221,-1552 }, { 222,-1552 }, { 223,-1552 }, { 224,-1552 }, { 225,-1552 }, { 226,-1552 }, { 227,-1552 }, { 228,-1552 }, { 229,-1552 }, { 230,-1552 }, { 231,-1552 }, { 232,-1552 }, { 233,-1552 }, { 234,-1552 }, { 235,-1552 }, { 236,-1552 }, { 237,-1552 }, { 238,-1552 }, { 239,-1552 }, { 240,-1552 }, { 241,-1552 }, { 242,-1552 }, { 243,-1552 }, { 244,-1552 }, { 245,-1552 }, { 246,-1552 }, { 247,-1552 }, { 248,-1552 }, { 249,-1552 }, { 250,-1552 }, { 251,-1552 }, { 252,-1552 }, { 253,-1552 }, { 254,-1552 }, { 255,-1552 }, { 0, 61 }, { 0,11572 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-1809 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-257 }, { 49,-257 }, { 50,-257 }, { 51,-257 }, { 52,-257 }, { 53,-257 }, { 54,-257 }, { 55,-257 }, { 56,-257 }, { 57,-257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-257 }, { 66,-257 }, { 67,-257 }, { 68,-257 }, { 69,-257 }, { 70,-257 }, { 71,-1809 }, { 72,-1809 }, { 73,-1809 }, { 74,-1809 }, { 75,-1809 }, { 76,-1809 }, { 77,-1809 }, { 78,-1809 }, { 79,-1809 }, { 80,-1809 }, { 81,-1809 }, { 82,-1809 }, { 83,-1809 }, { 84,-1809 }, { 85,-1809 }, { 86,-1809 }, { 87,-1809 }, { 88,-1809 }, { 89,-1809 }, { 90,-1809 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-1809 }, { 0, 0 }, { 97,-257 }, { 98,-257 }, { 99,-257 }, { 100,-257 }, { 101,-257 }, { 102,-257 }, { 103,-1809 }, { 104,-1809 }, { 105,-1809 }, { 106,-1809 }, { 107,-1809 }, { 108,-1809 }, { 109,-1809 }, { 110,-1809 }, { 111,-1809 }, { 112,-1809 }, { 113,-1809 }, { 114,-1809 }, { 115,-1809 }, { 116,-1809 }, { 117,-1809 }, { 118,-1809 }, { 119,-1809 }, { 120,-1809 }, { 121,-1809 }, { 122,-1809 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-1809 }, { 129,-1809 }, { 130,-1809 }, { 131,-1809 }, { 132,-1809 }, { 133,-1809 }, { 134,-1809 }, { 135,-1809 }, { 136,-1809 }, { 137,-1809 }, { 138,-1809 }, { 139,-1809 }, { 140,-1809 }, { 141,-1809 }, { 142,-1809 }, { 143,-1809 }, { 144,-1809 }, { 145,-1809 }, { 146,-1809 }, { 147,-1809 }, { 148,-1809 }, { 149,-1809 }, { 150,-1809 }, { 151,-1809 }, { 152,-1809 }, { 153,-1809 }, { 154,-1809 }, { 155,-1809 }, { 156,-1809 }, { 157,-1809 }, { 158,-1809 }, { 159,-1809 }, { 160,-1809 }, { 161,-1809 }, { 162,-1809 }, { 163,-1809 }, { 164,-1809 }, { 165,-1809 }, { 166,-1809 }, { 167,-1809 }, { 168,-1809 }, { 169,-1809 }, { 170,-1809 }, { 171,-1809 }, { 172,-1809 }, { 173,-1809 }, { 174,-1809 }, { 175,-1809 }, { 176,-1809 }, { 177,-1809 }, { 178,-1809 }, { 179,-1809 }, { 180,-1809 }, { 181,-1809 }, { 182,-1809 }, { 183,-1809 }, { 184,-1809 }, { 185,-1809 }, { 186,-1809 }, { 187,-1809 }, { 188,-1809 }, { 189,-1809 }, { 190,-1809 }, { 191,-1809 }, { 192,-1809 }, { 193,-1809 }, { 194,-1809 }, { 195,-1809 }, { 196,-1809 }, { 197,-1809 }, { 198,-1809 }, { 199,-1809 }, { 200,-1809 }, { 201,-1809 }, { 202,-1809 }, { 203,-1809 }, { 204,-1809 }, { 205,-1809 }, { 206,-1809 }, { 207,-1809 }, { 208,-1809 }, { 209,-1809 }, { 210,-1809 }, { 211,-1809 }, { 212,-1809 }, { 213,-1809 }, { 214,-1809 }, { 215,-1809 }, { 216,-1809 }, { 217,-1809 }, { 218,-1809 }, { 219,-1809 }, { 220,-1809 }, { 221,-1809 }, { 222,-1809 }, { 223,-1809 }, { 224,-1809 }, { 225,-1809 }, { 226,-1809 }, { 227,-1809 }, { 228,-1809 }, { 229,-1809 }, { 230,-1809 }, { 231,-1809 }, { 232,-1809 }, { 233,-1809 }, { 234,-1809 }, { 235,-1809 }, { 236,-1809 }, { 237,-1809 }, { 238,-1809 }, { 239,-1809 }, { 240,-1809 }, { 241,-1809 }, { 242,-1809 }, { 243,-1809 }, { 244,-1809 }, { 245,-1809 }, { 246,-1809 }, { 247,-1809 }, { 248,-1809 }, { 249,-1809 }, { 250,-1809 }, { 251,-1809 }, { 252,-1809 }, { 253,-1809 }, { 254,-1809 }, { 255,-1809 }, { 0, 57 }, { 0,11315 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-2066 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 46,-9175 }, { 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,3841 }, { 66,3841 }, { 67,3841 }, { 68,3841 }, { 69,4098 }, { 70,3841 }, { 71,3841 }, { 72,3841 }, { 73,3841 }, { 74,3841 }, { 75,3841 }, { 76,3841 }, { 77,3841 }, { 78,3841 }, { 79,3841 }, { 80,3841 }, { 81,3841 }, { 82,3841 }, { 83,3841 }, { 84,3841 }, { 85,3841 }, { 86,3841 }, { 87,3841 }, { 88,3841 }, { 89,3841 }, { 90,3841 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4355 }, { 0, 0 }, { 97,3841 }, { 98,3841 }, { 99,3841 }, { 100,3841 }, { 101,4098 }, { 102,3841 }, { 103,3841 }, { 104,3841 }, { 105,3841 }, { 106,3841 }, { 107,3841 }, { 108,3841 }, { 109,3841 }, { 110,3841 }, { 111,3841 }, { 112,3841 }, { 113,3841 }, { 114,3841 }, { 115,3841 }, { 116,3841 }, { 117,3841 }, { 118,3841 }, { 119,3841 }, { 120,3841 }, { 121,3841 }, { 122,3841 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,3841 }, { 129,3841 }, { 130,3841 }, { 131,3841 }, { 132,3841 }, { 133,3841 }, { 134,3841 }, { 135,3841 }, { 136,3841 }, { 137,3841 }, { 138,3841 }, { 139,3841 }, { 140,3841 }, { 141,3841 }, { 142,3841 }, { 143,3841 }, { 144,3841 }, { 145,3841 }, { 146,3841 }, { 147,3841 }, { 148,3841 }, { 149,3841 }, { 150,3841 }, { 151,3841 }, { 152,3841 }, { 153,3841 }, { 154,3841 }, { 155,3841 }, { 156,3841 }, { 157,3841 }, { 158,3841 }, { 159,3841 }, { 160,3841 }, { 161,3841 }, { 162,3841 }, { 163,3841 }, { 164,3841 }, { 165,3841 }, { 166,3841 }, { 167,3841 }, { 168,3841 }, { 169,3841 }, { 170,3841 }, { 171,3841 }, { 172,3841 }, { 173,3841 }, { 174,3841 }, { 175,3841 }, { 176,3841 }, { 177,3841 }, { 178,3841 }, { 179,3841 }, { 180,3841 }, { 181,3841 }, { 182,3841 }, { 183,3841 }, { 184,3841 }, { 185,3841 }, { 186,3841 }, { 187,3841 }, { 188,3841 }, { 189,3841 }, { 190,3841 }, { 191,3841 }, { 192,3841 }, { 193,3841 }, { 194,3841 }, { 195,3841 }, { 196,3841 }, { 197,3841 }, { 198,3841 }, { 199,3841 }, { 200,3841 }, { 201,3841 }, { 202,3841 }, { 203,3841 }, { 204,3841 }, { 205,3841 }, { 206,3841 }, { 207,3841 }, { 208,3841 }, { 209,3841 }, { 210,3841 }, { 211,3841 }, { 212,3841 }, { 213,3841 }, { 214,3841 }, { 215,3841 }, { 216,3841 }, { 217,3841 }, { 218,3841 }, { 219,3841 }, { 220,3841 }, { 221,3841 }, { 222,3841 }, { 223,3841 }, { 224,3841 }, { 225,3841 }, { 226,3841 }, { 227,3841 }, { 228,3841 }, { 229,3841 }, { 230,3841 }, { 231,3841 }, { 232,3841 }, { 233,3841 }, { 234,3841 }, { 235,3841 }, { 236,3841 }, { 237,3841 }, { 238,3841 }, { 239,3841 }, { 240,3841 }, { 241,3841 }, { 242,3841 }, { 243,3841 }, { 244,3841 }, { 245,3841 }, { 246,3841 }, { 247,3841 }, { 248,3841 }, { 249,3841 }, { 250,3841 }, { 251,3841 }, { 252,3841 }, { 253,3841 }, { 254,3841 }, { 255,3841 }, { 0, 4 }, { 0,11058 }, { 0, 30 }, { 0,11056 }, { 0, 0 }, { 0, 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,11041 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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, 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,-15747 }, { 49,-15747 }, { 50,-15747 }, { 51,-15747 }, { 52,-15747 }, { 53,-15747 }, { 54,-15747 }, { 55,-15747 }, { 0, 0 }, { 0, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 48,4338 }, { 49,4338 }, { 50,4338 }, { 51,4338 }, { 52,4338 }, { 53,4338 }, { 54,4338 }, { 55,4338 }, { 56,4338 }, { 57,4338 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0,10979 }, { 0, 0 }, { 0, 0 }, { 65,4338 }, { 66,4338 }, { 67,4338 }, { 68,4338 }, { 69,4338 }, { 70,4338 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94, 0 }, { 0, 0 }, { 96, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 31 }, { 0,10956 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,4338 }, { 98,4338 }, { 99,4338 }, { 100,4338 }, { 101,4338 }, { 102,4338 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124, 0 }, { 0, 0 }, { 126, 0 }, { 48,4299 }, { 49,4299 }, { 50,4299 }, { 51,4299 }, { 52,4299 }, { 53,4299 }, { 54,4299 }, { 55,4299 }, { 56,4299 }, { 57,4299 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4299 }, { 66,4299 }, { 67,4299 }, { 68,4299 }, { 69,4299 }, { 70,4299 }, { 48,-15833 }, { 49,-15833 }, { 50,-15833 }, { 51,-15833 }, { 52,-15833 }, { 53,-15833 }, { 54,-15833 }, { 55,-15833 }, { 56,-15833 }, { 57,-15833 }, { 0, 37 }, { 0,10897 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-15833 }, { 66,-15833 }, { 67,-15833 }, { 68,-15833 }, { 69,-15833 }, { 70,-15833 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,4299 }, { 98,4299 }, { 99,4299 }, { 100,4299 }, { 101,4299 }, { 102,4299 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-15933 }, { 0, 0 }, { 97,-15833 }, { 98,-15833 }, { 99,-15833 }, { 100,-15833 }, { 101,-15833 }, { 102,-15833 }, { 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,10640 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 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,10617 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,3998 }, { 49,3998 }, { 50,3998 }, { 51,3998 }, { 52,3998 }, { 53,3998 }, { 54,3998 }, { 55,3998 }, { 56,3998 }, { 57,3998 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3998 }, { 66,3998 }, { 67,3998 }, { 68,3998 }, { 69,3998 }, { 70,3998 }, { 48,3998 }, { 49,3998 }, { 50,3998 }, { 51,3998 }, { 52,3998 }, { 53,3998 }, { 54,3998 }, { 55,3998 }, { 56,3998 }, { 57,3998 }, { 0, 69 }, { 0,10558 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3998 }, { 66,3998 }, { 67,3998 }, { 68,3998 }, { 69,3998 }, { 70,3998 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,3998 }, { 98,3998 }, { 99,3998 }, { 100,3998 }, { 101,3998 }, { 102,3998 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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, 0 }, { 0, 0 }, { 97,3998 }, { 98,3998 }, { 99,3998 }, { 100,3998 }, { 101,3998 }, { 102,3998 }, { 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, 66 }, { 0,10301 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,3741 }, { 49,3741 }, { 50,3741 }, { 51,3741 }, { 52,3741 }, { 53,3741 }, { 54,3741 }, { 55,3741 }, { 56,3741 }, { 57,3741 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3998 }, { 66,3998 }, { 67,3998 }, { 68,3998 }, { 69,3998 }, { 70,3998 }, { 71,3998 }, { 72,3998 }, { 73,3998 }, { 74,3998 }, { 75,3998 }, { 76,3998 }, { 77,3998 }, { 78,3998 }, { 79,3998 }, { 80,3998 }, { 81,3998 }, { 82,3998 }, { 83,3998 }, { 84,3998 }, { 85,3998 }, { 86,3998 }, { 87,3998 }, { 88,3998 }, { 89,3998 }, { 90,3998 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4255 }, { 0, 0 }, { 97,3998 }, { 98,3998 }, { 99,3998 }, { 100,3998 }, { 101,3998 }, { 102,3998 }, { 103,3998 }, { 104,3998 }, { 105,3998 }, { 106,3998 }, { 107,3998 }, { 108,3998 }, { 109,3998 }, { 110,3998 }, { 111,3998 }, { 112,3998 }, { 113,3998 }, { 114,3998 }, { 115,3998 }, { 116,3998 }, { 117,3998 }, { 118,3998 }, { 119,3998 }, { 120,3998 }, { 121,3998 }, { 122,3998 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,3998 }, { 129,3998 }, { 130,3998 }, { 131,3998 }, { 132,3998 }, { 133,3998 }, { 134,3998 }, { 135,3998 }, { 136,3998 }, { 137,3998 }, { 138,3998 }, { 139,3998 }, { 140,3998 }, { 141,3998 }, { 142,3998 }, { 143,3998 }, { 144,3998 }, { 145,3998 }, { 146,3998 }, { 147,3998 }, { 148,3998 }, { 149,3998 }, { 150,3998 }, { 151,3998 }, { 152,3998 }, { 153,3998 }, { 154,3998 }, { 155,3998 }, { 156,3998 }, { 157,3998 }, { 158,3998 }, { 159,3998 }, { 160,3998 }, { 161,3998 }, { 162,3998 }, { 163,3998 }, { 164,3998 }, { 165,3998 }, { 166,3998 }, { 167,3998 }, { 168,3998 }, { 169,3998 }, { 170,3998 }, { 171,3998 }, { 172,3998 }, { 173,3998 }, { 174,3998 }, { 175,3998 }, { 176,3998 }, { 177,3998 }, { 178,3998 }, { 179,3998 }, { 180,3998 }, { 181,3998 }, { 182,3998 }, { 183,3998 }, { 184,3998 }, { 185,3998 }, { 186,3998 }, { 187,3998 }, { 188,3998 }, { 189,3998 }, { 190,3998 }, { 191,3998 }, { 192,3998 }, { 193,3998 }, { 194,3998 }, { 195,3998 }, { 196,3998 }, { 197,3998 }, { 198,3998 }, { 199,3998 }, { 200,3998 }, { 201,3998 }, { 202,3998 }, { 203,3998 }, { 204,3998 }, { 205,3998 }, { 206,3998 }, { 207,3998 }, { 208,3998 }, { 209,3998 }, { 210,3998 }, { 211,3998 }, { 212,3998 }, { 213,3998 }, { 214,3998 }, { 215,3998 }, { 216,3998 }, { 217,3998 }, { 218,3998 }, { 219,3998 }, { 220,3998 }, { 221,3998 }, { 222,3998 }, { 223,3998 }, { 224,3998 }, { 225,3998 }, { 226,3998 }, { 227,3998 }, { 228,3998 }, { 229,3998 }, { 230,3998 }, { 231,3998 }, { 232,3998 }, { 233,3998 }, { 234,3998 }, { 235,3998 }, { 236,3998 }, { 237,3998 }, { 238,3998 }, { 239,3998 }, { 240,3998 }, { 241,3998 }, { 242,3998 }, { 243,3998 }, { 244,3998 }, { 245,3998 }, { 246,3998 }, { 247,3998 }, { 248,3998 }, { 249,3998 }, { 250,3998 }, { 251,3998 }, { 252,3998 }, { 253,3998 }, { 254,3998 }, { 255,3998 }, { 0, 64 }, { 0,10044 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-514 }, { 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 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4255 }, { 66,4255 }, { 67,4255 }, { 68,4255 }, { 69,4512 }, { 70,4255 }, { 71,4255 }, { 72,4255 }, { 73,4255 }, { 74,4255 }, { 75,4255 }, { 76,4255 }, { 77,4255 }, { 78,4255 }, { 79,4255 }, { 80,4255 }, { 81,4255 }, { 82,4255 }, { 83,4255 }, { 84,4255 }, { 85,4255 }, { 86,4255 }, { 87,4255 }, { 88,4255 }, { 89,4255 }, { 90,4255 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4769 }, { 0, 0 }, { 97,4255 }, { 98,4255 }, { 99,4255 }, { 100,4255 }, { 101,4512 }, { 102,4255 }, { 103,4255 }, { 104,4255 }, { 105,4255 }, { 106,4255 }, { 107,4255 }, { 108,4255 }, { 109,4255 }, { 110,4255 }, { 111,4255 }, { 112,4255 }, { 113,4255 }, { 114,4255 }, { 115,4255 }, { 116,4255 }, { 117,4255 }, { 118,4255 }, { 119,4255 }, { 120,4255 }, { 121,4255 }, { 122,4255 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4255 }, { 129,4255 }, { 130,4255 }, { 131,4255 }, { 132,4255 }, { 133,4255 }, { 134,4255 }, { 135,4255 }, { 136,4255 }, { 137,4255 }, { 138,4255 }, { 139,4255 }, { 140,4255 }, { 141,4255 }, { 142,4255 }, { 143,4255 }, { 144,4255 }, { 145,4255 }, { 146,4255 }, { 147,4255 }, { 148,4255 }, { 149,4255 }, { 150,4255 }, { 151,4255 }, { 152,4255 }, { 153,4255 }, { 154,4255 }, { 155,4255 }, { 156,4255 }, { 157,4255 }, { 158,4255 }, { 159,4255 }, { 160,4255 }, { 161,4255 }, { 162,4255 }, { 163,4255 }, { 164,4255 }, { 165,4255 }, { 166,4255 }, { 167,4255 }, { 168,4255 }, { 169,4255 }, { 170,4255 }, { 171,4255 }, { 172,4255 }, { 173,4255 }, { 174,4255 }, { 175,4255 }, { 176,4255 }, { 177,4255 }, { 178,4255 }, { 179,4255 }, { 180,4255 }, { 181,4255 }, { 182,4255 }, { 183,4255 }, { 184,4255 }, { 185,4255 }, { 186,4255 }, { 187,4255 }, { 188,4255 }, { 189,4255 }, { 190,4255 }, { 191,4255 }, { 192,4255 }, { 193,4255 }, { 194,4255 }, { 195,4255 }, { 196,4255 }, { 197,4255 }, { 198,4255 }, { 199,4255 }, { 200,4255 }, { 201,4255 }, { 202,4255 }, { 203,4255 }, { 204,4255 }, { 205,4255 }, { 206,4255 }, { 207,4255 }, { 208,4255 }, { 209,4255 }, { 210,4255 }, { 211,4255 }, { 212,4255 }, { 213,4255 }, { 214,4255 }, { 215,4255 }, { 216,4255 }, { 217,4255 }, { 218,4255 }, { 219,4255 }, { 220,4255 }, { 221,4255 }, { 222,4255 }, { 223,4255 }, { 224,4255 }, { 225,4255 }, { 226,4255 }, { 227,4255 }, { 228,4255 }, { 229,4255 }, { 230,4255 }, { 231,4255 }, { 232,4255 }, { 233,4255 }, { 234,4255 }, { 235,4255 }, { 236,4255 }, { 237,4255 }, { 238,4255 }, { 239,4255 }, { 240,4255 }, { 241,4255 }, { 242,4255 }, { 243,4255 }, { 244,4255 }, { 245,4255 }, { 246,4255 }, { 247,4255 }, { 248,4255 }, { 249,4255 }, { 250,4255 }, { 251,4255 }, { 252,4255 }, { 253,4255 }, { 254,4255 }, { 255,4255 }, { 0, 64 }, { 0,9787 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-4654 }, { 66,-4654 }, { 67,-4654 }, { 68,-4654 }, { 69,-4397 }, { 70,-4654 }, { 71,-4654 }, { 72,-4654 }, { 73,-4654 }, { 74,-4654 }, { 75,-4654 }, { 76,-4654 }, { 77,-4654 }, { 78,-4654 }, { 79,-4654 }, { 80,-4654 }, { 81,-4654 }, { 82,-4654 }, { 83,-4654 }, { 84,-4654 }, { 85,-4654 }, { 86,-4654 }, { 87,-4654 }, { 88,-4654 }, { 89,-4654 }, { 90,-4654 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95, 257 }, { 0, 0 }, { 97,-4654 }, { 98,-4654 }, { 99,-4654 }, { 100,-4654 }, { 101,-4397 }, { 102,-4654 }, { 103,-4654 }, { 104,-4654 }, { 105,-4654 }, { 106,-4654 }, { 107,-4654 }, { 108,-4654 }, { 109,-4654 }, { 110,-4654 }, { 111,-4654 }, { 112,-4654 }, { 113,-4654 }, { 114,-4654 }, { 115,-4654 }, { 116,-4654 }, { 117,-4654 }, { 118,-4654 }, { 119,-4654 }, { 120,-4654 }, { 121,-4654 }, { 122,-4654 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-4654 }, { 129,-4654 }, { 130,-4654 }, { 131,-4654 }, { 132,-4654 }, { 133,-4654 }, { 134,-4654 }, { 135,-4654 }, { 136,-4654 }, { 137,-4654 }, { 138,-4654 }, { 139,-4654 }, { 140,-4654 }, { 141,-4654 }, { 142,-4654 }, { 143,-4654 }, { 144,-4654 }, { 145,-4654 }, { 146,-4654 }, { 147,-4654 }, { 148,-4654 }, { 149,-4654 }, { 150,-4654 }, { 151,-4654 }, { 152,-4654 }, { 153,-4654 }, { 154,-4654 }, { 155,-4654 }, { 156,-4654 }, { 157,-4654 }, { 158,-4654 }, { 159,-4654 }, { 160,-4654 }, { 161,-4654 }, { 162,-4654 }, { 163,-4654 }, { 164,-4654 }, { 165,-4654 }, { 166,-4654 }, { 167,-4654 }, { 168,-4654 }, { 169,-4654 }, { 170,-4654 }, { 171,-4654 }, { 172,-4654 }, { 173,-4654 }, { 174,-4654 }, { 175,-4654 }, { 176,-4654 }, { 177,-4654 }, { 178,-4654 }, { 179,-4654 }, { 180,-4654 }, { 181,-4654 }, { 182,-4654 }, { 183,-4654 }, { 184,-4654 }, { 185,-4654 }, { 186,-4654 }, { 187,-4654 }, { 188,-4654 }, { 189,-4654 }, { 190,-4654 }, { 191,-4654 }, { 192,-4654 }, { 193,-4654 }, { 194,-4654 }, { 195,-4654 }, { 196,-4654 }, { 197,-4654 }, { 198,-4654 }, { 199,-4654 }, { 200,-4654 }, { 201,-4654 }, { 202,-4654 }, { 203,-4654 }, { 204,-4654 }, { 205,-4654 }, { 206,-4654 }, { 207,-4654 }, { 208,-4654 }, { 209,-4654 }, { 210,-4654 }, { 211,-4654 }, { 212,-4654 }, { 213,-4654 }, { 214,-4654 }, { 215,-4654 }, { 216,-4654 }, { 217,-4654 }, { 218,-4654 }, { 219,-4654 }, { 220,-4654 }, { 221,-4654 }, { 222,-4654 }, { 223,-4654 }, { 224,-4654 }, { 225,-4654 }, { 226,-4654 }, { 227,-4654 }, { 228,-4654 }, { 229,-4654 }, { 230,-4654 }, { 231,-4654 }, { 232,-4654 }, { 233,-4654 }, { 234,-4654 }, { 235,-4654 }, { 236,-4654 }, { 237,-4654 }, { 238,-4654 }, { 239,-4654 }, { 240,-4654 }, { 241,-4654 }, { 242,-4654 }, { 243,-4654 }, { 244,-4654 }, { 245,-4654 }, { 246,-4654 }, { 247,-4654 }, { 248,-4654 }, { 249,-4654 }, { 250,-4654 }, { 251,-4654 }, { 252,-4654 }, { 253,-4654 }, { 254,-4654 }, { 255,-4654 }, { 0, 69 }, { 0,9530 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-1028 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,4512 }, { 49,4512 }, { 50,4512 }, { 51,4512 }, { 52,4512 }, { 53,4512 }, { 54,4512 }, { 55,4512 }, { 56,4512 }, { 57,4512 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-1028 }, { 66,-1028 }, { 67,-1028 }, { 68,-1028 }, { 69,-1028 }, { 70,-1028 }, { 71,-1028 }, { 72,-1028 }, { 73,-1028 }, { 74,-1028 }, { 75,-1028 }, { 76,-1028 }, { 77,-1028 }, { 78,-1028 }, { 79,-1028 }, { 80,-1028 }, { 81,-1028 }, { 82,-1028 }, { 83,-1028 }, { 84,-1028 }, { 85,-1028 }, { 86,-1028 }, { 87,-1028 }, { 88,-1028 }, { 89,-1028 }, { 90,-1028 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-1028 }, { 0, 0 }, { 97,-1028 }, { 98,-1028 }, { 99,-1028 }, { 100,-1028 }, { 101,-1028 }, { 102,-1028 }, { 103,-1028 }, { 104,-1028 }, { 105,-1028 }, { 106,-1028 }, { 107,-1028 }, { 108,-1028 }, { 109,-1028 }, { 110,-1028 }, { 111,-1028 }, { 112,-1028 }, { 113,-1028 }, { 114,-1028 }, { 115,-1028 }, { 116,-1028 }, { 117,-1028 }, { 118,-1028 }, { 119,-1028 }, { 120,-1028 }, { 121,-1028 }, { 122,-1028 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-1028 }, { 129,-1028 }, { 130,-1028 }, { 131,-1028 }, { 132,-1028 }, { 133,-1028 }, { 134,-1028 }, { 135,-1028 }, { 136,-1028 }, { 137,-1028 }, { 138,-1028 }, { 139,-1028 }, { 140,-1028 }, { 141,-1028 }, { 142,-1028 }, { 143,-1028 }, { 144,-1028 }, { 145,-1028 }, { 146,-1028 }, { 147,-1028 }, { 148,-1028 }, { 149,-1028 }, { 150,-1028 }, { 151,-1028 }, { 152,-1028 }, { 153,-1028 }, { 154,-1028 }, { 155,-1028 }, { 156,-1028 }, { 157,-1028 }, { 158,-1028 }, { 159,-1028 }, { 160,-1028 }, { 161,-1028 }, { 162,-1028 }, { 163,-1028 }, { 164,-1028 }, { 165,-1028 }, { 166,-1028 }, { 167,-1028 }, { 168,-1028 }, { 169,-1028 }, { 170,-1028 }, { 171,-1028 }, { 172,-1028 }, { 173,-1028 }, { 174,-1028 }, { 175,-1028 }, { 176,-1028 }, { 177,-1028 }, { 178,-1028 }, { 179,-1028 }, { 180,-1028 }, { 181,-1028 }, { 182,-1028 }, { 183,-1028 }, { 184,-1028 }, { 185,-1028 }, { 186,-1028 }, { 187,-1028 }, { 188,-1028 }, { 189,-1028 }, { 190,-1028 }, { 191,-1028 }, { 192,-1028 }, { 193,-1028 }, { 194,-1028 }, { 195,-1028 }, { 196,-1028 }, { 197,-1028 }, { 198,-1028 }, { 199,-1028 }, { 200,-1028 }, { 201,-1028 }, { 202,-1028 }, { 203,-1028 }, { 204,-1028 }, { 205,-1028 }, { 206,-1028 }, { 207,-1028 }, { 208,-1028 }, { 209,-1028 }, { 210,-1028 }, { 211,-1028 }, { 212,-1028 }, { 213,-1028 }, { 214,-1028 }, { 215,-1028 }, { 216,-1028 }, { 217,-1028 }, { 218,-1028 }, { 219,-1028 }, { 220,-1028 }, { 221,-1028 }, { 222,-1028 }, { 223,-1028 }, { 224,-1028 }, { 225,-1028 }, { 226,-1028 }, { 227,-1028 }, { 228,-1028 }, { 229,-1028 }, { 230,-1028 }, { 231,-1028 }, { 232,-1028 }, { 233,-1028 }, { 234,-1028 }, { 235,-1028 }, { 236,-1028 }, { 237,-1028 }, { 238,-1028 }, { 239,-1028 }, { 240,-1028 }, { 241,-1028 }, { 242,-1028 }, { 243,-1028 }, { 244,-1028 }, { 245,-1028 }, { 246,-1028 }, { 247,-1028 }, { 248,-1028 }, { 249,-1028 }, { 250,-1028 }, { 251,-1028 }, { 252,-1028 }, { 253,-1028 }, { 254,-1028 }, { 255,-1028 }, { 0, 68 }, { 0,9273 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-4108 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-3851 }, { 49,-3851 }, { 50,-4108 }, { 51,-4108 }, { 52,-4108 }, { 53,-4108 }, { 54,-4108 }, { 55,-4108 }, { 56,-4108 }, { 57,-4108 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-4108 }, { 66,-4108 }, { 67,-4108 }, { 68,-4108 }, { 69,-4108 }, { 70,-4108 }, { 71,-4108 }, { 72,-4108 }, { 73,-4108 }, { 74,-4108 }, { 75,-4108 }, { 76,-4108 }, { 77,-4108 }, { 78,-4108 }, { 79,-4108 }, { 80,-4108 }, { 81,-4108 }, { 82,-4108 }, { 83,-4108 }, { 84,-4108 }, { 85,-4108 }, { 86,-4108 }, { 87,-4108 }, { 88,-4108 }, { 89,-4108 }, { 90,-4108 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-4108 }, { 0, 0 }, { 97,-4108 }, { 98,-4108 }, { 99,-4108 }, { 100,-4108 }, { 101,-4108 }, { 102,-4108 }, { 103,-4108 }, { 104,-4108 }, { 105,-4108 }, { 106,-4108 }, { 107,-4108 }, { 108,-4108 }, { 109,-4108 }, { 110,-4108 }, { 111,-4108 }, { 112,-4108 }, { 113,-4108 }, { 114,-4108 }, { 115,-4108 }, { 116,-4108 }, { 117,-4108 }, { 118,-4108 }, { 119,-4108 }, { 120,-4108 }, { 121,-4108 }, { 122,-4108 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-4108 }, { 129,-4108 }, { 130,-4108 }, { 131,-4108 }, { 132,-4108 }, { 133,-4108 }, { 134,-4108 }, { 135,-4108 }, { 136,-4108 }, { 137,-4108 }, { 138,-4108 }, { 139,-4108 }, { 140,-4108 }, { 141,-4108 }, { 142,-4108 }, { 143,-4108 }, { 144,-4108 }, { 145,-4108 }, { 146,-4108 }, { 147,-4108 }, { 148,-4108 }, { 149,-4108 }, { 150,-4108 }, { 151,-4108 }, { 152,-4108 }, { 153,-4108 }, { 154,-4108 }, { 155,-4108 }, { 156,-4108 }, { 157,-4108 }, { 158,-4108 }, { 159,-4108 }, { 160,-4108 }, { 161,-4108 }, { 162,-4108 }, { 163,-4108 }, { 164,-4108 }, { 165,-4108 }, { 166,-4108 }, { 167,-4108 }, { 168,-4108 }, { 169,-4108 }, { 170,-4108 }, { 171,-4108 }, { 172,-4108 }, { 173,-4108 }, { 174,-4108 }, { 175,-4108 }, { 176,-4108 }, { 177,-4108 }, { 178,-4108 }, { 179,-4108 }, { 180,-4108 }, { 181,-4108 }, { 182,-4108 }, { 183,-4108 }, { 184,-4108 }, { 185,-4108 }, { 186,-4108 }, { 187,-4108 }, { 188,-4108 }, { 189,-4108 }, { 190,-4108 }, { 191,-4108 }, { 192,-4108 }, { 193,-4108 }, { 194,-4108 }, { 195,-4108 }, { 196,-4108 }, { 197,-4108 }, { 198,-4108 }, { 199,-4108 }, { 200,-4108 }, { 201,-4108 }, { 202,-4108 }, { 203,-4108 }, { 204,-4108 }, { 205,-4108 }, { 206,-4108 }, { 207,-4108 }, { 208,-4108 }, { 209,-4108 }, { 210,-4108 }, { 211,-4108 }, { 212,-4108 }, { 213,-4108 }, { 214,-4108 }, { 215,-4108 }, { 216,-4108 }, { 217,-4108 }, { 218,-4108 }, { 219,-4108 }, { 220,-4108 }, { 221,-4108 }, { 222,-4108 }, { 223,-4108 }, { 224,-4108 }, { 225,-4108 }, { 226,-4108 }, { 227,-4108 }, { 228,-4108 }, { 229,-4108 }, { 230,-4108 }, { 231,-4108 }, { 232,-4108 }, { 233,-4108 }, { 234,-4108 }, { 235,-4108 }, { 236,-4108 }, { 237,-4108 }, { 238,-4108 }, { 239,-4108 }, { 240,-4108 }, { 241,-4108 }, { 242,-4108 }, { 243,-4108 }, { 244,-4108 }, { 245,-4108 }, { 246,-4108 }, { 247,-4108 }, { 248,-4108 }, { 249,-4108 }, { 250,-4108 }, { 251,-4108 }, { 252,-4108 }, { 253,-4108 }, { 254,-4108 }, { 255,-4108 }, { 0, 66 }, { 0,9016 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,4255 }, { 49,4255 }, { 50,4255 }, { 51,4255 }, { 52,4255 }, { 53,4255 }, { 54,4255 }, { 55,4255 }, { 56,4255 }, { 57,4255 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4512 }, { 66,4512 }, { 67,4512 }, { 68,4512 }, { 69,4512 }, { 70,4512 }, { 71,4512 }, { 72,4512 }, { 73,4512 }, { 74,4512 }, { 75,4512 }, { 76,4512 }, { 77,4512 }, { 78,4512 }, { 79,4512 }, { 80,4512 }, { 81,4512 }, { 82,4512 }, { 83,4512 }, { 84,4512 }, { 85,4512 }, { 86,4512 }, { 87,4512 }, { 88,4512 }, { 89,4512 }, { 90,4512 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4769 }, { 0, 0 }, { 97,4512 }, { 98,4512 }, { 99,4512 }, { 100,4512 }, { 101,4512 }, { 102,4512 }, { 103,4512 }, { 104,4512 }, { 105,4512 }, { 106,4512 }, { 107,4512 }, { 108,4512 }, { 109,4512 }, { 110,4512 }, { 111,4512 }, { 112,4512 }, { 113,4512 }, { 114,4512 }, { 115,4512 }, { 116,4512 }, { 117,4512 }, { 118,4512 }, { 119,4512 }, { 120,4512 }, { 121,4512 }, { 122,4512 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4512 }, { 129,4512 }, { 130,4512 }, { 131,4512 }, { 132,4512 }, { 133,4512 }, { 134,4512 }, { 135,4512 }, { 136,4512 }, { 137,4512 }, { 138,4512 }, { 139,4512 }, { 140,4512 }, { 141,4512 }, { 142,4512 }, { 143,4512 }, { 144,4512 }, { 145,4512 }, { 146,4512 }, { 147,4512 }, { 148,4512 }, { 149,4512 }, { 150,4512 }, { 151,4512 }, { 152,4512 }, { 153,4512 }, { 154,4512 }, { 155,4512 }, { 156,4512 }, { 157,4512 }, { 158,4512 }, { 159,4512 }, { 160,4512 }, { 161,4512 }, { 162,4512 }, { 163,4512 }, { 164,4512 }, { 165,4512 }, { 166,4512 }, { 167,4512 }, { 168,4512 }, { 169,4512 }, { 170,4512 }, { 171,4512 }, { 172,4512 }, { 173,4512 }, { 174,4512 }, { 175,4512 }, { 176,4512 }, { 177,4512 }, { 178,4512 }, { 179,4512 }, { 180,4512 }, { 181,4512 }, { 182,4512 }, { 183,4512 }, { 184,4512 }, { 185,4512 }, { 186,4512 }, { 187,4512 }, { 188,4512 }, { 189,4512 }, { 190,4512 }, { 191,4512 }, { 192,4512 }, { 193,4512 }, { 194,4512 }, { 195,4512 }, { 196,4512 }, { 197,4512 }, { 198,4512 }, { 199,4512 }, { 200,4512 }, { 201,4512 }, { 202,4512 }, { 203,4512 }, { 204,4512 }, { 205,4512 }, { 206,4512 }, { 207,4512 }, { 208,4512 }, { 209,4512 }, { 210,4512 }, { 211,4512 }, { 212,4512 }, { 213,4512 }, { 214,4512 }, { 215,4512 }, { 216,4512 }, { 217,4512 }, { 218,4512 }, { 219,4512 }, { 220,4512 }, { 221,4512 }, { 222,4512 }, { 223,4512 }, { 224,4512 }, { 225,4512 }, { 226,4512 }, { 227,4512 }, { 228,4512 }, { 229,4512 }, { 230,4512 }, { 231,4512 }, { 232,4512 }, { 233,4512 }, { 234,4512 }, { 235,4512 }, { 236,4512 }, { 237,4512 }, { 238,4512 }, { 239,4512 }, { 240,4512 }, { 241,4512 }, { 242,4512 }, { 243,4512 }, { 244,4512 }, { 245,4512 }, { 246,4512 }, { 247,4512 }, { 248,4512 }, { 249,4512 }, { 250,4512 }, { 251,4512 }, { 252,4512 }, { 253,4512 }, { 254,4512 }, { 255,4512 }, { 0, 66 }, { 0,8759 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-4622 }, { 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 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 257 }, { 66, 257 }, { 67, 257 }, { 68, 257 }, { 69, 257 }, { 70, 257 }, { 71, 257 }, { 72, 257 }, { 73, 257 }, { 74, 257 }, { 75, 257 }, { 76, 257 }, { 77, 257 }, { 78, 257 }, { 79, 257 }, { 80, 257 }, { 81, 257 }, { 82, 257 }, { 83, 257 }, { 84, 257 }, { 85, 257 }, { 86, 257 }, { 87, 257 }, { 88, 257 }, { 89, 257 }, { 90, 257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95, 514 }, { 0, 0 }, { 97, 257 }, { 98, 257 }, { 99, 257 }, { 100, 257 }, { 101, 257 }, { 102, 257 }, { 103, 257 }, { 104, 257 }, { 105, 257 }, { 106, 257 }, { 107, 257 }, { 108, 257 }, { 109, 257 }, { 110, 257 }, { 111, 257 }, { 112, 257 }, { 113, 257 }, { 114, 257 }, { 115, 257 }, { 116, 257 }, { 117, 257 }, { 118, 257 }, { 119, 257 }, { 120, 257 }, { 121, 257 }, { 122, 257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128, 257 }, { 129, 257 }, { 130, 257 }, { 131, 257 }, { 132, 257 }, { 133, 257 }, { 134, 257 }, { 135, 257 }, { 136, 257 }, { 137, 257 }, { 138, 257 }, { 139, 257 }, { 140, 257 }, { 141, 257 }, { 142, 257 }, { 143, 257 }, { 144, 257 }, { 145, 257 }, { 146, 257 }, { 147, 257 }, { 148, 257 }, { 149, 257 }, { 150, 257 }, { 151, 257 }, { 152, 257 }, { 153, 257 }, { 154, 257 }, { 155, 257 }, { 156, 257 }, { 157, 257 }, { 158, 257 }, { 159, 257 }, { 160, 257 }, { 161, 257 }, { 162, 257 }, { 163, 257 }, { 164, 257 }, { 165, 257 }, { 166, 257 }, { 167, 257 }, { 168, 257 }, { 169, 257 }, { 170, 257 }, { 171, 257 }, { 172, 257 }, { 173, 257 }, { 174, 257 }, { 175, 257 }, { 176, 257 }, { 177, 257 }, { 178, 257 }, { 179, 257 }, { 180, 257 }, { 181, 257 }, { 182, 257 }, { 183, 257 }, { 184, 257 }, { 185, 257 }, { 186, 257 }, { 187, 257 }, { 188, 257 }, { 189, 257 }, { 190, 257 }, { 191, 257 }, { 192, 257 }, { 193, 257 }, { 194, 257 }, { 195, 257 }, { 196, 257 }, { 197, 257 }, { 198, 257 }, { 199, 257 }, { 200, 257 }, { 201, 257 }, { 202, 257 }, { 203, 257 }, { 204, 257 }, { 205, 257 }, { 206, 257 }, { 207, 257 }, { 208, 257 }, { 209, 257 }, { 210, 257 }, { 211, 257 }, { 212, 257 }, { 213, 257 }, { 214, 257 }, { 215, 257 }, { 216, 257 }, { 217, 257 }, { 218, 257 }, { 219, 257 }, { 220, 257 }, { 221, 257 }, { 222, 257 }, { 223, 257 }, { 224, 257 }, { 225, 257 }, { 226, 257 }, { 227, 257 }, { 228, 257 }, { 229, 257 }, { 230, 257 }, { 231, 257 }, { 232, 257 }, { 233, 257 }, { 234, 257 }, { 235, 257 }, { 236, 257 }, { 237, 257 }, { 238, 257 }, { 239, 257 }, { 240, 257 }, { 241, 257 }, { 242, 257 }, { 243, 257 }, { 244, 257 }, { 245, 257 }, { 246, 257 }, { 247, 257 }, { 248, 257 }, { 249, 257 }, { 250, 257 }, { 251, 257 }, { 252, 257 }, { 253, 257 }, { 254, 257 }, { 255, 257 }, { 0, 68 }, { 0,8502 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,4512 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,4512 }, { 49,4512 }, { 50,4512 }, { 51,4512 }, { 52,4512 }, { 53,4512 }, { 54,4512 }, { 55,4512 }, { 56,4512 }, { 57,4512 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4512 }, { 66,4512 }, { 67,4512 }, { 68,4512 }, { 69,4512 }, { 70,4512 }, { 71,4512 }, { 72,4512 }, { 73,4512 }, { 74,4512 }, { 75,4512 }, { 76,4512 }, { 77,4512 }, { 78,4512 }, { 79,4512 }, { 80,4512 }, { 81,4512 }, { 82,4512 }, { 83,4512 }, { 84,4512 }, { 85,4512 }, { 86,4512 }, { 87,4512 }, { 88,4512 }, { 89,4512 }, { 90,4512 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4512 }, { 0, 0 }, { 97,4512 }, { 98,4512 }, { 99,4512 }, { 100,4512 }, { 101,4512 }, { 102,4512 }, { 103,4512 }, { 104,4512 }, { 105,4512 }, { 106,4512 }, { 107,4512 }, { 108,4512 }, { 109,4512 }, { 110,4512 }, { 111,4512 }, { 112,4512 }, { 113,4512 }, { 114,4512 }, { 115,4512 }, { 116,4512 }, { 117,4512 }, { 118,4512 }, { 119,4512 }, { 120,4512 }, { 121,4512 }, { 122,4512 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4512 }, { 129,4512 }, { 130,4512 }, { 131,4512 }, { 132,4512 }, { 133,4512 }, { 134,4512 }, { 135,4512 }, { 136,4512 }, { 137,4512 }, { 138,4512 }, { 139,4512 }, { 140,4512 }, { 141,4512 }, { 142,4512 }, { 143,4512 }, { 144,4512 }, { 145,4512 }, { 146,4512 }, { 147,4512 }, { 148,4512 }, { 149,4512 }, { 150,4512 }, { 151,4512 }, { 152,4512 }, { 153,4512 }, { 154,4512 }, { 155,4512 }, { 156,4512 }, { 157,4512 }, { 158,4512 }, { 159,4512 }, { 160,4512 }, { 161,4512 }, { 162,4512 }, { 163,4512 }, { 164,4512 }, { 165,4512 }, { 166,4512 }, { 167,4512 }, { 168,4512 }, { 169,4512 }, { 170,4512 }, { 171,4512 }, { 172,4512 }, { 173,4512 }, { 174,4512 }, { 175,4512 }, { 176,4512 }, { 177,4512 }, { 178,4512 }, { 179,4512 }, { 180,4512 }, { 181,4512 }, { 182,4512 }, { 183,4512 }, { 184,4512 }, { 185,4512 }, { 186,4512 }, { 187,4512 }, { 188,4512 }, { 189,4512 }, { 190,4512 }, { 191,4512 }, { 192,4512 }, { 193,4512 }, { 194,4512 }, { 195,4512 }, { 196,4512 }, { 197,4512 }, { 198,4512 }, { 199,4512 }, { 200,4512 }, { 201,4512 }, { 202,4512 }, { 203,4512 }, { 204,4512 }, { 205,4512 }, { 206,4512 }, { 207,4512 }, { 208,4512 }, { 209,4512 }, { 210,4512 }, { 211,4512 }, { 212,4512 }, { 213,4512 }, { 214,4512 }, { 215,4512 }, { 216,4512 }, { 217,4512 }, { 218,4512 }, { 219,4512 }, { 220,4512 }, { 221,4512 }, { 222,4512 }, { 223,4512 }, { 224,4512 }, { 225,4512 }, { 226,4512 }, { 227,4512 }, { 228,4512 }, { 229,4512 }, { 230,4512 }, { 231,4512 }, { 232,4512 }, { 233,4512 }, { 234,4512 }, { 235,4512 }, { 236,4512 }, { 237,4512 }, { 238,4512 }, { 239,4512 }, { 240,4512 }, { 241,4512 }, { 242,4512 }, { 243,4512 }, { 244,4512 }, { 245,4512 }, { 246,4512 }, { 247,4512 }, { 248,4512 }, { 249,4512 }, { 250,4512 }, { 251,4512 }, { 252,4512 }, { 253,4512 }, { 254,4512 }, { 255,4512 }, { 0, 68 }, { 0,8245 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,4255 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,4512 }, { 49,4512 }, { 50,4512 }, { 51,4512 }, { 52,4512 }, { 53,4512 }, { 54,4512 }, { 55,4512 }, { 56,4512 }, { 57,4512 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,4255 }, { 66,4255 }, { 67,4255 }, { 68,4255 }, { 69,4255 }, { 70,4255 }, { 71,4255 }, { 72,4255 }, { 73,4255 }, { 74,4255 }, { 75,4255 }, { 76,4255 }, { 77,4255 }, { 78,4255 }, { 79,4255 }, { 80,4255 }, { 81,4255 }, { 82,4255 }, { 83,4255 }, { 84,4255 }, { 85,4255 }, { 86,4255 }, { 87,4255 }, { 88,4255 }, { 89,4255 }, { 90,4255 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4255 }, { 0, 0 }, { 97,4255 }, { 98,4255 }, { 99,4255 }, { 100,4255 }, { 101,4255 }, { 102,4255 }, { 103,4255 }, { 104,4255 }, { 105,4255 }, { 106,4255 }, { 107,4255 }, { 108,4255 }, { 109,4255 }, { 110,4255 }, { 111,4255 }, { 112,4255 }, { 113,4255 }, { 114,4255 }, { 115,4255 }, { 116,4255 }, { 117,4255 }, { 118,4255 }, { 119,4255 }, { 120,4255 }, { 121,4255 }, { 122,4255 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4255 }, { 129,4255 }, { 130,4255 }, { 131,4255 }, { 132,4255 }, { 133,4255 }, { 134,4255 }, { 135,4255 }, { 136,4255 }, { 137,4255 }, { 138,4255 }, { 139,4255 }, { 140,4255 }, { 141,4255 }, { 142,4255 }, { 143,4255 }, { 144,4255 }, { 145,4255 }, { 146,4255 }, { 147,4255 }, { 148,4255 }, { 149,4255 }, { 150,4255 }, { 151,4255 }, { 152,4255 }, { 153,4255 }, { 154,4255 }, { 155,4255 }, { 156,4255 }, { 157,4255 }, { 158,4255 }, { 159,4255 }, { 160,4255 }, { 161,4255 }, { 162,4255 }, { 163,4255 }, { 164,4255 }, { 165,4255 }, { 166,4255 }, { 167,4255 }, { 168,4255 }, { 169,4255 }, { 170,4255 }, { 171,4255 }, { 172,4255 }, { 173,4255 }, { 174,4255 }, { 175,4255 }, { 176,4255 }, { 177,4255 }, { 178,4255 }, { 179,4255 }, { 180,4255 }, { 181,4255 }, { 182,4255 }, { 183,4255 }, { 184,4255 }, { 185,4255 }, { 186,4255 }, { 187,4255 }, { 188,4255 }, { 189,4255 }, { 190,4255 }, { 191,4255 }, { 192,4255 }, { 193,4255 }, { 194,4255 }, { 195,4255 }, { 196,4255 }, { 197,4255 }, { 198,4255 }, { 199,4255 }, { 200,4255 }, { 201,4255 }, { 202,4255 }, { 203,4255 }, { 204,4255 }, { 205,4255 }, { 206,4255 }, { 207,4255 }, { 208,4255 }, { 209,4255 }, { 210,4255 }, { 211,4255 }, { 212,4255 }, { 213,4255 }, { 214,4255 }, { 215,4255 }, { 216,4255 }, { 217,4255 }, { 218,4255 }, { 219,4255 }, { 220,4255 }, { 221,4255 }, { 222,4255 }, { 223,4255 }, { 224,4255 }, { 225,4255 }, { 226,4255 }, { 227,4255 }, { 228,4255 }, { 229,4255 }, { 230,4255 }, { 231,4255 }, { 232,4255 }, { 233,4255 }, { 234,4255 }, { 235,4255 }, { 236,4255 }, { 237,4255 }, { 238,4255 }, { 239,4255 }, { 240,4255 }, { 241,4255 }, { 242,4255 }, { 243,4255 }, { 244,4255 }, { 245,4255 }, { 246,4255 }, { 247,4255 }, { 248,4255 }, { 249,4255 }, { 250,4255 }, { 251,4255 }, { 252,4255 }, { 253,4255 }, { 254,4255 }, { 255,4255 }, { 0, 68 }, { 0,7988 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-5393 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-4355 }, { 49,-4355 }, { 50,-4355 }, { 51,-4355 }, { 52,-4355 }, { 53,-4355 }, { 54,-4355 }, { 55,-4355 }, { 56,-5393 }, { 57,-5393 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-5393 }, { 66,-5393 }, { 67,-5393 }, { 68,-5393 }, { 69,-5393 }, { 70,-5393 }, { 71,-5393 }, { 72,-5393 }, { 73,-5393 }, { 74,-5393 }, { 75,-5393 }, { 76,-5393 }, { 77,-5393 }, { 78,-5393 }, { 79,-5393 }, { 80,-5393 }, { 81,-5393 }, { 82,-5393 }, { 83,-5393 }, { 84,-5393 }, { 85,-5393 }, { 86,-5393 }, { 87,-5393 }, { 88,-5393 }, { 89,-5393 }, { 90,-5393 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-5393 }, { 0, 0 }, { 97,-5393 }, { 98,-5393 }, { 99,-5393 }, { 100,-5393 }, { 101,-5393 }, { 102,-5393 }, { 103,-5393 }, { 104,-5393 }, { 105,-5393 }, { 106,-5393 }, { 107,-5393 }, { 108,-5393 }, { 109,-5393 }, { 110,-5393 }, { 111,-5393 }, { 112,-5393 }, { 113,-5393 }, { 114,-5393 }, { 115,-5393 }, { 116,-5393 }, { 117,-5393 }, { 118,-5393 }, { 119,-5393 }, { 120,-5393 }, { 121,-5393 }, { 122,-5393 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-5393 }, { 129,-5393 }, { 130,-5393 }, { 131,-5393 }, { 132,-5393 }, { 133,-5393 }, { 134,-5393 }, { 135,-5393 }, { 136,-5393 }, { 137,-5393 }, { 138,-5393 }, { 139,-5393 }, { 140,-5393 }, { 141,-5393 }, { 142,-5393 }, { 143,-5393 }, { 144,-5393 }, { 145,-5393 }, { 146,-5393 }, { 147,-5393 }, { 148,-5393 }, { 149,-5393 }, { 150,-5393 }, { 151,-5393 }, { 152,-5393 }, { 153,-5393 }, { 154,-5393 }, { 155,-5393 }, { 156,-5393 }, { 157,-5393 }, { 158,-5393 }, { 159,-5393 }, { 160,-5393 }, { 161,-5393 }, { 162,-5393 }, { 163,-5393 }, { 164,-5393 }, { 165,-5393 }, { 166,-5393 }, { 167,-5393 }, { 168,-5393 }, { 169,-5393 }, { 170,-5393 }, { 171,-5393 }, { 172,-5393 }, { 173,-5393 }, { 174,-5393 }, { 175,-5393 }, { 176,-5393 }, { 177,-5393 }, { 178,-5393 }, { 179,-5393 }, { 180,-5393 }, { 181,-5393 }, { 182,-5393 }, { 183,-5393 }, { 184,-5393 }, { 185,-5393 }, { 186,-5393 }, { 187,-5393 }, { 188,-5393 }, { 189,-5393 }, { 190,-5393 }, { 191,-5393 }, { 192,-5393 }, { 193,-5393 }, { 194,-5393 }, { 195,-5393 }, { 196,-5393 }, { 197,-5393 }, { 198,-5393 }, { 199,-5393 }, { 200,-5393 }, { 201,-5393 }, { 202,-5393 }, { 203,-5393 }, { 204,-5393 }, { 205,-5393 }, { 206,-5393 }, { 207,-5393 }, { 208,-5393 }, { 209,-5393 }, { 210,-5393 }, { 211,-5393 }, { 212,-5393 }, { 213,-5393 }, { 214,-5393 }, { 215,-5393 }, { 216,-5393 }, { 217,-5393 }, { 218,-5393 }, { 219,-5393 }, { 220,-5393 }, { 221,-5393 }, { 222,-5393 }, { 223,-5393 }, { 224,-5393 }, { 225,-5393 }, { 226,-5393 }, { 227,-5393 }, { 228,-5393 }, { 229,-5393 }, { 230,-5393 }, { 231,-5393 }, { 232,-5393 }, { 233,-5393 }, { 234,-5393 }, { 235,-5393 }, { 236,-5393 }, { 237,-5393 }, { 238,-5393 }, { 239,-5393 }, { 240,-5393 }, { 241,-5393 }, { 242,-5393 }, { 243,-5393 }, { 244,-5393 }, { 245,-5393 }, { 246,-5393 }, { 247,-5393 }, { 248,-5393 }, { 249,-5393 }, { 250,-5393 }, { 251,-5393 }, { 252,-5393 }, { 253,-5393 }, { 254,-5393 }, { 255,-5393 }, { 0, 68 }, { 0,7731 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-5650 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-4098 }, { 49,-4098 }, { 50,-4098 }, { 51,-4098 }, { 52,-4098 }, { 53,-4098 }, { 54,-4098 }, { 55,-4098 }, { 56,-4098 }, { 57,-4098 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-4098 }, { 66,-4098 }, { 67,-4098 }, { 68,-4098 }, { 69,-4098 }, { 70,-4098 }, { 71,-5650 }, { 72,-5650 }, { 73,-5650 }, { 74,-5650 }, { 75,-5650 }, { 76,-5650 }, { 77,-5650 }, { 78,-5650 }, { 79,-5650 }, { 80,-5650 }, { 81,-5650 }, { 82,-5650 }, { 83,-5650 }, { 84,-5650 }, { 85,-5650 }, { 86,-5650 }, { 87,-5650 }, { 88,-5650 }, { 89,-5650 }, { 90,-5650 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-5650 }, { 0, 0 }, { 97,-4098 }, { 98,-4098 }, { 99,-4098 }, { 100,-4098 }, { 101,-4098 }, { 102,-4098 }, { 103,-5650 }, { 104,-5650 }, { 105,-5650 }, { 106,-5650 }, { 107,-5650 }, { 108,-5650 }, { 109,-5650 }, { 110,-5650 }, { 111,-5650 }, { 112,-5650 }, { 113,-5650 }, { 114,-5650 }, { 115,-5650 }, { 116,-5650 }, { 117,-5650 }, { 118,-5650 }, { 119,-5650 }, { 120,-5650 }, { 121,-5650 }, { 122,-5650 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-5650 }, { 129,-5650 }, { 130,-5650 }, { 131,-5650 }, { 132,-5650 }, { 133,-5650 }, { 134,-5650 }, { 135,-5650 }, { 136,-5650 }, { 137,-5650 }, { 138,-5650 }, { 139,-5650 }, { 140,-5650 }, { 141,-5650 }, { 142,-5650 }, { 143,-5650 }, { 144,-5650 }, { 145,-5650 }, { 146,-5650 }, { 147,-5650 }, { 148,-5650 }, { 149,-5650 }, { 150,-5650 }, { 151,-5650 }, { 152,-5650 }, { 153,-5650 }, { 154,-5650 }, { 155,-5650 }, { 156,-5650 }, { 157,-5650 }, { 158,-5650 }, { 159,-5650 }, { 160,-5650 }, { 161,-5650 }, { 162,-5650 }, { 163,-5650 }, { 164,-5650 }, { 165,-5650 }, { 166,-5650 }, { 167,-5650 }, { 168,-5650 }, { 169,-5650 }, { 170,-5650 }, { 171,-5650 }, { 172,-5650 }, { 173,-5650 }, { 174,-5650 }, { 175,-5650 }, { 176,-5650 }, { 177,-5650 }, { 178,-5650 }, { 179,-5650 }, { 180,-5650 }, { 181,-5650 }, { 182,-5650 }, { 183,-5650 }, { 184,-5650 }, { 185,-5650 }, { 186,-5650 }, { 187,-5650 }, { 188,-5650 }, { 189,-5650 }, { 190,-5650 }, { 191,-5650 }, { 192,-5650 }, { 193,-5650 }, { 194,-5650 }, { 195,-5650 }, { 196,-5650 }, { 197,-5650 }, { 198,-5650 }, { 199,-5650 }, { 200,-5650 }, { 201,-5650 }, { 202,-5650 }, { 203,-5650 }, { 204,-5650 }, { 205,-5650 }, { 206,-5650 }, { 207,-5650 }, { 208,-5650 }, { 209,-5650 }, { 210,-5650 }, { 211,-5650 }, { 212,-5650 }, { 213,-5650 }, { 214,-5650 }, { 215,-5650 }, { 216,-5650 }, { 217,-5650 }, { 218,-5650 }, { 219,-5650 }, { 220,-5650 }, { 221,-5650 }, { 222,-5650 }, { 223,-5650 }, { 224,-5650 }, { 225,-5650 }, { 226,-5650 }, { 227,-5650 }, { 228,-5650 }, { 229,-5650 }, { 230,-5650 }, { 231,-5650 }, { 232,-5650 }, { 233,-5650 }, { 234,-5650 }, { 235,-5650 }, { 236,-5650 }, { 237,-5650 }, { 238,-5650 }, { 239,-5650 }, { 240,-5650 }, { 241,-5650 }, { 242,-5650 }, { 243,-5650 }, { 244,-5650 }, { 245,-5650 }, { 246,-5650 }, { 247,-5650 }, { 248,-5650 }, { 249,-5650 }, { 250,-5650 }, { 251,-5650 }, { 252,-5650 }, { 253,-5650 }, { 254,-5650 }, { 255,-5650 }, { 0, 68 }, { 0,7474 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-5907 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-5907 }, { 49,-5907 }, { 50,-5907 }, { 51,-5907 }, { 52,-5907 }, { 53,-5907 }, { 54,-5907 }, { 55,-5907 }, { 56,-5907 }, { 57,-5907 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-5907 }, { 66,-5907 }, { 67,-5907 }, { 68,-5907 }, { 69,-5907 }, { 70,-5907 }, { 71,-5907 }, { 72,-5907 }, { 73,-5907 }, { 74,-5907 }, { 75,-5907 }, { 76,-5907 }, { 77,-5907 }, { 78,-5907 }, { 79,-5907 }, { 80,-5907 }, { 81,-5907 }, { 82,-5907 }, { 83,-5907 }, { 84,-5907 }, { 85,-5907 }, { 86,-5907 }, { 87,-5907 }, { 88,-5907 }, { 89,-5907 }, { 90,-5907 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-5907 }, { 0, 0 }, { 97,-5907 }, { 98,-5907 }, { 99,-5907 }, { 100,-5907 }, { 101,-5907 }, { 102,-5907 }, { 103,-5907 }, { 104,-5907 }, { 105,-5907 }, { 106,-5907 }, { 107,-5907 }, { 108,-5907 }, { 109,-5907 }, { 110,-5907 }, { 111,-5907 }, { 112,-5907 }, { 113,-5907 }, { 114,-5907 }, { 115,-5907 }, { 116,-5907 }, { 117,-5907 }, { 118,-5907 }, { 119,-5907 }, { 120,-5907 }, { 121,-5907 }, { 122,-5907 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-5907 }, { 129,-5907 }, { 130,-5907 }, { 131,-5907 }, { 132,-5907 }, { 133,-5907 }, { 134,-5907 }, { 135,-5907 }, { 136,-5907 }, { 137,-5907 }, { 138,-5907 }, { 139,-5907 }, { 140,-5907 }, { 141,-5907 }, { 142,-5907 }, { 143,-5907 }, { 144,-5907 }, { 145,-5907 }, { 146,-5907 }, { 147,-5907 }, { 148,-5907 }, { 149,-5907 }, { 150,-5907 }, { 151,-5907 }, { 152,-5907 }, { 153,-5907 }, { 154,-5907 }, { 155,-5907 }, { 156,-5907 }, { 157,-5907 }, { 158,-5907 }, { 159,-5907 }, { 160,-5907 }, { 161,-5907 }, { 162,-5907 }, { 163,-5907 }, { 164,-5907 }, { 165,-5907 }, { 166,-5907 }, { 167,-5907 }, { 168,-5907 }, { 169,-5907 }, { 170,-5907 }, { 171,-5907 }, { 172,-5907 }, { 173,-5907 }, { 174,-5907 }, { 175,-5907 }, { 176,-5907 }, { 177,-5907 }, { 178,-5907 }, { 179,-5907 }, { 180,-5907 }, { 181,-5907 }, { 182,-5907 }, { 183,-5907 }, { 184,-5907 }, { 185,-5907 }, { 186,-5907 }, { 187,-5907 }, { 188,-5907 }, { 189,-5907 }, { 190,-5907 }, { 191,-5907 }, { 192,-5907 }, { 193,-5907 }, { 194,-5907 }, { 195,-5907 }, { 196,-5907 }, { 197,-5907 }, { 198,-5907 }, { 199,-5907 }, { 200,-5907 }, { 201,-5907 }, { 202,-5907 }, { 203,-5907 }, { 204,-5907 }, { 205,-5907 }, { 206,-5907 }, { 207,-5907 }, { 208,-5907 }, { 209,-5907 }, { 210,-5907 }, { 211,-5907 }, { 212,-5907 }, { 213,-5907 }, { 214,-5907 }, { 215,-5907 }, { 216,-5907 }, { 217,-5907 }, { 218,-5907 }, { 219,-5907 }, { 220,-5907 }, { 221,-5907 }, { 222,-5907 }, { 223,-5907 }, { 224,-5907 }, { 225,-5907 }, { 226,-5907 }, { 227,-5907 }, { 228,-5907 }, { 229,-5907 }, { 230,-5907 }, { 231,-5907 }, { 232,-5907 }, { 233,-5907 }, { 234,-5907 }, { 235,-5907 }, { 236,-5907 }, { 237,-5907 }, { 238,-5907 }, { 239,-5907 }, { 240,-5907 }, { 241,-5907 }, { 242,-5907 }, { 243,-5907 }, { 244,-5907 }, { 245,-5907 }, { 246,-5907 }, { 247,-5907 }, { 248,-5907 }, { 249,-5907 }, { 250,-5907 }, { 251,-5907 }, { 252,-5907 }, { 253,-5907 }, { 254,-5907 }, { 255,-5907 }, { 0, 68 }, { 0,7217 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-6164 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 43,-5393 }, { 0, 0 }, { 45,-5393 }, { 0, 0 }, { 0, 0 }, { 48,-5383 }, { 49,-5383 }, { 50,-5383 }, { 51,-5383 }, { 52,-5383 }, { 53,-5383 }, { 54,-5383 }, { 55,-5383 }, { 56,-5383 }, { 57,-5383 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-6164 }, { 66,-6164 }, { 67,-6164 }, { 68,-6164 }, { 69,-6164 }, { 70,-6164 }, { 71,-6164 }, { 72,-6164 }, { 73,-6164 }, { 74,-6164 }, { 75,-6164 }, { 76,-6164 }, { 77,-6164 }, { 78,-6164 }, { 79,-6164 }, { 80,-6164 }, { 81,-6164 }, { 82,-6164 }, { 83,-6164 }, { 84,-6164 }, { 85,-6164 }, { 86,-6164 }, { 87,-6164 }, { 88,-6164 }, { 89,-6164 }, { 90,-6164 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-6164 }, { 0, 0 }, { 97,-6164 }, { 98,-6164 }, { 99,-6164 }, { 100,-6164 }, { 101,-6164 }, { 102,-6164 }, { 103,-6164 }, { 104,-6164 }, { 105,-6164 }, { 106,-6164 }, { 107,-6164 }, { 108,-6164 }, { 109,-6164 }, { 110,-6164 }, { 111,-6164 }, { 112,-6164 }, { 113,-6164 }, { 114,-6164 }, { 115,-6164 }, { 116,-6164 }, { 117,-6164 }, { 118,-6164 }, { 119,-6164 }, { 120,-6164 }, { 121,-6164 }, { 122,-6164 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-6164 }, { 129,-6164 }, { 130,-6164 }, { 131,-6164 }, { 132,-6164 }, { 133,-6164 }, { 134,-6164 }, { 135,-6164 }, { 136,-6164 }, { 137,-6164 }, { 138,-6164 }, { 139,-6164 }, { 140,-6164 }, { 141,-6164 }, { 142,-6164 }, { 143,-6164 }, { 144,-6164 }, { 145,-6164 }, { 146,-6164 }, { 147,-6164 }, { 148,-6164 }, { 149,-6164 }, { 150,-6164 }, { 151,-6164 }, { 152,-6164 }, { 153,-6164 }, { 154,-6164 }, { 155,-6164 }, { 156,-6164 }, { 157,-6164 }, { 158,-6164 }, { 159,-6164 }, { 160,-6164 }, { 161,-6164 }, { 162,-6164 }, { 163,-6164 }, { 164,-6164 }, { 165,-6164 }, { 166,-6164 }, { 167,-6164 }, { 168,-6164 }, { 169,-6164 }, { 170,-6164 }, { 171,-6164 }, { 172,-6164 }, { 173,-6164 }, { 174,-6164 }, { 175,-6164 }, { 176,-6164 }, { 177,-6164 }, { 178,-6164 }, { 179,-6164 }, { 180,-6164 }, { 181,-6164 }, { 182,-6164 }, { 183,-6164 }, { 184,-6164 }, { 185,-6164 }, { 186,-6164 }, { 187,-6164 }, { 188,-6164 }, { 189,-6164 }, { 190,-6164 }, { 191,-6164 }, { 192,-6164 }, { 193,-6164 }, { 194,-6164 }, { 195,-6164 }, { 196,-6164 }, { 197,-6164 }, { 198,-6164 }, { 199,-6164 }, { 200,-6164 }, { 201,-6164 }, { 202,-6164 }, { 203,-6164 }, { 204,-6164 }, { 205,-6164 }, { 206,-6164 }, { 207,-6164 }, { 208,-6164 }, { 209,-6164 }, { 210,-6164 }, { 211,-6164 }, { 212,-6164 }, { 213,-6164 }, { 214,-6164 }, { 215,-6164 }, { 216,-6164 }, { 217,-6164 }, { 218,-6164 }, { 219,-6164 }, { 220,-6164 }, { 221,-6164 }, { 222,-6164 }, { 223,-6164 }, { 224,-6164 }, { 225,-6164 }, { 226,-6164 }, { 227,-6164 }, { 228,-6164 }, { 229,-6164 }, { 230,-6164 }, { 231,-6164 }, { 232,-6164 }, { 233,-6164 }, { 234,-6164 }, { 235,-6164 }, { 236,-6164 }, { 237,-6164 }, { 238,-6164 }, { 239,-6164 }, { 240,-6164 }, { 241,-6164 }, { 242,-6164 }, { 243,-6164 }, { 244,-6164 }, { 245,-6164 }, { 246,-6164 }, { 247,-6164 }, { 248,-6164 }, { 249,-6164 }, { 250,-6164 }, { 251,-6164 }, { 252,-6164 }, { 253,-6164 }, { 254,-6164 }, { 255,-6164 }, { 0, 68 }, { 0,6960 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-6421 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-4355 }, { 49,-4355 }, { 50,-4355 }, { 51,-4355 }, { 52,-4355 }, { 53,-4355 }, { 54,-4355 }, { 55,-4355 }, { 56,-4355 }, { 57,-4355 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-6421 }, { 66,-6421 }, { 67,-6421 }, { 68,-6421 }, { 69,-6421 }, { 70,-6421 }, { 71,-6421 }, { 72,-6421 }, { 73,-6421 }, { 74,-6421 }, { 75,-6421 }, { 76,-6421 }, { 77,-6421 }, { 78,-6421 }, { 79,-6421 }, { 80,-6421 }, { 81,-6421 }, { 82,-6421 }, { 83,-6421 }, { 84,-6421 }, { 85,-6421 }, { 86,-6421 }, { 87,-6421 }, { 88,-6421 }, { 89,-6421 }, { 90,-6421 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-6421 }, { 0, 0 }, { 97,-6421 }, { 98,-6421 }, { 99,-6421 }, { 100,-6421 }, { 101,-6421 }, { 102,-6421 }, { 103,-6421 }, { 104,-6421 }, { 105,-6421 }, { 106,-6421 }, { 107,-6421 }, { 108,-6421 }, { 109,-6421 }, { 110,-6421 }, { 111,-6421 }, { 112,-6421 }, { 113,-6421 }, { 114,-6421 }, { 115,-6421 }, { 116,-6421 }, { 117,-6421 }, { 118,-6421 }, { 119,-6421 }, { 120,-6421 }, { 121,-6421 }, { 122,-6421 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-6421 }, { 129,-6421 }, { 130,-6421 }, { 131,-6421 }, { 132,-6421 }, { 133,-6421 }, { 134,-6421 }, { 135,-6421 }, { 136,-6421 }, { 137,-6421 }, { 138,-6421 }, { 139,-6421 }, { 140,-6421 }, { 141,-6421 }, { 142,-6421 }, { 143,-6421 }, { 144,-6421 }, { 145,-6421 }, { 146,-6421 }, { 147,-6421 }, { 148,-6421 }, { 149,-6421 }, { 150,-6421 }, { 151,-6421 }, { 152,-6421 }, { 153,-6421 }, { 154,-6421 }, { 155,-6421 }, { 156,-6421 }, { 157,-6421 }, { 158,-6421 }, { 159,-6421 }, { 160,-6421 }, { 161,-6421 }, { 162,-6421 }, { 163,-6421 }, { 164,-6421 }, { 165,-6421 }, { 166,-6421 }, { 167,-6421 }, { 168,-6421 }, { 169,-6421 }, { 170,-6421 }, { 171,-6421 }, { 172,-6421 }, { 173,-6421 }, { 174,-6421 }, { 175,-6421 }, { 176,-6421 }, { 177,-6421 }, { 178,-6421 }, { 179,-6421 }, { 180,-6421 }, { 181,-6421 }, { 182,-6421 }, { 183,-6421 }, { 184,-6421 }, { 185,-6421 }, { 186,-6421 }, { 187,-6421 }, { 188,-6421 }, { 189,-6421 }, { 190,-6421 }, { 191,-6421 }, { 192,-6421 }, { 193,-6421 }, { 194,-6421 }, { 195,-6421 }, { 196,-6421 }, { 197,-6421 }, { 198,-6421 }, { 199,-6421 }, { 200,-6421 }, { 201,-6421 }, { 202,-6421 }, { 203,-6421 }, { 204,-6421 }, { 205,-6421 }, { 206,-6421 }, { 207,-6421 }, { 208,-6421 }, { 209,-6421 }, { 210,-6421 }, { 211,-6421 }, { 212,-6421 }, { 213,-6421 }, { 214,-6421 }, { 215,-6421 }, { 216,-6421 }, { 217,-6421 }, { 218,-6421 }, { 219,-6421 }, { 220,-6421 }, { 221,-6421 }, { 222,-6421 }, { 223,-6421 }, { 224,-6421 }, { 225,-6421 }, { 226,-6421 }, { 227,-6421 }, { 228,-6421 }, { 229,-6421 }, { 230,-6421 }, { 231,-6421 }, { 232,-6421 }, { 233,-6421 }, { 234,-6421 }, { 235,-6421 }, { 236,-6421 }, { 237,-6421 }, { 238,-6421 }, { 239,-6421 }, { 240,-6421 }, { 241,-6421 }, { 242,-6421 }, { 243,-6421 }, { 244,-6421 }, { 245,-6421 }, { 246,-6421 }, { 247,-6421 }, { 248,-6421 }, { 249,-6421 }, { 250,-6421 }, { 251,-6421 }, { 252,-6421 }, { 253,-6421 }, { 254,-6421 }, { 255,-6421 }, { 0, 28 }, { 0,6703 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 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,6680 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,3227 }, { 49,3227 }, { 50,3227 }, { 51,3227 }, { 52,3227 }, { 53,3227 }, { 54,3227 }, { 55,3227 }, { 56,3227 }, { 57,3227 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0,6642 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3227 }, { 66,3227 }, { 67,3227 }, { 68,3227 }, { 69,3227 }, { 70,3227 }, { 48,3227 }, { 49,3227 }, { 50,3227 }, { 51,3227 }, { 52,3227 }, { 53,3227 }, { 54,3227 }, { 55,3227 }, { 56,3227 }, { 57,3227 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0,6619 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3227 }, { 66,3227 }, { 67,3227 }, { 68,3227 }, { 69,3227 }, { 70,3227 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,3227 }, { 98,3227 }, { 99,3227 }, { 100,3227 }, { 101,3227 }, { 102,3227 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,3227 }, { 49,3227 }, { 50,3227 }, { 51,3227 }, { 52,3227 }, { 53,3227 }, { 54,3227 }, { 55,3227 }, { 56,3227 }, { 57,3227 }, { 0, 0 }, { 97,3227 }, { 98,3227 }, { 99,3227 }, { 100,3227 }, { 101,3227 }, { 102,3227 }, { 65,3227 }, { 66,3227 }, { 67,3227 }, { 68,3227 }, { 69,3227 }, { 70,3227 }, { 48,3227 }, { 49,3227 }, { 50,3227 }, { 51,3227 }, { 52,3227 }, { 53,3227 }, { 54,3227 }, { 55,3227 }, { 56,3227 }, { 57,3227 }, { 0, 66 }, { 0,6560 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3227 }, { 66,3227 }, { 67,3227 }, { 68,3227 }, { 69,3227 }, { 70,3227 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,3227 }, { 98,3227 }, { 99,3227 }, { 100,3227 }, { 101,3227 }, { 102,3227 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-3998 }, { 0, 0 }, { 97,3227 }, { 98,3227 }, { 99,3227 }, { 100,3227 }, { 101,3227 }, { 102,3227 }, { 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, 257 }, { 66, 257 }, { 67, 257 }, { 68, 257 }, { 69, 257 }, { 70, 257 }, { 71, 257 }, { 72, 257 }, { 73, 257 }, { 74, 257 }, { 75, 257 }, { 76, 257 }, { 77, 257 }, { 78, 257 }, { 79, 257 }, { 80, 257 }, { 81, 257 }, { 82, 257 }, { 83, 257 }, { 84, 257 }, { 85, 257 }, { 86, 257 }, { 87, 257 }, { 88, 257 }, { 89, 257 }, { 90, 257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95, 514 }, { 0, 0 }, { 97, 257 }, { 98, 257 }, { 99, 257 }, { 100, 257 }, { 101, 257 }, { 102, 257 }, { 103, 257 }, { 104, 257 }, { 105, 257 }, { 106, 257 }, { 107, 257 }, { 108, 257 }, { 109, 257 }, { 110, 257 }, { 111, 257 }, { 112, 257 }, { 113, 257 }, { 114, 257 }, { 115, 257 }, { 116, 257 }, { 117, 257 }, { 118, 257 }, { 119, 257 }, { 120, 257 }, { 121, 257 }, { 122, 257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128, 257 }, { 129, 257 }, { 130, 257 }, { 131, 257 }, { 132, 257 }, { 133, 257 }, { 134, 257 }, { 135, 257 }, { 136, 257 }, { 137, 257 }, { 138, 257 }, { 139, 257 }, { 140, 257 }, { 141, 257 }, { 142, 257 }, { 143, 257 }, { 144, 257 }, { 145, 257 }, { 146, 257 }, { 147, 257 }, { 148, 257 }, { 149, 257 }, { 150, 257 }, { 151, 257 }, { 152, 257 }, { 153, 257 }, { 154, 257 }, { 155, 257 }, { 156, 257 }, { 157, 257 }, { 158, 257 }, { 159, 257 }, { 160, 257 }, { 161, 257 }, { 162, 257 }, { 163, 257 }, { 164, 257 }, { 165, 257 }, { 166, 257 }, { 167, 257 }, { 168, 257 }, { 169, 257 }, { 170, 257 }, { 171, 257 }, { 172, 257 }, { 173, 257 }, { 174, 257 }, { 175, 257 }, { 176, 257 }, { 177, 257 }, { 178, 257 }, { 179, 257 }, { 180, 257 }, { 181, 257 }, { 182, 257 }, { 183, 257 }, { 184, 257 }, { 185, 257 }, { 186, 257 }, { 187, 257 }, { 188, 257 }, { 189, 257 }, { 190, 257 }, { 191, 257 }, { 192, 257 }, { 193, 257 }, { 194, 257 }, { 195, 257 }, { 196, 257 }, { 197, 257 }, { 198, 257 }, { 199, 257 }, { 200, 257 }, { 201, 257 }, { 202, 257 }, { 203, 257 }, { 204, 257 }, { 205, 257 }, { 206, 257 }, { 207, 257 }, { 208, 257 }, { 209, 257 }, { 210, 257 }, { 211, 257 }, { 212, 257 }, { 213, 257 }, { 214, 257 }, { 215, 257 }, { 216, 257 }, { 217, 257 }, { 218, 257 }, { 219, 257 }, { 220, 257 }, { 221, 257 }, { 222, 257 }, { 223, 257 }, { 224, 257 }, { 225, 257 }, { 226, 257 }, { 227, 257 }, { 228, 257 }, { 229, 257 }, { 230, 257 }, { 231, 257 }, { 232, 257 }, { 233, 257 }, { 234, 257 }, { 235, 257 }, { 236, 257 }, { 237, 257 }, { 238, 257 }, { 239, 257 }, { 240, 257 }, { 241, 257 }, { 242, 257 }, { 243, 257 }, { 244, 257 }, { 245, 257 }, { 246, 257 }, { 247, 257 }, { 248, 257 }, { 249, 257 }, { 250, 257 }, { 251, 257 }, { 252, 257 }, { 253, 257 }, { 254, 257 }, { 255, 257 }, { 0, 69 }, { 0,6303 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,2970 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,2970 }, { 49,2970 }, { 50,2970 }, { 51,2970 }, { 52,2970 }, { 53,2970 }, { 54,2970 }, { 55,2970 }, { 56,2970 }, { 57,2970 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,2970 }, { 66,2970 }, { 67,2970 }, { 68,2970 }, { 69,2970 }, { 70,2970 }, { 71,2970 }, { 72,2970 }, { 73,2970 }, { 74,2970 }, { 75,2970 }, { 76,2970 }, { 77,2970 }, { 78,2970 }, { 79,2970 }, { 80,2970 }, { 81,2970 }, { 82,2970 }, { 83,2970 }, { 84,2970 }, { 85,2970 }, { 86,2970 }, { 87,2970 }, { 88,2970 }, { 89,2970 }, { 90,2970 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,2970 }, { 0, 0 }, { 97,2970 }, { 98,2970 }, { 99,2970 }, { 100,2970 }, { 101,2970 }, { 102,2970 }, { 103,2970 }, { 104,2970 }, { 105,2970 }, { 106,2970 }, { 107,2970 }, { 108,2970 }, { 109,2970 }, { 110,2970 }, { 111,2970 }, { 112,2970 }, { 113,2970 }, { 114,2970 }, { 115,2970 }, { 116,2970 }, { 117,2970 }, { 118,2970 }, { 119,2970 }, { 120,2970 }, { 121,2970 }, { 122,2970 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,2970 }, { 129,2970 }, { 130,2970 }, { 131,2970 }, { 132,2970 }, { 133,2970 }, { 134,2970 }, { 135,2970 }, { 136,2970 }, { 137,2970 }, { 138,2970 }, { 139,2970 }, { 140,2970 }, { 141,2970 }, { 142,2970 }, { 143,2970 }, { 144,2970 }, { 145,2970 }, { 146,2970 }, { 147,2970 }, { 148,2970 }, { 149,2970 }, { 150,2970 }, { 151,2970 }, { 152,2970 }, { 153,2970 }, { 154,2970 }, { 155,2970 }, { 156,2970 }, { 157,2970 }, { 158,2970 }, { 159,2970 }, { 160,2970 }, { 161,2970 }, { 162,2970 }, { 163,2970 }, { 164,2970 }, { 165,2970 }, { 166,2970 }, { 167,2970 }, { 168,2970 }, { 169,2970 }, { 170,2970 }, { 171,2970 }, { 172,2970 }, { 173,2970 }, { 174,2970 }, { 175,2970 }, { 176,2970 }, { 177,2970 }, { 178,2970 }, { 179,2970 }, { 180,2970 }, { 181,2970 }, { 182,2970 }, { 183,2970 }, { 184,2970 }, { 185,2970 }, { 186,2970 }, { 187,2970 }, { 188,2970 }, { 189,2970 }, { 190,2970 }, { 191,2970 }, { 192,2970 }, { 193,2970 }, { 194,2970 }, { 195,2970 }, { 196,2970 }, { 197,2970 }, { 198,2970 }, { 199,2970 }, { 200,2970 }, { 201,2970 }, { 202,2970 }, { 203,2970 }, { 204,2970 }, { 205,2970 }, { 206,2970 }, { 207,2970 }, { 208,2970 }, { 209,2970 }, { 210,2970 }, { 211,2970 }, { 212,2970 }, { 213,2970 }, { 214,2970 }, { 215,2970 }, { 216,2970 }, { 217,2970 }, { 218,2970 }, { 219,2970 }, { 220,2970 }, { 221,2970 }, { 222,2970 }, { 223,2970 }, { 224,2970 }, { 225,2970 }, { 226,2970 }, { 227,2970 }, { 228,2970 }, { 229,2970 }, { 230,2970 }, { 231,2970 }, { 232,2970 }, { 233,2970 }, { 234,2970 }, { 235,2970 }, { 236,2970 }, { 237,2970 }, { 238,2970 }, { 239,2970 }, { 240,2970 }, { 241,2970 }, { 242,2970 }, { 243,2970 }, { 244,2970 }, { 245,2970 }, { 246,2970 }, { 247,2970 }, { 248,2970 }, { 249,2970 }, { 250,2970 }, { 251,2970 }, { 252,2970 }, { 253,2970 }, { 254,2970 }, { 255,2970 }, { 0, 69 }, { 0,6046 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,2713 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,2970 }, { 49,2970 }, { 50,2970 }, { 51,2970 }, { 52,2970 }, { 53,2970 }, { 54,2970 }, { 55,2970 }, { 56,2970 }, { 57,2970 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,2713 }, { 66,2713 }, { 67,2713 }, { 68,2713 }, { 69,2713 }, { 70,2713 }, { 71,2713 }, { 72,2713 }, { 73,2713 }, { 74,2713 }, { 75,2713 }, { 76,2713 }, { 77,2713 }, { 78,2713 }, { 79,2713 }, { 80,2713 }, { 81,2713 }, { 82,2713 }, { 83,2713 }, { 84,2713 }, { 85,2713 }, { 86,2713 }, { 87,2713 }, { 88,2713 }, { 89,2713 }, { 90,2713 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,2713 }, { 0, 0 }, { 97,2713 }, { 98,2713 }, { 99,2713 }, { 100,2713 }, { 101,2713 }, { 102,2713 }, { 103,2713 }, { 104,2713 }, { 105,2713 }, { 106,2713 }, { 107,2713 }, { 108,2713 }, { 109,2713 }, { 110,2713 }, { 111,2713 }, { 112,2713 }, { 113,2713 }, { 114,2713 }, { 115,2713 }, { 116,2713 }, { 117,2713 }, { 118,2713 }, { 119,2713 }, { 120,2713 }, { 121,2713 }, { 122,2713 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,2713 }, { 129,2713 }, { 130,2713 }, { 131,2713 }, { 132,2713 }, { 133,2713 }, { 134,2713 }, { 135,2713 }, { 136,2713 }, { 137,2713 }, { 138,2713 }, { 139,2713 }, { 140,2713 }, { 141,2713 }, { 142,2713 }, { 143,2713 }, { 144,2713 }, { 145,2713 }, { 146,2713 }, { 147,2713 }, { 148,2713 }, { 149,2713 }, { 150,2713 }, { 151,2713 }, { 152,2713 }, { 153,2713 }, { 154,2713 }, { 155,2713 }, { 156,2713 }, { 157,2713 }, { 158,2713 }, { 159,2713 }, { 160,2713 }, { 161,2713 }, { 162,2713 }, { 163,2713 }, { 164,2713 }, { 165,2713 }, { 166,2713 }, { 167,2713 }, { 168,2713 }, { 169,2713 }, { 170,2713 }, { 171,2713 }, { 172,2713 }, { 173,2713 }, { 174,2713 }, { 175,2713 }, { 176,2713 }, { 177,2713 }, { 178,2713 }, { 179,2713 }, { 180,2713 }, { 181,2713 }, { 182,2713 }, { 183,2713 }, { 184,2713 }, { 185,2713 }, { 186,2713 }, { 187,2713 }, { 188,2713 }, { 189,2713 }, { 190,2713 }, { 191,2713 }, { 192,2713 }, { 193,2713 }, { 194,2713 }, { 195,2713 }, { 196,2713 }, { 197,2713 }, { 198,2713 }, { 199,2713 }, { 200,2713 }, { 201,2713 }, { 202,2713 }, { 203,2713 }, { 204,2713 }, { 205,2713 }, { 206,2713 }, { 207,2713 }, { 208,2713 }, { 209,2713 }, { 210,2713 }, { 211,2713 }, { 212,2713 }, { 213,2713 }, { 214,2713 }, { 215,2713 }, { 216,2713 }, { 217,2713 }, { 218,2713 }, { 219,2713 }, { 220,2713 }, { 221,2713 }, { 222,2713 }, { 223,2713 }, { 224,2713 }, { 225,2713 }, { 226,2713 }, { 227,2713 }, { 228,2713 }, { 229,2713 }, { 230,2713 }, { 231,2713 }, { 232,2713 }, { 233,2713 }, { 234,2713 }, { 235,2713 }, { 236,2713 }, { 237,2713 }, { 238,2713 }, { 239,2713 }, { 240,2713 }, { 241,2713 }, { 242,2713 }, { 243,2713 }, { 244,2713 }, { 245,2713 }, { 246,2713 }, { 247,2713 }, { 248,2713 }, { 249,2713 }, { 250,2713 }, { 251,2713 }, { 252,2713 }, { 253,2713 }, { 254,2713 }, { 255,2713 }, { 0, 69 }, { 0,5789 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-4769 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-4769 }, { 49,-4769 }, { 50,-4769 }, { 51,-4769 }, { 52,-4769 }, { 53,-4769 }, { 54,-4769 }, { 55,-4769 }, { 56,-4769 }, { 57,-4769 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-4769 }, { 66,-4769 }, { 67,-4769 }, { 68,-4769 }, { 69,-4769 }, { 70,-4769 }, { 71,-4769 }, { 72,-4769 }, { 73,-4769 }, { 74,-4769 }, { 75,-4769 }, { 76,-4769 }, { 77,-4769 }, { 78,-4769 }, { 79,-4769 }, { 80,-4769 }, { 81,-4769 }, { 82,-4769 }, { 83,-4769 }, { 84,-4769 }, { 85,-4769 }, { 86,-4769 }, { 87,-4769 }, { 88,-4769 }, { 89,-4769 }, { 90,-4769 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-4769 }, { 0, 0 }, { 97,-4769 }, { 98,-4769 }, { 99,-4769 }, { 100,-4769 }, { 101,-4769 }, { 102,-4769 }, { 103,-4769 }, { 104,-4769 }, { 105,-4769 }, { 106,-4769 }, { 107,-4769 }, { 108,-4769 }, { 109,-4769 }, { 110,-4769 }, { 111,-4769 }, { 112,-4769 }, { 113,-4769 }, { 114,-4769 }, { 115,-4769 }, { 116,-4769 }, { 117,-4769 }, { 118,-4769 }, { 119,-4769 }, { 120,-4769 }, { 121,-4769 }, { 122,-4769 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-4769 }, { 129,-4769 }, { 130,-4769 }, { 131,-4769 }, { 132,-4769 }, { 133,-4769 }, { 134,-4769 }, { 135,-4769 }, { 136,-4769 }, { 137,-4769 }, { 138,-4769 }, { 139,-4769 }, { 140,-4769 }, { 141,-4769 }, { 142,-4769 }, { 143,-4769 }, { 144,-4769 }, { 145,-4769 }, { 146,-4769 }, { 147,-4769 }, { 148,-4769 }, { 149,-4769 }, { 150,-4769 }, { 151,-4769 }, { 152,-4769 }, { 153,-4769 }, { 154,-4769 }, { 155,-4769 }, { 156,-4769 }, { 157,-4769 }, { 158,-4769 }, { 159,-4769 }, { 160,-4769 }, { 161,-4769 }, { 162,-4769 }, { 163,-4769 }, { 164,-4769 }, { 165,-4769 }, { 166,-4769 }, { 167,-4769 }, { 168,-4769 }, { 169,-4769 }, { 170,-4769 }, { 171,-4769 }, { 172,-4769 }, { 173,-4769 }, { 174,-4769 }, { 175,-4769 }, { 176,-4769 }, { 177,-4769 }, { 178,-4769 }, { 179,-4769 }, { 180,-4769 }, { 181,-4769 }, { 182,-4769 }, { 183,-4769 }, { 184,-4769 }, { 185,-4769 }, { 186,-4769 }, { 187,-4769 }, { 188,-4769 }, { 189,-4769 }, { 190,-4769 }, { 191,-4769 }, { 192,-4769 }, { 193,-4769 }, { 194,-4769 }, { 195,-4769 }, { 196,-4769 }, { 197,-4769 }, { 198,-4769 }, { 199,-4769 }, { 200,-4769 }, { 201,-4769 }, { 202,-4769 }, { 203,-4769 }, { 204,-4769 }, { 205,-4769 }, { 206,-4769 }, { 207,-4769 }, { 208,-4769 }, { 209,-4769 }, { 210,-4769 }, { 211,-4769 }, { 212,-4769 }, { 213,-4769 }, { 214,-4769 }, { 215,-4769 }, { 216,-4769 }, { 217,-4769 }, { 218,-4769 }, { 219,-4769 }, { 220,-4769 }, { 221,-4769 }, { 222,-4769 }, { 223,-4769 }, { 224,-4769 }, { 225,-4769 }, { 226,-4769 }, { 227,-4769 }, { 228,-4769 }, { 229,-4769 }, { 230,-4769 }, { 231,-4769 }, { 232,-4769 }, { 233,-4769 }, { 234,-4769 }, { 235,-4769 }, { 236,-4769 }, { 237,-4769 }, { 238,-4769 }, { 239,-4769 }, { 240,-4769 }, { 241,-4769 }, { 242,-4769 }, { 243,-4769 }, { 244,-4769 }, { 245,-4769 }, { 246,-4769 }, { 247,-4769 }, { 248,-4769 }, { 249,-4769 }, { 250,-4769 }, { 251,-4769 }, { 252,-4769 }, { 253,-4769 }, { 254,-4769 }, { 255,-4769 }, { 0, 69 }, { 0,5532 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-5026 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 43,-7078 }, { 0, 0 }, { 45,-7078 }, { 0, 0 }, { 0, 0 }, { 48,-4769 }, { 49,-4769 }, { 50,-4769 }, { 51,-4769 }, { 52,-4769 }, { 53,-4769 }, { 54,-4769 }, { 55,-4769 }, { 56,-4769 }, { 57,-4769 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-5026 }, { 66,-5026 }, { 67,-5026 }, { 68,-5026 }, { 69,-5026 }, { 70,-5026 }, { 71,-5026 }, { 72,-5026 }, { 73,-5026 }, { 74,-5026 }, { 75,-5026 }, { 76,-5026 }, { 77,-5026 }, { 78,-5026 }, { 79,-5026 }, { 80,-5026 }, { 81,-5026 }, { 82,-5026 }, { 83,-5026 }, { 84,-5026 }, { 85,-5026 }, { 86,-5026 }, { 87,-5026 }, { 88,-5026 }, { 89,-5026 }, { 90,-5026 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-5026 }, { 0, 0 }, { 97,-5026 }, { 98,-5026 }, { 99,-5026 }, { 100,-5026 }, { 101,-5026 }, { 102,-5026 }, { 103,-5026 }, { 104,-5026 }, { 105,-5026 }, { 106,-5026 }, { 107,-5026 }, { 108,-5026 }, { 109,-5026 }, { 110,-5026 }, { 111,-5026 }, { 112,-5026 }, { 113,-5026 }, { 114,-5026 }, { 115,-5026 }, { 116,-5026 }, { 117,-5026 }, { 118,-5026 }, { 119,-5026 }, { 120,-5026 }, { 121,-5026 }, { 122,-5026 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-5026 }, { 129,-5026 }, { 130,-5026 }, { 131,-5026 }, { 132,-5026 }, { 133,-5026 }, { 134,-5026 }, { 135,-5026 }, { 136,-5026 }, { 137,-5026 }, { 138,-5026 }, { 139,-5026 }, { 140,-5026 }, { 141,-5026 }, { 142,-5026 }, { 143,-5026 }, { 144,-5026 }, { 145,-5026 }, { 146,-5026 }, { 147,-5026 }, { 148,-5026 }, { 149,-5026 }, { 150,-5026 }, { 151,-5026 }, { 152,-5026 }, { 153,-5026 }, { 154,-5026 }, { 155,-5026 }, { 156,-5026 }, { 157,-5026 }, { 158,-5026 }, { 159,-5026 }, { 160,-5026 }, { 161,-5026 }, { 162,-5026 }, { 163,-5026 }, { 164,-5026 }, { 165,-5026 }, { 166,-5026 }, { 167,-5026 }, { 168,-5026 }, { 169,-5026 }, { 170,-5026 }, { 171,-5026 }, { 172,-5026 }, { 173,-5026 }, { 174,-5026 }, { 175,-5026 }, { 176,-5026 }, { 177,-5026 }, { 178,-5026 }, { 179,-5026 }, { 180,-5026 }, { 181,-5026 }, { 182,-5026 }, { 183,-5026 }, { 184,-5026 }, { 185,-5026 }, { 186,-5026 }, { 187,-5026 }, { 188,-5026 }, { 189,-5026 }, { 190,-5026 }, { 191,-5026 }, { 192,-5026 }, { 193,-5026 }, { 194,-5026 }, { 195,-5026 }, { 196,-5026 }, { 197,-5026 }, { 198,-5026 }, { 199,-5026 }, { 200,-5026 }, { 201,-5026 }, { 202,-5026 }, { 203,-5026 }, { 204,-5026 }, { 205,-5026 }, { 206,-5026 }, { 207,-5026 }, { 208,-5026 }, { 209,-5026 }, { 210,-5026 }, { 211,-5026 }, { 212,-5026 }, { 213,-5026 }, { 214,-5026 }, { 215,-5026 }, { 216,-5026 }, { 217,-5026 }, { 218,-5026 }, { 219,-5026 }, { 220,-5026 }, { 221,-5026 }, { 222,-5026 }, { 223,-5026 }, { 224,-5026 }, { 225,-5026 }, { 226,-5026 }, { 227,-5026 }, { 228,-5026 }, { 229,-5026 }, { 230,-5026 }, { 231,-5026 }, { 232,-5026 }, { 233,-5026 }, { 234,-5026 }, { 235,-5026 }, { 236,-5026 }, { 237,-5026 }, { 238,-5026 }, { 239,-5026 }, { 240,-5026 }, { 241,-5026 }, { 242,-5026 }, { 243,-5026 }, { 244,-5026 }, { 245,-5026 }, { 246,-5026 }, { 247,-5026 }, { 248,-5026 }, { 249,-5026 }, { 250,-5026 }, { 251,-5026 }, { 252,-5026 }, { 253,-5026 }, { 254,-5026 }, { 255,-5026 }, { 0, 69 }, { 0,5275 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-5283 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-4769 }, { 49,-4769 }, { 50,-4769 }, { 51,-4769 }, { 52,-4769 }, { 53,-4769 }, { 54,-4769 }, { 55,-4769 }, { 56,-4769 }, { 57,-4769 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-5283 }, { 66,-5283 }, { 67,-5283 }, { 68,-5283 }, { 69,-5283 }, { 70,-5283 }, { 71,-5283 }, { 72,-5283 }, { 73,-5283 }, { 74,-5283 }, { 75,-5283 }, { 76,-5283 }, { 77,-5283 }, { 78,-5283 }, { 79,-5283 }, { 80,-5283 }, { 81,-5283 }, { 82,-5283 }, { 83,-5283 }, { 84,-5283 }, { 85,-5283 }, { 86,-5283 }, { 87,-5283 }, { 88,-5283 }, { 89,-5283 }, { 90,-5283 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-5283 }, { 0, 0 }, { 97,-5283 }, { 98,-5283 }, { 99,-5283 }, { 100,-5283 }, { 101,-5283 }, { 102,-5283 }, { 103,-5283 }, { 104,-5283 }, { 105,-5283 }, { 106,-5283 }, { 107,-5283 }, { 108,-5283 }, { 109,-5283 }, { 110,-5283 }, { 111,-5283 }, { 112,-5283 }, { 113,-5283 }, { 114,-5283 }, { 115,-5283 }, { 116,-5283 }, { 117,-5283 }, { 118,-5283 }, { 119,-5283 }, { 120,-5283 }, { 121,-5283 }, { 122,-5283 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-5283 }, { 129,-5283 }, { 130,-5283 }, { 131,-5283 }, { 132,-5283 }, { 133,-5283 }, { 134,-5283 }, { 135,-5283 }, { 136,-5283 }, { 137,-5283 }, { 138,-5283 }, { 139,-5283 }, { 140,-5283 }, { 141,-5283 }, { 142,-5283 }, { 143,-5283 }, { 144,-5283 }, { 145,-5283 }, { 146,-5283 }, { 147,-5283 }, { 148,-5283 }, { 149,-5283 }, { 150,-5283 }, { 151,-5283 }, { 152,-5283 }, { 153,-5283 }, { 154,-5283 }, { 155,-5283 }, { 156,-5283 }, { 157,-5283 }, { 158,-5283 }, { 159,-5283 }, { 160,-5283 }, { 161,-5283 }, { 162,-5283 }, { 163,-5283 }, { 164,-5283 }, { 165,-5283 }, { 166,-5283 }, { 167,-5283 }, { 168,-5283 }, { 169,-5283 }, { 170,-5283 }, { 171,-5283 }, { 172,-5283 }, { 173,-5283 }, { 174,-5283 }, { 175,-5283 }, { 176,-5283 }, { 177,-5283 }, { 178,-5283 }, { 179,-5283 }, { 180,-5283 }, { 181,-5283 }, { 182,-5283 }, { 183,-5283 }, { 184,-5283 }, { 185,-5283 }, { 186,-5283 }, { 187,-5283 }, { 188,-5283 }, { 189,-5283 }, { 190,-5283 }, { 191,-5283 }, { 192,-5283 }, { 193,-5283 }, { 194,-5283 }, { 195,-5283 }, { 196,-5283 }, { 197,-5283 }, { 198,-5283 }, { 199,-5283 }, { 200,-5283 }, { 201,-5283 }, { 202,-5283 }, { 203,-5283 }, { 204,-5283 }, { 205,-5283 }, { 206,-5283 }, { 207,-5283 }, { 208,-5283 }, { 209,-5283 }, { 210,-5283 }, { 211,-5283 }, { 212,-5283 }, { 213,-5283 }, { 214,-5283 }, { 215,-5283 }, { 216,-5283 }, { 217,-5283 }, { 218,-5283 }, { 219,-5283 }, { 220,-5283 }, { 221,-5283 }, { 222,-5283 }, { 223,-5283 }, { 224,-5283 }, { 225,-5283 }, { 226,-5283 }, { 227,-5283 }, { 228,-5283 }, { 229,-5283 }, { 230,-5283 }, { 231,-5283 }, { 232,-5283 }, { 233,-5283 }, { 234,-5283 }, { 235,-5283 }, { 236,-5283 }, { 237,-5283 }, { 238,-5283 }, { 239,-5283 }, { 240,-5283 }, { 241,-5283 }, { 242,-5283 }, { 243,-5283 }, { 244,-5283 }, { 245,-5283 }, { 246,-5283 }, { 247,-5283 }, { 248,-5283 }, { 249,-5283 }, { 250,-5283 }, { 251,-5283 }, { 252,-5283 }, { 253,-5283 }, { 254,-5283 }, { 255,-5283 }, { 0, 64 }, { 0,5018 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-5540 }, { 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 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-771 }, { 66,-771 }, { 67,-771 }, { 68,-771 }, { 69,-514 }, { 70,-771 }, { 71,-771 }, { 72,-771 }, { 73,-771 }, { 74,-771 }, { 75,-771 }, { 76,-771 }, { 77,-771 }, { 78,-771 }, { 79,-771 }, { 80,-771 }, { 81,-771 }, { 82,-771 }, { 83,-771 }, { 84,-771 }, { 85,-771 }, { 86,-771 }, { 87,-771 }, { 88,-771 }, { 89,-771 }, { 90,-771 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,2199 }, { 0, 0 }, { 97,-771 }, { 98,-771 }, { 99,-771 }, { 100,-771 }, { 101,-514 }, { 102,-771 }, { 103,-771 }, { 104,-771 }, { 105,-771 }, { 106,-771 }, { 107,-771 }, { 108,-771 }, { 109,-771 }, { 110,-771 }, { 111,-771 }, { 112,-771 }, { 113,-771 }, { 114,-771 }, { 115,-771 }, { 116,-771 }, { 117,-771 }, { 118,-771 }, { 119,-771 }, { 120,-771 }, { 121,-771 }, { 122,-771 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-771 }, { 129,-771 }, { 130,-771 }, { 131,-771 }, { 132,-771 }, { 133,-771 }, { 134,-771 }, { 135,-771 }, { 136,-771 }, { 137,-771 }, { 138,-771 }, { 139,-771 }, { 140,-771 }, { 141,-771 }, { 142,-771 }, { 143,-771 }, { 144,-771 }, { 145,-771 }, { 146,-771 }, { 147,-771 }, { 148,-771 }, { 149,-771 }, { 150,-771 }, { 151,-771 }, { 152,-771 }, { 153,-771 }, { 154,-771 }, { 155,-771 }, { 156,-771 }, { 157,-771 }, { 158,-771 }, { 159,-771 }, { 160,-771 }, { 161,-771 }, { 162,-771 }, { 163,-771 }, { 164,-771 }, { 165,-771 }, { 166,-771 }, { 167,-771 }, { 168,-771 }, { 169,-771 }, { 170,-771 }, { 171,-771 }, { 172,-771 }, { 173,-771 }, { 174,-771 }, { 175,-771 }, { 176,-771 }, { 177,-771 }, { 178,-771 }, { 179,-771 }, { 180,-771 }, { 181,-771 }, { 182,-771 }, { 183,-771 }, { 184,-771 }, { 185,-771 }, { 186,-771 }, { 187,-771 }, { 188,-771 }, { 189,-771 }, { 190,-771 }, { 191,-771 }, { 192,-771 }, { 193,-771 }, { 194,-771 }, { 195,-771 }, { 196,-771 }, { 197,-771 }, { 198,-771 }, { 199,-771 }, { 200,-771 }, { 201,-771 }, { 202,-771 }, { 203,-771 }, { 204,-771 }, { 205,-771 }, { 206,-771 }, { 207,-771 }, { 208,-771 }, { 209,-771 }, { 210,-771 }, { 211,-771 }, { 212,-771 }, { 213,-771 }, { 214,-771 }, { 215,-771 }, { 216,-771 }, { 217,-771 }, { 218,-771 }, { 219,-771 }, { 220,-771 }, { 221,-771 }, { 222,-771 }, { 223,-771 }, { 224,-771 }, { 225,-771 }, { 226,-771 }, { 227,-771 }, { 228,-771 }, { 229,-771 }, { 230,-771 }, { 231,-771 }, { 232,-771 }, { 233,-771 }, { 234,-771 }, { 235,-771 }, { 236,-771 }, { 237,-771 }, { 238,-771 }, { 239,-771 }, { 240,-771 }, { 241,-771 }, { 242,-771 }, { 243,-771 }, { 244,-771 }, { 245,-771 }, { 246,-771 }, { 247,-771 }, { 248,-771 }, { 249,-771 }, { 250,-771 }, { 251,-771 }, { 252,-771 }, { 253,-771 }, { 254,-771 }, { 255,-771 }, { 0, 66 }, { 0,4761 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 257 }, { 66, 257 }, { 67, 257 }, { 68, 257 }, { 69, 257 }, { 70, 257 }, { 71, 257 }, { 72, 257 }, { 73, 257 }, { 74, 257 }, { 75, 257 }, { 76, 257 }, { 77, 257 }, { 78, 257 }, { 79, 257 }, { 80, 257 }, { 81, 257 }, { 82, 257 }, { 83, 257 }, { 84, 257 }, { 85, 257 }, { 86, 257 }, { 87, 257 }, { 88, 257 }, { 89, 257 }, { 90, 257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95, 514 }, { 0, 0 }, { 97, 257 }, { 98, 257 }, { 99, 257 }, { 100, 257 }, { 101, 257 }, { 102, 257 }, { 103, 257 }, { 104, 257 }, { 105, 257 }, { 106, 257 }, { 107, 257 }, { 108, 257 }, { 109, 257 }, { 110, 257 }, { 111, 257 }, { 112, 257 }, { 113, 257 }, { 114, 257 }, { 115, 257 }, { 116, 257 }, { 117, 257 }, { 118, 257 }, { 119, 257 }, { 120, 257 }, { 121, 257 }, { 122, 257 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128, 257 }, { 129, 257 }, { 130, 257 }, { 131, 257 }, { 132, 257 }, { 133, 257 }, { 134, 257 }, { 135, 257 }, { 136, 257 }, { 137, 257 }, { 138, 257 }, { 139, 257 }, { 140, 257 }, { 141, 257 }, { 142, 257 }, { 143, 257 }, { 144, 257 }, { 145, 257 }, { 146, 257 }, { 147, 257 }, { 148, 257 }, { 149, 257 }, { 150, 257 }, { 151, 257 }, { 152, 257 }, { 153, 257 }, { 154, 257 }, { 155, 257 }, { 156, 257 }, { 157, 257 }, { 158, 257 }, { 159, 257 }, { 160, 257 }, { 161, 257 }, { 162, 257 }, { 163, 257 }, { 164, 257 }, { 165, 257 }, { 166, 257 }, { 167, 257 }, { 168, 257 }, { 169, 257 }, { 170, 257 }, { 171, 257 }, { 172, 257 }, { 173, 257 }, { 174, 257 }, { 175, 257 }, { 176, 257 }, { 177, 257 }, { 178, 257 }, { 179, 257 }, { 180, 257 }, { 181, 257 }, { 182, 257 }, { 183, 257 }, { 184, 257 }, { 185, 257 }, { 186, 257 }, { 187, 257 }, { 188, 257 }, { 189, 257 }, { 190, 257 }, { 191, 257 }, { 192, 257 }, { 193, 257 }, { 194, 257 }, { 195, 257 }, { 196, 257 }, { 197, 257 }, { 198, 257 }, { 199, 257 }, { 200, 257 }, { 201, 257 }, { 202, 257 }, { 203, 257 }, { 204, 257 }, { 205, 257 }, { 206, 257 }, { 207, 257 }, { 208, 257 }, { 209, 257 }, { 210, 257 }, { 211, 257 }, { 212, 257 }, { 213, 257 }, { 214, 257 }, { 215, 257 }, { 216, 257 }, { 217, 257 }, { 218, 257 }, { 219, 257 }, { 220, 257 }, { 221, 257 }, { 222, 257 }, { 223, 257 }, { 224, 257 }, { 225, 257 }, { 226, 257 }, { 227, 257 }, { 228, 257 }, { 229, 257 }, { 230, 257 }, { 231, 257 }, { 232, 257 }, { 233, 257 }, { 234, 257 }, { 235, 257 }, { 236, 257 }, { 237, 257 }, { 238, 257 }, { 239, 257 }, { 240, 257 }, { 241, 257 }, { 242, 257 }, { 243, 257 }, { 244, 257 }, { 245, 257 }, { 246, 257 }, { 247, 257 }, { 248, 257 }, { 249, 257 }, { 250, 257 }, { 251, 257 }, { 252, 257 }, { 253, 257 }, { 254, 257 }, { 255, 257 }, { 0, 70 }, { 0,4504 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,1942 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,1942 }, { 49,1942 }, { 50,1942 }, { 51,1942 }, { 52,1942 }, { 53,1942 }, { 54,1942 }, { 55,1942 }, { 56,1942 }, { 57,1942 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1942 }, { 66,1942 }, { 67,1942 }, { 68,1942 }, { 69,1942 }, { 70,1942 }, { 71,1942 }, { 72,1942 }, { 73,1942 }, { 74,1942 }, { 75,1942 }, { 76,1942 }, { 77,1942 }, { 78,1942 }, { 79,1942 }, { 80,1942 }, { 81,1942 }, { 82,1942 }, { 83,1942 }, { 84,1942 }, { 85,1942 }, { 86,1942 }, { 87,1942 }, { 88,1942 }, { 89,1942 }, { 90,1942 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,1942 }, { 0, 0 }, { 97,1942 }, { 98,1942 }, { 99,1942 }, { 100,1942 }, { 101,1942 }, { 102,1942 }, { 103,1942 }, { 104,1942 }, { 105,1942 }, { 106,1942 }, { 107,1942 }, { 108,1942 }, { 109,1942 }, { 110,1942 }, { 111,1942 }, { 112,1942 }, { 113,1942 }, { 114,1942 }, { 115,1942 }, { 116,1942 }, { 117,1942 }, { 118,1942 }, { 119,1942 }, { 120,1942 }, { 121,1942 }, { 122,1942 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,1942 }, { 129,1942 }, { 130,1942 }, { 131,1942 }, { 132,1942 }, { 133,1942 }, { 134,1942 }, { 135,1942 }, { 136,1942 }, { 137,1942 }, { 138,1942 }, { 139,1942 }, { 140,1942 }, { 141,1942 }, { 142,1942 }, { 143,1942 }, { 144,1942 }, { 145,1942 }, { 146,1942 }, { 147,1942 }, { 148,1942 }, { 149,1942 }, { 150,1942 }, { 151,1942 }, { 152,1942 }, { 153,1942 }, { 154,1942 }, { 155,1942 }, { 156,1942 }, { 157,1942 }, { 158,1942 }, { 159,1942 }, { 160,1942 }, { 161,1942 }, { 162,1942 }, { 163,1942 }, { 164,1942 }, { 165,1942 }, { 166,1942 }, { 167,1942 }, { 168,1942 }, { 169,1942 }, { 170,1942 }, { 171,1942 }, { 172,1942 }, { 173,1942 }, { 174,1942 }, { 175,1942 }, { 176,1942 }, { 177,1942 }, { 178,1942 }, { 179,1942 }, { 180,1942 }, { 181,1942 }, { 182,1942 }, { 183,1942 }, { 184,1942 }, { 185,1942 }, { 186,1942 }, { 187,1942 }, { 188,1942 }, { 189,1942 }, { 190,1942 }, { 191,1942 }, { 192,1942 }, { 193,1942 }, { 194,1942 }, { 195,1942 }, { 196,1942 }, { 197,1942 }, { 198,1942 }, { 199,1942 }, { 200,1942 }, { 201,1942 }, { 202,1942 }, { 203,1942 }, { 204,1942 }, { 205,1942 }, { 206,1942 }, { 207,1942 }, { 208,1942 }, { 209,1942 }, { 210,1942 }, { 211,1942 }, { 212,1942 }, { 213,1942 }, { 214,1942 }, { 215,1942 }, { 216,1942 }, { 217,1942 }, { 218,1942 }, { 219,1942 }, { 220,1942 }, { 221,1942 }, { 222,1942 }, { 223,1942 }, { 224,1942 }, { 225,1942 }, { 226,1942 }, { 227,1942 }, { 228,1942 }, { 229,1942 }, { 230,1942 }, { 231,1942 }, { 232,1942 }, { 233,1942 }, { 234,1942 }, { 235,1942 }, { 236,1942 }, { 237,1942 }, { 238,1942 }, { 239,1942 }, { 240,1942 }, { 241,1942 }, { 242,1942 }, { 243,1942 }, { 244,1942 }, { 245,1942 }, { 246,1942 }, { 247,1942 }, { 248,1942 }, { 249,1942 }, { 250,1942 }, { 251,1942 }, { 252,1942 }, { 253,1942 }, { 254,1942 }, { 255,1942 }, { 0, 70 }, { 0,4247 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,1685 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,1942 }, { 49,1942 }, { 50,1942 }, { 51,1942 }, { 52,1942 }, { 53,1942 }, { 54,1942 }, { 55,1942 }, { 56,1942 }, { 57,1942 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1685 }, { 66,1685 }, { 67,1685 }, { 68,1685 }, { 69,1685 }, { 70,1685 }, { 71,1685 }, { 72,1685 }, { 73,1685 }, { 74,1685 }, { 75,1685 }, { 76,1685 }, { 77,1685 }, { 78,1685 }, { 79,1685 }, { 80,1685 }, { 81,1685 }, { 82,1685 }, { 83,1685 }, { 84,1685 }, { 85,1685 }, { 86,1685 }, { 87,1685 }, { 88,1685 }, { 89,1685 }, { 90,1685 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,1685 }, { 0, 0 }, { 97,1685 }, { 98,1685 }, { 99,1685 }, { 100,1685 }, { 101,1685 }, { 102,1685 }, { 103,1685 }, { 104,1685 }, { 105,1685 }, { 106,1685 }, { 107,1685 }, { 108,1685 }, { 109,1685 }, { 110,1685 }, { 111,1685 }, { 112,1685 }, { 113,1685 }, { 114,1685 }, { 115,1685 }, { 116,1685 }, { 117,1685 }, { 118,1685 }, { 119,1685 }, { 120,1685 }, { 121,1685 }, { 122,1685 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,1685 }, { 129,1685 }, { 130,1685 }, { 131,1685 }, { 132,1685 }, { 133,1685 }, { 134,1685 }, { 135,1685 }, { 136,1685 }, { 137,1685 }, { 138,1685 }, { 139,1685 }, { 140,1685 }, { 141,1685 }, { 142,1685 }, { 143,1685 }, { 144,1685 }, { 145,1685 }, { 146,1685 }, { 147,1685 }, { 148,1685 }, { 149,1685 }, { 150,1685 }, { 151,1685 }, { 152,1685 }, { 153,1685 }, { 154,1685 }, { 155,1685 }, { 156,1685 }, { 157,1685 }, { 158,1685 }, { 159,1685 }, { 160,1685 }, { 161,1685 }, { 162,1685 }, { 163,1685 }, { 164,1685 }, { 165,1685 }, { 166,1685 }, { 167,1685 }, { 168,1685 }, { 169,1685 }, { 170,1685 }, { 171,1685 }, { 172,1685 }, { 173,1685 }, { 174,1685 }, { 175,1685 }, { 176,1685 }, { 177,1685 }, { 178,1685 }, { 179,1685 }, { 180,1685 }, { 181,1685 }, { 182,1685 }, { 183,1685 }, { 184,1685 }, { 185,1685 }, { 186,1685 }, { 187,1685 }, { 188,1685 }, { 189,1685 }, { 190,1685 }, { 191,1685 }, { 192,1685 }, { 193,1685 }, { 194,1685 }, { 195,1685 }, { 196,1685 }, { 197,1685 }, { 198,1685 }, { 199,1685 }, { 200,1685 }, { 201,1685 }, { 202,1685 }, { 203,1685 }, { 204,1685 }, { 205,1685 }, { 206,1685 }, { 207,1685 }, { 208,1685 }, { 209,1685 }, { 210,1685 }, { 211,1685 }, { 212,1685 }, { 213,1685 }, { 214,1685 }, { 215,1685 }, { 216,1685 }, { 217,1685 }, { 218,1685 }, { 219,1685 }, { 220,1685 }, { 221,1685 }, { 222,1685 }, { 223,1685 }, { 224,1685 }, { 225,1685 }, { 226,1685 }, { 227,1685 }, { 228,1685 }, { 229,1685 }, { 230,1685 }, { 231,1685 }, { 232,1685 }, { 233,1685 }, { 234,1685 }, { 235,1685 }, { 236,1685 }, { 237,1685 }, { 238,1685 }, { 239,1685 }, { 240,1685 }, { 241,1685 }, { 242,1685 }, { 243,1685 }, { 244,1685 }, { 245,1685 }, { 246,1685 }, { 247,1685 }, { 248,1685 }, { 249,1685 }, { 250,1685 }, { 251,1685 }, { 252,1685 }, { 253,1685 }, { 254,1685 }, { 255,1685 }, { 0, 68 }, { 0,3990 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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, 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 }, { 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, 66 }, { 0,3733 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-257 }, { 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 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1685 }, { 66,1685 }, { 67,1685 }, { 68,1685 }, { 69,1685 }, { 70,1685 }, { 71,1685 }, { 72,1685 }, { 73,1685 }, { 74,1685 }, { 75,1685 }, { 76,1685 }, { 77,1685 }, { 78,1685 }, { 79,1685 }, { 80,1685 }, { 81,1685 }, { 82,1685 }, { 83,1685 }, { 84,1685 }, { 85,1685 }, { 86,1685 }, { 87,1685 }, { 88,1685 }, { 89,1685 }, { 90,1685 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,1942 }, { 0, 0 }, { 97,1685 }, { 98,1685 }, { 99,1685 }, { 100,1685 }, { 101,1685 }, { 102,1685 }, { 103,1685 }, { 104,1685 }, { 105,1685 }, { 106,1685 }, { 107,1685 }, { 108,1685 }, { 109,1685 }, { 110,1685 }, { 111,1685 }, { 112,1685 }, { 113,1685 }, { 114,1685 }, { 115,1685 }, { 116,1685 }, { 117,1685 }, { 118,1685 }, { 119,1685 }, { 120,1685 }, { 121,1685 }, { 122,1685 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,1685 }, { 129,1685 }, { 130,1685 }, { 131,1685 }, { 132,1685 }, { 133,1685 }, { 134,1685 }, { 135,1685 }, { 136,1685 }, { 137,1685 }, { 138,1685 }, { 139,1685 }, { 140,1685 }, { 141,1685 }, { 142,1685 }, { 143,1685 }, { 144,1685 }, { 145,1685 }, { 146,1685 }, { 147,1685 }, { 148,1685 }, { 149,1685 }, { 150,1685 }, { 151,1685 }, { 152,1685 }, { 153,1685 }, { 154,1685 }, { 155,1685 }, { 156,1685 }, { 157,1685 }, { 158,1685 }, { 159,1685 }, { 160,1685 }, { 161,1685 }, { 162,1685 }, { 163,1685 }, { 164,1685 }, { 165,1685 }, { 166,1685 }, { 167,1685 }, { 168,1685 }, { 169,1685 }, { 170,1685 }, { 171,1685 }, { 172,1685 }, { 173,1685 }, { 174,1685 }, { 175,1685 }, { 176,1685 }, { 177,1685 }, { 178,1685 }, { 179,1685 }, { 180,1685 }, { 181,1685 }, { 182,1685 }, { 183,1685 }, { 184,1685 }, { 185,1685 }, { 186,1685 }, { 187,1685 }, { 188,1685 }, { 189,1685 }, { 190,1685 }, { 191,1685 }, { 192,1685 }, { 193,1685 }, { 194,1685 }, { 195,1685 }, { 196,1685 }, { 197,1685 }, { 198,1685 }, { 199,1685 }, { 200,1685 }, { 201,1685 }, { 202,1685 }, { 203,1685 }, { 204,1685 }, { 205,1685 }, { 206,1685 }, { 207,1685 }, { 208,1685 }, { 209,1685 }, { 210,1685 }, { 211,1685 }, { 212,1685 }, { 213,1685 }, { 214,1685 }, { 215,1685 }, { 216,1685 }, { 217,1685 }, { 218,1685 }, { 219,1685 }, { 220,1685 }, { 221,1685 }, { 222,1685 }, { 223,1685 }, { 224,1685 }, { 225,1685 }, { 226,1685 }, { 227,1685 }, { 228,1685 }, { 229,1685 }, { 230,1685 }, { 231,1685 }, { 232,1685 }, { 233,1685 }, { 234,1685 }, { 235,1685 }, { 236,1685 }, { 237,1685 }, { 238,1685 }, { 239,1685 }, { 240,1685 }, { 241,1685 }, { 242,1685 }, { 243,1685 }, { 244,1685 }, { 245,1685 }, { 246,1685 }, { 247,1685 }, { 248,1685 }, { 249,1685 }, { 250,1685 }, { 251,1685 }, { 252,1685 }, { 253,1685 }, { 254,1685 }, { 255,1685 }, { 0, 28 }, { 0,3476 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 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,3453 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,1942 }, { 49,1942 }, { 50,1942 }, { 51,1942 }, { 52,1942 }, { 53,1942 }, { 54,1942 }, { 55,1942 }, { 56,1942 }, { 57,1942 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0,3415 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1942 }, { 66,1942 }, { 67,1942 }, { 68,1942 }, { 69,1942 }, { 70,1942 }, { 48,-23334 }, { 49,-23334 }, { 50,-23334 }, { 51,-23334 }, { 52,-23334 }, { 53,-23334 }, { 54,-23334 }, { 55,-23334 }, { 56,-23334 }, { 57,-23334 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0,3392 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-23334 }, { 66,-23334 }, { 67,-23334 }, { 68,-23334 }, { 69,-23334 }, { 70,-23334 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,1942 }, { 98,1942 }, { 99,1942 }, { 100,1942 }, { 101,1942 }, { 102,1942 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,1904 }, { 49,1904 }, { 50,1904 }, { 51,1904 }, { 52,1904 }, { 53,1904 }, { 54,1904 }, { 55,1904 }, { 56,1904 }, { 57,1904 }, { 0, 0 }, { 97,-23334 }, { 98,-23334 }, { 99,-23334 }, { 100,-23334 }, { 101,-23334 }, { 102,-23334 }, { 65,1904 }, { 66,1904 }, { 67,1904 }, { 68,1904 }, { 69,1904 }, { 70,1904 }, { 48,-23393 }, { 49,-23393 }, { 50,-23393 }, { 51,-23393 }, { 52,-23393 }, { 53,-23393 }, { 54,-23393 }, { 55,-23393 }, { 56,-23393 }, { 57,-23393 }, { 0, 69 }, { 0,3333 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-23393 }, { 66,-23393 }, { 67,-23393 }, { 68,-23393 }, { 69,-23393 }, { 70,-23393 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,1904 }, { 98,1904 }, { 99,1904 }, { 100,1904 }, { 101,1904 }, { 102,1904 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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, 0 }, { 0, 0 }, { 97,-23393 }, { 98,-23393 }, { 99,-23393 }, { 100,-23393 }, { 101,-23393 }, { 102,-23393 }, { 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, 66 }, { 0,3076 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-257 }, { 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 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1624 }, { 66,1624 }, { 67,1624 }, { 68,1624 }, { 69,1624 }, { 70,1624 }, { 71,1624 }, { 72,1624 }, { 73,1624 }, { 74,1624 }, { 75,1624 }, { 76,1624 }, { 77,1624 }, { 78,1624 }, { 79,1624 }, { 80,1624 }, { 81,1624 }, { 82,1624 }, { 83,1624 }, { 84,1624 }, { 85,1624 }, { 86,1624 }, { 87,1624 }, { 88,1624 }, { 89,1624 }, { 90,1624 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,1881 }, { 0, 0 }, { 97,1624 }, { 98,1624 }, { 99,1624 }, { 100,1624 }, { 101,1624 }, { 102,1624 }, { 103,1624 }, { 104,1624 }, { 105,1624 }, { 106,1624 }, { 107,1624 }, { 108,1624 }, { 109,1624 }, { 110,1624 }, { 111,1624 }, { 112,1624 }, { 113,1624 }, { 114,1624 }, { 115,1624 }, { 116,1624 }, { 117,1624 }, { 118,1624 }, { 119,1624 }, { 120,1624 }, { 121,1624 }, { 122,1624 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,1624 }, { 129,1624 }, { 130,1624 }, { 131,1624 }, { 132,1624 }, { 133,1624 }, { 134,1624 }, { 135,1624 }, { 136,1624 }, { 137,1624 }, { 138,1624 }, { 139,1624 }, { 140,1624 }, { 141,1624 }, { 142,1624 }, { 143,1624 }, { 144,1624 }, { 145,1624 }, { 146,1624 }, { 147,1624 }, { 148,1624 }, { 149,1624 }, { 150,1624 }, { 151,1624 }, { 152,1624 }, { 153,1624 }, { 154,1624 }, { 155,1624 }, { 156,1624 }, { 157,1624 }, { 158,1624 }, { 159,1624 }, { 160,1624 }, { 161,1624 }, { 162,1624 }, { 163,1624 }, { 164,1624 }, { 165,1624 }, { 166,1624 }, { 167,1624 }, { 168,1624 }, { 169,1624 }, { 170,1624 }, { 171,1624 }, { 172,1624 }, { 173,1624 }, { 174,1624 }, { 175,1624 }, { 176,1624 }, { 177,1624 }, { 178,1624 }, { 179,1624 }, { 180,1624 }, { 181,1624 }, { 182,1624 }, { 183,1624 }, { 184,1624 }, { 185,1624 }, { 186,1624 }, { 187,1624 }, { 188,1624 }, { 189,1624 }, { 190,1624 }, { 191,1624 }, { 192,1624 }, { 193,1624 }, { 194,1624 }, { 195,1624 }, { 196,1624 }, { 197,1624 }, { 198,1624 }, { 199,1624 }, { 200,1624 }, { 201,1624 }, { 202,1624 }, { 203,1624 }, { 204,1624 }, { 205,1624 }, { 206,1624 }, { 207,1624 }, { 208,1624 }, { 209,1624 }, { 210,1624 }, { 211,1624 }, { 212,1624 }, { 213,1624 }, { 214,1624 }, { 215,1624 }, { 216,1624 }, { 217,1624 }, { 218,1624 }, { 219,1624 }, { 220,1624 }, { 221,1624 }, { 222,1624 }, { 223,1624 }, { 224,1624 }, { 225,1624 }, { 226,1624 }, { 227,1624 }, { 228,1624 }, { 229,1624 }, { 230,1624 }, { 231,1624 }, { 232,1624 }, { 233,1624 }, { 234,1624 }, { 235,1624 }, { 236,1624 }, { 237,1624 }, { 238,1624 }, { 239,1624 }, { 240,1624 }, { 241,1624 }, { 242,1624 }, { 243,1624 }, { 244,1624 }, { 245,1624 }, { 246,1624 }, { 247,1624 }, { 248,1624 }, { 249,1624 }, { 250,1624 }, { 251,1624 }, { 252,1624 }, { 253,1624 }, { 254,1624 }, { 255,1624 }, { 0, 69 }, { 0,2819 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-7739 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-2199 }, { 49,-2199 }, { 50,-2199 }, { 51,-2199 }, { 52,-2199 }, { 53,-2199 }, { 54,-2199 }, { 55,-2199 }, { 56,-2199 }, { 57,-2199 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-7739 }, { 66,-7739 }, { 67,-7739 }, { 68,-7739 }, { 69,-7739 }, { 70,-7739 }, { 71,-7739 }, { 72,-7739 }, { 73,-7739 }, { 74,-7739 }, { 75,-7739 }, { 76,-7739 }, { 77,-7739 }, { 78,-7739 }, { 79,-7739 }, { 80,-7739 }, { 81,-7739 }, { 82,-7739 }, { 83,-7739 }, { 84,-7739 }, { 85,-7739 }, { 86,-7739 }, { 87,-7739 }, { 88,-7739 }, { 89,-7739 }, { 90,-7739 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-7739 }, { 0, 0 }, { 97,-7739 }, { 98,-7739 }, { 99,-7739 }, { 100,-7739 }, { 101,-7739 }, { 102,-7739 }, { 103,-7739 }, { 104,-7739 }, { 105,-7739 }, { 106,-7739 }, { 107,-7739 }, { 108,-7739 }, { 109,-7739 }, { 110,-7739 }, { 111,-7739 }, { 112,-7739 }, { 113,-7739 }, { 114,-7739 }, { 115,-7739 }, { 116,-7739 }, { 117,-7739 }, { 118,-7739 }, { 119,-7739 }, { 120,-7739 }, { 121,-7739 }, { 122,-7739 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-7739 }, { 129,-7739 }, { 130,-7739 }, { 131,-7739 }, { 132,-7739 }, { 133,-7739 }, { 134,-7739 }, { 135,-7739 }, { 136,-7739 }, { 137,-7739 }, { 138,-7739 }, { 139,-7739 }, { 140,-7739 }, { 141,-7739 }, { 142,-7739 }, { 143,-7739 }, { 144,-7739 }, { 145,-7739 }, { 146,-7739 }, { 147,-7739 }, { 148,-7739 }, { 149,-7739 }, { 150,-7739 }, { 151,-7739 }, { 152,-7739 }, { 153,-7739 }, { 154,-7739 }, { 155,-7739 }, { 156,-7739 }, { 157,-7739 }, { 158,-7739 }, { 159,-7739 }, { 160,-7739 }, { 161,-7739 }, { 162,-7739 }, { 163,-7739 }, { 164,-7739 }, { 165,-7739 }, { 166,-7739 }, { 167,-7739 }, { 168,-7739 }, { 169,-7739 }, { 170,-7739 }, { 171,-7739 }, { 172,-7739 }, { 173,-7739 }, { 174,-7739 }, { 175,-7739 }, { 176,-7739 }, { 177,-7739 }, { 178,-7739 }, { 179,-7739 }, { 180,-7739 }, { 181,-7739 }, { 182,-7739 }, { 183,-7739 }, { 184,-7739 }, { 185,-7739 }, { 186,-7739 }, { 187,-7739 }, { 188,-7739 }, { 189,-7739 }, { 190,-7739 }, { 191,-7739 }, { 192,-7739 }, { 193,-7739 }, { 194,-7739 }, { 195,-7739 }, { 196,-7739 }, { 197,-7739 }, { 198,-7739 }, { 199,-7739 }, { 200,-7739 }, { 201,-7739 }, { 202,-7739 }, { 203,-7739 }, { 204,-7739 }, { 205,-7739 }, { 206,-7739 }, { 207,-7739 }, { 208,-7739 }, { 209,-7739 }, { 210,-7739 }, { 211,-7739 }, { 212,-7739 }, { 213,-7739 }, { 214,-7739 }, { 215,-7739 }, { 216,-7739 }, { 217,-7739 }, { 218,-7739 }, { 219,-7739 }, { 220,-7739 }, { 221,-7739 }, { 222,-7739 }, { 223,-7739 }, { 224,-7739 }, { 225,-7739 }, { 226,-7739 }, { 227,-7739 }, { 228,-7739 }, { 229,-7739 }, { 230,-7739 }, { 231,-7739 }, { 232,-7739 }, { 233,-7739 }, { 234,-7739 }, { 235,-7739 }, { 236,-7739 }, { 237,-7739 }, { 238,-7739 }, { 239,-7739 }, { 240,-7739 }, { 241,-7739 }, { 242,-7739 }, { 243,-7739 }, { 244,-7739 }, { 245,-7739 }, { 246,-7739 }, { 247,-7739 }, { 248,-7739 }, { 249,-7739 }, { 250,-7739 }, { 251,-7739 }, { 252,-7739 }, { 253,-7739 }, { 254,-7739 }, { 255,-7739 }, { 0, 70 }, { 0,2562 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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, 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 }, { 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, 66 }, { 0,2305 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-257 }, { 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 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1367 }, { 66,1367 }, { 67,1367 }, { 68,1367 }, { 69,1367 }, { 70,1367 }, { 71,1367 }, { 72,1367 }, { 73,1367 }, { 74,1367 }, { 75,1367 }, { 76,1367 }, { 77,1367 }, { 78,1367 }, { 79,1367 }, { 80,1367 }, { 81,1367 }, { 82,1367 }, { 83,1367 }, { 84,1367 }, { 85,1367 }, { 86,1367 }, { 87,1367 }, { 88,1367 }, { 89,1367 }, { 90,1367 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,1624 }, { 0, 0 }, { 97,1367 }, { 98,1367 }, { 99,1367 }, { 100,1367 }, { 101,1367 }, { 102,1367 }, { 103,1367 }, { 104,1367 }, { 105,1367 }, { 106,1367 }, { 107,1367 }, { 108,1367 }, { 109,1367 }, { 110,1367 }, { 111,1367 }, { 112,1367 }, { 113,1367 }, { 114,1367 }, { 115,1367 }, { 116,1367 }, { 117,1367 }, { 118,1367 }, { 119,1367 }, { 120,1367 }, { 121,1367 }, { 122,1367 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,1367 }, { 129,1367 }, { 130,1367 }, { 131,1367 }, { 132,1367 }, { 133,1367 }, { 134,1367 }, { 135,1367 }, { 136,1367 }, { 137,1367 }, { 138,1367 }, { 139,1367 }, { 140,1367 }, { 141,1367 }, { 142,1367 }, { 143,1367 }, { 144,1367 }, { 145,1367 }, { 146,1367 }, { 147,1367 }, { 148,1367 }, { 149,1367 }, { 150,1367 }, { 151,1367 }, { 152,1367 }, { 153,1367 }, { 154,1367 }, { 155,1367 }, { 156,1367 }, { 157,1367 }, { 158,1367 }, { 159,1367 }, { 160,1367 }, { 161,1367 }, { 162,1367 }, { 163,1367 }, { 164,1367 }, { 165,1367 }, { 166,1367 }, { 167,1367 }, { 168,1367 }, { 169,1367 }, { 170,1367 }, { 171,1367 }, { 172,1367 }, { 173,1367 }, { 174,1367 }, { 175,1367 }, { 176,1367 }, { 177,1367 }, { 178,1367 }, { 179,1367 }, { 180,1367 }, { 181,1367 }, { 182,1367 }, { 183,1367 }, { 184,1367 }, { 185,1367 }, { 186,1367 }, { 187,1367 }, { 188,1367 }, { 189,1367 }, { 190,1367 }, { 191,1367 }, { 192,1367 }, { 193,1367 }, { 194,1367 }, { 195,1367 }, { 196,1367 }, { 197,1367 }, { 198,1367 }, { 199,1367 }, { 200,1367 }, { 201,1367 }, { 202,1367 }, { 203,1367 }, { 204,1367 }, { 205,1367 }, { 206,1367 }, { 207,1367 }, { 208,1367 }, { 209,1367 }, { 210,1367 }, { 211,1367 }, { 212,1367 }, { 213,1367 }, { 214,1367 }, { 215,1367 }, { 216,1367 }, { 217,1367 }, { 218,1367 }, { 219,1367 }, { 220,1367 }, { 221,1367 }, { 222,1367 }, { 223,1367 }, { 224,1367 }, { 225,1367 }, { 226,1367 }, { 227,1367 }, { 228,1367 }, { 229,1367 }, { 230,1367 }, { 231,1367 }, { 232,1367 }, { 233,1367 }, { 234,1367 }, { 235,1367 }, { 236,1367 }, { 237,1367 }, { 238,1367 }, { 239,1367 }, { 240,1367 }, { 241,1367 }, { 242,1367 }, { 243,1367 }, { 244,1367 }, { 245,1367 }, { 246,1367 }, { 247,1367 }, { 248,1367 }, { 249,1367 }, { 250,1367 }, { 251,1367 }, { 252,1367 }, { 253,1367 }, { 254,1367 }, { 255,1367 }, { 0, 68 }, { 0,2048 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-1942 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-1942 }, { 49,-1942 }, { 50,-1942 }, { 51,-1942 }, { 52,-1942 }, { 53,-1942 }, { 54,-1942 }, { 55,-1942 }, { 56,-1942 }, { 57,-1942 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-1942 }, { 66,-1942 }, { 67,-1942 }, { 68,-1942 }, { 69,-1942 }, { 70,-1942 }, { 71,-1942 }, { 72,-1942 }, { 73,-1942 }, { 74,-1942 }, { 75,-1942 }, { 76,-1942 }, { 77,-1942 }, { 78,-1942 }, { 79,-1942 }, { 80,-1942 }, { 81,-1942 }, { 82,-1942 }, { 83,-1942 }, { 84,-1942 }, { 85,-1942 }, { 86,-1942 }, { 87,-1942 }, { 88,-1942 }, { 89,-1942 }, { 90,-1942 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-1942 }, { 0, 0 }, { 97,-1942 }, { 98,-1942 }, { 99,-1942 }, { 100,-1942 }, { 101,-1942 }, { 102,-1942 }, { 103,-1942 }, { 104,-1942 }, { 105,-1942 }, { 106,-1942 }, { 107,-1942 }, { 108,-1942 }, { 109,-1942 }, { 110,-1942 }, { 111,-1942 }, { 112,-1942 }, { 113,-1942 }, { 114,-1942 }, { 115,-1942 }, { 116,-1942 }, { 117,-1942 }, { 118,-1942 }, { 119,-1942 }, { 120,-1942 }, { 121,-1942 }, { 122,-1942 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-1942 }, { 129,-1942 }, { 130,-1942 }, { 131,-1942 }, { 132,-1942 }, { 133,-1942 }, { 134,-1942 }, { 135,-1942 }, { 136,-1942 }, { 137,-1942 }, { 138,-1942 }, { 139,-1942 }, { 140,-1942 }, { 141,-1942 }, { 142,-1942 }, { 143,-1942 }, { 144,-1942 }, { 145,-1942 }, { 146,-1942 }, { 147,-1942 }, { 148,-1942 }, { 149,-1942 }, { 150,-1942 }, { 151,-1942 }, { 152,-1942 }, { 153,-1942 }, { 154,-1942 }, { 155,-1942 }, { 156,-1942 }, { 157,-1942 }, { 158,-1942 }, { 159,-1942 }, { 160,-1942 }, { 161,-1942 }, { 162,-1942 }, { 163,-1942 }, { 164,-1942 }, { 165,-1942 }, { 166,-1942 }, { 167,-1942 }, { 168,-1942 }, { 169,-1942 }, { 170,-1942 }, { 171,-1942 }, { 172,-1942 }, { 173,-1942 }, { 174,-1942 }, { 175,-1942 }, { 176,-1942 }, { 177,-1942 }, { 178,-1942 }, { 179,-1942 }, { 180,-1942 }, { 181,-1942 }, { 182,-1942 }, { 183,-1942 }, { 184,-1942 }, { 185,-1942 }, { 186,-1942 }, { 187,-1942 }, { 188,-1942 }, { 189,-1942 }, { 190,-1942 }, { 191,-1942 }, { 192,-1942 }, { 193,-1942 }, { 194,-1942 }, { 195,-1942 }, { 196,-1942 }, { 197,-1942 }, { 198,-1942 }, { 199,-1942 }, { 200,-1942 }, { 201,-1942 }, { 202,-1942 }, { 203,-1942 }, { 204,-1942 }, { 205,-1942 }, { 206,-1942 }, { 207,-1942 }, { 208,-1942 }, { 209,-1942 }, { 210,-1942 }, { 211,-1942 }, { 212,-1942 }, { 213,-1942 }, { 214,-1942 }, { 215,-1942 }, { 216,-1942 }, { 217,-1942 }, { 218,-1942 }, { 219,-1942 }, { 220,-1942 }, { 221,-1942 }, { 222,-1942 }, { 223,-1942 }, { 224,-1942 }, { 225,-1942 }, { 226,-1942 }, { 227,-1942 }, { 228,-1942 }, { 229,-1942 }, { 230,-1942 }, { 231,-1942 }, { 232,-1942 }, { 233,-1942 }, { 234,-1942 }, { 235,-1942 }, { 236,-1942 }, { 237,-1942 }, { 238,-1942 }, { 239,-1942 }, { 240,-1942 }, { 241,-1942 }, { 242,-1942 }, { 243,-1942 }, { 244,-1942 }, { 245,-1942 }, { 246,-1942 }, { 247,-1942 }, { 248,-1942 }, { 249,-1942 }, { 250,-1942 }, { 251,-1942 }, { 252,-1942 }, { 253,-1942 }, { 254,-1942 }, { 255,-1942 }, { 0, 68 }, { 0,1791 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-2199 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-1942 }, { 49,-1942 }, { 50,-1942 }, { 51,-1942 }, { 52,-1942 }, { 53,-1942 }, { 54,-1942 }, { 55,-1942 }, { 56,-1942 }, { 57,-1942 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-2199 }, { 66,-2199 }, { 67,-2199 }, { 68,-2199 }, { 69,-2199 }, { 70,-2199 }, { 71,-2199 }, { 72,-2199 }, { 73,-2199 }, { 74,-2199 }, { 75,-2199 }, { 76,-2199 }, { 77,-2199 }, { 78,-2199 }, { 79,-2199 }, { 80,-2199 }, { 81,-2199 }, { 82,-2199 }, { 83,-2199 }, { 84,-2199 }, { 85,-2199 }, { 86,-2199 }, { 87,-2199 }, { 88,-2199 }, { 89,-2199 }, { 90,-2199 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-2199 }, { 0, 0 }, { 97,-2199 }, { 98,-2199 }, { 99,-2199 }, { 100,-2199 }, { 101,-2199 }, { 102,-2199 }, { 103,-2199 }, { 104,-2199 }, { 105,-2199 }, { 106,-2199 }, { 107,-2199 }, { 108,-2199 }, { 109,-2199 }, { 110,-2199 }, { 111,-2199 }, { 112,-2199 }, { 113,-2199 }, { 114,-2199 }, { 115,-2199 }, { 116,-2199 }, { 117,-2199 }, { 118,-2199 }, { 119,-2199 }, { 120,-2199 }, { 121,-2199 }, { 122,-2199 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-2199 }, { 129,-2199 }, { 130,-2199 }, { 131,-2199 }, { 132,-2199 }, { 133,-2199 }, { 134,-2199 }, { 135,-2199 }, { 136,-2199 }, { 137,-2199 }, { 138,-2199 }, { 139,-2199 }, { 140,-2199 }, { 141,-2199 }, { 142,-2199 }, { 143,-2199 }, { 144,-2199 }, { 145,-2199 }, { 146,-2199 }, { 147,-2199 }, { 148,-2199 }, { 149,-2199 }, { 150,-2199 }, { 151,-2199 }, { 152,-2199 }, { 153,-2199 }, { 154,-2199 }, { 155,-2199 }, { 156,-2199 }, { 157,-2199 }, { 158,-2199 }, { 159,-2199 }, { 160,-2199 }, { 161,-2199 }, { 162,-2199 }, { 163,-2199 }, { 164,-2199 }, { 165,-2199 }, { 166,-2199 }, { 167,-2199 }, { 168,-2199 }, { 169,-2199 }, { 170,-2199 }, { 171,-2199 }, { 172,-2199 }, { 173,-2199 }, { 174,-2199 }, { 175,-2199 }, { 176,-2199 }, { 177,-2199 }, { 178,-2199 }, { 179,-2199 }, { 180,-2199 }, { 181,-2199 }, { 182,-2199 }, { 183,-2199 }, { 184,-2199 }, { 185,-2199 }, { 186,-2199 }, { 187,-2199 }, { 188,-2199 }, { 189,-2199 }, { 190,-2199 }, { 191,-2199 }, { 192,-2199 }, { 193,-2199 }, { 194,-2199 }, { 195,-2199 }, { 196,-2199 }, { 197,-2199 }, { 198,-2199 }, { 199,-2199 }, { 200,-2199 }, { 201,-2199 }, { 202,-2199 }, { 203,-2199 }, { 204,-2199 }, { 205,-2199 }, { 206,-2199 }, { 207,-2199 }, { 208,-2199 }, { 209,-2199 }, { 210,-2199 }, { 211,-2199 }, { 212,-2199 }, { 213,-2199 }, { 214,-2199 }, { 215,-2199 }, { 216,-2199 }, { 217,-2199 }, { 218,-2199 }, { 219,-2199 }, { 220,-2199 }, { 221,-2199 }, { 222,-2199 }, { 223,-2199 }, { 224,-2199 }, { 225,-2199 }, { 226,-2199 }, { 227,-2199 }, { 228,-2199 }, { 229,-2199 }, { 230,-2199 }, { 231,-2199 }, { 232,-2199 }, { 233,-2199 }, { 234,-2199 }, { 235,-2199 }, { 236,-2199 }, { 237,-2199 }, { 238,-2199 }, { 239,-2199 }, { 240,-2199 }, { 241,-2199 }, { 242,-2199 }, { 243,-2199 }, { 244,-2199 }, { 245,-2199 }, { 246,-2199 }, { 247,-2199 }, { 248,-2199 }, { 249,-2199 }, { 250,-2199 }, { 251,-2199 }, { 252,-2199 }, { 253,-2199 }, { 254,-2199 }, { 255,-2199 }, { 0, 28 }, { 0,1534 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 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,1511 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,1110 }, { 49,1110 }, { 50,1110 }, { 51,1110 }, { 52,1110 }, { 53,1110 }, { 54,1110 }, { 55,1110 }, { 56,1110 }, { 57,1110 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1110 }, { 66,1110 }, { 67,1110 }, { 68,1110 }, { 69,1110 }, { 70,1110 }, { 48,1110 }, { 49,1110 }, { 50,1110 }, { 51,1110 }, { 52,1110 }, { 53,1110 }, { 54,1110 }, { 55,1110 }, { 56,1110 }, { 57,1110 }, { 0, 69 }, { 0,1452 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1110 }, { 66,1110 }, { 67,1110 }, { 68,1110 }, { 69,1110 }, { 70,1110 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,1110 }, { 98,1110 }, { 99,1110 }, { 100,1110 }, { 101,1110 }, { 102,1110 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-1881 }, { 0, 0 }, { 97,1110 }, { 98,1110 }, { 99,1110 }, { 100,1110 }, { 101,1110 }, { 102,1110 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-1881 }, { 49,-1881 }, { 50,-1881 }, { 51,-1881 }, { 52,-1881 }, { 53,-1881 }, { 54,-1881 }, { 55,-1881 }, { 56,-1881 }, { 57,-1881 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-1881 }, { 66,-1881 }, { 67,-1881 }, { 68,-1881 }, { 69,-1881 }, { 70,-1881 }, { 71,-1881 }, { 72,-1881 }, { 73,-1881 }, { 74,-1881 }, { 75,-1881 }, { 76,-1881 }, { 77,-1881 }, { 78,-1881 }, { 79,-1881 }, { 80,-1881 }, { 81,-1881 }, { 82,-1881 }, { 83,-1881 }, { 84,-1881 }, { 85,-1881 }, { 86,-1881 }, { 87,-1881 }, { 88,-1881 }, { 89,-1881 }, { 90,-1881 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-1881 }, { 0, 0 }, { 97,-1881 }, { 98,-1881 }, { 99,-1881 }, { 100,-1881 }, { 101,-1881 }, { 102,-1881 }, { 103,-1881 }, { 104,-1881 }, { 105,-1881 }, { 106,-1881 }, { 107,-1881 }, { 108,-1881 }, { 109,-1881 }, { 110,-1881 }, { 111,-1881 }, { 112,-1881 }, { 113,-1881 }, { 114,-1881 }, { 115,-1881 }, { 116,-1881 }, { 117,-1881 }, { 118,-1881 }, { 119,-1881 }, { 120,-1881 }, { 121,-1881 }, { 122,-1881 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-1881 }, { 129,-1881 }, { 130,-1881 }, { 131,-1881 }, { 132,-1881 }, { 133,-1881 }, { 134,-1881 }, { 135,-1881 }, { 136,-1881 }, { 137,-1881 }, { 138,-1881 }, { 139,-1881 }, { 140,-1881 }, { 141,-1881 }, { 142,-1881 }, { 143,-1881 }, { 144,-1881 }, { 145,-1881 }, { 146,-1881 }, { 147,-1881 }, { 148,-1881 }, { 149,-1881 }, { 150,-1881 }, { 151,-1881 }, { 152,-1881 }, { 153,-1881 }, { 154,-1881 }, { 155,-1881 }, { 156,-1881 }, { 157,-1881 }, { 158,-1881 }, { 159,-1881 }, { 160,-1881 }, { 161,-1881 }, { 162,-1881 }, { 163,-1881 }, { 164,-1881 }, { 165,-1881 }, { 166,-1881 }, { 167,-1881 }, { 168,-1881 }, { 169,-1881 }, { 170,-1881 }, { 171,-1881 }, { 172,-1881 }, { 173,-1881 }, { 174,-1881 }, { 175,-1881 }, { 176,-1881 }, { 177,-1881 }, { 178,-1881 }, { 179,-1881 }, { 180,-1881 }, { 181,-1881 }, { 182,-1881 }, { 183,-1881 }, { 184,-1881 }, { 185,-1881 }, { 186,-1881 }, { 187,-1881 }, { 188,-1881 }, { 189,-1881 }, { 190,-1881 }, { 191,-1881 }, { 192,-1881 }, { 193,-1881 }, { 194,-1881 }, { 195,-1881 }, { 196,-1881 }, { 197,-1881 }, { 198,-1881 }, { 199,-1881 }, { 200,-1881 }, { 201,-1881 }, { 202,-1881 }, { 203,-1881 }, { 204,-1881 }, { 205,-1881 }, { 206,-1881 }, { 207,-1881 }, { 208,-1881 }, { 209,-1881 }, { 210,-1881 }, { 211,-1881 }, { 212,-1881 }, { 213,-1881 }, { 214,-1881 }, { 215,-1881 }, { 216,-1881 }, { 217,-1881 }, { 218,-1881 }, { 219,-1881 }, { 220,-1881 }, { 221,-1881 }, { 222,-1881 }, { 223,-1881 }, { 224,-1881 }, { 225,-1881 }, { 226,-1881 }, { 227,-1881 }, { 228,-1881 }, { 229,-1881 }, { 230,-1881 }, { 231,-1881 }, { 232,-1881 }, { 233,-1881 }, { 234,-1881 }, { 235,-1881 }, { 236,-1881 }, { 237,-1881 }, { 238,-1881 }, { 239,-1881 }, { 240,-1881 }, { 241,-1881 }, { 242,-1881 }, { 243,-1881 }, { 244,-1881 }, { 245,-1881 }, { 246,-1881 }, { 247,-1881 }, { 248,-1881 }, { 249,-1881 }, { 250,-1881 }, { 251,-1881 }, { 252,-1881 }, { 253,-1881 }, { 254,-1881 }, { 255,-1881 }, { 0, 69 }, { 0,1195 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-2138 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-1881 }, { 49,-1881 }, { 50,-1881 }, { 51,-1881 }, { 52,-1881 }, { 53,-1881 }, { 54,-1881 }, { 55,-1881 }, { 56,-1881 }, { 57,-1881 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-2138 }, { 66,-2138 }, { 67,-2138 }, { 68,-2138 }, { 69,-2138 }, { 70,-2138 }, { 71,-2138 }, { 72,-2138 }, { 73,-2138 }, { 74,-2138 }, { 75,-2138 }, { 76,-2138 }, { 77,-2138 }, { 78,-2138 }, { 79,-2138 }, { 80,-2138 }, { 81,-2138 }, { 82,-2138 }, { 83,-2138 }, { 84,-2138 }, { 85,-2138 }, { 86,-2138 }, { 87,-2138 }, { 88,-2138 }, { 89,-2138 }, { 90,-2138 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-2138 }, { 0, 0 }, { 97,-2138 }, { 98,-2138 }, { 99,-2138 }, { 100,-2138 }, { 101,-2138 }, { 102,-2138 }, { 103,-2138 }, { 104,-2138 }, { 105,-2138 }, { 106,-2138 }, { 107,-2138 }, { 108,-2138 }, { 109,-2138 }, { 110,-2138 }, { 111,-2138 }, { 112,-2138 }, { 113,-2138 }, { 114,-2138 }, { 115,-2138 }, { 116,-2138 }, { 117,-2138 }, { 118,-2138 }, { 119,-2138 }, { 120,-2138 }, { 121,-2138 }, { 122,-2138 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-2138 }, { 129,-2138 }, { 130,-2138 }, { 131,-2138 }, { 132,-2138 }, { 133,-2138 }, { 134,-2138 }, { 135,-2138 }, { 136,-2138 }, { 137,-2138 }, { 138,-2138 }, { 139,-2138 }, { 140,-2138 }, { 141,-2138 }, { 142,-2138 }, { 143,-2138 }, { 144,-2138 }, { 145,-2138 }, { 146,-2138 }, { 147,-2138 }, { 148,-2138 }, { 149,-2138 }, { 150,-2138 }, { 151,-2138 }, { 152,-2138 }, { 153,-2138 }, { 154,-2138 }, { 155,-2138 }, { 156,-2138 }, { 157,-2138 }, { 158,-2138 }, { 159,-2138 }, { 160,-2138 }, { 161,-2138 }, { 162,-2138 }, { 163,-2138 }, { 164,-2138 }, { 165,-2138 }, { 166,-2138 }, { 167,-2138 }, { 168,-2138 }, { 169,-2138 }, { 170,-2138 }, { 171,-2138 }, { 172,-2138 }, { 173,-2138 }, { 174,-2138 }, { 175,-2138 }, { 176,-2138 }, { 177,-2138 }, { 178,-2138 }, { 179,-2138 }, { 180,-2138 }, { 181,-2138 }, { 182,-2138 }, { 183,-2138 }, { 184,-2138 }, { 185,-2138 }, { 186,-2138 }, { 187,-2138 }, { 188,-2138 }, { 189,-2138 }, { 190,-2138 }, { 191,-2138 }, { 192,-2138 }, { 193,-2138 }, { 194,-2138 }, { 195,-2138 }, { 196,-2138 }, { 197,-2138 }, { 198,-2138 }, { 199,-2138 }, { 200,-2138 }, { 201,-2138 }, { 202,-2138 }, { 203,-2138 }, { 204,-2138 }, { 205,-2138 }, { 206,-2138 }, { 207,-2138 }, { 208,-2138 }, { 209,-2138 }, { 210,-2138 }, { 211,-2138 }, { 212,-2138 }, { 213,-2138 }, { 214,-2138 }, { 215,-2138 }, { 216,-2138 }, { 217,-2138 }, { 218,-2138 }, { 219,-2138 }, { 220,-2138 }, { 221,-2138 }, { 222,-2138 }, { 223,-2138 }, { 224,-2138 }, { 225,-2138 }, { 226,-2138 }, { 227,-2138 }, { 228,-2138 }, { 229,-2138 }, { 230,-2138 }, { 231,-2138 }, { 232,-2138 }, { 233,-2138 }, { 234,-2138 }, { 235,-2138 }, { 236,-2138 }, { 237,-2138 }, { 238,-2138 }, { 239,-2138 }, { 240,-2138 }, { 241,-2138 }, { 242,-2138 }, { 243,-2138 }, { 244,-2138 }, { 245,-2138 }, { 246,-2138 }, { 247,-2138 }, { 248,-2138 }, { 249,-2138 }, { 250,-2138 }, { 251,-2138 }, { 252,-2138 }, { 253,-2138 }, { 254,-2138 }, { 255,-2138 }, { 0, 70 }, { 0, 938 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-1624 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-1624 }, { 49,-1624 }, { 50,-1624 }, { 51,-1624 }, { 52,-1624 }, { 53,-1624 }, { 54,-1624 }, { 55,-1624 }, { 56,-1624 }, { 57,-1624 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-1624 }, { 66,-1624 }, { 67,-1624 }, { 68,-1624 }, { 69,-1624 }, { 70,-1624 }, { 71,-1624 }, { 72,-1624 }, { 73,-1624 }, { 74,-1624 }, { 75,-1624 }, { 76,-1624 }, { 77,-1624 }, { 78,-1624 }, { 79,-1624 }, { 80,-1624 }, { 81,-1624 }, { 82,-1624 }, { 83,-1624 }, { 84,-1624 }, { 85,-1624 }, { 86,-1624 }, { 87,-1624 }, { 88,-1624 }, { 89,-1624 }, { 90,-1624 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-1624 }, { 0, 0 }, { 97,-1624 }, { 98,-1624 }, { 99,-1624 }, { 100,-1624 }, { 101,-1624 }, { 102,-1624 }, { 103,-1624 }, { 104,-1624 }, { 105,-1624 }, { 106,-1624 }, { 107,-1624 }, { 108,-1624 }, { 109,-1624 }, { 110,-1624 }, { 111,-1624 }, { 112,-1624 }, { 113,-1624 }, { 114,-1624 }, { 115,-1624 }, { 116,-1624 }, { 117,-1624 }, { 118,-1624 }, { 119,-1624 }, { 120,-1624 }, { 121,-1624 }, { 122,-1624 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-1624 }, { 129,-1624 }, { 130,-1624 }, { 131,-1624 }, { 132,-1624 }, { 133,-1624 }, { 134,-1624 }, { 135,-1624 }, { 136,-1624 }, { 137,-1624 }, { 138,-1624 }, { 139,-1624 }, { 140,-1624 }, { 141,-1624 }, { 142,-1624 }, { 143,-1624 }, { 144,-1624 }, { 145,-1624 }, { 146,-1624 }, { 147,-1624 }, { 148,-1624 }, { 149,-1624 }, { 150,-1624 }, { 151,-1624 }, { 152,-1624 }, { 153,-1624 }, { 154,-1624 }, { 155,-1624 }, { 156,-1624 }, { 157,-1624 }, { 158,-1624 }, { 159,-1624 }, { 160,-1624 }, { 161,-1624 }, { 162,-1624 }, { 163,-1624 }, { 164,-1624 }, { 165,-1624 }, { 166,-1624 }, { 167,-1624 }, { 168,-1624 }, { 169,-1624 }, { 170,-1624 }, { 171,-1624 }, { 172,-1624 }, { 173,-1624 }, { 174,-1624 }, { 175,-1624 }, { 176,-1624 }, { 177,-1624 }, { 178,-1624 }, { 179,-1624 }, { 180,-1624 }, { 181,-1624 }, { 182,-1624 }, { 183,-1624 }, { 184,-1624 }, { 185,-1624 }, { 186,-1624 }, { 187,-1624 }, { 188,-1624 }, { 189,-1624 }, { 190,-1624 }, { 191,-1624 }, { 192,-1624 }, { 193,-1624 }, { 194,-1624 }, { 195,-1624 }, { 196,-1624 }, { 197,-1624 }, { 198,-1624 }, { 199,-1624 }, { 200,-1624 }, { 201,-1624 }, { 202,-1624 }, { 203,-1624 }, { 204,-1624 }, { 205,-1624 }, { 206,-1624 }, { 207,-1624 }, { 208,-1624 }, { 209,-1624 }, { 210,-1624 }, { 211,-1624 }, { 212,-1624 }, { 213,-1624 }, { 214,-1624 }, { 215,-1624 }, { 216,-1624 }, { 217,-1624 }, { 218,-1624 }, { 219,-1624 }, { 220,-1624 }, { 221,-1624 }, { 222,-1624 }, { 223,-1624 }, { 224,-1624 }, { 225,-1624 }, { 226,-1624 }, { 227,-1624 }, { 228,-1624 }, { 229,-1624 }, { 230,-1624 }, { 231,-1624 }, { 232,-1624 }, { 233,-1624 }, { 234,-1624 }, { 235,-1624 }, { 236,-1624 }, { 237,-1624 }, { 238,-1624 }, { 239,-1624 }, { 240,-1624 }, { 241,-1624 }, { 242,-1624 }, { 243,-1624 }, { 244,-1624 }, { 245,-1624 }, { 246,-1624 }, { 247,-1624 }, { 248,-1624 }, { 249,-1624 }, { 250,-1624 }, { 251,-1624 }, { 252,-1624 }, { 253,-1624 }, { 254,-1624 }, { 255,-1624 }, { 0, 70 }, { 0, 681 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-1881 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-1624 }, { 49,-1624 }, { 50,-1624 }, { 51,-1624 }, { 52,-1624 }, { 53,-1624 }, { 54,-1624 }, { 55,-1624 }, { 56,-1624 }, { 57,-1624 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-1881 }, { 66,-1881 }, { 67,-1881 }, { 68,-1881 }, { 69,-1881 }, { 70,-1881 }, { 71,-1881 }, { 72,-1881 }, { 73,-1881 }, { 74,-1881 }, { 75,-1881 }, { 76,-1881 }, { 77,-1881 }, { 78,-1881 }, { 79,-1881 }, { 80,-1881 }, { 81,-1881 }, { 82,-1881 }, { 83,-1881 }, { 84,-1881 }, { 85,-1881 }, { 86,-1881 }, { 87,-1881 }, { 88,-1881 }, { 89,-1881 }, { 90,-1881 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,-1881 }, { 0, 0 }, { 97,-1881 }, { 98,-1881 }, { 99,-1881 }, { 100,-1881 }, { 101,-1881 }, { 102,-1881 }, { 103,-1881 }, { 104,-1881 }, { 105,-1881 }, { 106,-1881 }, { 107,-1881 }, { 108,-1881 }, { 109,-1881 }, { 110,-1881 }, { 111,-1881 }, { 112,-1881 }, { 113,-1881 }, { 114,-1881 }, { 115,-1881 }, { 116,-1881 }, { 117,-1881 }, { 118,-1881 }, { 119,-1881 }, { 120,-1881 }, { 121,-1881 }, { 122,-1881 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,-1881 }, { 129,-1881 }, { 130,-1881 }, { 131,-1881 }, { 132,-1881 }, { 133,-1881 }, { 134,-1881 }, { 135,-1881 }, { 136,-1881 }, { 137,-1881 }, { 138,-1881 }, { 139,-1881 }, { 140,-1881 }, { 141,-1881 }, { 142,-1881 }, { 143,-1881 }, { 144,-1881 }, { 145,-1881 }, { 146,-1881 }, { 147,-1881 }, { 148,-1881 }, { 149,-1881 }, { 150,-1881 }, { 151,-1881 }, { 152,-1881 }, { 153,-1881 }, { 154,-1881 }, { 155,-1881 }, { 156,-1881 }, { 157,-1881 }, { 158,-1881 }, { 159,-1881 }, { 160,-1881 }, { 161,-1881 }, { 162,-1881 }, { 163,-1881 }, { 164,-1881 }, { 165,-1881 }, { 166,-1881 }, { 167,-1881 }, { 168,-1881 }, { 169,-1881 }, { 170,-1881 }, { 171,-1881 }, { 172,-1881 }, { 173,-1881 }, { 174,-1881 }, { 175,-1881 }, { 176,-1881 }, { 177,-1881 }, { 178,-1881 }, { 179,-1881 }, { 180,-1881 }, { 181,-1881 }, { 182,-1881 }, { 183,-1881 }, { 184,-1881 }, { 185,-1881 }, { 186,-1881 }, { 187,-1881 }, { 188,-1881 }, { 189,-1881 }, { 190,-1881 }, { 191,-1881 }, { 192,-1881 }, { 193,-1881 }, { 194,-1881 }, { 195,-1881 }, { 196,-1881 }, { 197,-1881 }, { 198,-1881 }, { 199,-1881 }, { 200,-1881 }, { 201,-1881 }, { 202,-1881 }, { 203,-1881 }, { 204,-1881 }, { 205,-1881 }, { 206,-1881 }, { 207,-1881 }, { 208,-1881 }, { 209,-1881 }, { 210,-1881 }, { 211,-1881 }, { 212,-1881 }, { 213,-1881 }, { 214,-1881 }, { 215,-1881 }, { 216,-1881 }, { 217,-1881 }, { 218,-1881 }, { 219,-1881 }, { 220,-1881 }, { 221,-1881 }, { 222,-1881 }, { 223,-1881 }, { 224,-1881 }, { 225,-1881 }, { 226,-1881 }, { 227,-1881 }, { 228,-1881 }, { 229,-1881 }, { 230,-1881 }, { 231,-1881 }, { 232,-1881 }, { 233,-1881 }, { 234,-1881 }, { 235,-1881 }, { 236,-1881 }, { 237,-1881 }, { 238,-1881 }, { 239,-1881 }, { 240,-1881 }, { 241,-1881 }, { 242,-1881 }, { 243,-1881 }, { 244,-1881 }, { 245,-1881 }, { 246,-1881 }, { 247,-1881 }, { 248,-1881 }, { 249,-1881 }, { 250,-1881 }, { 251,-1881 }, { 252,-1881 }, { 253,-1881 }, { 254,-1881 }, { 255,-1881 }, { 0, 28 }, { 0, 424 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 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, 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 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-26506 }, { 49,-26506 }, { 50,-26506 }, { 51,-26506 }, { 52,-26506 }, { 53,-26506 }, { 54,-26506 }, { 55,-26506 }, { 56,-26506 }, { 57,-26506 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-26506 }, { 66,-26506 }, { 67,-26506 }, { 68,-26506 }, { 69,-26506 }, { 70,-26506 }, { 48,-26527 }, { 49,-26527 }, { 50,-26527 }, { 51,-26527 }, { 52,-26527 }, { 53,-26527 }, { 54,-26527 }, { 55,-26527 }, { 56,-26527 }, { 57,-26527 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-26527 }, { 66,-26527 }, { 67,-26527 }, { 68,-26527 }, { 69,-26527 }, { 70,-26527 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,-26506 }, { 98,-26506 }, { 99,-26506 }, { 100,-26506 }, { 101,-26506 }, { 102,-26506 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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,-26527 }, { 98,-26527 }, { 99,-26527 }, { 100,-26527 }, { 101,-26527 }, { 102,-26527 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 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, 74 }, { 1, 0 }, }; static __thread const 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 49 "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, collabel) 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 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, int base); 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); #line 8123 "scan.c" #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 byte 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. * * non_newline_space tracks all the other space characters except newlines. * * 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 byte string */ /* National character */ /* Quoted string that allows backslash escapes */ /* 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"! */ /* * Numbers * * Unary minus is not part of a number here. Instead we pass it separately to * the parser, and there it gets coerced via doNegate(). * * {numericfail} is used because we would like "1..10" to lex as 1, dot_dot, 10. * * {realfail} is added to prevent the need for scanner * backup when the {real} rule fails to match completely. */ /* Positional parameters don't accept underscores. */ /* * An identifier immediately following an integer literal is disallowed because * in some cases it's ambiguous what is meant: for example, 0x1234 could be * either a hexinteger or a decinteger "0" and an identifier "x1234". We can * detect such problems by seeing if integer_junk matches a longer substring * than any of the XXXinteger patterns (decinteger, hexinteger, octinteger, * bininteger). One "junk" pattern is sufficient because * {decinteger}{identifier} will match all the same strings we'd match with * {hexinteger}{identifier} etc. * * Note that the rule for integer_junk must appear after the ones for * XXXinteger to make this work correctly: 0x1234 will match both hexinteger * and integer_junk, and we need hexinteger to be chosen in that case. * * Also disallow strings matched by numeric_junk, real_junk and param_junk * for consistency. */ /* * 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 8291 "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 yylex_init (yyscan_t* scanner); int 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 yylex_destroy ( yyscan_t yyscanner ); int yyget_debug ( yyscan_t yyscanner ); void yyset_debug ( int debug_flag , yyscan_t yyscanner ); YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); FILE *yyget_in ( yyscan_t yyscanner ); void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); FILE *yyget_out ( yyscan_t yyscanner ); void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); yy_size_t yyget_leng ( yyscan_t yyscanner ); char *yyget_text ( yyscan_t yyscanner ); int yyget_lineno ( yyscan_t yyscanner ); void yyset_lineno ( int _line_number , yyscan_t yyscanner ); int yyget_column ( yyscan_t yyscanner ); void yyset_column ( int _column_no , yyscan_t yyscanner ); YYSTYPE * yyget_lval ( yyscan_t yyscanner ); void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner ); YYLTYPE *yyget_lloc ( yyscan_t yyscanner ); void 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 yywrap ( yyscan_t yyscanner ); #else extern int yywrap ( yyscan_t yyscanner ); #endif #endif #ifndef YY_NO_UNPUT #endif #ifndef yytext_ptr static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen ( const 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 #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define YY_READ_BUF_SIZE 16384 #else #define YY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #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 do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) #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 = (int) fread(buf, 1, (yy_size_t) 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 yylex \ (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner); #define YY_DECL int 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 /*LINTED*/break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { yy_state_type yy_current_state; char *yy_cp, *yy_bp; int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 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 ) { yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_load_buffer_state( yyscanner ); } { #line 454 "scan.l" #line 8587 "scan.c" while ( /*CONSTCOND*/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: { const struct yy_trans_info *yy_trans_info; YY_CHAR yy_c; for ( yy_c = YY_SC_TO_UI(*yy_cp); (yy_trans_info = &yy_current_state[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 456 "scan.l" { /* ignore */ } YY_BREAK case 2: YY_RULE_SETUP #line 460 "scan.l" { SET_YYLLOC(); return SQL_COMMENT; } YY_BREAK case 3: YY_RULE_SETUP #line 465 "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 475 "scan.l" { (yyextra->xcdepth)++; /* Put back any characters past slash-star; see above */ yyless(2); } YY_BREAK case 5: YY_RULE_SETUP #line 481 "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 492 "scan.l" { /* ignore */ } YY_BREAK case 7: YY_RULE_SETUP #line 496 "scan.l" { /* ignore */ } YY_BREAK case 8: YY_RULE_SETUP #line 500 "scan.l" { /* ignore */ } YY_BREAK case YY_STATE_EOF(xc): #line 504 "scan.l" { yyerror("unterminated /* comment"); } YY_BREAK /* */ case 9: YY_RULE_SETUP #line 509 "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 522 "scan.l" case 11: /* rule 11 can match eol */ YY_RULE_SETUP #line 522 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case YY_STATE_EOF(xb): #line 525 "scan.l" { yyerror("unterminated bit string literal"); } YY_BREAK case 12: YY_RULE_SETUP #line 527 "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 539 "scan.l" { yyerror("unterminated hexadecimal string literal"); } YY_BREAK case 13: YY_RULE_SETUP #line 541 "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 568 "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 578 "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 585 "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 597 "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 609 "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 618 "scan.l" case 20: /* rule 20 can match eol */ #line 619 "scan.l" YY_RULE_SETUP case YY_STATE_EOF(xqs): #line 619 "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 660 "scan.l" { addlitchar('\'', yyscanner); } YY_BREAK case 22: /* rule 22 can match eol */ YY_RULE_SETUP #line 663 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 23: /* rule 23 can match eol */ YY_RULE_SETUP #line 666 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 24: YY_RULE_SETUP #line 669 "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 697 "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 718 "scan.l" case 27: /* rule 27 can match eol */ #line 719 "scan.l" YY_RULE_SETUP case YY_STATE_EOF(xeu): #line 719 "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 724 "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 733 "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 749 "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 757 "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 765 "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 769 "scan.l" { yyerror("unterminated quoted string"); } YY_BREAK case 33: YY_RULE_SETUP #line 771 "scan.l" { SET_YYLLOC(); yyextra->dolqstart = pstrdup(yytext); BEGIN(xdolq); startlit(); } YY_BREAK case 34: YY_RULE_SETUP #line 777 "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 784 "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 805 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 37: YY_RULE_SETUP #line 808 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 38: YY_RULE_SETUP #line 811 "scan.l" { /* This is only needed for $ inside the quoted text */ addlitchar(yytext[0], yyscanner); } YY_BREAK case YY_STATE_EOF(xdolq): #line 815 "scan.l" { yyerror("unterminated dollar-quoted string"); } YY_BREAK case 39: YY_RULE_SETUP #line 817 "scan.l" { SET_YYLLOC(); BEGIN(xd); startlit(); } YY_BREAK case 40: YY_RULE_SETUP #line 822 "scan.l" { SET_YYLLOC(); BEGIN(xui); startlit(); } YY_BREAK case 41: YY_RULE_SETUP #line 827 "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 840 "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 849 "scan.l" { addlitchar('"', yyscanner); } YY_BREAK case 44: /* rule 44 can match eol */ YY_RULE_SETUP #line 852 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case YY_STATE_EOF(xd): case YY_STATE_EOF(xui): #line 855 "scan.l" { yyerror("unterminated quoted identifier"); } YY_BREAK case 45: YY_RULE_SETUP #line 857 "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 870 "scan.l" { SET_YYLLOC(); return TYPECAST; } YY_BREAK case 47: YY_RULE_SETUP #line 875 "scan.l" { SET_YYLLOC(); return DOT_DOT; } YY_BREAK case 48: YY_RULE_SETUP #line 880 "scan.l" { SET_YYLLOC(); return COLON_EQUALS; } YY_BREAK case 49: YY_RULE_SETUP #line 885 "scan.l" { SET_YYLLOC(); return EQUALS_GREATER; } YY_BREAK case 50: YY_RULE_SETUP #line 890 "scan.l" { SET_YYLLOC(); return LESS_EQUALS; } YY_BREAK case 51: YY_RULE_SETUP #line 895 "scan.l" { SET_YYLLOC(); return GREATER_EQUALS; } YY_BREAK case 52: YY_RULE_SETUP #line 900 "scan.l" { /* We accept both "<>" and "!=" as meaning NOT_EQUALS */ SET_YYLLOC(); return NOT_EQUALS; } YY_BREAK case 53: YY_RULE_SETUP #line 906 "scan.l" { /* We accept both "<>" and "!=" as meaning NOT_EQUALS */ SET_YYLLOC(); return NOT_EQUALS; } YY_BREAK case 54: YY_RULE_SETUP #line 912 "scan.l" { SET_YYLLOC(); return yytext[0]; } YY_BREAK case 55: YY_RULE_SETUP #line 917 "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] == '-')); } } 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 56: YY_RULE_SETUP #line 1025 "scan.l" { SET_YYLLOC(); yylval->ival = atol(yytext + 1); return PARAM; } YY_BREAK case 57: YY_RULE_SETUP #line 1031 "scan.l" { SET_YYLLOC(); return process_integer_literal(yytext, yylval, 10); } YY_BREAK case 58: YY_RULE_SETUP #line 1035 "scan.l" { SET_YYLLOC(); return process_integer_literal(yytext, yylval, 16); } YY_BREAK case 59: YY_RULE_SETUP #line 1039 "scan.l" { SET_YYLLOC(); return process_integer_literal(yytext, yylval, 8); } YY_BREAK case 60: YY_RULE_SETUP #line 1043 "scan.l" { SET_YYLLOC(); return process_integer_literal(yytext, yylval, 2); } YY_BREAK case 61: YY_RULE_SETUP #line 1047 "scan.l" { SET_YYLLOC(); yyerror("invalid hexadecimal integer"); } YY_BREAK case 62: YY_RULE_SETUP #line 1051 "scan.l" { SET_YYLLOC(); yyerror("invalid octal integer"); } YY_BREAK case 63: YY_RULE_SETUP #line 1055 "scan.l" { SET_YYLLOC(); yyerror("invalid binary integer"); } YY_BREAK case 64: YY_RULE_SETUP #line 1059 "scan.l" { SET_YYLLOC(); yylval->str = pstrdup(yytext); return FCONST; } YY_BREAK case 65: YY_RULE_SETUP #line 1064 "scan.l" { /* throw back the .., and treat as integer */ yyless(yyleng - 2); SET_YYLLOC(); return process_integer_literal(yytext, yylval, 10); } YY_BREAK case 66: YY_RULE_SETUP #line 1070 "scan.l" { SET_YYLLOC(); yylval->str = pstrdup(yytext); return FCONST; } YY_BREAK case 67: YY_RULE_SETUP #line 1075 "scan.l" { SET_YYLLOC(); yyerror("trailing junk after numeric literal"); } YY_BREAK case 68: YY_RULE_SETUP #line 1079 "scan.l" { SET_YYLLOC(); yyerror("trailing junk after numeric literal"); } YY_BREAK case 69: YY_RULE_SETUP #line 1083 "scan.l" { SET_YYLLOC(); yyerror("trailing junk after numeric literal"); } YY_BREAK case 70: YY_RULE_SETUP #line 1087 "scan.l" { SET_YYLLOC(); yyerror("trailing junk after numeric literal"); } YY_BREAK case 71: YY_RULE_SETUP #line 1093 "scan.l" { int kwnum; char *ident; SET_YYLLOC(); /* Is it a keyword? */ kwnum = ScanKeywordLookup(yytext, yyextra->keywordlist); if (kwnum >= 0) { 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 72: YY_RULE_SETUP #line 1119 "scan.l" { SET_YYLLOC(); return yytext[0]; } YY_BREAK case YY_STATE_EOF(INITIAL): #line 1124 "scan.l" { SET_YYLLOC(); yyterminate(); } YY_BREAK case 73: YY_RULE_SETUP #line 1129 "scan.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK #line 9586 "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 * 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 ( 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 user's declarations */ } /* end of 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; char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = yyg->yytext_ptr; 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_LVALUE; 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. */ yyrealloc( (void *) b->yy_ch_buf, (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; 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; 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 ((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 *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); /* "- 2" to take care of EOB's */ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } 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) { yy_state_type yy_current_state; 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) { int yy_is_jam; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ int yy_c = 256; const 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_UNPUT #endif #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. */ yyrestart( yyin , yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( 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 yyrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner); yy_load_buffer_state( yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void 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 * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ 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; yy_load_buffer_state( yyscanner ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void 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 yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in 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 *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer( b, file , yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with 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 yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flush_buffer( b , yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from 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 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 ) 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 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; /* After all that talk, this was set to 1 anyways... */ yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in 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. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)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 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 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 NULL; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = (int) (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 = NULL; 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; yy_switch_to_buffer( b , yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to 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 * yy_scan_bytes() instead. */ /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_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 yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; 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. */ \ yy_size_t 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 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 line number * @param yyscanner The scanner object. */ /** Set the current column. * @param _column_no column 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 yy_switch_to_buffer */ /* Accessor methods for yylval and yylloc */ /* User-visible API */ /* 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 yylex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) 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 ); } /* yylex_init_extra has the same functionality as 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 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 yylex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = NULL; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = NULL; 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 = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (const char * s , yyscan_t yyscanner) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif #define YYTABLES_NAME "yytables" #line 1129 "scan.l" /* LCOV_EXCL_STOP */ /* * Arrange access to yyextra for subroutines of the main 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 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 (yylex_init(&scanner) != 0) elog(ERROR, "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; 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 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) { yyextra->literalalloc = pg_nextpower2_32(yyextra->literallen + yleng + 1); 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 {decinteger}, {hexinteger}, etc. Note this will also do the right * thing with {numeric}, ie digits and a decimal point. */ static int process_integer_literal(const char *token, YYSTYPE *lval, int base) { ErrorSaveContext escontext = {T_ErrorSaveContext}; int32 val; val = pg_strtoint32_safe(token, (Node *) &escontext); if (escontext.error_occurred) { /* 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'; case 'v': return '\v'; 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-17-6.1.0/src/postgres/src_backend_parser_scansup.c000066400000000000000000000074011477334012600244450ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - downcase_truncate_identifier * - downcase_identifier * - truncate_identifier * - scanner_isspace *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * scansup.c * scanner support routines used by the core lexer * * Portions Copyright (c) 1996-2024, 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" /* * 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) ereport(NOTICE, (errcode(ERRCODE_NAME_TOO_LONG), errmsg("identifier \"%s\" will be truncated to \"%.*s\"", ident, len, ident))); 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 == '\v' || ch == '\f') return true; return false; } libpg_query-17-6.1.0/src/postgres/src_backend_storage_ipc_ipc.c000066400000000000000000000136231477334012600245520ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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-2024, 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. We only look at the latest entry for removal, as we * expect callers to add and remove temporary before_shmem_exit * callbacks in strict LIFO order. * ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- * 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... * ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- * check_on_shmem_exit_lists_are_empty * * Debugging check that no shmem cleanup handlers have been registered * prematurely in the current process. * ---------------------------------------------------------------- */ libpg_query-17-6.1.0/src/postgres/src_backend_tcop_postgres.c000066400000000000000000000501161477334012600243110ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - debug_query_string * - stack_is_too_deep * - stack_base_ptr * - max_stack_depth_bytes * - whereToSendOutput * - ProcessInterrupts * - check_stack_depth * - max_stack_depth *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * postgres.c * POSTGRES C Backend Interface * * Portions Copyright (c) 1996-2024, 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 #include #include #ifdef USE_VALGRIND #include #endif #include "access/parallel.h" #include "access/printtup.h" #include "access/xact.h" #include "catalog/pg_type.h" #include "commands/async.h" #include "commands/event_trigger.h" #include "commands/prepare.h" #include "common/pg_prng.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/pmsignal.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/guc_hooks.h" #include "utils/injection_point.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" #include "utils/varlena.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 */ /* Time between checks that the client is still connected. */ /* flags for non-system relation kinds to restrict use */ /* ---------------- * private typedefs etc * ---------------- */ /* type of argument for bind_param_error_callback */ typedef struct BindParamCbData { const char *portalName; int paramno; /* zero-based param number, or -1 initially */ const char *paramval; /* textual input string, if available */ } BindParamCbData; /* ---------------- * 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 (but see also InitPostmasterChild). */ static __thread char *stack_base_ptr = NULL; /* * 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 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 void bind_param_error_callback(void *arg); 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); /* ---------------------------------------------------------------- * infrastructure for valgrind debugging * ---------------------------------------------------------------- */ #ifdef USE_VALGRIND /* This variable should be set at the top of the main loop. */ static unsigned int old_valgrind_error_count; /* * If Valgrind detected any errors since old_valgrind_error_count was updated, * report the current query as the cause. This should be called at the end * of message processing. */ static void valgrind_report_error_query(const char *query) { unsigned int valgrind_error_count = VALGRIND_COUNT_ERRORS; if (unlikely(valgrind_error_count != old_valgrind_error_count) && query != NULL) VALGRIND_PRINTF("Valgrind detected %u error(s) during execution of \"%s\"\n", valgrind_error_count - old_valgrind_error_count, query); } #else /* !USE_VALGRIND */ #define valgrind_report_error_query(query) ((void) 0) #endif /* USE_VALGRIND */ /* ---------------------------------------------------------------- * 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 #ifdef WRITE_READ_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_fixedparams except that it's okay to deduce * information about $n symbol datatypes from context. */ /* * Do parse analysis and rewriting. This is the same as * pg_analyze_and_rewrite_fixedparams except that, instead of a fixed list of * parameter datatypes, a parser callback is supplied that can do * external-parameter resolution and possibly other things. */ /* * 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. */ /* * bind_param_error_callback * * Error context callback used while parsing parameters in a Bind message */ /* * 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. * * Either some backend has bought the farm, or we've been told to shut down * "immediately"; 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 */ /* * Tell the next CHECK_FOR_INTERRUPTS() to check for a particular type of * recovery conflict. Runs in a SIGUSR1 handler. */ /* * Check one individual conflict reason. */ /* * Check each possible recovery conflict reason. */ /* * 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. * * Note: if INTERRUPTS_CAN_BE_PROCESSED() is true, then ProcessInterrupts * is guaranteed to clear the InterruptPending flag before returning. * (This is not the same as guaranteeing that it's still clear when we * return; another interrupt could have arrived. But we promise that * any pre-existing one will have been serviced.) */ void ProcessInterrupts(void) {} /* * set_stack_base: set up reference point for stack depth checking * * Returns the old reference point, if any. */ #ifndef HAVE__BUILTIN_FRAME_ADDRESS #endif #ifdef HAVE__BUILTIN_FRAME_ADDRESS #else #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. */ /* * 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; return false; } /* GUC check hook for max_stack_depth */ /* GUC assign hook for max_stack_depth */ /* * GUC check_hook for client_connection_check_interval */ /* * GUC check_hook for log_parser_stats, log_planner_stats, log_executor_stats * * This function and check_log_stats interact to prevent their variables from * being set in a disallowed combination. This is a hack that doesn't really * work right; for example it might fail while applying pg_db_role_setting * values even though the final state would have been acceptable. However, * since these variables are legacy settings with little production usage, * we tolerate that. */ /* * GUC check_hook for log_statement_stats */ /* GUC assign hook for transaction_timeout */ /* * GUC check_hook for restrict_nonsystem_relation_kind */ /* * GUC assign_hook for restrict_nonsystem_relation_kind */ /* * 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 backends * * 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 /* * PostgresSingleUserMain * Entry point for single user mode. argc/argv are the command line * arguments to be used. * * Performs single user specific setup then calls PostgresMain() to actually * process queries. Single user mode specific setup should go here, rather * than PostgresMain() or InitPostgres() when reasonably possible. */ /* ---------------------------------------------------------------- * PostgresMain * postgres main loop -- all backends, interactive or otherwise loop here * * dbname is the name of the database to connect to, username is the * PostgreSQL user name to be used for the session. * * NB: Single user mode specific setup should go to PostgresSingleUserMain() * if reasonably possible. * ---------------------------------------------------------------- */ #ifdef USE_VALGRIND #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) #else #endif #ifndef WIN32 #if defined(__darwin__) #else #endif #endif /* !WIN32 */ /* * 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-17-6.1.0/src/postgres/src_backend_utils_activity_pgstat_database.c000066400000000000000000000055421477334012600277030ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pgStatSessionEndCause *-------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- * * pgstat_database.c * Implementation of database statistics. * * This file contains the implementation of database statistics. It is kept * separate from pgstat.c to enforce the line between the statistics access / * storage implementation and the details about individual types of * statistics. * * Copyright (c) 2001-2024, PostgreSQL Global Development Group * * IDENTIFICATION * src/backend/utils/activity/pgstat_database.c * ------------------------------------------------------------------------- */ #include "postgres.h" #include "storage/procsignal.h" #include "utils/pgstat_internal.h" #include "utils/timestamp.h" static bool pgstat_should_report_connstat(void); __thread SessionEndType pgStatSessionEndCause = DISCONNECT_NORMAL; /* * Remove entry for the database being dropped. */ /* * Called from autovacuum.c to report startup of an autovacuum process. * We are called before InitPostgres is done, so can't rely on MyDatabaseId; * the db OID must be passed in, instead. */ /* * Report a Hot Standby recovery conflict. */ /* * Report a detected deadlock. */ /* * Report one or more checksum failures. */ /* * Report one checksum failure in the current database. */ /* * Report creation of temporary file. */ /* * Notify stats system of a new connection. */ /* * Notify the stats system of a disconnect. */ /* * Support function for the SQL-callable pgstat* functions. Returns * the collected statistics for one database or NULL. NULL doesn't mean * that the database doesn't exist, just that there are no statistics, so the * caller is better off to report ZERO instead. */ /* * Subroutine for pgstat_report_stat(): Handle xact commit/rollback and I/O * timings. */ /* * We report session statistics only for normal backend processes. Parallel * workers run in parallel, so they don't contribute to session times, even * though they use CPU time. Walsender processes could be considered here, * but they have different session characteristics from normal backends (for * example, they are always "active"), so they would skew session statistics. */ /* * Find or create a local PgStat_StatDBEntry entry for dboid. */ /* * Reset the database's reset timestamp, without resetting the contents of the * database stats. */ /* * Flush out pending stats for the entry * * If nowait is true, this function returns false if lock could not * immediately acquired, otherwise true is returned. */ #define PGSTAT_ACCUM_DBCOUNT(item) \ (sharedent)->stats.item += (pendingent)->item #undef PGSTAT_ACCUM_DBCOUNT libpg_query-17-6.1.0/src/postgres/src_backend_utils_adt_datum.c000066400000000000000000000256361477334012600246110ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - datumCopy * - datumGetSize * - datumIsEqual *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * datum.c * POSTGRES Datum (abstract data type) manipulation routines. * * Portions Copyright (c) 1996-2024, 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 "common/hashfn.h" #include "fmgr.h" #include "utils/datum.h" #include "utils/expandeddatum.h" #include "utils/fmgrprotos.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. *------------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * datum_image_hash * * Generate a hash value based on the binary representation of 'value'. Most * use cases will want to use the hash function specific to the Datum's type, * however, some corner cases require generating a hash value based on the * actual bits rather than the logical value. *------------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * 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-17-6.1.0/src/postgres/src_backend_utils_adt_expandeddatum.c000066400000000000000000000050441477334012600263110ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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-2024, 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-17-6.1.0/src/postgres/src_backend_utils_adt_format_type.c000066400000000000000000000111071477334012600260140ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - format_type_be *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * format_type.c * Display type names "nicely". * * * Portions Copyright (c) 1996-2024, 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/fmgroids.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_INVALID_AS_NULL * if the type OID is invalid or unknown, return NULL instead of ??? * or such * - 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, or NULL. */ /* * 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-17-6.1.0/src/postgres/src_backend_utils_adt_numutils.c000066400000000000000000000322531477334012600253500ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_strtoint32_safe * - hexlookup *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * numutils.c * utility functions for I/O of built-in numeric types. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/adt/numutils.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include #include "port/pg_bitutils.h" #include "utils/builtins.h" /* * A table of all two-digit numbers. This is used to speed up decimal digit * generation by copying pairs of digits into the final output. */ /* * Adapted from http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog10 */ static const int8 hexlookup[128] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, -1, -1, -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, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, }; /* * Convert input string to a signed 16 bit integer. Input strings may be * expressed in base-10, hexadecimal, octal, or binary format, all of which * can be prefixed by an optional sign character, either '+' (the default) or * '-' for negative numbers. Hex strings are recognized by the digits being * prefixed by 0x or 0X while octal strings are recognized by the 0o or 0O * prefix. The binary representation is recognized by the 0b or 0B prefix. * * Allows any number of leading or trailing whitespace characters. Digits may * optionally be separated by a single underscore character. These can only * come between digits and not before or after the digits. Underscores have * no effect on the return value and are supported only to assist in improving * the human readability of the input strings. * * pg_strtoint16() will throw ereport() upon bad input format or overflow; * while pg_strtoint16_safe() instead returns such complaints in *escontext, * if it's an ErrorSaveContext. * * NB: Accumulate input as an unsigned number, to deal with two's complement * representation of the most negative number, which can't be represented as a * signed positive number. */ /* * Convert input string to a signed 32 bit integer. Input strings may be * expressed in base-10, hexadecimal, octal, or binary format, all of which * can be prefixed by an optional sign character, either '+' (the default) or * '-' for negative numbers. Hex strings are recognized by the digits being * prefixed by 0x or 0X while octal strings are recognized by the 0o or 0O * prefix. The binary representation is recognized by the 0b or 0B prefix. * * Allows any number of leading or trailing whitespace characters. Digits may * optionally be separated by a single underscore character. These can only * come between digits and not before or after the digits. Underscores have * no effect on the return value and are supported only to assist in improving * the human readability of the input strings. * * pg_strtoint32() will throw ereport() upon bad input format or overflow; * while pg_strtoint32_safe() instead returns such complaints in *escontext, * if it's an ErrorSaveContext. * * NB: Accumulate input as an unsigned number, to deal with two's complement * representation of the most negative number, which can't be represented as a * signed positive number. */ int32 pg_strtoint32_safe(const char *s, Node *escontext) { const char *ptr = s; const char *firstdigit; uint32 tmp = 0; bool neg = false; unsigned char digit; /* * The majority of cases are likely to be base-10 digits without any * underscore separator characters. We'll first try to parse the string * with the assumption that's the case and only fallback on a slower * implementation which handles hex, octal and binary strings and * underscores if the fastpath version cannot parse the string. */ /* leave it up to the slow path to look for leading spaces */ if (*ptr == '-') { ptr++; neg = true; } /* a leading '+' is uncommon so leave that for the slow path */ /* process the first digit */ digit = (*ptr - '0'); /* * Exploit unsigned arithmetic to save having to check both the upper and * lower bounds of the digit. */ if (likely(digit < 10)) { ptr++; tmp = digit; } else { /* we need at least one digit */ goto slow; } /* process remaining digits */ for (;;) { digit = (*ptr - '0'); if (digit >= 10) break; ptr++; if (unlikely(tmp > -(PG_INT32_MIN / 10))) goto out_of_range; tmp = tmp * 10 + digit; } /* when the string does not end in a digit, let the slow path handle it */ if (unlikely(*ptr != '\0')) goto slow; if (neg) { /* check the negative equivalent will fit without overflowing */ if (unlikely(tmp > (uint32) (-(PG_INT32_MIN + 1)) + 1)) goto out_of_range; return -((int32) tmp); } if (unlikely(tmp > PG_INT32_MAX)) goto out_of_range; return (int32) tmp; slow: tmp = 0; ptr = s; /* no need to reset neg */ /* skip leading spaces */ while (isspace((unsigned char) *ptr)) ptr++; /* handle sign */ if (*ptr == '-') { ptr++; neg = true; } else if (*ptr == '+') ptr++; /* process digits */ if (ptr[0] == '0' && (ptr[1] == 'x' || ptr[1] == 'X')) { firstdigit = ptr += 2; for (;;) { if (isxdigit((unsigned char) *ptr)) { if (unlikely(tmp > -(PG_INT32_MIN / 16))) goto out_of_range; tmp = tmp * 16 + hexlookup[(unsigned char) *ptr++]; } else if (*ptr == '_') { /* underscore must be followed by more digits */ ptr++; if (*ptr == '\0' || !isxdigit((unsigned char) *ptr)) goto invalid_syntax; } else break; } } else if (ptr[0] == '0' && (ptr[1] == 'o' || ptr[1] == 'O')) { firstdigit = ptr += 2; for (;;) { if (*ptr >= '0' && *ptr <= '7') { if (unlikely(tmp > -(PG_INT32_MIN / 8))) goto out_of_range; tmp = tmp * 8 + (*ptr++ - '0'); } else if (*ptr == '_') { /* underscore must be followed by more digits */ ptr++; if (*ptr == '\0' || *ptr < '0' || *ptr > '7') goto invalid_syntax; } else break; } } else if (ptr[0] == '0' && (ptr[1] == 'b' || ptr[1] == 'B')) { firstdigit = ptr += 2; for (;;) { if (*ptr >= '0' && *ptr <= '1') { if (unlikely(tmp > -(PG_INT32_MIN / 2))) goto out_of_range; tmp = tmp * 2 + (*ptr++ - '0'); } else if (*ptr == '_') { /* underscore must be followed by more digits */ ptr++; if (*ptr == '\0' || *ptr < '0' || *ptr > '1') goto invalid_syntax; } else break; } } else { firstdigit = ptr; for (;;) { if (*ptr >= '0' && *ptr <= '9') { if (unlikely(tmp > -(PG_INT32_MIN / 10))) goto out_of_range; tmp = tmp * 10 + (*ptr++ - '0'); } else if (*ptr == '_') { /* underscore may not be first */ if (unlikely(ptr == firstdigit)) goto invalid_syntax; /* and it must be followed by more digits */ ptr++; if (*ptr == '\0' || !isdigit((unsigned char) *ptr)) goto invalid_syntax; } else break; } } /* require at least one digit */ if (unlikely(ptr == firstdigit)) goto invalid_syntax; /* allow trailing whitespace, but not other trailing chars */ while (isspace((unsigned char) *ptr)) ptr++; if (unlikely(*ptr != '\0')) goto invalid_syntax; if (neg) { /* check the negative equivalent will fit without overflowing */ if (tmp > (uint32) (-(PG_INT32_MIN + 1)) + 1) goto out_of_range; return -((int32) tmp); } if (tmp > PG_INT32_MAX) goto out_of_range; return (int32) tmp; out_of_range: ereturn(escontext, 0, (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), errmsg("value \"%s\" is out of range for type %s", s, "integer"))); invalid_syntax: ereturn(escontext, 0, (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), errmsg("invalid input syntax for type %s: \"%s\"", "integer", s))); } /* * Convert input string to a signed 64 bit integer. Input strings may be * expressed in base-10, hexadecimal, octal, or binary format, all of which * can be prefixed by an optional sign character, either '+' (the default) or * '-' for negative numbers. Hex strings are recognized by the digits being * prefixed by 0x or 0X while octal strings are recognized by the 0o or 0O * prefix. The binary representation is recognized by the 0b or 0B prefix. * * Allows any number of leading or trailing whitespace characters. Digits may * optionally be separated by a single underscore character. These can only * come between digits and not before or after the digits. Underscores have * no effect on the return value and are supported only to assist in improving * the human readability of the input strings. * * pg_strtoint64() will throw ereport() upon bad input format or overflow; * while pg_strtoint64_safe() instead returns such complaints in *escontext, * if it's an ErrorSaveContext. * * NB: Accumulate input as an unsigned number, to deal with two's complement * representation of the most negative number, which can't be represented as a * signed positive number. */ /* * Convert input string to an unsigned 32 bit integer. * * Allows any number of leading or trailing whitespace characters. * * If endloc isn't NULL, store a pointer to the rest of the string there, * so that caller can parse the rest. Otherwise, it's an error if anything * but whitespace follows. * * typname is what is reported in error messages. * * If escontext points to an ErrorSaveContext node, that is filled instead * of throwing an error; the caller must check SOFT_ERROR_OCCURRED() * to detect errors. */ #if PG_UINT32_MAX != ULONG_MAX #endif /* * Convert input string to an unsigned 64 bit integer. * * Allows any number of leading or trailing whitespace characters. * * If endloc isn't NULL, store a pointer to the rest of the string there, * so that caller can parse the rest. Otherwise, it's an error if anything * but whitespace follows. * * typname is what is reported in error messages. * * If escontext points to an ErrorSaveContext node, that is filled instead * of throwing an error; the caller must check SOFT_ERROR_OCCURRED() * to detect errors. */ /* * pg_itoa: converts a signed 16-bit integer to its string representation * and returns strlen(a). * * Caller must ensure that 'a' points to enough memory to hold the result * (at least 7 bytes, counting a leading sign and trailing NUL). * * It doesn't seem worth implementing this separately. */ /* * pg_ultoa_n: converts an unsigned 32-bit integer to its string representation, * not NUL-terminated, and returns the length of that string representation * * Caller must ensure that 'a' points to enough memory to hold the result (at * least 10 bytes) */ /* * pg_ltoa: converts a signed 32-bit integer to its string representation and * returns strlen(a). * * It is the caller's responsibility to ensure that a is at least 12 bytes long, * which is enough room to hold a minus sign, a maximally long int32, and the * above terminating NUL. */ /* * Get the decimal representation, not NUL-terminated, and return the length of * same. Caller must ensure that a points to at least MAXINT8LEN bytes. */ /* * pg_lltoa: converts a signed 64-bit integer to its string representation and * returns strlen(a). * * Caller must ensure that 'a' points to enough memory to hold the result * (at least MAXINT8LEN + 1 bytes, counting a leading sign and trailing NUL). */ /* * pg_ultostr_zeropad * Converts 'value' into a decimal string representation stored at 'str'. * 'minwidth' specifies the minimum width of the result; any extra space * is filled up by prefixing the number with zeros. * * Returns the ending address of the string result (the last character written * plus 1). Note that no NUL terminator is written. * * The intended use-case for this function is to build strings that contain * multiple individual numbers, for example: * * str = pg_ultostr_zeropad(str, hours, 2); * *str++ = ':'; * str = pg_ultostr_zeropad(str, mins, 2); * *str++ = ':'; * str = pg_ultostr_zeropad(str, secs, 2); * *str = '\0'; * * Note: Caller must ensure that 'str' points to enough memory to hold the * result. */ /* * pg_ultostr * Converts 'value' into a decimal string representation stored at 'str'. * * Returns the ending address of the string result (the last character written * plus 1). Note that no NUL terminator is written. * * The intended use-case for this function is to build strings that contain * multiple individual numbers, for example: * * str = pg_ultostr(str, a); * *str++ = ' '; * str = pg_ultostr(str, b); * *str = '\0'; * * Note: Caller must ensure that 'str' points to enough memory to hold the * result. */ libpg_query-17-6.1.0/src/postgres/src_backend_utils_adt_ruleutils.c000066400000000000000000001700431477334012600255200ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - quote_identifier * - quote_all_identifiers * - quote_qualified_identifier *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * ruleutils.c * Functions to convert stored expressions/querytrees back to * source text * * Portions Copyright (c) 1996-2024, 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/table.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_oper.h" #include "parser/parse_relation.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 /* Standard conversion of a "bool pretty" option to detailed flags */ #define GET_PRETTY_FLAGS(pretty) \ ((pretty) ? (PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA) \ : PRETTYFLAG_INDENT) /* 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 */ TupleDesc resultDesc; /* if top level of a view, the view's tupdesc */ List *targetList; /* Current query level's SELECT targetlist */ List *windowClause; /* Current query level's 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 */ bool colNamesVisible; /* do we care about output column names? */ bool inGroupBy; /* deparsing GROUP BY clause? */ bool varInOrderBy; /* deparsing simple Var in ORDER BY? */ 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 */ /* Special namespace representing a function signature: */ char *funcname; int numargs; char **argnames; } 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 columns_only, 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, 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 print_function_sqlbody(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 Plan *find_recursive_union(deparse_namespace *dpns, WorkTableScan *wtscan); 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, bool colNamesVisible, 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); 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_merge_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); static void get_target_list(List *targetList, deparse_context *context); static void get_setop_query(Node *setOp, Query *query, deparse_context *context); 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 SubPlan *find_param_generator(Param *param, deparse_context *context, int *column_p); static SubPlan *find_param_generator_initplan(Param *param, Plan *plan, int *column_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_list_toplevel(List *lst, 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_expr_helper(Aggref *aggref, deparse_context *context, Aggref *original_aggref, const char *funcname, const char *options, bool is_json_objectagg); 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_windowfunc_expr_helper(WindowFunc *wfunc, deparse_context *context, const char *funcname, const char *options, bool is_json_objectagg); static bool get_func_sql_syntax(FuncExpr *expr, 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 get_json_format(JsonFormat *format, StringInfo buf); static void get_json_returning(JsonReturning *returning, StringInfo buf, bool json_format_by_default); static void get_json_constructor(JsonConstructorExpr *ctor, deparse_context *context, bool showimplicit); static void get_json_constructor_options(JsonConstructorExpr *ctor, StringInfo buf); static void get_json_agg_constructor(JsonConstructorExpr *ctor, deparse_context *context, const char *funcname, bool is_json_objectagg); 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_rte_alias(RangeTblEntry *rte, int varno, bool use_as, 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, bool inGroupBy); 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); static void get_json_path_spec(Node *path_spec, deparse_context *context, bool showimplicit); static void get_json_table_columns(TableFunc *tf, JsonTablePathScan *scan, deparse_context *context, bool showimplicit); static void get_json_table_nested_columns(TableFunc *tf, JsonTablePlan *plan, deparse_context *context, bool showimplicit, bool needcomma); #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 version, extensible with flags to control its behavior */ /* * 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_querydef * * Public entry point to deparse one query parsetree. * The pretty flags are determined by GET_PRETTY_FLAGS(pretty). * * The result is a palloc'd C string. * ---------- */ /* * pg_get_statisticsobjdef * Get the definition of an extended statistics object */ /* * Internal version for use by ALTER TABLE. * Includes a tablespace clause in the result. * Returns a palloc'd C string; no pretty-printing. */ /* * pg_get_statisticsobjdef_columns * Get columns and expressions for an extended statistics object */ /* * Internal workhorse to decompile an extended statistics object. */ /* * Generate text array of expressions for statistics object. */ /* * pg_get_partkeydef * * Returns the partition key specification, ie, the following: * * { 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. * * If the OID is nonzero but not actually valid, don't throw an error, * just return NULL. This is a bit questionable, but it's what we've * done historically, and it can help avoid unwanted failures when * examining catalog entries for just-deleted relations. * * We expect this function to work, or throw a reasonably clean error, * for any node tree that can appear in a catalog pg_node_tree column. * Query trees, such as those appearing in pg_rewrite.ev_action, are * not supported. Nor are expressions in more than one relation, which * can appear in places like pg_rewrite.ev_qual. * ---------- */ /* ---------- * 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 ", "BEGIN ", or "RETURN ", 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 must already have adjusted 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. */ /* * Locate the ancestor plan node that is the RecursiveUnion generating * the WorkTableScan's work table. We can match on wtParam, since that * should be unique within the 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 * * query: parsetree to be displayed * buf: output text is appended to buf * parentnamespace: list (initially empty) of outer-level deparse_namespace's * resultDesc: if not NULL, the output tuple descriptor for the view * represented by a SELECT query. We use the column names from it * to label SELECT output columns, in preference to names in the query * colNamesVisible: true if the surrounding context cares about the output * column names at all (as, for example, an EXISTS() context does not); * when false, we can suppress dummy column labels such as "?column?" * prettyFlags: bitmask of PRETTYFLAG_XXX options * wrapColumn: maximum line length, or -1 to disable wrapping * startIndent: initial indentation amount * ---------- */ /* ---------- * 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/MERGE. * ---------- */ /* * 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_merge_query_def - Parse back a MERGE 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. */ /* * Try to find a subplan/initplan that emits the value for a PARAM_EXEC Param. * * If successful, return the generating subplan/initplan and set *column_p * to the subplan's 0-based output column number. * Otherwise, return NULL. */ /* * Subroutine for find_param_generator: search one Plan node's initplans */ /* * 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_json_expr_options * * Parse back common options for JSON_QUERY, JSON_VALUE, JSON_EXISTS and * JSON_TABLE columns. */ /* ---------- * 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_list_toplevel - Parse back a list of toplevel expressions * * Apply get_rule_expr_toplevel() to each element of a List. * * This adds commas between the expressions, but caller is responsible * for printing surrounding decoration. */ /* * 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 */ /* * get_agg_expr_helper - subroutine for get_agg_expr and * get_json_agg_constructor */ /* * 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_windowfunc_expr_helper - subroutine for get_windowfunc_expr and * get_json_agg_constructor */ /* * get_func_sql_syntax - Parse back a SQL-syntax function call * * Returns true if we successfully deparsed, false if we did not * recognize the function. */ /* ---------- * 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 */ /* * get_json_path_spec - Parse back a JSON path specification */ /* * get_json_format - Parse back a JsonFormat node */ /* * get_json_returning - Parse back a JsonReturning structure */ /* * get_json_constructor - Parse back a JsonConstructorExpr node */ /* * Append options, if any, to the JSON constructor being deparsed */ /* * get_json_agg_constructor - Parse back an aggregate JsonConstructorExpr node */ /* * simple_quote_literal - Format a string as a SQL literal, append to buf */ /* ---------- * get_sublink_expr - Parse back a sublink * ---------- */ /* ---------- * get_xmltable - Parse back a XMLTABLE function * ---------- */ /* * get_json_table_nested_columns - Parse back nested JSON_TABLE columns */ /* * get_json_table_columns - Parse back JSON_TABLE columns */ /* ---------- * get_json_table - Parse back a JSON_TABLE function * ---------- */ /* ---------- * 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_rte_alias - print the relation's alias, if needed * * If printed, the alias is preceded by a space, or by " AS " if use_as is true. */ /* * 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 an 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. */ char * quote_qualified_identifier(const char *qualifier, const char *ident) { StringInfoData buf; initStringInfo(&buf); if (qualifier) appendStringInfo(&buf, "%s.", quote_identifier(qualifier)); appendStringInfoString(&buf, quote_identifier(ident)); return buf.data; } /* * 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. * * inGroupBy must be true if we're deparsing a GROUP BY clause. * * 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-17-6.1.0/src/postgres/src_backend_utils_error_assert.c000066400000000000000000000037741477334012600253600ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ExceptionalCondition *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * assert.c * Assert support code. * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/error/assert.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include #ifdef HAVE_EXECINFO_H #include #endif /* * ExceptionalCondition - Handles the failure of an Assert() * * We intentionally do not go through elog() here, on the grounds of * wanting to minimize the amount of infrastructure that has to be * working to report an assertion failure. */ void ExceptionalCondition(const char *conditionName, const char *fileName, int lineNumber) { /* Report the failure on stderr (or local equivalent) */ if (!PointerIsValid(conditionName) || !PointerIsValid(fileName)) write_stderr("TRAP: ExceptionalCondition: bad arguments in PID %d\n", (int) getpid()); else write_stderr("TRAP: failed Assert(\"%s\"), File: \"%s\", Line: %d, PID: %d\n", conditionName, fileName, lineNumber, (int) getpid()); /* Usually this shouldn't be needed, but make sure the msg went out */ fflush(stderr); /* If we have support for it, dump a simple backtrace */ #ifdef HAVE_BACKTRACE_SYMBOLS { void *buf[100]; int nframes; nframes = backtrace(buf, lengthof(buf)); backtrace_symbols_fd(buf, nframes, fileno(stderr)); } #endif /* * If configured to do so, sleep indefinitely to allow user to attach a * debugger. It would be nice to use pg_usleep() here, but that can sleep * at most 2G usec or ~33 minutes, which seems too short. */ #ifdef SLEEP_ON_ASSERT sleep(1000000); #endif abort(); } libpg_query-17-6.1.0/src/postgres/src_backend_utils_error_elog.c000066400000000000000000001544341477334012600250050ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - errstart_cold * - errstart * - PG_exception_stack * - write_stderr * - in_error_recursion_trouble * - error_context_stack * - errordata_stack_depth * - errordata * - should_output_to_server * - is_log_level_output * - should_output_to_client * - recursion_depth * - get_error_stack_entry * - set_stack_entry_domain * - errmsg_internal * - errcode * - errmsg * - errdetail * - errhidestmt * - errhidecontext * - errfinish * - pg_re_throw * - EmitErrorReport * - emit_log_hook * - saved_timeval_set * - formatted_log_time * - send_message_to_server_log * - send_message_to_frontend * - pgwin32_dispatch_queued_signals * - set_stack_entry_location * - matches_backtrace_functions * - backtrace_function_list * - set_backtrace * - FreeErrorDataContents * - geterrcode * - errsave_start * - errsave_finish * - errhint * - errposition * - internalerrposition * - internalerrquery * - geterrposition * - getinternalerrposition * - set_errcontext_domain * - errcontext_msg * - CopyErrorData * - FlushErrorState * - pg_signal_queue * - pg_signal_mask * - pgwin32_dispatch_queued_signals *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * 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-2024, 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/xact.h" #include "libpq/libpq.h" #include "libpq/pqformat.h" #include "mb/pg_wchar.h" #include "miscadmin.h" #include "nodes/miscnodes.h" #include "pgstat.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_hooks.h" #include "utils/memutils.h" #include "utils/ps_status.h" #include "utils/varlena.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 */ /* Processed form of backtrace_functions GUC */ static __thread char *backtrace_function_list; #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 * log_line_prefix, csv logs and JSON logs. */ static __thread bool saved_timeval_set = false; #define FORMATTED_TS_LEN 128 static __thread char formatted_log_time[FORMATTED_TS_LEN]; /* 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 ErrorData *get_error_stack_entry(void); static void set_stack_entry_domain(ErrorData *edata, const char *domain); static void set_stack_entry_location(ErrorData *edata, const char *filename, int lineno, const char *funcname); static bool matches_backtrace_functions(const char *funcname); 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 FreeErrorDataContents(ErrorData *edata); static void write_console(const char *line, int len); static const char *process_log_prefix_padding(const char *p, int *ppadding); static void log_line_prefix(StringInfo buf, ErrorData *edata); static void send_message_to_server_log(ErrorData *edata); static void send_message_to_frontend(ErrorData *edata); static void append_with_tabs(StringInfo buf, const char *str); /* * 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 inline 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 (elevel == WARNING_CLIENT_ONLY) { /* never sent to log, regardless of log_min_level */ return false; } 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; } /* * Policy-setting subroutines. These are fairly simple, but it seems wise * to have the code in just one place. */ /* * should_output_to_server --- should message of given elevel go to the log? */ static inline bool should_output_to_server(int elevel) { return is_log_level_output(elevel, log_min_messages); } /* * should_output_to_client --- should message of given elevel go to the client? */ static inline bool should_output_to_client(int elevel) { return false; } /* * message_level_is_interesting --- would ereport/elog do anything? * * Returns true if ereport/elog with this elevel will not be a no-op. * This is useful to short-circuit any expensive preparatory work that * might be needed for a logging message. There is no point in * prepending this to a bare ereport/elog call, however. */ /* * 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. */ #ifdef ENABLE_NLS #else #endif /* * errstart_cold * A simple wrapper around errstart, but hinted to be "cold". Supporting * compilers are more likely to move code for branches containing this * function into an area away from the calling function's code. This can * result in more commonly executed code being more compact and fitting * on fewer cache lines. */ pg_attribute_cold bool errstart_cold(int elevel, const char *domain) { return errstart(elevel, domain); } /* * 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. */ output_to_server = should_output_to_server(elevel); output_to_client = should_output_to_client(elevel); 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; } } /* Initialize data for this error frame */ edata = get_error_stack_entry(); edata->elevel = elevel; edata->output_to_server = output_to_server; edata->output_to_client = output_to_client; set_stack_entry_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; /* * Any allocations for this error state level should go into ErrorContext */ edata->assoc_context = ErrorContext; recursion_depth--; return true; } /* * 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 */ set_stack_entry_location(edata, filename, lineno, funcname); elevel = edata->elevel; /* * Do processing in ErrorContext, which we hope has enough reserved space * to report an error. */ oldcontext = MemoryContextSwitchTo(ErrorContext); /* Collect backtrace, if enabled and we didn't already */ 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(); } /* Emit the message to the right places */ EmitErrorReport(); /* Now free up subsidiary data attached to stack entry, and release it */ FreeErrorDataContents(edata); 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(NULL); /* * Let the cumulative stats system know. Only mark the session as * terminated by fatal error if there is no other known cause. */ if (pgStatSessionEndCause == DISCONNECT_NORMAL) pgStatSessionEndCause = DISCONNECT_FATAL; /* * 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(NULL); 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(); } /* * errsave_start --- begin a "soft" error-reporting cycle * * If "context" isn't an ErrorSaveContext node, this behaves as * errstart(ERROR, domain), and the errsave() macro ends up acting * exactly like ereport(ERROR, ...). * * If "context" is an ErrorSaveContext node, but the node creator only wants * notification of the fact of a soft error without any details, we just set * the error_occurred flag in the ErrorSaveContext node and return false, * which will cause us to skip the remaining error processing steps. * * Otherwise, create and initialize error stack entry and return true. * Subsequently, errmsg() and perhaps other routines will be called to further * populate the stack entry. Finally, errsave_finish() will be called to * tidy up. */ bool errsave_start(struct Node *context, const char *domain) { ErrorSaveContext *escontext; ErrorData *edata; /* * Do we have a context for soft error reporting? If not, just punt to * errstart(). */ if (context == NULL || !IsA(context, ErrorSaveContext)) return errstart(ERROR, domain); /* Report that a soft error was detected */ escontext = (ErrorSaveContext *) context; escontext->error_occurred = true; /* Nothing else to do if caller wants no further details */ if (!escontext->details_wanted) return false; /* * Okay, crank up a stack entry to store the info in. */ recursion_depth++; /* Initialize data for this error frame */ edata = get_error_stack_entry(); edata->elevel = LOG; /* signal all is well to errsave_finish */ set_stack_entry_domain(edata, domain); /* Select default errcode based on the assumed elevel of ERROR */ edata->sqlerrcode = ERRCODE_INTERNAL_ERROR; /* * Any allocations for this error state level should go into the caller's * context. We don't need to pollute ErrorContext, or even require it to * exist, in this code path. */ edata->assoc_context = CurrentMemoryContext; recursion_depth--; return true; } /* * errsave_finish --- end a "soft" error-reporting cycle * * If errsave_start() decided this was a regular error, behave as * errfinish(). Otherwise, package up the error details and save * them in the ErrorSaveContext node. */ void errsave_finish(struct Node *context, const char *filename, int lineno, const char *funcname) { ErrorSaveContext *escontext = (ErrorSaveContext *) context; ErrorData *edata = &errordata[errordata_stack_depth]; /* verify stack depth before accessing *edata */ CHECK_STACK_DEPTH(); /* * If errsave_start punted to errstart, then elevel will be ERROR or * perhaps even PANIC. Punt likewise to errfinish. */ if (edata->elevel >= ERROR) { errfinish(filename, lineno, funcname); pg_unreachable(); } /* * Else, we should package up the stack entry contents and deliver them to * the caller. */ recursion_depth++; /* Save the last few bits of error state into the stack entry */ set_stack_entry_location(edata, filename, lineno, funcname); /* Replace the LOG value that errsave_start inserted */ edata->elevel = ERROR; /* * We skip calling backtrace and context functions, which are more likely * to cause trouble than provide useful context; they might act on the * assumption that a transaction abort is about to occur. */ /* * Make a copy of the error info for the caller. All the subsidiary * strings are already in the caller's context, so it's sufficient to * flat-copy the stack entry. */ escontext->error_data = palloc_object(ErrorData); memcpy(escontext->error_data, edata, sizeof(ErrorData)); /* Exit error-handling context */ errordata_stack_depth--; recursion_depth--; } /* * get_error_stack_entry --- allocate and initialize a new stack entry * * The entry should be freed, when we're done with it, by calling * FreeErrorDataContents() and then decrementing errordata_stack_depth. * * Returning the entry's address is just a notational convenience, * since it had better be errordata[errordata_stack_depth]. * * Although the error stack is not large, we don't expect to run out of space. * Using more than one entry implies a new error report during error recovery, * which is possible but already suggests we're in trouble. If we exhaust the * stack, almost certainly we are in an infinite loop of errors during error * recovery, so we give up and PANIC. * * (Note that this is distinct from the recursion_depth checks, which * guard against recursion while handling a single stack entry.) */ static ErrorData * get_error_stack_entry(void) { ErrorData *edata; /* Allocate error frame */ errordata_stack_depth++; if (unlikely(errordata_stack_depth >= ERRORDATA_STACK_SIZE)) { /* Wups, stack not big enough */ errordata_stack_depth = -1; /* make room on stack */ ereport(PANIC, (errmsg_internal("ERRORDATA_STACK_SIZE exceeded"))); } /* Initialize error frame to all zeroes/NULLs */ edata = &errordata[errordata_stack_depth]; memset(edata, 0, sizeof(ErrorData)); /* Save errno immediately to ensure error parameter eval can't change it */ edata->saved_errno = errno; return edata; } /* * set_stack_entry_domain --- fill in the internationalization domain */ static void set_stack_entry_domain(ErrorData *edata, const char *domain) { /* 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; } /* * set_stack_entry_location --- fill in code-location details * * Store the values of __FILE__, __LINE__, and __func__ from the call site. * We make an effort to normalize __FILE__, since compilers are inconsistent * about how much of the path they'll include, and we'd prefer that the * behavior not depend on that (especially, that it not vary with build path). */ static void set_stack_entry_location(ErrorData *edata, const char *filename, int lineno, const char *funcname) { if (filename) { const char *slash; /* keep only base name, useful especially for vpath builds */ slash = strrchr(filename, '/'); if (slash) filename = slash + 1; /* Some Windows compilers use backslashes in __FILE__ strings */ slash = strrchr(filename, '\\'); if (slash) filename = slash + 1; } edata->filename = filename; edata->lineno = lineno; edata->funcname = funcname; } /* * matches_backtrace_functions --- checks whether the given funcname matches * backtrace_functions * * See check_backtrace_functions. */ static bool matches_backtrace_functions(const char *funcname) { const char *p; if (!backtrace_function_list || funcname == NULL || funcname[0] == '\0') return false; p = backtrace_function_list; for (;;) { if (*p == '\0') /* end of backtrace_function_list */ break; if (strcmp(funcname, p) == 0) return true; p += strlen(p) + 1; } return false; } /* * 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 /* * 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. */ /* * 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 */ } /* * errhint_plural --- add a hint error message text to the current error, * with support for pluralization of the message text */ /* * 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. */ int errhidestmt(bool hide_stmt) { ErrorData *edata = &errordata[errordata_stack_depth]; /* we don't bother incrementing recursion_depth */ CHECK_STACK_DEPTH(); edata->hide_stmt = hide_stmt; return 0; /* return value does not matter */ } /* * 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. */ int errhidecontext(bool hide_ctx) { ErrorData *edata = &errordata[errordata_stack_depth]; /* we don't bother incrementing recursion_depth */ CHECK_STACK_DEPTH(); edata->hide_ctx = hide_ctx; return 0; /* return value does not matter */ } /* * 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; } /* * geterrlevel --- return the currently set error level * * This is only intended for use in error callback subroutines, since there * is no other place outside elog.c where the concept is meaningful. */ /* * 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); /* * Reset the formatted timestamp fields before emitting any logs. This * includes all the log destinations and emit_log_hook, as the latter * could use log_line_prefix or the formatted timestamps. */ saved_timeval_set = false; formatted_log_time[0] = '\0'; /* * 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 strings. Note that we copy even * theoretically-constant strings such as filename. This is because those * could point into JIT-created code segments that might get unloaded at * transaction cleanup. In some cases we need the copied ErrorData to * survive transaction boundaries, so we'd better copy those strings too. */ if (newedata->filename) newedata->filename = pstrdup(newedata->filename); if (newedata->funcname) newedata->funcname = pstrdup(newedata->funcname); if (newedata->domain) newedata->domain = pstrdup(newedata->domain); if (newedata->context_domain) newedata->context_domain = pstrdup(newedata->context_domain); 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->message_id) newedata->message_id = pstrdup(newedata->message_id); 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. */ /* * FreeErrorDataContents --- free the subsidiary data of an ErrorData. * * This can be used on either an error stack entry or a copied ErrorData. */ static void FreeErrorDataContents(ErrorData *edata) { 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); } /* * 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 */ MemoryContextReset(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. */ edata->output_to_server = should_output_to_server(FATAL); edata->output_to_client = should_output_to_client(FATAL); /* * 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", __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 */ /* * GUC check_hook for backtrace_functions * * 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. */ /* * GUC assign_hook for backtrace_functions */ /* * GUC check_hook for log_destination */ #ifdef HAVE_SYSLOG #endif #ifdef WIN32 #endif /* * GUC assign_hook for log_destination */ /* * GUC assign_hook for syslog_ident */ #ifdef HAVE_SYSLOG #endif /* * GUC assign_hook for syslog_facility */ #ifdef HAVE_SYSLOG #endif #ifdef HAVE_SYSLOG /* * 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. */ /* * Write a message line to the windows event log */ #endif /* WIN32 */ #ifdef WIN32 #else #endif /* * get_formatted_log_time -- compute and get the log timestamp. * * The timestamp is computed if not set yet, so as it is kept consistent * among all the log destinations that require it to be consistent. Note * that the computed timestamp is returned in a static buffer, not * palloc()'d. */ /* * reset_formatted_start_time -- reset the start timestamp */ /* * get_formatted_start_time -- compute and get the start timestamp. * * The timestamp is computed if not set yet. Note that the computed * timestamp is returned in a static buffer, not palloc()'d. */ /* * check_log_of_query -- check if a query can be logged */ /* * get_backend_type_for_log -- backend type for log entries * * Returns a pointer to a static buffer, not palloc()'d. */ /* * 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 log status information using Log_line_prefix. */ /* * Format log status info; append to the provided buffer. */ /* * 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; va_start(ap, fmt); vfprintf(stderr, fmt, ap); fflush(stderr); va_end(ap); } #ifdef WIN32 __thread volatile int pg_signal_queue; __thread int pg_signal_mask; void pgwin32_dispatch_queued_signals(void) {} #endif libpg_query-17-6.1.0/src/postgres/src_backend_utils_fmgr_fmgr.c000066400000000000000000000406021477334012600246030ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - FunctionCall6Coll *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * fmgr.c * The Postgres function manager. * * Portions Copyright (c) 1996-2024, 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/miscnodes.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 */ /* * 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 */ List *configNames; /* GUC names to set, or NIL */ List *configHandles; /* GUC handles to set, or NIL */ List *configValues; /* GUC values to set, or NIL */ 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 FunctionCall6Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6) { LOCAL_FCINFO(fcinfo, 6); Datum result; InitFunctionCallInfoData(*fcinfo, flinfo, 6, 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; fcinfo->args[5].value = arg6; fcinfo->args[5].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 input function, with non-exception * handling of "soft" errors. * * This is basically like InputFunctionCall, but the converted Datum is * returned into *result while the function result is true for success or * false for failure. Also, the caller may pass an ErrorSaveContext node. * (We declare that as "fmNodePtr" to avoid including nodes.h in fmgr.h.) * * If escontext points to an ErrorSaveContext, any "soft" errors detected by * the input function will be reported by filling the escontext struct and * returning false. (The caller can choose to test SOFT_ERROR_OCCURRED(), * but checking the function result instead is usually cheaper.) * * If escontext does not point to an ErrorSaveContext, errors are reported * via ereport(ERROR), so that there is no functional difference from * InputFunctionCall; the result will always be true if control returns. */ /* * Call a directly-named datatype input function, with non-exception * handling of "soft" errors. * * This is like InputFunctionCallSafe, except that it is given a direct * pointer to the C function to call. We assume that that function is * strict. Also, the function cannot be one that needs to * look at FmgrInfo, since there won't be any. */ /* * 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-17-6.1.0/src/postgres/src_backend_utils_init_globals.c000066400000000000000000000063501477334012600253050ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - CritSectionCount * - ExitOnAnyError * - InterruptHoldoffCount * - QueryCancelHoldoffCount * - InterruptPending *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * globals.c * global variable declarations * * Portions Copyright (c) 1996-2024, 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/procnumber.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 /* 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 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 */ /* configurable SLRU buffer sizes */ libpg_query-17-6.1.0/src/postgres/src_backend_utils_mb_mbutils.c000066400000000000000000000523161477334012600247770ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_mbcliplen * - pg_encoding_mbcliplen * - cliplen * - DatabaseEncoding * - pg_verifymbstr * - pg_verify_mbstr * - 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 * - GetMessageEncoding * - MessageEncoding *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * 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-2024, 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/fmgrprotos.h" #include "utils/memutils.h" #include "varatt.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]; static __thread const pg_enc2name *MessageEncoding = &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 src string to another encoding. * * This function has a different API than the other conversion functions. * The caller should've looked up the conversion function using * FindDefaultConversionProc(). Unlike the other functions, the converted * result is not palloc'd. It is written to the caller-supplied buffer * instead. * * src_encoding - encoding to convert from * dest_encoding - encoding to convert to * src, srclen - input buffer and its length in bytes * dest, destlen - destination buffer and its size in bytes * * The output is null-terminated. * * If destlen < srclen * MAX_CONVERSION_INPUT_LENGTH + 1, the converted output * wouldn't necessarily fit in the output buffer, and the function will not * convert the whole input. * * TODO: The conversion function interface is not great. Firstly, it * would be nice to pass through the destination buffer size to the * conversion function, so that if you pass a shorter destination buffer, it * could still continue to fill up the whole buffer. Currently, we have to * assume worst case expansion and stop the conversion short, even if there * is in fact space left in the destination buffer. Secondly, it would be * nice to return the number of bytes written to the caller, to avoid a call * to strlen(). */ /* * 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 */ FunctionCall6(Utf8ToServerConvProc, Int32GetDatum(PG_UTF8), Int32GetDatum(server_encoding), CStringGetDatum((char *) c_as_utf8), CStringGetDatum((char *) s), Int32GetDatum(c_as_utf8_len), BoolGetDatum(false)); } /* * Convert a single Unicode code point into a string in the server encoding. * * Same as pg_unicode_to_server(), except that we don't throw errors, * but simply return false on conversion failure. */ /* 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); if (!PG_VALID_ENCODING(encoding) || pg_enc2gettext_tbl[encoding] == NULL) return false; if (bind_textdomain_codeset(domainname, pg_enc2gettext_tbl[encoding]) != NULL) return true; if (elog_ok) elog(LOG, "bind_textdomain_codeset failed"); else write_stderr("bind_textdomain_codeset failed"); 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). */ int GetMessageEncoding(void) { return MessageEncoding->encoding; } /* * 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(GetDatabaseEncoding(), mbstr, len, noError); } /* * Verify mbstr to make sure that it is validly encoded in the specified * encoding. */ bool pg_verify_mbstr(int encoding, const char *mbstr, int len, bool noError) { int oklen; Assert(PG_VALID_ENCODING(encoding)); oklen = pg_wchar_table[encoding].mbverifystr((const unsigned char *) mbstr, len); if (oklen != len) { if (noError) return false; report_invalid_encoding(encoding, mbstr + oklen, len - oklen); } return true; } /* * 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. * * Note: We cannot use the faster encoding-specific mbverifystr() function * here, because we need to count the number of characters in the string. */ /* * 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. */ #endif /* WIN32 */ libpg_query-17-6.1.0/src/postgres/src_backend_utils_misc_guc_tables.c000066400000000000000000000227501477334012600257640ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - log_min_messages * - backtrace_functions * - check_function_bodies *-------------------------------------------------------------------- */ /*-------------------------------------------------------------------- * * guc_tables.c * * Static tables for the Grand Unified Configuration scheme. * * Many of these tables are const. However, ConfigureNamesBool[] * and so on are not, because the structs in those arrays are actually * the live per-variable state data that guc.c manipulates. While many of * their fields are intended to be constant, some fields change at runtime. * * * Copyright (c) 2000-2024, PostgreSQL Global Development Group * Written by Peter Eisentraut . * * IDENTIFICATION * src/backend/utils/misc/guc_tables.c * *-------------------------------------------------------------------- */ #include "postgres.h" #include #include #ifdef HAVE_SYSLOG #include #endif #include "access/commit_ts.h" #include "access/gin.h" #include "access/slru.h" #include "access/toast_compression.h" #include "access/twophase.h" #include "access/xlog_internal.h" #include "access/xlogprefetcher.h" #include "access/xlogrecovery.h" #include "archive/archive_module.h" #include "catalog/namespace.h" #include "catalog/storage.h" #include "commands/async.h" #include "commands/event_trigger.h" #include "commands/tablespace.h" #include "commands/trigger.h" #include "commands/user.h" #include "commands/vacuum.h" #include "common/file_utils.h" #include "common/scram-common.h" #include "jit/jit.h" #include "libpq/auth.h" #include "libpq/libpq.h" #include "libpq/scram.h" #include "nodes/queryjumble.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/parser.h" #include "pgstat.h" #include "postmaster/autovacuum.h" #include "postmaster/bgworker_internals.h" #include "postmaster/bgwriter.h" #include "postmaster/postmaster.h" #include "postmaster/startup.h" #include "postmaster/syslogger.h" #include "postmaster/walsummarizer.h" #include "postmaster/walwriter.h" #include "replication/logicallauncher.h" #include "replication/slot.h" #include "replication/slotsync.h" #include "replication/syncrep.h" #include "storage/bufmgr.h" #include "storage/large_object.h" #include "storage/pg_shmem.h" #include "storage/predicate.h" #include "storage/standby.h" #include "tcop/tcopprot.h" #include "tsearch/ts_cache.h" #include "utils/builtins.h" #include "utils/bytea.h" #include "utils/float.h" #include "utils/guc_hooks.h" #include "utils/guc_tables.h" #include "utils/inval.h" #include "utils/memutils.h" #include "utils/pg_locale.h" #include "utils/plancache.h" #include "utils/ps_status.h" #include "utils/xml.h" /* This value is normally passed in from the Makefile */ #ifndef PG_KRB_SRVTAB #define PG_KRB_SRVTAB "" #endif /* XXX these should appear in other modules' header files */ extern bool Log_disconnections; extern bool Trace_connection_negotiation; extern int CommitDelay; extern int CommitSiblings; extern char *default_tablespace; extern char *temp_tablespaces; extern bool ignore_checksum_failure; extern bool ignore_invalid_pages; #ifdef TRACE_SYNCSCAN extern bool trace_syncscan; #endif #ifdef DEBUG_BOUNDED_SORT extern bool optimize_bounded_sort; #endif /* * 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(stats_fetch_consistency) == (PGSTAT_FETCH_CONSISTENCY_SNAPSHOT + 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 "auto" 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". */ StaticAssertDecl(lengthof(ssl_protocol_versions_info) == (PG_TLS1_3_VERSION + 2), "array length mismatch"); #ifdef HAVE_SYNCFS #endif #ifndef WIN32 #endif #ifndef EXEC_BACKEND #endif #ifdef WIN32 #endif #ifdef USE_LZ4 #endif #ifdef USE_LZ4 #endif #ifdef USE_ZSTD #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 wal_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 char *backtrace_functions; /* * 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. */ #ifdef HAVE_SYSLOG #define DEFAULT_SYSLOG_FACILITY LOG_LOCAL0 #else #define DEFAULT_SYSLOG_FACILITY 0 #endif #ifdef USE_ASSERT_CHECKING #define DEFAULT_ASSERT_ENABLED true #else #define DEFAULT_ASSERT_ENABLED false #endif /* should be static, but commands/variable.c needs to get at this */ /* should be static, but guc.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 + 1), "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"); /* * 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. */ #ifdef BTREE_BUILD_STATS #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 DISCARD_CACHES_ENABLED #if defined(CLOBBER_CACHE_RECURSIVELY) #else #endif #else /* not DISCARD_CACHES_ENABLED */ #endif /* not DISCARD_CACHES_ENABLED */ #ifdef USE_SSL #else #endif #ifdef USE_OPENSSL #else #endif #ifdef USE_SSL #else #endif libpg_query-17-6.1.0/src/postgres/src_backend_utils_mmgr_alignedalloc.c000066400000000000000000000117501477334012600262770ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - AlignedAllocFree * - AlignedAllocRealloc * - AlignedAllocGetChunkContext * - AlignedAllocGetChunkSpace *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * alignedalloc.c * Allocator functions to implement palloc_aligned * * This is not a fully-fledged MemoryContext type as there is no means to * create a MemoryContext of this type. The code here only serves to allow * operations such as pfree() and repalloc() to work correctly on a memory * chunk that was allocated by palloc_aligned(). * * Portions Copyright (c) 2022-2024, PostgreSQL Global Development Group * * IDENTIFICATION * src/backend/utils/mmgr/alignedalloc.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "utils/memdebug.h" #include "utils/memutils_memorychunk.h" /* * AlignedAllocFree * Frees allocated memory; memory is removed from its owning context. */ void AlignedAllocFree(void *pointer) { MemoryChunk *chunk = PointerGetMemoryChunk(pointer); void *unaligned; VALGRIND_MAKE_MEM_DEFINED(chunk, sizeof(MemoryChunk)); Assert(!MemoryChunkIsExternal(chunk)); /* obtain the original (unaligned) allocated pointer */ unaligned = MemoryChunkGetBlock(chunk); #ifdef MEMORY_CONTEXT_CHECKING /* Test for someone scribbling on unused space in chunk */ if (!sentinel_ok(pointer, chunk->requested_size)) elog(WARNING, "detected write past chunk end in %s %p", GetMemoryChunkContext(unaligned)->name, chunk); #endif pfree(unaligned); } /* * AlignedAllocRealloc * Change the allocated size of a chunk and return possibly a different * pointer to a memory address aligned to the same boundary as the * originally requested alignment. The contents of 'pointer' will be * copied into the returned pointer up until 'size'. Any additional * memory will be uninitialized. */ void * AlignedAllocRealloc(void *pointer, Size size, int flags) { MemoryChunk *redirchunk = PointerGetMemoryChunk(pointer); Size alignto; void *unaligned; MemoryContext ctx; Size old_size; void *newptr; VALGRIND_MAKE_MEM_DEFINED(redirchunk, sizeof(MemoryChunk)); alignto = MemoryChunkGetValue(redirchunk); unaligned = MemoryChunkGetBlock(redirchunk); /* sanity check this is a power of 2 value */ Assert((alignto & (alignto - 1)) == 0); /* * Determine the size of the original allocation. We can't determine this * exactly as GetMemoryChunkSpace() returns the total space used for the * allocation, which for contexts like aset includes rounding up to the * next power of 2. However, this value is just used to memcpy() the old * data into the new allocation, so we only need to concern ourselves with * not reading beyond the end of the original allocation's memory. The * drawback here is that we may copy more bytes than we need to, which * only amounts to wasted effort. We can safely subtract the extra bytes * that we requested to allow us to align the pointer. We must also * subtract the space for the unaligned pointer's MemoryChunk since * GetMemoryChunkSpace should have included that. This does assume that * all context types use MemoryChunk as a chunk header. */ old_size = GetMemoryChunkSpace(unaligned) - PallocAlignedExtraBytes(alignto) - sizeof(MemoryChunk); #ifdef MEMORY_CONTEXT_CHECKING /* check that GetMemoryChunkSpace returned something realistic */ Assert(old_size >= redirchunk->requested_size); #endif ctx = GetMemoryChunkContext(unaligned); newptr = MemoryContextAllocAligned(ctx, size, alignto, flags); /* * We may memcpy beyond the end of the original allocation request size, * so we must mark the entire allocation as defined. */ if (likely(newptr != NULL)) { VALGRIND_MAKE_MEM_DEFINED(pointer, old_size); memcpy(newptr, pointer, Min(size, old_size)); } pfree(unaligned); return newptr; } /* * AlignedAllocGetChunkContext * Return the MemoryContext that 'pointer' belongs to. */ MemoryContext AlignedAllocGetChunkContext(void *pointer) { MemoryChunk *redirchunk = PointerGetMemoryChunk(pointer); MemoryContext cxt; VALGRIND_MAKE_MEM_DEFINED(redirchunk, sizeof(MemoryChunk)); Assert(!MemoryChunkIsExternal(redirchunk)); cxt = GetMemoryChunkContext(MemoryChunkGetBlock(redirchunk)); VALGRIND_MAKE_MEM_NOACCESS(redirchunk, sizeof(MemoryChunk)); return cxt; } /* * AlignedAllocGetChunkSpace * Given a currently-allocated chunk, determine the total space * it occupies (including all memory-allocation overhead). */ Size AlignedAllocGetChunkSpace(void *pointer) { MemoryChunk *redirchunk = PointerGetMemoryChunk(pointer); void *unaligned; Size space; VALGRIND_MAKE_MEM_DEFINED(redirchunk, sizeof(MemoryChunk)); unaligned = MemoryChunkGetBlock(redirchunk); space = GetMemoryChunkSpace(unaligned); VALGRIND_MAKE_MEM_NOACCESS(redirchunk, sizeof(MemoryChunk)); return space; } libpg_query-17-6.1.0/src/postgres/src_backend_utils_mmgr_aset.c000066400000000000000000001545101477334012600246170ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - AllocSetAlloc * - AllocSetAllocLarge * - AllocSetFreeIndex * - AllocSetAllocFromNewBlock * - AllocSetAllocChunkFromBlock * - AllocSetFree * - AllocSetRealloc * - AllocSetReset * - AllocSetDelete * - context_freelists * - AllocSetGetChunkContext * - AllocSetGetChunkSpace * - AllocSetIsEmpty * - AllocSetStats * - AllocSetCheck * - AllocSetContextCreateInternal * - AllocSetDeleteFreeList *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * aset.c * Allocation set definitions. * * AllocSet is our standard implementation of the abstract MemoryContext * type. * * * Portions Copyright (c) 1996-2024, 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" #include "utils/memutils_internal.h" #include "utils/memutils_memorychunk.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<= 0 && (fidx) < ALLOCSET_NUM_FREELISTS) /* Determine the size of the chunk based on the freelist index */ #define GetChunkSizeFromFreeListIdx(fidx) \ ((((Size) 1) << ALLOC_MINBITS) << (fidx)) /* * AllocSetContext is our standard implementation of MemoryContext. * * Note: header.isReset means there is nothing for AllocSetReset to do. * This is different from the aset being physically empty (empty blocks list) * because we will still have a keeper block. It's also different from the set * being logically empty, because we don't attempt to detect pfree'ing the * last active chunk. */ typedef struct AllocSetContext { MemoryContextData header; /* Standard memory-context fields */ /* Info about storage allocated in this context: */ AllocBlock blocks; /* head of list of blocks in this set */ MemoryChunk *freelist[ALLOCSET_NUM_FREELISTS]; /* free chunk lists */ /* Allocation parameters for this context: */ uint32 initBlockSize; /* initial block size */ uint32 maxBlockSize; /* maximum block size */ uint32 nextBlockSize; /* next block size to allocate */ uint32 allocChunkLimit; /* effective chunk size limit */ /* freelist this context could be put in, or -1 if not a candidate: */ int freeListIndex; /* index in context_freelists[], or -1 */ } AllocSetContext; typedef AllocSetContext *AllocSet; /* * AllocBlock * An AllocBlock is the unit of memory that is obtained by aset.c * from malloc(). It contains one or more MemoryChunks, which are * the units requested by palloc() and freed by pfree(). MemoryChunks * cannot be returned to malloc() individually, instead they are put * on freelists by pfree() and re-used by the next palloc() that has * a matching request size. * * AllocBlockData is the header data for a block --- the usable space * within the block begins at the next alignment boundary. */ typedef struct AllocBlockData { AllocSet aset; /* aset that owns this block */ AllocBlock prev; /* prev block in aset's blocks list, if any */ AllocBlock next; /* next block in aset's blocks list, if any */ char *freeptr; /* start of free space in this block */ char *endptr; /* end of space in this block */ } AllocBlockData; /* * AllocPointerIsValid * True iff pointer is valid allocation pointer. */ #define AllocPointerIsValid(pointer) PointerIsValid(pointer) /* * AllocSetIsValid * True iff set is valid allocation set. */ #define AllocSetIsValid(set) \ (PointerIsValid(set) && IsA(set, AllocSetContext)) /* * AllocBlockIsValid * True iff block is valid block of allocation set. */ #define AllocBlockIsValid(block) \ (PointerIsValid(block) && AllocSetIsValid((block)->aset)) /* * We always store external chunks on a dedicated block. This makes fetching * the block from an external chunk easy since it's always the first and only * chunk on the block. */ #define ExternalChunkGetBlock(chunk) \ (AllocBlock) ((char *) chunk - ALLOC_BLOCKHDRSZ) /* * Rather than repeatedly creating and deleting memory contexts, we keep some * freed contexts in freelists so that we can hand them out again with little * work. Before putting a context in a freelist, we reset it so that it has * only its initial malloc chunk and no others. To be a candidate for a * freelist, a context must have the same minContextSize/initBlockSize as * other contexts in the list; but its maxBlockSize is irrelevant since that * doesn't affect the size of the initial chunk. * * We currently provide one freelist for ALLOCSET_DEFAULT_SIZES contexts * and one for ALLOCSET_SMALL_SIZES contexts; the latter works for * ALLOCSET_START_SMALL_SIZES too, since only the maxBlockSize differs. * * Ordinarily, we re-use freelist contexts in last-in-first-out order, in * hopes of improving locality of reference. But if there get to be too * many contexts in the list, we'd prefer to drop the most-recently-created * contexts in hopes of keeping the process memory map compact. * We approximate that by simply deleting all existing entries when the list * overflows, on the assumption that queries that allocate a lot of contexts * will probably free them in more or less reverse order of allocation. * * Contexts in a freelist are chained via their nextchild pointers. */ #define MAX_FREE_CONTEXTS 100 /* arbitrary limit on freelist length */ /* Obtain the keeper block for an allocation set */ #define KeeperBlock(set) \ ((AllocBlock) (((char *) set) + MAXALIGN(sizeof(AllocSetContext)))) /* Check if the block is the keeper block of the given allocation set */ #define IsKeeperBlock(set, block) ((block) == (KeeperBlock(set))) typedef struct AllocSetFreeList { int num_free; /* current list length */ AllocSetContext *first_free; /* list header */ } AllocSetFreeList; /* context_freelists[0] is for default params, [1] for small params */ static __thread AllocSetFreeList context_freelists[2] = { { 0, NULL }, { 0, NULL } }; /* ---------- * AllocSetFreeIndex - * * Depending on the size of an allocation compute which freechunk * list of the alloc set it belongs to. Caller must have verified * that size <= ALLOC_CHUNK_LIMIT. * ---------- */ static inline int AllocSetFreeIndex(Size size) { int idx; if (size > (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, for platforms without intrinsic support, 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_BITSCAN_REVERSE idx = pg_leftmost_one_pos32((uint32) size - 1) - ALLOC_MINBITS + 1; #else uint32 t, tsize; /* Statically assert that we only have a 16-bit input value. */ StaticAssertDecl(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; /* ensure MemoryChunk's size is properly maxaligned */ StaticAssertDecl(ALLOC_CHUNKHDRSZ == MAXALIGN(ALLOC_CHUNKHDRSZ), "sizeof(MemoryChunk) is not maxaligned"); /* check we have enough space to store the freelist link */ StaticAssertDecl(sizeof(AllocFreeListLink) <= (1 << ALLOC_MINBITS), "sizeof(AllocFreeListLink) larger than minimum allocation size"); /* * First, validate allocation parameters. Once these were regular runtime * tests 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. We restrict the maximum block size to * MEMORYCHUNK_MAX_BLOCKOFFSET as MemoryChunks are limited to this in * regards to addressing the offset between the chunk and the block that * the chunk is stored on. We would be unable to store the offset between * the chunk and block for any chunks that were beyond * MEMORYCHUNK_MAX_BLOCKOFFSET bytes into the block if the block was to be * larger than this. */ 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)); Assert(maxBlockSize <= MEMORYCHUNK_MAX_BLOCKOFFSET); /* * 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, MCTX_ASET_ID, parent, name); ((MemoryContext) set)->mem_allocated = KeeperBlock(set)->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 = KeeperBlock(set); 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; /* Finish filling in aset-specific parts of the context header */ MemSetAligned(set->freelist, 0, sizeof(set->freelist)); set->initBlockSize = (uint32) initBlockSize; set->maxBlockSize = (uint32) maxBlockSize; set->nextBlockSize = (uint32) 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. * * Also, allocChunkLimit must not exceed ALLOCSET_SEPARATE_THRESHOLD. */ StaticAssertStmt(ALLOC_CHUNK_LIMIT == ALLOCSET_SEPARATE_THRESHOLD, "ALLOC_CHUNK_LIMIT != ALLOCSET_SEPARATE_THRESHOLD"); /* * Determine the maximum size that a chunk can be before we allocate an * entire AllocBlock dedicated for that chunk. We set the absolute limit * of that size as ALLOC_CHUNK_LIMIT but we reduce it further so that we * can fit about ALLOC_CHUNK_FRACTION chunks this size on a maximally * sized block. (We opt to keep allocChunkLimit a power-of-2 value * primarily for legacy reasons rather than calculating it so that exactly * ALLOC_CHUNK_FRACTION chunks fit on a maximally sized block.) */ 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, MCTX_ASET_ID, 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. */ void AllocSetReset(MemoryContext context) { AllocSet set = (AllocSet) context; AllocBlock block; Size keepersize PG_USED_FOR_ASSERTS_ONLY; Assert(AllocSetIsValid(set)); #ifdef MEMORY_CONTEXT_CHECKING /* Check for corruption and leaks before freeing */ AllocSetCheck(context); #endif /* Remember keeper block size for Assert below */ keepersize = KeeperBlock(set)->endptr - ((char *) set); /* Clear chunk freelists */ MemSetAligned(set->freelist, 0, sizeof(set->freelist)); block = set->blocks; /* New blocks list will be just the keeper block */ set->blocks = KeeperBlock(set); while (block != NULL) { AllocBlock next = block->next; if (IsKeeperBlock(set, block)) { /* 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. */ void AllocSetDelete(MemoryContext context) { AllocSet set = (AllocSet) context; AllocBlock block = set->blocks; Size keepersize PG_USED_FOR_ASSERTS_ONLY; Assert(AllocSetIsValid(set)); #ifdef MEMORY_CONTEXT_CHECKING /* Check for corruption and leaks before freeing */ AllocSetCheck(context); #endif /* Remember keeper block size for Assert below */ keepersize = KeeperBlock(set)->endptr - ((char *) set); /* * 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 (!IsKeeperBlock(set, block)) context->mem_allocated -= block->endptr - ((char *) block); #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); #endif if (!IsKeeperBlock(set, block)) free(block); block = next; } Assert(context->mem_allocated == keepersize); /* Finally, free the context header, including the keeper block */ free(set); } /* * Helper for AllocSetAlloc() that allocates an entire block for the chunk. * * AllocSetAlloc()'s comment explains why this is separate. */ pg_noinline static void * AllocSetAllocLarge(MemoryContext context, Size size, int flags) { AllocSet set = (AllocSet) context; AllocBlock block; MemoryChunk *chunk; Size chunk_size; Size blksize; /* validate 'size' is within the limits for the given 'flags' */ MemoryContextCheckSize(context, size, flags); #ifdef MEMORY_CONTEXT_CHECKING /* ensure there's always space for the sentinel byte */ chunk_size = MAXALIGN(size + 1); #else chunk_size = MAXALIGN(size); #endif blksize = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; block = (AllocBlock) malloc(blksize); if (block == NULL) return MemoryContextAllocationFailure(context, size, flags); context->mem_allocated += blksize; block->aset = set; block->freeptr = block->endptr = ((char *) block) + blksize; chunk = (MemoryChunk *) (((char *) block) + ALLOC_BLOCKHDRSZ); /* mark the MemoryChunk as externally managed */ MemoryChunkSetHdrMaskExternal(chunk, MCTX_ASET_ID); #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ Assert(size < chunk_size); set_sentinel(MemoryChunkGetPointer(chunk), size); #endif #ifdef RANDOMIZE_ALLOCATED_MEMORY /* fill the allocated space with junk */ randomize_mem((char *) MemoryChunkGetPointer(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 *) MemoryChunkGetPointer(chunk) + size, chunk_size - size); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOC_CHUNKHDRSZ); return MemoryChunkGetPointer(chunk); } /* * Small helper for allocating a new chunk from a chunk, to avoid duplicating * the code between AllocSetAlloc() and AllocSetAllocFromNewBlock(). */ static inline void * AllocSetAllocChunkFromBlock(MemoryContext context, AllocBlock block, Size size, Size chunk_size, int fidx) { MemoryChunk *chunk; chunk = (MemoryChunk *) (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); /* store the free list index in the value field */ MemoryChunkSetHdrMask(chunk, block, fidx, MCTX_ASET_ID); #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ if (size < chunk_size) set_sentinel(MemoryChunkGetPointer(chunk), size); #endif #ifdef RANDOMIZE_ALLOCATED_MEMORY /* fill the allocated space with junk */ randomize_mem((char *) MemoryChunkGetPointer(chunk), size); #endif /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) MemoryChunkGetPointer(chunk) + size, chunk_size - size); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOC_CHUNKHDRSZ); return MemoryChunkGetPointer(chunk); } /* * Helper for AllocSetAlloc() that allocates a new block and returns a chunk * allocated from it. * * AllocSetAlloc()'s comment explains why this is separate. */ pg_noinline static void * AllocSetAllocFromNewBlock(MemoryContext context, Size size, int flags, int fidx) { AllocSet set = (AllocSet) context; AllocBlock block; Size availspace; Size blksize; Size required_size; Size chunk_size; /* due to the keeper block set->blocks should always be valid */ Assert(set->blocks != NULL); block = set->blocks; availspace = block->endptr - block->freeptr; /* * 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)) { AllocFreeListLink *link; MemoryChunk *chunk; 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 != GetChunkSizeFromFreeListIdx(a_fidx)) { a_fidx--; Assert(a_fidx >= 0); availchunk = GetChunkSizeFromFreeListIdx(a_fidx); } chunk = (MemoryChunk *) (block->freeptr); /* Prepare to initialize the chunk header. */ VALGRIND_MAKE_MEM_UNDEFINED(chunk, ALLOC_CHUNKHDRSZ); block->freeptr += (availchunk + ALLOC_CHUNKHDRSZ); availspace -= (availchunk + ALLOC_CHUNKHDRSZ); /* store the freelist index in the value field */ MemoryChunkSetHdrMask(chunk, block, a_fidx, MCTX_ASET_ID); #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = InvalidAllocSize; /* mark it free */ #endif /* push this chunk onto the free list */ link = GetFreeListLink(chunk); VALGRIND_MAKE_MEM_DEFINED(link, sizeof(AllocFreeListLink)); link->next = set->freelist[a_fidx]; VALGRIND_MAKE_MEM_NOACCESS(link, sizeof(AllocFreeListLink)); set->freelist[a_fidx] = chunk; } /* * 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; /* Choose the actual chunk size to allocate */ chunk_size = GetChunkSizeFromFreeListIdx(fidx); Assert(chunk_size >= size); /* * 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 MemoryContextAllocationFailure(context, size, flags); 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; return AllocSetAllocChunkFromBlock(context, block, size, chunk_size, fidx); } /* * AllocSetAlloc * Returns a pointer to allocated memory of given size or raises an ERROR * on allocation failure, or returns NULL when flags contains * MCXT_ALLOC_NO_OOM. * * 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! * * This function should only contain the most common code paths. Everything * else should be in pg_noinline helper functions, thus avoiding the overhead * of creating a stack frame for the common cases. Allocating memory is often * a bottleneck in many workloads, so avoiding stack frame setup is * worthwhile. Helper functions should always directly return the newly * allocated memory so that we can just return that address directly as a tail * call. */ void * AllocSetAlloc(MemoryContext context, Size size, int flags) { AllocSet set = (AllocSet) context; AllocBlock block; MemoryChunk *chunk; int fidx; Size chunk_size; Size availspace; Assert(AllocSetIsValid(set)); /* due to the keeper block set->blocks should never be NULL */ Assert(set->blocks != NULL); /* * If requested size exceeds maximum for chunks we hand the request off to * AllocSetAllocLarge(). */ if (size > set->allocChunkLimit) return AllocSetAllocLarge(context, size, flags); /* * 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. * * Note that we don't attempt to ensure there's space for the sentinel * byte here. We expect a large proportion of allocations to be for sizes * which are already a power of 2. If we were to always make space for a * sentinel byte in MEMORY_CONTEXT_CHECKING builds, then we'd end up * doubling the memory requirements for such allocations. */ fidx = AllocSetFreeIndex(size); chunk = set->freelist[fidx]; if (chunk != NULL) { AllocFreeListLink *link = GetFreeListLink(chunk); /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOC_CHUNKHDRSZ); Assert(fidx == MemoryChunkGetValue(chunk)); /* pop this chunk off the freelist */ VALGRIND_MAKE_MEM_DEFINED(link, sizeof(AllocFreeListLink)); set->freelist[fidx] = link->next; VALGRIND_MAKE_MEM_NOACCESS(link, sizeof(AllocFreeListLink)); #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ if (size < GetChunkSizeFromFreeListIdx(fidx)) set_sentinel(MemoryChunkGetPointer(chunk), size); #endif #ifdef RANDOMIZE_ALLOCATED_MEMORY /* fill the allocated space with junk */ randomize_mem((char *) MemoryChunkGetPointer(chunk), size); #endif /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) MemoryChunkGetPointer(chunk) + size, GetChunkSizeFromFreeListIdx(fidx) - size); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOC_CHUNKHDRSZ); return MemoryChunkGetPointer(chunk); } /* * Choose the actual chunk size to allocate. */ chunk_size = GetChunkSizeFromFreeListIdx(fidx); Assert(chunk_size >= size); block = set->blocks; availspace = block->endptr - block->freeptr; /* * 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 (unlikely(availspace < (chunk_size + ALLOC_CHUNKHDRSZ))) return AllocSetAllocFromNewBlock(context, size, flags, fidx); /* There's enough space on the current block, so allocate from that */ return AllocSetAllocChunkFromBlock(context, block, size, chunk_size, fidx); } /* * AllocSetFree * Frees allocated memory; memory is removed from the set. */ void AllocSetFree(void *pointer) { AllocSet set; MemoryChunk *chunk = PointerGetMemoryChunk(pointer); /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOC_CHUNKHDRSZ); if (MemoryChunkIsExternal(chunk)) { /* Release single-chunk block. */ AllocBlock block = ExternalChunkGetBlock(chunk); /* * Try to verify that we have a sane block pointer: the block header * should reference an aset and the freeptr should match the endptr. */ if (!AllocBlockIsValid(block) || block->freeptr != block->endptr) elog(ERROR, "could not find block containing chunk %p", chunk); set = block->aset; #ifdef MEMORY_CONTEXT_CHECKING { /* Test for someone scribbling on unused space in chunk */ Assert(chunk->requested_size < (block->endptr - (char *) pointer)); if (!sentinel_ok(pointer, chunk->requested_size)) elog(WARNING, "detected write past chunk end in %s %p", set->header.name, chunk); } #endif /* 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; set->header.mem_allocated -= block->endptr - ((char *) block); #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); #endif free(block); } else { AllocBlock block = MemoryChunkGetBlock(chunk); int fidx; AllocFreeListLink *link; /* * In this path, for speed reasons we just Assert that the referenced * block is good. We can also Assert that the value field is sane. * Future field experience may show that these Asserts had better * become regular runtime test-and-elog checks. */ Assert(AllocBlockIsValid(block)); set = block->aset; fidx = MemoryChunkGetValue(chunk); Assert(FreeListIdxIsValid(fidx)); link = GetFreeListLink(chunk); #ifdef MEMORY_CONTEXT_CHECKING /* Test for someone scribbling on unused space in chunk */ if (chunk->requested_size < GetChunkSizeFromFreeListIdx(fidx)) if (!sentinel_ok(pointer, chunk->requested_size)) elog(WARNING, "detected write past chunk end in %s %p", set->header.name, chunk); #endif #ifdef CLOBBER_FREED_MEMORY wipe_mem(pointer, GetChunkSizeFromFreeListIdx(fidx)); #endif /* push this chunk onto the top of the free list */ VALGRIND_MAKE_MEM_DEFINED(link, sizeof(AllocFreeListLink)); link->next = set->freelist[fidx]; VALGRIND_MAKE_MEM_NOACCESS(link, sizeof(AllocFreeListLink)); set->freelist[fidx] = chunk; #ifdef MEMORY_CONTEXT_CHECKING /* * Reset requested_size to InvalidAllocSize in chunks that are on free * list. */ chunk->requested_size = InvalidAllocSize; #endif } } /* * 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.) */ void * AllocSetRealloc(void *pointer, Size size, int flags) { AllocBlock block; AllocSet set; MemoryChunk *chunk = PointerGetMemoryChunk(pointer); Size oldchksize; int fidx; /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOC_CHUNKHDRSZ); if (MemoryChunkIsExternal(chunk)) { /* * 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. */ Size chksize; Size blksize; Size oldblksize; block = ExternalChunkGetBlock(chunk); /* * Try to verify that we have a sane block pointer: the block header * should reference an aset and the freeptr should match the endptr. */ if (!AllocBlockIsValid(block) || block->freeptr != block->endptr) elog(ERROR, "could not find block containing chunk %p", chunk); set = block->aset; /* only check size in paths where the limits could be hit */ MemoryContextCheckSize((MemoryContext) set, size, flags); oldchksize = block->endptr - (char *) pointer; #ifdef MEMORY_CONTEXT_CHECKING /* Test for someone scribbling on unused space in chunk */ Assert(chunk->requested_size < oldchksize); if (!sentinel_ok(pointer, chunk->requested_size)) elog(WARNING, "detected write past chunk end in %s %p", set->header.name, chunk); #endif #ifdef MEMORY_CONTEXT_CHECKING /* ensure there's always space for the sentinel byte */ chksize = MAXALIGN(size + 1); #else chksize = MAXALIGN(size); #endif /* Do the realloc */ blksize = chksize + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; oldblksize = block->endptr - ((char *) block); block = (AllocBlock) realloc(block, blksize); if (block == NULL) { /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOC_CHUNKHDRSZ); return MemoryContextAllocationFailure(&set->header, size, flags); } /* updated separately, not to underflow when (oldblksize > blksize) */ set->header.mem_allocated -= oldblksize; set->header.mem_allocated += blksize; block->freeptr = block->endptr = ((char *) block) + blksize; /* Update pointers since block has likely been moved */ chunk = (MemoryChunk *) (((char *) block) + ALLOC_BLOCKHDRSZ); pointer = MemoryChunkGetPointer(chunk); if (block->prev) block->prev->next = block; else set->blocks = block; if (block->next) block->next->prev = block; #ifdef MEMORY_CONTEXT_CHECKING #ifdef RANDOMIZE_ALLOCATED_MEMORY /* * We can only randomize the extra space if we know the prior request. * When using Valgrind, randomize_mem() also marks memory UNDEFINED. */ if (size > chunk->requested_size) randomize_mem((char *) pointer + chunk->requested_size, size - chunk->requested_size); #else /* * If this is an increase, realloc() will have marked any * newly-allocated part (from oldchksize to chksize) UNDEFINED, but we * also need to adjust trailing bytes from the old allocation (from * chunk->requested_size to oldchksize) as they are marked NOACCESS. * Make sure not to mark too many bytes in case chunk->requested_size * < size < oldchksize. */ #ifdef USE_VALGRIND if (Min(size, oldchksize) > chunk->requested_size) VALGRIND_MAKE_MEM_UNDEFINED((char *) pointer + chunk->requested_size, Min(size, oldchksize) - chunk->requested_size); #endif #endif chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ Assert(size < chksize); set_sentinel(pointer, size); #else /* !MEMORY_CONTEXT_CHECKING */ /* * We may need to adjust marking of bytes from the old allocation as * some of them may be marked NOACCESS. We don't know how much of the * old chunk size was the requested size; it could have been as small * as one byte. We have to be conservative and just mark the entire * old portion DEFINED. Make sure not to mark memory beyond the new * allocation in case it's smaller than the old one. */ VALGRIND_MAKE_MEM_DEFINED(pointer, Min(size, oldchksize)); #endif /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) pointer + size, chksize - size); /* Disallow access to the chunk header . */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOC_CHUNKHDRSZ); return pointer; } block = MemoryChunkGetBlock(chunk); /* * In this path, for speed reasons we just Assert that the referenced * block is good. We can also Assert that the value field is sane. Future * field experience may show that these Asserts had better become regular * runtime test-and-elog checks. */ Assert(AllocBlockIsValid(block)); set = block->aset; fidx = MemoryChunkGetValue(chunk); Assert(FreeListIdxIsValid(fidx)); oldchksize = GetChunkSizeFromFreeListIdx(fidx); #ifdef MEMORY_CONTEXT_CHECKING /* Test for someone scribbling on unused space in chunk */ if (chunk->requested_size < oldchksize) if (!sentinel_ok(pointer, chunk->requested_size)) elog(WARNING, "detected write past chunk end in %s %p", set->header.name, chunk); #endif /* * 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.) */ if (oldchksize >= 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, oldchksize - size); /* set mark to catch clobber of "unused" space */ if (size < oldchksize) 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, oldchksize); VALGRIND_MAKE_MEM_DEFINED(pointer, size); #endif /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOC_CHUNKHDRSZ); 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; Size oldsize; /* allocate new chunk (this also checks size is valid) */ newPointer = AllocSetAlloc((MemoryContext) set, size, flags); /* leave immediately if request was not completed */ if (newPointer == NULL) { /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOC_CHUNKHDRSZ); return MemoryContextAllocationFailure((MemoryContext) set, size, flags); } /* * 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 oldsize = oldchksize; VALGRIND_MAKE_MEM_DEFINED(pointer, oldsize); #endif /* transfer existing data (certain to fit) */ memcpy(newPointer, pointer, oldsize); /* free old chunk */ AllocSetFree(pointer); return newPointer; } } /* * AllocSetGetChunkContext * Return the MemoryContext that 'pointer' belongs to. */ MemoryContext AllocSetGetChunkContext(void *pointer) { MemoryChunk *chunk = PointerGetMemoryChunk(pointer); AllocBlock block; AllocSet set; /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOC_CHUNKHDRSZ); if (MemoryChunkIsExternal(chunk)) block = ExternalChunkGetBlock(chunk); else block = (AllocBlock) MemoryChunkGetBlock(chunk); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOC_CHUNKHDRSZ); Assert(AllocBlockIsValid(block)); set = block->aset; return &set->header; } /* * AllocSetGetChunkSpace * Given a currently-allocated chunk, determine the total space * it occupies (including all memory-allocation overhead). */ Size AllocSetGetChunkSpace(void *pointer) { MemoryChunk *chunk = PointerGetMemoryChunk(pointer); int fidx; /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOC_CHUNKHDRSZ); if (MemoryChunkIsExternal(chunk)) { AllocBlock block = ExternalChunkGetBlock(chunk); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOC_CHUNKHDRSZ); Assert(AllocBlockIsValid(block)); return block->endptr - (char *) chunk; } fidx = MemoryChunkGetValue(chunk); Assert(FreeListIdxIsValid(fidx)); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOC_CHUNKHDRSZ); return GetChunkSizeFromFreeListIdx(fidx) + ALLOC_CHUNKHDRSZ; } /* * AllocSetIsEmpty * Is an allocset empty of any allocated space? */ bool AllocSetIsEmpty(MemoryContext context) { Assert(AllocSetIsValid(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. * print_to_stderr: print stats to stderr if true, elog otherwise. */ void AllocSetStats(MemoryContext context, MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals, bool print_to_stderr) { AllocSet set = (AllocSet) context; Size nblocks = 0; Size freechunks = 0; Size totalspace; Size freespace = 0; AllocBlock block; int fidx; Assert(AllocSetIsValid(set)); /* 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++) { Size chksz = GetChunkSizeFromFreeListIdx(fidx); MemoryChunk *chunk = set->freelist[fidx]; while (chunk != NULL) { AllocFreeListLink *link = GetFreeListLink(chunk); /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOC_CHUNKHDRSZ); Assert(MemoryChunkGetValue(chunk) == fidx); VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOC_CHUNKHDRSZ); freechunks++; freespace += chksz + ALLOC_CHUNKHDRSZ; VALGRIND_MAKE_MEM_DEFINED(link, sizeof(AllocFreeListLink)); chunk = link->next; VALGRIND_MAKE_MEM_NOACCESS(link, sizeof(AllocFreeListLink)); } } if (printfunc) { char stats_string[200]; snprintf(stats_string, sizeof(stats_string), "%zu total in %zu blocks; %zu free (%zu chunks); %zu used", totalspace, nblocks, freespace, freechunks, totalspace - freespace); printfunc(context, passthru, stats_string, print_to_stderr); } 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! */ 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; bool has_external_chunk = false; if (IsKeeperBlock(set, 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 (!IsKeeperBlock(set, 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) { MemoryChunk *chunk = (MemoryChunk *) bpoz; Size chsize, dsize; /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOC_CHUNKHDRSZ); if (MemoryChunkIsExternal(chunk)) { chsize = block->endptr - (char *) MemoryChunkGetPointer(chunk); /* aligned chunk size */ has_external_chunk = true; /* make sure this chunk consumes the entire block */ if (chsize + ALLOC_CHUNKHDRSZ != blk_used) elog(WARNING, "problem in alloc set %s: bad single-chunk %p in block %p", name, chunk, block); } else { int fidx = MemoryChunkGetValue(chunk); if (!FreeListIdxIsValid(fidx)) elog(WARNING, "problem in alloc set %s: bad chunk size for chunk %p in block %p", name, chunk, block); chsize = GetChunkSizeFromFreeListIdx(fidx); /* aligned chunk size */ /* * Check the stored block offset correctly references this * block. */ if (block != MemoryChunkGetBlock(chunk)) elog(WARNING, "problem in alloc set %s: bad block offset for chunk %p in block %p", name, chunk, block); } dsize = chunk->requested_size; /* real data */ /* an allocated chunk's requested size must be <= the chsize */ if (dsize != InvalidAllocSize && dsize > chsize) elog(WARNING, "problem in alloc set %s: req size > alloc size for chunk %p in block %p", name, chunk, block); /* chsize must not be smaller than the first freelist's size */ 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); /* * Check for overwrite of padding space in an allocated chunk. */ if (dsize != InvalidAllocSize && 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 access to the chunk header */ if (dsize != InvalidAllocSize) VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOC_CHUNKHDRSZ); 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); if (has_external_chunk && nchunks > 1) elog(WARNING, "problem in alloc set %s: external chunk on non-dedicated 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-17-6.1.0/src/postgres/src_backend_utils_mmgr_bump.c000066400000000000000000000473051477334012600246310ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - BumpAlloc * - BumpAllocLarge * - BumpBlockFreeBytes * - BumpAllocFromNewBlock * - BumpBlockInit * - BumpAllocChunkFromBlock * - BumpFree * - BumpRealloc * - BumpReset * - BumpBlockMarkEmpty * - BumpBlockFree * - BumpDelete * - BumpGetChunkContext * - BumpGetChunkSpace * - BumpIsEmpty * - BumpBlockIsEmpty * - BumpStats * - BumpCheck *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * bump.c * Bump allocator definitions. * * Bump is a MemoryContext implementation designed for memory usages which * require allocating a large number of chunks, none of which ever need to be * pfree'd or realloc'd. Chunks allocated by this context have no chunk header * and operations which ordinarily require looking at the chunk header cannot * be performed. For example, pfree, realloc, GetMemoryChunkSpace and * GetMemoryChunkContext are all not possible with bump allocated chunks. The * only way to release memory allocated by this context type is to reset or * delete the context. * * Portions Copyright (c) 2024, PostgreSQL Global Development Group * * IDENTIFICATION * src/backend/utils/mmgr/bump.c * * * Bump is best suited to cases which require a large number of short-lived * chunks where performance matters. Because bump allocated chunks don't * have a chunk header, it can fit more chunks on each block. This means we * can do more with less memory and fewer cache lines. The reason it's best * suited for short-lived usages of memory is that ideally, pointers to bump * allocated chunks won't be visible to a large amount of code. The more * code that operates on memory allocated by this allocator, the more chances * that some code will try to perform a pfree or one of the other operations * which are made impossible due to the lack of chunk header. In order to * detect accidental usage of the various disallowed operations, we do add a * MemoryChunk chunk header in MEMORY_CONTEXT_CHECKING builds and have the * various disallowed functions raise an ERROR. * * Allocations are MAXALIGNed. * *------------------------------------------------------------------------- */ #include "postgres.h" #include "lib/ilist.h" #include "port/pg_bitutils.h" #include "utils/memdebug.h" #include "utils/memutils.h" #include "utils/memutils_memorychunk.h" #include "utils/memutils_internal.h" #define Bump_BLOCKHDRSZ MAXALIGN(sizeof(BumpBlock)) /* No chunk header unless built with MEMORY_CONTEXT_CHECKING */ #ifdef MEMORY_CONTEXT_CHECKING #define Bump_CHUNKHDRSZ sizeof(MemoryChunk) #else #define Bump_CHUNKHDRSZ 0 #endif #define Bump_CHUNK_FRACTION 8 /* The keeper block is allocated in the same allocation as the set */ #define KeeperBlock(set) ((BumpBlock *) ((char *) (set) + \ MAXALIGN(sizeof(BumpContext)))) #define IsKeeperBlock(set, blk) (KeeperBlock(set) == (blk)) typedef struct BumpBlock BumpBlock; /* forward reference */ typedef struct BumpContext { MemoryContextData header; /* Standard memory-context fields */ /* Bump context parameters */ uint32 initBlockSize; /* initial block size */ uint32 maxBlockSize; /* maximum block size */ uint32 nextBlockSize; /* next block size to allocate */ uint32 allocChunkLimit; /* effective chunk size limit */ dlist_head blocks; /* list of blocks with the block currently * being filled at the head */ } BumpContext; /* * BumpBlock * BumpBlock is the unit of memory that is obtained by bump.c from * malloc(). It contains zero or more allocations, which are the * units requested by palloc(). */ struct BumpBlock { dlist_node node; /* doubly-linked list of blocks */ #ifdef MEMORY_CONTEXT_CHECKING BumpContext *context; /* pointer back to the owning context */ #endif char *freeptr; /* start of free space in this block */ char *endptr; /* end of space in this block */ }; /* * BumpIsValid * True iff set is valid bump context. */ #define BumpIsValid(set) \ (PointerIsValid(set) && IsA(set, BumpContext)) /* * We always store external chunks on a dedicated block. This makes fetching * the block from an external chunk easy since it's always the first and only * chunk on the block. */ #define ExternalChunkGetBlock(chunk) \ (BumpBlock *) ((char *) chunk - Bump_BLOCKHDRSZ) /* Inlined helper functions */ static inline void BumpBlockInit(BumpContext *context, BumpBlock *block, Size blksize); static inline bool BumpBlockIsEmpty(BumpBlock *block); static inline void BumpBlockMarkEmpty(BumpBlock *block); static inline Size BumpBlockFreeBytes(BumpBlock *block); static inline void BumpBlockFree(BumpContext *set, BumpBlock *block); /* * BumpContextCreate * Create a new Bump 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 */ /* * BumpReset * Frees all memory which is allocated in the given set. * * The code simply frees all the blocks in the context apart from the keeper * block. */ void BumpReset(MemoryContext context) { BumpContext *set = (BumpContext *) context; dlist_mutable_iter miter; Assert(BumpIsValid(set)); #ifdef MEMORY_CONTEXT_CHECKING /* Check for corruption and leaks before freeing */ BumpCheck(context); #endif dlist_foreach_modify(miter, &set->blocks) { BumpBlock *block = dlist_container(BumpBlock, node, miter.cur); if (IsKeeperBlock(set, block)) BumpBlockMarkEmpty(block); else BumpBlockFree(set, block); } /* Reset block size allocation sequence, too */ set->nextBlockSize = set->initBlockSize; /* Ensure there is only 1 item in the dlist */ Assert(!dlist_is_empty(&set->blocks)); Assert(!dlist_has_next(&set->blocks, dlist_head_node(&set->blocks))); } /* * BumpDelete * Free all memory which is allocated in the given context. */ void BumpDelete(MemoryContext context) { /* Reset to release all releasable BumpBlocks */ BumpReset(context); /* And free the context header and keeper block */ free(context); } /* * Helper for BumpAlloc() that allocates an entire block for the chunk. * * BumpAlloc()'s comment explains why this is separate. */ pg_noinline static void * BumpAllocLarge(MemoryContext context, Size size, int flags) { BumpContext *set = (BumpContext *) context; BumpBlock *block; #ifdef MEMORY_CONTEXT_CHECKING MemoryChunk *chunk; #endif Size chunk_size; Size required_size; Size blksize; /* validate 'size' is within the limits for the given 'flags' */ MemoryContextCheckSize(context, size, flags); #ifdef MEMORY_CONTEXT_CHECKING /* ensure there's always space for the sentinel byte */ chunk_size = MAXALIGN(size + 1); #else chunk_size = MAXALIGN(size); #endif required_size = chunk_size + Bump_CHUNKHDRSZ; blksize = required_size + Bump_BLOCKHDRSZ; block = (BumpBlock *) malloc(blksize); if (block == NULL) return NULL; context->mem_allocated += blksize; /* the block is completely full */ block->freeptr = block->endptr = ((char *) block) + blksize; #ifdef MEMORY_CONTEXT_CHECKING /* block with a single (used) chunk */ block->context = set; chunk = (MemoryChunk *) (((char *) block) + Bump_BLOCKHDRSZ); /* mark the MemoryChunk as externally managed */ MemoryChunkSetHdrMaskExternal(chunk, MCTX_BUMP_ID); chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ Assert(size < chunk_size); set_sentinel(MemoryChunkGetPointer(chunk), size); #endif #ifdef RANDOMIZE_ALLOCATED_MEMORY /* fill the allocated space with junk */ randomize_mem((char *) MemoryChunkGetPointer(chunk), size); #endif /* * Add the block to the tail of allocated blocks list. The current block * is left at the head of the list as it may still have space for * non-large allocations. */ dlist_push_tail(&set->blocks, &block->node); #ifdef MEMORY_CONTEXT_CHECKING /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) MemoryChunkGetPointer(chunk) + size, chunk_size - size); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, Bump_CHUNKHDRSZ); return MemoryChunkGetPointer(chunk); #else return (void *) (((char *) block) + Bump_BLOCKHDRSZ); #endif } /* * Small helper for allocating a new chunk from a chunk, to avoid duplicating * the code between BumpAlloc() and BumpAllocFromNewBlock(). */ static inline void * BumpAllocChunkFromBlock(MemoryContext context, BumpBlock *block, Size size, Size chunk_size) { #ifdef MEMORY_CONTEXT_CHECKING MemoryChunk *chunk; #else void *ptr; #endif /* validate we've been given a block with enough free space */ Assert(block != NULL); Assert((block->endptr - block->freeptr) >= Bump_CHUNKHDRSZ + chunk_size); #ifdef MEMORY_CONTEXT_CHECKING chunk = (MemoryChunk *) block->freeptr; #else ptr = (void *) block->freeptr; #endif /* point the freeptr beyond this chunk */ block->freeptr += (Bump_CHUNKHDRSZ + chunk_size); Assert(block->freeptr <= block->endptr); #ifdef MEMORY_CONTEXT_CHECKING /* Prepare to initialize the chunk header. */ VALGRIND_MAKE_MEM_UNDEFINED(chunk, Bump_CHUNKHDRSZ); MemoryChunkSetHdrMask(chunk, block, chunk_size, MCTX_BUMP_ID); chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ Assert(size < chunk_size); set_sentinel(MemoryChunkGetPointer(chunk), size); #ifdef RANDOMIZE_ALLOCATED_MEMORY /* fill the allocated space with junk */ randomize_mem((char *) MemoryChunkGetPointer(chunk), size); #endif /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) MemoryChunkGetPointer(chunk) + size, chunk_size - size); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, Bump_CHUNKHDRSZ); return MemoryChunkGetPointer(chunk); #else return ptr; #endif /* MEMORY_CONTEXT_CHECKING */ } /* * Helper for BumpAlloc() that allocates a new block and returns a chunk * allocated from it. * * BumpAlloc()'s comment explains why this is separate. */ pg_noinline static void * BumpAllocFromNewBlock(MemoryContext context, Size size, int flags, Size chunk_size) { BumpContext *set = (BumpContext *) context; BumpBlock *block; Size blksize; 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; /* we'll need space for the chunk, chunk hdr and block hdr */ required_size = chunk_size + Bump_CHUNKHDRSZ + Bump_BLOCKHDRSZ; /* round the size up to the next power of 2 */ if (blksize < required_size) blksize = pg_nextpower2_size_t(required_size); block = (BumpBlock *) malloc(blksize); if (block == NULL) return MemoryContextAllocationFailure(context, size, flags); context->mem_allocated += blksize; /* initialize the new block */ BumpBlockInit(set, block, blksize); /* add it to the doubly-linked list of blocks */ dlist_push_head(&set->blocks, &block->node); return BumpAllocChunkFromBlock(context, block, size, chunk_size); } /* * BumpAlloc * Returns a pointer to allocated memory of given size or raises an ERROR * on allocation failure, or returns NULL when flags contains * MCXT_ALLOC_NO_OOM. * * No request may exceed: * MAXALIGN_DOWN(SIZE_MAX) - Bump_BLOCKHDRSZ - Bump_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. * This function should only contain the most common code paths. Everything * else should be in pg_noinline helper functions, thus avoiding the overhead * of creating a stack frame for the common cases. Allocating memory is often * a bottleneck in many workloads, so avoiding stack frame setup is * worthwhile. Helper functions should always directly return the newly * allocated memory so that we can just return that address directly as a tail * call. */ void * BumpAlloc(MemoryContext context, Size size, int flags) { BumpContext *set = (BumpContext *) context; BumpBlock *block; Size chunk_size; Size required_size; Assert(BumpIsValid(set)); #ifdef MEMORY_CONTEXT_CHECKING /* ensure there's always space for the sentinel byte */ chunk_size = MAXALIGN(size + 1); #else chunk_size = MAXALIGN(size); #endif /* * If requested size exceeds maximum for chunks we hand the request off to * BumpAllocLarge(). */ if (chunk_size > set->allocChunkLimit) return BumpAllocLarge(context, size, flags); required_size = chunk_size + Bump_CHUNKHDRSZ; /* * Not an oversized chunk. We try to first make use of the latest block, * but if there's not enough space in it we must allocate a new block. */ block = dlist_container(BumpBlock, node, dlist_head_node(&set->blocks)); if (BumpBlockFreeBytes(block) < required_size) return BumpAllocFromNewBlock(context, size, flags, chunk_size); /* The current block has space, so just allocate chunk there. */ return BumpAllocChunkFromBlock(context, block, size, chunk_size); } /* * BumpBlockInit * Initializes 'block' assuming 'blksize'. Does not update the context's * mem_allocated field. */ static inline void BumpBlockInit(BumpContext *context, BumpBlock *block, Size blksize) { #ifdef MEMORY_CONTEXT_CHECKING block->context = context; #endif block->freeptr = ((char *) block) + Bump_BLOCKHDRSZ; block->endptr = ((char *) block) + blksize; /* Mark unallocated space NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS(block->freeptr, blksize - Bump_BLOCKHDRSZ); } /* * BumpBlockIsEmpty * Returns true iff 'block' contains no chunks */ static inline bool BumpBlockIsEmpty(BumpBlock *block) { /* it's empty if the freeptr has not moved */ return (block->freeptr == ((char *) block + Bump_BLOCKHDRSZ)); } /* * BumpBlockMarkEmpty * Set a block as empty. Does not free the block. */ static inline void BumpBlockMarkEmpty(BumpBlock *block) { #if defined(USE_VALGRIND) || defined(CLOBBER_FREED_MEMORY) char *datastart = ((char *) block) + Bump_BLOCKHDRSZ; #endif #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 /* Reset the block, but don't return it to malloc */ block->freeptr = ((char *) block) + Bump_BLOCKHDRSZ; } /* * BumpBlockFreeBytes * Returns the number of bytes free in 'block' */ static inline Size BumpBlockFreeBytes(BumpBlock *block) { return (block->endptr - block->freeptr); } /* * BumpBlockFree * Remove 'block' from 'set' and release the memory consumed by it. */ static inline void BumpBlockFree(BumpContext *set, BumpBlock *block) { /* Make sure nobody tries to free the keeper block */ Assert(!IsKeeperBlock(set, block)); /* release the block from the list of blocks */ dlist_delete(&block->node); ((MemoryContext) set)->mem_allocated -= ((char *) block->endptr - (char *) block); #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, ((char *) block->endptr - (char *) block)); #endif free(block); } /* * BumpFree * Unsupported. */ void BumpFree(void *pointer) { elog(ERROR, "%s is not supported by the bump memory allocator", "pfree"); } /* * BumpRealloc * Unsupported. */ void * BumpRealloc(void *pointer, Size size, int flags) { elog(ERROR, "%s is not supported by the bump memory allocator", "realloc"); return NULL; /* keep compiler quiet */ } /* * BumpGetChunkContext * Unsupported. */ MemoryContext BumpGetChunkContext(void *pointer) { elog(ERROR, "%s is not supported by the bump memory allocator", "GetMemoryChunkContext"); return NULL; /* keep compiler quiet */ } /* * BumpGetChunkSpace * Unsupported. */ Size BumpGetChunkSpace(void *pointer) { elog(ERROR, "%s is not supported by the bump memory allocator", "GetMemoryChunkSpace"); return 0; /* keep compiler quiet */ } /* * BumpIsEmpty * Is a BumpContext empty of any allocated space? */ bool BumpIsEmpty(MemoryContext context) { BumpContext *set = (BumpContext *) context; dlist_iter iter; Assert(BumpIsValid(set)); dlist_foreach(iter, &set->blocks) { BumpBlock *block = dlist_container(BumpBlock, node, iter.cur); if (!BumpBlockIsEmpty(block)) return false; } return true; } /* * BumpStats * Compute stats about memory consumption of a Bump context. * * 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. * print_to_stderr: print stats to stderr if true, elog otherwise. */ void BumpStats(MemoryContext context, MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals, bool print_to_stderr) { BumpContext *set = (BumpContext *) context; Size nblocks = 0; Size totalspace = 0; Size freespace = 0; dlist_iter iter; Assert(BumpIsValid(set)); dlist_foreach(iter, &set->blocks) { BumpBlock *block = dlist_container(BumpBlock, node, iter.cur); nblocks++; totalspace += (block->endptr - (char *) block); freespace += (block->endptr - block->freeptr); } if (printfunc) { char stats_string[200]; snprintf(stats_string, sizeof(stats_string), "%zu total in %zu blocks; %zu free; %zu used", totalspace, nblocks, freespace, totalspace - freespace); printfunc(context, passthru, stats_string, print_to_stderr); } if (totals) { totals->nblocks += nblocks; totals->totalspace += totalspace; totals->freespace += freespace; } } #ifdef MEMORY_CONTEXT_CHECKING /* * BumpCheck * 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! */ void BumpCheck(MemoryContext context) { BumpContext *bump = (BumpContext *) context; const char *name = context->name; dlist_iter iter; Size total_allocated = 0; /* walk all blocks in this context */ dlist_foreach(iter, &bump->blocks) { BumpBlock *block = dlist_container(BumpBlock, node, iter.cur); int nchunks; char *ptr; bool has_external_chunk = false; if (IsKeeperBlock(bump, block)) total_allocated += block->endptr - (char *) bump; else total_allocated += block->endptr - (char *) block; /* check block belongs to the correct context */ if (block->context != bump) elog(WARNING, "problem in Bump %s: bogus context link in block %p", name, block); /* now walk through the chunks and count them */ nchunks = 0; ptr = ((char *) block) + Bump_BLOCKHDRSZ; while (ptr < block->freeptr) { MemoryChunk *chunk = (MemoryChunk *) ptr; BumpBlock *chunkblock; Size chunksize; /* allow access to the chunk header */ VALGRIND_MAKE_MEM_DEFINED(chunk, Bump_CHUNKHDRSZ); if (MemoryChunkIsExternal(chunk)) { chunkblock = ExternalChunkGetBlock(chunk); chunksize = block->endptr - (char *) MemoryChunkGetPointer(chunk); has_external_chunk = true; } else { chunkblock = MemoryChunkGetBlock(chunk); chunksize = MemoryChunkGetValue(chunk); } /* move to the next chunk */ ptr += (chunksize + Bump_CHUNKHDRSZ); nchunks += 1; /* chunks have both block and context pointers, so check both */ if (chunkblock != block) elog(WARNING, "problem in Bump %s: bogus block link in block %p, chunk %p", name, block, chunk); } if (has_external_chunk && nchunks > 1) elog(WARNING, "problem in Bump %s: external chunk on non-dedicated block %p", name, block); } Assert(total_allocated == context->mem_allocated); } #endif /* MEMORY_CONTEXT_CHECKING */ libpg_query-17-6.1.0/src/postgres/src_backend_utils_mmgr_generation.c000066400000000000000000001015731477334012600260170ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - GenerationAlloc * - GenerationAllocLarge * - GenerationBlockFreeBytes * - GenerationAllocChunkFromBlock * - GenerationAllocFromNewBlock * - GenerationBlockInit * - GenerationFree * - GenerationBlockMarkEmpty * - GenerationBlockFree * - GenerationRealloc * - GenerationReset * - GenerationDelete * - GenerationGetChunkContext * - GenerationGetChunkSpace * - GenerationIsEmpty * - GenerationStats * - GenerationCheck *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * generation.c * Generational allocator definitions. * * Generation is a custom MemoryContext implementation designed for cases of * chunks with similar lifespan. * * Portions Copyright (c) 2017-2024, PostgreSQL Global Development Group * * IDENTIFICATION * src/backend/utils/mmgr/generation.c * * * This memory context is based on the assumption that the chunks are freed * roughly in the same order as they were allocated (FIFO), or in groups with * similar lifespan (generations - hence the name of the context). This is * typical for various queue-like use cases, i.e. when tuples are constructed, * processed and then thrown away. * * The memory context uses a very simple approach to free space management. * Instead of a complex global freelist, each block tracks a number * of allocated and freed chunks. The block is classed as empty when the * number of free chunks is equal to the number of allocated chunks. When * this occurs, instead of freeing the block, we try to "recycle" it, i.e. * reuse it for new allocations. This is done by setting the block in the * context's 'freeblock' field. If the freeblock field is already occupied * by another free block we simply return the newly empty block to malloc. * * This approach to free blocks requires fewer malloc/free calls for truly * first allocated, first free'd allocation patterns. * *------------------------------------------------------------------------- */ #include "postgres.h" #include "lib/ilist.h" #include "port/pg_bitutils.h" #include "utils/memdebug.h" #include "utils/memutils.h" #include "utils/memutils_internal.h" #include "utils/memutils_memorychunk.h" #define Generation_BLOCKHDRSZ MAXALIGN(sizeof(GenerationBlock)) #define Generation_CHUNKHDRSZ sizeof(MemoryChunk) #define Generation_CHUNK_FRACTION 8 typedef struct GenerationBlock GenerationBlock; /* forward reference */ typedef void *GenerationPointer; /* * GenerationContext is a simple memory context not reusing allocated chunks, * and freeing blocks once all chunks are freed. */ typedef struct GenerationContext { MemoryContextData header; /* Standard memory-context fields */ /* Generational context parameters */ uint32 initBlockSize; /* initial block size */ uint32 maxBlockSize; /* maximum block size */ uint32 nextBlockSize; /* next block size to allocate */ uint32 allocChunkLimit; /* effective chunk size limit */ GenerationBlock *block; /* current (most recently allocated) block */ GenerationBlock *freeblock; /* pointer to an empty block that's being * recycled, or NULL if there's no such block. */ dlist_head blocks; /* list of blocks */ } GenerationContext; /* * GenerationBlock * GenerationBlock is the unit of memory that is obtained by generation.c * from malloc(). It contains zero or more MemoryChunks, which are the * units requested by palloc() and freed by pfree(). MemoryChunks cannot * be returned to malloc() individually, instead pfree() updates the free * counter of the block and when all chunks in a block are free the whole * block can be returned to malloc(). * * GenerationBlock is the header data for a block --- the usable space * within the block begins at the next alignment boundary. */ struct GenerationBlock { dlist_node node; /* doubly-linked list of blocks */ GenerationContext *context; /* pointer back to the owning context */ Size blksize; /* allocated size of this block */ int nchunks; /* number of chunks in the block */ int nfree; /* number of free chunks */ char *freeptr; /* start of free space in this block */ char *endptr; /* end of space in this block */ }; /* * GenerationIsValid * True iff set is valid generation set. */ #define GenerationIsValid(set) \ (PointerIsValid(set) && IsA(set, GenerationContext)) /* * GenerationBlockIsValid * True iff block is valid block of generation set. */ #define GenerationBlockIsValid(block) \ (PointerIsValid(block) && GenerationIsValid((block)->context)) /* * GenerationBlockIsEmpty * True iff block contains no chunks */ #define GenerationBlockIsEmpty(b) ((b)->nchunks == 0) /* * We always store external chunks on a dedicated block. This makes fetching * the block from an external chunk easy since it's always the first and only * chunk on the block. */ #define ExternalChunkGetBlock(chunk) \ (GenerationBlock *) ((char *) chunk - Generation_BLOCKHDRSZ) /* Obtain the keeper block for a generation context */ #define KeeperBlock(set) \ ((GenerationBlock *) (((char *) set) + \ MAXALIGN(sizeof(GenerationContext)))) /* Check if the block is the keeper block of the given generation context */ #define IsKeeperBlock(set, block) ((block) == (KeeperBlock(set))) /* Inlined helper functions */ static inline void GenerationBlockInit(GenerationContext *context, GenerationBlock *block, Size blksize); static inline void GenerationBlockMarkEmpty(GenerationBlock *block); static inline Size GenerationBlockFreeBytes(GenerationBlock *block); static inline void GenerationBlockFree(GenerationContext *set, GenerationBlock *block); /* * Public routines */ /* * GenerationContextCreate * Create a new Generation 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 */ /* * GenerationReset * Frees all memory which is allocated in the given set. * * The initial "keeper" block (which shares a malloc chunk with the context * header) is not given back to the operating system though. In this way, we * don't thrash malloc() when a context is repeatedly reset after small * allocations. */ void GenerationReset(MemoryContext context) { GenerationContext *set = (GenerationContext *) context; dlist_mutable_iter miter; Assert(GenerationIsValid(set)); #ifdef MEMORY_CONTEXT_CHECKING /* Check for corruption and leaks before freeing */ GenerationCheck(context); #endif /* * NULLify the free block pointer. We must do this before calling * GenerationBlockFree as that function never expects to free the * freeblock. */ set->freeblock = NULL; dlist_foreach_modify(miter, &set->blocks) { GenerationBlock *block = dlist_container(GenerationBlock, node, miter.cur); if (IsKeeperBlock(set, block)) GenerationBlockMarkEmpty(block); else GenerationBlockFree(set, block); } /* set it so new allocations to make use of the keeper block */ set->block = KeeperBlock(set); /* Reset block size allocation sequence, too */ set->nextBlockSize = set->initBlockSize; /* Ensure there is only 1 item in the dlist */ Assert(!dlist_is_empty(&set->blocks)); Assert(!dlist_has_next(&set->blocks, dlist_head_node(&set->blocks))); } /* * GenerationDelete * Free all memory which is allocated in the given context. */ void GenerationDelete(MemoryContext context) { /* Reset to release all releasable GenerationBlocks */ GenerationReset(context); /* And free the context header and keeper block */ free(context); } /* * Helper for GenerationAlloc() that allocates an entire block for the chunk. * * GenerationAlloc()'s comment explains why this is separate. */ pg_noinline static void * GenerationAllocLarge(MemoryContext context, Size size, int flags) { GenerationContext *set = (GenerationContext *) context; GenerationBlock *block; MemoryChunk *chunk; Size chunk_size; Size required_size; Size blksize; /* validate 'size' is within the limits for the given 'flags' */ MemoryContextCheckSize(context, size, flags); #ifdef MEMORY_CONTEXT_CHECKING /* ensure there's always space for the sentinel byte */ chunk_size = MAXALIGN(size + 1); #else chunk_size = MAXALIGN(size); #endif required_size = chunk_size + Generation_CHUNKHDRSZ; blksize = required_size + Generation_BLOCKHDRSZ; block = (GenerationBlock *) malloc(blksize); if (block == NULL) return MemoryContextAllocationFailure(context, size, flags); context->mem_allocated += blksize; /* block with a single (used) chunk */ block->context = set; block->blksize = blksize; block->nchunks = 1; block->nfree = 0; /* the block is completely full */ block->freeptr = block->endptr = ((char *) block) + blksize; chunk = (MemoryChunk *) (((char *) block) + Generation_BLOCKHDRSZ); /* mark the MemoryChunk as externally managed */ MemoryChunkSetHdrMaskExternal(chunk, MCTX_GENERATION_ID); #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ Assert(size < chunk_size); set_sentinel(MemoryChunkGetPointer(chunk), size); #endif #ifdef RANDOMIZE_ALLOCATED_MEMORY /* fill the allocated space with junk */ randomize_mem((char *) MemoryChunkGetPointer(chunk), size); #endif /* add the block to the list of allocated blocks */ dlist_push_head(&set->blocks, &block->node); /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) MemoryChunkGetPointer(chunk) + size, chunk_size - size); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, Generation_CHUNKHDRSZ); return MemoryChunkGetPointer(chunk); } /* * Small helper for allocating a new chunk from a chunk, to avoid duplicating * the code between GenerationAlloc() and GenerationAllocFromNewBlock(). */ static inline void * GenerationAllocChunkFromBlock(MemoryContext context, GenerationBlock *block, Size size, Size chunk_size) { MemoryChunk *chunk = (MemoryChunk *) (block->freeptr); /* validate we've been given a block with enough free space */ Assert(block != NULL); Assert((block->endptr - block->freeptr) >= Generation_CHUNKHDRSZ + chunk_size); /* Prepare to initialize the chunk header. */ VALGRIND_MAKE_MEM_UNDEFINED(chunk, Generation_CHUNKHDRSZ); block->nchunks += 1; block->freeptr += (Generation_CHUNKHDRSZ + chunk_size); Assert(block->freeptr <= block->endptr); MemoryChunkSetHdrMask(chunk, block, chunk_size, MCTX_GENERATION_ID); #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ Assert(size < chunk_size); set_sentinel(MemoryChunkGetPointer(chunk), size); #endif #ifdef RANDOMIZE_ALLOCATED_MEMORY /* fill the allocated space with junk */ randomize_mem((char *) MemoryChunkGetPointer(chunk), size); #endif /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) MemoryChunkGetPointer(chunk) + size, chunk_size - size); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, Generation_CHUNKHDRSZ); return MemoryChunkGetPointer(chunk); } /* * Helper for GenerationAlloc() that allocates a new block and returns a chunk * allocated from it. * * GenerationAlloc()'s comment explains why this is separate. */ pg_noinline static void * GenerationAllocFromNewBlock(MemoryContext context, Size size, int flags, Size chunk_size) { GenerationContext *set = (GenerationContext *) context; GenerationBlock *block; Size blksize; 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; /* we'll need space for the chunk, chunk hdr and block hdr */ required_size = chunk_size + Generation_CHUNKHDRSZ + Generation_BLOCKHDRSZ; /* round the size up to the next power of 2 */ if (blksize < required_size) blksize = pg_nextpower2_size_t(required_size); block = (GenerationBlock *) malloc(blksize); if (block == NULL) return MemoryContextAllocationFailure(context, size, flags); context->mem_allocated += blksize; /* initialize the new block */ GenerationBlockInit(set, block, blksize); /* add it to the doubly-linked list of blocks */ dlist_push_head(&set->blocks, &block->node); /* make this the current block */ set->block = block; return GenerationAllocChunkFromBlock(context, block, size, chunk_size); } /* * GenerationAlloc * Returns a pointer to allocated memory of given size or raises an ERROR * on allocation failure, or returns NULL when flags contains * MCXT_ALLOC_NO_OOM. * * No request may exceed: * MAXALIGN_DOWN(SIZE_MAX) - Generation_BLOCKHDRSZ - Generation_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 - GenerationRealloc has to beware! * * This function should only contain the most common code paths. Everything * else should be in pg_noinline helper functions, thus avoiding the overhead * of creating a stack frame for the common cases. Allocating memory is often * a bottleneck in many workloads, so avoiding stack frame setup is * worthwhile. Helper functions should always directly return the newly * allocated memory so that we can just return that address directly as a tail * call. */ void * GenerationAlloc(MemoryContext context, Size size, int flags) { GenerationContext *set = (GenerationContext *) context; GenerationBlock *block; Size chunk_size; Size required_size; Assert(GenerationIsValid(set)); #ifdef MEMORY_CONTEXT_CHECKING /* ensure there's always space for the sentinel byte */ chunk_size = MAXALIGN(size + 1); #else chunk_size = MAXALIGN(size); #endif /* * If requested size exceeds maximum for chunks we hand the request off to * GenerationAllocLarge(). */ if (chunk_size > set->allocChunkLimit) return GenerationAllocLarge(context, size, flags); required_size = chunk_size + Generation_CHUNKHDRSZ; /* * Not an oversized chunk. We try to first make use of the current block, * but if there's not enough space in it, instead of allocating a new * block, we look to see if the empty freeblock has enough space. We * don't try reusing the keeper block. If it's become empty we'll reuse * that again only if the context is reset. * * We only try reusing the freeblock if we've no space for this allocation * on the current block. When a freeblock exists, we'll switch to it once * the first time we can't fit an allocation in the current block. We * avoid ping-ponging between the two as we need to be careful not to * fragment differently sized consecutive allocations between several * blocks. Going between the two could cause fragmentation for FIFO * workloads, which generation is meant to be good at. */ block = set->block; if (unlikely(GenerationBlockFreeBytes(block) < required_size)) { GenerationBlock *freeblock = set->freeblock; /* freeblock, if set, must be empty */ Assert(freeblock == NULL || GenerationBlockIsEmpty(freeblock)); /* check if we have a freeblock and if it's big enough */ if (freeblock != NULL && GenerationBlockFreeBytes(freeblock) >= required_size) { /* make the freeblock the current block */ set->freeblock = NULL; set->block = freeblock; return GenerationAllocChunkFromBlock(context, freeblock, size, chunk_size); } else { /* * No freeblock, or it's not big enough for this allocation. Make * a new block. */ return GenerationAllocFromNewBlock(context, size, flags, chunk_size); } } /* The current block has space, so just allocate chunk there. */ return GenerationAllocChunkFromBlock(context, block, size, chunk_size); } /* * GenerationBlockInit * Initializes 'block' assuming 'blksize'. Does not update the context's * mem_allocated field. */ static inline void GenerationBlockInit(GenerationContext *context, GenerationBlock *block, Size blksize) { block->context = context; block->blksize = blksize; block->nchunks = 0; block->nfree = 0; block->freeptr = ((char *) block) + Generation_BLOCKHDRSZ; block->endptr = ((char *) block) + blksize; /* Mark unallocated space NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS(block->freeptr, blksize - Generation_BLOCKHDRSZ); } /* * GenerationBlockMarkEmpty * Set a block as empty. Does not free the block. */ static inline void GenerationBlockMarkEmpty(GenerationBlock *block) { #if defined(USE_VALGRIND) || defined(CLOBBER_FREED_MEMORY) char *datastart = ((char *) block) + Generation_BLOCKHDRSZ; #endif #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 /* Reset the block, but don't return it to malloc */ block->nchunks = 0; block->nfree = 0; block->freeptr = ((char *) block) + Generation_BLOCKHDRSZ; } /* * GenerationBlockFreeBytes * Returns the number of bytes free in 'block' */ static inline Size GenerationBlockFreeBytes(GenerationBlock *block) { return (block->endptr - block->freeptr); } /* * GenerationBlockFree * Remove 'block' from 'set' and release the memory consumed by it. */ static inline void GenerationBlockFree(GenerationContext *set, GenerationBlock *block) { /* Make sure nobody tries to free the keeper block */ Assert(!IsKeeperBlock(set, block)); /* We shouldn't be freeing the freeblock either */ Assert(block != set->freeblock); /* release the block from the list of blocks */ dlist_delete(&block->node); ((MemoryContext) set)->mem_allocated -= block->blksize; #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->blksize); #endif free(block); } /* * GenerationFree * Update number of chunks in the block, and consider freeing the block * if it's become empty. */ void GenerationFree(void *pointer) { MemoryChunk *chunk = PointerGetMemoryChunk(pointer); GenerationBlock *block; GenerationContext *set; #if (defined(MEMORY_CONTEXT_CHECKING) && defined(USE_ASSERT_CHECKING)) \ || defined(CLOBBER_FREED_MEMORY) Size chunksize; #endif /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, Generation_CHUNKHDRSZ); if (MemoryChunkIsExternal(chunk)) { block = ExternalChunkGetBlock(chunk); /* * Try to verify that we have a sane block pointer: the block header * should reference a generation context. */ if (!GenerationBlockIsValid(block)) elog(ERROR, "could not find block containing chunk %p", chunk); #if (defined(MEMORY_CONTEXT_CHECKING) && defined(USE_ASSERT_CHECKING)) \ || defined(CLOBBER_FREED_MEMORY) chunksize = block->endptr - (char *) pointer; #endif } else { block = MemoryChunkGetBlock(chunk); /* * In this path, for speed reasons we just Assert that the referenced * block is good. Future field experience may show that this Assert * had better become a regular runtime test-and-elog check. */ Assert(GenerationBlockIsValid(block)); #if (defined(MEMORY_CONTEXT_CHECKING) && defined(USE_ASSERT_CHECKING)) \ || defined(CLOBBER_FREED_MEMORY) chunksize = MemoryChunkGetValue(chunk); #endif } #ifdef MEMORY_CONTEXT_CHECKING /* Test for someone scribbling on unused space in chunk */ Assert(chunk->requested_size < chunksize); if (!sentinel_ok(pointer, chunk->requested_size)) elog(WARNING, "detected write past chunk end in %s %p", ((MemoryContext) block->context)->name, chunk); #endif #ifdef CLOBBER_FREED_MEMORY wipe_mem(pointer, chunksize); #endif #ifdef MEMORY_CONTEXT_CHECKING /* Reset requested_size to InvalidAllocSize in freed chunks */ chunk->requested_size = InvalidAllocSize; #endif block->nfree += 1; Assert(block->nchunks > 0); Assert(block->nfree <= block->nchunks); Assert(block != block->context->freeblock); /* If there are still allocated chunks in the block, we're done. */ if (likely(block->nfree < block->nchunks)) return; set = block->context; /*----------------------- * The block this allocation was on has now become completely empty of * chunks. In the general case, we can now return the memory for this * block back to malloc. However, there are cases where we don't want to * do that: * * 1) If it's the keeper block. This block was malloc'd in the same * allocation as the context itself and can't be free'd without * freeing the context. * 2) If it's the current block. We could free this, but doing so would * leave us nothing to set the current block to, so we just mark the * block as empty so new allocations can reuse it again. * 3) If we have no "freeblock" set, then we save a single block for * future allocations to avoid having to malloc a new block again. * This is useful for FIFO workloads as it avoids continual * free/malloc cycles. */ if (IsKeeperBlock(set, block) || set->block == block) GenerationBlockMarkEmpty(block); /* case 1 and 2 */ else if (set->freeblock == NULL) { /* case 3 */ GenerationBlockMarkEmpty(block); set->freeblock = block; } else GenerationBlockFree(set, block); /* Otherwise, free it */ } /* * GenerationRealloc * When handling repalloc, we simply allocate a new chunk, copy the data * and discard the old one. The only exception is when the new size fits * into the old chunk - in that case we just update chunk header. */ void * GenerationRealloc(void *pointer, Size size, int flags) { MemoryChunk *chunk = PointerGetMemoryChunk(pointer); GenerationContext *set; GenerationBlock *block; GenerationPointer newPointer; Size oldsize; /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, Generation_CHUNKHDRSZ); if (MemoryChunkIsExternal(chunk)) { block = ExternalChunkGetBlock(chunk); /* * Try to verify that we have a sane block pointer: the block header * should reference a generation context. */ if (!GenerationBlockIsValid(block)) elog(ERROR, "could not find block containing chunk %p", chunk); oldsize = block->endptr - (char *) pointer; } else { block = MemoryChunkGetBlock(chunk); /* * In this path, for speed reasons we just Assert that the referenced * block is good. Future field experience may show that this Assert * had better become a regular runtime test-and-elog check. */ Assert(GenerationBlockIsValid(block)); oldsize = MemoryChunkGetValue(chunk); } set = block->context; #ifdef MEMORY_CONTEXT_CHECKING /* Test for someone scribbling on unused space in chunk */ Assert(chunk->requested_size < oldsize); if (!sentinel_ok(pointer, chunk->requested_size)) elog(WARNING, "detected write past chunk end in %s %p", ((MemoryContext) set)->name, chunk); #endif /* * Maybe the allocated area already big enough. (In particular, we always * fall out here if the requested size is a decrease.) * * This memory context does not use power-of-2 chunk sizing and instead * carves the chunks to be as small as possible, so most repalloc() calls * will end up in the palloc/memcpy/pfree branch. * * XXX Perhaps we should annotate this condition with unlikely()? */ #ifdef MEMORY_CONTEXT_CHECKING /* With MEMORY_CONTEXT_CHECKING, we need an extra byte for the sentinel */ if (oldsize > size) #else if (oldsize >= size) #endif { #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 */ 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 access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, Generation_CHUNKHDRSZ); return pointer; } /* allocate new chunk (this also checks size is valid) */ newPointer = GenerationAlloc((MemoryContext) set, size, flags); /* leave immediately if request was not completed */ if (newPointer == NULL) { /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, Generation_CHUNKHDRSZ); return MemoryContextAllocationFailure((MemoryContext) set, size, flags); } /* * GenerationAlloc() 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 */ GenerationFree(pointer); return newPointer; } /* * GenerationGetChunkContext * Return the MemoryContext that 'pointer' belongs to. */ MemoryContext GenerationGetChunkContext(void *pointer) { MemoryChunk *chunk = PointerGetMemoryChunk(pointer); GenerationBlock *block; /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, Generation_CHUNKHDRSZ); if (MemoryChunkIsExternal(chunk)) block = ExternalChunkGetBlock(chunk); else block = (GenerationBlock *) MemoryChunkGetBlock(chunk); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, Generation_CHUNKHDRSZ); Assert(GenerationBlockIsValid(block)); return &block->context->header; } /* * GenerationGetChunkSpace * Given a currently-allocated chunk, determine the total space * it occupies (including all memory-allocation overhead). */ Size GenerationGetChunkSpace(void *pointer) { MemoryChunk *chunk = PointerGetMemoryChunk(pointer); Size chunksize; /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, Generation_CHUNKHDRSZ); if (MemoryChunkIsExternal(chunk)) { GenerationBlock *block = ExternalChunkGetBlock(chunk); Assert(GenerationBlockIsValid(block)); chunksize = block->endptr - (char *) pointer; } else chunksize = MemoryChunkGetValue(chunk); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, Generation_CHUNKHDRSZ); return Generation_CHUNKHDRSZ + chunksize; } /* * GenerationIsEmpty * Is a GenerationContext empty of any allocated space? */ bool GenerationIsEmpty(MemoryContext context) { GenerationContext *set = (GenerationContext *) context; dlist_iter iter; Assert(GenerationIsValid(set)); dlist_foreach(iter, &set->blocks) { GenerationBlock *block = dlist_container(GenerationBlock, node, iter.cur); if (block->nchunks > 0) return false; } return true; } /* * GenerationStats * Compute stats about memory consumption of a Generation context. * * 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. * print_to_stderr: print stats to stderr if true, elog otherwise. * * XXX freespace only accounts for empty space at the end of the block, not * space of freed chunks (which is unknown). */ void GenerationStats(MemoryContext context, MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals, bool print_to_stderr) { GenerationContext *set = (GenerationContext *) context; Size nblocks = 0; Size nchunks = 0; Size nfreechunks = 0; Size totalspace; Size freespace = 0; dlist_iter iter; Assert(GenerationIsValid(set)); /* Include context header in totalspace */ totalspace = MAXALIGN(sizeof(GenerationContext)); dlist_foreach(iter, &set->blocks) { GenerationBlock *block = dlist_container(GenerationBlock, node, iter.cur); nblocks++; nchunks += block->nchunks; nfreechunks += block->nfree; totalspace += block->blksize; freespace += (block->endptr - block->freeptr); } if (printfunc) { char stats_string[200]; snprintf(stats_string, sizeof(stats_string), "%zu total in %zu blocks (%zu chunks); %zu free (%zu chunks); %zu used", totalspace, nblocks, nchunks, freespace, nfreechunks, totalspace - freespace); printfunc(context, passthru, stats_string, print_to_stderr); } if (totals) { totals->nblocks += nblocks; totals->freechunks += nfreechunks; totals->totalspace += totalspace; totals->freespace += freespace; } } #ifdef MEMORY_CONTEXT_CHECKING /* * GenerationCheck * 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! */ void GenerationCheck(MemoryContext context) { GenerationContext *gen = (GenerationContext *) context; const char *name = context->name; dlist_iter iter; Size total_allocated = 0; /* walk all blocks in this context */ dlist_foreach(iter, &gen->blocks) { GenerationBlock *block = dlist_container(GenerationBlock, node, iter.cur); int nfree, nchunks; char *ptr; bool has_external_chunk = false; total_allocated += block->blksize; /* * nfree > nchunks is surely wrong. Equality is allowed as the block * might completely empty if it's the freeblock. */ if (block->nfree > block->nchunks) elog(WARNING, "problem in Generation %s: number of free chunks %d in block %p exceeds %d allocated", name, block->nfree, block, block->nchunks); /* check block belongs to the correct context */ if (block->context != gen) elog(WARNING, "problem in Generation %s: bogus context link in block %p", name, block); /* Now walk through the chunks and count them. */ nfree = 0; nchunks = 0; ptr = ((char *) block) + Generation_BLOCKHDRSZ; while (ptr < block->freeptr) { MemoryChunk *chunk = (MemoryChunk *) ptr; GenerationBlock *chunkblock; Size chunksize; /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, Generation_CHUNKHDRSZ); if (MemoryChunkIsExternal(chunk)) { chunkblock = ExternalChunkGetBlock(chunk); chunksize = block->endptr - (char *) MemoryChunkGetPointer(chunk); has_external_chunk = true; } else { chunkblock = MemoryChunkGetBlock(chunk); chunksize = MemoryChunkGetValue(chunk); } /* move to the next chunk */ ptr += (chunksize + Generation_CHUNKHDRSZ); nchunks += 1; /* chunks have both block and context pointers, so check both */ if (chunkblock != block) elog(WARNING, "problem in Generation %s: bogus block link in block %p, chunk %p", name, block, chunk); /* is chunk allocated? */ if (chunk->requested_size != InvalidAllocSize) { /* now make sure the chunk size is correct */ if (chunksize < chunk->requested_size || chunksize != MAXALIGN(chunksize)) elog(WARNING, "problem in Generation %s: bogus chunk size in block %p, chunk %p", name, block, chunk); /* check sentinel */ Assert(chunk->requested_size < chunksize); if (!sentinel_ok(chunk, Generation_CHUNKHDRSZ + chunk->requested_size)) elog(WARNING, "problem in Generation %s: detected write past chunk end in block %p, chunk %p", name, block, chunk); } else nfree += 1; /* if chunk is allocated, disallow access to the chunk header */ if (chunk->requested_size != InvalidAllocSize) VALGRIND_MAKE_MEM_NOACCESS(chunk, Generation_CHUNKHDRSZ); } /* * Make sure we got the expected number of allocated and free chunks * (as tracked in the block header). */ if (nchunks != block->nchunks) elog(WARNING, "problem in Generation %s: number of allocated chunks %d in block %p does not match header %d", name, nchunks, block, block->nchunks); if (nfree != block->nfree) elog(WARNING, "problem in Generation %s: number of free chunks %d in block %p does not match header %d", name, nfree, block, block->nfree); if (has_external_chunk && nchunks > 1) elog(WARNING, "problem in Generation %s: external chunk on non-dedicated block %p", name, block); } Assert(total_allocated == context->mem_allocated); } #endif /* MEMORY_CONTEXT_CHECKING */ libpg_query-17-6.1.0/src/postgres/src_backend_utils_mmgr_mcxt.c000066400000000000000000001315011477334012600246310ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ErrorContext * - MemoryContextReset * - MemoryContextDeleteChildren * - MemoryContextDelete * - MemoryContextDeleteOnly * - TopMemoryContext * - CurrentMemoryContext * - MemoryContextSetParent * - MemoryContextCallResetCallbacks * - MemoryContextResetOnly * - repalloc * - GetMemoryChunkContext * - mcxt_methods * - MemoryContextAllocationFailure * - MemoryContextStats * - MemoryContextStatsDetail * - MemoryContextStatsInternal * - MemoryContextStatsPrint * - MemoryContextTraverseNext * - GetMemoryChunkSpace * - MemoryContextAllocAligned * - MemoryContextAllocExtended * - BogusFree * - GetMemoryChunkHeader * - BogusRealloc * - BogusGetChunkContext * - BogusGetChunkSpace * - GetMemoryChunkMethodID * - pfree * - pstrdup * - MemoryContextStrdup * - MemoryContextAlloc * - palloc * - palloc0 * - MemoryContextCreate * - MemoryContextInit * - MemoryContextAllowInCriticalSection * - CurrentMemoryContext * - MemoryContextDelete * - MemoryContextAllocZero * - MemoryContextSizeFailure * - 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-2024, 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" #include "utils/memutils_internal.h" #include "utils/memutils_memorychunk.h" static void BogusFree(void *pointer); static void *BogusRealloc(void *pointer, Size size, int flags); static MemoryContext BogusGetChunkContext(void *pointer); static Size BogusGetChunkSpace(void *pointer); /***************************************************************************** * GLOBAL MEMORY * *****************************************************************************/ #define BOGUS_MCTX(id) \ [id].free_p = BogusFree, \ [id].realloc = BogusRealloc, \ [id].get_chunk_context = BogusGetChunkContext, \ [id].get_chunk_space = BogusGetChunkSpace static const MemoryContextMethods mcxt_methods[] = { /* aset.c */ [MCTX_ASET_ID].alloc = AllocSetAlloc, [MCTX_ASET_ID].free_p = AllocSetFree, [MCTX_ASET_ID].realloc = AllocSetRealloc, [MCTX_ASET_ID].reset = AllocSetReset, [MCTX_ASET_ID].delete_context = AllocSetDelete, [MCTX_ASET_ID].get_chunk_context = AllocSetGetChunkContext, [MCTX_ASET_ID].get_chunk_space = AllocSetGetChunkSpace, [MCTX_ASET_ID].is_empty = AllocSetIsEmpty, [MCTX_ASET_ID].stats = AllocSetStats, #ifdef MEMORY_CONTEXT_CHECKING [MCTX_ASET_ID].check = AllocSetCheck, #endif /* generation.c */ [MCTX_GENERATION_ID].alloc = GenerationAlloc, [MCTX_GENERATION_ID].free_p = GenerationFree, [MCTX_GENERATION_ID].realloc = GenerationRealloc, [MCTX_GENERATION_ID].reset = GenerationReset, [MCTX_GENERATION_ID].delete_context = GenerationDelete, [MCTX_GENERATION_ID].get_chunk_context = GenerationGetChunkContext, [MCTX_GENERATION_ID].get_chunk_space = GenerationGetChunkSpace, [MCTX_GENERATION_ID].is_empty = GenerationIsEmpty, [MCTX_GENERATION_ID].stats = GenerationStats, #ifdef MEMORY_CONTEXT_CHECKING [MCTX_GENERATION_ID].check = GenerationCheck, #endif /* slab.c */ [MCTX_SLAB_ID].alloc = SlabAlloc, [MCTX_SLAB_ID].free_p = SlabFree, [MCTX_SLAB_ID].realloc = SlabRealloc, [MCTX_SLAB_ID].reset = SlabReset, [MCTX_SLAB_ID].delete_context = SlabDelete, [MCTX_SLAB_ID].get_chunk_context = SlabGetChunkContext, [MCTX_SLAB_ID].get_chunk_space = SlabGetChunkSpace, [MCTX_SLAB_ID].is_empty = SlabIsEmpty, [MCTX_SLAB_ID].stats = SlabStats, #ifdef MEMORY_CONTEXT_CHECKING [MCTX_SLAB_ID].check = SlabCheck, #endif /* alignedalloc.c */ [MCTX_ALIGNED_REDIRECT_ID].alloc = NULL, /* not required */ [MCTX_ALIGNED_REDIRECT_ID].free_p = AlignedAllocFree, [MCTX_ALIGNED_REDIRECT_ID].realloc = AlignedAllocRealloc, [MCTX_ALIGNED_REDIRECT_ID].reset = NULL, /* not required */ [MCTX_ALIGNED_REDIRECT_ID].delete_context = NULL, /* not required */ [MCTX_ALIGNED_REDIRECT_ID].get_chunk_context = AlignedAllocGetChunkContext, [MCTX_ALIGNED_REDIRECT_ID].get_chunk_space = AlignedAllocGetChunkSpace, [MCTX_ALIGNED_REDIRECT_ID].is_empty = NULL, /* not required */ [MCTX_ALIGNED_REDIRECT_ID].stats = NULL, /* not required */ #ifdef MEMORY_CONTEXT_CHECKING [MCTX_ALIGNED_REDIRECT_ID].check = NULL, /* not required */ #endif /* bump.c */ [MCTX_BUMP_ID].alloc = BumpAlloc, [MCTX_BUMP_ID].free_p = BumpFree, [MCTX_BUMP_ID].realloc = BumpRealloc, [MCTX_BUMP_ID].reset = BumpReset, [MCTX_BUMP_ID].delete_context = BumpDelete, [MCTX_BUMP_ID].get_chunk_context = BumpGetChunkContext, [MCTX_BUMP_ID].get_chunk_space = BumpGetChunkSpace, [MCTX_BUMP_ID].is_empty = BumpIsEmpty, [MCTX_BUMP_ID].stats = BumpStats, #ifdef MEMORY_CONTEXT_CHECKING [MCTX_BUMP_ID].check = BumpCheck, #endif /* * Reserved and unused IDs should have dummy entries here. This allows us * to fail cleanly if a bogus pointer is passed to pfree or the like. It * seems sufficient to provide routines for the methods that might get * invoked from inspection of a chunk (see MCXT_METHOD calls below). */ BOGUS_MCTX(MCTX_1_RESERVED_GLIBC_ID), BOGUS_MCTX(MCTX_2_RESERVED_GLIBC_ID), BOGUS_MCTX(MCTX_8_UNUSED_ID), BOGUS_MCTX(MCTX_9_UNUSED_ID), BOGUS_MCTX(MCTX_10_UNUSED_ID), BOGUS_MCTX(MCTX_11_UNUSED_ID), BOGUS_MCTX(MCTX_12_UNUSED_ID), BOGUS_MCTX(MCTX_13_UNUSED_ID), BOGUS_MCTX(MCTX_14_UNUSED_ID), BOGUS_MCTX(MCTX_0_RESERVED_UNUSEDMEM_ID), BOGUS_MCTX(MCTX_15_RESERVED_WIPEDMEM_ID) }; #undef BOGUS_MCTX /* * 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 MemoryContextDeleteOnly(MemoryContext context); static void MemoryContextCallResetCallbacks(MemoryContext context); static void MemoryContextStatsInternal(MemoryContext context, int level, int max_level, int max_children, MemoryContextCounters *totals, bool print_to_stderr); static void MemoryContextStatsPrint(MemoryContext context, void *passthru, const char *stats_string, bool print_to_stderr); /* * 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) /* * Call the given function in the MemoryContextMethods for the memory context * type that 'pointer' belongs to. */ #define MCXT_METHOD(pointer, method) \ mcxt_methods[GetMemoryChunkMethodID(pointer)].method /* * GetMemoryChunkMethodID * Return the MemoryContextMethodID from the uint64 chunk header which * directly precedes 'pointer'. */ static inline MemoryContextMethodID GetMemoryChunkMethodID(const void *pointer) { uint64 header; /* * 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 == (const void *) MAXALIGN(pointer)); /* Allow access to the uint64 header */ VALGRIND_MAKE_MEM_DEFINED((char *) pointer - sizeof(uint64), sizeof(uint64)); header = *((const uint64 *) ((const char *) pointer - sizeof(uint64))); /* Disallow access to the uint64 header */ VALGRIND_MAKE_MEM_NOACCESS((char *) pointer - sizeof(uint64), sizeof(uint64)); return (MemoryContextMethodID) (header & MEMORY_CONTEXT_METHODID_MASK); } /* * GetMemoryChunkHeader * Return the uint64 chunk header which directly precedes 'pointer'. * * This is only used after GetMemoryChunkMethodID, so no need for error checks. */ static inline uint64 GetMemoryChunkHeader(const void *pointer) { uint64 header; /* Allow access to the uint64 header */ VALGRIND_MAKE_MEM_DEFINED((char *) pointer - sizeof(uint64), sizeof(uint64)); header = *((const uint64 *) ((const char *) pointer - sizeof(uint64))); /* Disallow access to the uint64 header */ VALGRIND_MAKE_MEM_NOACCESS((char *) pointer - sizeof(uint64), sizeof(uint64)); return header; } /* * MemoryContextTraverseNext * Helper function to traverse all descendants of a memory context * without recursion. * * Recursion could lead to out-of-stack errors with deep context hierarchies, * which would be unpleasant in error cleanup code paths. * * To process 'context' and all its descendants, use a loop like this: * * * for (MemoryContext curr = context->firstchild; * curr != NULL; * curr = MemoryContextTraverseNext(curr, context)) * { * * } * * This visits all the contexts in pre-order, that is a node is visited * before its children. */ static MemoryContext MemoryContextTraverseNext(MemoryContext curr, MemoryContext top) { /* After processing a node, traverse to its first child if any */ if (curr->firstchild != NULL) return curr->firstchild; /* * After processing a childless node, traverse to its next sibling if * there is one. If there isn't, traverse back up to the parent (which * has already been visited, and now so have all its descendants). We're * done if that is "top", otherwise traverse to its next sibling if any, * otherwise repeat moving up. */ while (curr->nextchild == NULL) { curr = curr->parent; if (curr == top) return NULL; } return curr->nextchild; } /* * Support routines to trap use of invalid memory context method IDs * (from calling pfree or the like on a bogus pointer). As a possible * aid in debugging, we report the header word along with the pointer * address (if we got here, there must be an accessible header word). */ static void BogusFree(void *pointer) { elog(ERROR, "pfree called with invalid pointer %p (header 0x%016llx)", pointer, (unsigned long long) GetMemoryChunkHeader(pointer)); } static void * BogusRealloc(void *pointer, Size size, int flags) { elog(ERROR, "repalloc called with invalid pointer %p (header 0x%016llx)", pointer, (unsigned long long) GetMemoryChunkHeader(pointer)); return NULL; /* keep compiler quiet */ } static MemoryContext BogusGetChunkContext(void *pointer) { elog(ERROR, "GetMemoryChunkContext called with invalid pointer %p (header 0x%016llx)", pointer, (unsigned long long) GetMemoryChunkHeader(pointer)); return NULL; /* keep compiler quiet */ } static Size BogusGetChunkSpace(void *pointer) { elog(ERROR, "GetMemoryChunkSpace called with invalid pointer %p (header 0x%016llx)", pointer, (unsigned long long) GetMemoryChunkHeader(pointer)); return 0; /* keep compiler quiet */ } /***************************************************************************** * 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) { Assert(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) { Assert(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) { Assert(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. 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 deal with descendant nodes here. */ void MemoryContextDelete(MemoryContext context) { MemoryContext curr; Assert(MemoryContextIsValid(context)); /* * Delete subcontexts from the bottom up. * * Note: Do not use recursion here. A "stack depth limit exceeded" error * would be unpleasant if we're already in the process of cleaning up from * transaction abort. We also cannot use MemoryContextTraverseNext() here * because we modify the tree as we go. */ curr = context; for (;;) { MemoryContext parent; /* Descend down until we find a leaf context with no children */ while (curr->firstchild != NULL) curr = curr->firstchild; /* * We're now at a leaf with no children. Free it and continue from the * parent. Or if this was the original node, we're all done. */ parent = curr->parent; MemoryContextDeleteOnly(curr); if (curr == context) break; curr = parent; } } /* * Subroutine of MemoryContextDelete, * to delete a context that has no children. * We must also delink the context from its parent, if it has one. */ static void MemoryContextDeleteOnly(MemoryContext context) { Assert(MemoryContextIsValid(context)); /* We had better not be deleting TopMemoryContext ... */ Assert(context != TopMemoryContext); /* And not CurrentMemoryContext, either */ Assert(context != CurrentMemoryContext); /* All the children should've been deleted already */ Assert(context->firstchild == NULL); /* * 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) { Assert(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) { Assert(MemoryContextIsValid(context)); Assert(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) { Assert(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) { Assert(MemoryContextIsValid(context)); context->allowInCritSection = allow; } /* * GetMemoryChunkContext * Given a currently-allocated chunk, determine the MemoryContext that * the chunk belongs to. */ MemoryContext GetMemoryChunkContext(void *pointer) { return MCXT_METHOD(pointer, get_chunk_context) (pointer); } /* * 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. */ Size GetMemoryChunkSpace(void *pointer) { return MCXT_METHOD(pointer, get_chunk_space) (pointer); } /* * 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. */ /* * Return the memory consumption statistics about the given context and its * 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) { /* Hard-wired limits are usually good enough */ MemoryContextStatsDetail(context, 100, 100, true); } /* * MemoryContextStatsDetail * * Entry point for use if you want to vary the number of child contexts shown. * * If print_to_stderr is true, print statistics about the memory contexts * with fprintf(stderr), otherwise use ereport(). */ void MemoryContextStatsDetail(MemoryContext context, int max_level, int max_children, bool print_to_stderr) { MemoryContextCounters grand_totals; memset(&grand_totals, 0, sizeof(grand_totals)); MemoryContextStatsInternal(context, 0, max_level, max_children, &grand_totals, print_to_stderr); if (print_to_stderr) fprintf(stderr, "Grand total: %zu bytes in %zu blocks; %zu free (%zu chunks); %zu used\n", grand_totals.totalspace, grand_totals.nblocks, grand_totals.freespace, grand_totals.freechunks, grand_totals.totalspace - grand_totals.freespace); else { /* * Use LOG_SERVER_ONLY to prevent the memory contexts from being sent * to the connected client. * * We don't buffer the information about all memory contexts in a * backend into StringInfo and log it as one message. That would * require the buffer to be enlarged, risking an OOM as there could be * a large number of memory contexts in a backend. Instead, we log * one message per memory context. */ ereport(LOG_SERVER_ONLY, (errhidestmt(true), errhidecontext(true), errmsg_internal("Grand total: %zu bytes in %zu blocks; %zu free (%zu chunks); %zu used", 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 stats for this context if possible, but in any case accumulate counts * into *totals (if not NULL). */ static void MemoryContextStatsInternal(MemoryContext context, int level, int max_level, int max_children, MemoryContextCounters *totals, bool print_to_stderr) { MemoryContext child; int ichild; Assert(MemoryContextIsValid(context)); /* Examine the context itself */ context->methods->stats(context, MemoryContextStatsPrint, (void *) &level, totals, print_to_stderr); /* * Examine children. * * If we are past the recursion depth limit or already running low on * stack, do not print them explicitly but just summarize them. Similarly, * if there are more than max_children of them, we do not print the rest * explicitly, but just summarize them. */ child = context->firstchild; ichild = 0; if (level < max_level && !stack_is_too_deep()) { for (; child != NULL && ichild < max_children; child = child->nextchild, ichild++) { MemoryContextStatsInternal(child, level + 1, max_level, max_children, totals, print_to_stderr); } } if (child != NULL) { /* Summarize the rest of the children, avoiding recursion. */ MemoryContextCounters local_totals; memset(&local_totals, 0, sizeof(local_totals)); ichild = 0; while (child != NULL) { child->methods->stats(child, NULL, NULL, &local_totals, false); ichild++; child = MemoryContextTraverseNext(child, context); } if (print_to_stderr) { for (int i = 0; i <= level; i++) fprintf(stderr, " "); fprintf(stderr, "%d more child contexts containing %zu total in %zu blocks; %zu free (%zu chunks); %zu used\n", ichild, local_totals.totalspace, local_totals.nblocks, local_totals.freespace, local_totals.freechunks, local_totals.totalspace - local_totals.freespace); } else ereport(LOG_SERVER_ONLY, (errhidestmt(true), errhidecontext(true), errmsg_internal("level: %d; %d more child contexts containing %zu total in %zu blocks; %zu free (%zu chunks); %zu used", level, ichild, 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, bool print_to_stderr) { int level = *(int *) passthru; const char *name = context->name; const char *ident = context->ident; char truncated_ident[110]; 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; } truncated_ident[0] = '\0'; 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; strcpy(truncated_ident, ": "); i = strlen(truncated_ident); if (idlen > 100) { idlen = pg_mbcliplen(ident, idlen, 100); truncated = true; } while (idlen-- > 0) { unsigned char c = *ident++; if (c < ' ') c = ' '; truncated_ident[i++] = c; } truncated_ident[i] = '\0'; if (truncated) strcat(truncated_ident, "..."); } if (print_to_stderr) { for (i = 0; i < level; i++) fprintf(stderr, " "); fprintf(stderr, "%s: %s%s\n", name, stats_string, truncated_ident); } else ereport(LOG_SERVER_ONLY, (errhidestmt(true), errhidecontext(true), errmsg_internal("level: %d; %s: %s%s", level, name, stats_string, truncated_ident))); } /* * MemoryContextCheck * Check all chunks in the named context and its children. * * This is just a debugging utility, so it's not fancy. */ #ifdef MEMORY_CONTEXT_CHECKING #endif /* * 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. * method_id: MemoryContextMethodID of the context-type being created. * 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, MemoryContextMethodID method_id, 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 = &mcxt_methods[method_id]; 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); } /* * MemoryContextAllocationFailure * For use by MemoryContextMethods implementations to handle when malloc * returns NULL. The behavior is specific to whether MCXT_ALLOC_NO_OOM * is in 'flags'. */ void * MemoryContextAllocationFailure(MemoryContext context, Size size, int flags) { 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; } /* * MemoryContextSizeFailure * For use by MemoryContextMethods implementations to handle invalid * memory allocation request sizes. */ void MemoryContextSizeFailure(MemoryContext context, Size size, int flags) { elog(ERROR, "invalid memory alloc request size %zu", size); } /* * 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; Assert(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); context->isReset = false; /* * For efficiency reasons, we purposefully offload the handling of * allocation failures to the MemoryContextMethods implementation as this * allows these checks to be performed only when an actual malloc needs to * be done to request more memory from the OS. Additionally, not having * to execute any instructions after this call allows the compiler to use * the sibling call optimization. If you're considering adding code after * this call, consider making it the responsibility of the 'alloc' * function instead. */ ret = context->methods->alloc(context, size, 0); 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; Assert(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); context->isReset = false; ret = context->methods->alloc(context, size, 0); VALGRIND_MEMPOOL_ALLOC(context, ret, size); MemSetAligned(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; Assert(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); if (!((flags & MCXT_ALLOC_HUGE) != 0 ? AllocHugeSizeIsValid(size) : AllocSizeIsValid(size))) elog(ERROR, "invalid memory alloc request size %zu", size); context->isReset = false; ret = context->methods->alloc(context, size, flags); if (unlikely(ret == NULL)) return NULL; VALGRIND_MEMPOOL_ALLOC(context, ret, size); if ((flags & MCXT_ALLOC_ZERO) != 0) MemSetAligned(ret, 0, size); return ret; } /* * HandleLogMemoryContextInterrupt * Handle receipt of an interrupt indicating logging of memory * contexts. * * All the actual work is deferred to ProcessLogMemoryContextInterrupt(), * because we cannot safely emit a log message inside the signal handler. */ /* * ProcessLogMemoryContextInterrupt * Perform logging of memory contexts of this backend process. * * Any backend that participates in ProcSignal signaling must arrange * to call this function if we see LogMemoryContextPending set. * It is called from CHECK_FOR_INTERRUPTS(), which is enough because * the target process for logging of memory contexts is a backend. */ void * palloc(Size size) { /* duplicates MemoryContextAlloc to avoid increased overhead */ void *ret; MemoryContext context = CurrentMemoryContext; Assert(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); context->isReset = false; /* * For efficiency reasons, we purposefully offload the handling of * allocation failures to the MemoryContextMethods implementation as this * allows these checks to be performed only when an actual malloc needs to * be done to request more memory from the OS. Additionally, not having * to execute any instructions after this call allows the compiler to use * the sibling call optimization. If you're considering adding code after * this call, consider making it the responsibility of the 'alloc' * function instead. */ ret = context->methods->alloc(context, size, 0); /* We expect OOM to be handled by the alloc function */ Assert(ret != NULL); VALGRIND_MEMPOOL_ALLOC(context, ret, size); return ret; } void * palloc0(Size size) { /* duplicates MemoryContextAllocZero to avoid increased overhead */ void *ret; MemoryContext context = CurrentMemoryContext; Assert(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); context->isReset = false; ret = context->methods->alloc(context, size, 0); VALGRIND_MEMPOOL_ALLOC(context, ret, size); MemSetAligned(ret, 0, size); return ret; } /* * MemoryContextAllocAligned * Allocate 'size' bytes of memory in 'context' aligned to 'alignto' * bytes. * * Currently, we align addresses by requesting additional bytes from the * MemoryContext's standard allocator function and then aligning the returned * address by the required alignment. This means that the given MemoryContext * must support providing us with a chunk of memory that's larger than 'size'. * For allocators such as Slab, that's not going to work, as slab only allows * chunks of the size that's specified when the context is created. * * 'alignto' must be a power of 2. * 'flags' may be 0 or set the same as MemoryContextAllocExtended(). */ void * MemoryContextAllocAligned(MemoryContext context, Size size, Size alignto, int flags) { MemoryChunk *alignedchunk; Size alloc_size; void *unaligned; void *aligned; /* wouldn't make much sense to waste that much space */ Assert(alignto < (128 * 1024 * 1024)); /* ensure alignto is a power of 2 */ Assert((alignto & (alignto - 1)) == 0); /* * If the alignment requirements are less than what we already guarantee * then just use the standard allocation function. */ if (unlikely(alignto <= MAXIMUM_ALIGNOF)) return MemoryContextAllocExtended(context, size, flags); /* * We implement aligned pointers by simply allocating enough memory for * the requested size plus the alignment and an additional "redirection" * MemoryChunk. This additional MemoryChunk is required for operations * such as pfree when used on the pointer returned by this function. We * use this redirection MemoryChunk in order to find the pointer to the * memory that was returned by the MemoryContextAllocExtended call below. * We do that by "borrowing" the block offset field and instead of using * that to find the offset into the owning block, we use it to find the * original allocated address. * * Here we must allocate enough extra memory so that we can still align * the pointer returned by MemoryContextAllocExtended and also have enough * space for the redirection MemoryChunk. Since allocations will already * be at least aligned by MAXIMUM_ALIGNOF, we can subtract that amount * from the allocation size to save a little memory. */ alloc_size = size + PallocAlignedExtraBytes(alignto); #ifdef MEMORY_CONTEXT_CHECKING /* ensure there's space for a sentinel byte */ alloc_size += 1; #endif /* perform the actual allocation */ unaligned = MemoryContextAllocExtended(context, alloc_size, flags); /* set the aligned pointer */ aligned = (void *) TYPEALIGN(alignto, (char *) unaligned + sizeof(MemoryChunk)); alignedchunk = PointerGetMemoryChunk(aligned); /* * We set the redirect MemoryChunk so that the block offset calculation is * used to point back to the 'unaligned' allocated chunk. This allows us * to use MemoryChunkGetBlock() to find the unaligned chunk when we need * to perform operations such as pfree() and repalloc(). * * We store 'alignto' in the MemoryChunk's 'value' so that we know what * the alignment was set to should we ever be asked to realloc this * pointer. */ MemoryChunkSetHdrMask(alignedchunk, unaligned, alignto, MCTX_ALIGNED_REDIRECT_ID); /* double check we produced a correctly aligned pointer */ Assert((void *) TYPEALIGN(alignto, aligned) == aligned); #ifdef MEMORY_CONTEXT_CHECKING alignedchunk->requested_size = size; /* set mark to catch clobber of "unused" space */ set_sentinel(aligned, size); #endif /* Mark the bytes before the redirection header as noaccess */ VALGRIND_MAKE_MEM_NOACCESS(unaligned, (char *) alignedchunk - (char *) unaligned); /* Disallow access to the redirection chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(alignedchunk, sizeof(MemoryChunk)); return aligned; } /* * palloc_aligned * Allocate 'size' bytes returning a pointer that's aligned to the * 'alignto' boundary. * * Currently, we align addresses by requesting additional bytes from the * MemoryContext's standard allocator function and then aligning the returned * address by the required alignment. This means that the given MemoryContext * must support providing us with a chunk of memory that's larger than 'size'. * For allocators such as Slab, that's not going to work, as slab only allows * chunks of the size that's specified when the context is created. * * 'alignto' must be a power of 2. * 'flags' may be 0 or set the same as MemoryContextAllocExtended(). */ /* * pfree * Release an allocated chunk. */ void pfree(void *pointer) { #ifdef USE_VALGRIND MemoryContextMethodID method = GetMemoryChunkMethodID(pointer); MemoryContext context = GetMemoryChunkContext(pointer); #endif MCXT_METHOD(pointer, free_p) (pointer); #ifdef USE_VALGRIND if (method != MCTX_ALIGNED_REDIRECT_ID) VALGRIND_MEMPOOL_FREE(context, pointer); #endif } /* * repalloc * Adjust the size of a previously allocated chunk. */ void * repalloc(void *pointer, Size size) { #ifdef USE_VALGRIND MemoryContextMethodID method = GetMemoryChunkMethodID(pointer); #endif #if defined(USE_ASSERT_CHECKING) || defined(USE_VALGRIND) MemoryContext context = GetMemoryChunkContext(pointer); #endif void *ret; AssertNotInCriticalSection(context); /* isReset must be false already */ Assert(!context->isReset); /* * For efficiency reasons, we purposefully offload the handling of * allocation failures to the MemoryContextMethods implementation as this * allows these checks to be performed only when an actual malloc needs to * be done to request more memory from the OS. Additionally, not having * to execute any instructions after this call allows the compiler to use * the sibling call optimization. If you're considering adding code after * this call, consider making it the responsibility of the 'realloc' * function instead. */ ret = MCXT_METHOD(pointer, realloc) (pointer, size, 0); #ifdef USE_VALGRIND if (method != MCTX_ALIGNED_REDIRECT_ID) VALGRIND_MEMPOOL_CHANGE(context, pointer, ret, size); #endif return ret; } /* * repalloc_extended * Adjust the size of a previously allocated chunk, * with HUGE and NO_OOM options. */ #if defined(USE_ASSERT_CHECKING) || defined(USE_VALGRIND) #endif /* * repalloc0 * Adjust the size of a previously allocated chunk and zero out the added * space. */ /* * 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-17-6.1.0/src/postgres/src_backend_utils_mmgr_slab.c000066400000000000000000001015101477334012600245740ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - SlabAlloc * - SlabBlocklistIndex * - SlabAllocInvalidSize * - SlabAllocFromNewBlock * - SlabGetNextFreeChunk * - SlabFindNextBlockListIndex * - SlabAllocSetupNewChunk * - SlabFree * - SlabRealloc * - SlabReset * - SlabDelete * - SlabGetChunkContext * - SlabGetChunkSpace * - SlabIsEmpty * - SlabStats * - SlabCheck *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * slab.c * SLAB allocator definitions. * * SLAB is a MemoryContext implementation designed for cases where large * numbers of equally-sized objects can be allocated and freed efficiently * with minimal memory wastage and fragmentation. * * * Portions Copyright (c) 2017-2024, PostgreSQL Global Development Group * * IDENTIFICATION * src/backend/utils/mmgr/slab.c * * * NOTE: * The constant allocation size allows significant simplification and various * optimizations over more general purpose allocators. The blocks are carved * into chunks of exactly the right size, wasting only the space required to * MAXALIGN the allocated chunks. * * Slab can also help reduce memory fragmentation in cases where longer-lived * chunks remain stored on blocks while most of the other chunks have already * been pfree'd. We give priority to putting new allocations into the * "fullest" block. This help avoid having too many sparsely used blocks * around and allows blocks to more easily become completely unused which * allows them to be eventually free'd. * * We identify the "fullest" block to put new allocations on by using a block * from the lowest populated element of the context's "blocklist" array. * This is an array of dlists containing blocks which we partition by the * number of free chunks which block has. Blocks with fewer free chunks are * stored in a lower indexed dlist array slot. Full blocks go on the 0th * element of the blocklist array. So that we don't have to have too many * elements in the array, each dlist in the array is responsible for a range * of free chunks. When a chunk is palloc'd or pfree'd we may need to move * the block onto another dlist if the number of free chunks crosses the * range boundary that the current list is responsible for. Having just a * few blocklist elements reduces the number of times we must move the block * onto another dlist element. * * We keep track of free chunks within each block by using a block-level free * list. We consult this list when we allocate a new chunk in the block. * The free list is a linked list, the head of which is pointed to with * SlabBlock's freehead field. Each subsequent list item is stored in the * free chunk's memory. We ensure chunks are large enough to store this * address. * * When we allocate a new block, technically all chunks are free, however, to * avoid having to write out the entire block to set the linked list for the * free chunks for every chunk in the block, we instead store a pointer to * the next "unused" chunk on the block and keep track of how many of these * unused chunks there are. When a new block is malloc'd, all chunks are * unused. The unused pointer starts with the first chunk on the block and * as chunks are allocated, the unused pointer is incremented. As chunks are * pfree'd, the unused pointer never goes backwards. The unused pointer can * be thought of as a high watermark for the maximum number of chunks in the * block which have been in use concurrently. When a chunk is pfree'd the * chunk is put onto the head of the free list and the unused pointer is not * changed. We only consume more unused chunks if we run out of free chunks * on the free list. This method effectively gives priority to using * previously used chunks over previously unused chunks, which should perform * better due to CPU caching effects. * *------------------------------------------------------------------------- */ #include "postgres.h" #include "lib/ilist.h" #include "utils/memdebug.h" #include "utils/memutils.h" #include "utils/memutils_internal.h" #include "utils/memutils_memorychunk.h" #define Slab_BLOCKHDRSZ MAXALIGN(sizeof(SlabBlock)) #ifdef MEMORY_CONTEXT_CHECKING /* * Size of the memory required to store the SlabContext. * MEMORY_CONTEXT_CHECKING builds need some extra memory for the isChunkFree * array. */ #define Slab_CONTEXT_HDRSZ(chunksPerBlock) \ (sizeof(SlabContext) + ((chunksPerBlock) * sizeof(bool))) #else #define Slab_CONTEXT_HDRSZ(chunksPerBlock) sizeof(SlabContext) #endif /* * The number of partitions to divide the blocklist into based their number of * free chunks. There must be at least 2. */ #define SLAB_BLOCKLIST_COUNT 3 /* The maximum number of completely empty blocks to keep around for reuse. */ #define SLAB_MAXIMUM_EMPTY_BLOCKS 10 /* * SlabContext is a specialized implementation of MemoryContext. */ typedef struct SlabContext { MemoryContextData header; /* Standard memory-context fields */ /* Allocation parameters for this context: */ uint32 chunkSize; /* the requested (non-aligned) chunk size */ uint32 fullChunkSize; /* chunk size with chunk header and alignment */ uint32 blockSize; /* the size to make each block of chunks */ int32 chunksPerBlock; /* number of chunks that fit in 1 block */ int32 curBlocklistIndex; /* index into the blocklist[] element * containing the fullest, blocks */ #ifdef MEMORY_CONTEXT_CHECKING bool *isChunkFree; /* array to mark free chunks in a block during * SlabCheck */ #endif int32 blocklist_shift; /* number of bits to shift the nfree count * by to get the index into blocklist[] */ dclist_head emptyblocks; /* empty blocks to use up first instead of * mallocing new blocks */ /* * Blocks with free space, grouped by the number of free chunks they * contain. Completely full blocks are stored in the 0th element. * Completely empty blocks are stored in emptyblocks or free'd if we have * enough empty blocks already. */ dlist_head blocklist[SLAB_BLOCKLIST_COUNT]; } SlabContext; /* * SlabBlock * Structure of a single slab block. * * slab: pointer back to the owning MemoryContext * nfree: number of chunks on the block which are unallocated * nunused: number of chunks on the block unallocated and not on the block's * freelist. * freehead: linked-list header storing a pointer to the first free chunk on * the block. Subsequent pointers are stored in the chunk's memory. NULL * indicates the end of the list. * unused: pointer to the next chunk which has yet to be used. * node: doubly-linked list node for the context's blocklist */ typedef struct SlabBlock { SlabContext *slab; /* owning context */ int32 nfree; /* number of chunks on free + unused chunks */ int32 nunused; /* number of unused chunks */ MemoryChunk *freehead; /* pointer to the first free chunk */ MemoryChunk *unused; /* pointer to the next unused chunk */ dlist_node node; /* doubly-linked list for blocklist[] */ } SlabBlock; #define Slab_CHUNKHDRSZ sizeof(MemoryChunk) #define SlabChunkGetPointer(chk) \ ((void *) (((char *) (chk)) + sizeof(MemoryChunk))) /* * SlabBlockGetChunk * Obtain a pointer to the nth (0-based) chunk in the block */ #define SlabBlockGetChunk(slab, block, n) \ ((MemoryChunk *) ((char *) (block) + Slab_BLOCKHDRSZ \ + ((n) * (slab)->fullChunkSize))) #if defined(MEMORY_CONTEXT_CHECKING) || defined(USE_ASSERT_CHECKING) /* * SlabChunkIndex * Get the 0-based index of how many chunks into the block the given * chunk is. */ #define SlabChunkIndex(slab, block, chunk) \ (((char *) (chunk) - (char *) SlabBlockGetChunk(slab, block, 0)) / \ (slab)->fullChunkSize) /* * SlabChunkMod * A MemoryChunk should always be at an address which is a multiple of * fullChunkSize starting from the 0th chunk position. This will return * non-zero if it's not. */ #define SlabChunkMod(slab, block, chunk) \ (((char *) (chunk) - (char *) SlabBlockGetChunk(slab, block, 0)) % \ (slab)->fullChunkSize) #endif /* * SlabIsValid * True iff set is a valid slab allocation set. */ #define SlabIsValid(set) (PointerIsValid(set) && IsA(set, SlabContext)) /* * SlabBlockIsValid * True iff block is a valid block of slab allocation set. */ #define SlabBlockIsValid(block) \ (PointerIsValid(block) && SlabIsValid((block)->slab)) /* * SlabBlocklistIndex * Determine the blocklist index that a block should be in for the given * number of free chunks. */ static inline int32 SlabBlocklistIndex(SlabContext *slab, int nfree) { int32 index; int32 blocklist_shift = slab->blocklist_shift; Assert(nfree >= 0 && nfree <= slab->chunksPerBlock); /* * Determine the blocklist index based on the number of free chunks. We * must ensure that 0 free chunks is dedicated to index 0. Everything * else must be >= 1 and < SLAB_BLOCKLIST_COUNT. * * To make this as efficient as possible, we exploit some two's complement * arithmetic where we reverse the sign before bit shifting. This results * in an nfree of 0 using index 0 and anything non-zero staying non-zero. * This is exploiting 0 and -0 being the same in two's complement. When * we're done, we just need to flip the sign back over again for a * positive index. */ index = -((-nfree) >> blocklist_shift); if (nfree == 0) Assert(index == 0); else Assert(index >= 1 && index < SLAB_BLOCKLIST_COUNT); return index; } /* * SlabFindNextBlockListIndex * Search blocklist for blocks which have free chunks and return the * index of the blocklist found containing at least 1 block with free * chunks. If no block can be found we return 0. * * Note: We give priority to fuller blocks so that these are filled before * emptier blocks. This is done to increase the chances that mostly-empty * blocks will eventually become completely empty so they can be free'd. */ static int32 SlabFindNextBlockListIndex(SlabContext *slab) { /* start at 1 as blocklist[0] is for full blocks. */ for (int i = 1; i < SLAB_BLOCKLIST_COUNT; i++) { /* return the first found non-empty index */ if (!dlist_is_empty(&slab->blocklist[i])) return i; } /* no blocks with free space */ return 0; } /* * SlabGetNextFreeChunk * Return the next free chunk in block and update the block to account * for the returned chunk now being used. */ static inline MemoryChunk * SlabGetNextFreeChunk(SlabContext *slab, SlabBlock *block) { MemoryChunk *chunk; Assert(block->nfree > 0); if (block->freehead != NULL) { chunk = block->freehead; /* * Pop the chunk from the linked list of free chunks. The pointer to * the next free chunk is stored in the chunk itself. */ VALGRIND_MAKE_MEM_DEFINED(SlabChunkGetPointer(chunk), sizeof(MemoryChunk *)); block->freehead = *(MemoryChunk **) SlabChunkGetPointer(chunk); /* check nothing stomped on the free chunk's memory */ Assert(block->freehead == NULL || (block->freehead >= SlabBlockGetChunk(slab, block, 0) && block->freehead <= SlabBlockGetChunk(slab, block, slab->chunksPerBlock - 1) && SlabChunkMod(slab, block, block->freehead) == 0)); } else { Assert(block->nunused > 0); chunk = block->unused; block->unused = (MemoryChunk *) (((char *) block->unused) + slab->fullChunkSize); block->nunused--; } block->nfree--; return chunk; } /* * SlabContextCreate * Create a new Slab context. * * parent: parent context, or NULL if top-level context * name: name of context (must be statically allocated) * blockSize: allocation block size * chunkSize: allocation chunk size * * The Slab_CHUNKHDRSZ + MAXALIGN(chunkSize + 1) may not exceed * MEMORYCHUNK_MAX_VALUE. * 'blockSize' may not exceed MEMORYCHUNK_MAX_BLOCKOFFSET. */ #ifdef MEMORY_CONTEXT_CHECKING #else #endif #ifdef MEMORY_CONTEXT_CHECKING #endif /* * SlabReset * Frees all memory which is allocated in the given set. * * The code simply frees all the blocks in the context - we don't keep any * keeper blocks or anything like that. */ void SlabReset(MemoryContext context) { SlabContext *slab = (SlabContext *) context; dlist_mutable_iter miter; int i; Assert(SlabIsValid(slab)); #ifdef MEMORY_CONTEXT_CHECKING /* Check for corruption and leaks before freeing */ SlabCheck(context); #endif /* release any retained empty blocks */ dclist_foreach_modify(miter, &slab->emptyblocks) { SlabBlock *block = dlist_container(SlabBlock, node, miter.cur); dclist_delete_from(&slab->emptyblocks, miter.cur); #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, slab->blockSize); #endif free(block); context->mem_allocated -= slab->blockSize; } /* walk over blocklist and free the blocks */ for (i = 0; i < SLAB_BLOCKLIST_COUNT; i++) { dlist_foreach_modify(miter, &slab->blocklist[i]) { SlabBlock *block = dlist_container(SlabBlock, node, miter.cur); dlist_delete(miter.cur); #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, slab->blockSize); #endif free(block); context->mem_allocated -= slab->blockSize; } } slab->curBlocklistIndex = 0; Assert(context->mem_allocated == 0); } /* * SlabDelete * Free all memory which is allocated in the given context. */ void SlabDelete(MemoryContext context) { /* Reset to release all the SlabBlocks */ SlabReset(context); /* And free the context header */ free(context); } /* * Small helper for allocating a new chunk from a chunk, to avoid duplicating * the code between SlabAlloc() and SlabAllocFromNewBlock(). */ static inline void * SlabAllocSetupNewChunk(MemoryContext context, SlabBlock *block, MemoryChunk *chunk, Size size) { SlabContext *slab = (SlabContext *) context; /* * Check that the chunk pointer is actually somewhere on the block and is * aligned as expected. */ Assert(chunk >= SlabBlockGetChunk(slab, block, 0)); Assert(chunk <= SlabBlockGetChunk(slab, block, slab->chunksPerBlock - 1)); Assert(SlabChunkMod(slab, block, chunk) == 0); /* Prepare to initialize the chunk header. */ VALGRIND_MAKE_MEM_UNDEFINED(chunk, Slab_CHUNKHDRSZ); MemoryChunkSetHdrMask(chunk, block, MAXALIGN(slab->chunkSize), MCTX_SLAB_ID); #ifdef MEMORY_CONTEXT_CHECKING /* slab mark to catch clobber of "unused" space */ Assert(slab->chunkSize < (slab->fullChunkSize - Slab_CHUNKHDRSZ)); set_sentinel(MemoryChunkGetPointer(chunk), size); VALGRIND_MAKE_MEM_NOACCESS(((char *) chunk) + Slab_CHUNKHDRSZ + slab->chunkSize, slab->fullChunkSize - (slab->chunkSize + Slab_CHUNKHDRSZ)); #endif #ifdef RANDOMIZE_ALLOCATED_MEMORY /* fill the allocated space with junk */ randomize_mem((char *) MemoryChunkGetPointer(chunk), size); #endif /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, Slab_CHUNKHDRSZ); return MemoryChunkGetPointer(chunk); } pg_noinline static void * SlabAllocFromNewBlock(MemoryContext context, Size size, int flags) { SlabContext *slab = (SlabContext *) context; SlabBlock *block; MemoryChunk *chunk; dlist_head *blocklist; int blocklist_idx; /* to save allocating a new one, first check the empty blocks list */ if (dclist_count(&slab->emptyblocks) > 0) { dlist_node *node = dclist_pop_head_node(&slab->emptyblocks); block = dlist_container(SlabBlock, node, node); /* * SlabFree() should have left this block in a valid state with all * chunks free. Ensure that's the case. */ Assert(block->nfree == slab->chunksPerBlock); /* fetch the next chunk from this block */ chunk = SlabGetNextFreeChunk(slab, block); } else { block = (SlabBlock *) malloc(slab->blockSize); if (unlikely(block == NULL)) return MemoryContextAllocationFailure(context, size, flags); block->slab = slab; context->mem_allocated += slab->blockSize; /* use the first chunk in the new block */ chunk = SlabBlockGetChunk(slab, block, 0); block->nfree = slab->chunksPerBlock - 1; block->unused = SlabBlockGetChunk(slab, block, 1); block->freehead = NULL; block->nunused = slab->chunksPerBlock - 1; } /* find the blocklist element for storing blocks with 1 used chunk */ blocklist_idx = SlabBlocklistIndex(slab, block->nfree); blocklist = &slab->blocklist[blocklist_idx]; /* this better be empty. We just added a block thinking it was */ Assert(dlist_is_empty(blocklist)); dlist_push_head(blocklist, &block->node); slab->curBlocklistIndex = blocklist_idx; return SlabAllocSetupNewChunk(context, block, chunk, size); } /* * SlabAllocInvalidSize * Handle raising an ERROR for an invalid size request. We don't do this * in slab alloc as calling the elog functions would force the compiler * to setup the stack frame in SlabAlloc. For performance reasons, we * want to avoid that. */ pg_noinline static void pg_attribute_noreturn() SlabAllocInvalidSize(MemoryContext context, Size size) { SlabContext *slab = (SlabContext *) context; elog(ERROR, "unexpected alloc chunk size %zu (expected %u)", size, slab->chunkSize); } /* * SlabAlloc * Returns a pointer to a newly allocated memory chunk or raises an ERROR * on allocation failure, or returns NULL when flags contains * MCXT_ALLOC_NO_OOM. 'size' must be the same size as was specified * during SlabContextCreate(). * * This function should only contain the most common code paths. Everything * else should be in pg_noinline helper functions, thus avoiding the overhead * of creating a stack frame for the common cases. Allocating memory is often * a bottleneck in many workloads, so avoiding stack frame setup is * worthwhile. Helper functions should always directly return the newly * allocated memory so that we can just return that address directly as a tail * call. */ void * SlabAlloc(MemoryContext context, Size size, int flags) { SlabContext *slab = (SlabContext *) context; SlabBlock *block; MemoryChunk *chunk; Assert(SlabIsValid(slab)); /* sanity check that this is pointing to a valid blocklist */ Assert(slab->curBlocklistIndex >= 0); Assert(slab->curBlocklistIndex <= SlabBlocklistIndex(slab, slab->chunksPerBlock)); /* * Make sure we only allow correct request size. This doubles as the * MemoryContextCheckSize check. */ if (unlikely(size != slab->chunkSize)) SlabAllocInvalidSize(context, size); if (unlikely(slab->curBlocklistIndex == 0)) { /* * Handle the case when there are no partially filled blocks * available. This happens either when the last allocation took the * last chunk in the block, or when SlabFree() free'd the final block. */ return SlabAllocFromNewBlock(context, size, flags); } else { dlist_head *blocklist = &slab->blocklist[slab->curBlocklistIndex]; int new_blocklist_idx; Assert(!dlist_is_empty(blocklist)); /* grab the block from the blocklist */ block = dlist_head_element(SlabBlock, node, blocklist); /* make sure we actually got a valid block, with matching nfree */ Assert(block != NULL); Assert(slab->curBlocklistIndex == SlabBlocklistIndex(slab, block->nfree)); Assert(block->nfree > 0); /* fetch the next chunk from this block */ chunk = SlabGetNextFreeChunk(slab, block); /* get the new blocklist index based on the new free chunk count */ new_blocklist_idx = SlabBlocklistIndex(slab, block->nfree); /* * Handle the case where the blocklist index changes. This also deals * with blocks becoming full as only full blocks go at index 0. */ if (unlikely(slab->curBlocklistIndex != new_blocklist_idx)) { dlist_delete_from(blocklist, &block->node); dlist_push_head(&slab->blocklist[new_blocklist_idx], &block->node); if (dlist_is_empty(blocklist)) slab->curBlocklistIndex = SlabFindNextBlockListIndex(slab); } } return SlabAllocSetupNewChunk(context, block, chunk, size); } /* * SlabFree * Frees allocated memory; memory is removed from the slab. */ void SlabFree(void *pointer) { MemoryChunk *chunk = PointerGetMemoryChunk(pointer); SlabBlock *block; SlabContext *slab; int curBlocklistIdx; int newBlocklistIdx; /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, Slab_CHUNKHDRSZ); block = MemoryChunkGetBlock(chunk); /* * For speed reasons we just Assert that the referenced block is good. * Future field experience may show that this Assert had better become a * regular runtime test-and-elog check. */ Assert(SlabBlockIsValid(block)); slab = block->slab; #ifdef MEMORY_CONTEXT_CHECKING /* Test for someone scribbling on unused space in chunk */ Assert(slab->chunkSize < (slab->fullChunkSize - Slab_CHUNKHDRSZ)); if (!sentinel_ok(pointer, slab->chunkSize)) elog(WARNING, "detected write past chunk end in %s %p", slab->header.name, chunk); #endif /* push this chunk onto the head of the block's free list */ *(MemoryChunk **) pointer = block->freehead; block->freehead = chunk; block->nfree++; Assert(block->nfree > 0); Assert(block->nfree <= slab->chunksPerBlock); #ifdef CLOBBER_FREED_MEMORY /* don't wipe the free list MemoryChunk pointer stored in the chunk */ wipe_mem((char *) pointer + sizeof(MemoryChunk *), slab->chunkSize - sizeof(MemoryChunk *)); #endif curBlocklistIdx = SlabBlocklistIndex(slab, block->nfree - 1); newBlocklistIdx = SlabBlocklistIndex(slab, block->nfree); /* * Check if the block needs to be moved to another element on the * blocklist based on it now having 1 more free chunk. */ if (unlikely(curBlocklistIdx != newBlocklistIdx)) { /* do the move */ dlist_delete_from(&slab->blocklist[curBlocklistIdx], &block->node); dlist_push_head(&slab->blocklist[newBlocklistIdx], &block->node); /* * The blocklist[curBlocklistIdx] may now be empty or we may now be * able to use a lower-element blocklist. We'll need to redetermine * what the slab->curBlocklistIndex is if the current blocklist was * changed or if a lower element one was changed. We must ensure we * use the list with the fullest block(s). */ if (slab->curBlocklistIndex >= curBlocklistIdx) { slab->curBlocklistIndex = SlabFindNextBlockListIndex(slab); /* * We know there must be a block with at least 1 unused chunk as * we just pfree'd one. Ensure curBlocklistIndex reflects this. */ Assert(slab->curBlocklistIndex > 0); } } /* Handle when a block becomes completely empty */ if (unlikely(block->nfree == slab->chunksPerBlock)) { /* remove the block */ dlist_delete_from(&slab->blocklist[newBlocklistIdx], &block->node); /* * To avoid thrashing malloc/free, we keep a list of empty blocks that * we can reuse again instead of having to malloc a new one. */ if (dclist_count(&slab->emptyblocks) < SLAB_MAXIMUM_EMPTY_BLOCKS) dclist_push_head(&slab->emptyblocks, &block->node); else { /* * When we have enough empty blocks stored already, we actually * free the block. */ #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, slab->blockSize); #endif free(block); slab->header.mem_allocated -= slab->blockSize; } /* * Check if we need to reset the blocklist index. This is required * when the blocklist this block is on has become completely empty. */ if (slab->curBlocklistIndex == newBlocklistIdx && dlist_is_empty(&slab->blocklist[newBlocklistIdx])) slab->curBlocklistIndex = SlabFindNextBlockListIndex(slab); } } /* * SlabRealloc * Change the allocated size of a chunk. * * As Slab is designed for allocating equally-sized chunks of memory, it can't * do an actual chunk size change. We try to be gentle and allow calls with * exactly the same size, as in that case we can simply return the same * chunk. When the size differs, we throw an error. * * We could also allow requests with size < chunkSize. That however seems * rather pointless - Slab is meant for chunks of constant size, and moreover * realloc is usually used to enlarge the chunk. */ void * SlabRealloc(void *pointer, Size size, int flags) { MemoryChunk *chunk = PointerGetMemoryChunk(pointer); SlabBlock *block; SlabContext *slab; /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, Slab_CHUNKHDRSZ); block = MemoryChunkGetBlock(chunk); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, Slab_CHUNKHDRSZ); /* * Try to verify that we have a sane block pointer: the block header * should reference a slab context. (We use a test-and-elog, not just * Assert, because it seems highly likely that we're here in error in the * first place.) */ if (!SlabBlockIsValid(block)) elog(ERROR, "could not find block containing chunk %p", chunk); slab = block->slab; /* can't do actual realloc with slab, but let's try to be gentle */ if (size == slab->chunkSize) return pointer; elog(ERROR, "slab allocator does not support realloc()"); return NULL; /* keep compiler quiet */ } /* * SlabGetChunkContext * Return the MemoryContext that 'pointer' belongs to. */ MemoryContext SlabGetChunkContext(void *pointer) { MemoryChunk *chunk = PointerGetMemoryChunk(pointer); SlabBlock *block; /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, Slab_CHUNKHDRSZ); block = MemoryChunkGetBlock(chunk); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, Slab_CHUNKHDRSZ); Assert(SlabBlockIsValid(block)); return &block->slab->header; } /* * SlabGetChunkSpace * Given a currently-allocated chunk, determine the total space * it occupies (including all memory-allocation overhead). */ Size SlabGetChunkSpace(void *pointer) { MemoryChunk *chunk = PointerGetMemoryChunk(pointer); SlabBlock *block; SlabContext *slab; /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, Slab_CHUNKHDRSZ); block = MemoryChunkGetBlock(chunk); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, Slab_CHUNKHDRSZ); Assert(SlabBlockIsValid(block)); slab = block->slab; return slab->fullChunkSize; } /* * SlabIsEmpty * Is the slab empty of any allocated space? */ bool SlabIsEmpty(MemoryContext context) { Assert(SlabIsValid((SlabContext *) context)); return (context->mem_allocated == 0); } /* * SlabStats * Compute stats about memory consumption of a Slab context. * * 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. * print_to_stderr: print stats to stderr if true, elog otherwise. */ void SlabStats(MemoryContext context, MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals, bool print_to_stderr) { SlabContext *slab = (SlabContext *) context; Size nblocks = 0; Size freechunks = 0; Size totalspace; Size freespace = 0; int i; Assert(SlabIsValid(slab)); /* Include context header in totalspace */ totalspace = Slab_CONTEXT_HDRSZ(slab->chunksPerBlock); /* Add the space consumed by blocks in the emptyblocks list */ totalspace += dclist_count(&slab->emptyblocks) * slab->blockSize; for (i = 0; i < SLAB_BLOCKLIST_COUNT; i++) { dlist_iter iter; dlist_foreach(iter, &slab->blocklist[i]) { SlabBlock *block = dlist_container(SlabBlock, node, iter.cur); nblocks++; totalspace += slab->blockSize; freespace += slab->fullChunkSize * block->nfree; freechunks += block->nfree; } } if (printfunc) { char stats_string[200]; /* XXX should we include free chunks on empty blocks? */ snprintf(stats_string, sizeof(stats_string), "%zu total in %zu blocks; %u empty blocks; %zu free (%zu chunks); %zu used", totalspace, nblocks, dclist_count(&slab->emptyblocks), freespace, freechunks, totalspace - freespace); printfunc(context, passthru, stats_string, print_to_stderr); } if (totals) { totals->nblocks += nblocks; totals->freechunks += freechunks; totals->totalspace += totalspace; totals->freespace += freespace; } } #ifdef MEMORY_CONTEXT_CHECKING /* * SlabCheck * Walk through all blocks looking for inconsistencies. * * 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! */ void SlabCheck(MemoryContext context) { SlabContext *slab = (SlabContext *) context; int i; int nblocks = 0; const char *name = slab->header.name; dlist_iter iter; Assert(SlabIsValid(slab)); Assert(slab->chunksPerBlock > 0); /* * Have a look at the empty blocks. These should have all their chunks * marked as free. Ensure that's the case. */ dclist_foreach(iter, &slab->emptyblocks) { SlabBlock *block = dlist_container(SlabBlock, node, iter.cur); if (block->nfree != slab->chunksPerBlock) elog(WARNING, "problem in slab %s: empty block %p should have %d free chunks but has %d chunks free", name, block, slab->chunksPerBlock, block->nfree); } /* walk the non-empty block lists */ for (i = 0; i < SLAB_BLOCKLIST_COUNT; i++) { int j, nfree; /* walk all blocks on this blocklist */ dlist_foreach(iter, &slab->blocklist[i]) { SlabBlock *block = dlist_container(SlabBlock, node, iter.cur); MemoryChunk *cur_chunk; /* * Make sure the number of free chunks (in the block header) * matches the position in the blocklist. */ if (SlabBlocklistIndex(slab, block->nfree) != i) elog(WARNING, "problem in slab %s: block %p is on blocklist %d but should be on blocklist %d", name, block, i, SlabBlocklistIndex(slab, block->nfree)); /* make sure the block is not empty */ if (block->nfree >= slab->chunksPerBlock) elog(WARNING, "problem in slab %s: empty block %p incorrectly stored on blocklist element %d", name, block, i); /* make sure the slab pointer correctly points to this context */ if (block->slab != slab) elog(WARNING, "problem in slab %s: bogus slab link in block %p", name, block); /* reset the array of free chunks for this block */ memset(slab->isChunkFree, 0, (slab->chunksPerBlock * sizeof(bool))); nfree = 0; /* walk through the block's free list chunks */ cur_chunk = block->freehead; while (cur_chunk != NULL) { int chunkidx = SlabChunkIndex(slab, block, cur_chunk); /* * Ensure the free list link points to something on the block * at an address aligned according to the full chunk size. */ if (cur_chunk < SlabBlockGetChunk(slab, block, 0) || cur_chunk > SlabBlockGetChunk(slab, block, slab->chunksPerBlock - 1) || SlabChunkMod(slab, block, cur_chunk) != 0) elog(WARNING, "problem in slab %s: bogus free list link %p in block %p", name, cur_chunk, block); /* count the chunk and mark it free on the free chunk array */ nfree++; slab->isChunkFree[chunkidx] = true; /* read pointer of the next free chunk */ VALGRIND_MAKE_MEM_DEFINED(MemoryChunkGetPointer(cur_chunk), sizeof(MemoryChunk *)); cur_chunk = *(MemoryChunk **) SlabChunkGetPointer(cur_chunk); } /* check that the unused pointer matches what nunused claims */ if (SlabBlockGetChunk(slab, block, slab->chunksPerBlock - block->nunused) != block->unused) elog(WARNING, "problem in slab %s: mismatch detected between nunused chunks and unused pointer in block %p", name, block); /* * count the remaining free chunks that have yet to make it onto * the block's free list. */ cur_chunk = block->unused; for (j = 0; j < block->nunused; j++) { int chunkidx = SlabChunkIndex(slab, block, cur_chunk); /* count the chunk as free and mark it as so in the array */ nfree++; if (chunkidx < slab->chunksPerBlock) slab->isChunkFree[chunkidx] = true; /* move forward 1 chunk */ cur_chunk = (MemoryChunk *) (((char *) cur_chunk) + slab->fullChunkSize); } for (j = 0; j < slab->chunksPerBlock; j++) { if (!slab->isChunkFree[j]) { MemoryChunk *chunk = SlabBlockGetChunk(slab, block, j); SlabBlock *chunkblock; /* Allow access to the chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, Slab_CHUNKHDRSZ); chunkblock = (SlabBlock *) MemoryChunkGetBlock(chunk); /* Disallow access to the chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, Slab_CHUNKHDRSZ); /* * check the chunk's blockoffset correctly points back to * the block */ if (chunkblock != block) elog(WARNING, "problem in slab %s: bogus block link in block %p, chunk %p", name, block, chunk); /* check the sentinel byte is intact */ Assert(slab->chunkSize < (slab->fullChunkSize - Slab_CHUNKHDRSZ)); if (!sentinel_ok(chunk, Slab_CHUNKHDRSZ + slab->chunkSize)) elog(WARNING, "problem in slab %s: detected write past chunk end in block %p, chunk %p", name, block, chunk); } } /* * Make sure we got the expected number of free chunks (as tracked * in the block header). */ if (nfree != block->nfree) elog(WARNING, "problem in slab %s: nfree in block %p is %d but %d chunk were found as free", name, block, block->nfree, nfree); nblocks++; } } /* the stored empty blocks are tracked in mem_allocated too */ nblocks += dclist_count(&slab->emptyblocks); Assert(nblocks * slab->blockSize == context->mem_allocated); } #endif /* MEMORY_CONTEXT_CHECKING */ libpg_query-17-6.1.0/src/postgres/src_common_encnames.c000066400000000000000000000101461477334012600231070ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_enc2name_tbl *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * encnames.c * Encoding names and routines for working with them. * * Portions Copyright (c) 2001-2024, 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. * ---------- */ #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[] = { [PG_SQL_ASCII] = DEF_ENC2NAME(SQL_ASCII, 0), [PG_EUC_JP] = DEF_ENC2NAME(EUC_JP, 20932), [PG_EUC_CN] = DEF_ENC2NAME(EUC_CN, 20936), [PG_EUC_KR] = DEF_ENC2NAME(EUC_KR, 51949), [PG_EUC_TW] = DEF_ENC2NAME(EUC_TW, 0), [PG_EUC_JIS_2004] = DEF_ENC2NAME(EUC_JIS_2004, 20932), [PG_UTF8] = DEF_ENC2NAME(UTF8, 65001), [PG_MULE_INTERNAL] = DEF_ENC2NAME(MULE_INTERNAL, 0), [PG_LATIN1] = DEF_ENC2NAME(LATIN1, 28591), [PG_LATIN2] = DEF_ENC2NAME(LATIN2, 28592), [PG_LATIN3] = DEF_ENC2NAME(LATIN3, 28593), [PG_LATIN4] = DEF_ENC2NAME(LATIN4, 28594), [PG_LATIN5] = DEF_ENC2NAME(LATIN5, 28599), [PG_LATIN6] = DEF_ENC2NAME(LATIN6, 0), [PG_LATIN7] = DEF_ENC2NAME(LATIN7, 0), [PG_LATIN8] = DEF_ENC2NAME(LATIN8, 0), [PG_LATIN9] = DEF_ENC2NAME(LATIN9, 28605), [PG_LATIN10] = DEF_ENC2NAME(LATIN10, 0), [PG_WIN1256] = DEF_ENC2NAME(WIN1256, 1256), [PG_WIN1258] = DEF_ENC2NAME(WIN1258, 1258), [PG_WIN866] = DEF_ENC2NAME(WIN866, 866), [PG_WIN874] = DEF_ENC2NAME(WIN874, 874), [PG_KOI8R] = DEF_ENC2NAME(KOI8R, 20866), [PG_WIN1251] = DEF_ENC2NAME(WIN1251, 1251), [PG_WIN1252] = DEF_ENC2NAME(WIN1252, 1252), [PG_ISO_8859_5] = DEF_ENC2NAME(ISO_8859_5, 28595), [PG_ISO_8859_6] = DEF_ENC2NAME(ISO_8859_6, 28596), [PG_ISO_8859_7] = DEF_ENC2NAME(ISO_8859_7, 28597), [PG_ISO_8859_8] = DEF_ENC2NAME(ISO_8859_8, 28598), [PG_WIN1250] = DEF_ENC2NAME(WIN1250, 1250), [PG_WIN1253] = DEF_ENC2NAME(WIN1253, 1253), [PG_WIN1254] = DEF_ENC2NAME(WIN1254, 1254), [PG_WIN1255] = DEF_ENC2NAME(WIN1255, 1255), [PG_WIN1257] = DEF_ENC2NAME(WIN1257, 1257), [PG_KOI8U] = DEF_ENC2NAME(KOI8U, 21866), [PG_SJIS] = DEF_ENC2NAME(SJIS, 932), [PG_BIG5] = DEF_ENC2NAME(BIG5, 950), [PG_GBK] = DEF_ENC2NAME(GBK, 936), [PG_UHC] = DEF_ENC2NAME(UHC, 949), [PG_GB18030] = DEF_ENC2NAME(GB18030, 54936), [PG_JOHAB] = DEF_ENC2NAME(JOHAB, 0), [PG_SHIFT_JIS_2004] = 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. */ StaticAssertDecl(lengthof(pg_enc2icu_tbl) == PG_ENCODING_BE_LAST + 1, "pg_enc2icu_tbl incomplete"); /* * 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-17-6.1.0/src/postgres/src_common_hashfn.c000066400000000000000000000273421477334012600225730ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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-2024, 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" #include "port/pg_bitutils.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) #define rot(x,k) pg_rotate_left32(x, 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-17-6.1.0/src/postgres/src_common_keywords.c000066400000000000000000000022531477334012600231650ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ScanKeywordCategories *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * keywords.c * PostgreSQL's list of SQL keywords * * * Portions Copyright (c) 1996-2024, 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, collabel) category, const uint8 ScanKeywordCategories[SCANKEYWORDS_NUM_KEYWORDS] = { #include "parser/kwlist.h" }; #undef PG_KEYWORD /* Keyword can-be-bare-label flags for SQL keywords */ #define PG_KEYWORD(kwname, value, category, collabel) collabel, #define BARE_LABEL true #define AS_LABEL false #undef PG_KEYWORD #undef BARE_LABEL #undef AS_LABEL libpg_query-17-6.1.0/src/postgres/src_common_kwlist_d.h000066400000000000000000000431531477334012600231470ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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-2024, 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" "absent\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" "asensitive\0" "assertion\0" "assignment\0" "asymmetric\0" "at\0" "atomic\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" "breadth\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" "compression\0" "concurrently\0" "conditional\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" "depth\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" "empty\0" "enable\0" "encoding\0" "encrypted\0" "end\0" "enum\0" "error\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" "finalize\0" "first\0" "float\0" "following\0" "for\0" "force\0" "foreign\0" "format\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" "indent\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" "json\0" "json_array\0" "json_arrayagg\0" "json_exists\0" "json_object\0" "json_objectagg\0" "json_query\0" "json_scalar\0" "json_serialize\0" "json_table\0" "json_value\0" "keep\0" "key\0" "keys\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" "matched\0" "materialized\0" "maxvalue\0" "merge\0" "merge_action\0" "method\0" "minute\0" "minvalue\0" "mode\0" "month\0" "move\0" "name\0" "names\0" "national\0" "natural\0" "nchar\0" "nested\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" "omit\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" "parameter\0" "parser\0" "partial\0" "partition\0" "passing\0" "password\0" "path\0" "placing\0" "plan\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" "quotes\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" "return\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" "scalar\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" "source\0" "sql\0" "stable\0" "standalone\0" "start\0" "statement\0" "statistics\0" "stdin\0" "stdout\0" "storage\0" "stored\0" "strict\0" "string\0" "strip\0" "subscription\0" "substring\0" "support\0" "symmetric\0" "sysid\0" "system\0" "system_user\0" "table\0" "tables\0" "tablesample\0" "tablespace\0" "target\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" "unconditional\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, 13, 22, 29, 36, 40, 46, 52, 62, 66, 71, 77, 84, 92, 100, 104, 108, 114, 117, 121, 132, 142, 153, 164, 167, 174, 181, 191, 205, 214, 221, 227, 235, 242, 249, 253, 261, 266, 274, 277, 283, 288, 295, 303, 312, 317, 322, 330, 336, 341, 351, 367, 373, 384, 390, 396, 404, 413, 421, 431, 438, 446, 454, 463, 470, 480, 492, 505, 517, 531, 540, 551, 562, 574, 582, 591, 602, 607, 612, 619, 625, 629, 634, 642, 658, 671, 684, 699, 712, 730, 743, 750, 756, 761, 770, 774, 785, 789, 797, 805, 813, 822, 833, 842, 850, 857, 867, 878, 886, 892, 897, 904, 915, 923, 931, 940, 943, 952, 959, 966, 971, 976, 981, 987, 994, 1003, 1013, 1017, 1022, 1028, 1035, 1041, 1048, 1056, 1066, 1076, 1084, 1091, 1099, 1110, 1120, 1129, 1137, 1143, 1150, 1156, 1163, 1172, 1178, 1184, 1194, 1198, 1204, 1212, 1219, 1227, 1234, 1239, 1244, 1253, 1263, 1273, 1280, 1286, 1294, 1303, 1309, 1318, 1325, 1333, 1340, 1347, 1352, 1357, 1366, 1369, 1375, 1385, 1395, 1404, 1411, 1414, 1422, 1432, 1442, 1449, 1455, 1463, 1471, 1480, 1490, 1497, 1503, 1509, 1515, 1527, 1534, 1542, 1546, 1554, 1564, 1573, 1578, 1586, 1589, 1596, 1606, 1611, 1616, 1627, 1641, 1653, 1665, 1680, 1691, 1703, 1718, 1729, 1740, 1745, 1749, 1754, 1760, 1769, 1775, 1780, 1788, 1796, 1806, 1812, 1817, 1823, 1828, 1834, 1841, 1846, 1852, 1862, 1877, 1886, 1891, 1898, 1905, 1913, 1919, 1927, 1940, 1949, 1955, 1968, 1975, 1982, 1991, 1996, 2002, 2007, 2012, 2018, 2027, 2035, 2041, 2048, 2052, 2057, 2061, 2065, 2070, 2075, 2078, 2083, 2093, 2104, 2108, 2116, 2123, 2131, 2138, 2143, 2150, 2156, 2164, 2171, 2174, 2178, 2185, 2190, 2194, 2199, 2202, 2207, 2216, 2223, 2231, 2234, 2240, 2251, 2258, 2262, 2268, 2273, 2282, 2290, 2301, 2307, 2313, 2322, 2332, 2339, 2347, 2357, 2365, 2374, 2379, 2387, 2392, 2398, 2405, 2414, 2424, 2434, 2442, 2451, 2460, 2468, 2474, 2485, 2496, 2506, 2517, 2525, 2537, 2543, 2550, 2556, 2561, 2566, 2575, 2583, 2593, 2597, 2608, 2620, 2628, 2636, 2645, 2653, 2660, 2671, 2679, 2687, 2693, 2701, 2710, 2717, 2727, 2735, 2742, 2748, 2753, 2762, 2769, 2777, 2786, 2790, 2795, 2800, 2810, 2817, 2824, 2832, 2839, 2846, 2853, 2862, 2869, 2878, 2888, 2901, 2908, 2916, 2929, 2933, 2939, 2944, 2950, 2955, 2963, 2970, 2975, 2984, 2993, 2998, 3005, 3009, 3016, 3027, 3033, 3043, 3054, 3060, 3067, 3075, 3082, 3089, 3096, 3102, 3115, 3125, 3133, 3143, 3149, 3156, 3168, 3174, 3181, 3193, 3204, 3211, 3216, 3225, 3235, 3240, 3245, 3250, 3255, 3265, 3268, 3277, 3289, 3299, 3305, 3313, 3318, 3323, 3332, 3340, 3345, 3351, 3359, 3369, 3381, 3395, 3407, 3413, 3420, 3428, 3437, 3446, 3452, 3459, 3464, 3470, 3477, 3483, 3492, 3502, 3508, 3515, 3523, 3532, 3540, 3548, 3556, 3561, 3567, 3576, 3581, 3587, 3598, 3605, 3610, 3617, 3625, 3630, 3638, 3644, 3648, 3662, 3672, 3683, 3693, 3703, 3717, 3726, 3732, 3740, 3753, 3762, 3767, 3771, }; #define SCANKEYWORDS_NUM_KEYWORDS 491 static int ScanKeywords_hash_func(const void *key, size_t keylen) { static const int16 h[983] = { 283, 32767, 500, 226, 291, 32767, 32767, 32767, 467, 152, 66, 291, -300, 32767, -427, -45, 0, 219, 224, 189, 32767, 195, 0, -507, 324, 32767, 300, 32767, 0, 32767, 161, 32767, 32767, 32767, 32767, 131, 32767, 101, 32767, 391, 32767, 32767, 32767, 0, 2, 32767, 128, 418, -291, 32767, 32767, -631, 32767, 250, 219, -142, 133, 334, 32767, 0, 170, 32767, 516, 32767, 307, 288, 391, 32767, 216, 319, 0, 32767, 152, 32767, 375, 444, 433, 32767, 242, 32767, 4, -119, 481, -13, 32767, 32767, -94, 0, 290, -113, 32767, 137, 122, 120, 32767, 32767, 32767, 414, -397, -45, -267, -5, 605, 32767, 453, 514, 32767, 400, 32767, 32767, 32767, 32767, 361, 150, 32767, 107, 172, -32, 81, -232, -15, 830, -46, 32767, 32767, 32767, 543, -341, 0, 32767, 288, 488, 32767, 43, 410, -99, 32767, 384, 32767, 32767, 315, 32767, -419, -458, 0, -459, 0, 232, 32767, 32767, 333, -413, 32767, 584, -76, 0, -6, 125, 32767, 421, 32767, 32767, -88, 128, -1, 15, 55, 32767, 214, 32767, 0, 0, 166, 348, -337, 32767, 260, 319, 32767, 180, 158, 0, 32767, 0, -226, 0, 129, 0, 378, 517, -293, 671, 32767, 32767, 0, 167, 305, -61, -229, 97, 164, 88, 380, 50, 32767, 71, -637, 106, 32767, 79, 0, 415, 32767, 0, 32767, 317, 379, 28, 431, 0, 32767, 32767, 301, 185, 196, 37, 32767, 142, 200, 32767, -211, -223, -392, 99, 32767, -366, 32767, 287, 32767, 0, -309, 0, 32767, -963, 32767, 222, 432, 32767, 32767, 0, 32767, 32767, 266, 56, 0, 32767, 391, 606, 32767, 32767, 360, 0, 60, 32767, 32767, 0, 32767, 0, 325, 32767, 333, 32767, -54, 399, 0, 28, 237, -648, 32767, 108, 438, 32767, 221, 390, 32767, 32767, 223, 687, 452, 125, 32767, -913, 186, 0, 32767, 32767, 32767, 32767, 0, 0, 32767, 32767, 32767, -27, 1087, 464, -305, 427, 898, 32767, 0, 32767, 0, 32767, 104, 32767, 32767, 260, 1065, 0, 703, 32767, 0, 337, 350, 767, 32767, -330, 379, 32767, 32767, 32767, 32767, 32767, 32767, 228, 32767, 32767, 32767, 0, -87, -48, 32767, -541, 415, 32767, 306, 32767, 32767, 32767, -117, 15, 0, 0, 32767, 412, -645, 223, -558, 32767, 32767, 32767, 32767, 32767, -254, 162, -372, 0, 0, 32767, 353, 0, 199, 32767, 664, 32767, 32767, 0, 32767, -148, 32767, -98, 32767, 449, 0, 32767, 383, -495, -295, 208, 0, 32767, 511, 17, 32767, 32767, 0, 387, 32767, 32767, 32767, 0, 32767, 32767, 2, -2, -177, 32767, 0, 32767, 150, 32767, -471, 32767, -282, 32767, 240, 183, 357, 423, 32767, 435, 32767, 284, 32767, 358, 298, 195, 72, 0, 421, 535, 32767, 426, -206, 222, 32767, 0, 466, 36, 426, 32767, 32767, 0, 32767, 0, 32767, 70, 479, 32767, 514, 32767, 32767, 697, 436, 43, 155, 32767, 32767, 0, 32767, -155, 32767, 11, 649, -376, 32767, 0, -683, -330, 361, 0, 57, 263, -43, 32767, 383, 0, 32767, 217, 32767, 0, 478, 32767, 0, 32767, 463, 32767, 501, 32767, 237, 301, 545, 302, 67, 311, 1135, 152, 0, 342, 32767, 350, 418, 32767, 0, 428, 0, 0, -353, 381, 790, 32767, 32767, -259, 32767, 32767, 32767, 229, 417, 0, 232, 32767, 0, 980, 32767, 0, 0, 275, -314, 0, 0, 32767, 32767, 32767, 32767, 32767, 0, 0, -89, 292, 1049, 32767, 32767, -284, 18, 32767, 175, 0, 732, 111, 32767, 428, -167, 92, -59, 199, 0, 793, 702, -231, 32767, 32767, 32767, 32767, 187, 549, 32767, 32767, 32767, 32767, 69, 480, 0, 490, 430, 32767, 32767, 32767, 32767, -2, 32767, 240, 32767, 471, 275, 32767, 524, 17, 0, 32767, 144, 0, 310, 371, 328, 1016, -639, 32767, 51, 32767, -982, 32767, 0, -727, 32767, 32767, -117, -115, 249, 32767, 32767, -6, 32767, 183, -350, 32767, 14, 32767, 32767, 118, -137, -321, 32767, 793, 32767, 32767, 32767, 0, 32767, 77, 204, 71, 32767, -228, -516, 32767, 790, 389, -1, 112, 366, 245, 32767, 0, 32767, 0, -625, 154, -211, 32767, 32767, 105, -253, 214, 0, 203, 392, 0, 32767, 32767, 62, 102, 32767, 32767, 29, 0, 0, 306, 32767, 32767, -29, 194, 0, -120, 32767, 32767, 32767, 376, 32767, 27, 32767, 356, 32767, 0, 32767, 75, 174, 32767, 32767, 32767, -37, 32767, 255, 124, 845, 32767, 0, 32767, 64, 32767, -472, -648, 32767, 584, 0, 32767, 19, 201, 32767, 0, 32767, 32767, -414, -171, -621, 32767, -134, 0, 515, 0, 767, 32767, 32767, 414, 32767, -88, -236, 32767, -52, 298, -254, 32767, 39, 0, 65, 118, 32767, 182, 32767, 134, 0, 32767, 32767, 400, 0, 32767, 32767, 705, 0, 32767, 32767, 269, 32767, 32767, 296, 290, 32767, 0, 0, 32767, 61, 32767, 299, 32767, -227, 240, 32767, 0, 32767, 32767, 32767, 129, 32767, 0, 252, 32767, 0, -487, 32767, 0, -127, 32767, 32767, 132, 18, 0, 32767, 32767, -154, 0, 946, 401, 264, 378, 0, 326, 32767, 0, 465, 233, 87, 32767, 47, 0, -357, 32767, 32767, 0, 0, -245, 835, 887, 32767, 32767, 32767, 32767, 32767, 334, 0, -56, 32767, -196, 0, 32767, 32767, 32767, 154, 32767, 20, -175, 63, 537, 32767, 358, 32767, 121, 32767, 32767, 754, 0, 32767, 0, -113, 0, 0, 207, 0, -256, 32767, 241, 32767, 257, 32767, 194, -595, 23, 19, 268, 666, 231, 0, 211, 32767, 32767, 32767, 32767, 0, 115, 136, 0, 32767, 32767, 404, -252, -432, 0, 0, 341, 32767, 410, 32767, -125, 9, 32767, 482, 727, 0, 32767, 252, 0, 32767, 32767, 147, 124, 270, 10, -124, 47, 0, 300, 445, -246, 32767, 111, 32767, 32767, 32767, -356, 103, 81, 32767, 32767, 32767, 32767, 280, 306, 0, 32767, 695, 32767, -768, 32767, 32767, 0, 32767, 0, 32767, 145, 44, 32767, 32767, 32767, 432, 136, 32767, 0, -903, 251, 32767, -222, 370, 405, 99, 17, 32767, 564, 32767, 32767, 32767, 0, 32767, 32767, 32767, 141, 0, 0, 32767, 32767, 32767, 344, 0, 464, 0, 0, 32767, 32767, 32767, 0, 463, 32767, 32767, 329, 32767, 32767, 422, 32767, 220, 32767, 347, 32767, -17, 253, 18 }; const unsigned char *k = (const unsigned char *) key; uint32 a = 0; uint32 b = 0; while (keylen--) { unsigned char c = *k++ | 0x20; a = a * 257 + c; b = b * 31 + c; } return h[a % 983] + h[b % 983]; } const ScanKeywordList ScanKeywords = { ScanKeywords_kw_string, ScanKeywords_kw_offsets, ScanKeywords_hash_func, SCANKEYWORDS_NUM_KEYWORDS, 17 }; #endif /* KWLIST_D_H */ libpg_query-17-6.1.0/src/postgres/src_common_kwlookup.c000066400000000000000000000050101477334012600231630ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ScanKeywordLookup *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * kwlookup.c * Key word lookup for PostgreSQL * * * Portions Copyright (c) 1996-2024, 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-17-6.1.0/src/postgres/src_common_psprintf.c000066400000000000000000000106441477334012600231660ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pvsnprintf * - psprintf *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * psprintf.c * sprintf into an allocated-on-demand buffer * * * Portions Copyright (c) 1996-2024, 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: %m with format string \"%s\"\n", 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-17-6.1.0/src/postgres/src_common_stringinfo.c000066400000000000000000000216301477334012600235000ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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-2024, 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. * * Read-only StringInfos as initialized by initReadOnlyStringInfo cannot be * reset. */ void resetStringInfo(StringInfo str) { /* don't allow resets of read-only StringInfos */ Assert(str->maxlen != 0); 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 */ memset(&str->data[str->len], ' ', count); str->len += count; 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 void *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; /* validate this is not a read-only StringInfo */ Assert(str->maxlen != 0); /* * 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; } /* * destroyStringInfo * * Frees a StringInfo and its buffer (opposite of makeStringInfo()). * This must only be called on palloc'd StringInfos. */ libpg_query-17-6.1.0/src/postgres/src_common_wchar.c000066400000000000000000001371271477334012600224330ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_encoding_max_length * - pg_wchar_table * - pg_utf_mblen_private * - pg_mule_mblen * - pg_ascii2wchar_with_len * - pg_wchar2single_with_len * - pg_ascii_mblen * - pg_ascii_dsplen * - pg_ascii_verifychar * - pg_ascii_verifystr * - pg_eucjp2wchar_with_len * - pg_euc2wchar_with_len * - pg_wchar2euc_with_len * - pg_eucjp_mblen * - pg_euc_mblen * - pg_eucjp_dsplen * - pg_eucjp_verifychar * - pg_eucjp_verifystr * - pg_euccn2wchar_with_len * - pg_euccn_mblen * - pg_euccn_dsplen * - pg_euckr_verifychar * - pg_euckr_verifystr * - 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_verifychar * - pg_euctw_verifystr * - pg_utf2wchar_with_len * - pg_wchar2utf_with_len * - pg_utf_dsplen * - ucs_wcwidth * - mbbisearch * - pg_utf8_verifychar * - pg_utf8_islegal * - pg_utf8_verifystr * - utf8_advance * - Utf8Transition * - pg_mule2wchar_with_len * - pg_wchar2mule_with_len * - pg_mule_dsplen * - pg_mule_verifychar * - pg_mule_verifystr * - pg_latin12wchar_with_len * - pg_latin1_mblen * - pg_latin1_dsplen * - pg_latin1_verifychar * - pg_latin1_verifystr * - pg_sjis_mblen * - pg_sjis_dsplen * - pg_sjis_verifychar * - pg_sjis_verifystr * - pg_big5_mblen * - pg_big5_dsplen * - pg_big5_verifychar * - pg_big5_verifystr * - pg_gbk_mblen * - pg_gbk_dsplen * - pg_gbk_verifychar * - pg_gbk_verifystr * - pg_uhc_mblen * - pg_uhc_dsplen * - pg_uhc_verifychar * - pg_uhc_verifystr * - pg_gb18030_mblen * - pg_gb18030_dsplen * - pg_gb18030_verifychar * - pg_gb18030_verifystr * - pg_johab_mblen * - pg_johab_dsplen * - pg_johab_verifychar * - pg_johab_verifystr * - pg_encoding_mblen *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * wchar.c * Functions for working with multibyte characters in various encodings. * * Portions Copyright (c) 1998-2024, PostgreSQL Global Development Group * * IDENTIFICATION * src/common/wchar.c * *------------------------------------------------------------------------- */ #include "c.h" #include "mb/pg_wchar.h" #include "utils/ascii.h" /* * In today's multibyte encodings other than UTF8, this two-byte sequence * ensures pg_encoding_mblen() == 2 && pg_encoding_verifymbstr() == 0. * * For historical reasons, several verifychar implementations opt to reject * this pair specifically. Byte pair range constraints, in encoding * originator documentation, always excluded this pair. No core conversion * could translate it. However, longstanding verifychar implementations * accepted any non-NUL byte. big5_to_euc_tw and big5_to_mic even translate * pairs not valid per encoding originator documentation. To avoid tightening * core or non-core conversions in a security patch, we sought this one pair. * * PQescapeString() historically used spaces for BYTE1; many other values * could suffice for BYTE1. */ #define NONUTF8_INVALID_BYTE0 (0x8d) #define NONUTF8_INVALID_BYTE1 (' ') /* * Operations on multi-byte encodings are driven by a table of helper * functions. * * To add an encoding support, define mblen(), dsplen(), verifychar() and * verifystr() 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; } /* * 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 int first; unsigned int 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, Me or Cf in the Unicode database) 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_nonspacing_table.h" #include "common/unicode_east_asian_fw_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 * * XXX: In the official Unicode sources, it is possible for a character to * be described as both non-spacing and wide at the same time. As of * Unicode 13.0, treating the non-spacing property as the determining * factor for display width leads to the correct behavior, so do that * search first. */ if (mbbisearch(ucs, nonspacing, sizeof(nonspacing) / sizeof(struct mbinterval) - 1)) return 0; /* binary search in table of wide characters */ if (mbbisearch(ucs, east_asian_fw, sizeof(east_asian_fw) / sizeof(struct mbinterval) - 1)) return 2; return 1; } 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 * * The verifychar 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 verifystr functions also accept "s", a pointer to a string and "len", * the length of the string. They verify the whole string, and return the * number of input bytes (<= len) that are valid. In other words, if the * whole string is valid, verifystr returns "len", otherwise it returns the * byte offset of the first invalid character. The verifystr functions must * test for and reject zeroes in the input. * * The verifychar 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_verifychar(const unsigned char *s, int len) { return 1; } static int pg_ascii_verifystr(const unsigned char *s, int len) { const unsigned char *nullpos = memchr(s, 0, len); if (nullpos == NULL) return len; else return nullpos - s; } #define IS_EUC_RANGE_VALID(c) ((c) >= 0xa1 && (c) <= 0xfe) static int pg_eucjp_verifychar(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_eucjp_verifystr(const unsigned char *s, int len) { const unsigned char *start = s; while (len > 0) { int l; /* fast path for ASCII-subset characters */ if (!IS_HIGHBIT_SET(*s)) { if (*s == '\0') break; l = 1; } else { l = pg_eucjp_verifychar(s, len); if (l == -1) break; } s += l; len -= l; } return s - start; } static int pg_euckr_verifychar(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; } static int pg_euckr_verifystr(const unsigned char *s, int len) { const unsigned char *start = s; while (len > 0) { int l; /* fast path for ASCII-subset characters */ if (!IS_HIGHBIT_SET(*s)) { if (*s == '\0') break; l = 1; } else { l = pg_euckr_verifychar(s, len); if (l == -1) break; } s += l; len -= l; } return s - start; } /* EUC-CN byte sequences are exactly same as EUC-KR */ #define pg_euccn_verifychar pg_euckr_verifychar #define pg_euccn_verifystr pg_euckr_verifystr static int pg_euctw_verifychar(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_euctw_verifystr(const unsigned char *s, int len) { const unsigned char *start = s; while (len > 0) { int l; /* fast path for ASCII-subset characters */ if (!IS_HIGHBIT_SET(*s)) { if (*s == '\0') break; l = 1; } else { l = pg_euctw_verifychar(s, len); if (l == -1) break; } s += l; len -= l; } return s - start; } static int pg_johab_verifychar(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_johab_verifystr(const unsigned char *s, int len) { const unsigned char *start = s; while (len > 0) { int l; /* fast path for ASCII-subset characters */ if (!IS_HIGHBIT_SET(*s)) { if (*s == '\0') break; l = 1; } else { l = pg_johab_verifychar(s, len); if (l == -1) break; } s += l; len -= l; } return s - start; } static int pg_mule_verifychar(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_mule_verifystr(const unsigned char *s, int len) { const unsigned char *start = s; while (len > 0) { int l; /* fast path for ASCII-subset characters */ if (!IS_HIGHBIT_SET(*s)) { if (*s == '\0') break; l = 1; } else { l = pg_mule_verifychar(s, len); if (l == -1) break; } s += l; len -= l; } return s - start; } static int pg_latin1_verifychar(const unsigned char *s, int len) { return 1; } static int pg_latin1_verifystr(const unsigned char *s, int len) { const unsigned char *nullpos = memchr(s, 0, len); if (nullpos == NULL) return len; else return nullpos - s; } static int pg_sjis_verifychar(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_sjis_verifystr(const unsigned char *s, int len) { const unsigned char *start = s; while (len > 0) { int l; /* fast path for ASCII-subset characters */ if (!IS_HIGHBIT_SET(*s)) { if (*s == '\0') break; l = 1; } else { l = pg_sjis_verifychar(s, len); if (l == -1) break; } s += l; len -= l; } return s - start; } static int pg_big5_verifychar(const unsigned char *s, int len) { int l, mbl; l = mbl = pg_big5_mblen(s); if (len < l) return -1; if (l == 2 && s[0] == NONUTF8_INVALID_BYTE0 && s[1] == NONUTF8_INVALID_BYTE1) return -1; while (--l > 0) { if (*++s == '\0') return -1; } return mbl; } static int pg_big5_verifystr(const unsigned char *s, int len) { const unsigned char *start = s; while (len > 0) { int l; /* fast path for ASCII-subset characters */ if (!IS_HIGHBIT_SET(*s)) { if (*s == '\0') break; l = 1; } else { l = pg_big5_verifychar(s, len); if (l == -1) break; } s += l; len -= l; } return s - start; } static int pg_gbk_verifychar(const unsigned char *s, int len) { int l, mbl; l = mbl = pg_gbk_mblen(s); if (len < l) return -1; if (l == 2 && s[0] == NONUTF8_INVALID_BYTE0 && s[1] == NONUTF8_INVALID_BYTE1) return -1; while (--l > 0) { if (*++s == '\0') return -1; } return mbl; } static int pg_gbk_verifystr(const unsigned char *s, int len) { const unsigned char *start = s; while (len > 0) { int l; /* fast path for ASCII-subset characters */ if (!IS_HIGHBIT_SET(*s)) { if (*s == '\0') break; l = 1; } else { l = pg_gbk_verifychar(s, len); if (l == -1) break; } s += l; len -= l; } return s - start; } static int pg_uhc_verifychar(const unsigned char *s, int len) { int l, mbl; l = mbl = pg_uhc_mblen(s); if (len < l) return -1; if (l == 2 && s[0] == NONUTF8_INVALID_BYTE0 && s[1] == NONUTF8_INVALID_BYTE1) return -1; while (--l > 0) { if (*++s == '\0') return -1; } return mbl; } static int pg_uhc_verifystr(const unsigned char *s, int len) { const unsigned char *start = s; while (len > 0) { int l; /* fast path for ASCII-subset characters */ if (!IS_HIGHBIT_SET(*s)) { if (*s == '\0') break; l = 1; } else { l = pg_uhc_verifychar(s, len); if (l == -1) break; } s += l; len -= l; } return s - start; } static int pg_gb18030_verifychar(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_gb18030_verifystr(const unsigned char *s, int len) { const unsigned char *start = s; while (len > 0) { int l; /* fast path for ASCII-subset characters */ if (!IS_HIGHBIT_SET(*s)) { if (*s == '\0') break; l = 1; } else { l = pg_gb18030_verifychar(s, len); if (l == -1) break; } s += l; len -= l; } return s - start; } static int pg_utf8_verifychar(const unsigned char *s, int len) { int l; if ((*s & 0x80) == 0) { if (*s == '\0') return -1; return 1; } else if ((*s & 0xe0) == 0xc0) l = 2; else if ((*s & 0xf0) == 0xe0) l = 3; else if ((*s & 0xf8) == 0xf0) l = 4; else l = 1; if (l > len) return -1; if (!pg_utf8_islegal(s, l)) return -1; return l; } /* * The fast path of the UTF-8 verifier uses a deterministic finite automaton * (DFA) for multibyte characters. In a traditional table-driven DFA, the * input byte and current state are used to compute an index into an array of * state transitions. Since the address of the next transition is dependent * on this computation, there is latency in executing the load instruction, * and the CPU is not kept busy. * * Instead, we use a "shift-based" DFA as described by Per Vognsen: * * https://gist.github.com/pervognsen/218ea17743e1442e59bb60d29b1aa725 * * In a shift-based DFA, the input byte is an index into array of integers * whose bit pattern encodes the state transitions. To compute the next * state, we simply right-shift the integer by the current state and apply a * mask. In this scheme, the address of the transition only depends on the * input byte, so there is better pipelining. * * The naming convention for states and transitions was adopted from a UTF-8 * to UTF-16/32 transcoder, whose table is reproduced below: * * https://github.com/BobSteagall/utf_utils/blob/6b7a465265de2f5fa6133d653df0c9bdd73bbcf8/src/utf_utils.cpp * * ILL ASC CR1 CR2 CR3 L2A L3A L3B L3C L4A L4B L4C CLASS / STATE * ========================================================================== * err, END, err, err, err, CS1, P3A, CS2, P3B, P4A, CS3, P4B, | BGN/END * err, err, err, err, err, err, err, err, err, err, err, err, | ERR * | * err, err, END, END, END, err, err, err, err, err, err, err, | CS1 * err, err, CS1, CS1, CS1, err, err, err, err, err, err, err, | CS2 * err, err, CS2, CS2, CS2, err, err, err, err, err, err, err, | CS3 * | * err, err, err, err, CS1, err, err, err, err, err, err, err, | P3A * err, err, CS1, CS1, err, err, err, err, err, err, err, err, | P3B * | * err, err, err, CS2, CS2, err, err, err, err, err, err, err, | P4A * err, err, CS2, err, err, err, err, err, err, err, err, err, | P4B * * In the most straightforward implementation, a shift-based DFA for UTF-8 * requires 64-bit integers to encode the transitions, but with an SMT solver * it's possible to find state numbers such that the transitions fit within * 32-bit integers, as Dougall Johnson demonstrated: * * https://gist.github.com/dougallj/166e326de6ad4cf2c94be97a204c025f * * This packed representation is the reason for the seemingly odd choice of * state values below. */ /* Error */ #define ERR 0 /* Begin */ #define BGN 11 /* Continuation states, expect 1/2/3 continuation bytes */ #define CS1 16 #define CS2 1 #define CS3 5 /* Partial states, where the first continuation byte has a restricted range */ #define P3A 6 /* Lead was E0, check for 3-byte overlong */ #define P3B 20 /* Lead was ED, check for surrogate */ #define P4A 25 /* Lead was F0, check for 4-byte overlong */ #define P4B 30 /* Lead was F4, check for too-large */ /* Begin and End are the same state */ #define END BGN /* the encoded state transitions for the lookup table */ /* ASCII */ #define ASC (END << BGN) /* 2-byte lead */ #define L2A (CS1 << BGN) /* 3-byte lead */ #define L3A (P3A << BGN) #define L3B (CS2 << BGN) #define L3C (P3B << BGN) /* 4-byte lead */ #define L4A (P4A << BGN) #define L4B (CS3 << BGN) #define L4C (P4B << BGN) /* continuation byte */ #define CR1 (END << CS1) | (CS1 << CS2) | (CS2 << CS3) | (CS1 << P3B) | (CS2 << P4B) #define CR2 (END << CS1) | (CS1 << CS2) | (CS2 << CS3) | (CS1 << P3B) | (CS2 << P4A) #define CR3 (END << CS1) | (CS1 << CS2) | (CS2 << CS3) | (CS1 << P3A) | (CS2 << P4A) /* invalid byte */ #define ILL ERR static const uint32 Utf8Transition[256] = { /* ASCII */ ILL, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, /* continuation bytes */ /* 80..8F */ CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, /* 90..9F */ CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, /* A0..BF */ CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, /* leading bytes */ /* C0..DF */ ILL, ILL, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, /* E0..EF */ L3A, L3B, L3B, L3B, L3B, L3B, L3B, L3B, L3B, L3B, L3B, L3B, L3B, L3C, L3B, L3B, /* F0..FF */ L4A, L4B, L4B, L4B, L4C, ILL, ILL, ILL, ILL, ILL, ILL, ILL, ILL, ILL, ILL, ILL }; static void utf8_advance(const unsigned char *s, uint32 *state, int len) { /* Note: We deliberately don't check the state's value here. */ while (len > 0) { /* * It's important that the mask value is 31: In most instruction sets, * a shift by a 32-bit operand is understood to be a shift by its mod * 32, so the compiler should elide the mask operation. */ *state = Utf8Transition[*s++] >> (*state & 31); len--; } *state &= 31; } static int pg_utf8_verifystr(const unsigned char *s, int len) { const unsigned char *start = s; const int orig_len = len; uint32 state = BGN; /* * With a stride of two vector widths, gcc will unroll the loop. Even if * the compiler can unroll a longer loop, it's not worth it because we * must fall back to the byte-wise algorithm if we find any non-ASCII. */ #define STRIDE_LENGTH (2 * sizeof(Vector8)) if (len >= STRIDE_LENGTH) { while (len >= STRIDE_LENGTH) { /* * If the chunk is all ASCII, we can skip the full UTF-8 check, * but we must first check for a non-END state, which means the * previous chunk ended in the middle of a multibyte sequence. */ if (state != END || !is_valid_ascii(s, STRIDE_LENGTH)) utf8_advance(s, &state, STRIDE_LENGTH); s += STRIDE_LENGTH; len -= STRIDE_LENGTH; } /* The error state persists, so we only need to check for it here. */ if (state == ERR) { /* * Start over from the beginning with the slow path so we can * count the valid bytes. */ len = orig_len; s = start; } else if (state != END) { /* * The fast path exited in the middle of a multibyte sequence. * Walk backwards to find the leading byte so that the slow path * can resume checking from there. We must always backtrack at * least one byte, since the current byte could be e.g. an ASCII * byte after a 2-byte lead, which is invalid. */ do { Assert(s > start); s--; len++; Assert(IS_HIGHBIT_SET(*s)); } while (pg_utf_mblen(s) <= 1); } } /* check remaining bytes */ while (len > 0) { int l; /* fast path for ASCII-subset characters */ if (!IS_HIGHBIT_SET(*s)) { if (*s == '\0') break; l = 1; } else { l = pg_utf8_verifychar(s, len); if (l == -1) break; } s += l; len -= l; } return s - start; } /* * 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; } /* * Fills the provided buffer with two bytes such that: * pg_encoding_mblen(dst) == 2 && pg_encoding_verifymbstr(dst) == 0 */ /* *------------------------------------------------------------------- * encoding info table *------------------------------------------------------------------- */ const pg_wchar_tbl pg_wchar_table[] = { [PG_SQL_ASCII] = {pg_ascii2wchar_with_len, pg_wchar2single_with_len, pg_ascii_mblen, pg_ascii_dsplen, pg_ascii_verifychar, pg_ascii_verifystr, 1}, [PG_EUC_JP] = {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifychar, pg_eucjp_verifystr, 3}, [PG_EUC_CN] = {pg_euccn2wchar_with_len, pg_wchar2euc_with_len, pg_euccn_mblen, pg_euccn_dsplen, pg_euccn_verifychar, pg_euccn_verifystr, 2}, [PG_EUC_KR] = {pg_euckr2wchar_with_len, pg_wchar2euc_with_len, pg_euckr_mblen, pg_euckr_dsplen, pg_euckr_verifychar, pg_euckr_verifystr, 3}, [PG_EUC_TW] = {pg_euctw2wchar_with_len, pg_wchar2euc_with_len, pg_euctw_mblen, pg_euctw_dsplen, pg_euctw_verifychar, pg_euctw_verifystr, 4}, [PG_EUC_JIS_2004] = {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifychar, pg_eucjp_verifystr, 3}, [PG_UTF8] = {pg_utf2wchar_with_len, pg_wchar2utf_with_len, pg_utf_mblen, pg_utf_dsplen, pg_utf8_verifychar, pg_utf8_verifystr, 4}, [PG_MULE_INTERNAL] = {pg_mule2wchar_with_len, pg_wchar2mule_with_len, pg_mule_mblen, pg_mule_dsplen, pg_mule_verifychar, pg_mule_verifystr, 4}, [PG_LATIN1] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_LATIN2] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_LATIN3] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_LATIN4] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_LATIN5] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_LATIN6] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_LATIN7] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_LATIN8] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_LATIN9] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_LATIN10] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_WIN1256] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_WIN1258] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_WIN866] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_WIN874] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_KOI8R] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_WIN1251] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_WIN1252] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_ISO_8859_5] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_ISO_8859_6] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_ISO_8859_7] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_ISO_8859_8] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_WIN1250] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_WIN1253] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_WIN1254] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_WIN1255] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_WIN1257] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_KOI8U] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1}, [PG_SJIS] = {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifychar, pg_sjis_verifystr, 2}, [PG_BIG5] = {0, 0, pg_big5_mblen, pg_big5_dsplen, pg_big5_verifychar, pg_big5_verifystr, 2}, [PG_GBK] = {0, 0, pg_gbk_mblen, pg_gbk_dsplen, pg_gbk_verifychar, pg_gbk_verifystr, 2}, [PG_UHC] = {0, 0, pg_uhc_mblen, pg_uhc_dsplen, pg_uhc_verifychar, pg_uhc_verifystr, 2}, [PG_GB18030] = {0, 0, pg_gb18030_mblen, pg_gb18030_dsplen, pg_gb18030_verifychar, pg_gb18030_verifystr, 4}, [PG_JOHAB] = {0, 0, pg_johab_mblen, pg_johab_dsplen, pg_johab_verifychar, pg_johab_verifystr, 3}, [PG_SHIFT_JIS_2004] = {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifychar, pg_sjis_verifystr, 2}, }; /* * Returns the byte length of a multibyte character. * * Caution: when dealing with text that is not certainly valid in the * specified encoding, the result may exceed the actual remaining * string length. Callers that are not prepared to deal with that * should use pg_encoding_mblen_bounded() instead. */ 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 byte length of a multibyte character; but not more than * the distance to end of string. */ /* * 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 mbverifychar API.) */ /* * Verify that a string is valid for the given encoding. * Returns the number of input bytes (<= len) that form a valid string. * (See comments above for full details of the mbverifystr API.) */ /* * fetch maximum length of a given encoding */ int pg_encoding_max_length(int encoding) { Assert(PG_VALID_ENCODING(encoding)); /* * Check for the encoding despite the assert, due to some mingw versions * otherwise issuing bogus warnings. */ return PG_VALID_ENCODING(encoding) ? pg_wchar_table[encoding].maxmblen : pg_wchar_table[PG_SQL_ASCII].maxmblen; } libpg_query-17-6.1.0/src/postgres/src_pl_plpgsql_src_pl_comp.c000066400000000000000000001006741477334012600245110ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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_build_datatype_arrayof * - 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-2024, 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/fmgroids.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; function->requires_procedure_resowner = false; 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. Likewise, if it has a label, wrap it in a new outer * block so that EXIT doesn't skip the RETURN. */ if (function->action->exceptions != NULL || function->action->label != 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. In all the cases handled by this function, returning a T_DATUM * with a two-word idents string is the right thing. */ 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; /* * We should do nothing in DECLARE sections. In SQL expressions, we need * to make sure that RECFIELD datums are created when needed, and we need * to be careful about how many names are reported as belonging to the * T_DATUM: the third word could be a sub-field reference, which we don't * care about here. */ if (plpgsql_IdentifierLookup != IDENTIFIER_LOOKUP_DECLARE) { /* * Do a lookup in the current namespace stack. Must find a record * reference, else ignore. */ ns = plpgsql_ns_lookup(plpgsql_ns_top(), false, word1, word2, word3, &nnames); if (ns != NULL) { switch (ns->itemtype) { case PLPGSQL_NSTYPE_REC: { PLpgSQL_rec *rec; PLpgSQL_recfield *new; rec = (PLpgSQL_rec *) (plpgsql_Datums[ns->itemno]); if (nnames == 1) { /* * First word is a record name, so second word * could be a field in this record (and the third, * a sub-field). We build a RECFIELD datum * whether it is or not --- any error will be * detected later. */ new = plpgsql_build_recfield(rec, word2); idents = list_make2(makeString(word1), makeString(word2)); } else { /* Block-qualified reference to record variable. */ new = plpgsql_build_recfield(rec, word3); idents = list_make3(makeString(word1), makeString(word2), makeString(word3)); } wdatum->datum = (PLpgSQL_datum *) new; wdatum->ident = NULL; wdatum->quoted = false; /* not used */ wdatum->idents = idents; return true; } default: break; } } } /* Nothing found */ idents = list_make3(makeString(word1), makeString(word2), makeString(word3)); cword->idents = idents; return false; } /* ---------- * plpgsql_parse_wordtype The scanner found word%TYPE. word should be * a pre-existing variable name. * * Returns datatype struct. Throws error if no match found for word. * ---------- */ PLpgSQL_type * plpgsql_parse_wordtype(char *ident) { return NULL; } /* ---------- * plpgsql_parse_cwordtype Same lookup for compositeword%TYPE * * Here, we allow either a block-qualified variable name, or a reference * to a column of some table. (If we must throw error, we assume that the * latter case was intended.) * ---------- */ 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; char *ident = NULL, *ns = NULL; typ = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); typ->ttype = PLPGSQL_TTYPE_SCALAR; typ->atttypmod = typmod; typ->collation = collation; if (origtypname) { typ->typoid = origtypname->typeOid; if (list_length(origtypname->names) == 1) { ident = linitial_node(String, origtypname->names)->sval; } else if (list_length(origtypname->names) == 2) { ns = linitial_node(String, origtypname->names)->sval; ident = lsecond_node(String, origtypname->names)->sval; if (strcmp(ns, "pg_catalog") != 0) typ->ttype = PLPGSQL_TTYPE_REC; } } else { typ->typoid = typeOid; ns = "pg_catalog"; switch(typeOid) { case BOOLOID: ident = "boolean"; break; case INT4OID: ident = "integer"; break; case TEXTOID: ident = "text"; break; case REFCURSOROID: ident = "refcursor"; break; } } if (ident) { typ->typname = quote_qualified_identifier(ns, ident); } return typ; } /* * Utility subroutine to make a PLpgSQL_type struct given a pg_type entry * and additional details (see comments for plpgsql_build_datatype). */ /* * Build an array type for the element type specified as argument. */ PLpgSQL_type * plpgsql_build_datatype_arrayof(PLpgSQL_type *dtype) { if (dtype->typisarray) return dtype; PLpgSQL_type *array_type; array_type = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); array_type->ttype = PLPGSQL_TTYPE_REC; array_type->atttypmod = dtype->atttypmod; array_type->collation = dtype->collation; array_type->typisarray = true; switch(dtype->typoid) { case BOOLOID: array_type->typoid = BOOLARRAYOID; array_type->typname = pstrdup("boolean[]"); break; case INT4OID: array_type->typoid = INT4ARRAYOID; array_type->typname = pstrdup("integer[]"); break; case TEXTOID: array_type->typoid = TEXTARRAYOID; array_type->typname = pstrdup("text[]"); break; default: array_type->typname = pstrdup("UNKNOWN"); break; } array_type->typoid = dtype->typoid; return array_type; } /* * 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, * except that: * 1. We go ahead and report the error if we can't resolve the types. * 2. We treat RECORD-type input arguments (not output arguments) as if * they were polymorphic, replacing their types with the actual input * types if we can determine those. This allows us to create a separate * function cache entry for each named composite type passed to such an * argument. * 3. In validation mode, we have no inputs to look at, so assume that * polymorphic arguments are integer, integer-array or integer-range. */ /* * 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-17-6.1.0/src/postgres/src_pl_plpgsql_src_pl_funcs.c000066400000000000000000000444441477334012600246730ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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 *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pl_funcs.c - Misc functions for the PL/pgSQL * procedural language * * Portions Copyright (c) 1996-2024, 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_ROUTINE_OID: return "PG_ROUTINE_OID"; 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_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; 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_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; 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_expr(PLpgSQL_expr *expr); libpg_query-17-6.1.0/src/postgres/src_pl_plpgsql_src_pl_gram.c000066400000000000000000006205221477334012600245000ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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 * - read_sql_construct * - check_sql_expr * - plpgsql_sql_error_callback * - check_assignable * - tok_is_keyword * - NameOfDatum * - word_is_not_variable * - cword_is_not_variable * - make_case * - read_sql_expression2 * - make_scalar_list1 * - read_cursor_args * - 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_MERGE = 339, K_MESSAGE = 340, K_MESSAGE_TEXT = 341, K_MOVE = 342, K_NEXT = 343, K_NO = 344, K_NOT = 345, K_NOTICE = 346, K_NULL = 347, K_OPEN = 348, K_OPTION = 349, K_OR = 350, K_PERFORM = 351, K_PG_CONTEXT = 352, K_PG_DATATYPE_NAME = 353, K_PG_EXCEPTION_CONTEXT = 354, K_PG_EXCEPTION_DETAIL = 355, K_PG_EXCEPTION_HINT = 356, K_PG_ROUTINE_OID = 357, K_PRINT_STRICT_PARAMS = 358, K_PRIOR = 359, K_QUERY = 360, K_RAISE = 361, K_RELATIVE = 362, K_RETURN = 363, K_RETURNED_SQLSTATE = 364, K_REVERSE = 365, K_ROLLBACK = 366, K_ROW_COUNT = 367, K_ROWTYPE = 368, K_SCHEMA = 369, K_SCHEMA_NAME = 370, K_SCROLL = 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_MERGE 339 #define K_MESSAGE 340 #define K_MESSAGE_TEXT 341 #define K_MOVE 342 #define K_NEXT 343 #define K_NO 344 #define K_NOT 345 #define K_NOTICE 346 #define K_NULL 347 #define K_OPEN 348 #define K_OPTION 349 #define K_OR 350 #define K_PERFORM 351 #define K_PG_CONTEXT 352 #define K_PG_DATATYPE_NAME 353 #define K_PG_EXCEPTION_CONTEXT 354 #define K_PG_EXCEPTION_DETAIL 355 #define K_PG_EXCEPTION_HINT 356 #define K_PG_ROUTINE_OID 357 #define K_PRINT_STRICT_PARAMS 358 #define K_PRIOR 359 #define K_QUERY 360 #define K_RAISE 361 #define K_RELATIVE 362 #define K_RETURN 363 #define K_RETURNED_SQLSTATE 364 #define K_REVERSE 365 #define K_ROLLBACK 366 #define K_ROW_COUNT 367 #define K_ROWTYPE 368 #define K_SCHEMA 369 #define K_SCHEMA_NAME 370 #define K_SCROLL 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-2024, 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. */ #define YYMALLOC palloc #define YYFREE pfree typedef struct { int location; } 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, RawParseMode parsemode, bool isexpression, bool valid_sql, 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(void); static PLpgSQL_type *read_datatype(int tok); static PLpgSQL_stmt *make_execsql_stmt(int firsttoken, int location, PLword *word); 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, RawParseMode parseMode, int location); 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); 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 117 "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 530 "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 555 "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 1335 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 139 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 87 /* YYNRULES -- Number of rules. */ #define YYNRULES 253 /* YYNRULES -- Number of states. */ #define YYNSTATES 334 /* 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 213, 215, 217, 223, 224, 226, 228, 232, 234, 238, 239, 241, 243, 245, 254, 255, 260, 261, 264, 272, 273, 276, 278, 282, 283, 286, 290, 295, 300, 303, 305, 307, 309, 318, 319, 322, 326, 328, 330, 332, 334, 336, 342, 344, 346, 348, 350, 352, 354, 357, 362, 367, 368, 372, 375, 379, 383, 386, 390, 391, 393, 395, 397, 398, 399, 403, 406, 408, 413, 417, 419, 421, 422, 423, 424, 425, 429, 430, 434, 435, 437, 439, 442, 444, 446, 448, 450, 452, 454, 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 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { 140, 0, -1, 141, 145, 144, -1, -1, 141, 142, -1, 133, 94, 57, -1, 133, 103, 143, -1, 133, 129, 62, -1, 133, 129, 127, -1, 133, 129, 126, -1, 22, -1, 225, -1, -1, 134, -1, 146, 34, 167, 211, 60, 222, -1, 220, -1, 220, 147, -1, 220, 147, 148, -1, 52, -1, 148, 149, -1, 149, -1, 150, -1, 52, -1, 25, 224, 26, -1, 159, 160, 161, 162, 163, 164, -1, 159, 28, 68, 158, 134, -1, -1, 159, 152, 49, 151, 154, 157, 153, -1, -1, 89, 116, -1, 116, -1, -1, -1, 135, 155, 136, -1, 156, -1, 155, 137, 156, -1, 159, 161, -1, 80, -1, 68, -1, 22, -1, 225, -1, 23, -1, 22, -1, 225, -1, -1, 44, -1, -1, -1, 40, 22, -1, 40, 225, -1, 40, 23, -1, -1, 90, 92, -1, 134, -1, 165, -1, 166, -1, 53, -1, 138, -1, 15, -1, -1, 167, 168, -1, 145, 134, -1, 171, -1, 178, -1, 181, -1, 186, -1, 187, -1, 188, -1, 191, -1, 193, -1, 195, -1, 196, -1, 197, -1, 199, -1, 200, -1, 169, -1, 170, -1, 172, -1, 201, -1, 202, -1, 203, -1, 205, -1, 206, -1, 207, -1, 208, -1, 96, -1, 36, -1, 56, -1, 24, -1, 72, 173, 55, 174, 134, -1, -1, 48, -1, 119, -1, 174, 137, 175, -1, 175, -1, 177, 166, 176, -1, -1, 24, -1, 22, -1, 23, -1, 74, 218, 167, 179, 180, 60, 74, 134, -1, -1, 179, 59, 218, 167, -1, -1, 58, 167, -1, 37, 182, 183, 185, 60, 37, 134, -1, -1, 183, 184, -1, 184, -1, 131, 218, 167, -1, -1, 58, 167, -1, 221, 83, 198, -1, 221, 132, 219, 198, -1, 221, 68, 189, 198, -1, 190, 76, -1, 24, -1, 22, -1, 23, -1, 221, 69, 190, 192, 76, 31, 219, 198, -1, -1, 117, 11, -1, 194, 222, 223, -1, 65, -1, 47, -1, 108, -1, 106, -1, 32, -1, 167, 60, 83, 222, 134, -1, 75, -1, 78, -1, 84, -1, 22, -1, 23, -1, 64, -1, 93, 210, -1, 66, 204, 210, 79, -1, 87, 204, 210, 134, -1, -1, 39, 210, 134, -1, 92, 134, -1, 43, 209, 134, -1, 111, 209, 134, -1, 30, 38, -1, 30, 89, 38, -1, -1, 24, -1, 22, -1, 23, -1, -1, -1, 63, 212, 213, -1, 213, 214, -1, 214, -1, 131, 215, 123, 167, -1, 215, 95, 216, -1, 216, -1, 224, -1, -1, -1, -1, -1, 25, 224, 26, -1, -1, 25, 224, 26, -1, -1, 224, -1, 134, -1, 131, 217, -1, 22, -1, 225, -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, 89, -1, 91, -1, 93, -1, 94, -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, 360, 360, 366, 367, 370, 374, 383, 387, 391, 397, 401, 406, 407, 410, 433, 441, 448, 457, 469, 470, 473, 474, 478, 491, 529, 535, 534, 561, 564, 568, 575, 581, 584, 615, 619, 625, 633, 634, 636, 651, 666, 694, 722, 753, 754, 759, 771, 772, 777, 782, 789, 790, 794, 796, 802, 803, 811, 812, 816, 817, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, 861, 863, 865, 867, 869, 871, 873, 877, 913, 931, 952, 991, 1055, 1058, 1062, 1068, 1072, 1078, 1091, 1138, 1156, 1161, 1168, 1186, 1189, 1203, 1206, 1212, 1219, 1233, 1237, 1243, 1255, 1258, 1273, 1291, 1310, 1344, 1602, 1628, 1642, 1649, 1688, 1691, 1697, 1750, 1754, 1760, 1786, 1931, 1955, 1973, 1977, 1981, 1985, 1996, 2009, 2073, 2151, 2181, 2194, 2199, 2213, 2220, 2234, 2249, 2250, 2251, 2255, 2277, 2282, 2290, 2292, 2291, 2333, 2337, 2343, 2356, 2365, 2371, 2408, 2412, 2416, 2420, 2424, 2432, 2436, 2444, 2447, 2454, 2456, 2463, 2467, 2471, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 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 }; #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_MERGE", "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_PG_ROUTINE_OID", "K_PRINT_STRICT_PARAMS", "K_PRIOR", "K_QUERY", "K_RAISE", "K_RELATIVE", "K_RETURN", "K_RETURNED_SQLSTATE", "K_REVERSE", "K_ROLLBACK", "K_ROW_COUNT", "K_ROWTYPE", "K_SCHEMA", "K_SCHEMA_NAME", "K_SCROLL", "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", "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", "cursor_variable", "exception_sect", "@2", "proc_exceptions", "proc_exception", "proc_conditions", "proc_condition", "expr_until_semi", "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 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 139, 140, 141, 141, 142, 142, 142, 142, 142, 143, 143, 144, 144, 145, 146, 146, 146, 147, 148, 148, 149, 149, 149, 150, 150, 151, 150, 152, 152, 152, 153, 154, 154, 155, 155, 156, 157, 157, 158, 158, 158, 159, 159, 160, 160, 161, 162, 162, 162, 162, 163, 163, 164, 164, 165, 165, 166, 166, 167, 167, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 170, 170, 171, 172, 173, 173, 173, 174, 174, 175, 176, 177, 177, 177, 178, 179, 179, 180, 180, 181, 182, 183, 183, 184, 185, 185, 186, 187, 188, 189, 190, 190, 190, 191, 192, 192, 193, 194, 194, 195, 196, 197, 198, 199, 199, 199, 199, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 209, 209, 210, 210, 210, 211, 212, 211, 213, 213, 214, 215, 215, 216, 217, 218, 219, 220, 220, 221, 221, 222, 222, 223, 223, 224, 224, 224, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225 }; /* 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, 1, 1, 1, 5, 0, 1, 1, 3, 1, 3, 0, 1, 1, 1, 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, 1, 2, 4, 4, 0, 3, 2, 3, 3, 2, 3, 0, 1, 1, 1, 0, 0, 3, 2, 1, 4, 3, 1, 1, 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_uint8 yydefact[] = { 3, 0, 161, 1, 0, 0, 4, 12, 0, 15, 169, 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, 0, 170, 0, 0, 0, 13, 2, 59, 18, 16, 162, 5, 10, 6, 11, 7, 9, 8, 163, 42, 0, 22, 17, 20, 21, 44, 43, 132, 133, 88, 0, 127, 86, 106, 0, 145, 124, 87, 150, 134, 123, 138, 90, 159, 129, 130, 131, 138, 0, 0, 85, 126, 125, 145, 0, 60, 75, 76, 62, 77, 63, 64, 65, 66, 67, 68, 69, 165, 70, 71, 72, 73, 74, 78, 79, 80, 81, 82, 83, 84, 0, 0, 0, 19, 0, 45, 0, 30, 0, 46, 0, 0, 147, 148, 146, 0, 0, 0, 0, 0, 91, 92, 0, 59, 0, 140, 135, 0, 61, 0, 166, 165, 0, 0, 59, 160, 23, 0, 29, 26, 47, 164, 159, 110, 108, 139, 143, 0, 141, 0, 151, 153, 0, 0, 163, 0, 142, 158, 167, 122, 14, 117, 118, 116, 59, 0, 120, 163, 112, 59, 39, 41, 0, 40, 32, 0, 51, 59, 59, 107, 0, 144, 0, 156, 157, 152, 136, 98, 99, 97, 0, 94, 0, 103, 137, 168, 114, 115, 0, 0, 0, 113, 25, 0, 0, 48, 50, 49, 0, 0, 163, 163, 0, 0, 59, 89, 0, 58, 57, 96, 59, 159, 0, 121, 0, 165, 0, 34, 46, 38, 37, 31, 52, 56, 53, 24, 54, 55, 0, 155, 163, 93, 95, 163, 59, 0, 160, 0, 33, 0, 36, 27, 105, 163, 0, 59, 128, 35, 100, 119 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 2, 6, 107, 100, 148, 8, 103, 116, 117, 118, 248, 182, 325, 278, 300, 301, 305, 246, 119, 183, 214, 250, 283, 309, 310, 293, 241, 149, 150, 151, 152, 153, 196, 264, 265, 316, 266, 154, 267, 296, 155, 185, 217, 218, 254, 156, 157, 158, 238, 239, 159, 273, 160, 161, 162, 163, 164, 242, 165, 166, 167, 168, 169, 193, 170, 171, 172, 173, 191, 189, 174, 192, 224, 225, 256, 257, 269, 197, 243, 9, 175, 203, 233, 204, 95 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -260 static const yytype_int16 yypact[] = { -260, 21, -20, -260, 355, -61, -260, -99, 3, 7, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, 22, -260, 23, 679, -38, -260, -260, -260, -260, 246, -260, -260, -260, -260, -260, -260, -260, -260, 1026, -260, 355, -260, 246, -260, -260, -18, -260, -260, -260, -260, 355, -260, -260, -260, 30, 49, -260, -260, -260, -260, -260, -260, -37, -260, -260, -260, -260, -260, -48, 30, -260, -260, -260, 49, -33, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, 355, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, 36, -23, 78, -260, 37, -260, -10, -260, 58, -260, 85, -17, -260, -260, -260, -22, -19, -16, -15, 30, -260, -260, 62, -260, 30, -260, -260, -11, -260, -95, -260, 355, 68, 68, -260, -260, -260, 464, -260, -260, 79, -2, -260, -50, -260, -260, -260, 86, -260, 355, -15, -260, 48, 71, 894, -6, -260, -260, -260, -260, -260, -260, -260, -260, -260, 53, 13, 1092, -260, -260, -260, -260, -3, -260, -1, 573, 42, -260, -260, -260, 73, -260, -51, -260, -260, -260, -260, -260, -260, -260, -76, -260, -12, 15, -260, -260, -260, -260, 125, 59, 54, -260, -260, 785, -39, -260, -260, -260, 46, -13, -9, 1158, 102, 355, -260, -260, 71, -260, -260, -260, -260, -260, 80, -260, 110, 355, -60, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, 8, -260, 124, -260, -260, 1224, -260, 69, -260, 10, -260, 785, -260, -260, -260, 960, 11, -260, -260, -260, -260, -260 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -260, -260, -260, -260, -260, -260, 148, -260, -260, -260, 35, -260, -260, -260, -260, -260, -260, -171, -260, -260, -259, -260, -145, -260, -260, -260, -260, -124, -97, -260, -260, -260, -260, -260, -260, -260, -128, -260, -260, -260, -260, -260, -260, -260, -260, -53, -260, -260, -260, -260, -260, -42, -260, -260, -260, -260, -260, -260, -260, -221, -260, -260, -260, -260, -260, 25, -260, -260, -260, -260, 26, -131, -260, -260, -260, -56, -260, -118, -260, -210, -150, -260, -260, -196, -260, -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 -163 static const yytype_int16 yytable[] = { 94, 108, 291, 291, 112, 4, 251, 120, 252, 234, 178, 194, 200, 121, 122, 123, 124, 270, 302, 220, 120, 3, 275, 125, 109, -161, 179, 126, 127, 303, 128, -28, -162, 96, 129, 99, 231, 101, 130, 232, 307, 304, 97, -161, 287, 206, 207, 131, 104, -109, -162, -109, 186, 187, 188, 133, 134, 135, 289, 102, 208, 290, 226, 136, 302, 137, 138, 229, 98, 139, 221, 180, 288, 294, 295, 140, 322, 323, 141, 190, 105, 216, 195, 142, 143, 318, 199, 144, 110, 111, 235, 236, 237, 261, 262, 263, 205, 145, 181, 146, 228, 202, 147, 321, 210, 211, 212, 213, 333, 209, 176, 215, 219, 5, 216, 247, 223, 227, 222, 249, 184, 308, -109, 230, 255, 292, 292, 260, 268, 271, 272, 276, 282, 286, 277, 298, 297, 299, 306, 312, 319, 320, 326, 328, 330, 332, 121, 122, 123, 124, 7, 177, 331, 281, 284, 285, 125, 324, -161, 311, 126, 127, 315, 128, 253, 240, 198, 129, 259, 313, 329, 130, 0, 201, 0, 0, -161, 0, 0, 0, 131, 120, 0, 0, -154, 0, 0, 0, 133, 134, 135, 314, 0, 0, 0, 0, 136, 317, 137, 138, 0, 0, 139, 0, 0, 0, 0, 0, 140, 0, 0, 141, 0, 0, 0, 0, 142, 143, 0, 258, 144, 327, 0, 0, 0, 0, 0, 120, 0, 0, 145, 0, 146, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 114, 0, 12, 13, 0, 14, 15, 16, 17, 0, 0, 18, 258, 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, 59, 0, 60, 0, 61, 62, 0, 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, 59, 0, 60, 0, 61, 62, 0, 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, 244, 245, 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, 59, 0, 60, 0, 61, 62, 0, 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, 279, 280, 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, 59, 0, 60, 0, 61, 62, 0, 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, 59, 0, 60, 0, 61, 62, 0, 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, 59, 0, 60, 0, 61, 62, 0, 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, -161, 0, 126, 127, 0, 128, 0, 0, 0, 129, 0, 0, 0, 130, 0, 0, 0, 0, -161, 0, 0, 0, 131, 0, -101, -101, -101, 0, 0, 0, 133, 134, 135, 0, 0, 0, 0, 0, 136, 0, 137, 138, 0, 0, 139, 0, 0, 0, 0, 0, 140, 0, 0, 141, 121, 122, 123, 124, 142, 143, 0, 0, 144, 0, 125, 0, -161, 0, 126, 127, 0, 128, 145, 0, 146, 129, 0, 147, 0, 130, 0, 0, 0, 0, -161, 0, 0, 0, 131, 0, -102, -102, -102, 0, 0, 0, 133, 134, 135, 0, 0, 0, 0, 0, 136, 0, 137, 138, 0, 0, 139, 0, 0, 0, 0, 0, 140, 0, 0, 141, 121, 122, 123, 124, 142, 143, 0, 0, 144, 0, 125, 0, -161, 0, 126, 127, 0, 128, 145, 0, 146, 129, 0, 147, 0, 130, 0, 0, 0, 0, -161, 0, 0, 0, 131, 0, 0, 0, -149, 0, 0, 132, 133, 134, 135, 0, 0, 0, 0, 0, 136, 0, 137, 138, 0, 0, 139, 0, 0, 0, 0, 0, 140, 0, 0, 141, 121, 122, 123, 124, 142, 143, 0, 0, 144, 0, 125, 0, -161, 0, 126, 127, 0, 128, 145, 0, 146, 129, 0, 147, 0, 130, 0, 0, 0, 0, -161, 0, 0, 0, 131, 0, 0, 0, 274, 0, 0, 0, 133, 134, 135, 0, 0, 0, 0, 0, 136, 0, 137, 138, 0, 0, 139, 0, 0, 0, 0, 0, 140, 0, 0, 141, 121, 122, 123, 124, 142, 143, 0, 0, 144, 0, 125, 0, -161, 0, 126, 127, 0, 128, 145, 0, 146, 129, 0, 147, 0, 130, 0, 0, 0, 0, -161, 0, 0, 0, 131, 0, 0, 0, -111, 0, 0, 0, 133, 134, 135, 0, 0, 0, 0, 0, 136, 0, 137, 138, 0, 0, 139, 0, 0, 0, 0, 0, 140, 0, 0, 141, 121, 122, 123, 124, 142, 143, 0, 0, 144, 0, 125, 0, -161, 0, 126, 127, 0, 128, 145, 0, 146, 129, 0, 147, 0, 130, 0, 0, 0, 0, -161, 0, 0, 0, 131, 0, 0, 0, -104, 0, 0, 0, 133, 134, 135, 0, 0, 0, 0, 0, 136, 0, 137, 138, 0, 0, 139, 0, 0, 0, 0, 0, 140, 0, 0, 141, 0, 0, 0, 0, 142, 143, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 146, 0, 0, 147 }; static const yytype_int16 yycheck[] = { 4, 97, 15, 15, 101, 25, 216, 103, 58, 205, 28, 48, 143, 22, 23, 24, 25, 238, 277, 38, 116, 0, 243, 32, 62, 34, 44, 36, 37, 68, 39, 49, 34, 94, 43, 134, 131, 34, 47, 134, 53, 80, 103, 52, 95, 68, 69, 56, 26, 58, 52, 60, 22, 23, 24, 64, 65, 66, 134, 52, 83, 137, 193, 72, 323, 74, 75, 198, 129, 78, 89, 89, 123, 58, 59, 84, 136, 137, 87, 30, 57, 131, 119, 92, 93, 295, 134, 96, 126, 127, 22, 23, 24, 22, 23, 24, 60, 106, 116, 108, 197, 134, 111, 299, 26, 68, 116, 49, 329, 132, 114, 26, 134, 133, 131, 211, 131, 55, 134, 40, 124, 134, 131, 134, 38, 138, 138, 79, 134, 76, 117, 134, 90, 60, 135, 76, 11, 83, 92, 37, 60, 31, 134, 74, 134, 134, 22, 23, 24, 25, 2, 116, 323, 249, 251, 252, 32, 302, 34, 283, 36, 37, 290, 39, 217, 207, 141, 43, 224, 287, 320, 47, -1, 147, -1, -1, 52, -1, -1, -1, 56, 277, -1, -1, 60, -1, -1, -1, 64, 65, 66, 288, -1, -1, -1, -1, 72, 294, 74, 75, -1, -1, 78, -1, -1, -1, -1, -1, 84, -1, -1, 87, -1, -1, -1, -1, 92, 93, -1, 223, 96, 318, -1, -1, -1, -1, -1, 323, -1, -1, 106, -1, 108, -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, 25, -1, 27, 28, -1, 30, 31, 32, 33, -1, -1, 36, 287, 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, 89, -1, 91, -1, 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, 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, 89, -1, 91, -1, 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, 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, 89, -1, 91, -1, 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, 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, 89, -1, 91, -1, 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, 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, 89, -1, 91, -1, 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, 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, 89, -1, 91, -1, 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, 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, 84, -1, -1, 87, 22, 23, 24, 25, 92, 93, -1, -1, 96, -1, 32, -1, 34, -1, 36, 37, -1, 39, 106, -1, 108, 43, -1, 111, -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, 84, -1, -1, 87, 22, 23, 24, 25, 92, 93, -1, -1, 96, -1, 32, -1, 34, -1, 36, 37, -1, 39, 106, -1, 108, 43, -1, 111, -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, 84, -1, -1, 87, 22, 23, 24, 25, 92, 93, -1, -1, 96, -1, 32, -1, 34, -1, 36, 37, -1, 39, 106, -1, 108, 43, -1, 111, -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, 84, -1, -1, 87, 22, 23, 24, 25, 92, 93, -1, -1, 96, -1, 32, -1, 34, -1, 36, 37, -1, 39, 106, -1, 108, 43, -1, 111, -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, 84, -1, -1, 87, 22, 23, 24, 25, 92, 93, -1, -1, 96, -1, 32, -1, 34, -1, 36, 37, -1, 39, 106, -1, 108, 43, -1, 111, -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, 84, -1, -1, 87, -1, -1, -1, -1, 92, 93, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, -1, 108, -1, -1, 111 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 140, 141, 0, 25, 133, 142, 145, 146, 220, 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, 89, 91, 93, 94, 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, 224, 225, 94, 103, 129, 134, 144, 34, 52, 147, 26, 57, 22, 143, 225, 62, 126, 127, 167, 22, 25, 52, 148, 149, 150, 159, 225, 22, 23, 24, 25, 32, 36, 37, 39, 43, 47, 56, 63, 64, 65, 66, 72, 74, 75, 78, 84, 87, 92, 93, 96, 106, 108, 111, 145, 168, 169, 170, 171, 172, 178, 181, 186, 187, 188, 191, 193, 194, 195, 196, 197, 199, 200, 201, 202, 203, 205, 206, 207, 208, 211, 221, 224, 149, 28, 44, 89, 116, 152, 160, 224, 182, 22, 23, 24, 210, 30, 209, 212, 204, 48, 119, 173, 218, 204, 134, 210, 209, 134, 222, 224, 60, 68, 69, 83, 132, 26, 68, 116, 49, 161, 26, 131, 183, 184, 134, 38, 89, 134, 131, 213, 214, 210, 55, 167, 210, 134, 131, 134, 223, 222, 22, 23, 24, 189, 190, 190, 167, 198, 219, 22, 23, 158, 225, 151, 40, 162, 218, 58, 184, 185, 38, 215, 216, 224, 214, 79, 22, 23, 24, 174, 175, 177, 179, 134, 217, 198, 76, 117, 192, 60, 198, 134, 135, 154, 22, 23, 225, 90, 163, 167, 167, 60, 95, 123, 134, 137, 15, 138, 166, 58, 59, 180, 11, 76, 83, 155, 156, 159, 68, 80, 157, 92, 53, 134, 164, 165, 166, 37, 216, 167, 175, 176, 167, 218, 60, 31, 222, 136, 137, 161, 153, 134, 167, 74, 219, 134, 156, 134, 198 }; #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 361 "pl_gram.y" { plpgsql_parse_result = (PLpgSQL_stmt_block *) (yyvsp[(2) - (3)].stmt); ;} break; case 5: #line 371 "pl_gram.y" { plpgsql_DumpExecTree = true; ;} break; case 6: #line 375 "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 384 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_ERROR; ;} break; case 8: #line 388 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_VARIABLE; ;} break; case 9: #line 392 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_COLUMN; ;} break; case 10: #line 398 "pl_gram.y" { (yyval.str) = (yyvsp[(1) - (1)].word).ident; ;} break; case 11: #line 402 "pl_gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 14: #line 411 "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 434 "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 442 "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 449 "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 458 "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 475 "pl_gram.y" { /* We allow useless extra DECLAREs */ ;} break; case 23: #line 479 "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 492 "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 530 "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 535 "pl_gram.y" { plpgsql_ns_push((yyvsp[(1) - (3)].varname).name, PLPGSQL_LABEL_OTHER); ;} break; case 27: #line 537 "pl_gram.y" { PLpgSQL_var *new; /* 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); 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 561 "pl_gram.y" { (yyval.ival) = 0; ;} break; case 29: #line 565 "pl_gram.y" { (yyval.ival) = CURSOR_OPT_NO_SCROLL; ;} break; case 30: #line 569 "pl_gram.y" { (yyval.ival) = CURSOR_OPT_SCROLL; ;} break; case 31: #line 575 "pl_gram.y" { (yyval.expr) = read_sql_stmt(); ;} break; case 32: #line 581 "pl_gram.y" { (yyval.datum) = NULL; ;} break; case 33: #line 585 "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 616 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].datum)); ;} break; case 35: #line 620 "pl_gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].datum)); ;} break; case 36: #line 626 "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 637 "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 652 "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 667 "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 695 "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 723 "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 753 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 45: #line 755 "pl_gram.y" { (yyval.boolean) = true; ;} break; case 46: #line 759 "pl_gram.y" { /* * If there's a lookahead token, read_datatype() will * consume it, and then we must tell bison to forget * it. */ (yyval.dtype) = read_datatype(yychar); yyclearin; ;} break; case 47: #line 771 "pl_gram.y" { (yyval.oid) = InvalidOid; ;} break; case 48: #line 773 "pl_gram.y" { (yyval.oid) = get_collation_oid(list_make1(makeString((yyvsp[(2) - (2)].word).ident)), false); ;} break; case 49: #line 778 "pl_gram.y" { (yyval.oid) = get_collation_oid(list_make1(makeString(pstrdup((yyvsp[(2) - (2)].keyword)))), false); ;} break; case 50: #line 783 "pl_gram.y" { (yyval.oid) = get_collation_oid((yyvsp[(2) - (2)].cword).idents, false); ;} break; case 51: #line 789 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 52: #line 791 "pl_gram.y" { (yyval.boolean) = true; ;} break; case 53: #line 795 "pl_gram.y" { (yyval.expr) = NULL; ;} break; case 54: #line 797 "pl_gram.y" { (yyval.expr) = read_sql_expression(';', ";"); ;} break; case 59: #line 816 "pl_gram.y" { (yyval.list) = NIL; ;} break; case 60: #line 818 "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 828 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (2)].stmt); ;} break; case 62: #line 830 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 63: #line 832 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 64: #line 834 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 65: #line 836 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 66: #line 838 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 67: #line 840 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 68: #line 842 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 69: #line 844 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 70: #line 846 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 71: #line 848 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 72: #line 850 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 73: #line 852 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 74: #line 854 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 75: #line 856 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 76: #line 858 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 77: #line 860 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 78: #line 862 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 79: #line 864 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 80: #line 866 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 81: #line 868 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 82: #line 870 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 83: #line 872 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 84: #line 874 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 85: #line 878 "pl_gram.y" { PLpgSQL_stmt_perform *new; int startloc; new = palloc0(sizeof(PLpgSQL_stmt_perform)); new->cmd_type = PLPGSQL_STMT_PERFORM; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); new->stmtid = ++plpgsql_curr_compile->nstatements; plpgsql_push_back_token(K_PERFORM); /* * Since PERFORM isn't legal SQL, we have to cheat to * the extent of substituting "SELECT" for "PERFORM" * in the parsed text. It does not seem worth * inventing a separate parse mode for this one case. * We can't do syntax-checking until after we make the * substitution. */ new->expr = read_sql_construct(';', 0, 0, ";", RAW_PARSE_DEFAULT, false, false, &startloc, NULL); /* overwrite "perform" ... */ memcpy(new->expr->query, " SELECT", 7); /* left-justify to get rid of the leading space */ memmove(new->expr->query, new->expr->query + 1, strlen(new->expr->query)); /* offset syntax error position to account for that */ check_sql_expr(new->expr->query, new->expr->parseMode, startloc + 1); (yyval.stmt) = (PLpgSQL_stmt *) new; ;} break; case 86: #line 914 "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; plpgsql_push_back_token(K_CALL); new->expr = read_sql_stmt(); new->is_call = true; /* Remember we may need a procedure resource owner */ plpgsql_curr_compile->requires_procedure_resowner = true; (yyval.stmt) = (PLpgSQL_stmt *) new; ;} break; case 87: #line 932 "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; plpgsql_push_back_token(K_DO); new->expr = read_sql_stmt(); new->is_call = false; /* Remember we may need a procedure resource owner */ plpgsql_curr_compile->requires_procedure_resowner = true; (yyval.stmt) = (PLpgSQL_stmt *) new; ;} break; case 88: #line 953 "pl_gram.y" { PLpgSQL_stmt_assign *new; RawParseMode pmode; /* see how many names identify the datum */ switch ((yyvsp[(1) - (1)].wdatum).ident ? 1 : list_length((yyvsp[(1) - (1)].wdatum).idents)) { case 1: pmode = RAW_PARSE_PLPGSQL_ASSIGN1; break; case 2: pmode = RAW_PARSE_PLPGSQL_ASSIGN2; break; case 3: pmode = RAW_PARSE_PLPGSQL_ASSIGN3; break; default: elog(ERROR, "unexpected number of names"); pmode = 0; /* keep compiler quiet */ } check_assignable((yyvsp[(1) - (1)].wdatum).datum, (yylsp[(1) - (1)])); new = palloc0(sizeof(PLpgSQL_stmt_assign)); new->cmd_type = PLPGSQL_STMT_ASSIGN; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->varno = (yyvsp[(1) - (1)].wdatum).datum->dno; /* Push back the head name to include it in the stmt */ plpgsql_push_back_token(T_DATUM); new->expr = read_sql_construct(';', 0, 0, ";", pmode, false, true, NULL, NULL); (yyval.stmt) = (PLpgSQL_stmt *) new; ;} break; case 89: #line 992 "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: case PLPGSQL_GETDIAG_ROUTINE_OID: 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 90: #line 1055 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 91: #line 1059 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 92: #line 1063 "pl_gram.y" { (yyval.boolean) = true; ;} break; case 93: #line 1069 "pl_gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].diagitem)); ;} break; case 94: #line 1073 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].diagitem)); ;} break; case 95: #line 1079 "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 96: #line 1091 "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_ROUTINE_OID, "pg_routine_oid")) (yyval.ival) = PLPGSQL_GETDIAG_ROUTINE_OID; 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 97: #line 1139 "pl_gram.y" { /* * In principle we should support a getdiag_target * 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_ROW || (yyvsp[(1) - (1)].wdatum).datum->dtype == PLPGSQL_DTYPE_REC || plpgsql_peek() == '[') ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("\"%s\" is not a scalar variable", NameOfDatum(&((yyvsp[(1) - (1)].wdatum)))), parser_errposition((yylsp[(1) - (1)])))); check_assignable((yyvsp[(1) - (1)].wdatum).datum, (yylsp[(1) - (1)])); (yyval.datum) = (yyvsp[(1) - (1)].wdatum).datum; ;} break; case 98: #line 1157 "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 99: #line 1162 "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 100: #line 1169 "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 101: #line 1186 "pl_gram.y" { (yyval.list) = NIL; ;} break; case 102: #line 1190 "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 103: #line 1203 "pl_gram.y" { (yyval.list) = NIL; ;} break; case 104: #line 1207 "pl_gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 105: #line 1213 "pl_gram.y" { (yyval.stmt) = make_case((yylsp[(1) - (7)]), (yyvsp[(2) - (7)].expr), (yyvsp[(3) - (7)].list), (yyvsp[(4) - (7)].list)); ;} break; case 106: #line 1219 "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 107: #line 1234 "pl_gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].casewhen)); ;} break; case 108: #line 1238 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].casewhen)); ;} break; case 109: #line 1244 "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 110: #line 1255 "pl_gram.y" { (yyval.list) = NIL; ;} break; case 111: #line 1259 "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 112: #line 1274 "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 113: #line 1292 "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 114: #line 1311 "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 115: #line 1345 "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); /* 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 be either * an expression or a whole SQL statement, so * we need to invoke read_sql_construct directly, * and tell it not to check syntax yet. */ expr1 = read_sql_construct(DOT_DOT, K_LOOP, 0, "LOOP", RAW_PARSE_DEFAULT, true, false, &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; /* * Relabel first expression as an expression; * then we can check its syntax. */ expr1->parseMode = RAW_PARSE_PLPGSQL_EXPR; check_sql_expr(expr1->query, expr1->parseMode, expr1loc); /* 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. */ PLpgSQL_stmt_fors *new; if (reverse) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cannot specify REVERSE in query FOR loop"), parser_errposition(tokloc))); /* Check syntax as a regular query */ check_sql_expr(expr1->query, expr1->parseMode, expr1loc); 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 116: #line 1603 "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 117: #line 1629 "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 118: #line 1643 "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 119: #line 1650 "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 120: #line 1688 "pl_gram.y" { (yyval.ival) = 0; ;} break; case 121: #line 1692 "pl_gram.y" { (yyval.ival) = (yyvsp[(2) - (2)].ival); ;} break; case 122: #line 1698 "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 123: #line 1751 "pl_gram.y" { (yyval.boolean) = true; ;} break; case 124: #line 1755 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 125: #line 1761 "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 126: #line 1787 "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", RAW_PARSE_PLPGSQL_EXPR, 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 127: #line 1932 "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 128: #line 1956 "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 129: #line 1974 "pl_gram.y" { (yyval.stmt) = make_execsql_stmt(K_IMPORT, (yylsp[(1) - (1)]), NULL); ;} break; case 130: #line 1978 "pl_gram.y" { (yyval.stmt) = make_execsql_stmt(K_INSERT, (yylsp[(1) - (1)]), NULL); ;} break; case 131: #line 1982 "pl_gram.y" { (yyval.stmt) = make_execsql_stmt(K_MERGE, (yylsp[(1) - (1)]), NULL); ;} break; case 132: #line 1986 "pl_gram.y" { int tok; tok = yylex(); plpgsql_push_back_token(tok); if (tok == '=' || tok == COLON_EQUALS || tok == '[' || tok == '.') word_is_not_variable(&((yyvsp[(1) - (1)].word)), (yylsp[(1) - (1)])); (yyval.stmt) = make_execsql_stmt(T_WORD, (yylsp[(1) - (1)]), &((yyvsp[(1) - (1)].word))); ;} break; case 133: #line 1997 "pl_gram.y" { int tok; tok = yylex(); plpgsql_push_back_token(tok); if (tok == '=' || tok == COLON_EQUALS || tok == '[' || tok == '.') cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)])); (yyval.stmt) = make_execsql_stmt(T_CWORD, (yylsp[(1) - (1)]), NULL); ;} break; case 134: #line 2010 "pl_gram.y" { PLpgSQL_stmt_dynexecute *new; PLpgSQL_expr *expr; int endtoken; expr = read_sql_construct(K_INTO, K_USING, ';', "INTO or USING or ;", RAW_PARSE_PLPGSQL_EXPR, 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", RAW_PARSE_PLPGSQL_EXPR, 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 135: #line 2074 "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 136: #line 2152 "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 137: #line 2182 "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 138: #line 2194 "pl_gram.y" { (yyval.fetch) = read_fetch_direction(); ;} break; case 139: #line 2200 "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 140: #line 2214 "pl_gram.y" { /* We do not bother building a node for NULL */ (yyval.stmt) = NULL; ;} break; case 141: #line 2221 "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 142: #line 2235 "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 143: #line 2249 "pl_gram.y" { (yyval.ival) = true; ;} break; case 144: #line 2250 "pl_gram.y" { (yyval.ival) = false; ;} break; case 145: #line 2251 "pl_gram.y" { (yyval.ival) = false; ;} break; case 146: #line 2256 "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 147: #line 2278 "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 148: #line 2283 "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 149: #line 2290 "pl_gram.y" { (yyval.exception_block) = NULL; ;} break; case 150: #line 2292 "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 151: #line 2325 "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 152: #line 2334 "pl_gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].exception)); ;} break; case 153: #line 2338 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].exception)); ;} break; case 154: #line 2344 "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 155: #line 2357 "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 156: #line 2366 "pl_gram.y" { (yyval.condition) = (yyvsp[(1) - (1)].condition); ;} break; case 157: #line 2372 "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 158: #line 2408 "pl_gram.y" { (yyval.expr) = read_sql_expression(';', ";"); ;} break; case 159: #line 2412 "pl_gram.y" { (yyval.expr) = read_sql_expression(K_THEN, "THEN"); ;} break; case 160: #line 2416 "pl_gram.y" { (yyval.expr) = read_sql_expression(K_LOOP, "LOOP"); ;} break; case 161: #line 2420 "pl_gram.y" { plpgsql_ns_push(NULL, PLPGSQL_LABEL_BLOCK); (yyval.str) = NULL; ;} break; case 162: #line 2425 "pl_gram.y" { plpgsql_ns_push((yyvsp[(2) - (3)].str), PLPGSQL_LABEL_BLOCK); (yyval.str) = (yyvsp[(2) - (3)].str); ;} break; case 163: #line 2432 "pl_gram.y" { plpgsql_ns_push(NULL, PLPGSQL_LABEL_LOOP); (yyval.str) = NULL; ;} break; case 164: #line 2437 "pl_gram.y" { plpgsql_ns_push((yyvsp[(2) - (3)].str), PLPGSQL_LABEL_LOOP); (yyval.str) = (yyvsp[(2) - (3)].str); ;} break; case 165: #line 2444 "pl_gram.y" { (yyval.str) = NULL; ;} break; case 166: #line 2448 "pl_gram.y" { /* label validity will be checked by outer production */ (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 167: #line 2455 "pl_gram.y" { (yyval.expr) = NULL; ;} break; case 168: #line 2457 "pl_gram.y" { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;} break; case 169: #line 2464 "pl_gram.y" { (yyval.str) = (yyvsp[(1) - (1)].word).ident; ;} break; case 170: #line 2468 "pl_gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 171: #line 2472 "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 4747 "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 2564 "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, RAW_PARSE_PLPGSQL_EXPR, 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, RAW_PARSE_PLPGSQL_EXPR, true, true, NULL, endtoken); } /* Convenience routine to read a SQL statement that must end with ';' */ static PLpgSQL_expr * read_sql_stmt(void) { return read_sql_construct(';', 0, 0, ";", RAW_PARSE_DEFAULT, false, 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 * parsemode: raw_parser() mode to use * isexpression: whether to say we're reading an "expression" or a "statement" * valid_sql: whether to check the syntax of the expr * 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, RawParseMode parsemode, bool isexpression, bool valid_sql, int *startloc, int *endtoken) { int tok; StringInfoData ds; IdentifierLookup save_IdentifierLookup; int startlocation = -1; int endlocation = -1; int parenlevel = 0; PLpgSQL_expr *expr; initStringInfo(&ds); /* 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))); } /* Remember end+1 location of last accepted token */ endlocation = yylloc + plpgsql_token_length(); } plpgsql_IdentifierLookup = save_IdentifierLookup; if (startloc) *startloc = startlocation; if (endtoken) *endtoken = tok; /* give helpful complaint about empty input */ if (startlocation >= endlocation) { if (isexpression) yyerror("missing expression"); else yyerror("missing SQL statement"); } /* * We save only the text from startlocation to endlocation-1. This * suppresses the "until" token as well as any whitespace or comments * following the last accepted token. (We used to strip such trailing * whitespace by hand, but that causes problems if there's a "-- comment" * in front of said whitespace.) */ plpgsql_append_source_text(&ds, startlocation, endlocation); expr = palloc0(sizeof(PLpgSQL_expr)); expr->query = pstrdup(ds.data); expr->parseMode = parsemode; expr->plan = NULL; expr->paramnos = NULL; expr->target_param = -1; expr->ns = plpgsql_ns_top(); pfree(ds.data); if (valid_sql) check_sql_expr(expr->query, expr->parseMode, startlocation); return expr; } /* * Read a datatype declaration, consuming the current lookahead token if any. * Returns a PLpgSQL_type struct. */ static PLpgSQL_type * read_datatype(int tok) { StringInfoData ds; char *type_name; int startlocation; PLpgSQL_type *result = NULL; 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(); /* The current token is the start of what we'll pass to parse_datatype */ 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); else if (tok_is_keyword(tok, &yylval, K_ROWTYPE, "rowtype")) result = plpgsql_parse_wordrowtype(dtname); } } 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); else if (tok_is_keyword(tok, &yylval, K_ROWTYPE, "rowtype")) result = plpgsql_parse_wordrowtype(dtname); } } 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); else if (tok_is_keyword(tok, &yylval, K_ROWTYPE, "rowtype")) result = plpgsql_parse_cwordrowtype(dtnames); } } /* * If we recognized a %TYPE or %ROWTYPE construct, see if it is followed * by array decoration: [ ARRAY ] [ '[' [ iconst ] ']' [ ... ] ] * * Like the core parser, we ignore the specific numbers and sizes of * dimensions; arrays of different dimensionality are still the same type * in Postgres. */ if (result) { bool is_array = false; tok = yylex(); if (tok_is_keyword(tok, &yylval, K_ARRAY, "array")) { is_array = true; tok = yylex(); } while (tok == '[') { is_array = true; tok = yylex(); if (tok == ICONST) tok = yylex(); if (tok != ']') yyerror("syntax error, expected \"]\""); tok = yylex(); } plpgsql_push_back_token(tok); if (is_array) result = plpgsql_build_datatype_arrayof(result); return result; } /* * Not %TYPE or %ROWTYPE, so scan to the end of the datatype declaration, * which could include typmod or array decoration. We are not very picky * here, instead relying on parse_datatype to complain about garbage. But * we must count parens to handle typmods within cursor_arg correctly. */ 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; } /* * Read a generic SQL statement. We have already read its first token; * firsttoken is that token's code and location its starting location. * If firsttoken == T_WORD, pass its yylval value as "word", else pass NULL. */ static PLpgSQL_stmt * make_execsql_stmt(int firsttoken, int location, PLword *word) { 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; int paren_depth = 0; int begin_depth = 0; bool in_routine_definition = false; int token_count = 0; char tokens[4]; /* records the first few tokens */ initStringInfo(&ds); memset(tokens, 0, sizeof(tokens)); /* 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(). * * The end of the statement is defined by a semicolon ... except that * semicolons within parentheses or BEGIN/END blocks don't terminate a * statement. We follow psql's lead in not recognizing BEGIN/END except * after CREATE [OR REPLACE] {FUNCTION|PROCEDURE}. END can also appear * within a CASE construct, so we treat CASE/END like BEGIN/END. * * 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; if (tok == T_WORD && strcmp(word->ident, "create") == 0) tokens[token_count] = 'c'; token_count++; for (;;) { prev_tok = tok; tok = yylex(); if (have_into && into_end_loc < 0) into_end_loc = yylloc; /* token after the INTO part */ /* Detect CREATE [OR REPLACE] {FUNCTION|PROCEDURE} */ if (tokens[0] == 'c' && token_count < sizeof(tokens)) { if (tok == K_OR) tokens[token_count] = 'o'; else if (tok == T_WORD && strcmp(yylval.word.ident, "replace") == 0) tokens[token_count] = 'r'; else if (tok == T_WORD && strcmp(yylval.word.ident, "function") == 0) tokens[token_count] = 'f'; else if (tok == T_WORD && strcmp(yylval.word.ident, "procedure") == 0) tokens[token_count] = 'f'; /* treat same as "function" */ if (tokens[1] == 'f' || (tokens[1] == 'o' && tokens[2] == 'r' && tokens[3] == 'f')) in_routine_definition = true; token_count++; } /* Track paren nesting (needed for CREATE RULE syntax) */ if (tok == '(') paren_depth++; else if (tok == ')' && paren_depth > 0) paren_depth--; /* We need track BEGIN/END nesting only in a routine definition */ if (in_routine_definition && paren_depth == 0) { if (tok == K_BEGIN || tok == K_CASE) begin_depth++; else if (tok == K_END && begin_depth > 0) begin_depth--; } /* Command-ending semicolon? */ if (tok == ';' && paren_depth == 0 && begin_depth == 0) 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 (prev_tok == K_MERGE) continue; /* MERGE 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->parseMode = RAW_PARSE_DEFAULT; expr->plan = NULL; expr->paramnos = NULL; expr->target_param = -1; expr->ns = plpgsql_ns_top(); pfree(ds.data); check_sql_expr(expr->query, expr->parseMode, location); execsql = palloc0(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 it's * ambiguous with the case of an omitted direction clause; for * instance, "MOVE n IN c" will fail if n is a variable, because the * preceding else-arm will trigger. Perhaps this can be improved * someday, but it hardly seems 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; 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". 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, RawParseMode parseMode, int location) { sql_error_callback_arg cbarg; ErrorContextCallback syntax_errcontext; MemoryContext oldCxt; if (!plpgsql_check_syntax) return; cbarg.location = location; 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, parseMode); 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 > 0) { int myerrpos = getinternalerrposition(); if (myerrpos > 0) /* safety check */ internalerrposition(myerrpos + errpos - 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. */ #include "catalog/pg_collation_d.h" static PLpgSQL_type * parse_datatype(const char *string, int location) { PLpgSQL_type *typ; /* Ignore trailing spaces */ size_t len = strlen(string); while (len > 0 && scanner_isspace(string[len - 1])) --len; typ = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); typ->typname = pstrdup(string); typ->ttype = pg_strncasecmp(string, "RECORD", len) == 0 ? PLPGSQL_TTYPE_REC : PLPGSQL_TTYPE_SCALAR; if (pg_strncasecmp(string, "REFCURSOR", len) == 0 || pg_strncasecmp(string, "CURSOR", len) == 0) { typ->typoid = REFCURSOROID; } else if (pg_strncasecmp(string, "TEXT", len) == 0) { typ->typoid = TEXTOID; typ->collation = DEFAULT_COLLATION_OID; } 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) { PLpgSQL_expr *expr; PLpgSQL_row *row; int tok; int argc; char **argv; StringInfoData ds; 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. */ item = read_sql_construct(',', ')', 0, ",\" or \")", RAW_PARSE_PLPGSQL_EXPR, true, true, NULL, &endtoken); argv[argpos] = item->query; 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); 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, ", "); } expr = palloc0(sizeof(PLpgSQL_expr)); expr->query = pstrdup(ds.data); expr->parseMode = RAW_PARSE_PLPGSQL_EXPR; expr->plan = NULL; expr->paramnos = NULL; expr->target_param = -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; /* We expect to have expressions not statements */ Assert(expr->parseMode == RAW_PARSE_PLPGSQL_EXPR); /* Do the string hacking */ initStringInfo(&ds); appendStringInfo(&ds, "\"%s\" IN (%s)", varname, expr->query); 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-17-6.1.0/src/postgres/src_pl_plpgsql_src_pl_handler.c000066400000000000000000000037421477334012600251660ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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-2024, 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-17-6.1.0/src/postgres/src_pl_plpgsql_src_pl_reserved_kwlist_d.h000066400000000000000000000045201477334012600272700ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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-2024, 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] = { 127, 7, 127, 127, -2, 127, 13, 127, 127, 5, 0, 23, 0, 2, 127, 0, 17, 0, 127, 19, 5, 127, 6, 2, -3, 17, 0, 6, 127, 8, 18, 127, -6, 3, -5, 0, 127, 0, 0, 11, 15, 127, 127, 127, 13, 127, 0, 17, 127 }; const unsigned char *k = (const unsigned char *) key; uint32 a = 0; uint32 b = 1; while (keylen--) { unsigned char c = *k++ | 0x20; a = a * 257 + c; b = b * 8191 + 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-17-6.1.0/src/postgres/src_pl_plpgsql_src_pl_scanner.c000066400000000000000000000453121477334012600252010ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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_peek * - plpgsql_token_is_unreserved_keyword * - plpgsql_append_source_text * - plpgsql_token_length * - plpgsql_peek2 * - plpgsql_scanner_finish * - plpgsql_latest_lineno *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pl_scanner.c * lexical scanning for PL/pgSQL * * * Portions Copyright (c) 1996-2024, 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; /* Adjust token length to include A.B.C */ aux1.leng = aux5.lloc - aux1.lloc + aux5.leng; } 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; /* Adjust token length to include A.B */ aux1.leng = aux3.lloc - aux1.lloc + aux3.leng; } } 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; /* Adjust token length to include A.B */ aux1.leng = aux3.lloc - aux1.lloc + aux3.leng; } } 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; } /* * Return the length of the token last returned by plpgsql_yylex(). * * In the case of compound tokens, the length includes all the parts. */ int plpgsql_token_length(void) { return plpgsql_yyleng; } /* * 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-17-6.1.0/src/postgres/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h000066400000000000000000000106221477334012600276330ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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-2024, 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" "merge\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" "pg_routine_oid\0" "print_strict_params\0" "prior\0" "query\0" "raise\0" "relative\0" "return\0" "returned_sqlstate\0" "reverse\0" "rollback\0" "row_count\0" "rowtype\0" "schema\0" "schema_name\0" "scroll\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, 310, 318, 331, 336, 341, 344, 351, 356, 363, 371, 382, 399, 420, 440, 458, 473, 493, 499, 505, 511, 520, 527, 545, 553, 562, 572, 580, 587, 599, 606, 612, 621, 629, 635, 646, 651, 662, 675, 693, }; #define UNRESERVEDPLKEYWORDS_NUM_KEYWORDS 83 static int UnreservedPLKeywords_hash_func(const void *key, size_t keylen) { static const int16 h[167] = { 0, -26, 32767, 0, 74, -36, 32767, 32767, 93, 0, 35, 14, 34, -65, -42, 78, -22, 8, 10, 0, 5, 32767, 10, 26, 32767, 4, 32767, 32767, -81, -9, -25, 32767, -17, 11, 0, -43, 11, 8, 45, 0, 32767, 32767, 32767, 12, 0, 32767, 32, 32767, 0, 32767, -18, 64, 32767, -2, 31, 32767, 50, 80, -75, 32767, 32767, 32767, 0, 32767, 32767, 0, 54, 82, 32767, 32767, 69, 60, 43, 32767, 0, 95, 21, 1, 27, 0, 120, 32767, -46, 32767, -57, 32767, 32767, 55, 70, 32767, 28, 32767, 0, -14, -38, 32767, 57, 0, 32767, 19, 98, 0, 32767, 68, 32767, 32767, 32767, 32767, -26, 13, 27, 35, 37, 32767, 49, -44, 65, -35, 0, 32767, 32767, 32767, 30, 0, 0, 32767, 26, 42, 7, 32767, 72, -43, 32767, 0, 32767, 89, 36, 48, 32767, 32, 38, 3, 32767, 49, 32767, 0, 51, 0, 32767, 73, 32767, 32767, 79, 32767, 30, 32767, 0, 0, 50, 32767, 0, 32767, 32767, 32767, 0, 32767, 32767 }; const unsigned char *k = (const unsigned char *) key; uint32 a = 0; uint32 b = 1; while (keylen--) { unsigned char c = *k++ | 0x20; a = a * 257 + c; b = b * 8191 + 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-17-6.1.0/src/postgres/src_port_pg_bitutils.c000066400000000000000000000270411477334012600233410ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_popcount64 * - pg_popcount64_slow * - pg_popcount32 * - pg_popcount32_slow * - pg_leftmost_one_pos * - pg_rightmost_one_pos * - pg_number_of_ones *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pg_bitutils.c * Miscellaneous functions for bit-wise operations. * * Copyright (c) 2019-2024, 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. */ const uint8 pg_leftmost_one_pos[256] = { 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; /* * 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. */ const uint8 pg_rightmost_one_pos[256] = { 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 }; /* * 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. */ const uint8 pg_number_of_ones[256] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8 }; static inline int pg_popcount32_slow(uint32 word); static inline int pg_popcount64_slow(uint64 word); static uint64 pg_popcount_slow(const char *buf, int bytes); static uint64 pg_popcount_masked_slow(const char *buf, int bytes, bits8 mask); #ifdef TRY_POPCNT_FAST static bool pg_popcount_available(void); static int pg_popcount32_choose(uint32 word); static int pg_popcount64_choose(uint64 word); static uint64 pg_popcount_choose(const char *buf, int bytes); static uint64 pg_popcount_masked_choose(const char *buf, int bytes, bits8 mask); static inline int pg_popcount32_fast(uint32 word); static inline int pg_popcount64_fast(uint64 word); static uint64 pg_popcount_fast(const char *buf, int bytes); static uint64 pg_popcount_masked_fast(const char *buf, int bytes, bits8 mask); int (*pg_popcount32) (uint32 word) = pg_popcount32_choose; int (*pg_popcount64) (uint64 word) = pg_popcount64_choose; uint64 (*pg_popcount_optimized) (const char *buf, int bytes) = pg_popcount_choose; uint64 (*pg_popcount_masked_optimized) (const char *buf, int bytes, bits8 mask) = pg_popcount_masked_choose; #endif /* TRY_POPCNT_FAST */ #ifdef TRY_POPCNT_FAST /* * 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 inline void choose_popcount_functions(void) { if (pg_popcount_available()) { pg_popcount32 = pg_popcount32_fast; pg_popcount64 = pg_popcount64_fast; pg_popcount_optimized = pg_popcount_fast; pg_popcount_masked_optimized = pg_popcount_masked_fast; } else { pg_popcount32 = pg_popcount32_slow; pg_popcount64 = pg_popcount64_slow; pg_popcount_optimized = pg_popcount_slow; pg_popcount_masked_optimized = pg_popcount_masked_slow; } #ifdef USE_AVX512_POPCNT_WITH_RUNTIME_CHECK if (pg_popcount_avx512_available()) { pg_popcount_optimized = pg_popcount_avx512; pg_popcount_masked_optimized = pg_popcount_masked_avx512; } #endif } static int pg_popcount32_choose(uint32 word) { choose_popcount_functions(); return pg_popcount32(word); } static int pg_popcount64_choose(uint64 word) { choose_popcount_functions(); return pg_popcount64(word); } static uint64 pg_popcount_choose(const char *buf, int bytes) { choose_popcount_functions(); return pg_popcount_optimized(buf, bytes); } static uint64 pg_popcount_masked_choose(const char *buf, int bytes, bits8 mask) { choose_popcount_functions(); return pg_popcount_masked(buf, bytes, mask); } /* * pg_popcount32_fast * Return the number of 1 bits set in word */ static inline int pg_popcount32_fast(uint32 word) { #ifdef _MSC_VER return __popcnt(word); #else uint32 res; __asm__ __volatile__(" popcntl %1,%0\n":"=q"(res):"rm"(word):"cc"); return (int) res; #endif } /* * pg_popcount64_fast * Return the number of 1 bits set in word */ static inline int pg_popcount64_fast(uint64 word) { #ifdef _MSC_VER return __popcnt64(word); #else uint64 res; __asm__ __volatile__(" popcntq %1,%0\n":"=q"(res):"rm"(word):"cc"); return (int) res; #endif } /* * pg_popcount_fast * Returns the number of 1-bits in buf */ static uint64 pg_popcount_fast(const char *buf, int bytes) { uint64 popcnt = 0; #if SIZEOF_VOID_P >= 8 /* Process in 64-bit chunks if the buffer is aligned. */ if (buf == (const char *) TYPEALIGN(8, buf)) { const uint64 *words = (const uint64 *) buf; while (bytes >= 8) { popcnt += pg_popcount64_fast(*words++); bytes -= 8; } buf = (const char *) words; } #else /* Process in 32-bit chunks if the buffer is aligned. */ if (buf == (const char *) TYPEALIGN(4, buf)) { const uint32 *words = (const uint32 *) buf; while (bytes >= 4) { popcnt += pg_popcount32_fast(*words++); bytes -= 4; } buf = (const char *) words; } #endif /* Process any remaining bytes */ while (bytes--) popcnt += pg_number_of_ones[(unsigned char) *buf++]; return popcnt; } /* * pg_popcount_masked_fast * Returns the number of 1-bits in buf after applying the mask to each byte */ static uint64 pg_popcount_masked_fast(const char *buf, int bytes, bits8 mask) { uint64 popcnt = 0; #if SIZEOF_VOID_P >= 8 /* Process in 64-bit chunks if the buffer is aligned */ uint64 maskv = ~UINT64CONST(0) / 0xFF * mask; if (buf == (const char *) TYPEALIGN(8, buf)) { const uint64 *words = (const uint64 *) buf; while (bytes >= 8) { popcnt += pg_popcount64_fast(*words++ & maskv); bytes -= 8; } buf = (const char *) words; } #else /* Process in 32-bit chunks if the buffer is aligned. */ uint32 maskv = ~((uint32) 0) / 0xFF * mask; if (buf == (const char *) TYPEALIGN(4, buf)) { const uint32 *words = (const uint32 *) buf; while (bytes >= 4) { popcnt += pg_popcount32_fast(*words++ & maskv); bytes -= 4; } buf = (const char *) words; } #endif /* Process any remaining bytes */ while (bytes--) popcnt += pg_number_of_ones[(unsigned char) *buf++ & mask]; return popcnt; } #endif /* TRY_POPCNT_FAST */ /* * pg_popcount32_slow * Return the number of 1 bits set in word */ static inline 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 inline 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_slow * Returns the number of 1-bits in buf */ #if SIZEOF_VOID_P >= 8 #else #endif /* * pg_popcount_masked_slow * Returns the number of 1-bits in buf after applying the mask to each byte */ #if SIZEOF_VOID_P >= 8 #else #endif #ifndef TRY_POPCNT_FAST /* * When the POPCNT instruction is not available, there's no point in using * function pointers to vary the implementation between the fast and slow * method. We instead just make these actual external functions when * TRY_POPCNT_FAST is not defined. The compiler should be able to inline * the slow versions here. */ int pg_popcount32(uint32 word) { return pg_popcount32_slow(word); } int pg_popcount64(uint64 word) { return pg_popcount64_slow(word); } /* * pg_popcount_optimized * Returns the number of 1-bits in buf */ /* * pg_popcount_masked_optimized * Returns the number of 1-bits in buf after applying the mask to each byte */ #endif /* !TRY_POPCNT_FAST */ libpg_query-17-6.1.0/src/postgres/src_port_pgstrcasecmp.c000066400000000000000000000065601477334012600235120ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_strcasecmp * - pg_toupper * - pg_strncasecmp *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * 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-2024, PostgreSQL Global Development Group * * src/port/pgstrcasecmp.c * *------------------------------------------------------------------------- */ #include "c.h" #include /* * Case-independent comparison of two null-terminated strings. */ int pg_strcasecmp(const char *s1, const char *s2) { for (;;) { unsigned char ch1 = (unsigned char) *s1++; unsigned char ch2 = (unsigned char) *s2++; if (ch1 != ch2) { if (ch1 >= 'A' && ch1 <= 'Z') ch1 += 'a' - 'A'; else if (IS_HIGHBIT_SET(ch1) && isupper(ch1)) ch1 = tolower(ch1); if (ch2 >= 'A' && ch2 <= 'Z') ch2 += 'a' - 'A'; else if (IS_HIGHBIT_SET(ch2) && isupper(ch2)) ch2 = tolower(ch2); if (ch1 != ch2) return (int) ch1 - (int) ch2; } if (ch1 == 0) break; } return 0; } /* * Case-independent comparison of two not-necessarily-null-terminated strings. * At most n bytes will be examined from each string. */ int pg_strncasecmp(const char *s1, const char *s2, size_t n) { while (n-- > 0) { unsigned char ch1 = (unsigned char) *s1++; unsigned char ch2 = (unsigned char) *s2++; if (ch1 != ch2) { if (ch1 >= 'A' && ch1 <= 'Z') ch1 += 'a' - 'A'; else if (IS_HIGHBIT_SET(ch1) && isupper(ch1)) ch1 = tolower(ch1); if (ch2 >= 'A' && ch2 <= 'Z') ch2 += 'a' - 'A'; else if (IS_HIGHBIT_SET(ch2) && isupper(ch2)) ch2 = tolower(ch2); if (ch1 != ch2) return (int) ch1 - (int) ch2; } if (ch1 == 0) break; } return 0; } /* * 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-17-6.1.0/src/postgres/src_port_qsort.c000066400000000000000000000011451477334012600221610ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_qsort_strcmp *-------------------------------------------------------------------- */ /* * qsort.c: standard quicksort algorithm */ #include "c.h" #define ST_SORT pg_qsort #define ST_ELEMENT_TYPE_VOID #define ST_COMPARE_RUNTIME_POINTER #define ST_SCOPE #define ST_DECLARE #define ST_DEFINE #include "lib/sort_template.h" /* * qsort comparator wrapper for strcmp. */ int pg_qsort_strcmp(const void *a, const void *b) { return strcmp(*(const char *const *) a, *(const char *const *) b); } libpg_query-17-6.1.0/src/postgres/src_port_snprintf.c000066400000000000000000001041711477334012600226570ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_vsnprintf * - dopr * - pg_snprintf * - pg_strchrnul * - dostr * - flushbuffer * - find_arguments * - fmtint * - adjust_sign * - compute_padlen * - leading_pad * - dopr_outchmulti * - trailing_pad * - fmtchar * - fmtstr * - fmtptr * - fmtfloat * - dopr_outch * - pg_fprintf * - pg_vfprintf * - 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-2024, 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(const 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, but since adopted by some other * platforms), it's a good bit faster than the equivalent manual loop. * Use it if possible, and if it doesn't exist, use this replacement. * * Note: glibc declares this as returning "char *", but that would require * casting away const internally, so we don't follow that detail. * * Note: macOS has this too as of Sequoia 15.4, but it's hidden behind * a deployment-target check that causes compile errors if the deployment * target isn't high enough. So !HAVE_DECL_STRCHRNUL may mean "yes it's * declared, but it doesn't compile". To avoid failing in that scenario, * use a macro to avoid matching 's name. */ #if !HAVE_DECL_STRCHRNUL #define strchrnul pg_strchrnul static inline const char * strchrnul(const char *s, int c) { while (*s != '\0' && *s != c) s++; return s; } #endif /* !HAVE_DECL_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; const 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 *); if (strvalue == NULL) 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 *); /* If string is NULL, silently substitute "(null)" */ if (strvalue == NULL) 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((const 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 = 0; /* Init to "no dollar arguments known" */ PrintfArgType argtypes[PG_NL_ARGMAX + 1] = {0}; /* * 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(const void *value, PrintfTarget *target) { int vallen; char convert[64]; /* we rely on regular C library's snprintf to do the basic conversion */ vallen = snprintf(convert, sizeof(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 uvalue; int base; 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 { /* * Convert integer to string. We special-case each of the possible * base values so as to avoid general-purpose divisions. On most * machines, division by a fixed constant can be done much more * cheaply than a general divide. */ if (base == 10) { do { convert[sizeof(convert) - (++vallen)] = cvt[uvalue % 10]; uvalue = uvalue / 10; } while (uvalue); } else if (base == 16) { do { convert[sizeof(convert) - (++vallen)] = cvt[uvalue % 16]; uvalue = uvalue / 16; } while (uvalue); } else /* base == 8 */ { do { convert[sizeof(convert) - (++vallen)] = cvt[uvalue % 8]; uvalue = uvalue / 8; } 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 snprintf 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, snprintf * 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 = snprintf(convert, sizeof(convert), fmt, prec, value); } else { fmt[0] = '%'; fmt[1] = type; fmt[2] = '\0'; vallen = snprintf(convert, sizeof(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-17-6.1.0/src/postgres/src_port_strerror.c000066400000000000000000000153471477334012600227040ustar00rootroot00000000000000/*-------------------------------------------------------------------- * 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-2024, 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"; case EADDRINUSE: return "EADDRINUSE"; case EADDRNOTAVAIL: return "EADDRNOTAVAIL"; 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"; case ECONNABORTED: return "ECONNABORTED"; case ECONNREFUSED: return "ECONNREFUSED"; case ECONNRESET: return "ECONNRESET"; case EDEADLK: return "EDEADLK"; case EDOM: return "EDOM"; case EEXIST: return "EEXIST"; case EFAULT: return "EFAULT"; case EFBIG: return "EFBIG"; case EHOSTDOWN: return "EHOSTDOWN"; case EHOSTUNREACH: return "EHOSTUNREACH"; case EIDRM: return "EIDRM"; case EINPROGRESS: return "EINPROGRESS"; case EINTR: return "EINTR"; case EINVAL: return "EINVAL"; case EIO: return "EIO"; case EISCONN: return "EISCONN"; 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 ENETDOWN: return "ENETDOWN"; case ENETRESET: return "ENETRESET"; case ENETUNREACH: return "ENETUNREACH"; 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"; case ENOTCONN: return "ENOTCONN"; case ENOTDIR: return "ENOTDIR"; case ENOTEMPTY: return "ENOTEMPTY"; case ENOTSOCK: return "ENOTSOCK"; #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"; case ETIMEDOUT: return "ETIMEDOUT"; #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-17-6.1.0/src/postgres/src_port_strlcpy.c000066400000000000000000000044401477334012600225120ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - strlcpy *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * strlcpy.c * strncpy done right * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * * * IDENTIFICATION * src/port/strlcpy.c * * This file was taken from OpenBSD and is used on platforms that don't * provide strlcpy(). The OpenBSD copyright terms follow. *------------------------------------------------------------------------- */ /* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */ /* * Copyright (c) 1998 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include "c.h" #if HAVE_DECL_STRLCPY == 0 /* * Copy src to string dst of size siz. At most siz-1 characters * will be copied. Always NUL terminates (unless siz == 0). * Returns strlen(src); if retval >= siz, truncation occurred. * Function creation history: http://www.gratisoft.us/todd/papers/strlcpy.html */ size_t strlcpy(char *dst, const char *src, size_t siz) { char *d = dst; const char *s = src; size_t n = siz; /* Copy as many bytes as will fit */ if (n != 0) { while (--n != 0) { if ((*d++ = *s++) == '\0') break; } } /* Not enough room in dst, add NUL and traverse rest of src */ if (n == 0) { if (siz != 0) *d = '\0'; /* NUL-terminate dst */ while (*s++) ; } return (s - src - 1); /* count does not include NUL */ } #endif // HAVE_DECL_STRLCPY == 0 libpg_query-17-6.1.0/src/postgres_deparse.c000066400000000000000000012131001477334012600205760ustar00rootroot00000000000000#include "postgres.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 "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_A_EXPR, DEPARSE_NODE_CONTEXT_CREATE_TYPE, DEPARSE_NODE_CONTEXT_ALTER_TYPE, DEPARSE_NODE_CONTEXT_SET_STATEMENT, DEPARSE_NODE_CONTEXT_FUNC_EXPR, // 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); 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, DeparseNodeContext context); static void deparseTypeName(StringInfo str, TypeName *type_name); static void deparseIntervalTypmods(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, DeparseNodeContext context); static void deparseMinMaxExpr(StringInfo str, MinMaxExpr *min_max_expr); static void deparseXmlExpr(StringInfo str, XmlExpr* xml_expr, DeparseNodeContext context); static void deparseXmlSerialize(StringInfo str, XmlSerialize *xml_serialize); static void deparseJsonIsPredicate(StringInfo str, JsonIsPredicate *json_is_predicate); static void deparseJsonObjectAgg(StringInfo str, JsonObjectAgg *json_object_agg); static void deparseJsonArrayAgg(StringInfo str, JsonArrayAgg *json_array_agg); static void deparseJsonObjectConstructor(StringInfo str, JsonObjectConstructor *json_object_constructor); static void deparseJsonArrayConstructor(StringInfo str, JsonArrayConstructor *json_array_constructor); static void deparseJsonArrayQueryConstructor(StringInfo str, JsonArrayQueryConstructor *json_array_query_constructor); static void deparseJsonValueExpr(StringInfo str, JsonValueExpr *json_value_expr); static void deparseJsonOutput(StringInfo str, JsonOutput *json_output); static void deparseJsonParseExpr(StringInfo str, JsonParseExpr *json_parse_expr); static void deparseJsonScalarExpr(StringInfo str, JsonScalarExpr *json_scalar_expr); static void deparseJsonSerializeExpr(StringInfo str, JsonSerializeExpr *json_serialize_expr); static void deparseJsonTable(StringInfo str, JsonTable *json_table); static void deparseJsonTableColumn(StringInfo str, JsonTableColumn *json_table_column); static void deparseJsonTableColumns(StringInfo str, List *json_table_columns); static void deparseJsonTablePathSpec(StringInfo str, JsonTablePathSpec *json_table_path_spec); static void deparseJsonBehavior(StringInfo str, JsonBehavior *json_behavior); static void deparseJsonFuncExpr(StringInfo str, JsonFuncExpr *json_func_expr); static void deparseJsonQuotesClauseOpt(StringInfo str, JsonQuotes quotes); static void deparseJsonOnErrorClauseOpt(StringInfo str, JsonBehavior *behavior); static void deparseJsonOnEmptyClauseOpt(StringInfo str, JsonBehavior *behavior); 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 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, union ValUnion *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, '.'); } } } // "func_expr" in gram.y static void deparseFuncExpr(StringInfo str, Node *node, DeparseNodeContext context) { switch (nodeTag(node)) { case T_FuncCall: deparseFuncCall(str, castNode(FuncCall, node), context); break; case T_SQLValueFunction: deparseSQLValueFunction(str, castNode(SQLValueFunction, node)); break; case T_MinMaxExpr: deparseMinMaxExpr(str, castNode(MinMaxExpr, node)); break; case T_CoalesceExpr: deparseCoalesceExpr(str, castNode(CoalesceExpr, node)); break; case T_XmlExpr: deparseXmlExpr(str, castNode(XmlExpr, node), context); break; case T_XmlSerialize: deparseXmlSerialize(str, castNode(XmlSerialize, node)); break; case T_JsonObjectAgg: deparseJsonObjectAgg(str, castNode(JsonObjectAgg, node)); break; case T_JsonArrayAgg: deparseJsonArrayAgg(str, castNode(JsonArrayAgg, node)); break; case T_JsonObjectConstructor: deparseJsonObjectConstructor(str, castNode(JsonObjectConstructor, node)); break; case T_JsonArrayConstructor: deparseJsonArrayConstructor(str, castNode(JsonArrayConstructor, node)); break; case T_JsonArrayQueryConstructor: deparseJsonArrayQueryConstructor(str, castNode(JsonArrayQueryConstructor, node)); break; default: elog(ERROR, "deparse: unpermitted node type in func_expr: %d", (int) nodeTag(node)); break; } } static void deparseCExpr(StringInfo str, Node *node); // "a_expr" in gram.y static void deparseExpr(StringInfo str, Node *node, DeparseNodeContext context) { if (node == NULL) return; switch (nodeTag(node)) { case T_ColumnRef: case T_A_Const: case T_ParamRef: case T_A_Indirection: case T_CaseExpr: case T_SubLink: case T_A_ArrayExpr: case T_RowExpr: case T_GroupingFunc: deparseCExpr(str, node); break; case T_TypeCast: deparseTypeCast(str, castNode(TypeCast, node), DEPARSE_NODE_CONTEXT_NONE); break; case T_CollateClause: deparseCollateClause(str, castNode(CollateClause, node)); break; case T_A_Expr: deparseAExpr(str, castNode(A_Expr, node), DEPARSE_NODE_CONTEXT_A_EXPR); break; case T_BoolExpr: deparseBoolExpr(str, castNode(BoolExpr, node)); break; case T_NullTest: deparseNullTest(str, castNode(NullTest, node)); break; case T_BooleanTest: deparseBooleanTest(str, castNode(BooleanTest, node)); break; case T_JsonIsPredicate: deparseJsonIsPredicate(str, castNode(JsonIsPredicate, node)); break; case T_SetToDefault: deparseSetToDefault(str, castNode(SetToDefault, node)); break; case T_MergeSupportFunc: appendStringInfoString(str, "merge_action() "); break; case T_JsonParseExpr: deparseJsonParseExpr(str, castNode(JsonParseExpr, node)); break; case T_JsonScalarExpr: deparseJsonScalarExpr(str, castNode(JsonScalarExpr, node)); break; case T_JsonSerializeExpr: deparseJsonSerializeExpr(str, castNode(JsonSerializeExpr, node)); break; case T_JsonFuncExpr: deparseJsonFuncExpr(str, castNode(JsonFuncExpr, node)); break; case T_FuncCall: case T_SQLValueFunction: case T_MinMaxExpr: case T_CoalesceExpr: case T_XmlExpr: case T_XmlSerialize: case T_JsonObjectAgg: case T_JsonArrayAgg: case T_JsonObjectConstructor: case T_JsonArrayConstructor: case T_JsonArrayQueryConstructor: deparseFuncExpr(str, node, context); break; default: // Note that this is also the fallthrough for deparseBExpr and deparseCExpr elog(ERROR, "deparse: unpermitted node type in a_expr/b_expr/c_expr: %d", (int) nodeTag(node)); break; } } // "b_expr" in gram.y static void deparseBExpr(StringInfo str, Node *node) { if (IsA(node, XmlExpr)) { deparseXmlExpr(str, castNode(XmlExpr, node), DEPARSE_NODE_CONTEXT_NONE); return; } if (IsA(node, A_Expr)) { A_Expr *a_expr = castNode(A_Expr, node); // Other kinds are handled by "c_expr", with parens added around them if (a_expr->kind == AEXPR_OP || a_expr->kind == AEXPR_DISTINCT || a_expr->kind == AEXPR_NOT_DISTINCT) { deparseAExpr(str, a_expr, DEPARSE_NODE_CONTEXT_NONE); return; } } if (IsA(node, BoolExpr)) { BoolExpr *bool_expr = castNode(BoolExpr, node); if (bool_expr->boolop == NOT_EXPR) { deparseBoolExpr(str, bool_expr); return; } } deparseCExpr(str, node); } // "AexprConst" in gram.y static void deparseAexprConst(StringInfo str, Node *node) { switch (nodeTag(node)) { case T_A_Const: deparseAConst(str, castNode(A_Const, node)); break; case T_TypeCast: deparseTypeCast(str, castNode(TypeCast, node), DEPARSE_NODE_CONTEXT_NONE); break; default: elog(ERROR, "deparse: unpermitted node type in AexprConst: %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_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_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; case T_FuncCall: case T_SQLValueFunction: case T_MinMaxExpr: case T_CoalesceExpr: case T_XmlExpr: case T_XmlSerialize: case T_JsonObjectAgg: case T_JsonArrayAgg: case T_JsonObjectConstructor: case T_JsonArrayConstructor: case T_JsonArrayQueryConstructor: deparseFuncExpr(str, node, DEPARSE_NODE_CONTEXT_NONE); break; default: appendStringInfoChar(str, '('); // Because we wrap this in parenthesis, the expression inside follows "a_expr" parser rules deparseExpr(str, node, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ')'); break; } } // "expr_list" in gram.y static void deparseExprList(StringInfo str, List *exprs) { ListCell *lc; foreach(lc, exprs) { deparseExpr(str, lfirst(lc), DEPARSE_NODE_CONTEXT_A_EXPR); 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, union ValUnion *value) { switch (nodeTag(value)) { case T_Integer: appendStringInfo(str, "%d", value->ival.ival); break; case T_Float: appendStringInfoString(str, value->sval.sval); break; default: Assert(false); } } // "NumericOnly_list" in gram.y static void deparseNumericOnlyList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { deparseNumericOnly(str, (union ValUnion *) 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, (union ValUnion *) def_elem->arg); } else if (strcmp(def_elem->defname, "cycle") == 0 && boolVal(def_elem->arg)) { appendStringInfoString(str, "CYCLE"); } else if (strcmp(def_elem->defname, "cycle") == 0 && !boolVal(def_elem->arg)) { appendStringInfoString(str, "NO CYCLE"); } else if (strcmp(def_elem->defname, "increment") == 0) { appendStringInfoString(str, "INCREMENT "); deparseNumericOnly(str, (union ValUnion *) def_elem->arg); } else if (strcmp(def_elem->defname, "maxvalue") == 0 && def_elem->arg != NULL) { appendStringInfoString(str, "MAXVALUE "); deparseNumericOnly(str, (union ValUnion *) 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, (union ValUnion *) 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, (union ValUnion *) 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, (union ValUnion *) 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, (union ValUnion *) 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 && boolVal(def_elem->arg)) { appendStringInfoString(str, "RETURNS NULL ON NULL INPUT"); } else if (strcmp(def_elem->defname, "strict") == 0 && !boolVal(def_elem->arg)) { 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 && boolVal(def_elem->arg)) { appendStringInfoString(str, "SECURITY DEFINER"); } else if (strcmp(def_elem->defname, "security") == 0 && !boolVal(def_elem->arg)) { appendStringInfoString(str, "SECURITY INVOKER"); } else if (strcmp(def_elem->defname, "leakproof") == 0 && boolVal(def_elem->arg)) { appendStringInfoString(str, "LEAKPROOF"); } else if (strcmp(def_elem->defname, "leakproof") == 0 && !boolVal(def_elem->arg)) { appendStringInfoString(str, "NOT LEAKPROOF"); } else if (strcmp(def_elem->defname, "cost") == 0) { appendStringInfoString(str, "COST "); deparseValue(str, (union ValUnion *) def_elem->arg, DEPARSE_NODE_CONTEXT_NONE); } else if (strcmp(def_elem->defname, "rows") == 0) { appendStringInfoString(str, "ROWS "); deparseValue(str, (union ValUnion *) 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, '('); List *objargs = object_with_args->objargs; if (object_with_args->objfuncargs) objargs = object_with_args->objfuncargs; foreach(lc, objargs) { if (IsA(lfirst(lc), FunctionParameter)) deparseFunctionParameter(str, castNode(FunctionParameter, lfirst(lc))); else deparseTypeName(str, castNode(TypeName, lfirst(lc))); if (lnext(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 && object_with_args->objfuncargs == NULL) { appendStringInfoChar(str, '*'); } else { List *objargs = object_with_args->objargs; if (object_with_args->objfuncargs) objargs = object_with_args->objfuncargs; foreach(lc, objargs) { if (IsA(lfirst(lc), FunctionParameter)) deparseFunctionParameter(str, castNode(FunctionParameter, lfirst(lc))); else deparseTypeName(str, castNode(TypeName, lfirst(lc))); if (lnext(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); } static void deparseOptBoolean(StringInfo str, Node *node) { if (node == NULL) { return; } switch (nodeTag(node)) { case T_String: appendStringInfo(str, " %s", strVal(node)); break; case T_Integer: appendStringInfo(str, " %d", intVal(node)); break; case T_Boolean: appendStringInfo(str, " %s", boolVal(node) ? "TRUE" : "FALSE"); break; default: Assert(false); break; } } bool optBooleanValue(Node *node) { if (node == NULL) { return true; } switch (nodeTag(node)) { case T_String: { // Longest valid string is "off\0" char lower[4]; strncpy(lower, strVal(node), 4); lower[3] = 0; if (strcmp(lower, "on") == 0) { return true; } else if (strcmp(lower, "off") == 0) { return false; } // No sane way to handle this. return false; } case T_Integer: return intVal(node) != 0; case T_Boolean: return boolVal(node); default: Assert(false); return false; } } // "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, (union ValUnion *) &a_const->val); else if (IsA(&a_const->val, String)) deparseOptBooleanOrString(str, strVal(&a_const->val)); else Assert(false); } else if (IsA(lfirst(lc), TypeCast)) { deparseTypeCast(str, castNode(TypeCast, lfirst(lc)), DEPARSE_NODE_CONTEXT_SET_STATEMENT); } 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, (union ValUnion *) 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, DEPARSE_NODE_CONTEXT_A_EXPR); 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, DEPARSE_NODE_CONTEXT_A_EXPR); 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, DEPARSE_NODE_CONTEXT_NONE /* b_expr */); 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; case T_JsonTable: deparseJsonTable(str, castNode(JsonTable, 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, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ' '); } } // "where_or_current_clause" in gram.y // // Note this method adds a trailing space if a value is output static void deparseWhereOrCurrentClause(StringInfo str, Node *node) { if (node == NULL) return; appendStringInfoString(str, "WHERE "); if (IsA(node, CurrentOfExpr)) { CurrentOfExpr *current_of_expr = castNode(CurrentOfExpr, node); appendStringInfoString(str, "CURRENT OF "); appendStringInfoString(str, quote_identifier(current_of_expr->cursor_name)); } else { deparseExpr(str, node, DEPARSE_NODE_CONTEXT_A_EXPR); } 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), DEPARSE_NODE_CONTEXT_A_EXPR); 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" and "json_array_aggregate_order_by_clause_opt" 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, DEPARSE_NODE_CONTEXT_A_EXPR); } else { deparseExpr(str, node, DEPARSE_NODE_CONTEXT_A_EXPR); } } // "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, DEPARSE_NODE_CONTEXT_A_EXPR); skip_next_n_elems = r->ncolumns - 1; } else { deparseSetTarget(str, res_target); appendStringInfoString(str, " = "); deparseExpr(str, res_target->val, DEPARSE_NODE_CONTEXT_A_EXPR); } } } // "func_expr_windowless" in gram.y static void deparseFuncExprWindowless(StringInfo str, Node* node) { switch (nodeTag(node)) { case T_FuncCall: deparseFuncCall(str, castNode(FuncCall, node), DEPARSE_NODE_CONTEXT_NONE /* we don't know which kind of expression */); break; case T_SQLValueFunction: deparseSQLValueFunction(str, castNode(SQLValueFunction, node)); break; case T_TypeCast: deparseTypeCast(str, castNode(TypeCast, node), DEPARSE_NODE_CONTEXT_FUNC_EXPR); 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), DEPARSE_NODE_CONTEXT_NONE /* we don't know which kind of expression */); 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)) { // Simple function calls can be written without wrapping parens case T_FuncCall: // func_application case T_SQLValueFunction: // func_expr_common_subexpr case T_CoalesceExpr: // func_expr_common_subexpr case T_MinMaxExpr: // func_expr_common_subexpr case T_XmlExpr: // func_expr_common_subexpr case T_XmlSerialize: // func_expr_common_subexpr deparseFuncExprWindowless(str, index_elem->expr); appendStringInfoString(str, " "); break; default: appendStringInfoChar(str, '('); deparseExpr(str, index_elem->expr, DEPARSE_NODE_CONTEXT_A_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, ' '); } } // "utility_option_list" in gram.y static void deparseUtilityOptionList(StringInfo str, List *options) { ListCell *lc = NULL; char *defname = NULL; if (list_length(options) > 0) { appendStringInfoChar(str, '('); foreach(lc, 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, (union ValUnion *) def_elem->arg); else if (IsA(def_elem->arg, String)) deparseOptBooleanOrString(str, strVal(def_elem->arg)); else Assert(false); } if (lnext(options, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(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 "); if (stmt->groupDistinct) appendStringInfoString(str, "DISTINCT "); deparseGroupByList(str, stmt->groupClause); appendStringInfoChar(str, ' '); } if (stmt->havingClause != NULL) { appendStringInfoString(str, "HAVING "); deparseExpr(str, stmt->havingClause, DEPARSE_NODE_CONTEXT_A_EXPR); 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) && castNode(A_Const, stmt->limitCount)->isnull) appendStringInfoString(str, "ALL"); else if (stmt->limitOption == LIMIT_OPTION_WITH_TIES) deparseCExpr(str, stmt->limitCount); else deparseExpr(str, stmt->limitCount, DEPARSE_NODE_CONTEXT_NONE /* c_expr */); 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, DEPARSE_NODE_CONTEXT_A_EXPR); 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); } void deparseRawStmt(StringInfo str, RawStmt *raw_stmt) { if (raw_stmt->stmt == NULL) elog(ERROR, "deparse error in deparseRawStmt: RawStmt with empty 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) { union ValUnion *val = a_const->isnull ? NULL : &a_const->val; deparseValue(str, val, DEPARSE_NODE_CONTEXT_CONSTANT); } static void deparseFuncCall(StringInfo str, FuncCall *func_call, DeparseNodeContext context) { 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), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, " PLACING "); deparseExpr(str, lsecond(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, " FROM "); deparseExpr(str, lthird(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, " FOR "); deparseExpr(str, lfourth(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ')'); return; } else if (func_call->funcformat == COERCE_SQL_SYNTAX && list_length(func_call->funcname) == 2 && strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 && strcmp(strVal(lsecond(func_call->funcname)), "substring") == 0) { /* * "SUBSTRING" 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.substring) */ Assert(list_length(func_call->args) == 2 || list_length(func_call->args) == 3); appendStringInfoString(str, "SUBSTRING("); deparseExpr(str, linitial(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, " FROM "); deparseExpr(str, lsecond(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); if (list_length(func_call->args) == 3) { appendStringInfoString(str, " FOR "); deparseExpr(str, lthird(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); } appendStringInfoChar(str, ')'); return; } else if (func_call->funcformat == COERCE_SQL_SYNTAX && list_length(func_call->funcname) == 2 && strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 && strcmp(strVal(lsecond(func_call->funcname)), "position") == 0 && list_length(func_call->args) == 2) { /* * "POSITION" 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.position) * Note that the first and second arguments are switched in this format */ appendStringInfoString(str, "POSITION("); deparseBExpr(str, lsecond(func_call->args)); appendStringInfoString(str, " IN "); deparseBExpr(str, linitial(func_call->args)); appendStringInfoChar(str, ')'); return; } else if (func_call->funcformat == COERCE_SQL_SYNTAX && 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) == 3) { /* * "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), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, " placing "); deparseExpr(str, lsecond(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, " from "); deparseExpr(str, lthird(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ')'); return; } else if (func_call->funcformat == COERCE_SQL_SYNTAX && list_length(func_call->funcname) == 2 && strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 && strcmp(strVal(lsecond(func_call->funcname)), "pg_collation_for") == 0 && list_length(func_call->args) == 1) { /* * "collation for" 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, "collation for ("); deparseExpr(str, linitial(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ')'); return; } else if (func_call->funcformat == COERCE_SQL_SYNTAX && list_length(func_call->funcname) == 2 && strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 && strcmp(strVal(lsecond(func_call->funcname)), "extract") == 0 && list_length(func_call->args) == 2) { /* * "EXTRACT" 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.extract) */ appendStringInfoString(str, "extract ("); deparseExpr(str, linitial(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, " FROM "); deparseExpr(str, lsecond(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ')'); return; } else if (func_call->funcformat == COERCE_SQL_SYNTAX && list_length(func_call->funcname) == 2 && strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 && strcmp(strVal(lsecond(func_call->funcname)), "overlaps") == 0 && list_length(func_call->args) == 4) { /* * "OVERLAPS" 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.overlaps) * format: (start_1, end_1) overlaps (start_2, end_2) */ appendStringInfoChar(str, '('); deparseExpr(str, linitial(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ", "); deparseExpr(str, lsecond(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ") "); appendStringInfoString(str, "overlaps "); appendStringInfoChar(str, '('); deparseExpr(str, lthird(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ", "); deparseExpr(str, lfourth(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ") "); return; } else if (func_call->funcformat == COERCE_SQL_SYNTAX && list_length(func_call->funcname) == 2 && strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 && ( strcmp(strVal(lsecond(func_call->funcname)), "ltrim") == 0 || strcmp(strVal(lsecond(func_call->funcname)), "btrim") == 0 || strcmp(strVal(lsecond(func_call->funcname)), "rtrim") == 0 )) { /* * "TRIM " 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.ltrim) * Note that the first and second arguments are switched in this format */ Assert(list_length(func_call->args) == 1 || list_length(func_call->args) == 2); appendStringInfoString(str, "TRIM ("); if (strcmp(strVal(lsecond(func_call->funcname)), "ltrim") == 0) appendStringInfoString(str, "LEADING "); else if (strcmp(strVal(lsecond(func_call->funcname)), "btrim") == 0) appendStringInfoString(str, "BOTH "); else if (strcmp(strVal(lsecond(func_call->funcname)), "rtrim") == 0) appendStringInfoString(str, "TRAILING "); if (list_length(func_call->args) == 2) deparseExpr(str, lsecond(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, " FROM "); deparseExpr(str, linitial(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ')'); return; } else if (func_call->funcformat == COERCE_SQL_SYNTAX && list_length(func_call->funcname) == 2 && strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 && strcmp(strVal(lsecond(func_call->funcname)), "timezone") == 0 && list_length(func_call->args) > 0 && list_length(func_call->args) <= 2) { /* * "AT TIME ZONE" 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.timezone) * Note that the arguments are swapped in this case */ Expr* e; bool isLocal = list_length(func_call->args) == 1; if (isLocal) e = linitial(func_call->args); else e = lsecond(func_call->args); // If we're not inside an a_expr context, we must add wrapping parenthesis around the AT ... syntax if (context != DEPARSE_NODE_CONTEXT_A_EXPR) { appendStringInfoChar(str, '('); } if (IsA(e, A_Expr)) { appendStringInfoChar(str, '('); } deparseExpr(str, (Node*) e, DEPARSE_NODE_CONTEXT_A_EXPR); if (IsA(e, A_Expr)) { appendStringInfoChar(str, ')'); } if (isLocal) appendStringInfoString(str, " AT LOCAL"); else { appendStringInfoString(str, " AT TIME ZONE "); deparseExpr(str, linitial(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); } if (context != DEPARSE_NODE_CONTEXT_A_EXPR) { appendStringInfoChar(str, ')'); } return; } else if (func_call->funcformat == COERCE_SQL_SYNTAX && list_length(func_call->funcname) == 2 && strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 && strcmp(strVal(lsecond(func_call->funcname)), "normalize") == 0) { /* * "NORMALIZE" 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.normalize) */ Assert(list_length(func_call->args) == 1 || list_length(func_call->args) == 2); appendStringInfoString(str, "normalize ("); deparseExpr(str, linitial(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); if (list_length(func_call->args) == 2) { appendStringInfoString(str, ", "); Assert(IsA(lsecond(func_call->args), A_Const)); A_Const *aconst = lsecond(func_call->args); deparseValue(str, &aconst->val, DEPARSE_NODE_CONTEXT_NONE); } appendStringInfoChar(str, ')'); return; } else if (func_call->funcformat == COERCE_SQL_SYNTAX && list_length(func_call->funcname) == 2 && strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 && strcmp(strVal(lsecond(func_call->funcname)), "is_normalized") == 0) { /* * "IS NORMALIZED" 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.is_normalized) */ Assert(list_length(func_call->args) == 1 || list_length(func_call->args) == 2); deparseExpr(str, linitial(func_call->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, " IS "); if (list_length(func_call->args) == 2) { Assert(IsA(lsecond(func_call->args), A_Const)); A_Const *aconst = lsecond(func_call->args); deparseValue(str, &aconst->val, DEPARSE_NODE_CONTEXT_NONE); } appendStringInfoString(str, " NORMALIZED "); return; } else if (func_call->funcformat == COERCE_SQL_SYNTAX && list_length(func_call->funcname) == 2 && strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 && strcmp(strVal(lsecond(func_call->funcname)), "xmlexists") == 0 && list_length(func_call->args) == 2) { appendStringInfoString(str, "xmlexists ("); deparseExpr(str, linitial(func_call->args), DEPARSE_NODE_CONTEXT_NONE /* c_expr */); appendStringInfoString(str, " PASSING "); deparseExpr(str, lsecond(func_call->args), DEPARSE_NODE_CONTEXT_NONE /* c_expr */); appendStringInfoChar(str, ')'); return; } else if (func_call->funcformat == COERCE_SQL_SYNTAX && list_length(func_call->funcname) == 2 && strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 && strcmp(strVal(lsecond(func_call->funcname)), "system_user") == 0) { appendStringInfoString(str, "SYSTEM_USER"); 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, DEPARSE_NODE_CONTEXT_A_EXPR); 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, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, " PRECEDING "); } else if (window_def->frameOptions & FRAMEOPTION_START_OFFSET_FOLLOWING) { Assert(window_def->startOffset != NULL); deparseExpr(str, window_def->startOffset, DEPARSE_NODE_CONTEXT_A_EXPR); 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, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, " PRECEDING "); } else if (window_def->frameOptions & FRAMEOPTION_END_OFFSET_FOLLOWING) { Assert(window_def->endOffset != NULL); deparseExpr(str, window_def->endOffset, DEPARSE_NODE_CONTEXT_A_EXPR); 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, DEPARSE_NODE_CONTEXT_A_EXPR); 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, DEPARSE_NODE_CONTEXT_A_EXPR); 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; } } // This handles "A_Expr" parse tree objects, which are a subset of the rules in "a_expr" (handled by deparseExpr) 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, BooleanTest) || 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, BooleanTest) || IsA(a_expr->rexpr, NullTest) || IsA(a_expr->rexpr, A_Expr)); switch (a_expr->kind) { case AEXPR_OP: /* normal operator */ { if (a_expr->lexpr != NULL) { if (need_lexpr_parens) appendStringInfoChar(str, '('); deparseExpr(str, a_expr->lexpr, context); 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, context); if (need_rexpr_parens) appendStringInfoChar(str, ')'); } } return; case AEXPR_OP_ANY: /* scalar op ANY (array) */ deparseExpr(str, a_expr->lexpr, context); appendStringInfoChar(str, ' '); deparseSubqueryOp(str, a_expr->name); appendStringInfoString(str, " ANY("); deparseExpr(str, a_expr->rexpr, context); appendStringInfoChar(str, ')'); return; case AEXPR_OP_ALL: /* scalar op ALL (array) */ deparseExpr(str, a_expr->lexpr, context); appendStringInfoChar(str, ' '); deparseSubqueryOp(str, a_expr->name); appendStringInfoString(str, " ALL("); deparseExpr(str, a_expr->rexpr, context); 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, context); if (need_lexpr_parens) appendStringInfoChar(str, ')'); appendStringInfoString(str, " IS DISTINCT FROM "); if (need_rexpr_parens) appendStringInfoChar(str, '('); deparseExpr(str, a_expr->rexpr, context); 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, context); appendStringInfoString(str, " IS NOT DISTINCT FROM "); deparseExpr(str, a_expr->rexpr, context); 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, context); appendStringInfoString(str, ", "); deparseExpr(str, a_expr->rexpr, context); 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, context); appendStringInfoChar(str, ' '); name = ((union ValUnion *) linitial(a_expr->name))->sval.sval; 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, context); appendStringInfoChar(str, ' '); name = ((union ValUnion *) linitial(a_expr->name))->sval.sval; if (strcmp(name, "~~") == 0) { appendStringInfoString(str, "LIKE "); } else if (strcmp(name, "!~~") == 0) { appendStringInfoString(str, "NOT LIKE "); } else { Assert(false); } deparseExpr(str, a_expr->rexpr, context); 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, context); appendStringInfoChar(str, ' '); name = ((union ValUnion *) linitial(a_expr->name))->sval.sval; if (strcmp(name, "~~*") == 0) { appendStringInfoString(str, "ILIKE "); } else if (strcmp(name, "!~~*") == 0) { appendStringInfoString(str, "NOT ILIKE "); } else { Assert(false); } deparseExpr(str, a_expr->rexpr, context); 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, context); appendStringInfoChar(str, ' '); name = ((union ValUnion *) linitial(a_expr->name))->sval.sval; 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), context); if (list_length(n->args) == 2) { appendStringInfoString(str, " ESCAPE "); deparseExpr(str, lsecond(n->args), context); } 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, context); appendStringInfoChar(str, ' '); appendStringInfoString(str, strVal(linitial(a_expr->name))); appendStringInfoChar(str, ' '); foreach(lc, castNode(List, a_expr->rexpr)) { deparseExpr(str, lfirst(lc), context); if (lnext(castNode(List, a_expr->rexpr), lc)) appendStringInfoString(str, " AND "); } 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), DEPARSE_NODE_CONTEXT_A_EXPR); 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), DEPARSE_NODE_CONTEXT_A_EXPR); 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), DEPARSE_NODE_CONTEXT_A_EXPR); 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, DEPARSE_NODE_CONTEXT_A_EXPR); if (need_parens) appendStringInfoChar(str, ')'); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "COLLATE "); deparseAnyName(str, collate_clause->collname); } // "sortby" in gram.y static void deparseSortBy(StringInfo str, SortBy* sort_by) { deparseExpr(str, sort_by->node, DEPARSE_NODE_CONTEXT_A_EXPR); 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); } // "joined_table" in gram.y 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_RIGHT_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, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ' '); } if (list_length(join_expr->usingClause) > 0) { appendStringInfoString(str, "USING ("); deparseNameList(str, join_expr->usingClause); appendStringInfoString(str, ") "); if (join_expr->join_using_alias) { appendStringInfoString(str, "AS "); appendStringInfoString(str, join_expr->join_using_alias->aliasname); } } if (need_alias_parens) appendStringInfoString(str, ") "); if (join_expr->alias != NULL) deparseAlias(str, join_expr->alias); removeTrailingSpace(str); } static void deparseCTESearchClause(StringInfo str, CTESearchClause *search_clause) { appendStringInfoString(str, " SEARCH "); if (search_clause->search_breadth_first) appendStringInfoString(str, "BREADTH "); else appendStringInfoString(str, "DEPTH "); appendStringInfoString(str, "FIRST BY "); if (search_clause->search_col_list) deparseColumnList(str, search_clause->search_col_list); appendStringInfoString(str, " SET "); appendStringInfoString(str, quote_identifier(search_clause->search_seq_column)); } // "opt_cycle_clause" in gram.y static void deparseCTECycleClause(StringInfo str, CTECycleClause *cycle_clause) { appendStringInfoString(str, " CYCLE "); if (cycle_clause->cycle_col_list) deparseColumnList(str, cycle_clause->cycle_col_list); appendStringInfoString(str, " SET "); appendStringInfoString(str, quote_identifier(cycle_clause->cycle_mark_column)); if (cycle_clause->cycle_mark_value) { appendStringInfoString(str, " TO "); deparseAexprConst(str, cycle_clause->cycle_mark_value); } if (cycle_clause->cycle_mark_default) { appendStringInfoString(str, " DEFAULT "); deparseAexprConst(str, cycle_clause->cycle_mark_default); } appendStringInfoString(str, " USING "); appendStringInfoString(str, quote_identifier(cycle_clause->cycle_path_column)); } 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, ')'); if (cte->search_clause) deparseCTESearchClause(str, cte->search_clause); if (cte->cycle_clause) deparseCTECycleClause(str, cte->cycle_clause); } 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_SQL_SYNTAX: 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, DeparseNodeContext context) { bool need_parens = false; Assert(type_cast->typeName != NULL); if (IsA(type_cast->arg, A_Expr) || context == DEPARSE_NODE_CONTEXT_FUNC_EXPR) { appendStringInfoString(str, "CAST("); deparseExpr(str, type_cast->arg, DEPARSE_NODE_CONTEXT_A_EXPR); 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; } } else if (strcmp(typename, "interval") == 0 && context == DEPARSE_NODE_CONTEXT_SET_STATEMENT && IsA(&a_const->val, String)) { appendStringInfoString(str, "interval "); deparseAConst(str, a_const); deparseIntervalTypmods(str, type_cast->typeName); 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 (list_length(type_cast->typeName->names) == 1 && strcmp(strVal(linitial(type_cast->typeName->names)), "point") == 0 && a_const->location > type_cast->typeName->location) { appendStringInfoString(str, " point "); deparseAConst(str, a_const); return; } } if (need_parens) appendStringInfoChar(str, '('); deparseExpr(str, type_cast->arg, DEPARSE_NODE_CONTEXT_NONE /* could be either a_expr or b_expr (we could pass this down, but that'd require two kinds of contexts most likely) */); 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) { appendStringInfoString(str, "interval"); deparseIntervalTypmods(str, type_name); 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"); } // Handle typemods for Interval types separately // so that they can be applied appropriately for different contexts. // For example, when using `SET` a query like `INTERVAL 'x' hour TO minute` // the `INTERVAL` keyword is specified first. // In all other contexts, intervals use the `'x'::interval` style. static void deparseIntervalTypmods(StringInfo str, TypeName *type_name) { const char *name = strVal(lsecond(type_name->names)); Assert(strcmp(name, "interval") == 0); Assert(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); // 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); } } 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, DEPARSE_NODE_CONTEXT_A_EXPR); switch (null_test->nulltesttype) { case IS_NULL: appendStringInfoString(str, " IS NULL"); break; case IS_NOT_NULL: appendStringInfoString(str, " IS NOT NULL"); break; } } // "case_expr" in gram.y static void deparseCaseExpr(StringInfo str, CaseExpr *case_expr) { ListCell *lc; appendStringInfoString(str, "CASE "); if (case_expr->arg != NULL) { deparseExpr(str, (Node *) case_expr->arg, DEPARSE_NODE_CONTEXT_A_EXPR); 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, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "END"); } // "when_clause" in gram.y static void deparseCaseWhen(StringInfo str, CaseWhen *case_when) { appendStringInfoString(str, "WHEN "); deparseExpr(str, (Node *) case_when->expr, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, " THEN "); deparseExpr(str, (Node *) case_when->result, DEPARSE_NODE_CONTEXT_A_EXPR); } 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)) || IsA(a_indirection->arg, JsonFuncExpr); if (need_parens) appendStringInfoChar(str, '('); deparseExpr(str, a_indirection->arg, need_parens ? DEPARSE_NODE_CONTEXT_A_EXPR : DEPARSE_NODE_CONTEXT_NONE); 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, DEPARSE_NODE_CONTEXT_A_EXPR); if (a_indices->is_slice) appendStringInfoChar(str, ':'); if (a_indices->uidx != NULL) deparseExpr(str, a_indices->uidx, DEPARSE_NODE_CONTEXT_A_EXPR); 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) { bool need_parens = IsA(boolean_test->arg, BoolExpr); if (need_parens) appendStringInfoChar(str, '('); deparseExpr(str, (Node *) boolean_test->arg, DEPARSE_NODE_CONTEXT_A_EXPR); if (need_parens) appendStringInfoChar(str, ')'); 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); } } // "columnDef" and "alter_table_cmd" in gram.y static void deparseColumnDef(StringInfo str, ColumnDef *column_def) { ListCell *lc; if (column_def->colname != NULL) { appendStringInfoString(str, quote_identifier(column_def->colname)); appendStringInfoChar(str, ' '); } if (column_def->typeName != NULL) { deparseTypeName(str, column_def->typeName); appendStringInfoChar(str, ' '); } if (column_def->storage_name) { appendStringInfoString(str, "STORAGE "); appendStringInfoString(str, column_def->storage_name); appendStringInfoChar(str, ' '); } if (column_def->raw_default != NULL) { appendStringInfoString(str, "USING "); deparseExpr(str, column_def->raw_default, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ' '); } if (column_def->compression != NULL) { appendStringInfoString(str, "COMPRESSION "); appendStringInfoString(str, column_def->compression); 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 deparseInsertOverride(StringInfo str, OverridingKind override) { switch (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; } } 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, ") "); } deparseInsertOverride(str, insert_stmt->override); 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); deparseWhereOrCurrentClause(str, update_stmt->whereClause); if (list_length(update_stmt->returningList) > 0) { appendStringInfoString(str, "RETURNING "); deparseTargetList(str, update_stmt->returningList); } removeTrailingSpace(str); } // "MergeStmt" in gram.y static void deparseMergeStmt(StringInfo str, MergeStmt *merge_stmt) { if (merge_stmt->withClause != NULL) { deparseWithClause(str, merge_stmt->withClause); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "MERGE INTO "); deparseRangeVar(str, merge_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); appendStringInfoString(str, "USING "); deparseTableRef(str, merge_stmt->sourceRelation); appendStringInfoChar(str, ' '); appendStringInfoString(str, "ON "); deparseExpr(str, merge_stmt->joinCondition, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ' '); ListCell *lc; foreach (lc, merge_stmt->mergeWhenClauses) { MergeWhenClause *clause = castNode(MergeWhenClause, lfirst(lc)); appendStringInfoString(str, "WHEN "); switch (clause->matchKind) { case MERGE_WHEN_MATCHED: appendStringInfoString(str, "MATCHED "); break; case MERGE_WHEN_NOT_MATCHED_BY_SOURCE: appendStringInfoString(str, "NOT MATCHED BY SOURCE "); break; case MERGE_WHEN_NOT_MATCHED_BY_TARGET: appendStringInfoString(str, "NOT MATCHED "); break; } if (clause->condition) { appendStringInfoString(str, "AND "); deparseExpr(str, clause->condition, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "THEN "); switch (clause->commandType) { case CMD_INSERT: appendStringInfoString(str, "INSERT "); if (clause->targetList) { appendStringInfoChar(str, '('); deparseInsertColumnList(str, clause->targetList); appendStringInfoString(str, ") "); } deparseInsertOverride(str, clause->override); if (clause->values) { appendStringInfoString(str, "VALUES ("); deparseExprList(str, clause->values); appendStringInfoString(str, ")"); } else { appendStringInfoString(str, "DEFAULT VALUES "); } break; case CMD_UPDATE: appendStringInfoString(str, "UPDATE SET "); deparseSetClauseList(str, clause->targetList); break; case CMD_DELETE: appendStringInfoString(str, "DELETE"); break; case CMD_NOTHING: appendStringInfoString(str, "DO NOTHING"); break; default: elog(ERROR, "deparse: unpermitted command type in merge statement: %d", clause->commandType); break; } if (lfirst(lc) != llast(merge_stmt->mergeWhenClauses)) appendStringInfoChar(str, ' '); } if (merge_stmt->returningList) { appendStringInfoString(str, " RETURNING "); deparseTargetList(str, merge_stmt->returningList); } } 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, ' '); } deparseWhereOrCurrentClause(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_PLPGSQL: // Not present in raw parser output Assert(false); 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_COMPRESSION) appendStringInfoString(str, "INCLUDING COMPRESSION "); 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); } // "ColConstraintElem" and "ConstraintElem" in gram.y static void deparseConstraint(StringInfo str, Constraint *constraint) { ListCell *lc; if (constraint->conname != NULL) { appendStringInfoString(str, "CONSTRAINT "); appendStringInfoString(str, quote_identifier(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 "); deparseBExpr(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, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ") STORED "); break; case CONSTR_CHECK: appendStringInfoString(str, "CHECK ("); deparseExpr(str, constraint->raw_expr, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ") "); break; case CONSTR_PRIMARY: appendStringInfoString(str, "PRIMARY KEY "); break; case CONSTR_UNIQUE: appendStringInfoString(str, "UNIQUE "); if (constraint->nulls_not_distinct) appendStringInfoString(str, "NULLS NOT DISTINCT "); 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, DEPARSE_NODE_CONTEXT_A_EXPR); 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) { bool valueOnly = false; if (list_length(constraint->keys) == 1) { Node* firstKey = constraint->keys->elements[0].ptr_value; valueOnly = IsA(firstKey, String) && !strcmp("value", ((String*)firstKey)->sval); } if (!valueOnly) { 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: case FKCONSTR_ACTION_SETDEFAULT: appendStringInfoString(str, "ON DELETE SET "); switch (constraint->fk_del_action) { case FKCONSTR_ACTION_SETDEFAULT: appendStringInfoString(str, "DEFAULT "); break; case FKCONSTR_ACTION_SETNULL: appendStringInfoString(str, "NULL "); break; } if (constraint->fk_del_set_cols) { appendStringInfoString(str, "("); ListCell *lc; foreach (lc, constraint->fk_del_set_cols) { appendStringInfoString(str, strVal(lfirst(lc))); if (lfirst(lc) != llast(constraint->fk_del_set_cols)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ")"); } break; default: // Not specified break; } if (list_length(constraint->including) > 0) { appendStringInfoString(str, "INCLUDE ("); deparseColumnList(str, constraint->including); appendStringInfoString(str, ") "); } switch (constraint->contype) { case CONSTR_PRIMARY: case CONSTR_UNIQUE: case CONSTR_EXCLUSION: deparseOptWith(str, constraint->options); break; default: break; } 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); } // "ReturnStmt" in gram.y static void deparseReturnStmt(StringInfo str, ReturnStmt *return_stmt) { appendStringInfoString(str, "RETURN "); deparseExpr(str, return_stmt->returnval, DEPARSE_NODE_CONTEXT_A_EXPR); } 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, ' '); } if (create_function_stmt->sql_body) { /* RETURN or BEGIN ... END */ if (IsA(create_function_stmt->sql_body, ReturnStmt)) { deparseReturnStmt(str, castNode(ReturnStmt, create_function_stmt->sql_body)); } else { appendStringInfoString(str, "BEGIN ATOMIC "); if (IsA(create_function_stmt->sql_body, List), linitial((List *) create_function_stmt->sql_body) != NULL) { List *body_stmt_list = castNode(List, linitial((List *) create_function_stmt->sql_body)); foreach(lc, body_stmt_list) { if (IsA(lfirst(lc), ReturnStmt)) { deparseReturnStmt(str, lfirst_node(ReturnStmt, lc)); appendStringInfoString(str, "; "); } else { deparseStmt(str, lfirst(lc)); appendStringInfoString(str, "; "); } } } appendStringInfoString(str, "END "); } } removeTrailingSpace(str); } // "func_arg", "func_arg_with_default" and other places in gram.y static void deparseFunctionParameter(StringInfo str, FunctionParameter *function_parameter) { switch (function_parameter->mode) { case FUNC_PARAM_IN: /* input only */ appendStringInfoString(str, "IN "); 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; case FUNC_PARAM_DEFAULT: // Default 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, DEPARSE_NODE_CONTEXT_A_EXPR); } 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, ' '); } if (create_schema_stmt->schemaElts) { 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_ROLE: appendStringInfoString(str, "CURRENT_ROLE"); 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, DEPARSE_NODE_CONTEXT_A_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 "); switch (partition_spec->strategy) { case PARTITION_STRATEGY_LIST: appendStringInfoString(str, "LIST"); break; case PARTITION_STRATEGY_HASH: appendStringInfoString(str, "HASH"); break; case PARTITION_STRATEGY_RANGE: appendStringInfoString(str, "RANGE"); break; } 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); } if (partition_cmd->concurrent) appendStringInfoString(str, " CONCURRENTLY "); } // "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, (union ValUnion *) 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->objtype) { 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: deparseNameList(str, 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 "); appendStringInfo(str, "DEPENDS ON EXTENSION %s", alter_object_depends_stmt->extname->sval); } 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)); } // "alter_table_cmd" in gram.y 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_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_SetCompression: /* alter column set compression */ appendStringInfoString(str, "ALTER COLUMN "); options = "SET COMPRESSION"; break; case AT_DropColumn: /* drop column */ if (context == DEPARSE_NODE_CONTEXT_ALTER_TYPE) appendStringInfoString(str, "DROP ATTRIBUTE "); else appendStringInfoString(str, "DROP "); 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_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_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_ReAddComment: /* internal to commands/tablecmds.c */ case AT_ReAddStatistics: /* 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_SetAccessMethod: appendStringInfo(str, "SET ACCESS METHOD "); 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 ALL "); 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_DetachPartitionFinalize: /* DETACH PARTITION FINALIZE */ 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; case AT_SetExpression: appendStringInfoString(str, "ALTER COLUMN "); 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, ' '); } else if (alter_table_cmd->subtype == AT_SetAccessMethod) { appendStringInfoString(str, " DEFAULT"); } 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_DetachPartitionFinalize: deparsePartitionCmd(str, castNode(PartitionCmd, alter_table_cmd->def)); appendStringInfoString(str, "FINALIZE "); 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, DEPARSE_NODE_CONTEXT_A_EXPR); 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_SetCompression: if (strcmp(strVal(alter_table_cmd->def), "default") == 0) appendStringInfoString(str, "DEFAULT"); else 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; case AT_SetExpression: appendStringInfoString(str, "SET EXPRESSION AS ("); deparseExpr(str, alter_table_cmd->def, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ')'); break; default: Assert(alter_table_cmd->def == NULL); break; } deparseOptDropBehavior(str, alter_table_cmd->behavior); removeTrailingSpace(str); } static DeparseNodeContext deparseAlterTableObjType(StringInfo str, ObjectType type) { switch (type) { 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 "); return DEPARSE_NODE_CONTEXT_ALTER_TYPE; break; default: Assert(false); break; } return DEPARSE_NODE_CONTEXT_NONE; } static void deparseAlterTableMoveAllStmt(StringInfo str, AlterTableMoveAllStmt *move_all_stmt) { appendStringInfoString(str, "ALTER "); deparseAlterTableObjType(str, move_all_stmt->objtype); appendStringInfoString(str, "ALL IN TABLESPACE "); appendStringInfoString(str, move_all_stmt->orig_tablespacename); appendStringInfoChar(str, ' '); if (move_all_stmt->roles) { appendStringInfoString(str, "OWNED BY "); deparseRoleList(str, move_all_stmt->roles); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "SET TABLESPACE "); appendStringInfoString(str, move_all_stmt->new_tablespacename); appendStringInfoChar(str, ' '); if (move_all_stmt->nowait) { appendStringInfoString(str, "NOWAIT"); } } static void deparseAlterTableStmt(StringInfo str, AlterTableStmt *alter_table_stmt) { ListCell *lc; appendStringInfoString(str, "ALTER "); DeparseNodeContext context = deparseAlterTableObjType(str, alter_table_stmt->objtype); 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); } // "AlterDomainStmt" in gram.y 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, DEPARSE_NODE_CONTEXT_A_EXPR); } 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); } // Determine if we hit SET TIME ZONE INTERVAL, that has special syntax not // supported for other SET statements static bool isSetTimeZoneInterval(VariableSetStmt* stmt) { if (!(strcmp(stmt->name, "timezone") == 0 && list_length(stmt->args) == 1 && IsA(linitial(stmt->args), TypeCast))) return false; TypeName* typeName = castNode(TypeCast, linitial(stmt->args))->typeName; return (list_length(typeName->names) == 2 && strcmp(strVal(linitial(typeName->names)), "pg_catalog") == 0 && strcmp(strVal(llast(typeName->names)), "interval") == 0); } 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 "); if (isSetTimeZoneInterval(variable_set_stmt)) { appendStringInfoString(str, "TIME ZONE "); deparseVarList(str, variable_set_stmt->args); } else { 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 "); deparseUtilityOptionList(str, vacuum_stmt->options); 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 "); deparseUtilityOptionList(str, explain_stmt->options); 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) { // In some cases, equivalent expressions may have slightly different parse trees for `COPY` // statements. For example the following two statements result in different (but equivalent) parse // trees: // // - COPY foo FROM STDIN CSV FREEZE // - COPY foo FROM STDIN WITH (FORMAT CSV, FREEZE) // // In order to make sure we deparse to the "correct" version, we always try to deparse to the older // compact syntax first. // // The old syntax can be seen here in the Postgres 8.4 Reference: // https://www.postgresql.org/docs/8.4/sql-copy.html bool old_fmt = true; // Loop over the options to see if any require the new `WITH (...)` syntax. foreach(lc, copy_stmt->options) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); if (strcmp(def_elem->defname, "freeze") == 0 && optBooleanValue(def_elem->arg)) {} else if (strcmp(def_elem->defname, "header") == 0 && def_elem->arg && optBooleanValue(def_elem->arg)) {} else if (strcmp(def_elem->defname, "format") == 0 && strcmp(strVal(def_elem->arg), "csv") == 0) {} else if (strcmp(def_elem->defname, "force_quote") == 0 && def_elem->arg && nodeTag(def_elem->arg) == T_List) {} else { old_fmt = false; break; } } // Branch to differing output modes, depending on if we can use the old syntax. if (old_fmt) { foreach(lc, copy_stmt->options) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); if (strcmp(def_elem->defname, "freeze") == 0 && optBooleanValue(def_elem->arg)) { appendStringInfoString(str, "FREEZE "); } else if (strcmp(def_elem->defname, "header") == 0 && def_elem->arg && optBooleanValue(def_elem->arg)) { appendStringInfoString(str, "HEADER "); } else if (strcmp(def_elem->defname, "format") == 0 && strcmp(strVal(def_elem->arg), "csv") == 0) { appendStringInfoString(str, "CSV "); } else if (strcmp(def_elem->defname, "force_quote") == 0 && def_elem->arg && nodeTag(def_elem->arg) == T_List) { appendStringInfoString(str, "FORCE QUOTE "); deparseColumnList(str, castNode(List, def_elem->arg)); } else { // This isn't reachable, the conditions here are exactly the same as the first loop above. Assert(false); } } } else { 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 if (strcmp(format, "text") == 0) appendStringInfoString(str, "TEXT"); else Assert(false); } else if (strcmp(def_elem->defname, "freeze") == 0) { appendStringInfoString(str, "FREEZE"); deparseOptBoolean(str, def_elem->arg); } 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) { appendStringInfoString(str, "HEADER"); deparseOptBoolean(str, def_elem->arg); } 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 "); if (IsA(def_elem->arg, A_Star)) deparseAStar(str, castNode(A_Star, def_elem->arg)); else { appendStringInfoChar(str, '('); deparseColumnList(str, castNode(List, def_elem->arg)); appendStringInfoChar(str, ')'); } } else if (strcmp(def_elem->defname, "force_null") == 0) { appendStringInfoString(str, "FORCE_NULL "); if (IsA(def_elem->arg, A_Star)) deparseAStar(str, castNode(A_Star, def_elem->arg)); else { appendStringInfoChar(str, '('); 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, (union ValUnion *) 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); if (grant_stmt->grantor) { appendStringInfoString(str, "GRANTED BY "); deparseRoleSpec(str, castNode(RoleSpec, grant_stmt->grantor)); } 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 "); if (!grant_role_stmt->is_grant && list_length(grant_role_stmt->opt)) { DefElem *defelem = castNode(DefElem, linitial(grant_role_stmt->opt)); Assert(!castNode(Boolean, defelem->arg)->boolval); if (strcmp("admin", defelem->defname) == 0) { appendStringInfoString(str, "ADMIN "); } else if (strcmp("inherit", defelem->defname) == 0) { appendStringInfoString(str, "INHERIT "); } else if (strcmp("set", defelem->defname) == 0) { appendStringInfoString(str, "SET "); } appendStringInfoString(str, "OPTION FOR "); } 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->is_grant) { if (list_length(grant_role_stmt->opt) > 0) { appendStringInfoString(str, "WITH "); } foreach(lc, grant_role_stmt->opt) { DefElem *defelem = castNode(DefElem, lfirst(lc)); if (strcmp("admin", defelem->defname) == 0) { appendStringInfoString(str, "ADMIN "); appendStringInfoString(str, castNode(Boolean, defelem->arg)->boolval ? "OPTION" : "FALSE"); } else if (strcmp("inherit", defelem->defname) == 0) { appendStringInfoString(str, "INHERIT "); appendStringInfoString(str, castNode(Boolean, defelem->arg)->boolval ? "OPTION" : "FALSE"); } else if (strcmp("set", defelem->defname) == 0) { appendStringInfoString(str, "SET "); appendStringInfoString(str, castNode(Boolean, defelem->arg)->boolval ? "OPTION" : "FALSE"); } if (lnext(grant_role_stmt->opt, lc)) { appendStringInfoChar(str, ','); } appendStringInfoChar(str, ' '); } } if (grant_role_stmt->grantor) { appendStringInfoString(str, "GRANTED BY "); deparseRoleSpec(str, castNode(RoleSpec, grant_role_stmt->grantor)); } if (grant_role_stmt->behavior == DROP_CASCADE) { appendStringInfoString(str, "CASCADE "); } 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, quote_identifier(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, ") "); } if (index_stmt->nulls_not_distinct) { appendStringInfoString(str, "NULLS NOT DISTINCT "); } 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 && boolVal(def_elem->arg)) { appendStringInfoString(str, "SUPERUSER"); } else if (strcmp(def_elem->defname, "superuser") == 0 && !boolVal(def_elem->arg)) { appendStringInfoString(str, "NOSUPERUSER"); } else if (strcmp(def_elem->defname, "createrole") == 0 && boolVal(def_elem->arg)) { appendStringInfoString(str, "CREATEROLE"); } else if (strcmp(def_elem->defname, "createrole") == 0 && !boolVal(def_elem->arg)) { appendStringInfoString(str, "NOCREATEROLE"); } else if (strcmp(def_elem->defname, "isreplication") == 0 && boolVal(def_elem->arg)) { appendStringInfoString(str, "REPLICATION"); } else if (strcmp(def_elem->defname, "isreplication") == 0 && !boolVal(def_elem->arg)) { appendStringInfoString(str, "NOREPLICATION"); } else if (strcmp(def_elem->defname, "createdb") == 0 && boolVal(def_elem->arg)) { appendStringInfoString(str, "CREATEDB"); } else if (strcmp(def_elem->defname, "createdb") == 0 && !boolVal(def_elem->arg)) { appendStringInfoString(str, "NOCREATEDB"); } else if (strcmp(def_elem->defname, "canlogin") == 0 && boolVal(def_elem->arg)) { appendStringInfoString(str, "LOGIN"); } else if (strcmp(def_elem->defname, "canlogin") == 0 && !boolVal(def_elem->arg)) { appendStringInfoString(str, "NOLOGIN"); } else if (strcmp(def_elem->defname, "bypassrls") == 0 && boolVal(def_elem->arg)) { appendStringInfoString(str, "BYPASSRLS"); } else if (strcmp(def_elem->defname, "bypassrls") == 0 && !boolVal(def_elem->arg)) { appendStringInfoString(str, "NOBYPASSRLS"); } else if (strcmp(def_elem->defname, "inherit") == 0 && boolVal(def_elem->arg)) { appendStringInfoString(str, "INHERIT"); } else if (strcmp(def_elem->defname, "inherit") == 0 && !boolVal(def_elem->arg)) { 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, quote_identifier(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 "); deparseUtilityOptionList(str, reindex_stmt->params); 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->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; case CMD_MERGE: appendStringInfoString(str, "MERGE "); 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; } } // "CreatePolicyStmt" in gram.y 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, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ") "); } if (create_policy_stmt->with_check != NULL) { appendStringInfoString(str, "WITH CHECK ("); deparseExpr(str, create_policy_stmt->with_check, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ") "); } } // "AlterPolicyStmt" in gram.y 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, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ") "); } if (alter_policy_stmt->with_check != NULL) { appendStringInfoString(str, "WITH CHECK ("); deparseExpr(str, alter_policy_stmt->with_check, DEPARSE_NODE_CONTEXT_A_EXPR); 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 "); if (create_table_space_stmt->location != NULL) deparseStringLiteral(str, create_table_space_stmt->location); else appendStringInfoString(str, "''"); 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); } // "pub_obj_list" in gram.y static void deparsePublicationObjectList(StringInfo str, List *pubobjects) { const ListCell *lc; foreach(lc, pubobjects) { PublicationObjSpec *obj = lfirst(lc); switch (obj->pubobjtype) { case PUBLICATIONOBJ_TABLE: appendStringInfoString(str, "TABLE "); deparseRangeVar(str, obj->pubtable->relation, DEPARSE_NODE_CONTEXT_NONE); if (obj->pubtable->columns) { appendStringInfoChar(str, '('); deparseColumnList(str, obj->pubtable->columns); appendStringInfoChar(str, ')'); } if (obj->pubtable->whereClause) { appendStringInfoString(str, " WHERE ("); deparseExpr(str, obj->pubtable->whereClause, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ")"); } break; case PUBLICATIONOBJ_TABLES_IN_SCHEMA: appendStringInfoString(str, "TABLES IN SCHEMA "); appendStringInfoString(str, quote_identifier(obj->name)); break; case PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA: appendStringInfoString(str, "TABLES IN SCHEMA CURRENT_SCHEMA"); break; case PUBLICATIONOBJ_CONTINUATION: // This should be unreachable, the parser merges these before we can even get here. Assert(false); break; } if (lnext(pubobjects, lc)) { appendStringInfoString(str, ", "); } } } 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->pubobjects) > 0) { appendStringInfoString(str, "FOR "); deparsePublicationObjectList(str, create_publication_stmt->pubobjects); 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->pubobjects) > 0) { switch (alter_publication_stmt->action) { case AP_SetObjects: appendStringInfoString(str, "SET "); break; case AP_AddObjects: appendStringInfoString(str, "ADD "); break; case AP_DropObjects: appendStringInfoString(str, "DROP "); break; } deparsePublicationObjectList(str, alter_publication_stmt->pubobjects); } 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, (union ValUnion *) 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"); } // "stats_param" in gram.y static void deparseStatsElem(StringInfo str, StatsElem *stats_elem) { // only one of stats_elem->name or stats_elem->expr can be non-null if (stats_elem->name) appendStringInfoString(str, stats_elem->name); else if (stats_elem->expr) { appendStringInfoChar(str, '('); deparseExpr(str, stats_elem->expr, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ')'); } } 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 "); foreach (lc, create_stats_stmt->exprs) { deparseStatsElem(str, lfirst(lc)); if (lnext(create_stats_stmt->exprs, lc)) appendStringInfoString(str, ", "); } 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, ' '); if (alter_stats_stmt->stxstattarget) appendStringInfo(str, "SET STATISTICS %d", castNode(Integer, alter_stats_stmt->stxstattarget)->ival); else appendStringInfo(str, "SET STATISTICS DEFAULT"); } 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, "ALL"); else appendStringInfoString(str, quote_identifier(variable_show_stmt->name)); } // "tablesample_clause" in gram.y 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, DEPARSE_NODE_CONTEXT_A_EXPR); 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_SKIP: appendStringInfoString(str, "SKIP "); 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_ADD_PUBLICATION: appendStringInfoString(str, "ADD 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_DROP_PUBLICATION: appendStringInfoString(str, "DROP 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_SET_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 (optBooleanValue(defelem->arg)) { appendStringInfoString(str, " ENABLE "); } else { appendStringInfoString(str, " DISABLE "); } 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, DEPARSE_NODE_CONTEXT_NONE); } 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, (union ValUnion *) 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"); } } // "CreateTrigStmt" in gram.y static void deparseCreateTrigStmt(StringInfo str, CreateTrigStmt *create_trig_stmt) { ListCell *lc; bool skip_events_or = true; appendStringInfoString(str, "CREATE "); if (create_trig_stmt->replace) appendStringInfoString(str, "OR REPLACE "); 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, DEPARSE_NODE_CONTEXT_A_EXPR); 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, DeparseNodeContext context) { 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), DEPARSE_NODE_CONTEXT_A_EXPR); 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), DEPARSE_NODE_CONTEXT_A_EXPR); } appendStringInfoChar(str, ')'); break; case IS_XMLROOT: /* XMLROOT(xml, version, standalone) */ appendStringInfoString(str, "xmlroot("); deparseExpr(str, linitial(xml_expr->args), DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ", version "); if (castNode(A_Const, lsecond(xml_expr->args))->isnull) appendStringInfoString(str, "NO VALUE"); else deparseExpr(str, lsecond(xml_expr->args), DEPARSE_NODE_CONTEXT_A_EXPR); 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), context); appendStringInfoString(str, " IS DOCUMENT"); break; } } // "xmltable_column_el" in gram.y 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, DEPARSE_NODE_CONTEXT_NONE /* b_expr */); appendStringInfoChar(str, ' '); } if (range_table_func_col->coldefexpr) { appendStringInfoString(str, "DEFAULT "); deparseExpr(str, range_table_func_col->coldefexpr, DEPARSE_NODE_CONTEXT_NONE /* b_expr */); appendStringInfoChar(str, ' '); } if (range_table_func_col->is_not_null) appendStringInfoString(str, "NOT NULL "); } removeTrailingSpace(str); } // "table_ref" and "xmltable" in gram.y 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, DEPARSE_NODE_CONTEXT_NONE /* c_expr */); appendStringInfoChar(str, ')'); appendStringInfoString(str, " PASSING "); deparseExpr(str, range_table_func->docexpr, DEPARSE_NODE_CONTEXT_NONE /* c_expr */); 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, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, " AS "); deparseTypeName(str, xml_serialize->typeName); if (xml_serialize->indent) { appendStringInfoString(str, " INDENT"); } appendStringInfoString(str, ")"); } static void deparseJsonFormat(StringInfo str, JsonFormat *json_format) { if (json_format == NULL || json_format->format_type == JS_FORMAT_DEFAULT) return; appendStringInfoString(str, "FORMAT JSON "); switch (json_format->encoding) { case JS_ENC_UTF8: appendStringInfoString(str, "ENCODING utf8 "); break; case JS_ENC_UTF16: appendStringInfoString(str, "ENCODING utf16 "); break; case JS_ENC_UTF32: appendStringInfoString(str, "ENCODING utf32 "); break; case JS_ENC_DEFAULT: // no encoding specified break; } } static void deparseJsonIsPredicate(StringInfo str, JsonIsPredicate *j) { deparseExpr(str, j->expr, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ' '); deparseJsonFormat(str, castNode(JsonFormat, j->format)); appendStringInfoString(str, "IS "); switch (j->item_type) { case JS_TYPE_ANY: appendStringInfoString(str, "JSON "); break; case JS_TYPE_ARRAY: appendStringInfoString(str, "JSON ARRAY "); break; case JS_TYPE_OBJECT: appendStringInfoString(str, "JSON OBJECT "); break; case JS_TYPE_SCALAR: appendStringInfoString(str, "JSON SCALAR "); break; } if (j->unique_keys) appendStringInfoString(str, "WITH UNIQUE "); removeTrailingSpace(str); } // "json_value_expr" in gram.y static void deparseJsonValueExpr(StringInfo str, JsonValueExpr *json_value_expr) { deparseExpr(str, (Node *) json_value_expr->raw_expr, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoChar(str, ' '); deparseJsonFormat(str, json_value_expr->format); } // "json_value_expr_list" in gram.y static void deparseJsonValueExprList(StringInfo str, List *exprs) { ListCell *lc; foreach(lc, exprs) { deparseJsonValueExpr(str, lfirst(lc)); removeTrailingSpace(str); if (lnext(exprs, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ' '); } // "json_name_and_value" in gram.y static void deparseJsonKeyValue(StringInfo str, JsonKeyValue *json_key_value) { deparseExpr(str, (Node *) json_key_value->key, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ": "); deparseJsonValueExpr(str, json_key_value->value); } // "json_name_and_value_list" in gram.y static void deparseJsonKeyValueList(StringInfo str, List *exprs) { ListCell *lc; foreach(lc, exprs) { deparseJsonKeyValue(str, lfirst(lc)); removeTrailingSpace(str); if (lnext(exprs, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ' '); } static void deparseJsonOutput(StringInfo str, JsonOutput *json_output) { if (json_output == NULL) return; Assert(json_output->returning != NULL); appendStringInfoString(str, "RETURNING "); deparseTypeName(str, json_output->typeName); appendStringInfoChar(str, ' '); deparseJsonFormat(str, json_output->returning->format); } // "json_aggregate_func" and "func_expr" in gram.y static void deparseJsonObjectAgg(StringInfo str, JsonObjectAgg *json_object_agg) { Assert(json_object_agg->constructor != NULL); appendStringInfoString(str, "JSON_OBJECTAGG("); deparseJsonKeyValue(str, json_object_agg->arg); if (json_object_agg->absent_on_null) appendStringInfoString(str, "ABSENT ON NULL "); if (json_object_agg->unique) appendStringInfoString(str, "WITH UNIQUE "); deparseJsonOutput(str, json_object_agg->constructor->output); removeTrailingSpace(str); appendStringInfoString(str, ") "); if (json_object_agg->constructor->agg_filter) { appendStringInfoString(str, "FILTER (WHERE "); deparseExpr(str, json_object_agg->constructor->agg_filter, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ") "); } if (json_object_agg->constructor->over) { struct WindowDef *over = json_object_agg->constructor->over; appendStringInfoString(str, "OVER "); if (over->name) appendStringInfoString(str, over->name); else deparseWindowDef(str, over); } removeTrailingSpace(str); } // "json_aggregate_func" and "func_expr" in gram.y static void deparseJsonArrayAgg(StringInfo str, JsonArrayAgg *json_array_agg) { Assert(json_array_agg->constructor != NULL); appendStringInfoString(str, "JSON_ARRAYAGG("); deparseJsonValueExpr(str, json_array_agg->arg); deparseOptSortClause(str, json_array_agg->constructor->agg_order); if (!json_array_agg->absent_on_null) appendStringInfoString(str, "NULL ON NULL "); deparseJsonOutput(str, json_array_agg->constructor->output); removeTrailingSpace(str); appendStringInfoString(str, ") "); if (json_array_agg->constructor->agg_filter) { appendStringInfoString(str, "FILTER (WHERE "); deparseExpr(str, json_array_agg->constructor->agg_filter, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ") "); } if (json_array_agg->constructor->over) { struct WindowDef *over = json_array_agg->constructor->over; appendStringInfoString(str, "OVER "); if (over->name) appendStringInfoString(str, over->name); else deparseWindowDef(str, over); } removeTrailingSpace(str); } static void deparseJsonObjectConstructor(StringInfo str, JsonObjectConstructor *json_object_constructor) { appendStringInfoString(str, "JSON_OBJECT("); deparseJsonKeyValueList(str, json_object_constructor->exprs); if (json_object_constructor->absent_on_null) appendStringInfoString(str, "ABSENT ON NULL "); if (json_object_constructor->unique) appendStringInfoString(str, "WITH UNIQUE "); deparseJsonOutput(str, json_object_constructor->output); removeTrailingSpace(str); appendStringInfoChar(str, ')'); } static void deparseJsonArrayConstructor(StringInfo str, JsonArrayConstructor *json_array_constructor) { appendStringInfoString(str, "JSON_ARRAY("); deparseJsonValueExprList(str, json_array_constructor->exprs); if (!json_array_constructor->absent_on_null) appendStringInfoString(str, "NULL ON NULL "); deparseJsonOutput(str, json_array_constructor->output); removeTrailingSpace(str); appendStringInfoChar(str, ')'); } static void deparseJsonArrayQueryConstructor(StringInfo str, JsonArrayQueryConstructor *json_array_query_constructor) { appendStringInfoString(str, "JSON_ARRAY("); deparseSelectStmt(str, castNode(SelectStmt, json_array_query_constructor->query)); deparseJsonFormat(str, json_array_query_constructor->format); deparseJsonOutput(str, json_array_query_constructor->output); removeTrailingSpace(str); appendStringInfoChar(str, ')'); } static void deparseJsonParseExpr(StringInfo str, JsonParseExpr *json_parse_expr) { appendStringInfoString(str, "JSON("); deparseJsonValueExpr(str, json_parse_expr->expr); if (json_parse_expr->unique_keys) appendStringInfoString(str, " WITH UNIQUE KEYS"); appendStringInfoString(str, ")"); } static void deparseJsonScalarExpr(StringInfo str, JsonScalarExpr *json_scalar_expr) { appendStringInfoString(str, "JSON_SCALAR("); deparseExpr(str, (Node*) json_scalar_expr->expr, DEPARSE_NODE_CONTEXT_A_EXPR); appendStringInfoString(str, ")"); } static void deparseJsonSerializeExpr(StringInfo str, JsonSerializeExpr *json_serialize_expr) { appendStringInfoString(str, "JSON_SERIALIZE("); deparseJsonValueExpr(str, json_serialize_expr->expr); if (json_serialize_expr->output) deparseJsonOutput(str, json_serialize_expr->output); appendStringInfoString(str, ")"); } static void deparseJsonQuotesClauseOpt(StringInfo str, JsonQuotes quotes) { switch (quotes) { case JS_QUOTES_UNSPEC: break; case JS_QUOTES_KEEP: appendStringInfoString(str, " KEEP QUOTES"); break; case JS_QUOTES_OMIT: appendStringInfoString(str, " OMIT QUOTES"); break; } } static void deparseJsonOnErrorClauseOpt(StringInfo str, JsonBehavior *behavior) { if (!behavior) return; appendStringInfoChar(str, ' '); deparseJsonBehavior(str, behavior); appendStringInfoString(str, " ON ERROR"); } static void deparseJsonOnEmptyClauseOpt(StringInfo str, JsonBehavior *behavior) { if (behavior) { appendStringInfoChar(str, ' '); deparseJsonBehavior(str, behavior); appendStringInfoString(str, " ON EMPTY"); } } static void deparseJsonFuncExpr(StringInfo str, JsonFuncExpr *json_func_expr) { switch (json_func_expr->op) { case JSON_EXISTS_OP: appendStringInfoString(str, "JSON_EXISTS("); break; case JSON_QUERY_OP: appendStringInfoString(str, "JSON_QUERY("); break; case JSON_VALUE_OP: appendStringInfoString(str, "JSON_VALUE("); break; case JSON_TABLE_OP: appendStringInfoString(str, "JSON_TABLE("); break; } deparseJsonValueExpr(str, json_func_expr->context_item); appendStringInfoString(str, ", "); deparseExpr(str, json_func_expr->pathspec, DEPARSE_NODE_CONTEXT_A_EXPR); if (json_func_expr->passing) appendStringInfoString(str, " PASSING "); ListCell *lc = NULL; foreach (lc, json_func_expr->passing) { JsonArgument *json_argument = castNode(JsonArgument, lfirst(lc)); deparseJsonValueExpr(str, json_argument->val); appendStringInfoString(str, " AS "); deparseColLabel(str, json_argument->name); if (lnext(json_func_expr->passing, lc)) appendStringInfoString(str, ", "); } if (json_func_expr->output) { appendStringInfoChar(str, ' '); deparseJsonOutput(str, json_func_expr->output); } switch (json_func_expr->wrapper) { case JSW_UNSPEC: break; case JSW_NONE: appendStringInfoString(str, " WITHOUT WRAPPER"); break; case JSW_CONDITIONAL: appendStringInfoString(str, " WITH CONDITIONAL WRAPPER"); break; case JSW_UNCONDITIONAL: appendStringInfoString(str, " WITH UNCONDITIONAL WRAPPER"); break; } deparseJsonQuotesClauseOpt(str, json_func_expr->quotes); deparseJsonOnEmptyClauseOpt(str, json_func_expr->on_empty); deparseJsonOnErrorClauseOpt(str, json_func_expr->on_error); appendStringInfoChar(str, ')'); } static void deparseJsonTablePathSpec(StringInfo str, JsonTablePathSpec *json_table_path_spec) { deparseStringLiteral(str, castNode(A_Const, json_table_path_spec->string)->val.sval.sval); if (json_table_path_spec->name) { appendStringInfoString(str, " AS "); deparseColLabel(str, json_table_path_spec->name); } } // "json_behavior" in gram.y static void deparseJsonBehavior(StringInfo str, JsonBehavior *json_behavior) { switch (json_behavior->btype) { case JSON_BEHAVIOR_NULL: appendStringInfoString(str, "NULL"); break; case JSON_BEHAVIOR_ERROR: appendStringInfoString(str, "ERROR"); break; case JSON_BEHAVIOR_EMPTY: appendStringInfoString(str, "EMPTY"); break; case JSON_BEHAVIOR_TRUE: appendStringInfoString(str, "TRUE"); break; case JSON_BEHAVIOR_FALSE: appendStringInfoString(str, "FALSE"); break; case JSON_BEHAVIOR_EMPTY_ARRAY: appendStringInfoString(str, "EMPTY ARRAY"); break; case JSON_BEHAVIOR_EMPTY_OBJECT: appendStringInfoString(str, "EMPTY OBJECT"); break; case JSON_BEHAVIOR_DEFAULT: appendStringInfoString(str, "DEFAULT "); deparseExpr(str, (Node*) json_behavior->expr, DEPARSE_NODE_CONTEXT_A_EXPR); break; case JSON_BEHAVIOR_UNKNOWN: appendStringInfoString(str, "UNKNOWN"); break; } } static void deparseJsonTableColumn(StringInfo str, JsonTableColumn *json_table_column) { if (json_table_column->coltype == JTC_NESTED) { appendStringInfoString(str, "NESTED PATH "); deparseJsonTablePathSpec(str, json_table_column->pathspec); deparseJsonTableColumns(str, json_table_column->columns); return; } deparseColLabel(str, json_table_column->name); appendStringInfoChar(str, ' '); switch (json_table_column->coltype) { case JTC_FOR_ORDINALITY: appendStringInfoString(str, " FOR ORDINALITY"); break; case JTC_EXISTS: case JTC_FORMATTED: case JTC_REGULAR: deparseTypeName(str, json_table_column->typeName); if (json_table_column->coltype == JTC_EXISTS) appendStringInfoString(str, " EXISTS "); else appendStringInfoChar(str, ' '); if (json_table_column->format) deparseJsonFormat(str, json_table_column->format); if (json_table_column->pathspec) { appendStringInfoString(str, "PATH "); deparseJsonTablePathSpec(str, json_table_column->pathspec); } break; case JTC_NESTED: Assert(false); } switch (json_table_column->wrapper) { case JSW_UNSPEC: break; case JSW_NONE: if (json_table_column->coltype == JTC_REGULAR || json_table_column->coltype == JTC_FORMATTED) appendStringInfoString(str, " WITHOUT WRAPPER"); break; case JSW_CONDITIONAL: appendStringInfoString(str, " WITH CONDITIONAL WRAPPER"); break; case JSW_UNCONDITIONAL: appendStringInfoString(str, " WITH UNCONDITIONAL WRAPPER"); break; } deparseJsonQuotesClauseOpt(str, json_table_column->quotes); deparseJsonOnEmptyClauseOpt(str, json_table_column->on_empty); deparseJsonOnErrorClauseOpt(str, json_table_column->on_error); } static void deparseJsonTableColumns(StringInfo str, List *json_table_columns) { appendStringInfoString(str, " COLUMNS ("); ListCell *lc = NULL; foreach(lc, json_table_columns) { deparseJsonTableColumn(str, castNode(JsonTableColumn, lfirst(lc))); if (lnext(json_table_columns, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } static void deparseJsonTable(StringInfo str, JsonTable *json_table) { appendStringInfoString(str, "JSON_TABLE("); deparseJsonValueExpr(str, json_table->context_item); appendStringInfoString(str, ", "); deparseJsonTablePathSpec(str, json_table->pathspec); if (json_table->passing) appendStringInfoString(str, " PASSING "); ListCell *lc = NULL; foreach (lc, json_table->passing) { JsonArgument *json_argument = castNode(JsonArgument, lfirst(lc)); deparseJsonValueExpr(str, json_argument->val); appendStringInfoString(str, " AS "); deparseColLabel(str, json_argument->name); if (lnext(json_table->passing, lc)) appendStringInfoString(str, ", "); } deparseJsonTableColumns(str, json_table->columns); if (json_table->on_error) { deparseJsonBehavior(str, json_table->on_error); appendStringInfoString(str, " ON ERROR"); } appendStringInfoChar(str, ')'); if (json_table->alias) { appendStringInfoChar(str, ' '); deparseAlias(str, json_table->alias); } } 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 "); deparseUtilityOptionList(str, cluster_stmt->params); 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, union ValUnion *value, DeparseNodeContext context) { if (!value) { appendStringInfoString(str, "NULL"); return; } switch (nodeTag(value)) { case T_Integer: case T_Float: deparseNumericOnly(str, value); break; case T_Boolean: appendStringInfoString(str, value->boolval.boolval ? "true" : "false"); break; case T_String: if (context == DEPARSE_NODE_CONTEXT_IDENTIFIER) { appendStringInfoString(str, quote_identifier(value->sval.sval)); } else if (context == DEPARSE_NODE_CONTEXT_CONSTANT) { deparseStringLiteral(str, value->sval.sval); } else { appendStringInfoString(str, value->sval.sval); } break; case T_BitString: if (strlen(value->sval.sval) >= 1 && value->sval.sval[0] == 'x') { appendStringInfoChar(str, 'x'); deparseStringLiteral(str, value->sval.sval + 1); } else if (strlen(value->sval.sval) >= 1 && value->sval.sval[0] == 'b') { appendStringInfoChar(str, 'b'); deparseStringLiteral(str, value->sval.sval + 1); } else { Assert(false); } break; default: elog(ERROR, "deparse: 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; case T_MergeStmt: deparseMergeStmt(str, castNode(MergeStmt, 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; case T_MergeStmt: deparseMergeStmt(str, castNode(MergeStmt, 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_AlterTableMoveAllStmt: deparseAlterTableMoveAllStmt(str, castNode(AlterTableMoveAllStmt, 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_MergeStmt: deparseMergeStmt(str, castNode(MergeStmt, 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: elog(ERROR, "deparse: unsupported top-level node type: %u", nodeTag(node)); } } libpg_query-17-6.1.0/src/postgres_deparse.h000066400000000000000000000002711477334012600206050ustar00rootroot00000000000000#ifndef POSTGRES_DEPARSE_H #define POSTGRES_DEPARSE_H #include "lib/stringinfo.h" #include "nodes/parsenodes.h" extern void deparseRawStmt(StringInfo str, RawStmt *raw_stmt); #endif libpg_query-17-6.1.0/srcdata/000077500000000000000000000000001477334012600157155ustar00rootroot00000000000000libpg_query-17-6.1.0/srcdata/all_known_enums.json000066400000000000000000000026211477334012600220040ustar00rootroot00000000000000[ "QuerySource", "SortByDir", "SortByNulls", "SetQuantifier", "A_Expr_Kind", "RoleSpecType", "TableLikeOption", "DefElemAction", "PartitionStrategy", "PartitionRangeDatumKind", "RTEKind", "WCOKind", "GroupingSetKind", "CTEMaterialize", "JsonQuotes", "JsonTableColumnType", "SetOperation", "ObjectType", "DropBehavior", "AlterTableType", "GrantTargetType", "VariableSetKind", "ConstrType", "ImportForeignSchemaType", "RoleStmtType", "FetchDirection", "FunctionParameterMode", "TransactionStmtKind", "ViewCheckOption", "DiscardMode", "ReindexObjectType", "AlterTSConfigType", "PublicationObjSpecType", "AlterPublicationAction", "AlterSubscriptionType", "OverridingKind", "OnCommitAction", "TableFuncType", "ParamKind", "CoercionContext", "CoercionForm", "BoolExprType", "SubLinkType", "RowCompareType", "MinMaxOp", "SQLValueFunctionOp", "XmlExprOp", "XmlOptionType", "JsonEncoding", "JsonFormatType", "JsonConstructorType", "JsonValueType", "JsonWrapper", "JsonBehaviorType", "JsonExprOp", "NullTestType", "BoolTestType", "MergeMatchKind", "LockClauseStrength", "LockWaitPolicy", "LockTupleMode", "NodeTag", "CmdType", "JoinType", "AggStrategy", "AggSplit", "SetOpCmd", "SetOpStrategy", "OnConflictAction", "LimitOption", "VacOptValue", "ScanDirection", "pg_enc", "yytokentype" ]libpg_query-17-6.1.0/srcdata/enum_defs.json000066400000000000000000005073531477334012600205720ustar00rootroot00000000000000{ "nodes/parsenodes": { "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 }, "SetQuantifier": { "values": [ { "comment": "" }, { "name": "SET_QUANTIFIER_DEFAULT", "value": 0 }, { "name": "SET_QUANTIFIER_ALL", "value": 1 }, { "name": "SET_QUANTIFIER_DISTINCT", "value": 2 } ], "comment": "/* Options for [ ALL | DISTINCT ] */\n" }, "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_IN", "value": 6, "comment": "/* [NOT] IN - name must be \"=\" or \"<>\" */" }, { "name": "AEXPR_LIKE", "value": 7, "comment": "/* [NOT] LIKE - name must be \"~~\" or \"!~~\" */" }, { "name": "AEXPR_ILIKE", "value": 8, "comment": "/* [NOT] ILIKE - name must be \"~~*\" or \"!~~*\" */" }, { "name": "AEXPR_SIMILAR", "value": 9, "comment": "/* [NOT] SIMILAR - name must be \"~\" or \"!~\" */" }, { "name": "AEXPR_BETWEEN", "value": 10, "comment": "/* name must be \"BETWEEN\" */" }, { "name": "AEXPR_NOT_BETWEEN", "value": 11, "comment": "/* name must be \"NOT BETWEEN\" */" }, { "name": "AEXPR_BETWEEN_SYM", "value": 12, "comment": "/* name must be \"BETWEEN SYMMETRIC\" */" }, { "name": "AEXPR_NOT_BETWEEN_SYM", "value": 13, "comment": "/* name must be \"NOT BETWEEN SYMMETRIC\" */" } ], "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_ROLE", "value": 1, "comment": "/* role spec is CURRENT_ROLE */" }, { "name": "ROLESPEC_CURRENT_USER", "value": 2, "comment": "/* role spec is CURRENT_USER */" }, { "name": "ROLESPEC_SESSION_USER", "value": 3, "comment": "/* role spec is SESSION_USER */" }, { "name": "ROLESPEC_PUBLIC", "value": 4, "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_COMPRESSION", "value": 2 }, { "name": "CREATE_TABLE_LIKE_CONSTRAINTS", "value": 4 }, { "name": "CREATE_TABLE_LIKE_DEFAULTS", "value": 8 }, { "name": "CREATE_TABLE_LIKE_GENERATED", "value": 16 }, { "name": "CREATE_TABLE_LIKE_IDENTITY", "value": 32 }, { "name": "CREATE_TABLE_LIKE_INDEXES", "value": 64 }, { "name": "CREATE_TABLE_LIKE_STATISTICS", "value": 128 }, { "name": "CREATE_TABLE_LIKE_STORAGE", "value": 256 }, { "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" }, "PartitionStrategy": { "values": [ { "comment": "" }, { "name": "PARTITION_STRATEGY_LIST", "value": 108 }, { "name": "PARTITION_STRATEGY_RANGE", "value": 114 }, { "name": "PARTITION_STRATEGY_HASH", "value": 104 } ], "comment": null }, "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 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 during parsing (except in transformLockingClause,\n *\t q.v.); the parser now uses a separate \"namespace\" data structure to\n *\t control visibility. But it is needed by ruleutils.c to determine\n *\t whether RTEs should be shown in decompiled queries.\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 */" }, { "name": "WCO_RLS_MERGE_UPDATE_CHECK", "value": 4, "comment": "/* RLS MERGE UPDATE USING policy */" }, { "name": "WCO_RLS_MERGE_DELETE_CHECK", "value": 5, "comment": "/* RLS MERGE DELETE 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" }, "JsonQuotes": { "values": [ { "comment": "" }, { "name": "JS_QUOTES_UNSPEC", "value": 0, "comment": "/* unspecified */" }, { "name": "JS_QUOTES_KEEP", "value": 1, "comment": "/* KEEP QUOTES */" }, { "name": "JS_QUOTES_OMIT", "value": 2, "comment": "/* OMIT QUOTES */" } ], "comment": "/*\n * JsonQuotes -\n *\t\trepresentation of [KEEP|OMIT] QUOTES clause for JSON_QUERY()\n */\n" }, "JsonTableColumnType": { "values": [ { "comment": "" }, { "name": "JTC_FOR_ORDINALITY", "value": 0 }, { "name": "JTC_REGULAR", "value": 1 }, { "name": "JTC_EXISTS", "value": 2 }, { "name": "JTC_FORMATTED", "value": 3 }, { "name": "JTC_NESTED", "value": 4 } ], "comment": "/*\n * JsonTableColumnType -\n *\t\tenumeration of JSON_TABLE column types\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_PARAMETER_ACL", "value": 27 }, { "name": "OBJECT_POLICY", "value": 28 }, { "name": "OBJECT_PROCEDURE", "value": 29 }, { "name": "OBJECT_PUBLICATION", "value": 30 }, { "name": "OBJECT_PUBLICATION_NAMESPACE", "value": 31 }, { "name": "OBJECT_PUBLICATION_REL", "value": 32 }, { "name": "OBJECT_ROLE", "value": 33 }, { "name": "OBJECT_ROUTINE", "value": 34 }, { "name": "OBJECT_RULE", "value": 35 }, { "name": "OBJECT_SCHEMA", "value": 36 }, { "name": "OBJECT_SEQUENCE", "value": 37 }, { "name": "OBJECT_SUBSCRIPTION", "value": 38 }, { "name": "OBJECT_STATISTIC_EXT", "value": 39 }, { "name": "OBJECT_TABCONSTRAINT", "value": 40 }, { "name": "OBJECT_TABLE", "value": 41 }, { "name": "OBJECT_TABLESPACE", "value": 42 }, { "name": "OBJECT_TRANSFORM", "value": 43 }, { "name": "OBJECT_TRIGGER", "value": 44 }, { "name": "OBJECT_TSCONFIGURATION", "value": 45 }, { "name": "OBJECT_TSDICTIONARY", "value": 46 }, { "name": "OBJECT_TSPARSER", "value": 47 }, { "name": "OBJECT_TSTEMPLATE", "value": 48 }, { "name": "OBJECT_TYPE", "value": 49 }, { "name": "OBJECT_USER_MAPPING", "value": 50 }, { "name": "OBJECT_VIEW", "value": 51 } ], "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_AddColumnToView", "value": 1, "comment": "/* implicitly via CREATE OR REPLACE VIEW */" }, { "name": "AT_ColumnDefault", "value": 2, "comment": "/* alter column default */" }, { "name": "AT_CookedColumnDefault", "value": 3, "comment": "/* add a pre-cooked column default */" }, { "name": "AT_DropNotNull", "value": 4, "comment": "/* alter column drop not null */" }, { "name": "AT_SetNotNull", "value": 5, "comment": "/* alter column set not null */" }, { "name": "AT_SetExpression", "value": 6, "comment": "/* alter column set expression */" }, { "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_SetCompression", "value": 13, "comment": "/* alter column set compression */" }, { "name": "AT_DropColumn", "value": 14, "comment": "/* drop column */" }, { "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_ReAddConstraint", "value": 18, "comment": "/* internal to commands/tablecmds.c */" }, { "name": "AT_ReAddDomainConstraint", "value": 19, "comment": "/* internal to commands/tablecmds.c */" }, { "name": "AT_AlterConstraint", "value": 20, "comment": "/* alter constraint */" }, { "name": "AT_ValidateConstraint", "value": 21, "comment": "/* validate constraint */" }, { "name": "AT_AddIndexConstraint", "value": 22, "comment": "/* add constraint using existing index */" }, { "name": "AT_DropConstraint", "value": 23, "comment": "/* drop constraint */" }, { "name": "AT_ReAddComment", "value": 24, "comment": "/* internal to commands/tablecmds.c */" }, { "name": "AT_AlterColumnType", "value": 25, "comment": "/* alter column type */" }, { "name": "AT_AlterColumnGenericOptions", "value": 26, "comment": "/* alter column OPTIONS (...) */" }, { "name": "AT_ChangeOwner", "value": 27, "comment": "/* change owner */" }, { "name": "AT_ClusterOn", "value": 28, "comment": "/* CLUSTER ON */" }, { "name": "AT_DropCluster", "value": 29, "comment": "/* SET WITHOUT CLUSTER */" }, { "name": "AT_SetLogged", "value": 30, "comment": "/* SET LOGGED */" }, { "name": "AT_SetUnLogged", "value": 31, "comment": "/* SET UNLOGGED */" }, { "name": "AT_DropOids", "value": 32, "comment": "/* SET WITHOUT OIDS */" }, { "name": "AT_SetAccessMethod", "value": 33, "comment": "/* SET ACCESS METHOD */" }, { "name": "AT_SetTableSpace", "value": 34, "comment": "/* SET TABLESPACE */" }, { "name": "AT_SetRelOptions", "value": 35, "comment": "/* SET (...) -- AM specific parameters */" }, { "name": "AT_ResetRelOptions", "value": 36, "comment": "/* RESET (...) -- AM specific parameters */" }, { "name": "AT_ReplaceRelOptions", "value": 37, "comment": "/* replace reloption list in its entirety */" }, { "name": "AT_EnableTrig", "value": 38, "comment": "/* ENABLE TRIGGER name */" }, { "name": "AT_EnableAlwaysTrig", "value": 39, "comment": "/* ENABLE ALWAYS TRIGGER name */" }, { "name": "AT_EnableReplicaTrig", "value": 40, "comment": "/* ENABLE REPLICA TRIGGER name */" }, { "name": "AT_DisableTrig", "value": 41, "comment": "/* DISABLE TRIGGER name */" }, { "name": "AT_EnableTrigAll", "value": 42, "comment": "/* ENABLE TRIGGER ALL */" }, { "name": "AT_DisableTrigAll", "value": 43, "comment": "/* DISABLE TRIGGER ALL */" }, { "name": "AT_EnableTrigUser", "value": 44, "comment": "/* ENABLE TRIGGER USER */" }, { "name": "AT_DisableTrigUser", "value": 45, "comment": "/* DISABLE TRIGGER USER */" }, { "name": "AT_EnableRule", "value": 46, "comment": "/* ENABLE RULE name */" }, { "name": "AT_EnableAlwaysRule", "value": 47, "comment": "/* ENABLE ALWAYS RULE name */" }, { "name": "AT_EnableReplicaRule", "value": 48, "comment": "/* ENABLE REPLICA RULE name */" }, { "name": "AT_DisableRule", "value": 49, "comment": "/* DISABLE RULE name */" }, { "name": "AT_AddInherit", "value": 50, "comment": "/* INHERIT parent */" }, { "name": "AT_DropInherit", "value": 51, "comment": "/* NO INHERIT parent */" }, { "name": "AT_AddOf", "value": 52, "comment": "/* OF */" }, { "name": "AT_DropOf", "value": 53, "comment": "/* NOT OF */" }, { "name": "AT_ReplicaIdentity", "value": 54, "comment": "/* REPLICA IDENTITY */" }, { "name": "AT_EnableRowSecurity", "value": 55, "comment": "/* ENABLE ROW SECURITY */" }, { "name": "AT_DisableRowSecurity", "value": 56, "comment": "/* DISABLE ROW SECURITY */" }, { "name": "AT_ForceRowSecurity", "value": 57, "comment": "/* FORCE ROW SECURITY */" }, { "name": "AT_NoForceRowSecurity", "value": 58, "comment": "/* NO FORCE ROW SECURITY */" }, { "name": "AT_GenericOptions", "value": 59, "comment": "/* OPTIONS (...) */" }, { "name": "AT_AttachPartition", "value": 60, "comment": "/* ATTACH PARTITION */" }, { "name": "AT_DetachPartition", "value": 61, "comment": "/* DETACH PARTITION */" }, { "name": "AT_DetachPartitionFinalize", "value": 62, "comment": "/* DETACH PARTITION FINALIZE */" }, { "name": "AT_AddIdentity", "value": 63, "comment": "/* ADD IDENTITY */" }, { "name": "AT_SetIdentity", "value": 64, "comment": "/* SET identity column options */" }, { "name": "AT_DropIdentity", "value": 65, "comment": "/* DROP IDENTITY */" }, { "name": "AT_ReAddStatistics", "value": 66, "comment": "/* internal to commands/tablecmds.c */" } ], "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": "\t/* this is not used in pg_proc: */\n" }, { "name": "FUNC_PARAM_DEFAULT", "value": 100, "comment": "/* default; effectively same as IN */" } ], "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" }, "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": "/* ----------------------\n *\t\tREINDEX Statement\n * ----------------------\n */\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" }, "PublicationObjSpecType": { "values": [ { "comment": "" }, { "name": "PUBLICATIONOBJ_TABLE", "value": 0, "comment": "/* A table */" }, { "name": "PUBLICATIONOBJ_TABLES_IN_SCHEMA", "value": 1, "comment": "/* All tables in schema */" }, { "name": "PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA", "value": 2, "comment": "/* All tables in first element of\n\t\t\t\t\t\t\t\t\t\t\t * search_path */\n" }, { "name": "PUBLICATIONOBJ_CONTINUATION", "value": 3, "comment": "/* Continuation of previous type */" } ], "comment": "/*\n * Publication object type\n */\n" }, "AlterPublicationAction": { "values": [ { "comment": "" }, { "name": "AP_AddObjects", "value": 0, "comment": "/* add objects to publication */" }, { "name": "AP_DropObjects", "value": 1, "comment": "/* remove objects from publication */" }, { "name": "AP_SetObjects", "value": 2, "comment": "/* set list of objects */" } ], "comment": null }, "AlterSubscriptionType": { "values": [ { "comment": "" }, { "name": "ALTER_SUBSCRIPTION_OPTIONS", "value": 0 }, { "name": "ALTER_SUBSCRIPTION_CONNECTION", "value": 1 }, { "name": "ALTER_SUBSCRIPTION_SET_PUBLICATION", "value": 2 }, { "name": "ALTER_SUBSCRIPTION_ADD_PUBLICATION", "value": 3 }, { "name": "ALTER_SUBSCRIPTION_DROP_PUBLICATION", "value": 4 }, { "name": "ALTER_SUBSCRIPTION_REFRESH", "value": 5 }, { "name": "ALTER_SUBSCRIPTION_ENABLED", "value": 6 }, { "name": "ALTER_SUBSCRIPTION_SKIP", "value": 7 } ], "comment": null } }, "nodes/primnodes": { "OverridingKind": { "values": [ { "comment": "" }, { "name": "OVERRIDING_NOT_SET", "value": 0 }, { "name": "OVERRIDING_USER_VALUE", "value": 1 }, { "name": "OVERRIDING_SYSTEM_VALUE", "value": 2 } ], "comment": "/*-------------------------------------------------------------------------\n *\n * primnodes.h\n *\t Definitions for \"primitive\" node types, those that are used in more\n *\t than one of the parse/plan/execute stages of the query pipeline.\n *\t Currently, these are mostly nodes for executable expressions\n *\t and join trees.\n *\n *\n * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group\n * Portions Copyright (c) 1994, Regents of the University of California\n *\n * src/include/nodes/primnodes.h\n *\n *-------------------------------------------------------------------------\n */\n" }, "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" }, "TableFuncType": { "values": [ { "comment": "" }, { "name": "TFT_XMLTABLE", "value": 0 }, { "name": "TFT_JSON_TABLE", "value": 1 } ], "comment": null }, "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_PLPGSQL", "value": 2, "comment": "/* if no assignment cast, use CoerceViaIO */" }, { "name": "COERCION_EXPLICIT", "value": 3, "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 */" }, { "name": "COERCE_SQL_SYNTAX", "value": 3, "comment": "/* display with SQL-mandated special syntax */" } ], "comment": "/*\n * CoercionForm - how to display a FuncExpr or related node\n *\n * \"Coercion\" is a bit of a misnomer, since this value records other\n * special syntaxes besides casts, but for now we'll keep this naming.\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, indent) */" }, { "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 }, "JsonEncoding": { "values": [ { "comment": "" }, { "name": "JS_ENC_DEFAULT", "value": 0, "comment": "/* unspecified */" }, { "name": "JS_ENC_UTF8", "value": 1 }, { "name": "JS_ENC_UTF16", "value": 2 }, { "name": "JS_ENC_UTF32", "value": 3 } ], "comment": "/*\n * JsonEncoding -\n *\t\trepresentation of JSON ENCODING clause\n */\n" }, "JsonFormatType": { "values": [ { "comment": "" }, { "name": "JS_FORMAT_DEFAULT", "value": 0, "comment": "/* unspecified */" }, { "name": "JS_FORMAT_JSON", "value": 1, "comment": "/* FORMAT JSON [ENCODING ...] */" }, { "name": "JS_FORMAT_JSONB", "value": 2, "comment": "/* implicit internal format for RETURNING\n\t\t\t\t\t\t\t\t * jsonb */\n" } ], "comment": "/*\n * JsonFormatType -\n *\t\tenumeration of JSON formats used in JSON FORMAT clause\n */\n" }, "JsonConstructorType": { "values": [ { "comment": "" }, { "name": "JSCTOR_JSON_OBJECT", "value": 1 }, { "name": "JSCTOR_JSON_ARRAY", "value": 2 }, { "name": "JSCTOR_JSON_OBJECTAGG", "value": 3 }, { "name": "JSCTOR_JSON_ARRAYAGG", "value": 4 }, { "name": "JSCTOR_JSON_PARSE", "value": 5 }, { "name": "JSCTOR_JSON_SCALAR", "value": 6 }, { "name": "JSCTOR_JSON_SERIALIZE", "value": 7 } ], "comment": null }, "JsonValueType": { "values": [ { "comment": "" }, { "name": "JS_TYPE_ANY", "value": 0, "comment": "/* IS JSON [VALUE] */" }, { "name": "JS_TYPE_OBJECT", "value": 1, "comment": "/* IS JSON OBJECT */" }, { "name": "JS_TYPE_ARRAY", "value": 2, "comment": "/* IS JSON ARRAY */" }, { "name": "JS_TYPE_SCALAR", "value": 3, "comment": "/* IS JSON SCALAR */" } ], "comment": "/*\n * JsonValueType -\n *\t\trepresentation of JSON item type in IS JSON predicate\n */\n" }, "JsonWrapper": { "values": [ { "comment": "" }, { "name": "JSW_UNSPEC", "value": 0 }, { "name": "JSW_NONE", "value": 1 }, { "name": "JSW_CONDITIONAL", "value": 2 }, { "name": "JSW_UNCONDITIONAL", "value": 3 } ], "comment": "/*\n * JsonWrapper -\n *\t\trepresentation of WRAPPER clause for JSON_QUERY()\n */\n" }, "JsonBehaviorType": { "values": [ { "comment": "" }, { "name": "JSON_BEHAVIOR_NULL", "value": 0 }, { "name": "JSON_BEHAVIOR_ERROR", "value": 1 }, { "name": "JSON_BEHAVIOR_EMPTY", "value": 2 }, { "name": "JSON_BEHAVIOR_TRUE", "value": 3 }, { "name": "JSON_BEHAVIOR_FALSE", "value": 4 }, { "name": "JSON_BEHAVIOR_UNKNOWN", "value": 5 }, { "name": "JSON_BEHAVIOR_EMPTY_ARRAY", "value": 6 }, { "name": "JSON_BEHAVIOR_EMPTY_OBJECT", "value": 7 }, { "name": "JSON_BEHAVIOR_DEFAULT", "value": 8 } ], "comment": "/*\n * JsonBehaviorType -\n *\t\tenumeration of behavior types used in SQL/JSON ON ERROR/EMPTY clauses\n *\n * \t\tIf enum members are reordered, get_json_behavior() from ruleutils.c\n * \t\tmust be updated accordingly.\n */\n" }, "JsonExprOp": { "values": [ { "comment": "" }, { "name": "JSON_EXISTS_OP", "value": 0, "comment": "/* JSON_EXISTS() */" }, { "name": "JSON_QUERY_OP", "value": 1, "comment": "/* JSON_QUERY() */" }, { "name": "JSON_VALUE_OP", "value": 2, "comment": "/* JSON_VALUE() */" }, { "name": "JSON_TABLE_OP", "value": 3, "comment": "/* JSON_TABLE() */" } ], "comment": "/*\n * JsonExprOp -\n *\t\tenumeration of SQL/JSON query function types\n */\n" }, "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" }, "MergeMatchKind": { "values": [ { "comment": "" }, { "name": "MERGE_WHEN_MATCHED", "value": 0 }, { "name": "MERGE_WHEN_NOT_MATCHED_BY_SOURCE", "value": 1 }, { "name": "MERGE_WHEN_NOT_MATCHED_BY_TARGET", "value": 2 } ], "comment": "/*\n * MergeAction\n *\n * Transformed representation of a WHEN clause in a MERGE statement\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": "" }, { "name": "T_List", "value": 1 }, { "name": "T_Alias", "value": 2 }, { "name": "T_RangeVar", "value": 3 }, { "name": "T_TableFunc", "value": 4 }, { "name": "T_IntoClause", "value": 5 }, { "name": "T_Var", "value": 6 }, { "name": "T_Const", "value": 7 }, { "name": "T_Param", "value": 8 }, { "name": "T_Aggref", "value": 9 }, { "name": "T_GroupingFunc", "value": 10 }, { "name": "T_WindowFunc", "value": 11 }, { "name": "T_WindowFuncRunCondition", "value": 12 }, { "name": "T_MergeSupportFunc", "value": 13 }, { "name": "T_SubscriptingRef", "value": 14 }, { "name": "T_FuncExpr", "value": 15 }, { "name": "T_NamedArgExpr", "value": 16 }, { "name": "T_OpExpr", "value": 17 }, { "name": "T_DistinctExpr", "value": 18 }, { "name": "T_NullIfExpr", "value": 19 }, { "name": "T_ScalarArrayOpExpr", "value": 20 }, { "name": "T_BoolExpr", "value": 21 }, { "name": "T_SubLink", "value": 22 }, { "name": "T_SubPlan", "value": 23 }, { "name": "T_AlternativeSubPlan", "value": 24 }, { "name": "T_FieldSelect", "value": 25 }, { "name": "T_FieldStore", "value": 26 }, { "name": "T_RelabelType", "value": 27 }, { "name": "T_CoerceViaIO", "value": 28 }, { "name": "T_ArrayCoerceExpr", "value": 29 }, { "name": "T_ConvertRowtypeExpr", "value": 30 }, { "name": "T_CollateExpr", "value": 31 }, { "name": "T_CaseExpr", "value": 32 }, { "name": "T_CaseWhen", "value": 33 }, { "name": "T_CaseTestExpr", "value": 34 }, { "name": "T_ArrayExpr", "value": 35 }, { "name": "T_RowExpr", "value": 36 }, { "name": "T_RowCompareExpr", "value": 37 }, { "name": "T_CoalesceExpr", "value": 38 }, { "name": "T_MinMaxExpr", "value": 39 }, { "name": "T_SQLValueFunction", "value": 40 }, { "name": "T_XmlExpr", "value": 41 }, { "name": "T_JsonFormat", "value": 42 }, { "name": "T_JsonReturning", "value": 43 }, { "name": "T_JsonValueExpr", "value": 44 }, { "name": "T_JsonConstructorExpr", "value": 45 }, { "name": "T_JsonIsPredicate", "value": 46 }, { "name": "T_JsonBehavior", "value": 47 }, { "name": "T_JsonExpr", "value": 48 }, { "name": "T_JsonTablePath", "value": 49 }, { "name": "T_JsonTablePathScan", "value": 50 }, { "name": "T_JsonTableSiblingJoin", "value": 51 }, { "name": "T_NullTest", "value": 52 }, { "name": "T_BooleanTest", "value": 53 }, { "name": "T_MergeAction", "value": 54 }, { "name": "T_CoerceToDomain", "value": 55 }, { "name": "T_CoerceToDomainValue", "value": 56 }, { "name": "T_SetToDefault", "value": 57 }, { "name": "T_CurrentOfExpr", "value": 58 }, { "name": "T_NextValueExpr", "value": 59 }, { "name": "T_InferenceElem", "value": 60 }, { "name": "T_TargetEntry", "value": 61 }, { "name": "T_RangeTblRef", "value": 62 }, { "name": "T_JoinExpr", "value": 63 }, { "name": "T_FromExpr", "value": 64 }, { "name": "T_OnConflictExpr", "value": 65 }, { "name": "T_Query", "value": 66 }, { "name": "T_TypeName", "value": 67 }, { "name": "T_ColumnRef", "value": 68 }, { "name": "T_ParamRef", "value": 69 }, { "name": "T_A_Expr", "value": 70 }, { "name": "T_A_Const", "value": 71 }, { "name": "T_TypeCast", "value": 72 }, { "name": "T_CollateClause", "value": 73 }, { "name": "T_RoleSpec", "value": 74 }, { "name": "T_FuncCall", "value": 75 }, { "name": "T_A_Star", "value": 76 }, { "name": "T_A_Indices", "value": 77 }, { "name": "T_A_Indirection", "value": 78 }, { "name": "T_A_ArrayExpr", "value": 79 }, { "name": "T_ResTarget", "value": 80 }, { "name": "T_MultiAssignRef", "value": 81 }, { "name": "T_SortBy", "value": 82 }, { "name": "T_WindowDef", "value": 83 }, { "name": "T_RangeSubselect", "value": 84 }, { "name": "T_RangeFunction", "value": 85 }, { "name": "T_RangeTableFunc", "value": 86 }, { "name": "T_RangeTableFuncCol", "value": 87 }, { "name": "T_RangeTableSample", "value": 88 }, { "name": "T_ColumnDef", "value": 89 }, { "name": "T_TableLikeClause", "value": 90 }, { "name": "T_IndexElem", "value": 91 }, { "name": "T_DefElem", "value": 92 }, { "name": "T_LockingClause", "value": 93 }, { "name": "T_XmlSerialize", "value": 94 }, { "name": "T_PartitionElem", "value": 95 }, { "name": "T_PartitionSpec", "value": 96 }, { "name": "T_PartitionBoundSpec", "value": 97 }, { "name": "T_PartitionRangeDatum", "value": 98 }, { "name": "T_SinglePartitionSpec", "value": 99 }, { "name": "T_PartitionCmd", "value": 100 }, { "name": "T_RangeTblEntry", "value": 101 }, { "name": "T_RTEPermissionInfo", "value": 102 }, { "name": "T_RangeTblFunction", "value": 103 }, { "name": "T_TableSampleClause", "value": 104 }, { "name": "T_WithCheckOption", "value": 105 }, { "name": "T_SortGroupClause", "value": 106 }, { "name": "T_GroupingSet", "value": 107 }, { "name": "T_WindowClause", "value": 108 }, { "name": "T_RowMarkClause", "value": 109 }, { "name": "T_WithClause", "value": 110 }, { "name": "T_InferClause", "value": 111 }, { "name": "T_OnConflictClause", "value": 112 }, { "name": "T_CTESearchClause", "value": 113 }, { "name": "T_CTECycleClause", "value": 114 }, { "name": "T_CommonTableExpr", "value": 115 }, { "name": "T_MergeWhenClause", "value": 116 }, { "name": "T_TriggerTransition", "value": 117 }, { "name": "T_JsonOutput", "value": 118 }, { "name": "T_JsonArgument", "value": 119 }, { "name": "T_JsonFuncExpr", "value": 120 }, { "name": "T_JsonTablePathSpec", "value": 121 }, { "name": "T_JsonTable", "value": 122 }, { "name": "T_JsonTableColumn", "value": 123 }, { "name": "T_JsonKeyValue", "value": 124 }, { "name": "T_JsonParseExpr", "value": 125 }, { "name": "T_JsonScalarExpr", "value": 126 }, { "name": "T_JsonSerializeExpr", "value": 127 }, { "name": "T_JsonObjectConstructor", "value": 128 }, { "name": "T_JsonArrayConstructor", "value": 129 }, { "name": "T_JsonArrayQueryConstructor", "value": 130 }, { "name": "T_JsonAggConstructor", "value": 131 }, { "name": "T_JsonObjectAgg", "value": 132 }, { "name": "T_JsonArrayAgg", "value": 133 }, { "name": "T_RawStmt", "value": 134 }, { "name": "T_InsertStmt", "value": 135 }, { "name": "T_DeleteStmt", "value": 136 }, { "name": "T_UpdateStmt", "value": 137 }, { "name": "T_MergeStmt", "value": 138 }, { "name": "T_SelectStmt", "value": 139 }, { "name": "T_SetOperationStmt", "value": 140 }, { "name": "T_ReturnStmt", "value": 141 }, { "name": "T_PLAssignStmt", "value": 142 }, { "name": "T_CreateSchemaStmt", "value": 143 }, { "name": "T_AlterTableStmt", "value": 144 }, { "name": "T_ReplicaIdentityStmt", "value": 145 }, { "name": "T_AlterTableCmd", "value": 146 }, { "name": "T_AlterCollationStmt", "value": 147 }, { "name": "T_AlterDomainStmt", "value": 148 }, { "name": "T_GrantStmt", "value": 149 }, { "name": "T_ObjectWithArgs", "value": 150 }, { "name": "T_AccessPriv", "value": 151 }, { "name": "T_GrantRoleStmt", "value": 152 }, { "name": "T_AlterDefaultPrivilegesStmt", "value": 153 }, { "name": "T_CopyStmt", "value": 154 }, { "name": "T_VariableSetStmt", "value": 155 }, { "name": "T_VariableShowStmt", "value": 156 }, { "name": "T_CreateStmt", "value": 157 }, { "name": "T_Constraint", "value": 158 }, { "name": "T_CreateTableSpaceStmt", "value": 159 }, { "name": "T_DropTableSpaceStmt", "value": 160 }, { "name": "T_AlterTableSpaceOptionsStmt", "value": 161 }, { "name": "T_AlterTableMoveAllStmt", "value": 162 }, { "name": "T_CreateExtensionStmt", "value": 163 }, { "name": "T_AlterExtensionStmt", "value": 164 }, { "name": "T_AlterExtensionContentsStmt", "value": 165 }, { "name": "T_CreateFdwStmt", "value": 166 }, { "name": "T_AlterFdwStmt", "value": 167 }, { "name": "T_CreateForeignServerStmt", "value": 168 }, { "name": "T_AlterForeignServerStmt", "value": 169 }, { "name": "T_CreateForeignTableStmt", "value": 170 }, { "name": "T_CreateUserMappingStmt", "value": 171 }, { "name": "T_AlterUserMappingStmt", "value": 172 }, { "name": "T_DropUserMappingStmt", "value": 173 }, { "name": "T_ImportForeignSchemaStmt", "value": 174 }, { "name": "T_CreatePolicyStmt", "value": 175 }, { "name": "T_AlterPolicyStmt", "value": 176 }, { "name": "T_CreateAmStmt", "value": 177 }, { "name": "T_CreateTrigStmt", "value": 178 }, { "name": "T_CreateEventTrigStmt", "value": 179 }, { "name": "T_AlterEventTrigStmt", "value": 180 }, { "name": "T_CreatePLangStmt", "value": 181 }, { "name": "T_CreateRoleStmt", "value": 182 }, { "name": "T_AlterRoleStmt", "value": 183 }, { "name": "T_AlterRoleSetStmt", "value": 184 }, { "name": "T_DropRoleStmt", "value": 185 }, { "name": "T_CreateSeqStmt", "value": 186 }, { "name": "T_AlterSeqStmt", "value": 187 }, { "name": "T_DefineStmt", "value": 188 }, { "name": "T_CreateDomainStmt", "value": 189 }, { "name": "T_CreateOpClassStmt", "value": 190 }, { "name": "T_CreateOpClassItem", "value": 191 }, { "name": "T_CreateOpFamilyStmt", "value": 192 }, { "name": "T_AlterOpFamilyStmt", "value": 193 }, { "name": "T_DropStmt", "value": 194 }, { "name": "T_TruncateStmt", "value": 195 }, { "name": "T_CommentStmt", "value": 196 }, { "name": "T_SecLabelStmt", "value": 197 }, { "name": "T_DeclareCursorStmt", "value": 198 }, { "name": "T_ClosePortalStmt", "value": 199 }, { "name": "T_FetchStmt", "value": 200 }, { "name": "T_IndexStmt", "value": 201 }, { "name": "T_CreateStatsStmt", "value": 202 }, { "name": "T_StatsElem", "value": 203 }, { "name": "T_AlterStatsStmt", "value": 204 }, { "name": "T_CreateFunctionStmt", "value": 205 }, { "name": "T_FunctionParameter", "value": 206 }, { "name": "T_AlterFunctionStmt", "value": 207 }, { "name": "T_DoStmt", "value": 208 }, { "name": "T_InlineCodeBlock", "value": 209 }, { "name": "T_CallStmt", "value": 210 }, { "name": "T_CallContext", "value": 211 }, { "name": "T_RenameStmt", "value": 212 }, { "name": "T_AlterObjectDependsStmt", "value": 213 }, { "name": "T_AlterObjectSchemaStmt", "value": 214 }, { "name": "T_AlterOwnerStmt", "value": 215 }, { "name": "T_AlterOperatorStmt", "value": 216 }, { "name": "T_AlterTypeStmt", "value": 217 }, { "name": "T_RuleStmt", "value": 218 }, { "name": "T_NotifyStmt", "value": 219 }, { "name": "T_ListenStmt", "value": 220 }, { "name": "T_UnlistenStmt", "value": 221 }, { "name": "T_TransactionStmt", "value": 222 }, { "name": "T_CompositeTypeStmt", "value": 223 }, { "name": "T_CreateEnumStmt", "value": 224 }, { "name": "T_CreateRangeStmt", "value": 225 }, { "name": "T_AlterEnumStmt", "value": 226 }, { "name": "T_ViewStmt", "value": 227 }, { "name": "T_LoadStmt", "value": 228 }, { "name": "T_CreatedbStmt", "value": 229 }, { "name": "T_AlterDatabaseStmt", "value": 230 }, { "name": "T_AlterDatabaseRefreshCollStmt", "value": 231 }, { "name": "T_AlterDatabaseSetStmt", "value": 232 }, { "name": "T_DropdbStmt", "value": 233 }, { "name": "T_AlterSystemStmt", "value": 234 }, { "name": "T_ClusterStmt", "value": 235 }, { "name": "T_VacuumStmt", "value": 236 }, { "name": "T_VacuumRelation", "value": 237 }, { "name": "T_ExplainStmt", "value": 238 }, { "name": "T_CreateTableAsStmt", "value": 239 }, { "name": "T_RefreshMatViewStmt", "value": 240 }, { "name": "T_CheckPointStmt", "value": 241 }, { "name": "T_DiscardStmt", "value": 242 }, { "name": "T_LockStmt", "value": 243 }, { "name": "T_ConstraintsSetStmt", "value": 244 }, { "name": "T_ReindexStmt", "value": 245 }, { "name": "T_CreateConversionStmt", "value": 246 }, { "name": "T_CreateCastStmt", "value": 247 }, { "name": "T_CreateTransformStmt", "value": 248 }, { "name": "T_PrepareStmt", "value": 249 }, { "name": "T_ExecuteStmt", "value": 250 }, { "name": "T_DeallocateStmt", "value": 251 }, { "name": "T_DropOwnedStmt", "value": 252 }, { "name": "T_ReassignOwnedStmt", "value": 253 }, { "name": "T_AlterTSDictionaryStmt", "value": 254 }, { "name": "T_AlterTSConfigurationStmt", "value": 255 }, { "name": "T_PublicationTable", "value": 256 }, { "name": "T_PublicationObjSpec", "value": 257 }, { "name": "T_CreatePublicationStmt", "value": 258 }, { "name": "T_AlterPublicationStmt", "value": 259 }, { "name": "T_CreateSubscriptionStmt", "value": 260 }, { "name": "T_AlterSubscriptionStmt", "value": 261 }, { "name": "T_DropSubscriptionStmt", "value": 262 }, { "name": "T_PlannerGlobal", "value": 263 }, { "name": "T_PlannerInfo", "value": 264 }, { "name": "T_RelOptInfo", "value": 265 }, { "name": "T_IndexOptInfo", "value": 266 }, { "name": "T_ForeignKeyOptInfo", "value": 267 }, { "name": "T_StatisticExtInfo", "value": 268 }, { "name": "T_JoinDomain", "value": 269 }, { "name": "T_EquivalenceClass", "value": 270 }, { "name": "T_EquivalenceMember", "value": 271 }, { "name": "T_PathKey", "value": 272 }, { "name": "T_GroupByOrdering", "value": 273 }, { "name": "T_PathTarget", "value": 274 }, { "name": "T_ParamPathInfo", "value": 275 }, { "name": "T_Path", "value": 276 }, { "name": "T_IndexPath", "value": 277 }, { "name": "T_IndexClause", "value": 278 }, { "name": "T_BitmapHeapPath", "value": 279 }, { "name": "T_BitmapAndPath", "value": 280 }, { "name": "T_BitmapOrPath", "value": 281 }, { "name": "T_TidPath", "value": 282 }, { "name": "T_TidRangePath", "value": 283 }, { "name": "T_SubqueryScanPath", "value": 284 }, { "name": "T_ForeignPath", "value": 285 }, { "name": "T_CustomPath", "value": 286 }, { "name": "T_AppendPath", "value": 287 }, { "name": "T_MergeAppendPath", "value": 288 }, { "name": "T_GroupResultPath", "value": 289 }, { "name": "T_MaterialPath", "value": 290 }, { "name": "T_MemoizePath", "value": 291 }, { "name": "T_UniquePath", "value": 292 }, { "name": "T_GatherPath", "value": 293 }, { "name": "T_GatherMergePath", "value": 294 }, { "name": "T_NestPath", "value": 295 }, { "name": "T_MergePath", "value": 296 }, { "name": "T_HashPath", "value": 297 }, { "name": "T_ProjectionPath", "value": 298 }, { "name": "T_ProjectSetPath", "value": 299 }, { "name": "T_SortPath", "value": 300 }, { "name": "T_IncrementalSortPath", "value": 301 }, { "name": "T_GroupPath", "value": 302 }, { "name": "T_UpperUniquePath", "value": 303 }, { "name": "T_AggPath", "value": 304 }, { "name": "T_GroupingSetData", "value": 305 }, { "name": "T_RollupData", "value": 306 }, { "name": "T_GroupingSetsPath", "value": 307 }, { "name": "T_MinMaxAggPath", "value": 308 }, { "name": "T_WindowAggPath", "value": 309 }, { "name": "T_SetOpPath", "value": 310 }, { "name": "T_RecursiveUnionPath", "value": 311 }, { "name": "T_LockRowsPath", "value": 312 }, { "name": "T_ModifyTablePath", "value": 313 }, { "name": "T_LimitPath", "value": 314 }, { "name": "T_RestrictInfo", "value": 315 }, { "name": "T_PlaceHolderVar", "value": 316 }, { "name": "T_SpecialJoinInfo", "value": 317 }, { "name": "T_OuterJoinClauseInfo", "value": 318 }, { "name": "T_AppendRelInfo", "value": 319 }, { "name": "T_RowIdentityVarInfo", "value": 320 }, { "name": "T_PlaceHolderInfo", "value": 321 }, { "name": "T_MinMaxAggInfo", "value": 322 }, { "name": "T_PlannerParamItem", "value": 323 }, { "name": "T_AggInfo", "value": 324 }, { "name": "T_AggTransInfo", "value": 325 }, { "name": "T_PlannedStmt", "value": 326 }, { "name": "T_Result", "value": 327 }, { "name": "T_ProjectSet", "value": 328 }, { "name": "T_ModifyTable", "value": 329 }, { "name": "T_Append", "value": 330 }, { "name": "T_MergeAppend", "value": 331 }, { "name": "T_RecursiveUnion", "value": 332 }, { "name": "T_BitmapAnd", "value": 333 }, { "name": "T_BitmapOr", "value": 334 }, { "name": "T_SeqScan", "value": 335 }, { "name": "T_SampleScan", "value": 336 }, { "name": "T_IndexScan", "value": 337 }, { "name": "T_IndexOnlyScan", "value": 338 }, { "name": "T_BitmapIndexScan", "value": 339 }, { "name": "T_BitmapHeapScan", "value": 340 }, { "name": "T_TidScan", "value": 341 }, { "name": "T_TidRangeScan", "value": 342 }, { "name": "T_SubqueryScan", "value": 343 }, { "name": "T_FunctionScan", "value": 344 }, { "name": "T_ValuesScan", "value": 345 }, { "name": "T_TableFuncScan", "value": 346 }, { "name": "T_CteScan", "value": 347 }, { "name": "T_NamedTuplestoreScan", "value": 348 }, { "name": "T_WorkTableScan", "value": 349 }, { "name": "T_ForeignScan", "value": 350 }, { "name": "T_CustomScan", "value": 351 }, { "name": "T_NestLoop", "value": 352 }, { "name": "T_NestLoopParam", "value": 353 }, { "name": "T_MergeJoin", "value": 354 }, { "name": "T_HashJoin", "value": 355 }, { "name": "T_Material", "value": 356 }, { "name": "T_Memoize", "value": 357 }, { "name": "T_Sort", "value": 358 }, { "name": "T_IncrementalSort", "value": 359 }, { "name": "T_Group", "value": 360 }, { "name": "T_Agg", "value": 361 }, { "name": "T_WindowAgg", "value": 362 }, { "name": "T_Unique", "value": 363 }, { "name": "T_Gather", "value": 364 }, { "name": "T_GatherMerge", "value": 365 }, { "name": "T_Hash", "value": 366 }, { "name": "T_SetOp", "value": 367 }, { "name": "T_LockRows", "value": 368 }, { "name": "T_Limit", "value": 369 }, { "name": "T_PlanRowMark", "value": 370 }, { "name": "T_PartitionPruneInfo", "value": 371 }, { "name": "T_PartitionedRelPruneInfo", "value": 372 }, { "name": "T_PartitionPruneStepOp", "value": 373 }, { "name": "T_PartitionPruneStepCombine", "value": 374 }, { "name": "T_PlanInvalItem", "value": 375 }, { "name": "T_ExprState", "value": 376 }, { "name": "T_IndexInfo", "value": 377 }, { "name": "T_ExprContext", "value": 378 }, { "name": "T_ReturnSetInfo", "value": 379 }, { "name": "T_ProjectionInfo", "value": 380 }, { "name": "T_JunkFilter", "value": 381 }, { "name": "T_OnConflictSetState", "value": 382 }, { "name": "T_MergeActionState", "value": 383 }, { "name": "T_ResultRelInfo", "value": 384 }, { "name": "T_EState", "value": 385 }, { "name": "T_WindowFuncExprState", "value": 386 }, { "name": "T_SetExprState", "value": 387 }, { "name": "T_SubPlanState", "value": 388 }, { "name": "T_DomainConstraintState", "value": 389 }, { "name": "T_ResultState", "value": 390 }, { "name": "T_ProjectSetState", "value": 391 }, { "name": "T_ModifyTableState", "value": 392 }, { "name": "T_AppendState", "value": 393 }, { "name": "T_MergeAppendState", "value": 394 }, { "name": "T_RecursiveUnionState", "value": 395 }, { "name": "T_BitmapAndState", "value": 396 }, { "name": "T_BitmapOrState", "value": 397 }, { "name": "T_ScanState", "value": 398 }, { "name": "T_SeqScanState", "value": 399 }, { "name": "T_SampleScanState", "value": 400 }, { "name": "T_IndexScanState", "value": 401 }, { "name": "T_IndexOnlyScanState", "value": 402 }, { "name": "T_BitmapIndexScanState", "value": 403 }, { "name": "T_BitmapHeapScanState", "value": 404 }, { "name": "T_TidScanState", "value": 405 }, { "name": "T_TidRangeScanState", "value": 406 }, { "name": "T_SubqueryScanState", "value": 407 }, { "name": "T_FunctionScanState", "value": 408 }, { "name": "T_ValuesScanState", "value": 409 }, { "name": "T_TableFuncScanState", "value": 410 }, { "name": "T_CteScanState", "value": 411 }, { "name": "T_NamedTuplestoreScanState", "value": 412 }, { "name": "T_WorkTableScanState", "value": 413 }, { "name": "T_ForeignScanState", "value": 414 }, { "name": "T_CustomScanState", "value": 415 }, { "name": "T_JoinState", "value": 416 }, { "name": "T_NestLoopState", "value": 417 }, { "name": "T_MergeJoinState", "value": 418 }, { "name": "T_HashJoinState", "value": 419 }, { "name": "T_MaterialState", "value": 420 }, { "name": "T_MemoizeState", "value": 421 }, { "name": "T_SortState", "value": 422 }, { "name": "T_IncrementalSortState", "value": 423 }, { "name": "T_GroupState", "value": 424 }, { "name": "T_AggState", "value": 425 }, { "name": "T_WindowAggState", "value": 426 }, { "name": "T_UniqueState", "value": 427 }, { "name": "T_GatherState", "value": 428 }, { "name": "T_GatherMergeState", "value": 429 }, { "name": "T_HashState", "value": 430 }, { "name": "T_SetOpState", "value": 431 }, { "name": "T_LockRowsState", "value": 432 }, { "name": "T_LimitState", "value": 433 }, { "name": "T_IndexAmRoutine", "value": 434 }, { "name": "T_TableAmRoutine", "value": 435 }, { "name": "T_TsmRoutine", "value": 436 }, { "name": "T_EventTriggerData", "value": 437 }, { "name": "T_TriggerData", "value": 438 }, { "name": "T_TupleTableSlot", "value": 439 }, { "name": "T_FdwRoutine", "value": 440 }, { "name": "T_Bitmapset", "value": 441 }, { "name": "T_ExtensibleNode", "value": 442 }, { "name": "T_ErrorSaveContext", "value": 443 }, { "name": "T_IdentifySystemCmd", "value": 444 }, { "name": "T_BaseBackupCmd", "value": 445 }, { "name": "T_CreateReplicationSlotCmd", "value": 446 }, { "name": "T_DropReplicationSlotCmd", "value": 447 }, { "name": "T_AlterReplicationSlotCmd", "value": 448 }, { "name": "T_StartReplicationCmd", "value": 449 }, { "name": "T_ReadReplicationSlotCmd", "value": 450 }, { "name": "T_TimeLineHistoryCmd", "value": 451 }, { "name": "T_UploadManifestCmd", "value": 452 }, { "name": "T_SupportRequestSimplify", "value": 453 }, { "name": "T_SupportRequestSelectivity", "value": 454 }, { "name": "T_SupportRequestCost", "value": 455 }, { "name": "T_SupportRequestRows", "value": 456 }, { "name": "T_SupportRequestIndexCondition", "value": 457 }, { "name": "T_SupportRequestWFuncMonotonic", "value": 458 }, { "name": "T_SupportRequestOptimizeWindowClause", "value": 459 }, { "name": "T_Integer", "value": 460 }, { "name": "T_Float", "value": 461 }, { "name": "T_Boolean", "value": 462 }, { "name": "T_String", "value": 463 }, { "name": "T_BitString", "value": 464 }, { "name": "T_ForeignKeyCacheInfo", "value": 465 }, { "name": "T_IntList", "value": 466 }, { "name": "T_OidList", "value": 467 }, { "name": "T_XidList", "value": 468 }, { "name": "T_AllocSetContext", "value": 469 }, { "name": "T_GenerationContext", "value": 470 }, { "name": "T_SlabContext", "value": 471 }, { "name": "T_BumpContext", "value": 472 }, { "name": "T_TIDBitmap", "value": 473 }, { "name": "T_WindowObjectData", "value": 474 } ], "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, "comment": "/* delete stmt */" }, { "name": "CMD_MERGE", "value": 5, "comment": "/* merge stmt */" }, { "name": "CMD_UTILITY", "value": 6, "comment": "/* cmds like create, destroy, copy, vacuum,\n\t\t\t\t\t\t\t\t * etc. */\n" }, { "name": "CMD_NOTHING", "value": 7, "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 */" }, { "name": "JOIN_RIGHT_ANTI", "value": 6, "comment": "/* 1 copy of each RHS 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": 7, "comment": "/* LHS path must be made unique */" }, { "name": "JOIN_UNIQUE_INNER", "value": 8, "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": { }, "postgres_ext": { }, "commands/vacuum": { "VacOptValue": { "values": [ { "comment": "" }, { "name": "VACOPTVALUE_UNSPECIFIED", "value": 0 }, { "name": "VACOPTVALUE_AUTO", "value": 1 }, { "name": "VACOPTVALUE_DISABLED", "value": 2 }, { "name": "VACOPTVALUE_ENABLED", "value": 3 } ], "comment": "/*\n * Values used by index_cleanup and truncate params.\n *\n * VACOPTVALUE_UNSPECIFIED is used as an initial placeholder when VACUUM\n * command has no explicit value. When that happens the final usable value\n * comes from the corresponding reloption (though the reloption default is\n * usually used).\n */\n" } }, "storage/block": { }, "access/sdir": { "ScanDirection": { "values": [ { "comment": "" }, { "name": "BackwardScanDirection", "value": 0 }, { "name": "NoMovementScanDirection", "value": 0 }, { "name": "ForwardScanDirection", "value": 1 } ], "comment": "/*\n * Defines the direction for scanning a table or an index. Scans are never\n * invoked using NoMovementScanDirectionScans. For convenience, we use the\n * values -1 and 1 for backward and forward scans. This allows us to perform\n * a few mathematical tricks such as what is done in ScanDirectionCombine.\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: If you add some encoding don't forget to update\n *\t\t\tthe pg_enc2name_tbl[] array (in src/common/encnames.c),\n *\t\t\tthe pg_enc2gettext_tbl[] array (in src/common/encnames.c) and\n *\t\t\tthe pg_wchar_table[] array (in src/common/wchar.c) and 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": "ABSENT", "value": 278 }, { "name": "ABSOLUTE_P", "value": 279 }, { "name": "ACCESS", "value": 280 }, { "name": "ACTION", "value": 281 }, { "name": "ADD_P", "value": 282 }, { "name": "ADMIN", "value": 283 }, { "name": "AFTER", "value": 284 }, { "name": "AGGREGATE", "value": 285 }, { "name": "ALL", "value": 286 }, { "name": "ALSO", "value": 287 }, { "name": "ALTER", "value": 288 }, { "name": "ALWAYS", "value": 289 }, { "name": "ANALYSE", "value": 290 }, { "name": "ANALYZE", "value": 291 }, { "name": "AND", "value": 292 }, { "name": "ANY", "value": 293 }, { "name": "ARRAY", "value": 294 }, { "name": "AS", "value": 295 }, { "name": "ASC", "value": 296 }, { "name": "ASENSITIVE", "value": 297 }, { "name": "ASSERTION", "value": 298 }, { "name": "ASSIGNMENT", "value": 299 }, { "name": "ASYMMETRIC", "value": 300 }, { "name": "ATOMIC", "value": 301 }, { "name": "AT", "value": 302 }, { "name": "ATTACH", "value": 303 }, { "name": "ATTRIBUTE", "value": 304 }, { "name": "AUTHORIZATION", "value": 305 }, { "name": "BACKWARD", "value": 306 }, { "name": "BEFORE", "value": 307 }, { "name": "BEGIN_P", "value": 308 }, { "name": "BETWEEN", "value": 309 }, { "name": "BIGINT", "value": 310 }, { "name": "BINARY", "value": 311 }, { "name": "BIT", "value": 312 }, { "name": "BOOLEAN_P", "value": 313 }, { "name": "BOTH", "value": 314 }, { "name": "BREADTH", "value": 315 }, { "name": "BY", "value": 316 }, { "name": "CACHE", "value": 317 }, { "name": "CALL", "value": 318 }, { "name": "CALLED", "value": 319 }, { "name": "CASCADE", "value": 320 }, { "name": "CASCADED", "value": 321 }, { "name": "CASE", "value": 322 }, { "name": "CAST", "value": 323 }, { "name": "CATALOG_P", "value": 324 }, { "name": "CHAIN", "value": 325 }, { "name": "CHAR_P", "value": 326 }, { "name": "CHARACTER", "value": 327 }, { "name": "CHARACTERISTICS", "value": 328 }, { "name": "CHECK", "value": 329 }, { "name": "CHECKPOINT", "value": 330 }, { "name": "CLASS", "value": 331 }, { "name": "CLOSE", "value": 332 }, { "name": "CLUSTER", "value": 333 }, { "name": "COALESCE", "value": 334 }, { "name": "COLLATE", "value": 335 }, { "name": "COLLATION", "value": 336 }, { "name": "COLUMN", "value": 337 }, { "name": "COLUMNS", "value": 338 }, { "name": "COMMENT", "value": 339 }, { "name": "COMMENTS", "value": 340 }, { "name": "COMMIT", "value": 341 }, { "name": "COMMITTED", "value": 342 }, { "name": "COMPRESSION", "value": 343 }, { "name": "CONCURRENTLY", "value": 344 }, { "name": "CONDITIONAL", "value": 345 }, { "name": "CONFIGURATION", "value": 346 }, { "name": "CONFLICT", "value": 347 }, { "name": "CONNECTION", "value": 348 }, { "name": "CONSTRAINT", "value": 349 }, { "name": "CONSTRAINTS", "value": 350 }, { "name": "CONTENT_P", "value": 351 }, { "name": "CONTINUE_P", "value": 352 }, { "name": "CONVERSION_P", "value": 353 }, { "name": "COPY", "value": 354 }, { "name": "COST", "value": 355 }, { "name": "CREATE", "value": 356 }, { "name": "CROSS", "value": 357 }, { "name": "CSV", "value": 358 }, { "name": "CUBE", "value": 359 }, { "name": "CURRENT_P", "value": 360 }, { "name": "CURRENT_CATALOG", "value": 361 }, { "name": "CURRENT_DATE", "value": 362 }, { "name": "CURRENT_ROLE", "value": 363 }, { "name": "CURRENT_SCHEMA", "value": 364 }, { "name": "CURRENT_TIME", "value": 365 }, { "name": "CURRENT_TIMESTAMP", "value": 366 }, { "name": "CURRENT_USER", "value": 367 }, { "name": "CURSOR", "value": 368 }, { "name": "CYCLE", "value": 369 }, { "name": "DATA_P", "value": 370 }, { "name": "DATABASE", "value": 371 }, { "name": "DAY_P", "value": 372 }, { "name": "DEALLOCATE", "value": 373 }, { "name": "DEC", "value": 374 }, { "name": "DECIMAL_P", "value": 375 }, { "name": "DECLARE", "value": 376 }, { "name": "DEFAULT", "value": 377 }, { "name": "DEFAULTS", "value": 378 }, { "name": "DEFERRABLE", "value": 379 }, { "name": "DEFERRED", "value": 380 }, { "name": "DEFINER", "value": 381 }, { "name": "DELETE_P", "value": 382 }, { "name": "DELIMITER", "value": 383 }, { "name": "DELIMITERS", "value": 384 }, { "name": "DEPENDS", "value": 385 }, { "name": "DEPTH", "value": 386 }, { "name": "DESC", "value": 387 }, { "name": "DETACH", "value": 388 }, { "name": "DICTIONARY", "value": 389 }, { "name": "DISABLE_P", "value": 390 }, { "name": "DISCARD", "value": 391 }, { "name": "DISTINCT", "value": 392 }, { "name": "DO", "value": 393 }, { "name": "DOCUMENT_P", "value": 394 }, { "name": "DOMAIN_P", "value": 395 }, { "name": "DOUBLE_P", "value": 396 }, { "name": "DROP", "value": 397 }, { "name": "EACH", "value": 398 }, { "name": "ELSE", "value": 399 }, { "name": "EMPTY_P", "value": 400 }, { "name": "ENABLE_P", "value": 401 }, { "name": "ENCODING", "value": 402 }, { "name": "ENCRYPTED", "value": 403 }, { "name": "END_P", "value": 404 }, { "name": "ENUM_P", "value": 405 }, { "name": "ERROR_P", "value": 406 }, { "name": "ESCAPE", "value": 407 }, { "name": "EVENT", "value": 408 }, { "name": "EXCEPT", "value": 409 }, { "name": "EXCLUDE", "value": 410 }, { "name": "EXCLUDING", "value": 411 }, { "name": "EXCLUSIVE", "value": 412 }, { "name": "EXECUTE", "value": 413 }, { "name": "EXISTS", "value": 414 }, { "name": "EXPLAIN", "value": 415 }, { "name": "EXPRESSION", "value": 416 }, { "name": "EXTENSION", "value": 417 }, { "name": "EXTERNAL", "value": 418 }, { "name": "EXTRACT", "value": 419 }, { "name": "FALSE_P", "value": 420 }, { "name": "FAMILY", "value": 421 }, { "name": "FETCH", "value": 422 }, { "name": "FILTER", "value": 423 }, { "name": "FINALIZE", "value": 424 }, { "name": "FIRST_P", "value": 425 }, { "name": "FLOAT_P", "value": 426 }, { "name": "FOLLOWING", "value": 427 }, { "name": "FOR", "value": 428 }, { "name": "FORCE", "value": 429 }, { "name": "FOREIGN", "value": 430 }, { "name": "FORMAT", "value": 431 }, { "name": "FORWARD", "value": 432 }, { "name": "FREEZE", "value": 433 }, { "name": "FROM", "value": 434 }, { "name": "FULL", "value": 435 }, { "name": "FUNCTION", "value": 436 }, { "name": "FUNCTIONS", "value": 437 }, { "name": "GENERATED", "value": 438 }, { "name": "GLOBAL", "value": 439 }, { "name": "GRANT", "value": 440 }, { "name": "GRANTED", "value": 441 }, { "name": "GREATEST", "value": 442 }, { "name": "GROUP_P", "value": 443 }, { "name": "GROUPING", "value": 444 }, { "name": "GROUPS", "value": 445 }, { "name": "HANDLER", "value": 446 }, { "name": "HAVING", "value": 447 }, { "name": "HEADER_P", "value": 448 }, { "name": "HOLD", "value": 449 }, { "name": "HOUR_P", "value": 450 }, { "name": "IDENTITY_P", "value": 451 }, { "name": "IF_P", "value": 452 }, { "name": "ILIKE", "value": 453 }, { "name": "IMMEDIATE", "value": 454 }, { "name": "IMMUTABLE", "value": 455 }, { "name": "IMPLICIT_P", "value": 456 }, { "name": "IMPORT_P", "value": 457 }, { "name": "IN_P", "value": 458 }, { "name": "INCLUDE", "value": 459 }, { "name": "INCLUDING", "value": 460 }, { "name": "INCREMENT", "value": 461 }, { "name": "INDENT", "value": 462 }, { "name": "INDEX", "value": 463 }, { "name": "INDEXES", "value": 464 }, { "name": "INHERIT", "value": 465 }, { "name": "INHERITS", "value": 466 }, { "name": "INITIALLY", "value": 467 }, { "name": "INLINE_P", "value": 468 }, { "name": "INNER_P", "value": 469 }, { "name": "INOUT", "value": 470 }, { "name": "INPUT_P", "value": 471 }, { "name": "INSENSITIVE", "value": 472 }, { "name": "INSERT", "value": 473 }, { "name": "INSTEAD", "value": 474 }, { "name": "INT_P", "value": 475 }, { "name": "INTEGER", "value": 476 }, { "name": "INTERSECT", "value": 477 }, { "name": "INTERVAL", "value": 478 }, { "name": "INTO", "value": 479 }, { "name": "INVOKER", "value": 480 }, { "name": "IS", "value": 481 }, { "name": "ISNULL", "value": 482 }, { "name": "ISOLATION", "value": 483 }, { "name": "JOIN", "value": 484 }, { "name": "JSON", "value": 485 }, { "name": "JSON_ARRAY", "value": 486 }, { "name": "JSON_ARRAYAGG", "value": 487 }, { "name": "JSON_EXISTS", "value": 488 }, { "name": "JSON_OBJECT", "value": 489 }, { "name": "JSON_OBJECTAGG", "value": 490 }, { "name": "JSON_QUERY", "value": 491 }, { "name": "JSON_SCALAR", "value": 492 }, { "name": "JSON_SERIALIZE", "value": 493 }, { "name": "JSON_TABLE", "value": 494 }, { "name": "JSON_VALUE", "value": 495 }, { "name": "KEEP", "value": 496 }, { "name": "KEY", "value": 497 }, { "name": "KEYS", "value": 498 }, { "name": "LABEL", "value": 499 }, { "name": "LANGUAGE", "value": 500 }, { "name": "LARGE_P", "value": 501 }, { "name": "LAST_P", "value": 502 }, { "name": "LATERAL_P", "value": 503 }, { "name": "LEADING", "value": 504 }, { "name": "LEAKPROOF", "value": 505 }, { "name": "LEAST", "value": 506 }, { "name": "LEFT", "value": 507 }, { "name": "LEVEL", "value": 508 }, { "name": "LIKE", "value": 509 }, { "name": "LIMIT", "value": 510 }, { "name": "LISTEN", "value": 511 }, { "name": "LOAD", "value": 512 }, { "name": "LOCAL", "value": 513 }, { "name": "LOCALTIME", "value": 514 }, { "name": "LOCALTIMESTAMP", "value": 515 }, { "name": "LOCATION", "value": 516 }, { "name": "LOCK_P", "value": 517 }, { "name": "LOCKED", "value": 518 }, { "name": "LOGGED", "value": 519 }, { "name": "MAPPING", "value": 520 }, { "name": "MATCH", "value": 521 }, { "name": "MATCHED", "value": 522 }, { "name": "MATERIALIZED", "value": 523 }, { "name": "MAXVALUE", "value": 524 }, { "name": "MERGE", "value": 525 }, { "name": "MERGE_ACTION", "value": 526 }, { "name": "METHOD", "value": 527 }, { "name": "MINUTE_P", "value": 528 }, { "name": "MINVALUE", "value": 529 }, { "name": "MODE", "value": 530 }, { "name": "MONTH_P", "value": 531 }, { "name": "MOVE", "value": 532 }, { "name": "NAME_P", "value": 533 }, { "name": "NAMES", "value": 534 }, { "name": "NATIONAL", "value": 535 }, { "name": "NATURAL", "value": 536 }, { "name": "NCHAR", "value": 537 }, { "name": "NESTED", "value": 538 }, { "name": "NEW", "value": 539 }, { "name": "NEXT", "value": 540 }, { "name": "NFC", "value": 541 }, { "name": "NFD", "value": 542 }, { "name": "NFKC", "value": 543 }, { "name": "NFKD", "value": 544 }, { "name": "NO", "value": 545 }, { "name": "NONE", "value": 546 }, { "name": "NORMALIZE", "value": 547 }, { "name": "NORMALIZED", "value": 548 }, { "name": "NOT", "value": 549 }, { "name": "NOTHING", "value": 550 }, { "name": "NOTIFY", "value": 551 }, { "name": "NOTNULL", "value": 552 }, { "name": "NOWAIT", "value": 553 }, { "name": "NULL_P", "value": 554 }, { "name": "NULLIF", "value": 555 }, { "name": "NULLS_P", "value": 556 }, { "name": "NUMERIC", "value": 557 }, { "name": "OBJECT_P", "value": 558 }, { "name": "OF", "value": 559 }, { "name": "OFF", "value": 560 }, { "name": "OFFSET", "value": 561 }, { "name": "OIDS", "value": 562 }, { "name": "OLD", "value": 563 }, { "name": "OMIT", "value": 564 }, { "name": "ON", "value": 565 }, { "name": "ONLY", "value": 566 }, { "name": "OPERATOR", "value": 567 }, { "name": "OPTION", "value": 568 }, { "name": "OPTIONS", "value": 569 }, { "name": "OR", "value": 570 }, { "name": "ORDER", "value": 571 }, { "name": "ORDINALITY", "value": 572 }, { "name": "OTHERS", "value": 573 }, { "name": "OUT_P", "value": 574 }, { "name": "OUTER_P", "value": 575 }, { "name": "OVER", "value": 576 }, { "name": "OVERLAPS", "value": 577 }, { "name": "OVERLAY", "value": 578 }, { "name": "OVERRIDING", "value": 579 }, { "name": "OWNED", "value": 580 }, { "name": "OWNER", "value": 581 }, { "name": "PARALLEL", "value": 582 }, { "name": "PARAMETER", "value": 583 }, { "name": "PARSER", "value": 584 }, { "name": "PARTIAL", "value": 585 }, { "name": "PARTITION", "value": 586 }, { "name": "PASSING", "value": 587 }, { "name": "PASSWORD", "value": 588 }, { "name": "PATH", "value": 589 }, { "name": "PLACING", "value": 590 }, { "name": "PLAN", "value": 591 }, { "name": "PLANS", "value": 592 }, { "name": "POLICY", "value": 593 }, { "name": "POSITION", "value": 594 }, { "name": "PRECEDING", "value": 595 }, { "name": "PRECISION", "value": 596 }, { "name": "PRESERVE", "value": 597 }, { "name": "PREPARE", "value": 598 }, { "name": "PREPARED", "value": 599 }, { "name": "PRIMARY", "value": 600 }, { "name": "PRIOR", "value": 601 }, { "name": "PRIVILEGES", "value": 602 }, { "name": "PROCEDURAL", "value": 603 }, { "name": "PROCEDURE", "value": 604 }, { "name": "PROCEDURES", "value": 605 }, { "name": "PROGRAM", "value": 606 }, { "name": "PUBLICATION", "value": 607 }, { "name": "QUOTE", "value": 608 }, { "name": "QUOTES", "value": 609 }, { "name": "RANGE", "value": 610 }, { "name": "READ", "value": 611 }, { "name": "REAL", "value": 612 }, { "name": "REASSIGN", "value": 613 }, { "name": "RECHECK", "value": 614 }, { "name": "RECURSIVE", "value": 615 }, { "name": "REF_P", "value": 616 }, { "name": "REFERENCES", "value": 617 }, { "name": "REFERENCING", "value": 618 }, { "name": "REFRESH", "value": 619 }, { "name": "REINDEX", "value": 620 }, { "name": "RELATIVE_P", "value": 621 }, { "name": "RELEASE", "value": 622 }, { "name": "RENAME", "value": 623 }, { "name": "REPEATABLE", "value": 624 }, { "name": "REPLACE", "value": 625 }, { "name": "REPLICA", "value": 626 }, { "name": "RESET", "value": 627 }, { "name": "RESTART", "value": 628 }, { "name": "RESTRICT", "value": 629 }, { "name": "RETURN", "value": 630 }, { "name": "RETURNING", "value": 631 }, { "name": "RETURNS", "value": 632 }, { "name": "REVOKE", "value": 633 }, { "name": "RIGHT", "value": 634 }, { "name": "ROLE", "value": 635 }, { "name": "ROLLBACK", "value": 636 }, { "name": "ROLLUP", "value": 637 }, { "name": "ROUTINE", "value": 638 }, { "name": "ROUTINES", "value": 639 }, { "name": "ROW", "value": 640 }, { "name": "ROWS", "value": 641 }, { "name": "RULE", "value": 642 }, { "name": "SAVEPOINT", "value": 643 }, { "name": "SCALAR", "value": 644 }, { "name": "SCHEMA", "value": 645 }, { "name": "SCHEMAS", "value": 646 }, { "name": "SCROLL", "value": 647 }, { "name": "SEARCH", "value": 648 }, { "name": "SECOND_P", "value": 649 }, { "name": "SECURITY", "value": 650 }, { "name": "SELECT", "value": 651 }, { "name": "SEQUENCE", "value": 652 }, { "name": "SEQUENCES", "value": 653 }, { "name": "SERIALIZABLE", "value": 654 }, { "name": "SERVER", "value": 655 }, { "name": "SESSION", "value": 656 }, { "name": "SESSION_USER", "value": 657 }, { "name": "SET", "value": 658 }, { "name": "SETS", "value": 659 }, { "name": "SETOF", "value": 660 }, { "name": "SHARE", "value": 661 }, { "name": "SHOW", "value": 662 }, { "name": "SIMILAR", "value": 663 }, { "name": "SIMPLE", "value": 664 }, { "name": "SKIP", "value": 665 }, { "name": "SMALLINT", "value": 666 }, { "name": "SNAPSHOT", "value": 667 }, { "name": "SOME", "value": 668 }, { "name": "SOURCE", "value": 669 }, { "name": "SQL_P", "value": 670 }, { "name": "STABLE", "value": 671 }, { "name": "STANDALONE_P", "value": 672 }, { "name": "START", "value": 673 }, { "name": "STATEMENT", "value": 674 }, { "name": "STATISTICS", "value": 675 }, { "name": "STDIN", "value": 676 }, { "name": "STDOUT", "value": 677 }, { "name": "STORAGE", "value": 678 }, { "name": "STORED", "value": 679 }, { "name": "STRICT_P", "value": 680 }, { "name": "STRING_P", "value": 681 }, { "name": "STRIP_P", "value": 682 }, { "name": "SUBSCRIPTION", "value": 683 }, { "name": "SUBSTRING", "value": 684 }, { "name": "SUPPORT", "value": 685 }, { "name": "SYMMETRIC", "value": 686 }, { "name": "SYSID", "value": 687 }, { "name": "SYSTEM_P", "value": 688 }, { "name": "SYSTEM_USER", "value": 689 }, { "name": "TABLE", "value": 690 }, { "name": "TABLES", "value": 691 }, { "name": "TABLESAMPLE", "value": 692 }, { "name": "TABLESPACE", "value": 693 }, { "name": "TARGET", "value": 694 }, { "name": "TEMP", "value": 695 }, { "name": "TEMPLATE", "value": 696 }, { "name": "TEMPORARY", "value": 697 }, { "name": "TEXT_P", "value": 698 }, { "name": "THEN", "value": 699 }, { "name": "TIES", "value": 700 }, { "name": "TIME", "value": 701 }, { "name": "TIMESTAMP", "value": 702 }, { "name": "TO", "value": 703 }, { "name": "TRAILING", "value": 704 }, { "name": "TRANSACTION", "value": 705 }, { "name": "TRANSFORM", "value": 706 }, { "name": "TREAT", "value": 707 }, { "name": "TRIGGER", "value": 708 }, { "name": "TRIM", "value": 709 }, { "name": "TRUE_P", "value": 710 }, { "name": "TRUNCATE", "value": 711 }, { "name": "TRUSTED", "value": 712 }, { "name": "TYPE_P", "value": 713 }, { "name": "TYPES_P", "value": 714 }, { "name": "UESCAPE", "value": 715 }, { "name": "UNBOUNDED", "value": 716 }, { "name": "UNCONDITIONAL", "value": 717 }, { "name": "UNCOMMITTED", "value": 718 }, { "name": "UNENCRYPTED", "value": 719 }, { "name": "UNION", "value": 720 }, { "name": "UNIQUE", "value": 721 }, { "name": "UNKNOWN", "value": 722 }, { "name": "UNLISTEN", "value": 723 }, { "name": "UNLOGGED", "value": 724 }, { "name": "UNTIL", "value": 725 }, { "name": "UPDATE", "value": 726 }, { "name": "USER", "value": 727 }, { "name": "USING", "value": 728 }, { "name": "VACUUM", "value": 729 }, { "name": "VALID", "value": 730 }, { "name": "VALIDATE", "value": 731 }, { "name": "VALIDATOR", "value": 732 }, { "name": "VALUE_P", "value": 733 }, { "name": "VALUES", "value": 734 }, { "name": "VARCHAR", "value": 735 }, { "name": "VARIADIC", "value": 736 }, { "name": "VARYING", "value": 737 }, { "name": "VERBOSE", "value": 738 }, { "name": "VERSION_P", "value": 739 }, { "name": "VIEW", "value": 740 }, { "name": "VIEWS", "value": 741 }, { "name": "VOLATILE", "value": 742 }, { "name": "WHEN", "value": 743 }, { "name": "WHERE", "value": 744 }, { "name": "WHITESPACE_P", "value": 745 }, { "name": "WINDOW", "value": 746 }, { "name": "WITH", "value": 747 }, { "name": "WITHIN", "value": 748 }, { "name": "WITHOUT", "value": 749 }, { "name": "WORK", "value": 750 }, { "name": "WRAPPER", "value": 751 }, { "name": "WRITE", "value": 752 }, { "name": "XML_P", "value": 753 }, { "name": "XMLATTRIBUTES", "value": 754 }, { "name": "XMLCONCAT", "value": 755 }, { "name": "XMLELEMENT", "value": 756 }, { "name": "XMLEXISTS", "value": 757 }, { "name": "XMLFOREST", "value": 758 }, { "name": "XMLNAMESPACES", "value": 759 }, { "name": "XMLPARSE", "value": 760 }, { "name": "XMLPI", "value": 761 }, { "name": "XMLROOT", "value": 762 }, { "name": "XMLSERIALIZE", "value": 763 }, { "name": "XMLTABLE", "value": 764 }, { "name": "YEAR_P", "value": 765 }, { "name": "YES_P", "value": 766 }, { "name": "ZONE", "value": 767 }, { "name": "FORMAT_LA", "value": 768 }, { "name": "NOT_LA", "value": 769 }, { "name": "NULLS_LA", "value": 770 }, { "name": "WITH_LA", "value": 771 }, { "name": "WITHOUT_LA", "value": 772 }, { "name": "MODE_TYPE_NAME", "value": 773 }, { "name": "MODE_PLPGSQL_EXPR", "value": 774 }, { "name": "MODE_PLPGSQL_ASSIGN1", "value": 775 }, { "name": "MODE_PLPGSQL_ASSIGN2", "value": 776 }, { "name": "MODE_PLPGSQL_ASSIGN3", "value": 777 }, { "name": "UMINUS", "value": 778 } ], "comment": " /* Put the tokens into the symbol table, so that GDB and other debuggers\n know about them. */\n" } }, "../backend/parser/gramparse": { } }libpg_query-17-6.1.0/srcdata/nodetypes.json000066400000000000000000000216221477334012600206250ustar00rootroot00000000000000[ "List", "Alias", "RangeVar", "TableFunc", "IntoClause", "Var", "Const", "Param", "Aggref", "GroupingFunc", "WindowFunc", "WindowFuncRunCondition", "MergeSupportFunc", "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", "JsonFormat", "JsonReturning", "JsonValueExpr", "JsonConstructorExpr", "JsonIsPredicate", "JsonBehavior", "JsonExpr", "JsonTablePath", "JsonTablePathScan", "JsonTableSiblingJoin", "NullTest", "BooleanTest", "MergeAction", "CoerceToDomain", "CoerceToDomainValue", "SetToDefault", "CurrentOfExpr", "NextValueExpr", "InferenceElem", "TargetEntry", "RangeTblRef", "JoinExpr", "FromExpr", "OnConflictExpr", "Query", "TypeName", "ColumnRef", "ParamRef", "A_Expr", "A_Const", "TypeCast", "CollateClause", "RoleSpec", "FuncCall", "A_Star", "A_Indices", "A_Indirection", "A_ArrayExpr", "ResTarget", "MultiAssignRef", "SortBy", "WindowDef", "RangeSubselect", "RangeFunction", "RangeTableFunc", "RangeTableFuncCol", "RangeTableSample", "ColumnDef", "TableLikeClause", "IndexElem", "DefElem", "LockingClause", "XmlSerialize", "PartitionElem", "PartitionSpec", "PartitionBoundSpec", "PartitionRangeDatum", "SinglePartitionSpec", "PartitionCmd", "RangeTblEntry", "RTEPermissionInfo", "RangeTblFunction", "TableSampleClause", "WithCheckOption", "SortGroupClause", "GroupingSet", "WindowClause", "RowMarkClause", "WithClause", "InferClause", "OnConflictClause", "CTESearchClause", "CTECycleClause", "CommonTableExpr", "MergeWhenClause", "TriggerTransition", "JsonOutput", "JsonArgument", "JsonFuncExpr", "JsonTablePathSpec", "JsonTable", "JsonTableColumn", "JsonKeyValue", "JsonParseExpr", "JsonScalarExpr", "JsonSerializeExpr", "JsonObjectConstructor", "JsonArrayConstructor", "JsonArrayQueryConstructor", "JsonAggConstructor", "JsonObjectAgg", "JsonArrayAgg", "RawStmt", "InsertStmt", "DeleteStmt", "UpdateStmt", "MergeStmt", "SelectStmt", "SetOperationStmt", "ReturnStmt", "PLAssignStmt", "CreateSchemaStmt", "AlterTableStmt", "ReplicaIdentityStmt", "AlterTableCmd", "AlterCollationStmt", "AlterDomainStmt", "GrantStmt", "ObjectWithArgs", "AccessPriv", "GrantRoleStmt", "AlterDefaultPrivilegesStmt", "CopyStmt", "VariableSetStmt", "VariableShowStmt", "CreateStmt", "Constraint", "CreateTableSpaceStmt", "DropTableSpaceStmt", "AlterTableSpaceOptionsStmt", "AlterTableMoveAllStmt", "CreateExtensionStmt", "AlterExtensionStmt", "AlterExtensionContentsStmt", "CreateFdwStmt", "AlterFdwStmt", "CreateForeignServerStmt", "AlterForeignServerStmt", "CreateForeignTableStmt", "CreateUserMappingStmt", "AlterUserMappingStmt", "DropUserMappingStmt", "ImportForeignSchemaStmt", "CreatePolicyStmt", "AlterPolicyStmt", "CreateAmStmt", "CreateTrigStmt", "CreateEventTrigStmt", "AlterEventTrigStmt", "CreatePLangStmt", "CreateRoleStmt", "AlterRoleStmt", "AlterRoleSetStmt", "DropRoleStmt", "CreateSeqStmt", "AlterSeqStmt", "DefineStmt", "CreateDomainStmt", "CreateOpClassStmt", "CreateOpClassItem", "CreateOpFamilyStmt", "AlterOpFamilyStmt", "DropStmt", "TruncateStmt", "CommentStmt", "SecLabelStmt", "DeclareCursorStmt", "ClosePortalStmt", "FetchStmt", "IndexStmt", "CreateStatsStmt", "StatsElem", "AlterStatsStmt", "CreateFunctionStmt", "FunctionParameter", "AlterFunctionStmt", "DoStmt", "InlineCodeBlock", "CallStmt", "CallContext", "RenameStmt", "AlterObjectDependsStmt", "AlterObjectSchemaStmt", "AlterOwnerStmt", "AlterOperatorStmt", "AlterTypeStmt", "RuleStmt", "NotifyStmt", "ListenStmt", "UnlistenStmt", "TransactionStmt", "CompositeTypeStmt", "CreateEnumStmt", "CreateRangeStmt", "AlterEnumStmt", "ViewStmt", "LoadStmt", "CreatedbStmt", "AlterDatabaseStmt", "AlterDatabaseRefreshCollStmt", "AlterDatabaseSetStmt", "DropdbStmt", "AlterSystemStmt", "ClusterStmt", "VacuumStmt", "VacuumRelation", "ExplainStmt", "CreateTableAsStmt", "RefreshMatViewStmt", "CheckPointStmt", "DiscardStmt", "LockStmt", "ConstraintsSetStmt", "ReindexStmt", "CreateConversionStmt", "CreateCastStmt", "CreateTransformStmt", "PrepareStmt", "ExecuteStmt", "DeallocateStmt", "DropOwnedStmt", "ReassignOwnedStmt", "AlterTSDictionaryStmt", "AlterTSConfigurationStmt", "PublicationTable", "PublicationObjSpec", "CreatePublicationStmt", "AlterPublicationStmt", "CreateSubscriptionStmt", "AlterSubscriptionStmt", "DropSubscriptionStmt", "PlannerGlobal", "PlannerInfo", "RelOptInfo", "IndexOptInfo", "ForeignKeyOptInfo", "StatisticExtInfo", "JoinDomain", "EquivalenceClass", "EquivalenceMember", "PathKey", "GroupByOrdering", "PathTarget", "ParamPathInfo", "Path", "IndexPath", "IndexClause", "BitmapHeapPath", "BitmapAndPath", "BitmapOrPath", "TidPath", "TidRangePath", "SubqueryScanPath", "ForeignPath", "CustomPath", "AppendPath", "MergeAppendPath", "GroupResultPath", "MaterialPath", "MemoizePath", "UniquePath", "GatherPath", "GatherMergePath", "NestPath", "MergePath", "HashPath", "ProjectionPath", "ProjectSetPath", "SortPath", "IncrementalSortPath", "GroupPath", "UpperUniquePath", "AggPath", "GroupingSetData", "RollupData", "GroupingSetsPath", "MinMaxAggPath", "WindowAggPath", "SetOpPath", "RecursiveUnionPath", "LockRowsPath", "ModifyTablePath", "LimitPath", "RestrictInfo", "PlaceHolderVar", "SpecialJoinInfo", "OuterJoinClauseInfo", "AppendRelInfo", "RowIdentityVarInfo", "PlaceHolderInfo", "MinMaxAggInfo", "PlannerParamItem", "AggInfo", "AggTransInfo", "PlannedStmt", "Result", "ProjectSet", "ModifyTable", "Append", "MergeAppend", "RecursiveUnion", "BitmapAnd", "BitmapOr", "SeqScan", "SampleScan", "IndexScan", "IndexOnlyScan", "BitmapIndexScan", "BitmapHeapScan", "TidScan", "TidRangeScan", "SubqueryScan", "FunctionScan", "ValuesScan", "TableFuncScan", "CteScan", "NamedTuplestoreScan", "WorkTableScan", "ForeignScan", "CustomScan", "NestLoop", "NestLoopParam", "MergeJoin", "HashJoin", "Material", "Memoize", "Sort", "IncrementalSort", "Group", "Agg", "WindowAgg", "Unique", "Gather", "GatherMerge", "Hash", "SetOp", "LockRows", "Limit", "PlanRowMark", "PartitionPruneInfo", "PartitionedRelPruneInfo", "PartitionPruneStepOp", "PartitionPruneStepCombine", "PlanInvalItem", "ExprState", "IndexInfo", "ExprContext", "ReturnSetInfo", "ProjectionInfo", "JunkFilter", "OnConflictSetState", "MergeActionState", "ResultRelInfo", "EState", "WindowFuncExprState", "SetExprState", "SubPlanState", "DomainConstraintState", "ResultState", "ProjectSetState", "ModifyTableState", "AppendState", "MergeAppendState", "RecursiveUnionState", "BitmapAndState", "BitmapOrState", "ScanState", "SeqScanState", "SampleScanState", "IndexScanState", "IndexOnlyScanState", "BitmapIndexScanState", "BitmapHeapScanState", "TidScanState", "TidRangeScanState", "SubqueryScanState", "FunctionScanState", "ValuesScanState", "TableFuncScanState", "CteScanState", "NamedTuplestoreScanState", "WorkTableScanState", "ForeignScanState", "CustomScanState", "JoinState", "NestLoopState", "MergeJoinState", "HashJoinState", "MaterialState", "MemoizeState", "SortState", "IncrementalSortState", "GroupState", "AggState", "WindowAggState", "UniqueState", "GatherState", "GatherMergeState", "HashState", "SetOpState", "LockRowsState", "LimitState", "IndexAmRoutine", "TableAmRoutine", "TsmRoutine", "EventTriggerData", "TriggerData", "TupleTableSlot", "FdwRoutine", "Bitmapset", "ExtensibleNode", "ErrorSaveContext", "IdentifySystemCmd", "BaseBackupCmd", "CreateReplicationSlotCmd", "DropReplicationSlotCmd", "AlterReplicationSlotCmd", "StartReplicationCmd", "ReadReplicationSlotCmd", "TimeLineHistoryCmd", "UploadManifestCmd", "SupportRequestSimplify", "SupportRequestSelectivity", "SupportRequestCost", "SupportRequestRows", "SupportRequestIndexCondition", "SupportRequestWFuncMonotonic", "SupportRequestOptimizeWindowClause", "Integer", "Float", "Boolean", "String", "BitString", "ForeignKeyCacheInfo", "IntList", "OidList", "XidList", "AllocSetContext", "GenerationContext", "SlabContext", "BumpContext", "TIDBitmap", "WindowObjectData" ]libpg_query-17-6.1.0/srcdata/struct_defs.json000066400000000000000000013407041477334012600211460ustar00rootroot00000000000000{ "nodes/parsenodes": { "Query": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "name": "commandType", "c_type": "CmdType", "comment": "/* select|insert|update|delete|merge|utility */" }, { "comment": "" }, { "comment": "\t/* where did I come from? */\n" }, { "name": "querySource", "c_type": "QuerySource", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * query identifier (can be set by plugins); ignored for equal, as it\n\t * might not be set; also not stored. This is the result of the query\n\t * jumble, hence ignored.\n\t */\n" }, { "comment": "" }, { "comment": "" }, { "comment": "\t/* do I set the command result tag? */\n" }, { "name": "canSetTag", "c_type": "bool", "comment": null }, { "comment": "" }, { "name": "utilityStmt", "c_type": "Node*", "comment": "/* non-null if commandType == CMD_UTILITY */" }, { "comment": "" }, { "comment": "\t/*\n\t * rtable index of target relation for INSERT/UPDATE/DELETE/MERGE; 0 for\n\t * SELECT. This is ignored in the query jumble as unrelated to the\n\t * compilation of the query ID.\n\t */\n" }, { "name": "resultRelation", "c_type": "int", "comment": null }, { "comment": "" }, { "comment": "\t/* has aggregates in tlist or havingQual */\n" }, { "name": "hasAggs", "c_type": "bool", "comment": null }, { "comment": "\t/* has window functions in tlist */\n" }, { "name": "hasWindowFuncs", "c_type": "bool", "comment": null }, { "comment": "\t/* has set-returning functions in tlist */\n" }, { "name": "hasTargetSRFs", "c_type": "bool", "comment": null }, { "comment": "\t/* has subquery SubLink */\n" }, { "name": "hasSubLinks", "c_type": "bool", "comment": null }, { "comment": "\t/* distinctClause is from DISTINCT ON */\n" }, { "name": "hasDistinctOn", "c_type": "bool", "comment": null }, { "comment": "\t/* WITH RECURSIVE was specified */\n" }, { "name": "hasRecursive", "c_type": "bool", "comment": null }, { "comment": "\t/* has INSERT/UPDATE/DELETE/MERGE in WITH */\n" }, { "name": "hasModifyingCTE", "c_type": "bool", "comment": null }, { "comment": "\t/* FOR [KEY] UPDATE/SHARE was specified */\n" }, { "name": "hasForUpdate", "c_type": "bool", "comment": null }, { "comment": "\t/* rewriter has applied some RLS policy */\n" }, { "name": "hasRowSecurity", "c_type": "bool", "comment": null }, { "comment": "\t/* is a RETURN statement */\n" }, { "name": "isReturn", "c_type": "bool", "comment": null }, { "comment": "" }, { "name": "cteList", "c_type": "List*", "comment": "/* WITH list (of CommonTableExpr's) */" }, { "comment": "" }, { "name": "rtable", "c_type": "List*", "comment": "/* list of range table entries */" }, { "comment": "" }, { "comment": "\t/*\n\t * list of RTEPermissionInfo nodes for the rtable entries having\n\t * perminfoindex > 0\n\t */\n" }, { "name": "rteperminfos", "c_type": "List*", "comment": null }, { "name": "jointree", "c_type": "FromExpr*", "comment": "/* table join tree (FROM and WHERE clauses);\n\t\t\t\t\t\t\t\t * also USING clause for MERGE */\n" }, { "comment": "" }, { "name": "mergeActionList", "c_type": "List*", "comment": "/* list of actions for MERGE (only) */" }, { "comment": "" }, { "comment": "\t/*\n\t * rtable index of target relation for MERGE to pull data. Initially, this\n\t * is the same as resultRelation, but after query rewriting, if the target\n\t * relation is a trigger-updatable view, this is the index of the expanded\n\t * view subquery, whereas resultRelation is the index of the target view.\n\t */\n" }, { "name": "mergeTargetRelation", "c_type": "int", "comment": null }, { "comment": "" }, { "comment": "\t/* join condition between source and target for MERGE */\n" }, { "name": "mergeJoinCondition", "c_type": "Node*", "comment": null }, { "comment": "" }, { "name": "targetList", "c_type": "List*", "comment": "/* target list (of TargetEntry) */" }, { "comment": "" }, { "comment": "\t/* OVERRIDING clause */\n" }, { "name": "override", "c_type": "OverridingKind", "comment": null }, { "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 */" }, { "name": "groupDistinct", "c_type": "bool", "comment": "/* is the group by clause distinct? */" }, { "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": "" }, { "comment": "\t/*\n\t * A list of pg_constraint OIDs that the query depends on to be\n\t * semantically valid\n\t */\n" }, { "name": "constraintDeps", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/* a list of WithCheckOption's (added during rewrite) */\n" }, { "name": "withCheckOptions", "c_type": "List*", "comment": null }, { "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" }, { "comment": "\t/* start location, or -1 if unknown */\n" }, { "name": "stmt_location", "c_type": "ParseLoc", "comment": null }, { "comment": "\t/* length in bytes; 0 means \"rest of string\" */\n" }, { "name": "stmt_len", "c_type": "ParseLoc", "comment": null } ], "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 *\t All the fields ignored for the query jumbling are not semantically\n *\t significant (such as alias names), as is ignored anything that can\n *\t be deduced from child nodes (else we'd just be double-hashing that\n *\t piece of information).\n */\n" }, "TypeName": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "names", "c_type": "List*", "comment": "/* qualified name (list of String nodes) */" }, { "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": "ParseLoc", "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 (String nodes) or A_Star */" }, { "name": "location", "c_type": "ParseLoc", "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 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": "ParseLoc", "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": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * A_Expr - infix, prefix, and postfix expressions\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": "ParseLoc", "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": "ParseLoc", "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": "ParseLoc", "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": "over", "c_type": "WindowDef*", "comment": "/* OVER 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": "funcformat", "c_type": "CoercionForm", "comment": "/* how to display this node */" }, { "name": "location", "c_type": "ParseLoc", "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 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": "ParseLoc", "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": "ParseLoc", "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": "ParseLoc", "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": "ParseLoc", "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": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * RangeTableFunc - raw form of \"table functions\" such as XMLTABLE\n *\n * Note: JSON_TABLE is also a \"table function\", but it uses JsonTable node,\n * not RangeTableFunc.\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": "ParseLoc", "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": "ParseLoc", "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": "compression", "c_type": "char*", "comment": "/* compression method for 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": "storage_name", "c_type": "char*", "comment": "/* attstorage setting name or NULL 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": "ParseLoc", "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": "/* typically Integer, Float, String, or\n\t\t\t\t\t\t\t\t * TypeName */\n" }, { "name": "defaction", "c_type": "DefElemAction", "comment": "/* unspecified action, or SET/ADD/DROP */" }, { "name": "location", "c_type": "ParseLoc", "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": "indent", "c_type": "bool", "comment": "/* [NO] INDENT */" }, { "name": "location", "c_type": "ParseLoc", "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": "ParseLoc", "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": "PartitionStrategy", "comment": null }, { "name": "partParams", "c_type": "List*", "comment": "/* List of PartitionElems */" }, { "name": "location", "c_type": "ParseLoc", "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": "ParseLoc", "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": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": null }, "SinglePartitionSpec": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null } ], "comment": "/*\n * PartitionDesc - used in reverted ALTER TABLE SPLIT PARTITION command\n *\n * Kept as a stub for nodetag ABI compatibility.\n */\n" }, "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 */" }, { "name": "concurrent", "c_type": "bool", "comment": null } ], "comment": "/*\n * PartitionCmd - info for ALTER TABLE/INDEX ATTACH/DETACH PARTITION commands\n */\n" }, "RangeTblEntry": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid in all RTEs:\n\t *\n\t * put alias + eref first to make dump more legible\n\t */\n" }, { "comment": "\t/* user-written alias clause, if any */\n" }, { "name": "alias", "c_type": "Alias*", "comment": null }, { "comment": "\t/* expanded reference names */\n" }, { "name": "eref", "c_type": "Alias*", "comment": null }, { "comment": "" }, { "name": "rtekind", "c_type": "RTEKind", "comment": "/* see above */" }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid for a plain relation RTE (else zero):\n\t *\n\t * inh is true for relation references that should be expanded to include\n\t * inheritance children, if the rel has any. In the parser, this will\n\t * only be true for RTE_RELATION entries. The planner also uses this\n\t * field to mark RTE_SUBQUERY entries that contain UNION ALL queries that\n\t * it has flattened into pulled-up subqueries (creating a structure much\n\t * like the effects of inheritance).\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/MERGE target, else RowShareLock if\n\t * the RTE 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\t * perminfoindex is 1-based index of the RTEPermissionInfo belonging to\n\t * this RTE in the containing struct's list of same; 0 if permissions need\n\t * not be checked for this RTE.\n\t *\n\t * As a special case, relid, relkind, rellockmode, and perminfoindex can\n\t * also be set (nonzero) in an RTE_SUBQUERY RTE. This occurs when we\n\t * convert an RTE_RELATION RTE naming a view into an RTE_SUBQUERY\n\t * containing the view's query. We still need to perform run-time locking\n\t * and permission checks on the view, even though it's not directly used\n\t * in the query anymore, and the most expedient way to do that is to\n\t * retain these fields from the old state of the RTE.\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" }, { "comment": "\t/* OID of the relation */\n" }, { "name": "relid", "c_type": "Oid", "comment": null }, { "comment": "\t/* inheritance requested? */\n" }, { "name": "inh", "c_type": "bool", "comment": null }, { "comment": "\t/* relation kind (see pg_class.relkind) */\n" }, { "name": "relkind", "c_type": "char", "comment": null }, { "comment": "\t/* lock level that query requires on the rel */\n" }, { "name": "rellockmode", "c_type": "int", "comment": null }, { "comment": "\t/* index of RTEPermissionInfo entry, or 0 */\n" }, { "name": "perminfoindex", "c_type": "Index", "comment": null }, { "comment": "\t/* sampling info, or NULL */\n" }, { "name": "tablesample", "c_type": "TableSampleClause*", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid for a subquery RTE (else NULL):\n\t */\n" }, { "comment": "\t/* the sub-query */\n" }, { "name": "subquery", "c_type": "Query*", "comment": null }, { "comment": "\t/* is from security_barrier view? */\n" }, { "name": "security_barrier", "c_type": "bool", "comment": null }, { "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 * Vars appearing within joinaliasvars are marked with varnullingrels sets\n\t * that describe the nulling effects of this join and lower ones. This is\n\t * essential for FULL JOIN cases, because the COALESCE expression only\n\t * describes the semantics correctly if its inputs have been nulled by the\n\t * join. For other cases, it allows expandRTE() to generate a valid\n\t * representation of the join's output without consulting additional\n\t * parser state.\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": null }, { "comment": "\t/* number of merged (JOIN USING) columns */\n" }, { "name": "joinmergedcols", "c_type": "int", "comment": null }, { "comment": "\t/* list of alias-var expansions */\n" }, { "name": "joinaliasvars", "c_type": "List*", "comment": null }, { "comment": "\t/* left-side input column numbers */\n" }, { "name": "joinleftcols", "c_type": "List*", "comment": null }, { "comment": "\t/* right-side input column numbers */\n" }, { "name": "joinrightcols", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * join_using_alias is an alias clause attached directly to JOIN/USING. It\n\t * is different from the alias field (below) in that it does not hide the\n\t * range variables of the tables being joined.\n\t */\n" }, { "name": "join_using_alias", "c_type": "Alias*", "comment": null }, { "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" }, { "comment": "\t/* list of RangeTblFunction nodes */\n" }, { "name": "functions", "c_type": "List*", "comment": null }, { "comment": "\t/* is this called WITH ORDINALITY? */\n" }, { "name": "funcordinality", "c_type": "bool", "comment": null }, { "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" }, { "comment": "\t/* list of expression lists */\n" }, { "name": "values_lists", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid for a CTE RTE (else NULL/zero):\n\t */\n" }, { "comment": "\t/* name of the WITH list item */\n" }, { "name": "ctename", "c_type": "char*", "comment": null }, { "comment": "\t/* number of query levels up */\n" }, { "name": "ctelevelsup", "c_type": "Index", "comment": null }, { "comment": "\t/* is this a recursive self-reference? */\n" }, { "name": "self_reference", "c_type": "bool", "comment": null }, { "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" }, { "comment": "\t/* OID list of column type OIDs */\n" }, { "name": "coltypes", "c_type": "List*", "comment": null }, { "comment": "\t/* integer list of column typmods */\n" }, { "name": "coltypmods", "c_type": "List*", "comment": null }, { "comment": "\t/* OID list of column collation OIDs */\n" }, { "name": "colcollations", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid for ENR RTEs (else NULL/zero):\n\t */\n" }, { "comment": "\t/* name of ephemeral named relation */\n" }, { "name": "enrname", "c_type": "char*", "comment": null }, { "comment": "\t/* estimated or actual from caller */\n" }, { "name": "enrtuples", "c_type": "Cardinality", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid in all RTEs:\n\t */\n" }, { "comment": "\t/* was LATERAL specified? */\n" }, { "name": "lateral", "c_type": "bool", "comment": null }, { "comment": "\t/* present in FROM clause? */\n" }, { "name": "inFromCl", "c_type": "bool", "comment": null }, { "comment": "\t/* security barrier quals to apply, if any */\n" }, { "name": "securityQuals", "c_type": "List*", "comment": null } ], "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 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 during parsing (except in transformLockingClause,\n *\t q.v.); the parser now uses a separate \"namespace\" data structure to\n *\t control visibility. But it is needed by ruleutils.c to determine\n *\t whether RTEs should be shown in decompiled queries.\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" }, "RTEPermissionInfo": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "name": "relid", "c_type": "Oid", "comment": "/* relation OID */" }, { "name": "inh", "c_type": "bool", "comment": "/* separately check inheritance children? */" }, { "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 */" } ], "comment": "/*\n * RTEPermissionInfo\n * \t\tPer-relation information for permission checking. Added to the Query\n * \t\tnode by the parser when adding the corresponding RTE to the query\n * \t\trange table and subsequently editorialized on by the rewriter if\n * \t\tneeded after rule expansion.\n *\n * Only the relations directly mentioned in the query are checked for\n * access permissions by the core executor, so only their RTEPermissionInfos\n * are present in the Query. However, extensions may want to check inheritance\n * children too, depending on the value of rte->inh, so it's copied in 'inh'\n * for their perusal.\n *\n * requiredPerms and checkAsUser specify run-time access permissions checks\n * to be performed at query startup. The user must have *all* of the\n * permissions that are OR'd together in requiredPerms (never 0!). If\n * checkAsUser is not zero, then do the permissions checks using the access\n * rights of that user, not the current effective user ID. (This allows rules\n * to act as setuid gateways.)\n *\n * For SELECT/INSERT/UPDATE permissions, if the user doesn't have table-wide\n * permissions then it is sufficient to have the permissions on all columns\n * identified in selectedCols (for SELECT) and/or insertedCols and/or\n * updatedCols (INSERT with ON CONFLICT DO UPDATE may have all 3).\n * selectedCols, insertedCols and updatedCols are bitmapsets, which cannot have\n * negative integer members, so we subtract FirstLowInvalidHeapAttributeNumber\n * from column numbers before storing them in these fields. A whole-row Var\n * reference is represented by setting the bit for InvalidAttrNumber.\n *\n * updatedCols is also used in some other places, for example, to determine\n * which triggers to fire and in FDWs to know which changed columns they need\n * to ship off.\n */\n" }, "RangeTblFunction": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "name": "funcexpr", "c_type": "Node*", "comment": "/* expression tree for func call */" }, { "comment": "\t/* number of columns it contributes to RTE */\n" }, { "name": "funccolcount", "c_type": "int", "comment": null }, { "comment": "\t/* These fields record the contents of a column definition list, if any: */\n" }, { "comment": "\t/* column names (list of String) */\n" }, { "name": "funccolnames", "c_type": "List*", "comment": null }, { "comment": "\t/* OID list of column type OIDs */\n" }, { "name": "funccoltypes", "c_type": "List*", "comment": null }, { "comment": "\t/* integer list of column typmods */\n" }, { "name": "funccoltypmods", "c_type": "List*", "comment": null }, { "comment": "\t/* OID list of column collation OIDs */\n" }, { "name": "funccolcollations", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/* This is set during planning for use by the executor: */\n" }, { "comment": "\t/* PARAM_EXEC Param IDs affecting this func */\n" }, { "name": "funcparams", "c_type": "Bitmapset*", "comment": null } ], "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 * The query jumbling only needs to track the function expression.\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? */" }, { "comment": "\t/* can eqop be implemented by hashing? */\n" }, { "name": "hashable", "c_type": "bool", "comment": null } ], "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": "ParseLoc", "comment": null } ], "comment": null }, "WindowClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "\t/* window name (NULL in an OVER clause) */\n" }, { "name": "name", "c_type": "char*", "comment": null }, { "comment": "\t/* referenced window name, if any */\n" }, { "name": "refname", "c_type": "char*", "comment": null }, { "name": "partitionClause", "c_type": "List*", "comment": "/* PARTITION BY list */" }, { "comment": "\t/* ORDER BY list */\n" }, { "name": "orderClause", "c_type": "List*", "comment": null }, { "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 */" }, { "comment": "\t/* in_range function for startOffset */\n" }, { "name": "startInRangeFunc", "c_type": "Oid", "comment": null }, { "comment": "\t/* in_range function for endOffset */\n" }, { "name": "endInRangeFunc", "c_type": "Oid", "comment": null }, { "comment": "\t/* collation for in_range tests */\n" }, { "name": "inRangeColl", "c_type": "Oid", "comment": null }, { "comment": "\t/* use ASC sort order for in_range tests? */\n" }, { "name": "inRangeAsc", "c_type": "bool", "comment": null }, { "comment": "\t/* nulls sort first for in_range tests? */\n" }, { "name": "inRangeNullsFirst", "c_type": "bool", "comment": null }, { "name": "winref", "c_type": "Index", "comment": "/* ID referenced by window functions */" }, { "comment": "\t/* did we copy orderClause from refname? */\n" }, { "name": "copiedOrder", "c_type": "bool", "comment": null } ], "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 * partitionClause is sanitized by the query planner to remove any columns or\n * expressions belonging to redundant PathKeys.\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 * The information relevant for the query jumbling is the partition clause\n * type and its bounds.\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": "ParseLoc", "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": "ParseLoc", "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": "ParseLoc", "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" }, "CTESearchClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "search_col_list", "c_type": "List*", "comment": null }, { "name": "search_breadth_first", "c_type": "bool", "comment": null }, { "name": "search_seq_column", "c_type": "char*", "comment": null }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "comment": null }, "CTECycleClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "cycle_col_list", "c_type": "List*", "comment": null }, { "name": "cycle_mark_column", "c_type": "char*", "comment": null }, { "name": "cycle_mark_value", "c_type": "Node*", "comment": null }, { "name": "cycle_mark_default", "c_type": "Node*", "comment": null }, { "name": "cycle_path_column", "c_type": "char*", "comment": null }, { "name": "location", "c_type": "ParseLoc", "comment": null }, { "comment": "\t/* These fields are set during parse analysis: */\n" }, { "name": "cycle_mark_type", "c_type": "Oid", "comment": "/* common type of _value and _default */" }, { "name": "cycle_mark_typmod", "c_type": "int", "comment": null }, { "name": "cycle_mark_collation", "c_type": "Oid", "comment": null }, { "name": "cycle_mark_neop", "c_type": "Oid", "comment": "/* <> operator for type */" } ], "comment": null }, "CommonTableExpr": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * Query name (never qualified). The string name is included in the query\n\t * jumbling because RTE_CTE RTEs need it.\n\t */\n" }, { "name": "ctename", "c_type": "char*", "comment": null }, { "comment": "\t/* optional list of column names */\n" }, { "name": "aliascolnames", "c_type": "List*", "comment": null }, { "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": "search_clause", "c_type": "CTESearchClause*", "comment": null }, { "name": "cycle_clause", "c_type": "CTECycleClause*", "comment": null }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" }, { "comment": "\t/* These fields are set during parse analysis: */\n" }, { "comment": "\t/* is this CTE actually recursive? */\n" }, { "name": "cterecursive", "c_type": "bool", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * Number of RTEs referencing this CTE (excluding internal\n\t * self-references), irrelevant for query jumbling.\n\t */\n" }, { "name": "cterefcount", "c_type": "int", "comment": null }, { "comment": "\t/* list of output column names */\n" }, { "name": "ctecolnames", "c_type": "List*", "comment": null }, { "comment": "\t/* OID list of output column type OIDs */\n" }, { "name": "ctecoltypes", "c_type": "List*", "comment": null }, { "comment": "\t/* integer list of output column typmods */\n" }, { "name": "ctecoltypmods", "c_type": "List*", "comment": null }, { "comment": "\t/* OID list of column collation OIDs */\n" }, { "name": "ctecolcollations", "c_type": "List*", "comment": null } ], "comment": null }, "MergeWhenClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "matchKind", "c_type": "MergeMatchKind", "comment": "/* MATCHED/NOT MATCHED BY SOURCE/TARGET */" }, { "name": "commandType", "c_type": "CmdType", "comment": "/* INSERT/UPDATE/DELETE/DO NOTHING */" }, { "name": "override", "c_type": "OverridingKind", "comment": "/* OVERRIDING clause */" }, { "name": "condition", "c_type": "Node*", "comment": "/* WHEN conditions (raw parser) */" }, { "name": "targetList", "c_type": "List*", "comment": "/* INSERT/UPDATE targetlist */" }, { "comment": "\t/* the following members are only used in INSERT actions */\n" }, { "name": "values", "c_type": "List*", "comment": "/* VALUES to INSERT, or NULL */" } ], "comment": "/*\n * MergeWhenClause -\n *\t\traw parser representation of a WHEN clause in a MERGE statement\n *\n * This is transformed into MergeAction by parse analysis\n */\n" }, "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" }, "JsonOutput": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "typeName", "c_type": "TypeName*", "comment": "/* RETURNING type name, if specified */" }, { "name": "returning", "c_type": "JsonReturning*", "comment": "/* RETURNING FORMAT clause and type Oids */" } ], "comment": "/*\n * JsonOutput -\n *\t\trepresentation of JSON output clause (RETURNING type [FORMAT format])\n */\n" }, "JsonArgument": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "val", "c_type": "JsonValueExpr*", "comment": "/* argument value expression */" }, { "name": "name", "c_type": "char*", "comment": "/* argument name */" } ], "comment": "/*\n * JsonArgument -\n *\t\trepresentation of argument from JSON PASSING clause\n */\n" }, "JsonFuncExpr": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "op", "c_type": "JsonExprOp", "comment": "/* expression type */" }, { "name": "column_name", "c_type": "char*", "comment": "/* JSON_TABLE() column name or NULL if this is\n\t\t\t\t\t\t\t\t * not for a JSON_TABLE() */\n" }, { "name": "context_item", "c_type": "JsonValueExpr*", "comment": "/* context item expression */" }, { "name": "pathspec", "c_type": "Node*", "comment": "/* JSON path specification expression */" }, { "name": "passing", "c_type": "List*", "comment": "/* list of PASSING clause arguments, if any */" }, { "name": "output", "c_type": "JsonOutput*", "comment": "/* output clause, if specified */" }, { "name": "on_empty", "c_type": "JsonBehavior*", "comment": "/* ON EMPTY behavior */" }, { "name": "on_error", "c_type": "JsonBehavior*", "comment": "/* ON ERROR behavior */" }, { "name": "wrapper", "c_type": "JsonWrapper", "comment": "/* array wrapper behavior (JSON_QUERY only) */" }, { "name": "quotes", "c_type": "JsonQuotes", "comment": "/* omit or keep quotes? (JSON_QUERY only) */" }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * JsonFuncExpr -\n *\t\tuntransformed representation of function expressions for\n *\t\tSQL/JSON query functions\n */\n" }, "JsonTablePathSpec": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "name": "string", "c_type": "Node*", "comment": null }, { "name": "name", "c_type": "char*", "comment": null }, { "name": "name_location", "c_type": "ParseLoc", "comment": null }, { "name": "location", "c_type": "ParseLoc", "comment": "/* location of 'string' */" } ], "comment": "/*\n * JsonTablePathSpec\n *\t\tuntransformed specification of JSON path expression with an optional\n *\t\tname\n */\n" }, "JsonTable": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "context_item", "c_type": "JsonValueExpr*", "comment": "/* context item expression */" }, { "name": "pathspec", "c_type": "JsonTablePathSpec*", "comment": "/* JSON path specification */" }, { "name": "passing", "c_type": "List*", "comment": "/* list of PASSING clause arguments, if any */" }, { "name": "columns", "c_type": "List*", "comment": "/* list of JsonTableColumn */" }, { "name": "on_error", "c_type": "JsonBehavior*", "comment": "/* ON ERROR behavior */" }, { "name": "alias", "c_type": "Alias*", "comment": "/* table alias in FROM clause */" }, { "name": "lateral", "c_type": "bool", "comment": "/* does it have LATERAL prefix? */" }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * JsonTable -\n *\t\tuntransformed representation of JSON_TABLE\n */\n" }, "JsonTableColumn": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "coltype", "c_type": "JsonTableColumnType", "comment": "/* column type */" }, { "name": "name", "c_type": "char*", "comment": "/* column name */" }, { "name": "typeName", "c_type": "TypeName*", "comment": "/* column type name */" }, { "name": "pathspec", "c_type": "JsonTablePathSpec*", "comment": "/* JSON path specification */" }, { "name": "format", "c_type": "JsonFormat*", "comment": "/* JSON format clause, if specified */" }, { "name": "wrapper", "c_type": "JsonWrapper", "comment": "/* WRAPPER behavior for formatted columns */" }, { "name": "quotes", "c_type": "JsonQuotes", "comment": "/* omit or keep quotes on scalar strings? */" }, { "name": "columns", "c_type": "List*", "comment": "/* nested columns */" }, { "name": "on_empty", "c_type": "JsonBehavior*", "comment": "/* ON EMPTY behavior */" }, { "name": "on_error", "c_type": "JsonBehavior*", "comment": "/* ON ERROR behavior */" }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * JsonTableColumn -\n *\t\tuntransformed representation of JSON_TABLE column\n */\n" }, "JsonKeyValue": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "key", "c_type": "Expr*", "comment": "/* key expression */" }, { "name": "value", "c_type": "JsonValueExpr*", "comment": "/* JSON value expression */" } ], "comment": "/*\n * JsonKeyValue -\n *\t\tuntransformed representation of JSON object key-value pair for\n *\t\tJSON_OBJECT() and JSON_OBJECTAGG()\n */\n" }, "JsonParseExpr": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "expr", "c_type": "JsonValueExpr*", "comment": "/* string expression */" }, { "name": "output", "c_type": "JsonOutput*", "comment": "/* RETURNING clause, if specified */" }, { "name": "unique_keys", "c_type": "bool", "comment": "/* WITH UNIQUE KEYS? */" }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * JsonParseExpr -\n *\t\tuntransformed representation of JSON()\n */\n" }, "JsonScalarExpr": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "expr", "c_type": "Expr*", "comment": "/* scalar expression */" }, { "name": "output", "c_type": "JsonOutput*", "comment": "/* RETURNING clause, if specified */" }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * JsonScalarExpr -\n *\t\tuntransformed representation of JSON_SCALAR()\n */\n" }, "JsonSerializeExpr": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "expr", "c_type": "JsonValueExpr*", "comment": "/* json value expression */" }, { "name": "output", "c_type": "JsonOutput*", "comment": "/* RETURNING clause, if specified */" }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * JsonSerializeExpr -\n *\t\tuntransformed representation of JSON_SERIALIZE() function\n */\n" }, "JsonObjectConstructor": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "exprs", "c_type": "List*", "comment": "/* list of JsonKeyValue pairs */" }, { "name": "output", "c_type": "JsonOutput*", "comment": "/* RETURNING clause, if specified */" }, { "name": "absent_on_null", "c_type": "bool", "comment": "/* skip NULL values? */" }, { "name": "unique", "c_type": "bool", "comment": "/* check key uniqueness? */" }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * JsonObjectConstructor -\n *\t\tuntransformed representation of JSON_OBJECT() constructor\n */\n" }, "JsonArrayConstructor": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "exprs", "c_type": "List*", "comment": "/* list of JsonValueExpr elements */" }, { "name": "output", "c_type": "JsonOutput*", "comment": "/* RETURNING clause, if specified */" }, { "name": "absent_on_null", "c_type": "bool", "comment": "/* skip NULL elements? */" }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * JsonArrayConstructor -\n *\t\tuntransformed representation of JSON_ARRAY(element,...) constructor\n */\n" }, "JsonArrayQueryConstructor": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "query", "c_type": "Node*", "comment": "/* subquery */" }, { "name": "output", "c_type": "JsonOutput*", "comment": "/* RETURNING clause, if specified */" }, { "name": "format", "c_type": "JsonFormat*", "comment": "/* FORMAT clause for subquery, if specified */" }, { "name": "absent_on_null", "c_type": "bool", "comment": "/* skip NULL elements? */" }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * JsonArrayQueryConstructor -\n *\t\tuntransformed representation of JSON_ARRAY(subquery) constructor\n */\n" }, "JsonAggConstructor": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "output", "c_type": "JsonOutput*", "comment": "/* RETURNING clause, if any */" }, { "name": "agg_filter", "c_type": "Node*", "comment": "/* FILTER clause, if any */" }, { "name": "agg_order", "c_type": "List*", "comment": "/* ORDER BY clause, if any */" }, { "name": "over", "c_type": "WindowDef*", "comment": "/* OVER clause, if any */" }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * JsonAggConstructor -\n *\t\tcommon fields of untransformed representation of\n *\t\tJSON_ARRAYAGG() and JSON_OBJECTAGG()\n */\n" }, "JsonObjectAgg": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "constructor", "c_type": "JsonAggConstructor*", "comment": "/* common fields */" }, { "name": "arg", "c_type": "JsonKeyValue*", "comment": "/* object key-value pair */" }, { "name": "absent_on_null", "c_type": "bool", "comment": "/* skip NULL values? */" }, { "name": "unique", "c_type": "bool", "comment": "/* check key uniqueness? */" } ], "comment": "/*\n * JsonObjectAgg -\n *\t\tuntransformed representation of JSON_OBJECTAGG()\n */\n" }, "JsonArrayAgg": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "constructor", "c_type": "JsonAggConstructor*", "comment": "/* common fields */" }, { "name": "arg", "c_type": "JsonValueExpr*", "comment": "/* array element expression */" }, { "name": "absent_on_null", "c_type": "bool", "comment": "/* skip NULL elements? */" } ], "comment": "/*\n * JsonArrayAgg -\n *\t\tuntransformed representation of JSON_ARRAYAGG()\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": "ParseLoc", "comment": "/* start location, or -1 if unknown */" }, { "name": "stmt_len", "c_type": "ParseLoc", "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 * This is irrelevant for query jumbling, as this is not used in parsed\n * queries.\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" }, "MergeStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* target relation to merge into */" }, { "name": "sourceRelation", "c_type": "Node*", "comment": "/* source relation */" }, { "name": "joinCondition", "c_type": "Node*", "comment": "/* join condition between source and target */" }, { "name": "mergeWhenClauses", "c_type": "List*", "comment": "/* list of MergeWhenClause(es) */" }, { "name": "returningList", "c_type": "List*", "comment": "/* list of expressions to return */" }, { "name": "withClause", "c_type": "WithClause*", "comment": "/* WITH clause */" } ], "comment": "/* ----------------------\n *\t\tMerge 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": "groupDistinct", "c_type": "bool", "comment": "/* Is this GROUP BY DISTINCT? */" }, { "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 (irrelevant for query jumbling): */\n" }, { "comment": "\t/* OID list of output column type OIDs */\n" }, { "name": "colTypes", "c_type": "List*", "comment": null }, { "comment": "\t/* integer list of output column typmods */\n" }, { "name": "colTypmods", "c_type": "List*", "comment": null }, { "comment": "\t/* OID list of output column collation OIDs */\n" }, { "name": "colCollations", "c_type": "List*", "comment": null }, { "comment": "\t/* a list of SortGroupClause's */\n" }, { "name": "groupClauses", "c_type": "List*", "comment": null }, { "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" }, "ReturnStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "returnval", "c_type": "Node*", "comment": null } ], "comment": "/*\n * RETURN statement (inside SQL function body)\n */\n" }, "PLAssignStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "name": "name", "c_type": "char*", "comment": "/* initial column name */" }, { "name": "indirection", "c_type": "List*", "comment": "/* subscripts and field names, if any */" }, { "name": "nnames", "c_type": "int", "comment": "/* number of names to use in ColumnRef */" }, { "name": "val", "c_type": "SelectStmt*", "comment": "/* the PL/pgSQL expression to assign */" }, { "name": "location", "c_type": "ParseLoc", "comment": "/* name's token location, or -1 if unknown */" } ], "comment": "/* ----------------------\n *\t\tPL/pgSQL Assignment Statement\n *\n * Like SelectStmt, this is transformed into a SELECT Query.\n * However, the targetlist of the result looks more like an UPDATE.\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": "objtype", "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, access method */\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? */" }, { "name": "recurse", "c_type": "bool", "comment": "/* exec-time recursion */" } ], "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 String values) */\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": "grantor", "c_type": "RoleSpec*", "comment": null }, { "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 (input args only) */" }, { "name": "objfuncargs", "c_type": "List*", "comment": "/* list of FunctionParameter nodes */" }, { "name": "args_unspecified", "c_type": "bool", "comment": "/* argument list was omitted? */" } ], "comment": "/*\n * ObjectWithArgs represents a function/procedure/operator name plus parameter\n * identification.\n *\n * objargs includes only the types of the input parameters of the object.\n * In some contexts, that will be all we have, and it's enough to look up\n * objects according to the traditional Postgres rules (i.e., when only input\n * arguments matter).\n *\n * objfuncargs, if not NIL, carries the full specification of the parameter\n * list, including parameter mode annotations.\n *\n * Some grammar productions can set args_unspecified = true instead of\n * providing parameter info. In this case, lookup will succeed only if\n * the object name is unique. Note that otherwise, NIL parameter lists\n * mean zero arguments.\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 String */" } ], "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": "opt", "c_type": "List*", "comment": "/* options e.g. WITH GRANT 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 String values.\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 * RangeVar) */\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 */" }, { "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": "skip_validation", "c_type": "bool", "comment": "/* skip validation of existing rows? */" }, { "name": "initially_valid", "c_type": "bool", "comment": "/* mark the new constraint as valid? */" }, { "name": "is_no_inherit", "c_type": "bool", "comment": "/* is constraint non-inheritable? */" }, { "name": "raw_expr", "c_type": "Node*", "comment": "/* CHECK or DEFAULT expression, as\n\t\t\t\t\t\t\t\t * untransformed parse tree */\n" }, { "name": "cooked_expr", "c_type": "char*", "comment": "/* CHECK or DEFAULT expression, as\n\t\t\t\t\t\t\t\t * nodeToString representation */\n" }, { "name": "generated_when", "c_type": "char", "comment": "/* ALWAYS or BY DEFAULT */" }, { "name": "inhcount", "c_type": "int", "comment": "/* initial inheritance count to apply, for\n\t\t\t\t\t\t\t\t * \"raw\" NOT NULL constraints */\n" }, { "name": "nulls_not_distinct", "c_type": "bool", "comment": "/* null treatment for UNIQUE constraints */" }, { "name": "keys", "c_type": "List*", "comment": "/* String nodes naming referenced key\n\t\t\t\t\t\t\t\t * column(s); for UNIQUE/PK/NOT NULL */\n" }, { "name": "including", "c_type": "List*", "comment": "/* String nodes naming referenced nonkey\n\t\t\t\t\t\t\t\t * column(s); for UNIQUE/PK */\n" }, { "name": "exclusions", "c_type": "List*", "comment": "/* list of (IndexElem, operator name) pairs;\n\t\t\t\t\t\t\t\t * for exclusion constraints */\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" }, { "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": "fk_del_set_cols", "c_type": "List*", "comment": "/* ON DELETE SET NULL/DEFAULT (col1, col2) */" }, { "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": "" }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "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": "replace", "c_type": "bool", "comment": "/* replace trigger if already exists */" }, { "name": "isconstraint", "c_type": "bool", "comment": "/* This is a constraint trigger */" }, { "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 String 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 */" }, { "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 String) */" }, { "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 String) */" }, { "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 String) */" }, { "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 String) */" }, { "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 String) */" }, { "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": "oldNumber", "c_type": "RelFileNumber", "comment": "/* relfilenumber of existing storage, if any */" }, { "name": "oldCreateSubid", "c_type": "SubTransactionId", "comment": "/* rd_createSubid of oldNumber */" }, { "name": "oldFirstRelfilelocatorSubid", "c_type": "SubTransactionId", "comment": "/* rd_firstRelfilelocatorSubid\n\t\t\t\t\t\t\t\t\t\t\t\t\t * of oldNumber */\n" }, { "name": "unique", "c_type": "bool", "comment": "/* is index unique? */" }, { "name": "nulls_not_distinct", "c_type": "bool", "comment": "/* null treatment for UNIQUE constraints */" }, { "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 String) */" }, { "name": "stat_types", "c_type": "List*", "comment": "/* stat types (list of String) */" }, { "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": "transformed", "c_type": "bool", "comment": "/* true when transformStatsStmt is finished */" }, { "name": "if_not_exists", "c_type": "bool", "comment": "/* do nothing if stats name already exists */" } ], "comment": "/* ----------------------\n *\t\tCreate Statistics Statement\n * ----------------------\n */\n" }, "StatsElem": { "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 */" } ], "comment": "/*\n * StatsElem - statistics parameters (used in CREATE STATISTICS)\n *\n * For a plain attribute, 'name' is the name of the referenced table column\n * and 'expr' is NULL. For an expression, 'name' is NULL and 'expr' is the\n * expression tree.\n */\n" }, "AlterStatsStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "defnames", "c_type": "List*", "comment": "/* qualified name (list of String) */" }, { "name": "stxstattarget", "c_type": "Node*", "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 */" }, { "name": "sql_body", "c_type": "Node*", "comment": null } ], "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 }, { "comment": "\t/* from the parser */\n" }, { "name": "funccall", "c_type": "FuncCall*", "comment": null }, { "comment": "\t/* transformed call, with only input args */\n" }, { "name": "funcexpr", "c_type": "FuncExpr*", "comment": null }, { "comment": "\t/* transformed output-argument expressions */\n" }, { "name": "outargs", "c_type": "List*", "comment": null } ], "comment": "/* ----------------------\n *\t\tCALL statement\n *\n * OUT-mode arguments are removed from the transformed funcexpr. The outargs\n * list contains copies of the expressions for all output arguments, in the\n * order of the procedure's declared arguments. (outargs is never evaluated,\n * but is useful to the caller as a reference for what to assign to.)\n * The transformed call state is not relevant in the query jumbling, only the\n * function call is.\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": "String*", "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 */" }, { "comment": "\t/* for savepoint commands */\n" }, { "name": "savepoint_name", "c_type": "char*", "comment": null }, { "comment": "\t/* for two-phase-commit related commands */\n" }, { "name": "gid", "c_type": "char*", "comment": null }, { "name": "chain", "c_type": "bool", "comment": "/* AND CHAIN option */" }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "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 String) */" }, { "name": "vals", "c_type": "List*", "comment": "/* enum values (list of String) */" } ], "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 String) */" }, { "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 String) */" }, { "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" }, "AlterDatabaseRefreshCollStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "dbname", "c_type": "char*", "comment": null } ], "comment": null }, "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": "params", "c_type": "List*", "comment": "/* list of DefElem nodes */" } ], "comment": "/* ----------------------\n *\t\tCluster Statement (support pbrown's cluster index implementation)\n * ----------------------\n */\n" }, "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": "objtype", "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": "params", "c_type": "List*", "comment": "/* list of DefElem nodes */" } ], "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 }, { "comment": "\t/* The name of the plan to remove, NULL if DEALLOCATE ALL */\n" }, { "name": "name", "c_type": "char*", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * True if DEALLOCATE ALL. This is redundant with \"name == NULL\", but we\n\t * make it a separate field so that exactly this condition (and not the\n\t * precise name) will be accounted for in query jumbling.\n\t */\n" }, { "name": "isall", "c_type": "bool", "comment": null }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "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 String) */" }, { "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 String) */" }, { "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 String */" }, { "name": "dicts", "c_type": "List*", "comment": "/* list of list of String */" }, { "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 }, "PublicationTable": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* relation to be published */" }, { "name": "whereClause", "c_type": "Node*", "comment": "/* qualifications */" }, { "name": "columns", "c_type": "List*", "comment": "/* List of columns in a publication table */" } ], "comment": null }, "PublicationObjSpec": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "pubobjtype", "c_type": "PublicationObjSpecType", "comment": "/* type of this publication object */" }, { "name": "name", "c_type": "char*", "comment": null }, { "name": "pubtable", "c_type": "PublicationTable*", "comment": null }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "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": "pubobjects", "c_type": "List*", "comment": "/* Optional list of publication objects */" }, { "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/*\n\t * Parameters used for ALTER PUBLICATION ... ADD/DROP/SET publication\n\t * objects.\n\t */\n" }, { "name": "pubobjects", "c_type": "List*", "comment": "/* Optional list of publication objects */" }, { "name": "for_all_tables", "c_type": "bool", "comment": "/* Special publication for all tables in db */" }, { "name": "action", "c_type": "AlterPublicationAction", "comment": "/* What action to perform with the given\n\t\t\t\t\t\t\t\t\t * objects */\n" } ], "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 String nodes. 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 }, { "comment": "" }, { "comment": "\t/* the catalog (database) name, or NULL */\n" }, { "name": "catalogname", "c_type": "char*", "comment": null }, { "comment": "" }, { "comment": "\t/* the schema name, or NULL */\n" }, { "name": "schemaname", "c_type": "char*", "comment": null }, { "comment": "" }, { "comment": "\t/* the relation/sequence name */\n" }, { "name": "relname", "c_type": "char*", "comment": null }, { "comment": "" }, { "comment": "\t/* expand rel by inheritance? recursively act on children? */\n" }, { "name": "inh", "c_type": "bool", "comment": null }, { "comment": "" }, { "comment": "\t/* see RELPERSISTENCE_* in pg_class.h */\n" }, { "name": "relpersistence", "c_type": "char", "comment": null }, { "comment": "" }, { "comment": "\t/* table alias & optional column aliases */\n" }, { "name": "alias", "c_type": "Alias*", "comment": null }, { "comment": "" }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "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 }, { "comment": "\t/* XMLTABLE or JSON_TABLE */\n" }, { "name": "functype", "c_type": "TableFuncType", "comment": null }, { "comment": "\t/* list of namespace URI expressions */\n" }, { "name": "ns_uris", "c_type": "List*", "comment": null }, { "comment": "\t/* list of namespace names or NULL */\n" }, { "name": "ns_names", "c_type": "List*", "comment": null }, { "comment": "\t/* input document expression */\n" }, { "name": "docexpr", "c_type": "Node*", "comment": null }, { "comment": "\t/* row filter expression */\n" }, { "name": "rowexpr", "c_type": "Node*", "comment": null }, { "comment": "\t/* column names (list of String) */\n" }, { "name": "colnames", "c_type": "List*", "comment": null }, { "comment": "\t/* OID list of column type OIDs */\n" }, { "name": "coltypes", "c_type": "List*", "comment": null }, { "comment": "\t/* integer list of column typmods */\n" }, { "name": "coltypmods", "c_type": "List*", "comment": null }, { "comment": "\t/* OID list of column collation OIDs */\n" }, { "name": "colcollations", "c_type": "List*", "comment": null }, { "comment": "\t/* list of column filter expressions */\n" }, { "name": "colexprs", "c_type": "List*", "comment": null }, { "comment": "\t/* list of column default expressions */\n" }, { "name": "coldefexprs", "c_type": "List*", "comment": null }, { "comment": "\t/* JSON_TABLE: list of column value expressions */\n" }, { "name": "colvalexprs", "c_type": "List*", "comment": null }, { "comment": "\t/* JSON_TABLE: list of PASSING argument expressions */\n" }, { "name": "passingvalexprs", "c_type": "List*", "comment": null }, { "comment": "\t/* nullability flag for each output column */\n" }, { "name": "notnulls", "c_type": "Bitmapset*", "comment": null }, { "comment": "\t/* JSON_TABLE plan */\n" }, { "name": "plan", "c_type": "Node*", "comment": null }, { "comment": "\t/* counts from 0; -1 if none specified */\n" }, { "name": "ordinalitycol", "c_type": "int", "comment": null }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "comment": "/*\n * TableFunc - node for a table function, such as XMLTABLE and JSON_TABLE.\n *\n * Entries in the ns_names list are either String 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 */" }, { "comment": "\t/* materialized view's SELECT query */\n" }, { "name": "viewQuery", "c_type": "Node*", "comment": null }, { "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. This is irrelevant in\n * the query jumbling as CreateTableAsStmt already includes a reference to\n * its own Query, so ignore it. (Although it's actually Query*, we declare\n * 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 }, { "comment": "" }, { "comment": "\t/*\n\t * index of this var's relation in the range table, or\n\t * INNER_VAR/OUTER_VAR/etc\n\t */\n" }, { "name": "varno", "c_type": "int", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * attribute number of this var, or zero for all attrs (\"whole-row Var\")\n\t */\n" }, { "name": "varattno", "c_type": "AttrNumber", "comment": null }, { "comment": "" }, { "comment": "\t/* pg_type OID for the type of this var */\n" }, { "name": "vartype", "c_type": "Oid", "comment": null }, { "comment": "\t/* pg_attribute typmod value */\n" }, { "name": "vartypmod", "c_type": "int32", "comment": null }, { "comment": "\t/* OID of collation, or InvalidOid if none */\n" }, { "name": "varcollid", "c_type": "Oid", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * RT indexes of outer joins that can replace the Var's value with null.\n\t * We can omit varnullingrels in the query jumble, because it's fully\n\t * determined by varno/varlevelsup plus the Var's query location.\n\t */\n" }, { "name": "varnullingrels", "c_type": "Bitmapset*", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * for subquery variables referencing outer relations; 0 in a normal var,\n\t * >0 means N levels up\n\t */\n" }, { "name": "varlevelsup", "c_type": "Index", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * varnosyn/varattnosyn are ignored for equality, because Vars with\n\t * different syntactic identifiers are semantically the same as long as\n\t * their varno/varattno match.\n\t */\n" }, { "comment": "\t/* syntactic relation index (0 if unknown) */\n" }, { "comment": "" }, { "comment": "\t/* syntactic attribute number */\n" }, { "comment": "" }, { "comment": "" }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "comment": "/* Symbols for the indexes of the special RTE entries in rules */\n" }, "Const": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "comment": "\t/* pg_type OID of the constant's datatype */\n" }, { "name": "consttype", "c_type": "Oid", "comment": null }, { "comment": "\t/* typmod value, if any */\n" }, { "name": "consttypmod", "c_type": "int32", "comment": null }, { "comment": "\t/* OID of collation, or InvalidOid if none */\n" }, { "name": "constcollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* typlen of the constant's datatype */\n" }, { "name": "constlen", "c_type": "int", "comment": null }, { "comment": "\t/* the constant's value */\n" }, { "name": "constvalue", "c_type": "Datum", "comment": null }, { "comment": "\t/* whether the constant is null (if true, constvalue is undefined) */\n" }, { "name": "constisnull", "c_type": "bool", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * Whether this datatype is passed by value. If true, then all the\n\t * information is stored in the Datum. If false, then the Datum contains\n\t * a pointer to the information.\n\t */\n" }, { "name": "constbyval", "c_type": "bool", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * token location, or -1 if unknown. All constants are tracked as\n\t * locations in query jumbling, to be marked as parameters.\n\t */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "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 * Only the constant type OID is relevant for the query jumbling.\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 */" }, { "comment": "\t/* typmod value, if known */\n" }, { "name": "paramtypmod", "c_type": "int32", "comment": null }, { "comment": "\t/* OID of collation, or InvalidOid if none */\n" }, { "name": "paramcollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "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 }, { "comment": "" }, { "comment": "\t/* pg_proc Oid of the aggregate */\n" }, { "name": "aggfnoid", "c_type": "Oid", "comment": null }, { "comment": "" }, { "comment": "\t/* type Oid of result of the aggregate */\n" }, { "name": "aggtype", "c_type": "Oid", "comment": null }, { "comment": "" }, { "comment": "\t/* OID of collation of result */\n" }, { "name": "aggcollid", "c_type": "Oid", "comment": null }, { "comment": "" }, { "comment": "\t/* OID of collation that function should use */\n" }, { "name": "inputcollid", "c_type": "Oid", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * type Oid of aggregate's transition value; ignored for equal since it\n\t * might not be set yet\n\t */\n" }, { "comment": "" }, { "comment": "" }, { "comment": "\t/* type Oids of direct and aggregated args */\n" }, { "name": "aggargtypes", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/* direct arguments, if an ordered-set agg */\n" }, { "name": "aggdirectargs", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/* aggregated arguments and sort expressions */\n" }, { "name": "args", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/* ORDER BY (list of SortGroupClause) */\n" }, { "name": "aggorder", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/* DISTINCT (list of SortGroupClause) */\n" }, { "name": "aggdistinct", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/* FILTER expression, if any */\n" }, { "name": "aggfilter", "c_type": "Expr*", "comment": null }, { "comment": "" }, { "comment": "\t/* true if argument list was really '*' */\n" }, { "name": "aggstar", "c_type": "bool", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * true if variadic arguments have been combined into an array last\n\t * argument\n\t */\n" }, { "name": "aggvariadic", "c_type": "bool", "comment": null }, { "comment": "" }, { "comment": "\t/* aggregate kind (see pg_aggregate.h) */\n" }, { "name": "aggkind", "c_type": "char", "comment": null }, { "comment": "" }, { "comment": "\t/* aggregate input already sorted */\n" }, { "comment": "" }, { "comment": "" }, { "comment": "\t/* > 0 if agg belongs to outer query */\n" }, { "name": "agglevelsup", "c_type": "Index", "comment": null }, { "comment": "" }, { "comment": "\t/* expected agg-splitting mode of parent Agg */\n" }, { "name": "aggsplit", "c_type": "AggSplit", "comment": null }, { "comment": "" }, { "comment": "\t/* unique ID within the Agg node */\n" }, { "name": "aggno", "c_type": "int", "comment": null }, { "comment": "" }, { "comment": "\t/* unique ID of transition state in the Agg */\n" }, { "name": "aggtransno", "c_type": "int", "comment": null }, { "comment": "" }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "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 * aggpresorted is set by the query planner for ORDER BY and DISTINCT\n * aggregates where the chosen plan provides presorted input for this\n * aggregate during execution.\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 * aggno and aggtransno are -1 in the parse stage, and are set in planning.\n * Aggregates with the same 'aggno' represent the same aggregate expression,\n * and can share the result. Aggregates with same 'transno' but different\n * 'aggno' can share the same transition state, only the final function needs\n * to be called separately.\n *\n * Information related to collations, transition types and internal states\n * are irrelevant for the query jumbling.\n */\n" }, "GroupingFunc": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "comment": "" }, { "comment": "\t/* arguments, not evaluated but kept for benefit of EXPLAIN etc. */\n" }, { "name": "args", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/* ressortgrouprefs of arguments */\n" }, { "name": "refs", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/* actual column positions set by planner */\n" }, { "comment": "" }, { "comment": "" }, { "comment": "\t/* same as Aggref.agglevelsup */\n" }, { "name": "agglevelsup", "c_type": "Index", "comment": null }, { "comment": "" }, { "comment": "\t/* token location */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "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 * All the fields used as information for an internal state are irrelevant\n * for the query jumbling.\n */\n" }, "WindowFunc": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "comment": "\t/* pg_proc Oid of the function */\n" }, { "name": "winfnoid", "c_type": "Oid", "comment": null }, { "comment": "\t/* type Oid of result of the window function */\n" }, { "name": "wintype", "c_type": "Oid", "comment": null }, { "comment": "\t/* OID of collation of result */\n" }, { "name": "wincollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* OID of collation that function should use */\n" }, { "name": "inputcollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* arguments to the window function */\n" }, { "name": "args", "c_type": "List*", "comment": null }, { "comment": "\t/* FILTER expression, if any */\n" }, { "name": "aggfilter", "c_type": "Expr*", "comment": null }, { "comment": "\t/* List of WindowFuncRunConditions to help short-circuit execution */\n" }, { "name": "runCondition", "c_type": "List*", "comment": null }, { "comment": "\t/* index of associated WindowClause */\n" }, { "name": "winref", "c_type": "Index", "comment": null }, { "comment": "\t/* true if argument list was really '*' */\n" }, { "name": "winstar", "c_type": "bool", "comment": null }, { "comment": "\t/* is function a simple aggregate? */\n" }, { "name": "winagg", "c_type": "bool", "comment": null }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "comment": "/*\n * WindowFunc\n *\n * Collation information is irrelevant for the query jumbling, as is the\n * internal state information of the node like \"winstar\" and \"winagg\".\n */\n" }, "WindowFuncRunCondition": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "comment": "" }, { "comment": "\t/* PG_OPERATOR OID of the operator */\n" }, { "name": "opno", "c_type": "Oid", "comment": null }, { "comment": "\t/* OID of collation that operator should use */\n" }, { "name": "inputcollid", "c_type": "Oid", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * true of WindowFunc belongs on the left of the resulting OpExpr or false\n\t * if the WindowFunc is on the right.\n\t */\n" }, { "name": "wfunc_left", "c_type": "bool", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * The Expr being compared to the WindowFunc to use in the OpExpr in the\n\t * WindowAgg's runCondition\n\t */\n" }, { "name": "arg", "c_type": "Expr*", "comment": null } ], "comment": "/*\n * WindowFuncRunCondition\n *\n * Represents intermediate OpExprs which will be used by WindowAgg to\n * short-circuit execution.\n */\n" }, "MergeSupportFunc": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "comment": "\t/* type Oid of result */\n" }, { "name": "msftype", "c_type": "Oid", "comment": null }, { "comment": "\t/* OID of collation, or InvalidOid if none */\n" }, { "name": "msfcollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "comment": "/*\n * MergeSupportFunc\n *\n * A MergeSupportFunc is a merge support function expression that can only\n * appear in the RETURNING list of a MERGE command. It returns information\n * about the currently executing merge action.\n *\n * Currently, the only supported function is MERGE_ACTION(), which returns the\n * command executed (\"INSERT\", \"UPDATE\", or \"DELETE\").\n */\n" }, "SubscriptingRef": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "comment": "\t/* type of the container proper */\n" }, { "name": "refcontainertype", "c_type": "Oid", "comment": null }, { "comment": "\t/* the container type's pg_type.typelem */\n" }, { "name": "refelemtype", "c_type": "Oid", "comment": null }, { "comment": "\t/* type of the SubscriptingRef's result */\n" }, { "name": "refrestype", "c_type": "Oid", "comment": null }, { "comment": "\t/* typmod of the result */\n" }, { "name": "reftypmod", "c_type": "int32", "comment": null }, { "comment": "\t/* collation of result, or InvalidOid if none */\n" }, { "name": "refcollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* expressions that evaluate to upper container indexes */\n" }, { "name": "refupperindexpr", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * expressions that evaluate to lower container indexes, or NIL for single\n\t * container element.\n\t */\n" }, { "name": "reflowerindexpr", "c_type": "List*", "comment": null }, { "comment": "\t/* the expression that evaluates to a container value */\n" }, { "name": "refexpr", "c_type": "Expr*", "comment": null }, { "comment": "\t/* expression for the source value, or NULL if fetch */\n" }, { "name": "refassgnexpr", "c_type": "Expr*", "comment": null } ], "comment": "/*\n * SubscriptingRef: describes a subscripting operation over a container\n * (array, etc).\n *\n * A SubscriptingRef can describe fetching a single element from a container,\n * fetching a part of a container (e.g. an array slice), storing a single\n * element into a container, or storing a slice. The \"store\" cases work with\n * an 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 * (Non-array containers may or may not support this.)\n *\n * refcontainertype is the actual container type that determines the\n * subscripting semantics. (This will generally be either the exposed type of\n * refexpr, or the base type if that is a domain.) refelemtype is the type of\n * the container's elements; this is saved for the use of the subscripting\n * functions, but is not used by the core code. refrestype, reftypmod, and\n * refcollid describe the type of the SubscriptingRef's result. In a store\n * expression, refrestype will always match refcontainertype; in a fetch,\n * it could be refelemtype for an element fetch, or refcontainertype for a\n * slice fetch, or possibly something else as determined by type-specific\n * subscripting logic. Likewise, reftypmod and refcollid will match the\n * container's properties in a store, but could be different in a fetch.\n *\n * Any internal state data is ignored for the query jumbling.\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\n * object in-place and return the same object.\n */\n" }, "FuncExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "comment": "\t/* PG_PROC OID of the function */\n" }, { "name": "funcid", "c_type": "Oid", "comment": null }, { "comment": "\t/* PG_TYPE OID of result value */\n" }, { "name": "funcresulttype", "c_type": "Oid", "comment": null }, { "comment": "\t/* true if function returns set */\n" }, { "name": "funcretset", "c_type": "bool", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * true if variadic arguments have been combined into an array last\n\t * argument\n\t */\n" }, { "name": "funcvariadic", "c_type": "bool", "comment": null }, { "comment": "\t/* how to display this function call */\n" }, { "name": "funcformat", "c_type": "CoercionForm", "comment": null }, { "comment": "\t/* OID of collation of result */\n" }, { "name": "funccollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* OID of collation that function should use */\n" }, { "name": "inputcollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* arguments to the function */\n" }, { "name": "args", "c_type": "List*", "comment": null }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "comment": "/*\n * FuncExpr - expression node for a function call\n *\n * Collation information is irrelevant for the query jumbling, only the\n * arguments and the function OID matter.\n */\n" }, "NamedArgExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "comment": "\t/* the argument expression */\n" }, { "name": "arg", "c_type": "Expr*", "comment": null }, { "comment": "\t/* the name */\n" }, { "name": "name", "c_type": "char*", "comment": null }, { "comment": "\t/* argument's number in positional notation */\n" }, { "name": "argnumber", "c_type": "int", "comment": null }, { "comment": "\t/* argument name location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "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 }, { "comment": "" }, { "comment": "\t/* PG_OPERATOR OID of the operator */\n" }, { "name": "opno", "c_type": "Oid", "comment": null }, { "comment": "" }, { "comment": "\t/* PG_PROC OID of underlying function */\n" }, { "comment": "" }, { "comment": "" }, { "comment": "\t/* PG_TYPE OID of result value */\n" }, { "name": "opresulttype", "c_type": "Oid", "comment": null }, { "comment": "" }, { "comment": "\t/* true if operator returns set */\n" }, { "name": "opretset", "c_type": "bool", "comment": null }, { "comment": "" }, { "comment": "\t/* OID of collation of result */\n" }, { "name": "opcollid", "c_type": "Oid", "comment": null }, { "comment": "" }, { "comment": "\t/* OID of collation that operator should use */\n" }, { "name": "inputcollid", "c_type": "Oid", "comment": null }, { "comment": "" }, { "comment": "\t/* arguments to the operator (1 or 2) */\n" }, { "name": "args", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "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 * Therefore, equal() will accept a zero value as being equal to other values.\n *\n * Internal state information and collation data is irrelevant for the query\n * jumbling.\n */\n" }, "ScalarArrayOpExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "comment": "" }, { "comment": "\t/* PG_OPERATOR OID of the operator */\n" }, { "name": "opno", "c_type": "Oid", "comment": null }, { "comment": "" }, { "comment": "\t/* PG_PROC OID of comparison function */\n" }, { "comment": "" }, { "comment": "" }, { "comment": "\t/* PG_PROC OID of hash func or InvalidOid */\n" }, { "comment": "" }, { "comment": "" }, { "comment": "\t/* PG_PROC OID of negator of opfuncid function or InvalidOid. See above */\n" }, { "comment": "" }, { "comment": "" }, { "comment": "\t/* true for ANY, false for ALL */\n" }, { "name": "useOr", "c_type": "bool", "comment": null }, { "comment": "" }, { "comment": "\t/* OID of collation that operator should use */\n" }, { "name": "inputcollid", "c_type": "Oid", "comment": null }, { "comment": "" }, { "comment": "\t/* the scalar and array operands */\n" }, { "name": "args", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "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 * A ScalarArrayOpExpr with a valid hashfuncid is evaluated during execution\n * by building a hash table containing the Const values from the RHS arg.\n * This table is probed during expression evaluation. The planner will set\n * hashfuncid to the hash function which must be used to build and probe the\n * hash table. The executor determines if it should use hash-based checks or\n * the more traditional means based on if the hashfuncid is set or not.\n *\n * When performing hashed NOT IN, the negfuncid will also be set to the\n * equality function which the hash table must use to build and probe the hash\n * table. opno and opfuncid will remain set to the <> operator and its\n * corresponding function and won't be used during execution. For\n * non-hashtable based NOT INs, negfuncid will be set to InvalidOid. See\n * convert_saop_to_hashed_saop().\n *\n * Similar to OpExpr, opfuncid, hashfuncid, and negfuncid are not necessarily\n * filled in right away, so will be ignored for equality if they are not set\n * yet.\n *\n * OID entries of the internal function types are irrelevant for the query\n * jumbling, but the operator OID and the arguments are.\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": "ParseLoc", "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 */" }, { "comment": "\t/* originally specified operator name */\n" }, { "name": "operName", "c_type": "List*", "comment": null }, { "comment": "\t/* subselect as Query* or raw parsetree */\n" }, { "name": "subselect", "c_type": "Node*", "comment": null }, { "name": "location", "c_type": "ParseLoc", "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 and MULTIEXPR subqueries have to\n\t\t\t\t\t\t\t\t * set these 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 or MULTIEXPR plan; they are listed in order by sub-select\n * output column position. (parParam and setParam are integer Lists, not\n * Bitmapsets, 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 * This is used only transiently during planning: by the time the plan\n * reaches the executor, all AlternativeSubPlan nodes have been removed.\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 */" }, { "comment": "\t/* type of the field (result type of this node) */\n" }, { "name": "resulttype", "c_type": "Oid", "comment": null }, { "comment": "\t/* output typmod (usually -1) */\n" }, { "name": "resulttypmod", "c_type": "int32", "comment": null }, { "comment": "\t/* OID of collation of the field */\n" }, { "name": "resultcollid", "c_type": "Oid", "comment": null } ], "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) */" }, { "comment": "\t/* integer list of field attnums */\n" }, { "name": "fieldnums", "c_type": "List*", "comment": null }, { "comment": "\t/* type of result (same as type of arg) */\n" }, { "name": "resulttype", "c_type": "Oid", "comment": null }, { "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 */" }, { "comment": "\t/* output typmod (usually -1) */\n" }, { "name": "resulttypmod", "c_type": "int32", "comment": null }, { "comment": "\t/* OID of collation, or InvalidOid if none */\n" }, { "name": "resultcollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* how to display this node */\n" }, { "name": "relabelformat", "c_type": "CoercionForm", "comment": null }, { "name": "location", "c_type": "ParseLoc", "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" }, { "comment": "\t/* OID of collation, or InvalidOid if none */\n" }, { "name": "resultcollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* how to display this node */\n" }, { "name": "coerceformat", "c_type": "CoercionForm", "comment": null }, { "name": "location", "c_type": "ParseLoc", "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) */" }, { "comment": "\t/* output typmod (also element typmod) */\n" }, { "name": "resulttypmod", "c_type": "int32", "comment": null }, { "comment": "\t/* OID of collation, or InvalidOid if none */\n" }, { "name": "resultcollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* how to display this node */\n" }, { "name": "coerceformat", "c_type": "CoercionForm", "comment": null }, { "name": "location", "c_type": "ParseLoc", "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" }, { "comment": "\t/* how to display this node */\n" }, { "name": "convertformat", "c_type": "CoercionForm", "comment": null }, { "name": "location", "c_type": "ParseLoc", "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": "ParseLoc", "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 }, { "comment": "\t/* type of expression result */\n" }, { "name": "casetype", "c_type": "Oid", "comment": null }, { "comment": "\t/* OID of collation, or InvalidOid if none */\n" }, { "name": "casecollid", "c_type": "Oid", "comment": null }, { "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": "ParseLoc", "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": "ParseLoc", "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 */" }, { "comment": "\t/* typemod for substituted value */\n" }, { "name": "typeMod", "c_type": "int32", "comment": null }, { "comment": "\t/* collation for the substituted value */\n" }, { "name": "collation", "c_type": "Oid", "comment": null } ], "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 *\t* Placeholder for intermediate results in some SQL/JSON expression nodes,\n *\t such as JsonConstructorExpr.\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 }, { "comment": "\t/* type of expression result */\n" }, { "name": "array_typeid", "c_type": "Oid", "comment": null }, { "comment": "\t/* OID of collation, or InvalidOid if none */\n" }, { "name": "array_collid", "c_type": "Oid", "comment": null }, { "comment": "\t/* common type of array elements */\n" }, { "name": "element_typeid", "c_type": "Oid", "comment": null }, { "comment": "\t/* the array elements or sub-arrays */\n" }, { "name": "elements", "c_type": "List*", "comment": null }, { "comment": "\t/* true if elements are sub-arrays */\n" }, { "name": "multidims", "c_type": "bool", "comment": null }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "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 */" }, { "comment": "" }, { "comment": "\t/* RECORDOID or a composite type's ID */\n" }, { "name": "row_typeid", "c_type": "Oid", "comment": null }, { "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" }, { "comment": "" }, { "comment": "\t/* how to display this node */\n" }, { "name": "row_format", "c_type": "CoercionForm", "comment": null }, { "comment": "" }, { "comment": "\t/* list of String, or NIL */\n" }, { "name": "colnames", "c_type": "List*", "comment": null }, { "comment": "" }, { "name": "location", "c_type": "ParseLoc", "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 if the ROW() result is of type RECORD.\n * Names *must* be provided if row_typeid is RECORDOID; but if it is a\n * named composite type, colnames will be ignored in favor of using the\n * type's cataloged field names, so colnames should be NIL. Like the\n * args list, colnames is defined to be one-for-one with physical fields\n * of the rowtype (although dropped columns shouldn't appear in the\n * RECORD case, so this fine point is currently moot).\n */\n" }, "RowCompareExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "comment": "" }, { "comment": "\t/* LT LE GE or GT, never EQ or NE */\n" }, { "name": "rctype", "c_type": "RowCompareType", "comment": null }, { "comment": "\t/* OID list of pairwise comparison ops */\n" }, { "name": "opnos", "c_type": "List*", "comment": null }, { "comment": "\t/* OID list of containing operator families */\n" }, { "name": "opfamilies", "c_type": "List*", "comment": null }, { "comment": "\t/* OID list of collations for comparisons */\n" }, { "name": "inputcollids", "c_type": "List*", "comment": null }, { "comment": "\t/* the left-hand input arguments */\n" }, { "name": "largs", "c_type": "List*", "comment": null }, { "comment": "\t/* the right-hand input arguments */\n" }, { "name": "rargs", "c_type": "List*", "comment": null } ], "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 }, { "comment": "\t/* type of expression result */\n" }, { "name": "coalescetype", "c_type": "Oid", "comment": null }, { "comment": "\t/* OID of collation, or InvalidOid if none */\n" }, { "name": "coalescecollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* the arguments */\n" }, { "name": "args", "c_type": "List*", "comment": null }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "comment": "/*\n * CoalesceExpr - a COALESCE expression\n */\n" }, "MinMaxExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "comment": "\t/* common type of arguments and result */\n" }, { "name": "minmaxtype", "c_type": "Oid", "comment": null }, { "comment": "\t/* OID of collation of result */\n" }, { "name": "minmaxcollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* OID of collation that function should use */\n" }, { "name": "inputcollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* function to execute */\n" }, { "name": "op", "c_type": "MinMaxOp", "comment": null }, { "comment": "\t/* the arguments */\n" }, { "name": "args", "c_type": "List*", "comment": null }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "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 */" }, { "comment": "" }, { "comment": "\t/*\n\t * Result type/typmod. Type is fully determined by \"op\", so no need to\n\t * include this Oid in the query jumbling.\n\t */\n" }, { "name": "type", "c_type": "Oid", "comment": null }, { "name": "typmod", "c_type": "int32", "comment": null }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": null }, "XmlExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "comment": "\t/* xml function ID */\n" }, { "name": "op", "c_type": "XmlExprOp", "comment": null }, { "comment": "\t/* name in xml(NAME foo ...) syntaxes */\n" }, { "name": "name", "c_type": "char*", "comment": null }, { "comment": "\t/* non-XML expressions for xml_attributes */\n" }, { "name": "named_args", "c_type": "List*", "comment": null }, { "comment": "\t/* parallel list of String values */\n" }, { "name": "arg_names", "c_type": "List*", "comment": null }, { "comment": "\t/* list of expressions */\n" }, { "name": "args", "c_type": "List*", "comment": null }, { "comment": "\t/* DOCUMENT or CONTENT */\n" }, { "name": "xmloption", "c_type": "XmlOptionType", "comment": null }, { "comment": "\t/* INDENT option for XMLSERIALIZE */\n" }, { "name": "indent", "c_type": "bool", "comment": null }, { "comment": "\t/* target type/typmod for XMLSERIALIZE */\n" }, { "name": "type", "c_type": "Oid", "comment": null }, { "name": "typmod", "c_type": "int32", "comment": null }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "comment": null }, "JsonFormat": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "format_type", "c_type": "JsonFormatType", "comment": "/* format type */" }, { "name": "encoding", "c_type": "JsonEncoding", "comment": "/* JSON encoding */" }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * JsonFormat -\n *\t\trepresentation of JSON FORMAT clause\n */\n" }, "JsonReturning": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "format", "c_type": "JsonFormat*", "comment": "/* output JSON format */" }, { "name": "typid", "c_type": "Oid", "comment": "/* target type Oid */" }, { "name": "typmod", "c_type": "int32", "comment": "/* target type modifier */" } ], "comment": "/*\n * JsonReturning -\n *\t\ttransformed representation of JSON RETURNING clause\n */\n" }, "JsonValueExpr": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "raw_expr", "c_type": "Expr*", "comment": "/* raw expression */" }, { "name": "formatted_expr", "c_type": "Expr*", "comment": "/* formatted expression */" }, { "name": "format", "c_type": "JsonFormat*", "comment": "/* FORMAT clause, if specified */" } ], "comment": "/*\n * JsonValueExpr -\n *\t\trepresentation of JSON value expression (expr [FORMAT JsonFormat])\n *\n * The actual value is obtained by evaluating formatted_expr. raw_expr is\n * only there for displaying the original user-written expression and is not\n * evaluated by ExecInterpExpr() and eval_const_expressions_mutator().\n */\n" }, "JsonConstructorExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "type", "c_type": "JsonConstructorType", "comment": "/* constructor type */" }, { "name": "args", "c_type": "List*", "comment": null }, { "name": "func", "c_type": "Expr*", "comment": "/* underlying json[b]_xxx() function call */" }, { "name": "coercion", "c_type": "Expr*", "comment": "/* coercion to RETURNING type */" }, { "name": "returning", "c_type": "JsonReturning*", "comment": "/* RETURNING clause */" }, { "name": "absent_on_null", "c_type": "bool", "comment": "/* ABSENT ON NULL? */" }, { "name": "unique", "c_type": "bool", "comment": "/* WITH UNIQUE KEYS? (JSON_OBJECT[AGG] only) */" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "comment": "/*\n * JsonConstructorExpr -\n *\t\twrapper over FuncExpr/Aggref/WindowFunc for SQL/JSON constructors\n */\n" }, "JsonIsPredicate": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "expr", "c_type": "Node*", "comment": "/* subject expression */" }, { "name": "format", "c_type": "JsonFormat*", "comment": "/* FORMAT clause, if specified */" }, { "name": "item_type", "c_type": "JsonValueType", "comment": "/* JSON item type */" }, { "name": "unique_keys", "c_type": "bool", "comment": "/* check key uniqueness? */" }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * JsonIsPredicate -\n *\t\trepresentation of IS JSON predicate\n */\n" }, "JsonBehavior": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "name": "btype", "c_type": "JsonBehaviorType", "comment": null }, { "name": "expr", "c_type": "Node*", "comment": null }, { "name": "coerce", "c_type": "bool", "comment": null }, { "name": "location", "c_type": "ParseLoc", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * JsonBehavior\n *\t\tSpecifications for ON ERROR / ON EMPTY behaviors of SQL/JSON\n *\t\tquery functions specified by a JsonExpr\n *\n * 'expr' is the expression to emit when a given behavior (EMPTY or ERROR)\n * occurs on evaluating the SQL/JSON query function. 'coerce' is set to true\n * if 'expr' isn't already of the expected target type given by\n * JsonExpr.returning.\n */\n" }, "JsonExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "comment": "" }, { "name": "op", "c_type": "JsonExprOp", "comment": null }, { "comment": "" }, { "name": "column_name", "c_type": "char*", "comment": "/* JSON_TABLE() column name or NULL if this is\n\t\t\t\t\t\t\t\t * not for a JSON_TABLE() */\n" }, { "comment": "" }, { "comment": "\t/* jsonb-valued expression to query */\n" }, { "name": "formatted_expr", "c_type": "Node*", "comment": null }, { "comment": "" }, { "comment": "\t/* Format of the above expression needed by ruleutils.c */\n" }, { "name": "format", "c_type": "JsonFormat*", "comment": null }, { "comment": "" }, { "comment": "\t/* jsonpath-valued expression containing the query pattern */\n" }, { "name": "path_spec", "c_type": "Node*", "comment": null }, { "comment": "" }, { "comment": "\t/* Expected type/format of the output. */\n" }, { "name": "returning", "c_type": "JsonReturning*", "comment": null }, { "comment": "" }, { "comment": "\t/* Information about the PASSING argument expressions */\n" }, { "name": "passing_names", "c_type": "List*", "comment": null }, { "name": "passing_values", "c_type": "List*", "comment": null }, { "comment": "" }, { "comment": "\t/* User-specified or default ON EMPTY and ON ERROR behaviors */\n" }, { "name": "on_empty", "c_type": "JsonBehavior*", "comment": null }, { "name": "on_error", "c_type": "JsonBehavior*", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * Information about converting the result of jsonpath functions\n\t * JsonPathQuery() and JsonPathValue() to the RETURNING type.\n\t */\n" }, { "name": "use_io_coercion", "c_type": "bool", "comment": null }, { "name": "use_json_coercion", "c_type": "bool", "comment": null }, { "comment": "" }, { "comment": "\t/* WRAPPER specification for JSON_QUERY */\n" }, { "name": "wrapper", "c_type": "JsonWrapper", "comment": null }, { "comment": "" }, { "comment": "\t/* KEEP or OMIT QUOTES for singleton scalars returned by JSON_QUERY() */\n" }, { "name": "omit_quotes", "c_type": "bool", "comment": null }, { "comment": "" }, { "comment": "\t/* JsonExpr's collation. */\n" }, { "name": "collation", "c_type": "Oid", "comment": null }, { "comment": "" }, { "comment": "\t/* Original JsonFuncExpr's location */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "comment": "/*\n * JsonExpr -\n *\t\tTransformed representation of JSON_VALUE(), JSON_QUERY(), and\n *\t\tJSON_EXISTS()\n */\n" }, "JsonTablePath": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "name": "value", "c_type": "Const*", "comment": null }, { "name": "name", "c_type": "char*", "comment": null } ], "comment": "/*\n * JsonTablePath\n *\t\tA JSON path expression to be computed as part of evaluating\n *\t\ta JSON_TABLE plan node\n */\n" }, "JsonTablePlan": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null } ], "comment": "/*\n * JsonTablePlan -\n *\t\tAbstract class to represent different types of JSON_TABLE \"plans\".\n *\t\tA plan is used to generate a \"row pattern\" value by evaluating a JSON\n *\t\tpath expression against an input JSON document, which is then used for\n *\t\tpopulating JSON_TABLE() columns\n */\n" }, "JsonTablePathScan": { "fields": [ { "name": "plan", "c_type": "JsonTablePlan", "comment": null }, { "comment": "" }, { "comment": "\t/* JSON path to evaluate */\n" }, { "name": "path", "c_type": "JsonTablePath*", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * ERROR/EMPTY ON ERROR behavior; only significant in the plan for the\n\t * top-level path.\n\t */\n" }, { "name": "errorOnError", "c_type": "bool", "comment": null }, { "comment": "" }, { "comment": "\t/* Plan(s) for nested columns, if any. */\n" }, { "name": "child", "c_type": "JsonTablePlan*", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * 0-based index in TableFunc.colvalexprs of the 1st and the last column\n\t * covered by this plan. Both are -1 if all columns are nested and thus\n\t * computed by the child plan(s).\n\t */\n" }, { "name": "colMin", "c_type": "int", "comment": null }, { "name": "colMax", "c_type": "int", "comment": null } ], "comment": "/*\n * JSON_TABLE plan to evaluate a JSON path expression and NESTED paths, if\n * any.\n */\n" }, "JsonTableSiblingJoin": { "fields": [ { "name": "plan", "c_type": "JsonTablePlan", "comment": null }, { "comment": "" }, { "name": "lplan", "c_type": "JsonTablePlan*", "comment": null }, { "name": "rplan", "c_type": "JsonTablePlan*", "comment": null } ], "comment": "/*\n * JsonTableSiblingJoin -\n *\t\tPlan to join rows of sibling NESTED COLUMNS clauses in the same parent\n *\t\tCOLUMNS clause\n */\n" }, "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 */" }, { "comment": "\t/* T to perform field-by-field null checks */\n" }, { "name": "argisrow", "c_type": "bool", "comment": null }, { "name": "location", "c_type": "ParseLoc", "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": "ParseLoc", "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" }, "MergeAction": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "matchKind", "c_type": "MergeMatchKind", "comment": "/* MATCHED/NOT MATCHED BY SOURCE/TARGET */" }, { "name": "commandType", "c_type": "CmdType", "comment": "/* INSERT/UPDATE/DELETE/DO NOTHING */" }, { "comment": "\t/* OVERRIDING clause */\n" }, { "name": "override", "c_type": "OverridingKind", "comment": null }, { "name": "qual", "c_type": "Node*", "comment": "/* transformed WHEN conditions */" }, { "name": "targetList", "c_type": "List*", "comment": "/* the target list (of TargetEntry) */" }, { "comment": "\t/* target attribute numbers of an UPDATE */\n" }, { "name": "updateColnos", "c_type": "List*", "comment": null } ], "comment": null }, "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) */" }, { "comment": "\t/* output typmod (currently always -1) */\n" }, { "name": "resulttypmod", "c_type": "int32", "comment": null }, { "comment": "\t/* OID of collation, or InvalidOid if none */\n" }, { "name": "resultcollid", "c_type": "Oid", "comment": null }, { "comment": "\t/* how to display this node */\n" }, { "name": "coercionformat", "c_type": "CoercionForm", "comment": null }, { "name": "location", "c_type": "ParseLoc", "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 }, { "comment": "\t/* type for substituted value */\n" }, { "name": "typeId", "c_type": "Oid", "comment": null }, { "comment": "\t/* typemod for substituted value */\n" }, { "name": "typeMod", "c_type": "int32", "comment": null }, { "comment": "\t/* collation for the substituted value */\n" }, { "name": "collation", "c_type": "Oid", "comment": null }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "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 }, { "comment": "\t/* type for substituted value */\n" }, { "name": "typeId", "c_type": "Oid", "comment": null }, { "comment": "\t/* typemod for substituted value */\n" }, { "name": "typeMod", "c_type": "int32", "comment": null }, { "comment": "\t/* collation for the substituted value */\n" }, { "name": "collation", "c_type": "Oid", "comment": null }, { "comment": "\t/* token location, or -1 if unknown */\n" }, { "name": "location", "c_type": "ParseLoc", "comment": null } ], "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 * Also, cvarno will always be a true RT index, never INNER_VAR etc.\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 }, { "comment": "\t/* expression to evaluate */\n" }, { "name": "expr", "c_type": "Expr*", "comment": null }, { "comment": "\t/* attribute number (see notes above) */\n" }, { "name": "resno", "c_type": "AttrNumber", "comment": null }, { "comment": "\t/* name of the column (could be NULL) */\n" }, { "name": "resname", "c_type": "char*", "comment": null }, { "comment": "\t/* nonzero if referenced by a sort/group clause */\n" }, { "name": "ressortgroupref", "c_type": "Index", "comment": null }, { "comment": "\t/* OID of column's source table */\n" }, { "name": "resorigtbl", "c_type": "Oid", "comment": null }, { "comment": "\t/* column's number in source table */\n" }, { "name": "resorigcol", "c_type": "AttrNumber", "comment": null }, { "comment": "\t/* set to true to eliminate the attribute from final target list */\n" }, { "name": "resjunk", "c_type": "bool", "comment": null } ], "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 * In an INSERT, the rewriter and planner will normalize the tlist by\n * reordering it into physical column order and filling in default values\n * for any columns not assigned values by the original query. In an UPDATE,\n * after the rewriter merges multiple assignments for the same column, the\n * planner extracts the target-column numbers into a separate \"update_colnos\"\n * list, and then renumbers the tlist elements serially. Thus, tlist resnos\n * match ordinal position in all tlists seen by the executor; but it is wrong\n * to assume that before planning has happened.\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 */" }, { "comment": "\t/* USING clause, if any (list of String) */\n" }, { "name": "usingClause", "c_type": "List*", "comment": null }, { "comment": "\t/* alias attached to USING clause, if any */\n" }, { "name": "join_using_alias", "c_type": "Alias*", "comment": null }, { "comment": "\t/* qualifiers on join, if any */\n" }, { "name": "quals", "c_type": "Node*", "comment": null }, { "comment": "\t/* user-written alias clause, if any */\n" }, { "name": "alias", "c_type": "Alias*", "comment": null }, { "comment": "\t/* RT index assigned for join, or 0 */\n" }, { "name": "rtindex", "c_type": "int", "comment": null } ], "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 * join_using_alias is an Alias node representing the join correlation\n * name that SQL:2016 and later allow to be attached to JOIN/USING.\n * Its column alias list includes only the common column names from USING,\n * and it does not restrict visibility of the join's input tables.\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": { "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. They don't necessarily match what\n\t * is in pg_attribute, because some index opclasses store a different type\n\t * than the underlying column/expression. Therefore, use these fields for\n\t * information about the datatype being fed to the typanalyze function.\n\t */\n" }, { "name": "attstattarget", "c_type": "int", "comment": "/* -1 to use default */" }, { "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": "bits32", "comment": "/* bitmask of VACOPT_* */" }, { "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 autovacuum is logged, -1 to use\n\t\t\t\t\t\t\t\t\t * default */\n" }, { "name": "index_cleanup", "c_type": "VacOptValue", "comment": "/* Do index vacuum and cleanup */" }, { "name": "truncate", "c_type": "VacOptValue", "comment": "/* Truncate empty pages at the end */" }, { "name": "toast_parent", "c_type": "Oid", "comment": "/* for privilege checks when recursing */" }, { "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 * When adding a new VacuumParam member, consider adding it to vacuumdb as\n * well.\n */\n" }, "VacuumCutoffs": { "fields": [ { "comment": "\t/*\n\t * Existing pg_class fields at start of VACUUM\n\t */\n" }, { "name": "relfrozenxid", "c_type": "TransactionId", "comment": null }, { "name": "relminmxid", "c_type": "MultiXactId", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * OldestXmin is the Xid below which tuples deleted by any xact (that\n\t * committed) should be considered DEAD, not just RECENTLY_DEAD.\n\t *\n\t * OldestMxact is the Mxid below which MultiXacts are definitely not seen\n\t * as visible by any running transaction.\n\t *\n\t * OldestXmin and OldestMxact are also the most recent values that can\n\t * ever be passed to vac_update_relstats() as frozenxid and minmulti\n\t * arguments at the end of VACUUM. These same values should be passed\n\t * when it turns out that VACUUM will leave no unfrozen XIDs/MXIDs behind\n\t * in the table.\n\t */\n" }, { "name": "OldestXmin", "c_type": "TransactionId", "comment": null }, { "name": "OldestMxact", "c_type": "MultiXactId", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * FreezeLimit is the Xid below which all Xids are definitely frozen or\n\t * removed in pages VACUUM scans and cleanup locks.\n\t *\n\t * MultiXactCutoff is the value below which all MultiXactIds are\n\t * definitely removed from Xmax in pages VACUUM scans and cleanup locks.\n\t */\n" }, { "name": "FreezeLimit", "c_type": "TransactionId", "comment": null }, { "name": "MultiXactCutoff", "c_type": "MultiXactId", "comment": null } ], "comment": "/*\n * VacuumCutoffs is immutable state that describes the cutoffs used by VACUUM.\n * Established at the beginning of each VACUUM operation.\n */\n" }, "VacDeadItemsInfo": { "fields": [ { "name": "max_bytes", "c_type": "size_t", "comment": "/* the maximum bytes TidStore can use */" }, { "name": "num_items", "c_type": "int64", "comment": "/* current # of entries */" } ], "comment": "/*\n * VacDeadItemsInfo stores supplemental information for dead tuple TID\n * storage (i.e. TidStore).\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" } }, "../backend/parser/gramparse": { "base_yy_extra_type": { "fields": [ { "comment": "\t/*\n\t * Fields used by the core scanner.\n\t */\n" }, { "name": "core_yy_extra", "c_type": "core_yy_extra_type", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * State variables for base_yylex().\n\t */\n" }, { "name": "have_lookahead", "c_type": "bool", "comment": "/* is lookahead info valid? */" }, { "name": "lookahead_token", "c_type": "int", "comment": "/* one-token lookahead */" }, { "name": "lookahead_yylval", "c_type": "core_YYSTYPE", "comment": "/* yylval for lookahead token */" }, { "name": "lookahead_yylloc", "c_type": "YYLTYPE", "comment": "/* yylloc for lookahead token */" }, { "name": "lookahead_end", "c_type": "char*", "comment": "/* end of current token */" }, { "name": "lookahead_hold_char", "c_type": "char", "comment": "/* to be put back at *lookahead_end */" }, { "comment": "" }, { "comment": "\t/*\n\t * State variables that belong to the grammar.\n\t */\n" }, { "name": "parsetree", "c_type": "List*", "comment": "/* final parse result is delivered here */" } ], "comment": "/*\n * The YY_EXTRA data that a flex scanner allows us to pass around. Private\n * state needed for raw parsing/lexing goes here.\n */\n" } }, "nodes/value": { "Integer": { "fields": [ { "name": "ival", "c_type": "long" } ] }, "Float": { "fields": [ { "name": "fval", "c_type": "char*" } ] }, "Boolean": { "fields": [ { "name": "boolval", "c_type": "bool" } ] }, "String": { "fields": [ { "name": "sval", "c_type": "char*" } ] }, "BitString": { "fields": [ { "name": "bsval", "c_type": "char*" } ] }, "A_Const": { "fields": [ { "name": "isnull", "c_type": "bool" }, { "name": "val", "c_type": "Node" } ] } }, "nodes/pg_list": { "List": { "fields": [ { "name": "items", "c_type": "[]Node" } ] } } }libpg_query-17-6.1.0/srcdata/typedefs.json000066400000000000000000000173521477334012600204430ustar00rootroot00000000000000[ { "new_type_name": "AclMode", "source_type": "uint64", "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 32 distinct rights,\n * even though AclMode is defined as uint64. 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": "ParseLoc", "source_type": "int", "comment": "/*\n * Typedef for parse location. This is just an int, but this way\n * gen_node_support.pl knows which fields should get special treatment for\n * location values.\n *\n * -1 is used for unknown.\n */\n" }, { "new_type_name": "Selectivity", "source_type": "double", "comment": "/*\n * Typedefs for identifying qualifier selectivities, plan costs, and row\n * counts as such. These are just plain \"double\"s, but declaring a variable\n * as Selectivity, Cost, or Cardinality 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": "Cardinality", "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": "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 functions below and the analogous functions 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": "ParallelVacuumState", "source_type": "ParallelVacuumState", "comment": "/* Abstract type for parallel vacuum state */\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-17-6.1.0/test/000077500000000000000000000000001477334012600152535ustar00rootroot00000000000000libpg_query-17-6.1.0/test/complex.c000066400000000000000000011364071477334012600171020ustar00rootroot00000000000000#include #include #include #include #include #ifdef USE_VALGRIND #define TEST_LOOPS 10 #else #define TEST_LOOPS 1000 #endif // The numbers here were generated with the following vim query after selecting the union lines // // s/\$/\=printf('$%-5d', line('.')-16)/ const char* query = "select $1 as field_id \ union all select $2 \ union all select $3 \ union all select $4 \ union all select $5 \ union all select $6 \ union all select $7 \ union all select $8 \ union all select $9 \ union all select $10 \ union all select $11 \ union all select $12 \ union all select $13 \ union all select $14 \ union all select $15 \ union all select $16 \ union all select $17 \ union all select $18 \ union all select $19 \ union all select $20 \ union all select $21 \ union all select $22 \ union all select $23 \ union all select $24 \ union all select $25 \ union all select $26 \ union all select $27 \ union all select $28 \ union all select $29 \ union all select $30 \ union all select $31 \ union all select $32 \ union all select $33 \ union all select $34 \ union all select $35 \ union all select $36 \ union all select $37 \ union all select $38 \ union all select $39 \ union all select $40 \ union all select $41 \ union all select $42 \ union all select $43 \ union all select $44 \ union all select $45 \ union all select $46 \ union all select $47 \ union all select $48 \ union all select $49 \ union all select $50 \ union all select $51 \ union all select $52 \ union all select $53 \ union all select $54 \ union all select $55 \ union all select $56 \ union all select $57 \ union all select $58 \ union all select $59 \ union all select $60 \ union all select $61 \ union all select $62 \ union all select $63 \ union all select $64 \ union all select $65 \ union all select $66 \ union all select $67 \ union all select $68 \ union all select $69 \ union all select $70 \ union all select $71 \ union all select $72 \ union all select $73 \ union all select $74 \ union all select $75 \ union all select $76 \ union all select $77 \ union all select $78 \ union all select $79 \ union all select $80 \ union all select $81 \ union all select $82 \ union all select $83 \ union all select $84 \ union all select $85 \ union all select $86 \ union all select $87 \ union all select $88 \ union all select $89 \ union all select $90 \ union all select $91 \ union all select $92 \ union all select $93 \ union all select $94 \ union all select $95 \ union all select $96 \ union all select $97 \ union all select $98 \ union all select $99 \ union all select $100 \ union all select $101 \ union all select $102 \ union all select $103 \ union all select $104 \ union all select $105 \ union all select $106 \ union all select $107 \ union all select $108 \ union all select $109 \ union all select $110 \ union all select $111 \ union all select $112 \ union all select $113 \ union all select $114 \ union all select $115 \ union all select $116 \ union all select $117 \ union all select $118 \ union all select $119 \ union all select $120 \ union all select $121 \ union all select $122 \ union all select $123 \ union all select $124 \ union all select $125 \ union all select $126 \ union all select $127 \ union all select $128 \ union all select $129 \ union all select $130 \ union all select $131 \ union all select $132 \ union all select $133 \ union all select $134 \ union all select $135 \ union all select $136 \ union all select $137 \ union all select $138 \ union all select $139 \ union all select $140 \ union all select $141 \ union all select $142 \ union all select $143 \ union all select $144 \ union all select $145 \ union all select $146 \ union all select $147 \ union all select $148 \ union all select $149 \ union all select $150 \ union all select $151 \ union all select $152 \ union all select $153 \ union all select $154 \ union all select $155 \ union all select $156 \ union all select $157 \ union all select $158 \ union all select $159 \ union all select $160 \ union all select $161 \ union all select $162 \ union all select $163 \ union all select $164 \ union all select $165 \ union all select $166 \ union all select $167 \ union all select $168 \ union all select $169 \ union all select $170 \ union all select $171 \ union all select $172 \ union all select $173 \ union all select $174 \ union all select $175 \ union all select $176 \ union all select $177 \ union all select $178 \ union all select $179 \ union all select $180 \ union all select $181 \ union all select $182 \ union all select $183 \ union all select $184 \ union all select $185 \ union all select $186 \ union all select $187 \ union all select $188 \ union all select $189 \ union all select $190 \ union all select $191 \ union all select $192 \ union all select $193 \ union all select $194 \ union all select $195 \ union all select $196 \ union all select $197 \ union all select $198 \ union all select $199 \ union all select $200 \ union all select $201 \ union all select $202 \ union all select $203 \ union all select $204 \ union all select $205 \ union all select $206 \ union all select $207 \ union all select $208 \ union all select $209 \ union all select $210 \ union all select $211 \ union all select $212 \ union all select $213 \ union all select $214 \ union all select $215 \ union all select $216 \ union all select $217 \ union all select $218 \ union all select $219 \ union all select $220 \ union all select $221 \ union all select $222 \ union all select $223 \ union all select $224 \ union all select $225 \ union all select $226 \ union all select $227 \ union all select $228 \ union all select $229 \ union all select $230 \ union all select $231 \ union all select $232 \ union all select $233 \ union all select $234 \ union all select $235 \ union all select $236 \ union all select $237 \ union all select $238 \ union all select $239 \ union all select $240 \ union all select $241 \ union all select $242 \ union all select $243 \ union all select $244 \ union all select $245 \ union all select $246 \ union all select $247 \ union all select $248 \ union all select $249 \ union all select $250 \ union all select $251 \ union all select $252 \ union all select $253 \ union all select $254 \ union all select $255 \ union all select $256 \ union all select $257 \ union all select $258 \ union all select $259 \ union all select $260 \ union all select $261 \ union all select $262 \ union all select $263 \ union all select $264 \ union all select $265 \ union all select $266 \ union all select $267 \ union all select $268 \ union all select $269 \ union all select $270 \ union all select $271 \ union all select $272 \ union all select $273 \ union all select $274 \ union all select $275 \ union all select $276 \ union all select $277 \ union all select $278 \ union all select $279 \ union all select $280 \ union all select $281 \ union all select $282 \ union all select $283 \ union all select $284 \ union all select $285 \ union all select $286 \ union all select $287 \ union all select $288 \ union all select $289 \ union all select $290 \ union all select $291 \ union all select $292 \ union all select $293 \ union all select $294 \ union all select $295 \ union all select $296 \ union all select $297 \ union all select $298 \ union all select $299 \ union all select $300 \ union all select $301 \ union all select $302 \ union all select $303 \ union all select $304 \ union all select $305 \ union all select $306 \ union all select $307 \ union all select $308 \ union all select $309 \ union all select $310 \ union all select $311 \ union all select $312 \ union all select $313 \ union all select $314 \ union all select $315 \ union all select $316 \ union all select $317 \ union all select $318 \ union all select $319 \ union all select $320 \ union all select $321 \ union all select $322 \ union all select $323 \ union all select $324 \ union all select $325 \ union all select $326 \ union all select $327 \ union all select $328 \ union all select $329 \ union all select $330 \ union all select $331 \ union all select $332 \ union all select $333 \ union all select $334 \ union all select $335 \ union all select $336 \ union all select $337 \ union all select $338 \ union all select $339 \ union all select $340 \ union all select $341 \ union all select $342 \ union all select $343 \ union all select $344 \ union all select $345 \ union all select $346 \ union all select $347 \ union all select $348 \ union all select $349 \ union all select $350 \ union all select $351 \ union all select $352 \ union all select $353 \ union all select $354 \ union all select $355 \ union all select $356 \ union all select $357 \ union all select $358 \ union all select $359 \ union all select $360 \ union all select $361 \ union all select $362 \ union all select $363 \ union all select $364 \ union all select $365 \ union all select $366 \ union all select $367 \ union all select $368 \ union all select $369 \ union all select $370 \ union all select $371 \ union all select $372 \ union all select $373 \ union all select $374 \ union all select $375 \ union all select $376 \ union all select $377 \ union all select $378 \ union all select $379 \ union all select $380 \ union all select $381 \ union all select $382 \ union all select $383 \ union all select $384 \ union all select $385 \ union all select $386 \ union all select $387 \ union all select $388 \ union all select $389 \ union all select $390 \ union all select $391 \ union all select $392 \ union all select $393 \ union all select $394 \ union all select $395 \ union all select $396 \ union all select $397 \ union all select $398 \ union all select $399 \ union all select $400 \ union all select $401 \ union all select $402 \ union all select $403 \ union all select $404 \ union all select $405 \ union all select $406 \ union all select $407 \ union all select $408 \ union all select $409 \ union all select $410 \ union all select $411 \ union all select $412 \ union all select $413 \ union all select $414 \ union all select $415 \ union all select $416 \ union all select $417 \ union all select $418 \ union all select $419 \ union all select $420 \ union all select $421 \ union all select $422 \ union all select $423 \ union all select $424 \ union all select $425 \ union all select $426 \ union all select $427 \ union all select $428 \ union all select $429 \ union all select $430 \ union all select $431 \ union all select $432 \ union all select $433 \ union all select $434 \ union all select $435 \ union all select $436 \ union all select $437 \ union all select $438 \ union all select $439 \ union all select $440 \ union all select $441 \ union all select $442 \ union all select $443 \ union all select $444 \ union all select $445 \ union all select $446 \ union all select $447 \ union all select $448 \ union all select $449 \ union all select $450 \ union all select $451 \ union all select $452 \ union all select $453 \ union all select $454 \ union all select $455 \ union all select $456 \ union all select $457 \ union all select $458 \ union all select $459 \ union all select $460 \ union all select $461 \ union all select $462 \ union all select $463 \ union all select $464 \ union all select $465 \ union all select $466 \ union all select $467 \ union all select $468 \ union all select $469 \ union all select $470 \ union all select $471 \ union all select $472 \ union all select $473 \ union all select $474 \ union all select $475 \ union all select $476 \ union all select $477 \ union all select $478 \ union all select $479 \ union all select $480 \ union all select $481 \ union all select $482 \ union all select $483 \ union all select $484 \ union all select $485 \ union all select $486 \ union all select $487 \ union all select $488 \ union all select $489 \ union all select $490 \ union all select $491 \ union all select $492 \ union all select $493 \ union all select $494 \ union all select $495 \ union all select $496 \ union all select $497 \ union all select $498 \ union all select $499 \ union all select $500 \ union all select $501 \ union all select $502 \ union all select $503 \ union all select $504 \ union all select $505 \ union all select $506 \ union all select $507 \ union all select $508 \ union all select $509 \ union all select $510 \ union all select $511 \ union all select $512 \ union all select $513 \ union all select $514 \ union all select $515 \ union all select $516 \ union all select $517 \ union all select $518 \ union all select $519 \ union all select $520 \ union all select $521 \ union all select $522 \ union all select $523 \ union all select $524 \ union all select $525 \ union all select $526 \ union all select $527 \ union all select $528 \ union all select $529 \ union all select $530 \ union all select $531 \ union all select $532 \ union all select $533 \ union all select $534 \ union all select $535 \ union all select $536 \ union all select $537 \ union all select $538 \ union all select $539 \ union all select $540 \ union all select $541 \ union all select $542 \ union all select $543 \ union all select $544 \ union all select $545 \ union all select $546 \ union all select $547 \ union all select $548 \ union all select $549 \ union all select $550 \ union all select $551 \ union all select $552 \ union all select $553 \ union all select $554 \ union all select $555 \ union all select $556 \ union all select $557 \ union all select $558 \ union all select $559 \ union all select $560 \ union all select $561 \ union all select $562 \ union all select $563 \ union all select $564 \ union all select $565 \ union all select $566 \ union all select $567 \ union all select $568 \ union all select $569 \ union all select $570 \ union all select $571 \ union all select $572 \ union all select $573 \ union all select $574 \ union all select $575 \ union all select $576 \ union all select $577 \ union all select $578 \ union all select $579 \ union all select $580 \ union all select $581 \ union all select $582 \ union all select $583 \ union all select $584 \ union all select $585 \ union all select $586 \ union all select $587 \ union all select $588 \ union all select $589 \ union all select $590 \ union all select $591 \ union all select $592 \ union all select $593 \ union all select $594 \ union all select $595 \ union all select $596 \ union all select $597 \ union all select $598 \ union all select $599 \ union all select $600 \ union all select $601 \ union all select $602 \ union all select $603 \ union all select $604 \ union all select $605 \ union all select $606 \ union all select $607 \ union all select $608 \ union all select $609 \ union all select $610 \ union all select $611 \ union all select $612 \ union all select $613 \ union all select $614 \ union all select $615 \ union all select $616 \ union all select $617 \ union all select $618 \ union all select $619 \ union all select $620 \ union all select $621 \ union all select $622 \ union all select $623 \ union all select $624 \ union all select $625 \ union all select $626 \ union all select $627 \ union all select $628 \ union all select $629 \ union all select $630 \ union all select $631 \ union all select $632 \ union all select $633 \ union all select $634 \ union all select $635 \ union all select $636 \ union all select $637 \ union all select $638 \ union all select $639 \ union all select $640 \ union all select $641 \ union all select $642 \ union all select $643 \ union all select $644 \ union all select $645 \ union all select $646 \ union all select $647 \ union all select $648 \ union all select $649 \ union all select $650 \ union all select $651 \ union all select $652 \ union all select $653 \ union all select $654 \ union all select $655 \ union all select $656 \ union all select $657 \ union all select $658 \ union all select $659 \ union all select $660 \ union all select $661 \ union all select $662 \ union all select $663 \ union all select $664 \ union all select $665 \ union all select $666 \ union all select $667 \ union all select $668 \ union all select $669 \ union all select $670 \ union all select $671 \ union all select $672 \ union all select $673 \ union all select $674 \ union all select $675 \ union all select $676 \ union all select $677 \ union all select $678 \ union all select $679 \ union all select $680 \ union all select $681 \ union all select $682 \ union all select $683 \ union all select $684 \ union all select $685 \ union all select $686 \ union all select $687 \ union all select $688 \ union all select $689 \ union all select $690 \ union all select $691 \ union all select $692 \ union all select $693 \ union all select $694 \ union all select $695 \ union all select $696 \ union all select $697 \ union all select $698 \ union all select $699 \ union all select $700 \ union all select $701 \ union all select $702 \ union all select $703 \ union all select $704 \ union all select $705 \ union all select $706 \ union all select $707 \ union all select $708 \ union all select $709 \ union all select $710 \ union all select $711 \ union all select $712 \ union all select $713 \ union all select $714 \ union all select $715 \ union all select $716 \ union all select $717 \ union all select $718 \ union all select $719 \ union all select $720 \ union all select $721 \ union all select $722 \ union all select $723 \ union all select $724 \ union all select $725 \ union all select $726 \ union all select $727 \ union all select $728 \ union all select $729 \ union all select $730 \ union all select $731 \ union all select $732 \ union all select $733 \ union all select $734 \ union all select $735 \ union all select $736 \ union all select $737 \ union all select $738 \ union all select $739 \ union all select $740 \ union all select $741 \ union all select $742 \ union all select $743 \ union all select $744 \ union all select $745 \ union all select $746 \ union all select $747 \ union all select $748 \ union all select $749 \ union all select $750 \ union all select $751 \ union all select $752 \ union all select $753 \ union all select $754 \ union all select $755 \ union all select $756 \ union all select $757 \ union all select $758 \ union all select $759 \ union all select $760 \ union all select $761 \ union all select $762 \ union all select $763 \ union all select $764 \ union all select $765 \ union all select $766 \ union all select $767 \ union all select $768 \ union all select $769 \ union all select $770 \ union all select $771 \ union all select $772 \ union all select $773 \ union all select $774 \ union all select $775 \ union all select $776 \ union all select $777 \ union all select $778 \ union all select $779 \ union all select $780 \ union all select $781 \ union all select $782 \ union all select $783 \ union all select $784 \ union all select $785 \ union all select $786 \ union all select $787 \ union all select $788 \ union all select $789 \ union all select $790 \ union all select $791 \ union all select $792 \ union all select $793 \ union all select $794 \ union all select $795 \ union all select $796 \ union all select $797 \ union all select $798 \ union all select $799 \ union all select $800 \ union all select $801 \ union all select $802 \ union all select $803 \ union all select $804 \ union all select $805 \ union all select $806 \ union all select $807 \ union all select $808 \ union all select $809 \ union all select $810 \ union all select $811 \ union all select $812 \ union all select $813 \ union all select $814 \ union all select $815 \ union all select $816 \ union all select $817 \ union all select $818 \ union all select $819 \ union all select $820 \ union all select $821 \ union all select $822 \ union all select $823 \ union all select $824 \ union all select $825 \ union all select $826 \ union all select $827 \ union all select $828 \ union all select $829 \ union all select $830 \ union all select $831 \ union all select $832 \ union all select $833 \ union all select $834 \ union all select $835 \ union all select $836 \ union all select $837 \ union all select $838 \ union all select $839 \ union all select $840 \ union all select $841 \ union all select $842 \ union all select $843 \ union all select $844 \ union all select $845 \ union all select $846 \ union all select $847 \ union all select $848 \ union all select $849 \ union all select $850 \ union all select $851 \ union all select $852 \ union all select $853 \ union all select $854 \ union all select $855 \ union all select $856 \ union all select $857 \ union all select $858 \ union all select $859 \ union all select $860 \ union all select $861 \ union all select $862 \ union all select $863 \ union all select $864 \ union all select $865 \ union all select $866 \ union all select $867 \ union all select $868 \ union all select $869 \ union all select $870 \ union all select $871 \ union all select $872 \ union all select $873 \ union all select $874 \ union all select $875 \ union all select $876 \ union all select $877 \ union all select $878 \ union all select $879 \ union all select $880 \ union all select $881 \ union all select $882 \ union all select $883 \ union all select $884 \ union all select $885 \ union all select $886 \ union all select $887 \ union all select $888 \ union all select $889 \ union all select $890 \ union all select $891 \ union all select $892 \ union all select $893 \ union all select $894 \ union all select $895 \ union all select $896 \ union all select $897 \ union all select $898 \ union all select $899 \ union all select $900 \ union all select $901 \ union all select $902 \ union all select $903 \ union all select $904 \ union all select $905 \ union all select $906 \ union all select $907 \ union all select $908 \ union all select $909 \ union all select $910 \ union all select $911 \ union all select $912 \ union all select $913 \ union all select $914 \ union all select $915 \ union all select $916 \ union all select $917 \ union all select $918 \ union all select $919 \ union all select $920 \ union all select $921 \ union all select $922 \ union all select $923 \ union all select $924 \ union all select $925 \ union all select $926 \ union all select $927 \ union all select $928 \ union all select $929 \ union all select $930 \ union all select $931 \ union all select $932 \ union all select $933 \ union all select $934 \ union all select $935 \ union all select $936 \ union all select $937 \ union all select $938 \ union all select $939 \ union all select $940 \ union all select $941 \ union all select $942 \ union all select $943 \ union all select $944 \ union all select $945 \ union all select $946 \ union all select $947 \ union all select $948 \ union all select $949 \ union all select $950 \ union all select $951 \ union all select $952 \ union all select $953 \ union all select $954 \ union all select $955 \ union all select $956 \ union all select $957 \ union all select $958 \ union all select $959 \ union all select $960 \ union all select $961 \ union all select $962 \ union all select $963 \ union all select $964 \ union all select $965 \ union all select $966 \ union all select $967 \ union all select $968 \ union all select $969 \ union all select $970 \ union all select $971 \ union all select $972 \ union all select $973 \ union all select $974 \ union all select $975 \ union all select $976 \ union all select $977 \ union all select $978 \ union all select $979 \ union all select $980 \ union all select $981 \ union all select $982 \ union all select $983 \ union all select $984 \ union all select $985 \ union all select $986 \ union all select $987 \ union all select $988 \ union all select $989 \ union all select $990 \ union all select $991 \ union all select $992 \ union all select $993 \ union all select $994 \ union all select $995 \ union all select $996 \ union all select $997 \ union all select $998 \ union all select $999 \ union all select $1000 \ union all select $1001 \ union all select $1002 \ union all select $1003 \ union all select $1004 \ union all select $1005 \ union all select $1006 \ union all select $1007 \ union all select $1008 \ union all select $1009 \ union all select $1010 \ union all select $1011 \ union all select $1012 \ union all select $1013 \ union all select $1014 \ union all select $1015 \ union all select $1016 \ union all select $1017 \ union all select $1018 \ union all select $1019 \ union all select $1020 \ union all select $1021 \ union all select $1022 \ union all select $1023 \ union all select $1024 \ union all select $1025 \ union all select $1026 \ union all select $1027 \ union all select $1028 \ union all select $1029 \ union all select $1030 \ union all select $1031 \ union all select $1032 \ union all select $1033 \ union all select $1034 \ union all select $1035 \ union all select $1036 \ union all select $1037 \ union all select $1038 \ union all select $1039 \ union all select $1040 \ union all select $1041 \ union all select $1042 \ union all select $1043 \ union all select $1044 \ union all select $1045 \ union all select $1046 \ union all select $1047 \ union all select $1048 \ union all select $1049 \ union all select $1050 \ union all select $1051 \ union all select $1052 \ union all select $1053 \ union all select $1054 \ union all select $1055 \ union all select $1056 \ union all select $1057 \ union all select $1058 \ union all select $1059 \ union all select $1060 \ union all select $1061 \ union all select $1062 \ union all select $1063 \ union all select $1064 \ union all select $1065 \ union all select $1066 \ union all select $1067 \ union all select $1068 \ union all select $1069 \ union all select $1070 \ union all select $1071 \ union all select $1072 \ union all select $1073 \ union all select $1074 \ union all select $1075 \ union all select $1076 \ union all select $1077 \ union all select $1078 \ union all select $1079 \ union all select $1080 \ union all select $1081 \ union all select $1082 \ union all select $1083 \ union all select $1084 \ union all select $1085 \ union all select $1086 \ union all select $1087 \ union all select $1088 \ union all select $1089 \ union all select $1090 \ union all select $1091 \ union all select $1092 \ union all select $1093 \ union all select $1094 \ union all select $1095 \ union all select $1096 \ union all select $1097 \ union all select $1098 \ union all select $1099 \ union all select $1100 \ union all select $1101 \ union all select $1102 \ union all select $1103 \ union all select $1104 \ union all select $1105 \ union all select $1106 \ union all select $1107 \ union all select $1108 \ union all select $1109 \ union all select $1110 \ union all select $1111 \ union all select $1112 \ union all select $1113 \ union all select $1114 \ union all select $1115 \ union all select $1116 \ union all select $1117 \ union all select $1118 \ union all select $1119 \ union all select $1120 \ union all select $1121 \ union all select $1122 \ union all select $1123 \ union all select $1124 \ union all select $1125 \ union all select $1126 \ union all select $1127 \ union all select $1128 \ union all select $1129 \ union all select $1130 \ union all select $1131 \ union all select $1132 \ union all select $1133 \ union all select $1134 \ union all select $1135 \ union all select $1136 \ union all select $1137 \ union all select $1138 \ union all select $1139 \ union all select $1140 \ union all select $1141 \ union all select $1142 \ union all select $1143 \ union all select $1144 \ union all select $1145 \ union all select $1146 \ union all select $1147 \ union all select $1148 \ union all select $1149 \ union all select $1150 \ union all select $1151 \ union all select $1152 \ union all select $1153 \ union all select $1154 \ union all select $1155 \ union all select $1156 \ union all select $1157 \ union all select $1158 \ union all select $1159 \ union all select $1160 \ union all select $1161 \ union all select $1162 \ union all select $1163 \ union all select $1164 \ union all select $1165 \ union all select $1166 \ union all select $1167 \ union all select $1168 \ union all select $1169 \ union all select $1170 \ union all select $1171 \ union all select $1172 \ union all select $1173 \ union all select $1174 \ union all select $1175 \ union all select $1176 \ union all select $1177 \ union all select $1178 \ union all select $1179 \ union all select $1180 \ union all select $1181 \ union all select $1182 \ union all select $1183 \ union all select $1184 \ union all select $1185 \ union all select $1186 \ union all select $1187 \ union all select $1188 \ union all select $1189 \ union all select $1190 \ union all select $1191 \ union all select $1192 \ union all select $1193 \ union all select $1194 \ union all select $1195 \ union all select $1196 \ union all select $1197 \ union all select $1198 \ union all select $1199 \ union all select $1200 \ union all select $1201 \ union all select $1202 \ union all select $1203 \ union all select $1204 \ union all select $1205 \ union all select $1206 \ union all select $1207 \ union all select $1208 \ union all select $1209 \ union all select $1210 \ union all select $1211 \ union all select $1212 \ union all select $1213 \ union all select $1214 \ union all select $1215 \ union all select $1216 \ union all select $1217 \ union all select $1218 \ union all select $1219 \ union all select $1220 \ union all select $1221 \ union all select $1222 \ union all select $1223 \ union all select $1224 \ union all select $1225 \ union all select $1226 \ union all select $1227 \ union all select $1228 \ union all select $1229 \ union all select $1230 \ union all select $1231 \ union all select $1232 \ union all select $1233 \ union all select $1234 \ union all select $1235 \ union all select $1236 \ union all select $1237 \ union all select $1238 \ union all select $1239 \ union all select $1240 \ union all select $1241 \ union all select $1242 \ union all select $1243 \ union all select $1244 \ union all select $1245 \ union all select $1246 \ union all select $1247 \ union all select $1248 \ union all select $1249 \ union all select $1250 \ union all select $1251 \ union all select $1252 \ union all select $1253 \ union all select $1254 \ union all select $1255 \ union all select $1256 \ union all select $1257 \ union all select $1258 \ union all select $1259 \ union all select $1260 \ union all select $1261 \ union all select $1262 \ union all select $1263 \ union all select $1264 \ union all select $1265 \ union all select $1266 \ union all select $1267 \ union all select $1268 \ union all select $1269 \ union all select $1270 \ union all select $1271 \ union all select $1272 \ union all select $1273 \ union all select $1274 \ union all select $1275 \ union all select $1276 \ union all select $1277 \ union all select $1278 \ union all select $1279 \ union all select $1280 \ union all select $1281 \ union all select $1282 \ union all select $1283 \ union all select $1284 \ union all select $1285 \ union all select $1286 \ union all select $1287 \ union all select $1288 \ union all select $1289 \ union all select $1290 \ union all select $1291 \ union all select $1292 \ union all select $1293 \ union all select $1294 \ union all select $1295 \ union all select $1296 \ union all select $1297 \ union all select $1298 \ union all select $1299 \ union all select $1300 \ union all select $1301 \ union all select $1302 \ union all select $1303 \ union all select $1304 \ union all select $1305 \ union all select $1306 \ union all select $1307 \ union all select $1308 \ union all select $1309 \ union all select $1310 \ union all select $1311 \ union all select $1312 \ union all select $1313 \ union all select $1314 \ union all select $1315 \ union all select $1316 \ union all select $1317 \ union all select $1318 \ union all select $1319 \ union all select $1320 \ union all select $1321 \ union all select $1322 \ union all select $1323 \ union all select $1324 \ union all select $1325 \ union all select $1326 \ union all select $1327 \ union all select $1328 \ union all select $1329 \ union all select $1330 \ union all select $1331 \ union all select $1332 \ union all select $1333 \ union all select $1334 \ union all select $1335 \ union all select $1336 \ union all select $1337 \ union all select $1338 \ union all select $1339 \ union all select $1340 \ union all select $1341 \ union all select $1342 \ union all select $1343 \ union all select $1344 \ union all select $1345 \ union all select $1346 \ union all select $1347 \ union all select $1348 \ union all select $1349 \ union all select $1350 \ union all select $1351 \ union all select $1352 \ union all select $1353 \ union all select $1354 \ union all select $1355 \ union all select $1356 \ union all select $1357 \ union all select $1358 \ union all select $1359 \ union all select $1360 \ union all select $1361 \ union all select $1362 \ union all select $1363 \ union all select $1364 \ union all select $1365 \ union all select $1366 \ union all select $1367 \ union all select $1368 \ union all select $1369 \ union all select $1370 \ union all select $1371 \ union all select $1372 \ union all select $1373 \ union all select $1374 \ union all select $1375 \ union all select $1376 \ union all select $1377 \ union all select $1378 \ union all select $1379 \ union all select $1380 \ union all select $1381 \ union all select $1382 \ union all select $1383 \ union all select $1384 \ union all select $1385 \ union all select $1386 \ union all select $1387 \ union all select $1388 \ union all select $1389 \ union all select $1390 \ union all select $1391 \ union all select $1392 \ union all select $1393 \ union all select $1394 \ union all select $1395 \ union all select $1396 \ union all select $1397 \ union all select $1398 \ union all select $1399 \ union all select $1400 \ union all select $1401 \ union all select $1402 \ union all select $1403 \ union all select $1404 \ union all select $1405 \ union all select $1406 \ union all select $1407 \ union all select $1408 \ union all select $1409 \ union all select $1410 \ union all select $1411 \ union all select $1412 \ union all select $1413 \ union all select $1414 \ union all select $1415 \ union all select $1416 \ union all select $1417 \ union all select $1418 \ union all select $1419 \ union all select $1420 \ union all select $1421 \ union all select $1422 \ union all select $1423 \ union all select $1424 \ union all select $1425 \ union all select $1426 \ union all select $1427 \ union all select $1428 \ union all select $1429 \ union all select $1430 \ union all select $1431 \ union all select $1432 \ union all select $1433 \ union all select $1434 \ union all select $1435 \ union all select $1436 \ union all select $1437 \ union all select $1438 \ union all select $1439 \ union all select $1440 \ union all select $1441 \ union all select $1442 \ union all select $1443 \ union all select $1444 \ union all select $1445 \ union all select $1446 \ union all select $1447 \ union all select $1448 \ union all select $1449 \ union all select $1450 \ union all select $1451 \ union all select $1452 \ union all select $1453 \ union all select $1454 \ union all select $1455 \ union all select $1456 \ union all select $1457 \ union all select $1458 \ union all select $1459 \ union all select $1460 \ union all select $1461 \ union all select $1462 \ union all select $1463 \ union all select $1464 \ union all select $1465 \ union all select $1466 \ union all select $1467 \ union all select $1468 \ union all select $1469 \ union all select $1470 \ union all select $1471 \ union all select $1472 \ union all select $1473 \ union all select $1474 \ union all select $1475 \ union all select $1476 \ union all select $1477 \ union all select $1478 \ union all select $1479 \ union all select $1480 \ union all select $1481 \ union all select $1482 \ union all select $1483 \ union all select $1484 \ union all select $1485 \ union all select $1486 \ union all select $1487 \ union all select $1488 \ union all select $1489 \ union all select $1490 \ union all select $1491 \ union all select $1492 \ union all select $1493 \ union all select $1494 \ union all select $1495 \ union all select $1496 \ union all select $1497 \ union all select $1498 \ union all select $1499 \ union all select $1500 \ union all select $1501 \ union all select $1502 \ union all select $1503 \ union all select $1504 \ union all select $1505 \ union all select $1506 \ union all select $1507 \ union all select $1508 \ union all select $1509 \ union all select $1510 \ union all select $1511 \ union all select $1512 \ union all select $1513 \ union all select $1514 \ union all select $1515 \ union all select $1516 \ union all select $1517 \ union all select $1518 \ union all select $1519 \ union all select $1520 \ union all select $1521 \ union all select $1522 \ union all select $1523 \ union all select $1524 \ union all select $1525 \ union all select $1526 \ union all select $1527 \ union all select $1528 \ union all select $1529 \ union all select $1530 \ union all select $1531 \ union all select $1532 \ union all select $1533 \ union all select $1534 \ union all select $1535 \ union all select $1536 \ union all select $1537 \ union all select $1538 \ union all select $1539 \ union all select $1540 \ union all select $1541 \ union all select $1542 \ union all select $1543 \ union all select $1544 \ union all select $1545 \ union all select $1546 \ union all select $1547 \ union all select $1548 \ union all select $1549 \ union all select $1550 \ union all select $1551 \ union all select $1552 \ union all select $1553 \ union all select $1554 \ union all select $1555 \ union all select $1556 \ union all select $1557 \ union all select $1558 \ union all select $1559 \ union all select $1560 \ union all select $1561 \ union all select $1562 \ union all select $1563 \ union all select $1564 \ union all select $1565 \ union all select $1566 \ union all select $1567 \ union all select $1568 \ union all select $1569 \ union all select $1570 \ union all select $1571 \ union all select $1572 \ union all select $1573 \ union all select $1574 \ union all select $1575 \ union all select $1576 \ union all select $1577 \ union all select $1578 \ union all select $1579 \ union all select $1580 \ union all select $1581 \ union all select $1582 \ union all select $1583 \ union all select $1584 \ union all select $1585 \ union all select $1586 \ union all select $1587 \ union all select $1588 \ union all select $1589 \ union all select $1590 \ union all select $1591 \ union all select $1592 \ union all select $1593 \ union all select $1594 \ union all select $1595 \ union all select $1596 \ union all select $1597 \ union all select $1598 \ union all select $1599 \ union all select $1600 \ union all select $1601 \ union all select $1602 \ union all select $1603 \ union all select $1604 \ union all select $1605 \ union all select $1606 \ union all select $1607 \ union all select $1608 \ union all select $1609 \ union all select $1610 \ union all select $1611 \ union all select $1612 \ union all select $1613 \ union all select $1614 \ union all select $1615 \ union all select $1616 \ union all select $1617 \ union all select $1618 \ union all select $1619 \ union all select $1620 \ union all select $1621 \ union all select $1622 \ union all select $1623 \ union all select $1624 \ union all select $1625 \ union all select $1626 \ union all select $1627 \ union all select $1628 \ union all select $1629 \ union all select $1630 \ union all select $1631 \ union all select $1632 \ union all select $1633 \ union all select $1634 \ union all select $1635 \ union all select $1636 \ union all select $1637 \ union all select $1638 \ union all select $1639 \ union all select $1640 \ union all select $1641 \ union all select $1642 \ union all select $1643 \ union all select $1644 \ union all select $1645 \ union all select $1646 \ union all select $1647 \ union all select $1648 \ union all select $1649 \ union all select $1650 \ union all select $1651 \ union all select $1652 \ union all select $1653 \ union all select $1654 \ union all select $1655 \ union all select $1656 \ union all select $1657 \ union all select $1658 \ union all select $1659 \ union all select $1660 \ union all select $1661 \ union all select $1662 \ union all select $1663 \ union all select $1664 \ union all select $1665 \ union all select $1666 \ union all select $1667 \ union all select $1668 \ union all select $1669 \ union all select $1670 \ union all select $1671 \ union all select $1672 \ union all select $1673 \ union all select $1674 \ union all select $1675 \ union all select $1676 \ union all select $1677 \ union all select $1678 \ union all select $1679 \ union all select $1680 \ union all select $1681 \ union all select $1682 \ union all select $1683 \ union all select $1684 \ union all select $1685 \ union all select $1686 \ union all select $1687 \ union all select $1688 \ union all select $1689 \ union all select $1690 \ union all select $1691 \ union all select $1692 \ union all select $1693 \ union all select $1694 \ union all select $1695 \ union all select $1696 \ union all select $1697 \ union all select $1698 \ union all select $1699 \ union all select $1700 \ union all select $1701 \ union all select $1702 \ union all select $1703 \ union all select $1704 \ union all select $1705 \ union all select $1706 \ union all select $1707 \ union all select $1708 \ union all select $1709 \ union all select $1710 \ union all select $1711 \ union all select $1712 \ union all select $1713 \ union all select $1714 \ union all select $1715 \ union all select $1716 \ union all select $1717 \ union all select $1718 \ union all select $1719 \ union all select $1720 \ union all select $1721 \ union all select $1722 \ union all select $1723 \ union all select $1724 \ union all select $1725 \ union all select $1726 \ union all select $1727 \ union all select $1728 \ union all select $1729 \ union all select $1730 \ union all select $1731 \ union all select $1732 \ union all select $1733 \ union all select $1734 \ union all select $1735 \ union all select $1736 \ union all select $1737 \ union all select $1738 \ union all select $1739 \ union all select $1740 \ union all select $1741 \ union all select $1742 \ union all select $1743 \ union all select $1744 \ union all select $1745 \ union all select $1746 \ union all select $1747 \ union all select $1748 \ union all select $1749 \ union all select $1750 \ union all select $1751 \ union all select $1752 \ union all select $1753 \ union all select $1754 \ union all select $1755 \ union all select $1756 \ union all select $1757 \ union all select $1758 \ union all select $1759 \ union all select $1760 \ union all select $1761 \ union all select $1762 \ union all select $1763 \ union all select $1764 \ union all select $1765 \ union all select $1766 \ union all select $1767 \ union all select $1768 \ union all select $1769 \ union all select $1770 \ union all select $1771 \ union all select $1772 \ union all select $1773 \ union all select $1774 \ union all select $1775 \ union all select $1776 \ union all select $1777 \ union all select $1778 \ union all select $1779 \ union all select $1780 \ union all select $1781 \ union all select $1782 \ union all select $1783 \ union all select $1784 \ union all select $1785 \ union all select $1786 \ union all select $1787 \ union all select $1788 \ union all select $1789 \ union all select $1790 \ union all select $1791 \ union all select $1792 \ union all select $1793 \ union all select $1794 \ union all select $1795 \ union all select $1796 \ union all select $1797 \ union all select $1798 \ union all select $1799 \ union all select $1800 \ union all select $1801 \ union all select $1802 \ union all select $1803 \ union all select $1804 \ union all select $1805 \ union all select $1806 \ union all select $1807 \ union all select $1808 \ union all select $1809 \ union all select $1810 \ union all select $1811 \ union all select $1812 \ union all select $1813 \ union all select $1814 \ union all select $1815 \ union all select $1816 \ union all select $1817 \ union all select $1818 \ union all select $1819 \ union all select $1820 \ union all select $1821 \ union all select $1822 \ union all select $1823 \ union all select $1824 \ union all select $1825 \ union all select $1826 \ union all select $1827 \ union all select $1828 \ union all select $1829 \ union all select $1830 \ union all select $1831 \ union all select $1832 \ union all select $1833 \ union all select $1834 \ union all select $1835 \ union all select $1836 \ union all select $1837 \ union all select $1838 \ union all select $1839 \ union all select $1840 \ union all select $1841 \ union all select $1842 \ union all select $1843 \ union all select $1844 \ union all select $1845 \ union all select $1846 \ union all select $1847 \ union all select $1848 \ union all select $1849 \ union all select $1850 \ union all select $1851 \ union all select $1852 \ union all select $1853 \ union all select $1854 \ union all select $1855 \ union all select $1856 \ union all select $1857 \ union all select $1858 \ union all select $1859 \ union all select $1860 \ union all select $1861 \ union all select $1862 \ union all select $1863 \ union all select $1864 \ union all select $1865 \ union all select $1866 \ union all select $1867 \ union all select $1868 \ union all select $1869 \ union all select $1870 \ union all select $1871 \ union all select $1872 \ union all select $1873 \ union all select $1874 \ union all select $1875 \ union all select $1876 \ union all select $1877 \ union all select $1878 \ union all select $1879 \ union all select $1880 \ union all select $1881 \ union all select $1882 \ union all select $1883 \ union all select $1884 \ union all select $1885 \ union all select $1886 \ union all select $1887 \ union all select $1888 \ union all select $1889 \ union all select $1890 \ union all select $1891 \ union all select $1892 \ union all select $1893 \ union all select $1894 \ union all select $1895 \ union all select $1896 \ union all select $1897 \ union all select $1898 \ union all select $1899 \ union all select $1900 \ union all select $1901 \ union all select $1902 \ union all select $1903 \ union all select $1904 \ union all select $1905 \ union all select $1906 \ union all select $1907 \ union all select $1908 \ union all select $1909 \ union all select $1910 \ union all select $1911 \ union all select $1912 \ union all select $1913 \ union all select $1914 \ union all select $1915 \ union all select $1916 \ union all select $1917 \ union all select $1918 \ union all select $1919 \ union all select $1920 \ union all select $1921 \ union all select $1922 \ union all select $1923 \ union all select $1924 \ union all select $1925 \ union all select $1926 \ union all select $1927 \ union all select $1928 \ union all select $1929 \ union all select $1930 \ union all select $1931 \ union all select $1932 \ union all select $1933 \ union all select $1934 \ union all select $1935 \ union all select $1936 \ union all select $1937 \ union all select $1938 \ union all select $1939 \ union all select $1940 \ union all select $1941 \ union all select $1942 \ union all select $1943 \ union all select $1944 \ union all select $1945 \ union all select $1946 \ union all select $1947 \ union all select $1948 \ union all select $1949 \ union all select $1950 \ union all select $1951 \ union all select $1952 \ union all select $1953 \ union all select $1954 \ union all select $1955 \ union all select $1956 \ union all select $1957 \ union all select $1958 \ union all select $1959 \ union all select $1960 \ union all select $1961 \ union all select $1962 \ union all select $1963 \ union all select $1964 \ union all select $1965 \ union all select $1966 \ union all select $1967 \ union all select $1968 \ union all select $1969 \ union all select $1970 \ union all select $1971 \ union all select $1972 \ union all select $1973 \ union all select $1974 \ union all select $1975 \ union all select $1976 \ union all select $1977 \ union all select $1978 \ union all select $1979 \ union all select $1980 \ union all select $1981 \ union all select $1982 \ union all select $1983 \ union all select $1984 \ union all select $1985 \ union all select $1986 \ union all select $1987 \ union all select $1988 \ union all select $1989 \ union all select $1990 \ union all select $1991 \ union all select $1992 \ union all select $1993 \ union all select $1994 \ union all select $1995 \ union all select $1996 \ union all select $1997 \ union all select $1998 \ union all select $1999 \ union all select $2000 \ union all select $2001 \ union all select $2002 \ union all select $2003 \ union all select $2004 \ union all select $2005 \ union all select $2006 \ union all select $2007 \ union all select $2008 \ union all select $2009 \ union all select $2010 \ union all select $2011 \ union all select $2012 \ union all select $2013 \ union all select $2014 \ union all select $2015 \ union all select $2016 \ union all select $2017 \ union all select $2018 \ union all select $2019 \ union all select $2020 \ union all select $2021 \ union all select $2022 \ union all select $2023 \ union all select $2024 \ union all select $2025 \ union all select $2026 \ union all select $2027 \ union all select $2028 \ union all select $2029 \ union all select $2030 \ union all select $2031 \ union all select $2032 \ union all select $2033 \ union all select $2034 \ union all select $2035 \ union all select $2036 \ union all select $2037 \ union all select $2038 \ union all select $2039 \ union all select $2040 \ union all select $2041 \ union all select $2042 \ union all select $2043 \ union all select $2044 \ union all select $2045 \ union all select $2046 \ union all select $2047 \ union all select $2048 \ union all select $2049 \ union all select $2050 \ union all select $2051 \ union all select $2052 \ union all select $2053 \ union all select $2054 \ union all select $2055 \ union all select $2056 \ union all select $2057 \ union all select $2058 \ union all select $2059 \ union all select $2060 \ union all select $2061 \ union all select $2062 \ union all select $2063 \ union all select $2064 \ union all select $2065 \ union all select $2066 \ union all select $2067 \ union all select $2068 \ union all select $2069 \ union all select $2070 \ union all select $2071 \ union all select $2072 \ union all select $2073 \ union all select $2074 \ union all select $2075 \ union all select $2076 \ union all select $2077 \ union all select $2078 \ union all select $2079 \ union all select $2080 \ union all select $2081 \ union all select $2082 \ union all select $2083 \ union all select $2084 \ union all select $2085 \ union all select $2086 \ union all select $2087 \ union all select $2088 \ union all select $2089 \ union all select $2090 \ union all select $2091 \ union all select $2092 \ union all select $2093 \ union all select $2094 \ union all select $2095 \ union all select $2096 \ union all select $2097 \ union all select $2098 \ union all select $2099 \ union all select $2100 \ union all select $2101 \ union all select $2102 \ union all select $2103 \ union all select $2104 \ union all select $2105 \ union all select $2106 \ union all select $2107 \ union all select $2108 \ union all select $2109 \ union all select $2110 \ union all select $2111 \ union all select $2112 \ union all select $2113 \ union all select $2114 \ union all select $2115 \ union all select $2116 \ union all select $2117 \ union all select $2118 \ union all select $2119 \ union all select $2120 \ union all select $2121 \ union all select $2122 \ union all select $2123 \ union all select $2124 \ union all select $2125 \ union all select $2126 \ union all select $2127 \ union all select $2128 \ union all select $2129 \ union all select $2130 \ union all select $2131 \ union all select $2132 \ union all select $2133 \ union all select $2134 \ union all select $2135 \ union all select $2136 \ union all select $2137 \ union all select $2138 \ union all select $2139 \ union all select $2140 \ union all select $2141 \ union all select $2142 \ union all select $2143 \ union all select $2144 \ union all select $2145 \ union all select $2146 \ union all select $2147 \ union all select $2148 \ union all select $2149 \ union all select $2150 \ union all select $2151 \ union all select $2152 \ union all select $2153 \ union all select $2154 \ union all select $2155 \ union all select $2156 \ union all select $2157 \ union all select $2158 \ union all select $2159 \ union all select $2160 \ union all select $2161 \ union all select $2162 \ union all select $2163 \ union all select $2164 \ union all select $2165 \ union all select $2166 \ union all select $2167 \ union all select $2168 \ union all select $2169 \ union all select $2170 \ union all select $2171 \ union all select $2172 \ union all select $2173 \ union all select $2174 \ union all select $2175 \ union all select $2176 \ union all select $2177 \ union all select $2178 \ union all select $2179 \ union all select $2180 \ union all select $2181 \ union all select $2182 \ union all select $2183 \ union all select $2184 \ union all select $2185 \ union all select $2186 \ union all select $2187 \ union all select $2188 \ union all select $2189 \ union all select $2190 \ union all select $2191 \ union all select $2192 \ union all select $2193 \ union all select $2194 \ union all select $2195 \ union all select $2196 \ union all select $2197 \ union all select $2198 \ union all select $2199 \ union all select $2200 \ union all select $2201 \ union all select $2202 \ union all select $2203 \ union all select $2204 \ union all select $2205 \ union all select $2206 \ union all select $2207 \ union all select $2208 \ union all select $2209 \ union all select $2210 \ union all select $2211 \ union all select $2212 \ union all select $2213 \ union all select $2214 \ union all select $2215 \ union all select $2216 \ union all select $2217 \ union all select $2218 \ union all select $2219 \ union all select $2220 \ union all select $2221 \ union all select $2222 \ union all select $2223 \ union all select $2224 \ union all select $2225 \ union all select $2226 \ union all select $2227 \ union all select $2228 \ union all select $2229 \ union all select $2230 \ union all select $2231 \ union all select $2232 \ union all select $2233 \ union all select $2234 \ union all select $2235 \ union all select $2236 \ union all select $2237 \ union all select $2238 \ union all select $2239 \ union all select $2240 \ union all select $2241 \ union all select $2242 \ union all select $2243 \ union all select $2244 \ union all select $2245 \ union all select $2246 \ union all select $2247 \ union all select $2248 \ union all select $2249 \ union all select $2250 \ union all select $2251 \ union all select $2252 \ union all select $2253 \ union all select $2254 \ union all select $2255 \ union all select $2256 \ union all select $2257 \ union all select $2258 \ union all select $2259 \ union all select $2260 \ union all select $2261 \ union all select $2262 \ union all select $2263 \ union all select $2264 \ union all select $2265 \ union all select $2266 \ union all select $2267 \ union all select $2268 \ union all select $2269 \ union all select $2270 \ union all select $2271 \ union all select $2272 \ union all select $2273 \ union all select $2274 \ union all select $2275 \ union all select $2276 \ union all select $2277 \ union all select $2278 \ union all select $2279 \ union all select $2280 \ union all select $2281 \ union all select $2282 \ union all select $2283 \ union all select $2284 \ union all select $2285 \ union all select $2286 \ union all select $2287 \ union all select $2288 \ union all select $2289 \ union all select $2290 \ union all select $2291 \ union all select $2292 \ union all select $2293 \ union all select $2294 \ union all select $2295 \ union all select $2296 \ union all select $2297 \ union all select $2298 \ union all select $2299 \ union all select $2300 \ union all select $2301 \ union all select $2302 \ union all select $2303 \ union all select $2304 \ union all select $2305 \ union all select $2306 \ union all select $2307 \ union all select $2308 \ union all select $2309 \ union all select $2310 \ union all select $2311 \ union all select $2312 \ union all select $2313 \ union all select $2314 \ union all select $2315 \ union all select $2316 \ union all select $2317 \ union all select $2318 \ union all select $2319 \ union all select $2320 \ union all select $2321 \ union all select $2322 \ union all select $2323 \ union all select $2324 \ union all select $2325 \ union all select $2326 \ union all select $2327 \ union all select $2328 \ union all select $2329 \ union all select $2330 \ union all select $2331 \ union all select $2332 \ union all select $2333 \ union all select $2334 \ union all select $2335 \ union all select $2336 \ union all select $2337 \ union all select $2338 \ union all select $2339 \ union all select $2340 \ union all select $2341 \ union all select $2342 \ union all select $2343 \ union all select $2344 \ union all select $2345 \ union all select $2346 \ union all select $2347 \ union all select $2348 \ union all select $2349 \ union all select $2350 \ union all select $2351 \ union all select $2352 \ union all select $2353 \ union all select $2354 \ union all select $2355 \ union all select $2356 \ union all select $2357 \ union all select $2358 \ union all select $2359 \ union all select $2360 \ union all select $2361 \ union all select $2362 \ union all select $2363 \ union all select $2364 \ union all select $2365 \ union all select $2366 \ union all select $2367 \ union all select $2368 \ union all select $2369 \ union all select $2370 \ union all select $2371 \ union all select $2372 \ union all select $2373 \ union all select $2374 \ union all select $2375 \ union all select $2376 \ union all select $2377 \ union all select $2378 \ union all select $2379 \ union all select $2380 \ union all select $2381 \ union all select $2382 \ union all select $2383 \ union all select $2384 \ union all select $2385 \ union all select $2386 \ union all select $2387 \ union all select $2388 \ union all select $2389 \ union all select $2390 \ union all select $2391 \ union all select $2392 \ union all select $2393 \ union all select $2394 \ union all select $2395 \ union all select $2396 \ union all select $2397 \ union all select $2398 \ union all select $2399 \ union all select $2400 \ union all select $2401 \ union all select $2402 \ union all select $2403 \ union all select $2404 \ union all select $2405 \ union all select $2406 \ union all select $2407 \ union all select $2408 \ union all select $2409 \ union all select $2410 \ union all select $2411 \ union all select $2412 \ union all select $2413 \ union all select $2414 \ union all select $2415 \ union all select $2416 \ union all select $2417 \ union all select $2418 \ union all select $2419 \ union all select $2420 \ union all select $2421 \ union all select $2422 \ union all select $2423 \ union all select $2424 \ union all select $2425 \ union all select $2426 \ union all select $2427 \ union all select $2428 \ union all select $2429 \ union all select $2430 \ union all select $2431 \ union all select $2432 \ union all select $2433 \ union all select $2434 \ union all select $2435 \ union all select $2436 \ union all select $2437 \ union all select $2438 \ union all select $2439 \ union all select $2440 \ union all select $2441 \ union all select $2442 \ union all select $2443 \ union all select $2444 \ union all select $2445 \ union all select $2446 \ union all select $2447 \ union all select $2448 \ union all select $2449 \ union all select $2450 \ union all select $2451 \ union all select $2452 \ union all select $2453 \ union all select $2454 \ union all select $2455 \ union all select $2456 \ union all select $2457 \ union all select $2458 \ union all select $2459 \ union all select $2460 \ union all select $2461 \ union all select $2462 \ union all select $2463 \ union all select $2464 \ union all select $2465 \ union all select $2466 \ union all select $2467 \ union all select $2468 \ union all select $2469 \ union all select $2470 \ union all select $2471 \ union all select $2472 \ union all select $2473 \ union all select $2474 \ union all select $2475 \ union all select $2476 \ union all select $2477 \ union all select $2478 \ union all select $2479 \ union all select $2480 \ union all select $2481 \ union all select $2482 \ union all select $2483 \ union all select $2484 \ union all select $2485 \ union all select $2486 \ union all select $2487 \ union all select $2488 \ union all select $2489 \ union all select $2490 \ union all select $2491 \ union all select $2492 \ union all select $2493 \ union all select $2494 \ union all select $2495 \ union all select $2496 \ union all select $2497 \ union all select $2498 \ union all select $2499 \ union all select $2500 \ union all select $2501 \ union all select $2502 \ union all select $2503 \ union all select $2504 \ union all select $2505 \ union all select $2506 \ union all select $2507 \ union all select $2508 \ union all select $2509 \ union all select $2510 \ union all select $2511 \ union all select $2512 \ union all select $2513 \ union all select $2514 \ union all select $2515 \ union all select $2516 \ union all select $2517 \ union all select $2518 \ union all select $2519 \ union all select $2520 \ union all select $2521 \ union all select $2522 \ union all select $2523 \ union all select $2524 \ union all select $2525 \ union all select $2526 \ union all select $2527 \ union all select $2528 \ union all select $2529 \ union all select $2530 \ union all select $2531 \ union all select $2532 \ union all select $2533 \ union all select $2534 \ union all select $2535 \ union all select $2536 \ union all select $2537 \ union all select $2538 \ union all select $2539 \ union all select $2540 \ union all select $2541 \ union all select $2542 \ union all select $2543 \ union all select $2544 \ union all select $2545 \ union all select $2546 \ union all select $2547 \ union all select $2548 \ union all select $2549 \ union all select $2550 \ union all select $2551 \ union all select $2552 \ union all select $2553 \ union all select $2554 \ union all select $2555 \ union all select $2556 \ union all select $2557 \ union all select $2558 \ union all select $2559 \ union all select $2560 \ union all select $2561 \ union all select $2562 \ union all select $2563 \ union all select $2564 \ union all select $2565 \ union all select $2566 \ union all select $2567 \ union all select $2568 \ union all select $2569 \ union all select $2570 \ union all select $2571 \ union all select $2572 \ union all select $2573 \ union all select $2574 \ union all select $2575 \ union all select $2576 \ union all select $2577 \ union all select $2578 \ union all select $2579 \ union all select $2580 \ union all select $2581 \ union all select $2582 \ union all select $2583 \ union all select $2584 \ union all select $2585 \ union all select $2586 \ union all select $2587 \ union all select $2588 \ union all select $2589 \ union all select $2590 \ union all select $2591 \ union all select $2592 \ union all select $2593 \ union all select $2594 \ union all select $2595 \ union all select $2596 \ union all select $2597 \ union all select $2598 \ union all select $2599 \ union all select $2600 \ union all select $2601 \ union all select $2602 \ union all select $2603 \ union all select $2604 \ union all select $2605 \ union all select $2606 \ union all select $2607 \ union all select $2608 \ union all select $2609 \ union all select $2610 \ union all select $2611 \ union all select $2612 \ union all select $2613 \ union all select $2614 \ union all select $2615 \ union all select $2616 \ union all select $2617 \ union all select $2618 \ union all select $2619 \ union all select $2620 \ union all select $2621 \ union all select $2622 \ union all select $2623 \ union all select $2624 \ union all select $2625 \ union all select $2626 \ union all select $2627 \ union all select $2628 \ union all select $2629 \ union all select $2630 \ union all select $2631 \ union all select $2632 \ union all select $2633 \ union all select $2634 \ union all select $2635 \ union all select $2636 \ union all select $2637 \ union all select $2638 \ union all select $2639 \ union all select $2640 \ union all select $2641 \ union all select $2642 \ union all select $2643 \ union all select $2644 \ union all select $2645 \ union all select $2646 \ union all select $2647 \ union all select $2648 \ union all select $2649 \ union all select $2650 \ union all select $2651 \ union all select $2652 \ union all select $2653 \ union all select $2654 \ union all select $2655 \ union all select $2656 \ union all select $2657 \ union all select $2658 \ union all select $2659 \ union all select $2660 \ union all select $2661 \ union all select $2662 \ union all select $2663 \ union all select $2664 \ union all select $2665 \ union all select $2666 \ union all select $2667 \ union all select $2668 \ union all select $2669 \ union all select $2670 \ union all select $2671 \ union all select $2672 \ union all select $2673 \ union all select $2674 \ union all select $2675 \ union all select $2676 \ union all select $2677 \ union all select $2678 \ union all select $2679 \ union all select $2680 \ union all select $2681 \ union all select $2682 \ union all select $2683 \ union all select $2684 \ union all select $2685 \ union all select $2686 \ union all select $2687 \ union all select $2688 \ union all select $2689 \ union all select $2690 \ union all select $2691 \ union all select $2692 \ union all select $2693 \ union all select $2694 \ union all select $2695 \ union all select $2696 \ union all select $2697 \ union all select $2698 \ union all select $2699 \ union all select $2700 \ union all select $2701 \ union all select $2702 \ union all select $2703 \ union all select $2704 \ union all select $2705 \ union all select $2706 \ union all select $2707 \ union all select $2708 \ union all select $2709 \ union all select $2710 \ union all select $2711 \ union all select $2712 \ union all select $2713 \ union all select $2714 \ union all select $2715 \ union all select $2716 \ union all select $2717 \ union all select $2718 \ union all select $2719 \ union all select $2720 \ union all select $2721 \ union all select $2722 \ union all select $2723 \ union all select $2724 \ union all select $2725 \ union all select $2726 \ union all select $2727 \ union all select $2728 \ union all select $2729 \ union all select $2730 \ union all select $2731 \ union all select $2732 \ union all select $2733 \ union all select $2734 \ union all select $2735 \ union all select $2736 \ union all select $2737 \ union all select $2738 \ union all select $2739 \ union all select $2740 \ union all select $2741 \ union all select $2742 \ union all select $2743 \ union all select $2744 \ union all select $2745 \ union all select $2746 \ union all select $2747 \ union all select $2748 \ union all select $2749 \ union all select $2750 \ union all select $2751 \ union all select $2752 \ union all select $2753 \ union all select $2754 \ union all select $2755 \ union all select $2756 \ union all select $2757 \ union all select $2758 \ union all select $2759 \ union all select $2760 \ union all select $2761 \ union all select $2762 \ union all select $2763 \ union all select $2764 \ union all select $2765 \ union all select $2766 \ union all select $2767 \ union all select $2768 \ union all select $2769 \ union all select $2770 \ union all select $2771 \ union all select $2772 \ union all select $2773 \ union all select $2774 \ union all select $2775 \ union all select $2776 \ union all select $2777 \ union all select $2778 \ union all select $2779 \ union all select $2780 \ union all select $2781 \ union all select $2782 \ union all select $2783 \ union all select $2784 \ union all select $2785 \ union all select $2786 \ union all select $2787 \ union all select $2788 \ union all select $2789 \ union all select $2790 \ union all select $2791 \ union all select $2792 \ union all select $2793 \ union all select $2794 \ union all select $2795 \ union all select $2796 \ union all select $2797 \ union all select $2798 \ union all select $2799 \ union all select $2800 \ union all select $2801 \ union all select $2802 \ union all select $2803 \ union all select $2804 \ union all select $2805 \ union all select $2806 \ union all select $2807 \ union all select $2808 \ union all select $2809 \ union all select $2810 \ union all select $2811 \ union all select $2812 \ union all select $2813 \ union all select $2814 \ union all select $2815 \ union all select $2816 \ union all select $2817 \ union all select $2818 \ union all select $2819 \ union all select $2820 \ union all select $2821 \ union all select $2822 \ union all select $2823 \ union all select $2824 \ union all select $2825 \ union all select $2826 \ union all select $2827 \ union all select $2828 \ union all select $2829 \ union all select $2830 \ union all select $2831 \ union all select $2832 \ union all select $2833 \ union all select $2834 \ union all select $2835 \ union all select $2836 \ union all select $2837 \ union all select $2838 \ union all select $2839 \ union all select $2840 \ union all select $2841 \ union all select $2842 \ union all select $2843 \ union all select $2844 \ union all select $2845 \ union all select $2846 \ union all select $2847 \ union all select $2848 \ union all select $2849 \ union all select $2850 \ union all select $2851 \ union all select $2852 \ union all select $2853 \ union all select $2854 \ union all select $2855 \ union all select $2856 \ union all select $2857 \ union all select $2858 \ union all select $2859 \ union all select $2860 \ union all select $2861 \ union all select $2862 \ union all select $2863 \ union all select $2864 \ union all select $2865 \ union all select $2866 \ union all select $2867 \ union all select $2868 \ union all select $2869 \ union all select $2870 \ union all select $2871 \ union all select $2872 \ union all select $2873 \ union all select $2874 \ union all select $2875 \ union all select $2876 \ union all select $2877 \ union all select $2878 \ union all select $2879 \ union all select $2880 \ union all select $2881 \ union all select $2882 \ union all select $2883 \ union all select $2884 \ union all select $2885 \ union all select $2886 \ union all select $2887 \ union all select $2888 \ union all select $2889 \ union all select $2890 \ union all select $2891 \ union all select $2892 \ union all select $2893 \ union all select $2894 \ union all select $2895 \ union all select $2896 \ union all select $2897 \ union all select $2898 \ union all select $2899 \ union all select $2900 \ union all select $2901 \ union all select $2902 \ union all select $2903 \ union all select $2904 \ union all select $2905 \ union all select $2906 \ union all select $2907 \ union all select $2908 \ union all select $2909 \ union all select $2910 \ union all select $2911 \ union all select $2912 \ union all select $2913 \ union all select $2914 \ union all select $2915 \ union all select $2916 \ union all select $2917 \ union all select $2918 \ union all select $2919 \ union all select $2920 \ union all select $2921 \ union all select $2922 \ union all select $2923 \ union all select $2924 \ union all select $2925 \ union all select $2926 \ union all select $2927 \ union all select $2928 \ union all select $2929 \ union all select $2930 \ union all select $2931 \ union all select $2932 \ union all select $2933 \ union all select $2934 \ union all select $2935 \ union all select $2936 \ union all select $2937 \ union all select $2938 \ union all select $2939 \ union all select $2940 \ union all select $2941 \ union all select $2942 \ union all select $2943 \ union all select $2944 \ union all select $2945 \ union all select $2946 \ union all select $2947 \ union all select $2948 \ union all select $2949 \ union all select $2950 \ union all select $2951 \ union all select $2952 \ union all select $2953 \ union all select $2954 \ union all select $2955 \ union all select $2956 \ union all select $2957 \ union all select $2958 \ union all select $2959 \ union all select $2960 \ union all select $2961 \ union all select $2962 \ union all select $2963 \ union all select $2964 \ union all select $2965 \ union all select $2966 \ union all select $2967 \ union all select $2968 \ union all select $2969 \ union all select $2970 \ union all select $2971 \ union all select $2972 \ union all select $2973 \ union all select $2974 \ union all select $2975 \ union all select $2976 \ union all select $2977 \ union all select $2978 \ union all select $2979 \ union all select $2980 \ union all select $2981 \ union all select $2982 \ union all select $2983 \ union all select $2984 \ union all select $2985 \ union all select $2986 \ union all select $2987 \ union all select $2988 \ union all select $2989 \ union all select $2990 \ union all select $2991 \ union all select $2992 \ union all select $2993 \ union all select $2994 \ union all select $2995 \ union all select $2996 \ union all select $2997 \ union all select $2998 \ union all select $2999 \ union all select $3000 \ union all select $3001 \ union all select $3002 \ union all select $3003 \ union all select $3004 \ union all select $3005 \ union all select $3006 \ union all select $3007 \ union all select $3008 \ union all select $3009 \ union all select $3010 \ union all select $3011 \ union all select $3012 \ union all select $3013 \ union all select $3014 \ union all select $3015 \ union all select $3016 \ union all select $3017 \ union all select $3018 \ union all select $3019 \ union all select $3020 \ union all select $3021 \ union all select $3022 \ union all select $3023 \ union all select $3024 \ union all select $3025 \ union all select $3026 \ union all select $3027 \ union all select $3028 \ union all select $3029 \ union all select $3030 \ union all select $3031 \ union all select $3032 \ union all select $3033 \ union all select $3034 \ union all select $3035 \ union all select $3036 \ union all select $3037 \ union all select $3038 \ union all select $3039 \ union all select $3040 \ union all select $3041 \ union all select $3042 \ union all select $3043 \ union all select $3044 \ union all select $3045 \ union all select $3046 \ union all select $3047 \ union all select $3048 \ union all select $3049 \ union all select $3050 \ union all select $3051 \ union all select $3052 \ union all select $3053 \ union all select $3054 \ union all select $3055 \ union all select $3056 \ union all select $3057 \ union all select $3058 \ union all select $3059 \ union all select $3060 \ union all select $3061 \ union all select $3062 \ union all select $3063 \ union all select $3064 \ union all select $3065 \ union all select $3066 \ union all select $3067 \ union all select $3068 \ union all select $3069 \ union all select $3070 \ union all select $3071 \ union all select $3072 \ union all select $3073 \ union all select $3074 \ union all select $3075 \ union all select $3076 \ union all select $3077 \ union all select $3078 \ union all select $3079 \ union all select $3080 \ union all select $3081 \ union all select $3082 \ union all select $3083 \ union all select $3084 \ union all select $3085 \ union all select $3086 \ union all select $3087 \ union all select $3088 \ union all select $3089 \ union all select $3090 \ union all select $3091 \ union all select $3092 \ union all select $3093 \ union all select $3094 \ union all select $3095 \ union all select $3096 \ union all select $3097 \ union all select $3098 \ union all select $3099 \ union all select $3100 \ union all select $3101 \ union all select $3102 \ union all select $3103 \ union all select $3104 \ union all select $3105 \ union all select $3106 \ union all select $3107 \ union all select $3108 \ union all select $3109 \ union all select $3110 \ union all select $3111 \ union all select $3112 \ union all select $3113 \ union all select $3114 \ union all select $3115 \ union all select $3116 \ union all select $3117 \ union all select $3118 \ union all select $3119 \ union all select $3120 \ union all select $3121 \ union all select $3122 \ union all select $3123 \ union all select $3124 \ union all select $3125 \ union all select $3126 \ union all select $3127 \ union all select $3128 \ union all select $3129 \ union all select $3130 \ union all select $3131 \ union all select $3132 \ union all select $3133 \ union all select $3134 \ union all select $3135 \ union all select $3136 \ union all select $3137 \ union all select $3138 \ union all select $3139 \ union all select $3140 \ union all select $3141 \ union all select $3142 \ union all select $3143 \ union all select $3144 \ union all select $3145 \ union all select $3146 \ union all select $3147 \ union all select $3148 \ union all select $3149 \ union all select $3150 \ union all select $3151 \ union all select $3152 \ union all select $3153 \ union all select $3154 \ union all select $3155 \ union all select $3156 \ union all select $3157 \ union all select $3158 \ union all select $3159 \ union all select $3160 \ union all select $3161 \ union all select $3162 \ union all select $3163 \ union all select $3164 \ union all select $3165 \ union all select $3166 \ union all select $3167 \ union all select $3168 \ union all select $3169 \ union all select $3170 \ union all select $3171 \ union all select $3172 \ union all select $3173 \ union all select $3174 \ union all select $3175 \ union all select $3176 \ union all select $3177 \ union all select $3178 \ union all select $3179 \ union all select $3180 \ union all select $3181 \ union all select $3182 \ union all select $3183 \ union all select $3184 \ union all select $3185 \ union all select $3186 \ union all select $3187 \ union all select $3188 \ union all select $3189 \ union all select $3190 \ union all select $3191 \ union all select $3192 \ union all select $3193 \ union all select $3194 \ union all select $3195 \ union all select $3196 \ union all select $3197 \ union all select $3198 \ union all select $3199 \ union all select $3200 \ union all select $3201 \ union all select $3202 \ union all select $3203 \ union all select $3204 \ union all select $3205 \ union all select $3206 \ union all select $3207 \ union all select $3208 \ union all select $3209 \ union all select $3210 \ union all select $3211 \ union all select $3212 \ union all select $3213 \ union all select $3214 \ union all select $3215 \ union all select $3216 \ union all select $3217 \ union all select $3218 \ union all select $3219 \ union all select $3220 \ union all select $3221 \ union all select $3222 \ union all select $3223 \ union all select $3224 \ union all select $3225 \ union all select $3226 \ union all select $3227 \ union all select $3228 \ union all select $3229 \ union all select $3230 \ union all select $3231 \ union all select $3232 \ union all select $3233 \ union all select $3234 \ union all select $3235 \ union all select $3236 \ union all select $3237 \ union all select $3238 \ union all select $3239 \ union all select $3240 \ union all select $3241 \ union all select $3242 \ union all select $3243 \ union all select $3244 \ union all select $3245 \ union all select $3246 \ union all select $3247 \ union all select $3248 \ union all select $3249 \ union all select $3250 \ union all select $3251 \ union all select $3252 \ union all select $3253 \ union all select $3254 \ union all select $3255 \ union all select $3256 \ union all select $3257 \ union all select $3258 \ union all select $3259 \ union all select $3260 \ union all select $3261 \ union all select $3262 \ union all select $3263 \ union all select $3264 \ union all select $3265 \ union all select $3266 \ union all select $3267 \ union all select $3268 \ union all select $3269 \ union all select $3270 \ union all select $3271 \ union all select $3272 \ union all select $3273 \ union all select $3274 \ union all select $3275 \ union all select $3276 \ union all select $3277 \ union all select $3278 \ union all select $3279 \ union all select $3280 \ union all select $3281 \ union all select $3282 \ union all select $3283 \ union all select $3284 \ union all select $3285 \ union all select $3286 \ union all select $3287 \ union all select $3288 \ union all select $3289 \ union all select $3290 \ union all select $3291 \ union all select $3292 \ union all select $3293 \ union all select $3294 \ union all select $3295 \ union all select $3296 \ union all select $3297 \ union all select $3298 \ union all select $3299 \ union all select $3300 \ union all select $3301 \ union all select $3302 \ union all select $3303 \ union all select $3304 \ union all select $3305 \ union all select $3306 \ union all select $3307 \ union all select $3308 \ union all select $3309 \ union all select $3310 \ union all select $3311 \ union all select $3312 \ union all select $3313 \ union all select $3314 \ union all select $3315 \ union all select $3316 \ union all select $3317 \ union all select $3318 \ union all select $3319 \ union all select $3320 \ union all select $3321 \ union all select $3322 \ union all select $3323 \ union all select $3324 \ union all select $3325 \ union all select $3326 \ union all select $3327 \ union all select $3328 \ union all select $3329 \ union all select $3330 \ union all select $3331 \ union all select $3332 \ union all select $3333 \ union all select $3334 \ union all select $3335 \ union all select $3336 \ union all select $3337 \ union all select $3338 \ union all select $3339 \ union all select $3340 \ union all select $3341 \ union all select $3342 \ union all select $3343 \ union all select $3344 \ union all select $3345 \ union all select $3346 \ union all select $3347 \ union all select $3348 \ union all select $3349 \ union all select $3350 \ union all select $3351 \ union all select $3352 \ union all select $3353 \ union all select $3354 \ union all select $3355 \ union all select $3356 \ union all select $3357 \ union all select $3358 \ union all select $3359 \ union all select $3360 \ union all select $3361 \ union all select $3362 \ union all select $3363 \ union all select $3364 \ union all select $3365 \ union all select $3366 \ union all select $3367 \ union all select $3368 \ union all select $3369 \ union all select $3370 \ union all select $3371 \ union all select $3372 \ union all select $3373 \ union all select $3374 \ union all select $3375 \ union all select $3376 \ union all select $3377 \ union all select $3378 \ union all select $3379 \ union all select $3380 \ union all select $3381 \ union all select $3382 \ union all select $3383 \ union all select $3384 \ union all select $3385 \ union all select $3386 \ union all select $3387 \ union all select $3388 \ union all select $3389 \ union all select $3390 \ union all select $3391 \ union all select $3392 \ union all select $3393 \ union all select $3394 \ union all select $3395 \ union all select $3396 \ union all select $3397 \ union all select $3398 \ union all select $3399 \ union all select $3400 \ union all select $3401 \ union all select $3402 \ union all select $3403 \ union all select $3404 \ union all select $3405 \ union all select $3406 \ union all select $3407 \ union all select $3408 \ union all select $3409 \ union all select $3410 \ union all select $3411 \ union all select $3412 \ union all select $3413 \ union all select $3414 \ union all select $3415 \ union all select $3416 \ union all select $3417 \ union all select $3418 \ union all select $3419 \ union all select $3420 \ union all select $3421 \ union all select $3422 \ union all select $3423 \ union all select $3424 \ union all select $3425 \ union all select $3426 \ union all select $3427 \ union all select $3428 \ union all select $3429 \ union all select $3430 \ union all select $3431 \ union all select $3432 \ union all select $3433 \ union all select $3434 \ union all select $3435 \ union all select $3436 \ union all select $3437 \ union all select $3438 \ union all select $3439 \ union all select $3440 \ union all select $3441 \ union all select $3442 \ union all select $3443 \ union all select $3444 \ union all select $3445 \ union all select $3446 \ union all select $3447 \ union all select $3448 \ union all select $3449 \ union all select $3450 \ union all select $3451 \ union all select $3452 \ union all select $3453 \ union all select $3454 \ union all select $3455 \ union all select $3456 \ union all select $3457 \ union all select $3458 \ union all select $3459 \ union all select $3460 \ union all select $3461 \ union all select $3462 \ union all select $3463 \ union all select $3464 \ union all select $3465 \ union all select $3466 \ union all select $3467 \ union all select $3468 \ union all select $3469 \ union all select $3470 \ union all select $3471 \ union all select $3472 \ union all select $3473 \ union all select $3474 \ union all select $3475 \ union all select $3476 \ union all select $3477 \ union all select $3478 \ union all select $3479 \ union all select $3480 \ union all select $3481 \ union all select $3482 \ union all select $3483 \ union all select $3484 \ union all select $3485 \ union all select $3486 \ union all select $3487 \ union all select $3488 \ union all select $3489 \ union all select $3490 \ union all select $3491 \ union all select $3492 \ union all select $3493 \ union all select $3494 \ union all select $3495 \ union all select $3496 \ union all select $3497 \ union all select $3498 \ union all select $3499 \ union all select $3500 \ union all select $3501 \ union all select $3502 \ union all select $3503 \ union all select $3504 \ union all select $3505 \ union all select $3506 \ union all select $3507 \ union all select $3508 \ union all select $3509 \ union all select $3510 \ union all select $3511 \ union all select $3512 \ union all select $3513 \ union all select $3514 \ union all select $3515 \ union all select $3516 \ union all select $3517 \ union all select $3518 \ union all select $3519 \ union all select $3520 \ union all select $3521 \ union all select $3522 \ union all select $3523 \ union all select $3524 \ union all select $3525 \ union all select $3526 \ union all select $3527 \ union all select $3528 \ union all select $3529 \ union all select $3530 \ union all select $3531 \ union all select $3532 \ union all select $3533 \ union all select $3534 \ union all select $3535 \ union all select $3536 \ union all select $3537 \ union all select $3538 \ union all select $3539 \ union all select $3540 \ union all select $3541 \ union all select $3542 \ union all select $3543 \ union all select $3544 \ union all select $3545 \ union all select $3546 \ union all select $3547 \ union all select $3548 \ union all select $3549 \ union all select $3550 \ union all select $3551 \ union all select $3552 \ union all select $3553 \ union all select $3554 \ union all select $3555 \ union all select $3556 \ union all select $3557 \ union all select $3558 \ union all select $3559 \ union all select $3560 \ union all select $3561 \ union all select $3562 \ union all select $3563 \ union all select $3564 \ union all select $3565 \ union all select $3566 \ union all select $3567 \ union all select $3568 \ union all select $3569 \ union all select $3570 \ union all select $3571 \ union all select $3572 \ union all select $3573 \ union all select $3574 \ union all select $3575 \ union all select $3576 \ union all select $3577 \ union all select $3578 \ union all select $3579 \ union all select $3580 \ union all select $3581 \ union all select $3582 \ union all select $3583 \ union all select $3584 \ union all select $3585 \ union all select $3586 \ union all select $3587 \ union all select $3588 \ union all select $3589 \ union all select $3590 \ union all select $3591 \ union all select $3592 \ union all select $3593 \ union all select $3594 \ union all select $3595 \ union all select $3596 \ union all select $3597 \ union all select $3598 \ union all select $3599 \ union all select $3600 \ union all select $3601 \ union all select $3602 \ union all select $3603 \ union all select $3604 \ union all select $3605 \ union all select $3606 \ union all select $3607 \ union all select $3608 \ union all select $3609 \ union all select $3610 \ union all select $3611 \ union all select $3612 \ union all select $3613 \ union all select $3614 \ union all select $3615 \ union all select $3616 \ union all select $3617 \ union all select $3618 \ union all select $3619 \ union all select $3620 \ union all select $3621 \ union all select $3622 \ union all select $3623 \ union all select $3624 \ union all select $3625 \ union all select $3626 \ union all select $3627 \ union all select $3628 \ union all select $3629 \ union all select $3630 \ union all select $3631 \ union all select $3632 \ union all select $3633 \ union all select $3634 \ union all select $3635 \ union all select $3636 \ union all select $3637 \ union all select $3638 \ union all select $3639 \ union all select $3640 \ union all select $3641 \ union all select $3642 \ union all select $3643 \ union all select $3644 \ union all select $3645 \ union all select $3646 \ union all select $3647 \ union all select $3648 \ union all select $3649 \ union all select $3650 \ union all select $3651 \ union all select $3652 \ union all select $3653 \ union all select $3654 \ union all select $3655 \ union all select $3656 \ union all select $3657 \ union all select $3658 \ union all select $3659 \ union all select $3660 \ union all select $3661 \ union all select $3662 \ union all select $3663 \ union all select $3664 \ union all select $3665 \ union all select $3666 \ union all select $3667 \ union all select $3668 \ union all select $3669 \ union all select $3670 \ union all select $3671 \ union all select $3672 \ union all select $3673 \ union all select $3674 \ union all select $3675 \ union all select $3676 \ union all select $3677 \ union all select $3678 \ union all select $3679 \ union all select $3680 \ union all select $3681 \ union all select $3682 \ union all select $3683 \ union all select $3684 \ union all select $3685 \ union all select $3686 \ union all select $3687 \ union all select $3688 \ union all select $3689 \ union all select $3690 \ union all select $3691 \ union all select $3692 \ union all select $3693 \ union all select $3694 \ union all select $3695 \ union all select $3696 \ union all select $3697 \ union all select $3698 \ union all select $3699 \ union all select $3700 \ union all select $3701 \ union all select $3702 \ union all select $3703 \ union all select $3704 \ union all select $3705 \ union all select $3706 \ union all select $3707 \ union all select $3708 \ union all select $3709 \ union all select $3710 \ union all select $3711 \ union all select $3712 \ union all select $3713 \ union all select $3714 \ union all select $3715 \ union all select $3716 \ union all select $3717 \ union all select $3718 \ union all select $3719 \ union all select $3720 \ union all select $3721 \ union all select $3722 \ union all select $3723 \ union all select $3724 \ union all select $3725 \ union all select $3726 \ union all select $3727 \ union all select $3728 \ union all select $3729 \ union all select $3730 \ union all select $3731 \ union all select $3732 \ union all select $3733 \ union all select $3734 \ union all select $3735 \ union all select $3736 \ union all select $3737 \ union all select $3738 \ union all select $3739 \ union all select $3740 \ union all select $3741 \ union all select $3742 \ union all select $3743 \ union all select $3744 \ union all select $3745 \ union all select $3746 \ union all select $3747 \ union all select $3748 \ union all select $3749 \ union all select $3750 \ union all select $3751 \ union all select $3752 \ union all select $3753 \ union all select $3754 \ union all select $3755 \ union all select $3756 \ union all select $3757 \ union all select $3758 \ union all select $3759 \ union all select $3760 \ union all select $3761 \ union all select $3762 \ union all select $3763 \ union all select $3764 \ union all select $3765 \ union all select $3766 \ union all select $3767 \ union all select $3768 \ union all select $3769 \ union all select $3770 \ union all select $3771 \ union all select $3772 \ union all select $3773 \ union all select $3774 \ union all select $3775 \ union all select $3776 \ union all select $3777 \ union all select $3778 \ union all select $3779 \ union all select $3780 \ union all select $3781 \ union all select $3782 \ union all select $3783 \ union all select $3784 \ union all select $3785 \ union all select $3786 \ union all select $3787 \ union all select $3788 \ union all select $3789 \ union all select $3790 \ union all select $3791 \ union all select $3792 \ union all select $3793 \ union all select $3794 \ union all select $3795 \ union all select $3796 \ union all select $3797 \ union all select $3798 \ union all select $3799 \ union all select $3800 \ union all select $3801 \ union all select $3802 \ union all select $3803 \ union all select $3804 \ union all select $3805 \ union all select $3806 \ union all select $3807 \ union all select $3808 \ union all select $3809 \ union all select $3810 \ union all select $3811 \ union all select $3812 \ union all select $3813 \ union all select $3814 \ union all select $3815 \ union all select $3816 \ union all select $3817 \ union all select $3818 \ union all select $3819 \ union all select $3820 \ union all select $3821 \ union all select $3822 \ union all select $3823 \ union all select $3824 \ union all select $3825 \ union all select $3826 \ union all select $3827 \ union all select $3828 \ union all select $3829 \ union all select $3830 \ union all select $3831 \ union all select $3832 \ union all select $3833 \ union all select $3834 \ union all select $3835 \ union all select $3836 \ union all select $3837 \ union all select $3838 \ union all select $3839 \ union all select $3840 \ union all select $3841 \ union all select $3842 \ union all select $3843 \ union all select $3844 \ union all select $3845 \ union all select $3846 \ union all select $3847 \ union all select $3848 \ union all select $3849 \ union all select $3850 \ union all select $3851 \ union all select $3852 \ union all select $3853 \ union all select $3854 \ union all select $3855 \ union all select $3856 \ union all select $3857 \ union all select $3858 \ union all select $3859 \ union all select $3860 \ union all select $3861 \ union all select $3862 \ union all select $3863 \ union all select $3864 \ union all select $3865 \ union all select $3866 \ union all select $3867 \ union all select $3868 \ union all select $3869 \ union all select $3870 \ union all select $3871 \ union all select $3872 \ union all select $3873 \ union all select $3874 \ union all select $3875 \ union all select $3876 \ union all select $3877 \ union all select $3878 \ union all select $3879 \ union all select $3880 \ union all select $3881 \ union all select $3882 \ union all select $3883 \ union all select $3884 \ union all select $3885 \ union all select $3886 \ union all select $3887 \ union all select $3888 \ union all select $3889 \ union all select $3890 \ union all select $3891 \ union all select $3892 \ union all select $3893 \ union all select $3894 \ union all select $3895 \ union all select $3896 \ union all select $3897 \ union all select $3898 \ union all select $3899 \ union all select $3900 \ union all select $3901 \ union all select $3902 \ union all select $3903 \ union all select $3904 \ union all select $3905 \ union all select $3906 \ union all select $3907 \ union all select $3908 \ union all select $3909 \ union all select $3910 \ union all select $3911 \ union all select $3912 \ union all select $3913 \ union all select $3914 \ union all select $3915 \ union all select $3916 \ union all select $3917 \ union all select $3918 \ union all select $3919 \ union all select $3920 \ union all select $3921 \ union all select $3922 \ union all select $3923 \ union all select $3924 \ union all select $3925 \ union all select $3926 \ union all select $3927 \ union all select $3928 \ union all select $3929 \ union all select $3930 \ union all select $3931 \ union all select $3932 \ union all select $3933 \ union all select $3934 \ union all select $3935 \ union all select $3936 \ union all select $3937 \ union all select $3938 \ union all select $3939 \ union all select $3940 \ union all select $3941 \ union all select $3942 \ union all select $3943 \ union all select $3944 \ union all select $3945 \ union all select $3946 \ union all select $3947 \ union all select $3948 \ union all select $3949 \ union all select $3950 \ union all select $3951 \ union all select $3952 \ union all select $3953 \ union all select $3954 \ union all select $3955 \ union all select $3956 \ union all select $3957 \ union all select $3958 \ union all select $3959 \ union all select $3960 \ union all select $3961 \ union all select $3962 \ union all select $3963 \ union all select $3964 \ union all select $3965 \ union all select $3966 \ union all select $3967 \ union all select $3968 \ union all select $3969 \ union all select $3970 \ union all select $3971 \ union all select $3972 \ union all select $3973 \ union all select $3974 \ union all select $3975 \ union all select $3976 \ union all select $3977 \ union all select $3978 \ union all select $3979 \ union all select $3980 \ union all select $3981 \ union all select $3982 \ union all select $3983 \ union all select $3984 \ union all select $3985 \ union all select $3986 \ union all select $3987 \ union all select $3988 \ union all select $3989 \ union all select $3990 \ union all select $3991 \ union all select $3992 \ union all select $3993 \ union all select $3994 \ union all select $3995 \ union all select $3996 \ union all select $3997 \ union all select $3998 \ union all select $3999 \ union all select $4000 \ union all select $4001 \ union all select $4002 \ union all select $4003 \ union all select $4004 \ union all select $4005 \ union all select $4006 \ union all select $4007 \ union all select $4008 \ union all select $4009 \ union all select $4010 \ union all select $4011 \ union all select $4012 \ union all select $4013 \ union all select $4014 \ union all select $4015 \ union all select $4016 \ union all select $4017 \ union all select $4018 \ union all select $4019 \ union all select $4020 \ union all select $4021 \ union all select $4022 \ union all select $4023 \ union all select $4024 \ union all select $4025 \ union all select $4026 \ union all select $4027 \ union all select $4028 \ union all select $4029 \ union all select $4030 \ union all select $4031 \ union all select $4032 \ union all select $4033 \ union all select $4034 \ union all select $4035 \ union all select $4036 \ union all select $4037 \ union all select $4038 \ union all select $4039 \ union all select $4040 \ union all select $4041 \ union all select $4042 \ union all select $4043 \ union all select $4044 \ union all select $4045 \ union all select $4046 \ union all select $4047 \ union all select $4048 \ union all select $4049 \ union all select $4050 \ union all select $4051 \ union all select $4052 \ union all select $4053 \ union all select $4054 \ union all select $4055 \ union all select $4056 \ union all select $4057 \ union all select $4058 \ union all select $4059 \ union all select $4060 \ union all select $4061 \ union all select $4062 \ union all select $4063 \ union all select $4064 \ union all select $4065 \ union all select $4066 \ union all select $4067 \ union all select $4068 \ union all select $4069 \ union all select $4070 \ union all select $4071 \ union all select $4072 \ union all select $4073 \ union all select $4074 \ union all select $4075 \ union all select $4076 \ union all select $4077 \ union all select $4078 \ union all select $4079 \ union all select $4080 \ union all select $4081 \ union all select $4082 \ union all select $4083 \ union all select $4084 \ union all select $4085 \ union all select $4086 \ union all select $4087 \ union all select $4088 \ union all select $4089 \ union all select $4090 \ union all select $4091 \ union all select $4092 \ union all select $4093 \ union all select $4094 \ union all select $4095 \ union all select $4096 \ union all select $4097 \ union all select $4098 \ union all select $4099 \ union all select $4100 \ union all select $4101 \ union all select $4102 \ union all select $4103 \ union all select $4104 \ union all select $4105 \ union all select $4106 \ union all select $4107 \ union all select $4108 \ union all select $4109 \ union all select $4110 \ union all select $4111 \ union all select $4112 \ union all select $4113 \ union all select $4114 \ union all select $4115 \ union all select $4116 \ union all select $4117 \ union all select $4118 \ union all select $4119 \ union all select $4120 \ union all select $4121 \ union all select $4122 \ union all select $4123 \ union all select $4124 \ union all select $4125 \ union all select $4126 \ union all select $4127 \ union all select $4128 \ union all select $4129 \ union all select $4130 \ union all select $4131 \ union all select $4132 \ union all select $4133 \ union all select $4134 \ union all select $4135 \ union all select $4136 \ union all select $4137 \ union all select $4138 \ union all select $4139 \ union all select $4140 \ union all select $4141 \ union all select $4142 \ union all select $4143 \ union all select $4144 \ union all select $4145 \ union all select $4146 \ union all select $4147 \ union all select $4148 \ union all select $4149 \ union all select $4150 \ union all select $4151 \ union all select $4152 \ union all select $4153 \ union all select $4154 \ union all select $4155 \ union all select $4156 \ union all select $4157 \ union all select $4158 \ union all select $4159 \ union all select $4160 \ union all select $4161 \ union all select $4162 \ union all select $4163 \ union all select $4164 \ union all select $4165 \ union all select $4166 \ union all select $4167 \ union all select $4168 \ union all select $4169 \ union all select $4170 \ union all select $4171 \ union all select $4172 \ union all select $4173 \ union all select $4174 \ union all select $4175 \ union all select $4176 \ union all select $4177 \ union all select $4178 \ union all select $4179 \ union all select $4180 \ union all select $4181 \ union all select $4182 \ union all select $4183 \ union all select $4184 \ union all select $4185 \ union all select $4186 \ union all select $4187 \ union all select $4188 \ union all select $4189 \ union all select $4190 \ union all select $4191 \ union all select $4192 \ union all select $4193 \ union all select $4194 \ union all select $4195 \ union all select $4196 \ union all select $4197 \ union all select $4198 \ union all select $4199 \ union all select $4200 \ union all select $4201 \ union all select $4202 \ union all select $4203 \ union all select $4204 \ union all select $4205 \ union all select $4206 \ union all select $4207 \ union all select $4208 \ union all select $4209 \ union all select $4210 \ union all select $4211 \ union all select $4212 \ union all select $4213 \ union all select $4214 \ union all select $4215 \ union all select $4216 \ union all select $4217 \ union all select $4218 \ union all select $4219 \ union all select $4220 \ union all select $4221 \ union all select $4222 \ union all select $4223 \ union all select $4224 \ union all select $4225 \ union all select $4226 \ union all select $4227 \ union all select $4228 \ union all select $4229 \ union all select $4230 \ union all select $4231 \ union all select $4232 \ union all select $4233 \ union all select $4234 \ union all select $4235 \ union all select $4236 \ union all select $4237 \ union all select $4238 \ union all select $4239 \ union all select $4240 \ union all select $4241 \ union all select $4242 \ union all select $4243 \ union all select $4244 \ union all select $4245 \ union all select $4246 \ union all select $4247 \ union all select $4248 \ union all select $4249 \ union all select $4250 \ union all select $4251 \ union all select $4252 \ union all select $4253 \ union all select $4254 \ union all select $4255 \ union all select $4256 \ union all select $4257 \ union all select $4258 \ union all select $4259 \ union all select $4260 \ union all select $4261 \ union all select $4262 \ union all select $4263 \ union all select $4264 \ union all select $4265 \ union all select $4266 \ union all select $4267 \ union all select $4268 \ union all select $4269 \ union all select $4270 \ union all select $4271 \ union all select $4272 \ union all select $4273 \ union all select $4274 \ union all select $4275 \ union all select $4276 \ union all select $4277 \ union all select $4278 \ union all select $4279 \ union all select $4280 \ union all select $4281 \ union all select $4282 \ union all select $4283 \ union all select $4284 \ union all select $4285 \ union all select $4286 \ union all select $4287 \ union all select $4288 \ union all select $4289 \ union all select $4290 \ union all select $4291 \ union all select $4292 \ union all select $4293 \ union all select $4294 \ union all select $4295 \ union all select $4296 \ union all select $4297 \ union all select $4298 \ union all select $4299 \ union all select $4300 \ union all select $4301 \ union all select $4302 \ union all select $4303 \ union all select $4304 \ union all select $4305 \ union all select $4306 \ union all select $4307 \ union all select $4308 \ union all select $4309 \ union all select $4310 \ union all select $4311 \ union all select $4312 \ union all select $4313 \ union all select $4314 \ union all select $4315 \ union all select $4316 \ union all select $4317 \ union all select $4318 \ union all select $4319 \ union all select $4320 \ union all select $4321 \ union all select $4322 \ union all select $4323 \ union all select $4324 \ union all select $4325 \ union all select $4326 \ union all select $4327 \ union all select $4328 \ union all select $4329 \ union all select $4330 \ union all select $4331 \ union all select $4332 \ union all select $4333 \ union all select $4334 \ union all select $4335 \ union all select $4336 \ union all select $4337 \ union all select $4338 \ union all select $4339 \ union all select $4340 \ union all select $4341 \ union all select $4342 \ union all select $4343 \ union all select $4344 \ union all select $4345 \ union all select $4346 \ union all select $4347 \ union all select $4348 \ union all select $4349 \ union all select $4350 \ union all select $4351 \ union all select $4352 \ union all select $4353 \ union all select $4354 \ union all select $4355 \ union all select $4356 \ union all select $4357 \ union all select $4358 \ union all select $4359 \ union all select $4360 \ union all select $4361 \ union all select $4362 \ union all select $4363 \ union all select $4364 \ union all select $4365 \ union all select $4366 \ union all select $4367 \ union all select $4368 \ union all select $4369 \ union all select $4370 \ union all select $4371 \ union all select $4372 \ union all select $4373 \ union all select $4374 \ union all select $4375 \ union all select $4376 \ union all select $4377 \ union all select $4378 \ union all select $4379 \ union all select $4380 \ union all select $4381 \ union all select $4382 \ union all select $4383 \ union all select $4384 \ union all select $4385 \ union all select $4386 \ union all select $4387 \ union all select $4388 \ union all select $4389 \ union all select $4390 \ union all select $4391 \ union all select $4392 \ union all select $4393 \ union all select $4394 \ union all select $4395 \ union all select $4396 \ union all select $4397 \ union all select $4398 \ union all select $4399 \ union all select $4400 \ union all select $4401 \ union all select $4402 \ union all select $4403 \ union all select $4404 \ union all select $4405 \ union all select $4406 \ union all select $4407 \ union all select $4408 \ union all select $4409 \ union all select $4410 \ union all select $4411 \ union all select $4412 \ union all select $4413 \ union all select $4414 \ union all select $4415 \ union all select $4416 \ union all select $4417 \ union all select $4418 \ union all select $4419 \ union all select $4420 \ union all select $4421 \ union all select $4422 \ union all select $4423 \ union all select $4424 \ union all select $4425 \ union all select $4426 \ union all select $4427 \ union all select $4428 \ union all select $4429 \ union all select $4430 \ union all select $4431 \ union all select $4432 \ union all select $4433 \ union all select $4434 \ union all select $4435 \ union all select $4436 \ union all select $4437 \ union all select $4438 \ union all select $4439 \ union all select $4440 \ union all select $4441 \ union all select $4442 \ union all select $4443 \ union all select $4444 \ union all select $4445 \ union all select $4446 \ union all select $4447 \ union all select $4448 \ union all select $4449 \ union all select $4450 \ union all select $4451 \ union all select $4452 \ union all select $4453 \ union all select $4454 \ union all select $4455 \ union all select $4456 \ union all select $4457 \ union all select $4458 \ union all select $4459 \ union all select $4460 \ union all select $4461 \ union all select $4462 \ union all select $4463 \ union all select $4464 \ union all select $4465 \ union all select $4466 \ union all select $4467 \ union all select $4468 \ union all select $4469 \ union all select $4470 \ union all select $4471 \ union all select $4472 \ union all select $4473 \ union all select $4474 \ union all select $4475 \ union all select $4476 \ union all select $4477 \ union all select $4478 \ union all select $4479 \ union all select $4480 \ union all select $4481 \ union all select $4482 \ union all select $4483 \ union all select $4484 \ union all select $4485 \ union all select $4486 \ union all select $4487 \ union all select $4488 \ union all select $4489 \ union all select $4490 \ union all select $4491 \ union all select $4492 \ union all select $4493 \ union all select $4494 \ union all select $4495 \ union all select $4496 \ union all select $4497 \ union all select $4498 \ union all select $4499 \ union all select $4500 \ union all select $4501 \ union all select $4502 \ union all select $4503 \ union all select $4504 \ union all select $4505 \ union all select $4506 \ union all select $4507 \ union all select $4508 \ union all select $4509 \ union all select $4510 \ union all select $4511 \ union all select $4512 \ union all select $4513 \ union all select $4514 \ union all select $4515 \ union all select $4516 \ union all select $4517 \ union all select $4518 \ union all select $4519 \ union all select $4520 \ union all select $4521 \ union all select $4522 \ union all select $4523 \ union all select $4524 \ union all select $4525 \ union all select $4526 \ union all select $4527 \ union all select $4528 \ union all select $4529 \ union all select $4530 \ union all select $4531 \ union all select $4532 \ union all select $4533 \ union all select $4534 \ union all select $4535 \ union all select $4536 \ union all select $4537 \ union all select $4538 \ union all select $4539 \ union all select $4540 \ union all select $4541 \ union all select $4542 \ union all select $4543 \ union all select $4544 \ union all select $4545 \ union all select $4546 \ union all select $4547 \ union all select $4548 \ union all select $4549 \ union all select $4550 \ union all select $4551 \ union all select $4552 \ union all select $4553 \ union all select $4554 \ union all select $4555 \ union all select $4556 \ union all select $4557 \ union all select $4558 \ union all select $4559 \ union all select $4560 \ union all select $4561 \ union all select $4562 \ union all select $4563 \ union all select $4564 \ union all select $4565 \ union all select $4566 \ union all select $4567 \ union all select $4568 \ union all select $4569 \ union all select $4570 \ union all select $4571 \ union all select $4572 \ union all select $4573 \ union all select $4574 \ union all select $4575 \ union all select $4576 \ union all select $4577 \ union all select $4578 \ union all select $4579 \ union all select $4580 \ union all select $4581 \ union all select $4582 \ union all select $4583 \ union all select $4584 \ union all select $4585 \ union all select $4586 \ union all select $4587 \ union all select $4588 \ union all select $4589 \ union all select $4590 \ union all select $4591 \ union all select $4592 \ union all select $4593 \ union all select $4594 \ union all select $4595 \ union all select $4596 \ union all select $4597 \ union all select $4598 \ union all select $4599 \ union all select $4600 \ union all select $4601 \ union all select $4602 \ union all select $4603 \ union all select $4604 \ union all select $4605 \ union all select $4606 \ union all select $4607 \ union all select $4608 \ union all select $4609 \ union all select $4610 \ union all select $4611 \ union all select $4612 \ union all select $4613 \ union all select $4614 \ union all select $4615 \ union all select $4616 \ union all select $4617 \ union all select $4618 \ union all select $4619 \ union all select $4620 \ union all select $4621 \ union all select $4622 \ union all select $4623 \ union all select $4624 \ union all select $4625 \ union all select $4626 \ union all select $4627 \ union all select $4628 \ union all select $4629 \ union all select $4630 \ union all select $4631 \ union all select $4632 \ union all select $4633 \ union all select $4634 \ union all select $4635 \ union all select $4636 \ union all select $4637 \ union all select $4638 \ union all select $4639 \ union all select $4640 \ union all select $4641 \ union all select $4642 \ union all select $4643 \ union all select $4644 \ union all select $4645 \ union all select $4646 \ union all select $4647 \ union all select $4648 \ union all select $4649 \ union all select $4650 \ union all select $4651 \ union all select $4652 \ union all select $4653 \ union all select $4654 \ union all select $4655 \ union all select $4656 \ union all select $4657 \ union all select $4658 \ union all select $4659 \ union all select $4660 \ union all select $4661 \ union all select $4662 \ union all select $4663 \ union all select $4664 \ union all select $4665 \ union all select $4666 \ union all select $4667 \ union all select $4668 \ union all select $4669 \ union all select $4670 \ union all select $4671 \ union all select $4672 \ union all select $4673 \ union all select $4674 \ union all select $4675 \ union all select $4676 \ union all select $4677 \ union all select $4678 \ union all select $4679 \ union all select $4680 \ union all select $4681 \ union all select $4682 \ union all select $4683 \ union all select $4684 \ union all select $4685 \ union all select $4686 \ union all select $4687 \ union all select $4688 \ union all select $4689 \ union all select $4690 \ union all select $4691 \ union all select $4692 \ union all select $4693 \ union all select $4694 \ union all select $4695 \ union all select $4696 \ union all select $4697 \ union all select $4698 \ union all select $4699 \ union all select $4700 \ union all select $4701 \ union all select $4702 \ union all select $4703 \ union all select $4704 \ union all select $4705 \ union all select $4706 \ union all select $4707 \ union all select $4708 \ union all select $4709 \ union all select $4710 \ union all select $4711 \ union all select $4712 \ union all select $4713 \ union all select $4714 \ union all select $4715 \ union all select $4716 \ union all select $4717 \ union all select $4718 \ union all select $4719 \ union all select $4720 \ union all select $4721 \ union all select $4722 \ union all select $4723 \ union all select $4724 \ union all select $4725 \ union all select $4726 \ union all select $4727 \ union all select $4728 \ union all select $4729 \ union all select $4730 \ union all select $4731 \ union all select $4732 \ union all select $4733 \ union all select $4734 \ union all select $4735 \ union all select $4736 \ union all select $4737 \ union all select $4738 \ union all select $4739 \ union all select $4740 \ union all select $4741 \ union all select $4742 \ union all select $4743 \ union all select $4744 \ union all select $4745 \ union all select $4746 \ union all select $4747 \ union all select $4748 \ union all select $4749 \ union all select $4750 \ union all select $4751 \ union all select $4752 \ union all select $4753 \ union all select $4754 \ union all select $4755 \ union all select $4756 \ union all select $4757 \ union all select $4758 \ union all select $4759 \ union all select $4760 \ union all select $4761 \ union all select $4762 \ union all select $4763 \ union all select $4764 \ union all select $4765 \ union all select $4766 \ union all select $4767 \ union all select $4768 \ union all select $4769 \ union all select $4770 \ union all select $4771 \ union all select $4772 \ union all select $4773 \ union all select $4774 \ union all select $4775 \ union all select $4776 \ union all select $4777 \ union all select $4778 \ union all select $4779 \ union all select $4780 \ union all select $4781 \ union all select $4782 \ union all select $4783 \ union all select $4784 \ union all select $4785 \ union all select $4786 \ union all select $4787 \ union all select $4788 \ union all select $4789 \ union all select $4790 \ union all select $4791 \ union all select $4792 \ union all select $4793 \ union all select $4794 \ union all select $4795 \ union all select $4796 \ union all select $4797 \ union all select $4798 \ union all select $4799 \ union all select $4800 \ union all select $4801 \ union all select $4802 \ union all select $4803 \ union all select $4804 \ union all select $4805 \ union all select $4806 \ union all select $4807 \ union all select $4808 \ union all select $4809 \ union all select $4810 \ union all select $4811 \ union all select $4812 \ union all select $4813 \ union all select $4814 \ union all select $4815 \ union all select $4816 \ union all select $4817 \ union all select $4818 \ union all select $4819 \ union all select $4820 \ union all select $4821 \ union all select $4822 \ union all select $4823 \ union all select $4824 \ union all select $4825 \ union all select $4826 \ union all select $4827 \ union all select $4828 \ union all select $4829 \ union all select $4830 \ union all select $4831 \ union all select $4832 \ union all select $4833 \ union all select $4834 \ union all select $4835 \ union all select $4836 \ union all select $4837 \ union all select $4838 \ union all select $4839 \ union all select $4840 \ union all select $4841 \ union all select $4842 \ union all select $4843 \ union all select $4844 \ union all select $4845 \ union all select $4846 \ union all select $4847 \ union all select $4848 \ union all select $4849 \ union all select $4850 \ union all select $4851 \ union all select $4852 \ union all select $4853 \ union all select $4854 \ union all select $4855 \ union all select $4856 \ union all select $4857 \ union all select $4858 \ union all select $4859 \ union all select $4860 \ union all select $4861 \ union all select $4862 \ union all select $4863 \ union all select $4864 \ union all select $4865 \ union all select $4866 \ union all select $4867 \ union all select $4868 \ union all select $4869 \ union all select $4870 \ union all select $4871 \ union all select $4872 \ union all select $4873 \ union all select $4874 \ union all select $4875 \ union all select $4876 \ union all select $4877 \ union all select $4878 \ union all select $4879 \ union all select $4880 \ union all select $4881 \ union all select $4882 \ union all select $4883 \ union all select $4884 \ union all select $4885 \ union all select $4886 \ union all select $4887 \ union all select $4888 \ union all select $4889 \ union all select $4890 \ union all select $4891 \ union all select $4892 \ union all select $4893 \ union all select $4894 \ union all select $4895 \ union all select $4896 \ union all select $4897 \ union all select $4898 \ union all select $4899 \ union all select $4900 \ union all select $4901 \ union all select $4902 \ union all select $4903 \ union all select $4904 \ union all select $4905 \ union all select $4906 \ union all select $4907 \ union all select $4908 \ union all select $4909 \ union all select $4910 \ union all select $4911 \ union all select $4912 \ union all select $4913 \ union all select $4914 \ union all select $4915 \ union all select $4916 \ union all select $4917 \ union all select $4918 \ union all select $4919 \ union all select $4920 \ union all select $4921 \ union all select $4922 \ union all select $4923 \ union all select $4924 \ union all select $4925 \ union all select $4926 \ union all select $4927 \ union all select $4928 \ union all select $4929 \ union all select $4930 \ union all select $4931 \ union all select $4932 \ union all select $4933 \ union all select $4934 \ union all select $4935 \ union all select $4936 \ union all select $4937 \ union all select $4938 \ union all select $4939 \ union all select $4940 \ union all select $4941 \ union all select $4942 \ union all select $4943 \ union all select $4944 \ union all select $4945 \ union all select $4946 \ union all select $4947 \ union all select $4948 \ union all select $4949 \ union all select $4950 \ union all select $4951 \ union all select $4952 \ union all select $4953 \ union all select $4954 \ union all select $4955 \ union all select $4956 \ union all select $4957 \ union all select $4958 \ union all select $4959 \ union all select $4960 \ union all select $4961 \ union all select $4962 \ union all select $4963 \ union all select $4964 \ union all select $4965 \ union all select $4966 \ union all select $4967 \ union all select $4968 \ union all select $4969 \ union all select $4970 \ union all select $4971 \ union all select $4972 \ union all select $4973 \ union all select $4974 \ union all select $4975 \ union all select $4976 \ union all select $4977 \ union all select $4978 \ union all select $4979 \ union all select $4980 \ union all select $4981 \ union all select $4982 \ union all select $4983 \ union all select $4984 \ union all select $4985 \ union all select $4986 \ union all select $4987 \ union all select $4988 \ union all select $4989 \ union all select $4990 \ union all select $4991 \ union all select $4992 \ union all select $4993 \ union all select $4994 \ union all select $4995 \ union all select $4996 \ union all select $4997 \ union all select $4998 \ union all select $4999 \ union all select $5000 \ union all select $5001 \ union all select $5002 \ union all select $5003 \ union all select $5004 \ union all select $5005 \ union all select $5006 \ union all select $5007 \ union all select $5008 \ union all select $5009 \ union all select $5010 \ union all select $5011 \ union all select $5012 \ union all select $5013 \ union all select $5014 \ union all select $5015 \ union all select $5016 \ union all select $5017 \ union all select $5018 \ union all select $5019 \ union all select $5020 \ union all select $5021 \ union all select $5022 \ union all select $5023 \ union all select $5024 \ union all select $5025 \ union all select $5026 \ union all select $5027 \ union all select $5028 \ union all select $5029 \ union all select $5030 \ union all select $5031 \ union all select $5032 \ union all select $5033 \ union all select $5034 \ union all select $5035 \ union all select $5036 \ union all select $5037 \ union all select $5038 \ union all select $5039 \ union all select $5040 \ union all select $5041 \ union all select $5042 \ union all select $5043 \ union all select $5044 \ union all select $5045 \ union all select $5046 \ union all select $5047 \ union all select $5048 \ union all select $5049 \ union all select $5050 \ union all select $5051 \ union all select $5052 \ union all select $5053 \ union all select $5054 \ union all select $5055 \ union all select $5056 \ union all select $5057 \ union all select $5058 \ union all select $5059 \ union all select $5060 \ union all select $5061 \ union all select $5062 \ union all select $5063 \ union all select $5064 \ union all select $5065 \ union all select $5066 \ union all select $5067 \ union all select $5068 \ union all select $5069 \ union all select $5070 \ union all select $5071 \ union all select $5072 \ union all select $5073 \ union all select $5074 \ union all select $5075 \ union all select $5076 \ union all select $5077 \ union all select $5078 \ union all select $5079 \ union all select $5080 \ union all select $5081 \ union all select $5082 \ union all select $5083 \ union all select $5084 \ union all select $5085 \ union all select $5086 \ union all select $5087 \ union all select $5088 \ union all select $5089 \ union all select $5090 \ union all select $5091 \ union all select $5092 \ union all select $5093 \ union all select $5094 \ union all select $5095 \ union all select $5096 \ union all select $5097 \ union all select $5098 \ union all select $5099 \ union all select $5100 \ union all select $5101 \ union all select $5102 \ union all select $5103 \ union all select $5104 \ union all select $5105 \ union all select $5106 \ union all select $5107 \ union all select $5108 \ union all select $5109 \ union all select $5110 \ union all select $5111 \ union all select $5112 \ union all select $5113 \ union all select $5114 \ union all select $5115 \ union all select $5116 \ union all select $5117 \ union all select $5118 \ union all select $5119 \ union all select $5120 \ union all select $5121 \ union all select $5122 \ union all select $5123 \ union all select $5124 \ union all select $5125 \ union all select $5126 \ union all select $5127 \ union all select $5128 \ union all select $5129 \ union all select $5130 \ union all select $5131 \ union all select $5132 \ union all select $5133 \ union all select $5134 \ union all select $5135 \ union all select $5136 \ union all select $5137 \ union all select $5138 \ union all select $5139 \ union all select $5140 \ union all select $5141 \ union all select $5142 \ union all select $5143 \ union all select $5144 \ union all select $5145 \ union all select $5146 \ union all select $5147 \ union all select $5148 \ union all select $5149 \ union all select $5150 \ union all select $5151 \ union all select $5152 \ union all select $5153 \ union all select $5154 \ union all select $5155 \ union all select $5156 \ union all select $5157 \ union all select $5158 \ union all select $5159 \ union all select $5160 \ union all select $5161 \ union all select $5162 \ union all select $5163 \ union all select $5164 \ union all select $5165 \ union all select $5166 \ union all select $5167 \ union all select $5168 \ union all select $5169 \ union all select $5170 \ union all select $5171 \ union all select $5172 \ union all select $5173 \ union all select $5174 \ union all select $5175 \ union all select $5176 \ union all select $5177 \ union all select $5178 \ union all select $5179 \ union all select $5180 \ union all select $5181 \ union all select $5182 \ union all select $5183 \ union all select $5184 \ union all select $5185 \ union all select $5186 \ union all select $5187 \ union all select $5188 \ union all select $5189 \ union all select $5190 \ union all select $5191 \ union all select $5192 \ union all select $5193 \ union all select $5194 \ union all select $5195 \ union all select $5196 \ union all select $5197 \ union all select $5198 \ union all select $5199 \ union all select $5200 \ union all select $5201 \ union all select $5202 \ union all select $5203 \ union all select $5204 \ union all select $5205 \ union all select $5206 \ union all select $5207 \ union all select $5208 \ union all select $5209 \ union all select $5210 \ union all select $5211 \ union all select $5212 \ union all select $5213 \ union all select $5214 \ union all select $5215 \ union all select $5216 \ union all select $5217 \ union all select $5218 \ union all select $5219 \ union all select $5220 \ union all select $5221 \ union all select $5222 \ union all select $5223 \ union all select $5224 \ union all select $5225 \ union all select $5226 \ union all select $5227 \ union all select $5228 \ union all select $5229 \ union all select $5230 \ union all select $5231 \ union all select $5232 \ union all select $5233 \ union all select $5234 \ union all select $5235 \ union all select $5236 \ union all select $5237 \ union all select $5238 \ union all select $5239 \ union all select $5240 \ union all select $5241 \ union all select $5242 \ union all select $5243 \ union all select $5244 \ union all select $5245 \ union all select $5246 \ union all select $5247 \ union all select $5248 \ union all select $5249 \ union all select $5250 \ union all select $5251 \ union all select $5252 \ union all select $5253 \ union all select $5254 \ union all select $5255 \ union all select $5256 \ union all select $5257 \ union all select $5258 \ union all select $5259 \ union all select $5260 \ union all select $5261 \ union all select $5262 \ union all select $5263 \ union all select $5264 \ union all select $5265 \ union all select $5266 \ union all select $5267 \ union all select $5268 \ union all select $5269 \ union all select $5270 \ union all select $5271 \ union all select $5272 \ union all select $5273 \ union all select $5274 \ union all select $5275 \ union all select $5276 \ union all select $5277 \ union all select $5278 \ union all select $5279 \ union all select $5280 \ union all select $5281 \ union all select $5282 \ union all select $5283 \ union all select $5284 \ union all select $5285 \ union all select $5286 \ union all select $5287 \ union all select $5288 \ union all select $5289 \ union all select $5290 \ union all select $5291 \ union all select $5292 \ union all select $5293 \ union all select $5294 \ union all select $5295 \ union all select $5296 \ union all select $5297 \ union all select $5298 \ union all select $5299 \ union all select $5300 \ union all select $5301 \ union all select $5302 \ union all select $5303 \ union all select $5304 \ union all select $5305 \ union all select $5306 \ union all select $5307 \ union all select $5308 \ union all select $5309 \ union all select $5310 \ union all select $5311 \ union all select $5312 \ union all select $5313 \ union all select $5314 \ union all select $5315 \ union all select $5316 \ union all select $5317 \ union all select $5318 \ union all select $5319 \ union all select $5320 \ union all select $5321 \ union all select $5322 \ union all select $5323 \ union all select $5324 \ union all select $5325 \ union all select $5326 \ union all select $5327 \ union all select $5328 \ union all select $5329 \ union all select $5330 \ union all select $5331 \ union all select $5332 \ union all select $5333 \ union all select $5334 \ union all select $5335 \ union all select $5336 \ union all select $5337 \ union all select $5338 \ union all select $5339 \ union all select $5340 \ union all select $5341 \ union all select $5342 \ union all select $5343 \ union all select $5344 \ union all select $5345 \ union all select $5346 \ union all select $5347 \ union all select $5348 \ union all select $5349 \ union all select $5350 \ union all select $5351 \ union all select $5352 \ union all select $5353 \ union all select $5354 \ union all select $5355 \ union all select $5356 \ union all select $5357 \ union all select $5358 \ union all select $5359 \ union all select $5360 \ union all select $5361 \ union all select $5362 \ union all select $5363 \ union all select $5364 \ union all select $5365 \ union all select $5366 \ union all select $5367 \ union all select $5368 \ union all select $5369 \ union all select $5370 \ union all select $5371 \ union all select $5372 \ union all select $5373 \ union all select $5374 \ union all select $5375 \ union all select $5376 \ union all select $5377 \ union all select $5378 \ union all select $5379 \ union all select $5380 \ union all select $5381 \ union all select $5382 \ union all select $5383 \ union all select $5384 \ union all select $5385 \ union all select $5386 \ union all select $5387 \ union all select $5388 \ union all select $5389 \ union all select $5390 \ union all select $5391 \ union all select $5392 \ union all select $5393 \ union all select $5394 \ union all select $5395 \ union all select $5396 \ union all select $5397 \ union all select $5398 \ union all select $5399 \ union all select $5400 \ union all select $5401 \ union all select $5402 \ union all select $5403 \ union all select $5404 \ union all select $5405 \ union all select $5406 \ union all select $5407 \ union all select $5408 \ union all select $5409 \ union all select $5410 \ union all select $5411 \ union all select $5412 \ union all select $5413 \ union all select $5414 \ union all select $5415 \ union all select $5416 \ union all select $5417 \ union all select $5418 \ union all select $5419 \ union all select $5420 \ union all select $5421 \ union all select $5422 \ union all select $5423 \ union all select $5424 \ union all select $5425 \ union all select $5426 \ union all select $5427 \ union all select $5428 \ union all select $5429 \ union all select $5430 \ union all select $5431 \ union all select $5432 \ union all select $5433 \ union all select $5434 \ union all select $5435 \ union all select $5436 \ union all select $5437 \ union all select $5438 \ union all select $5439 \ union all select $5440 \ union all select $5441 \ union all select $5442 \ union all select $5443 \ union all select $5444 \ union all select $5445 \ union all select $5446 \ union all select $5447 \ union all select $5448 \ union all select $5449 \ union all select $5450 \ union all select $5451 \ union all select $5452 \ union all select $5453 \ union all select $5454 \ union all select $5455 \ union all select $5456 \ union all select $5457 \ union all select $5458 \ union all select $5459 \ union all select $5460 \ union all select $5461 \ union all select $5462 \ union all select $5463 \ union all select $5464 \ union all select $5465 \ union all select $5466 \ union all select $5467 \ union all select $5468 \ union all select $5469 \ union all select $5470 \ union all select $5471 \ union all select $5472 \ union all select $5473 \ union all select $5474 \ union all select $5475 \ union all select $5476 \ union all select $5477 \ union all select $5478 \ union all select $5479 \ union all select $5480 \ union all select $5481 \ union all select $5482 \ union all select $5483 \ union all select $5484 \ union all select $5485 \ union all select $5486 \ union all select $5487 \ union all select $5488 \ union all select $5489 \ union all select $5490 \ union all select $5491 \ union all select $5492 \ union all select $5493 \ union all select $5494 \ union all select $5495 \ union all select $5496 \ union all select $5497 \ union all select $5498 \ union all select $5499 \ union all select $5500 \ union all select $5501 \ union all select $5502 \ union all select $5503 \ union all select $5504 \ union all select $5505 \ union all select $5506 \ union all select $5507 \ union all select $5508 \ union all select $5509 \ union all select $5510 \ union all select $5511 \ union all select $5512 \ union all select $5513 \ union all select $5514 \ union all select $5515 \ union all select $5516 \ union all select $5517 \ union all select $5518 \ union all select $5519 \ union all select $5520 \ union all select $5521 \ union all select $5522 \ union all select $5523 \ union all select $5524 \ union all select $5525 \ union all select $5526 \ union all select $5527 \ union all select $5528 \ union all select $5529 \ union all select $5530 \ union all select $5531 \ union all select $5532 \ union all select $5533 \ union all select $5534 \ union all select $5535 \ union all select $5536 \ union all select $5537 \ union all select $5538 \ union all select $5539 \ union all select $5540 \ union all select $5541 \ union all select $5542 \ union all select $5543 \ union all select $5544 \ union all select $5545 \ union all select $5546 \ union all select $5547 \ union all select $5548 \ union all select $5549 \ union all select $5550 \ union all select $5551 \ union all select $5552 \ union all select $5553 \ union all select $5554 \ union all select $5555 \ union all select $5556 \ union all select $5557 \ union all select $5558 \ union all select $5559 \ union all select $5560 \ union all select $5561 \ union all select $5562 \ union all select $5563 \ union all select $5564 \ union all select $5565 \ union all select $5566 \ union all select $5567 \ union all select $5568 \ union all select $5569 \ union all select $5570 \ union all select $5571 \ union all select $5572 \ union all select $5573 \ union all select $5574 \ union all select $5575 \ union all select $5576 \ union all select $5577 \ union all select $5578 \ union all select $5579 \ union all select $5580 \ union all select $5581 \ union all select $5582 \ union all select $5583 \ union all select $5584 \ union all select $5585 \ union all select $5586 \ union all select $5587 \ union all select $5588 \ union all select $5589 \ union all select $5590 \ union all select $5591 \ union all select $5592 \ union all select $5593 \ union all select $5594 \ union all select $5595 \ union all select $5596 \ union all select $5597 \ union all select $5598 \ union all select $5599 \ union all select $5600 \ union all select $5601 \ union all select $5602 \ union all select $5603 \ union all select $5604 \ union all select $5605 \ union all select $5606 \ union all select $5607 \ union all select $5608 \ union all select $5609 \ union all select $5610 \ union all select $5611 \ union all select $5612 \ union all select $5613 \ union all select $5614 \ union all select $5615 \ union all select $5616 \ union all select $5617 \ union all select $5618 \ union all select $5619 \ union all select $5620 \ union all select $5621 \ union all select $5622 \ union all select $5623 \ union all select $5624 \ union all select $5625 \ union all select $5626 \ union all select $5627 \ union all select $5628 \ union all select $5629 \ union all select $5630 \ union all select $5631 \ union all select $5632 \ union all select $5633 \ union all select $5634 \ union all select $5635 \ union all select $5636 \ union all select $5637 \ union all select $5638 \ union all select $5639 \ union all select $5640 \ union all select $5641 \ union all select $5642 \ union all select $5643 \ union all select $5644 \ union all select $5645 \ union all select $5646 \ union all select $5647 \ union all select $5648 \ union all select $5649 \ union all select $5650 \ union all select $5651 \ union all select $5652 \ union all select $5653 \ union all select $5654 \ union all select $5655 \ union all select $5656 \ union all select $5657 \ union all select $5658 \ union all select $5659 \ union all select $5660 \ union all select $5661 \ union all select $5662 \ union all select $5663 \ union all select $5664 \ union all select $5665 \ union all select $5666 \ union all select $5667 \ union all select $5668 \ union all select $5669 \ union all select $5670 \ union all select $5671 \ union all select $5672 \ union all select $5673 \ union all select $5674 \ union all select $5675 \ union all select $5676 \ union all select $5677 \ union all select $5678 \ union all select $5679 \ union all select $5680 \ union all select $5681 \ union all select $5682 \ union all select $5683 \ union all select $5684 \ union all select $5685 \ union all select $5686 \ union all select $5687 \ union all select $5688 \ union all select $5689 \ union all select $5690 \ union all select $5691 \ union all select $5692 \ union all select $5693 \ union all select $5694 \ union all select $5695 \ union all select $5696 \ union all select $5697 \ union all select $5698 \ union all select $5699 \ union all select $5700 \ union all select $5701 \ union all select $5702 \ union all select $5703 \ union all select $5704 \ union all select $5705 \ union all select $5706 \ union all select $5707 \ union all select $5708 \ union all select $5709 \ union all select $5710 \ union all select $5711 \ union all select $5712 \ union all select $5713 \ union all select $5714 \ union all select $5715 \ union all select $5716 \ union all select $5717 \ union all select $5718 \ union all select $5719 \ union all select $5720 \ union all select $5721 \ union all select $5722 \ union all select $5723 \ union all select $5724 \ union all select $5725 \ union all select $5726 \ union all select $5727 \ union all select $5728 \ union all select $5729 \ union all select $5730 \ union all select $5731 \ union all select $5732 \ union all select $5733 \ union all select $5734 \ union all select $5735 \ union all select $5736 \ union all select $5737 \ union all select $5738 \ union all select $5739 \ union all select $5740 \ union all select $5741 \ union all select $5742 \ union all select $5743 \ union all select $5744 \ union all select $5745 \ union all select $5746 \ union all select $5747 \ union all select $5748 \ union all select $5749 \ union all select $5750 \ union all select $5751 \ union all select $5752 \ union all select $5753 \ union all select $5754 \ union all select $5755 \ union all select $5756 \ union all select $5757 \ union all select $5758 \ union all select $5759 \ union all select $5760 \ union all select $5761 \ union all select $5762 \ union all select $5763 \ union all select $5764 \ union all select $5765 \ union all select $5766 \ union all select $5767 \ union all select $5768 \ union all select $5769 \ union all select $5770 \ union all select $5771 \ union all select $5772 \ union all select $5773 \ union all select $5774 \ union all select $5775 \ union all select $5776 \ union all select $5777 \ union all select $5778 \ union all select $5779 \ union all select $5780 \ union all select $5781 \ union all select $5782 \ union all select $5783 \ union all select $5784 \ union all select $5785 \ union all select $5786 \ union all select $5787 \ union all select $5788 \ union all select $5789 \ union all select $5790 \ union all select $5791 \ union all select $5792 \ union all select $5793 \ union all select $5794 \ union all select $5795 \ union all select $5796 \ union all select $5797 \ union all select $5798 \ union all select $5799 \ union all select $5800 \ union all select $5801 \ union all select $5802 \ union all select $5803 \ union all select $5804 \ union all select $5805 \ union all select $5806 \ union all select $5807 \ union all select $5808 \ union all select $5809 \ union all select $5810 \ union all select $5811 \ union all select $5812 \ union all select $5813 \ union all select $5814 \ union all select $5815 \ union all select $5816 \ union all select $5817 \ union all select $5818 \ union all select $5819 \ union all select $5820 \ union all select $5821 \ union all select $5822 \ union all select $5823 \ union all select $5824 \ union all select $5825 \ union all select $5826 \ union all select $5827 \ union all select $5828 \ union all select $5829 \ union all select $5830 \ union all select $5831 \ union all select $5832 \ union all select $5833 \ union all select $5834 \ union all select $5835 \ union all select $5836 \ union all select $5837 \ union all select $5838 \ union all select $5839 \ union all select $5840 \ union all select $5841 \ union all select $5842 \ union all select $5843 \ union all select $5844 \ union all select $5845 \ union all select $5846 \ union all select $5847 \ union all select $5848 \ union all select $5849 \ union all select $5850 \ union all select $5851 \ union all select $5852 \ union all select $5853 \ union all select $5854 \ union all select $5855 \ union all select $5856 \ union all select $5857 \ union all select $5858 \ union all select $5859 \ union all select $5860 \ union all select $5861 \ union all select $5862 \ union all select $5863 \ union all select $5864 \ union all select $5865 \ union all select $5866 \ union all select $5867 \ union all select $5868 \ union all select $5869 \ union all select $5870 \ union all select $5871 \ union all select $5872 \ union all select $5873 \ union all select $5874 \ union all select $5875 \ union all select $5876 \ union all select $5877 \ union all select $5878 \ union all select $5879 \ union all select $5880 \ union all select $5881 \ union all select $5882 \ union all select $5883 \ union all select $5884 \ union all select $5885 \ union all select $5886 \ union all select $5887 \ union all select $5888 \ union all select $5889 \ union all select $5890 \ union all select $5891 \ union all select $5892 \ union all select $5893 \ union all select $5894 \ union all select $5895 \ union all select $5896 \ union all select $5897 \ union all select $5898 \ union all select $5899 \ union all select $5900 \ union all select $5901 \ union all select $5902 \ union all select $5903 \ union all select $5904 \ union all select $5905 \ union all select $5906 \ union all select $5907 \ union all select $5908 \ union all select $5909 \ union all select $5910 \ union all select $5911 \ union all select $5912 \ union all select $5913 \ union all select $5914 \ union all select $5915 \ union all select $5916 \ union all select $5917 \ union all select $5918 \ union all select $5919 \ union all select $5920 \ union all select $5921 \ union all select $5922 \ union all select $5923 \ union all select $5924 \ union all select $5925 \ union all select $5926 \ union all select $5927 \ union all select $5928 \ union all select $5929 \ union all select $5930 \ union all select $5931 \ union all select $5932 \ union all select $5933 \ union all select $5934 \ union all select $5935 \ union all select $5936 \ union all select $5937 \ union all select $5938 \ union all select $5939 \ union all select $5940 \ union all select $5941 \ union all select $5942 \ union all select $5943 \ union all select $5944 \ union all select $5945 \ union all select $5946 \ union all select $5947 \ union all select $5948 \ union all select $5949 \ union all select $5950 \ union all select $5951 \ union all select $5952 \ union all select $5953 \ union all select $5954 \ union all select $5955 \ union all select $5956 \ union all select $5957 \ union all select $5958 \ union all select $5959 \ union all select $5960 \ union all select $5961 \ union all select $5962 \ union all select $5963 \ union all select $5964 \ union all select $5965 \ union all select $5966 \ union all select $5967 \ union all select $5968 \ union all select $5969 \ union all select $5970 \ union all select $5971 \ union all select $5972 \ union all select $5973 \ union all select $5974 \ union all select $5975 \ union all select $5976 \ union all select $5977 \ union all select $5978 \ union all select $5979 \ union all select $5980 \ union all select $5981 \ union all select $5982 \ union all select $5983 \ union all select $5984 \ union all select $5985 \ union all select $5986 \ union all select $5987 \ union all select $5988 \ union all select $5989 \ union all select $5990 \ union all select $5991 \ union all select $5992 \ union all select $5993 \ union all select $5994 \ union all select $5995 \ union all select $5996 \ union all select $5997 \ union all select $5998 \ union all select $5999 \ union all select $6000 \ union all select $6001 \ union all select $6002 \ union all select $6003 \ union all select $6004 \ union all select $6005 \ union all select $6006 \ union all select $6007 \ union all select $6008 \ union all select $6009 \ union all select $6010 \ union all select $6011 \ union all select $6012 \ union all select $6013 \ union all select $6014 \ union all select $6015 \ union all select $6016 \ union all select $6017 \ union all select $6018 \ union all select $6019 \ union all select $6020 \ union all select $6021 \ union all select $6022 \ union all select $6023 \ union all select $6024 \ union all select $6025 \ union all select $6026 \ union all select $6027 \ union all select $6028 \ union all select $6029 \ union all select $6030 \ union all select $6031 \ union all select $6032 \ union all select $6033 \ union all select $6034 \ union all select $6035 \ union all select $6036 \ union all select $6037 \ union all select $6038 \ union all select $6039 \ union all select $6040 \ union all select $6041 \ union all select $6042 \ union all select $6043 \ union all select $6044 \ union all select $6045 \ union all select $6046 \ union all select $6047 \ union all select $6048 \ union all select $6049 \ union all select $6050 \ union all select $6051 \ union all select $6052 \ union all select $6053 \ union all select $6054 \ union all select $6055 \ union all select $6056 \ union all select $6057 \ union all select $6058 \ union all select $6059 \ union all select $6060 \ union all select $6061 \ union all select $6062 \ union all select $6063 \ union all select $6064 \ union all select $6065 \ union all select $6066 \ union all select $6067 \ union all select $6068 \ union all select $6069 \ union all select $6070 \ union all select $6071 \ union all select $6072 \ union all select $6073 \ union all select $6074 \ union all select $6075 \ union all select $6076 \ union all select $6077 \ union all select $6078 \ union all select $6079 \ union all select $6080 \ union all select $6081 \ union all select $6082 \ union all select $6083 \ union all select $6084 \ union all select $6085 \ union all select $6086 \ union all select $6087 \ union all select $6088 \ union all select $6089 \ union all select $6090 \ union all select $6091 \ union all select $6092 \ union all select $6093 \ union all select $6094 \ union all select $6095 \ union all select $6096 \ union all select $6097 \ union all select $6098 \ union all select $6099 \ union all select $6100 \ union all select $6101 \ union all select $6102 \ union all select $6103 \ union all select $6104 \ union all select $6105 \ union all select $6106 \ union all select $6107 \ union all select $6108 \ union all select $6109 \ union all select $6110 \ union all select $6111 \ union all select $6112 \ union all select $6113 \ union all select $6114 \ union all select $6115 \ union all select $6116 \ union all select $6117 \ union all select $6118 \ union all select $6119 \ union all select $6120 \ union all select $6121 \ union all select $6122 \ union all select $6123 \ union all select $6124 \ union all select $6125 \ union all select $6126 \ union all select $6127 \ union all select $6128 \ union all select $6129 \ union all select $6130 \ union all select $6131 \ union all select $6132 \ union all select $6133 \ union all select $6134 \ union all select $6135 \ union all select $6136 \ union all select $6137 \ union all select $6138 \ union all select $6139 \ union all select $6140 \ union all select $6141 \ union all select $6142 \ union all select $6143 \ union all select $6144 \ union all select $6145 \ union all select $6146 \ union all select $6147 \ union all select $6148 \ union all select $6149 \ union all select $6150 \ union all select $6151 \ union all select $6152 \ union all select $6153 \ union all select $6154 \ union all select $6155 \ union all select $6156 \ union all select $6157 \ union all select $6158 \ union all select $6159 \ union all select $6160 \ union all select $6161 \ union all select $6162 \ union all select $6163 \ union all select $6164 \ union all select $6165 \ union all select $6166 \ union all select $6167 \ union all select $6168 \ union all select $6169 \ union all select $6170 \ union all select $6171 \ union all select $6172 \ union all select $6173 \ union all select $6174 \ union all select $6175 \ union all select $6176 \ union all select $6177 \ union all select $6178 \ union all select $6179 \ union all select $6180 \ union all select $6181 \ union all select $6182 \ union all select $6183 \ union all select $6184 \ union all select $6185 \ union all select $6186 \ union all select $6187 \ union all select $6188 \ union all select $6189 \ union all select $6190 \ union all select $6191 \ union all select $6192 \ union all select $6193 \ union all select $6194 \ union all select $6195 \ union all select $6196 \ union all select $6197 \ union all select $6198 \ union all select $6199 \ union all select $6200 \ union all select $6201 \ union all select $6202 \ union all select $6203 \ union all select $6204 \ union all select $6205 \ union all select $6206 \ union all select $6207 \ union all select $6208 \ union all select $6209 \ union all select $6210 \ union all select $6211 \ union all select $6212 \ union all select $6213 \ union all select $6214 \ union all select $6215 \ union all select $6216 \ union all select $6217 \ union all select $6218 \ union all select $6219 \ union all select $6220 \ union all select $6221 \ union all select $6222 \ union all select $6223 \ union all select $6224 \ union all select $6225 \ union all select $6226 \ union all select $6227 \ union all select $6228 \ union all select $6229 \ union all select $6230 \ union all select $6231 \ union all select $6232 \ union all select $6233 \ union all select $6234 \ union all select $6235 \ union all select $6236 \ union all select $6237 \ union all select $6238 \ union all select $6239 \ union all select $6240 \ union all select $6241 \ union all select $6242 \ union all select $6243 \ union all select $6244 \ union all select $6245 \ union all select $6246 \ union all select $6247 \ union all select $6248 \ union all select $6249 \ union all select $6250 \ union all select $6251 \ union all select $6252 \ union all select $6253 \ union all select $6254 \ union all select $6255 \ union all select $6256 \ union all select $6257 \ union all select $6258 \ union all select $6259 \ union all select $6260 \ union all select $6261 \ union all select $6262 \ union all select $6263 \ union all select $6264 \ union all select $6265 \ union all select $6266 \ union all select $6267 \ union all select $6268 \ union all select $6269 \ union all select $6270 \ union all select $6271 \ union all select $6272 \ union all select $6273 \ union all select $6274 \ union all select $6275 \ union all select $6276 \ union all select $6277 \ union all select $6278 \ union all select $6279 \ union all select $6280 \ union all select $6281 \ union all select $6282 \ union all select $6283 \ union all select $6284 \ union all select $6285 \ union all select $6286 \ union all select $6287 \ union all select $6288 \ union all select $6289 \ union all select $6290 \ union all select $6291 \ union all select $6292 \ union all select $6293 \ union all select $6294 \ union all select $6295 \ union all select $6296 \ union all select $6297 \ union all select $6298 \ union all select $6299 \ union all select $6300 \ union all select $6301 \ union all select $6302 \ union all select $6303 \ union all select $6304 \ union all select $6305 \ union all select $6306 \ union all select $6307 \ union all select $6308 \ union all select $6309 \ union all select $6310 \ union all select $6311 \ union all select $6312 \ union all select $6313 \ union all select $6314 \ union all select $6315 \ union all select $6316 \ union all select $6317 \ union all select $6318 \ union all select $6319 \ union all select $6320 \ union all select $6321 \ union all select $6322 \ union all select $6323 \ union all select $6324 \ union all select $6325 \ union all select $6326 \ union all select $6327 \ union all select $6328 \ union all select $6329 \ union all select $6330 \ union all select $6331 \ union all select $6332 \ union all select $6333 \ union all select $6334 \ union all select $6335 \ union all select $6336 \ union all select $6337 \ union all select $6338 \ union all select $6339 \ union all select $6340 \ union all select $6341 \ union all select $6342 \ union all select $6343 \ union all select $6344 \ union all select $6345 \ union all select $6346 \ union all select $6347 \ union all select $6348 \ union all select $6349 \ union all select $6350 \ union all select $6351 \ union all select $6352 \ union all select $6353 \ union all select $6354 \ union all select $6355 \ union all select $6356 \ union all select $6357 \ union all select $6358 \ union all select $6359 \ union all select $6360 \ union all select $6361 \ union all select $6362 \ union all select $6363 \ union all select $6364 \ union all select $6365 \ union all select $6366 \ union all select $6367 \ union all select $6368 \ union all select $6369 \ union all select $6370 \ union all select $6371 \ union all select $6372 \ union all select $6373 \ union all select $6374 \ union all select $6375 \ union all select $6376 \ union all select $6377 \ union all select $6378 \ union all select $6379 \ union all select $6380 \ union all select $6381 \ union all select $6382 \ union all select $6383 \ union all select $6384 \ union all select $6385 \ union all select $6386 \ union all select $6387 \ union all select $6388 \ union all select $6389 \ union all select $6390 \ union all select $6391 \ union all select $6392 \ union all select $6393 \ union all select $6394 \ union all select $6395 \ union all select $6396 \ union all select $6397 \ union all select $6398 \ union all select $6399 \ union all select $6400 \ union all select $6401 \ union all select $6402 \ union all select $6403 \ union all select $6404 \ union all select $6405 \ union all select $6406 \ union all select $6407 \ union all select $6408 \ union all select $6409 \ union all select $6410 \ union all select $6411 \ union all select $6412 \ union all select $6413 \ union all select $6414 \ union all select $6415 \ union all select $6416 \ union all select $6417 \ union all select $6418 \ union all select $6419 \ union all select $6420 \ union all select $6421 \ union all select $6422 \ union all select $6423 \ union all select $6424 \ union all select $6425 \ union all select $6426 \ union all select $6427 \ union all select $6428 \ union all select $6429 \ union all select $6430 \ union all select $6431 \ union all select $6432 \ union all select $6433 \ union all select $6434 \ union all select $6435 \ union all select $6436 \ union all select $6437 \ union all select $6438 \ union all select $6439 \ union all select $6440 \ union all select $6441 \ union all select $6442 \ union all select $6443 \ union all select $6444 \ union all select $6445 \ union all select $6446 \ union all select $6447 \ union all select $6448 \ union all select $6449 \ union all select $6450 \ union all select $6451 \ union all select $6452 \ union all select $6453 \ union all select $6454 \ union all select $6455 \ union all select $6456 \ union all select $6457 \ union all select $6458 \ union all select $6459 \ union all select $6460 \ union all select $6461 \ union all select $6462 \ union all select $6463 \ union all select $6464 \ union all select $6465 \ union all select $6466 \ union all select $6467 \ union all select $6468 \ union all select $6469 \ union all select $6470 \ union all select $6471 \ union all select $6472 \ union all select $6473 \ union all select $6474 \ union all select $6475 \ union all select $6476 \ union all select $6477 \ union all select $6478 \ union all select $6479 \ union all select $6480 \ union all select $6481 \ union all select $6482 \ union all select $6483 \ union all select $6484 \ union all select $6485 \ union all select $6486 \ union all select $6487 \ union all select $6488 \ union all select $6489 \ union all select $6490 \ union all select $6491 \ union all select $6492 \ union all select $6493 \ union all select $6494 \ union all select $6495 \ union all select $6496 \ union all select $6497 \ union all select $6498 \ union all select $6499 \ union all select $6500 \ union all select $6501 \ union all select $6502 \ union all select $6503 \ union all select $6504 \ union all select $6505 \ union all select $6506 \ union all select $6507 \ union all select $6508 \ union all select $6509 \ union all select $6510 \ union all select $6511 \ union all select $6512 \ union all select $6513 \ union all select $6514 \ union all select $6515 \ union all select $6516 \ union all select $6517 \ union all select $6518 \ union all select $6519 \ union all select $6520 \ union all select $6521 \ union all select $6522 \ union all select $6523 \ union all select $6524 \ union all select $6525 \ union all select $6526 \ union all select $6527 \ union all select $6528 \ union all select $6529 \ union all select $6530 \ union all select $6531 \ union all select $6532 \ union all select $6533 \ union all select $6534 \ union all select $6535 \ union all select $6536 \ union all select $6537 \ union all select $6538 \ union all select $6539 \ union all select $6540 \ union all select $6541 \ union all select $6542 \ union all select $6543 \ union all select $6544 \ union all select $6545 \ union all select $6546 \ union all select $6547 \ union all select $6548 \ union all select $6549 \ union all select $6550 \ union all select $6551 \ union all select $6552 \ union all select $6553 \ union all select $6554 \ union all select $6555 \ union all select $6556 \ union all select $6557 \ union all select $6558 \ union all select $6559 \ union all select $6560 \ union all select $6561 \ union all select $6562 \ union all select $6563 \ union all select $6564 \ union all select $6565 \ union all select $6566 \ union all select $6567 \ union all select $6568 \ union all select $6569 \ union all select $6570 \ union all select $6571 \ union all select $6572 \ union all select $6573 \ union all select $6574 \ union all select $6575 \ union all select $6576 \ union all select $6577 \ union all select $6578 \ union all select $6579 \ union all select $6580 \ union all select $6581 \ union all select $6582 \ union all select $6583 \ union all select $6584 \ union all select $6585 \ union all select $6586 \ union all select $6587 \ union all select $6588 \ union all select $6589 \ union all select $6590 \ union all select $6591 \ union all select $6592 \ union all select $6593 \ union all select $6594 \ union all select $6595 \ union all select $6596 \ union all select $6597 \ union all select $6598 \ union all select $6599 \ union all select $6600 \ union all select $6601 \ union all select $6602 \ union all select $6603 \ union all select $6604 \ union all select $6605 \ union all select $6606 \ union all select $6607 \ union all select $6608 \ union all select $6609 \ union all select $6610 \ union all select $6611 \ union all select $6612 \ union all select $6613 \ union all select $6614 \ union all select $6615 \ union all select $6616 \ union all select $6617 \ union all select $6618 \ union all select $6619 \ union all select $6620 \ union all select $6621 \ union all select $6622 \ union all select $6623 \ union all select $6624 \ union all select $6625 \ union all select $6626 \ union all select $6627 \ union all select $6628 \ union all select $6629 \ union all select $6630 \ union all select $6631 \ union all select $6632 \ union all select $6633 \ union all select $6634 \ union all select $6635 \ union all select $6636 \ union all select $6637 \ union all select $6638 \ union all select $6639 \ union all select $6640 \ union all select $6641 \ union all select $6642 \ union all select $6643 \ union all select $6644 \ union all select $6645 \ union all select $6646 \ union all select $6647 \ union all select $6648 \ union all select $6649 \ union all select $6650 \ union all select $6651 \ union all select $6652 \ union all select $6653 \ union all select $6654 \ union all select $6655 \ union all select $6656 \ union all select $6657 \ union all select $6658 \ union all select $6659 \ union all select $6660 \ union all select $6661 \ union all select $6662 \ union all select $6663 \ union all select $6664 \ union all select $6665 \ union all select $6666 \ union all select $6667 \ union all select $6668 \ union all select $6669 \ union all select $6670 \ union all select $6671 \ union all select $6672 \ union all select $6673 \ union all select $6674 \ union all select $6675 \ union all select $6676 \ union all select $6677 \ union all select $6678 \ union all select $6679 \ union all select $6680 \ union all select $6681 \ union all select $6682 \ union all select $6683 \ union all select $6684 \ union all select $6685 \ union all select $6686 \ union all select $6687 \ union all select $6688 \ union all select $6689 \ union all select $6690 \ union all select $6691 \ union all select $6692 \ union all select $6693 \ union all select $6694 \ union all select $6695 \ union all select $6696 \ union all select $6697 \ union all select $6698 \ union all select $6699 \ union all select $6700 \ union all select $6701 \ union all select $6702 \ union all select $6703 \ union all select $6704 \ union all select $6705 \ union all select $6706 \ union all select $6707 \ union all select $6708 \ union all select $6709 \ union all select $6710 \ union all select $6711 \ union all select $6712 \ union all select $6713 \ union all select $6714 \ union all select $6715 \ union all select $6716 \ union all select $6717 \ union all select $6718 \ union all select $6719 \ union all select $6720 \ union all select $6721 \ union all select $6722 \ union all select $6723 \ union all select $6724 \ union all select $6725 \ union all select $6726 \ union all select $6727 \ union all select $6728 \ union all select $6729 \ union all select $6730 \ union all select $6731 \ union all select $6732 \ union all select $6733 \ union all select $6734 \ union all select $6735 \ union all select $6736 \ union all select $6737 \ union all select $6738 \ union all select $6739 \ union all select $6740 \ union all select $6741 \ union all select $6742 \ union all select $6743 \ union all select $6744 \ union all select $6745 \ union all select $6746 \ union all select $6747 \ union all select $6748 \ union all select $6749 \ union all select $6750 \ union all select $6751 \ union all select $6752 \ union all select $6753 \ union all select $6754 \ union all select $6755 \ union all select $6756 \ union all select $6757 \ union all select $6758 \ union all select $6759 \ union all select $6760 \ union all select $6761 \ union all select $6762 \ union all select $6763 \ union all select $6764 \ union all select $6765 \ union all select $6766 \ union all select $6767 \ union all select $6768 \ union all select $6769 \ union all select $6770 \ union all select $6771 \ union all select $6772 \ union all select $6773 \ union all select $6774 \ union all select $6775 \ union all select $6776 \ union all select $6777 \ union all select $6778 \ union all select $6779 \ union all select $6780 \ union all select $6781 \ union all select $6782 \ union all select $6783 \ union all select $6784 \ union all select $6785 \ union all select $6786 \ union all select $6787 \ union all select $6788 \ union all select $6789 \ union all select $6790 \ union all select $6791 \ union all select $6792 \ union all select $6793 \ union all select $6794 \ union all select $6795 \ union all select $6796 \ union all select $6797 \ union all select $6798 \ union all select $6799 \ union all select $6800 \ union all select $6801 \ union all select $6802 \ union all select $6803 \ union all select $6804 \ union all select $6805 \ union all select $6806 \ union all select $6807 \ union all select $6808 \ union all select $6809 \ union all select $6810 \ union all select $6811 \ union all select $6812 \ union all select $6813 \ union all select $6814 \ union all select $6815 \ union all select $6816 \ union all select $6817 \ union all select $6818 \ union all select $6819 \ union all select $6820 \ union all select $6821 \ union all select $6822 \ union all select $6823 \ union all select $6824 \ union all select $6825 \ union all select $6826 \ union all select $6827 \ union all select $6828 \ union all select $6829 \ union all select $6830 \ union all select $6831 \ union all select $6832 \ union all select $6833 \ union all select $6834 \ union all select $6835 \ union all select $6836 \ union all select $6837 \ union all select $6838 \ union all select $6839 \ union all select $6840 \ union all select $6841 \ union all select $6842 \ union all select $6843 \ union all select $6844 \ union all select $6845 \ union all select $6846 \ union all select $6847 \ union all select $6848 \ union all select $6849 \ union all select $6850 \ union all select $6851 \ union all select $6852 \ union all select $6853 \ union all select $6854 \ union all select $6855 \ union all select $6856 \ union all select $6857 \ union all select $6858 \ union all select $6859 \ union all select $6860 \ union all select $6861 \ union all select $6862 \ union all select $6863 \ union all select $6864 \ union all select $6865 \ union all select $6866 \ union all select $6867 \ union all select $6868 \ union all select $6869 \ union all select $6870 \ union all select $6871 \ union all select $6872 \ union all select $6873 \ union all select $6874 \ union all select $6875 \ union all select $6876 \ union all select $6877 \ union all select $6878 \ union all select $6879 \ union all select $6880 \ union all select $6881 \ union all select $6882 \ union all select $6883 \ union all select $6884 \ union all select $6885 \ union all select $6886 \ union all select $6887 \ union all select $6888 \ union all select $6889 \ union all select $6890 \ union all select $6891 \ union all select $6892 \ union all select $6893 \ union all select $6894 \ union all select $6895 \ union all select $6896 \ union all select $6897 \ union all select $6898 \ union all select $6899 \ union all select $6900 \ union all select $6901 \ union all select $6902 \ union all select $6903 \ union all select $6904 \ union all select $6905 \ union all select $6906 \ union all select $6907 \ union all select $6908 \ union all select $6909 \ union all select $6910 \ union all select $6911 \ union all select $6912 \ union all select $6913 \ union all select $6914 \ union all select $6915 \ union all select $6916 \ union all select $6917 \ union all select $6918 \ union all select $6919 \ union all select $6920 \ union all select $6921 \ union all select $6922 \ union all select $6923 \ union all select $6924 \ union all select $6925 \ union all select $6926 \ union all select $6927 \ union all select $6928 \ union all select $6929 \ union all select $6930 \ union all select $6931 \ union all select $6932 \ union all select $6933 \ union all select $6934 \ union all select $6935 \ union all select $6936 \ union all select $6937 \ union all select $6938 \ union all select $6939 \ union all select $6940 \ union all select $6941 \ union all select $6942 \ union all select $6943 \ union all select $6944 \ union all select $6945 \ union all select $6946 \ union all select $6947 \ union all select $6948 \ union all select $6949 \ union all select $6950 \ union all select $6951 \ union all select $6952 \ union all select $6953 \ union all select $6954 \ union all select $6955 \ union all select $6956 \ union all select $6957 \ union all select $6958 \ union all select $6959 \ union all select $6960 \ union all select $6961 \ union all select $6962 \ union all select $6963 \ union all select $6964 \ union all select $6965 \ union all select $6966 \ union all select $6967 \ union all select $6968 \ union all select $6969 \ union all select $6970 \ union all select $6971 \ union all select $6972 \ union all select $6973 \ union all select $6974 \ union all select $6975 \ union all select $6976 \ union all select $6977 \ union all select $6978 \ union all select $6979 \ union all select $6980 \ union all select $6981 \ union all select $6982 \ union all select $6983 \ union all select $6984 \ union all select $6985 \ union all select $6986 \ union all select $6987 \ union all select $6988 \ union all select $6989 \ union all select $6990 \ union all select $6991 \ union all select $6992 \ union all select $6993 \ union all select $6994 \ union all select $6995 \ union all select $6996 \ union all select $6997 \ union all select $6998 \ union all select $6999 \ union all select $7000 \ union all select $7001 \ union all select $7002 \ union all select $7003 \ union all select $7004 \ union all select $7005 \ union all select $7006 \ union all select $7007 \ union all select $7008 \ union all select $7009 \ union all select $7010 \ union all select $7011 \ union all select $7012 \ union all select $7013 \ union all select $7014 \ union all select $7015 \ union all select $7016 \ union all select $7017 \ union all select $7018 \ union all select $7019 \ union all select $7020 \ union all select $7021 \ union all select $7022 \ union all select $7023 \ union all select $7024 \ union all select $7025 \ union all select $7026 \ union all select $7027 \ union all select $7028 \ union all select $7029 \ union all select $7030 \ union all select $7031 \ union all select $7032 \ union all select $7033 \ union all select $7034 \ union all select $7035 \ union all select $7036 \ union all select $7037 \ union all select $7038 \ union all select $7039 \ union all select $7040 \ union all select $7041 \ union all select $7042 \ union all select $7043 \ union all select $7044 \ union all select $7045 \ union all select $7046 \ union all select $7047 \ union all select $7048 \ union all select $7049 \ union all select $7050 \ union all select $7051 \ union all select $7052 \ union all select $7053 \ union all select $7054 \ union all select $7055 \ union all select $7056 \ union all select $7057 \ union all select $7058 \ union all select $7059 \ union all select $7060 \ union all select $7061 \ union all select $7062 \ union all select $7063 \ union all select $7064 \ union all select $7065 \ union all select $7066 \ union all select $7067 \ union all select $7068 \ union all select $7069 \ union all select $7070 \ union all select $7071 \ union all select $7072 \ union all select $7073 \ union all select $7074 \ union all select $7075 \ union all select $7076 \ union all select $7077 \ union all select $7078 \ union all select $7079 \ union all select $7080 \ union all select $7081 \ union all select $7082 \ union all select $7083 \ union all select $7084 \ union all select $7085 \ union all select $7086 \ union all select $7087 \ union all select $7088 \ union all select $7089 \ union all select $7090 \ union all select $7091 \ union all select $7092 \ union all select $7093 \ union all select $7094 \ union all select $7095 \ union all select $7096 \ union all select $7097 \ union all select $7098 \ union all select $7099 \ union all select $7100 \ union all select $7101 \ union all select $7102 \ union all select $7103 \ union all select $7104 \ union all select $7105 \ union all select $7106 \ union all select $7107 \ union all select $7108 \ union all select $7109 \ union all select $7110 \ union all select $7111 \ union all select $7112 \ union all select $7113 \ union all select $7114 \ union all select $7115 \ union all select $7116 \ union all select $7117 \ union all select $7118 \ union all select $7119 \ union all select $7120 \ union all select $7121 \ union all select $7122 \ union all select $7123 \ union all select $7124 \ union all select $7125 \ union all select $7126 \ union all select $7127 \ union all select $7128 \ union all select $7129 \ union all select $7130 \ union all select $7131 \ union all select $7132 \ union all select $7133 \ union all select $7134 \ union all select $7135 \ union all select $7136 \ union all select $7137 \ union all select $7138 \ union all select $7139 \ union all select $7140 \ union all select $7141 \ union all select $7142 \ union all select $7143 \ union all select $7144 \ union all select $7145 \ union all select $7146 \ union all select $7147 \ union all select $7148 \ union all select $7149 \ union all select $7150 \ union all select $7151 \ union all select $7152 \ union all select $7153 \ union all select $7154 \ union all select $7155 \ union all select $7156 \ union all select $7157 \ union all select $7158 \ union all select $7159 \ union all select $7160 \ union all select $7161 \ union all select $7162 \ union all select $7163 \ union all select $7164 \ union all select $7165 \ union all select $7166 \ union all select $7167 \ union all select $7168 \ union all select $7169 \ union all select $7170 \ union all select $7171 \ union all select $7172 \ union all select $7173 \ union all select $7174 \ union all select $7175 \ union all select $7176 \ union all select $7177 \ union all select $7178 \ union all select $7179 \ union all select $7180 \ union all select $7181 \ union all select $7182 \ union all select $7183 \ union all select $7184 \ union all select $7185 \ union all select $7186 \ union all select $7187 \ union all select $7188 \ union all select $7189 \ union all select $7190 \ union all select $7191 \ union all select $7192 \ union all select $7193 \ union all select $7194 \ union all select $7195 \ union all select $7196 \ union all select $7197 \ union all select $7198 \ union all select $7199 \ union all select $7200 \ union all select $7201 \ union all select $7202 \ union all select $7203 \ union all select $7204 \ union all select $7205 \ union all select $7206 \ union all select $7207 \ union all select $7208 \ union all select $7209 \ union all select $7210 \ union all select $7211 \ union all select $7212 \ union all select $7213 \ union all select $7214 \ union all select $7215 \ union all select $7216 \ union all select $7217 \ union all select $7218 \ union all select $7219 \ union all select $7220 \ union all select $7221 \ union all select $7222 \ union all select $7223 \ union all select $7224 \ union all select $7225 \ union all select $7226 \ union all select $7227 \ union all select $7228 \ union all select $7229 \ union all select $7230 \ union all select $7231 \ union all select $7232 \ union all select $7233 \ union all select $7234 \ union all select $7235 \ union all select $7236 \ union all select $7237 \ union all select $7238 \ union all select $7239 \ union all select $7240 \ union all select $7241 \ union all select $7242 \ union all select $7243 \ union all select $7244 \ union all select $7245 \ union all select $7246 \ union all select $7247 \ union all select $7248 \ union all select $7249 \ union all select $7250 \ union all select $7251 \ union all select $7252 \ union all select $7253 \ union all select $7254 \ union all select $7255 \ union all select $7256 \ union all select $7257 \ union all select $7258 \ union all select $7259 \ union all select $7260 \ union all select $7261 \ union all select $7262 \ union all select $7263 \ union all select $7264 \ union all select $7265 \ union all select $7266 \ union all select $7267 \ union all select $7268 \ union all select $7269 \ union all select $7270 \ union all select $7271 \ union all select $7272 \ union all select $7273 \ union all select $7274 \ union all select $7275 \ union all select $7276 \ union all select $7277 \ union all select $7278 \ union all select $7279 \ union all select $7280 \ union all select $7281 \ union all select $7282 \ union all select $7283 \ union all select $7284 \ union all select $7285 \ union all select $7286 \ union all select $7287 \ union all select $7288 \ union all select $7289 \ union all select $7290 \ union all select $7291 \ union all select $7292 \ union all select $7293 \ union all select $7294 \ union all select $7295 \ union all select $7296 \ union all select $7297 \ union all select $7298 \ union all select $7299 \ union all select $7300 \ union all select $7301 \ union all select $7302 \ union all select $7303 \ union all select $7304 \ union all select $7305 \ union all select $7306 \ union all select $7307 \ union all select $7308 \ union all select $7309 \ union all select $7310 \ union all select $7311 \ union all select $7312 \ union all select $7313 \ union all select $7314 \ union all select $7315 \ union all select $7316 \ union all select $7317 \ union all select $7318 \ union all select $7319 \ union all select $7320 \ union all select $7321 \ union all select $7322 \ union all select $7323 \ union all select $7324 \ union all select $7325 \ union all select $7326 \ union all select $7327 \ union all select $7328 \ union all select $7329 \ union all select $7330 \ union all select $7331 \ union all select $7332 \ union all select $7333 \ union all select $7334 \ union all select $7335 \ union all select $7336 \ union all select $7337 \ union all select $7338 \ union all select $7339 \ union all select $7340 \ union all select $7341 \ union all select $7342 \ union all select $7343 \ union all select $7344 \ union all select $7345 \ union all select $7346 \ union all select $7347 \ union all select $7348 \ union all select $7349 \ union all select $7350 \ union all select $7351 \ union all select $7352 \ union all select $7353 \ union all select $7354 \ union all select $7355 \ union all select $7356 \ union all select $7357 \ union all select $7358 \ union all select $7359 \ union all select $7360 \ union all select $7361 \ union all select $7362 \ union all select $7363 \ union all select $7364 \ union all select $7365 \ union all select $7366 \ union all select $7367 \ union all select $7368 \ union all select $7369 \ union all select $7370 \ union all select $7371 \ union all select $7372 \ union all select $7373 \ union all select $7374 \ union all select $7375 \ union all select $7376 \ union all select $7377 \ union all select $7378 \ union all select $7379 \ union all select $7380 \ union all select $7381 \ union all select $7382 \ union all select $7383 \ union all select $7384 \ union all select $7385 \ union all select $7386 \ union all select $7387 \ union all select $7388 \ union all select $7389 \ union all select $7390 \ union all select $7391 \ union all select $7392 \ union all select $7393 \ union all select $7394 \ union all select $7395 \ union all select $7396 \ union all select $7397 \ union all select $7398 \ union all select $7399 \ union all select $7400 \ union all select $7401 \ union all select $7402 \ union all select $7403 \ union all select $7404 \ union all select $7405 \ union all select $7406 \ union all select $7407 \ union all select $7408 \ union all select $7409 \ union all select $7410 \ union all select $7411 \ union all select $7412 \ union all select $7413 \ union all select $7414 \ union all select $7415 \ union all select $7416 \ union all select $7417 \ union all select $7418 \ union all select $7419 \ union all select $7420 \ union all select $7421 \ union all select $7422 \ union all select $7423 \ union all select $7424 \ union all select $7425 \ union all select $7426 \ union all select $7427 \ union all select $7428 \ union all select $7429 \ union all select $7430 \ union all select $7431 \ union all select $7432 \ union all select $7433 \ union all select $7434 \ union all select $7435 \ union all select $7436 \ union all select $7437 \ union all select $7438 \ union all select $7439 \ union all select $7440 \ union all select $7441 \ union all select $7442 \ union all select $7443 \ union all select $7444 \ union all select $7445 \ union all select $7446 \ union all select $7447 \ union all select $7448 \ union all select $7449 \ union all select $7450 \ union all select $7451 \ union all select $7452 \ union all select $7453 \ union all select $7454 \ union all select $7455 \ union all select $7456 \ union all select $7457 \ union all select $7458 \ union all select $7459 \ union all select $7460 \ union all select $7461 \ union all select $7462 \ union all select $7463 \ union all select $7464 \ union all select $7465 \ union all select $7466 \ union all select $7467 \ union all select $7468 \ union all select $7469 \ union all select $7470 \ union all select $7471 \ union all select $7472 \ union all select $7473 \ union all select $7474 \ union all select $7475 \ union all select $7476 \ union all select $7477 \ union all select $7478 \ union all select $7479 \ union all select $7480 \ union all select $7481 \ union all select $7482 \ union all select $7483 \ union all select $7484 \ union all select $7485 \ union all select $7486 \ union all select $7487 \ union all select $7488 \ union all select $7489 \ union all select $7490 \ union all select $7491 \ union all select $7492 \ union all select $7493 \ union all select $7494 \ union all select $7495 \ union all select $7496 \ union all select $7497 \ union all select $7498 \ union all select $7499 \ union all select $7500 \ union all select $7501 \ union all select $7502 \ union all select $7503 \ union all select $7504 \ union all select $7505 \ union all select $7506 \ union all select $7507 \ union all select $7508 \ union all select $7509 \ union all select $7510 \ union all select $7511 \ union all select $7512 \ union all select $7513 \ union all select $7514 \ union all select $7515 \ union all select $7516 \ union all select $7517 \ union all select $7518 \ union all select $7519 \ union all select $7520 \ union all select $7521 \ union all select $7522 \ union all select $7523 \ union all select $7524 \ union all select $7525 \ union all select $7526 \ union all select $7527 \ union all select $7528 \ union all select $7529 \ union all select $7530 \ union all select $7531 \ union all select $7532 \ union all select $7533 \ union all select $7534 \ union all select $7535 \ union all select $7536 \ union all select $7537 \ union all select $7538 \ union all select $7539 \ union all select $7540 \ union all select $7541 \ union all select $7542 \ union all select $7543 \ union all select $7544 \ union all select $7545 \ union all select $7546 \ union all select $7547 \ union all select $7548 \ union all select $7549 \ union all select $7550 \ union all select $7551 \ union all select $7552 \ union all select $7553 \ union all select $7554 \ union all select $7555 \ union all select $7556 \ union all select $7557 \ union all select $7558 \ union all select $7559 \ union all select $7560 \ union all select $7561 \ union all select $7562 \ union all select $7563 \ union all select $7564 \ union all select $7565 \ union all select $7566 \ union all select $7567 \ union all select $7568 \ union all select $7569 \ union all select $7570 \ union all select $7571 \ union all select $7572 \ union all select $7573 \ union all select $7574 \ union all select $7575 \ union all select $7576 \ union all select $7577 \ union all select $7578 \ union all select $7579 \ union all select $7580 \ union all select $7581 \ union all select $7582 \ union all select $7583 \ union all select $7584 \ union all select $7585 \ union all select $7586 \ union all select $7587 \ union all select $7588 \ union all select $7589 \ union all select $7590 \ union all select $7591 \ union all select $7592 \ union all select $7593 \ union all select $7594 \ union all select $7595 \ union all select $7596 \ union all select $7597 \ union all select $7598 \ union all select $7599 \ union all select $7600 \ union all select $7601 \ union all select $7602 \ union all select $7603 \ union all select $7604 \ union all select $7605 \ union all select $7606 \ union all select $7607 \ union all select $7608 \ union all select $7609 \ union all select $7610 \ union all select $7611 \ union all select $7612 \ union all select $7613 \ union all select $7614 \ union all select $7615 \ union all select $7616 \ union all select $7617 \ union all select $7618 \ union all select $7619 \ union all select $7620 \ union all select $7621 \ union all select $7622 \ union all select $7623 \ union all select $7624 \ union all select $7625 \ union all select $7626 \ union all select $7627 \ union all select $7628 \ union all select $7629 \ union all select $7630 \ union all select $7631 \ union all select $7632 \ union all select $7633 \ union all select $7634 \ union all select $7635 \ union all select $7636 \ union all select $7637 \ union all select $7638 \ union all select $7639 \ union all select $7640 \ union all select $7641 \ union all select $7642 \ union all select $7643 \ union all select $7644 \ union all select $7645 \ union all select $7646 \ union all select $7647 \ union all select $7648 \ union all select $7649 \ union all select $7650 \ union all select $7651 \ union all select $7652 \ union all select $7653 \ union all select $7654 \ union all select $7655 \ union all select $7656 \ union all select $7657 \ union all select $7658 \ union all select $7659 \ union all select $7660 \ union all select $7661 \ union all select $7662 \ union all select $7663 \ union all select $7664 \ union all select $7665 \ union all select $7666 \ union all select $7667 \ union all select $7668 \ union all select $7669 \ union all select $7670 \ union all select $7671 \ union all select $7672 \ union all select $7673 \ union all select $7674 \ union all select $7675 \ union all select $7676 \ union all select $7677 \ union all select $7678 \ union all select $7679 \ union all select $7680 \ union all select $7681 \ union all select $7682 \ union all select $7683 \ union all select $7684 \ union all select $7685 \ union all select $7686 \ union all select $7687 \ union all select $7688 \ union all select $7689 \ union all select $7690 \ union all select $7691 \ union all select $7692 \ union all select $7693 \ union all select $7694 \ union all select $7695 \ union all select $7696 \ union all select $7697 \ union all select $7698 \ union all select $7699 \ union all select $7700 \ union all select $7701 \ union all select $7702 \ union all select $7703 \ union all select $7704 \ union all select $7705 \ union all select $7706 \ union all select $7707 \ union all select $7708 \ union all select $7709 \ union all select $7710 \ union all select $7711 \ union all select $7712 \ union all select $7713 \ union all select $7714 \ union all select $7715 \ union all select $7716 \ union all select $7717 \ union all select $7718 \ union all select $7719 \ union all select $7720 \ union all select $7721 \ union all select $7722 \ union all select $7723 \ union all select $7724 \ union all select $7725 \ union all select $7726 \ union all select $7727 \ union all select $7728 \ union all select $7729 \ union all select $7730 \ union all select $7731 \ union all select $7732 \ union all select $7733 \ union all select $7734 \ union all select $7735 \ union all select $7736 \ union all select $7737 \ union all select $7738 \ union all select $7739 \ union all select $7740 \ union all select $7741 \ union all select $7742 \ union all select $7743 \ union all select $7744 \ union all select $7745 \ union all select $7746 \ union all select $7747 \ union all select $7748 \ union all select $7749 \ union all select $7750 \ union all select $7751 \ union all select $7752 \ union all select $7753 \ union all select $7754 \ union all select $7755 \ union all select $7756 \ union all select $7757 \ union all select $7758 \ union all select $7759 \ union all select $7760 \ union all select $7761 \ union all select $7762 \ union all select $7763 \ union all select $7764 \ union all select $7765 \ union all select $7766 \ union all select $7767 \ union all select $7768 \ union all select $7769 \ union all select $7770 \ union all select $7771 \ union all select $7772 \ union all select $7773 \ union all select $7774 \ union all select $7775 \ union all select $7776 \ union all select $7777 \ union all select $7778 \ union all select $7779 \ union all select $7780 \ union all select $7781 \ union all select $7782 \ union all select $7783 \ union all select $7784 \ union all select $7785 \ union all select $7786 \ union all select $7787 \ union all select $7788 \ union all select $7789 \ union all select $7790 \ union all select $7791 \ union all select $7792 \ union all select $7793 \ union all select $7794 \ union all select $7795 \ union all select $7796 \ union all select $7797 \ union all select $7798 \ union all select $7799 \ union all select $7800 \ union all select $7801 \ union all select $7802 \ union all select $7803 \ union all select $7804 \ union all select $7805 \ union all select $7806 \ union all select $7807 \ union all select $7808 \ union all select $7809 \ union all select $7810 \ union all select $7811 \ union all select $7812 \ union all select $7813 \ union all select $7814 \ union all select $7815 \ union all select $7816 \ union all select $7817 \ union all select $7818 \ union all select $7819 \ union all select $7820 \ union all select $7821 \ union all select $7822 \ union all select $7823 \ union all select $7824 \ union all select $7825 \ union all select $7826 \ union all select $7827 \ union all select $7828 \ union all select $7829 \ union all select $7830 \ union all select $7831 \ union all select $7832 \ union all select $7833 \ union all select $7834 \ union all select $7835 \ union all select $7836 \ union all select $7837 \ union all select $7838 \ union all select $7839 \ union all select $7840 \ union all select $7841 \ union all select $7842 \ union all select $7843 \ union all select $7844 \ union all select $7845 \ union all select $7846 \ union all select $7847 \ union all select $7848 \ union all select $7849 \ union all select $7850 \ union all select $7851 \ union all select $7852 \ union all select $7853 \ union all select $7854 \ union all select $7855 \ union all select $7856 \ union all select $7857 \ union all select $7858 \ union all select $7859 \ union all select $7860 \ union all select $7861 \ union all select $7862 \ union all select $7863 \ union all select $7864 \ union all select $7865 \ union all select $7866 \ union all select $7867 \ union all select $7868 \ union all select $7869 \ union all select $7870 \ union all select $7871 \ union all select $7872 \ union all select $7873 \ union all select $7874 \ union all select $7875 \ union all select $7876 \ union all select $7877 \ union all select $7878 \ union all select $7879 \ union all select $7880 \ union all select $7881 \ union all select $7882 \ union all select $7883 \ union all select $7884 \ union all select $7885 \ union all select $7886 \ union all select $7887 \ union all select $7888 \ union all select $7889 \ union all select $7890 \ union all select $7891 \ union all select $7892 \ union all select $7893 \ union all select $7894 \ union all select $7895 \ union all select $7896 \ union all select $7897 \ union all select $7898 \ union all select $7899 \ union all select $7900 \ union all select $7901 \ union all select $7902 \ union all select $7903 \ union all select $7904 \ union all select $7905 \ union all select $7906 \ union all select $7907 \ union all select $7908 \ union all select $7909 \ union all select $7910 \ union all select $7911 \ union all select $7912 \ union all select $7913 \ union all select $7914 \ union all select $7915 \ union all select $7916 \ union all select $7917 \ union all select $7918 \ union all select $7919 \ union all select $7920 \ union all select $7921 \ union all select $7922 \ union all select $7923 \ union all select $7924 \ union all select $7925 \ union all select $7926 \ union all select $7927 \ union all select $7928 \ union all select $7929 \ union all select $7930 \ union all select $7931 \ union all select $7932 \ union all select $7933 \ union all select $7934 \ union all select $7935 \ union all select $7936 \ union all select $7937 \ union all select $7938 \ union all select $7939 \ union all select $7940 \ union all select $7941 \ union all select $7942 \ union all select $7943 \ union all select $7944 \ union all select $7945 \ union all select $7946 \ union all select $7947 \ union all select $7948 \ union all select $7949 \ union all select $7950 \ union all select $7951 \ union all select $7952 \ union all select $7953 \ union all select $7954 \ union all select $7955 \ union all select $7956 \ union all select $7957 \ union all select $7958 \ union all select $7959 \ union all select $7960 \ union all select $7961 \ union all select $7962 \ union all select $7963 \ union all select $7964 \ union all select $7965 \ union all select $7966 \ union all select $7967 \ union all select $7968 \ union all select $7969 \ union all select $7970 \ union all select $7971 \ union all select $7972 \ union all select $7973 \ union all select $7974 \ union all select $7975 \ union all select $7976 \ union all select $7977 \ union all select $7978 \ union all select $7979 \ union all select $7980 \ union all select $7981 \ union all select $7982 \ union all select $7983 \ union all select $7984 \ union all select $7985 \ union all select $7986 \ union all select $7987 \ union all select $7988 \ union all select $7989 \ union all select $7990 \ union all select $7991 \ union all select $7992 \ union all select $7993 \ union all select $7994 \ union all select $7995 \ union all select $7996 \ union all select $7997 \ union all select $7998 \ union all select $7999 \ union all select $8000 \ union all select $8001 \ union all select $8002 \ union all select $8003 \ union all select $8004 \ union all select $8005 \ union all select $8006 \ union all select $8007 \ union all select $8008 \ union all select $8009 \ union all select $8010 \ union all select $8011 \ union all select $8012 \ union all select $8013 \ union all select $8014 \ union all select $8015 \ union all select $8016 \ union all select $8017 \ union all select $8018 \ union all select $8019 \ union all select $8020 \ union all select $8021 \ union all select $8022 \ union all select $8023 \ union all select $8024 \ union all select $8025 \ union all select $8026 \ union all select $8027 \ union all select $8028 \ union all select $8029 \ union all select $8030 \ union all select $8031 \ union all select $8032 \ union all select $8033 \ union all select $8034 \ union all select $8035 \ union all select $8036 \ union all select $8037 \ union all select $8038 \ union all select $8039 \ union all select $8040 \ union all select $8041 \ union all select $8042 \ union all select $8043 \ union all select $8044 \ union all select $8045 \ union all select $8046 \ union all select $8047 \ union all select $8048 \ union all select $8049 \ union all select $8050 \ union all select $8051 \ union all select $8052 \ union all select $8053 \ union all select $8054 \ union all select $8055 \ union all select $8056 \ union all select $8057 \ union all select $8058 \ union all select $8059 \ union all select $8060 \ union all select $8061 \ union all select $8062 \ union all select $8063 \ union all select $8064 \ union all select $8065 \ union all select $8066 \ union all select $8067 \ union all select $8068 \ union all select $8069 \ union all select $8070 \ union all select $8071 \ union all select $8072 \ union all select $8073 \ union all select $8074 \ union all select $8075 \ union all select $8076 \ union all select $8077 \ union all select $8078 \ union all select $8079 \ union all select $8080 \ union all select $8081 \ union all select $8082 \ union all select $8083 \ union all select $8084 \ union all select $8085 \ union all select $8086 \ union all select $8087 \ union all select $8088 \ union all select $8089 \ union all select $8090 \ union all select $8091 \ union all select $8092 \ union all select $8093 \ union all select $8094 \ union all select $8095 \ union all select $8096 \ union all select $8097 \ union all select $8098 \ union all select $8099 \ union all select $8100 \ union all select $8101 \ union all select $8102 \ union all select $8103 \ union all select $8104 \ union all select $8105 \ union all select $8106 \ union all select $8107 \ union all select $8108 \ union all select $8109 \ union all select $8110 \ union all select $8111 \ union all select $8112 \ union all select $8113 \ union all select $8114 \ union all select $8115 \ union all select $8116 \ union all select $8117 \ union all select $8118 \ union all select $8119 \ union all select $8120 \ union all select $8121 \ union all select $8122 \ union all select $8123 \ union all select $8124 \ union all select $8125 \ union all select $8126 \ union all select $8127 \ union all select $8128 \ union all select $8129 \ union all select $8130 \ union all select $8131 \ union all select $8132 \ union all select $8133 \ union all select $8134 \ union all select $8135 \ union all select $8136 \ union all select $8137 \ union all select $8138 \ union all select $8139 \ union all select $8140 \ union all select $8141 \ union all select $8142 \ union all select $8143 \ union all select $8144 \ union all select $8145 \ union all select $8146 \ union all select $8147 \ union all select $8148 \ union all select $8149 \ union all select $8150 \ union all select $8151 \ union all select $8152 \ union all select $8153 \ union all select $8154 \ union all select $8155 \ union all select $8156 \ union all select $8157 \ union all select $8158 \ union all select $8159 \ union all select $8160 \ union all select $8161 \ union all select $8162 \ union all select $8163 \ union all select $8164 \ union all select $8165 \ union all select $8166 \ union all select $8167 \ union all select $8168 \ union all select $8169 \ union all select $8170 \ union all select $8171 \ union all select $8172 \ union all select $8173 \ union all select $8174 \ union all select $8175 \ union all select $8176 \ union all select $8177 \ union all select $8178 \ union all select $8179 \ union all select $8180 \ union all select $8181 \ union all select $8182 \ union all select $8183 \ union all select $8184 \ union all select $8185 \ union all select $8186 \ union all select $8187 \ union all select $8188 \ union all select $8189 \ union all select $8190 \ union all select $8191 \ union all select $8192 \ union all select $8193 \ union all select $8194 \ union all select $8195 \ union all select $8196 \ union all select $8197 \ union all select $8198 \ union all select $8199 \ union all select $8200 \ union all select $8201 \ union all select $8202 \ union all select $8203 \ union all select $8204 \ union all select $8205 \ union all select $8206 \ union all select $8207 \ union all select $8208 \ union all select $8209 \ union all select $8210 \ union all select $8211 \ union all select $8212 \ union all select $8213 \ union all select $8214 \ union all select $8215 \ union all select $8216 \ union all select $8217 \ union all select $8218 \ union all select $8219 \ union all select $8220 \ union all select $8221 \ union all select $8222 \ union all select $8223 \ union all select $8224 \ union all select $8225 \ union all select $8226 \ union all select $8227 \ union all select $8228 \ union all select $8229 \ union all select $8230 \ union all select $8231 \ union all select $8232 \ union all select $8233 \ union all select $8234 \ union all select $8235 \ union all select $8236 \ union all select $8237 \ union all select $8238 \ union all select $8239 \ union all select $8240 \ union all select $8241 \ union all select $8242 \ union all select $8243 \ union all select $8244 \ union all select $8245 \ union all select $8246 \ union all select $8247 \ union all select $8248 \ union all select $8249 \ union all select $8250 \ union all select $8251 \ union all select $8252 \ union all select $8253 \ union all select $8254 \ union all select $8255 \ union all select $8256 \ union all select $8257 \ union all select $8258 \ union all select $8259 \ union all select $8260 \ union all select $8261 \ union all select $8262 \ union all select $8263 \ union all select $8264 \ union all select $8265 \ union all select $8266 \ union all select $8267 \ union all select $8268 \ union all select $8269 \ union all select $8270 \ union all select $8271 \ union all select $8272 \ union all select $8273 \ union all select $8274 \ union all select $8275 \ union all select $8276 \ union all select $8277 \ union all select $8278 \ union all select $8279 \ union all select $8280 \ union all select $8281 \ union all select $8282 \ union all select $8283 \ union all select $8284 \ union all select $8285 \ union all select $8286 \ union all select $8287 \ union all select $8288 \ union all select $8289 \ union all select $8290 \ union all select $8291 \ union all select $8292 \ union all select $8293 \ union all select $8294 \ union all select $8295 \ union all select $8296 \ union all select $8297 \ union all select $8298 \ union all select $8299 \ union all select $8300 \ union all select $8301 \ union all select $8302 \ union all select $8303 \ union all select $8304 \ union all select $8305 \ union all select $8306 \ union all select $8307 \ union all select $8308 \ union all select $8309 \ union all select $8310 \ union all select $8311 \ union all select $8312 \ union all select $8313 \ union all select $8314 \ union all select $8315 \ union all select $8316 \ union all select $8317 \ union all select $8318 \ union all select $8319 \ union all select $8320 \ union all select $8321 \ union all select $8322 \ union all select $8323 \ union all select $8324 \ union all select $8325 \ union all select $8326 \ union all select $8327 \ union all select $8328 \ union all select $8329 \ union all select $8330 \ union all select $8331 \ union all select $8332 \ union all select $8333 \ union all select $8334 \ union all select $8335 \ union all select $8336 \ union all select $8337 \ union all select $8338 \ union all select $8339 \ union all select $8340 \ union all select $8341 \ union all select $8342 \ union all select $8343 \ union all select $8344 \ union all select $8345 \ union all select $8346 \ union all select $8347 \ union all select $8348 \ union all select $8349 \ union all select $8350 \ union all select $8351 \ union all select $8352 \ union all select $8353 \ union all select $8354 \ union all select $8355 \ union all select $8356 \ union all select $8357 \ union all select $8358 \ union all select $8359 \ union all select $8360 \ union all select $8361 \ union all select $8362 \ union all select $8363 \ union all select $8364 \ union all select $8365 \ union all select $8366 \ union all select $8367 \ union all select $8368 \ union all select $8369 \ union all select $8370 \ union all select $8371 \ union all select $8372 \ union all select $8373 \ union all select $8374 \ union all select $8375 \ union all select $8376 \ union all select $8377 \ union all select $8378 \ union all select $8379 \ union all select $8380 \ union all select $8381 \ union all select $8382 \ union all select $8383 \ union all select $8384 \ union all select $8385 \ union all select $8386 \ union all select $8387 \ union all select $8388 \ union all select $8389 \ union all select $8390 \ union all select $8391 \ union all select $8392 \ union all select $8393 \ union all select $8394 \ union all select $8395 \ union all select $8396 \ union all select $8397 \ union all select $8398 \ union all select $8399 \ union all select $8400 \ union all select $8401 \ union all select $8402 \ union all select $8403 \ union all select $8404 \ union all select $8405 \ union all select $8406 \ union all select $8407 \ union all select $8408 \ union all select $8409 \ union all select $8410 \ union all select $8411 \ union all select $8412 \ union all select $8413 \ union all select $8414 \ union all select $8415 \ union all select $8416 \ union all select $8417 \ union all select $8418 \ union all select $8419 \ union all select $8420 \ union all select $8421 \ union all select $8422 \ union all select $8423 \ union all select $8424 \ union all select $8425 \ union all select $8426 \ union all select $8427 \ union all select $8428 \ union all select $8429 \ union all select $8430 \ union all select $8431 \ union all select $8432 \ union all select $8433 \ union all select $8434 \ union all select $8435 \ union all select $8436 \ union all select $8437 \ union all select $8438 \ union all select $8439 \ union all select $8440 \ union all select $8441 \ union all select $8442 \ union all select $8443 \ union all select $8444 \ union all select $8445 \ union all select $8446 \ union all select $8447 \ union all select $8448 \ union all select $8449 \ union all select $8450 \ union all select $8451 \ union all select $8452 \ union all select $8453 \ union all select $8454 \ union all select $8455 \ union all select $8456 \ union all select $8457 \ union all select $8458 \ union all select $8459 \ union all select $8460 \ union all select $8461 \ union all select $8462 \ union all select $8463 \ union all select $8464 \ union all select $8465 \ union all select $8466 \ union all select $8467 \ union all select $8468 \ union all select $8469 \ union all select $8470 \ union all select $8471 \ union all select $8472 \ union all select $8473 \ union all select $8474 \ union all select $8475 \ union all select $8476 \ union all select $8477 \ union all select $8478 \ union all select $8479 \ union all select $8480 \ union all select $8481 \ union all select $8482 \ union all select $8483 \ union all select $8484 \ union all select $8485 \ union all select $8486 \ union all select $8487 \ union all select $8488 \ union all select $8489 \ union all select $8490 \ union all select $8491 \ union all select $8492 \ union all select $8493 \ union all select $8494 \ union all select $8495 \ union all select $8496 \ union all select $8497 \ union all select $8498 \ union all select $8499 \ union all select $8500 \ union all select $8501 \ union all select $8502 \ union all select $8503 \ union all select $8504 \ union all select $8505 \ union all select $8506 \ union all select $8507 \ union all select $8508 \ union all select $8509 \ union all select $8510 \ union all select $8511 \ union all select $8512 \ union all select $8513 \ union all select $8514 \ union all select $8515 \ union all select $8516 \ union all select $8517 \ union all select $8518 \ union all select $8519 \ union all select $8520 \ union all select $8521 \ union all select $8522 \ union all select $8523 \ union all select $8524 \ union all select $8525 \ union all select $8526 \ union all select $8527 \ union all select $8528 \ union all select $8529 \ union all select $8530 \ union all select $8531 \ union all select $8532 \ union all select $8533 \ union all select $8534 \ union all select $8535 \ union all select $8536 \ union all select $8537 \ union all select $8538 \ union all select $8539 \ union all select $8540 \ union all select $8541 \ union all select $8542 \ union all select $8543 \ union all select $8544 \ union all select $8545 \ union all select $8546 \ union all select $8547 \ union all select $8548 \ union all select $8549 \ union all select $8550 \ union all select $8551 \ union all select $8552 \ union all select $8553 \ union all select $8554 \ union all select $8555 \ union all select $8556 \ union all select $8557 \ union all select $8558 \ union all select $8559 \ union all select $8560 \ union all select $8561 \ union all select $8562 \ union all select $8563 \ union all select $8564 \ union all select $8565 \ union all select $8566 \ union all select $8567 \ union all select $8568 \ union all select $8569 \ union all select $8570 \ union all select $8571 \ union all select $8572 \ union all select $8573 \ union all select $8574 \ union all select $8575 \ union all select $8576 \ union all select $8577 \ union all select $8578 \ union all select $8579 \ union all select $8580 \ union all select $8581 \ union all select $8582 \ union all select $8583 \ union all select $8584 \ union all select $8585 \ union all select $8586 \ union all select $8587 \ union all select $8588 \ union all select $8589 \ union all select $8590 \ union all select $8591 \ union all select $8592 \ union all select $8593 \ union all select $8594 \ union all select $8595 \ union all select $8596 \ union all select $8597 \ union all select $8598 \ union all select $8599 \ union all select $8600 \ union all select $8601 \ union all select $8602 \ union all select $8603 \ union all select $8604 \ union all select $8605 \ union all select $8606 \ union all select $8607 \ union all select $8608 \ union all select $8609 \ union all select $8610 \ union all select $8611 \ union all select $8612 \ union all select $8613 \ union all select $8614 \ union all select $8615 \ union all select $8616 \ union all select $8617 \ union all select $8618 \ union all select $8619 \ union all select $8620 \ union all select $8621 \ union all select $8622 \ union all select $8623 \ union all select $8624 \ union all select $8625 \ union all select $8626 \ union all select $8627 \ union all select $8628 \ union all select $8629 \ union all select $8630 \ union all select $8631 \ union all select $8632 \ union all select $8633 \ union all select $8634 \ union all select $8635 \ union all select $8636 \ union all select $8637 \ union all select $8638 \ union all select $8639 \ union all select $8640 \ union all select $8641 \ union all select $8642 \ union all select $8643 \ union all select $8644 \ union all select $8645 \ union all select $8646 \ union all select $8647 \ union all select $8648 \ union all select $8649 \ union all select $8650 \ union all select $8651 \ union all select $8652 \ union all select $8653 \ union all select $8654 \ union all select $8655 \ union all select $8656 \ union all select $8657 \ union all select $8658 \ union all select $8659 \ union all select $8660 \ union all select $8661 \ union all select $8662 \ union all select $8663 \ union all select $8664 \ union all select $8665 \ union all select $8666 \ union all select $8667 \ union all select $8668 \ union all select $8669 \ union all select $8670 \ union all select $8671 \ union all select $8672 \ union all select $8673 \ union all select $8674 \ union all select $8675 \ union all select $8676 \ union all select $8677 \ union all select $8678 \ union all select $8679 \ union all select $8680 \ union all select $8681 \ union all select $8682 \ union all select $8683 \ union all select $8684 \ union all select $8685 \ union all select $8686 \ union all select $8687 \ union all select $8688 \ union all select $8689 \ union all select $8690 \ union all select $8691 \ union all select $8692 \ union all select $8693 \ union all select $8694 \ union all select $8695 \ union all select $8696 \ union all select $8697 \ union all select $8698 \ union all select $8699 \ union all select $8700 \ union all select $8701 \ union all select $8702 \ union all select $8703 \ union all select $8704 \ union all select $8705 \ union all select $8706 \ union all select $8707 \ union all select $8708 \ union all select $8709 \ union all select $8710 \ union all select $8711 \ union all select $8712 \ union all select $8713 \ union all select $8714 \ union all select $8715 \ union all select $8716 \ union all select $8717 \ union all select $8718 \ union all select $8719 \ union all select $8720 \ union all select $8721 \ union all select $8722 \ union all select $8723 \ union all select $8724 \ union all select $8725 \ union all select $8726 \ union all select $8727 \ union all select $8728 \ union all select $8729 \ union all select $8730 \ union all select $8731 \ union all select $8732 \ union all select $8733 \ union all select $8734 \ union all select $8735 \ union all select $8736 \ union all select $8737 \ union all select $8738 \ union all select $8739 \ union all select $8740 \ union all select $8741 \ union all select $8742 \ union all select $8743 \ union all select $8744 \ union all select $8745 \ union all select $8746 \ union all select $8747 \ union all select $8748 \ union all select $8749 \ union all select $8750 \ union all select $8751 \ union all select $8752 \ union all select $8753 \ union all select $8754 \ union all select $8755 \ union all select $8756 \ union all select $8757 \ union all select $8758 \ union all select $8759 \ union all select $8760 \ union all select $8761 \ union all select $8762 \ union all select $8763 \ union all select $8764 \ union all select $8765 \ union all select $8766 \ union all select $8767 \ union all select $8768 \ union all select $8769 \ union all select $8770 \ union all select $8771 \ union all select $8772 \ union all select $8773 \ union all select $8774 \ union all select $8775 \ union all select $8776 \ union all select $8777 \ union all select $8778 \ union all select $8779 \ union all select $8780 \ union all select $8781 \ union all select $8782 \ union all select $8783 \ union all select $8784 \ union all select $8785 \ union all select $8786 \ union all select $8787 \ union all select $8788 \ union all select $8789 \ union all select $8790 \ union all select $8791 \ union all select $8792 \ union all select $8793 \ union all select $8794 \ union all select $8795 \ union all select $8796 \ union all select $8797 \ union all select $8798 \ union all select $8799 \ union all select $8800 \ union all select $8801 \ union all select $8802 \ union all select $8803 \ union all select $8804 \ union all select $8805 \ union all select $8806 \ union all select $8807 \ union all select $8808 \ union all select $8809 \ union all select $8810 \ union all select $8811 \ union all select $8812 \ union all select $8813 \ union all select $8814 \ union all select $8815 \ union all select $8816 \ union all select $8817 \ union all select $8818 \ union all select $8819 \ union all select $8820 \ union all select $8821 \ union all select $8822 \ union all select $8823 \ union all select $8824 \ union all select $8825 \ union all select $8826 \ union all select $8827 \ union all select $8828 \ union all select $8829 \ union all select $8830 \ union all select $8831 \ union all select $8832 \ union all select $8833 \ union all select $8834 \ union all select $8835 \ union all select $8836 \ union all select $8837 \ union all select $8838 \ union all select $8839 \ union all select $8840 \ union all select $8841 \ union all select $8842 \ union all select $8843 \ union all select $8844 \ union all select $8845 \ union all select $8846 \ union all select $8847 \ union all select $8848 \ union all select $8849 \ union all select $8850 \ union all select $8851 \ union all select $8852 \ union all select $8853 \ union all select $8854 \ union all select $8855 \ union all select $8856 \ union all select $8857 \ union all select $8858 \ union all select $8859 \ union all select $8860 \ union all select $8861 \ union all select $8862 \ union all select $8863 \ union all select $8864 \ union all select $8865 \ union all select $8866 \ union all select $8867 \ union all select $8868 \ union all select $8869 \ union all select $8870 \ union all select $8871 \ union all select $8872 \ union all select $8873 \ union all select $8874 \ union all select $8875 \ union all select $8876 \ union all select $8877 \ union all select $8878 \ union all select $8879 \ union all select $8880 \ union all select $8881 \ union all select $8882 \ union all select $8883 \ union all select $8884 \ union all select $8885 \ union all select $8886 \ union all select $8887 \ union all select $8888 \ union all select $8889 \ union all select $8890 \ union all select $8891 \ union all select $8892 \ union all select $8893 \ union all select $8894 \ union all select $8895 \ union all select $8896 \ union all select $8897 \ union all select $8898 \ union all select $8899 \ union all select $8900 \ union all select $8901 \ union all select $8902 \ union all select $8903 \ union all select $8904 \ union all select $8905 \ union all select $8906 \ union all select $8907 \ union all select $8908 \ union all select $8909 \ union all select $8910 \ union all select $8911 \ union all select $8912 \ union all select $8913 \ union all select $8914 \ union all select $8915 \ union all select $8916 \ union all select $8917 \ union all select $8918 \ union all select $8919 \ union all select $8920 \ union all select $8921 \ union all select $8922 \ union all select $8923 \ union all select $8924 \ union all select $8925 \ union all select $8926 \ union all select $8927 \ union all select $8928 \ union all select $8929 \ union all select $8930 \ union all select $8931 \ union all select $8932 \ union all select $8933 \ union all select $8934 \ union all select $8935 \ union all select $8936 \ union all select $8937 \ union all select $8938 \ union all select $8939 \ union all select $8940 \ union all select $8941 \ union all select $8942 \ union all select $8943 \ union all select $8944 \ union all select $8945 \ union all select $8946 \ union all select $8947 \ union all select $8948 \ union all select $8949 \ union all select $8950 \ union all select $8951 \ union all select $8952 \ union all select $8953 \ union all select $8954 \ union all select $8955 \ union all select $8956 \ union all select $8957 \ union all select $8958 \ union all select $8959 \ union all select $8960 \ union all select $8961 \ union all select $8962 \ union all select $8963 \ union all select $8964 \ union all select $8965 \ union all select $8966 \ union all select $8967 \ union all select $8968 \ union all select $8969 \ union all select $8970 \ union all select $8971 \ union all select $8972 \ union all select $8973 \ union all select $8974 \ union all select $8975 \ union all select $8976 \ union all select $8977 \ union all select $8978 \ union all select $8979 \ union all select $8980 \ union all select $8981 \ union all select $8982 \ union all select $8983 \ union all select $8984 \ union all select $8985 \ union all select $8986 \ union all select $8987 \ union all select $8988 \ union all select $8989 \ union all select $8990 \ union all select $8991 \ union all select $8992 \ union all select $8993 \ union all select $8994 \ union all select $8995 \ union all select $8996 \ union all select $8997 \ union all select $8998 \ union all select $8999 \ union all select $9000 \ union all select $9001 \ union all select $9002 \ union all select $9003 \ union all select $9004 \ union all select $9005 \ union all select $9006 \ union all select $9007 \ union all select $9008 \ union all select $9009 \ union all select $9010 \ union all select $9011 \ union all select $9012 \ union all select $9013 \ union all select $9014 \ union all select $9015 \ union all select $9016 \ union all select $9017 \ union all select $9018 \ union all select $9019 \ union all select $9020 \ union all select $9021 \ union all select $9022 \ union all select $9023 \ union all select $9024 \ union all select $9025 \ union all select $9026 \ union all select $9027 \ union all select $9028 \ union all select $9029 \ union all select $9030 \ union all select $9031 \ union all select $9032 \ union all select $9033 \ union all select $9034 \ union all select $9035 \ union all select $9036 \ union all select $9037 \ union all select $9038 \ union all select $9039 \ union all select $9040 \ union all select $9041 \ union all select $9042 \ union all select $9043 \ union all select $9044 \ union all select $9045 \ union all select $9046 \ union all select $9047 \ union all select $9048 \ union all select $9049 \ union all select $9050 \ union all select $9051 \ union all select $9052 \ union all select $9053 \ union all select $9054 \ union all select $9055 \ union all select $9056 \ union all select $9057 \ union all select $9058 \ union all select $9059 \ union all select $9060 \ union all select $9061 \ union all select $9062 \ union all select $9063 \ union all select $9064 \ union all select $9065 \ union all select $9066 \ union all select $9067 \ union all select $9068 \ union all select $9069 \ union all select $9070 \ union all select $9071 \ union all select $9072 \ union all select $9073 \ union all select $9074 \ union all select $9075 \ union all select $9076 \ union all select $9077 \ union all select $9078 \ union all select $9079 \ union all select $9080 \ union all select $9081 \ union all select $9082 \ union all select $9083 \ union all select $9084 \ union all select $9085 \ union all select $9086 \ union all select $9087 \ union all select $9088 \ union all select $9089 \ union all select $9090 \ union all select $9091 \ union all select $9092 \ union all select $9093 \ union all select $9094 \ union all select $9095 \ union all select $9096 \ union all select $9097 \ union all select $9098 \ union all select $9099 \ union all select $9100 \ union all select $9101 \ union all select $9102 \ union all select $9103 \ union all select $9104 \ union all select $9105 \ union all select $9106 \ union all select $9107 \ union all select $9108 \ union all select $9109 \ union all select $9110 \ union all select $9111 \ union all select $9112 \ union all select $9113 \ union all select $9114 \ union all select $9115 \ union all select $9116 \ union all select $9117 \ union all select $9118 \ union all select $9119 \ union all select $9120 \ union all select $9121 \ union all select $9122 \ union all select $9123 \ union all select $9124 \ union all select $9125 \ union all select $9126 \ union all select $9127 \ union all select $9128 \ union all select $9129 \ union all select $9130 \ union all select $9131 \ union all select $9132 \ union all select $9133 \ union all select $9134 \ union all select $9135 \ union all select $9136 \ union all select $9137 \ union all select $9138 \ union all select $9139 \ union all select $9140 \ union all select $9141 \ union all select $9142 \ union all select $9143 \ union all select $9144 \ union all select $9145 \ union all select $9146 \ union all select $9147 \ union all select $9148 \ union all select $9149 \ union all select $9150 \ union all select $9151 \ union all select $9152 \ union all select $9153 \ union all select $9154 \ union all select $9155 \ union all select $9156 \ union all select $9157 \ union all select $9158 \ union all select $9159 \ union all select $9160 \ union all select $9161 \ union all select $9162 \ union all select $9163 \ union all select $9164 \ union all select $9165 \ union all select $9166 \ union all select $9167 \ union all select $9168 \ union all select $9169 \ union all select $9170 \ union all select $9171 \ union all select $9172 \ union all select $9173 \ union all select $9174 \ union all select $9175 \ union all select $9176 \ union all select $9177 \ union all select $9178 \ union all select $9179 \ union all select $9180 \ union all select $9181 \ union all select $9182 \ union all select $9183 \ union all select $9184 \ union all select $9185 \ union all select $9186 \ union all select $9187 \ union all select $9188 \ union all select $9189 \ union all select $9190 \ union all select $9191 \ union all select $9192 \ union all select $9193 \ union all select $9194 \ union all select $9195 \ union all select $9196 \ union all select $9197 \ union all select $9198 \ union all select $9199 \ union all select $9200 \ union all select $9201 \ union all select $9202 \ union all select $9203 \ union all select $9204 \ union all select $9205 \ union all select $9206 \ union all select $9207 \ union all select $9208 \ union all select $9209 \ union all select $9210 \ union all select $9211 \ union all select $9212 \ union all select $9213 \ union all select $9214 \ union all select $9215 \ union all select $9216 \ union all select $9217 \ union all select $9218 \ union all select $9219 \ union all select $9220 \ union all select $9221 \ union all select $9222 \ union all select $9223 \ union all select $9224 \ union all select $9225 \ union all select $9226 \ union all select $9227 \ union all select $9228 \ union all select $9229 \ union all select $9230 \ union all select $9231 \ union all select $9232 \ union all select $9233 \ union all select $9234 \ union all select $9235 \ union all select $9236 \ union all select $9237 \ union all select $9238 \ union all select $9239 \ union all select $9240 \ union all select $9241 \ union all select $9242 \ union all select $9243 \ union all select $9244 \ union all select $9245 \ union all select $9246 \ union all select $9247 \ union all select $9248 \ union all select $9249 \ union all select $9250 \ union all select $9251 \ union all select $9252 \ union all select $9253 \ union all select $9254 \ union all select $9255 \ union all select $9256 \ union all select $9257 \ union all select $9258 \ union all select $9259 \ union all select $9260 \ union all select $9261 \ union all select $9262 \ union all select $9263 \ union all select $9264 \ union all select $9265 \ union all select $9266 \ union all select $9267 \ union all select $9268 \ union all select $9269 \ union all select $9270 \ union all select $9271 \ union all select $9272 \ union all select $9273 \ union all select $9274 \ union all select $9275 \ union all select $9276 \ union all select $9277 \ union all select $9278 \ union all select $9279 \ union all select $9280 \ union all select $9281 \ union all select $9282 \ union all select $9283 \ union all select $9284 \ union all select $9285 \ union all select $9286 \ union all select $9287 \ union all select $9288 \ union all select $9289 \ union all select $9290 \ union all select $9291 \ union all select $9292 \ union all select $9293 \ union all select $9294 \ union all select $9295 \ union all select $9296 \ union all select $9297 \ union all select $9298 \ union all select $9299 \ union all select $9300 \ union all select $9301 \ union all select $9302 \ union all select $9303 \ union all select $9304 \ union all select $9305 \ union all select $9306 \ union all select $9307 \ union all select $9308 \ union all select $9309 \ union all select $9310 \ union all select $9311 \ union all select $9312 \ union all select $9313 \ union all select $9314 \ union all select $9315 \ union all select $9316 \ union all select $9317 \ union all select $9318 \ union all select $9319 \ union all select $9320 \ union all select $9321 \ union all select $9322 \ union all select $9323 \ union all select $9324 \ union all select $9325 \ union all select $9326 \ union all select $9327 \ union all select $9328 \ union all select $9329 \ union all select $9330 \ union all select $9331 \ union all select $9332 \ union all select $9333 \ union all select $9334 \ union all select $9335 \ union all select $9336 \ union all select $9337 \ union all select $9338 \ union all select $9339 \ union all select $9340 \ union all select $9341 \ union all select $9342 \ union all select $9343 \ union all select $9344 \ union all select $9345 \ union all select $9346 \ union all select $9347 \ union all select $9348 \ union all select $9349 \ union all select $9350 \ union all select $9351 \ union all select $9352 \ union all select $9353 \ union all select $9354 \ union all select $9355 \ union all select $9356 \ union all select $9357 \ union all select $9358 \ union all select $9359 \ union all select $9360 \ union all select $9361 \ union all select $9362 \ union all select $9363 \ union all select $9364 \ union all select $9365 \ union all select $9366 \ union all select $9367 \ union all select $9368 \ union all select $9369 \ union all select $9370 \ union all select $9371 \ union all select $9372 \ union all select $9373 \ union all select $9374 \ union all select $9375 \ union all select $9376 \ union all select $9377 \ union all select $9378 \ union all select $9379 \ union all select $9380 \ union all select $9381 \ union all select $9382 \ union all select $9383 \ union all select $9384 \ union all select $9385 \ union all select $9386 \ union all select $9387 \ union all select $9388 \ union all select $9389 \ union all select $9390 \ union all select $9391 \ union all select $9392 \ union all select $9393 \ union all select $9394 \ union all select $9395 \ union all select $9396 \ union all select $9397 \ union all select $9398 \ union all select $9399 \ union all select $9400 \ union all select $9401 \ union all select $9402 \ union all select $9403 \ union all select $9404 \ union all select $9405 \ union all select $9406 \ union all select $9407 \ union all select $9408 \ union all select $9409 \ union all select $9410 \ union all select $9411 \ union all select $9412 \ union all select $9413 \ union all select $9414 \ union all select $9415 \ union all select $9416 \ union all select $9417 \ union all select $9418 \ union all select $9419 \ union all select $9420 \ union all select $9421 \ union all select $9422 \ union all select $9423 \ union all select $9424 \ union all select $9425 \ union all select $9426 \ union all select $9427 \ union all select $9428 \ union all select $9429 \ union all select $9430 \ union all select $9431 \ union all select $9432 \ union all select $9433 \ union all select $9434 \ union all select $9435 \ union all select $9436 \ union all select $9437 \ union all select $9438 \ union all select $9439 \ union all select $9440 \ union all select $9441 \ union all select $9442 \ union all select $9443 \ union all select $9444 \ union all select $9445 \ union all select $9446 \ union all select $9447 \ union all select $9448 \ union all select $9449 \ union all select $9450 \ union all select $9451 \ union all select $9452 \ union all select $9453 \ union all select $9454 \ union all select $9455 \ union all select $9456 \ union all select $9457 \ union all select $9458 \ union all select $9459 \ union all select $9460 \ union all select $9461 \ union all select $9462 \ union all select $9463 \ union all select $9464 \ union all select $9465 \ union all select $9466 \ union all select $9467 \ union all select $9468 \ union all select $9469 \ union all select $9470 \ union all select $9471 \ union all select $9472 \ union all select $9473 \ union all select $9474 \ union all select $9475 \ union all select $9476 \ union all select $9477 \ union all select $9478 \ union all select $9479 \ union all select $9480 \ union all select $9481 \ union all select $9482 \ union all select $9483 \ union all select $9484 \ union all select $9485 \ union all select $9486 \ union all select $9487 \ union all select $9488 \ union all select $9489 \ union all select $9490 \ union all select $9491 \ union all select $9492 \ union all select $9493 \ union all select $9494 \ union all select $9495 \ union all select $9496 \ union all select $9497 \ union all select $9498 \ union all select $9499 \ union all select $9500 \ union all select $9501 \ union all select $9502 \ union all select $9503 \ union all select $9504 \ union all select $9505 \ union all select $9506 \ union all select $9507 \ union all select $9508 \ union all select $9509 \ union all select $9510 \ union all select $9511 \ union all select $9512 \ union all select $9513 \ union all select $9514 \ union all select $9515 \ union all select $9516 \ union all select $9517 \ union all select $9518 \ union all select $9519 \ union all select $9520 \ union all select $9521 \ union all select $9522 \ union all select $9523 \ union all select $9524 \ union all select $9525 \ union all select $9526 \ union all select $9527 \ union all select $9528 \ union all select $9529 \ union all select $9530 \ union all select $9531 \ union all select $9532 \ union all select $9533 \ union all select $9534 \ union all select $9535 \ union all select $9536 \ union all select $9537 \ union all select $9538 \ union all select $9539 \ union all select $9540 \ union all select $9541 \ union all select $9542 \ union all select $9543 \ union all select $9544 \ union all select $9545 \ union all select $9546 \ union all select $9547 \ union all select $9548 \ union all select $9549 \ union all select $9550 \ union all select $9551 \ union all select $9552 \ union all select $9553 \ union all select $9554 \ union all select $9555 \ union all select $9556 \ union all select $9557 \ union all select $9558 \ union all select $9559 \ union all select $9560 \ union all select $9561 \ union all select $9562 \ union all select $9563 \ union all select $9564 \ union all select $9565 \ union all select $9566 \ union all select $9567 \ union all select $9568 \ union all select $9569 \ union all select $9570 \ union all select $9571 \ union all select $9572 \ union all select $9573 \ union all select $9574 \ union all select $9575 \ union all select $9576 \ union all select $9577 \ union all select $9578 \ union all select $9579 \ union all select $9580 \ union all select $9581 \ union all select $9582 \ union all select $9583 \ union all select $9584 \ union all select $9585 \ union all select $9586 \ union all select $9587 \ union all select $9588 \ union all select $9589 \ union all select $9590 \ union all select $9591 \ union all select $9592 \ union all select $9593 \ union all select $9594 \ union all select $9595 \ union all select $9596 \ union all select $9597 \ union all select $9598 \ union all select $9599 \ union all select $9600 \ union all select $9601 \ union all select $9602 \ union all select $9603 \ union all select $9604 \ union all select $9605 \ union all select $9606 \ union all select $9607 \ union all select $9608 \ union all select $9609 \ union all select $9610 \ union all select $9611 \ union all select $9612 \ union all select $9613 \ union all select $9614 \ union all select $9615 \ union all select $9616 \ union all select $9617 \ union all select $9618 \ union all select $9619 \ union all select $9620 \ union all select $9621 \ union all select $9622 \ union all select $9623 \ union all select $9624 \ union all select $9625 \ union all select $9626 \ union all select $9627 \ union all select $9628 \ union all select $9629 \ union all select $9630 \ union all select $9631 \ union all select $9632 \ union all select $9633 \ union all select $9634 \ union all select $9635 \ union all select $9636 \ union all select $9637 \ union all select $9638 \ union all select $9639 \ union all select $9640 \ union all select $9641 \ union all select $9642 \ union all select $9643 \ union all select $9644 \ union all select $9645 \ union all select $9646 \ union all select $9647 \ union all select $9648 \ union all select $9649 \ union all select $9650 \ union all select $9651 \ union all select $9652 \ union all select $9653 \ union all select $9654 \ union all select $9655 \ union all select $9656 \ union all select $9657 \ union all select $9658 \ union all select $9659 \ union all select $9660 \ union all select $9661 \ union all select $9662 \ union all select $9663 \ union all select $9664 \ union all select $9665 \ union all select $9666 \ union all select $9667 \ union all select $9668 \ union all select $9669 \ union all select $9670 \ union all select $9671 \ union all select $9672 \ union all select $9673 \ union all select $9674 \ union all select $9675 \ union all select $9676 \ union all select $9677 \ union all select $9678 \ union all select $9679 \ union all select $9680 \ union all select $9681 \ union all select $9682 \ union all select $9683 \ union all select $9684 \ union all select $9685 \ union all select $9686 \ union all select $9687 \ union all select $9688 \ union all select $9689 \ union all select $9690 \ union all select $9691 \ union all select $9692 \ union all select $9693 \ union all select $9694 \ union all select $9695 \ union all select $9696 \ union all select $9697 \ union all select $9698 \ union all select $9699 \ union all select $9700 \ union all select $9701 \ union all select $9702 \ union all select $9703 \ union all select $9704 \ union all select $9705 \ union all select $9706 \ union all select $9707 \ union all select $9708 \ union all select $9709 \ union all select $9710 \ union all select $9711 \ union all select $9712 \ union all select $9713 \ union all select $9714 \ union all select $9715 \ union all select $9716 \ union all select $9717 \ union all select $9718 \ union all select $9719 \ union all select $9720 \ union all select $9721 \ union all select $9722 \ union all select $9723 \ union all select $9724 \ union all select $9725 \ union all select $9726 \ union all select $9727 \ union all select $9728 \ union all select $9729 \ union all select $9730 \ union all select $9731 \ union all select $9732 \ union all select $9733 \ union all select $9734 \ union all select $9735 \ union all select $9736 \ union all select $9737 \ union all select $9738 \ union all select $9739 \ union all select $9740 \ union all select $9741 \ union all select $9742 \ union all select $9743 \ union all select $9744 \ union all select $9745 \ union all select $9746 \ union all select $9747 \ union all select $9748 \ union all select $9749 \ union all select $9750 \ union all select $9751 \ union all select $9752 \ union all select $9753 \ union all select $9754 \ union all select $9755 \ union all select $9756 \ union all select $9757 \ union all select $9758 \ union all select $9759 \ union all select $9760 \ union all select $9761 \ union all select $9762 \ union all select $9763 \ union all select $9764 \ union all select $9765 \ union all select $9766 \ union all select $9767 \ union all select $9768 \ union all select $9769 \ union all select $9770 \ union all select $9771 \ union all select $9772 \ union all select $9773 \ union all select $9774 \ union all select $9775 \ union all select $9776 \ union all select $9777 \ union all select $9778 \ union all select $9779 \ union all select $9780 \ union all select $9781 \ union all select $9782 \ union all select $9783 \ union all select $9784 \ union all select $9785 \ union all select $9786 \ union all select $9787 \ union all select $9788 \ union all select $9789 \ union all select $9790 \ union all select $9791 \ union all select $9792 \ union all select $9793 \ union all select $9794 \ union all select $9795 \ union all select $9796 \ union all select $9797 \ union all select $9798 \ union all select $9799 \ union all select $9800 \ union all select $9801 \ union all select $9802 \ union all select $9803 \ union all select $9804 \ union all select $9805 \ union all select $9806 \ union all select $9807 \ union all select $9808 \ union all select $9809 \ union all select $9810 \ union all select $9811 \ union all select $9812 \ union all select $9813 \ union all select $9814 \ union all select $9815 \ union all select $9816 \ union all select $9817 \ union all select $9818 \ union all select $9819 \ union all select $9820 \ union all select $9821 \ union all select $9822 \ union all select $9823 \ union all select $9824 \ union all select $9825 \ union all select $9826 \ union all select $9827 \ union all select $9828 \ union all select $9829 \ union all select $9830 \ union all select $9831 \ union all select $9832 \ union all select $9833 \ union all select $9834 \ union all select $9835 \ union all select $9836 \ union all select $9837 \ union all select $9838 \ union all select $9839 \ union all select $9840 \ union all select $9841 \ union all select $9842 \ union all select $9843 \ union all select $9844 \ union all select $9845 \ union all select $9846 \ union all select $9847 \ union all select $9848 \ union all select $9849 \ union all select $9850 \ union all select $9851 \ union all select $9852 \ union all select $9853 \ union all select $9854 \ union all select $9855 \ union all select $9856 \ union all select $9857 \ union all select $9858 \ union all select $9859 \ union all select $9860 \ union all select $9861 \ union all select $9862 \ union all select $9863 \ union all select $9864 \ union all select $9865 \ union all select $9866 \ union all select $9867 \ union all select $9868 \ union all select $9869 \ union all select $9870 \ union all select $9871 \ union all select $9872 \ union all select $9873 \ union all select $9874 \ union all select $9875 \ union all select $9876 \ union all select $9877 \ union all select $9878 \ union all select $9879 \ union all select $9880 \ union all select $9881 \ union all select $9882 \ union all select $9883 \ union all select $9884 \ union all select $9885 \ union all select $9886 \ union all select $9887 \ union all select $9888 \ union all select $9889 \ union all select $9890 \ union all select $9891 \ union all select $9892 \ union all select $9893 \ union all select $9894 \ union all select $9895 \ union all select $9896 \ union all select $9897 \ union all select $9898 \ union all select $9899 \ union all select $9900 \ union all select $9901 \ union all select $9902 \ union all select $9903 \ union all select $9904 \ union all select $9905 \ union all select $9906 \ union all select $9907 \ union all select $9908 \ union all select $9909 \ union all select $9910 \ union all select $9911 \ union all select $9912 \ union all select $9913 \ union all select $9914 \ union all select $9915 \ union all select $9916 \ union all select $9917 \ union all select $9918 \ union all select $9919 \ union all select $9920 \ union all select $9921 \ union all select $9922 \ union all select $9923 \ union all select $9924 \ union all select $9925 \ union all select $9926 \ union all select $9927 \ union all select $9928 \ union all select $9929 \ union all select $9930 \ union all select $9931 \ union all select $9932 \ union all select $9933 \ union all select $9934 \ union all select $9935 \ union all select $9936 \ union all select $9937 \ union all select $9938 \ union all select $9939 \ union all select $9940 \ union all select $9941 \ union all select $9942 \ union all select $9943 \ union all select $9944 \ union all select $9945 \ union all select $9946 \ union all select $9947 \ union all select $9948 \ union all select $9949 \ union all select $9950 \ union all select $9951 \ union all select $9952 \ union all select $9953 \ union all select $9954 \ union all select $9955 \ union all select $9956 \ union all select $9957 \ union all select $9958 \ union all select $9959 \ union all select $9960 \ union all select $9961 \ union all select $9962 \ union all select $9963 \ union all select $9964 \ union all select $9965 \ union all select $9966 \ union all select $9967 \ union all select $9968 \ union all select $9969 \ union all select $9970 \ union all select $9971 \ union all select $9972 \ union all select $9973 \ union all select $9974 \ union all select $9975 \ union all select $9976 \ union all select $9977 \ union all select $9978 \ union all select $9979 \ union all select $9980 \ union all select $9981 \ union all select $9982 \ union all select $9983 \ union all select $9984 \ union all select $9985 \ union all select $9986 \ union all select $9987 \ union all select $9988 \ union all select $9989 \ union all select $9990 \ union all select $9991 \ union all select $9992 \ union all select $9993 \ union all select $9994 \ union all select $9995 \ union all select $9996 \ union all select $9997 \ union all select $9998 \ union all select $9999 \ union all select $10000 \ union all select $10001 \ union all select $10002 \ union all select $10003 \ union all select $10004 \ union all select $10005 \ union all select $10006 \ union all select $10007 \ union all select $10008 \ union all select $10009 \ union all select $10010 \ union all select $10011 \ union all select $10012 \ union all select $10013 \ union all select $10014 \ union all select $10015 \ union all select $10016 \ union all select $10017 \ union all select $10018 \ union all select $10019 \ union all select $10020 \ union all select $10021 \ union all select $10022 \ union all select $10023 \ union all select $10024 \ union all select $10025 \ union all select $10026 \ union all select $10027 \ union all select $10028 \ union all select $10029 \ union all select $10030 \ union all select $10031 \ union all select $10032 \ union all select $10033 \ union all select $10034 \ union all select $10035 \ union all select $10036 \ union all select $10037 \ union all select $10038 \ union all select $10039 \ union all select $10040 \ union all select $10041 \ union all select $10042 \ union all select $10043 \ union all select $10044 \ union all select $10045 \ union all select $10046 \ union all select $10047 \ union all select $10048 \ union all select $10049 \ union all select $10050 \ union all select $10051 \ union all select $10052 \ union all select $10053 \ union all select $10054 \ union all select $10055 \ union all select $10056 \ union all select $10057 \ union all select $10058 \ union all select $10059 \ union all select $10060 \ union all select $10061 \ union all select $10062 \ union all select $10063 \ union all select $10064 \ union all select $10065 \ union all select $10066 \ union all select $10067 \ union all select $10068 \ union all select $10069 \ union all select $10070 \ union all select $10071 \ union all select $10072 \ union all select $10073 \ union all select $10074 \ union all select $10075 \ union all select $10076 \ union all select $10077 \ union all select $10078 \ union all select $10079 \ union all select $10080 \ union all select $10081 \ union all select $10082 \ union all select $10083 \ union all select $10084 \ union all select $10085 \ union all select $10086 \ union all select $10087 \ union all select $10088 \ union all select $10089 \ union all select $10090 \ union all select $10091 \ union all select $10092 \ union all select $10093 \ union all select $10094 \ union all select $10095 \ union all select $10096 \ union all select $10097 \ union all select $10098 \ union all select $10099 \ union all select $10100 \ union all select $10101 \ union all select $10102 \ union all select $10103 \ union all select $10104 \ union all select $10105 \ union all select $10106 \ union all select $10107 \ union all select $10108 \ union all select $10109 \ union all select $10110 \ union all select $10111 \ union all select $10112 \ union all select $10113 \ union all select $10114 \ union all select $10115 \ union all select $10116 \ union all select $10117 \ union all select $10118 \ union all select $10119 \ union all select $10120 \ union all select $10121 \ union all select $10122 \ union all select $10123 \ union all select $10124 \ union all select $10125 \ union all select $10126 \ union all select $10127 \ union all select $10128 \ union all select $10129 \ union all select $10130 \ union all select $10131 \ union all select $10132 \ union all select $10133 \ union all select $10134 \ union all select $10135 \ union all select $10136 \ union all select $10137 \ union all select $10138 \ union all select $10139 \ union all select $10140 \ union all select $10141 \ union all select $10142 \ union all select $10143 \ union all select $10144 \ union all select $10145 \ union all select $10146 \ union all select $10147 \ union all select $10148 \ union all select $10149 \ union all select $10150 \ union all select $10151 \ union all select $10152 \ union all select $10153 \ union all select $10154 \ union all select $10155 \ union all select $10156 \ union all select $10157 \ union all select $10158 \ union all select $10159 \ union all select $10160 \ union all select $10161 \ union all select $10162 \ union all select $10163 \ union all select $10164 \ union all select $10165 \ union all select $10166 \ union all select $10167 \ union all select $10168 \ union all select $10169 \ union all select $10170 \ union all select $10171 \ union all select $10172 \ union all select $10173 \ union all select $10174 \ union all select $10175 \ union all select $10176 \ union all select $10177 \ union all select $10178 \ union all select $10179 \ union all select $10180 \ union all select $10181 \ union all select $10182 \ union all select $10183 \ union all select $10184 \ union all select $10185 \ union all select $10186 \ union all select $10187 \ union all select $10188 \ union all select $10189 \ union all select $10190 \ union all select $10191 \ union all select $10192 \ union all select $10193 \ union all select $10194 \ union all select $10195 \ union all select $10196 \ union all select $10197 \ union all select $10198 \ union all select $10199 \ union all select $10200 \ union all select $10201 \ union all select $10202 \ union all select $10203 \ union all select $10204 \ union all select $10205 \ union all select $10206 \ union all select $10207 \ union all select $10208 \ union all select $10209 \ union all select $10210 \ union all select $10211 \ union all select $10212 \ union all select $10213 \ union all select $10214 \ union all select $10215 \ union all select $10216 \ union all select $10217 \ union all select $10218 \ union all select $10219 \ union all select $10220 \ union all select $10221 \ union all select $10222 \ union all select $10223 \ union all select $10224 \ union all select $10225 \ union all select $10226 \ union all select $10227 \ union all select $10228 \ union all select $10229 \ union all select $10230 \ union all select $10231 \ union all select $10232 \ union all select $10233 \ union all select $10234 \ union all select $10235 \ union all select $10236 \ union all select $10237 \ union all select $10238 \ union all select $10239 \ union all select $10240 \ union all select $10241 \ union all select $10242 \ union all select $10243 \ union all select $10244 \ union all select $10245 \ union all select $10246 \ union all select $10247 \ union all select $10248 \ union all select $10249 \ union all select $10250 \ union all select $10251 \ union all select $10252 \ union all select $10253 \ union all select $10254 \ union all select $10255 \ union all select $10256 \ union all select $10257 \ union all select $10258 \ union all select $10259 \ union all select $10260 \ union all select $10261 \ union all select $10262 \ union all select $10263 \ union all select $10264 \ union all select $10265 \ union all select $10266 \ union all select $10267 \ union all select $10268 \ union all select $10269 \ union all select $10270 \ union all select $10271 \ union all select $10272 \ union all select $10273 \ union all select $10274 \ union all select $10275 \ union all select $10276 \ union all select $10277 \ union all select $10278 \ union all select $10279 \ union all select $10280 \ union all select $10281 \ union all select $10282 \ union all select $10283 \ union all select $10284 \ union all select $10285 \ union all select $10286 \ union all select $10287 \ union all select $10288 \ union all select $10289 \ union all select $10290 \ union all select $10291 \ union all select $10292 \ union all select $10293 \ union all select $10294 \ union all select $10295 \ union all select $10296 \ union all select $10297 \ union all select $10298 \ union all select $10299 \ union all select $10300 \ union all select $10301 \ union all select $10302 \ union all select $10303 \ union all select $10304 \ union all select $10305 \ union all select $10306 \ union all select $10307 \ union all select $10308 \ union all select $10309 \ union all select $10310 \ union all select $10311 \ union all select $10312"; 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, PG_QUERY_PARSE_DEFAULT, true); } pg_query_free_fingerprint_result(result); if (ret_code != 0) break; } printf("\n"); pg_query_exit(); return ret_code; } libpg_query-17-6.1.0/test/concurrency.c000066400000000000000000000022511477334012600177510ustar00rootroot00000000000000#include #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* unused_pthread_arg) { assert(unused_pthread_arg == NULL); 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-17-6.1.0/test/deparse.c000066400000000000000000000263461477334012600170550ustar00rootroot00000000000000#include #include #include #include #include #include #include #include #include "deparse_tests.c" void remove_numeric_key(char *parse_tree_json, char* key) { char *tokstart; char *p; size_t remaining_len; char search[100]; sprintf(search, "\"%s\":", key); p = parse_tree_json; while ((p = strstr(p, search)) != NULL) { tokstart = p; if (*(tokstart - 1) == ',') tokstart--; p += strlen(search); if (*p == '-') p++; while (*p >= '0' && *p <= '9') p++; remaining_len = strlen(p); memmove(tokstart, p, remaining_len); p = tokstart; *(p + remaining_len) = '\0'; } } // 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) { remove_numeric_key(parse_tree_json, "location"); remove_numeric_key(parse_tree_json, "name_location"); } int run_test(const char *query, bool compare_query_text) { PgQueryProtobufParseResult parse_result = pg_query_parse_protobuf(query); if (parse_result.error) { if (!compare_query_text) { // Silently fail for regression tests which can contain intentional syntax errors pg_query_free_protobuf_parse_result(parse_result); return EXIT_SUCCESS; } printf("\nERROR for \"%s\"\n %s\n", query, parse_result.error->message); pg_query_free_protobuf_parse_result(parse_result); 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 = malloc(sample_stat.st_size + 1); read(fd, sample_buffer, sample_stat.st_size); sample_buffer[sample_stat.st_size] = 0; if (sample_buffer == (void *) -1) { printf("Could not read 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); free(sample_buffer); close(fd); return EXIT_FAILURE; } int ret_code = EXIT_SUCCESS; for (int i = 0; i < split_result.n_stmts; ++i) { int test_ret_code; char *query = malloc(split_result.stmts[i]->stmt_len + 1); memcpy(query, sample_buffer_p + split_result.stmts[i]->stmt_location, split_result.stmts[i]->stmt_len); query[split_result.stmts[i]->stmt_len] = 0; 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); free(sample_buffer); 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", "brin_bloom.sql", "brin_multi.sql", "btree_index.sql", "case.sql", "char.sql", "circle.sql", "cluster.sql", "collate.icu.utf8.sql", "collate.linux.utf8.sql", "collate.sql", "collate.utf8.sql", "collate.windows.win1252.sql", "combocid.sql", "comments.sql", "compression.sql", "constraints.sql", "conversion.sql", "copy.sql", "copy2.sql", "copydml.sql", "copyselect.sql", "create_aggregate.sql", "create_am.sql", "create_cast.sql", "create_function_c.sql", "create_function_sql.sql", "create_index.sql", "create_index_spgist.sql", "create_misc.sql", "create_operator.sql", "create_procedure.sql", "create_role.sql", "create_schema.sql", "create_table.sql", "create_table_like.sql", "create_type.sql", "create_view.sql", "database.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", "event_trigger_login.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", "identity.sql", "incremental_sort.sql", "index_including.sql", "index_including_gist.sql", "indexing.sql", "indirect_toast.sql", "inet.sql", "infinite_recurse.sql", "inherit.sql", "init_privs.sql", "insert.sql", "insert_conflict.sql", "int2.sql", "int4.sql", "int8.sql", "interval.sql", "join.sql", "join_hash.sql", "json.sql", "json_encoding.sql", "jsonb.sql", "jsonb_jsonpath.sql", "jsonpath.sql", "jsonpath_encoding.sql", "largeobject.sql", "limit.sql", "line.sql", "lock.sql", "lseg.sql", "macaddr.sql", "macaddr8.sql", "matview.sql", "md5.sql", "memoize.sql", "merge.sql", "misc.sql", "misc_functions.sql", "misc_sanity.sql", "money.sql", "multirangetypes.sql", "mvcc.sql", "name.sql", "namespace.sql", "numeric.sql", "numeric_big.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.sql", "portals_p2.sql", "predicate.sql", "prepare.sql", "prepared_xacts.sql", "privileges.sql", "psql.sql", "psql_crosstab.sql", "publication.sql", "random.sql", "rangefuncs.sql", "rangetypes.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.sql", "select_distinct.sql", "select_distinct_on.sql", "select_having.sql", "select_implicit.sql", "select_into.sql", "select_parallel.sql", "select_views.sql", "sequence.sql", "spgist.sql", "sqljson.sql", "sqljson_jsontable.sql", "sqljson_queryfuncs.sql", "stats.sql", "stats_ext.sql", "strings.sql", "subscription.sql", "subselect.sql", "sysviews.sql", "tablesample.sql", "tablespace.sql", "temp.sql", "test_setup.sql", "text.sql", "tid.sql", "tidrangescan.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", "vacuum_parallel.sql", "varchar.sql", "window.sql", "with.sql", "write_parallel.sql", "xid.sql", "xml.sql", "xmlmap.sql", }; size_t regressFilenameCount = sizeof(regressFilenames) / sizeof(regressFilenames[0]); const char* plpgsqlRegressFilenames[] = { "plpgsql_array.sql", "plpgsql_cache.sql", "plpgsql_call.sql", "plpgsql_control.sql", "plpgsql_copy.sql", "plpgsql_domain.sql", "plpgsql_misc.sql", "plpgsql_record.sql", "plpgsql_simple.sql", "plpgsql_transaction.sql", "plpgsql_trap.sql", "plpgsql_trigger.sql", "plpgsql_varprops.sql" }; size_t plpgsqlRegressFilenameCount = sizeof(plpgsqlRegressFilenames) / sizeof(plpgsqlRegressFilenames[0]); 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; } for (i = 0; i < plpgsqlRegressFilenameCount; i += 1) { printf("\n%s\n", plpgsqlRegressFilenames[i]); char *filename = malloc(sizeof(char) * strlen("test/sql/postgres_regress/") + strlen(plpgsqlRegressFilenames[i]) + 1); strcpy(filename, "test/sql/plpgsql_regress/"); strcat(filename, plpgsqlRegressFilenames[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-17-6.1.0/test/deparse_tests.c000066400000000000000000000617741477334012600203030ustar00rootroot00000000000000const 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('year', s.collected_at) AS collected_at FROM snapshots s JOIN system_snapshots ON snapshot_id = s.id WHERE s.database_id = 23 AND s.collected_at >= 90 AND s.collected_at <= 160 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[5]", "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[1][4]", "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 x FROM y WHERE z = 20)", "SELECT * FROM x WHERE x = ANY (SELECT x FROM y WHERE z = 20)", "SELECT * FROM x WHERE x = COALESCE(y, z)", "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 x::regclass", "SELECT table_field::bool, table_field::boolean FROM t", "SELECT true, false", "SELECT 1::boolean, 0::boolean", "SELECT $5", "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 foo (a, b, c, d) VALUES ($1) ON CONFLICT (id) DO UPDATE SET (a, b, c, d) = (excluded.a, excluded.b, excluded.c, CASE WHEN foo.d = excluded.d THEN excluded.d END)", "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 = 24, b = true", "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 4", "SET TIME ZONE interval '+00:00' hour to minute", "SET timezone TO -7", "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 CSV HEADER", "SELECT 1 FROM a.b.c", "CREATE PUBLICATION foo FOR TABLES IN SCHEMA bar", "ALTER TABLE ALL IN TABLESPACE foo OWNED BY bar, quux SET TABLESPACE fred NOWAIT", "MERGE INTO measurement m USING new_measurement nm ON m.city_id = nm.city_id AND m.logdate = nm.logdate WHEN MATCHED AND nm.peaktemp IS NULL THEN DELETE WHEN MATCHED THEN UPDATE SET peaktemp = GREATEST(m.peaktemp, nm.peaktemp), unitsales = m.unitsales + COALESCE(nm.unitsales, 0) WHEN NOT MATCHED THEN INSERT (city_id, logdate, peaktemp, unitsales) VALUES (city_id, logdate, peaktemp, unitsales)", "COPY vistest FROM STDIN FREEZE CSV", "CREATE INDEX \"foo.index\" ON foo USING btree (bar)", "CREATE TABLE distributors (did int, name varchar(40), UNIQUE (name) WITH (fillfactor=70)) WITH (fillfactor=70)", "SHOW ALL", "ALTER TABLE ONLY public.\"Test 123\" ADD CONSTRAINT \"Test 123_pkey\" PRIMARY KEY (c1)", "CREATE PROCEDURE insert_data(a int, b int) LANGUAGE sql BEGIN ATOMIC INSERT INTO tbl VALUES (a); INSERT INTO tbl VALUES (b); END", "CREATE PROCEDURE do_nothing() LANGUAGE sql BEGIN ATOMIC END", "CREATE PROCEDURE returns_one() LANGUAGE sql BEGIN ATOMIC RETURN 1; END", "CREATE PROCEDURE updates_and_returns_one() LANGUAGE sql BEGIN ATOMIC UPDATE tbl SET a = 1; RETURN 1; END", "SELECT 1 FROM tbl LIMIT COALESCE($1, $2)", "SELECT (false AND true) IS FALSE", "SELECT a = (true IS FALSE)", "ALTER TABLE a ENABLE TRIGGER b", "ALTER TABLE a ENABLE TRIGGER ALL", "ALTER TABLE a ENABLE TRIGGER USER", "ALTER TABLE a DISABLE TRIGGER b", "ALTER TABLE a DISABLE TRIGGER ALL", "ALTER TABLE a DISABLE TRIGGER USER", "CREATE INDEX myindex ON public.mytable USING btree (col1, (col2::varchar) varchar_pattern_ops)", "SELECT * FROM CAST(1 AS text)", "DECLARE \"Foo1\" SCROLL CURSOR FOR SELECT * FROM tenk1 ORDER BY unique2", "FETCH BACKWARD 23 \"Foo1\"", "CREATE TABLE my_table (created_at timestamptz NOT NULL DEFAULT (now() AT TIME ZONE 'UTC'))", "CREATE TABLE my_table (created_at timestamptz NOT NULL DEFAULT (now() AT LOCAL))", "CREATE TABLE my_table (created_at timestamptz NOT NULL DEFAULT '1 hour'::interval + (current_timestamp AT TIME ZONE 'UTC'))", "ALTER TABLE my_table ADD COLUMN created_at timestamptz NOT NULL DEFAULT '1 hour'::interval + (current_timestamp AT TIME ZONE 'UTC')", "CREATE TABLE my_table (created_at int NOT NULL DEFAULT 1 + 2)" }; size_t testsLength = __LINE__ - 4; libpg_query-17-6.1.0/test/fingerprint.c000066400000000000000000000023051477334012600177460ustar00rootroot00000000000000#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], PG_QUERY_PARSE_DEFAULT, true); } pg_query_free_fingerprint_result(result); } // Ensures that there isn't a memory leak in the error case PgQueryFingerprintResult result = pg_query_fingerprint("SELECT !"); if (strcmp(result.error->message, "syntax error at end of input") != 0) { printf("\nERROR mismatch: %s\n", result.error->message); return EXIT_FAILURE; } pg_query_free_fingerprint_result(result); printf("\n"); pg_query_exit(); return ret_code; } libpg_query-17-6.1.0/test/fingerprint_opts.c000066400000000000000000000024021477334012600210110ustar00rootroot00000000000000#include #include #include #include #include #include "fingerprint_opts_tests.c" int main() { size_t i; bool ret_code = 0; for (i = 0; i < testsLength; i += 3) { PgQueryParseMode mode = atoi(tests[i+1]); PgQueryFingerprintResult result = pg_query_fingerprint_opts(tests[i], mode); 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 + 2]) == 0) { printf("."); } else { ret_code = -1; printf("INVALID result for \"%s\" with %d mode\nexpected: \"%s\"\nactual: \"%s\"\nactual tokens: ", tests[i], mode, tests[i + 2], result.fingerprint_str); pg_query_fingerprint_with_opts(tests[i], mode, true); } pg_query_free_fingerprint_result(result); } // Ensures that there isn't a memory leak in the error case PgQueryFingerprintResult result = pg_query_fingerprint("SELECT !"); if (strcmp(result.error->message, "syntax error at end of input") != 0) { printf("\nERROR mismatch: %s\n", result.error->message); return EXIT_FAILURE; } pg_query_free_fingerprint_result(result); printf("\n"); pg_query_exit(); return ret_code; } libpg_query-17-6.1.0/test/fingerprint_opts_tests.c000066400000000000000000000012261477334012600222360ustar00rootroot00000000000000const char* tests[] = { "SELECT 1", "0", "50fde20626009aba", "integer", "1", "c71927729d707de5", "character varying(32)", "1", "453ab4df8fd3eea9", "EXISTS(SELECT 1)", "2", "976a797c8ca2985b", "v_version IS NULL", "2", "6b292a26fcb78b1c", "pos:= instr($1, $2, 1)", "3", "786552659cc61f6f", "temp_str := substring(string FROM beg_index)", "3", "d6671d73f1654866", "v3.c1 := 4", "4", "a8c86658ce26a653", "NEW.name = upper(cleanString(NEW.name))", "4", "bb52450e4d46f7a1", "NEW.author.first_name = upper(cleanString(NEW.author.first_name))", "5", "a148e3f78b53c252", }; size_t testsLength = __LINE__ - 4; libpg_query-17-6.1.0/test/fingerprint_tests.c000066400000000000000000042014451477334012600212020ustar00rootroot00000000000000const char* tests[] = { "SELECT 1", "50fde20626009aba", "SELECT 2", "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()", "26b6553101185d22", "INSERT INTO test (a, b) VALUES ($1, $2)", "51e63b8083b48bdd", "INSERT INTO test (b, a) VALUES ($1, $2)", "51e63b8083b48bdd", "INSERT INTO test (a, b) VALUES (ARRAY[$1, $2, $3, $4], $5::timestamptz), (ARRAY[$6, $7, $8, $9], $10::timestamptz), ($11, $12::timestamptz)", "4dfdd5260cac5acf", "SELECT b AS x, a AS y FROM z", "1a8bf5d7614de3a5", "SELECT * FROM x WHERE y = $1", "4ff39426bd074231", "SELECT * FROM x WHERE y = ANY ($1)", "4ff39426bd074231", "SELECT * FROM x WHERE y IN ($1)", "4ff39426bd074231", "SELECT * FROM x WHERE y IN ($1, $2, $3)", "4ff39426bd074231", "SELECT * FROM x WHERE y IN ( $1::uuid )", "4ff39426bd074231", "SELECT * FROM x WHERE y IN ( $1::uuid, $2::uuid, $3::uuid )", "4ff39426bd074231", "PREPARE a123 AS SELECT a", "9b5e6ead8be993e8", "EXECUTE a123", "44ef1d2beabd53e8", "DEALLOCATE a123", "d8a65a814fbc5f95", "DEALLOCATE ALL", "2debfb8745df64a7", "EXPLAIN ANALYZE SELECT a", "82845c1b5c6102e5", "WITH a AS (SELECT * FROM x WHERE x.y = $1 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\"", "c6ef6b9f498feda4", "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 ($1, $2, $3)", "459fdc70778b841e", "SELECT * FROM a", "fcf44da7b597ef43", "SELECT * FROM a AS b", "fcf44da7b597ef43", "UPDATE users SET one_thing = $1, second_thing = $2 WHERE users.id = $1", "a0ea386c1cfd1e69", "UPDATE users SET something_else = $1 WHERE users.id = $1", "3172bc3e0d631d55", "UPDATE users SET something_else = (SELECT a FROM x WHERE uid = users.id LIMIT 1) WHERE users.id = $1", "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", "d2bec62d2a7ec7cb", "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()", "a222eaabaa1e7cb1", "CREATE TEMPORARY TABLE my_temp_table (test_id integer NOT NULL) ON COMMIT DROP", "1407ed5c5bb00967", "CREATE TEMPORARY TABLE my_temp_table AS SELECT 1", "695ebe73a3abc45c", "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", "CREATE OR REPLACE FUNCTION pg_temp.testfunc(OUT response \"mytable\", OUT sequelize_caught_exception text) RETURNS RECORD AS $func_12345$ BEGIN INSERT INTO \"mytable\" (\"mycolumn\") VALUES ('myvalue') RETURNING * INTO response; EXCEPTION WHEN unique_violation THEN GET STACKED DIAGNOSTICS sequelize_caught_exception = PG_EXCEPTION_DETAIL; END $func_12345$ LANGUAGE plpgsql; SELECT (testfunc.response).\"mycolumn\", testfunc.sequelize_caught_exception FROM pg_temp.testfunc(); DROP FUNCTION IF EXISTS pg_temp.testfunc();", "18e71bc17baea13b", "CREATE PROCEDURE insert_data(a integer, b integer) LANGUAGE SQL AS $$ INSERT INTO tbl VALUES (a); INSERT INTO tbl VALUES (b); $$;", "a0ac17049fee8e96", "DO $$DECLARE r record; BEGIN FOR r IN SELECT table_schema, table_name FROM information_schema.tables WHERE table_type = 'VIEW' AND table_schema = 'public' LOOP EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; END LOOP; END$$;", "f936eab75b8c1b90", "LISTEN virtual", "6e5bf26e5fc272a5", "UNLISTEN virtual", "9348a760200458ff", "UNLISTEN *", "9348a760200458ff", "NOTIFY virtual", "92f42ef7b6fa8f62", "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)", "b7dbf54ce62af0ca", "SELECT DISTINCT id FROM mytable", "3a7e897d3710fa93", "SELECT DISTINCT ON (id) id FROM mytable", "44bc30469a1802ea", "SELECT id FROM mytable", "40991573eb85c5f6", #ifndef _MSC_VER "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)", "4a6db94fbada8341", #endif "MERGE into measurement m USING new_measurement nm ON (m.city_id = nm.city_id and m.logdate=nm.logdate) WHEN MATCHED AND nm.peaktemp IS NULL THEN DELETE WHEN MATCHED THEN UPDATE SET peaktemp = greatest(m.peaktemp, nm.peaktemp), unitsales = m.unitsales + coalesce(nm.unitsales, 0) WHEN NOT MATCHED THEN INSERT (city_id, logdate, peaktemp, unitsales) VALUES (city_id, logdate, peaktemp, unitsales)", "fe086f143f4c7ed9", "ALTER TABLE ALL IN TABLESPACE foo OWNED BY bar, quux SET TABLESPACE fred NOWAIT", "1bcfca993d29bc0f", "CREATE PUBLICATION foo FOR TABLES IN SCHEMA bar", "7dfa0872d08125e6", "COPY vistest FROM stdin FREEZE CSV", "25de297c6377cb74", "MERGE INTO customer_account ca USING (VALUES (1, 42), (2, 99)) t(customer_id, transaction_value) ON t.customer_id = ca.customer_id WHEN MATCHED THEN UPDATE SET balance = balance + transaction_value + 1 WHEN NOT MATCHED THEN INSERT (customer_id, balance) VALUES (t.customer_id, t.transaction_value)", "ff7d4d704926aae4", }; const size_t testsLength = sizeof(tests)/sizeof(*tests)/2; libpg_query-17-6.1.0/test/fuzz/000077500000000000000000000000001477334012600162515ustar00rootroot00000000000000libpg_query-17-6.1.0/test/fuzz/fuzz_parser.c000066400000000000000000000006531477334012600207730ustar00rootroot00000000000000#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-17-6.1.0/test/normalize.c000066400000000000000000000013371477334012600174230ustar00rootroot00000000000000#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-17-6.1.0/test/normalize_tests.c000066400000000000000000000114271477334012600206460ustar00rootroot00000000000000// NOTE: make sure to keep this in sync with normalize_utility_tests.c const char* tests[] = { "SELECT 1", "SELECT $1", "SELECT $1, 1", "SELECT $1, $2", "CREATE ROLE postgres PASSWORD 'xyz'", "CREATE ROLE postgres 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", "ALTER ROLE postgres LOGIN SUPERUSER ENCRYPTED PASSWORD 'xyz'", "ALTER ROLE postgres LOGIN SUPERUSER ENCRYPTED PASSWORD $1", "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))", "CREATE OR REPLACE FUNCTION pg_temp.testfunc(OUT response \"mytable\", OUT sequelize_caught_exception text) RETURNS RECORD AS $func_12345$ BEGIN INSERT INTO \"mytable\" (\"mycolumn\") VALUES ('myvalue') RETURNING * INTO response; EXCEPTION WHEN unique_violation THEN GET STACKED DIAGNOSTICS sequelize_caught_exception = PG_EXCEPTION_DETAIL; END $func_12345$ LANGUAGE plpgsql; SELECT (testfunc.response).\"mycolumn\", testfunc.sequelize_caught_exception FROM pg_temp.testfunc(); DROP FUNCTION IF EXISTS pg_temp.testfunc();", "CREATE OR REPLACE FUNCTION pg_temp.testfunc(OUT response \"mytable\", OUT sequelize_caught_exception text) RETURNS RECORD AS $1 LANGUAGE plpgsql; SELECT (testfunc.response).\"mycolumn\", testfunc.sequelize_caught_exception FROM pg_temp.testfunc(); DROP FUNCTION IF EXISTS pg_temp.testfunc();", "CREATE PROCEDURE insert_data(a integer, b integer) LANGUAGE SQL AS $$ INSERT INTO tbl VALUES (a); INSERT INTO tbl VALUES (b); $$", "CREATE PROCEDURE insert_data(a integer, b integer) LANGUAGE SQL AS $1", "DO $$DECLARE r record; BEGIN FOR r IN SELECT table_schema, table_name FROM information_schema.tables WHERE table_type = 'VIEW' AND table_schema = 'public' LOOP EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; END LOOP; END$$", "DO $1", "CREATE SUBSCRIPTION mysub CONNECTION 'host=192.168.1.50 port=5432 user=foo dbname=foodb' PUBLICATION mypublication, insert_only", "CREATE SUBSCRIPTION mysub CONNECTION $1 PUBLICATION mypublication, insert_only", "ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only", "ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only", "ALTER SUBSCRIPTION mysub CONNECTION 'host=192.168.1.50 port=5432 user=foo dbname=foodb'", "ALTER SUBSCRIPTION mysub CONNECTION $1", "CREATE USER MAPPING FOR bob SERVER foo OPTIONS (user 'bob', password 'secret')", "CREATE USER MAPPING FOR bob SERVER foo OPTIONS (user $1, password $2)", "ALTER USER MAPPING FOR bob SERVER foo OPTIONS (SET password 'public')", "ALTER USER MAPPING FOR bob SERVER foo OPTIONS (SET password $1)", "MERGE into measurement m USING new_measurement nm ON (m.city_id = nm.city_id and m.logdate=nm.logdate) WHEN MATCHED AND nm.peaktemp IS NULL THEN DELETE WHEN MATCHED THEN UPDATE SET peaktemp = greatest(m.peaktemp, nm.peaktemp), unitsales = m.unitsales + coalesce(nm.unitsales, 0) WHEN NOT MATCHED THEN INSERT (city_id, logdate, peaktemp, unitsales) VALUES (city_id, logdate, peaktemp, unitsales)", "MERGE into measurement m USING new_measurement nm ON (m.city_id = nm.city_id and m.logdate=nm.logdate) WHEN MATCHED AND nm.peaktemp IS NULL THEN DELETE WHEN MATCHED THEN UPDATE SET peaktemp = greatest(m.peaktemp, nm.peaktemp), unitsales = m.unitsales + coalesce(nm.unitsales, $1) WHEN NOT MATCHED THEN INSERT (city_id, logdate, peaktemp, unitsales) VALUES (city_id, logdate, peaktemp, unitsales)", // 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", "SELECT 1; ALTER USER a WITH PASSWORD 'b'", "SELECT $1; ALTER USER a WITH PASSWORD $2", }; size_t testsLength = __LINE__ - 7; libpg_query-17-6.1.0/test/normalize_utility.c000066400000000000000000000013571477334012600212100ustar00rootroot00000000000000#include #include #include #include #include #include "normalize_utility_tests.c" int main() { size_t i; bool ret_code = 0; for (i = 0; i < testsLength; i += 2) { PgQueryNormalizeResult result = pg_query_normalize_utility(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-17-6.1.0/test/normalize_utility_tests.c000066400000000000000000000127231477334012600224310ustar00rootroot00000000000000// This contains all the same tests as normalize_tests.c, but only expecting that // utility statments are normalized. const char* tests[] = { "SELECT 1", "SELECT 1", "SELECT $1, 1", "SELECT $1, 1", "CREATE ROLE postgres PASSWORD 'xyz'", "CREATE ROLE postgres 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", "ALTER ROLE postgres LOGIN SUPERUSER ENCRYPTED PASSWORD 'xyz'", "ALTER ROLE postgres LOGIN SUPERUSER ENCRYPTED PASSWORD $1", "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 = 'foo' GROUP BY 1, 'bar' ORDER BY 1, 'cafe'", "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('day', created_at at time zone 'US/Pacific')", "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('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 CAST('abc' as varchar(50))", "SELECT CAST('abc' as varchar(50))", "CREATE OR REPLACE FUNCTION pg_temp.testfunc(OUT response \"mytable\", OUT sequelize_caught_exception text) RETURNS RECORD AS $func_12345$ BEGIN INSERT INTO \"mytable\" (\"mycolumn\") VALUES ('myvalue') RETURNING * INTO response; EXCEPTION WHEN unique_violation THEN GET STACKED DIAGNOSTICS sequelize_caught_exception = PG_EXCEPTION_DETAIL; END $func_12345$ LANGUAGE plpgsql; SELECT (testfunc.response).\"mycolumn\", testfunc.sequelize_caught_exception FROM pg_temp.testfunc(); DROP FUNCTION IF EXISTS pg_temp.testfunc();", "CREATE OR REPLACE FUNCTION pg_temp.testfunc(OUT response \"mytable\", OUT sequelize_caught_exception text) RETURNS RECORD AS $func_12345$ BEGIN INSERT INTO \"mytable\" (\"mycolumn\") VALUES ('myvalue') RETURNING * INTO response; EXCEPTION WHEN unique_violation THEN GET STACKED DIAGNOSTICS sequelize_caught_exception = PG_EXCEPTION_DETAIL; END $func_12345$ LANGUAGE plpgsql; SELECT (testfunc.response).\"mycolumn\", testfunc.sequelize_caught_exception FROM pg_temp.testfunc(); DROP FUNCTION IF EXISTS pg_temp.testfunc();", "CREATE PROCEDURE insert_data(a integer, b integer) LANGUAGE SQL AS $$ INSERT INTO tbl VALUES (a); INSERT INTO tbl VALUES (b); $$", "CREATE PROCEDURE insert_data(a integer, b integer) LANGUAGE SQL AS $$ INSERT INTO tbl VALUES (a); INSERT INTO tbl VALUES (b); $$", "DO $$DECLARE r record; BEGIN FOR r IN SELECT table_schema, table_name FROM information_schema.tables WHERE table_type = 'VIEW' AND table_schema = 'public' LOOP EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; END LOOP; END$$", "DO $$DECLARE r record; BEGIN FOR r IN SELECT table_schema, table_name FROM information_schema.tables WHERE table_type = 'VIEW' AND table_schema = 'public' LOOP EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; END LOOP; END$$", "CREATE SUBSCRIPTION mysub CONNECTION 'host=192.168.1.50 port=5432 user=foo dbname=foodb' PUBLICATION mypublication, insert_only", "CREATE SUBSCRIPTION mysub CONNECTION $1 PUBLICATION mypublication, insert_only", "ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only", "ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only", "ALTER SUBSCRIPTION mysub CONNECTION 'host=192.168.1.50 port=5432 user=foo dbname=foodb'", "ALTER SUBSCRIPTION mysub CONNECTION $1", "CREATE USER MAPPING FOR bob SERVER foo OPTIONS (user 'bob', password 'secret')", "CREATE USER MAPPING FOR bob SERVER foo OPTIONS (user $1, password $2)", "ALTER USER MAPPING FOR bob SERVER foo OPTIONS (SET password 'public')", "ALTER USER MAPPING FOR bob SERVER foo OPTIONS (SET password $1)", "MERGE into measurement m USING new_measurement nm ON (m.city_id = nm.city_id and m.logdate=nm.logdate) WHEN MATCHED AND nm.peaktemp IS NULL THEN DELETE WHEN MATCHED THEN UPDATE SET peaktemp = greatest(m.peaktemp, nm.peaktemp), unitsales = m.unitsales + coalesce(nm.unitsales, 0) WHEN NOT MATCHED THEN INSERT (city_id, logdate, peaktemp, unitsales) VALUES (city_id, logdate, peaktemp, unitsales)", "MERGE into measurement m USING new_measurement nm ON (m.city_id = nm.city_id and m.logdate=nm.logdate) WHEN MATCHED AND nm.peaktemp IS NULL THEN DELETE WHEN MATCHED THEN UPDATE SET peaktemp = greatest(m.peaktemp, nm.peaktemp), unitsales = m.unitsales + coalesce(nm.unitsales, 0) WHEN NOT MATCHED THEN INSERT (city_id, logdate, peaktemp, unitsales) VALUES (city_id, logdate, peaktemp, unitsales)", // 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 = 123", "FETCH 1000 FROM cursor_a", "FETCH 1000 FROM cursor_a", "CLOSE cursor_a", "CLOSE cursor_a", "SELECT 1; ALTER USER a WITH PASSWORD 'b'", "SELECT 1; ALTER USER a WITH PASSWORD $1", }; size_t testsLength = __LINE__ - 8; libpg_query-17-6.1.0/test/parse.c000066400000000000000000000012741477334012600165350ustar00rootroot00000000000000#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-17-6.1.0/test/parse_opts.c000066400000000000000000000014151477334012600175770ustar00rootroot00000000000000#include #include #include #include #include #include "parse_opts_tests.c" int main() { size_t i; bool ret_code = 0; for (i = 0; i < testsLength; i += 3) { PgQueryParseMode mode = atoi(tests[i+1]); PgQueryParseResult result = pg_query_parse_opts(tests[i], mode); if (result.error) { ret_code = -1; printf("%s\n", result.error->message); } else if (strcmp(result.parse_tree, tests[i + 2]) == 0) { printf("."); } else { ret_code = -1; printf("INVALID result for \"%s\" with %d mode\nexpected: %s\n actual: %s\n", tests[i], mode, tests[i + 2], result.parse_tree); } pg_query_free_parse_result(result); } printf("\n"); pg_query_exit(); return ret_code; } libpg_query-17-6.1.0/test/parse_opts_tests.c000066400000000000000000000121151477334012600210200ustar00rootroot00000000000000const char* tests[] = { "SELECT 1", "0", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"ival\":{\"ival\":1},\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "integer", "1", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"List\":{\"items\":[{\"String\":{\"sval\":\"pg_catalog\"}},{\"String\":{\"sval\":\"int4\"}}]}}}]}", "character varying(32)", "1", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"List\":{\"items\":[{\"String\":{\"sval\":\"pg_catalog\"}},{\"String\":{\"sval\":\"varchar\"}}]}}}]}", "EXISTS(SELECT 1)", "2", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"SubLink\":{\"subLinkType\":\"EXISTS_SUBLINK\",\"subselect\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"ival\":{\"ival\":1},\"location\":14}},\"location\":14}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}}}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "v_version IS NULL", "2", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"NullTest\":{\"arg\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"v_version\"}}]}},\"nulltesttype\":\"IS_NULL\",\"location\":10}}}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "pos:= instr($1, $2, 1)", "3", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"PLAssignStmt\":{\"name\":\"pos\",\"nnames\":1,\"val\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"sval\":\"instr\"}}],\"args\":[{\"ParamRef\":{\"number\":1,\"location\":12}},{\"ParamRef\":{\"number\":2,\"location\":16}},{\"A_Const\":{\"ival\":{\"ival\":1},\"location\":20}}],\"funcformat\":\"COERCE_EXPLICIT_CALL\",\"location\":6}},\"location\":6}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}}]}", "temp_str := substring(string FROM beg_index)", "3", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"PLAssignStmt\":{\"name\":\"temp_str\",\"nnames\":1,\"val\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"sval\":\"pg_catalog\"}},{\"String\":{\"sval\":\"substring\"}}],\"args\":[{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"string\"}}],\"location\":22}},{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"beg_index\"}}],\"location\":34}}],\"funcformat\":\"COERCE_SQL_SYNTAX\",\"location\":12}},\"location\":12}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}}]}", "v3.c1 := 4", "4", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"PLAssignStmt\":{\"name\":\"v3\",\"indirection\":[{\"String\":{\"sval\":\"c1\"}}],\"nnames\":2,\"val\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"ival\":{\"ival\":4},\"location\":9}},\"location\":9}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}}]}", "NEW.name = upper(cleanString(NEW.name))", "4", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"PLAssignStmt\":{\"name\":\"new\",\"indirection\":[{\"String\":{\"sval\":\"name\"}}],\"nnames\":2,\"val\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"sval\":\"upper\"}}],\"args\":[{\"FuncCall\":{\"funcname\":[{\"String\":{\"sval\":\"cleanstring\"}}],\"args\":[{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"new\"}},{\"String\":{\"sval\":\"name\"}}],\"location\":29}}],\"funcformat\":\"COERCE_EXPLICIT_CALL\",\"location\":17}}],\"funcformat\":\"COERCE_EXPLICIT_CALL\",\"location\":11}},\"location\":11}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}}]}", "NEW.author.first_name = upper(cleanString(NEW.author.first_name))", "5", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"PLAssignStmt\":{\"name\":\"new\",\"indirection\":[{\"String\":{\"sval\":\"author\"}},{\"String\":{\"sval\":\"first_name\"}}],\"nnames\":3,\"val\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"sval\":\"upper\"}}],\"args\":[{\"FuncCall\":{\"funcname\":[{\"String\":{\"sval\":\"cleanstring\"}}],\"args\":[{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"new\"}},{\"String\":{\"sval\":\"author\"}},{\"String\":{\"sval\":\"first_name\"}}],\"location\":42}}],\"funcformat\":\"COERCE_EXPLICIT_CALL\",\"location\":30}}],\"funcformat\":\"COERCE_EXPLICIT_CALL\",\"location\":24}},\"location\":24}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}}]}", "SELECT '\\''", "96", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"sval\":{\"sval\":\"'\"},\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "v3.c1 := '\\''", "100", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"PLAssignStmt\":{\"name\":\"v3\",\"indirection\":[{\"String\":{\"sval\":\"c1\"}}],\"nnames\":2,\"val\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"sval\":{\"sval\":\"'\"},\"location\":9}},\"location\":9}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}}]}", }; size_t testsLength = __LINE__ - 4; libpg_query-17-6.1.0/test/parse_plpgsql.c000066400000000000000000000025531477334012600203000ustar00rootroot00000000000000#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 = malloc(sample_stat.st_size + 1); read(fd, sample_buffer, sample_stat.st_size); sample_buffer[sample_stat.st_size] = 0; if (sample_buffer != (void *) - 1) { result = pg_query_parse_plpgsql(sample_buffer); free(sample_buffer); close(fd); } else { printf("Could not read 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-17-6.1.0/test/parse_protobuf.c000066400000000000000000000014171477334012600204540ustar00rootroot00000000000000#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-17-6.1.0/test/parse_protobuf_opts.c000066400000000000000000000011251477334012600215150ustar00rootroot00000000000000#include #include #include #include #include #include "parse_opts_tests.c" int main() { size_t i; bool ret_code = 0; for (i = 0; i < testsLength; i += 3) { PgQueryParseMode mode = atoi(tests[i+1]); PgQueryProtobufParseResult result = pg_query_parse_protobuf_opts(tests[i], mode); if (result.error) { ret_code = -1; printf("%s\n", result.error->message); } else { printf("."); } pg_query_free_protobuf_parse_result(result); } printf("\n"); pg_query_exit(); return ret_code; } libpg_query-17-6.1.0/test/parse_tests.c000066400000000000000000000574661477334012600177750ustar00rootroot00000000000000const char* tests[] = { "SELECT FALSE", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"boolval\":{},\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT NULL", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"isnull\":true,\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT 0", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"ival\":{},\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT 1", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"ival\":{\"ival\":1},\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT -1", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"ival\":{\"ival\":-1},\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT 1; SELECT 2", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"ival\":{\"ival\":1},\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}},\"stmt_len\":8},{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"ival\":{\"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\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"sval\":\"sum\"}}],\"args\":[{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"unique1\"}}],\"location\":11}}],\"agg_filter\":{\"SubLink\":{\"subLinkType\":\"ANY_SUBLINK\",\"testexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"unique1\"}}],\"location\":34}},\"subselect\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"unique1\"}}],\"location\":53}},\"location\":53}}],\"fromClause\":[{\"RangeVar\":{\"relname\":\"onek\",\"inh\":true,\"relpersistence\":\"p\",\"location\":66}}],\"whereClause\":{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"sval\":\"\\u003c\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"unique1\"}}],\"location\":77}},\"rexpr\":{\"A_Const\":{\"ival\":{\"ival\":100},\"location\":87}},\"location\":85}},\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}},\"location\":42}},\"funcformat\":\"COERCE_EXPLICIT_CALL\",\"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\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"sval\":\"sum\"}}],\"args\":[{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"unique1\"}}],\"location\":11}}],\"agg_filter\":{\"SubLink\":{\"subLinkType\":\"ANY_SUBLINK\",\"testexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"unique1\"}}],\"location\":34}},\"operName\":[{\"String\":{\"sval\":\"=\"}}],\"subselect\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"unique1\"}}],\"location\":56}},\"location\":56}}],\"fromClause\":[{\"RangeVar\":{\"relname\":\"onek\",\"inh\":true,\"relpersistence\":\"p\",\"location\":69}}],\"whereClause\":{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"sval\":\"\\u003c\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"unique1\"}}],\"location\":80}},\"rexpr\":{\"A_Const\":{\"ival\":{\"ival\":100},\"location\":90}},\"location\":88}},\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}},\"location\":42}},\"funcformat\":\"COERCE_EXPLICIT_CALL\",\"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\":170004,\"stmts\":[{\"stmt\":{\"CreateForeignTableStmt\":{\"base\":{\"relation\":{\"relname\":\"films\",\"inh\":true,\"relpersistence\":\"p\",\"location\":21},\"tableElts\":[{\"ColumnDef\":{\"colname\":\"code\",\"typeName\":{\"names\":[{\"String\":{\"sval\":\"pg_catalog\"}},{\"String\":{\"sval\":\"bpchar\"}}],\"typmods\":[{\"A_Const\":{\"ival\":{\"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\":{\"sval\":\"pg_catalog\"}},{\"String\":{\"sval\":\"varchar\"}}],\"typmods\":[{\"A_Const\":{\"ival\":{\"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\":{\"sval\":\"pg_catalog\"}},{\"String\":{\"sval\":\"int4\"}}],\"typemod\":-1,\"location\":83},\"is_local\":true,\"constraints\":[{\"Constraint\":{\"contype\":\"CONSTR_NOTNULL\",\"location\":91}}],\"location\":79}},{\"ColumnDef\":{\"colname\":\"date_prod\",\"typeName\":{\"names\":[{\"String\":{\"sval\":\"date\"}}],\"typemod\":-1,\"location\":111},\"is_local\":true,\"location\":101}},{\"ColumnDef\":{\"colname\":\"kind\",\"typeName\":{\"names\":[{\"String\":{\"sval\":\"pg_catalog\"}},{\"String\":{\"sval\":\"varchar\"}}],\"typmods\":[{\"A_Const\":{\"ival\":{\"ival\":10},\"location\":130}}],\"typemod\":-1,\"location\":122},\"is_local\":true,\"location\":117}},{\"ColumnDef\":{\"colname\":\"len\",\"typeName\":{\"names\":[{\"String\":{\"sval\":\"pg_catalog\"}},{\"String\":{\"sval\":\"interval\"}}],\"typmods\":[{\"A_Const\":{\"ival\":{\"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\":170004,\"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\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"sval\":\"parse_ident\"}}],\"args\":[{\"A_Const\":{\"sval\":{\"sval\":\"\\\"c\\\".X XXXX\\u0002XXXXXX\"},\"location\":19}}],\"funcformat\":\"COERCE_EXPLICIT_CALL\",\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "ALTER ROLE postgres LOGIN SUPERUSER PASSWORD 'xyz'", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"AlterRoleStmt\":{\"role\":{\"roletype\":\"ROLESPEC_CSTRING\",\"rolename\":\"postgres\",\"location\":11},\"options\":[{\"DefElem\":{\"defname\":\"canlogin\",\"arg\":{\"Boolean\":{\"boolval\":true}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":20}},{\"DefElem\":{\"defname\":\"superuser\",\"arg\":{\"Boolean\":{\"boolval\":true}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":26}},{\"DefElem\":{\"defname\":\"password\",\"arg\":{\"String\":{\"sval\":\"xyz\"}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":36}}],\"action\":1}}}]}", "SELECT extract($1 FROM $2)", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"sval\":\"pg_catalog\"}},{\"String\":{\"sval\":\"extract\"}}],\"args\":[{\"ParamRef\":{\"number\":1,\"location\":15}},{\"ParamRef\":{\"number\":2,\"location\":23}}],\"funcformat\":\"COERCE_SQL_SYNTAX\",\"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\":170004,\"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\":{\"ival\":{\"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\":170004,\"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\":170004,\"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\":170004,\"stmts\":[{\"stmt\":{\"VariableSetStmt\":{\"kind\":\"VAR_SET_VALUE\",\"name\":\"search_path\",\"args\":[{\"ParamRef\":{\"number\":3,\"location\":11}}]}}}]}", "SET ROLE $4", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"VariableSetStmt\":{\"kind\":\"VAR_SET_VALUE\",\"name\":\"role\",\"args\":[{\"ParamRef\":{\"number\":4,\"location\":9}}]}}}]}", "SET SESSION AUTHORIZATION $5", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"VariableSetStmt\":{\"kind\":\"VAR_SET_VALUE\",\"name\":\"session_authorization\",\"args\":[{\"ParamRef\":{\"number\":5,\"location\":26}}]}}}]}", "SELECT EXTRACT($1 FROM TIMESTAMP $2)", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"sval\":\"pg_catalog\"}},{\"String\":{\"sval\":\"extract\"}}],\"args\":[{\"ParamRef\":{\"number\":1,\"location\":15}},{\"TypeCast\":{\"arg\":{\"ParamRef\":{\"number\":2,\"location\":33}},\"typeName\":{\"names\":[{\"String\":{\"sval\":\"pg_catalog\"}},{\"String\":{\"sval\":\"timestamp\"}}],\"typemod\":-1,\"location\":23},\"location\":-1}}],\"funcformat\":\"COERCE_SQL_SYNTAX\",\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT DATE $1", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"TypeCast\":{\"arg\":{\"ParamRef\":{\"number\":1,\"location\":12}},\"typeName\":{\"names\":[{\"String\":{\"sval\":\"date\"}}],\"typemod\":-1,\"location\":7},\"location\":-1}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT INTERVAL $1", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"TypeCast\":{\"arg\":{\"ParamRef\":{\"number\":1,\"location\":16}},\"typeName\":{\"names\":[{\"String\":{\"sval\":\"pg_catalog\"}},{\"String\":{\"sval\":\"interval\"}}],\"typemod\":-1,\"location\":7},\"location\":-1}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT INTERVAL $1 YEAR", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"TypeCast\":{\"arg\":{\"ParamRef\":{\"number\":1,\"location\":16}},\"typeName\":{\"names\":[{\"String\":{\"sval\":\"pg_catalog\"}},{\"String\":{\"sval\":\"interval\"}}],\"typmods\":[{\"A_Const\":{\"ival\":{\"ival\":4},\"location\":19}}],\"typemod\":-1,\"location\":7},\"location\":-1}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT INTERVAL (6) $1", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"TypeCast\":{\"arg\":{\"ParamRef\":{\"number\":1,\"location\":20}},\"typeName\":{\"names\":[{\"String\":{\"sval\":\"pg_catalog\"}},{\"String\":{\"sval\":\"interval\"}}],\"typmods\":[{\"A_Const\":{\"ival\":{\"ival\":32767},\"location\":-1}},{\"A_Const\":{\"ival\":{\"ival\":6},\"location\":17}}],\"typemod\":-1,\"location\":7},\"location\":-1}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SET search_path = $1", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"VariableSetStmt\":{\"kind\":\"VAR_SET_VALUE\",\"name\":\"search_path\",\"args\":[{\"ParamRef\":{\"number\":1,\"location\":18}}]}}}]}", "ALTER ROLE postgres LOGIN SUPERUSER PASSWORD $1", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"AlterRoleStmt\":{\"role\":{\"roletype\":\"ROLESPEC_CSTRING\",\"rolename\":\"postgres\",\"location\":11},\"options\":[{\"DefElem\":{\"defname\":\"canlogin\",\"arg\":{\"Boolean\":{\"boolval\":true}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":20}},{\"DefElem\":{\"defname\":\"superuser\",\"arg\":{\"Boolean\":{\"boolval\":true}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":26}},{\"DefElem\":{\"defname\":\"password\",\"arg\":{\"ParamRef\":{\"number\":1,\"location\":45}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":36}}],\"action\":1}}}]}", "WITH a AS (SELECT * FROM x WHERE x.y = $1 AND x.z = 1) SELECT * FROM a WHERE b = 5", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"ColumnRef\":{\"fields\":[{\"A_Star\":{}}],\"location\":62}},\"location\":62}}],\"fromClause\":[{\"RangeVar\":{\"relname\":\"a\",\"inh\":true,\"relpersistence\":\"p\",\"location\":69}}],\"whereClause\":{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"sval\":\"=\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"b\"}}],\"location\":77}},\"rexpr\":{\"A_Const\":{\"ival\":{\"ival\":5},\"location\":81}},\"location\":79}},\"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\":{\"sval\":\"=\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"x\"}},{\"String\":{\"sval\":\"y\"}}],\"location\":33}},\"rexpr\":{\"ParamRef\":{\"number\":1,\"location\":39}},\"location\":37}},{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"sval\":\"=\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"x\"}},{\"String\":{\"sval\":\"z\"}}],\"location\":46}},\"rexpr\":{\"A_Const\":{\"ival\":{\"ival\":1},\"location\":52}},\"location\":50}}],\"location\":42}},\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}},\"location\":5}}]},\"op\":\"SETOP_NONE\"}}}]}", "SELECT count(*) from testjsonb WHERE j->'array' ? 'bar'", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"sval\":\"count\"}}],\"agg_star\":true,\"funcformat\":\"COERCE_EXPLICIT_CALL\",\"location\":7}},\"location\":7}}],\"fromClause\":[{\"RangeVar\":{\"relname\":\"testjsonb\",\"inh\":true,\"relpersistence\":\"p\",\"location\":21}}],\"whereClause\":{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"sval\":\"?\"}}],\"lexpr\":{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"sval\":\"-\\u003e\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"j\"}}],\"location\":38}},\"rexpr\":{\"A_Const\":{\"sval\":{\"sval\":\"array\"},\"location\":41}},\"location\":39}},\"rexpr\":{\"A_Const\":{\"sval\":{\"sval\":\"bar\"},\"location\":51}},\"location\":49}},\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT DISTINCT a FROM b", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"distinctClause\":[{}],\"targetList\":[{\"ResTarget\":{\"val\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"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\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"ColumnRef\":{\"fields\":[{\"A_Star\":{}}],\"location\":7}},\"location\":7}}],\"fromClause\":[{\"RangeFunction\":{\"functions\":[{\"List\":{\"items\":[{\"FuncCall\":{\"funcname\":[{\"String\":{\"sval\":\"generate_series\"}}],\"args\":[{\"A_Const\":{\"ival\":{\"ival\":1},\"location\":30}},{\"A_Const\":{\"ival\":{\"ival\":2},\"location\":33}}],\"funcformat\":\"COERCE_EXPLICIT_CALL\",\"location\":14}},{}]}}]}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT 1 + 1", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"sval\":\"+\"}}],\"lexpr\":{\"A_Const\":{\"ival\":{\"ival\":1},\"location\":7}},\"rexpr\":{\"A_Const\":{\"ival\":{\"ival\":1},\"location\":11}},\"location\":9}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "COPY vistest FROM stdin FREEZE CSV", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"CopyStmt\":{\"relation\":{\"relname\":\"vistest\",\"inh\":true,\"relpersistence\":\"p\",\"location\":5},\"is_from\":true,\"options\":[{\"DefElem\":{\"defname\":\"freeze\",\"arg\":{\"Boolean\":{\"boolval\":true}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":24}},{\"DefElem\":{\"defname\":\"format\",\"arg\":{\"String\":{\"sval\":\"csv\"}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":31}}]}}}]}", "MERGE into measurement m USING new_measurement nm ON (m.city_id = nm.city_id and m.logdate=nm.logdate) WHEN MATCHED AND nm.peaktemp IS NULL THEN DELETE WHEN MATCHED THEN UPDATE SET peaktemp = greatest(m.peaktemp, nm.peaktemp), unitsales = m.unitsales + coalesce(nm.unitsales, 0) WHEN NOT MATCHED THEN INSERT (city_id, logdate, peaktemp, unitsales) VALUES (city_id, logdate, peaktemp, unitsales)", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"MergeStmt\":{\"relation\":{\"relname\":\"measurement\",\"inh\":true,\"relpersistence\":\"p\",\"alias\":{\"aliasname\":\"m\"},\"location\":11},\"sourceRelation\":{\"RangeVar\":{\"relname\":\"new_measurement\",\"inh\":true,\"relpersistence\":\"p\",\"alias\":{\"aliasname\":\"nm\"},\"location\":31}},\"joinCondition\":{\"BoolExpr\":{\"boolop\":\"AND_EXPR\",\"args\":[{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"sval\":\"=\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"m\"}},{\"String\":{\"sval\":\"city_id\"}}],\"location\":54}},\"rexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"nm\"}},{\"String\":{\"sval\":\"city_id\"}}],\"location\":66}},\"location\":64}},{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"sval\":\"=\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"m\"}},{\"String\":{\"sval\":\"logdate\"}}],\"location\":81}},\"rexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"nm\"}},{\"String\":{\"sval\":\"logdate\"}}],\"location\":91}},\"location\":90}}],\"location\":77}},\"mergeWhenClauses\":[{\"MergeWhenClause\":{\"matchKind\":\"MERGE_WHEN_MATCHED\",\"commandType\":\"CMD_DELETE\",\"override\":\"OVERRIDING_NOT_SET\",\"condition\":{\"NullTest\":{\"arg\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"nm\"}},{\"String\":{\"sval\":\"peaktemp\"}}],\"location\":120}},\"nulltesttype\":\"IS_NULL\",\"location\":132}}}},{\"MergeWhenClause\":{\"matchKind\":\"MERGE_WHEN_MATCHED\",\"commandType\":\"CMD_UPDATE\",\"override\":\"OVERRIDING_NOT_SET\",\"targetList\":[{\"ResTarget\":{\"name\":\"peaktemp\",\"val\":{\"MinMaxExpr\":{\"op\":\"IS_GREATEST\",\"args\":[{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"m\"}},{\"String\":{\"sval\":\"peaktemp\"}}],\"location\":201}},{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"nm\"}},{\"String\":{\"sval\":\"peaktemp\"}}],\"location\":213}}],\"location\":192}},\"location\":181}},{\"ResTarget\":{\"name\":\"unitsales\",\"val\":{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"sval\":\"+\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"m\"}},{\"String\":{\"sval\":\"unitsales\"}}],\"location\":239}},\"rexpr\":{\"CoalesceExpr\":{\"args\":[{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"nm\"}},{\"String\":{\"sval\":\"unitsales\"}}],\"location\":262}},{\"A_Const\":{\"ival\":{},\"location\":276}}],\"location\":253}},\"location\":251}},\"location\":227}}]}},{\"MergeWhenClause\":{\"matchKind\":\"MERGE_WHEN_NOT_MATCHED_BY_TARGET\",\"commandType\":\"CMD_INSERT\",\"override\":\"OVERRIDING_NOT_SET\",\"targetList\":[{\"ResTarget\":{\"name\":\"city_id\",\"location\":309}},{\"ResTarget\":{\"name\":\"logdate\",\"location\":318}},{\"ResTarget\":{\"name\":\"peaktemp\",\"location\":327}},{\"ResTarget\":{\"name\":\"unitsales\",\"location\":337}}],\"values\":[{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"city_id\"}}],\"location\":356}},{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"logdate\"}}],\"location\":365}},{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"peaktemp\"}}],\"location\":374}},{\"ColumnRef\":{\"fields\":[{\"String\":{\"sval\":\"unitsales\"}}],\"location\":384}}]}}]}}}]}", "ALTER TABLE ALL IN TABLESPACE foo OWNED BY bar, quux SET TABLESPACE fred NOWAIT", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"AlterTableMoveAllStmt\":{\"orig_tablespacename\":\"foo\",\"objtype\":\"OBJECT_TABLE\",\"roles\":[{\"RoleSpec\":{\"roletype\":\"ROLESPEC_CSTRING\",\"rolename\":\"bar\",\"location\":43}},{\"RoleSpec\":{\"roletype\":\"ROLESPEC_CSTRING\",\"rolename\":\"quux\",\"location\":48}}],\"new_tablespacename\":\"fred\",\"nowait\":true}}}]}", "CREATE PUBLICATION foo FOR TABLES IN SCHEMA bar", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"CreatePublicationStmt\":{\"pubname\":\"foo\",\"pubobjects\":[{\"PublicationObjSpec\":{\"pubobjtype\":\"PUBLICATIONOBJ_TABLES_IN_SCHEMA\",\"name\":\"bar\",\"location\":44}}]}}}]}", "SELECT 123 AS abc where 456=$1OR 10=11", "{\"version\":170004,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"name\":\"abc\",\"val\":{\"A_Const\":{\"ival\":{\"ival\":123},\"location\":7}},\"location\":7}}],\"whereClause\":{\"BoolExpr\":{\"boolop\":\"OR_EXPR\",\"args\":[{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"sval\":\"=\"}}],\"lexpr\":{\"A_Const\":{\"ival\":{\"ival\":456},\"location\":24}},\"rexpr\":{\"ParamRef\":{\"number\":1,\"location\":28}},\"location\":27}},{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"sval\":\"=\"}}],\"lexpr\":{\"A_Const\":{\"ival\":{\"ival\":10},\"location\":33}},\"rexpr\":{\"A_Const\":{\"ival\":{\"ival\":11},\"location\":36}},\"location\":35}}],\"location\":30}},\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", }; size_t testsLength = __LINE__ - 4; libpg_query-17-6.1.0/test/plpgsql_samples.expected.json000066400000000000000000001055651477334012600231700ustar00rootroot00000000000000[ {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"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","parseMode":0}}}},{"PLpgSQL_stmt_return":{"lineno":11}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"$1","datatype":{"PLpgSQL_type":{"typname":"date"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}}],"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)","parseMode":0}}}},{"PLpgSQL_stmt_if":{"lineno":10,"cond":{"PLpgSQL_expr":{"query":"NOT FOUND","parseMode":2}},"then_body":[{"PLpgSQL_stmt_raise":{"lineno":11,"elog_level":21,"message":"No flight at %.","params":[{"PLpgSQL_expr":{"query":"$1","parseMode":2}}]}}]}},{"PLpgSQL_stmt_return":{"lineno":14}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"v_name","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"v_version","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":2,"body":[{"PLpgSQL_stmt_if":{"lineno":3,"cond":{"PLpgSQL_expr":{"query":"v_version IS NULL","parseMode":2}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":4,"expr":{"PLpgSQL_expr":{"query":"v_name","parseMode":2}}}}]}},{"PLpgSQL_stmt_return":{"lineno":6,"expr":{"PLpgSQL_expr":{"query":"v_name || '/' || v_version","parseMode":2}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"v_url","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"v_host","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"v_path","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"v_query","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"PLpgSQL_var":{"refname":"a_pos1","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"INTEGER"}}}},{"PLpgSQL_var":{"refname":"a_pos2","lineno":4,"datatype":{"PLpgSQL_type":{"typname":"INTEGER"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":5,"body":[{"PLpgSQL_stmt_assign":{"lineno":6,"varno":1,"expr":{"PLpgSQL_expr":{"query":"v_host := NULL","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":7,"varno":2,"expr":{"PLpgSQL_expr":{"query":"v_path := NULL","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":8,"varno":3,"expr":{"PLpgSQL_expr":{"query":"v_query := NULL","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":9,"varno":5,"expr":{"PLpgSQL_expr":{"query":"a_pos1 := instr(v_url, '//')","parseMode":3}}}},{"PLpgSQL_stmt_if":{"lineno":11,"cond":{"PLpgSQL_expr":{"query":"a_pos1 = 0","parseMode":2}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":12}}]}},{"PLpgSQL_stmt_assign":{"lineno":14,"varno":6,"expr":{"PLpgSQL_expr":{"query":"a_pos2 := instr(v_url, '/', a_pos1 + 2)","parseMode":3}}}},{"PLpgSQL_stmt_if":{"lineno":15,"cond":{"PLpgSQL_expr":{"query":"a_pos2 = 0","parseMode":2}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":16,"varno":1,"expr":{"PLpgSQL_expr":{"query":"v_host := substr(v_url, a_pos1 + 2)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":17,"varno":2,"expr":{"PLpgSQL_expr":{"query":"v_path := '/'","parseMode":3}}}},{"PLpgSQL_stmt_return":{"lineno":18}}]}},{"PLpgSQL_stmt_assign":{"lineno":21,"varno":1,"expr":{"PLpgSQL_expr":{"query":"v_host := substr(v_url, a_pos1 + 2, a_pos2 - a_pos1 - 2)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":22,"varno":5,"expr":{"PLpgSQL_expr":{"query":"a_pos1 := instr(v_url, '?', a_pos2 + 1)","parseMode":3}}}},{"PLpgSQL_stmt_if":{"lineno":24,"cond":{"PLpgSQL_expr":{"query":"a_pos1 = 0","parseMode":2}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":25,"varno":2,"expr":{"PLpgSQL_expr":{"query":"v_path := substr(v_url, a_pos2)","parseMode":3}}}},{"PLpgSQL_stmt_return":{"lineno":26}}]}},{"PLpgSQL_stmt_assign":{"lineno":29,"varno":2,"expr":{"PLpgSQL_expr":{"query":"v_path := substr(v_url, a_pos2, a_pos1 - a_pos2)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":30,"varno":3,"expr":{"PLpgSQL_expr":{"query":"v_query := substr(v_url, a_pos1 + 1)","parseMode":3}}}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"v_job_id","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.int4"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"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":"pg_catalog.text"}},"isconst":true}},{"PLpgSQL_var":{"refname":"sqlerrm","lineno":18,"datatype":{"PLpgSQL_type":{"typname":"pg_catalog.text"}},"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","parseMode":0}}}},{"PLpgSQL_stmt_execsql":{"lineno":7,"sqlstmt":{"PLpgSQL_expr":{"query":"SELECT count(*) FROM cs_jobs WHERE end_stamp IS NULL","parseMode":0}},"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":"a_running_job_count \u003e 0","parseMode":2}},"then_body":[{"PLpgSQL_stmt_raise":{"lineno":10,"elog_level":21,"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","parseMode":0}}}},{"PLpgSQL_stmt_execsql":{"lineno":14,"sqlstmt":{"PLpgSQL_expr":{"query":"INSERT INTO cs_active_job(job_id) VALUES (v_job_id)","parseMode":0}}}},{"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())","parseMode":0}}}}],"exceptions":{"PLpgSQL_exception_block":{"exc_list":[{"PLpgSQL_exception":{"conditions":[{"PLpgSQL_condition":{"condname":"unique_violation"}}]}}]}}}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"$1","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"$2","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"PLpgSQL_var":{"refname":"pos","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"integer"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":4,"body":[{"PLpgSQL_stmt_assign":{"lineno":5,"varno":3,"expr":{"PLpgSQL_expr":{"query":"pos:= instr($1, $2, 1)","parseMode":3}}}},{"PLpgSQL_stmt_return":{"lineno":6,"expr":{"PLpgSQL_expr":{"query":"pos","parseMode":2}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"string","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"string_to_search","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"beg_index","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.int4"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"PLpgSQL_var":{"refname":"pos","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"integer "}},"notnull":true,"default_val":{"PLpgSQL_expr":{"query":"0","parseMode":2}}}},{"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":"beg_index \u003e 0","parseMode":2}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":10,"varno":5,"expr":{"PLpgSQL_expr":{"query":"temp_str := substring(string FROM beg_index)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":11,"varno":4,"expr":{"PLpgSQL_expr":{"query":"pos := position(string_to_search IN temp_str)","parseMode":3}}}},{"PLpgSQL_stmt_if":{"lineno":13,"cond":{"PLpgSQL_expr":{"query":"pos = 0","parseMode":2}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":14,"expr":{"PLpgSQL_expr":{"query":"0","parseMode":2}}}}],"else_body":[{"PLpgSQL_stmt_return":{"lineno":16,"expr":{"PLpgSQL_expr":{"query":"pos + beg_index - 1","parseMode":2}}}}]}}],"elsif_list":[{"PLpgSQL_if_elsif":{"lineno":18,"cond":{"PLpgSQL_expr":{"query":"beg_index \u003c 0","parseMode":2}},"stmts":[{"PLpgSQL_stmt_assign":{"lineno":19,"varno":8,"expr":{"PLpgSQL_expr":{"query":"ss_length := char_length(string_to_search)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":20,"varno":7,"expr":{"PLpgSQL_expr":{"query":"length := char_length(string)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":21,"varno":6,"expr":{"PLpgSQL_expr":{"query":"beg := length + beg_index - ss_length + 2","parseMode":3}}}},{"PLpgSQL_stmt_while":{"lineno":23,"cond":{"PLpgSQL_expr":{"query":"beg \u003e 0","parseMode":2}},"body":[{"PLpgSQL_stmt_assign":{"lineno":24,"varno":5,"expr":{"PLpgSQL_expr":{"query":"temp_str := substring(string FROM beg FOR ss_length)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":25,"varno":4,"expr":{"PLpgSQL_expr":{"query":"pos := position(string_to_search IN temp_str)","parseMode":3}}}},{"PLpgSQL_stmt_if":{"lineno":27,"cond":{"PLpgSQL_expr":{"query":"pos \u003e 0","parseMode":2}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":28,"expr":{"PLpgSQL_expr":{"query":"beg","parseMode":2}}}}]}},{"PLpgSQL_stmt_assign":{"lineno":31,"varno":6,"expr":{"PLpgSQL_expr":{"query":"beg := beg - 1","parseMode":3}}}}]}},{"PLpgSQL_stmt_return":{"lineno":34,"expr":{"PLpgSQL_expr":{"query":"0","parseMode":2}}}}]}}],"else_body":[{"PLpgSQL_stmt_return":{"lineno":36,"expr":{"PLpgSQL_expr":{"query":"0","parseMode":2}}}}]}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"string","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"string_to_search","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"beg_index","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.int4"}}}},{"PLpgSQL_var":{"refname":"occur_index","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.int4"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"PLpgSQL_var":{"refname":"pos","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"integer "}},"notnull":true,"default_val":{"PLpgSQL_expr":{"query":"0","parseMode":2}}}},{"PLpgSQL_var":{"refname":"occur_number","lineno":4,"datatype":{"PLpgSQL_type":{"typname":"integer "}},"notnull":true,"default_val":{"PLpgSQL_expr":{"query":"0","parseMode":2}}}},{"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":"pg_catalog.\"integer\""}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":10,"body":[{"PLpgSQL_stmt_if":{"lineno":11,"cond":{"PLpgSQL_expr":{"query":"beg_index \u003e 0","parseMode":2}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":12,"varno":8,"expr":{"PLpgSQL_expr":{"query":"beg := beg_index","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":13,"varno":7,"expr":{"PLpgSQL_expr":{"query":"temp_str := substring(string FROM beg_index)","parseMode":3}}}},{"PLpgSQL_stmt_fori":{"lineno":15,"var":{"PLpgSQL_var":{"refname":"i","lineno":15,"datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"integer\""}}}},"lower":{"PLpgSQL_expr":{"query":"1","parseMode":2}},"upper":{"PLpgSQL_expr":{"query":"occur_index","parseMode":2}},"body":[{"PLpgSQL_stmt_assign":{"lineno":16,"varno":5,"expr":{"PLpgSQL_expr":{"query":"pos := position(string_to_search IN temp_str)","parseMode":3}}}},{"PLpgSQL_stmt_if":{"lineno":18,"cond":{"PLpgSQL_expr":{"query":"i = 1","parseMode":2}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":19,"varno":8,"expr":{"PLpgSQL_expr":{"query":"beg := beg + pos - 1","parseMode":3}}}}],"else_body":[{"PLpgSQL_stmt_assign":{"lineno":21,"varno":8,"expr":{"PLpgSQL_expr":{"query":"beg := beg + pos","parseMode":3}}}}]}},{"PLpgSQL_stmt_assign":{"lineno":24,"varno":7,"expr":{"PLpgSQL_expr":{"query":"temp_str := substring(string FROM beg + 1)","parseMode":3}}}}]}},{"PLpgSQL_stmt_if":{"lineno":27,"cond":{"PLpgSQL_expr":{"query":"pos = 0","parseMode":2}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":28,"expr":{"PLpgSQL_expr":{"query":"0","parseMode":2}}}}],"else_body":[{"PLpgSQL_stmt_return":{"lineno":30,"expr":{"PLpgSQL_expr":{"query":"beg","parseMode":2}}}}]}}],"elsif_list":[{"PLpgSQL_if_elsif":{"lineno":32,"cond":{"PLpgSQL_expr":{"query":"beg_index \u003c 0","parseMode":2}},"stmts":[{"PLpgSQL_stmt_assign":{"lineno":33,"varno":11,"expr":{"PLpgSQL_expr":{"query":"ss_length := char_length(string_to_search)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":34,"varno":10,"expr":{"PLpgSQL_expr":{"query":"length := char_length(string)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":35,"varno":8,"expr":{"PLpgSQL_expr":{"query":"beg := length + beg_index - ss_length + 2","parseMode":3}}}},{"PLpgSQL_stmt_while":{"lineno":37,"cond":{"PLpgSQL_expr":{"query":"beg \u003e 0","parseMode":2}},"body":[{"PLpgSQL_stmt_assign":{"lineno":38,"varno":7,"expr":{"PLpgSQL_expr":{"query":"temp_str := substring(string FROM beg FOR ss_length)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":39,"varno":5,"expr":{"PLpgSQL_expr":{"query":"pos := position(string_to_search IN temp_str)","parseMode":3}}}},{"PLpgSQL_stmt_if":{"lineno":41,"cond":{"PLpgSQL_expr":{"query":"pos \u003e 0","parseMode":2}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":42,"varno":6,"expr":{"PLpgSQL_expr":{"query":"occur_number := occur_number + 1","parseMode":3}}}},{"PLpgSQL_stmt_if":{"lineno":44,"cond":{"PLpgSQL_expr":{"query":"occur_number = occur_index","parseMode":2}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":45,"expr":{"PLpgSQL_expr":{"query":"beg","parseMode":2}}}}]}}]}},{"PLpgSQL_stmt_assign":{"lineno":49,"varno":8,"expr":{"PLpgSQL_expr":{"query":"beg := beg - 1","parseMode":3}}}}]}},{"PLpgSQL_stmt_return":{"lineno":52,"expr":{"PLpgSQL_expr":{"query":"0","parseMode":2}}}}]}}],"else_body":[{"PLpgSQL_stmt_return":{"lineno":54,"expr":{"PLpgSQL_expr":{"query":"0","parseMode":2}}}}]}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"enddate","datatype":{"PLpgSQL_type":{"typname":"date"}}}},{"PLpgSQL_var":{"refname":"canceled","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.bool"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":1,"body":[{"PLpgSQL_stmt_if":{"lineno":2,"cond":{"PLpgSQL_expr":{"query":"canceled = true","parseMode":2}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":3,"expr":{"PLpgSQL_expr":{"query":"null","parseMode":2}}}}],"else_body":[{"PLpgSQL_stmt_return":{"lineno":5,"expr":{"PLpgSQL_expr":{"query":"endDate","parseMode":2}}}}]}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"date_inscription","datatype":{"PLpgSQL_type":{"typname":"date"}}}},{"PLpgSQL_var":{"refname":"date_observation","datatype":{"PLpgSQL_type":{"typname":"date"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":1,"body":[{"PLpgSQL_stmt_return":{"lineno":2,"expr":{"PLpgSQL_expr":{"query":"(calcule_duree(date_inscription,date_observation) + 1)","parseMode":2}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"origine","datatype":{"PLpgSQL_type":{"typname":"date"}}}},{"PLpgSQL_var":{"refname":"atdate","datatype":{"PLpgSQL_type":{"typname":"date"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"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":"theDay := EXTRACT(DAY FROM origine)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":10,"varno":4,"expr":{"PLpgSQL_expr":{"query":"theMonth := EXTRACT(MONTH FROM origine)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":11,"varno":5,"expr":{"PLpgSQL_expr":{"query":"theYear := EXTRACT(YEAR FROM origine)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":13,"varno":6,"expr":{"PLpgSQL_expr":{"query":"theDay_now := EXTRACT(DAY FROM atDate)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":14,"varno":7,"expr":{"PLpgSQL_expr":{"query":"theMonth_now := EXTRACT(MONTH FROM atDate)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":15,"varno":8,"expr":{"PLpgSQL_expr":{"query":"theYear_now := EXTRACT(YEAR FROM atDate)","parseMode":3}}}},{"PLpgSQL_stmt_assign":{"lineno":17,"varno":5,"expr":{"PLpgSQL_expr":{"query":"theYear := theYear_now - theYear","parseMode":3}}}},{"PLpgSQL_stmt_if":{"lineno":18,"cond":{"PLpgSQL_expr":{"query":"theMonth_now \u003c= theMonth","parseMode":2}},"then_body":[{"PLpgSQL_stmt_if":{"lineno":19,"cond":{"PLpgSQL_expr":{"query":"theMonth = theMonth_now","parseMode":2}},"then_body":[{"PLpgSQL_stmt_if":{"lineno":20,"cond":{"PLpgSQL_expr":{"query":"theDay \u003e theDay_now","parseMode":2}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":21,"varno":5,"expr":{"PLpgSQL_expr":{"query":"theYear := theYear - 1","parseMode":3}}}}]}}],"else_body":[{"PLpgSQL_stmt_assign":{"lineno":24,"varno":5,"expr":{"PLpgSQL_expr":{"query":"theYear := theYear - 1","parseMode":3}}}}]}}]}},{"PLpgSQL_stmt_return":{"lineno":28,"expr":{"PLpgSQL_expr":{"query":"theYear","parseMode":2}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"uidmember","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"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","parseMode":0}},"into":true,"target":{"PLpgSQL_row":{"refname":"(unnamed row)","lineno":5,"fields":[{"name":"memberid","varno":2}]}}}},{"PLpgSQL_stmt_return":{"lineno":11,"expr":{"PLpgSQL_expr":{"query":"memberID","parseMode":2}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"memberid","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.int4"}}}},{"PLpgSQL_var":{"refname":"jobid","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.int4"}}}},{"PLpgSQL_var":{"refname":"jobend","datatype":{"PLpgSQL_type":{"typname":"date"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"PLpgSQL_rec":{"refname":"lastjob","dno":4,"lineno":2}},{"PLpgSQL_rec":{"refname":"lastemployer","dno":5,"lineno":3}},{"PLpgSQL_var":{"refname":"updatejob","lineno":4,"datatype":{"PLpgSQL_type":{"typname":"BOOL"}}}},{"PLpgSQL_recfield":{"fieldname":"jobid","recparentno":4}},{"PLpgSQL_recfield":{"fieldname":"positionheld","recparentno":5}}],"action":{"PLpgSQL_stmt_block":{"lineno":5,"body":[{"PLpgSQL_stmt_assign":{"lineno":6,"varno":6,"expr":{"PLpgSQL_expr":{"query":"updateJob := false","parseMode":3}}}},{"PLpgSQL_stmt_execsql":{"lineno":8,"sqlstmt":{"PLpgSQL_expr":{"query":"SELECT * FROM lire_lastJob(memberID) AS (jobID INT,startsupport DATE,jobEnd DATE)","parseMode":0}},"into":true,"target":{"PLpgSQL_rec":{"refname":"lastjob","dno":4,"lineno":2}}}},{"PLpgSQL_stmt_if":{"lineno":9,"cond":{"PLpgSQL_expr":{"query":"lastJob.jobID = jobID","parseMode":2}},"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))","parseMode":0}},"into":true,"target":{"PLpgSQL_rec":{"refname":"lastemployer","dno":5,"lineno":3}}}},{"PLpgSQL_stmt_if":{"lineno":23,"cond":{"PLpgSQL_expr":{"query":"lastEmployer.positionHeld IS NOT NULL","parseMode":2}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":24,"varno":6,"expr":{"PLpgSQL_expr":{"query":"updateJob := true","parseMode":3}}}},{"PLpgSQL_stmt_execsql":{"lineno":25,"sqlstmt":{"PLpgSQL_expr":{"query":"UPDATE r_perlab SET endDate = jobEnd WHERE key = lastEmployer.positionHeld","parseMode":0}}}}]}}]}},{"PLpgSQL_stmt_return":{"lineno":29,"expr":{"PLpgSQL_expr":{"query":"updateJob","parseMode":2}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"str","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"PLpgSQL_var":{"refname":"spechar","lineno":4,"datatype":{"PLpgSQL_type":{"typname":"VARCHAR[ ] "}},"default_val":{"PLpgSQL_expr":{"query":"ARRAY['à','â','é','è','ê','ë','ï','î','ô','û','ù','À','Â','É','È','Ê','Ë','Ã','ÃŽ','ô','û','ù','ç' ]","parseMode":2}}}},{"PLpgSQL_var":{"refname":"lettres","lineno":5,"datatype":{"PLpgSQL_type":{"typname":"VARCHAR[ ] "}},"default_val":{"PLpgSQL_expr":{"query":"ARRAY['a','a','e','e','e','e','i','i','o','u','u','a','a','e','e','e','e','i','i','o','u','u','c' ]","parseMode":2}}}},{"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":"23","parseMode":2}}}},{"PLpgSQL_var":{"refname":"i","lineno":12,"datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"integer\""}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":9,"body":[{"PLpgSQL_stmt_if":{"lineno":10,"cond":{"PLpgSQL_expr":{"query":"(str IS NOT NULL)","parseMode":2}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":11,"varno":4,"expr":{"PLpgSQL_expr":{"query":"resultat := str","parseMode":3}}}},{"PLpgSQL_stmt_fori":{"lineno":12,"var":{"PLpgSQL_var":{"refname":"i","lineno":12,"datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"integer\""}}}},"lower":{"PLpgSQL_expr":{"query":"1","parseMode":2}},"upper":{"PLpgSQL_expr":{"query":"nbrspechar","parseMode":2}},"body":[{"PLpgSQL_stmt_assign":{"lineno":13,"varno":4,"expr":{"PLpgSQL_expr":{"query":"resultat := regexp_replace(resultat,spechar[i],lettres[i],'g')","parseMode":3}}}}]}}]}},{"PLpgSQL_stmt_return":{"lineno":16,"expr":{"PLpgSQL_expr":{"query":"resultat","parseMode":2}}}}]}}}}, {"PLpgSQL_function":{"new_varno":1,"old_varno":2,"datums":[{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"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":"NEW.name = upper(cleanString(NEW.name))","parseMode":4}}}},{"PLpgSQL_stmt_return":{"lineno":5,"expr":{"PLpgSQL_expr":{"query":"NEW","parseMode":2}}}}]}}}}, {"PLpgSQL_function":{"new_varno":1,"old_varno":2,"datums":[{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"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)","parseMode":0}}}},{"PLpgSQL_stmt_return":{"lineno":4,"expr":{"PLpgSQL_expr":{"query":"NEW","parseMode":2}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"p_time_start","datatype":{"PLpgSQL_type":{"typname":"timestamptz"}}}},{"PLpgSQL_var":{"refname":"p_time_end","datatype":{"PLpgSQL_type":{"typname":"timestamptz"}}}},{"PLpgSQL_var":{"refname":"p_time_interval","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"interval\""}}}},{"PLpgSQL_var":{"refname":"ts","datatype":{"PLpgSQL_type":{"typname":"timestamptz"}}}},{"PLpgSQL_var":{"refname":"arbitrary_return","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.int8"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":2,"body":[{"PLpgSQL_stmt_if":{"lineno":6,"cond":{"PLpgSQL_expr":{"query":"p_time_interval IS NULL","parseMode":2}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":7,"varno":2,"expr":{"PLpgSQL_expr":{"query":"p_time_interval := interval_from_start_end(p_time_start, p_time_end)","parseMode":3}}}}]}},{"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","parseMode":0}}}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"_result","datatype":{"PLpgSQL_type":{"typname":"uuid"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"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":"_result := ARRAY( SELECT some_id FROM some_table)","parseMode":3}}}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"v_name","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"v_version","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"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":"v_version IS NULL","parseMode":2}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":7,"expr":{"PLpgSQL_expr":{"query":"v_name","parseMode":2}}}}]}},{"PLpgSQL_stmt_return":{"lineno":10,"expr":{"PLpgSQL_expr":{"query":"v_name || '/' || v_version","parseMode":2}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"str","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"varchar\""}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"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","parseMode":0}},"into":true,"target":{"PLpgSQL_rec":{"refname":"v3","dno":2,"lineno":3}}}},{"PLpgSQL_stmt_assign":{"lineno":7,"varno":4,"expr":{"PLpgSQL_expr":{"query":"v3.c1 := 4","parseMode":4}}}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":2,"body":[{"PLpgSQL_stmt_assert":{"lineno":3,"cond":{"PLpgSQL_expr":{"query":"true","parseMode":2}}}},{"PLpgSQL_stmt_assert":{"lineno":4,"cond":{"PLpgSQL_expr":{"query":"now() \u003c '2000-01-01'","parseMode":2}}}},{"PLpgSQL_stmt_assert":{"lineno":5,"cond":{"PLpgSQL_expr":{"query":"false","parseMode":2}},"message":{"PLpgSQL_expr":{"query":"'msg'","parseMode":2}}}},{"PLpgSQL_stmt_assert":{"lineno":6,"cond":{"PLpgSQL_expr":{"query":"false","parseMode":2}},"message":{"PLpgSQL_expr":{"query":"version()","parseMode":2}}}},{"PLpgSQL_stmt_return":{"lineno":8,"expr":{"PLpgSQL_expr":{"query":"1","parseMode":2}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"PLpgSQL_rec":{"refname":"r","dno":1,"lineno":1}},{"PLpgSQL_recfield":{"fieldname":"table_schema","recparentno":1}},{"PLpgSQL_recfield":{"fieldname":"table_name","recparentno":1}}],"action":{"PLpgSQL_stmt_block":{"lineno":2,"body":[{"PLpgSQL_stmt_fors":{"lineno":3,"var":{"PLpgSQL_rec":{"refname":"r","dno":1,"lineno":1}},"body":[{"PLpgSQL_stmt_dynexecute":{"lineno":6,"query":{"PLpgSQL_expr":{"query":"'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'","parseMode":2}}}}],"query":{"PLpgSQL_expr":{"query":"SELECT table_schema, table_name FROM information_schema.tables\n WHERE table_type = 'VIEW' AND table_schema = 'public'","parseMode":0}}}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"PLpgSQL_var":{"refname":"i","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"INT"}}}},{"PLpgSQL_var":{"refname":"c","lineno":4,"datatype":{"PLpgSQL_type":{"typname":"pg_catalog.refcursor"}},"cursor_explicit_expr":{"PLpgSQL_expr":{"query":"SELECT generate_series(1,10)","parseMode":0}},"cursor_explicit_argrow":-1,"cursor_options":256}},{"PLpgSQL_rec":{"refname":"i","dno":3,"lineno":6}}],"action":{"PLpgSQL_stmt_block":{"lineno":5,"body":[{"PLpgSQL_stmt_forc":{"lineno":6,"var":{"PLpgSQL_rec":{"refname":"i","dno":3,"lineno":6}},"body":[{"PLpgSQL_stmt_raise":{"lineno":7,"elog_level":18,"message":"i is %","params":[{"PLpgSQL_expr":{"query":"i","parseMode":2}}]}}],"curvar":2}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"p_in","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.int4"}}}},{"PLpgSQL_rec":{"refname":"p_out","dno":1}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"PLpgSQL_recfield":{"fieldname":"sumattribute","recparentno":1}}],"action":{"PLpgSQL_stmt_block":{"lineno":3,"body":[{"PLpgSQL_stmt_assign":{"lineno":4,"varno":3,"expr":{"PLpgSQL_expr":{"query":"p_out.sumattribute := p_in","parseMode":4}}}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"$1","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.float4"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":4,"body":[{"PLpgSQL_stmt_return":{"lineno":5,"expr":{"PLpgSQL_expr":{"query":"subtotal * 0.06","parseMode":2}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"s","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.int4"}}}},{"PLpgSQL_var":{"refname":"e","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.int4"}}}},{"PLpgSQL_var":{"refname":"id","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.int4"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":2,"body":[{"PLpgSQL_stmt_assign":{"lineno":3,"varno":2,"expr":{"PLpgSQL_expr":{"query":"id := s","parseMode":3}}}},{"PLpgSQL_stmt_loop":{"lineno":4,"body":[{"PLpgSQL_stmt_exit":{"lineno":5,"is_exit":true,"cond":{"PLpgSQL_expr":{"query":"id\u003ee","parseMode":2}}}},{"PLpgSQL_stmt_return_next":{"lineno":6}},{"PLpgSQL_stmt_assign":{"lineno":7,"varno":2,"expr":{"PLpgSQL_expr":{"query":"id := id + 1","parseMode":3}}}}]}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"new_varno":1,"old_varno":2,"datums":[{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"PLpgSQL_rec":{"refname":"new","dno":1}},{"PLpgSQL_rec":{"refname":"old","dno":2}}],"action":{"PLpgSQL_stmt_block":{"lineno":5,"body":[{"PLpgSQL_stmt_return":{"lineno":6}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"PLpgSQL_var":{"refname":"ref","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"refcursor"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":4,"body":[{"PLpgSQL_stmt_open":{"lineno":5,"curvar":1,"cursor_options":256,"query":{"PLpgSQL_expr":{"query":"SELECT col FROM test","parseMode":0}}}},{"PLpgSQL_stmt_return":{"lineno":6,"expr":{"PLpgSQL_expr":{"query":"ref","parseMode":2}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"a","datatype":{"PLpgSQL_type":{"typname":"text"}}}},{"PLpgSQL_var":{"refname":"b","datatype":{"PLpgSQL_type":{"typname":"text"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"pg_catalog.\"boolean\""}}}},{"PLpgSQL_var":{"refname":"local_a","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"text "}},"default_val":{"PLpgSQL_expr":{"query":"a","parseMode":2}}}},{"PLpgSQL_var":{"refname":"local_b","lineno":4,"datatype":{"PLpgSQL_type":{"typname":"text "}},"default_val":{"PLpgSQL_expr":{"query":"b","parseMode":2}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":5,"body":[{"PLpgSQL_stmt_return":{"lineno":6,"expr":{"PLpgSQL_expr":{"query":"local_a \u003c local_b","parseMode":2}}}}]}}}} ] libpg_query-17-6.1.0/test/plpgsql_samples.sql000066400000000000000000000375051477334012600212140ustar00rootroot00000000000000-- 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;$$; CREATE FUNCTION test_assert() RETURNS integer LANGUAGE plpgsql AS $$ BEGIN ASSERT true; ASSERT now() < '2000-01-01'; ASSERT false, 'msg'; ASSERT false, version(); RETURN 1; END;$$; -- Example from https://www.postgresql.org/docs/current/sql-do.html DO $$DECLARE r record; BEGIN FOR r IN SELECT table_schema, table_name FROM information_schema.tables WHERE table_type = 'VIEW' AND table_schema = 'public' LOOP EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; END LOOP; END$$; CREATE FUNCTION test_cursor() RETURNS void AS $$ DECLARE i INT; c CURSOR FOR SELECT generate_series(1,10); BEGIN FOR i IN c LOOP RAISE NOTICE 'i is %',i; END LOOP; END $$ language plpgsql; CREATE FUNCTION public.dz_sumfunc( IN p_in INTEGER ,OUT p_out public.dz_sumthing ) AS $BODY$ DECLARE BEGIN p_out.sumattribute := p_in; END; $BODY$ LANGUAGE plpgsql; -- Examples from https://www.postgresql.org/docs/16/plpgsql-declarations.html#PLPGSQL-DECLARATION-PARAMETERS CREATE FUNCTION sales_tax(real) RETURNS real AS $$ DECLARE subtotal ALIAS FOR $1; BEGIN RETURN subtotal * 0.06; END; $$ LANGUAGE plpgsql; -- RETURN NEXT; with no expression https://www.postgresql.org/docs/16/plpgsql-control-structures.html#PLPGSQL-STATEMENTS-RETURNING-RETURN-NEXT CREATE OR REPLACE FUNCTION public.test_pl(s integer, e integer) RETURNS TABLE(id INTEGER) AS $$ BEGIN id := s; LOOP EXIT WHEN id>e; RETURN NEXT; id := id + 1; END LOOP; END $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION trgfn() RETURNS trigger AS $$ DECLARE prior ALIAS FOR old; updated ALIAS FOR new; BEGIN RETURN; END; $$ LANGUAGE plpgsql; -- Example from https://www.postgresql.org/docs/16/plpgsql-cursors.html CREATE FUNCTION reffunc2() RETURNS refcursor AS ' DECLARE ref refcursor; BEGIN OPEN ref FOR SELECT col FROM test; RETURN ref; END; ' LANGUAGE plpgsql; -- Example from https://www.postgresql.org/docs/16/plpgsql-declarations.html#PLPGSQL-DECLARATION-COLLATION CREATE FUNCTION less_than(a text, b text) RETURNS boolean AS $$ DECLARE local_a text COLLATE "en_US" := a; local_b text := b; BEGIN RETURN local_a < local_b; END; $$ LANGUAGE plpgsql; libpg_query-17-6.1.0/test/scan.c000066400000000000000000000036261477334012600163520ustar00rootroot00000000000000#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; // tests contains pairs of strings assert(testsCount % 2 == 0); 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); if (token_kind == NULL) { ret_code = -1; printf("INVALID result for \"%s\": scan_result token %zu token_kind == NULL\n", tests[i], j); break; } 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-17-6.1.0/test/scan_tests.c000066400000000000000000000100721477334012600175650ustar00rootroot00000000000000const char* const 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 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 '!', 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&\"d!0061t!+000061\" = UIDENT, NO_KEYWORD\n" "UESCAPE = UESCAPE, UNRESERVED_KEYWORD\n" "'!' = SCONST, NO_KEYWORD\n" ", = ASCII_44, NO_KEYWORD\n" "U&'d!0061t!+000061' = USCONST, 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", "SELECT $identifier", "SELECT = SELECT, RESERVED_KEYWORD\n" "$ = ASCII_36, NO_KEYWORD\n" "identifier = IDENT, NO_KEYWORD\n", }; const size_t testsCount = sizeof(tests)/sizeof(*tests)/2; libpg_query-17-6.1.0/test/split.c000066400000000000000000000043161477334012600165560ustar00rootroot00000000000000#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 = malloc(100); int nbytes = snprintf(newbuf, 100, "%sloc=%d,len=%d;", buf, result.stmts[i]->stmt_location, result.stmts[i]->stmt_len); if (nbytes < 0 || nbytes >= 100) { printf("Failed to run snprintf\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 = malloc(100); int nbytes = snprintf(newbuf, 100, "%sloc=%d,len=%d;", buf, result.stmts[i]->stmt_location, result.stmts[i]->stmt_len); if (nbytes < 0 || nbytes >= 100) { printf("Failed to run snprintf\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-17-6.1.0/test/split_tests.c000066400000000000000000000010411477334012600177700ustar00rootroot00000000000000const 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-17-6.1.0/test/sql/000077500000000000000000000000001477334012600160525ustar00rootroot00000000000000libpg_query-17-6.1.0/test/sql/plpgsql_regress/000077500000000000000000000000001477334012600212665ustar00rootroot00000000000000libpg_query-17-6.1.0/test/sql/plpgsql_regress/plpgsql_array.sql000066400000000000000000000070371477334012600246760ustar00rootroot00000000000000-- -- Tests for PL/pgSQL handling of array variables -- -- We also check arrays of composites here, so this has some overlap -- with the plpgsql_record tests. -- create type complex as (r float8, i float8); create type quadarray as (c1 complex[], c2 complex); do $$ declare a int[]; begin a := array[1,2]; a[3] := 4; raise notice 'a = %', a; end$$; do $$ declare a int[]; begin a[3] := 4; raise notice 'a = %', a; end$$; do $$ declare a int[]; begin a[1][4] := 4; raise notice 'a = %', a; end$$; do $$ declare a int[]; begin a[1] := 23::text; raise notice 'a = %', a; end$$; -- lax typing do $$ declare a int[]; begin a := array[1,2]; a[2:3] := array[3,4]; raise notice 'a = %', a; end$$; do $$ declare a int[]; begin a := array[1,2]; a[2] := a[2] + 1; raise notice 'a = %', a; end$$; do $$ declare a int[]; begin a[1:2] := array[3,4]; raise notice 'a = %', a; end$$; do $$ declare a int[]; begin a[1:2] := 4; raise notice 'a = %', a; end$$; -- error do $$ declare a complex[]; begin a[1] := (1,2); a[1].i := 11; raise notice 'a = %', a; end$$; do $$ declare a complex[]; begin a[1].i := 11; raise notice 'a = %, a[1].i = %', a, a[1].i; end$$; -- perhaps this ought to work, but for now it doesn't: do $$ declare a complex[]; begin a[1:2].i := array[11,12]; raise notice 'a = %', a; end$$; do $$ declare a quadarray; begin a.c1[1].i := 11; raise notice 'a = %, a.c1[1].i = %', a, a.c1[1].i; end$$; do $$ declare a int[]; begin a := array_agg(x) from (values(1),(2),(3)) v(x); raise notice 'a = %', a; end$$; create temp table onecol as select array[1,2] as f1; do $$ declare a int[]; begin a := f1 from onecol; raise notice 'a = %', a; end$$; do $$ declare a int[]; begin a := * from onecol for update; raise notice 'a = %', a; end$$; -- error cases: do $$ declare a int[]; begin a := from onecol; raise notice 'a = %', a; end$$; do $$ declare a int[]; begin a := f1, f1 from onecol; raise notice 'a = %', a; end$$; insert into onecol values(array[11]); do $$ declare a int[]; begin a := f1 from onecol; raise notice 'a = %', a; end$$; do $$ declare a int[]; begin a := f1 from onecol limit 1; raise notice 'a = %', a; end$$; do $$ declare a real; begin a[1] := 2; raise notice 'a = %', a; end$$; do $$ declare a complex; begin a.r[1] := 2; raise notice 'a = %', a; end$$; -- -- test of %type[] and %rowtype[] syntax -- -- check supported syntax do $$ declare v int; v1 v%type; v2 v%type[]; v3 v%type[1]; v4 v%type[][]; v5 v%type[1][3]; v6 v%type array; v7 v%type array[]; v8 v%type array[1]; v9 v%type array[1][1]; v10 pg_catalog.pg_class%rowtype[]; begin raise notice '%', pg_typeof(v1); raise notice '%', pg_typeof(v2); raise notice '%', pg_typeof(v3); raise notice '%', pg_typeof(v4); raise notice '%', pg_typeof(v5); raise notice '%', pg_typeof(v6); raise notice '%', pg_typeof(v7); raise notice '%', pg_typeof(v8); raise notice '%', pg_typeof(v9); raise notice '%', pg_typeof(v10); end; $$; -- some types don't support arrays do $$ declare v pg_node_tree; v1 v%type[]; begin end; $$; -- check functionality do $$ declare v1 int; v2 varchar; a1 v1%type[]; a2 v2%type[]; begin v1 := 10; v2 := 'Hi'; a1 := array[v1,v1]; a2 := array[v2,v2]; raise notice '% %', a1, a2; end; $$; create table array_test_table(a int, b varchar); insert into array_test_table values(1, 'first'), (2, 'second'); do $$ declare tg array_test_table%rowtype[]; begin tg := array(select array_test_table from array_test_table); raise notice '%', tg; tg := array(select row(a,b) from array_test_table); raise notice '%', tg; end; $$; libpg_query-17-6.1.0/test/sql/plpgsql_regress/plpgsql_cache.sql000066400000000000000000000032051477334012600246140ustar00rootroot00000000000000-- -- Cache-behavior-dependent test cases -- -- These tests logically belong in plpgsql_record.sql, and perhaps someday -- can be merged back into it. For now, however, their results are different -- depending on debug_discard_caches, so we must have two expected-output -- files to cover both cases. To minimize the maintenance effort resulting -- from that, this file should contain only tests that do have different -- results under debug_discard_caches. -- -- check behavior with changes of a named rowtype create table c_mutable(f1 int, f2 text); create function c_sillyaddone(int) returns int language plpgsql as $$ declare r c_mutable; begin r.f1 := $1; return r.f1 + 1; end $$; select c_sillyaddone(42); alter table c_mutable drop column f1; alter table c_mutable add column f1 float8; -- currently, this fails due to cached plan for "r.f1 + 1" expression -- (but if debug_discard_caches is on, it will succeed) select c_sillyaddone(42); -- but it's OK if we force plan rebuilding discard plans; select c_sillyaddone(42); -- check behavior with changes in a record rowtype create function show_result_type(text) returns text language plpgsql as $$ declare r record; t text; begin execute $1 into r; select pg_typeof(r.a) into t; return format('type %s value %s', t, r.a::text); end; $$; select show_result_type('select 1 as a'); -- currently this fails due to cached plan for pg_typeof expression -- (but if debug_discard_caches is on, it will succeed) select show_result_type('select 2.0 as a'); -- but it's OK if we force plan rebuilding discard plans; select show_result_type('select 2.0 as a'); libpg_query-17-6.1.0/test/sql/plpgsql_regress/plpgsql_call.sql000066400000000000000000000240601477334012600244660ustar00rootroot00000000000000-- -- Tests for procedures / CALL syntax -- CREATE PROCEDURE test_proc1() LANGUAGE plpgsql AS $$ BEGIN NULL; END; $$; CALL test_proc1(); -- error: can't return non-NULL CREATE PROCEDURE test_proc2() LANGUAGE plpgsql AS $$ BEGIN RETURN 5; END; $$; CREATE TABLE test1 (a int); CREATE PROCEDURE test_proc3(x int) LANGUAGE plpgsql AS $$ BEGIN INSERT INTO test1 VALUES (x); END; $$; CALL test_proc3(55); SELECT * FROM test1; -- Check that plan revalidation doesn't prevent setting transaction properties -- (bug #18059). This test must include the first temp-object creation in -- this script, or it won't exercise the bug scenario. Hence we put it early. CREATE PROCEDURE test_proc3a() LANGUAGE plpgsql AS $$ BEGIN COMMIT; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; RAISE NOTICE 'done'; END; $$; CALL test_proc3a(); CREATE TEMP TABLE tt1(f1 int); CALL test_proc3a(); -- nested CALL TRUNCATE TABLE test1; CREATE PROCEDURE test_proc4(y int) LANGUAGE plpgsql AS $$ BEGIN CALL test_proc3(y); CALL test_proc3($1); END; $$; CALL test_proc4(66); SELECT * FROM test1; CALL test_proc4(66); SELECT * FROM test1; -- output arguments CREATE PROCEDURE test_proc5(INOUT a text) LANGUAGE plpgsql AS $$ BEGIN a := a || '+' || a; END; $$; CALL test_proc5('abc'); CREATE PROCEDURE test_proc6(a int, INOUT b int, INOUT c int) LANGUAGE plpgsql AS $$ BEGIN b := b * a; c := c * a; END; $$; CALL test_proc6(2, 3, 4); DO LANGUAGE plpgsql $$ DECLARE x int := 3; y int := 4; BEGIN CALL test_proc6(2, x, y); RAISE INFO 'x = %, y = %', x, y; CALL test_proc6(2, c => y, b => x); RAISE INFO 'x = %, y = %', x, y; END; $$; DO LANGUAGE plpgsql $$ DECLARE x int := 3; y int := 4; BEGIN CALL test_proc6(2, x + 1, y); -- error RAISE INFO 'x = %, y = %', x, y; END; $$; DO LANGUAGE plpgsql $$ DECLARE x constant int := 3; y int := 4; BEGIN CALL test_proc6(2, x, y); -- error because x is constant END; $$; DO LANGUAGE plpgsql $$ DECLARE x int := 3; y int := 4; BEGIN FOR i IN 1..5 LOOP CALL test_proc6(i, x, y); RAISE INFO 'x = %, y = %', x, y; END LOOP; END; $$; -- recursive with output arguments CREATE PROCEDURE test_proc7(x int, INOUT a int, INOUT b numeric) LANGUAGE plpgsql AS $$ BEGIN IF x > 1 THEN a := x / 10; b := x / 2; CALL test_proc7(b::int, a, b); END IF; END; $$; CALL test_proc7(100, -1, -1); -- inner COMMIT with output arguments CREATE PROCEDURE test_proc7c(x int, INOUT a int, INOUT b numeric) LANGUAGE plpgsql AS $$ BEGIN a := x / 10; b := x / 2; COMMIT; END; $$; CREATE PROCEDURE test_proc7cc(_x int) LANGUAGE plpgsql AS $$ DECLARE _a int; _b numeric; BEGIN CALL test_proc7c(_x, _a, _b); RAISE NOTICE '_x: %,_a: %, _b: %', _x, _a, _b; END $$; CALL test_proc7cc(10); -- named parameters and defaults CREATE PROCEDURE test_proc8a(INOUT a int, INOUT b int) LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'a: %, b: %', a, b; a := a * 10; b := b + 10; END; $$; CALL test_proc8a(10, 20); CALL test_proc8a(b => 20, a => 10); DO $$ DECLARE _a int; _b int; BEGIN _a := 10; _b := 30; CALL test_proc8a(_a, _b); RAISE NOTICE '_a: %, _b: %', _a, _b; CALL test_proc8a(b => _b, a => _a); RAISE NOTICE '_a: %, _b: %', _a, _b; END $$; CREATE PROCEDURE test_proc8b(INOUT a int, INOUT b int, INOUT c int) LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'a: %, b: %, c: %', a, b, c; a := a * 10; b := b + 10; c := c * -10; END; $$; DO $$ DECLARE _a int; _b int; _c int; BEGIN _a := 10; _b := 30; _c := 50; CALL test_proc8b(_a, _b, _c); RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; CALL test_proc8b(_a, c => _c, b => _b); RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; END $$; CREATE PROCEDURE test_proc8c(INOUT a int, INOUT b int, INOUT c int DEFAULT 11) LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'a: %, b: %, c: %', a, b, c; a := a * 10; b := b + 10; c := c * -10; END; $$; DO $$ DECLARE _a int; _b int; _c int; BEGIN _a := 10; _b := 30; _c := 50; CALL test_proc8c(_a, _b, _c); RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; _a := 10; _b := 30; _c := 50; CALL test_proc8c(_a, c => _c, b => _b); RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; _a := 10; _b := 30; _c := 50; CALL test_proc8c(c => _c, b => _b, a => _a); RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; END $$; DO $$ DECLARE _a int; _b int; _c int; BEGIN _a := 10; _b := 30; _c := 50; CALL test_proc8c(_a, _b); -- fail, no output argument for c RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; END $$; DO $$ DECLARE _a int; _b int; _c int; BEGIN _a := 10; _b := 30; _c := 50; CALL test_proc8c(_a, b => _b); -- fail, no output argument for c RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; END $$; -- OUT parameters CREATE PROCEDURE test_proc9(IN a int, OUT b int) LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'a: %, b: %', a, b; b := a * 2; END; $$; DO $$ DECLARE _a int; _b int; BEGIN _a := 10; _b := 30; CALL test_proc9(_a, _b); RAISE NOTICE '_a: %, _b: %', _a, _b; END $$; CREATE PROCEDURE test_proc10(IN a int, OUT b int, IN c int DEFAULT 11) LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'a: %, b: %, c: %', a, b, c; b := a - c; END; $$; DO $$ DECLARE _a int; _b int; _c int; BEGIN _a := 10; _b := 30; _c := 7; CALL test_proc10(_a, _b, _c); RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; _a := 10; _b := 30; _c := 7; CALL test_proc10(_a, _b, c => _c); RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; _a := 10; _b := 30; _c := 7; CALL test_proc10(a => _a, b => _b, c => _c); RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; _a := 10; _b := 30; _c := 7; CALL test_proc10(_a, c => _c, b => _b); RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; _a := 10; _b := 30; _c := 7; CALL test_proc10(_a, _b); RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; _a := 10; _b := 30; _c := 7; CALL test_proc10(_a, b => _b); RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; _a := 10; _b := 30; _c := 7; CALL test_proc10(b => _b, a => _a); RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; END $$; -- OUT + VARIADIC CREATE PROCEDURE test_proc11(a OUT int, VARIADIC b int[]) LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'a: %, b: %', a, b; a := b[1] + b[2]; END; $$; DO $$ DECLARE _a int; _b int; _c int; BEGIN _a := 10; _b := 30; _c := 7; CALL test_proc11(_a, _b, _c); RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; END $$; -- polymorphic OUT arguments CREATE PROCEDURE test_proc12(a anyelement, OUT b anyelement, OUT c anyarray) LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'a: %', a; b := a; c := array[a]; END; $$; DO $$ DECLARE _a int; _b int; _c int[]; BEGIN _a := 10; CALL test_proc12(_a, _b, _c); RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; END $$; DO $$ DECLARE _a int; _b int; _c text[]; BEGIN _a := 10; CALL test_proc12(_a, _b, _c); -- error RAISE NOTICE '_a: %, _b: %, _c: %', _a, _b, _c; END $$; -- transition variable assignment TRUNCATE test1; CREATE FUNCTION triggerfunc1() RETURNS trigger LANGUAGE plpgsql AS $$ DECLARE z int := 0; BEGIN CALL test_proc6(2, NEW.a, NEW.a); RETURN NEW; END; $$; CREATE TRIGGER t1 BEFORE INSERT ON test1 EXECUTE PROCEDURE triggerfunc1(); INSERT INTO test1 VALUES (1), (2), (3); UPDATE test1 SET a = 22 WHERE a = 2; SELECT * FROM test1 ORDER BY a; DROP PROCEDURE test_proc1; DROP PROCEDURE test_proc3; DROP PROCEDURE test_proc4; DROP TABLE test1; -- more checks for named-parameter handling CREATE PROCEDURE p1(v_cnt int, v_Text inout text = NULL) AS $$ BEGIN v_Text := 'v_cnt = ' || v_cnt; END $$ LANGUAGE plpgsql; DO $$ DECLARE v_Text text; v_cnt integer := 42; BEGIN CALL p1(v_cnt := v_cnt); -- error, must supply something for v_Text RAISE NOTICE '%', v_Text; END; $$; DO $$ DECLARE v_Text text; v_cnt integer := 42; BEGIN CALL p1(v_cnt := v_cnt, v_Text := v_Text); RAISE NOTICE '%', v_Text; END; $$; DO $$ DECLARE v_Text text; BEGIN CALL p1(10, v_Text := v_Text); RAISE NOTICE '%', v_Text; END; $$; DO $$ DECLARE v_Text text; v_cnt integer; BEGIN CALL p1(v_Text := v_Text, v_cnt := v_cnt); RAISE NOTICE '%', v_Text; END; $$; -- check that we detect change of dependencies in CALL -- atomic and non-atomic call sites used to do this differently, so check both CREATE PROCEDURE inner_p (f1 int) AS $$ BEGIN RAISE NOTICE 'inner_p(%)', f1; END $$ LANGUAGE plpgsql; CREATE FUNCTION f(int) RETURNS int AS $$ SELECT $1 + 1 $$ LANGUAGE sql; CREATE PROCEDURE outer_p (f1 int) AS $$ BEGIN RAISE NOTICE 'outer_p(%)', f1; CALL inner_p(f(f1)); END $$ LANGUAGE plpgsql; CREATE FUNCTION outer_f (f1 int) RETURNS void AS $$ BEGIN RAISE NOTICE 'outer_f(%)', f1; CALL inner_p(f(f1)); END $$ LANGUAGE plpgsql; CALL outer_p(42); SELECT outer_f(42); DROP FUNCTION f(int); CREATE FUNCTION f(int) RETURNS int AS $$ SELECT $1 + 2 $$ LANGUAGE sql; CALL outer_p(42); SELECT outer_f(42); -- Check that stable functions in CALL see the correct snapshot CREATE TABLE t_test (x int); INSERT INTO t_test VALUES (0); CREATE FUNCTION f_get_x () RETURNS int AS $$ DECLARE l_result int; BEGIN SELECT x INTO l_result FROM t_test; RETURN l_result; END $$ LANGUAGE plpgsql STABLE; CREATE PROCEDURE f_print_x (x int) AS $$ BEGIN RAISE NOTICE 'f_print_x(%)', x; END $$ LANGUAGE plpgsql; -- test in non-atomic context DO $$ BEGIN UPDATE t_test SET x = x + 1; RAISE NOTICE 'f_get_x(%)', f_get_x(); CALL f_print_x(f_get_x()); UPDATE t_test SET x = x + 1; RAISE NOTICE 'f_get_x(%)', f_get_x(); CALL f_print_x(f_get_x()); ROLLBACK; END $$; -- test in non-atomic context, except exception block is locally atomic DO $$ BEGIN BEGIN UPDATE t_test SET x = x + 1; RAISE NOTICE 'f_get_x(%)', f_get_x(); CALL f_print_x(f_get_x()); UPDATE t_test SET x = x + 1; RAISE NOTICE 'f_get_x(%)', f_get_x(); CALL f_print_x(f_get_x()); EXCEPTION WHEN division_by_zero THEN RAISE NOTICE '%', SQLERRM; END; ROLLBACK; END $$; -- test in atomic context BEGIN; DO $$ BEGIN UPDATE t_test SET x = x + 1; RAISE NOTICE 'f_get_x(%)', f_get_x(); CALL f_print_x(f_get_x()); UPDATE t_test SET x = x + 1; RAISE NOTICE 'f_get_x(%)', f_get_x(); CALL f_print_x(f_get_x()); END $$; ROLLBACK; libpg_query-17-6.1.0/test/sql/plpgsql_regress/plpgsql_control.sql000066400000000000000000000247001477334012600252340ustar00rootroot00000000000000-- -- Tests for PL/pgSQL control structures -- -- integer FOR loop do $$ begin -- basic case for i in 1..3 loop raise notice '1..3: i = %', i; end loop; -- with BY, end matches exactly for i in 1..10 by 3 loop raise notice '1..10 by 3: i = %', i; end loop; -- with BY, end does not match for i in 1..11 by 3 loop raise notice '1..11 by 3: i = %', i; end loop; -- zero iterations for i in 1..0 by 3 loop raise notice '1..0 by 3: i = %', i; end loop; -- REVERSE for i in reverse 10..0 by 3 loop raise notice 'reverse 10..0 by 3: i = %', i; end loop; -- potential overflow for i in 2147483620..2147483647 by 10 loop raise notice '2147483620..2147483647 by 10: i = %', i; end loop; -- potential overflow, reverse direction for i in reverse -2147483620..-2147483647 by 10 loop raise notice 'reverse -2147483620..-2147483647 by 10: i = %', i; end loop; end$$; -- BY can't be zero or negative do $$ begin for i in 1..3 by 0 loop raise notice '1..3 by 0: i = %', i; end loop; end$$; do $$ begin for i in 1..3 by -1 loop raise notice '1..3 by -1: i = %', i; end loop; end$$; do $$ begin for i in reverse 1..3 by -1 loop raise notice 'reverse 1..3 by -1: i = %', i; end loop; end$$; -- CONTINUE statement create table conttesttbl(idx serial, v integer); insert into conttesttbl(v) values(10); insert into conttesttbl(v) values(20); insert into conttesttbl(v) values(30); insert into conttesttbl(v) values(40); create function continue_test1() returns void as $$ declare _i integer = 0; _r record; begin raise notice '---1---'; loop _i := _i + 1; raise notice '%', _i; continue when _i < 10; exit; end loop; raise notice '---2---'; <> loop _i := _i - 1; loop raise notice '%', _i; continue lbl when _i > 0; exit lbl; end loop; end loop; raise notice '---3---'; <> while _i < 10 loop _i := _i + 1; continue the_loop when _i % 2 = 0; raise notice '%', _i; end loop; raise notice '---4---'; for _i in 1..10 loop begin -- applies to outer loop, not the nested begin block continue when _i < 5; raise notice '%', _i; end; end loop; raise notice '---5---'; for _r in select * from conttesttbl loop continue when _r.v <= 20; raise notice '%', _r.v; end loop; raise notice '---6---'; for _r in execute 'select * from conttesttbl' loop continue when _r.v <= 20; raise notice '%', _r.v; end loop; raise notice '---7---'; <> for _i in 1..3 loop continue looplabel when _i = 2; raise notice '%', _i; end loop; raise notice '---8---'; _i := 1; while _i <= 3 loop raise notice '%', _i; _i := _i + 1; continue when _i = 3; end loop; raise notice '---9---'; for _r in select * from conttesttbl order by v limit 1 loop raise notice '%', _r.v; continue; end loop; raise notice '---10---'; for _r in execute 'select * from conttesttbl order by v limit 1' loop raise notice '%', _r.v; continue; end loop; raise notice '---11---'; <> for _i in 1..2 loop raise notice 'outer %', _i; <> for _j in 1..3 loop continue outerlooplabel when _j = 2; raise notice 'inner %', _j; end loop; end loop; end; $$ language plpgsql; select continue_test1(); -- should fail: CONTINUE is only legal inside a loop create function continue_error1() returns void as $$ begin begin continue; end; end; $$ language plpgsql; -- should fail: unlabeled EXIT is only legal inside a loop create function exit_error1() returns void as $$ begin begin exit; end; end; $$ language plpgsql; -- should fail: no such label create function continue_error2() returns void as $$ begin begin loop continue no_such_label; end loop; end; end; $$ language plpgsql; -- should fail: no such label create function exit_error2() returns void as $$ begin begin loop exit no_such_label; end loop; end; end; $$ language plpgsql; -- should fail: CONTINUE can't reference the label of a named block create function continue_error3() returns void as $$ begin <> begin loop continue begin_block1; end loop; end; end; $$ language plpgsql; -- On the other hand, EXIT *can* reference the label of a named block create function exit_block1() returns void as $$ begin <> begin loop exit begin_block1; raise exception 'should not get here'; end loop; end; end; $$ language plpgsql; select exit_block1(); -- verbose end block and end loop create function end_label1() returns void as $$ <> begin <> for i in 1 .. 10 loop raise notice 'i = %', i; exit flbl1; end loop flbl1; <> for j in 1 .. 10 loop raise notice 'j = %', j; exit flbl2; end loop; end blbl; $$ language plpgsql; select end_label1(); -- should fail: undefined end label create function end_label2() returns void as $$ begin for _i in 1 .. 10 loop exit; end loop flbl1; end; $$ language plpgsql; -- should fail: end label does not match start label create function end_label3() returns void as $$ <> begin <> for _i in 1 .. 10 loop exit; end loop outer_label; end; $$ language plpgsql; -- should fail: end label on a block without a start label create function end_label4() returns void as $$ <> begin for _i in 1 .. 10 loop exit; end loop outer_label; end; $$ language plpgsql; -- unlabeled exit matches no blocks do $$ begin for i in 1..10 loop <> begin begin -- unlabeled block exit; raise notice 'should not get here'; end; raise notice 'should not get here, either'; end; raise notice 'nor here'; end loop; raise notice 'should get here'; end$$; -- check exit out of an unlabeled block to a labeled one do $$ <> begin <> begin <> begin begin -- unlabeled block exit innerblock; raise notice 'should not get here'; end; raise notice 'should not get here, either'; end; raise notice 'nor here'; end; raise notice 'should get here'; end$$; -- check exit out of outermost block do $$ <> begin <> begin exit outerblock; raise notice 'should not get here'; end; raise notice 'should not get here, either'; end$$; -- unlabeled exit does match a while loop do $$ begin <> while 1 > 0 loop <> while 1 > 0 loop <> while 1 > 0 loop exit; raise notice 'should not get here'; end loop; raise notice 'should get here'; exit outermostwhile; raise notice 'should not get here, either'; end loop; raise notice 'nor here'; end loop; raise notice 'should get here, too'; end$$; -- check exit out of an unlabeled while to a labeled one do $$ begin <> while 1 > 0 loop while 1 > 0 loop exit outerwhile; raise notice 'should not get here'; end loop; raise notice 'should not get here, either'; end loop; raise notice 'should get here'; end$$; -- continue to an outer while do $$ declare i int := 0; begin <> while i < 2 loop raise notice 'outermostwhile, i = %', i; i := i + 1; <> while 1 > 0 loop <> while 1 > 0 loop continue outermostwhile; raise notice 'should not get here'; end loop; raise notice 'should not get here, either'; end loop; raise notice 'nor here'; end loop; raise notice 'out of outermostwhile, i = %', i; end$$; -- return out of a while create function return_from_while() returns int language plpgsql as $$ declare i int := 0; begin while i < 10 loop if i > 2 then return i; end if; i := i + 1; end loop; return null; end$$; select return_from_while(); -- using list of scalars in fori and fore stmts create function for_vect() returns void as $proc$ <>declare a integer; b varchar; c varchar; r record; begin -- fori for i in 1 .. 3 loop raise notice '%', i; end loop; -- fore with record var for r in select gs as aa, 'BB' as bb, 'CC' as cc from generate_series(1,4) gs loop raise notice '% % %', r.aa, r.bb, r.cc; end loop; -- fore with single scalar for a in select gs from generate_series(1,4) gs loop raise notice '%', a; end loop; -- fore with multiple scalars for a,b,c in select gs, 'BB','CC' from generate_series(1,4) gs loop raise notice '% % %', a, b, c; end loop; -- using qualified names in fors, fore is enabled, disabled only for fori for lbl.a, lbl.b, lbl.c in execute $$select gs, 'bb','cc' from generate_series(1,4) gs$$ loop raise notice '% % %', a, b, c; end loop; end; $proc$ language plpgsql; select for_vect(); -- CASE statement create or replace function case_test(bigint) returns text as $$ declare a int = 10; b int = 1; begin case $1 when 1 then return 'one'; when 2 then return 'two'; when 3,4,3+5 then return 'three, four or eight'; when a then return 'ten'; when a+b, a+b+1 then return 'eleven, twelve'; end case; end; $$ language plpgsql immutable; select case_test(1); select case_test(2); select case_test(3); select case_test(4); select case_test(5); -- fails select case_test(8); select case_test(10); select case_test(11); select case_test(12); select case_test(13); -- fails create or replace function catch() returns void as $$ begin raise notice '%', case_test(6); exception when case_not_found then raise notice 'caught case_not_found % %', SQLSTATE, SQLERRM; end $$ language plpgsql; select catch(); -- test the searched variant too, as well as ELSE create or replace function case_test(bigint) returns text as $$ declare a int = 10; begin case when $1 = 1 then return 'one'; when $1 = a + 2 then return 'twelve'; else return 'other'; end case; end; $$ language plpgsql immutable; select case_test(1); select case_test(2); select case_test(12); select case_test(13); -- test line comment between WHEN and THEN create or replace function case_comment(int) returns text as $$ begin case $1 when 1 -- comment before THEN then return 'one'; else return 'other'; end case; end; $$ language plpgsql immutable; select case_comment(1); libpg_query-17-6.1.0/test/sql/plpgsql_regress/plpgsql_copy.sql000066400000000000000000000025501477334012600245250ustar00rootroot00000000000000-- directory paths are passed to us in environment variables \getenv abs_srcdir PG_ABS_SRCDIR \getenv abs_builddir PG_ABS_BUILDDIR -- set up file names to use \set srcfilename :abs_srcdir '/data/copy1.data' \set destfilename :abs_builddir '/results/copy1.data' CREATE TABLE copy1 (a int, b float); -- COPY TO/FROM not authorized from client. DO LANGUAGE plpgsql $$ BEGIN COPY copy1 TO stdout; END; $$; DO LANGUAGE plpgsql $$ BEGIN COPY copy1 FROM stdin; END; $$; DO LANGUAGE plpgsql $$ BEGIN EXECUTE 'COPY copy1 TO stdout'; END; $$; DO LANGUAGE plpgsql $$ BEGIN EXECUTE 'COPY copy1 FROM stdin'; END; $$; -- Valid cases -- COPY FROM \set dobody 'BEGIN COPY copy1 FROM ' :'srcfilename' '; END' DO LANGUAGE plpgsql :'dobody'; SELECT * FROM copy1 ORDER BY 1; TRUNCATE copy1; \set cmd 'COPY copy1 FROM ' :'srcfilename' \set dobody 'BEGIN EXECUTE ' :'cmd' '; END' DO LANGUAGE plpgsql :'dobody'; SELECT * FROM copy1 ORDER BY 1; -- COPY TO -- Copy the data externally once, then process it back to the table. \set dobody 'BEGIN COPY copy1 TO ' :'destfilename' '; END' DO LANGUAGE plpgsql :'dobody'; TRUNCATE copy1; \set dobody 'BEGIN COPY copy1 FROM ' :'destfilename' '; END' DO LANGUAGE plpgsql :'dobody'; \set cmd 'COPY copy1 FROM ' :'destfilename' \set dobody 'BEGIN EXECUTE ' :'cmd' '; END' DO LANGUAGE plpgsql :'dobody'; SELECT * FROM copy1 ORDER BY 1; DROP TABLE copy1; libpg_query-17-6.1.0/test/sql/plpgsql_regress/plpgsql_domain.sql000066400000000000000000000152561477334012600250310ustar00rootroot00000000000000-- -- Tests for PL/pgSQL's behavior with domain types -- CREATE DOMAIN booltrue AS bool CHECK (VALUE IS TRUE OR VALUE IS NULL); CREATE FUNCTION test_argresult_booltrue(x booltrue, y bool) RETURNS booltrue AS $$ begin return y; end $$ LANGUAGE plpgsql; SELECT * FROM test_argresult_booltrue(true, true); SELECT * FROM test_argresult_booltrue(false, true); SELECT * FROM test_argresult_booltrue(true, false); CREATE FUNCTION test_assign_booltrue(x bool, y bool) RETURNS booltrue AS $$ declare v booltrue := x; begin v := y; return v; end $$ LANGUAGE plpgsql; SELECT * FROM test_assign_booltrue(true, true); SELECT * FROM test_assign_booltrue(false, true); SELECT * FROM test_assign_booltrue(true, false); CREATE DOMAIN uint2 AS int2 CHECK (VALUE >= 0); CREATE FUNCTION test_argresult_uint2(x uint2, y int) RETURNS uint2 AS $$ begin return y; end $$ LANGUAGE plpgsql; SELECT * FROM test_argresult_uint2(100::uint2, 50); SELECT * FROM test_argresult_uint2(100::uint2, -50); SELECT * FROM test_argresult_uint2(null, 1); CREATE FUNCTION test_assign_uint2(x int, y int) RETURNS uint2 AS $$ declare v uint2 := x; begin v := y; return v; end $$ LANGUAGE plpgsql; SELECT * FROM test_assign_uint2(100, 50); SELECT * FROM test_assign_uint2(100, -50); SELECT * FROM test_assign_uint2(-100, 50); SELECT * FROM test_assign_uint2(null, 1); CREATE DOMAIN nnint AS int NOT NULL; CREATE FUNCTION test_argresult_nnint(x nnint, y int) RETURNS nnint AS $$ begin return y; end $$ LANGUAGE plpgsql; SELECT * FROM test_argresult_nnint(10, 20); SELECT * FROM test_argresult_nnint(null, 20); SELECT * FROM test_argresult_nnint(10, null); CREATE FUNCTION test_assign_nnint(x int, y int) RETURNS nnint AS $$ declare v nnint := x; begin v := y; return v; end $$ LANGUAGE plpgsql; SELECT * FROM test_assign_nnint(10, 20); SELECT * FROM test_assign_nnint(null, 20); SELECT * FROM test_assign_nnint(10, null); -- -- Domains over arrays -- CREATE DOMAIN ordered_pair_domain AS integer[] CHECK (array_length(VALUE,1)=2 AND VALUE[1] < VALUE[2]); CREATE FUNCTION test_argresult_array_domain(x ordered_pair_domain) RETURNS ordered_pair_domain AS $$ begin return x; end $$ LANGUAGE plpgsql; SELECT * FROM test_argresult_array_domain(ARRAY[0, 100]::ordered_pair_domain); SELECT * FROM test_argresult_array_domain(NULL::ordered_pair_domain); CREATE FUNCTION test_argresult_array_domain_check_violation() RETURNS ordered_pair_domain AS $$ begin return array[2,1]; end $$ LANGUAGE plpgsql; SELECT * FROM test_argresult_array_domain_check_violation(); CREATE FUNCTION test_assign_ordered_pair_domain(x int, y int, z int) RETURNS ordered_pair_domain AS $$ declare v ordered_pair_domain := array[x, y]; begin v[2] := z; return v; end $$ LANGUAGE plpgsql; SELECT * FROM test_assign_ordered_pair_domain(1,2,3); SELECT * FROM test_assign_ordered_pair_domain(1,2,0); SELECT * FROM test_assign_ordered_pair_domain(2,1,3); -- -- Arrays of domains -- CREATE FUNCTION test_read_uint2_array(x uint2[]) RETURNS uint2 AS $$ begin return x[1]; end $$ LANGUAGE plpgsql; select test_read_uint2_array(array[1::uint2]); CREATE FUNCTION test_build_uint2_array(x int2) RETURNS uint2[] AS $$ begin return array[x, x]; end $$ LANGUAGE plpgsql; select test_build_uint2_array(1::int2); select test_build_uint2_array(-1::int2); -- fail CREATE FUNCTION test_argresult_domain_array(x integer[]) RETURNS ordered_pair_domain[] AS $$ begin return array[x::ordered_pair_domain, x::ordered_pair_domain]; end $$ LANGUAGE plpgsql; select test_argresult_domain_array(array[2,4]); select test_argresult_domain_array(array[4,2]); -- fail CREATE FUNCTION test_argresult_domain_array2(x ordered_pair_domain) RETURNS integer AS $$ begin return x[1]; end $$ LANGUAGE plpgsql; select test_argresult_domain_array2(array[2,4]); select test_argresult_domain_array2(array[4,2]); -- fail CREATE FUNCTION test_argresult_array_domain_array(x ordered_pair_domain[]) RETURNS ordered_pair_domain AS $$ begin return x[1]; end $$ LANGUAGE plpgsql; select test_argresult_array_domain_array(array[array[2,4]::ordered_pair_domain]); -- -- Domains within composite -- CREATE TYPE nnint_container AS (f1 int, f2 nnint); CREATE FUNCTION test_result_nnint_container(x int, y int) RETURNS nnint_container AS $$ begin return row(x, y)::nnint_container; end $$ LANGUAGE plpgsql; SELECT test_result_nnint_container(null, 3); SELECT test_result_nnint_container(3, null); -- fail CREATE FUNCTION test_assign_nnint_container(x int, y int, z int) RETURNS nnint_container AS $$ declare v nnint_container := row(x, y); begin v.f2 := z; return v; end $$ LANGUAGE plpgsql; SELECT * FROM test_assign_nnint_container(1,2,3); SELECT * FROM test_assign_nnint_container(1,2,null); SELECT * FROM test_assign_nnint_container(1,null,3); -- Since core system allows this: SELECT null::nnint_container; -- so should PL/PgSQL CREATE FUNCTION test_assign_nnint_container2(x int, y int, z int) RETURNS nnint_container AS $$ declare v nnint_container; begin v.f2 := z; return v; end $$ LANGUAGE plpgsql; SELECT * FROM test_assign_nnint_container2(1,2,3); SELECT * FROM test_assign_nnint_container2(1,2,null); -- -- Domains of composite -- CREATE TYPE named_pair AS ( i integer, j integer ); CREATE DOMAIN ordered_named_pair AS named_pair CHECK((VALUE).i <= (VALUE).j); CREATE FUNCTION read_ordered_named_pair(p ordered_named_pair) RETURNS integer AS $$ begin return p.i + p.j; end $$ LANGUAGE plpgsql; SELECT read_ordered_named_pair(row(1, 2)); SELECT read_ordered_named_pair(row(2, 1)); -- fail CREATE FUNCTION build_ordered_named_pair(i int, j int) RETURNS ordered_named_pair AS $$ begin return row(i, j); end $$ LANGUAGE plpgsql; SELECT build_ordered_named_pair(1,2); SELECT build_ordered_named_pair(2,1); -- fail CREATE FUNCTION test_assign_ordered_named_pair(x int, y int, z int) RETURNS ordered_named_pair AS $$ declare v ordered_named_pair := row(x, y); begin v.j := z; return v; end $$ LANGUAGE plpgsql; SELECT * FROM test_assign_ordered_named_pair(1,2,3); SELECT * FROM test_assign_ordered_named_pair(1,2,0); SELECT * FROM test_assign_ordered_named_pair(2,1,3); CREATE FUNCTION build_ordered_named_pairs(i int, j int) RETURNS ordered_named_pair[] AS $$ begin return array[row(i, j), row(i, j+1)]; end $$ LANGUAGE plpgsql; SELECT build_ordered_named_pairs(1,2); SELECT build_ordered_named_pairs(2,1); -- fail CREATE FUNCTION test_assign_ordered_named_pairs(x int, y int, z int) RETURNS ordered_named_pair[] AS $$ declare v ordered_named_pair[] := array[row(x, y)]; begin -- ideally this would work, but it doesn't yet: -- v[1].j := z; return v; end $$ LANGUAGE plpgsql; SELECT * FROM test_assign_ordered_named_pairs(1,2,3); SELECT * FROM test_assign_ordered_named_pairs(2,1,3); SELECT * FROM test_assign_ordered_named_pairs(1,2,0); -- should fail someday libpg_query-17-6.1.0/test/sql/plpgsql_regress/plpgsql_misc.sql000066400000000000000000000021271477334012600245060ustar00rootroot00000000000000-- -- Miscellaneous topics -- -- Verify that we can parse new-style CREATE FUNCTION/PROCEDURE do $$ declare procedure int; -- check we still recognize non-keywords as vars begin create function test1() returns int begin atomic select 2 + 2; end; create or replace procedure test2(x int) begin atomic select x + 2; end; end $$; \sf test1 \sf test2 -- Test %TYPE and %ROWTYPE error cases create table misc_table(f1 int); do $$ declare x foo%type; begin end $$; do $$ declare x notice%type; begin end $$; -- covers unreserved-keyword case do $$ declare x foo.bar%type; begin end $$; do $$ declare x foo.bar.baz%type; begin end $$; do $$ declare x public.foo.bar%type; begin end $$; do $$ declare x public.misc_table.zed%type; begin end $$; do $$ declare x foo%rowtype; begin end $$; do $$ declare x notice%rowtype; begin end $$; -- covers unreserved-keyword case do $$ declare x foo.bar%rowtype; begin end $$; do $$ declare x foo.bar.baz%rowtype; begin end $$; do $$ declare x public.foo%rowtype; begin end $$; do $$ declare x public.misc_table%rowtype; begin end $$; libpg_query-17-6.1.0/test/sql/plpgsql_regress/plpgsql_record.sql000066400000000000000000000377061477334012600250440ustar00rootroot00000000000000-- -- Tests for PL/pgSQL handling of composite (record) variables -- create type two_int4s as (f1 int4, f2 int4); create type more_int4s as (f0 text, f1 int4, f2 int4); create type two_int8s as (q1 int8, q2 int8); create type nested_int8s as (c1 two_int8s, c2 two_int8s); -- base-case return of a composite type create function retc(int) returns two_int8s language plpgsql as $$ begin return row($1,1)::two_int8s; end $$; select retc(42); -- ok to return a matching record type create or replace function retc(int) returns two_int8s language plpgsql as $$ begin return row($1::int8, 1::int8); end $$; select retc(42); -- we don't currently support implicit casting create or replace function retc(int) returns two_int8s language plpgsql as $$ begin return row($1,1); end $$; select retc(42); -- nor extra columns create or replace function retc(int) returns two_int8s language plpgsql as $$ begin return row($1::int8, 1::int8, 42); end $$; select retc(42); -- same cases with an intermediate "record" variable create or replace function retc(int) returns two_int8s language plpgsql as $$ declare r record; begin r := row($1::int8, 1::int8); return r; end $$; select retc(42); create or replace function retc(int) returns two_int8s language plpgsql as $$ declare r record; begin r := row($1,1); return r; end $$; select retc(42); create or replace function retc(int) returns two_int8s language plpgsql as $$ declare r record; begin r := row($1::int8, 1::int8, 42); return r; end $$; select retc(42); -- but, for mostly historical reasons, we do convert when assigning -- to a named-composite-type variable create or replace function retc(int) returns two_int8s language plpgsql as $$ declare r two_int8s; begin r := row($1::int8, 1::int8, 42); return r; end $$; select retc(42); do $$ declare c two_int8s; begin c := row(1,2); raise notice 'c = %', c; end$$; do $$ declare c two_int8s; begin for c in select 1,2 loop raise notice 'c = %', c; end loop; end$$; do $$ declare c4 two_int4s; c8 two_int8s; begin c8 := row(1,2); c4 := c8; c8 := c4; raise notice 'c4 = %', c4; raise notice 'c8 = %', c8; end$$; do $$ declare c two_int8s; d nested_int8s; begin c := row(1,2); d := row(c, row(c.q1, c.q2+1)); raise notice 'c = %, d = %', c, d; c.q1 := 10; d.c1 := row(11,12); d.c2.q2 := 42; raise notice 'c = %, d = %', c, d; raise notice 'c.q1 = %, d.c2 = %', c.q1, d.c2; raise notice '(d).c2.q2 = %', (d).c2.q2; -- doesn't work without parens raise notice '(d.c2).q2 = %', (d.c2).q2; -- doesn't work without parens end$$; -- block-qualified naming do $$ <> declare c two_int8s; d nested_int8s; begin b.c := row(1,2); b.d := row(b.c, row(b.c.q1, b.c.q2+1)); raise notice 'b.c = %, b.d = %', b.c, b.d; b.c.q1 := 10; b.d.c1 := row(11,12); b.d.c2.q2 := 42; raise notice 'b.c = %, b.d = %', b.c, b.d; raise notice 'b.c.q1 = %, b.d.c2 = %', b.c.q1, b.d.c2; raise notice '(b.d).c2.q2 = %', (b.d).c2.q2; -- doesn't work without parens raise notice '(b.d.c2).q2 = %', (b.d.c2).q2; -- doesn't work without parens end$$; -- error cases do $$ declare c two_int8s; begin c.x = 1; end $$; do $$ declare c nested_int8s; begin c.x = 1; end $$; do $$ declare c nested_int8s; begin c.x.q1 = 1; end $$; do $$ declare c nested_int8s; begin c.c2.x = 1; end $$; do $$ declare c nested_int8s; begin d.c2.x = 1; end $$; do $$ <> declare c two_int8s; begin b.c.x = 1; end $$; do $$ <> declare c nested_int8s; begin b.c.x = 1; end $$; do $$ <> declare c nested_int8s; begin b.c.x.q1 = 1; end $$; do $$ <> declare c nested_int8s; begin b.c.c2.x = 1; end $$; do $$ <> declare c nested_int8s; begin b.d.c2.x = 1; end $$; -- check passing composite result to another function create function getq1(two_int8s) returns int8 language plpgsql as $$ declare r two_int8s; begin r := $1; return r.q1; end $$; select getq1(retc(344)); select getq1(row(1,2)); do $$ declare r1 two_int8s; r2 record; x int8; begin r1 := retc(345); perform getq1(r1); x := getq1(r1); raise notice 'x = %', x; r2 := retc(346); perform getq1(r2); x := getq1(r2); raise notice 'x = %', x; end$$; -- check assignments of composites do $$ declare r1 two_int8s; r2 two_int8s; r3 record; r4 record; begin r1 := row(1,2); raise notice 'r1 = %', r1; r1 := r1; -- shouldn't do anything raise notice 'r1 = %', r1; r2 := r1; raise notice 'r1 = %', r1; raise notice 'r2 = %', r2; r2.q2 = r1.q1 + 3; -- check that r2 has distinct storage raise notice 'r1 = %', r1; raise notice 'r2 = %', r2; r1 := null; raise notice 'r1 = %', r1; raise notice 'r2 = %', r2; r1 := row(7,11)::two_int8s; r2 := r1; raise notice 'r1 = %', r1; raise notice 'r2 = %', r2; r3 := row(1,2); r4 := r3; raise notice 'r3 = %', r3; raise notice 'r4 = %', r4; r4.f1 := r4.f1 + 3; -- check that r4 has distinct storage raise notice 'r3 = %', r3; raise notice 'r4 = %', r4; r1 := r3; raise notice 'r1 = %', r1; r4 := r1; raise notice 'r4 = %', r4; r4.q2 := r4.q2 + 1; -- r4's field names have changed raise notice 'r4 = %', r4; end$$; -- fields of named-type vars read as null if uninitialized do $$ declare r1 two_int8s; begin raise notice 'r1 = %', r1; raise notice 'r1.q1 = %', r1.q1; raise notice 'r1.q2 = %', r1.q2; raise notice 'r1 = %', r1; end$$; do $$ declare r1 two_int8s; begin raise notice 'r1.q1 = %', r1.q1; raise notice 'r1.q2 = %', r1.q2; raise notice 'r1 = %', r1; raise notice 'r1.nosuchfield = %', r1.nosuchfield; end$$; -- records, not so much do $$ declare r1 record; begin raise notice 'r1 = %', r1; raise notice 'r1.f1 = %', r1.f1; raise notice 'r1.f2 = %', r1.f2; raise notice 'r1 = %', r1; end$$; -- but OK if you assign first do $$ declare r1 record; begin raise notice 'r1 = %', r1; r1 := row(1,2); raise notice 'r1.f1 = %', r1.f1; raise notice 'r1.f2 = %', r1.f2; raise notice 'r1 = %', r1; raise notice 'r1.nosuchfield = %', r1.nosuchfield; end$$; -- check %type with block-qualified variable names do $$ <> declare v int; r two_int8s; v1 v%type; v2 blk.v%type; r1 r%type; r2 blk.r%type; begin raise notice '%', pg_typeof(v1); raise notice '%', pg_typeof(v2); raise notice '%', pg_typeof(r1); raise notice '%', pg_typeof(r2); end$$; -- check that type record can be passed through %type do $$ declare r1 record; r2 r1%type; begin r2 := row(1,2); raise notice 'r2 = %', r2; r2 := row(3,4,5); raise notice 'r2 = %', r2; end$$; -- arrays of record are not supported at the moment do $$ declare r1 record[]; begin end$$; do $$ declare r1 record; r2 r1%type[]; begin end$$; -- check repeated assignments to composite fields create table some_table (id int, data text); do $$ declare r some_table; begin r := (23, 'skidoo'); for i in 1 .. 10 loop r.id := r.id + i; r.data := r.data || ' ' || i; end loop; raise notice 'r = %', r; end$$; -- check behavior of function declared to return "record" create function returnsrecord(int) returns record language plpgsql as $$ begin return row($1,$1+1); end $$; select returnsrecord(42); select * from returnsrecord(42) as r(x int, y int); select * from returnsrecord(42) as r(x int, y int, z int); -- fail select * from returnsrecord(42) as r(x int, y bigint); -- fail -- same with an intermediate record variable create or replace function returnsrecord(int) returns record language plpgsql as $$ declare r record; begin r := row($1,$1+1); return r; end $$; select returnsrecord(42); select * from returnsrecord(42) as r(x int, y int); select * from returnsrecord(42) as r(x int, y int, z int); -- fail select * from returnsrecord(42) as r(x int, y bigint); -- fail -- should work the same with a missing column in the actual result value create table has_hole(f1 int, f2 int, f3 int); alter table has_hole drop column f2; create or replace function returnsrecord(int) returns record language plpgsql as $$ begin return row($1,$1+1)::has_hole; end $$; select returnsrecord(42); select * from returnsrecord(42) as r(x int, y int); select * from returnsrecord(42) as r(x int, y int, z int); -- fail select * from returnsrecord(42) as r(x int, y bigint); -- fail -- same with an intermediate record variable create or replace function returnsrecord(int) returns record language plpgsql as $$ declare r record; begin r := row($1,$1+1)::has_hole; return r; end $$; select returnsrecord(42); select * from returnsrecord(42) as r(x int, y int); select * from returnsrecord(42) as r(x int, y int, z int); -- fail select * from returnsrecord(42) as r(x int, y bigint); -- fail -- check access to a field of an argument declared "record" create function getf1(x record) returns int language plpgsql as $$ begin return x.f1; end $$; select getf1(1); select getf1(row(1,2)); select getf1(row(1,2)::two_int4s); select getf1(row('foo',123,456)::more_int4s); -- the context stack is different when debug_discard_caches -- is set, so suppress context output \set SHOW_CONTEXT never select getf1(row(1,2)::two_int8s); \set SHOW_CONTEXT errors select getf1(row(1,2)); -- this seemingly-equivalent case behaves a bit differently, -- because the core parser's handling of $N symbols is simplistic create function getf2(record) returns int language plpgsql as $$ begin return $1.f2; end $$; select getf2(row(1,2)); -- ideally would work, but does not select getf2(row(1,2)::two_int4s); select getf2(row('foo',123,456)::more_int4s); -- check behavior when assignment to FOR-loop variable requires coercion do $$ declare r two_int8s; begin for r in select i, i+1 from generate_series(1,4) i loop raise notice 'r = %', r; end loop; end$$; -- check behavior when returning setof composite create function returnssetofholes() returns setof has_hole language plpgsql as $$ declare r record; h has_hole; begin return next h; r := (1,2); h := (3,4); return next r; return next h; return next row(5,6); return next row(7,8)::has_hole; end$$; select returnssetofholes(); create or replace function returnssetofholes() returns setof has_hole language plpgsql as $$ declare r record; begin return next r; -- fails, not assigned yet end$$; select returnssetofholes(); create or replace function returnssetofholes() returns setof has_hole language plpgsql as $$ begin return next row(1,2,3); -- fails end$$; select returnssetofholes(); -- check behavior with changes of a named rowtype create table mutable(f1 int, f2 text); create function sillyaddone(int) returns int language plpgsql as $$ declare r mutable; begin r.f1 := $1; return r.f1 + 1; end $$; select sillyaddone(42); -- test for change of type of column f1 should be here someday; -- for now see plpgsql_cache test alter table mutable drop column f1; -- the context stack is different when debug_discard_caches -- is set, so suppress context output \set SHOW_CONTEXT never select sillyaddone(42); -- fail \set SHOW_CONTEXT errors create function getf3(x mutable) returns int language plpgsql as $$ begin return x.f3; end $$; select getf3(null::mutable); -- doesn't work yet alter table mutable add column f3 int; select getf3(null::mutable); -- now it works alter table mutable drop column f3; -- the context stack is different when debug_discard_caches -- is set, so suppress context output \set SHOW_CONTEXT never select getf3(null::mutable); -- fails again \set SHOW_CONTEXT errors -- check behavior with creating/dropping a named rowtype set check_function_bodies = off; -- else reference to nonexistent type fails create function sillyaddtwo(int) returns int language plpgsql as $$ declare r mutable2; begin r.f1 := $1; return r.f1 + 2; end $$; reset check_function_bodies; select sillyaddtwo(42); -- fail create table mutable2(f1 int, f2 text); select sillyaddtwo(42); drop table mutable2; -- the context stack is different when debug_discard_caches -- is set, so suppress context output \set SHOW_CONTEXT never select sillyaddtwo(42); -- fail \set SHOW_CONTEXT errors create table mutable2(f0 text, f1 int, f2 text); select sillyaddtwo(42); select sillyaddtwo(43); -- check access to system columns in a record variable create function sillytrig() returns trigger language plpgsql as $$begin raise notice 'old.ctid = %', old.ctid; raise notice 'old.tableoid = %', old.tableoid::regclass; return new; end$$; create trigger mutable_trig before update on mutable for each row execute procedure sillytrig(); insert into mutable values ('foo'), ('bar'); update mutable set f2 = f2 || ' baz'; table mutable; -- check returning a composite datum from a trigger create or replace function sillytrig() returns trigger language plpgsql as $$begin return row(new.*); end$$; update mutable set f2 = f2 || ' baz'; table mutable; create or replace function sillytrig() returns trigger language plpgsql as $$declare r record; begin r := row(new.*); return r; end$$; update mutable set f2 = f2 || ' baz'; table mutable; -- -- Domains of composite -- create domain ordered_int8s as two_int8s check((value).q1 <= (value).q2); create function read_ordered_int8s(p ordered_int8s) returns int8 as $$ begin return p.q1 + p.q2; end $$ language plpgsql; select read_ordered_int8s(row(1, 2)); select read_ordered_int8s(row(2, 1)); -- fail create function build_ordered_int8s(i int8, j int8) returns ordered_int8s as $$ begin return row(i,j); end $$ language plpgsql; select build_ordered_int8s(1,2); select build_ordered_int8s(2,1); -- fail create function build_ordered_int8s_2(i int8, j int8) returns ordered_int8s as $$ declare r record; begin r := row(i,j); return r; end $$ language plpgsql; select build_ordered_int8s_2(1,2); select build_ordered_int8s_2(2,1); -- fail create function build_ordered_int8s_3(i int8, j int8) returns ordered_int8s as $$ declare r two_int8s; begin r := row(i,j); return r; end $$ language plpgsql; select build_ordered_int8s_3(1,2); select build_ordered_int8s_3(2,1); -- fail create function build_ordered_int8s_4(i int8, j int8) returns ordered_int8s as $$ declare r ordered_int8s; begin r := row(i,j); return r; end $$ language plpgsql; select build_ordered_int8s_4(1,2); select build_ordered_int8s_4(2,1); -- fail create function build_ordered_int8s_a(i int8, j int8) returns ordered_int8s[] as $$ begin return array[row(i,j), row(i,j+1)]; end $$ language plpgsql; select build_ordered_int8s_a(1,2); select build_ordered_int8s_a(2,1); -- fail -- check field assignment do $$ declare r ordered_int8s; begin r.q1 := null; r.q2 := 43; r.q1 := 42; r.q2 := 41; -- fail end$$; -- check whole-row assignment do $$ declare r ordered_int8s; begin r := null; r := row(null,null); r := row(1,2); r := row(2,1); -- fail end$$; -- check assignment in for-loop do $$ declare r ordered_int8s; begin for r in values (1,2),(3,4),(6,5) loop raise notice 'r = %', r; end loop; end$$; -- check behavior with toastable fields, too create type two_texts as (f1 text, f2 text); create domain ordered_texts as two_texts check((value).f1 <= (value).f2); create table sometable (id int, a text, b text); -- b should be compressed, but in-line insert into sometable values (1, 'a', repeat('ffoob',1000)); -- this b should be out-of-line insert into sometable values (2, 'a', repeat('ffoob',100000)); -- this pair should fail the domain check insert into sometable values (3, 'z', repeat('ffoob',100000)); do $$ declare d ordered_texts; begin for d in select a, b from sometable loop raise notice 'succeeded at "%"', d.f1; end loop; end$$; do $$ declare r record; d ordered_texts; begin for r in select * from sometable loop raise notice 'processing row %', r.id; d := row(r.a, r.b); end loop; end$$; do $$ declare r record; d ordered_texts; begin for r in select * from sometable loop raise notice 'processing row %', r.id; d := null; d.f1 := r.a; d.f2 := r.b; end loop; end$$; -- check coercion of a record result to named-composite function output type create function compresult(int8) returns two_int8s language plpgsql as $$ declare r record; begin r := row($1,$1); return r; end $$; create table two_int8s_tab (f1 two_int8s); insert into two_int8s_tab values (compresult(42)); -- reconnect so we lose any local knowledge of anonymous record types \c - table two_int8s_tab; libpg_query-17-6.1.0/test/sql/plpgsql_regress/plpgsql_simple.sql000066400000000000000000000046601477334012600250500ustar00rootroot00000000000000-- -- Tests for plpgsql's handling of "simple" expressions -- -- Check that changes to an inline-able function are handled correctly create function simplesql(int) returns int language sql as 'select $1'; create function simplecaller() returns int language plpgsql as $$ declare sum int := 0; begin for n in 1..10 loop sum := sum + simplesql(n); if n = 5 then create or replace function simplesql(int) returns int language sql as 'select $1 + 100'; end if; end loop; return sum; end$$; select simplecaller(); -- Check that changes in search path are dealt with correctly create schema simple1; create function simple1.simpletarget(int) returns int language plpgsql as $$begin return $1; end$$; create function simpletarget(int) returns int language plpgsql as $$begin return $1 + 100; end$$; create or replace function simplecaller() returns int language plpgsql as $$ declare sum int := 0; begin for n in 1..10 loop sum := sum + simpletarget(n); if n = 5 then set local search_path = 'simple1'; end if; end loop; return sum; end$$; select simplecaller(); -- try it with non-volatile functions, too alter function simple1.simpletarget(int) immutable; alter function simpletarget(int) immutable; select simplecaller(); -- make sure flushing local caches changes nothing \c - select simplecaller(); -- Check case where first attempt to determine if it's simple fails create function simplesql() returns int language sql as $$select 1 / 0$$; create or replace function simplecaller() returns int language plpgsql as $$ declare x int; begin select simplesql() into x; return x; end$$; select simplecaller(); -- division by zero occurs during simple-expr check create or replace function simplesql() returns int language sql as $$select 2 + 2$$; select simplecaller(); -- Check case where called function changes from non-SRF to SRF (bug #18497) create or replace function simplecaller() returns int language plpgsql as $$ declare x int; begin x := simplesql(); return x; end$$; select simplecaller(); drop function simplesql(); create function simplesql() returns setof int language sql as $$select 22 + 22$$; select simplecaller(); select simplecaller(); -- Check handling of simple expression in a scrollable cursor (bug #18859) do $$ declare p_CurData refcursor; val int; begin open p_CurData scroll for select 42; fetch p_CurData into val; raise notice 'val = %', val; end; $$; libpg_query-17-6.1.0/test/sql/plpgsql_regress/plpgsql_transaction.sql000066400000000000000000000262031477334012600261010ustar00rootroot00000000000000CREATE TABLE test1 (a int, b text); CREATE PROCEDURE transaction_test1(x int, y text) LANGUAGE plpgsql AS $$ BEGIN FOR i IN 0..x LOOP INSERT INTO test1 (a, b) VALUES (i, y); IF i % 2 = 0 THEN COMMIT; ELSE ROLLBACK; END IF; END LOOP; END $$; CALL transaction_test1(9, 'foo'); SELECT * FROM test1; TRUNCATE test1; DO LANGUAGE plpgsql $$ BEGIN FOR i IN 0..9 LOOP INSERT INTO test1 (a) VALUES (i); IF i % 2 = 0 THEN COMMIT; ELSE ROLLBACK; END IF; END LOOP; END $$; SELECT * FROM test1; -- transaction commands not allowed when called in transaction block START TRANSACTION; CALL transaction_test1(9, 'error'); COMMIT; START TRANSACTION; DO LANGUAGE plpgsql $$ BEGIN COMMIT; END $$; COMMIT; TRUNCATE test1; -- not allowed in a function CREATE FUNCTION transaction_test2() RETURNS int LANGUAGE plpgsql AS $$ BEGIN FOR i IN 0..9 LOOP INSERT INTO test1 (a) VALUES (i); IF i % 2 = 0 THEN COMMIT; ELSE ROLLBACK; END IF; END LOOP; RETURN 1; END $$; SELECT transaction_test2(); SELECT * FROM test1; -- also not allowed if procedure is called from a function CREATE FUNCTION transaction_test3() RETURNS int LANGUAGE plpgsql AS $$ BEGIN CALL transaction_test1(9, 'error'); RETURN 1; END; $$; SELECT transaction_test3(); SELECT * FROM test1; -- DO block inside function CREATE FUNCTION transaction_test4() RETURNS int LANGUAGE plpgsql AS $$ BEGIN EXECUTE 'DO LANGUAGE plpgsql $x$ BEGIN COMMIT; END $x$'; RETURN 1; END; $$; SELECT transaction_test4(); -- proconfig settings currently disallow transaction statements CREATE PROCEDURE transaction_test5() LANGUAGE plpgsql SET work_mem = 555 AS $$ BEGIN COMMIT; END; $$; CALL transaction_test5(); -- SECURITY DEFINER currently disallow transaction statements CREATE PROCEDURE transaction_test5b() LANGUAGE plpgsql SECURITY DEFINER AS $$ BEGIN COMMIT; END; $$; CALL transaction_test5b(); TRUNCATE test1; -- nested procedure calls CREATE PROCEDURE transaction_test6(c text) LANGUAGE plpgsql AS $$ BEGIN CALL transaction_test1(9, c); END; $$; CALL transaction_test6('bar'); SELECT * FROM test1; TRUNCATE test1; CREATE PROCEDURE transaction_test7() LANGUAGE plpgsql AS $$ BEGIN DO 'BEGIN CALL transaction_test1(9, $x$baz$x$); END;'; END; $$; CALL transaction_test7(); SELECT * FROM test1; CREATE PROCEDURE transaction_test8() LANGUAGE plpgsql AS $$ BEGIN EXECUTE 'CALL transaction_test1(10, $x$baz$x$)'; END; $$; CALL transaction_test8(); -- commit inside cursor loop CREATE TABLE test2 (x int); INSERT INTO test2 VALUES (0), (1), (2), (3), (4); TRUNCATE test1; DO LANGUAGE plpgsql $$ DECLARE r RECORD; BEGIN FOR r IN SELECT * FROM test2 ORDER BY x LOOP INSERT INTO test1 (a) VALUES (r.x); COMMIT; END LOOP; END; $$; SELECT * FROM test1; -- check that this doesn't leak a holdable portal SELECT * FROM pg_cursors; -- error in cursor loop with commit TRUNCATE test1; DO LANGUAGE plpgsql $$ DECLARE r RECORD; BEGIN FOR r IN SELECT * FROM test2 ORDER BY x LOOP INSERT INTO test1 (a) VALUES (12/(r.x-2)); COMMIT; END LOOP; END; $$; SELECT * FROM test1; SELECT * FROM pg_cursors; -- rollback inside cursor loop TRUNCATE test1; DO LANGUAGE plpgsql $$ DECLARE r RECORD; BEGIN FOR r IN SELECT * FROM test2 ORDER BY x LOOP INSERT INTO test1 (a) VALUES (r.x); ROLLBACK; END LOOP; END; $$; SELECT * FROM test1; SELECT * FROM pg_cursors; -- first commit then rollback inside cursor loop TRUNCATE test1; DO LANGUAGE plpgsql $$ DECLARE r RECORD; BEGIN FOR r IN SELECT * FROM test2 ORDER BY x LOOP INSERT INTO test1 (a) VALUES (r.x); IF r.x % 2 = 0 THEN COMMIT; ELSE ROLLBACK; END IF; END LOOP; END; $$; SELECT * FROM test1; SELECT * FROM pg_cursors; -- rollback inside cursor loop TRUNCATE test1; DO LANGUAGE plpgsql $$ DECLARE r RECORD; BEGIN FOR r IN UPDATE test2 SET x = x * 2 RETURNING x LOOP INSERT INTO test1 (a) VALUES (r.x); ROLLBACK; END LOOP; END; $$; SELECT * FROM test1; SELECT * FROM test2; SELECT * FROM pg_cursors; -- interaction of FOR UPDATE cursor with subsequent updates (bug #17050) TRUNCATE test1; INSERT INTO test1 VALUES (1,'one'), (2,'two'), (3,'three'); DO LANGUAGE plpgsql $$ DECLARE l_cur CURSOR FOR SELECT a FROM test1 ORDER BY 1 FOR UPDATE; BEGIN FOR r IN l_cur LOOP UPDATE test1 SET b = b || ' ' || b WHERE a = r.a; COMMIT; END LOOP; END; $$; SELECT * FROM test1; SELECT * FROM pg_cursors; -- like bug #17050, but with implicit cursor TRUNCATE test1; INSERT INTO test1 VALUES (1,'one'), (2,'two'), (3,'three'); DO LANGUAGE plpgsql $$ DECLARE r RECORD; BEGIN FOR r IN SELECT a FROM test1 FOR UPDATE LOOP UPDATE test1 SET b = b || ' ' || b WHERE a = r.a; COMMIT; END LOOP; END; $$; SELECT * FROM test1; SELECT * FROM pg_cursors; -- commit inside block with exception handler TRUNCATE test1; DO LANGUAGE plpgsql $$ BEGIN BEGIN INSERT INTO test1 (a) VALUES (1); COMMIT; INSERT INTO test1 (a) VALUES (1/0); COMMIT; EXCEPTION WHEN division_by_zero THEN RAISE NOTICE 'caught division_by_zero'; END; END; $$; SELECT * FROM test1; -- rollback inside block with exception handler TRUNCATE test1; DO LANGUAGE plpgsql $$ BEGIN BEGIN INSERT INTO test1 (a) VALUES (1); ROLLBACK; INSERT INTO test1 (a) VALUES (1/0); ROLLBACK; EXCEPTION WHEN division_by_zero THEN RAISE NOTICE 'caught division_by_zero'; END; END; $$; SELECT * FROM test1; -- test commit/rollback inside exception handler, too TRUNCATE test1; DO LANGUAGE plpgsql $$ BEGIN FOR i IN 1..10 LOOP BEGIN INSERT INTO test1 VALUES (i, 'good'); INSERT INTO test1 VALUES (i/0, 'bad'); EXCEPTION WHEN division_by_zero THEN INSERT INTO test1 VALUES (i, 'exception'); IF (i % 3) > 0 THEN COMMIT; ELSE ROLLBACK; END IF; END; END LOOP; END; $$; SELECT * FROM test1; -- detoast result of simple expression after commit CREATE TEMP TABLE test4(f1 text); ALTER TABLE test4 ALTER COLUMN f1 SET STORAGE EXTERNAL; -- disable compression INSERT INTO test4 SELECT repeat('xyzzy', 2000); -- immutable mark is a bit of a lie, but it serves to make call a simple expr -- that will return a still-toasted value CREATE FUNCTION data_source(i int) RETURNS TEXT LANGUAGE sql AS 'select f1 from test4' IMMUTABLE; DO $$ declare x text; begin for i in 1..3 loop x := data_source(i); commit; end loop; raise notice 'length(x) = %', length(x); end $$; -- operations on composite types vs. internal transactions DO LANGUAGE plpgsql $$ declare c test1 := row(42, 'hello'); r bool; begin for i in 1..3 loop r := c is not null; raise notice 'r = %', r; commit; end loop; for i in 1..3 loop r := c is null; raise notice 'r = %', r; rollback; end loop; end $$; -- COMMIT failures DO LANGUAGE plpgsql $$ BEGIN CREATE TABLE test3 (y int UNIQUE DEFERRABLE INITIALLY DEFERRED); COMMIT; INSERT INTO test3 (y) VALUES (1); COMMIT; INSERT INTO test3 (y) VALUES (1); INSERT INTO test3 (y) VALUES (2); COMMIT; INSERT INTO test3 (y) VALUES (3); -- won't get here END; $$; SELECT * FROM test3; -- failure while trying to persist a cursor across a transaction (bug #15703) CREATE PROCEDURE cursor_fail_during_commit() LANGUAGE plpgsql AS $$ DECLARE id int; BEGIN FOR id IN SELECT 1/(x-1000) FROM generate_series(1,1000) x LOOP INSERT INTO test1 VALUES(id); COMMIT; END LOOP; END; $$; TRUNCATE test1; CALL cursor_fail_during_commit(); -- note that error occurs during first COMMIT, hence nothing is in test1 SELECT count(*) FROM test1; CREATE PROCEDURE cursor_fail_during_rollback() LANGUAGE plpgsql AS $$ DECLARE id int; BEGIN FOR id IN SELECT 1/(x-1000) FROM generate_series(1,1000) x LOOP INSERT INTO test1 VALUES(id); ROLLBACK; END LOOP; END; $$; TRUNCATE test1; CALL cursor_fail_during_rollback(); SELECT count(*) FROM test1; -- SET TRANSACTION DO LANGUAGE plpgsql $$ BEGIN PERFORM 1; RAISE INFO '%', current_setting('transaction_isolation'); COMMIT; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; PERFORM 1; RAISE INFO '%', current_setting('transaction_isolation'); COMMIT; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; PERFORM 1; RAISE INFO '%', current_setting('transaction_isolation'); COMMIT; END; $$; -- error cases DO LANGUAGE plpgsql $$ BEGIN SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; END; $$; DO LANGUAGE plpgsql $$ BEGIN SAVEPOINT foo; END; $$; DO LANGUAGE plpgsql $$ BEGIN EXECUTE 'COMMIT'; END; $$; -- snapshot handling test TRUNCATE test2; CREATE PROCEDURE transaction_test9() LANGUAGE SQL AS $$ INSERT INTO test2 VALUES (42); $$; DO LANGUAGE plpgsql $$ BEGIN ROLLBACK; CALL transaction_test9(); END $$; SELECT * FROM test2; -- another snapshot handling case: argument expressions of a CALL need -- to be evaluated with an up-to-date snapshot CREATE FUNCTION report_count() RETURNS int STABLE LANGUAGE sql AS $$ SELECT COUNT(*) FROM test2 $$; CREATE PROCEDURE transaction_test9b(cnt int) LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'count = %', cnt; END $$; DO $$ BEGIN CALL transaction_test9b(report_count()); INSERT INTO test2 VALUES(43); CALL transaction_test9b(report_count()); END $$; -- Test transaction in procedure with output parameters. This uses a -- different portal strategy and different code paths in pquery.c. CREATE PROCEDURE transaction_test10a(INOUT x int) LANGUAGE plpgsql AS $$ BEGIN x := x + 1; COMMIT; END; $$; CALL transaction_test10a(10); CREATE PROCEDURE transaction_test10b(INOUT x int) LANGUAGE plpgsql AS $$ BEGIN x := x - 1; ROLLBACK; END; $$; CALL transaction_test10b(10); -- transaction timestamp vs. statement timestamp CREATE PROCEDURE transaction_test11() LANGUAGE plpgsql AS $$ DECLARE s1 timestamp with time zone; s2 timestamp with time zone; s3 timestamp with time zone; t1 timestamp with time zone; t2 timestamp with time zone; t3 timestamp with time zone; BEGIN s1 := statement_timestamp(); t1 := transaction_timestamp(); ASSERT s1 = t1; PERFORM pg_sleep(0.001); COMMIT; s2 := statement_timestamp(); t2 := transaction_timestamp(); ASSERT s2 = s1; ASSERT t2 > t1; PERFORM pg_sleep(0.001); ROLLBACK; s3 := statement_timestamp(); t3 := transaction_timestamp(); ASSERT s3 = s1; ASSERT t3 > t2; END; $$; CALL transaction_test11(); -- transaction chain TRUNCATE test1; DO LANGUAGE plpgsql $$ BEGIN ROLLBACK; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; FOR i IN 0..3 LOOP RAISE INFO 'transaction_isolation = %', current_setting('transaction_isolation'); INSERT INTO test1 (a) VALUES (i); IF i % 2 = 0 THEN COMMIT AND CHAIN; ELSE ROLLBACK AND CHAIN; END IF; END LOOP; END $$; SELECT * FROM test1; DROP TABLE test1; DROP TABLE test2; DROP TABLE test3; libpg_query-17-6.1.0/test/sql/plpgsql_regress/plpgsql_trap.sql000066400000000000000000000102571477334012600245240ustar00rootroot00000000000000-- -- Test error trapping -- create function trap_zero_divide(int) returns int as $$ declare x int; sx smallint; begin begin -- start a subtransaction raise notice 'should see this'; x := 100 / $1; raise notice 'should see this only if % <> 0', $1; sx := $1; raise notice 'should see this only if % fits in smallint', $1; if $1 < 0 then raise exception '% is less than zero', $1; end if; exception when division_by_zero then raise notice 'caught division_by_zero'; x := -1; when NUMERIC_VALUE_OUT_OF_RANGE then raise notice 'caught numeric_value_out_of_range'; x := -2; end; return x; end$$ language plpgsql; select trap_zero_divide(50); select trap_zero_divide(0); select trap_zero_divide(100000); select trap_zero_divide(-100); create table match_source as select x as id, x*10 as data, x/10 as ten from generate_series(1,100) x; create function trap_matching_test(int) returns int as $$ declare x int; sx smallint; y int; begin begin -- start a subtransaction x := 100 / $1; sx := $1; select into y data from match_source where id = (select id from match_source b where ten = $1); exception when data_exception then -- category match raise notice 'caught data_exception'; x := -1; when NUMERIC_VALUE_OUT_OF_RANGE OR CARDINALITY_VIOLATION then raise notice 'caught numeric_value_out_of_range or cardinality_violation'; x := -2; end; return x; end$$ language plpgsql; select trap_matching_test(50); select trap_matching_test(0); select trap_matching_test(100000); select trap_matching_test(1); create temp table foo (f1 int); create function subxact_rollback_semantics() returns int as $$ declare x int; begin x := 1; insert into foo values(x); begin x := x + 1; insert into foo values(x); raise exception 'inner'; exception when others then x := x * 10; end; insert into foo values(x); return x; end$$ language plpgsql; select subxact_rollback_semantics(); select * from foo; drop table foo; create function trap_timeout() returns void as $$ begin declare x int; begin -- we assume this will take longer than 1 second: select count(*) into x from generate_series(1, 1_000_000_000_000); exception when others then raise notice 'caught others?'; when query_canceled then raise notice 'nyeah nyeah, can''t stop me'; end; -- Abort transaction to abandon the statement_timeout setting. Otherwise, -- the next top-level statement would be vulnerable to the timeout. raise exception 'end of function'; end$$ language plpgsql; begin; set statement_timeout to 1000; select trap_timeout(); rollback; -- Test for pass-by-ref values being stored in proper context create function test_variable_storage() returns text as $$ declare x text; begin x := '1234'; begin x := x || '5678'; -- force error inside subtransaction SPI context perform trap_zero_divide(-100); exception when others then x := x || '9012'; end; return x; end$$ language plpgsql; select test_variable_storage(); -- -- test foreign key error trapping -- create temp table root(f1 int primary key); create temp table leaf(f1 int references root deferrable); insert into root values(1); insert into leaf values(1); insert into leaf values(2); -- fails create function trap_foreign_key(int) returns int as $$ begin begin -- start a subtransaction insert into leaf values($1); exception when foreign_key_violation then raise notice 'caught foreign_key_violation'; return 0; end; return 1; end$$ language plpgsql; create function trap_foreign_key_2() returns int as $$ begin begin -- start a subtransaction set constraints all immediate; exception when foreign_key_violation then raise notice 'caught foreign_key_violation'; return 0; end; return 1; end$$ language plpgsql; select trap_foreign_key(1); select trap_foreign_key(2); -- detects FK violation begin; set constraints all deferred; select trap_foreign_key(2); -- should not detect FK violation savepoint x; set constraints all immediate; -- fails rollback to x; select trap_foreign_key_2(); -- detects FK violation commit; -- still fails drop function trap_foreign_key(int); drop function trap_foreign_key_2(); libpg_query-17-6.1.0/test/sql/plpgsql_regress/plpgsql_trigger.sql000066400000000000000000000011731477334012600252160ustar00rootroot00000000000000-- Simple test to verify accessibility of the OLD and NEW trigger variables create table testtr (a int, b text); create function testtr_trigger() returns trigger language plpgsql as $$begin raise notice 'tg_op = %', tg_op; raise notice 'old(%) = %', old.a, row(old.*); raise notice 'new(%) = %', new.a, row(new.*); if (tg_op = 'DELETE') then return old; else return new; end if; end$$; create trigger testtr_trigger before insert or delete or update on testtr for each row execute function testtr_trigger(); insert into testtr values (1, 'one'), (2, 'two'); update testtr set a = a + 1; delete from testtr; libpg_query-17-6.1.0/test/sql/plpgsql_regress/plpgsql_varprops.sql000066400000000000000000000074731477334012600254400ustar00rootroot00000000000000-- -- Tests for PL/pgSQL variable properties: CONSTANT, NOT NULL, initializers -- create type var_record as (f1 int4, f2 int4); create domain int_nn as int not null; create domain var_record_nn as var_record not null; create domain var_record_colnn as var_record check((value).f2 is not null); -- CONSTANT do $$ declare x constant int := 42; begin raise notice 'x = %', x; end$$; do $$ declare x constant int; begin x := 42; -- fail end$$; do $$ declare x constant int; y int; begin for x, y in select 1, 2 loop -- fail end loop; end$$; do $$ declare x constant int[]; begin x[1] := 42; -- fail end$$; do $$ declare x constant int[]; y int; begin for x[1], y in select 1, 2 loop -- fail (currently, unsupported syntax) end loop; end$$; do $$ declare x constant var_record; begin x.f1 := 42; -- fail end$$; do $$ declare x constant var_record; y int; begin for x.f1, y in select 1, 2 loop -- fail end loop; end$$; -- initializer expressions do $$ declare x int := sin(0); begin raise notice 'x = %', x; end$$; do $$ declare x int := 1/0; -- fail begin raise notice 'x = %', x; end$$; do $$ declare x bigint[] := array[1,3,5]; begin raise notice 'x = %', x; end$$; do $$ declare x record := row(1,2,3); begin raise notice 'x = %', x; end$$; do $$ declare x var_record := row(1,2); begin raise notice 'x = %', x; end$$; -- NOT NULL do $$ declare x int not null; -- fail begin raise notice 'x = %', x; end$$; do $$ declare x int not null := 42; begin raise notice 'x = %', x; x := null; -- fail end$$; do $$ declare x int not null := null; -- fail begin raise notice 'x = %', x; end$$; do $$ declare x record not null; -- fail begin raise notice 'x = %', x; end$$; do $$ declare x record not null := row(42); begin raise notice 'x = %', x; x := row(null); -- ok raise notice 'x = %', x; x := null; -- fail end$$; do $$ declare x record not null := null; -- fail begin raise notice 'x = %', x; end$$; do $$ declare x var_record not null; -- fail begin raise notice 'x = %', x; end$$; do $$ declare x var_record not null := row(41,42); begin raise notice 'x = %', x; x := row(null,null); -- ok raise notice 'x = %', x; x := null; -- fail end$$; do $$ declare x var_record not null := null; -- fail begin raise notice 'x = %', x; end$$; -- Check that variables are reinitialized on block re-entry. do $$ begin for i in 1..3 loop declare x int; y int := i; r record; c var_record; begin if i = 1 then x := 42; r := row(i, i+1); c := row(i, i+1); end if; raise notice 'x = %', x; raise notice 'y = %', y; raise notice 'r = %', r; raise notice 'c = %', c; end; end loop; end$$; -- Check enforcement of domain constraints during initialization do $$ declare x int_nn; -- fail begin raise notice 'x = %', x; end$$; do $$ declare x int_nn := null; -- fail begin raise notice 'x = %', x; end$$; do $$ declare x int_nn := 42; begin raise notice 'x = %', x; x := null; -- fail end$$; do $$ declare x var_record_nn; -- fail begin raise notice 'x = %', x; end$$; do $$ declare x var_record_nn := null; -- fail begin raise notice 'x = %', x; end$$; do $$ declare x var_record_nn := row(1,2); begin raise notice 'x = %', x; x := row(null,null); -- ok x := null; -- fail end$$; do $$ declare x var_record_colnn; -- fail begin raise notice 'x = %', x; end$$; do $$ declare x var_record_colnn := null; -- fail begin raise notice 'x = %', x; end$$; do $$ declare x var_record_colnn := row(1,null); -- fail begin raise notice 'x = %', x; end$$; do $$ declare x var_record_colnn := row(1,2); begin raise notice 'x = %', x; x := null; -- fail end$$; do $$ declare x var_record_colnn := row(1,2); begin raise notice 'x = %', x; x := row(null,null); -- fail end$$; libpg_query-17-6.1.0/test/sql/postgres_regress/000077500000000000000000000000001477334012600214525ustar00rootroot00000000000000libpg_query-17-6.1.0/test/sql/postgres_regress/advisory_lock.sql000066400000000000000000000106521477334012600250470ustar00rootroot00000000000000-- -- ADVISORY LOCKS -- SELECT oid AS datoid FROM pg_database WHERE datname = current_database() \gset 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' AND database = :datoid 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' AND database = :datoid; -- 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' AND database = :datoid; 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' AND database = :datoid 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' AND database = :datoid 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' AND database = :datoid; 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' AND database = :datoid 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' AND database = :datoid ORDER BY classid, objid, objsubid; -- releasing all session locks SELECT pg_advisory_unlock_all(); SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid; 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' AND database = :datoid ORDER BY classid, objid, objsubid; COMMIT; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid; -- 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' AND database = :datoid 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 database = :datoid; -- .. 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' AND database = :datoid ORDER BY classid, objid, objsubid; SELECT pg_advisory_unlock_all(); SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid; libpg_query-17-6.1.0/test/sql/postgres_regress/aggregates.sql000066400000000000000000001415121477334012600243100ustar00rootroot00000000000000-- -- AGGREGATES -- -- directory paths are passed to us in environment variables \getenv abs_srcdir PG_ABS_SRCDIR -- avoid bit-exact output here because operations may not be bit-exact. SET extra_float_digits = 0; -- prepare some test data CREATE TABLE aggtest ( a int2, b float4 ); \set filename :abs_srcdir '/data/agg.data' COPY aggtest FROM :'filename'; ANALYZE aggtest; SELECT avg(four) AS avg_1 FROM onek; SELECT avg(a) AS avg_32 FROM aggtest WHERE a < 100; SELECT any_value(v) FROM (VALUES (1), (2), (3)) AS v (v); SELECT any_value(v) FROM (VALUES (NULL)) AS v (v); SELECT any_value(v) FROM (VALUES (NULL), (1), (2)) AS v (v); SELECT any_value(v) FROM (VALUES (array['hello', 'world'])) AS v (v); -- 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('inf'::numeric), var_samp('inf'::numeric); SELECT stddev_pop('inf'::numeric), stddev_samp('inf'::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 sum(x::float8), avg(x::float8), var_pop(x::float8) FROM (VALUES ('1'), ('infinity')) v(x); SELECT sum(x::float8), avg(x::float8), var_pop(x::float8) FROM (VALUES ('infinity'), ('1')) v(x); SELECT sum(x::float8), avg(x::float8), var_pop(x::float8) FROM (VALUES ('infinity'), ('infinity')) v(x); SELECT sum(x::float8), avg(x::float8), var_pop(x::float8) FROM (VALUES ('-infinity'), ('infinity')) v(x); SELECT sum(x::float8), avg(x::float8), var_pop(x::float8) FROM (VALUES ('-infinity'), ('-infinity')) v(x); SELECT sum(x::numeric), avg(x::numeric), var_pop(x::numeric) FROM (VALUES ('1'), ('infinity')) v(x); SELECT sum(x::numeric), avg(x::numeric), var_pop(x::numeric) FROM (VALUES ('infinity'), ('1')) v(x); SELECT sum(x::numeric), avg(x::numeric), var_pop(x::numeric) FROM (VALUES ('infinity'), ('infinity')) v(x); SELECT sum(x::numeric), avg(x::numeric), var_pop(x::numeric) FROM (VALUES ('-infinity'), ('infinity')) v(x); SELECT sum(x::numeric), avg(x::numeric), var_pop(x::numeric) 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 "?", BIT_XOR(i8) 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", BIT_XOR(i2) AS "5", BIT_XOR(i4) AS "5", BIT_XOR(i8) AS "5", BIT_XOR(i) AS "?", BIT_XOR(x) AS "7", BIT_XOR(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; -- DISTINCT can also trigger wrong answers with hash aggregation (bug #18465) begin; set local enable_sort = off; explain (costs off) select f1, (select distinct min(t1.f1) from int4_tbl t1 where t1.f1 = t0.f1) from int4_tbl t0; select f1, (select distinct min(t1.f1) from int4_tbl t1 where t1.f1 = t0.f1) from int4_tbl t0; rollback; -- check for correct detection of nested-aggregate errors select max(min(unique1)) from tenk1; select (select max(min(unique1)) from int8_tbl) from tenk1; select avg((select avg(a1.col1 order by (select avg(a2.col2) from tenk1 a3)) from tenk1 a1(col1))) from tenk1 a2(col2); -- -- 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 int); create temp table t2(f1 bigint, f2 oid); 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; -- check case where we have to inject nullingrels into coerced join alias select f1, count(*) from t1 x(x0,x1) left join (t1 left join t2 using(f1)) on (x0 = 0) group by f1; -- same, for a RelabelType coercion select f2, count(*) from t1 x(x0,x1) left join (t1 left join t2 using(f2)) on (x0 = 0) group by f2; drop table t1, t2; -- -- Test planner's selection of pathkeys for ORDER BY aggregates -- -- Ensure we order by four. This suits the most aggregate functions. explain (costs off) select sum(two order by two),max(four order by four), min(four order by four) from tenk1; -- Ensure we order by two. It's a tie between ordering by two and four but -- we tiebreak on the aggregate's position. explain (costs off) select sum(two order by two), max(four order by four), min(four order by four), max(two order by two) from tenk1; -- Similar to above, but tiebreak on ordering by four explain (costs off) select max(four order by four), sum(two order by two), min(four order by four), max(two order by two) from tenk1; -- Ensure this one orders by ten since there are 3 aggregates that require ten -- vs two that suit two and four. explain (costs off) select max(four order by four), sum(two order by two), min(four order by four), max(two order by two), sum(ten order by ten), min(ten order by ten), max(ten order by ten) from tenk1; -- Try a case involving a GROUP BY clause where the GROUP BY column is also -- part of an aggregate's ORDER BY clause. We want a sort order that works -- for the GROUP BY along with the first and the last aggregate. explain (costs off) select sum(unique1 order by ten, two), sum(unique1 order by four), sum(unique1 order by two, four) from tenk1 group by ten; -- Ensure that we never choose to provide presorted input to an Aggref with -- a volatile function in the ORDER BY / DISTINCT clause. We want to ensure -- these sorts are performed individually rather than at the query level. explain (costs off) select sum(unique1 order by two), sum(unique1 order by four), sum(unique1 order by four, two), sum(unique1 order by two, random()), sum(unique1 order by two, random(), random() + 1) from tenk1 group by ten; -- Ensure consecutive NULLs are properly treated as distinct from each other select array_agg(distinct val) from (select null as val from generate_series(1, 2)); -- Ensure no ordering is requested when enable_presorted_aggregate is off set enable_presorted_aggregate to off; explain (costs off) select sum(two order by two) from tenk1; reset enable_presorted_aggregate; -- -- 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; -- test a more complex permutation that has previous caused issues select string_agg(distinct 'a', ','), sum(( select sum(1) from (values(1)) b(id) where a.id = b.id )) from unnest(array[1]) a(id); -- 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; -- Test parallel string_agg and array_agg create table pagg_test (x int, y int) with (autovacuum_enabled = off); insert into pagg_test select (case x % 4 when 1 then null else x end), x % 10 from generate_series(1,5000) x; set parallel_setup_cost TO 0; set parallel_tuple_cost TO 0; set parallel_leader_participation TO 0; set min_parallel_table_scan_size = 0; set bytea_output = 'escape'; set max_parallel_workers_per_gather = 2; -- create a view as we otherwise have to repeat this query a few times. create view v_pagg_test AS select y, min(t) AS tmin,max(t) AS tmax,count(distinct t) AS tndistinct, min(b) AS bmin,max(b) AS bmax,count(distinct b) AS bndistinct, min(a) AS amin,max(a) AS amax,count(distinct a) AS andistinct, min(aa) AS aamin,max(aa) AS aamax,count(distinct aa) AS aandistinct from ( select y, unnest(regexp_split_to_array(a1.t, ','))::int AS t, unnest(regexp_split_to_array(a1.b::text, ',')) AS b, unnest(a1.a) AS a, unnest(a1.aa) AS aa from ( select y, string_agg(x::text, ',') AS t, string_agg(x::text::bytea, ',') AS b, array_agg(x) AS a, array_agg(ARRAY[x]) AS aa from pagg_test group by y ) a1 ) a2 group by y; -- Ensure results are correct. select * from v_pagg_test order by y; -- Ensure parallel aggregation is actually being used. explain (costs off) select * from v_pagg_test order by y; -- Ensure results are the same without parallel aggregation. set max_parallel_workers_per_gather = 0; select * from v_pagg_test order by y; -- Check that we don't fail on anonymous record types. set max_parallel_workers_per_gather = 2; explain (costs off) select array_dims(array_agg(s)) from (select * from pagg_test) s; select array_dims(array_agg(s)) from (select * from pagg_test) s; -- Clean up reset max_parallel_workers_per_gather; reset bytea_output; reset min_parallel_table_scan_size; reset parallel_leader_participation; reset parallel_tuple_cost; reset parallel_setup_cost; drop view v_pagg_test; drop table pagg_test; -- 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); select any_value(v) filter (where v > 2) from (values (1), (2), (3)) as v (v); -- 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; -- check handling of bare boolean Var in FILTER select max(0) filter (where b1) from bool_test; select (select max(0) filter (where b1)) from bool_test; -- check for correct detection of nested-aggregate errors in FILTER select max(unique1) filter (where sum(ten) > 0) from tenk1; select (select max(unique1) filter (where sum(ten) > 0) from int8_tbl) from tenk1; select max(unique1) filter (where bool_or(ten > 0)) from tenk1; select (select max(unique1) filter (where bool_or(ten > 0)) from int8_tbl) from tenk1; -- 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; -- GROUP BY optimization by reordering GROUP BY clauses CREATE TABLE btg AS SELECT i % 10 AS x, i % 10 AS y, 'abc' || i % 10 AS z, i AS w FROM generate_series(1, 100) AS i; CREATE INDEX btg_x_y_idx ON btg(x, y); ANALYZE btg; SET enable_hashagg = off; SET enable_seqscan = off; -- Utilize the ordering of index scan to avoid a Sort operation EXPLAIN (COSTS OFF) SELECT count(*) FROM btg GROUP BY y, x; -- Engage incremental sort EXPLAIN (COSTS OFF) SELECT count(*) FROM btg GROUP BY z, y, w, x; -- Utilize the ordering of subquery scan to avoid a Sort operation EXPLAIN (COSTS OFF) SELECT count(*) FROM (SELECT * FROM btg ORDER BY x, y, w, z) AS q1 GROUP BY w, x, z, y; -- Utilize the ordering of merge join to avoid a full Sort operation SET enable_hashjoin = off; SET enable_nestloop = off; EXPLAIN (COSTS OFF) SELECT count(*) FROM btg t1 JOIN btg t2 ON t1.z = t2.z AND t1.w = t2.w AND t1.x = t2.x GROUP BY t1.x, t1.y, t1.z, t1.w; RESET enable_nestloop; RESET enable_hashjoin; -- Should work with and without GROUP-BY optimization EXPLAIN (COSTS OFF) SELECT count(*) FROM btg GROUP BY w, x, z, y ORDER BY y, x, z, w; -- Utilize incremental sort to make the ORDER BY rule a bit cheaper EXPLAIN (COSTS OFF) SELECT count(*) FROM btg GROUP BY w, x, y, z ORDER BY x*x, z; -- Test the case where the number of incoming subtree path keys is more than -- the number of grouping keys. CREATE INDEX btg_y_x_w_idx ON btg(y, x, w); EXPLAIN (VERBOSE, COSTS OFF) SELECT y, x, array_agg(distinct w) FROM btg WHERE y < 0 GROUP BY x, y; -- Ensure that we do not select the aggregate pathkeys instead of the grouping -- pathkeys CREATE TABLE group_agg_pk AS SELECT i % 10 AS x, i % 2 AS y, i % 2 AS z, 2 AS w, i % 10 AS f FROM generate_series(1,100) AS i; ANALYZE group_agg_pk; SET enable_nestloop = off; SET enable_hashjoin = off; EXPLAIN (COSTS OFF) SELECT avg(c1.f ORDER BY c1.x, c1.y) FROM group_agg_pk c1 JOIN group_agg_pk c2 ON c1.x = c2.x GROUP BY c1.w, c1.z; SELECT avg(c1.f ORDER BY c1.x, c1.y) FROM group_agg_pk c1 JOIN group_agg_pk c2 ON c1.x = c2.x GROUP BY c1.w, c1.z; -- Pathkeys, built in a subtree, can be used to optimize GROUP-BY clause -- ordering. Also, here we check that it doesn't depend on the initial clause -- order in the GROUP-BY list. EXPLAIN (COSTS OFF) SELECT c1.y,c1.x FROM group_agg_pk c1 JOIN group_agg_pk c2 ON c1.x = c2.x GROUP BY c1.y,c1.x,c2.x; EXPLAIN (COSTS OFF) SELECT c1.y,c1.x FROM group_agg_pk c1 JOIN group_agg_pk c2 ON c1.x = c2.x GROUP BY c1.y,c2.x,c1.x; RESET enable_nestloop; RESET enable_hashjoin; DROP TABLE group_agg_pk; -- Test the case where the ordering of the scan matches the ordering within the -- aggregate but cannot be found in the group-by list CREATE TABLE agg_sort_order (c1 int PRIMARY KEY, c2 int); CREATE UNIQUE INDEX agg_sort_order_c2_idx ON agg_sort_order(c2); INSERT INTO agg_sort_order SELECT i, i FROM generate_series(1,100)i; ANALYZE agg_sort_order; EXPLAIN (COSTS OFF) SELECT array_agg(c1 ORDER BY c2),c2 FROM agg_sort_order WHERE c2 < 100 GROUP BY c1 ORDER BY 2; DROP TABLE agg_sort_order CASCADE; DROP TABLE btg; RESET enable_hashagg; RESET enable_seqscan; -- 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; 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 multiple usage of an aggregate whose finalfn returns a R/W datum BEGIN; CREATE FUNCTION rwagg_sfunc(x anyarray, y anyarray) RETURNS anyarray LANGUAGE plpgsql IMMUTABLE AS $$ BEGIN RETURN array_fill(y[1], ARRAY[4]); END; $$; CREATE FUNCTION rwagg_finalfunc(x anyarray) RETURNS anyarray LANGUAGE plpgsql STRICT IMMUTABLE AS $$ DECLARE res x%TYPE; BEGIN -- assignment is essential for this test, it expands the array to R/W res := array_fill(x[1], ARRAY[4]); RETURN res; END; $$; CREATE AGGREGATE rwagg(anyarray) ( STYPE = anyarray, SFUNC = rwagg_sfunc, FINALFUNC = rwagg_finalfunc ); CREATE FUNCTION eatarray(x real[]) RETURNS real[] LANGUAGE plpgsql STRICT IMMUTABLE AS $$ BEGIN x[1] := x[1] + 1; RETURN x; END; $$; SELECT eatarray(rwagg(ARRAY[1.0::real])), eatarray(rwagg(ARRAY[1.0::real])); ROLLBACK; -- test coverage for aggregate combine/serial/deserial functions BEGIN; 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 set enable_memoize to off; explain (costs off) select 1 from tenk1 where (hundred, thousand) in (select twothousand, twothousand from onek); reset enable_memoize; -- -- 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-17-6.1.0/test/sql/postgres_regress/alter_generic.sql000066400000000000000000000673111477334012600250060ustar00rootroot00000000000000-- -- Test for ALTER some_object {RENAME TO, OWNER TO, SET SCHEMA} -- -- directory paths and dlsuffix are passed to us in environment variables \getenv libdir PG_LIBDIR \getenv dlsuffix PG_DLSUFFIX \set regresslib :libdir '/regress' :dlsuffix CREATE FUNCTION test_opclass_options_func(internal) RETURNS void AS :'regresslib', 'test_opclass_options_func' LANGUAGE C; -- 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-17-6.1.0/test/sql/postgres_regress/alter_operator.sql000066400000000000000000000167551477334012600252330ustar00rootroot00000000000000CREATE 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; -- -- Test resetting and setting restrict and join attributes. -- 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 (RESTRICT = non_existent_func); ALTER OPERATOR === (boolean, boolean) SET (JOIN = non_existent_func); -- 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); RESET SESSION AUTHORIZATION; -- -- Test setting commutator, negator, merges, and hashes attributes, -- which can only be set if not already set -- CREATE FUNCTION alter_op_test_fn_bool_real(boolean, real) RETURNS boolean AS $$ SELECT NULL::BOOLEAN; $$ LANGUAGE sql IMMUTABLE; CREATE FUNCTION alter_op_test_fn_real_bool(real, boolean) RETURNS boolean AS $$ SELECT NULL::BOOLEAN; $$ LANGUAGE sql IMMUTABLE; -- operator CREATE OPERATOR === ( LEFTARG = boolean, RIGHTARG = real, PROCEDURE = alter_op_test_fn_bool_real ); -- commutator CREATE OPERATOR ==== ( LEFTARG = real, RIGHTARG = boolean, PROCEDURE = alter_op_test_fn_real_bool ); -- negator CREATE OPERATOR !==== ( LEFTARG = boolean, RIGHTARG = real, PROCEDURE = alter_op_test_fn_bool_real ); -- No-op setting already false hashes and merges to false works ALTER OPERATOR === (boolean, real) SET (MERGES = false); ALTER OPERATOR === (boolean, real) SET (HASHES = false); -- Test setting merges and hashes ALTER OPERATOR === (boolean, real) SET (MERGES); ALTER OPERATOR === (boolean, real) SET (HASHES); SELECT oprcanmerge, oprcanhash FROM pg_operator WHERE oprname = '===' AND oprleft = 'boolean'::regtype AND oprright = 'real'::regtype; -- Test setting commutator ALTER OPERATOR === (boolean, real) SET (COMMUTATOR = ====); -- Check that oprcom has been set on both the operator and commutator, -- that they reference each other, and that the operator used is the existing -- one we created and not a new shell operator. SELECT op.oprname AS operator_name, com.oprname AS commutator_name, com.oprcode AS commutator_func FROM pg_operator op INNER JOIN pg_operator com ON (op.oid = com.oprcom AND op.oprcom = com.oid) WHERE op.oprname = '===' AND op.oprleft = 'boolean'::regtype AND op.oprright = 'real'::regtype; -- Cannot set self as negator ALTER OPERATOR === (boolean, real) SET (NEGATOR = ===); -- Test setting negator ALTER OPERATOR === (boolean, real) SET (NEGATOR = !====); -- Check that oprnegate has been set on both the operator and negator, -- that they reference each other, and that the operator used is the existing -- one we created and not a new shell operator. SELECT op.oprname AS operator_name, neg.oprname AS negator_name, neg.oprcode AS negator_func FROM pg_operator op INNER JOIN pg_operator neg ON (op.oid = neg.oprnegate AND op.oprnegate = neg.oid) WHERE op.oprname = '===' AND op.oprleft = 'boolean'::regtype AND op.oprright = 'real'::regtype; -- Test that no-op set succeeds ALTER OPERATOR === (boolean, real) SET (NEGATOR = !====); ALTER OPERATOR === (boolean, real) SET (COMMUTATOR = ====); ALTER OPERATOR === (boolean, real) SET (MERGES); ALTER OPERATOR === (boolean, real) SET (HASHES); -- Check that the final state of the operator is as we expect SELECT oprcanmerge, oprcanhash, pg_describe_object('pg_operator'::regclass, oprcom, 0) AS commutator, pg_describe_object('pg_operator'::regclass, oprnegate, 0) AS negator FROM pg_operator WHERE oprname = '===' AND oprleft = 'boolean'::regtype AND oprright = 'real'::regtype; -- Cannot change commutator, negator, merges, and hashes when already set CREATE OPERATOR @= ( LEFTARG = real, RIGHTARG = boolean, PROCEDURE = alter_op_test_fn_real_bool ); CREATE OPERATOR @!= ( LEFTARG = boolean, RIGHTARG = real, PROCEDURE = alter_op_test_fn_bool_real ); ALTER OPERATOR === (boolean, real) SET (COMMUTATOR = @=); ALTER OPERATOR === (boolean, real) SET (NEGATOR = @!=); ALTER OPERATOR === (boolean, real) SET (MERGES = false); ALTER OPERATOR === (boolean, real) SET (HASHES = false); -- Cannot set an operator that already has a commutator as the commutator ALTER OPERATOR @=(real, boolean) SET (COMMUTATOR = ===); -- Cannot set an operator that already has a negator as the negator ALTER OPERATOR @!=(boolean, real) SET (NEGATOR = ===); -- Check no changes made SELECT oprcanmerge, oprcanhash, pg_describe_object('pg_operator'::regclass, oprcom, 0) AS commutator, pg_describe_object('pg_operator'::regclass, oprnegate, 0) AS negator FROM pg_operator WHERE oprname = '===' AND oprleft = 'boolean'::regtype AND oprright = 'real'::regtype; -- -- Clean up -- DROP USER regress_alter_op_user; DROP OPERATOR === (boolean, boolean); DROP OPERATOR === (boolean, real); DROP OPERATOR ==== (real, boolean); DROP OPERATOR !==== (boolean, real); DROP OPERATOR @= (real, boolean); DROP OPERATOR @!= (boolean, real); DROP FUNCTION customcontsel(internal, oid, internal, integer); DROP FUNCTION alter_op_test_fn(boolean, boolean); DROP FUNCTION alter_op_test_fn_bool_real(boolean, real); DROP FUNCTION alter_op_test_fn_real_bool(real, boolean); libpg_query-17-6.1.0/test/sql/postgres_regress/alter_table.sql000066400000000000000000003424241477334012600244620ustar00rootroot00000000000000-- -- 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; -- rename statements with mismatching statement and object types CREATE TABLE alter_idx_rename_test (a INT); CREATE INDEX alter_idx_rename_test_idx ON alter_idx_rename_test (a); CREATE TABLE alter_idx_rename_test_parted (a INT) PARTITION BY LIST (a); CREATE INDEX alter_idx_rename_test_parted_idx ON alter_idx_rename_test_parted (a); BEGIN; ALTER INDEX alter_idx_rename_test RENAME TO alter_idx_rename_test_2; ALTER INDEX alter_idx_rename_test_parted RENAME TO alter_idx_rename_test_parted_2; SELECT relation::regclass, mode FROM pg_locks WHERE pid = pg_backend_pid() AND locktype = 'relation' AND relation::regclass::text LIKE 'alter\_idx%' ORDER BY relation::regclass::text COLLATE "C"; COMMIT; BEGIN; ALTER INDEX alter_idx_rename_test_idx RENAME TO alter_idx_rename_test_idx_2; ALTER INDEX alter_idx_rename_test_parted_idx RENAME TO alter_idx_rename_test_parted_idx_2; SELECT relation::regclass, mode FROM pg_locks WHERE pid = pg_backend_pid() AND locktype = 'relation' AND relation::regclass::text LIKE 'alter\_idx%' ORDER BY relation::regclass::text COLLATE "C"; COMMIT; BEGIN; ALTER TABLE alter_idx_rename_test_idx_2 RENAME TO alter_idx_rename_test_idx_3; ALTER TABLE alter_idx_rename_test_parted_idx_2 RENAME TO alter_idx_rename_test_parted_idx_3; SELECT relation::regclass, mode FROM pg_locks WHERE pid = pg_backend_pid() AND locktype = 'relation' AND relation::regclass::text LIKE 'alter\_idx%' ORDER BY relation::regclass::text COLLATE "C"; COMMIT; DROP TABLE alter_idx_rename_test_2; -- 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); \d atacc1 alter table atacc1 alter column test drop not null; \d atacc1 alter table atacc1 drop constraint "atacc1_pkey"; alter table atacc1 alter column test drop not null; \d atacc1 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; -- We disallow changing table's row type if it's used for storage create table at_tab1 (a int, b text); create table at_tab2 (x int, y at_tab1); alter table at_tab1 alter column b type varchar; -- fails drop table at_tab2; -- Use of row type in an expression is defended differently create table at_tab2 (x int, y text, check((x,y)::at_tab1 = (1,'42')::at_tab1)); alter table at_tab1 alter column b type varchar; -- allowed, but ... insert into at_tab2 values(1,'42'); -- ... this will fail drop table at_tab1, at_tab2; -- Check it for a partitioned table, too create table at_tab1 (a int, b text) partition by list(a); create table at_tab2 (x int, y at_tab1); alter table at_tab1 alter column b type varchar; -- fails drop table at_tab1, at_tab2; -- 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); 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, c text storage plain); select reltoastrelid <> 0 as has_toast_table from pg_class where oid = 'test_storage'::regclass; alter table test_storage alter a set storage plain; -- rewrite table to remove its TOAST table; need a non-constant column default alter table test_storage add b int default random()::int; select reltoastrelid <> 0 as has_toast_table from pg_class where oid = 'test_storage'::regclass; alter table test_storage alter a set storage default; -- re-add TOAST table select reltoastrelid <> 0 as has_toast_table from pg_class where oid = 'test_storage'::regclass; -- check STORAGE correctness create table test_storage_failed (a text, b int storage extended); -- 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; -- related case (bug #17811) begin; create temp table t1 as select * from int8_tbl; create temp view v1 as select 1::int8 as q1; create temp view v2 as select * from v1; create or replace temp view v1 with (security_barrier = true) as select * from t1; create temp table log (q1 int8, q2 int8); create rule v1_upd_rule as on update to v1 do also insert into log values (new.*); update v2 set q1 = q1 + 1 where q1 = 123; select * from t1; select * from log; rollback; -- check adding a column not itself 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 DROP TABLE test_tbl1; CREATE TABLE test_tbl1 (x int, y text); CREATE INDEX test_tbl1_idx ON test_tbl1((row(x,y)::test_type1)); ALTER TYPE test_type1 ALTER ATTRIBUTE b TYPE varchar; -- fails DROP TABLE test_tbl1; DROP TYPE test_type1; 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, test_tbl2; DROP TYPE test_type2; 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); -- has sequence, toast -- check relpersistence of an unlogged table SELECT relname, relkind, relpersistence FROM pg_class WHERE relname ~ '^unlogged1' UNION ALL SELECT r.relname || ' 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 r.relname || ' 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 r.relname || ' 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 r.relname || ' 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); -- has sequence, toast -- check relpersistence of a permanent table SELECT relname, relkind, relpersistence FROM pg_class WHERE relname ~ '^logged1' UNION ALL SELECT r.relname || ' 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 r.relname ||' 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 r.relname || ' 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 r.relname || ' 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; CREATE TABLE atnotnull1 (); ALTER TABLE atnotnull1 ADD COLUMN a INT, ALTER a SET NOT NULL; ALTER TABLE atnotnull1 ADD COLUMN c INT, ADD PRIMARY KEY (c); \d+ atnotnull1 -- cannot drop column that is part of the partition key CREATE TABLE partitioned ( a int, b int ) PARTITION BY RANGE (a, (a+b+1)); 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); -- specifying storage parameters for partitioned tables is not supported ALTER TABLE partitioned SET (fillfactor=100); -- 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 child; -- now it should work, with a little tweak ALTER TABLE parent ADD CONSTRAINT check_a CHECK (a > 0); ALTER TABLE list_parted ATTACH PARTITION parent FOR VALUES IN (1); -- test insert/update, per bug #18550 INSERT INTO parent VALUES (1); UPDATE parent SET a = 2 WHERE a = 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 test_setup.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; -- concurrent detach CREATE TABLE range_parted2 ( a int ) PARTITION BY RANGE(a); CREATE TABLE part_rp PARTITION OF range_parted2 FOR VALUES FROM (0) to (100); BEGIN; -- doesn't work in a partition block ALTER TABLE range_parted2 DETACH PARTITION part_rp CONCURRENTLY; COMMIT; CREATE TABLE part_rpd PARTITION OF range_parted2 DEFAULT; -- doesn't work if there's a default partition ALTER TABLE range_parted2 DETACH PARTITION part_rp CONCURRENTLY; -- doesn't work for the default partition ALTER TABLE range_parted2 DETACH PARTITION part_rpd CONCURRENTLY; DROP TABLE part_rpd; -- works fine ALTER TABLE range_parted2 DETACH PARTITION part_rp CONCURRENTLY; \d+ range_parted2 -- constraint should be created \d part_rp CREATE TABLE part_rp100 PARTITION OF range_parted2 (CHECK (a>=123 AND a<133 AND a IS NOT NULL)) FOR VALUES FROM (100) to (200); ALTER TABLE range_parted2 DETACH PARTITION part_rp100 CONCURRENTLY; -- redundant constraint should not be created \d part_rp100 DROP TABLE range_parted2; -- 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 case for bug #17409 */ create table attbl (p1 int constraint pk_attbl primary key); create table atref (c1 int references attbl(p1)); cluster attbl using pk_attbl; alter table attbl alter column p1 set data type bigint; alter table atref alter column c1 set data type bigint; drop table attbl, atref; create table attbl (p1 int constraint pk_attbl primary key); alter table attbl replica identity using index pk_attbl; create table atref (c1 int references attbl(p1)); alter table attbl alter column p1 set data type bigint; alter table atref alter column c1 set data type bigint; drop table attbl, atref; /* End test case for bug #17409 */ -- 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; -- -- Check that attaching or detaching a partitioned partition correctly leads -- to its partitions' constraint being updated to reflect the parent's -- newly added/removed constraint create table target_parted (a int, b int) partition by list (a); create table attach_parted (a int, b int) partition by list (b); create table attach_parted_part1 partition of attach_parted for values in (1); -- insert a row directly into the leaf partition so that its partition -- constraint is built and stored in the relcache insert into attach_parted_part1 values (1, 1); -- the following better invalidate the partition constraint of the leaf -- partition too... alter table target_parted attach partition attach_parted for values in (1); -- ...such that the following insert fails insert into attach_parted_part1 values (2, 1); -- ...and doesn't when the partition is detached along with its own partition alter table target_parted detach partition attach_parted; insert into attach_parted_part1 values (2, 1); -- Test altering table having publication create schema alter1; create schema alter2; create table alter1.t1 (a int); set client_min_messages = 'ERROR'; create publication pub1 for table alter1.t1, tables in schema alter2; reset client_min_messages; alter table alter1.t1 set schema alter2; \d+ alter2.t1 drop publication pub1; drop schema alter1 cascade; drop schema alter2 cascade; libpg_query-17-6.1.0/test/sql/postgres_regress/amutils.sql000066400000000000000000000102451477334012600236530ustar00rootroot00000000000000-- -- 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-17-6.1.0/test/sql/postgres_regress/arrays.sql000066400000000000000000000745371477334012600235140ustar00rootroot00000000000000-- -- ARRAYS -- -- directory paths are passed to us in environment variables \getenv abs_srcdir PG_ABS_SRCDIR CREATE TABLE arrtest ( a int2[], b int4[][][], c name[], d text[][], e float8[], f char(5)[], g varchar(5)[] ); CREATE TABLE array_op_test ( seqno int4, i int4[], t text[] ); \set filename :abs_srcdir '/data/array.data' COPY array_op_test FROM :'filename'; ANALYZE array_op_test; -- -- 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}'); INSERT INTO arrtest (b[2]) VALUES(now()); -- error, type mismatch INSERT INTO arrtest (b[1:2]) VALUES(now()); -- error, type mismatch 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 non-error-throwing API SELECT pg_input_is_valid('{1,2,3}', 'integer[]'); SELECT pg_input_is_valid('{1,2', 'integer[]'); SELECT pg_input_is_valid('{1,zed}', 'integer[]'); SELECT * FROM pg_input_error_info('{1,zed}', 'integer[]'); -- 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 MAXDIM (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; -- Un-subscriptable type SELECT (now())[1]; -- 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 -- we want to work with a point_tbl that includes a null CREATE TEMP TABLE point_tbl AS SELECT * FROM public.point_tbl; INSERT INTO POINT_TBL(f1) VALUES (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 ARRAY[1.1] || ARRAY[2,3,4]; SELECT array_agg(x) || array_agg(x) FROM (VALUES (ROW(1,2)), (ROW(3,4))) v(x); SELECT ROW(1,2) || array_agg(x) FROM (VALUES (ROW(3,4)), (ROW(5,6))) v(x); 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 pg_typeof(ARRAY[1,2,3]::text[]::int[]::float8[]) AS "double precision[]"; SELECT ARRAY[['a','bc'],['def','hijk']]::text[]::varchar[] AS "{{a,bc},{def,hijk}}"; SELECT pg_typeof(ARRAY[['a','bc'],['def','hijk']]::text[]::varchar[]) AS "character varying[]"; 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 subscript overflow detection -- The normal error message includes a platform-dependent limit, -- so suppress it to avoid needing multiple expected-files. \set VERBOSITY sqlstate insert into arr_pk_tbl values(10, '[-2147483648:-2147483647]={1,2}'); update arr_pk_tbl set f1[2147483647] = 42 where pk = 10; update arr_pk_tbl set f1[2147483646:2147483647] = array[4,2] where pk = 10; insert into arr_pk_tbl(pk, f1[0:2147483647]) values (2, '{}'); insert into arr_pk_tbl(pk, f1[-2147483648:2147483647]) values (2, '{}'); -- also exercise the expanded-array case do $$ declare a int[]; begin a := '[-2147483648:-2147483647]={1,2}'::int[]; a[2147483647] := 42; end $$; \set VERBOSITY default -- 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 E'{{1,2},\\{2,3}}'::text[]; select '{"a"b}'::text[]; select '{a"b"}'::text[]; select '{"a""b"}'::text[]; select '{{"1 2" x},{3}}'::text[]; select '{{"1 2"} x,{3}}'::text[]; select '{}}'::text[]; select '{ }}'::text[]; select '}{'::text[]; select '{foo{}}'::text[]; select '{"foo"{}}'::text[]; select '{foo,,bar}'::text[]; select '{{1},{{2}}}'::text[]; select '{{{1}},{2}}'::text[]; select '{{},{{}}}'::text[]; select '{{{}},{}}'::text[]; select '{{1},{}}'::text[]; select '{{},{1}}'::text[]; select '[1:0]={}'::int[]; select '[2147483646:2147483647]={1,2}'::int[]; select '[1:-1]={}'::int[]; select '[2]={1}'::int[]; select '[1:]={1}'::int[]; select '[:1]={1}'::int[]; select array[]; select '{{1,},{1},}'::text[]; select '{{1,},{1}}'::text[]; select '{{1,}}'::text[]; select '{1,}'::text[]; select '[21474836488:21474836489]={1,2}'::int[]; select '[-2147483649:-2147483648]={1,2}'::int[]; -- none of the above should be accepted -- all of the following should be accepted select '{}'::text[]; select '{{},{}}'::text[]; select '{{{1,2,3,4},{2,3,4,5}},{{3,4,5,6},{4,5,6,7}}}'::text[]; select '{null,n\ull,"null"}'::text[]; select '{ ab\c , "ab\"c" }'::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 '[2]={1,7}'::int[]; select '[0:1]={1.1,2.2}'::float8[]; select '[2147483646:2147483646]={1}'::int[]; select '[-2147483648:-2147483647]={1,2}'::int[]; -- 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 v, v is null as "is null" from string_to_table('1|2|3', '|') g(v); select v, v is null as "is null" from string_to_table('1|2|3|', '|') g(v); select v, v is null as "is null" from string_to_table('1||2|3||', '||') g(v); select v, v is null as "is null" from string_to_table('1|2|3', '') g(v); select v, v is null as "is null" from string_to_table('', '|') g(v); select v, v is null as "is null" from string_to_table('1|2|3', NULL) g(v); select v, v is null as "is null" from string_to_table(NULL, '|') g(v); select v, v is null as "is null" from string_to_table('abc', '') g(v); select v, v is null as "is null" from string_to_table('abc', '', 'abc') g(v); select v, v is null as "is null" from string_to_table('abc', ',') g(v); select v, v is null as "is null" from string_to_table('abc', ',', 'abc') g(v); select v, v is null as "is null" from string_to_table('1,2,3,4,,6', ',') g(v); select v, v is null as "is null" from string_to_table('1,2,3,4,,6', ',', '') g(v); select v, v is null as "is null" from string_to_table('1,2,3,4,*,6', ',', '*') g(v); 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(array[1.0, 2.1, 3.3], 1); 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); -- int2vector and oidvector should be treated as scalar types for this purpose select pg_typeof(array(select '11 22 33'::int2vector from generate_series(1,5))); select array(select '11 22 33'::int2vector from generate_series(1,5)); select unnest(array(select '11 22 33'::int2vector from generate_series(1,5))); select pg_typeof(array(select '11 22 33'::oidvector from generate_series(1,5))); select array(select '11 22 33'::oidvector from generate_series(1,5)); select unnest(array(select '11 22 33'::oidvector from generate_series(1,5))); -- array[] should do the same select pg_typeof(array['11 22 33'::int2vector]); select array['11 22 33'::int2vector]; select pg_typeof(unnest(array['11 22 33'::int2vector])); select unnest(array['11 22 33'::int2vector]); select pg_typeof(unnest('11 22 33'::int2vector)); select unnest('11 22 33'::int2vector); select pg_typeof(array['11 22 33'::oidvector]); select array['11 22 33'::oidvector]; select pg_typeof(unnest(array['11 22 33'::oidvector])); select unnest(array['11 22 33'::oidvector]); select pg_typeof(unnest('11 22 33'::oidvector)); select unnest('11 22 33'::oidvector); -- 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(fipshash((f1[1]).c2)) from dest; delete from src; select length(fipshash((f1[1]).c2)) from dest; truncate table src; drop table src; select length(fipshash((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]]); -- trim_array SELECT arr, trim_array(arr, 2) FROM (VALUES ('{1,2,3,4,5,6}'::bigint[]), ('{1,2}'), ('[10:16]={1,2,3,4,5,6,7}'), ('[-15:-10]={1,2,3,4,5,6}'), ('{{1,10},{2,20},{3,30},{4,40}}')) v(arr); SELECT trim_array(ARRAY[1, 2, 3], -1); -- fail SELECT trim_array(ARRAY[1, 2, 3], 10); -- fail SELECT trim_array(ARRAY[]::int[], 1); -- fail -- array_shuffle SELECT array_shuffle('{1,2,3,4,5,6}'::int[]) <@ '{1,2,3,4,5,6}'; SELECT array_shuffle('{1,2,3,4,5,6}'::int[]) @> '{1,2,3,4,5,6}'; SELECT array_dims(array_shuffle('[-1:2][2:3]={{1,2},{3,NULL},{5,6},{7,8}}'::int[])); SELECT array_dims(array_shuffle('{{{1,2},{3,NULL}},{{5,6},{7,8}},{{9,10},{11,12}}}'::int[])); -- array_sample SELECT array_sample('{1,2,3,4,5,6}'::int[], 3) <@ '{1,2,3,4,5,6}'; SELECT array_length(array_sample('{1,2,3,4,5,6}'::int[], 3), 1); SELECT array_dims(array_sample('[-1:2][2:3]={{1,2},{3,NULL},{5,6},{7,8}}'::int[], 3)); SELECT array_dims(array_sample('{{{1,2},{3,NULL}},{{5,6},{7,8}},{{9,10},{11,12}}}'::int[], 2)); SELECT array_sample('{1,2,3,4,5,6}'::int[], -1); -- fail SELECT array_sample('{1,2,3,4,5,6}'::int[], 7); --fail libpg_query-17-6.1.0/test/sql/postgres_regress/async.sql000066400000000000000000000013771477334012600233200ustar00rootroot00000000000000-- -- 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-17-6.1.0/test/sql/postgres_regress/bit.sql000066400000000000000000000206641477334012600227610ustar00rootroot00000000000000-- -- 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; -- Literals with syntax errors SELECT b' 0'; SELECT b'0 '; SELECT x' 0'; SELECT x'0 '; -- 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); -- bit_count SELECT bit_count(B'0101011100'::bit(10)); SELECT bit_count(B'1111111111'::bit(10)); SELECT bit_count(repeat('0', 100)::bit(100)); SELECT bit_count(repeat('1', 100)::bit(100)); SELECT bit_count(repeat('01', 500)::bit(1000)); SELECT bit_count(repeat('10101', 200)::bit(1000)); -- 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; -- test non-error-throwing API for some core types SELECT pg_input_is_valid('01010001', 'bit(10)'); SELECT * FROM pg_input_error_info('01010001', 'bit(10)'); SELECT pg_input_is_valid('01010Z01', 'bit(8)'); SELECT * FROM pg_input_error_info('01010Z01', 'bit(8)'); SELECT pg_input_is_valid('x01010Z01', 'bit(32)'); SELECT * FROM pg_input_error_info('x01010Z01', 'bit(32)'); SELECT pg_input_is_valid('01010Z01', 'varbit'); SELECT * FROM pg_input_error_info('01010Z01', 'varbit'); SELECT pg_input_is_valid('x01010Z01', 'varbit'); SELECT * FROM pg_input_error_info('x01010Z01', 'varbit'); libpg_query-17-6.1.0/test/sql/postgres_regress/bitmapops.sql000066400000000000000000000025251477334012600241750ustar00rootroot00000000000000-- 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-17-6.1.0/test/sql/postgres_regress/boolean.sql000066400000000000000000000131701477334012600236140ustar00rootroot00000000000000-- -- 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; -- Also try it with non-error-throwing API SELECT pg_input_is_valid('true', 'bool'); SELECT pg_input_is_valid('asdf', 'bool'); SELECT * FROM pg_input_error_info('junk', 'bool'); -- 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 BOOLTBL1.* FROM BOOLTBL1; SELECT BOOLTBL1.* FROM BOOLTBL1 WHERE f1 = bool 'true'; SELECT BOOLTBL1.* FROM BOOLTBL1 WHERE f1 <> bool 'false'; SELECT BOOLTBL1.* FROM BOOLTBL1 WHERE booleq(bool 'false', f1); INSERT INTO BOOLTBL1 (f1) VALUES (bool 'f'); SELECT 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 BOOLTBL2.* FROM BOOLTBL2; SELECT BOOLTBL1.*, BOOLTBL2.* FROM BOOLTBL1, BOOLTBL2 WHERE BOOLTBL2.f1 <> BOOLTBL1.f1; SELECT BOOLTBL1.*, BOOLTBL2.* FROM BOOLTBL1, BOOLTBL2 WHERE boolne(BOOLTBL2.f1,BOOLTBL1.f1); SELECT BOOLTBL1.*, BOOLTBL2.* FROM BOOLTBL1, BOOLTBL2 WHERE BOOLTBL2.f1 = BOOLTBL1.f1 and BOOLTBL1.f1 = bool 'false'; SELECT 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 f1 FROM BOOLTBL1 WHERE f1 IS TRUE; SELECT f1 FROM BOOLTBL1 WHERE f1 IS NOT FALSE; SELECT f1 FROM BOOLTBL1 WHERE f1 IS FALSE; SELECT f1 FROM BOOLTBL1 WHERE f1 IS NOT TRUE; SELECT f1 FROM BOOLTBL2 WHERE f1 IS TRUE; SELECT f1 FROM BOOLTBL2 WHERE f1 IS NOT FALSE; SELECT f1 FROM BOOLTBL2 WHERE f1 IS FALSE; SELECT 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 -- from interfering. 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; -- Casts SELECT 0::boolean; SELECT 1::boolean; SELECT 2::boolean; -- -- 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-17-6.1.0/test/sql/postgres_regress/box.sql000066400000000000000000000201271477334012600227650ustar00rootroot00000000000000-- -- 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 * FROM BOX_TBL; SELECT b.*, area(b.f1) as barea FROM BOX_TBL b; -- overlap SELECT b.f1 FROM BOX_TBL b WHERE b.f1 && box '(2.5,2.5,1.0,1.0)'; -- left-or-overlap (x only) SELECT b1.* FROM BOX_TBL b1 WHERE b1.f1 &< box '(2.0,2.0,2.5,2.5)'; -- right-or-overlap (x only) SELECT b1.* FROM BOX_TBL b1 WHERE b1.f1 &> box '(2.0,2.0,2.5,2.5)'; -- left of SELECT b.f1 FROM BOX_TBL b WHERE b.f1 << box '(3.0,3.0,5.0,5.0)'; -- area <= SELECT b.f1 FROM BOX_TBL b WHERE b.f1 <= box '(3.0,3.0,5.0,5.0)'; -- area < SELECT b.f1 FROM BOX_TBL b WHERE b.f1 < box '(3.0,3.0,5.0,5.0)'; -- area = SELECT b.f1 FROM BOX_TBL b WHERE b.f1 = box '(3.0,3.0,5.0,5.0)'; -- area > SELECT b.f1 FROM BOX_TBL b -- zero area WHERE b.f1 > box '(3.5,3.0,4.5,3.0)'; -- area >= SELECT b.f1 FROM BOX_TBL b -- zero area WHERE b.f1 >= box '(3.5,3.0,4.5,3.0)'; -- right of SELECT b.f1 FROM BOX_TBL b WHERE box '(3.0,3.0,5.0,5.0)' >> b.f1; -- contained in SELECT b.f1 FROM BOX_TBL b WHERE b.f1 <@ box '(0,0,3,3)'; -- contains SELECT b.f1 FROM BOX_TBL b WHERE box '(0,0,3,3)' @> b.f1; -- box equality SELECT b.f1 FROM BOX_TBL b WHERE box '(1,1,3,3)' ~= b.f1; -- center of box, left unary operator SELECT @@(b1.f1) AS p FROM BOX_TBL b1; -- wholly-contained SELECT b1.*, b2.* FROM BOX_TBL b1, BOX_TBL b2 WHERE b1.f1 @> b2.f1 and not b1.f1 ~= b2.f1; SELECT 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; -- test non-error-throwing API for some core types SELECT pg_input_is_valid('200', 'box'); SELECT * FROM pg_input_error_info('200', 'box'); SELECT pg_input_is_valid('((200,300),(500, xyz))', 'box'); SELECT * FROM pg_input_error_info('((200,300),(500, xyz))', 'box'); libpg_query-17-6.1.0/test/sql/postgres_regress/brin.sql000066400000000000000000000440701477334012600231320ustar00rootroot00000000000000CREATE 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(fipshash(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(fipshash((-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; -- test an unlogged table, mostly to get coverage of brinbuildempty CREATE UNLOGGED TABLE brintest_unlogged (n numrange); CREATE INDEX brinidx_unlogged ON brintest_unlogged USING brin (n); INSERT INTO brintest_unlogged VALUES (numrange(0, 2^1000::numeric)); DROP TABLE brintest_unlogged; -- test that the insert optimization works if no rows end up inserted CREATE TABLE brin_insert_optimization (a int); INSERT INTO brin_insert_optimization VALUES (1); CREATE INDEX brin_insert_optimization_idx ON brin_insert_optimization USING brin (a); UPDATE brin_insert_optimization SET a = a; REINDEX INDEX CONCURRENTLY brin_insert_optimization_idx; DROP TABLE brin_insert_optimization; libpg_query-17-6.1.0/test/sql/postgres_regress/brin_bloom.sql000066400000000000000000000260561477334012600243260ustar00rootroot00000000000000CREATE TABLE brintest_bloom (byteacol bytea, charcol "char", namecol name, int8col bigint, int2col smallint, int4col integer, textcol text, oidcol oid, 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, numericcol numeric, uuidcol uuid, lsncol pg_lsn ) WITH (fillfactor=10); INSERT INTO brintest_bloom SELECT repeat(stringu1, 8)::bytea, substr(stringu1, 1, 1)::"char", stringu1::name, 142857 * tenthous, thousand, twothousand, repeat(stringu1, 8), unique1::oid, (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', 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, format('%s/%s%s', odd, even, tenthous)::pg_lsn FROM tenk1 ORDER BY unique2 LIMIT 100; -- throw in some NULL's and different values INSERT INTO brintest_bloom (inetcol, cidrcol) SELECT inet 'fe80::6e40:8ff:fea9:8c46' + tenthous, cidr 'fe80::6e40:8ff:fea9:8c46' + tenthous FROM tenk1 ORDER BY thousand, tenthous LIMIT 25; -- test bloom specific index options -- ndistinct must be >= -1.0 CREATE INDEX brinidx_bloom ON brintest_bloom USING brin ( byteacol bytea_bloom_ops(n_distinct_per_range = -1.1) ); -- false_positive_rate must be between 0.0001 and 0.25 CREATE INDEX brinidx_bloom ON brintest_bloom USING brin ( byteacol bytea_bloom_ops(false_positive_rate = 0.00009) ); CREATE INDEX brinidx_bloom ON brintest_bloom USING brin ( byteacol bytea_bloom_ops(false_positive_rate = 0.26) ); CREATE INDEX brinidx_bloom ON brintest_bloom USING brin ( byteacol bytea_bloom_ops, charcol char_bloom_ops, namecol name_bloom_ops, int8col int8_bloom_ops, int2col int2_bloom_ops, int4col int4_bloom_ops, textcol text_bloom_ops, oidcol oid_bloom_ops, float4col float4_bloom_ops, float8col float8_bloom_ops, macaddrcol macaddr_bloom_ops, inetcol inet_bloom_ops, cidrcol inet_bloom_ops, bpcharcol bpchar_bloom_ops, datecol date_bloom_ops, timecol time_bloom_ops, timestampcol timestamp_bloom_ops, timestamptzcol timestamptz_bloom_ops, intervalcol interval_bloom_ops, timetzcol timetz_bloom_ops, numericcol numeric_bloom_ops, uuidcol uuid_bloom_ops, lsncol pg_lsn_bloom_ops ) with (pages_per_range = 1); CREATE TABLE brinopers_bloom (colname name, typ text, op text[], value text[], matches int[], check (cardinality(op) = cardinality(value)), check (cardinality(op) = cardinality(matches))); INSERT INTO brinopers_bloom VALUES ('byteacol', 'bytea', '{=}', '{BNAAAABNAAAABNAAAABNAAAABNAAAABNAAAABNAAAABNAAAA}', '{1}'), ('charcol', '"char"', '{=}', '{M}', '{6}'), ('namecol', 'name', '{=}', '{MAAAAA}', '{2}'), ('int2col', 'int2', '{=}', '{800}', '{1}'), ('int4col', 'int4', '{=}', '{800}', '{1}'), ('int8col', 'int8', '{=}', '{1257141600}', '{1}'), ('textcol', 'text', '{=}', '{BNAAAABNAAAABNAAAABNAAAABNAAAABNAAAABNAAAABNAAAA}', '{1}'), ('oidcol', 'oid', '{=}', '{8800}', '{1}'), ('float4col', 'float4', '{=}', '{1}', '{4}'), ('float8col', 'float8', '{=}', '{0}', '{1}'), ('macaddrcol', 'macaddr', '{=}', '{2c:00:2d:00:16:00}', '{2}'), ('inetcol', 'inet', '{=}', '{10.2.14.231/24}', '{1}'), ('inetcol', 'cidr', '{=}', '{fe80::6e40:8ff:fea9:8c46}', '{1}'), ('cidrcol', 'inet', '{=}', '{10.2.14/24}', '{2}'), ('cidrcol', 'inet', '{=}', '{fe80::6e40:8ff:fea9:8c46}', '{1}'), ('cidrcol', 'cidr', '{=}', '{10.2.14/24}', '{2}'), ('cidrcol', 'cidr', '{=}', '{fe80::6e40:8ff:fea9:8c46}', '{1}'), ('bpcharcol', 'bpchar', '{=}', '{W}', '{6}'), ('datecol', 'date', '{=}', '{2009-12-01}', '{1}'), ('timecol', 'time', '{=}', '{02:28:57}', '{1}'), ('timestampcol', 'timestamp', '{=}', '{1964-03-24 19:26:45}', '{1}'), ('timestamptzcol', 'timestamptz', '{=}', '{1972-10-19 09:00:00-07}', '{1}'), ('intervalcol', 'interval', '{=}', '{1 mons 13 days 12:24}', '{1}'), ('timetzcol', 'timetz', '{=}', '{01:35:50+02}', '{2}'), ('numericcol', 'numeric', '{=}', '{2268164.347826086956521739130434782609}', '{1}'), ('uuidcol', 'uuid', '{=}', '{52225222-5222-5222-5222-522252225222}', '{1}'), ('lsncol', 'pg_lsn', '{=, IS, IS NOT}', '{44/455222, NULL, NULL}', '{1, 25, 100}'); 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_bloom, 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_bloom WHERE %s $y$, cond) LOOP IF plan_line LIKE '%Bitmap Heap Scan on brintest_bloom%' 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_bloom 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_bloom WHERE %s $y$, cond) LOOP IF plan_line LIKE '%Seq Scan on brintest_bloom%' 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_bloom 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_bloom 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_bloom 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_bloom SELECT repeat(stringu1, 42)::bytea, substr(stringu1, 1, 1)::"char", stringu1::name, 142857 * tenthous, thousand, twothousand, repeat(stringu1, 42), unique1::oid, (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', 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, format('%s/%s%s', odd, even, tenthous)::pg_lsn FROM tenk1 ORDER BY unique2 LIMIT 5 OFFSET 5; SELECT brin_desummarize_range('brinidx_bloom', 0); VACUUM brintest_bloom; -- force a summarization cycle in brinidx UPDATE brintest_bloom SET int8col = int8col * int4col; UPDATE brintest_bloom SET textcol = '' WHERE textcol IS NOT NULL; -- Tests for brin_summarize_new_values SELECT brin_summarize_new_values('brintest_bloom'); -- error, not an index SELECT brin_summarize_new_values('tenk1_unique1'); -- error, not a BRIN index SELECT brin_summarize_new_values('brinidx_bloom'); -- ok, no change expected -- Tests for brin_desummarize_range SELECT brin_desummarize_range('brinidx_bloom', -1); -- error, invalid range SELECT brin_desummarize_range('brinidx_bloom', 0); SELECT brin_desummarize_range('brinidx_bloom', 0); SELECT brin_desummarize_range('brinidx_bloom', 100000000); -- Test brin_summarize_range CREATE TABLE brin_summarize_bloom ( value int ) WITH (fillfactor=10, autovacuum_enabled=false); CREATE INDEX brin_summarize_bloom_idx ON brin_summarize_bloom USING brin (value) WITH (pages_per_range=2); -- Fill a few pages DO $$ DECLARE curtid tid; BEGIN LOOP INSERT INTO brin_summarize_bloom VALUES (1) RETURNING ctid INTO curtid; EXIT WHEN curtid > tid '(2, 0)'; END LOOP; END; $$; -- summarize one range SELECT brin_summarize_range('brin_summarize_bloom_idx', 0); -- nothing: already summarized SELECT brin_summarize_range('brin_summarize_bloom_idx', 1); -- summarize one range SELECT brin_summarize_range('brin_summarize_bloom_idx', 2); -- nothing: page doesn't exist in table SELECT brin_summarize_range('brin_summarize_bloom_idx', 4294967295); -- invalid block number values SELECT brin_summarize_range('brin_summarize_bloom_idx', -1); SELECT brin_summarize_range('brin_summarize_bloom_idx', 4294967296); -- test brin cost estimates behave sanely based on correlation of values CREATE TABLE brin_test_bloom (a INT, b INT); INSERT INTO brin_test_bloom SELECT x/100,x%100 FROM generate_series(1,10000) x(x); CREATE INDEX brin_test_bloom_a_idx ON brin_test_bloom USING brin (a) WITH (pages_per_range = 2); CREATE INDEX brin_test_bloom_b_idx ON brin_test_bloom USING brin (b) WITH (pages_per_range = 2); VACUUM ANALYZE brin_test_bloom; -- Ensure brin index is used when columns are perfectly correlated EXPLAIN (COSTS OFF) SELECT * FROM brin_test_bloom WHERE a = 1; -- Ensure brin index is not used when values are not correlated EXPLAIN (COSTS OFF) SELECT * FROM brin_test_bloom WHERE b = 1; libpg_query-17-6.1.0/test/sql/postgres_regress/brin_multi.sql000066400000000000000000000604261477334012600243470ustar00rootroot00000000000000CREATE TABLE brintest_multi ( int8col bigint, int2col smallint, int4col integer, oidcol oid, tidcol tid, float4col real, float8col double precision, macaddrcol macaddr, macaddr8col macaddr8, inetcol inet, cidrcol cidr, datecol date, timecol time without time zone, timestampcol timestamp without time zone, timestamptzcol timestamp with time zone, intervalcol interval, timetzcol time with time zone, numericcol numeric, uuidcol uuid, lsncol pg_lsn ) WITH (fillfactor=10); INSERT INTO brintest_multi SELECT 142857 * tenthous, thousand, twothousand, 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, substr(fipshash(unique1::text), 1, 16)::macaddr8, inet '10.2.3.4/24' + tenthous, cidr '10.2.3/24' + tenthous, 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', 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, format('%s/%s%s', odd, even, tenthous)::pg_lsn FROM tenk1 ORDER BY unique2 LIMIT 100; -- throw in some NULL's and different values INSERT INTO brintest_multi (inetcol, cidrcol) SELECT inet 'fe80::6e40:8ff:fea9:8c46' + tenthous, cidr 'fe80::6e40:8ff:fea9:8c46' + tenthous FROM tenk1 ORDER BY thousand, tenthous LIMIT 25; -- test minmax-multi specific index options -- number of values must be >= 16 CREATE INDEX brinidx_multi ON brintest_multi USING brin ( int8col int8_minmax_multi_ops(values_per_range = 7) ); -- number of values must be <= 256 CREATE INDEX brinidx_multi ON brintest_multi USING brin ( int8col int8_minmax_multi_ops(values_per_range = 257) ); -- first create an index with a single page range, to force compaction -- due to exceeding the number of values per summary CREATE INDEX brinidx_multi ON brintest_multi USING brin ( int8col int8_minmax_multi_ops, int2col int2_minmax_multi_ops, int4col int4_minmax_multi_ops, oidcol oid_minmax_multi_ops, tidcol tid_minmax_multi_ops, float4col float4_minmax_multi_ops, float8col float8_minmax_multi_ops, macaddrcol macaddr_minmax_multi_ops, macaddr8col macaddr8_minmax_multi_ops, inetcol inet_minmax_multi_ops, cidrcol inet_minmax_multi_ops, datecol date_minmax_multi_ops, timecol time_minmax_multi_ops, timestampcol timestamp_minmax_multi_ops, timestamptzcol timestamptz_minmax_multi_ops, intervalcol interval_minmax_multi_ops, timetzcol timetz_minmax_multi_ops, numericcol numeric_minmax_multi_ops, uuidcol uuid_minmax_multi_ops, lsncol pg_lsn_minmax_multi_ops ); DROP INDEX brinidx_multi; CREATE INDEX brinidx_multi ON brintest_multi USING brin ( int8col int8_minmax_multi_ops, int2col int2_minmax_multi_ops, int4col int4_minmax_multi_ops, oidcol oid_minmax_multi_ops, tidcol tid_minmax_multi_ops, float4col float4_minmax_multi_ops, float8col float8_minmax_multi_ops, macaddrcol macaddr_minmax_multi_ops, macaddr8col macaddr8_minmax_multi_ops, inetcol inet_minmax_multi_ops, cidrcol inet_minmax_multi_ops, datecol date_minmax_multi_ops, timecol time_minmax_multi_ops, timestampcol timestamp_minmax_multi_ops, timestamptzcol timestamptz_minmax_multi_ops, intervalcol interval_minmax_multi_ops, timetzcol timetz_minmax_multi_ops, numericcol numeric_minmax_multi_ops, uuidcol uuid_minmax_multi_ops, lsncol pg_lsn_minmax_multi_ops ) with (pages_per_range = 1); CREATE TABLE brinopers_multi (colname name, typ text, op text[], value text[], matches int[], check (cardinality(op) = cardinality(value)), check (cardinality(op) = cardinality(matches))); INSERT INTO brinopers_multi VALUES ('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}'), ('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}'), ('macaddr8col', 'macaddr8', '{>, >=, =, <=, <}', '{b1:d1:0e:7b:af:a4:42:12, d9:35:91:bd:f7:86:0e:1e, 72:8f:20:6c:2a:01:bf:57, 23:e8:46:63:86:07:ad:cb, 13:16:8e:6a:2e:6c:84:b4}', '{31, 17, 1, 11, 4}'), ('inetcol', 'inet', '{=, <, <=, >, >=}', '{10.2.14.231/24, 255.255.255.255, 255.255.255.255, 0.0.0.0, 0.0.0.0}', '{1, 100, 100, 125, 125}'), ('inetcol', 'cidr', '{<, <=, >, >=}', '{255.255.255.255, 255.255.255.255, 0.0.0.0, 0.0.0.0}', '{100, 100, 125, 125}'), ('cidrcol', 'inet', '{=, <, <=, >, >=}', '{10.2.14/24, 255.255.255.255, 255.255.255.255, 0.0.0.0, 0.0.0.0}', '{2, 100, 100, 125, 125}'), ('cidrcol', 'cidr', '{=, <, <=, >, >=}', '{10.2.14/24, 255.255.255.255, 255.255.255.255, 0.0.0.0, 0.0.0.0}', '{2, 100, 100, 125, 125}'), ('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}'), ('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}'), ('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}'); 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_multi, 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_multi WHERE %s $y$, cond) LOOP IF plan_line LIKE '%Bitmap Heap Scan on brintest_multi%' 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_multi 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_multi WHERE %s $y$, cond) LOOP IF plan_line LIKE '%Seq Scan on brintest_multi%' 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_multi 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_multi 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_multi 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_multi SELECT 142857 * tenthous, thousand, twothousand, 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, substr(fipshash(unique1::text), 1, 16)::macaddr8, inet '10.2.3.4' + tenthous, cidr '10.2.3/24' + tenthous, 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', 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, format('%s/%s%s', odd, even, tenthous)::pg_lsn FROM tenk1 ORDER BY unique2 LIMIT 5 OFFSET 5; SELECT brin_desummarize_range('brinidx_multi', 0); VACUUM brintest_multi; -- force a summarization cycle in brinidx -- Try inserting a values with NaN, to test distance calculation. insert into public.brintest_multi (float4col) values (real 'nan'); insert into public.brintest_multi (float8col) values (real 'nan'); UPDATE brintest_multi SET int8col = int8col * int4col; -- Test handling of inet netmasks with inet_minmax_multi_ops CREATE TABLE brin_test_inet (a inet); CREATE INDEX ON brin_test_inet USING brin (a inet_minmax_multi_ops); INSERT INTO brin_test_inet VALUES ('127.0.0.1/0'); INSERT INTO brin_test_inet VALUES ('0.0.0.0/12'); DROP TABLE brin_test_inet; -- Tests for brin_summarize_new_values SELECT brin_summarize_new_values('brintest_multi'); -- error, not an index SELECT brin_summarize_new_values('tenk1_unique1'); -- error, not a BRIN index SELECT brin_summarize_new_values('brinidx_multi'); -- ok, no change expected -- Tests for brin_desummarize_range SELECT brin_desummarize_range('brinidx_multi', -1); -- error, invalid range SELECT brin_desummarize_range('brinidx_multi', 0); SELECT brin_desummarize_range('brinidx_multi', 0); SELECT brin_desummarize_range('brinidx_multi', 100000000); -- test building an index with many values, to force compaction of the buffer CREATE TABLE brin_large_range (a int4); INSERT INTO brin_large_range SELECT i FROM generate_series(1,10000) s(i); CREATE INDEX brin_large_range_idx ON brin_large_range USING brin (a int4_minmax_multi_ops); DROP TABLE brin_large_range; -- Test brin_summarize_range CREATE TABLE brin_summarize_multi ( value int ) WITH (fillfactor=10, autovacuum_enabled=false); CREATE INDEX brin_summarize_multi_idx ON brin_summarize_multi USING brin (value) WITH (pages_per_range=2); -- Fill a few pages DO $$ DECLARE curtid tid; BEGIN LOOP INSERT INTO brin_summarize_multi VALUES (1) RETURNING ctid INTO curtid; EXIT WHEN curtid > tid '(2, 0)'; END LOOP; END; $$; -- summarize one range SELECT brin_summarize_range('brin_summarize_multi_idx', 0); -- nothing: already summarized SELECT brin_summarize_range('brin_summarize_multi_idx', 1); -- summarize one range SELECT brin_summarize_range('brin_summarize_multi_idx', 2); -- nothing: page doesn't exist in table SELECT brin_summarize_range('brin_summarize_multi_idx', 4294967295); -- invalid block number values SELECT brin_summarize_range('brin_summarize_multi_idx', -1); SELECT brin_summarize_range('brin_summarize_multi_idx', 4294967296); -- test brin cost estimates behave sanely based on correlation of values CREATE TABLE brin_test_multi (a INT, b INT); INSERT INTO brin_test_multi SELECT x/100,x%100 FROM generate_series(1,10000) x(x); CREATE INDEX brin_test_multi_a_idx ON brin_test_multi USING brin (a) WITH (pages_per_range = 2); CREATE INDEX brin_test_multi_b_idx ON brin_test_multi USING brin (b) WITH (pages_per_range = 2); VACUUM ANALYZE brin_test_multi; -- Ensure brin index is used when columns are perfectly correlated EXPLAIN (COSTS OFF) SELECT * FROM brin_test_multi WHERE a = 1; -- Ensure brin index is not used when values are not correlated EXPLAIN (COSTS OFF) SELECT * FROM brin_test_multi WHERE b = 1; -- do some inequality tests CREATE TABLE brin_test_multi_1 (a INT, b BIGINT) WITH (fillfactor=10); INSERT INTO brin_test_multi_1 SELECT i/5 + mod(911 * i + 483, 25), i/10 + mod(751 * i + 221, 41) FROM generate_series(1,1000) s(i); CREATE INDEX brin_test_multi_1_idx_1 ON brin_test_multi_1 USING brin (a int4_minmax_multi_ops) WITH (pages_per_range=5); CREATE INDEX brin_test_multi_1_idx_2 ON brin_test_multi_1 USING brin (b int8_minmax_multi_ops) WITH (pages_per_range=5); SET enable_seqscan=off; -- int: less than SELECT COUNT(*) FROM brin_test_multi_1 WHERE a < 37; SELECT COUNT(*) FROM brin_test_multi_1 WHERE a < 113; SELECT COUNT(*) FROM brin_test_multi_1 WHERE a <= 177; SELECT COUNT(*) FROM brin_test_multi_1 WHERE a <= 25; -- int: greater than SELECT COUNT(*) FROM brin_test_multi_1 WHERE a > 120; SELECT COUNT(*) FROM brin_test_multi_1 WHERE a >= 180; SELECT COUNT(*) FROM brin_test_multi_1 WHERE a > 71; SELECT COUNT(*) FROM brin_test_multi_1 WHERE a >= 63; -- int: equals SELECT COUNT(*) FROM brin_test_multi_1 WHERE a = 207; SELECT COUNT(*) FROM brin_test_multi_1 WHERE a = 177; -- bigint: less than SELECT COUNT(*) FROM brin_test_multi_1 WHERE b < 73; SELECT COUNT(*) FROM brin_test_multi_1 WHERE b <= 47; SELECT COUNT(*) FROM brin_test_multi_1 WHERE b < 199; SELECT COUNT(*) FROM brin_test_multi_1 WHERE b <= 150; -- bigint: greater than SELECT COUNT(*) FROM brin_test_multi_1 WHERE b > 93; SELECT COUNT(*) FROM brin_test_multi_1 WHERE b > 37; SELECT COUNT(*) FROM brin_test_multi_1 WHERE b >= 215; SELECT COUNT(*) FROM brin_test_multi_1 WHERE b > 201; -- bigint: equals SELECT COUNT(*) FROM brin_test_multi_1 WHERE b = 88; SELECT COUNT(*) FROM brin_test_multi_1 WHERE b = 103; -- now do the same, but insert the rows with the indexes already created -- so that we don't use the "build callback" and instead use the regular -- approach of adding rows into existing ranges TRUNCATE brin_test_multi_1; INSERT INTO brin_test_multi_1 SELECT i/5 + mod(911 * i + 483, 25), i/10 + mod(751 * i + 221, 41) FROM generate_series(1,1000) s(i); -- int: less than SELECT COUNT(*) FROM brin_test_multi_1 WHERE a < 37; SELECT COUNT(*) FROM brin_test_multi_1 WHERE a < 113; SELECT COUNT(*) FROM brin_test_multi_1 WHERE a <= 177; SELECT COUNT(*) FROM brin_test_multi_1 WHERE a <= 25; -- int: greater than SELECT COUNT(*) FROM brin_test_multi_1 WHERE a > 120; SELECT COUNT(*) FROM brin_test_multi_1 WHERE a >= 180; SELECT COUNT(*) FROM brin_test_multi_1 WHERE a > 71; SELECT COUNT(*) FROM brin_test_multi_1 WHERE a >= 63; -- int: equals SELECT COUNT(*) FROM brin_test_multi_1 WHERE a = 207; SELECT COUNT(*) FROM brin_test_multi_1 WHERE a = 177; -- bigint: less than SELECT COUNT(*) FROM brin_test_multi_1 WHERE b < 73; SELECT COUNT(*) FROM brin_test_multi_1 WHERE b <= 47; SELECT COUNT(*) FROM brin_test_multi_1 WHERE b < 199; SELECT COUNT(*) FROM brin_test_multi_1 WHERE b <= 150; -- bigint: greater than SELECT COUNT(*) FROM brin_test_multi_1 WHERE b > 93; SELECT COUNT(*) FROM brin_test_multi_1 WHERE b > 37; SELECT COUNT(*) FROM brin_test_multi_1 WHERE b >= 215; SELECT COUNT(*) FROM brin_test_multi_1 WHERE b > 201; -- bigint: equals SELECT COUNT(*) FROM brin_test_multi_1 WHERE b = 88; SELECT COUNT(*) FROM brin_test_multi_1 WHERE b = 103; DROP TABLE brin_test_multi_1; RESET enable_seqscan; -- do some inequality tests for varlena data types CREATE TABLE brin_test_multi_2 (a UUID) WITH (fillfactor=10); INSERT INTO brin_test_multi_2 SELECT v::uuid FROM (SELECT row_number() OVER (ORDER BY v) c, v FROM (SELECT fipshash((i/13)::text) AS v FROM generate_series(1,1000) s(i)) foo) bar ORDER BY c + 25 * random(); CREATE INDEX brin_test_multi_2_idx ON brin_test_multi_2 USING brin (a uuid_minmax_multi_ops) WITH (pages_per_range=5); SET enable_seqscan=off; SELECT COUNT(*) FROM brin_test_multi_2 WHERE a < '3d914f93-48c9-cc0f-f8a7-9716700b9fcd'; SELECT COUNT(*) FROM brin_test_multi_2 WHERE a > '3d914f93-48c9-cc0f-f8a7-9716700b9fcd'; SELECT COUNT(*) FROM brin_test_multi_2 WHERE a <= 'f369cb89-fc62-7e66-8987-007d121ed1ea'; SELECT COUNT(*) FROM brin_test_multi_2 WHERE a >= 'aea92132-c4cb-eb26-3e6a-c2bf6c183b5d'; SELECT COUNT(*) FROM brin_test_multi_2 WHERE a = '5feceb66-ffc8-6f38-d952-786c6d696c79'; SELECT COUNT(*) FROM brin_test_multi_2 WHERE a = '86e50149-6586-6131-2a9e-0b35558d84f6'; -- now do the same, but insert the rows with the indexes already created -- so that we don't use the "build callback" and instead use the regular -- approach of adding rows into existing ranges TRUNCATE brin_test_multi_2; INSERT INTO brin_test_multi_2 SELECT v::uuid FROM (SELECT row_number() OVER (ORDER BY v) c, v FROM (SELECT fipshash((i/13)::text) AS v FROM generate_series(1,1000) s(i)) foo) bar ORDER BY c + 25 * random(); SELECT COUNT(*) FROM brin_test_multi_2 WHERE a < '3d914f93-48c9-cc0f-f8a7-9716700b9fcd'; SELECT COUNT(*) FROM brin_test_multi_2 WHERE a > '3d914f93-48c9-cc0f-f8a7-9716700b9fcd'; SELECT COUNT(*) FROM brin_test_multi_2 WHERE a <= 'f369cb89-fc62-7e66-8987-007d121ed1ea'; SELECT COUNT(*) FROM brin_test_multi_2 WHERE a >= 'aea92132-c4cb-eb26-3e6a-c2bf6c183b5d'; SELECT COUNT(*) FROM brin_test_multi_2 WHERE a = '5feceb66-ffc8-6f38-d952-786c6d696c79'; SELECT COUNT(*) FROM brin_test_multi_2 WHERE a = '86e50149-6586-6131-2a9e-0b35558d84f6'; DROP TABLE brin_test_multi_2; RESET enable_seqscan; -- test overflows during CREATE INDEX with extreme timestamp values CREATE TABLE brin_timestamp_test(a TIMESTAMPTZ); SET datestyle TO iso; -- values close to timestamp minimum INSERT INTO brin_timestamp_test SELECT '4713-01-01 00:00:01 BC'::timestamptz + (i || ' seconds')::interval FROM generate_series(1,30) s(i); -- values close to timestamp maximum INSERT INTO brin_timestamp_test SELECT '294276-12-01 00:00:01'::timestamptz + (i || ' seconds')::interval FROM generate_series(1,30) s(i); CREATE INDEX ON brin_timestamp_test USING brin (a timestamptz_minmax_multi_ops) WITH (pages_per_range=1); DROP TABLE brin_timestamp_test; -- test overflows during CREATE INDEX with extreme date values CREATE TABLE brin_date_test(a DATE); -- insert values close to date minimum INSERT INTO brin_date_test SELECT '4713-01-01 BC'::date + i FROM generate_series(1, 30) s(i); -- insert values close to date minimum INSERT INTO brin_date_test SELECT '5874897-12-01'::date + i FROM generate_series(1, 30) s(i); CREATE INDEX ON brin_date_test USING brin (a date_minmax_multi_ops) WITH (pages_per_range=1); SET enable_seqscan = off; -- make sure the ranges were built correctly and 2023-01-01 eliminates all EXPLAIN (ANALYZE, TIMING OFF, COSTS OFF, SUMMARY OFF) SELECT * FROM brin_date_test WHERE a = '2023-01-01'::date; DROP TABLE brin_date_test; RESET enable_seqscan; -- test handling of infinite timestamp values CREATE TABLE brin_timestamp_test(a TIMESTAMP); INSERT INTO brin_timestamp_test VALUES ('-infinity'), ('infinity'); INSERT INTO brin_timestamp_test SELECT i FROM generate_series('2000-01-01'::timestamp, '2000-02-09'::timestamp, '1 day'::interval) s(i); CREATE INDEX ON brin_timestamp_test USING brin (a timestamp_minmax_multi_ops) WITH (pages_per_range=1); SET enable_seqscan = off; EXPLAIN (ANALYZE, TIMING OFF, COSTS OFF, SUMMARY OFF) SELECT * FROM brin_timestamp_test WHERE a = '2023-01-01'::timestamp; EXPLAIN (ANALYZE, TIMING OFF, COSTS OFF, SUMMARY OFF) SELECT * FROM brin_timestamp_test WHERE a = '1900-01-01'::timestamp; DROP TABLE brin_timestamp_test; RESET enable_seqscan; -- test handling of infinite date values CREATE TABLE brin_date_test(a DATE); INSERT INTO brin_date_test VALUES ('-infinity'), ('infinity'); INSERT INTO brin_date_test SELECT '2000-01-01'::date + i FROM generate_series(1, 40) s(i); CREATE INDEX ON brin_date_test USING brin (a date_minmax_multi_ops) WITH (pages_per_range=1); SET enable_seqscan = off; EXPLAIN (ANALYZE, TIMING OFF, COSTS OFF, SUMMARY OFF) SELECT * FROM brin_date_test WHERE a = '2023-01-01'::date; EXPLAIN (ANALYZE, TIMING OFF, COSTS OFF, SUMMARY OFF) SELECT * FROM brin_date_test WHERE a = '1900-01-01'::date; DROP TABLE brin_date_test; RESET enable_seqscan; RESET datestyle; -- test handling of overflow for interval values CREATE TABLE brin_interval_test(a INTERVAL); INSERT INTO brin_interval_test SELECT (i || ' years')::interval FROM generate_series(-178000000, -177999980) s(i); INSERT INTO brin_interval_test SELECT (i || ' years')::interval FROM generate_series( 177999980, 178000000) s(i); CREATE INDEX ON brin_interval_test USING brin (a interval_minmax_multi_ops) WITH (pages_per_range=1); SET enable_seqscan = off; EXPLAIN (ANALYZE, TIMING OFF, COSTS OFF, SUMMARY OFF) SELECT * FROM brin_interval_test WHERE a = '-30 years'::interval; EXPLAIN (ANALYZE, TIMING OFF, COSTS OFF, SUMMARY OFF) SELECT * FROM brin_interval_test WHERE a = '30 years'::interval; DROP TABLE brin_interval_test; RESET enable_seqscan; -- test handling of infinite interval values CREATE TABLE brin_interval_test(a INTERVAL); INSERT INTO brin_interval_test VALUES ('-infinity'), ('infinity'); INSERT INTO brin_interval_test SELECT (i || ' days')::interval FROM generate_series(100, 140) s(i); CREATE INDEX ON brin_interval_test USING brin (a interval_minmax_multi_ops) WITH (pages_per_range=1); SET enable_seqscan = off; EXPLAIN (ANALYZE, TIMING OFF, COSTS OFF, SUMMARY OFF) SELECT * FROM brin_interval_test WHERE a = '-30 years'::interval; EXPLAIN (ANALYZE, TIMING OFF, COSTS OFF, SUMMARY OFF) SELECT * FROM brin_interval_test WHERE a = '30 years'::interval; DROP TABLE brin_interval_test; RESET enable_seqscan; RESET datestyle; libpg_query-17-6.1.0/test/sql/postgres_regress/btree_index.sql000066400000000000000000000227041477334012600244700ustar00rootroot00000000000000-- -- BTREE_INDEX -- -- directory paths are passed to us in environment variables \getenv abs_srcdir PG_ABS_SRCDIR 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 ); \set filename :abs_srcdir '/data/desc.data' COPY bt_i4_heap FROM :'filename'; \set filename :abs_srcdir '/data/hash.data' COPY bt_name_heap FROM :'filename'; \set filename :abs_srcdir '/data/desc.data' COPY bt_txt_heap FROM :'filename'; \set filename :abs_srcdir '/data/hash.data' COPY bt_f8_heap FROM :'filename'; ANALYZE bt_i4_heap; ANALYZE bt_name_heap; ANALYZE bt_txt_heap; ANALYZE bt_f8_heap; -- -- 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); -- -- 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; -- -- Add coverage for optimization of backwards scan index descents -- -- Here we expect _bt_search to descend straight to a leaf page containing a -- non-pivot tuple with the value '47', which comes last (after 11 similar -- non-pivot tuples). Query execution should only need to visit a single -- leaf page here. -- -- Test case relies on tenk1_hundred index having a leaf page whose high key -- is '(48, -inf)'. We use a low cardinality index to make our test case less -- sensitive to implementation details that may change in the future. set enable_seqscan to false; set enable_indexscan to true; set enable_bitmapscan to false; explain (costs off) select hundred, twenty from tenk1 where hundred < 48 order by hundred desc limit 1; select hundred, twenty from tenk1 where hundred < 48 order by hundred desc limit 1; -- This variant of the query need only return a single tuple located to the immediate -- right of the '(48, -inf)' high key. It also only needs to scan one single -- leaf page (the right sibling of the page scanned by the last test case): explain (costs off) select hundred, twenty from tenk1 where hundred <= 48 order by hundred desc limit 1; select hundred, twenty from tenk1 where hundred <= 48 order by hundred desc limit 1; -- -- Add coverage for ScalarArrayOp btree quals with pivot tuple constants -- explain (costs off) select distinct hundred from tenk1 where hundred in (47, 48, 72, 82); select distinct hundred from tenk1 where hundred in (47, 48, 72, 82); explain (costs off) select distinct hundred from tenk1 where hundred in (47, 48, 72, 82) order by hundred desc; select distinct hundred from tenk1 where hundred in (47, 48, 72, 82) order by hundred desc; explain (costs off) select thousand from tenk1 where thousand in (364, 366,380) and tenthous = 200000; select thousand from tenk1 where thousand in (364, 366,380) and tenthous = 200000; -- -- 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)); -- Test case of ALTER INDEX with abuse of column names for indexes. -- This grammar is not officially supported, but the parser allows it. CREATE INDEX btree_tall_idx2 ON btree_tall_tbl (id); ALTER INDEX btree_tall_idx2 ALTER COLUMN id SET (n_distinct=100); DROP INDEX btree_tall_idx2; -- Partitioned index CREATE TABLE btree_part (id int4) PARTITION BY RANGE (id); CREATE INDEX btree_part_idx ON btree_part(id); ALTER INDEX btree_part_idx ALTER COLUMN id SET (n_distinct=100); DROP TABLE btree_part; libpg_query-17-6.1.0/test/sql/postgres_regress/case.sql000066400000000000000000000143661477334012600231200ustar00rootroot00000000000000-- -- 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 CASE WHEN i >= 3 THEN i END AS ">= 3 or Null" FROM CASE_TBL; SELECT CASE WHEN i >= 3 THEN (i + i) ELSE i END AS "Simplest Math" FROM CASE_TBL; SELECT 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 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 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 * FROM CASE_TBL a, CASE2_TBL b WHERE COALESCE(f,b.i) = 2; -- Tests for constant subexpression simplification explain (costs off) SELECT * FROM CASE_TBL WHERE NULLIF(1, 2) = 2; explain (costs off) SELECT * FROM CASE_TBL WHERE NULLIF(1, 1) IS NOT NULL; explain (costs off) SELECT * FROM CASE_TBL WHERE NULLIF(1, null) = 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; -- While we're here, also test handling of a NULLIF arg that is a read/write -- object (bug #18722) SELECT NULLIF(make_ad(1,2), array[2,3]::arrdomain); 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-17-6.1.0/test/sql/postgres_regress/char.sql000066400000000000000000000036601477334012600231150ustar00rootroot00000000000000-- -- CHAR -- -- Per SQL standard, CHAR means character(1), that is a varlena type -- with a constraint restricting it to one character (not byte) SELECT char 'c' = char 'c' AS true; -- -- Build a table for testing -- (This temporarily hides the table created in test_setup.sql) -- CREATE TEMP 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 * FROM CHAR_TBL; SELECT c.* FROM CHAR_TBL c WHERE c.f1 <> 'a'; SELECT c.* FROM CHAR_TBL c WHERE c.f1 = 'a'; SELECT c.* FROM CHAR_TBL c WHERE c.f1 < 'a'; SELECT c.* FROM CHAR_TBL c WHERE c.f1 <= 'a'; SELECT c.* FROM CHAR_TBL c WHERE c.f1 > 'a'; SELECT c.* FROM CHAR_TBL c WHERE c.f1 >= 'a'; DROP TABLE CHAR_TBL; -- -- Now test longer arrays of char -- -- This char_tbl was already created and filled in test_setup.sql. -- Here we just try to insert bad values. -- INSERT INTO CHAR_TBL (f1) VALUES ('abcde'); SELECT * FROM CHAR_TBL; -- Also try it with non-error-throwing API SELECT pg_input_is_valid('abcd ', 'char(4)'); SELECT pg_input_is_valid('abcde', 'char(4)'); SELECT * FROM pg_input_error_info('abcde', 'char(4)'); -- -- Also test "char", which is an ad-hoc one-byte type. It can only -- really store ASCII characters, but we allow high-bit-set characters -- to be accessed via bytea-like escapes. -- SELECT 'a'::"char"; SELECT '\101'::"char"; SELECT '\377'::"char"; SELECT 'a'::"char"::text; SELECT '\377'::"char"::text; SELECT '\000'::"char"::text; SELECT 'a'::text::"char"; SELECT '\377'::text::"char"; SELECT ''::text::"char"; libpg_query-17-6.1.0/test/sql/postgres_regress/circle.sql000066400000000000000000000025241477334012600234370ustar00rootroot00000000000000-- -- 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 center(f1) AS center FROM CIRCLE_TBL; SELECT radius(f1) AS radius FROM CIRCLE_TBL; SELECT diameter(f1) AS diameter FROM CIRCLE_TBL; SELECT f1 FROM CIRCLE_TBL WHERE radius(f1) < 5; SELECT f1 FROM CIRCLE_TBL WHERE diameter(f1) >= 10; SELECT 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-17-6.1.0/test/sql/postgres_regress/cluster.sql000066400000000000000000000305221477334012600236560ustar00rootroot00000000000000-- -- 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 toast tables are clusterable CLUSTER pg_toast.pg_toast_826 USING pg_toast_826_index; -- 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; SET client_min_messages = ERROR; -- order of "skipping" warnings may vary CLUSTER; RESET client_min_messages; 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 can be clustered CREATE TABLE clstrpart (a int) PARTITION BY RANGE (a); CREATE TABLE clstrpart1 PARTITION OF clstrpart FOR VALUES FROM (1) TO (10) PARTITION BY RANGE (a); CREATE TABLE clstrpart11 PARTITION OF clstrpart1 FOR VALUES FROM (1) TO (5); CREATE TABLE clstrpart12 PARTITION OF clstrpart1 FOR VALUES FROM (5) TO (10) PARTITION BY RANGE (a); CREATE TABLE clstrpart2 PARTITION OF clstrpart FOR VALUES FROM (10) TO (20); CREATE TABLE clstrpart3 PARTITION OF clstrpart DEFAULT PARTITION BY RANGE (a); CREATE TABLE clstrpart33 PARTITION OF clstrpart3 DEFAULT; CREATE INDEX clstrpart_only_idx ON ONLY clstrpart (a); CLUSTER clstrpart USING clstrpart_only_idx; -- fails DROP INDEX clstrpart_only_idx; CREATE INDEX clstrpart_idx ON clstrpart (a); -- Check that clustering sets new relfilenodes: CREATE TEMP TABLE old_cluster_info AS SELECT relname, level, relfilenode, relkind FROM pg_partition_tree('clstrpart'::regclass) AS tree JOIN pg_class c ON c.oid=tree.relid ; CLUSTER clstrpart USING clstrpart_idx; CREATE TEMP TABLE new_cluster_info AS SELECT relname, level, relfilenode, relkind FROM pg_partition_tree('clstrpart'::regclass) AS tree JOIN pg_class c ON c.oid=tree.relid ; SELECT relname, old.level, old.relkind, old.relfilenode = new.relfilenode FROM old_cluster_info AS old JOIN new_cluster_info AS new USING (relname) ORDER BY relname COLLATE "C"; -- Partitioned indexes aren't and can't be marked un/clustered: \d clstrpart CLUSTER clstrpart; ALTER TABLE clstrpart SET WITHOUT CLUSTER; ALTER TABLE clstrpart CLUSTER ON clstrpart_idx; DROP TABLE clstrpart; -- Ownership of partitions is checked CREATE TABLE ptnowner(i int unique) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; CLUSTER ptnowner USING ptnowner_i_idx; RESET SESSION AUTHORIZATION; ALTER TABLE ptnowner OWNER TO regress_ptnowner; CREATE TEMP TABLE ptnowner_oldnodes AS SELECT oid, relname, relfilenode FROM pg_partition_tree('ptnowner') AS tree JOIN pg_class AS c ON c.oid=tree.relid; SET SESSION AUTHORIZATION regress_ptnowner; CLUSTER ptnowner USING ptnowner_i_idx; RESET SESSION AUTHORIZATION; SELECT a.relname, a.relfilenode=b.relfilenode FROM pg_class a JOIN ptnowner_oldnodes b USING (oid) ORDER BY a.relname COLLATE "C"; DROP TABLE ptnowner; DROP ROLE regress_ptnowner; -- 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; WITH rows AS (SELECT ctid, lag(a) OVER (ORDER BY ctid) AS la, a FROM clstr_expression) SELECT * FROM rows WHERE la < 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; WITH rows AS (SELECT ctid, lag(b) OVER (ORDER BY ctid) AS lb, b FROM clstr_expression) SELECT * FROM rows WHERE upper(lb) > 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-17-6.1.0/test/sql/postgres_regress/collate.icu.utf8.sql000066400000000000000000001045211477334012600252650ustar00rootroot00000000000000/* * 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' AND collname <> 'unicode') = 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: SET client_min_messages TO WARNING; SET icu_validation_level = disabled; do $$ BEGIN EXECUTE 'CREATE COLLATION test0 (provider = icu, locale = ' || quote_literal((SELECT CASE WHEN datlocprovider='i' THEN datlocale ELSE datcollate END FROM pg_database WHERE datname = current_database())) || ');'; END $$; CREATE COLLATION test0 FROM "C"; -- fail, duplicate name do $$ BEGIN EXECUTE 'CREATE COLLATION test1 (provider = icu, locale = ' || quote_literal((SELECT CASE WHEN datlocprovider='i' THEN datlocale ELSE datcollate END FROM pg_database WHERE datname = current_database())) || ');'; END $$; RESET icu_validation_level; RESET client_min_messages; CREATE COLLATION test3 (provider = icu, lc_collate = 'en_US.utf8'); -- fail, needs "locale" SET icu_validation_level = ERROR; CREATE COLLATION testx (provider = icu, locale = 'nonsense-nowhere'); -- fails CREATE COLLATION testx (provider = icu, locale = '@colStrength=primary;nonsense=yes'); -- fails RESET icu_validation_level; CREATE COLLATION testx (provider = icu, locale = '@colStrength=primary;nonsense=yes'); DROP COLLATION testx; CREATE COLLATION testx (provider = icu, locale = 'nonsense-nowhere'); 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; -- also test for database while we are here SELECT current_database() AS datname \gset ALTER DATABASE :"datname" REFRESH COLLATION 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; -- standard collations SELECT * FROM collate_test2 ORDER BY b COLLATE UCS_BASIC; SELECT * FROM collate_test2 ORDER BY b COLLATE UNICODE; -- test ICU collation customization -- test the attributes handled by icu_set_collation_attributes() SET client_min_messages=WARNING; CREATE COLLATION testcoll_ignore_accents (provider = icu, locale = '@colStrength=primary;colCaseLevel=yes'); RESET client_min_messages; SELECT 'aaá' > 'AAA' COLLATE "und-x-icu", 'aaá' < 'AAA' COLLATE testcoll_ignore_accents; SET client_min_messages=WARNING; CREATE COLLATION testcoll_backwards (provider = icu, locale = '@colBackwards=yes'); RESET client_min_messages; 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; SET client_min_messages=WARNING; CREATE COLLATION testcoll_numeric (provider = icu, locale = '@colNumeric=yes'); RESET client_min_messages; 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; -- rules CREATE COLLATION testcoll_rules1 (provider = icu, locale = '', rules = '&a < g'); CREATE TABLE test7 (a text); -- example from https://unicode-org.github.io/icu/userguide/collation/customization/#syntax INSERT INTO test7 VALUES ('Abernathy'), ('apple'), ('bird'), ('Boston'), ('Graham'), ('green'); SELECT * FROM test7 ORDER BY a COLLATE "en-x-icu"; SELECT * FROM test7 ORDER BY a COLLATE testcoll_rules1; DROP TABLE test7; CREATE COLLATION testcoll_rulesx (provider = icu, locale = '', rules = '!!wrong!!'); -- 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; -- test language tags CREATE COLLATION lt_insensitive (provider = icu, locale = 'en-u-ks-level1', deterministic = false); SELECT 'aBcD' COLLATE lt_insensitive = 'AbCd' COLLATE lt_insensitive; CREATE COLLATION lt_upperfirst (provider = icu, locale = 'und-u-kf-upper'); SELECT 'Z' COLLATE lt_upperfirst < 'z' COLLATE lt_upperfirst; 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'; SET enable_hashagg TO off; 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; RESET enable_hashagg; 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 SET client_min_messages=WARNING; CREATE COLLATION ignore_accents (provider = icu, locale = '@colStrength=primary;colCaseLevel=yes', deterministic = false); RESET client_min_messages; 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); -- -- Bug #18568 -- -- Partitionwise aggregate (full or partial) should not be used when a -- partition key's collation doesn't match that of the GROUP BY column it is -- matched with. SET max_parallel_workers_per_gather TO 0; SET enable_incremental_sort TO off; CREATE TABLE pagg_tab3 (a text, c text collate case_insensitive) PARTITION BY LIST(c collate "C"); CREATE TABLE pagg_tab3_p1 PARTITION OF pagg_tab3 FOR VALUES IN ('a', 'b'); CREATE TABLE pagg_tab3_p2 PARTITION OF pagg_tab3 FOR VALUES IN ('B', 'A'); INSERT INTO pagg_tab3 SELECT i % 4 + 1, substr('abAB', (i % 4) + 1 , 1) FROM generate_series(0, 19) i; ANALYZE pagg_tab3; SET enable_partitionwise_aggregate TO false; EXPLAIN (COSTS OFF) SELECT upper(c collate case_insensitive), count(c) FROM pagg_tab3 GROUP BY c collate case_insensitive ORDER BY 1; SELECT upper(c collate case_insensitive), count(c) FROM pagg_tab3 GROUP BY c collate case_insensitive ORDER BY 1; -- No "full" partitionwise aggregation allowed, though "partial" is allowed. SET enable_partitionwise_aggregate TO true; EXPLAIN (COSTS OFF) SELECT upper(c collate case_insensitive), count(c) FROM pagg_tab3 GROUP BY c collate case_insensitive ORDER BY 1; SELECT upper(c collate case_insensitive), count(c) FROM pagg_tab3 GROUP BY c collate case_insensitive ORDER BY 1; -- OK to use full partitionwise aggregate after changing the GROUP BY column's -- collation to be the same as that of the partition key. EXPLAIN (COSTS OFF) SELECT c collate "C", count(c) FROM pagg_tab3 GROUP BY c collate "C" ORDER BY 1; SELECT c collate "C", count(c) FROM pagg_tab3 GROUP BY c collate "C" ORDER BY 1; -- Partitionwise join should not be allowed too when the collation used by the -- join keys doesn't match the partition key collation. SET enable_partitionwise_join TO false; EXPLAIN (COSTS OFF) SELECT t1.c, count(t2.c) FROM pagg_tab3 t1 JOIN pagg_tab3 t2 ON t1.c = t2.c GROUP BY 1 ORDER BY t1.c COLLATE "C"; SELECT t1.c, count(t2.c) FROM pagg_tab3 t1 JOIN pagg_tab3 t2 ON t1.c = t2.c GROUP BY 1 ORDER BY t1.c COLLATE "C"; SET enable_partitionwise_join TO true; EXPLAIN (COSTS OFF) SELECT t1.c, count(t2.c) FROM pagg_tab3 t1 JOIN pagg_tab3 t2 ON t1.c = t2.c GROUP BY 1 ORDER BY t1.c COLLATE "C"; SELECT t1.c, count(t2.c) FROM pagg_tab3 t1 JOIN pagg_tab3 t2 ON t1.c = t2.c GROUP BY 1 ORDER BY t1.c COLLATE "C"; -- OK when the join clause uses the same collation as the partition key. EXPLAIN (COSTS OFF) SELECT t1.c COLLATE "C", count(t2.c) FROM pagg_tab3 t1 JOIN pagg_tab3 t2 ON t1.c = t2.c COLLATE "C" GROUP BY t1.c COLLATE "C" ORDER BY t1.c COLLATE "C"; SELECT t1.c COLLATE "C", count(t2.c) FROM pagg_tab3 t1 JOIN pagg_tab3 t2 ON t1.c = t2.c COLLATE "C" GROUP BY t1.c COLLATE "C" ORDER BY t1.c COLLATE "C"; SET enable_partitionwise_join TO false; EXPLAIN (COSTS OFF) SELECT t1.c COLLATE "C", count(t2.c) FROM pagg_tab3 t1 JOIN pagg_tab3 t2 ON t1.c = t2.c COLLATE "C" GROUP BY t1.c COLLATE "C" ORDER BY t1.c COLLATE "C"; SELECT t1.c COLLATE "C", count(t2.c) FROM pagg_tab3 t1 JOIN pagg_tab3 t2 ON t1.c = t2.c COLLATE "C" GROUP BY t1.c COLLATE "C" ORDER BY t1.c COLLATE "C"; DROP TABLE pagg_tab3; RESET enable_partitionwise_aggregate; RESET max_parallel_workers_per_gather; RESET enable_incremental_sort; -- 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-17-6.1.0/test/sql/postgres_regress/collate.linux.utf8.sql000066400000000000000000000357471477334012600256610ustar00rootroot00000000000000/* * 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((SELECT datcollate FROM pg_database WHERE datname = current_database())) || ');'; 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((SELECT datcollate FROM pg_database WHERE datname = current_database())) || ', lc_ctype = ' || quote_literal((SELECT datctype FROM pg_database WHERE datname = current_database())) || ');'; 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; -- also test for database while we are here SELECT current_database() AS datname \gset ALTER DATABASE :"datname" REFRESH COLLATION 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; -- standard collations SELECT * FROM collate_test2 ORDER BY b COLLATE UCS_BASIC; -- 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-17-6.1.0/test/sql/postgres_regress/collate.sql000066400000000000000000000271341477334012600236250ustar00rootroot00000000000000/* * 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 builtin_c ( PROVIDER = builtin, LOCALE = "C" ); SELECT b FROM collate_test1 ORDER BY b COLLATE builtin_c; CREATE COLLATION builtin2 ( PROVIDER = builtin ); -- fails CREATE COLLATION builtin2 ( PROVIDER = builtin, LOCALE = "en_US" ); -- fails CREATE COLLATION builtin2 ( PROVIDER = builtin, LC_CTYPE = "C", LC_COLLATE = "C" ); -- fails 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 -- Check conflicting or redundant options in CREATE COLLATION -- LC_COLLATE CREATE COLLATION coll_dup_chk (LC_COLLATE = "POSIX", LC_COLLATE = "NONSENSE", LC_CTYPE = "POSIX"); -- LC_CTYPE CREATE COLLATION coll_dup_chk (LC_CTYPE = "POSIX", LC_CTYPE = "NONSENSE", LC_COLLATE = "POSIX"); -- PROVIDER CREATE COLLATION coll_dup_chk (PROVIDER = icu, PROVIDER = NONSENSE, LC_COLLATE = "POSIX", LC_CTYPE = "POSIX"); -- LOCALE CREATE COLLATION case_sensitive (LOCALE = '', LOCALE = "NONSENSE"); -- DETERMINISTIC CREATE COLLATION coll_dup_chk (DETERMINISTIC = TRUE, DETERMINISTIC = NONSENSE, LOCALE = ''); -- VERSION CREATE COLLATION coll_dup_chk (VERSION = '1', VERSION = "NONSENSE", LOCALE = ''); -- LOCALE conflicts with LC_COLLATE and LC_CTYPE CREATE COLLATION coll_dup_chk (LC_COLLATE = "POSIX", LC_CTYPE = "POSIX", LOCALE = ''); -- LOCALE conflicts with LC_COLLATE CREATE COLLATION coll_dup_chk (LC_COLLATE = "POSIX", LOCALE = ''); -- LOCALE conflicts with LC_CTYPE CREATE COLLATION coll_dup_chk (LC_CTYPE = "POSIX", LOCALE = ''); -- FROM conflicts with any other option CREATE COLLATION coll_dup_chk (FROM = "C", VERSION = "1"); -- -- 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-17-6.1.0/test/sql/postgres_regress/collate.utf8.sql000066400000000000000000000036561477334012600245150ustar00rootroot00000000000000/* * This test is for collations and character operations when using the * builtin provider with the C.UTF-8 locale. */ /* skip test if not UTF8 server encoding */ SELECT getdatabaseencoding() <> 'UTF8' AS skip_test \gset \if :skip_test \quit \endif SET client_encoding TO UTF8; -- -- Test PG_C_UTF8 -- CREATE COLLATION regress_pg_c_utf8 ( provider = builtin, locale = 'C_UTF8'); -- fails CREATE COLLATION regress_pg_c_utf8 ( provider = builtin, locale = 'C.UTF8'); DROP COLLATION regress_pg_c_utf8; CREATE COLLATION regress_pg_c_utf8 ( provider = builtin, locale = 'C.UTF-8'); CREATE TABLE test_pg_c_utf8 ( t TEXT COLLATE PG_C_UTF8 ); INSERT INTO test_pg_c_utf8 VALUES ('abc DEF 123abc'), ('ábc sßs ßss DÉF'), ('Ç„xxÇ„ džxxÇ… Ç…xxdž'), ('ȺȺȺ'), ('ⱥⱥⱥ'), ('ⱥȺ'); SELECT t, lower(t), initcap(t), upper(t), length(convert_to(t, 'UTF8')) AS t_bytes, length(convert_to(lower(t), 'UTF8')) AS lower_t_bytes, length(convert_to(initcap(t), 'UTF8')) AS initcap_t_bytes, length(convert_to(upper(t), 'UTF8')) AS upper_t_bytes FROM test_pg_c_utf8; DROP TABLE test_pg_c_utf8; -- negative test: Final_Sigma not used for builtin locale C.UTF-8 SELECT lower('ΑΣ' COLLATE PG_C_UTF8); SELECT lower('ΑͺΣͺ' COLLATE PG_C_UTF8); SELECT lower('Α΄Σ΄' COLLATE PG_C_UTF8); -- properties SELECT 'xyz' ~ '[[:alnum:]]' COLLATE PG_C_UTF8; SELECT 'xyz' !~ '[[:upper:]]' COLLATE PG_C_UTF8; SELECT '@' !~ '[[:alnum:]]' COLLATE PG_C_UTF8; SELECT '=' ~ '[[:punct:]]' COLLATE PG_C_UTF8; -- symbols are punctuation in posix SELECT 'a8a' ~ '[[:digit:]]' COLLATE PG_C_UTF8; SELECT '൧' !~ '\d' COLLATE PG_C_UTF8; -- only 0-9 considered digits in posix -- case mapping SELECT 'xYz' ~* 'XyZ' COLLATE PG_C_UTF8; SELECT 'xAb' ~* '[W-Y]' COLLATE PG_C_UTF8; SELECT 'xAb' !~* '[c-d]' COLLATE PG_C_UTF8; SELECT 'Δ' ~* '[γ-λ]' COLLATE PG_C_UTF8; SELECT 'δ' ~* '[Γ-Λ]' COLLATE PG_C_UTF8; -- same as above with cases reversed libpg_query-17-6.1.0/test/sql/postgres_regress/collate.windows.win1252.sql000066400000000000000000000323511477334012600264210ustar00rootroot00000000000000/* * This test is meant to run on Windows systems that has successfully * run pg_import_system_collations(). Also, the database must have * WIN1252 encoding, because of the locales' own encodings. Because * of this, some test are lost from UTF-8 version, such as Turkish * dotted and undotted 'i'. */ SELECT getdatabaseencoding() <> 'WIN1252' OR (SELECT count(*) FROM pg_collation WHERE collname IN ('de_DE', 'en_US', 'sv_SE') AND collencoding = pg_char_to_encoding('WIN1252')) <> 3 OR (version() !~ 'Visual C\+\+' AND version() !~ 'mingw32' AND version() !~ 'windows') AS skip_test \gset \if :skip_test \quit \endif SET client_encoding TO WIN1252; 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"; -- 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%'; -- 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; -- The following actually exercises the selectivity estimation for ~*. SELECT relname FROM pg_class WHERE relname ~* '^abc'; -- 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"; 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, 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, 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, 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 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 -- 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((SELECT datcollate FROM pg_database WHERE datname = current_database())) || ');'; 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((SELECT datcollate FROM pg_database WHERE datname = current_database())) || ', lc_ctype = ' || quote_literal((SELECT datctype FROM pg_database WHERE datname = current_database())) || ');'; 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; -- also test for database while we are here SELECT current_database() AS datname \gset ALTER DATABASE :"datname" REFRESH COLLATION 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) do $$ BEGIN EXECUTE 'CREATE COLLATION ctest_det (locale = ' || quote_literal((SELECT collcollate FROM pg_collation WHERE collname = 'en_US')) || ', deterministic = true);'; END $$; CREATE COLLATION ctest_nondet (locale = 'en_US', deterministic = false); -- cleanup SET client_min_messages TO warning; DROP SCHEMA collate_tests CASCADE; libpg_query-17-6.1.0/test/sql/postgres_regress/combocid.sql000066400000000000000000000054161477334012600237600ustar00rootroot00000000000000-- -- 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-17-6.1.0/test/sql/postgres_regress/comments.sql000066400000000000000000000020211477334012600240130ustar00rootroot00000000000000-- -- 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-17-6.1.0/test/sql/postgres_regress/compression.sql000066400000000000000000000130731477334012600245400ustar00rootroot00000000000000\set HIDE_TOAST_COMPRESSION false -- ensure we get stable results regardless of installation's default SET default_toast_compression = 'pglz'; -- test creating table with compression method CREATE TABLE cmdata(f1 text COMPRESSION pglz); CREATE INDEX idx ON cmdata(f1); INSERT INTO cmdata VALUES(repeat('1234567890', 1000)); \d+ cmdata CREATE TABLE cmdata1(f1 TEXT COMPRESSION lz4); INSERT INTO cmdata1 VALUES(repeat('1234567890', 1004)); \d+ cmdata1 -- verify stored compression method in the data SELECT pg_column_compression(f1) FROM cmdata; SELECT pg_column_compression(f1) FROM cmdata1; -- decompress data slice SELECT SUBSTR(f1, 200, 5) FROM cmdata; SELECT SUBSTR(f1, 2000, 50) FROM cmdata1; -- copy with table creation SELECT * INTO cmmove1 FROM cmdata; \d+ cmmove1 SELECT pg_column_compression(f1) FROM cmmove1; -- copy to existing table CREATE TABLE cmmove3(f1 text COMPRESSION pglz); INSERT INTO cmmove3 SELECT * FROM cmdata; INSERT INTO cmmove3 SELECT * FROM cmdata1; SELECT pg_column_compression(f1) FROM cmmove3; -- test LIKE INCLUDING COMPRESSION CREATE TABLE cmdata2 (LIKE cmdata1 INCLUDING COMPRESSION); \d+ cmdata2 DROP TABLE cmdata2; -- try setting compression for incompressible data type CREATE TABLE cmdata2 (f1 int COMPRESSION pglz); -- update using datum from different table CREATE TABLE cmmove2(f1 text COMPRESSION pglz); INSERT INTO cmmove2 VALUES (repeat('1234567890', 1004)); SELECT pg_column_compression(f1) FROM cmmove2; UPDATE cmmove2 SET f1 = cmdata1.f1 FROM cmdata1; SELECT pg_column_compression(f1) FROM cmmove2; -- test externally stored compressed data CREATE OR REPLACE FUNCTION large_val() RETURNS TEXT LANGUAGE SQL AS 'select array_agg(fipshash(g::text))::text from generate_series(1, 256) g'; CREATE TABLE cmdata2 (f1 text COMPRESSION pglz); INSERT INTO cmdata2 SELECT large_val() || repeat('a', 4000); SELECT pg_column_compression(f1) FROM cmdata2; INSERT INTO cmdata1 SELECT large_val() || repeat('a', 4000); SELECT pg_column_compression(f1) FROM cmdata1; SELECT SUBSTR(f1, 200, 5) FROM cmdata1; SELECT SUBSTR(f1, 200, 5) FROM cmdata2; DROP TABLE cmdata2; --test column type update varlena/non-varlena CREATE TABLE cmdata2 (f1 int); \d+ cmdata2 ALTER TABLE cmdata2 ALTER COLUMN f1 TYPE varchar; \d+ cmdata2 ALTER TABLE cmdata2 ALTER COLUMN f1 TYPE int USING f1::integer; \d+ cmdata2 --changing column storage should not impact the compression method --but the data should not be compressed ALTER TABLE cmdata2 ALTER COLUMN f1 TYPE varchar; ALTER TABLE cmdata2 ALTER COLUMN f1 SET COMPRESSION pglz; \d+ cmdata2 ALTER TABLE cmdata2 ALTER COLUMN f1 SET STORAGE plain; \d+ cmdata2 INSERT INTO cmdata2 VALUES (repeat('123456789', 800)); SELECT pg_column_compression(f1) FROM cmdata2; -- test compression with materialized view CREATE MATERIALIZED VIEW compressmv(x) AS SELECT * FROM cmdata1; \d+ compressmv SELECT pg_column_compression(f1) FROM cmdata1; SELECT pg_column_compression(x) FROM compressmv; -- test compression with partition CREATE TABLE cmpart(f1 text COMPRESSION lz4) PARTITION BY HASH(f1); CREATE TABLE cmpart1 PARTITION OF cmpart FOR VALUES WITH (MODULUS 2, REMAINDER 0); CREATE TABLE cmpart2(f1 text COMPRESSION pglz); ALTER TABLE cmpart ATTACH PARTITION cmpart2 FOR VALUES WITH (MODULUS 2, REMAINDER 1); INSERT INTO cmpart VALUES (repeat('123456789', 1004)); INSERT INTO cmpart VALUES (repeat('123456789', 4004)); SELECT pg_column_compression(f1) FROM cmpart1; SELECT pg_column_compression(f1) FROM cmpart2; -- test compression with inheritance CREATE TABLE cminh() INHERITS(cmdata, cmdata1); -- error CREATE TABLE cminh(f1 TEXT COMPRESSION lz4) INHERITS(cmdata); -- error CREATE TABLE cmdata3(f1 text); CREATE TABLE cminh() INHERITS (cmdata, cmdata3); -- test default_toast_compression GUC SET default_toast_compression = ''; SET default_toast_compression = 'I do not exist compression'; SET default_toast_compression = 'lz4'; SET default_toast_compression = 'pglz'; -- test alter compression method ALTER TABLE cmdata ALTER COLUMN f1 SET COMPRESSION lz4; INSERT INTO cmdata VALUES (repeat('123456789', 4004)); \d+ cmdata SELECT pg_column_compression(f1) FROM cmdata; ALTER TABLE cmdata2 ALTER COLUMN f1 SET COMPRESSION default; \d+ cmdata2 -- test alter compression method for materialized views ALTER MATERIALIZED VIEW compressmv ALTER COLUMN x SET COMPRESSION lz4; \d+ compressmv -- test alter compression method for partitioned tables ALTER TABLE cmpart1 ALTER COLUMN f1 SET COMPRESSION pglz; ALTER TABLE cmpart2 ALTER COLUMN f1 SET COMPRESSION lz4; -- new data should be compressed with the current compression method INSERT INTO cmpart VALUES (repeat('123456789', 1004)); INSERT INTO cmpart VALUES (repeat('123456789', 4004)); SELECT pg_column_compression(f1) FROM cmpart1; SELECT pg_column_compression(f1) FROM cmpart2; -- VACUUM FULL does not recompress SELECT pg_column_compression(f1) FROM cmdata; VACUUM FULL cmdata; SELECT pg_column_compression(f1) FROM cmdata; -- test expression index DROP TABLE cmdata2; CREATE TABLE cmdata2 (f1 TEXT COMPRESSION pglz, f2 TEXT COMPRESSION lz4); CREATE UNIQUE INDEX idx1 ON cmdata2 ((f1 || f2)); INSERT INTO cmdata2 VALUES((SELECT array_agg(fipshash(g::TEXT))::TEXT FROM generate_series(1, 50) g), VERSION()); -- check data is ok SELECT length(f1) FROM cmdata; SELECT length(f1) FROM cmdata1; SELECT length(f1) FROM cmmove1; SELECT length(f1) FROM cmmove2; SELECT length(f1) FROM cmmove3; CREATE TABLE badcompresstbl (a text COMPRESSION I_Do_Not_Exist_Compression); -- fails CREATE TABLE badcompresstbl (a text); ALTER TABLE badcompresstbl ALTER a SET COMPRESSION I_Do_Not_Exist_Compression; -- fails DROP TABLE badcompresstbl; \set HIDE_TOAST_COMPRESSION true libpg_query-17-6.1.0/test/sql/postgres_regress/constraints.sql000066400000000000000000000452261477334012600245530ustar00rootroot00000000000000-- -- CONSTRAINTS -- Constraints can be specified with: -- - DEFAULT clause -- - CHECK clauses -- - PRIMARY KEY clauses -- - UNIQUE clauses -- - EXCLUDE clauses -- -- directory paths are passed to us in environment variables \getenv abs_srcdir PG_ABS_SRCDIR -- -- DEFAULT syntax -- CREATE TABLE DEFAULT_TBL (i int DEFAULT 100, x text DEFAULT 'vadim', f float8 DEFAULT 123.456); INSERT INTO DEFAULT_TBL VALUES (1, 'thomas', 57.0613); INSERT INTO DEFAULT_TBL VALUES (1, 'bruce'); INSERT INTO DEFAULT_TBL (i, f) VALUES (2, 987.654); INSERT INTO DEFAULT_TBL (x) VALUES ('marc'); INSERT INTO DEFAULT_TBL VALUES (3, null, 1.0); SELECT * FROM DEFAULT_TBL; CREATE SEQUENCE DEFAULT_SEQ; CREATE TABLE DEFAULTEXPR_TBL (i1 int DEFAULT 100 + (200-199) * 2, i2 int DEFAULT nextval('default_seq')); INSERT INTO DEFAULTEXPR_TBL VALUES (-1, -2); INSERT INTO DEFAULTEXPR_TBL (i1) VALUES (-3); INSERT INTO DEFAULTEXPR_TBL (i2) VALUES (-4); INSERT INTO DEFAULTEXPR_TBL (i2) VALUES (NULL); SELECT * FROM DEFAULTEXPR_TBL; -- syntax errors -- test for extraneous comma CREATE TABLE error_tbl (i int DEFAULT (100, )); -- this will fail because gram.y uses b_expr not a_expr for defaults, -- to avoid a shift/reduce conflict that arises from NOT NULL being -- part of the column definition syntax: CREATE TABLE error_tbl (b1 bool DEFAULT 1 IN (1, 2)); -- this should work, however: CREATE TABLE error_tbl (b1 bool DEFAULT (1 IN (1, 2))); DROP TABLE error_tbl; -- -- CHECK syntax -- CREATE TABLE CHECK_TBL (x int, CONSTRAINT CHECK_CON CHECK (x > 3)); INSERT INTO CHECK_TBL VALUES (5); INSERT INTO CHECK_TBL VALUES (4); INSERT INTO CHECK_TBL VALUES (3); INSERT INTO CHECK_TBL VALUES (2); INSERT INTO CHECK_TBL VALUES (6); INSERT INTO CHECK_TBL VALUES (1); SELECT * FROM CHECK_TBL; CREATE SEQUENCE CHECK_SEQ; CREATE TABLE CHECK2_TBL (x int, y text, z int, CONSTRAINT SEQUENCE_CON CHECK (x > 3 and y <> 'check failed' and z < 8)); INSERT INTO CHECK2_TBL VALUES (4, 'check ok', -2); INSERT INTO CHECK2_TBL VALUES (1, 'x check failed', -2); INSERT INTO CHECK2_TBL VALUES (5, 'z check failed', 10); INSERT INTO CHECK2_TBL VALUES (0, 'check failed', -2); INSERT INTO CHECK2_TBL VALUES (6, 'check failed', 11); INSERT INTO CHECK2_TBL VALUES (7, 'check ok', 7); SELECT * from CHECK2_TBL; -- -- Check constraints on INSERT -- CREATE SEQUENCE INSERT_SEQ; CREATE TABLE INSERT_TBL (x INT DEFAULT nextval('insert_seq'), y TEXT DEFAULT '-NULL-', z INT DEFAULT -1 * currval('insert_seq'), CONSTRAINT INSERT_TBL_CON CHECK (x >= 3 AND y <> 'check failed' AND x < 8), CHECK (x + z = 0)); INSERT INTO INSERT_TBL(x,z) VALUES (2, -2); SELECT * FROM INSERT_TBL; SELECT 'one' AS one, nextval('insert_seq'); INSERT INTO INSERT_TBL(y) VALUES ('Y'); INSERT INTO INSERT_TBL(y) VALUES ('Y'); INSERT INTO INSERT_TBL(x,z) VALUES (1, -2); INSERT INTO INSERT_TBL(z,x) VALUES (-7, 7); INSERT INTO INSERT_TBL VALUES (5, 'check failed', -5); INSERT INTO INSERT_TBL VALUES (7, '!check failed', -7); INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-'); SELECT * FROM INSERT_TBL; INSERT INTO INSERT_TBL(y,z) VALUES ('check failed', 4); INSERT INTO INSERT_TBL(x,y) VALUES (5, 'check failed'); INSERT INTO INSERT_TBL(x,y) VALUES (5, '!check failed'); INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-'); SELECT * FROM INSERT_TBL; SELECT 'seven' AS one, nextval('insert_seq'); INSERT INTO INSERT_TBL(y) VALUES ('Y'); SELECT 'eight' AS one, currval('insert_seq'); -- According to SQL, it is OK to insert a record that gives rise to NULL -- constraint-condition results. Postgres used to reject this, but it -- was wrong: INSERT INTO INSERT_TBL VALUES (null, null, null); SELECT * FROM INSERT_TBL; -- -- Check constraints on system columns -- CREATE TABLE SYS_COL_CHECK_TBL (city text, state text, is_capital bool, altitude int, CHECK (NOT (is_capital AND tableoid::regclass::text = 'sys_col_check_tbl'))); INSERT INTO SYS_COL_CHECK_TBL VALUES ('Seattle', 'Washington', false, 100); INSERT INTO SYS_COL_CHECK_TBL VALUES ('Olympia', 'Washington', true, 100); SELECT *, tableoid::regclass::text FROM SYS_COL_CHECK_TBL; DROP TABLE SYS_COL_CHECK_TBL; -- -- Check constraints on system columns other then TableOid should return error -- CREATE TABLE SYS_COL_CHECK_TBL (city text, state text, is_capital bool, altitude int, CHECK (NOT (is_capital AND ctid::text = 'sys_col_check_tbl'))); -- -- Check inheritance of defaults and constraints -- CREATE TABLE INSERT_CHILD (cx INT default 42, cy INT CHECK (cy > x)) INHERITS (INSERT_TBL); INSERT INTO INSERT_CHILD(x,z,cy) VALUES (7,-7,11); INSERT INTO INSERT_CHILD(x,z,cy) VALUES (7,-7,6); INSERT INTO INSERT_CHILD(x,z,cy) VALUES (6,-7,7); INSERT INTO INSERT_CHILD(x,y,z,cy) VALUES (6,'check failed',-6,7); SELECT * FROM INSERT_CHILD; DROP TABLE INSERT_CHILD; -- -- Check NO INHERIT type of constraints and inheritance -- CREATE TABLE ATACC1 (TEST INT CHECK (TEST > 0) NO INHERIT); CREATE TABLE ATACC2 (TEST2 INT) INHERITS (ATACC1); -- 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); DROP TABLE ATACC1 CASCADE; CREATE TABLE ATACC1 (TEST INT, TEST2 INT CHECK (TEST > 0), CHECK (TEST2 > 10) NO INHERIT); CREATE TABLE ATACC2 () INHERITS (ATACC1); -- check constraint is there on child INSERT INTO ATACC2 (TEST) VALUES (-3); -- check constraint is there on parent INSERT INTO ATACC1 (TEST) VALUES (-3); -- check constraint is not there on child INSERT INTO ATACC2 (TEST2) VALUES (3); -- check constraint is there on parent INSERT INTO ATACC1 (TEST2) VALUES (3); DROP TABLE ATACC1 CASCADE; -- -- Check constraints on INSERT INTO -- DELETE FROM INSERT_TBL; ALTER SEQUENCE INSERT_SEQ RESTART WITH 4; CREATE TEMP TABLE tmp (xd INT, yd TEXT, zd INT); INSERT INTO tmp VALUES (null, 'Y', null); INSERT INTO tmp VALUES (5, '!check failed', null); INSERT INTO tmp VALUES (null, 'try again', null); INSERT INTO INSERT_TBL(y) select yd from tmp; SELECT * FROM INSERT_TBL; INSERT INTO INSERT_TBL SELECT * FROM tmp WHERE yd = 'try again'; INSERT INTO INSERT_TBL(y,z) SELECT yd, -7 FROM tmp WHERE yd = 'try again'; INSERT INTO INSERT_TBL(y,z) SELECT yd, -8 FROM tmp WHERE yd = 'try again'; SELECT * FROM INSERT_TBL; DROP TABLE tmp; -- -- Check constraints on UPDATE -- UPDATE INSERT_TBL SET x = NULL WHERE x = 5; UPDATE INSERT_TBL SET x = 6 WHERE x = 6; UPDATE INSERT_TBL SET x = -z, z = -x; UPDATE INSERT_TBL SET x = z, z = x; SELECT * FROM INSERT_TBL; -- DROP TABLE INSERT_TBL; -- -- Check constraints on COPY FROM -- CREATE TABLE COPY_TBL (x INT, y TEXT, z INT, CONSTRAINT COPY_CON CHECK (x > 3 AND y <> 'check failed' AND x < 7 )); \set filename :abs_srcdir '/data/constro.data' COPY COPY_TBL FROM :'filename'; SELECT * FROM COPY_TBL; \set filename :abs_srcdir '/data/constrf.data' COPY COPY_TBL FROM :'filename'; SELECT * FROM COPY_TBL; -- -- Primary keys -- CREATE TABLE PRIMARY_TBL (i int PRIMARY KEY, t text); INSERT INTO PRIMARY_TBL VALUES (1, 'one'); INSERT INTO PRIMARY_TBL VALUES (2, 'two'); INSERT INTO PRIMARY_TBL VALUES (1, 'three'); INSERT INTO PRIMARY_TBL VALUES (4, 'three'); INSERT INTO PRIMARY_TBL VALUES (5, 'one'); INSERT INTO PRIMARY_TBL (t) VALUES ('six'); SELECT * FROM PRIMARY_TBL; DROP TABLE PRIMARY_TBL; CREATE TABLE PRIMARY_TBL (i int, t text, PRIMARY KEY(i,t)); INSERT INTO PRIMARY_TBL VALUES (1, 'one'); INSERT INTO PRIMARY_TBL VALUES (2, 'two'); INSERT INTO PRIMARY_TBL VALUES (1, 'three'); INSERT INTO PRIMARY_TBL VALUES (4, 'three'); INSERT INTO PRIMARY_TBL VALUES (5, 'one'); INSERT INTO PRIMARY_TBL (t) VALUES ('six'); SELECT * FROM PRIMARY_TBL; DROP TABLE PRIMARY_TBL; -- -- Unique keys -- CREATE TABLE UNIQUE_TBL (i int UNIQUE, t text); INSERT INTO UNIQUE_TBL VALUES (1, 'one'); INSERT INTO UNIQUE_TBL VALUES (2, 'two'); INSERT INTO UNIQUE_TBL VALUES (1, 'three'); INSERT INTO UNIQUE_TBL VALUES (4, 'four'); INSERT INTO UNIQUE_TBL VALUES (5, 'one'); INSERT INTO UNIQUE_TBL (t) VALUES ('six'); INSERT INTO UNIQUE_TBL (t) VALUES ('seven'); INSERT INTO UNIQUE_TBL VALUES (5, 'five-upsert-insert') ON CONFLICT (i) DO UPDATE SET t = 'five-upsert-update'; INSERT INTO UNIQUE_TBL VALUES (6, 'six-upsert-insert') ON CONFLICT (i) DO UPDATE SET t = 'six-upsert-update'; -- should fail INSERT INTO UNIQUE_TBL VALUES (1, 'a'), (2, 'b'), (2, 'b') ON CONFLICT (i) DO UPDATE SET t = 'fails'; SELECT * FROM UNIQUE_TBL; DROP TABLE UNIQUE_TBL; CREATE TABLE UNIQUE_TBL (i int UNIQUE NULLS NOT DISTINCT, t text); INSERT INTO UNIQUE_TBL VALUES (1, 'one'); INSERT INTO UNIQUE_TBL VALUES (2, 'two'); INSERT INTO UNIQUE_TBL VALUES (1, 'three'); -- fail INSERT INTO UNIQUE_TBL VALUES (4, 'four'); INSERT INTO UNIQUE_TBL VALUES (5, 'one'); INSERT INTO UNIQUE_TBL (t) VALUES ('six'); INSERT INTO UNIQUE_TBL (t) VALUES ('seven'); -- fail INSERT INTO UNIQUE_TBL (t) VALUES ('eight') ON CONFLICT DO NOTHING; -- no-op SELECT * FROM UNIQUE_TBL; DROP TABLE UNIQUE_TBL; CREATE TABLE UNIQUE_TBL (i int, t text, UNIQUE(i,t)); INSERT INTO UNIQUE_TBL VALUES (1, 'one'); INSERT INTO UNIQUE_TBL VALUES (2, 'two'); INSERT INTO UNIQUE_TBL VALUES (1, 'three'); INSERT INTO UNIQUE_TBL VALUES (1, 'one'); INSERT INTO UNIQUE_TBL VALUES (5, 'one'); INSERT INTO UNIQUE_TBL (t) VALUES ('six'); SELECT * FROM UNIQUE_TBL; DROP TABLE UNIQUE_TBL; -- -- Deferrable unique constraints -- CREATE TABLE unique_tbl (i int UNIQUE DEFERRABLE, t text); INSERT INTO unique_tbl VALUES (0, 'one'); INSERT INTO unique_tbl VALUES (1, 'two'); INSERT INTO unique_tbl VALUES (2, 'tree'); INSERT INTO unique_tbl VALUES (3, 'four'); INSERT INTO unique_tbl VALUES (4, 'five'); BEGIN; -- default is immediate so this should fail right away UPDATE unique_tbl SET i = 1 WHERE i = 0; ROLLBACK; -- check is done at end of statement, so this should succeed UPDATE unique_tbl SET i = i+1; SELECT * FROM unique_tbl; -- explicitly defer the constraint BEGIN; SET CONSTRAINTS unique_tbl_i_key DEFERRED; INSERT INTO unique_tbl VALUES (3, 'three'); DELETE FROM unique_tbl WHERE t = 'tree'; -- makes constraint valid again COMMIT; -- should succeed SELECT * FROM unique_tbl; -- try adding an initially deferred constraint ALTER TABLE unique_tbl DROP CONSTRAINT unique_tbl_i_key; ALTER TABLE unique_tbl ADD CONSTRAINT unique_tbl_i_key UNIQUE (i) DEFERRABLE INITIALLY DEFERRED; BEGIN; INSERT INTO unique_tbl VALUES (1, 'five'); INSERT INTO unique_tbl VALUES (5, 'one'); UPDATE unique_tbl SET i = 4 WHERE i = 2; UPDATE unique_tbl SET i = 2 WHERE i = 4 AND t = 'four'; DELETE FROM unique_tbl WHERE i = 1 AND t = 'one'; DELETE FROM unique_tbl WHERE i = 5 AND t = 'five'; COMMIT; SELECT * FROM unique_tbl; -- should fail at commit-time BEGIN; INSERT INTO unique_tbl VALUES (3, 'Three'); -- should succeed for now COMMIT; -- should fail -- make constraint check immediate BEGIN; SET CONSTRAINTS ALL IMMEDIATE; INSERT INTO unique_tbl VALUES (3, 'Three'); -- should fail COMMIT; -- forced check when SET CONSTRAINTS is called BEGIN; SET CONSTRAINTS ALL DEFERRED; INSERT INTO unique_tbl VALUES (3, 'Three'); -- should succeed for now SET CONSTRAINTS ALL IMMEDIATE; -- should fail COMMIT; -- test deferrable UNIQUE with a partitioned table CREATE TABLE parted_uniq_tbl (i int UNIQUE DEFERRABLE) partition by range (i); CREATE TABLE parted_uniq_tbl_1 PARTITION OF parted_uniq_tbl FOR VALUES FROM (0) TO (10); CREATE TABLE parted_uniq_tbl_2 PARTITION OF parted_uniq_tbl FOR VALUES FROM (20) TO (30); SELECT conname, conrelid::regclass FROM pg_constraint WHERE conname LIKE 'parted_uniq%' ORDER BY conname; BEGIN; INSERT INTO parted_uniq_tbl VALUES (1); SAVEPOINT f; INSERT INTO parted_uniq_tbl VALUES (1); -- unique violation ROLLBACK TO f; SET CONSTRAINTS parted_uniq_tbl_i_key DEFERRED; INSERT INTO parted_uniq_tbl VALUES (1); -- OK now, fail at commit COMMIT; DROP TABLE parted_uniq_tbl; -- test naming a constraint in a partition when a conflict exists CREATE TABLE parted_fk_naming ( id bigint NOT NULL default 1, id_abc bigint, CONSTRAINT dummy_constr FOREIGN KEY (id_abc) REFERENCES parted_fk_naming (id), PRIMARY KEY (id) ) PARTITION BY LIST (id); CREATE TABLE parted_fk_naming_1 ( id bigint NOT NULL default 1, id_abc bigint, PRIMARY KEY (id), CONSTRAINT dummy_constr CHECK (true) ); ALTER TABLE parted_fk_naming ATTACH PARTITION parted_fk_naming_1 FOR VALUES IN ('1'); SELECT conname FROM pg_constraint WHERE conrelid = 'parted_fk_naming_1'::regclass AND contype = 'f'; DROP TABLE parted_fk_naming; -- -- Test various ways to create primary keys on partitions, linked to unique -- indexes (without constraints) on the partitioned table. Ideally these should -- fail, but we don't dare change released behavior, so instead cope with it at -- DETACH time. CREATE TEMP TABLE t (a integer, b integer) PARTITION BY HASH (a, b); CREATE TEMP TABLE tp (a integer, b integer, PRIMARY KEY (a, b), UNIQUE (b, a)); ALTER TABLE t ATTACH PARTITION tp FOR VALUES WITH (MODULUS 1, REMAINDER 0); CREATE UNIQUE INDEX t_a_idx ON t (a, b); CREATE UNIQUE INDEX t_b_idx ON t (b, a); ALTER INDEX t_a_idx ATTACH PARTITION tp_pkey; ALTER INDEX t_b_idx ATTACH PARTITION tp_b_a_key; SELECT conname, conparentid, conislocal, coninhcount FROM pg_constraint WHERE conname IN ('tp_pkey', 'tp_b_a_key') ORDER BY conname DESC; ALTER TABLE t DETACH PARTITION tp; DROP TABLE t, tp; CREATE TEMP TABLE t (a integer) PARTITION BY LIST (a); CREATE TEMP TABLE tp (a integer PRIMARY KEY); CREATE UNIQUE INDEX t_a_idx ON t (a); ALTER TABLE t ATTACH PARTITION tp FOR VALUES IN (1); ALTER TABLE t DETACH PARTITION tp; DROP TABLE t, tp; CREATE TEMP TABLE t (a integer) PARTITION BY LIST (a); CREATE TEMP TABLE tp (a integer PRIMARY KEY); CREATE UNIQUE INDEX t_a_idx ON ONLY t (a); ALTER TABLE t ATTACH PARTITION tp FOR VALUES IN (1); ALTER TABLE t DETACH PARTITION tp; DROP TABLE t, tp; CREATE TABLE regress_constr_partitioned (a integer) PARTITION BY LIST (a); CREATE TABLE regress_constr_partition1 PARTITION OF regress_constr_partitioned FOR VALUES IN (1); ALTER TABLE regress_constr_partition1 ADD PRIMARY KEY (a); CREATE UNIQUE INDEX ON regress_constr_partitioned (a); BEGIN; ALTER TABLE regress_constr_partitioned DETACH PARTITION regress_constr_partition1; ROLLBACK; -- Leave this one in funny state for pg_upgrade testing -- test a HOT update that invalidates the conflicting tuple. -- the trigger should still fire and catch the violation BEGIN; INSERT INTO unique_tbl VALUES (3, 'Three'); -- should succeed for now UPDATE unique_tbl SET t = 'THREE' WHERE i = 3 AND t = 'Three'; COMMIT; -- should fail SELECT * FROM unique_tbl; -- test a HOT update that modifies the newly inserted tuple, -- but should succeed because we then remove the other conflicting tuple. BEGIN; INSERT INTO unique_tbl VALUES(3, 'tree'); -- should succeed for now UPDATE unique_tbl SET t = 'threex' WHERE t = 'tree'; DELETE FROM unique_tbl WHERE t = 'three'; SELECT * FROM unique_tbl; COMMIT; SELECT * FROM unique_tbl; DROP TABLE unique_tbl; -- -- EXCLUDE constraints -- CREATE TABLE circles ( c1 CIRCLE, c2 TEXT, EXCLUDE USING gist (c1 WITH &&, (c2::circle) WITH &&) WHERE (circle_center(c1) <> '(0,0)') ); -- these should succeed because they don't match the index predicate INSERT INTO circles VALUES('<(0,0), 5>', '<(0,0), 5>'); INSERT INTO circles VALUES('<(0,0), 5>', '<(0,0), 4>'); -- succeed INSERT INTO circles VALUES('<(10,10), 10>', '<(0,0), 5>'); -- fail, overlaps INSERT INTO circles VALUES('<(20,20), 10>', '<(0,0), 4>'); -- succeed, because violation is ignored INSERT INTO circles VALUES('<(20,20), 10>', '<(0,0), 4>') ON CONFLICT ON CONSTRAINT circles_c1_c2_excl DO NOTHING; -- fail, because DO UPDATE variant requires unique index INSERT INTO circles VALUES('<(20,20), 10>', '<(0,0), 4>') ON CONFLICT ON CONSTRAINT circles_c1_c2_excl DO UPDATE SET c2 = EXCLUDED.c2; -- succeed because c1 doesn't overlap INSERT INTO circles VALUES('<(20,20), 1>', '<(0,0), 5>'); -- succeed because c2 doesn't overlap INSERT INTO circles VALUES('<(20,20), 10>', '<(10,10), 5>'); -- should fail on existing data without the WHERE clause ALTER TABLE circles ADD EXCLUDE USING gist (c1 WITH &&, (c2::circle) WITH &&); -- try reindexing an existing constraint REINDEX INDEX circles_c1_c2_excl; DROP TABLE circles; -- Check deferred exclusion constraint CREATE TABLE deferred_excl ( f1 int, f2 int, CONSTRAINT deferred_excl_con EXCLUDE (f1 WITH =) INITIALLY DEFERRED ); INSERT INTO deferred_excl VALUES(1); INSERT INTO deferred_excl VALUES(2); INSERT INTO deferred_excl VALUES(1); -- fail INSERT INTO deferred_excl VALUES(1) ON CONFLICT ON CONSTRAINT deferred_excl_con DO NOTHING; -- fail BEGIN; INSERT INTO deferred_excl VALUES(2); -- no fail here COMMIT; -- should fail here BEGIN; INSERT INTO deferred_excl VALUES(3); INSERT INTO deferred_excl VALUES(3); -- no fail here COMMIT; -- should fail here -- bug #13148: deferred constraint versus HOT update BEGIN; INSERT INTO deferred_excl VALUES(2, 1); -- no fail here DELETE FROM deferred_excl WHERE f1 = 2 AND f2 IS NULL; -- remove old row UPDATE deferred_excl SET f2 = 2 WHERE f1 = 2; COMMIT; -- should not fail SELECT * FROM deferred_excl; ALTER TABLE deferred_excl DROP CONSTRAINT deferred_excl_con; -- This should fail, but worth testing because of HOT updates UPDATE deferred_excl SET f1 = 3; ALTER TABLE deferred_excl ADD EXCLUDE (f1 WITH =); DROP TABLE deferred_excl; -- Comments -- Setup a low-level role to enforce non-superuser checks. CREATE ROLE regress_constraint_comments; SET SESSION AUTHORIZATION regress_constraint_comments; CREATE TABLE constraint_comments_tbl (a int CONSTRAINT the_constraint CHECK (a > 0)); CREATE DOMAIN constraint_comments_dom AS int CONSTRAINT the_constraint CHECK (value > 0); COMMENT ON CONSTRAINT the_constraint ON constraint_comments_tbl IS 'yes, the comment'; COMMENT ON CONSTRAINT the_constraint ON DOMAIN constraint_comments_dom IS 'yes, another comment'; -- no such constraint COMMENT ON CONSTRAINT no_constraint ON constraint_comments_tbl IS 'yes, the comment'; COMMENT ON CONSTRAINT no_constraint ON DOMAIN constraint_comments_dom IS 'yes, another comment'; -- no such table/domain COMMENT ON CONSTRAINT the_constraint ON no_comments_tbl IS 'bad comment'; COMMENT ON CONSTRAINT the_constraint ON DOMAIN no_comments_dom IS 'another bad comment'; COMMENT ON CONSTRAINT the_constraint ON constraint_comments_tbl IS NULL; COMMENT ON CONSTRAINT the_constraint ON DOMAIN constraint_comments_dom IS NULL; -- unauthorized user RESET SESSION AUTHORIZATION; CREATE ROLE regress_constraint_comments_noaccess; SET SESSION AUTHORIZATION regress_constraint_comments_noaccess; COMMENT ON CONSTRAINT the_constraint ON constraint_comments_tbl IS 'no, the comment'; COMMENT ON CONSTRAINT the_constraint ON DOMAIN constraint_comments_dom IS 'no, another comment'; RESET SESSION AUTHORIZATION; DROP TABLE constraint_comments_tbl; DROP DOMAIN constraint_comments_dom; DROP ROLE regress_constraint_comments; DROP ROLE regress_constraint_comments_noaccess; libpg_query-17-6.1.0/test/sql/postgres_regress/conversion.sql000066400000000000000000000317351477334012600243710ustar00rootroot00000000000000-- -- create user defined conversion -- -- directory paths and dlsuffix are passed to us in environment variables \getenv libdir PG_LIBDIR \getenv dlsuffix PG_DLSUFFIX \set regresslib :libdir '/regress' :dlsuffix CREATE FUNCTION test_enc_setup() RETURNS void AS :'regresslib', 'test_enc_setup' LANGUAGE C STRICT; SELECT FROM test_enc_setup(); CREATE FUNCTION test_enc_conversion(bytea, name, name, bool, validlen OUT int, result OUT bytea) AS :'regresslib', 'test_enc_conversion' LANGUAGE C STRICT; 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 superuser -- RESET SESSION AUTHORIZATION; DROP USER regress_conversion_user; -- -- Test built-in conversion functions. -- -- Helper function to test a conversion. Uses the test_enc_conversion function -- that was created in the create_function_0 test. create or replace function test_conv( input IN bytea, src_encoding IN text, dst_encoding IN text, result OUT bytea, errorat OUT bytea, error OUT text) language plpgsql as $$ declare validlen int; begin -- First try to perform the conversion with noError = false. If that errors out, -- capture the error message, and try again with noError = true. The second call -- should succeed and return the position of the error, return that too. begin select * into validlen, result from test_enc_conversion(input, src_encoding, dst_encoding, false); errorat = NULL; error := NULL; exception when others then error := sqlerrm; select * into validlen, result from test_enc_conversion(input, src_encoding, dst_encoding, true); errorat = substr(input, validlen + 1); end; return; end; $$; -- -- UTF-8 -- -- The description column must be unique. CREATE TABLE utf8_verification_inputs (inbytes bytea, description text PRIMARY KEY); insert into utf8_verification_inputs values ('\x66006f', 'NUL byte'), ('\xaf', 'bare continuation'), ('\xc5', 'missing second byte in 2-byte char'), ('\xc080', 'smallest 2-byte overlong'), ('\xc1bf', 'largest 2-byte overlong'), ('\xc280', 'next 2-byte after overlongs'), ('\xdfbf', 'largest 2-byte'), ('\xe9af', 'missing third byte in 3-byte char'), ('\xe08080', 'smallest 3-byte overlong'), ('\xe09fbf', 'largest 3-byte overlong'), ('\xe0a080', 'next 3-byte after overlong'), ('\xed9fbf', 'last before surrogates'), ('\xeda080', 'smallest surrogate'), ('\xedbfbf', 'largest surrogate'), ('\xee8080', 'next after surrogates'), ('\xefbfbf', 'largest 3-byte'), ('\xf1afbf', 'missing fourth byte in 4-byte char'), ('\xf0808080', 'smallest 4-byte overlong'), ('\xf08fbfbf', 'largest 4-byte overlong'), ('\xf0908080', 'next 4-byte after overlong'), ('\xf48fbfbf', 'largest 4-byte'), ('\xf4908080', 'smallest too large'), ('\xfa9a9a8a8a', '5-byte'); -- Test UTF-8 verification slow path select description, (test_conv(inbytes, 'utf8', 'utf8')).* from utf8_verification_inputs; -- Test UTF-8 verification with ASCII padding appended to provide -- coverage for algorithms that work on multiple bytes at a time. -- The error message for a sequence starting with a 4-byte lead -- will contain all 4 bytes if they are present, so various -- expressions below add 3 ASCII bytes to the end to ensure -- consistent error messages. -- The number 64 below needs to be at least the value of STRIDE_LENGTH in wchar.c. -- Test multibyte verification in fast path with test_bytes as ( select inbytes, description, (test_conv(inbytes || repeat('.', 3)::bytea, 'utf8', 'utf8')).error from utf8_verification_inputs ), test_padded as ( select description, (test_conv(inbytes || repeat('.', 64)::bytea, 'utf8', 'utf8')).error from test_bytes ) select description, b.error as orig_error, p.error as error_after_padding from test_padded p join test_bytes b using (description) where p.error is distinct from b.error order by description; -- Test ASCII verification in fast path where incomplete -- UTF-8 sequences fall at the end of the preceding chunk. with test_bytes as ( select inbytes, description, (test_conv(inbytes || repeat('.', 3)::bytea, 'utf8', 'utf8')).error from utf8_verification_inputs ), test_padded as ( select description, (test_conv(repeat('.', 64 - length(inbytes))::bytea || inbytes || repeat('.', 64)::bytea, 'utf8', 'utf8')).error from test_bytes ) select description, b.error as orig_error, p.error as error_after_padding from test_padded p join test_bytes b using (description) where p.error is distinct from b.error order by description; -- Test cases where UTF-8 sequences within short text -- come after the fast path returns. with test_bytes as ( select inbytes, description, (test_conv(inbytes || repeat('.', 3)::bytea, 'utf8', 'utf8')).error from utf8_verification_inputs ), test_padded as ( select description, (test_conv(repeat('.', 64)::bytea || inbytes || repeat('.', 3)::bytea, 'utf8', 'utf8')).error from test_bytes ) select description, b.error as orig_error, p.error as error_after_padding from test_padded p join test_bytes b using (description) where p.error is distinct from b.error order by description; -- Test cases where incomplete UTF-8 sequences fall at the -- end of the part checked by the fast path. with test_bytes as ( select inbytes, description, (test_conv(inbytes || repeat('.', 3)::bytea, 'utf8', 'utf8')).error from utf8_verification_inputs ), test_padded as ( select description, (test_conv(repeat('.', 64 - length(inbytes))::bytea || inbytes || repeat('.', 3)::bytea, 'utf8', 'utf8')).error from test_bytes ) select description, b.error as orig_error, p.error as error_after_padding from test_padded p join test_bytes b using (description) where p.error is distinct from b.error order by description; CREATE TABLE utf8_inputs (inbytes bytea, description text); insert into utf8_inputs values ('\x666f6f', 'valid, pure ASCII'), ('\xc3a4c3b6', 'valid, extra latin chars'), ('\xd184d0bed0be', 'valid, cyrillic'), ('\x666f6fe8b1a1', 'valid, kanji/Chinese'), ('\xe382abe3829a', 'valid, two chars that combine to one in EUC_JIS_2004'), ('\xe382ab', 'only first half of combined char in EUC_JIS_2004'), ('\xe382abe382', 'incomplete combination when converted EUC_JIS_2004'), ('\xecbd94eb81bceba6ac', 'valid, Hangul, Korean'), ('\x666f6fefa8aa', 'valid, needs mapping function to convert to GB18030'), ('\x66e8b1ff6f6f', 'invalid byte sequence'), ('\x66006f', 'invalid, NUL byte'), ('\x666f6fe8b100', 'invalid, NUL byte'), ('\x666f6fe8b1', 'incomplete character at end'); -- Test UTF-8 verification select description, (test_conv(inbytes, 'utf8', 'utf8')).* from utf8_inputs; -- Test conversions from UTF-8 select description, inbytes, (test_conv(inbytes, 'utf8', 'euc_jis_2004')).* from utf8_inputs; select description, inbytes, (test_conv(inbytes, 'utf8', 'latin1')).* from utf8_inputs; select description, inbytes, (test_conv(inbytes, 'utf8', 'latin2')).* from utf8_inputs; select description, inbytes, (test_conv(inbytes, 'utf8', 'latin5')).* from utf8_inputs; select description, inbytes, (test_conv(inbytes, 'utf8', 'koi8r')).* from utf8_inputs; select description, inbytes, (test_conv(inbytes, 'utf8', 'gb18030')).* from utf8_inputs; -- -- EUC_JIS_2004 -- CREATE TABLE euc_jis_2004_inputs (inbytes bytea, description text); insert into euc_jis_2004_inputs values ('\x666f6f', 'valid, pure ASCII'), ('\x666f6fbedd', 'valid'), ('\xa5f7', 'valid, translates to two UTF-8 chars '), ('\xbeddbe', 'incomplete char '), ('\x666f6f00bedd', 'invalid, NUL byte'), ('\x666f6fbe00dd', 'invalid, NUL byte'), ('\x666f6fbedd00', 'invalid, NUL byte'), ('\xbe04', 'invalid byte sequence'); -- Test EUC_JIS_2004 verification select description, inbytes, (test_conv(inbytes, 'euc_jis_2004', 'euc_jis_2004')).* from euc_jis_2004_inputs; -- Test conversions from EUC_JIS_2004 select description, inbytes, (test_conv(inbytes, 'euc_jis_2004', 'utf8')).* from euc_jis_2004_inputs; -- -- SHIFT-JIS-2004 -- CREATE TABLE shiftjis2004_inputs (inbytes bytea, description text); insert into shiftjis2004_inputs values ('\x666f6f', 'valid, pure ASCII'), ('\x666f6f8fdb', 'valid'), ('\x666f6f81c0', 'valid, no translation to UTF-8'), ('\x666f6f82f5', 'valid, translates to two UTF-8 chars '), ('\x666f6f8fdb8f', 'incomplete char '), ('\x666f6f820a', 'incomplete char, followed by newline '), ('\x666f6f008fdb', 'invalid, NUL byte'), ('\x666f6f8f00db', 'invalid, NUL byte'), ('\x666f6f8fdb00', 'invalid, NUL byte'); -- Test SHIFT-JIS-2004 verification select description, inbytes, (test_conv(inbytes, 'shiftjis2004', 'shiftjis2004')).* from shiftjis2004_inputs; -- Test conversions from SHIFT-JIS-2004 select description, inbytes, (test_conv(inbytes, 'shiftjis2004', 'utf8')).* from shiftjis2004_inputs; select description, inbytes, (test_conv(inbytes, 'shiftjis2004', 'euc_jis_2004')).* from shiftjis2004_inputs; -- -- GB18030 -- CREATE TABLE gb18030_inputs (inbytes bytea, description text); insert into gb18030_inputs values ('\x666f6f', 'valid, pure ASCII'), ('\x666f6fcff3', 'valid'), ('\x666f6f8431a530', 'valid, no translation to UTF-8'), ('\x666f6f84309c38', 'valid, translates to UTF-8 by mapping function'), ('\x666f6f84309c', 'incomplete char '), ('\x666f6f84309c0a', 'incomplete char, followed by newline '), ('\x666f6f84309c3800', 'invalid, NUL byte'), ('\x666f6f84309c0038', 'invalid, NUL byte'); -- Test GB18030 verification select description, inbytes, (test_conv(inbytes, 'gb18030', 'gb18030')).* from gb18030_inputs; -- Test conversions from GB18030 select description, inbytes, (test_conv(inbytes, 'gb18030', 'utf8')).* from gb18030_inputs; -- -- ISO-8859-5 -- CREATE TABLE iso8859_5_inputs (inbytes bytea, description text); insert into iso8859_5_inputs values ('\x666f6f', 'valid, pure ASCII'), ('\xe4dede', 'valid'), ('\x00', 'invalid, NUL byte'), ('\xe400dede', 'invalid, NUL byte'), ('\xe4dede00', 'invalid, NUL byte'); -- Test ISO-8859-5 verification select description, inbytes, (test_conv(inbytes, 'iso8859-5', 'iso8859-5')).* from iso8859_5_inputs; -- Test conversions from ISO-8859-5 select description, inbytes, (test_conv(inbytes, 'iso8859-5', 'utf8')).* from iso8859_5_inputs; select description, inbytes, (test_conv(inbytes, 'iso8859-5', 'koi8r')).* from iso8859_5_inputs; select description, inbytes, (test_conv(inbytes, 'iso8859_5', 'mule_internal')).* from iso8859_5_inputs; -- -- Big5 -- CREATE TABLE big5_inputs (inbytes bytea, description text); insert into big5_inputs values ('\x666f6f', 'valid, pure ASCII'), ('\x666f6fb648', 'valid'), ('\x666f6fa27f', 'valid, no translation to UTF-8'), ('\x666f6fb60048', 'invalid, NUL byte'), ('\x666f6fb64800', 'invalid, NUL byte'); -- Test Big5 verification select description, inbytes, (test_conv(inbytes, 'big5', 'big5')).* from big5_inputs; -- Test conversions from Big5 select description, inbytes, (test_conv(inbytes, 'big5', 'utf8')).* from big5_inputs; select description, inbytes, (test_conv(inbytes, 'big5', 'mule_internal')).* from big5_inputs; -- -- MULE_INTERNAL -- CREATE TABLE mic_inputs (inbytes bytea, description text); insert into mic_inputs values ('\x666f6f', 'valid, pure ASCII'), ('\x8bc68bcf8bcf', 'valid (in KOI8R)'), ('\x8bc68bcf8b', 'invalid,incomplete char'), ('\x92bedd', 'valid (in SHIFT_JIS)'), ('\x92be', 'invalid, incomplete char)'), ('\x666f6f95a3c1', 'valid (in Big5)'), ('\x666f6f95a3', 'invalid, incomplete char'), ('\x9200bedd', 'invalid, NUL byte'), ('\x92bedd00', 'invalid, NUL byte'), ('\x8b00c68bcf8bcf', 'invalid, NUL byte'); -- Test MULE_INTERNAL verification select description, inbytes, (test_conv(inbytes, 'mule_internal', 'mule_internal')).* from mic_inputs; -- Test conversions from MULE_INTERNAL select description, inbytes, (test_conv(inbytes, 'mule_internal', 'koi8r')).* from mic_inputs; select description, inbytes, (test_conv(inbytes, 'mule_internal', 'iso8859-5')).* from mic_inputs; select description, inbytes, (test_conv(inbytes, 'mule_internal', 'sjis')).* from mic_inputs; select description, inbytes, (test_conv(inbytes, 'mule_internal', 'big5')).* from mic_inputs; select description, inbytes, (test_conv(inbytes, 'mule_internal', 'euc_jp')).* from mic_inputs; libpg_query-17-6.1.0/test/sql/postgres_regress/copy.sql000066400000000000000000000214531477334012600231520ustar00rootroot00000000000000-- -- COPY -- -- directory paths are passed to us in environment variables \getenv abs_srcdir PG_ABS_SRCDIR \getenv abs_builddir PG_ABS_BUILDDIR --- test copying in CSV mode with various styles --- of embedded line ending characters create temp table copytest ( style text, test text, filler int); insert into copytest values('DOS',E'abc\r\ndef',1); insert into copytest values('Unix',E'abc\ndef',2); insert into copytest values('Mac',E'abc\rdef',3); insert into copytest values(E'esc\\ape',E'a\\r\\\r\\\n\\nb',4); \set filename :abs_builddir '/results/copytest.csv' copy copytest to :'filename' csv; create temp table copytest2 (like copytest); copy copytest2 from :'filename' csv; select * from copytest except select * from copytest2; truncate copytest2; --- same test but with an escape char different from quote char copy copytest to :'filename' csv quote '''' escape E'\\'; copy copytest2 from :'filename' csv quote '''' escape E'\\'; select * from copytest except select * from copytest2; -- test header line feature create temp table copytest3 ( c1 int, "col with , comma" text, "col with "" quote" int); copy copytest3 from stdin csv header; this is just a line full of junk that would error out if parsed 1,a,1 2,b,2 \. copy copytest3 to stdout csv header; create temp table copytest4 ( c1 int, "colname with tab: " text); copy copytest4 from stdin (header); this is just a line full of junk that would error out if parsed 1 a 2 b \. copy copytest4 to stdout (header); -- test copy from with a partitioned table create table parted_copytest ( a int, b int, c text ) partition by list (b); create table parted_copytest_a1 (c text, b int, a int); create table parted_copytest_a2 (a int, c text, b int); alter table parted_copytest attach partition parted_copytest_a1 for values in(1); alter table parted_copytest attach partition parted_copytest_a2 for values in(2); -- We must insert enough rows to trigger multi-inserts. These are only -- enabled adaptively when there are few enough partition changes. insert into parted_copytest select x,1,'One' from generate_series(1,1000) x; insert into parted_copytest select x,2,'Two' from generate_series(1001,1010) x; insert into parted_copytest select x,1,'One' from generate_series(1011,1020) x; \set filename :abs_builddir '/results/parted_copytest.csv' copy (select * from parted_copytest order by a) to :'filename'; truncate parted_copytest; copy parted_copytest from :'filename'; -- Ensure COPY FREEZE errors for partitioned tables. begin; truncate parted_copytest; copy parted_copytest from :'filename' (freeze); rollback; select tableoid::regclass,count(*),sum(a) from parted_copytest group by tableoid order by tableoid::regclass::name; truncate parted_copytest; -- create before insert row trigger on parted_copytest_a2 create function part_ins_func() returns trigger language plpgsql as $$ begin return new; end; $$; create trigger part_ins_trig before insert on parted_copytest_a2 for each row execute procedure part_ins_func(); copy parted_copytest from :'filename'; select tableoid::regclass,count(*),sum(a) from parted_copytest group by tableoid order by tableoid::regclass::name; truncate table parted_copytest; create index on parted_copytest (b); drop trigger part_ins_trig on parted_copytest_a2; copy parted_copytest from stdin; 1 1 str1 2 2 str2 \. -- Ensure index entries were properly added during the copy. select * from parted_copytest where b = 1; select * from parted_copytest where b = 2; drop table parted_copytest; -- -- Progress reporting for COPY -- create table tab_progress_reporting ( name text, age int4, location point, salary int4, manager name ); -- Add a trigger to catch and print the contents of the catalog view -- pg_stat_progress_copy during data insertion. This allows to test -- the validation of some progress reports for COPY FROM where the trigger -- would fire. create function notice_after_tab_progress_reporting() returns trigger AS $$ declare report record; begin -- The fields ignored here are the ones that may not remain -- consistent across multiple runs. The sizes reported may differ -- across platforms, so just check if these are strictly positive. with progress_data as ( select relid::regclass::text as relname, command, type, bytes_processed > 0 as has_bytes_processed, bytes_total > 0 as has_bytes_total, tuples_processed, tuples_excluded from pg_stat_progress_copy where pid = pg_backend_pid()) select into report (to_jsonb(r)) as value from progress_data r; raise info 'progress: %', report.value::text; return new; end; $$ language plpgsql; create trigger check_after_tab_progress_reporting after insert on tab_progress_reporting for each statement execute function notice_after_tab_progress_reporting(); -- Generate COPY FROM report with PIPE. copy tab_progress_reporting from stdin; sharon 25 (15,12) 1000 sam sam 30 (10,5) 2000 bill bill 20 (11,10) 1000 sharon \. -- Generate COPY FROM report with FILE, with some excluded tuples. truncate tab_progress_reporting; \set filename :abs_srcdir '/data/emp.data' copy tab_progress_reporting from :'filename' where (salary < 2000); drop trigger check_after_tab_progress_reporting on tab_progress_reporting; drop function notice_after_tab_progress_reporting(); drop table tab_progress_reporting; -- Test header matching feature create table header_copytest ( a int, b int, c text ); -- Make sure it works with dropped columns alter table header_copytest drop column c; alter table header_copytest add column c text; copy header_copytest to stdout with (header match); copy header_copytest from stdin with (header wrong_choice); -- works copy header_copytest from stdin with (header match); a b c 1 2 foo \. copy header_copytest (c, a, b) from stdin with (header match); c a b bar 3 4 \. copy header_copytest from stdin with (header match, format csv); a,b,c 5,6,baz \. -- errors copy header_copytest (c, b, a) from stdin with (header match); a b c 1 2 foo \. copy header_copytest from stdin with (header match); a b \N 1 2 foo \. copy header_copytest from stdin with (header match); a b 1 2 \. copy header_copytest from stdin with (header match); a b c d 1 2 foo bar \. copy header_copytest from stdin with (header match); a b d 1 2 foo \. SELECT * FROM header_copytest ORDER BY a; -- Drop an extra column, in the middle of the existing set. alter table header_copytest drop column b; -- works copy header_copytest (c, a) from stdin with (header match); c a foo 7 \. copy header_copytest (a, c) from stdin with (header match); a c 8 foo \. -- errors copy header_copytest from stdin with (header match); a ........pg.dropped.2........ c 1 2 foo \. copy header_copytest (a, c) from stdin with (header match); a c b 1 foo 2 \. SELECT * FROM header_copytest ORDER BY a; drop table header_copytest; -- test COPY with overlong column defaults create temp table oversized_column_default ( col1 varchar(5) DEFAULT 'more than 5 chars', col2 varchar(5)); -- normal COPY should work copy oversized_column_default from stdin; \. -- error if the column is excluded copy oversized_column_default (col2) from stdin; \. -- error if the DEFAULT option is given copy oversized_column_default from stdin (default ''); \. drop table oversized_column_default; -- -- Create partitioned table that does not allow bulk insertions, to test bugs -- related to the reuse of BulkInsertState across partitions (only done when -- not using bulk insert). Switching between partitions often makes it more -- likely to encounter these bugs, so we just switch on roughly every insert -- by having an even/odd number partition and inserting evenly distributed -- data. -- CREATE TABLE parted_si ( id int not null, data text not null, -- prevent use of bulk insert by having a volatile function rand float8 not null default random() ) PARTITION BY LIST((id % 2)); CREATE TABLE parted_si_p_even PARTITION OF parted_si FOR VALUES IN (0); CREATE TABLE parted_si_p_odd PARTITION OF parted_si FOR VALUES IN (1); -- Test that bulk relation extension handles reusing a single BulkInsertState -- across partitions. Without the fix applied, this reliably reproduces -- #18130 unless shared_buffers is extremely small (preventing any use of bulk -- relation extension). See -- https://postgr.es/m/18130-7a86a7356a75209d%40postgresql.org -- https://postgr.es/m/257696.1695670946%40sss.pgh.pa.us \set filename :abs_srcdir '/data/desc.data' COPY parted_si(id, data) FROM :'filename'; -- An earlier bug (see commit b1ecb9b3fcf) could end up using a buffer from -- the wrong partition. This test is *not* guaranteed to trigger that bug, but -- does so when shared_buffers is small enough. To test if we encountered the -- bug, check that the partition condition isn't violated. SELECT tableoid::regclass, id % 2 = 0 is_even, count(*) from parted_si GROUP BY 1, 2 ORDER BY 1; DROP TABLE parted_si; libpg_query-17-6.1.0/test/sql/postgres_regress/copy2.sql000066400000000000000000000370531477334012600232370ustar00rootroot00000000000000CREATE 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; -- redundant options COPY x from stdin (format CSV, FORMAT CSV); COPY x from stdin (freeze off, freeze on); COPY x from stdin (delimiter ',', delimiter ','); COPY x from stdin (null ' ', null ' '); COPY x from stdin (header off, header on); COPY x from stdin (quote ':', quote ':'); COPY x from stdin (escape ':', escape ':'); COPY x from stdin (force_quote (a), force_quote *); COPY x from stdin (force_not_null (a), force_not_null (b)); COPY x from stdin (force_null (a), force_null (b)); COPY x from stdin (convert_selectively (a), convert_selectively (b)); COPY x from stdin (encoding 'sql_ascii', encoding 'sql_ascii'); COPY x from stdin (on_error ignore, on_error ignore); COPY x from stdin (log_verbosity default, log_verbosity verbose); -- incorrect options COPY x from stdin (format BINARY, delimiter ','); COPY x from stdin (format BINARY, null 'x'); COPY x from stdin (format BINARY, on_error ignore); COPY x from stdin (on_error unsupported); COPY x from stdin (format TEXT, force_quote(a)); COPY x from stdin (format TEXT, force_quote *); COPY x from stdin (format CSV, force_quote(a)); COPY x from stdin (format CSV, force_quote *); COPY x from stdin (format TEXT, force_not_null(a)); COPY x from stdin (format TEXT, force_not_null *); COPY x to stdout (format CSV, force_not_null(a)); COPY x to stdout (format CSV, force_not_null *); COPY x from stdin (format TEXT, force_null(a)); COPY x from stdin (format TEXT, force_null *); COPY x to stdout (format CSV, force_null(a)); COPY x to stdout (format CSV, force_null *); COPY x to stdout (format BINARY, on_error unsupported); COPY x from stdin (log_verbosity unsupported); -- 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; -- 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 *, FORCE_NULL *); 4,,"notempty" \. COMMIT; SELECT b, c FROM forcetest WHERE a = 4; -- should succeed with effect ("b" remains an empty string) BEGIN; COPY forcetest (a, b, c) FROM STDIN WITH (FORMAT csv, FORCE_NOT_NULL *); 5,,"notempty" \. COMMIT; SELECT b, c FROM forcetest WHERE a = 5; -- should succeed with effect ("c" remains NULL) BEGIN; COPY forcetest (a, b, c) FROM STDIN WITH (FORMAT csv, FORCE_NULL *); 6,"b","notempty" \. COMMIT; SELECT b, c FROM forcetest WHERE a = 6; -- should fail with "conflicting or redundant options" error BEGIN; COPY forcetest (a, b, c) FROM STDIN WITH (FORMAT csv, FORCE_NOT_NULL *, FORCE_NOT_NULL(b)); ROLLBACK; -- should fail with "conflicting or redundant options" error BEGIN; COPY forcetest (a, b, c) FROM STDIN WITH (FORMAT csv, FORCE_NULL *, 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; -- tests for on_error option CREATE TABLE check_ign_err (n int, m int[], k int); COPY check_ign_err FROM STDIN WITH (on_error stop); 1 {1} 1 a {2} 2 3 {3} 3333333333 4 {a, 4} 4 5 {5} 5 \. -- want context for notices \set SHOW_CONTEXT always COPY check_ign_err FROM STDIN WITH (on_error ignore, log_verbosity verbose); 1 {1} 1 a {2} 2 3 {3} 3333333333 4 {a, 4} 4 5 {5} 5 6 a 7 {7} a 8 {8} 8 \. -- tests for on_error option with log_verbosity and null constraint via domain CREATE DOMAIN dcheck_ign_err2 varchar(15) NOT NULL; CREATE TABLE check_ign_err2 (n int, m int[], k int, l dcheck_ign_err2); COPY check_ign_err2 FROM STDIN WITH (on_error ignore, log_verbosity verbose); 1 {1} 1 'foo' 2 {2} 2 \N \. -- reset context choice \set SHOW_CONTEXT errors SELECT * FROM check_ign_err; SELECT * FROM check_ign_err2; -- test datatype error that can't be handled as soft: should fail CREATE TABLE hard_err(foo widget); COPY hard_err FROM STDIN WITH (on_error ignore); 1 \. -- test missing data: should fail COPY check_ign_err FROM STDIN WITH (on_error ignore); 1 {1} \. -- test extra data: should fail COPY check_ign_err FROM STDIN WITH (on_error ignore); 1 {1} 3 abc \. -- 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(); DROP TABLE check_ign_err; DROP TABLE check_ign_err2; DROP DOMAIN dcheck_ign_err2; DROP TABLE hard_err; -- -- COPY FROM ... DEFAULT -- create temp table copy_default ( id integer primary key, text_value text not null default 'test', ts_value timestamp without time zone not null default '2022-07-05' ); -- if DEFAULT is not specified, then the marker will be regular data copy copy_default from stdin; 1 value '2022-07-04' 2 \D '2022-07-05' \. select id, text_value, ts_value from copy_default; truncate copy_default; copy copy_default from stdin with (format csv); 1,value,2022-07-04 2,\D,2022-07-05 \. select id, text_value, ts_value from copy_default; truncate copy_default; -- DEFAULT cannot be used in binary mode copy copy_default from stdin with (format binary, default '\D'); -- DEFAULT cannot be new line nor carriage return copy copy_default from stdin with (default E'\n'); copy copy_default from stdin with (default E'\r'); -- DELIMITER cannot appear in DEFAULT spec copy copy_default from stdin with (delimiter ';', default 'test;test'); -- CSV quote cannot appear in DEFAULT spec copy copy_default from stdin with (format csv, quote '"', default 'test"test'); -- NULL and DEFAULT spec must be different copy copy_default from stdin with (default '\N'); -- cannot use DEFAULT marker in column that has no DEFAULT value copy copy_default from stdin with (default '\D'); \D value '2022-07-04' 2 \D '2022-07-05' \. copy copy_default from stdin with (format csv, default '\D'); \D,value,2022-07-04 2,\D,2022-07-05 \. -- The DEFAULT marker must be unquoted and unescaped or it's not recognized copy copy_default from stdin with (default '\D'); 1 \D '2022-07-04' 2 \\D '2022-07-04' 3 "\D" '2022-07-04' \. select id, text_value, ts_value from copy_default; truncate copy_default; copy copy_default from stdin with (format csv, default '\D'); 1,\D,2022-07-04 2,\\D,2022-07-04 3,"\D",2022-07-04 \. select id, text_value, ts_value from copy_default; truncate copy_default; -- successful usage of DEFAULT option in COPY copy copy_default from stdin with (default '\D'); 1 value '2022-07-04' 2 \D '2022-07-03' 3 \D \D \. select id, text_value, ts_value from copy_default; truncate copy_default; copy copy_default from stdin with (format csv, default '\D'); 1,value,2022-07-04 2,\D,2022-07-03 3,\D,\D \. select id, text_value, ts_value from copy_default; truncate copy_default; -- DEFAULT cannot be used in COPY TO copy (select 1 as test) TO stdout with (default '\D'); libpg_query-17-6.1.0/test/sql/postgres_regress/copydml.sql000066400000000000000000000077561477334012600236610ustar00rootroot00000000000000-- -- 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; create rule qqq as on insert to copydml_test do instead notify copydml_test; copy (insert into copydml_test default values) 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_when, tg_op, new.id; return new; else raise notice '% % %', tg_when, 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-17-6.1.0/test/sql/postgres_regress/copyselect.sql000066400000000000000000000042431477334012600243500ustar00rootroot00000000000000-- -- 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 3\; select 4; -- 1 2 3 4 create table test3 (c int); select 0\; copy test3 from stdin\; copy test3 from stdin\; select 1; -- 0 1 1 \. 2 \. select * from test3; drop table test3; libpg_query-17-6.1.0/test/sql/postgres_regress/create_aggregate.sql000066400000000000000000000202071477334012600254450ustar00rootroot00000000000000-- -- 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-17-6.1.0/test/sql/postgres_regress/create_am.sql000066400000000000000000000344771477334012600241320ustar00rootroot00000000000000-- -- 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 |&>, 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 supports USING. CREATE TABLE tableam_parted_heap2 (a text, b int) PARTITION BY list (a) USING heap2; SELECT a.amname FROM pg_class c, pg_am a WHERE c.relname = 'tableam_parted_heap2' AND a.oid = c.relam; DROP TABLE tableam_parted_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; -- ALTER TABLE SET ACCESS METHOD CREATE TABLE heaptable USING heap AS SELECT a, repeat(a::text, 100) FROM generate_series(1,9) AS a; SELECT amname FROM pg_class c, pg_am am WHERE c.relam = am.oid AND c.oid = 'heaptable'::regclass; -- Switching to heap2 adds new dependency entry to the AM. ALTER TABLE heaptable SET ACCESS METHOD heap2; 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 = 'heaptable'::regclass ORDER BY 1, 2; -- Switching to heap should not have a dependency entry to the AM. ALTER TABLE heaptable SET ACCESS METHOD heap; 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 = 'heaptable'::regclass ORDER BY 1, 2; ALTER TABLE heaptable SET ACCESS METHOD heap2; SELECT amname FROM pg_class c, pg_am am WHERE c.relam = am.oid AND c.oid = 'heaptable'::regclass; SELECT COUNT(a), COUNT(1) FILTER(WHERE a=1) FROM heaptable; -- DEFAULT access method BEGIN; SET LOCAL default_table_access_method TO heap2; ALTER TABLE heaptable SET ACCESS METHOD DEFAULT; SELECT amname FROM pg_class c, pg_am am WHERE c.relam = am.oid AND c.oid = 'heaptable'::regclass; SET LOCAL default_table_access_method TO heap; ALTER TABLE heaptable SET ACCESS METHOD DEFAULT; SELECT amname FROM pg_class c, pg_am am WHERE c.relam = am.oid AND c.oid = 'heaptable'::regclass; ROLLBACK; -- ALTER MATERIALIZED VIEW SET ACCESS METHOD CREATE MATERIALIZED VIEW heapmv USING heap AS SELECT * FROM heaptable; SELECT amname FROM pg_class c, pg_am am WHERE c.relam = am.oid AND c.oid = 'heapmv'::regclass; ALTER MATERIALIZED VIEW heapmv SET ACCESS METHOD heap2; SELECT amname FROM pg_class c, pg_am am WHERE c.relam = am.oid AND c.oid = 'heapmv'::regclass; SELECT COUNT(a), COUNT(1) FILTER(WHERE a=1) FROM heapmv; -- No support for multiple subcommands ALTER TABLE heaptable SET ACCESS METHOD heap, SET ACCESS METHOD heap2; ALTER TABLE heaptable SET ACCESS METHOD DEFAULT, SET ACCESS METHOD heap2; ALTER MATERIALIZED VIEW heapmv SET ACCESS METHOD heap, SET ACCESS METHOD heap2; DROP MATERIALIZED VIEW heapmv; DROP TABLE heaptable; -- Partitioned table with USING CREATE TABLE am_partitioned(x INT, y INT) PARTITION BY hash (x) USING heap2; SELECT pg_describe_object(classid, objid, objsubid) AS obj, pg_describe_object(refclassid, refobjid, refobjsubid) as refobj FROM pg_depend, pg_am WHERE pg_depend.refclassid = 'pg_am'::regclass AND pg_am.oid = pg_depend.refobjid AND pg_depend.objid = 'am_partitioned'::regclass; DROP TABLE am_partitioned; -- Partition hierarchies with access methods BEGIN; SET LOCAL default_table_access_method = 'heap'; CREATE TABLE am_partitioned(x INT, y INT) PARTITION BY hash (x); -- pg_class.relam is 0, no dependency recorded between the AM and the -- partitioned table. SELECT relam FROM pg_class WHERE relname = 'am_partitioned'; SELECT pg_describe_object(classid, objid, objsubid) AS obj, pg_describe_object(refclassid, refobjid, refobjsubid) as refobj FROM pg_depend, pg_am WHERE pg_depend.refclassid = 'pg_am'::regclass AND pg_am.oid = pg_depend.refobjid AND pg_depend.objid = 'am_partitioned'::regclass; -- New default is set, with dependency added. ALTER TABLE am_partitioned SET ACCESS METHOD heap2; SELECT a.amname FROM pg_class c, pg_am a WHERE c.relname = 'am_partitioned' AND a.oid = c.relam; SELECT pg_describe_object(classid, objid, objsubid) AS obj, pg_describe_object(refclassid, refobjid, refobjsubid) as refobj FROM pg_depend, pg_am WHERE pg_depend.refclassid = 'pg_am'::regclass AND pg_am.oid = pg_depend.refobjid AND pg_depend.objid = 'am_partitioned'::regclass; -- Default is set, with dependency updated. SET LOCAL default_table_access_method = 'heap2'; ALTER TABLE am_partitioned SET ACCESS METHOD heap; SELECT a.amname FROM pg_class c, pg_am a WHERE c.relname = 'am_partitioned' AND a.oid = c.relam; -- Dependency pinned, hence removed. SELECT pg_describe_object(classid, objid, objsubid) AS obj, pg_describe_object(refclassid, refobjid, refobjsubid) as refobj FROM pg_depend, pg_am WHERE pg_depend.refclassid = 'pg_am'::regclass AND pg_am.oid = pg_depend.refobjid AND pg_depend.objid = 'am_partitioned'::regclass; -- Default and AM set in the clause are the same, relam should be set. SET LOCAL default_table_access_method = 'heap2'; ALTER TABLE am_partitioned SET ACCESS METHOD heap2; SELECT a.amname FROM pg_class c, pg_am a WHERE c.relname = 'am_partitioned' AND a.oid = c.relam; -- Reset to default ALTER TABLE am_partitioned SET ACCESS METHOD DEFAULT; SELECT relam FROM pg_class WHERE relname = 'am_partitioned'; -- Upon ALTER TABLE SET ACCESS METHOD on a partitioned table, new partitions -- will inherit the AM set. Existing partitioned are unchanged. SELECT relam FROM pg_class WHERE relname = 'am_partitioned'; SET LOCAL default_table_access_method = 'heap'; CREATE TABLE am_partitioned_0 PARTITION OF am_partitioned FOR VALUES WITH (MODULUS 10, REMAINDER 0); SET LOCAL default_table_access_method = 'heap2'; CREATE TABLE am_partitioned_1 PARTITION OF am_partitioned FOR VALUES WITH (MODULUS 10, REMAINDER 1); SET LOCAL default_table_access_method = 'heap'; ALTER TABLE am_partitioned SET ACCESS METHOD heap2; CREATE TABLE am_partitioned_2 PARTITION OF am_partitioned FOR VALUES WITH (MODULUS 10, REMAINDER 2); ALTER TABLE am_partitioned SET ACCESS METHOD DEFAULT; SELECT relam FROM pg_class WHERE relname = 'am_partitioned'; CREATE TABLE am_partitioned_3 PARTITION OF am_partitioned FOR VALUES WITH (MODULUS 10, REMAINDER 3); -- Partitioned table with relam at 0 ALTER TABLE am_partitioned SET ACCESS METHOD DEFAULT; CREATE TABLE am_partitioned_5p PARTITION OF am_partitioned FOR VALUES WITH (MODULUS 10, REMAINDER 5) PARTITION BY hash(y); -- Partitions of this partitioned table inherit default AM at creation -- time. CREATE TABLE am_partitioned_5p1 PARTITION OF am_partitioned_5p FOR VALUES WITH (MODULUS 10, REMAINDER 1); -- Partitioned table with relam set. ALTER TABLE am_partitioned SET ACCESS METHOD heap2; CREATE TABLE am_partitioned_6p PARTITION OF am_partitioned FOR VALUES WITH (MODULUS 10, REMAINDER 6) PARTITION BY hash(y); -- Partitions of this partitioned table inherit its AM. CREATE TABLE am_partitioned_6p1 PARTITION OF am_partitioned_6p FOR VALUES WITH (MODULUS 10, REMAINDER 1); SELECT c.relname, a.amname FROM pg_class c, pg_am a WHERE c.relam = a.oid AND c.relname LIKE 'am_partitioned%' UNION ALL SELECT c.relname, 'default' FROM pg_class c WHERE c.relam = 0 AND c.relname LIKE 'am_partitioned%' ORDER BY 1; DROP TABLE am_partitioned; COMMIT; -- 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"; -- Other weird invalid cases that cause problems CREATE FOREIGN TABLE fp PARTITION OF tableam_parted_a_heap2 DEFAULT SERVER x; -- 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-17-6.1.0/test/sql/postgres_regress/create_cast.sql000066400000000000000000000044651477334012600244610ustar00rootroot00000000000000-- -- 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 DROP FUNCTION int4_casttesttype(int4) CASCADE; -- Try it with a function that requires an implicit cast CREATE FUNCTION bar_int4_text(int4) RETURNS text LANGUAGE SQL AS $$ SELECT ('bar'::text || $1::text); $$; CREATE CAST (int4 AS casttesttype) WITH FUNCTION bar_int4_text(int4) AS IMPLICIT; SELECT 1234::int4::casttesttype; -- Should work now -- check dependencies generated for that SELECT pg_describe_object(classid, objid, objsubid) as obj, pg_describe_object(refclassid, refobjid, refobjsubid) as objref, deptype FROM pg_depend WHERE classid = 'pg_cast'::regclass AND objid = (SELECT oid FROM pg_cast WHERE castsource = 'int4'::regtype AND casttarget = 'casttesttype'::regtype) ORDER BY refclassid; libpg_query-17-6.1.0/test/sql/postgres_regress/create_function_c.sql000066400000000000000000000021741477334012600256510ustar00rootroot00000000000000-- -- CREATE_FUNCTION_C -- -- This script used to create C functions for other scripts to use. -- But to get rid of the ordering dependencies that caused, such -- functions are now made either in test_setup.sql or in the specific -- test script that needs them. All that remains here is error cases. -- directory path and dlsuffix are passed to us in environment variables \getenv libdir PG_LIBDIR \getenv dlsuffix PG_DLSUFFIX \set regresslib :libdir '/regress' :dlsuffix -- -- Check LOAD command. (The alternative of implicitly loading the library -- is checked in many other test scripts.) -- LOAD :'regresslib'; -- Things that shouldn't work: CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C AS 'nosuchfile'; -- To produce stable regression test output, we have to filter the name -- of the regresslib file out of the error message in this test. \set VERBOSITY sqlstate CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C AS :'regresslib', 'nosuchsymbol'; \set VERBOSITY default SELECT regexp_replace(:'LAST_ERROR_MESSAGE', 'file ".*"', 'file "..."'); CREATE FUNCTION test1 (int) RETURNS int LANGUAGE internal AS 'nosuch'; libpg_query-17-6.1.0/test/sql/postgres_regress/create_function_sql.sql000066400000000000000000000321441477334012600262260ustar00rootroot00000000000000-- -- CREATE_FUNCTION_SQL -- -- 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[1]::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; SELECT functest_A_1('abcd', '2020-01-01'); SELECT functest_A_2(ARRAY['1', '2', '3']); SELECT functest_A_3(); -- -- 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); -- -- SQL-standard body -- CREATE FUNCTION functest_S_1(a text, b date) RETURNS boolean LANGUAGE SQL RETURN a = 'abcd' AND b > '2001-01-01'; CREATE FUNCTION functest_S_2(a text[]) RETURNS int RETURN a[1]::int; CREATE FUNCTION functest_S_3() RETURNS boolean RETURN false; CREATE FUNCTION functest_S_3a() RETURNS boolean BEGIN ATOMIC ;;RETURN false;; END; CREATE FUNCTION functest_S_10(a text, b date) RETURNS boolean LANGUAGE SQL BEGIN ATOMIC SELECT a = 'abcd' AND b > '2001-01-01'; END; CREATE FUNCTION functest_S_13() RETURNS boolean BEGIN ATOMIC SELECT 1; SELECT false; END; -- check display of function arguments in sub-SELECT CREATE TABLE functest1 (i int); CREATE FUNCTION functest_S_16(a int, b int) RETURNS void LANGUAGE SQL BEGIN ATOMIC INSERT INTO functest1 SELECT a + $2; END; -- error: duplicate function body CREATE FUNCTION functest_S_xxx(x int) RETURNS int LANGUAGE SQL AS $$ SELECT x * 2 $$ RETURN x * 3; -- polymorphic arguments not allowed in this form CREATE FUNCTION functest_S_xx(x anyarray) RETURNS anyelement LANGUAGE SQL RETURN x[1]; -- check reporting of parse-analysis errors CREATE FUNCTION functest_S_xx(x date) RETURNS boolean LANGUAGE SQL RETURN x > 1; -- tricky parsing CREATE FUNCTION functest_S_15(x int) RETURNS boolean LANGUAGE SQL BEGIN ATOMIC select case when x % 2 = 0 then true else false end; END; SELECT functest_S_1('abcd', '2020-01-01'); SELECT functest_S_2(ARRAY['1', '2', '3']); SELECT functest_S_3(); SELECT functest_S_10('abcd', '2020-01-01'); SELECT functest_S_13(); SELECT pg_get_functiondef('functest_S_1'::regproc); SELECT pg_get_functiondef('functest_S_2'::regproc); SELECT pg_get_functiondef('functest_S_3'::regproc); SELECT pg_get_functiondef('functest_S_3a'::regproc); SELECT pg_get_functiondef('functest_S_10'::regproc); SELECT pg_get_functiondef('functest_S_13'::regproc); SELECT pg_get_functiondef('functest_S_15'::regproc); SELECT pg_get_functiondef('functest_S_16'::regproc); DROP TABLE functest1 CASCADE; -- test with views CREATE TABLE functest3 (a int); INSERT INTO functest3 VALUES (1), (2); CREATE VIEW functestv3 AS SELECT * FROM functest3; CREATE FUNCTION functest_S_14() RETURNS bigint RETURN (SELECT count(*) FROM functestv3); SELECT functest_S_14(); DROP TABLE functest3 CASCADE; -- 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); -- routine usage views CREATE FUNCTION functest_IS_4a() RETURNS int LANGUAGE SQL AS 'SELECT 1'; CREATE FUNCTION functest_IS_4b(x int DEFAULT functest_IS_4a()) RETURNS int LANGUAGE SQL AS 'SELECT x'; CREATE SEQUENCE functest1; CREATE FUNCTION functest_IS_5(x int DEFAULT nextval('functest1')) RETURNS int LANGUAGE SQL AS 'SELECT x'; CREATE FUNCTION functest_IS_6() RETURNS int LANGUAGE SQL RETURN nextval('functest1'); CREATE TABLE functest2 (a int, b int); CREATE FUNCTION functest_IS_7() RETURNS int LANGUAGE SQL RETURN (SELECT count(a) FROM functest2); SELECT r0.routine_name, r1.routine_name FROM information_schema.routine_routine_usage rru JOIN information_schema.routines r0 ON r0.specific_name = rru.specific_name JOIN information_schema.routines r1 ON r1.specific_name = rru.routine_name WHERE r0.routine_schema = 'temp_func_test' AND r1.routine_schema = 'temp_func_test' ORDER BY 1, 2; SELECT routine_name, sequence_name FROM information_schema.routine_sequence_usage WHERE routine_schema = 'temp_func_test' ORDER BY 1, 2; SELECT routine_name, table_name, column_name FROM information_schema.routine_column_usage WHERE routine_schema = 'temp_func_test' ORDER BY 1, 2; SELECT routine_name, table_name FROM information_schema.routine_table_usage WHERE routine_schema = 'temp_func_test' ORDER BY 1, 2; DROP FUNCTION functest_IS_4a CASCADE; DROP SEQUENCE functest1 CASCADE; DROP TABLE functest2 CASCADE; -- 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); -- inlining of set-returning functions CREATE TABLE functest3 (a int); INSERT INTO functest3 VALUES (1), (2), (3); CREATE FUNCTION functest_sri1() RETURNS SETOF int LANGUAGE SQL STABLE AS ' SELECT * FROM functest3; '; SELECT * FROM functest_sri1(); EXPLAIN (verbose, costs off) SELECT * FROM functest_sri1(); CREATE FUNCTION functest_sri2() RETURNS SETOF int LANGUAGE SQL STABLE BEGIN ATOMIC SELECT * FROM functest3; END; SELECT * FROM functest_sri2(); EXPLAIN (verbose, costs off) SELECT * FROM functest_sri2(); DROP TABLE functest3 CASCADE; -- 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); -- Regression tests for bugs: -- Check that arguments that are R/W expanded datums aren't corrupted by -- multiple uses. This test knows that array_append() returns a R/W datum -- and will modify a R/W array input in-place. We use SETOF to prevent -- inlining of the SQL function. CREATE FUNCTION double_append(anyarray, anyelement) RETURNS SETOF anyarray LANGUAGE SQL IMMUTABLE AS $$ SELECT array_append($1, $2) || array_append($1, $2) $$; SELECT double_append(array_append(ARRAY[q1], q2), q3) FROM (VALUES(1,2,3), (4,5,6)) v(q1,q2,q3); -- Things that shouldn't work: CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL AS 'SELECT ''not an integer'';'; CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL AS 'not even SQL'; CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL AS 'SELECT 1, 2, 3;'; CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL AS 'SELECT $2;'; CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL AS 'a', 'b'; -- Cleanup DROP SCHEMA temp_func_test CASCADE; DROP USER regress_unpriv_user; RESET search_path; libpg_query-17-6.1.0/test/sql/postgres_regress/create_index.sql000066400000000000000000001404431477334012600246330ustar00rootroot00000000000000-- -- CREATE_INDEX -- Create ancillary data structures (i.e. indices) -- -- directory paths are passed to us in environment variables \getenv abs_srcdir PG_ABS_SRCDIR -- -- 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 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 TABLE slow_emp4000 ( home_base box ); CREATE TABLE fast_emp4000 ( home_base box ); \set filename :abs_srcdir '/data/rect.data' COPY slow_emp4000 FROM :'filename'; INSERT INTO fast_emp4000 SELECT * FROM slow_emp4000; ANALYZE slow_emp4000; ANALYZE fast_emp4000; CREATE INDEX grect2ind ON fast_emp4000 USING gist (home_base); -- we want to work with a point_tbl that includes a null CREATE TEMP TABLE point_tbl AS SELECT * FROM public.point_tbl; 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 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 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; EXPLAIN (COSTS OFF) SELECT point(x,x), (SELECT f1 FROM gpolygon_tbl ORDER BY f1 <-> point(x,x) LIMIT 1) as c FROM generate_series(0,10,1) x; SELECT point(x,x), (SELECT f1 FROM gpolygon_tbl ORDER BY f1 <-> point(x,x) LIMIT 1) as c FROM generate_series(0,10,1) x; -- 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 -- CREATE TABLE array_index_op_test ( seqno int4, i int4[], t text[] ); \set filename :abs_srcdir '/data/array.data' COPY array_index_op_test FROM :'filename'; ANALYZE array_index_op_test; SELECT * FROM array_index_op_test WHERE i = '{NULL}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i @> '{NULL}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i && '{NULL}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i <@ '{NULL}' ORDER BY seqno; 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; 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; 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 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 unique null behavior -- CREATE TABLE unique_tbl (i int, t text); CREATE UNIQUE INDEX unique_idx1 ON unique_tbl (i) NULLS DISTINCT; CREATE UNIQUE INDEX unique_idx2 ON unique_tbl (i) NULLS NOT DISTINCT; INSERT INTO unique_tbl VALUES (1, 'one'); INSERT INTO unique_tbl VALUES (2, 'two'); INSERT INTO unique_tbl VALUES (3, 'three'); INSERT INTO unique_tbl VALUES (4, 'four'); INSERT INTO unique_tbl VALUES (5, 'one'); INSERT INTO unique_tbl (t) VALUES ('six'); INSERT INTO unique_tbl (t) VALUES ('seven'); -- error from unique_idx2 DROP INDEX unique_idx1, unique_idx2; INSERT INTO unique_tbl (t) VALUES ('seven'); -- build indexes on filled table CREATE UNIQUE INDEX unique_idx3 ON unique_tbl (i) NULLS DISTINCT; -- ok CREATE UNIQUE INDEX unique_idx4 ON unique_tbl (i) NULLS NOT DISTINCT; -- error DELETE FROM unique_tbl WHERE t = 'seven'; CREATE UNIQUE INDEX unique_idx4 ON unique_tbl (i) NULLS NOT DISTINCT; -- ok now \d unique_tbl \d unique_idx3 \d unique_idx4 SELECT pg_get_indexdef('unique_idx3'::regclass); SELECT pg_get_indexdef('unique_idx4'::regclass); DROP TABLE unique_tbl; -- -- 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; -- -- 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; -- test where predicate is able to do a transactional update during -- a concurrent build before switching pg_index state flags. CREATE FUNCTION predicate_stable() RETURNS bool IMMUTABLE LANGUAGE plpgsql AS $$ BEGIN EXECUTE 'SELECT txid_current()'; RETURN true; END; $$; CREATE INDEX CONCURRENTLY concur_index8 ON concur_heap (f1) WHERE predicate_stable(); DROP INDEX concur_index8; DROP FUNCTION predicate_stable(); -- 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; -- PRIMARY KEY constraint cannot be backed by a NULLS NOT DISTINCT index CREATE TABLE cwi_test(a int, b int); CREATE UNIQUE INDEX cwi_a_nnd ON cwi_test (a) NULLS NOT DISTINCT; ALTER TABLE cwi_test ADD PRIMARY KEY USING INDEX cwi_a_nnd; 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 -- CREATE TABLE onek_with_null AS SELECT unique1, unique2 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; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IN (-1, 0, 1); 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 that index scans with =ANY indexquals return rows in index order -- 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; -- Non-required array scan key on "tenthous": 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; -- Non-required array scan key on "tenthous", backward scan: explain (costs off) SELECT thousand, tenthous FROM tenk1 WHERE thousand < 2 AND tenthous IN (1001,3000) ORDER BY thousand DESC, tenthous DESC; SELECT thousand, tenthous FROM tenk1 WHERE thousand < 2 AND tenthous IN (1001,3000) ORDER BY thousand DESC, tenthous DESC; -- -- Check elimination of redundant and contradictory index quals -- explain (costs off) SELECT unique1 FROM tenk1 WHERE unique1 IN (1, 42, 7) and unique1 = ANY('{7, 8, 9}'); SELECT unique1 FROM tenk1 WHERE unique1 IN (1, 42, 7) and unique1 = ANY('{7, 8, 9}'); explain (costs off) SELECT unique1 FROM tenk1 WHERE unique1 = ANY('{7, 14, 22}') and unique1 = ANY('{33, 44}'::bigint[]); SELECT unique1 FROM tenk1 WHERE unique1 = ANY('{7, 14, 22}') and unique1 = ANY('{33, 44}'::bigint[]); explain (costs off) SELECT unique1 FROM tenk1 WHERE unique1 IN (1, 42, 7) and unique1 = 1; SELECT unique1 FROM tenk1 WHERE unique1 IN (1, 42, 7) and unique1 = 1; explain (costs off) SELECT unique1 FROM tenk1 WHERE unique1 IN (1, 42, 7) and unique1 = 12345; SELECT unique1 FROM tenk1 WHERE unique1 IN (1, 42, 7) and unique1 = 12345; explain (costs off) SELECT unique1 FROM tenk1 WHERE unique1 IN (1, 42, 7) and unique1 >= 42; SELECT unique1 FROM tenk1 WHERE unique1 IN (1, 42, 7) and unique1 >= 42; explain (costs off) SELECT unique1 FROM tenk1 WHERE unique1 IN (1, 42, 7) and unique1 > 42; SELECT unique1 FROM tenk1 WHERE unique1 IN (1, 42, 7) and unique1 > 42; explain (costs off) SELECT unique1 FROM tenk1 WHERE unique1 > 9996 and unique1 >= 9999; SELECT unique1 FROM tenk1 WHERE unique1 > 9996 and unique1 >= 9999; explain (costs off) SELECT unique1 FROM tenk1 WHERE unique1 < 3 and unique1 <= 3; SELECT unique1 FROM tenk1 WHERE unique1 < 3 and unique1 <= 3; explain (costs off) SELECT unique1 FROM tenk1 WHERE unique1 < 3 and unique1 < (-1)::bigint; SELECT unique1 FROM tenk1 WHERE unique1 < 3 and unique1 < (-1)::bigint; explain (costs off) SELECT unique1 FROM tenk1 WHERE unique1 IN (1, 42, 7) and unique1 < (-1)::bigint; SELECT unique1 FROM tenk1 WHERE unique1 IN (1, 42, 7) and unique1 < (-1)::bigint; -- -- 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 (CONCURRENTLY) TABLE 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; -- Check that opclass parameters are preserved CREATE TABLE concur_appclass_tab(i tsvector, j tsvector, k tsvector); CREATE INDEX concur_appclass_ind on concur_appclass_tab USING gist (i tsvector_ops (siglen='1000'), j tsvector_ops (siglen='500')); CREATE INDEX concur_appclass_ind_2 on concur_appclass_tab USING gist (k tsvector_ops (siglen='300'), j tsvector_ops); REINDEX TABLE CONCURRENTLY concur_appclass_tab; \d concur_appclass_tab DROP TABLE concur_appclass_tab; -- 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; 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; -- REINDEX for partitioned indexes -- REINDEX TABLE fails for partitioned indexes -- Top-most parent index REINDEX TABLE concur_reindex_part_index; -- error REINDEX TABLE CONCURRENTLY concur_reindex_part_index; -- error -- Partitioned index with no leaves REINDEX TABLE concur_reindex_part_index_10; -- error REINDEX TABLE CONCURRENTLY concur_reindex_part_index_10; -- error -- Cannot run in a transaction block BEGIN; REINDEX INDEX concur_reindex_part_index; ROLLBACK; -- Helper functions to track changes of relfilenodes in a partition tree. -- Create a table tracking the relfilenode state. CREATE OR REPLACE FUNCTION create_relfilenode_part(relname text, indname text) RETURNS VOID AS $func$ BEGIN EXECUTE format(' CREATE TABLE %I AS SELECT oid, relname, relfilenode, relkind, reltoastrelid FROM pg_class WHERE oid IN (SELECT relid FROM pg_partition_tree(''%I''));', relname, indname); END $func$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION compare_relfilenode_part(tabname text) RETURNS TABLE (relname name, relkind "char", state text) AS $func$ BEGIN RETURN QUERY EXECUTE format( 'SELECT b.relname, b.relkind, CASE WHEN a.relfilenode = b.relfilenode THEN ''relfilenode is unchanged'' ELSE ''relfilenode has changed'' END -- Do not join with OID here as CONCURRENTLY changes it. FROM %I b JOIN pg_class a ON b.relname = a.relname ORDER BY 1;', tabname); END $func$ LANGUAGE plpgsql; -- Check that expected relfilenodes are changed, non-concurrent case. SELECT create_relfilenode_part('reindex_index_status', 'concur_reindex_part_index'); REINDEX INDEX concur_reindex_part_index; SELECT * FROM compare_relfilenode_part('reindex_index_status'); DROP TABLE reindex_index_status; -- concurrent case. SELECT create_relfilenode_part('reindex_index_status', 'concur_reindex_part_index'); REINDEX INDEX CONCURRENTLY concur_reindex_part_index; SELECT * FROM compare_relfilenode_part('reindex_index_status'); DROP TABLE reindex_index_status; -- REINDEX for partitioned tables -- REINDEX INDEX fails for partitioned tables -- Top-most parent REINDEX INDEX concur_reindex_part; -- error REINDEX INDEX CONCURRENTLY concur_reindex_part; -- error -- Partitioned with no leaves REINDEX INDEX concur_reindex_part_10; -- error REINDEX INDEX CONCURRENTLY concur_reindex_part_10; -- error -- Cannot run in a transaction block BEGIN; REINDEX TABLE concur_reindex_part; ROLLBACK; -- Check that expected relfilenodes are changed, non-concurrent case. -- Note that the partition tree changes of the *indexes* need to be checked. SELECT create_relfilenode_part('reindex_index_status', 'concur_reindex_part_index'); REINDEX TABLE concur_reindex_part; SELECT * FROM compare_relfilenode_part('reindex_index_status'); DROP TABLE reindex_index_status; -- concurrent case. SELECT create_relfilenode_part('reindex_index_status', 'concur_reindex_part_index'); REINDEX TABLE CONCURRENTLY concur_reindex_part; SELECT * FROM compare_relfilenode_part('reindex_index_status'); DROP TABLE reindex_index_status; DROP FUNCTION create_relfilenode_part; DROP FUNCTION compare_relfilenode_part; -- Cleanup of partition tree used for REINDEX test. 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 REINDEX (CONCURRENTLY) SYSTEM postgres; -- ditto REINDEX (CONCURRENTLY) SYSTEM; -- ditto -- Warns about catalog relations REINDEX SCHEMA CONCURRENTLY pg_catalog; -- Not the current database REINDEX DATABASE not_current_database; -- 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-17-6.1.0/test/sql/postgres_regress/create_index_spgist.sql000066400000000000000000000412041477334012600262170ustar00rootroot00000000000000-- -- 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; -- test KNN scan with included columns -- the distance numbers are not exactly the same across platforms SET extra_float_digits = 0; CREATE INDEX ON quad_point_tbl_ord_seq1 USING spgist(p) INCLUDE(dist); EXPLAIN (COSTS OFF) SELECT p, dist FROM quad_point_tbl_ord_seq1 ORDER BY p <-> '0,0' LIMIT 10; SELECT p, dist FROM quad_point_tbl_ord_seq1 ORDER BY p <-> '0,0' LIMIT 10; RESET extra_float_digits; -- 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'; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE starts_with(t, 'Worth'); SELECT count(*) FROM radix_text_tbl WHERE starts_with(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'; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE starts_with(t, 'Worth'); SELECT count(*) FROM radix_text_tbl WHERE starts_with(t, 'Worth'); RESET enable_seqscan; RESET enable_indexscan; RESET enable_bitmapscan; libpg_query-17-6.1.0/test/sql/postgres_regress/create_misc.sql000066400000000000000000000140001477334012600244440ustar00rootroot00000000000000-- -- CREATE_MISC -- -- -- 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); 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; -- -- inheritance stress test -- SELECT * FROM a_star*; SELECT * FROM b_star* x WHERE x.b = text 'bumble' or x.a < 3; SELECT class, a FROM c_star* x WHERE x.c ~ text 'hi'; SELECT class, b, c FROM d_star* x WHERE x.a < 100; SELECT class, c FROM e_star* x WHERE x.c NOTNULL; SELECT * FROM f_star* x WHERE x.c ISNULL; -- grouping and aggregation on inherited sets have been busted in the past... SELECT sum(a) FROM a_star*; SELECT class, sum(a) FROM a_star* GROUP BY class ORDER BY class; ALTER TABLE f_star RENAME COLUMN f TO ff; ALTER TABLE e_star* RENAME COLUMN e TO ee; ALTER TABLE d_star* RENAME COLUMN d TO dd; ALTER TABLE c_star* RENAME COLUMN c TO cc; ALTER TABLE b_star* RENAME COLUMN b TO bb; ALTER TABLE a_star* RENAME COLUMN a TO aa; SELECT class, aa FROM a_star* x WHERE aa ISNULL; -- As of Postgres 7.1, ALTER implicitly recurses, -- so this should be same as ALTER a_star* ALTER TABLE a_star RENAME COLUMN aa TO foo; SELECT class, foo FROM a_star* x WHERE x.foo >= 2; ALTER TABLE a_star RENAME COLUMN foo TO aa; SELECT * from a_star* WHERE aa < 1000; ALTER TABLE f_star ADD COLUMN f int4; UPDATE f_star SET f = 10; ALTER TABLE e_star* ADD COLUMN e int4; --UPDATE e_star* SET e = 42; SELECT * FROM e_star*; ALTER TABLE a_star* ADD COLUMN a text; -- That ALTER TABLE should have added TOAST tables. SELECT relname, reltoastrelid <> 0 AS has_toast_table FROM pg_class WHERE oid::regclass IN ('a_star', 'c_star') ORDER BY 1; --UPDATE b_star* -- SET a = text 'gazpacho' -- WHERE aa > 4; SELECT class, aa, a FROM a_star*; libpg_query-17-6.1.0/test/sql/postgres_regress/create_operator.sql000066400000000000000000000154031477334012600253540ustar00rootroot00000000000000-- -- CREATE_OPERATOR -- CREATE OPERATOR ## ( leftarg = path, rightarg = path, function = path_inter, commutator = ## ); CREATE OPERATOR @#@ ( rightarg = int8, -- prefix procedure = factorial ); CREATE OPERATOR #%# ( leftarg = int8, -- fail, postfix is no longer supported procedure = factorial ); -- Test operator created above SELECT @#@ 24; -- Test comments COMMENT ON OPERATOR ###### (NONE, int4) IS 'bad prefix'; COMMENT ON OPERATOR ###### (int4, NONE) IS 'bad postfix'; COMMENT ON OPERATOR ###### (int4, int8) IS 'bad infix'; -- Check that DROP on a nonexistent op behaves sanely, too DROP OPERATOR ###### (NONE, int4); DROP OPERATOR ###### (int4, NONE); DROP OPERATOR ###### (int4, int8); -- => is disallowed as an operator name now CREATE OPERATOR => ( rightarg = int8, 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 !=- ( rightarg = int8, procedure = factorial ); SELECT !=- 10; -- postfix operators don't work anymore SELECT 10 !=-; -- 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.#*# ( rightarg = int8, 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 #@%# ( rightarg = int8, procedure = factorial, invalid_att = int8 ); -- Should fail. At least rightarg should be mandatorily specified CREATE OPERATOR #@%# ( procedure = factorial ); -- Should fail. Procedure should be mandatorily specified CREATE OPERATOR #@%# ( rightarg = 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; -- Should fail. An operator cannot be its own negator. BEGIN TRANSACTION; CREATE OPERATOR === ( leftarg = integer, rightarg = integer, procedure = int4eq, negator = === ); ROLLBACK; -- Should fail. An operator cannot be its own negator. Here we check that -- this error is detected when replacing a shell operator. BEGIN TRANSACTION; -- create a shell operator for ===!!! by referencing it as a commutator CREATE OPERATOR === ( leftarg = integer, rightarg = integer, procedure = int4eq, commutator = ===!!! ); CREATE OPERATOR ===!!! ( leftarg = integer, rightarg = integer, procedure = int4ne, negator = ===!!! ); ROLLBACK; -- test that we can't use part of an existing commutator or negator pair -- as a commutator or negator CREATE OPERATOR === ( leftarg = integer, rightarg = integer, procedure = int4eq, commutator = = ); CREATE OPERATOR === ( leftarg = integer, rightarg = integer, procedure = int4eq, negator = <> ); -- 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-17-6.1.0/test/sql/postgres_regress/create_procedure.sql000066400000000000000000000133721477334012600255140ustar00rootroot00000000000000CALL 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"; -- SQL-standard body CREATE PROCEDURE ptest1s(x text) LANGUAGE SQL BEGIN ATOMIC INSERT INTO cp_test VALUES (1, x); END; \df ptest1s SELECT pg_get_functiondef('ptest1s'::regproc); CALL ptest1s('b'); SELECT * FROM cp_test ORDER BY b COLLATE "C"; -- utility functions currently not supported here CREATE PROCEDURE ptestx() LANGUAGE SQL BEGIN ATOMIC CREATE TABLE x (a int); END; 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 $$; -- we used to get confused by a single output argument that is composite CREATE PROCEDURE ptest4c(INOUT comp int8_tbl) LANGUAGE SQL AS $$ SELECT ROW(1, 2); $$; CALL ptest4c(NULL); DROP PROCEDURE ptest4a, ptest4c; -- 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); CREATE PROCEDURE ptest6a(inout a anyelement, out b anyelement) LANGUAGE SQL AS $$ SELECT $1, $1; $$; CALL ptest6a(1, null); CALL ptest6a(1.1, null); CREATE PROCEDURE ptest6b(a anyelement, out b anyelement, out c anyarray) LANGUAGE SQL AS $$ SELECT $1, array[$1]; $$; CALL ptest6b(1, null, null); CALL ptest6b(1.1, null, null); CREATE PROCEDURE ptest6c(inout a anyelement, inout b anyelement) LANGUAGE SQL AS $$ SELECT $1, 1; $$; CALL ptest6c(1, null); CALL ptest6c(1.1, null); -- fails before v13 -- collation assignment CREATE PROCEDURE ptest7(a text, b text) LANGUAGE SQL AS $$ SELECT a = b; $$; CALL ptest7(least('a', 'b'), 'a'); -- empty body CREATE PROCEDURE ptest8(x text) BEGIN ATOMIC END; \df ptest8 SELECT pg_get_functiondef('ptest8'::regproc); CALL ptest8(''); -- OUT parameters CREATE PROCEDURE ptest9(OUT a int) LANGUAGE SQL AS $$ INSERT INTO cp_test VALUES (1, 'a'); SELECT 1; $$; -- standard way to do a call: CALL ptest9(NULL); -- you can write an expression, but it's not evaluated CALL ptest9(1/0); -- no error -- ... and it had better match the type of the parameter CALL ptest9(1./0.); -- error -- check named-parameter matching CREATE PROCEDURE ptest10(OUT a int, IN b int, IN c int) LANGUAGE SQL AS $$ SELECT b - c $$; CALL ptest10(null, 7, 4); CALL ptest10(a => null, b => 8, c => 2); CALL ptest10(null, 7, c => 2); CALL ptest10(null, c => 4, b => 11); CALL ptest10(b => 8, c => 2, a => 0); CREATE PROCEDURE ptest11(a OUT int, VARIADIC b int[]) LANGUAGE SQL AS $$ SELECT b[1] + b[2] $$; CALL ptest11(null, 11, 12, 13); -- check resolution of ambiguous DROP commands CREATE PROCEDURE ptest10(IN a int, IN b int, IN c int) LANGUAGE SQL AS $$ SELECT a + b - c $$; \df ptest10 drop procedure ptest10; -- fail drop procedure ptest10(int, int, int); -- fail begin; drop procedure ptest10(out int, int, int); \df ptest10 drop procedure ptest10(int, int, int); -- now this would work rollback; begin; drop procedure ptest10(in int, int, int); \df ptest10 drop procedure ptest10(int, int, int); -- now this would work rollback; -- 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(a VARIADIC int[], b OUT int) LANGUAGE SQL AS $$ SELECT a[1] $$; CREATE PROCEDURE ptestx(a int DEFAULT 42, b OUT int) LANGUAGE SQL AS $$ SELECT 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 ptest1s; DROP PROCEDURE ptest2; DROP TABLE cp_test; DROP USER regress_cp_user1; libpg_query-17-6.1.0/test/sql/postgres_regress/create_role.sql000066400000000000000000000212271477334012600244630ustar00rootroot00000000000000-- ok, superuser can create users with any set of privileges CREATE ROLE regress_role_super SUPERUSER; CREATE ROLE regress_role_admin CREATEDB CREATEROLE REPLICATION BYPASSRLS; GRANT CREATE ON DATABASE regression TO regress_role_admin WITH GRANT OPTION; CREATE ROLE regress_role_limited_admin CREATEROLE; CREATE ROLE regress_role_normal; -- fail, CREATEROLE user can't give away role attributes without having them SET SESSION AUTHORIZATION regress_role_limited_admin; CREATE ROLE regress_nosuch_superuser SUPERUSER; CREATE ROLE regress_nosuch_replication_bypassrls REPLICATION BYPASSRLS; CREATE ROLE regress_nosuch_replication REPLICATION; CREATE ROLE regress_nosuch_bypassrls BYPASSRLS; CREATE ROLE regress_nosuch_createdb CREATEDB; -- ok, can create a role without any special attributes CREATE ROLE regress_role_limited; -- fail, can't give it in any of the restricted attributes ALTER ROLE regress_role_limited SUPERUSER; ALTER ROLE regress_role_limited REPLICATION; ALTER ROLE regress_role_limited CREATEDB; ALTER ROLE regress_role_limited BYPASSRLS; DROP ROLE regress_role_limited; -- ok, can give away these role attributes if you have them SET SESSION AUTHORIZATION regress_role_admin; CREATE ROLE regress_replication_bypassrls REPLICATION BYPASSRLS; CREATE ROLE regress_replication REPLICATION; CREATE ROLE regress_bypassrls BYPASSRLS; CREATE ROLE regress_createdb CREATEDB; -- ok, can toggle these role attributes off and on if you have them ALTER ROLE regress_replication NOREPLICATION; ALTER ROLE regress_replication REPLICATION; ALTER ROLE regress_bypassrls NOBYPASSRLS; ALTER ROLE regress_bypassrls BYPASSRLS; ALTER ROLE regress_createdb NOCREATEDB; ALTER ROLE regress_createdb CREATEDB; -- fail, can't toggle SUPERUSER ALTER ROLE regress_createdb SUPERUSER; ALTER ROLE regress_createdb NOSUPERUSER; -- ok, having CREATEROLE is enough to create users with these privileges CREATE ROLE regress_createrole CREATEROLE NOINHERIT; GRANT CREATE ON DATABASE regression TO regress_createrole WITH GRANT OPTION; CREATE ROLE regress_login LOGIN; CREATE ROLE regress_inherit INHERIT; CREATE ROLE regress_connection_limit CONNECTION LIMIT 5; CREATE ROLE regress_encrypted_password ENCRYPTED PASSWORD 'foo'; CREATE ROLE regress_password_null PASSWORD NULL; -- ok, backwards compatible noise words should be ignored CREATE ROLE regress_noiseword SYSID 12345; -- fail, cannot grant membership in superuser role CREATE ROLE regress_nosuch_super IN ROLE regress_role_super; -- fail, database owner cannot have members CREATE ROLE regress_nosuch_dbowner IN ROLE pg_database_owner; -- ok, can grant other users into a role CREATE ROLE regress_inroles ROLE regress_role_super, regress_createdb, regress_createrole, regress_login, regress_inherit, regress_connection_limit, regress_encrypted_password, regress_password_null; -- fail, cannot grant a role into itself CREATE ROLE regress_nosuch_recursive ROLE regress_nosuch_recursive; -- ok, can grant other users into a role with admin option CREATE ROLE regress_adminroles ADMIN regress_role_super, regress_createdb, regress_createrole, regress_login, regress_inherit, regress_connection_limit, regress_encrypted_password, regress_password_null; -- fail, cannot grant a role into itself with admin option CREATE ROLE regress_nosuch_admin_recursive ADMIN regress_nosuch_admin_recursive; -- fail, regress_createrole does not have CREATEDB privilege SET SESSION AUTHORIZATION regress_createrole; CREATE DATABASE regress_nosuch_db; -- ok, regress_createrole can create new roles CREATE ROLE regress_plainrole; -- ok, roles with CREATEROLE can create new roles with it CREATE ROLE regress_rolecreator CREATEROLE; -- ok, roles with CREATEROLE can create new roles with different role -- attributes, including CREATEROLE CREATE ROLE regress_hasprivs CREATEROLE LOGIN INHERIT CONNECTION LIMIT 5; -- ok, we should be able to modify a role we created COMMENT ON ROLE regress_hasprivs IS 'some comment'; ALTER ROLE regress_hasprivs RENAME TO regress_tenant; ALTER ROLE regress_tenant NOINHERIT NOLOGIN CONNECTION LIMIT 7; -- fail, we should be unable to modify a role we did not create COMMENT ON ROLE regress_role_normal IS 'some comment'; ALTER ROLE regress_role_normal RENAME TO regress_role_abnormal; ALTER ROLE regress_role_normal NOINHERIT NOLOGIN CONNECTION LIMIT 7; -- ok, regress_tenant can create objects within the database SET SESSION AUTHORIZATION regress_tenant; CREATE TABLE tenant_table (i integer); CREATE INDEX tenant_idx ON tenant_table(i); CREATE VIEW tenant_view AS SELECT * FROM pg_catalog.pg_class; REVOKE ALL PRIVILEGES ON tenant_table FROM PUBLIC; -- fail, these objects belonging to regress_tenant SET SESSION AUTHORIZATION regress_createrole; DROP INDEX tenant_idx; ALTER TABLE tenant_table ADD COLUMN t text; DROP TABLE tenant_table; ALTER VIEW tenant_view OWNER TO regress_role_admin; DROP VIEW tenant_view; -- fail, can't create objects owned as regress_tenant CREATE SCHEMA regress_tenant_schema AUTHORIZATION regress_tenant; -- fail, we don't inherit permissions from regress_tenant REASSIGN OWNED BY regress_tenant TO regress_createrole; -- ok, create a role with a value for createrole_self_grant SET createrole_self_grant = 'set, inherit'; CREATE ROLE regress_tenant2; GRANT CREATE ON DATABASE regression TO regress_tenant2; -- ok, regress_tenant2 can create objects within the database SET SESSION AUTHORIZATION regress_tenant2; CREATE TABLE tenant2_table (i integer); REVOKE ALL PRIVILEGES ON tenant2_table FROM PUBLIC; -- ok, because we have SET and INHERIT on regress_tenant2 SET SESSION AUTHORIZATION regress_createrole; CREATE SCHEMA regress_tenant2_schema AUTHORIZATION regress_tenant2; ALTER SCHEMA regress_tenant2_schema OWNER TO regress_createrole; ALTER TABLE tenant2_table OWNER TO regress_createrole; ALTER TABLE tenant2_table OWNER TO regress_tenant2; -- with SET but not INHERIT, we can give away objects but not take them REVOKE INHERIT OPTION FOR regress_tenant2 FROM regress_createrole; ALTER SCHEMA regress_tenant2_schema OWNER TO regress_tenant2; ALTER TABLE tenant2_table OWNER TO regress_createrole; -- with INHERIT but not SET, we can take objects but not give them away GRANT regress_tenant2 TO regress_createrole WITH INHERIT TRUE, SET FALSE; ALTER TABLE tenant2_table OWNER TO regress_createrole; ALTER TABLE tenant2_table OWNER TO regress_tenant2; DROP TABLE tenant2_table; -- fail, CREATEROLE is not enough to create roles in privileged roles CREATE ROLE regress_read_all_data IN ROLE pg_read_all_data; CREATE ROLE regress_write_all_data IN ROLE pg_write_all_data; CREATE ROLE regress_monitor IN ROLE pg_monitor; CREATE ROLE regress_read_all_settings IN ROLE pg_read_all_settings; CREATE ROLE regress_read_all_stats IN ROLE pg_read_all_stats; CREATE ROLE regress_stat_scan_tables IN ROLE pg_stat_scan_tables; CREATE ROLE regress_read_server_files IN ROLE pg_read_server_files; CREATE ROLE regress_write_server_files IN ROLE pg_write_server_files; CREATE ROLE regress_execute_server_program IN ROLE pg_execute_server_program; CREATE ROLE regress_signal_backend IN ROLE pg_signal_backend; -- fail, role still owns database objects DROP ROLE regress_tenant; -- fail, creation of these roles failed above so they do not now exist SET SESSION AUTHORIZATION regress_role_admin; DROP ROLE regress_nosuch_superuser; DROP ROLE regress_nosuch_replication_bypassrls; DROP ROLE regress_nosuch_replication; DROP ROLE regress_nosuch_bypassrls; DROP ROLE regress_nosuch_super; DROP ROLE regress_nosuch_dbowner; DROP ROLE regress_nosuch_recursive; DROP ROLE regress_nosuch_admin_recursive; DROP ROLE regress_plainrole; -- must revoke privileges before dropping role REVOKE CREATE ON DATABASE regression FROM regress_createrole CASCADE; -- ok, should be able to drop non-superuser roles we created DROP ROLE regress_replication_bypassrls; DROP ROLE regress_replication; DROP ROLE regress_bypassrls; DROP ROLE regress_createdb; DROP ROLE regress_createrole; DROP ROLE regress_login; DROP ROLE regress_inherit; DROP ROLE regress_connection_limit; DROP ROLE regress_encrypted_password; DROP ROLE regress_password_null; DROP ROLE regress_noiseword; DROP ROLE regress_inroles; DROP ROLE regress_adminroles; -- fail, cannot drop ourself, nor superusers or roles we lack ADMIN for DROP ROLE regress_role_super; DROP ROLE regress_role_admin; DROP ROLE regress_rolecreator; -- ok RESET SESSION AUTHORIZATION; REVOKE CREATE ON DATABASE regression FROM regress_role_admin CASCADE; DROP INDEX tenant_idx; DROP TABLE tenant_table; DROP VIEW tenant_view; DROP SCHEMA regress_tenant2_schema; -- check for duplicated drop DROP ROLE regress_tenant, regress_tenant; DROP ROLE regress_tenant2; DROP ROLE regress_rolecreator; DROP ROLE regress_role_admin; DROP ROLE regress_role_limited_admin; DROP ROLE regress_role_super; DROP ROLE regress_role_normal; libpg_query-17-6.1.0/test/sql/postgres_regress/create_schema.sql000066400000000000000000000056651477334012600247720ustar00rootroot00000000000000-- -- CREATE_SCHEMA -- -- Schema creation with elements. CREATE ROLE regress_create_schema_role SUPERUSER; -- Cases where schema creation fails as objects are qualified with a schema -- that does not match with what's expected. -- This checks all the object types that include schema qualifications. CREATE SCHEMA AUTHORIZATION regress_create_schema_role CREATE SEQUENCE schema_not_existing.seq; CREATE SCHEMA AUTHORIZATION regress_create_schema_role CREATE TABLE schema_not_existing.tab (id int); CREATE SCHEMA AUTHORIZATION regress_create_schema_role CREATE VIEW schema_not_existing.view AS SELECT 1; CREATE SCHEMA AUTHORIZATION regress_create_schema_role CREATE INDEX ON schema_not_existing.tab (id); CREATE SCHEMA AUTHORIZATION regress_create_schema_role CREATE TRIGGER schema_trig BEFORE INSERT ON schema_not_existing.tab EXECUTE FUNCTION schema_trig.no_func(); -- Again, with a role specification and no schema names. SET ROLE regress_create_schema_role; CREATE SCHEMA AUTHORIZATION CURRENT_ROLE CREATE SEQUENCE schema_not_existing.seq; CREATE SCHEMA AUTHORIZATION CURRENT_ROLE CREATE TABLE schema_not_existing.tab (id int); CREATE SCHEMA AUTHORIZATION CURRENT_ROLE CREATE VIEW schema_not_existing.view AS SELECT 1; CREATE SCHEMA AUTHORIZATION CURRENT_ROLE CREATE INDEX ON schema_not_existing.tab (id); CREATE SCHEMA AUTHORIZATION CURRENT_ROLE CREATE TRIGGER schema_trig BEFORE INSERT ON schema_not_existing.tab EXECUTE FUNCTION schema_trig.no_func(); -- Again, with a schema name and a role specification. CREATE SCHEMA regress_schema_1 AUTHORIZATION CURRENT_ROLE CREATE SEQUENCE schema_not_existing.seq; CREATE SCHEMA regress_schema_1 AUTHORIZATION CURRENT_ROLE CREATE TABLE schema_not_existing.tab (id int); CREATE SCHEMA regress_schema_1 AUTHORIZATION CURRENT_ROLE CREATE VIEW schema_not_existing.view AS SELECT 1; CREATE SCHEMA regress_schema_1 AUTHORIZATION CURRENT_ROLE CREATE INDEX ON schema_not_existing.tab (id); CREATE SCHEMA regress_schema_1 AUTHORIZATION CURRENT_ROLE CREATE TRIGGER schema_trig BEFORE INSERT ON schema_not_existing.tab EXECUTE FUNCTION schema_trig.no_func(); RESET ROLE; -- Cases where the schema creation succeeds. -- The schema created matches the role name. CREATE SCHEMA AUTHORIZATION regress_create_schema_role CREATE TABLE regress_create_schema_role.tab (id int); \d regress_create_schema_role.tab DROP SCHEMA regress_create_schema_role CASCADE; -- Again, with a different role specification and no schema names. SET ROLE regress_create_schema_role; CREATE SCHEMA AUTHORIZATION CURRENT_ROLE CREATE TABLE regress_create_schema_role.tab (id int); \d regress_create_schema_role.tab DROP SCHEMA regress_create_schema_role CASCADE; -- Again, with a schema name and a role specification. CREATE SCHEMA regress_schema_1 AUTHORIZATION CURRENT_ROLE CREATE TABLE regress_schema_1.tab (id int); \d regress_schema_1.tab DROP SCHEMA regress_schema_1 CASCADE; RESET ROLE; -- Clean up DROP ROLE regress_create_schema_role; libpg_query-17-6.1.0/test/sql/postgres_regress/create_table.sql000066400000000000000000000717671477334012600246270ustar00rootroot00000000000000-- -- CREATE_TABLE -- -- Error cases CREATE TABLE unknowntab ( u unknown -- fail ); CREATE TYPE unknown_comptype AS ( u unknown -- fail ); -- 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 -- 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+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); CREATE TABLE hpart_4 PARTITION OF hash_parted FOR VALUES WITH (MODULUS 10, REMAINDER 3); -- modulus 25 is factor of modulus of 50 but 10 is not a 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 a factor of next modulus 200. CREATE TABLE fail_part PARTITION OF hash_parted FOR VALUES WITH (MODULUS 150, REMAINDER 3); -- overlapping remainders CREATE TABLE fail_part PARTITION OF hash_parted FOR VALUES WITH (MODULUS 100, 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 (-1) TO (1); 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 conname, conislocal, coninhcount FROM pg_constraint WHERE conrelid = 'part_b'::regclass ORDER BY coninhcount DESC, conname; -- 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 conname, conislocal, coninhcount FROM pg_constraint WHERE conrelid = 'part_b'::regclass ORDER BY coninhcount DESC, conname; -- 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 conname, conislocal, coninhcount FROM pg_constraint WHERE conrelid = 'part_b'::regclass ORDER BY coninhcount DESC, conname; -- 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 overridden, 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 non-matching collations for partition bound -- expressions are coerced to the right collation create table test_part_coll_posix (a text) partition by range (a collate "POSIX"); -- ok, collation is implicitly coerced create table test_part_coll partition of test_part_coll_posix for values from ('a' collate "C") to ('g'); -- ok create table test_part_coll2 partition of test_part_coll_posix for values from ('g') to ('m'); -- ok, collation is implicitly coerced create table test_part_coll_cast partition of test_part_coll_posix for values from (name 'm' collate "C") 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; -- specifying storage parameters for partitioned tables is not supported CREATE TABLE parted_col_comment (a int, b text) PARTITION BY LIST (a) WITH (fillfactor=100); -- 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-17-6.1.0/test/sql/postgres_regress/create_table_like.sql000066400000000000000000000223001477334012600256060ustar00rootroot00000000000000/* 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 -- Test updating of column numbers in statistics expressions (bug #18468) CREATE TABLE test_like_6 (a int, c text, b text); CREATE STATISTICS ext_stat ON (a || b) FROM test_like_6; ALTER TABLE test_like_6 DROP COLUMN c; CREATE TABLE test_like_6c (LIKE test_like_6 INCLUDING ALL); \d+ test_like_6c 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; DROP TABLE test_like_6, test_like_6c; 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; CREATE STATISTICS ctlt1_expr_stat ON (a || b) FROM ctlt1; COMMENT ON STATISTICS ctlt1_a_b_stat IS 'ab stats'; COMMENT ON STATISTICS ctlt1_expr_stat IS 'ab expr 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-17-6.1.0/test/sql/postgres_regress/create_type.sql000066400000000000000000000203471477334012600245050ustar00rootroot00000000000000-- -- CREATE_TYPE -- -- directory path and dlsuffix are passed to us in environment variables \getenv libdir PG_LIBDIR \getenv dlsuffix PG_DLSUFFIX \set regresslib :libdir '/regress' :dlsuffix -- -- Test the "old style" approach of making the I/O functions first, -- with no explicit shell type creation. -- CREATE FUNCTION widget_in(cstring) RETURNS widget AS :'regresslib' LANGUAGE C STRICT IMMUTABLE; CREATE FUNCTION widget_out(widget) RETURNS cstring AS :'regresslib' LANGUAGE C STRICT IMMUTABLE; CREATE FUNCTION int44in(cstring) RETURNS city_budget AS :'regresslib' LANGUAGE C STRICT IMMUTABLE; CREATE FUNCTION int44out(city_budget) RETURNS cstring AS :'regresslib' LANGUAGE C STRICT IMMUTABLE; 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 non-error-throwing APIs using widget, which still throws errors SELECT pg_input_is_valid('(1,2,3)', 'widget'); SELECT pg_input_is_valid('(1,2)', 'widget'); -- hard error expected SELECT pg_input_is_valid('{"(1,2,3)"}', 'widget[]'); SELECT pg_input_is_valid('{"(1,2)"}', 'widget[]'); -- hard error expected SELECT pg_input_is_valid('("(1,2,3)")', 'mytab'); SELECT pg_input_is_valid('("(1,2)")', 'mytab'); -- hard error expected -- Test creation of an operator over a user-defined type CREATE FUNCTION pt_in_widget(point, widget) RETURNS bool AS :'regresslib' LANGUAGE C STRICT; CREATE OPERATOR <% ( leftarg = point, rightarg = widget, procedure = pt_in_widget, commutator = >% , negator = >=% ); SELECT point '(1,2)' <% widget '(0,0,3)' AS t, point '(1,2)' <% widget '(0,0,1)' AS f; -- exercise city_budget type CREATE TABLE city ( name name, location box, budget city_budget ); INSERT INTO city VALUES ('Podunk', '(1,2),(3,4)', '100,127,1000'), ('Gotham', '(1000,34),(1100,334)', '123456,127,-1000,6789'); TABLE city; -- -- 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, -- these are bogus, but it's safe as long as we don't use the type: analyze = ts_typanalyze, subscript = raw_array_subscript_handler ); SELECT typinput, typoutput, typreceive, typsend, typmodin, typmodout, typanalyze, typsubscript, typstorage FROM pg_type WHERE typname = 'myvarchar'; SELECT typinput, typoutput, typreceive, typsend, typmodin, typmodout, typanalyze, typsubscript, typstorage FROM pg_type WHERE typname = '_myvarchar'; SELECT typinput, typoutput, typreceive, typsend, typmodin, typmodout, typanalyze, typsubscript, typstorage FROM pg_type WHERE typname = 'myvarchardom'; SELECT typinput, typoutput, typreceive, typsend, typmodin, typmodout, typanalyze, typsubscript, 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-17-6.1.0/test/sql/postgres_regress/create_view.sql000066400000000000000000000642141477334012600244770ustar00rootroot00000000000000-- -- CREATE_VIEW -- Virtual class definitions -- (this also tests the query rewrite system) -- -- directory paths and dlsuffix are passed to us in environment variables \getenv abs_srcdir PG_ABS_SRCDIR \getenv libdir PG_LIBDIR \getenv dlsuffix PG_DLSUFFIX \set regresslib :libdir '/regress' :dlsuffix CREATE FUNCTION interpt_pp(path, path) RETURNS point AS :'regresslib' LANGUAGE C STRICT; CREATE TABLE real_city ( pop int4, cname text, outline path ); \set filename :abs_srcdir '/data/real_city.data' COPY real_city FROM :'filename'; ANALYZE real_city; SELECT * INTO TABLE ramp FROM ONLY road WHERE name ~ '.*Ramp'; 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, c numeric(10,1), d text COLLATE "C"); COPY viewtest_tbl FROM stdin; 5 10 1.1 xy 10 15 2.2 xyz 15 20 3.3 xyzz 20 25 4.4 xyzzy \. 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, c, d 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, c, d FROM viewtest_tbl; -- should fail CREATE OR REPLACE VIEW viewtest AS SELECT a, b, c::numeric(10,2), d FROM viewtest_tbl; -- should fail CREATE OR REPLACE VIEW viewtest AS SELECT a, b, c, d COLLATE "POSIX" FROM viewtest_tbl; -- should work CREATE OR REPLACE VIEW viewtest AS SELECT a, b, c, d, 0 AS e 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; CREATE VIEW mysecview7 WITH (security_invoker=true) AS SELECT * FROM tbl1 WHERE a = 100; CREATE VIEW mysecview8 WITH (security_invoker=false, security_barrier=true) AS SELECT * FROM tbl1 WHERE a > 100; CREATE VIEW mysecview9 WITH (security_invoker) AS SELECT * FROM tbl1 WHERE a < 100; CREATE VIEW mysecview10 WITH (security_invoker=100) -- 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, 'mysecview7'::regclass, 'mysecview8'::regclass, 'mysecview9'::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; CREATE OR REPLACE VIEW mysecview7 AS SELECT * FROM tbl1 WHERE a > 256; CREATE OR REPLACE VIEW mysecview8 WITH (security_invoker=true) AS SELECT * FROM tbl1 WHERE a < 256; CREATE OR REPLACE VIEW mysecview9 WITH (security_invoker=false, security_barrier=true) 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, 'mysecview7'::regclass, 'mysecview8'::regclass, 'mysecview9'::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 correct deparsing of ORDER BY when there is an output name conflict create view aliased_order_by as select x1 as x2, x2 as x1, x3 from tt1 order by x2; -- this is interpreted per SQL92, so really ordering by x1 \d+ aliased_order_by alter view aliased_order_by rename column x1 to x0; \d+ aliased_order_by alter view aliased_order_by rename column x3 to x1; \d+ aliased_order_by -- 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 create table tbl1a (a int, c int); create view view_of_joins_2a as select * from tbl1 join tbl1a using (a); create view view_of_joins_2b as select * from tbl1 join tbl1a using (a) as x; create view view_of_joins_2c as select * from (tbl1 join tbl1a using (a)) as y; create view view_of_joins_2d as select * from (tbl1 join tbl1a using (a) as x) as y; select pg_get_viewdef('view_of_joins_2a', true); select pg_get_viewdef('view_of_joins_2b', true); select pg_get_viewdef('view_of_joins_2c', true); select pg_get_viewdef('view_of_joins_2d', true); -- 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; alter table tt14t drop column f3; -- fail, view has explicit reference to f3 -- We used to have a bug that would allow the above to succeed, posing -- hazards for later execution of the view. Check that the internal -- defenses for those hazards haven't bit-rotted, in case some other -- bug with similar symptoms emerges. begin; -- destroy the dependency entry that prevents the DROP: delete from pg_depend where objid = (select oid from pg_rewrite where ev_class = 'tt14v'::regclass and rulename = '_RETURN') and refobjsubid = 3 returning pg_describe_object(classid, objid, objsubid) as obj, pg_describe_object(refclassid, refobjid, refobjsubid) as ref, deptype; -- this will now succeed: alter table tt14t drop column f3; -- column f3 is still in the view, sort of ... select pg_get_viewdef('tt14v', true); -- ... and you can even EXPLAIN it ... explain (verbose, costs off) select * from tt14v; -- but it will fail at execution select f1, f4 from tt14v; select * from tt14v; rollback; -- likewise, altering a referenced column's type is prohibited ... alter table tt14t alter column f4 type integer using f4::integer; -- fail -- ... but some bug might let it happen, so check defenses begin; -- destroy the dependency entry that prevents the ALTER: delete from pg_depend where objid = (select oid from pg_rewrite where ev_class = 'tt14v'::regclass and rulename = '_RETURN') and refobjsubid = 4 returning pg_describe_object(classid, objid, objsubid) as obj, pg_describe_object(refclassid, refobjid, refobjsubid) as ref, deptype; -- this will now succeed: 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; drop view tt14v; create view tt14v as select t.f1, t.f4 from tt14f() t; select pg_get_viewdef('tt14v', true); select * from tt14v; alter table tt14t drop column f3; -- ok select pg_get_viewdef('tt14v', true); explain (verbose, costs off) select * from tt14v; select * from tt14v; -- 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)); create table tt15v_log(o tt15v, n tt15v, incr bool); create rule updlog as on update to tt15v do also insert into tt15v_log values(old, new, row(old,old) < row(new,new)); \d+ tt15v -- 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); -- reverse-listing of various special function syntaxes required by SQL create view tt201v as select ('2022-12-01'::date + '1 day'::interval) at time zone 'UTC' as atz, extract(day from now()) as extr, (now(), '1 day'::interval) overlaps (current_timestamp(2), '1 day'::interval) as o, 'foo' is normalized isn, 'foo' is nfkc normalized isnn, normalize('foo') as n, normalize('foo', nfkd) as nfkd, overlay('foo' placing 'bar' from 2) as ovl, overlay('foo' placing 'bar' from 2 for 3) as ovl2, position('foo' in 'foobar') as p, substring('foo' from 2 for 3) as s, substring('foo' similar 'f' escape '#') as ss, substring('foo' from 'oo') as ssf, -- historically-permitted abuse trim(' ' from ' foo ') as bt, trim(leading ' ' from ' foo ') as lt, trim(trailing ' foo ') as rt, trim(E'\\000'::bytea from E'\\000Tom\\000'::bytea) as btb, trim(leading E'\\000'::bytea from E'\\000Tom\\000'::bytea) as ltb, trim(trailing E'\\000'::bytea from E'\\000Tom\\000'::bytea) as rtb, CURRENT_DATE as cd, (select * from CURRENT_DATE) as cd2, CURRENT_TIME as ct, (select * from CURRENT_TIME) as ct2, CURRENT_TIME (1) as ct3, (select * from CURRENT_TIME (1)) as ct4, CURRENT_TIMESTAMP as ct5, (select * from CURRENT_TIMESTAMP) as ct6, CURRENT_TIMESTAMP (1) as ct7, (select * from CURRENT_TIMESTAMP (1)) as ct8, LOCALTIME as lt1, (select * from LOCALTIME) as lt2, LOCALTIME (1) as lt3, (select * from LOCALTIME (1)) as lt4, LOCALTIMESTAMP as lt5, (select * from LOCALTIMESTAMP) as lt6, LOCALTIMESTAMP (1) as lt7, (select * from LOCALTIMESTAMP (1)) as lt8, CURRENT_CATALOG as ca, (select * from CURRENT_CATALOG) as ca2, CURRENT_ROLE as cr, (select * from CURRENT_ROLE) as cr2, CURRENT_SCHEMA as cs, (select * from CURRENT_SCHEMA) as cs2, CURRENT_USER as cu, (select * from CURRENT_USER) as cu2, USER as us, (select * from USER) as us2, SESSION_USER seu, (select * from SESSION_USER) as seu2, SYSTEM_USER as su, (select * from SYSTEM_USER) as su2; select pg_get_viewdef('tt201v', 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); -- test restriction on non-system view expansion. create table tt27v_tbl (a int); create view tt27v as select a from tt27v_tbl; set restrict_nonsystem_relation_kind to 'view'; select a from tt27v where a > 0; -- Error insert into tt27v values (1); -- Error select viewname from pg_views where viewname = 'tt27v'; -- Ok to access a system view. reset restrict_nonsystem_relation_kind; -- clean up all the random objects we made above DROP SCHEMA temp_view_test CASCADE; DROP SCHEMA testviewschm2 CASCADE; libpg_query-17-6.1.0/test/sql/postgres_regress/database.sql000066400000000000000000000016341477334012600237430ustar00rootroot00000000000000CREATE DATABASE regression_tbd ENCODING utf8 LC_COLLATE "C" LC_CTYPE "C" TEMPLATE template0; ALTER DATABASE regression_tbd RENAME TO regression_utf8; ALTER DATABASE regression_utf8 SET TABLESPACE regress_tblspace; ALTER DATABASE regression_utf8 RESET TABLESPACE; ALTER DATABASE regression_utf8 CONNECTION_LIMIT 123; -- Test PgDatabaseToastTable. Doing this with GRANT would be slow. BEGIN; UPDATE pg_database SET datacl = array_fill(makeaclitem(10, 10, 'USAGE', false), ARRAY[5e5::int]) WHERE datname = 'regression_utf8'; -- load catcache entry, if nothing else does ALTER DATABASE regression_utf8 RESET TABLESPACE; ROLLBACK; CREATE ROLE regress_datdba_before; CREATE ROLE regress_datdba_after; ALTER DATABASE regression_utf8 OWNER TO regress_datdba_before; REASSIGN OWNED BY regress_datdba_before TO regress_datdba_after; DROP DATABASE regression_utf8; DROP ROLE regress_datdba_before; DROP ROLE regress_datdba_after; libpg_query-17-6.1.0/test/sql/postgres_regress/date.sql000066400000000000000000000271061477334012600231160ustar00rootroot00000000000000-- -- 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'); INSERT INTO DATE_TBL VALUES ('2040-04-10 BC'); SELECT f1 FROM DATE_TBL; SELECT f1 FROM DATE_TBL WHERE f1 < '2000-01-01'; SELECT f1 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 -- Test non-error-throwing API SELECT pg_input_is_valid('now', 'date'); SELECT pg_input_is_valid('garbage', 'date'); SELECT pg_input_is_valid('6874898-01-01', 'date'); SELECT * FROM pg_input_error_info('garbage', 'date'); SELECT * FROM pg_input_error_info('6874898-01-01', 'date'); 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! -- SELECT f1 as "date", date_part('year', f1) AS year, date_part('month', f1) AS month, date_part('day', f1) AS day, date_part('quarter', f1) AS quarter, date_part('decade', f1) AS decade, date_part('century', f1) AS century, date_part('millennium', f1) AS millennium, date_part('isoyear', f1) AS isoyear, date_part('week', f1) AS week, date_part('dow', f1) AS dow, date_part('isodow', f1) AS isodow, date_part('doy', f1) AS doy, date_part('julian', f1) AS julian, date_part('epoch', f1) AS epoch FROM date_tbl; -- -- epoch -- SELECT EXTRACT(EPOCH FROM DATE '1970-01-01'); -- 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 -- -- all possible fields -- SELECT EXTRACT(MICROSECONDS FROM DATE '2020-08-11'); SELECT EXTRACT(MILLISECONDS FROM DATE '2020-08-11'); SELECT EXTRACT(SECOND FROM DATE '2020-08-11'); SELECT EXTRACT(MINUTE FROM DATE '2020-08-11'); SELECT EXTRACT(HOUR FROM DATE '2020-08-11'); SELECT EXTRACT(DAY FROM DATE '2020-08-11'); SELECT EXTRACT(MONTH FROM DATE '2020-08-11'); SELECT EXTRACT(YEAR FROM DATE '2020-08-11'); SELECT EXTRACT(YEAR FROM DATE '2020-08-11 BC'); SELECT EXTRACT(DECADE FROM DATE '2020-08-11'); SELECT EXTRACT(CENTURY FROM DATE '2020-08-11'); SELECT EXTRACT(MILLENNIUM FROM DATE '2020-08-11'); SELECT EXTRACT(ISOYEAR FROM DATE '2020-08-11'); SELECT EXTRACT(ISOYEAR FROM DATE '2020-08-11 BC'); SELECT EXTRACT(QUARTER FROM DATE '2020-08-11'); SELECT EXTRACT(WEEK FROM DATE '2020-08-11'); SELECT EXTRACT(DOW FROM DATE '2020-08-11'); SELECT EXTRACT(DOW FROM DATE '2020-08-16'); SELECT EXTRACT(ISODOW FROM DATE '2020-08-11'); SELECT EXTRACT(ISODOW FROM DATE '2020-08-16'); SELECT EXTRACT(DOY FROM DATE '2020-08-11'); SELECT EXTRACT(TIMEZONE FROM DATE '2020-08-11'); SELECT EXTRACT(TIMEZONE_M FROM DATE '2020-08-11'); SELECT EXTRACT(TIMEZONE_H FROM DATE '2020-08-11'); SELECT EXTRACT(EPOCH FROM DATE '2020-08-11'); SELECT EXTRACT(JULIAN FROM DATE '2020-08-11'); -- -- 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); select 'infinity'::date = '+infinity'::date as t; -- -- oscillating fields from non-finite date: -- SELECT EXTRACT(DAY FROM DATE 'infinity'); -- NULL SELECT EXTRACT(DAY FROM DATE '-infinity'); -- NULL -- all supported fields 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 -- -- monotonic fields from non-finite date: -- SELECT EXTRACT(EPOCH FROM DATE 'infinity'); -- Infinity SELECT EXTRACT(EPOCH FROM DATE '-infinity'); -- -Infinity -- all supported 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 -- 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(0, 7, 15); 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-17-6.1.0/test/sql/postgres_regress/dbsize.sql000066400000000000000000000061061477334012600234560ustar00rootroot00000000000000SELECT 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); -- test where units change up SELECT size, pg_size_pretty(size), pg_size_pretty(-1 * size) FROM (VALUES (10239::bigint), (10240::bigint), (10485247::bigint), (10485248::bigint), (10736893951::bigint), (10736893952::bigint), (10994579406847::bigint), (10994579406848::bigint), (11258449312612351::bigint), (11258449312612352::bigint)) x(size); SELECT size, pg_size_pretty(size), pg_size_pretty(-1 * size) FROM (VALUES (10239::numeric), (10240::numeric), (10485247::numeric), (10485248::numeric), (10736893951::numeric), (10736893952::numeric), (10994579406847::numeric), (10994579406848::numeric), (11258449312612351::numeric), (11258449312612352::numeric), (11528652096115048447::numeric), (11528652096115048448::numeric)) x(size); -- Ensure we get the expected results when passing the extremities of bigint SELECT pg_size_pretty('-9223372036854775808'::bigint), pg_size_pretty('9223372036854775807'::bigint); -- pg_size_bytes() tests SELECT size, pg_size_bytes(size) FROM (VALUES ('1'), ('123bytes'), ('256 B'), ('1kB'), ('1MB'), (' 1 GB'), ('1.5 GB '), ('1TB'), ('3000 TB'), ('1e6 MB'), ('99 PB')) 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'), ('99 pb')) 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'), ('-99 PB')) 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-17-6.1.0/test/sql/postgres_regress/delete.sql000066400000000000000000000012371477334012600234400ustar00rootroot00000000000000CREATE 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-17-6.1.0/test/sql/postgres_regress/dependency.sql000066400000000000000000000070701477334012600243150ustar00rootroot00000000000000-- -- 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, MAINTAIN 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-17-6.1.0/test/sql/postgres_regress/domain.sql000066400000000000000000000630361477334012600234520ustar00rootroot00000000000000-- -- 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 pg_typeof(coalesce(4::domainint4, 7)); select pg_typeof(coalesce(4::domainint4, 7::domainint4)); drop table basictest; drop domain domainvarchar restrict; drop domain domainnumeric restrict; drop domain domainint4 restrict; drop domain domaintext; -- Test non-error-throwing input create domain positiveint int4 check(value > 0); create domain weirdfloat float8 check((1 / value) < 10); select pg_input_is_valid('1', 'positiveint'); select pg_input_is_valid('junk', 'positiveint'); select pg_input_is_valid('-1', 'positiveint'); select * from pg_input_error_info('junk', 'positiveint'); select * from pg_input_error_info('-1', 'positiveint'); select * from pg_input_error_info('junk', 'weirdfloat'); select * from pg_input_error_info('0.01', 'weirdfloat'); -- We currently can't trap errors raised in the CHECK expression itself select * from pg_input_error_info('0', 'weirdfloat'); drop domain positiveint; drop domain weirdfloat; -- 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 create function makedcomp(r float8, i float8) returns dcomptype as 'select row(r, i)' language sql; select makedcomp(1,2); select makedcomp(2,1); -- fail select * from makedcomp(1,2) m; select m, m is not null from makedcomp(1,2) m; drop function makedcomp(float8, float8); 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 arrays over domains of composite create type comptype as (cf1 int, cf2 int); create domain dcomptype as comptype check ((value).cf1 > 0); create table dcomptable (f1 dcomptype[]); insert into dcomptable values (null); update dcomptable set f1[1].cf2 = 5; table dcomptable; update dcomptable set f1[1].cf1 = -1; -- fail update dcomptable set f1[1].cf1 = 1; table dcomptable; -- if there's no constraints, a different code path is taken: alter domain dcomptype drop constraint dcomptype_check; update dcomptable set f1[1].cf1 = -1; -- now ok table dcomptable; drop table dcomptable; drop type comptype 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; update domnotnull set col1 = 5; -- these constraints can also be added and removed by name alter domain dnotnulltest add constraint dnotnulltest_notnull not null; update domnotnull set col1 = null; -- fails select conname, pg_get_constraintdef(oid) from pg_constraint where contypid = 'dnotnulltest'::regtype; alter domain dnotnulltest drop constraint dnotnulltest_notnull; 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); \dD con 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; -- not-null constraints create domain connotnull integer; create table domconnotnulltest ( col1 connotnull , col2 connotnull ); insert into domconnotnulltest default values; alter domain connotnull add not null; -- fails update domconnotnulltest set col1 = 5; alter domain connotnull add not null; -- fails update domconnotnulltest set col2 = 6; alter domain connotnull add constraint constr1 not null; select count(*) from pg_constraint where contypid = 'connotnull'::regtype and contype = 'n'; alter domain connotnull add constraint constr1bis not null; -- redundant select count(*) from pg_constraint where contypid = 'connotnull'::regtype and contype = 'n'; \dD connotnull update domconnotnulltest set col1 = null; -- fails alter domain connotnull drop constraint constr1; update domconnotnulltest set col1 = null; drop domain connotnull cascade; drop table domconnotnulltest; -- 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; -- -- Get the base type of a domain -- create domain mytext as text; create domain mytext_child_1 as mytext; select pg_basetype('mytext'::regtype); select pg_basetype('mytext_child_1'::regtype); select pg_basetype(1); -- expect NULL not error drop domain mytext cascade; -- -- Information schema -- SELECT * FROM information_schema.column_domain_usage WHERE domain_name IN ('con', 'dom', 'pos_int', 'things') ORDER BY domain_name; SELECT * FROM information_schema.domain_constraints WHERE domain_name IN ('con', 'dom', 'pos_int', 'things') ORDER BY constraint_name; SELECT * FROM information_schema.domains WHERE domain_name IN ('con', 'dom', 'pos_int', 'things') ORDER BY domain_name; SELECT * FROM information_schema.check_constraints WHERE (constraint_schema, constraint_name) IN (SELECT constraint_schema, constraint_name FROM information_schema.domain_constraints WHERE domain_name IN ('con', 'dom', 'pos_int', 'things')) ORDER BY constraint_name; libpg_query-17-6.1.0/test/sql/postgres_regress/drop_if_exists.sql000066400000000000000000000213431477334012600252170ustar00rootroot00000000000000-- -- 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-17-6.1.0/test/sql/postgres_regress/drop_operator.sql000066400000000000000000000025271477334012600250600ustar00rootroot00000000000000CREATE 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-17-6.1.0/test/sql/postgres_regress/enum.sql000066400000000000000000000227271477334012600231510ustar00rootroot00000000000000-- -- 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; -- Also try it with non-error-throwing API SELECT pg_input_is_valid('red', 'rainbow'); SELECT pg_input_is_valid('mauve', 'rainbow'); SELECT * FROM pg_input_error_info('mauve', 'rainbow'); \x SELECT * FROM pg_input_error_info(repeat('too_long', 32), 'rainbow'); \x -- -- 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; -- we must allow this usage to support pg_dump in binary upgrade mode 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); 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-17-6.1.0/test/sql/postgres_regress/equivclass.sql000066400000000000000000000212701477334012600243540ustar00rootroot00000000000000-- -- 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-17-6.1.0/test/sql/postgres_regress/errors.sql000066400000000000000000000137271477334012600235210ustar00rootroot00000000000000-- -- 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; -- grouping with FOR UPDATE select null from pg_database group by datname for update; select null from pg_database group by grouping sets (()) for update; -- -- 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 student; -- 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-17-6.1.0/test/sql/postgres_regress/event_trigger.sql000066400000000000000000000475151477334012600250530ustar00rootroot00000000000000-- 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; -- Event triggers on relations. 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 OR REPLACE FUNCTION event_trigger_report_end() RETURNS event_trigger LANGUAGE plpgsql AS $$ DECLARE r RECORD; BEGIN FOR r IN SELECT * FROM pg_event_trigger_ddl_commands() LOOP RAISE NOTICE 'END: command_tag=% type=% identity=%', r.command_tag, r.object_type, r.object_identity; END LOOP; END; $$; CREATE EVENT TRIGGER regress_event_trigger_report_end ON ddl_command_end EXECUTE PROCEDURE event_trigger_report_end(); CREATE SCHEMA evttrig CREATE TABLE one (col_a SERIAL PRIMARY KEY, col_b text DEFAULT 'forty two', col_c SERIAL) CREATE INDEX one_idx ON one (col_b) CREATE TABLE two (col_c INTEGER CHECK (col_c > 0) REFERENCES one DEFAULT 42) CREATE TABLE id (col_d int NOT NULL GENERATED ALWAYS AS IDENTITY); -- 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; ALTER TABLE evttrig.one DROP COLUMN col_c; ALTER TABLE evttrig.id ALTER COLUMN col_d SET DATA TYPE bigint; ALTER TABLE evttrig.id ALTER COLUMN col_d DROP IDENTITY, ALTER COLUMN col_d SET DATA TYPE int; DROP INDEX evttrig.one_idx; DROP SCHEMA evttrig CASCADE; DROP TABLE a_temp_tbl; -- CREATE OPERATOR CLASS without FAMILY clause should report -- both CREATE OPERATOR FAMILY and CREATE OPERATOR CLASS CREATE OPERATOR CLASS evttrigopclass FOR TYPE int USING btree AS STORAGE int; DROP EVENT TRIGGER regress_event_trigger_report_dropped; DROP EVENT TRIGGER regress_event_trigger_report_end; -- 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); -- matview rewrite when changing access method CREATE MATERIALIZED VIEW heapmv USING heap AS SELECT 1 AS a; ALTER MATERIALIZED VIEW heapmv SET ACCESS METHOD heap2; DROP MATERIALIZED VIEW heapmv; -- 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(); -- Tests for REINDEX CREATE OR REPLACE FUNCTION reindex_start_command() RETURNS event_trigger AS $$ BEGIN RAISE NOTICE 'REINDEX START: % %', tg_event, tg_tag; END; $$ LANGUAGE plpgsql; CREATE EVENT TRIGGER regress_reindex_start ON ddl_command_start WHEN TAG IN ('REINDEX') EXECUTE PROCEDURE reindex_start_command(); CREATE FUNCTION reindex_end_command() RETURNS event_trigger AS $$ DECLARE obj record; BEGIN FOR obj IN SELECT * FROM pg_event_trigger_ddl_commands() LOOP RAISE NOTICE 'REINDEX END: command_tag=% type=% identity=%', obj.command_tag, obj.object_type, obj.object_identity; END LOOP; END; $$ LANGUAGE plpgsql; CREATE EVENT TRIGGER regress_reindex_end ON ddl_command_end WHEN TAG IN ('REINDEX') EXECUTE PROCEDURE reindex_end_command(); -- Extra event to force the use of a snapshot. CREATE FUNCTION reindex_end_command_snap() RETURNS EVENT_TRIGGER AS $$ BEGIN PERFORM 1; END $$ LANGUAGE plpgsql; CREATE EVENT TRIGGER regress_reindex_end_snap ON ddl_command_end EXECUTE FUNCTION reindex_end_command_snap(); -- With simple relation CREATE TABLE concur_reindex_tab (c1 int); CREATE INDEX concur_reindex_ind ON concur_reindex_tab (c1); -- Both start and end triggers enabled. REINDEX INDEX concur_reindex_ind; REINDEX TABLE concur_reindex_tab; REINDEX INDEX CONCURRENTLY concur_reindex_ind; REINDEX TABLE CONCURRENTLY concur_reindex_tab; -- with start trigger disabled. ALTER EVENT TRIGGER regress_reindex_start DISABLE; REINDEX INDEX concur_reindex_ind; REINDEX INDEX CONCURRENTLY concur_reindex_ind; -- without an index DROP INDEX concur_reindex_ind; REINDEX TABLE concur_reindex_tab; REINDEX TABLE CONCURRENTLY concur_reindex_tab; -- With a Schema CREATE SCHEMA concur_reindex_schema; -- No indexes REINDEX SCHEMA concur_reindex_schema; REINDEX SCHEMA CONCURRENTLY concur_reindex_schema; CREATE TABLE concur_reindex_schema.tab (a int); CREATE INDEX ind ON concur_reindex_schema.tab (a); -- One index reported REINDEX SCHEMA concur_reindex_schema; REINDEX SCHEMA CONCURRENTLY concur_reindex_schema; -- One table on schema but no indexes DROP INDEX concur_reindex_schema.ind; REINDEX SCHEMA concur_reindex_schema; REINDEX SCHEMA CONCURRENTLY concur_reindex_schema; DROP SCHEMA concur_reindex_schema CASCADE; -- With a partitioned table, and nothing else. CREATE TABLE concur_reindex_part (id int) PARTITION BY RANGE (id); REINDEX TABLE concur_reindex_part; REINDEX TABLE CONCURRENTLY concur_reindex_part; -- Partition that would be reindexed, still nothing. CREATE TABLE concur_reindex_child PARTITION OF concur_reindex_part FOR VALUES FROM (0) TO (10); REINDEX TABLE concur_reindex_part; REINDEX TABLE CONCURRENTLY concur_reindex_part; -- Now add some indexes. CREATE INDEX concur_reindex_partidx ON concur_reindex_part (id); REINDEX INDEX concur_reindex_partidx; REINDEX INDEX CONCURRENTLY concur_reindex_partidx; REINDEX TABLE concur_reindex_part; REINDEX TABLE CONCURRENTLY concur_reindex_part; DROP TABLE concur_reindex_part; -- Clean up DROP EVENT TRIGGER regress_reindex_start; DROP EVENT TRIGGER regress_reindex_end; DROP EVENT TRIGGER regress_reindex_end_snap; DROP FUNCTION reindex_end_command(); DROP FUNCTION reindex_end_command_snap(); DROP FUNCTION reindex_start_command(); DROP TABLE concur_reindex_tab; -- 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; -- Check the GUC for disabling event triggers CREATE FUNCTION test_event_trigger_guc() RETURNS event_trigger LANGUAGE plpgsql AS $$ DECLARE obj record; BEGIN FOR obj IN SELECT * FROM pg_event_trigger_dropped_objects() LOOP RAISE NOTICE '% dropped %', tg_tag, obj.object_type; END LOOP; END; $$; CREATE EVENT TRIGGER test_event_trigger_guc ON sql_drop WHEN TAG IN ('DROP POLICY') EXECUTE FUNCTION test_event_trigger_guc(); SET event_triggers = 'on'; CREATE POLICY pguc ON event_trigger_test USING (FALSE); DROP POLICY pguc ON event_trigger_test; CREATE POLICY pguc ON event_trigger_test USING (FALSE); SET event_triggers = 'off'; DROP POLICY pguc ON event_trigger_test; libpg_query-17-6.1.0/test/sql/postgres_regress/event_trigger_login.sql000066400000000000000000000013131477334012600262250ustar00rootroot00000000000000-- Login event triggers CREATE TABLE user_logins(id serial, who text); GRANT SELECT ON user_logins TO public; CREATE FUNCTION on_login_proc() RETURNS event_trigger AS $$ BEGIN INSERT INTO user_logins (who) VALUES (SESSION_USER); RAISE NOTICE 'You are welcome!'; END; $$ LANGUAGE plpgsql; CREATE EVENT TRIGGER on_login_trigger ON login EXECUTE PROCEDURE on_login_proc(); ALTER EVENT TRIGGER on_login_trigger ENABLE ALWAYS; \c SELECT COUNT(*) FROM user_logins; \c SELECT COUNT(*) FROM user_logins; -- Check dathasloginevt in system catalog SELECT dathasloginevt FROM pg_database WHERE datname= :'DBNAME'; -- Cleanup DROP TABLE user_logins; DROP EVENT TRIGGER on_login_trigger; DROP FUNCTION on_login_proc(); \c libpg_query-17-6.1.0/test/sql/postgres_regress/explain.sql000066400000000000000000000147351477334012600236450ustar00rootroot00000000000000-- -- 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; $$; -- Disable JIT, or we'll get different output on machines where that's been -- forced on set jit = off; -- Similarly, disable track_io_timing, to avoid output differences when -- enabled. set track_io_timing = off; -- 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 xml) select * from int8_tbl i8'); select explain_filter('explain (analyze, serialize, 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'); -- Check output including I/O timings. These fields are conditional -- but always set in JSON format, so check them only in this case. set track_io_timing = on; select explain_filter('explain (analyze, buffers, format json) select * from int8_tbl i8'); set track_io_timing = off; -- 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; -- GENERIC_PLAN option select explain_filter('explain (generic_plan) select unique1 from tenk1 where thousand = $1'); -- should fail select explain_filter('explain (analyze, generic_plan) select unique1 from tenk1 where thousand = $1'); -- MEMORY option select explain_filter('explain (memory) select * from int8_tbl i8'); select explain_filter('explain (memory, analyze) select * from int8_tbl i8'); select explain_filter('explain (memory, summary, format yaml) select * from int8_tbl i8'); select explain_filter('explain (memory, analyze, format json) select * from int8_tbl i8'); prepare int8_query as select * from int8_tbl i8; select explain_filter('explain (memory) execute int8_query'); -- Test EXPLAIN (GENERIC_PLAN) with partition pruning -- partitions should be pruned at plan time, based on constants, -- but there should be no pruning based on parameter placeholders create table gen_part ( key1 integer not null, key2 integer not null ) partition by list (key1); create table gen_part_1 partition of gen_part for values in (1) partition by range (key2); create table gen_part_1_1 partition of gen_part_1 for values from (1) to (2); create table gen_part_1_2 partition of gen_part_1 for values from (2) to (3); create table gen_part_2 partition of gen_part for values in (2); -- should scan gen_part_1_1 and gen_part_1_2, but not gen_part_2 select explain_filter('explain (generic_plan) select key1, key2 from gen_part where key1 = 1 and key2 = $1'); drop table gen_part; -- -- 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. begin; -- 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; -- Test display of temporary objects create temp table t1(f1 float8); create function pg_temp.mysin(float8) returns float8 language plpgsql as 'begin return sin($1); end'; select explain_filter('explain (verbose) select * from t1 where pg_temp.mysin(f1) < 0.5'); -- Test compute_query_id set compute_query_id = on; select explain_filter('explain (verbose) select * from int8_tbl i8'); -- Test SERIALIZE option select explain_filter('explain (analyze,serialize) select * from int8_tbl i8'); select explain_filter('explain (analyze,serialize text,buffers,timing off) select * from int8_tbl i8'); select explain_filter('explain (analyze,serialize binary,buffers,timing) select * from int8_tbl i8'); -- this tests an edge case where we have no data to return select explain_filter('explain (analyze,serialize) create temp table explain_temp as select * from int8_tbl i8'); libpg_query-17-6.1.0/test/sql/postgres_regress/expressions.sql000066400000000000000000000146721477334012600245670ustar00rootroot00000000000000-- -- 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_time[stamp]/ localtime[stamp] (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; -- precision overflow SELECT current_time = current_time(7); SELECT current_timestamp = current_timestamp(7); SELECT localtime = localtime(7); SELECT localtimestamp = localtimestamp(7); -- current_role/user/user is tested in rolenames.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; -- -- Test parsing of a no-op cast to a type with unspecified typmod -- begin; create table numeric_tbl (f1 numeric(18,3), f2 numeric); create view numeric_view as select f1, f1::numeric(16,4) as f1164, f1::numeric as f1n, f2, f2::numeric(16,4) as f2164, f2::numeric as f2n from numeric_tbl; \d+ numeric_view explain (verbose, costs off) select * from numeric_view; -- bpchar, lacking planner support for its length coercion function, -- could behave differently create table bpchar_tbl (f1 character(16) unique, f2 bpchar); create view bpchar_view as select f1, f1::character(14) as f114, f1::bpchar as f1n, f2, f2::character(14) as f214, f2::bpchar as f2n from bpchar_tbl; \d+ bpchar_view explain (verbose, costs off) select * from bpchar_view where f1::bpchar = 'foo'; rollback; -- -- Ordinarily, IN/NOT IN can be converted to a ScalarArrayOpExpr -- with a suitably-chosen array type. -- explain (verbose, costs off) select random() IN (1, 4, 8.0); explain (verbose, costs off) select random()::int IN (1, 4, 8.0); -- However, if there's not a common supertype for the IN elements, -- we should instead try to produce "x = v1 OR x = v2 OR ...". -- In most cases that'll fail for lack of all the requisite = operators, -- but it can succeed sometimes. So this should complain about lack of -- an = operator, not about cast failure. select '(0,0)'::point in ('(0,0,0,0)'::box, point(0,0)); -- -- Tests for ScalarArrayOpExpr with a hashfn -- -- create a stable function so that the tests below are not -- evaluated using the planner's constant folding. begin; create function return_int_input(int) returns int as $$ begin return $1; end; $$ language plpgsql stable; create function return_text_input(text) returns text as $$ begin return $1; end; $$ language plpgsql stable; select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, null); select return_int_input(1) in (null, null, null, null, null, null, null, null, null, null, null); select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1, null); select return_int_input(null::int) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); select return_int_input(null::int) in (10, 9, 2, 8, 3, 7, 4, 6, 5, null); select return_text_input('a') in ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'); -- NOT IN select return_int_input(1) not in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); select return_int_input(1) not in (10, 9, 2, 8, 3, 7, 4, 6, 5, 0); select return_int_input(1) not in (10, 9, 2, 8, 3, 7, 4, 6, 5, 2, null); select return_int_input(1) not in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1, null); select return_int_input(1) not in (null, null, null, null, null, null, null, null, null, null, null); select return_int_input(null::int) not in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); select return_int_input(null::int) not in (10, 9, 2, 8, 3, 7, 4, 6, 5, null); select return_text_input('a') not in ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'); rollback; -- Test with non-strict equality function. -- We need to create our own type for this. begin; create type myint; create function myintin(cstring) returns myint strict immutable language internal as 'int4in'; create function myintout(myint) returns cstring strict immutable language internal as 'int4out'; create function myinthash(myint) returns integer strict immutable language internal as 'hashint4'; create type myint (input = myintin, output = myintout, like = int4); create cast (int4 as myint) without function; create cast (myint as int4) without function; create function myinteq(myint, myint) returns bool as $$ begin if $1 is null and $2 is null then return true; else return $1::int = $2::int; end if; end; $$ language plpgsql immutable; create function myintne(myint, myint) returns bool as $$ begin return not myinteq($1, $2); end; $$ language plpgsql immutable; create operator = ( leftarg = myint, rightarg = myint, commutator = =, negator = <>, procedure = myinteq, restrict = eqsel, join = eqjoinsel, merges ); create operator <> ( leftarg = myint, rightarg = myint, commutator = <>, negator = =, procedure = myintne, restrict = eqsel, join = eqjoinsel, merges ); create operator class myint_ops default for type myint using hash as operator 1 = (myint, myint), function 1 myinthash(myint); create table inttest (a myint); insert into inttest values(1::myint),(null); -- try an array with enough elements to cause hashing select * from inttest where a in (1::myint,2::myint,3::myint,4::myint,5::myint,6::myint,7::myint,8::myint,9::myint, null); select * from inttest where a not in (1::myint,2::myint,3::myint,4::myint,5::myint,6::myint,7::myint,8::myint,9::myint, null); select * from inttest where a not in (0::myint,2::myint,3::myint,4::myint,5::myint,6::myint,7::myint,8::myint,9::myint, null); -- ensure the result matched with the non-hashed version. We simply remove -- some array elements so that we don't reach the hashing threshold. select * from inttest where a in (1::myint,2::myint,3::myint,4::myint,5::myint, null); select * from inttest where a not in (1::myint,2::myint,3::myint,4::myint,5::myint, null); select * from inttest where a not in (0::myint,2::myint,3::myint,4::myint,5::myint, null); rollback; libpg_query-17-6.1.0/test/sql/postgres_regress/fast_default.sql000066400000000000000000000433451477334012600246450ustar00rootroot00000000000000-- -- 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; -- Test domains with default value for table rewrite. CREATE DOMAIN domain1 AS int DEFAULT 11; -- constant CREATE DOMAIN domain2 AS int DEFAULT random(min=>10, max=>100); -- volatile CREATE DOMAIN domain3 AS text DEFAULT foo(4); -- stable CREATE DOMAIN domain4 AS text[] DEFAULT ('{"This", "is", "' || foo(4) || '","the", "real", "world"}')::TEXT[]; CREATE TABLE t2 (a domain1); INSERT INTO t2 VALUES (1),(2); -- no table rewrite ALTER TABLE t2 ADD COLUMN b domain1 default 3; SELECT attnum, attname, atthasmissing, atthasdef, attmissingval FROM pg_attribute WHERE attnum > 0 AND attrelid = 't2'::regclass ORDER BY attnum; -- table rewrite should happen ALTER TABLE t2 ADD COLUMN c domain3 default left(random()::text,3); -- no table rewrite ALTER TABLE t2 ADD COLUMN d domain4; SELECT attnum, attname, atthasmissing, atthasdef, attmissingval FROM pg_attribute WHERE attnum > 0 AND attrelid = 't2'::regclass ORDER BY attnum; -- table rewrite should happen ALTER TABLE t2 ADD COLUMN e domain2; SELECT attnum, attname, atthasmissing, atthasdef, attmissingval FROM pg_attribute WHERE attnum > 0 AND attrelid = 't2'::regclass ORDER BY attnum; SELECT a, b, length(c) = 3 as c_ok, d, e >= 10 as e_ok FROM t2; DROP TABLE t2; DROP DOMAIN domain1; DROP DOMAIN domain2; DROP DOMAIN domain3; DROP DOMAIN domain4; 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(); -- check that we notice insertion of a volatile default argument CREATE FUNCTION foolme(timestamptz DEFAULT clock_timestamp()) RETURNS timestamptz IMMUTABLE AS 'select $1' LANGUAGE sql; ALTER TABLE T ADD COLUMN c3 timestamptz DEFAULT foolme(); SELECT attname, atthasmissing, attmissingval FROM pg_attribute WHERE attrelid = 't'::regclass AND attnum > 0 ORDER BY attnum; DROP TABLE T; DROP FUNCTION foolme(timestamptz); -- 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; -- verify that a default set on a non-plain table doesn't set a missing -- value on the attribute CREATE FOREIGN DATA WRAPPER dummy; CREATE SERVER s0 FOREIGN DATA WRAPPER dummy; CREATE FOREIGN TABLE ft1 (c1 integer NOT NULL) SERVER s0; ALTER FOREIGN TABLE ft1 ADD COLUMN c8 integer DEFAULT 0; ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10); SELECT count(*) FROM pg_attribute WHERE attrelid = 'ft1'::regclass AND (attmissingval IS NOT NULL OR atthasmissing); -- cleanup DROP FOREIGN TABLE ft1; DROP SERVER s0; DROP FOREIGN DATA WRAPPER dummy; 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-17-6.1.0/test/sql/postgres_regress/float4.sql000066400000000000000000000264731477334012600234000ustar00rootroot00000000000000-- -- 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'); -- Also try it with non-error-throwing API SELECT pg_input_is_valid('34.5', 'float4'); SELECT pg_input_is_valid('xyz', 'float4'); SELECT pg_input_is_valid('1e400', 'float4'); SELECT * FROM pg_input_error_info('1e400', 'float4'); -- 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 '42'::float4 / 'Infinity'::float4; SELECT 'nan'::float4 / 'nan'::float4; SELECT 'nan'::float4 / '0'::float4; SELECT 'nan'::numeric::float4; SELECT * FROM FLOAT4_TBL; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3'; SELECT f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1; SELECT f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3'; SELECT f.f1, f.f1 * '-10' AS x FROM FLOAT4_TBL f WHERE f.f1 > '0.0'; SELECT f.f1, f.f1 + '-10' AS x FROM FLOAT4_TBL f WHERE f.f1 > '0.0'; SELECT f.f1, f.f1 / '-10' AS x FROM FLOAT4_TBL f WHERE f.f1 > '0.0'; SELECT f.f1, f.f1 - '-10' AS x FROM FLOAT4_TBL f WHERE f.f1 > '0.0'; -- test divide by zero SELECT f.f1 / '0.0' from FLOAT4_TBL f; SELECT * FROM FLOAT4_TBL; -- test the unary float4abs operator SELECT 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 * 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-17-6.1.0/test/sql/postgres_regress/float8.sql000066400000000000000000000404251477334012600233750ustar00rootroot00000000000000-- -- FLOAT8 -- -- -- Build a table for testing -- (This temporarily hides the table created in test_setup.sql) -- CREATE TEMP 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'); -- Also try it with non-error-throwing API SELECT pg_input_is_valid('34.5', 'float8'); SELECT pg_input_is_valid('xyz', 'float8'); SELECT pg_input_is_valid('1e4000', 'float8'); SELECT * FROM pg_input_error_info('1e4000', 'float8'); -- 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 '42'::float8 / 'Infinity'::float8; SELECT 'nan'::float8 / 'nan'::float8; SELECT 'nan'::float8 / '0'::float8; SELECT 'nan'::numeric::float8; SELECT * FROM FLOAT8_TBL; SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3'; SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3'; SELECT f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1; SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 < '1004.3'; SELECT f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1; SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 <= '1004.3'; SELECT f.f1, f.f1 * '-10' AS x FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; SELECT f.f1, f.f1 + '-10' AS x FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; SELECT f.f1, f.f1 / '-10' AS x FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; SELECT f.f1, f.f1 - '-10' AS x FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; SELECT f.f1 ^ '2.0' AS square_f1 FROM FLOAT8_TBL f where f.f1 = '1004.3'; -- absolute value SELECT f.f1, @f.f1 AS abs_f1 FROM FLOAT8_TBL f; -- truncate SELECT f.f1, trunc(f.f1) AS trunc_f1 FROM FLOAT8_TBL f; -- round SELECT 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 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'); SELECT power(float8 'inf', float8 '0'); SELECT power(float8 '-inf', float8 '0'); SELECT power(float8 '0', float8 'inf'); SELECT power(float8 '0', float8 '-inf'); SELECT power(float8 '1', float8 'inf'); SELECT power(float8 '1', float8 '-inf'); SELECT power(float8 '-1', float8 'inf'); SELECT power(float8 '-1', float8 '-inf'); SELECT power(float8 '0.1', float8 'inf'); SELECT power(float8 '-0.1', float8 'inf'); SELECT power(float8 '1.1', float8 'inf'); SELECT power(float8 '-1.1', float8 'inf'); SELECT power(float8 '0.1', float8 '-inf'); SELECT power(float8 '-0.1', float8 '-inf'); SELECT power(float8 '1.1', float8 '-inf'); SELECT power(float8 '-1.1', float8 '-inf'); SELECT power(float8 'inf', float8 '-2'); SELECT power(float8 'inf', float8 '2'); SELECT power(float8 'inf', float8 'inf'); SELECT power(float8 'inf', float8 '-inf'); -- Intel's icc misoptimizes the code that controls the sign of this result, -- even with -mp1. Pending a fix for that, only test for "is it zero". SELECT power(float8 '-inf', float8 '-2') = '0'; SELECT power(float8 '-inf', float8 '-3'); SELECT power(float8 '-inf', float8 '2'); SELECT power(float8 '-inf', float8 '3'); SELECT power(float8 '-inf', float8 '3.5'); SELECT power(float8 '-inf', float8 'inf'); SELECT power(float8 '-inf', float8 '-inf'); -- take exp of ln(f.f1) SELECT f.f1, exp(ln(f.f1)) AS exp_ln_f1 FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; -- check edge cases for exp SELECT exp('inf'::float8), exp('-inf'::float8), exp('nan'::float8); -- cube root SELECT ||/ float8 '27' AS three; SELECT f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f; SELECT * FROM FLOAT8_TBL; UPDATE FLOAT8_TBL SET f1 = FLOAT8_TBL.f1 * '-1' WHERE FLOAT8_TBL.f1 > '0.0'; SELECT f.f1 * '1e200' from FLOAT8_TBL f; SELECT f.f1 ^ '1e200' from FLOAT8_TBL f; SELECT 0 ^ 0 + 0 ^ 1 + 0 ^ 0.0 + 0 ^ 0.5; SELECT ln(f.f1) from FLOAT8_TBL f where f.f1 = '0.0' ; SELECT ln(f.f1) from FLOAT8_TBL f where f.f1 < '0.0' ; SELECT exp(f.f1) from FLOAT8_TBL f; SELECT f.f1 / '0.0' from FLOAT8_TBL f; SELECT * 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'); -- error functions -- we run these with extra_float_digits = -1, to get consistently rounded -- results on all platforms. SET extra_float_digits = -1; SELECT x, erf(x), erfc(x) FROM (VALUES (float8 '-infinity'), (-28), (-6), (-3.4), (-2.1), (-1.1), (-0.45), (-1.2e-9), (-2.3e-13), (-1.2e-17), (0), (1.2e-17), (2.3e-13), (1.2e-9), (0.45), (1.1), (2.1), (3.4), (6), (28), (float8 'infinity'), (float8 'nan')) AS t(x); 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'); DROP TABLE FLOAT8_TBL; -- Check the float8 values exported for use by other tests SELECT * 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-17-6.1.0/test/sql/postgres_regress/foreign_data.sql000066400000000000000000001055321477334012600246230ustar00rootroot00000000000000-- -- Test foreign-data wrapper and server management. -- -- directory paths and dlsuffix are passed to us in environment variables \getenv libdir PG_LIBDIR \getenv dlsuffix PG_DLSUFFIX \set regresslib :libdir '/regress' :dlsuffix CREATE FUNCTION test_fdw_handler() RETURNS fdw_handler AS :'regresslib', 'test_fdw_handler' LANGUAGE C; -- 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 OPTIONS (nonexistent 'fdw'); -- ERROR 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 ADD COLUMN c11 serial; ALTER FOREIGN TABLE ft1 SET SCHEMA foreign_schema; ALTER FOREIGN TABLE ft1 SET TABLESPACE ts; -- ERROR ALTER SEQUENCE foreign_schema.ft1_c11_seq SET SCHEMA public; -- 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 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); 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-17-6.1.0/test/sql/postgres_regress/foreign_key.sql000066400000000000000000002362241477334012600245050ustar00rootroot00000000000000-- -- 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; -- Test for ON DELETE SET NULL/DEFAULT (column_list); CREATE TABLE PKTABLE (tid int, id int, PRIMARY KEY (tid, id)); CREATE TABLE FKTABLE (tid int, id int, foo int, FOREIGN KEY (tid, id) REFERENCES PKTABLE ON DELETE SET NULL (bar)); CREATE TABLE FKTABLE (tid int, id int, foo int, FOREIGN KEY (tid, id) REFERENCES PKTABLE ON DELETE SET NULL (foo)); CREATE TABLE FKTABLE (tid int, id int, foo int, FOREIGN KEY (tid, foo) REFERENCES PKTABLE ON UPDATE SET NULL (foo)); CREATE TABLE FKTABLE ( tid int, id int, fk_id_del_set_null int, fk_id_del_set_default int DEFAULT 0, FOREIGN KEY (tid, fk_id_del_set_null) REFERENCES PKTABLE ON DELETE SET NULL (fk_id_del_set_null), FOREIGN KEY (tid, fk_id_del_set_default) REFERENCES PKTABLE ON DELETE SET DEFAULT (fk_id_del_set_default) ); SELECT pg_get_constraintdef(oid) FROM pg_constraint WHERE conrelid = 'fktable'::regclass::oid ORDER BY oid; INSERT INTO PKTABLE VALUES (1, 0), (1, 1), (1, 2); INSERT INTO FKTABLE VALUES (1, 1, 1, NULL), (1, 2, NULL, 2); DELETE FROM PKTABLE WHERE id = 1 OR id = 2; SELECT * FROM FKTABLE ORDER BY id; DROP TABLE FKTABLE; DROP TABLE PKTABLE; -- Test some invalid FK definitions CREATE TABLE PKTABLE (ptest1 int PRIMARY KEY, someoid oid); 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)); CREATE TABLE FKTABLE_FAIL3 ( ftest1 int, CONSTRAINT fkfail1 FOREIGN KEY (tableoid) REFERENCES PKTABLE(someoid)); CREATE TABLE FKTABLE_FAIL4 ( ftest1 oid, CONSTRAINT fkfail1 FOREIGN KEY (ftest1) REFERENCES PKTABLE(tableoid)); 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 options ALTER TABLE fktable ALTER CONSTRAINT fktable_fk_fkey NOT DEFERRABLE INITIALLY DEFERRED; ALTER TABLE fktable ALTER CONSTRAINT fktable_fk_fkey NO INHERIT; ALTER TABLE fktable ALTER CONSTRAINT fktable_fk_fkey NOT VALID; -- 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 DELETE SET NULL column_list 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 NULL (a); BEGIN; DELETE FROM fk_notpartitioned_pk WHERE b = 142857; SELECT * FROM fk_partitioned_fk WHERE a IS NOT NULL OR b IS NOT NULL ORDER BY a NULLS LAST; ROLLBACK; -- ON DELETE SET DEFAULT column_list 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 (a); BEGIN; DELETE FROM fk_partitioned_fk; DELETE FROM fk_notpartitioned_pk; INSERT INTO fk_notpartitioned_pk VALUES (500, 100000), (2501, 100000); INSERT INTO fk_partitioned_fk VALUES (500, 100000); DELETE FROM fk_notpartitioned_pk WHERE a = 500; SELECT * FROM fk_partitioned_fk ORDER BY a; ROLLBACK; -- 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 -- Verify that attaching a table that's referenced by an existing FK -- in the parent throws an error CREATE TABLE fk_partitioned_pk_6 (a int PRIMARY KEY); CREATE TABLE fk_partitioned_fk_6 (a int REFERENCES fk_partitioned_pk_6) PARTITION BY LIST (a); ALTER TABLE fk_partitioned_fk_6 ATTACH PARTITION fk_partitioned_pk_6 FOR VALUES IN (1); DROP TABLE fk_partitioned_pk_6, fk_partitioned_fk_6; -- This case is similar to above, but the referenced relation is one level -- lower in the hierarchy. This one fails in a different way as the above, -- because we don't bother to protect against this case explicitly. If the -- current error stops happening, we'll need to add a better protection. CREATE TABLE fk_partitioned_pk_6 (a int PRIMARY KEY) PARTITION BY list (a); CREATE TABLE fk_partitioned_pk_61 PARTITION OF fk_partitioned_pk_6 FOR VALUES IN (1); CREATE TABLE fk_partitioned_fk_6 (a int REFERENCES fk_partitioned_pk_61) PARTITION BY LIST (a); ALTER TABLE fk_partitioned_fk_6 ATTACH PARTITION fk_partitioned_pk_6 FOR VALUES IN (1); DROP TABLE fk_partitioned_pk_6, fk_partitioned_fk_6; -- 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 self-referencing foreign key with partition. -- This should create only one fk constraint per partition -- CREATE TABLE parted_self_fk ( id bigint NOT NULL PRIMARY KEY, id_abc bigint, FOREIGN KEY (id_abc) REFERENCES parted_self_fk(id) ) PARTITION BY RANGE (id); CREATE TABLE part1_self_fk ( id bigint NOT NULL PRIMARY KEY, id_abc bigint ); ALTER TABLE parted_self_fk ATTACH PARTITION part1_self_fk FOR VALUES FROM (0) TO (10); CREATE TABLE part2_self_fk PARTITION OF parted_self_fk FOR VALUES FROM (10) TO (20); CREATE TABLE part3_self_fk ( -- a partitioned partition id bigint NOT NULL PRIMARY KEY, id_abc bigint ) PARTITION BY RANGE (id); CREATE TABLE part32_self_fk PARTITION OF part3_self_fk FOR VALUES FROM (20) TO (30); ALTER TABLE parted_self_fk ATTACH PARTITION part3_self_fk FOR VALUES FROM (20) TO (40); CREATE TABLE part33_self_fk ( id bigint NOT NULL PRIMARY KEY, id_abc bigint ); ALTER TABLE part3_self_fk ATTACH PARTITION part33_self_fk FOR VALUES FROM (30) TO (40); SELECT cr.relname, co.conname, co.contype, co.convalidated, p.conname AS conparent, p.convalidated, cf.relname AS foreignrel FROM pg_constraint co JOIN pg_class cr ON cr.oid = co.conrelid LEFT JOIN pg_class cf ON cf.oid = co.confrelid LEFT JOIN pg_constraint p ON p.oid = co.conparentid WHERE cr.oid IN (SELECT relid FROM pg_partition_tree('parted_self_fk')) ORDER BY co.contype, cr.relname, co.conname, p.conname; -- detach and re-attach multiple times just to ensure everything is kosher ALTER TABLE parted_self_fk DETACH PARTITION part2_self_fk; ALTER TABLE parted_self_fk ATTACH PARTITION part2_self_fk FOR VALUES FROM (10) TO (20); ALTER TABLE parted_self_fk DETACH PARTITION part2_self_fk; ALTER TABLE parted_self_fk ATTACH PARTITION part2_self_fk FOR VALUES FROM (10) TO (20); SELECT cr.relname, co.conname, co.contype, co.convalidated, p.conname AS conparent, p.convalidated, cf.relname AS foreignrel FROM pg_constraint co JOIN pg_class cr ON cr.oid = co.conrelid LEFT JOIN pg_class cf ON cf.oid = co.confrelid LEFT JOIN pg_constraint p ON p.oid = co.conparentid WHERE cr.oid IN (SELECT relid FROM pg_partition_tree('parted_self_fk')) ORDER BY co.contype, cr.relname, co.conname, p.conname; -- Leave this table around, for pg_upgrade/pg_dump tests -- 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; -- Also, detaching a partition that has the FK itself should work -- https://postgr.es/m/CAAJ_b97GuPh6wQPbxQS-Zpy16Oh+0aMv-w64QcGrLhCOZZ6p+g@mail.gmail.com CREATE TABLE ffk (a int, b int REFERENCES pk) PARTITION BY list (a); CREATE TABLE ffk1 PARTITION OF ffk FOR VALUES IN (1); ALTER TABLE ffk1 ADD FOREIGN KEY (a) REFERENCES pk; ALTER TABLE ffk DETACH PARTITION ffk1; DROP TABLE ffk, ffk1; 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 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; -- test that ri_Check_Pk_Match() scans the correct partition for a deferred -- ON DELETE/UPDATE NO ACTION constraint CREATE SCHEMA fkpart10 CREATE TABLE tbl1(f1 int PRIMARY KEY) PARTITION BY RANGE(f1) CREATE TABLE tbl1_p1 PARTITION OF tbl1 FOR VALUES FROM (minvalue) TO (1) CREATE TABLE tbl1_p2 PARTITION OF tbl1 FOR VALUES FROM (1) TO (maxvalue) CREATE TABLE tbl2(f1 int REFERENCES tbl1 DEFERRABLE INITIALLY DEFERRED) CREATE TABLE tbl3(f1 int PRIMARY KEY) PARTITION BY RANGE(f1) CREATE TABLE tbl3_p1 PARTITION OF tbl3 FOR VALUES FROM (minvalue) TO (1) CREATE TABLE tbl3_p2 PARTITION OF tbl3 FOR VALUES FROM (1) TO (maxvalue) CREATE TABLE tbl4(f1 int REFERENCES tbl3 DEFERRABLE INITIALLY DEFERRED); INSERT INTO fkpart10.tbl1 VALUES (0), (1); INSERT INTO fkpart10.tbl2 VALUES (0), (1); INSERT INTO fkpart10.tbl3 VALUES (-2), (-1), (0); INSERT INTO fkpart10.tbl4 VALUES (-2), (-1); BEGIN; DELETE FROM fkpart10.tbl1 WHERE f1 = 0; UPDATE fkpart10.tbl1 SET f1 = 2 WHERE f1 = 1; INSERT INTO fkpart10.tbl1 VALUES (0), (1); COMMIT; -- test that cross-partition updates correctly enforces the foreign key -- restriction (specifically testing INITIALLY DEFERRED) BEGIN; UPDATE fkpart10.tbl1 SET f1 = 3 WHERE f1 = 0; UPDATE fkpart10.tbl3 SET f1 = f1 * -1; INSERT INTO fkpart10.tbl1 VALUES (4); COMMIT; BEGIN; UPDATE fkpart10.tbl3 SET f1 = f1 * -1; UPDATE fkpart10.tbl3 SET f1 = f1 + 3; UPDATE fkpart10.tbl1 SET f1 = 3 WHERE f1 = 0; INSERT INTO fkpart10.tbl1 VALUES (0); COMMIT; BEGIN; UPDATE fkpart10.tbl3 SET f1 = f1 * -1; UPDATE fkpart10.tbl1 SET f1 = 3 WHERE f1 = 0; INSERT INTO fkpart10.tbl1 VALUES (0); INSERT INTO fkpart10.tbl3 VALUES (-2), (-1); COMMIT; -- test where the updated table now has both an IMMEDIATE and a DEFERRED -- constraint pointing into it CREATE TABLE fkpart10.tbl5(f1 int REFERENCES fkpart10.tbl3); INSERT INTO fkpart10.tbl5 VALUES (-2), (-1); BEGIN; UPDATE fkpart10.tbl3 SET f1 = f1 * -3; COMMIT; -- Now test where the row referenced from the table with an IMMEDIATE -- constraint stays in place, while those referenced from the table with a -- DEFERRED constraint don't. DELETE FROM fkpart10.tbl5; INSERT INTO fkpart10.tbl5 VALUES (0); BEGIN; UPDATE fkpart10.tbl3 SET f1 = f1 * -3; COMMIT; DROP SCHEMA fkpart10 CASCADE; -- verify foreign keys are enforced during cross-partition updates, -- especially on the PK side CREATE SCHEMA fkpart11 CREATE TABLE pk (a INT PRIMARY KEY, b text) PARTITION BY LIST (a) CREATE TABLE fk ( a INT, CONSTRAINT fkey FOREIGN KEY (a) REFERENCES pk(a) ON UPDATE CASCADE ON DELETE CASCADE ) CREATE TABLE fk_parted ( a INT PRIMARY KEY, CONSTRAINT fkey FOREIGN KEY (a) REFERENCES pk(a) ON UPDATE CASCADE ON DELETE CASCADE ) PARTITION BY LIST (a) CREATE TABLE fk_another ( a INT, CONSTRAINT fkey FOREIGN KEY (a) REFERENCES fk_parted (a) ON UPDATE CASCADE ON DELETE CASCADE ) CREATE TABLE pk1 PARTITION OF pk FOR VALUES IN (1, 2) PARTITION BY LIST (a) CREATE TABLE pk2 PARTITION OF pk FOR VALUES IN (3) CREATE TABLE pk3 PARTITION OF pk FOR VALUES IN (4) CREATE TABLE fk1 PARTITION OF fk_parted FOR VALUES IN (1, 2) CREATE TABLE fk2 PARTITION OF fk_parted FOR VALUES IN (3) CREATE TABLE fk3 PARTITION OF fk_parted FOR VALUES IN (4); CREATE TABLE fkpart11.pk11 (b text, a int NOT NULL); ALTER TABLE fkpart11.pk1 ATTACH PARTITION fkpart11.pk11 FOR VALUES IN (1); CREATE TABLE fkpart11.pk12 (b text, c int, a int NOT NULL); ALTER TABLE fkpart11.pk12 DROP c; ALTER TABLE fkpart11.pk1 ATTACH PARTITION fkpart11.pk12 FOR VALUES IN (2); INSERT INTO fkpart11.pk VALUES (1, 'xxx'), (3, 'yyy'); INSERT INTO fkpart11.fk VALUES (1), (3); INSERT INTO fkpart11.fk_parted VALUES (1), (3); INSERT INTO fkpart11.fk_another VALUES (1), (3); -- moves 2 rows from one leaf partition to another, with both updates being -- cascaded to fk and fk_parted. Updates of fk_parted, of which one is -- cross-partition (3 -> 4), are further cascaded to fk_another. UPDATE fkpart11.pk SET a = a + 1 RETURNING tableoid::pg_catalog.regclass, *; SELECT tableoid::pg_catalog.regclass, * FROM fkpart11.fk; SELECT tableoid::pg_catalog.regclass, * FROM fkpart11.fk_parted; SELECT tableoid::pg_catalog.regclass, * FROM fkpart11.fk_another; -- let's try with the foreign key pointing at tables in the partition tree -- that are not the same as the query's target table -- 1. foreign key pointing into a non-root ancestor -- -- A cross-partition update on the root table will fail, because we currently -- can't enforce the foreign keys pointing into a non-leaf partition ALTER TABLE fkpart11.fk DROP CONSTRAINT fkey; DELETE FROM fkpart11.fk WHERE a = 4; ALTER TABLE fkpart11.fk ADD CONSTRAINT fkey FOREIGN KEY (a) REFERENCES fkpart11.pk1 (a) ON UPDATE CASCADE ON DELETE CASCADE; UPDATE fkpart11.pk SET a = a - 1; -- it's okay though if the non-leaf partition is updated directly UPDATE fkpart11.pk1 SET a = a - 1; SELECT tableoid::pg_catalog.regclass, * FROM fkpart11.pk; SELECT tableoid::pg_catalog.regclass, * FROM fkpart11.fk; SELECT tableoid::pg_catalog.regclass, * FROM fkpart11.fk_parted; SELECT tableoid::pg_catalog.regclass, * FROM fkpart11.fk_another; -- 2. foreign key pointing into a single leaf partition -- -- A cross-partition update that deletes from the pointed-to leaf partition -- is allowed to succeed ALTER TABLE fkpart11.fk DROP CONSTRAINT fkey; ALTER TABLE fkpart11.fk ADD CONSTRAINT fkey FOREIGN KEY (a) REFERENCES fkpart11.pk11 (a) ON UPDATE CASCADE ON DELETE CASCADE; -- will delete (1) from p11 which is cascaded to fk UPDATE fkpart11.pk SET a = a + 1 WHERE a = 1; SELECT tableoid::pg_catalog.regclass, * FROM fkpart11.fk; DROP TABLE fkpart11.fk; -- check that regular and deferrable AR triggers on the PK tables -- still work as expected CREATE FUNCTION fkpart11.print_row () RETURNS TRIGGER LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'TABLE: %, OP: %, OLD: %, NEW: %', TG_RELNAME, TG_OP, OLD, NEW; RETURN NULL; END; $$; CREATE TRIGGER trig_upd_pk AFTER UPDATE ON fkpart11.pk FOR EACH ROW EXECUTE FUNCTION fkpart11.print_row(); CREATE TRIGGER trig_del_pk AFTER DELETE ON fkpart11.pk FOR EACH ROW EXECUTE FUNCTION fkpart11.print_row(); CREATE TRIGGER trig_ins_pk AFTER INSERT ON fkpart11.pk FOR EACH ROW EXECUTE FUNCTION fkpart11.print_row(); CREATE CONSTRAINT TRIGGER trig_upd_fk_parted AFTER UPDATE ON fkpart11.fk_parted INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION fkpart11.print_row(); CREATE CONSTRAINT TRIGGER trig_del_fk_parted AFTER DELETE ON fkpart11.fk_parted INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION fkpart11.print_row(); CREATE CONSTRAINT TRIGGER trig_ins_fk_parted AFTER INSERT ON fkpart11.fk_parted INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION fkpart11.print_row(); UPDATE fkpart11.pk SET a = 3 WHERE a = 4; UPDATE fkpart11.pk SET a = 1 WHERE a = 2; DROP SCHEMA fkpart11 CASCADE; -- When a table is attached as partition to a partitioned table that has -- a foreign key to another partitioned table, it acquires a clone of the -- FK. Upon detach, this clone is not removed, but instead becomes an -- independent FK. If it then attaches to the partitioned table again, -- the FK from the parent "takes over" ownership of the independent FK rather -- than creating a separate one. CREATE SCHEMA fkpart12 CREATE TABLE fk_p ( id int, jd int, PRIMARY KEY(id, jd)) PARTITION BY list (id) CREATE TABLE fk_p_1 PARTITION OF fk_p FOR VALUES IN (1) PARTITION BY list (jd) CREATE TABLE fk_p_1_1 PARTITION OF fk_p_1 FOR VALUES IN (1) CREATE TABLE fk_p_1_2 (x int, y int, jd int NOT NULL, id int NOT NULL) CREATE TABLE fk_p_2 PARTITION OF fk_p FOR VALUES IN (2) PARTITION BY list (jd) CREATE TABLE fk_p_2_1 PARTITION OF fk_p_2 FOR VALUES IN (1) CREATE TABLE fk_p_2_2 PARTITION OF fk_p_2 FOR VALUES IN (2) CREATE TABLE fk_r_1 ( p_jd int NOT NULL, x int, id int PRIMARY KEY, p_id int NOT NULL) CREATE TABLE fk_r_2 ( id int PRIMARY KEY, p_id int NOT NULL, p_jd int NOT NULL) PARTITION BY list (id) CREATE TABLE fk_r_2_1 PARTITION OF fk_r_2 FOR VALUES IN (2, 1) CREATE TABLE fk_r ( id int PRIMARY KEY, p_id int NOT NULL, p_jd int NOT NULL, FOREIGN KEY (p_id, p_jd) REFERENCES fk_p (id, jd) ) PARTITION BY list (id); SET search_path TO fkpart12; ALTER TABLE fk_p_1_2 DROP COLUMN x, DROP COLUMN y; ALTER TABLE fk_p_1 ATTACH PARTITION fk_p_1_2 FOR VALUES IN (2); ALTER TABLE fk_r_1 DROP COLUMN x; INSERT INTO fk_p VALUES (1, 1); ALTER TABLE fk_r ATTACH PARTITION fk_r_1 FOR VALUES IN (1); ALTER TABLE fk_r ATTACH PARTITION fk_r_2 FOR VALUES IN (2); \d fk_r_2 INSERT INTO fk_r VALUES (1, 1, 1); INSERT INTO fk_r VALUES (2, 2, 1); ALTER TABLE fk_r DETACH PARTITION fk_r_1; ALTER TABLE fk_r DETACH PARTITION fk_r_2; \d fk_r_2 INSERT INTO fk_r_1 (id, p_id, p_jd) VALUES (2, 1, 2); -- should fail DELETE FROM fk_p; -- should fail ALTER TABLE fk_r ATTACH PARTITION fk_r_1 FOR VALUES IN (1); ALTER TABLE fk_r ATTACH PARTITION fk_r_2 FOR VALUES IN (2); \d fk_r_2 DELETE FROM fk_p; -- should fail -- these should all fail ALTER TABLE fk_r_1 DROP CONSTRAINT fk_r_p_id_p_jd_fkey; ALTER TABLE fk_r DROP CONSTRAINT fk_r_p_id_p_jd_fkey1; ALTER TABLE fk_r_2 DROP CONSTRAINT fk_r_p_id_p_jd_fkey; SET client_min_messages TO warning; DROP SCHEMA fkpart12 CASCADE; RESET client_min_messages; RESET search_path; libpg_query-17-6.1.0/test/sql/postgres_regress/functional_deps.sql000066400000000000000000000124151477334012600253530ustar00rootroot00000000000000-- 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-17-6.1.0/test/sql/postgres_regress/generated.sql000066400000000000000000000575101477334012600241410ustar00rootroot00000000000000-- 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); -- a whole-row var is a self-reference on steroids, so disallow that too CREATE TABLE gtest_err_2c (a int PRIMARY KEY, b int GENERATED ALWAYS AS (num_nulls(gtest_err_2c)) 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); -- ... but be sure that the immutability test is accurate CREATE TABLE gtest2 (a int, b text GENERATED ALWAYS AS (a || ' sec') STORED); DROP TABLE gtest2; -- 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 -- (except tableoid, which we test below) 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); -- ok INSERT INTO gtest1 VALUES (3, 33); -- error INSERT INTO gtest1 VALUES (3, 33), (4, 44); -- error INSERT INTO gtest1 VALUES (3, DEFAULT), (4, 44); -- error INSERT INTO gtest1 VALUES (3, 33), (4, DEFAULT); -- error INSERT INTO gtest1 VALUES (3, DEFAULT), (4, DEFAULT); -- ok SELECT * FROM gtest1 ORDER BY a; DELETE FROM gtest1 WHERE a >= 3; 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; -- test MERGE CREATE TABLE gtestm ( id int PRIMARY KEY, f1 int, f2 int, f3 int GENERATED ALWAYS AS (f1 * 2) STORED, f4 int GENERATED ALWAYS AS (f2 * 2) STORED ); INSERT INTO gtestm VALUES (1, 5, 100); MERGE INTO gtestm t USING (VALUES (1, 10), (2, 20)) v(id, f1) ON t.id = v.id WHEN MATCHED THEN UPDATE SET f1 = v.f1 WHEN NOT MATCHED THEN INSERT VALUES (v.id, v.f1, 200); SELECT * FROM gtestm ORDER BY id; DROP TABLE gtestm; -- views CREATE VIEW gtest1v AS SELECT * FROM gtest1; SELECT * FROM gtest1v; INSERT INTO gtest1v VALUES (4, 8); -- error INSERT INTO gtest1v VALUES (5, DEFAULT); -- ok INSERT INTO gtest1v VALUES (6, 66), (7, 77); -- error INSERT INTO gtest1v VALUES (6, DEFAULT), (7, 77); -- error INSERT INTO gtest1v VALUES (6, 66), (7, DEFAULT); -- error INSERT INTO gtest1v VALUES (6, DEFAULT), (7, DEFAULT); -- ok ALTER VIEW gtest1v ALTER COLUMN b SET DEFAULT 100; INSERT INTO gtest1v VALUES (8, DEFAULT); -- error INSERT INTO gtest1v VALUES (8, DEFAULT), (9, DEFAULT); -- error SELECT * FROM gtest1v; DELETE FROM gtest1v WHERE a >= 5; 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; -- can't have generated column that is a child of normal column 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); -- error CREATE TABLE gtest_normal_child (a int, b int GENERATED ALWAYS AS (a * 2) STORED); ALTER TABLE gtest_normal_child INHERIT gtest_normal; -- error DROP TABLE gtest_normal, gtest_normal_child; -- test inheritance mismatches between parent and child 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 gtestx (x int, b int GENERATED ALWAYS AS (a * 22) STORED) INHERITS (gtest1); -- ok, overrides parent \d+ gtestx CREATE TABLE gtestxx_1 (a int NOT NULL, b int); ALTER TABLE gtestxx_1 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 DEFAULT 55); CREATE TABLE gtest1_y () INHERITS (gtest0, gtesty); -- error DROP TABLE gtesty; CREATE TABLE gtesty (x int, b int); CREATE TABLE gtest1_y () INHERITS (gtest1, gtesty); -- error DROP TABLE gtesty; CREATE TABLE gtesty (x int, b int GENERATED ALWAYS AS (x * 22) STORED); CREATE TABLE gtest1_y () INHERITS (gtest1, gtesty); -- error CREATE TABLE gtest1_y (b int GENERATED ALWAYS AS (x + 1) STORED) INHERITS (gtest1, gtesty); -- ok \d gtest1_y -- test correct handling of GENERATED column that's only in child CREATE TABLE gtestp (f1 int); CREATE TABLE gtestc (f2 int GENERATED ALWAYS AS (f1+1) STORED) INHERITS(gtestp); INSERT INTO gtestc values(42); TABLE gtestc; UPDATE gtestp SET f1 = f1 * 10; TABLE gtestc; DROP TABLE gtestp CASCADE; -- 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 = 'gtest_tableoid'::regclass) STORED ); INSERT INTO gtest_tableoid VALUES (1), (2); ALTER TABLE gtest_tableoid ADD COLUMN c regclass GENERATED ALWAYS AS (tableoid) STORED; 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; -- fails ALTER TABLE gtest10 DROP COLUMN b CASCADE; -- drops c too \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 FUNCTION gf1(int); -- fail 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 ALTER TABLE gtest20 ALTER COLUMN b SET EXPRESSION AS (a * 100); -- violates constraint ALTER TABLE gtest20 ALTER COLUMN b SET EXPRESSION AS (a * 3); -- ok 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; ALTER TABLE gtest22c ALTER COLUMN b SET EXPRESSION AS (a * 4); ANALYZE gtest22c; EXPLAIN (COSTS OFF) SELECT * FROM gtest22c WHERE b = 8; SELECT * FROM gtest22c WHERE b = 8; EXPLAIN (COSTS OFF) SELECT * FROM gtest22c WHERE b * 3 = 12; SELECT * FROM gtest22c WHERE b * 3 = 12; 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 ALTER TABLE gtest23b ALTER COLUMN b SET EXPRESSION AS (a * 5); -- error ALTER TABLE gtest23b ALTER COLUMN b SET EXPRESSION AS (a * 1); -- ok 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; -- partitioning cases CREATE TABLE gtest_parent (f1 date NOT NULL, f2 bigint, 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 CREATE TABLE gtest_child (f1 date NOT NULL, f2 bigint, f3 bigint GENERATED ALWAYS AS (f2 * 2) STORED); ALTER TABLE gtest_parent ATTACH PARTITION gtest_child FOR VALUES FROM ('2016-07-01') TO ('2016-08-01'); -- error DROP TABLE gtest_parent, gtest_child; 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'); -- inherits gen expr CREATE TABLE gtest_child2 PARTITION OF gtest_parent ( f3 WITH OPTIONS GENERATED ALWAYS AS (f2 * 22) STORED -- overrides gen expr ) FOR VALUES FROM ('2016-08-01') TO ('2016-09-01'); CREATE TABLE gtest_child3 PARTITION OF gtest_parent ( f3 DEFAULT 42 -- error ) FOR VALUES FROM ('2016-09-01') TO ('2016-10-01'); CREATE TABLE gtest_child3 PARTITION OF gtest_parent ( f3 WITH OPTIONS GENERATED ALWAYS AS IDENTITY -- error ) FOR VALUES FROM ('2016-09-01') TO ('2016-10-01'); CREATE TABLE gtest_child3 (f1 date NOT NULL, f2 bigint, f3 bigint); ALTER TABLE gtest_parent ATTACH PARTITION gtest_child3 FOR VALUES FROM ('2016-09-01') TO ('2016-10-01'); -- error DROP TABLE gtest_child3; CREATE TABLE gtest_child3 (f1 date NOT NULL, f2 bigint, f3 bigint DEFAULT 42); ALTER TABLE gtest_parent ATTACH PARTITION gtest_child3 FOR VALUES FROM ('2016-09-01') TO ('2016-10-01'); -- error DROP TABLE gtest_child3; CREATE TABLE gtest_child3 (f1 date NOT NULL, f2 bigint, f3 bigint GENERATED ALWAYS AS IDENTITY); ALTER TABLE gtest_parent ATTACH PARTITION gtest_child3 FOR VALUES FROM ('2016-09-01') TO ('2016-10-01'); -- error DROP TABLE gtest_child3; CREATE TABLE gtest_child3 (f1 date NOT NULL, f2 bigint, f3 bigint GENERATED ALWAYS AS (f2 * 33) STORED); ALTER TABLE gtest_parent ATTACH PARTITION gtest_child3 FOR VALUES FROM ('2016-09-01') TO ('2016-10-01'); \d gtest_child \d gtest_child2 \d gtest_child3 INSERT INTO gtest_parent (f1, f2) VALUES ('2016-07-15', 1); INSERT INTO gtest_parent (f1, f2) VALUES ('2016-07-15', 2); INSERT INTO gtest_parent (f1, f2) VALUES ('2016-08-15', 3); SELECT tableoid::regclass, * FROM gtest_parent ORDER BY 1, 2, 3; UPDATE gtest_parent SET f1 = f1 + 60 WHERE f2 = 1; SELECT tableoid::regclass, * FROM gtest_parent ORDER BY 1, 2, 3; -- alter only parent's and one child's generation expression ALTER TABLE ONLY gtest_parent ALTER COLUMN f3 SET EXPRESSION AS (f2 * 4); ALTER TABLE gtest_child ALTER COLUMN f3 SET EXPRESSION AS (f2 * 10); \d gtest_parent \d gtest_child \d gtest_child2 \d gtest_child3 SELECT tableoid::regclass, * FROM gtest_parent ORDER BY 1, 2, 3; -- alter generation expression of parent and all its children altogether ALTER TABLE gtest_parent ALTER COLUMN f3 SET EXPRESSION AS (f2 * 2); \d gtest_parent \d gtest_child \d gtest_child2 \d gtest_child3 SELECT tableoid::regclass, * FROM gtest_parent ORDER BY 1, 2, 3; -- we leave these tables around for purposes of testing dump/reload/upgrade -- generated columns in partition key (not allowed) CREATE TABLE gtest_part_key (f1 date NOT NULL, f2 bigint, f3 bigint GENERATED ALWAYS AS (f2 * 2) STORED) PARTITION BY RANGE (f3); CREATE TABLE gtest_part_key (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 * 2) STORED, ALTER COLUMN b SET EXPRESSION AS (a * 3); 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); SELECT * FROM gtest29; \d gtest29 ALTER TABLE gtest29 ALTER COLUMN a SET EXPRESSION AS (a * 3); -- error ALTER TABLE gtest29 ALTER COLUMN a DROP EXPRESSION; -- error ALTER TABLE gtest29 ALTER COLUMN a DROP EXPRESSION IF EXISTS; -- notice -- Change the expression ALTER TABLE gtest29 ALTER COLUMN b SET EXPRESSION AS (a * 3); SELECT * FROM gtest29; \d gtest29 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-17-6.1.0/test/sql/postgres_regress/geometry.sql000066400000000000000000000350101477334012600240250ustar00rootroot00000000000000-- -- GEOMETRY -- -- Back off displayed precision a little bit to reduce platform-to-platform -- variation in results. SET extra_float_digits TO -3; -- -- Points -- SELECT center(f1) AS center FROM BOX_TBL; SELECT (@@ f1) AS center FROM BOX_TBL; SELECT point(f1) AS center FROM CIRCLE_TBL; SELECT (@@ f1) AS center FROM CIRCLE_TBL; SELECT (@@ f1) AS center FROM POLYGON_TBL WHERE (# f1) > 2; -- "is horizontal" function SELECT p1.f1 FROM POINT_TBL p1 WHERE ishorizontal(p1.f1, point '(0,0)'); -- "is horizontal" operator SELECT p1.f1 FROM POINT_TBL p1 WHERE p1.f1 ?- point '(0,0)'; -- "is vertical" function SELECT p1.f1 FROM POINT_TBL p1 WHERE isvertical(p1.f1, point '(5.1,34.5)'); -- "is vertical" operator SELECT 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; -- Construct line through two points SELECT p1.f1, p2.f1, line(p1.f1, p2.f1) FROM POINT_TBL p1, POINT_TBL p2 WHERE p1.f1 <> p2.f1; -- 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; -- 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; -- -- Line segments -- -- intersection SELECT 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 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 box(f1) AS box FROM CIRCLE_TBL; -- translation SELECT b.f1 + p.f1 AS translation FROM BOX_TBL b, POINT_TBL p; SELECT 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; -- 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 p.f1, poly.f1, poly.f1 @> p.f1 AS contains FROM POLYGON_TBL poly, POINT_TBL p; SELECT p.f1, poly.f1, p.f1 <@ poly.f1 AS contained FROM POLYGON_TBL poly, POINT_TBL p; SELECT npoints(f1) AS npoints, f1 AS polygon FROM POLYGON_TBL; SELECT polygon(f1) FROM BOX_TBL; SELECT polygon(f1) FROM PATH_TBL WHERE isclosed(f1); SELECT 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 circle(f1, 50.0) FROM POINT_TBL; SELECT circle(f1) FROM BOX_TBL; SELECT circle(f1) FROM POLYGON_TBL WHERE (# f1) >= 3; SELECT 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>'; -- Error for insufficient number of points 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; -- Check index behavior for circles CREATE INDEX gcircleind ON circle_tbl USING gist (f1); SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1) ORDER BY area(f1); 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); -- Check index behavior for polygons CREATE INDEX gpolygonind ON polygon_tbl USING gist (f1); SELECT * FROM polygon_tbl WHERE f1 @> '((1,1),(2,2),(2,1))'::polygon ORDER BY (poly_center(f1))[0]; 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]; -- test non-error-throwing API for some core types SELECT pg_input_is_valid('(1', 'circle'); SELECT * FROM pg_input_error_info('1,', 'circle'); SELECT pg_input_is_valid('(1,2),-1', 'circle'); SELECT * FROM pg_input_error_info('(1,2),-1', 'circle'); libpg_query-17-6.1.0/test/sql/postgres_regress/gin.sql000066400000000000000000000130271477334012600227530ustar00rootroot00000000000000-- -- 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[]; -- test vacuuming of posting trees delete from t_gin_test_tbl where j @> array[2]; vacuum t_gin_test_tbl; select count(*) from t_gin_test_tbl where j @> array[50]; select count(*) from t_gin_test_tbl where j @> array[2]; select count(*) from t_gin_test_tbl where j @> '{}'::int[]; reset enable_seqscan; reset enable_bitmapscan; drop table t_gin_test_tbl; -- test an unlogged table, mostly to get coverage of ginbuildempty create unlogged 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}', '{2,3}'); drop table t_gin_test_tbl; libpg_query-17-6.1.0/test/sql/postgres_regress/gist.sql000066400000000000000000000146001477334012600231420ustar00rootroot00000000000000-- -- 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; -- Test that we don't try to return the value of a non-returnable -- column in an index-only scan. (This isn't GIST-specific, but -- it only applies to index AMs that can return some columns and not -- others, so GIST with appropriate opclasses is a convenient test case.) create index gist_tbl_multi_index on gist_tbl using gist (circle(p,1), p); explain (verbose, costs off) select circle(p,1) from gist_tbl where p <@ box(point(5, 5), point(5.3, 5.3)); select circle(p,1) from gist_tbl where p <@ box(point(5, 5), point(5.3, 5.3)); -- Similarly, test that index rechecks involving a non-returnable column -- are done correctly. explain (verbose, costs off) select p from gist_tbl where circle(p,1) @> circle(point(0,0),0.95); select p from gist_tbl where circle(p,1) @> circle(point(0,0),0.95); -- Also check that use_physical_tlist doesn't trigger in such cases. explain (verbose, costs off) select count(*) from gist_tbl; select count(*) from gist_tbl; -- This case isn't supported, but it should at least EXPLAIN correctly. explain (verbose, costs off) select p from gist_tbl order by circle(p,1) <-> point(0,0) limit 1; select p from gist_tbl order by circle(p,1) <-> point(0,0) limit 1; -- Force an index build using buffering. create index gist_tbl_box_index_forcing_buffering on gist_tbl using gist (p) with (buffering=on, fillfactor=50); -- Clean up reset enable_seqscan; reset enable_bitmapscan; reset enable_indexonlyscan; drop table gist_tbl; -- test an unlogged table, mostly to get coverage of gistbuildempty create unlogged table gist_tbl (b box); create index gist_tbl_box_index on gist_tbl using gist (b); insert into gist_tbl select box(point(0.05*i, 0.05*i)) from generate_series(0,10) as i; drop table gist_tbl; libpg_query-17-6.1.0/test/sql/postgres_regress/groupingsets.sql000066400000000000000000000515031477334012600247300ustar00rootroot00000000000000-- -- 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; -- check handling of pulled-up SubPlan in GROUPING() argument (bug #17479) explain (verbose, costs off) select grouping(ss.x) from int8_tbl i1 cross join lateral (select (select i1.q1) as x) ss group by ss.x; select grouping(ss.x) from int8_tbl i1 cross join lateral (select (select i1.q1) as x) ss group by ss.x; explain (verbose, costs off) select (select grouping(ss.x)) from int8_tbl i1 cross join lateral (select (select i1.q1) as x) ss group by ss.x; select (select grouping(ss.x)) from int8_tbl i1 cross join lateral (select (select i1.q1) as x) ss group by ss.x; -- 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 hash_mem_multiplier = 1.0; 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; set hash_mem_multiplier 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; -- GROUP BY DISTINCT -- "normal" behavior... select a, b, c from (values (1, 2, 3), (4, null, 6), (7, 8, 9)) as t (a, b, c) group by all rollup(a, b), rollup(a, c) order by a, b, c; -- ...which is also the default select a, b, c from (values (1, 2, 3), (4, null, 6), (7, 8, 9)) as t (a, b, c) group by rollup(a, b), rollup(a, c) order by a, b, c; -- "group by distinct" behavior... select a, b, c from (values (1, 2, 3), (4, null, 6), (7, 8, 9)) as t (a, b, c) group by distinct rollup(a, b), rollup(a, c) order by a, b, c; -- ...which is not the same as "select distinct" select distinct a, b, c from (values (1, 2, 3), (4, null, 6), (7, 8, 9)) as t (a, b, c) group by rollup(a, b), rollup(a, c) order by a, b, c; -- test handling of outer GroupingFunc within subqueries explain (costs off) select (select grouping(v1)) from (values ((select 1))) v(v1) group by cube(v1); select (select grouping(v1)) from (values ((select 1))) v(v1) group by cube(v1); explain (costs off) select (select grouping(v1)) from (values ((select 1))) v(v1) group by v1; select (select grouping(v1)) from (values ((select 1))) v(v1) group by v1; -- end libpg_query-17-6.1.0/test/sql/postgres_regress/guc.sql000066400000000000000000000235551477334012600227630ustar00rootroot00000000000000-- 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'; SET no_such_variable TO 42; -- Test "custom" GUCs created on the fly (which aren't really an -- intended feature, but many people use them). SHOW custom.my_guc; -- error, not known yet SET custom.my_guc = 42; SHOW custom.my_guc; RESET custom.my_guc; -- this makes it go to empty, not become unknown again SHOW custom.my_guc; SET custom.my.qualified.guc = 'foo'; SHOW custom.my.qualified.guc; SET custom."bad-guc" = 42; -- disallowed because -c cannot set this name SHOW custom."bad-guc"; SET special."weird name" = 'foo'; -- could be allowed, but we choose not to SHOW special."weird name"; -- Check what happens when you try to set a "custom" GUC within the -- namespace of an extension. SET plpgsql.extra_foo_warnings = true; -- allowed if plpgsql is not loaded yet LOAD 'plpgsql'; -- this will throw a warning and delete the variable SET plpgsql.extra_foo_warnings = true; -- now, it's an error SHOW plpgsql.extra_foo_warnings; -- -- 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; -- Test GUC categories and flag patterns SELECT pg_settings_get_flags(NULL); SELECT pg_settings_get_flags('does_not_exist'); CREATE TABLE tab_settings_flags AS SELECT name, category, 'EXPLAIN' = ANY(flags) AS explain, 'NO_RESET' = ANY(flags) AS no_reset, 'NO_RESET_ALL' = ANY(flags) AS no_reset_all, 'NOT_IN_SAMPLE' = ANY(flags) AS not_in_sample, 'RUNTIME_COMPUTED' = ANY(flags) AS runtime_computed FROM pg_show_all_settings() AS psas, pg_settings_get_flags(psas.name) AS flags; -- Developer GUCs should be flagged with GUC_NOT_IN_SAMPLE: SELECT name FROM tab_settings_flags WHERE category = 'Developer Options' AND NOT not_in_sample ORDER BY 1; -- Most query-tuning GUCs are flagged as valid for EXPLAIN. -- default_statistics_target is an exception. SELECT name FROM tab_settings_flags WHERE category ~ '^Query Tuning' AND NOT explain ORDER BY 1; -- Runtime-computed GUCs should be part of the preset category. SELECT name FROM tab_settings_flags WHERE NOT category = 'Preset Options' AND runtime_computed ORDER BY 1; -- Preset GUCs are flagged as NOT_IN_SAMPLE. SELECT name FROM tab_settings_flags WHERE category = 'Preset Options' AND NOT not_in_sample ORDER BY 1; -- NO_RESET implies NO_RESET_ALL. SELECT name FROM tab_settings_flags WHERE no_reset AND NOT no_reset_all ORDER BY 1; DROP TABLE tab_settings_flags; libpg_query-17-6.1.0/test/sql/postgres_regress/hash_func.sql000066400000000000000000000324241477334012600241360ustar00rootroot00000000000000-- -- 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); -- array hashing with non-hashable element type SELECT v as value, hash_array(v)::bit(32) as standard FROM (VALUES ('{101}'::varbit[])) x(v); SELECT v as value, hash_array_extended(v, 0)::bit(32) as extended0 FROM (VALUES ('{101}'::varbit[])) x(v); 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); SELECT v as value, hash_multirange(v)::bit(32) as standard, hash_multirange_extended(v, 0)::bit(32) as extended0, hash_multirange_extended(v, 1)::bit(32) as extended1 FROM (VALUES ('{[10,20)}'::int4multirange), ('{[23, 43]}'::int4multirange), ('{[5675, 550273)}'::int4multirange), ('{[550274, 1550274)}'::int4multirange), ('{[1550275, 208112489)}'::int4multirange)) x(v) WHERE hash_multirange(v)::bit(32) != hash_multirange_extended(v, 0)::bit(32) OR hash_multirange(v)::bit(32) = hash_multirange_extended(v, 1)::bit(32); CREATE TYPE hash_test_t1 AS (a int, b text); SELECT v as value, hash_record(v)::bit(32) as standard, hash_record_extended(v, 0)::bit(32) as extended0, hash_record_extended(v, 1)::bit(32) as extended1 FROM (VALUES (row(1, 'aaa')::hash_test_t1, row(2, 'bbb'), row(-1, 'ccc'))) x(v) WHERE hash_record(v)::bit(32) != hash_record_extended(v, 0)::bit(32) OR hash_record(v)::bit(32) = hash_record_extended(v, 1)::bit(32); DROP TYPE hash_test_t1; -- record hashing with non-hashable field type CREATE TYPE hash_test_t2 AS (a varbit, b text); SELECT v as value, hash_record(v)::bit(32) as standard FROM (VALUES (row('10'::varbit, 'aaa')::hash_test_t2)) x(v); SELECT v as value, hash_record_extended(v, 0)::bit(32) as extended0 FROM (VALUES (row('11'::varbit, 'aaa')::hash_test_t2)) x(v); DROP TYPE hash_test_t2; -- -- Check special cases for specific data types -- SELECT hashfloat4('0'::float4) = hashfloat4('-0'::float4) AS t; SELECT hashfloat4('NaN'::float4) = hashfloat4(-'NaN'::float4) AS t; SELECT hashfloat8('0'::float8) = hashfloat8('-0'::float8) AS t; SELECT hashfloat8('NaN'::float8) = hashfloat8(-'NaN'::float8) AS t; SELECT hashfloat4('NaN'::float4) = hashfloat8('NaN'::float8) AS t; libpg_query-17-6.1.0/test/sql/postgres_regress/hash_index.sql000066400000000000000000000203461477334012600243120ustar00rootroot00000000000000-- -- HASH_INDEX -- -- directory paths are passed to us in environment variables \getenv abs_srcdir PG_ABS_SRCDIR 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 ); \set filename :abs_srcdir '/data/hash.data' COPY hash_i4_heap FROM :'filename'; COPY hash_name_heap FROM :'filename'; COPY hash_txt_heap FROM :'filename'; COPY hash_f8_heap FROM :'filename'; -- the data in this file has a lot of duplicates in the index key -- fields, leading to long bucket chains and lots of table expansion. -- this is therefore a stress test of the bucket overflow code (unlike -- the data in hash.data, which has unique index keys). -- -- \set filename :abs_srcdir '/data/hashovfl.data' -- COPY hash_ovfl_heap FROM :'filename'; ANALYZE hash_i4_heap; ANALYZE hash_name_heap; ANALYZE hash_txt_heap; ANALYZE hash_f8_heap; 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); -- -- 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; -- -- 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; -- Testcases for removing overflow pages. CREATE TABLE hash_cleanup_heap(keycol INT); CREATE INDEX hash_cleanup_index on hash_cleanup_heap USING HASH (keycol); -- Insert tuples to both the primary bucket page and overflow pages. INSERT INTO hash_cleanup_heap SELECT 1 FROM generate_series(1, 500) as i; -- Fill overflow pages by "dead" tuples. BEGIN; INSERT INTO hash_cleanup_heap SELECT 1 FROM generate_series(1, 1000) as i; ROLLBACK; -- Checkpoint will ensure that all hash buffers are cleaned before we try -- to remove overflow pages. CHECKPOINT; -- This will squeeze the bucket and remove overflow pages. VACUUM hash_cleanup_heap; TRUNCATE hash_cleanup_heap; -- Insert a few tuples so that the primary bucket page doesn't get full and -- tuples can be moved to it. INSERT INTO hash_cleanup_heap SELECT 1 FROM generate_series(1, 50) as i; -- Fill overflow pages by "dead" tuples. BEGIN; INSERT INTO hash_cleanup_heap SELECT 1 FROM generate_series(1, 1500) as i; ROLLBACK; -- And insert some tuples again. During squeeze operation, these will be moved -- to the primary bucket allowing to test freeing intermediate overflow pages. INSERT INTO hash_cleanup_heap SELECT 1 FROM generate_series(1, 500) as i; CHECKPOINT; VACUUM hash_cleanup_heap; TRUNCATE hash_cleanup_heap; -- Insert tuples to both the primary bucket page and overflow pages. INSERT INTO hash_cleanup_heap SELECT 1 FROM generate_series(1, 500) as i; -- Fill overflow pages by "dead" tuples. BEGIN; INSERT INTO hash_cleanup_heap SELECT 1 FROM generate_series(1, 1500) as i; ROLLBACK; -- And insert some tuples again. During squeeze operation, these will be moved -- to other overflow pages and also allow overflow pages filled by dead tuples -- to be freed. Note the main purpose of this test is to test the case where -- we don't need to move any tuple from the overflow page being freed. INSERT INTO hash_cleanup_heap SELECT 1 FROM generate_series(1, 50) as i; CHECKPOINT; VACUUM hash_cleanup_heap; -- Clean up. DROP TABLE hash_cleanup_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-17-6.1.0/test/sql/postgres_regress/hash_part.sql000066400000000000000000000060651477334012600241530ustar00rootroot00000000000000-- -- Hash partitioning. -- -- Use hand-rolled hash functions and operator classes to get predictable -- result on different machines. See the definitions of -- part_test_int4_ops and part_test_text_ops in test_setup.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-17-6.1.0/test/sql/postgres_regress/horology.sql000066400000000000000000000711121477334012600240370ustar00rootroot00000000000000-- -- HOROLOGY -- SHOW TimeZone; -- Many of these tests depend on the prevailing settings SHOW DateStyle; -- -- 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'; SELECT timestamp with time zone '2001-12-27 04:05:06.789 MET DST'; SELECT timestamp with time zone '2001-12-27 allballs'; -- 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 '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'; -- time with time zone should accept a date for DST resolution purposes SELECT time with time zone 'T040506.789 America/Los_Angeles'; SELECT time with time zone '2001-12-27 T040506.789 America/Los_Angeles'; SELECT time with time zone 'J2452271 T040506.789 America/Los_Angeles'; -- Check time formats required by ISO 8601 SELECT time without time zone '040506.07'; SELECT time without time zone '04:05:06.07'; SELECT time without time zone '040506'; SELECT time without time zone '04:05:06'; SELECT time without time zone '0405'; SELECT time without time zone '04:05'; SELECT time without time zone 'T040506.07'; SELECT time without time zone 'T04:05:06.07'; SELECT time without time zone 'T040506'; SELECT time without time zone 'T04:05:06'; SELECT time without time zone 'T0405'; SELECT time without time zone 'T04:05'; -- 8601 says "Thh" is allowed, but we intentionally reject it as too vague SELECT time without time zone 'T04'; SELECT time with time zone '040506.07+08'; SELECT time with time zone '04:05:06.07+08'; SELECT time with time zone '040506+08'; SELECT time with time zone '04:05:06+08'; SELECT time with time zone '0405+08'; SELECT time with time zone '04:05+08'; SELECT time with time zone 'T040506.07+08'; SELECT time with time zone 'T04:05:06.07+08'; SELECT time with time zone 'T040506+08'; SELECT time with time zone 'T04:05:06+08'; SELECT time with time zone 'T0405+08'; SELECT time with time zone 'T04:05+08'; -- 8601 says "Thh" is allowed, but we intentionally reject it as too vague SELECT time with time zone 'T04+08'; SET DateStyle = 'Postgres, MDY'; -- Check Julian dates BC SELECT date 'J1520447' AS "Confucius' Birthday"; SELECT date 'J0' AS "Julian Epoch"; -- test error on dangling Julian units SELECT date '1995-08-06 J J J'; SELECT date 'J J 1520447'; -- We used to accept this input style, but it was based on a misreading -- of ISO8601, and it was never documented anyway SELECT timestamp with time zone 'Y2001M12D27H04M05S06.789+08'; SELECT timestamp with time zone 'Y2001M12D27H04MM05S06.789-08'; -- conflicting fields should throw errors SELECT date '1995-08-06 epoch'; SELECT date '1995-08-06 infinity'; SELECT date '1995-08-06 -infinity'; SELECT date 'today infinity'; SELECT date '-infinity infinity'; SELECT timestamp '1995-08-06 epoch'; SELECT timestamp '1995-08-06 infinity'; SELECT timestamp '1995-08-06 -infinity'; SELECT timestamp 'epoch 01:01:01'; SELECT timestamp 'infinity 01:01:01'; SELECT timestamp '-infinity 01:01:01'; SELECT timestamp 'now epoch'; SELECT timestamp '-infinity infinity'; SELECT timestamptz '1995-08-06 epoch'; SELECT timestamptz '1995-08-06 infinity'; SELECT timestamptz '1995-08-06 -infinity'; SELECT timestamptz 'epoch 01:01:01'; SELECT timestamptz 'infinity 01:01:01'; SELECT timestamptz '-infinity 01:01:01'; SELECT timestamptz 'now epoch'; SELECT timestamptz '-infinity infinity'; -- -- 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 '2000-01-01' - interval '2483590 days' AS "out of range"; SELECT timestamp without time zone '294276-12-31 23:59:59' + interval '9223372036854775807 microseconds' AS "out of range"; 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 d1 + interval '1 year' AS one_year FROM TIMESTAMP_TBL; SELECT 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 '2000-01-01' - interval '2483590 days' AS "out of range"; SELECT timestamp with time zone '294276-12-31 23:59:59 UTC' + interval '9223372036854775807 microseconds' AS "out of range"; 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 d1 + interval '1 year' AS one_year FROM TIMESTAMPTZ_TBL; SELECT 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 CAST(interval '-02:03' AS time) AS "21:57:00"; SELECT CAST(interval '-9223372022400000000 us' AS time) AS "00:00: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 WHERE isfinite(i.f1) 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 WHERE isfinite(i.f1) 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 f1 AS "timestamp" FROM TEMP_TIMESTAMP ORDER BY "timestamp"; SELECT 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 d.f1 AS "timestamp", t.f1 AS "interval", d.f1 - t.f1 AS minus FROM TEMP_TIMESTAMP d, INTERVAL_TBL t ORDER BY minus, "timestamp", "interval"; SELECT 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 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 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; -- -- 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'; -- -- Formats -- SET DateStyle TO 'US,Postgres'; SHOW DateStyle; SELECT d1 AS us_postgres FROM TIMESTAMP_TBL; SET DateStyle TO 'US,ISO'; SELECT d1 AS us_iso FROM TIMESTAMP_TBL; SET DateStyle TO 'US,SQL'; SHOW DateStyle; SELECT 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 d1 AS european_postgres FROM TIMESTAMP_TBL; SET DateStyle TO 'European,ISO'; SHOW DateStyle; SELECT d1 AS european_iso FROM TIMESTAMP_TBL; SET DateStyle TO 'European,SQL'; SHOW DateStyle; SELECT 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 EST', 'YYYY-MM-DD HH12:MI TZ'); SELECT to_timestamp('2011-12-18 11:38 -05', 'YYYY-MM-DD HH12:MI TZ'); SELECT to_timestamp('2011-12-18 11:38 +01:30', 'YYYY-MM-DD HH12:MI TZ'); SELECT to_timestamp('2011-12-18 11:38 MSK', 'YYYY-MM-DD HH12:MI TZ'); -- dyntz SELECT to_timestamp('2011-12-18 11:38ESTFOO24', 'YYYY-MM-DD HH12:MITZFOOSS'); SELECT to_timestamp('2011-12-18 11:38-05FOO24', 'YYYY-MM-DD HH12:MITZFOOSS'); SELECT to_timestamp('2011-12-18 11:38 JUNK', 'YYYY-MM-DD HH12:MI TZ'); -- error SELECT to_timestamp('2011-12-18 11:38 ...', 'YYYY-MM-DD HH12:MI TZ'); -- error SELECT to_timestamp('2011-12-18 11:38 -05', 'YYYY-MM-DD HH12:MI OF'); SELECT to_timestamp('2011-12-18 11:38 +01:30', 'YYYY-MM-DD HH12:MI OF'); SELECT to_timestamp('2011-12-18 11:38 +xyz', 'YYYY-MM-DD HH12:MI OF'); -- error SELECT to_timestamp('2011-12-18 11:38 +01:xyz', 'YYYY-MM-DD HH12:MI OF'); -- error 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 i, to_timestamp('20181102123456123456', 'YYYYMMDDHH24MISSFF' || 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 -- to_char's TZ format code produces zone abbrev if known 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 HH:MI:SS tz'); -- -- 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'); SET TIME ZONE '+2'; SELECT to_char('2012-12-12 12:00'::timestamptz, 'YYYY-MM-DD HH:MI:SS TZ'); RESET TIME ZONE; libpg_query-17-6.1.0/test/sql/postgres_regress/identity.sql000066400000000000000000000474051477334012600240360ustar00rootroot00000000000000-- 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 CREATE TABLE itest5 (a int generated always as identity, b text); INSERT INTO itest5 VALUES (1, 'a'); -- error INSERT INTO itest5 VALUES (DEFAULT, 'a'); -- ok INSERT INTO itest5 VALUES (2, 'b'), (3, 'c'); -- error INSERT INTO itest5 VALUES (DEFAULT, 'b'), (3, 'c'); -- error INSERT INTO itest5 VALUES (2, 'b'), (DEFAULT, 'c'); -- error INSERT INTO itest5 VALUES (DEFAULT, 'b'), (DEFAULT, 'c'); -- ok INSERT INTO itest5 OVERRIDING SYSTEM VALUE VALUES (-1, 'aa'); INSERT INTO itest5 OVERRIDING SYSTEM VALUE VALUES (-2, 'bb'), (-3, 'cc'); INSERT INTO itest5 OVERRIDING SYSTEM VALUE VALUES (DEFAULT, 'dd'), (-4, 'ee'); INSERT INTO itest5 OVERRIDING SYSTEM VALUE VALUES (-5, 'ff'), (DEFAULT, 'gg'); INSERT INTO itest5 OVERRIDING SYSTEM VALUE VALUES (DEFAULT, 'hh'), (DEFAULT, 'ii'); INSERT INTO itest5 OVERRIDING USER VALUE VALUES (-1, 'aaa'); INSERT INTO itest5 OVERRIDING USER VALUE VALUES (-2, 'bbb'), (-3, 'ccc'); INSERT INTO itest5 OVERRIDING USER VALUE VALUES (DEFAULT, 'ddd'), (-4, 'eee'); INSERT INTO itest5 OVERRIDING USER VALUE VALUES (-5, 'fff'), (DEFAULT, 'ggg'); INSERT INTO itest5 OVERRIDING USER VALUE VALUES (DEFAULT, 'hhh'), (DEFAULT, 'iii'); SELECT * FROM itest5; DROP TABLE itest5; 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 -- check that unlogged propagates to sequence CREATE UNLOGGED TABLE itest17 (a int NOT NULL, b text); ALTER TABLE itest17 ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY; ALTER TABLE itest17 ADD COLUMN c int GENERATED ALWAYS AS IDENTITY; \d itest17 \d itest17_a_seq \d itest17_c_seq CREATE TABLE itest18 (a int NOT NULL, b text); ALTER TABLE itest18 SET UNLOGGED, ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY; \d itest18 \d itest18_a_seq ALTER TABLE itest18 SET LOGGED; \d itest18 \d itest18_a_seq ALTER TABLE itest18 SET UNLOGGED; \d itest18 \d itest18_a_seq -- 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 -- partitions inherit identity column and share sequence CREATE TABLE pitest1 (f1 date NOT NULL, f2 text, f3 bigint generated always as identity) PARTITION BY RANGE (f1); -- new partition CREATE TABLE pitest1_p1 PARTITION OF pitest1 FOR VALUES FROM ('2016-07-01') TO ('2016-08-01'); INSERT into pitest1(f1, f2) VALUES ('2016-07-2', 'from pitest1'); INSERT into pitest1_p1 (f1, f2) VALUES ('2016-07-3', 'from pitest1_p1'); -- attached partition CREATE TABLE pitest1_p2 (f3 bigint, f2 text, f1 date NOT NULL); INSERT INTO pitest1_p2 (f1, f2, f3) VALUES ('2016-08-2', 'before attaching', 100); ALTER TABLE pitest1 ATTACH PARTITION pitest1_p2 FOR VALUES FROM ('2016-08-01') TO ('2016-09-01'); -- requires NOT NULL constraint ALTER TABLE pitest1_p2 ALTER COLUMN f3 SET NOT NULL; ALTER TABLE pitest1 ATTACH PARTITION pitest1_p2 FOR VALUES FROM ('2016-08-01') TO ('2016-09-01'); INSERT INTO pitest1_p2 (f1, f2) VALUES ('2016-08-3', 'from pitest1_p2'); INSERT INTO pitest1 (f1, f2) VALUES ('2016-08-4', 'from pitest1'); -- LIKE INCLUDING on partition CREATE TABLE pitest1_p1_like (LIKE pitest1_p1 INCLUDING IDENTITY); INSERT into pitest1_p1_like(f1, f2) VALUES ('2016-07-2', 'from pitest1_p1_like'); SELECT tableoid::regclass, f1, f2, f3 FROM pitest1; SELECT tableoid::regclass, f1, f2, f3 FROM pitest1_p1_like; ALTER TABLE pitest1 ALTER COLUMN f3 SET DATA TYPE bigint; SELECT tableoid::regclass, f1, f2, f3, pg_typeof(f3) FROM pitest1; SELECT tableoid::regclass, f1, f2, f3, pg_typeof(f3) FROM pitest1_p2; -- add identity column CREATE TABLE pitest2 (f1 date NOT NULL, f2 text) PARTITION BY RANGE (f1); CREATE TABLE pitest2_p1 PARTITION OF pitest2 FOR VALUES FROM ('2016-07-01') TO ('2016-08-01'); CREATE TABLE pitest2_p2 PARTITION OF pitest2 FOR VALUES FROM ('2016-08-01') TO ('2016-09-01'); INSERT into pitest2(f1, f2) VALUES ('2016-07-2', 'from pitest2'); INSERT INTO pitest2 (f1, f2) VALUES ('2016-08-2', 'from pitest2'); ALTER TABLE pitest2 ADD COLUMN f3 int GENERATED ALWAYS AS IDENTITY; INSERT into pitest2_p1 (f1, f2) VALUES ('2016-07-3', 'from pitest2_p1'); INSERT INTO pitest2_p2 (f1, f2) VALUES ('2016-08-3', 'from pitest2_p2'); INSERT into pitest2(f1, f2) VALUES ('2016-07-4', 'from pitest2'); INSERT INTO pitest2 (f1, f2) VALUES ('2016-08-4', 'from pitest2'); SELECT tableoid::regclass, f1, f2, f3 FROM pitest2; -- SET identity column ALTER TABLE pitest2_p1 ALTER COLUMN f3 SET GENERATED BY DEFAULT; -- fails ALTER TABLE pitest2_p1 ALTER COLUMN f3 SET INCREMENT BY 2; -- fails ALTER TABLE ONLY pitest2 ALTER COLUMN f3 SET GENERATED BY DEFAULT SET INCREMENT BY 2 SET START WITH 1000 RESTART; -- fails ALTER TABLE pitest2 ALTER COLUMN f3 SET GENERATED BY DEFAULT SET INCREMENT BY 2 SET START WITH 1000 RESTART; INSERT into pitest2(f1, f2, f3) VALUES ('2016-07-5', 'from pitest2', 200); INSERT INTO pitest2(f1, f2) VALUES ('2016-08-5', 'from pitest2'); INSERT into pitest2_p1 (f1, f2) VALUES ('2016-07-6', 'from pitest2_p1'); INSERT INTO pitest2_p2 (f1, f2, f3) VALUES ('2016-08-6', 'from pitest2_p2', 300); SELECT tableoid::regclass, f1, f2, f3 FROM pitest2; -- detaching a partition removes identity property ALTER TABLE pitest2 DETACH PARTITION pitest2_p1; INSERT into pitest2(f1, f2) VALUES ('2016-08-7', 'from pitest2'); INSERT into pitest2_p1 (f1, f2) VALUES ('2016-07-7', 'from pitest2_p1'); -- error INSERT into pitest2_p1 (f1, f2, f3) VALUES ('2016-07-7', 'from pitest2_p1', 2000); SELECT tableoid::regclass, f1, f2, f3 FROM pitest2; SELECT tableoid::regclass, f1, f2, f3 FROM pitest2_p1; DROP TABLE pitest2_p1; -- changing a regular column to identity column in a partitioned table CREATE TABLE pitest3 (f1 date NOT NULL, f2 text, f3 int) PARTITION BY RANGE (f1); CREATE TABLE pitest3_p1 PARTITION OF pitest3 FOR VALUES FROM ('2016-07-01') TO ('2016-08-01'); INSERT into pitest3 VALUES ('2016-07-2', 'from pitest3', 1); INSERT into pitest3_p1 VALUES ('2016-07-3', 'from pitest3_p1', 2); -- fails, changing only a partition not allowed ALTER TABLE pitest3_p1 ALTER COLUMN f3 SET NOT NULL, ALTER COLUMN f3 ADD GENERATED ALWAYS AS IDENTITY (START WITH 3); -- fails, changing only the partitioned table not allowed BEGIN; ALTER TABLE pitest3_p1 ALTER COLUMN f3 SET NOT NULL; ALTER TABLE ONLY pitest3 ALTER COLUMN f3 ADD GENERATED ALWAYS AS IDENTITY (START WITH 3); ROLLBACK; ALTER TABLE pitest3 ALTER COLUMN f3 SET NOT NULL, ALTER COLUMN f3 ADD GENERATED ALWAYS AS IDENTITY (START WITH 3); INSERT into pitest3(f1, f2) VALUES ('2016-07-4', 'from pitest3'); INSERT into pitest3_p1 (f1, f2) VALUES ('2016-07-5', 'from pitest3_p1'); SELECT tableoid::regclass, f1, f2, f3 FROM pitest3; -- changing an identity column to a non-identity column in a partitioned table ALTER TABLE pitest3_p1 ALTER COLUMN f3 DROP IDENTITY; -- fails ALTER TABLE ONLY pitest3 ALTER COLUMN f3 DROP IDENTITY; -- fails ALTER TABLE pitest3 ALTER COLUMN f3 DROP IDENTITY; INSERT into pitest3(f1, f2) VALUES ('2016-07-4', 'from pitest3'); -- fails INSERT into pitest3_p1 (f1, f2) VALUES ('2016-07-5', 'from pitest3_p1'); -- fails INSERT into pitest3(f1, f2, f3) VALUES ('2016-07-6', 'from pitest3', 5); INSERT into pitest3_p1 (f1, f2, f3) VALUES ('2016-07-7', 'from pitest3_p1', 6); SELECT tableoid::regclass, f1, f2, f3 FROM pitest3; -- Changing NOT NULL constraint of identity columns is not allowed ALTER TABLE pitest1_p1 ALTER COLUMN f3 DROP NOT NULL; ALTER TABLE pitest1 ALTER COLUMN f3 DROP NOT NULL; -- Identity columns have their own default ALTER TABLE pitest1_p2 ALTER COLUMN f3 SET DEFAULT 10000; ALTER TABLE pitest1 ALTER COLUMN f3 SET DEFAULT 10000; -- Adding identity to an identity column is not allowed ALTER TABLE pitest1_p2 ALTER COLUMN f3 ADD GENERATED BY DEFAULT AS IDENTITY; ALTER TABLE pitest1 ALTER COLUMN f3 ADD GENERATED BY DEFAULT AS IDENTITY; -- partitions with their own identity columns are not allowed, even if the -- partitioned table does not have an identity column. CREATE TABLE pitest1_pfail PARTITION OF pitest1 ( f3 WITH OPTIONS GENERATED ALWAYS AS IDENTITY ) FOR VALUES FROM ('2016-11-01') TO ('2016-12-01'); CREATE TABLE pitest_pfail PARTITION OF pitest3 ( f3 WITH OPTIONS GENERATED ALWAYS AS IDENTITY ) FOR VALUES FROM ('2016-07-01') TO ('2016-08-01'); CREATE TABLE pitest1_pfail (f1 date NOT NULL, f2 text, f3 bigint GENERATED ALWAYS AS IDENTITY); ALTER TABLE pitest1 ATTACH PARTITION pitest1_pfail FOR VALUES FROM ('2016-11-01') TO ('2016-12-01'); ALTER TABLE pitest3 ATTACH PARTITION pitest1_pfail FOR VALUES FROM ('2016-11-01') TO ('2016-12-01'); DROP TABLE pitest1_pfail; DROP TABLE pitest3; -- 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; -- MERGE tests CREATE TABLE itest15 (a int GENERATED ALWAYS AS IDENTITY, b text); CREATE TABLE itest16 (a int GENERATED BY DEFAULT AS IDENTITY, b text); MERGE INTO itest15 t USING (SELECT 10 AS s_a, 'inserted by merge' AS s_b) s ON t.a = s.s_a WHEN NOT MATCHED THEN INSERT (a, b) VALUES (s.s_a, s.s_b); -- Used to fail, but now it works and ignores the user supplied value MERGE INTO itest15 t USING (SELECT 20 AS s_a, 'inserted by merge' AS s_b) s ON t.a = s.s_a WHEN NOT MATCHED THEN INSERT (a, b) OVERRIDING USER VALUE VALUES (s.s_a, s.s_b); MERGE INTO itest15 t USING (SELECT 30 AS s_a, 'inserted by merge' AS s_b) s ON t.a = s.s_a WHEN NOT MATCHED THEN INSERT (a, b) OVERRIDING SYSTEM VALUE VALUES (s.s_a, s.s_b); MERGE INTO itest16 t USING (SELECT 10 AS s_a, 'inserted by merge' AS s_b) s ON t.a = s.s_a WHEN NOT MATCHED THEN INSERT (a, b) VALUES (s.s_a, s.s_b); MERGE INTO itest16 t USING (SELECT 20 AS s_a, 'inserted by merge' AS s_b) s ON t.a = s.s_a WHEN NOT MATCHED THEN INSERT (a, b) OVERRIDING USER VALUE VALUES (s.s_a, s.s_b); MERGE INTO itest16 t USING (SELECT 30 AS s_a, 'inserted by merge' AS s_b) s ON t.a = s.s_a WHEN NOT MATCHED THEN INSERT (a, b) OVERRIDING SYSTEM VALUE VALUES (s.s_a, s.s_b); SELECT * FROM itest15; SELECT * FROM itest16; DROP TABLE itest15; DROP TABLE itest16; -- For testing of pg_dump and pg_upgrade, leave behind some identity -- sequences whose logged-ness doesn't match their owning table's. CREATE TABLE identity_dump_logged (a INT GENERATED ALWAYS AS IDENTITY); ALTER SEQUENCE identity_dump_logged_a_seq SET UNLOGGED; CREATE UNLOGGED TABLE identity_dump_unlogged (a INT GENERATED ALWAYS AS IDENTITY); ALTER SEQUENCE identity_dump_unlogged_a_seq SET LOGGED; SELECT relname, relpersistence FROM pg_class WHERE relname ~ '^identity_dump_' ORDER BY 1; libpg_query-17-6.1.0/test/sql/postgres_regress/incremental_sort.sql000066400000000000000000000312141477334012600255440ustar00rootroot00000000000000-- 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; reset enable_hashagg; reset enable_seqscan; reset enable_incremental_sort; reset parallel_tuple_cost; reset parallel_setup_cost; reset min_parallel_table_scan_size; reset min_parallel_index_scan_size; -- Ensure incremental sorts work for amcanorderbyop type indexes create table point_table (a point, b int); create index point_table_a_idx on point_table using gist(a); -- Ensure we get an incremental sort plan for both of the following queries explain (costs off) select a, b, a <-> point(5, 5) dist from point_table order by dist, b limit 1; explain (costs off) select a, b, a <-> point(5, 5) dist from point_table order by dist, b desc limit 1; libpg_query-17-6.1.0/test/sql/postgres_regress/index_including.sql000066400000000000000000000247161477334012600253500ustar00rootroot00000000000000/* * 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, gist and spgist 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; /* * 10. Test coverage for names stored as cstrings in indexes */ CREATE TABLE nametbl (c1 int, c2 name, c3 float); CREATE INDEX nametbl_c1_c2_idx ON nametbl (c2, c1) INCLUDE (c3); INSERT INTO nametbl VALUES(1, 'two', 3.0); VACUUM nametbl; SET enable_seqscan = 0; -- Ensure we get an index only scan plan EXPLAIN (COSTS OFF) SELECT c2, c1, c3 FROM nametbl WHERE c2 = 'two' AND c1 = 1; -- Validate the results look sane SELECT c2, c1, c3 FROM nametbl WHERE c2 = 'two' AND c1 = 1; RESET enable_seqscan; DROP TABLE nametbl; libpg_query-17-6.1.0/test/sql/postgres_regress/index_including_gist.sql000066400000000000000000000074401477334012600263710ustar00rootroot00000000000000/* * 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-17-6.1.0/test/sql/postgres_regress/indexing.sql000066400000000000000000001315201477334012600240020ustar00rootroot00000000000000-- 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, d bool) 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; -- While here, also check matching when creating an index after the fact. create index on idxpart1 ((a+b)) where d = true; \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; create index idxparti3 on idxpart ((a+b)) where d = true; \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; -- OK to add an exclusion constraint if partitioning by its equal column create table idxpart (a int4range, exclude USING GIST (a with = )) partition by range (a); drop table idxpart; -- OK more than one equal column create table idxpart (a int4range, b int4range, exclude USING GIST (a with =, b with =)) partition by range (a, b); drop table idxpart; -- OK with more than one equal column: constraint is a proper superset of partition key create table idxpart (a int4range, b int4range, exclude USING GIST (a with =, b with =)) partition by range (a); drop table idxpart; -- Not OK more than one equal column: partition keys are a proper superset of constraint create table idxpart (a int4range, b int4range, exclude USING GIST (a with = )) partition by range (a, b); -- Not OK with just -|- create table idxpart (a int4range, exclude USING GIST (a with -|- )) partition by range (a); -- OK with equals and &&, and equals is the partition key create table idxpart (a int4range, b int4range, exclude USING GIST (a with =, b with &&)) partition by range (a); drop table idxpart; -- Not OK with equals and &&, and equals is not the partition key create table idxpart (a int4range, b int4range, c int4range, exclude USING GIST (b with =, c with &&)) partition by range (a); -- OK more than one equal column and a && column create table idxpart (a int4range, b int4range, c int4range, exclude USING GIST (a with =, b with =, c with &&)) partition by range (a, b); drop table idxpart; -- 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 can be added if partitioning by their equal column create table idxpart (a int4range, b int4range) partition by range (a); alter table idxpart add exclude USING GIST (a with =); drop table idxpart; -- OK more than one equal column create table idxpart (a int4range, b int4range) partition by range (a, b); alter table idxpart add exclude USING GIST (a with =, b with =); drop table idxpart; -- OK with more than one equal column: constraint is a proper superset of partition key create table idxpart (a int4range, b int4range) partition by range (a); alter table idxpart add exclude USING GIST (a with =, b with =); drop table idxpart; -- Not OK more than one equal column: partition keys are a proper superset of constraint create table idxpart (a int4range, b int4range) partition by range (a, b); alter table idxpart add exclude USING GIST (a with =); drop table idxpart; -- Not OK with just -|- create table idxpart (a int4range, b int4range) partition by range (a, b); alter table idxpart add exclude USING GIST (a with -|-); drop table idxpart; -- OK with equals and &&, and equals is the partition key create table idxpart (a int4range, b int4range) partition by range (a); alter table idxpart add exclude USING GIST (a with =, b with &&); drop table idxpart; -- Not OK with equals and &&, and equals is not the partition key create table idxpart (a int4range, b int4range, c int4range) partition by range (a); alter table idxpart add exclude USING GIST (b with =, c with &&); drop table idxpart; -- OK more than one equal column and a && column create table idxpart (a int4range, b int4range, c int4range) partition by range (a, b); alter table idxpart add exclude USING GIST (a with =, b with =, c 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 conrelid::regclass::text, 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 index idxpart_pkey attach partition idxpart0_a_key; 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; -- Test some other non-btree index types create table idxpart (a int, b text, c int[]) partition by range (a); create table idxpart1 partition of idxpart for values from (0) to (100000); set enable_seqscan to off; create index idxpart_brin on idxpart using brin(b); explain (costs off) select * from idxpart where b = 'abcd'; drop index idxpart_brin; create index idxpart_spgist on idxpart using spgist(b); explain (costs off) select * from idxpart where b = 'abcd'; drop index idxpart_spgist; create index idxpart_gin on idxpart using gin(c); explain (costs off) select * from idxpart where c @> array[42]; drop index idxpart_gin; reset enable_seqscan; 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; -- Check that invalid indexes are not selected when attaching a partition. create table parted_inval_tab (a int) partition by range (a); create index parted_inval_idx on parted_inval_tab (a); create table parted_inval_tab_1 (a int) partition by range (a); create table parted_inval_tab_1_1 partition of parted_inval_tab_1 for values from (0) to (10); create table parted_inval_tab_1_2 partition of parted_inval_tab_1 for values from (10) to (20); -- this creates an invalid index. create index parted_inval_ixd_1 on only parted_inval_tab_1 (a); -- this creates new indexes for all the partitions of parted_inval_tab_1, -- discarding the invalid index created previously as what is chosen. alter table parted_inval_tab attach partition parted_inval_tab_1 for values from (1) to (100); select indexrelid::regclass, indisvalid, indrelid::regclass, inhparent::regclass from pg_index idx left join pg_inherits inh on (idx.indexrelid = inh.inhrelid) where indexrelid::regclass::text like 'parted_inval%' order by indexrelid::regclass::text collate "C"; drop table parted_inval_tab; -- Check setup of indisvalid across a complex partition tree on index -- creation. If one index in a partition index is invalid, so should its -- partitioned index. create table parted_isvalid_tab (a int, b int) partition by range (a); create table parted_isvalid_tab_1 partition of parted_isvalid_tab for values from (1) to (10) partition by range (a); create table parted_isvalid_tab_2 partition of parted_isvalid_tab for values from (10) to (20) partition by range (a); create table parted_isvalid_tab_11 partition of parted_isvalid_tab_1 for values from (1) to (5); create table parted_isvalid_tab_12 partition of parted_isvalid_tab_1 for values from (5) to (10); -- create an invalid index on one of the partitions. insert into parted_isvalid_tab_11 values (1, 0); create index concurrently parted_isvalid_idx_11 on parted_isvalid_tab_11 ((a/b)); -- The previous invalid index is selected, invalidating all the indexes up to -- the top-most parent. create index parted_isvalid_idx on parted_isvalid_tab ((a/b)); select indexrelid::regclass, indisvalid, indrelid::regclass, inhparent::regclass from pg_index idx left join pg_inherits inh on (idx.indexrelid = inh.inhrelid) where indexrelid::regclass::text like 'parted_isvalid%' order by indexrelid::regclass::text collate "C"; drop table parted_isvalid_tab; -- Check state of replica indexes when attaching a partition. begin; create table parted_replica_tab (id int not null) partition by range (id); create table parted_replica_tab_1 partition of parted_replica_tab for values from (1) to (10) partition by range (id); create table parted_replica_tab_11 partition of parted_replica_tab_1 for values from (1) to (5); create unique index parted_replica_idx on only parted_replica_tab using btree (id); create unique index parted_replica_idx_1 on only parted_replica_tab_1 using btree (id); -- This triggers an update of pg_index.indisreplident for parted_replica_idx. alter table only parted_replica_tab_1 replica identity using index parted_replica_idx_1; create unique index parted_replica_idx_11 on parted_replica_tab_11 USING btree (id); select indexrelid::regclass, indisvalid, indisreplident, indrelid::regclass, inhparent::regclass from pg_index idx left join pg_inherits inh on (idx.indexrelid = inh.inhrelid) where indexrelid::regclass::text like 'parted_replica%' order by indexrelid::regclass::text collate "C"; -- parted_replica_idx is not valid yet here, because parted_replica_idx_1 -- is not valid. alter index parted_replica_idx ATTACH PARTITION parted_replica_idx_1; select indexrelid::regclass, indisvalid, indisreplident, indrelid::regclass, inhparent::regclass from pg_index idx left join pg_inherits inh on (idx.indexrelid = inh.inhrelid) where indexrelid::regclass::text like 'parted_replica%' order by indexrelid::regclass::text collate "C"; -- parted_replica_idx becomes valid here. alter index parted_replica_idx_1 ATTACH PARTITION parted_replica_idx_11; alter table only parted_replica_tab_1 replica identity using index parted_replica_idx_1; commit; select indexrelid::regclass, indisvalid, indisreplident, indrelid::regclass, inhparent::regclass from pg_index idx left join pg_inherits inh on (idx.indexrelid = inh.inhrelid) where indexrelid::regclass::text like 'parted_replica%' order by indexrelid::regclass::text collate "C"; drop table parted_replica_tab; libpg_query-17-6.1.0/test/sql/postgres_regress/indirect_toast.sql000066400000000000000000000064131477334012600252120ustar00rootroot00000000000000-- -- Tests for external toast datums -- -- directory paths and dlsuffix are passed to us in environment variables \getenv libdir PG_LIBDIR \getenv dlsuffix PG_DLSUFFIX \set regresslib :libdir '/regress' :dlsuffix CREATE FUNCTION make_tuple_indirect (record) RETURNS record AS :'regresslib' LANGUAGE C STRICT; -- Other compression algorithms may cause the compressed data to be stored -- inline. pglz guarantees that the data is externalized, so stick to it. SET default_toast_compression = 'pglz'; CREATE 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(); RESET default_toast_compression; libpg_query-17-6.1.0/test/sql/postgres_regress/inet.sql000066400000000000000000000247561477334012600231500ustar00rootroot00000000000000-- -- 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 c AS cidr, i AS inet FROM INET_TBL; -- now test some support functions SELECT i AS inet, host(i), text(i), family(i) FROM INET_TBL; SELECT c AS cidr, abbrev(c) FROM INET_TBL; SELECT c AS cidr, broadcast(c), i AS inet, broadcast(i) FROM INET_TBL; SELECT c AS cidr, network(c) AS "network(cidr)", i AS inet, network(i) AS "network(inet)" FROM INET_TBL; SELECT c AS cidr, masklen(c) AS "masklen(cidr)", i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL; SELECT c AS cidr, masklen(c) AS "masklen(cidr)", i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL WHERE masklen(c) <= 8; SELECT c AS cidr, i AS inet FROM INET_TBL WHERE c = i; SELECT 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 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; -- test non-error-throwing API for some core types SELECT pg_input_is_valid('1234', 'cidr'); SELECT * FROM pg_input_error_info('1234', 'cidr'); SELECT pg_input_is_valid('192.168.198.200/24', 'cidr'); SELECT * FROM pg_input_error_info('192.168.198.200/24', 'cidr'); SELECT pg_input_is_valid('1234', 'inet'); SELECT * FROM pg_input_error_info('1234', 'inet'); libpg_query-17-6.1.0/test/sql/postgres_regress/infinite_recurse.sql000066400000000000000000000017431477334012600255350ustar00rootroot00000000000000-- 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-17-6.1.0/test/sql/postgres_regress/inherit.sql000066400000000000000000001370371477334012600236500ustar00rootroot00000000000000-- -- 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 first child excluded create table some_tab (f1 int, f2 int, f3 int, check (f1 < 10) no inherit); create table some_tab_child () inherits(some_tab); insert into some_tab_child select i, i+1, 0 from generate_series(1,1000) i; create index on some_tab_child(f1, f2); -- while at it, also check that statement-level triggers fire create function some_tab_stmt_trig_func() returns trigger as $$begin raise notice 'updating some_tab'; return NULL; end;$$ language plpgsql; create trigger some_tab_stmt_trig before update on some_tab execute function some_tab_stmt_trig_func(); explain (costs off) update some_tab set f3 = 11 where f1 = 12 and f2 = 13; update some_tab set f3 = 11 where f1 = 12 and f2 = 13; drop table some_tab cascade; drop function some_tab_stmt_trig_func(); -- 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 adding a column to a parent table with complex inheritance CREATE TABLE inhta (); CREATE TABLE inhtb () INHERITS (inhta); CREATE TABLE inhtc () INHERITS (inhtb); CREATE TABLE inhtd () INHERITS (inhta, inhtb, inhtc); ALTER TABLE inhta ADD COLUMN i int; \d+ inhta DROP TABLE inhta, inhtb, inhtc, inhtd; -- 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 DROP behavior of multiply-defined CHECK constraints -- create table p1(f1 int constraint f1_pos CHECK (f1 > 0)); create table p1_c1 (f1 int constraint f1_pos CHECK (f1 > 0)) inherits (p1); alter table p1_c1 drop constraint f1_pos; alter table p1 drop constraint f1_pos; \d p1_c1 drop table p1 cascade; create table p1(f1 int constraint f1_pos CHECK (f1 > 0)); create table p2(f1 int constraint f1_pos CHECK (f1 > 0)); create table p1p2_c1 (f1 int) inherits (p1, p2); create table p1p2_c2 (f1 int constraint f1_pos CHECK (f1 > 0)) inherits (p1, p2); alter table p2 drop constraint f1_pos; alter table p1 drop constraint f1_pos; \d p1p2_c* drop table p1, p2 cascade; create table p1(f1 int constraint f1_pos CHECK (f1 > 0)); create table p1_c1() inherits (p1); create table p1_c2() inherits (p1); create table p1_c1c2() inherits (p1_c1, p1_c2); \d p1_c1c2 alter table p1 drop constraint f1_pos; \d p1_c1c2 drop table p1 cascade; create table p1(f1 int constraint f1_pos CHECK (f1 > 0)); create table p1_c1() inherits (p1); create table p1_c2(constraint f1_pos CHECK (f1 > 0)) inherits (p1); create table p1_c1c2() inherits (p1_c1, p1_c2, p1); alter table p1_c2 drop constraint f1_pos; alter table p1 drop constraint f1_pos; alter table p1_c1c2 drop constraint f1_pos; alter table p1_c2 drop constraint f1_pos; \d p1_c1c2 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; explain (verbose, costs off) -- bug #18652 select 1 - id as c from (select id from matest3 t1 union all select id * 2 from matest3 t2) ss order by c; select 1 - id as c from (select id from matest3 t1 union all select id * 2 from matest3 t2) ss order by c; 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 a MergeAppend plan where one child requires a sort create table matest0(a int primary key); create table matest1() inherits (matest0); insert into matest0 select generate_series(1, 400); insert into matest1 select generate_series(1, 200); analyze matest0; analyze matest1; explain (costs off) select * from matest0 where a < 100 order by a; 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 MULTIEXPR SubPlans in inherited updates -- create table inhpar(f1 int, f2 name); create table inhcld(f2 name, f1 int); alter table inhcld inherit inhpar; insert into inhpar select x, x::text from generate_series(1,5) x; insert into inhcld select x::text, x from generate_series(6,10) x; explain (verbose, costs off) update inhpar i set (f1, f2) = (select i.f1, i.f2 || '-' from int4_tbl limit 1); update inhpar i set (f1, f2) = (select i.f1, i.f2 || '-' from int4_tbl limit 1); select * from inhpar; drop table inhpar cascade; -- -- And the same for partitioned cases -- create table inhpar(f1 int primary key, f2 name) partition by range (f1); create table inhcld1(f2 name, f1 int primary key); create table inhcld2(f1 int primary key, f2 name); alter table inhpar attach partition inhcld1 for values from (1) to (5); alter table inhpar attach partition inhcld2 for values from (5) to (100); insert into inhpar select x, x::text from generate_series(1,10) x; explain (verbose, costs off) update inhpar i set (f1, f2) = (select i.f1, i.f2 || '-' from int4_tbl limit 1); update inhpar i set (f1, f2) = (select i.f1, i.f2 || '-' from int4_tbl limit 1); select * from inhpar; -- Also check ON CONFLICT insert into inhpar as i values (3), (7) on conflict (f1) do update set (f1, f2) = (select i.f1, i.f2 || '+'); select * from inhpar order by f1; -- tuple order might be unstable here drop table inhpar cascade; -- -- 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; -- -- Mixed ownership inheritance tree -- create role regress_alice; create role regress_bob; grant all on schema public to regress_alice, regress_bob; grant regress_alice to regress_bob; set session authorization regress_alice; create table inh_parent (a int not null); set session authorization regress_bob; create table inh_child () inherits (inh_parent); set session authorization regress_alice; -- alice can't do this: she doesn't own inh_child alter table inh_parent alter a drop not null; set session authorization regress_bob; alter table inh_parent alter a drop not null; reset session authorization; drop table inh_parent, inh_child; revoke all on schema public from regress_alice, regress_bob; drop role regress_alice, regress_bob; -- -- 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; set enable_bitmapscan to off; set enable_sort to off; 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; explain (costs off) select * from mclparted where a in(3,4,5) order by a; -- Introduce a NULL and DEFAULT partition so we can test more complex cases create table mclparted_null partition of mclparted for values in(null); create table mclparted_def partition of mclparted default; -- Append can be used providing we don't scan the interleaved partition explain (costs off) select * from mclparted where a in(1,2,4) order by a; explain (costs off) select * from mclparted where a in(1,2,4) or a is null order by a; -- Test a more complex case where the NULL partition allows some other value drop table mclparted_null; create table mclparted_0_null partition of mclparted for values in(0,null); -- Ensure MergeAppend is used since 0 and NULLs are in the same partition. explain (costs off) select * from mclparted where a in(1,2,4) or a is null order by a; explain (costs off) select * from mclparted where a in(0,1,2,4) order by a; -- Ensure Append is used when the null partition is pruned explain (costs off) select * from mclparted where a in(1,2,4) order by a; -- Ensure MergeAppend is used when the default partition is not pruned explain (costs off) select * from mclparted where a in(1,2,4,100) order by a; drop table mclparted; reset enable_sort; reset enable_bitmapscan; -- 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(fipshash(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-17-6.1.0/test/sql/postgres_regress/init_privs.sql000066400000000000000000000005541477334012600243650ustar00rootroot00000000000000-- 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-17-6.1.0/test/sql/postgres_regress/insert.sql000066400000000000000000000702241477334012600235040ustar00rootroot00000000000000-- -- 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; -- -- tuple larger than fillfactor -- CREATE TABLE large_tuple_test (a int, b text) WITH (fillfactor = 10); ALTER TABLE large_tuple_test ALTER COLUMN b SET STORAGE plain; -- create page w/ free space in range [nearlyEmptyFreeSpace, MaxHeapTupleSize) INSERT INTO large_tuple_test (select 1, NULL); -- should still fit on the page INSERT INTO large_tuple_test (select 2, repeat('a', 1000)); SELECT pg_size_pretty(pg_relation_size('large_tuple_test'::regclass, 'main')); -- add small record to the second page INSERT INTO large_tuple_test (select 3, NULL); -- now this tuple won't fit on the second page, but the insert should -- still succeed by extending the relation INSERT INTO large_tuple_test (select 4, repeat('a', 8126)); DROP TABLE large_tuple_test; -- -- 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; -- Make the same tests with domains over the array and composite fields create domain insert_pos_ints as int[] check (value[1] > 0); create domain insert_test_domain as insert_test_type check ((value).if2[1] is not null); create table inserttesta (f1 int, f2 insert_pos_ints); create table inserttestb (f3 insert_test_domain, f4 insert_test_domain[]); insert into inserttesta (f2[1], f2[2]) values (1,2); insert into inserttesta (f2[1], f2[2]) values (3,4), (5,6); insert into inserttesta (f2[1], f2[2]) select 7,8; insert into inserttesta (f2[1], f2[2]) values (1,default); -- not supported insert into inserttesta (f2[1], f2[2]) values (0,2); insert into inserttesta (f2[1], f2[2]) values (3,4), (0,6); insert into inserttesta (f2[1], f2[2]) select 0,8; insert into inserttestb (f3.if1, f3.if2) values (1,array['foo']); insert into inserttestb (f3.if1, f3.if2) values (1,'{foo}'), (2,'{bar}'); insert into inserttestb (f3.if1, f3.if2) select 3, '{baz,quux}'; insert into inserttestb (f3.if1, f3.if2) values (1,default); -- not supported insert into inserttestb (f3.if1, f3.if2) values (1,array[null]); insert into inserttestb (f3.if1, f3.if2) values (1,'{null}'), (2,'{bar}'); insert into inserttestb (f3.if1, f3.if2) select 3, '{null,quux}'; insert into inserttestb (f3.if2[1], f3.if2[2]) values ('foo', 'bar'); insert into inserttestb (f3.if2[1], f3.if2[2]) values ('foo', 'bar'), ('baz', 'quux'); insert into inserttestb (f3.if2[1], f3.if2[2]) select 'bear', 'beer'; insert into inserttestb (f3, f4[1].if2[1], f4[1].if2[2]) values (row(1,'{x}'), 'foo', 'bar'); insert into inserttestb (f3, f4[1].if2[1], f4[1].if2[2]) values (row(1,'{x}'), 'foo', 'bar'), (row(2,'{y}'), 'baz', 'quux'); insert into inserttestb (f3, f4[1].if2[1], f4[1].if2[2]) select row(1,'{x}')::insert_test_domain, 'bear', 'beer'; select * from inserttesta; select * from inserttestb; -- also check reverse-listing create table inserttest2 (f1 bigint, f2 text); create rule irule1 as on insert to inserttest2 do also insert into inserttestb (f3.if2[1], f3.if2[2]) values (new.f1,new.f2); create rule irule2 as on insert to inserttest2 do also insert into inserttestb (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 inserttestb (f4[1].if1, f4[1].if2[2]) select new.f1, new.f2; \d+ inserttest2 drop table inserttest2; drop table inserttesta; drop table inserttestb; drop domain insert_pos_ints; drop domain insert_test_domain; -- Verify that multiple inserts to subfields of a domain-over-container -- check the domain constraints only on the finished value create domain insert_nnarray as int[] check (value[1] is not null and value[2] is not null); create domain insert_test_domain as insert_test_type check ((value).if1 is not null and (value).if2 is not null); create table inserttesta (f1 insert_nnarray); insert into inserttesta (f1[1]) values (1); -- fail insert into inserttesta (f1[1], f1[2]) values (1, 2); create table inserttestb (f1 insert_test_domain); insert into inserttestb (f1.if1) values (1); -- fail insert into inserttestb (f1.if1, f1.if2) values (1, '{foo}'); drop table inserttesta; drop table inserttestb; drop domain insert_nnarray; drop type insert_test_type cascade; -- 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 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 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-17-6.1.0/test/sql/postgres_regress/insert_conflict.sql000066400000000000000000000702531477334012600253670ustar00rootroot00000000000000-- -- insert...on conflict do unique index inference -- create table insertconflicttest(key int4, fruit text); -- These things should work through a view, as well create view insertconflictview as select * from insertconflicttest; -- -- 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 insertconflictview 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 -- Check helpful hint when qualifying set column with target table insert into insertconflicttest values (3, 'Kiwi') on conflict (key, fruit) do update set insertconflicttest.fruit = 'Mango'; 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 as t values (23, 'Blackberry') on conflict (key) where fruit like '%berry' and t.fruit = 'inconsequential' do nothing; insert into insertconflictview as t values (23, 'Blackberry') on conflict (key) where fruit like '%berry' and t.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 view insertconflictview; 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-17-6.1.0/test/sql/postgres_regress/int2.sql000066400000000000000000000075301477334012600230540ustar00rootroot00000000000000-- -- INT2 -- -- int2_tbl was already created and filled in test_setup.sql. -- Here we just try to insert bad values. INSERT INTO INT2_TBL(f1) VALUES ('34.5'); 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 * FROM INT2_TBL; -- Also try it with non-error-throwing API SELECT pg_input_is_valid('34', 'int2'); SELECT pg_input_is_valid('asdf', 'int2'); SELECT pg_input_is_valid('50000', 'int2'); SELECT * FROM pg_input_error_info('50000', 'int2'); -- While we're here, check int2vector as well SELECT pg_input_is_valid(' 1 3 5 ', 'int2vector'); SELECT * FROM pg_input_error_info('1 asdf', 'int2vector'); SELECT * FROM pg_input_error_info('50000', 'int2vector'); SELECT * FROM INT2_TBL AS f(a, b); SELECT * FROM (TABLE int2_tbl) AS s (a, b); SELECT i.* FROM INT2_TBL i WHERE i.f1 <> int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 <> int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 = int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 = int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 < int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 < int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 <= int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 <= int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 > int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 > int4 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 >= int2 '0'; SELECT i.* FROM INT2_TBL i WHERE i.f1 >= int4 '0'; -- positive odds SELECT i.* FROM INT2_TBL i WHERE (i.f1 % int2 '2') = int2 '1'; -- any evens SELECT i.* FROM INT2_TBL i WHERE (i.f1 % int4 '2') = int2 '0'; SELECT i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i WHERE abs(f1) < 16384; SELECT i.f1, i.f1 * int4 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 + int2 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 + int2 '2' AS x FROM INT2_TBL i WHERE f1 < 32766; SELECT i.f1, i.f1 + int4 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 - int2 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 - int2 '2' AS x FROM INT2_TBL i WHERE f1 > -32767; SELECT i.f1, i.f1 - int4 '2' AS x FROM INT2_TBL i; SELECT i.f1, i.f1 / int2 '2' AS x FROM INT2_TBL i; SELECT 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); -- non-decimal literals SELECT int2 '0b100101'; SELECT int2 '0o273'; SELECT int2 '0x42F'; SELECT int2 '0b'; SELECT int2 '0o'; SELECT int2 '0x'; -- cases near overflow SELECT int2 '0b111111111111111'; SELECT int2 '0b1000000000000000'; SELECT int2 '0o77777'; SELECT int2 '0o100000'; SELECT int2 '0x7FFF'; SELECT int2 '0x8000'; SELECT int2 '-0b1000000000000000'; SELECT int2 '-0b1000000000000001'; SELECT int2 '-0o100000'; SELECT int2 '-0o100001'; SELECT int2 '-0x8000'; SELECT int2 '-0x8001'; -- underscores SELECT int2 '1_000'; SELECT int2 '1_2_3'; SELECT int2 '0xE_FF'; SELECT int2 '0o2_73'; SELECT int2 '0b_10_0101'; -- error cases SELECT int2 '_100'; SELECT int2 '100_'; SELECT int2 '10__000'; libpg_query-17-6.1.0/test/sql/postgres_regress/int4.sql000066400000000000000000000127241477334012600230570ustar00rootroot00000000000000-- -- INT4 -- -- int4_tbl was already created and filled in test_setup.sql. -- Here we just try to insert bad values. INSERT INTO INT4_TBL(f1) VALUES ('34.5'); 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 * FROM INT4_TBL; -- Also try it with non-error-throwing API SELECT pg_input_is_valid('34', 'int4'); SELECT pg_input_is_valid('asdf', 'int4'); SELECT pg_input_is_valid('1000000000000', 'int4'); SELECT * FROM pg_input_error_info('1000000000000', 'int4'); SELECT i.* FROM INT4_TBL i WHERE i.f1 <> int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 <> int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 = int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 = int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 < int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 < int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 <= int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 <= int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 > int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 > int4 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 >= int2 '0'; SELECT i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0'; -- positive odds SELECT i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1'; -- any evens SELECT i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0'; SELECT i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i WHERE abs(f1) < 1073741824; SELECT i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i WHERE abs(f1) < 1073741824; SELECT i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i WHERE f1 < 2147483646; SELECT i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i WHERE f1 < 2147483646; SELECT i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i WHERE f1 > -2147483647; SELECT i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i; SELECT i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i WHERE f1 > -2147483647; SELECT i.f1, i.f1 / int2 '2' AS x FROM INT4_TBL i; SELECT 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 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 -- non-decimal literals SELECT int4 '0b100101'; SELECT int4 '0o273'; SELECT int4 '0x42F'; SELECT int4 '0b'; SELECT int4 '0o'; SELECT int4 '0x'; -- cases near overflow SELECT int4 '0b1111111111111111111111111111111'; SELECT int4 '0b10000000000000000000000000000000'; SELECT int4 '0o17777777777'; SELECT int4 '0o20000000000'; SELECT int4 '0x7FFFFFFF'; SELECT int4 '0x80000000'; SELECT int4 '-0b10000000000000000000000000000000'; SELECT int4 '-0b10000000000000000000000000000001'; SELECT int4 '-0o20000000000'; SELECT int4 '-0o20000000001'; SELECT int4 '-0x80000000'; SELECT int4 '-0x80000001'; -- underscores SELECT int4 '1_000_000'; SELECT int4 '1_2_3'; SELECT int4 '0x1EEE_FFFF'; SELECT int4 '0o2_73'; SELECT int4 '0b_10_0101'; -- error cases SELECT int4 '_100'; SELECT int4 '100_'; SELECT int4 '100__000'; libpg_query-17-6.1.0/test/sql/postgres_regress/int8.sql000066400000000000000000000245751477334012600230720ustar00rootroot00000000000000-- -- INT8 -- Test int8 64-bit integers. -- -- int8_tbl was already created and filled in test_setup.sql. -- Here we just try to insert bad values. 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; -- Also try it with non-error-throwing API SELECT pg_input_is_valid('34', 'int8'); SELECT pg_input_is_valid('asdf', 'int8'); SELECT pg_input_is_valid('10000000000000000000', 'int8'); SELECT * FROM pg_input_error_info('10000000000000000000', 'int8'); -- 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 q1 AS plus, -q1 AS minus FROM INT8_TBL; SELECT q1, q2, q1 + q2 AS plus FROM INT8_TBL; SELECT q1, q2, q1 - q2 AS minus FROM INT8_TBL; SELECT q1, q2, q1 * q2 AS multiply FROM INT8_TBL; SELECT q1, q2, q1 * q2 AS multiply FROM INT8_TBL WHERE q1 < 1000 or (q2 > 0 and q2 < 1000); SELECT q1, q2, q1 / q2 AS divide, q1 % q2 AS mod FROM INT8_TBL; SELECT q1, float8(q1) FROM INT8_TBL; SELECT q2, float8(q2) FROM INT8_TBL; SELECT 37 + q1 AS plus4 FROM INT8_TBL; SELECT 37 - q1 AS minus4 FROM INT8_TBL; SELECT 2 * q1 AS "twice int4" FROM INT8_TBL; SELECT 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 to_char(q1, '9G999G999G999G999G999'), to_char(q2, '9,999,999,999,999,999') FROM INT8_TBL; SELECT to_char(q1, '9G999G999G999G999G999D999G999'), to_char(q2, '9,999,999,999,999,999.999,999') FROM INT8_TBL; SELECT to_char( (q1 * -1), '9999999999999999PR'), to_char( (q2 * -1), '9999999999999999.999PR') FROM INT8_TBL; SELECT to_char( (q1 * -1), '9999999999999999S'), to_char( (q2 * -1), 'S9999999999999999') FROM INT8_TBL; SELECT to_char(q2, 'MI9999999999999999') FROM INT8_TBL; SELECT to_char(q2, 'FMS9999999999999999') FROM INT8_TBL; SELECT to_char(q2, 'FM9999999999999999THPR') FROM INT8_TBL; SELECT to_char(q2, 'SG9999999999999999th') FROM INT8_TBL; SELECT to_char(q2, '0999999999999999') FROM INT8_TBL; SELECT to_char(q2, 'S0999999999999999') FROM INT8_TBL; SELECT to_char(q2, 'FM0999999999999999') FROM INT8_TBL; SELECT to_char(q2, 'FM9999999999999999.000') FROM INT8_TBL; SELECT to_char(q2, 'L9999999999999999.000') FROM INT8_TBL; SELECT to_char(q2, 'FM9999999999999999.999') FROM INT8_TBL; SELECT 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 to_char(q2, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL; SELECT 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 0::int8 - '-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 -- non-decimal literals SELECT int8 '0b100101'; SELECT int8 '0o273'; SELECT int8 '0x42F'; SELECT int8 '0b'; SELECT int8 '0o'; SELECT int8 '0x'; -- cases near overflow SELECT int8 '0b111111111111111111111111111111111111111111111111111111111111111'; SELECT int8 '0b1000000000000000000000000000000000000000000000000000000000000000'; SELECT int8 '0o777777777777777777777'; SELECT int8 '0o1000000000000000000000'; SELECT int8 '0x7FFFFFFFFFFFFFFF'; SELECT int8 '0x8000000000000000'; SELECT int8 '-0b1000000000000000000000000000000000000000000000000000000000000000'; SELECT int8 '-0b1000000000000000000000000000000000000000000000000000000000000001'; SELECT int8 '-0o1000000000000000000000'; SELECT int8 '-0o1000000000000000000001'; SELECT int8 '-0x8000000000000000'; SELECT int8 '-0x8000000000000001'; -- underscores SELECT int8 '1_000_000'; SELECT int8 '1_2_3'; SELECT int8 '0x1EEE_FFFF'; SELECT int8 '0o2_73'; SELECT int8 '0b_10_0101'; -- error cases SELECT int8 '_100'; SELECT int8 '100_'; SELECT int8 '100__000'; libpg_query-17-6.1.0/test/sql/postgres_regress/interval.sql000066400000000000000000000751431477334012600240310ustar00rootroot00000000000000-- -- 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..."; SELECT INTERVAL 'infinity' AS "eternity"; SELECT INTERVAL '-infinity' AS "beginning of time"; 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'); INSERT INTO INTERVAL_TBL (f1) VALUES ('infinity'); INSERT INTO INTERVAL_TBL (f1) VALUES ('-infinity'); -- badly formatted interval INSERT INTO INTERVAL_TBL (f1) VALUES ('badly formatted interval'); INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago'); -- Test non-error-throwing API SELECT pg_input_is_valid('1.5 weeks', 'interval'); SELECT pg_input_is_valid('garbage', 'interval'); SELECT pg_input_is_valid('@ 30 eons ago', 'interval'); SELECT * FROM pg_input_error_info('garbage', 'interval'); SELECT * FROM pg_input_error_info('@ 30 eons ago', 'interval'); -- test interval operators SELECT * FROM INTERVAL_TBL; SELECT * FROM INTERVAL_TBL WHERE INTERVAL_TBL.f1 <> interval '@ 10 days'; SELECT * FROM INTERVAL_TBL WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours'; SELECT * FROM INTERVAL_TBL WHERE INTERVAL_TBL.f1 < interval '@ 1 day'; SELECT * FROM INTERVAL_TBL WHERE INTERVAL_TBL.f1 = interval '@ 34 years'; SELECT * FROM INTERVAL_TBL WHERE INTERVAL_TBL.f1 >= interval '@ 1 month'; SELECT * FROM INTERVAL_TBL WHERE INTERVAL_TBL.f1 > interval '@ 3 seconds ago'; SELECT r1.*, r2.* FROM INTERVAL_TBL r1, INTERVAL_TBL r2 WHERE r1.f1 > r2.f1 ORDER BY r1.f1, r2.f1; -- test unary minus SELECT f1, -f1 FROM INTERVAL_TBL; SELECT -('-2147483648 months'::interval); -- should fail SELECT -('-2147483647 months'::interval); -- ok SELECT -('-2147483648 days'::interval); -- should fail SELECT -('-2147483647 days'::interval); -- ok SELECT -('-9223372036854775808 us'::interval); -- should fail SELECT -('-9223372036854775807 us'::interval); -- ok SELECT -('-2147483647 months -2147483647 days -9223372036854775807 us'::interval); -- should fail -- 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; -- subtracting about-to-overflow values should result in 0 SELECT f1 - f1 FROM INTERVAL_TBL_OF; 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 * FROM INTERVAL_TBL; -- multiplication and division overflow test cases SELECT '3000000 months'::interval * 1000; SELECT '3000000 months'::interval / 0.001; SELECT '3000000 days'::interval * 1000; SELECT '3000000 days'::interval / 0.001; SELECT '1 month 2146410 days'::interval * 1000.5002; SELECT '4611686018427387904 usec'::interval / 0.1; -- 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 where isfinite(f1); -- 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"; SELECT justify_hours(interval '2147483647 days 24 hrs'); SELECT justify_days(interval '2147483647 months 30 days'); -- test justify_interval() SELECT justify_interval(interval '1 month -1 hour') as "1 month -1 hour"; SELECT justify_interval(interval '2147483647 days 24 hrs'); SELECT justify_interval(interval '-2147483648 days -24 hrs'); SELECT justify_interval(interval '2147483647 months 30 days'); SELECT justify_interval(interval '-2147483648 months -30 days'); SELECT justify_interval(interval '2147483647 months 30 days -24 hrs'); SELECT justify_interval(interval '-2147483648 months -30 days 24 hrs'); SELECT justify_interval(interval '2147483647 months -30 days 1440 hrs'); SELECT justify_interval(interval '-2147483648 months 30 days -1440 hrs'); -- 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); SELECT interval '2562047788:00:54.775807' second(2); -- out of range SELECT interval '-2562047788:00:54.775807' second(2); -- out of range -- 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'; -- cases that trigger sign-matching rules in the sql style SELECT interval '-23 hours 45 min 12.34 sec', interval '-1 day 23 hours 45 min 12.34 sec', interval '-1 year 2 months 1 day 23 hours 45 min 12.34 sec', interval '-1 year 2 months 1 day 23 hours 45 min +12.34 sec'; -- 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'; -- cases that trigger sign-matching rules in the sql style SELECT interval '-23 hours 45 min 12.34 sec', interval '-1 day 23 hours 45 min 12.34 sec', interval '-1 year 2 months 1 day 23 hours 45 min 12.34 sec', interval '-1 year 2 months 1 day 23 hours 45 min +12.34 sec'; -- edge case for sign-matching rules SELECT interval ''; -- error -- 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"; -- Check handling of fractional fields in ISO8601 format. select interval 'P1Y0M3DT4H5M6S'; select interval 'P1.0Y0M3DT4H5M6S'; select interval 'P1.1Y0M3DT4H5M6S'; select interval 'P1.Y0M3DT4H5M6S'; select interval 'P.1Y0M3DT4H5M6S'; select interval 'P10.5e4Y'; -- not per spec, but we've historically taken it select interval 'P.Y0M3DT4H5M6S'; -- error -- 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'; -- test time fields using entire 64 bit microseconds range select interval '2562047788.01521550194 hours'; select interval '-2562047788.01521550222 hours'; select interval '153722867280.912930117 minutes'; select interval '-153722867280.912930133 minutes'; select interval '9223372036854.775807 seconds'; select interval '-9223372036854.775808 seconds'; select interval '9223372036854775.807 milliseconds'; select interval '-9223372036854775.808 milliseconds'; select interval '9223372036854775807 microseconds'; select interval '-9223372036854775808 microseconds'; select interval 'PT2562047788H54.775807S'; select interval 'PT-2562047788H-54.775808S'; select interval 'PT2562047788:00:54.775807'; select interval 'PT2562047788.0152155019444'; select interval 'PT-2562047788.0152155022222'; -- overflow each date/time field select interval '2147483648 years'; select interval '-2147483649 years'; select interval '2147483648 months'; select interval '-2147483649 months'; select interval '2147483648 days'; select interval '-2147483649 days'; select interval '2562047789 hours'; select interval '-2562047789 hours'; select interval '153722867281 minutes'; select interval '-153722867281 minutes'; select interval '9223372036855 seconds'; select interval '-9223372036855 seconds'; select interval '9223372036854777 millisecond'; select interval '-9223372036854777 millisecond'; select interval '9223372036854775808 microsecond'; select interval '-9223372036854775809 microsecond'; select interval 'P2147483648'; select interval 'P-2147483649'; select interval 'P1-2147483647-2147483647'; select interval 'PT2562047789'; select interval 'PT-2562047789'; -- overflow with date/time unit aliases select interval '2147483647 weeks'; select interval '-2147483648 weeks'; select interval '2147483647 decades'; select interval '-2147483648 decades'; select interval '2147483647 centuries'; select interval '-2147483648 centuries'; select interval '2147483647 millennium'; select interval '-2147483648 millennium'; select interval '1 week 2147483647 days'; select interval '-1 week -2147483648 days'; select interval '2147483647 days 1 week'; select interval '-2147483648 days -1 week'; select interval 'P1W2147483647D'; select interval 'P-1W-2147483648D'; select interval 'P2147483647D1W'; select interval 'P-2147483648D-1W'; select interval '1 decade 2147483647 years'; select interval '1 century 2147483647 years'; select interval '1 millennium 2147483647 years'; select interval '-1 decade -2147483648 years'; select interval '-1 century -2147483648 years'; select interval '-1 millennium -2147483648 years'; select interval '2147483647 years 1 decade'; select interval '2147483647 years 1 century'; select interval '2147483647 years 1 millennium'; select interval '-2147483648 years -1 decade'; select interval '-2147483648 years -1 century'; select interval '-2147483648 years -1 millennium'; -- overflowing with fractional fields - postgres format select interval '0.1 millennium 2147483647 months'; select interval '0.1 centuries 2147483647 months'; select interval '0.1 decades 2147483647 months'; select interval '0.1 yrs 2147483647 months'; select interval '-0.1 millennium -2147483648 months'; select interval '-0.1 centuries -2147483648 months'; select interval '-0.1 decades -2147483648 months'; select interval '-0.1 yrs -2147483648 months'; select interval '2147483647 months 0.1 millennium'; select interval '2147483647 months 0.1 centuries'; select interval '2147483647 months 0.1 decades'; select interval '2147483647 months 0.1 yrs'; select interval '-2147483648 months -0.1 millennium'; select interval '-2147483648 months -0.1 centuries'; select interval '-2147483648 months -0.1 decades'; select interval '-2147483648 months -0.1 yrs'; select interval '0.1 months 2147483647 days'; select interval '-0.1 months -2147483648 days'; select interval '2147483647 days 0.1 months'; select interval '-2147483648 days -0.1 months'; select interval '0.5 weeks 2147483647 days'; select interval '-0.5 weeks -2147483648 days'; select interval '2147483647 days 0.5 weeks'; select interval '-2147483648 days -0.5 weeks'; select interval '0.01 months 9223372036854775807 microseconds'; select interval '-0.01 months -9223372036854775808 microseconds'; select interval '9223372036854775807 microseconds 0.01 months'; select interval '-9223372036854775808 microseconds -0.01 months'; select interval '0.1 weeks 9223372036854775807 microseconds'; select interval '-0.1 weeks -9223372036854775808 microseconds'; select interval '9223372036854775807 microseconds 0.1 weeks'; select interval '-9223372036854775808 microseconds -0.1 weeks'; select interval '0.1 days 9223372036854775807 microseconds'; select interval '-0.1 days -9223372036854775808 microseconds'; select interval '9223372036854775807 microseconds 0.1 days'; select interval '-9223372036854775808 microseconds -0.1 days'; -- overflowing with fractional fields - ISO8601 format select interval 'P0.1Y2147483647M'; select interval 'P-0.1Y-2147483648M'; select interval 'P2147483647M0.1Y'; select interval 'P-2147483648M-0.1Y'; select interval 'P0.1M2147483647D'; select interval 'P-0.1M-2147483648D'; select interval 'P2147483647D0.1M'; select interval 'P-2147483648D-0.1M'; select interval 'P0.5W2147483647D'; select interval 'P-0.5W-2147483648D'; select interval 'P2147483647D0.5W'; select interval 'P-2147483648D-0.5W'; select interval 'P0.01MT2562047788H54.775807S'; select interval 'P-0.01MT-2562047788H-54.775808S'; select interval 'P0.1DT2562047788H54.775807S'; select interval 'P-0.1DT-2562047788H-54.775808S'; select interval 'PT2562047788.1H54.775807S'; select interval 'PT-2562047788.1H-54.775808S'; select interval 'PT2562047788H0.1M54.775807S'; select interval 'PT-2562047788H-0.1M-54.775808S'; -- overflowing with fractional fields - ISO8601 alternative format select interval 'P0.1-2147483647-00'; select interval 'P00-0.1-2147483647'; select interval 'P00-0.01-00T2562047788:00:54.775807'; select interval 'P00-00-0.1T2562047788:00:54.775807'; select interval 'PT2562047788.1:00:54.775807'; select interval 'PT2562047788:01.:54.775807'; -- overflowing with fractional fields - SQL standard format select interval '0.1 2562047788:0:54.775807'; select interval '0.1 2562047788:0:54.775808 ago'; select interval '2562047788.1:0:54.775807'; select interval '2562047788.1:0:54.775808 ago'; select interval '2562047788:0.1:54.775807'; select interval '2562047788:0.1:54.775808 ago'; -- overflowing using AGO with INT_MIN select interval '-2147483648 months ago'; select interval '-2147483648 days ago'; select interval '-9223372036854775808 microseconds ago'; select interval '-2147483648 months -2147483648 days -9223372036854775808 microseconds ago'; -- overflowing using make_interval select make_interval(years := 178956971); select make_interval(years := -178956971); select make_interval(years := 1, months := 2147483647); select make_interval(years := -1, months := -2147483648); select make_interval(weeks := 306783379); select make_interval(weeks := -306783379); select make_interval(weeks := 1, days := 2147483647); select make_interval(weeks := -1, days := -2147483648); select make_interval(secs := 1e308); select make_interval(secs := 1e18); select make_interval(secs := -1e18); select make_interval(mins := 1, secs := 9223372036800.0); select make_interval(mins := -1, secs := -9223372036800.0); -- test that INT_MIN number is formatted properly SET IntervalStyle to postgres; select interval '-2147483647 months -2147483648 days -9223372036854775808 us'; SET IntervalStyle to sql_standard; select interval '-2147483647 months -2147483648 days -9223372036854775808 us'; SET IntervalStyle to iso_8601; select interval '-2147483647 months -2147483648 days -9223372036854775808 us'; SET IntervalStyle to postgres_verbose; select interval '-2147483647 months -2147483648 days -9223372036854775808 us'; -- 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); -- -- test EXTRACT -- SELECT f1, EXTRACT(MICROSECOND FROM f1) AS MICROSECOND, EXTRACT(MILLISECOND FROM f1) AS MILLISECOND, EXTRACT(SECOND FROM f1) AS SECOND, EXTRACT(MINUTE FROM f1) AS MINUTE, EXTRACT(HOUR FROM f1) AS HOUR, EXTRACT(DAY FROM f1) AS DAY, EXTRACT(MONTH FROM f1) AS MONTH, EXTRACT(QUARTER FROM f1) AS QUARTER, EXTRACT(YEAR FROM f1) AS YEAR, EXTRACT(DECADE FROM f1) AS DECADE, EXTRACT(CENTURY FROM f1) AS CENTURY, EXTRACT(MILLENNIUM FROM f1) AS MILLENNIUM, EXTRACT(EPOCH FROM f1) AS EPOCH FROM INTERVAL_TBL; SELECT EXTRACT(FORTNIGHT FROM INTERVAL '2 days'); -- error SELECT EXTRACT(TIMEZONE FROM INTERVAL '2 days'); -- error SELECT EXTRACT(DECADE FROM INTERVAL '100 y'); SELECT EXTRACT(DECADE FROM INTERVAL '99 y'); SELECT EXTRACT(DECADE FROM INTERVAL '-99 y'); SELECT EXTRACT(DECADE FROM INTERVAL '-100 y'); SELECT EXTRACT(CENTURY FROM INTERVAL '100 y'); SELECT EXTRACT(CENTURY FROM INTERVAL '99 y'); SELECT EXTRACT(CENTURY FROM INTERVAL '-99 y'); SELECT EXTRACT(CENTURY FROM INTERVAL '-100 y'); -- date_part implementation is mostly the same as extract, so only -- test a few cases for additional coverage. SELECT f1, date_part('microsecond', f1) AS microsecond, date_part('millisecond', f1) AS millisecond, date_part('second', f1) AS second, date_part('epoch', f1) AS epoch FROM INTERVAL_TBL; -- internal overflow test case SELECT extract(epoch from interval '1000000000 days'); -- -- test infinite intervals -- -- largest finite intervals SELECT interval '-2147483648 months -2147483648 days -9223372036854775807 us'; SELECT interval '2147483647 months 2147483647 days 9223372036854775806 us'; -- infinite intervals SELECT interval '-2147483648 months -2147483648 days -9223372036854775808 us'; SELECT interval '2147483647 months 2147483647 days 9223372036854775807 us'; CREATE TABLE INFINITE_INTERVAL_TBL (i interval); INSERT INTO INFINITE_INTERVAL_TBL VALUES ('infinity'), ('-infinity'), ('1 year 2 days 3 hours'); SELECT i, isfinite(i) FROM INFINITE_INTERVAL_TBL; -- test basic arithmetic CREATE FUNCTION eval(expr text) RETURNS text AS $$ DECLARE result text; BEGIN EXECUTE 'select '||expr INTO result; RETURN result; EXCEPTION WHEN OTHERS THEN RETURN SQLERRM; END $$ LANGUAGE plpgsql; SELECT d AS date, i AS interval, eval(format('date %L + interval %L', d, i)) AS plus, eval(format('date %L - interval %L', d, i)) AS minus FROM (VALUES (date '-infinity'), (date '1995-08-06'), (date 'infinity')) AS t1(d), (VALUES (interval '-infinity'), (interval 'infinity')) AS t2(i); SELECT i1 AS interval1, i2 AS interval2, eval(format('interval %L + interval %L', i1, i2)) AS plus, eval(format('interval %L - interval %L', i1, i2)) AS minus FROM (VALUES (interval '-infinity'), (interval '2 months'), (interval 'infinity')) AS t1(i1), (VALUES (interval '-infinity'), (interval '10 days'), (interval 'infinity')) AS t2(i2); SELECT interval '2147483646 months 2147483646 days 9223372036854775806 us' + interval '1 month 1 day 1 us'; SELECT interval '-2147483647 months -2147483647 days -9223372036854775807 us' + interval '-1 month -1 day -1 us'; SELECT interval '2147483646 months 2147483646 days 9223372036854775806 us' - interval '-1 month -1 day -1 us'; SELECT interval '-2147483647 months -2147483647 days -9223372036854775807 us' - interval '1 month 1 day 1 us'; SELECT t AS timestamp, i AS interval, eval(format('timestamp %L + interval %L', t, i)) AS plus, eval(format('timestamp %L - interval %L', t, i)) AS minus FROM (VALUES (timestamp '-infinity'), (timestamp '1995-08-06 12:30:15'), (timestamp 'infinity')) AS t1(t), (VALUES (interval '-infinity'), (interval 'infinity')) AS t2(i); SELECT t AT TIME ZONE 'GMT' AS timestamptz, i AS interval, eval(format('timestamptz %L + interval %L', t, i)) AS plus, eval(format('timestamptz %L - interval %L', t, i)) AS minus FROM (VALUES (timestamptz '-infinity'), (timestamptz '1995-08-06 12:30:15 GMT'), (timestamptz 'infinity')) AS t1(t), (VALUES (interval '-infinity'), (interval 'infinity')) AS t2(i); -- time +/- infinite interval not supported SELECT time '11:27:42' + interval 'infinity'; SELECT time '11:27:42' + interval '-infinity'; SELECT time '11:27:42' - interval 'infinity'; SELECT time '11:27:42' - interval '-infinity'; SELECT timetz '11:27:42' + interval 'infinity'; SELECT timetz '11:27:42' + interval '-infinity'; SELECT timetz '11:27:42' - interval 'infinity'; SELECT timetz '11:27:42' - interval '-infinity'; SELECT lhst.i lhs, rhst.i rhs, lhst.i < rhst.i AS lt, lhst.i <= rhst.i AS le, lhst.i = rhst.i AS eq, lhst.i > rhst.i AS gt, lhst.i >= rhst.i AS ge, lhst.i <> rhst.i AS ne FROM INFINITE_INTERVAL_TBL lhst CROSS JOIN INFINITE_INTERVAL_TBL rhst WHERE NOT isfinite(lhst.i); SELECT i AS interval, -i AS um, i * 2.0 AS mul, i * -2.0 AS mul_neg, i * 'infinity' AS mul_inf, i * '-infinity' AS mul_inf_neg, i / 3.0 AS div, i / -3.0 AS div_neg FROM INFINITE_INTERVAL_TBL WHERE NOT isfinite(i); SELECT -interval '-2147483647 months -2147483647 days -9223372036854775807 us'; SELECT interval 'infinity' * 'nan'; SELECT interval '-infinity' * 'nan'; SELECT interval '-1073741824 months -1073741824 days -4611686018427387904 us' * 2; SELECT interval 'infinity' * 0; SELECT interval '-infinity' * 0; SELECT interval '0 days' * 'infinity'::float; SELECT interval '0 days' * '-infinity'::float; SELECT interval '5 days' * 'infinity'::float; SELECT interval '5 days' * '-infinity'::float; SELECT interval 'infinity' / 'infinity'; SELECT interval 'infinity' / '-infinity'; SELECT interval 'infinity' / 'nan'; SELECT interval '-infinity' / 'infinity'; SELECT interval '-infinity' / '-infinity'; SELECT interval '-infinity' / 'nan'; SELECT interval '-1073741824 months -1073741824 days -4611686018427387904 us' / 0.5; SELECT date_bin('infinity', timestamp '2001-02-16 20:38:40', timestamp '2001-02-16 20:05:00'); SELECT date_bin('-infinity', timestamp '2001-02-16 20:38:40', timestamp '2001-02-16 20:05:00'); SELECT i AS interval, date_trunc('hour', i) FROM INFINITE_INTERVAL_TBL WHERE NOT isfinite(i); SELECT i AS interval, justify_days(i), justify_hours(i), justify_interval(i) FROM INFINITE_INTERVAL_TBL WHERE NOT isfinite(i); SELECT timezone('infinity'::interval, '1995-08-06 12:12:12'::timestamp); SELECT timezone('-infinity'::interval, '1995-08-06 12:12:12'::timestamp); SELECT timezone('infinity'::interval, '1995-08-06 12:12:12'::timestamptz); SELECT timezone('-infinity'::interval, '1995-08-06 12:12:12'::timestamptz); SELECT timezone('infinity'::interval, '12:12:12'::time); SELECT timezone('-infinity'::interval, '12:12:12'::time); SELECT timezone('infinity'::interval, '12:12:12'::timetz); SELECT timezone('-infinity'::interval, '12:12:12'::timetz); SELECT 'infinity'::interval::time; SELECT '-infinity'::interval::time; SELECT to_char('infinity'::interval, 'YYYY'); SELECT to_char('-infinity'::interval, 'YYYY'); -- "ago" can only appear once at the end of an interval. SELECT INTERVAL '42 days 2 seconds ago ago'; SELECT INTERVAL '2 minutes ago 5 days'; -- consecutive and dangling units are not allowed. SELECT INTERVAL 'hour 5 months'; SELECT INTERVAL '1 year months days 5 hours'; -- unacceptable reserved words in interval. Only "infinity", "+infinity" and -- "-infinity" are allowed. SELECT INTERVAL 'now'; SELECT INTERVAL 'today'; SELECT INTERVAL 'tomorrow'; SELECT INTERVAL 'allballs'; SELECT INTERVAL 'epoch'; SELECT INTERVAL 'yesterday'; -- infinity specification should be the only thing SELECT INTERVAL 'infinity years'; SELECT INTERVAL 'infinity ago'; SELECT INTERVAL '+infinity -infinity'; libpg_query-17-6.1.0/test/sql/postgres_regress/join.sql000066400000000000000000002513601477334012600231410ustar00rootroot00000000000000-- -- 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 * FROM J1_TBL AS tx; SELECT * FROM J1_TBL tx; SELECT * FROM J1_TBL AS t1 (a, b, c); SELECT * FROM J1_TBL t1 (a, b, c); SELECT * FROM J1_TBL t1 (a, b, c), J2_TBL t2 (d, e); SELECT 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 * FROM J1_TBL CROSS JOIN J2_TBL; -- ambiguous column SELECT i, k, t FROM J1_TBL CROSS JOIN J2_TBL; -- resolve previous ambiguity by specifying the table name SELECT t1.i, k, t FROM J1_TBL t1 CROSS JOIN J2_TBL t2; SELECT ii, tt, kk FROM (J1_TBL CROSS JOIN J2_TBL) AS tx (ii, jj, tt, ii2, kk); SELECT 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 * 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 * FROM J1_TBL INNER JOIN J2_TBL USING (i); -- Same as above, slightly different syntax SELECT * FROM J1_TBL JOIN J2_TBL USING (i); SELECT * FROM J1_TBL t1 (a, b, c) JOIN J2_TBL t2 (a, d) USING (a) ORDER BY a, d; SELECT * FROM J1_TBL t1 (a, b, c) JOIN J2_TBL t2 (a, b) USING (b) ORDER BY b, t1.a; -- test join using aliases SELECT * FROM J1_TBL JOIN J2_TBL USING (i) WHERE J1_TBL.t = 'one'; -- ok SELECT * FROM J1_TBL JOIN J2_TBL USING (i) AS x WHERE J1_TBL.t = 'one'; -- ok SELECT * FROM (J1_TBL JOIN J2_TBL USING (i)) AS x WHERE J1_TBL.t = 'one'; -- error SELECT * FROM J1_TBL JOIN J2_TBL USING (i) AS x WHERE x.i = 1; -- ok SELECT * FROM J1_TBL JOIN J2_TBL USING (i) AS x WHERE x.t = 'one'; -- error SELECT * FROM (J1_TBL JOIN J2_TBL USING (i) AS x) AS xx WHERE x.i = 1; -- error (XXX could use better hint) SELECT * FROM J1_TBL a1 JOIN J2_TBL a2 USING (i) AS a1; -- error SELECT x.* FROM J1_TBL JOIN J2_TBL USING (i) AS x WHERE J1_TBL.t = 'one'; SELECT ROW(x.*) FROM J1_TBL JOIN J2_TBL USING (i) AS x WHERE J1_TBL.t = 'one'; SELECT row_to_json(x.*) FROM J1_TBL JOIN J2_TBL USING (i) AS x WHERE J1_TBL.t = 'one'; -- -- NATURAL JOIN -- Inner equi-join on all columns with the same name -- SELECT * FROM J1_TBL NATURAL JOIN J2_TBL; SELECT * FROM J1_TBL t1 (a, b, c) NATURAL JOIN J2_TBL t2 (a, d); SELECT * 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 * FROM J1_TBL t1 (a, b) NATURAL JOIN J2_TBL t2 (a); -- -- Inner joins (equi-joins) -- SELECT * FROM J1_TBL JOIN J2_TBL ON (J1_TBL.i = J2_TBL.i); SELECT * FROM J1_TBL JOIN J2_TBL ON (J1_TBL.i = J2_TBL.k); -- -- Non-equi-joins -- SELECT * FROM J1_TBL JOIN J2_TBL ON (J1_TBL.i <= J2_TBL.k); -- -- Outer joins -- Note that OUTER is a noise word -- SELECT * FROM J1_TBL LEFT OUTER JOIN J2_TBL USING (i) ORDER BY i, k, t; SELECT * FROM J1_TBL LEFT JOIN J2_TBL USING (i) ORDER BY i, k, t; SELECT * FROM J1_TBL RIGHT OUTER JOIN J2_TBL USING (i); SELECT * FROM J1_TBL RIGHT JOIN J2_TBL USING (i); SELECT * FROM J1_TBL FULL OUTER JOIN J2_TBL USING (i) ORDER BY i, k, t; SELECT * FROM J1_TBL FULL JOIN J2_TBL USING (i) ORDER BY i, k, t; SELECT * FROM J1_TBL LEFT JOIN J2_TBL USING (i) WHERE (k = 1); SELECT * 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_star on aa = unique1 where bb < bb and bb is null; select aa, bb, unique1, unique1 from tenk1 right join b_star 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() -- used to give 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; -- -- checks for correct handling of quals in multiway outer joins -- explain (costs off) select t1.f1 from int4_tbl t1, int4_tbl t2 left join int4_tbl t3 on t3.f1 > 0 left join int4_tbl t4 on t3.f1 > 1 where t4.f1 is null; select t1.f1 from int4_tbl t1, int4_tbl t2 left join int4_tbl t3 on t3.f1 > 0 left join int4_tbl t4 on t3.f1 > 1 where t4.f1 is null; explain (costs off) select * from int4_tbl t1 left join int4_tbl t2 on true left join int4_tbl t3 on t2.f1 > 0 left join int4_tbl t4 on t3.f1 > 0; explain (costs off) select * from onek t1 left join onek t2 on t1.unique1 = t2.unique1 left join onek t3 on t2.unique1 != t3.unique1 left join onek t4 on t3.unique1 = t4.unique1; explain (costs off) select * from int4_tbl t1 left join (select now() from int4_tbl t2 left join int4_tbl t3 on t2.f1 = t3.f1 left join int4_tbl t4 on t3.f1 = t4.f1) s on true inner join int4_tbl t5 on true; explain (costs off) select * from int4_tbl t1 left join int4_tbl t2 on true left join int4_tbl t3 on true left join int4_tbl t4 on t2.f1 = t3.f1; explain (costs off) select * from int4_tbl t1 left join int4_tbl t2 on true left join int4_tbl t3 on t2.f1 = t3.f1 left join int4_tbl t4 on t3.f1 != t4.f1; explain (costs off) select * from int4_tbl t1 left join (int4_tbl t2 left join int4_tbl t3 on t2.f1 > 0) on t2.f1 > 1 left join int4_tbl t4 on t2.f1 > 2 and t3.f1 > 3 where t1.f1 = coalesce(t2.f1, 1); explain (costs off) select * from int4_tbl t1 left join ((select t2.f1 from int4_tbl t2 left join int4_tbl t3 on t2.f1 > 0 where t3.f1 is null) s left join tenk1 t4 on s.f1 > 1) on s.f1 = t1.f1; explain (costs off) select * from int4_tbl t1 left join ((select t2.f1 from int4_tbl t2 left join int4_tbl t3 on t2.f1 > 0 where t2.f1 <> coalesce(t3.f1, -1)) s left join tenk1 t4 on s.f1 > 1) on s.f1 = t1.f1; explain (costs off) select * from onek t1 left join onek t2 on t1.unique1 = t2.unique1 left join onek t3 on t2.unique1 = t3.unique1 left join onek t4 on t3.unique1 = t4.unique1 and t2.unique2 = t4.unique2; explain (costs off) select * from int8_tbl t1 left join (int8_tbl t2 left join int8_tbl t3 full join int8_tbl t4 on false on false) left join int8_tbl t5 on t2.q1 = t5.q1 on t2.q2 = 123; explain (costs off) select * from int8_tbl t1 left join int8_tbl t2 on true left join lateral (select * from int8_tbl t3 where t3.q1 = t2.q1 offset 0) s on t2.q1 = 1; explain (costs off) select * from int8_tbl t1 left join int8_tbl t2 on true left join lateral (select * from generate_series(t2.q1, 100)) s on t2.q1 = 1; explain (costs off) select * from int8_tbl t1 left join int8_tbl t2 on true left join lateral (select t2.q1 from int8_tbl t3) s on t2.q1 = 1; explain (costs off) select * from onek t1 left join onek t2 on true left join lateral (select * from onek t3 where t3.two = t2.two offset 0) s on t2.unique1 = 1; -- -- 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; set enable_hashjoin = 0; set enable_nestloop = 0; set enable_hashagg = 0; -- -- Check that we use the pathkeys from a prefix of the group by / order by -- clause for the join pathkeys when that prefix covers all join quals. We -- expect this to lead to an incremental sort for the group by / order by. -- explain (costs off) select x.thousand, x.twothousand, count(*) from tenk1 x inner join tenk1 y on x.thousand = y.thousand group by x.thousand, x.twothousand order by x.thousand desc, x.twothousand; reset enable_hashagg; reset enable_nestloop; reset enable_hashjoin; -- -- 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); -- Test matching of locking clause with wrong alias select t1.*, t2.*, unnamed_join.* from t1 join t2 on (t1.a = t2.a), t3 as unnamed_join for update of unnamed_join; select foo.*, unnamed_join.* from t1 join t2 using (a) as foo, t3 as unnamed_join for update of unnamed_join; select foo.*, unnamed_join.* from t1 join t2 using (a) as foo, t3 as unnamed_join for update of foo; select bar.*, unnamed_join.* from (t1 join t2 using (a) as foo) as bar, t3 as unnamed_join for update of foo; select bar.*, unnamed_join.* from (t1 join t2 using (a) as foo) as bar, t3 as unnamed_join for update of bar; -- -- 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 #18522 (merge-right-anti-join in inner_unique cases) -- create temp table tbl_ra(a int unique, b int); insert into tbl_ra select i, i%100 from generate_series(1,1000)i; create index on tbl_ra (b); analyze tbl_ra; set enable_hashjoin to off; set enable_nestloop to off; -- ensure we get a merge right anti join explain (costs off) select * from tbl_ra t1 where not exists (select 1 from tbl_ra t2 where t2.b = t1.a) and t1.b < 2; -- and check we get the expected results select * from tbl_ra t1 where not exists (select 1 from tbl_ra t2 where t2.b = t1.a) and t1.b < 2; 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; set enable_memoize 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; reset enable_memoize; -- -- 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; analyze tt3; create temp table tt4(f1 int); insert into tt4 values (0),(1),(9999); analyze tt4; set enable_nestloop to off; EXPLAIN (COSTS OFF) SELECT a.f1 FROM tt4 a LEFT JOIN ( SELECT b.f1 FROM tt3 b LEFT JOIN tt3 c ON (b.f1 = c.f1) WHERE COALESCE(c.f1, 0) = 0 ) AS d ON (a.f1 = d.f1) WHERE COALESCE(d.f1, 0) = 0 ORDER BY 1; SELECT a.f1 FROM tt4 a LEFT JOIN ( SELECT b.f1 FROM tt3 b LEFT JOIN tt3 c ON (b.f1 = c.f1) WHERE COALESCE(c.f1, 0) = 0 ) AS d ON (a.f1 = d.f1) WHERE COALESCE(d.f1, 0) = 0 ORDER BY 1; reset enable_nestloop; -- -- basic semijoin and antijoin recognition tests -- explain (costs off) select a.* from tenk1 a where unique1 in (select unique2 from tenk1 b); -- sadly, this is not an antijoin explain (costs off) select a.* from tenk1 a where unique1 not in (select unique2 from tenk1 b); explain (costs off) select a.* from tenk1 a where exists (select 1 from tenk1 b where a.unique1 = b.unique2); explain (costs off) select a.* from tenk1 a where not exists (select 1 from tenk1 b where a.unique1 = b.unique2); explain (costs off) select a.* from tenk1 a left join tenk1 b on a.unique1 = b.unique2 where b.unique2 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; set enable_hashjoin = 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 PHV in a semijoin qual, which confused useless-RTE removal (bug #17700) explain (verbose, costs off) with ctetable as not materialized ( select 1 as f1 ) select * from ctetable c1 where f1 in ( select c3.f1 from ctetable c2 full join ctetable c3 on true ); with ctetable as not materialized ( select 1 as f1 ) select * from ctetable c1 where f1 in ( select c3.f1 from ctetable c2 full join ctetable c3 on true ); -- Test PHV that winds up in a Result node, despite having nonempty nullingrels explain (verbose, costs off) select table_catalog, table_name from int4_tbl t1 inner join (int8_tbl t2 left join information_schema.column_udt_usage on null) on null; -- Test handling of qual pushdown to appendrel members with non-Var outputs explain (verbose, costs off) select * from int4_tbl left join ( select text 'foo' union all select text 'bar' ) ss(x) on true where ss.x is null; -- -- 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 from tenk1, lateral f_immutable_int4(1) x where x in (select 17); 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 const-folding of a whole-row Var into a per-field Var -- (need to inline a function to reach this case, else parser does it) create function f_field_select(t onek) returns int4 as $$ select t.unique2; $$ language sql immutable; explain (verbose, costs off) select (t2.*).unique1, f_field_select(t2) from tenk1 t1 left join onek t2 on t1.unique1 = t2.unique1 left join int8_tbl t3 on true; drop function f_field_select(t onek); -- -- 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; -- related case explain (costs off) select * from int8_tbl t1 left join int8_tbl t2 on t1.q2 = t2.q1, lateral (select * from int8_tbl t3 where t2.q1 = t2.q2) ss; select * from int8_tbl t1 left join int8_tbl t2 on t1.q2 = t2.q1, lateral (select * from int8_tbl t3 where t2.q1 = t2.q2) ss; -- -- 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); -- -- check handling of a variable-free join alias -- explain (verbose, costs off) select * from int4_tbl i0 left join ( (select *, 123 as x from int4_tbl i1) ss1 left join (select *, q2 as x from int8_tbl i2) ss2 using (x) ) ss0 on (i0.f1 = ss0.f1) order by i0.f1, x; select * from int4_tbl i0 left join ( (select *, 123 as x from int4_tbl i1) ss1 left join (select *, q2 as x from int8_tbl i2) ss2 using (x) ) ss0 on (i0.f1 = ss0.f1) order by i0.f1, x; -- -- 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; -- check handling of a variable-free qual for a non-commutable outer join explain (costs off) select nspname from (select 1 as x) ss1 left join ( select n.nspname, c.relname from pg_class c left join pg_namespace n on n.oid = c.relnamespace where c.relkind = 'r' ) ss2 on false; -- check handling of apparently-commutable outer joins with non-commutable -- joins between them explain (costs off) select 1 from int4_tbl i4 left join int8_tbl i8 on i4.f1 is not null left join (select 1 as a) ss1 on null join int4_tbl i42 on ss1.a is null or i8.q1 <> i8.q2 right join (select 2 as b) ss2 on ss2.b < 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; explain (verbose, costs off) select 1 from int4_tbl as i4 inner join ((select 42 as n from int4_tbl x1 left join int8_tbl x2 on f1 = q1) as ss1 right join (select 1 as z) as ss2 on true) on false, lateral (select i4.f1, ss1.n from int8_tbl as i8 limit 1) as ss3; select 1 from int4_tbl as i4 inner join ((select 42 as n from int4_tbl x1 left join int8_tbl x2 on f1 = q1) as ss1 right join (select 1 as z) as ss2 on true) on false, lateral (select i4.f1, ss1.n from int8_tbl as i8 limit 1) as ss3; -- -- check a case where we formerly generated invalid parameterized paths -- begin; create temp table t (a int unique); explain (costs off) select 1 from t t1 join lateral (select t1.a from (select 1) foo offset 0) as s1 on true join (select 1 from t t2 inner join (t t3 left join (t t4 left join t t5 on t4.a = 1) on t3.a = t4.a) on false where t3.a = coalesce(t5.a,1)) as s2 on true; rollback; -- -- 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 strength reduction with a SubPlan providing the proof -- explain (costs off) select a.unique1, b.unique2 from onek a left join onek b on a.unique1 = b.unique2 where (b.unique2, random() > 0) = any (select q1, random() > 0 from int8_tbl c where c.q1 < b.unique1); select a.unique1, b.unique2 from onek a left join onek b on a.unique1 = b.unique2 where (b.unique2, random() > 0) = any (select q1, random() > 0 from int8_tbl c where c.q1 < b.unique1); -- -- test full-join strength reduction -- explain (costs off) select a.unique1, b.unique2 from onek a full join onek b on a.unique1 = b.unique2 where a.unique1 = 42; select a.unique1, b.unique2 from onek a full join onek b on a.unique1 = b.unique2 where a.unique1 = 42; explain (costs off) select a.unique1, b.unique2 from onek a full join onek b on a.unique1 = b.unique2 where b.unique2 = 43; select a.unique1, b.unique2 from onek a full join onek b on a.unique1 = b.unique2 where b.unique2 = 43; explain (costs off) select a.unique1, b.unique2 from onek a full join onek b on a.unique1 = b.unique2 where a.unique1 = 42 and b.unique2 = 42; select a.unique1, b.unique2 from onek a full join onek b on a.unique1 = b.unique2 where a.unique1 = 42 and b.unique2 = 42; -- -- test result-RTE removal underneath a full join -- explain (costs off) select * from (select * from int8_tbl i81 join (values(123,2)) v(v1,v2) on q2=v1) ss1 full join (select * from (values(456,2)) w(v1,v2) join int8_tbl i82 on q2=v1) ss2 on true; select * from (select * from int8_tbl i81 join (values(123,2)) v(v1,v2) on q2=v1) ss1 full join (select * from (values(456,2)) w(v1,v2) join int8_tbl i82 on q2=v1) ss2 on true; -- -- 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 optimization with oddly-nested outer joins explain (costs off) select a1.id from (a a1 left join a a2 on true) left join (a a3 left join a a4 on a3.id = a4.id) on a2.id = a3.id; explain (costs off) select a1.id from (a a1 left join a a2 on a1.id = a2.id) left join (a a3 left join a a4 on a3.id = a4.id) on a2.id = a3.id; explain (costs off) select 1 from a t1 left join a t2 on true inner join a t3 on true left join a t4 on t2.id = t4.id and t2.id = t3.id; -- another example (bug #17781) explain (costs off) select ss1.f1 from int4_tbl as t1 left join (int4_tbl as t2 right join int4_tbl as t3 on null left join (int4_tbl as t4 right join int8_tbl as t5 on null) on t2.f1 = t4.f1 left join ((select null as f1 from int4_tbl as t6) as ss1 inner join int8_tbl as t7 on null) on t5.q1 = t7.q2) on false; -- variant with Var rather than PHV coming from t6 explain (costs off) select ss1.f1 from int4_tbl as t1 left join (int4_tbl as t2 right join int4_tbl as t3 on null left join (int4_tbl as t4 right join int8_tbl as t5 on null) on t2.f1 = t4.f1 left join ((select f1 from int4_tbl as t6) as ss1 inner join int8_tbl as t7 on null) on t5.q1 = t7.q2) on false; -- per further discussion of bug #17781 explain (costs off) select ss1.x from (select f1/2 as x from int4_tbl i4 left join a on a.id = i4.f1) ss1 right join int8_tbl i8 on true where current_user is not null; -- this is to add a Result node -- and further discussion of bug #17781 explain (costs off) select * from int8_tbl t1 left join (int8_tbl t2 left join onek t3 on t2.q1 > t3.unique1) on t1.q2 = t2.q2 left join onek t4 on t2.q2 < t3.unique2; -- More tests of correct placement of pseudoconstant quals -- simple constant-false condition explain (costs off) select * from int8_tbl t1 left join (int8_tbl t2 inner join int8_tbl t3 on false left join int8_tbl t4 on t2.q2 = t4.q2) on t1.q1 = t2.q1; -- deduce constant-false from an EquivalenceClass explain (costs off) select * from int8_tbl t1 left join (int8_tbl t2 inner join int8_tbl t3 on (t2.q1-t3.q2) = 0 and (t2.q1-t3.q2) = 1 left join int8_tbl t4 on t2.q2 = t4.q2) on t1.q1 = t2.q1; -- pseudoconstant based on an outer-level Param explain (costs off) select exists( select * from int8_tbl t1 left join (int8_tbl t2 inner join int8_tbl t3 on x0.f1 = 1 left join int8_tbl t4 on t2.q2 = t4.q2) on t1.q1 = t2.q1 ) from int4_tbl x0; -- 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; -- join removal is not possible here explain (costs off) select 1 from a t1 left join (a t2 left join a t3 on t2.id = 1) on t2.id = 1; -- 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; -- check join removal within RHS of an outer join explain (costs off) select c.id, ss.a from c left join (select d.a from onerow, d left join b on d.a = b.id) ss on c.id = ss.a; CREATE TEMP TABLE parted_b (id int PRIMARY KEY) partition by range(id); CREATE TEMP TABLE parted_b1 partition of parted_b for values from (0) to (10); -- test join removals on a partitioned table explain (costs off) select a.* from a left join parted_b pb on a.b_id = pb.id; 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; -- join removal bug #17769: can't remove if there's a pushed-down reference EXPLAIN (COSTS OFF) SELECT q2 FROM (SELECT * FROM int8_tbl LEFT JOIN innertab ON q2 = id) ss WHERE COALESCE(dat1, 0) = q1; -- join removal bug #17773: otherwise-removable PHV appears in a qual condition EXPLAIN (VERBOSE, COSTS OFF) SELECT q2 FROM (SELECT q2, 'constant'::text AS x FROM int8_tbl LEFT JOIN innertab ON q2 = id) ss RIGHT JOIN int4_tbl ON NULL WHERE x >= x; -- join removal bug #17786: check that OR conditions are cleaned up EXPLAIN (COSTS OFF) SELECT f1, x FROM int4_tbl JOIN ((SELECT 42 AS x FROM int8_tbl LEFT JOIN innertab ON q1 = id) AS ss1 RIGHT JOIN tenk1 ON NULL) ON tenk1.unique1 = ss1.x OR tenk1.unique2 = ss1.x; 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; -- another join removal bug: we must clean up EquivalenceClasses too begin; create temp table t (a int unique); insert into t values (1); explain (costs off) select 1 from t t1 left join (select 2 as c from t t2 left join t t3 on t2.a = t3.a) s on true where t1.a = s.c; select 1 from t t1 left join (select 2 as c from t t2 left join t t3 on t2.a = t3.a) s on true where t1.a = s.c; rollback; -- test cases where we can remove a join, but not a PHV computed at it begin; create temp table t (a int unique, b int); insert into t values (1,1), (2,2); explain (costs off) select 1 from t t1 left join (select t2.a, 1 as c from t t2 left join t t3 on t2.a = t3.a) s on true left join t t4 on true where s.a < s.c; explain (costs off) select t1.a, s.* from t t1 left join lateral (select t2.a, coalesce(t1.a, 1) as c from t t2 left join t t3 on t2.a = t3.a) s on true left join t t4 on true where s.a < s.c; select t1.a, s.* from t t1 left join lateral (select t2.a, coalesce(t1.a, 1) as c from t t2 left join t t3 on t2.a = t3.a) s on true left join t t4 on true where s.a < s.c; 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; -- and check a related issue where we miscompute required relids for -- a PHV that's been translated to a child rel create temp table parttbl (a integer primary key) partition by range (a); create temp table parttbl1 partition of parttbl for values from (1) to (100); insert into parttbl values (11), (12); explain (costs off) select * from (select *, 12 as phv from parttbl) as ss right join int4_tbl on true where ss.a = ss.phv and f1 = 0; select * from (select *, 12 as phv from parttbl) as ss right join int4_tbl on true where ss.a = ss.phv and f1 = 0; -- 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 select ctid from tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, need qualification -- -- 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 bug in rangetable flattening explain (verbose, costs off) select 1 from (select * from int8_tbl where q1 <> (select 42) offset 0) ss where false; -- -- 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; -- another case requiring nested PlaceHolderVars explain (verbose, costs off) select * from (select 0 as val0) as ss0 left join (select 1 as val) as ss1 on true left join lateral (select ss1.val as val_filtered where false) as ss2 on true; select * from (select 0 as val0) as ss0 left join (select 1 as val) as ss1 on true left join lateral (select ss1.val as val_filtered where false) as ss2 on true; -- 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; -- a new postponed-quals issue (bug #17768) explain (costs off) select * from int4_tbl t1, lateral (select * from int4_tbl t2 inner join int4_tbl t3 on t1.f1 = 1 inner join (int4_tbl t4 left join int4_tbl t5 on true) on true) ss; -- 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 the number of columns specified SELECT * FROM (int8_tbl i cross join int4_tbl j) ss(a,b,c,d); -- 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, random() > 0) = any (select q2, random() > 0 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, random() > 0) = any (select q2, random() > 0 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 estimation behavior with multi-column foreign key and constant qual -- begin; create table fkest (x integer, x10 integer, x10b integer, x100 integer); insert into fkest select x, x/10, x/10, x/100 from generate_series(1,1000) x; create unique index on fkest(x, x10, x100); analyze fkest; explain (costs off) select * from fkest f1 join fkest f2 on (f1.x = f2.x and f1.x10 = f2.x10b and f1.x100 = f2.x100) join fkest f3 on f1.x = f3.x where f1.x100 = 2; alter table fkest add constraint fk foreign key (x, x10b, x100) references fkest (x, x10, x100); explain (costs off) select * from fkest f1 join fkest f2 on (f1.x = f2.x and f1.x10 = f2.x10b and f1.x100 = f2.x100) join fkest f3 on f1.x = f3.x where f1.x100 = 2; rollback; -- -- 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; create unique index j1_id2_idx on j1(id2) where id2 is not null; -- ensure we don't use a partial unique index as unique proofs explain (verbose, costs off) select * from j1 inner join j2 on j1.id2 = j2.id2; drop index j1_id2_idx; -- 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; -- Exercise the "skip fetch" Bitmap Heap Scan optimization when candidate -- tuples are discarded. This may occur when: -- 1. A join doesn't require all inner tuples to be scanned for each outer -- tuple, and -- 2. The inner side is scanned using a bitmap heap scan, and -- 3. The bitmap heap scan is eligible for the "skip fetch" optimization. -- This optimization is usable when no data from the underlying table is -- needed. Use a temp table so it is only visible to this backend and -- vacuum may reliably mark all blocks in the table all visible in the -- visibility map. CREATE TEMP TABLE skip_fetch (a INT, b INT) WITH (fillfactor=10); INSERT INTO skip_fetch SELECT i % 3, i FROM generate_series(0,30) i; CREATE INDEX ON skip_fetch(a); VACUUM (ANALYZE) skip_fetch; SET enable_indexonlyscan = off; SET enable_seqscan = off; EXPLAIN (COSTS OFF) SELECT t1.a FROM skip_fetch t1 LEFT JOIN skip_fetch t2 ON t2.a = 1 WHERE t2.a IS NULL; SELECT t1.a FROM skip_fetch t1 LEFT JOIN skip_fetch t2 ON t2.a = 1 WHERE t2.a IS NULL; RESET enable_indexonlyscan; RESET enable_seqscan; -- Test that we do not account for nullingrels when looking up statistics CREATE TABLE group_tbl (a INT, b INT); INSERT INTO group_tbl SELECT 1, 1; CREATE STATISTICS group_tbl_stat (ndistinct) ON a, b FROM group_tbl; ANALYZE group_tbl; EXPLAIN (COSTS OFF) SELECT 1 FROM group_tbl t1 LEFT JOIN (SELECT a c1, COALESCE(a) c2 FROM group_tbl t2) s ON TRUE GROUP BY s.c1, s.c2; DROP TABLE group_tbl; libpg_query-17-6.1.0/test/sql/postgres_regress/join_hash.sql000066400000000000000000000546031477334012600241450ustar00rootroot00000000000000-- -- 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'; set local hash_mem_multiplier = 1.0; 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 hash_mem_multiplier = 1.0; 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 hash_mem_multiplier = 1.0; 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'; set local hash_mem_multiplier = 1.0; 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 hash_mem_multiplier = 1.0; 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 hash_mem_multiplier = 1.0; 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); $$); -- parallel full multi-batch hash join select count(*) from simple r full outer 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'; set local hash_mem_multiplier = 1.0; 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 hash_mem_multiplier = 1.0; 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 hash_mem_multiplier = 1.0; 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'; set local hash_mem_multiplier = 1.0; 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 hash_mem_multiplier = 1.0; 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 hash_mem_multiplier = 1.0; 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 hash_mem_multiplier = 1.0; 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'; set hash_mem_multiplier = 1.0; 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'; set hash_mem_multiplier = 1.0; 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'; set hash_mem_multiplier = 1.0; 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'; set hash_mem_multiplier = 1.0; 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 full hash join savepoint settings; set enable_parallel_hash = off; 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; -- parallelism is possible with parallel-aware full 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; -- A 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 full hash join savepoint settings; set enable_parallel_hash = off; 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; -- parallelism is possible with parallel-aware full 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'; set hash_mem_multiplier = 1.0; 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; -- Hash join reuses the HOT status bit to indicate match status. This can only -- be guaranteed to produce correct results if all the hash join tuple match -- bits are reset before reuse. This is done upon loading them into the -- hashtable. SAVEPOINT settings; SET enable_parallel_hash = on; SET min_parallel_table_scan_size = 0; SET parallel_setup_cost = 0; SET parallel_tuple_cost = 0; CREATE TABLE hjtest_matchbits_t1(id int); CREATE TABLE hjtest_matchbits_t2(id int); INSERT INTO hjtest_matchbits_t1 VALUES (1); INSERT INTO hjtest_matchbits_t2 VALUES (2); -- Update should create a HOT tuple. If this status bit isn't cleared, we won't -- correctly emit the NULL-extended unmatching tuple in full hash join. UPDATE hjtest_matchbits_t2 set id = 2; SELECT * FROM hjtest_matchbits_t1 t1 FULL JOIN hjtest_matchbits_t2 t2 ON t1.id = t2.id ORDER BY t1.id; -- Test serial full hash join. -- Resetting parallel_setup_cost should force a serial plan. -- Just to be safe, however, set enable_parallel_hash to off, as parallel full -- hash joins are only supported with shared hashtables. RESET parallel_setup_cost; SET enable_parallel_hash = off; SELECT * FROM hjtest_matchbits_t1 t1 FULL JOIN hjtest_matchbits_t2 t2 ON t1.id = t2.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; -- Verify that we behave sanely when the inner hash keys contain parameters -- (that is, outer or lateral references). This situation has to defeat -- re-use of the inner hash table across rescans. begin; set local enable_hashjoin = on; explain (costs off) select i8.q2, ss.* from int8_tbl i8, lateral (select t1.fivethous, i4.f1 from tenk1 t1 join int4_tbl i4 on t1.fivethous = i4.f1+i8.q2 order by 1,2) ss; select i8.q2, ss.* from int8_tbl i8, lateral (select t1.fivethous, i4.f1 from tenk1 t1 join int4_tbl i4 on t1.fivethous = i4.f1+i8.q2 order by 1,2) ss; rollback; libpg_query-17-6.1.0/test/sql/postgres_regress/json.sql000066400000000000000000001066071477334012600231560ustar00rootroot00000000000000-- 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 -- Check fast path for longer strings (at least 16 bytes long) SELECT ('"'||repeat('.', 12)||'abc"')::json; -- OK SELECT ('"'||repeat('.', 12)||'abc\n"')::json; -- OK, legal escapes -- 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 -- Multi-line JSON input to check ERROR reporting SELECT '{ "one": 1, "two":"two", "three": true}'::json; -- OK SELECT '{ "one": 1, "two":,"two", -- ERROR extraneous comma before field "two" "three": true}'::json; SELECT '{ "one": 1, "two":"two", "averyveryveryveryveryveryveryveryveryverylongfieldname":}'::json; -- ERROR missing value for last field -- test non-error-throwing input select pg_input_is_valid('{"a":true}', 'json'); select pg_input_is_valid('{"a":true', 'json'); select * from pg_input_error_info('{"a":true', 'json'); --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_object_agg_unique requires unique keys select json_object_agg_unique(mod(i,100), i) from generate_series(0, 199) i; -- 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-17-6.1.0/test/sql/postgres_regress/json_encoding.sql000066400000000000000000000070531477334012600250170ustar00rootroot00000000000000-- -- 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; -- soft error for input-time failure select * from pg_input_error_info('{ "a": "\ud83d\ude04\ud83d\udc36" }', 'jsonb'); libpg_query-17-6.1.0/test/sql/postgres_regress/jsonb.sql000066400000000000000000002172611477334012600233170ustar00rootroot00000000000000-- directory paths are passed to us in environment variables \getenv abs_srcdir PG_ABS_SRCDIR CREATE TABLE testjsonb ( j jsonb ); \set filename :abs_srcdir '/data/jsonb.data' COPY testjsonb FROM :'filename'; -- 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 -- Multi-line JSON input to check ERROR reporting SELECT '{ "one": 1, "two":"two", "three": true}'::jsonb; -- OK SELECT '{ "one": 1, "two":,"two", -- ERROR extraneous comma before field "two" "three": true}'::jsonb; SELECT '{ "one": 1, "two":"two", "averyveryveryveryveryveryveryveryveryverylongfieldname":}'::jsonb; -- ERROR missing value for last field -- test non-error-throwing input select pg_input_is_valid('{"a":true}', 'jsonb'); select pg_input_is_valid('{"a":true', 'jsonb'); select * from pg_input_error_info('{"a":true', 'jsonb'); select * from pg_input_error_info('{"a":1e1000000}', 'jsonb'); -- 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; -- edge case for parser SELECT jsonb_object_agg(DISTINCT 'a', 'abc'); -- 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; -- Tests to check soft-error support for populate_record_field() -- populate_scalar() create type jsb_char2 as (a char(2)); select jsonb_populate_record_valid(NULL::jsb_char2, '{"a": "aaa"}'); select * from jsonb_populate_record(NULL::jsb_char2, '{"a": "aaa"}') q; select jsonb_populate_record_valid(NULL::jsb_char2, '{"a": "aa"}'); select * from jsonb_populate_record(NULL::jsb_char2, '{"a": "aa"}') q; -- populate_array() create type jsb_ia as (a int[]); create type jsb_ia2 as (a int[][]); select jsonb_populate_record_valid(NULL::jsb_ia, '{"a": 43.2}'); select * from jsonb_populate_record(NULL::jsb_ia, '{"a": 43.2}') q; select jsonb_populate_record_valid(NULL::jsb_ia, '{"a": [1, 2]}'); select * from jsonb_populate_record(NULL::jsb_ia, '{"a": [1, 2]}') q; select jsonb_populate_record_valid(NULL::jsb_ia2, '{"a": [[1], [2, 3]]}'); select * from jsonb_populate_record(NULL::jsb_ia2, '{"a": [[1], [2, 3]]}') q; select jsonb_populate_record_valid(NULL::jsb_ia2, '{"a": [[1, 0], [2, 3]]}'); select * from jsonb_populate_record(NULL::jsb_ia2, '{"a": [[1, 0], [2, 3]]}') q; -- populate_domain() create domain jsb_i_not_null as int not null; create domain jsb_i_gt_1 as int check (value > 1); create type jsb_i_not_null_rec as (a jsb_i_not_null); create type jsb_i_gt_1_rec as (a jsb_i_gt_1); select jsonb_populate_record_valid(NULL::jsb_i_not_null_rec, '{"a": null}'); select * from jsonb_populate_record(NULL::jsb_i_not_null_rec, '{"a": null}') q; select jsonb_populate_record_valid(NULL::jsb_i_not_null_rec, '{"a": 1}'); select * from jsonb_populate_record(NULL::jsb_i_not_null_rec, '{"a": 1}') q; select jsonb_populate_record_valid(NULL::jsb_i_gt_1_rec, '{"a": 1}'); select * from jsonb_populate_record(NULL::jsb_i_gt_1_rec, '{"a": 1}') q; select jsonb_populate_record_valid(NULL::jsb_i_gt_1_rec, '{"a": 2}'); select * from jsonb_populate_record(NULL::jsb_i_gt_1_rec, '{"a": 2}') q; drop type jsb_ia, jsb_ia2, jsb_char2, jsb_i_not_null_rec, jsb_i_gt_1_rec; drop domain jsb_i_not_null, jsb_i_gt_1; -- 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 subscript select ('123'::jsonb)['a']; select ('123'::jsonb)[0]; select ('123'::jsonb)[NULL]; select ('{"a": 1}'::jsonb)['a']; select ('{"a": 1}'::jsonb)[0]; select ('{"a": 1}'::jsonb)['not_exist']; select ('{"a": 1}'::jsonb)[NULL]; select ('[1, "2", null]'::jsonb)['a']; select ('[1, "2", null]'::jsonb)[0]; select ('[1, "2", null]'::jsonb)['1']; select ('[1, "2", null]'::jsonb)[1.0]; select ('[1, "2", null]'::jsonb)[2]; select ('[1, "2", null]'::jsonb)[3]; select ('[1, "2", null]'::jsonb)[-2]; select ('[1, "2", null]'::jsonb)[1]['a']; select ('[1, "2", null]'::jsonb)[1][0]; select ('{"a": 1, "b": "c", "d": [1, 2, 3]}'::jsonb)['b']; select ('{"a": 1, "b": "c", "d": [1, 2, 3]}'::jsonb)['d']; select ('{"a": 1, "b": "c", "d": [1, 2, 3]}'::jsonb)['d'][1]; select ('{"a": 1, "b": "c", "d": [1, 2, 3]}'::jsonb)['d']['a']; select ('{"a": {"a1": {"a2": "aaa"}}, "b": "bbb", "c": "ccc"}'::jsonb)['a']['a1']; select ('{"a": {"a1": {"a2": "aaa"}}, "b": "bbb", "c": "ccc"}'::jsonb)['a']['a1']['a2']; select ('{"a": {"a1": {"a2": "aaa"}}, "b": "bbb", "c": "ccc"}'::jsonb)['a']['a1']['a2']['a3']; select ('{"a": ["a1", {"b1": ["aaa", "bbb", "ccc"]}], "b": "bb"}'::jsonb)['a'][1]['b1']; select ('{"a": ["a1", {"b1": ["aaa", "bbb", "ccc"]}], "b": "bb"}'::jsonb)['a'][1]['b1'][2]; -- slices are not supported select ('{"a": 1}'::jsonb)['a':'b']; select ('[1, "2", null]'::jsonb)[1:2]; select ('[1, "2", null]'::jsonb)[:2]; select ('[1, "2", null]'::jsonb)[1:]; select ('[1, "2", null]'::jsonb)[:]; create TEMP TABLE test_jsonb_subscript ( id int, test_json jsonb ); insert into test_jsonb_subscript values (1, '{}'), -- empty jsonb (2, '{"key": "value"}'); -- jsonb with data -- update empty jsonb update test_jsonb_subscript set test_json['a'] = '1' where id = 1; select * from test_jsonb_subscript; -- update jsonb with some data update test_jsonb_subscript set test_json['a'] = '1' where id = 2; select * from test_jsonb_subscript; -- replace jsonb update test_jsonb_subscript set test_json['a'] = '"test"'; select * from test_jsonb_subscript; -- replace by object update test_jsonb_subscript set test_json['a'] = '{"b": 1}'::jsonb; select * from test_jsonb_subscript; -- replace by array update test_jsonb_subscript set test_json['a'] = '[1, 2, 3]'::jsonb; select * from test_jsonb_subscript; -- use jsonb subscription in where clause select * from test_jsonb_subscript where test_json['key'] = '"value"'; select * from test_jsonb_subscript where test_json['key_doesnt_exists'] = '"value"'; select * from test_jsonb_subscript where test_json['key'] = '"wrong_value"'; -- NULL update test_jsonb_subscript set test_json[NULL] = '1'; update test_jsonb_subscript set test_json['another_key'] = NULL; select * from test_jsonb_subscript; -- NULL as jsonb source insert into test_jsonb_subscript values (3, NULL); update test_jsonb_subscript set test_json['a'] = '1' where id = 3; select * from test_jsonb_subscript; update test_jsonb_subscript set test_json = NULL where id = 3; update test_jsonb_subscript set test_json[0] = '1'; select * from test_jsonb_subscript; -- Fill the gaps logic delete from test_jsonb_subscript; insert into test_jsonb_subscript values (1, '[0]'); update test_jsonb_subscript set test_json[5] = '1'; select * from test_jsonb_subscript; update test_jsonb_subscript set test_json[-4] = '1'; select * from test_jsonb_subscript; update test_jsonb_subscript set test_json[-8] = '1'; select * from test_jsonb_subscript; -- keep consistent values position delete from test_jsonb_subscript; insert into test_jsonb_subscript values (1, '[]'); update test_jsonb_subscript set test_json[5] = '1'; select * from test_jsonb_subscript; -- create the whole path delete from test_jsonb_subscript; insert into test_jsonb_subscript values (1, '{}'); update test_jsonb_subscript set test_json['a'][0]['b'][0]['c'] = '1'; select * from test_jsonb_subscript; delete from test_jsonb_subscript; insert into test_jsonb_subscript values (1, '{}'); update test_jsonb_subscript set test_json['a'][2]['b'][2]['c'][2] = '1'; select * from test_jsonb_subscript; -- create the whole path with already existing keys delete from test_jsonb_subscript; insert into test_jsonb_subscript values (1, '{"b": 1}'); update test_jsonb_subscript set test_json['a'][0] = '2'; select * from test_jsonb_subscript; -- the start jsonb is an object, first subscript is treated as a key delete from test_jsonb_subscript; insert into test_jsonb_subscript values (1, '{}'); update test_jsonb_subscript set test_json[0]['a'] = '1'; select * from test_jsonb_subscript; -- the start jsonb is an array delete from test_jsonb_subscript; insert into test_jsonb_subscript values (1, '[]'); update test_jsonb_subscript set test_json[0]['a'] = '1'; update test_jsonb_subscript set test_json[2]['b'] = '2'; select * from test_jsonb_subscript; -- overwriting an existing path delete from test_jsonb_subscript; insert into test_jsonb_subscript values (1, '{}'); update test_jsonb_subscript set test_json['a']['b'][1] = '1'; update test_jsonb_subscript set test_json['a']['b'][10] = '1'; select * from test_jsonb_subscript; delete from test_jsonb_subscript; insert into test_jsonb_subscript values (1, '[]'); update test_jsonb_subscript set test_json[0][0][0] = '1'; update test_jsonb_subscript set test_json[0][0][1] = '1'; select * from test_jsonb_subscript; delete from test_jsonb_subscript; insert into test_jsonb_subscript values (1, '{}'); update test_jsonb_subscript set test_json['a']['b'][10] = '1'; update test_jsonb_subscript set test_json['a'][10][10] = '1'; select * from test_jsonb_subscript; -- an empty sub element delete from test_jsonb_subscript; insert into test_jsonb_subscript values (1, '{"a": {}}'); update test_jsonb_subscript set test_json['a']['b']['c'][2] = '1'; select * from test_jsonb_subscript; delete from test_jsonb_subscript; insert into test_jsonb_subscript values (1, '{"a": []}'); update test_jsonb_subscript set test_json['a'][1]['c'][2] = '1'; select * from test_jsonb_subscript; -- trying replace assuming a composite object, but it's an element or a value delete from test_jsonb_subscript; insert into test_jsonb_subscript values (1, '{"a": 1}'); update test_jsonb_subscript set test_json['a']['b'] = '1'; update test_jsonb_subscript set test_json['a']['b']['c'] = '1'; update test_jsonb_subscript set test_json['a'][0] = '1'; update test_jsonb_subscript set test_json['a'][0]['c'] = '1'; update test_jsonb_subscript set test_json['a'][0][0] = '1'; -- trying replace assuming a composite object, but it's a raw scalar delete from test_jsonb_subscript; insert into test_jsonb_subscript values (1, 'null'); update test_jsonb_subscript set test_json[0] = '1'; update test_jsonb_subscript set test_json[0][0] = '1'; -- try some things with short-header and toasted subscript values drop table test_jsonb_subscript; create temp table test_jsonb_subscript ( id text, test_json jsonb ); insert into test_jsonb_subscript values('foo', '{"foo": "bar"}'); insert into test_jsonb_subscript select s, ('{"' || s || '": "bar"}')::jsonb from repeat('xyzzy', 500) s; select length(id), test_json[id] from test_jsonb_subscript; update test_jsonb_subscript set test_json[id] = '"baz"'; select length(id), test_json[id] from test_jsonb_subscript; \x table test_jsonb_subscript; \x -- 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-17-6.1.0/test/sql/postgres_regress/jsonb_jsonpath.sql000066400000000000000000002110321477334012600252130ustar00rootroot00000000000000select 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")'); -- Test .bigint() select jsonb_path_query('null', '$.bigint()'); select jsonb_path_query('true', '$.bigint()'); select jsonb_path_query('null', '$.bigint()', silent => true); select jsonb_path_query('true', '$.bigint()', silent => true); select jsonb_path_query('[]', '$.bigint()'); select jsonb_path_query('[]', 'strict $.bigint()'); select jsonb_path_query('{}', '$.bigint()'); select jsonb_path_query('[]', 'strict $.bigint()', silent => true); select jsonb_path_query('{}', '$.bigint()', silent => true); select jsonb_path_query('"1.23"', '$.bigint()'); select jsonb_path_query('"1.23aaa"', '$.bigint()'); select jsonb_path_query('1e1000', '$.bigint()'); select jsonb_path_query('"nan"', '$.bigint()'); select jsonb_path_query('"NaN"', '$.bigint()'); select jsonb_path_query('"inf"', '$.bigint()'); select jsonb_path_query('"-inf"', '$.bigint()'); select jsonb_path_query('"inf"', '$.bigint()', silent => true); select jsonb_path_query('"-inf"', '$.bigint()', silent => true); select jsonb_path_query('123', '$.bigint()'); select jsonb_path_query('"123"', '$.bigint()'); select jsonb_path_query('1.23', '$.bigint()'); select jsonb_path_query('1.83', '$.bigint()'); select jsonb_path_query('1234567890123', '$.bigint()'); select jsonb_path_query('"1234567890123"', '$.bigint()'); select jsonb_path_query('12345678901234567890', '$.bigint()'); select jsonb_path_query('"12345678901234567890"', '$.bigint()'); select jsonb_path_query('"+123"', '$.bigint()'); select jsonb_path_query('-123', '$.bigint()'); select jsonb_path_query('"-123"', '$.bigint()'); select jsonb_path_query('123', '$.bigint() * 2'); -- Test .boolean() select jsonb_path_query('null', '$.boolean()'); select jsonb_path_query('null', '$.boolean()', silent => true); select jsonb_path_query('[]', '$.boolean()'); select jsonb_path_query('[]', 'strict $.boolean()'); select jsonb_path_query('{}', '$.boolean()'); select jsonb_path_query('[]', 'strict $.boolean()', silent => true); select jsonb_path_query('{}', '$.boolean()', silent => true); select jsonb_path_query('1.23', '$.boolean()'); select jsonb_path_query('"1.23"', '$.boolean()'); select jsonb_path_query('"1.23aaa"', '$.boolean()'); select jsonb_path_query('1e1000', '$.boolean()'); select jsonb_path_query('"nan"', '$.boolean()'); select jsonb_path_query('"NaN"', '$.boolean()'); select jsonb_path_query('"inf"', '$.boolean()'); select jsonb_path_query('"-inf"', '$.boolean()'); select jsonb_path_query('"inf"', '$.boolean()', silent => true); select jsonb_path_query('"-inf"', '$.boolean()', silent => true); select jsonb_path_query('"100"', '$.boolean()'); select jsonb_path_query('true', '$.boolean()'); select jsonb_path_query('false', '$.boolean()'); select jsonb_path_query('1', '$.boolean()'); select jsonb_path_query('0', '$.boolean()'); select jsonb_path_query('-1', '$.boolean()'); select jsonb_path_query('100', '$.boolean()'); select jsonb_path_query('"1"', '$.boolean()'); select jsonb_path_query('"0"', '$.boolean()'); select jsonb_path_query('"true"', '$.boolean()'); select jsonb_path_query('"false"', '$.boolean()'); select jsonb_path_query('"TRUE"', '$.boolean()'); select jsonb_path_query('"FALSE"', '$.boolean()'); select jsonb_path_query('"yes"', '$.boolean()'); select jsonb_path_query('"NO"', '$.boolean()'); select jsonb_path_query('"T"', '$.boolean()'); select jsonb_path_query('"f"', '$.boolean()'); select jsonb_path_query('"y"', '$.boolean()'); select jsonb_path_query('"N"', '$.boolean()'); select jsonb_path_query('true', '$.boolean().type()'); select jsonb_path_query('123', '$.boolean().type()'); select jsonb_path_query('"Yes"', '$.boolean().type()'); select jsonb_path_query_array('[1, "yes", false]', '$[*].boolean()'); -- Test .date() select jsonb_path_query('null', '$.date()'); select jsonb_path_query('true', '$.date()'); select jsonb_path_query('1', '$.date()'); select jsonb_path_query('[]', '$.date()'); select jsonb_path_query('[]', 'strict $.date()'); select jsonb_path_query('{}', '$.date()'); select jsonb_path_query('"bogus"', '$.date()'); select jsonb '"2023-08-15"' @? '$.date()'; select jsonb_path_query('"2023-08-15"', '$.date()'); select jsonb_path_query('"2023-08-15"', '$.date().type()'); select jsonb_path_query('"12:34:56"', '$.date()'); select jsonb_path_query('"12:34:56 +05:30"', '$.date()'); select jsonb_path_query('"2023-08-15 12:34:56"', '$.date()'); select jsonb_path_query('"2023-08-15 12:34:56 +05:30"', '$.date()'); select jsonb_path_query_tz('"2023-08-15 12:34:56 +05:30"', '$.date()'); -- should work select jsonb_path_query('"2023-08-15"', '$.date(2)'); -- Test .decimal() select jsonb_path_query('null', '$.decimal()'); select jsonb_path_query('true', '$.decimal()'); select jsonb_path_query('null', '$.decimal()', silent => true); select jsonb_path_query('true', '$.decimal()', silent => true); select jsonb_path_query('[]', '$.decimal()'); select jsonb_path_query('[]', 'strict $.decimal()'); select jsonb_path_query('{}', '$.decimal()'); select jsonb_path_query('[]', 'strict $.decimal()', silent => true); select jsonb_path_query('{}', '$.decimal()', silent => true); select jsonb_path_query('1.23', '$.decimal()'); select jsonb_path_query('"1.23"', '$.decimal()'); select jsonb_path_query('"1.23aaa"', '$.decimal()'); select jsonb_path_query('1e1000', '$.decimal()'); select jsonb_path_query('"nan"', '$.decimal()'); select jsonb_path_query('"NaN"', '$.decimal()'); select jsonb_path_query('"inf"', '$.decimal()'); select jsonb_path_query('"-inf"', '$.decimal()'); select jsonb_path_query('"inf"', '$.decimal()', silent => true); select jsonb_path_query('"-inf"', '$.decimal()', silent => true); select jsonb_path_query('123', '$.decimal()'); select jsonb_path_query('"123"', '$.decimal()'); select jsonb_path_query('12345678901234567890', '$.decimal()'); select jsonb_path_query('"12345678901234567890"', '$.decimal()'); select jsonb_path_query('"+12.3"', '$.decimal()'); select jsonb_path_query('-12.3', '$.decimal()'); select jsonb_path_query('"-12.3"', '$.decimal()'); select jsonb_path_query('12.3', '$.decimal() * 2'); select jsonb_path_query('12345.678', '$.decimal(6, 1)'); select jsonb_path_query('12345.678', '$.decimal(6, 2)'); select jsonb_path_query('1234.5678', '$.decimal(6, 2)'); select jsonb_path_query('12345.678', '$.decimal(4, 6)'); select jsonb_path_query('12345.678', '$.decimal(0, 6)'); select jsonb_path_query('12345.678', '$.decimal(1001, 6)'); select jsonb_path_query('1234.5678', '$.decimal(+6, +2)'); select jsonb_path_query('1234.5678', '$.decimal(+6, -2)'); select jsonb_path_query('1234.5678', '$.decimal(-6, +2)'); select jsonb_path_query('1234.5678', '$.decimal(6, -1001)'); select jsonb_path_query('1234.5678', '$.decimal(6, 1001)'); select jsonb_path_query('-1234.5678', '$.decimal(+6, -2)'); select jsonb_path_query('0.0123456', '$.decimal(1,2)'); select jsonb_path_query('0.0012345', '$.decimal(2,4)'); select jsonb_path_query('-0.00123456', '$.decimal(2,-4)'); select jsonb_path_query('12.3', '$.decimal(12345678901,1)'); select jsonb_path_query('12.3', '$.decimal(1,12345678901)'); -- Test .integer() select jsonb_path_query('null', '$.integer()'); select jsonb_path_query('true', '$.integer()'); select jsonb_path_query('null', '$.integer()', silent => true); select jsonb_path_query('true', '$.integer()', silent => true); select jsonb_path_query('[]', '$.integer()'); select jsonb_path_query('[]', 'strict $.integer()'); select jsonb_path_query('{}', '$.integer()'); select jsonb_path_query('[]', 'strict $.integer()', silent => true); select jsonb_path_query('{}', '$.integer()', silent => true); select jsonb_path_query('"1.23"', '$.integer()'); select jsonb_path_query('"1.23aaa"', '$.integer()'); select jsonb_path_query('1e1000', '$.integer()'); select jsonb_path_query('"nan"', '$.integer()'); select jsonb_path_query('"NaN"', '$.integer()'); select jsonb_path_query('"inf"', '$.integer()'); select jsonb_path_query('"-inf"', '$.integer()'); select jsonb_path_query('"inf"', '$.integer()', silent => true); select jsonb_path_query('"-inf"', '$.integer()', silent => true); select jsonb_path_query('123', '$.integer()'); select jsonb_path_query('"123"', '$.integer()'); select jsonb_path_query('1.23', '$.integer()'); select jsonb_path_query('1.83', '$.integer()'); select jsonb_path_query('12345678901', '$.integer()'); select jsonb_path_query('"12345678901"', '$.integer()'); select jsonb_path_query('"+123"', '$.integer()'); select jsonb_path_query('-123', '$.integer()'); select jsonb_path_query('"-123"', '$.integer()'); select jsonb_path_query('123', '$.integer() * 2'); -- Test .number() select jsonb_path_query('null', '$.number()'); select jsonb_path_query('true', '$.number()'); select jsonb_path_query('null', '$.number()', silent => true); select jsonb_path_query('true', '$.number()', silent => true); select jsonb_path_query('[]', '$.number()'); select jsonb_path_query('[]', 'strict $.number()'); select jsonb_path_query('{}', '$.number()'); select jsonb_path_query('[]', 'strict $.number()', silent => true); select jsonb_path_query('{}', '$.number()', silent => true); select jsonb_path_query('1.23', '$.number()'); select jsonb_path_query('"1.23"', '$.number()'); select jsonb_path_query('"1.23aaa"', '$.number()'); select jsonb_path_query('1e1000', '$.number()'); select jsonb_path_query('"nan"', '$.number()'); select jsonb_path_query('"NaN"', '$.number()'); select jsonb_path_query('"inf"', '$.number()'); select jsonb_path_query('"-inf"', '$.number()'); select jsonb_path_query('"inf"', '$.number()', silent => true); select jsonb_path_query('"-inf"', '$.number()', silent => true); select jsonb_path_query('123', '$.number()'); select jsonb_path_query('"123"', '$.number()'); select jsonb_path_query('12345678901234567890', '$.number()'); select jsonb_path_query('"12345678901234567890"', '$.number()'); select jsonb_path_query('"+12.3"', '$.number()'); select jsonb_path_query('-12.3', '$.number()'); select jsonb_path_query('"-12.3"', '$.number()'); select jsonb_path_query('12.3', '$.number() * 2'); -- Test .string() select jsonb_path_query('null', '$.string()'); select jsonb_path_query('null', '$.string()', silent => true); select jsonb_path_query('[]', '$.string()'); select jsonb_path_query('[]', 'strict $.string()'); select jsonb_path_query('{}', '$.string()'); select jsonb_path_query('[]', 'strict $.string()', silent => true); select jsonb_path_query('{}', '$.string()', silent => true); select jsonb_path_query('1.23', '$.string()'); select jsonb_path_query('"1.23"', '$.string()'); select jsonb_path_query('"1.23aaa"', '$.string()'); select jsonb_path_query('1234', '$.string()'); select jsonb_path_query('true', '$.string()'); select jsonb_path_query('1234', '$.string().type()'); select jsonb_path_query('[2, true]', '$.string()'); select jsonb_path_query_array('[1.23, "yes", false]', '$[*].string()'); select jsonb_path_query_array('[1.23, "yes", false]', '$[*].string().type()'); select jsonb_path_query('"2023-08-15 12:34:56 +5:30"', '$.timestamp().string()'); select jsonb_path_query_tz('"2023-08-15 12:34:56 +5:30"', '$.timestamp().string()'); -- should work select jsonb_path_query('"2023-08-15 12:34:56"', '$.timestamp_tz().string()'); select jsonb_path_query_tz('"2023-08-15 12:34:56"', '$.timestamp_tz().string()'); -- should work select jsonb_path_query('"2023-08-15 12:34:56 +5:30"', '$.timestamp_tz().string()'); select jsonb_path_query('"2023-08-15 12:34:56"', '$.timestamp().string()'); select jsonb_path_query('"12:34:56 +5:30"', '$.time_tz().string()'); -- this timetz usage will absorb the UTC offset of the current timezone setting begin; set local timezone = 'UTC-10'; select jsonb_path_query_tz('"12:34:56"', '$.time_tz().string()'); rollback; select jsonb_path_query('"12:34:56"', '$.time().string()'); select jsonb_path_query('"2023-08-15"', '$.date().string()'); -- .string() does not react to timezone or datestyle begin; set local timezone = 'UTC'; set local datestyle = 'German'; select jsonb_path_query('"2023-08-15 12:34:56 +5:30"', '$.timestamp_tz().string()'); select jsonb_path_query('"2023-08-15 12:34:56"', '$.timestamp().string()'); rollback; -- Test .time() select jsonb_path_query('null', '$.time()'); select jsonb_path_query('true', '$.time()'); select jsonb_path_query('1', '$.time()'); select jsonb_path_query('[]', '$.time()'); select jsonb_path_query('[]', 'strict $.time()'); select jsonb_path_query('{}', '$.time()'); select jsonb_path_query('"bogus"', '$.time()'); select jsonb '"12:34:56"' @? '$.time()'; select jsonb_path_query('"12:34:56"', '$.time()'); select jsonb_path_query('"12:34:56"', '$.time().type()'); select jsonb_path_query('"2023-08-15"', '$.time()'); select jsonb_path_query('"12:34:56 +05:30"', '$.time()'); select jsonb_path_query_tz('"12:34:56 +05:30"', '$.time()'); -- should work select jsonb_path_query('"2023-08-15 12:34:56"', '$.time()'); select jsonb_path_query('"12:34:56.789"', '$.time(-1)'); select jsonb_path_query('"12:34:56.789"', '$.time(2.0)'); select jsonb_path_query('"12:34:56.789"', '$.time(12345678901)'); select jsonb_path_query('"12:34:56.789"', '$.time(0)'); select jsonb_path_query('"12:34:56.789"', '$.time(2)'); select jsonb_path_query('"12:34:56.789"', '$.time(5)'); select jsonb_path_query('"12:34:56.789"', '$.time(10)'); select jsonb_path_query('"12:34:56.789012"', '$.time(8)'); -- Test .time_tz() select jsonb_path_query('null', '$.time_tz()'); select jsonb_path_query('true', '$.time_tz()'); select jsonb_path_query('1', '$.time_tz()'); select jsonb_path_query('[]', '$.time_tz()'); select jsonb_path_query('[]', 'strict $.time_tz()'); select jsonb_path_query('{}', '$.time_tz()'); select jsonb_path_query('"bogus"', '$.time_tz()'); select jsonb '"12:34:56 +05:30"' @? '$.time_tz()'; select jsonb_path_query('"12:34:56 +05:30"', '$.time_tz()'); select jsonb_path_query('"12:34:56 +05:30"', '$.time_tz().type()'); select jsonb_path_query('"2023-08-15"', '$.time_tz()'); select jsonb_path_query('"2023-08-15 12:34:56"', '$.time_tz()'); select jsonb_path_query('"12:34:56.789 +05:30"', '$.time_tz(-1)'); select jsonb_path_query('"12:34:56.789 +05:30"', '$.time_tz(2.0)'); select jsonb_path_query('"12:34:56.789 +05:30"', '$.time_tz(12345678901)'); select jsonb_path_query('"12:34:56.789 +05:30"', '$.time_tz(0)'); select jsonb_path_query('"12:34:56.789 +05:30"', '$.time_tz(2)'); select jsonb_path_query('"12:34:56.789 +05:30"', '$.time_tz(5)'); select jsonb_path_query('"12:34:56.789 +05:30"', '$.time_tz(10)'); select jsonb_path_query('"12:34:56.789012 +05:30"', '$.time_tz(8)'); -- Test .timestamp() select jsonb_path_query('null', '$.timestamp()'); select jsonb_path_query('true', '$.timestamp()'); select jsonb_path_query('1', '$.timestamp()'); select jsonb_path_query('[]', '$.timestamp()'); select jsonb_path_query('[]', 'strict $.timestamp()'); select jsonb_path_query('{}', '$.timestamp()'); select jsonb_path_query('"bogus"', '$.timestamp()'); select jsonb '"2023-08-15 12:34:56"' @? '$.timestamp()'; select jsonb_path_query('"2023-08-15 12:34:56"', '$.timestamp()'); select jsonb_path_query('"2023-08-15 12:34:56"', '$.timestamp().type()'); select jsonb_path_query('"2023-08-15"', '$.timestamp()'); select jsonb_path_query('"12:34:56"', '$.timestamp()'); select jsonb_path_query('"12:34:56 +05:30"', '$.timestamp()'); select jsonb_path_query('"2023-08-15 12:34:56.789"', '$.timestamp(-1)'); select jsonb_path_query('"2023-08-15 12:34:56.789"', '$.timestamp(2.0)'); select jsonb_path_query('"2023-08-15 12:34:56.789"', '$.timestamp(12345678901)'); select jsonb_path_query('"2023-08-15 12:34:56.789"', '$.timestamp(0)'); select jsonb_path_query('"2023-08-15 12:34:56.789"', '$.timestamp(2)'); select jsonb_path_query('"2023-08-15 12:34:56.789"', '$.timestamp(5)'); select jsonb_path_query('"2023-08-15 12:34:56.789"', '$.timestamp(10)'); select jsonb_path_query('"2023-08-15 12:34:56.789012"', '$.timestamp(8)'); -- Test .timestamp_tz() select jsonb_path_query('null', '$.timestamp_tz()'); select jsonb_path_query('true', '$.timestamp_tz()'); select jsonb_path_query('1', '$.timestamp_tz()'); select jsonb_path_query('[]', '$.timestamp_tz()'); select jsonb_path_query('[]', 'strict $.timestamp_tz()'); select jsonb_path_query('{}', '$.timestamp_tz()'); select jsonb_path_query('"bogus"', '$.timestamp_tz()'); select jsonb '"2023-08-15 12:34:56 +05:30"' @? '$.timestamp_tz()'; select jsonb_path_query('"2023-08-15 12:34:56 +05:30"', '$.timestamp_tz()'); select jsonb_path_query('"2023-08-15 12:34:56 +05:30"', '$.timestamp_tz().type()'); select jsonb_path_query('"2023-08-15"', '$.timestamp_tz()'); select jsonb_path_query_tz('"2023-08-15"', '$.timestamp_tz()'); -- should work select jsonb_path_query('"12:34:56"', '$.timestamp_tz()'); select jsonb_path_query('"12:34:56 +05:30"', '$.timestamp_tz()'); select jsonb_path_query('"2023-08-15 12:34:56.789 +05:30"', '$.timestamp_tz(-1)'); select jsonb_path_query('"2023-08-15 12:34:56.789 +05:30"', '$.timestamp_tz(2.0)'); select jsonb_path_query('"2023-08-15 12:34:56.789 +05:30"', '$.timestamp_tz(12345678901)'); select jsonb_path_query('"2023-08-15 12:34:56.789 +05:30"', '$.timestamp_tz(0)'); select jsonb_path_query('"2023-08-15 12:34:56.789 +05:30"', '$.timestamp_tz(2)'); select jsonb_path_query('"2023-08-15 12:34:56.789 +05:30"', '$.timestamp_tz(5)'); select jsonb_path_query('"2023-08-15 12:34:56.789 +05:30"', '$.timestamp_tz(10)'); select jsonb_path_query('"2023-08-15 12:34:56.789012 +05:30"', '$.timestamp_tz(8)'); set time zone '+00'; select jsonb_path_query('"2023-08-15 12:34:56 +05:30"', '$.time()'); select jsonb_path_query_tz('"2023-08-15 12:34:56 +05:30"', '$.time()'); -- should work select jsonb_path_query('"2023-08-15 12:34:56 +05:30"', '$.time_tz()'); select jsonb_path_query('"12:34:56"', '$.time_tz()'); select jsonb_path_query_tz('"12:34:56"', '$.time_tz()'); -- should work select jsonb_path_query('"2023-08-15 12:34:56 +05:30"', '$.timestamp()'); select jsonb_path_query_tz('"2023-08-15 12:34:56 +05:30"', '$.timestamp()'); -- should work select jsonb_path_query('"2023-08-15 12:34:56"', '$.timestamp_tz()'); select jsonb_path_query_tz('"2023-08-15 12:34:56"', '$.timestamp_tz()'); -- should work 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('"2023-08-15 12:34:56 +05:30"', '$.time()'); select jsonb_path_query_tz('"2023-08-15 12:34:56 +05:30"', '$.time()'); -- should work select jsonb_path_query('"2023-08-15 12:34:56 +05:30"', '$.time_tz()'); select jsonb_path_query('"2023-08-15 12:34:56 +05:30"', '$.timestamp()'); select jsonb_path_query_tz('"2023-08-15 12:34:56 +05:30"', '$.timestamp()'); -- should work select jsonb_path_query('"2023-08-15 12:34:56"', '$.timestamp_tz()'); select jsonb_path_query_tz('"2023-08-15 12:34:56"', '$.timestamp_tz()'); -- should work select jsonb_path_query('"2023-08-15 12:34:56 +05:30"', '$.timestamp_tz()'); 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('"2023-08-15 12:34:56 +05:30"', '$.time()'); select jsonb_path_query_tz('"2023-08-15 12:34:56 +05:30"', '$.time()'); -- should work select jsonb_path_query('"2023-08-15 12:34:56 +05:30"', '$.time_tz()'); select jsonb_path_query('"2023-08-15 12:34:56 +05:30"', '$.timestamp()'); select jsonb_path_query_tz('"2023-08-15 12:34:56 +05:30"', '$.timestamp()'); -- should work select jsonb_path_query('"2023-08-15 12:34:56 +05:30"', '$.timestamp_tz()'); 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('"2017-03-10 12:34:56.789+3:10"', '$.datetime()'); select jsonb_path_query('"2017-03-10T12:34:56.789+3:10"', '$.datetime()'); select jsonb_path_query('"2017-03-10t12:34:56.789+3:10"', '$.datetime()'); select jsonb_path_query('"2017-03-10T12:34:56.789EST"', '$.datetime()'); select jsonb_path_query('"2017-03-10T12:34:56.789Z"', '$.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"))'); select jsonb_path_query_tz( '["2017-03-10", "2017-03-11", "2017-03-09", "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() ? (@ == "2017-03-10".date())'); select jsonb_path_query_tz( '["2017-03-10", "2017-03-11", "2017-03-09", "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() ? (@ >= "2017-03-10".date())'); select jsonb_path_query_tz( '["2017-03-10", "2017-03-11", "2017-03-09", "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() ? (@ < "2017-03-10".date())'); select jsonb_path_query( '["2017-03-10", "2017-03-11", "2017-03-09", "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"]', '$[*].date() ? (@ == "2017-03-10".date())'); select jsonb_path_query( '["2017-03-10", "2017-03-11", "2017-03-09", "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"]', '$[*].date() ? (@ >= "2017-03-10".date())'); select jsonb_path_query( '["2017-03-10", "2017-03-11", "2017-03-09", "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"]', '$[*].date() ? (@ < "2017-03-10".date())'); select jsonb_path_query_tz( '["2017-03-10", "2017-03-11", "2017-03-09", "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"]', '$[*].date() ? (@ == "2017-03-10".date())'); select jsonb_path_query_tz( '["2017-03-10", "2017-03-11", "2017-03-09", "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"]', '$[*].date() ? (@ >= "2017-03-10".date())'); select jsonb_path_query_tz( '["2017-03-10", "2017-03-11", "2017-03-09", "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"]', '$[*].date() ? (@ < "2017-03-10".date())'); -- 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"))'); 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 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].datetime() ? (@ == "12:35:00".time())'); 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 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].datetime() ? (@ >= "12:35:00".time())'); 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 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].datetime() ? (@ < "12:35:00".time())'); 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 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].time() ? (@ == "12:35:00".time())'); 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 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].time() ? (@ >= "12:35:00".time())'); 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 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].time() ? (@ < "12:35:00".time())'); select jsonb_path_query( '["12:34:00.123", "12:35:00.123", "12:36:00.1123", "12:35:00.1123+00", "12:35:00.123+01", "13:35:00.123+01", "2017-03-10 12:35:00.1", "2017-03-10 12:35:00.123+01"]', '$[*].time(2) ? (@ >= "12:35:00.123".time(2))'); 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 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].time() ? (@ == "12:35:00".time())'); 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 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].time() ? (@ >= "12:35:00".time())'); 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 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].time() ? (@ < "12:35:00".time())'); select jsonb_path_query_tz( '["12:34:00.123", "12:35:00.123", "12:36:00.1123", "12:35:00.1123+00", "12:35:00.123+01", "13:35:00.123+01", "2017-03-10 12:35:00.1", "2017-03-10 12:35:00.123+01"]', '$[*].time(2) ? (@ >= "12:35:00.123".time(2))'); -- 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"))'); 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 12:35:00 +1"]', '$[*].datetime() ? (@ == "12:35:00 +1".time_tz())'); 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 12:35:00 +1"]', '$[*].datetime() ? (@ >= "12:35:00 +1".time_tz())'); 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 12:35:00 +1"]', '$[*].datetime() ? (@ < "12:35:00 +1".time_tz())'); 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 12:35:00 +1"]', '$[*].time_tz() ? (@ == "12:35:00 +1".time_tz())'); 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 12:35:00 +1"]', '$[*].time_tz() ? (@ >= "12:35:00 +1".time_tz())'); 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 12:35:00 +1"]', '$[*].time_tz() ? (@ < "12:35:00 +1".time_tz())'); select jsonb_path_query( '["12:34:00.123+01", "12:35:00.123+01", "12:36:00.1123+01", "12:35:00.1123+02", "12:35:00.123-02", "10:35:00.123", "11:35:00.1", "12:35:00.123", "2017-03-10 12:35:00.123 +1"]', '$[*].time_tz(2) ? (@ >= "12:35:00.123 +1".time_tz(2))'); 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 12:35:00 +1"]', '$[*].time_tz() ? (@ == "12:35:00 +1".time_tz())'); 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 12:35:00 +1"]', '$[*].time_tz() ? (@ >= "12:35:00 +1".time_tz())'); 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 12:35:00 +1"]', '$[*].time_tz() ? (@ < "12:35:00 +1".time_tz())'); select jsonb_path_query_tz( '["12:34:00.123+01", "12:35:00.123+01", "12:36:00.1123+01", "12:35:00.1123+02", "12:35:00.123-02", "10:35:00.123", "11:35:00.1", "12:35:00.123", "2017-03-10 12:35:00.123 +1"]', '$[*].time_tz(2) ? (@ >= "12:35:00.123 +1".time_tz(2))'); -- 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"))'); 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"]', '$[*].datetime() ? (@ == "2017-03-10 12:35:00".timestamp())'); 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"]', '$[*].datetime() ? (@ >= "2017-03-10 12:35:00".timestamp())'); 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"]', '$[*].datetime() ? (@ < "2017-03-10 12:35:00".timestamp())'); 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"]', '$[*].timestamp() ? (@ == "2017-03-10 12:35:00".timestamp())'); 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"]', '$[*].timestamp() ? (@ >= "2017-03-10 12:35:00".timestamp())'); 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"]', '$[*].timestamp() ? (@ < "2017-03-10 12:35:00".timestamp())'); select jsonb_path_query( '["2017-03-10 12:34:00.123", "2017-03-10 12:35:00.123", "2017-03-10 12:36:00.1123", "2017-03-10 12:35:00.1123+01", "2017-03-10 13:35:00.123+01", "2017-03-10 12:35:00.1-01", "2017-03-10", "2017-03-11"]', '$[*].timestamp(2) ? (@ >= "2017-03-10 12:35:00.123".timestamp(2))'); 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"]', '$[*].timestamp() ? (@ == "2017-03-10 12:35:00".timestamp())'); 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"]', '$[*].timestamp() ? (@ >= "2017-03-10 12:35:00".timestamp())'); 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"]', '$[*].timestamp() ? (@ < "2017-03-10 12:35:00".timestamp())'); select jsonb_path_query_tz( '["2017-03-10 12:34:00.123", "2017-03-10 12:35:00.123", "2017-03-10 12:36:00.1123", "2017-03-10 12:35:00.1123+01", "2017-03-10 13:35:00.123+01", "2017-03-10 12:35:00.1-01", "2017-03-10", "2017-03-11"]', '$[*].timestamp(2) ? (@ >= "2017-03-10 12:35:00.123".timestamp(2))'); -- 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"))'); 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"]', '$[*].datetime() ? (@ == "2017-03-10 12:35:00 +1".timestamp_tz())'); 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"]', '$[*].datetime() ? (@ >= "2017-03-10 12:35:00 +1".timestamp_tz())'); 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"]', '$[*].datetime() ? (@ < "2017-03-10 12:35:00 +1".timestamp_tz())'); 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"]', '$[*].timestamp_tz() ? (@ == "2017-03-10 12:35:00 +1".timestamp_tz())'); 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"]', '$[*].timestamp_tz() ? (@ >= "2017-03-10 12:35:00 +1".timestamp_tz())'); 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"]', '$[*].timestamp_tz() ? (@ < "2017-03-10 12:35:00 +1".timestamp_tz())'); select jsonb_path_query( '["2017-03-10 12:34:00.123+01", "2017-03-10 12:35:00.123+01", "2017-03-10 12:36:00.1123+01", "2017-03-10 12:35:00.1123+02", "2017-03-10 12:35:00.123-02", "2017-03-10 10:35:00.123", "2017-03-10 11:35:00.1", "2017-03-10 12:35:00.123", "2017-03-10", "2017-03-11"]', '$[*].timestamp_tz(2) ? (@ >= "2017-03-10 12:35:00.123 +1".timestamp_tz(2))'); 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"]', '$[*].timestamp_tz() ? (@ == "2017-03-10 12:35:00 +1".timestamp_tz())'); 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"]', '$[*].timestamp_tz() ? (@ >= "2017-03-10 12:35:00 +1".timestamp_tz())'); 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"]', '$[*].timestamp_tz() ? (@ < "2017-03-10 12:35:00 +1".timestamp_tz())'); select jsonb_path_query_tz( '["2017-03-10 12:34:00.123+01", "2017-03-10 12:35:00.123+01", "2017-03-10 12:36:00.1123+01", "2017-03-10 12:35:00.1123+02", "2017-03-10 12:35:00.123-02", "2017-03-10 10:35:00.123", "2017-03-10 11:35:00.1", "2017-03-10 12:35:00.123", "2017-03-10", "2017-03-11"]', '$[*].timestamp_tz(2) ? (@ >= "2017-03-10 12:35:00.123 +1".timestamp_tz(2))'); -- 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('[{"a": 1}]', '$undefined_var'); SELECT jsonb_path_query('[{"a": 1}]', 'false'); 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_path_query_first('[{"a": 1}]', '$undefined_var'); SELECT jsonb_path_query_first('[{"a": 1}]', 'false'); 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_exists('[{"a": 1}]', '$undefined_var'); SELECT jsonb_path_exists('[{"a": 1}]', 'false'); 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'); SELECT jsonb_path_match('[{"a": 1}]', '$undefined_var'); SELECT jsonb_path_match('[{"a": 1}]', 'false'); -- 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-17-6.1.0/test/sql/postgres_regress/jsonpath.sql000066400000000000000000000205441477334012600240260ustar00rootroot00000000000000--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 '$.bigint().integer().number().decimal()'::jsonpath; select '$.boolean()'::jsonpath; select '$.date()'::jsonpath; select '$.decimal(4,2)'::jsonpath; select '$.string()'::jsonpath; select '$.time()'::jsonpath; select '$.time(6)'::jsonpath; select '$.time_tz()'::jsonpath; select '$.time_tz(4)'::jsonpath; select '$.timestamp()'::jsonpath; select '$.timestamp(2)'::jsonpath; select '$.timestamp_tz()'::jsonpath; select '$.timestamp_tz(0)'::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; -- numeric literals select '0'::jsonpath; select '00'::jsonpath; select '0755'::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 '.001'::jsonpath; select '.001e1'::jsonpath; select '1.'::jsonpath; select '1.e1'::jsonpath; select '1a'::jsonpath; select '1e'::jsonpath; select '1.e'::jsonpath; select '1.2a'::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.2e3a'::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; select '1?(2>3)'::jsonpath; -- nondecimal select '0b100101'::jsonpath; select '0o273'::jsonpath; select '0x42F'::jsonpath; -- error cases select '0b'::jsonpath; select '1b'::jsonpath; select '0b0x'::jsonpath; select '0o'::jsonpath; select '1o'::jsonpath; select '0o0x'::jsonpath; select '0x'::jsonpath; select '1x'::jsonpath; select '0x0y'::jsonpath; -- underscores select '1_000_000'::jsonpath; select '1_2_3'::jsonpath; select '0x1EEE_FFFF'::jsonpath; select '0o2_73'::jsonpath; select '0b10_0101'::jsonpath; select '1_000.000_005'::jsonpath; select '1_000.'::jsonpath; select '.000_005'::jsonpath; select '1_000.5e0_1'::jsonpath; -- error cases select '_100'::jsonpath; select '100_'::jsonpath; select '100__000'::jsonpath; select '_1_000.5'::jsonpath; select '1_000_.5'::jsonpath; select '1_000._5'::jsonpath; select '1_000.5_'::jsonpath; select '1_000.5e_1'::jsonpath; -- underscore after prefix not allowed in JavaScript (but allowed in SQL) select '0b_10_0101'::jsonpath; select '0o_273'::jsonpath; select '0x_42F'::jsonpath; -- test non-error-throwing API SELECT str as jsonpath, pg_input_is_valid(str,'jsonpath') as ok, errinfo.sql_error_code, errinfo.message, errinfo.detail, errinfo.hint FROM unnest(ARRAY['$ ? (@ like_regex "pattern" flag "smixq")'::text, '$ ? (@ like_regex "pattern" flag "a")', '@ + 1', '00', '1a']) str, LATERAL pg_input_error_info(str, 'jsonpath') as errinfo; libpg_query-17-6.1.0/test/sql/postgres_regress/jsonpath_encoding.sql000066400000000000000000000046701477334012600256760ustar00rootroot00000000000000-- -- 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-17-6.1.0/test/sql/postgres_regress/largeobject.sql000066400000000000000000000225611477334012600244620ustar00rootroot00000000000000-- -- Test large object support -- -- directory paths are passed to us in environment variables \getenv abs_srcdir PG_ABS_SRCDIR \getenv abs_builddir PG_ABS_BUILDDIR -- ensure consistent test output regardless of the default bytea format SET bytea_output TO escape; -- Test ALTER LARGE OBJECT OWNER CREATE ROLE regress_lo_user; SELECT lo_create(42); ALTER LARGE OBJECT 42 OWNER TO regress_lo_user; -- Test GRANT, COMMENT as non-superuser SET SESSION AUTHORIZATION regress_lo_user; GRANT SELECT ON LARGE OBJECT 42 TO public; COMMENT ON LARGE OBJECT 42 IS 'the ultimate answer'; RESET SESSION AUTHORIZATION; -- Test psql's \lo_list et al (we assume no other LOs exist yet) \lo_list \lo_list+ \lo_unlink 42 \dl -- Load a file CREATE TABLE lotest_stash_values (loid oid, fd integer); -- lo_creat(mode integer) returns oid -- The mode arg to lo_creat is unused, some vestigal holdover from ancient times -- returns the large object id INSERT INTO lotest_stash_values (loid) SELECT lo_creat(42); -- NOTE: large objects require transactions BEGIN; -- lo_open(lobjId oid, mode integer) returns integer -- The mode parameter to lo_open uses two constants: -- INV_WRITE = 0x20000 -- INV_READ = 0x40000 -- The return value is a file descriptor-like value which remains valid for the -- transaction. UPDATE lotest_stash_values SET fd = lo_open(loid, CAST(x'20000' | x'40000' AS integer)); -- loread/lowrite names are wonky, different from other functions which are lo_* -- lowrite(fd integer, data bytea) returns integer -- the integer is the number of bytes written SELECT lowrite(fd, ' I wandered lonely as a cloud That floats on high o''er vales and hills, When all at once I saw a crowd, A host, of golden daffodils; Beside the lake, beneath the trees, Fluttering and dancing in the breeze. Continuous as the stars that shine And twinkle on the milky way, They stretched in never-ending line Along the margin of a bay: Ten thousand saw I at a glance, Tossing their heads in sprightly dance. The waves beside them danced; but they Out-did the sparkling waves in glee: A poet could not but be gay, In such a jocund company: I gazed--and gazed--but little thought What wealth the show to me had brought: For oft, when on my couch I lie In vacant or in pensive mood, They flash upon that inward eye Which is the bliss of solitude; And then my heart with pleasure fills, And dances with the daffodils. -- William Wordsworth ') FROM lotest_stash_values; -- lo_close(fd integer) returns integer -- return value is 0 for success, or <0 for error (actually only -1, but...) SELECT lo_close(fd) FROM lotest_stash_values; END; -- Copy to another large object. -- Note: we intentionally don't remove the object created here; -- it's left behind to help test pg_dump. SELECT lo_from_bytea(0, lo_get(loid)) AS newloid FROM lotest_stash_values \gset -- Add a comment to it, as well, for pg_dump/pg_upgrade testing. COMMENT ON LARGE OBJECT :newloid IS 'I Wandered Lonely as a Cloud'; -- Read out a portion BEGIN; UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer)); -- lo_lseek(fd integer, offset integer, whence integer) returns integer -- offset is in bytes, whence is one of three values: -- SEEK_SET (= 0) meaning relative to beginning -- SEEK_CUR (= 1) meaning relative to current position -- SEEK_END (= 2) meaning relative to end (offset better be negative) -- returns current position in file SELECT lo_lseek(fd, 104, 0) FROM lotest_stash_values; -- loread/lowrite names are wonky, different from other functions which are lo_* -- loread(fd integer, len integer) returns bytea SELECT loread(fd, 28) FROM lotest_stash_values; SELECT lo_lseek(fd, -19, 1) FROM lotest_stash_values; SELECT lowrite(fd, 'n') FROM lotest_stash_values; SELECT lo_tell(fd) FROM lotest_stash_values; SELECT lo_lseek(fd, -744, 2) FROM lotest_stash_values; SELECT loread(fd, 28) FROM lotest_stash_values; SELECT lo_close(fd) FROM lotest_stash_values; END; -- Test resource management BEGIN; SELECT lo_open(loid, x'40000'::int) from lotest_stash_values; ABORT; \set filename :abs_builddir '/results/invalid/path' \set dobody 'DECLARE loid oid; BEGIN ' \set dobody :dobody 'SELECT tbl.loid INTO loid FROM lotest_stash_values tbl; ' \set dobody :dobody 'PERFORM lo_export(loid, ' :'filename' '); ' \set dobody :dobody 'EXCEPTION WHEN UNDEFINED_FILE THEN ' \set dobody :dobody 'RAISE NOTICE ''could not open file, as expected''; END' DO :'dobody'; -- Test truncation. BEGIN; UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer)); SELECT lo_truncate(fd, 11) FROM lotest_stash_values; SELECT loread(fd, 15) FROM lotest_stash_values; SELECT lo_truncate(fd, 10000) FROM lotest_stash_values; SELECT loread(fd, 10) FROM lotest_stash_values; SELECT lo_lseek(fd, 0, 2) FROM lotest_stash_values; SELECT lo_tell(fd) FROM lotest_stash_values; SELECT lo_truncate(fd, 5000) FROM lotest_stash_values; SELECT lo_lseek(fd, 0, 2) FROM lotest_stash_values; SELECT lo_tell(fd) FROM lotest_stash_values; SELECT lo_close(fd) FROM lotest_stash_values; END; -- Test 64-bit large object functions. BEGIN; UPDATE lotest_stash_values SET fd = lo_open(loid, CAST(x'20000' | x'40000' AS integer)); SELECT lo_lseek64(fd, 4294967296, 0) FROM lotest_stash_values; SELECT lowrite(fd, 'offset:4GB') FROM lotest_stash_values; SELECT lo_tell64(fd) FROM lotest_stash_values; SELECT lo_lseek64(fd, -10, 1) FROM lotest_stash_values; SELECT lo_tell64(fd) FROM lotest_stash_values; SELECT loread(fd, 10) FROM lotest_stash_values; SELECT lo_truncate64(fd, 5000000000) FROM lotest_stash_values; SELECT lo_lseek64(fd, 0, 2) FROM lotest_stash_values; SELECT lo_tell64(fd) FROM lotest_stash_values; SELECT lo_truncate64(fd, 3000000000) FROM lotest_stash_values; SELECT lo_lseek64(fd, 0, 2) FROM lotest_stash_values; SELECT lo_tell64(fd) FROM lotest_stash_values; SELECT lo_close(fd) FROM lotest_stash_values; END; -- lo_unlink(lobjId oid) returns integer -- return value appears to always be 1 SELECT lo_unlink(loid) from lotest_stash_values; TRUNCATE lotest_stash_values; \set filename :abs_srcdir '/data/tenk.data' INSERT INTO lotest_stash_values (loid) SELECT lo_import(:'filename'); BEGIN; UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer)); -- verify length of large object SELECT lo_lseek(fd, 0, 2) FROM lotest_stash_values; -- with the default BLCKSZ, LOBLKSIZE = 2048, so this positions us for a block -- edge case SELECT lo_lseek(fd, 2030, 0) FROM lotest_stash_values; -- this should get half of the value from page 0 and half from page 1 of the -- large object SELECT loread(fd, 36) FROM lotest_stash_values; SELECT lo_tell(fd) FROM lotest_stash_values; SELECT lo_lseek(fd, -26, 1) FROM lotest_stash_values; SELECT lowrite(fd, 'abcdefghijklmnop') FROM lotest_stash_values; SELECT lo_lseek(fd, 2030, 0) FROM lotest_stash_values; SELECT loread(fd, 36) FROM lotest_stash_values; SELECT lo_close(fd) FROM lotest_stash_values; END; \set filename :abs_builddir '/results/lotest.txt' SELECT lo_export(loid, :'filename') FROM lotest_stash_values; \lo_import :filename \set newloid :LASTOID -- just make sure \lo_export does not barf \set filename :abs_builddir '/results/lotest2.txt' \lo_export :newloid :filename -- This is a hack to test that export/import are reversible -- This uses knowledge about the inner workings of large object mechanism -- which should not be used outside it. This makes it a HACK SELECT pageno, data FROM pg_largeobject WHERE loid = (SELECT loid from lotest_stash_values) EXCEPT SELECT pageno, data FROM pg_largeobject WHERE loid = :newloid; SELECT lo_unlink(loid) FROM lotest_stash_values; TRUNCATE lotest_stash_values; \lo_unlink :newloid \set filename :abs_builddir '/results/lotest.txt' \lo_import :filename \set newloid_1 :LASTOID SELECT lo_from_bytea(0, lo_get(:newloid_1)) AS newloid_2 \gset SELECT fipshash(lo_get(:newloid_1)) = fipshash(lo_get(:newloid_2)); SELECT lo_get(:newloid_1, 0, 20); SELECT lo_get(:newloid_1, 10, 20); SELECT lo_put(:newloid_1, 5, decode('afafafaf', 'hex')); SELECT lo_get(:newloid_1, 0, 20); SELECT lo_put(:newloid_1, 4294967310, 'foo'); SELECT lo_get(:newloid_1); SELECT lo_get(:newloid_1, 4294967294, 100); \lo_unlink :newloid_1 \lo_unlink :newloid_2 -- This object is left in the database for pg_dump test purposes SELECT lo_from_bytea(0, E'\\xdeadbeef') AS newloid \gset SET bytea_output TO hex; SELECT lo_get(:newloid); -- Create one more object that we leave behind for testing pg_dump/pg_upgrade; -- this one intentionally has an OID in the system range SELECT lo_create(2121); COMMENT ON LARGE OBJECT 2121 IS 'testing comments'; -- Test writes on large objects in read-only transactions START TRANSACTION READ ONLY; -- INV_READ ... ok SELECT lo_open(2121, x'40000'::int); -- INV_WRITE ... error SELECT lo_open(2121, x'20000'::int); ROLLBACK; START TRANSACTION READ ONLY; SELECT lo_create(42); ROLLBACK; START TRANSACTION READ ONLY; SELECT lo_creat(42); ROLLBACK; START TRANSACTION READ ONLY; SELECT lo_unlink(42); ROLLBACK; START TRANSACTION READ ONLY; SELECT lowrite(42, 'x'); ROLLBACK; START TRANSACTION READ ONLY; SELECT lo_import(:'filename'); ROLLBACK; START TRANSACTION READ ONLY; SELECT lo_truncate(42, 0); ROLLBACK; START TRANSACTION READ ONLY; SELECT lo_truncate64(42, 0); ROLLBACK; START TRANSACTION READ ONLY; SELECT lo_from_bytea(0, 'x'); ROLLBACK; START TRANSACTION READ ONLY; SELECT lo_put(42, 0, 'x'); ROLLBACK; -- Clean up DROP TABLE lotest_stash_values; DROP ROLE regress_lo_user; libpg_query-17-6.1.0/test/sql/postgres_regress/limit.sql000066400000000000000000000136751477334012600233250ustar00rootroot00000000000000-- -- 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; -- SKIP LOCKED and WITH TIES are incompatible SELECT thousand FROM onek WHERE thousand < 5 ORDER BY thousand FETCH FIRST 1 ROW WITH TIES FOR UPDATE SKIP LOCKED; -- 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-17-6.1.0/test/sql/postgres_regress/line.sql000066400000000000000000000036121477334012600231240ustar00rootroot00000000000000-- -- 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; -- test non-error-throwing API for some core types SELECT pg_input_is_valid('{1, 1}', 'line'); SELECT * FROM pg_input_error_info('{1, 1}', 'line'); SELECT pg_input_is_valid('{0, 0, 0}', 'line'); SELECT * FROM pg_input_error_info('{0, 0, 0}', 'line'); SELECT pg_input_is_valid('{1, 1, a}', 'line'); SELECT * FROM pg_input_error_info('{1, 1, a}', 'line'); SELECT pg_input_is_valid('{1, 1, 1e400}', 'line'); SELECT * FROM pg_input_error_info('{1, 1, 1e400}', 'line'); SELECT pg_input_is_valid('(1, 1), (1, 1e400)', 'line'); SELECT * FROM pg_input_error_info('(1, 1), (1, 1e400)', 'line'); libpg_query-17-6.1.0/test/sql/postgres_regress/lock.sql000066400000000000000000000147051477334012600231320ustar00rootroot00000000000000-- -- Test the LOCK statement -- -- directory paths and dlsuffix are passed to us in environment variables \getenv libdir PG_LIBDIR \getenv dlsuffix PG_DLSUFFIX \set regresslib :libdir '/regress' :dlsuffix -- 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; REVOKE UPDATE ON TABLE lock_tbl1 FROM regress_rol_lock1; -- Tables referred to by views are locked without explicit permission to do so -- as long as we have permission to lock the view itself. SET ROLE regress_rol_lock1; -- fail without permissions on the view BEGIN; LOCK TABLE lock_view1; ROLLBACK; RESET ROLE; GRANT UPDATE ON TABLE lock_view1 TO regress_rol_lock1; SET ROLE regress_rol_lock1; BEGIN; LOCK TABLE lock_view1 IN ACCESS EXCLUSIVE MODE; -- lock_view1 and lock_tbl1 (plus children lock_tbl2 and lock_tbl3) are locked. select relname from pg_locks l, pg_class c where l.relation = c.oid and relname like '%lock_%' and mode = 'AccessExclusiveLock' order by relname; ROLLBACK; RESET ROLE; REVOKE UPDATE ON TABLE lock_view1 FROM regress_rol_lock1; -- Tables referred to by security invoker views require explicit permission to -- be locked. CREATE VIEW lock_view8 WITH (security_invoker) AS SELECT * FROM lock_tbl1; SET ROLE regress_rol_lock1; -- fail without permissions on the view BEGIN; LOCK TABLE lock_view8; ROLLBACK; RESET ROLE; GRANT UPDATE ON TABLE lock_view8 TO regress_rol_lock1; SET ROLE regress_rol_lock1; -- fail without permissions on the table referenced by the view BEGIN; LOCK TABLE lock_view8; ROLLBACK; RESET ROLE; GRANT UPDATE ON TABLE lock_tbl1 TO regress_rol_lock1; BEGIN; LOCK TABLE lock_view8 IN ACCESS EXCLUSIVE MODE; -- lock_view8 and lock_tbl1 (plus children lock_tbl2 and lock_tbl3) are locked. select relname from pg_locks l, pg_class c where l.relation = c.oid and relname like '%lock_%' and mode = 'AccessExclusiveLock' order by relname; ROLLBACK; RESET ROLE; REVOKE UPDATE ON TABLE lock_view8 FROM regress_rol_lock1; -- -- Clean up -- DROP VIEW lock_view8; 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; CREATE FUNCTION test_atomic_ops() RETURNS bool AS :'regresslib' LANGUAGE C; SELECT test_atomic_ops(); libpg_query-17-6.1.0/test/sql/postgres_regress/lseg.sql000066400000000000000000000016511477334012600231300ustar00rootroot00000000000000-- -- 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; -- test non-error-throwing API for some core types SELECT pg_input_is_valid('[(1,2),(3)]', 'lseg'); SELECT * FROM pg_input_error_info('[(1,2),(3)]', 'lseg'); libpg_query-17-6.1.0/test/sql/postgres_regress/macaddr.sql000066400000000000000000000041411477334012600235660ustar00rootroot00000000000000-- -- 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; -- test non-error-throwing API for some core types SELECT pg_input_is_valid('08:00:2b:01:02:ZZ', 'macaddr'); SELECT * FROM pg_input_error_info('08:00:2b:01:02:ZZ', 'macaddr'); SELECT pg_input_is_valid('08:00:2b:01:02:', 'macaddr'); SELECT * FROM pg_input_error_info('08:00:2b:01:02:', 'macaddr'); libpg_query-17-6.1.0/test/sql/postgres_regress/macaddr8.sql000066400000000000000000000110061477334012600236540ustar00rootroot00000000000000-- -- 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; -- test non-error-throwing API for some core types SELECT pg_input_is_valid('08:00:2b:01:02:03:04:ZZ', 'macaddr8'); SELECT * FROM pg_input_error_info('08:00:2b:01:02:03:04:ZZ', 'macaddr8'); SELECT pg_input_is_valid('08:00:2b:01:02:03:04:', 'macaddr8'); SELECT * FROM pg_input_error_info('08:00:2b:01:02:03:04:', 'macaddr8'); libpg_query-17-6.1.0/test/sql/postgres_regress/matview.sql000066400000000000000000000313171477334012600236540ustar00rootroot00000000000000-- 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; -- this test case also checks for ambiguity in the queries issued by -- refresh_by_match_merge(), by choosing column names that intentionally -- duplicate all the aliases used in those queries CREATE TABLE mvtest_foo_data AS SELECT i, i+1 AS tid, fipshash(random()::text) AS mv, fipshash(random()::text) AS newdata, fipshash(random()::text) AS newdata2, fipshash(random()::text) AS diff 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; -- Concurrent refresh requires a unique index on the materialized -- view. Test what happens if it's dropped during the refresh. SET search_path = mvtest_mvschema, public; CREATE OR REPLACE FUNCTION mvtest_drop_the_index() RETURNS bool AS $$ BEGIN EXECUTE 'DROP INDEX IF EXISTS mvtest_mvschema.mvtest_drop_idx'; RETURN true; END; $$ LANGUAGE plpgsql; CREATE MATERIALIZED VIEW drop_idx_matview AS SELECT 1 as i WHERE mvtest_drop_the_index(); CREATE UNIQUE INDEX mvtest_drop_idx ON drop_idx_matview (i); REFRESH MATERIALIZED VIEW CONCURRENTLY drop_idx_matview; DROP MATERIALIZED VIEW drop_idx_matview; -- clean up RESET search_path; -- 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; -- INSERT privileges if relation owner is not allowed to insert. CREATE SCHEMA matview_schema; CREATE USER regress_matview_user; ALTER DEFAULT PRIVILEGES FOR ROLE regress_matview_user REVOKE INSERT ON TABLES FROM regress_matview_user; GRANT ALL ON SCHEMA matview_schema TO public; SET SESSION AUTHORIZATION regress_matview_user; CREATE MATERIALIZED VIEW matview_schema.mv_withdata1 (a) AS SELECT generate_series(1, 10) WITH DATA; EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE MATERIALIZED VIEW matview_schema.mv_withdata2 (a) AS SELECT generate_series(1, 10) WITH DATA; REFRESH MATERIALIZED VIEW matview_schema.mv_withdata2; CREATE MATERIALIZED VIEW matview_schema.mv_nodata1 (a) AS SELECT generate_series(1, 10) WITH NO DATA; EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE MATERIALIZED VIEW matview_schema.mv_nodata2 (a) AS SELECT generate_series(1, 10) WITH NO DATA; REFRESH MATERIALIZED VIEW matview_schema.mv_nodata2; RESET SESSION AUTHORIZATION; ALTER DEFAULT PRIVILEGES FOR ROLE regress_matview_user GRANT INSERT ON TABLES TO regress_matview_user; DROP SCHEMA matview_schema CASCADE; DROP USER regress_matview_user; -- CREATE MATERIALIZED VIEW ... IF NOT EXISTS CREATE MATERIALIZED VIEW matview_ine_tab AS SELECT 1; CREATE MATERIALIZED VIEW matview_ine_tab AS SELECT 1 / 0; -- error CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS SELECT 1 / 0; -- ok CREATE MATERIALIZED VIEW matview_ine_tab AS SELECT 1 / 0 WITH NO DATA; -- error CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS SELECT 1 / 0 WITH NO DATA; -- ok EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE MATERIALIZED VIEW matview_ine_tab AS SELECT 1 / 0; -- error EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS SELECT 1 / 0; -- ok EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE MATERIALIZED VIEW matview_ine_tab AS SELECT 1 / 0 WITH NO DATA; -- error EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS SELECT 1 / 0 WITH NO DATA; -- ok DROP MATERIALIZED VIEW matview_ine_tab; libpg_query-17-6.1.0/test/sql/postgres_regress/md5.sql000066400000000000000000000030251477334012600226600ustar00rootroot00000000000000-- -- MD5 test suite - from IETF RFC 1321 -- (see: https://www.rfc-editor.org/rfc/rfc1321) -- -- (The md5() function will error in OpenSSL FIPS mode. By keeping -- this test in a separate file, it is easier to manage variant -- results.) 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"; libpg_query-17-6.1.0/test/sql/postgres_regress/memoize.sql000066400000000000000000000161021477334012600236400ustar00rootroot00000000000000-- Perform tests on the Memoize node. -- The cache hits/misses/evictions from the Memoize node can vary between -- machines. Let's just replace the number with an 'N'. In order to allow us -- to perform validation when the measure was zero, we replace a zero value -- with "Zero". All other numbers are replaced with 'N'. create function explain_memoize(query text, hide_hitmiss bool) returns setof text language plpgsql as $$ declare ln text; begin for ln in execute format('explain (analyze, costs off, summary off, timing off) %s', query) loop if hide_hitmiss = true then ln := regexp_replace(ln, 'Hits: 0', 'Hits: Zero'); ln := regexp_replace(ln, 'Hits: \d+', 'Hits: N'); ln := regexp_replace(ln, 'Misses: 0', 'Misses: Zero'); ln := regexp_replace(ln, 'Misses: \d+', 'Misses: N'); end if; ln := regexp_replace(ln, 'Evictions: 0', 'Evictions: Zero'); ln := regexp_replace(ln, 'Evictions: \d+', 'Evictions: N'); ln := regexp_replace(ln, 'Memory Usage: \d+', 'Memory Usage: N'); ln := regexp_replace(ln, 'Heap Fetches: \d+', 'Heap Fetches: N'); ln := regexp_replace(ln, 'loops=\d+', 'loops=N'); return next ln; end loop; end; $$; -- Ensure we get a memoize node on the inner side of the nested loop SET enable_hashjoin TO off; SET enable_bitmapscan TO off; SELECT explain_memoize(' SELECT COUNT(*),AVG(t1.unique1) FROM tenk1 t1 INNER JOIN tenk1 t2 ON t1.unique1 = t2.twenty WHERE t2.unique1 < 1000;', false); -- And check we get the expected results. SELECT COUNT(*),AVG(t1.unique1) FROM tenk1 t1 INNER JOIN tenk1 t2 ON t1.unique1 = t2.twenty WHERE t2.unique1 < 1000; -- Try with LATERAL joins SELECT explain_memoize(' SELECT COUNT(*),AVG(t2.unique1) FROM tenk1 t1, LATERAL (SELECT t2.unique1 FROM tenk1 t2 WHERE t1.twenty = t2.unique1 OFFSET 0) t2 WHERE t1.unique1 < 1000;', false); -- And check we get the expected results. SELECT COUNT(*),AVG(t2.unique1) FROM tenk1 t1, LATERAL (SELECT t2.unique1 FROM tenk1 t2 WHERE t1.twenty = t2.unique1 OFFSET 0) t2 WHERE t1.unique1 < 1000; -- Try with LATERAL joins SELECT explain_memoize(' SELECT COUNT(*),AVG(t2.t1two) FROM tenk1 t1 LEFT JOIN LATERAL ( SELECT t1.two as t1two, * FROM tenk1 t2 WHERE t2.unique1 < 4 OFFSET 0 ) t2 ON t1.two = t2.two WHERE t1.unique1 < 10;', false); -- And check we get the expected results. SELECT COUNT(*),AVG(t2.t1two) FROM tenk1 t1 LEFT JOIN LATERAL ( SELECT t1.two as t1two, * FROM tenk1 t2 WHERE t2.unique1 < 4 OFFSET 0 ) t2 ON t1.two = t2.two WHERE t1.unique1 < 10; SET enable_mergejoin TO off; -- Test for varlena datatype with expr evaluation CREATE TABLE expr_key (x numeric, t text); INSERT INTO expr_key (x, t) SELECT d1::numeric, d1::text FROM ( SELECT round((d / pi())::numeric, 7) AS d1 FROM generate_series(1, 20) AS d ) t; -- duplicate rows so we get some cache hits INSERT INTO expr_key SELECT * FROM expr_key; CREATE INDEX expr_key_idx_x_t ON expr_key (x, t); VACUUM ANALYZE expr_key; -- Ensure we get we get a cache miss and hit for each of the 20 distinct values SELECT explain_memoize(' SELECT * FROM expr_key t1 INNER JOIN expr_key t2 ON t1.x = t2.t::numeric AND t1.t::numeric = t2.x;', false); DROP TABLE expr_key; -- Reduce work_mem and hash_mem_multiplier so that we see some cache evictions SET work_mem TO '64kB'; SET hash_mem_multiplier TO 1.0; -- Ensure we get some evictions. We're unable to validate the hits and misses -- here as the number of entries that fit in the cache at once will vary -- between different machines. SELECT explain_memoize(' SELECT COUNT(*),AVG(t1.unique1) FROM tenk1 t1 INNER JOIN tenk1 t2 ON t1.unique1 = t2.thousand WHERE t2.unique1 < 1200;', true); CREATE TABLE flt (f float); CREATE INDEX flt_f_idx ON flt (f); INSERT INTO flt VALUES('-0.0'::float),('+0.0'::float); ANALYZE flt; SET enable_seqscan TO off; -- Ensure memoize operates in logical mode SELECT explain_memoize(' SELECT * FROM flt f1 INNER JOIN flt f2 ON f1.f = f2.f;', false); -- Ensure memoize operates in binary mode SELECT explain_memoize(' SELECT * FROM flt f1 INNER JOIN flt f2 ON f1.f >= f2.f;', false); DROP TABLE flt; -- Exercise Memoize in binary mode with a large fixed width type and a -- varlena type. CREATE TABLE strtest (n name, t text); CREATE INDEX strtest_n_idx ON strtest (n); CREATE INDEX strtest_t_idx ON strtest (t); INSERT INTO strtest VALUES('one','one'),('two','two'),('three',repeat(fipshash('three'),100)); -- duplicate rows so we get some cache hits INSERT INTO strtest SELECT * FROM strtest; ANALYZE strtest; -- Ensure we get 3 hits and 3 misses SELECT explain_memoize(' SELECT * FROM strtest s1 INNER JOIN strtest s2 ON s1.n >= s2.n;', false); -- Ensure we get 3 hits and 3 misses SELECT explain_memoize(' SELECT * FROM strtest s1 INNER JOIN strtest s2 ON s1.t >= s2.t;', false); DROP TABLE strtest; -- Ensure memoize works with partitionwise join SET enable_partitionwise_join TO on; CREATE TABLE prt (a int) PARTITION BY RANGE(a); CREATE TABLE prt_p1 PARTITION OF prt FOR VALUES FROM (0) TO (10); CREATE TABLE prt_p2 PARTITION OF prt FOR VALUES FROM (10) TO (20); INSERT INTO prt VALUES (0), (0), (0), (0); INSERT INTO prt VALUES (10), (10), (10), (10); CREATE INDEX iprt_p1_a ON prt_p1 (a); CREATE INDEX iprt_p2_a ON prt_p2 (a); ANALYZE prt; SELECT explain_memoize(' SELECT * FROM prt t1 INNER JOIN prt t2 ON t1.a = t2.a;', false); -- Ensure memoize works with parameterized union-all Append path SET enable_partitionwise_join TO off; SELECT explain_memoize(' SELECT * FROM prt_p1 t1 INNER JOIN (SELECT * FROM prt_p1 UNION ALL SELECT * FROM prt_p2) t2 ON t1.a = t2.a;', false); DROP TABLE prt; RESET enable_partitionwise_join; -- Exercise Memoize code that flushes the cache when a parameter changes which -- is not part of the cache key. -- Ensure we get a Memoize plan EXPLAIN (COSTS OFF) SELECT unique1 FROM tenk1 t0 WHERE unique1 < 3 AND EXISTS ( SELECT 1 FROM tenk1 t1 INNER JOIN tenk1 t2 ON t1.unique1 = t2.hundred WHERE t0.ten = t1.twenty AND t0.two <> t2.four OFFSET 0); -- Ensure the above query returns the correct result SELECT unique1 FROM tenk1 t0 WHERE unique1 < 3 AND EXISTS ( SELECT 1 FROM tenk1 t1 INNER JOIN tenk1 t2 ON t1.unique1 = t2.hundred WHERE t0.ten = t1.twenty AND t0.two <> t2.four OFFSET 0); RESET enable_seqscan; RESET enable_mergejoin; RESET work_mem; RESET hash_mem_multiplier; RESET enable_bitmapscan; RESET enable_hashjoin; -- Test parallel plans with Memoize SET min_parallel_table_scan_size TO 0; SET parallel_setup_cost TO 0; SET parallel_tuple_cost TO 0; SET max_parallel_workers_per_gather TO 2; -- Ensure we get a parallel plan. EXPLAIN (COSTS OFF) SELECT COUNT(*),AVG(t2.unique1) FROM tenk1 t1, LATERAL (SELECT t2.unique1 FROM tenk1 t2 WHERE t1.twenty = t2.unique1) t2 WHERE t1.unique1 < 1000; -- And ensure the parallel plan gives us the correct results. SELECT COUNT(*),AVG(t2.unique1) FROM tenk1 t1, LATERAL (SELECT t2.unique1 FROM tenk1 t2 WHERE t1.twenty = t2.unique1) t2 WHERE t1.unique1 < 1000; RESET max_parallel_workers_per_gather; RESET parallel_tuple_cost; RESET parallel_setup_cost; RESET min_parallel_table_scan_size; libpg_query-17-6.1.0/test/sql/postgres_regress/merge.sql000066400000000000000000001403601477334012600232760ustar00rootroot00000000000000-- -- MERGE -- CREATE USER regress_merge_privs; CREATE USER regress_merge_no_privs; CREATE USER regress_merge_none; DROP TABLE IF EXISTS target; DROP TABLE IF EXISTS source; CREATE TABLE target (tid integer, balance integer) WITH (autovacuum_enabled=off); CREATE TABLE source (sid integer, delta integer) -- no index WITH (autovacuum_enabled=off); INSERT INTO target VALUES (1, 10); INSERT INTO target VALUES (2, 20); INSERT INTO target VALUES (3, 30); SELECT t.ctid is not null as matched, t.*, s.* FROM source s FULL OUTER JOIN target t ON s.sid = t.tid ORDER BY t.tid, s.sid; ALTER TABLE target OWNER TO regress_merge_privs; ALTER TABLE source OWNER TO regress_merge_privs; CREATE TABLE target2 (tid integer, balance integer) WITH (autovacuum_enabled=off); CREATE TABLE source2 (sid integer, delta integer) WITH (autovacuum_enabled=off); ALTER TABLE target2 OWNER TO regress_merge_no_privs; ALTER TABLE source2 OWNER TO regress_merge_no_privs; GRANT INSERT ON target TO regress_merge_no_privs; SET SESSION AUTHORIZATION regress_merge_privs; EXPLAIN (COSTS OFF) MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN DELETE; -- -- Errors -- MERGE INTO target t RANDOMWORD USING source AS s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET balance = 0; -- MATCHED/INSERT error MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN INSERT DEFAULT VALUES; -- NOT MATCHED BY SOURCE/INSERT error MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED BY SOURCE THEN INSERT DEFAULT VALUES; -- incorrectly specifying INTO target MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT INTO target DEFAULT VALUES; -- Multiple VALUES clause MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT VALUES (1,1), (2,2); -- SELECT query for INSERT MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT SELECT (1, 1); -- NOT MATCHED/UPDATE MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN UPDATE SET balance = 0; -- NOT MATCHED BY TARGET/UPDATE MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED BY TARGET THEN UPDATE SET balance = 0; -- UPDATE tablename MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN UPDATE target SET balance = 0; -- source and target names the same MERGE INTO target USING target ON tid = tid WHEN MATCHED THEN DO NOTHING; -- used in a CTE without RETURNING WITH foo AS ( MERGE INTO target USING source ON (true) WHEN MATCHED THEN DELETE ) SELECT * FROM foo; -- used in COPY without RETURNING COPY ( MERGE INTO target USING source ON (true) WHEN MATCHED THEN DELETE ) TO stdout; -- unsupported relation types -- materialized view CREATE MATERIALIZED VIEW mv AS SELECT * FROM target; MERGE INTO mv t USING source s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT DEFAULT VALUES; DROP MATERIALIZED VIEW mv; -- permissions SET SESSION AUTHORIZATION regress_merge_none; MERGE INTO target USING (SELECT 1) ON true WHEN MATCHED THEN DO NOTHING; SET SESSION AUTHORIZATION regress_merge_privs; MERGE INTO target USING source2 ON target.tid = source2.sid WHEN MATCHED THEN UPDATE SET balance = 0; GRANT INSERT ON target TO regress_merge_no_privs; SET SESSION AUTHORIZATION regress_merge_no_privs; MERGE INTO target USING source2 ON target.tid = source2.sid WHEN MATCHED THEN UPDATE SET balance = 0; GRANT UPDATE ON target2 TO regress_merge_privs; SET SESSION AUTHORIZATION regress_merge_privs; MERGE INTO target2 USING source ON target2.tid = source.sid WHEN MATCHED THEN DELETE; MERGE INTO target2 USING source ON target2.tid = source.sid WHEN NOT MATCHED THEN INSERT DEFAULT VALUES; -- check if the target can be accessed from source relation subquery; we should -- not be able to do so MERGE INTO target t USING (SELECT * FROM source WHERE t.tid > sid) s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT DEFAULT VALUES; -- -- initial tests -- -- zero rows in source has no effect MERGE INTO target USING source ON target.tid = source.sid WHEN MATCHED THEN UPDATE SET balance = 0; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET balance = 0; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN DELETE; BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT DEFAULT VALUES; ROLLBACK; -- insert some non-matching source rows to work from INSERT INTO source VALUES (4, 40); SELECT * FROM source ORDER BY sid; SELECT * FROM target ORDER BY tid; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN DO NOTHING; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET balance = 0; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN DELETE; BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT DEFAULT VALUES; SELECT * FROM target ORDER BY tid; ROLLBACK; -- DELETE/INSERT not matched by source/target BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED BY SOURCE THEN DELETE WHEN NOT MATCHED BY TARGET THEN INSERT VALUES (s.sid, s.delta) RETURNING merge_action(), t.*; SELECT * FROM target ORDER BY tid; ROLLBACK; -- index plans INSERT INTO target SELECT generate_series(1000,2500), 0; ALTER TABLE target ADD PRIMARY KEY (tid); ANALYZE target; EXPLAIN (COSTS OFF) MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET balance = 0; EXPLAIN (COSTS OFF) MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN DELETE; EXPLAIN (COSTS OFF) MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT VALUES (4, NULL); DELETE FROM target WHERE tid > 100; ANALYZE target; -- insert some matching source rows to work from INSERT INTO source VALUES (2, 5); INSERT INTO source VALUES (3, 20); SELECT * FROM source ORDER BY sid; SELECT * FROM target ORDER BY tid; -- equivalent of an UPDATE join BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET balance = 0; SELECT * FROM target ORDER BY tid; ROLLBACK; -- equivalent of a DELETE join BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN DELETE; SELECT * FROM target ORDER BY tid; ROLLBACK; BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN DO NOTHING; SELECT * FROM target ORDER BY tid; ROLLBACK; BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT VALUES (4, NULL); SELECT * FROM target ORDER BY tid; ROLLBACK; -- duplicate source row causes multiple target row update ERROR INSERT INTO source VALUES (2, 5); SELECT * FROM source ORDER BY sid; SELECT * FROM target ORDER BY tid; BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET balance = 0; ROLLBACK; BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN DELETE; ROLLBACK; -- remove duplicate MATCHED data from source data DELETE FROM source WHERE sid = 2; INSERT INTO source VALUES (2, 5); SELECT * FROM source ORDER BY sid; SELECT * FROM target ORDER BY tid; -- duplicate source row on INSERT should fail because of target_pkey INSERT INTO source VALUES (4, 40); BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT VALUES (4, NULL); SELECT * FROM target ORDER BY tid; ROLLBACK; -- remove duplicate NOT MATCHED data from source data DELETE FROM source WHERE sid = 4; INSERT INTO source VALUES (4, 40); SELECT * FROM source ORDER BY sid; SELECT * FROM target ORDER BY tid; -- remove constraints alter table target drop CONSTRAINT target_pkey; alter table target alter column tid drop not null; -- multiple actions BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT VALUES (4, 4) WHEN MATCHED THEN UPDATE SET balance = 0; SELECT * FROM target ORDER BY tid; ROLLBACK; -- should be equivalent BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET balance = 0 WHEN NOT MATCHED THEN INSERT VALUES (4, 4); SELECT * FROM target ORDER BY tid; ROLLBACK; -- column references -- do a simple equivalent of an UPDATE join BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET balance = t.balance + s.delta; SELECT * FROM target ORDER BY tid; ROLLBACK; -- do a simple equivalent of an INSERT SELECT BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT VALUES (s.sid, s.delta); SELECT * FROM target ORDER BY tid; ROLLBACK; -- and again with duplicate source rows INSERT INTO source VALUES (5, 50); INSERT INTO source VALUES (5, 50); -- do a simple equivalent of an INSERT SELECT BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT VALUES (s.sid, s.delta); SELECT * FROM target ORDER BY tid; ROLLBACK; -- removing duplicate source rows DELETE FROM source WHERE sid = 5; -- and again with explicitly identified column list BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT (tid, balance) VALUES (s.sid, s.delta); SELECT * FROM target ORDER BY tid; ROLLBACK; -- and again with a subtle error: referring to non-existent target row for NOT MATCHED MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT (tid, balance) VALUES (t.tid, s.delta); -- and again with a constant ON clause BEGIN; MERGE INTO target t USING source AS s ON (SELECT true) WHEN NOT MATCHED THEN INSERT (tid, balance) VALUES (t.tid, s.delta); SELECT * FROM target ORDER BY tid; ROLLBACK; -- now the classic UPSERT BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET balance = t.balance + s.delta WHEN NOT MATCHED THEN INSERT VALUES (s.sid, s.delta); SELECT * FROM target ORDER BY tid; ROLLBACK; -- unreachable WHEN clause should ERROR BEGIN; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED THEN /* Terminal WHEN clause for MATCHED */ DELETE WHEN MATCHED THEN UPDATE SET balance = t.balance - s.delta; ROLLBACK; -- conditional WHEN clause CREATE TABLE wq_target (tid integer not null, balance integer DEFAULT -1) WITH (autovacuum_enabled=off); CREATE TABLE wq_source (balance integer, sid integer) WITH (autovacuum_enabled=off); INSERT INTO wq_source (sid, balance) VALUES (1, 100); BEGIN; -- try a simple INSERT with default values first MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT (tid) VALUES (s.sid); SELECT * FROM wq_target; ROLLBACK; -- this time with a FALSE condition MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN NOT MATCHED AND FALSE THEN INSERT (tid) VALUES (s.sid); SELECT * FROM wq_target; -- this time with an actual condition which returns false MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN NOT MATCHED AND s.balance <> 100 THEN INSERT (tid) VALUES (s.sid); SELECT * FROM wq_target; BEGIN; -- and now with a condition which returns true MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN NOT MATCHED AND s.balance = 100 THEN INSERT (tid) VALUES (s.sid); SELECT * FROM wq_target; ROLLBACK; -- conditions in the NOT MATCHED clause can only refer to source columns BEGIN; MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN NOT MATCHED AND t.balance = 100 THEN INSERT (tid) VALUES (s.sid); SELECT * FROM wq_target; ROLLBACK; MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN NOT MATCHED AND s.balance = 100 THEN INSERT (tid) VALUES (s.sid); SELECT * FROM wq_target; -- conditions in NOT MATCHED BY SOURCE clause can only refer to target columns MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN NOT MATCHED BY SOURCE AND s.balance = 100 THEN DELETE; MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN NOT MATCHED BY SOURCE AND t.balance = 100 THEN DELETE; -- conditions in MATCHED clause can refer to both source and target SELECT * FROM wq_source; MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN MATCHED AND s.balance = 100 THEN UPDATE SET balance = t.balance + s.balance; SELECT * FROM wq_target; MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN MATCHED AND t.balance = 100 THEN UPDATE SET balance = t.balance + s.balance; SELECT * FROM wq_target; -- check if AND works MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN MATCHED AND t.balance = 99 AND s.balance > 100 THEN UPDATE SET balance = t.balance + s.balance; SELECT * FROM wq_target; MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN MATCHED AND t.balance = 99 AND s.balance = 100 THEN UPDATE SET balance = t.balance + s.balance; SELECT * FROM wq_target; -- check if OR works MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN MATCHED AND t.balance = 99 OR s.balance > 100 THEN UPDATE SET balance = t.balance + s.balance; SELECT * FROM wq_target; MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN MATCHED AND t.balance = 199 OR s.balance > 100 THEN UPDATE SET balance = t.balance + s.balance; SELECT * FROM wq_target; -- check source-side whole-row references BEGIN; MERGE INTO wq_target t USING wq_source s ON (t.tid = s.sid) WHEN matched and t = s or t.tid = s.sid THEN UPDATE SET balance = t.balance + s.balance; SELECT * FROM wq_target; ROLLBACK; -- check if subqueries work in the conditions? MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN MATCHED AND t.balance > (SELECT max(balance) FROM target) THEN UPDATE SET balance = t.balance + s.balance; -- check if we can access system columns in the conditions MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN MATCHED AND t.xmin = t.xmax THEN UPDATE SET balance = t.balance + s.balance; MERGE INTO wq_target t USING wq_source s ON t.tid = s.sid WHEN MATCHED AND t.tableoid >= 0 THEN UPDATE SET balance = t.balance + s.balance; SELECT * FROM wq_target; DROP TABLE wq_target, wq_source; -- test triggers create or replace function merge_trigfunc () returns trigger language plpgsql as $$ DECLARE line text; BEGIN SELECT INTO line format('%s %s %s trigger%s', TG_WHEN, TG_OP, TG_LEVEL, CASE WHEN TG_OP = 'INSERT' AND TG_LEVEL = 'ROW' THEN format(' row: %s', NEW) WHEN TG_OP = 'UPDATE' AND TG_LEVEL = 'ROW' THEN format(' row: %s -> %s', OLD, NEW) WHEN TG_OP = 'DELETE' AND TG_LEVEL = 'ROW' THEN format(' row: %s', OLD) END); RAISE NOTICE '%', line; IF (TG_WHEN = 'BEFORE' AND TG_LEVEL = 'ROW') THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; ELSE RETURN NULL; END IF; END; $$; CREATE TRIGGER merge_bsi BEFORE INSERT ON target FOR EACH STATEMENT EXECUTE PROCEDURE merge_trigfunc (); CREATE TRIGGER merge_bsu BEFORE UPDATE ON target FOR EACH STATEMENT EXECUTE PROCEDURE merge_trigfunc (); CREATE TRIGGER merge_bsd BEFORE DELETE ON target FOR EACH STATEMENT EXECUTE PROCEDURE merge_trigfunc (); CREATE TRIGGER merge_asi AFTER INSERT ON target FOR EACH STATEMENT EXECUTE PROCEDURE merge_trigfunc (); CREATE TRIGGER merge_asu AFTER UPDATE ON target FOR EACH STATEMENT EXECUTE PROCEDURE merge_trigfunc (); CREATE TRIGGER merge_asd AFTER DELETE ON target FOR EACH STATEMENT EXECUTE PROCEDURE merge_trigfunc (); CREATE TRIGGER merge_bri BEFORE INSERT ON target FOR EACH ROW EXECUTE PROCEDURE merge_trigfunc (); CREATE TRIGGER merge_bru BEFORE UPDATE ON target FOR EACH ROW EXECUTE PROCEDURE merge_trigfunc (); CREATE TRIGGER merge_brd BEFORE DELETE ON target FOR EACH ROW EXECUTE PROCEDURE merge_trigfunc (); CREATE TRIGGER merge_ari AFTER INSERT ON target FOR EACH ROW EXECUTE PROCEDURE merge_trigfunc (); CREATE TRIGGER merge_aru AFTER UPDATE ON target FOR EACH ROW EXECUTE PROCEDURE merge_trigfunc (); CREATE TRIGGER merge_ard AFTER DELETE ON target FOR EACH ROW EXECUTE PROCEDURE merge_trigfunc (); -- now the classic UPSERT, with a DELETE BEGIN; UPDATE target SET balance = 0 WHERE tid = 3; --EXPLAIN (ANALYZE ON, COSTS OFF, SUMMARY OFF, TIMING OFF) MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED AND t.balance > s.delta THEN UPDATE SET balance = t.balance - s.delta WHEN MATCHED THEN DELETE WHEN NOT MATCHED THEN INSERT VALUES (s.sid, s.delta); SELECT * FROM target ORDER BY tid; ROLLBACK; -- UPSERT with UPDATE/DELETE when not matched by source BEGIN; DELETE FROM SOURCE WHERE sid = 2; MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED AND t.balance > s.delta THEN UPDATE SET balance = t.balance - s.delta WHEN MATCHED THEN UPDATE SET balance = 0 WHEN NOT MATCHED THEN INSERT VALUES (s.sid, s.delta) WHEN NOT MATCHED BY SOURCE AND tid = 1 THEN UPDATE SET balance = 0 WHEN NOT MATCHED BY SOURCE THEN DELETE RETURNING merge_action(), t.*; SELECT * FROM target ORDER BY tid; ROLLBACK; -- Test behavior of triggers that turn UPDATE/DELETE into no-ops create or replace function skip_merge_op() returns trigger language plpgsql as $$ BEGIN RETURN NULL; END; $$; SELECT * FROM target full outer join source on (sid = tid); create trigger merge_skip BEFORE INSERT OR UPDATE or DELETE ON target FOR EACH ROW EXECUTE FUNCTION skip_merge_op(); DO $$ DECLARE result integer; BEGIN MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED AND s.sid = 3 THEN UPDATE SET balance = t.balance + s.delta WHEN MATCHED THEN DELETE WHEN NOT MATCHED THEN INSERT VALUES (sid, delta); IF FOUND THEN RAISE NOTICE 'Found'; ELSE RAISE NOTICE 'Not found'; END IF; GET DIAGNOSTICS result := ROW_COUNT; RAISE NOTICE 'ROW_COUNT = %', result; END; $$; SELECT * FROM target FULL OUTER JOIN source ON (sid = tid); DROP TRIGGER merge_skip ON target; DROP FUNCTION skip_merge_op(); -- test from PL/pgSQL -- make sure MERGE INTO isn't interpreted to mean returning variables like SELECT INTO BEGIN; DO LANGUAGE plpgsql $$ BEGIN MERGE INTO target t USING source AS s ON t.tid = s.sid WHEN MATCHED AND t.balance > s.delta THEN UPDATE SET balance = t.balance - s.delta; END; $$; ROLLBACK; --source constants BEGIN; MERGE INTO target t USING (SELECT 9 AS sid, 57 AS delta) AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT (tid, balance) VALUES (s.sid, s.delta); SELECT * FROM target ORDER BY tid; ROLLBACK; --source query BEGIN; MERGE INTO target t USING (SELECT sid, delta FROM source WHERE delta > 0) AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT (tid, balance) VALUES (s.sid, s.delta); SELECT * FROM target ORDER BY tid; ROLLBACK; BEGIN; MERGE INTO target t USING (SELECT sid, delta as newname FROM source WHERE delta > 0) AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT (tid, balance) VALUES (s.sid, s.newname); SELECT * FROM target ORDER BY tid; ROLLBACK; --self-merge BEGIN; MERGE INTO target t1 USING target t2 ON t1.tid = t2.tid WHEN MATCHED THEN UPDATE SET balance = t1.balance + t2.balance WHEN NOT MATCHED THEN INSERT VALUES (t2.tid, t2.balance); SELECT * FROM target ORDER BY tid; ROLLBACK; BEGIN; MERGE INTO target t USING (SELECT tid as sid, balance as delta FROM target WHERE balance > 0) AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT (tid, balance) VALUES (s.sid, s.delta); SELECT * FROM target ORDER BY tid; ROLLBACK; BEGIN; MERGE INTO target t USING (SELECT sid, max(delta) AS delta FROM source GROUP BY sid HAVING count(*) = 1 ORDER BY sid ASC) AS s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT (tid, balance) VALUES (s.sid, s.delta); SELECT * FROM target ORDER BY tid; ROLLBACK; -- plpgsql parameters and results BEGIN; CREATE FUNCTION merge_func (p_id integer, p_bal integer) RETURNS INTEGER LANGUAGE plpgsql AS $$ DECLARE result integer; BEGIN MERGE INTO target t USING (SELECT p_id AS sid) AS s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET balance = t.balance - p_bal; IF FOUND THEN GET DIAGNOSTICS result := ROW_COUNT; END IF; RETURN result; END; $$; SELECT merge_func(3, 4); SELECT * FROM target ORDER BY tid; ROLLBACK; -- PREPARE BEGIN; prepare foom as merge into target t using (select 1 as sid) s on (t.tid = s.sid) when matched then update set balance = 1; execute foom; SELECT * FROM target ORDER BY tid; ROLLBACK; BEGIN; PREPARE foom2 (integer, integer) AS MERGE INTO target t USING (SELECT 1) s ON t.tid = $1 WHEN MATCHED THEN UPDATE SET balance = $2; --EXPLAIN (ANALYZE ON, COSTS OFF, SUMMARY OFF, TIMING OFF) execute foom2 (1, 1); SELECT * FROM target ORDER BY tid; ROLLBACK; -- subqueries in source relation CREATE TABLE sq_target (tid integer NOT NULL, balance integer) WITH (autovacuum_enabled=off); CREATE TABLE sq_source (delta integer, sid integer, balance integer DEFAULT 0) WITH (autovacuum_enabled=off); INSERT INTO sq_target(tid, balance) VALUES (1,100), (2,200), (3,300); INSERT INTO sq_source(sid, delta) VALUES (1,10), (2,20), (4,40); BEGIN; MERGE INTO sq_target t USING (SELECT * FROM sq_source) s ON tid = sid WHEN MATCHED AND t.balance > delta THEN UPDATE SET balance = t.balance + delta; SELECT * FROM sq_target; ROLLBACK; -- try a view CREATE VIEW v AS SELECT * FROM sq_source WHERE sid < 2; BEGIN; MERGE INTO sq_target USING v ON tid = sid WHEN MATCHED THEN UPDATE SET balance = v.balance + delta; SELECT * FROM sq_target; ROLLBACK; -- ambiguous reference to a column BEGIN; MERGE INTO sq_target USING v ON tid = sid WHEN MATCHED AND tid >= 2 THEN UPDATE SET balance = balance + delta WHEN NOT MATCHED THEN INSERT (balance, tid) VALUES (balance + delta, sid) WHEN MATCHED AND tid < 2 THEN DELETE; ROLLBACK; BEGIN; INSERT INTO sq_source (sid, balance, delta) VALUES (-1, -1, -10); MERGE INTO sq_target t USING v ON tid = sid WHEN MATCHED AND tid >= 2 THEN UPDATE SET balance = t.balance + delta WHEN NOT MATCHED THEN INSERT (balance, tid) VALUES (balance + delta, sid) WHEN MATCHED AND tid < 2 THEN DELETE; SELECT * FROM sq_target; ROLLBACK; -- CTEs BEGIN; INSERT INTO sq_source (sid, balance, delta) VALUES (-1, -1, -10); WITH targq AS ( SELECT * FROM v ) MERGE INTO sq_target t USING v ON tid = sid WHEN MATCHED AND tid >= 2 THEN UPDATE SET balance = t.balance + delta WHEN NOT MATCHED THEN INSERT (balance, tid) VALUES (balance + delta, sid) WHEN MATCHED AND tid < 2 THEN DELETE; ROLLBACK; -- RETURNING SELECT * FROM sq_source ORDER BY sid; SELECT * FROM sq_target ORDER BY tid; BEGIN; CREATE TABLE merge_actions(action text, abbrev text); INSERT INTO merge_actions VALUES ('INSERT', 'ins'), ('UPDATE', 'upd'), ('DELETE', 'del'); MERGE INTO sq_target t USING sq_source s ON tid = sid WHEN MATCHED AND tid >= 2 THEN UPDATE SET balance = t.balance + delta WHEN NOT MATCHED THEN INSERT (balance, tid) VALUES (balance + delta, sid) WHEN MATCHED AND tid < 2 THEN DELETE RETURNING (SELECT abbrev FROM merge_actions WHERE action = merge_action()) AS action, t.*, CASE merge_action() WHEN 'INSERT' THEN 'Inserted '||t WHEN 'UPDATE' THEN 'Added '||delta||' to balance' WHEN 'DELETE' THEN 'Removed '||t END AS description; ROLLBACK; -- error when using merge_action() outside MERGE SELECT merge_action() FROM sq_target; UPDATE sq_target SET balance = balance + 1 RETURNING merge_action(); -- RETURNING in CTEs CREATE TABLE sq_target_merge_log (tid integer NOT NULL, last_change text); INSERT INTO sq_target_merge_log VALUES (1, 'Original value'); BEGIN; WITH m AS ( MERGE INTO sq_target t USING sq_source s ON tid = sid WHEN MATCHED AND tid >= 2 THEN UPDATE SET balance = t.balance + delta WHEN NOT MATCHED THEN INSERT (balance, tid) VALUES (balance + delta, sid) WHEN MATCHED AND tid < 2 THEN DELETE RETURNING merge_action() AS action, t.*, CASE merge_action() WHEN 'INSERT' THEN 'Inserted '||t WHEN 'UPDATE' THEN 'Added '||delta||' to balance' WHEN 'DELETE' THEN 'Removed '||t END AS description ), m2 AS ( MERGE INTO sq_target_merge_log l USING m ON l.tid = m.tid WHEN MATCHED THEN UPDATE SET last_change = description WHEN NOT MATCHED THEN INSERT VALUES (m.tid, description) RETURNING action, merge_action() AS log_action, l.* ) SELECT * FROM m2; SELECT * FROM sq_target_merge_log ORDER BY tid; ROLLBACK; -- COPY (MERGE ... RETURNING) TO ... BEGIN; COPY ( MERGE INTO sq_target t USING sq_source s ON tid = sid WHEN MATCHED AND tid >= 2 THEN UPDATE SET balance = t.balance + delta WHEN NOT MATCHED THEN INSERT (balance, tid) VALUES (balance + delta, sid) WHEN MATCHED AND tid < 2 THEN DELETE RETURNING merge_action(), t.* ) TO stdout; ROLLBACK; -- SQL function with MERGE ... RETURNING BEGIN; CREATE FUNCTION merge_into_sq_target(sid int, balance int, delta int, OUT action text, OUT tid int, OUT new_balance int) LANGUAGE sql AS $$ MERGE INTO sq_target t USING (VALUES ($1, $2, $3)) AS v(sid, balance, delta) ON tid = v.sid WHEN MATCHED AND tid >= 2 THEN UPDATE SET balance = t.balance + v.delta WHEN NOT MATCHED THEN INSERT (balance, tid) VALUES (v.balance + v.delta, v.sid) WHEN MATCHED AND tid < 2 THEN DELETE RETURNING merge_action(), t.*; $$; SELECT m.* FROM (VALUES (1, 0, 0), (3, 0, 20), (4, 100, 10)) AS v(sid, balance, delta), LATERAL (SELECT action, tid, new_balance FROM merge_into_sq_target(sid, balance, delta)) m; ROLLBACK; -- SQL SRF with MERGE ... RETURNING BEGIN; CREATE FUNCTION merge_sq_source_into_sq_target() RETURNS TABLE (action text, tid int, balance int) LANGUAGE sql AS $$ MERGE INTO sq_target t USING sq_source s ON tid = sid WHEN MATCHED AND tid >= 2 THEN UPDATE SET balance = t.balance + delta WHEN NOT MATCHED THEN INSERT (balance, tid) VALUES (balance + delta, sid) WHEN MATCHED AND tid < 2 THEN DELETE RETURNING merge_action(), t.*; $$; SELECT * FROM merge_sq_source_into_sq_target(); ROLLBACK; -- PL/pgSQL function with MERGE ... RETURNING ... INTO BEGIN; CREATE FUNCTION merge_into_sq_target(sid int, balance int, delta int, OUT r_action text, OUT r_tid int, OUT r_balance int) LANGUAGE plpgsql AS $$ BEGIN MERGE INTO sq_target t USING (VALUES ($1, $2, $3)) AS v(sid, balance, delta) ON tid = v.sid WHEN MATCHED AND tid >= 2 THEN UPDATE SET balance = t.balance + v.delta WHEN NOT MATCHED THEN INSERT (balance, tid) VALUES (v.balance + v.delta, v.sid) WHEN MATCHED AND tid < 2 THEN DELETE RETURNING merge_action(), t.* INTO r_action, r_tid, r_balance; END; $$; SELECT m.* FROM (VALUES (1, 0, 0), (3, 0, 20), (4, 100, 10)) AS v(sid, balance, delta), LATERAL (SELECT r_action, r_tid, r_balance FROM merge_into_sq_target(sid, balance, delta)) m; ROLLBACK; -- EXPLAIN CREATE TABLE ex_mtarget (a int, b int) WITH (autovacuum_enabled=off); CREATE TABLE ex_msource (a int, b int) WITH (autovacuum_enabled=off); INSERT INTO ex_mtarget SELECT i, i*10 FROM generate_series(1,100,2) i; INSERT INTO ex_msource SELECT i, i*10 FROM generate_series(1,100,1) i; CREATE FUNCTION explain_merge(query text) RETURNS SETOF text LANGUAGE plpgsql AS $$ DECLARE ln text; BEGIN FOR ln IN EXECUTE 'explain (analyze, timing off, summary off, costs off) ' || query LOOP ln := regexp_replace(ln, '(Memory( Usage)?|Buckets|Batches): \S*', '\1: xxx', 'g'); RETURN NEXT ln; END LOOP; END; $$; -- only updates SELECT explain_merge(' MERGE INTO ex_mtarget t USING ex_msource s ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = t.b + 1'); -- only updates to selected tuples SELECT explain_merge(' MERGE INTO ex_mtarget t USING ex_msource s ON t.a = s.a WHEN MATCHED AND t.a < 10 THEN UPDATE SET b = t.b + 1'); -- updates + deletes SELECT explain_merge(' MERGE INTO ex_mtarget t USING ex_msource s ON t.a = s.a WHEN MATCHED AND t.a < 10 THEN UPDATE SET b = t.b + 1 WHEN MATCHED AND t.a >= 10 AND t.a <= 20 THEN DELETE'); -- only inserts SELECT explain_merge(' MERGE INTO ex_mtarget t USING ex_msource s ON t.a = s.a WHEN NOT MATCHED AND s.a < 10 THEN INSERT VALUES (a, b)'); -- all three SELECT explain_merge(' MERGE INTO ex_mtarget t USING ex_msource s ON t.a = s.a WHEN MATCHED AND t.a < 10 THEN UPDATE SET b = t.b + 1 WHEN MATCHED AND t.a >= 30 AND t.a <= 40 THEN DELETE WHEN NOT MATCHED AND s.a < 20 THEN INSERT VALUES (a, b)'); -- not matched by source SELECT explain_merge(' MERGE INTO ex_mtarget t USING ex_msource s ON t.a = s.a WHEN NOT MATCHED BY SOURCE and t.a < 10 THEN DELETE'); -- not matched by source and target SELECT explain_merge(' MERGE INTO ex_mtarget t USING ex_msource s ON t.a = s.a WHEN NOT MATCHED BY SOURCE AND t.a < 10 THEN DELETE WHEN NOT MATCHED BY TARGET AND s.a < 20 THEN INSERT VALUES (a, b)'); -- nothing SELECT explain_merge(' MERGE INTO ex_mtarget t USING ex_msource s ON t.a = s.a AND t.a < -1000 WHEN MATCHED AND t.a < 10 THEN DO NOTHING'); DROP TABLE ex_msource, ex_mtarget; DROP FUNCTION explain_merge(text); -- EXPLAIN SubPlans and InitPlans CREATE TABLE src (a int, b int, c int, d int); CREATE TABLE tgt (a int, b int, c int, d int); CREATE TABLE ref (ab int, cd int); EXPLAIN (verbose, costs off) MERGE INTO tgt t USING (SELECT *, (SELECT count(*) FROM ref r WHERE r.ab = s.a + s.b AND r.cd = s.c - s.d) cnt FROM src s) s ON t.a = s.a AND t.b < s.cnt WHEN MATCHED AND t.c > s.cnt THEN UPDATE SET (b, c) = (SELECT s.b, s.cnt); DROP TABLE src, tgt, ref; -- Subqueries BEGIN; MERGE INTO sq_target t USING v ON tid = sid WHEN MATCHED THEN UPDATE SET balance = (SELECT count(*) FROM sq_target); SELECT * FROM sq_target WHERE tid = 1; ROLLBACK; BEGIN; MERGE INTO sq_target t USING v ON tid = sid WHEN MATCHED AND (SELECT count(*) > 0 FROM sq_target) THEN UPDATE SET balance = 42; SELECT * FROM sq_target WHERE tid = 1; ROLLBACK; BEGIN; MERGE INTO sq_target t USING v ON tid = sid AND (SELECT count(*) > 0 FROM sq_target) WHEN MATCHED THEN UPDATE SET balance = 42; SELECT * FROM sq_target WHERE tid = 1; ROLLBACK; DROP TABLE sq_target, sq_target_merge_log, sq_source CASCADE; CREATE TABLE pa_target (tid integer, balance float, val text) PARTITION BY LIST (tid); CREATE TABLE part1 PARTITION OF pa_target FOR VALUES IN (1,4) WITH (autovacuum_enabled=off); CREATE TABLE part2 PARTITION OF pa_target FOR VALUES IN (2,5,6) WITH (autovacuum_enabled=off); CREATE TABLE part3 PARTITION OF pa_target FOR VALUES IN (3,8,9) WITH (autovacuum_enabled=off); CREATE TABLE part4 PARTITION OF pa_target DEFAULT WITH (autovacuum_enabled=off); CREATE TABLE pa_source (sid integer, delta float); -- insert many rows to the source table INSERT INTO pa_source SELECT id, id * 10 FROM generate_series(1,14) AS id; -- insert a few rows in the target table (odd numbered tid) INSERT INTO pa_target SELECT id, id * 100, 'initial' FROM generate_series(1,15,2) AS id; -- try simple MERGE BEGIN; MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET balance = balance + delta, val = val || ' updated by merge' WHEN NOT MATCHED THEN INSERT VALUES (sid, delta, 'inserted by merge') WHEN NOT MATCHED BY SOURCE THEN UPDATE SET val = val || ' not matched by source'; SELECT * FROM pa_target ORDER BY tid, val; ROLLBACK; -- same with a constant qual BEGIN; MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid AND tid = 1 WHEN MATCHED THEN UPDATE SET balance = balance + delta, val = val || ' updated by merge' WHEN NOT MATCHED THEN INSERT VALUES (sid, delta, 'inserted by merge') WHEN NOT MATCHED BY SOURCE THEN UPDATE SET val = val || ' not matched by source'; SELECT * FROM pa_target ORDER BY tid, val; ROLLBACK; -- try updating the partition key column BEGIN; CREATE FUNCTION merge_func() RETURNS integer LANGUAGE plpgsql AS $$ DECLARE result integer; BEGIN MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET tid = tid + 1, balance = balance + delta, val = val || ' updated by merge' WHEN NOT MATCHED THEN INSERT VALUES (sid, delta, 'inserted by merge') WHEN NOT MATCHED BY SOURCE THEN UPDATE SET tid = 1, val = val || ' not matched by source'; IF FOUND THEN GET DIAGNOSTICS result := ROW_COUNT; END IF; RETURN result; END; $$; SELECT merge_func(); SELECT * FROM pa_target ORDER BY tid, val; ROLLBACK; -- update partition key to partition not initially scanned BEGIN; MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid AND t.tid = 1 WHEN MATCHED THEN UPDATE SET tid = tid + 1, balance = balance + delta, val = val || ' updated by merge' RETURNING merge_action(), t.*; SELECT * FROM pa_target ORDER BY tid; ROLLBACK; -- bug #18871: ExecInitPartitionInfo()'s handling of DO NOTHING actions BEGIN; TRUNCATE pa_target; MERGE INTO pa_target t USING (VALUES (10, 100)) AS s(sid, delta) ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT VALUES (1, 10, 'inserted by merge') WHEN MATCHED THEN DO NOTHING; SELECT * FROM pa_target ORDER BY tid, val; ROLLBACK; DROP TABLE pa_target CASCADE; -- The target table is partitioned in the same way, but this time by attaching -- partitions which have columns in different order, dropped columns etc. CREATE TABLE pa_target (tid integer, balance float, val text) PARTITION BY LIST (tid); CREATE TABLE part1 (tid integer, balance float, val text) WITH (autovacuum_enabled=off); CREATE TABLE part2 (balance float, tid integer, val text) WITH (autovacuum_enabled=off); CREATE TABLE part3 (tid integer, balance float, val text) WITH (autovacuum_enabled=off); CREATE TABLE part4 (extraid text, tid integer, balance float, val text) WITH (autovacuum_enabled=off); ALTER TABLE part4 DROP COLUMN extraid; ALTER TABLE pa_target ATTACH PARTITION part1 FOR VALUES IN (1,4); ALTER TABLE pa_target ATTACH PARTITION part2 FOR VALUES IN (2,5,6); ALTER TABLE pa_target ATTACH PARTITION part3 FOR VALUES IN (3,8,9); ALTER TABLE pa_target ATTACH PARTITION part4 DEFAULT; -- insert a few rows in the target table (odd numbered tid) INSERT INTO pa_target SELECT id, id * 100, 'initial' FROM generate_series(1,15,2) AS id; -- try simple MERGE BEGIN; DO $$ DECLARE result integer; BEGIN MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET balance = balance + delta, val = val || ' updated by merge' WHEN NOT MATCHED THEN INSERT VALUES (sid, delta, 'inserted by merge') WHEN NOT MATCHED BY SOURCE THEN UPDATE SET val = val || ' not matched by source'; GET DIAGNOSTICS result := ROW_COUNT; RAISE NOTICE 'ROW_COUNT = %', result; END; $$; SELECT * FROM pa_target ORDER BY tid, val; ROLLBACK; -- same with a constant qual BEGIN; MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid AND tid IN (1, 5) WHEN MATCHED AND tid % 5 = 0 THEN DELETE WHEN MATCHED THEN UPDATE SET balance = balance + delta, val = val || ' updated by merge' WHEN NOT MATCHED THEN INSERT VALUES (sid, delta, 'inserted by merge') WHEN NOT MATCHED BY SOURCE THEN UPDATE SET val = val || ' not matched by source'; SELECT * FROM pa_target ORDER BY tid, val; ROLLBACK; -- try updating the partition key column BEGIN; DO $$ DECLARE result integer; BEGIN MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET tid = tid + 1, balance = balance + delta, val = val || ' updated by merge' WHEN NOT MATCHED THEN INSERT VALUES (sid, delta, 'inserted by merge') WHEN NOT MATCHED BY SOURCE THEN UPDATE SET tid = 1, val = val || ' not matched by source'; GET DIAGNOSTICS result := ROW_COUNT; RAISE NOTICE 'ROW_COUNT = %', result; END; $$; SELECT * FROM pa_target ORDER BY tid, val; ROLLBACK; -- as above, but blocked by BEFORE DELETE ROW trigger BEGIN; CREATE FUNCTION trig_fn() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN RETURN NULL; END; $$; CREATE TRIGGER del_trig BEFORE DELETE ON pa_target FOR EACH ROW EXECUTE PROCEDURE trig_fn(); DO $$ DECLARE result integer; BEGIN MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET tid = tid + 1, balance = balance + delta, val = val || ' updated by merge' WHEN NOT MATCHED THEN INSERT VALUES (sid, delta, 'inserted by merge') WHEN NOT MATCHED BY SOURCE THEN UPDATE SET val = val || ' not matched by source'; GET DIAGNOSTICS result := ROW_COUNT; RAISE NOTICE 'ROW_COUNT = %', result; END; $$; SELECT * FROM pa_target ORDER BY tid, val; ROLLBACK; -- as above, but blocked by BEFORE INSERT ROW trigger BEGIN; CREATE FUNCTION trig_fn() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN RETURN NULL; END; $$; CREATE TRIGGER ins_trig BEFORE INSERT ON pa_target FOR EACH ROW EXECUTE PROCEDURE trig_fn(); DO $$ DECLARE result integer; BEGIN MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET tid = tid + 1, balance = balance + delta, val = val || ' updated by merge' WHEN NOT MATCHED THEN INSERT VALUES (sid, delta, 'inserted by merge') WHEN NOT MATCHED BY SOURCE THEN UPDATE SET val = val || ' not matched by source'; GET DIAGNOSTICS result := ROW_COUNT; RAISE NOTICE 'ROW_COUNT = %', result; END; $$; SELECT * FROM pa_target ORDER BY tid, val; ROLLBACK; -- test RLS enforcement BEGIN; ALTER TABLE pa_target ENABLE ROW LEVEL SECURITY; ALTER TABLE pa_target FORCE ROW LEVEL SECURITY; CREATE POLICY pa_target_pol ON pa_target USING (tid != 0); MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid AND t.tid IN (1,2,3,4) WHEN MATCHED THEN UPDATE SET tid = tid - 1; ROLLBACK; DROP TABLE pa_source; DROP TABLE pa_target CASCADE; -- Sub-partitioning CREATE TABLE pa_target (logts timestamp, tid integer, balance float, val text) PARTITION BY RANGE (logts); CREATE TABLE part_m01 PARTITION OF pa_target FOR VALUES FROM ('2017-01-01') TO ('2017-02-01') PARTITION BY LIST (tid); CREATE TABLE part_m01_odd PARTITION OF part_m01 FOR VALUES IN (1,3,5,7,9) WITH (autovacuum_enabled=off); CREATE TABLE part_m01_even PARTITION OF part_m01 FOR VALUES IN (2,4,6,8) WITH (autovacuum_enabled=off); CREATE TABLE part_m02 PARTITION OF pa_target FOR VALUES FROM ('2017-02-01') TO ('2017-03-01') PARTITION BY LIST (tid); CREATE TABLE part_m02_odd PARTITION OF part_m02 FOR VALUES IN (1,3,5,7,9) WITH (autovacuum_enabled=off); CREATE TABLE part_m02_even PARTITION OF part_m02 FOR VALUES IN (2,4,6,8) WITH (autovacuum_enabled=off); CREATE TABLE pa_source (sid integer, delta float) WITH (autovacuum_enabled=off); -- insert many rows to the source table INSERT INTO pa_source SELECT id, id * 10 FROM generate_series(1,14) AS id; -- insert a few rows in the target table (odd numbered tid) INSERT INTO pa_target SELECT '2017-01-31', id, id * 100, 'initial' FROM generate_series(1,9,3) AS id; INSERT INTO pa_target SELECT '2017-02-28', id, id * 100, 'initial' FROM generate_series(2,9,3) AS id; -- try simple MERGE BEGIN; MERGE INTO pa_target t USING (SELECT '2017-01-15' AS slogts, * FROM pa_source WHERE sid < 10) s ON t.tid = s.sid WHEN MATCHED THEN UPDATE SET balance = balance + delta, val = val || ' updated by merge' WHEN NOT MATCHED THEN INSERT VALUES (slogts::timestamp, sid, delta, 'inserted by merge') RETURNING merge_action(), t.*; SELECT * FROM pa_target ORDER BY tid; ROLLBACK; DROP TABLE pa_source; DROP TABLE pa_target CASCADE; -- Partitioned table with primary key CREATE TABLE pa_target (tid integer PRIMARY KEY) PARTITION BY LIST (tid); CREATE TABLE pa_targetp PARTITION OF pa_target DEFAULT; CREATE TABLE pa_source (sid integer); INSERT INTO pa_source VALUES (1), (2); EXPLAIN (VERBOSE, COSTS OFF) MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT VALUES (s.sid); MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT VALUES (s.sid); TABLE pa_target; -- Partition-less partitioned table -- (the bug we are checking for appeared only if table had partitions before) DROP TABLE pa_targetp; EXPLAIN (VERBOSE, COSTS OFF) MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT VALUES (s.sid); MERGE INTO pa_target t USING pa_source s ON t.tid = s.sid WHEN NOT MATCHED THEN INSERT VALUES (s.sid); DROP TABLE pa_source; DROP TABLE pa_target CASCADE; -- some complex joins on the source side CREATE TABLE cj_target (tid integer, balance float, val text) WITH (autovacuum_enabled=off); CREATE TABLE cj_source1 (sid1 integer, scat integer, delta integer) WITH (autovacuum_enabled=off); CREATE TABLE cj_source2 (sid2 integer, sval text) WITH (autovacuum_enabled=off); INSERT INTO cj_source1 VALUES (1, 10, 100); INSERT INTO cj_source1 VALUES (1, 20, 200); INSERT INTO cj_source1 VALUES (2, 20, 300); INSERT INTO cj_source1 VALUES (3, 10, 400); INSERT INTO cj_source2 VALUES (1, 'initial source2'); INSERT INTO cj_source2 VALUES (2, 'initial source2'); INSERT INTO cj_source2 VALUES (3, 'initial source2'); -- source relation is an unaliased join MERGE INTO cj_target t USING cj_source1 s1 INNER JOIN cj_source2 s2 ON sid1 = sid2 ON t.tid = sid1 WHEN NOT MATCHED THEN INSERT VALUES (sid1, delta, sval); -- try accessing columns from either side of the source join MERGE INTO cj_target t USING cj_source2 s2 INNER JOIN cj_source1 s1 ON sid1 = sid2 AND scat = 20 ON t.tid = sid1 WHEN NOT MATCHED THEN INSERT VALUES (sid2, delta, sval) WHEN MATCHED THEN DELETE; -- some simple expressions in INSERT targetlist MERGE INTO cj_target t USING cj_source2 s2 INNER JOIN cj_source1 s1 ON sid1 = sid2 ON t.tid = sid1 WHEN NOT MATCHED THEN INSERT VALUES (sid2, delta + scat, sval) WHEN MATCHED THEN UPDATE SET val = val || ' updated by merge'; MERGE INTO cj_target t USING cj_source2 s2 INNER JOIN cj_source1 s1 ON sid1 = sid2 AND scat = 20 ON t.tid = sid1 WHEN MATCHED THEN UPDATE SET val = val || ' ' || delta::text; SELECT * FROM cj_target; -- try it with an outer join and PlaceHolderVar MERGE INTO cj_target t USING (SELECT *, 'join input'::text AS phv FROM cj_source1) fj FULL JOIN cj_source2 fj2 ON fj.scat = fj2.sid2 * 10 ON t.tid = fj.scat WHEN NOT MATCHED THEN INSERT (tid, balance, val) VALUES (fj.scat, fj.delta, fj.phv); SELECT * FROM cj_target; ALTER TABLE cj_source1 RENAME COLUMN sid1 TO sid; ALTER TABLE cj_source2 RENAME COLUMN sid2 TO sid; TRUNCATE cj_target; MERGE INTO cj_target t USING cj_source1 s1 INNER JOIN cj_source2 s2 ON s1.sid = s2.sid ON t.tid = s1.sid WHEN NOT MATCHED THEN INSERT VALUES (s2.sid, delta, sval); DROP TABLE cj_source2, cj_source1, cj_target; -- Function scans CREATE TABLE fs_target (a int, b int, c text) WITH (autovacuum_enabled=off); MERGE INTO fs_target t USING generate_series(1,100,1) AS id ON t.a = id WHEN MATCHED THEN UPDATE SET b = b + id WHEN NOT MATCHED THEN INSERT VALUES (id, -1); MERGE INTO fs_target t USING generate_series(1,100,2) AS id ON t.a = id WHEN MATCHED THEN UPDATE SET b = b + id, c = 'updated '|| id.*::text WHEN NOT MATCHED THEN INSERT VALUES (id, -1, 'inserted ' || id.*::text); SELECT count(*) FROM fs_target; DROP TABLE fs_target; -- SERIALIZABLE test -- handled in isolation tests -- Inheritance-based partitioning CREATE TABLE measurement ( city_id int not null, logdate date not null, peaktemp int, unitsales int ) WITH (autovacuum_enabled=off); CREATE TABLE measurement_y2006m02 ( CHECK ( logdate >= DATE '2006-02-01' AND logdate < DATE '2006-03-01' ) ) INHERITS (measurement) WITH (autovacuum_enabled=off); CREATE TABLE measurement_y2006m03 ( CHECK ( logdate >= DATE '2006-03-01' AND logdate < DATE '2006-04-01' ) ) INHERITS (measurement) WITH (autovacuum_enabled=off); CREATE TABLE measurement_y2007m01 ( filler text, peaktemp int, logdate date not null, city_id int not null, unitsales int CHECK ( logdate >= DATE '2007-01-01' AND logdate < DATE '2007-02-01') ) WITH (autovacuum_enabled=off); ALTER TABLE measurement_y2007m01 DROP COLUMN filler; ALTER TABLE measurement_y2007m01 INHERIT measurement; INSERT INTO measurement VALUES (0, '2005-07-21', 5, 15); CREATE OR REPLACE FUNCTION measurement_insert_trigger() RETURNS TRIGGER AS $$ BEGIN IF ( NEW.logdate >= DATE '2006-02-01' AND NEW.logdate < DATE '2006-03-01' ) THEN INSERT INTO measurement_y2006m02 VALUES (NEW.*); ELSIF ( NEW.logdate >= DATE '2006-03-01' AND NEW.logdate < DATE '2006-04-01' ) THEN INSERT INTO measurement_y2006m03 VALUES (NEW.*); ELSIF ( NEW.logdate >= DATE '2007-01-01' AND NEW.logdate < DATE '2007-02-01' ) THEN INSERT INTO measurement_y2007m01 (city_id, logdate, peaktemp, unitsales) VALUES (NEW.*); ELSE RAISE EXCEPTION 'Date out of range. Fix the measurement_insert_trigger() function!'; END IF; RETURN NULL; END; $$ LANGUAGE plpgsql ; CREATE TRIGGER insert_measurement_trigger BEFORE INSERT ON measurement FOR EACH ROW EXECUTE PROCEDURE measurement_insert_trigger(); INSERT INTO measurement VALUES (1, '2006-02-10', 35, 10); INSERT INTO measurement VALUES (1, '2006-02-16', 45, 20); INSERT INTO measurement VALUES (1, '2006-03-17', 25, 10); INSERT INTO measurement VALUES (1, '2006-03-27', 15, 40); INSERT INTO measurement VALUES (1, '2007-01-15', 10, 10); INSERT INTO measurement VALUES (1, '2007-01-17', 10, 10); SELECT tableoid::regclass, * FROM measurement ORDER BY city_id, logdate; CREATE TABLE new_measurement (LIKE measurement) WITH (autovacuum_enabled=off); INSERT INTO new_measurement VALUES (0, '2005-07-21', 25, 20); INSERT INTO new_measurement VALUES (1, '2006-03-01', 20, 10); INSERT INTO new_measurement VALUES (1, '2006-02-16', 50, 10); INSERT INTO new_measurement VALUES (2, '2006-02-10', 20, 20); INSERT INTO new_measurement VALUES (1, '2006-03-27', NULL, NULL); INSERT INTO new_measurement VALUES (1, '2007-01-17', NULL, NULL); INSERT INTO new_measurement VALUES (1, '2007-01-15', 5, NULL); INSERT INTO new_measurement VALUES (1, '2007-01-16', 10, 10); BEGIN; MERGE INTO ONLY measurement m USING new_measurement nm ON (m.city_id = nm.city_id and m.logdate=nm.logdate) WHEN MATCHED AND nm.peaktemp IS NULL THEN DELETE WHEN MATCHED THEN UPDATE SET peaktemp = greatest(m.peaktemp, nm.peaktemp), unitsales = m.unitsales + coalesce(nm.unitsales, 0) WHEN NOT MATCHED THEN INSERT (city_id, logdate, peaktemp, unitsales) VALUES (city_id, logdate, peaktemp, unitsales); SELECT tableoid::regclass, * FROM measurement ORDER BY city_id, logdate, peaktemp; ROLLBACK; MERGE into measurement m USING new_measurement nm ON (m.city_id = nm.city_id and m.logdate=nm.logdate) WHEN MATCHED AND nm.peaktemp IS NULL THEN DELETE WHEN MATCHED THEN UPDATE SET peaktemp = greatest(m.peaktemp, nm.peaktemp), unitsales = m.unitsales + coalesce(nm.unitsales, 0) WHEN NOT MATCHED THEN INSERT (city_id, logdate, peaktemp, unitsales) VALUES (city_id, logdate, peaktemp, unitsales); SELECT tableoid::regclass, * FROM measurement ORDER BY city_id, logdate; BEGIN; MERGE INTO new_measurement nm USING ONLY measurement m ON (nm.city_id = m.city_id and nm.logdate=m.logdate) WHEN MATCHED THEN DELETE; SELECT * FROM new_measurement ORDER BY city_id, logdate; ROLLBACK; MERGE INTO new_measurement nm USING measurement m ON (nm.city_id = m.city_id and nm.logdate=m.logdate) WHEN MATCHED THEN DELETE; SELECT * FROM new_measurement ORDER BY city_id, logdate; DROP TABLE measurement, new_measurement CASCADE; DROP FUNCTION measurement_insert_trigger(); -- -- test non-strict join clause -- CREATE TABLE src (a int, b text); INSERT INTO src VALUES (1, 'src row'); CREATE TABLE tgt (a int, b text); INSERT INTO tgt VALUES (NULL, 'tgt row'); MERGE INTO tgt USING src ON tgt.a IS NOT DISTINCT FROM src.a WHEN MATCHED THEN UPDATE SET a = src.a, b = src.b WHEN NOT MATCHED BY SOURCE THEN DELETE RETURNING merge_action(), src.*, tgt.*; SELECT * FROM tgt; DROP TABLE src, tgt; -- -- test for bug #18634 (wrong varnullingrels error) -- CREATE TABLE bug18634t (a int, b int, c text); INSERT INTO bug18634t VALUES(1, 10, 'tgt1'), (2, 20, 'tgt2'); CREATE VIEW bug18634v AS SELECT * FROM bug18634t WHERE EXISTS (SELECT 1 FROM bug18634t); CREATE TABLE bug18634s (a int, b int, c text); INSERT INTO bug18634s VALUES (1, 2, 'src1'); MERGE INTO bug18634v t USING bug18634s s ON s.a = t.a WHEN MATCHED THEN UPDATE SET b = s.b WHEN NOT MATCHED BY SOURCE THEN DELETE RETURNING merge_action(), s.c, t.*; SELECT * FROM bug18634t; DROP TABLE bug18634t CASCADE; DROP TABLE bug18634s; -- prepare RESET SESSION AUTHORIZATION; -- try a system catalog MERGE INTO pg_class c USING (SELECT 'pg_depend'::regclass AS oid) AS j ON j.oid = c.oid WHEN MATCHED THEN UPDATE SET reltuples = reltuples + 1 RETURNING j.oid; CREATE VIEW classv AS SELECT * FROM pg_class; MERGE INTO classv c USING pg_namespace n ON n.oid = c.relnamespace WHEN MATCHED AND c.oid = 'pg_depend'::regclass THEN UPDATE SET reltuples = reltuples - 1 RETURNING c.oid; DROP TABLE target, target2; DROP TABLE source, source2; DROP FUNCTION merge_trigfunc(); DROP USER regress_merge_privs; DROP USER regress_merge_no_privs; DROP USER regress_merge_none; libpg_query-17-6.1.0/test/sql/postgres_regress/misc.sql000066400000000000000000000152531477334012600231340ustar00rootroot00000000000000-- -- MISC -- -- directory paths and dlsuffix are passed to us in environment variables \getenv abs_srcdir PG_ABS_SRCDIR \getenv abs_builddir PG_ABS_BUILDDIR \getenv libdir PG_LIBDIR \getenv dlsuffix PG_DLSUFFIX \set regresslib :libdir '/regress' :dlsuffix CREATE FUNCTION overpaid(emp) RETURNS bool AS :'regresslib' LANGUAGE C STRICT; CREATE FUNCTION reverse_name(name) RETURNS name AS :'regresslib' LANGUAGE C STRICT; -- -- BTREE -- UPDATE onek SET unique1 = onek.unique1 + 1; UPDATE onek SET unique1 = onek.unique1 - 1; -- -- BTREE partial -- -- UPDATE onek2 -- SET unique1 = onek2.unique1 + 1; --UPDATE onek2 -- SET unique1 = onek2.unique1 - 1; -- -- BTREE shutting out non-functional updates -- -- the following two tests seem to take a long time on some -- systems. This non-func update stuff needs to be examined -- more closely. - jolly (2/22/96) -- SELECT two, stringu1, ten, string4 INTO TABLE tmp FROM onek; UPDATE tmp SET stringu1 = reverse_name(onek.stringu1) FROM onek WHERE onek.stringu1 = 'JBAAAA' and onek.stringu1 = tmp.stringu1; UPDATE tmp SET stringu1 = reverse_name(onek2.stringu1) FROM onek2 WHERE onek2.stringu1 = 'JCAAAA' and onek2.stringu1 = tmp.stringu1; DROP TABLE tmp; --UPDATE person* -- SET age = age + 1; --UPDATE person* -- SET age = age + 3 -- WHERE name = 'linda'; -- -- copy -- \set filename :abs_builddir '/results/onek.data' COPY onek TO :'filename'; CREATE TEMP TABLE onek_copy (LIKE onek); COPY onek_copy FROM :'filename'; SELECT * FROM onek EXCEPT ALL SELECT * FROM onek_copy; SELECT * FROM onek_copy EXCEPT ALL SELECT * FROM onek; \set filename :abs_builddir '/results/stud_emp.data' COPY BINARY stud_emp TO :'filename'; CREATE TEMP TABLE stud_emp_copy (LIKE stud_emp); COPY BINARY stud_emp_copy FROM :'filename'; SELECT * FROM stud_emp_copy; -- -- test data for postquel functions -- CREATE TABLE hobbies_r ( name text, person text ); CREATE TABLE equipment_r ( name text, hobby text ); 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'); -- -- postquel functions -- CREATE FUNCTION hobbies(person) RETURNS setof hobbies_r AS 'select * from hobbies_r where person = $1.name' LANGUAGE SQL; CREATE FUNCTION hobby_construct(text, text) RETURNS hobbies_r AS 'select $1 as name, $2 as hobby' LANGUAGE SQL; CREATE FUNCTION hobby_construct_named(name text, hobby text) RETURNS hobbies_r AS 'select name, hobby' LANGUAGE SQL; CREATE FUNCTION hobbies_by_name(hobbies_r.name%TYPE) RETURNS hobbies_r.person%TYPE AS 'select person from hobbies_r where name = $1' LANGUAGE SQL; CREATE FUNCTION equipment(hobbies_r) RETURNS setof equipment_r AS 'select * from equipment_r where hobby = $1.name' LANGUAGE SQL; CREATE FUNCTION equipment_named(hobby hobbies_r) RETURNS setof equipment_r AS 'select * from equipment_r where equipment_r.hobby = equipment_named.hobby.name' LANGUAGE SQL; CREATE FUNCTION equipment_named_ambiguous_1a(hobby hobbies_r) RETURNS setof equipment_r AS 'select * from equipment_r where hobby = equipment_named_ambiguous_1a.hobby.name' LANGUAGE SQL; CREATE FUNCTION equipment_named_ambiguous_1b(hobby hobbies_r) RETURNS setof equipment_r AS 'select * from equipment_r where equipment_r.hobby = hobby.name' LANGUAGE SQL; CREATE FUNCTION equipment_named_ambiguous_1c(hobby hobbies_r) RETURNS setof equipment_r AS 'select * from equipment_r where hobby = hobby.name' LANGUAGE SQL; CREATE FUNCTION equipment_named_ambiguous_2a(hobby text) RETURNS setof equipment_r AS 'select * from equipment_r where hobby = equipment_named_ambiguous_2a.hobby' LANGUAGE SQL; CREATE FUNCTION equipment_named_ambiguous_2b(hobby text) RETURNS setof equipment_r AS 'select * from equipment_r where equipment_r.hobby = hobby' LANGUAGE SQL; -- -- mike does post_hacking, -- joe and sally play basketball, and -- everyone else does nothing. -- SELECT p.name, name(p.hobbies) FROM ONLY person p; -- -- as above, but jeff also does post_hacking. -- SELECT p.name, name(p.hobbies) FROM person* p; -- -- the next two queries demonstrate how functions generate bogus duplicates. -- this is a "feature" .. -- SELECT DISTINCT hobbies_r.name, name(hobbies_r.equipment) FROM hobbies_r ORDER BY 1,2; SELECT hobbies_r.name, (hobbies_r.equipment).name FROM hobbies_r; -- -- mike needs advil and peet's coffee, -- joe and sally need hightops, and -- everyone else is fine. -- SELECT p.name, name(p.hobbies), name(equipment(p.hobbies)) FROM ONLY person p; -- -- as above, but jeff needs advil and peet's coffee as well. -- SELECT p.name, name(p.hobbies), name(equipment(p.hobbies)) FROM person* p; -- -- just like the last two, but make sure that the target list fixup and -- unflattening is being done correctly. -- SELECT name(equipment(p.hobbies)), p.name, name(p.hobbies) FROM ONLY person p; SELECT (p.hobbies).equipment.name, p.name, name(p.hobbies) FROM person* p; SELECT (p.hobbies).equipment.name, name(p.hobbies), p.name FROM ONLY person p; SELECT name(equipment(p.hobbies)), name(p.hobbies), p.name FROM person* p; SELECT name(equipment(hobby_construct(text 'skywalking', text 'mer'))); SELECT name(equipment(hobby_construct_named(text 'skywalking', text 'mer'))); SELECT name(equipment_named(hobby_construct_named(text 'skywalking', text 'mer'))); SELECT name(equipment_named_ambiguous_1a(hobby_construct_named(text 'skywalking', text 'mer'))); SELECT name(equipment_named_ambiguous_1b(hobby_construct_named(text 'skywalking', text 'mer'))); SELECT name(equipment_named_ambiguous_1c(hobby_construct_named(text 'skywalking', text 'mer'))); SELECT name(equipment_named_ambiguous_2a(text 'skywalking')); SELECT name(equipment_named_ambiguous_2b(text 'skywalking')); SELECT hobbies_by_name('basketball'); SELECT name, overpaid(emp.*) FROM emp; -- -- Try a few cases with SQL-spec row constructor expressions -- SELECT * FROM equipment(ROW('skywalking', 'mer')); SELECT name(equipment(ROW('skywalking', 'mer'))); SELECT *, name(equipment(h.*)) FROM hobbies_r h; SELECT *, (equipment(CAST((h.*) AS hobbies_r))).name FROM hobbies_r h; -- -- functional joins -- -- -- instance rules -- -- -- rewrite rules -- libpg_query-17-6.1.0/test/sql/postgres_regress/misc_functions.sql000066400000000000000000000233211477334012600252170ustar00rootroot00000000000000-- directory paths and dlsuffix are passed to us in environment variables \getenv libdir PG_LIBDIR \getenv dlsuffix PG_DLSUFFIX \set regresslib :libdir '/regress' :dlsuffix -- -- 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(); -- -- canonicalize_path() -- CREATE FUNCTION test_canonicalize_path(text) RETURNS text AS :'regresslib' LANGUAGE C STRICT IMMUTABLE; SELECT test_canonicalize_path('/'); SELECT test_canonicalize_path('/./abc/def/'); SELECT test_canonicalize_path('/./../abc/def'); SELECT test_canonicalize_path('/./../../abc/def/'); SELECT test_canonicalize_path('/abc/.././def/ghi'); SELECT test_canonicalize_path('/abc/./../def/ghi//'); SELECT test_canonicalize_path('/abc/def/../..'); SELECT test_canonicalize_path('/abc/def/../../..'); SELECT test_canonicalize_path('/abc/def/../../../../ghi/jkl'); SELECT test_canonicalize_path('.'); SELECT test_canonicalize_path('./'); SELECT test_canonicalize_path('./abc/..'); SELECT test_canonicalize_path('abc/../'); SELECT test_canonicalize_path('abc/../def'); SELECT test_canonicalize_path('..'); SELECT test_canonicalize_path('../abc/def'); SELECT test_canonicalize_path('../abc/..'); SELECT test_canonicalize_path('../abc/../def'); SELECT test_canonicalize_path('../abc/../../def/ghi'); SELECT test_canonicalize_path('./abc/./def/.'); SELECT test_canonicalize_path('./abc/././def/.'); SELECT test_canonicalize_path('./abc/./def/.././ghi/../../../jkl/mno'); -- -- pg_log_backend_memory_contexts() -- -- Memory contexts are logged and they are not returned to the function. -- Furthermore, their contents can vary depending on the timing. However, -- we can at least verify that the code doesn't fail, and that the -- permissions are set properly. -- SELECT pg_log_backend_memory_contexts(pg_backend_pid()); SELECT pg_log_backend_memory_contexts(pid) FROM pg_stat_activity WHERE backend_type = 'checkpointer'; CREATE ROLE regress_log_memory; SELECT has_function_privilege('regress_log_memory', 'pg_log_backend_memory_contexts(integer)', 'EXECUTE'); -- no GRANT EXECUTE ON FUNCTION pg_log_backend_memory_contexts(integer) TO regress_log_memory; SELECT has_function_privilege('regress_log_memory', 'pg_log_backend_memory_contexts(integer)', 'EXECUTE'); -- yes SET ROLE regress_log_memory; SELECT pg_log_backend_memory_contexts(pg_backend_pid()); RESET ROLE; REVOKE EXECUTE ON FUNCTION pg_log_backend_memory_contexts(integer) FROM regress_log_memory; DROP ROLE regress_log_memory; -- -- 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(); -- pg_read_file() select length(pg_read_file('postmaster.pid')) > 20; select length(pg_read_file('postmaster.pid', 1, 20)); -- Test missing_ok select pg_read_file('does not exist'); -- error select pg_read_file('does not exist', true) IS NULL; -- ok -- Test invalid argument select pg_read_file('does not exist', 0, -1); -- error select pg_read_file('does not exist', 0, -1, true); -- error -- pg_read_binary_file() select length(pg_read_binary_file('postmaster.pid')) > 20; select length(pg_read_binary_file('postmaster.pid', 1, 20)); -- Test missing_ok select pg_read_binary_file('does not exist'); -- error select pg_read_binary_file('does not exist', true) IS NULL; -- ok -- Test invalid argument select pg_read_binary_file('does not exist', 0, -1); -- error select pg_read_binary_file('does not exist', 0, -1, true); -- error -- pg_stat_file() select size > 20, isdir from pg_stat_file('postmaster.pid'); -- pg_ls_dir() select * from (select pg_ls_dir('.') a) a where a = 'base' limit 1; -- Test missing_ok (second argument) select pg_ls_dir('does not exist', false, false); -- error select pg_ls_dir('does not exist', true, false); -- ok -- Test include_dot_dirs (third argument) select count(*) = 1 as dot_found from pg_ls_dir('.', false, true) as ls where ls = '.'; select count(*) = 1 as dot_found from pg_ls_dir('.', false, false) as ls where ls = '.'; -- pg_timezone_names() select * from (select (pg_timezone_names()).name) ptn where name='UTC' limit 1; -- pg_tablespace_databases() 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 replication slot directory functions -- CREATE ROLE regress_slot_dir_funcs; -- Not available by default. SELECT has_function_privilege('regress_slot_dir_funcs', 'pg_ls_logicalsnapdir()', 'EXECUTE'); SELECT has_function_privilege('regress_slot_dir_funcs', 'pg_ls_logicalmapdir()', 'EXECUTE'); SELECT has_function_privilege('regress_slot_dir_funcs', 'pg_ls_replslotdir(text)', 'EXECUTE'); GRANT pg_monitor TO regress_slot_dir_funcs; -- Role is now part of pg_monitor, so these are available. SELECT has_function_privilege('regress_slot_dir_funcs', 'pg_ls_logicalsnapdir()', 'EXECUTE'); SELECT has_function_privilege('regress_slot_dir_funcs', 'pg_ls_logicalmapdir()', 'EXECUTE'); SELECT has_function_privilege('regress_slot_dir_funcs', 'pg_ls_replslotdir(text)', 'EXECUTE'); DROP ROLE regress_slot_dir_funcs; -- -- 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 CREATE FUNCTION test_support_func(internal) RETURNS internal AS :'regresslib', 'test_support_func' LANGUAGE C STRICT; 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; -- Test functions for control data SELECT count(*) > 0 AS ok FROM pg_control_checkpoint(); SELECT count(*) > 0 AS ok FROM pg_control_init(); SELECT count(*) > 0 AS ok FROM pg_control_recovery(); SELECT count(*) > 0 AS ok FROM pg_control_system(); -- pg_split_walfile_name, pg_walfile_name & pg_walfile_name_offset SELECT * FROM pg_split_walfile_name(NULL); SELECT * FROM pg_split_walfile_name('invalid'); SELECT segment_number > 0 AS ok_segment_number, timeline_id FROM pg_split_walfile_name('000000010000000100000000'); SELECT segment_number > 0 AS ok_segment_number, timeline_id FROM pg_split_walfile_name('ffffffFF00000001000000af'); SELECT setting::int8 AS segment_size FROM pg_settings WHERE name = 'wal_segment_size' \gset SELECT segment_number, file_offset FROM pg_walfile_name_offset('0/0'::pg_lsn + :segment_size), pg_split_walfile_name(file_name); SELECT segment_number, file_offset FROM pg_walfile_name_offset('0/0'::pg_lsn + :segment_size + 1), pg_split_walfile_name(file_name); SELECT segment_number, file_offset = :segment_size - 1 FROM pg_walfile_name_offset('0/0'::pg_lsn + :segment_size - 1), pg_split_walfile_name(file_name); -- pg_current_logfile CREATE ROLE regress_current_logfile; -- not available by default SELECT has_function_privilege('regress_current_logfile', 'pg_current_logfile()', 'EXECUTE'); GRANT pg_monitor TO regress_current_logfile; -- role has privileges of pg_monitor and can execute the function SELECT has_function_privilege('regress_current_logfile', 'pg_current_logfile()', 'EXECUTE'); DROP ROLE regress_current_logfile; -- pg_column_toast_chunk_id CREATE TABLE test_chunk_id (a TEXT, b TEXT STORAGE EXTERNAL); INSERT INTO test_chunk_id VALUES ('x', repeat('x', 8192)); SELECT t.relname AS toastrel FROM pg_class c LEFT JOIN pg_class t ON c.reltoastrelid = t.oid WHERE c.relname = 'test_chunk_id' \gset SELECT pg_column_toast_chunk_id(a) IS NULL, pg_column_toast_chunk_id(b) IN (SELECT chunk_id FROM pg_toast.:toastrel) FROM test_chunk_id; DROP TABLE test_chunk_id; libpg_query-17-6.1.0/test/sql/postgres_regress/misc_sanity.sql000066400000000000000000000045101477334012600245150ustar00rootroot00000000000000-- -- 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. SELECT * FROM pg_depend as d1 WHERE refclassid = 0 OR refobjid = 0 OR classid = 0 OR objid = 0 OR deptype NOT IN ('a', 'e', 'i', 'n', 'x', 'P', 'S'); -- **************** pg_shdepend **************** -- Look for illegal values in pg_shdepend fields. SELECT * FROM pg_shdepend as d1 WHERE refclassid = 0 OR refobjid = 0 OR classid = 0 OR objid = 0 OR deptype NOT IN ('a', 'i', 'o', 'r', 't'); -- **************** 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; -- system catalogs without primary keys -- -- Current exceptions: -- * pg_depend, pg_shdepend don't have a unique key SELECT relname FROM pg_class WHERE relnamespace = 'pg_catalog'::regnamespace AND relkind = 'r' AND pg_class.oid NOT IN (SELECT indrelid FROM pg_index WHERE indisprimary) ORDER BY 1; -- system catalog unique indexes not wrapped in a constraint -- (There should be none.) SELECT relname FROM pg_class c JOIN pg_index i ON c.oid = i.indexrelid WHERE relnamespace = 'pg_catalog'::regnamespace AND relkind = 'i' AND i.indisunique AND c.oid NOT IN (SELECT conindid FROM pg_constraint) ORDER BY 1; libpg_query-17-6.1.0/test/sql/postgres_regress/money.sql000066400000000000000000000106151477334012600233250ustar00rootroot00000000000000-- -- 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; -- test non-error-throwing API SELECT pg_input_is_valid('\x0001', 'money'); SELECT * FROM pg_input_error_info('\x0001', 'money'); SELECT pg_input_is_valid('192233720368547758.07', 'money'); SELECT * FROM pg_input_error_info('192233720368547758.07', '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; -- overflow checks SELECT '92233720368547758.07'::money + '0.01'::money; SELECT '-92233720368547758.08'::money - '0.01'::money; SELECT '92233720368547758.07'::money * 2::float8; SELECT '-1'::money / 1.175494e-38::float4; SELECT '92233720368547758.07'::money * 2::int4; SELECT '1'::money / 0::int2; SELECT '42'::money * 'inf'::float8; SELECT '42'::money * '-inf'::float8; SELECT '42'::money * 'nan'::float4; libpg_query-17-6.1.0/test/sql/postgres_regress/multirangetypes.sql000066400000000000000000001230761477334012600254400ustar00rootroot00000000000000-- Tests for multirange data types. -- -- test input parser -- -- negative tests; should fail select ''::textmultirange; select '{,}'::textmultirange; select '{(,)}.'::textmultirange; select '{[a,c),}'::textmultirange; select '{,[a,c)}'::textmultirange; select '{-[a,z)}'::textmultirange; select '{[a,z) - }'::textmultirange; select '{(",a)}'::textmultirange; select '{(,,a)}'::textmultirange; select '{(),a)}'::textmultirange; select '{(a,))}'::textmultirange; select '{(],a)}'::textmultirange; select '{(a,])}'::textmultirange; select '{[z,a]}'::textmultirange; -- should succeed select '{}'::textmultirange; select ' {} '::textmultirange; select ' { empty, empty } '::textmultirange; select ' {( " a " " a ", " z " " z " ) }'::textmultirange; select textrange('\\\\', repeat('a', 200))::textmultirange; select '{(,z)}'::textmultirange; select '{(a,)}'::textmultirange; select '{[,z]}'::textmultirange; select '{[a,]}'::textmultirange; select '{(,)}'::textmultirange; select '{[ , ]}'::textmultirange; select '{["",""]}'::textmultirange; select '{[",",","]}'::textmultirange; select '{["\\","\\"]}'::textmultirange; select '{["""","\""]}'::textmultirange; select '{(\\,a)}'::textmultirange; select '{((,z)}'::textmultirange; select '{([,z)}'::textmultirange; select '{(!,()}'::textmultirange; select '{(!,[)}'::textmultirange; select '{[a,a]}'::textmultirange; select '{[a,a],[a,b]}'::textmultirange; select '{[a,b), [b,e]}'::textmultirange; select '{[a,d), [b,f]}'::textmultirange; select '{[a,a],[b,b]}'::textmultirange; -- without canonicalization, we can't join these: select '{[a,a], [b,b]}'::textmultirange; -- with canonicalization, we can join these: select '{[1,2], [3,4]}'::int4multirange; select '{[a,a], [b,b], [c,c]}'::textmultirange; select '{[a,d], [b,e]}'::textmultirange; select '{[a,d), [d,e)}'::textmultirange; -- these are allowed but normalize to empty: select '{[a,a)}'::textmultirange; select '{(a,a]}'::textmultirange; select '{(a,a)}'::textmultirange; -- Also try it with non-error-throwing API select pg_input_is_valid('{[1,2], [4,5]}', 'int4multirange'); select pg_input_is_valid('{[1,2], [4,5]', 'int4multirange'); select * from pg_input_error_info('{[1,2], [4,5]', 'int4multirange'); select pg_input_is_valid('{[1,2], [4,zed]}', 'int4multirange'); select * from pg_input_error_info('{[1,2], [4,zed]}', 'int4multirange'); -- -- test the constructor --- select textmultirange(); select textmultirange(textrange('a', 'c')); select textmultirange(textrange('a', 'c'), textrange('f', 'g')); select textmultirange(textrange('\\\\', repeat('a', 200)), textrange('c', 'd')); -- -- test casts, both a built-in range type and a user-defined one: -- select 'empty'::int4range::int4multirange; select int4range(1, 3)::int4multirange; select int4range(1, null)::int4multirange; select int4range(null, null)::int4multirange; select 'empty'::textrange::textmultirange; select textrange('a', 'c')::textmultirange; select textrange('a', null)::textmultirange; select textrange(null, null)::textmultirange; -- -- test unnest(multirange) function -- select unnest(int4multirange(int4range('5', '6'), int4range('1', '2'))); select unnest(textmultirange(textrange('a', 'b'), textrange('d', 'e'))); select unnest(textmultirange(textrange('\\\\', repeat('a', 200)), textrange('c', 'd'))); -- -- create some test data and test the operators -- CREATE TABLE nummultirange_test (nmr NUMMULTIRANGE); CREATE INDEX nummultirange_test_btree ON nummultirange_test(nmr); INSERT INTO nummultirange_test VALUES('{}'); INSERT INTO nummultirange_test VALUES('{[,)}'); INSERT INTO nummultirange_test VALUES('{[3,]}'); INSERT INTO nummultirange_test VALUES('{[,), [3,]}'); INSERT INTO nummultirange_test VALUES('{[, 5)}'); INSERT INTO nummultirange_test VALUES(nummultirange()); INSERT INTO nummultirange_test VALUES(nummultirange(variadic '{}'::numrange[])); INSERT INTO nummultirange_test VALUES(nummultirange(numrange(1.1, 2.2))); INSERT INTO nummultirange_test VALUES('{empty}'); INSERT INTO nummultirange_test VALUES(nummultirange(numrange(1.7, 1.7, '[]'), numrange(1.7, 1.9))); INSERT INTO nummultirange_test VALUES(nummultirange(numrange(1.7, 1.7, '[]'), numrange(1.9, 2.1))); SELECT nmr, isempty(nmr), lower(nmr), upper(nmr) FROM nummultirange_test ORDER BY nmr; SELECT nmr, lower_inc(nmr), lower_inf(nmr), upper_inc(nmr), upper_inf(nmr) FROM nummultirange_test ORDER BY nmr; SELECT * FROM nummultirange_test WHERE nmr = '{}'; SELECT * FROM nummultirange_test WHERE nmr = '{(,5)}'; SELECT * FROM nummultirange_test WHERE nmr = '{[3,)}'; SELECT * FROM nummultirange_test WHERE nmr = '{[1.7,1.7]}'; SELECT * FROM nummultirange_test WHERE nmr = '{[1.7,1.7],[1.9,2.1)}'; SELECT * FROM nummultirange_test WHERE nmr < '{}'; SELECT * FROM nummultirange_test WHERE nmr < '{[-1000.0, -1000.0]}'; SELECT * FROM nummultirange_test WHERE nmr < '{[0.0, 1.0]}'; SELECT * FROM nummultirange_test WHERE nmr < '{[1000.0, 1001.0]}'; SELECT * FROM nummultirange_test WHERE nmr <= '{}'; SELECT * FROM nummultirange_test WHERE nmr <= '{[3,)}'; SELECT * FROM nummultirange_test WHERE nmr >= '{}'; SELECT * FROM nummultirange_test WHERE nmr >= '{[3,)}'; SELECT * FROM nummultirange_test WHERE nmr > '{}'; SELECT * FROM nummultirange_test WHERE nmr > '{[-1000.0, -1000.0]}'; SELECT * FROM nummultirange_test WHERE nmr > '{[0.0, 1.0]}'; SELECT * FROM nummultirange_test WHERE nmr > '{[1000.0, 1001.0]}'; SELECT * FROM nummultirange_test WHERE nmr <> '{}'; SELECT * FROM nummultirange_test WHERE nmr <> '{(,5)}'; select nummultirange(numrange(2.0, 1.0)); select nummultirange(numrange(5.0, 6.0), numrange(1.0, 2.0)); analyze nummultirange_test; -- overlaps SELECT * FROM nummultirange_test WHERE range_overlaps_multirange(numrange(4.0, 4.2), nmr); SELECT * FROM nummultirange_test WHERE numrange(4.0, 4.2) && nmr; SELECT * FROM nummultirange_test WHERE multirange_overlaps_range(nmr, numrange(4.0, 4.2)); SELECT * FROM nummultirange_test WHERE nmr && numrange(4.0, 4.2); SELECT * FROM nummultirange_test WHERE multirange_overlaps_multirange(nmr, nummultirange(numrange(4.0, 4.2), numrange(6.0, 7.0))); SELECT * FROM nummultirange_test WHERE nmr && nummultirange(numrange(4.0, 4.2), numrange(6.0, 7.0)); SELECT * FROM nummultirange_test WHERE nmr && nummultirange(numrange(6.0, 7.0)); SELECT * FROM nummultirange_test WHERE nmr && nummultirange(numrange(6.0, 7.0), numrange(8.0, 9.0)); -- mr contains x SELECT * FROM nummultirange_test WHERE multirange_contains_elem(nmr, 4.0); SELECT * FROM nummultirange_test WHERE nmr @> 4.0; SELECT * FROM nummultirange_test WHERE multirange_contains_range(nmr, numrange(4.0, 4.2)); SELECT * FROM nummultirange_test WHERE nmr @> numrange(4.0, 4.2); SELECT * FROM nummultirange_test WHERE multirange_contains_multirange(nmr, '{[4.0,4.2), [6.0, 8.0)}'); SELECT * FROM nummultirange_test WHERE nmr @> '{[4.0,4.2), [6.0, 8.0)}'::nummultirange; -- x is contained by mr SELECT * FROM nummultirange_test WHERE elem_contained_by_multirange(4.0, nmr); SELECT * FROM nummultirange_test WHERE 4.0 <@ nmr; SELECT * FROM nummultirange_test WHERE range_contained_by_multirange(numrange(4.0, 4.2), nmr); SELECT * FROM nummultirange_test WHERE numrange(4.0, 4.2) <@ nmr; SELECT * FROM nummultirange_test WHERE multirange_contained_by_multirange('{[4.0,4.2), [6.0, 8.0)}', nmr); SELECT * FROM nummultirange_test WHERE '{[4.0,4.2), [6.0, 8.0)}'::nummultirange <@ nmr; -- overlaps SELECT 'empty'::numrange && nummultirange(); SELECT 'empty'::numrange && nummultirange(numrange(1,2)); SELECT nummultirange() && 'empty'::numrange; SELECT nummultirange(numrange(1,2)) && 'empty'::numrange; SELECT nummultirange() && nummultirange(); SELECT nummultirange() && nummultirange(numrange(1,2)); SELECT nummultirange(numrange(1,2)) && nummultirange(); SELECT nummultirange(numrange(3,4)) && nummultirange(numrange(1,2), numrange(7,8)); SELECT nummultirange(numrange(1,2), numrange(7,8)) && nummultirange(numrange(3,4)); SELECT nummultirange(numrange(3,4)) && nummultirange(numrange(1,2), numrange(3.5,8)); SELECT nummultirange(numrange(1,2), numrange(3.5,8)) && numrange(3,4); SELECT nummultirange(numrange(1,2), numrange(3.5,8)) && nummultirange(numrange(3,4)); select '{(10,20),(30,40),(50,60)}'::nummultirange && '(42,92)'::numrange; -- contains SELECT nummultirange() @> nummultirange(); SELECT nummultirange() @> 'empty'::numrange; SELECT nummultirange(numrange(null,null)) @> numrange(1,2); SELECT nummultirange(numrange(null,null)) @> numrange(null,2); SELECT nummultirange(numrange(null,null)) @> numrange(2,null); SELECT nummultirange(numrange(null,5)) @> numrange(null,3); SELECT nummultirange(numrange(null,5)) @> numrange(null,8); SELECT nummultirange(numrange(5,null)) @> numrange(8,null); SELECT nummultirange(numrange(5,null)) @> numrange(3,null); SELECT nummultirange(numrange(1,5)) @> numrange(8,9); SELECT nummultirange(numrange(1,5)) @> numrange(3,9); SELECT nummultirange(numrange(1,5)) @> numrange(1,4); SELECT nummultirange(numrange(1,5)) @> numrange(1,5); SELECT nummultirange(numrange(-4,-2), numrange(1,5)) @> numrange(1,5); SELECT nummultirange(numrange(1,5), numrange(8,9)) @> numrange(1,5); SELECT nummultirange(numrange(1,5), numrange(8,9)) @> numrange(6,7); SELECT nummultirange(numrange(1,5), numrange(6,9)) @> numrange(6,7); SELECT '{[1,5)}'::nummultirange @> '{[1,5)}'; SELECT '{[-4,-2), [1,5)}'::nummultirange @> '{[1,5)}'; SELECT '{[1,5), [8,9)}'::nummultirange @> '{[1,5)}'; SELECT '{[1,5), [8,9)}'::nummultirange @> '{[6,7)}'; SELECT '{[1,5), [6,9)}'::nummultirange @> '{[6,7)}'; select '{(10,20),(30,40),(50,60)}'::nummultirange @> '(52,56)'::numrange; SELECT numrange(null,null) @> nummultirange(numrange(1,2)); SELECT numrange(null,null) @> nummultirange(numrange(null,2)); SELECT numrange(null,null) @> nummultirange(numrange(2,null)); SELECT numrange(null,5) @> nummultirange(numrange(null,3)); SELECT numrange(null,5) @> nummultirange(numrange(null,8)); SELECT numrange(5,null) @> nummultirange(numrange(8,null)); SELECT numrange(5,null) @> nummultirange(numrange(3,null)); SELECT numrange(1,5) @> nummultirange(numrange(8,9)); SELECT numrange(1,5) @> nummultirange(numrange(3,9)); SELECT numrange(1,5) @> nummultirange(numrange(1,4)); SELECT numrange(1,5) @> nummultirange(numrange(1,5)); SELECT numrange(1,9) @> nummultirange(numrange(-4,-2), numrange(1,5)); SELECT numrange(1,9) @> nummultirange(numrange(1,5), numrange(8,9)); SELECT numrange(1,9) @> nummultirange(numrange(1,5), numrange(6,9)); SELECT numrange(1,9) @> nummultirange(numrange(1,5), numrange(6,10)); SELECT '{[1,9)}' @> '{[1,5)}'::nummultirange; SELECT '{[1,9)}' @> '{[-4,-2), [1,5)}'::nummultirange; SELECT '{[1,9)}' @> '{[1,5), [8,9)}'::nummultirange; SELECT '{[1,9)}' @> '{[1,5), [6,9)}'::nummultirange; SELECT '{[1,9)}' @> '{[1,5), [6,10)}'::nummultirange; -- is contained by SELECT nummultirange() <@ nummultirange(); SELECT 'empty'::numrange <@ nummultirange(); SELECT numrange(1,2) <@ nummultirange(numrange(null,null)); SELECT numrange(null,2) <@ nummultirange(numrange(null,null)); SELECT numrange(2,null) <@ nummultirange(numrange(null,null)); SELECT numrange(null,3) <@ nummultirange(numrange(null,5)); SELECT numrange(null,8) <@ nummultirange(numrange(null,5)); SELECT numrange(8,null) <@ nummultirange(numrange(5,null)); SELECT numrange(3,null) <@ nummultirange(numrange(5,null)); SELECT numrange(8,9) <@ nummultirange(numrange(1,5)); SELECT numrange(3,9) <@ nummultirange(numrange(1,5)); SELECT numrange(1,4) <@ nummultirange(numrange(1,5)); SELECT numrange(1,5) <@ nummultirange(numrange(1,5)); SELECT numrange(1,5) <@ nummultirange(numrange(-4,-2), numrange(1,5)); SELECT numrange(1,5) <@ nummultirange(numrange(1,5), numrange(8,9)); SELECT numrange(6,7) <@ nummultirange(numrange(1,5), numrange(8,9)); SELECT numrange(6,7) <@ nummultirange(numrange(1,5), numrange(6,9)); SELECT '{[1,5)}' <@ '{[1,5)}'::nummultirange; SELECT '{[1,5)}' <@ '{[-4,-2), [1,5)}'::nummultirange; SELECT '{[1,5)}' <@ '{[1,5), [8,9)}'::nummultirange; SELECT '{[6,7)}' <@ '{[1,5), [8,9)}'::nummultirange; SELECT '{[6,7)}' <@ '{[1,5), [6,9)}'::nummultirange; SELECT nummultirange(numrange(1,2)) <@ numrange(null,null); SELECT nummultirange(numrange(null,2)) <@ numrange(null,null); SELECT nummultirange(numrange(2,null)) <@ numrange(null,null); SELECT nummultirange(numrange(null,3)) <@ numrange(null,5); SELECT nummultirange(numrange(null,8)) <@ numrange(null,5); SELECT nummultirange(numrange(8,null)) <@ numrange(5,null); SELECT nummultirange(numrange(3,null)) <@ numrange(5,null); SELECT nummultirange(numrange(8,9)) <@ numrange(1,5); SELECT nummultirange(numrange(3,9)) <@ numrange(1,5); SELECT nummultirange(numrange(1,4)) <@ numrange(1,5); SELECT nummultirange(numrange(1,5)) <@ numrange(1,5); SELECT nummultirange(numrange(-4,-2), numrange(1,5)) <@ numrange(1,9); SELECT nummultirange(numrange(1,5), numrange(8,9)) <@ numrange(1,9); SELECT nummultirange(numrange(1,5), numrange(6,9)) <@ numrange(1,9); SELECT nummultirange(numrange(1,5), numrange(6,10)) <@ numrange(1,9); SELECT '{[1,5)}'::nummultirange <@ '{[1,9)}'; SELECT '{[-4,-2), [1,5)}'::nummultirange <@ '{[1,9)}'; SELECT '{[1,5), [8,9)}'::nummultirange <@ '{[1,9)}'; SELECT '{[1,5), [6,9)}'::nummultirange <@ '{[1,9)}'; SELECT '{[1,5), [6,10)}'::nummultirange <@ '{[1,9)}'; -- overleft SELECT 'empty'::numrange &< nummultirange(); SELECT 'empty'::numrange &< nummultirange(numrange(1,2)); SELECT nummultirange() &< 'empty'::numrange; SELECT nummultirange(numrange(1,2)) &< 'empty'::numrange; SELECT nummultirange() &< nummultirange(); SELECT nummultirange(numrange(1,2)) &< nummultirange(); SELECT nummultirange() &< nummultirange(numrange(1,2)); SELECT numrange(6,7) &< nummultirange(numrange(3,4)); SELECT numrange(1,2) &< nummultirange(numrange(3,4)); SELECT numrange(1,4) &< nummultirange(numrange(3,4)); SELECT numrange(1,6) &< nummultirange(numrange(3,4)); SELECT numrange(3.5,6) &< nummultirange(numrange(3,4)); SELECT nummultirange(numrange(6,7)) &< numrange(3,4); SELECT nummultirange(numrange(1,2)) &< numrange(3,4); SELECT nummultirange(numrange(1,4)) &< numrange(3,4); SELECT nummultirange(numrange(1,6)) &< numrange(3,4); SELECT nummultirange(numrange(3.5,6)) &< numrange(3,4); SELECT nummultirange(numrange(6,7)) &< nummultirange(numrange(3,4)); SELECT nummultirange(numrange(1,2)) &< nummultirange(numrange(3,4)); SELECT nummultirange(numrange(1,4)) &< nummultirange(numrange(3,4)); SELECT nummultirange(numrange(1,6)) &< nummultirange(numrange(3,4)); SELECT nummultirange(numrange(3.5,6)) &< nummultirange(numrange(3,4)); -- overright SELECT nummultirange() &> 'empty'::numrange; SELECT nummultirange(numrange(1,2)) &> 'empty'::numrange; SELECT 'empty'::numrange &> nummultirange(); SELECT 'empty'::numrange &> nummultirange(numrange(1,2)); SELECT nummultirange() &> nummultirange(); SELECT nummultirange() &> nummultirange(numrange(1,2)); SELECT nummultirange(numrange(1,2)) &> nummultirange(); SELECT nummultirange(numrange(3,4)) &> numrange(6,7); SELECT nummultirange(numrange(3,4)) &> numrange(1,2); SELECT nummultirange(numrange(3,4)) &> numrange(1,4); SELECT nummultirange(numrange(3,4)) &> numrange(1,6); SELECT nummultirange(numrange(3,4)) &> numrange(3.5,6); SELECT numrange(3,4) &> nummultirange(numrange(6,7)); SELECT numrange(3,4) &> nummultirange(numrange(1,2)); SELECT numrange(3,4) &> nummultirange(numrange(1,4)); SELECT numrange(3,4) &> nummultirange(numrange(1,6)); SELECT numrange(3,4) &> nummultirange(numrange(3.5,6)); SELECT nummultirange(numrange(3,4)) &> nummultirange(numrange(6,7)); SELECT nummultirange(numrange(3,4)) &> nummultirange(numrange(1,2)); SELECT nummultirange(numrange(3,4)) &> nummultirange(numrange(1,4)); SELECT nummultirange(numrange(3,4)) &> nummultirange(numrange(1,6)); SELECT nummultirange(numrange(3,4)) &> nummultirange(numrange(3.5,6)); -- meets SELECT 'empty'::numrange -|- nummultirange(); SELECT 'empty'::numrange -|- nummultirange(numrange(1,2)); SELECT nummultirange() -|- 'empty'::numrange; SELECT nummultirange(numrange(1,2)) -|- 'empty'::numrange; SELECT nummultirange() -|- nummultirange(); SELECT nummultirange(numrange(1,2)) -|- nummultirange(); SELECT nummultirange() -|- nummultirange(numrange(1,2)); SELECT numrange(1,2) -|- nummultirange(numrange(2,4)); SELECT numrange(1,2) -|- nummultirange(numrange(3,4)); SELECT nummultirange(numrange(1,2)) -|- numrange(2,4); SELECT nummultirange(numrange(1,2)) -|- numrange(3,4); SELECT nummultirange(numrange(1,2)) -|- nummultirange(numrange(2,4)); SELECT nummultirange(numrange(1,2)) -|- nummultirange(numrange(3,4)); SELECT nummultirange(numrange(1,2), numrange(5,6)) -|- nummultirange(numrange(3,4)); SELECT nummultirange(numrange(1,2), numrange(5,6)) -|- nummultirange(numrange(6,7)); SELECT nummultirange(numrange(1,2), numrange(5,6)) -|- nummultirange(numrange(8,9)); SELECT nummultirange(numrange(1,2)) -|- nummultirange(numrange(2,4), numrange(6,7)); -- strictly left select 'empty'::numrange << nummultirange(); select numrange(1,2) << nummultirange(); select numrange(1,2) << nummultirange(numrange(3,4)); select numrange(1,2) << nummultirange(numrange(0,4)); select numrange(1,2) << nummultirange(numrange(0,4), numrange(7,8)); select nummultirange() << 'empty'::numrange; select nummultirange() << numrange(1,2); select nummultirange(numrange(3,4)) << numrange(3,6); select nummultirange(numrange(0,2)) << numrange(3,6); select nummultirange(numrange(0,2), numrange(7,8)) << numrange(3,6); select nummultirange(numrange(-4,-2), numrange(0,2)) << numrange(3,6); select nummultirange() << nummultirange(); select nummultirange() << nummultirange(numrange(1,2)); select nummultirange(numrange(1,2)) << nummultirange(); select nummultirange(numrange(1,2)) << nummultirange(numrange(1,2)); select nummultirange(numrange(1,2)) << nummultirange(numrange(3,4)); select nummultirange(numrange(1,2)) << nummultirange(numrange(3,4), numrange(7,8)); select nummultirange(numrange(1,2), numrange(4,5)) << nummultirange(numrange(3,4), numrange(7,8)); -- strictly right select nummultirange() >> 'empty'::numrange; select nummultirange() >> numrange(1,2); select nummultirange(numrange(3,4)) >> numrange(1,2); select nummultirange(numrange(0,4)) >> numrange(1,2); select nummultirange(numrange(0,4), numrange(7,8)) >> numrange(1,2); select 'empty'::numrange >> nummultirange(); select numrange(1,2) >> nummultirange(); select numrange(3,6) >> nummultirange(numrange(3,4)); select numrange(3,6) >> nummultirange(numrange(0,2)); select numrange(3,6) >> nummultirange(numrange(0,2), numrange(7,8)); select numrange(3,6) >> nummultirange(numrange(-4,-2), numrange(0,2)); select nummultirange() >> nummultirange(); select nummultirange(numrange(1,2)) >> nummultirange(); select nummultirange() >> nummultirange(numrange(1,2)); select nummultirange(numrange(1,2)) >> nummultirange(numrange(1,2)); select nummultirange(numrange(3,4)) >> nummultirange(numrange(1,2)); select nummultirange(numrange(3,4), numrange(7,8)) >> nummultirange(numrange(1,2)); select nummultirange(numrange(3,4), numrange(7,8)) >> nummultirange(numrange(1,2), numrange(4,5)); -- union SELECT nummultirange() + nummultirange(); SELECT nummultirange() + nummultirange(numrange(1,2)); SELECT nummultirange(numrange(1,2)) + nummultirange(); SELECT nummultirange(numrange(1,2)) + nummultirange(numrange(1,2)); SELECT nummultirange(numrange(1,2)) + nummultirange(numrange(2,4)); SELECT nummultirange(numrange(1,2)) + nummultirange(numrange(3,4)); SELECT nummultirange(numrange(1,2), numrange(4,5)) + nummultirange(numrange(2,4)); SELECT nummultirange(numrange(1,2), numrange(4,5)) + nummultirange(numrange(3,4)); SELECT nummultirange(numrange(1,2), numrange(4,5)) + nummultirange(numrange(0,9)); -- merge SELECT range_merge(nummultirange()); SELECT range_merge(nummultirange(numrange(1,2))); SELECT range_merge(nummultirange(numrange(1,2), numrange(7,8))); -- minus SELECT nummultirange() - nummultirange(); SELECT nummultirange() - nummultirange(numrange(1,2)); SELECT nummultirange(numrange(1,2)) - nummultirange(); SELECT nummultirange(numrange(1,2), numrange(3,4)) - nummultirange(); SELECT nummultirange(numrange(1,2)) - nummultirange(numrange(1,2)); SELECT nummultirange(numrange(1,2)) - nummultirange(numrange(2,4)); SELECT nummultirange(numrange(1,2)) - nummultirange(numrange(3,4)); SELECT nummultirange(numrange(1,4)) - nummultirange(numrange(1,2)); SELECT nummultirange(numrange(1,4)) - nummultirange(numrange(2,3)); SELECT nummultirange(numrange(1,4)) - nummultirange(numrange(0,8)); SELECT nummultirange(numrange(1,4)) - nummultirange(numrange(0,2)); SELECT nummultirange(numrange(1,8)) - nummultirange(numrange(0,2), numrange(3,4)); SELECT nummultirange(numrange(1,8)) - nummultirange(numrange(2,3), numrange(5,null)); SELECT nummultirange(numrange(1,2), numrange(4,5)) - nummultirange(numrange(-2,0)); SELECT nummultirange(numrange(1,2), numrange(4,5)) - nummultirange(numrange(2,4)); SELECT nummultirange(numrange(1,2), numrange(4,5)) - nummultirange(numrange(3,5)); SELECT nummultirange(numrange(1,2), numrange(4,5)) - nummultirange(numrange(0,9)); SELECT nummultirange(numrange(1,3), numrange(4,5)) - nummultirange(numrange(2,9)); SELECT nummultirange(numrange(1,2), numrange(4,5)) - nummultirange(numrange(8,9)); SELECT nummultirange(numrange(1,2), numrange(4,5)) - nummultirange(numrange(-2,0), numrange(8,9)); -- intersection SELECT nummultirange() * nummultirange(); SELECT nummultirange() * nummultirange(numrange(1,2)); SELECT nummultirange(numrange(1,2)) * nummultirange(); SELECT '{[1,3)}'::nummultirange * '{[1,5)}'::nummultirange; SELECT '{[1,3)}'::nummultirange * '{[0,5)}'::nummultirange; SELECT '{[1,3)}'::nummultirange * '{[0,2)}'::nummultirange; SELECT '{[1,3)}'::nummultirange * '{[2,5)}'::nummultirange; SELECT '{[1,4)}'::nummultirange * '{[2,3)}'::nummultirange; SELECT '{[1,4)}'::nummultirange * '{[0,2), [3,5)}'::nummultirange; SELECT '{[1,4), [7,10)}'::nummultirange * '{[0,8), [9,12)}'::nummultirange; SELECT '{[1,4), [7,10)}'::nummultirange * '{[9,12)}'::nummultirange; SELECT '{[1,4), [7,10)}'::nummultirange * '{[-5,-4), [5,6), [9,12)}'::nummultirange; SELECT '{[1,4), [7,10)}'::nummultirange * '{[0,2), [3,8), [9,12)}'::nummultirange; SELECT '{[1,4), [7,10)}'::nummultirange * '{[0,2), [3,8), [9,12)}'::nummultirange; -- test GiST index create table test_multirange_gist(mr int4multirange); insert into test_multirange_gist select int4multirange(int4range(g, g+10),int4range(g+20, g+30),int4range(g+40, g+50)) from generate_series(1,2000) g; insert into test_multirange_gist select '{}'::int4multirange from generate_series(1,500) g; insert into test_multirange_gist select int4multirange(int4range(g, g+10000)) from generate_series(1,1000) g; insert into test_multirange_gist select int4multirange(int4range(NULL, g*10, '(]'), int4range(g*10, g*20, '(]')) from generate_series(1,100) g; insert into test_multirange_gist select int4multirange(int4range(g*10, g*20, '(]'), int4range(g*20, NULL, '(]')) from generate_series(1,100) g; create index test_mulrirange_gist_idx on test_multirange_gist using gist (mr); -- test statistics and selectivity estimation as well -- -- We don't check the accuracy of selectivity estimation, but at least check -- it doesn't fall. analyze test_multirange_gist; -- first, verify non-indexed results SET enable_seqscan = t; SET enable_indexscan = f; SET enable_bitmapscan = f; select count(*) from test_multirange_gist where mr = '{}'::int4multirange; select count(*) from test_multirange_gist where mr @> 'empty'::int4range; select count(*) from test_multirange_gist where mr && 'empty'::int4range; select count(*) from test_multirange_gist where mr <@ 'empty'::int4range; select count(*) from test_multirange_gist where mr << 'empty'::int4range; select count(*) from test_multirange_gist where mr >> 'empty'::int4range; select count(*) from test_multirange_gist where mr &< 'empty'::int4range; select count(*) from test_multirange_gist where mr &> 'empty'::int4range; select count(*) from test_multirange_gist where mr -|- 'empty'::int4range; select count(*) from test_multirange_gist where mr @> '{}'::int4multirange; select count(*) from test_multirange_gist where mr @> '{}'::int4multirange; select count(*) from test_multirange_gist where mr && '{}'::int4multirange; select count(*) from test_multirange_gist where mr <@ '{}'::int4multirange; select count(*) from test_multirange_gist where mr << '{}'::int4multirange; select count(*) from test_multirange_gist where mr >> '{}'::int4multirange; select count(*) from test_multirange_gist where mr &< '{}'::int4multirange; select count(*) from test_multirange_gist where mr &> '{}'::int4multirange; select count(*) from test_multirange_gist where mr -|- '{}'::int4multirange; select count(*) from test_multirange_gist where mr = int4multirange(int4range(10,20), int4range(30,40), int4range(50,60)); select count(*) from test_multirange_gist where mr @> 10; select count(*) from test_multirange_gist where mr @> int4range(10,20); select count(*) from test_multirange_gist where mr && int4range(10,20); select count(*) from test_multirange_gist where mr <@ int4range(10,50); select count(*) from test_multirange_gist where mr << int4range(100,500); select count(*) from test_multirange_gist where mr >> int4range(100,500); select count(*) from test_multirange_gist where mr &< int4range(100,500); select count(*) from test_multirange_gist where mr &> int4range(100,500); select count(*) from test_multirange_gist where mr -|- int4range(100,500); select count(*) from test_multirange_gist where mr @> '{}'::int4multirange; select count(*) from test_multirange_gist where mr @> int4multirange(int4range(10,20), int4range(30,40)); select count(*) from test_multirange_gist where mr && '{(10,20),(30,40),(50,60)}'::int4multirange; select count(*) from test_multirange_gist where mr <@ '{(10,30),(40,60),(70,90)}'::int4multirange; select count(*) from test_multirange_gist where mr << int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_multirange_gist where mr >> int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_multirange_gist where mr &< int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_multirange_gist where mr &> int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_multirange_gist where mr -|- int4multirange(int4range(100,200), int4range(400,500)); -- now check same queries using index SET enable_seqscan = f; SET enable_indexscan = t; SET enable_bitmapscan = f; select count(*) from test_multirange_gist where mr = '{}'::int4multirange; select count(*) from test_multirange_gist where mr @> 'empty'::int4range; select count(*) from test_multirange_gist where mr && 'empty'::int4range; select count(*) from test_multirange_gist where mr <@ 'empty'::int4range; select count(*) from test_multirange_gist where mr << 'empty'::int4range; select count(*) from test_multirange_gist where mr >> 'empty'::int4range; select count(*) from test_multirange_gist where mr &< 'empty'::int4range; select count(*) from test_multirange_gist where mr &> 'empty'::int4range; select count(*) from test_multirange_gist where mr -|- 'empty'::int4range; select count(*) from test_multirange_gist where mr @> '{}'::int4multirange; select count(*) from test_multirange_gist where mr @> '{}'::int4multirange; select count(*) from test_multirange_gist where mr && '{}'::int4multirange; select count(*) from test_multirange_gist where mr <@ '{}'::int4multirange; select count(*) from test_multirange_gist where mr << '{}'::int4multirange; select count(*) from test_multirange_gist where mr >> '{}'::int4multirange; select count(*) from test_multirange_gist where mr &< '{}'::int4multirange; select count(*) from test_multirange_gist where mr &> '{}'::int4multirange; select count(*) from test_multirange_gist where mr -|- '{}'::int4multirange; select count(*) from test_multirange_gist where mr @> 'empty'::int4range; select count(*) from test_multirange_gist where mr = int4multirange(int4range(10,20), int4range(30,40), int4range(50,60)); select count(*) from test_multirange_gist where mr @> 10; select count(*) from test_multirange_gist where mr @> int4range(10,20); select count(*) from test_multirange_gist where mr && int4range(10,20); select count(*) from test_multirange_gist where mr <@ int4range(10,50); select count(*) from test_multirange_gist where mr << int4range(100,500); select count(*) from test_multirange_gist where mr >> int4range(100,500); select count(*) from test_multirange_gist where mr &< int4range(100,500); select count(*) from test_multirange_gist where mr &> int4range(100,500); select count(*) from test_multirange_gist where mr -|- int4range(100,500); select count(*) from test_multirange_gist where mr @> '{}'::int4multirange; select count(*) from test_multirange_gist where mr @> int4multirange(int4range(10,20), int4range(30,40)); select count(*) from test_multirange_gist where mr && '{(10,20),(30,40),(50,60)}'::int4multirange; select count(*) from test_multirange_gist where mr <@ '{(10,30),(40,60),(70,90)}'::int4multirange; select count(*) from test_multirange_gist where mr << int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_multirange_gist where mr >> int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_multirange_gist where mr &< int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_multirange_gist where mr &> int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_multirange_gist where mr -|- int4multirange(int4range(100,200), int4range(400,500)); drop table test_multirange_gist; -- -- range_agg function -- create table reservations ( room_id integer not null, booked_during daterange ); insert into reservations values -- 1: has a meets and a gap (1, daterange('2018-07-01', '2018-07-07')), (1, daterange('2018-07-07', '2018-07-14')), (1, daterange('2018-07-20', '2018-07-22')), -- 2: just a single row (2, daterange('2018-07-01', '2018-07-03')), -- 3: one null range (3, NULL), -- 4: two null ranges (4, NULL), (4, NULL), -- 5: a null range and a non-null range (5, NULL), (5, daterange('2018-07-01', '2018-07-03')), -- 6: has overlap (6, daterange('2018-07-01', '2018-07-07')), (6, daterange('2018-07-05', '2018-07-10')), -- 7: two ranges that meet: no gap or overlap (7, daterange('2018-07-01', '2018-07-07')), (7, daterange('2018-07-07', '2018-07-14')), -- 8: an empty range (8, 'empty'::daterange) ; SELECT room_id, range_agg(booked_during) FROM reservations GROUP BY room_id ORDER BY room_id; -- range_agg on a custom range type too SELECT range_agg(r) FROM (VALUES ('[a,c]'::textrange), ('[b,b]'::textrange), ('[c,f]'::textrange), ('[g,h)'::textrange), ('[h,j)'::textrange) ) t(r); -- range_agg with multirange inputs select range_agg(nmr) from nummultirange_test; select range_agg(nmr) from nummultirange_test where false; select range_agg(null::nummultirange) from nummultirange_test; select range_agg(nmr) from (values ('{}'::nummultirange)) t(nmr); select range_agg(nmr) from (values ('{}'::nummultirange), ('{}'::nummultirange)) t(nmr); select range_agg(nmr) from (values ('{[1,2]}'::nummultirange)) t(nmr); select range_agg(nmr) from (values ('{[1,2], [5,6]}'::nummultirange)) t(nmr); select range_agg(nmr) from (values ('{[1,2], [2,3]}'::nummultirange)) t(nmr); select range_agg(nmr) from (values ('{[1,2]}'::nummultirange), ('{[5,6]}'::nummultirange)) t(nmr); select range_agg(nmr) from (values ('{[1,2]}'::nummultirange), ('{[2,3]}'::nummultirange)) t(nmr); -- -- range_intersect_agg function -- select range_intersect_agg(nmr) from nummultirange_test; select range_intersect_agg(nmr) from nummultirange_test where false; select range_intersect_agg(null::nummultirange) from nummultirange_test; select range_intersect_agg(nmr) from (values ('{[1,3]}'::nummultirange), ('{[6,12]}'::nummultirange)) t(nmr); select range_intersect_agg(nmr) from (values ('{[1,6]}'::nummultirange), ('{[3,12]}'::nummultirange)) t(nmr); select range_intersect_agg(nmr) from (values ('{[1,6], [10,12]}'::nummultirange), ('{[4,14]}'::nummultirange)) t(nmr); -- test with just one input: select range_intersect_agg(nmr) from (values ('{}'::nummultirange)) t(nmr); select range_intersect_agg(nmr) from (values ('{[1,2]}'::nummultirange)) t(nmr); select range_intersect_agg(nmr) from (values ('{[1,6], [10,12]}'::nummultirange)) t(nmr); select range_intersect_agg(nmr) from nummultirange_test where nmr @> 4.0; create table nummultirange_test2(nmr nummultirange); create index nummultirange_test2_hash_idx on nummultirange_test2 using hash (nmr); INSERT INTO nummultirange_test2 VALUES('{[, 5)}'); INSERT INTO nummultirange_test2 VALUES(nummultirange(numrange(1.1, 2.2))); INSERT INTO nummultirange_test2 VALUES(nummultirange(numrange(1.1, 2.2))); INSERT INTO nummultirange_test2 VALUES(nummultirange(numrange(1.1, 2.2,'()'))); INSERT INTO nummultirange_test2 VALUES('{}'); select * from nummultirange_test2 where nmr = '{}'; select * from nummultirange_test2 where nmr = nummultirange(numrange(1.1, 2.2)); select * from nummultirange_test2 where nmr = nummultirange(numrange(1.1, 2.3)); set enable_nestloop=t; set enable_hashjoin=f; set enable_mergejoin=f; select * from nummultirange_test natural join nummultirange_test2 order by nmr; set enable_nestloop=f; set enable_hashjoin=t; set enable_mergejoin=f; select * from nummultirange_test natural join nummultirange_test2 order by nmr; set enable_nestloop=f; set enable_hashjoin=f; set enable_mergejoin=t; select * from nummultirange_test natural join nummultirange_test2 order by nmr; set enable_nestloop to default; set enable_hashjoin to default; set enable_mergejoin to default; DROP TABLE nummultirange_test2; -- -- Test user-defined multirange of floats -- select '{[123.001, 5.e9)}'::float8multirange @> 888.882::float8; create table float8multirange_test(f8mr float8multirange, i int); insert into float8multirange_test values(float8multirange(float8range(-100.00007, '1.111113e9')), 42); select * from float8multirange_test; drop table float8multirange_test; -- -- Test multirange types over domains -- create domain mydomain as int4; create type mydomainrange as range(subtype=mydomain); select '{[4,50)}'::mydomainmultirange @> 7::mydomain; drop domain mydomain cascade; -- -- Test domains over multirange types -- create domain restrictedmultirange as int4multirange check (upper(value) < 10); select '{[4,5)}'::restrictedmultirange @> 7; select '{[4,50)}'::restrictedmultirange @> 7; -- should fail drop domain restrictedmultirange; --- -- Check automatic naming of multiranges --- create type intr as range(subtype=int); select intr_multirange(intr(1,10)); drop type intr; create type intmultirange as (x int, y int); create type intrange as range(subtype=int); -- should fail drop type intmultirange; create type intr_multirange as (x int, y int); create type intr as range(subtype=int); -- should fail drop type intr_multirange; -- -- Test multiple multirange types over the same subtype and manual naming of -- the multirange type. -- -- should fail create type textrange1 as range(subtype=text, multirange_type_name=int, collation="C"); -- should pass create type textrange1 as range(subtype=text, multirange_type_name=multirange_of_text, collation="C"); -- should pass, because existing _textrange1 is automatically renamed create type textrange2 as range(subtype=text, multirange_type_name=_textrange1, collation="C"); select multirange_of_text(textrange2('a','Z')); -- should fail select multirange_of_text(textrange1('a','Z')) @> 'b'::text; select unnest(multirange_of_text(textrange1('a','b'), textrange1('d','e'))); select _textrange1(textrange2('a','z')) @> 'b'::text; drop type textrange1; drop type textrange2; -- -- Multiranges don't have their own ownership or permissions. -- create type textrange1 as range(subtype=text, multirange_type_name=multitextrange1, collation="C"); create role regress_multirange_owner; alter type multitextrange1 owner to regress_multirange_owner; -- fail alter type textrange1 owner to regress_multirange_owner; set role regress_multirange_owner; revoke usage on type multitextrange1 from public; -- fail revoke usage on type textrange1 from public; \dT+ *textrange1* create temp table test1(f1 multitextrange1[]); revoke usage on type textrange1 from regress_multirange_owner; create temp table test2(f1 multitextrange1[]); -- fail drop table test1; drop type textrange1; reset role; drop role regress_multirange_owner; -- -- Test polymorphic type system -- create function anyarray_anymultirange_func(a anyarray, r anymultirange) returns anyelement as 'select $1[1] + lower($2);' language sql; select anyarray_anymultirange_func(ARRAY[1,2], int4multirange(int4range(10,20))); -- should fail select anyarray_anymultirange_func(ARRAY[1,2], nummultirange(numrange(10,20))); drop function anyarray_anymultirange_func(anyarray, anymultirange); -- should fail create function bogus_func(anyelement) returns anymultirange as 'select int4multirange(int4range(1,10))' language sql; -- should fail create function bogus_func(int) returns anymultirange as 'select int4multirange(int4range(1,10))' language sql; create function range_add_bounds(anymultirange) returns anyelement as 'select lower($1) + upper($1)' language sql; select range_add_bounds(int4multirange(int4range(1, 17))); select range_add_bounds(nummultirange(numrange(1.0001, 123.123))); create function multirangetypes_sql(q anymultirange, b anyarray, out c anyelement) as $$ select upper($1) + $2[1] $$ language sql; select multirangetypes_sql(int4multirange(int4range(1,10)), ARRAY[2,20]); select multirangetypes_sql(nummultirange(numrange(1,10)), ARRAY[2,20]); -- match failure create function anycompatiblearray_anycompatiblemultirange_func(a anycompatiblearray, mr anycompatiblemultirange) returns anycompatible as 'select $1[1] + lower($2);' language sql; select anycompatiblearray_anycompatiblemultirange_func(ARRAY[1,2], multirange(int4range(10,20))); select anycompatiblearray_anycompatiblemultirange_func(ARRAY[1,2], multirange(numrange(10,20))); -- should fail select anycompatiblearray_anycompatiblemultirange_func(ARRAY[1.1,2], multirange(int4range(10,20))); drop function anycompatiblearray_anycompatiblemultirange_func(anycompatiblearray, anycompatiblemultirange); create function anycompatiblerange_anycompatiblemultirange_func(r anycompatiblerange, mr anycompatiblemultirange) returns anycompatible as 'select lower($1) + lower($2);' language sql; select anycompatiblerange_anycompatiblemultirange_func(int4range(1,2), multirange(int4range(10,20))); -- should fail select anycompatiblerange_anycompatiblemultirange_func(numrange(1,2), multirange(int4range(10,20))); drop function anycompatiblerange_anycompatiblemultirange_func(anycompatiblerange, anycompatiblemultirange); -- should fail create function bogus_func(anycompatible) returns anycompatiblerange as 'select int4range(1,10)' language sql; -- -- Arrays of multiranges -- select ARRAY[nummultirange(numrange(1.1, 1.2)), nummultirange(numrange(12.3, 155.5))]; create table i8mr_array (f1 int, f2 int8multirange[]); insert into i8mr_array values (42, array[int8multirange(int8range(1,10)), int8multirange(int8range(2,20))]); select * from i8mr_array; drop table i8mr_array; -- -- Multiranges of arrays -- select arraymultirange(arrayrange(ARRAY[1,2], ARRAY[2,1])); select arraymultirange(arrayrange(ARRAY[2,1], ARRAY[1,2])); -- fail select array[1,1] <@ arraymultirange(arrayrange(array[1,2], array[2,1])); select array[1,3] <@ arraymultirange(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 debug_parallel_query on, this exercises tqueue.c's range remapping select *, row_to_json(upper(t)) as u from (values (two_ints_multirange(two_ints_range(row(1,2), row(3,4)))), (two_ints_multirange(two_ints_range(row(5,6), row(7,8))))) v(t); drop type two_ints cascade; -- -- Check behavior when subtype lacks a hash function -- set enable_sort = off; -- try to make it pick a hash setop implementation select '{(01,10)}'::varbitmultirange except select '{(10,11)}'::varbitmultirange; reset enable_sort; -- -- OUT/INOUT/TABLE functions -- -- infer anymultirange from anymultirange create function mr_outparam_succeed(i anymultirange, out r anymultirange, out t text) as $$ select $1, 'foo'::text $$ language sql; select * from mr_outparam_succeed(int4multirange(int4range(1,2))); -- infer anyarray from anymultirange create function mr_outparam_succeed2(i anymultirange, out r anyarray, out t text) as $$ select ARRAY[upper($1)], 'foo'::text $$ language sql; select * from mr_outparam_succeed2(int4multirange(int4range(1,2))); -- infer anyrange from anymultirange create function mr_outparam_succeed3(i anymultirange, out r anyrange, out t text) as $$ select range_merge($1), 'foo'::text $$ language sql; select * from mr_outparam_succeed3(int4multirange(int4range(1,2))); -- infer anymultirange from anyrange create function mr_outparam_succeed4(i anyrange, out r anymultirange, out t text) as $$ select multirange($1), 'foo'::text $$ language sql; select * from mr_outparam_succeed4(int4range(1,2)); -- infer anyelement from anymultirange create function mr_inoutparam_succeed(out i anyelement, inout r anymultirange) as $$ select upper($1), $1 $$ language sql; select * from mr_inoutparam_succeed(int4multirange(int4range(1,2))); -- infer anyelement+anymultirange from anyelement+anymultirange create function mr_table_succeed(i anyelement, r anymultirange) returns table(i anyelement, r anymultirange) as $$ select $1, $2 $$ language sql; select * from mr_table_succeed(123, int4multirange(int4range(1,11))); -- use anymultirange in plpgsql create function mr_polymorphic(i anyrange) returns anymultirange as $$ begin return multirange($1); end; $$ language plpgsql; select mr_polymorphic(int4range(1, 4)); -- should fail create function mr_outparam_fail(i anyelement, out r anymultirange, out t text) as $$ select '[1,10]', 'foo' $$ language sql; --should fail create function mr_inoutparam_fail(inout i anyelement, out r anymultirange) as $$ select $1, '[1,10]' $$ language sql; --should fail create function mr_table_fail(i anyelement) returns table(i anyelement, r anymultirange) as $$ select $1, '[1,10]' $$ language sql; libpg_query-17-6.1.0/test/sql/postgres_regress/mvcc.sql000066400000000000000000000035371477334012600231330ustar00rootroot00000000000000-- -- Verify that index scans encountering dead rows produced by an -- aborted subtransaction of the current transaction can utilize the -- kill_prior_tuple optimization -- -- NB: The table size is currently *not* expected to stay the same, we -- don't have logic to trigger opportunistic pruning in cases like -- this. BEGIN; SET LOCAL enable_seqscan = false; SET LOCAL enable_indexonlyscan = false; SET LOCAL enable_bitmapscan = false; -- Can't easily use a unique index, since dead tuples can be found -- independent of the kill_prior_tuples optimization. CREATE TABLE clean_aborted_self(key int, data text); CREATE INDEX clean_aborted_self_key ON clean_aborted_self(key); INSERT INTO clean_aborted_self (key, data) VALUES (-1, 'just to allocate metapage'); -- save index size from before the changes, for comparison SELECT pg_relation_size('clean_aborted_self_key') AS clean_aborted_self_key_before \gset DO $$ BEGIN -- iterate often enough to see index growth even on larger-than-default page sizes FOR i IN 1..100 LOOP BEGIN -- perform index scan over all the inserted keys to get them to be seen as dead IF EXISTS(SELECT * FROM clean_aborted_self WHERE key > 0 AND key < 100) THEN RAISE data_corrupted USING MESSAGE = 'these rows should not exist'; END IF; INSERT INTO clean_aborted_self SELECT g.i, 'rolling back in a sec' FROM generate_series(1, 100) g(i); -- just some error that's not normally thrown RAISE reading_sql_data_not_permitted USING MESSAGE = 'round and round again'; EXCEPTION WHEN reading_sql_data_not_permitted THEN END; END LOOP; END;$$; -- show sizes only if they differ SELECT :clean_aborted_self_key_before AS size_before, pg_relation_size('clean_aborted_self_key') size_after WHERE :clean_aborted_self_key_before != pg_relation_size('clean_aborted_self_key'); ROLLBACK; libpg_query-17-6.1.0/test/sql/postgres_regress/name.sql000066400000000000000000000065071477334012600231230ustar00rootroot00000000000000-- -- 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 * FROM NAME_TBL; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 <> '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 < '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 <= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 > '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 >= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 !~ '.*'; SELECT c.f1 FROM NAME_TBL c WHERE c.f1 ~ '[0-9]'; SELECT 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-17-6.1.0/test/sql/postgres_regress/namespace.sql000066400000000000000000000060421477334012600241310ustar00rootroot00000000000000-- -- Regression tests for schemas (namespaces) -- -- set the whitespace-only search_path to test that the -- GUC list syntax is preserved during a schema creation SELECT pg_catalog.set_config('search_path', ' ', false); 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 correct search_path restored on abort SET search_path to public; BEGIN; SET search_path to public, test_ns_schema_1; CREATE SCHEMA test_ns_schema_2 CREATE VIEW abc_view AS SELECT c FROM abc; COMMIT; SHOW search_path; -- verify that the correct search_path preserved -- after creating the schema and on commit BEGIN; SET search_path to public, test_ns_schema_1; CREATE SCHEMA test_ns_schema_2 CREATE VIEW abc_view AS SELECT a FROM abc; SHOW search_path; COMMIT; SHOW search_path; DROP SCHEMA test_ns_schema_2 CASCADE; -- 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'); -- -- Verify that search_path is set to a safe value during maintenance -- commands. -- CREATE SCHEMA test_maint_search_path; SET search_path = test_maint_search_path; CREATE FUNCTION fn(INT) RETURNS INT IMMUTABLE LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'current search_path: %', current_setting('search_path'); RETURN $1; END; $$; CREATE TABLE test_maint(i INT); INSERT INTO test_maint VALUES (1), (2); CREATE MATERIALIZED VIEW test_maint_mv AS SELECT fn(i) FROM test_maint; -- the following commands should see search_path as pg_catalog, pg_temp CREATE INDEX test_maint_idx ON test_maint_search_path.test_maint (fn(i)); REINDEX TABLE test_maint_search_path.test_maint; ANALYZE test_maint_search_path.test_maint; VACUUM FULL test_maint_search_path.test_maint; CLUSTER test_maint_search_path.test_maint USING test_maint_idx; REFRESH MATERIALIZED VIEW test_maint_search_path.test_maint_mv; RESET search_path; DROP SCHEMA test_maint_search_path CASCADE; libpg_query-17-6.1.0/test/sql/postgres_regress/numeric.sql000066400000000000000000001721151477334012600236440ustar00rootroot00000000000000-- -- 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; -- ****************************** -- * Check behavior with Inf and NaN inputs. It's easiest to handle these -- * separately from the num_data framework used above, because some input -- * combinations will throw errors. -- ****************************** WITH v(x) AS (VALUES('0'::numeric),('1'),('-1'),('4.2'),('inf'),('-inf'),('nan')) SELECT x1, x2, x1 + x2 AS sum, x1 - x2 AS diff, x1 * x2 AS prod FROM v AS v1(x1), v AS v2(x2); WITH v(x) AS (VALUES('0'::numeric),('1'),('-1'),('4.2'),('inf'),('-inf'),('nan')) SELECT x1, x2, x1 / x2 AS quot, x1 % x2 AS mod, div(x1, x2) AS div FROM v AS v1(x1), v AS v2(x2) WHERE x2 != 0; SELECT 'inf'::numeric / '0'; SELECT '-inf'::numeric / '0'; SELECT 'nan'::numeric / '0'; SELECT '0'::numeric / '0'; SELECT 'inf'::numeric % '0'; SELECT '-inf'::numeric % '0'; SELECT 'nan'::numeric % '0'; SELECT '0'::numeric % '0'; SELECT div('inf'::numeric, '0'); SELECT div('-inf'::numeric, '0'); SELECT div('nan'::numeric, '0'); SELECT div('0'::numeric, '0'); WITH v(x) AS (VALUES('0'::numeric),('1'),('-1'),('4.2'),('-7.777'),('inf'),('-inf'),('nan')) SELECT x, -x as minusx, abs(x), floor(x), ceil(x), sign(x), numeric_inc(x) as inc FROM v; WITH v(x) AS (VALUES('0'::numeric),('1'),('-1'),('4.2'),('-7.777'),('inf'),('-inf'),('nan')) SELECT x, round(x), round(x,1) as round1, trunc(x), trunc(x,1) as trunc1 FROM v; -- the large values fall into the numeric abbreviation code's maximal classes WITH v(x) AS (VALUES('0'::numeric),('1'),('-1'),('4.2'),('-7.777'),('1e340'),('-1e340'), ('inf'),('-inf'),('nan'), ('inf'),('-inf'),('nan')) SELECT substring(x::text, 1, 32) FROM v ORDER BY x; WITH v(x) AS (VALUES('0'::numeric),('1'),('4.2'),('inf'),('nan')) SELECT x, sqrt(x) FROM v; SELECT sqrt('-1'::numeric); SELECT sqrt('-inf'::numeric); WITH v(x) AS (VALUES('1'::numeric),('4.2'),('inf'),('nan')) SELECT x, log(x), log10(x), ln(x) FROM v; SELECT ln('0'::numeric); SELECT ln('-1'::numeric); SELECT ln('-inf'::numeric); WITH v(x) AS (VALUES('2'::numeric),('4.2'),('inf'),('nan')) SELECT x1, x2, log(x1, x2) FROM v AS v1(x1), v AS v2(x2); SELECT log('0'::numeric, '10'); SELECT log('10'::numeric, '0'); SELECT log('-inf'::numeric, '10'); SELECT log('10'::numeric, '-inf'); SELECT log('inf'::numeric, '0'); SELECT log('inf'::numeric, '-inf'); SELECT log('-inf'::numeric, 'inf'); WITH v(x) AS (VALUES('0'::numeric),('1'),('2'),('4.2'),('inf'),('nan')) SELECT x1, x2, power(x1, x2) FROM v AS v1(x1), v AS v2(x2) WHERE x1 != 0 OR x2 >= 0; SELECT power('0'::numeric, '-1'); SELECT power('0'::numeric, '-inf'); SELECT power('-1'::numeric, 'inf'); SELECT power('-2'::numeric, '3'); SELECT power('-2'::numeric, '3.3'); SELECT power('-2'::numeric, '-1'); SELECT power('-2'::numeric, '-1.5'); SELECT power('-2'::numeric, 'inf'); SELECT power('-2'::numeric, '-inf'); SELECT power('inf'::numeric, '-2'); SELECT power('inf'::numeric, '-inf'); SELECT power('-inf'::numeric, '2'); SELECT power('-inf'::numeric, '3'); SELECT power('-inf'::numeric, '4.5'); SELECT power('-inf'::numeric, '-2'); SELECT power('-inf'::numeric, '-3'); SELECT power('-inf'::numeric, '0'); SELECT power('-inf'::numeric, 'inf'); SELECT power('-inf'::numeric, '-inf'); -- ****************************** -- * 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 MAX(val) FROM num_data; SELECT MIN(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'); INSERT INTO fract_only VALUES (9, 'NaN'); INSERT INTO fract_only VALUES (10, 'Inf'); -- should fail INSERT INTO fract_only VALUES (11, '-Inf'); -- should fail SELECT * FROM fract_only; DROP TABLE fract_only; -- Check conversion to integers SELECT (-9223372036854775808.5)::int8; -- should fail SELECT (-9223372036854775808.4)::int8; -- ok SELECT 9223372036854775807.4::int8; -- ok SELECT 9223372036854775807.5::int8; -- should fail SELECT (-2147483648.5)::int4; -- should fail SELECT (-2147483648.4)::int4; -- ok SELECT 2147483647.4::int4; -- ok SELECT 2147483647.5::int4; -- should fail SELECT (-32768.5)::int2; -- should fail SELECT (-32768.4)::int2; -- ok SELECT 32767.4::int2; -- ok SELECT 32767.5::int2; -- should fail -- Check inf/nan conversion behavior SELECT 'NaN'::float8::numeric; SELECT 'Infinity'::float8::numeric; SELECT '-Infinity'::float8::numeric; SELECT 'NaN'::numeric::float8; SELECT 'Infinity'::numeric::float8; SELECT '-Infinity'::numeric::float8; SELECT 'NaN'::float4::numeric; SELECT 'Infinity'::float4::numeric; SELECT '-Infinity'::float4::numeric; SELECT 'NaN'::numeric::float4; SELECT 'Infinity'::numeric::float4; SELECT '-Infinity'::numeric::float4; SELECT '42'::int2::numeric; SELECT 'NaN'::numeric::int2; SELECT 'Infinity'::numeric::int2; SELECT '-Infinity'::numeric::int2; SELECT 'NaN'::numeric::int4; SELECT 'Infinity'::numeric::int4; SELECT '-Infinity'::numeric::int4; SELECT 'NaN'::numeric::int8; SELECT 'Infinity'::numeric::int8; SELECT '-Infinity'::numeric::int8; -- 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); -- Check limits of rounding before the decimal point SELECT round(4.4e131071, -131071) = 4e131071; SELECT round(4.5e131071, -131071) = 5e131071; SELECT round(4.5e131071, -131072); -- loses all digits SELECT round(5.5e131071, -131072); -- rounds up and overflows SELECT round(5.5e131071, -131073); -- loses all digits SELECT round(5.5e131071, -1000000); -- loses all digits -- Check limits of rounding after the decimal point SELECT round(5e-16383, 1000000) = 5e-16383; SELECT round(5e-16383, 16383) = 5e-16383; SELECT round(5e-16383, 16382) = 1e-16382; SELECT round(5e-16383, 16381) = 0; -- Check limits of trunc() before the decimal point SELECT trunc(9.9e131071, -131071) = 9e131071; SELECT trunc(9.9e131071, -131072); -- loses all digits SELECT trunc(9.9e131071, -131073); -- loses all digits SELECT trunc(9.9e131071, -1000000); -- loses all digits -- Check limits of trunc() after the decimal point SELECT trunc(5e-16383, 1000000) = 5e-16383; SELECT trunc(5e-16383, 16383) = 5e-16383; SELECT trunc(5e-16383, 16382) = 0; -- 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); SELECT width_bucket(2.0, 3.0, '-inf', 888); SELECT width_bucket(0::float8, '-inf', 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; -- Check positive and negative infinity: we require -- finite bucket bounds, but allow an infinite operand SELECT width_bucket(0.0::numeric, 'Infinity'::numeric, 5, 10); -- error SELECT width_bucket(0.0::numeric, 5, '-Infinity'::numeric, 20); -- error SELECT width_bucket('Infinity'::numeric, 1, 10, 10), width_bucket('-Infinity'::numeric, 1, 10, 10); 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; -- Simple test for roundoff error when results should be exact SELECT x, width_bucket(x::float8, 10, 100, 9) as flt, width_bucket(x::numeric, 10, 100, 9) as num FROM generate_series(0, 110, 10) x; SELECT x, width_bucket(x::float8, 100, 10, 9) as flt, width_bucket(x::numeric, 100, 10, 9) as num FROM generate_series(0, 110, 10) x; -- Another roundoff-error hazard SELECT width_bucket(0, -1e100::numeric, 1, 10); SELECT width_bucket(0, -1e100::float8, 1, 10); SELECT width_bucket(1, 1e100::numeric, 0, 10); SELECT width_bucket(1, 1e100::float8, 0, 10); -- Check cases that could trigger overflow or underflow within the calculation SELECT oper, low, high, cnt, width_bucket(oper, low, high, cnt) FROM (SELECT 1.797e+308::float8 AS big, 5e-324::float8 AS tiny) as v, LATERAL (VALUES (10.5::float8, -big, big, 1), (10.5::float8, -big, big, 2), (10.5::float8, -big, big, 3), (big / 4, -big / 2, big / 2, 10), (10.5::float8, big, -big, 1), (10.5::float8, big, -big, 2), (10.5::float8, big, -big, 3), (big / 4, big / 2, -big / 2, 10), (0, 0, tiny, 4), (tiny, 0, tiny, 4), (0, 0, 1, 2147483647), (1, 1, 0, 2147483647) ) as sample(oper, low, high, cnt); -- These fail because the result would be out of int32 range: SELECT width_bucket(1::float8, 0, 1, 2147483647); SELECT width_bucket(0::float8, 1, 0, 2147483647); -- -- TO_CHAR() -- SELECT to_char(val, '9G999G999G999G999G999') FROM num_data; SELECT to_char(val, '9G999G999G999G999G999D999G999G999G999G999') FROM num_data; SELECT to_char(val, '9999999999999999.999999999999999PR') FROM num_data; SELECT to_char(val, '9999999999999999.999999999999999S') FROM num_data; SELECT to_char(val, 'MI9999999999999999.999999999999999') FROM num_data; SELECT to_char(val, 'FMS9999999999999999.999999999999999') FROM num_data; SELECT to_char(val, 'FM9999999999999999.999999999999999THPR') FROM num_data; SELECT to_char(val, 'SG9999999999999999.999999999999999th') FROM num_data; SELECT to_char(val, '0999999999999999.999999999999999') FROM num_data; SELECT to_char(val, 'S0999999999999999.999999999999999') FROM num_data; SELECT to_char(val, 'FM0999999999999999.999999999999999') FROM num_data; SELECT to_char(val, 'FM9999999999999999.099999999999999') FROM num_data; SELECT to_char(val, 'FM9999999999990999.990999999999999') FROM num_data; SELECT to_char(val, 'FM0999999999999999.999909999999999') FROM num_data; SELECT to_char(val, 'FM9999999990999999.099999999999999') FROM num_data; SELECT to_char(val, 'L9999999999999999.099999999999999') FROM num_data; SELECT to_char(val, 'FM9999999999999999.99999999999999') FROM num_data; SELECT 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 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 to_char(val, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM num_data; SELECT to_char(val, '999999SG9999999999') FROM num_data; SELECT to_char(val, 'FM9999999999999999.999999999999999') FROM num_data; SELECT to_char(val, '9.999EEEE') FROM num_data; WITH v(val) AS (VALUES('0'::numeric),('-4.2'),('4.2e9'),('1.2e-5'),('inf'),('-inf'),('nan')) SELECT val, to_char(val, '9.999EEEE') as numeric, to_char(val::float8, '9.999EEEE') as float8, to_char(val::float4, '9.999EEEE') as float4 FROM v; WITH v(exp) AS (VALUES(-16379),(-16378),(-1234),(-789),(-45),(-5),(-4),(-3),(-2),(-1),(0), (1),(2),(3),(4),(5),(38),(275),(2345),(45678),(131070),(131071)) SELECT exp, to_char(('1.2345e'||exp)::numeric, '9.999EEEE') as numeric FROM v; WITH v(val) AS (VALUES('0'::numeric),('-4.2'),('4.2e9'),('1.2e-5'),('inf'),('-inf'),('nan')) SELECT val, to_char(val, 'MI9999999999.99') as numeric, to_char(val::float8, 'MI9999999999.99') as float8, to_char(val::float4, 'MI9999999999.99') as float4 FROM v; WITH v(val) AS (VALUES('0'::numeric),('-4.2'),('4.2e9'),('1.2e-5'),('inf'),('-inf'),('nan')) SELECT val, to_char(val, 'MI99.99') as numeric, to_char(val::float8, 'MI99.99') as float8, to_char(val::float4, 'MI99.99') as float4 FROM v; SELECT to_char('100'::numeric, 'FM999.9'); SELECT to_char('100'::numeric, 'FM999.'); SELECT to_char('100'::numeric, 'FM999'); SELECT to_char('12345678901'::float8, 'FM9999999999D9999900000000000000000'); -- Check parsing of literal text in a format string SELECT to_char('100'::numeric, 'foo999'); SELECT to_char('100'::numeric, 'f\oo999'); SELECT to_char('100'::numeric, 'f\\oo999'); SELECT to_char('100'::numeric, 'f\"oo999'); SELECT to_char('100'::numeric, 'f\\"oo999'); SELECT to_char('100'::numeric, 'f"ool"999'); SELECT to_char('100'::numeric, 'f"\ool"999'); SELECT to_char('100'::numeric, 'f"\\ool"999'); SELECT to_char('100'::numeric, 'f"ool\"999'); SELECT to_char('100'::numeric, 'f"ool\\"999'); -- TO_NUMBER() -- SET lc_numeric = 'C'; SELECT to_number('-34,338,492', '99G999G999'); SELECT to_number('-34,338,492.654,878', '99G999G999D999G999'); SELECT to_number('<564646.654564>', '999999.999999PR'); SELECT to_number('0.00001-', '9.999999S'); SELECT to_number('5.01-', 'FM9.999999S'); SELECT to_number('5.01-', 'FM9.999999MI'); SELECT to_number('5 4 4 4 4 8 . 7 8', '9 9 9 9 9 9 . 9 9'); SELECT to_number('.01', 'FM9.99'); SELECT to_number('.0', '99999999.99999999'); SELECT to_number('0', '99.99'); SELECT to_number('.-01', 'S99.99'); SELECT to_number('.01-', '99.99S'); SELECT to_number(' . 0 1-', ' 9 9 . 9 9 S'); SELECT to_number('34,50','999,99'); SELECT to_number('123,000','999G'); SELECT to_number('123456','999G999'); SELECT to_number('$1234.56','L9,999.99'); SELECT to_number('$1234.56','L99,999.99'); SELECT to_number('$1,234.56','L99,999.99'); SELECT to_number('1234.56','L99,999.99'); SELECT to_number('1,234.56','L99,999.99'); SELECT 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'); INSERT INTO num_input_test(n1) VALUES (' inf '); INSERT INTO num_input_test(n1) VALUES (' +inf '); INSERT INTO num_input_test(n1) VALUES (' -inf '); INSERT INTO num_input_test(n1) VALUES (' Infinity '); INSERT INTO num_input_test(n1) VALUES (' +inFinity '); INSERT INTO num_input_test(n1) VALUES (' -INFINITY '); INSERT INTO num_input_test(n1) VALUES ('12_000_000_000'); INSERT INTO num_input_test(n1) VALUES ('12_000.123_456'); INSERT INTO num_input_test(n1) VALUES ('23_000_000_000e-1_0'); INSERT INTO num_input_test(n1) VALUES ('.000_000_000_123e1_0'); INSERT INTO num_input_test(n1) VALUES ('.000_000_000_123e+1_1'); INSERT INTO num_input_test(n1) VALUES ('0b10001110111100111100001001010'); INSERT INTO num_input_test(n1) VALUES (' -0B_1010_1011_0101_0100_1010_1001_1000_1100_1110_1011_0001_1111_0000_1010_1101_0010 '); INSERT INTO num_input_test(n1) VALUES (' +0o112402761777 '); INSERT INTO num_input_test(n1) VALUES ('-0O0012_5524_5230_6334_3167_0261'); INSERT INTO num_input_test(n1) VALUES ('-0x0000000000000000000000000deadbeef'); INSERT INTO num_input_test(n1) VALUES (' 0X_30b1_F33a_6DF0_bD4E_64DF_9BdA_7D15 '); -- 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 '); INSERT INTO num_input_test(n1) VALUES ('+NaN'); INSERT INTO num_input_test(n1) VALUES ('-NaN'); INSERT INTO num_input_test(n1) VALUES ('+ infinity'); INSERT INTO num_input_test(n1) VALUES ('_123'); INSERT INTO num_input_test(n1) VALUES ('123_'); INSERT INTO num_input_test(n1) VALUES ('12__34'); INSERT INTO num_input_test(n1) VALUES ('123_.456'); INSERT INTO num_input_test(n1) VALUES ('123._456'); INSERT INTO num_input_test(n1) VALUES ('1.2e_34'); INSERT INTO num_input_test(n1) VALUES ('1.2e34_'); INSERT INTO num_input_test(n1) VALUES ('1.2e3__4'); INSERT INTO num_input_test(n1) VALUES ('0b1112'); INSERT INTO num_input_test(n1) VALUES ('0c1112'); INSERT INTO num_input_test(n1) VALUES ('0o12345678'); INSERT INTO num_input_test(n1) VALUES ('0x1eg'); INSERT INTO num_input_test(n1) VALUES ('0x12.34'); INSERT INTO num_input_test(n1) VALUES ('0x__1234'); INSERT INTO num_input_test(n1) VALUES ('0x1234_'); INSERT INTO num_input_test(n1) VALUES ('0x12__34'); SELECT * FROM num_input_test; -- Also try it with non-error-throwing API SELECT pg_input_is_valid('34.5', 'numeric'); SELECT pg_input_is_valid('34xyz', 'numeric'); SELECT pg_input_is_valid('1e400000', 'numeric'); SELECT * FROM pg_input_error_info('1e400000', 'numeric'); SELECT pg_input_is_valid('1234.567', 'numeric(8,4)'); SELECT pg_input_is_valid('1234.567', 'numeric(7,4)'); SELECT * FROM pg_input_error_info('1234.567', 'numeric(7,4)'); SELECT * FROM pg_input_error_info('0x1234.567', 'numeric'); -- -- Test precision and scale typemods -- CREATE TABLE num_typemod_test ( millions numeric(3, -6), thousands numeric(3, -3), units numeric(3, 0), thousandths numeric(3, 3), millionths numeric(3, 6) ); \d num_typemod_test -- rounding of valid inputs INSERT INTO num_typemod_test VALUES (123456, 123, 0.123, 0.000123, 0.000000123); INSERT INTO num_typemod_test VALUES (654321, 654, 0.654, 0.000654, 0.000000654); INSERT INTO num_typemod_test VALUES (2345678, 2345, 2.345, 0.002345, 0.000002345); INSERT INTO num_typemod_test VALUES (7654321, 7654, 7.654, 0.007654, 0.000007654); INSERT INTO num_typemod_test VALUES (12345678, 12345, 12.345, 0.012345, 0.000012345); INSERT INTO num_typemod_test VALUES (87654321, 87654, 87.654, 0.087654, 0.000087654); INSERT INTO num_typemod_test VALUES (123456789, 123456, 123.456, 0.123456, 0.000123456); INSERT INTO num_typemod_test VALUES (987654321, 987654, 987.654, 0.987654, 0.000987654); INSERT INTO num_typemod_test VALUES ('NaN', 'NaN', 'NaN', 'NaN', 'NaN'); SELECT scale(millions), * FROM num_typemod_test ORDER BY millions; -- invalid inputs INSERT INTO num_typemod_test (millions) VALUES ('inf'); INSERT INTO num_typemod_test (millions) VALUES (999500000); INSERT INTO num_typemod_test (thousands) VALUES (999500); INSERT INTO num_typemod_test (units) VALUES (999.5); INSERT INTO num_typemod_test (thousandths) VALUES (0.9995); INSERT INTO num_typemod_test (millionths) VALUES (0.0009995); -- -- Test some corner cases for multiplication -- select 4790999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999; select 4789999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999; select 4770999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999; select 4769999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999; select trim_scale((0.1 - 2e-16383) * (0.1 - 3e-16383)); -- -- 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.0000000000000000; select 3.789 ^ 35.0000000000000000; select 1.2 ^ 345; select 0.12 ^ (-20); select 1.000000000123 ^ (-2147483648); select coalesce(nullif(0.9999999999 ^ 23300000000000, 0), 0) as rounds_to_zero; select round(((1 - 1.500012345678e-1000) ^ 1.45e1003) * 1e1000); -- cases that used to error out select 0.12 ^ (-25); select 0.5678 ^ (-85); select coalesce(nullif(0.9999999999 ^ 70000000000000, 0), 0) as underflows; -- negative base to integer powers select (-1.0) ^ 2147483646; select (-1.0) ^ 2147483647; select (-1.0) ^ 2147483648; select (-1.0) ^ 1000000000000000; select (-1.0) ^ 1000000000000001; -- integer powers of 10 select n, 10.0 ^ n as "10^n", (10.0 ^ n) * (10.0 ^ (-n)) = 1 as ok from generate_series(-20, 20) n; -- -- 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)); select exp('nan'::numeric); select exp('inf'::numeric); select exp('-inf'::numeric); select coalesce(nullif(exp(-5000::numeric), 0), 0) as rounds_to_zero; select coalesce(nullif(exp(-10000::numeric), 0), 0) as underflows; -- 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); select * from generate_series('inf'::numeric, 'inf'::numeric, 10::numeric); select * from generate_series(0::numeric, 'inf'::numeric, 10::numeric); select * from generate_series(0::numeric, '42'::numeric, '-inf'::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(numeric 'inf'); 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(numeric 'inf') 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(numeric 'inf'); 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 VARIANCE() -- CREATE TABLE num_variance (a numeric); INSERT INTO num_variance VALUES (0); INSERT INTO num_variance VALUES (3e-500); INSERT INTO num_variance VALUES (-3e-500); INSERT INTO num_variance VALUES (4e-500 - 1e-16383); INSERT INTO num_variance VALUES (-4e-500 + 1e-16383); -- variance is just under 12.5e-1000 and so should round down to 12e-1000 SELECT trim_scale(variance(a) * 1e1000) FROM num_variance; -- check that parallel execution produces the same result BEGIN; ALTER TABLE num_variance SET (parallel_workers = 4); SET LOCAL parallel_setup_cost = 0; SET LOCAL max_parallel_workers_per_gather = 4; SELECT trim_scale(variance(a) * 1e1000) FROM num_variance; ROLLBACK; -- case where sum of squares would overflow but variance does not DELETE FROM num_variance; INSERT INTO num_variance SELECT 9e131071 + x FROM generate_series(1, 5) x; SELECT variance(a) FROM num_variance; -- check that parallel execution produces the same result BEGIN; ALTER TABLE num_variance SET (parallel_workers = 4); SET LOCAL parallel_setup_cost = 0; SET LOCAL max_parallel_workers_per_gather = 4; SELECT variance(a) FROM num_variance; ROLLBACK; DROP TABLE num_variance; -- -- 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), ('inf', '0'), ('inf', '42'), ('inf', 'inf') ) 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), ('inf', '0'), ('inf', '42'), ('inf', 'inf') ) AS v(a, b); SELECT lcm(9999 * (10::numeric)^131068 + (10::numeric^131068 - 1), 2); -- overflow -- -- Tests for factorial -- SELECT factorial(4); SELECT factorial(15); SELECT factorial(100000); SELECT factorial(0); SELECT factorial(-4); -- -- Tests for pg_lsn() -- SELECT pg_lsn(23783416::numeric); SELECT pg_lsn(0::numeric); SELECT pg_lsn(18446744073709551615::numeric); SELECT pg_lsn(-1::numeric); SELECT pg_lsn(18446744073709551616::numeric); SELECT pg_lsn('NaN'::numeric); libpg_query-17-6.1.0/test/sql/postgres_regress/numeric_big.sql000066400000000000000000011237161477334012600244710ustar00rootroot00000000000000-- ****************************** -- * 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.785913), (0.084738, -19, 232548755422013710215.445941), (0.084738, -18, 19705716436950597776.236458), (0.084738, -17, 1669822999434319754.362725), (0.084738, -16, 141497461326065387.345189), (0.084738, -15, 11990211877848128.792857), (0.084738, -14, 1016026574105094.737649), (0.084738, -13, 86096059836517.517879), (0.084738, -12, 7295607918426.821430), (0.084738, -11, 618215223791.651994), (0.084738, -10, 52386321633.657007), (0.084738, -9, 4439112122.5928274), (0.084738, -8, 376161483.04427101), (0.084738, -7, 31875171.750205437), (0.084738, -6, 2701038.3037689083), (0.084738, -5, 228880.58378476975), (0.084738, -4, 19394.882908753819), (0.084738, -3, 1643.4835879219811), (0.084738, -2, 139.26551227333284), (0.084738, -1, 11.801080979017678), (0.084738, 0, 1), (0.084738, 1, .084738), (0.084738, 2, .007180528644), (0.084738, 3, .000608463636235272), (0.084738, 4, .00005155999160730448), (0.084738, 5, .000004369090568819767), (0.084738, 6, .0000003702279966206494), (0.084738, 7, .00000003137237997764059), (0.084738, 8, .000000002658432734545308), (0.084738, 9, .0000000002252702730599003), (0.084738, 10, .00000000001908895239854983), (0.084738, 11, .000000000001617559648348316), (0.084738, 12, .0000000000001370687694817396), (0.084738, 13, .00000000000001161493338834365), (0.084738, 14, .0000000000000009842262254614642), (0.084738, 15, .00000000000000008340136189315355), (0.084738, 16, .000000000000000007067264604102046), (0.084738, 17, .0000000000000000005988658680223991), (0.084738, 18, .00000000000000000005074669592448206), (0.084738, 19, .000000000000000000004300173519248761), (0.084738, 20, .0000000000000000000003643881036741015)) 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, .00000000000000000000000000000002787363175065101), (37.821637, -19, .000000000000000000000000000001054226381944797), (37.821637, -18, .00000000000000000000000000003987256753373947), (37.821637, -17, .000000000000000000000000001508045775519079), (37.821637, -16, .00000000000000000000000005703675990106610), (37.821637, -15, .000000000000000000000002157223628634278), (37.821637, -14, .00000000000000000000008158972901002847), (37.821637, -13, .000000000000000000003085857113545666), (37.821637, -12, .0000000000000000001167121675823920), (37.821637, -11, .000000000000000004414245235784397), (37.821637, -10, .0000000000000001669539809368169), (37.821637, -9, .000000000000006314472862697207), (37.821637, -8, .0000000000002388237004592846), (37.821637, -7, .000000000009032703305767796), (37.821637, -6, .0000000003416316255594496), (37.821637, -5, .00000001292106732962942), (37.821637, -4, .0000004886959181938034), (37.821637, -3, .00001848327962130773), (37.821637, -2, .0006990678924065984), (37.821637, -1, .02643989206495742), (37.821637, 0, 1), (37.821637, 1, 37.821637), (37.821637, 2, 1430.476225359769), (37.821637, 3, 54102.952532687378), (37.821637, 4, 2046262.2313195326), (37.821637, 5, 77392987.319777394), (37.821637, 6, 2927129472.7542235), (37.821637, 7, 110708828370.511632), (37.821637, 8, 4187189119324.792454), (37.821637, 9, 158366346921451.985294), (37.821637, 10, 5989674486279224.500736), (37.821637, 11, 226539294168214309.708325), (37.821637, 12, 8568086950266418559.993831), (37.821637, 13, 324059074417413536066.149409), (37.821637, 14, 12256444679171401239980.310926), (37.821637, 15, 463558801566202198479885.206986), (37.821637, 16, 17532552720991931019508170.100286), (37.821637, 17, 663109844696719094948877928.067252), (37.821637, 18, 25079899837245684700124994552.671731), (37.821637, 19, 948562867640665366544581398598.127577), (37.821637, 20, 35876200451584291931921101974730.690104)) 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-17-6.1.0/test/sql/postgres_regress/numerology.sql000066400000000000000000000073711477334012600244030ustar00rootroot00000000000000-- -- NUMEROLOGY -- Test various combinations of numeric types and functions. -- -- -- numeric literals -- SELECT 0b100101; SELECT 0o273; SELECT 0x42F; -- cases near int4 overflow SELECT 0b1111111111111111111111111111111; SELECT 0b10000000000000000000000000000000; SELECT 0o17777777777; SELECT 0o20000000000; SELECT 0x7FFFFFFF; SELECT 0x80000000; SELECT -0b10000000000000000000000000000000; SELECT -0b10000000000000000000000000000001; SELECT -0o20000000000; SELECT -0o20000000001; SELECT -0x80000000; SELECT -0x80000001; -- cases near int8 overflow SELECT 0b111111111111111111111111111111111111111111111111111111111111111; SELECT 0b1000000000000000000000000000000000000000000000000000000000000000; SELECT 0o777777777777777777777; SELECT 0o1000000000000000000000; SELECT 0x7FFFFFFFFFFFFFFF; SELECT 0x8000000000000000; SELECT -0b1000000000000000000000000000000000000000000000000000000000000000; SELECT -0b1000000000000000000000000000000000000000000000000000000000000001; SELECT -0o1000000000000000000000; SELECT -0o1000000000000000000001; SELECT -0x8000000000000000; SELECT -0x8000000000000001; -- error cases SELECT 123abc; SELECT 0x0o; SELECT 0.a; SELECT 0.0a; SELECT .0a; SELECT 0.0e1a; SELECT 0.0e; SELECT 0.0e+a; PREPARE p1 AS SELECT $1a; SELECT 0b; SELECT 1b; SELECT 0b0x; SELECT 0o; SELECT 1o; SELECT 0o0x; SELECT 0x; SELECT 1x; SELECT 0x0y; -- underscores SELECT 1_000_000; SELECT 1_2_3; SELECT 0x1EEE_FFFF; SELECT 0o2_73; SELECT 0b_10_0101; SELECT 1_000.000_005; SELECT 1_000.; SELECT .000_005; SELECT 1_000.5e0_1; DO $$ DECLARE i int; BEGIN FOR i IN 1_001..1_003 LOOP RAISE NOTICE 'i = %', i; END LOOP; END $$; -- error cases SELECT _100; SELECT 100_; SELECT 100__000; SELECT _1_000.5; SELECT 1_000_.5; SELECT 1_000._5; SELECT 1_000.5_; SELECT 1_000.5e_1; PREPARE p1 AS SELECT $0_1; -- -- 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 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 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 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-17-6.1.0/test/sql/postgres_regress/object_address.sql000066400000000000000000000325651477334012600251610ustar00rootroot00000000000000-- -- 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; CREATE PUBLICATION addr_pub_schema FOR TABLES IN SCHEMA addr_nsp; 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 namespace'), ('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}', '{}'); -- Make sure that NULL handling is correct. \pset null 'NULL' -- Temporarily disable fancy output, so as future additions never create -- a large amount of diffs. \a\t -- 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 namespace', '{addr_nsp}', '{addr_pub_schema}'), ('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)) AS roundtrip FROM objects, pg_get_object_address(type, name, args) AS addr1, pg_identify_object_as_address(classid, objid, objsubid) AS 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 PUBLICATION addr_pub_schema; DROP SUBSCRIPTION regress_addr_sub; DROP SCHEMA addr_nsp CASCADE; DROP OWNED BY regress_addr_user; DROP USER regress_addr_user; -- -- Checks for invalid objects -- -- Keep this list in the same order as getObjectIdentityParts() -- in objectaddress.c. WITH objects (classid, objid, objsubid) AS (VALUES ('pg_class'::regclass, 0, 0), -- no relation ('pg_class'::regclass, 'pg_class'::regclass, 100), -- no column for relation ('pg_proc'::regclass, 0, 0), -- no function ('pg_type'::regclass, 0, 0), -- no type ('pg_cast'::regclass, 0, 0), -- no cast ('pg_collation'::regclass, 0, 0), -- no collation ('pg_constraint'::regclass, 0, 0), -- no constraint ('pg_conversion'::regclass, 0, 0), -- no conversion ('pg_attrdef'::regclass, 0, 0), -- no default attribute ('pg_language'::regclass, 0, 0), -- no language ('pg_largeobject'::regclass, 0, 0), -- no large object, no error ('pg_operator'::regclass, 0, 0), -- no operator ('pg_opclass'::regclass, 0, 0), -- no opclass, no need to check for no access method ('pg_opfamily'::regclass, 0, 0), -- no opfamily ('pg_am'::regclass, 0, 0), -- no access method ('pg_amop'::regclass, 0, 0), -- no AM operator ('pg_amproc'::regclass, 0, 0), -- no AM proc ('pg_rewrite'::regclass, 0, 0), -- no rewrite ('pg_trigger'::regclass, 0, 0), -- no trigger ('pg_namespace'::regclass, 0, 0), -- no schema ('pg_statistic_ext'::regclass, 0, 0), -- no statistics ('pg_ts_parser'::regclass, 0, 0), -- no TS parser ('pg_ts_dict'::regclass, 0, 0), -- no TS dictionary ('pg_ts_template'::regclass, 0, 0), -- no TS template ('pg_ts_config'::regclass, 0, 0), -- no TS configuration ('pg_authid'::regclass, 0, 0), -- no role ('pg_auth_members'::regclass, 0, 0), -- no role membership ('pg_database'::regclass, 0, 0), -- no database ('pg_tablespace'::regclass, 0, 0), -- no tablespace ('pg_foreign_data_wrapper'::regclass, 0, 0), -- no FDW ('pg_foreign_server'::regclass, 0, 0), -- no server ('pg_user_mapping'::regclass, 0, 0), -- no user mapping ('pg_default_acl'::regclass, 0, 0), -- no default ACL ('pg_extension'::regclass, 0, 0), -- no extension ('pg_event_trigger'::regclass, 0, 0), -- no event trigger ('pg_parameter_acl'::regclass, 0, 0), -- no parameter ACL ('pg_policy'::regclass, 0, 0), -- no policy ('pg_publication'::regclass, 0, 0), -- no publication ('pg_publication_namespace'::regclass, 0, 0), -- no publication namespace ('pg_publication_rel'::regclass, 0, 0), -- no publication relation ('pg_subscription'::regclass, 0, 0), -- no subscription ('pg_transform'::regclass, 0, 0) -- no transformation ) SELECT ROW(pg_identify_object(objects.classid, objects.objid, objects.objsubid)) AS ident, ROW(pg_identify_object_as_address(objects.classid, objects.objid, objects.objsubid)) AS addr, pg_describe_object(objects.classid, objects.objid, objects.objsubid) AS descr FROM objects ORDER BY objects.classid, objects.objid, objects.objsubid; -- restore normal output mode \a\t libpg_query-17-6.1.0/test/sql/postgres_regress/oid.sql000066400000000000000000000034661477334012600227570ustar00rootroot00000000000000-- -- 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 * FROM OID_TBL; -- Also try it with non-error-throwing API SELECT pg_input_is_valid('1234', 'oid'); SELECT pg_input_is_valid('01XYZ', 'oid'); SELECT * FROM pg_input_error_info('01XYZ', 'oid'); SELECT pg_input_is_valid('9999999999', 'oid'); SELECT * FROM pg_input_error_info('9999999999', 'oid'); -- While we're here, check oidvector as well SELECT pg_input_is_valid(' 1 2 4 ', 'oidvector'); SELECT pg_input_is_valid('01 01XYZ', 'oidvector'); SELECT * FROM pg_input_error_info('01 01XYZ', 'oidvector'); SELECT pg_input_is_valid('01 9999999999', 'oidvector'); SELECT * FROM pg_input_error_info('01 9999999999', 'oidvector'); SELECT o.* FROM OID_TBL o WHERE o.f1 = 1234; SELECT o.* FROM OID_TBL o WHERE o.f1 <> '1234'; SELECT o.* FROM OID_TBL o WHERE o.f1 <= '1234'; SELECT o.* FROM OID_TBL o WHERE o.f1 < '1234'; SELECT o.* FROM OID_TBL o WHERE o.f1 >= '1234'; SELECT o.* FROM OID_TBL o WHERE o.f1 > '1234'; DROP TABLE OID_TBL; libpg_query-17-6.1.0/test/sql/postgres_regress/oidjoins.sql000066400000000000000000000030271477334012600240130ustar00rootroot00000000000000-- -- Verify system catalog foreign key relationships -- DO $doblock$ declare fk record; nkeys integer; cmd text; err record; begin for fk in select * from pg_get_catalog_foreign_keys() loop raise notice 'checking % % => % %', fk.fktable, fk.fkcols, fk.pktable, fk.pkcols; nkeys := array_length(fk.fkcols, 1); cmd := 'SELECT ctid'; for i in 1 .. nkeys loop cmd := cmd || ', ' || quote_ident(fk.fkcols[i]); end loop; if fk.is_array then cmd := cmd || ' FROM (SELECT ctid'; for i in 1 .. nkeys-1 loop cmd := cmd || ', ' || quote_ident(fk.fkcols[i]); end loop; cmd := cmd || ', unnest(' || quote_ident(fk.fkcols[nkeys]); cmd := cmd || ') as ' || quote_ident(fk.fkcols[nkeys]); cmd := cmd || ' FROM ' || fk.fktable::text || ') fk WHERE '; else cmd := cmd || ' FROM ' || fk.fktable::text || ' fk WHERE '; end if; if fk.is_opt then for i in 1 .. nkeys loop cmd := cmd || quote_ident(fk.fkcols[i]) || ' != 0 AND '; end loop; end if; cmd := cmd || 'NOT EXISTS(SELECT 1 FROM ' || fk.pktable::text || ' pk WHERE '; for i in 1 .. nkeys loop if i > 1 then cmd := cmd || ' AND '; end if; cmd := cmd || 'pk.' || quote_ident(fk.pkcols[i]); cmd := cmd || ' = fk.' || quote_ident(fk.fkcols[i]); end loop; cmd := cmd || ')'; -- raise notice 'cmd = %', cmd; for err in execute cmd loop raise warning 'FK VIOLATION IN %(%): %', fk.fktable, fk.fkcols, err; end loop; end loop; end $doblock$; libpg_query-17-6.1.0/test/sql/postgres_regress/opr_sanity.sql000066400000000000000000001527641477334012600244010ustar00rootroot00000000000000-- -- 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... -- **************** 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; it can be empty only if prosqlbody isn't null SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE prosrc IS NULL; SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE (prosrc = '' OR prosrc = '-') AND prosqlbody IS NULL; -- 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 and multirange 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.prosrc NOT LIKE E'multirange\\_constructor_' AND p2.prosrc NOT LIKE E'multirange\\_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.prosrc NOT LIKE E'multirange\\_constructor_' AND p2.prosrc NOT LIKE E'multirange\\_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.prosrc NOT LIKE E'multirange\\_constructor_' AND p2.prosrc NOT LIKE E'multirange\\_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) OR 'anymultirange'::regtype = ANY (p1.proargtypes)) ORDER BY 2; -- anyrange and anymultirange are tighter than the rest, can only resolve -- from each other SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE p1.prorettype IN ('anyrange'::regtype, 'anymultirange'::regtype) AND NOT ('anyrange'::regtype = ANY (p1.proargtypes) OR 'anymultirange'::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 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); -- 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 c.oid, c.conname FROM pg_conversion as c WHERE c.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 != 'int4'::regtype OR p.proretset OR p.pronargs != 6 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 OR p.proargtypes[5] != 'bool'::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 c.oid, c.conname FROM pg_conversion as c 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 o1.oid, o1.oprname FROM pg_operator as o1 WHERE (o1.oprkind != 'b' AND o1.oprkind != 'l') OR o1.oprresult = 0 OR o1.oprcode = 0; -- Look for missing or unwanted operand types SELECT o1.oid, o1.oprname FROM pg_operator as o1 WHERE (o1.oprleft = 0 and o1.oprkind != 'l') OR (o1.oprleft != 0 and o1.oprkind = 'l') OR o1.oprright = 0; -- Look for conflicting operator definitions (same names and input datatypes). SELECT o1.oid, o1.oprcode, o2.oid, o2.oprcode FROM pg_operator AS o1, pg_operator AS o2 WHERE o1.oid != o2.oid AND o1.oprname = o2.oprname AND o1.oprkind = o2.oprkind AND o1.oprleft = o2.oprleft AND o1.oprright = o2.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 o1.oid, o1.oprcode, o2.oid, o2.oprcode FROM pg_operator AS o1, pg_operator AS o2 WHERE o1.oprcom = o2.oid AND (o1.oprkind != 'b' OR o1.oprleft != o2.oprright OR o1.oprright != o2.oprleft OR o1.oprresult != o2.oprresult OR o1.oid != o2.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 o1.oid, o1.oprcode, o2.oid, o2.oprcode FROM pg_operator AS o1, pg_operator AS o2 WHERE o1.oprnegate = o2.oid AND (o1.oprkind != o2.oprkind OR o1.oprleft != o2.oprleft OR o1.oprright != o2.oprright OR o1.oprresult != 'bool'::regtype OR o2.oprresult != 'bool'::regtype OR o1.oid != o2.oprnegate OR o1.oid = o2.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 o1.oid, o1.oprname FROM pg_operator AS o1 WHERE (o1.oprcanmerge OR o1.oprcanhash) AND NOT (o1.oprkind = 'b' AND o1.oprresult = 'bool'::regtype AND o1.oprcom != 0); -- What's more, the commutator had better be mergejoinable/hashjoinable too. SELECT o1.oid, o1.oprname, o2.oid, o2.oprname FROM pg_operator AS o1, pg_operator AS o2 WHERE o1.oprcom = o2.oid AND (o1.oprcanmerge != o2.oprcanmerge OR o1.oprcanhash != o2.oprcanhash); -- Mergejoinable operators should appear as equality members of btree index -- opfamilies. SELECT o1.oid, o1.oprname FROM pg_operator AS o1 WHERE o1.oprcanmerge AND NOT EXISTS (SELECT 1 FROM pg_amop WHERE amopmethod = (SELECT oid FROM pg_am WHERE amname = 'btree') AND amopopr = o1.oid AND amopstrategy = 3); -- And the converse. SELECT o1.oid, o1.oprname, p.amopfamily FROM pg_operator AS o1, pg_amop p WHERE amopopr = o1.oid AND amopmethod = (SELECT oid FROM pg_am WHERE amname = 'btree') AND amopstrategy = 3 AND NOT o1.oprcanmerge; -- Hashable operators should appear as members of hash index opfamilies. SELECT o1.oid, o1.oprname FROM pg_operator AS o1 WHERE o1.oprcanhash AND NOT EXISTS (SELECT 1 FROM pg_amop WHERE amopmethod = (SELECT oid FROM pg_am WHERE amname = 'hash') AND amopopr = o1.oid AND amopstrategy = 1); -- And the converse. SELECT o1.oid, o1.oprname, p.amopfamily FROM pg_operator AS o1, pg_amop p WHERE amopopr = o1.oid AND amopmethod = (SELECT oid FROM pg_am WHERE amname = 'hash') AND NOT o1.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 o1.oid, o1.oprname, p1.oid, p1.proname FROM pg_operator AS o1, pg_proc AS p1 WHERE o1.oprcode = p1.oid AND o1.oprkind = 'b' AND (p1.pronargs != 2 OR NOT binary_coercible(p1.prorettype, o1.oprresult) OR NOT binary_coercible(o1.oprleft, p1.proargtypes[0]) OR NOT binary_coercible(o1.oprright, p1.proargtypes[1])); SELECT o1.oid, o1.oprname, p1.oid, p1.proname FROM pg_operator AS o1, pg_proc AS p1 WHERE o1.oprcode = p1.oid AND o1.oprkind = 'l' AND (p1.pronargs != 1 OR NOT binary_coercible(p1.prorettype, o1.oprresult) OR NOT binary_coercible(o1.oprright, p1.proargtypes[0]) OR o1.oprleft != 0); -- If the operator is mergejoinable or hashjoinable, its underlying function -- should not be volatile. SELECT o1.oid, o1.oprname, p1.oid, p1.proname FROM pg_operator AS o1, pg_proc AS p1 WHERE o1.oprcode = p1.oid AND (o1.oprcanmerge OR o1.oprcanhash) AND p1.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 o1.oid, o1.oprname, p2.oid, p2.proname FROM pg_operator AS o1, pg_proc AS p2 WHERE o1.oprrest = p2.oid AND (o1.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 o1.oid, o1.oprname, p2.oid, p2.proname FROM pg_operator AS o1, pg_proc AS p2 WHERE o1.oprjoin = p2.oid AND (o1.oprkind != 'b' OR o1.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 o1.oid, o1.oprname FROM pg_operator as o1 LEFT JOIN pg_description as d ON o1.tableoid = d.classoid and o1.oid = d.objoid and d.objsubid = 0 WHERE d.classoid IS NULL AND o1.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 a 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])) OR (p.pronargs > 3 AND NOT binary_coercible(p.proargtypes[3], ptr.proargtypes[4])) -- we could carry the check further, but 4 args is enough for now OR (p.pronargs > 4) ); -- 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 a WHERE aggmtranstype != 0 AND (aggmtransfn = 0 OR aggminvtransfn = 0); SELECT ctid, aggfnoid::oid FROM pg_aggregate as a 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 f.oid FROM pg_opfamily as f WHERE f.opfmethod = 0 OR f.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 c1.oid FROM pg_opclass AS c1 WHERE c1.opcmethod = 0 OR c1.opcnamespace = 0 OR c1.opcfamily = 0 OR c1.opcintype = 0; -- opcmethod must match owning opfamily's opfmethod SELECT c1.oid, f1.oid FROM pg_opclass AS c1, pg_opfamily AS f1 WHERE c1.opcfamily = f1.oid AND c1.opcmethod != f1.opfmethod; -- There should not be multiple entries in pg_opclass with opcdefault true -- and the same opcmethod/opcintype combination. SELECT c1.oid, c2.oid FROM pg_opclass AS c1, pg_opclass AS c2 WHERE c1.oid != c2.oid AND c1.opcmethod = c2.opcmethod AND c1.opcintype = c2.opcintype AND c1.opcdefault AND c2.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 a1.oid, a1.amname FROM pg_am AS a1 WHERE a1.amhandler = 0; -- Check for index amhandler functions with the wrong signature SELECT a1.oid, a1.amname, p1.oid, p1.proname FROM pg_am AS a1, pg_proc AS p1 WHERE p1.oid = a1.amhandler AND a1.amtype = 'i' AND (p1.prorettype != 'index_am_handler'::regtype OR p1.proretset OR p1.pronargs != 1 OR p1.proargtypes[0] != 'internal'::regtype); -- Check for table amhandler functions with the wrong signature SELECT a1.oid, a1.amname, p1.oid, p1.proname FROM pg_am AS a1, pg_proc AS p1 WHERE p1.oid = a1.amhandler AND a1.amtype = 't' AND (p1.prorettype != 'table_am_handler'::regtype OR p1.proretset OR p1.pronargs != 1 OR p1.proargtypes[0] != 'internal'::regtype); -- **************** pg_amop **************** -- Look for illegal values in pg_amop fields SELECT a1.amopfamily, a1.amopstrategy FROM pg_amop as a1 WHERE a1.amopfamily = 0 OR a1.amoplefttype = 0 OR a1.amoprighttype = 0 OR a1.amopopr = 0 OR a1.amopmethod = 0 OR a1.amopstrategy < 1; SELECT a1.amopfamily, a1.amopstrategy FROM pg_amop as a1 WHERE NOT ((a1.amoppurpose = 's' AND a1.amopsortfamily = 0) OR (a1.amoppurpose = 'o' AND a1.amopsortfamily <> 0)); -- amopmethod must match owning opfamily's opfmethod SELECT a1.oid, f1.oid FROM pg_amop AS a1, pg_opfamily AS f1 WHERE a1.amopfamily = f1.oid AND a1.amopmethod != f1.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 a1 LEFT JOIN pg_operator o1 ON amopopr = o1.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 a1.amopfamily, a1.amopopr, o1.oid, o1.oprname FROM pg_amop AS a1, pg_operator AS o1 WHERE a1.amopopr = o1.oid AND a1.amoppurpose = 's' AND (o1.oprrest = 0 OR o1.oprjoin = 0); -- Check that each opclass in an opfamily has associated operators, that is -- ones whose oprleft matches opcintype (possibly by coercion). SELECT c1.opcname, c1.opcfamily FROM pg_opclass AS c1 WHERE NOT EXISTS(SELECT 1 FROM pg_amop AS a1 WHERE a1.amopfamily = c1.opcfamily AND binary_coercible(c1.opcintype, a1.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 a1.amopfamily, a1.amopstrategy, a1.amopopr FROM pg_amop AS a1 WHERE NOT EXISTS(SELECT 1 FROM pg_opclass AS c1 WHERE c1.opcfamily = a1.amopfamily AND binary_coercible(c1.opcintype, a1.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 a1.amopfamily, a1.amopopr, o1.oprname, p1.prosrc FROM pg_amop AS a1, pg_operator AS o1, pg_proc AS p1 WHERE a1.amopopr = o1.oid AND o1.oprcode = p1.oid AND a1.amoplefttype = a1.amoprighttype AND p1.provolatile != 'i'; SELECT a1.amopfamily, a1.amopopr, o1.oprname, p1.prosrc FROM pg_amop AS a1, pg_operator AS o1, pg_proc AS p1 WHERE a1.amopopr = o1.oid AND o1.oprcode = p1.oid AND a1.amoplefttype != a1.amoprighttype AND p1.provolatile = 'v'; -- **************** pg_amproc **************** -- Look for illegal values in pg_amproc fields SELECT a1.amprocfamily, a1.amprocnum FROM pg_amproc as a1 WHERE a1.amprocfamily = 0 OR a1.amproclefttype = 0 OR a1.amprocrighttype = 0 OR a1.amprocnum < 0 OR a1.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 a1.amprocfamily, a1.amproc, p1.prosrc FROM pg_amproc AS a1, pg_proc AS p1 WHERE a1.amproc = p1.oid AND a1.amproclefttype = a1.amprocrighttype AND p1.provolatile != 'i'; SELECT a1.amprocfamily, a1.amproc, p1.prosrc FROM pg_amproc AS a1, pg_proc AS p1 WHERE a1.amproc = p1.oid AND a1.amproclefttype != a1.amprocrighttype AND p1.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 indexrelid, indrelid FROM pg_index WHERE indexrelid = 0 OR indrelid = 0 OR indnatts <= 0 OR indnatts > 32; -- oidvector and int2vector fields should be of length indnatts. SELECT indexrelid, indrelid FROM pg_index 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-17-6.1.0/test/sql/postgres_regress/partition_aggregate.sql000066400000000000000000000421741477334012600262220ustar00rootroot00000000000000-- -- 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; SET parallel_setup_cost = 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, 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; RESET parallel_setup_cost; -- 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 -- (Use one more aggregate to tilt the cost estimates for the plan we want) 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), sum(x+y), count(*) FROM pagg_tab_para GROUP BY x HAVING avg(y) < 7 ORDER BY 1, 2, 3; SELECT x, sum(y), avg(y), sum(x+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), sum(x+y), count(*) FROM pagg_tab_para GROUP BY x HAVING avg(y) < 7 ORDER BY 1, 2, 3; SELECT x, sum(y), avg(y), sum(x+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-17-6.1.0/test/sql/postgres_regress/partition_info.sql000066400000000000000000000127631477334012600252300ustar00rootroot00000000000000-- -- 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-17-6.1.0/test/sql/postgres_regress/partition_join.sql000066400000000000000000002020561477334012600252300ustar00rootroot00000000000000-- -- 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, 3-way EXPLAIN (COSTS OFF) SELECT COUNT(*) FROM prt1 t1 LEFT JOIN prt1 t2 ON t1.a = t2.a LEFT JOIN prt1 t3 ON t2.a = t3.a; SELECT COUNT(*) FROM prt1 t1 LEFT JOIN prt1 t2 ON t1.a = t2.a LEFT JOIN prt1 t3 ON t2.a = t3.a; -- 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; -- lateral reference in sample scan EXPLAIN (COSTS OFF) SELECT * FROM prt1 t1 JOIN LATERAL (SELECT * FROM prt1 t2 TABLESAMPLE SYSTEM (t1.a) REPEATABLE(t1.b)) s ON t1.a = s.a; -- lateral reference in scan's restriction clauses EXPLAIN (COSTS OFF) SELECT count(*) FROM prt1 t1 LEFT JOIN LATERAL (SELECT t1.b AS t1b, t2.* FROM prt2 t2) s ON t1.a = s.b WHERE s.t1b = s.a; SELECT count(*) FROM prt1 t1 LEFT JOIN LATERAL (SELECT t1.b AS t1b, t2.* FROM prt2 t2) s ON t1.a = s.b WHERE s.t1b = s.a; EXPLAIN (COSTS OFF) SELECT count(*) FROM prt1 t1 LEFT JOIN LATERAL (SELECT t1.b AS t1b, t2.* FROM prt2 t2) s ON t1.a = s.b WHERE s.t1b = s.b; SELECT count(*) FROM prt1 t1 LEFT JOIN LATERAL (SELECT t1.b AS t1b, t2.* FROM prt2 t2) s ON t1.a = s.b WHERE s.t1b = s.b; -- 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; -- bug in freeing the SpecialJoinInfo of a child-join EXPLAIN (COSTS OFF) SELECT * FROM prt1 t1 JOIN prt1 t2 ON t1.a = t2.a WHERE t1.a IN (SELECT a FROM prt1 t3); -- -- 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; -- partitionwise join with lateral reference in sample scan EXPLAIN (COSTS OFF) SELECT * FROM prt1_l t1 JOIN LATERAL (SELECT * FROM prt1_l t2 TABLESAMPLE SYSTEM (t1.a) REPEATABLE(t1.b)) s ON t1.a = s.a AND t1.b = s.b AND t1.c = s.c; -- partitionwise join with lateral reference in scan's restriction clauses EXPLAIN (COSTS OFF) SELECT COUNT(*) FROM prt1_l t1 LEFT JOIN LATERAL (SELECT t1.b AS t1b, t2.* FROM prt2_l t2) s ON t1.a = s.b AND t1.b = s.a AND t1.c = s.c WHERE s.t1b = s.a; SELECT COUNT(*) FROM prt1_l t1 LEFT JOIN LATERAL (SELECT t1.b AS t1b, t2.* FROM prt2_l t2) s ON t1.a = s.b AND t1.b = s.a AND t1.c = s.c WHERE s.t1b = s.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; -- partitionwise join with fractional paths CREATE TABLE fract_t (id BIGINT, PRIMARY KEY (id)) PARTITION BY RANGE (id); CREATE TABLE fract_t0 PARTITION OF fract_t FOR VALUES FROM ('0') TO ('1000'); CREATE TABLE fract_t1 PARTITION OF fract_t FOR VALUES FROM ('1000') TO ('2000'); -- insert data INSERT INTO fract_t (id) (SELECT generate_series(0, 1999)); ANALYZE fract_t; -- verify plan; nested index only scans SET max_parallel_workers_per_gather = 0; SET enable_partitionwise_join = on; EXPLAIN (COSTS OFF) SELECT x.id, y.id FROM fract_t x LEFT JOIN fract_t y USING (id) ORDER BY x.id ASC LIMIT 10; EXPLAIN (COSTS OFF) SELECT x.id, y.id FROM fract_t x LEFT JOIN fract_t y USING (id) ORDER BY x.id DESC LIMIT 10; -- cleanup DROP TABLE fract_t; RESET max_parallel_workers_per_gather; RESET enable_partitionwise_join; libpg_query-17-6.1.0/test/sql/postgres_regress/partition_prune.sql000066400000000000000000001620631477334012600254250ustar00rootroot00000000000000-- -- 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'); insert into boolpart values (true), (false), (null); 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; select * from boolpart where a in (true, false); select * from boolpart where a = false; select * from boolpart where not a = false; select * from boolpart where a is true or a is not true; select * from boolpart where a is not true; select * from boolpart where a is not true and a is not false; select * from boolpart where a is unknown; select * from boolpart where a is not unknown; -- try some other permutations with a NULL partition instead of a DEFAULT delete from boolpart where a is null; create table boolpart_null partition of boolpart for values in (null); insert into boolpart values(null); 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 not false; explain (costs off) select * from boolpart where a is not unknown; select * from boolpart where a is not true; select * from boolpart where a is not true and a is not false; select * from boolpart where a is not false; select * from boolpart where a is not unknown; -- check that all partitions are pruned when faced with conflicting clauses explain (costs off) select * from boolpart where a is not unknown and a is unknown; explain (costs off) select * from boolpart where a is false and a is unknown; explain (costs off) select * from boolpart where a is true and a is unknown; -- inverse boolean partitioning - a seemingly unlikely design, but we've got -- code for it, so we'd better test it. create table iboolpart (a bool) partition by list ((not a)); create table iboolpart_default partition of iboolpart default; create table iboolpart_f partition of iboolpart for values in ('true'); create table iboolpart_t partition of iboolpart for values in ('false'); insert into iboolpart values (true), (false), (null); explain (costs off) select * from iboolpart where a in (true, false); explain (costs off) select * from iboolpart where a = false; explain (costs off) select * from iboolpart where not a = false; explain (costs off) select * from iboolpart where a is true or a is not true; explain (costs off) select * from iboolpart where a is not true; explain (costs off) select * from iboolpart where a is not true and a is not false; explain (costs off) select * from iboolpart where a is unknown; explain (costs off) select * from iboolpart where a is not unknown; select * from iboolpart where a in (true, false); select * from iboolpart where a = false; select * from iboolpart where not a = false; select * from iboolpart where a is true or a is not true; select * from iboolpart where a is not true; select * from iboolpart where a is not true and a is not false; select * from iboolpart where a is unknown; select * from iboolpart where a is not unknown; -- Try some other permutations with a NULL partition instead of a DEFAULT delete from iboolpart where a is null; create table iboolpart_null partition of iboolpart for values in (null); insert into iboolpart values(null); -- Pruning shouldn't take place for these. Just check the result is correct select * from iboolpart where a is not true; select * from iboolpart where a is not true and a is not false; select * from iboolpart where a is not false; 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); create table boolrangep_null partition of boolrangep default; -- 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; -- ensure we prune boolrangep_tf explain (costs off) select * from boolrangep where a is not true and not b and c = 25; -- ensure we prune everything apart from boolrangep_tf and boolrangep_null explain (costs off) select * from boolrangep where a is not false 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 = 100_000_000_000_000; 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 > 100_000_000_000_000; 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 > 100_000_000_000_000; drop table lp, coll_pruning, rlp, mc3p, mc2p, boolpart, iboolpart, boolrangep, rp, coll_pruning_multi, like_op_noprune, lparted_by_int2, rparted_by_int2; -- check that AlternativeSubPlan within a pruning expression gets cleaned up create table asptab (id int primary key) partition by range (id); create table asptab0 partition of asptab for values from (0) to (1); create table asptab1 partition of asptab for values from (1) to (2); explain (costs off) select * from (select exists (select 1 from int4_tbl tinner where f1 = touter.f1) as b from int4_tbl touter) ss, asptab where asptab.id > ss.b::int; drop table asptab; -- -- 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_test_int4_ops and part_test_text_ops in test_setup.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); -- -- 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 runtime pruning with hash partitioned tables -- -- recreate partitions dropped above 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); create table hp3 partition of hp for values with (modulus 4, remainder 3); -- Ensure we correctly prune unneeded partitions when there is an IS NULL qual prepare hp_q1 (text) as select * from hp where a is null and b = $1; explain (costs off) execute hp_q1('xxx'); deallocate hp_q1; drop table hp; -- 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; set enable_memoize = 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 enable_memoize; 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; -- Ensure run-time pruning works correctly for nested Append nodes set parallel_setup_cost to 0; set parallel_tuple_cost to 0; create table listp (a int) partition by list(a); create table listp_12 partition of listp for values in(1,2) partition by list(a); create table listp_12_1 partition of listp_12 for values in(1); create table listp_12_2 partition of listp_12 for values in(2); -- Force the 2nd subnode of the Append to be non-parallel. This results in -- a nested Append node because the mixed parallel / non-parallel paths cannot -- be pulled into the top-level Append. alter table listp_12_1 set (parallel_workers = 0); -- Ensure that listp_12_2 is not scanned. (The nested Append is not seen in -- the plan as it's pulled in setref.c due to having just a single subnode). select explain_parallel_append('select * from listp where a = (select 1);'); -- Like the above but throw some more complexity at the planner by adding -- a UNION ALL. We expect both sides of the union not to scan the -- non-required partitions. select explain_parallel_append( 'select * from listp where a = (select 1) union all select * from listp where a = (select 2);'); drop table listp; reset parallel_tuple_cost; reset parallel_setup_cost; -- Test case for run-time pruning with a nested Merge Append set enable_sort to 0; create table rangep (a int, b int) partition by range (a); create table rangep_0_to_100 partition of rangep for values from (0) to (100) partition by list (b); -- We need 3 sub-partitions. 1 to validate pruning worked and another two -- because a single remaining partition would be pulled up to the main Append. create table rangep_0_to_100_1 partition of rangep_0_to_100 for values in(1); create table rangep_0_to_100_2 partition of rangep_0_to_100 for values in(2); create table rangep_0_to_100_3 partition of rangep_0_to_100 for values in(3); create table rangep_100_to_200 partition of rangep for values from (100) to (200); create index on rangep (a); -- Ensure run-time pruning works on the nested Merge Append explain (analyze on, costs off, timing off, summary off) select * from rangep where b IN((select 1),(select 2)) order by a; reset enable_sort; drop table rangep; -- -- 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; drop table rp_prefix_test1; drop table rp_prefix_test2; drop table rp_prefix_test3; -- -- Test that get_steps_using_prefix() handles IS NULL clauses correctly -- 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 8 partitions select 'create table hp_prefix_test_p' || x::text || ' partition of hp_prefix_test for values with (modulus 8, remainder ' || x::text || ');' from generate_Series(0,7) x; \gexec -- insert 16 rows, one row for each test to perform. insert into hp_prefix_test select case a when 0 then null else 1 end, case b when 0 then null else 2 end, case c when 0 then null else 3 end, case d when 0 then null else 4 end from generate_series(0,1) a, generate_series(0,1) b, generate_Series(0,1) c, generate_Series(0,1) d; -- Ensure partition pruning works correctly for each combination of IS NULL -- and equality quals. This may seem a little excessive, but there have been -- a number of bugs in this area over the years. We make use of row only -- output to reduce the size of the expected results. \t on select 'explain (costs off) select tableoid::regclass,* from hp_prefix_test where ' || string_agg(c.colname || case when g.s & (1 << c.colpos) = 0 then ' is null' else ' = ' || (colpos+1)::text end, ' and ' order by c.colpos) from (values('a',0),('b',1),('c',2),('d',3)) c(colname, colpos), generate_Series(0,15) g(s) group by g.s order by g.s; \gexec -- And ensure we get exactly 1 row from each. Again, all 16 possible combinations. select 'select tableoid::regclass,* from hp_prefix_test where ' || string_agg(c.colname || case when g.s & (1 << c.colpos) = 0 then ' is null' else ' = ' || (colpos+1)::text end, ' and ' order by c.colpos) from (values('a',0),('b',1),('c',2),('d',3)) c(colname, colpos), generate_Series(0,15) g(s) group by g.s order by g.s; \gexec \t off 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-17-6.1.0/test/sql/postgres_regress/password.sql000066400000000000000000000121701477334012600240360ustar00rootroot00000000000000-- -- Tests for password types -- -- Tests for GUC password_encryption SET password_encryption = 'novalue'; -- error SET password_encryption = true; -- error SET password_encryption = 'md5'; -- ok SET password_encryption = 'scram-sha-256'; -- ok -- consistency of password entries SET password_encryption = 'md5'; CREATE ROLE regress_passwd1; ALTER ROLE regress_passwd1 PASSWORD 'role_pwd1'; CREATE ROLE regress_passwd2; ALTER 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'; -- Changing the SCRAM iteration count SET scram_iterations = 1024; CREATE ROLE regress_passwd9 PASSWORD 'alterediterationcount'; 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_passwd9; 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-17-6.1.0/test/sql/postgres_regress/path.sql000066400000000000000000000024121477334012600231260ustar00rootroot00000000000000-- -- 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 f1 AS open_path FROM PATH_TBL WHERE isopen(f1); SELECT f1 AS closed_path FROM PATH_TBL WHERE isclosed(f1); SELECT pclose(f1) AS closed_path FROM PATH_TBL; SELECT popen(f1) AS open_path FROM PATH_TBL; -- test non-error-throwing API for some core types SELECT pg_input_is_valid('[(1,2),(3)]', 'path'); SELECT * FROM pg_input_error_info('[(1,2),(3)]', 'path'); SELECT pg_input_is_valid('[(1,2,6),(3,4,6)]', 'path'); SELECT * FROM pg_input_error_info('[(1,2,6),(3,4,6)]', 'path'); libpg_query-17-6.1.0/test/sql/postgres_regress/pg_lsn.sql000066400000000000000000000036271477334012600234650ustar00rootroot00000000000000-- -- 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'); -- Also try it with non-error-throwing API SELECT pg_input_is_valid('16AE7F7', 'pg_lsn'); SELECT * FROM pg_input_error_info('16AE7F7', 'pg_lsn'); -- 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; SELECT '0/16AE7F7'::pg_lsn + 16::numeric; SELECT 16::numeric + '0/16AE7F7'::pg_lsn; SELECT '0/16AE7F7'::pg_lsn - 16::numeric; SELECT 'FFFFFFFF/FFFFFFFE'::pg_lsn + 1::numeric; SELECT 'FFFFFFFF/FFFFFFFE'::pg_lsn + 2::numeric; -- out of range error SELECT '0/1'::pg_lsn - 1::numeric; SELECT '0/1'::pg_lsn - 2::numeric; -- out of range error SELECT '0/0'::pg_lsn + ('FFFFFFFF/FFFFFFFF'::pg_lsn - '0/0'::pg_lsn); SELECT 'FFFFFFFF/FFFFFFFF'::pg_lsn - ('FFFFFFFF/FFFFFFFF'::pg_lsn - '0/0'::pg_lsn); SELECT '0/16AE7F7'::pg_lsn + 'NaN'::numeric; SELECT '0/16AE7F7'::pg_lsn - 'NaN'::numeric; -- 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-17-6.1.0/test/sql/postgres_regress/plancache.sql000066400000000000000000000133661477334012600241220ustar00rootroot00000000000000-- -- 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; select name, generic_plans, custom_plans from pg_prepared_statements where name = 'test_mode_pp'; -- up to 5 executions, custom plan is used set plan_cache_mode to auto; explain (costs off) execute test_mode_pp(2); select name, generic_plans, custom_plans from pg_prepared_statements where name = 'test_mode_pp'; -- force generic plan set plan_cache_mode to force_generic_plan; explain (costs off) execute test_mode_pp(2); select name, generic_plans, custom_plans from pg_prepared_statements where name = 'test_mode_pp'; -- 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 select name, generic_plans, custom_plans from pg_prepared_statements where name = 'test_mode_pp'; execute test_mode_pp(1); -- 5x select name, generic_plans, custom_plans from pg_prepared_statements where name = 'test_mode_pp'; -- 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); select name, generic_plans, custom_plans from pg_prepared_statements where name = 'test_mode_pp'; drop table test_mode; libpg_query-17-6.1.0/test/sql/postgres_regress/plpgsql.sql000066400000000000000000003601571477334012600236710ustar00rootroot00000000000000-- -- 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"; -- should fail create function constant_refcursor() returns refcursor as $$ declare rc constant refcursor; begin open rc for select a from rc_test; return rc; end $$ language plpgsql; select constant_refcursor(); -- but it's okay like this create or replace function constant_refcursor() returns refcursor as $$ declare rc constant refcursor := 'my_cursor_name'; begin open rc for select a from rc_test; return rc; end $$ language plpgsql; select constant_refcursor(); -- -- 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 -- (this used to require a special hack in the code; it no longer does, -- but let's keep the test anyway) 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 fipshash(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 -- assign portal names to cursors to get stable output c := 'c'; c2 := 'c2'; 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(); -- it's okay to re-use a cursor variable name, even when bound do $$ declare cnt int := 0; c1 cursor for select * from forc_test; begin for r1 in c1 loop declare c1 cursor for select * from forc_test; begin for r2 in c1 loop cnt := cnt + 1; end loop; end; end loop; raise notice 'cnt = %', cnt; end $$; -- 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 parallel safe; 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 stacked_diagnostics_test(); -- Test that an error recovery subtransaction is parallel safe create function error_trap_test() returns text as $$ begin perform zero_divide(); return 'no error detected!'; exception when division_by_zero then return 'division_by_zero detected'; end; $$ language plpgsql parallel safe; set debug_parallel_query to on; explain (verbose, costs off) select error_trap_test(); select error_trap_test(); reset debug_parallel_query; drop function error_trap_test(); drop function zero_divide(); -- 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 function rttest() returns setof int as $$ declare rc 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)'; get diagnostics rc = row_count; raise notice '% %', found, rc; return query execute 'select * from (values(10),(20)) f(a) where false'; get diagnostics rc = row_count; raise notice '% %', found, rc; end; $$ language plpgsql; select * from rttest(); -- check some error cases, too create or replace function rttest() returns setof int as $$ begin return query select 10 into no_such_table; end; $$ language plpgsql; select * from rttest(); create or replace function rttest() returns setof int as $$ begin return query execute 'select 10 into no_such_table'; end; $$ language plpgsql; select * from rttest(); select * from no_such_table; 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, but it is available in later ones. do $$ declare x int := x + 1; -- error begin raise notice 'x = %', x; end; $$; do $$ declare y int := x + 1; -- error x int := 42; begin raise notice 'x = %, y = %', x, y; end; $$; do $$ declare x int := 42; y int := x + 1; begin raise notice 'x = %, y = %', x, y; end; $$; do $$ declare x int := 42; begin declare y int := x + 1; x int := x + 2; z int := x * 10; begin raise notice 'x = %, y = %, z = %', x, y, z; end; end; $$; -- 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 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 work select outer_outer_func(20); drop function outer_outer_func(int); drop function outer_func(int); drop function inner_func(int); -- Test pg_routine_oid create function current_function(text) returns regprocedure as $$ declare fn_oid regprocedure; begin get diagnostics fn_oid = pg_routine_oid; return fn_oid; end; $$ language plpgsql; select current_function('foo'); drop function current_function(text); -- shouldn't fail in DO, even though there's no useful data do $$ declare fn_oid oid; begin get diagnostics fn_oid = pg_routine_oid; raise notice 'pg_routine_oid = %', fn_oid; end; $$; -- -- 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 public.partitioned_table.a%TYPE AS $$ DECLARE row public.partitioned_table%ROWTYPE; a_val public.partitioned_table.a%TYPE; BEGIN FOR row IN SELECT * FROM public.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-17-6.1.0/test/sql/postgres_regress/point.sql000066400000000000000000000064401477334012600233300ustar00rootroot00000000000000-- -- POINT -- -- avoid bit-exact output here because operations may not be bit-exact. SET extra_float_digits = 0; -- point_tbl was already created and filled in test_setup.sql. -- Here we just try to insert bad values. 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) 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 * FROM POINT_TBL; -- left of SELECT p.* FROM POINT_TBL p WHERE p.f1 << '(0.0, 0.0)'; -- right of SELECT p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >> p.f1; -- above SELECT p.* FROM POINT_TBL p WHERE '(0.0,0.0)' |>> p.f1; -- below SELECT p.* FROM POINT_TBL p WHERE p.f1 <<| '(0.0, 0.0)'; -- equal SELECT p.* FROM POINT_TBL p WHERE p.f1 ~= '(5.1, 34.5)'; -- point in box SELECT p.* FROM POINT_TBL p WHERE p.f1 <@ box '(0,0,100,100)'; SELECT p.* FROM POINT_TBL p WHERE box '(0,0,100,100)' @> p.f1; SELECT p.* FROM POINT_TBL p WHERE not p.f1 <@ box '(0,0,100,100)'; SELECT p.* FROM POINT_TBL p WHERE p.f1 <@ path '[(0,0),(-10,0),(-10,10)]'; SELECT p.* FROM POINT_TBL p WHERE not box '(0,0,100,100)' @> p.f1; SELECT p.f1, p.f1 <-> point '(0,0)' AS dist FROM POINT_TBL p ORDER BY dist; SELECT 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 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 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 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; -- test non-error-throwing API for some core types SELECT pg_input_is_valid('1,y', 'point'); SELECT * FROM pg_input_error_info('1,y', 'point'); libpg_query-17-6.1.0/test/sql/postgres_regress/polygon.sql000066400000000000000000000126311477334012600236650ustar00rootroot00000000000000-- -- 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 * 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; -- test non-error-throwing API for some core types SELECT pg_input_is_valid('(2.0,0.8,0.1)', 'polygon'); SELECT * FROM pg_input_error_info('(2.0,0.8,0.1)', 'polygon'); SELECT pg_input_is_valid('(2.0,xyz)', 'polygon'); SELECT * FROM pg_input_error_info('(2.0,xyz)', 'polygon'); libpg_query-17-6.1.0/test/sql/postgres_regress/polymorphism.sql000066400000000000000000001131101477334012600247320ustar00rootroot00000000000000-- -- 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); create function polyf(x anycompatiblemultirange, y anycompatible, z anycompatible) returns anycompatiblearray as $$ select array[lower(x), upper(x), y, z] $$ language sql; select polyf(multirange(int4range(42, 49)), 11, 2::smallint) as int, polyf(multirange(float8range(4.5, 7.8)), 7.8, 11::real) as num; select polyf(multirange(int4range(42, 49)), 11, 4.5) as fail; -- range type doesn't fit drop function polyf(x anycompatiblemultirange, 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); -- fail, can't infer type: create function polyf(x anycompatible) returns anycompatiblemultirange as $$ select array[x + 1, x + 2] $$ language sql; create function polyf(x anycompatiblemultirange, y anycompatiblearray) returns anycompatiblemultirange as $$ select x $$ language sql; select polyf(multirange(int4range(42, 49)), array[11]) as int, polyf(multirange(float8range(4.5, 7.8)), array[7]) as num; drop function polyf(x anycompatiblemultirange, 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); create function polyf(anyrange) returns anymultirange as 'select multirange($1);' language sql; select polyf(int4range(1,10)); select polyf(null); drop function polyf(anyrange); create function polyf(anymultirange) returns anyelement as 'select lower($1);' language sql; select polyf(int4multirange(int4range(1,10), int4range(20,30))); select polyf(null); drop function polyf(anymultirange); create function polyf(anycompatiblerange) returns anycompatiblemultirange as 'select multirange($1);' language sql; select polyf(int4range(1,10)); select polyf(null); drop function polyf(anycompatiblerange); create function polyf(anymultirange) returns anyrange as 'select range_merge($1);' language sql; select polyf(int4multirange(int4range(1,10), int4range(20,30))); select polyf(null); drop function polyf(anymultirange); create function polyf(anycompatiblemultirange) returns anycompatiblerange as 'select range_merge($1);' language sql; select polyf(int4multirange(int4range(1,10), int4range(20,30))); select polyf(null); drop function polyf(anycompatiblemultirange); create function polyf(anycompatiblemultirange) returns anycompatible as 'select lower($1);' language sql; select polyf(int4multirange(int4range(1,10), int4range(20,30))); select polyf(null); drop function polyf(anycompatiblemultirange); -- -- 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 USER regress_priv_user6; CREATE USER regress_priv_user7; CREATE USER regress_priv_user8; CREATE USER regress_priv_user9; CREATE USER regress_priv_user10; CREATE ROLE regress_priv_role; -- circular ADMIN OPTION grants should be disallowed GRANT regress_priv_user1 TO regress_priv_user2 WITH ADMIN OPTION; GRANT regress_priv_user1 TO regress_priv_user3 WITH ADMIN OPTION GRANTED BY regress_priv_user2; GRANT regress_priv_user1 TO regress_priv_user2 WITH ADMIN OPTION GRANTED BY regress_priv_user3; -- need CASCADE to revoke grant or admin option if dependent grants exist REVOKE ADMIN OPTION FOR regress_priv_user1 FROM regress_priv_user2; -- fail REVOKE regress_priv_user1 FROM regress_priv_user2; -- fail SELECT member::regrole, admin_option FROM pg_auth_members WHERE roleid = 'regress_priv_user1'::regrole; BEGIN; REVOKE ADMIN OPTION FOR regress_priv_user1 FROM regress_priv_user2 CASCADE; SELECT member::regrole, admin_option FROM pg_auth_members WHERE roleid = 'regress_priv_user1'::regrole; ROLLBACK; REVOKE regress_priv_user1 FROM regress_priv_user2 CASCADE; SELECT member::regrole, admin_option FROM pg_auth_members WHERE roleid = 'regress_priv_user1'::regrole; -- inferred grantor must be a role with ADMIN OPTION GRANT regress_priv_user1 TO regress_priv_user2 WITH ADMIN OPTION; GRANT regress_priv_user2 TO regress_priv_user3; SET ROLE regress_priv_user3; GRANT regress_priv_user1 TO regress_priv_user4; SELECT grantor::regrole FROM pg_auth_members WHERE roleid = 'regress_priv_user1'::regrole and member = 'regress_priv_user4'::regrole; RESET ROLE; REVOKE regress_priv_user2 FROM regress_priv_user3; REVOKE regress_priv_user1 FROM regress_priv_user2 CASCADE; -- test GRANTED BY with DROP OWNED and REASSIGN OWNED GRANT regress_priv_user1 TO regress_priv_user2 WITH ADMIN OPTION; GRANT regress_priv_user1 TO regress_priv_user3 GRANTED BY regress_priv_user2; DROP ROLE regress_priv_user2; -- fail, dependency REASSIGN OWNED BY regress_priv_user2 TO regress_priv_user4; DROP ROLE regress_priv_user2; -- still fail, REASSIGN OWNED doesn't help DROP OWNED BY regress_priv_user2; DROP ROLE regress_priv_user2; -- ok now, DROP OWNED does the job -- test that removing granted role or grantee role removes dependency GRANT regress_priv_user1 TO regress_priv_user3 WITH ADMIN OPTION; GRANT regress_priv_user1 TO regress_priv_user4 GRANTED BY regress_priv_user3; DROP ROLE regress_priv_user3; -- should fail, dependency DROP ROLE regress_priv_user4; -- ok DROP ROLE regress_priv_user3; -- ok now GRANT regress_priv_user1 TO regress_priv_user5 WITH ADMIN OPTION; GRANT regress_priv_user1 TO regress_priv_user6 GRANTED BY regress_priv_user5; DROP ROLE regress_priv_user5; -- should fail, dependency DROP ROLE regress_priv_user1, regress_priv_user5; -- ok, despite order -- recreate the roles we just dropped 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; GRANT pg_read_all_data TO regress_priv_user6; GRANT pg_write_all_data TO regress_priv_user7; GRANT pg_read_all_settings TO regress_priv_user8 WITH ADMIN OPTION; GRANT regress_priv_user9 TO regress_priv_user8; SET SESSION AUTHORIZATION regress_priv_user8; GRANT pg_read_all_settings TO regress_priv_user9 WITH ADMIN OPTION; SET SESSION AUTHORIZATION regress_priv_user9; GRANT pg_read_all_settings TO regress_priv_user10; SET SESSION AUTHORIZATION regress_priv_user8; REVOKE pg_read_all_settings FROM regress_priv_user10 GRANTED BY regress_priv_user9; REVOKE ADMIN OPTION FOR pg_read_all_settings FROM regress_priv_user9; REVOKE pg_read_all_settings FROM regress_priv_user9; RESET SESSION AUTHORIZATION; REVOKE regress_priv_user9 FROM regress_priv_user8; REVOKE ADMIN OPTION FOR pg_read_all_settings FROM regress_priv_user8; SET SESSION AUTHORIZATION regress_priv_user8; SET ROLE pg_read_all_settings; RESET ROLE; RESET SESSION AUTHORIZATION; REVOKE SET OPTION FOR pg_read_all_settings FROM regress_priv_user8; GRANT pg_read_all_stats TO regress_priv_user8 WITH SET FALSE; SET SESSION AUTHORIZATION regress_priv_user8; SET ROLE pg_read_all_settings; -- fail, no SET option any more SET ROLE pg_read_all_stats; -- fail, granted without SET option RESET ROLE; RESET SESSION AUTHORIZATION; -- test interaction of SET SESSION AUTHORIZATION and SET ROLE, -- as well as propagation of these settings to parallel workers GRANT regress_priv_user9 TO regress_priv_user8; SET SESSION AUTHORIZATION regress_priv_user8; SET ROLE regress_priv_user9; SET debug_parallel_query = 0; SELECT session_user, current_role, current_user, current_setting('role') as role; SET debug_parallel_query = 1; SELECT session_user, current_role, current_user, current_setting('role') as role; BEGIN; SET SESSION AUTHORIZATION regress_priv_user10; SET debug_parallel_query = 0; SELECT session_user, current_role, current_user, current_setting('role') as role; SET debug_parallel_query = 1; SELECT session_user, current_role, current_user, current_setting('role') as role; ROLLBACK; SET debug_parallel_query = 0; SELECT session_user, current_role, current_user, current_setting('role') as role; SET debug_parallel_query = 1; SELECT session_user, current_role, current_user, current_setting('role') as role; RESET SESSION AUTHORIZATION; -- session_user at this point is installation-dependent SET debug_parallel_query = 0; SELECT session_user = current_role as c_r_ok, session_user = current_user as c_u_ok, current_setting('role') as role; SET debug_parallel_query = 1; SELECT session_user = current_role as c_r_ok, session_user = current_user as c_u_ok, current_setting('role') as role; RESET debug_parallel_query; REVOKE pg_read_all_settings FROM regress_priv_user8; DROP USER regress_priv_user10; DROP USER regress_priv_user9; DROP USER regress_priv_user8; CREATE GROUP regress_priv_group1; CREATE GROUP regress_priv_group2 WITH ADMIN regress_priv_user1 USER regress_priv_user2; ALTER GROUP regress_priv_group1 ADD USER regress_priv_user4; GRANT regress_priv_group2 TO regress_priv_user2 GRANTED BY regress_priv_user1; SET SESSION AUTHORIZATION regress_priv_user3; ALTER GROUP regress_priv_group2 ADD USER regress_priv_user2; -- fail ALTER GROUP regress_priv_group2 DROP USER regress_priv_user2; -- fail SET SESSION AUTHORIZATION regress_priv_user1; ALTER GROUP regress_priv_group2 ADD USER regress_priv_user2; ALTER GROUP regress_priv_group2 ADD USER regress_priv_user2; -- duplicate ALTER GROUP regress_priv_group2 DROP USER regress_priv_user2; ALTER USER regress_priv_user2 PASSWORD 'verysecret'; -- not permitted RESET SESSION AUTHORIZATION; ALTER GROUP regress_priv_group2 DROP USER regress_priv_user2; REVOKE ADMIN OPTION FOR regress_priv_group2 FROM regress_priv_user1; GRANT regress_priv_group2 TO regress_priv_user4 WITH ADMIN OPTION; -- prepare non-leakproof function for later CREATE FUNCTION leak(integer,integer) RETURNS boolean AS 'int4lt' LANGUAGE internal IMMUTABLE STRICT; -- but deliberately not LEAKPROOF ALTER FUNCTION leak(integer,integer) OWNER TO regress_priv_user1; -- test owner privileges GRANT regress_priv_role TO regress_priv_user1 WITH ADMIN OPTION GRANTED BY regress_priv_role; -- error, doesn't have ADMIN OPTION GRANT regress_priv_role TO regress_priv_user1 WITH ADMIN OPTION GRANTED BY CURRENT_ROLE; REVOKE ADMIN OPTION FOR regress_priv_role FROM regress_priv_user1 GRANTED BY foo; -- error REVOKE ADMIN OPTION FOR regress_priv_role FROM regress_priv_user1 GRANTED BY regress_priv_user2; -- warning, noop REVOKE ADMIN OPTION FOR regress_priv_role FROM regress_priv_user1 GRANTED BY CURRENT_USER; REVOKE regress_priv_role FROM regress_priv_user1 GRANTED BY CURRENT_ROLE; DROP ROLE regress_priv_role; 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 GRANTED BY CURRENT_USER; GRANT TRUNCATE ON atest2 TO regress_priv_user5 GRANTED BY CURRENT_ROLE; GRANT TRUNCATE ON atest2 TO regress_priv_user4 GRANTED BY regress_priv_user5; -- error 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_user6; SELECT * FROM atest1; -- ok SELECT * FROM atest2; -- ok INSERT INTO atest2 VALUES ('foo', true); -- fail SET SESSION AUTHORIZATION regress_priv_user7; SELECT * FROM atest1; -- fail SELECT * FROM atest2; -- fail INSERT INTO atest2 VALUES ('foo', true); -- ok UPDATE atest2 SET col2 = true; -- ok DELETE FROM atest2; -- ok -- Make sure we are not able to modify system catalogs UPDATE pg_catalog.pg_class SET relname = '123'; -- fail DELETE FROM pg_catalog.pg_class; -- fail UPDATE pg_toast.pg_toast_1213 SET chunk_id = 1; -- fail 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 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; SAVEPOINT s1; DELETE FROM atest3; -- ok because grant-level option is unchanged ROLLBACK TO s1; RESET SESSION AUTHORIZATION; GRANT regress_priv_group2 TO regress_priv_user1 WITH INHERIT FALSE; SET SESSION AUTHORIZATION regress_priv_user1; DELETE FROM atest3; -- fail ROLLBACK TO s1; RESET SESSION AUTHORIZATION; REVOKE INHERIT OPTION FOR regress_priv_group2 FROM regress_priv_user1; SET SESSION AUTHORIZATION regress_priv_user1; DELETE FROM atest3; -- also fail 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 -- test column privileges with MERGE SET SESSION AUTHORIZATION regress_priv_user1; CREATE TABLE mtarget (a int, b text); CREATE TABLE msource (a int, b text); INSERT INTO mtarget VALUES (1, 'init1'), (2, 'init2'); INSERT INTO msource VALUES (1, 'source1'), (2, 'source2'), (3, 'source3'); GRANT SELECT (a) ON msource TO regress_priv_user4; GRANT SELECT (a) ON mtarget TO regress_priv_user4; GRANT INSERT (a,b) ON mtarget TO regress_priv_user4; GRANT UPDATE (b) ON mtarget TO regress_priv_user4; SET SESSION AUTHORIZATION regress_priv_user4; -- -- test source privileges -- -- fail (no SELECT priv on s.b) MERGE INTO mtarget t USING msource s ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = s.b WHEN NOT MATCHED THEN INSERT VALUES (a, NULL); -- fail (s.b used in the INSERTed values) MERGE INTO mtarget t USING msource s ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = 'x' WHEN NOT MATCHED THEN INSERT VALUES (a, b); -- fail (s.b used in the WHEN quals) MERGE INTO mtarget t USING msource s ON t.a = s.a WHEN MATCHED AND s.b = 'x' THEN UPDATE SET b = 'x' WHEN NOT MATCHED THEN INSERT VALUES (a, NULL); -- this should be ok since only s.a is accessed BEGIN; MERGE INTO mtarget t USING msource s ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = 'ok' WHEN NOT MATCHED THEN INSERT VALUES (a, NULL); ROLLBACK; SET SESSION AUTHORIZATION regress_priv_user1; GRANT SELECT (b) ON msource TO regress_priv_user4; SET SESSION AUTHORIZATION regress_priv_user4; -- should now be ok BEGIN; MERGE INTO mtarget t USING msource s ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = s.b WHEN NOT MATCHED THEN INSERT VALUES (a, b); ROLLBACK; -- -- test target privileges -- -- fail (no SELECT priv on t.b) MERGE INTO mtarget t USING msource s ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = t.b WHEN NOT MATCHED THEN INSERT VALUES (a, NULL); -- fail (no UPDATE on t.a) MERGE INTO mtarget t USING msource s ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = s.b, a = t.a + 1 WHEN NOT MATCHED THEN INSERT VALUES (a, b); -- fail (no SELECT on t.b) MERGE INTO mtarget t USING msource s ON t.a = s.a WHEN MATCHED AND t.b IS NOT NULL THEN UPDATE SET b = s.b WHEN NOT MATCHED THEN INSERT VALUES (a, b); -- ok BEGIN; MERGE INTO mtarget t USING msource s ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = s.b; ROLLBACK; -- fail (no DELETE) MERGE INTO mtarget t USING msource s ON t.a = s.a WHEN MATCHED AND t.b IS NOT NULL THEN DELETE; -- grant delete privileges SET SESSION AUTHORIZATION regress_priv_user1; GRANT DELETE ON mtarget TO regress_priv_user4; -- should be ok now BEGIN; MERGE INTO mtarget t USING msource s ON t.a = s.a WHEN MATCHED AND t.b IS NOT NULL THEN DELETE; ROLLBACK; -- 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'); select has_column_privilege('mytable',99::int2,'select'); revoke select on table mytable from regress_priv_user3; select has_column_privilege('mytable',2::int2,'select'); select has_column_privilege('mytable',99::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; -- Check that index expressions and predicates are run as the table's owner -- A dummy index function checking current_user CREATE FUNCTION sro_ifun(int) RETURNS int AS $$ BEGIN -- Below we set the table's owner to regress_sro_user ASSERT current_user = 'regress_sro_user', format('sro_ifun(%s) called by %s', $1, current_user); RETURN $1; END; $$ LANGUAGE plpgsql IMMUTABLE; -- Create a table owned by regress_sro_user CREATE TABLE sro_tab (a int); ALTER TABLE sro_tab OWNER TO regress_sro_user; INSERT INTO sro_tab VALUES (1), (2), (3); -- Create an expression index with a predicate CREATE INDEX sro_idx ON sro_tab ((sro_ifun(a) + sro_ifun(0))) WHERE sro_ifun(a + 10) > sro_ifun(10); DROP INDEX sro_idx; -- Do the same concurrently CREATE INDEX CONCURRENTLY sro_idx ON sro_tab ((sro_ifun(a) + sro_ifun(0))) WHERE sro_ifun(a + 10) > sro_ifun(10); -- REINDEX REINDEX TABLE sro_tab; REINDEX INDEX sro_idx; REINDEX TABLE CONCURRENTLY sro_tab; DROP INDEX sro_idx; -- CLUSTER CREATE INDEX sro_cluster_idx ON sro_tab ((sro_ifun(a) + sro_ifun(0))); CLUSTER sro_tab USING sro_cluster_idx; DROP INDEX sro_cluster_idx; -- BRIN index CREATE INDEX sro_brin ON sro_tab USING brin ((sro_ifun(a) + sro_ifun(0))); SELECT brin_desummarize_range('sro_brin', 0); SELECT brin_summarize_range('sro_brin', 0); DROP TABLE sro_tab; -- Check with a partitioned table CREATE TABLE sro_ptab (a int) PARTITION BY RANGE (a); ALTER TABLE sro_ptab OWNER TO regress_sro_user; CREATE TABLE sro_part PARTITION OF sro_ptab FOR VALUES FROM (1) TO (10); ALTER TABLE sro_part OWNER TO regress_sro_user; INSERT INTO sro_ptab VALUES (1), (2), (3); CREATE INDEX sro_pidx ON sro_ptab ((sro_ifun(a) + sro_ifun(0))) WHERE sro_ifun(a + 10) > sro_ifun(10); REINDEX TABLE sro_ptab; REINDEX INDEX CONCURRENTLY sro_pidx; 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 public.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 public.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 public.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; -- REFRESH MATERIALIZED VIEW CONCURRENTLY use of eval_const_expressions() SET SESSION AUTHORIZATION regress_sro_user; CREATE FUNCTION unwanted_grant_nofail(int) RETURNS int IMMUTABLE LANGUAGE plpgsql AS $$ BEGIN PERFORM public.unwanted_grant(); RAISE WARNING 'owned'; RETURN 1; EXCEPTION WHEN OTHERS THEN RETURN 2; END$$; CREATE MATERIALIZED VIEW sro_index_mv AS SELECT 1 AS c; CREATE UNIQUE INDEX ON sro_index_mv (c) WHERE unwanted_grant_nofail(1) > 0; \c - REFRESH MATERIALIZED VIEW CONCURRENTLY sro_index_mv; REFRESH MATERIALIZED VIEW sro_index_mv; 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; -- fails: no self-admin 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 -- pg_signal_backend can't signal superusers RESET SESSION AUTHORIZATION; BEGIN; CREATE OR REPLACE FUNCTION terminate_nothrow(pid int) RETURNS bool LANGUAGE plpgsql SECURITY DEFINER SET client_min_messages = error AS $$ BEGIN RETURN pg_terminate_backend($1); EXCEPTION WHEN OTHERS THEN RETURN false; END$$; ALTER FUNCTION terminate_nothrow OWNER TO pg_signal_backend; SELECT backend_type FROM pg_stat_activity WHERE CASE WHEN COALESCE(usesysid, 10) = 10 THEN terminate_nothrow(pid) END; ROLLBACK; -- test pg_database_owner RESET SESSION AUTHORIZATION; GRANT pg_database_owner TO regress_priv_user1; GRANT regress_priv_user1 TO pg_database_owner; CREATE TABLE datdba_only (); ALTER TABLE datdba_only OWNER TO pg_database_owner; REVOKE DELETE ON datdba_only FROM pg_database_owner; SELECT pg_has_role('regress_priv_user1', 'pg_database_owner', 'USAGE') as priv, pg_has_role('regress_priv_user1', 'pg_database_owner', 'MEMBER') as mem, pg_has_role('regress_priv_user1', 'pg_database_owner', 'MEMBER WITH ADMIN OPTION') as admin; BEGIN; DO $$BEGIN EXECUTE format( 'ALTER DATABASE %I OWNER TO regress_priv_group2', current_catalog); END$$; SELECT pg_has_role('regress_priv_user1', 'pg_database_owner', 'USAGE') as priv, pg_has_role('regress_priv_user1', 'pg_database_owner', 'MEMBER') as mem, pg_has_role('regress_priv_user1', 'pg_database_owner', 'MEMBER WITH ADMIN OPTION') as admin; SET SESSION AUTHORIZATION regress_priv_user1; TABLE information_schema.enabled_roles ORDER BY role_name COLLATE "C"; TABLE information_schema.applicable_roles ORDER BY role_name COLLATE "C"; INSERT INTO datdba_only DEFAULT VALUES; SAVEPOINT q; DELETE FROM datdba_only; ROLLBACK TO q; SET SESSION AUTHORIZATION regress_priv_user2; TABLE information_schema.enabled_roles; INSERT INTO datdba_only DEFAULT VALUES; ROLLBACK; -- 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 -- Test makeaclitem() SELECT makeaclitem('regress_priv_user1'::regrole, 'regress_priv_user2'::regrole, 'SELECT', TRUE); -- single privilege SELECT makeaclitem('regress_priv_user1'::regrole, 'regress_priv_user2'::regrole, 'SELECT, INSERT, UPDATE , DELETE ', FALSE); -- multiple privileges SELECT makeaclitem('regress_priv_user1'::regrole, 'regress_priv_user2'::regrole, 'SELECT, fake_privilege', FALSE); -- error -- Test non-throwing aclitem I/O SELECT pg_input_is_valid('regress_priv_user1=r/regress_priv_user2', 'aclitem'); SELECT pg_input_is_valid('regress_priv_user1=r/', 'aclitem'); SELECT * FROM pg_input_error_info('regress_priv_user1=r/', 'aclitem'); SELECT pg_input_is_valid('regress_priv_user1=r/regress_no_such_user', 'aclitem'); SELECT * FROM pg_input_error_info('regress_priv_user1=r/regress_no_such_user', 'aclitem'); SELECT pg_input_is_valid('regress_priv_user1=rY', 'aclitem'); SELECT * FROM pg_input_error_info('regress_priv_user1=rY', 'aclitem'); -- -- 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_user6', '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; -- Test for DROP OWNED BY with shared dependencies. This is done in a -- separate, rollbacked, transaction to avoid any trouble with other -- regression sessions. BEGIN; ALTER DEFAULT PRIVILEGES GRANT ALL ON FUNCTIONS TO regress_priv_user2; ALTER DEFAULT PRIVILEGES GRANT ALL ON SCHEMAS TO regress_priv_user2; ALTER DEFAULT PRIVILEGES GRANT ALL ON SEQUENCES TO regress_priv_user2; ALTER DEFAULT PRIVILEGES GRANT ALL ON TABLES TO regress_priv_user2; ALTER DEFAULT PRIVILEGES GRANT ALL ON TYPES TO regress_priv_user2; SELECT count(*) FROM pg_shdepend WHERE deptype = 'a' AND refobjid = 'regress_priv_user2'::regrole AND classid = 'pg_default_acl'::regclass; DROP OWNED BY regress_priv_user2, regress_priv_user2; SELECT count(*) FROM pg_shdepend WHERE deptype = 'a' AND refobjid = 'regress_priv_user2'::regrole AND classid = 'pg_default_acl'::regclass; ROLLBACK; 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; DROP USER regress_priv_user7; DROP USER regress_priv_user8; -- does not exist -- 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 ACCESS SHARE MODE; -- should pass COMMIT; BEGIN; LOCK TABLE lock_table IN ROW EXCLUSIVE MODE; -- should fail ROLLBACK; 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 ACCESS SHARE MODE; -- should pass ROLLBACK; BEGIN; LOCK TABLE lock_table IN ROW EXCLUSIVE MODE; -- should pass COMMIT; 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 ACCESS SHARE MODE; -- should pass ROLLBACK; BEGIN; LOCK TABLE lock_table IN ROW EXCLUSIVE MODE; -- should pass COMMIT; 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 ACCESS SHARE MODE; -- should pass ROLLBACK; BEGIN; LOCK TABLE lock_table IN ROW EXCLUSIVE MODE; -- should pass COMMIT; 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 ACCESS SHARE MODE; -- should pass ROLLBACK; BEGIN; LOCK TABLE lock_table IN ROW EXCLUSIVE MODE; -- should pass COMMIT; BEGIN; LOCK TABLE lock_table IN ACCESS EXCLUSIVE MODE; -- should pass COMMIT; \c REVOKE TRUNCATE ON lock_table FROM regress_locktable_user; -- LOCK TABLE and MAINTAIN permission GRANT MAINTAIN ON lock_table TO regress_locktable_user; SET SESSION AUTHORIZATION regress_locktable_user; BEGIN; LOCK TABLE lock_table IN ACCESS SHARE MODE; -- should pass ROLLBACK; BEGIN; LOCK TABLE lock_table IN ROW EXCLUSIVE MODE; -- should pass COMMIT; BEGIN; LOCK TABLE lock_table IN ACCESS EXCLUSIVE MODE; -- should pass COMMIT; \c REVOKE MAINTAIN ON lock_table FROM regress_locktable_user; -- clean up DROP TABLE lock_table; DROP USER regress_locktable_user; -- test to check privileges of system views pg_shmem_allocations and -- pg_backend_memory_contexts. -- switch to superuser \c - CREATE ROLE regress_readallstats; SELECT has_table_privilege('regress_readallstats','pg_backend_memory_contexts','SELECT'); -- no SELECT has_table_privilege('regress_readallstats','pg_shmem_allocations','SELECT'); -- no GRANT pg_read_all_stats TO regress_readallstats; SELECT has_table_privilege('regress_readallstats','pg_backend_memory_contexts','SELECT'); -- yes SELECT has_table_privilege('regress_readallstats','pg_shmem_allocations','SELECT'); -- yes -- run query to ensure that functions within views can be executed SET ROLE regress_readallstats; SELECT COUNT(*) >= 0 AS ok FROM pg_backend_memory_contexts; SELECT COUNT(*) >= 0 AS ok FROM pg_shmem_allocations; RESET ROLE; -- clean up DROP ROLE regress_readallstats; -- test role grantor machinery CREATE ROLE regress_group; CREATE ROLE regress_group_direct_manager; CREATE ROLE regress_group_indirect_manager; CREATE ROLE regress_group_member; GRANT regress_group TO regress_group_direct_manager WITH INHERIT FALSE, ADMIN TRUE; GRANT regress_group_direct_manager TO regress_group_indirect_manager; SET SESSION AUTHORIZATION regress_group_direct_manager; GRANT regress_group TO regress_group_member; SELECT member::regrole::text, CASE WHEN grantor = 10 THEN 'BOOTSTRAP SUPERUSER' ELSE grantor::regrole::text END FROM pg_auth_members WHERE roleid = 'regress_group'::regrole ORDER BY 1, 2; REVOKE regress_group FROM regress_group_member; SET SESSION AUTHORIZATION regress_group_indirect_manager; GRANT regress_group TO regress_group_member; SELECT member::regrole::text, CASE WHEN grantor = 10 THEN 'BOOTSTRAP SUPERUSER' ELSE grantor::regrole::text END FROM pg_auth_members WHERE roleid = 'regress_group'::regrole ORDER BY 1, 2; REVOKE regress_group FROM regress_group_member; RESET SESSION AUTHORIZATION; DROP ROLE regress_group; DROP ROLE regress_group_direct_manager; DROP ROLE regress_group_indirect_manager; DROP ROLE regress_group_member; -- test SET and INHERIT options with object ownership changes CREATE ROLE regress_roleoption_protagonist; CREATE ROLE regress_roleoption_donor; CREATE ROLE regress_roleoption_recipient; CREATE SCHEMA regress_roleoption; GRANT CREATE, USAGE ON SCHEMA regress_roleoption TO PUBLIC; GRANT regress_roleoption_donor TO regress_roleoption_protagonist WITH INHERIT TRUE, SET FALSE; GRANT regress_roleoption_recipient TO regress_roleoption_protagonist WITH INHERIT FALSE, SET TRUE; SET SESSION AUTHORIZATION regress_roleoption_protagonist; CREATE TABLE regress_roleoption.t1 (a int); CREATE TABLE regress_roleoption.t2 (a int); SET SESSION AUTHORIZATION regress_roleoption_donor; CREATE TABLE regress_roleoption.t3 (a int); SET SESSION AUTHORIZATION regress_roleoption_recipient; CREATE TABLE regress_roleoption.t4 (a int); SET SESSION AUTHORIZATION regress_roleoption_protagonist; ALTER TABLE regress_roleoption.t1 OWNER TO regress_roleoption_donor; -- fails, can't be come donor ALTER TABLE regress_roleoption.t2 OWNER TO regress_roleoption_recipient; -- works ALTER TABLE regress_roleoption.t3 OWNER TO regress_roleoption_protagonist; -- works ALTER TABLE regress_roleoption.t4 OWNER TO regress_roleoption_protagonist; -- fails, we don't inherit from recipient RESET SESSION AUTHORIZATION; DROP TABLE regress_roleoption.t1; DROP TABLE regress_roleoption.t2; DROP TABLE regress_roleoption.t3; DROP TABLE regress_roleoption.t4; DROP SCHEMA regress_roleoption; DROP ROLE regress_roleoption_protagonist; DROP ROLE regress_roleoption_donor; DROP ROLE regress_roleoption_recipient; -- MAINTAIN CREATE ROLE regress_no_maintain; CREATE ROLE regress_maintain; CREATE ROLE regress_maintain_all IN ROLE pg_maintain; CREATE TABLE maintain_test (a INT); CREATE INDEX ON maintain_test (a); GRANT MAINTAIN ON maintain_test TO regress_maintain; CREATE MATERIALIZED VIEW refresh_test AS SELECT 1; GRANT MAINTAIN ON refresh_test TO regress_maintain; CREATE SCHEMA reindex_test; -- negative tests; should fail SET ROLE regress_no_maintain; VACUUM maintain_test; ANALYZE maintain_test; VACUUM (ANALYZE) maintain_test; CLUSTER maintain_test USING maintain_test_a_idx; REFRESH MATERIALIZED VIEW refresh_test; REINDEX TABLE maintain_test; REINDEX INDEX maintain_test_a_idx; REINDEX SCHEMA reindex_test; RESET ROLE; SET ROLE regress_maintain; VACUUM maintain_test; ANALYZE maintain_test; VACUUM (ANALYZE) maintain_test; CLUSTER maintain_test USING maintain_test_a_idx; REFRESH MATERIALIZED VIEW refresh_test; REINDEX TABLE maintain_test; REINDEX INDEX maintain_test_a_idx; REINDEX SCHEMA reindex_test; RESET ROLE; SET ROLE regress_maintain_all; VACUUM maintain_test; ANALYZE maintain_test; VACUUM (ANALYZE) maintain_test; CLUSTER maintain_test USING maintain_test_a_idx; REFRESH MATERIALIZED VIEW refresh_test; REINDEX TABLE maintain_test; REINDEX INDEX maintain_test_a_idx; REINDEX SCHEMA reindex_test; RESET ROLE; DROP TABLE maintain_test; DROP MATERIALIZED VIEW refresh_test; DROP SCHEMA reindex_test; DROP ROLE regress_no_maintain; DROP ROLE regress_maintain; DROP ROLE regress_maintain_all; libpg_query-17-6.1.0/test/sql/postgres_regress/psql.sql000066400000000000000000001241171477334012600231600ustar00rootroot00000000000000-- -- 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 -- \bind (extended query protocol) SELECT 1 \bind \g SELECT $1 \bind 'foo' \g SELECT $1, $2 \bind 'foo' 'bar' \g -- errors -- parse error SELECT foo \bind \g -- tcop error SELECT 1 \; SELECT 2 \bind \g -- bind error SELECT $1, $2 \bind 'foo' \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 returns no tuples select a from generate_series(1, 10) as a where a = 11 \gset \echo :ROW_COUNT -- \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 -- test for server bug #17983 with empty statement in aborted transaction set search_path = default; begin; bogus; ; \gdesc rollback; -- \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 -- \setenv, \getenv -- ensure MYVAR isn't set \setenv MYVAR -- in which case, reading it doesn't change the target \getenv res MYVAR \echo :res -- now set it \setenv MYVAR 'environment value' \getenv res MYVAR \echo :res -- 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 am display \pset expanded off CREATE SCHEMA tableam_display; CREATE ROLE regress_display_role; ALTER SCHEMA tableam_display OWNER TO regress_display_role; SET search_path TO tableam_display; CREATE ACCESS METHOD heap_psql TYPE TABLE HANDLER heap_tableam_handler; SET ROLE TO regress_display_role; -- Use only relations with a physical size of zero. CREATE TABLE tbl_heap_psql(f1 int, f2 char(100)) using heap_psql; CREATE TABLE tbl_heap(f1 int, f2 char(100)) using heap; CREATE VIEW view_heap_psql AS SELECT f1 from tbl_heap_psql; CREATE MATERIALIZED VIEW mat_view_heap_psql USING heap_psql AS SELECT f1 from tbl_heap_psql; \d+ tbl_heap_psql \d+ tbl_heap \set HIDE_TABLEAM off \d+ tbl_heap_psql \d+ tbl_heap -- AM is displayed for tables, indexes and materialized views. \d+ \dt+ \dm+ -- But not for views and sequences. \dv+ \set HIDE_TABLEAM on \d+ RESET ROLE; RESET search_path; DROP SCHEMA tableam_display CASCADE; DROP ACCESS METHOD heap_psql; DROP ROLE regress_display_role; -- 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 SELECT $1 \bind 1 \g \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 arg2 \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 query with chunked results \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 -- chunked results with an error after the first chunk -- (we must disable parallel query here, else the behavior is timing-dependent) set debug_parallel_query = off; 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 reset debug_parallel_query; \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 -- check \dconfig set work_mem = 10240; \dconfig work_mem \dconfig+ work* reset work_mem; -- check \df, \do with argument specifications \df *sqrt \df *sqrt num* \df int*pl \df int*pl int4 \df int*pl * pg_catalog.int8 \df acl* aclitem[] \df has_database_privilege oid text \df has_database_privilege oid text - \dfa bit* small* \df *._pg_expandarray \do - pg_catalog.int4 \do && anyarray * -- check \df+ -- we have to use functions with a predictable owner name, so make a role create role regress_psql_user superuser; begin; set session authorization regress_psql_user; create function psql_df_internal (float8) returns float8 language internal immutable parallel safe strict as 'dsin'; create function psql_df_sql (x integer) returns integer security definer begin atomic select x + 1; end; create function psql_df_plpgsql () returns void language plpgsql as $$ begin return; end; $$; comment on function psql_df_plpgsql () is 'some comment'; \df+ psql_df_* rollback; drop role regress_psql_user; -- check \sf \sf information_schema._pg_index_position \sf+ information_schema._pg_index_position \sf+ interval_pl_time \sf ts_debug(text); \sf+ ts_debug(text) -- AUTOCOMMIT CREATE TABLE ac_test (a int); \set AUTOCOMMIT off INSERT INTO ac_test VALUES (1); COMMIT; SELECT * FROM ac_test; COMMIT; INSERT INTO ac_test VALUES (2); ROLLBACK; SELECT * FROM ac_test; COMMIT; BEGIN; INSERT INTO ac_test VALUES (3); COMMIT; SELECT * FROM ac_test; COMMIT; BEGIN; INSERT INTO ac_test VALUES (4); ROLLBACK; SELECT * FROM ac_test; COMMIT; \set AUTOCOMMIT on DROP TABLE ac_test; SELECT * FROM ac_test; -- should be gone now -- ON_ERROR_ROLLBACK \set ON_ERROR_ROLLBACK on CREATE TABLE oer_test (a int); BEGIN; INSERT INTO oer_test VALUES (1); INSERT INTO oer_test VALUES ('foo'); INSERT INTO oer_test VALUES (3); COMMIT; SELECT * FROM oer_test; BEGIN; INSERT INTO oer_test VALUES (4); ROLLBACK; SELECT * FROM oer_test; BEGIN; INSERT INTO oer_test VALUES (5); COMMIT AND CHAIN; INSERT INTO oer_test VALUES (6); COMMIT; SELECT * FROM oer_test; DROP TABLE oer_test; \set ON_ERROR_ROLLBACK off -- ECHO errors \set ECHO errors SELECT * FROM notexists; \set ECHO all -- -- combined queries -- CREATE FUNCTION warn(msg TEXT) RETURNS BOOLEAN LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'warn %', msg ; RETURN TRUE ; END $$; -- show both SELECT 1 AS one \; SELECT warn('1.5') \; SELECT 2 AS two ; -- \gset applies to last query only SELECT 3 AS three \; SELECT warn('3.5') \; SELECT 4 AS four \gset \echo :three :four -- syntax error stops all processing SELECT 5 \; SELECT 6 + \; SELECT warn('6.5') \; SELECT 7 ; -- with aborted transaction, stop on first error BEGIN \; SELECT 8 AS eight \; SELECT 9/0 AS nine \; ROLLBACK \; SELECT 10 AS ten ; -- close previously aborted transaction ROLLBACK; -- miscellaneous SQL commands -- (non SELECT output is sent to stderr, thus is not shown in expected results) SELECT 'ok' AS "begin" \; CREATE TABLE psql_comics(s TEXT) \; INSERT INTO psql_comics VALUES ('Calvin'), ('hobbes') \; COPY psql_comics FROM STDIN \; UPDATE psql_comics SET s = 'Hobbes' WHERE s = 'hobbes' \; DELETE FROM psql_comics WHERE s = 'Moe' \; COPY psql_comics TO STDOUT \; TRUNCATE psql_comics \; DROP TABLE psql_comics \; SELECT 'ok' AS "done" ; Moe Susie \. \set SHOW_ALL_RESULTS off SELECT 1 AS one \; SELECT warn('1.5') \; SELECT 2 AS two ; \set SHOW_ALL_RESULTS on DROP FUNCTION warn(TEXT); -- -- \g with file -- \getenv abs_builddir PG_ABS_BUILDDIR \set g_out_file :abs_builddir '/results/psql-output1' CREATE TEMPORARY TABLE reload_output( lineno int NOT NULL GENERATED ALWAYS AS IDENTITY, line text ); SELECT 1 AS a \g :g_out_file COPY reload_output(line) FROM :'g_out_file'; SELECT 2 AS b\; SELECT 3 AS c\; SELECT 4 AS d \g :g_out_file COPY reload_output(line) FROM :'g_out_file'; COPY (SELECT 'foo') TO STDOUT \; COPY (SELECT 'bar') TO STDOUT \g :g_out_file COPY reload_output(line) FROM :'g_out_file'; SELECT line FROM reload_output ORDER BY lineno; TRUNCATE TABLE reload_output; -- -- \o with file -- \set o_out_file :abs_builddir '/results/psql-output2' \o :o_out_file SELECT max(unique1) FROM onek; SELECT 1 AS a\; SELECT 2 AS b\; SELECT 3 AS c; -- COPY TO file -- The data goes to :g_out_file and the status to :o_out_file \set QUIET false COPY (SELECT unique1 FROM onek ORDER BY unique1 LIMIT 10) TO :'g_out_file'; -- DML command status UPDATE onek SET unique1 = unique1 WHERE false; \set QUIET true \o -- Check the contents of the files generated. COPY reload_output(line) FROM :'g_out_file'; SELECT line FROM reload_output ORDER BY lineno; TRUNCATE TABLE reload_output; COPY reload_output(line) FROM :'o_out_file'; SELECT line FROM reload_output ORDER BY lineno; TRUNCATE TABLE reload_output; -- Multiple COPY TO STDOUT with output file \o :o_out_file -- The data goes to :o_out_file with no status generated. COPY (SELECT 'foo1') TO STDOUT \; COPY (SELECT 'bar1') TO STDOUT; -- Combination of \o and \g file with multiple COPY queries. COPY (SELECT 'foo2') TO STDOUT \; COPY (SELECT 'bar2') TO STDOUT \g :g_out_file \o -- Check the contents of the files generated. COPY reload_output(line) FROM :'g_out_file'; SELECT line FROM reload_output ORDER BY lineno; TRUNCATE TABLE reload_output; COPY reload_output(line) FROM :'o_out_file'; SELECT line FROM reload_output ORDER BY lineno; DROP TABLE reload_output; -- -- AUTOCOMMIT and combined queries -- \set AUTOCOMMIT off \echo '# AUTOCOMMIT:' :AUTOCOMMIT -- BEGIN is now implicit CREATE TABLE foo(s TEXT) \; ROLLBACK; CREATE TABLE foo(s TEXT) \; INSERT INTO foo(s) VALUES ('hello'), ('world') \; COMMIT; DROP TABLE foo \; ROLLBACK; -- table foo is still there SELECT * FROM foo ORDER BY 1 \; DROP TABLE foo \; COMMIT; \set AUTOCOMMIT on \echo '# AUTOCOMMIT:' :AUTOCOMMIT -- BEGIN now explicit for multi-statement transactions BEGIN \; CREATE TABLE foo(s TEXT) \; INSERT INTO foo(s) VALUES ('hello'), ('world') \; COMMIT; BEGIN \; DROP TABLE foo \; ROLLBACK \; -- implicit transactions SELECT * FROM foo ORDER BY 1 \; DROP TABLE foo; -- -- test ON_ERROR_ROLLBACK and combined queries -- CREATE FUNCTION psql_error(msg TEXT) RETURNS BOOLEAN AS $$ BEGIN RAISE EXCEPTION 'error %', msg; END; $$ LANGUAGE plpgsql; \set ON_ERROR_ROLLBACK on \echo '# ON_ERROR_ROLLBACK:' :ON_ERROR_ROLLBACK \echo '# AUTOCOMMIT:' :AUTOCOMMIT BEGIN; CREATE TABLE bla(s NO_SUCH_TYPE); -- fails CREATE TABLE bla(s TEXT); -- succeeds SELECT psql_error('oops!'); -- fails INSERT INTO bla VALUES ('Calvin'), ('Hobbes'); COMMIT; SELECT * FROM bla ORDER BY 1; BEGIN; INSERT INTO bla VALUES ('Susie'); -- succeeds -- now with combined queries INSERT INTO bla VALUES ('Rosalyn') \; -- will rollback SELECT 'before error' AS show \; -- will show nevertheless! SELECT psql_error('boum!') \; -- failure SELECT 'after error' AS noshow; -- hidden by preceding error INSERT INTO bla(s) VALUES ('Moe') \; -- will rollback SELECT psql_error('bam!'); INSERT INTO bla VALUES ('Miss Wormwood'); -- succeeds COMMIT; SELECT * FROM bla ORDER BY 1; -- some with autocommit off \set AUTOCOMMIT off \echo '# AUTOCOMMIT:' :AUTOCOMMIT -- implicit BEGIN INSERT INTO bla VALUES ('Dad'); -- succeeds SELECT psql_error('bad!'); -- implicit partial rollback INSERT INTO bla VALUES ('Mum') \; -- will rollback SELECT COUNT(*) AS "#mum" FROM bla WHERE s = 'Mum' \; -- but be counted here SELECT psql_error('bad!'); -- implicit partial rollback COMMIT; SELECT COUNT(*) AS "#mum" FROM bla WHERE s = 'Mum' \; -- no mum here SELECT * FROM bla ORDER BY 1; COMMIT; -- reset all \set AUTOCOMMIT on \set ON_ERROR_ROLLBACK off \echo '# final ON_ERROR_ROLLBACK:' :ON_ERROR_ROLLBACK DROP TABLE bla; DROP FUNCTION psql_error; -- check describing invalid multipart names \dA regression.heap \dA nonesuch.heap \dt host.regression.pg_catalog.pg_class \dt |.pg_catalog.pg_class \dt nonesuch.pg_catalog.pg_class \da host.regression.pg_catalog.sum \da +.pg_catalog.sum \da nonesuch.pg_catalog.sum \dAc nonesuch.brin \dAc regression.brin \dAf nonesuch.brin \dAf regression.brin \dAo nonesuch.brin \dAo regression.brin \dAp nonesuch.brin \dAp regression.brin \db nonesuch.pg_default \db regression.pg_default \dc host.regression.public.conversion \dc (.public.conversion \dc nonesuch.public.conversion \dC host.regression.pg_catalog.int8 \dC ).pg_catalog.int8 \dC nonesuch.pg_catalog.int8 \dd host.regression.pg_catalog.pg_class \dd [.pg_catalog.pg_class \dd nonesuch.pg_catalog.pg_class \dD host.regression.public.gtestdomain1 \dD ].public.gtestdomain1 \dD nonesuch.public.gtestdomain1 \ddp host.regression.pg_catalog.pg_class \ddp {.pg_catalog.pg_class \ddp nonesuch.pg_catalog.pg_class \dE host.regression.public.ft \dE }.public.ft \dE nonesuch.public.ft \di host.regression.public.tenk1_hundred \di ..public.tenk1_hundred \di nonesuch.public.tenk1_hundred \dm host.regression.public.mvtest_bb \dm ^.public.mvtest_bb \dm nonesuch.public.mvtest_bb \ds host.regression.public.check_seq \ds regression|mydb.public.check_seq \ds nonesuch.public.check_seq \dt host.regression.public.b_star \dt regres+ion.public.b_star \dt nonesuch.public.b_star \dv host.regression.public.shoe \dv regress(ion).public.shoe \dv nonesuch.public.shoe \des nonesuch.server \des regression.server \des nonesuch.server \des regression.server \des nonesuch.username \des regression.username \dew nonesuch.fdw \dew regression.fdw \df host.regression.public.namelen \df regres[qrstuv]ion.public.namelen \df nonesuch.public.namelen \dF host.regression.pg_catalog.arabic \dF regres{1,2}ion.pg_catalog.arabic \dF nonesuch.pg_catalog.arabic \dFd host.regression.pg_catalog.arabic_stem \dFd regres?ion.pg_catalog.arabic_stem \dFd nonesuch.pg_catalog.arabic_stem \dFp host.regression.pg_catalog.default \dFp ^regression.pg_catalog.default \dFp nonesuch.pg_catalog.default \dFt host.regression.pg_catalog.ispell \dFt regression$.pg_catalog.ispell \dFt nonesuch.pg_catalog.ispell \dg nonesuch.pg_database_owner \dg regression.pg_database_owner \dL host.regression.plpgsql \dL *.plpgsql \dL nonesuch.plpgsql \dn host.regression.public \dn """".public \dn nonesuch.public \do host.regression.public.!=- \do "regression|mydb".public.!=- \do nonesuch.public.!=- \dO host.regression.pg_catalog.POSIX \dO .pg_catalog.POSIX \dO nonesuch.pg_catalog.POSIX \dp host.regression.public.a_star \dp "regres+ion".public.a_star \dp nonesuch.public.a_star \dP host.regression.public.mlparted \dP "regres(sion)".public.mlparted \dP nonesuch.public.mlparted \drds nonesuch.lc_messages \drds regression.lc_messages \dRp public.mypub \dRp regression.mypub \dRs public.mysub \dRs regression.mysub \dT host.regression.public.widget \dT "regression{1,2}".public.widget \dT nonesuch.public.widget \dx regression.plpgsql \dx nonesuch.plpgsql \dX host.regression.public.func_deps_stat \dX "^regression$".public.func_deps_stat \dX nonesuch.public.func_deps_stat \dy regression.myevt \dy nonesuch.myevt -- check that dots within quoted name segments are not counted \dA "no.such.access.method" \dt "no.such.table.relation" \da "no.such.aggregate.function" \dAc "no.such.operator.class" \dAf "no.such.operator.family" \dAo "no.such.operator.of.operator.family" \dAp "no.such.operator.support.function.of.operator.family" \db "no.such.tablespace" \dc "no.such.conversion" \dC "no.such.cast" \dd "no.such.object.description" \dD "no.such.domain" \ddp "no.such.default.access.privilege" \di "no.such.index.relation" \dm "no.such.materialized.view" \ds "no.such.relation" \dt "no.such.relation" \dv "no.such.relation" \des "no.such.foreign.server" \dew "no.such.foreign.data.wrapper" \df "no.such.function" \dF "no.such.text.search.configuration" \dFd "no.such.text.search.dictionary" \dFp "no.such.text.search.parser" \dFt "no.such.text.search.template" \dg "no.such.role" \dL "no.such.language" \dn "no.such.schema" \do "no.such.operator" \dO "no.such.collation" \dp "no.such.access.privilege" \dP "no.such.partitioned.relation" \drds "no.such.setting" \dRp "no.such.publication" \dRs "no.such.subscription" \dT "no.such.data.type" \dx "no.such.installed.extension" \dX "no.such.extended.statistics" \dy "no.such.event.trigger" -- again, but with dotted schema qualifications. \dA "no.such.schema"."no.such.access.method" \dt "no.such.schema"."no.such.table.relation" \da "no.such.schema"."no.such.aggregate.function" \dAc "no.such.schema"."no.such.operator.class" \dAf "no.such.schema"."no.such.operator.family" \dAo "no.such.schema"."no.such.operator.of.operator.family" \dAp "no.such.schema"."no.such.operator.support.function.of.operator.family" \db "no.such.schema"."no.such.tablespace" \dc "no.such.schema"."no.such.conversion" \dC "no.such.schema"."no.such.cast" \dd "no.such.schema"."no.such.object.description" \dD "no.such.schema"."no.such.domain" \ddp "no.such.schema"."no.such.default.access.privilege" \di "no.such.schema"."no.such.index.relation" \dm "no.such.schema"."no.such.materialized.view" \ds "no.such.schema"."no.such.relation" \dt "no.such.schema"."no.such.relation" \dv "no.such.schema"."no.such.relation" \des "no.such.schema"."no.such.foreign.server" \dew "no.such.schema"."no.such.foreign.data.wrapper" \df "no.such.schema"."no.such.function" \dF "no.such.schema"."no.such.text.search.configuration" \dFd "no.such.schema"."no.such.text.search.dictionary" \dFp "no.such.schema"."no.such.text.search.parser" \dFt "no.such.schema"."no.such.text.search.template" \dg "no.such.schema"."no.such.role" \dL "no.such.schema"."no.such.language" \do "no.such.schema"."no.such.operator" \dO "no.such.schema"."no.such.collation" \dp "no.such.schema"."no.such.access.privilege" \dP "no.such.schema"."no.such.partitioned.relation" \drds "no.such.schema"."no.such.setting" \dRp "no.such.schema"."no.such.publication" \dRs "no.such.schema"."no.such.subscription" \dT "no.such.schema"."no.such.data.type" \dx "no.such.schema"."no.such.installed.extension" \dX "no.such.schema"."no.such.extended.statistics" \dy "no.such.schema"."no.such.event.trigger" -- again, but with current database and dotted schema qualifications. \dt regression."no.such.schema"."no.such.table.relation" \da regression."no.such.schema"."no.such.aggregate.function" \dc regression."no.such.schema"."no.such.conversion" \dC regression."no.such.schema"."no.such.cast" \dd regression."no.such.schema"."no.such.object.description" \dD regression."no.such.schema"."no.such.domain" \di regression."no.such.schema"."no.such.index.relation" \dm regression."no.such.schema"."no.such.materialized.view" \ds regression."no.such.schema"."no.such.relation" \dt regression."no.such.schema"."no.such.relation" \dv regression."no.such.schema"."no.such.relation" \df regression."no.such.schema"."no.such.function" \dF regression."no.such.schema"."no.such.text.search.configuration" \dFd regression."no.such.schema"."no.such.text.search.dictionary" \dFp regression."no.such.schema"."no.such.text.search.parser" \dFt regression."no.such.schema"."no.such.text.search.template" \do regression."no.such.schema"."no.such.operator" \dO regression."no.such.schema"."no.such.collation" \dp regression."no.such.schema"."no.such.access.privilege" \dP regression."no.such.schema"."no.such.partitioned.relation" \dT regression."no.such.schema"."no.such.data.type" \dX regression."no.such.schema"."no.such.extended.statistics" -- again, but with dotted database and dotted schema qualifications. \dt "no.such.database"."no.such.schema"."no.such.table.relation" \da "no.such.database"."no.such.schema"."no.such.aggregate.function" \dc "no.such.database"."no.such.schema"."no.such.conversion" \dC "no.such.database"."no.such.schema"."no.such.cast" \dd "no.such.database"."no.such.schema"."no.such.object.description" \dD "no.such.database"."no.such.schema"."no.such.domain" \ddp "no.such.database"."no.such.schema"."no.such.default.access.privilege" \di "no.such.database"."no.such.schema"."no.such.index.relation" \dm "no.such.database"."no.such.schema"."no.such.materialized.view" \ds "no.such.database"."no.such.schema"."no.such.relation" \dt "no.such.database"."no.such.schema"."no.such.relation" \dv "no.such.database"."no.such.schema"."no.such.relation" \df "no.such.database"."no.such.schema"."no.such.function" \dF "no.such.database"."no.such.schema"."no.such.text.search.configuration" \dFd "no.such.database"."no.such.schema"."no.such.text.search.dictionary" \dFp "no.such.database"."no.such.schema"."no.such.text.search.parser" \dFt "no.such.database"."no.such.schema"."no.such.text.search.template" \do "no.such.database"."no.such.schema"."no.such.operator" \dO "no.such.database"."no.such.schema"."no.such.collation" \dp "no.such.database"."no.such.schema"."no.such.access.privilege" \dP "no.such.database"."no.such.schema"."no.such.partitioned.relation" \dT "no.such.database"."no.such.schema"."no.such.data.type" \dX "no.such.database"."no.such.schema"."no.such.extended.statistics" -- check \drg and \du CREATE ROLE regress_du_role0; CREATE ROLE regress_du_role1; CREATE ROLE regress_du_role2; CREATE ROLE regress_du_admin; GRANT regress_du_role0 TO regress_du_admin WITH ADMIN TRUE; GRANT regress_du_role1 TO regress_du_admin WITH ADMIN TRUE; GRANT regress_du_role2 TO regress_du_admin WITH ADMIN TRUE; GRANT regress_du_role0 TO regress_du_role1 WITH ADMIN TRUE, INHERIT TRUE, SET TRUE GRANTED BY regress_du_admin; GRANT regress_du_role0 TO regress_du_role2 WITH ADMIN TRUE, INHERIT FALSE, SET FALSE GRANTED BY regress_du_admin; GRANT regress_du_role1 TO regress_du_role2 WITH ADMIN TRUE , INHERIT FALSE, SET TRUE GRANTED BY regress_du_admin; GRANT regress_du_role0 TO regress_du_role1 WITH ADMIN FALSE, INHERIT TRUE, SET FALSE GRANTED BY regress_du_role1; GRANT regress_du_role0 TO regress_du_role2 WITH ADMIN FALSE, INHERIT TRUE , SET TRUE GRANTED BY regress_du_role1; GRANT regress_du_role0 TO regress_du_role1 WITH ADMIN FALSE, INHERIT FALSE, SET TRUE GRANTED BY regress_du_role2; GRANT regress_du_role0 TO regress_du_role2 WITH ADMIN FALSE, INHERIT FALSE, SET FALSE GRANTED BY regress_du_role2; \drg regress_du_role* \du regress_du_role* DROP ROLE regress_du_role0; DROP ROLE regress_du_role1; DROP ROLE regress_du_role2; DROP ROLE regress_du_admin; -- Test display of empty privileges. BEGIN; -- Create an owner for tested objects because output contains owner name. CREATE ROLE regress_zeropriv_owner; SET LOCAL ROLE regress_zeropriv_owner; CREATE DOMAIN regress_zeropriv_domain AS int; REVOKE ALL ON DOMAIN regress_zeropriv_domain FROM CURRENT_USER, PUBLIC; \dD+ regress_zeropriv_domain CREATE PROCEDURE regress_zeropriv_proc() LANGUAGE sql AS ''; REVOKE ALL ON PROCEDURE regress_zeropriv_proc() FROM CURRENT_USER, PUBLIC; \df+ regress_zeropriv_proc CREATE TABLE regress_zeropriv_tbl (a int); REVOKE ALL ON TABLE regress_zeropriv_tbl FROM CURRENT_USER; \dp regress_zeropriv_tbl CREATE TYPE regress_zeropriv_type AS (a int); REVOKE ALL ON TYPE regress_zeropriv_type FROM CURRENT_USER, PUBLIC; \dT+ regress_zeropriv_type ROLLBACK; -- Test display of default privileges with \pset null. CREATE TABLE defprivs (a int); \pset null '(default)' \z defprivs \pset null '' DROP TABLE defprivs; libpg_query-17-6.1.0/test/sql/postgres_regress/psql_crosstab.sql000066400000000000000000000071461477334012600250620ustar00rootroot00000000000000-- -- \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-17-6.1.0/test/sql/postgres_regress/publication.sql000066400000000000000000001375541477334012600245230ustar00rootroot00000000000000-- -- 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; -- fail - can't add schema to 'FOR ALL TABLES' publication ALTER PUBLICATION testpub_foralltables ADD TABLES IN SCHEMA pub_test; -- fail - can't drop schema from 'FOR ALL TABLES' publication ALTER PUBLICATION testpub_foralltables DROP TABLES IN SCHEMA pub_test; -- fail - can't set schema to 'FOR ALL TABLES' publication ALTER PUBLICATION testpub_foralltables SET TABLES IN SCHEMA pub_test; SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_fortable FOR TABLE testpub_tbl1; RESET client_min_messages; -- should be able to add schema to 'FOR TABLE' publication ALTER PUBLICATION testpub_fortable ADD TABLES IN SCHEMA pub_test; \dRp+ testpub_fortable -- should be able to drop schema from 'FOR TABLE' publication ALTER PUBLICATION testpub_fortable DROP TABLES IN SCHEMA pub_test; \dRp+ testpub_fortable -- should be able to set schema to 'FOR TABLE' publication ALTER PUBLICATION testpub_fortable SET TABLES IN SCHEMA pub_test; \dRp+ testpub_fortable SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_forschema FOR TABLES IN SCHEMA pub_test; -- should be able to create publication with schema and table of the same -- schema CREATE PUBLICATION testpub_for_tbl_schema FOR TABLES IN SCHEMA pub_test, TABLE pub_test.testpub_nopk; RESET client_min_messages; \dRp+ testpub_for_tbl_schema -- weird parser corner case CREATE PUBLICATION testpub_parsertst FOR TABLE pub_test.testpub_nopk, CURRENT_SCHEMA; CREATE PUBLICATION testpub_parsertst FOR TABLES IN SCHEMA foo, test.foo; -- should be able to add a table of the same schema to the schema publication ALTER PUBLICATION testpub_forschema ADD TABLE pub_test.testpub_nopk; \dRp+ testpub_forschema -- should be able to drop the table ALTER PUBLICATION testpub_forschema DROP TABLE pub_test.testpub_nopk; \dRp+ testpub_forschema -- fail - can't drop a table from the schema publication which isn't in the -- publication ALTER PUBLICATION testpub_forschema DROP TABLE pub_test.testpub_nopk; -- should be able to set table to schema publication ALTER PUBLICATION testpub_forschema SET TABLE pub_test.testpub_nopk; \dRp+ testpub_forschema SELECT pubname, puballtables FROM pg_publication WHERE pubname = 'testpub_foralltables'; \d+ testpub_tbl2 \dRp+ testpub_foralltables DROP TABLE testpub_tbl2; DROP PUBLICATION testpub_foralltables, testpub_fortable, testpub_forschema, testpub_for_tbl_schema; 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); CREATE TABLE testpub_parted2 (LIKE testpub_parted); ALTER PUBLICATION testpub_forparted1 SET (publish='insert'); ALTER TABLE testpub_parted ATTACH PARTITION testpub_parted1 FOR VALUES IN (1); ALTER TABLE testpub_parted ATTACH PARTITION testpub_parted2 FOR VALUES IN (2); -- works despite missing REPLICA IDENTITY, because updates are not replicated UPDATE testpub_parted1 SET a = 1; -- only parent is listed as being in publication, not the partition ALTER PUBLICATION testpub_forparted ADD TABLE testpub_parted; \dRp+ testpub_forparted -- works despite missing REPLICA IDENTITY, because no actual update happened UPDATE testpub_parted SET a = 1 WHERE false; -- 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 -- still fail, because parent's publication replicates updates UPDATE testpub_parted2 SET a = 2; ALTER PUBLICATION testpub_forparted DROP TABLE testpub_parted; -- works again, because update is no longer replicated UPDATE testpub_parted2 SET a = 2; DROP TABLE testpub_parted1, testpub_parted2; DROP PUBLICATION testpub_forparted, testpub_forparted1; -- Tests for row filters CREATE TABLE testpub_rf_tbl1 (a integer, b text); CREATE TABLE testpub_rf_tbl2 (c text, d integer); CREATE TABLE testpub_rf_tbl3 (e integer); CREATE TABLE testpub_rf_tbl4 (g text); CREATE TABLE testpub_rf_tbl5 (a xml); CREATE SCHEMA testpub_rf_schema1; CREATE TABLE testpub_rf_schema1.testpub_rf_tbl5 (h integer); CREATE SCHEMA testpub_rf_schema2; CREATE TABLE testpub_rf_schema2.testpub_rf_tbl6 (i integer); SET client_min_messages = 'ERROR'; -- Firstly, test using the option publish='insert' because the row filter -- validation of referenced columns is less strict than for delete/update. CREATE PUBLICATION testpub5 FOR TABLE testpub_rf_tbl1, testpub_rf_tbl2 WHERE (c <> 'test' AND d < 5) WITH (publish = 'insert'); RESET client_min_messages; \dRp+ testpub5 \d testpub_rf_tbl3 ALTER PUBLICATION testpub5 ADD TABLE testpub_rf_tbl3 WHERE (e > 1000 AND e < 2000); \dRp+ testpub5 \d testpub_rf_tbl3 ALTER PUBLICATION testpub5 DROP TABLE testpub_rf_tbl2; \dRp+ testpub5 -- remove testpub_rf_tbl1 and add testpub_rf_tbl3 again (another WHERE expression) ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl3 WHERE (e > 300 AND e < 500); \dRp+ testpub5 \d testpub_rf_tbl3 -- test \d (now it displays filter information) SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_rf_yes FOR TABLE testpub_rf_tbl1 WHERE (a > 1) WITH (publish = 'insert'); CREATE PUBLICATION testpub_rf_no FOR TABLE testpub_rf_tbl1; RESET client_min_messages; \d testpub_rf_tbl1 DROP PUBLICATION testpub_rf_yes, testpub_rf_no; -- some more syntax tests to exercise other parser pathways SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_syntax1 FOR TABLE testpub_rf_tbl1, ONLY testpub_rf_tbl3 WHERE (e < 999) WITH (publish = 'insert'); RESET client_min_messages; \dRp+ testpub_syntax1 DROP PUBLICATION testpub_syntax1; SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_syntax2 FOR TABLE testpub_rf_tbl1, testpub_rf_schema1.testpub_rf_tbl5 WHERE (h < 999) WITH (publish = 'insert'); RESET client_min_messages; \dRp+ testpub_syntax2 DROP PUBLICATION testpub_syntax2; -- fail - schemas don't allow WHERE clause SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_syntax3 FOR TABLES IN SCHEMA testpub_rf_schema1 WHERE (a = 123); CREATE PUBLICATION testpub_syntax3 FOR TABLES IN SCHEMA testpub_rf_schema1, testpub_rf_schema1 WHERE (a = 123); RESET client_min_messages; -- fail - duplicate tables are not allowed if that table has any WHERE clause SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_dups FOR TABLE testpub_rf_tbl1 WHERE (a = 1), testpub_rf_tbl1 WITH (publish = 'insert'); CREATE PUBLICATION testpub_dups FOR TABLE testpub_rf_tbl1, testpub_rf_tbl1 WHERE (a = 2) WITH (publish = 'insert'); RESET client_min_messages; -- fail - publication WHERE clause must be boolean ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl3 WHERE (1234); -- fail - aggregate functions not allowed in WHERE clause ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl3 WHERE (e < AVG(e)); -- fail - user-defined operators are not allowed CREATE FUNCTION testpub_rf_func1(integer, integer) RETURNS boolean AS $$ SELECT hashint4($1) > $2 $$ LANGUAGE SQL; CREATE OPERATOR =#> (PROCEDURE = testpub_rf_func1, LEFTARG = integer, RIGHTARG = integer); CREATE PUBLICATION testpub6 FOR TABLE testpub_rf_tbl3 WHERE (e =#> 27); -- fail - user-defined functions are not allowed CREATE FUNCTION testpub_rf_func2() RETURNS integer AS $$ BEGIN RETURN 123; END; $$ LANGUAGE plpgsql; ALTER PUBLICATION testpub5 ADD TABLE testpub_rf_tbl1 WHERE (a >= testpub_rf_func2()); -- fail - non-immutable functions are not allowed. random() is volatile. ALTER PUBLICATION testpub5 ADD TABLE testpub_rf_tbl1 WHERE (a < random()); -- fail - user-defined collations are not allowed CREATE COLLATION user_collation FROM "C"; ALTER PUBLICATION testpub5 ADD TABLE testpub_rf_tbl1 WHERE (b < '2' COLLATE user_collation); -- ok - NULLIF is allowed ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl1 WHERE (NULLIF(1,2) = a); -- ok - built-in operators are allowed ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl1 WHERE (a IS NULL); ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl1 WHERE ((a > 5) IS FALSE); ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl1 WHERE (a IS DISTINCT FROM 5); ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl1 WHERE ((a, a + 1) < (2, 3)); -- ok - built-in type coercions between two binary compatible datatypes are allowed ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl1 WHERE (b::varchar < '2'); -- ok - immutable built-in functions are allowed ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl4 WHERE (length(g) < 6); -- fail - user-defined types are not allowed CREATE TYPE rf_bug_status AS ENUM ('new', 'open', 'closed'); CREATE TABLE rf_bug (id serial, description text, status rf_bug_status); CREATE PUBLICATION testpub6 FOR TABLE rf_bug WHERE (status = 'open') WITH (publish = 'insert'); DROP TABLE rf_bug; DROP TYPE rf_bug_status; -- fail - row filter expression is not simple CREATE PUBLICATION testpub6 FOR TABLE testpub_rf_tbl1 WHERE (a IN (SELECT generate_series(1,5))); -- fail - system columns are not allowed CREATE PUBLICATION testpub6 FOR TABLE testpub_rf_tbl1 WHERE ('(0,1)'::tid = ctid); -- ok - conditional expressions are allowed ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl5 WHERE (a IS DOCUMENT); ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl5 WHERE (xmlexists('//foo[text() = ''bar'']' PASSING BY VALUE a)); ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl1 WHERE (NULLIF(1, 2) = a); ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl1 WHERE (CASE a WHEN 5 THEN true ELSE false END); ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl1 WHERE (COALESCE(b, 'foo') = 'foo'); ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl1 WHERE (GREATEST(a, 10) > 10); ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl1 WHERE (a IN (2, 4, 6)); ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl1 WHERE (ARRAY[a] <@ ARRAY[2, 4, 6]); ALTER PUBLICATION testpub5 SET TABLE testpub_rf_tbl1 WHERE (ROW(a, 2) IS NULL); -- fail - WHERE not allowed in DROP ALTER PUBLICATION testpub5 DROP TABLE testpub_rf_tbl1 WHERE (e < 27); -- fail - cannot ALTER SET table which is a member of a pre-existing schema SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub6 FOR TABLES IN SCHEMA testpub_rf_schema2; -- should be able to set publication with schema and table of the same schema ALTER PUBLICATION testpub6 SET TABLES IN SCHEMA testpub_rf_schema2, TABLE testpub_rf_schema2.testpub_rf_tbl6 WHERE (i < 99); RESET client_min_messages; \dRp+ testpub6 DROP TABLE testpub_rf_tbl1; DROP TABLE testpub_rf_tbl2; DROP TABLE testpub_rf_tbl3; DROP TABLE testpub_rf_tbl4; DROP TABLE testpub_rf_tbl5; DROP TABLE testpub_rf_schema1.testpub_rf_tbl5; DROP TABLE testpub_rf_schema2.testpub_rf_tbl6; DROP SCHEMA testpub_rf_schema1; DROP SCHEMA testpub_rf_schema2; DROP PUBLICATION testpub5; DROP PUBLICATION testpub6; DROP OPERATOR =#>(integer, integer); DROP FUNCTION testpub_rf_func1(integer, integer); DROP FUNCTION testpub_rf_func2(); DROP COLLATION user_collation; -- ====================================================== -- More row filter tests for validating column references CREATE TABLE rf_tbl_abcd_nopk(a int, b int, c int, d int); CREATE TABLE rf_tbl_abcd_pk(a int, b int, c int, d int, PRIMARY KEY(a,b)); CREATE TABLE rf_tbl_abcd_part_pk (a int PRIMARY KEY, b int) PARTITION by RANGE (a); CREATE TABLE rf_tbl_abcd_part_pk_1 (b int, a int PRIMARY KEY); ALTER TABLE rf_tbl_abcd_part_pk ATTACH PARTITION rf_tbl_abcd_part_pk_1 FOR VALUES FROM (1) TO (10); -- Case 1. REPLICA IDENTITY DEFAULT (means use primary key or nothing) -- 1a. REPLICA IDENTITY is DEFAULT and table has a PK. SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub6 FOR TABLE rf_tbl_abcd_pk WHERE (a > 99); RESET client_min_messages; -- ok - "a" is a PK col UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk WHERE (b > 99); -- ok - "b" is a PK col UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk WHERE (c > 99); -- fail - "c" is not part of the PK UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk WHERE (d > 99); -- fail - "d" is not part of the PK UPDATE rf_tbl_abcd_pk SET a = 1; -- 1b. REPLICA IDENTITY is DEFAULT and table has no PK ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_nopk WHERE (a > 99); -- fail - "a" is not part of REPLICA IDENTITY UPDATE rf_tbl_abcd_nopk SET a = 1; -- Case 2. REPLICA IDENTITY FULL ALTER TABLE rf_tbl_abcd_pk REPLICA IDENTITY FULL; ALTER TABLE rf_tbl_abcd_nopk REPLICA IDENTITY FULL; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk WHERE (c > 99); -- ok - "c" is in REPLICA IDENTITY now even though not in PK UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_nopk WHERE (a > 99); -- ok - "a" is in REPLICA IDENTITY now UPDATE rf_tbl_abcd_nopk SET a = 1; -- Case 3. REPLICA IDENTITY NOTHING ALTER TABLE rf_tbl_abcd_pk REPLICA IDENTITY NOTHING; ALTER TABLE rf_tbl_abcd_nopk REPLICA IDENTITY NOTHING; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk WHERE (a > 99); -- fail - "a" is in PK but it is not part of REPLICA IDENTITY NOTHING UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk WHERE (c > 99); -- fail - "c" is not in PK and not in REPLICA IDENTITY NOTHING UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_nopk WHERE (a > 99); -- fail - "a" is not in REPLICA IDENTITY NOTHING UPDATE rf_tbl_abcd_nopk SET a = 1; -- Case 4. REPLICA IDENTITY INDEX ALTER TABLE rf_tbl_abcd_pk ALTER COLUMN c SET NOT NULL; CREATE UNIQUE INDEX idx_abcd_pk_c ON rf_tbl_abcd_pk(c); ALTER TABLE rf_tbl_abcd_pk REPLICA IDENTITY USING INDEX idx_abcd_pk_c; ALTER TABLE rf_tbl_abcd_nopk ALTER COLUMN c SET NOT NULL; CREATE UNIQUE INDEX idx_abcd_nopk_c ON rf_tbl_abcd_nopk(c); ALTER TABLE rf_tbl_abcd_nopk REPLICA IDENTITY USING INDEX idx_abcd_nopk_c; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk WHERE (a > 99); -- fail - "a" is in PK but it is not part of REPLICA IDENTITY INDEX UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk WHERE (c > 99); -- ok - "c" is not in PK but it is part of REPLICA IDENTITY INDEX UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_nopk WHERE (a > 99); -- fail - "a" is not in REPLICA IDENTITY INDEX UPDATE rf_tbl_abcd_nopk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_nopk WHERE (c > 99); -- ok - "c" is part of REPLICA IDENTITY INDEX UPDATE rf_tbl_abcd_nopk SET a = 1; -- Tests for partitioned table -- set PUBLISH_VIA_PARTITION_ROOT to false and test row filter for partitioned -- table ALTER PUBLICATION testpub6 SET (PUBLISH_VIA_PARTITION_ROOT=0); -- fail - cannot use row filter for partitioned table ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_part_pk WHERE (a > 99); -- ok - can use row filter for partition ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_part_pk_1 WHERE (a > 99); -- ok - "a" is a PK col UPDATE rf_tbl_abcd_part_pk SET a = 1; -- set PUBLISH_VIA_PARTITION_ROOT to true and test row filter for partitioned -- table ALTER PUBLICATION testpub6 SET (PUBLISH_VIA_PARTITION_ROOT=1); -- ok - can use row filter for partitioned table ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_part_pk WHERE (a > 99); -- ok - "a" is a PK col UPDATE rf_tbl_abcd_part_pk SET a = 1; -- fail - cannot set PUBLISH_VIA_PARTITION_ROOT to false if any row filter is -- used for partitioned table ALTER PUBLICATION testpub6 SET (PUBLISH_VIA_PARTITION_ROOT=0); -- remove partitioned table's row filter ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_part_pk; -- ok - we don't have row filter for partitioned table. ALTER PUBLICATION testpub6 SET (PUBLISH_VIA_PARTITION_ROOT=0); -- Now change the root filter to use a column "b" -- (which is not in the replica identity) ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_part_pk_1 WHERE (b > 99); -- ok - we don't have row filter for partitioned table. ALTER PUBLICATION testpub6 SET (PUBLISH_VIA_PARTITION_ROOT=0); -- fail - "b" is not in REPLICA IDENTITY INDEX UPDATE rf_tbl_abcd_part_pk SET a = 1; -- set PUBLISH_VIA_PARTITION_ROOT to true -- can use row filter for partitioned table ALTER PUBLICATION testpub6 SET (PUBLISH_VIA_PARTITION_ROOT=1); -- ok - can use row filter for partitioned table ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_part_pk WHERE (b > 99); -- fail - "b" is not in REPLICA IDENTITY INDEX UPDATE rf_tbl_abcd_part_pk SET a = 1; DROP PUBLICATION testpub6; DROP TABLE rf_tbl_abcd_pk; DROP TABLE rf_tbl_abcd_nopk; DROP TABLE rf_tbl_abcd_part_pk; -- ====================================================== -- fail - duplicate tables are not allowed if that table has any column lists SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_dups FOR TABLE testpub_tbl1 (a), testpub_tbl1 WITH (publish = 'insert'); CREATE PUBLICATION testpub_dups FOR TABLE testpub_tbl1, testpub_tbl1 (a) WITH (publish = 'insert'); RESET client_min_messages; -- test for column lists SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_fortable FOR TABLE testpub_tbl1; CREATE PUBLICATION testpub_fortable_insert WITH (publish = 'insert'); RESET client_min_messages; CREATE TABLE testpub_tbl5 (a int PRIMARY KEY, b text, c text, d int generated always as (a + length(b)) stored); -- error: column "x" does not exist ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, x); -- error: replica identity "a" not included in the column list ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (b, c); UPDATE testpub_tbl5 SET a = 1; ALTER PUBLICATION testpub_fortable DROP TABLE testpub_tbl5; -- error: generated column "d" can't be in list ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, d); -- error: system attributes "ctid" not allowed in column list ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, ctid); -- ok ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, c); ALTER TABLE testpub_tbl5 DROP COLUMN c; -- no dice -- ok: for insert-only publication, any column list is acceptable ALTER PUBLICATION testpub_fortable_insert ADD TABLE testpub_tbl5 (b, c); /* not all replica identities are good enough */ CREATE UNIQUE INDEX testpub_tbl5_b_key ON testpub_tbl5 (b, c); ALTER TABLE testpub_tbl5 ALTER b SET NOT NULL, ALTER c SET NOT NULL; ALTER TABLE testpub_tbl5 REPLICA IDENTITY USING INDEX testpub_tbl5_b_key; -- error: replica identity (b,c) is not covered by column list (a, c) UPDATE testpub_tbl5 SET a = 1; ALTER PUBLICATION testpub_fortable DROP TABLE testpub_tbl5; -- error: change the replica identity to "b", and column list to (a, c) -- then update fails, because (a, c) does not cover replica identity ALTER TABLE testpub_tbl5 REPLICA IDENTITY USING INDEX testpub_tbl5_b_key; ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, c); UPDATE testpub_tbl5 SET a = 1; /* But if upd/del are not published, it works OK */ SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_table_ins WITH (publish = 'insert, truncate'); RESET client_min_messages; ALTER PUBLICATION testpub_table_ins ADD TABLE testpub_tbl5 (a); -- ok \dRp+ testpub_table_ins -- error: cannot work with deferrable primary keys CREATE TABLE testpub_tbl5d (a int PRIMARY KEY DEFERRABLE); ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5d; UPDATE testpub_tbl5d SET a = 1; /* but works fine with FULL replica identity */ ALTER TABLE testpub_tbl5d REPLICA IDENTITY FULL; UPDATE testpub_tbl5d SET a = 1; DROP TABLE testpub_tbl5d; -- tests with REPLICA IDENTITY FULL CREATE TABLE testpub_tbl6 (a int, b text, c text); ALTER TABLE testpub_tbl6 REPLICA IDENTITY FULL; ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl6 (a, b, c); UPDATE testpub_tbl6 SET a = 1; ALTER PUBLICATION testpub_fortable DROP TABLE testpub_tbl6; ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl6; -- ok UPDATE testpub_tbl6 SET a = 1; -- make sure changing the column list is propagated to the catalog CREATE TABLE testpub_tbl7 (a int primary key, b text, c text); ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl7 (a, b); \d+ testpub_tbl7 -- ok: the column list is the same, we should skip this table (or at least not fail) ALTER PUBLICATION testpub_fortable SET TABLE testpub_tbl7 (a, b); \d+ testpub_tbl7 -- ok: the column list changes, make sure the catalog gets updated ALTER PUBLICATION testpub_fortable SET TABLE testpub_tbl7 (a, c); \d+ testpub_tbl7 -- column list for partitioned tables has to cover replica identities for -- all child relations CREATE TABLE testpub_tbl8 (a int, b text, c text) PARTITION BY HASH (a); -- first partition has replica identity "a" CREATE TABLE testpub_tbl8_0 PARTITION OF testpub_tbl8 FOR VALUES WITH (modulus 2, remainder 0); ALTER TABLE testpub_tbl8_0 ADD PRIMARY KEY (a); ALTER TABLE testpub_tbl8_0 REPLICA IDENTITY USING INDEX testpub_tbl8_0_pkey; -- second partition has replica identity "b" CREATE TABLE testpub_tbl8_1 PARTITION OF testpub_tbl8 FOR VALUES WITH (modulus 2, remainder 1); ALTER TABLE testpub_tbl8_1 ADD PRIMARY KEY (b); ALTER TABLE testpub_tbl8_1 REPLICA IDENTITY USING INDEX testpub_tbl8_1_pkey; -- ok: column list covers both "a" and "b" SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_col_list FOR TABLE testpub_tbl8 (a, b) WITH (publish_via_partition_root = 'true'); RESET client_min_messages; -- ok: the same thing, but try plain ADD TABLE ALTER PUBLICATION testpub_col_list DROP TABLE testpub_tbl8; ALTER PUBLICATION testpub_col_list ADD TABLE testpub_tbl8 (a, b); UPDATE testpub_tbl8 SET a = 1; -- failure: column list does not cover replica identity for the second partition ALTER PUBLICATION testpub_col_list DROP TABLE testpub_tbl8; ALTER PUBLICATION testpub_col_list ADD TABLE testpub_tbl8 (a, c); UPDATE testpub_tbl8 SET a = 1; ALTER PUBLICATION testpub_col_list DROP TABLE testpub_tbl8; -- failure: one of the partitions has REPLICA IDENTITY FULL ALTER TABLE testpub_tbl8_1 REPLICA IDENTITY FULL; ALTER PUBLICATION testpub_col_list ADD TABLE testpub_tbl8 (a, c); UPDATE testpub_tbl8 SET a = 1; ALTER PUBLICATION testpub_col_list DROP TABLE testpub_tbl8; -- add table and then try changing replica identity ALTER TABLE testpub_tbl8_1 REPLICA IDENTITY USING INDEX testpub_tbl8_1_pkey; ALTER PUBLICATION testpub_col_list ADD TABLE testpub_tbl8 (a, b); -- failure: replica identity full can't be used with a column list ALTER TABLE testpub_tbl8_1 REPLICA IDENTITY FULL; UPDATE testpub_tbl8 SET a = 1; -- failure: replica identity has to be covered by the column list ALTER TABLE testpub_tbl8_1 DROP CONSTRAINT testpub_tbl8_1_pkey; ALTER TABLE testpub_tbl8_1 ADD PRIMARY KEY (c); ALTER TABLE testpub_tbl8_1 REPLICA IDENTITY USING INDEX testpub_tbl8_1_pkey; UPDATE testpub_tbl8 SET a = 1; DROP TABLE testpub_tbl8; -- column list for partitioned tables has to cover replica identities for -- all child relations CREATE TABLE testpub_tbl8 (a int, b text, c text) PARTITION BY HASH (a); ALTER PUBLICATION testpub_col_list ADD TABLE testpub_tbl8 (a, b); -- first partition has replica identity "a" CREATE TABLE testpub_tbl8_0 (a int, b text, c text); ALTER TABLE testpub_tbl8_0 ADD PRIMARY KEY (a); ALTER TABLE testpub_tbl8_0 REPLICA IDENTITY USING INDEX testpub_tbl8_0_pkey; -- second partition has replica identity "b" CREATE TABLE testpub_tbl8_1 (a int, b text, c text); ALTER TABLE testpub_tbl8_1 ADD PRIMARY KEY (c); ALTER TABLE testpub_tbl8_1 REPLICA IDENTITY USING INDEX testpub_tbl8_1_pkey; -- ok: attaching first partition works, because (a) is in column list ALTER TABLE testpub_tbl8 ATTACH PARTITION testpub_tbl8_0 FOR VALUES WITH (modulus 2, remainder 0); -- failure: second partition has replica identity (c), which si not in column list ALTER TABLE testpub_tbl8 ATTACH PARTITION testpub_tbl8_1 FOR VALUES WITH (modulus 2, remainder 1); UPDATE testpub_tbl8 SET a = 1; -- failure: changing replica identity to FULL for partition fails, because -- of the column list on the parent ALTER TABLE testpub_tbl8_0 REPLICA IDENTITY FULL; UPDATE testpub_tbl8 SET a = 1; -- test that using column list for table is disallowed if any schemas are -- part of the publication SET client_min_messages = 'ERROR'; -- failure - cannot use column list and schema together CREATE PUBLICATION testpub_tbl9 FOR TABLES IN SCHEMA public, TABLE public.testpub_tbl7(a); -- ok - only publish schema CREATE PUBLICATION testpub_tbl9 FOR TABLES IN SCHEMA public; -- failure - add a table with column list when there is already a schema in the -- publication ALTER PUBLICATION testpub_tbl9 ADD TABLE public.testpub_tbl7(a); -- ok - only publish table with column list ALTER PUBLICATION testpub_tbl9 SET TABLE public.testpub_tbl7(a); -- failure - specify a schema when there is already a column list in the -- publication ALTER PUBLICATION testpub_tbl9 ADD TABLES IN SCHEMA public; -- failure - cannot SET column list and schema together ALTER PUBLICATION testpub_tbl9 SET TABLES IN SCHEMA public, TABLE public.testpub_tbl7(a); -- ok - drop table ALTER PUBLICATION testpub_tbl9 DROP TABLE public.testpub_tbl7; -- failure - cannot ADD column list and schema together ALTER PUBLICATION testpub_tbl9 ADD TABLES IN SCHEMA public, TABLE public.testpub_tbl7(a); RESET client_min_messages; DROP TABLE testpub_tbl5, testpub_tbl6, testpub_tbl7, testpub_tbl8, testpub_tbl8_1; DROP PUBLICATION testpub_table_ins, testpub_fortable, testpub_fortable_insert, testpub_col_list, testpub_tbl9; -- ====================================================== -- Test combination of column list and row filter SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_both_filters; RESET client_min_messages; CREATE TABLE testpub_tbl_both_filters (a int, b int, c int, PRIMARY KEY (a,c)); ALTER TABLE testpub_tbl_both_filters REPLICA IDENTITY USING INDEX testpub_tbl_both_filters_pkey; ALTER PUBLICATION testpub_both_filters ADD TABLE testpub_tbl_both_filters (a,c) WHERE (c != 1); \dRp+ testpub_both_filters \d+ testpub_tbl_both_filters DROP TABLE testpub_tbl_both_filters; DROP PUBLICATION testpub_both_filters; -- ====================================================== -- More column list tests for validating column references CREATE TABLE rf_tbl_abcd_nopk(a int, b int, c int, d int); CREATE TABLE rf_tbl_abcd_pk(a int, b int, c int, d int, PRIMARY KEY(a,b)); CREATE TABLE rf_tbl_abcd_part_pk (a int PRIMARY KEY, b int) PARTITION by RANGE (a); CREATE TABLE rf_tbl_abcd_part_pk_1 (b int, a int PRIMARY KEY); ALTER TABLE rf_tbl_abcd_part_pk ATTACH PARTITION rf_tbl_abcd_part_pk_1 FOR VALUES FROM (1) TO (10); -- Case 1. REPLICA IDENTITY DEFAULT (means use primary key or nothing) -- 1a. REPLICA IDENTITY is DEFAULT and table has a PK. SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub6 FOR TABLE rf_tbl_abcd_pk (a, b); RESET client_min_messages; -- ok - (a,b) covers all PK cols UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk (a, b, c); -- ok - (a,b,c) covers all PK cols UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk (a); -- fail - "b" is missing from the column list UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk (b); -- fail - "a" is missing from the column list UPDATE rf_tbl_abcd_pk SET a = 1; -- 1b. REPLICA IDENTITY is DEFAULT and table has no PK ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_nopk (a); -- ok - there's no replica identity, so any column list works -- note: it fails anyway, just a bit later because UPDATE requires RI UPDATE rf_tbl_abcd_nopk SET a = 1; -- Case 2. REPLICA IDENTITY FULL ALTER TABLE rf_tbl_abcd_pk REPLICA IDENTITY FULL; ALTER TABLE rf_tbl_abcd_nopk REPLICA IDENTITY FULL; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk (c); -- fail - with REPLICA IDENTITY FULL no column list is allowed UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_nopk (a, b, c, d); -- fail - with REPLICA IDENTITY FULL no column list is allowed UPDATE rf_tbl_abcd_nopk SET a = 1; -- Case 3. REPLICA IDENTITY NOTHING ALTER TABLE rf_tbl_abcd_pk REPLICA IDENTITY NOTHING; ALTER TABLE rf_tbl_abcd_nopk REPLICA IDENTITY NOTHING; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk (a); -- ok - REPLICA IDENTITY NOTHING means all column lists are valid -- it still fails later because without RI we can't replicate updates UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk (a, b, c, d); -- ok - REPLICA IDENTITY NOTHING means all column lists are valid -- it still fails later because without RI we can't replicate updates UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_nopk (d); -- ok - REPLICA IDENTITY NOTHING means all column lists are valid -- it still fails later because without RI we can't replicate updates UPDATE rf_tbl_abcd_nopk SET a = 1; -- Case 4. REPLICA IDENTITY INDEX ALTER TABLE rf_tbl_abcd_pk ALTER COLUMN c SET NOT NULL; CREATE UNIQUE INDEX idx_abcd_pk_c ON rf_tbl_abcd_pk(c); ALTER TABLE rf_tbl_abcd_pk REPLICA IDENTITY USING INDEX idx_abcd_pk_c; ALTER TABLE rf_tbl_abcd_nopk ALTER COLUMN c SET NOT NULL; CREATE UNIQUE INDEX idx_abcd_nopk_c ON rf_tbl_abcd_nopk(c); ALTER TABLE rf_tbl_abcd_nopk REPLICA IDENTITY USING INDEX idx_abcd_nopk_c; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk (a); -- fail - column list "a" does not cover the REPLICA IDENTITY INDEX on "c" UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_pk (c); -- ok - column list "c" does cover the REPLICA IDENTITY INDEX on "c" UPDATE rf_tbl_abcd_pk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_nopk (a); -- fail - column list "a" does not cover the REPLICA IDENTITY INDEX on "c" UPDATE rf_tbl_abcd_nopk SET a = 1; ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_nopk (c); -- ok - column list "c" does cover the REPLICA IDENTITY INDEX on "c" UPDATE rf_tbl_abcd_nopk SET a = 1; -- Tests for partitioned table -- set PUBLISH_VIA_PARTITION_ROOT to false and test column list for partitioned -- table ALTER PUBLICATION testpub6 SET (PUBLISH_VIA_PARTITION_ROOT=0); -- fail - cannot use column list for partitioned table ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_part_pk (a); -- ok - can use column list for partition ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_part_pk_1 (a); -- ok - "a" is a PK col UPDATE rf_tbl_abcd_part_pk SET a = 1; -- set PUBLISH_VIA_PARTITION_ROOT to true and test column list for partitioned -- table ALTER PUBLICATION testpub6 SET (PUBLISH_VIA_PARTITION_ROOT=1); -- ok - can use column list for partitioned table ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_part_pk (a); -- ok - "a" is a PK col UPDATE rf_tbl_abcd_part_pk SET a = 1; -- fail - cannot set PUBLISH_VIA_PARTITION_ROOT to false if any column list is -- used for partitioned table ALTER PUBLICATION testpub6 SET (PUBLISH_VIA_PARTITION_ROOT=0); -- remove partitioned table's column list ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_part_pk; -- ok - we don't have column list for partitioned table. ALTER PUBLICATION testpub6 SET (PUBLISH_VIA_PARTITION_ROOT=0); -- Now change the root column list to use a column "b" -- (which is not in the replica identity) ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_part_pk_1 (b); -- ok - we don't have column list for partitioned table. ALTER PUBLICATION testpub6 SET (PUBLISH_VIA_PARTITION_ROOT=0); -- fail - "b" is not in REPLICA IDENTITY INDEX UPDATE rf_tbl_abcd_part_pk SET a = 1; -- set PUBLISH_VIA_PARTITION_ROOT to true -- can use column list for partitioned table ALTER PUBLICATION testpub6 SET (PUBLISH_VIA_PARTITION_ROOT=1); -- ok - can use column list for partitioned table ALTER PUBLICATION testpub6 SET TABLE rf_tbl_abcd_part_pk (b); -- fail - "b" is not in REPLICA IDENTITY INDEX UPDATE rf_tbl_abcd_part_pk SET a = 1; DROP PUBLICATION testpub6; DROP TABLE rf_tbl_abcd_pk; DROP TABLE rf_tbl_abcd_nopk; DROP TABLE rf_tbl_abcd_part_pk; -- ====================================================== -- Test cache invalidation FOR ALL TABLES publication SET client_min_messages = 'ERROR'; CREATE TABLE testpub_tbl4(a int); INSERT INTO testpub_tbl4 values(1); UPDATE testpub_tbl4 set a = 2; CREATE PUBLICATION testpub_foralltables FOR ALL TABLES; RESET client_min_messages; -- fail missing REPLICA IDENTITY UPDATE testpub_tbl4 set a = 3; DROP PUBLICATION testpub_foralltables; -- should pass after dropping the publication UPDATE testpub_tbl4 set a = 3; DROP TABLE testpub_tbl4; -- fail - view CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_view; CREATE TEMPORARY TABLE testpub_temptbl(a int); -- fail - temporary table CREATE PUBLICATION testpub_fortemptbl FOR TABLE testpub_temptbl; DROP TABLE testpub_temptbl; CREATE UNLOGGED TABLE testpub_unloggedtbl(a int); -- fail - unlogged table CREATE PUBLICATION testpub_forunloggedtbl FOR TABLE testpub_unloggedtbl; DROP TABLE testpub_unloggedtbl; -- fail - system table CREATE PUBLICATION testpub_forsystemtbl FOR TABLE pg_publication; 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 -- verify relation cache invalidation when a primary key is added using -- an existing index CREATE TABLE pub_test.testpub_addpk (id int not null, data int); ALTER PUBLICATION testpub_default ADD TABLE pub_test.testpub_addpk; INSERT INTO pub_test.testpub_addpk VALUES(1, 11); CREATE UNIQUE INDEX testpub_addpk_id_idx ON pub_test.testpub_addpk(id); -- fail: UPDATE pub_test.testpub_addpk SET id = 2; ALTER TABLE pub_test.testpub_addpk ADD PRIMARY KEY USING INDEX testpub_addpk_id_idx; -- now it should work: UPDATE pub_test.testpub_addpk SET id = 2; DROP TABLE pub_test.testpub_addpk; -- 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 CREATE PUBLICATION testpub3 FOR TABLES IN SCHEMA pub_test; -- fail CREATE PUBLICATION testpub3; -- ok RESET client_min_messages; ALTER PUBLICATION testpub2 ADD TABLE testpub_tbl1; -- fail ALTER PUBLICATION testpub3 ADD TABLES IN SCHEMA pub_test; -- 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; DROP PUBLICATION testpub3; SET ROLE regress_publication_user; CREATE ROLE regress_publication_user3; GRANT regress_publication_user2 TO regress_publication_user3; SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub4 FOR TABLES IN SCHEMA pub_test; RESET client_min_messages; ALTER PUBLICATION testpub4 OWNER TO regress_publication_user3; SET ROLE regress_publication_user3; -- fail - new owner must be superuser ALTER PUBLICATION testpub4 owner to regress_publication_user2; -- fail ALTER PUBLICATION testpub4 owner to regress_publication_user; -- ok SET ROLE regress_publication_user; DROP PUBLICATION testpub4; DROP ROLE regress_publication_user3; REVOKE CREATE ON DATABASE regression FROM regress_publication_user2; DROP TABLE testpub_parted; 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 -- adding schemas and tables CREATE SCHEMA pub_test1; CREATE SCHEMA pub_test2; CREATE SCHEMA pub_test3; CREATE SCHEMA "CURRENT_SCHEMA"; CREATE TABLE pub_test1.tbl (id int, data text); CREATE TABLE pub_test1.tbl1 (id serial primary key, data text); CREATE TABLE pub_test2.tbl1 (id serial primary key, data text); CREATE TABLE "CURRENT_SCHEMA"."CURRENT_SCHEMA"(id int); -- suppress warning that depends on wal_level SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub1_forschema FOR TABLES IN SCHEMA pub_test1; \dRp+ testpub1_forschema CREATE PUBLICATION testpub2_forschema FOR TABLES IN SCHEMA pub_test1, pub_test2, pub_test3; \dRp+ testpub2_forschema -- check create publication on CURRENT_SCHEMA CREATE PUBLICATION testpub3_forschema FOR TABLES IN SCHEMA CURRENT_SCHEMA; CREATE PUBLICATION testpub4_forschema FOR TABLES IN SCHEMA "CURRENT_SCHEMA"; CREATE PUBLICATION testpub5_forschema FOR TABLES IN SCHEMA CURRENT_SCHEMA, "CURRENT_SCHEMA"; CREATE PUBLICATION testpub6_forschema FOR TABLES IN SCHEMA "CURRENT_SCHEMA", CURRENT_SCHEMA; CREATE PUBLICATION testpub_fortable FOR TABLE "CURRENT_SCHEMA"."CURRENT_SCHEMA"; RESET client_min_messages; \dRp+ testpub3_forschema \dRp+ testpub4_forschema \dRp+ testpub5_forschema \dRp+ testpub6_forschema \dRp+ testpub_fortable -- check create publication on CURRENT_SCHEMA where search_path is not set SET SEARCH_PATH=''; CREATE PUBLICATION testpub_forschema FOR TABLES IN SCHEMA CURRENT_SCHEMA; RESET SEARCH_PATH; -- check create publication on CURRENT_SCHEMA where TABLE/TABLES in SCHEMA -- is not specified CREATE PUBLICATION testpub_forschema1 FOR CURRENT_SCHEMA; -- check create publication on CURRENT_SCHEMA along with FOR TABLE CREATE PUBLICATION testpub_forschema1 FOR TABLE CURRENT_SCHEMA; -- check create publication on a schema that does not exist CREATE PUBLICATION testpub_forschema FOR TABLES IN SCHEMA non_existent_schema; -- check create publication on a system schema CREATE PUBLICATION testpub_forschema FOR TABLES IN SCHEMA pg_catalog; -- check create publication on an object which is not schema CREATE PUBLICATION testpub1_forschema1 FOR TABLES IN SCHEMA testpub_view; -- dropping the schema should reflect the change in publication DROP SCHEMA pub_test3; \dRp+ testpub2_forschema -- renaming the schema should reflect the change in publication ALTER SCHEMA pub_test1 RENAME to pub_test1_renamed; \dRp+ testpub2_forschema ALTER SCHEMA pub_test1_renamed RENAME to pub_test1; \dRp+ testpub2_forschema -- alter publication add schema ALTER PUBLICATION testpub1_forschema ADD TABLES IN SCHEMA pub_test2; \dRp+ testpub1_forschema -- add non existent schema ALTER PUBLICATION testpub1_forschema ADD TABLES IN SCHEMA non_existent_schema; \dRp+ testpub1_forschema -- add a schema which is already added to the publication ALTER PUBLICATION testpub1_forschema ADD TABLES IN SCHEMA pub_test1; \dRp+ testpub1_forschema -- alter publication drop schema ALTER PUBLICATION testpub1_forschema DROP TABLES IN SCHEMA pub_test2; \dRp+ testpub1_forschema -- drop schema that is not present in the publication ALTER PUBLICATION testpub1_forschema DROP TABLES IN SCHEMA pub_test2; \dRp+ testpub1_forschema -- drop a schema that does not exist in the system ALTER PUBLICATION testpub1_forschema DROP TABLES IN SCHEMA non_existent_schema; \dRp+ testpub1_forschema -- drop all schemas ALTER PUBLICATION testpub1_forschema DROP TABLES IN SCHEMA pub_test1; \dRp+ testpub1_forschema -- alter publication set multiple schema ALTER PUBLICATION testpub1_forschema SET TABLES IN SCHEMA pub_test1, pub_test2; \dRp+ testpub1_forschema -- alter publication set non-existent schema ALTER PUBLICATION testpub1_forschema SET TABLES IN SCHEMA non_existent_schema; \dRp+ testpub1_forschema -- alter publication set it duplicate schemas should set the schemas after -- removing the duplicate schemas ALTER PUBLICATION testpub1_forschema SET TABLES IN SCHEMA pub_test1, pub_test1; \dRp+ testpub1_forschema -- Verify that it fails to add a schema with a column specification ALTER PUBLICATION testpub1_forschema ADD TABLES IN SCHEMA foo (a, b); ALTER PUBLICATION testpub1_forschema ADD TABLES IN SCHEMA foo, bar (a, b); -- cleanup pub_test1 schema for invalidation tests ALTER PUBLICATION testpub2_forschema DROP TABLES IN SCHEMA pub_test1; DROP PUBLICATION testpub3_forschema, testpub4_forschema, testpub5_forschema, testpub6_forschema, testpub_fortable; DROP SCHEMA "CURRENT_SCHEMA" CASCADE; -- verify relation cache invalidations through update statement for the -- default REPLICA IDENTITY on the relation, if schema is part of the -- publication then update will fail because relation's relreplident -- option will be set, if schema is not part of the publication then update -- will be successful. INSERT INTO pub_test1.tbl VALUES(1, 'test'); -- fail UPDATE pub_test1.tbl SET id = 2; ALTER PUBLICATION testpub1_forschema DROP TABLES IN SCHEMA pub_test1; -- success UPDATE pub_test1.tbl SET id = 2; ALTER PUBLICATION testpub1_forschema SET TABLES IN SCHEMA pub_test1; -- fail UPDATE pub_test1.tbl SET id = 2; -- verify invalidation of partition table having parent and child tables in -- different schema CREATE SCHEMA pub_testpart1; CREATE SCHEMA pub_testpart2; CREATE TABLE pub_testpart1.parent1 (a int) partition by list (a); CREATE TABLE pub_testpart2.child_parent1 partition of pub_testpart1.parent1 for values in (1); INSERT INTO pub_testpart2.child_parent1 values(1); UPDATE pub_testpart2.child_parent1 set a = 1; SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpubpart_forschema FOR TABLES IN SCHEMA pub_testpart1; RESET client_min_messages; -- fail UPDATE pub_testpart1.parent1 set a = 1; UPDATE pub_testpart2.child_parent1 set a = 1; DROP PUBLICATION testpubpart_forschema; -- verify invalidation of partition tables for schema publication that has -- parent and child tables of different partition hierarchies CREATE TABLE pub_testpart2.parent2 (a int) partition by list (a); CREATE TABLE pub_testpart1.child_parent2 partition of pub_testpart2.parent2 for values in (1); INSERT INTO pub_testpart1.child_parent2 values(1); UPDATE pub_testpart1.child_parent2 set a = 1; SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpubpart_forschema FOR TABLES IN SCHEMA pub_testpart2; RESET client_min_messages; -- fail UPDATE pub_testpart2.child_parent1 set a = 1; UPDATE pub_testpart2.parent2 set a = 1; UPDATE pub_testpart1.child_parent2 set a = 1; -- alter publication set 'TABLES IN SCHEMA' on an empty publication. SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub3_forschema; RESET client_min_messages; \dRp+ testpub3_forschema ALTER PUBLICATION testpub3_forschema SET TABLES IN SCHEMA pub_test1; \dRp+ testpub3_forschema -- create publication including both 'FOR TABLE' and 'FOR TABLES IN SCHEMA' SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_forschema_fortable FOR TABLES IN SCHEMA pub_test1, TABLE pub_test2.tbl1; CREATE PUBLICATION testpub_fortable_forschema FOR TABLE pub_test2.tbl1, TABLES IN SCHEMA pub_test1; RESET client_min_messages; \dRp+ testpub_forschema_fortable \dRp+ testpub_fortable_forschema -- fail specifying table without any of 'FOR TABLES IN SCHEMA' or --'FOR TABLE' or 'FOR ALL TABLES' CREATE PUBLICATION testpub_error FOR pub_test2.tbl1; DROP VIEW testpub_view; DROP PUBLICATION testpub_default; DROP PUBLICATION testpib_ins_trunct; DROP PUBLICATION testpub_fortbl; DROP PUBLICATION testpub1_forschema; DROP PUBLICATION testpub2_forschema; DROP PUBLICATION testpub3_forschema; DROP PUBLICATION testpub_forschema_fortable; DROP PUBLICATION testpub_fortable_forschema; DROP PUBLICATION testpubpart_forschema; DROP SCHEMA pub_test CASCADE; DROP SCHEMA pub_test1 CASCADE; DROP SCHEMA pub_test2 CASCADE; DROP SCHEMA pub_testpart1 CASCADE; DROP SCHEMA pub_testpart2 CASCADE; -- Test the list of partitions published with or without -- 'PUBLISH_VIA_PARTITION_ROOT' parameter SET client_min_messages = 'ERROR'; CREATE SCHEMA sch1; CREATE SCHEMA sch2; CREATE TABLE sch1.tbl1 (a int) PARTITION BY RANGE(a); CREATE TABLE sch2.tbl1_part1 PARTITION OF sch1.tbl1 FOR VALUES FROM (1) to (10); -- Schema publication that does not include the schema that has the parent table CREATE PUBLICATION pub FOR TABLES IN SCHEMA sch2 WITH (PUBLISH_VIA_PARTITION_ROOT=1); SELECT * FROM pg_publication_tables; DROP PUBLICATION pub; -- Table publication that does not include the parent table CREATE PUBLICATION pub FOR TABLE sch2.tbl1_part1 WITH (PUBLISH_VIA_PARTITION_ROOT=1); SELECT * FROM pg_publication_tables; -- Table publication that includes both the parent table and the child table ALTER PUBLICATION pub ADD TABLE sch1.tbl1; SELECT * FROM pg_publication_tables; DROP PUBLICATION pub; -- Schema publication that does not include the schema that has the parent table CREATE PUBLICATION pub FOR TABLES IN SCHEMA sch2 WITH (PUBLISH_VIA_PARTITION_ROOT=0); SELECT * FROM pg_publication_tables; DROP PUBLICATION pub; -- Table publication that does not include the parent table CREATE PUBLICATION pub FOR TABLE sch2.tbl1_part1 WITH (PUBLISH_VIA_PARTITION_ROOT=0); SELECT * FROM pg_publication_tables; -- Table publication that includes both the parent table and the child table ALTER PUBLICATION pub ADD TABLE sch1.tbl1; SELECT * FROM pg_publication_tables; DROP PUBLICATION pub; DROP TABLE sch2.tbl1_part1; DROP TABLE sch1.tbl1; CREATE TABLE sch1.tbl1 (a int) PARTITION BY RANGE(a); CREATE TABLE sch1.tbl1_part1 PARTITION OF sch1.tbl1 FOR VALUES FROM (1) to (10); CREATE TABLE sch1.tbl1_part2 PARTITION OF sch1.tbl1 FOR VALUES FROM (10) to (20); CREATE TABLE sch1.tbl1_part3 (a int) PARTITION BY RANGE(a); ALTER TABLE sch1.tbl1 ATTACH PARTITION sch1.tbl1_part3 FOR VALUES FROM (20) to (30); CREATE PUBLICATION pub FOR TABLES IN SCHEMA sch1 WITH (PUBLISH_VIA_PARTITION_ROOT=1); SELECT * FROM pg_publication_tables; RESET client_min_messages; DROP PUBLICATION pub; DROP TABLE sch1.tbl1; DROP SCHEMA sch1 cascade; DROP SCHEMA sch2 cascade; RESET SESSION AUTHORIZATION; DROP ROLE regress_publication_user, regress_publication_user2; DROP ROLE regress_publication_user_dummy; libpg_query-17-6.1.0/test/sql/postgres_regress/random.sql000066400000000000000000000230141477334012600234530ustar00rootroot00000000000000-- -- RANDOM -- Test random() and allies -- -- Tests in this file may have a small probability of failure, -- since we are dealing with randomness. Try to keep the failure -- risk for any one test case under 1e-9. -- -- There should be no duplicates in 1000 random() values. -- (Assuming 52 random bits in the float8 results, we could -- take as many as 3000 values and still have less than 1e-9 chance -- of failure, per https://en.wikipedia.org/wiki/Birthday_problem) SELECT r, count(*) FROM (SELECT random() r FROM generate_series(1, 1000)) ss GROUP BY r HAVING count(*) > 1; -- The range should be [0, 1). We can expect that at least one out of 2000 -- random values is in the lowest or highest 1% of the range with failure -- probability less than about 1e-9. SELECT count(*) FILTER (WHERE r < 0 OR r >= 1) AS out_of_range, (count(*) FILTER (WHERE r < 0.01)) > 0 AS has_small, (count(*) FILTER (WHERE r > 0.99)) > 0 AS has_large FROM (SELECT random() r FROM generate_series(1, 2000)) ss; -- Check for uniform distribution using the Kolmogorov-Smirnov test. CREATE FUNCTION ks_test_uniform_random() RETURNS boolean AS $$ DECLARE n int := 1000; -- Number of samples c float8 := 1.94947; -- Critical value for 99.9% confidence ok boolean; BEGIN ok := ( WITH samples AS ( SELECT random() r FROM generate_series(1, n) ORDER BY 1 ), indexed_samples AS ( SELECT (row_number() OVER())-1.0 i, r FROM samples ) SELECT max(abs(i/n-r)) < c / sqrt(n) FROM indexed_samples ); RETURN ok; END $$ LANGUAGE plpgsql; -- As written, ks_test_uniform_random() returns true about 99.9% -- of the time. To get down to a roughly 1e-9 test failure rate, -- just run it 3 times and accept if any one of them passes. SELECT ks_test_uniform_random() OR ks_test_uniform_random() OR ks_test_uniform_random() AS uniform; -- now test random_normal() -- As above, there should be no duplicates in 1000 random_normal() values. SELECT r, count(*) FROM (SELECT random_normal() r FROM generate_series(1, 1000)) ss GROUP BY r HAVING count(*) > 1; -- ... unless we force the range (standard deviation) to zero. -- This is a good place to check that the mean input does something, too. SELECT r, count(*) FROM (SELECT random_normal(10, 0) r FROM generate_series(1, 100)) ss GROUP BY r; SELECT r, count(*) FROM (SELECT random_normal(-10, 0) r FROM generate_series(1, 100)) ss GROUP BY r; -- Check standard normal distribution using the Kolmogorov-Smirnov test. CREATE FUNCTION ks_test_normal_random() RETURNS boolean AS $$ DECLARE n int := 1000; -- Number of samples c float8 := 1.94947; -- Critical value for 99.9% confidence ok boolean; BEGIN ok := ( WITH samples AS ( SELECT random_normal() r FROM generate_series(1, n) ORDER BY 1 ), indexed_samples AS ( SELECT (row_number() OVER())-1.0 i, r FROM samples ) SELECT max(abs((1+erf(r/sqrt(2)))/2 - i/n)) < c / sqrt(n) FROM indexed_samples ); RETURN ok; END $$ LANGUAGE plpgsql; -- As above, ks_test_normal_random() returns true about 99.9% -- of the time, so try it 3 times and accept if any test passes. SELECT ks_test_normal_random() OR ks_test_normal_random() OR ks_test_normal_random() AS standard_normal; -- Test random(min, max) -- invalid range bounds SELECT random(1, 0); SELECT random(1000000000001, 1000000000000); SELECT random(-2.0, -3.0); SELECT random('NaN'::numeric, 10); SELECT random('-Inf'::numeric, 0); SELECT random(0, 'NaN'::numeric); SELECT random(0, 'Inf'::numeric); -- empty range is OK SELECT random(101, 101); SELECT random(1000000000001, 1000000000001); SELECT random(3.14, 3.14); -- There should be no triple duplicates in 1000 full-range 32-bit random() -- values. (Each of the C(1000, 3) choices of triplets from the 1000 values -- has a probability of 1/(2^32)^2 of being a triple duplicate, so the -- average number of triple duplicates is 1000 * 999 * 998 / 6 / 2^64, which -- is roughly 9e-12.) SELECT r, count(*) FROM (SELECT random(-2147483648, 2147483647) r FROM generate_series(1, 1000)) ss GROUP BY r HAVING count(*) > 2; -- There should be no duplicates in 1000 full-range 64-bit random() values. SELECT r, count(*) FROM (SELECT random_normal(-9223372036854775808, 9223372036854775807) r FROM generate_series(1, 1000)) ss GROUP BY r HAVING count(*) > 1; -- There should be no duplicates in 1000 15-digit random() numeric values. SELECT r, count(*) FROM (SELECT random_normal(0, 1 - 1e-15) r FROM generate_series(1, 1000)) ss GROUP BY r HAVING count(*) > 1; -- Expect at least one out of 2000 random values to be in the lowest and -- highest 1% of the range. SELECT (count(*) FILTER (WHERE r < -2104533975)) > 0 AS has_small, (count(*) FILTER (WHERE r > 2104533974)) > 0 AS has_large FROM (SELECT random(-2147483648, 2147483647) r FROM generate_series(1, 2000)) ss; SELECT count(*) FILTER (WHERE r < -1500000000 OR r > 1500000000) AS out_of_range, (count(*) FILTER (WHERE r < -1470000000)) > 0 AS has_small, (count(*) FILTER (WHERE r > 1470000000)) > 0 AS has_large FROM (SELECT random(-1500000000, 1500000000) r FROM generate_series(1, 2000)) ss; SELECT (count(*) FILTER (WHERE r < -9038904596117680292)) > 0 AS has_small, (count(*) FILTER (WHERE r > 9038904596117680291)) > 0 AS has_large FROM (SELECT random(-9223372036854775808, 9223372036854775807) r FROM generate_series(1, 2000)) ss; SELECT count(*) FILTER (WHERE r < -1500000000000000 OR r > 1500000000000000) AS out_of_range, (count(*) FILTER (WHERE r < -1470000000000000)) > 0 AS has_small, (count(*) FILTER (WHERE r > 1470000000000000)) > 0 AS has_large FROM (SELECT random(-1500000000000000, 1500000000000000) r FROM generate_series(1, 2000)) ss; SELECT count(*) FILTER (WHERE r < -1.5 OR r > 1.5) AS out_of_range, (count(*) FILTER (WHERE r < -1.47)) > 0 AS has_small, (count(*) FILTER (WHERE r > 1.47)) > 0 AS has_large FROM (SELECT random(-1.500000000000000, 1.500000000000000) r FROM generate_series(1, 2000)) ss; -- Every possible value should occur at least once in 2500 random() values -- chosen from a range with 100 distinct values. SELECT min(r), max(r), count(r) FROM ( SELECT DISTINCT random(-50, 49) r FROM generate_series(1, 2500)); SELECT min(r), max(r), count(r) FROM ( SELECT DISTINCT random(123000000000, 123000000099) r FROM generate_series(1, 2500)); SELECT min(r), max(r), count(r) FROM ( SELECT DISTINCT random(-0.5, 0.49) r FROM generate_series(1, 2500)); -- Check for uniform distribution using the Kolmogorov-Smirnov test. CREATE FUNCTION ks_test_uniform_random_int_in_range() RETURNS boolean AS $$ DECLARE n int := 1000; -- Number of samples c float8 := 1.94947; -- Critical value for 99.9% confidence ok boolean; BEGIN ok := ( WITH samples AS ( SELECT random(0, 999999) / 1000000.0 r FROM generate_series(1, n) ORDER BY 1 ), indexed_samples AS ( SELECT (row_number() OVER())-1.0 i, r FROM samples ) SELECT max(abs(i/n-r)) < c / sqrt(n) FROM indexed_samples ); RETURN ok; END $$ LANGUAGE plpgsql; SELECT ks_test_uniform_random_int_in_range() OR ks_test_uniform_random_int_in_range() OR ks_test_uniform_random_int_in_range() AS uniform_int; CREATE FUNCTION ks_test_uniform_random_bigint_in_range() RETURNS boolean AS $$ DECLARE n int := 1000; -- Number of samples c float8 := 1.94947; -- Critical value for 99.9% confidence ok boolean; BEGIN ok := ( WITH samples AS ( SELECT random(0, 999999999999) / 1000000000000.0 r FROM generate_series(1, n) ORDER BY 1 ), indexed_samples AS ( SELECT (row_number() OVER())-1.0 i, r FROM samples ) SELECT max(abs(i/n-r)) < c / sqrt(n) FROM indexed_samples ); RETURN ok; END $$ LANGUAGE plpgsql; SELECT ks_test_uniform_random_bigint_in_range() OR ks_test_uniform_random_bigint_in_range() OR ks_test_uniform_random_bigint_in_range() AS uniform_bigint; CREATE FUNCTION ks_test_uniform_random_numeric_in_range() RETURNS boolean AS $$ DECLARE n int := 1000; -- Number of samples c float8 := 1.94947; -- Critical value for 99.9% confidence ok boolean; BEGIN ok := ( WITH samples AS ( SELECT random(0, 0.999999) r FROM generate_series(1, n) ORDER BY 1 ), indexed_samples AS ( SELECT (row_number() OVER())-1.0 i, r FROM samples ) SELECT max(abs(i/n-r)) < c / sqrt(n) FROM indexed_samples ); RETURN ok; END $$ LANGUAGE plpgsql; SELECT ks_test_uniform_random_numeric_in_range() OR ks_test_uniform_random_numeric_in_range() OR ks_test_uniform_random_numeric_in_range() AS uniform_numeric; -- setseed() should produce a reproducible series of random() values. SELECT setseed(0.5); SELECT random() FROM generate_series(1, 10); -- Likewise for random_normal(); however, since its implementation relies -- on libm functions that have different roundoff behaviors on different -- machines, we have to round off the results a bit to get consistent output. SET extra_float_digits = -1; SELECT random_normal() FROM generate_series(1, 10); SELECT random_normal(mean => 1, stddev => 0.1) r FROM generate_series(1, 10); -- Reproducible random(min, max) values. SELECT random(1, 6) FROM generate_series(1, 10); SELECT random(-2147483648, 2147483647) FROM generate_series(1, 10); SELECT random(-9223372036854775808, 9223372036854775807) FROM generate_series(1, 10); SELECT random(-1e30, 1e30) FROM generate_series(1, 10); SELECT random(-0.4, 0.4) FROM generate_series(1, 10); SELECT random(0, 1 - 1e-30) FROM generate_series(1, 10); SELECT n, random(0, trim_scale(abs(1 - 10.0^(-n)))) FROM generate_series(-20, 20) n; libpg_query-17-6.1.0/test/sql/postgres_regress/rangefuncs.sql000066400000000000000000001021051477334012600243250ustar00rootroot00000000000000CREATE 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(); -- Check a couple of error cases while we're here select * from testrngfunc() as t(f1 int8,f2 int8); -- fail, composite result select * from pg_get_keywords() as t(f1 int8,f2 int8); -- fail, OUT params select * from sin(3) as t(f1 int8,f2 int8); -- fail, scalar result type 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; alter table users drop column moredrop; -- fail, view has reference -- We used to have a bug that would allow the above to succeed, posing -- hazards for later execution of the view. Check that the internal -- defenses for those hazards haven't bit-rotted, in case some other -- bug with similar symptoms emerges. begin; -- destroy the dependency entry that prevents the DROP: delete from pg_depend where objid = (select oid from pg_rewrite where ev_class = 'usersview'::regclass and rulename = '_RETURN') and refobjsubid = 5 returning pg_describe_object(classid, objid, objsubid) as obj, pg_describe_object(refclassid, refobjid, refobjsubid) as ref, deptype; alter table users drop column moredrop; select * from usersview; -- expect clean failure rollback; alter table users alter column seq type numeric; -- fail, view has reference -- likewise, check we don't crash if the dependency goes wrong begin; -- destroy the dependency entry that prevents the ALTER: delete from pg_depend where objid = (select oid from pg_rewrite where ev_class = 'usersview'::regclass and rulename = '_RETURN') and refobjsubid = 2 returning pg_describe_object(classid, objid, objsubid) as obj, pg_describe_object(refclassid, refobjid, refobjsubid) as ref, deptype; alter table users alter column seq type numeric; select * from usersview; -- expect clean failure rollback; 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; -- check handling of functions pulled up into function RTEs (bug #17227) explain (verbose, costs off) select * from (select jsonb_path_query_array(module->'lectures', '$[*]') as lecture from unnest(array['{"lectures": [{"id": "1"}]}'::jsonb]) as unnested_modules(module)) as ss, jsonb_to_recordset(ss.lecture) as j (id text); select * from (select jsonb_path_query_array(module->'lectures', '$[*]') as lecture from unnest(array['{"lectures": [{"id": "1"}]}'::jsonb]) as unnested_modules(module)) as ss, jsonb_to_recordset(ss.lecture) as j (id text); -- check detection of mismatching record types with a const-folded expression with a(b) as (values (row(1,2,3))) select * from a, coalesce(b) as c(d int, e int); -- fail with a(b) as (values (row(1,2,3))) select * from a, coalesce(b) as c(d int, e int, f int, g int); -- fail with a(b) as (values (row(1,2,3))) select * from a, coalesce(b) as c(d int, e int, f float); -- fail select * from int8_tbl, coalesce(row(1)) as (a int, b int); -- fail libpg_query-17-6.1.0/test/sql/postgres_regress/rangetypes.sql000066400000000000000000000670501477334012600243640ustar00rootroot00000000000000-- Tests for range data types. -- -- test input parser -- (type textrange was already made in test_setup.sql) -- -- 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 '(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; -- Also try it with non-error-throwing API select pg_input_is_valid('(1,4)', 'int4range'); select pg_input_is_valid('(1,4', 'int4range'); select * from pg_input_error_info('(1,4', 'int4range'); select pg_input_is_valid('(4,1)', 'int4range'); select * from pg_input_error_info('(4,1)', 'int4range'); select pg_input_is_valid('(4,zed)', 'int4range'); select * from pg_input_error_info('(4,zed)', 'int4range'); select pg_input_is_valid('[1,2147483647]', 'int4range'); select * from pg_input_error_info('[1,2147483647]', 'int4range'); select pg_input_is_valid('[2000-01-01,5874897-12-31]', 'daterange'); select * from pg_input_error_info('[2000-01-01,5874897-12-31]', 'daterange'); -- -- 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); select range_intersect_agg(nr) from numrange_test; select range_intersect_agg(nr) from numrange_test where false; select range_intersect_agg(nr) from numrange_test where nr @> 4.0; analyze numrange_test; 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; -- test statistics and selectivity estimation as well -- -- We don't check the accuracy of selectivity estimation, but at least check -- it doesn't fall. analyze test_range_gist; -- 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); select count(*) from test_range_gist where ir @> '{}'::int4multirange; select count(*) from test_range_gist where ir @> int4multirange(int4range(10,20), int4range(30,40)); select count(*) from test_range_gist where ir && '{(10,20),(30,40),(50,60)}'::int4multirange; select count(*) from test_range_gist where ir <@ '{(10,30),(40,60),(70,90)}'::int4multirange; select count(*) from test_range_gist where ir << int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_range_gist where ir >> int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_range_gist where ir &< int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_range_gist where ir &> int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_range_gist where ir -|- int4multirange(int4range(100,200), int4range(400,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); select count(*) from test_range_gist where ir @> '{}'::int4multirange; select count(*) from test_range_gist where ir @> int4multirange(int4range(10,20), int4range(30,40)); select count(*) from test_range_gist where ir && '{(10,20),(30,40),(50,60)}'::int4multirange; select count(*) from test_range_gist where ir <@ '{(10,30),(40,60),(70,90)}'::int4multirange; select count(*) from test_range_gist where ir << int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_range_gist where ir >> int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_range_gist where ir &< int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_range_gist where ir &> int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_range_gist where ir -|- int4multirange(int4range(100,200), int4range(400,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); select count(*) from test_range_gist where ir @> '{}'::int4multirange; select count(*) from test_range_gist where ir @> int4multirange(int4range(10,20), int4range(30,40)); select count(*) from test_range_gist where ir && '{(10,20),(30,40),(50,60)}'::int4multirange; select count(*) from test_range_gist where ir <@ '{(10,30),(40,60),(70,90)}'::int4multirange; select count(*) from test_range_gist where ir << int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_range_gist where ir >> int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_range_gist where ir &< int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_range_gist where ir &> int4multirange(int4range(100,200), int4range(400,500)); select count(*) from test_range_gist where ir -|- int4multirange(int4range(100,200), int4range(400,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; SET enable_seqscan = f; select count(*) from test_range_elem where i <@ int4range(10,50); -- also test spgist index on anyrange expression create index on test_range_elem using spgist(int4range(i,i+10)); explain (costs off) select count(*) from test_range_elem where int4range(i,i+10) <@ int4range(10,30); select count(*) from test_range_elem where int4range(i,i+10) <@ int4range(10,30); RESET enable_seqscan; 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 -- (type float8range was already made in test_setup.sql) -- --should fail create type bogus_float8range as range (subtype=float8, subtype_diff=float4mi); 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 debug_parallel_query 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 varbitrange as range (subtype = varbit); set enable_sort = off; -- try to make it pick a hash setop implementation select '(01,10)'::varbitrange except select '(10,11)'::varbitrange; reset enable_sort; -- -- OUT/INOUT/TABLE functions -- -- infer anyrange from anyrange 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)); -- infer anyarray from anyrange create function outparam_succeed2(i anyrange, out r anyarray, out t text) as $$ select ARRAY[upper($1)], 'foo'::text $$ language sql; select * from outparam_succeed2(int4range(int4range(1,2))); -- infer anyelement from anyrange 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; -- -- Test support functions -- -- empty range explain (verbose, costs off) select current_date <@ daterange 'empty'; -- unbounded range explain (verbose, costs off) select current_date <@ daterange(NULL, NULL); -- only lower bound present explain (verbose, costs off) select current_date <@ daterange('2000-01-01', NULL, '[)'); -- only upper bound present explain (verbose, costs off) select current_date <@ daterange(NULL, '2000-01-01', '(]'); -- lower range "-Infinity" excluded explain (verbose, costs off) select current_date <@ daterange('-Infinity', '1997-04-10'::date, '()'); -- lower range "-Infinity" included explain (verbose, costs off) select current_date <@ daterange('-Infinity', '1997-04-10'::date, '[)'); -- upper range "Infinity" excluded explain (verbose, costs off) select current_date <@ daterange('2002-09-25'::date, 'Infinity', '[)'); -- upper range "Infinity" included explain (verbose, costs off) select current_date <@ daterange('2002-09-25'::date, 'Infinity', '[]'); -- should also work if we use "@>" explain (verbose, costs off) select daterange('-Infinity', '1997-04-10'::date, '()') @> current_date; explain (verbose, costs off) select daterange('2002-09-25'::date, 'Infinity', '[]') @> current_date; -- Check that volatile cases are not optimized explain (verbose, costs off) select now() <@ tstzrange('2024-01-20 00:00', '2024-01-21 00:00'); explain (verbose, costs off) -- unsafe! select clock_timestamp() <@ tstzrange('2024-01-20 00:00', '2024-01-21 00:00'); explain (verbose, costs off) select clock_timestamp() <@ tstzrange('2024-01-20 00:00', NULL); -- test a custom range type with a non-default operator class create type textrange_supp as range ( subtype = text, subtype_opclass = text_pattern_ops ); create temp table text_support_test (t text collate "C"); insert into text_support_test values ('a'), ('c'), ('d'), ('ch'); explain (costs off) select * from text_support_test where t <@ textrange_supp('a', 'd'); select * from text_support_test where t <@ textrange_supp('a', 'd'); drop table text_support_test; drop type textrange_supp; libpg_query-17-6.1.0/test/sql/postgres_regress/regex.sql000066400000000000000000000136231477334012600233120ustar00rootroot00000000000000-- -- 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, DISABLE_PAGE_SKIPPING) 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-17-6.1.0/test/sql/postgres_regress/replica_identity.sql000066400000000000000000000133621477334012600255300ustar00rootroot00000000000000CREATE 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 TABLE test_replica_identity_t3 (id serial constraint pk primary key deferrable); 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; -- fail, deferrable ALTER TABLE test_replica_identity_t3 REPLICA IDENTITY USING INDEX pk; 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 -- ALTER TABLE DROP NOT NULL is not allowed for columns part of an index -- used as replica identity. ALTER TABLE test_replica_identity3 ALTER COLUMN id DROP NOT NULL; -- -- Test that replica identity can be set on an index that's not yet valid. -- (This matches the way pg_dump will try to dump a partitioned table.) -- CREATE TABLE test_replica_identity4(id integer NOT NULL) PARTITION BY LIST (id); CREATE TABLE test_replica_identity4_1(id integer NOT NULL); ALTER TABLE ONLY test_replica_identity4 ATTACH PARTITION test_replica_identity4_1 FOR VALUES IN (1); ALTER TABLE ONLY test_replica_identity4 ADD CONSTRAINT test_replica_identity4_pkey PRIMARY KEY (id); ALTER TABLE ONLY test_replica_identity4 REPLICA IDENTITY USING INDEX test_replica_identity4_pkey; ALTER TABLE ONLY test_replica_identity4_1 ADD CONSTRAINT test_replica_identity4_1_pkey PRIMARY KEY (id); \d+ test_replica_identity4 ALTER INDEX test_replica_identity4_pkey ATTACH PARTITION test_replica_identity4_1_pkey; \d+ test_replica_identity4 DROP TABLE test_replica_identity; DROP TABLE test_replica_identity2; DROP TABLE test_replica_identity3; DROP TABLE test_replica_identity4; DROP TABLE test_replica_identity_othertable; DROP TABLE test_replica_identity_t3; libpg_query-17-6.1.0/test/sql/postgres_regress/returning.sql000066400000000000000000000112661477334012600242160ustar00rootroot00000000000000-- -- 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; -- Check use of a whole-row variable for an un-flattenable view CREATE TEMP VIEW foo_v AS SELECT * FROM foo OFFSET 0; UPDATE foo SET f2 = foo_v.f2 FROM foo_v WHERE foo_v.f1 = foo.f1 RETURNING foo_v; SELECT * FROM foo; -- Check use of a whole-row variable for an inlined set-returning function CREATE FUNCTION foo_f() RETURNS SETOF foo AS $$ SELECT * FROM foo OFFSET 0 $$ LANGUAGE sql STABLE; UPDATE foo SET f2 = foo_f.f2 FROM foo_f() WHERE foo_f.f1 = foo.f1 RETURNING foo_f; SELECT * FROM foo; DROP FUNCTION foo_f(); -- As above, but SRF is defined to return a composite type CREATE TYPE foo_t AS (f1 int, f2 text, f3 int, f4 int8); CREATE FUNCTION foo_f() RETURNS SETOF foo_t AS $$ SELECT * FROM foo OFFSET 0 $$ LANGUAGE sql STABLE; UPDATE foo SET f2 = foo_f.f2 FROM foo_f() WHERE foo_f.f1 = foo.f1 RETURNING foo_f; SELECT * FROM foo; DROP FUNCTION foo_f(); DROP TYPE foo_t; -- 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-17-6.1.0/test/sql/postgres_regress/roleattributes.sql000066400000000000000000000217071477334012600252520ustar00rootroot00000000000000-- 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-17-6.1.0/test/sql/postgres_regress/rowsecurity.sql000066400000000000000000002316021477334012600245760ustar00rootroot00000000000000-- -- 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, public.fipshash(x::text) FROM generate_series(-10,10) x); CREATE TABLE s2 (x int, y text); INSERT INTO s2 (SELECT x, public.fipshash(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, public.fipshash(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'; -- -- MERGE -- RESET SESSION AUTHORIZATION; DROP POLICY p3_with_all ON document; ALTER TABLE document ADD COLUMN dnotes text DEFAULT ''; -- all documents are readable CREATE POLICY p1 ON document FOR SELECT USING (true); -- one may insert documents only authored by them CREATE POLICY p2 ON document FOR INSERT WITH CHECK (dauthor = current_user); -- one may only update documents in 'novel' category and new dlevel must be > 0 CREATE POLICY p3 ON document FOR UPDATE USING (cid = (SELECT cid from category WHERE cname = 'novel')) WITH CHECK (dlevel > 0); -- one may only delete documents in 'manga' category CREATE POLICY p4 ON document FOR DELETE USING (cid = (SELECT cid from category WHERE cname = 'manga')); SELECT * FROM document; SET SESSION AUTHORIZATION regress_rls_bob; -- Fails, since update violates WITH CHECK qual on dlevel MERGE INTO document d USING (SELECT 1 as sdid) s ON did = s.sdid WHEN MATCHED THEN UPDATE SET dnotes = dnotes || ' notes added by merge1 ', dlevel = 0; -- Should be OK since USING and WITH CHECK quals pass MERGE INTO document d USING (SELECT 1 as sdid) s ON did = s.sdid WHEN MATCHED THEN UPDATE SET dnotes = dnotes || ' notes added by merge2 '; -- Even when dlevel is updated explicitly, but to the existing value MERGE INTO document d USING (SELECT 1 as sdid) s ON did = s.sdid WHEN MATCHED THEN UPDATE SET dnotes = dnotes || ' notes added by merge3 ', dlevel = 1; -- There is a MATCH for did = 3, but UPDATE's USING qual does not allow -- updating an item in category 'science fiction' MERGE INTO document d USING (SELECT 3 as sdid) s ON did = s.sdid WHEN MATCHED THEN UPDATE SET dnotes = dnotes || ' notes added by merge '; -- The same thing with DELETE action, but fails again because no permissions -- to delete items in 'science fiction' category that did 3 belongs to. MERGE INTO document d USING (SELECT 3 as sdid) s ON did = s.sdid WHEN MATCHED THEN DELETE; -- Document with did 4 belongs to 'manga' category which is allowed for -- deletion. But this fails because the UPDATE action is matched first and -- UPDATE policy does not allow updation in the category. MERGE INTO document d USING (SELECT 4 as sdid) s ON did = s.sdid WHEN MATCHED AND dnotes = '' THEN UPDATE SET dnotes = dnotes || ' notes added by merge ' WHEN MATCHED THEN DELETE; -- UPDATE action is not matched this time because of the WHEN qual. -- DELETE still fails because role regress_rls_bob does not have SELECT -- privileges on 'manga' category row in the category table. MERGE INTO document d USING (SELECT 4 as sdid) s ON did = s.sdid WHEN MATCHED AND dnotes <> '' THEN UPDATE SET dnotes = dnotes || ' notes added by merge ' WHEN MATCHED THEN DELETE; -- OK if DELETE is replaced with DO NOTHING MERGE INTO document d USING (SELECT 4 as sdid) s ON did = s.sdid WHEN MATCHED AND dnotes <> '' THEN UPDATE SET dnotes = dnotes || ' notes added by merge ' WHEN MATCHED THEN DO NOTHING; SELECT * FROM document WHERE did = 4; -- Switch to regress_rls_carol role and try the DELETE again. It should succeed -- this time RESET SESSION AUTHORIZATION; SET SESSION AUTHORIZATION regress_rls_carol; MERGE INTO document d USING (SELECT 4 as sdid) s ON did = s.sdid WHEN MATCHED AND dnotes <> '' THEN UPDATE SET dnotes = dnotes || ' notes added by merge ' WHEN MATCHED THEN DELETE; -- Switch back to regress_rls_bob role RESET SESSION AUTHORIZATION; SET SESSION AUTHORIZATION regress_rls_bob; -- Try INSERT action. This fails because we are trying to insert -- dauthor = regress_rls_dave and INSERT's WITH CHECK does not allow -- that MERGE INTO document d USING (SELECT 12 as sdid) s ON did = s.sdid WHEN MATCHED THEN DELETE WHEN NOT MATCHED THEN INSERT VALUES (12, 11, 1, 'regress_rls_dave', 'another novel'); -- This should be fine MERGE INTO document d USING (SELECT 12 as sdid) s ON did = s.sdid WHEN MATCHED THEN DELETE WHEN NOT MATCHED THEN INSERT VALUES (12, 11, 1, 'regress_rls_bob', 'another novel'); -- ok MERGE INTO document d USING (SELECT 1 as sdid) s ON did = s.sdid WHEN MATCHED THEN UPDATE SET dnotes = dnotes || ' notes added by merge4 ' WHEN NOT MATCHED THEN INSERT VALUES (12, 11, 1, 'regress_rls_bob', 'another novel'); -- drop and create a new SELECT policy which prevents us from reading -- any document except with category 'novel' RESET SESSION AUTHORIZATION; DROP POLICY p1 ON document; CREATE POLICY p1 ON document FOR SELECT USING (cid = (SELECT cid from category WHERE cname = 'novel')); SET SESSION AUTHORIZATION regress_rls_bob; -- MERGE can no longer see the matching row and hence attempts the -- NOT MATCHED action, which results in unique key violation MERGE INTO document d USING (SELECT 7 as sdid) s ON did = s.sdid WHEN MATCHED THEN UPDATE SET dnotes = dnotes || ' notes added by merge5 ' WHEN NOT MATCHED THEN INSERT VALUES (12, 11, 1, 'regress_rls_bob', 'another novel'); -- UPDATE action fails if new row is not visible MERGE INTO document d USING (SELECT 1 as sdid) s ON did = s.sdid WHEN MATCHED THEN UPDATE SET dnotes = dnotes || ' notes added by merge6 ', cid = (SELECT cid from category WHERE cname = 'technology'); -- but OK if new row is visible MERGE INTO document d USING (SELECT 1 as sdid) s ON did = s.sdid WHEN MATCHED THEN UPDATE SET dnotes = dnotes || ' notes added by merge7 ', cid = (SELECT cid from category WHERE cname = 'novel'); -- OK to insert a new row that is not visible MERGE INTO document d USING (SELECT 13 as sdid) s ON did = s.sdid WHEN MATCHED THEN UPDATE SET dnotes = dnotes || ' notes added by merge8 ' WHEN NOT MATCHED THEN INSERT VALUES (13, 44, 1, 'regress_rls_bob', 'new manga'); SELECT * FROM document WHERE did = 13; -- but not OK if RETURNING is used MERGE INTO document d USING (SELECT 14 as sdid) s ON did = s.sdid WHEN MATCHED THEN UPDATE SET dnotes = dnotes || ' notes added by merge9 ' WHEN NOT MATCHED THEN INSERT VALUES (14, 44, 1, 'regress_rls_bob', 'new manga') RETURNING *; -- but OK if new row is visible MERGE INTO document d USING (SELECT 14 as sdid) s ON did = s.sdid WHEN MATCHED THEN UPDATE SET dnotes = dnotes || ' notes added by merge10 ' WHEN NOT MATCHED THEN INSERT VALUES (14, 11, 1, 'regress_rls_bob', 'new novel') RETURNING *; RESET SESSION AUTHORIZATION; -- drop the restrictive SELECT policy so that we can look at the -- final state of the table DROP POLICY p1 ON document; -- Just check everything went per plan SELECT * FROM document; -- -- 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; SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM rls_view; EXPLAIN (COSTS OFF) SELECT * FROM rls_view; -- Policy requiring access to another table. SET SESSION AUTHORIZATION regress_rls_alice; CREATE TABLE z1_blacklist (a int); INSERT INTO z1_blacklist VALUES (3), (4); CREATE POLICY p3 ON z1 AS RESTRICTIVE USING (a NOT IN (SELECT a FROM z1_blacklist)); -- Query as role that is not owner of table but is owner of view without permissions. SET SESSION AUTHORIZATION regress_rls_bob; 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 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 owner of table but is owner of view with permissions. SET SESSION AUTHORIZATION regress_rls_alice; GRANT SELECT ON z1_blacklist TO regress_rls_bob; 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 with permissions. SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM rls_view; EXPLAIN (COSTS OFF) SELECT * FROM rls_view; SET SESSION AUTHORIZATION regress_rls_alice; REVOKE SELECT ON z1_blacklist FROM regress_rls_bob; DROP POLICY p3 ON z1; SET SESSION AUTHORIZATION regress_rls_bob; DROP VIEW rls_view; -- -- Security invoker views should follow policy for current user. -- -- View and table owner are the same. SET SESSION AUTHORIZATION regress_rls_alice; CREATE VIEW rls_view WITH (security_invoker) AS SELECT * FROM z1 WHERE f_leak(b); GRANT SELECT ON rls_view TO regress_rls_bob; GRANT SELECT ON rls_view TO regress_rls_carol; -- Query as table owner. Should return all records. SELECT * FROM rls_view; EXPLAIN (COSTS OFF) SELECT * FROM rls_view; -- Queries as other users. -- Should return records based on current user's policies. SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM rls_view; EXPLAIN (COSTS OFF) SELECT * FROM rls_view; SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM rls_view; EXPLAIN (COSTS OFF) SELECT * FROM rls_view; -- View and table owners are different. SET SESSION AUTHORIZATION regress_rls_alice; DROP VIEW rls_view; SET SESSION AUTHORIZATION regress_rls_bob; CREATE VIEW rls_view WITH (security_invoker) AS SELECT * FROM z1 WHERE f_leak(b); GRANT SELECT ON rls_view TO regress_rls_alice; GRANT SELECT ON rls_view TO regress_rls_carol; -- Query as table owner. Should return all records. SET SESSION AUTHORIZATION regress_rls_alice; SELECT * FROM rls_view; EXPLAIN (COSTS OFF) SELECT * FROM rls_view; -- Queries as other users. -- Should return records based on current user's policies. SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM rls_view; EXPLAIN (COSTS OFF) SELECT * FROM rls_view; SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM rls_view; EXPLAIN (COSTS OFF) SELECT * FROM rls_view; -- Policy requiring access to another table. SET SESSION AUTHORIZATION regress_rls_alice; CREATE POLICY p3 ON z1 AS RESTRICTIVE USING (a NOT IN (SELECT a FROM z1_blacklist)); -- Query as role that is not owner of table but is owner of view without permissions. SET SESSION AUTHORIZATION regress_rls_bob; 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 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 owner of table but is owner of view with permissions. SET SESSION AUTHORIZATION regress_rls_alice; GRANT SELECT ON z1_blacklist TO regress_rls_bob; 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_alice; GRANT SELECT ON z1_blacklist TO regress_rls_carol; SET SESSION AUTHORIZATION 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, public.fipshash(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, public.fipshash(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, public.fipshash(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, public.fipshash('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 behavior with a child table. RESET SESSION AUTHORIZATION; SET row_security TO ON; CREATE TABLE copy_rel_to_child () INHERITS (copy_rel_to); INSERT INTO copy_rel_to_child VALUES (1, 'one'), (2, 'two'); -- 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 that RLS filters that are tidquals don't override WHERE CURRENT OF BEGIN; CREATE TABLE current_check_2 (a int, b text); INSERT INTO current_check_2 VALUES (1, 'Apple'); ALTER TABLE current_check_2 ENABLE ROW LEVEL SECURITY; ALTER TABLE current_check_2 FORCE ROW LEVEL SECURITY; -- policy must accept ctid = (InvalidBlockNumber,0) since updates check it -- before assigning a ctid to the new row CREATE POLICY p1 ON current_check_2 AS PERMISSIVE USING (ctid IN ('(0,1)', '(0,2)', '(4294967295,0)')); SELECT ctid, * FROM current_check_2; DECLARE current_check_cursor CURSOR FOR SELECT * FROM current_check_2; FETCH FROM current_check_cursor; EXPLAIN (COSTS OFF) UPDATE current_check_2 SET b = 'Manzana' WHERE CURRENT OF current_check_cursor; UPDATE current_check_2 SET b = 'Manzana' WHERE CURRENT OF current_check_cursor; SELECT ctid, * FROM current_check_2; ROLLBACK; -- -- 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 -- -- 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 -- same cases with duplicate polroles entries CREATE POLICY p1 ON dob_t1 TO regress_rls_dob_role1,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_role1,regress_rls_dob_role2 USING (true); DROP OWNED BY regress_rls_dob_role1; DROP POLICY p1 ON dob_t1; -- should succeed -- partitioned target 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; -- CVE-2023-2455: inlining an SRF may introduce an RLS dependency create table rls_t (c text); insert into rls_t values ('invisible to bob'); alter table rls_t enable row level security; grant select on rls_t to regress_rls_alice, regress_rls_bob; create policy p1 on rls_t for select to regress_rls_alice using (true); create policy p2 on rls_t for select to regress_rls_bob using (false); create function rls_f () returns setof rls_t stable language sql as $$ select * from rls_t $$; prepare q as select current_user, * from rls_f(); set role regress_rls_alice; execute q; set role regress_rls_bob; execute q; -- make sure RLS dependencies in CTEs are handled reset role; create or replace function rls_f() returns setof rls_t stable language sql as $$ with cte as (select * from rls_t) select * from cte $$; prepare r as select current_user, * from rls_f(); set role regress_rls_alice; execute r; set role regress_rls_bob; execute r; -- make sure RLS dependencies in subqueries are handled reset role; create or replace function rls_f() returns setof rls_t stable language sql as $$ select * from (select * from rls_t) _ $$; prepare s as select current_user, * from rls_f(); set role regress_rls_alice; execute s; set role regress_rls_bob; execute s; -- make sure RLS dependencies in sublinks are handled reset role; create or replace function rls_f() returns setof rls_t stable language sql as $$ select exists(select * from rls_t)::text $$; prepare t as select current_user, * from rls_f(); set role regress_rls_alice; execute t; set role regress_rls_bob; execute t; -- make sure RLS dependencies are handled when coercion projections are inserted reset role; create or replace function rls_f() returns setof rls_t stable language sql as $$ select * from (select array_agg(c) as cs from rls_t) _ group by cs $$; prepare u as select current_user, * from rls_f(); set role regress_rls_alice; execute u; set role regress_rls_bob; execute u; -- make sure RLS dependencies in security invoker views are handled reset role; create view rls_v with (security_invoker) as select * from rls_t; grant select on rls_v to regress_rls_alice, regress_rls_bob; create or replace function rls_f() returns setof rls_t stable language sql as $$ select * from rls_v $$; prepare v as select current_user, * from rls_f(); set role regress_rls_alice; execute v; set role regress_rls_bob; execute v; RESET ROLE; DROP FUNCTION rls_f(); DROP VIEW rls_v; DROP TABLE rls_t; -- -- 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-17-6.1.0/test/sql/postgres_regress/rowtypes.sql000066400000000000000000000442221477334012600240730ustar00rootroot00000000000000-- -- 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 -- test non-error-throwing API SELECT pg_input_is_valid('(1,2)', 'complex'); SELECT pg_input_is_valid('(1,2', 'complex'); SELECT pg_input_is_valid('(1,zed)', 'complex'); SELECT * FROM pg_input_error_info('(1,zed)', 'complex'); SELECT * FROM pg_input_error_info('(1,1e400)', 'complex'); 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); update quadtable set q.c1.r = 12 where f1 = 2; update quadtable set q.c1 = 12; -- error, type mismatch 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; -- try an update on a toasted composite value, too update people set fn.first = 'Jack'; 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; -- since "i" is of type "int8_tbl", attaching aliases doesn't change anything: select row_to_json(i) from int8_tbl i(x,y); -- in these examples, we'll report the exposed column names of the subselect: 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; -- -- Check parsing of indirect references to composite values (bug #18077) -- explain (verbose, costs off) with cte(c) as materialized (select row(1, 2)), cte2(c) as (select * from cte) select * from cte2 as t where (select * from (select c as c1) s where (select (c1).f1 > 0)) is not null; with cte(c) as materialized (select row(1, 2)), cte2(c) as (select * from cte) select * from cte2 as t where (select * from (select c as c1) s where (select (c1).f1 > 0)) is not null; -- Also check deparsing of such cases create view composite_v as with cte(c) as materialized (select row(1, 2)), cte2(c) as (select * from cte) select 1 as one from cte2 as t where (select * from (select c as c1) s where (select (c1).f1 > 0)) is not null; select pg_get_viewdef('composite_v', true); drop view composite_v; -- -- Check cases where the composite comes from a proven-dummy rel (bug #18576) -- explain (verbose, costs off) select (ss.a).x, (ss.a).n from (select information_schema._pg_expandarray(array[1,2]) AS a) ss; explain (verbose, costs off) select (ss.a).x, (ss.a).n from (select information_schema._pg_expandarray(array[1,2]) AS a) ss where false; explain (verbose, costs off) with cte(c) as materialized (select row(1, 2)), cte2(c) as (select * from cte) select (c).f1 from cte2 as t; explain (verbose, costs off) with cte(c) as materialized (select row(1, 2)), cte2(c) as (select * from cte) select (c).f1 from cte2 as t where false; -- -- 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-17-6.1.0/test/sql/postgres_regress/rules.sql000066400000000000000000001311421477334012600233270ustar00rootroot00000000000000-- -- 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 numeric); create table rtest_emplog (ename char(20), who name, action char(10), newsal numeric, oldsal numeric); create table rtest_empmass (ename char(20), salary numeric); 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 = 'pg_catalog' ORDER BY viewname; SELECT tablename, rulename, definition FROM pg_rules WHERE schemaname = 'pg_catalog' 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; -- -- We used to allow converting a table to a view by creating a "_RETURN" -- rule for it, but no more. -- create table rules_fooview (x int, y text); create rule "_RETURN" as on select to rules_fooview do instead select 1 as x, 'aaa'::text as y; drop table rules_fooview; -- 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 FOR UPDATE in rules create table rules_base(f1 int, f2 int); insert into rules_base values(1,2), (11,12); create rule r1 as on update to rules_base do instead select * from rules_base where f1 = 1 for update; update rules_base set f2 = f2 + 1; create or replace rule r1 as on update to rules_base do instead select * from rules_base where f1 = 11 for update of rules_base; update rules_base set f2 = f2 + 1; create or replace rule r1 as on update to rules_base do instead select * from rules_base where f1 = 11 for update of old; -- error drop table rules_base; -- 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 default 0); create table rules_log(f1 int, f2 int, tag text, id serial); 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', default), (new.*, 'new', default); 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; create rule r3 as on insert to rules_src do also insert into rules_log values(null, null, '-', default), (new.*, 'new', default); insert into rules_src values(22,23), (33,default); select * from rules_src; select * from rules_log; create rule r4 as on delete to rules_src do notify rules_src_deletion; -- -- Ensure an aliased target relation for insert is correctly deparsed. -- create rule r5 as on insert to rules_src do instead insert into rules_log AS trgt SELECT NEW.* RETURNING trgt.f1, trgt.f2; create rule r6 as on update to rules_src do instead UPDATE rules_log AS trgt SET tag = 'updated' WHERE trgt.f1 = new.f1; -- -- Check deparse disambiguation of INSERT/UPDATE/DELETE targets. -- create rule r7 as on delete to rules_src do instead with wins as (insert into int4_tbl as trgt values (0) returning *), wupd as (update int4_tbl trgt set f1 = f1+1 returning *), wdel as (delete from int4_tbl trgt where f1 = 0 returning *) insert into rules_log AS trgt select old.* from wins, wupd, wdel returning trgt.f1, trgt.f2; -- check display of all rules added above \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; -- -- Test implicit LATERAL references to old/new in rules -- CREATE TABLE rule_t1(a int, b text DEFAULT 'xxx', c int); CREATE VIEW rule_v1 AS SELECT * FROM rule_t1; CREATE RULE v1_ins AS ON INSERT TO rule_v1 DO ALSO INSERT INTO rule_t1 SELECT * FROM (SELECT a + 10 FROM rule_t1 WHERE a = NEW.a) tt; CREATE RULE v1_upd AS ON UPDATE TO rule_v1 DO ALSO UPDATE rule_t1 t SET c = tt.a * 10 FROM (SELECT a FROM rule_t1 WHERE a = OLD.a) tt WHERE t.a = tt.a; INSERT INTO rule_v1 VALUES (1, 'a'), (2, 'b'); UPDATE rule_v1 SET b = upper(b); SELECT * FROM rule_t1; DROP TABLE rule_t1 CASCADE; -- -- 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 MERGE -- CREATE TABLE rule_merge1 (a int, b text); CREATE TABLE rule_merge2 (a int, b text); CREATE RULE rule1 AS ON INSERT TO rule_merge1 DO INSTEAD INSERT INTO rule_merge2 VALUES (NEW.*); CREATE RULE rule2 AS ON UPDATE TO rule_merge1 DO INSTEAD UPDATE rule_merge2 SET a = NEW.a, b = NEW.b WHERE a = OLD.a; CREATE RULE rule3 AS ON DELETE TO rule_merge1 DO INSTEAD DELETE FROM rule_merge2 WHERE a = OLD.a; -- MERGE not supported for table with rules MERGE INTO rule_merge1 t USING (SELECT 1 AS a) s ON t.a = s.a WHEN MATCHED AND t.a < 2 THEN UPDATE SET b = b || ' updated by merge' WHEN MATCHED AND t.a > 2 THEN DELETE WHEN NOT MATCHED THEN INSERT VALUES (s.a, ''); -- should be ok with the other table though MERGE INTO rule_merge2 t USING (SELECT 1 AS a) s ON t.a = s.a WHEN MATCHED AND t.a < 2 THEN UPDATE SET b = b || ' updated by merge' WHEN MATCHED AND t.a > 2 THEN DELETE WHEN NOT MATCHED THEN INSERT VALUES (s.a, ''); -- also ok if the rules are disabled ALTER TABLE rule_merge1 DISABLE RULE rule1; ALTER TABLE rule_merge1 DISABLE RULE rule2; ALTER TABLE rule_merge1 DISABLE RULE rule3; MERGE INTO rule_merge1 t USING (SELECT 1 AS a) s ON t.a = s.a WHEN MATCHED AND t.a < 2 THEN UPDATE SET b = b || ' updated by merge' WHEN MATCHED AND t.a > 2 THEN DELETE WHEN NOT MATCHED THEN INSERT VALUES (s.a, ''); -- test deparsing CREATE TABLE sf_target(id int, data text, filling int[]); CREATE FUNCTION merge_sf_test() RETURNS TABLE(action text, a int, b text, id int, data text, filling int[]) LANGUAGE sql BEGIN ATOMIC MERGE INTO sf_target t USING rule_merge1 s ON (s.a = t.id) WHEN MATCHED AND (s.a + t.id) = 42 THEN UPDATE SET data = repeat(t.data, s.a) || s.b, id = length(s.b) WHEN NOT MATCHED AND (s.b IS NOT NULL) THEN INSERT (data, id) VALUES (s.b, s.a) WHEN MATCHED AND length(s.b || t.data) > 10 THEN UPDATE SET data = s.b WHEN MATCHED AND s.a > 200 THEN UPDATE SET filling[s.a] = t.id WHEN MATCHED AND s.a > 100 THEN DELETE WHEN MATCHED THEN DO NOTHING WHEN NOT MATCHED AND s.a > 200 THEN INSERT DEFAULT VALUES WHEN NOT MATCHED AND s.a > 100 THEN INSERT (id, data) OVERRIDING USER VALUE VALUES (s.a, DEFAULT) WHEN NOT MATCHED AND s.a > 0 THEN INSERT VALUES (s.a, s.b, DEFAULT) WHEN NOT MATCHED THEN INSERT (filling[1], id) VALUES (s.a, s.a) RETURNING merge_action() AS action, *; END; \sf merge_sf_test CREATE FUNCTION merge_sf_test2() RETURNS void LANGUAGE sql BEGIN ATOMIC MERGE INTO sf_target t USING rule_merge1 s ON (s.a = t.id) WHEN NOT MATCHED THEN INSERT (data, id) VALUES (s.a, s.a) WHEN MATCHED THEN UPDATE SET data = s.b WHEN NOT MATCHED BY SOURCE THEN DELETE; END; \sf merge_sf_test2 DROP FUNCTION merge_sf_test; DROP FUNCTION merge_sf_test2; DROP TABLE sf_target; -- -- 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; -- -- Test non-SELECT rule on security invoker view. -- Should use view owner's permissions. -- CREATE USER regress_rule_user1; CREATE TABLE ruletest_t1 (x int); CREATE TABLE ruletest_t2 (x int); CREATE VIEW ruletest_v1 WITH (security_invoker=true) AS SELECT * FROM ruletest_t1; GRANT INSERT ON ruletest_v1 TO regress_rule_user1; CREATE RULE rule1 AS ON INSERT TO ruletest_v1 DO INSTEAD INSERT INTO ruletest_t2 VALUES (NEW.*); SET SESSION AUTHORIZATION regress_rule_user1; INSERT INTO ruletest_v1 VALUES (1); RESET SESSION AUTHORIZATION; -- Test that main query's relation's permissions are checked before -- the rule action's relation's. CREATE TABLE ruletest_t3 (x int); CREATE RULE rule2 AS ON UPDATE TO ruletest_t1 DO INSTEAD INSERT INTO ruletest_t2 VALUES (OLD.*); REVOKE ALL ON ruletest_t2 FROM regress_rule_user1; REVOKE ALL ON ruletest_t3 FROM regress_rule_user1; ALTER TABLE ruletest_t1 OWNER TO regress_rule_user1; SET SESSION AUTHORIZATION regress_rule_user1; UPDATE ruletest_t1 t1 SET x = 0 FROM ruletest_t3 t3 WHERE t1.x = t3.x; RESET SESSION AUTHORIZATION; SELECT * FROM ruletest_t1; SELECT * FROM ruletest_t2; DROP VIEW ruletest_v1; DROP RULE rule2 ON ruletest_t1; DROP TABLE ruletest_t3; DROP TABLE ruletest_t2; DROP TABLE ruletest_t1; DROP USER regress_rule_user1; libpg_query-17-6.1.0/test/sql/postgres_regress/sanity_check.sql000066400000000000000000000015361477334012600246440ustar00rootroot00000000000000VACUUM; -- -- 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-17-6.1.0/test/sql/postgres_regress/security_label.sql000066400000000000000000000030501477334012600251770ustar00rootroot00000000000000-- -- 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-17-6.1.0/test/sql/postgres_regress/select.sql000066400000000000000000000177011477334012600234600ustar00rootroot00000000000000-- -- 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; -- -- 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; -- corner case: VALUES with no columns CREATE TEMP TABLE nocols(); INSERT INTO nocols DEFAULT VALUES; SELECT * FROM nocols n, LATERAL (VALUES(n.*)) v; -- -- 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-17-6.1.0/test/sql/postgres_regress/select_distinct.sql000066400000000000000000000133061477334012600253560ustar00rootroot00000000000000-- -- SELECT_DISTINCT -- -- -- awk '{print $3;}' onek.data | sort -n | uniq -- SELECT DISTINCT two FROM onek ORDER BY 1; -- -- awk '{print $5;}' onek.data | sort -n | uniq -- SELECT DISTINCT ten FROM onek ORDER BY 1; -- -- awk '{print $16;}' onek.data | sort -d | uniq -- SELECT DISTINCT string4 FROM onek 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 onek 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_seqscan = 0; -- Check to see we get an incremental sort plan EXPLAIN (costs off) SELECT DISTINCT hundred, two FROM tenk1; RESET enable_seqscan; 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; -- Test parallel DISTINCT SET parallel_tuple_cost=0; SET parallel_setup_cost=0; SET min_parallel_table_scan_size=0; SET max_parallel_workers_per_gather=2; -- Ensure we get a parallel plan EXPLAIN (costs off) SELECT DISTINCT four FROM tenk1; -- Ensure the parallel plan produces the correct results SELECT DISTINCT four FROM tenk1; CREATE OR REPLACE FUNCTION distinct_func(a INT) RETURNS INT AS $$ BEGIN RETURN a; END; $$ LANGUAGE plpgsql PARALLEL UNSAFE; -- Ensure we don't do parallel distinct with a parallel unsafe function EXPLAIN (COSTS OFF) SELECT DISTINCT distinct_func(1) FROM tenk1; -- make the function parallel safe CREATE OR REPLACE FUNCTION distinct_func(a INT) RETURNS INT AS $$ BEGIN RETURN a; END; $$ LANGUAGE plpgsql PARALLEL SAFE; -- Ensure we do parallel distinct now that the function is parallel safe EXPLAIN (COSTS OFF) SELECT DISTINCT distinct_func(1) FROM tenk1; RESET max_parallel_workers_per_gather; RESET min_parallel_table_scan_size; RESET parallel_setup_cost; RESET parallel_tuple_cost; -- -- Test the planner's ability to use a LIMIT 1 instead of a Unique node when -- all of the distinct_pathkeys have been marked as redundant -- -- Ensure we get a plan with a Limit 1 EXPLAIN (COSTS OFF) SELECT DISTINCT four FROM tenk1 WHERE four = 0; -- Ensure the above gives us the correct result SELECT DISTINCT four FROM tenk1 WHERE four = 0; -- Ensure we get a plan with a Limit 1 EXPLAIN (COSTS OFF) SELECT DISTINCT four FROM tenk1 WHERE four = 0 AND two <> 0; -- Ensure no rows are returned SELECT DISTINCT four FROM tenk1 WHERE four = 0 AND two <> 0; -- Ensure we get a plan with a Limit 1 when the SELECT list contains constants EXPLAIN (COSTS OFF) SELECT DISTINCT four,1,2,3 FROM tenk1 WHERE four = 0; -- Ensure we only get 1 row SELECT DISTINCT four,1,2,3 FROM tenk1 WHERE four = 0; SET parallel_setup_cost=0; SET min_parallel_table_scan_size=0; SET max_parallel_workers_per_gather=2; -- Ensure we get a plan with a Limit 1 in both partial distinct and final -- distinct EXPLAIN (COSTS OFF) SELECT DISTINCT four FROM tenk1 WHERE four = 10; RESET max_parallel_workers_per_gather; RESET min_parallel_table_scan_size; RESET parallel_setup_cost; -- -- 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-17-6.1.0/test/sql/postgres_regress/select_distinct_on.sql000066400000000000000000000025501477334012600260510ustar00rootroot00000000000000-- -- SELECT_DISTINCT_ON -- SELECT DISTINCT ON (string4) string4, two, ten FROM onek 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 onek ORDER BY string4 using <, two using <, ten using <; SELECT DISTINCT ON (string4, ten) string4, ten, two FROM onek 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; -- -- Test the planner's ability to use a LIMIT 1 instead of a Unique node when -- all of the distinct_pathkeys have been marked as redundant -- -- Ensure we also get a LIMIT plan with DISTINCT ON EXPLAIN (COSTS OFF) SELECT DISTINCT ON (four) four,two FROM tenk1 WHERE four = 0 ORDER BY 1; -- and check the result of the above query is correct SELECT DISTINCT ON (four) four,two FROM tenk1 WHERE four = 0 ORDER BY 1; -- Ensure a Sort -> Limit is used when the ORDER BY contains additional cols EXPLAIN (COSTS OFF) SELECT DISTINCT ON (four) four,two FROM tenk1 WHERE four = 0 ORDER BY 1,2; -- Same again but use a column that is indexed so that we get an index scan -- then a limit EXPLAIN (COSTS OFF) SELECT DISTINCT ON (four) four,hundred FROM tenk1 WHERE four = 0 ORDER BY 1,2; libpg_query-17-6.1.0/test/sql/postgres_regress/select_having.sql000066400000000000000000000033251477334012600250110ustar00rootroot00000000000000-- -- 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-17-6.1.0/test/sql/postgres_regress/select_implicit.sql000066400000000000000000000125741477334012600253550ustar00rootroot00000000000000-- -- 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 CREATE TABLE test_missing_target2 AS SELECT count(*) 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 CREATE TABLE test_missing_target3 AS SELECT 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; SELECT * FROM test_missing_target3; -- Cleanup DROP TABLE test_missing_target; DROP TABLE test_missing_target2; DROP TABLE test_missing_target3; libpg_query-17-6.1.0/test/sql/postgres_regress/select_into.sql000066400000000000000000000114201477334012600245010ustar00rootroot00000000000000-- -- 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; -- WITH DATA, passes. CREATE TABLE selinto_schema.tbl_withdata1 (a) AS SELECT generate_series(1,3) WITH DATA; INSERT INTO selinto_schema.tbl_withdata1 VALUES (4); EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE TABLE selinto_schema.tbl_withdata2 (a) AS SELECT generate_series(1,3) WITH DATA; -- WITH NO DATA, passes. CREATE TABLE selinto_schema.tbl_nodata1 (a) AS SELECT generate_series(1,3) WITH NO DATA; EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE TABLE selinto_schema.tbl_nodata2 (a) AS SELECT generate_series(1,3) WITH NO DATA; -- EXECUTE and WITH DATA, passes. PREPARE data_sel AS SELECT generate_series(1,3); CREATE TABLE selinto_schema.tbl_withdata3 (a) AS EXECUTE data_sel WITH DATA; EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE TABLE selinto_schema.tbl_withdata4 (a) AS EXECUTE data_sel WITH DATA; -- EXECUTE and WITH NO DATA, passes. CREATE TABLE selinto_schema.tbl_nodata3 (a) AS EXECUTE data_sel WITH NO DATA; EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE TABLE selinto_schema.tbl_nodata4 (a) AS EXECUTE data_sel WITH NO DATA; 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; RESET SESSION AUTHORIZATION; DEALLOCATE data_sel; 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 int4_tbl; COPY (SELECT 1 INTO frak UNION SELECT 2) TO 'blob'; SELECT * FROM (SELECT 1 INTO f) bar; CREATE VIEW foo AS SELECT 1 INTO int4_tbl; INSERT INTO int4_tbl SELECT 1 INTO f; -- Test CREATE TABLE AS ... IF NOT EXISTS CREATE TABLE ctas_ine_tbl AS SELECT 1; CREATE TABLE ctas_ine_tbl AS SELECT 1 / 0; -- error CREATE TABLE IF NOT EXISTS ctas_ine_tbl AS SELECT 1 / 0; -- ok CREATE TABLE ctas_ine_tbl AS SELECT 1 / 0 WITH NO DATA; -- error CREATE TABLE IF NOT EXISTS ctas_ine_tbl AS SELECT 1 / 0 WITH NO DATA; -- ok EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE TABLE ctas_ine_tbl AS SELECT 1 / 0; -- error EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE TABLE IF NOT EXISTS ctas_ine_tbl AS SELECT 1 / 0; -- ok EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE TABLE ctas_ine_tbl AS SELECT 1 / 0 WITH NO DATA; -- error EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE TABLE IF NOT EXISTS ctas_ine_tbl AS SELECT 1 / 0 WITH NO DATA; -- ok PREPARE ctas_ine_query AS SELECT 1 / 0; EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE TABLE ctas_ine_tbl AS EXECUTE ctas_ine_query; -- error EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE TABLE IF NOT EXISTS ctas_ine_tbl AS EXECUTE ctas_ine_query; -- ok DROP TABLE ctas_ine_tbl; libpg_query-17-6.1.0/test/sql/postgres_regress/select_parallel.sql000066400000000000000000000424731477334012600253400ustar00rootroot00000000000000-- -- PARALLEL -- create function sp_parallel_restricted(int) returns int as $$begin return $1; end$$ language plpgsql parallel restricted; begin; -- 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; set random_page_cost = 2; explain (costs off) select count((unique1)) from tenk1 where hundred > 1; select count((unique1)) from tenk1 where hundred > 1; -- Parallel ScalarArrayOp index scan explain (costs off) select count((unique1)) from tenk1 where hundred = any ((select array_agg(i) from generate_series(1, 100, 15) i)::int[]); select count((unique1)) from tenk1 where hundred = any ((select array_agg(i) from generate_series(1, 100, 15) i)::int[]); -- 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; create function parallel_safe_volatile(a int) returns int as $$ begin return a; end; $$ parallel safe volatile language plpgsql; -- Test gather merge atop of a sort of a partial path explain (costs off) select * from tenk1 where four = 2 order by four, hundred, parallel_safe_volatile(thousand); -- Test gather merge atop of an incremental sort a of partial path set min_parallel_index_scan_size = 0; set enable_seqscan = off; explain (costs off) select * from tenk1 where four = 2 order by four, hundred, parallel_safe_volatile(thousand); reset min_parallel_index_scan_size; reset enable_seqscan; -- Test GROUP BY with a gather merge path atop of a sort of a partial path explain (costs off) select count(*) from tenk1 group by twenty, parallel_safe_volatile(two); drop function parallel_safe_volatile(int); SAVEPOINT settings; SET LOCAL debug_parallel_query = 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 debug_parallel_query = 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 debug_parallel_query = 1; select count(*) from tenk1; reset debug_parallel_query; 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 debug_parallel_query = 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 debug_parallel_query = 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; EXPLAIN (VERBOSE, COSTS OFF) SELECT generate_series(1, two), array(select generate_series(1, two)) FROM tenk1 ORDER BY tenthous; -- must disallow pushing sort below gather when pathkey contains an SRF EXPLAIN (VERBOSE, COSTS OFF) SELECT unnest(ARRAY[]::integer[]) + 1 AS pathkey FROM tenk1 t1 JOIN tenk1 t2 ON TRUE ORDER BY pathkey; -- 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; -- test that function option SET ROLE works in parallel workers. create role regress_parallel_worker; create function set_and_report_role() returns text as $$ select current_setting('role') $$ language sql parallel safe set role = regress_parallel_worker; create function set_role_and_error(int) returns int as $$ select 1 / $1 $$ language sql parallel safe set role = regress_parallel_worker; set debug_parallel_query = 0; select set_and_report_role(); select set_role_and_error(0); set debug_parallel_query = 1; select set_and_report_role(); select set_role_and_error(0); reset debug_parallel_query; drop function set_and_report_role(); drop function set_role_and_error(int); drop role regress_parallel_worker; -- don't freeze in ParallelFinish while holding an LWLock BEGIN; CREATE FUNCTION my_cmp (int4, int4) RETURNS int LANGUAGE sql AS $$ SELECT CASE WHEN $1 < $2 THEN -1 WHEN $1 > $2 THEN 1 ELSE 0 END; $$; CREATE TABLE parallel_hang (i int4); INSERT INTO parallel_hang (SELECT * FROM generate_series(1, 400) gs); CREATE OPERATOR CLASS int4_custom_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_cmp(int4, int4); CREATE UNIQUE INDEX parallel_hang_idx ON parallel_hang USING btree (i int4_custom_ops); SET debug_parallel_query = on; DELETE FROM parallel_hang WHERE 380 <= i AND i <= 420; ROLLBACK; libpg_query-17-6.1.0/test/sql/postgres_regress/select_views.sql000066400000000000000000000124031477334012600246670ustar00rootroot00000000000000-- -- 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-17-6.1.0/test/sql/postgres_regress/sequence.sql000066400000000000000000000277041477334012600240150ustar00rootroot00000000000000-- -- CREATE SEQUENCE -- -- various error cases 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(); -- unlogged sequences -- (more tests in src/test/recovery/) CREATE UNLOGGED SEQUENCE sequence_test_unlogged; ALTER SEQUENCE sequence_test_unlogged SET LOGGED; \d sequence_test_unlogged ALTER SEQUENCE sequence_test_unlogged SET UNLOGGED; \d sequence_test_unlogged DROP SEQUENCE sequence_test_unlogged; -- 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-17-6.1.0/test/sql/postgres_regress/spgist.sql000066400000000000000000000071301477334012600235050ustar00rootroot00000000000000-- -- 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; -- Test index over a domain create domain spgist_text as varchar; create table spgist_domain_tbl (f1 spgist_text); create index spgist_domain_idx on spgist_domain_tbl using spgist(f1); insert into spgist_domain_tbl values('fee'), ('fi'), ('fo'), ('fum'); explain (costs off) select * from spgist_domain_tbl where f1 = 'fo'; select * from spgist_domain_tbl where f1 = 'fo'; -- test an unlogged table, mostly to get coverage of spgistbuildempty create unlogged table spgist_unlogged_tbl(id serial, b box); create index spgist_unlogged_idx on spgist_unlogged_tbl using spgist (b); insert into spgist_unlogged_tbl(b) select box(point(i,j)) from generate_series(1,100,5) i, generate_series(1,10,5) j; -- leave this table around, to help in testing dump/restore libpg_query-17-6.1.0/test/sql/postgres_regress/sqljson.sql000066400000000000000000000443001477334012600236650ustar00rootroot00000000000000-- JSON() SELECT JSON(); SELECT JSON(NULL); SELECT JSON('{ "a" : 1 } '); SELECT JSON('{ "a" : 1 } ' FORMAT JSON); SELECT JSON('{ "a" : 1 } ' FORMAT JSON ENCODING UTF8); SELECT JSON('{ "a" : 1 } '::bytea FORMAT JSON ENCODING UTF8); SELECT pg_typeof(JSON('{ "a" : 1 } ')); SELECT JSON(' 1 '::json); SELECT JSON(' 1 '::jsonb); SELECT JSON(' 1 '::json WITH UNIQUE KEYS); SELECT JSON(123); SELECT JSON('{"a": 1, "a": 2}'); SELECT JSON('{"a": 1, "a": 2}' WITH UNIQUE KEYS); SELECT JSON('{"a": 1, "a": 2}' WITHOUT UNIQUE KEYS); EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON('123'); EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON('123' FORMAT JSON); EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON('123'::bytea FORMAT JSON); EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON('123'::bytea FORMAT JSON ENCODING UTF8); EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON('123' WITH UNIQUE KEYS); EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON('123' WITHOUT UNIQUE KEYS); EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON('123'); SELECT pg_typeof(JSON('123')); -- JSON_SCALAR() SELECT JSON_SCALAR(); SELECT JSON_SCALAR(NULL); SELECT JSON_SCALAR(NULL::int); SELECT JSON_SCALAR(123); SELECT JSON_SCALAR(123.45); SELECT JSON_SCALAR(123.45::numeric); SELECT JSON_SCALAR(true); SELECT JSON_SCALAR(false); SELECT JSON_SCALAR(' 123.45'); SELECT JSON_SCALAR('2020-06-07'::date); SELECT JSON_SCALAR('2020-06-07 01:02:03'::timestamp); SELECT JSON_SCALAR('{}'::json); SELECT JSON_SCALAR('{}'::jsonb); EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_SCALAR(123); EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_SCALAR('123'); -- JSON_SERIALIZE() SELECT JSON_SERIALIZE(); SELECT JSON_SERIALIZE(NULL); SELECT JSON_SERIALIZE(JSON('{ "a" : 1 } ')); SELECT JSON_SERIALIZE('{ "a" : 1 } '); SELECT JSON_SERIALIZE('1'); SELECT JSON_SERIALIZE('1' FORMAT JSON); SELECT JSON_SERIALIZE('{ "a" : 1 } ' RETURNING bytea); SELECT JSON_SERIALIZE('{ "a" : 1 } ' RETURNING varchar); SELECT pg_typeof(JSON_SERIALIZE(NULL)); -- only string types or bytea allowed SELECT JSON_SERIALIZE('{ "a" : 1 } ' RETURNING jsonb); EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_SERIALIZE('{}'); EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_SERIALIZE('{}' RETURNING bytea); -- JSON_OBJECT() SELECT JSON_OBJECT(); SELECT JSON_OBJECT(RETURNING json); SELECT JSON_OBJECT(RETURNING json FORMAT JSON); SELECT JSON_OBJECT(RETURNING jsonb); SELECT JSON_OBJECT(RETURNING jsonb FORMAT JSON); SELECT JSON_OBJECT(RETURNING text); SELECT JSON_OBJECT(RETURNING text FORMAT JSON); SELECT JSON_OBJECT(RETURNING text FORMAT JSON ENCODING UTF8); SELECT JSON_OBJECT(RETURNING text FORMAT JSON ENCODING INVALID_ENCODING); SELECT JSON_OBJECT(RETURNING bytea); SELECT JSON_OBJECT(RETURNING bytea FORMAT JSON); SELECT JSON_OBJECT(RETURNING bytea FORMAT JSON ENCODING UTF8); SELECT JSON_OBJECT(RETURNING bytea FORMAT JSON ENCODING UTF16); SELECT JSON_OBJECT(RETURNING bytea FORMAT JSON ENCODING UTF32); SELECT JSON_OBJECT('foo': NULL::int FORMAT JSON); SELECT JSON_OBJECT('foo': NULL::int FORMAT JSON ENCODING UTF8); SELECT JSON_OBJECT('foo': NULL::json FORMAT JSON); SELECT JSON_OBJECT('foo': NULL::json FORMAT JSON ENCODING UTF8); SELECT JSON_OBJECT('foo': NULL::jsonb FORMAT JSON); SELECT JSON_OBJECT('foo': NULL::jsonb FORMAT JSON ENCODING UTF8); SELECT JSON_OBJECT(NULL: 1); SELECT JSON_OBJECT('a': 2 + 3); SELECT JSON_OBJECT('a' VALUE 2 + 3); --SELECT JSON_OBJECT(KEY 'a' VALUE 2 + 3); SELECT JSON_OBJECT('a' || 2: 1); SELECT JSON_OBJECT(('a' || 2) VALUE 1); --SELECT JSON_OBJECT('a' || 2 VALUE 1); --SELECT JSON_OBJECT(KEY 'a' || 2 VALUE 1); SELECT JSON_OBJECT('a': 2::text); SELECT JSON_OBJECT('a' VALUE 2::text); --SELECT JSON_OBJECT(KEY 'a' VALUE 2::text); SELECT JSON_OBJECT(1::text: 2); SELECT JSON_OBJECT((1::text) VALUE 2); --SELECT JSON_OBJECT(1::text VALUE 2); --SELECT JSON_OBJECT(KEY 1::text VALUE 2); SELECT JSON_OBJECT(json '[1]': 123); SELECT JSON_OBJECT(ARRAY[1,2,3]: 'aaa'); SELECT JSON_OBJECT( 'a': '123', 1.23: 123, 'c': json '[ 1,true,{ } ]', 'd': jsonb '{ "x" : 123.45 }' ); SELECT JSON_OBJECT( 'a': '123', 1.23: 123, 'c': json '[ 1,true,{ } ]', 'd': jsonb '{ "x" : 123.45 }' RETURNING jsonb ); /* SELECT JSON_OBJECT( 'a': '123', KEY 1.23 VALUE 123, 'c' VALUE json '[1, true, {}]' ); */ SELECT JSON_OBJECT('a': '123', 'b': JSON_OBJECT('a': 111, 'b': 'aaa')); SELECT JSON_OBJECT('a': '123', 'b': JSON_OBJECT('a': 111, 'b': 'aaa' RETURNING jsonb)); SELECT JSON_OBJECT('a': JSON_OBJECT('b': 1 RETURNING text)); SELECT JSON_OBJECT('a': JSON_OBJECT('b': 1 RETURNING text) FORMAT JSON); SELECT JSON_OBJECT('a': JSON_OBJECT('b': 1 RETURNING bytea)); SELECT JSON_OBJECT('a': JSON_OBJECT('b': 1 RETURNING bytea) FORMAT JSON); SELECT JSON_OBJECT('a': '1', 'b': NULL, 'c': 2); SELECT JSON_OBJECT('a': '1', 'b': NULL, 'c': 2 NULL ON NULL); SELECT JSON_OBJECT('a': '1', 'b': NULL, 'c': 2 ABSENT ON NULL); SELECT JSON_OBJECT(1: 1, '2': NULL, '3': 1, repeat('x', 1000): 1, 2: repeat('a', 100) WITH UNIQUE); SELECT JSON_OBJECT(1: 1, '1': NULL WITH UNIQUE); SELECT JSON_OBJECT(1: 1, '1': NULL ABSENT ON NULL WITH UNIQUE); SELECT JSON_OBJECT(1: 1, '1': NULL NULL ON NULL WITH UNIQUE RETURNING jsonb); SELECT JSON_OBJECT(1: 1, '1': NULL ABSENT ON NULL WITH UNIQUE RETURNING jsonb); SELECT JSON_OBJECT(1: 1, '2': NULL, '1': 1 NULL ON NULL WITH UNIQUE); SELECT JSON_OBJECT(1: 1, '2': NULL, '1': 1 ABSENT ON NULL WITH UNIQUE); SELECT JSON_OBJECT(1: 1, '2': NULL, '1': 1 ABSENT ON NULL WITHOUT UNIQUE); SELECT JSON_OBJECT(1: 1, '2': NULL, '1': 1 ABSENT ON NULL WITH UNIQUE RETURNING jsonb); SELECT JSON_OBJECT(1: 1, '2': NULL, '1': 1 ABSENT ON NULL WITHOUT UNIQUE RETURNING jsonb); SELECT JSON_OBJECT(1: 1, '2': NULL, '3': 1, 4: NULL, '5': 'a' ABSENT ON NULL WITH UNIQUE RETURNING jsonb); -- BUG: https://postgr.es/m/CADXhmgTJtJZK9A3Na_ry%2BXrq-ghjcejBRhcRMzWZvbd__QdgJA%40mail.gmail.com -- datum_to_jsonb_internal() didn't catch keys that are casts instead of a simple scalar CREATE TYPE mood AS ENUM ('happy', 'sad', 'neutral'); CREATE FUNCTION mood_to_json(mood) RETURNS json AS $$ SELECT to_json($1::text); $$ LANGUAGE sql IMMUTABLE; CREATE CAST (mood AS json) WITH FUNCTION mood_to_json(mood) AS IMPLICIT; SELECT JSON_OBJECT('happy'::mood: '123'::jsonb); DROP CAST (mood AS json); DROP FUNCTION mood_to_json; DROP TYPE mood; -- JSON_ARRAY() SELECT JSON_ARRAY(); SELECT JSON_ARRAY(RETURNING json); SELECT JSON_ARRAY(RETURNING json FORMAT JSON); SELECT JSON_ARRAY(RETURNING jsonb); SELECT JSON_ARRAY(RETURNING jsonb FORMAT JSON); SELECT JSON_ARRAY(RETURNING text); SELECT JSON_ARRAY(RETURNING text FORMAT JSON); SELECT JSON_ARRAY(RETURNING text FORMAT JSON ENCODING UTF8); SELECT JSON_ARRAY(RETURNING text FORMAT JSON ENCODING INVALID_ENCODING); SELECT JSON_ARRAY(RETURNING bytea); SELECT JSON_ARRAY(RETURNING bytea FORMAT JSON); SELECT JSON_ARRAY(RETURNING bytea FORMAT JSON ENCODING UTF8); SELECT JSON_ARRAY(RETURNING bytea FORMAT JSON ENCODING UTF16); SELECT JSON_ARRAY(RETURNING bytea FORMAT JSON ENCODING UTF32); SELECT JSON_ARRAY('aaa', 111, true, array[1,2,3], NULL, json '{"a": [1]}', jsonb '["a",3]'); SELECT JSON_ARRAY('a', NULL, 'b' NULL ON NULL); SELECT JSON_ARRAY('a', NULL, 'b' ABSENT ON NULL); SELECT JSON_ARRAY(NULL, NULL, 'b' ABSENT ON NULL); SELECT JSON_ARRAY('a', NULL, 'b' NULL ON NULL RETURNING jsonb); SELECT JSON_ARRAY('a', NULL, 'b' ABSENT ON NULL RETURNING jsonb); SELECT JSON_ARRAY(NULL, NULL, 'b' ABSENT ON NULL RETURNING jsonb); SELECT JSON_ARRAY(JSON_ARRAY('{ "a" : 123 }' RETURNING text)); SELECT JSON_ARRAY(JSON_ARRAY('{ "a" : 123 }' FORMAT JSON RETURNING text)); SELECT JSON_ARRAY(JSON_ARRAY('{ "a" : 123 }' FORMAT JSON RETURNING text) FORMAT JSON); SELECT JSON_ARRAY(SELECT i FROM (VALUES (1), (2), (NULL), (4)) foo(i)); SELECT JSON_ARRAY(SELECT i FROM (VALUES (NULL::int[]), ('{1,2}'), (NULL), (NULL), ('{3,4}'), (NULL)) foo(i)); SELECT JSON_ARRAY(SELECT i FROM (VALUES (NULL::int[]), ('{1,2}'), (NULL), (NULL), ('{3,4}'), (NULL)) foo(i) RETURNING jsonb); --SELECT JSON_ARRAY(SELECT i FROM (VALUES (NULL::int[]), ('{1,2}'), (NULL), (NULL), ('{3,4}'), (NULL)) foo(i) NULL ON NULL); --SELECT JSON_ARRAY(SELECT i FROM (VALUES (NULL::int[]), ('{1,2}'), (NULL), (NULL), ('{3,4}'), (NULL)) foo(i) NULL ON NULL RETURNING jsonb); SELECT JSON_ARRAY(SELECT i FROM (VALUES (3), (1), (NULL), (2)) foo(i) ORDER BY i); -- Should fail SELECT JSON_ARRAY(SELECT FROM (VALUES (1)) foo(i)); SELECT JSON_ARRAY(SELECT i, i FROM (VALUES (1)) foo(i)); SELECT JSON_ARRAY(SELECT * FROM (VALUES (1, 2)) foo(i, j)); -- JSON_ARRAYAGG() SELECT JSON_ARRAYAGG(i) IS NULL, JSON_ARRAYAGG(i RETURNING jsonb) IS NULL FROM generate_series(1, 0) i; SELECT JSON_ARRAYAGG(i), JSON_ARRAYAGG(i RETURNING jsonb) FROM generate_series(1, 5) i; SELECT JSON_ARRAYAGG(i ORDER BY i DESC) FROM generate_series(1, 5) i; SELECT JSON_ARRAYAGG(i::text::json) FROM generate_series(1, 5) i; SELECT JSON_ARRAYAGG(JSON_ARRAY(i, i + 1 RETURNING text) FORMAT JSON) FROM generate_series(1, 5) i; SELECT JSON_ARRAYAGG(NULL), JSON_ARRAYAGG(NULL RETURNING jsonb) FROM generate_series(1, 5); SELECT JSON_ARRAYAGG(NULL NULL ON NULL), JSON_ARRAYAGG(NULL NULL ON NULL RETURNING jsonb) FROM generate_series(1, 5); \x SELECT JSON_ARRAYAGG(bar) as no_options, JSON_ARRAYAGG(bar RETURNING jsonb) as returning_jsonb, JSON_ARRAYAGG(bar ABSENT ON NULL) as absent_on_null, JSON_ARRAYAGG(bar ABSENT ON NULL RETURNING jsonb) as absentonnull_returning_jsonb, JSON_ARRAYAGG(bar NULL ON NULL) as null_on_null, JSON_ARRAYAGG(bar NULL ON NULL RETURNING jsonb) as nullonnull_returning_jsonb, JSON_ARRAYAGG(foo) as row_no_options, JSON_ARRAYAGG(foo RETURNING jsonb) as row_returning_jsonb, JSON_ARRAYAGG(foo ORDER BY bar) FILTER (WHERE bar > 2) as row_filtered_agg, JSON_ARRAYAGG(foo ORDER BY bar RETURNING jsonb) FILTER (WHERE bar > 2) as row_filtered_agg_returning_jsonb FROM (VALUES (NULL), (3), (1), (NULL), (NULL), (5), (2), (4), (NULL)) foo(bar); \x SELECT bar, JSON_ARRAYAGG(bar) FILTER (WHERE bar > 2) OVER (PARTITION BY foo.bar % 2) FROM (VALUES (NULL), (3), (1), (NULL), (NULL), (5), (2), (4), (NULL), (5), (4)) foo(bar); -- JSON_OBJECTAGG() SELECT JSON_OBJECTAGG('key': 1) IS NULL, JSON_OBJECTAGG('key': 1 RETURNING jsonb) IS NULL WHERE FALSE; SELECT JSON_OBJECTAGG(NULL: 1); SELECT JSON_OBJECTAGG(NULL: 1 RETURNING jsonb); SELECT JSON_OBJECTAGG(i: i), -- JSON_OBJECTAGG(i VALUE i), -- JSON_OBJECTAGG(KEY i VALUE i), JSON_OBJECTAGG(i: i RETURNING jsonb) FROM generate_series(1, 5) i; SELECT JSON_OBJECTAGG(k: v), JSON_OBJECTAGG(k: v NULL ON NULL), JSON_OBJECTAGG(k: v ABSENT ON NULL), JSON_OBJECTAGG(k: v RETURNING jsonb), JSON_OBJECTAGG(k: v NULL ON NULL RETURNING jsonb), JSON_OBJECTAGG(k: v ABSENT ON NULL RETURNING jsonb) FROM (VALUES (1, 1), (1, NULL), (2, NULL), (3, 3)) foo(k, v); SELECT JSON_OBJECTAGG(k: v WITH UNIQUE KEYS) FROM (VALUES (1, 1), (1, NULL), (2, 2)) foo(k, v); SELECT JSON_OBJECTAGG(k: v ABSENT ON NULL WITH UNIQUE KEYS) FROM (VALUES (1, 1), (1, NULL), (2, 2)) foo(k, v); SELECT JSON_OBJECTAGG(k: v ABSENT ON NULL WITH UNIQUE KEYS) FROM (VALUES (1, 1), (0, NULL), (3, NULL), (2, 2), (4, NULL)) foo(k, v); SELECT JSON_OBJECTAGG(k: v WITH UNIQUE KEYS RETURNING jsonb) FROM (VALUES (1, 1), (1, NULL), (2, 2)) foo(k, v); SELECT JSON_OBJECTAGG(k: v ABSENT ON NULL WITH UNIQUE KEYS RETURNING jsonb) FROM (VALUES (1, 1), (1, NULL), (2, 2)) foo(k, v); SELECT JSON_OBJECTAGG(k: v ABSENT ON NULL WITH UNIQUE KEYS RETURNING jsonb) FROM (VALUES (1, 1), (0, NULL),(4, null), (5, null),(6, null),(2, 2)) foo(k, v); SELECT JSON_OBJECTAGG(mod(i,100): (i)::text FORMAT JSON WITH UNIQUE) FROM generate_series(0, 199) i; -- Test JSON_OBJECT deparsing EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_OBJECT('foo' : '1' FORMAT JSON, 'bar' : 'baz' RETURNING json); CREATE VIEW json_object_view AS SELECT JSON_OBJECT('foo' : '1' FORMAT JSON, 'bar' : 'baz' RETURNING json); \sv json_object_view DROP VIEW json_object_view; SELECT to_json(a) AS a, JSON_OBJECTAGG(k : v WITH UNIQUE KEYS) OVER (ORDER BY k) FROM (VALUES (1,1), (2,2)) a(k,v); SELECT to_json(a) AS a, JSON_OBJECTAGG(k : v WITH UNIQUE KEYS) OVER (ORDER BY k) FROM (VALUES (1,1), (1,2), (2,2)) a(k,v); SELECT to_json(a) AS a, JSON_OBJECTAGG(k : v ABSENT ON NULL WITH UNIQUE KEYS) OVER (ORDER BY k) FROM (VALUES (1,1), (1,null), (2,2)) a(k,v); SELECT to_json(a) AS a, JSON_OBJECTAGG(k : v ABSENT ON NULL) OVER (ORDER BY k) FROM (VALUES (1,1), (1,null), (2,2)) a(k,v); SELECT to_json(a) AS a, JSON_OBJECTAGG(k : v ABSENT ON NULL) OVER (ORDER BY k RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM (VALUES (1,1), (1,null), (2,2)) a(k,v); -- Test JSON_ARRAY deparsing EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_ARRAY('1' FORMAT JSON, 2 RETURNING json); CREATE VIEW json_array_view AS SELECT JSON_ARRAY('1' FORMAT JSON, 2 RETURNING json); \sv json_array_view DROP VIEW json_array_view; -- Test JSON_OBJECTAGG deparsing EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_OBJECTAGG(i: ('111' || i)::bytea FORMAT JSON WITH UNIQUE RETURNING text) FILTER (WHERE i > 3) FROM generate_series(1,5) i; EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_OBJECTAGG(i: ('111' || i)::bytea FORMAT JSON WITH UNIQUE RETURNING text) OVER (PARTITION BY i % 2) FROM generate_series(1,5) i; CREATE VIEW json_objectagg_view AS SELECT JSON_OBJECTAGG(i: ('111' || i)::bytea FORMAT JSON WITH UNIQUE RETURNING text) FILTER (WHERE i > 3) FROM generate_series(1,5) i; \sv json_objectagg_view DROP VIEW json_objectagg_view; -- Test JSON_ARRAYAGG deparsing EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_ARRAYAGG(('111' || i)::bytea FORMAT JSON NULL ON NULL RETURNING text) FILTER (WHERE i > 3) FROM generate_series(1,5) i; EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_ARRAYAGG(('111' || i)::bytea FORMAT JSON NULL ON NULL RETURNING text) OVER (PARTITION BY i % 2) FROM generate_series(1,5) i; CREATE VIEW json_arrayagg_view AS SELECT JSON_ARRAYAGG(('111' || i)::bytea FORMAT JSON NULL ON NULL RETURNING text) FILTER (WHERE i > 3) FROM generate_series(1,5) i; \sv json_arrayagg_view DROP VIEW json_arrayagg_view; -- Test JSON_ARRAY(subquery) deparsing EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_ARRAY(SELECT i FROM (VALUES (1), (2), (NULL), (4)) foo(i) RETURNING jsonb); CREATE VIEW json_array_subquery_view AS SELECT JSON_ARRAY(SELECT i FROM (VALUES (1), (2), (NULL), (4)) foo(i) RETURNING jsonb); \sv json_array_subquery_view DROP VIEW json_array_subquery_view; -- IS JSON predicate SELECT NULL IS JSON; SELECT NULL IS NOT JSON; SELECT NULL::json IS JSON; SELECT NULL::jsonb IS JSON; SELECT NULL::text IS JSON; SELECT NULL::bytea IS JSON; SELECT NULL::int IS JSON; SELECT '' IS JSON; SELECT bytea '\x00' IS JSON; CREATE TABLE test_is_json (js text); INSERT INTO test_is_json VALUES (NULL), (''), ('123'), ('"aaa "'), ('true'), ('null'), ('[]'), ('[1, "2", {}]'), ('{}'), ('{ "a": 1, "b": null }'), ('{ "a": 1, "a": null }'), ('{ "a": 1, "b": [{ "a": 1 }, { "a": 2 }] }'), ('{ "a": 1, "b": [{ "a": 1, "b": 0, "a": 2 }] }'), ('aaa'), ('{a:1}'), ('["a",]'); SELECT js, js IS JSON "IS JSON", js IS NOT JSON "IS NOT JSON", js IS JSON VALUE "IS VALUE", js IS JSON OBJECT "IS OBJECT", js IS JSON ARRAY "IS ARRAY", js IS JSON SCALAR "IS SCALAR", js IS JSON WITHOUT UNIQUE KEYS "WITHOUT UNIQUE", js IS JSON WITH UNIQUE KEYS "WITH UNIQUE" FROM test_is_json; SELECT js, js IS JSON "IS JSON", js IS NOT JSON "IS NOT JSON", js IS JSON VALUE "IS VALUE", js IS JSON OBJECT "IS OBJECT", js IS JSON ARRAY "IS ARRAY", js IS JSON SCALAR "IS SCALAR", js IS JSON WITHOUT UNIQUE KEYS "WITHOUT UNIQUE", js IS JSON WITH UNIQUE KEYS "WITH UNIQUE" FROM (SELECT js::json FROM test_is_json WHERE js IS JSON) foo(js); SELECT js0, js IS JSON "IS JSON", js IS NOT JSON "IS NOT JSON", js IS JSON VALUE "IS VALUE", js IS JSON OBJECT "IS OBJECT", js IS JSON ARRAY "IS ARRAY", js IS JSON SCALAR "IS SCALAR", js IS JSON WITHOUT UNIQUE KEYS "WITHOUT UNIQUE", js IS JSON WITH UNIQUE KEYS "WITH UNIQUE" FROM (SELECT js, js::bytea FROM test_is_json WHERE js IS JSON) foo(js0, js); SELECT js, js IS JSON "IS JSON", js IS NOT JSON "IS NOT JSON", js IS JSON VALUE "IS VALUE", js IS JSON OBJECT "IS OBJECT", js IS JSON ARRAY "IS ARRAY", js IS JSON SCALAR "IS SCALAR", js IS JSON WITHOUT UNIQUE KEYS "WITHOUT UNIQUE", js IS JSON WITH UNIQUE KEYS "WITH UNIQUE" FROM (SELECT js::jsonb FROM test_is_json WHERE js IS JSON) foo(js); -- Test IS JSON deparsing EXPLAIN (VERBOSE, COSTS OFF) SELECT '1' IS JSON AS "any", ('1' || i) IS JSON SCALAR AS "scalar", '[]' IS NOT JSON ARRAY AS "array", '{}' IS JSON OBJECT WITH UNIQUE AS "object" FROM generate_series(1, 3) i; CREATE VIEW is_json_view AS SELECT '1' IS JSON AS "any", ('1' || i) IS JSON SCALAR AS "scalar", '[]' IS NOT JSON ARRAY AS "array", '{}' IS JSON OBJECT WITH UNIQUE AS "object" FROM generate_series(1, 3) i; \sv is_json_view DROP VIEW is_json_view; -- Test implicit coercion to a fixed-length type specified in RETURNING SELECT JSON_SERIALIZE('{ "a" : 1 } ' RETURNING varchar(2)); SELECT JSON_OBJECT('a': JSON_OBJECT('b': 1 RETURNING varchar(2))); SELECT JSON_ARRAY(JSON_ARRAY('{ "a" : 123 }' RETURNING varchar(2))); SELECT JSON_ARRAYAGG(('111' || i)::bytea FORMAT JSON NULL ON NULL RETURNING varchar(2)) FROM generate_series(1,1) i; SELECT JSON_OBJECTAGG(i: ('111' || i)::bytea FORMAT JSON WITH UNIQUE RETURNING varchar(2)) FROM generate_series(1, 1) i; -- Now try domain over fixed-length type CREATE DOMAIN sqljson_char2 AS char(2) CHECK (VALUE NOT IN ('12')); SELECT JSON_SERIALIZE('123' RETURNING sqljson_char2); SELECT JSON_SERIALIZE('12' RETURNING sqljson_char2); -- Bug #18657: JsonValueExpr.raw_expr was not initialized in ExecInitExprRec() -- causing the Aggrefs contained in it to also not be initialized, which led -- to a crash in ExecBuildAggTrans() as mentioned in the bug report: -- https://postgr.es/m/18657-1b90ccce2b16bdb8@postgresql.org CREATE FUNCTION volatile_one() RETURNS int AS $$ BEGIN RETURN 1; END; $$ LANGUAGE plpgsql VOLATILE; CREATE FUNCTION stable_one() RETURNS int AS $$ BEGIN RETURN 1; END; $$ LANGUAGE plpgsql STABLE; EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_OBJECT('a': JSON_OBJECTAGG('b': volatile_one() RETURNING text) FORMAT JSON); SELECT JSON_OBJECT('a': JSON_OBJECTAGG('b': volatile_one() RETURNING text) FORMAT JSON); EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_OBJECT('a': JSON_OBJECTAGG('b': stable_one() RETURNING text) FORMAT JSON); SELECT JSON_OBJECT('a': JSON_OBJECTAGG('b': stable_one() RETURNING text) FORMAT JSON); EXPLAIN (VERBOSE, COSTS OFF) SELECT JSON_OBJECT('a': JSON_OBJECTAGG('b': 1 RETURNING text) FORMAT JSON); SELECT JSON_OBJECT('a': JSON_OBJECTAGG('b': 1 RETURNING text) FORMAT JSON); DROP FUNCTION volatile_one, stable_one; libpg_query-17-6.1.0/test/sql/postgres_regress/sqljson_jsontable.sql000066400000000000000000000441111477334012600257260ustar00rootroot00000000000000-- JSON_TABLE -- Should fail (JSON_TABLE can be used only in FROM clause) SELECT JSON_TABLE('[]', '$'); -- Only allow EMPTY and ERROR for ON ERROR SELECT * FROM JSON_TABLE('[]', 'strict $.a' COLUMNS (js2 int PATH '$') DEFAULT 1 ON ERROR); SELECT * FROM JSON_TABLE('[]', 'strict $.a' COLUMNS (js2 int PATH '$') NULL ON ERROR); SELECT * FROM JSON_TABLE('[]', 'strict $.a' COLUMNS (js2 int PATH '$') EMPTY ON ERROR); SELECT * FROM JSON_TABLE('[]', 'strict $.a' COLUMNS (js2 int PATH '$') ERROR ON ERROR); -- Column and path names must be distinct SELECT * FROM JSON_TABLE(jsonb'"1.23"', '$.a' as js2 COLUMNS (js2 int path '$')); -- Should fail (no columns) SELECT * FROM JSON_TABLE(NULL, '$' COLUMNS ()); SELECT * FROM JSON_TABLE (NULL::jsonb, '$' COLUMNS (v1 timestamp)) AS f (v1, v2); --duplicated column name SELECT * FROM JSON_TABLE(jsonb'"1.23"', '$.a' COLUMNS (js2 int path '$', js2 int path '$')); --return composite data type. create type comp as (a int, b int); SELECT * FROM JSON_TABLE(jsonb '{"rec": "(1,2)"}', '$' COLUMNS (id FOR ORDINALITY, comp comp path '$.rec' omit quotes)) jt; drop type comp; -- NULL => empty table SELECT * FROM JSON_TABLE(NULL::jsonb, '$' COLUMNS (foo int)) bar; SELECT * FROM JSON_TABLE(jsonb'"1.23"', 'strict $.a' COLUMNS (js2 int PATH '$')); -- SELECT * FROM JSON_TABLE(jsonb '123', '$' COLUMNS (item int PATH '$', foo int)) bar; -- JSON_TABLE: basic functionality CREATE DOMAIN jsonb_test_domain AS text CHECK (value <> 'foo'); CREATE TEMP TABLE json_table_test (js) AS (VALUES ('1'), ('[]'), ('{}'), ('[1, 1.23, "2", "aaaaaaa", "foo", null, false, true, {"aaa": 123}, "[1,2]", "\"str\""]') ); -- Regular "unformatted" columns SELECT * FROM json_table_test vals LEFT OUTER JOIN JSON_TABLE( vals.js::jsonb, 'lax $[*]' COLUMNS ( id FOR ORDINALITY, "int" int PATH '$', "text" text PATH '$', "char(4)" char(4) PATH '$', "bool" bool PATH '$', "numeric" numeric PATH '$', "domain" jsonb_test_domain PATH '$', js json PATH '$', jb jsonb PATH '$' ) ) jt ON true; -- "formatted" columns SELECT * FROM json_table_test vals LEFT OUTER JOIN JSON_TABLE( vals.js::jsonb, 'lax $[*]' COLUMNS ( id FOR ORDINALITY, jst text FORMAT JSON PATH '$', jsc char(4) FORMAT JSON PATH '$', jsv varchar(4) FORMAT JSON PATH '$', jsb jsonb FORMAT JSON PATH '$', jsbq jsonb FORMAT JSON PATH '$' OMIT QUOTES ) ) jt ON true; -- EXISTS columns SELECT * FROM json_table_test vals LEFT OUTER JOIN JSON_TABLE( vals.js::jsonb, 'lax $[*]' COLUMNS ( id FOR ORDINALITY, exists1 bool EXISTS PATH '$.aaa', exists2 int EXISTS PATH '$.aaa', exists3 int EXISTS PATH 'strict $.aaa' UNKNOWN ON ERROR, exists4 text EXISTS PATH 'strict $.aaa' FALSE ON ERROR ) ) jt ON true; -- Other miscellaneous checks SELECT * FROM json_table_test vals LEFT OUTER JOIN JSON_TABLE( vals.js::jsonb, 'lax $[*]' COLUMNS ( id FOR ORDINALITY, aaa int, -- "aaa" has implicit path '$."aaa"' aaa1 int PATH '$.aaa', js2 json PATH '$', jsb2w jsonb PATH '$' WITH WRAPPER, jsb2q jsonb PATH '$' OMIT QUOTES, ia int[] PATH '$', ta text[] PATH '$', jba jsonb[] PATH '$' ) ) jt ON true; -- Test using casts in DEFAULT .. ON ERROR expression SELECT * FROM JSON_TABLE(jsonb '{"d1": "H"}', '$' COLUMNS (js1 jsonb_test_domain PATH '$.a2' DEFAULT '"foo1"'::jsonb::text ON EMPTY)); SELECT * FROM JSON_TABLE(jsonb '{"d1": "H"}', '$' COLUMNS (js1 jsonb_test_domain PATH '$.a2' DEFAULT 'foo'::jsonb_test_domain ON EMPTY)); SELECT * FROM JSON_TABLE(jsonb '{"d1": "H"}', '$' COLUMNS (js1 jsonb_test_domain PATH '$.a2' DEFAULT 'foo1'::jsonb_test_domain ON EMPTY)); SELECT * FROM JSON_TABLE(jsonb '{"d1": "foo"}', '$' COLUMNS (js1 jsonb_test_domain PATH '$.d1' DEFAULT 'foo2'::jsonb_test_domain ON ERROR)); SELECT * FROM JSON_TABLE(jsonb '{"d1": "foo"}', '$' COLUMNS (js1 oid[] PATH '$.d2' DEFAULT '{1}'::int[]::oid[] ON EMPTY)); -- JSON_TABLE: Test backward parsing CREATE VIEW jsonb_table_view2 AS SELECT * FROM JSON_TABLE( jsonb 'null', 'lax $[*]' PASSING 1 + 2 AS a, json '"foo"' AS "b c" COLUMNS ( "int" int PATH '$', "text" text PATH '$', "char(4)" char(4) PATH '$', "bool" bool PATH '$', "numeric" numeric PATH '$', "domain" jsonb_test_domain PATH '$')); CREATE VIEW jsonb_table_view3 AS SELECT * FROM JSON_TABLE( jsonb 'null', 'lax $[*]' PASSING 1 + 2 AS a, json '"foo"' AS "b c" COLUMNS ( js json PATH '$', jb jsonb PATH '$', jst text FORMAT JSON PATH '$', jsc char(4) FORMAT JSON PATH '$', jsv varchar(4) FORMAT JSON PATH '$')); CREATE VIEW jsonb_table_view4 AS SELECT * FROM JSON_TABLE( jsonb 'null', 'lax $[*]' PASSING 1 + 2 AS a, json '"foo"' AS "b c" COLUMNS ( jsb jsonb FORMAT JSON PATH '$', jsbq jsonb FORMAT JSON PATH '$' OMIT QUOTES, aaa int, -- implicit path '$."aaa"', aaa1 int PATH '$.aaa')); CREATE VIEW jsonb_table_view5 AS SELECT * FROM JSON_TABLE( jsonb 'null', 'lax $[*]' PASSING 1 + 2 AS a, json '"foo"' AS "b c" COLUMNS ( exists1 bool EXISTS PATH '$.aaa', exists2 int EXISTS PATH '$.aaa' TRUE ON ERROR, exists3 text EXISTS PATH 'strict $.aaa' UNKNOWN ON ERROR)); CREATE VIEW jsonb_table_view6 AS SELECT * FROM JSON_TABLE( jsonb 'null', 'lax $[*]' PASSING 1 + 2 AS a, json '"foo"' AS "b c" COLUMNS ( js2 json PATH '$', jsb2w jsonb PATH '$' WITH WRAPPER, jsb2q jsonb PATH '$' OMIT QUOTES, ia int[] PATH '$', ta text[] PATH '$', jba jsonb[] PATH '$')); \sv jsonb_table_view2 \sv jsonb_table_view3 \sv jsonb_table_view4 \sv jsonb_table_view5 \sv jsonb_table_view6 EXPLAIN (COSTS OFF, VERBOSE) SELECT * FROM jsonb_table_view2; EXPLAIN (COSTS OFF, VERBOSE) SELECT * FROM jsonb_table_view3; EXPLAIN (COSTS OFF, VERBOSE) SELECT * FROM jsonb_table_view4; EXPLAIN (COSTS OFF, VERBOSE) SELECT * FROM jsonb_table_view5; EXPLAIN (COSTS OFF, VERBOSE) SELECT * FROM jsonb_table_view6; -- JSON_TABLE() with alias EXPLAIN (COSTS OFF, VERBOSE) SELECT * FROM JSON_TABLE( jsonb 'null', 'lax $[*]' PASSING 1 + 2 AS a, json '"foo"' AS "b c" COLUMNS ( id FOR ORDINALITY, "int" int PATH '$', "text" text PATH '$' )) json_table_func; EXPLAIN (COSTS OFF, FORMAT JSON, VERBOSE) SELECT * FROM JSON_TABLE( jsonb 'null', 'lax $[*]' PASSING 1 + 2 AS a, json '"foo"' AS "b c" COLUMNS ( id FOR ORDINALITY, "int" int PATH '$', "text" text PATH '$' )) json_table_func; DROP VIEW jsonb_table_view2; DROP VIEW jsonb_table_view3; DROP VIEW jsonb_table_view4; DROP VIEW jsonb_table_view5; DROP VIEW jsonb_table_view6; DROP DOMAIN jsonb_test_domain; -- JSON_TABLE: only one FOR ORDINALITY columns allowed SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (id FOR ORDINALITY, id2 FOR ORDINALITY, a int PATH '$.a' ERROR ON EMPTY)) jt; SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (id FOR ORDINALITY, a int PATH '$' ERROR ON EMPTY)) jt; -- JSON_TABLE: ON EMPTY/ON ERROR behavior SELECT * FROM (VALUES ('1'), ('"err"')) vals(js), JSON_TABLE(vals.js::jsonb, '$' COLUMNS (a int PATH '$')) jt; SELECT * FROM (VALUES ('1'), ('"err"')) vals(js) LEFT OUTER JOIN JSON_TABLE(vals.js::jsonb, '$' COLUMNS (a int PATH '$' ERROR ON ERROR)) jt ON true; -- TABLE-level ERROR ON ERROR is not propagated to columns SELECT * FROM (VALUES ('1'), ('"err"')) vals(js) LEFT OUTER JOIN JSON_TABLE(vals.js::jsonb, '$' COLUMNS (a int PATH '$' ERROR ON ERROR)) jt ON true; SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int PATH '$.a' ERROR ON EMPTY)) jt; SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int PATH 'strict $.a' ERROR ON ERROR) ERROR ON ERROR) jt; SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int PATH 'lax $.a' ERROR ON EMPTY) ERROR ON ERROR) jt; SELECT * FROM JSON_TABLE(jsonb '"a"', '$' COLUMNS (a int PATH '$' DEFAULT 1 ON EMPTY DEFAULT 2 ON ERROR)) jt; SELECT * FROM JSON_TABLE(jsonb '"a"', '$' COLUMNS (a int PATH 'strict $.a' DEFAULT 1 ON EMPTY DEFAULT 2 ON ERROR)) jt; SELECT * FROM JSON_TABLE(jsonb '"a"', '$' COLUMNS (a int PATH 'lax $.a' DEFAULT 1 ON EMPTY DEFAULT 2 ON ERROR)) jt; -- JSON_TABLE: EXISTS PATH types SELECT * FROM JSON_TABLE(jsonb '"a"', '$' COLUMNS (a int4 EXISTS PATH '$.a' ERROR ON ERROR)); -- ok; can cast to int4 SELECT * FROM JSON_TABLE(jsonb '"a"', '$' COLUMNS (a int4 EXISTS PATH '$' ERROR ON ERROR)); -- ok; can cast to int4 SELECT * FROM JSON_TABLE(jsonb '"a"', '$' COLUMNS (a int2 EXISTS PATH '$.a')); SELECT * FROM JSON_TABLE(jsonb '"a"', '$' COLUMNS (a int8 EXISTS PATH '$.a')); SELECT * FROM JSON_TABLE(jsonb '"a"', '$' COLUMNS (a float4 EXISTS PATH '$.a')); -- Default FALSE (ON ERROR) doesn't fit char(3) SELECT * FROM JSON_TABLE(jsonb '"a"', '$' COLUMNS (a char(3) EXISTS PATH '$.a')); SELECT * FROM JSON_TABLE(jsonb '"a"', '$' COLUMNS (a char(3) EXISTS PATH '$.a' ERROR ON ERROR)); SELECT * FROM JSON_TABLE(jsonb '"a"', '$' COLUMNS (a char(5) EXISTS PATH '$.a' ERROR ON ERROR)); SELECT * FROM JSON_TABLE(jsonb '"a"', '$' COLUMNS (a json EXISTS PATH '$.a')); SELECT * FROM JSON_TABLE(jsonb '"a"', '$' COLUMNS (a jsonb EXISTS PATH '$.a')); -- EXISTS PATH domain over int CREATE DOMAIN dint4 AS int; CREATE DOMAIN dint4_0 AS int CHECK (VALUE <> 0 ); SELECT a, a::bool FROM JSON_TABLE(jsonb '"a"', '$' COLUMNS (a dint4 EXISTS PATH '$.a' )); SELECT a, a::bool FROM JSON_TABLE(jsonb '{"a":1}', '$' COLUMNS (a dint4_0 EXISTS PATH '$.b')); SELECT a, a::bool FROM JSON_TABLE(jsonb '{"a":1}', '$' COLUMNS (a dint4_0 EXISTS PATH '$.b' ERROR ON ERROR)); SELECT a, a::bool FROM JSON_TABLE(jsonb '{"a":1}', '$' COLUMNS (a dint4_0 EXISTS PATH '$.b' FALSE ON ERROR)); SELECT a, a::bool FROM JSON_TABLE(jsonb '{"a":1}', '$' COLUMNS (a dint4_0 EXISTS PATH '$.b' TRUE ON ERROR)); DROP DOMAIN dint4, dint4_0; -- JSON_TABLE: WRAPPER/QUOTES clauses on scalar columns SELECT * FROM JSON_TABLE(jsonb '"world"', '$' COLUMNS (item text PATH '$' KEEP QUOTES ON SCALAR STRING)); SELECT * FROM JSON_TABLE(jsonb '"world"', '$' COLUMNS (item text PATH '$' OMIT QUOTES ON SCALAR STRING)); SELECT * FROM JSON_TABLE(jsonb '"world"', '$' COLUMNS (item text FORMAT JSON PATH '$' KEEP QUOTES)); SELECT * FROM JSON_TABLE(jsonb '"world"', '$' COLUMNS (item text FORMAT JSON PATH '$' OMIT QUOTES)); SELECT * FROM JSON_TABLE(jsonb '"world"', '$' COLUMNS (item text FORMAT JSON PATH '$' WITHOUT WRAPPER KEEP QUOTES)); SELECT * FROM JSON_TABLE(jsonb '"world"', '$' COLUMNS (item text PATH '$' WITHOUT WRAPPER OMIT QUOTES)); SELECT * FROM JSON_TABLE(jsonb '"world"', '$' COLUMNS (item text FORMAT JSON PATH '$' WITH WRAPPER)); -- Error: OMIT QUOTES should not be specified when WITH WRAPPER is present SELECT * FROM JSON_TABLE(jsonb '"world"', '$' COLUMNS (item text PATH '$' WITH WRAPPER OMIT QUOTES)); -- But KEEP QUOTES (the default) is fine SELECT * FROM JSON_TABLE(jsonb '"world"', '$' COLUMNS (item text FORMAT JSON PATH '$' WITH WRAPPER KEEP QUOTES)); -- Test PASSING args SELECT * FROM JSON_TABLE( jsonb '[1,2,3]', '$[*] ? (@ < $x)' PASSING 3 AS x COLUMNS (y text FORMAT JSON PATH '$') ) jt; -- PASSING arguments are also passed to column paths SELECT * FROM JSON_TABLE( jsonb '[1,2,3]', '$[*] ? (@ < $x)' PASSING 10 AS x, 3 AS y COLUMNS (a text FORMAT JSON PATH '$ ? (@ < $y)') ) jt; -- Should fail (not supported) SELECT * FROM JSON_TABLE(jsonb '{"a": 123}', '$' || '.' || 'a' COLUMNS (foo int)); -- JsonPathQuery() error message mentioning column name SELECT * FROM JSON_TABLE('{"a": [{"b": "1"}, {"b": "2"}]}', '$' COLUMNS (b json path '$.a[*].b' ERROR ON ERROR)); -- JSON_TABLE: nested paths -- Duplicate path names SELECT * FROM JSON_TABLE( jsonb '[]', '$' AS a COLUMNS ( b int, NESTED PATH '$' AS a COLUMNS ( c int ) ) ) jt; SELECT * FROM JSON_TABLE( jsonb '[]', '$' AS a COLUMNS ( b int, NESTED PATH '$' AS n_a COLUMNS ( c int ) ) ) jt; SELECT * FROM JSON_TABLE( jsonb '[]', '$' COLUMNS ( b int, NESTED PATH '$' AS b COLUMNS ( c int ) ) ) jt; SELECT * FROM JSON_TABLE( jsonb '[]', '$' COLUMNS ( NESTED PATH '$' AS a COLUMNS ( b int ), NESTED PATH '$' COLUMNS ( NESTED PATH '$' AS a COLUMNS ( c int ) ) ) ) jt; -- JSON_TABLE: plan execution CREATE TEMP TABLE jsonb_table_test (js jsonb); INSERT INTO jsonb_table_test VALUES ( '[ {"a": 1, "b": [], "c": []}, {"a": 2, "b": [1, 2, 3], "c": [10, null, 20]}, {"a": 3, "b": [1, 2], "c": []}, {"x": "4", "b": [1, 2], "c": 123} ]' ); select jt.* from jsonb_table_test jtt, json_table ( jtt.js,'strict $[*]' as p columns ( n for ordinality, a int path 'lax $.a' default -1 on empty, nested path 'strict $.b[*]' as pb columns (b_id for ordinality, b int path '$' ), nested path 'strict $.c[*]' as pc columns (c_id for ordinality, c int path '$' ) ) ) jt; -- PASSING arguments are passed to nested paths and their columns' paths SELECT * FROM generate_series(1, 3) x, generate_series(1, 3) y, JSON_TABLE(jsonb '[[1,2,3],[2,3,4,5],[3,4,5,6]]', 'strict $[*] ? (@[*] <= $x)' PASSING x AS x, y AS y COLUMNS ( y text FORMAT JSON PATH '$', NESTED PATH 'strict $[*] ? (@ == $y)' COLUMNS ( z int PATH '$' ) ) ) jt; -- JSON_TABLE: Test backward parsing with nested paths CREATE VIEW jsonb_table_view_nested AS SELECT * FROM JSON_TABLE( jsonb 'null', 'lax $[*]' PASSING 1 + 2 AS a, json '"foo"' AS "b c" COLUMNS ( id FOR ORDINALITY, NESTED PATH '$[1]' AS p1 COLUMNS ( a1 int, NESTED PATH '$[*]' AS "p1 1" COLUMNS ( a11 text ), b1 text ), NESTED PATH '$[2]' AS p2 COLUMNS ( NESTED PATH '$[*]' AS "p2:1" COLUMNS ( a21 text ), NESTED PATH '$[*]' AS p22 COLUMNS ( a22 text ) ) ) ); \sv jsonb_table_view_nested DROP VIEW jsonb_table_view_nested; CREATE TABLE s (js jsonb); INSERT INTO s VALUES ('{"a":{"za":[{"z1": [11,2222]},{"z21": [22, 234,2345]},{"z22": [32, 204,145]}]},"c": 3}'), ('{"a":{"za":[{"z1": [21,4222]},{"z21": [32, 134,1345]}]},"c": 10}'); -- error SELECT sub.* FROM s, JSON_TABLE(js, '$' PASSING 32 AS x, 13 AS y COLUMNS ( xx int path '$.c', NESTED PATH '$.a.za[1]' columns (NESTED PATH '$.z21[*]' COLUMNS (z21 int path '$?(@ >= $"x")' ERROR ON ERROR)) )) sub; -- Parent columns xx1, xx appear before NESTED ones SELECT sub.* FROM s, (VALUES (23)) x(x), generate_series(13, 13) y, JSON_TABLE(js, '$' AS c1 PASSING x AS x, y AS y COLUMNS ( NESTED PATH '$.a.za[2]' COLUMNS ( NESTED PATH '$.z22[*]' as z22 COLUMNS (c int PATH '$')), NESTED PATH '$.a.za[1]' columns (d int[] PATH '$.z21'), NESTED PATH '$.a.za[0]' columns (NESTED PATH '$.z1[*]' as z1 COLUMNS (a int PATH '$')), xx1 int PATH '$.c', NESTED PATH '$.a.za[1]' columns (NESTED PATH '$.z21[*]' as z21 COLUMNS (b int PATH '$')), xx int PATH '$.c' )) sub; -- Test applying PASSING variables at different nesting levels SELECT sub.* FROM s, (VALUES (23)) x(x), generate_series(13, 13) y, JSON_TABLE(js, '$' AS c1 PASSING x AS x, y AS y COLUMNS ( xx1 int PATH '$.c', NESTED PATH '$.a.za[0].z1[*]' COLUMNS (NESTED PATH '$ ?(@ >= ($"x" -2))' COLUMNS (a int PATH '$')), NESTED PATH '$.a.za[0]' COLUMNS (NESTED PATH '$.z1[*] ? (@ >= ($"x" -2))' COLUMNS (b int PATH '$')) )) sub; -- Test applying PASSING variable to paths all the levels SELECT sub.* FROM s, (VALUES (23)) x(x), generate_series(13, 13) y, JSON_TABLE(js, '$' AS c1 PASSING x AS x, y AS y COLUMNS ( xx1 int PATH '$.c', NESTED PATH '$.a.za[1]' COLUMNS (NESTED PATH '$.z21[*]' COLUMNS (b int PATH '$')), NESTED PATH '$.a.za[1] ? (@.z21[*] >= ($"x"-1))' COLUMNS (NESTED PATH '$.z21[*] ? (@ >= ($"y" + 3))' as z22 COLUMNS (a int PATH '$ ? (@ >= ($"y" + 12))')), NESTED PATH '$.a.za[1]' COLUMNS (NESTED PATH '$.z21[*] ? (@ >= ($"y" +121))' as z21 COLUMNS (c int PATH '$ ? (@ > ($"x" +111))')) )) sub; ----- test on empty behavior SELECT sub.* FROM s, (values(23)) x(x), generate_series(13, 13) y, JSON_TABLE(js, '$' AS c1 PASSING x AS x, y AS y COLUMNS ( xx1 int PATH '$.c', NESTED PATH '$.a.za[2]' COLUMNS (NESTED PATH '$.z22[*]' as z22 COLUMNS (c int PATH '$')), NESTED PATH '$.a.za[1]' COLUMNS (d json PATH '$ ? (@.z21[*] == ($"x" -1))'), NESTED PATH '$.a.za[0]' COLUMNS (NESTED PATH '$.z1[*] ? (@ >= ($"x" -2))' as z1 COLUMNS (a int PATH '$')), NESTED PATH '$.a.za[1]' COLUMNS (NESTED PATH '$.z21[*] ? (@ >= ($"y" +121))' as z21 COLUMNS (b int PATH '$ ? (@ > ($"x" +111))' DEFAULT 0 ON EMPTY)) )) sub; CREATE OR REPLACE VIEW jsonb_table_view7 AS SELECT sub.* FROM s, (values(23)) x(x), generate_series(13, 13) y, JSON_TABLE(js, '$' AS c1 PASSING x AS x, y AS y COLUMNS ( xx1 int PATH '$.c', NESTED PATH '$.a.za[2]' COLUMNS (NESTED PATH '$.z22[*]' as z22 COLUMNS (c int PATH '$' WITHOUT WRAPPER OMIT QUOTES)), NESTED PATH '$.a.za[1]' COLUMNS (d json PATH '$ ? (@.z21[*] == ($"x" -1))' WITH WRAPPER), NESTED PATH '$.a.za[0]' COLUMNS (NESTED PATH '$.z1[*] ? (@ >= ($"x" -2))' as z1 COLUMNS (a int PATH '$' KEEP QUOTES)), NESTED PATH '$.a.za[1]' COLUMNS (NESTED PATH '$.z21[*] ? (@ >= ($"y" +121))' as z21 COLUMNS (b int PATH '$ ? (@ > ($"x" +111))' DEFAULT 0 ON EMPTY)) )) sub; \sv jsonb_table_view7 DROP VIEW jsonb_table_view7; DROP TABLE s; -- Prevent ON EMPTY specification on EXISTS columns SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int exists empty object on empty)); -- Test ON ERROR / EMPTY value validity for the function and column types; -- all fail SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int) NULL ON ERROR); SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int true on empty)); SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int omit quotes true on error)); SELECT * FROM JSON_TABLE(jsonb '1', '$' COLUMNS (a int exists empty object on error)); -- Test JSON_TABLE() column deparsing -- don't emit default ON ERROR / EMPTY -- behavior CREATE VIEW json_table_view8 AS SELECT * from JSON_TABLE('"a"', '$' COLUMNS (a text PATH '$')); \sv json_table_view8; CREATE VIEW json_table_view9 AS SELECT * from JSON_TABLE('"a"', '$' COLUMNS (a text PATH '$') ERROR ON ERROR); \sv json_table_view9; DROP VIEW json_table_view8, json_table_view9; -- Test JSON_TABLE() deparsing -- don't emit default ON ERROR behavior CREATE VIEW json_table_view8 AS SELECT * from JSON_TABLE('"a"', '$' COLUMNS (a text PATH '$') EMPTY ON ERROR); \sv json_table_view8; CREATE VIEW json_table_view9 AS SELECT * from JSON_TABLE('"a"', '$' COLUMNS (a text PATH '$') EMPTY ARRAY ON ERROR); \sv json_table_view9; DROP VIEW json_table_view8, json_table_view9; libpg_query-17-6.1.0/test/sql/postgres_regress/sqljson_queryfuncs.sql000066400000000000000000000645661477334012600261710ustar00rootroot00000000000000-- JSON_EXISTS SELECT JSON_EXISTS(NULL::jsonb, '$'); SELECT JSON_EXISTS(jsonb '[]', '$'); SELECT JSON_EXISTS(JSON_OBJECT(RETURNING jsonb), '$'); SELECT JSON_EXISTS(jsonb '1', '$'); SELECT JSON_EXISTS(jsonb 'null', '$'); SELECT JSON_EXISTS(jsonb '[]', '$'); SELECT JSON_EXISTS(jsonb '1', '$.a'); SELECT JSON_EXISTS(jsonb '1', 'strict $.a'); -- FALSE on error SELECT JSON_EXISTS(jsonb '1', 'strict $.a' ERROR ON ERROR); SELECT JSON_EXISTS(jsonb 'null', '$.a'); SELECT JSON_EXISTS(jsonb '[]', '$.a'); SELECT JSON_EXISTS(jsonb '[1, "aaa", {"a": 1}]', 'strict $.a'); -- FALSE on error SELECT JSON_EXISTS(jsonb '[1, "aaa", {"a": 1}]', 'lax $.a'); SELECT JSON_EXISTS(jsonb '{}', '$.a'); SELECT JSON_EXISTS(jsonb '{"b": 1, "a": 2}', '$.a'); SELECT JSON_EXISTS(jsonb '1', '$.a.b'); SELECT JSON_EXISTS(jsonb '{"a": {"b": 1}}', '$.a.b'); SELECT JSON_EXISTS(jsonb '{"a": 1, "b": 2}', '$.a.b'); SELECT JSON_EXISTS(jsonb '{"a": 1, "b": 2}', '$.* ? (@ > $x)' PASSING 1 AS x); SELECT JSON_EXISTS(jsonb '{"a": 1, "b": 2}', '$.* ? (@ > $x)' PASSING '1' AS x); SELECT JSON_EXISTS(jsonb '{"a": 1, "b": 2}', '$.* ? (@ > $x && @ < $y)' PASSING 0 AS x, 2 AS y); SELECT JSON_EXISTS(jsonb '{"a": 1, "b": 2}', '$.* ? (@ > $x && @ < $y)' PASSING 0 AS x, 1 AS y); -- extension: boolean expressions SELECT JSON_EXISTS(jsonb '1', '$ > 2'); SELECT JSON_EXISTS(jsonb '1', '$.a > 2' ERROR ON ERROR); -- JSON_VALUE SELECT JSON_VALUE(NULL::jsonb, '$'); SELECT JSON_VALUE(jsonb 'null', '$'); SELECT JSON_VALUE(jsonb 'null', '$' RETURNING int); SELECT JSON_VALUE(jsonb 'true', '$'); SELECT JSON_VALUE(jsonb 'true', '$' RETURNING bool); SELECT JSON_VALUE(jsonb '123', '$'); SELECT JSON_VALUE(jsonb '123', '$' RETURNING int) + 234; SELECT JSON_VALUE(jsonb '123', '$' RETURNING text); /* jsonb bytea ??? */ SELECT JSON_VALUE(jsonb '123', '$' RETURNING bytea ERROR ON ERROR); SELECT JSON_VALUE(jsonb '1.23', '$'); SELECT JSON_VALUE(jsonb '1.23', '$' RETURNING int); SELECT JSON_VALUE(jsonb '"1.23"', '$' RETURNING numeric); SELECT JSON_VALUE(jsonb '"1.23"', '$' RETURNING int ERROR ON ERROR); SELECT JSON_VALUE(jsonb '"aaa"', '$'); SELECT JSON_VALUE(jsonb '"aaa"', '$' RETURNING text); SELECT JSON_VALUE(jsonb '"aaa"', '$' RETURNING char(5)); SELECT JSON_VALUE(jsonb '"aaa"', '$' RETURNING char(2) ERROR ON ERROR); SELECT JSON_VALUE(jsonb '"aaa"', '$' RETURNING char(2)); SELECT JSON_VALUE(jsonb '"aaa"', '$' RETURNING char(3) ERROR ON ERROR); SELECT JSON_VALUE(jsonb '"aaa"', '$' RETURNING json); SELECT JSON_VALUE(jsonb '"aaa"', '$' RETURNING jsonb); SELECT JSON_VALUE(jsonb '"aaa"', '$' RETURNING json ERROR ON ERROR); SELECT JSON_VALUE(jsonb '"aaa"', '$' RETURNING jsonb ERROR ON ERROR); SELECT JSON_VALUE(jsonb '"\"aaa\""', '$' RETURNING json); SELECT JSON_VALUE(jsonb '"\"aaa\""', '$' RETURNING jsonb); SELECT JSON_VALUE(jsonb '"aaa"', '$' RETURNING int); SELECT JSON_VALUE(jsonb '"aaa"', '$' RETURNING int ERROR ON ERROR); SELECT JSON_VALUE(jsonb '"aaa"', '$' RETURNING int DEFAULT 111 ON ERROR); SELECT JSON_VALUE(jsonb '"123"', '$' RETURNING int) + 234; SELECT JSON_VALUE(jsonb '"2017-02-20"', '$' RETURNING date) + 9; -- Test NULL checks execution in domain types CREATE DOMAIN sqljsonb_int_not_null AS int NOT NULL; SELECT JSON_VALUE(jsonb 'null', '$' RETURNING sqljsonb_int_not_null); SELECT JSON_VALUE(jsonb 'null', '$' RETURNING sqljsonb_int_not_null ERROR ON ERROR); SELECT JSON_VALUE(jsonb 'null', '$' RETURNING sqljsonb_int_not_null DEFAULT 2 ON EMPTY ERROR ON ERROR); SELECT JSON_VALUE(jsonb '1', '$.a' RETURNING sqljsonb_int_not_null DEFAULT 2 ON EMPTY ERROR ON ERROR); SELECT JSON_VALUE(jsonb '1', '$.a' RETURNING sqljsonb_int_not_null DEFAULT NULL ON EMPTY ERROR ON ERROR); CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple'); CREATE DOMAIN rgb AS rainbow CHECK (VALUE IN ('red', 'green', 'blue')); SELECT JSON_VALUE('"purple"'::jsonb, 'lax $[*]' RETURNING rgb); SELECT JSON_VALUE('"purple"'::jsonb, 'lax $[*]' RETURNING rgb ERROR ON ERROR); SELECT JSON_VALUE(jsonb '[]', '$'); SELECT JSON_VALUE(jsonb '[]', '$' ERROR ON ERROR); SELECT JSON_VALUE(jsonb '{}', '$'); SELECT JSON_VALUE(jsonb '{}', '$' ERROR ON ERROR); SELECT JSON_VALUE(jsonb '1', '$.a'); SELECT JSON_VALUE(jsonb '1', 'strict $.a' ERROR ON ERROR); SELECT JSON_VALUE(jsonb '1', 'strict $.a' DEFAULT 'error' ON ERROR); SELECT JSON_VALUE(jsonb '1', 'lax $.a' ERROR ON ERROR); -- NULL ON EMPTY SELECT JSON_VALUE(jsonb '1', 'lax $.a' ERROR ON EMPTY ERROR ON ERROR); SELECT JSON_VALUE(jsonb '1', 'strict $.*' DEFAULT 2 ON ERROR); SELECT JSON_VALUE(jsonb '1', 'lax $.a' DEFAULT 2 ON ERROR); SELECT JSON_VALUE(jsonb '1', 'lax $.a' DEFAULT '2' ON EMPTY); SELECT JSON_VALUE(jsonb '1', 'lax $.a' NULL ON EMPTY DEFAULT '2' ON ERROR); SELECT JSON_VALUE(jsonb '1', 'lax $.a' DEFAULT '2' ON EMPTY DEFAULT '3' ON ERROR); SELECT JSON_VALUE(jsonb '1', 'lax $.a' ERROR ON EMPTY DEFAULT '3' ON ERROR); SELECT JSON_VALUE(jsonb '[1,2]', '$[*]' ERROR ON ERROR); SELECT JSON_VALUE(jsonb '[1,2]', '$[*]' DEFAULT '0' ON ERROR); SELECT JSON_VALUE(jsonb '[" "]', '$[*]' RETURNING int ERROR ON ERROR); SELECT JSON_VALUE(jsonb '[" "]', '$[*]' RETURNING int DEFAULT 2 + 3 ON ERROR); SELECT JSON_VALUE(jsonb '["1"]', '$[*]' RETURNING int DEFAULT 2 + 3 ON ERROR); SELECT JSON_VALUE(jsonb '["1"]', '$[*]' RETURNING int FORMAT JSON); -- RETURNING FORMAT not allowed -- RETUGNING pseudo-types not allowed SELECT JSON_VALUE(jsonb '["1"]', '$[*]' RETURNING record); SELECT x, JSON_VALUE( jsonb '{"a": 1, "b": 2}', '$.* ? (@ > $x)' PASSING x AS x RETURNING int DEFAULT -1 ON EMPTY DEFAULT -2 ON ERROR ) y FROM generate_series(0, 2) x; SELECT JSON_VALUE(jsonb 'null', '$a' PASSING point ' (1, 2 )' AS a); SELECT JSON_VALUE(jsonb 'null', '$a' PASSING point ' (1, 2 )' AS a RETURNING point); SELECT JSON_VALUE(jsonb 'null', '$a' PASSING point ' (1, 2 )' AS a RETURNING point ERROR ON ERROR); -- Test PASSING and RETURNING date/time types SELECT JSON_VALUE(jsonb 'null', '$ts' PASSING timestamptz '2018-02-21 12:34:56 +10' AS ts); SELECT JSON_VALUE(jsonb 'null', '$ts' PASSING timestamptz '2018-02-21 12:34:56 +10' AS ts RETURNING timestamptz); SELECT JSON_VALUE(jsonb 'null', '$ts' PASSING timestamptz '2018-02-21 12:34:56 +10' AS ts RETURNING timestamp); SELECT JSON_VALUE(jsonb 'null', '$ts' PASSING date '2018-02-21 12:34:56 +10' AS ts RETURNING date); SELECT JSON_VALUE(jsonb 'null', '$ts' PASSING time '2018-02-21 12:34:56 +10' AS ts RETURNING time); SELECT JSON_VALUE(jsonb 'null', '$ts' PASSING timetz '2018-02-21 12:34:56 +10' AS ts RETURNING timetz); SELECT JSON_VALUE(jsonb 'null', '$ts' PASSING timestamp '2018-02-21 12:34:56 +10' AS ts RETURNING timestamp); -- Also test RETURNING json[b] SELECT JSON_VALUE(jsonb 'null', '$ts' PASSING timestamptz '2018-02-21 12:34:56 +10' AS ts RETURNING json); SELECT JSON_VALUE(jsonb 'null', '$ts' PASSING timestamptz '2018-02-21 12:34:56 +10' AS ts RETURNING jsonb); -- Test that numeric JSON values are coerced uniformly select json_value('{"a": 1.234}', '$.a' returning int error on error); select json_value('{"a": "1.234"}', '$.a' returning int error on error); -- JSON_QUERY SELECT JSON_VALUE(NULL::jsonb, '$'); SELECT JSON_QUERY(js, '$') AS "unspec", JSON_QUERY(js, '$' WITHOUT WRAPPER) AS "without", JSON_QUERY(js, '$' WITH CONDITIONAL WRAPPER) AS "with cond", JSON_QUERY(js, '$' WITH UNCONDITIONAL ARRAY WRAPPER) AS "with uncond", JSON_QUERY(js, '$' WITH ARRAY WRAPPER) AS "with" FROM (VALUES (jsonb 'null'), ('12.3'), ('true'), ('"aaa"'), ('[1, null, "2"]'), ('{"a": 1, "b": [2]}') ) foo(js); SELECT JSON_QUERY(js, 'strict $[*]') AS "unspec", JSON_QUERY(js, 'strict $[*]' WITHOUT WRAPPER) AS "without", JSON_QUERY(js, 'strict $[*]' WITH CONDITIONAL WRAPPER) AS "with cond", JSON_QUERY(js, 'strict $[*]' WITH UNCONDITIONAL ARRAY WRAPPER) AS "with uncond", JSON_QUERY(js, 'strict $[*]' WITH ARRAY WRAPPER) AS "with" FROM (VALUES (jsonb '1'), ('[]'), ('[null]'), ('[12.3]'), ('[true]'), ('["aaa"]'), ('[[1, 2, 3]]'), ('[{"a": 1, "b": [2]}]'), ('[1, "2", null, [3]]') ) foo(js); SELECT JSON_QUERY(jsonb '"aaa"', '$' RETURNING text); SELECT JSON_QUERY(jsonb '"aaa"', '$' RETURNING text KEEP QUOTES); SELECT JSON_QUERY(jsonb '"aaa"', '$' RETURNING text KEEP QUOTES ON SCALAR STRING); SELECT JSON_QUERY(jsonb '"aaa"', '$' RETURNING text OMIT QUOTES); SELECT JSON_QUERY(jsonb '"aaa"', '$' RETURNING text OMIT QUOTES ON SCALAR STRING); SELECT JSON_QUERY(jsonb '"aaa"', '$' OMIT QUOTES ERROR ON ERROR); SELECT JSON_QUERY(jsonb '"aaa"', '$' RETURNING json OMIT QUOTES ERROR ON ERROR); SELECT JSON_QUERY(jsonb '"aaa"', '$' RETURNING bytea FORMAT JSON OMIT QUOTES ERROR ON ERROR); -- Behavior when a RETURNING type has typmod != -1 SELECT JSON_QUERY(jsonb '"aaa"', '$' RETURNING char(3) ERROR ON ERROR); SELECT JSON_QUERY(jsonb '"aaa"', '$' RETURNING char(3)); SELECT JSON_QUERY(jsonb '"aaa"', '$' RETURNING char(3) OMIT QUOTES ERROR ON ERROR); SELECT JSON_QUERY(jsonb '"aaa"', '$.a' RETURNING char(2) OMIT QUOTES DEFAULT 'bb' ON EMPTY); SELECT JSON_QUERY(jsonb '"aaa"', '$.a' RETURNING char(2) OMIT QUOTES DEFAULT '"bb"'::jsonb ON EMPTY); -- OMIT QUOTES behavior should not be specified when WITH WRAPPER used: -- Should fail SELECT JSON_QUERY(jsonb '[1]', '$' WITH WRAPPER OMIT QUOTES); SELECT JSON_QUERY(jsonb '[1]', '$' WITH CONDITIONAL WRAPPER OMIT QUOTES); -- Should succeed SELECT JSON_QUERY(jsonb '["1"]', '$[*]' WITH CONDITIONAL WRAPPER KEEP QUOTES); SELECT JSON_QUERY(jsonb '["1"]', '$[*]' WITH UNCONDITIONAL WRAPPER KEEP QUOTES); SELECT JSON_QUERY(jsonb '["1"]', '$[*]' WITH WRAPPER KEEP QUOTES); SELECT JSON_QUERY(jsonb '["1"]', '$[*]' WITHOUT WRAPPER OMIT QUOTES); SELECT JSON_QUERY(jsonb '["1"]', '$[*]' WITHOUT WRAPPER KEEP QUOTES); -- test QUOTES behavior. SELECT JSON_QUERY(jsonb'{"rec": "{1,2,3}"}', '$.rec' returning int[] omit quotes); SELECT JSON_QUERY(jsonb'{"rec": "{1,2,3}"}', '$.rec' returning int[] keep quotes); SELECT JSON_QUERY(jsonb'{"rec": "{1,2,3}"}', '$.rec' returning int[] keep quotes error on error); SELECT JSON_QUERY(jsonb'{"rec": "[1,2]"}', '$.rec' returning int4range omit quotes); SELECT JSON_QUERY(jsonb'{"rec": "[1,2]"}', '$.rec' returning int4range keep quotes); SELECT JSON_QUERY(jsonb'{"rec": "[1,2]"}', '$.rec' returning int4range keep quotes error on error); CREATE DOMAIN qf_char_domain AS char(1); CREATE DOMAIN qf_jsonb_domain AS jsonb; SELECT JSON_QUERY(jsonb '"1"', '$' RETURNING qf_char_domain OMIT QUOTES ERROR ON ERROR); SELECT JSON_QUERY(jsonb '"1"', '$' RETURNING qf_jsonb_domain OMIT QUOTES ERROR ON ERROR); DROP DOMAIN qf_char_domain, qf_jsonb_domain; SELECT JSON_QUERY(jsonb '[]', '$[*]'); SELECT JSON_QUERY(jsonb '[]', '$[*]' NULL ON EMPTY); SELECT JSON_QUERY(jsonb '[]', '$[*]' EMPTY ON EMPTY); SELECT JSON_QUERY(jsonb '[]', '$[*]' EMPTY ARRAY ON EMPTY); SELECT JSON_QUERY(jsonb '[]', '$[*]' EMPTY OBJECT ON EMPTY); SELECT JSON_QUERY(jsonb '[]', '$[*]' ERROR ON EMPTY); SELECT JSON_QUERY(jsonb '[]', '$[*]' DEFAULT '"empty"' ON EMPTY); SELECT JSON_QUERY(jsonb '[]', '$[*]' ERROR ON EMPTY NULL ON ERROR); SELECT JSON_QUERY(jsonb '[]', '$[*]' ERROR ON EMPTY EMPTY ARRAY ON ERROR); SELECT JSON_QUERY(jsonb '[]', '$[*]' ERROR ON EMPTY EMPTY OBJECT ON ERROR); SELECT JSON_QUERY(jsonb '[]', '$[*]' ERROR ON EMPTY ERROR ON ERROR); SELECT JSON_QUERY(jsonb '[]', '$[*]' ERROR ON ERROR); -- NULL ON EMPTY SELECT JSON_QUERY(jsonb '[1,2]', '$[*]' ERROR ON ERROR); SELECT JSON_QUERY(jsonb '[1,2]', '$[*]' DEFAULT '"empty"' ON ERROR); SELECT JSON_QUERY(jsonb '[1,2]', '$' RETURNING json); SELECT JSON_QUERY(jsonb '[1,2]', '$' RETURNING json FORMAT JSON); SELECT JSON_QUERY(jsonb '[1,2]', '$' RETURNING jsonb); SELECT JSON_QUERY(jsonb '[1,2]', '$' RETURNING jsonb FORMAT JSON); SELECT JSON_QUERY(jsonb '[1,2]', '$' RETURNING text); SELECT JSON_QUERY(jsonb '[1,2]', '$' RETURNING char(10)); SELECT JSON_QUERY(jsonb '[1,2]', '$' RETURNING text FORMAT JSON); SELECT JSON_QUERY(jsonb '[1,2]', '$' RETURNING bytea); SELECT JSON_QUERY(jsonb '[1,2]', '$' RETURNING bytea FORMAT JSON); SELECT JSON_QUERY(jsonb '[1,2]', '$[*]' RETURNING bytea EMPTY OBJECT ON ERROR); SELECT JSON_QUERY(jsonb '[1,2]', '$[*]' RETURNING bytea FORMAT JSON EMPTY OBJECT ON ERROR); SELECT JSON_QUERY(jsonb '[1,2]', '$[*]' RETURNING json EMPTY OBJECT ON ERROR); SELECT JSON_QUERY(jsonb '[1,2]', '$[*]' RETURNING jsonb EMPTY OBJECT ON ERROR); SELECT JSON_QUERY(jsonb '[3,4]', '$[*]' RETURNING bigint[] EMPTY OBJECT ON ERROR); SELECT JSON_QUERY(jsonb '"[3,4]"', '$[*]' RETURNING bigint[] EMPTY OBJECT ON ERROR); -- Coercion fails with quotes on SELECT JSON_QUERY(jsonb '"123.1"', '$' RETURNING int2 error on error); SELECT JSON_QUERY(jsonb '"123.1"', '$' RETURNING int4 error on error); SELECT JSON_QUERY(jsonb '"123.1"', '$' RETURNING int8 error on error); SELECT JSON_QUERY(jsonb '"123.1"', '$' RETURNING bool error on error); SELECT JSON_QUERY(jsonb '"123.1"', '$' RETURNING numeric error on error); SELECT JSON_QUERY(jsonb '"123.1"', '$' RETURNING real error on error); SELECT JSON_QUERY(jsonb '"123.1"', '$' RETURNING float8 error on error); -- Fine with OMIT QUOTES SELECT JSON_QUERY(jsonb '"123.1"', '$' RETURNING int2 omit quotes error on error); SELECT JSON_QUERY(jsonb '"123.1"', '$' RETURNING float8 omit quotes error on error); -- RETUGNING pseudo-types not allowed SELECT JSON_QUERY(jsonb '[3,4]', '$[*]' RETURNING anyarray EMPTY OBJECT ON ERROR); SELECT x, y, JSON_QUERY( jsonb '[1,2,3,4,5,null]', '$[*] ? (@ >= $x && @ <= $y)' PASSING x AS x, y AS y WITH CONDITIONAL WRAPPER EMPTY ARRAY ON EMPTY ) list FROM generate_series(0, 4) x, generate_series(0, 4) y; -- record type returning with quotes behavior. CREATE TYPE comp_abc AS (a text, b int, c timestamp); SELECT JSON_QUERY(jsonb'{"rec": "(abc,42,01.02.2003)"}', '$.rec' returning comp_abc omit quotes); SELECT JSON_QUERY(jsonb'{"rec": "(abc,42,01.02.2003)"}', '$.rec' returning comp_abc keep quotes); SELECT JSON_QUERY(jsonb'{"rec": "(abc,42,01.02.2003)"}', '$.rec' returning comp_abc keep quotes error on error); DROP TYPE comp_abc; -- Extension: record types returning CREATE TYPE sqljsonb_rec AS (a int, t text, js json, jb jsonb, jsa json[]); CREATE TYPE sqljsonb_reca AS (reca sqljsonb_rec[]); SELECT JSON_QUERY(jsonb '[{"a": 1, "b": "foo", "t": "aaa", "js": [1, "2", {}], "jb": {"x": [1, "2", {}]}}, {"a": 2}]', '$[0]' RETURNING sqljsonb_rec); SELECT JSON_QUERY(jsonb '[{"a": "a", "b": "foo", "t": "aaa", "js": [1, "2", {}], "jb": {"x": [1, "2", {}]}}, {"a": 2}]', '$[0]' RETURNING sqljsonb_rec ERROR ON ERROR); SELECT JSON_QUERY(jsonb '[{"a": "a", "b": "foo", "t": "aaa", "js": [1, "2", {}], "jb": {"x": [1, "2", {}]}}, {"a": 2}]', '$[0]' RETURNING sqljsonb_rec); SELECT * FROM unnest((JSON_QUERY(jsonb '{"jsa": [{"a": 1, "b": ["foo"]}, {"a": 2, "c": {}}, 123]}', '$' RETURNING sqljsonb_rec)).jsa); SELECT * FROM unnest((JSON_QUERY(jsonb '{"reca": [{"a": 1, "t": ["foo", []]}, {"a": 2, "jb": [{}, true]}]}', '$' RETURNING sqljsonb_reca)).reca); SELECT JSON_QUERY(jsonb '[{"a": 1, "b": "foo", "t": "aaa", "js": [1, "2", {}], "jb": {"x": [1, "2", {}]}}, {"a": 2}]', '$[0]' RETURNING jsonpath); SELECT JSON_QUERY(jsonb '[{"a": 1, "b": "foo", "t": "aaa", "js": [1, "2", {}], "jb": {"x": [1, "2", {}]}}, {"a": 2}]', '$[0]' RETURNING jsonpath ERROR ON ERROR); -- Extension: array types returning SELECT JSON_QUERY(jsonb '[1,2,null,"3"]', '$[*]' RETURNING int[] WITH WRAPPER); SELECT JSON_QUERY(jsonb '[1,2,null,"a"]', '$[*]' RETURNING int[] WITH WRAPPER ERROR ON ERROR); SELECT JSON_QUERY(jsonb '[1,2,null,"a"]', '$[*]' RETURNING int[] WITH WRAPPER); SELECT * FROM unnest(JSON_QUERY(jsonb '[{"a": 1, "t": ["foo", []]}, {"a": 2, "jb": [{}, true]}]', '$' RETURNING sqljsonb_rec[])); -- Extension: domain types returning SELECT JSON_QUERY(jsonb '{"a": 1}', '$.a' RETURNING sqljsonb_int_not_null); SELECT JSON_QUERY(jsonb '{"a": 1}', '$.b' RETURNING sqljsonb_int_not_null); SELECT JSON_QUERY(jsonb '{"a": 1}', '$.b' RETURNING sqljsonb_int_not_null ERROR ON EMPTY ERROR ON ERROR); -- Test timestamptz passing and output SELECT JSON_QUERY(jsonb 'null', '$ts' PASSING timestamptz '2018-02-21 12:34:56 +10' AS ts); SELECT JSON_QUERY(jsonb 'null', '$ts' PASSING timestamptz '2018-02-21 12:34:56 +10' AS ts RETURNING json); SELECT JSON_QUERY(jsonb 'null', '$ts' PASSING timestamptz '2018-02-21 12:34:56 +10' AS ts RETURNING jsonb); -- Test constraints CREATE TABLE test_jsonb_constraints ( js text, i int, x jsonb DEFAULT JSON_QUERY(jsonb '[1,2]', '$[*]' WITH WRAPPER) CONSTRAINT test_jsonb_constraint1 CHECK (js IS JSON) CONSTRAINT test_jsonb_constraint2 CHECK (JSON_EXISTS(js::jsonb, '$.a' PASSING i + 5 AS int, i::text AS "TXT", array[1,2,3] as arr)) CONSTRAINT test_jsonb_constraint3 CHECK (JSON_VALUE(js::jsonb, '$.a' RETURNING int DEFAULT '12' ON EMPTY ERROR ON ERROR) > i) CONSTRAINT test_jsonb_constraint4 CHECK (JSON_QUERY(js::jsonb, '$.a' WITH CONDITIONAL WRAPPER EMPTY OBJECT ON ERROR) = jsonb '[10]') CONSTRAINT test_jsonb_constraint5 CHECK (JSON_QUERY(js::jsonb, '$.a' RETURNING char(5) OMIT QUOTES EMPTY ARRAY ON EMPTY) > 'a' COLLATE "C") ); \d test_jsonb_constraints SELECT check_clause FROM information_schema.check_constraints WHERE constraint_name LIKE 'test_jsonb_constraint%' ORDER BY 1; SELECT pg_get_expr(adbin, adrelid) FROM pg_attrdef WHERE adrelid = 'test_jsonb_constraints'::regclass ORDER BY 1; INSERT INTO test_jsonb_constraints VALUES ('', 1); INSERT INTO test_jsonb_constraints VALUES ('1', 1); INSERT INTO test_jsonb_constraints VALUES ('[]'); INSERT INTO test_jsonb_constraints VALUES ('{"b": 1}', 1); INSERT INTO test_jsonb_constraints VALUES ('{"a": 1}', 1); INSERT INTO test_jsonb_constraints VALUES ('{"a": 10}', 1); DROP TABLE test_jsonb_constraints; -- Test mutabilily of query functions CREATE TABLE test_jsonb_mutability(js jsonb, b int); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a[0]')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.time()')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.date()')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.time_tz()')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.timestamp()')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.timestamp_tz()')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.date() < $.time_tz())')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.date() < $.time())')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.time() < $.time())')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.time() < $.time_tz())')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.timestamp() < $.timestamp_tz())')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.timestamp_tz() < $.timestamp_tz())')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.time() < $.datetime("HH:MI TZH"))')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.date() < $.datetime("HH:MI TZH"))')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.timestamp() < $.datetime("HH:MI TZH"))')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.timestamp() < $.datetime("HH:MI"))')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.timestamp_tz() < $.datetime("HH:MI TZH"))')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.timestamp_tz() < $.datetime("HH:MI"))')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.date() < $x' PASSING '12:34'::timetz AS x)); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.date() < $x' PASSING '1234'::int AS x)); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.timestamp(2) < $.timestamp(3))')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.datetime()')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@ < $.datetime())')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.datetime() < $.datetime())')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.datetime() < $.datetime("HH:MI TZH"))')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.datetime("HH:MI TZH") < $.datetime("HH:MI TZH"))')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.datetime("HH:MI") < $.datetime("YY-MM-DD HH:MI"))')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.a ? (@.datetime("HH:MI TZH") < $.datetime("YY-MM-DD HH:MI"))')); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.datetime("HH:MI TZH") < $x' PASSING '12:34'::timetz AS x)); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.datetime("HH:MI TZH") < $y' PASSING '12:34'::timetz AS x)); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.datetime() < $x' PASSING '12:34'::timetz AS x)); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.datetime() < $x' PASSING '1234'::int AS x)); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.datetime() ? (@ == $x)' PASSING '12:34'::time AS x)); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$.datetime("YY-MM-DD") ? (@ == $x)' PASSING '2020-07-14'::date AS x)); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$[1, $.a ? (@.datetime() == $x)]' PASSING '12:34'::time AS x)); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$[1, 0 to $.a ? (@.datetime() == $x)]' PASSING '12:34'::time AS x)); CREATE INDEX ON test_jsonb_mutability (JSON_QUERY(js, '$[1, $.a ? (@.datetime("HH:MI") == $x)]' PASSING '12:34'::time AS x)); CREATE INDEX ON test_jsonb_mutability (JSON_VALUE(js, '$' DEFAULT random()::int ON ERROR)); -- DEFAULT expression CREATE OR REPLACE FUNCTION ret_setint() RETURNS SETOF integer AS $$ BEGIN RETURN QUERY EXECUTE 'select 1 union all select 1'; END; $$ LANGUAGE plpgsql IMMUTABLE; SELECT JSON_QUERY(js, '$' RETURNING int DEFAULT ret_setint() ON ERROR) FROM test_jsonb_mutability; SELECT JSON_QUERY(js, '$' RETURNING int DEFAULT b + 1 ON ERROR) FROM test_jsonb_mutability; SELECT JSON_QUERY(js, '$' RETURNING int DEFAULT sum(1) over() ON ERROR) FROM test_jsonb_mutability; SELECT JSON_QUERY(js, '$' RETURNING int DEFAULT (SELECT 1) ON ERROR) FROM test_jsonb_mutability; DROP TABLE test_jsonb_mutability; DROP FUNCTION ret_setint; CREATE DOMAIN queryfuncs_test_domain AS text CHECK (value <> 'foo'); SELECT JSON_VALUE(jsonb '{"d1": "H"}', '$.a2' RETURNING queryfuncs_test_domain DEFAULT 'foo'::queryfuncs_test_domain ON EMPTY); SELECT JSON_VALUE(jsonb '{"d1": "H"}', '$.a2' RETURNING queryfuncs_test_domain DEFAULT 'foo1'::queryfuncs_test_domain ON EMPTY); SELECT JSON_VALUE(jsonb '{"d1": "H"}', '$.a2' RETURNING queryfuncs_test_domain DEFAULT '"foo1"'::jsonb::text ON EMPTY); SELECT JSON_VALUE(jsonb '{"d1": "foo"}', '$.a2' RETURNING queryfuncs_test_domain DEFAULT 'foo1'::queryfuncs_test_domain ON EMPTY); -- Check the cases where a coercion-related expression is masking an -- unsupported expressions -- CoerceViaIO SELECT JSON_QUERY('"a"', '$.a' RETURNING int DEFAULT (SELECT '"1"')::jsonb ON ERROR); -- CoerceToDomain SELECT JSON_QUERY('"a"', '$.a' RETURNING queryfuncs_test_domain DEFAULT (select '"1"')::queryfuncs_test_domain ON ERROR); -- RelabelType SELECT JSON_QUERY('"a"', '$.a' RETURNING int DEFAULT (SELECT 1)::oid::int ON ERROR); -- ArrayCoerceExpr SELECT JSON_QUERY('"a"', '$.a' RETURNING int[] DEFAULT (SELECT '{1}')::oid[]::int[] ON ERROR); -- CollateExpr SELECT JSON_QUERY('"a"', '$.a' RETURNING int[] DEFAULT (SELECT '{1}')::text COLLATE "C" ON ERROR); -- ConvertRowtypeExpr CREATE TABLE someparent (a int); CREATE TABLE somechild () INHERITS (someparent); SELECT JSON_QUERY('"a"', '$.a' RETURNING someparent DEFAULT (SELECT '(1)')::somechild::someparent ON ERROR); DROP DOMAIN queryfuncs_test_domain; DROP TABLE someparent, somechild; -- Extension: non-constant JSON path SELECT JSON_EXISTS(jsonb '{"a": 123}', '$' || '.' || 'a'); SELECT JSON_VALUE(jsonb '{"a": 123}', '$' || '.' || 'a'); SELECT JSON_VALUE(jsonb '{"a": 123}', '$' || '.' || 'b' DEFAULT 'foo' ON EMPTY); SELECT JSON_QUERY(jsonb '{"a": 123}', '$' || '.' || 'a'); SELECT JSON_QUERY(jsonb '{"a": 123}', '$' || '.' || 'a' WITH WRAPPER); -- Should fail (invalid path) SELECT JSON_QUERY(jsonb '{"a": 123}', 'error' || ' ' || 'error'); -- Non-jsonb inputs automatically coerced to jsonb SELECT JSON_EXISTS(json '{"a": 123}', '$' || '.' || 'a'); SELECT JSON_QUERY(NULL FORMAT JSON, '$'); -- Test non-const jsonpath CREATE TEMP TABLE jsonpaths (path) AS SELECT '$'; SELECT json_value('"aaa"', path RETURNING json) FROM jsonpaths; -- Test PASSING argument parsing SELECT JSON_QUERY(jsonb 'null', '$xyz' PASSING 1 AS xy); SELECT JSON_QUERY(jsonb 'null', '$xy' PASSING 1 AS xyz); SELECT JSON_QUERY(jsonb 'null', '$xyz' PASSING 1 AS xyz); SELECT JSON_QUERY(jsonb 'null', '$Xyz' PASSING 1 AS Xyz); SELECT JSON_QUERY(jsonb 'null', '$Xyz' PASSING 1 AS "Xyz"); SELECT JSON_QUERY(jsonb 'null', '$"Xyz"' PASSING 1 AS "Xyz"); -- Test ON ERROR / EMPTY value validity for the function; all fail. SELECT JSON_EXISTS(jsonb '1', '$' DEFAULT 1 ON ERROR); SELECT JSON_VALUE(jsonb '1', '$' EMPTY ON ERROR); SELECT JSON_QUERY(jsonb '1', '$' TRUE ON ERROR); -- Test implicit coercion to a domain over fixed-length type specified in -- RETURNING CREATE DOMAIN queryfuncs_char2 AS char(2); CREATE DOMAIN queryfuncs_char2_chk AS char(2) CHECK (VALUE NOT IN ('12')); SELECT JSON_QUERY(jsonb '123', '$' RETURNING queryfuncs_char2 ERROR ON ERROR); SELECT JSON_QUERY(jsonb '123', '$' RETURNING queryfuncs_char2 DEFAULT '1' ON ERROR); SELECT JSON_QUERY(jsonb '123', '$' RETURNING queryfuncs_char2_chk ERROR ON ERROR); SELECT JSON_QUERY(jsonb '123', '$' RETURNING queryfuncs_char2_chk DEFAULT '1' ON ERROR); SELECT JSON_VALUE(jsonb '123', '$' RETURNING queryfuncs_char2 ERROR ON ERROR); SELECT JSON_VALUE(jsonb '123', '$' RETURNING queryfuncs_char2 DEFAULT 1 ON ERROR); SELECT JSON_VALUE(jsonb '123', '$' RETURNING queryfuncs_char2_chk ERROR ON ERROR); SELECT JSON_VALUE(jsonb '123', '$' RETURNING queryfuncs_char2_chk DEFAULT 1 ON ERROR); DROP DOMAIN queryfuncs_char2, queryfuncs_char2_chk; -- Test coercion to domain over another fixed-length type of the ON ERROR / -- EMPTY expressions. Ask user to cast the DEFAULT expression explicitly if -- automatic casting cannot be done, for example, from int to bit(2). CREATE DOMAIN queryfuncs_d_varbit3 AS varbit(3) CHECK (VALUE <> '01'); SELECT JSON_VALUE(jsonb '1234', '$' RETURNING queryfuncs_d_varbit3 DEFAULT '111111' ON ERROR); SELECT JSON_VALUE(jsonb '1234', '$' RETURNING queryfuncs_d_varbit3 DEFAULT '010' ON ERROR); SELECT JSON_VALUE(jsonb '1234', '$' RETURNING queryfuncs_d_varbit3 DEFAULT '01' ON ERROR); SELECT JSON_VALUE(jsonb '"111"', '$' RETURNING bit(2) ERROR ON ERROR); SELECT JSON_VALUE(jsonb '1234', '$' RETURNING bit(3) DEFAULT 1 ON ERROR); SELECT JSON_VALUE(jsonb '1234', '$' RETURNING bit(3) DEFAULT 1::bit(3) ON ERROR); SELECT JSON_VALUE(jsonb '"111"', '$.a' RETURNING bit(3) DEFAULT '1111' ON EMPTY); DROP DOMAIN queryfuncs_d_varbit3; libpg_query-17-6.1.0/test/sql/postgres_regress/stats.sql000066400000000000000000001047231477334012600233400ustar00rootroot00000000000000-- -- Test cumulative stats system -- -- 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; -- not enabled by default, but we want to test it... SET track_functions TO 'all'; -- record dboid for later use SELECT oid AS dboid from pg_database where datname = current_database() \gset -- save counters BEGIN; SET LOCAL stats_fetch_consistency = snapshot; 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'; COMMIT; -- 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; -- ensure pending stats are flushed SELECT pg_stat_force_next_flush(); -- check effects BEGIN; SET LOCAL stats_fetch_consistency = snapshot; 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; COMMIT; ---- -- Basic tests for track_functions --- CREATE FUNCTION stats_test_func1() RETURNS VOID LANGUAGE plpgsql AS $$BEGIN END;$$; SELECT 'stats_test_func1()'::regprocedure::oid AS stats_test_func1_oid \gset CREATE FUNCTION stats_test_func2() RETURNS VOID LANGUAGE plpgsql AS $$BEGIN END;$$; SELECT 'stats_test_func2()'::regprocedure::oid AS stats_test_func2_oid \gset -- test that stats are accumulated BEGIN; SET LOCAL stats_fetch_consistency = none; SELECT pg_stat_get_function_calls(:stats_test_func1_oid); SELECT pg_stat_get_xact_function_calls(:stats_test_func1_oid); SELECT stats_test_func1(); SELECT pg_stat_get_xact_function_calls(:stats_test_func1_oid); SELECT stats_test_func1(); SELECT pg_stat_get_xact_function_calls(:stats_test_func1_oid); SELECT pg_stat_get_function_calls(:stats_test_func1_oid); COMMIT; -- Verify that function stats are not transactional -- rolled back savepoint in committing transaction BEGIN; SELECT stats_test_func2(); SAVEPOINT foo; SELECT stats_test_func2(); ROLLBACK TO SAVEPOINT foo; SELECT pg_stat_get_xact_function_calls(:stats_test_func2_oid); SELECT stats_test_func2(); COMMIT; -- rolled back transaction BEGIN; SELECT stats_test_func2(); ROLLBACK; SELECT pg_stat_force_next_flush(); -- check collected stats SELECT funcname, calls FROM pg_stat_user_functions WHERE funcid = :stats_test_func1_oid; SELECT funcname, calls FROM pg_stat_user_functions WHERE funcid = :stats_test_func2_oid; -- check that a rolled back drop function stats leaves stats alive BEGIN; SELECT funcname, calls FROM pg_stat_user_functions WHERE funcid = :stats_test_func1_oid; DROP FUNCTION stats_test_func1(); -- shouldn't be visible via view SELECT funcname, calls FROM pg_stat_user_functions WHERE funcid = :stats_test_func1_oid; -- but still via oid access SELECT pg_stat_get_function_calls(:stats_test_func1_oid); ROLLBACK; SELECT funcname, calls FROM pg_stat_user_functions WHERE funcid = :stats_test_func1_oid; SELECT pg_stat_get_function_calls(:stats_test_func1_oid); -- check that function dropped in main transaction leaves no stats behind BEGIN; DROP FUNCTION stats_test_func1(); COMMIT; SELECT funcname, calls FROM pg_stat_user_functions WHERE funcid = :stats_test_func1_oid; SELECT pg_stat_get_function_calls(:stats_test_func1_oid); -- check that function dropped in a subtransaction leaves no stats behind BEGIN; SELECT stats_test_func2(); SAVEPOINT a; SELECT stats_test_func2(); SAVEPOINT b; DROP FUNCTION stats_test_func2(); COMMIT; SELECT funcname, calls FROM pg_stat_user_functions WHERE funcid = :stats_test_func2_oid; SELECT pg_stat_get_function_calls(:stats_test_func2_oid); -- Check that stats for relations are dropped. For that we need to access stats -- by oid after the DROP TABLE. Save oids. CREATE TABLE drop_stats_test(); INSERT INTO drop_stats_test DEFAULT VALUES; SELECT 'drop_stats_test'::regclass::oid AS drop_stats_test_oid \gset CREATE TABLE drop_stats_test_xact(); INSERT INTO drop_stats_test_xact DEFAULT VALUES; SELECT 'drop_stats_test_xact'::regclass::oid AS drop_stats_test_xact_oid \gset CREATE TABLE drop_stats_test_subxact(); INSERT INTO drop_stats_test_subxact DEFAULT VALUES; SELECT 'drop_stats_test_subxact'::regclass::oid AS drop_stats_test_subxact_oid \gset SELECT pg_stat_force_next_flush(); SELECT pg_stat_get_live_tuples(:drop_stats_test_oid); DROP TABLE drop_stats_test; SELECT pg_stat_get_live_tuples(:drop_stats_test_oid); SELECT pg_stat_get_xact_tuples_inserted(:drop_stats_test_oid); -- check that rollback protects against having stats dropped and that local -- modifications don't pose a problem SELECT pg_stat_get_live_tuples(:drop_stats_test_xact_oid); SELECT pg_stat_get_tuples_inserted(:drop_stats_test_xact_oid); SELECT pg_stat_get_xact_tuples_inserted(:drop_stats_test_xact_oid); BEGIN; INSERT INTO drop_stats_test_xact DEFAULT VALUES; SELECT pg_stat_get_xact_tuples_inserted(:drop_stats_test_xact_oid); DROP TABLE drop_stats_test_xact; SELECT pg_stat_get_xact_tuples_inserted(:drop_stats_test_xact_oid); ROLLBACK; SELECT pg_stat_force_next_flush(); SELECT pg_stat_get_live_tuples(:drop_stats_test_xact_oid); SELECT pg_stat_get_tuples_inserted(:drop_stats_test_xact_oid); -- transactional drop SELECT pg_stat_get_live_tuples(:drop_stats_test_xact_oid); SELECT pg_stat_get_tuples_inserted(:drop_stats_test_xact_oid); BEGIN; INSERT INTO drop_stats_test_xact DEFAULT VALUES; SELECT pg_stat_get_xact_tuples_inserted(:drop_stats_test_xact_oid); DROP TABLE drop_stats_test_xact; SELECT pg_stat_get_xact_tuples_inserted(:drop_stats_test_xact_oid); COMMIT; SELECT pg_stat_force_next_flush(); SELECT pg_stat_get_live_tuples(:drop_stats_test_xact_oid); SELECT pg_stat_get_tuples_inserted(:drop_stats_test_xact_oid); -- savepoint rollback (2 levels) SELECT pg_stat_get_live_tuples(:drop_stats_test_subxact_oid); BEGIN; INSERT INTO drop_stats_test_subxact DEFAULT VALUES; SAVEPOINT sp1; INSERT INTO drop_stats_test_subxact DEFAULT VALUES; SELECT pg_stat_get_xact_tuples_inserted(:drop_stats_test_subxact_oid); SAVEPOINT sp2; DROP TABLE drop_stats_test_subxact; ROLLBACK TO SAVEPOINT sp2; SELECT pg_stat_get_xact_tuples_inserted(:drop_stats_test_subxact_oid); COMMIT; SELECT pg_stat_force_next_flush(); SELECT pg_stat_get_live_tuples(:drop_stats_test_subxact_oid); -- savepoint rolback (1 level) SELECT pg_stat_get_live_tuples(:drop_stats_test_subxact_oid); BEGIN; SAVEPOINT sp1; DROP TABLE drop_stats_test_subxact; SAVEPOINT sp2; ROLLBACK TO SAVEPOINT sp1; COMMIT; SELECT pg_stat_get_live_tuples(:drop_stats_test_subxact_oid); -- and now actually drop SELECT pg_stat_get_live_tuples(:drop_stats_test_subxact_oid); BEGIN; SAVEPOINT sp1; DROP TABLE drop_stats_test_subxact; SAVEPOINT sp2; RELEASE SAVEPOINT sp1; COMMIT; SELECT pg_stat_get_live_tuples(:drop_stats_test_subxact_oid); DROP TABLE trunc_stats_test, trunc_stats_test1, trunc_stats_test2, trunc_stats_test3, trunc_stats_test4; DROP TABLE prevstats; ----- -- Test that last_seq_scan, last_idx_scan are correctly maintained -- -- Perform test using a temporary table. That way autovacuum etc won't -- interfere. To be able to check that timestamps increase, we sleep for 100ms -- between tests, assuming that there aren't systems with a coarser timestamp -- granularity. ----- BEGIN; CREATE TEMPORARY TABLE test_last_scan(idx_col int primary key, noidx_col int); INSERT INTO test_last_scan(idx_col, noidx_col) VALUES(1, 1); SELECT pg_stat_force_next_flush(); SELECT last_seq_scan, last_idx_scan FROM pg_stat_all_tables WHERE relid = 'test_last_scan'::regclass; COMMIT; SELECT pg_stat_reset_single_table_counters('test_last_scan'::regclass); SELECT seq_scan, idx_scan FROM pg_stat_all_tables WHERE relid = 'test_last_scan'::regclass; -- ensure we start out with exactly one index and sequential scan BEGIN; SET LOCAL enable_seqscan TO on; SET LOCAL enable_indexscan TO on; SET LOCAL enable_bitmapscan TO off; EXPLAIN (COSTS off) SELECT count(*) FROM test_last_scan WHERE noidx_col = 1; SELECT count(*) FROM test_last_scan WHERE noidx_col = 1; SET LOCAL enable_seqscan TO off; EXPLAIN (COSTS off) SELECT count(*) FROM test_last_scan WHERE idx_col = 1; SELECT count(*) FROM test_last_scan WHERE idx_col = 1; SELECT pg_stat_force_next_flush(); COMMIT; -- fetch timestamps from before the next test SELECT last_seq_scan AS test_last_seq, last_idx_scan AS test_last_idx FROM pg_stat_all_tables WHERE relid = 'test_last_scan'::regclass \gset SELECT pg_sleep(0.1); -- assume a minimum timestamp granularity of 100ms -- cause one sequential scan BEGIN; SET LOCAL enable_seqscan TO on; SET LOCAL enable_indexscan TO off; SET LOCAL enable_bitmapscan TO off; EXPLAIN (COSTS off) SELECT count(*) FROM test_last_scan WHERE noidx_col = 1; SELECT count(*) FROM test_last_scan WHERE noidx_col = 1; SELECT pg_stat_force_next_flush(); COMMIT; -- check that just sequential scan stats were incremented SELECT seq_scan, :'test_last_seq' < last_seq_scan AS seq_ok, idx_scan, :'test_last_idx' = last_idx_scan AS idx_ok FROM pg_stat_all_tables WHERE relid = 'test_last_scan'::regclass; -- fetch timestamps from before the next test SELECT last_seq_scan AS test_last_seq, last_idx_scan AS test_last_idx FROM pg_stat_all_tables WHERE relid = 'test_last_scan'::regclass \gset SELECT pg_sleep(0.1); -- cause one index scan BEGIN; SET LOCAL enable_seqscan TO off; SET LOCAL enable_indexscan TO on; SET LOCAL enable_bitmapscan TO off; EXPLAIN (COSTS off) SELECT count(*) FROM test_last_scan WHERE idx_col = 1; SELECT count(*) FROM test_last_scan WHERE idx_col = 1; SELECT pg_stat_force_next_flush(); COMMIT; -- check that just index scan stats were incremented SELECT seq_scan, :'test_last_seq' = last_seq_scan AS seq_ok, idx_scan, :'test_last_idx' < last_idx_scan AS idx_ok FROM pg_stat_all_tables WHERE relid = 'test_last_scan'::regclass; -- fetch timestamps from before the next test SELECT last_seq_scan AS test_last_seq, last_idx_scan AS test_last_idx FROM pg_stat_all_tables WHERE relid = 'test_last_scan'::regclass \gset SELECT pg_sleep(0.1); -- cause one bitmap index scan BEGIN; SET LOCAL enable_seqscan TO off; SET LOCAL enable_indexscan TO off; SET LOCAL enable_bitmapscan TO on; EXPLAIN (COSTS off) SELECT count(*) FROM test_last_scan WHERE idx_col = 1; SELECT count(*) FROM test_last_scan WHERE idx_col = 1; SELECT pg_stat_force_next_flush(); COMMIT; -- check that just index scan stats were incremented SELECT seq_scan, :'test_last_seq' = last_seq_scan AS seq_ok, idx_scan, :'test_last_idx' < last_idx_scan AS idx_ok FROM pg_stat_all_tables WHERE relid = 'test_last_scan'::regclass; ----- -- Test reset of some stats for shared table ----- -- This updates the comment of the database currently in use in -- pg_shdescription with a fake value, then sets it back to its -- original value. SELECT shobj_description(d.oid, 'pg_database') as description_before FROM pg_database d WHERE datname = current_database() \gset -- force some stats in pg_shdescription. BEGIN; SELECT current_database() as datname \gset COMMENT ON DATABASE :"datname" IS 'This is a test comment'; SELECT pg_stat_force_next_flush(); COMMIT; -- check that the stats are reset. SELECT (n_tup_ins + n_tup_upd) > 0 AS has_data FROM pg_stat_all_tables WHERE relid = 'pg_shdescription'::regclass; SELECT pg_stat_reset_single_table_counters('pg_shdescription'::regclass); SELECT (n_tup_ins + n_tup_upd) > 0 AS has_data FROM pg_stat_all_tables WHERE relid = 'pg_shdescription'::regclass; -- set back comment \if :{?description_before} COMMENT ON DATABASE :"datname" IS :'description_before'; \else COMMENT ON DATABASE :"datname" IS NULL; \endif ----- -- Test that various stats views are being properly populated ----- -- Test that sessions is incremented when a new session is started in pg_stat_database SELECT sessions AS db_stat_sessions FROM pg_stat_database WHERE datname = (SELECT current_database()) \gset \c SELECT pg_stat_force_next_flush(); SELECT sessions > :db_stat_sessions FROM pg_stat_database WHERE datname = (SELECT current_database()); -- Test pg_stat_checkpointer checkpointer-related stats, together with pg_stat_wal SELECT num_requested AS rqst_ckpts_before FROM pg_stat_checkpointer \gset -- Test pg_stat_wal (and make a temp table so our temp schema exists) SELECT wal_bytes AS wal_bytes_before FROM pg_stat_wal \gset CREATE TEMP TABLE test_stats_temp AS SELECT 17; DROP TABLE test_stats_temp; -- Checkpoint twice: The checkpointer reports stats after reporting completion -- of the checkpoint. But after a second checkpoint we'll see at least the -- results of the first. CHECKPOINT; CHECKPOINT; SELECT num_requested > :rqst_ckpts_before FROM pg_stat_checkpointer; SELECT wal_bytes > :wal_bytes_before FROM pg_stat_wal; -- Test pg_stat_get_backend_idset() and some allied functions. -- In particular, verify that their notion of backend ID matches -- our temp schema index. SELECT (current_schemas(true))[1] = ('pg_temp_' || beid::text) AS match FROM pg_stat_get_backend_idset() beid WHERE pg_stat_get_backend_pid(beid) = pg_backend_pid(); ----- -- Test that resetting stats works for reset timestamp ----- -- Test that reset_slru with a specified SLRU works. SELECT stats_reset AS slru_commit_ts_reset_ts FROM pg_stat_slru WHERE name = 'commit_timestamp' \gset SELECT stats_reset AS slru_notify_reset_ts FROM pg_stat_slru WHERE name = 'notify' \gset SELECT pg_stat_reset_slru('commit_timestamp'); SELECT stats_reset > :'slru_commit_ts_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'commit_timestamp'; SELECT stats_reset AS slru_commit_ts_reset_ts FROM pg_stat_slru WHERE name = 'commit_timestamp' \gset -- Test that multiple SLRUs are reset when no specific SLRU provided to reset function SELECT pg_stat_reset_slru(); SELECT stats_reset > :'slru_commit_ts_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'commit_timestamp'; SELECT stats_reset > :'slru_notify_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'notify'; -- Test that reset_shared with archiver specified as the stats type works SELECT stats_reset AS archiver_reset_ts FROM pg_stat_archiver \gset SELECT pg_stat_reset_shared('archiver'); SELECT stats_reset > :'archiver_reset_ts'::timestamptz FROM pg_stat_archiver; -- Test that reset_shared with bgwriter specified as the stats type works SELECT stats_reset AS bgwriter_reset_ts FROM pg_stat_bgwriter \gset SELECT pg_stat_reset_shared('bgwriter'); SELECT stats_reset > :'bgwriter_reset_ts'::timestamptz FROM pg_stat_bgwriter; -- Test that reset_shared with checkpointer specified as the stats type works SELECT stats_reset AS checkpointer_reset_ts FROM pg_stat_checkpointer \gset SELECT pg_stat_reset_shared('checkpointer'); SELECT stats_reset > :'checkpointer_reset_ts'::timestamptz FROM pg_stat_checkpointer; -- Test that reset_shared with recovery_prefetch specified as the stats type works SELECT stats_reset AS recovery_prefetch_reset_ts FROM pg_stat_recovery_prefetch \gset SELECT pg_stat_reset_shared('recovery_prefetch'); SELECT stats_reset > :'recovery_prefetch_reset_ts'::timestamptz FROM pg_stat_recovery_prefetch; -- Test that reset_shared with slru specified as the stats type works SELECT max(stats_reset) AS slru_reset_ts FROM pg_stat_slru \gset SELECT pg_stat_reset_shared('slru'); SELECT max(stats_reset) > :'slru_reset_ts'::timestamptz FROM pg_stat_slru; -- Test that reset_shared with wal specified as the stats type works SELECT stats_reset AS wal_reset_ts FROM pg_stat_wal \gset SELECT pg_stat_reset_shared('wal'); SELECT stats_reset > :'wal_reset_ts'::timestamptz FROM pg_stat_wal; -- Test error case for reset_shared with unknown stats type SELECT pg_stat_reset_shared('unknown'); -- Test that reset works for pg_stat_database -- Since pg_stat_database stats_reset starts out as NULL, reset it once first so we have something to compare it to SELECT pg_stat_reset(); SELECT stats_reset AS db_reset_ts FROM pg_stat_database WHERE datname = (SELECT current_database()) \gset SELECT pg_stat_reset(); SELECT stats_reset > :'db_reset_ts'::timestamptz FROM pg_stat_database WHERE datname = (SELECT current_database()); ---- -- pg_stat_get_snapshot_timestamp behavior ---- BEGIN; SET LOCAL stats_fetch_consistency = snapshot; -- no snapshot yet, return NULL SELECT pg_stat_get_snapshot_timestamp(); -- any attempt at accessing stats will build snapshot SELECT pg_stat_get_function_calls(0); SELECT pg_stat_get_snapshot_timestamp() >= NOW(); -- shows NULL again after clearing SELECT pg_stat_clear_snapshot(); SELECT pg_stat_get_snapshot_timestamp(); COMMIT; ---- -- Changing stats_fetch_consistency in a transaction. ---- BEGIN; -- Stats filled under the cache mode SET LOCAL stats_fetch_consistency = cache; SELECT pg_stat_get_function_calls(0); SELECT pg_stat_get_snapshot_timestamp() IS NOT NULL AS snapshot_ok; -- Success in accessing pre-existing snapshot data. SET LOCAL stats_fetch_consistency = snapshot; SELECT pg_stat_get_snapshot_timestamp() IS NOT NULL AS snapshot_ok; SELECT pg_stat_get_function_calls(0); SELECT pg_stat_get_snapshot_timestamp() IS NOT NULL AS snapshot_ok; -- Snapshot cleared. SET LOCAL stats_fetch_consistency = none; SELECT pg_stat_get_snapshot_timestamp() IS NOT NULL AS snapshot_ok; SELECT pg_stat_get_function_calls(0); SELECT pg_stat_get_snapshot_timestamp() IS NOT NULL AS snapshot_ok; ROLLBACK; ---- -- pg_stat_have_stats behavior ---- -- fixed-numbered stats exist SELECT pg_stat_have_stats('bgwriter', 0, 0); -- unknown stats kinds error out SELECT pg_stat_have_stats('zaphod', 0, 0); -- db stats have objoid 0 SELECT pg_stat_have_stats('database', :dboid, 1); SELECT pg_stat_have_stats('database', :dboid, 0); -- pg_stat_have_stats returns true for committed index creation CREATE table stats_test_tab1 as select generate_series(1,10) a; CREATE index stats_test_idx1 on stats_test_tab1(a); SELECT 'stats_test_idx1'::regclass::oid AS stats_test_idx1_oid \gset SET enable_seqscan TO off; select a from stats_test_tab1 where a = 3; SELECT pg_stat_have_stats('relation', :dboid, :stats_test_idx1_oid); -- pg_stat_have_stats returns false for dropped index with stats SELECT pg_stat_have_stats('relation', :dboid, :stats_test_idx1_oid); DROP index stats_test_idx1; SELECT pg_stat_have_stats('relation', :dboid, :stats_test_idx1_oid); -- pg_stat_have_stats returns false for rolled back index creation BEGIN; CREATE index stats_test_idx1 on stats_test_tab1(a); SELECT 'stats_test_idx1'::regclass::oid AS stats_test_idx1_oid \gset select a from stats_test_tab1 where a = 3; SELECT pg_stat_have_stats('relation', :dboid, :stats_test_idx1_oid); ROLLBACK; SELECT pg_stat_have_stats('relation', :dboid, :stats_test_idx1_oid); -- pg_stat_have_stats returns true for reindex CONCURRENTLY CREATE index stats_test_idx1 on stats_test_tab1(a); SELECT 'stats_test_idx1'::regclass::oid AS stats_test_idx1_oid \gset select a from stats_test_tab1 where a = 3; SELECT pg_stat_have_stats('relation', :dboid, :stats_test_idx1_oid); REINDEX index CONCURRENTLY stats_test_idx1; -- false for previous oid SELECT pg_stat_have_stats('relation', :dboid, :stats_test_idx1_oid); -- true for new oid SELECT 'stats_test_idx1'::regclass::oid AS stats_test_idx1_oid \gset SELECT pg_stat_have_stats('relation', :dboid, :stats_test_idx1_oid); -- pg_stat_have_stats returns true for a rolled back drop index with stats BEGIN; SELECT pg_stat_have_stats('relation', :dboid, :stats_test_idx1_oid); DROP index stats_test_idx1; ROLLBACK; SELECT pg_stat_have_stats('relation', :dboid, :stats_test_idx1_oid); -- put enable_seqscan back to on SET enable_seqscan TO on; -- ensure that stats accessors handle NULL input correctly SELECT pg_stat_get_replication_slot(NULL); SELECT pg_stat_get_subscription_stats(NULL); -- Test that the following operations are tracked in pg_stat_io: -- - reads of target blocks into shared buffers -- - writes of shared buffers to permanent storage -- - extends of relations using shared buffers -- - fsyncs done to ensure the durability of data dirtying shared buffers -- - shared buffer hits -- There is no test for blocks evicted from shared buffers, because we cannot -- be sure of the state of shared buffers at the point the test is run. -- Create a regular table and insert some data to generate IOCONTEXT_NORMAL -- extends. SELECT sum(extends) AS io_sum_shared_before_extends FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset SELECT sum(writes) AS writes, sum(fsyncs) AS fsyncs FROM pg_stat_io WHERE object = 'relation' \gset io_sum_shared_before_ CREATE TABLE test_io_shared(a int); INSERT INTO test_io_shared SELECT i FROM generate_series(1,100)i; SELECT pg_stat_force_next_flush(); SELECT sum(extends) AS io_sum_shared_after_extends FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset SELECT :io_sum_shared_after_extends > :io_sum_shared_before_extends; -- After a checkpoint, there should be some additional IOCONTEXT_NORMAL writes -- and fsyncs. -- See comment above for rationale for two explicit CHECKPOINTs. CHECKPOINT; CHECKPOINT; SELECT sum(writes) AS writes, sum(fsyncs) AS fsyncs FROM pg_stat_io WHERE object = 'relation' \gset io_sum_shared_after_ SELECT :io_sum_shared_after_writes > :io_sum_shared_before_writes; SELECT current_setting('fsync') = 'off' OR :io_sum_shared_after_fsyncs > :io_sum_shared_before_fsyncs; -- Change the tablespace so that the table is rewritten directly, then SELECT -- from it to cause it to be read back into shared buffers. SELECT sum(reads) AS io_sum_shared_before_reads FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset -- Do this in a transaction to prevent spurious failures due to concurrent accesses to our newly -- rewritten table, e.g. by autovacuum. BEGIN; ALTER TABLE test_io_shared SET TABLESPACE regress_tblspace; -- SELECT from the table so that the data is read into shared buffers and -- context 'normal', object 'relation' reads are counted. SELECT COUNT(*) FROM test_io_shared; COMMIT; SELECT pg_stat_force_next_flush(); SELECT sum(reads) AS io_sum_shared_after_reads FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset SELECT :io_sum_shared_after_reads > :io_sum_shared_before_reads; SELECT sum(hits) AS io_sum_shared_before_hits FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset -- Select from the table again to count hits. -- Ensure we generate hits by forcing a nested loop self-join with no -- materialize node. The outer side's buffer will stay pinned, preventing its -- eviction, while we loop through the inner side and generate hits. BEGIN; SET LOCAL enable_nestloop TO on; SET LOCAL enable_mergejoin TO off; SET LOCAL enable_hashjoin TO off; SET LOCAL enable_material TO off; -- ensure plan stays as we expect it to EXPLAIN (COSTS OFF) SELECT COUNT(*) FROM test_io_shared t1 INNER JOIN test_io_shared t2 USING (a); SELECT COUNT(*) FROM test_io_shared t1 INNER JOIN test_io_shared t2 USING (a); COMMIT; SELECT pg_stat_force_next_flush(); SELECT sum(hits) AS io_sum_shared_after_hits FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset SELECT :io_sum_shared_after_hits > :io_sum_shared_before_hits; DROP TABLE test_io_shared; -- Test that the follow IOCONTEXT_LOCAL IOOps are tracked in pg_stat_io: -- - eviction of local buffers in order to reuse them -- - reads of temporary table blocks into local buffers -- - writes of local buffers to permanent storage -- - extends of temporary tables -- Set temp_buffers to its minimum so that we can trigger writes with fewer -- inserted tuples. Do so in a new session in case temporary tables have been -- accessed by previous tests in this session. \c SET temp_buffers TO 100; CREATE TEMPORARY TABLE test_io_local(a int, b TEXT); SELECT sum(extends) AS extends, sum(evictions) AS evictions, sum(writes) AS writes FROM pg_stat_io WHERE context = 'normal' AND object = 'temp relation' \gset io_sum_local_before_ -- Insert tuples into the temporary table, generating extends in the stats. -- Insert enough values that we need to reuse and write out dirty local -- buffers, generating evictions and writes. INSERT INTO test_io_local SELECT generate_series(1, 5000) as id, repeat('a', 200); -- Ensure the table is large enough to exceed our temp_buffers setting. SELECT pg_relation_size('test_io_local') / current_setting('block_size')::int8 > 100; SELECT sum(reads) AS io_sum_local_before_reads FROM pg_stat_io WHERE context = 'normal' AND object = 'temp relation' \gset -- Read in evicted buffers, generating reads. SELECT COUNT(*) FROM test_io_local; SELECT pg_stat_force_next_flush(); SELECT sum(evictions) AS evictions, sum(reads) AS reads, sum(writes) AS writes, sum(extends) AS extends FROM pg_stat_io WHERE context = 'normal' AND object = 'temp relation' \gset io_sum_local_after_ SELECT :io_sum_local_after_evictions > :io_sum_local_before_evictions, :io_sum_local_after_reads > :io_sum_local_before_reads, :io_sum_local_after_writes > :io_sum_local_before_writes, :io_sum_local_after_extends > :io_sum_local_before_extends; -- Change the tablespaces so that the temporary table is rewritten to other -- local buffers, exercising a different codepath than standard local buffer -- writes. ALTER TABLE test_io_local SET TABLESPACE regress_tblspace; SELECT pg_stat_force_next_flush(); SELECT sum(writes) AS io_sum_local_new_tblspc_writes FROM pg_stat_io WHERE context = 'normal' AND object = 'temp relation' \gset SELECT :io_sum_local_new_tblspc_writes > :io_sum_local_after_writes; RESET temp_buffers; -- Test that reuse of strategy buffers and reads of blocks into these reused -- buffers while VACUUMing are tracked in pg_stat_io. If there is sufficient -- demand for shared buffers from concurrent queries, some buffers may be -- pinned by other backends before they can be reused. In such cases, the -- backend will evict a buffer from outside the ring and add it to the -- ring. This is considered an eviction and not a reuse. -- Set wal_skip_threshold smaller than the expected size of -- test_io_vac_strategy so that, even if wal_level is minimal, VACUUM FULL will -- fsync the newly rewritten test_io_vac_strategy instead of writing it to WAL. -- Writing it to WAL will result in the newly written relation pages being in -- shared buffers -- preventing us from testing BAS_VACUUM BufferAccessStrategy -- reads. SET wal_skip_threshold = '1 kB'; SELECT sum(reuses) AS reuses, sum(reads) AS reads, sum(evictions) AS evictions FROM pg_stat_io WHERE context = 'vacuum' \gset io_sum_vac_strategy_before_ CREATE TABLE test_io_vac_strategy(a int, b int) WITH (autovacuum_enabled = 'false'); INSERT INTO test_io_vac_strategy SELECT i, i from generate_series(1, 4500)i; -- Ensure that the next VACUUM will need to perform IO by rewriting the table -- first with VACUUM (FULL). VACUUM (FULL) test_io_vac_strategy; -- Use the minimum BUFFER_USAGE_LIMIT to cause reuses or evictions with the -- smallest table possible. VACUUM (PARALLEL 0, BUFFER_USAGE_LIMIT 128) test_io_vac_strategy; SELECT pg_stat_force_next_flush(); SELECT sum(reuses) AS reuses, sum(reads) AS reads, sum(evictions) AS evictions FROM pg_stat_io WHERE context = 'vacuum' \gset io_sum_vac_strategy_after_ SELECT :io_sum_vac_strategy_after_reads > :io_sum_vac_strategy_before_reads; SELECT (:io_sum_vac_strategy_after_reuses + :io_sum_vac_strategy_after_evictions) > (:io_sum_vac_strategy_before_reuses + :io_sum_vac_strategy_before_evictions); RESET wal_skip_threshold; -- Test that extends done by a CTAS, which uses a BAS_BULKWRITE -- BufferAccessStrategy, are tracked in pg_stat_io. SELECT sum(extends) AS io_sum_bulkwrite_strategy_extends_before FROM pg_stat_io WHERE context = 'bulkwrite' \gset CREATE TABLE test_io_bulkwrite_strategy AS SELECT i FROM generate_series(1,100)i; SELECT pg_stat_force_next_flush(); SELECT sum(extends) AS io_sum_bulkwrite_strategy_extends_after FROM pg_stat_io WHERE context = 'bulkwrite' \gset SELECT :io_sum_bulkwrite_strategy_extends_after > :io_sum_bulkwrite_strategy_extends_before; -- Test IO stats reset SELECT pg_stat_have_stats('io', 0, 0); SELECT sum(evictions) + sum(reuses) + sum(extends) + sum(fsyncs) + sum(reads) + sum(writes) + sum(writebacks) + sum(hits) AS io_stats_pre_reset FROM pg_stat_io \gset SELECT pg_stat_reset_shared('io'); SELECT sum(evictions) + sum(reuses) + sum(extends) + sum(fsyncs) + sum(reads) + sum(writes) + sum(writebacks) + sum(hits) AS io_stats_post_reset FROM pg_stat_io \gset SELECT :io_stats_post_reset < :io_stats_pre_reset; -- test BRIN index doesn't block HOT update CREATE TABLE brin_hot ( id integer PRIMARY KEY, val integer NOT NULL ) WITH (autovacuum_enabled = off, fillfactor = 70); INSERT INTO brin_hot SELECT *, 0 FROM generate_series(1, 235); CREATE INDEX val_brin ON brin_hot using brin(val); CREATE FUNCTION wait_for_hot_stats() RETURNS void AS $$ DECLARE start_time timestamptz := clock_timestamp(); updated bool; BEGIN -- we don't want to wait forever; loop will exit after 30 seconds FOR i IN 1 .. 300 LOOP SELECT (pg_stat_get_tuples_hot_updated('brin_hot'::regclass::oid) > 0) INTO updated; EXIT WHEN updated; -- 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_hot_stats delayed % seconds', EXTRACT(epoch FROM clock_timestamp() - start_time); END $$ LANGUAGE plpgsql; UPDATE brin_hot SET val = -3 WHERE id = 42; -- We can't just call wait_for_hot_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 - SELECT wait_for_hot_stats(); SELECT pg_stat_get_tuples_hot_updated('brin_hot'::regclass::oid); DROP TABLE brin_hot; DROP FUNCTION wait_for_hot_stats(); -- Test handling of index predicates - updating attributes in precicates -- should not block HOT when summarizing indexes are involved. We update -- a row that was not indexed due to the index predicate, and becomes -- indexable - the HOT-updated tuple is forwarded to the BRIN index. CREATE TABLE brin_hot_2 (a int, b int); INSERT INTO brin_hot_2 VALUES (1, 100); CREATE INDEX ON brin_hot_2 USING brin (b) WHERE a = 2; UPDATE brin_hot_2 SET a = 2; EXPLAIN (COSTS OFF) SELECT * FROM brin_hot_2 WHERE a = 2 AND b = 100; SELECT COUNT(*) FROM brin_hot_2 WHERE a = 2 AND b = 100; SET enable_seqscan = off; EXPLAIN (COSTS OFF) SELECT * FROM brin_hot_2 WHERE a = 2 AND b = 100; SELECT COUNT(*) FROM brin_hot_2 WHERE a = 2 AND b = 100; DROP TABLE brin_hot_2; -- Test that updates to indexed columns are still propagated to the -- BRIN column. -- https://postgr.es/m/05ebcb44-f383-86e3-4f31-0a97a55634cf@enterprisedb.com CREATE TABLE brin_hot_3 (a int, filler text) WITH (fillfactor = 10); INSERT INTO brin_hot_3 SELECT 1, repeat(' ', 500) FROM generate_series(1, 20); CREATE INDEX ON brin_hot_3 USING brin (a) WITH (pages_per_range = 1); UPDATE brin_hot_3 SET a = 2; EXPLAIN (COSTS OFF) SELECT * FROM brin_hot_3 WHERE a = 2; SELECT COUNT(*) FROM brin_hot_3 WHERE a = 2; DROP TABLE brin_hot_3; SET enable_seqscan = on; -- Test that estimation of relation size works with tuples wider than the -- relation fillfactor. We create a table with wide inline attributes and -- low fillfactor, insert rows and then see how many rows EXPLAIN shows -- before running analyze. We disable autovacuum so that it does not -- interfere with the test. CREATE TABLE table_fillfactor ( n char(1000) ) with (fillfactor=10, autovacuum_enabled=off); INSERT INTO table_fillfactor SELECT 'x' FROM generate_series(1,1000); SELECT * FROM check_estimated_rows('SELECT * FROM table_fillfactor'); DROP TABLE table_fillfactor; -- End of Stats Test libpg_query-17-6.1.0/test/sql/postgres_regress/stats_ext.sql000066400000000000000000002237451477334012600242260ustar00rootroot00000000000000-- 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 text, 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, x, y, x, x, y, x, x, y FROM ext_stats_test; CREATE STATISTICS tst ON x, x, y, x, x, (x || 'x'), (y + 1), (x || 'x'), (x || 'x'), (y + 1) FROM ext_stats_test; CREATE STATISTICS tst ON (x || 'x'), (x || 'x'), (y + 1), (x || 'x'), (x || 'x'), (y + 1), (x || 'x'), (x || 'x'), (y + 1) FROM ext_stats_test; CREATE STATISTICS tst ON (x || 'x'), (x || 'x'), y FROM ext_stats_test; CREATE STATISTICS tst (unrecognized) ON x, y FROM ext_stats_test; -- incorrect expressions CREATE STATISTICS tst ON (y) FROM ext_stats_test; -- single column reference CREATE STATISTICS tst ON y + z FROM ext_stats_test; -- missing parentheses CREATE STATISTICS tst ON (x, y) FROM ext_stats_test; -- tuple expression 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; COMMENT ON STATISTICS ab1_a_b_stats IS 'new comment'; CREATE ROLE regress_stats_ext; SET SESSION AUTHORIZATION regress_stats_ext; COMMENT ON STATISTICS ab1_a_b_stats IS 'changed comment'; DROP STATISTICS ab1_a_b_stats; ALTER STATISTICS ab1_a_b_stats RENAME TO ab1_a_b_stats_new; RESET SESSION AUTHORIZATION; DROP ROLE regress_stats_ext; 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, stxdinherit FROM pg_statistic_ext s LEFT JOIN pg_statistic_ext_data d ON (d.stxoid = s.oid) WHERE s.stxname = 'ab1_a_b_stats'; 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; -- Tests for stats with inheritance CREATE TABLE stxdinh(a int, b int); CREATE TABLE stxdinh1() INHERITS(stxdinh); CREATE TABLE stxdinh2() INHERITS(stxdinh); INSERT INTO stxdinh SELECT mod(a,50), mod(a,100) FROM generate_series(0, 1999) a; INSERT INTO stxdinh1 SELECT mod(a,100), mod(a,100) FROM generate_series(0, 999) a; INSERT INTO stxdinh2 SELECT mod(a,100), mod(a,100) FROM generate_series(0, 999) a; VACUUM ANALYZE stxdinh, stxdinh1, stxdinh2; -- Ensure non-inherited stats are not applied to inherited query -- Without stats object, it looks like this SELECT * FROM check_estimated_rows('SELECT a, b FROM stxdinh* GROUP BY 1, 2'); SELECT * FROM check_estimated_rows('SELECT a, b FROM stxdinh* WHERE a = 0 AND b = 0'); CREATE STATISTICS stxdinh ON a, b FROM stxdinh; VACUUM ANALYZE stxdinh, stxdinh1, stxdinh2; -- See if the extended stats affect the estimates SELECT * FROM check_estimated_rows('SELECT a, b FROM stxdinh* GROUP BY 1, 2'); -- Dependencies are applied at individual relations (within append), so -- this estimate changes a bit because we improve estimates for the parent SELECT * FROM check_estimated_rows('SELECT a, b FROM stxdinh* WHERE a = 0 AND b = 0'); -- Ensure correct (non-inherited) stats are applied to inherited query SELECT * FROM check_estimated_rows('SELECT a, b FROM ONLY stxdinh GROUP BY 1, 2'); SELECT * FROM check_estimated_rows('SELECT a, b FROM ONLY stxdinh WHERE a = 0 AND b = 0'); DROP TABLE stxdinh, stxdinh1, stxdinh2; -- Ensure inherited stats ARE applied to inherited query in partitioned table CREATE TABLE stxdinp(i int, a int, b int) PARTITION BY RANGE (i); CREATE TABLE stxdinp1 PARTITION OF stxdinp FOR VALUES FROM (1) TO (100); INSERT INTO stxdinp SELECT 1, a/100, a/100 FROM generate_series(1, 999) a; CREATE STATISTICS stxdinp ON (a + 1), a, b FROM stxdinp; VACUUM ANALYZE stxdinp; -- partitions are processed recursively SELECT 1 FROM pg_statistic_ext WHERE stxrelid = 'stxdinp'::regclass; SELECT * FROM check_estimated_rows('SELECT a, b FROM stxdinp GROUP BY 1, 2'); SELECT * FROM check_estimated_rows('SELECT a + 1, b FROM ONLY stxdinp GROUP BY 1, 2'); DROP TABLE stxdinp; -- basic test for statistics on expressions CREATE TABLE ab1 (a INTEGER, b INTEGER, c TIMESTAMP, d TIMESTAMPTZ); -- expression stats may be built on a single expression column CREATE STATISTICS ab1_exprstat_1 ON (a+b) FROM ab1; -- with a single expression, we only enable expression statistics CREATE STATISTICS ab1_exprstat_2 ON (a+b) FROM ab1; SELECT stxkind FROM pg_statistic_ext WHERE stxname = 'ab1_exprstat_2'; -- adding anything to the expression builds all statistics kinds CREATE STATISTICS ab1_exprstat_3 ON (a+b), a FROM ab1; SELECT stxkind FROM pg_statistic_ext WHERE stxname = 'ab1_exprstat_3'; -- date_trunc on timestamptz is not immutable, but that should not matter CREATE STATISTICS ab1_exprstat_4 ON date_trunc('day', d) FROM ab1; -- date_trunc on timestamp is immutable CREATE STATISTICS ab1_exprstat_5 ON date_trunc('day', c) FROM ab1; -- check use of a boolean-returning expression CREATE STATISTICS ab1_exprstat_6 ON (case a when 1 then true else false end), b FROM ab1; -- insert some data and run analyze, to test that these cases build properly INSERT INTO ab1 SELECT x / 10, x / 3, '2020-10-01'::timestamp + x * interval '1 day', '2020-10-01'::timestamptz + x * interval '1 day' FROM generate_series(1, 100) x; ANALYZE ab1; -- apply some stats SELECT * FROM check_estimated_rows('SELECT * FROM ab1 WHERE (case a when 1 then true else false end) AND b=2'); DROP TABLE ab1; -- 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, (i/100) || ' dollars and zero cents' 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'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, (a+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a+1), (b+100)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a+1), (b+100), (2*c)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, (a+1), (b+100)'); -- 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'); -- partial improvement (match on attributes) SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, (a+1)'); -- expressions - no improvement SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a+1), (b+100)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a+1), (b+100), (2*c)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, (a+1), (b+100)'); -- 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,13), mod(i,17), mod(i,19), mod(i,23) || ' dollars and zero cents' FROM generate_series(1,1000) 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'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, (a+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a+1), (b+100)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a+1), (b+100), (2*c)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, (a+1), (b+100)'); 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'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, (a+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a+1), (b+100)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a+1), (b+100), (2*c)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, (a+1), (b+100)'); -- ndistinct estimates with statistics on expressions SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a+1), (b+100)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a+1), (b+100), (2*c)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, (a+1), (b+100)'); CREATE STATISTICS s10 (ndistinct) ON (a+1), (b+100), (2*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; SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a+1), (b+100)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a+1), (b+100), (2*c)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, (a+1), (b+100)'); DROP STATISTICS s10; -- a mix of attributes and expressions 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, (2*c)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, (2*c)'); CREATE STATISTICS s10 (ndistinct) ON a, b, (2*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; 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, (2*c)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, (2*c)'); DROP STATISTICS s10; -- combination of multiple ndistinct statistics, with/without expressions TRUNCATE ndistinct; -- two mostly independent groups of columns INSERT INTO ndistinct (a, b, c, d) SELECT mod(i,3), mod(i,9), mod(i,5), mod(i,20) FROM generate_series(1,1000) s(i); ANALYZE ndistinct; 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+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), b'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), (b+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), (b+1), c'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, (c*10)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, (b+1), c, (d - 1)'); -- basic statistics on both attributes (no expressions) CREATE STATISTICS s11 (ndistinct) ON a, b FROM ndistinct; CREATE STATISTICS s12 (ndistinct) ON c, d FROM ndistinct; ANALYZE ndistinct; 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+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), b'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), (b+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), (b+1), c'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, (c*10)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, (b+1), c, (d - 1)'); -- replace the second statistics by statistics on expressions DROP STATISTICS s12; CREATE STATISTICS s12 (ndistinct) ON (c * 10), (d - 1) FROM ndistinct; ANALYZE ndistinct; 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+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), b'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), (b+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), (b+1), c'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, (c*10)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, (b+1), c, (d - 1)'); -- replace the second statistics by statistics on both attributes and expressions DROP STATISTICS s12; CREATE STATISTICS s12 (ndistinct) ON c, d, (c * 10), (d - 1) FROM ndistinct; ANALYZE ndistinct; 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+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), b'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), (b+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), (b+1), c'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, (c*10)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, (b+1), c, (d - 1)'); -- replace the other statistics by statistics on both attributes and expressions DROP STATISTICS s11; CREATE STATISTICS s11 (ndistinct) ON a, b, (a*5), (b+1) FROM ndistinct; ANALYZE ndistinct; 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+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), b'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), (b+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), (b+1), c'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, (c*10)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, (b+1), c, (d - 1)'); -- replace statistics by somewhat overlapping ones (this expected to get worse estimate -- because the first statistics shall be applied to 3 columns, and the second one can't -- be really applied) DROP STATISTICS s11; DROP STATISTICS s12; CREATE STATISTICS s11 (ndistinct) ON a, b, (a*5), (b+1) FROM ndistinct; CREATE STATISTICS s12 (ndistinct) ON a, (b+1), (c * 10) FROM ndistinct; ANALYZE ndistinct; 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+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), b'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), (b+1)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY (a*5), (b+1), c'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, (c*10)'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, (b+1), c, (d - 1)'); DROP STATISTICS s11; DROP STATISTICS s12; -- 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, 5), mod(i, 7), mod(i, 11), i FROM generate_series(1,1000) 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; -- now do the same thing, but with expressions INSERT INTO functional_dependencies (a, b, c, filler1) SELECT i, i, i, i FROM generate_series(1,5000) s(i); ANALYZE functional_dependencies; SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE mod(a, 11) = 1 AND mod(b::int, 13) = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE mod(a, 11) = 1 AND mod(b::int, 13) = 1 AND mod(c, 7) = 1'); -- create statistics CREATE STATISTICS func_deps_stat (dependencies) ON (mod(a,11)), (mod(b::int, 13)), (mod(c, 7)) FROM functional_dependencies; ANALYZE functional_dependencies; SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE mod(a, 11) = 1 AND mod(b::int, 13) = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE mod(a, 11) = 1 AND mod(b::int, 13) = 1 AND mod(c, 7) = 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 all its stats to be dropped, reverting -- to default estimates without any statistics, i.e. 0.5% selectivity for each -- condition 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'); DROP STATISTICS func_deps_stat; -- now try functional dependencies with expressions SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = 2 AND upper(b) = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = 2 AND upper(b) = ''1'' AND (c + 1) = 2'); -- IN SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 102) AND upper(b) = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 102) AND upper(b) IN (''1'', ''2'')'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 4, 102, 104) AND upper(b) IN (''1'', ''2'')'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 4, 102, 104) AND upper(b) = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 52, 102, 152) AND upper(b) IN (''1'', ''26'') AND (c + 1) = 2'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 52, 102, 152) AND upper(b) IN (''1'', ''26'') AND (c + 1) IN (2)'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 4, 52, 54, 102, 104, 152, 154) AND upper(b) IN (''1'', ''2'', ''26'', ''27'') AND (c + 1) IN (2, 3)'); -- OR clauses referencing the same attribute SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE ((a * 2) = 2 OR (a * 2) = 102) AND upper(b) = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE ((a * 2) = 2 OR (a * 2) = 102) AND (upper(b) = ''1'' OR upper(b) = ''2'')'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE ((a * 2) = 2 OR (a * 2) = 4 OR (a * 2) = 102 OR (a * 2) = 104) AND (upper(b) = ''1'' OR upper(b) = ''2'')'); -- OR clauses referencing different attributes SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE ((a * 2) = 2 OR upper(b) = ''1'') AND upper(b) = ''1'''); -- ANY SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = ANY (ARRAY[2, 102]) AND upper(b) = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = ANY (ARRAY[2, 102]) AND upper(b) = ANY (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = ANY (ARRAY[2, 4, 102, 104]) AND upper(b) = ANY (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = ANY (ARRAY[2, 52, 102, 152]) AND upper(b) = ANY (ARRAY[''1'', ''26'']) AND (c + 1) = 2'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = ANY (ARRAY[2, 52, 102, 152]) AND upper(b) = ANY (ARRAY[''1'', ''26'']) AND (c + 1) = ANY (ARRAY[2])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = ANY (ARRAY[2, 4, 52, 54, 102, 104, 152, 154]) AND upper(b) = ANY (ARRAY[''1'', ''2'', ''26'', ''27'']) AND (c + 1) = ANY (ARRAY[2, 3])'); -- ANY with inequalities should not benefit from functional dependencies -- the estimates however improve thanks to having expression statistics SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) < ANY (ARRAY[2, 102]) AND upper(b) > ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) >= ANY (ARRAY[2, 102]) AND upper(b) <= ANY (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) <= ANY (ARRAY[2, 4, 102, 104]) AND upper(b) >= ANY (ARRAY[''1'', ''2''])'); -- ALL (should not benefit from functional dependencies) SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 102) AND upper(b) = ALL (ARRAY[''1''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 102) AND upper(b) = ALL (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 4, 102, 104) AND upper(b) = ALL (ARRAY[''1'', ''2''])'); -- create statistics on expressions CREATE STATISTICS func_deps_stat (dependencies) ON (a * 2), upper(b), (c + 1) 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 * 2) = 2 AND upper(b) = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = 2 AND upper(b) = ''1'' AND (c + 1) = 2'); -- IN SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 102) AND upper(b) = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 102) AND upper(b) IN (''1'', ''2'')'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 4, 102, 104) AND upper(b) IN (''1'', ''2'')'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 4, 102, 104) AND upper(b) = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 52, 102, 152) AND upper(b) IN (''1'', ''26'') AND (c + 1) = 2'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 52, 102, 152) AND upper(b) IN (''1'', ''26'') AND (c + 1) IN (2)'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 4, 52, 54, 102, 104, 152, 154) AND upper(b) IN (''1'', ''2'', ''26'', ''27'') AND (c + 1) IN (2, 3)'); -- OR clauses referencing the same attribute SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE ((a * 2) = 2 OR (a * 2) = 102) AND upper(b) = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE ((a * 2) = 2 OR (a * 2) = 102) AND (upper(b) = ''1'' OR upper(b) = ''2'')'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE ((a * 2) = 2 OR (a * 2) = 4 OR (a * 2) = 102 OR (a * 2) = 104) AND (upper(b) = ''1'' OR upper(b) = ''2'')'); -- OR clauses referencing different attributes SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE ((a * 2) = 2 OR upper(b) = ''1'') AND upper(b) = ''1'''); -- ANY SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = ANY (ARRAY[2, 102]) AND upper(b) = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = ANY (ARRAY[2, 102]) AND upper(b) = ANY (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = ANY (ARRAY[2, 4, 102, 104]) AND upper(b) = ANY (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = ANY (ARRAY[2, 52, 102, 152]) AND upper(b) = ANY (ARRAY[''1'', ''26'']) AND (c + 1) = 2'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = ANY (ARRAY[2, 52, 102, 152]) AND upper(b) = ANY (ARRAY[''1'', ''26'']) AND (c + 1) = ANY (ARRAY[2])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) = ANY (ARRAY[2, 4, 52, 54, 102, 104, 152, 154]) AND upper(b) = ANY (ARRAY[''1'', ''2'', ''26'', ''27'']) AND (c + 1) = ANY (ARRAY[2, 3])'); -- ANY with inequalities should not benefit from functional dependencies -- the estimates however improve thanks to having expression statistics SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) < ANY (ARRAY[2, 102]) AND upper(b) > ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) >= ANY (ARRAY[2, 102]) AND upper(b) <= ANY (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) <= ANY (ARRAY[2, 4, 102, 104]) AND upper(b) >= ANY (ARRAY[''1'', ''2''])'); -- ALL (should not benefit from functional dependencies) SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 102) AND upper(b) = ALL (ARRAY[''1''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 102) AND upper(b) = ALL (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a * 2) IN (2, 4, 102, 104) AND upper(b) = ALL (ARRAY[''1'', ''2''])'); -- 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, ia INT[] ) 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'); TRUNCATE mcv_lists; DROP STATISTICS mcv_lists_stats; -- random data (no MCV list), but with expression INSERT INTO mcv_lists (a, b, c, filler1) SELECT i, i, i, i FROM generate_series(1,1000) s(i); ANALYZE mcv_lists; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,7) = 1 AND mod(b::int,11) = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,7) = 1 AND mod(b::int,11) = 1 AND mod(c,13) = 1'); -- create statistics CREATE STATISTICS mcv_lists_stats (mcv) ON (mod(a,7)), (mod(b::int,11)), (mod(c,13)) FROM mcv_lists; ANALYZE mcv_lists; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,7) = 1 AND mod(b::int,11) = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,7) = 1 AND mod(b::int,11) = 1 AND mod(c,13) = 1'); -- 100 distinct combinations, all in the MCV list TRUNCATE mcv_lists; DROP STATISTICS mcv_lists_stats; INSERT INTO mcv_lists (a, b, c, ia, filler1) SELECT mod(i,100), mod(i,50), mod(i,25), array[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])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = ANY (ARRAY[4,5]) AND 4 = ANY(ia)'); -- create statistics CREATE STATISTICS mcv_lists_stats (mcv) ON a, b, c, ia 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 = 1 OR b = ''1'' OR c = 1 OR d IS NOT NULL'); 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])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = ANY (ARRAY[4,5]) AND 4 = ANY(ia)'); -- 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, all in the MCV list, but with expressions TRUNCATE mcv_lists; DROP STATISTICS mcv_lists_stats; INSERT INTO mcv_lists (a, b, c, filler1) SELECT i, i, i, i FROM generate_series(1,1000) s(i); ANALYZE mcv_lists; -- without any stats on the expressions, we have to use default selectivities, which -- is why the estimates here are different from the pre-computed case above SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) = 1 AND mod(b::int,10) = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE 1 = mod(a,20) AND 1 = mod(b::int,10)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) < 1 AND mod(b::int,10) < 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE 1 > mod(a,20) AND 1 > mod(b::int,10)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) = 1 AND mod(b::int,10) = 1 AND mod(c,5) = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) = 1 OR mod(b::int,10) = 1 OR mod(c,25) = 1 OR d IS NOT NULL'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) IN (1, 2, 51, 52, NULL) AND mod(b::int,10) IN ( 1, 2, NULL)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) = ANY (ARRAY[1, 2, 51, 52]) AND mod(b::int,10) = ANY (ARRAY[1, 2])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) <= ANY (ARRAY[1, NULL, 2, 3]) AND mod(b::int,10) IN (1, 2, NULL, 3)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) < ALL (ARRAY[4, 5]) AND mod(b::int,10) IN (1, 2, 3) AND mod(c,5) > ANY (ARRAY[1, 2, 3])'); -- create statistics with expressions only (we create three separate stats, in order not to build more complex extended stats) CREATE STATISTICS mcv_lists_stats_1 ON (mod(a,20)) FROM mcv_lists; CREATE STATISTICS mcv_lists_stats_2 ON (mod(b::int,10)) FROM mcv_lists; CREATE STATISTICS mcv_lists_stats_3 ON (mod(c,5)) FROM mcv_lists; ANALYZE mcv_lists; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) = 1 AND mod(b::int,10) = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE 1 = mod(a,20) AND 1 = mod(b::int,10)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) < 1 AND mod(b::int,10) < 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE 1 > mod(a,20) AND 1 > mod(b::int,10)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) = 1 AND mod(b::int,10) = 1 AND mod(c,5) = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) = 1 OR mod(b::int,10) = 1 OR mod(c,25) = 1 OR d IS NOT NULL'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) IN (1, 2, 51, 52, NULL) AND mod(b::int,10) IN ( 1, 2, NULL)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) = ANY (ARRAY[1, 2, 51, 52]) AND mod(b::int,10) = ANY (ARRAY[1, 2])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) <= ANY (ARRAY[1, NULL, 2, 3]) AND mod(b::int,10) IN (1, 2, NULL, 3)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) < ALL (ARRAY[4, 5]) AND mod(b::int,10) IN (1, 2, 3) AND mod(c,5) > ANY (ARRAY[1, 2, 3])'); DROP STATISTICS mcv_lists_stats_1; DROP STATISTICS mcv_lists_stats_2; DROP STATISTICS mcv_lists_stats_3; -- create statistics with both MCV and expressions CREATE STATISTICS mcv_lists_stats (mcv) ON (mod(a,20)), (mod(b::int,10)), (mod(c,5)) FROM mcv_lists; ANALYZE mcv_lists; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) = 1 AND mod(b::int,10) = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE 1 = mod(a,20) AND 1 = mod(b::int,10)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) < 1 AND mod(b::int,10) < 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE 1 > mod(a,20) AND 1 > mod(b::int,10)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) = 1 AND mod(b::int,10) = 1 AND mod(c,5) = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) = 1 OR mod(b::int,10) = 1 OR mod(c,25) = 1 OR d IS NOT NULL'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) IN (1, 2, 51, 52, NULL) AND mod(b::int,10) IN ( 1, 2, NULL)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) = ANY (ARRAY[1, 2, 51, 52]) AND mod(b::int,10) = ANY (ARRAY[1, 2])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) <= ANY (ARRAY[1, NULL, 2, 3]) AND mod(b::int,10) IN (1, 2, NULL, 3)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE mod(a,20) < ALL (ARRAY[4, 5]) AND mod(b::int,10) IN (1, 2, 3) AND mod(c,5) > ANY (ARRAY[1, 2, 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 mod(a,20) = 1 OR mod(b::int,10) = 1 OR mod(c,5) = 1 OR d IS NOT NULL'); -- 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 fipshash(mod(i,100)::text)::uuid, fipshash(mod(i,50)::text)::uuid, fipshash(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 = ''e7f6c011-776e-8db7-cd33-0b54174fd76f'' AND b = ''e7f6c011-776e-8db7-cd33-0b54174fd76f'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_uuid WHERE a = ''e7f6c011-776e-8db7-cd33-0b54174fd76f'' AND b = ''e7f6c011-776e-8db7-cd33-0b54174fd76f'' AND c = ''e7f6c011-776e-8db7-cd33-0b54174fd76f'''); 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 = ''e7f6c011-776e-8db7-cd33-0b54174fd76f'' AND b = ''e7f6c011-776e-8db7-cd33-0b54174fd76f'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_uuid WHERE a = ''e7f6c011-776e-8db7-cd33-0b54174fd76f'' AND b = ''e7f6c011-776e-8db7-cd33-0b54174fd76f'' AND c = ''e7f6c011-776e-8db7-cd33-0b54174fd76f'''); 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[fipshash((i/100)::text), fipshash((i/100-1)::text), fipshash((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'); -- mcv covering just a small fraction of data CREATE TABLE mcv_lists_partial ( a INT, b INT, c INT ); -- 10 frequent groups, each with 100 elements INSERT INTO mcv_lists_partial (a, b, c) SELECT mod(i,10), mod(i,10), mod(i,10) FROM generate_series(0,999) s(i); -- 100 groups that will make it to the MCV list (includes the 10 frequent ones) INSERT INTO mcv_lists_partial (a, b, c) SELECT i, i, i FROM generate_series(0,99) s(i); -- 4000 groups in total, most of which won't make it (just a single item) INSERT INTO mcv_lists_partial (a, b, c) SELECT i, i, i FROM generate_series(0,3999) s(i); ANALYZE mcv_lists_partial; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE a = 0 AND b = 0 AND c = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE a = 0 OR b = 0 OR c = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE a = 10 AND b = 10 AND c = 10'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE a = 10 OR b = 10 OR c = 10'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE a = 0 AND b = 0 AND c = 10'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE a = 0 OR b = 0 OR c = 10'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE (a = 0 AND b = 0 AND c = 0) OR (a = 1 AND b = 1 AND c = 1) OR (a = 2 AND b = 2 AND c = 2)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE (a = 0 AND b = 0) OR (a = 0 AND c = 0) OR (b = 0 AND c = 0)'); CREATE STATISTICS mcv_lists_partial_stats (mcv) ON a, b, c FROM mcv_lists_partial; ANALYZE mcv_lists_partial; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE a = 0 AND b = 0 AND c = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE a = 0 OR b = 0 OR c = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE a = 10 AND b = 10 AND c = 10'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE a = 10 OR b = 10 OR c = 10'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE a = 0 AND b = 0 AND c = 10'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE a = 0 OR b = 0 OR c = 10'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE (a = 0 AND b = 0 AND c = 0) OR (a = 1 AND b = 1 AND c = 1) OR (a = 2 AND b = 2 AND c = 2)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_partial WHERE (a = 0 AND b = 0) OR (a = 0 AND c = 0) OR (b = 0 AND c = 0)'); DROP TABLE mcv_lists_partial; -- 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 b = 0 AND c = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_multi WHERE b = 0 OR c = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_multi WHERE a = 0 AND b = 0 AND c = 0 AND d = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_multi WHERE (a = 0 AND b = 0) OR (c = 0 AND d = 0)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_multi WHERE a = 0 OR b = 0 OR c = 0 OR 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 b = 0 AND c = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_multi WHERE b = 0 OR c = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_multi WHERE a = 0 AND b = 0 AND c = 0 AND d = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_multi WHERE (a = 0 AND b = 0) OR (c = 0 AND d = 0)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_multi WHERE a = 0 OR b = 0 OR c = 0 OR d = 0'); DROP TABLE mcv_lists_multi; -- statistics on integer expressions CREATE TABLE expr_stats (a int, b int, c int); INSERT INTO expr_stats SELECT mod(i,10), mod(i,10), mod(i,10) FROM generate_series(1,1000) s(i); ANALYZE expr_stats; SELECT * FROM check_estimated_rows('SELECT * FROM expr_stats WHERE (2*a) = 0 AND (3*b) = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM expr_stats WHERE (a+b) = 0 AND (a-b) = 0'); CREATE STATISTICS expr_stats_1 (mcv) ON (a+b), (a-b), (2*a), (3*b) FROM expr_stats; ANALYZE expr_stats; SELECT * FROM check_estimated_rows('SELECT * FROM expr_stats WHERE (2*a) = 0 AND (3*b) = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM expr_stats WHERE (a+b) = 0 AND (a-b) = 0'); DROP STATISTICS expr_stats_1; DROP TABLE expr_stats; -- statistics on a mix columns and expressions CREATE TABLE expr_stats (a int, b int, c int); INSERT INTO expr_stats SELECT mod(i,10), mod(i,10), mod(i,10) FROM generate_series(1,1000) s(i); ANALYZE expr_stats; SELECT * FROM check_estimated_rows('SELECT * FROM expr_stats WHERE a = 0 AND (2*a) = 0 AND (3*b) = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM expr_stats WHERE a = 3 AND b = 3 AND (a-b) = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM expr_stats WHERE a = 0 AND b = 1 AND (a-b) = 0'); CREATE STATISTICS expr_stats_1 (mcv) ON a, b, (2*a), (3*b), (a+b), (a-b) FROM expr_stats; ANALYZE expr_stats; SELECT * FROM check_estimated_rows('SELECT * FROM expr_stats WHERE a = 0 AND (2*a) = 0 AND (3*b) = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM expr_stats WHERE a = 3 AND b = 3 AND (a-b) = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM expr_stats WHERE a = 0 AND b = 1 AND (a-b) = 0'); DROP TABLE expr_stats; -- statistics on expressions with different data types CREATE TABLE expr_stats (a int, b name, c text); INSERT INTO expr_stats SELECT mod(i,10), fipshash(mod(i,10)::text), fipshash(mod(i,10)::text) FROM generate_series(1,1000) s(i); ANALYZE expr_stats; SELECT * FROM check_estimated_rows('SELECT * FROM expr_stats WHERE a = 0 AND (b || c) <= ''z'' AND (c || b) >= ''0'''); CREATE STATISTICS expr_stats_1 (mcv) ON a, b, (b || c), (c || b) FROM expr_stats; ANALYZE expr_stats; SELECT * FROM check_estimated_rows('SELECT * FROM expr_stats WHERE a = 0 AND (b || c) <= ''z'' AND (c || b) >= ''0'''); DROP TABLE expr_stats; -- test handling of a mix of compatible and incompatible expressions CREATE TABLE expr_stats_incompatible_test ( c0 double precision, c1 boolean NOT NULL ); CREATE STATISTICS expr_stat_comp_1 ON c0, c1 FROM expr_stats_incompatible_test; INSERT INTO expr_stats_incompatible_test VALUES (1234,false), (5678,true); ANALYZE expr_stats_incompatible_test; SELECT c0 FROM ONLY expr_stats_incompatible_test WHERE ( upper('x') LIKE ('x'||('[0,1]'::int4range)) AND (c0 IN (0, 1) OR c1) ); DROP TABLE expr_stats_incompatible_test; -- 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; -- Check printing info about extended statistics by \dX create table stts_t1 (a int, b int); create statistics (ndistinct) on a, b from stts_t1; create statistics (ndistinct, dependencies) on a, b from stts_t1; create statistics (ndistinct, dependencies, mcv) on a, b from stts_t1; create table stts_t2 (a int, b int, c int); create statistics on b, c from stts_t2; create table stts_t3 (col1 int, col2 int, col3 int); create statistics stts_hoge on col1, col2, col3 from stts_t3; create schema stts_s1; create schema stts_s2; create statistics stts_s1.stts_foo on col1, col2 from stts_t3; create statistics stts_s2.stts_yama (dependencies, mcv) on col1, col3 from stts_t3; insert into stts_t1 select i,i from generate_series(1,100) i; analyze stts_t1; set search_path to public, stts_s1, stts_s2, tststats; \dX \dX stts_t* \dX *stts_hoge \dX+ \dX+ stts_t* \dX+ *stts_hoge \dX+ stts_s2.stts_yama create statistics (mcv) ON a, b, (a+b), (a-b) FROM stts_t1; create statistics (mcv) ON a, b, (a+b), (a-b) FROM stts_t1; create statistics (mcv) ON (a+b), (a-b) FROM stts_t1; \dX stts_t*expr* drop statistics stts_t1_a_b_expr_expr_stat; drop statistics stts_t1_a_b_expr_expr_stat1; drop statistics stts_t1_expr_expr_stat; set search_path to public, stts_s1; \dX create role regress_stats_ext nosuperuser; set role regress_stats_ext; \dX reset role; drop table stts_t1, stts_t2, stts_t3; drop schema stts_s1, stts_s2 cascade; drop user regress_stats_ext; reset search_path; -- 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 -- Check individual columns if we don't have table privilege SELECT * FROM tststats.priv_test_tbl WHERE a = 1 and tststats.priv_test_tbl.* > (1, 1) is not null; -- 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 -- privilege checks for pg_stats_ext and pg_stats_ext_exprs RESET SESSION AUTHORIZATION; CREATE TABLE stats_ext_tbl (id INT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, col TEXT); INSERT INTO stats_ext_tbl (col) VALUES ('secret'), ('secret'), ('very secret'); CREATE STATISTICS s_col ON id, col FROM stats_ext_tbl; CREATE STATISTICS s_expr ON mod(id, 2), lower(col) FROM stats_ext_tbl; ANALYZE stats_ext_tbl; -- unprivileged role should not have access SET SESSION AUTHORIZATION regress_stats_user1; SELECT statistics_name, most_common_vals FROM pg_stats_ext x WHERE tablename = 'stats_ext_tbl' ORDER BY ROW(x.*); SELECT statistics_name, most_common_vals FROM pg_stats_ext_exprs x WHERE tablename = 'stats_ext_tbl' ORDER BY ROW(x.*); -- give unprivileged role ownership of table RESET SESSION AUTHORIZATION; ALTER TABLE stats_ext_tbl OWNER TO regress_stats_user1; -- unprivileged role should now have access SET SESSION AUTHORIZATION regress_stats_user1; SELECT statistics_name, most_common_vals FROM pg_stats_ext x WHERE tablename = 'stats_ext_tbl' ORDER BY ROW(x.*); SELECT statistics_name, most_common_vals FROM pg_stats_ext_exprs x WHERE tablename = 'stats_ext_tbl' ORDER BY ROW(x.*); -- Tidy up DROP OPERATOR <<< (int, int); DROP FUNCTION op_leak(int, int); RESET SESSION AUTHORIZATION; DROP TABLE stats_ext_tbl; DROP SCHEMA tststats CASCADE; DROP USER regress_stats_user1; libpg_query-17-6.1.0/test/sql/postgres_regress/strings.sql000066400000000000000000000731101477334012600236660ustar00rootroot00000000000000-- -- 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 non-error-throwing API too SELECT pg_input_is_valid(E'\\xDeAdBeE', 'bytea'); SELECT * FROM pg_input_error_info(E'\\xDeAdBeE', 'bytea'); SELECT * FROM pg_input_error_info(E'\\xDeAdBeEx', 'bytea'); SELECT * FROM pg_input_error_info(E'foo\\99bar', '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' SIMILAR 'a#"(b_d)#"%' ESCAPE '#') AS "bcd"; -- obsolete SQL99 syntax SELECT SUBSTRING('abcdefg' FROM 'a#"(b_d)#"%' FOR '#') AS "bcd"; -- No match should return NULL SELECT SUBSTRING('abcdefg' SIMILAR '#"(b_d)#"%' ESCAPE '#') IS NULL AS "True"; -- Null inputs should return NULL SELECT SUBSTRING('abcdefg' SIMILAR '%' ESCAPE NULL) IS NULL AS "True"; SELECT SUBSTRING(NULL SIMILAR '%' ESCAPE '#') IS NULL AS "True"; SELECT SUBSTRING('abcdefg' SIMILAR NULL ESCAPE '#') IS NULL AS "True"; -- The first and last parts should act non-greedy SELECT SUBSTRING('abcdefg' SIMILAR 'a#"%#"g' ESCAPE '#') AS "bcdef"; SELECT SUBSTRING('abcdefg' SIMILAR 'a*#"%#"g*' ESCAPE '#') AS "abcdefg"; -- Vertical bar in any part affects only that part SELECT SUBSTRING('abcdefg' SIMILAR 'a|b#"%#"g' ESCAPE '#') AS "bcdef"; SELECT SUBSTRING('abcdefg' SIMILAR 'a#"%#"x|g' ESCAPE '#') AS "bcdef"; SELECT SUBSTRING('abcdefg' SIMILAR 'a#"%|ab#"g' ESCAPE '#') AS "bcdef"; -- Can't have more than two part separators SELECT SUBSTRING('abcdefg' SIMILAR 'a*#"%#"g*#"x' ESCAPE '#') AS "error"; -- Postgres extension: with 0 or 1 separator, assume parts 1 and 3 are empty SELECT SUBSTRING('abcdefg' SIMILAR 'a#"%g' ESCAPE '#') AS "bcdefg"; SELECT SUBSTRING('abcdefg' SIMILAR 'a%g' ESCAPE '#') 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 case where we have a match, but not a subexpression match SELECT SUBSTRING('foo' FROM 'foo(bar)?') IS NULL AS t; -- 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 backslash escapes in regexp_replace's replacement string SELECT regexp_replace('1112223333', E'(\\d{3})(\\d{3})(\\d{4})', E'(\\1) \\2-\\3'); SELECT regexp_replace('foobarrbazz', E'(.)\\1', E'X\\&Y', 'g'); SELECT regexp_replace('foobarrbazz', E'(.)\\1', E'X\\\\Y', 'g'); -- not an error, though perhaps it should be: SELECT regexp_replace('foobarrbazz', E'(.)\\1', E'X\\Y\\1Z\\'); 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'); -- extended regexp_replace tests SELECT regexp_replace('A PostgreSQL function', 'A|e|i|o|u', 'X', 1); SELECT regexp_replace('A PostgreSQL function', 'A|e|i|o|u', 'X', 1, 2); SELECT regexp_replace('A PostgreSQL function', 'a|e|i|o|u', 'X', 1, 0, 'i'); SELECT regexp_replace('A PostgreSQL function', 'a|e|i|o|u', 'X', 1, 1, 'i'); SELECT regexp_replace('A PostgreSQL function', 'a|e|i|o|u', 'X', 1, 2, 'i'); SELECT regexp_replace('A PostgreSQL function', 'a|e|i|o|u', 'X', 1, 3, 'i'); SELECT regexp_replace('A PostgreSQL function', 'a|e|i|o|u', 'X', 1, 9, 'i'); SELECT regexp_replace('A PostgreSQL function', 'A|e|i|o|u', 'X', 7, 0, 'i'); -- 'g' flag should be ignored when N is specified SELECT regexp_replace('A PostgreSQL function', 'a|e|i|o|u', 'X', 1, 1, 'g'); -- errors SELECT regexp_replace('A PostgreSQL function', 'a|e|i|o|u', 'X', -1, 0, 'i'); SELECT regexp_replace('A PostgreSQL function', 'a|e|i|o|u', 'X', 1, -1, 'i'); -- erroneous invocation of non-extended form SELECT regexp_replace('A PostgreSQL function', 'a|e|i|o|u', 'X', '1'); -- regexp_count tests SELECT regexp_count('123123123123123', '(12)3'); SELECT regexp_count('123123123123', '123', 1); SELECT regexp_count('123123123123', '123', 3); SELECT regexp_count('123123123123', '123', 33); SELECT regexp_count('ABCABCABCABC', 'Abc', 1, ''); SELECT regexp_count('ABCABCABCABC', 'Abc', 1, 'i'); -- errors SELECT regexp_count('123123123123', '123', 0); SELECT regexp_count('123123123123', '123', -3); -- regexp_like tests SELECT regexp_like('Steven', '^Ste(v|ph)en$'); SELECT regexp_like('a'||CHR(10)||'d', 'a.d', 'n'); SELECT regexp_like('a'||CHR(10)||'d', 'a.d', 's'); SELECT regexp_like('abc', ' a . c ', 'x'); SELECT regexp_like('abc', 'a.c', 'g'); -- error -- regexp_instr tests SELECT regexp_instr('abcdefghi', 'd.f'); SELECT regexp_instr('abcdefghi', 'd.q'); SELECT regexp_instr('abcabcabc', 'a.c'); SELECT regexp_instr('abcabcabc', 'a.c', 2); SELECT regexp_instr('abcabcabc', 'a.c', 1, 3); SELECT regexp_instr('abcabcabc', 'a.c', 1, 4); SELECT regexp_instr('abcabcabc', 'A.C', 1, 2, 0, 'i'); SELECT regexp_instr('1234567890', '(123)(4(56)(78))', 1, 1, 0, 'i', 0); SELECT regexp_instr('1234567890', '(123)(4(56)(78))', 1, 1, 0, 'i', 1); SELECT regexp_instr('1234567890', '(123)(4(56)(78))', 1, 1, 0, 'i', 2); SELECT regexp_instr('1234567890', '(123)(4(56)(78))', 1, 1, 0, 'i', 3); SELECT regexp_instr('1234567890', '(123)(4(56)(78))', 1, 1, 0, 'i', 4); SELECT regexp_instr('1234567890', '(123)(4(56)(78))', 1, 1, 0, 'i', 5); SELECT regexp_instr('1234567890', '(123)(4(56)(78))', 1, 1, 1, 'i', 0); SELECT regexp_instr('1234567890', '(123)(4(56)(78))', 1, 1, 1, 'i', 1); SELECT regexp_instr('1234567890', '(123)(4(56)(78))', 1, 1, 1, 'i', 2); SELECT regexp_instr('1234567890', '(123)(4(56)(78))', 1, 1, 1, 'i', 3); SELECT regexp_instr('1234567890', '(123)(4(56)(78))', 1, 1, 1, 'i', 4); SELECT regexp_instr('1234567890', '(123)(4(56)(78))', 1, 1, 1, 'i', 5); -- Check case where we have a match, but not a subexpression match SELECT regexp_instr('foo', 'foo(bar)?', 1, 1, 0, '', 1); -- errors SELECT regexp_instr('abcabcabc', 'a.c', 0, 1); SELECT regexp_instr('abcabcabc', 'a.c', 1, 0); SELECT regexp_instr('abcabcabc', 'a.c', 1, 1, -1); SELECT regexp_instr('abcabcabc', 'a.c', 1, 1, 2); SELECT regexp_instr('abcabcabc', 'a.c', 1, 1, 0, 'g'); SELECT regexp_instr('abcabcabc', 'a.c', 1, 1, 0, '', -1); -- regexp_substr tests SELECT regexp_substr('abcdefghi', 'd.f'); SELECT regexp_substr('abcdefghi', 'd.q') IS NULL AS t; SELECT regexp_substr('abcabcabc', 'a.c'); SELECT regexp_substr('abcabcabc', 'a.c', 2); SELECT regexp_substr('abcabcabc', 'a.c', 1, 3); SELECT regexp_substr('abcabcabc', 'a.c', 1, 4) IS NULL AS t; SELECT regexp_substr('abcabcabc', 'A.C', 1, 2, 'i'); SELECT regexp_substr('1234567890', '(123)(4(56)(78))', 1, 1, 'i', 0); SELECT regexp_substr('1234567890', '(123)(4(56)(78))', 1, 1, 'i', 1); SELECT regexp_substr('1234567890', '(123)(4(56)(78))', 1, 1, 'i', 2); SELECT regexp_substr('1234567890', '(123)(4(56)(78))', 1, 1, 'i', 3); SELECT regexp_substr('1234567890', '(123)(4(56)(78))', 1, 1, 'i', 4); SELECT regexp_substr('1234567890', '(123)(4(56)(78))', 1, 1, 'i', 5) IS NULL AS t; -- Check case where we have a match, but not a subexpression match SELECT regexp_substr('foo', 'foo(bar)?', 1, 1, '', 1) IS NULL AS t; -- errors SELECT regexp_substr('abcabcabc', 'a.c', 0, 1); SELECT regexp_substr('abcabcabc', 'a.c', 1, 0); SELECT regexp_substr('abcabcabc', 'a.c', 1, 1, 'g'); SELECT regexp_substr('abcabcabc', 'a.c', 1, 1, '', -1); -- 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"; SELECT 'abc'::name LIKE '_b_' AS "true"; SELECT 'abc'::name NOT LIKE '_b_' AS "false"; SELECT 'abc'::bytea LIKE '_b_'::bytea AS "true"; SELECT 'abc'::bytea NOT LIKE '_b_'::bytea AS "false"; -- 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"; SELECT 'a_c'::bytea LIKE 'a$__'::bytea ESCAPE '$'::bytea AS "true"; SELECT 'a_c'::bytea NOT LIKE 'a$__'::bytea ESCAPE '$'::bytea 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"; SELECT 'ABC'::name ILIKE '_b_' AS "true"; SELECT 'ABC'::name NOT ILIKE '_b_' 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('','@',1) AS "empty string"; select split_part('','@',-1) AS "empty string"; select split_part('joeuser@mydatabase','',1) AS "joeuser@mydatabase"; select split_part('joeuser@mydatabase','',2) AS "empty string"; select split_part('joeuser@mydatabase','',-1) AS "joeuser@mydatabase"; select split_part('joeuser@mydatabase','',-2) AS "empty string"; select split_part('joeuser@mydatabase','@',0) AS "an error"; select split_part('joeuser@mydatabase','@@',1) AS "joeuser@mydatabase"; select split_part('joeuser@mydatabase','@@',2) AS "empty string"; 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"; select split_part('joeuser@mydatabase','@',-1) AS "mydatabase"; select split_part('joeuser@mydatabase','@',-2) AS "joeuser"; select split_part('joeuser@mydatabase','@',-3) AS "empty string"; select split_part('@joeuser@mydatabase@','@',-2) AS "mydatabase"; -- -- test to_bin, to_oct, and to_hex -- select to_bin(-1234) AS "11111111111111111111101100101110"; select to_bin(-1234::bigint); select to_bin(256*256*256 - 1) AS "111111111111111111111111"; select to_bin(256::bigint*256::bigint*256::bigint*256::bigint - 1) AS "11111111111111111111111111111111"; select to_oct(-1234) AS "37777775456"; select to_oct(-1234::bigint) AS "1777777777777777775456"; select to_oct(256*256*256 - 1) AS "77777777"; select to_oct(256::bigint*256::bigint*256::bigint*256::bigint - 1) AS "37777777777"; select to_hex(-1234) AS "fffffb2e"; select to_hex(-1234::bigint) AS "fffffffffffffb2e"; select to_hex(256*256*256 - 1) AS "ffffff"; select to_hex(256::bigint*256::bigint*256::bigint*256::bigint - 1) AS "ffffffff"; -- -- 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; reset standard_conforming_strings; -- -- 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 translate('12345', '134', 'a'); 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 trim(leading E'\\000'::bytea from E'\\000Tom\\000'::bytea); SELECT trim(trailing 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'); SELECT bit_count('\x1234567890'::bytea); SELECT unistr('\0064at\+0000610'); SELECT unistr('d\u0061t\U000000610'); SELECT unistr('a\\b'); -- errors: SELECT unistr('wrong: \db99'); SELECT unistr('wrong: \db99\0061'); SELECT unistr('wrong: \+00db99\+000061'); SELECT unistr('wrong: \+2FFFFF'); SELECT unistr('wrong: \udb99\u0061'); SELECT unistr('wrong: \U0000db99\U00000061'); SELECT unistr('wrong: \U002FFFFF'); SELECT unistr('wrong: \xyz'); libpg_query-17-6.1.0/test/sql/postgres_regress/subscription.sql000066400000000000000000000330511477334012600247210ustar00rootroot00000000000000-- -- SUBSCRIPTION -- CREATE ROLE regress_subscription_user LOGIN SUPERUSER; CREATE ROLE regress_subscription_user2; CREATE ROLE regress_subscription_user3 IN ROLE pg_create_subscription; 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; -- Check if the subscription stats are created and stats_reset is updated -- by pg_stat_reset_subscription_stats(). SELECT subname, stats_reset IS NULL stats_reset_is_null FROM pg_stat_subscription_stats WHERE subname = 'regress_testsub'; SELECT pg_stat_reset_subscription_stats(oid) FROM pg_subscription WHERE subname = 'regress_testsub'; SELECT subname, stats_reset IS NULL stats_reset_is_null FROM pg_stat_subscription_stats WHERE subname = 'regress_testsub'; -- Reset the stats again and check if the new reset_stats is updated. SELECT stats_reset as prev_stats_reset FROM pg_stat_subscription_stats WHERE subname = 'regress_testsub' \gset SELECT pg_stat_reset_subscription_stats(oid) FROM pg_subscription WHERE subname = 'regress_testsub'; SELECT :'prev_stats_reset' < stats_reset FROM pg_stat_subscription_stats WHERE subname = 'regress_testsub'; -- 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, enabled = false, 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; -- fail - origin must be either none or any CREATE SUBSCRIPTION regress_testsub4 CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, connect = false, origin = foo); -- now it works CREATE SUBSCRIPTION regress_testsub4 CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, connect = false, origin = none); \dRs+ regress_testsub4 ALTER SUBSCRIPTION regress_testsub4 SET (origin = any); \dRs+ regress_testsub4 DROP SUBSCRIPTION regress_testsub3; DROP SUBSCRIPTION regress_testsub4; -- fail, connection string does not parse CREATE SUBSCRIPTION regress_testsub5 CONNECTION 'i_dont_exist=param' PUBLICATION testpub; -- fail, connection string parses, but doesn't work (and does so without -- connecting, so this is reliable and safe) CREATE SUBSCRIPTION regress_testsub5 CONNECTION 'port=-1' PUBLICATION testpub; -- fail - invalid connection string during ALTER 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'); ALTER SUBSCRIPTION regress_testsub SET (password_required = false); ALTER SUBSCRIPTION regress_testsub SET (run_as_owner = true); \dRs+ ALTER SUBSCRIPTION regress_testsub SET (password_required = true); ALTER SUBSCRIPTION regress_testsub SET (run_as_owner = false); -- fail ALTER SUBSCRIPTION regress_testsub SET (slot_name = ''); -- fail ALTER SUBSCRIPTION regress_doesnotexist CONNECTION 'dbname=regress_doesnotexist2'; ALTER SUBSCRIPTION regress_testsub SET (create_slot = false); -- ok ALTER SUBSCRIPTION regress_testsub SKIP (lsn = '0/12345'); \dRs+ -- ok - with lsn = NONE ALTER SUBSCRIPTION regress_testsub SKIP (lsn = NONE); -- fail ALTER SUBSCRIPTION regress_testsub SKIP (lsn = '0/0'); \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; -- ok, we're a superuser 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); -- now it works BEGIN; DROP SUBSCRIPTION regress_testsub; COMMIT; DROP SUBSCRIPTION IF EXISTS regress_testsub; DROP SUBSCRIPTION regress_testsub; -- fail -- fail - binary must be boolean CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false, binary = foo); -- now it works CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false, binary = true); \dRs+ ALTER SUBSCRIPTION regress_testsub SET (binary = false); ALTER SUBSCRIPTION regress_testsub SET (slot_name = NONE); \dRs+ DROP SUBSCRIPTION regress_testsub; -- fail - streaming must be boolean or 'parallel' CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false, streaming = foo); -- now it works CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false, streaming = true); \dRs+ ALTER SUBSCRIPTION regress_testsub SET (streaming = parallel); \dRs+ ALTER SUBSCRIPTION regress_testsub SET (streaming = false); ALTER SUBSCRIPTION regress_testsub SET (slot_name = NONE); \dRs+ -- fail - publication already exists ALTER SUBSCRIPTION regress_testsub ADD PUBLICATION testpub WITH (refresh = false); -- fail - publication used more than once ALTER SUBSCRIPTION regress_testsub ADD PUBLICATION testpub1, testpub1 WITH (refresh = false); -- ok - add two publications into subscription ALTER SUBSCRIPTION regress_testsub ADD PUBLICATION testpub1, testpub2 WITH (refresh = false); -- fail - publications already exist ALTER SUBSCRIPTION regress_testsub ADD PUBLICATION testpub1, testpub2 WITH (refresh = false); \dRs+ -- fail - publication used more than once ALTER SUBSCRIPTION regress_testsub DROP PUBLICATION testpub1, testpub1 WITH (refresh = false); -- fail - all publications are deleted ALTER SUBSCRIPTION regress_testsub DROP PUBLICATION testpub, testpub1, testpub2 WITH (refresh = false); -- fail - publication does not exist in subscription ALTER SUBSCRIPTION regress_testsub DROP PUBLICATION testpub3 WITH (refresh = false); -- ok - delete publications ALTER SUBSCRIPTION regress_testsub DROP PUBLICATION testpub1, testpub2 WITH (refresh = false); \dRs+ DROP SUBSCRIPTION regress_testsub; CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION mypub WITH (connect = false, create_slot = false, copy_data = false); ALTER SUBSCRIPTION regress_testsub ENABLE; -- fail - ALTER SUBSCRIPTION with refresh is not allowed in a transaction -- block or function BEGIN; ALTER SUBSCRIPTION regress_testsub SET PUBLICATION mypub WITH (refresh = true); END; BEGIN; ALTER SUBSCRIPTION regress_testsub REFRESH PUBLICATION; END; CREATE FUNCTION func() RETURNS VOID AS $$ ALTER SUBSCRIPTION regress_testsub SET PUBLICATION mypub WITH (refresh = true) $$ LANGUAGE SQL; SELECT func(); ALTER SUBSCRIPTION regress_testsub DISABLE; ALTER SUBSCRIPTION regress_testsub SET (slot_name = NONE); DROP SUBSCRIPTION regress_testsub; DROP FUNCTION func; -- fail - two_phase must be boolean CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false, two_phase = foo); -- now it works CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false, two_phase = true); \dRs+ --fail - alter of two_phase option not supported. ALTER SUBSCRIPTION regress_testsub SET (two_phase = false); -- but can alter streaming when two_phase enabled ALTER SUBSCRIPTION regress_testsub SET (streaming = true); \dRs+ ALTER SUBSCRIPTION regress_testsub SET (slot_name = NONE); DROP SUBSCRIPTION regress_testsub; -- two_phase and streaming are compatible. CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false, streaming = true, two_phase = true); \dRs+ ALTER SUBSCRIPTION regress_testsub SET (slot_name = NONE); DROP SUBSCRIPTION regress_testsub; -- fail - disable_on_error must be boolean CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false, disable_on_error = foo); -- now it works CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false, disable_on_error = false); \dRs+ ALTER SUBSCRIPTION regress_testsub SET (disable_on_error = true); \dRs+ ALTER SUBSCRIPTION regress_testsub SET (slot_name = NONE); DROP SUBSCRIPTION regress_testsub; -- let's do some tests with pg_create_subscription rather than superuser SET SESSION AUTHORIZATION regress_subscription_user3; -- fail, not enough privileges CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false); -- fail, must specify password RESET SESSION AUTHORIZATION; GRANT CREATE ON DATABASE REGRESSION TO regress_subscription_user3; SET SESSION AUTHORIZATION regress_subscription_user3; CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false); -- fail, can't set password_required=false RESET SESSION AUTHORIZATION; GRANT CREATE ON DATABASE REGRESSION TO regress_subscription_user3; SET SESSION AUTHORIZATION regress_subscription_user3; CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false, password_required = false); -- ok RESET SESSION AUTHORIZATION; GRANT CREATE ON DATABASE REGRESSION TO regress_subscription_user3; SET SESSION AUTHORIZATION regress_subscription_user3; CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist password=regress_fakepassword' PUBLICATION testpub WITH (connect = false); -- we cannot give the subscription away to some random user ALTER SUBSCRIPTION regress_testsub OWNER TO regress_subscription_user; -- but we can rename the subscription we just created ALTER SUBSCRIPTION regress_testsub RENAME TO regress_testsub2; -- ok, even after losing pg_create_subscription we can still rename it RESET SESSION AUTHORIZATION; REVOKE pg_create_subscription FROM regress_subscription_user3; SET SESSION AUTHORIZATION regress_subscription_user3; ALTER SUBSCRIPTION regress_testsub2 RENAME TO regress_testsub; -- fail, after losing CREATE on the database we can't rename it any more RESET SESSION AUTHORIZATION; REVOKE CREATE ON DATABASE REGRESSION FROM regress_subscription_user3; SET SESSION AUTHORIZATION regress_subscription_user3; ALTER SUBSCRIPTION regress_testsub RENAME TO regress_testsub2; -- fail - cannot do ALTER SUBSCRIPTION SET (failover) inside transaction block BEGIN; ALTER SUBSCRIPTION regress_testsub SET (failover); COMMIT; -- ok, owning it is enough for this stuff ALTER SUBSCRIPTION regress_testsub SET (slot_name = NONE); DROP SUBSCRIPTION regress_testsub; RESET SESSION AUTHORIZATION; DROP ROLE regress_subscription_user; DROP ROLE regress_subscription_user2; DROP ROLE regress_subscription_user3; DROP ROLE regress_subscription_user_dummy; libpg_query-17-6.1.0/test/sql/postgres_regress/subselect.sql000066400000000000000000000741041477334012600241720ustar00rootroot00000000000000-- -- 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 * FROM ((SELECT 1 AS x)), ((SELECT * FROM ((SELECT 2 AS y)))); (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 * FROM SUBSELECT_TBL; -- Uncorrelated subselects SELECT f1 AS "Constant Select" FROM SUBSELECT_TBL WHERE f1 IN (SELECT 1); SELECT f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL); SELECT f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE f2 IN (SELECT f1 FROM SUBSELECT_TBL)); SELECT 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 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 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 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 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); -- Check ROWCOMPARE cases, both correlated and not EXPLAIN (VERBOSE, COSTS OFF) SELECT ROW(1, 2) = (SELECT f1, f2) AS eq FROM SUBSELECT_TBL; SELECT ROW(1, 2) = (SELECT f1, f2) AS eq FROM SUBSELECT_TBL; EXPLAIN (VERBOSE, COSTS OFF) SELECT ROW(1, 2) = (SELECT 3, 4) AS eq FROM SUBSELECT_TBL; SELECT ROW(1, 2) = (SELECT 3, 4) AS eq FROM SUBSELECT_TBL; SELECT ROW(1, 2) = (SELECT f1, f2 FROM SUBSELECT_TBL); -- error -- Subselects without aliases SELECT count FROM (SELECT COUNT(DISTINCT name) FROM road); SELECT COUNT(*) FROM (SELECT DISTINCT name FROM road); SELECT * FROM (SELECT * FROM int4_tbl), (VALUES (123456)) WHERE f1 = column1; CREATE VIEW view_unnamed_ss AS SELECT * FROM (SELECT * FROM (SELECT abs(f1) AS a1 FROM int4_tbl)), (SELECT * FROM int8_tbl) WHERE a1 < 10 AND q1 > a1 ORDER BY q1, q2; SELECT * FROM view_unnamed_ss; \sv view_unnamed_ss DROP VIEW view_unnamed_ss; -- Test matching of locking clause to correct alias CREATE VIEW view_unnamed_ss_locking AS SELECT * FROM (SELECT * FROM int4_tbl), int8_tbl AS unnamed_subquery WHERE f1 = q1 FOR UPDATE OF unnamed_subquery; \sv view_unnamed_ss_locking DROP VIEW view_unnamed_ss_locking; -- -- Use some existing tables in the regression test -- SELECT 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 that we don't try to hash nested records (bug #17363) -- (Hashing could be supported, but for now we don't) -- explain (verbose, costs off) select row(row(row(1))) = any (select row(row(1))); select row(row(row(1))) = any (select row(row(1))); -- -- 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 resolution of hashed vs non-hashed implementation of EXISTS subplan -- explain (costs off) select count(*) from tenk1 t where (exists(select 1 from tenk1 k where k.unique1 = t.unique2) or ten < 0); select count(*) from tenk1 t where (exists(select 1 from tenk1 k where k.unique1 = t.unique2) or ten < 0); explain (costs off) select count(*) from tenk1 t where (exists(select 1 from tenk1 k where k.unique1 = t.unique2) or ten < 0) and thousand = 1; select count(*) from tenk1 t where (exists(select 1 from tenk1 k where k.unique1 = t.unique2) or ten < 0) and thousand = 1; -- It's possible for the same EXISTS to get resolved both ways create temp table exists_tbl (c1 int, c2 int, c3 int) partition by list (c1); create temp table exists_tbl_null partition of exists_tbl for values in (null); create temp table exists_tbl_def partition of exists_tbl default; insert into exists_tbl select x, x/2, x+1 from generate_series(0,10) x; analyze exists_tbl; explain (costs off) select * from exists_tbl t1 where (exists(select 1 from exists_tbl t2 where t1.c1 = t2.c2) or c3 < 0); select * from exists_tbl t1 where (exists(select 1 from exists_tbl t2 where t1.c1 = t2.c2) or c3 < 0); -- -- 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; -- -- Verify that we correctly flatten cases involving a subquery output -- expression that doesn't need to be wrapped in a PlaceHolderVar -- explain (costs off) select tname, attname from ( select relname::information_schema.sql_identifier as tname, * from (select * from pg_class c) ss1) ss2 right join pg_attribute a on a.attrelid = ss2.oid where tname = 'tenk1' and attnum = 1; select tname, attname from ( select relname::information_schema.sql_identifier as tname, * from (select * from pg_class c) ss1) ss2 right join pg_attribute a on a.attrelid = ss2.oid where tname = 'tenk1' and attnum = 1; -- Check behavior when there's a lateral reference in the output expression explain (verbose, costs off) select t1.ten, sum(x) from tenk1 t1 left join lateral ( select t1.ten + t2.ten as x, t2.fivethous from tenk1 t2 ) ss on t1.unique1 = ss.fivethous group by t1.ten order by t1.ten; select t1.ten, sum(x) from tenk1 t1 left join lateral ( select t1.ten + t2.ten as x, t2.fivethous from tenk1 t2 ) ss on t1.unique1 = ss.fivethous group by t1.ten order by t1.ten; explain (verbose, costs off) select t1.q1, x from int8_tbl t1 left join (int8_tbl t2 left join lateral (select t2.q1+t3.q1 as x, * from int8_tbl t3) t3 on t2.q2 = t3.q2) on t1.q2 = t2.q2 order by 1, 2; select t1.q1, x from int8_tbl t1 left join (int8_tbl t2 left join lateral (select t2.q1+t3.q1 as x, * from int8_tbl t3) t3 on t2.q2 = t3.q2) on t1.q2 = t2.q2 order by 1, 2; -- -- 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 correct 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; -- Pull up direct-correlated ANY_SUBLINKs explain (costs off) select * from tenk1 A where hundred in (select hundred from tenk2 B where B.odd = A.odd); explain (costs off) select * from tenk1 A where exists (select 1 from tenk2 B where A.hundred in (select C.hundred FROM tenk2 C WHERE c.odd = b.odd)); -- we should only try to pull up the sublink into RHS of a left join -- but a.hundred is not available. explain (costs off) SELECT * FROM tenk1 A LEFT JOIN tenk2 B ON A.hundred in (SELECT c.hundred FROM tenk2 C WHERE c.odd = b.odd); -- we should only try to pull up the sublink into RHS of a left join -- but a.odd is not available for this. explain (costs off) SELECT * FROM tenk1 A LEFT JOIN tenk2 B ON B.hundred in (SELECT c.hundred FROM tenk2 C WHERE c.odd = a.odd); -- should be able to pull up since all the references are available. explain (costs off) SELECT * FROM tenk1 A LEFT JOIN tenk2 B ON B.hundred in (SELECT c.hundred FROM tenk2 C WHERE c.odd = b.odd); -- we can pull up the sublink into the inner JoinExpr. explain (costs off) SELECT * FROM tenk1 A INNER JOIN tenk2 B ON A.hundred in (SELECT c.hundred FROM tenk2 C WHERE c.odd = b.odd) WHERE a.thousand < 750; -- we can pull up the aggregate sublink into RHS of a left join. explain (costs off) SELECT * FROM tenk1 A LEFT JOIN tenk2 B ON B.hundred in (SELECT min(c.hundred) FROM tenk2 C WHERE c.odd = b.odd); libpg_query-17-6.1.0/test/sql/postgres_regress/sysviews.sql000066400000000000000000000075321477334012600240760ustar00rootroot00000000000000-- -- 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; -- The entire output of pg_backend_memory_contexts is not stable, -- we test only the existence and basic condition of TopMemoryContext. select name, ident, parent, level, total_bytes >= free_bytes from pg_backend_memory_contexts where level = 0; -- We can exercise some MemoryContext type stats functions. Most of the -- column values are too platform-dependant to display. -- Ensure stats from the bump allocator look sane. Bump isn't a commonly -- used context, but it is used in tuplesort.c, so open a cursor to keep -- the tuplesort alive long enough for us to query the context stats. begin; declare cur cursor for select left(a,10), b from (values(repeat('a', 512 * 1024),1),(repeat('b', 512),2)) v(a,b) order by v.a desc; fetch 1 from cur; select name, parent, total_bytes > 0, total_nblocks, free_bytes > 0, free_chunks from pg_backend_memory_contexts where name = 'Caller tuples'; rollback; -- 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, with no errors. select count(*) > 0 as ok, count(*) FILTER (WHERE error IS NOT NULL) = 0 AS no_err from pg_hba_file_rules; -- There may be no rules, and there should be no errors. select count(*) >= 0 as ok, count(*) FILTER (WHERE error IS NOT NULL) = 0 AS no_err from pg_ident_file_mappings; -- 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; -- There will surely be at least one SLRU cache select count(*) > 0 as ok from pg_stat_slru; -- There must be only one record select count(*) = 1 as ok from pg_stat_wal; -- 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%'; -- There are always wait event descriptions for various types. InjectionPoint -- may be present or absent, depending on history since last postmaster start. select type, count(*) > 0 as ok FROM pg_wait_events where type <> 'InjectionPoint' group by type order by type COLLATE "C"; -- 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-17-6.1.0/test/sql/postgres_regress/tablesample.sql000066400000000000000000000102541477334012600244660ustar00rootroot00000000000000CREATE 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 SCROLL 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-17-6.1.0/test/sql/postgres_regress/tablespace.sql000066400000000000000000000472771477334012600243170ustar00rootroot00000000000000-- relative tablespace locations are not allowed CREATE TABLESPACE regress_tblspace LOCATION 'relative'; -- fail -- empty tablespace locations are not usually allowed CREATE TABLESPACE regress_tblspace LOCATION ''; -- fail -- as a special developer-only option to allow us to use tablespaces -- with streaming replication on the same server, an empty location -- can be allowed as a way to say that the tablespace should be created -- as a directory in pg_tblspc, rather than being a symlink SET allow_in_place_tablespaces = true; -- create a tablespace using WITH clause CREATE TABLESPACE regress_tblspacewith LOCATION '' WITH (some_nonexistent_parameter = true); -- fail CREATE TABLESPACE regress_tblspacewith LOCATION '' WITH (random_page_cost = 3.0); -- ok -- check to see the parameter was used SELECT spcoptions FROM pg_tablespace WHERE spcname = 'regress_tblspacewith'; -- drop the tablespace so we can re-use the location DROP TABLESPACE regress_tblspacewith; -- This returns a relative path as of an effect of allow_in_place_tablespaces, -- masking the tablespace OID used in the path name. SELECT regexp_replace(pg_tablespace_location(oid), '(pg_tblspc)/(\d+)', '\1/NNN') FROM pg_tablespace WHERE spcname = 'regress_tblspace'; -- try setting and resetting some properties for the new tablespace ALTER TABLESPACE regress_tblspace SET (random_page_cost = 1.0, seq_page_cost = 1.1); ALTER TABLESPACE regress_tblspace SET (some_nonexistent_parameter = true); -- fail ALTER TABLESPACE regress_tblspace RESET (random_page_cost = 2.0); -- fail ALTER TABLESPACE regress_tblspace RESET (random_page_cost, effective_io_concurrency); -- ok -- REINDEX (TABLESPACE) -- catalogs and system tablespaces -- system catalog, fail REINDEX (TABLESPACE regress_tblspace) TABLE pg_am; REINDEX (TABLESPACE regress_tblspace) TABLE CONCURRENTLY pg_am; -- shared catalog, fail REINDEX (TABLESPACE regress_tblspace) TABLE pg_authid; REINDEX (TABLESPACE regress_tblspace) TABLE CONCURRENTLY pg_authid; -- toast relations, fail REINDEX (TABLESPACE regress_tblspace) INDEX pg_toast.pg_toast_1260_index; REINDEX (TABLESPACE regress_tblspace) INDEX CONCURRENTLY pg_toast.pg_toast_1260_index; REINDEX (TABLESPACE regress_tblspace) TABLE pg_toast.pg_toast_1260; REINDEX (TABLESPACE regress_tblspace) TABLE CONCURRENTLY pg_toast.pg_toast_1260; -- system catalog, fail REINDEX (TABLESPACE pg_global) TABLE pg_authid; REINDEX (TABLESPACE pg_global) TABLE CONCURRENTLY pg_authid; -- table with toast relation CREATE TABLE regress_tblspace_test_tbl (num1 bigint, num2 double precision, t text); INSERT INTO regress_tblspace_test_tbl (num1, num2, t) SELECT round(random()*100), random(), 'text' FROM generate_series(1, 10) s(i); CREATE INDEX regress_tblspace_test_tbl_idx ON regress_tblspace_test_tbl (num1); -- move to global tablespace, fail REINDEX (TABLESPACE pg_global) INDEX regress_tblspace_test_tbl_idx; REINDEX (TABLESPACE pg_global) INDEX CONCURRENTLY regress_tblspace_test_tbl_idx; -- check transactional behavior of REINDEX (TABLESPACE) BEGIN; REINDEX (TABLESPACE regress_tblspace) INDEX regress_tblspace_test_tbl_idx; REINDEX (TABLESPACE regress_tblspace) TABLE regress_tblspace_test_tbl; ROLLBACK; -- no relation moved to the new tablespace SELECT c.relname FROM pg_class c, pg_tablespace s WHERE c.reltablespace = s.oid AND s.spcname = 'regress_tblspace'; -- check that all indexes are moved to a new tablespace with different -- relfilenode. -- Save first the existing relfilenode for the toast and main relations. SELECT relfilenode as main_filenode FROM pg_class WHERE relname = 'regress_tblspace_test_tbl_idx' \gset SELECT relfilenode as toast_filenode FROM pg_class WHERE oid = (SELECT i.indexrelid FROM pg_class c, pg_index i WHERE i.indrelid = c.reltoastrelid AND c.relname = 'regress_tblspace_test_tbl') \gset REINDEX (TABLESPACE regress_tblspace) TABLE regress_tblspace_test_tbl; SELECT c.relname FROM pg_class c, pg_tablespace s WHERE c.reltablespace = s.oid AND s.spcname = 'regress_tblspace' ORDER BY c.relname; ALTER TABLE regress_tblspace_test_tbl SET TABLESPACE regress_tblspace; ALTER TABLE regress_tblspace_test_tbl SET TABLESPACE pg_default; SELECT c.relname FROM pg_class c, pg_tablespace s WHERE c.reltablespace = s.oid AND s.spcname = 'regress_tblspace' ORDER BY c.relname; -- Move back to the default tablespace. ALTER INDEX regress_tblspace_test_tbl_idx SET TABLESPACE pg_default; SELECT c.relname FROM pg_class c, pg_tablespace s WHERE c.reltablespace = s.oid AND s.spcname = 'regress_tblspace' ORDER BY c.relname; REINDEX (TABLESPACE regress_tblspace, CONCURRENTLY) TABLE regress_tblspace_test_tbl; SELECT c.relname FROM pg_class c, pg_tablespace s WHERE c.reltablespace = s.oid AND s.spcname = 'regress_tblspace' ORDER BY c.relname; SELECT relfilenode = :main_filenode AS main_same FROM pg_class WHERE relname = 'regress_tblspace_test_tbl_idx'; SELECT relfilenode = :toast_filenode as toast_same FROM pg_class WHERE oid = (SELECT i.indexrelid FROM pg_class c, pg_index i WHERE i.indrelid = c.reltoastrelid AND c.relname = 'regress_tblspace_test_tbl'); DROP TABLE regress_tblspace_test_tbl; -- REINDEX (TABLESPACE) with partitions -- Create a partition tree and check the set of relations reindexed -- with their new tablespace. CREATE TABLE tbspace_reindex_part (c1 int, c2 int) PARTITION BY RANGE (c1); CREATE TABLE tbspace_reindex_part_0 PARTITION OF tbspace_reindex_part FOR VALUES FROM (0) TO (10) PARTITION BY list (c2); CREATE TABLE tbspace_reindex_part_0_1 PARTITION OF tbspace_reindex_part_0 FOR VALUES IN (1); CREATE TABLE tbspace_reindex_part_0_2 PARTITION OF tbspace_reindex_part_0 FOR VALUES IN (2); -- This partitioned table will have no partitions. CREATE TABLE tbspace_reindex_part_10 PARTITION OF tbspace_reindex_part FOR VALUES FROM (10) TO (20) PARTITION BY list (c2); -- Create some partitioned indexes CREATE INDEX tbspace_reindex_part_index ON ONLY tbspace_reindex_part (c1); CREATE INDEX tbspace_reindex_part_index_0 ON ONLY tbspace_reindex_part_0 (c1); ALTER INDEX tbspace_reindex_part_index ATTACH PARTITION tbspace_reindex_part_index_0; -- This partitioned index will have no partitions. CREATE INDEX tbspace_reindex_part_index_10 ON ONLY tbspace_reindex_part_10 (c1); ALTER INDEX tbspace_reindex_part_index ATTACH PARTITION tbspace_reindex_part_index_10; CREATE INDEX tbspace_reindex_part_index_0_1 ON ONLY tbspace_reindex_part_0_1 (c1); ALTER INDEX tbspace_reindex_part_index_0 ATTACH PARTITION tbspace_reindex_part_index_0_1; CREATE INDEX tbspace_reindex_part_index_0_2 ON ONLY tbspace_reindex_part_0_2 (c1); ALTER INDEX tbspace_reindex_part_index_0 ATTACH PARTITION tbspace_reindex_part_index_0_2; SELECT relid, parentrelid, level FROM pg_partition_tree('tbspace_reindex_part_index') ORDER BY relid, level; -- Track the original tablespace, relfilenode and OID of each index -- in the tree. CREATE TEMP TABLE reindex_temp_before AS SELECT oid, relname, relfilenode, reltablespace FROM pg_class WHERE relname ~ 'tbspace_reindex_part_index'; REINDEX (TABLESPACE regress_tblspace, CONCURRENTLY) TABLE tbspace_reindex_part; -- REINDEX CONCURRENTLY changes the OID of the old relation, hence a check -- based on the relation name below. SELECT b.relname, CASE WHEN a.relfilenode = b.relfilenode THEN 'relfilenode is unchanged' ELSE 'relfilenode has changed' END AS filenode, CASE WHEN a.reltablespace = b.reltablespace THEN 'reltablespace is unchanged' ELSE 'reltablespace has changed' END AS tbspace FROM reindex_temp_before b JOIN pg_class a ON b.relname = a.relname ORDER BY 1; DROP TABLE tbspace_reindex_part; -- create a schema we can use CREATE SCHEMA testschema; -- try a table CREATE TABLE testschema.foo (i int) TABLESPACE regress_tblspace; SELECT relname, spcname FROM pg_catalog.pg_tablespace t, pg_catalog.pg_class c where c.reltablespace = t.oid AND c.relname = 'foo'; INSERT INTO testschema.foo VALUES(1); INSERT INTO testschema.foo VALUES(2); -- tables from dynamic sources CREATE TABLE testschema.asselect TABLESPACE regress_tblspace AS SELECT 1; SELECT relname, spcname FROM pg_catalog.pg_tablespace t, pg_catalog.pg_class c where c.reltablespace = t.oid AND c.relname = 'asselect'; PREPARE selectsource(int) AS SELECT $1; CREATE TABLE testschema.asexecute TABLESPACE regress_tblspace AS EXECUTE selectsource(2); SELECT relname, spcname FROM pg_catalog.pg_tablespace t, pg_catalog.pg_class c where c.reltablespace = t.oid AND c.relname = 'asexecute'; -- index CREATE INDEX foo_idx on testschema.foo(i) TABLESPACE regress_tblspace; SELECT relname, spcname FROM pg_catalog.pg_tablespace t, pg_catalog.pg_class c where c.reltablespace = t.oid AND c.relname = 'foo_idx'; -- check \d output \d testschema.foo \d testschema.foo_idx -- -- partitioned table -- CREATE TABLE testschema.part (a int) PARTITION BY LIST (a); SET default_tablespace TO pg_global; CREATE TABLE testschema.part_1 PARTITION OF testschema.part FOR VALUES IN (1); RESET default_tablespace; CREATE TABLE testschema.part_1 PARTITION OF testschema.part FOR VALUES IN (1); SET default_tablespace TO regress_tblspace; CREATE TABLE testschema.part_2 PARTITION OF testschema.part FOR VALUES IN (2); SET default_tablespace TO pg_global; CREATE TABLE testschema.part_3 PARTITION OF testschema.part FOR VALUES IN (3); ALTER TABLE testschema.part SET TABLESPACE regress_tblspace; CREATE TABLE testschema.part_3 PARTITION OF testschema.part FOR VALUES IN (3); CREATE TABLE testschema.part_4 PARTITION OF testschema.part FOR VALUES IN (4) TABLESPACE pg_default; CREATE TABLE testschema.part_56 PARTITION OF testschema.part FOR VALUES IN (5, 6) PARTITION BY LIST (a); ALTER TABLE testschema.part SET TABLESPACE pg_default; CREATE TABLE testschema.part_78 PARTITION OF testschema.part FOR VALUES IN (7, 8) PARTITION BY LIST (a); CREATE TABLE testschema.part_910 PARTITION OF testschema.part FOR VALUES IN (9, 10) PARTITION BY LIST (a) TABLESPACE regress_tblspace; RESET default_tablespace; CREATE TABLE testschema.part_78 PARTITION OF testschema.part FOR VALUES IN (7, 8) PARTITION BY LIST (a); SELECT relname, spcname FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON (c.relnamespace = n.oid) LEFT JOIN pg_catalog.pg_tablespace t ON c.reltablespace = t.oid where c.relname LIKE 'part%' AND n.nspname = 'testschema' order by relname; RESET default_tablespace; DROP TABLE testschema.part; -- partitioned index CREATE TABLE testschema.part (a int) PARTITION BY LIST (a); CREATE TABLE testschema.part1 PARTITION OF testschema.part FOR VALUES IN (1); CREATE INDEX part_a_idx ON testschema.part (a) TABLESPACE regress_tblspace; CREATE TABLE testschema.part2 PARTITION OF testschema.part FOR VALUES IN (2); SELECT relname, spcname FROM pg_catalog.pg_tablespace t, pg_catalog.pg_class c where c.reltablespace = t.oid AND c.relname LIKE 'part%_idx' ORDER BY relname; \d testschema.part \d+ testschema.part \d testschema.part1 \d+ testschema.part1 \d testschema.part_a_idx \d+ testschema.part_a_idx -- partitioned rels cannot specify the default tablespace. These fail: CREATE TABLE testschema.dflt (a int PRIMARY KEY) PARTITION BY LIST (a) TABLESPACE pg_default; CREATE TABLE testschema.dflt (a int PRIMARY KEY USING INDEX TABLESPACE pg_default) PARTITION BY LIST (a); SET default_tablespace TO 'pg_default'; CREATE TABLE testschema.dflt (a int PRIMARY KEY) PARTITION BY LIST (a) TABLESPACE regress_tblspace; CREATE TABLE testschema.dflt (a int PRIMARY KEY USING INDEX TABLESPACE regress_tblspace) PARTITION BY LIST (a); -- but these work: CREATE TABLE testschema.dflt (a int PRIMARY KEY USING INDEX TABLESPACE regress_tblspace) PARTITION BY LIST (a) TABLESPACE regress_tblspace; SET default_tablespace TO ''; CREATE TABLE testschema.dflt2 (a int PRIMARY KEY) PARTITION BY LIST (a); DROP TABLE testschema.dflt, testschema.dflt2; -- check that default_tablespace doesn't affect ALTER TABLE index rebuilds CREATE TABLE testschema.test_default_tab(id bigint) TABLESPACE regress_tblspace; INSERT INTO testschema.test_default_tab VALUES (1); CREATE INDEX test_index1 on testschema.test_default_tab (id); CREATE INDEX test_index2 on testschema.test_default_tab (id) TABLESPACE regress_tblspace; ALTER TABLE testschema.test_default_tab ADD CONSTRAINT test_index3 PRIMARY KEY (id); ALTER TABLE testschema.test_default_tab ADD CONSTRAINT test_index4 UNIQUE (id) USING INDEX TABLESPACE regress_tblspace; \d testschema.test_index1 \d testschema.test_index2 \d testschema.test_index3 \d testschema.test_index4 -- use a custom tablespace for default_tablespace SET default_tablespace TO regress_tblspace; -- tablespace should not change if no rewrite ALTER TABLE testschema.test_default_tab ALTER id TYPE bigint; \d testschema.test_index1 \d testschema.test_index2 \d testschema.test_index3 \d testschema.test_index4 SELECT * FROM testschema.test_default_tab; -- tablespace should not change even if there is an index rewrite ALTER TABLE testschema.test_default_tab ALTER id TYPE int; \d testschema.test_index1 \d testschema.test_index2 \d testschema.test_index3 \d testschema.test_index4 SELECT * FROM testschema.test_default_tab; -- now use the default tablespace for default_tablespace SET default_tablespace TO ''; -- tablespace should not change if no rewrite ALTER TABLE testschema.test_default_tab ALTER id TYPE int; \d testschema.test_index1 \d testschema.test_index2 \d testschema.test_index3 \d testschema.test_index4 -- tablespace should not change even if there is an index rewrite ALTER TABLE testschema.test_default_tab ALTER id TYPE bigint; \d testschema.test_index1 \d testschema.test_index2 \d testschema.test_index3 \d testschema.test_index4 DROP TABLE testschema.test_default_tab; -- check that default_tablespace doesn't affect ALTER TABLE index rebuilds -- (this time with a partitioned table) CREATE TABLE testschema.test_default_tab_p(id bigint, val bigint) PARTITION BY LIST (id) TABLESPACE regress_tblspace; CREATE TABLE testschema.test_default_tab_p1 PARTITION OF testschema.test_default_tab_p FOR VALUES IN (1); INSERT INTO testschema.test_default_tab_p VALUES (1); CREATE INDEX test_index1 on testschema.test_default_tab_p (val); CREATE INDEX test_index2 on testschema.test_default_tab_p (val) TABLESPACE regress_tblspace; ALTER TABLE testschema.test_default_tab_p ADD CONSTRAINT test_index3 PRIMARY KEY (id); ALTER TABLE testschema.test_default_tab_p ADD CONSTRAINT test_index4 UNIQUE (id) USING INDEX TABLESPACE regress_tblspace; \d testschema.test_index1 \d testschema.test_index2 \d testschema.test_index3 \d testschema.test_index4 -- use a custom tablespace for default_tablespace SET default_tablespace TO regress_tblspace; -- tablespace should not change if no rewrite ALTER TABLE testschema.test_default_tab_p ALTER val TYPE bigint; \d testschema.test_index1 \d testschema.test_index2 \d testschema.test_index3 \d testschema.test_index4 SELECT * FROM testschema.test_default_tab_p; -- tablespace should not change even if there is an index rewrite ALTER TABLE testschema.test_default_tab_p ALTER val TYPE int; \d testschema.test_index1 \d testschema.test_index2 \d testschema.test_index3 \d testschema.test_index4 SELECT * FROM testschema.test_default_tab_p; -- now use the default tablespace for default_tablespace SET default_tablespace TO ''; -- tablespace should not change if no rewrite ALTER TABLE testschema.test_default_tab_p ALTER val TYPE int; \d testschema.test_index1 \d testschema.test_index2 \d testschema.test_index3 \d testschema.test_index4 -- tablespace should not change even if there is an index rewrite ALTER TABLE testschema.test_default_tab_p ALTER val TYPE bigint; \d testschema.test_index1 \d testschema.test_index2 \d testschema.test_index3 \d testschema.test_index4 DROP TABLE testschema.test_default_tab_p; -- check that default_tablespace affects index additions in ALTER TABLE CREATE TABLE testschema.test_tab(id int) TABLESPACE regress_tblspace; INSERT INTO testschema.test_tab VALUES (1); SET default_tablespace TO regress_tblspace; ALTER TABLE testschema.test_tab ADD CONSTRAINT test_tab_unique UNIQUE (id); SET default_tablespace TO ''; ALTER TABLE testschema.test_tab ADD CONSTRAINT test_tab_pkey PRIMARY KEY (id); \d testschema.test_tab_unique \d testschema.test_tab_pkey SELECT * FROM testschema.test_tab; DROP TABLE testschema.test_tab; -- check that default_tablespace is handled correctly by multi-command -- ALTER TABLE that includes a tablespace-preserving rewrite CREATE TABLE testschema.test_tab(a int, b int, c int); SET default_tablespace TO regress_tblspace; ALTER TABLE testschema.test_tab ADD CONSTRAINT test_tab_unique UNIQUE (a); CREATE INDEX test_tab_a_idx ON testschema.test_tab (a); SET default_tablespace TO ''; CREATE INDEX test_tab_b_idx ON testschema.test_tab (b); \d testschema.test_tab_unique \d testschema.test_tab_a_idx \d testschema.test_tab_b_idx ALTER TABLE testschema.test_tab ALTER b TYPE bigint, ADD UNIQUE (c); \d testschema.test_tab_unique \d testschema.test_tab_a_idx \d testschema.test_tab_b_idx DROP TABLE testschema.test_tab; -- let's try moving a table from one place to another CREATE TABLE testschema.atable AS VALUES (1), (2); CREATE UNIQUE INDEX anindex ON testschema.atable(column1); ALTER TABLE testschema.atable SET TABLESPACE regress_tblspace; ALTER INDEX testschema.anindex SET TABLESPACE regress_tblspace; ALTER INDEX testschema.part_a_idx SET TABLESPACE pg_global; ALTER INDEX testschema.part_a_idx SET TABLESPACE pg_default; ALTER INDEX testschema.part_a_idx SET TABLESPACE regress_tblspace; INSERT INTO testschema.atable VALUES(3); -- ok INSERT INTO testschema.atable VALUES(1); -- fail (checks index) SELECT COUNT(*) FROM testschema.atable; -- checks heap -- let's try moving a materialized view from one place to another CREATE MATERIALIZED VIEW testschema.amv AS SELECT * FROM testschema.atable; ALTER MATERIALIZED VIEW testschema.amv SET TABLESPACE regress_tblspace; REFRESH MATERIALIZED VIEW testschema.amv; SELECT COUNT(*) FROM testschema.amv; -- Will fail with bad path CREATE TABLESPACE regress_badspace LOCATION '/no/such/location'; -- No such tablespace CREATE TABLE bar (i int) TABLESPACE regress_nosuchspace; -- Fail, in use for some partitioned object DROP TABLESPACE regress_tblspace; ALTER INDEX testschema.part_a_idx SET TABLESPACE pg_default; -- Fail, not empty DROP TABLESPACE regress_tblspace; -- Adequate cache initialization before GRANT \c - BEGIN; GRANT ALL ON TABLESPACE regress_tblspace TO PUBLIC; ROLLBACK; CREATE ROLE regress_tablespace_user1 login; CREATE ROLE regress_tablespace_user2 login; GRANT USAGE ON SCHEMA testschema TO regress_tablespace_user2; ALTER TABLESPACE regress_tblspace OWNER TO regress_tablespace_user1; CREATE TABLE testschema.tablespace_acl (c int); -- new owner lacks permission to create this index from scratch CREATE INDEX k ON testschema.tablespace_acl (c) TABLESPACE regress_tblspace; ALTER TABLE testschema.tablespace_acl OWNER TO regress_tablespace_user2; SET SESSION ROLE regress_tablespace_user2; CREATE TABLE tablespace_table (i int) TABLESPACE regress_tblspace; -- fail ALTER TABLE testschema.tablespace_acl ALTER c TYPE bigint; REINDEX (TABLESPACE regress_tblspace) TABLE tablespace_table; -- fail REINDEX (TABLESPACE regress_tblspace, CONCURRENTLY) TABLE tablespace_table; -- fail RESET ROLE; ALTER TABLESPACE regress_tblspace RENAME TO regress_tblspace_renamed; ALTER TABLE ALL IN TABLESPACE regress_tblspace_renamed SET TABLESPACE pg_default; ALTER INDEX ALL IN TABLESPACE regress_tblspace_renamed SET TABLESPACE pg_default; ALTER MATERIALIZED VIEW ALL IN TABLESPACE regress_tblspace_renamed SET TABLESPACE pg_default; -- Should show notice that nothing was done ALTER TABLE ALL IN TABLESPACE regress_tblspace_renamed SET TABLESPACE pg_default; ALTER MATERIALIZED VIEW ALL IN TABLESPACE regress_tblspace_renamed SET TABLESPACE pg_default; -- Should succeed DROP TABLESPACE regress_tblspace_renamed; DROP SCHEMA testschema CASCADE; DROP ROLE regress_tablespace_user1; DROP ROLE regress_tablespace_user2; libpg_query-17-6.1.0/test/sql/postgres_regress/temp.sql000066400000000000000000000204631477334012600231450ustar00rootroot00000000000000-- -- 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; -- Test it with a CHECK condition that produces a toasted pg_constraint entry BEGIN; do $$ begin execute format($cmd$ CREATE TEMP TABLE temptest (col text CHECK (col < %L)) ON COMMIT DROP $cmd$, (SELECT string_agg(g.i::text || ':' || random()::text, '|') FROM generate_series(1, 100) g(i))); end$$; 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-17-6.1.0/test/sql/postgres_regress/test_setup.sql000066400000000000000000000152641477334012600244020ustar00rootroot00000000000000-- -- TEST_SETUP --- prepare environment expected by regression test scripts -- -- directory paths and dlsuffix are passed to us in environment variables \getenv abs_srcdir PG_ABS_SRCDIR \getenv libdir PG_LIBDIR \getenv dlsuffix PG_DLSUFFIX \set regresslib :libdir '/regress' :dlsuffix -- -- synchronous_commit=off delays when hint bits may be set. Some plans change -- depending on the number of all-visible pages, which in turn can be -- influenced by the delayed hint bits. Force synchronous_commit=on to avoid -- that source of variability. -- SET synchronous_commit = on; -- -- Postgres formerly made the public schema read/write by default, -- and most of the core regression tests still expect that. -- GRANT ALL ON SCHEMA public TO public; -- Create a tablespace we can use in tests. SET allow_in_place_tablespaces = true; CREATE TABLESPACE regress_tblspace LOCATION ''; -- -- These tables have traditionally been referenced by many tests, -- so create and populate them. Insert only non-error values here. -- (Some subsequent tests try to insert erroneous values. That's okay -- because the table won't actually change. Do not change the contents -- of these tables in later tests, as it may affect other tests.) -- CREATE TABLE CHAR_TBL(f1 char(4)); INSERT INTO CHAR_TBL (f1) VALUES ('a'), ('ab'), ('abcd'), ('abcd '); VACUUM CHAR_TBL; CREATE TABLE FLOAT8_TBL(f1 float8); INSERT INTO FLOAT8_TBL(f1) VALUES ('0.0'), ('-34.84'), ('-1004.30'), ('-1.2345678901234e+200'), ('-1.2345678901234e-200'); VACUUM FLOAT8_TBL; CREATE TABLE INT2_TBL(f1 int2); INSERT INTO INT2_TBL(f1) VALUES ('0 '), (' 1234 '), (' -1234'), ('32767'), -- largest and smallest values ('-32767'); VACUUM INT2_TBL; CREATE TABLE INT4_TBL(f1 int4); INSERT INTO INT4_TBL(f1) VALUES (' 0 '), ('123456 '), (' -123456'), ('2147483647'), -- largest and smallest values ('-2147483647'); VACUUM INT4_TBL; CREATE TABLE INT8_TBL(q1 int8, q2 int8); INSERT INTO INT8_TBL VALUES (' 123 ',' 456'), ('123 ','4567890123456789'), ('4567890123456789','123'), (+4567890123456789,'4567890123456789'), ('+4567890123456789','-4567890123456789'); VACUUM INT8_TBL; CREATE TABLE POINT_TBL(f1 point); INSERT INTO POINT_TBL(f1) VALUES ('(0.0,0.0)'), ('(-10.0,0.0)'), ('(-3.0,4.0)'), ('(5.1, 34.5)'), ('(-5.0,-12.0)'), ('(1e-300,-1e-300)'), -- To underflow ('(1e+300,Inf)'), -- To overflow ('(Inf,1e+300)'), -- Transposed (' ( Nan , NaN ) '), ('10.0,10.0'); -- We intentionally don't vacuum point_tbl here; geometry depends on that CREATE TABLE TEXT_TBL (f1 text); INSERT INTO TEXT_TBL VALUES ('doh!'), ('hi de ho neighbor'); VACUUM TEXT_TBL; CREATE TABLE VARCHAR_TBL(f1 varchar(4)); INSERT INTO VARCHAR_TBL (f1) VALUES ('a'), ('ab'), ('abcd'), ('abcd '); VACUUM VARCHAR_TBL; 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 ); \set filename :abs_srcdir '/data/onek.data' COPY onek FROM :'filename'; VACUUM ANALYZE onek; CREATE TABLE onek2 AS SELECT * FROM onek; VACUUM ANALYZE onek2; 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 ); \set filename :abs_srcdir '/data/tenk.data' COPY tenk1 FROM :'filename'; VACUUM ANALYZE tenk1; CREATE TABLE tenk2 AS SELECT * FROM tenk1; VACUUM ANALYZE tenk2; CREATE TABLE person ( name text, age int4, location point ); \set filename :abs_srcdir '/data/person.data' COPY person FROM :'filename'; VACUUM ANALYZE person; CREATE TABLE emp ( salary int4, manager name ) INHERITS (person); \set filename :abs_srcdir '/data/emp.data' COPY emp FROM :'filename'; VACUUM ANALYZE emp; CREATE TABLE student ( gpa float8 ) INHERITS (person); \set filename :abs_srcdir '/data/student.data' COPY student FROM :'filename'; VACUUM ANALYZE student; CREATE TABLE stud_emp ( percent int4 ) INHERITS (emp, student); \set filename :abs_srcdir '/data/stud_emp.data' COPY stud_emp FROM :'filename'; VACUUM ANALYZE stud_emp; CREATE TABLE road ( name text, thepath path ); \set filename :abs_srcdir '/data/streets.data' COPY road FROM :'filename'; VACUUM ANALYZE road; CREATE TABLE ihighway () INHERITS (road); INSERT INTO ihighway SELECT * FROM ONLY road WHERE name ~ 'I- .*'; VACUUM ANALYZE ihighway; CREATE TABLE shighway ( surface text ) INHERITS (road); INSERT INTO shighway SELECT *, 'asphalt' FROM ONLY road WHERE name ~ 'State Hwy.*'; VACUUM ANALYZE shighway; -- -- We must have some enum type in the database for opr_sanity and type_sanity. -- create type stoplight as enum ('red', 'yellow', 'green'); -- -- Also create some non-built-in range types. -- create type float8range as range (subtype = float8, subtype_diff = float8mi); create type textrange as range (subtype = text, collation = "C"); -- -- Create some C functions that will be used by various tests. -- CREATE FUNCTION binary_coercible(oid, oid) RETURNS bool AS :'regresslib', 'binary_coercible' LANGUAGE C STRICT STABLE PARALLEL SAFE; CREATE FUNCTION ttdummy () RETURNS trigger AS :'regresslib' LANGUAGE C; -- 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 function part_hashint4_noop(value int4, seed int8) returns int8 as $$ select value + seed; $$ language sql strict immutable parallel safe; create operator class part_test_int4_ops for type int4 using hash as operator 1 =, function 2 part_hashint4_noop(int4, int8); create function part_hashtext_length(value text, seed int8) returns int8 as $$ select length(coalesce(value, ''))::int8 $$ language sql strict immutable parallel safe; create operator class part_test_text_ops for type text using hash as operator 1 =, function 2 part_hashtext_length(text, int8); -- -- These functions are used in tests that used to use md5(), which we now -- mostly avoid so that the tests will pass in FIPS mode. -- create function fipshash(bytea) returns text strict immutable parallel safe leakproof return substr(encode(sha256($1), 'hex'), 1, 32); create function fipshash(text) returns text strict immutable parallel safe leakproof return substr(encode(sha256($1::bytea), 'hex'), 1, 32); libpg_query-17-6.1.0/test/sql/postgres_regress/text.sql000066400000000000000000000100501477334012600231530ustar00rootroot00000000000000-- -- 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; -- text_tbl was already created and filled in test_setup.sql. SELECT * 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-17-6.1.0/test/sql/postgres_regress/tid.sql000066400000000000000000000043231477334012600227550ustar00rootroot00000000000000-- basic tests for the TID data type SELECT '(0,0)'::tid as tid00, '(0,1)'::tid as tid01, '(-1,0)'::tid as tidm10, '(4294967295,65535)'::tid as tidmax; SELECT '(4294967296,1)'::tid; -- error SELECT '(1,65536)'::tid; -- error -- Also try it with non-error-throwing API SELECT pg_input_is_valid('(0)', 'tid'); SELECT * FROM pg_input_error_info('(0)', 'tid'); SELECT pg_input_is_valid('(0,-1)', 'tid'); SELECT * FROM pg_input_error_info('(0,-1)', 'tid'); -- 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 currtid2() with various relation kinds -- Materialized view CREATE MATERIALIZED VIEW tid_matview AS SELECT a FROM tid_tab; SELECT currtid2('tid_matview'::text, '(0,1)'::tid); -- fails INSERT INTO tid_tab VALUES (1); REFRESH MATERIALIZED VIEW tid_matview; SELECT currtid2('tid_matview'::text, '(0,1)'::tid); -- ok DROP MATERIALIZED VIEW tid_matview; TRUNCATE tid_tab; -- Sequence CREATE SEQUENCE tid_seq; 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 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 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 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 currtid2('tid_view_with_ctid'::text, '(0,1)'::tid); -- fails INSERT INTO tid_tab VALUES (1); 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 currtid2('tid_view_fake_ctid'::text, '(0,1)'::tid); -- fails DROP VIEW tid_view_fake_ctid; DROP TABLE tid_tab CASCADE; libpg_query-17-6.1.0/test/sql/postgres_regress/tidrangescan.sql000066400000000000000000000062571477334012600246470ustar00rootroot00000000000000-- tests for tidrangescans SET enable_seqscan TO off; CREATE TABLE tidrangescan(id integer, data text); -- empty table EXPLAIN (COSTS OFF) SELECT ctid FROM tidrangescan WHERE ctid < '(1, 0)'; SELECT ctid FROM tidrangescan WHERE ctid < '(1, 0)'; EXPLAIN (COSTS OFF) SELECT ctid FROM tidrangescan WHERE ctid > '(9, 0)'; SELECT ctid FROM tidrangescan WHERE ctid > '(9, 0)'; -- insert enough tuples to fill at least two pages INSERT INTO tidrangescan SELECT i,repeat('x', 100) FROM generate_series(1,200) AS s(i); -- remove all tuples after the 10th tuple on each page. Trying to ensure -- we get the same layout with all CPU architectures and smaller than standard -- page sizes. DELETE FROM tidrangescan WHERE substring(ctid::text FROM ',(\d+)\)')::integer > 10 OR substring(ctid::text FROM '\((\d+),')::integer > 2; VACUUM tidrangescan; -- range scans with upper bound EXPLAIN (COSTS OFF) SELECT ctid FROM tidrangescan WHERE ctid < '(1,0)'; SELECT ctid FROM tidrangescan WHERE ctid < '(1,0)'; EXPLAIN (COSTS OFF) SELECT ctid FROM tidrangescan WHERE ctid <= '(1,5)'; SELECT ctid FROM tidrangescan WHERE ctid <= '(1,5)'; EXPLAIN (COSTS OFF) SELECT ctid FROM tidrangescan WHERE ctid < '(0,0)'; SELECT ctid FROM tidrangescan WHERE ctid < '(0,0)'; -- range scans with lower bound EXPLAIN (COSTS OFF) SELECT ctid FROM tidrangescan WHERE ctid > '(2,8)'; SELECT ctid FROM tidrangescan WHERE ctid > '(2,8)'; EXPLAIN (COSTS OFF) SELECT ctid FROM tidrangescan WHERE '(2,8)' < ctid; SELECT ctid FROM tidrangescan WHERE '(2,8)' < ctid; EXPLAIN (COSTS OFF) SELECT ctid FROM tidrangescan WHERE ctid >= '(2,8)'; SELECT ctid FROM tidrangescan WHERE ctid >= '(2,8)'; EXPLAIN (COSTS OFF) SELECT ctid FROM tidrangescan WHERE ctid >= '(100,0)'; SELECT ctid FROM tidrangescan WHERE ctid >= '(100,0)'; -- range scans with both bounds EXPLAIN (COSTS OFF) SELECT ctid FROM tidrangescan WHERE ctid > '(1,4)' AND '(1,7)' >= ctid; SELECT ctid FROM tidrangescan WHERE ctid > '(1,4)' AND '(1,7)' >= ctid; EXPLAIN (COSTS OFF) SELECT ctid FROM tidrangescan WHERE '(1,7)' >= ctid AND ctid > '(1,4)'; SELECT ctid FROM tidrangescan WHERE '(1,7)' >= ctid AND ctid > '(1,4)'; -- extreme offsets SELECT ctid FROM tidrangescan WHERE ctid > '(0,65535)' AND ctid < '(1,0)' LIMIT 1; SELECT ctid FROM tidrangescan WHERE ctid < '(0,0)' LIMIT 1; SELECT ctid FROM tidrangescan WHERE ctid > '(4294967295,65535)'; SELECT ctid FROM tidrangescan WHERE ctid < '(0,0)'; -- NULLs in the range cannot return tuples SELECT ctid FROM tidrangescan WHERE ctid >= (SELECT NULL::tid); -- rescans EXPLAIN (COSTS OFF) SELECT t.ctid,t2.c FROM tidrangescan t, LATERAL (SELECT count(*) c FROM tidrangescan t2 WHERE t2.ctid <= t.ctid) t2 WHERE t.ctid < '(1,0)'; SELECT t.ctid,t2.c FROM tidrangescan t, LATERAL (SELECT count(*) c FROM tidrangescan t2 WHERE t2.ctid <= t.ctid) t2 WHERE t.ctid < '(1,0)'; -- cursors -- Ensure we get a TID Range scan without a Materialize node. EXPLAIN (COSTS OFF) DECLARE c SCROLL CURSOR FOR SELECT ctid FROM tidrangescan WHERE ctid < '(1,0)'; BEGIN; DECLARE c SCROLL CURSOR FOR SELECT ctid FROM tidrangescan WHERE ctid < '(1,0)'; FETCH NEXT c; FETCH NEXT c; FETCH PRIOR c; FETCH FIRST c; FETCH LAST c; COMMIT; DROP TABLE tidrangescan; RESET enable_seqscan; libpg_query-17-6.1.0/test/sql/postgres_regress/tidscan.sql000066400000000000000000000070531477334012600236250ustar00rootroot00000000000000-- 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-17-6.1.0/test/sql/postgres_regress/time.sql000066400000000000000000000057201477334012600231350ustar00rootroot00000000000000-- -- 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 -- Test non-error-throwing API SELECT pg_input_is_valid('12:00:00', 'time'); SELECT pg_input_is_valid('25:00:00', 'time'); SELECT pg_input_is_valid('15:36:39 America/New_York', 'time'); SELECT * FROM pg_input_error_info('25:00:00', 'time'); SELECT * FROM pg_input_error_info('15:36:39 America/New_York', 'time'); -- -- 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; -- -- test EXTRACT -- SELECT EXTRACT(MICROSECOND FROM TIME '2020-05-26 13:30:25.575401'); SELECT EXTRACT(MILLISECOND FROM TIME '2020-05-26 13:30:25.575401'); SELECT EXTRACT(SECOND FROM TIME '2020-05-26 13:30:25.575401'); SELECT EXTRACT(MINUTE FROM TIME '2020-05-26 13:30:25.575401'); SELECT EXTRACT(HOUR FROM TIME '2020-05-26 13:30:25.575401'); SELECT EXTRACT(DAY FROM TIME '2020-05-26 13:30:25.575401'); -- error SELECT EXTRACT(FORTNIGHT FROM TIME '2020-05-26 13:30:25.575401'); -- error SELECT EXTRACT(TIMEZONE FROM TIME '2020-05-26 13:30:25.575401'); -- error SELECT EXTRACT(EPOCH FROM TIME '2020-05-26 13:30:25.575401'); -- date_part implementation is mostly the same as extract, so only -- test a few cases for additional coverage. SELECT date_part('microsecond', TIME '2020-05-26 13:30:25.575401'); SELECT date_part('millisecond', TIME '2020-05-26 13:30:25.575401'); SELECT date_part('second', TIME '2020-05-26 13:30:25.575401'); SELECT date_part('epoch', TIME '2020-05-26 13:30:25.575401'); libpg_query-17-6.1.0/test/sql/postgres_regress/timestamp.sql000066400000000000000000000375461477334012600242150ustar00rootroot00000000000000-- -- 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'); SELECT timestamp 'infinity' = timestamp '+infinity' AS t; -- 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'); -- Test non-error-throwing API SELECT pg_input_is_valid('now', 'timestamp'); SELECT pg_input_is_valid('garbage', 'timestamp'); SELECT pg_input_is_valid('2001-01-01 00:00 Nehwon/Lankhmar', 'timestamp'); SELECT * FROM pg_input_error_info('garbage', 'timestamp'); SELECT * FROM pg_input_error_info('2001-01-01 00:00 Nehwon/Lankhmar', 'timestamp'); -- 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 d1 FROM TIMESTAMP_TBL; -- Check behavior at the boundaries 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 SELECT '294276-12-31 23:59:59'::timestamp; SELECT '294277-01-01 00:00:00'::timestamp; -- out of range -- Demonstrate functions and operators SELECT d1 FROM TIMESTAMP_TBL WHERE d1 > timestamp without time zone '1997-01-02'; SELECT d1 FROM TIMESTAMP_TBL WHERE d1 < timestamp without time zone '1997-01-02'; SELECT d1 FROM TIMESTAMP_TBL WHERE d1 = timestamp without time zone '1997-01-02'; SELECT d1 FROM TIMESTAMP_TBL WHERE d1 != timestamp without time zone '1997-01-02'; SELECT d1 FROM TIMESTAMP_TBL WHERE d1 <= timestamp without time zone '1997-01-02'; SELECT d1 FROM TIMESTAMP_TBL WHERE d1 >= timestamp without time zone '1997-01-02'; SELECT d1 - timestamp without time zone '1997-01-02' AS diff FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01'; SELECT date_trunc( 'week', timestamp '2004-02-29 15:44:17.71393' ) AS week_trunc; -- verify date_bin behaves the same as date_trunc for relevant intervals -- case 1: AD dates, origin < input SELECT str, interval, date_trunc(str, ts) = date_bin(interval::interval, ts, timestamp '2001-01-01') AS equal FROM ( VALUES ('week', '7 d'), ('day', '1 d'), ('hour', '1 h'), ('minute', '1 m'), ('second', '1 s'), ('millisecond', '1 ms'), ('microsecond', '1 us') ) intervals (str, interval), (VALUES (timestamp '2020-02-29 15:44:17.71393')) ts (ts); -- case 2: BC dates, origin < input SELECT str, interval, date_trunc(str, ts) = date_bin(interval::interval, ts, timestamp '2000-01-01 BC') AS equal FROM ( VALUES ('week', '7 d'), ('day', '1 d'), ('hour', '1 h'), ('minute', '1 m'), ('second', '1 s'), ('millisecond', '1 ms'), ('microsecond', '1 us') ) intervals (str, interval), (VALUES (timestamp '0055-6-10 15:44:17.71393 BC')) ts (ts); -- case 3: AD dates, origin > input SELECT str, interval, date_trunc(str, ts) = date_bin(interval::interval, ts, timestamp '2020-03-02') AS equal FROM ( VALUES ('week', '7 d'), ('day', '1 d'), ('hour', '1 h'), ('minute', '1 m'), ('second', '1 s'), ('millisecond', '1 ms'), ('microsecond', '1 us') ) intervals (str, interval), (VALUES (timestamp '2020-02-29 15:44:17.71393')) ts (ts); -- case 4: BC dates, origin > input SELECT str, interval, date_trunc(str, ts) = date_bin(interval::interval, ts, timestamp '0055-06-17 BC') AS equal FROM ( VALUES ('week', '7 d'), ('day', '1 d'), ('hour', '1 h'), ('minute', '1 m'), ('second', '1 s'), ('millisecond', '1 ms'), ('microsecond', '1 us') ) intervals (str, interval), (VALUES (timestamp '0055-6-10 15:44:17.71393 BC')) ts (ts); -- bin timestamps into arbitrary intervals SELECT interval, ts, origin, date_bin(interval::interval, ts, origin) FROM ( VALUES ('15 days'), ('2 hours'), ('1 hour 30 minutes'), ('15 minutes'), ('10 seconds'), ('100 milliseconds'), ('250 microseconds') ) intervals (interval), (VALUES (timestamp '2020-02-11 15:44:17.71393')) ts (ts), (VALUES (timestamp '2001-01-01')) origin (origin); -- shift bins using the origin parameter: SELECT date_bin('5 min'::interval, timestamp '2020-02-01 01:01:01', timestamp '2020-02-01 00:02:30'); -- test roundoff edge case when source < origin SELECT date_bin('30 minutes'::interval, timestamp '2024-02-01 15:00:00', timestamp '2024-02-01 17:00:00'); -- disallow intervals with months or years SELECT date_bin('5 months'::interval, timestamp '2020-02-01 01:01:01', timestamp '2001-01-01'); SELECT date_bin('5 years'::interval, timestamp '2020-02-01 01:01:01', timestamp '2001-01-01'); -- disallow zero intervals SELECT date_bin('0 days'::interval, timestamp '1970-01-01 01:00:00' , timestamp '1970-01-01 00:00:00'); -- disallow negative intervals SELECT date_bin('-2 days'::interval, timestamp '1970-01-01 01:00:00' , timestamp '1970-01-01 00:00:00'); -- test overflow cases select date_bin('15 minutes'::interval, timestamp '294276-12-30', timestamp '4000-12-20 BC'); select date_bin('200000000 days'::interval, '2024-02-01'::timestamp, '2024-01-01'::timestamp); select date_bin('365000 days'::interval, '4400-01-01 BC'::timestamp, '4000-01-01 BC'::timestamp); -- Test casting within a BETWEEN qualifier SELECT 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, date_part( 'epoch', d1) AS epoch FROM TIMESTAMP_TBL; -- extract implementation is mostly the same as date_part, so only -- test a few cases for additional coverage. SELECT d1 as "timestamp", extract(microseconds from d1) AS microseconds, extract(milliseconds from d1) AS milliseconds, extract(seconds from d1) AS seconds, round(extract(julian from d1)) AS julian, extract(epoch from d1) AS epoch FROM TIMESTAMP_TBL; -- value near upper bound uses special case in code SELECT date_part('epoch', '294270-01-01 00:00:00'::timestamp); SELECT extract(epoch from '294270-01-01 00:00:00'::timestamp); -- another internal overflow test case SELECT extract(epoch from '5000-01-01 00:00:00'::timestamp); -- test edge-case overflow in timestamp subtraction SELECT timestamp '294276-12-31 23:59:59' - timestamp '1999-12-23 19:59:04.224193' AS ok; SELECT timestamp '294276-12-31 23:59:59' - timestamp '1999-12-23 19:59:04.224192' AS overflows; -- TO_CHAR() SELECT to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon') FROM TIMESTAMP_TBL; SELECT to_char(d1, 'FMDAY FMDay FMday FMMONTH FMMonth FMmonth FMRM') FROM TIMESTAMP_TBL; SELECT to_char(d1, 'Y,YYY YYYY YYY YY Y CC Q MM WW DDD DD D J') FROM TIMESTAMP_TBL; SELECT to_char(d1, 'FMY,YYY FMYYYY FMYYY FMYY FMY FMCC FMQ FMMM FMWW FMDDD FMDD FMD FMJ') FROM TIMESTAMP_TBL; SELECT to_char(d1, 'HH HH12 HH24 MI SS SSSS') FROM TIMESTAMP_TBL; SELECT to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""') FROM TIMESTAMP_TBL; SELECT to_char(d1, 'HH24--text--MI--text--SS') FROM TIMESTAMP_TBL; SELECT to_char(d1, 'YYYYTH YYYYth Jth') FROM TIMESTAMP_TBL; SELECT 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 to_char(d1, 'IYYY IYY IY I IW IDDD ID') FROM TIMESTAMP_TBL; SELECT to_char(d1, 'FMIYYY FMIYY FMIY FMI FMIW FMIDDD FMID') FROM TIMESTAMP_TBL; SELECT 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); SELECT make_timestamp(-44, 3, 15, 12, 30, 15); -- should fail select make_timestamp(0, 7, 15, 12, 30, 15); -- generate_series for timestamp select * from generate_series('2020-01-01 00:00'::timestamp, '2020-01-02 03:00'::timestamp, '1 hour'::interval); -- the LIMIT should allow this to terminate in a reasonable amount of time -- (but that unfortunately doesn't work yet for SELECT * FROM ...) select generate_series('2022-01-01 00:00'::timestamp, 'infinity'::timestamp, '1 month'::interval) limit 10; -- errors select * from generate_series('2020-01-01 00:00'::timestamp, '2020-01-02 03:00'::timestamp, '0 hour'::interval); select generate_series(timestamp '1995-08-06 12:12:12', timestamp '1996-08-06 12:12:12', interval 'infinity'); select generate_series(timestamp '1995-08-06 12:12:12', timestamp '1996-08-06 12:12:12', interval '-infinity'); -- test arithmetic with infinite timestamps select timestamp 'infinity' - timestamp 'infinity'; select timestamp 'infinity' - timestamp '-infinity'; select timestamp '-infinity' - timestamp 'infinity'; select timestamp '-infinity' - timestamp '-infinity'; select timestamp 'infinity' - timestamp '1995-08-06 12:12:12'; select timestamp '-infinity' - timestamp '1995-08-06 12:12:12'; -- test age() with infinite timestamps select age(timestamp 'infinity'); select age(timestamp '-infinity'); select age(timestamp 'infinity', timestamp 'infinity'); select age(timestamp 'infinity', timestamp '-infinity'); select age(timestamp '-infinity', timestamp 'infinity'); select age(timestamp '-infinity', timestamp '-infinity'); libpg_query-17-6.1.0/test/sql/postgres_regress/timestamptz.sql000066400000000000000000000722551477334012600245670ustar00rootroot00000000000000-- -- 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'); SELECT timestamptz 'infinity' = timestamptz '+infinity' AS t; -- 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 -- Test non-error-throwing API SELECT pg_input_is_valid('now', 'timestamptz'); SELECT pg_input_is_valid('garbage', 'timestamptz'); SELECT pg_input_is_valid('2001-01-01 00:00 Nehwon/Lankhmar', 'timestamptz'); SELECT * FROM pg_input_error_info('garbage', 'timestamptz'); SELECT * FROM pg_input_error_info('2001-01-01 00:00 Nehwon/Lankhmar', 'timestamptz'); -- 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 d1 FROM TIMESTAMPTZ_TBL; -- Check behavior at the boundaries 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 SELECT '294276-12-31 23:59:59+00'::timestamptz; SELECT '294276-12-31 15:59:59-08'::timestamptz; SELECT '294277-01-01 00:00:00+00'::timestamptz; -- out of range SELECT '294277-12-31 16:00:00-08'::timestamptz; -- out of range -- Demonstrate functions and operators SELECT d1 FROM TIMESTAMPTZ_TBL WHERE d1 > timestamp with time zone '1997-01-02'; SELECT d1 FROM TIMESTAMPTZ_TBL WHERE d1 < timestamp with time zone '1997-01-02'; SELECT d1 FROM TIMESTAMPTZ_TBL WHERE d1 = timestamp with time zone '1997-01-02'; SELECT d1 FROM TIMESTAMPTZ_TBL WHERE d1 != timestamp with time zone '1997-01-02'; SELECT d1 FROM TIMESTAMPTZ_TBL WHERE d1 <= timestamp with time zone '1997-01-02'; SELECT d1 FROM TIMESTAMPTZ_TBL WHERE d1 >= timestamp with time zone '1997-01-02'; SELECT d1 - timestamp with time zone '1997-01-02' AS diff FROM TIMESTAMPTZ_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01'; SELECT date_trunc( 'week', timestamp with time zone '2004-02-29 15:44:17.71393' ) AS week_trunc; SELECT date_trunc('day', timestamp with time zone '2001-02-16 20:38:40+00', 'Australia/Sydney') as sydney_trunc; -- zone name SELECT date_trunc('day', timestamp with time zone '2001-02-16 20:38:40+00', 'GMT') as gmt_trunc; -- fixed-offset abbreviation SELECT date_trunc('day', timestamp with time zone '2001-02-16 20:38:40+00', 'VET') as vet_trunc; -- variable-offset abbreviation -- verify date_bin behaves the same as date_trunc for relevant intervals SELECT str, interval, date_trunc(str, ts, 'Australia/Sydney') = date_bin(interval::interval, ts, timestamp with time zone '2001-01-01+11') AS equal FROM ( VALUES ('day', '1 d'), ('hour', '1 h'), ('minute', '1 m'), ('second', '1 s'), ('millisecond', '1 ms'), ('microsecond', '1 us') ) intervals (str, interval), (VALUES (timestamptz '2020-02-29 15:44:17.71393+00')) ts (ts); -- bin timestamps into arbitrary intervals SELECT interval, ts, origin, date_bin(interval::interval, ts, origin) FROM ( VALUES ('15 days'), ('2 hours'), ('1 hour 30 minutes'), ('15 minutes'), ('10 seconds'), ('100 milliseconds'), ('250 microseconds') ) intervals (interval), (VALUES (timestamptz '2020-02-11 15:44:17.71393')) ts (ts), (VALUES (timestamptz '2001-01-01')) origin (origin); -- shift bins using the origin parameter: SELECT date_bin('5 min'::interval, timestamptz '2020-02-01 01:01:01+00', timestamptz '2020-02-01 00:02:30+00'); -- test roundoff edge case when source < origin SELECT date_bin('30 minutes'::interval, timestamptz '2024-02-01 15:00:00', timestamptz '2024-02-01 17:00:00'); -- disallow intervals with months or years SELECT date_bin('5 months'::interval, timestamp with time zone '2020-02-01 01:01:01+00', timestamp with time zone '2001-01-01+00'); SELECT date_bin('5 years'::interval, timestamp with time zone '2020-02-01 01:01:01+00', timestamp with time zone '2001-01-01+00'); -- disallow zero intervals SELECT date_bin('0 days'::interval, timestamp with time zone '1970-01-01 01:00:00+00' , timestamp with time zone '1970-01-01 00:00:00+00'); -- disallow negative intervals SELECT date_bin('-2 days'::interval, timestamp with time zone '1970-01-01 01:00:00+00' , timestamp with time zone '1970-01-01 00:00:00+00'); -- test overflow cases select date_bin('15 minutes'::interval, timestamptz '294276-12-30', timestamptz '4000-12-20 BC'); select date_bin('200000000 days'::interval, '2024-02-01'::timestamptz, '2024-01-01'::timestamptz); select date_bin('365000 days'::interval, '4400-01-01 BC'::timestamptz, '4000-01-01 BC'::timestamptz); -- Test casting within a BETWEEN qualifier SELECT 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, date_part( 'epoch', d1) AS epoch 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; -- extract implementation is mostly the same as date_part, so only -- test a few cases for additional coverage. SELECT d1 as "timestamp", extract(microseconds from d1) AS microseconds, extract(milliseconds from d1) AS milliseconds, extract(seconds from d1) AS seconds, round(extract(julian from d1)) AS julian, extract(epoch from d1) AS epoch FROM TIMESTAMPTZ_TBL; -- value near upper bound uses special case in code SELECT date_part('epoch', '294270-01-01 00:00:00+00'::timestamptz); SELECT extract(epoch from '294270-01-01 00:00:00+00'::timestamptz); -- another internal overflow test case SELECT extract(epoch from '5000-01-01 00:00:00+00'::timestamptz); -- test edge-case overflow in timestamp subtraction SELECT timestamptz '294276-12-31 23:59:59 UTC' - timestamptz '1999-12-23 19:59:04.224193 UTC' AS ok; SELECT timestamptz '294276-12-31 23:59:59 UTC' - timestamptz '1999-12-23 19:59:04.224192 UTC' AS overflows; -- TO_CHAR() SELECT to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon') FROM TIMESTAMPTZ_TBL; SELECT to_char(d1, 'FMDAY FMDay FMday FMMONTH FMMonth FMmonth FMRM') FROM TIMESTAMPTZ_TBL; SELECT to_char(d1, 'Y,YYY YYYY YYY YY Y CC Q MM WW DDD DD D J') FROM TIMESTAMPTZ_TBL; SELECT to_char(d1, 'FMY,YYY FMYYYY FMYYY FMYY FMY FMCC FMQ FMMM FMWW FMDDD FMDD FMD FMJ') FROM TIMESTAMPTZ_TBL; SELECT to_char(d1, 'HH HH12 HH24 MI SS SSSS') FROM TIMESTAMPTZ_TBL; SELECT to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""') FROM TIMESTAMPTZ_TBL; SELECT to_char(d1, 'HH24--text--MI--text--SS') FROM TIMESTAMPTZ_TBL; SELECT to_char(d1, 'YYYYTH YYYYth Jth') FROM TIMESTAMPTZ_TBL; SELECT 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 to_char(d1, 'IYYY IYY IY I IW IDDD ID') FROM TIMESTAMPTZ_TBL; SELECT to_char(d1, 'FMIYYY FMIYY FMIY FMI FMIW FMIDDD FMID') FROM TIMESTAMPTZ_TBL; SELECT 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; -- Check of, tzh, tzm with various zone offsets. 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(1881, 12, 10, 0, 0, 0, 'Asia/Singapore') AT TIME ZONE 'UTC'; SELECT make_timestamptz(1881, 12, 10, 0, 0, 0, 'Pacific/Honolulu') 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, 'FOO8BAR'); -- POSIX SELECT make_timestamptz(2014, 12, 10, 10, 10, 10, 'PST8PDT,M3.2.0,M11.1.0'); RESET TimeZone; -- generate_series for timestamptz select * from generate_series('2020-01-01 00:00'::timestamptz, '2020-01-02 03:00'::timestamptz, '1 hour'::interval); -- the LIMIT should allow this to terminate in a reasonable amount of time -- (but that unfortunately doesn't work yet for SELECT * FROM ...) select generate_series('2022-01-01 00:00'::timestamptz, 'infinity'::timestamptz, '1 month'::interval) limit 10; -- errors select * from generate_series('2020-01-01 00:00'::timestamptz, '2020-01-02 03:00'::timestamptz, '0 hour'::interval); select generate_series(timestamptz '1995-08-06 12:12:12', timestamptz '1996-08-06 12:12:12', interval 'infinity'); select generate_series(timestamptz '1995-08-06 12:12:12', timestamptz '1996-08-06 12:12:12', interval '-infinity'); -- Interval crossing time shift for Europe/Warsaw timezone (with DST) SET TimeZone to 'UTC'; SELECT date_add('2022-10-30 00:00:00+01'::timestamptz, '1 day'::interval); SELECT date_add('2021-10-31 00:00:00+02'::timestamptz, '1 day'::interval, 'Europe/Warsaw'); SELECT date_subtract('2022-10-30 00:00:00+01'::timestamptz, '1 day'::interval); SELECT date_subtract('2021-10-31 00:00:00+02'::timestamptz, '1 day'::interval, 'Europe/Warsaw'); SELECT * FROM generate_series('2021-12-31 23:00:00+00'::timestamptz, '2020-12-31 23:00:00+00'::timestamptz, '-1 month'::interval, 'Europe/Warsaw'); 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 LOCAL time zone -- BEGIN; SET LOCAL TIME ZONE 'Europe/Paris'; VALUES (CAST('1978-07-07 19:38 America/New_York' AS TIMESTAMP WITH TIME ZONE) AT LOCAL); VALUES (TIMESTAMP '1978-07-07 19:38' AT LOCAL); SET LOCAL TIME ZONE 'Australia/Sydney'; VALUES (CAST('1978-07-07 19:38 America/New_York' AS TIMESTAMP WITH TIME ZONE) AT LOCAL); VALUES (TIMESTAMP '1978-07-07 19:38' AT LOCAL); SET LOCAL TimeZone TO 'UTC'; CREATE VIEW timestamp_local_view AS SELECT CAST('1978-07-07 19:38 America/New_York' AS TIMESTAMP WITH TIME ZONE) AT LOCAL AS ttz_at_local, timezone(CAST('1978-07-07 19:38 America/New_York' AS TIMESTAMP WITH TIME ZONE)) AS ttz_func, TIMESTAMP '1978-07-07 19:38' AT LOCAL AS t_at_local, timezone(TIMESTAMP '1978-07-07 19:38') AS t_func; SELECT pg_get_viewdef('timestamp_local_view', true); \x TABLE timestamp_local_view; \x DROP VIEW timestamp_local_view; COMMIT; -- -- 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'; -- test arithmetic with infinite timestamps SELECT timestamptz 'infinity' - timestamptz 'infinity'; SELECT timestamptz 'infinity' - timestamptz '-infinity'; SELECT timestamptz '-infinity' - timestamptz 'infinity'; SELECT timestamptz '-infinity' - timestamptz '-infinity'; SELECT timestamptz 'infinity' - timestamptz '1995-08-06 12:12:12'; SELECT timestamptz '-infinity' - timestamptz '1995-08-06 12:12:12'; -- test age() with infinite timestamps SELECT age(timestamptz 'infinity'); SELECT age(timestamptz '-infinity'); SELECT age(timestamptz 'infinity', timestamptz 'infinity'); SELECT age(timestamptz 'infinity', timestamptz '-infinity'); SELECT age(timestamptz '-infinity', timestamptz 'infinity'); SELECT age(timestamptz '-infinity', timestamptz '-infinity'); libpg_query-17-6.1.0/test/sql/postgres_regress/timetz.sql000066400000000000000000000105631477334012600235140ustar00rootroot00000000000000-- -- 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 -- Test non-error-throwing API SELECT pg_input_is_valid('12:00:00 PDT', 'timetz'); SELECT pg_input_is_valid('25:00:00 PDT', 'timetz'); SELECT pg_input_is_valid('15:36:39 America/New_York', 'timetz'); SELECT * FROM pg_input_error_info('25:00:00 PDT', 'timetz'); SELECT * FROM pg_input_error_info('15:36:39 America/New_York', 'timetz'); -- -- 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; -- -- test EXTRACT -- SELECT EXTRACT(MICROSECOND FROM TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04'); SELECT EXTRACT(MILLISECOND FROM TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04'); SELECT EXTRACT(SECOND FROM TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04'); SELECT EXTRACT(MINUTE FROM TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04'); SELECT EXTRACT(HOUR FROM TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04'); SELECT EXTRACT(DAY FROM TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04'); -- error SELECT EXTRACT(FORTNIGHT FROM TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04'); -- error SELECT EXTRACT(TIMEZONE FROM TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04:30'); SELECT EXTRACT(TIMEZONE_HOUR FROM TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04:30'); SELECT EXTRACT(TIMEZONE_MINUTE FROM TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04:30'); SELECT EXTRACT(EPOCH FROM TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04'); -- date_part implementation is mostly the same as extract, so only -- test a few cases for additional coverage. SELECT date_part('microsecond', TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04'); SELECT date_part('millisecond', TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04'); SELECT date_part('second', TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04'); SELECT date_part('epoch', TIME WITH TIME ZONE '2020-05-26 13:30:25.575401-04'); -- -- Test timetz_zone, timetz_izone, AT LOCAL -- BEGIN; SET LOCAL TimeZone TO 'UTC'; CREATE VIEW timetz_local_view AS SELECT f1 AS dat, timezone(f1) AS dat_func, f1 AT LOCAL AS dat_at_local, f1 AT TIME ZONE current_setting('TimeZone') AS dat_at_tz, f1 AT TIME ZONE INTERVAL '00:00' AS dat_at_int FROM TIMETZ_TBL ORDER BY f1; SELECT pg_get_viewdef('timetz_local_view', true); TABLE timetz_local_view; SELECT f1 AS dat, f1 AT TIME ZONE 'UTC+10' AS dat_at_tz, f1 AT TIME ZONE INTERVAL '-10:00' AS dat_at_int FROM TIMETZ_TBL ORDER BY f1; ROLLBACK; libpg_query-17-6.1.0/test/sql/postgres_regress/transactions.sql000066400000000000000000000431521477334012600247100ustar00rootroot00000000000000-- -- TRANSACTIONS -- BEGIN; CREATE TABLE xacttest (a smallint, b real); INSERT INTO xacttest VALUES (56, 7.8), (100, 99.097), (0, 0.09561), (42, 324.78); 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 xacttest; -- should be empty SELECT * FROM xacttest; ABORT; -- should not exist SELECT oid FROM pg_class WHERE relname = 'disappear'; -- should have members again SELECT * FROM xacttest; -- Test that transaction characteristics cannot be reset. BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; SELECT COUNT(*) FROM xacttest; RESET transaction_isolation; -- error END; BEGIN TRANSACTION READ ONLY; SELECT COUNT(*) FROM xacttest; RESET transaction_read_only; -- error END; BEGIN TRANSACTION DEFERRABLE; SELECT COUNT(*) FROM xacttest; RESET transaction_deferrable; -- error END; CREATE FUNCTION errfunc() RETURNS int LANGUAGE SQL AS 'SELECT 1' SET transaction_read_only = on; -- error -- 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 trans_abc (a int); insert into trans_abc values (5); insert into trans_abc values (10); declare foo cursor for select * from trans_abc; fetch from foo; rollback to x; -- should fail fetch from foo; commit; begin; create table trans_abc (a int); insert into trans_abc values (5); insert into trans_abc values (10); insert into trans_abc values (15); declare foo cursor for select * from trans_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 trans_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 trans_abc VALUES (1); INSERT INTO trans_abc VALUES (2); COMMIT AND CHAIN; -- TBLOCK_END SHOW transaction_isolation; SHOW transaction_read_only; SHOW transaction_deferrable; INSERT INTO trans_abc VALUES ('error'); INSERT INTO trans_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 trans_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 trans_abc VALUES ('error'); COMMIT AND CHAIN; -- TBLOCK_ABORT_PENDING SHOW transaction_isolation; SHOW transaction_read_only; SHOW transaction_deferrable; INSERT INTO trans_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; START TRANSACTION ISOLATION LEVEL READ COMMITTED, 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 trans_abc VALUES (6); ROLLBACK AND CHAIN; -- TBLOCK_ABORT_PENDING SHOW transaction_isolation; SHOW transaction_read_only; SHOW transaction_deferrable; INSERT INTO trans_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 trans_abc ORDER BY 1; RESET default_transaction_read_only; DROP TABLE trans_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 all results of 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 trans_abc (a int); -- COMMIT/ROLLBACK + COMMIT/ROLLBACK AND CHAIN INSERT INTO trans_abc VALUES (7)\; COMMIT\; INSERT INTO trans_abc VALUES (8)\; COMMIT AND CHAIN; -- 7 commit, 8 error INSERT INTO trans_abc VALUES (9)\; ROLLBACK\; INSERT INTO trans_abc VALUES (10)\; ROLLBACK AND CHAIN; -- 9 rollback, 10 error -- COMMIT/ROLLBACK AND CHAIN + COMMIT/ROLLBACK INSERT INTO trans_abc VALUES (11)\; COMMIT AND CHAIN\; INSERT INTO trans_abc VALUES (12)\; COMMIT; -- 11 error, 12 not reached INSERT INTO trans_abc VALUES (13)\; ROLLBACK AND CHAIN\; INSERT INTO trans_abc VALUES (14)\; ROLLBACK; -- 13 error, 14 not reached -- START TRANSACTION + COMMIT/ROLLBACK AND CHAIN START TRANSACTION ISOLATION LEVEL REPEATABLE READ\; INSERT INTO trans_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 trans_abc VALUES (16)\; ROLLBACK AND CHAIN; -- 16 ok SHOW transaction_isolation; -- transaction is active at this point ROLLBACK; SET default_transaction_isolation = 'read committed'; -- START TRANSACTION + COMMIT/ROLLBACK + COMMIT/ROLLBACK AND CHAIN START TRANSACTION ISOLATION LEVEL REPEATABLE READ\; INSERT INTO trans_abc VALUES (17)\; COMMIT\; INSERT INTO trans_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 trans_abc VALUES (19)\; ROLLBACK\; INSERT INTO trans_abc VALUES (20)\; ROLLBACK AND CHAIN; -- 19 rollback, 20 error SHOW transaction_isolation; -- out of transaction block RESET default_transaction_isolation; SELECT * FROM trans_abc ORDER BY 1; DROP TABLE trans_abc; -- TRANSACTION SNAPSHOT -- Incorrect identifier. BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ; SET TRANSACTION SNAPSHOT 'Incorrect Identifier'; ROLLBACK; -- Correct identifier, missing file. BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ; SET TRANSACTION SNAPSHOT 'FFF-FFF-F'; ROLLBACK; -- 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-17-6.1.0/test/sql/postgres_regress/triggers.sql000066400000000000000000003057211477334012600240310ustar00rootroot00000000000000-- -- TRIGGERS -- -- directory paths and dlsuffix are passed to us in environment variables \getenv libdir PG_LIBDIR \getenv dlsuffix PG_DLSUFFIX \set autoinclib :libdir '/autoinc' :dlsuffix \set refintlib :libdir '/refint' :dlsuffix \set regresslib :libdir '/regress' :dlsuffix CREATE FUNCTION autoinc () RETURNS trigger AS :'autoinclib' LANGUAGE C; CREATE FUNCTION check_primary_key () RETURNS trigger AS :'refintlib' LANGUAGE C; CREATE FUNCTION check_foreign_key () RETURNS trigger AS :'refintlib' LANGUAGE C; CREATE FUNCTION trigger_return_old () RETURNS trigger AS :'regresslib' LANGUAGE C; CREATE FUNCTION set_ttdummy (int4) RETURNS int4 AS :'regresslib' LANGUAGE C STRICT; 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_TABLE_NAME, 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_TABLE_NAME, 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 merge into parent p using (values (1)) as v(id) on p.aid = v.id when matched then update set val1 = 'b'; -- should fail select * from parent; select * from child; delete from parent where aid = 1; -- should fail merge into parent p using (values (1)) as v(id) on p.aid = v.id when matched then delete; -- 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; -- check display of unrelated triggers create trigger samename after delete on trigpart execute function trigger_nothing(); create trigger samename after delete on trigpart1 execute function trigger_nothing(); \d trigpart1 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 that the correct triggers fire for cross-partition updates create table parted_trig (a int) partition by list (a); create table parted_trig1 partition of parted_trig for values in (1); create table parted_trig2 partition of parted_trig for values in (2); insert into parted_trig values (1); 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 if TG_OP = 'DELETE' then return OLD; else return NEW; end if; end if; return null; end; $$ language plpgsql; create trigger parted_trig_before_stmt before insert or update or delete on parted_trig for each statement execute procedure trigger_notice(); create trigger parted_trig_before_row before insert or update or delete on parted_trig for each row execute procedure trigger_notice(); create trigger parted_trig_after_row after insert or update or delete on parted_trig for each row execute procedure trigger_notice(); create trigger parted_trig_after_stmt after insert or update or delete on parted_trig for each statement execute procedure trigger_notice(); update parted_trig set a = 2 where a = 1; -- update action in merge should behave the same merge into parted_trig using (select 1) as ss on true when matched and a = 2 then update set a = 1; 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(); create trigger tg_stmt after insert on parent for statement execute procedure trig_nothing(); select tgrelid::regclass, tgname, tgenabled from pg_trigger where tgrelid in ('parent'::regclass, 'child1'::regclass) order by tgrelid::regclass::text, tgname; alter table only parent enable always trigger tg; -- no recursion because ONLY alter table parent enable always trigger tg_stmt; -- no recursion because statement trigger select tgrelid::regclass, tgname, tgenabled from pg_trigger where tgrelid in ('parent'::regclass, 'child1'::regclass) order by tgrelid::regclass::text, tgname; -- The following is a no-op for the parent trigger but not so -- for the child trigger, so recursion should be applied. alter table 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, tgname; -- This variant malfunctioned in some releases. alter table parent disable trigger user; select tgrelid::regclass, tgname, tgenabled from pg_trigger where tgrelid in ('parent'::regclass, 'child1'::regclass) order by tgrelid::regclass::text, tgname; drop table parent, child1; -- Check processing of foreign key triggers create table parent (a int primary key, f int references parent) partition by list (a); create table child1 partition of parent for values in (1); select tgrelid::regclass, rtrim(tgname, '0123456789') as tgname, tgfoid::regproc, tgenabled from pg_trigger where tgrelid in ('parent'::regclass, 'child1'::regclass) order by tgrelid::regclass::text, tgfoid; alter table parent disable trigger all; select tgrelid::regclass, rtrim(tgname, '0123456789') as tgname, tgfoid::regproc, tgenabled from pg_trigger where tgrelid in ('parent'::regclass, 'child1'::regclass) order by tgrelid::regclass::text, tgfoid; drop table parent, child1; -- Verify that firing state propagates correctly on creation, too CREATE TABLE trgfire (i int) PARTITION BY RANGE (i); CREATE TABLE trgfire1 PARTITION OF trgfire FOR VALUES FROM (1) TO (10); CREATE OR REPLACE FUNCTION tgf() RETURNS trigger LANGUAGE plpgsql AS $$ begin raise exception 'except'; end $$; CREATE TRIGGER tg AFTER INSERT ON trgfire FOR EACH ROW EXECUTE FUNCTION tgf(); INSERT INTO trgfire VALUES (1); ALTER TABLE trgfire DISABLE TRIGGER tg; INSERT INTO trgfire VALUES (1); CREATE TABLE trgfire2 PARTITION OF trgfire FOR VALUES FROM (10) TO (20); INSERT INTO trgfire VALUES (11); CREATE TABLE trgfire3 (LIKE trgfire); ALTER TABLE trgfire ATTACH PARTITION trgfire3 FOR VALUES FROM (20) TO (30); INSERT INTO trgfire VALUES (21); CREATE TABLE trgfire4 PARTITION OF trgfire FOR VALUES FROM (30) TO (40) PARTITION BY LIST (i); CREATE TABLE trgfire4_30 PARTITION OF trgfire4 FOR VALUES IN (30); INSERT INTO trgfire VALUES (30); CREATE TABLE trgfire5 (LIKE trgfire) PARTITION BY LIST (i); CREATE TABLE trgfire5_40 PARTITION OF trgfire5 FOR VALUES IN (40); ALTER TABLE trgfire ATTACH PARTITION trgfire5 FOR VALUES FROM (40) TO (50); INSERT INTO trgfire VALUES (40); SELECT tgrelid::regclass, tgenabled FROM pg_trigger WHERE tgrelid::regclass IN (SELECT oid from pg_class where relname LIKE 'trgfire%') ORDER BY tgrelid::regclass::text; ALTER TABLE trgfire ENABLE TRIGGER tg; INSERT INTO trgfire VALUES (1); INSERT INTO trgfire VALUES (11); INSERT INTO trgfire VALUES (21); INSERT INTO trgfire VALUES (30); INSERT INTO trgfire VALUES (40); DROP TABLE trgfire; DROP FUNCTION tgf(); -- -- 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 access of transition tables with UPDATE triggers and tuples -- moved across partitions. -- create or replace function dump_update_new() 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_old() 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; $$; create table trans_tab_parent (a text) partition by list (a); create table trans_tab_child1 partition of trans_tab_parent for values in ('AAA1', 'AAA2'); create table trans_tab_child2 partition of trans_tab_parent for values in ('BBB1', 'BBB2'); create trigger trans_tab_parent_update_trig after update on trans_tab_parent referencing old table as old_table for each statement execute procedure dump_update_old(); create trigger trans_tab_parent_insert_trig after insert on trans_tab_parent referencing new table as new_table for each statement execute procedure dump_insert(); create trigger trans_tab_parent_delete_trig after delete on trans_tab_parent referencing old table as old_table for each statement execute procedure dump_delete(); insert into trans_tab_parent values ('AAA1'), ('BBB1'); -- should not trigger access to new table when moving across partitions. update trans_tab_parent set a = 'BBB2' where a = 'AAA1'; drop trigger trans_tab_parent_update_trig on trans_tab_parent; create trigger trans_tab_parent_update_trig after update on trans_tab_parent referencing new table as new_table for each statement execute procedure dump_update_new(); -- should not trigger access to old table when moving across partitions. update trans_tab_parent set a = 'AAA2' where a = 'BBB1'; delete from trans_tab_parent; -- clean up drop table trans_tab_parent, trans_tab_child1, trans_tab_child2; drop function dump_update_new, dump_update_old; -- -- 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 copyfrom.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; -- -- Test that we can drop a not-yet-fired deferred trigger -- create table refd_table (id int primary key); create table trig_table (fk int references refd_table initially deferred); begin; insert into trig_table values (1); drop table refd_table cascade; commit; drop 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; -- -- test transition tables with MERGE -- create table merge_target_table (a int primary key, b text); create trigger merge_target_table_insert_trig after insert on merge_target_table referencing new table as new_table for each statement execute procedure dump_insert(); create trigger merge_target_table_update_trig after update on merge_target_table referencing old table as old_table new table as new_table for each statement execute procedure dump_update(); create trigger merge_target_table_delete_trig after delete on merge_target_table referencing old table as old_table for each statement execute procedure dump_delete(); create table merge_source_table (a int, b text); insert into merge_source_table values (1, 'initial1'), (2, 'initial2'), (3, 'initial3'), (4, 'initial4'); merge into merge_target_table t using merge_source_table s on t.a = s.a when not matched then insert values (a, b); merge into merge_target_table t using merge_source_table s on t.a = s.a when matched and s.a <= 2 then update set b = t.b || ' updated by merge' when matched and s.a > 2 then delete when not matched then insert values (a, b); merge into merge_target_table t using merge_source_table s on t.a = s.a when matched and s.a <= 2 then update set b = t.b || ' updated again by merge' when matched and s.a > 2 then delete when not matched then insert values (a, b); drop table merge_source_table, merge_target_table; -- cleanup drop function dump_insert(); drop function dump_update(); drop function dump_delete(); -- -- Tests for CREATE OR REPLACE TRIGGER -- create table my_table (id integer); create function funcA() returns trigger as $$ begin raise notice 'hello from funcA'; return null; end; $$ language plpgsql; create function funcB() returns trigger as $$ begin raise notice 'hello from funcB'; return null; end; $$ language plpgsql; create trigger my_trig after insert on my_table for each row execute procedure funcA(); create trigger my_trig before insert on my_table for each row execute procedure funcB(); -- should fail insert into my_table values (1); create or replace trigger my_trig before insert on my_table for each row execute procedure funcB(); -- OK insert into my_table values (2); -- this insert should become a no-op table my_table; drop table my_table; -- test CREATE OR REPLACE TRIGGER on partition table 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 table default_parted_trig partition of parted_trig default; -- test that trigger can be replaced by another one -- at the same level of partition table create or replace trigger my_trig after insert on parted_trig for each row execute procedure funcA(); insert into parted_trig (a) values (50); create or replace trigger my_trig after insert on parted_trig for each row execute procedure funcB(); insert into parted_trig (a) values (50); -- test that child trigger cannot be replaced directly create or replace trigger my_trig after insert on parted_trig for each row execute procedure funcA(); insert into parted_trig (a) values (50); create or replace trigger my_trig after insert on parted_trig_1 for each row execute procedure funcB(); -- should fail insert into parted_trig (a) values (50); drop trigger my_trig on parted_trig; insert into parted_trig (a) values (50); -- test that user trigger can be overwritten by one defined at upper level create trigger my_trig after insert on parted_trig_1 for each row execute procedure funcA(); insert into parted_trig (a) values (50); create trigger my_trig after insert on parted_trig for each row execute procedure funcB(); -- should fail insert into parted_trig (a) values (50); create or replace trigger my_trig after insert on parted_trig for each row execute procedure funcB(); insert into parted_trig (a) values (50); -- cleanup drop table parted_trig; drop function funcA(); drop function funcB(); -- 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); create table trigger_parted_p2 partition of trigger_parted for values in (2) partition by list (a); create table trigger_parted_p2_2 partition of trigger_parted_p2 for values in (2); alter table only trigger_parted_p2 disable trigger aft_row; alter table trigger_parted_p2_2 enable always trigger aft_row; -- 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 function convslot_trig1() 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 function convslot_trig2() 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 convslot_trig2(); update convslot_test_parent set col1 = col1 || '1'; create function convslot_trig3() 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 convslot_trig3(); 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 convslot_trig1(); delete from convslot_test_parent; drop table convslot_test_child, convslot_test_parent; drop function convslot_trig1(); drop function convslot_trig2(); drop function convslot_trig3(); -- Bug #17607: variant of above in which trigger function raises an error; -- we don't see any ill effects unless trigger tuple requires mapping create table convslot_test_parent (id int primary key, val int) partition by range (id); create table convslot_test_part (val int, id int not null); alter table convslot_test_parent attach partition convslot_test_part for values from (1) to (1000); create function convslot_trig4() returns trigger as $$begin raise exception 'BOOM!'; end$$ language plpgsql; create trigger convslot_test_parent_update after update on convslot_test_parent referencing old table as old_rows new table as new_rows for each statement execute procedure convslot_trig4(); insert into convslot_test_parent (id, val) values (1, 2); begin; savepoint svp; update convslot_test_parent set val = 3; -- error expected rollback to savepoint svp; rollback; drop table convslot_test_parent; drop function convslot_trig4(); -- Test trigger renaming on partitioned tables create table grandparent (id int, primary key (id)) partition by range (id); create table middle partition of grandparent for values from (1) to (10) partition by range (id); create table chi partition of middle for values from (1) to (5); create table cho partition of middle for values from (6) to (10); create function f () returns trigger as $$ begin return new; end; $$ language plpgsql; create trigger a after insert on grandparent for each row execute procedure f(); alter trigger a on grandparent rename to b; select tgrelid::regclass, tgname, (select tgname from pg_trigger tr where tr.oid = pg_trigger.tgparentid) parent_tgname from pg_trigger where tgrelid in (select relid from pg_partition_tree('grandparent')) order by tgname, tgrelid::regclass::text COLLATE "C"; alter trigger a on only grandparent rename to b; -- ONLY not supported alter trigger b on middle rename to c; -- can't rename trigger on partition create trigger c after insert on middle for each row execute procedure f(); alter trigger b on grandparent rename to c; -- Rename cascading does not affect statement triggers create trigger p after insert on grandparent for each statement execute function f(); create trigger p after insert on middle for each statement execute function f(); alter trigger p on grandparent rename to q; select tgrelid::regclass, tgname, (select tgname from pg_trigger tr where tr.oid = pg_trigger.tgparentid) parent_tgname from pg_trigger where tgrelid in (select relid from pg_partition_tree('grandparent')) order by tgname, tgrelid::regclass::text COLLATE "C"; drop table grandparent; -- Trigger renaming does not recurse on legacy inheritance create table parent (a int); create table child () inherits (parent); create trigger parenttrig after insert on parent for each row execute procedure f(); create trigger parenttrig after insert on child for each row execute procedure f(); alter trigger parenttrig on parent rename to anothertrig; \d+ child drop table parent, child; drop function f(); libpg_query-17-6.1.0/test/sql/postgres_regress/truncate.sql000066400000000000000000000231521477334012600240230ustar00rootroot00000000000000-- 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-17-6.1.0/test/sql/postgres_regress/tsdicts.sql000066400000000000000000000246511477334012600236600ustar00rootroot00000000000000--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 ); -- Test grammar for configurations CREATE TEXT SEARCH CONFIGURATION dummy_tst (COPY=english); -- Overridden mapping change with duplicated tokens. ALTER TEXT SEARCH CONFIGURATION dummy_tst ALTER MAPPING FOR word, word WITH ispell; -- Not a token supported by the configuration's parser, fails. ALTER TEXT SEARCH CONFIGURATION dummy_tst DROP MAPPING FOR not_a_token, not_a_token; -- Not a token supported by the configuration's parser, fails even -- with IF EXISTS. ALTER TEXT SEARCH CONFIGURATION dummy_tst DROP MAPPING IF EXISTS FOR not_a_token, not_a_token; -- Token supported by the configuration's parser, succeeds. ALTER TEXT SEARCH CONFIGURATION dummy_tst DROP MAPPING FOR word, word; -- No mapping for token supported by the configuration's parser, fails. ALTER TEXT SEARCH CONFIGURATION dummy_tst DROP MAPPING FOR word; -- Token supported by the configuration's parser, cannot be found, -- succeeds with IF EXISTS. ALTER TEXT SEARCH CONFIGURATION dummy_tst DROP MAPPING IF EXISTS FOR word, word; -- Re-add mapping, with duplicated tokens supported by the parser. ALTER TEXT SEARCH CONFIGURATION dummy_tst ADD MAPPING FOR word, word WITH ispell; -- Not a token supported by the configuration's parser, fails. ALTER TEXT SEARCH CONFIGURATION dummy_tst ADD MAPPING FOR not_a_token WITH ispell; DROP TEXT SEARCH CONFIGURATION dummy_tst; libpg_query-17-6.1.0/test/sql/postgres_regress/tsearch.sql000066400000000000000000001123001477334012600236210ustar00rootroot00000000000000-- directory paths are passed to us in environment variables \getenv abs_srcdir PG_ABS_SRCDIR -- -- 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; -- Load some test data CREATE TABLE test_tsvector( t text, a tsvector ); \set filename :abs_srcdir '/data/tsearch.data' COPY test_tsvector FROM :'filename'; ANALYZE test_tsvector; -- 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) ', to_tsquery('english', 'day & drink')); 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', 'day | drink')); 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', 'day | !drink')); 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', 'painted <-> Ship & drink')); 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', 'painted <-> Ship | drink')); 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', 'painted <-> Ship | !drink')); 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', 'Lorem ipsum urna. Nullam nullam ullamcorper urna.', phraseto_tsquery('english','ullamcorper urna'), 'MaxWords=100, MinWords=5'); 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'); -- Edge cases with empty query SELECT ts_headline('english', '', to_tsquery('english', '')); SELECT ts_headline('english', 'foo bar', to_tsquery('english', '')); --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 & qq & foo & (new <-> 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 & qq & foo & (new <-> 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 & qq & foo & (new <-> 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 & qq & foo & (new <-> 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 & qq & foo & (new <-> 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 & qq & foo & (new <-> 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'); -- parens are ignored, too select websearch_to_tsquery('simple', 'abc (pg or class)'); select websearch_to_tsquery('simple', '(foo bar) or (ding dong)'); -- 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', '"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-17-6.1.0/test/sql/postgres_regress/tsrf.sql000066400000000000000000000173551477334012600231640ustar00rootroot00000000000000-- -- 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-17-6.1.0/test/sql/postgres_regress/tstypes.sql000066400000000000000000000342441477334012600237150ustar00rootroot00000000000000-- 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'; SELECT $$'' '1' '2'$$::tsvector; -- error, empty lexeme is not allowed -- Also try it with non-error-throwing API SELECT pg_input_is_valid('foo', 'tsvector'); SELECT pg_input_is_valid($$''$$, 'tsvector'); SELECT * FROM pg_input_error_info($$''$$, 'tsvector'); --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; -- Also try it with non-error-throwing API SELECT pg_input_is_valid('foo', 'tsquery'); SELECT pg_input_is_valid('foo!', 'tsquery'); SELECT * FROM pg_input_error_info('foo!', 'tsquery'); SELECT * FROM pg_input_error_info('a <100000> 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']); -- null and empty string are disallowed, since we mustn't make an empty lexeme SELECT array_to_tsvector(ARRAY['base','hidden','rebel','spaceship', NULL]); SELECT array_to_tsvector(ARRAY['base','hidden','rebel','spaceship', '']); -- 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', 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-17-6.1.0/test/sql/postgres_regress/tuplesort.sql000066400000000000000000000246571477334012600242520ustar00rootroot00000000000000-- only use parallelism when explicitly intending to do so SET max_parallel_maintenance_workers = 0; SET max_parallel_workers = 0; -- A table 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 sorting of large datums VALUES ---- -- Ensure the order is correct and values look intact SELECT LEFT(a,10),b FROM (VALUES(REPEAT('a', 512 * 1024),1),(REPEAT('b', 512 * 1024),2)) v(a,b) ORDER BY v.a DESC; ---- -- 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 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 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-17-6.1.0/test/sql/postgres_regress/txid.sql000066400000000000000000000061611477334012600231470ustar00rootroot00000000000000-- 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-17-6.1.0/test/sql/postgres_regress/type_sanity.sql000066400000000000000000000477651477334012600245660ustar00rootroot00000000000000-- -- 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 t1.oid, t1.typname FROM pg_type as t1 WHERE t1.typnamespace = 0 OR (t1.typlen <= 0 AND t1.typlen != -1 AND t1.typlen != -2) OR (t1.typtype not in ('b', 'c', 'd', 'e', 'm', 'p', 'r')) OR NOT t1.typisdefined OR (t1.typalign not in ('c', 's', 'i', 'd')) OR (t1.typstorage not in ('p', 'x', 'e', 'm')); -- Look for "pass by value" types that can't be passed by value. SELECT t1.oid, t1.typname FROM pg_type as t1 WHERE t1.typbyval AND (t1.typlen != 1 OR t1.typalign != 'c') AND (t1.typlen != 2 OR t1.typalign != 's') AND (t1.typlen != 4 OR t1.typalign != 'i') AND (t1.typlen != 8 OR t1.typalign != 'd'); -- Look for "toastable" types that aren't varlena. SELECT t1.oid, t1.typname FROM pg_type as t1 WHERE t1.typstorage != 'p' AND (t1.typbyval OR t1.typlen != -1); -- Look for complex types that do not have a typrelid entry, -- or basic types that do. SELECT t1.oid, t1.typname FROM pg_type as t1 WHERE (t1.typtype = 'c' AND t1.typrelid = 0) OR (t1.typtype != 'c' AND t1.typrelid != 0); -- Look for types that should have an array type but don't. -- Generally anything that's not a pseudotype should have an array type. -- However, we do have a small number of exceptions. SELECT t1.oid, t1.typname FROM pg_type as t1 WHERE t1.typtype not in ('p') AND t1.typname NOT LIKE E'\\_%' AND NOT EXISTS (SELECT 1 FROM pg_type as t2 WHERE t2.typname = ('_' || t1.typname)::name AND t2.typelem = t1.oid and t1.typarray = t2.oid) ORDER BY t1.oid; -- Make sure typarray points to a "true" array type of our own base SELECT t1.oid, t1.typname as basetype, t2.typname as arraytype, t2.typsubscript FROM pg_type t1 LEFT JOIN pg_type t2 ON (t1.typarray = t2.oid) WHERE t1.typarray <> 0 AND (t2.oid IS NULL OR t2.typsubscript <> 'array_subscript_handler'::regproc); -- Look for range types that do not have a pg_range entry SELECT t1.oid, t1.typname FROM pg_type as t1 WHERE t1.typtype = 'r' AND NOT EXISTS(SELECT 1 FROM pg_range r WHERE rngtypid = t1.oid); -- Look for range types whose typalign isn't sufficient SELECT t1.oid, t1.typname, t1.typalign, t2.typname, t2.typalign FROM pg_type as t1 LEFT JOIN pg_range as r ON rngtypid = t1.oid LEFT JOIN pg_type as t2 ON rngsubtype = t2.oid WHERE t1.typtype = 'r' AND (t1.typalign != (CASE WHEN t2.typalign = 'd' THEN 'd'::"char" ELSE 'i'::"char" END) OR t2.oid IS NULL); -- Text conversion routines must be provided. SELECT t1.oid, t1.typname FROM pg_type as t1 WHERE (t1.typinput = 0 OR t1.typoutput = 0); -- Check for bogus typinput routines SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typinput = p1.oid AND NOT ((p1.pronargs = 1 AND p1.proargtypes[0] = 'cstring'::regtype) OR (p1.pronargs = 2 AND p1.proargtypes[0] = 'cstring'::regtype AND p1.proargtypes[1] = 'oid'::regtype) OR (p1.pronargs = 3 AND p1.proargtypes[0] = 'cstring'::regtype AND p1.proargtypes[1] = 'oid'::regtype AND p1.proargtypes[2] = 'int4'::regtype)); -- As of 8.0, this check finds refcursor, which is borrowing -- other types' I/O routines SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typinput = p1.oid AND t1.typtype in ('b', 'p') AND NOT (t1.typelem != 0 AND t1.typlen < 0) AND NOT (p1.prorettype = t1.oid AND NOT p1.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 t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typinput = p1.oid AND (t1.typelem != 0 AND t1.typlen < 0) AND NOT (p1.oid = 'array_in'::regproc) ORDER BY 1; -- typinput routines should not be volatile SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typinput = p1.oid AND p1.provolatile NOT IN ('i', 's'); -- Composites, domains, enums, multiranges, ranges should all use the same input routines SELECT DISTINCT typtype, typinput FROM pg_type AS t1 WHERE t1.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 t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typoutput = p1.oid AND t1.typtype in ('b', 'p') AND NOT (p1.pronargs = 1 AND (p1.proargtypes[0] = t1.oid OR (p1.oid = 'array_out'::regproc AND t1.typelem != 0 AND t1.typlen = -1))) ORDER BY 1; SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typoutput = p1.oid AND NOT (p1.prorettype = 'cstring'::regtype AND NOT p1.proretset); -- typoutput routines should not be volatile SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typoutput = p1.oid AND p1.provolatile NOT IN ('i', 's'); -- Composites, enums, multiranges, ranges should all use the same output routines SELECT DISTINCT typtype, typoutput FROM pg_type AS t1 WHERE t1.typtype not in ('b', 'd', 'p') ORDER BY 1; -- Domains should have same typoutput as their base types SELECT t1.oid, t1.typname, t2.oid, t2.typname FROM pg_type AS t1 LEFT JOIN pg_type AS t2 ON t1.typbasetype = t2.oid WHERE t1.typtype = 'd' AND t1.typoutput IS DISTINCT FROM t2.typoutput; -- Check for bogus typreceive routines SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typreceive = p1.oid AND NOT ((p1.pronargs = 1 AND p1.proargtypes[0] = 'internal'::regtype) OR (p1.pronargs = 2 AND p1.proargtypes[0] = 'internal'::regtype AND p1.proargtypes[1] = 'oid'::regtype) OR (p1.pronargs = 3 AND p1.proargtypes[0] = 'internal'::regtype AND p1.proargtypes[1] = 'oid'::regtype AND p1.proargtypes[2] = 'int4'::regtype)); -- As of 7.4, this check finds refcursor, which is borrowing -- other types' I/O routines SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typreceive = p1.oid AND t1.typtype in ('b', 'p') AND NOT (t1.typelem != 0 AND t1.typlen < 0) AND NOT (p1.prorettype = t1.oid AND NOT p1.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 t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typreceive = p1.oid AND (t1.typelem != 0 AND t1.typlen < 0) AND NOT (p1.oid = 'array_recv'::regproc) ORDER BY 1; -- Suspicious if typreceive doesn't take same number of args as typinput SELECT t1.oid, t1.typname, p1.oid, p1.proname, p2.oid, p2.proname FROM pg_type AS t1, pg_proc AS p1, pg_proc AS p2 WHERE t1.typinput = p1.oid AND t1.typreceive = p2.oid AND p1.pronargs != p2.pronargs; -- typreceive routines should not be volatile SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typreceive = p1.oid AND p1.provolatile NOT IN ('i', 's'); -- Composites, domains, enums, multiranges, ranges should all use the same receive routines SELECT DISTINCT typtype, typreceive FROM pg_type AS t1 WHERE t1.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 t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typsend = p1.oid AND t1.typtype in ('b', 'p') AND NOT (p1.pronargs = 1 AND (p1.proargtypes[0] = t1.oid OR (p1.oid = 'array_send'::regproc AND t1.typelem != 0 AND t1.typlen = -1))) ORDER BY 1; SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typsend = p1.oid AND NOT (p1.prorettype = 'bytea'::regtype AND NOT p1.proretset); -- typsend routines should not be volatile SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typsend = p1.oid AND p1.provolatile NOT IN ('i', 's'); -- Composites, enums, multiranges, ranges should all use the same send routines SELECT DISTINCT typtype, typsend FROM pg_type AS t1 WHERE t1.typtype not in ('b', 'd', 'p') ORDER BY 1; -- Domains should have same typsend as their base types SELECT t1.oid, t1.typname, t2.oid, t2.typname FROM pg_type AS t1 LEFT JOIN pg_type AS t2 ON t1.typbasetype = t2.oid WHERE t1.typtype = 'd' AND t1.typsend IS DISTINCT FROM t2.typsend; -- Check for bogus typmodin routines SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typmodin = p1.oid AND NOT (p1.pronargs = 1 AND p1.proargtypes[0] = 'cstring[]'::regtype AND p1.prorettype = 'int4'::regtype AND NOT p1.proretset); -- typmodin routines should not be volatile SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typmodin = p1.oid AND p1.provolatile NOT IN ('i', 's'); -- Check for bogus typmodout routines SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typmodout = p1.oid AND NOT (p1.pronargs = 1 AND p1.proargtypes[0] = 'int4'::regtype AND p1.prorettype = 'cstring'::regtype AND NOT p1.proretset); -- typmodout routines should not be volatile SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typmodout = p1.oid AND p1.provolatile NOT IN ('i', 's'); -- Array types should have same typmodin/out as their element types SELECT t1.oid, t1.typname, t2.oid, t2.typname FROM pg_type AS t1, pg_type AS t2 WHERE t1.typelem = t2.oid AND NOT (t1.typmodin = t2.typmodin AND t1.typmodout = t2.typmodout); -- Array types should have same typdelim as their element types SELECT t1.oid, t1.typname, t2.oid, t2.typname FROM pg_type AS t1, pg_type AS t2 WHERE t1.typarray = t2.oid AND NOT (t1.typdelim = t2.typdelim); -- Look for array types whose typalign isn't sufficient SELECT t1.oid, t1.typname, t1.typalign, t2.typname, t2.typalign FROM pg_type AS t1, pg_type AS t2 WHERE t1.typarray = t2.oid AND t2.typalign != (CASE WHEN t1.typalign = 'd' THEN 'd'::"char" ELSE 'i'::"char" END); -- Check for typelem set without a handler SELECT t1.oid, t1.typname, t1.typelem FROM pg_type AS t1 WHERE t1.typelem != 0 AND t1.typsubscript = 0; -- Check for misuse of standard subscript handlers SELECT t1.oid, t1.typname, t1.typelem, t1.typlen, t1.typbyval FROM pg_type AS t1 WHERE t1.typsubscript = 'array_subscript_handler'::regproc AND NOT (t1.typelem != 0 AND t1.typlen = -1 AND NOT t1.typbyval); SELECT t1.oid, t1.typname, t1.typelem, t1.typlen, t1.typbyval FROM pg_type AS t1 WHERE t1.typsubscript = 'raw_array_subscript_handler'::regproc AND NOT (t1.typelem != 0 AND t1.typlen > 0 AND NOT t1.typbyval); -- Check for bogus typanalyze routines SELECT t1.oid, t1.typname, p1.oid, p1.proname FROM pg_type AS t1, pg_proc AS p1 WHERE t1.typanalyze = p1.oid AND NOT (p1.pronargs = 1 AND p1.proargtypes[0] = 'internal'::regtype AND p1.prorettype = 'bool'::regtype AND NOT p1.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) != (t.typsubscript = 'array_subscript_handler'::regproc) ORDER BY 1; -- **************** pg_class **************** -- Look for illegal values in pg_class fields SELECT c1.oid, c1.relname FROM pg_class as c1 WHERE relkind NOT IN ('r', 'i', 'S', 't', 'v', 'm', 'c', 'f', 'p', 'I') OR relpersistence NOT IN ('p', 'u', 't') OR relreplident NOT IN ('d', 'n', 'f', 'i'); -- All tables, indexes, partitioned indexes and matviews should have an -- access method. SELECT c1.oid, c1.relname FROM pg_class as c1 WHERE c1.relkind NOT IN ('S', 'v', 'f', 'c', 'p') and c1.relam = 0; -- Conversely, sequences, views, foreign tables, types and partitioned -- tables shouldn't have them. SELECT c1.oid, c1.relname FROM pg_class as c1 WHERE c1.relkind IN ('S', 'v', 'f', 'c', 'p') and c1.relam != 0; -- Indexes and partitioned 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', '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 a1.attrelid, a1.attname FROM pg_attribute as a1 WHERE a1.attrelid = 0 OR a1.atttypid = 0 OR a1.attnum = 0 OR a1.attcacheoff != -1 OR a1.attinhcount < 0 OR (a1.attinhcount = 0 AND NOT a1.attislocal); -- Cross-check attnum against parent relation SELECT a1.attrelid, a1.attname, c1.oid, c1.relname FROM pg_attribute AS a1, pg_class AS c1 WHERE a1.attrelid = c1.oid AND a1.attnum > c1.relnatts; -- Detect missing pg_attribute entries: should have as many non-system -- attributes as parent relation expects SELECT c1.oid, c1.relname FROM pg_class AS c1 WHERE c1.relnatts != (SELECT count(*) FROM pg_attribute AS a1 WHERE a1.attrelid = c1.oid AND a1.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 a1.attrelid, a1.attname, t1.oid, t1.typname FROM pg_attribute AS a1, pg_type AS t1 WHERE a1.atttypid = t1.oid AND (a1.attlen != t1.typlen OR a1.attalign != t1.typalign OR a1.attbyval != t1.typbyval OR (a1.attstorage != t1.typstorage AND a1.attstorage != 'p')); -- **************** pg_range **************** -- Look for illegal values in pg_range fields. SELECT r.rngtypid, r.rngsubtype FROM pg_range as r WHERE r.rngtypid = 0 OR r.rngsubtype = 0 OR r.rngsubopc = 0; -- rngcollation should be specified iff subtype is collatable SELECT r.rngtypid, r.rngsubtype, r.rngcollation, t.typcollation FROM pg_range r JOIN pg_type t ON t.oid = r.rngsubtype WHERE (rngcollation = 0) != (typcollation = 0); -- opclass had better be a btree opclass accepting the subtype. -- We must allow anyarray matches, cf IsBinaryCoercible() SELECT r.rngtypid, r.rngsubtype, o.opcmethod, o.opcname FROM pg_range r JOIN pg_opclass o ON o.oid = r.rngsubopc WHERE o.opcmethod != 403 OR ((o.opcintype != r.rngsubtype) AND NOT (o.opcintype = 'pg_catalog.anyarray'::regtype AND EXISTS(select 1 from pg_catalog.pg_type where oid = r.rngsubtype and typelem != 0 and typsubscript = 'array_subscript_handler'::regproc))); -- canonical function, if any, had better match the range type SELECT r.rngtypid, r.rngsubtype, p.proname FROM pg_range r JOIN pg_proc p ON p.oid = r.rngcanonical WHERE pronargs != 1 OR proargtypes[0] != rngtypid OR prorettype != rngtypid; -- subdiff function, if any, had better match the subtype SELECT r.rngtypid, r.rngsubtype, p.proname FROM pg_range r JOIN pg_proc p ON p.oid = r.rngsubdiff WHERE pronargs != 2 OR proargtypes[0] != rngsubtype OR proargtypes[1] != rngsubtype OR prorettype != 'pg_catalog.float8'::regtype; -- every range should have a valid multirange SELECT r.rngtypid, r.rngsubtype, r.rngmultitypid FROM pg_range r WHERE r.rngmultitypid IS NULL OR r.rngmultitypid = 0; -- Create a table that holds all the known in-core data types and leave it -- around so as pg_upgrade is able to test their binary compatibility. CREATE TABLE tab_core_types AS SELECT '(11,12)'::point, '(1,1),(2,2)'::line, '((11,11),(12,12))'::lseg, '((11,11),(13,13))'::box, '((11,12),(13,13),(14,14))'::path AS openedpath, '[(11,12),(13,13),(14,14)]'::path AS closedpath, '((11,12),(13,13),(14,14))'::polygon, '1,1,1'::circle, 'today'::date, 'now'::time, 'now'::timestamp, 'now'::timetz, 'now'::timestamptz, '12 seconds'::interval, '{"reason":"because"}'::json, '{"when":"now"}'::jsonb, '$.a[*] ? (@ > 2)'::jsonpath, '127.0.0.1'::inet, '127.0.0.0/8'::cidr, '00:01:03:86:1c:ba'::macaddr8, '00:01:03:86:1c:ba'::macaddr, 2::int2, 4::int4, 8::int8, 4::float4, '8'::float8, pi()::numeric, 'foo'::"char", 'c'::bpchar, 'abc'::varchar, 'name'::name, 'txt'::text, true::bool, E'\\xDEADBEEF'::bytea, B'10001'::bit, B'10001'::varbit AS varbit, '12.34'::money, 'abc'::refcursor, '1 2'::int2vector, '1 2'::oidvector, format('%I=UC/%I', USER, USER)::aclitem AS aclitem, 'a fat cat sat on a mat and ate a fat rat'::tsvector, 'fat & rat'::tsquery, 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'::uuid, '11'::xid8, 'pg_class'::regclass, 'regtype'::regtype type, 'pg_monitor'::regrole, 'pg_class'::regclass::oid, '(1,1)'::tid, '2'::xid, '3'::cid, '10:20:10,14,15'::txid_snapshot, '10:20:10,14,15'::pg_snapshot, '16/B374D848'::pg_lsn, 1::information_schema.cardinal_number, 'l'::information_schema.character_data, 'n'::information_schema.sql_identifier, 'now'::information_schema.time_stamp, 'YES'::information_schema.yes_or_no, '(1,2)'::int4range, '{(1,2)}'::int4multirange, '(3,4)'::int8range, '{(3,4)}'::int8multirange, '(3,4)'::numrange, '{(3,4)}'::nummultirange, '(2020-01-02, 2021-02-03)'::daterange, '{(2020-01-02, 2021-02-03)}'::datemultirange, '(2020-01-02 03:04:05, 2021-02-03 06:07:08)'::tsrange, '{(2020-01-02 03:04:05, 2021-02-03 06:07:08)}'::tsmultirange, '(2020-01-02 03:04:05, 2021-02-03 06:07:08)'::tstzrange, '{(2020-01-02 03:04:05, 2021-02-03 06:07:08)}'::tstzmultirange; -- Sanity check on the previous table, checking that all core types are -- included in this table. SELECT oid, typname, typtype, typelem, typarray FROM pg_type t WHERE oid < 16384 AND -- Exclude pseudotypes and composite types. typtype NOT IN ('p', 'c') AND -- These reg* types cannot be pg_upgraded, so discard them. oid != ALL(ARRAY['regproc', 'regprocedure', 'regoper', 'regoperator', 'regconfig', 'regdictionary', 'regnamespace', 'regcollation']::regtype[]) AND -- Discard types that do not accept input values as these cannot be -- tested easily. -- Note: XML might be disabled at compile-time. oid != ALL(ARRAY['gtsvector', 'pg_node_tree', 'pg_ndistinct', 'pg_dependencies', 'pg_mcv_list', 'pg_brin_bloom_summary', 'pg_brin_minmax_multi_summary', 'xml']::regtype[]) AND -- Discard arrays. NOT EXISTS (SELECT 1 FROM pg_type u WHERE u.typarray = t.oid) -- Exclude everything from the table created above. This checks -- that no in-core types are missing in tab_core_types. AND NOT EXISTS (SELECT 1 FROM pg_attribute a WHERE a.atttypid=t.oid AND a.attnum > 0 AND a.attrelid='tab_core_types'::regclass); libpg_query-17-6.1.0/test/sql/postgres_regress/typed_table.sql000066400000000000000000000033361477334012600244740ustar00rootroot00000000000000CREATE 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-17-6.1.0/test/sql/postgres_regress/unicode.sql000066400000000000000000000025221477334012600236220ustar00rootroot00000000000000SELECT getdatabaseencoding() <> 'UTF8' AS skip_test \gset \if :skip_test \quit \endif SELECT U&'\0061\0308bc' <> U&'\00E4bc' COLLATE "C" AS sanity_check; SELECT unicode_version() IS NOT NULL; SELECT unicode_assigned(U&'abc'); SELECT unicode_assigned(U&'abc\+10FFFF'); SELECT normalize(''); 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'), (5, '')) vals (num, val) ORDER BY num; SELECT is_normalized('abc', 'def'); -- run-time error libpg_query-17-6.1.0/test/sql/postgres_regress/union.sql000066400000000000000000000437121477334012600233320ustar00rootroot00000000000000-- -- 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 UNION/INTERSECT/EXCEPT set enable_hashagg to on; explain (costs off) select count(*) from ( select unique1 from tenk1 union select fivethous from tenk1 ) ss; select count(*) from ( select unique1 from tenk1 union select fivethous from tenk1 ) ss; 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 union select fivethous from tenk1 ) ss; select count(*) from ( select unique1 from tenk1 union select fivethous from tenk1 ) ss; 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; -- non-hashable type set enable_hashagg to on; explain (costs off) select x from (values ('11'::varbit), ('10'::varbit)) _(x) union select x from (values ('11'::varbit), ('10'::varbit)) _(x); set enable_hashagg to off; explain (costs off) select x from (values ('11'::varbit), ('10'::varbit)) _(x) union select x from (values ('11'::varbit), ('10'::varbit)) _(x); reset enable_hashagg; -- arrays set enable_hashagg to on; explain (costs off) select x from (values (array[1, 2]), (array[1, 3])) _(x) union select x from (values (array[1, 2]), (array[1, 4])) _(x); select x from (values (array[1, 2]), (array[1, 3])) _(x) union select x from (values (array[1, 2]), (array[1, 4])) _(x); explain (costs off) select x from (values (array[1, 2]), (array[1, 3])) _(x) intersect select x from (values (array[1, 2]), (array[1, 4])) _(x); select x from (values (array[1, 2]), (array[1, 3])) _(x) intersect select x from (values (array[1, 2]), (array[1, 4])) _(x); explain (costs off) select x from (values (array[1, 2]), (array[1, 3])) _(x) except select x from (values (array[1, 2]), (array[1, 4])) _(x); select x from (values (array[1, 2]), (array[1, 3])) _(x) except select x from (values (array[1, 2]), (array[1, 4])) _(x); -- non-hashable type explain (costs off) select x from (values (array['10'::varbit]), (array['11'::varbit])) _(x) union select x from (values (array['10'::varbit]), (array['01'::varbit])) _(x); select x from (values (array['10'::varbit]), (array['11'::varbit])) _(x) union select x from (values (array['10'::varbit]), (array['01'::varbit])) _(x); set enable_hashagg to off; explain (costs off) select x from (values (array[1, 2]), (array[1, 3])) _(x) union select x from (values (array[1, 2]), (array[1, 4])) _(x); select x from (values (array[1, 2]), (array[1, 3])) _(x) union select x from (values (array[1, 2]), (array[1, 4])) _(x); explain (costs off) select x from (values (array[1, 2]), (array[1, 3])) _(x) intersect select x from (values (array[1, 2]), (array[1, 4])) _(x); select x from (values (array[1, 2]), (array[1, 3])) _(x) intersect select x from (values (array[1, 2]), (array[1, 4])) _(x); explain (costs off) select x from (values (array[1, 2]), (array[1, 3])) _(x) except select x from (values (array[1, 2]), (array[1, 4])) _(x); select x from (values (array[1, 2]), (array[1, 3])) _(x) except select x from (values (array[1, 2]), (array[1, 4])) _(x); reset enable_hashagg; -- records set enable_hashagg to on; explain (costs off) select x from (values (row(1, 2)), (row(1, 3))) _(x) union select x from (values (row(1, 2)), (row(1, 4))) _(x); select x from (values (row(1, 2)), (row(1, 3))) _(x) union select x from (values (row(1, 2)), (row(1, 4))) _(x); explain (costs off) select x from (values (row(1, 2)), (row(1, 3))) _(x) intersect select x from (values (row(1, 2)), (row(1, 4))) _(x); select x from (values (row(1, 2)), (row(1, 3))) _(x) intersect select x from (values (row(1, 2)), (row(1, 4))) _(x); explain (costs off) select x from (values (row(1, 2)), (row(1, 3))) _(x) except select x from (values (row(1, 2)), (row(1, 4))) _(x); select x from (values (row(1, 2)), (row(1, 3))) _(x) except select x from (values (row(1, 2)), (row(1, 4))) _(x); -- non-hashable type -- With an anonymous row type, the typcache does not report that the -- type is hashable. (Otherwise, this would fail at execution time.) explain (costs off) select x from (values (row('10'::varbit)), (row('11'::varbit))) _(x) union select x from (values (row('10'::varbit)), (row('01'::varbit))) _(x); select x from (values (row('10'::varbit)), (row('11'::varbit))) _(x) union select x from (values (row('10'::varbit)), (row('01'::varbit))) _(x); -- With a defined row type, the typcache can inspect the type's fields -- for hashability. create type ct1 as (f1 varbit); explain (costs off) select x from (values (row('10'::varbit)::ct1), (row('11'::varbit)::ct1)) _(x) union select x from (values (row('10'::varbit)::ct1), (row('01'::varbit)::ct1)) _(x); select x from (values (row('10'::varbit)::ct1), (row('11'::varbit)::ct1)) _(x) union select x from (values (row('10'::varbit)::ct1), (row('01'::varbit)::ct1)) _(x); drop type ct1; set enable_hashagg to off; explain (costs off) select x from (values (row(1, 2)), (row(1, 3))) _(x) union select x from (values (row(1, 2)), (row(1, 4))) _(x); select x from (values (row(1, 2)), (row(1, 3))) _(x) union select x from (values (row(1, 2)), (row(1, 4))) _(x); explain (costs off) select x from (values (row(1, 2)), (row(1, 3))) _(x) intersect select x from (values (row(1, 2)), (row(1, 4))) _(x); select x from (values (row(1, 2)), (row(1, 3))) _(x) intersect select x from (values (row(1, 2)), (row(1, 4))) _(x); explain (costs off) select x from (values (row(1, 2)), (row(1, 3))) _(x) except select x from (values (row(1, 2)), (row(1, 4))) _(x); select x from (values (row(1, 2)), (row(1, 3))) _(x) except select x from (values (row(1, 2)), (row(1, 4))) _(x); -- non-sortable type -- Ensure we get a HashAggregate plan. Keep enable_hashagg=off to ensure -- there's no chance of a sort. explain (costs off) select '123'::xid union select '123'::xid; 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; -- We've no way to check hashed UNION as the empty pathkeys in the Append are -- fine to make use of Unique, which is cheaper than HashAggregate and we've -- no means to disable Unique. explain (costs off) select from generate_series(1,5) intersect 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); -- Try a variation of the above but with a CTE which contains a column, again -- with an empty final select list. -- Ensure we get the expected 1 row with 0 columns with cte as materialized (select s from generate_series(1,5) s) select from cte union select from cte; -- Ensure we get the same result as the above. with cte as not materialized (select s from generate_series(1,5) s) select from cte union select from cte; 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; set enable_sort = 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; reset enable_sort; -- 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); -- -- Test the planner's ability to produce cheap startup plans with Append nodes -- -- Ensure we get a Nested Loop join between tenk1 and tenk2 explain (costs off) select t1.unique1 from tenk1 t1 inner join tenk2 t2 on t1.tenthous = t2.tenthous and t2.thousand = 0 union all (values(1)) limit 1; -- Ensure there is no problem if cheapest_startup_path is NULL explain (costs off) select * from tenk1 t1 left join lateral (select t1.tenthous from tenk2 t2 union all (values(1))) on true limit 1; libpg_query-17-6.1.0/test/sql/postgres_regress/updatable_views.sql000066400000000000000000002300601477334012600253520ustar00rootroot00000000000000-- -- 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'); MERGE INTO ro_view13 AS t USING (VALUES (1, 'Row 1')) AS v(a,b) ON t.a = v.a WHEN MATCHED THEN DELETE; MERGE INTO ro_view13 AS t USING (VALUES (2, 'Row 2')) AS v(a,b) ON t.a = v.a WHEN MATCHED THEN UPDATE SET b = v.b; MERGE INTO ro_view13 AS t USING (VALUES (3, 'Row 3')) AS v(a,b) ON t.a = v.a WHEN NOT MATCHED THEN INSERT VALUES (v.a, v.b); MERGE INTO ro_view13 AS t USING (VALUES (2, 'Row 2')) AS v(a,b) ON t.a = v.a WHEN MATCHED THEN DO NOTHING WHEN NOT MATCHED THEN DO NOTHING; -- should be OK to do nothing MERGE INTO ro_view13 AS t USING (VALUES (3, 'Row 3')) AS v(a,b) ON t.a = v.a WHEN MATCHED THEN DO NOTHING WHEN NOT MATCHED THEN DO NOTHING; -- should be OK to do nothing -- 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 MERGE INTO rw_view14 AS t USING (VALUES (2, 'Merged row 2'), (3, 'Merged row 3')) AS v(a,b) ON t.a = v.a WHEN MATCHED THEN UPDATE SET b = v.b -- should be OK, except... WHEN NOT MATCHED THEN INSERT VALUES (null, v.a, v.b); -- should fail MERGE INTO rw_view14 AS t USING (VALUES (2, 'Merged row 2'), (3, 'Merged row 3')) AS v(a,b) ON t.a = v.a WHEN MATCHED THEN UPDATE SET b = v.b -- should be OK WHEN NOT MATCHED THEN INSERT (a,b) VALUES (v.a, v.b); -- should be OK SELECT * FROM base_tbl ORDER BY a; MERGE INTO rw_view14 AS t USING (VALUES (2, 'Row 2'), (3, 'Row 3')) AS v(a,b) ON t.a = v.a WHEN MATCHED AND t.a = 2 THEN UPDATE SET b = v.b -- should be OK WHEN MATCHED AND t.a = 3 THEN DELETE; -- should be OK SELECT * FROM base_tbl ORDER BY a; -- 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; MERGE INTO ro_view18 AS t USING (VALUES (1, 'Row 1')) AS v(a,b) ON t.a = v.a WHEN MATCHED THEN DO NOTHING; -- should be OK to do nothing 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 MERGE INTO rw_view16 AS t USING (VALUES (3, 'Row 3')) AS v(a,b) ON t.a = v.a WHEN NOT MATCHED THEN INSERT VALUES (v.a, v.b); -- 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; MERGE INTO rw_view1 t USING (VALUES (0, 'ROW 0'), (1, 'ROW 1'), (2, 'ROW 2'), (3, 'ROW 3')) AS v(a,b) ON t.a = v.a WHEN MATCHED AND t.a <= 1 THEN UPDATE SET b = v.b WHEN MATCHED THEN DELETE WHEN NOT MATCHED AND a > 0 THEN INSERT (a) VALUES (v.a) RETURNING merge_action(), v.*, t.*; SELECT * FROM base_tbl ORDER BY a; MERGE INTO rw_view1 t USING (VALUES (0, 'R0'), (1, 'R1'), (2, 'R2'), (3, 'R3')) AS v(a,b) ON t.a = v.a WHEN MATCHED AND t.a <= 1 THEN UPDATE SET b = v.b WHEN MATCHED THEN DELETE WHEN NOT MATCHED BY SOURCE THEN DELETE WHEN NOT MATCHED AND a > 0 THEN INSERT (a) VALUES (v.a) RETURNING merge_action(), v.*, t.*; SELECT * FROM base_tbl ORDER BY a; EXPLAIN (costs off) UPDATE rw_view1 SET a=6 WHERE a=5; EXPLAIN (costs off) DELETE FROM rw_view1 WHERE a=5; EXPLAIN (costs off) MERGE INTO rw_view1 t USING (VALUES (5, 'X')) AS v(a,b) ON t.a = v.a WHEN MATCHED THEN DELETE; EXPLAIN (costs off) MERGE INTO rw_view1 t USING (SELECT * FROM generate_series(1,5)) AS s(a) ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = 'Updated'; EXPLAIN (costs off) MERGE INTO rw_view1 t USING (SELECT * FROM generate_series(1,5)) AS s(a) ON t.a = s.a WHEN NOT MATCHED BY SOURCE THEN DELETE; EXPLAIN (costs off) MERGE INTO rw_view1 t USING (SELECT * FROM generate_series(1,5)) AS s(a) ON t.a = s.a WHEN NOT MATCHED THEN INSERT (a) VALUES (s.a); -- it's still updatable if we add a DO ALSO rule CREATE TABLE base_tbl_hist(ts timestamptz default now(), a int, b text); CREATE RULE base_tbl_log AS ON INSERT TO rw_view1 DO ALSO INSERT INTO base_tbl_hist(a,b) VALUES(new.a, new.b); SELECT table_name, is_updatable, is_insertable_into FROM information_schema.views WHERE table_name = 'rw_view1'; -- Check behavior with DEFAULTs (bug #17633) INSERT INTO rw_view1 VALUES (9, DEFAULT), (10, DEFAULT); SELECT a, b FROM base_tbl_hist; DROP TABLE base_tbl CASCADE; DROP TABLE base_tbl_hist; -- 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; MERGE INTO rw_view2 t USING (VALUES (3, 'R3'), (4, 'R4'), (5, 'R5')) AS v(a,b) ON aaa = v.a WHEN MATCHED AND aaa = 3 THEN DELETE WHEN MATCHED THEN UPDATE SET bbb = v.b WHEN NOT MATCHED THEN INSERT (aaa) VALUES (v.a) RETURNING merge_action(), v.*, t.*; SELECT * FROM rw_view2 ORDER BY aaa; MERGE INTO rw_view2 t USING (VALUES (4, 'r4'), (5, 'r5'), (6, 'r6')) AS v(a,b) ON aaa = v.a WHEN MATCHED AND aaa = 4 THEN DELETE WHEN MATCHED THEN UPDATE SET bbb = v.b WHEN NOT MATCHED THEN INSERT (aaa) VALUES (v.a) WHEN NOT MATCHED BY SOURCE THEN UPDATE SET bbb = 'Not matched by source' RETURNING merge_action(), v.*, t.*; SELECT * FROM rw_view2 ORDER BY aaa; 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; MERGE INTO rw_view2 t USING (VALUES (3, 'Row 3')) AS v(a,b) ON t.a = v.a WHEN NOT MATCHED THEN INSERT VALUES (v.a, v.b); -- should fail 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; MERGE INTO rw_view2 t USING (SELECT x, 'R'||x FROM generate_series(0,3) x) AS s(a,b) ON t.a = s.a WHEN MATCHED AND t.a <= 1 THEN DELETE WHEN MATCHED THEN UPDATE SET b = s.b WHEN NOT MATCHED AND s.a > 0 THEN INSERT VALUES (s.a, s.b) RETURNING merge_action(), s.*, t.*; SELECT * FROM base_tbl ORDER BY a; MERGE INTO rw_view2 t USING (SELECT x, 'r'||x FROM generate_series(0,2) x) AS s(a,b) ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = s.b WHEN NOT MATCHED AND s.a > 0 THEN INSERT VALUES (s.a, s.b) WHEN NOT MATCHED BY SOURCE THEN UPDATE SET b = 'Not matched by source' RETURNING merge_action(), s.*, t.*; SELECT * FROM base_tbl ORDER BY a; EXPLAIN (costs off) UPDATE rw_view2 SET a=3 WHERE a=2; EXPLAIN (costs off) DELETE FROM rw_view2 WHERE a=2; EXPLAIN (costs off) MERGE INTO rw_view2 t USING (SELECT x, 'R'||x FROM generate_series(0,3) x) AS s(a,b) ON t.a = s.a WHEN MATCHED AND t.a <= 1 THEN DELETE WHEN MATCHED THEN UPDATE SET b = s.b WHEN NOT MATCHED AND s.a > 0 THEN INSERT VALUES (s.a, s.b); -- MERGE with incomplete set of INSTEAD OF triggers DROP TRIGGER rw_view1_del_trig ON rw_view1; MERGE INTO rw_view2 t USING (SELECT x, 'R'||x FROM generate_series(0,3) x) AS s(a,b) ON t.a = s.a WHEN MATCHED AND t.a <= 1 THEN DELETE WHEN MATCHED THEN UPDATE SET b = s.b WHEN NOT MATCHED AND s.a > 0 THEN INSERT VALUES (s.a, s.b); -- should fail MERGE INTO rw_view2 t USING (SELECT x, 'R'||x FROM generate_series(0,3) x) AS s(a,b) ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = s.b WHEN NOT MATCHED AND s.a > 0 THEN INSERT VALUES (s.a, s.b); -- ok DROP TRIGGER rw_view1_ins_trig ON rw_view1; MERGE INTO rw_view2 t USING (SELECT x, 'R'||x FROM generate_series(0,3) x) AS s(a,b) ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = s.b WHEN NOT MATCHED AND s.a > 0 THEN INSERT VALUES (s.a, s.b); -- should fail MERGE INTO rw_view2 t USING (SELECT x, 'R'||x FROM generate_series(0,3) x) AS s(a,b) ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = s.b; -- ok -- MERGE with INSTEAD OF triggers on auto-updatable view CREATE TRIGGER rw_view2_upd_trig INSTEAD OF UPDATE ON rw_view2 FOR EACH ROW EXECUTE PROCEDURE rw_view1_trig_fn(); MERGE INTO rw_view2 t USING (SELECT x, 'R'||x FROM generate_series(0,3) x) AS s(a,b) ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = s.b WHEN NOT MATCHED AND s.a > 0 THEN INSERT VALUES (s.a, s.b); -- should fail MERGE INTO rw_view2 t USING (SELECT x, 'R'||x FROM generate_series(0,3) x) AS s(a,b) ON t.a = s.a WHEN MATCHED THEN UPDATE SET b = s.b; -- ok SELECT * FROM base_tbl ORDER BY a; 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; CREATE USER regress_view_user3; 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 MERGE INTO rw_view1 t USING (VALUES ('Row 3', 3.0, 3)) AS v(b,c,a) ON t.aa = v.a WHEN NOT MATCHED THEN INSERT VALUES (v.b, v.c, v.a); -- not allowed MERGE INTO rw_view2 t USING (VALUES ('Row 3', 3.0, 3)) AS v(b,c,a) ON t.aa = v.a WHEN NOT MATCHED THEN INSERT VALUES (v.b, v.c, v.a); -- 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 MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN UPDATE SET bb = bb, cc = cc; -- ok MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN UPDATE SET aa = aa; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN UPDATE SET aa = aa, cc = cc; -- ok MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN UPDATE 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 MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED AND bb = 'xxx' THEN DELETE; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED AND bb = 'xxx' THEN DELETE; -- 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 MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED AND bb = 'xxx' THEN DELETE; -- ok MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED AND bb = 'xxx' THEN DELETE; -- 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 MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET b = 'foo'; -- 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 MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET b = 'foo'; -- 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 MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET b = 'foo'; -- 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 MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET b = 'foo'; -- 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 MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET b = 'foo'; -- 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; MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET b = 'foo'; 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 MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET b = 'bar'; -- 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; MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET b = 'fud'; 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 MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET b = 'foo'; -- 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 MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET b = 'foo'; -- not allowed RESET SESSION AUTHORIZATION; DROP TABLE base_tbl CASCADE; -- security invoker view permissions 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; ALTER VIEW rw_view1 SET (security_invoker = true); INSERT INTO rw_view1 VALUES ('Row 2', 2.0, 2); GRANT SELECT ON rw_view1 TO regress_view_user2; GRANT UPDATE (bb,cc) ON rw_view1 TO regress_view_user2; SET SESSION AUTHORIZATION regress_view_user2; SELECT * FROM base_tbl; -- not allowed SELECT * FROM rw_view1; -- not allowed INSERT INTO base_tbl VALUES (3, 'Row 3', 3.0); -- not allowed INSERT INTO rw_view1 VALUES ('Row 3', 3.0, 3); -- not allowed UPDATE base_tbl SET a=a; -- not allowed UPDATE rw_view1 SET bb=bb, cc=cc; -- not allowed MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN UPDATE SET bb = bb; -- not allowed DELETE FROM base_tbl; -- not allowed DELETE FROM rw_view1; -- not allowed MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN DELETE; -- not allowed SET SESSION AUTHORIZATION regress_view_user1; GRANT SELECT ON base_tbl TO regress_view_user2; GRANT UPDATE (a,c) ON base_tbl TO regress_view_user2; SET SESSION AUTHORIZATION regress_view_user2; SELECT * FROM base_tbl; -- ok SELECT * FROM rw_view1; -- ok UPDATE base_tbl SET a=a, c=c; -- ok UPDATE base_tbl SET b=b; -- not allowed UPDATE rw_view1 SET cc=cc; -- ok MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN UPDATE SET cc = cc; -- ok UPDATE rw_view1 SET aa=aa; -- not allowed UPDATE rw_view1 SET bb=bb; -- not allowed MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN UPDATE SET aa = aa; -- not allowed MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN UPDATE SET bb = bb; -- not allowed SET SESSION AUTHORIZATION regress_view_user1; GRANT INSERT, DELETE ON base_tbl TO regress_view_user2; 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 DELETE FROM base_tbl WHERE a=1; -- ok DELETE FROM rw_view1 WHERE aa=2; -- not allowed MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN DELETE; -- not allowed 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; SET SESSION AUTHORIZATION regress_view_user2; INSERT INTO rw_view1 VALUES ('Row 4', 4.0, 4); -- not allowed DELETE FROM rw_view1 WHERE aa=2; -- not allowed MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN DELETE; -- not allowed SET SESSION AUTHORIZATION regress_view_user1; GRANT INSERT, DELETE ON base_tbl TO regress_view_user2; SET SESSION AUTHORIZATION regress_view_user2; INSERT INTO rw_view1 VALUES ('Row 4', 4.0, 4); -- ok DELETE FROM rw_view1 WHERE aa=2; -- ok MERGE INTO rw_view1 t USING (VALUES (3)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN DELETE; -- ok SELECT * FROM base_tbl; -- ok RESET SESSION AUTHORIZATION; DROP TABLE base_tbl CASCADE; -- ordinary view on top of security invoker 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 b AS bb, c AS cc, a AS aa FROM base_tbl; ALTER VIEW rw_view1 SET (security_invoker = true); SELECT * FROM rw_view1; -- not allowed UPDATE rw_view1 SET aa=aa; -- not allowed MERGE INTO rw_view1 t USING (VALUES (2, 'Row 2', 2.0)) AS v(a,b,c) ON t.aa = v.a WHEN NOT MATCHED THEN INSERT VALUES (v.b, v.c, v.a); -- not allowed SET SESSION AUTHORIZATION regress_view_user2; CREATE VIEW rw_view2 AS SELECT cc AS ccc, aa AS aaa, bb AS bbb FROM rw_view1; GRANT SELECT, UPDATE ON rw_view2 TO regress_view_user3; SELECT * FROM rw_view2; -- not allowed UPDATE rw_view2 SET aaa=aaa; -- not allowed MERGE INTO rw_view2 t USING (VALUES (2, 'Row 2', 2.0)) AS v(a,b,c) ON t.aaa = v.a WHEN NOT MATCHED THEN INSERT VALUES (v.c, v.a, v.b); -- not allowed RESET SESSION AUTHORIZATION; GRANT SELECT ON base_tbl TO regress_view_user1; GRANT UPDATE (a, b) ON base_tbl TO regress_view_user1; SET SESSION AUTHORIZATION regress_view_user1; SELECT * FROM rw_view1; -- ok UPDATE rw_view1 SET aa=aa, bb=bb; -- ok UPDATE rw_view1 SET cc=cc; -- not allowed MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN UPDATE SET aa = aa, bb = bb; -- ok MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN UPDATE SET cc = cc; -- not allowed SET SESSION AUTHORIZATION regress_view_user2; SELECT * FROM rw_view2; -- not allowed UPDATE rw_view2 SET aaa=aaa; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET aaa = aaa; -- not allowed SET SESSION AUTHORIZATION regress_view_user3; SELECT * FROM rw_view2; -- not allowed UPDATE rw_view2 SET aaa=aaa; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET aaa = aaa; -- not allowed SET SESSION AUTHORIZATION regress_view_user1; GRANT SELECT ON rw_view1 TO regress_view_user2; GRANT UPDATE (bb, cc) ON rw_view1 TO regress_view_user2; SET SESSION AUTHORIZATION regress_view_user2; SELECT * FROM rw_view2; -- not allowed UPDATE rw_view2 SET bbb=bbb; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET bbb = bbb; -- not allowed SET SESSION AUTHORIZATION regress_view_user3; SELECT * FROM rw_view2; -- not allowed UPDATE rw_view2 SET bbb=bbb; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET bbb = bbb; -- not allowed RESET SESSION AUTHORIZATION; GRANT SELECT ON base_tbl TO regress_view_user2; GRANT UPDATE (a, c) ON base_tbl TO regress_view_user2; SET SESSION AUTHORIZATION regress_view_user2; SELECT * FROM rw_view2; -- ok UPDATE rw_view2 SET aaa=aaa; -- not allowed UPDATE rw_view2 SET bbb=bbb; -- not allowed UPDATE rw_view2 SET ccc=ccc; -- ok MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET aaa = aaa; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET bbb = bbb; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET ccc = ccc; -- ok SET SESSION AUTHORIZATION regress_view_user3; SELECT * FROM rw_view2; -- not allowed UPDATE rw_view2 SET aaa=aaa; -- not allowed UPDATE rw_view2 SET bbb=bbb; -- not allowed UPDATE rw_view2 SET ccc=ccc; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET aaa = aaa; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET bbb = bbb; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET ccc = ccc; -- not allowed RESET SESSION AUTHORIZATION; GRANT SELECT ON base_tbl TO regress_view_user3; GRANT UPDATE (a, c) ON base_tbl TO regress_view_user3; SET SESSION AUTHORIZATION regress_view_user3; SELECT * FROM rw_view2; -- ok UPDATE rw_view2 SET aaa=aaa; -- not allowed UPDATE rw_view2 SET bbb=bbb; -- not allowed UPDATE rw_view2 SET ccc=ccc; -- ok MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET aaa = aaa; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET bbb = bbb; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET ccc = ccc; -- ok RESET SESSION AUTHORIZATION; REVOKE SELECT, UPDATE ON base_tbl FROM regress_view_user1; SET SESSION AUTHORIZATION regress_view_user1; SELECT * FROM rw_view1; -- not allowed UPDATE rw_view1 SET aa=aa; -- not allowed MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.aa = v.a WHEN MATCHED THEN UPDATE SET aa = aa; -- not allowed SET SESSION AUTHORIZATION regress_view_user2; SELECT * FROM rw_view2; -- ok UPDATE rw_view2 SET aaa=aaa; -- not allowed UPDATE rw_view2 SET bbb=bbb; -- not allowed UPDATE rw_view2 SET ccc=ccc; -- ok MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET aaa = aaa; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET bbb = bbb; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET ccc = ccc; -- ok SET SESSION AUTHORIZATION regress_view_user3; SELECT * FROM rw_view2; -- ok UPDATE rw_view2 SET aaa=aaa; -- not allowed UPDATE rw_view2 SET bbb=bbb; -- not allowed UPDATE rw_view2 SET ccc=ccc; -- ok MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET aaa = aaa; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET bbb = bbb; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET ccc = ccc; -- ok RESET SESSION AUTHORIZATION; REVOKE SELECT, UPDATE ON base_tbl FROM regress_view_user2; SET SESSION AUTHORIZATION regress_view_user2; SELECT * FROM rw_view2; -- not allowed UPDATE rw_view2 SET aaa=aaa; -- not allowed UPDATE rw_view2 SET bbb=bbb; -- not allowed UPDATE rw_view2 SET ccc=ccc; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET aaa = aaa; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET bbb = bbb; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET ccc = ccc; -- not allowed SET SESSION AUTHORIZATION regress_view_user3; SELECT * FROM rw_view2; -- ok UPDATE rw_view2 SET aaa=aaa; -- not allowed UPDATE rw_view2 SET bbb=bbb; -- not allowed UPDATE rw_view2 SET ccc=ccc; -- ok MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET aaa = aaa; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET bbb = bbb; -- not allowed MERGE INTO rw_view2 t USING (VALUES (1)) AS v(a) ON t.aaa = v.a WHEN MATCHED THEN UPDATE SET ccc = ccc; -- ok RESET SESSION AUTHORIZATION; DROP TABLE base_tbl CASCADE; DROP USER regress_view_user1; DROP USER regress_view_user2; DROP USER regress_view_user3; -- 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); MERGE INTO rw_view1 t USING (VALUES (6)) AS v(a) ON t.aa = v.a WHEN NOT MATCHED THEN INSERT (aa) VALUES (v.a); 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 (s, c, a) VALUES (default, default, 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; MERGE INTO rw_view1 t USING (VALUES (-200), (10)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET a = t.a+1; -- Should produce -199 and 11 MERGE INTO ONLY rw_view1 t USING (VALUES (-100), (20)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET a = t.a+1; -- Should produce -99 and 21 MERGE INTO rw_view2 t USING (VALUES (-40), (3)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET a = t.a+1; -- Should produce -39 only MERGE INTO ONLY rw_view2 t USING (VALUES (-30), (4)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET a = t.a+1; -- Should produce -29 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 ORDER BY a, b; MERGE INTO rw_view1 t USING (VALUES (10)) AS v(a) ON t.a = v.a WHEN NOT MATCHED THEN INSERT VALUES (v.a, v.a + 1); -- ok MERGE INTO rw_view1 t USING (VALUES (11)) AS v(a) ON t.a = v.a WHEN NOT MATCHED THEN INSERT VALUES (v.a, v.a - 1); -- should fail MERGE INTO rw_view1 t USING (VALUES (1)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET a = t.a - 1; -- ok MERGE INTO rw_view1 t USING (VALUES (2)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET a = t.a + 1; -- should fail SELECT * FROM base_tbl ORDER BY a, b; 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 MERGE INTO rw_view2 t USING (VALUES (-5)) AS v(a) ON t.a = v.a WHEN NOT MATCHED THEN INSERT VALUES (v.a); -- should fail INSERT INTO rw_view2 VALUES (5); -- ok MERGE INTO rw_view2 t USING (VALUES (6)) AS v(a) ON t.a = v.a WHEN NOT MATCHED THEN INSERT VALUES (v.a); -- ok INSERT INTO rw_view2 VALUES (50); -- ok, but not in view MERGE INTO rw_view2 t USING (VALUES (60)) AS v(a) ON t.a = v.a WHEN NOT MATCHED THEN INSERT VALUES (v.a); -- ok, but not in view UPDATE rw_view2 SET a = a - 10; -- should fail MERGE INTO rw_view2 t USING (VALUES (6)) AS v(a) ON t.a = v.a WHEN MATCHED THEN UPDATE SET a = t.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); MERGE INTO rw_view1 t USING (VALUES ('Tom'), ('Dick'), ('Harry')) AS v(person) ON t.person = v.person WHEN MATCHED AND snoop(t.person) THEN UPDATE SET person = v.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); EXPLAIN (costs off) MERGE INTO rw_view1 t USING (VALUES ('Tom'), ('Dick'), ('Harry')) AS v(person) ON t.person = v.person WHEN MATCHED AND snoop(t.person) THEN UPDATE SET person = v.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); MERGE INTO rw_view2 t USING (VALUES ('Tom'), ('Dick'), ('Harry')) AS v(person) ON t.person = v.person WHEN MATCHED AND snoop(t.person) THEN UPDATE SET person = v.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); EXPLAIN (costs off) MERGE INTO rw_view2 t USING (VALUES ('Tom'), ('Dick'), ('Harry')) AS v(person) ON t.person = v.person WHEN MATCHED AND snoop(t.person) THEN UPDATE SET person = v.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 sub-select in nested security barrier views, per bug #17972 -- CREATE TABLE t1 (a int); CREATE VIEW v1 WITH (security_barrier = true) AS SELECT * FROM t1; CREATE RULE v1_upd_rule AS ON UPDATE TO v1 DO INSTEAD UPDATE t1 SET a = NEW.a WHERE a = OLD.a; CREATE VIEW v2 WITH (security_barrier = true) AS SELECT * FROM v1 WHERE EXISTS (SELECT 1); EXPLAIN (COSTS OFF) UPDATE v2 SET a = 1; DROP VIEW v2; DROP VIEW v1; 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); merge into uv_ptv t using (values (1,2), (1,4)) as v(a,b) on t.a = v.a -- fail: matches 2 src rows when matched then update set b = t.b + 1 when not matched then insert values (v.a, v.b + 1); merge into uv_ptv t using (values (1,2), (1,4)) as v(a,b) on t.a = v.a and t.b = v.b when matched then update set b = t.b + 1 when not matched then insert values (v.a, v.b + 1); -- fail: no partition for b=5 merge into uv_ptv t using (values (1,2), (1,3)) as v(a,b) on t.a = v.a and t.b = v.b when matched then update set b = t.b + 1 when not matched then insert values (v.a, v.b + 1); -- ok select tableoid::regclass, * from uv_pt order by a, b; 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; -- Test a DO ALSO INSERT ... SELECT rule 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 (a, b, e) select new.a, new.b, 'xxx'; truncate base_tab_def; insert into base_tab_def_view values (1, default, default, default, default); insert into base_tab_def_view values (2, default, default, default, default), (3, default, default, default, default); select * from base_tab_def order by a, e nulls first; 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-17-6.1.0/test/sql/postgres_regress/update.sql000066400000000000000000000642331477334012600234650ustar00rootroot00000000000000-- -- 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; -- error, you're not supposed to qualify the target column UPDATE update_test t SET t.b = t.b + 10 WHERE t.a = 10; -- -- 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; -- 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-17-6.1.0/test/sql/postgres_regress/uuid.sql000066400000000000000000000074231477334012600231470ustar00rootroot00000000000000-- 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'); -- test non-error-throwing API SELECT pg_input_is_valid('11', 'uuid'); SELECT * FROM pg_input_error_info('11', 'uuid'); --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; -- extract functions -- version SELECT uuid_extract_version('11111111-1111-5111-8111-111111111111'); -- 5 SELECT uuid_extract_version(gen_random_uuid()); -- 4 SELECT uuid_extract_version('11111111-1111-1111-1111-111111111111'); -- null -- timestamp SELECT uuid_extract_timestamp('C232AB00-9414-11EC-B3C8-9F6BDECED846') = 'Tuesday, February 22, 2022 2:22:22.00 PM GMT+05:00'; -- RFC 4122bis test vector SELECT uuid_extract_timestamp(gen_random_uuid()); -- null SELECT uuid_extract_timestamp('11111111-1111-1111-1111-111111111111'); -- null -- clean up DROP TABLE guid1, guid2 CASCADE; libpg_query-17-6.1.0/test/sql/postgres_regress/vacuum.sql000066400000000000000000000357411477334012600235050ustar00rootroot00000000000000-- -- 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 public.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; -- Test ANALYZE setting relhassubclass=f for non-partitioning inheritance BEGIN; CREATE TABLE past_inh_parent (); CREATE TABLE past_inh_child () INHERITS (past_inh_parent); INSERT INTO past_inh_child DEFAULT VALUES; INSERT INTO past_inh_child DEFAULT VALUES; ANALYZE past_inh_parent; SELECT reltuples, relhassubclass FROM pg_class WHERE oid = 'past_inh_parent'::regclass; DROP TABLE past_inh_child; ANALYZE past_inh_parent; SELECT reltuples, relhassubclass FROM pg_class WHERE oid = 'past_inh_parent'::regclass; COMMIT; -- Test ANALYZE setting relhassubclass=f for partitioning BEGIN; CREATE TABLE past_parted (i int) PARTITION BY LIST(i); CREATE TABLE past_part PARTITION OF past_parted FOR VALUES IN (1); INSERT INTO past_parted VALUES (1),(1); ANALYZE past_parted; DROP TABLE past_part; SELECT reltuples, relhassubclass FROM pg_class WHERE oid = 'past_parted'::regclass; ANALYZE past_parted; SELECT reltuples, relhassubclass FROM pg_class WHERE oid = 'past_parted'::regclass; 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); CREATE TABLE pvactst2 (i INT) WITH (autovacuum_enabled = off); INSERT INTO pvactst2 SELECT generate_series(1, 1000); CREATE INDEX ON pvactst2 (i); CREATE INDEX ON pvactst2 (i); -- 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 parallel vacuum using the minimum maintenance_work_mem with and without -- dead tuples. SET maintenance_work_mem TO 64; VACUUM (PARALLEL 2) pvactst2; DELETE FROM pvactst2 WHERE i < 1000; VACUUM (PARALLEL 2) pvactst2; RESET maintenance_work_mem; -- 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; DROP TABLE pvactst2; -- 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; ALTER TABLE no_index_cleanup SET (vacuum_index_cleanup = auto); 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 = off, toast.vacuum_index_cleanup = yes); 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 AUTO) vactst; -- index cleanup option is ignored if no indexes VACUUM (INDEX_CLEANUP FALSE, FREEZE TRUE) vaccluster; -- TRUNCATE option CREATE TEMP 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, DISABLE_PAGE_SKIPPING) vac_truncate_test; SELECT pg_relation_size('vac_truncate_test') > 0; VACUUM (DISABLE_PAGE_SKIPPING) 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); -- partitioned table with index CREATE TABLE vacparted_i (a int primary key, b varchar(100)) PARTITION BY HASH (a); CREATE TABLE vacparted_i1 PARTITION OF vacparted_i FOR VALUES WITH (MODULUS 2, REMAINDER 0); CREATE TABLE vacparted_i2 PARTITION OF vacparted_i FOR VALUES WITH (MODULUS 2, REMAINDER 1); INSERT INTO vacparted_i SELECT i, 'test_'|| i from generate_series(1,10) i; VACUUM (ANALYZE) vacparted_i; VACUUM (FULL) vacparted_i; VACUUM (FREEZE) vacparted_i; SELECT relname, relhasindex FROM pg_class WHERE relname LIKE 'vacparted_i%' AND relkind IN ('p','r') ORDER BY relname; DROP TABLE vacparted_i; -- 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; -- PROCESS_TOAST option CREATE TABLE vac_option_tab (a INT, t TEXT); INSERT INTO vac_option_tab SELECT a, 't' || a FROM generate_series(1, 10) AS a; ALTER TABLE vac_option_tab ALTER COLUMN t SET STORAGE EXTERNAL; -- Check the number of vacuums done on table vac_option_tab and on its -- toast relation, to check that PROCESS_TOAST and PROCESS_MAIN work on -- what they should. CREATE VIEW vac_option_tab_counts AS SELECT CASE WHEN c.relname IS NULL THEN 'main' ELSE 'toast' END as rel, s.vacuum_count FROM pg_stat_all_tables s LEFT JOIN pg_class c ON s.relid = c.reltoastrelid WHERE c.relname = 'vac_option_tab' OR s.relname = 'vac_option_tab' ORDER BY rel; VACUUM (PROCESS_TOAST TRUE) vac_option_tab; SELECT * FROM vac_option_tab_counts; VACUUM (PROCESS_TOAST FALSE) vac_option_tab; SELECT * FROM vac_option_tab_counts; VACUUM (PROCESS_TOAST FALSE, FULL) vac_option_tab; -- error -- PROCESS_MAIN option -- Only the toast table is processed. VACUUM (PROCESS_MAIN FALSE) vac_option_tab; SELECT * FROM vac_option_tab_counts; -- Nothing is processed. VACUUM (PROCESS_MAIN FALSE, PROCESS_TOAST FALSE) vac_option_tab; SELECT * FROM vac_option_tab_counts; -- Check if the filenodes nodes have been updated as wanted after FULL. SELECT relfilenode AS main_filenode FROM pg_class WHERE relname = 'vac_option_tab' \gset SELECT t.relfilenode AS toast_filenode FROM pg_class c, pg_class t WHERE c.reltoastrelid = t.oid AND c.relname = 'vac_option_tab' \gset -- Only the toast relation is processed. VACUUM (PROCESS_MAIN FALSE, FULL) vac_option_tab; SELECT relfilenode = :main_filenode AS is_same_main_filenode FROM pg_class WHERE relname = 'vac_option_tab'; SELECT t.relfilenode = :toast_filenode AS is_same_toast_filenode FROM pg_class c, pg_class t WHERE c.reltoastrelid = t.oid AND c.relname = 'vac_option_tab'; -- BUFFER_USAGE_LIMIT option VACUUM (BUFFER_USAGE_LIMIT '512 kB') vac_option_tab; ANALYZE (BUFFER_USAGE_LIMIT '512 kB') vac_option_tab; -- try disabling the buffer usage limit VACUUM (BUFFER_USAGE_LIMIT 0) vac_option_tab; ANALYZE (BUFFER_USAGE_LIMIT 0) vac_option_tab; -- value exceeds max size error VACUUM (BUFFER_USAGE_LIMIT 16777220) vac_option_tab; -- value is less than min size error VACUUM (BUFFER_USAGE_LIMIT 120) vac_option_tab; -- integer overflow error VACUUM (BUFFER_USAGE_LIMIT 10000000000) vac_option_tab; -- incompatible with VACUUM FULL error VACUUM (BUFFER_USAGE_LIMIT '512 kB', FULL) vac_option_tab; -- SKIP_DATABASE_STATS option VACUUM (SKIP_DATABASE_STATS) vactst; -- ONLY_DATABASE_STATS option VACUUM (ONLY_DATABASE_STATS); VACUUM (ONLY_DATABASE_STATS) vactst; -- error DROP VIEW vac_option_tab_counts; DROP TABLE vac_option_tab; 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-17-6.1.0/test/sql/postgres_regress/vacuum_parallel.sql000066400000000000000000000042101477334012600253440ustar00rootroot00000000000000SET max_parallel_maintenance_workers TO 4; SET min_parallel_index_scan_size TO '128kB'; -- Bug #17245: Make sure that we don't totally fail to VACUUM individual indexes that -- happen to be below min_parallel_index_scan_size during parallel VACUUM: CREATE TABLE parallel_vacuum_table (a int) WITH (autovacuum_enabled = off); INSERT INTO parallel_vacuum_table SELECT i from generate_series(1, 10000) i; -- Parallel VACUUM will never be used unless there are at least two indexes -- that exceed min_parallel_index_scan_size. Create two such indexes, and -- a third index that is smaller than min_parallel_index_scan_size. CREATE INDEX regular_sized_index ON parallel_vacuum_table(a); CREATE INDEX typically_sized_index ON parallel_vacuum_table(a); -- Note: vacuum_in_leader_small_index can apply deduplication, making it ~3x -- smaller than the other indexes CREATE INDEX vacuum_in_leader_small_index ON parallel_vacuum_table((1)); -- Verify (as best we can) that the cost model for parallel VACUUM -- will make our VACUUM run in parallel, while always leaving it up to the -- parallel leader to handle the vacuum_in_leader_small_index index: SELECT EXISTS ( SELECT 1 FROM pg_class WHERE oid = 'vacuum_in_leader_small_index'::regclass AND pg_relation_size(oid) < pg_size_bytes(current_setting('min_parallel_index_scan_size')) ) as leader_will_handle_small_index; SELECT count(*) as trigger_parallel_vacuum_nindexes FROM pg_class WHERE oid in ('regular_sized_index'::regclass, 'typically_sized_index'::regclass) AND pg_relation_size(oid) >= pg_size_bytes(current_setting('min_parallel_index_scan_size')); -- Parallel VACUUM with B-Tree page deletions, ambulkdelete calls: DELETE FROM parallel_vacuum_table; VACUUM (PARALLEL 4, INDEX_CLEANUP ON) parallel_vacuum_table; -- Since vacuum_in_leader_small_index uses deduplication, we expect an -- assertion failure with bug #17245 (in the absence of bugfix): INSERT INTO parallel_vacuum_table SELECT i FROM generate_series(1, 10000) i; RESET max_parallel_maintenance_workers; RESET min_parallel_index_scan_size; -- Deliberately don't drop table, to get further coverage from tools like -- pg_amcheck in some testing scenarios libpg_query-17-6.1.0/test/sql/postgres_regress/varchar.sql000066400000000000000000000026631477334012600236300ustar00rootroot00000000000000-- -- VARCHAR -- -- -- Build a table for testing -- (This temporarily hides the table created in test_setup.sql) -- CREATE TEMP 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 * FROM VARCHAR_TBL; SELECT c.* FROM VARCHAR_TBL c WHERE c.f1 <> 'a'; SELECT c.* FROM VARCHAR_TBL c WHERE c.f1 = 'a'; SELECT c.* FROM VARCHAR_TBL c WHERE c.f1 < 'a'; SELECT c.* FROM VARCHAR_TBL c WHERE c.f1 <= 'a'; SELECT c.* FROM VARCHAR_TBL c WHERE c.f1 > 'a'; SELECT c.* FROM VARCHAR_TBL c WHERE c.f1 >= 'a'; DROP TABLE VARCHAR_TBL; -- -- Now test longer arrays of char -- -- This varchar_tbl was already created and filled in test_setup.sql. -- Here we just try to insert bad values. -- INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde'); SELECT * FROM VARCHAR_TBL; -- Also try it with non-error-throwing API SELECT pg_input_is_valid('abcd ', 'varchar(4)'); SELECT pg_input_is_valid('abcde', 'varchar(4)'); SELECT * FROM pg_input_error_info('abcde', 'varchar(4)'); libpg_query-17-6.1.0/test/sql/postgres_regress/window.sql000066400000000000000000002175071477334012600235160ustar00rootroot00000000000000-- -- 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 lag(ten, four, 0.7) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten; 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 lead(ten * 2, 1, -1.4) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten; 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; -- window functions returning pass-by-ref values from different rows select x, lag(x, 1) over (order by x), lead(x, 3) over (order by x) from (select x::numeric as x from generate_series(1,10) x); -- 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); -- There is a syntactic ambiguity in the SQL standard. Since -- UNBOUNDED is a non-reserved word, it could be the name of a -- function parameter and be used as an expression. There is a -- grammar hack to resolve such cases as the keyword. The following -- tests record this behavior. CREATE FUNCTION unbounded_syntax_test1a(x int) RETURNS TABLE (a int, b int, c int) LANGUAGE SQL BEGIN ATOMIC SELECT sum(unique1) over (rows between x preceding and x following), unique1, four FROM tenk1 WHERE unique1 < 10; END; CREATE FUNCTION unbounded_syntax_test1b(x int) RETURNS TABLE (a int, b int, c int) LANGUAGE SQL AS $$ SELECT sum(unique1) over (rows between x preceding and x following), unique1, four FROM tenk1 WHERE unique1 < 10; $$; -- These will apply the argument to the window specification inside the function. SELECT * FROM unbounded_syntax_test1a(2); SELECT * FROM unbounded_syntax_test1b(2); CREATE FUNCTION unbounded_syntax_test2a(unbounded int) RETURNS TABLE (a int, b int, c int) LANGUAGE SQL BEGIN ATOMIC SELECT sum(unique1) over (rows between unbounded preceding and unbounded following), unique1, four FROM tenk1 WHERE unique1 < 10; END; CREATE FUNCTION unbounded_syntax_test2b(unbounded int) RETURNS TABLE (a int, b int, c int) LANGUAGE SQL AS $$ SELECT sum(unique1) over (rows between unbounded preceding and unbounded following), unique1, four FROM tenk1 WHERE unique1 < 10; $$; -- These will not apply the argument but instead treat UNBOUNDED as a keyword. SELECT * FROM unbounded_syntax_test2a(2); SELECT * FROM unbounded_syntax_test2b(2); DROP FUNCTION unbounded_syntax_test1a, unbounded_syntax_test1b, unbounded_syntax_test2a, unbounded_syntax_test2b; -- Other tests with token UNBOUNDED in potentially problematic position CREATE FUNCTION unbounded(x int) RETURNS int LANGUAGE SQL IMMUTABLE RETURN x; SELECT sum(unique1) over (rows between 1 preceding and 1 following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (rows between unbounded(1) preceding and unbounded(1) following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (rows between unbounded.x preceding and unbounded.x following), unique1, four FROM tenk1, (values (1)) as unbounded(x) WHERE unique1 < 10; DROP FUNCTION unbounded; -- 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', '-infinity'), (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', 'infinity'), (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 'inf' preceding and 'inf' preceding); 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' following 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 'inf' preceding and 'inf' preceding); 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' following 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 'inf' preceding and 'inf' 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 'inf' preceding and 'inf' preceding); 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 'inf' following and 'inf' 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.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 (0, '10:00', '10:00 BST', '-infinity', '-infinity', '-infinity'), (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'), (11, '21:00', '21:00 BST', 'infinity', 'infinity', 'infinity'); 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_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); -- error, negative offset disallowed 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 'infinity'::interval preceding and 'infinity'::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 range between 'infinity'::interval preceding and 'infinity'::interval preceding); 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 'infinity'::interval following and 'infinity'::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 range between '-infinity'::interval following and 'infinity'::interval following); -- error, negative offset disallowed 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_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); -- error, negative offset disallowed 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 'infinity'::interval preceding and 'infinity'::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 range between 'infinity'::interval preceding and 'infinity'::interval preceding); 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 'infinity'::interval following and 'infinity'::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 range between 'infinity'::interval following and '-infinity'::interval following); -- error, negative offset disallowed 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_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); -- error, negative offset disallowed 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 'infinity'::interval preceding and 'infinity'::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 range between 'infinity'::interval preceding and 'infinity'::interval preceding); 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 'infinity'::interval following and 'infinity'::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 range between '-infinity'::interval following and 'infinity'::interval following); -- error, negative offset disallowed 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_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); -- error, negative offset disallowed 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 'infinity'::interval preceding and 'infinity'::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 range between 'infinity'::interval preceding and 'infinity'::interval preceding); 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 'infinity'::interval following and 'infinity'::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 range between '-infinity'::interval following and 'infinity'::interval following); -- error, negative offset disallowed 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); 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); -- error, negative offset disallowed 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 'infinity'::interval preceding and 'infinity'::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 range between 'infinity'::interval preceding and 'infinity'::interval preceding); 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 'infinity'::interval following and 'infinity'::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 range between '-infinity'::interval following and 'infinity'::interval following); -- error, negative offset disallowed -- 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 SupportRequestOptimizeWindowClause's ability to de-duplicate -- WindowClauses -- -- Ensure WindowClause frameOptions are changed so that only a single -- WindowAgg exists in the plan. EXPLAIN (COSTS OFF) SELECT empno, depname, row_number() OVER (PARTITION BY depname ORDER BY enroll_date) rn, rank() OVER (PARTITION BY depname ORDER BY enroll_date ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) rnk, dense_rank() OVER (PARTITION BY depname ORDER BY enroll_date RANGE BETWEEN CURRENT ROW AND CURRENT ROW) drnk, ntile(10) OVER (PARTITION BY depname ORDER BY enroll_date RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) nt, percent_rank() OVER (PARTITION BY depname ORDER BY enroll_date ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) pr, cume_dist() OVER (PARTITION BY depname ORDER BY enroll_date RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) cd FROM empsalary; -- Ensure WindowFuncs which cannot support their WindowClause's frameOptions -- being changed are untouched EXPLAIN (COSTS OFF, VERBOSE) SELECT empno, depname, row_number() OVER (PARTITION BY depname ORDER BY enroll_date) rn, rank() OVER (PARTITION BY depname ORDER BY enroll_date ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) rnk, count(*) OVER (PARTITION BY depname ORDER BY enroll_date RANGE BETWEEN CURRENT ROW AND CURRENT ROW) cnt FROM empsalary; -- Ensure the above query gives us the expected results SELECT empno, depname, row_number() OVER (PARTITION BY depname ORDER BY enroll_date) rn, rank() OVER (PARTITION BY depname ORDER BY enroll_date ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) rnk, count(*) OVER (PARTITION BY depname ORDER BY enroll_date RANGE BETWEEN CURRENT ROW AND CURRENT ROW) cnt FROM empsalary; -- 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 window function run conditions are properly pushed down into the -- WindowAgg EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, row_number() OVER (ORDER BY empno) rn FROM empsalary) emp WHERE rn < 3; -- The following 3 statements should result the same result. SELECT * FROM (SELECT empno, row_number() OVER (ORDER BY empno) rn FROM empsalary) emp WHERE rn < 3; SELECT * FROM (SELECT empno, row_number() OVER (ORDER BY empno) rn FROM empsalary) emp WHERE 3 > rn; SELECT * FROM (SELECT empno, row_number() OVER (ORDER BY empno) rn FROM empsalary) emp WHERE 2 >= rn; -- Ensure r <= 3 is pushed down into the run condition of the window agg EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, salary, rank() OVER (ORDER BY salary DESC) r FROM empsalary) emp WHERE r <= 3; SELECT * FROM (SELECT empno, salary, rank() OVER (ORDER BY salary DESC) r FROM empsalary) emp WHERE r <= 3; -- Ensure dr = 1 is converted to dr <= 1 to get all rows leading up to dr = 1 EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, salary, dense_rank() OVER (ORDER BY salary DESC) dr FROM empsalary) emp WHERE dr = 1; SELECT * FROM (SELECT empno, salary, dense_rank() OVER (ORDER BY salary DESC) dr FROM empsalary) emp WHERE dr = 1; -- Check COUNT() and COUNT(*) EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, salary, count(*) OVER (ORDER BY salary DESC) c FROM empsalary) emp WHERE c <= 3; SELECT * FROM (SELECT empno, salary, count(*) OVER (ORDER BY salary DESC) c FROM empsalary) emp WHERE c <= 3; EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, salary, count(empno) OVER (ORDER BY salary DESC) c FROM empsalary) emp WHERE c <= 3; SELECT * FROM (SELECT empno, salary, count(empno) OVER (ORDER BY salary DESC) c FROM empsalary) emp WHERE c <= 3; EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, salary, count(*) OVER (ORDER BY salary DESC ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) c FROM empsalary) emp WHERE c >= 3; EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, salary, count(*) OVER () c FROM empsalary) emp WHERE 11 <= c; EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, salary, count(*) OVER (ORDER BY salary DESC) c, dense_rank() OVER (ORDER BY salary DESC) dr FROM empsalary) emp WHERE dr = 1; -- Ensure we get a run condition when there's a PARTITION BY clause EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, depname, row_number() OVER (PARTITION BY depname ORDER BY empno) rn FROM empsalary) emp WHERE rn < 3; -- and ensure we get the correct results from the above plan SELECT * FROM (SELECT empno, depname, row_number() OVER (PARTITION BY depname ORDER BY empno) rn FROM empsalary) emp WHERE rn < 3; -- ensure that "unused" subquery columns are not removed when the column only -- exists in the run condition EXPLAIN (COSTS OFF) SELECT empno, depname FROM (SELECT empno, depname, row_number() OVER (PARTITION BY depname ORDER BY empno) rn FROM empsalary) emp WHERE rn < 3; -- likewise with count(empno) instead of row_number() EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, depname, salary, count(empno) OVER (PARTITION BY depname ORDER BY salary DESC) c FROM empsalary) emp WHERE c <= 3; -- and again, check the results are what we expect. SELECT * FROM (SELECT empno, depname, salary, count(empno) OVER (PARTITION BY depname ORDER BY salary DESC) c FROM empsalary) emp WHERE c <= 3; -- Ensure we get the correct run condition when the window function is both -- monotonically increasing and decreasing. EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, depname, salary, count(empno) OVER () c FROM empsalary) emp WHERE c = 1; -- Try another case with a WindowFunc with a byref return type SELECT * FROM (SELECT row_number() OVER (PARTITION BY salary) AS rn, lead(depname) OVER (PARTITION BY salary) || ' Department' AS n_dep FROM empsalary) emp WHERE rn < 1; -- Some more complex cases with multiple window clauses EXPLAIN (COSTS OFF) SELECT * FROM (SELECT *, count(salary) OVER (PARTITION BY depname || '') c1, -- w1 row_number() OVER (PARTITION BY depname) rn, -- w2 count(*) OVER (PARTITION BY depname) c2, -- w2 count(*) OVER (PARTITION BY '' || depname) c3, -- w3 ntile(2) OVER (PARTITION BY depname) nt -- w2 FROM empsalary ) e WHERE rn <= 1 AND c1 <= 3 AND nt < 2; -- Ensure we correctly filter out all of the run conditions from each window SELECT * FROM (SELECT *, count(salary) OVER (PARTITION BY depname || '') c1, -- w1 row_number() OVER (PARTITION BY depname) rn, -- w2 count(*) OVER (PARTITION BY depname) c2, -- w2 count(*) OVER (PARTITION BY '' || depname) c3, -- w3 ntile(2) OVER (PARTITION BY depname) nt -- w2 FROM empsalary ) e WHERE rn <= 1 AND c1 <= 3 AND nt < 2; -- Ensure we remove references to reduced outer joins as nulling rels in run -- conditions EXPLAIN (COSTS OFF) SELECT 1 FROM (SELECT ntile(e2.salary) OVER (PARTITION BY e1.depname) AS c FROM empsalary e1 LEFT JOIN empsalary e2 ON TRUE WHERE e1.empno = e2.empno) s WHERE s.c = 1; -- Ensure the run condition optimization is used in cases where the WindowFunc -- has a Var from another query level EXPLAIN (COSTS OFF) SELECT 1 FROM (SELECT ntile(s1.x) OVER () AS c FROM (SELECT (SELECT 1) AS x) AS s1) s WHERE s.c = 1; -- Tests to ensure we don't push down the run condition when it's not valid to -- do so. -- Ensure we don't push down when the frame options show that the window -- function is not monotonically increasing EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, salary, count(*) OVER (ORDER BY salary DESC ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) c FROM empsalary) emp WHERE c <= 3; -- Ensure we don't push down when the window function's monotonic properties -- don't match that of the clauses. EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, salary, count(*) OVER (ORDER BY salary) c FROM empsalary) emp WHERE 3 <= c; -- Ensure we don't use a run condition when there's a volatile function in the -- WindowFunc EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, salary, count(random()) OVER (ORDER BY empno DESC) c FROM empsalary) emp WHERE c = 1; -- Ensure we don't use a run condition when the WindowFunc contains subplans EXPLAIN (COSTS OFF) SELECT * FROM (SELECT empno, salary, count((SELECT 1)) OVER (ORDER BY empno DESC) c FROM empsalary) emp WHERE c = 1; -- 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'; -- Ensure that the evaluation order of the WindowAggs results in the WindowAgg -- with the same sort order that's required by the ORDER BY is evaluated last. EXPLAIN (COSTS OFF) SELECT empno, enroll_date, depname, sum(salary) OVER (PARTITION BY depname order by empno) depsalary, min(salary) OVER (PARTITION BY depname order by enroll_date) depminsalary FROM empsalary ORDER BY depname, empno; -- As above, but with an adjusted ORDER BY to ensure the above plan didn't -- perform only 2 sorts by accident. EXPLAIN (COSTS OFF) SELECT empno, enroll_date, depname, sum(salary) OVER (PARTITION BY depname order by empno) depsalary, min(salary) OVER (PARTITION BY depname order by enroll_date) depminsalary FROM empsalary ORDER BY depname, enroll_date; SET enable_hashagg TO off; -- Ensure we don't get a sort for both DISTINCT and ORDER BY. We expect the -- sort for the DISTINCT to provide presorted input for the ORDER BY. EXPLAIN (COSTS OFF) SELECT DISTINCT empno, enroll_date, depname, sum(salary) OVER (PARTITION BY depname order by empno) depsalary, min(salary) OVER (PARTITION BY depname order by enroll_date) depminsalary FROM empsalary ORDER BY depname, enroll_date; -- As above but adjust the ORDER BY clause to help ensure the plan with the -- minimum amount of sorting wasn't a fluke. EXPLAIN (COSTS OFF) SELECT DISTINCT empno, enroll_date, depname, sum(salary) OVER (PARTITION BY depname order by empno) depsalary, min(salary) OVER (PARTITION BY depname order by enroll_date) depminsalary FROM empsalary ORDER BY depname, empno; RESET enable_hashagg; -- 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; -- Test incremental sorting EXPLAIN (COSTS OFF) SELECT * FROM (SELECT depname, empno, salary, enroll_date, row_number() OVER (PARTITION BY depname ORDER BY enroll_date) AS first_emp, row_number() OVER (PARTITION BY depname ORDER BY enroll_date DESC) AS last_emp FROM empsalary) emp WHERE first_emp = 1 OR last_emp = 1; SELECT * FROM (SELECT depname, empno, salary, enroll_date, row_number() OVER (PARTITION BY depname ORDER BY enroll_date) AS first_emp, row_number() OVER (PARTITION BY depname ORDER BY enroll_date DESC) AS last_emp FROM empsalary) emp WHERE first_emp = 1 OR last_emp = 1; -- 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); -- moving aggregates over infinite intervals SELECT x ,avg(x) OVER(ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING ) as curr_next_avg ,avg(x) OVER(ROWS BETWEEN 1 PRECEDING AND CURRENT ROW ) as prev_curr_avg ,sum(x) OVER(ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING ) as curr_next_sum ,sum(x) OVER(ROWS BETWEEN 1 PRECEDING AND CURRENT ROW ) as prev_curr_sum FROM (VALUES (NULL::interval), ('infinity'::interval), ('-2147483648 days -2147483648 months -9223372036854775807 usecs'), -- extreme interval value ('-infinity'::interval), ('2147483647 days 2147483647 months 9223372036854775806 usecs'), -- extreme interval value ('infinity'::interval), ('6 days'::interval), ('7 days'::interval), (NULL::interval), ('-infinity'::interval)) v(x); --should fail. SELECT x, avg(x) OVER(ROWS BETWEEN CURRENT ROW AND 2 FOLLOWING) FROM (VALUES (NULL::interval), ('3 days'::interval), ('infinity'::timestamptz - now()), ('6 days'::interval), ('-infinity'::interval)) v(x); --should fail. SELECT x, sum(x) OVER(ROWS BETWEEN CURRENT ROW AND 2 FOLLOWING) FROM (VALUES (NULL::interval), ('3 days'::interval), ('infinity'::timestamptz - now()), ('6 days'::interval), ('-infinity'::interval)) v(x); 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); -- -- Test WindowAgg costing takes into account the number of rows that need to -- be fetched before the first row can be output. -- -- Ensure we get a cheap start up plan as the WindowAgg can output the first -- row after reading 1 row from the join. EXPLAIN (COSTS OFF) SELECT COUNT(*) OVER (ORDER BY t1.unique1) FROM tenk1 t1 INNER JOIN tenk1 t2 ON t1.unique1 = t2.tenthous LIMIT 1; -- Ensure we get a cheap total plan. Lack of ORDER BY in the WindowClause -- means that all rows must be read from the join, so a cheap startup plan -- isn't a good choice. EXPLAIN (COSTS OFF) SELECT COUNT(*) OVER () FROM tenk1 t1 INNER JOIN tenk1 t2 ON t1.unique1 = t2.tenthous WHERE t2.two = 1 LIMIT 1; -- Ensure we get a cheap total plan. This time use UNBOUNDED FOLLOWING, which -- needs to read all join rows to output the first WindowAgg row. EXPLAIN (COSTS OFF) SELECT COUNT(*) OVER (ORDER BY t1.unique1 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM tenk1 t1 INNER JOIN tenk1 t2 ON t1.unique1 = t2.tenthous LIMIT 1; -- Ensure we get a cheap total plan. This time use 10000 FOLLOWING so we need -- to read all join rows. EXPLAIN (COSTS OFF) SELECT COUNT(*) OVER (ORDER BY t1.unique1 ROWS BETWEEN UNBOUNDED PRECEDING AND 10000 FOLLOWING) FROM tenk1 t1 INNER JOIN tenk1 t2 ON t1.unique1 = t2.tenthous LIMIT 1; -- 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-17-6.1.0/test/sql/postgres_regress/with.sql000066400000000000000000001243251477334012600231550ustar00rootroot00000000000000-- -- 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; -- UNION DISTINCT requires hashable type WITH RECURSIVE t(n) AS ( VALUES ('01'::varbit) UNION SELECT n || '10'::varbit FROM t WHERE n < '100'::varbit ) SELECT n 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, pg_typeof(x) FROM q; WITH RECURSIVE t(n) AS ( SELECT 'foo' UNION ALL SELECT n || ' bar' FROM t WHERE length(n) < 20 ) SELECT n, pg_typeof(n) 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, pg_typeof(n) 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); CREATE TEMP TABLE duplicates (a INT NOT NULL); INSERT INTO duplicates VALUES(1), (1); -- Try out a recursive UNION case where the non-recursive part's table slot -- uses TTSOpsBufferHeapTuple and contains duplicate rows. WITH RECURSIVE cte (a) as ( SELECT a FROM duplicates UNION SELECT a FROM cte ) SELECT a FROM cte; -- test that column statistics from a materialized CTE are available -- to upper planner (otherwise, we'd get a stupider plan) explain (costs off) with x as materialized (select unique1 from tenk1 b) select count(*) from tenk1 a where unique1 in (select * from x); explain (costs off) with x as materialized (insert into tenk1 default values returning unique1) select count(*) from tenk1 a where unique1 in (select * from x); -- test that pathkeys from a materialized CTE are propagated up to the -- outer query explain (costs off) with x as materialized (select unique1 from tenk1 b order by unique1) select count(*) from tenk1 a where unique1 in (select * from x); -- SEARCH clause create temp table graph0( f int, t int, label text ); insert into graph0 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'); explain (verbose, costs off) with recursive search_graph(f, t, label) as ( select * from graph0 g union all select g.* from graph0 g, search_graph sg where g.f = sg.t ) search depth first by f, t set seq select * from search_graph order by seq; with recursive search_graph(f, t, label) as ( select * from graph0 g union all select g.* from graph0 g, search_graph sg where g.f = sg.t ) search depth first by f, t set seq select * from search_graph order by seq; with recursive search_graph(f, t, label) as ( select * from graph0 g union distinct select g.* from graph0 g, search_graph sg where g.f = sg.t ) search depth first by f, t set seq select * from search_graph order by seq; explain (verbose, costs off) with recursive search_graph(f, t, label) as ( select * from graph0 g union all select g.* from graph0 g, search_graph sg where g.f = sg.t ) search breadth first by f, t set seq select * from search_graph order by seq; with recursive search_graph(f, t, label) as ( select * from graph0 g union all select g.* from graph0 g, search_graph sg where g.f = sg.t ) search breadth first by f, t set seq select * from search_graph order by seq; with recursive search_graph(f, t, label) as ( select * from graph0 g union distinct select g.* from graph0 g, search_graph sg where g.f = sg.t ) search breadth first by f, t set seq select * from search_graph order by seq; -- a constant initial value causes issues for EXPLAIN explain (verbose, costs off) with recursive test as ( select 1 as x union all select x + 1 from test ) search depth first by x set y select * from test limit 5; with recursive test as ( select 1 as x union all select x + 1 from test ) search depth first by x set y select * from test limit 5; explain (verbose, costs off) with recursive test as ( select 1 as x union all select x + 1 from test ) search breadth first by x set y select * from test limit 5; with recursive test as ( select 1 as x union all select x + 1 from test ) search breadth first by x set y select * from test limit 5; -- various syntax errors with recursive search_graph(f, t, label) as ( select * from graph0 g union all select g.* from graph0 g, search_graph sg where g.f = sg.t ) search depth first by foo, tar set seq select * from search_graph; with recursive search_graph(f, t, label) as ( select * from graph0 g union all select g.* from graph0 g, search_graph sg where g.f = sg.t ) search depth first by f, t set label select * from search_graph; with recursive search_graph(f, t, label) as ( select * from graph0 g union all select g.* from graph0 g, search_graph sg where g.f = sg.t ) search depth first by f, t, f set seq select * from search_graph; with recursive search_graph(f, t, label) as ( select * from graph0 g union all select * from graph0 g union all select g.* from graph0 g, search_graph sg where g.f = sg.t ) search depth first by f, t set seq select * from search_graph order by seq; with recursive search_graph(f, t, label) as ( select * from graph0 g union all (select * from graph0 g union all select g.* from graph0 g, search_graph sg where g.f = sg.t) ) search depth first by f, t set seq select * from search_graph order by seq; -- check that we distinguish same CTE name used at different levels -- (this case could be supported, perhaps, but it isn't today) with recursive x(col) as ( select 1 union (with x as (select * from x) select * from x) ) search depth first by col set seq select * from x; -- test ruleutils and view expansion create temp view v_search as with recursive search_graph(f, t, label) as ( select * from graph0 g union all select g.* from graph0 g, search_graph sg where g.f = sg.t ) search depth first by f, t set seq select f, t, label from search_graph; select pg_get_viewdef('v_search'); select * from v_search; -- -- 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, is_cycle, path) as ( select *, false, array[row(g.f, g.t)] from graph g union all select g.*, row(g.f, g.t) = any(path), path || row(g.f, g.t) from graph g, search_graph sg where g.f = sg.t and not is_cycle ) select * from search_graph; -- UNION DISTINCT exercises row type hashing support with recursive search_graph(f, t, label, is_cycle, path) as ( select *, false, array[row(g.f, g.t)] from graph g union distinct select g.*, row(g.f, g.t) = any(path), path || row(g.f, g.t) from graph g, search_graph sg where g.f = sg.t and not is_cycle ) select * from search_graph; -- ordering by the path column has same effect as SEARCH DEPTH FIRST with recursive search_graph(f, t, label, is_cycle, path) as ( select *, false, array[row(g.f, g.t)] from graph g union all select g.*, row(g.f, g.t) = any(path), path || row(g.f, g.t) from graph g, search_graph sg where g.f = sg.t and not is_cycle ) select * from search_graph order by path; -- CYCLE clause explain (verbose, costs off) with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) cycle f, t set is_cycle using path select * from search_graph; with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) cycle f, t set is_cycle using path select * from search_graph; with recursive search_graph(f, t, label) as ( select * from graph g union distinct select g.* from graph g, search_graph sg where g.f = sg.t ) cycle f, t set is_cycle to 'Y' default 'N' using path select * from search_graph; explain (verbose, costs off) with recursive test as ( select 0 as x union all select (x + 1) % 10 from test ) cycle x set is_cycle using path select * from test; with recursive test as ( select 0 as x union all select (x + 1) % 10 from test ) cycle x set is_cycle using path select * from test; with recursive test as ( select 0 as x union all select (x + 1) % 10 from test where not is_cycle -- redundant, but legal ) cycle x set is_cycle using path select * from test; -- multiple CTEs with recursive graph(f, t, label) as ( 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') ), search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) cycle f, t set is_cycle to true default false using path select f, t, label from search_graph; -- star expansion with recursive a as ( select 1 as b union all select * from a ) cycle b set c using p select * from a; -- search+cycle with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) search depth first by f, t set seq cycle f, t set is_cycle using path select * from search_graph; with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) search breadth first by f, t set seq cycle f, t set is_cycle using path select * from search_graph; -- various syntax errors with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) cycle foo, tar set is_cycle using path select * from search_graph; with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) cycle f, t set is_cycle to true default 55 using path select * from search_graph; with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) cycle f, t set is_cycle to point '(1,1)' default point '(0,0)' using path select * from search_graph; with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) cycle f, t set label to true default false using path select * from search_graph; with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) cycle f, t set is_cycle to true default false using label select * from search_graph; with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) cycle f, t set foo to true default false using foo select * from search_graph; with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) cycle f, t, f set is_cycle to true default false using path select * from search_graph; with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) search depth first by f, t set foo cycle f, t set foo to true default false using path select * from search_graph; with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) search depth first by f, t set foo cycle f, t set is_cycle to true default false using foo select * from search_graph; -- test ruleutils and view expansion create temp view v_cycle1 as with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) cycle f, t set is_cycle using path select f, t, label from search_graph; create temp view v_cycle2 as with recursive search_graph(f, t, label) as ( select * from graph g union all select g.* from graph g, search_graph sg where g.f = sg.t ) cycle f, t set is_cycle to 'Y' default 'N' using path select f, t, label from search_graph; select pg_get_viewdef('v_cycle1'); select pg_get_viewdef('v_cycle2'); select * from v_cycle1; select * from v_cycle2; -- -- 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 -- WITH x(n, b) AS (SELECT 1) SELECT * FROM x; -- 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; -- allow this, because we historically have WITH RECURSIVE x(n) AS ( WITH x1 AS (SELECT 1 AS n) SELECT 0 UNION SELECT * FROM x1) SELECT * FROM x; -- but this should be rejected WITH RECURSIVE x(n) AS ( WITH x1 AS (SELECT 1 FROM x) SELECT 0 UNION SELECT * FROM x1) SELECT * FROM x; -- and this too WITH RECURSIVE x(n) AS ( (WITH x1 AS (SELECT 1 FROM x) SELECT * FROM x1) UNION SELECT 0) SELECT * FROM x; -- and this WITH RECURSIVE x(n) AS ( SELECT 0 UNION SELECT 1 ORDER BY (SELECT n FROM x)) 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 VALUES(NEW.i); WITH t1 AS ( DELETE FROM bug6051 RETURNING * ) INSERT INTO bug6051 SELECT * FROM t1; SELECT * FROM bug6051; SELECT * FROM bug6051_2; -- check INSERT ... SELECT rule actions are disallowed on commands -- that have modifyingCTEs CREATE OR REPLACE 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; -- silly example to verify that hasModifyingCTE flag is propagated CREATE TEMP TABLE bug6051_3 AS SELECT a FROM generate_series(11,13) AS a; CREATE RULE bug6051_3_ins AS ON INSERT TO bug6051_3 DO INSTEAD SELECT i FROM bug6051_2; BEGIN; SET LOCAL debug_parallel_query = on; WITH t1 AS ( DELETE FROM bug6051_3 RETURNING * ) INSERT INTO bug6051_3 SELECT * FROM t1; COMMIT; SELECT * FROM bug6051_3; -- check case where CTE reference is removed due to optimization EXPLAIN (VERBOSE, COSTS OFF) SELECT q1 FROM ( WITH t_cte AS (SELECT * FROM int8_tbl t) SELECT q1, (SELECT q2 FROM t_cte WHERE t_cte.q1 = i8.q1) AS t_sub FROM int8_tbl i8 ) ss; SELECT q1 FROM ( WITH t_cte AS (SELECT * FROM int8_tbl t) SELECT q1, (SELECT q2 FROM t_cte WHERE t_cte.q1 = i8.q1) AS t_sub FROM int8_tbl i8 ) ss; EXPLAIN (VERBOSE, COSTS OFF) SELECT q1 FROM ( WITH t_cte AS MATERIALIZED (SELECT * FROM int8_tbl t) SELECT q1, (SELECT q2 FROM t_cte WHERE t_cte.q1 = i8.q1) AS t_sub FROM int8_tbl i8 ) ss; SELECT q1 FROM ( WITH t_cte AS MATERIALIZED (SELECT * FROM int8_tbl t) SELECT q1, (SELECT q2 FROM t_cte WHERE t_cte.q1 = i8.q1) AS t_sub FROM int8_tbl i8 ) ss; -- 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; -- WITH referenced by MERGE statement CREATE TABLE m AS SELECT i AS k, (i || ' v')::text v FROM generate_series(1, 16, 3) i; ALTER TABLE m ADD UNIQUE (k); WITH RECURSIVE cte_basic AS (SELECT 1 a, 'cte_basic val' b) MERGE INTO m USING (select 0 k, 'merge source SubPlan' v) o ON m.k=o.k WHEN MATCHED THEN UPDATE SET v = (SELECT b || ' merge update' FROM cte_basic WHERE cte_basic.a = m.k LIMIT 1) WHEN NOT MATCHED THEN INSERT VALUES(o.k, o.v); -- Basic: WITH cte_basic AS MATERIALIZED (SELECT 1 a, 'cte_basic val' b) MERGE INTO m USING (select 0 k, 'merge source SubPlan' v offset 0) o ON m.k=o.k WHEN MATCHED THEN UPDATE SET v = (SELECT b || ' merge update' FROM cte_basic WHERE cte_basic.a = m.k LIMIT 1) WHEN NOT MATCHED THEN INSERT VALUES(o.k, o.v); -- Examine SELECT * FROM m where k = 0; -- See EXPLAIN output for same query: EXPLAIN (VERBOSE, COSTS OFF) WITH cte_basic AS MATERIALIZED (SELECT 1 a, 'cte_basic val' b) MERGE INTO m USING (select 0 k, 'merge source SubPlan' v offset 0) o ON m.k=o.k WHEN MATCHED THEN UPDATE SET v = (SELECT b || ' merge update' FROM cte_basic WHERE cte_basic.a = m.k LIMIT 1) WHEN NOT MATCHED THEN INSERT VALUES(o.k, o.v); -- InitPlan WITH cte_init AS MATERIALIZED (SELECT 1 a, 'cte_init val' b) MERGE INTO m USING (select 1 k, 'merge source InitPlan' v offset 0) o ON m.k=o.k WHEN MATCHED THEN UPDATE SET v = (SELECT b || ' merge update' FROM cte_init WHERE a = 1 LIMIT 1) WHEN NOT MATCHED THEN INSERT VALUES(o.k, o.v); -- Examine SELECT * FROM m where k = 1; -- See EXPLAIN output for same query: EXPLAIN (VERBOSE, COSTS OFF) WITH cte_init AS MATERIALIZED (SELECT 1 a, 'cte_init val' b) MERGE INTO m USING (select 1 k, 'merge source InitPlan' v offset 0) o ON m.k=o.k WHEN MATCHED THEN UPDATE SET v = (SELECT b || ' merge update' FROM cte_init WHERE a = 1 LIMIT 1) WHEN NOT MATCHED THEN INSERT VALUES(o.k, o.v); -- MERGE source comes from CTE: WITH merge_source_cte AS MATERIALIZED (SELECT 15 a, 'merge_source_cte val' b) MERGE INTO m USING (select * from merge_source_cte) o ON m.k=o.a WHEN MATCHED THEN UPDATE SET v = (SELECT b || merge_source_cte.*::text || ' merge update' FROM merge_source_cte WHERE a = 15) WHEN NOT MATCHED THEN INSERT VALUES(o.a, o.b || (SELECT merge_source_cte.*::text || ' merge insert' FROM merge_source_cte)); -- Examine SELECT * FROM m where k = 15; -- See EXPLAIN output for same query: EXPLAIN (VERBOSE, COSTS OFF) WITH merge_source_cte AS MATERIALIZED (SELECT 15 a, 'merge_source_cte val' b) MERGE INTO m USING (select * from merge_source_cte) o ON m.k=o.a WHEN MATCHED THEN UPDATE SET v = (SELECT b || merge_source_cte.*::text || ' merge update' FROM merge_source_cte WHERE a = 15) WHEN NOT MATCHED THEN INSERT VALUES(o.a, o.b || (SELECT merge_source_cte.*::text || ' merge insert' FROM merge_source_cte)); DROP TABLE m; -- 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_star 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; -- RETURNING tries to return its own output WITH RECURSIVE t(action, a) AS ( MERGE INTO y USING (VALUES (11)) v(a) ON y.a = v.a WHEN NOT MATCHED THEN INSERT VALUES (v.a) RETURNING merge_action(), (SELECT a FROM t) ) 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); CREATE OR REPLACE RULE y_rule AS ON INSERT TO y DO INSTEAD NOTHING; WITH t AS ( INSERT INTO y VALUES(0) ) VALUES(FALSE); CREATE OR REPLACE RULE y_rule AS ON INSERT TO y DO INSTEAD NOTIFY foo; WITH t AS ( INSERT INTO y VALUES(0) ) VALUES(FALSE); CREATE OR REPLACE RULE y_rule AS ON INSERT TO y DO ALSO NOTIFY foo; WITH t AS ( INSERT INTO y VALUES(0) ) VALUES(FALSE); CREATE OR REPLACE RULE y_rule AS ON INSERT TO y DO INSTEAD (NOTIFY foo; NOTIFY bar); 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 with_test AS (SELECT 42) INSERT INTO with_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 with_test (i int); with with_test as (select 42) insert into with_test select * from with_test; select * from with_test; drop table with_test; libpg_query-17-6.1.0/test/sql/postgres_regress/write_parallel.sql000066400000000000000000000026321477334012600252040ustar00rootroot00000000000000-- -- PARALLEL -- begin; -- 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 eligible -- 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); create unique index on parallel_mat_view(length); refresh materialized view parallel_mat_view; refresh materialized view concurrently parallel_mat_view; 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-17-6.1.0/test/sql/postgres_regress/xid.sql000066400000000000000000000124341477334012600227630ustar00rootroot00000000000000-- 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 select ''::xid; select 'asdf'::xid; select ''::xid8; select 'asdf'::xid8; -- Also try it with non-error-throwing API SELECT pg_input_is_valid('42', 'xid'); SELECT pg_input_is_valid('asdf', 'xid'); SELECT * FROM pg_input_error_info('0xffffffffff', 'xid'); SELECT pg_input_is_valid('42', 'xid8'); SELECT pg_input_is_valid('asdf', 'xid8'); SELECT * FROM pg_input_error_info('0xffffffffffffffffffff', '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'); -- min() and max() for xid8 create table xid8_t1 (x xid8); insert into xid8_t1 values ('0'), ('010'), ('42'), ('0xffffffffffffffff'), ('-1'); select min(x), max(x) from xid8_t1; -- xid8 has btree and hash opclasses 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; -- also try it with non-error-throwing API select pg_input_is_valid('12:13:', 'pg_snapshot'); select pg_input_is_valid('31:12:', 'pg_snapshot'); select * from pg_input_error_info('31:12:', 'pg_snapshot'); select pg_input_is_valid('12:16:14,13', 'pg_snapshot'); select * from pg_input_error_info('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-17-6.1.0/test/sql/postgres_regress/xml.sql000066400000000000000000000770251477334012600230060ustar00rootroot00000000000000CREATE TABLE xmltest ( id int, data xml ); INSERT INTO xmltest VALUES (1, 'one'); INSERT INTO xmltest VALUES (2, 'two'); INSERT INTO xmltest VALUES (3, 'one', 'xml'); SELECT pg_input_is_valid('oneone', 'xml'); SELECT message FROM pg_input_error_info('', 'xml'); SELECT xmlcomment('test'); SELECT xmlcomment('-test'); SELECT xmlcomment('test-'); SELECT xmlcomment('--test'); SELECT xmlcomment('te st'); SELECT xmlconcat(xmlcomment('hello'), xmlelement(NAME qux, 'foo'), xmlcomment('world')); SELECT xmlconcat('hello', 'you'); SELECT xmlconcat(1, 2); SELECT xmlconcat('bad', '', 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); -- indent SELECT xmlserialize(DOCUMENT '42' AS text INDENT); SELECT xmlserialize(CONTENT '42' AS text INDENT); -- no indent SELECT xmlserialize(DOCUMENT '42' AS text NO INDENT); SELECT xmlserialize(CONTENT '42' AS text NO INDENT); -- indent non singly-rooted xml SELECT xmlserialize(DOCUMENT '7342' AS text INDENT); SELECT xmlserialize(CONTENT '7342' AS text INDENT); -- indent non singly-rooted xml with mixed contents SELECT xmlserialize(DOCUMENT 'text node73text node42' AS text INDENT); SELECT xmlserialize(CONTENT 'text node73text node42' AS text INDENT); -- indent singly-rooted xml with mixed contents SELECT xmlserialize(DOCUMENT '42text node73' AS text INDENT); SELECT xmlserialize(CONTENT '42text node73' AS text INDENT); -- indent empty string SELECT xmlserialize(DOCUMENT '' AS text INDENT); SELECT xmlserialize(CONTENT '' AS text INDENT); -- whitespaces SELECT xmlserialize(DOCUMENT ' ' AS text INDENT); SELECT xmlserialize(CONTENT ' ' AS text INDENT); -- indent null SELECT xmlserialize(DOCUMENT NULL AS text INDENT); SELECT xmlserialize(CONTENT NULL AS text INDENT); -- indent with XML declaration SELECT xmlserialize(DOCUMENT '73' AS text INDENT); SELECT xmlserialize(CONTENT '73' AS text INDENT); -- indent containing DOCTYPE declaration SELECT xmlserialize(DOCUMENT '' AS text INDENT); SELECT xmlserialize(CONTENT '' AS text INDENT); -- indent xml with empty element SELECT xmlserialize(DOCUMENT '' AS text INDENT); SELECT xmlserialize(CONTENT '' AS text INDENT); -- 'no indent' = not using 'no indent' SELECT xmlserialize(DOCUMENT '42' AS text) = xmlserialize(DOCUMENT '42' AS text NO INDENT); SELECT xmlserialize(CONTENT '42' AS text) = xmlserialize(CONTENT '42' AS text NO INDENT); -- indent xml strings containing blank nodes SELECT xmlserialize(DOCUMENT ' ' AS text INDENT); SELECT xmlserialize(CONTENT 'text node ' AS text INDENT); 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); CREATE VIEW xmlview10 AS SELECT xmlserialize(document '42' AS text indent); CREATE VIEW xmlview11 AS SELECT xmlserialize(document '42' AS character varying no indent); 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; -- errors SELECT * FROM XMLTABLE (ROW () PASSING null COLUMNS v1 timestamp) AS f (v1, v2); -- 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; \sv 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 f.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS "COUNTRY_NAME" text, "REGION_ID" int) AS f WHERE "COUNTRY_NAME" = 'Japan'; EXPLAIN (VERBOSE, FORMAT JSON, COSTS OFF) SELECT f.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS "COUNTRY_NAME" text, "REGION_ID" int) AS f 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 '/e/n2', y xml PATH '/'); \x SELECT * FROM XMLTABLE('.' PASSING XMLELEMENT(NAME a) columns a varchar(20) PATH '""', b xml PATH '""'); SELECT xmltext(NULL); SELECT xmltext(''); SELECT xmltext(' '); SELECT xmltext('foo `$_-+?=*^%!|/\()[]{}'); SELECT xmltext('foo & <"bar">'); SELECT xmltext('x'|| '

73

'::xml || .42 || true || 'j'::char); libpg_query-17-6.1.0/test/sql/postgres_regress/xmlmap.sql000066400000000000000000000056551477334012600235040ustar00rootroot00000000000000CREATE 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, stz timetz, r timestamp, rtz timestamptz, 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', '21:11 +05', '2009-06-08 21:07:30', '2009-06-08 21:07:30 -07', '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-17-6.1.0/test/valgrind.supp000066400000000000000000000012001477334012600177630ustar00rootroot00000000000000{ google_protobuf_cpp_unclean_shutdown Memcheck:Leak match-leak-kinds: reachable,possible ... fun:*google*protobuf* } { google_protobuf_cpp_unclean_shutdown_abseil Memcheck:Leak match-leak-kinds: possible ... fun:*absl* } { abseil_deadlock_check_uninit_cond Memcheck:Cond ... fun:*UnwindImpl* ... fun:*absl*GetStackTrace* ... fun:*absl*DeadlockCheck* ... fun:*absl*Mutex*Lock* ... } { abseil_deadlock_check_value8 Memcheck:Value8 ... fun:*UnwindImpl* ... fun:*absl*GetStackTrace* ... fun:*absl*DeadlockCheck* ... fun:*absl*Mutex*Lock* ... } libpg_query-17-6.1.0/testdata/000077500000000000000000000000001477334012600161055ustar00rootroot00000000000000libpg_query-17-6.1.0/testdata/fingerprint.json000066400000000000000000043055261477334012600213460ustar00rootroot00000000000000[ { "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 $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", "funcformat", "COERCE_EXPLICIT_CALL", "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", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "now", "NullTest", "arg", "ColumnRef", "fields", "String", "str", "something", "nulltesttype", "IS_NOT_NULL", "boolop", "AND_EXPR"], "expectedHash": "26b6553101185d22" }, { "input": "INSERT INTO test (a, b) VALUES ($1, $2)", "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 ($1, $2)", "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[$1, $2, $3, $4], $5::timestamptz), (ARRAY[$6, $7, $8, $9], $10::timestamptz), ($11, $12::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 = $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 = 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 ($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 ($1, $2, $3)", "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 ( $1::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 ( $1::uuid, $2::uuid, $3::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", "isall", "true" ], "expectedHash": "2debfb8745df64a7" }, { "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 = $1 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", "funcformat", "COERCE_EXPLICIT_CALL", "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": "c6ef6b9f498feda4" }, { "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 ($1, $2, $3)", "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 = $1", "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 = $1", "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 = $1", "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", "256", "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": "d2bec62d2a7ec7cb" }, { "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", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "now"], "expectedHash": "a222eaabaa1e7cb1" }, { "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", "objtype", "OBJECT_TABLE", "query", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget"], "expectedHash": "695ebe73a3abc45c" }, { "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" }, { "input": "CREATE OR REPLACE FUNCTION pg_temp.testfunc(OUT response \"mytable\", OUT sequelize_caught_exception text) RETURNS RECORD AS $func_12345$ BEGIN INSERT INTO \"mytable\" (\"mycolumn\") VALUES ('myvalue') RETURNING * INTO response; EXCEPTION WHEN unique_violation THEN GET STACKED DIAGNOSTICS sequelize_caught_exception = PG_EXCEPTION_DETAIL; END $func_12345$ LANGUAGE plpgsql; SELECT (testfunc.response).\"mycolumn\", testfunc.sequelize_caught_exception FROM pg_temp.testfunc(); DROP FUNCTION IF EXISTS pg_temp.testfunc();", "expectedParts": ["RawStmt", "stmt", "CreateFunctionStmt", "funcname", "String", "str", "pg_temp", "String", "str", "testfunc", "parameters", "FunctionParameter", "argType", "names", "String", "str", "mytable", "typemod", "-1", "mode", "FUNC_PARAM_OUT", "FunctionParameter", "argType", "names", "String", "str", "text", "typemod", "-1", "mode", "FUNC_PARAM_OUT", "replace", "true", "returnType", "names", "String", "str", "record", "typemod", "-1", "RawStmt", "stmt", "SelectStmt", "fromClause", "RangeFunction", "functions", "FuncCall", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "pg_temp", "String", "str", "testfunc", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "A_Indirection", "arg", "ColumnRef", "fields", "String", "str", "testfunc", "String", "str", "response", "indirection", "String", "str", "mycolumn", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "testfunc", "String", "str", "sequelize_caught_exception", "RawStmt", "stmt", "DropStmt", "behavior", "DROP_RESTRICT", "missing_ok", "true", "objects", "ObjectWithArgs", "objname", "String", "str", "pg_temp", "String", "str", "testfunc", "removeType", "OBJECT_FUNCTION"], "expectedHash": "18e71bc17baea13b" }, { "input": "CREATE PROCEDURE insert_data(a integer, b integer) LANGUAGE SQL AS $$ INSERT INTO tbl VALUES (a); INSERT INTO tbl VALUES (b); $$;", "expectedParts": ["RawStmt", "stmt", "CreateFunctionStmt", "funcname", "String", "str", "insert_data", "is_procedure", "true", "parameters", "FunctionParameter", "argType", "names", "String", "str", "pg_catalog", "String", "str", "int4", "typemod", "-1", "mode", "FUNC_PARAM_DEFAULT", "FunctionParameter", "argType", "names", "String", "str", "pg_catalog", "String", "str", "int4", "typemod", "-1", "mode", "FUNC_PARAM_DEFAULT"], "expectedHash": "a0ac17049fee8e96" }, { "input": "DO $$DECLARE r record; BEGIN FOR r IN SELECT table_schema, table_name FROM information_schema.tables WHERE table_type = 'VIEW' AND table_schema = 'public' LOOP EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; END LOOP; END$$;", "expectedParts": ["RawStmt", "stmt", "DoStmt"], "expectedHash": "f936eab75b8c1b90" }, { "input": "LISTEN virtual", "expectedParts": ["RawStmt", "stmt", "ListenStmt"], "expectedHash": "6e5bf26e5fc272a5" }, { "input": "UNLISTEN virtual", "expectedParts": ["RawStmt", "stmt", "UnlistenStmt"], "expectedHash": "9348a760200458ff" }, { "input": "UNLISTEN *", "expectedParts": ["RawStmt", "stmt", "UnlistenStmt"], "expectedHash": "9348a760200458ff" }, { "input": "NOTIFY virtual", "expectedParts": ["RawStmt", "stmt", "NotifyStmt"], "expectedHash": "92f42ef7b6fa8f62" }, { "input": "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)", "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "inh", "true", "relname", "tbl", "relpersistence", "p", "targetList", "ResTarget", "name", "doc", "val", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "A_ArrayExpr", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "A_ArrayExpr", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "A_ArrayExpr", "FuncCall", "args", "A_ArrayExpr", "FuncCall", "args", "A_ArrayExpr", "FuncCall", "args", "FuncCall", "args", "A_ArrayExpr", "FuncCall", "args", "A_ArrayExpr", "FuncCall", "args", "A_ArrayExpr", "FuncCall", "args", "A_ArrayExpr", "FuncCall", "args", "A_ArrayExpr", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "A_ArrayExpr", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "FuncCall", "args", "A_ArrayExpr", "ColumnRef", "fields", "String", "str", "doc", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set", "A_ArrayExpr", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "jsonb_set"], "expectedHash": "b7dbf54ce62af0ca" }, { "input": "SELECT DISTINCT id FROM mytable", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "distinctClause", "fromClause", "RangeVar", "inh", "true", "relname", "mytable", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "id"], "expectedHash": "3a7e897d3710fa93" }, { "input": "SELECT DISTINCT ON (id) id FROM mytable", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "distinctClause", "ColumnRef", "fields", "String", "str", "id", "fromClause", "RangeVar", "inh", "true", "relname", "mytable", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "id"], "expectedHash": "44bc30469a1802ea" }, { "input": "SELECT id FROM mytable", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "mytable", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "id"], "expectedHash": "40991573eb85c5f6" }, { "disableOnMsvc": true, // Doesn't work because of C2026: string too big "input": "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)", "expectedParts": ["RawStmt", "stmt", "InsertStmt", "override", "OVERRIDING_NOT_SET", "relation", "inh", "true", "relname", "tbl", "relpersistence", "p", "selectStmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "valuesLists", "FuncCall", "funcformat", "COERCE_EXPLICIT_CALL", "funcname", "String", "str", "nextval"], "expectedHash": "4a6db94fbada8341" }, { "input": "MERGE into measurement m USING new_measurement nm ON (m.city_id = nm.city_id and m.logdate=nm.logdate) WHEN MATCHED AND nm.peaktemp IS NULL THEN DELETE WHEN MATCHED THEN UPDATE SET peaktemp = greatest(m.peaktemp, nm.peaktemp), unitsales = m.unitsales + coalesce(nm.unitsales, 0) WHEN NOT MATCHED THEN INSERT (city_id, logdate, peaktemp, unitsales) VALUES (city_id, logdate, peaktemp, unitsales)", "expectedParts": ["RawStmt", "stmt", "MergeStmt", "joinCondition", "BoolExpr", "args", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "m", "String", "str", "logdate", "name", "String", "str", "=", "rexpr", "ColumnRef", "fields", "String", "str", "nm", "String", "str", "logdate", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "m", "String", "str", "city_id", "name", "String", "str", "=", "rexpr", "ColumnRef", "fields", "String", "str", "nm", "String", "str", "city_id", "boolop", "AND_EXPR", "mergeWhenClauses", "MergeWhenClause", "commandType", "CMD_DELETE", "condition", "NullTest", "arg", "ColumnRef", "fields", "String", "str", "nm", "String", "str", "peaktemp", "nulltesttype", "IS_NULL", "matchKind", "MERGE_WHEN_MATCHED", "override", "OVERRIDING_NOT_SET", "MergeWhenClause", "commandType", "CMD_UPDATE", "matchKind", "MERGE_WHEN_MATCHED", "override", "OVERRIDING_NOT_SET", "targetList", "ResTarget", "name", "unitsales", "val", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "m", "String", "str", "unitsales", "name", "String", "str", "+", "rexpr", "CoalesceExpr", "args", "ColumnRef", "fields", "String", "str", "nm", "String", "str", "unitsales", "ResTarget", "name", "peaktemp", "val", "MinMaxExpr", "args", "ColumnRef", "fields", "String", "str", "m", "String", "str", "peaktemp", "ColumnRef", "fields", "String", "str", "nm", "String", "str", "peaktemp", "op", "IS_GREATEST", "MergeWhenClause", "commandType", "CMD_INSERT", "matchKind", "MERGE_WHEN_NOT_MATCHED_BY_TARGET", "override", "OVERRIDING_NOT_SET", "targetList", "ResTarget", "name", "unitsales", "ResTarget", "name", "logdate", "ResTarget", "name", "city_id", "ResTarget", "name", "peaktemp", "values", "ColumnRef", "fields", "String", "str", "city_id", "ColumnRef", "fields", "String", "str", "logdate", "ColumnRef", "fields", "String", "str", "peaktemp", "ColumnRef", "fields", "String", "str", "unitsales", "relation", "inh", "true", "relname", "measurement", "relpersistence", "p", "sourceRelation", "RangeVar", "inh", "true", "relname", "new_measurement", "relpersistence", "p" ], "expectedHash": "fe086f143f4c7ed9" }, { "input": "ALTER TABLE ALL IN TABLESPACE foo OWNED BY bar, quux SET TABLESPACE fred NOWAIT", "expectedParts": ["RawStmt", "stmt", "AlterTableMoveAllStmt", "new_tablespacename", "fred", "nowait", "true", "objtype", "OBJECT_TABLE", "orig_tablespacename", "foo", "roles", "RoleSpec", "rolename", "bar", "roletype", "ROLESPEC_CSTRING", "RoleSpec", "rolename", "quux", "roletype", "ROLESPEC_CSTRING"], "expectedHash": "1bcfca993d29bc0f" }, { "input": "CREATE PUBLICATION foo FOR TABLES IN SCHEMA bar", "expectedParts": ["RawStmt", "stmt", "CreatePublicationStmt", "pubname", "foo", "pubobjects", "PublicationObjSpec", "name", "bar", "pubobjtype", "PUBLICATIONOBJ_TABLES_IN_SCHEMA"], "expectedHash": "7dfa0872d08125e6" }, { "input": "COPY vistest FROM stdin FREEZE CSV", "expectedParts": ["RawStmt", "stmt", "CopyStmt", "is_from", "true", "options", "DefElem", "arg", "Boolean", "boolval", "true", "defaction", "DEFELEM_UNSPEC", "defname", "freeze", "DefElem", "arg", "String", "str", "csv", "defaction", "DEFELEM_UNSPEC", "defname", "format", "relation", "inh", "true", "relname", "vistest", "relpersistence", "p"], "expectedHash": "25de297c6377cb74" }, { "input": "MERGE INTO customer_account ca USING (VALUES (1, 42), (2, 99)) t(customer_id, transaction_value) ON t.customer_id = ca.customer_id WHEN MATCHED THEN UPDATE SET balance = balance + transaction_value + 1 WHEN NOT MATCHED THEN INSERT (customer_id, balance) VALUES (t.customer_id, t.transaction_value)", "expectedParts": ["RawStmt", "stmt", "MergeStmt", "joinCondition", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "t", "String", "str", "customer_id", "name", "String", "str", "=", "rexpr", "ColumnRef", "fields", "String", "str", "ca", "String", "str", "customer_id", "mergeWhenClauses", "MergeWhenClause", "commandType", "CMD_UPDATE", "matchKind", "MERGE_WHEN_MATCHED", "override", "OVERRIDING_NOT_SET", "targetList", "ResTarget", "name", "balance", "val", "A_Expr", "kind", "AEXPR_OP", "lexpr", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "balance", "name", "String", "str", "+", "rexpr", "ColumnRef", "fields", "String", "str", "transaction_value", "name", "String", "str", "+", "MergeWhenClause", "commandType", "CMD_INSERT", "matchKind", "MERGE_WHEN_NOT_MATCHED_BY_TARGET", "override", "OVERRIDING_NOT_SET", "targetList", "ResTarget", "name", "customer_id", "ResTarget", "name", "balance", "values", "ColumnRef", "fields", "String", "str", "t", "String", "str", "customer_id", "ColumnRef", "fields", "String", "str", "t", "String", "str", "transaction_value", "relation", "inh", "true", "relname", "customer_account", "relpersistence", "p", "sourceRelation", "RangeSubselect", "subquery", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE" ], "expectedHash": "ff7d4d704926aae4" } ] libpg_query-17-6.1.0/tmp/000077500000000000000000000000001477334012600150745ustar00rootroot00000000000000libpg_query-17-6.1.0/tmp/.gitkeep000066400000000000000000000000001477334012600165130ustar00rootroot00000000000000libpg_query-17-6.1.0/vendor/000077500000000000000000000000001477334012600155715ustar00rootroot00000000000000libpg_query-17-6.1.0/vendor/protobuf-c/000077500000000000000000000000001477334012600176515ustar00rootroot00000000000000libpg_query-17-6.1.0/vendor/protobuf-c/protobuf-c.c000066400000000000000000002747361477334012600221200ustar00rootroot00000000000000/* * 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-17-6.1.0/vendor/protobuf-c/protobuf-c.h000066400000000000000000001016121477334012600221030ustar00rootroot00000000000000/* * 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-17-6.1.0/vendor/xxhash/000077500000000000000000000000001477334012600170745ustar00rootroot00000000000000libpg_query-17-6.1.0/vendor/xxhash/xxhash.c000066400000000000000000000034761477334012600205550ustar00rootroot00000000000000/* * 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-17-6.1.0/vendor/xxhash/xxhash.h000066400000000000000000006167101477334012600205630ustar00rootroot00000000000000/* * 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